美文网首页
图像识别--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