From: Cristy Date: Mon, 13 Feb 2017 01:18:03 +0000 (-0500) Subject: ... X-Git-Tag: 7.0.4-8~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a315eff8fbeab40002d99932c4e93f48737d3bd7;p=imagemagick ... --- diff --git a/MagickCore/statistic.c b/MagickCore/statistic.c index ac4c6fde9..4f17d759e 100644 --- a/MagickCore/statistic.c +++ b/MagickCore/statistic.c @@ -1998,8 +1998,6 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, channel_statistics[CompositePixelChannel].sum_fourth_power+=(double) p[i]*p[i]*p[i]*p[i]; channel_statistics[CompositePixelChannel].area++; - histogram[GetPixelChannels(image)*ScaleQuantumToMap( - ClampToQuantum((double) p[i]))+CompositePixelChannel]++; } p+=GetPixelChannels(image); } @@ -2022,7 +2020,7 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, 1.0)*channel_statistics[i].area*standard_deviation*standard_deviation); channel_statistics[i].standard_deviation=standard_deviation; } - for (i=0; i <= (ssize_t) MaxPixelChannels; i++) + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { double number_bins; @@ -2033,11 +2031,12 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, /* Compute pixel entropy. */ + PixelChannel channel=GetPixelChannelChannel(image,i); number_bins=0.0; for (j=0; j < (ssize_t) (MaxMap+1U); j++) if (histogram[GetPixelChannels(image)*j+i] > 0.0) number_bins++; - area=PerceptibleReciprocal(channel_statistics[i].area); + area=PerceptibleReciprocal(channel_statistics[channel].area); for (j=0; j < (ssize_t) (MaxMap+1U); j++) { double @@ -2045,8 +2044,13 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, count=area*histogram[GetPixelChannels(image)*j+i]; if (number_bins > MagickEpsilon) - channel_statistics[i].entropy+=-count*MagickLog10(count)/ - MagickLog10(number_bins); + { + channel_statistics[channel].entropy+=-count*MagickLog10(count)/ + MagickLog10(number_bins); + channel_statistics[CompositePixelChannel].entropy+=-count* + MagickLog10(count)/MagickLog10(number_bins)/ + GetPixelChannels(image); + } } } histogram=(double *) RelinquishMagickMemory(histogram);