2012-03-16 72 views
3

我正在致力于识别电视频道的项目。 我正在拍照的渠道吸我试图避免背景,并从标志的中心采取样品。 我承认4个不同的标志,这里的模板:标识识别 - 如何提高性能

Channel1Channel2Channel3Channel4

怎么我的模板匹配算法的工作:
由于尺寸100×100的4个模板,分别代表不同的电视频道,每个具有不同的阈值(概率)。 用户正在从电视机捕捉徽标,然后算法如下: - 在每个模板上运行4个独立模板匹配,以接收每个模板匹配捕获图像的概率。 - 对于每个信道概率,如果信道的概率低于信道的阈值,则概率变为0; - 宣布认可的标志是最有可能的标志。如果所有概率都是0,则宣布“不承认”。例如,如果我有一个概率为0.85,阈值为0.9的通道,第二个通道的概率为0.8,阈值为0.75,则第二个通道“胜利”。

当我拍摄其中一个标志的照片时,95%的时间认可照片。

目前的结果:

  • 当试图检测第一( “笑脸” 标志),从10所检测的我得到了10个正确的检测。对于正确的模板和图像之间的模板匹配,我得到0.91到0.94之间的概率。对于其他标志,我的概率在0.77到0.91之间。
  • 当试图检测第二个(“绿色”标志)时,在10次检测中,我得到了10次正确的检测结果。对于正确的模板和图像之间的模板匹配,我得到的概率在0.78到0.91之间。对于其他徽标,我的概率介于0.71到0.83之间(但由于阈值高,检测成功)。
  • 当试图检测第三个(“圆形”标志)时,在10次检测中,我得到了9次正确的检测结果。对于正确的模板和图像之间的模板匹配,我得到0.83到0.92之间的概率。对于其他标志,我的概率介于0.73至0.91之间。
  • 当试图检测到第四个(“黑白”标志)时,在10次检测中,我得到了10次正确的检测结果。对于正确的模板和图像之间的模板匹配,我得到0.91到0.94之间的概率。对于其他标志,我的概率在0.78到0.92之间。
  • 当试图检测到一个“负面”的图像,很多时候我得到一个标志检测(这是不好的)。例如,如果我拿一张完整白纸的图像,它会检测第一个,第三个和第四个标识的概率大于0.9

如何改进我的算法或改变它以获得更好的结果在“负面”图像?

感谢您的帮助,

的Eyal

+0

您的模板匹配到底如何工作? – TomP89 2012-03-16 11:13:50

+0

请看看编辑 - 我已经添加了决策算法和我做的测试结果。 – Eyal 2012-03-16 13:23:50

+0

@Eyal,看来你的模板匹配算法不够好。白纸与您的徽标不相似。 – 2012-03-16 14:17:30

回答

3

这一切都取决于你如何计算从模板的通道概率。您是使用颜色直方图还是梯度直方图,然后查看模板和测试图像之间的直方图差异?

另一种方法是计算测试图像的特征向量,例如梯度直方图和颜色直方图的连接。然后,手动创建一个训练数据库,在该数据库中您知道标签(1,2,3或4,具体取决于哪个标签在图像中可见),您可以将硬编码标签和直方图特征一起输入到分类器例程。为此,我建议使用LIBSVM,并且scikits.learn实现在Python中很容易使用。

这将产生一个支持向量机分类器,它将比较新图像的特征向量和来自训练集的支持向量,并确定最有可能出现在图像中的正确标签。如果你想要产生概率而不仅仅是预测标签的东西,那么你可以在这个支持向量机的顶部拟合逻辑模型。

Duda,Hart和Stork的Pattern Classification以及Bishop的Pattern Recognition and Machine Learning两本好书可供您阅读。

我为实现Python中的Poselets and Histogram of Oriented Gradients而编写的一些凌乱的Python代码可以找到linked here;也许你可以在那里获取一些代码段,它将适合你的任务。