update BruteForceMatcher_GPU performance test

This commit is contained in:
Vladislav Vinogradov 2011-01-26 15:35:41 +00:00
parent feff022422
commit cecfde309c

View File

@ -278,39 +278,24 @@ TEST(SURF)
TEST(BruteForceMatcher) TEST(BruteForceMatcher)
{ {
RNG rng(0);
// Init CPU matcher // Init CPU matcher
int desc_len = 128; int desc_len = 128;
int num_trains = rng.uniform(1, 5);
BruteForceMatcher< L2<float> > matcher; BruteForceMatcher< L2<float> > matcher;
Mat query; Mat query;
gen(query, rng.uniform(100, 300), desc_len, CV_32F, 0, 10); gen(query, 3000, desc_len, CV_32F, 0, 10);
vector<Mat> trains(num_trains); Mat train;
for (int i = 0; i < num_trains; ++i) gen(train, 3000, desc_len, CV_32F, 0, 10);
{
Mat train;
gen(train, rng.uniform(100, 300), desc_len, CV_32F, 0, 10);
trains[i] = train;
}
matcher.add(trains);
// Init GPU matcher // Init GPU matcher
gpu::BruteForceMatcher_GPU< L2<float> > d_matcher; gpu::BruteForceMatcher_GPU< L2<float> > d_matcher;
gpu::GpuMat d_query(query); gpu::GpuMat d_query(query);
gpu::GpuMat d_train(train);
vector<gpu::GpuMat> d_trains(num_trains);
for (int i = 0; i < num_trains; ++i)
{
d_trains[i] = trains[i];
}
d_matcher.add(d_trains);
// Output // Output
vector< vector<DMatch> > matches(1); vector< vector<DMatch> > matches(1);
@ -319,32 +304,32 @@ TEST(BruteForceMatcher)
SUBTEST << "match"; SUBTEST << "match";
CPU_ON; CPU_ON;
matcher.match(query, matches[0]); matcher.match(query, train, matches[0]);
CPU_OFF; CPU_OFF;
GPU_ON; GPU_ON;
d_matcher.match(d_query, d_matches[0]); d_matcher.match(d_query, d_train, d_matches[0]);
GPU_OFF; GPU_OFF;
SUBTEST << "knnMatch"; SUBTEST << "knnMatch";
int knn = rng.uniform(3, 10); int knn = 10;
CPU_ON; CPU_ON;
matcher.knnMatch(query, matches, knn); matcher.knnMatch(query, train, matches, knn);
CPU_OFF; CPU_OFF;
GPU_ON; GPU_ON;
d_matcher.knnMatch(d_query, d_matches, knn); d_matcher.knnMatch(d_query, d_train, d_matches, knn);
GPU_OFF; GPU_OFF;
SUBTEST << "radiusMatch"; SUBTEST << "radiusMatch";
float max_distance = rng.uniform(25.0f, 65.0f); float max_distance = 45.0f;
CPU_ON; CPU_ON;
matcher.radiusMatch(query, matches, max_distance); matcher.radiusMatch(query, train, matches, max_distance);
CPU_OFF; CPU_OFF;
GPU_ON; GPU_ON;
d_matcher.radiusMatch(d_query, d_matches, max_distance); d_matcher.radiusMatch(d_query, d_train, d_matches, max_distance);
GPU_OFF; GPU_OFF;
} }