Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Logo detection 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. Any suggestions will be appreciated.

Now the detection task is performed as:

  1. Given a screenshot of an unknown channel, the image SCENE.
  2. 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)
  3. 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: 1. 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? 2. 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. 3. 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?

Thanks again for your time,

Test result picture: surf+flann try

Logo detection 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. Any suggestions will be appreciated.

Now the detection task is performed as:

  1. Given a screenshot of an unknown channel, the image SCENE.
  2. 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)
  3. 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: 1. are:

  1. 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? 2. this?
  2. 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. 3. object.
  3. 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?

Thanks again for your time,

Test result picture: surf+flann try

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. Any suggestions will be appreciated.

Now the detection task is performed as:

  1. Given a screenshot of an unknown channel, the image SCENE.
  2. 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)
  3. 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:

  1. 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?
  2. 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.
  3. 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?

Thanks again for your time,

Test result picture: surf+flann try

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. Any suggestions will be appreciated.working (details follow).

Now the detection task is performed as:

  1. Given a screenshot of an unknown channel, the image SCENE.
  2. 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)
  3. 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:

  1. 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?
  2. 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.
  3. 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?

Thanks again 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,time.

Test result picture: surf+flann try