added mask support to cv::norm, cv::meanStdDev

This commit is contained in:
Ilya Lavrenov
2014-01-06 00:12:13 +04:00
parent 3a4d4080f4
commit 6ee0b6eb56
4 changed files with 168 additions and 22 deletions

View File

@@ -924,6 +924,25 @@ OCL_TEST_P(MeanStdDev, Mat)
}
}
OCL_TEST_P(MeanStdDev, Mat_Mask)
{
for (int j = 0; j < test_loop_times; j++)
{
generateTestData();
Scalar cpu_mean, cpu_stddev;
Scalar gpu_mean, gpu_stddev;
OCL_OFF(cv::meanStdDev(src1_roi, cpu_mean, cpu_stddev, mask_roi));
OCL_ON(cv::meanStdDev(usrc1_roi, gpu_mean, gpu_stddev, umask_roi));
for (int i = 0; i < cn; ++i)
{
EXPECT_NEAR(cpu_mean[i], gpu_mean[i], 0.1);
EXPECT_NEAR(cpu_stddev[i], gpu_stddev[i], 0.1);
}
}
}
//////////////////////////////////////// Log /////////////////////////////////////////
@@ -1124,6 +1143,19 @@ OCL_TEST_P(Norm, NORM_INF_1arg)
}
}
OCL_TEST_P(Norm, NORM_INF_1arg_mask)
{
for (int j = 0; j < test_loop_times; j++)
{
generateTestData();
OCL_OFF(const double cpuRes = cv::norm(src1_roi, NORM_INF, mask_roi));
OCL_ON(const double gpuRes = cv::norm(usrc1_roi, NORM_INF, umask_roi));
EXPECT_NEAR(cpuRes, gpuRes, 0.1);
}
}
OCL_TEST_P(Norm, NORM_L1_1arg)
{
for (int j = 0; j < test_loop_times; j++)
@@ -1137,6 +1169,19 @@ OCL_TEST_P(Norm, NORM_L1_1arg)
}
}
OCL_TEST_P(Norm, NORM_L1_1arg_mask)
{
for (int j = 0; j < test_loop_times; j++)
{
generateTestData();
OCL_OFF(const double cpuRes = cv::norm(src1_roi, NORM_L1, mask_roi));
OCL_ON(const double gpuRes = cv::norm(usrc1_roi, NORM_L1, umask_roi));
EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-6);
}
}
OCL_TEST_P(Norm, NORM_L2_1arg)
{
for (int j = 0; j < test_loop_times; j++)
@@ -1150,6 +1195,19 @@ OCL_TEST_P(Norm, NORM_L2_1arg)
}
}
OCL_TEST_P(Norm, NORM_L2_1arg_mask)
{
for (int j = 0; j < test_loop_times; j++)
{
generateTestData();
OCL_OFF(const double cpuRes = cv::norm(src1_roi, NORM_L2, mask_roi));
OCL_ON(const double gpuRes = cv::norm(usrc1_roi, NORM_L2, umask_roi));
EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-6);
}
}
OCL_TEST_P(Norm, NORM_INF_2args)
{
for (int relative = 0; relative < 2; ++relative)
@@ -1168,6 +1226,24 @@ OCL_TEST_P(Norm, NORM_INF_2args)
}
}
OCL_TEST_P(Norm, NORM_INF_2args_mask)
{
for (int relative = 0; relative < 2; ++relative)
for (int j = 0; j < test_loop_times; j++)
{
generateTestData();
int type = NORM_INF;
if (relative == 1)
type |= NORM_RELATIVE;
OCL_OFF(const double cpuRes = cv::norm(src1_roi, src2_roi, type, mask_roi));
OCL_ON(const double gpuRes = cv::norm(usrc1_roi, usrc2_roi, type, umask_roi));
EXPECT_NEAR(cpuRes, gpuRes, 0.1);
}
}
OCL_TEST_P(Norm, NORM_L1_2args)
{
for (int relative = 0; relative < 2; ++relative)
@@ -1186,6 +1262,24 @@ OCL_TEST_P(Norm, NORM_L1_2args)
}
}
OCL_TEST_P(Norm, NORM_L1_2args_mask)
{
for (int relative = 0; relative < 2; ++relative)
for (int j = 0; j < test_loop_times; j++)
{
generateTestData();
int type = NORM_L1;
if (relative == 1)
type |= NORM_RELATIVE;
OCL_OFF(const double cpuRes = cv::norm(src1_roi, src2_roi, type, mask_roi));
OCL_ON(const double gpuRes = cv::norm(usrc1_roi, usrc2_roi, type, umask_roi));
EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-6);
}
}
OCL_TEST_P(Norm, NORM_L2_2args)
{
for (int relative = 0; relative < 2; ++relative)
@@ -1204,6 +1298,24 @@ OCL_TEST_P(Norm, NORM_L2_2args)
}
}
OCL_TEST_P(Norm, NORM_L2_2args_mask)
{
for (int relative = 0; relative < 2; ++relative)
for (int j = 0; j < test_loop_times; j++)
{
generateTestData();
int type = NORM_L2;
if (relative == 1)
type |= NORM_RELATIVE;
OCL_OFF(const double cpuRes = cv::norm(src1_roi, src2_roi, type, mask_roi));
OCL_ON(const double gpuRes = cv::norm(usrc1_roi, usrc2_roi, type, umask_roi));
EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-6);
}
}
//////////////////////////////// Sqrt ////////////////////////////////////////////////
typedef ArithmTestBase Sqrt;