fixed bug in gpu::pyrDown
authorVladislav Vinogradov <no@email>
Wed, 7 Mar 2012 13:14:50 +0000 (13:14 +0000)
committerVladislav Vinogradov <no@email>
Wed, 7 Mar 2012 13:14:50 +0000 (13:14 +0000)
modules/gpu/src/cuda/pyr_down.cu
modules/gpu/test/test_imgproc.cpp

index 34716c2..4c13388 100644 (file)
@@ -75,7 +75,7 @@ namespace cv { namespace gpu { namespace device
 \r
             if (threadIdx.x < 2)\r
             {\r
-                const int left_x = x - 2 + threadIdx.x;\r
+                const int left_x = x - 2;\r
 \r
                 sum = VecTraits<value_type>::all(0);\r
             \r
@@ -90,7 +90,7 @@ namespace cv { namespace gpu { namespace device
 \r
             if (threadIdx.x > 253)\r
             {\r
-                const int right_x = x + threadIdx.x + 2;\r
+                const int right_x = x + 2;\r
 \r
                 sum = VecTraits<value_type>::all(0);\r
             \r
index 018a3e6..19552e7 100644 (file)
@@ -3484,10 +3484,9 @@ PARAM_TEST_CASE(PyrDown, cv::gpu::DeviceInfo, MatType, UseRoi)
     cv::gpu::DeviceInfo devInfo;\r
     int type;\r
     bool useRoi;\r
-    \r
-    cv::Size size;\r
+\r
     cv::Mat src;\r
-    \r
+\r
     cv::Mat dst_gold;\r
 \r
     virtual void SetUp()\r
@@ -3500,7 +3499,7 @@ PARAM_TEST_CASE(PyrDown, cv::gpu::DeviceInfo, MatType, UseRoi)
 \r
         cv::RNG& rng = TS::ptr()->get_rng();\r
 \r
-        size = cv::Size(rng.uniform(100, 200), rng.uniform(100, 200));\r
+        cv::Size size(rng.uniform(100, 200), rng.uniform(100, 200));\r
 \r
         src = randomMat(rng, size, type, 0.0, 255.0, false);\r
         \r
@@ -3518,12 +3517,7 @@ TEST_P(PyrDown, Accuracy)
     \r
     d_dst.download(dst);\r
 \r
-    ASSERT_EQ(dst_gold.cols, dst.cols);\r
-    ASSERT_EQ(dst_gold.rows, dst.rows);\r
-    ASSERT_EQ(dst_gold.type(), dst.type());\r
-    \r
-    double err = crossCorr(dst_gold, dst) / (cv::norm(dst_gold, cv::NORM_L2) * cv::norm(dst, cv::NORM_L2));\r
-    ASSERT_NEAR(err, 1., 1e-2);\r
+    EXPECT_MAT_NEAR(dst_gold, dst, src.depth() == CV_32F ? 1e-4 : 1.0);\r
 }\r
 \r
 INSTANTIATE_TEST_CASE_P(ImgProc, PyrDown, Combine(\r
@@ -3573,12 +3567,7 @@ TEST_P(PyrUp, Accuracy)
     \r
     d_dst.download(dst);\r
 \r
-    ASSERT_EQ(dst_gold.cols, dst.cols);\r
-    ASSERT_EQ(dst_gold.rows, dst.rows);\r
-    ASSERT_EQ(dst_gold.type(), dst.type());\r
-\r
-    double err = cvtest::crossCorr(dst_gold, dst) / (cv::norm(dst_gold, cv::NORM_L2) * cv::norm(dst, cv::NORM_L2));\r
-    ASSERT_NEAR(err, 1., 1e-2);\r
+    EXPECT_MAT_NEAR(dst_gold, dst, src.depth() == CV_32F ? 1e-4 : 1.0);\r
 }\r
 \r
 INSTANTIATE_TEST_CASE_P(ImgProc, PyrUp, Combine(\r