MagickCore  7.0.3
segment.c File Reference
Include dependency graph for segment.c:

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 double 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 double, double *)
 
static void ZeroCrossHistogram (double *, const double, short *)
 
static MagickBooleanType Classify (Image *image, short **extrema, const double cluster_threshold, const double weighting_exponent, const MagickBooleanType verbose, ExceptionInfo *exception)
 
static void ConsolidateCrossings (ZeroCrossing *zero_crossing, const size_t number_crossings)
 
static void DerivativeHistogram (const double *histogram, double *derivative)
 
MagickExport MagickBooleanType GetImageDynamicThreshold (const Image *image, const double cluster_threshold, const double smooth_threshold, PixelInfo *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 IntervalTreeInitializeIntervalTree (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, ExceptionInfo *exception)
 

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
 

Macro Definition Documentation

#define DeltaTau   0.5f

Definition at line 113 of file segment.c.

Referenced by GetImageDynamicThreshold(), and SegmentImage().

#define MaxDimension   3

Definition at line 112 of file segment.c.

Referenced by Classify(), GetImageDynamicThreshold(), and SegmentImage().

#define SegmentImageTag   "Segment/Image"
#define SegmentPower (   ratio)    pow(ratio,(double) (1.0/(weighting_exponent-1.0)));

Definition at line 119 of file segment.c.

Referenced by Classify().

#define Tau   5.2f

Definition at line 121 of file segment.c.

Referenced by GetImageDynamicThreshold(), and SegmentImage().

#define ThrowClassifyException (   severity,
  tag,
  label 
)
Value:
{\
for (cluster=head; cluster != (Cluster *) NULL; cluster=next_cluster) \
{ \
next_cluster=cluster->next; \
cluster=(Cluster *) RelinquishMagickMemory(cluster); \
} \
if (squares != (double *) NULL) \
{ \
squares-=255; \
free_squares=squares; \
free_squares=(double *) RelinquishMagickMemory(free_squares); \
} \
ThrowBinaryException(severity,tag,label); \
}
#define ThrowBinaryException(severity, tag, context)
MagickExport void * RelinquishMagickMemory(void *memory)
Definition: memory.c:1069

Referenced by Classify().

#define WeightingExponent   2.5

Definition at line 118 of file segment.c.

Referenced by SegmentImage().

Typedef Documentation

typedef struct _Cluster Cluster
typedef struct _ExtentPacket ExtentPacket
typedef struct _IntervalTree IntervalTree
typedef struct _ZeroCrossing ZeroCrossing

Function Documentation

static void ActiveNodes ( IntervalTree **  list,
ssize_t *  number_nodes,
IntervalTree node 
)
static
static void ConsolidateCrossings ( ZeroCrossing zero_crossing,
const size_t  number_crossings 
)
static

Definition at line 717 of file segment.c.

References _ZeroCrossing::crossings, MagickMax, and MagickMin.

Referenced by OptimalTau().

static ssize_t DefineRegion ( const short *  extrema,
ExtentPacket extents 
)
static
static void DerivativeHistogram ( const double *  histogram,
double *  derivative 
)
static

Definition at line 890 of file segment.c.

Referenced by OptimalTau().

static void FreeNodes ( IntervalTree node)
static
static void InitializeHistogram ( const Image image,
ssize_t **  histogram,
ExceptionInfo exception 
)
static void InitializeList ( IntervalTree **  list,
ssize_t *  number_nodes,
IntervalTree node 
)
static

Definition at line 1304 of file segment.c.

References _IntervalTree::child, and _IntervalTree::sibling.

Referenced by InitializeIntervalTree().

static void MeanStability ( IntervalTree node)
static
static double OptimalTau ( const ssize_t *  histogram,
const double  max_tau,
const double  min_tau,
const double  delta_tau,
const double  smooth_threshold,
short *  extrema 
)
static
static void ScaleSpace ( const ssize_t *  histogram,
const double  tau,
double *  scale_histogram 
)
static void Stability ( IntervalTree node)
static
static void ZeroCrossHistogram ( double *  second_derivative,
const double  smooth_threshold,
short *  crossings 
)

Definition at line 1913 of file segment.c.

Referenced by OptimalTau().

Variable Documentation

const int Blue = 2
static

Definition at line 184 of file segment.c.

Referenced by Classify(), GetImageDynamicThreshold(), InitializeHistogram(), and SegmentImage().

const int Green = 1
static

Definition at line 185 of file segment.c.

Referenced by Classify(), GetImageDynamicThreshold(), InitializeHistogram(), and SegmentImage().

const int Red = 0
static

Definition at line 186 of file segment.c.

Referenced by Classify(), GetImageDynamicThreshold(), InitializeHistogram(), and SegmentImage().

const int SafeMargin = 3
static

Definition at line 187 of file segment.c.

Referenced by Classify(), and GetImageDynamicThreshold().

const int TreeLength = 600
static

Definition at line 188 of file segment.c.

Referenced by InitializeIntervalTree(), and OptimalTau().