Commit e4d33782 authored by yao's avatar yao

simplify logics in filter tests, remove redundant code in arithm tests

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