specify neighborhood as width/height rather than radius/sigma
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 45e0c6b..3eaad26 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -821,8 +821,8 @@
%
% The format of the BilateralBlurImage method is:
%
-% Image *BilateralBlurImage(const Image *image,const double width,
-% const double height,const double intensity_sigma,
+% Image *BilateralBlurImage(const Image *image,const size_t width,
+% const size_t height,const double intensity_sigma,
% const double spatial_sigma,ExceptionInfo *exception)
%
% A description of each parameter follows:
@@ -899,8 +899,8 @@
return(weights);
}
-MagickExport Image *BilateralBlurImage(const Image *image,const double width,
- const double height,const double intensity_sigma,const double spatial_sigma,
+MagickExport Image *BilateralBlurImage(const Image *image,const size_t width,
+ const size_t height,const double intensity_sigma,const double spatial_sigma,
ExceptionInfo *exception)
{
#define BilateralBlurImageTag "Convolve/Image"
@@ -1001,7 +1001,7 @@
p=GetCacheViewVirtualPixels(image_view,x-mid,y-mid,width,width,exception);
if (p == (const Quantum *) NULL)
break;
- p+=(ssize_t) GetPixelChannels(image)*(ssize_t) width*mid+
+ p+=(ssize_t) GetPixelChannels(image)*width*mid+
GetPixelChannels(image)*mid;
n=0;
for (v=0; v < (ssize_t) height; v++)
@@ -1049,7 +1049,7 @@
{
for (u=0; u < (ssize_t) width; u++)
{
- r=p+(ssize_t) GetPixelChannels(image)*(ssize_t) width*(mid-v)+
+ r=p+(ssize_t) GetPixelChannels(image)*width*(mid-v)+
GetPixelChannels(image)*(mid-u);
pixel+=weights[id][n]*r[i];
gamma+=weights[id][n];
@@ -1071,7 +1071,7 @@
alpha,
beta;
- r=p+(ssize_t) GetPixelChannels(image)*(ssize_t) width*(mid-v)+
+ r=p+(ssize_t) GetPixelChannels(image)*width*(mid-v)+
GetPixelChannels(image)*(mid-u);
alpha=(double) (QuantumScale*GetPixelAlpha(image,p));
beta=(double) (QuantumScale*GetPixelAlpha(image,r));
diff --git a/MagickCore/effect.h b/MagickCore/effect.h
index fe74163..0b15bb3 100644
--- a/MagickCore/effect.h
+++ b/MagickCore/effect.h
@@ -62,7 +62,7 @@
*AdaptiveBlurImage(const Image *,const double,const double,ExceptionInfo *),
*AdaptiveSharpenImage(const Image *,const double,const double,
ExceptionInfo *),
- *BilateralBlurImage(const Image *,const double,const double,
+ *BilateralBlurImage(const Image *,const size_t,const size_t,
const double,const double,ExceptionInfo *),
*BlurImage(const Image *,const double,const double,ExceptionInfo *),
*ConvolveImage(const Image *,const KernelInfo *,ExceptionInfo *),
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index 18932d5..1d81e6b 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -961,8 +961,9 @@
if ((flags & PsiValue) == 0)
geometry_info.psi=0.5*sqrt(geometry_info.rho*geometry_info.rho+
geometry_info.sigma*geometry_info.sigma);
- mogrify_image=BilateralBlurImage(*image,geometry_info.rho,
- geometry_info.sigma,geometry_info.xi,geometry_info.psi,exception);
+ mogrify_image=BilateralBlurImage(*image,(size_t) geometry_info.rho,
+ (size_t) geometry_info.sigma,geometry_info.xi,geometry_info.psi,
+ exception);
break;
}
if (LocaleCompare("black-threshold",option+1) == 0)
diff --git a/MagickWand/operation.c b/MagickWand/operation.c
index 1c44db7..6258894 100644
--- a/MagickWand/operation.c
+++ b/MagickWand/operation.c
@@ -1853,8 +1853,9 @@
if ((flags & PsiValue) == 0)
geometry_info.psi=0.5*sqrt(geometry_info.rho*geometry_info.rho+
geometry_info.sigma*geometry_info.sigma);
- new_image=BilateralBlurImage(_image,geometry_info.rho,
- geometry_info.sigma,geometry_info.xi,geometry_info.psi,_exception);
+ new_image=BilateralBlurImage(_image,(size_t) geometry_info.rho,
+ (size_t) geometry_info.sigma,geometry_info.xi,geometry_info.psi,
+ _exception);
break;
}
if (LocaleCompare("black-threshold",option+1) == 0)
diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index 9683276..8a66b55 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -581,7 +581,7 @@
{"stop-color", StringReference}, {"channel", MagickChannelOptions} } },
{ "WhiteBalance", { { (const char *) NULL, NullReference } } },
{ "BilateralBlur", { {"geometry", StringReference},
- {"width", RealReference}, {"height", RealReference},
+ {"width", IntegerReference}, {"height", IntegerReference},
{"intensity-sigma", RealReference}, {"spatial-sigma", RealReference},
{"channel", MagickChannelOptions} } },
};
@@ -11592,9 +11592,9 @@
geometry_info.sigma*geometry_info.sigma);
}
if (attribute_flag[1] != 0)
- geometry_info.rho=argument_list[1].real_reference;
+ geometry_info.rho=(double) argument_list[1].integer_reference;
if (attribute_flag[2] != 0)
- geometry_info.sigma=argument_list[2].real_reference;
+ geometry_info.sigma=(double) argument_list[2].integer_reference;
if (attribute_flag[3] != 0)
geometry_info.xi=argument_list[3].real_reference;
if (attribute_flag[4] != 0)
@@ -11602,8 +11602,8 @@
if (attribute_flag[5] != 0)
channel=(ChannelType) argument_list[5].integer_reference;
channel_mask=SetImageChannelMask(image,channel);
- image=BilateralBlurImage(image,geometry_info.rho,geometry_info.sigma,
- geometry_info.xi,geometry_info.psi,exception);
+ image=BilateralBlurImage(image,(size_t) geometry_info.rho,(size_t)
+ geometry_info.sigma,geometry_info.xi,geometry_info.psi,exception);
if (image != (Image *) NULL)
(void) SetImageChannelMask(image,channel_mask);
break;
diff --git a/PerlMagick/quantum/quantum.xs.in b/PerlMagick/quantum/quantum.xs.in
index 2277e51..29ac323 100644
--- a/PerlMagick/quantum/quantum.xs.in
+++ b/PerlMagick/quantum/quantum.xs.in
@@ -581,7 +581,7 @@
{"stop-color", StringReference}, {"channel", MagickChannelOptions} } },
{ "WhiteBalance", { { (const char *) NULL, NullReference } } },
{ "BilateralBlur", { {"geometry", StringReference},
- {"width", RealReference}, {"height", RealReference},
+ {"width", IntegerReference}, {"height", IntegerReference},
{"intensity-sigma", RealReference}, {"spatial-sigma", RealReference},
{"channel", MagickChannelOptions} } },
};
@@ -11598,9 +11598,9 @@
geometry_info.sigma*geometry_info.sigma);
}
if (attribute_flag[1] != 0)
- geometry_info.rho=argument_list[1].real_reference;
+ geometry_info.rho=(double) argument_list[1].integer_reference;
if (attribute_flag[2] != 0)
- geometry_info.sigma=argument_list[2].real_reference;
+ geometry_info.sigma=(double) argument_list[2].integer_reference;
if (attribute_flag[3] != 0)
geometry_info.xi=argument_list[3].real_reference;
if (attribute_flag[4] != 0)
@@ -11608,8 +11608,8 @@
if (attribute_flag[5] != 0)
channel=(ChannelType) argument_list[5].integer_reference;
channel_mask=SetImageChannelMask(image,channel);
- image=BilateralBlurImage(image,geometry_info.rho,geometry_info.sigma,
- geometry_info.xi,geometry_info.psi,exception);
+ image=BilateralBlurImage(image,(size_t) geometry_info.rho,(size_t)
+ geometry_info.sigma,geometry_info.xi,geometry_info.psi,exception);
if (image != (Image *) NULL)
(void) SetImageChannelMask(image,channel_mask);
break;