一种用于识别图像的方法、设备和计算机程序产品与流程

文档序号:14445069阅读:209来源:国知局
一种用于识别图像的方法、设备和计算机程序产品与流程

本发明涉及图像处理领域,更具体地,涉及识别图像的技术。



背景技术:

在软件测试,例如在游戏测试中,经常需要对第三方开发的游戏进行测试。游戏测试包括游戏的简单功能测试和游戏广告测试。在使用过程中,由于游戏的特殊性,发现很多游戏无法获取到控件、资源id等内部资源(非原生android代码或使用opengl、activex),而目前主要的移动端自动化测试工具基本都是基于获取内部控件元素来进行操作。因此,传统的测试框架和工具无法满足项目组游戏自动化测试的需求。

此外,在手游自动化测试中,大多基于人工标注图片位置的方式来模拟点击按钮位置,这种做法需求耗费大量人力,而且在游戏更新后还需要从新标注。

为了解决上述问题,现有技术大多是基于简单的模板匹配算法,这样的算法在要识别的按钮有旋转或者形变的场景下不能很好的匹配。

图1a和图1b给出了现有技术中根据模板进行匹配的示例性图示。图1a是需要进行的视图,而图1b是进行了模板匹配之后的视图。可以看出,在图1b中,左上角的浮窗没有发生很好的匹配。而且,随着游戏的更新,按钮的底色发生变化(例如需要增加新的按钮,或者原按钮的作用发生变化等),就会产生多个匹配的结果,还需人工手动筛选,这也将会耗费大量的人力。



技术实现要素:

因此,本发明的目的在于解决现有技术中图片匹配繁琐,自动化程度不高,匹配不准确的缺陷。

根据本发明的第一方面,提供一种查找目标图像的方法,包括:提取第一图像的第一特征点以及所述第一特征点的第一描述符;提取第二图像的第二特征点以及所述第二特征点的第二描述符;以及根据所述第一特征点以及所述第二特征点,在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,进一步包括:在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行锐化和/或增加对比度;和/或在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行锐化和/或增加对比度。

根据本发明的一个实施方式,进一步包括:在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行非线性扩散滤波;和/或在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行非线性扩散滤波。

根据本发明的一个实施方式,其中,通过加性算子分裂算法来进行非线性扩散滤波。

根据本发明的一个实施方式,其中,所述第一描述符和第二描述符是分别是所述第一特征点和第二特征点的rgb值。

根据本发明的一个实施方式,进一步包括:将所述第二图像划分为多个第二子图像;并且在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像包括:在每个所述第二子图像中遍历查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,通过聚类匹配或快速近似最近邻搜索来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,根据所述第一特征点以及所述第二特征点,在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像包括:对所述第一特征点和第二特征点进行海森矩阵运算。

根据本发明的一个实施方式,进一步包括:根据所述第一图像的第一特征点的至少一部分来确定所述第一图像的第一主方向;根据所述第二图像的第二特征点的至少一部分来确定所述第二图像的第二主方向;以及根据所述第一主方向和第二主方向来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,确定所述第一图像的第一主方向包括:以所述第一特征点为中心,以第一半径为搜索半径,以具有第一角度的扇面为第一搜索面,来搜索360度范围内的所有特征点,计算所述第一搜索面中所有特征点的第一向量叠加值;以所述第一向量叠加值最大的方向为第一主方向;和/或确定所述第二图像的第二主方向包括:以所述第二特征点为中心,以第二半径为搜索半径,以具有第二角度的扇面为第二搜索面,来搜索360度范围内的所有特征点;计算所述第二搜索面中所有特征点的第二向量叠加值;以所述第二向量叠加值最大的方向为第二主方向。

根据本发明的一个实施方式,其中,所述第一特征点具有第一尺度参数,所述第一半径为所述第一尺度参数的6倍;和/或所述第二特征点具有第二尺度参数,所述第二半径为所述第二尺度参数的6倍。

根据本发明的一个实施方式,其中,所述第一角度和/或所述第二角度为60度。

根据本发明的一个实施方式,其中,计算所述第一搜索面中所有特征点的第一向量叠加值包括:计算所述第一特征点的所有相邻特征点的第一一阶微分;对所述第一一阶微分进行高斯加权,以得到第一加权后值;根据所述第一加权后值来计算所述第一搜索面中所有特征点的第一向量叠加值;和/或计算所述第二搜索面中所有特征点的第二向量叠加值包括:计算所述第二特征点的所有相邻特征点的第二一阶微分;对所述第二一阶微分进行高斯加权,以得到第二加权后值;根据所述第二加权后值来计算所述第二搜索面中所有特征点的第二向量叠加值。

根据本发明的一个实施方式,其中,对所述第一一阶微分进行高斯加权是通过如下方式进行加权的:越靠近所述第一特征点,权重值越高;和/或对所述第二一阶微分进行高斯加权是通过如下方式进行加权的:越靠近所述第二特征点,权重值越高。

根据本发明第二方面,提供一种查找目标图像的设备,包括:第一提取装置,用于提取第一图像的第一特征点以及所述第一特征点的第一描述符;第二提取装置,用于提取第二图像的第二特征点以及所述第二特征点的第二描述符;以及查找装置,用于根据所述第一特征点以及所述第二特征点,在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,进一步包括:第一处理装置,用于在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行锐化和/或增加对比度;和/或第二处理装置,用于在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行锐化和/或增加对比度。

根据本发明的一个实施方式,进一步包括:第一滤波装置,用于在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行非线性扩散滤波;和/或第二滤波装置,用于在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行非线性扩散滤波。

根据本发明的一个实施方式,其中,通过加性算子分裂算法来进行非线性扩散滤波。

根据本发明的一个实施方式,其中,所述第一描述符和第二描述符是分别是所述第一特征点和第二特征点的rgb值。

根据本发明的一个实施方式,进一步包括:划分装置,用于将所述第二图像划分为多个第二子图像;以及所述查找装置包括:遍历查找装置,用于在每个所述第二子图像中遍历查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,通过聚类匹配或快速近似最近邻搜索来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,所述查找装置包括:矩阵运算装置,用于对所述第一特征点和第二特征点进行海森矩阵运算。

根据本发明的一个实施方式,进一步包括:第一方向确定装置,用于根据所述第一图像的第一特征点的至少一部分来确定所述第一图像的第一主方向;第二方向确定装置,用于根据所述第二图像的第二特征点的至少一部分来确定所述第二图像的第二主方向;以及目标查找装置,用于根据所述第一主方向和第二主方向来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,所述第一方向确定装置包括:第一搜索装置,用于以所述第一特征点为中心,以第一半径为搜索半径,以具有第一角度的扇面为第一搜索面,来搜索360度范围内的所有特征点;第一计算装置,用于计算所述第一搜索面中所有特征点的第一向量叠加值;第一主方向确定装置,用于以所述第一向量叠加值最大的方向为第一主方向;和/或所述第二方向确定装置包括:第二搜索装置,用于以所述第二特征点为中心,以第二半径为搜索半径,以具有第二角度的扇面为第二搜索面,来搜索360度范围内的所有特征点;第二计算装置,用于计算所述第二搜索面中所有特征点的第二向量叠加值;第二主方向确定装置,用于以所述第二向量叠加值最大的方向为第二主方向。

根据本发明的一个实施方式,其中,所述第一特征点具有第一尺度参数,所述第一半径为所述第一尺度参数的6倍;和/或所述第二特征点具有第二尺度参数,所述第二半径为所述第二尺度参数的6倍。

根据本发明的一个实施方式,其中,所述第一角度和/或所述第二角度为60度。

根据本发明的一个实施方式,其中,所述第一计算装置包括:第一微分计算装置,用于计算所述第一特征点的所有相邻特征点的第一一阶微分;第一加权装置,用于对所述第一一阶微分进行高斯加权,以得到第一加权后值;第一向量计算装置,用于根据所述第一加权后值来计算所述第一搜索面中所有特征点的第一向量叠加值;和/或所述第二计算装置包括:第二微分计算装置,用于计算所述第二特征点的所有相邻特征点的第二一阶微分;第二加权装置,用于对所述第二一阶微分进行高斯加权,以得到第二加权后值;第二向量计算装置,用于根据所述第二加权后值来计算所述第二搜索面中所有特征点的第二向量叠加值。

根据本发明的一个实施方式,其中,对所述第一一阶微分进行高斯加权是通过如下方式进行加权的:越靠近所述第一特征点,权重值越高;和/或对所述第二一阶微分进行高斯加权是通过如下方式进行加权的:越靠近所述第二特征点,权重值越高。

根据本发明第三方面,提供一种查找目标图像的设备,包括:一个或者多个处理器;存储器;存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使所述处理器执行如上所述的方法。

根据本发明第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被处理器执行时,使得所述处理器执行如上所述的方法。

本发明的技术方案可以在软件测试中使用,从而在复杂的图像中找到所需的目标图像,并且,即使图像发生扭曲、变形、旋转等,也能较为准确地对图像进行识别。由此大大地提高了软件测试的自动化水平,减少人工测试的工作量,提高软件测试效率。

需要理解的是,本发明的教导并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本发明的其他实施方式还能够实现上面未提到的有益效果。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

在附图中,相同或对应的标号表示相同或对应的部分。

图1a和图1b示出了现有技术中根据模板进行匹配的示例性图示;

图2为根据本发明的在软件中查找目标图像的方法的流程图;

图3a至图3f示出了采用不同方式对图像进行处理后特征点数量变化的示意图;

图4a-图4c示出了根据本发明的一个示例来确定图像主方向的示意图;

图5a至图5c分别示出了参考图像,待查找图像以及二者匹配情形的示意图;

图6为根据本发明的在软件中查找目标图像的设备的框图;

图7示出了根据本发明的实施方式的在软件中查找目标图像的设备;以及

图8描述了根据本发明的实施方式的计算机可读存储介质。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。

下面结合附图对本发明的具体实施方式进行详细描述。

图2为根据本发明的查找目标图像的方法的流程图。如图2所示,本发明的方法包括:在操作s210,提取第一图像的第一特征点以及所述第一特征点的第一描述符;在操作s220,提取第二图像的第二特征点以及所述第二特征点的第二描述符;以及,在操作s230,根据所述第一特征点以及所述第二特征点,在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

在上面的描述中,第一图像和第二图像也可以分别称为参考图像和待查找图像。参考图像可以是一个图标、一个游戏人物形象、一个游戏道具的图像等。待查找图像可以是一个游戏的一个画面,该画面中可能包含了上述的参考图像,本发明的一个目的在于在待查找图像中找到该参考图像,后者与该参考图像具有一定匹配度的图片。

在操作s210和s220中,将首先从相应的图像中提取能够表征该图像的特征点,每个特征点都具有相应的属性,例如亮度值、rgb值等等。

需要理解的是,图2中示出的s210和s220并没有先后顺序,可以先进行操作s210,然后进行操作s220,也可以以相反的顺序或者同时进行。

在提取到两个图像的特征点之后,可以根据提取到的特征点来计算两个图像之间的相似度或者准确度。这些特征点可以逐个进行匹配,有些特征点的匹配是正确的,而有些特征点的匹配可能是错误的,因此,可以计算所有匹配的特征点中正确特征点所占的比例。当比例达到一定程度或者特定阈值时,则认为匹配成功,从而能够从待查找图像中找到与参考图像具有较高匹配度的那部分图像,作为目标图像。

特征点的多少会影响到图像匹配的精度,越多的匹配点,则匹配的精度越高,而越少的匹配点,则匹配的精度越低。因此,需要尽可能地提高所能提取到的特征点的数量。

根据本发明的一个实施方式,在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行锐化和/或增加对比度;和/或在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行锐化和/或增加对比度。

下面,将介绍提高特征点数量以改善匹配精度的方法。

图3a至图3f示出了采用不同方式对图像进行处理后特征点数量变化的示意图,其中,图3a示出了原图未做处理的情形;图3b示出了原图经过对比度增加处理之后的情形;图3c示出了原图经过锐化处理之后的情形;图3d示出了原图经过亮度增加处理之后的情形;图3e示出了原图经过色彩饱和度增加处理之后的情形;以及图3f示出了原图经过锐度增加和对比度增加处理之后的情形。

如图3a所示,在原图不经任何处理的情况下,所提取的特征点数量为404个。而在增加了5倍的对比度之后,相较于未经处理过的原图,特征点数量增加到了646个,增加的幅度超过了50%,如图3b所示。由此可见,对原图增加对比度有助于改善特征点的提取。

进一步地,发明人还对原图进行了5倍的锐化处理,处理之后,特征点的数量有少幅的增加,相较于未经任何处理的原图,增加了大约10%,如图3c所示。由此可见,对原图进行锐化虽然能够改善特征点的提取,但改善幅度较小。

在图3d中,图像的亮度被增加了5倍,在此情况下,特征点数量锐减为127个,降低了大约70%。由此可见,增加原图的亮度容易使特征点提取发生劣化。

在图3e中,图像的色彩饱和度被增加了5倍,而特征点的数量出现少量下降,降低为391。由此可见,对原图增加色彩饱和度对于改善特征点提取不具有显著的积极效果,甚至会对效果产生一定的劣化。

在图3f中,图像的锐度和对比度分别为提升了5倍,在此情况下,特征点的数量大幅增加到766个,增加的幅度接近于90%。由此可见,同时增加原图的锐度和对比度有助于大幅改善特征点提取的效果。

对图像进行锐化和/或增加对比度,也可以通过现有的各种软件或者应用来实现,例如,通过pythonimaginglibrary(pil)的imageenhance功能或者函数来实现。

下面详细介绍对特征点的提取。

根据本发明的一个实施方式,可以采用尺度不变特征变换算法(scale-invariantfeaturetransform,sift)来提取特征点。

根据本发明的另一个实施方式,也可以采用加速文件特征算法(speed-uprobustfeatures,surf)来提取特征点。

sift算法和surf算法等特征点检索算法主要是基于线性的高斯金字塔进行尺度分解来消除噪声并提取特征点。但高斯分解是牺牲了局部精度为代价的,容易造成便捷模糊和细节丢失。

根据本发明的一个实施方式,在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行非线性扩散滤波;和/或在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行非线性扩散滤波。

可以通过非线性扩散滤波来解决线性滤波的上述缺陷。

非线性扩散滤波方法是将图像亮度(l)在不同尺度上的变化视为某种形式的流动函数(flowfunction)的散度(divergence)

其中,

x为像素点的横坐标;

y为像素点的纵坐标;

l为亮度;

t为进化时间;

是高斯平滑后的图像lσ的梯度;

g是一种高斯平滑的梯度算法,通常存在有三种形式:

其中函数g1优先保留高对比度的边缘,g2优先保留宽度较大的区域,g3能够有效平滑区域内部而保留边界信息。

在本发明中,优选地采用g=g2。

在上述算法中,参数k是控制扩散级别的对比度因子,参数k的取值是梯度图像▽lσ的直方图的70%。

参数k的数值大小决定了能够保留多少边缘信息,k的值越大,其保留的边缘信息越少;反之,k的值越小,其保留的边缘信息越多。在本发明中,可以采用k=2。

梯度的散度可以理解为一个拉普拉斯算子,应用于图像中就是它的离散形式:

δf=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)(2)

上述扩散方程原来用于热度传到,应用于图像中就是相当于图像的灰度即为温度,从高灰度区过滤到低灰度区,从而产生去燥的效果。

根据本发明的一个方法,可以基于正向欧拉法(forwardeulerscheme)来求解非线性扩散(non-lineardiffusion)方程。

基于正向欧拉法来求解非线性扩散方程时,收敛的步长较短,耗时较长,计算复杂度较高。

根据本发明的一个实施方式,可以通过采用加性算子分裂算法(additiveoperatorsplitting,aos)算法来进行非线性扩散滤波。

可以通过采用opencv中的akaze_create()函数或功能来提取特征点以及特征点的描述符。

通常,第一图像为一个游戏中的按钮、logo或者较小的图片,而第二图像可以是游戏中包含该第一图像的游戏画面。当在第二图像中查找该第一图像时,可以在第二图像中遍历查找与该第一图像具有一定匹配度的图像。

根据本发明的一个实施方式,可以将所述第二图像划分为多个第二子图像;并且在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像包括:在每个所述第二子图像中遍历查找与所述第一图像的匹配度不低于特定阈值的目标图像。

通过将第二图像划分为多个子图像,可以显著地减少计算量,提升图像查找的效率。

可以采用多种方法来查找图像。根据本发明的一个实施方式,可以通通过聚类匹配(可以通过cv2.knnmatch来实现)或快速近似最近邻搜索(可以通过cv2.flannbasedmatcher来实现)来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

图像经常会发生变形,例如旋转,扭曲等等。为此,需要消除这样的变形。

根据本发明的一个实施方式,根据所述第一特征点以及所述第二特征点,在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像包括:对所述第一特征点和第二特征点进行海森矩阵运算。

海森矩阵的运算过程如下:

hessian矩阵的计算如下:

其中,lxx是x方向的二阶偏导数

其中lyy是y方向的二阶偏导数

lxy是xy方向的二阶导数

其中σ是尺度参数σi的整数值。在寻找极值点时,每一个像素点和它所有的相邻点比较,当其大于它的尺度域的所有相邻点时,即为极值点。在本发明中,可以计算3x3矩阵的极值点

在高斯尺度空间下,可以使用标准差为σ的高斯核对图像进行卷积,相当于对图像进行持续时间为t=σ2/2的滤波。

即为:

其中σi为特征点的尺度参数。

进一步地,为了实现图像的旋转不变性,需要根据特征点的局部图像结构来确定其主方向。即,根据本发明的一个实施方式,本发明的方法进一步不包括:根据所述第一图像的第一特征点的至少一部分来确定所述第一图像的第一主方向;根据所述第二图像的第二特征点的至少一部分来确定所述第二图像的第二主方向;以及根据所述第一主方向和第二主方向来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

下面以第一图像为例来介绍确定图像主方向的方式。

根据本发明的一个实施方式,确定所述第一图像的第一主方向包括:以所述第一特征点为中心,以第一半径为搜索半径,以具有第一角度的扇面为第一搜索面,来搜索360度范围内的所有特征点,计算所述第一搜索面中所有特征点的第一向量叠加值;以所述第一向量叠加值最大的方向为第一主方向。

确定第二图像主方向的方式与上述的方式相同。这里将不再赘述。

图4a-图4c示出了根据本发明的一个示例来确定图像主方向的示意图。

如图4a-图4c所示,设特征点的尺度参数为σi,则搜索半径例如可以设为6σi,即图4a至图4c中搜索圆的半径为特征点尺度参数的6倍。对搜索圈内所有邻点的一阶微分值lx和ly进行高斯加权,越靠近特征点,权重值越高;而越远离特征点,权重越小。

将这些微分值视作向量空间中的点集,在一个角度,例如为60°的扇形滑动窗口内对点集进行向量叠加,遍历整个圆形区域。获得最长向量的角度就是主方向。

在图4b中,找到的相邻点最少,因此所得到的方向向量的值最小;而在图4c中,找到的相邻点最多,因此所得到的方向向量的值最大;而在图4a中,找到的相邻点较少,因此所得到的方向向量的值比图4c所示的小,但大于图4b所示的方向向量的值。因此,在图4c中所得到的方向即为主方向。

最后,可以通过映射来找到目标图像。

图5a至图5c分别示出了参考图像,待查找图像以及二者匹配情形的示意图。

在图5a中,是一张具有多棵数目的图像;在图5b中包括了图5a中所示的图像,该图像出现了一定的变形,此外,图5b中还包括了图5a所示图像之外的其他图像,例如人的面部,手部以及背景中的图片等;图5c中示出了映射过程。在映射中,有一些映射是正确的,有一些映射是错误的,通过计算正确映射占总映射的比例,来计算两个图像的匹配度。等匹配度超过一定阈值之后,则认为找到了相应的图像。该阈值可以根据实际经验由本领域技术人员来设定。

本发明的技术方案可以在软件测试中使用,从而在复杂的图像中找到所需的目标图像,并且,即使图像发生扭曲、变形、旋转等,也能较为准确地对图像进行识别。由此大大地提高了软件测试的自动化水平,减少人工测试的工作量,提高软件测试效率。

需要立即的是,尽管上面以软件测试,例如游戏测试为例进行了说明,但本领域技术人员可以理解的是,本发明不局限于上述的应用,而是可以应用于任何需要根据参考图像来找出另一图片中相应图像的场合,例如人脸识别,图形匹配等等。

图6为根据本发明的在查找目标图像的设备的框图。

如图6所示,本发明还提供一种查找目标图像的设备,包括:第一提取装置610,用于提取第一图像的第一特征点以及所述第一特征点的第一描述符;第二提取装置620,用于提取第二图像的第二特征点以及所述第二特征点的第二描述符;以及查找装置630,用于根据所述第一特征点以及所述第二特征点,在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,进一步包括:第一处理装置,用于在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行锐化和/或增加对比度;和/或第二处理装置,用于在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行锐化和/或增加对比度。

根据本发明的一个实施方式,进一步包括:第一滤波装置,用于在提取第一图像的第一特征点以及所述第一特征点的第一描述符之前,对所述第一图像进行非线性扩散滤波;和/或第二滤波装置,用于在提取第二图像的第二特征点以及所述第二特征点的第二描述符之前,对所述第二图像进行非线性扩散滤波。

根据本发明的一个实施方式,其中,通过加性算子分裂算法来进行非线性扩散滤波。

根据本发明的一个实施方式,其中,所述第一描述符和第二描述符是分别是所述第一特征点和第二特征点的rgb值。

根据本发明的一个实施方式,进一步包括:划分装置,用于将所述第二图像划分为多个第二子图像;以及所述查找装置包括:遍历查找装置,用于在每个所述第二子图像中遍历查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,通过聚类匹配或快速近似最近邻搜索来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,所述查找装置包括:矩阵运算装置,用于对所述第一特征点和第二特征点进行海森矩阵运算。

根据本发明的一个实施方式,进一步包括:第一方向确定装置,用于根据所述第一图像的第一特征点的至少一部分来确定所述第一图像的第一主方向;第二方向确定装置,用于根据所述第二图像的第二特征点的至少一部分来确定所述第二图像的第二主方向;以及目标查找装置,用于根据所述第一主方向和第二主方向来在所述第二图像中查找与所述第一图像的匹配度不低于特定阈值的目标图像。

根据本发明的一个实施方式,其中,所述第一方向确定装置包括:第一搜索装置,用于以所述第一特征点为中心,以第一半径为搜索半径,以具有第一角度的扇面为第一搜索面,来搜索360度范围内的所有特征点;第一计算装置,用于计算所述第一搜索面中所有特征点的第一向量叠加值;第一主方向确定装置,用于以所述第一向量叠加值最大的方向为第一主方向;和/或所述第二方向确定装置包括:第二搜索装置,用于以所述第二特征点为中心,以第二半径为搜索半径,以具有第二角度的扇面为第二搜索面,来搜索360度范围内的所有特征点;第二计算装置,用于计算所述第二搜索面中所有特征点的第二向量叠加值;第二主方向确定装置,用于以所述第二向量叠加值最大的方向为第二主方向。

根据本发明的一个实施方式,其中,所述第一特征点具有第一尺度参数,所述第一半径为所述第一尺度参数的6倍;和/或所述第二特征点具有第二尺度参数,所述第二半径为所述第二尺度参数的6倍。

根据本发明的一个实施方式,其中,所述第一角度和/或所述第二角度为60度。

根据本发明的一个实施方式,其中,所述第一计算装置包括:第一微分计算装置,用于计算所述第一特征点的所有相邻特征点的第一一阶微分;第一加权装置,用于对所述第一一阶微分进行高斯加权,以得到第一加权后值;第一向量计算装置,用于根据所述第一加权后值来计算所述第一搜索面中所有特征点的第一向量叠加值;和/或所述第二计算装置包括:第二微分计算装置,用于计算所述第二特征点的所有相邻特征点的第二一阶微分;第二加权装置,用于对所述第二一阶微分进行高斯加权,以得到第二加权后值;第二向量计算装置,用于根据所述第二加权后值来计算所述第二搜索面中所有特征点的第二向量叠加值。

根据本发明的一个实施方式,其中,对所述第一一阶微分进行高斯加权是通过如下方式进行加权的:越靠近所述第一特征点,权重值越高;和/或对所述第二一阶微分进行高斯加权是通过如下方式进行加权的:越靠近所述第二特征点,权重值越高。

根据本发明第三方面,提供一种查找目标图像的设备,包括:一个或者多个处理器;存储器;存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使所述处理器执行如上所述的方法。

根据本发明第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被处理器执行时,使得所述处理器执行如上所述的方法。

示例性设备

在介绍了本发明示例性实施方式的方法和设备之后,接下来,介绍根据本发明的另一方面查找目标图像的设备。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或计算机可读存储介质。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

在一些可能的实施方式中,本发明的设备可以至少包括一个或多个处理器、以及至少一个存储器。其中,所述存储器存储有程序,当所述程序被所述处理器执行时,使得所述处理器执行本说明书中描述各种步骤。

下面参照图7来描述根据本发明的这种实施方式的查找目标图像的设备1。图7显示的设备1仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图7所示,设备1可以以通用计算设备的形式表现,包括但不限于:至少一个处理器10、至少一个存储器20、连接不同系统组件的总线60。

总线60表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。

存储器20可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)21和/或高速缓存存储器22,还可以进一步包括只读存储器(rom)23。

存储器20还可以包括程序模块24,这样的程序模块24包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

设备1还可以与一个或多个外部设备2(例如键盘、指向设备、蓝牙设备等)通信,也可与一个或者多个其他设备进行通信。这种通信可以通过输入/输出(i/o)接口40进行,并在显示单元30上进行显示。并且,设备1还可以通过网络适配器50与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器50通过总线60与设备1中的其它模块通信。应当明白,尽管图中未示出,但可以结合设备1使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

示例性计算机可读存储介质

在一些可能的实施方式中,本发明的各个方面还可以实现为一种计算机可读存储介质的形式,其包括程序代码,当所述程序代码在被处理器执行时,所述程序代码用于使所述处理器执行上面描述的方法。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图8所示,描述了根据本发明的实施方式的计算机可读存储介质3,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的计算机可读存储介质不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1