Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Best feature extractor / descriptor for mobile in opencv

So we are doing this computer vision study project trying to recognize paintings on the walls.

After some research we decided to go for the ORB/ORB extractor/descriptor because of it's speed and good accuracy.

For the matching we are using a BruteForceMatcher.

We searched and read very much about this topic, but there are still some questions which just don't find the answers to.

We are using a library of descriptor mat's of max 320px width or height. The scene is also around 320px.

The image is read in as colored because of the practical improvement on accuracy.

On the web examples are all converted to gray, why is this? And is it better to do so in every situation?

Is the ORB/ORB really the fastest algoritm for the scenario we want to use it for? GFTT/FREAK also gives very good results but it's way too slow.

At real time tests we are getting an accuracy of about 50%, this is way too low. What should we study to improve the accuracy?

For example, the matching is done like this right now:

get matches -> keep valid matches -> if matches > X -> return title

We are thinking about trying it another way:

get matches -> keep valid matches -> calculate likelihood percentage of image -> return image with highest percentage if percentage > X

Does this make sense?

Sometimes the matcher returns the full set of matches as valid matches, so if there are 500 matches, it returns 500 matches as valid. Even on a black camera picture. We think there is something wrong with the camera, maybe it's in use or something. Or it could be the matcher distance is too low?

Reducing the number of features seems to speed up the whole like: 2x less features == 2x faster speed

Does reducing the number of features by default reduce the accuracy?

We are looking for some tips to improve detection accuracy, that's the top priority but maybe somebody has some other tips because this project is going to fail if accuracy is not going to increase :(

Best feature extractor / descriptor for Improving ORB/ORB accuracy on mobile in opencvwith OpenCV

So we are doing this computer vision study project trying to recognize paintings on the walls.

After some research we decided to go for the ORB/ORB extractor/descriptor because of it's speed and good accuracy.

For the matching we are using a BruteForceMatcher.

We searched and read very much about this topic, but there are still some questions which just don't find the answers to.

We are using a library of descriptor mat's of max 320px width or height. The scene is also around 320px.

The image is read in as colored because of the practical improvement on accuracy.

On the web examples are all converted to gray, why is this? And is it better to do so in every situation?

Is the ORB/ORB really the fastest algoritm for the scenario we want to use it for? GFTT/FREAK also gives very good results but it's way too slow.

At real time tests we are getting an accuracy of about 50%, this is way too low. What should we study to improve the accuracy?

For example, the matching is done like this right now:

get matches -> keep valid matches -> if matches > X -> return title

We are thinking about trying it another way:

get matches -> keep valid matches -> calculate likelihood percentage of image -> return image with highest percentage if percentage > X

Does this make sense?

Sometimes the matcher returns the full set of matches as valid matches, so if there are 500 matches, it returns 500 matches as valid. Even on a black camera picture. We think there is something wrong with the camera, maybe it's in use or something. Or it could be the matcher distance is too low?

Reducing the number of features seems to speed up the whole like: 2x less features == 2x faster speed

Does reducing the number of features by default reduce the accuracy?

We are looking for some tips to improve detection accuracy, that's the top priority but maybe somebody has some other tips because this project is going to fail if accuracy is not going to increase :(