From: cristy Date: Thu, 9 Jan 2014 01:27:57 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2934 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a520f2362aafd6cb7ae888ff3559b09ac20b7924;p=imagemagick --- diff --git a/MagickCore/statistic.c b/MagickCore/statistic.c index fd09d8f5b..0de8fc5b6 100644 --- a/MagickCore/statistic.c +++ b/MagickCore/statistic.c @@ -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);