Ignore:
Timestamp:
08/01/08 00:02:30 (5 years ago)
Author:
sam
Message:
  • filter/blur.c: avoid annoying side effects with very small or negative blur radii.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi/filter/blur.c

    r2618 r2619  
    2828#include "pipi_internals.h" 
    2929 
     30/* Any standard deviation below this value will be rounded up, in order 
     31 * to avoid ridiculously low values. exp(-1/(2*0.2*0.2)) is < 10^-5 so 
     32 * there is little chance that any value below 0.2 will be useful. */ 
     33#define BLUR_EPSILON 0.2 
     34 
    3035pipi_image_t *pipi_gaussian_blur(pipi_image_t *src, float radius) 
    3136{ 
     
    4348    int x, y, i, w, h, kr, kw; 
    4449 
     50    if(rx < BLUR_EPSILON) rx = BLUR_EPSILON; 
     51    if(ry < BLUR_EPSILON) ry = BLUR_EPSILON; 
     52 
    4553    w = src->w; 
    4654    h = src->h; 
     
    5563    buffer = malloc(w * h * 4 * sizeof(double)); 
    5664 
    57     kr = (int)(3. * rx + 0.99999); 
     65    kr = (int)(3. * rx + 1.99999); 
    5866    kw = 2 * kr + 1; 
    5967    K = -1. / (2. * rx * rx); 
     
    92100    free(kernel); 
    93101 
    94     kr = (int)(3. * ry + 0.99999); 
     102    kr = (int)(3. * ry + 1.99999); 
    95103    kw = 2 * kr + 1; 
    96104    K = -1. / (2. * ry * ry); 
Note: See TracChangeset for help on using the changeset viewer.