美文网首页
图像识别--TemplateMatching

图像识别--TemplateMatching

作者: 烨枫_邱 | 来源:发表于2018-01-02 19:34 被阅读0次

图像识别中经常会遇到小图比大图的情况,何为“小图比大图”?就是事先截取sourceImg中的一小块图,然后试着在TargetImg中去找;在这个过程中实现所谓的“目标查找”,也就是图像断言。

自动化测试中经常会用到这种手段。下面,介绍一种“快速在大图中找到小图”的算法:TemplateMatching。


TEMPLATE MATCHING(模板匹配)

首先,这在里向OpenCV的研发团队致敬!N年前该公司便开发出了基于C#,Java和Python等语言的图像识别的API出来,快而且好用。后来很多应用程序皆发源于此。

那么何为“模板匹配”:Template matching[1]is a technique indigital image processingfor finding small parts of an image which match a template image. It can be used in manufacturing as a part of quality control,[2]a way to navigate a mobile robot,[3]or as a way to detect edges in images.[4].https://en.wikipedia.org/wiki/Template_matching.

宇宙最强模板标识

上图是小编用过的最好的Template,下面看看效果:(可见,模板图已经在Target中被识别到了)

Target图样

模板匹配失效怎么办

案例中的Template是一副无论你怎么转,始终都中心对称的图标,因此对TemplateMatching来说,有着极强的辨识度;如果遇到下面这种情况,TM就不准了(大家可以自行尝试)

1.直方图区分下面A|B图也是失效的;

图A和图B区分不开

2.还有下面这种图TM也会遇到困难(事实上TM是给出了最佳近似解):

直方图分析则不会错

3.这时候,一种解决方法就是将TM处理后的两幅图再读进来,进行一次比较。废话少说,上代码:

获取每个像素点的R、G、B值

这是一种笨且精确的办法,先将两张“小图”分别读进内存,然后逐点进行比较;遇见相同的就+1,直到算完最后一个点。最后再整体算相似百分比;注意:任何两张“看似”相同的图像,都有可能存在细微差异(有时候就几个像素的差值),因此不必追求相似度达到100%。此处应设置阈值,做最后的判定。

结果

600多ms的计算时间的确值得改进,留到以后做进一步优化吧。最后,奉上一副像素值化图帮助大家理解什么是图像的像素矩阵:

相关文章

网友评论

      本文标题:图像识别--TemplateMatching

      本文链接:https://www.haomeiwen.com/subject/pluqnxtx.html