As I know, Homography (projective transformation) in computer vision can be used to detect object in images but all the examples, I've seen, were on planar objects. Does Homography only work on a planar surface object? Or It can detect any kind of objects? I'm asking because I tried to find the object below (It's a non planar surface object) with no success:
In this link, you can see the code. I used it as it's with just updating the name of images so what we're doing is the following:
- Getting the keypoints from the 2 images using SURF
- Describe the keypoints using SURF descriptor
- Try to match the keypoints between the 2 images
- Use the list of matched key points to compute Homography matrix.
- Get the coordinates of the object corner points.
- Apply perspectiveTransform to get their correspondings in the scene image
- Draw lines between the results points.
Please note that the green lines drawn inside the big circles in the images are the line drawn to represent the results points.
Based on what I showed above, it seems to me that there is something not clear in my understanding of Homography and where it can be applied because this kind of example is quite simple and it didn't work. I'm currently looking into OpenCV code to understand exactly how they estimate it but it's not going quickly.So, does anyone have any clue on how OpenCV computes this transformation? Or any reference that can help in this situation?
EDITED: Here is another example:
I applied the homography on the object and the yellow box which is just containing the instrument I need. The results are even worse because now it's somehow a point as you can see in the green point surrounded by the red circle. Also, I can't take images for the objects from the scene because I have a lot of videos so what I'm doing is taking a separate images for each intruments and trying to find them in the scene videos.