% December 1998 %
% %
% %
-% Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
status=MagickTrue;
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(dynamic,4) shared(status)
+ #pragma omp parallel for schedule(static,4) shared(status)
#endif
for (y=0; y < (ssize_t) image->rows; y++)
{
}
for (x=0; x < (ssize_t) image->columns; x++)
{
- ConvertRGBToHSB(GetPixelRed(image,p),GetPixelGreen(image,p),
+ ConvertRGBToHSL(GetPixelRed(image,p),GetPixelGreen(image,p),
GetPixelBlue(image,p),&hue,&saturation,&brightness);
brightness*=QuantumRange;
brightness_sum_x+=brightness;
saturation_sum_x3+=saturation*saturation*saturation;
saturation_sum_x4+=saturation*saturation*saturation*saturation;
area++;
- p+=GetPixelComponents(image);
+ p+=GetPixelChannels(image);
}
}
image_view=DestroyCacheView(image_view);
break;
brightness_mean=brightness_sum_x/area;
(void) FormatLocaleString(text,MaxTextExtent,"%g",brightness_mean);
- (void) SetImageProperty(image,"filter:brightness:mean",text);
+ (void) SetImageProperty(image,"filter:brightness:mean",text,
+ exception);
brightness_standard_deviation=sqrt(brightness_sum_x2/area-(brightness_sum_x/
area*brightness_sum_x/area));
(void) FormatLocaleString(text,MaxTextExtent,"%g",
brightness_standard_deviation);
- (void) SetImageProperty(image,"filter:brightness:standard-deviation",text);
- if (brightness_standard_deviation != 0)
+ (void) SetImageProperty(image,"filter:brightness:standard-deviation",text,
+ exception);
+ if (fabs(brightness_standard_deviation) >= MagickEpsilon)
brightness_kurtosis=(brightness_sum_x4/area-4.0*brightness_mean*
brightness_sum_x3/area+6.0*brightness_mean*brightness_mean*
brightness_sum_x2/area-3.0*brightness_mean*brightness_mean*
brightness_standard_deviation*brightness_standard_deviation*
brightness_standard_deviation)-3.0;
(void) FormatLocaleString(text,MaxTextExtent,"%g",brightness_kurtosis);
- (void) SetImageProperty(image,"filter:brightness:kurtosis",text);
+ (void) SetImageProperty(image,"filter:brightness:kurtosis",text,
+ exception);
if (brightness_standard_deviation != 0)
brightness_skewness=(brightness_sum_x3/area-3.0*brightness_mean*
brightness_sum_x2/area+2.0*brightness_mean*brightness_mean*
brightness_mean)/(brightness_standard_deviation*
brightness_standard_deviation*brightness_standard_deviation);
(void) FormatLocaleString(text,MaxTextExtent,"%g",brightness_skewness);
- (void) SetImageProperty(image,"filter:brightness:skewness",text);
+ (void) SetImageProperty(image,"filter:brightness:skewness",text,
+ exception);
saturation_mean=saturation_sum_x/area;
(void) FormatLocaleString(text,MaxTextExtent,"%g",saturation_mean);
- (void) SetImageProperty(image,"filter:saturation:mean",text);
+ (void) SetImageProperty(image,"filter:saturation:mean",text,
+ exception);
saturation_standard_deviation=sqrt(saturation_sum_x2/area-(saturation_sum_x/
area*saturation_sum_x/area));
(void) FormatLocaleString(text,MaxTextExtent,"%g",
saturation_standard_deviation);
- (void) SetImageProperty(image,"filter:saturation:standard-deviation",text);
- if (saturation_standard_deviation != 0)
+ (void) SetImageProperty(image,"filter:saturation:standard-deviation",text,
+ exception);
+ if (fabs(saturation_standard_deviation) >= MagickEpsilon)
saturation_kurtosis=(saturation_sum_x4/area-4.0*saturation_mean*
saturation_sum_x3/area+6.0*saturation_mean*saturation_mean*
saturation_sum_x2/area-3.0*saturation_mean*saturation_mean*
saturation_standard_deviation*saturation_standard_deviation*
saturation_standard_deviation)-3.0;
(void) FormatLocaleString(text,MaxTextExtent,"%g",saturation_kurtosis);
- (void) SetImageProperty(image,"filter:saturation:kurtosis",text);
- if (saturation_standard_deviation != 0)
+ (void) SetImageProperty(image,"filter:saturation:kurtosis",text,
+ exception);
+ if (fabs(saturation_standard_deviation) >= MagickEpsilon)
saturation_skewness=(saturation_sum_x3/area-3.0*saturation_mean*
saturation_sum_x2/area+2.0*saturation_mean*saturation_mean*
saturation_mean)/(saturation_standard_deviation*
saturation_standard_deviation*saturation_standard_deviation);
(void) FormatLocaleString(text,MaxTextExtent,"%g",saturation_skewness);
- (void) SetImageProperty(image,"filter:saturation:skewness",text);
+ (void) SetImageProperty(image,"filter:saturation:skewness",text,
+ exception);
}
return(MagickImageFilterSignature);
}