]> granicus.if.org Git - imagemagick/blobdiff - filters/analyze.c
(no commit message)
[imagemagick] / filters / analyze.c
index 445eac4a5a2df1b107de9a5c047cef348d01d55e..1e4a785808dd3e5e9e17aa89da213954319d18c7 100644 (file)
@@ -15,7 +15,7 @@
 %                              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  %
@@ -145,7 +145,7 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
     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++)
     {
@@ -165,7 +165,7 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
         }
       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;
@@ -178,7 +178,7 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
         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);
@@ -186,13 +186,15 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
       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*
@@ -200,23 +202,27 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
         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*
@@ -224,14 +230,16 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
         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);
 }