cv图像识别

安卓opencv全分辨率找图


1、模板全分辨率找图概要

<h2>模板全分辨率找图要点:</h2> <p>1、找图范围不应再使用固定坐标,而应该使用屏幕百分比(<strong>比例因子</strong>)作为找图范围。因为不同分辨率显示同一图像,会等比例的进行缩放。 2、找图应提供合理的范围,强烈拒绝全屏找图,全屏找图会极大影响效率。</p> <p>3、找图性能【请详细细读以下参数的设定,以及原理说明。它们都是跟性能息息相关的】</p> <h2>matchTemplateExAll参数详解:</h2> <p>[TOC]</p> <h4>1、高斯步长</h4> <p>为适应全分辨率,插件会尝试放大(拉普拉斯图像金字塔)和缩小(高斯图像金字塔)模板图。然后与截图进行匹配。这里的步长解释为,每一次生成放大/缩小图像的百分比,比例。这个值可自行计算如下:</p> <p>如:原分辨率:1080 x 2100 (开发脚本时的分辨率) 如:适配的分辨率:540 x 1050 (适配的分辨率)</p> <p>以上作为假设,那么这个步长值可以一次到位(1080/540)*100 直接将模板图放大/缩小 到适配的分辨率大小。模板图只要直接缩小2倍就可以应用到 540 x 1050 分辨率。</p> <p>然而实际应用过程中,分辨率适配范围并没有2倍之差。并且手机屏幕尺寸繁多,匹配尺寸也达不到完全重合(<strong>小学数学:两个长宽比不同的矩形,是不能通过缩放大小使它们重合的</strong>)为了适配不同的分辨率,应该细分步长值, 这个值经过测定在,10~15 为最佳。但是过小的细分,虽然能提高找图精度,但同时会影响效率。</p> <h4>2、高斯次数</h4> <p>该值决定了生成 放大(拉普拉斯图像金字塔)和缩小(高斯图像金字塔)模板图的层级。比如高斯步长=10,高斯次数=5 那么最终生成的放大/缩小的模板匹配图,分别为 110%、120%、130%、140%、150%、100%、90%、80%、70%、60%、50%。通常5个层级的图像金字塔能适应大部分相近的分辨率。</p> <h4>3、适配方向</h4> <p>选择单方面向高分辨率适配(放大),还是向低分辨率适配(缩小)。这个选择有利于定向适配提高找图效率。当然插件也提供了放大/缩小的全方向的自动适配模式,不过该模式效率比较低。(注意:不管方向是适配低分还是高分,首次都会匹配原分辨率)</p> <h4>4、深度找图</h4> <p>matchTemplateExAll 函数找图并不像通常的找图方式,每次只返回1个目标。matchTemplateExAll 会返回找到的所有目标。(因为内部算法的原因,返回1个和多个效率上没啥区别)。</p> <p>这里深度找图的意思是:当matchTemplateExAll在找到1个或多个目标后,要不要将模板图进行缩放,往下继续寻找。</p> <p>这种应用场景出现在:在同一张图上,出现大小不一的目标。比如屏幕上有大小不一样的苹果图片,你选取大的那一张苹果图片作为模板图,如果你只想寻找大苹果图片,那么【深度找图】的值可以设置为false。如果不管大苹果,还是小苹果,你都想找到,那么【深度找图】需设置为true。这样才能把大苹果,小苹果全部找到。</p> <h4>5、缩放值</h4> <p>matchTemplateExAll 函数不同于常用的精确找图算法。在精确找图算法中,图片是不能随意进行缩放的,因为缩放有损图片像素值,会损失精度。</p> <p>matchTemplateExAll使用的是openCv中的模板匹配,还有其他的一些辅助算法实现。对图片的缩放影响并是很大(也有影响)。为了提高找图效率,可以适当的将截图、模板图。进行同比缩小以提升找图效率。 提升效率的同时,请注意:如果设置不当,可能会找不到图。这个值可以用100的公倍数/100 进行设置。例如:25/100=0.25 10/100=0.1 最好不要出现0.33 这样的。经过测试,0.5的缩放值,即可提高30%的效率。</p> <h4>6、性能指标汇总</h4> <p><strong> 1、高斯步长、通常在10~15之间,这也是默认值,可以选择性填写。 2、高斯次数、屏幕相差不大设置为2。相差较大设置为5。再往上感觉没啥必要了,重新抓图吧。 3、适配方向、默认为0,自动适应全分辨率。 最好根据适配的设备、和开发脚本的设备,的屏幕参数进行自动调节 4、深度找图、通常为false即可,除非有特殊需求。请详细看【深度找图】段落。 5、缩放值、 默认设置为=0 合理的设置能提升找图效率。不合理的设置将会找不到图。请根据场景来设置,如果使用场景可以进行此优化,那么设置为0.5最佳。</strong></p>

页面列表

ITEM_HTML