]> granicus.if.org Git - imagemagick/blobdiff - magick/morphology.h
(no commit message)
[imagemagick] / magick / morphology.h
index 959821b3cfd6e23d7666104bab882ccd04980675..f32df95fe336b14b3f546f85b0248123f3659ba9 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization
+  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
   dedicated to making software imaging solutions freely available.
   
   You may not use this file except in compliance with the License.
 extern "C" {
 #endif
 
+#include <magick/geometry.h>
+
+typedef enum
+{
+  UndefinedKernel,    /* equivelent to UnityKernel */
+  UnityKernel,        /* The no-op or 'original image' kernel */
+  GaussianKernel,     /* Convolution Kernels, Gaussian Based */
+  DoGKernel,
+  LoGKernel,
+  BlurKernel,
+  CometKernel,
+  LaplacianKernel,    /* Convolution Kernels, by Name */
+  SobelKernel,
+  FreiChenKernel,
+  RobertsKernel,
+  PrewittKernel,
+  CompassKernel,
+  KirschKernel,
+  DiamondKernel,      /* Shape Kernels */
+  SquareKernel,
+  RectangleKernel,
+  DiskKernel,
+  PlusKernel,
+  CrossKernel,
+  RingKernel,
+  PeaksKernel,         /* Hit And Miss Kernels */
+  EdgesKernel,
+  CornersKernel,
+  ThinDiagonalsKernel,
+  LineEndsKernel,
+  LineJunctionsKernel,
+  RidgesKernel,
+  ConvexHullKernel,
+  SkeletonKernel,
+  ChebyshevKernel,    /* Distance Measuring Kernels */
+  ManhattanKernel,
+  EuclideanKernel,
+  UserDefinedKernel   /* User Specified Kernel Array */
+} KernelInfoType;
+
+typedef enum
+{
+  UndefinedMorphology,
+/* 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 */
+  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 */
+  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 KernelInfo
+{
+  KernelInfoType
+    type;
+
+  size_t
+    width,
+    height;
+
+  ssize_t
+    x,
+    y;
+
+  double
+    *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)
 }
 #endif