基于用户界面的图像搜索方法

文档序号:6332101阅读:155来源:国知局
专利名称:基于用户界面的图像搜索方法
技术领域
本发明涉及计算机图像及软件测试技术领域,尤其涉及一种基于用户界面的图像 搜索方法。
背景技术
作为软件测试自动化技术之一,图形图像识别是比较重要的一项内容,其是图形 用户界面自动化测试过程中不可缺少的环节。在一些特殊情况下,准确的图像识别甚至可 以作为自动化测试的支撑技术之一。因此实现准确的、可靠的、兼容性强的图像识别是一项 必要且重要的工作。一些自动化测试工具自带有图像验证的功能,根据其向导截取目标对象相对区域 的图像,在测试回放过程中自动验证运行时对象指定区域图像与预期截取的图像是否一 致。然而,通过这种方法不能获得目标图像的坐标和当前相同图像的数量;不能同时良好支 持多类型操作系统和不同的硬件设备差异;不能调整误差值;且不能识别动态图片。

发明内容
(一 )要解决的技术问题本发明要解决的技术问题是如何在支持多类型操作系统和克服不同的硬件设备 的差异的前提下,在计算机屏幕指定的区域内查找静态/动态目标图片的数量和位置。( 二 )技术方案为解决上述技术问题,本发明的技术方案提供了一种基于用户界面的图像搜索方 法,包括Sl 将基准图像和目标区域图像分别转换为像素矩阵;S2 根据第一预置规则读取所述目标区域图像的像素矩阵,以及根据第二预置规 则识别其中与所述基准图像的像素矩阵相匹配的子像素矩阵;S3 将所述子像素矩阵对应的子图像标记为目标图像,计算其相对于所述目标区 域的坐标,同时计数器加一;S4 判断所述目标区域图像的像素矩阵是否已读取完毕;若是,则导出S3中记录 的所有坐标和计数器累加值;若否,则返回S2。进步一地,所述步骤Sl还包括将不同操作系统或硬件设备对同一图像的唯一截 图作为基准图像预存于磁盘,通过调用与所述磁盘的路径向对应的XML标签获取所述基准 图像。其中,所述步骤Sl中,使用java的JDK所提供的PixelGrabber类,将所述基准图 像和目标区域图像分别转换为以RGB整型颜色值作为元素的像素矩阵。进一步地,当所述基准图像为动态图像时,所述方法在步骤Sl之前还包括S0 将 所述基准图像解析为若干帧静态图像;且所述方法在步骤S4之后还包括S5 针对所述若 干帧的静态图像逐帧依次执行所述步骤S2-S4。
其中,步骤S2中,所述第一预置规则为以像素为单位,自上向下、自左向右、逐 行读取所述目标区域图像的像素矩阵,直至待读取像素无法作为左上角元素构成一个子矩 阵。其中,步骤S2中,所述第二预置规则为若以当前读取像素作为左上角元素的子 像素矩阵与所述基准图像的像素矩阵的对应位置的元素RGB值的误差值M在一个预置的阈 值范围内,则识别所述子像素矩阵与所述基准图像的像素矩阵相匹配。其中,所述预置的阈值范围为M彡150。进一步地,所述第二预置规则还包括若所述基准图像为不完全透明,则从其像素 矩阵中依次提取不透明的像素值,与目标区域图像中待比对的子矩阵中的对应元素进行匹 配。(三)有益效果根据本发明的基于用户界面的图像搜索方法,可以在目标区域内查找静态或动态 子图像,计算其坐标并统计其数量;根据本发明的方法可以兼容不同操作系统和硬件设备。


图1是根据本发明的基于用户界面的图像搜索方法的流程图;图2是根据本发明的基于用户界面的图像搜索方法的一个实施例的像素矩阵转 换及图像匹配示意图。
具体实施例方式本发明提出的基于用户界面的图像搜索方法,结合附图和实施例说明如下。如图1所示,本实施例的基于用户界面的图像搜索方法包括以下步骤Sl 将基准图像和目标区域图像均转换为像素矩阵;根据本发明的实施例,目标区域是指用户界面,例如,计算机屏幕上的指定区域; 目标区域图像是指被测软件生成的图像在该指定区域内的截屏(屏幕截图,下文用Pic表 示);基准图像是被测软件在当前测试例下预期生成的图像,包括静态图像和动态图像,可 以从已运行的被测软件中截取符合业务逻辑的图片作为基准图像,也可以将产品设计人员 或界面设计人员等提供的设计图片作为基准图像,以实际需求为准。具体来说,默认情况下 使用设计图片;当设计图片与特定计算机不能匹配一致,且通过人眼识别的判断差异在产 品设计的允许范围内,则使用截图。根据本发明的实施例,将基准图像和目标区域内的图像转换为RGB值表示的像素 矩阵。具体来说,使用java的JDK所提供的PixelGrabber类,把目标区域图像和基准图像 分别转换为以RGB整型颜色值表示的像素矩阵,每个像素都有自己的颜色值。如图2所示, 本实施例中,将基准图像转换为3 X 3元素矩阵B,将目标区域图像转换为5 X 5元素矩阵B, 其中,矩阵B和矩阵S中的每一元素均对应一 RGB整型值。关于像素矩阵的转换和RGB整 型值均为已知技术,在此不做赘述。优选地,对于动态测试需求,即当基准图像为动态图像时,该步骤Sl之前还应包 括对动态图像进行解析的步骤,将被测软件预期生成的动态图像解析为若干帧静态图像, 解析帧数以实际需求为准,一般情况下按该动态图像的实际全部帧数进行解析,解析结果作为静态基准图像集合进行遍历使用;如需要减小解析出的静态图像基数以提高遍历效 率,则可在不影响可靠性的前提下减少解析出的静态图片数量。具体来说,基准图像一般作为磁盘文件预先保存。由于存在不同操作系统或硬 件设备(例如,WindowsXP 与 WindowsVista ;GeForce8400MG 显卡芯片计算机与 Intel (R) GMA3000显卡芯片计算机),被测软件生成的图像有可能会有细微的差异,这样的差异会导 致本发明的图像搜索方法不能兼容多个设备,并且此类问题不能通过设置误差值的方法统 一解决。在这种情况下,可以使用图片管理类,通过XML方式映射对应的磁盘路径,该路径 下只存放各设备对于同一图像的唯一截图,即用户只需要传入定义好的基准图像XML标 签,并在需要的情况下截取基准图片保存到标签指明的真实磁盘路径(如果该路径下已经 有基准图像且符合要求,则不再需要截图)即可;这里,各设备对同一图像的唯一截图是 指在两台或更多不同的计算机上截取相同应用程序同一界面同一区域(相对程序界面的 坐标相同)的Pic。当然,也可以根据具体情况,在软件产品需求设计允许的误差范围内截 取不同尺寸的图片,例如在一台计算机中以某一点为起始截取40X40像素的图片,在另一 台计算机相同起始点截取39X39像素的图片,这两幅图片如果可以唯一表示同一业务逻 辑,则可视为相同的图片。S2 根据第一预置规则读取所述目标区域图像的像素矩阵,以及根据第二预置规 则识别其中与所述基准图像的像素矩阵相匹配的子像素矩阵;在本实施例中,第一预置规则是指以像素为单位,自上向下、自左向右读取所述 目标区域图像的像素矩阵,直至待读取像素无法作为左上角元素构成一个子矩阵;第二预 置规则是指若该目标区域图像的像素矩阵中的某个子矩阵(以某一像素点作为左上角元 素的子像素矩阵)与所述基准图像的像素矩阵的对应位置的元素RGB值的误差值(本实施 例中,误差值是指两个元素的差值的绝对值)在一个预置的阈值范围内(优选为150),则识 别所述像素矩阵所对应的子图像为目标图像。具体来说,仍以图2为例详细描述步骤S2中的矩阵匹配过程。如图2所示,由于 基准图像被转换为3X3元素矩阵B,则,在目标区域图像像素矩阵S中,从第一行第一列的 元素Sll开始直到元素S33为止,以先横向再纵向的顺序,依次读取每一元素,将以当前读 取到的元素作为起始元素的3X3元素子矩阵(例如,图中加框部分显示的是以S22为起 始元素构成的3X3元素子矩阵G)与基准图像像素矩阵B进行比照,比较两个矩阵对应元 素的像素颜色值是否匹配。例如,首先将以Sll作为起始元素的3X3元素子矩阵与矩阵B
进行比对,依次比较Sll与Bll、S12与B12.......S33与B33的颜色值是否匹配;然后将
以S12作为起始元素的3X3元素子矩阵与矩阵B进行比对,依次比较S12与Bll、S13与
B12.......S34与B33的颜色值是否匹配;依次类推,最后将以S33作为起始元素的3X3
元素子矩阵与矩阵B进行比对,依次比较S33与Bll、S34与B12.......S55与B33的颜色
值是否匹配。基于矩阵B的宽度,总共比较九次。在进行上述对应矩阵元素比较时,先判断基准图像是否为完全透明,如果完 全透明则认为匹配失败,透明值的获取通过java的JDK所提供的BufferedImage下 getTransparencyO获得。当基准图像不透明或部分像素不透明(即不完全透明)时,从 基准图像像素矩阵(例如矩阵B)中依次取不透明的像素值,并在目标区域图像像素矩阵 (例如矩阵S)取出对应的像素值,比较这两个像素RGB整型值的差值绝对值是否大于一个预置的阈值,如果大于该阈值则判定该像素匹配失败,也表示整个子矩阵所对应的子图像 匹配失败;若小于该阈值,则继续比较下一个像素,直到所有基准图像像素比较完毕。S3 将所述子像素矩阵对应的子图像标记为目标图像,计算其相对于所述目标区 域的坐标,同时计数器加一;在本实施例中,如上所述,当以某个像素点为基准(从矩阵左上角元素起始计算) 的子矩阵和基准图像的矩阵匹配一致时,则认为成功查找到一个目标图像;此时,计算出该 目标图像的中心点在目标区域图像中的坐标值(该坐标值以像素为单位),同时计数器(该 计数器用于统计目标区域图像中目标图像的数量)加一。具体来说,已被识别的目标图像 /子像素矩阵的宽度和高度是已知的(应与基准图像一致),而目标区域图像的像素矩阵作 为窗口对象也可以通过窗口特有属性(例如标题和进程ID)来识别,进而读取其宽度和高 度。由于当前读取的像素点是线性读取的,所以可以直接确定其在目标区域图像的像素矩 阵中的位置;基于上述信息,当前像素点横坐标χ值加上基准图像宽度的一半,再加上目标 区域左上角横坐标χ值,即为被搜索到的目标图像的中心在目标区域图像中的横坐标χ值; 该目标图像纵坐标y值的计算方式以此类推。S4 判断所述目标区域图像的像素矩阵是否已读取完毕;若是,则导出S3中记录 的所有坐标和计数器累加值,由此完成本次图像搜索,获得目标图像坐标及目标图像数量。 若否,则返回S2,继续进行搜索。在本实施例中,当基准图像为动态图像时,如前所述,该动态图像将首先为解析为 多帧静态图像。此时,针对所述若干帧的静态图像逐帧依次执行所述步骤S2-S4。S卩,在目 标区域截屏中以静态图像识别方法逐帧查找,当匹配到与当前帧相同的图像时即为成功匹 配到目标图像。由此完成对动态图像的搜索识别。因此,根据本发明的图像搜索方法对上层应用透明且支持兼容不同设备差异。此 处,兼容不同系统图像识别是在前述步骤Sl的基础上以策略方式实现。具体来说,针对不 同系统的应用程序截取相同的相对位置的图像,并统一保存到同一磁盘文件夹内,该文件 夹内的图像业务逻辑正确性由人为保证。当执行本实施例的方法时,遍历该文件夹内的图 像文件,依次取出基准图像在目标区域图像内查找。如果有严格的验证需求,则通过文件 命名规则策略和当前计算机类型比较是否为针对该计算机截取的图像,依此方法来准确取 出唯一的基准图像。例如在网卡地址为00-EE-EE-09-33-E2的计算机截取图片并保存为 00EEEE0933E2.png图片文件,在执行根据本发明的图像搜索方法时,识别当前机器的网卡 地址后,在XML文件指明的路径下取出名称为00EEEE0933E2. png的图片作为基准图像即 可。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通 技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有 等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
一种基于用户界面的图像搜索方法,其特征在于,包括S1将基准图像和目标区域图像分别转换为像素矩阵;S2根据第一预置规则读取所述目标区域图像的像素矩阵,以及根据第二预置规则识别其中与所述基准图像的像素矩阵相匹配的子像素矩阵;S3将所述子像素矩阵对应的子图像标记为目标图像,计算其相对于所述目标区域的坐标,同时计数器加一;S4判断所述目标区域图像的像素矩阵是否已读取完毕;若是,则导出S3中记录的所有坐标和计数器累加值;若否,则返回S2。
2.如权利要求1所述的基于用户界面的图像搜索方法,其特征在于,所述步骤Sl还包 括将不同操作系统或硬件设备对同一图像的唯一截图作为基准图像预存于磁盘,通过调 用与所述磁盘的路径向对应的XML标签获取所述基准图像。
3.如权利要求1所述的基于用户界面的图像搜索方法,其特征在于,所述步骤Sl中,使 用java的JDK所提供的PixelGrabber类,将所述基准图像和目标区域图像分别转换为以 RGB整型颜色值作为元素的像素矩阵。
4.如权利要求1所述的基于用户界面的图像搜索方法,其特征在于,当所述基准图像 为动态图像时,所述方法在步骤Sl之前还包括S0 将所述基准图像解析为若干帧静态图 像;且所述方法在步骤S4之后还包括S5 针对所述若干帧的静态图像逐帧依次执行所述 步骤S2-S4。
5.如权利要求1所述的基于用户界面的图像搜索方法,其特征在于,步骤S2中,所述第 一预置规则为以像素为单位,自上向下、自左向右、逐行读取所述目标区域图像的像素矩 阵,直至待读取像素无法作为左上角元素构成一个子矩阵。
6.如权利要求1所述的基于用户界面的图像搜索方法,其特征在于,步骤S2中,所述第 二预置规则为若以当前读取像素作为左上角元素的子像素矩阵与所述基准图像的像素矩 阵的对应位置的元素RGB值的误差值M在一个预置的阈值范围内,则识别所述子像素矩阵 与所述基准图像的像素矩阵相匹配。
7.如权利要求6所述的基于用户界面的图像搜索方法,其特征在于,所述预置的阈值 范围为MS 150。
8.如权利要求6所述的基于用户界面的图像搜索方法,其特征在于,所述第二预置规 则还包括若所述基准图像为不完全透明,则从其像素矩阵中依次提取不透明的像素值,与 目标区域图像中待比对的子矩阵中的对应元素进行匹配。
全文摘要
本发明提供了一种基于用户界面的图像搜索方法,其特征在于,包括S1将基准图像和目标区域图像分别转换为像素矩阵;S2根据第一预置规则读取所述目标区域图像的像素矩阵,以及根据第二预置规则识别其中与所述基准图像的像素矩阵相匹配的子像素矩阵;S3将所述子像素矩阵对应的子图像标记为目标图像,计算其相对于所述目标区域的坐标,同时计数器加一;S4判断所述目标区域图像的像素矩阵是否已读取完毕;若是,则导出S3中记录的所有坐标和计数器累加值;若否,则返回S2。该方法可以兼容不同操作系统和硬件设备;可以支持实现在目标区域内查找静态或动态子图像,计算其坐标并统计其数量。
文档编号G06K9/64GK101964062SQ20101028257
公开日2011年2月2日 申请日期2010年9月14日 优先权日2010年9月14日
发明者刘剑, 刘显健, 姚维, 杨轩, 郑立瑾 申请人:北京神州泰岳软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1