{
imageColumns = (unsigned int) image->columns;
imageRows = (unsigned int) image->rows;
- iRadius = (cl_int) fabs(radius);
+ iRadius = (cl_int) (image->rows > image->columns ? image->rows : image->columns) * 0.002f * fabs(radius); // Normalized radius, 100% gives blur radius of 20% of the largest dimension
passes = ((1.0f * imageColumns) * imageColumns * iRadius) / 4000000000.0f;
passes = (passes < 1) ? 1: passes;
%
% o image: the image.
%
-% o radius: the radius of the Gaussian, in pixels, not counting
-% the center pixel.
+% o radius: the radius of the Gaussian blur, in percentage with 100%
+% resulting in a blur radius of 20% of largest dimension.
%
% o strength: the strength of the blur mask in percentage.
%
image_view=AcquireVirtualCacheView(image,exception);
contrast_view=AcquireAuthenticCacheView(contrast_image,exception);
thread_count=1;
- width=(ssize_t) fabs(radius);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel magick_threads(image,image,image->rows,1)
{
}
#endif
scanLineSize=(ssize_t) MagickMax(image->columns,image->rows);
+ width=(ssize_t) scanLineSize*0.002f*fabs(radius);
scanLineSize+=(2*width);
scanLinePixels_info=AcquireVirtualMemory((size_t) thread_count*
scanLineSize,sizeof(*scanLinePixels));
geometry_info.rho=10;
if ((flags & SigmaValue) == 0)
geometry_info.sigma=12.5;
- if (((flags & RhoValue) == 0) || ((flags & PercentValue) != 0))
- geometry_info.rho*=MagickMax((*image)->columns,(*image)->rows)/
- 100.0;
mogrify_image=LocalContrastImage(*image,geometry_info.rho,
geometry_info.sigma,exception);
break;
geometry_info.rho=10;
if ((flags & SigmaValue) == 0)
geometry_info.sigma=12.5;
- if (((flags & RhoValue) == 0) || ((flags & PercentValue) != 0))
- geometry_info.rho*=MagickMax(_image->columns,_image->rows)/100.0;
new_image=LocalContrastImage(_image,geometry_info.rho,
geometry_info.sigma,exception);
break;