use border extrapolation for central pixel in pyrDown
authorVladislav Vinogradov <vlad.vinogradov@itseez.com>
Thu, 23 Apr 2015 09:44:09 +0000 (12:44 +0300)
committerVladislav Vinogradov <vlad.vinogradov@itseez.com>
Thu, 23 Apr 2015 14:21:42 +0000 (17:21 +0300)
in case if image has odd dimension

modules/gpu/src/cuda/pyr_down.cu

index e6ef647..eac7928 100644 (file)
@@ -114,7 +114,7 @@ namespace cv { namespace gpu { namespace device
 
                     sum =       0.0625f * src(b.idx_row_low (src_y - 2), b.idx_col_high(x));
                     sum = sum + 0.25f   * src(b.idx_row_low (src_y - 1), b.idx_col_high(x));
-                    sum = sum + 0.375f  * src(src_y                    , b.idx_col_high(x));
+                    sum = sum + 0.375f  * src(b.idx_row_high(src_y    ), b.idx_col_high(x));
                     sum = sum + 0.25f   * src(b.idx_row_high(src_y + 1), b.idx_col_high(x));
                     sum = sum + 0.0625f * src(b.idx_row_high(src_y + 2), b.idx_col_high(x));
 
@@ -129,7 +129,7 @@ namespace cv { namespace gpu { namespace device
 
                     sum =       0.0625f * src(b.idx_row_low (src_y - 2), b.idx_col(left_x));
                     sum = sum + 0.25f   * src(b.idx_row_low (src_y - 1), b.idx_col(left_x));
-                    sum = sum + 0.375f  * src(src_y                    , b.idx_col(left_x));
+                    sum = sum + 0.375f  * src(b.idx_row_high(src_y    ), b.idx_col(left_x));
                     sum = sum + 0.25f   * src(b.idx_row_high(src_y + 1), b.idx_col(left_x));
                     sum = sum + 0.0625f * src(b.idx_row_high(src_y + 2), b.idx_col(left_x));
 
@@ -144,7 +144,7 @@ namespace cv { namespace gpu { namespace device
 
                     sum =       0.0625f * src(b.idx_row_low (src_y - 2), b.idx_col_high(right_x));
                     sum = sum + 0.25f   * src(b.idx_row_low (src_y - 1), b.idx_col_high(right_x));
-                    sum = sum + 0.375f  * src(src_y                    , b.idx_col_high(right_x));
+                    sum = sum + 0.375f  * src(b.idx_row_high(src_y    ), b.idx_col_high(right_x));
                     sum = sum + 0.25f   * src(b.idx_row_high(src_y + 1), b.idx_col_high(right_x));
                     sum = sum + 0.0625f * src(b.idx_row_high(src_y + 2), b.idx_col_high(right_x));