From 7118edf0993ccec017e96e2172e6ac672d3e24cd Mon Sep 17 00:00:00 2001 From: cristy Date: Sat, 8 Oct 2011 13:33:25 +0000 Subject: [PATCH] --- MagickCore/draw.c | 3 ++- MagickCore/gem.c | 55 ++++++++++++++++++++++------------------------- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/MagickCore/draw.c b/MagickCore/draw.c index 135625a7d..b22152da6 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -2601,7 +2601,8 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info, linejoin; GetMagickToken(q,&q,token); - linejoin=ParseCommandOption(MagickLineJoinOptions,MagickFalse,token); + linejoin=ParseCommandOption(MagickLineJoinOptions,MagickFalse, + token); if (linejoin == -1) status=MagickFalse; else diff --git a/MagickCore/gem.c b/MagickCore/gem.c index f8cc39512..d20d4c0fb 100644 --- a/MagickCore/gem.c +++ b/MagickCore/gem.c @@ -607,14 +607,13 @@ MagickExport double ExpandAffine(const AffineMatrix *affine) MagickPrivate double GenerateDifferentialNoise(RandomInfo *random_info, const Quantum pixel,const NoiseType noise_type,const double attenuate) { -#define NoiseEpsilon (attenuate*1.0e-5) -#define SigmaUniform (attenuate*4.0) -#define SigmaGaussian (attenuate*4.0) -#define SigmaImpulse (attenuate*0.10) -#define SigmaLaplacian (attenuate*10.0) -#define SigmaMultiplicativeGaussian (attenuate*1.0) -#define SigmaPoisson (attenuate*0.05) -#define TauGaussian (attenuate*20.0) +#define SigmaUniform (attenuate*0.015625) +#define SigmaGaussian (attenuate*0.015625) +#define SigmaImpulse (attenuate*0.1) +#define SigmaLaplacian (attenuate*0.0390625) +#define SigmaMultiplicativeGaussian (attenuate*0.5) +#define SigmaPoisson (attenuate*0.05/0.0001953125) +#define TauGaussian (attenuate*0.078125) double alpha, @@ -623,13 +622,12 @@ MagickPrivate double GenerateDifferentialNoise(RandomInfo *random_info, sigma; alpha=GetPseudoRandomValue(random_info); - alpha=1.0; switch (noise_type) { case UniformNoise: default: { - noise=(double) pixel+QuantumRange*SigmaUniform*(alpha-0.5)/255.0; + noise=(double) pixel+QuantumRange*SigmaUniform*(alpha-0.5); break; } case GaussianNoise: @@ -644,18 +642,8 @@ MagickPrivate double GenerateDifferentialNoise(RandomInfo *random_info, gamma=sqrt(-2.0*log(alpha)); sigma=gamma*cos((double) (2.0*MagickPI*beta)); tau=gamma*sin((double) (2.0*MagickPI*beta)); - noise=(double) pixel+sqrt((double) pixel)*SigmaGaussian*sigma/255.0+ - QuantumRange*TauGaussian*tau/255.0; - break; - } - case MultiplicativeGaussianNoise: - { - sigma=1.0; - if (alpha > NoiseEpsilon) - sigma=sqrt(-2.0*log(alpha)); - beta=GetPseudoRandomValue(random_info); - noise=(double) pixel+pixel*SigmaMultiplicativeGaussian*sigma* - cos((double) (2.0*MagickPI*beta))/2.0/255.0; + noise=(double) pixel+sqrt((double) pixel)*SigmaGaussian*sigma+ + QuantumRange*TauGaussian*tau; break; } case ImpulseNoise: @@ -673,19 +661,28 @@ MagickPrivate double GenerateDifferentialNoise(RandomInfo *random_info, { if (alpha <= 0.5) { - if (alpha <= NoiseEpsilon) + if (alpha <= MagickEpsilon) noise=(double) pixel-(double) QuantumRange; else noise=(double) pixel+QuantumRange*SigmaLaplacian* - log(2.0*alpha)/255.0+0.5; + log(2.0*alpha)+0.5; break; } beta=1.0-alpha; - if (beta <= (0.5*NoiseEpsilon)) + if (beta <= (0.5*MagickEpsilon)) noise=(double) (pixel+QuantumRange); else - noise=(double) pixel-QuantumRange*SigmaLaplacian*log(2.0*beta)/255.0+ - 0.5; + noise=(double) pixel-QuantumRange*SigmaLaplacian*log(2.0*beta)+0.5; + break; + } + case MultiplicativeGaussianNoise: + { + sigma=1.0; + if (alpha > MagickEpsilon) + sigma=sqrt(-2.0*log(alpha)); + beta=GetPseudoRandomValue(random_info); + noise=(double) pixel+pixel*SigmaMultiplicativeGaussian*sigma* + cos((double) (2.0*MagickPI*beta))/2.0; break; } case PoissonNoise: @@ -696,13 +693,13 @@ MagickPrivate double GenerateDifferentialNoise(RandomInfo *random_info, register ssize_t i; - poisson=exp(-SigmaPoisson*255.0*QuantumScale*pixel); + poisson=exp(-SigmaPoisson*QuantumScale*pixel); for (i=0; alpha > poisson; i++) { beta=GetPseudoRandomValue(random_info); alpha*=beta; } - noise=(double) QuantumRange*i/SigmaPoisson/255.0; + noise=(double) QuantumRange*i/SigmaPoisson; break; } case RandomNoise: -- 2.40.0