% October 1996 %
% %
% %
-% Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
*edge_view,
*image_view;
+ double
+ normalize;
+
Image
*blur_image,
*edge_image,
progress;
MagickRealType
- **kernel,
- normalize;
+ **kernel;
register ssize_t
i;
}
if (fabs(normalize) < MagickEpsilon)
normalize=MagickEpsilon;
- normalize=MagickEpsilonReciprocal(normalize);
+ normalize=PerceptibleReciprocal(normalize);
for (k=0; k < (j*j); k++)
kernel[i][k]=normalize*kernel[i][k];
}
ssize_t
v;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- blur_traits=GetPixelChannelMapTraits(blur_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ blur_traits=GetPixelChannelTraits(blur_image,channel);
if ((traits == UndefinedPixelTrait) ||
(blur_traits == UndefinedPixelTrait))
continue;
pixels+=GetPixelChannels(image);
}
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
continue;
}
pixels+=GetPixelChannels(image);
}
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
}
q+=GetPixelChannels(blur_image);
*edge_view,
*image_view;
+ double
+ normalize;
+
Image
*sharp_image,
*edge_image,
progress;
MagickRealType
- **kernel,
- normalize;
+ **kernel;
register ssize_t
i;
{
kernel[i]=(MagickRealType *) MagickAssumeAligned(AcquireAlignedMemory(
(size_t) (width-i),(width-i)*sizeof(**kernel)));
- if (kernel[i] == (double *) NULL)
+ if (kernel[i] == (MagickRealType *) NULL)
break;
normalize=0.0;
j=(ssize_t) (width-i)/2;
}
if (fabs(normalize) < MagickEpsilon)
normalize=MagickEpsilon;
- normalize=MagickEpsilonReciprocal(normalize);
+ normalize=PerceptibleReciprocal(normalize);
for (k=0; k < (j*j); k++)
kernel[i][k]=normalize*kernel[i][k];
}
ssize_t
v;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- sharp_traits=GetPixelChannelMapTraits(sharp_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ sharp_traits=GetPixelChannelTraits(sharp_image,channel);
if ((traits == UndefinedPixelTrait) ||
(sharp_traits == UndefinedPixelTrait))
continue;
pixels+=GetPixelChannels(image);
}
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(sharp_image,channel,ClampToQuantum(gamma*pixel),q);
continue;
}
pixels+=GetPixelChannels(image);
}
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(sharp_image,channel,ClampToQuantum(gamma*pixel),q);
}
q+=GetPixelChannels(sharp_image);
static MagickRealType *GetBlurKernel(const size_t width,const double sigma)
{
- MagickRealType
- *kernel,
+ double
normalize;
+ MagickRealType
+ *kernel;
+
register ssize_t
i;
register ssize_t
u;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- blur_traits=GetPixelChannelMapTraits(blur_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ blur_traits=GetPixelChannelTraits(blur_image,channel);
if ((traits == UndefinedPixelTrait) ||
(blur_traits == UndefinedPixelTrait))
continue;
k++;
pixels+=GetPixelChannels(image);
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
}
p+=GetPixelChannels(image);
register ssize_t
u;
- channel=GetPixelChannelMapChannel(blur_image,i);
- traits=GetPixelChannelMapTraits(blur_image,channel);
- blur_traits=GetPixelChannelMapTraits(blur_image,channel);
+ channel=GetPixelChannelChannel(blur_image,i);
+ traits=GetPixelChannelTraits(blur_image,channel);
+ blur_traits=GetPixelChannelTraits(blur_image,channel);
if ((traits == UndefinedPixelTrait) ||
(blur_traits == UndefinedPixelTrait))
continue;
k++;
pixels+=GetPixelChannels(blur_image);
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
}
p+=GetPixelChannels(blur_image);
#endif
for (y=0; y < (ssize_t) rows; y++)
{
+ MagickRealType
+ v;
+
register ssize_t
i,
x;
- SignedQuantum
- v;
-
i=(2*y+1)+y*columns;
if (polarity > 0)
for (x=0; x < (ssize_t) columns; x++)
{
- v=(SignedQuantum) p[i];
- if ((SignedQuantum) r[i] >= (v+ScaleCharToQuantum(2)))
+ v=(MagickRealType) p[i];
+ if ((MagickRealType) r[i] >= (v+ScaleCharToQuantum(2)))
v+=ScaleCharToQuantum(1);
q[i]=(Quantum) v;
i++;
else
for (x=0; x < (ssize_t) columns; x++)
{
- v=(SignedQuantum) p[i];
- if ((SignedQuantum) r[i] <= (v-ScaleCharToQuantum(2)))
+ v=(MagickRealType) p[i];
+ if ((MagickRealType) r[i] <= (v-ScaleCharToQuantum(2)))
v-=ScaleCharToQuantum(1);
q[i]=(Quantum) v;
i++;
i,
x;
- SignedQuantum
+ MagickRealType
v;
i=(2*y+1)+y*columns;
if (polarity > 0)
for (x=0; x < (ssize_t) columns; x++)
{
- v=(SignedQuantum) q[i];
- if (((SignedQuantum) s[i] >= (v+ScaleCharToQuantum(2))) &&
- ((SignedQuantum) r[i] > v))
+ v=(MagickRealType) q[i];
+ if (((MagickRealType) s[i] >= (v+ScaleCharToQuantum(2))) &&
+ ((MagickRealType) r[i] > v))
v+=ScaleCharToQuantum(1);
p[i]=(Quantum) v;
i++;
else
for (x=0; x < (ssize_t) columns; x++)
{
- v=(SignedQuantum) q[i];
- if (((SignedQuantum) s[i] <= (v-ScaleCharToQuantum(2))) &&
- ((SignedQuantum) r[i] < v))
+ v=(MagickRealType) q[i];
+ if (((MagickRealType) s[i] <= (v-ScaleCharToQuantum(2))) &&
+ ((MagickRealType) r[i] < v))
v-=ScaleCharToQuantum(1);
p[i]=(Quantum) v;
i++;
if (status == MagickFalse)
continue;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- despeckle_traits=GetPixelChannelMapTraits(despeckle_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ despeckle_traits=GetPixelChannelTraits(despeckle_image,channel);
if ((traits == UndefinedPixelTrait) ||
(despeckle_traits == UndefinedPixelTrait))
continue;
}
kernel_info->values[i/2]=(MagickRealType) (width*width-1.0);
edge_image=ConvolveImage(image,kernel_info,exception);
- if (edge_image != (Image *) NULL)
- (void) ClampImage(edge_image,exception);
kernel_info=DestroyKernelInfo(kernel_info);
return(edge_image);
}
register ssize_t
j;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- blur_traits=GetPixelChannelMapTraits(blur_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ blur_traits=GetPixelChannelTraits(blur_image,channel);
if ((traits == UndefinedPixelTrait) ||
(blur_traits == UndefinedPixelTrait))
continue;
gamma+=(*k)*alpha;
k++;
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
}
p+=GetPixelChannels(image);
register ssize_t
j;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- blur_traits=GetPixelChannelMapTraits(blur_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ blur_traits=GetPixelChannelTraits(blur_image,channel);
if ((traits == UndefinedPixelTrait) ||
(blur_traits == UndefinedPixelTrait))
continue;
pixel+=r[i];
gamma++;
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
continue;
}
pixel+=GetPixelAlpha(image,r)*r[i];
gamma+=GetPixelAlpha(image,r);
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
}
p+=GetPixelChannels(image);
image_view=AcquireVirtualCacheView(image,exception);
luminance_view=AcquireVirtualCacheView(luminance_image,exception);
blur_view=AcquireAuthenticCacheView(blur_image,exception);
-#if defined(MMAGICKCORE_OPENMP_SUPPORT)
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(static,4) shared(progress,status) \
dynamic_number_threads(image,image->columns,image->rows,1)
#endif
ssize_t
v;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- blur_traits=GetPixelChannelMapTraits(blur_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ blur_traits=GetPixelChannelTraits(blur_image,channel);
if ((traits == UndefinedPixelTrait) ||
(blur_traits == UndefinedPixelTrait))
continue;
SetPixelChannel(blur_image,channel,p[center+i],q);
continue;
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
continue;
}
SetPixelChannel(blur_image,channel,p[center+i],q);
continue;
}
- gamma=MagickEpsilonReciprocal(gamma);
+ gamma=PerceptibleReciprocal(gamma);
SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
}
p+=GetPixelChannels(image);
shade_traits,
traits;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- shade_traits=GetPixelChannelMapTraits(shade_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ shade_traits=GetPixelChannelTraits(shade_image,channel);
if ((traits == UndefinedPixelTrait) ||
(shade_traits == UndefinedPixelTrait))
continue;
}
kernel_info->values[i/2]=(double) ((-2.0)*normalize);
sharp_image=ConvolveImage(image,kernel_info,exception);
- if (sharp_image != (Image *) NULL)
- (void) ClampImage(sharp_image,exception);
kernel_info=DestroyKernelInfo(kernel_info);
return(sharp_image);
}
ssize_t
y;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
unsigned long
key;
+#endif
/*
Initialize spread image attributes.
progress=0;
width=GetOptimalKernelWidth1D(radius,0.5);
random_info=AcquireRandomInfoThreadSet();
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
key=GetRandomSecretKey(random_info[0]);
+#endif
image_view=AcquireVirtualCacheView(image,exception);
spread_view=AcquireAuthenticCacheView(spread_image,exception);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
traits,
unsharp_traits;
- channel=GetPixelChannelMapChannel(image,i);
- traits=GetPixelChannelMapTraits(image,channel);
- unsharp_traits=GetPixelChannelMapTraits(unsharp_image,channel);
+ channel=GetPixelChannelChannel(image,i);
+ traits=GetPixelChannelTraits(image,channel);
+ unsharp_traits=GetPixelChannelTraits(unsharp_image,channel);
if ((traits == UndefinedPixelTrait) ||
(unsharp_traits == UndefinedPixelTrait))
continue;
}
unsharp_image->type=image->type;
unsharp_view=DestroyCacheView(unsharp_view);
- if (unsharp_image != (Image *) NULL)
- (void) ClampImage(unsharp_image,exception);
image_view=DestroyCacheView(image_view);
if (status == MagickFalse)
unsharp_image=DestroyImage(unsharp_image);