Logo detection / identification on TV screens
Hi,
I want to do "TV channel" detection by identifying the "channel logo".
Suppose I need to identify two channels: A and B. I grab some sample screenshots, and find out the region of these logos in their respective screenshots as ROI_A and ROI_B.
I'm trying with opencv's feature2d framework (SurfFeatureDetector/SurfDescriptorExtractor and FlannBasedMatcher, but the result is not working (details follow).
Now the detection task is performed as:
- Given a screenshot of an unknown channel, the image SCENE.
- For logo A:
- get A's pre-calculated SURF data (keypoints, descriptors)
- calculate SCENE(ROI_A) region's SURF data
- use FlannBasedMatcher upon these descriptors to get some "match" data
- repeat such process for other logos (here the B)
- I have posted a resultant picture, the right side is the sample scene, the left side has two different logos. The upper one is a random one, the bottom one is the same as the logo on the scene. But the upper one obviously have a lot of "matches", while the bottom one barely has few. i.e., totally wrong.
So my questions are:
- For my task, the logo's region is fixed for a specific one, and no rotation or scaling need to be considered. So is the feature2d framework appropriate for this, or is there some other opencv feature better fit for this?
- How do I get a good logo image as the object, currently I find some clean scenes (those with pure color background) and use the logo on that scene as target object.
- I thought I could count on the number of "matches" to get the correct channel (the logo with the most matches will be regarded as the channel). But the experiment shows this is not reliable. As I only want to know whether it's matched, but not the object's location, how to do this?
I'm expecting to identify about 70 channels, but currently with two sample channels, the result is misleading most time. Any help is appreciated and thanks for your time.
Test result picture:
I would try LBP, but this is only my opinion.
Doesn't need to be LBP, but indeed, a CascadeClassifier in conjunction with LBP or HOG would have been my first choice here as well...
@zeroxia . i am also looking forward to implement Logo identification from scrren shots. here i am getting the images with help of ffmpeg. i need to identify the channels. I am completely new to this. how can i implement this ? I am working on Linux
@suku.raghav: Please go through the OpenCV-tutorials and try it yourself, for particular questions ask a new question!