Question about FlannBasedMatcher

asked 2013-11-14 16:42:57 -0500

Papercut gravatar image

Hi,

I am trying to train a set of patterns and find a match within a test image.

That being said, I have many descriptors from train data set:

cv::Mat descriptor1;
cv::Mat descriptor2;
cv::Mat descriptor3;
cv::Mat descriptor4;
cv::Mat descriptor5;

//put all train set descriptors in a vector
std::vector<cv::Mat> descriptors;
descriptors.push_back(descriptor1); ... descriptors.push_back(descriptor5);

//add and train
FlannBasedMatcher matcher;
matcher.add(descriptors);
matcher.train();

//match
cv::Mat descriptorTest;
matcher.knnMatch(descriptorTest, m_knnMatches, 2);

//ratio test to get good matches
std::vector<cv::DMatch> matches = ratioTest(m_knnMatches);

// the result matches after ratio test contains many DMatch for example:
DMatch (queryIdx: *, trainIdx: *, imageIdx: 1, distance: *.**}
DMatch (queryIdx: *, trainIdx: *, imageIdx: 2, distance: *.**}
DMatch (queryIdx: *, trainIdx: *, imageIdx: 0, distance: *.**}
DMatch (queryIdx: *, trainIdx: *, imageIdx: 1, distance: *.**}
DMatch (queryIdx: *, trainIdx: *, imageIdx: 4, distance: *.**}

As you can see, the DMatch objects in the vector are from different trained image - different imageIdx.

As the accuracy is still not very good, I want to try Homography estimation but I don't know how to do it with that kinds of result matches. Only Homography example I have is working on 1 train image and 1 test image. Can you give me some advices for implementing Homography estimation in this situation?

What else can you think of to improve accuracy as post processes?

edit retag flag offensive close merge delete