ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

You should use opencv_bridge to load and convert your images. Then use a similarity method: It depends an what you want to get. Do you only want to recognize the object in the image or also localize it?

  1. If only detection is needed: Use a Sift descriptor and detect all features in your image. If you have more images do it on each one and choose the principal components i.e. the features that occur in all of the training images. Then check for features in the image you want to detect the object in. If it has the same features up to some percentage, accept it as a valid detection.

  2. Template matching, if the object is of about the same size in each image. This is not rotation invariant nor scale invariant and also strongly affected by viewpoint changes. Very slow btw.

  3. If the object is not textured and the rest is highly textured, remove the textured components, p.e. by using a Canny Edge Detector. If your object is round you might also use Hough transform for circles.

There would be much more and it all depends on precise problem formulation. Try to give all information possible when asking questions.