Changeset 2719


Ignore:
Timestamp:
08/14/08 20:35:07 (5 years ago)
Author:
sam
Message:
  • blur.c: improve the Gaussian kernel generation by interpolating its values in a quincunx pattern.
File:
1 edited

Legend:

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

    r2715 r2719  
    7272        for(i = -krx; i <= krx; i++) 
    7373        { 
    74             double u = (double)i * cost - (double)j * sint + dx; 
    75             double v = (double)j * cost + (double)i * sint + dy; 
    76             double ex = Kx * u * u; 
    77             double ey = Ky * v * v; 
    78             double d = exp(ex + ey); 
     74            static double const samples[] = 
     75            { 
     76                -.50, -.50, 0.5, 
     77                 .50, -.50, 0.5, 
     78                 .0,  .0, 1, 
     79                -.50,  .50, 0.5, 
     80                 .50,  .50, 0.5 
     81            }; 
     82            double u, v, ex, ey, d = 0.; 
     83            int k; 
     84 
     85            for(k = 0; k < 5; k++) 
     86            { 
     87                u = ((double)i + samples[k * 3]) * cost 
     88                     - ((double)j + samples[k * 3 + 1]) * sint + dx; 
     89                v = ((double)i + samples[k * 3]) * sint 
     90                     + ((double)j + samples[k * 3 + 1]) * cost + dy; 
     91                ex = Kx * u * u; 
     92                ey = Ky * v * v; 
     93                d += samples[k * 3 + 2] * exp(ex + ey); 
     94            } 
    7995 
    8096            kernel[(j + kry) * m + i + krx] = d; 
Note: See TracChangeset for help on using the changeset viewer.