前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >饭谈:免费教大家自己动手做一个【自动化测试图像识别算法】的基本思路

饭谈:免费教大家自己动手做一个【自动化测试图像识别算法】的基本思路

作者头像
我去热饭
发布2022-05-19 15:45:46
8060
发布2022-05-19 15:45:46
举报
文章被收录于专栏:测试开发干货

图像识别,这个领域放在我们测试界内,其实应用无非以下几个地方:

1. 验证码识别

2. ui自动化的断言和执行过程

3. 人工智能通过图像控制方法

不过第三种ai技术我们可能绝大部分测试者暂时接触不到,第一个验证码识别我们接触的也不多。

应用最多的就是第二种,ui自动化中。比如我们常见的airtest。

当然,我们本文不讨论airtest是怎么进行图像相似比对的,毕竟其实很多测开同学都自己在实际自动化测试中,写过图片相似度的算法,毕竟测开面临的需求总是各种各样的,难免会碰到需要在图片上下手的需求。

其实,一张图片上,我们要做的通常无非就是要找到目标物而已,比如一个按钮,一串文案,或者识别出某个物体。

这就要从图片的本质上下手,图片是什么?其实就是密集的纯色小色块组成的,一个小色块就是俗称的一个像素。

一个小像素的颜色和坐标,就是它的全部,坐标我们通过x和y轴很好计算,颜色呢?颜色其实无非就是RGB三个数组成而已。

比如(255,255,255)就是白色...

RGB就是red,green,blue 的简写,红绿蓝,理论上,用他们三元色进行不同比例混合,可以兑出所有颜色。所以任何颜色都可以分解成 RGB三个值。

那么我们要一下确认这么大范围的一张图片上是否存在某个小按钮,要具体怎么操作呢?

当然要进行切割滑块处理,按仿生学来说,就是相当于你的眼睛视角,在一张大图上找到自己要的那个小按钮,应该是一块区域 一块区域,平滑的移动,搜索全图,直到找到要的按钮。这个区域,就是我们的滑块,不断的按某个顺序进行搜索。这样可以大幅减轻我们的算法压力,每次只判断小部分框内的像素点即可。

那么我们行业内通用的图片处理各种算法上来说,这个滑块并不是杂乱无章的移动顺序,而是固定的从左到右,从上到下,

也就是从左上角查到右下角。

-> -> -> ->

-> -> -> ->

所以,到现在为止,你的图像算法的第一步就算完成了。

也就是:给图片进行切割

然后说说,怎么来判断是否搜索正确结果:

毕竟图像受到的影响太多了,不可能rgb值都非常精准,比如光线明暗,分辨率,画质等等影响。所以大多数情况下,都会存在一个误差,只要误差在合理范围内,即可算是找到目标物。

一旦找到目标物,你是拿来点击,还是拿来断言 都随你。

但是这个误差要怎么具体的求出来呢?比如俩个很相似的小方块内,都存在很像目标物的情况,所以大佬们想了很久,决定用一些标准来判定,哪个更像,谁的可能性更高。

比如:

查准率,查全率,F1分数等,通俗来说,就是查找到的正确目标物的情况占总体尝试次数的比例或者说概率。

大家也不用太仔细深究这几个标准概念的具体什么含义,只知道他们存在且在行业内很流行即可。不然你和别人开会撕x的时候,人家问你:凭什么这么写,根据在哪,你不知道说啥。

抽象一点的牛x公司,会用这些比例的点,来绘制一条曲线图,曲线图下面的面积就是正相关的面积,越大说明算法越秀...当然,我们暂时还不用考虑那么多。

到此,你就知道了,如何去判断一个分割的小块内是否存在目标物的基本判断思路了。

接下来 要细细说一下,要怎么确定那些所谓的 正相关,负相关,真正目标等细节。

技巧 一:灰度

比如为了降低各种影响,你可以简化五颜六色的图片,不用一个像素一个像素的RGB颜色去解析。用一个更简单的办法:用灰度。

用过photoshop的人应该都知道,一张图除了颜色之外,还有灰度这个属性,比较类似于把图片变成纯黑白的样子,这样你的算法解析会大大减轻压力,而如何拿到一个像素的灰度,这种问题python的第三方库早都有多个现成的库让你调用了。

技巧 二:其他特征

比如边缘特征,目标物的边缘是不是纯黑色的线条勾勒等等。还有其他很多,比如梯度特征,梯度统计直方图等。而且这些对比算法,一般都有自己的规定,比如平方差,标准平方差 ,他们越小越好。相关匹配度,标准相关匹配度他们越大越好等。虽然我们现在还听不懂这些概念,但是起码知道有这个东西,等真正去做的时候现查即可。

技巧 三:特征点

放弃找到目标物的整个外形,而是专注于某个特殊的点,只要这个特殊的点找到,即代表目标物被找到。

一般特征点可能不是一个点,而是一个点带着周围的一小块区域。这块区域的灰度平方差啊等等如果结果好,就代表找到了。

反正特征点最好是那种独一无二的,比如某个按钮的颜色是红色,全页面就它带红色,所以你就找这小块红色区域即可。

比如下图的嘴唇~显然通过外形或灰度都不好判断,反而是红色一目了然。

对这个红唇是不是很感兴趣?所以特征点也被人叫做兴趣点,关键点。

好了,今天就说到这了,饭佬催着交稿了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档