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 "magick/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 LaplacianKernel,
00037 SobelKernel,
00038 FreiChenKernel,
00039 RobertsKernel,
00040 PrewittKernel,
00041 CompassKernel,
00042 KirschKernel,
00043 DiamondKernel,
00044 SquareKernel,
00045 RectangleKernel,
00046 OctagonKernel,
00047 DiskKernel,
00048 PlusKernel,
00049 CrossKernel,
00050 RingKernel,
00051 PeaksKernel,
00052 EdgesKernel,
00053 CornersKernel,
00054 DiagonalsKernel,
00055 LineEndsKernel,
00056 LineJunctionsKernel,
00057 RidgesKernel,
00058 ConvexHullKernel,
00059 ThinSEKernel,
00060 SkeletonKernel,
00061 ChebyshevKernel,
00062 ManhattanKernel,
00063 OctagonalKernel,
00064 EuclideanKernel,
00065 UserDefinedKernel,
00066 BinomialKernel
00067 } KernelInfoType;
00068
00069 typedef enum
00070 {
00071 UndefinedMorphology,
00072
00073 ConvolveMorphology,
00074 CorrelateMorphology,
00075
00076 ErodeMorphology,
00077 DilateMorphology,
00078 ErodeIntensityMorphology,
00079 DilateIntensityMorphology,
00080 DistanceMorphology,
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 VoronoiMorphology,
00099 IterativeDistanceMorphology
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 double
00116 *values,
00117 minimum,
00118 maximum,
00119 negative_range,
00120 positive_range,
00121 angle;
00122
00123 struct KernelInfo
00124 *next;
00125
00126 size_t
00127 signature;
00128 } KernelInfo;
00129
00130 extern MagickExport KernelInfo
00131 *AcquireKernelInfo(const char *),
00132 *AcquireKernelBuiltIn(const KernelInfoType,const GeometryInfo *),
00133 *CloneKernelInfo(const KernelInfo *),
00134 *DestroyKernelInfo(KernelInfo *);
00135
00136 extern MagickExport Image
00137 *MorphologyImage(const Image *,const MorphologyMethod,const ssize_t,
00138 const KernelInfo *,ExceptionInfo *),
00139 *MorphologyImageChannel(const Image *,const ChannelType,
00140 const MorphologyMethod,const ssize_t,const KernelInfo *,ExceptionInfo *);
00141
00142 extern MagickExport void
00143 ScaleGeometryKernelInfo(KernelInfo *,const char *),
00144 ScaleKernelInfo(KernelInfo *,const double,const GeometryFlags),
00145 ShowKernelInfo(const KernelInfo *),
00146 UnityAddKernelInfo(KernelInfo *,const double);
00147
00148 #if defined(__cplusplus) || defined(c_plusplus)
00149 }
00150 #endif
00151
00152 #endif