diff --git a/magick/effect.c b/magick/effect.c
index cba0bdb..3708985 100644
--- a/magick/effect.c
+++ b/magick/effect.c
@@ -142,7 +142,8 @@
#define MagickSigma (fabs(sigma) <= MagickEpsilon ? 1.0 : sigma)
double
- **kernel;
+ **kernel,
+ normalize;
Image
*blur_image,
@@ -151,7 +152,10 @@
long
j,
+ k,
progress,
+ u,
+ v,
y;
MagickBooleanType
@@ -160,14 +164,8 @@
MagickPixelPacket
bias;
- MagickRealType
- alpha,
- normalize;
-
register long
- i,
- u,
- v;
+ i;
unsigned long
width;
@@ -229,24 +227,24 @@
sizeof(**kernel));
if (kernel[i] == (double *) NULL)
break;
- j=0;
- for (v=(-((long) (width-i)/2)); v <= (long) ((width-i)/2); v++)
+ normalize=0.0;
+ j=(long) (width-i)/2;
+ k=0;
+ for (v=(-j); v <= j; v++)
{
- for (u=(-((long) (width-i)/2)); u <= (long) ((width-i)/2); u++)
+ for (u=(-j); u <= j; u++)
{
- alpha=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma));
- kernel[i][j]=(double) (alpha/(2.0*MagickPI*MagickSigma*MagickSigma));
- j++;
+ kernel[i][k]=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma))/
+ (2.0*MagickPI*MagickSigma*MagickSigma);
+ normalize+=kernel[i][k];
+ k++;
}
}
- normalize=0.0;
- for (j=0; j < (long) ((width-i)*(width-i)); j++)
- normalize+=kernel[i][j];
if (fabs(normalize) <= MagickEpsilon)
normalize=1.0;
normalize=1.0/normalize;
- for (j=0; j < (long) ((width-i)*(width-i)); j++)
- kernel[i][j]=(double) (normalize*kernel[i][j]);
+ for (k=0; k < (j*j); k++)
+ kernel[i][k]=normalize*kernel[i][k];
}
if (i < (long) width)
{
@@ -459,7 +457,8 @@
#define MagickSigma (fabs(sigma) <= MagickEpsilon ? 1.0 : sigma)
double
- **kernel;
+ **kernel,
+ normalize;
Image
*sharp_image,
@@ -468,7 +467,10 @@
long
j,
+ k,
progress,
+ u,
+ v,
y;
MagickBooleanType
@@ -477,14 +479,8 @@
MagickPixelPacket
bias;
- MagickRealType
- alpha,
- normalize;
-
register long
- i,
- u,
- v;
+ i;
unsigned long
width;
@@ -546,24 +542,24 @@
sizeof(**kernel));
if (kernel[i] == (double *) NULL)
break;
- j=0;
- for (v=(-((long) (width-i)/2)); v <= (long) ((width-i)/2); v++)
+ normalize=0.0;
+ j=(long) (width-i)/2;
+ k=0;
+ for (v=(-j); v <= j; v++)
{
- for (u=(-((long) (width-i)/2)); u <= (long) ((width-i)/2); u++)
+ for (u=(-j); u <= j; u++)
{
- alpha=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma));
- kernel[i][j]=(double) (-alpha/(2.0*MagickPI*MagickSigma*MagickSigma));
- j++;
+ kernel[i][k]=(-exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma))/
+ (2.0*MagickPI*MagickSigma*MagickSigma));
+ normalize+=kernel[i][k];
+ k++;
}
}
- normalize=0.0;
- for (j=0; j < (long) ((width-i)*(width-i)); j++)
- normalize+=kernel[i][j];
if (fabs(normalize) <= MagickEpsilon)
normalize=1.0;
normalize=1.0/normalize;
- for (j=0; j < (long) ((width-i)*(width-i)); j++)
- kernel[i][j]=(double) (normalize*kernel[i][j]);
+ for (k=0; k < (j*j); k++)
+ kernel[i][k]=normalize*kernel[i][k];
}
if (i < (long) width)
{
@@ -769,19 +765,15 @@
return(blur_image);
}
-static double *GetBlurKernel(unsigned long width,const MagickRealType sigma)
+static double *GetBlurKernel(const unsigned long width,const double sigma)
{
-#define KernelRank 3
-
double
- *kernel;
+ *kernel,
+ normalize;
long
- bias;
-
- MagickRealType
- alpha,
- normalize;
+ j,
+ k;
register long
i;
@@ -793,17 +785,16 @@
kernel=(double *) AcquireQuantumMemory((size_t) width,sizeof(*kernel));
if (kernel == (double *) NULL)
return(0);
- (void) ResetMagickMemory(kernel,0,(size_t) width*sizeof(*kernel));
- bias=KernelRank*(long) width/2;
- for (i=(-bias); i <= bias; i++)
- {
- alpha=exp((-((double) (i*i))/(double) (2.0*KernelRank*KernelRank*
- MagickSigma*MagickSigma)));
- kernel[(i+bias)/KernelRank]+=(double) (alpha/(MagickSQ2PI*sigma));
- }
normalize=0.0;
- for (i=0; i < (long) width; i++)
+ j=(long) width/2;
+ i=0;
+ for (k=(-j); k <= j; k++)
+ {
+ kernel[i]=exp(-((double) k*k)/(double) (2.0*MagickSigma*MagickSigma))/
+ (MagickSQ2PI*MagickSigma);
normalize+=kernel[i];
+ i++;
+ }
for (i=0; i < (long) width; i++)
kernel[i]/=normalize;
return(kernel);
@@ -1387,7 +1378,7 @@
(void) ConcatenateString(&message,format);
for (u=0; u < (long) width; u++)
{
- (void) FormatMagickString(format,MaxTextExtent,"%+f ",*k++);
+ (void) FormatMagickString(format,MaxTextExtent,"%g ",*k++);
(void) ConcatenateString(&message,format);
}
(void) LogMagickEvent(TransformEvent,GetMagickModule(),"%s",message);
@@ -2077,16 +2068,14 @@
*emboss_image;
long
- j;
-
- MagickRealType
- alpha;
-
- register long
- i,
+ j,
+ k,
u,
v;
+ register long
+ i;
+
unsigned long
width;
@@ -2100,20 +2089,21 @@
kernel=(double *) AcquireQuantumMemory((size_t) width,width*sizeof(*kernel));
if (kernel == (double *) NULL)
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
- i=0;
j=(long) width/2;
- for (v=(-((long) width/2)); v <= (long) (width/2); v++)
+ k=j;
+ i=0;
+ for (v=(-j); v <= j; v++)
{
- for (u=(-((long) width/2)); u <= (long) (width/2); u++)
+ for (u=(-j); u <= j; u++)
{
- alpha=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma));
- kernel[i]=(double) (((u < 0) || (v < 0) ? -8.0 : 8.0)*alpha/
- (2.0*MagickPI*MagickSigma*MagickSigma));
- if (u != j)
+ kernel[i]=((u < 0) || (v < 0) ? -8.0 : 8.0)*
+ exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma))/
+ (2.0*MagickPI*MagickSigma*MagickSigma);
+ if (u != k)
kernel[i]=0.0;
i++;
}
- j--;
+ k--;
}
emboss_image=ConvolveImage(image,width,kernel,exception);
if (emboss_image != (Image *) NULL)
@@ -2182,14 +2172,14 @@
Image
*blur_image;
- MagickRealType
- alpha;
-
- register long
- i,
+ long
+ j,
u,
v;
+ register long
+ i;
+
unsigned long
width;
@@ -2203,15 +2193,13 @@
kernel=(double *) AcquireQuantumMemory((size_t) width,width*sizeof(*kernel));
if (kernel == (double *) NULL)
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
+ j=(long) width/2;
i=0;
- for (v=(-((long) width/2)); v <= (long) (width/2); v++)
+ for (v=(-j); v <= j; v++)
{
- for (u=(-((long) width/2)); u <= (long) (width/2); u++)
- {
- alpha=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma));
- kernel[i]=(double) (alpha/(2.0*MagickPI*MagickSigma*MagickSigma));
- i++;
- }
+ for (u=(-j); u <= j; u++)
+ kernel[i++]=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma))/
+ (2.0*MagickPI*MagickSigma*MagickSigma);
}
blur_image=ConvolveImageChannel(image,channel,width,kernel,exception);
kernel=(double *) RelinquishMagickMemory(kernel);
@@ -2734,42 +2722,29 @@
%
*/
-static double *GetMotionBlurKernel(unsigned long width,
- const MagickRealType sigma)
+static double *GetMotionBlurKernel(const unsigned long width,const double sigma)
{
-#define KernelRank 3
-
double
- *kernel;
-
- long
- bias;
-
- MagickRealType
- alpha,
+ *kernel,
normalize;
register long
i;
/*
- Generate a 1-D convolution kernel.
+ Generate a 1-D convolution kernel.
*/
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
kernel=(double *) AcquireQuantumMemory((size_t) width,sizeof(*kernel));
if (kernel == (double *) NULL)
return(kernel);
- (void) ResetMagickMemory(kernel,0,(size_t) width*sizeof(*kernel));
- bias=(long) (KernelRank*width);
- for (i=0; i < (long) bias; i++)
- {
- alpha=exp((-((double) (i*i))/(double) (2.0*KernelRank*KernelRank*
- MagickSigma*MagickSigma)));
- kernel[i/KernelRank]+=(double) alpha/(MagickSQ2PI*sigma);
- }
normalize=0.0;
for (i=0; i < (long) width; i++)
+ {
+ kernel[i]=exp((-((double) i*i)/(double) (2.0*MagickSigma*MagickSigma)))/
+ (MagickSQ2PI*MagickSigma);
normalize+=kernel[i];
+ }
for (i=0; i < (long) width; i++)
kernel[i]/=normalize;
return(kernel);
@@ -4113,15 +4088,20 @@
{
#define SelectiveBlurImageTag "SelectiveBlur/Image"
+ CacheView
+ *blur_view,
+ *image_view;
+
double
- alpha,
*kernel;
Image
*blur_image;
long
+ j,
progress,
+ u,
v,
y;
@@ -4132,16 +4112,11 @@
bias;
register long
- i,
- u;
+ i;
unsigned long
width;
- CacheView
- *blur_view,
- *image_view;
-
/*
Initialize blur image attributes.
*/
@@ -4155,15 +4130,13 @@
kernel=(double *) AcquireQuantumMemory((size_t) width,width*sizeof(*kernel));
if (kernel == (double *) NULL)
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
+ j=(long) width/2;
i=0;
- for (v=(-((long) width/2)); v <= (long) (width/2); v++)
+ for (v=(-j); v <= j; v++)
{
- for (u=(-((long) width/2)); u <= (long) (width/2); u++)
- {
- alpha=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma));
- kernel[i]=(double) (alpha/(2.0*MagickPI*MagickSigma*MagickSigma));
- i++;
- }
+ for (u=(-j); u <= j; u++)
+ kernel[i++]=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma))/
+ (2.0*MagickPI*MagickSigma*MagickSigma);
}
if (image->debug != MagickFalse)
{
@@ -4715,20 +4688,20 @@
ExceptionInfo *exception)
{
double
- *kernel;
+ *kernel,
+ normalize;
Image
*sharp_image;
- MagickRealType
- alpha,
- normalize;
-
- register long
- i,
+ long
+ j,
u,
v;
+ register long
+ i;
+
unsigned long
width;
@@ -4742,14 +4715,15 @@
kernel=(double *) AcquireQuantumMemory((size_t) width*width,sizeof(*kernel));
if (kernel == (double *) NULL)
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
- i=0;
normalize=0.0;
- for (v=(-((long) width/2)); v <= (long) (width/2); v++)
+ j=(long) width/2;
+ i=0;
+ for (v=(-j); v <= j; v++)
{
- for (u=(-((long) width/2)); u <= (long) (width/2); u++)
+ for (u=(-j); u <= j; u++)
{
- alpha=exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma));
- kernel[i]=(double) (-alpha/(2.0*MagickPI*MagickSigma*MagickSigma));
+ kernel[i]=(-exp(-((double) u*u+v*v)/(2.0*MagickSigma*MagickSigma))/
+ (2.0*MagickPI*MagickSigma*MagickSigma));
normalize+=kernel[i];
i++;
}