2

I was asked to recognize logo in an image using opencv. The lecturer told me that I don't have to do logo detection but logo recognition only. I am using opencv in c++. Can I know the easiest way to do it??

Ps: newbie in computer vision.

edwin
  • 33
  • 1
  • 6

2 Answers2

9

It largely depends on your kind of images.

  • If your logo occupies say 90% of the image, you don't need detection, since you are probably good with color histograms.
  • If the logo is small compared to the image, you should "find" the logo, in order to focus your comparison on that and not on the background clutter.
  • There could be multiple logos on the same image?
  • The logo is always fully visible?
  • The logo is rigid? Or could be deformed? (think for example of a logo on a shirt or a small bottle)

Assuming that you have a single complete rigid logo to find, the simplest thing to try is template matching.

A more accurate approach is to match descriptors. You can also see a related topic on SO here

Other more robust approaches would require to build constellations of keypoints on your reference logo, and match those constellations on the target image.

Last, but not least, have fun on Google!

Markus
  • 5,976
  • 5
  • 6
  • 21
Miki
  • 40,887
  • 13
  • 123
  • 202
0

I agree with @Miki , you need to do template matching, my recomendation to you is to use sum of square differences and only use a rigid transformation, you can find a lot of information here. The last is one of the best books that I've red is simple to understand and it have the major part of the equations step by step.

Alexander Leon VI
  • 499
  • 1
  • 4
  • 18