]> AND Private Git Repository - book_gpu.git/blob - BookGPU/Chapters/chapter3/code/medianGeneric.cu
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
last version
[book_gpu.git] / BookGPU / Chapters / chapter3 / code / medianGeneric.cu
1 __global__ void kernel_medianR( short *output,
2                                 int i_dim, int j_dim, int r)
3 {   
4   // absolute coordinates of the center pixel
5   int j = __mul24(blockIdx.x,blockDim.x) + threadIdx.x ; 
6   int i = __mul24(blockIdx.y,blockDim.y) + threadIdx.y ;
7   
8   short cpt, ic, jc ;
9   short histogram[256] ; // 8 bit image    
10   // zeroing histogram data
11   for (ic =0; ic<256; ic++) histogram[ ic ]=0 ; 
12   // histogram filling
13   for(ic=i-r; ic<=i+r; ic++ )
14         for(jc=j-r; jc<=j+r; jc++)
15           histogram[ tex2D(tex_img_ins, jc, ic) ]++ ;
16   // histogram parsing
17   cpt = 0 ;
18   for(ic=0; ic<256; ic++)
19         {
20           cpt += histogram[ ic ] ;
21           // selection of the median value 
22           if ( cpt > ((2*r+1)*(2*r+1))>>1 ) break ; 
23         } 
24   output[ __mul24(i, j_dim) +j ] =  ic ;  
25 }