rewrote perf tests for SURF
authorIlya Lavrenov <ilya.lavrenov@itseez.com>
Sun, 2 Feb 2014 14:24:21 +0000 (18:24 +0400)
committerIlya Lavrenov <ilya.lavrenov@itseez.com>
Sun, 2 Feb 2014 22:00:29 +0000 (02:00 +0400)
modules/nonfree/perf/perf_main.cpp
modules/nonfree/perf/perf_surf_ocl.cpp [moved from modules/nonfree/perf/perf_surf.ocl.cpp with 66% similarity]
modules/nonfree/src/surf_ocl.cpp [moved from modules/nonfree/src/surf.ocl.cpp with 100% similarity]
modules/nonfree/test/test_surf_ocl.cpp [moved from modules/nonfree/test/test_surf.ocl.cpp with 100% similarity]

index d5f4a1a..03f9b71 100644 (file)
@@ -5,6 +5,9 @@ static const char * impls[] = {
 #ifdef HAVE_CUDA
     "cuda",
 #endif
+#ifdef HAVE_OPENCL
+    "ocl",
+#endif
     "plain"
 };
 
similarity index 66%
rename from modules/nonfree/perf/perf_surf.ocl.cpp
rename to modules/nonfree/perf/perf_surf_ocl.cpp
index cc48aa2..4528b79 100644 (file)
@@ -57,55 +57,68 @@ typedef perf::TestBaseWithParam<std::string> OCL_SURF;
     "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\
     "stitching/a3.png"
 
-PERF_TEST_P(OCL_SURF, DISABLED_with_data_transfer, testing::Values(SURF_IMAGES))
+#define OCL_TEST_CYCLE() for( ; startTimer(), next(); cv::ocl::finish(), stopTimer())
+
+PERF_TEST_P(OCL_SURF, with_data_transfer, testing::Values(SURF_IMAGES))
 {
     string filename = getDataPath(GetParam());
-    Mat img = imread(filename, IMREAD_GRAYSCALE);
-    ASSERT_FALSE(img.empty());
-
-    SURF_OCL d_surf;
-    oclMat d_keypoints;
-    oclMat d_descriptors;
-    Mat cpu_kp;
-    Mat cpu_dp;
+    Mat src = imread(filename, IMREAD_GRAYSCALE);
+    ASSERT_FALSE(src.empty());
 
+    Mat cpu_kp, cpu_dp;
     declare.time(60);
 
-    TEST_CYCLE()
+    if (getSelectedImpl() == "ocl")
     {
-        oclMat d_src(img);
+        SURF_OCL d_surf;
+        oclMat d_keypoints, d_descriptors;
 
-        d_surf(d_src, oclMat(), d_keypoints, d_descriptors);
+        OCL_TEST_CYCLE()
+        {
+            oclMat d_src(src);
 
-        d_keypoints.download(cpu_kp);
-        d_descriptors.download(cpu_dp);
+            d_surf(d_src, oclMat(), d_keypoints, d_descriptors);
+
+            d_keypoints.download(cpu_kp);
+            d_descriptors.download(cpu_dp);
+        }
     }
+    else if (getSelectedImpl() == "plain")
+    {
+        cv::SURF surf;
+        std::vector<cv::KeyPoint> kp;
 
-    SANITY_CHECK(cpu_kp, 1);
-    SANITY_CHECK(cpu_dp, 1);
+        TEST_CYCLE() surf(src, Mat(), kp, cpu_dp);
+    }
+
+    SANITY_CHECK_NOTHING();
 }
 
-PERF_TEST_P(OCL_SURF, DISABLED_without_data_transfer, testing::Values(SURF_IMAGES))
+PERF_TEST_P(OCL_SURF, without_data_transfer, testing::Values(SURF_IMAGES))
 {
     string filename = getDataPath(GetParam());
-    Mat img = imread(filename, IMREAD_GRAYSCALE);
-    ASSERT_FALSE(img.empty());
-
-    SURF_OCL d_surf;
-    oclMat d_keypoints;
-    oclMat d_descriptors;
-    oclMat d_src(img);
+    Mat src = imread(filename, IMREAD_GRAYSCALE);
+    ASSERT_FALSE(src.empty());
 
+    Mat cpu_kp, cpu_dp;
     declare.time(60);
 
-    TEST_CYCLE() d_surf(d_src, oclMat(), d_keypoints, d_descriptors);
+    if (getSelectedImpl() == "ocl")
+    {
+        SURF_OCL d_surf;
+        oclMat d_keypoints, d_descriptors, d_src(src);
+
+        OCL_TEST_CYCLE() d_surf(d_src, oclMat(), d_keypoints, d_descriptors);
+    }
+    else if (getSelectedImpl() == "plain")
+    {
+        cv::SURF surf;
+        std::vector<cv::KeyPoint> kp;
+
+        TEST_CYCLE() surf(src, Mat(), kp, cpu_dp);
+    }
 
-    Mat cpu_kp;
-    Mat cpu_dp;
-    d_keypoints.download(cpu_kp);
-    d_descriptors.download(cpu_dp);
-    SANITY_CHECK(cpu_kp, 1);
-    SANITY_CHECK(cpu_dp, 1);
+    SANITY_CHECK_NOTHING();
 }
 
 #endif // HAVE_OPENCV_OCL