基于Android和SURF算法的图像识别系统的研究

时间:2022-06-16 02:31:45

基于Android和SURF算法的图像识别系统的研究

摘要:图像识别技术是计算机视觉和图像处理领域里的重要研究课题之一,在军事及民用领域应用广泛。在目标检测算法中,基于特征的方法具有压缩信息量、执行速度快、精度高等优点,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的基础函数库, 即可完成十分复杂的开发任务, 极大的提高开发效率。

3.1OpenCV的特点

1) 跨平台,Windows,Linux,Mac OS;

2) 免费,开源;

3) 代码经过优化,可用于实时处理图像;

4) 统一的结构和功能定义;

5) 强大的矩阵运算和图像处理能力;

6) 具有底层和高层的应用开发包;

7) 用户接口方便灵活。

3.2OpenCV的功能

1) 对图像数据的操作,包括分配、释放、复制和转换数据。

2) 具有对矩阵和向量的操作以及线性代数的算法程序,包括矩阵、解方程,特征值以及奇异值。

3) 具有基本的数字图像处理能力,如可进行滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图和图像金字塔等操作。

4) 对运动的分析,如对光流、运动分割和跟踪的分析。

5) 对目标的识别,可采用特征法和隐马尔科夫模型(HMM)法。

6) 具有基本的GUI功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等。

3.3OpenCV模块

1) CV核心函数库,实现图像处理,结构分析,运动分析,对象识别,摄像机标定和3D重构等功能。

2) CVAUX辅助函数库,实现通过立体视觉来实现的动作识别,基于轮廓线的形状匹配,模式识别,纹理描述等功能。

3) CXCORE数据结构与线性代数库,实现数据变换,矩阵运算等功能。

4) HIGHGUI图像界面函数库,实现图像获取,用户界面设计等功能。

5) ML机器学习函数库,包括模式分类和回归分析等。

4Android上的系统实现

Android是基于Linux开放性内核的操作系统,是Google公司在2007年l1月5日公布的手机操作系统。Android采用软件堆层的架构,主要分三部分:底层以Linux核心为基础,提供基本功能;中间层包括函数库和虚拟机;最上层是各种应用软件。Android应用程序用Java语言编写。每个应用程序都拥有一个独立的Dalvik虚拟机实例,这个实例驻留在一个由Linux内核管理的进程中[6]。

在Android系统上使用OpenCV来实现该系统,需利用JNI编写相应的本地代码组件并通过Android NDK工具集将其嵌入到Android应用程序中。首先,利用Android应用程序框架编写相应的Java代码;然后通过JNI与OpenCV提供的函数编写本地C/C++代码,并使用Android NDK将本地代码文件编译生成可由Java代码调用的共享库(动态链接库),最后通过SDK生成完整的Android应用程序[7]。

4.1JNI

JNI(Java Native Interface),即JAVA本地调用。它允许Java代码和其他语言编写的代码进行交互。

5结论

本文提出了一种基于SURF算法的图像识别方法,并运用此方法实现了一套基于Android平台的图像识别系统。由于系统需要进行大量的图像处理运算, 因此通过使用Android NDK调用OpenCV图像处理函数库以提高编程效率,。系统通过手机摄像头提取视频帧, 并使用SURF算法对其进行快速鲁棒特征检测。实验结果表明, 该方法复杂度低、实时性好并且具有良好的鲁棒性,将系统用于移动设备图像识别加密,以及视频监控等方面,会使其拥有更好的识别效率和可靠性。

参考文献:

[1]彭欣,刘富强,宋华军.基于SURF目标跟踪算法研究[J].长春理工大学学报, 2011,34(2):138-141.

[2]徐秀云.基于特征点的景象匹配技术研究[D].南京:南京理工大学,2009:1-68.

[3]高健, 黄心汉, 彭刚,等. 一种简化的SIFT图像特征点提取算法[J].计算机应用研究,2008,25(7):2 213-2 215.

[4]VASILEIOS K,CHRISTOPHOROS NIKOU,ARISTIDIS LIKAS.Visual Tracking by Adaptive Kalman Filtering and Mean Shift[J].Springer-Verlag Berlin Heidelberg,2010,6040:153-162.

[5]黎松,平西定,丁益洪.开放源代码的计算机视觉类库OpenCV的应用[J].计算机应用与技术,2005,22(8):134-136.

[6]韩超,梁泉.Android系统原理及开发要点详解[M]北京:电子工业出版社,2010:70-93.

[7]韩露.一种Java与OpenCV结合实现的目标检测模块[J].计算机应用,2008(3):773-775.

[8]HUIYU ZHOU,YUAN YUAN,CHUNMEI SHI.Object tracking using SIFT features and mean shift[J]. Computer Vision and Image Understanding,2009,113:345-352.

[9]HERBERT BAY, ANDREAS ESS, TINNE TUYTELAARS,et al.Speeded-Up Robust Features(SURF)[J].Preprint submitted to Elsevier,2008:233-245.

[10]TA D N CHEN,W C GELFAND,N PULLI K.SURFTrac:Efficient Tracking and Continuous Object Recognition using Local Feature Descriptors[C]//Coumputer Vision and Pattern Recognition(CVPR'09),2009:2 937-2 943.

[11]纪华,吴元昊,孙宏海,等.结合全局信息的SIFT特征匹配算法[J].光学精密工程,2009,17(2):439-444.

[12]CHAVES A,GUSTAFUSON D.Vision——Based Obstacle Avoidance Using SIFT Features[C]//Proceedings of the 5th International Symposium on Advances in Visual Computing.2009:550-557.

[13]公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化,2008(8):85-89.

[14]SHABTAI A,WIESS Y,KANONOV U,et al.Andromaly:a behavioral malware detection framework for android devices.Intelligent Information Systems,2011:7-22.

[15]杨丰盛.Android应用开发解密[M].北京:机械工业出版社,2010:65-83.

上一篇:虞集著述考 下一篇:一项经常“失败”的成功投资