I'm trying to get the location of a certain object in an image taken with a camera. Template matching will not do in this case, because i need a scale/rotation invariant solution.
So i'm now using the FAST algorithm from OpenCV to detect keypoints in my image, which seems to be working good.
But what next? I have a 'template image' of the object that i want to detect. I can imagine that i have to detect the keypoints of this template image too, and then compare it showhow to the image taken with the camera. Is this what i have to do next and if so, what functions can i use for that?? (i'm using OpenCV)
Or is there another way of doing this?
So how can i use the keypoints to detect a certain object in my image?
You are using FAST for detecting keypoints, that is OK.
Now the next step is using a Descriptor Extractator. What a descriptor extractor is? Is an algorithm that generates a description of a keypoint that makes this keypoint recognizable by a matcher. Famous descriptors are SIFT, FREAK...
After you find descriptors in the template image and in the query image, you will need a matcher. The matcher will tell you which descriptors are the same.
Note that SIFT requires an euclidean-distance-based matcher (FLANN), but FREAK or other binary descriptors require a hamming-distance-based matcher.
Try the ORB features instead. They are designed to be faster.
Also, take a look at the CARD descriptors.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With