1

I'm trying to do object recognition in an embedded environment, and for this I'm using Raspberry Pi (Specifically version 2).

I'm using OpenCV Library and as of now I'm using feature detection algorithms contained in OpenCV.

So far I've tried different approaches:

I tried different keypoint extraction and description algorithms: SIFT, SURF, ORB. SIFT and SURF are too heavy and ORB is not so good. Then I tried using different algorithms for keypoint extraction and then description. The first approach was to use FAST algorithm to extract key points and then ORB or SURF for description, the results were not good and not rotation invariant, then i tried mixing the others. I now am to the point where I get the best results time permitting using ORB for keypoint extraction and SURF for description. But it is still really slow.

Right now it is being used to match the object image (400x200) with frames captured from webcam. My definition of too slow is 2fps with 640x400 frame resolution. I wanted to take it to at least 5-6 fps per second, to obtain a more fluent video stream

So do you have any suggestions or new ideas to obtain better results? Am I missing something?

As additional information, I'm using Python 3.5 with OpenCV 3.1

closed as off-topic by Ghanima Aug 8 '17 at 20:12

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question does not appear to be specific to the Raspberry Pi within the scope defined in the help center." – Ghanima
If this question can be reworded to fit the rules in the help center, please edit the question.

0

You can use only SIFT for better results, just make sure image you are matching having very much similar to your stored image, I hope below links will help you

https://github.com/opencv/opencv/blob/master/samples/python/find_obj.py

http://www.pyimagesearch.com/2015/04/13/implementing-rootsift-in-python-and-opencv/

Not the answer you're looking for? Browse other questions tagged or ask your own question.