short-circuitt / LOGOS

Spatial verification using Local Geometric Support
MIT License
5 stars 2 forks source link

Matching against multiple images #1

Closed catree closed 5 years ago

catree commented 5 years ago

Hi,

I am wondering if this method is suitable for matching one image against multiple images. What I want to achieve is object pose estimation. Typically I do:

"Training" step:

Detection step:

With LOGOS, I was thinking about: "Training" step:

Detection step:

Do you think the LOGOS method is appropriate to match N keypoints detected in the current image with M keypoints (concatenation of keypoints detected on multiple images and thus with different object views)? Also, is my approach valid?

Thanks.

short-circuitt commented 5 years ago

Hi,

With anything there is of course a trade-off. If you store a Bag of Words instead of the full descriptors then it will require less memory, but there will almost certainly be a drop in performance. It really depends what it more important for the particular application.

Similarly, LOGOS makes some simplifying assumptions about the positions of the descriptors. This allows it to use smaller descriptors in combination with a coarse Bag of Words (which was appropriate to the related application). I'm not sure if these assumptions will work in an application where the descriptors come from multiple images taken from different poses, it will really be specific to the particular application.

catree commented 5 years ago

Thanks for the answer.

I think I got it. This method is intended for matching against a large number of images where database descriptors are not available and reduced to BoW code to reduce memory footprint and computation. For applications where query and trained descriptors are available, classical matching strategies like ratio test should be adopted.

This is the matching result with LOGOS, OpenCV SURF and BoW:

LOGOS

There are some performance degradations that could come from a different implementation between OpenCV and Matlab SURF implementations and VLAD is not used here.

I would like to add this method in OpenCV contrib module if you have no objection.

short-circuitt commented 5 years ago

Yes of course!

FredHuang16 commented 5 years ago

Thanks for the answer.

I think I got it. This method is intended for matching against a large number of images where database descriptors are not available and reduced to BoW code to reduce memory footprint and computation. For applications where query and trained descriptors are available, classical matching strategies like ratio test should be adopted.

This is the matching result with LOGOS, OpenCV SURF and BoW:

LOGOS

There are some performance degradations that could come from a different implementation between OpenCV and Matlab SURF implementations and VLAD is not used here.

I would like to add this method in OpenCV contrib module if you have no objection.

Could you please share your implementation code ? Thanks very much.

catree commented 4 years ago

@FredHuang16 An implementation code is available in OpenCV contrib, pull request.