简体   繁体   中英

The real time SIFT descriptor matching for multiple images C++/OpenCV

There are 10 pages from the same kid book which the content of pages is all pictures and I extracted the keypoints and the descriptors from each of them as my training data. I want to detect which pages is in camera based matching descriptors.

By now, I implement it by extracting the keypoints and the descriptors for every frame and matching the descriptors from training data one by one by using FlannBasedMatcher from OpenCV then it returns the best matched one.

The problem here is it could not implement in real time and the running time would be really slow when the training data more than 3 pages.

Does any guys know any better approach to implement it please?

Matching is an expensive process but can be parallelized and there are some optimizations (like the cosine matching between vectors) to speed things up.

If you want a higher accuracy you don't have much choice and you need to group match the features (this requires additional time proportional to the number of training data and keypoints found).

Also: consider using SURF instead of SIFT, it is much faster due to some smart optimizations.

Indeed Surf is a much better algorithm, while it is less accurate than sift, you'll have that it's run time is near real time, I would also suggest, as said above to calculate the features and do the matching using paralleled computing( easy enough if you just used OpenMP)..

Take into consideration however, that surf finds a lot less keypoints so if your object is not "intresting" or big enough.. you won't be matching a lot...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM