% 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 %
#include <time.h>
#include <assert.h>
#include <math.h>
-#include "magick/MagickCore.h"
+#include "MagickCore/MagickCore.h"
\f
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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++)
{
- register const PixelPacket
+ register const Quantum
*p;
register ssize_t
if (status == MagickFalse)
continue;
p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
- if (p == (const PixelPacket *) NULL)
+ if (p == (const Quantum *) NULL)
{
status=MagickFalse;
continue;
}
for (x=0; x < (ssize_t) image->columns; x++)
{
- ConvertRGBToHSB(p->red,p->green,p->blue,&hue,&saturation,&brightness);
+ ConvertRGBToHSL(GetPixelRed(image,p),GetPixelGreen(image,p),
+ GetPixelBlue(image,p),&hue,&saturation,&brightness);
brightness*=QuantumRange;
brightness_sum_x+=brightness;
brightness_sum_x2+=brightness*brightness;
saturation_sum_x3+=saturation*saturation*saturation;
saturation_sum_x4+=saturation*saturation*saturation*saturation;
area++;
- p++;
+ p+=GetPixelChannels(image);
}
}
image_view=DestroyCacheView(image_view);
if (area <= 0.0)
break;
brightness_mean=brightness_sum_x/area;
- (void) FormatMagickString(text,MaxTextExtent,"%g",brightness_mean);
- (void) SetImageProperty(image,"filter:brightness:mean",text);
+ (void) FormatLocaleString(text,MaxTextExtent,"%g",brightness_mean);
+ (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) FormatMagickString(text,MaxTextExtent,"%g",
+ (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_mean*brightness_mean)/(brightness_standard_deviation*
brightness_standard_deviation*brightness_standard_deviation*
brightness_standard_deviation)-3.0;
- (void) FormatMagickString(text,MaxTextExtent,"%g",brightness_kurtosis);
- (void) SetImageProperty(image,"filter:brightness:kurtosis",text);
+ (void) FormatLocaleString(text,MaxTextExtent,"%g",brightness_kurtosis);
+ (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) FormatMagickString(text,MaxTextExtent,"%g",brightness_skewness);
- (void) SetImageProperty(image,"filter:brightness:skewness",text);
+ (void) FormatLocaleString(text,MaxTextExtent,"%g",brightness_skewness);
+ (void) SetImageProperty(image,"filter:brightness:skewness",text,
+ exception);
saturation_mean=saturation_sum_x/area;
- (void) FormatMagickString(text,MaxTextExtent,"%g",saturation_mean);
- (void) SetImageProperty(image,"filter:saturation:mean",text);
+ (void) FormatLocaleString(text,MaxTextExtent,"%g",saturation_mean);
+ (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) FormatMagickString(text,MaxTextExtent,"%g",
+ (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_mean*saturation_mean)/(saturation_standard_deviation*
saturation_standard_deviation*saturation_standard_deviation*
saturation_standard_deviation)-3.0;
- (void) FormatMagickString(text,MaxTextExtent,"%g",saturation_kurtosis);
- (void) SetImageProperty(image,"filter:saturation:kurtosis",text);
- if (saturation_standard_deviation != 0)
+ (void) FormatLocaleString(text,MaxTextExtent,"%g",saturation_kurtosis);
+ (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) FormatMagickString(text,MaxTextExtent,"%g",saturation_skewness);
- (void) SetImageProperty(image,"filter:saturation:skewness",text);
+ (void) FormatLocaleString(text,MaxTextExtent,"%g",saturation_skewness);
+ (void) SetImageProperty(image,"filter:saturation:skewness",text,
+ exception);
}
return(MagickImageFilterSignature);
}