[Pixman] [PATCH v13 10/14] pixman-filter: Gaussian fixes
spitzak at gmail.com
spitzak at gmail.com
Wed Feb 10 07:25:28 CET 2016
From: Bill Spitzak <spitzak at gmail.com>
The SIGMA term drops out on simplification.
Expanded the size slightly (from ~4.25 to 5) to make the cutoff less noticable.
Previouly the value at the cutoff was gaussian_filter(sqrt(2)*3/2) = 0.00626
which is larger than the difference between 8-bit pixels (1/255 = 0.003921).
New cutoff is gaussian_filter(2.5) = 0.001089 which is smaller.
v11: added some math to commit message
Signed-off-by: Bill Spitzak <spitzak at gmail.com>
Acked-by: Oded Gabbay <oded.gabbay at gmail.com>
---
pixman/pixman-filter.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c
index e5ef8e6..56e25b1 100644
--- a/pixman/pixman-filter.c
+++ b/pixman/pixman-filter.c
@@ -63,10 +63,7 @@ linear_kernel (double x)
static double
gaussian_kernel (double x)
{
-#define SQRT2 (1.4142135623730950488016887242096980785696718753769480)
-#define SIGMA (SQRT2 / 2.0)
-
- return exp (- x * x / (2 * SIGMA * SIGMA)) / (SIGMA * sqrt (2.0 * M_PI));
+ return exp (- x * x) / sqrt (M_PI);
}
static double
@@ -143,7 +140,7 @@ static const filter_info_t filters[] =
{ PIXMAN_KERNEL_BOX, box_kernel, 1.0 },
{ PIXMAN_KERNEL_LINEAR, linear_kernel, 2.0 },
{ PIXMAN_KERNEL_CUBIC, cubic_kernel, 4.0 },
- { PIXMAN_KERNEL_GAUSSIAN, gaussian_kernel, 6 * SIGMA },
+ { PIXMAN_KERNEL_GAUSSIAN, gaussian_kernel, 5.0 },
{ PIXMAN_KERNEL_LANCZOS2, lanczos2_kernel, 4.0 },
{ PIXMAN_KERNEL_LANCZOS3, lanczos3_kernel, 6.0 },
{ PIXMAN_KERNEL_LANCZOS3_STRETCHED, nice_kernel, 8.0 },
--
1.9.1
More information about the Pixman
mailing list