Image
*highlight_image;
- highlight_image=CompareImageChannels(image,reconstruct_image,AllChannels,
+ highlight_image=CompareImageChannels(image,reconstruct_image,CompositeChannels,
metric,distortion,exception);
return(highlight_image);
}
SetMagickPixelPacket(reconstruct_image,q,reconstruct_indexes+x,
&reconstruct_pixel);
difference=MagickFalse;
- if (channel == AllChannels)
+ if (channel == CompositeChannels)
{
if (IsMagickColorSimilar(&pixel,&reconstruct_pixel) == MagickFalse)
difference=MagickTrue;
MagickBooleanType
status;
- status=GetImageChannelDistortion(image,reconstruct_image,AllChannels,
+ status=GetImageChannelDistortion(image,reconstruct_image,CompositeChannels,
metric,distortion,exception);
return(status);
}
for (y=0; y < (ssize_t) image->rows; y++)
{
double
- channel_distortion[AllChannels+1];
+ channel_distortion[CompositeChannels+1];
MagickPixelPacket
pixel,
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace))
channel_distortion[BlackChannel]++;
- channel_distortion[AllChannels]++;
+ channel_distortion[CompositeChannels]++;
}
p++;
q++;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_GetAbsoluteError)
#endif
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]+=channel_distortion[i];
}
reconstruct_view=DestroyCacheView(reconstruct_view);
for (y=0; y < (ssize_t) image->rows; y++)
{
double
- channel_distortion[AllChannels+1];
+ channel_distortion[CompositeChannels+1];
register const IndexPacket
*restrict indexes,
distance=QuantumScale*(GetRedPixelComponent(p)-(MagickRealType)
GetRedPixelComponent(q));
channel_distortion[RedChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if ((channel & GreenChannel) != 0)
{
distance=QuantumScale*(GetGreenPixelComponent(p)-(MagickRealType)
GetGreenPixelComponent(q));
channel_distortion[GreenChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if ((channel & BlueChannel) != 0)
{
distance=QuantumScale*(GetBluePixelComponent(p)-(MagickRealType)
GetBluePixelComponent(q));
channel_distortion[BlueChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if (((channel & OpacityChannel) != 0) && ((image->matte != MagickFalse) ||
(reconstruct_image->matte != MagickFalse)))
(reconstruct_image->matte != MagickFalse ?
GetOpacityPixelComponent(q): OpaqueOpacity));
channel_distortion[OpacityChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace) &&
distance=QuantumScale*(GetIndexPixelComponent(indexes+x)-
(MagickRealType) GetIndexPixelComponent(reconstruct_indexes+x));
channel_distortion[BlackChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
p++;
q++;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_GetMeanSquaredError)
#endif
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]+=channel_distortion[i];
}
reconstruct_view=DestroyCacheView(reconstruct_view);
image_view=DestroyCacheView(image_view);
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]/=((double) image->columns*image->rows);
if (((channel & OpacityChannel) != 0) && ((image->matte != MagickFalse) ||
(reconstruct_image->matte != MagickFalse)))
- distortion[AllChannels]/=(double) (GetNumberChannels(image,channel)-1);
+ distortion[CompositeChannels]/=(double) (GetNumberChannels(image,channel)-1);
else
- distortion[AllChannels]/=(double) GetNumberChannels(image,channel);
- distortion[AllChannels]=sqrt(distortion[AllChannels]);
+ distortion[CompositeChannels]/=(double) GetNumberChannels(image,channel);
+ distortion[CompositeChannels]=sqrt(distortion[CompositeChannels]);
return(status);
}
for (y=0; y < (ssize_t) image->rows; y++)
{
double
- channel_distortion[AllChannels+1];
+ channel_distortion[CompositeChannels+1];
register const IndexPacket
*restrict indexes,
distance=QuantumScale*fabs(GetRedPixelComponent(p)-(double)
GetRedPixelComponent(q));
channel_distortion[RedChannel]+=distance;
- channel_distortion[AllChannels]+=distance;
+ channel_distortion[CompositeChannels]+=distance;
}
if ((channel & GreenChannel) != 0)
{
distance=QuantumScale*fabs(GetGreenPixelComponent(p)-(double)
GetGreenPixelComponent(q));
channel_distortion[GreenChannel]+=distance;
- channel_distortion[AllChannels]+=distance;
+ channel_distortion[CompositeChannels]+=distance;
}
if ((channel & BlueChannel) != 0)
{
distance=QuantumScale*fabs(GetBluePixelComponent(p)-(double)
GetBluePixelComponent(q));
channel_distortion[BlueChannel]+=distance;
- channel_distortion[AllChannels]+=distance;
+ channel_distortion[CompositeChannels]+=distance;
}
if (((channel & OpacityChannel) != 0) &&
(image->matte != MagickFalse))
distance=QuantumScale*fabs(GetOpacityPixelComponent(p)-(double)
GetOpacityPixelComponent(q));
channel_distortion[OpacityChannel]+=distance;
- channel_distortion[AllChannels]+=distance;
+ channel_distortion[CompositeChannels]+=distance;
}
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace))
distance=QuantumScale*fabs(GetIndexPixelComponent(indexes+x)-(double)
GetIndexPixelComponent(reconstruct_indexes+x));
channel_distortion[BlackChannel]+=distance;
- channel_distortion[AllChannels]+=distance;
+ channel_distortion[CompositeChannels]+=distance;
}
p++;
q++;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_GetMeanAbsoluteError)
#endif
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]+=channel_distortion[i];
}
reconstruct_view=DestroyCacheView(reconstruct_view);
image_view=DestroyCacheView(image_view);
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]/=((double) image->columns*image->rows);
- distortion[AllChannels]/=(double) GetNumberChannels(image,channel);
+ distortion[CompositeChannels]/=(double) GetNumberChannels(image,channel);
return(status);
}
distance=fabs(alpha*GetRedPixelComponent(p)-beta*
GetRedPixelComponent(q));
distortion[RedChannel]+=distance;
- distortion[AllChannels]+=distance;
+ distortion[CompositeChannels]+=distance;
mean_error+=distance*distance;
if (distance > maximum_error)
maximum_error=distance;
distance=fabs(alpha*GetGreenPixelComponent(p)-beta*
GetGreenPixelComponent(q));
distortion[GreenChannel]+=distance;
- distortion[AllChannels]+=distance;
+ distortion[CompositeChannels]+=distance;
mean_error+=distance*distance;
if (distance > maximum_error)
maximum_error=distance;
distance=fabs(alpha*GetBluePixelComponent(p)-beta*
GetBluePixelComponent(q));
distortion[BlueChannel]+=distance;
- distortion[AllChannels]+=distance;
+ distortion[CompositeChannels]+=distance;
mean_error+=distance*distance;
if (distance > maximum_error)
maximum_error=distance;
distance=fabs((double) GetOpacityPixelComponent(p)-
GetOpacityPixelComponent(q));
distortion[OpacityChannel]+=distance;
- distortion[AllChannels]+=distance;
+ distortion[CompositeChannels]+=distance;
mean_error+=distance*distance;
if (distance > maximum_error)
maximum_error=distance;
distance=fabs(alpha*GetIndexPixelComponent(indexes+x)-beta*
GetIndexPixelComponent(reconstruct_indexes+x));
distortion[BlackChannel]+=distance;
- distortion[AllChannels]+=distance;
+ distortion[CompositeChannels]+=distance;
mean_error+=distance*distance;
if (distance > maximum_error)
maximum_error=distance;
}
reconstruct_view=DestroyCacheView(reconstruct_view);
image_view=DestroyCacheView(image_view);
- image->error.mean_error_per_pixel=distortion[AllChannels]/area;
+ image->error.mean_error_per_pixel=distortion[CompositeChannels]/area;
image->error.normalized_mean_error=QuantumScale*QuantumScale*mean_error/area;
image->error.normalized_maximum_error=QuantumScale*maximum_error;
return(status);
for (y=0; y < (ssize_t) image->rows; y++)
{
double
- channel_distortion[AllChannels+1];
+ channel_distortion[CompositeChannels+1];
register const IndexPacket
*restrict indexes,
distance=QuantumScale*(GetRedPixelComponent(p)-(MagickRealType)
GetRedPixelComponent(q));
channel_distortion[RedChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if ((channel & GreenChannel) != 0)
{
distance=QuantumScale*(GetGreenPixelComponent(p)-(MagickRealType)
GetGreenPixelComponent(q));
channel_distortion[GreenChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if ((channel & BlueChannel) != 0)
{
distance=QuantumScale*(GetBluePixelComponent(p)-(MagickRealType)
GetBluePixelComponent(q));
channel_distortion[BlueChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if (((channel & OpacityChannel) != 0) &&
(image->matte != MagickFalse))
distance=QuantumScale*(GetOpacityPixelComponent(p)-(MagickRealType)
GetOpacityPixelComponent(q));
channel_distortion[OpacityChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace) &&
distance=QuantumScale*(GetIndexPixelComponent(indexes+x)-
(MagickRealType) GetIndexPixelComponent(reconstruct_indexes+x));
channel_distortion[BlackChannel]+=distance*distance;
- channel_distortion[AllChannels]+=distance*distance;
+ channel_distortion[CompositeChannels]+=distance*distance;
}
p++;
q++;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_GetMeanSquaredError)
#endif
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]+=channel_distortion[i];
}
reconstruct_view=DestroyCacheView(reconstruct_view);
image_view=DestroyCacheView(image_view);
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]/=((double) image->columns*image->rows);
- distortion[AllChannels]/=(double) GetNumberChannels(image,channel);
+ distortion[CompositeChannels]/=(double) GetNumberChannels(image,channel);
return(status);
}
reconstruct_statistics=GetImageChannelStatistics(reconstruct_image,exception);
status=MagickTrue;
progress=0;
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
distortion[i]=0.0;
area=1.0/((MagickRealType) image->columns*image->rows);
image_view=AcquireCacheView(image);
/*
Divide by the standard deviation.
*/
- for (i=0; i < (ssize_t) AllChannels; i++)
+ for (i=0; i < (ssize_t) CompositeChannels; i++)
{
MagickRealType
gamma;
gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
distortion[i]=QuantumRange*gamma*distortion[i];
}
- distortion[AllChannels]=0.0;
+ distortion[CompositeChannels]=0.0;
if ((channel & RedChannel) != 0)
- distortion[AllChannels]+=distortion[RedChannel]*distortion[RedChannel];
+ distortion[CompositeChannels]+=distortion[RedChannel]*distortion[RedChannel];
if ((channel & GreenChannel) != 0)
- distortion[AllChannels]+=distortion[GreenChannel]*distortion[GreenChannel];
+ distortion[CompositeChannels]+=distortion[GreenChannel]*distortion[GreenChannel];
if ((channel & BlueChannel) != 0)
- distortion[AllChannels]+=distortion[BlueChannel]*distortion[BlueChannel];
+ distortion[CompositeChannels]+=distortion[BlueChannel]*distortion[BlueChannel];
if (((channel & OpacityChannel) != 0) && (image->matte != MagickFalse))
- distortion[AllChannels]+=distortion[OpacityChannel]*
+ distortion[CompositeChannels]+=distortion[OpacityChannel]*
distortion[OpacityChannel];
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace))
- distortion[AllChannels]+=distortion[BlackChannel]*distortion[BlackChannel];
- distortion[AllChannels]=sqrt(distortion[AllChannels]/GetNumberChannels(image,
+ distortion[CompositeChannels]+=distortion[BlackChannel]*distortion[BlackChannel];
+ distortion[CompositeChannels]=sqrt(distortion[CompositeChannels]/GetNumberChannels(image,
channel));
/*
Free resources.
for (y=0; y < (ssize_t) image->rows; y++)
{
double
- channel_distortion[AllChannels+1];
+ channel_distortion[CompositeChannels+1];
register const IndexPacket
*restrict indexes,
GetRedPixelComponent(q));
if (distance > channel_distortion[RedChannel])
channel_distortion[RedChannel]=distance;
- if (distance > channel_distortion[AllChannels])
- channel_distortion[AllChannels]=distance;
+ if (distance > channel_distortion[CompositeChannels])
+ channel_distortion[CompositeChannels]=distance;
}
if ((channel & GreenChannel) != 0)
{
GetGreenPixelComponent(q));
if (distance > channel_distortion[GreenChannel])
channel_distortion[GreenChannel]=distance;
- if (distance > channel_distortion[AllChannels])
- channel_distortion[AllChannels]=distance;
+ if (distance > channel_distortion[CompositeChannels])
+ channel_distortion[CompositeChannels]=distance;
}
if ((channel & BlueChannel) != 0)
{
GetBluePixelComponent(q));
if (distance > channel_distortion[BlueChannel])
channel_distortion[BlueChannel]=distance;
- if (distance > channel_distortion[AllChannels])
- channel_distortion[AllChannels]=distance;
+ if (distance > channel_distortion[CompositeChannels])
+ channel_distortion[CompositeChannels]=distance;
}
if (((channel & OpacityChannel) != 0) &&
(image->matte != MagickFalse))
GetOpacityPixelComponent(q));
if (distance > channel_distortion[OpacityChannel])
channel_distortion[OpacityChannel]=distance;
- if (distance > channel_distortion[AllChannels])
- channel_distortion[AllChannels]=distance;
+ if (distance > channel_distortion[CompositeChannels])
+ channel_distortion[CompositeChannels]=distance;
}
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace) &&
GetIndexPixelComponent(reconstruct_indexes+x));
if (distance > channel_distortion[BlackChannel])
channel_distortion[BlackChannel]=distance;
- if (distance > channel_distortion[AllChannels])
- channel_distortion[AllChannels]=distance;
+ if (distance > channel_distortion[CompositeChannels])
+ channel_distortion[CompositeChannels]=distance;
}
p++;
q++;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_GetPeakAbsoluteError)
#endif
- for (i=0; i <= (ssize_t) AllChannels; i++)
+ for (i=0; i <= (ssize_t) CompositeChannels; i++)
if (channel_distortion[i] > distortion[i])
distortion[i]=channel_distortion[i];
}
(image->colorspace == CMYKColorspace))
distortion[BlackChannel]=20.0*log10((double) 1.0/sqrt(
distortion[BlackChannel]));
- distortion[AllChannels]=20.0*log10((double) 1.0/sqrt(
- distortion[AllChannels]));
+ distortion[CompositeChannels]=20.0*log10((double) 1.0/sqrt(
+ distortion[CompositeChannels]));
return(status);
}
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace))
distortion[BlackChannel]=sqrt(distortion[BlackChannel]);
- distortion[AllChannels]=sqrt(distortion[AllChannels]);
+ distortion[CompositeChannels]=sqrt(distortion[CompositeChannels]);
return(status);
}
/*
Get image distortion.
*/
- length=AllChannels+1UL;
+ length=CompositeChannels+1UL;
channel_distortion=(double *) AcquireQuantumMemory(length,
sizeof(*channel_distortion));
if (channel_distortion == (double *) NULL)
break;
}
}
- *distortion=channel_distortion[AllChannels];
+ *distortion=channel_distortion[CompositeChannels];
channel_distortion=(double *) RelinquishMagickMemory(channel_distortion);
return(status);
}
/*
Get image distortion.
*/
- length=AllChannels+1UL;
+ length=CompositeChannels+1UL;
channel_distortion=(double *) AcquireQuantumMemory(length,
sizeof(*channel_distortion));
if (channel_distortion == (double *) NULL)
{
case AbsoluteErrorMetric:
{
- status=GetAbsoluteDistortion(image,reconstruct_image,AllChannels,
+ status=GetAbsoluteDistortion(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
case FuzzErrorMetric:
{
- status=GetFuzzDistortion(image,reconstruct_image,AllChannels,
+ status=GetFuzzDistortion(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
case MeanAbsoluteErrorMetric:
{
- status=GetMeanAbsoluteDistortion(image,reconstruct_image,AllChannels,
+ status=GetMeanAbsoluteDistortion(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
case MeanErrorPerPixelMetric:
{
- status=GetMeanErrorPerPixel(image,reconstruct_image,AllChannels,
+ status=GetMeanErrorPerPixel(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
case MeanSquaredErrorMetric:
{
- status=GetMeanSquaredDistortion(image,reconstruct_image,AllChannels,
+ status=GetMeanSquaredDistortion(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
default:
{
status=GetNormalizedCrossCorrelationDistortion(image,reconstruct_image,
- AllChannels,channel_distortion,exception);
+ CompositeChannels,channel_distortion,exception);
break;
}
case PeakAbsoluteErrorMetric:
{
- status=GetPeakAbsoluteDistortion(image,reconstruct_image,AllChannels,
+ status=GetPeakAbsoluteDistortion(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
case PeakSignalToNoiseRatioMetric:
{
- status=GetPeakSignalToNoiseRatio(image,reconstruct_image,AllChannels,
+ status=GetPeakSignalToNoiseRatio(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
case RootMeanSquaredErrorMetric:
{
- status=GetRootMeanSquaredDistortion(image,reconstruct_image,AllChannels,
+ status=GetRootMeanSquaredDistortion(image,reconstruct_image,CompositeChannels,
channel_distortion,exception);
break;
}
/*
Divide by the standard deviation.
*/
- gamma=image_statistics[AllChannels].standard_deviation*
- reconstruct_statistics[AllChannels].standard_deviation;
+ gamma=image_statistics[CompositeChannels].standard_deviation*
+ reconstruct_statistics[CompositeChannels].standard_deviation;
gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
distortion=QuantumRange*gamma*distortion;
number_channels=3;
MagickBooleanType
status;
- status=EvaluateImageChannel(image,AllChannels,op,value,exception);
+ status=EvaluateImageChannel(image,CompositeChannels,op,value,exception);
return(status);
}
MagickBooleanType
status;
- status=FunctionImageChannel(image,AllChannels,function,number_parameters,
+ status=FunctionImageChannel(image,CompositeChannels,function,number_parameters,
parameters,exception);
return(status);
}
MagickExport MagickBooleanType GetImageExtrema(const Image *image,
size_t *minima,size_t *maxima,ExceptionInfo *exception)
{
- return(GetImageChannelExtrema(image,AllChannels,minima,maxima,exception));
+ return(GetImageChannelExtrema(image,CompositeChannels,minima,maxima,exception));
}
MagickExport MagickBooleanType GetImageChannelExtrema(const Image *image,
MagickBooleanType
status;
- status=GetImageChannelMean(image,AllChannels,mean,standard_deviation,
+ status=GetImageChannelMean(image,CompositeChannels,mean,standard_deviation,
exception);
return(status);
}
if (channel_statistics == (ChannelStatistics *) NULL)
return(MagickFalse);
channels=0;
- channel_statistics[AllChannels].mean=0.0;
- channel_statistics[AllChannels].standard_deviation=0.0;
+ channel_statistics[CompositeChannels].mean=0.0;
+ channel_statistics[CompositeChannels].standard_deviation=0.0;
if ((channel & RedChannel) != 0)
{
- channel_statistics[AllChannels].mean+=
+ channel_statistics[CompositeChannels].mean+=
channel_statistics[RedChannel].mean;
- channel_statistics[AllChannels].standard_deviation+=
+ channel_statistics[CompositeChannels].standard_deviation+=
channel_statistics[RedChannel].variance-
channel_statistics[RedChannel].mean*
channel_statistics[RedChannel].mean;
}
if ((channel & GreenChannel) != 0)
{
- channel_statistics[AllChannels].mean+=
+ channel_statistics[CompositeChannels].mean+=
channel_statistics[GreenChannel].mean;
- channel_statistics[AllChannels].standard_deviation+=
+ channel_statistics[CompositeChannels].standard_deviation+=
channel_statistics[GreenChannel].variance-
channel_statistics[GreenChannel].mean*
channel_statistics[GreenChannel].mean;
}
if ((channel & BlueChannel) != 0)
{
- channel_statistics[AllChannels].mean+=
+ channel_statistics[CompositeChannels].mean+=
channel_statistics[BlueChannel].mean;
- channel_statistics[AllChannels].standard_deviation+=
+ channel_statistics[CompositeChannels].standard_deviation+=
channel_statistics[BlueChannel].variance-
channel_statistics[BlueChannel].mean*
channel_statistics[BlueChannel].mean;
if (((channel & OpacityChannel) != 0) &&
(image->matte != MagickFalse))
{
- channel_statistics[AllChannels].mean+=
+ channel_statistics[CompositeChannels].mean+=
channel_statistics[OpacityChannel].mean;
- channel_statistics[AllChannels].standard_deviation+=
+ channel_statistics[CompositeChannels].standard_deviation+=
channel_statistics[OpacityChannel].variance-
channel_statistics[OpacityChannel].mean*
channel_statistics[OpacityChannel].mean;
if (((channel & IndexChannel) != 0) &&
(image->colorspace == CMYKColorspace))
{
- channel_statistics[AllChannels].mean+=
+ channel_statistics[CompositeChannels].mean+=
channel_statistics[BlackChannel].mean;
- channel_statistics[AllChannels].standard_deviation+=
+ channel_statistics[CompositeChannels].standard_deviation+=
channel_statistics[BlackChannel].variance-
channel_statistics[BlackChannel].mean*
channel_statistics[BlackChannel].mean;
channels++;
}
- channel_statistics[AllChannels].mean/=channels;
- channel_statistics[AllChannels].standard_deviation=
- sqrt(channel_statistics[AllChannels].standard_deviation/channels);
- *mean=channel_statistics[AllChannels].mean;
- *standard_deviation=channel_statistics[AllChannels].standard_deviation;
+ channel_statistics[CompositeChannels].mean/=channels;
+ channel_statistics[CompositeChannels].standard_deviation=
+ sqrt(channel_statistics[CompositeChannels].standard_deviation/channels);
+ *mean=channel_statistics[CompositeChannels].mean;
+ *standard_deviation=channel_statistics[CompositeChannels].standard_deviation;
channel_statistics=(ChannelStatistics *) RelinquishMagickMemory(
channel_statistics);
return(MagickTrue);
MagickBooleanType
status;
- status=GetImageChannelKurtosis(image,AllChannels,kurtosis,skewness,
+ status=GetImageChannelKurtosis(image,CompositeChannels,kurtosis,skewness,
exception);
return(status);
}
MagickExport MagickBooleanType GetImageRange(const Image *image,
double *minima,double *maxima,ExceptionInfo *exception)
{
- return(GetImageChannelRange(image,AllChannels,minima,maxima,exception));
+ return(GetImageChannelRange(image,CompositeChannels,minima,maxima,exception));
}
MagickExport MagickBooleanType GetImageChannelRange(const Image *image,
assert(image->signature == MagickSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- length=AllChannels+1UL;
+ length=CompositeChannels+1UL;
channel_statistics=(ChannelStatistics *) AcquireQuantumMemory(length,
sizeof(*channel_statistics));
if (channel_statistics == (ChannelStatistics *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(channel_statistics,0,length*
sizeof(*channel_statistics));
- for (i=0; i <= AllChannels; i++)
+ for (i=0; i <= CompositeChannels; i++)
{
channel_statistics[i].depth=1;
channel_statistics[i].maxima=(-1.0E-37);
}
}
area=(double) image->columns*image->rows;
- for (i=0; i < AllChannels; i++)
+ for (i=0; i < CompositeChannels; i++)
{
channel_statistics[i].sum/=area;
channel_statistics[i].sum_squared/=area;
channel_statistics[i].variance-(channel_statistics[i].mean*
channel_statistics[i].mean));
}
- for (i=0; i < AllChannels; i++)
+ for (i=0; i < CompositeChannels; i++)
{
- channel_statistics[AllChannels].depth=(size_t) MagickMax((double)
- channel_statistics[AllChannels].depth,(double)
+ channel_statistics[CompositeChannels].depth=(size_t) MagickMax((double)
+ channel_statistics[CompositeChannels].depth,(double)
channel_statistics[i].depth);
- channel_statistics[AllChannels].minima=MagickMin(
- channel_statistics[AllChannels].minima,channel_statistics[i].minima);
- channel_statistics[AllChannels].maxima=MagickMax(
- channel_statistics[AllChannels].maxima,channel_statistics[i].maxima);
- channel_statistics[AllChannels].sum+=channel_statistics[i].sum;
- channel_statistics[AllChannels].sum_squared+=
+ channel_statistics[CompositeChannels].minima=MagickMin(
+ channel_statistics[CompositeChannels].minima,channel_statistics[i].minima);
+ channel_statistics[CompositeChannels].maxima=MagickMax(
+ channel_statistics[CompositeChannels].maxima,channel_statistics[i].maxima);
+ channel_statistics[CompositeChannels].sum+=channel_statistics[i].sum;
+ channel_statistics[CompositeChannels].sum_squared+=
channel_statistics[i].sum_squared;
- channel_statistics[AllChannels].sum_cubed+=channel_statistics[i].sum_cubed;
- channel_statistics[AllChannels].sum_fourth_power+=
+ channel_statistics[CompositeChannels].sum_cubed+=channel_statistics[i].sum_cubed;
+ channel_statistics[CompositeChannels].sum_fourth_power+=
channel_statistics[i].sum_fourth_power;
- channel_statistics[AllChannels].mean+=channel_statistics[i].mean;
- channel_statistics[AllChannels].variance+=channel_statistics[i].variance-
+ channel_statistics[CompositeChannels].mean+=channel_statistics[i].mean;
+ channel_statistics[CompositeChannels].variance+=channel_statistics[i].variance-
channel_statistics[i].mean*channel_statistics[i].mean;
- channel_statistics[AllChannels].standard_deviation+=
+ channel_statistics[CompositeChannels].standard_deviation+=
channel_statistics[i].variance-channel_statistics[i].mean*
channel_statistics[i].mean;
}
channels++;
if (image->colorspace == CMYKColorspace)
channels++;
- channel_statistics[AllChannels].sum/=channels;
- channel_statistics[AllChannels].sum_squared/=channels;
- channel_statistics[AllChannels].sum_cubed/=channels;
- channel_statistics[AllChannels].sum_fourth_power/=channels;
- channel_statistics[AllChannels].mean/=channels;
- channel_statistics[AllChannels].variance/=channels;
- channel_statistics[AllChannels].standard_deviation=
- sqrt(channel_statistics[AllChannels].standard_deviation/channels);
- channel_statistics[AllChannels].kurtosis/=channels;
- channel_statistics[AllChannels].skewness/=channels;
- for (i=0; i <= AllChannels; i++)
+ channel_statistics[CompositeChannels].sum/=channels;
+ channel_statistics[CompositeChannels].sum_squared/=channels;
+ channel_statistics[CompositeChannels].sum_cubed/=channels;
+ channel_statistics[CompositeChannels].sum_fourth_power/=channels;
+ channel_statistics[CompositeChannels].mean/=channels;
+ channel_statistics[CompositeChannels].variance/=channels;
+ channel_statistics[CompositeChannels].standard_deviation=
+ sqrt(channel_statistics[CompositeChannels].standard_deviation/channels);
+ channel_statistics[CompositeChannels].kurtosis/=channels;
+ channel_statistics[CompositeChannels].skewness/=channels;
+ for (i=0; i <= CompositeChannels; i++)
{
if (channel_statistics[i].standard_deviation == 0.0)
continue;