I am trying to match the logo (template) that I have with some images. My images are colored by nature, and as I do, cvMatchTemplate () from openCV is used and runs a template (logo) on top of the original image. I scale the template to several levels to find the best match. Keep in mind that I just find digitally imprinted logos in the image, not the logos present on the scene. For example: detecting sky sports from this image http://i56.tinypic.com/2v3j3wx.jpg (Image is intended solely for the presentation and clarity of my task, and not for images that I work with
My images do not have a fixed resolution, so I scale it to the standard 800x600. Now that my original image resolution is very poor, say 300x300, the results are very ordinary. I use the = CV_TM_CCOEFF_NORMED method in the template parameter, and the estimates even for exact matches are quite low (only 0.4 from 0 to 1.0), which makes it difficult to determine if the logo is present or not. I have two questions:
1 - Compared to the opencv template, how it handles color images. I tried to understand from the document, and my conclusion was that it calculates the rating for each channel separately, and the best is taken. If so, I would better not consider all three channels to achieve better results.
2 - Any alternative approach! :)
Let me know if something is not clear!
EDIT (more info): As discussed in the comments, I am attaching my current match method, which is a scaled pattern matching. Please note that the attached images are for test purposes only and are not my actual set of images that I work with (they cannot be placed because the images are proprieotry) Original image
Logo
Output Image Using Pattern Matching 
Although the pattern is matched, the score obtained here is 0.59 for this best match. Although a relatively good result for the match, itβs still not enough for me to say for sure that the logo you need exists or not. On my test images, when the logo on the screen is transparent, it would still detect the logo, but with a poor score of 0.3-0.4. Is it possible to get a better result with SURF / SIFT?
EDIT (attempt with SURF) I tried to run the SURF code already cited as an example in the official opencv documentation (minHessian = 2000). link here is the result. I'm not sure how to interpret it (2.3 points seem to be within the expected border. Is this considered good?
Thanks
python image-processing opencv
Ajay nair
source share