From 5047f2d64d54d01a81d8b2ba1c2cd3aa71a8bd61 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 9 Oct 2012 18:37:40 +0400 Subject: [PATCH] Fix perf tests in features2d module --- .../features2d/perf/perf_batchDistance.cpp | 52 ++++++++----------- modules/features2d/perf/perf_fast.cpp | 2 +- modules/features2d/perf/perf_orb.cpp | 7 +++ 3 files changed, 29 insertions(+), 32 deletions(-) diff --git a/modules/features2d/perf/perf_batchDistance.cpp b/modules/features2d/perf/perf_batchDistance.cpp index e95a41c1d..aa57d88d0 100644 --- a/modules/features2d/perf/perf_batchDistance.cpp +++ b/modules/features2d/perf/perf_batchDistance.cpp @@ -6,17 +6,15 @@ using namespace perf; using std::tr1::make_tuple; using std::tr1::get; -CV_FLAGS(NormType, NORM_L1, NORM_L2, NORM_L2SQR, NORM_HAMMING, NORM_HAMMING2) -CV_ENUM(SourceType, CV_32F, CV_8U) -CV_ENUM(DestinationType, CV_32F, CV_32S) +CV_ENUM(NormType, NORM_L1, NORM_L2, NORM_L2SQR, NORM_HAMMING, NORM_HAMMING2) -typedef std::tr1::tuple Norm_Destination_CrossCheck_t; +typedef std::tr1::tuple Norm_Destination_CrossCheck_t; typedef perf::TestBaseWithParam Norm_Destination_CrossCheck; typedef std::tr1::tuple Norm_CrossCheck_t; typedef perf::TestBaseWithParam Norm_CrossCheck; -typedef std::tr1::tuple Source_CrossCheck_t; +typedef std::tr1::tuple Source_CrossCheck_t; typedef perf::TestBaseWithParam Source_CrossCheck; void generateData( Mat& query, Mat& train, const int sourceType ); @@ -29,27 +27,25 @@ PERF_TEST_P(Norm_Destination_CrossCheck, batchDistance_8U, ) { NormType normType = get<0>(GetParam()); - DestinationType destinationType = get<1>(GetParam()); + int destinationType = get<1>(GetParam()); bool isCrossCheck = get<2>(GetParam()); + int knn = isCrossCheck ? 1 : 0; Mat queryDescriptors; Mat trainDescriptors; Mat dist; Mat ndix; - int knn = 1; generateData(queryDescriptors, trainDescriptors, CV_8U); - if(!isCrossCheck) - { - knn = 0; - } - declare.time(30); TEST_CYCLE() { batchDistance(queryDescriptors, trainDescriptors, dist, destinationType, (isCrossCheck) ? ndix : noArray(), normType, knn, Mat(), 0, isCrossCheck); } + + SANITY_CHECK(dist); + if (isCrossCheck) SANITY_CHECK(ndix); } PERF_TEST_P(Norm_CrossCheck, batchDistance_Dest_32S, @@ -60,25 +56,23 @@ PERF_TEST_P(Norm_CrossCheck, batchDistance_Dest_32S, { NormType normType = get<0>(GetParam()); bool isCrossCheck = get<1>(GetParam()); + int knn = isCrossCheck ? 1 : 0; Mat queryDescriptors; Mat trainDescriptors; Mat dist; Mat ndix; - int knn = 1; generateData(queryDescriptors, trainDescriptors, CV_8U); - if(!isCrossCheck) - { - knn = 0; - } - declare.time(30); TEST_CYCLE() { batchDistance(queryDescriptors, trainDescriptors, dist, CV_32S, (isCrossCheck) ? ndix : noArray(), normType, knn, Mat(), 0, isCrossCheck); } + + SANITY_CHECK(dist); + if (isCrossCheck) SANITY_CHECK(ndix); } PERF_TEST_P(Source_CrossCheck, batchDistance_L2, @@ -87,27 +81,25 @@ PERF_TEST_P(Source_CrossCheck, batchDistance_L2, ) ) { - SourceType sourceType = get<0>(GetParam()); + int sourceType = get<0>(GetParam()); bool isCrossCheck = get<1>(GetParam()); + int knn = isCrossCheck ? 1 : 0; Mat queryDescriptors; Mat trainDescriptors; Mat dist; Mat ndix; - int knn = 1; generateData(queryDescriptors, trainDescriptors, sourceType); - if(!isCrossCheck) - { - knn = 0; - } - declare.time(30); TEST_CYCLE() { batchDistance(queryDescriptors, trainDescriptors, dist, CV_32F, (isCrossCheck) ? ndix : noArray(), NORM_L2, knn, Mat(), 0, isCrossCheck); } + + SANITY_CHECK(dist); + if (isCrossCheck) SANITY_CHECK(ndix); } PERF_TEST_P(Norm_CrossCheck, batchDistance_32F, @@ -118,25 +110,23 @@ PERF_TEST_P(Norm_CrossCheck, batchDistance_32F, { NormType normType = get<0>(GetParam()); bool isCrossCheck = get<1>(GetParam()); + int knn = isCrossCheck ? 1 : 0; Mat queryDescriptors; Mat trainDescriptors; Mat dist; Mat ndix; - int knn = 1; generateData(queryDescriptors, trainDescriptors, CV_32F); - if(!isCrossCheck) - { - knn = 0; - } - declare.time(30); TEST_CYCLE() { batchDistance(queryDescriptors, trainDescriptors, dist, CV_32F, (isCrossCheck) ? ndix : noArray(), normType, knn, Mat(), 0, isCrossCheck); } + + SANITY_CHECK(dist); + if (isCrossCheck) SANITY_CHECK(ndix); } void generateData( Mat& query, Mat& train, const int sourceType ) diff --git a/modules/features2d/perf/perf_fast.cpp b/modules/features2d/perf/perf_fast.cpp index 078ad9cf0..f550f7b33 100644 --- a/modules/features2d/perf/perf_fast.cpp +++ b/modules/features2d/perf/perf_fast.cpp @@ -35,6 +35,6 @@ PERF_TEST_P(fast, detect, testing::Combine( TEST_CYCLE() fd.detect(frame, points); - SANITY_CHECK(points); + SANITY_CHECK_KEYPOINTS(points); } diff --git a/modules/features2d/perf/perf_orb.cpp b/modules/features2d/perf/perf_orb.cpp index d318533ec..cf7b46b64 100644 --- a/modules/features2d/perf/perf_orb.cpp +++ b/modules/features2d/perf/perf_orb.cpp @@ -26,6 +26,8 @@ PERF_TEST_P(orb, detect, testing::Values(ORB_IMAGES)) vector points; TEST_CYCLE() detector(frame, mask, points); + + SANITY_CHECK_KEYPOINTS(points); } PERF_TEST_P(orb, extract, testing::Values(ORB_IMAGES)) @@ -46,6 +48,8 @@ PERF_TEST_P(orb, extract, testing::Values(ORB_IMAGES)) Mat descriptors; TEST_CYCLE() detector(frame, mask, points, descriptors, true); + + SANITY_CHECK(descriptors); } PERF_TEST_P(orb, full, testing::Values(ORB_IMAGES)) @@ -64,4 +68,7 @@ PERF_TEST_P(orb, full, testing::Values(ORB_IMAGES)) Mat descriptors; TEST_CYCLE() detector(frame, mask, points, descriptors, false); + + SANITY_CHECK_KEYPOINTS(points); + SANITY_CHECK(descriptors); }