]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 24 Mar 2013 01:38:00 +0000 (01:38 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 24 Mar 2013 01:38:00 +0000 (01:38 +0000)
12 files changed:
Magick++/lib/Image.cpp
Magick++/lib/Magick++/Image.h
MagickCore/display.c
MagickCore/effect.c
MagickCore/effect.h
MagickCore/fx.c
MagickWand/magick-image.c
MagickWand/magick-image.h
MagickWand/mogrify.c
MagickWand/operation.c
PerlMagick/quantum/quantum.xs.in
coders/msl.c

index a3875fe4a9429edb3087cbf3620bebb4603708ee..db173d7e0811c993ca0e1947c198ad6ce6d07be3 100644 (file)
@@ -890,12 +890,12 @@ void Magick::Image::draw ( const std::list<Magick::Drawable> &drawable_ )
 }
 
 // Hilight edges in image
-void Magick::Image::edge ( const double radius_, const double sigma_ )
+void Magick::Image::edge ( const double radius_ )
 {
   ExceptionInfo exceptionInfo;
   GetExceptionInfo( &exceptionInfo );
   MagickCore::Image* newImage =
-    EdgeImage( image(), radius_, sigma_, &exceptionInfo );
+    EdgeImage( image(), radius_, &exceptionInfo );
   replaceImage( newImage );
   throwException( exceptionInfo );
   (void) DestroyExceptionInfo( &exceptionInfo );
index 316a13620b223e72357bd92947d457fac8934d28..a9924678cf4d004dc390d7b98dc460f5658aa8c3 100644 (file)
@@ -283,8 +283,7 @@ namespace Magick
     void            draw ( const std::list<Magick::Drawable> &drawable_ );
     
     // Edge image (hilight edges in image)
-    void            edge ( const double radius_ = 0.0,
-                           const double sigma_ = 1.0);
+    void            edge ( const double radius_ = 0.0 )
     
     // Emboss image (hilight edges with 3D effect)
     // The radius_ parameter specifies the radius of the Gaussian, in
index a1a0ec6ac7e5bd464433c73a37a957fcbc97797a..b01bb6cce005bb78a010ace822ff262adb7c6ee5 100644 (file)
@@ -8340,8 +8340,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
       flags=ParseGeometry(radius,&geometry_info);
-      edge_image=EdgeImage(*image,geometry_info.rho,geometry_info.sigma,
-        exception);
+      edge_image=EdgeImage(*image,geometry_info.rho,exception);
       if (edge_image != (Image *) NULL)
         {
           *image=DestroyImage(*image);
@@ -8376,8 +8375,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
       flags=ParseGeometry(amount,&geometry_info);
-      spread_image=EdgeImage(*image,geometry_info.rho,geometry_info.sigma,
-        exception);
+      spread_image=EdgeImage(*image,geometry_info.rho,exception);
       if (spread_image != (Image *) NULL)
         {
           *image=DestroyImage(*image);
index 4cfa217d851f23dff3382ed9b32593967a8a69d7..1c2039600423a06e100dac0d1533165762a0970f 100644 (file)
@@ -229,7 +229,7 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius,
   /*
     Edge detect the image brighness channel, level, blur, and level again.
   */
-  edge_image=EdgeImage(image,radius,sigma,exception);
+  edge_image=EdgeImage(image,radius,exception);
   if (edge_image == (Image *) NULL)
     {
       blur_image=DestroyImage(blur_image);
@@ -554,7 +554,7 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius,
   /*
     Edge detect the image brighness channel, level, sharp, and level again.
   */
-  edge_image=EdgeImage(image,radius,sigma,exception);
+  edge_image=EdgeImage(image,radius,exception);
   if (edge_image == (Image *) NULL)
     {
       sharp_image=DestroyImage(sharp_image);
@@ -1189,7 +1189,7 @@ MagickExport Image *DespeckleImage(const Image *image,ExceptionInfo *exception)
 %  The format of the EdgeImage method is:
 %
 %      Image *EdgeImage(const Image *image,const double radius,
-%        const double sigma,ExceptionInfo *exception)
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1197,30 +1197,20 @@ MagickExport Image *DespeckleImage(const Image *image,ExceptionInfo *exception)
 %
 %    o radius: the radius of the pixel neighborhood.
 %
-%    o sigma: the standard deviation of the Gaussian, in pixels.
-%
 %    o exception: return any errors or warnings in this structure.
 %
 */
 MagickExport Image *EdgeImage(const Image *image,const double radius,
-  const double sigma,ExceptionInfo *exception)
+  ExceptionInfo *exception)
 {
-  Image
-    *edge_image;
+  char
+    geometry[MaxTextExtent];
 
   KernelInfo
     *kernel_info;
 
-  register ssize_t
-    i;
-
-  size_t
-    width;
-
-  ssize_t
-    j,
-    u,
-    v;
+  Image
+    *edge_image;
 
   assert(image != (const Image *) NULL);
   assert(image->signature == MagickSignature);
@@ -1228,34 +1218,11 @@ MagickExport Image *EdgeImage(const Image *image,const double radius,
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
-  width=GetOptimalKernelWidth1D(radius,sigma);
-  kernel_info=AcquireKernelInfo((const char *) NULL);
+  (void) FormatLocaleString(geometry,MaxTextExtent,"laplacian:%.20g",radius);
+  kernel_info=AcquireKernelInfo(geometry);
   if (kernel_info == (KernelInfo *) NULL)
     ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
-  kernel_info->width=width;
-  kernel_info->height=width;
-  kernel_info->x=(ssize_t) (width-1)/2;
-  kernel_info->y=(ssize_t) (width-1)/2;
-  kernel_info->values=(MagickRealType *) MagickAssumeAligned(
-    AcquireAlignedMemory(kernel_info->width,kernel_info->width*
-    sizeof(*kernel_info->values)));
-  if (kernel_info->values == (MagickRealType *) NULL)
-    {
-      kernel_info=DestroyKernelInfo(kernel_info);
-      ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
-    }
-  j=(ssize_t) (kernel_info->width-1)/2;
-  i=0;
-  for (v=(-j); v <= j; v++)
-  {
-    for (u=(-j); u <= j; u++)
-    {
-      kernel_info->values[i]=(MagickRealType) (-1.0);
-      i++;
-    }
-  }
-  kernel_info->values[(i-1)/2]=(MagickRealType) (width*width-1.0);
-  edge_image=ConvolveImage(image,kernel_info,exception);
+  edge_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info,exception);
   kernel_info=DestroyKernelInfo(kernel_info);
   return(edge_image);
 }
@@ -2031,7 +1998,7 @@ MagickExport Image *PreviewImage(const Image *image,const PreviewType preview,
       }
       case EdgeDetectPreview:
       {
-        preview_image=EdgeImage(thumbnail,radius,sigma,exception);
+        preview_image=EdgeImage(thumbnail,radius,exception);
         (void) FormatLocaleString(label,MaxTextExtent,"edge %g",radius);
         break;
       }
@@ -3112,7 +3079,7 @@ MagickExport Image *SharpenImage(const Image *image,const double radius,
     *kernel_info;
 
   Image
-    *sharpen_image;
+    *sharp_image;
 
   assert(image != (const Image *) NULL);
   assert(image->signature == MagickSignature);
@@ -3126,10 +3093,10 @@ MagickExport Image *SharpenImage(const Image *image,const double radius,
   if (kernel_info == (KernelInfo *) NULL)
     ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
   ScaleGeometryKernelInfo(kernel_info,"56!,100%");
-  sharpen_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info,
+  sharp_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info,
     exception);
   kernel_info=DestroyKernelInfo(kernel_info);
-  return(sharpen_image);
+  return(sharp_image);
 }
 \f
 /*
index 0a42df50764d90c5613f707d9cb435ae3a294004..9245cf2e74b5c4ec9f61d7542d8c469693f3d351 100644 (file)
@@ -65,7 +65,7 @@ extern MagickExport Image
   *BlurImage(const Image *,const double,const double,ExceptionInfo *),
   *ConvolveImage(const Image *,const KernelInfo *,ExceptionInfo *),
   *DespeckleImage(const Image *,ExceptionInfo *),
-  *EdgeImage(const Image *,const double,const double,ExceptionInfo *),
+  *EdgeImage(const Image *,const double,ExceptionInfo *),
   *EmbossImage(const Image *,const double,const double,ExceptionInfo *),
   *GaussianBlurImage(const Image *,const double,const double,ExceptionInfo *),
   *MotionBlurImage(const Image *,const double,const double,const double,
index 473a3daa966a98ffd7d26ef9648f9341c104cbc4..501679fbac4cc4bdd8f17e6cc27193ef5a2e4fd4 100644 (file)
@@ -603,7 +603,7 @@ MagickExport Image *CharcoalImage(const Image *image,const double radius,
   if (clone_image == (Image *) NULL)
     return((Image *) NULL);
   (void) SetImageType(clone_image,GrayscaleType,exception);
-  edge_image=EdgeImage(clone_image,radius,sigma,exception);
+  edge_image=EdgeImage(clone_image,radius,exception);
   clone_image=DestroyImage(clone_image);
   if (edge_image == (Image *) NULL)
     return((Image *) NULL);
@@ -4480,7 +4480,7 @@ MagickExport Image *SketchImage(const Image *image,const double radius,
   random_image=DestroyImage(random_image);
   if (blur_image == (Image *) NULL)
     return((Image *) NULL);
-  dodge_image=EdgeImage(blur_image,radius,1.0,exception);
+  dodge_image=EdgeImage(blur_image,radius,exception);
   blur_image=DestroyImage(blur_image);
   if (dodge_image == (Image *) NULL)
     return((Image *) NULL);
index 8cdc5c91cb0faf4559b3ee39ebea4cdd7490df88..18343f028f0ef37d1d2111352534735df87e89f4 100644 (file)
@@ -2666,8 +2666,7 @@ WandExport MagickBooleanType MagickDrawImage(MagickWand *wand,
 %
 %  The format of the MagickEdgeImage method is:
 %
-%      MagickBooleanType MagickEdgeImage(MagickWand *wand,const double radius,
-%        const double sigma)
+%      MagickBooleanType MagickEdgeImage(MagickWand *wand,const double radius)
 %
 %  A description of each parameter follows:
 %
@@ -2675,11 +2674,9 @@ WandExport MagickBooleanType MagickDrawImage(MagickWand *wand,
 %
 %    o radius: the radius of the pixel neighborhood.
 %
-%    o sigma: the standard deviation of the Gaussian, in pixels.
-%
 */
 WandExport MagickBooleanType MagickEdgeImage(MagickWand *wand,
-  const double radius,const double sigma)
+  const double radius)
 {
   Image
     *edge_image;
@@ -2690,7 +2687,7 @@ WandExport MagickBooleanType MagickEdgeImage(MagickWand *wand,
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  edge_image=EdgeImage(wand->images,radius,sigma,wand->exception);
+  edge_image=EdgeImage(wand->images,radius,wand->exception);
   if (edge_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,edge_image);
index 2677cdc1df58f3cb9e852c05b8b69b5bd035ba02..bdc3d4eae848349139f75edf8388f34bd1521076 100644 (file)
@@ -124,7 +124,7 @@ extern WandExport MagickBooleanType
   MagickDistortImage(MagickWand *,const DistortImageMethod,const size_t,
     const double *,const MagickBooleanType),
   MagickDrawImage(MagickWand *,const DrawingWand *),
-  MagickEdgeImage(MagickWand *,const double,const double),
+  MagickEdgeImage(MagickWand *,const double),
   MagickEmbossImage(MagickWand *,const double,const double),
   MagickEncipherImage(MagickWand *,const char *),
   MagickEnhanceImage(MagickWand *),
index e104d0e100233937f4e3eb3fc1a4ee0a847d1b82..6d3894cbf50ce48d5ce3858fc5f916eb0cb94c3e 100644 (file)
@@ -1421,10 +1421,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             */
             (void) SyncImageSettings(mogrify_info,*image,exception);
             flags=ParseGeometry(argv[i+1],&geometry_info);
-            if ((flags & SigmaValue) == 0)
-              geometry_info.sigma=1.0;
-            mogrify_image=EdgeImage(*image,geometry_info.rho,
-              geometry_info.sigma,exception);
+            mogrify_image=EdgeImage(*image,geometry_info.rho,exception);
             break;
           }
         if (LocaleCompare("emboss",option+1) == 0)
index d5553bcd06148be189a73d7cd09618acfc9fbc86..87698e192d4c5f9b84f3a85f643edb6cc7605a34 100644 (file)
@@ -2221,10 +2221,7 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand,
           flags=ParseGeometry(arg1,&geometry_info);
           if ((flags & (RhoValue|SigmaValue)) == 0)
             CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1);
-          if ((flags & SigmaValue) == 0)
-            geometry_info.sigma=1.0;
-          new_image=EdgeImage(_image,geometry_info.rho,geometry_info.sigma,
-               _exception);
+          new_image=EdgeImage(_image,geometry_info.rho,_exception);
           break;
         }
       if (LocaleCompare("emboss",option+1) == 0)
index 8a323cab7755c89f5861731f91d60677195afad8..b04771d110ac3325cb2599428eac3dc1a61a4a38 100644 (file)
@@ -7788,8 +7788,7 @@ Mogrify(ref,...)
         {
           if (attribute_flag[0] != 0)
             geometry_info.rho=argument_list[0].real_reference;
-          image=EdgeImage(image,geometry_info.rho,geometry_info.sigma,
-            exception);
+          image=EdgeImage(image,geometry_info.rho,exception);
           break;
         }
         case 11:  /* Emboss */
index 403ee2c6bb3a50b7451b72a485d6705482e96355..279f37a9a39b75f5da7a156cbb712e0e2b9295f8 100644 (file)
@@ -2767,7 +2767,7 @@ static void MSLStartElement(void *context,const xmlChar *tag,
               }
             }
           edge_image=EdgeImage(msl_info->image[n],geometry_info.rho,
-            geometry_info.sigma,msl_info->exception);
+            msl_info->exception);
           if (edge_image == (Image *) NULL)
             break;
           msl_info->image[n]=DestroyImage(msl_info->image[n]);