| /* |
| Copyright 1999-2011 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. |
| obtain a copy of the License at |
| |
| http://www.imagemagick.org/script/license.php |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| MagickCore morphology methods. |
| */ |
| #ifndef _MAGICKCORE_MORPHOLOGY_H |
| #define _MAGICKCORE_MORPHOLOGY_H |
| |
| #if defined(__cplusplus) || defined(c_plusplus) |
| 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 |
| |
| #endif |