MagickCore 6.9.12
enhance.c File Reference
Include dependency graph for enhance.c:

Go to the source code of this file.

Macros

#define BrightnessContastImageTag   "BrightnessContast/Image"
 
#define ColorDecisionListCorrectImageTag   "ColorDecisionList/Image"
 
#define ClutImageTag   "Clut/Image"
 
#define ContrastImageTag   "Contrast/Image"
 
#define MaxRange(color)   ((MagickRealType) ScaleQuantumToMap((Quantum) (color)))
 
#define ContrastStretchImageTag   "ContrastStretch/Image"
 
#define EnhancePixel(weight)
 
#define EnhanceImageTag   "Enhance/Image"
 
#define EqualizeImageTag   "Equalize/Image"
 
#define GammaImageTag   "Gamma/Image"
 
#define GrayscaleImageTag   "Grayscale/Image"
 
#define HaldClutImageTag   "Clut/Image"
 
#define LevelImageTag   "Level/Image"
 
#define LevelizeImageTag   "Levelize/Image"
 
#define LevelizeValue(x)
 
#define LinearStretchImageTag   "LinearStretch/Image"
 
#define ModulateImageTag   "Modulate/Image"
 
#define NegateImageTag   "Negate/Image"
 
#define Sigmoidal(a, b, x)   ( 1.0/(1.0+exp((a)*((b)-(x)))) )
 
#define ScaledSigmoidal(a, b, x)
 
#define SigmoidalContrastImageTag   "SigmoidalContrast/Image"
 

Functions

MagickExport MagickBooleanType AutoGammaImage (Image *image)
 
MagickExport MagickBooleanType AutoGammaImageChannel (Image *image, const ChannelType channel)
 
MagickExport MagickBooleanType AutoLevelImage (Image *image)
 
MagickExport MagickBooleanType AutoLevelImageChannel (Image *image, const ChannelType channel)
 
MagickExport MagickBooleanType BrightnessContrastImage (Image *image, const double brightness, const double contrast)
 
MagickExport MagickBooleanType BrightnessContrastImageChannel (Image *image, const ChannelType channel, const double brightness, const double contrast)
 
MagickExport MagickBooleanType ColorDecisionListImage (Image *image, const char *color_correction_collection)
 
MagickExport MagickBooleanType ClutImage (Image *image, const Image *clut_image)
 
MagickExport MagickBooleanType ClutImageChannel (Image *image, const ChannelType channel, const Image *clut_image)
 
static void Contrast (const int sign, Quantum *red, Quantum *green, Quantum *blue)
 
MagickExport MagickBooleanType ContrastImage (Image *image, const MagickBooleanType sharpen)
 
MagickExport MagickBooleanType ContrastStretchImage (Image *image, const char *levels)
 
MagickExport MagickBooleanType ContrastStretchImageChannel (Image *image, const ChannelType channel, const double black_point, const double white_point)
 
MagickExport ImageEnhanceImage (const Image *image, ExceptionInfo *exception)
 
MagickExport MagickBooleanType EqualizeImage (Image *image)
 
MagickExport MagickBooleanType EqualizeImageChannel (Image *image, const ChannelType channel)
 
static double gamma_pow (const double value, const double gamma)
 
MagickExport MagickBooleanType GammaImage (Image *image, const char *level)
 
MagickExport MagickBooleanType GammaImageChannel (Image *image, const ChannelType channel, const double gamma)
 
MagickExport MagickBooleanType GrayscaleImage (Image *image, const PixelIntensityMethod method)
 
MagickExport MagickBooleanType HaldClutImage (Image *image, const Image *hald_image)
 
MagickExport MagickBooleanType HaldClutImageChannel (Image *image, const ChannelType channel, const Image *hald_image)
 
MagickExport MagickBooleanType LevelImage (Image *image, const char *levels)
 
static double LevelPixel (const double black_point, const double white_point, const double gamma, const MagickRealType pixel)
 
MagickExport MagickBooleanType LevelImageChannel (Image *image, const ChannelType channel, const double black_point, const double white_point, const double gamma)
 
MagickExport MagickBooleanType LevelizeImage (Image *image, const double black_point, const double white_point, const double gamma)
 
MagickExport MagickBooleanType LevelizeImageChannel (Image *image, const ChannelType channel, const double black_point, const double white_point, const double gamma)
 
MagickExport MagickBooleanType LevelColorsImage (Image *image, const MagickPixelPacket *black_color, const MagickPixelPacket *white_color, const MagickBooleanType invert)
 
MagickExport MagickBooleanType LevelColorsImageChannel (Image *image, const ChannelType channel, const MagickPixelPacket *black_color, const MagickPixelPacket *white_color, const MagickBooleanType invert)
 
MagickExport MagickBooleanType LinearStretchImage (Image *image, const double black_point, const double white_point)
 
static void ModulateHCL (const double percent_hue, const double percent_chroma, const double percent_luma, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateHCLp (const double percent_hue, const double percent_chroma, const double percent_luma, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateHSB (const double percent_hue, const double percent_saturation, const double percent_brightness, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateHSI (const double percent_hue, const double percent_saturation, const double percent_intensity, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateHSL (const double percent_hue, const double percent_saturation, const double percent_lightness, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateHSV (const double percent_hue, const double percent_saturation, const double percent_value, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateHWB (const double percent_hue, const double percent_whiteness, const double percent_blackness, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateLCHab (const double percent_luma, const double percent_chroma, const double percent_hue, Quantum *red, Quantum *green, Quantum *blue)
 
static void ModulateLCHuv (const double percent_luma, const double percent_chroma, const double percent_hue, Quantum *red, Quantum *green, Quantum *blue)
 
MagickExport MagickBooleanType ModulateImage (Image *image, const char *modulate)
 
MagickExport MagickBooleanType NegateImage (Image *image, const MagickBooleanType grayscale)
 
MagickExport MagickBooleanType NegateImageChannel (Image *image, const ChannelType channel, const MagickBooleanType grayscale)
 
MagickExport MagickBooleanType NormalizeImage (Image *image)
 
MagickExport MagickBooleanType NormalizeImageChannel (Image *image, const ChannelType channel)
 
static double InverseScaledSigmoidal (const double a, const double b, const double x)
 
MagickExport MagickBooleanType SigmoidalContrastImage (Image *image, const MagickBooleanType sharpen, const char *levels)
 
MagickExport MagickBooleanType SigmoidalContrastImageChannel (Image *image, const ChannelType channel, const MagickBooleanType sharpen, const double contrast, const double midpoint)
 

Macro Definition Documentation

◆ BrightnessContastImageTag

#define BrightnessContastImageTag   "BrightnessContast/Image"

◆ ClutImageTag

#define ClutImageTag   "Clut/Image"

◆ ColorDecisionListCorrectImageTag

#define ColorDecisionListCorrectImageTag   "ColorDecisionList/Image"

◆ ContrastImageTag

#define ContrastImageTag   "Contrast/Image"

◆ ContrastStretchImageTag

#define ContrastStretchImageTag   "ContrastStretch/Image"

◆ EnhanceImageTag

#define EnhanceImageTag   "Enhance/Image"

◆ EnhancePixel

#define EnhancePixel (   weight)
Value:
mean=QuantumScale*((double) GetPixelRed(r)+pixel.red)/2.0; \
distance=QuantumScale*((double) GetPixelRed(r)-pixel.red); \
distance_squared=(4.0+mean)*distance*distance; \
mean=QuantumScale*((double) GetPixelGreen(r)+pixel.green)/2.0; \
distance=QuantumScale*((double) GetPixelGreen(r)-pixel.green); \
distance_squared+=(7.0-mean)*distance*distance; \
mean=QuantumScale*((double) GetPixelBlue(r)+pixel.blue)/2.0; \
distance=QuantumScale*((double) GetPixelBlue(r)-pixel.blue); \
distance_squared+=(5.0-mean)*distance*distance; \
mean=QuantumScale*((double) GetPixelOpacity(r)+pixel.opacity)/2.0; \
distance=QuantumScale*((double) GetPixelOpacity(r)-pixel.opacity); \
distance_squared+=(5.0-mean)*distance*distance; \
if (distance_squared < 0.069) \
{ \
aggregate.red+=(weight)*GetPixelRed(r); \
aggregate.green+=(weight)*GetPixelGreen(r); \
aggregate.blue+=(weight)*GetPixelBlue(r); \
aggregate.opacity+=(weight)*GetPixelOpacity(r); \
total_weight+=(weight); \
} \
r++;
#define QuantumScale
Definition: magick-type.h:120
#define GetPixelBlue(pixel)
#define GetPixelRed(pixel)
#define GetPixelGreen(pixel)
#define GetPixelOpacity(pixel)

◆ EqualizeImageTag

#define EqualizeImageTag   "Equalize/Image"

◆ GammaImageTag

#define GammaImageTag   "Gamma/Image"

◆ GrayscaleImageTag

#define GrayscaleImageTag   "Grayscale/Image"

◆ HaldClutImageTag

#define HaldClutImageTag   "Clut/Image"

◆ LevelImageTag

#define LevelImageTag   "Level/Image"

◆ LevelizeImageTag

#define LevelizeImageTag   "Levelize/Image"

◆ LevelizeValue

#define LevelizeValue (   x)
Value:
(QuantumScale*(x)),gamma))*(white_point-black_point)+black_point)
static double gamma_pow(const double value, const double gamma)
Definition: enhance.c:2121
MagickDoubleType MagickRealType
Definition: magick-type.h:125
static Quantum ClampToQuantum(const MagickRealType quantum)
Definition: quantum.h:88

◆ LinearStretchImageTag

#define LinearStretchImageTag   "LinearStretch/Image"

◆ MaxRange

#define MaxRange (   color)    ((MagickRealType) ScaleQuantumToMap((Quantum) (color)))

◆ ModulateImageTag

#define ModulateImageTag   "Modulate/Image"

◆ NegateImageTag

#define NegateImageTag   "Negate/Image"

◆ ScaledSigmoidal

#define ScaledSigmoidal (   a,
  b,
 
)
Value:
( \
(Sigmoidal((a),(b),(x))-Sigmoidal((a),(b),0.0)) / \
(Sigmoidal((a),(b),1.0)-Sigmoidal((a),(b),0.0)) )
#define Sigmoidal(a, b, x)
Definition: enhance.c:4296

Definition at line 4315 of file enhance.c.

◆ Sigmoidal

#define Sigmoidal (   a,
  b,
 
)    ( 1.0/(1.0+exp((a)*((b)-(x)))) )

Definition at line 4296 of file enhance.c.

◆ SigmoidalContrastImageTag

#define SigmoidalContrastImageTag   "SigmoidalContrast/Image"

Function Documentation

◆ AutoGammaImage()

MagickExport MagickBooleanType AutoGammaImage ( Image image)

Definition at line 115 of file enhance.c.

References AutoGammaImageChannel(), and DefaultChannels.

◆ AutoGammaImageChannel()

◆ AutoLevelImage()

MagickExport MagickBooleanType AutoLevelImage ( Image image)

Definition at line 221 of file enhance.c.

References AutoLevelImageChannel(), and DefaultChannels.

Referenced by AdaptiveBlurImageChannel(), and AdaptiveSharpenImageChannel().

◆ AutoLevelImageChannel()

MagickExport MagickBooleanType AutoLevelImageChannel ( Image image,
const ChannelType  channel 
)

Definition at line 226 of file enhance.c.

References MinMaxStretchImage().

Referenced by AutoLevelImage().

◆ BrightnessContrastImage()

MagickExport MagickBooleanType BrightnessContrastImage ( Image image,
const double  brightness,
const double  contrast 
)

Definition at line 270 of file enhance.c.

References BrightnessContrastImageChannel(), and DefaultChannels.

◆ BrightnessContrastImageChannel()

MagickExport MagickBooleanType BrightnessContrastImageChannel ( Image image,
const ChannelType  channel,
const double  brightness,
const double  contrast 
)

◆ ClutImage()

MagickExport MagickBooleanType ClutImage ( Image image,
const Image clut_image 
)

Definition at line 739 of file enhance.c.

References ClutImageChannel(), and DefaultChannels.

◆ ClutImageChannel()

◆ ColorDecisionListImage()

◆ Contrast()

static void Contrast ( const int  sign,
Quantum red,
Quantum green,
Quantum blue 
)
static

Definition at line 917 of file enhance.c.

References ConvertHSBToRGB(), ConvertRGBToHSB(), and MagickPI.

Referenced by ContrastImage().

◆ ContrastImage()

◆ ContrastStretchImage()

MagickExport MagickBooleanType ContrastStretchImage ( Image image,
const char *  levels 
)

◆ ContrastStretchImageChannel()

MagickExport MagickBooleanType ContrastStretchImageChannel ( Image image,
const ChannelType  channel,
const double  black_point,
const double  white_point 
)

Definition at line 1130 of file enhance.c.

References AcquireAuthenticCacheView(), AcquireQuantumMemory(), _MagickPixelPacket::blue, _PixelPacket::blue, _QuantumPixelPacket::blue, BlueChannel, ClampToQuantum(), CMYKColorspace, _Image::colormap, _Image::colors, _Image::colorspace, _Image::columns, ContrastStretchImageTag, DestroyCacheView(), DirectClass, _Image::exception, _Image::filename, GetCacheViewAuthenticIndexQueue(), GetCacheViewAuthenticPixels(), GetCacheViewVirtualPixels(), GetMagickModule, GetPixelBlue, GetPixelGreen, GetPixelIndex, GetPixelIntensity(), GetPixelOpacity, GetPixelRed, GRAYColorspace, _MagickPixelPacket::green, _PixelPacket::green, _QuantumPixelPacket::green, GreenChannel, _MagickPixelPacket::index, _QuantumPixelPacket::index, IndexChannel, IsEventLogging(), LogMagickEvent(), magick_restrict, MagickCoreSignature, MagickFalse, MagickTrue, MaxMap, MaxRange, _MagickPixelPacket::opacity, _PixelPacket::opacity, _QuantumPixelPacket::opacity, OpacityChannel, _Image::progress_monitor, PseudoClass, QuantumRange, _MagickPixelPacket::red, _PixelPacket::red, _QuantumPixelPacket::red, RedChannel, RelinquishMagickMemory(), ResourceLimitError, _Image::rows, SetImageColorspace(), SetImageGray(), SetImageProgress(), SetPixelBlue, SetPixelGreen, SetPixelIndex, SetPixelOpacity, SetPixelRed, _Image::signature, _Image::storage_class, SyncCacheViewAuthenticPixels(), SyncChannels, ThrowBinaryException, and TraceEvent.

Referenced by ContrastStretchImage(), and NormalizeImageChannel().

◆ EnhanceImage()

◆ EqualizeImage()

MagickExport MagickBooleanType EqualizeImage ( Image image)

Definition at line 1781 of file enhance.c.

References DefaultChannels, and EqualizeImageChannel().

◆ EqualizeImageChannel()

MagickExport MagickBooleanType EqualizeImageChannel ( Image image,
const ChannelType  channel 
)

◆ gamma_pow()

static double gamma_pow ( const double  value,
const double  gamma 
)
inlinestatic

Definition at line 2121 of file enhance.c.

Referenced by GammaImageChannel(), and LevelPixel().

◆ GammaImage()

◆ GammaImageChannel()

◆ GrayscaleImage()

◆ HaldClutImage()

MagickExport MagickBooleanType HaldClutImage ( Image image,
const Image hald_image 
)

Definition at line 2629 of file enhance.c.

References DefaultChannels, and HaldClutImageChannel().

◆ HaldClutImageChannel()

◆ InverseScaledSigmoidal()

static double InverseScaledSigmoidal ( const double  a,
const double  b,
const double  x 
)
inlinestatic

Definition at line 4327 of file enhance.c.

References MagickEpsilon, and Sigmoidal.

Referenced by SigmoidalContrastImageChannel().

◆ LevelColorsImage()

MagickExport MagickBooleanType LevelColorsImage ( Image image,
const MagickPixelPacket black_color,
const MagickPixelPacket white_color,
const MagickBooleanType  invert 
)

Definition at line 3301 of file enhance.c.

References DefaultChannels, and LevelColorsImageChannel().

Referenced by SetImageAlphaChannel().

◆ LevelColorsImageChannel()

◆ LevelImage()

◆ LevelImageChannel()

◆ LevelizeImage()

MagickExport MagickBooleanType LevelizeImage ( Image image,
const double  black_point,
const double  white_point,
const double  gamma 
)

Definition at line 3129 of file enhance.c.

References DefaultChannels, and LevelizeImageChannel().

Referenced by LevelImage().

◆ LevelizeImageChannel()

◆ LevelPixel()

static double LevelPixel ( const double  black_point,
const double  white_point,
const double  gamma,
const MagickRealType  pixel 
)
inlinestatic

Definition at line 2948 of file enhance.c.

References gamma_pow(), PerceptibleReciprocal(), and QuantumRange.

Referenced by LevelImageChannel().

◆ LinearStretchImage()

◆ ModulateHCL()

static void ModulateHCL ( const double  percent_hue,
const double  percent_chroma,
const double  percent_luma,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3508 of file enhance.c.

References ConvertHCLToRGB(), and ConvertRGBToHCL().

Referenced by ModulateImage().

◆ ModulateHCLp()

static void ModulateHCLp ( const double  percent_hue,
const double  percent_chroma,
const double  percent_luma,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3527 of file enhance.c.

References ConvertHCLpToRGB(), and ConvertRGBToHCLp().

Referenced by ModulateImage().

◆ ModulateHSB()

static void ModulateHSB ( const double  percent_hue,
const double  percent_saturation,
const double  percent_brightness,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3546 of file enhance.c.

References ConvertHSBToRGB(), and ConvertRGBToHSB().

Referenced by ModulateImage().

◆ ModulateHSI()

static void ModulateHSI ( const double  percent_hue,
const double  percent_saturation,
const double  percent_intensity,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3565 of file enhance.c.

References ConvertHSIToRGB(), and ConvertRGBToHSI().

Referenced by ModulateImage().

◆ ModulateHSL()

static void ModulateHSL ( const double  percent_hue,
const double  percent_saturation,
const double  percent_lightness,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3584 of file enhance.c.

References ConvertHSLToRGB(), and ConvertRGBToHSL().

Referenced by ModulateImage().

◆ ModulateHSV()

static void ModulateHSV ( const double  percent_hue,
const double  percent_saturation,
const double  percent_value,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3603 of file enhance.c.

References ConvertHSVToRGB(), and ConvertRGBToHSV().

Referenced by ModulateImage().

◆ ModulateHWB()

static void ModulateHWB ( const double  percent_hue,
const double  percent_whiteness,
const double  percent_blackness,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3622 of file enhance.c.

References ConvertHWBToRGB(), and ConvertRGBToHWB().

Referenced by ModulateImage().

◆ ModulateImage()

◆ ModulateLCHab()

static void ModulateLCHab ( const double  percent_luma,
const double  percent_chroma,
const double  percent_hue,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3641 of file enhance.c.

References ConvertLCHabToRGB(), and ConvertRGBToLCHab().

Referenced by ModulateImage().

◆ ModulateLCHuv()

static void ModulateLCHuv ( const double  percent_luma,
const double  percent_chroma,
const double  percent_hue,
Quantum red,
Quantum green,
Quantum blue 
)
inlinestatic

Definition at line 3660 of file enhance.c.

References ConvertLCHuvToRGB(), and ConvertRGBToLCHuv().

Referenced by ModulateImage().

◆ NegateImage()

MagickExport MagickBooleanType NegateImage ( Image image,
const MagickBooleanType  grayscale 
)

◆ NegateImageChannel()

◆ NormalizeImage()

MagickExport MagickBooleanType NormalizeImage ( Image image)

Definition at line 4206 of file enhance.c.

References DefaultChannels, and NormalizeImageChannel().

Referenced by CharcoalImage(), SepiaToneImage(), SetImageType(), and SketchImage().

◆ NormalizeImageChannel()

MagickExport MagickBooleanType NormalizeImageChannel ( Image image,
const ChannelType  channel 
)

Definition at line 4215 of file enhance.c.

References _Image::columns, ContrastStretchImageChannel(), and _Image::rows.

Referenced by NormalizeImage().

◆ SigmoidalContrastImage()

MagickExport MagickBooleanType SigmoidalContrastImage ( Image image,
const MagickBooleanType  sharpen,
const char *  levels 
)

◆ SigmoidalContrastImageChannel()