Commit 895248d0f for imagemagick.org
commit 895248d0fc9bdaa0c26ec695dda1773850425a0f
Author: Cristy <urban-warrior@imagemagick.org>
Date: Sun Nov 15 12:59:26 2026 -0500
set channel minima and maxima to the initial minima and maxima
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index c4bb99fae..57c78bbbf 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -3013,7 +3013,7 @@ static Image *SIMDivideImage(const Image *numerator_image,
if (status == MagickFalse)
continue;
p=GetCacheViewVirtualPixels(denominator_view,0,y,
- denominator_image->columns,1,exception);
+ divide_image->columns,1,exception);
q=GetCacheViewAuthenticPixels(numerator_view,0,y,divide_image->columns,1,
exception);
if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
@@ -3262,6 +3262,7 @@ static MagickBooleanType SIMMaximaImage(const Image *image,double *maxima,
status = MagickTrue;
MaximaInfo
+ initial_maxima,
maxima_info = { -MagickMaximumValue, 0, 0 };
ssize_t
@@ -3275,6 +3276,7 @@ static MagickBooleanType SIMMaximaImage(const Image *image,double *maxima,
exception);
if (q != (const Quantum *) NULL)
maxima_info.maxima=IsNaN((double) q[0]) != 0 ? 0.0 : (double) q[0];
+ initial_maxima=maxima_info;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(static) shared(maxima_info,status) \
magick_number_threads(image,image,image->rows,1)
@@ -3285,7 +3287,7 @@ static MagickBooleanType SIMMaximaImage(const Image *image,double *maxima,
*magick_restrict p;
MaximaInfo
- channel_maxima = { -MagickMaximumValue, 0, 0 };
+ channel_maxima;
ssize_t
x;
@@ -3298,7 +3300,7 @@ static MagickBooleanType SIMMaximaImage(const Image *image,double *maxima,
status=MagickFalse;
continue;
}
- channel_maxima=maxima_info;
+ channel_maxima=initial_maxima;
for (x=0; x < (ssize_t) image->columns; x++)
{
ssize_t
@@ -3361,6 +3363,7 @@ static MagickBooleanType SIMMinimaImage(const Image *image,double *minima,
status = MagickTrue;
MinimaInfo
+ initial_minima,
minima_info = { MagickMaximumValue, 0, 0 };
ssize_t
@@ -3374,6 +3377,7 @@ static MagickBooleanType SIMMinimaImage(const Image *image,double *minima,
exception);
if (q != (const Quantum *) NULL)
minima_info.minima=IsNaN((double) q[0]) != 0 ? 0.0 : (double) q[0];
+ initial_minima=minima_info;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(static) shared(minima_info,status) \
magick_number_threads(image,image,image->rows,1)
@@ -3384,7 +3388,7 @@ static MagickBooleanType SIMMinimaImage(const Image *image,double *minima,
*magick_restrict p;
MinimaInfo
- channel_minima = { MagickMaximumValue, 0, 0 };
+ channel_minima;
ssize_t
x;
@@ -3397,7 +3401,7 @@ static MagickBooleanType SIMMinimaImage(const Image *image,double *minima,
status=MagickFalse;
continue;
}
- channel_minima=minima_info;
+ channel_minima=initial_minima;
for (x=0; x < (ssize_t) image->columns; x++)
{
ssize_t
@@ -3680,7 +3684,8 @@ static Image *SIMSubtractImageMean(const Image *alpha_image,
if (status == MagickFalse)
continue;
- p=GetCacheViewVirtualPixels(beta_view,0,y,beta_image->columns,1,exception);
+ p=GetCacheViewVirtualPixels(beta_view,0,y,subtract_image->columns,1,
+ exception);
q=GetCacheViewAuthenticPixels(image_view,0,y,subtract_image->columns,1,
exception);
if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
@@ -3836,7 +3841,7 @@ static Image *SIMVarianceImage(Image *alpha_image,const Image *beta_image,
if (status == MagickFalse)
continue;
- p=GetCacheViewVirtualPixels(beta_view,0,y,beta_image->columns,1,
+ p=GetCacheViewVirtualPixels(beta_view,0,y,variance_image->columns,1,
exception);
q=GetCacheViewAuthenticPixels(image_view,0,y,variance_image->columns,1,
exception);
@@ -4608,7 +4613,10 @@ static double GetSimilarityMetric(const Image *image,
channel_similarity=(double *) AcquireQuantumMemory(length,
sizeof(*channel_similarity));
if (channel_similarity == (double *) NULL)
- return(NAN);
+ {
+ similarity_image=DestroyImage(similarity_image);
+ return(NAN);
+ }
(void) memset(channel_similarity,0,length*sizeof(*channel_similarity));
switch (metric)
{