I want to capture two views of same scene. The scene consists of a set of objects kept on a table. From the two views, I wish to calculate homography for image matching. I want to know what is the maximum angle between the two views such that the homography can be accurately calculated. Right now, I am capturing the images at around 60 degrees of angle, but unable to construct homography accurately.


I don't think the degree of distance, which I assume you mean rotation between cameras, is relevant to computing the homography. Could you clarify what you mean by degrees of distance? The only requirement to compute a homography between two cameras is that there are at least 4 point correspondences (aka matching points) between the two images captured by the two cameras. The 4 point requirement has to do with the number of unknowns in the homography matrix, which because it's defined up to scale and is a 3x3 matrix, turns out to be 9 elements in matrix - 1 up to scale variable = 8 unknowns. Since we're dealing with planes, we have 2D points (x,y), so each point has 2 values, and thus 4 points give us 8 values.

Edit - After a lengthy chat discussion and some example images, it turned out the images were in fact rotated too far to obtain satisfactory point correspondences between frames using conventional methods. What ended up working was increasing the sampling rate by taking more pictures at smaller rotations (30 deg instead of 60 deg), which allowed us to track correspondences across multiple frames so the 60 degree frame could be matched with the 0 degree frame by using the 30 deg frame as a link. Let me know if I missed anything!

  • $\begingroup$ Corrected it, its angle. If I pick and provide 4 points to the system, we can assure to get a good homography. But the problem is I cannot afford to do that. I have to choose point correspondences automatically. I use SIFT-matching across the 2 views and provide the matching point pairs to RANSAC based homography estimation. If I am taking large angular distance b.w the two camera poses (remember, I have to move the camera around a clutter on table), I am not getting correct homography... And I cannot afford to capture too many views. That's why I wish to know a rough estimate $\endgroup$ – Swagatika Jan 30 '14 at 5:51
  • $\begingroup$ Can you provide a step by step list of what you're doing? This is what I believe you're doing based on what you've said so far: 1. Take picture of scene. 2. Manually rotate camera and take a second picture. 3. Compute SIFT features on two images and match (what are you using to compute SIFT features and what type of matcher are you using?). 3. Use point correspondences from matcher to compute homography with RANSAC. It'd be even better if you could provide example images. It seems like you could compute the SIFT features, use a FLANN matcher and compute the homography in OpenCV very easily. $\endgroup$ – Andrew Capodieci Jan 30 '14 at 16:43
  • $\begingroup$ ok.. (1) I have a couple of boxes on table. (2) I want to capture them from two views by moving the camera around the table. So there will be an angle between the camera poses from two views (3) I find SIFT features and match the feature points using SIFT matching. (4) I use those feature points to estimate homography. Now, the problem is if there is too much angle b/w camera views, I get wrong feature matching, and a wrong homography (which is almost singular). I cant afford to take it too close since that will be costly for my work... $\endgroup$ – Swagatika Jan 30 '14 at 16:45
  • $\begingroup$ i believe i edited my comment since you started your new comment 56 seconds ago...just fyi $\endgroup$ – Andrew Capodieci Jan 30 '14 at 16:46
  • $\begingroup$ If you can provide example images of the two views, the correspondences you match and the homography computed, that would help a lot $\endgroup$ – Andrew Capodieci Jan 30 '14 at 16:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.