Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find a good homography from different point of view of objects?

I am doing object detection using feature extraction (sift,orb).

I want to extract ORB feature from different point of view of the object (train images) and then matching all of them with a query image.

The problem I am facing is: how can I create a good homography from keypoint coming from different point of view of the image that have of course different sizes?

Edit

I was thinking to create an homography for each train images that got say 3-4 matches and then calculate some "mean" homography...

The probleam arise when you have for example say just 1-2 matches from each train image, at that point you cannot create not even 1 homography

Code for create homography

  //> For each train images with at least some good matches ??
  H = findHomography( train, scene, CV_RANSAC );
  perspectiveTransform( trainCorners, sceneCorners, H);
like image 246
dynamic Avatar asked Jul 16 '12 22:07

dynamic


3 Answers

I think there is no point on doing that as a pair of images A and B has nothing to do with a pair of images B and C when you talk about homography. You will get different sets of good matches and different homographies, but homographies will be unrelated and no error minimization would have a point.

All minimization has to be within matches, keypoints and descriptors considering just the pair of images.

There is an idea similar to what you ask in FREAK descriptor. You can train the selected pairs with a set of images. That means that FREAK will decide the best pattern for extracting descriptors basing on a set of images. After this training you are supposed to find more robust mathces that will give you a better homography.

like image 59
Jav_Rock Avatar answered Oct 26 '22 15:10

Jav_Rock


To find a good homography you need accurate matches of your keypoints. You need 4 matches.

The most common methos is DLT combined with RANSAC. DLT is a linear transform that finds the homography 3x3 matrix that proyects your keypoints into the scene. RANSAC finds the best set of inliers/outliers that satisfies the mathematicl model, so it will find the best 4 points as input of DLT.

EDIT

You need to find robust keypoints. SIFT is supossed to do that, scale and perspective invariant. I don't think you need to train with different images. Finding a mean homography has no point. You need to find an only homography for an object detected, and that homography will be the the transformation between the marker and the object detected. Homography is precise, there is no point on finding a mean.

like image 23
Carlos Cachalote Avatar answered Oct 26 '22 16:10

Carlos Cachalote


Have you tried the approach of getting keypoints from views of the object: train_kps_1, train_kps_2... then match those arrays with the scene, then select the best matches from those several arrays resulting in a single array of good matches. And finally use that result in find homography as the 'train'.

The key here is how to select the best matches, which is a different question, which you can find a nice anwser here:

http://answers.opencv.org/question/15/how-to-get-good-matches-from-the-orb-feature/

And maybe here:

http://answers.opencv.org/question/2493/best-matches/

like image 28
Rui Marques Avatar answered Oct 26 '22 16:10

Rui Marques