00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_MORPHOLOGY_H
00019 #define MAGICKCORE_MORPHOLOGY_H
00020
00021 #include "MagickCore/geometry.h"
00022
00023 #if defined(__cplusplus) || defined(c_plusplus)
00024 extern "C" {
00025 #endif
00026
00027 typedef enum
00028 {
00029 UndefinedKernel,
00030 UnityKernel,
00031 GaussianKernel,
00032 DoGKernel,
00033 LoGKernel,
00034 BlurKernel,
00035 CometKernel,
00036 BinomialKernel,
00037 LaplacianKernel,
00038 SobelKernel,
00039 FreiChenKernel,
00040 RobertsKernel,
00041 PrewittKernel,
00042 CompassKernel,
00043 KirschKernel,
00044 DiamondKernel,
00045 SquareKernel,
00046 RectangleKernel,
00047 OctagonKernel,
00048 DiskKernel,
00049 PlusKernel,
00050 CrossKernel,
00051 RingKernel,
00052 PeaksKernel,
00053 EdgesKernel,
00054 CornersKernel,
00055 DiagonalsKernel,
00056 LineEndsKernel,
00057 LineJunctionsKernel,
00058 RidgesKernel,
00059 ConvexHullKernel,
00060 ThinSEKernel,
00061 SkeletonKernel,
00062 ChebyshevKernel,
00063 ManhattanKernel,
00064 OctagonalKernel,
00065 EuclideanKernel,
00066 UserDefinedKernel
00067 } KernelInfoType;
00068
00069 typedef enum
00070 {
00071 UndefinedMorphology,
00072
00073 ConvolveMorphology,
00074 CorrelateMorphology,
00075
00076 ErodeMorphology,
00077 DilateMorphology,
00078 ErodeIntensityMorphology,
00079 DilateIntensityMorphology,
00080 IterativeDistanceMorphology,
00081
00082 OpenMorphology,
00083 CloseMorphology,
00084 OpenIntensityMorphology,
00085 CloseIntensityMorphology,
00086 SmoothMorphology,
00087
00088 EdgeInMorphology,
00089 EdgeOutMorphology,
00090 EdgeMorphology,
00091 TopHatMorphology,
00092 BottomHatMorphology,
00093
00094 HitAndMissMorphology,
00095 ThinningMorphology,
00096 ThickenMorphology,
00097
00098 DistanceMorphology,
00099 VoronoiMorphology
00100 } MorphologyMethod;
00101
00102 typedef struct _KernelInfo
00103 {
00104 KernelInfoType
00105 type;
00106
00107 size_t
00108 width,
00109 height;
00110
00111 ssize_t
00112 x,
00113 y;
00114
00115 MagickRealType
00116 *values;
00117
00118 double
00119 minimum,
00120 maximum,
00121 negative_range,
00122 positive_range,
00123 angle;
00124
00125 struct _KernelInfo
00126 *next;
00127
00128 size_t
00129 signature;
00130 } KernelInfo;
00131
00132 extern MagickExport KernelInfo
00133 *AcquireKernelInfo(const char *,ExceptionInfo *),
00134 *AcquireKernelBuiltIn(const KernelInfoType,const GeometryInfo *,
00135 ExceptionInfo *),
00136 *CloneKernelInfo(const KernelInfo *),
00137 *DestroyKernelInfo(KernelInfo *);
00138
00139 extern MagickExport Image
00140 *MorphologyImage(const Image *,const MorphologyMethod,const ssize_t,
00141 const KernelInfo *,ExceptionInfo *);
00142
00143 extern MagickExport void
00144 ScaleGeometryKernelInfo(KernelInfo *,const char *),
00145 ScaleKernelInfo(KernelInfo *,const double,const GeometryFlags),
00146 UnityAddKernelInfo(KernelInfo *,const double);
00147
00148 #if defined(__cplusplus) || defined(c_plusplus)
00149 }
00150 #endif
00151
00152 #endif