Commit 5848f4af7 for imagemagick.org
commit 5848f4af7183016be079d6d6b31bc4a99acbf82f
Author: Cristy <urban-warrior@imagemagick.org>
Date: Fri Jul 3 22:18:24 2026 -0400
accumulates absolute error per channel (not counts)
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index a6a6407bd..da49176e6 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -365,9 +365,6 @@ static MagickBooleanType GetAESimilarity(const Image *image,
Da,
Sa;
- size_t
- count = 0;
-
ssize_t
i;
@@ -399,12 +396,11 @@ static MagickBooleanType GetAESimilarity(const Image *image,
error=Sa*p[i]-Da*GetPixelChannel(reconstruct_image,channel,q);
if (MagickSafeSignificantError(error*error,fuzz) != MagickFalse)
{
- channel_similarity[i]++;
- count++;
+ double ae = fabs(error);
+ channel_similarity[i]+=ae;
+ channel_similarity[CompositePixelChannel]+=ae;
}
}
- if (count != 0)
- channel_similarity[CompositePixelChannel]++;
p+=(ptrdiff_t) GetPixelChannels(image);
q+=(ptrdiff_t) GetPixelChannels(reconstruct_image);
}
@@ -434,7 +430,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
image_view=DestroyCacheView(image_view);
area=MagickSafeReciprocal((double) columns*rows);
for (k=0; k < (ssize_t) GetPixelChannels(image); k++)
- similarity[k]*=area;
+ similarity[k] *= area;
similarity[CompositePixelChannel]*=area;
return(status);
}
@@ -1553,7 +1549,7 @@ static MagickBooleanType GetPDCSimilarity(const Image *image,
SetImageCompareBounds(image,reconstruct_image,&columns,&rows);
image_view=AcquireVirtualCacheView(image,exception);
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
-#if defined(MMAGICKCORE_OPENMP_SUPPORT)
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(static) shared(similarity,status) \
magick_number_threads(image,image,rows,1)
#endif
diff --git a/MagickWand/compare.c b/MagickWand/compare.c
index 21d752e83..772a38325 100644
--- a/MagickWand/compare.c
+++ b/MagickWand/compare.c
@@ -1244,6 +1244,10 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info,
switch (metric)
{
case AbsoluteErrorMetric:
+ {
+ scale=1.0;
+ break;
+ }
case PixelDifferenceCountErrorMetric:
{
size_t