|
|
|
@ -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<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 std::tr1::tuple<NormType, bool> Norm_CrossCheck_t; |
|
|
|
|
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; |
|
|
|
|
|
|
|
|
|
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 ) |
|
|
|
|