root/snippet/gaussian_blur/image.c

Revision 83, 0.8 KB (checked in by aqua, 3 years ago)

import

Line 
1#include <math.h>
2
3#include "image.h"
4
5uchar get_pixel( uchar* src, int x, int y, int width, int height  ){
6
7#ifdef ZERO_PADDING
8        if( x < 0 || x >= width || y < 0 || y >= height )
9                return 0;
10        else 
11                return src[y*width+x];
12#else
13        if( x < 0 )
14                x = 0;
15        else if( x >= width )
16                x = width-1;
17
18        if( y < 0 )
19                y = 0;
20        else if( y >= height )
21                y = height-1;
22
23        return src[y*width+x];
24#endif
25
26}
27
28uchar clip( double pixel ){
29
30        pixel = floor( pixel+0.5 );
31       
32        if( pixel >= 255 )
33                return 255;
34       
35        else if( pixel < 0 )
36                return 0;
37       
38        else
39                return (unsigned char)pixel;
40       
41}
42
43void difference( uchar* dst, uchar* s1, uchar* s2, int width, int height ){
44
45        int i, j;
46        int diff;
47       
48        for( j = 0 ; j < height ; j++ ){
49                for( i = 0 ; i < width ; i++ ){
50                        if( (diff = s1[j*width+i] - s2[j*width+i]) < 0 )
51                                diff = -diff;
52                       
53                        dst[j*width+i] = diff;
54                }
55        }
56}
Note: See TracBrowser for help on using the browser.