segment.c File Reference

#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"
Include dependency graph for segment.c:

Data Structures

struct  _ExtentPacket
struct  _Cluster
struct  _IntervalTree
struct  _ZeroCrossing

Defines

#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 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)

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 Documentation

#define DeltaTau   0.5f
#define MaxDimension   3
#define SegmentImageTag   "Segment/Image"
#define SegmentPower ( ratio   )     pow(ratio,(double) (1.0/(weighting_exponent-1.0)));

Referenced by Classify().

#define Tau   5.2f
#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); \
}

Referenced by Classify().

#define WeightingExponent   2.5

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 MagickBooleanType Classify ( Image image,
short **  extrema,
const MagickRealType  cluster_threshold,
const MagickRealType  weighting_exponent,
const MagickBooleanType  verbose 
) [static]
static void ConsolidateCrossings ( ZeroCrossing zero_crossing,
const size_t  number_crossings 
) [static]

References _ZeroCrossing::crossings, MagickMax, and MagickMin.

Referenced by OptimalTau().

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

Referenced by OptimalTau().

static void FreeNodes ( IntervalTree node  )  [static]
MagickExport MagickBooleanType GetImageDynamicThreshold ( const Image image,
const double  cluster_threshold,
const double  smooth_threshold,
MagickPixelPacket pixel,
ExceptionInfo exception 
)
static void InitializeHistogram ( const Image image,
ssize_t **  histogram,
ExceptionInfo exception 
)
static IntervalTree* InitializeIntervalTree ( const ZeroCrossing zero_crossing,
const size_t  number_crossings 
) [static]
static void InitializeList ( IntervalTree **  list,
ssize_t *  number_nodes,
IntervalTree node 
) [static]
static void MeanStability ( IntervalTree node  )  [static]
static MagickRealType 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 MagickRealType  tau,
MagickRealType scale_histogram 
)
MagickExport MagickBooleanType SegmentImage ( Image image,
const ColorspaceType  colorspace,
const MagickBooleanType  verbose,
const double  cluster_threshold,
const double  smooth_threshold 
)
static void Stability ( IntervalTree node  )  [static]
static void ZeroCrossHistogram ( MagickRealType second_derivative,
const MagickRealType  smooth_threshold,
short *  crossings 
)

Referenced by OptimalTau().


Variable Documentation

const int Blue = 2 [static]
const int Green = 1 [static]
const int Red = 0 [static]
const int SafeMargin = 3 [static]
const int TreeLength = 600 [static]

Generated on 30 Sep 2019 for MagickCore by  doxygen 1.6.1