From e4d3378230686510663528827400969e8a6ebe0c Mon Sep 17 00:00:00 2001 From: yao Date: Wed, 8 May 2013 15:12:12 +0800 Subject: [PATCH] simplify logics in filter tests, remove redundant code in arithm tests --- modules/ocl/test/test_arithm.cpp | 280 ++++----------- modules/ocl/test/test_filters.cpp | 566 +++++------------------------- 2 files changed, 161 insertions(+), 685 deletions(-) diff --git a/modules/ocl/test/test_arithm.cpp b/modules/ocl/test/test_arithm.cpp index 81dab430e..e23b3d104 100644 --- a/modules/ocl/test/test_arithm.cpp +++ b/modules/ocl/test/test_arithm.cpp @@ -12,6 +12,7 @@ // // Copyright (C) 2010-2012, Institute Of Software Chinese Academy Of Science, all rights reserved. // Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. +// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // @Authors @@ -21,6 +22,7 @@ // Jiang Liyuan,jlyuan001.good@163.com // Rock Li, Rock.Li@amd.com // Zailong Wu, bullet@yeah.net +// Yao Wang, bitwangyaoyao@gmail.com // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: @@ -87,14 +89,13 @@ PARAM_TEST_CASE(ArithmTestBase, MatType, bool) int maskx; int masky; - //src mat with roi cv::Mat mat1_roi; cv::Mat mat2_roi; cv::Mat mask_roi; cv::Mat dst_roi; cv::Mat dst1_roi; //bak - //std::vector oclinfo; + //ocl dst mat for testing cv::ocl::oclMat gdst_whole; cv::ocl::oclMat gdst1_whole; //bak @@ -202,17 +203,12 @@ TEST_P(Lut, Mat) cv::Mat cpu_dst; gdst_whole.download (cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 0, ""); } } - - ////////////////////////////////exp///////////////////////////////////////////////// - struct Exp : ArithmTestBase {}; TEST_P(Exp, Mat) @@ -227,16 +223,13 @@ TEST_P(Exp, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 2, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 2, ""); } } ////////////////////////////////log///////////////////////////////////////////////// - struct Log : ArithmTestBase {}; TEST_P(Log, Mat) @@ -245,24 +238,17 @@ TEST_P(Log, Mat) { random_roi(); - cv::log(mat1_roi, dst_roi); cv::ocl::log(gmat1, gdst); cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1, s); - + EXPECT_MAT_NEAR(dst, cpu_dst, 1, ""); } } - - ////////////////////////////////add///////////////////////////////////////////////// - struct Add : ArithmTestBase {}; TEST_P(Add, Mat) @@ -276,9 +262,7 @@ TEST_P(Add, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -293,9 +277,7 @@ TEST_P(Add, Mat_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } TEST_P(Add, Scalar) @@ -309,9 +291,7 @@ TEST_P(Add, Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -326,9 +306,7 @@ TEST_P(Add, Scalar_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -348,9 +326,7 @@ TEST_P(Sub, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -365,11 +341,10 @@ TEST_P(Sub, Mat_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } + TEST_P(Sub, Scalar) { for(int j = 0; j < LOOP_TIMES; j++) @@ -381,9 +356,7 @@ TEST_P(Sub, Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -398,9 +371,7 @@ TEST_P(Sub, Scalar_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -420,9 +391,7 @@ TEST_P(Mul, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char s[1024]; - sprintf(s, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, s); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -440,9 +409,7 @@ TEST_P(Mul, Mat_Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.001, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.001, ""); } } @@ -461,10 +428,7 @@ TEST_P(Div, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_MAT_NEAR(dst, cpu_dst, 1, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1, ""); } } @@ -482,10 +446,7 @@ TEST_P(Div, Mat_Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_MAT_NEAR(dst, cpu_dst, 0.001, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.001, ""); } } @@ -503,10 +464,7 @@ TEST_P(Absdiff, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_MAT_NEAR(dst, cpu_dst, 0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0, ""); } } @@ -521,10 +479,7 @@ TEST_P(Absdiff, Mat_Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -546,10 +501,8 @@ TEST_P(CartToPolar, angleInDegree) cv::Mat cpu_dst1; gdst1_whole.download(cpu_dst1); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, sss); - EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, ""); + EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, ""); } } @@ -567,16 +520,12 @@ TEST_P(CartToPolar, angleInRadians) cv::Mat cpu_dst1; gdst1_whole.download(cpu_dst1); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, sss); - EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, ""); + EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, ""); } } - - struct PolarToCart : ArithmTestBase {}; TEST_P(PolarToCart, angleInDegree) @@ -593,11 +542,9 @@ TEST_P(PolarToCart, angleInDegree) cv::Mat cpu_dst1; gdst1_whole.download(cpu_dst1); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, sss); - EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, ""); + EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, ""); } } @@ -615,11 +562,9 @@ TEST_P(PolarToCart, angleInRadians) cv::Mat cpu_dst1; gdst1_whole.download(cpu_dst1); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, sss); - EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.5, ""); + EXPECT_MAT_NEAR(dst1, cpu_dst1, 0.5, ""); } } @@ -639,16 +584,12 @@ TEST_P(Magnitude, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } - - struct Transpose : ArithmTestBase {}; TEST_P(Transpose, Mat) @@ -662,17 +603,13 @@ TEST_P(Transpose, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } - - struct Flip : ArithmTestBase {}; TEST_P(Flip, X) @@ -686,10 +623,8 @@ TEST_P(Flip, X) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -704,10 +639,8 @@ TEST_P(Flip, Y) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -722,15 +655,12 @@ TEST_P(Flip, BOTH) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } - struct MinMax : ArithmTestBase {}; TEST_P(MinMax, MAT) @@ -761,12 +691,8 @@ TEST_P(MinMax, MAT) double minVal_, maxVal_; cv::ocl::minMax(gmat1, &minVal_, &maxVal_); - //check results - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_DOUBLE_EQ(minVal_, minVal) << sss; - EXPECT_DOUBLE_EQ(maxVal_, maxVal) << sss; + EXPECT_DOUBLE_EQ(minVal_, minVal); + EXPECT_DOUBLE_EQ(maxVal_, maxVal); } } @@ -799,12 +725,8 @@ TEST_P(MinMax, MASK) double minVal_, maxVal_; cv::ocl::minMax(gmat1, &minVal_, &maxVal_, gmask); - //check results - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_DOUBLE_EQ(minVal_, minVal) << sss; - EXPECT_DOUBLE_EQ(maxVal_, maxVal) << sss; + EXPECT_DOUBLE_EQ(minVal_, minVal); + EXPECT_DOUBLE_EQ(maxVal_, maxVal); } } @@ -915,17 +837,13 @@ TEST_P(MinMaxLoc, MAT) error1 = ::abs(mat1_roi.at(maxLoc_) - mat1_roi.at(maxLoc)); } - //check results - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); + EXPECT_DOUBLE_EQ(minVal_, minVal); + EXPECT_DOUBLE_EQ(maxVal_, maxVal); + EXPECT_DOUBLE_EQ(minlocVal_, minlocVal); + EXPECT_DOUBLE_EQ(maxlocVal_, maxlocVal); - EXPECT_DOUBLE_EQ(minVal_, minVal) << sss; - EXPECT_DOUBLE_EQ(maxVal_, maxVal) << sss; - EXPECT_DOUBLE_EQ(minlocVal_, minlocVal) << sss; - EXPECT_DOUBLE_EQ(maxlocVal_, maxlocVal) << sss; - - EXPECT_DOUBLE_EQ(error0, 0.0) << sss; - EXPECT_DOUBLE_EQ(error1, 0.0) << sss; + EXPECT_DOUBLE_EQ(error0, 0.0); + EXPECT_DOUBLE_EQ(error1, 0.0); } } @@ -1036,17 +954,13 @@ TEST_P(MinMaxLoc, MASK) error1 = ::abs(mat1_roi.at(maxLoc_) - mat1_roi.at(maxLoc)); } - //check results - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); + EXPECT_DOUBLE_EQ(minVal_, minVal); + EXPECT_DOUBLE_EQ(maxVal_, maxVal); + EXPECT_DOUBLE_EQ(minlocVal_, minlocVal); + EXPECT_DOUBLE_EQ(maxlocVal_, maxlocVal); - EXPECT_DOUBLE_EQ(minVal_, minVal) << sss; - EXPECT_DOUBLE_EQ(maxVal_, maxVal) << sss; - EXPECT_DOUBLE_EQ(minlocVal_, minlocVal) << sss; - EXPECT_DOUBLE_EQ(maxlocVal_, maxlocVal) << sss; - - EXPECT_DOUBLE_EQ(error0, 0.0) << sss; - EXPECT_DOUBLE_EQ(error1, 0.0) << sss; + EXPECT_DOUBLE_EQ(error0, 0.0); + EXPECT_DOUBLE_EQ(error1, 0.0); } } @@ -1060,14 +974,12 @@ TEST_P(Sum, MAT) random_roi(); Scalar cpures = cv::sum(mat1_roi); Scalar gpures = cv::ocl::sum(gmat1); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); //check results - EXPECT_NEAR(cpures[0], gpures[0], 0.1) << sss; - EXPECT_NEAR(cpures[1], gpures[1], 0.1) << sss; - EXPECT_NEAR(cpures[2], gpures[2], 0.1) << sss; - EXPECT_NEAR(cpures[3], gpures[3], 0.1) << sss; + EXPECT_NEAR(cpures[0], gpures[0], 0.1); + EXPECT_NEAR(cpures[1], gpures[1], 0.1); + EXPECT_NEAR(cpures[2], gpures[2], 0.1); + EXPECT_NEAR(cpures[3], gpures[3], 0.1); } } @@ -1082,11 +994,7 @@ TEST_P(CountNonZero, MAT) int cpures = cv::countNonZero(mat1_roi); int gpures = cv::ocl::countNonZero(gmat1); - //check results - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_DOUBLE_EQ((double)cpures, (double)gpures) << sss; + EXPECT_DOUBLE_EQ((double)cpures, (double)gpures); } } @@ -1112,9 +1020,7 @@ TEST_P(Phase, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-2, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-2, ""); } } } @@ -1134,10 +1040,8 @@ TEST_P(Bitwise_and, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -1152,10 +1056,8 @@ TEST_P(Bitwise_and, Mat_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } TEST_P(Bitwise_and, Scalar) @@ -1169,10 +1071,8 @@ TEST_P(Bitwise_and, Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -1188,11 +1088,8 @@ TEST_P(Bitwise_and, Scalar_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char *sss = new char[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); - delete[] sss; + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -1213,10 +1110,8 @@ TEST_P(Bitwise_or, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -1231,10 +1126,8 @@ TEST_P(Bitwise_or, Mat_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } TEST_P(Bitwise_or, Scalar) @@ -1248,10 +1141,8 @@ TEST_P(Bitwise_or, Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -1266,10 +1157,8 @@ TEST_P(Bitwise_or, Scalar_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -1290,10 +1179,8 @@ TEST_P(Bitwise_xor, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -1308,10 +1195,8 @@ TEST_P(Bitwise_xor, Mat_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } TEST_P(Bitwise_xor, Scalar) @@ -1325,10 +1210,8 @@ TEST_P(Bitwise_xor, Scalar) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -1343,10 +1226,8 @@ TEST_P(Bitwise_xor, Scalar_Mask) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -1366,10 +1247,8 @@ TEST_P(Bitwise_not, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -1386,7 +1265,7 @@ TEST_P(Compare, Mat) } int cmp_codes[] = {CMP_EQ, CMP_GT, CMP_GE, CMP_LT, CMP_LE, CMP_NE}; - const char *cmp_str[] = {"CMP_EQ", "CMP_GT", "CMP_GE", "CMP_LT", "CMP_LE", "CMP_NE"}; + //const char *cmp_str[] = {"CMP_EQ", "CMP_GT", "CMP_GE", "CMP_LT", "CMP_LE", "CMP_NE"}; int cmp_num = sizeof(cmp_codes) / sizeof(int); for (int i = 0; i < cmp_num; ++i) @@ -1401,10 +1280,8 @@ TEST_P(Compare, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "cmptype=%s, roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", cmp_str[i], roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 0.0, ""); } } @@ -1430,10 +1307,7 @@ TEST_P(Pow, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_MAT_NEAR(dst, cpu_dst, 1, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1, ""); } } @@ -1464,16 +1338,13 @@ TEST_P(MagnitudeSqr, Mat) // end = cv::getTickCount(); - cv::ocl::oclMat clmat1(mat1), clmat2(mat2), cldst; cv::ocl::magnitudeSqr(clmat1, clmat2, cldst); cv::Mat cpu_dst; cldst.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - EXPECT_MAT_NEAR(dst, cpu_dst, 1, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1, ""); } } @@ -1498,10 +1369,7 @@ TEST_P(AddWeighted, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d,maskx=%d,masky=%d,src2x=%d,src2y=%d", roicols, roirows, src1x, src1y, dstx, dsty, maskx, masky, src2x, src2y); - - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } diff --git a/modules/ocl/test/test_filters.cpp b/modules/ocl/test/test_filters.cpp index d598b6a18..dbca32693 100644 --- a/modules/ocl/test/test_filters.cpp +++ b/modules/ocl/test/test_filters.cpp @@ -12,6 +12,7 @@ // // Copyright (C) 2010-2012, Institute Of Software Chinese Academy Of Science, all rights reserved. // Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. +// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // @Authors @@ -19,6 +20,7 @@ // Jia Haipeng, jiahaipeng95@gmail.com // Zero Lin, Zero.Lin@amd.com // Zhang Ying, zhangying913@gmail.com +// Yao Wang, bitwangyaoyao@gmail.com // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: @@ -55,121 +57,13 @@ using namespace testing; using namespace std; -PARAM_TEST_CASE(FilterTestBase, MatType, bool) +PARAM_TEST_CASE(FilterTestBase, + MatType, + cv::Size, // kernel size + cv::Size, // dx,dy + int // border type, or iteration + ) { - int type; - cv::Scalar val; - - //src mat - cv::Mat mat1; - cv::Mat mat2; - cv::Mat mask; - cv::Mat dst; - cv::Mat dst1; //bak, for two outputs - - // set up roi - int roicols; - int roirows; - int src1x; - int src1y; - int src2x; - int src2y; - int dstx; - int dsty; - int maskx; - int masky; - - //src mat with roi - cv::Mat mat1_roi; - cv::Mat mat2_roi; - cv::Mat mask_roi; - cv::Mat dst_roi; - cv::Mat dst1_roi; //bak - //std::vector oclinfo; - //ocl dst mat for testing - cv::ocl::oclMat gdst_whole; - cv::ocl::oclMat gdst1_whole; //bak - - //ocl mat with roi - cv::ocl::oclMat gmat1; - cv::ocl::oclMat gmat2; - cv::ocl::oclMat gdst; - cv::ocl::oclMat gdst1; //bak - cv::ocl::oclMat gmask; - - virtual void SetUp() - { - type = GET_PARAM(0); - - cv::RNG &rng = TS::ptr()->get_rng(); - cv::Size size(MWIDTH, MHEIGHT); - - mat1 = randomMat(rng, size, type, 5, 16, false); - mat2 = randomMat(rng, size, type, 5, 16, false); - dst = randomMat(rng, size, type, 5, 16, false); - dst1 = randomMat(rng, size, type, 5, 16, false); - mask = randomMat(rng, size, CV_8UC1, 0, 2, false); - - cv::threshold(mask, mask, 0.5, 255., CV_8UC1); - - val = cv::Scalar(rng.uniform(-10.0, 10.0), rng.uniform(-10.0, 10.0), rng.uniform(-10.0, 10.0), rng.uniform(-10.0, 10.0)); - } - - void random_roi() - { -#ifdef RANDOMROI - //randomize ROI - cv::RNG &rng = TS::ptr()->get_rng(); - roicols = rng.uniform(1, mat1.cols); - roirows = rng.uniform(1, mat1.rows); - src1x = rng.uniform(0, mat1.cols - roicols); - src1y = rng.uniform(0, mat1.rows - roirows); - src2x = rng.uniform(0, mat2.cols - roicols); - src2y = rng.uniform(0, mat2.rows - roirows); - dstx = rng.uniform(0, dst.cols - roicols); - dsty = rng.uniform(0, dst.rows - roirows); - maskx = rng.uniform(0, mask.cols - roicols); - masky = rng.uniform(0, mask.rows - roirows); -#else - roicols = mat1.cols; - roirows = mat1.rows; - src1x = 0; - src1y = 0; - src2x = 0; - src2y = 0; - dstx = 0; - dsty = 0; - maskx = 0; - masky = 0; -#endif - mat1_roi = mat1(Rect(src1x, src1y, roicols, roirows)); - mat2_roi = mat2(Rect(src2x, src2y, roicols, roirows)); - mask_roi = mask(Rect(maskx, masky, roicols, roirows)); - dst_roi = dst(Rect(dstx, dsty, roicols, roirows)); - dst1_roi = dst1(Rect(dstx, dsty, roicols, roirows)); - - gdst_whole = dst; - gdst = gdst_whole(Rect(dstx, dsty, roicols, roirows)); - - gdst1_whole = dst1; - gdst1 = gdst1_whole(Rect(dstx, dsty, roicols, roirows)); - - gmat1 = mat1_roi; - gmat2 = mat2_roi; - gmask = mask_roi; - } - -}; - -///////////////////////////////////////////////////////////////////////////////////////////////// -// blur - -PARAM_TEST_CASE(Blur, MatType, cv::Size, int) -{ - int type; - cv::Size ksize; - int bordertype; - //src mat cv::Mat mat1; cv::Mat dst; @@ -185,7 +79,7 @@ PARAM_TEST_CASE(Blur, MatType, cv::Size, int) //src mat with roi cv::Mat mat1_roi; cv::Mat dst_roi; - //std::vector oclinfo; + //ocl dst mat for testing cv::ocl::oclMat gdst_whole; @@ -193,23 +87,6 @@ PARAM_TEST_CASE(Blur, MatType, cv::Size, int) cv::ocl::oclMat gmat1; cv::ocl::oclMat gdst; - virtual void SetUp() - { - type = GET_PARAM(0); - ksize = GET_PARAM(1); - bordertype = GET_PARAM(2); - - cv::RNG &rng = TS::ptr()->get_rng(); - cv::Size size(MWIDTH, MHEIGHT); - - mat1 = randomMat(rng, size, type, 5, 16, false); - dst = randomMat(rng, size, type, 5, 16, false); - //int devnums = getDevice(oclinfo, OPENCV_DEFAULT_OPENCL_DEVICE); - //CV_Assert(devnums > 0); - ////if you want to use undefault device, set it here - ////setDevice(oclinfo[0]); - } - void random_roi() { #ifdef RANDOMROI @@ -236,12 +113,33 @@ PARAM_TEST_CASE(Blur, MatType, cv::Size, int) gdst_whole = dst; gdst = gdst_whole(Rect(dstx, dsty, roicols, roirows)); - gmat1 = mat1_roi; } }; +///////////////////////////////////////////////////////////////////////////////////////////////// +// blur +struct Blur : FilterTestBase +{ + int type; + cv::Size ksize; + int bordertype; + + virtual void SetUp() + { + type = GET_PARAM(0); + ksize = GET_PARAM(1); + bordertype = GET_PARAM(3); + + cv::RNG &rng = TS::ptr()->get_rng(); + cv::Size size(MWIDTH, MHEIGHT); + + mat1 = randomMat(rng, size, type, 5, 16, false); + dst = randomMat(rng, size, type, 5, 16, false); + } +}; + TEST_P(Blur, Mat) { for(int j = 0; j < LOOP_TIMES; j++) @@ -253,9 +151,8 @@ TEST_P(Blur, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d", roicols, roirows, src1x, src1y, dstx, dsty); - EXPECT_MAT_NEAR(dst, cpu_dst, 1.0, sss); + + EXPECT_MAT_NEAR(dst, cpu_dst, 1.0, ""); } } @@ -264,34 +161,10 @@ TEST_P(Blur, Mat) ///////////////////////////////////////////////////////////////////////////////////////////////// //Laplacian - -PARAM_TEST_CASE(LaplacianTestBase, MatType, int) +struct Laplacian : FilterTestBase { int type; - int ksize; - - //src mat - cv::Mat mat; - cv::Mat dst; - - // set up roi - int roicols; - int roirows; - int srcx; - int srcy; - int dstx; - int dsty; - - //src mat with roi - cv::Mat mat_roi; - cv::Mat dst_roi; - - //ocl dst mat for testing - cv::ocl::oclMat gdst_whole; - - //ocl mat with roi - cv::ocl::oclMat gmat; - cv::ocl::oclMat gdst; + cv::Size ksize; virtual void SetUp() { @@ -301,58 +174,26 @@ PARAM_TEST_CASE(LaplacianTestBase, MatType, int) cv::RNG &rng = TS::ptr()->get_rng(); cv::Size size(MWIDTH, MHEIGHT); - mat = randomMat(rng, size, type, 5, 16, false); + mat1 = randomMat(rng, size, type, 5, 16, false); dst = randomMat(rng, size, type, 5, 16, false); } - void random_roi() - { -#ifdef RANDOMROI - //randomize ROI - cv::RNG &rng = TS::ptr()->get_rng(); - roicols = rng.uniform(2, mat.cols); - roirows = rng.uniform(2, mat.rows); - srcx = rng.uniform(0, mat.cols - roicols); - srcy = rng.uniform(0, mat.rows - roirows); - dstx = rng.uniform(0, dst.cols - roicols); - dsty = rng.uniform(0, dst.rows - roirows); -#else - roicols = mat.cols; - roirows = mat.rows; - srcx = 0; - srcy = 0; - dstx = 0; - dsty = 0; -#endif - - mat_roi = mat(Rect(srcx, srcy, roicols, roirows)); - dst_roi = dst(Rect(dstx, dsty, roicols, roirows)); - - gdst_whole = dst; - gdst = gdst_whole(Rect(dstx, dsty, roicols, roirows)); - - gmat = mat_roi; - } }; -struct Laplacian : LaplacianTestBase {}; - TEST_P(Laplacian, Accuracy) { for(int j = 0; j < LOOP_TIMES; j++) { random_roi(); - cv::Laplacian(mat_roi, dst_roi, -1, ksize, 1); - cv::ocl::Laplacian(gmat, gdst, -1, ksize, 1); + cv::Laplacian(mat1_roi, dst_roi, -1, ksize.width, 1); + cv::ocl::Laplacian(gmat1, gdst, -1, ksize.width, 1); cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d", roicols, roirows, srcx, srcy, dstx, dsty); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } } @@ -360,8 +201,7 @@ TEST_P(Laplacian, Accuracy) ///////////////////////////////////////////////////////////////////////////////////////////////// // erode & dilate - -PARAM_TEST_CASE(ErodeDilateBase, MatType, int) +struct ErodeDilate : FilterTestBase { int type; int iterations; @@ -369,33 +209,10 @@ PARAM_TEST_CASE(ErodeDilateBase, MatType, int) //erode or dilate kernel cv::Mat kernel; - //src mat - cv::Mat mat1; - cv::Mat dst; - - // set up roi - int roicols; - int roirows; - int src1x; - int src1y; - int dstx; - int dsty; - - //src mat with roi - cv::Mat mat1_roi; - cv::Mat dst_roi; - - //ocl dst mat for testing - cv::ocl::oclMat gdst_whole; - - //ocl mat with roi - cv::ocl::oclMat gmat1; - cv::ocl::oclMat gdst; - virtual void SetUp() { type = GET_PARAM(0); - iterations = GET_PARAM(1); + iterations = GET_PARAM(3); cv::RNG &rng = TS::ptr()->get_rng(); cv::Size size(MWIDTH, MHEIGHT); @@ -407,43 +224,11 @@ PARAM_TEST_CASE(ErodeDilateBase, MatType, int) } - void random_roi() - { -#ifdef RANDOMROI - //randomize ROI - cv::RNG &rng = TS::ptr()->get_rng(); - roicols = rng.uniform(2, mat1.cols); - roirows = rng.uniform(2, mat1.rows); - src1x = rng.uniform(0, mat1.cols - roicols); - src1y = rng.uniform(0, mat1.rows - roirows); - dstx = rng.uniform(0, dst.cols - roicols); - dsty = rng.uniform(0, dst.rows - roirows); -#else - roicols = mat1.cols; - roirows = mat1.rows; - src1x = 0; - src1y = 0; - dstx = 0; - dsty = 0; -#endif - - mat1_roi = mat1(Rect(src1x, src1y, roicols, roirows)); - dst_roi = dst(Rect(dstx, dsty, roicols, roirows)); - - gdst_whole = dst; - gdst = gdst_whole(Rect(dstx, dsty, roicols, roirows)); - - - gmat1 = mat1_roi; - } - }; // erode -struct Erode : ErodeDilateBase {}; - -TEST_P(Erode, Mat) +TEST_P(ErodeDilate, Mat) { for(int j = 0; j < LOOP_TIMES; j++) { @@ -454,81 +239,39 @@ TEST_P(Erode, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d", roicols, roirows, src1x, src1y, dstx, dsty); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } - -} - - - - - -// dilate - -struct Dilate : ErodeDilateBase {}; - -TEST_P(Dilate, Mat) -{ for(int j = 0; j < LOOP_TIMES; j++) { random_roi(); - cv::erode(mat1_roi, dst_roi, kernel, Point(-1, -1), iterations); - cv::ocl::erode(gmat1, gdst, kernel, Point(-1, -1), iterations); + cv::dilate(mat1_roi, dst_roi, kernel, Point(-1, -1), iterations); + cv::ocl::dilate(gmat1, gdst, kernel, Point(-1, -1), iterations); cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d", roicols, roirows, src1x, src1y, dstx, dsty); - EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1e-5, ""); } - } - - ///////////////////////////////////////////////////////////////////////////////////////////////// // Sobel - -PARAM_TEST_CASE(Sobel, MatType, int, int, int, int) +struct Sobel : FilterTestBase { int type; int dx, dy, ksize, bordertype; - //src mat - cv::Mat mat1; - cv::Mat dst; - - // set up roi - int roicols; - int roirows; - int src1x; - int src1y; - int dstx; - int dsty; - - //src mat with roi - cv::Mat mat1_roi; - cv::Mat dst_roi; - - //ocl dst mat for testing - cv::ocl::oclMat gdst_whole; - - //ocl mat with roi - cv::ocl::oclMat gmat1; - cv::ocl::oclMat gdst; - virtual void SetUp() { type = GET_PARAM(0); - dx = GET_PARAM(1); - dy = GET_PARAM(2); - ksize = GET_PARAM(3); - bordertype = GET_PARAM(4); + Size s = GET_PARAM(1); + ksize = s.width; + s = GET_PARAM(2); + dx = s.width; + dy = s.height; + bordertype = GET_PARAM(3); cv::RNG &rng = TS::ptr()->get_rng(); @@ -538,36 +281,6 @@ PARAM_TEST_CASE(Sobel, MatType, int, int, int, int) dst = randomMat(rng, size, type, 5, 16, false); } - void random_roi() - { -#ifdef RANDOMROI - //randomize ROI - cv::RNG &rng = TS::ptr()->get_rng(); - roicols = rng.uniform(2, mat1.cols); - roirows = rng.uniform(2, mat1.rows); - src1x = rng.uniform(0, mat1.cols - roicols); - src1y = rng.uniform(0, mat1.rows - roirows); - dstx = rng.uniform(0, dst.cols - roicols); - dsty = rng.uniform(0, dst.rows - roirows); -#else - roicols = mat1.cols; - roirows = mat1.rows; - src1x = 0; - src1y = 0; - dstx = 0; - dsty = 0; -#endif - - mat1_roi = mat1(Rect(src1x, src1y, roicols, roirows)); - dst_roi = dst(Rect(dstx, dsty, roicols, roirows)); - - gdst_whole = dst; - gdst = gdst_whole(Rect(dstx, dsty, roicols, roirows)); - - - gmat1 = mat1_roi; - } - }; TEST_P(Sobel, Mat) @@ -581,10 +294,8 @@ TEST_P(Sobel, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d", roicols, roirows, src1x, src1y, dstx, dsty); - EXPECT_MAT_NEAR(dst, cpu_dst, 1, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1, ""); } } @@ -592,39 +303,17 @@ TEST_P(Sobel, Mat) ///////////////////////////////////////////////////////////////////////////////////////////////// // Scharr - -PARAM_TEST_CASE(Scharr, MatType, int, int, int) +struct Scharr : FilterTestBase { int type; int dx, dy, bordertype; - //src mat - cv::Mat mat1; - cv::Mat dst; - - // set up roi - int roicols; - int roirows; - int src1x; - int src1y; - int dstx; - int dsty; - - //src mat with roi - cv::Mat mat1_roi; - cv::Mat dst_roi; - //ocl dst mat for testing - cv::ocl::oclMat gdst_whole; - - //ocl mat with roi - cv::ocl::oclMat gmat1; - cv::ocl::oclMat gdst; - virtual void SetUp() { type = GET_PARAM(0); - dx = GET_PARAM(1); - dy = GET_PARAM(2); + Size s = GET_PARAM(2); + dx = s.width; + dy = s.height; bordertype = GET_PARAM(3); dx = 1; dy = 0; @@ -637,36 +326,6 @@ PARAM_TEST_CASE(Scharr, MatType, int, int, int) } - void random_roi() - { -#ifdef RANDOMROI - //randomize ROI - cv::RNG &rng = TS::ptr()->get_rng(); - roicols = rng.uniform(2, mat1.cols); - roirows = rng.uniform(2, mat1.rows); - src1x = rng.uniform(0, mat1.cols - roicols); - src1y = rng.uniform(0, mat1.rows - roirows); - dstx = rng.uniform(0, dst.cols - roicols); - dsty = rng.uniform(0, dst.rows - roirows); -#else - roicols = mat1.cols; - roirows = mat1.rows; - src1x = 0; - src1y = 0; - dstx = 0; - dsty = 0; -#endif - - mat1_roi = mat1(Rect(src1x, src1y, roicols, roirows)); - dst_roi = dst(Rect(dstx, dsty, roicols, roirows)); - - gdst_whole = dst; - gdst = gdst_whole(Rect(dstx, dsty, roicols, roirows)); - - - gmat1 = mat1_roi; - } - }; TEST_P(Scharr, Mat) @@ -680,10 +339,8 @@ TEST_P(Scharr, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d", roicols, roirows, src1x, src1y, dstx, dsty); - EXPECT_MAT_NEAR(dst, cpu_dst, 1, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1, ""); } } @@ -691,42 +348,18 @@ TEST_P(Scharr, Mat) ///////////////////////////////////////////////////////////////////////////////////////////////// // GaussianBlur - -PARAM_TEST_CASE(GaussianBlur, MatType, cv::Size, int) +struct GaussianBlur : FilterTestBase { int type; cv::Size ksize; int bordertype; - double sigma1, sigma2; - //src mat - cv::Mat mat1; - cv::Mat dst; - - // set up roi - int roicols; - int roirows; - int src1x; - int src1y; - int dstx; - int dsty; - - //src mat with roi - cv::Mat mat1_roi; - cv::Mat dst_roi; - //ocl dst mat for testing - cv::ocl::oclMat gdst_whole; - - //ocl mat with roi - cv::ocl::oclMat gmat1; - cv::ocl::oclMat gdst; - virtual void SetUp() { type = GET_PARAM(0); ksize = GET_PARAM(1); - bordertype = GET_PARAM(2); + bordertype = GET_PARAM(3); cv::RNG &rng = TS::ptr()->get_rng(); cv::Size size(MWIDTH, MHEIGHT); @@ -739,36 +372,6 @@ PARAM_TEST_CASE(GaussianBlur, MatType, cv::Size, int) } - void random_roi() - { -#ifdef RANDOMROI - //randomize ROI - cv::RNG &rng = TS::ptr()->get_rng(); - roicols = rng.uniform(2, mat1.cols); - roirows = rng.uniform(2, mat1.rows); - src1x = rng.uniform(0, mat1.cols - roicols); - src1y = rng.uniform(0, mat1.rows - roirows); - dstx = rng.uniform(0, dst.cols - roicols); - dsty = rng.uniform(0, dst.rows - roirows); -#else - roicols = mat1.cols; - roirows = mat1.rows; - src1x = 0; - src1y = 0; - dstx = 0; - dsty = 0; -#endif - - mat1_roi = mat1(Rect(src1x, src1y, roicols, roirows)); - dst_roi = dst(Rect(dstx, dsty, roicols, roirows)); - - gdst_whole = dst; - gdst = gdst_whole(Rect(dstx, dsty, roicols, roirows)); - - - gmat1 = mat1_roi; - } - }; TEST_P(GaussianBlur, Mat) @@ -782,47 +385,52 @@ TEST_P(GaussianBlur, Mat) cv::Mat cpu_dst; gdst_whole.download(cpu_dst); - char sss[1024]; - sprintf(sss, "roicols=%d,roirows=%d,src1x=%d,src1y=%d,dstx=%d,dsty=%d", roicols, roirows, src1x, src1y, dstx, dsty); - EXPECT_MAT_NEAR(dst, cpu_dst, 1.0, sss); + EXPECT_MAT_NEAR(dst, cpu_dst, 1.0, ""); } } -INSTANTIATE_TEST_CASE_P(Filter, Blur, Combine(Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC4), +INSTANTIATE_TEST_CASE_P(Filter, Blur, Combine( + Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC4), Values(cv::Size(3, 3), cv::Size(5, 5), cv::Size(7, 7)), + Values(Size(0, 0)), //not use Values((MatType)cv::BORDER_CONSTANT, (MatType)cv::BORDER_REPLICATE, (MatType)cv::BORDER_REFLECT, (MatType)cv::BORDER_REFLECT_101))); INSTANTIATE_TEST_CASE_P(Filters, Laplacian, Combine( - Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4), - Values(1, 3))); + Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4), + Values(Size(3, 3)), + Values(Size(0, 0)), //not use + Values(0))); //not use -INSTANTIATE_TEST_CASE_P(Filter, Erode, Combine(Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4), Values(1))); - -//INSTANTIATE_TEST_CASE_P(Filter, Erode, Combine(Values(CV_8UC1, CV_8UC1), Values(false))); - -INSTANTIATE_TEST_CASE_P(Filter, Dilate, Combine(Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4), Values(1))); - -//INSTANTIATE_TEST_CASE_P(Filter, Dilate, Combine(Values(CV_8UC1, CV_8UC1), Values(false))); +INSTANTIATE_TEST_CASE_P(Filter, ErodeDilate, Combine( + Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4), + Values(Size(0, 0)), //not use + Values(Size(0, 0)), //not use + Values(1))); -INSTANTIATE_TEST_CASE_P(Filter, Sobel, Combine(Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4), - Values(1, 2), Values(0, 1), Values(3, 5), Values((MatType)cv::BORDER_CONSTANT, - (MatType)cv::BORDER_REPLICATE))); +INSTANTIATE_TEST_CASE_P(Filter, Sobel, Combine( + Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4), + Values(Size(3, 3), Size(5, 5)), + Values(Size(1, 0), Size(1, 1), Size(2, 0), Size(2, 1)), + Values((MatType)cv::BORDER_CONSTANT, (MatType)cv::BORDER_REPLICATE))); INSTANTIATE_TEST_CASE_P(Filter, Scharr, Combine( - Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC4), Values(0, 1), Values(0, 1), - Values((MatType)cv::BORDER_CONSTANT, (MatType)cv::BORDER_REPLICATE))); + Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC4), + Values(Size(0, 0)), //not use + Values(Size(0, 0), Size(0, 1), Size(1, 0), Size(1, 1)), + Values((MatType)cv::BORDER_CONSTANT, (MatType)cv::BORDER_REPLICATE))); INSTANTIATE_TEST_CASE_P(Filter, GaussianBlur, Combine( - Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC4), - Values(cv::Size(3, 3), cv::Size(5, 5)), - Values((MatType)cv::BORDER_CONSTANT, (MatType)cv::BORDER_REPLICATE))); + Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC4), + Values(Size(3, 3), Size(5, 5)), + Values(Size(0, 0)), //not use + Values((MatType)cv::BORDER_CONSTANT, (MatType)cv::BORDER_REPLICATE)));