Recognizing an image from a list with OpenCV SIFT using the FLANN matching

前端 未结 2 841
耶瑟儿~
耶瑟儿~ 2021-02-01 10:46

The point of the application is to recognize an image from an already set list of images. The list of images have had their SIFT descriptors extracted and saved in files. Nothin

相关标签:
2条回答
  • 2021-02-01 11:15

    You can try to test if when matching, the lines between the source image and the target image are relatively parallel. If it's not a correct match, then you'd have a lot of noise and the lines won't be parallel.

    See the attached image which shows a correct match (using SURF and BF) - all the lines are mostly parallel (though I should point out that this is an easy example).

    enter image description here

    0 讨论(0)
  • 2021-02-01 11:29

    You are going correct way.

    First, use second nearest ratio isntead of your "good match by 2*min_dist" https://stackoverflow.com/a/23019889/1983544.

    Second, use homography other way. When you find homography, you have not only H ,matrix, but the number of correspondences consistent with it. Check if it is some reasonable number, say >=15. If less, than object is not matched.

    Third, if you have a big viewpoint change, SIFT or SURF are unable to match images. Try to use MODS instead (http://cmp.felk.cvut.cz/wbs/ here is Windows and Linux binaries, as well as paper describing algorithm) or ASIFT (much slower and matches much worse, but open source) http://www.ipol.im/pub/art/2011/my-asift/

    Or at least use MSER or Hessian-Affine detector instead of SIFT (retaining SIFT as descriptor).

    0 讨论(0)
提交回复
热议问题