]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 27 Apr 2014 23:00:49 +0000 (23:00 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 27 Apr 2014 23:00:49 +0000 (23:00 +0000)
MagickCore/feature.c

index eec801124cce36fc1b20d86f9b7e23487a147e0b..8d67d9425dee66a721964e818c9904e76771f0b8 100644 (file)
@@ -2140,27 +2140,30 @@ MagickExport Image *MeanShiftImage(const Image *image,const size_t width,
 
           for (u=(-((ssize_t) width/2)); u < (((ssize_t) width/2)); u++)
           {
-            PixelInfo
-              pixel;
-
-            status=GetOneCacheViewVirtualPixelInfo(pixel_view,(ssize_t)
-              (mean_location.x+u),(ssize_t) (mean_location.y+v),&pixel,
-              exception);
-            distance=(mean_pixel.red-previous_pixel.red)*
-              (mean_pixel.red-previous_pixel.red)+
-              (mean_pixel.green-previous_pixel.green)*
-              (mean_pixel.green-previous_pixel.green)+
-              (mean_pixel.blue-previous_pixel.blue)*
-              (mean_pixel.blue-previous_pixel.blue);
-            if (distance <= (color_distance*color_distance))
+            if ((v*v+u*u) <= ((width/2)*(height/2)))
               {
-                sum_location.x+=mean_location.x+u;
-                sum_location.y+=mean_location.y+v;
-                sum_pixel.red+=pixel.red;
-                sum_pixel.green+=pixel.green;
-                sum_pixel.blue+=pixel.blue;
-                sum_pixel.alpha+=pixel.alpha;
-                count++;
+                PixelInfo
+                  pixel;
+
+                status=GetOneCacheViewVirtualPixelInfo(pixel_view,(ssize_t)
+                  (mean_location.x+u),(ssize_t) (mean_location.y+v),&pixel,
+                  exception);
+                distance=(mean_pixel.red-previous_pixel.red)*
+                  (mean_pixel.red-previous_pixel.red)+
+                  (mean_pixel.green-previous_pixel.green)*
+                  (mean_pixel.green-previous_pixel.green)+
+                  (mean_pixel.blue-previous_pixel.blue)*
+                  (mean_pixel.blue-previous_pixel.blue);
+                if (distance <= (color_distance*color_distance))
+                  {
+                    sum_location.x+=mean_location.x+u;
+                    sum_location.y+=mean_location.y+v;
+                    sum_pixel.red+=pixel.red;
+                    sum_pixel.green+=pixel.green;
+                    sum_pixel.blue+=pixel.blue;
+                    sum_pixel.alpha+=pixel.alpha;
+                    count++;
+                  }
               }
           }
         }