Fixed several bugs in denoise boxblur

see issue 1052
This commit is contained in:
Oliver Duis
2012-07-17 21:14:21 +02:00
parent 80b726a6f4
commit b3f1403146

View File

@@ -48,8 +48,8 @@ template<class T, class A> void boxblur (T** src, A** dst, int radx, int rady, i
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
temp[row*H+col] = (float)src[row][col]; temp[row*W+col] = (float)src[row][col];
} }
} else { } else {
//horizontal blur //horizontal blur
@@ -81,7 +81,7 @@ template<class T, class A> void boxblur (T** src, A** dst, int radx, int rady, i
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
dst[row][col] = temp[row*W+col]; dst[row][col] = temp[row*W+col];
} }
} else { } else {
@@ -127,8 +127,8 @@ template<class T, class A> void boxblur (T* src, A* dst, int radx, int rady, int
if (radx==0) { if (radx==0) {
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
temp[row*H+col] = src[row*W+col]; temp[row*W+col] = src[row*W+col];
} }
} else { } else {
//horizontal blur //horizontal blur
@@ -160,7 +160,7 @@ template<class T, class A> void boxblur (T* src, A* dst, int radx, int rady, int
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
dst[row*W+col] = temp[row*W+col]; dst[row*W+col] = temp[row*W+col];
} }
} else { } else {
@@ -296,8 +296,8 @@ template<typename T> void boxdev (T* src, T* dst, int radx, int rady, int W, int
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
temp[row*H+col] = src[row*W+col]; temp[row*W+col] = src[row*W+col];
} }
} else { } else {
//horizontal blur //horizontal blur
@@ -329,7 +329,7 @@ template<typename T> void boxdev (T* src, T* dst, int radx, int rady, int W, int
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++){ for (int row=0; row<H; row++){
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
tempave[row*W+col] = temp[row*W+col]; tempave[row*W+col] = temp[row*W+col];
} }
} }
@@ -367,8 +367,8 @@ template<typename T> void boxdev (T* src, T* dst, int radx, int rady, int W, int
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
temp[row*H+col] = fabs(src[row*W+col]-tempave[row*W+col]); temp[row*W+col] = fabs(src[row*W+col]-tempave[row*W+col]);
} }
} else { } else {
//horizontal blur //horizontal blur
@@ -402,7 +402,7 @@ template<typename T> void boxdev (T* src, T* dst, int radx, int rady, int W, int
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
dst[row*W+col] = temp[row*W+col]; dst[row*W+col] = temp[row*W+col];
} }
} else { } else {
@@ -453,8 +453,8 @@ template<class T, class A> void boxsqblur (T* src, A* dst, int radx, int rady, i
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
temp[row*H+col] = SQR(src[row*W+col]); temp[row*W+col] = SQR(src[row*W+col]);
} }
} else { } else {
//horizontal blur //horizontal blur
@@ -487,7 +487,7 @@ template<class T, class A> void boxsqblur (T* src, A* dst, int radx, int rady, i
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
dst[row*W+col] = temp[row*W+col]; dst[row*W+col] = temp[row*W+col];
} }
} else { } else {
@@ -535,9 +535,9 @@ template<class T, class A> void boxcorrelate (T* src, A* dst, int dx, int dy, in
if (radx==0) { if (radx==0) {
for (int row=0; row<H; row++) { for (int row=0; row<H; row++) {
int rr = min(H-1,max(0,row+dy)); int rr = min(H-1,max(0,row+dy));
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
int cc = min(W-1,max(0,col+dx)); int cc = min(W-1,max(0,col+dx));
temp[row*H+col] = dy>0 ? (src[row*W+col])*(src[rr*W+cc]) : 0; temp[row*W+col] = dy>0 ? (src[row*W+col])*(src[rr*W+cc]) : 0;
} }
} }
} else { } else {
@@ -575,7 +575,7 @@ template<class T, class A> void boxcorrelate (T* src, A* dst, int dx, int dy, in
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
dst[row*W+col] = temp[row*W+col]; dst[row*W+col] = temp[row*W+col];
} }
} else { } else {
@@ -626,8 +626,8 @@ template<class T, class A> void boxabsblur (T* src, A* dst, int radx, int rady,
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
temp[row*H+col] = fabs(src[row*W+col]); temp[row*W+col] = fabs(src[row*W+col]);
} }
} else { } else {
//horizontal blur //horizontal blur
@@ -660,7 +660,7 @@ template<class T, class A> void boxabsblur (T* src, A* dst, int radx, int rady,
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for (int row=0; row<H; row++) for (int row=0; row<H; row++)
for (int col=0; col<H; col++) { for (int col=0; col<W; col++) {
dst[row*W+col] = temp[row*W+col]; dst[row*W+col] = temp[row*W+col];
} }
} else { } else {