O(1) trivially. git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2681 92316355-f0b4-4df1-b90c-862c8a59935fremotes/tiles
@@ -85,3 +85,27 @@ pipi_image_t *pipi_gaussian_blur_ext(pipi_image_t *src, float rx, float ry, | |||||
return ret; | return ret; | ||||
} | } | ||||
/* FIXME: box blur would be incredibly faster using an accumulator instead | |||||
* of a convolution filter... */ | |||||
pipi_image_t *pipi_box_blur(pipi_image_t *src, int size) | |||||
{ | |||||
return pipi_box_blur_ext(src, size, size); | |||||
} | |||||
pipi_image_t *pipi_box_blur_ext(pipi_image_t *src, int m, int n) | |||||
{ | |||||
pipi_image_t *ret; | |||||
double *kernel; | |||||
int i; | |||||
kernel = malloc(m * n * sizeof(double)); | |||||
for(i = 0; i < m * n; i++) | |||||
kernel[i] = 1. / (m * n); | |||||
ret = pipi_convolution(src, m, n, kernel); | |||||
free(kernel); | |||||
return ret; | |||||
} | |||||
@@ -81,6 +81,8 @@ extern pipi_image_t *pipi_convolution(pipi_image_t *, int, int, double[]); | |||||
extern pipi_image_t *pipi_gaussian_blur(pipi_image_t *, float); | extern pipi_image_t *pipi_gaussian_blur(pipi_image_t *, float); | ||||
extern pipi_image_t *pipi_gaussian_blur_ext(pipi_image_t *, | extern pipi_image_t *pipi_gaussian_blur_ext(pipi_image_t *, | ||||
float, float, float, float); | float, float, float, float); | ||||
extern pipi_image_t *pipi_box_blur(pipi_image_t *, int); | |||||
extern pipi_image_t *pipi_box_blur_ext(pipi_image_t *, int, int); | |||||
extern pipi_image_t *pipi_autocontrast(pipi_image_t *); | extern pipi_image_t *pipi_autocontrast(pipi_image_t *); | ||||
extern int pipi_flood_fill(pipi_image_t *, | extern int pipi_flood_fill(pipi_image_t *, | ||||