摘要:图像识别技术是计算机视觉和图像处理领域里的重要研究课题之一,在军事及民用领域应用广泛。在目标检测算法中,基于特征的方法具有压缩信息量、执行速度快、精度高等优点,SIFT算法便是其中之一,但传统的SIFT算法应用于图像识别过程中数据量大、计算耗时长,提出了一种基于SURF算法的图像识别方法,并使用Android NDK调用OpenCV在Android手机平台上实现了一套图像识别系统,结果表明,基于SURF算法的图像识别系统识别效果和实时性更好、具有更强的鲁棒性。
关键词:图像识别;SURF算法;特征点;鲁棒性
中图分类号:TP391 文献标志码:A
图像识别,是利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。图像的局部不变特征有着在多种图像变换(如光照变换,几何变换等)下的不变性、独特性、低冗余性以及无需预先对图像分割等特点,已经被广泛应用于图像匹配领域。基于特征不变的方法具有精度高、执行速度快、压缩信息量和鲁棒性好等优点。尺度不变特征转换(Scale-invariant feature transform,SIFT)算法便是其中的代表,该算法由David Lowe于1999年在ICCV上提出,并于2004年完善总结。SIFT算法匹配能力较强,能提取稳定的特征,可以处理两幅图像之间发生平移、旋转、仿射变换、视角变换和光照变换等情况下的匹配问题,但该算法数据量大,复杂度高,耗时长,同时也存在着特征提取及匹配速度慢,在灰度变化相似的区域容易产生误匹配的缺陷,限制了该算法的应用。SURF算法是针对SIFT算法的不足而改进的一种有效算法。
1SURF算法描述
快速鲁棒特征[1](Speeded-up Robust Features,SURF)是一种高鲁棒性的局部特征点检测器,由Herbert Bay等人于2006年在ECCV上提出的。该算法比SIFT更快更加具有鲁棒性,对图像分辨率、旋转、尺度缩放、平移和亮度变化等保持不变,而且对仿射变换、噪声以及视角变化等也能保持一定程度的稳定性。
SURF算法的基本流程主要包括:特征点检测、特征点描述和特征点匹配三部分。该算法中有三个关键技术,分别为:使用积分图像完成图像卷积操作,减少了时间计算的复杂度,提高计算速度;采用基于Hessian矩阵的检测器检测特征值,其在可重复性和稳定性方面都优于基于HarTis的检测器;采用Haar小波作为特征描述子,Harr特征速度快,能够减少计算时间并增加鲁棒性。
1.1积分图像
积分图像是一种对原始图像的特征表示方法。对于一幅灰度的图像,积分图像中的任意一点(x,y)的值是指从图像的左上角到这个点所构成的矩形区域内所有的点的灰度值之和[2]。图1所示填充区域即为点(x,y)的积分值。
1.2尺度空间的建立
图像的尺度空间是在视觉信息(图像信息)处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征。一幅图像的尺度空间可定义为原始图像与高斯核的卷积运算,图像的尺度大小可以用高斯标准差来表示[3]。在计算机视觉领域, 尺度空间被表示为一个图像金字塔。在SIFT算法中,输入图像函数反复与高斯函数的核卷积并反复对其进行二次抽样,但因为每层图像依赖于前一层图像, 并且需要重设图像尺寸,所以使得运算量较大。SURF算法与SIFT算法在使用金字塔原理上的不同之处在于SURF算法申请增加图像核的尺寸,允许尺度空间的多层同时被处理,并且不需要对图像进行二次抽样, 从而提高了算法性能。同时SURF算法采用了尺度插值和3*3*3的非极值抑制方法以提取尺度不变的特征点。图2中A图是运用传统方式建立的一个图像金字塔结构,运算会反复使用高斯函数对子层进行平滑处理, 且图像的尺寸是变化的。B图的SURF算法保持原始图像不变而只是改变滤波器的大小。
1.3Hessian特征检测
2算法实现
根据SURF算法的基本原理,设计算法的实现过程。首先通过视频采集设备获取模板图像,并对其建立积分图像和构建尺度空间结构,再通过视频采集设备捕捉当前视频帧,然后检测出模板图像及当前视频帧的特征点, 并保存每个特征点各项特性的描述信息,最后比较模板图像与当前帧图像特征点的描述子信息进行图像匹配。
3OpenCV技术
OpenCV(Open Source Computer Vision Library)[5]于1999年由Intel建立,是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。OpenCV轻量级而且高效,由一系列C函数和少量C++类构成, 实现了计算机视觉,图像处理和模式识别等方面的很多通用算法。
OpenCV为Intel公司的Integrated Performance Primitives(IPP)提供了透明接口,这意味着如果有为Intel处理器优化的IPP库,OpenCV将在运行时自动加载这些库。OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,编写程序过程中调用OpenCV的基础函数库, 即可完成十分复杂的开发任务, 极大的提高开发效率。
相关专题:医学核心期刊论文发表 中国邮政报刊订阅网