APP下载

基于IOS的KAZE算法的应用

2015-04-29康泽付许存禄邢磊

计算机时代 2015年12期

康泽付 许存禄 邢磊

摘 要: 图像拼接技术是一种在同一场景中对相互之间存在重叠的图像序列进行匹配,然后经过重新采样融合形成一幅包含各个图像信息的新图像的技术。基于对图像拼接技术中的图像配准等核心技术的研究,对现有的一种新的图像拼接方法KAZE进行了分析、研究和总结,并将其进行改动后应用到IOS上,完成了图像的拼接。

关键词: 图像拼接; KAZE; IOS; 尺度不变特征转换

中图分类号:TP399 文献标志码:A 文章编号:1006-8228(2015)12-56-04

Application of KAZE algorithm in IOS

Kang Zefu, Xu Cunlu, Xing Lei

(Lanzhou University, Lanzhou, Gansu 730000, China)

Abstract: Image stitching is a kind of technology to match a sequence of images overlapped each other in the same scene, and then through the resampling and fusion, form a new image containing the information of all the images. Based on the research of image registration and other core technology in image mosaic technology, KAZE, a new image mosaic method, is analyzed, studied and summarized, and after modifying, is applied in the IOS to complete the image stitching.

Key words: image stitching; KAZE; IOS; SIFT

0 引言

图像拼接技术是计算机技术的一个重要研究方向,它是一种把在同一场景中的多张相互重叠的图像融合成一幅大的、高清晰的新图像的技术。通过它,我们可以对图片资源进行压缩,节省存储空间,同时更加完美的表示图片所带的信息。目前,图像拼接技术得到广泛应用,比如:计算机视觉、医学图像等领域。它有着很大的使用价值和广阔的应用前景。

通常情况下,图像拼接的过程包含图像获取,图像匹配以及图像合成三步。其中图像匹配是整个图像拼接的基础,也是最重要的,它包含了特征点的提取、特征向量的描述和特征点的匹配。若此环节出现任何问题,都会导致图像的拼接失败。本文对众多图像匹配算法中的一种算法KAZE[1]进行研究和分析,然后对其稍作修改,使它能够在IOS平台上成功运行并完成图像的拼接。

1 KAZE算法

1.1 非线性扩散滤波

非线性扩散滤波方法就是用一定的流动函数控制扩散的差异,来表示尺度图像亮度(B)在不同尺度上的变化。此方法可以通过非线性偏微分方程(PDE)进行表示。典型的非线性扩散方程如下:

其中div为散度,Δ为梯度算子,B为图像的亮度。为了使扩散自适应于图像的局部结构,我们需要引出一个传导函数g(x,y,t),图像的表示形式随着尺度参数t的变大而变得简单;接着通過各向异性扩散的图像的梯度幅值来控制在每个级的扩散,这样便得到该函数的表示形式:

其中ΔBσ是图像B经过高斯平滑后的梯度。接下来介绍传导函数F,其表示形式如式⑶,它能够优先保留宽度较大的区域而忽略宽度较小的区域。

对比度因子λ可以决定边缘信息被保留下来的量,被保留下来的边缘信息与它的值成反比。

由于非线性偏微分方程采用显式差分格式的求解方法,而此方法采用很小的步长,所以收敛速度很慢,不太理想。因此将其离散化成为下面的半隐式差分(AOS)[2]格式:

其中,Al是表示图像在各维度(l)上传导性的矩阵。该方程的解如下:

这种求解方法可以采用任意时间步长τ来创建特征检测和描述问题的非线性尺度空间,而且很稳定。

1.2 非线性尺度空间

KAZE特征的尺度空间的构造和SIFT[3-4]相似。首先定义一个随时间渐变的非线性尺度空间,尺度级别随对数递增,共有E组octaves,每个octave有L个sublevel。KAZE的每个层级的分辨率都与原始图像的分辨率相同。不同的octave和sublevel分别使用序号e和l来进行区分,同时利用式⑹达到与尺度参数σ相对应:

其中,参数σ0是尺度参数的初始基准值,N=E*L是整个尺度空间的图像总数。由于非线性扩散滤波模型的单位和尺度参数σi的不同,必须对σi进行单位转化。在高斯尺度空间下,使用标准差为σ的高斯函数对图像进行卷积运算,从而可以得到以像素为单位的尺度参数σi转换到以时间单位的映射公式:

其中ti是指进化时间。

对于将要处理的图像,KAZE算法先用标准偏差为σ的高斯函数对其进行高斯滤波,接着再把该图像的梯度直方图给求出来,进而获取对参数λ,然后再通过一组进化时间,利用AOS算法便能够获取非线性尺度空间。

1.3 特征点检测

KAZE先获取不同尺度归一化后的Hessian矩阵[5],接着通过获取Hessian矩阵局部极大值点来实现。Hessian矩阵的计算式子如下:

这里我们利用该滤波器级联的二阶导数计算,该滤波器的近似旋转不变性比较好[6]。在获取极值点时,每一个像素点将会与其周围的26个点分别进行比较,当该点是这些点中的最大,并且也是其尺度域的所有相邻点中的最大时,才被看作是极值点。

当极值点的位置被获取到之后,由于噪声等一些不可以避免的原因,还需对这些极值点作进一步的筛选。这里使用Harris Corner检测器[7],空间尺度函数展开如下:

其中式⑽是式⑼求导,并令其导数为0而得到的精确位置。接下来把公式⑽代入到公式⑼,即在DoG Space的极值点处D(x)取值,把最后一项舍去得:

其中,其中这里k取的是0.03。若前面的不等式成立,则该特征点就保留下来。

1.4 特征点匹配

在匹配图像中选择一个特征点ps(x)(1?x?ns),ns为匹配图像A特征点的数目,假设该点的特征向量为Vs(x)。在匹配图像B中选择一个特征点pm(1?x?nm),nm为图像B特征点的数目,假设其特征向量为Vt(x),接着计算出两特征向量各维的相对距离之和,然后把它看成是这两个特征点的相似性度量S。于是有:

这里需要对|Vt(i)|和|Vr(i)|进行判断,如它们同时为零时,就停止计算。接下来,我们要计算图像B中所有的特征点与图像A特征点ps(m)的相似性度量,把它们记录下来并进行比较,得出相似性度量值最小的特征点pm(x),并初步认为pm(x)为ps(x)要找的匹配点。为了确保上述获取的匹配特征点的准确性,我们还需要进行验证。那就是利用上述方法在图像A中找pm(x)的匹配点ps(y),如果x和y相等,则最终认为ps(x)与pm(x)匹配。

2 应用与实验

对于前面提到的KAZE算法,本文把它运用到iOS平台上,以便能够在移动设备上完成图像的拼接。这里更改特征点检测时候的闸值,使检测出来的特征点能够满足图像的拼接,同时降低匹配的耗时。

2.1 运用在iOS上

KAZE算法库中包含了特征点的检测(features)、特征点的匹配(match)、特征点的比较(compare)、方便外部调用的(utils)、算法的接口(AKAZE)这些类。而对于这个库,需要对一些调用方法进行改动封装。下面简述该算法在IOS平台的实现过程。

⑴ 我们需要建立一个控制类,然后把.m后缀变成.mm,这是因为我们要调用的为C++库。

⑵ 在这个类中,需要建立一个显示控键,这个控键是用来显示拼接完成后的图片;在建立一个指示控键,这个控键是用来指示图像正在拼接,也是用来阻止我们对界面的操作。

⑶ 接下來就把我们将要拼接的图片按照相邻的原则依次放进一个数组里面,再通过utils类调用拼接算法,首先对前两张图片进行特征值提取,接着对特征值进行匹配,最后按照特征值匹配的原则对图片进行拼接融合。当完成拼接后,会生成一张新的具有前两张图片信息的大图,然后把这张新图片当成第一张图片,再从数组里面取出下一张要处理的把图片,按照上述说的过程对这两张图片进行拼接融合。就这样直到所有要拼接图片都被拼接完成。此时指示控键已经出现并开始转动。

⑷ 当所有的图片都被拼接完成后,指示控键将会停止转动并消失,显示控键将会出现,并且拼接完成后的图片也将会展现在该控见上。接着我们可以根据自己的观察方式对该图片进行放大、缩小、滑动这三种方式操作。

具体实现该过程的流程图如图1所示。

[开始] [获取要处理的图像序列][初始化KAZE类][把图像序列传给KAZE][将生成的新图片显示在

视图上并进行一些操作][释放内存][结束][取图像序列的前两张进行特征提取及配准,把新的图片赋给结果变量][判断是否存在下一张

要匹配的图像][若没有,结束][若有,新图片与接下来要调用的图片进行匹配]

图1 算法实现流程图

2.2 在模拟器上的效果

为了更清晰地了解它的性能,我们用了多组图片进行仿真,从仿真结果可判断其优缺点。图2~图5是从中抽取的四组图片的实验结果。

实验一采用的是建筑物,它们对称性很好,很多地方都相似,这样检测出来的特征点也就具有很大的相似性,从而给特征点的匹配带来了巨大的干扰,但是从匹配的结果图2来看,该图片匹配的很好,完全能够达到我们的要求,这说明该方法对这种干扰有很强的抑制能力。

实验二采用的是自然风景,这个图上有很多树,这样会产生大量的特征点,使匹配的计算量大大增加,从而导致一些错误,可是从改组实验结果图3来看,这些问题处理得很好。

实验三采用一个简单的带有建筑物的图片,这样特征点就会很少,这样可能就会出现因为特征点的数量不够而导致不能够完成匹配,然而图5则说明了即使特征点不够多,但是在匹配要求的范围内,也能够完成匹配。

实验四是由实验一去掉第三张图片得来的,此处它是用来方便下文的时间对比说明。

从图6我们可以清楚的看出各组实验的耗时情况。实验一和实验四相比,它们的图片是相同的,只是第一组比第四组多一张,图6的实验耗时结果表明第一组实验耗时更多,这说明图片越多,耗时就越多;第二组和第四组相比,第二组使用的图片较为复杂,其特征值提取的会更多,图6中的实验耗时结果表明第二组实验耗时更多,这说明图片特征点越多,耗时就越多;至于实验三,这里要说明的是,即使图片较为简单,提取的特征点较少,但是所消耗的时间与复杂的图片相比,少的不会很多。

3 结束语

通常一些图像拼接算法都是用在电脑上对图像进行拼接处理,KAZE算法也不例外,而本文对KAZE方法进行了探究和分析,并对其进行了一定的修改,把它成功的应用到新的IOS平台上,并实现了很好的匹配效果,这使得在移动端进行图片的拼接有了新的发展。但是对于特征点太少的图像,它不能够实现很好的拼接,虽然可以通过更改特征点检测时候的闸值,增加特征点数目,这将会对特征点多的图片产生影响,增加计算时间。下一步将进行更深入的研究,使它能够在IOS平台上实现全景图的拼接。

參考文献(References):

[1] P. F. Alcantarilla, A. Bartoli, and A. J. Davison. KAZE

features[M]. In Eur. Conf. on Computer Vision (ECCV):214-227

[2] J. Weickert, B. terHaarRomeny, and M. A. Viergever.

Efficient and reliable schemes for nonlinear diffusion filtering[J]. IEEE Trans Image Processing,1998.7(3):398-410

[3] E. Rublee, V. Rabaud, K. Konolige, and G. Bradski. ORB:

an efficient alternative to SIFT or SURF[J]. In IEEE Intl. Conf. on Computer Vision (ICCV),2011:2564-2571

[4] V S Veena Devi, S.M. Prasad and H. GangadharaBhat[J].

An Efficient Algorithm for Image Stitching Based On Scale-invariant Feature Transform[J]. International Journal of Engineering and Applied Sciences,2013.2(2):45-49

[5] Lindeberg, T.: Feature detection with automatic scale

selection[J]. Intl. J. of Computer Vision,1998.30:77-116

[6] J. Weickert and H. Scharr. A scheme for

coherence-enhancing diffusion filtering with optimized rotation invariance[J]. Journal of Visual Communication and Image Represen-tation,2002.13:103-118

[7] J. Shi and C. Tomasi. Good features to track. In

Proceedings of the Interational Conference on Computer Vision and Pattern Recognition (CVPR94),1994.