Commit 5047f2d6 authored by Andrey Kamaev's avatar Andrey Kamaev

Fix perf tests in features2d module

parent 95b6a103
...@@ -6,17 +6,15 @@ using namespace perf; ...@@ -6,17 +6,15 @@ using namespace perf;
using std::tr1::make_tuple; using std::tr1::make_tuple;
using std::tr1::get; using std::tr1::get;
CV_FLAGS(NormType, NORM_L1, NORM_L2, NORM_L2SQR, NORM_HAMMING, NORM_HAMMING2) CV_ENUM(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)
typedef std::tr1::tuple<NormType, DestinationType, bool> Norm_Destination_CrossCheck_t; typedef std::tr1::tuple<NormType, MatType, bool> Norm_Destination_CrossCheck_t;
typedef perf::TestBaseWithParam<Norm_Destination_CrossCheck_t> Norm_Destination_CrossCheck; typedef perf::TestBaseWithParam<Norm_Destination_CrossCheck_t> Norm_Destination_CrossCheck;
typedef std::tr1::tuple<NormType, bool> Norm_CrossCheck_t; typedef std::tr1::tuple<NormType, bool> Norm_CrossCheck_t;
typedef perf::TestBaseWithParam<Norm_CrossCheck_t> Norm_CrossCheck; typedef perf::TestBaseWithParam<Norm_CrossCheck_t> Norm_CrossCheck;
typedef std::tr1::tuple<SourceType, bool> Source_CrossCheck_t; typedef std::tr1::tuple<MatType, bool> Source_CrossCheck_t;
typedef perf::TestBaseWithParam<Source_CrossCheck_t> Source_CrossCheck; typedef perf::TestBaseWithParam<Source_CrossCheck_t> Source_CrossCheck;
void generateData( Mat& query, Mat& train, const int sourceType ); void generateData( Mat& query, Mat& train, const int sourceType );
...@@ -29,27 +27,25 @@ PERF_TEST_P(Norm_Destination_CrossCheck, batchDistance_8U, ...@@ -29,27 +27,25 @@ PERF_TEST_P(Norm_Destination_CrossCheck, batchDistance_8U,
) )
{ {
NormType normType = get<0>(GetParam()); NormType normType = get<0>(GetParam());
DestinationType destinationType = get<1>(GetParam()); int destinationType = get<1>(GetParam());
bool isCrossCheck = get<2>(GetParam()); bool isCrossCheck = get<2>(GetParam());
int knn = isCrossCheck ? 1 : 0;
Mat queryDescriptors; Mat queryDescriptors;
Mat trainDescriptors; Mat trainDescriptors;
Mat dist; Mat dist;
Mat ndix; Mat ndix;
int knn = 1;
generateData(queryDescriptors, trainDescriptors, CV_8U); generateData(queryDescriptors, trainDescriptors, CV_8U);
if(!isCrossCheck)
{
knn = 0;
}
declare.time(30);
TEST_CYCLE() TEST_CYCLE()
{ {
batchDistance(queryDescriptors, trainDescriptors, dist, destinationType, (isCrossCheck) ? ndix : noArray(), batchDistance(queryDescriptors, trainDescriptors, dist, destinationType, (isCrossCheck) ? ndix : noArray(),
normType, knn, Mat(), 0, isCrossCheck); normType, knn, Mat(), 0, isCrossCheck);
} }
SANITY_CHECK(dist);
if (isCrossCheck) SANITY_CHECK(ndix);
} }
PERF_TEST_P(Norm_CrossCheck, batchDistance_Dest_32S, PERF_TEST_P(Norm_CrossCheck, batchDistance_Dest_32S,
...@@ -60,25 +56,23 @@ 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()); NormType normType = get<0>(GetParam());
bool isCrossCheck = get<1>(GetParam()); bool isCrossCheck = get<1>(GetParam());
int knn = isCrossCheck ? 1 : 0;
Mat queryDescriptors; Mat queryDescriptors;
Mat trainDescriptors; Mat trainDescriptors;
Mat dist; Mat dist;
Mat ndix; Mat ndix;
int knn = 1;
generateData(queryDescriptors, trainDescriptors, CV_8U); generateData(queryDescriptors, trainDescriptors, CV_8U);
if(!isCrossCheck)
{
knn = 0;
}
declare.time(30);
TEST_CYCLE() TEST_CYCLE()
{ {
batchDistance(queryDescriptors, trainDescriptors, dist, CV_32S, (isCrossCheck) ? ndix : noArray(), batchDistance(queryDescriptors, trainDescriptors, dist, CV_32S, (isCrossCheck) ? ndix : noArray(),
normType, knn, Mat(), 0, isCrossCheck); normType, knn, Mat(), 0, isCrossCheck);
} }
SANITY_CHECK(dist);
if (isCrossCheck) SANITY_CHECK(ndix);
} }
PERF_TEST_P(Source_CrossCheck, batchDistance_L2, PERF_TEST_P(Source_CrossCheck, batchDistance_L2,
...@@ -87,27 +81,25 @@ 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()); bool isCrossCheck = get<1>(GetParam());
int knn = isCrossCheck ? 1 : 0;
Mat queryDescriptors; Mat queryDescriptors;
Mat trainDescriptors; Mat trainDescriptors;
Mat dist; Mat dist;
Mat ndix; Mat ndix;
int knn = 1;
generateData(queryDescriptors, trainDescriptors, sourceType); generateData(queryDescriptors, trainDescriptors, sourceType);
if(!isCrossCheck)
{
knn = 0;
}
declare.time(30);
TEST_CYCLE() TEST_CYCLE()
{ {
batchDistance(queryDescriptors, trainDescriptors, dist, CV_32F, (isCrossCheck) ? ndix : noArray(), batchDistance(queryDescriptors, trainDescriptors, dist, CV_32F, (isCrossCheck) ? ndix : noArray(),
NORM_L2, knn, Mat(), 0, isCrossCheck); NORM_L2, knn, Mat(), 0, isCrossCheck);
} }
SANITY_CHECK(dist);
if (isCrossCheck) SANITY_CHECK(ndix);
} }
PERF_TEST_P(Norm_CrossCheck, batchDistance_32F, PERF_TEST_P(Norm_CrossCheck, batchDistance_32F,
...@@ -118,25 +110,23 @@ PERF_TEST_P(Norm_CrossCheck, batchDistance_32F, ...@@ -118,25 +110,23 @@ PERF_TEST_P(Norm_CrossCheck, batchDistance_32F,
{ {
NormType normType = get<0>(GetParam()); NormType normType = get<0>(GetParam());
bool isCrossCheck = get<1>(GetParam()); bool isCrossCheck = get<1>(GetParam());
int knn = isCrossCheck ? 1 : 0;
Mat queryDescriptors; Mat queryDescriptors;
Mat trainDescriptors; Mat trainDescriptors;
Mat dist; Mat dist;
Mat ndix; Mat ndix;
int knn = 1;
generateData(queryDescriptors, trainDescriptors, CV_32F); generateData(queryDescriptors, trainDescriptors, CV_32F);
if(!isCrossCheck)
{
knn = 0;
}
declare.time(30);
TEST_CYCLE() TEST_CYCLE()
{ {
batchDistance(queryDescriptors, trainDescriptors, dist, CV_32F, (isCrossCheck) ? ndix : noArray(), batchDistance(queryDescriptors, trainDescriptors, dist, CV_32F, (isCrossCheck) ? ndix : noArray(),
normType, knn, Mat(), 0, isCrossCheck); normType, knn, Mat(), 0, isCrossCheck);
} }
SANITY_CHECK(dist);
if (isCrossCheck) SANITY_CHECK(ndix);
} }
void generateData( Mat& query, Mat& train, const int sourceType ) void generateData( Mat& query, Mat& train, const int sourceType )
......
...@@ -35,6 +35,6 @@ PERF_TEST_P(fast, detect, testing::Combine( ...@@ -35,6 +35,6 @@ PERF_TEST_P(fast, detect, testing::Combine(
TEST_CYCLE() fd.detect(frame, points); TEST_CYCLE() fd.detect(frame, points);
SANITY_CHECK(points); SANITY_CHECK_KEYPOINTS(points);
} }
...@@ -26,6 +26,8 @@ PERF_TEST_P(orb, detect, testing::Values(ORB_IMAGES)) ...@@ -26,6 +26,8 @@ PERF_TEST_P(orb, detect, testing::Values(ORB_IMAGES))
vector<KeyPoint> points; vector<KeyPoint> points;
TEST_CYCLE() detector(frame, mask, points); TEST_CYCLE() detector(frame, mask, points);
SANITY_CHECK_KEYPOINTS(points);
} }
PERF_TEST_P(orb, extract, testing::Values(ORB_IMAGES)) PERF_TEST_P(orb, extract, testing::Values(ORB_IMAGES))
...@@ -46,6 +48,8 @@ PERF_TEST_P(orb, extract, testing::Values(ORB_IMAGES)) ...@@ -46,6 +48,8 @@ PERF_TEST_P(orb, extract, testing::Values(ORB_IMAGES))
Mat descriptors; Mat descriptors;
TEST_CYCLE() detector(frame, mask, points, descriptors, true); TEST_CYCLE() detector(frame, mask, points, descriptors, true);
SANITY_CHECK(descriptors);
} }
PERF_TEST_P(orb, full, testing::Values(ORB_IMAGES)) PERF_TEST_P(orb, full, testing::Values(ORB_IMAGES))
...@@ -64,4 +68,7 @@ PERF_TEST_P(orb, full, testing::Values(ORB_IMAGES)) ...@@ -64,4 +68,7 @@ PERF_TEST_P(orb, full, testing::Values(ORB_IMAGES))
Mat descriptors; Mat descriptors;
TEST_CYCLE() detector(frame, mask, points, descriptors, false); TEST_CYCLE() detector(frame, mask, points, descriptors, false);
SANITY_CHECK_KEYPOINTS(points);
SANITY_CHECK(descriptors);
} }
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