Reputation: 21
How can I determine/detect if I have a necessary object in the photo or not?
I don't need to recognize the class of the object, but I need to know if I have exactly the same object as in the template picture.
Thus far I have tried to use template matching, histogram matching and SIFT-like methods, but none of these methods have the level of accuracy I need.
Can anyone suggest a precise method?
UPD
DB size in release - 5.000-10.000 unique objects
Available training data set - 50 objects.
Upvotes: 2
Views: 2025
Reputation: 650
I think if you need high accuracy just one method won't suffice. You will have to use a combination of methods. Like you have tried template matching, histogram matching and SIFT-like methods separately. But if you try an intelligent combination of these, it may help.
Apart from this you can try machine learning approach. It is usually said to be more robust
Upvotes: 1
Reputation: 2137
If you're only interested in this object (or a small number of objects) you can train a classifier - for example V&J (cascade classifier) or try a Bag of words approach.
You can read about cascade classifier here: http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html
Theoretical background on bag of words: http://gilscvblog.wordpress.com/2013/08/23/bag-of-words-models-for-visual-categorization/
And openCV's implementation of bag of words: http://docs.opencv.org/modules/features2d/doc/object_categorization.html
Upvotes: 2
Reputation: 7335
The difference in lighting, the strap that exists in one image, the deformation (non-linear), rotation, translation, scale etc... increase the difficulty of this problem.
For starters you could perhaps select 10-20 images of this purse. Compute features such as histogram, sift features, or some wavelet based features for each purse, and then see if an incoming image of the purse matches any subset of the points in any of the training images.
If you have some success here, then you could consider building an image classifier using machine learning techniques. You would need to collect training data, having each object you want to recognize from multiple views, orientations, deformations. Searching the net for "machine learning in image process" will get you in the right direction.
Upvotes: 1