move ImagingGaussianBlur to BoxBlur.c

This commit is contained in:
homm 2014-10-25 17:17:53 +04:00
parent 274f0a14ba
commit 4323683a63
2 changed files with 19 additions and 18 deletions

View File

@ -285,3 +285,22 @@ ImagingBoxBlur(Imaging imOut, Imaging imIn, float radius, int n)
return imOut;
}
Imaging ImagingGaussianBlur(Imaging imOut, Imaging imIn, float radius,
int passes)
{
float sigma2, L, l, a;
sigma2 = radius * radius / passes;
// from http://www.mia.uni-saarland.de/Publications/gwosdek-ssvm11.pdf
// [7] Box length.
L = sqrt(12.0 * sigma2 + 1.0);
// [11] Integer part of box radius.
l = floor((L - 1.0) / 2.0);
// [14], [Fig. 2] Fractional part of box radius.
a = (2 * l + 1) * (l * (l + 1) - 3 * sigma2);
a /= 6 * (sigma2 - (l + 1) * (l + 1));
return ImagingBoxBlur(imOut, imIn, l + a, passes);
}

View File

@ -19,24 +19,6 @@ static inline UINT8 clip(double in)
return (UINT8) (in + 0.5);
}
Imaging ImagingGaussianBlur(Imaging imOut, Imaging imIn, float radius,
int passes)
{
float sigma2, L, l, a;
sigma2 = radius * radius / passes;
// from http://www.mia.uni-saarland.de/Publications/gwosdek-ssvm11.pdf
// [7] Box length.
L = sqrt(12.0 * sigma2 + 1.0);
// [11] Integer part of box radius.
l = floor((L - 1.0) / 2.0);
// [14], [Fig. 2] Fractional part of box radius.
a = (2 * l + 1) * (l * (l + 1) - 3 * sigma2);
a /= 6 * (sigma2 - (l + 1) * (l + 1));
return ImagingBoxBlur(imOut, imIn, l + a, passes);
}
Imaging
ImagingUnsharpMask(Imaging imOut, Imaging imIn, float radius, int percent,