added tests for pyrDown and pyrUp (gpu)
authorAlexey Spizhevoy <no@email>
Fri, 1 Jul 2011 05:37:20 +0000 (05:37 +0000)
committerAlexey Spizhevoy <no@email>
Fri, 1 Jul 2011 05:37:20 +0000 (05:37 +0000)
modules/gpu/test/test_imgproc.cpp

index d177334..575f45c 100644 (file)
@@ -2041,4 +2041,82 @@ INSTANTIATE_TEST_CASE_P(ImgProc, Blend, testing::Combine(
                         testing::Values(CV_8U, CV_32F),\r
                         testing::Range(1, 5)));\r
 \r
+////////////////////////////////////////////////////////\r
+// pyrDown\r
+\r
+struct PyrDown : testing::TestWithParam<cv::gpu::DeviceInfo>\r
+{\r
+    cv::gpu::DeviceInfo devInfo;\r
+\r
+    virtual void SetUp()\r
+    {\r
+        devInfo = GetParam();\r
+        cv::gpu::setDevice(devInfo.deviceID());\r
+    }\r
+};\r
+\r
+TEST_P(PyrDown, Accuracy)\r
+{\r
+    PRINT_PARAM(devInfo);\r
+\r
+    cv::Mat src;\r
+    readImage("stereobm/aloe-L.png").convertTo(src, CV_16S);\r
+\r
+    cv::Mat dst_gold;\r
+    cv::pyrDown(src, dst_gold);\r
+\r
+    cv::gpu::GpuMat d_dst;\r
+    cv::gpu::pyrDown(cv::gpu::GpuMat(src), d_dst);\r
+    cv::Mat dst_mine = d_dst;\r
+\r
+    ASSERT_EQ(dst_gold.cols, dst_mine.cols);\r
+    ASSERT_EQ(dst_gold.rows, dst_mine.rows);\r
+    ASSERT_EQ(dst_gold.type(), dst_mine.type());\r
+\r
+    double err = cvtest::crossCorr(dst_gold, dst_mine) /\r
+            (cv::norm(dst_gold,cv::NORM_L2)*cv::norm(dst_mine,cv::NORM_L2));\r
+    ASSERT_NEAR(err, 1., 1e-2);\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(ImgProc, PyrDown, testing::ValuesIn(devices()));\r
+\r
+////////////////////////////////////////////////////////\r
+// pyrUp\r
+\r
+struct PyrUp: testing::TestWithParam<cv::gpu::DeviceInfo>\r
+{\r
+    cv::gpu::DeviceInfo devInfo;\r
+\r
+    virtual void SetUp()\r
+    {\r
+        devInfo = GetParam();\r
+        cv::gpu::setDevice(devInfo.deviceID());\r
+    }\r
+};\r
+\r
+TEST_P(PyrUp, Accuracy)\r
+{\r
+    PRINT_PARAM(devInfo);\r
+\r
+    cv::Mat src;\r
+    readImage("stereobm/aloe-L.png").convertTo(src, CV_16S);\r
+\r
+    cv::Mat dst_gold;\r
+    cv::pyrUp(src, dst_gold);\r
+\r
+    cv::gpu::GpuMat d_dst;\r
+    cv::gpu::pyrUp(cv::gpu::GpuMat(src), d_dst);\r
+    cv::Mat dst_mine = d_dst;\r
+\r
+    ASSERT_EQ(dst_gold.cols, dst_mine.cols);\r
+    ASSERT_EQ(dst_gold.rows, dst_mine.rows);\r
+    ASSERT_EQ(dst_gold.type(), dst_mine.type());\r
+\r
+    double err = cvtest::crossCorr(dst_gold, dst_mine) /\r
+            (cv::norm(dst_gold,cv::NORM_L2)*cv::norm(dst_mine,cv::NORM_L2));\r
+    ASSERT_NEAR(err, 1., 1e-2);\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(ImgProc, PyrUp, testing::ValuesIn(devices()));\r
+\r
 #endif // HAVE_CUDA\r