source: OpenCLIterative3DDeconvolution/src/publication/sobel.cl @ 6963

Revision 6963, 853 bytes checked in by rlentz, 9 years ago (diff)
Line 
1#pragma OPENCL EXTENSION cl_khr_fp64: enable
2__kernel void sobel( __global float* input,
3        __global float* output,
4     int width,
5     int height )
6
7    int x = get_global_id(0);
8    int y = get_global_id(1);
9    float p0, p1, p2, p3, p5, p6, p7, p8 = 0;
10    int offset = y * width + x;
11   
12        if( x < 1 || y < 1 || x > width - 2 || y > height - 2 )
13        {
14          output[offset] = 0;
15        }
16        else
17        {
18            p0 = input[offset - width - 1] ;
19            p1 = input[offset - width] ;
20            p2 = input[offset - width + 1] ;
21            p3 = input[offset - 1] ;
22            p5 = input[offset + 1] ;
23            p6 = input[offset + width - 1] ;
24            p7 = input[offset + width] ;
25            p8 = input[offset + width + 1] ;
26       
27            double sum1 = p0 + 2*p1 + p2 - p6 - 2*p7 - p8;  //GY
28            double sum2 = p0 + 2*p3 + p6 - p2 - 2*p5 - p8;  //GX
29           
30            output[offset] = sqrt(  sum1*sum1 + sum2*sum2 );
31        }
32}
Note: See TracBrowser for help on using the repository browser.