ImageMagick: MagickCore, C API for ImageMagick: Compare an Image to a Reconstructed Image
Author: ImageMagick Studio LLC
Description: ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
Keywords: magickcore, c, api, for, imagemagick:, compare, an, image, to, a, reconstructed, image, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert

CompareImageChannels • GetImageChannelDistortion • GetImageChannelDistortions • IsImagesEqual • SimilarityImage

## CompareImageChannels

CompareImageChannels() compares one or more image channels of an image to a reconstructed image and returns the difference image.

The format of the CompareImageChannels method is:

    Image *CompareImageChannels(const Image *image,
      const Image *reconstruct_image,const ChannelType channel,
      const MetricType metric,double *distortion,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
reconstruct_image
  the reconstruct image.
channel
  the channel.
metric
  the metric.
distortion
  the computed distortion between the images.
exception
  return any errors or warnings in this structure.

## GetImageChannelDistortion

GetImageChannelDistortion() compares one or more image channels of an image to a reconstructed image and returns the specified distortion metric.

The format of the GetImageChannelDistortion method is:

    MagickBooleanType GetImageChannelDistortion(const Image *image,
      const Image *reconstruct_image,const ChannelType channel,
      const MetricType metric,double *distortion,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
reconstruct_image
  the reconstruct image.
channel
  the channel.
metric
  the metric.
distortion
  the computed distortion between the images.
exception
  return any errors or warnings in this structure.

## GetImageChannelDistortions

GetImageChannelDistortions() compares the image channels of an image to a reconstructed image and returns the specified distortion metric for each channel.

The format of the GetImageChannelDistortions method is:

    double *GetImageChannelDistortions(const Image *image,
      const Image *reconstruct_image,const MetricType metric,
      ExceptionInfo *exception)

A description of each parameter follows:

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

## IsImagesEqual

IsImagesEqual() measures the difference between colors at each pixel location of two images. A value other than 0 means the colors match exactly. Otherwise an error measure is computed by summing over all pixels in an image the distance squared in RGB space between each image pixel and its corresponding pixel in the reconstruct image. The error measure is assigned to these image members:

        o mean_error_per_pixel:  The mean error for any single pixel in
    the image.

normalized_mean_error

The normalized mean quantization error for any single pixel in the image. This distance measure is normalized to a range between 0 and 1. It is independent of the range of red, green, and blue values in the image.

normalized_maximum_error

The normalized maximum quantization error for any single pixel in the image. This distance measure is normalized to a range between 0 and 1. It is independent of the range of red, green, and blue values in your image.

A small normalized mean square error, accessed as image->normalized_mean_error, suggests the images are very similar in spatial layout and color.

The format of the IsImagesEqual method is:

    MagickBooleanType IsImagesEqual(Image *image,
      const Image *reconstruct_image)

A description of each parameter follows.

image

the image.

reconstruct_image

the reconstruct image.

## SimilarityImage

SimilarityImage() compares the reference image of the image and returns the best match offset. In addition, it returns a similarity image such that an exact match location is completely white and if none of the pixels match, black, otherwise some gray level in-between.

The format of the SimilarityImageImage method is:

    Image *SimilarityImage(const Image *image,const Image *reference,
      RectangleInfo *offset,double *similarity,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image.
reference
  find an area of the image that closely resembles this image.
  o the best match offset of the reference image within the image.
similarity
  the computed similarity between the images.
exception
  return any errors or warnings in this structure.