Skip to content

Commit 5879ccb

Browse files
committed
FIxing OpenCL NLM kernel to properly work on nonsquare images
1 parent 8fc3903 commit 5879ccb

2 files changed

Lines changed: 8 additions & 8 deletions

File tree

src/mako_templates/nanopyx.core.transform._le_nlm_denoising_.cl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ __kernel void nlm_denoising(__read_only image2d_t padded, __write_only image2d_t
2727
tmp_diff = 0;
2828
for (int is=0;is<patch_size;is++) {
2929
for (int js=0;js<patch_size;js++) {
30-
tmp_diff = read_imagef(padded,sampler,(int2)(row+is,col+js)).x - read_imagef(padded,sampler,(int2)(i+is,j+js)).x;
31-
distance = distance + read_imagef(w,sampler,(int2)(is,js)).x * (tmp_diff*tmp_diff-var);
30+
tmp_diff = read_imagef(padded,sampler,(int2)(col+js,row+is)).x - read_imagef(padded,sampler,(int2)(j+js,i+is)).x;
31+
distance = distance + read_imagef(w,sampler,(int2)(js,is)).x * (tmp_diff*tmp_diff-var);
3232
}
3333
}
3434
weight = exp(-max((float)(0.0),distance));
3535
weight_sum = weight_sum + weight;
3636

37-
new_value = new_value + weight * read_imagef(padded,sampler,(int2)(i+offset,j+offset)).x;
37+
new_value = new_value + weight * read_imagef(padded,sampler,(int2)(j+offset,i+offset)).x;
3838

3939
}
4040
}
41-
write_imagef(result,(int2)(row,col),new_value/weight_sum);
41+
write_imagef(result,(int2)(col,row),new_value/weight_sum);
4242
}
4343

4444

src/nanopyx/core/transform/_le_nlm_denoising_.cl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ __kernel void nlm_denoising(__read_only image2d_t padded, __write_only image2d_t
2727
tmp_diff = 0;
2828
for (int is=0;is<patch_size;is++) {
2929
for (int js=0;js<patch_size;js++) {
30-
tmp_diff = read_imagef(padded,sampler,(int2)(row+is,col+js)).x - read_imagef(padded,sampler,(int2)(i+is,j+js)).x;
31-
distance = distance + read_imagef(w,sampler,(int2)(is,js)).x * (tmp_diff*tmp_diff-var);
30+
tmp_diff = read_imagef(padded,sampler,(int2)(col+js,row+is)).x - read_imagef(padded,sampler,(int2)(j+js,i+is)).x;
31+
distance = distance + read_imagef(w,sampler,(int2)(js,is)).x * (tmp_diff*tmp_diff-var);
3232
}
3333
}
3434
weight = exp(-max((float)(0.0),distance));
3535
weight_sum = weight_sum + weight;
3636

37-
new_value = new_value + weight * read_imagef(padded,sampler,(int2)(i+offset,j+offset)).x;
37+
new_value = new_value + weight * read_imagef(padded,sampler,(int2)(j+offset,i+offset)).x;
3838

3939
}
4040
}
41-
write_imagef(result,(int2)(row,col),new_value/weight_sum);
41+
write_imagef(result,(int2)(col,row),new_value/weight_sum);
4242
}
4343

4444

0 commit comments

Comments
 (0)