From: Cristy Date: Sat, 25 Feb 2017 16:28:58 +0000 (-0500) Subject: ... X-Git-Tag: 7.0.5-1~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a815864fb36dab686b4d637b424092d60063635a;p=imagemagick ... --- diff --git a/MagickCore/statistic.c b/MagickCore/statistic.c index 5cde9930b..5452f2690 100644 --- a/MagickCore/statistic.c +++ b/MagickCore/statistic.c @@ -1528,6 +1528,37 @@ MagickExport ChannelMoments *GetImageMoments(const Image *image, (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]+MagickEpsilon))); + if (fabs(M11[channel]) < MagickEpsilon) + { + if (fabs(M20[channel]-M02[channel]) < MagickEpsilon) + channel_moments[channel].ellipse_angle+=0.0; + else + if ((M20[channel]-M02[channel]) < 0.0) + channel_moments[channel].ellipse_angle+=90.0; + else + channel_moments[channel].ellipse_angle+=0.0; + } + else + if (M11[channel] < 0.0) + { + if (fabs(M20[channel]-M02[channel]) < MagickEpsilon) + channel_moments[channel].ellipse_angle+=0.0; + else + if ((M20[channel]-M02[channel]) < 0.0) + channel_moments[channel].ellipse_angle+=90.0; + else + channel_moments[channel].ellipse_angle+=180.0; + } + else + { + if (fabs(M20[channel]-M02[channel]) < MagickEpsilon) + channel_moments[channel].ellipse_angle+=0.0; + else + if ((M20[channel]-M02[channel]) < 0.0) + channel_moments[channel].ellipse_angle+=90.0; + else + channel_moments[channel].ellipse_angle+=0.0; + } channel_moments[channel].ellipse_eccentricity=sqrt(1.0-( channel_moments[channel].ellipse_axis.y/ (channel_moments[channel].ellipse_axis.x+MagickEpsilon)));