From 5f4ba8055f6ce5090c2acdba60c47ae3ae0e158f Mon Sep 17 00:00:00 2001 From: Alexey Spizhevoy Date: Fri, 1 Jul 2011 05:37:20 +0000 Subject: [PATCH] added tests for pyrDown and pyrUp (gpu) --- modules/gpu/test/test_imgproc.cpp | 78 +++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/modules/gpu/test/test_imgproc.cpp b/modules/gpu/test/test_imgproc.cpp index d177334f0a..575f45c2a2 100644 --- a/modules/gpu/test/test_imgproc.cpp +++ b/modules/gpu/test/test_imgproc.cpp @@ -2041,4 +2041,82 @@ INSTANTIATE_TEST_CASE_P(ImgProc, Blend, testing::Combine( testing::Values(CV_8U, CV_32F), testing::Range(1, 5))); +//////////////////////////////////////////////////////// +// pyrDown + +struct PyrDown : testing::TestWithParam +{ + cv::gpu::DeviceInfo devInfo; + + virtual void SetUp() + { + devInfo = GetParam(); + cv::gpu::setDevice(devInfo.deviceID()); + } +}; + +TEST_P(PyrDown, Accuracy) +{ + PRINT_PARAM(devInfo); + + cv::Mat src; + readImage("stereobm/aloe-L.png").convertTo(src, CV_16S); + + cv::Mat dst_gold; + cv::pyrDown(src, dst_gold); + + cv::gpu::GpuMat d_dst; + cv::gpu::pyrDown(cv::gpu::GpuMat(src), d_dst); + cv::Mat dst_mine = d_dst; + + ASSERT_EQ(dst_gold.cols, dst_mine.cols); + ASSERT_EQ(dst_gold.rows, dst_mine.rows); + ASSERT_EQ(dst_gold.type(), dst_mine.type()); + + double err = cvtest::crossCorr(dst_gold, dst_mine) / + (cv::norm(dst_gold,cv::NORM_L2)*cv::norm(dst_mine,cv::NORM_L2)); + ASSERT_NEAR(err, 1., 1e-2); +} + +INSTANTIATE_TEST_CASE_P(ImgProc, PyrDown, testing::ValuesIn(devices())); + +//////////////////////////////////////////////////////// +// pyrUp + +struct PyrUp: testing::TestWithParam +{ + cv::gpu::DeviceInfo devInfo; + + virtual void SetUp() + { + devInfo = GetParam(); + cv::gpu::setDevice(devInfo.deviceID()); + } +}; + +TEST_P(PyrUp, Accuracy) +{ + PRINT_PARAM(devInfo); + + cv::Mat src; + readImage("stereobm/aloe-L.png").convertTo(src, CV_16S); + + cv::Mat dst_gold; + cv::pyrUp(src, dst_gold); + + cv::gpu::GpuMat d_dst; + cv::gpu::pyrUp(cv::gpu::GpuMat(src), d_dst); + cv::Mat dst_mine = d_dst; + + ASSERT_EQ(dst_gold.cols, dst_mine.cols); + ASSERT_EQ(dst_gold.rows, dst_mine.rows); + ASSERT_EQ(dst_gold.type(), dst_mine.type()); + + double err = cvtest::crossCorr(dst_gold, dst_mine) / + (cv::norm(dst_gold,cv::NORM_L2)*cv::norm(dst_mine,cv::NORM_L2)); + ASSERT_NEAR(err, 1., 1e-2); +} + +INSTANTIATE_TEST_CASE_P(ImgProc, PyrUp, testing::ValuesIn(devices())); + #endif // HAVE_CUDA