ImageMagick – MagickCore, C API: Image Statistics
Description: ImageMagick is a powerful, open-source software suite for creating, editing, converting, and manipulating images in over 200 formats. Ideal for web developers, graphic designers, and researchers, it offers versatile tools for image processing, including batch processing, format conversion, and complex image transformations.
Keywords: MagickCore, C API: Image Statistics, Image Processing, Digital Image Editing, Image Conversion, Open-Source Software, Image Manipulation, Command-Line Image Tools

# Statistic

## EvaluateImage

EvaluateImage() applies a value to the image with an arithmetic, relational, or logical operator to an image. Use these operations to lighten or darken an image, to increase or decrease contrast in an image, or to produce the "negative" of an image.

The format of the EvaluateImage method is:

    MagickBooleanType EvaluateImage(Image *image,
      const MagickEvaluateOperator op,const double value,
      ExceptionInfo *exception)
    MagickBooleanType EvaluateImages(Image *images,
      const MagickEvaluateOperator op,const double value,
      ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
op
  A channel op.
value
  A value value.
exception
  return any errors or warnings in this structure.

## FunctionImage

FunctionImage() applies a value to the image with an arithmetic, relational, or logical operator to an image. Use these operations to lighten or darken an image, to increase or decrease contrast in an image, or to produce the "negative" of an image.

The format of the FunctionImage method is:

    MagickBooleanType FunctionImage(Image *image,
      const MagickFunction function,const ssize_t number_parameters,
      const double *parameters,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
function
  A channel function.
parameters
  one or more parameters.
exception
  return any errors or warnings in this structure.

## GetImageEntropy

GetImageEntropy() returns the entropy of one or more image channels.

The format of the GetImageEntropy method is:

    MagickBooleanType GetImageEntropy(const Image *image,double *entropy,
      ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
entropy
  the average entropy of the selected channels.
exception
  return any errors or warnings in this structure.

## GetImageExtrema

GetImageExtrema() returns the extrema of one or more image channels.

The format of the GetImageExtrema method is:

    MagickBooleanType GetImageExtrema(const Image *image,size_t *minima,
      size_t *maxima,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
minima
  the minimum value in the channel.
maxima
  the maximum value in the channel.
exception
  return any errors or warnings in this structure.

## GetImageKurtosis

GetImageKurtosis() returns the kurtosis and skewness of one or more image channels.

The format of the GetImageKurtosis method is:

    MagickBooleanType GetImageKurtosis(const Image *image,double *kurtosis,
      double *skewness,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
kurtosis
  the kurtosis of the channel.
skewness
  the skewness of the channel.
exception
  return any errors or warnings in this structure.

## GetImageMean

GetImageMean() returns the mean and standard deviation of one or more image channels.

The format of the GetImageMean method is:

    MagickBooleanType GetImageMean(const Image *image,double *mean,
      double *standard_deviation,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
mean
  the average value in the channel.
standard_deviation
  the standard deviation of the channel.
exception
  return any errors or warnings in this structure.

## GetImageMedian

GetImageMedian() returns the median pixel of one or more image channels.

The format of the GetImageMedian method is:

    MagickBooleanType GetImageMedian(const Image *image,double *median,
      ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
median
  the average value in the channel.
exception
  return any errors or warnings in this structure.

## GetImageMoments

GetImageMoments() returns the normalized moments of one or more image channels.

The format of the GetImageMoments method is:

    ChannelMoments *GetImageMoments(const Image *image,
      ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
exception
  return any errors or warnings in this structure.

## GetImagePerceptualHash

GetImagePerceptualHash() returns the perceptual hash of one or more image channels.

The format of the GetImagePerceptualHash method is:

    ChannelPerceptualHash *GetImagePerceptualHash(const Image *image,
      ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
exception
  return any errors or warnings in this structure.

## GetImageRange

GetImageRange() returns the range of one or more image channels.

The format of the GetImageRange method is:

    MagickBooleanType GetImageRange(const Image *image,double *minima,
      double *maxima,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
minima
  the minimum value in the channel.
maxima
  the maximum value in the channel.
exception
  return any errors or warnings in this structure.

## GetImageStatistics

GetImageStatistics() returns statistics for each channel in the image. The statistics include the channel depth, its minima, maxima, mean, standard deviation, kurtosis and skewness. You can access the red channel mean, for example, like this:

    channel_statistics=GetImageStatistics(image,exception);
    red_mean=channel_statistics[RedPixelChannel].mean;

Use MagickRelinquishMemory() to free the statistics buffer.

The format of the GetImageStatistics method is:

    ChannelStatistics *GetImageStatistics(const Image *image,
      ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
exception
  return any errors or warnings in this structure.

## PolynomialImage

PolynomialImage() returns a new image where each pixel is the sum of the pixels in the image sequence after applying its corresponding terms (coefficient and degree pairs).

The format of the PolynomialImage method is:

    Image *PolynomialImage(const Image *images,const size_t number_terms,
      const double *terms,ExceptionInfo *exception)

A description of each parameter follows:

images
  the image sequence.
number_terms
  the number of terms in the list. The actual list length is 2 x number_terms + 1 (the constant).
terms
  the list of polynomial coefficients and degree pairs and a constant.
exception
  return any errors or warnings in this structure.

## StatisticImage

StatisticImage() makes each pixel the min / max / median / mode / etc. of the neighborhood of the specified width and height.

The format of the StatisticImage method is:

    Image *StatisticImage(const Image *image,const StatisticType type,
      const size_t width,const size_t height,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
type
  the statistic type (median, mode, etc.).
width
  the width of the pixel neighborhood.
height
  the height of the pixel neighborhood.
exception
  return any errors or warnings in this structure.