diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp
index a3875fe..db173d7 100644
--- a/Magick++/lib/Image.cpp
+++ b/Magick++/lib/Image.cpp
@@ -890,12 +890,12 @@
}
// 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 );
diff --git a/Magick++/lib/Magick++/Image.h b/Magick++/lib/Magick++/Image.h
index 316a136..a992467 100644
--- a/Magick++/lib/Magick++/Image.h
+++ b/Magick++/lib/Magick++/Image.h
@@ -283,8 +283,7 @@
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
diff --git a/MagickCore/display.c b/MagickCore/display.c
index a1a0ec6..b01bb6c 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -8340,8 +8340,7 @@
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 @@
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);
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 4cfa217..1c20396 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -229,7 +229,7 @@
/*
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 @@
/*
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 @@
% 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 @@
%
% 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 @@
(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 @@
}
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 @@
*kernel_info;
Image
- *sharpen_image;
+ *sharp_image;
assert(image != (const Image *) NULL);
assert(image->signature == MagickSignature);
@@ -3126,10 +3093,10 @@
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);
}
/*
diff --git a/MagickCore/effect.h b/MagickCore/effect.h
index 0a42df5..9245cf2 100644
--- a/MagickCore/effect.h
+++ b/MagickCore/effect.h
@@ -65,7 +65,7 @@
*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,
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 473a3da..501679f 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -603,7 +603,7 @@
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 @@
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);
diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c
index 8cdc5c9..18343f0 100644
--- a/MagickWand/magick-image.c
+++ b/MagickWand/magick-image.c
@@ -2666,8 +2666,7 @@
%
% 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 @@
%
% 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 @@
(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);
diff --git a/MagickWand/magick-image.h b/MagickWand/magick-image.h
index 2677cdc..bdc3d4e 100644
--- a/MagickWand/magick-image.h
+++ b/MagickWand/magick-image.h
@@ -124,7 +124,7 @@
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 *),
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index e104d0e..6d3894c 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -1421,10 +1421,7 @@
*/
(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)
diff --git a/MagickWand/operation.c b/MagickWand/operation.c
index d5553bc..87698e1 100644
--- a/MagickWand/operation.c
+++ b/MagickWand/operation.c
@@ -2221,10 +2221,7 @@
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)
diff --git a/PerlMagick/quantum/quantum.xs.in b/PerlMagick/quantum/quantum.xs.in
index 8a323ca..b04771d 100644
--- a/PerlMagick/quantum/quantum.xs.in
+++ b/PerlMagick/quantum/quantum.xs.in
@@ -7788,8 +7788,7 @@
{
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 */
diff --git a/coders/msl.c b/coders/msl.c
index 403ee2c..279f37a 100644
--- a/coders/msl.c
+++ b/coders/msl.c
@@ -2767,7 +2767,7 @@
}
}
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]);