]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Thu, 9 Jan 2014 01:27:57 +0000 (01:27 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Thu, 9 Jan 2014 01:27:57 +0000 (01:27 +0000)
MagickCore/statistic.c

index fd09d8f5ba7626a0f7385aa110cb19497ce47505..0de8fc5b61c9f11eb39e0763fcc03a6244203455 100644 (file)
@@ -1515,6 +1515,29 @@ MagickExport ChannelMoments *GetImageMoments(const Image *image,
     }
   }
   for (channel=0; channel <= MaxPixelChannels; channel++)
+  {
+    /*
+      Compute elliptical angle, major and minor axes, eccentricity, & intensity.
+    */
+    if (fabs(M00[channel]) < MagickEpsilon)
+      continue;
+    channel_moments[channel].centroid=centroid[channel];
+    channel_moments[channel].ellipse_axis.x=sqrt((2.0/M00[channel])*
+      ((M20[channel]+M02[channel])+sqrt(4.0*M11[channel]*M11[channel]+
+      (M20[channel]-M02[channel])*(M20[channel]-M02[channel]))));
+    channel_moments[channel].ellipse_axis.y=sqrt((2.0/M00[channel])*
+      ((M20[channel]+M02[channel])-sqrt(4.0*M11[channel]*M11[channel]+
+      (M20[channel]-M02[channel])*(M20[channel]-M02[channel]))));
+    channel_moments[channel].ellipse_angle=RadiansToDegrees(0.5*atan(2.0*
+      M11[channel]/(M20[channel]-M02[channel])));
+    channel_moments[channel].ellipse_eccentricity=sqrt(1.0-(
+      channel_moments[channel].ellipse_axis.y/
+      channel_moments[channel].ellipse_axis.x));
+    channel_moments[channel].ellipse_intensity=M00[channel]/(MagickPI*
+      channel_moments[channel].ellipse_axis.x*
+      channel_moments[channel].ellipse_axis.y);
+  }
+  for (channel=0; channel <= MaxPixelChannels; channel++)
   {
     /*
       Normalize image moments.
@@ -1569,21 +1592,6 @@ MagickExport ChannelMoments *GetImageMoments(const Image *image,
       (M30[channel]+M12[channel])-(M03[channel]+M21[channel])*
       (M03[channel]+M21[channel]))-(M20[channel]-M02[channel])*
       (M30[channel]+M12[channel])*(M03[channel]+M21[channel]);
-    channel_moments[channel].centroid=centroid[channel];
-    channel_moments[channel].ellipse_axis.x=sqrt((2.0/M00[channel])*
-      ((M20[channel]+M02[channel])+sqrt(4.0*M11[channel]*M11[channel]+
-      (M20[channel]-M02[channel])*(M20[channel]-M02[channel]))));
-    channel_moments[channel].ellipse_axis.y=sqrt((2.0/M00[channel])*
-      ((M20[channel]+M02[channel])-sqrt(4.0*M11[channel]*M11[channel]+
-      (M20[channel]-M02[channel])*(M20[channel]-M02[channel]))));
-    channel_moments[channel].ellipse_angle=RadiansToDegrees(0.5*atan(2.0*
-      M11[channel]/(M20[channel]-M02[channel])));
-    channel_moments[channel].ellipse_eccentricity=sqrt(1.0-(
-      channel_moments[channel].ellipse_axis.y/
-      channel_moments[channel].ellipse_axis.x));
-    channel_moments[channel].ellipse_intensity=M00[channel]/(MagickPI*
-      channel_moments[channel].ellipse_axis.x*
-      channel_moments[channel].ellipse_axis.y);
   }
   if (y < (ssize_t) image->rows)
     channel_moments=(ChannelMoments *) RelinquishMagickMemory(channel_moments);