]> granicus.if.org Git - imagemagick/blobdiff - magick/morphology.h
(no commit message)
[imagemagick] / magick / morphology.h
index f93de92ea242e28a2d5be600ec99725123051c2f..f32df95fe336b14b3f546f85b0248123f3659ba9 100644 (file)
 extern "C" {
 #endif
 
+#include <magick/geometry.h>
+
 typedef enum
 {
-  UndefinedKernel,    /* also the 'no-op' kernel */
-  GaussianKernel,     /* Convolution Kernels */
+  UndefinedKernel,    /* equivelent to UnityKernel */
+  UnityKernel,        /* The no-op or 'original image' kernel */
+  GaussianKernel,     /* Convolution Kernels, Gaussian Based */
+  DoGKernel,
+  LoGKernel,
   BlurKernel,
   CometKernel,
-  LaplacianKernel,
-  LOGKernel,
-  DOGKernel,
-  RectangleKernel,    /* Boolean Kernels */
+  LaplacianKernel,    /* Convolution Kernels, by Name */
+  SobelKernel,
+  FreiChenKernel,
+  RobertsKernel,
+  PrewittKernel,
+  CompassKernel,
+  KirschKernel,
+  DiamondKernel,      /* Shape Kernels */
   SquareKernel,
-  DiamondKernel,
+  RectangleKernel,
   DiskKernel,
   PlusKernel,
+  CrossKernel,
+  RingKernel,
+  PeaksKernel,         /* Hit And Miss Kernels */
+  EdgesKernel,
+  CornersKernel,
+  ThinDiagonalsKernel,
+  LineEndsKernel,
+  LineJunctionsKernel,
+  RidgesKernel,
+  ConvexHullKernel,
+  SkeletonKernel,
   ChebyshevKernel,    /* Distance Measuring Kernels */
-  ManhattenKernel,
+  ManhattanKernel,
   EuclideanKernel,
-  UserDefinedKernel   /* user specified kernel values */
-} MagickKernelType;
+  UserDefinedKernel   /* User Specified Kernel Array */
+} KernelInfoType;
 
 typedef enum
 {
   UndefinedMorphology,
-  ConvolveMorphology,          /* Weighted Sum of pixels - Convolve */
-  DialateMorphology,           /* Weighted Value Maximum */
-  ErodeMorphology,             /* Weighted Value Minimum */
-  CloseMorphology,             /* Erode then Dialate */
-  OpenMorphology,              /* Dialate then Erode */
-  DialateIntensityMorphology,  /* Pixel Pick using GreyScale Dialate */
+/* Convolve / Correlate weighted sums */
+  ConvolveMorphology,          /* Weighted Sum with reflected kernel */
+  CorrelateMorphology,         /* Weighted Sum using a sliding window */
+/* Low-level Morphology methods */
+  ErodeMorphology,             /* Minimum Value in Neighbourhood */
+  DilateMorphology,            /* Maximum Value in Neighbourhood */
   ErodeIntensityMorphology,    /* Pixel Pick using GreyScale Erode */
-  CloseIntensityMorphology,    /* Pixel Pick using GreyScale Close */
+  DilateIntensityMorphology,   /* Pixel Pick using GreyScale Dialate */
+  DistanceMorphology,          /* Add Kernel Value, take Minimum */
+/* Second-level Morphology methods */
+  OpenMorphology,              /* Dilate then Erode */
+  CloseMorphology,             /* Erode then Dilate */
   OpenIntensityMorphology,     /* Pixel Pick using GreyScale Open */
-  DistanceMorphology           /* Add to Value, take Minimum */
+  CloseIntensityMorphology,    /* Pixel Pick using GreyScale Close */
+  SmoothMorphology,            /* Open then Close */
+/* Difference Morphology methods */
+  EdgeInMorphology,            /* Dilate difference from Original */
+  EdgeOutMorphology,           /* Erode difference from Original */
+  EdgeMorphology,              /* Dilate difference with Erode */
+  TopHatMorphology,            /* Close difference from Original */
+  BottomHatMorphology,         /* Open difference from Original */
+/* Recursive Morphology methods */
+  HitAndMissMorphology,        /* Foreground/Background pattern matching */
+  ThinningMorphology,          /* Remove matching pixels from image */
+  ThickenMorphology            /* Add matching pixels from image */
 } MorphologyMethod;
 
-typedef struct
+typedef struct KernelInfo
 {
-  MagickKernelType
+  KernelInfoType
     type;
 
-  unsigned long
+  size_t
     width,
-    height,
-    offset_x,
-    offset_y;
+    height;
 
-  double *
-    values;
+  ssize_t
+    x,
+    y;
 
   double
-    value_min,
-    value_max,
-    range_neg,
-    range_pos;
-
-  MagickBooleanType
-    normalized;
-
-} MagickKernel;
-
-extern MagickKernel
-  *AcquireKernelFromString(const char *),
-  *AcquireKernelBuiltIn(const MagickKernelType, const GeometryInfo *),
-  *DestroyKernel(MagickKernel *);
-
-extern void
-  KernelNormalize(MagickKernel *),
-  KernelPrint(MagickKernel *),
-  KernelRotate(MagickKernel *, double);
-
-extern Image
-  *MorphologyImage(const Image *, MorphologyMethod, const long,
-             const ChannelType, MagickKernel *, ExceptionInfo *);
-
+    *values,
+    minimum,
+    maximum,
+    negative_range,
+    positive_range,
+    angle;
+
+  struct KernelInfo
+    *next;
+
+  size_t
+    signature;
+} KernelInfo;
+
+
+extern MagickExport KernelInfo
+  *AcquireKernelInfo(const char *),
+  *AcquireKernelBuiltIn(const KernelInfoType,const GeometryInfo *),
+  *CloneKernelInfo(const KernelInfo *),
+  *DestroyKernelInfo(KernelInfo *);
+
+extern MagickExport Image
+  *MorphologyImage(const Image *,const MorphologyMethod,const ssize_t,
+    const KernelInfo *,ExceptionInfo *),
+  *MorphologyImageChannel(const Image *,const ChannelType,
+    const MorphologyMethod,const ssize_t,const KernelInfo *,ExceptionInfo *);
+
+extern MagickExport void
+  ScaleGeometryKernelInfo(KernelInfo *,const char *),
+  ShowKernelInfo(KernelInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }