MagickCore 6.9.12
|
#include "magick/studio.h"
#include "magick/cache.h"
#include "magick/color.h"
#include "magick/colormap.h"
#include "magick/colorspace.h"
#include "magick/colorspace-private.h"
#include "magick/exception.h"
#include "magick/exception-private.h"
#include "magick/image.h"
#include "magick/image-private.h"
#include "magick/memory_.h"
#include "magick/memory-private.h"
#include "magick/monitor.h"
#include "magick/monitor-private.h"
#include "magick/quantize.h"
#include "magick/quantum.h"
#include "magick/quantum-private.h"
#include "magick/resource_.h"
#include "magick/segment.h"
#include "magick/string_.h"
#include "magick/thread-private.h"
Go to the source code of this file.
Data Structures | |
struct | _ExtentPacket |
struct | _Cluster |
struct | _IntervalTree |
struct | _ZeroCrossing |
Macros | |
#define | MaxDimension 3 |
#define | DeltaTau 0.5f |
#define | WeightingExponent 2.5 |
#define | SegmentPower(ratio) pow(ratio,(double) (1.0/(weighting_exponent-1.0))); |
#define | Tau 5.2f |
#define | SegmentImageTag "Segment/Image" |
#define | ThrowClassifyException(severity, tag, label) |
Typedefs | |
typedef struct _ExtentPacket | ExtentPacket |
typedef struct _Cluster | Cluster |
typedef struct _IntervalTree | IntervalTree |
typedef struct _ZeroCrossing | ZeroCrossing |
Functions | |
static MagickRealType | OptimalTau (const ssize_t *, const double, const double, const double, const double, short *) |
static ssize_t | DefineRegion (const short *, ExtentPacket *) |
static void | FreeNodes (IntervalTree *) |
static void | InitializeHistogram (const Image *, ssize_t **, ExceptionInfo *) |
static void | ScaleSpace (const ssize_t *, const MagickRealType, MagickRealType *) |
static void | ZeroCrossHistogram (MagickRealType *, const MagickRealType, short *) |
static MagickBooleanType | Classify (Image *image, short **extrema, const MagickRealType cluster_threshold, const MagickRealType weighting_exponent, const MagickBooleanType verbose) |
static void | ConsolidateCrossings (ZeroCrossing *zero_crossing, const size_t number_crossings) |
static void | DerivativeHistogram (const MagickRealType *histogram, MagickRealType *derivative) |
MagickExport MagickBooleanType | GetImageDynamicThreshold (const Image *image, const double cluster_threshold, const double smooth_threshold, MagickPixelPacket *pixel, ExceptionInfo *exception) |
static void | InitializeList (IntervalTree **list, ssize_t *number_nodes, IntervalTree *node) |
static void | MeanStability (IntervalTree *node) |
static void | Stability (IntervalTree *node) |
static IntervalTree * | InitializeIntervalTree (const ZeroCrossing *zero_crossing, const size_t number_crossings) |
static void | ActiveNodes (IntervalTree **list, ssize_t *number_nodes, IntervalTree *node) |
MagickExport MagickBooleanType | SegmentImage (Image *image, const ColorspaceType colorspace, const MagickBooleanType verbose, const double cluster_threshold, const double smooth_threshold) |
Variables | |
static const int | Blue = 2 |
static const int | Green = 1 |
static const int | Red = 0 |
static const int | SafeMargin = 3 |
static const int | TreeLength = 600 |
#define SegmentImageTag "Segment/Image" |
#define SegmentPower | ( | ratio | ) | pow(ratio,(double) (1.0/(weighting_exponent-1.0))); |
#define ThrowClassifyException | ( | severity, | |
tag, | |||
label | |||
) |
typedef struct _ExtentPacket ExtentPacket |
typedef struct _IntervalTree IntervalTree |
typedef struct _ZeroCrossing ZeroCrossing |
|
static |
Definition at line 1487 of file segment.c.
References ActiveNodes(), _IntervalTree::child, _IntervalTree::mean_stability, _IntervalTree::sibling, and _IntervalTree::stability.
Referenced by ActiveNodes(), and OptimalTau().
|
static |
Definition at line 244 of file segment.c.
References AcquireAuthenticCacheView(), AcquireImageColormap(), AcquireQuantumMemory(), AcquireVirtualCacheView(), _MagickPixelPacket::blue, _PixelPacket::blue, _Cluster::blue, Blue, _ExtentPacket::center, _Image::colormap, _Image::colors, _Image::columns, _Cluster::count, DefineRegion(), DestroyCacheView(), _Image::exception, _Image::filename, FormatLocaleFile(), GetCacheViewAuthenticIndexQueue(), GetCacheViewAuthenticPixels(), GetCacheViewVirtualPixels(), _MagickPixelPacket::green, _PixelPacket::green, _Cluster::green, Green, _Cluster::id, ImageError, _ExtentPacket::index, _ExtentPacket::left, magick_restrict, MagickFalse, MagickTrue, MaxDimension, _Cluster::next, _Image::progress_monitor, _MagickPixelPacket::red, _PixelPacket::red, _Cluster::red, Red, RelinquishMagickMemory(), ResourceLimitError, _ExtentPacket::right, _Image::rows, SafeMargin, SegmentImageTag, SegmentPower, SetImageProgress(), SetPixelIndex, SyncCacheViewAuthenticPixels(), SyncImage(), and ThrowClassifyException.
Referenced by SegmentImage().
|
static |
Definition at line 710 of file segment.c.
References _ZeroCrossing::crossings, MagickMax, and MagickMin.
Referenced by OptimalTau().
|
static |
Definition at line 827 of file segment.c.
References _ExtentPacket::center, _ExtentPacket::index, _ExtentPacket::left, MagickFalse, MagickTrue, and _ExtentPacket::right.
Referenced by Classify(), and GetImageDynamicThreshold().
|
static |
Definition at line 883 of file segment.c.
Referenced by OptimalTau().
|
static |
Definition at line 1504 of file segment.c.
References _IntervalTree::child, FreeNodes(), RelinquishMagickMemory(), and _IntervalTree::sibling.
Referenced by FreeNodes(), InitializeIntervalTree(), and OptimalTau().
MagickExport MagickBooleanType GetImageDynamicThreshold | ( | const Image * | image, |
const double | cluster_threshold, | ||
const double | smooth_threshold, | ||
MagickPixelPacket * | pixel, | ||
ExceptionInfo * | exception | ||
) |
Definition at line 940 of file segment.c.
References AcquireQuantumMemory(), _MagickPixelPacket::blue, _PixelPacket::blue, _Cluster::blue, Blue, _ExtentPacket::center, _Image::columns, _Cluster::count, DefineRegion(), DeltaTau, _Image::filename, GetMagickModule, GetMagickPixelPacket(), GetVirtualPixels(), _MagickPixelPacket::green, _PixelPacket::green, _Cluster::green, Green, _Cluster::id, _ExtentPacket::index, InitializeHistogram(), IsEventLogging(), _ExtentPacket::left, LogMagickEvent(), MagickCoreSignature, MagickFalse, MagickTrue, MaxDimension, _Cluster::next, OptimalTau(), _MagickPixelPacket::red, _PixelPacket::red, _Cluster::red, Red, RelinquishMagickMemory(), ResourceLimitError, _ExtentPacket::right, _Image::rows, SafeMargin, SegmentImageTag, SetImageProgress(), _Image::signature, Tau, ThrowMagickException(), and TraceEvent.
Referenced by ThresholdImageChannel().
static void InitializeHistogram | ( | const Image * | image, |
ssize_t ** | histogram, | ||
ExceptionInfo * | exception | ||
) |
Definition at line 1229 of file segment.c.
References Blue, _Image::columns, GetPixelBlue, GetPixelGreen, GetPixelRed, GetVirtualPixels(), Green, Red, and _Image::rows.
Referenced by GetImageDynamicThreshold(), and SegmentImage().
|
static |
Definition at line 1347 of file segment.c.
References AcquireCriticalMemory(), AcquireQuantumMemory(), _IntervalTree::child, FreeNodes(), InitializeList(), _IntervalTree::left, _IntervalTree::mean_stability, MeanStability(), RelinquishMagickMemory(), _IntervalTree::right, _IntervalTree::sibling, _IntervalTree::stability, Stability(), _IntervalTree::tau, _ZeroCrossing::tau, and TreeLength.
Referenced by OptimalTau().
|
static |
Definition at line 1294 of file segment.c.
References _IntervalTree::child, InitializeList(), and _IntervalTree::sibling.
Referenced by InitializeIntervalTree(), and InitializeList().
|
static |
Definition at line 1305 of file segment.c.
References _IntervalTree::child, _IntervalTree::mean_stability, MeanStability(), _IntervalTree::sibling, and _IntervalTree::stability.
Referenced by InitializeIntervalTree(), and MeanStability().
|
static |
Definition at line 1513 of file segment.c.
References AcquireCriticalMemory(), AcquireQuantumMemory(), ActiveNodes(), _IntervalTree::child, ConsolidateCrossings(), _ZeroCrossing::crossings, DerivativeHistogram(), FreeNodes(), _ZeroCrossing::histogram, InitializeIntervalTree(), _IntervalTree::left, MagickFalse, MagickTrue, PerceptibleReciprocal(), RelinquishMagickMemory(), _IntervalTree::right, ScaleSpace(), _IntervalTree::tau, _ZeroCrossing::tau, TreeLength, and ZeroCrossHistogram().
Referenced by GetImageDynamicThreshold(), and SegmentImage().
static void ScaleSpace | ( | const ssize_t * | histogram, |
const MagickRealType | tau, | ||
MagickRealType * | scale_histogram | ||
) |
Definition at line 1723 of file segment.c.
References AcquireQuantumMemory(), MagickAbsoluteValue, MagickEpsilon, MagickPI, RelinquishMagickMemory(), ResourceLimitFatalError, and ThrowFatalException.
Referenced by OptimalTau().
MagickExport MagickBooleanType SegmentImage | ( | Image * | image, |
const ColorspaceType | colorspace, | ||
const MagickBooleanType | verbose, | ||
const double | cluster_threshold, | ||
const double | smooth_threshold | ||
) |
Definition at line 1798 of file segment.c.
References AcquireQuantumMemory(), Blue, Classify(), _Image::colorspace, DeltaTau, _Image::exception, _Image::filename, GetMagickModule, Green, InitializeHistogram(), IsEventLogging(), LogMagickEvent(), MagickCoreSignature, MagickFalse, MaxDimension, OptimalTau(), Red, RelinquishMagickMemory(), ResourceLimitError, _Image::signature, Tau, ThrowBinaryImageException, TraceEvent, TransformImageColorspace(), and WeightingExponent.
Referenced by PreviewImage().
|
static |
Definition at line 1335 of file segment.c.
References _IntervalTree::child, _IntervalTree::sibling, _IntervalTree::stability, Stability(), and _IntervalTree::tau.
Referenced by InitializeIntervalTree(), and Stability().
static void ZeroCrossHistogram | ( | MagickRealType * | second_derivative, |
const MagickRealType | smooth_threshold, | ||
short * | crossings | ||
) |
Definition at line 1897 of file segment.c.
Referenced by OptimalTau().
|
static |
Definition at line 182 of file segment.c.
Referenced by Classify(), GetImageDynamicThreshold(), InitializeHistogram(), and SegmentImage().
|
static |
Definition at line 183 of file segment.c.
Referenced by Classify(), GetImageDynamicThreshold(), InitializeHistogram(), and SegmentImage().
|
static |
Definition at line 184 of file segment.c.
Referenced by Classify(), GetImageDynamicThreshold(), InitializeHistogram(), and SegmentImage().
|
static |
Definition at line 185 of file segment.c.
Referenced by Classify(), and GetImageDynamicThreshold().
|
static |
Definition at line 186 of file segment.c.
Referenced by InitializeIntervalTree(), and OptimalTau().