Commit de81b9a63 for imagemagick.org
commit de81b9a6314abeeea1f8798fc7256a9b048d1000
Author: Cristy <urban-warrior@imagemagick.org>
Date: Tue Jul 7 21:17:39 2026 -0400
normalize AE metric
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index d5717af5d..b6c611c6f 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -312,6 +312,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
*reconstruct_view;
double
+ area,
fuzz;
MagickBooleanType
@@ -322,6 +323,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
rows;
ssize_t
+ k,
y;
/*
@@ -427,6 +429,10 @@ static MagickBooleanType GetAESimilarity(const Image *image,
similarity[CompositePixelChannel]/=(double) GetImageChannels(image);
reconstruct_view=DestroyCacheView(reconstruct_view);
image_view=DestroyCacheView(image_view);
+ area=MagickSafeReciprocal((double) columns*rows);
+ for (k=0; k < (ssize_t) GetPixelChannels(image); k++)
+ similarity[k]*=area;
+ similarity[CompositePixelChannel]*=area;
return(status);
}
diff --git a/MagickWand/compare.c b/MagickWand/compare.c
index 434b0f5d1..4cc3f5d49 100644
--- a/MagickWand/compare.c
+++ b/MagickWand/compare.c
@@ -1325,18 +1325,6 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info,
{
switch (metric)
{
- case AbsoluteErrorMetric:
- {
- if (distortion == (long long) distortion)
- {
- (void) FormatLocaleFile(stderr,"%.20g (%.20g)",distortion,
- distortion/scale);
- break;
- }
- (void) FormatLocaleFile(stderr,"%.*g (%.*g)",GetMagickPrecision(),
- distortion,GetMagickPrecision(),distortion/scale);
- break;
- }
case MeanErrorPerPixelErrorMetric:
{
if (subimage_search == MagickFalse)
@@ -1456,7 +1444,6 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info,
GetMagickPrecision(),channel_distortion[MaxPixelChannels]);
break;
}
- case AbsoluteErrorMetric:
case DotProductCorrelationErrorMetric:
case NormalizedCrossCorrelationErrorMetric:
case PeakSignalToNoiseRatioErrorMetric:
@@ -1525,6 +1512,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info,
GetMagickPrecision(),image->error.normalized_maximum_error);
break;
}
+ case AbsoluteErrorMetric:
case PixelDifferenceCountErrorMetric:
{
switch (image->colorspace)