移动设备实时图像识别算法及系统应用研究
2017-06-25张瑛
张 瑛
(沈阳音乐学院)
0 引言
目前国内外关于实时图像的识别方法主要包括基于人工标志和基于特征点两种方式.由于人工标志方法不适合于复杂多色素图像的识别,而特征点方法处理速度复杂多色素图像的识别非常慢[1].所以该文从图像识别的实时性和图像识别的准确性两个方面进行研究,采用图像金字塔算法和FAST相结合的算法进行探讨,分别阐述SIFT、SURF和ORB算法的产生与实现过程,以便于能够选择适合移动设备实时图像识别系统应用的算法.
1 图像识别算法
1.1 SIFT算法
SIFT(Scale-invariant feature transform)算法是一种以尺度空间原理进行图像局部特征的检测,识别出图像的特征点,保证图像的尺度不变[4].通过SIFT算法在尺度空间中进行图像的特征点信息的挖掘,算法流程如图1所示。
图1 SIFT 算法流程
首先,生成尺寸空间提取极值点.构建方程:
(1)
I(x,y)为原始图像,σ为图像尺度因子,G(x,y,σ)为二维高斯核,L(x,y,σ)为尺度空间.SIFT算法虽然可以通过尺度空间定位图像特征,但是其在检测效率方面并不理想,所以提出高斯差值DOG(Difference of Gaussian)方法[5],结合图像卷积获取极值点.假设二维空间原始图像I(x,y),DOG使用k系数和相邻尺度的差值做计算,得到公式:
D(x,y,σ)=(G(x,y,kσ)-G(x,y,σ))×I(x,y)=L(x,y,kσ)-L(x,y,σ)
(2)
DOG算子可以在图像的上下层之间做差值,减少计算的时间.建立DOG尺度空间后,对其求极值点,让每个采集点的周围相邻8个点遍历作比较,其上下两层各自9个点,除了计算自身点外还包括26个像素点进行依次比较,当中间层像素点大于其他26个点时,可判断中间层像素点即为极值点.其次,进行特征点位置的精准确定.特征点集中存在低对比度和边缘位置的特征点,所以需要曲线拟合尺度空间的DOG函数,对其进行泰勒展开得到公式:
(3)
X=(x,y,σ)为关键点偏移量,将其做偏导,设值为0,得到X的极值为:
(4)
将(3)与(4)结合,删除不稳定极值点,再考虑去除边缘处特征点,利用阈值来判断边缘上是否存在极值点,利用2×2海瑟矩阵H求出:
(5)
假设r为特征值之间的比值,则α=rβ,得出:
(6)
当r>1时,(r+1)2/r为单调递增,比值随着r的增大而增加,通常r=10具有较好的性能.
最后,进行特征点的方向描述.直方图由36块组成,每块为10°[7].梯度大小由像素梯度大小累加而得,那么主方向则可以看作直方图的纵坐标最大值.以此推导,若是以4×4子窗口,则共计128维特征向量描述符.
1.2 SURF算法
SURF(Speeded-Up Robust Features)算法,是以图像特征为依据在SIFT废的基础上,保持尺度不变、旋转不变的特征,更加具有较好的鲁棒性,并且可以缩短检测的时间[9].SURF与SIFT算法在尺度空间构建、主方向生成、描述符生成三个方面的比较见表1.
表1 SURF & SIFT 比较
SURF算法采用积分图像的方法进行计算[10],可以提升计算效率,假定图像I及其中的任意一点像素P(x,y),那么通过积分图像可以将图像I的原点I(0,0)与P(x,y)共同组成矩阵区域,再在这个区域内进行内部所有像素值的和,计算公式如下:
(7)
采用积分图像进行计算求像素值之和,假设矩形区域为S,A、B、C、D为四个角点,则S=A+D-(B+C).对于识别单幅图的特征识别可以保证图像大小不变的情况下通过改变滤波器大小加速计算.
Hessian矩阵定义:
(8)
Lxx(X,σ)为高斯滤波后x方向二阶导数,Lxy(X,σ)和Lyy(X,σ)分别是高斯滤波后xy和y的方向的二阶导数:
∑wX(xi+1,yi+1)-X(xi+1,yi)-X(xi,yi+1)+X(xi,yi)
(9)
∑w为区域的四个点积分图像值,xi,xi+1,yi,yi+1为像素值.采用盒子滤波器近似替换二阶高斯滤波,得到Dxx,Dxy,Dyy表示图像卷积:
Δ(H)=DxxDyy-(0.9Dxy)2
(10)
为SURF建立描述子,每个关键特征点在以6S为半径的圆形空间内都拥有一个主方向,将S作为特征点所对应的尺度大小,利用4S的Haar小波模板求x和y方向的响应,计算在圆形空间内像素点Haar特征中水平与垂直方向响应,保持旋转不变性.
若x方向为dx,y方向为dy,对其响应值dx、dy、|dx|、|dy|求和,每个子块含有一个4维向量w,表达式可表示为:
w=(∑dx,∑dy,∑|dx|,∑|dy|)
(11)
由此该特征点描述由4×4×4组成,得到描述符维数向量为64.
将SIFT与SURF检测特征点的算法进行消耗时间的比较,看两个算法在实时图像处理方面的效率,采用三幅图进行检测时间的计算,特征点检测数目及检测时间比较结果见表2.
表2 特征点检测与检测时间的比较
由此可见,在算法效率上SUFR算法要相比SIFT算法缩短近一倍的时间,但是从检测效果上来看,SIFT算法明显要优于SURF算法.
1.3 ORB算法
ORB(Oriented FAST and Rotated BRIEF)算法公式为:
(12)
p(x)作为图像邻域P在像素点x处的灰度值,p(y)为y处的灰度值.
选择n个(x,y)像素位置对不同的n值在存储、处理速度和识别率方面进行评价,BRIEF描述子为n维的二进制比特串:
(13)
假设两幅图像特征描述子为B={b1,b2,b3,…,bn}和C={c1,c2,c3,…,cn},则可以通过距离之间的异或之和表示描述子的相似度:
(14)
Dk(i,j)的值越小则表示相似度越高.
在通过RANSAC提纯后,同样选择之前的三幅图进行三种算法的匹配个数与消耗时间进行比较得出结果见表3.
表3 匹配次数与消耗时间的比较
在该文的研究中,主要侧重于图像识别的实时性,所以通过以上结果的比较ORB算法符合Android移动设备实时图像识别系统的应用.
2 基于移动设备的实时图像识别系统应用
该文所设计的基于Android实时图像识别系统是在改进图像特征识别算法的基础上利用ORB算法进行图像的跟踪与定位,系统的实现流程如图2所示.
图2 系统流程
视频图像和基准图像的采集是利用Android移动设备摄像头进行图像信息的采集,利用Android JNI方法调用本地C++代码执行,通过ORB算法快速提取特征点及其描述信息,并存储在本地图像特征库汇中,再通过RANSAC方法进行基准图像与视频帧的匹配提纯,消除错误匹配点,估计摄像头的拍摄角度和位置,最后利用OPENGLES进行图像特征的绘制,识别出图像.根据基于Android实时图像识别系统设计流程将系统设计的步骤划分为六个部分:
(1)图像采集.无论是在何种环境下,通过Android移动设备摄像头对真实场景进行实时图像的采集.
(2)JNI方法传输数据.JNI方法传输数据是通过JNI方法调用Android系统下的C/C++库,实现混合编程,将摄像头采集到的视频帧通过C/C++代码执行,处理特征点的提取与匹配.
(3)视频图像特征提取.通过对SIFT算法、SURF算法和ORB算法的比较分析,确定该文采用了ORB算法进行Android移动设备实时图像识别.
(4)基准图像与视频帧的匹配.利用RANSAC方法对配比信息进行提纯,建立基准图像与视频帧的匹配的单应关系.
(5)摄像头姿态估计.摄像头的姿态估计采用三维跟踪注册,提取摄像头拍摄到的现实场景下目标物体的注册信息,通过视频帧上找出虚拟物体的具体位置信息.在此过程中,采用透视模型推导出的透视投影变换,再通过单应矩阵在现实场景中目标物体到其图像点之间的一个对应矩阵将基准图像平面点集合与目标图像平面上的点集合的位置关联,形成映射关系.
(6)绘制虚拟物体.以Android开发环境下,提供了OPENGLES三维图形API子集,可针对移动嵌入式设备进行编程开发绘制3D虚拟物体.再通过绘制的图形,OPENGLES将得到的R、T用来组成新的数组数据,将虚拟图像与基准图像融合达到实时图像识别的效果.
基于Android实时图像识别系统采用引用值进行信息传递,加快找准基准图像,减少遍历时间,可将系统模块划分为四个模块,包括:UI模块、特征点及描述符提取模块、特征匹配模块和绘制图像模块.UI模块是系统与用户的交互控制模块,该模块包含Android视频组件和菜单项,通过菜单可以控制Android摄像头对应的模式.提取特征点和描述符模块是建立图像特征库,用于存储图像数据到本地数据库,并通过JNI调用实现模块的提取.特征匹配模块是根据Android图像识别系统的菜单选项值来提取对应的图像特征点检测和描述符,利用RANSAC筛除误配点.绘制图像模块是根据选项值和对应的图像特征数据进行图像的识别绘制,利用OPENGLES图形绘制库完成对图像特征的绘制与识别.
3 结果与讨论
该次实验是利用Android开发平台所提供的JNI方法调用本地C++余元进行编程设计,Android设备摄像头视频图像大小为640×480像素.实验采用不同角度和部分遮挡的情况下实时拍摄作为实验方法,经过Android设备摄像头所拍摄并处理图像以85ms的平均每帧进行刷新,选择系统不同执行方式得到对应的物体形状如图3所示.
图3 实时图像测试结果
利用ORB算法匹配所呈现的绘制物体通过Android设备处理实现得到结果:图a为普通场景,在Android设备上获取的图像帧与基准图像同角度;图像b与图像c是不同角度变化下的实现结果;图像d采用纸片进行部分遮挡基准图像得到的实验结果.该文所设计的基于Android移动设备实时图像识别系统对不同角度和部分遮挡的图像均能完整的、准确的实时定位跟踪图像,并且具有较好的鲁棒性.
再选取不同的三幅图像进行实验,分别是openvc立方体物体基准图像、java长方体物体基准图像、python锥形体物体基准图像.Android设备菜单键显示不同物体图像如图4所示.
图4 设备菜单键显示不同对象的图像
得到结果表明,通过识别系统的选项菜单键功能可以直接作为识别的引用值,当选择openvc选项值时,Android设备的屏幕上显示出openvc选项值对应的立方体物体,选择java选项值时会在屏幕上显示出对应的长方体物体,选择python选项值时,会在屏幕上显示出对应的锥体物体.
通过该文提出的基于ORB算法匹配而设计的Android移动设备图像识别提供测试可以看出,该系统能够较好的识别出图像,并且检测效率也有明显的提高,能够满足实时图像识别的要求.
4 结论
该文所设计的基于移动设备的图像识别系统以图像特征点进行计算,利用算法比较的方法证明FAST算法在图像识别中具有较好的识别效果,但是因为缺少尺度不变的特征,其缺点是检测效率低,因此要对其进行BRIEF描述符的改进,由此提高设备对场景检测的效率,在匹配方面,采用基于FAST改进的ORB算法解决当前特征点检测算法在处理目标遮挡与目标高速移动状态下的实时图像识别困难,通过单应性矩阵找出视频帧的可匹配点.在Android设备上以C++语言编程优势进行实时处理,通过实验得出系统对于图像的跟踪定位具有较好的准确性和实时性.虽然该文对现有算法进行了一系列的改进但是面对移动设备的快速摇晃仍然具有一定的局限性,并且对于检测目标物体的遮挡仅采取了少面积的遮挡,如果大面积的遮挡则仍存在鲁棒性不足的问题.在系统设计方面也需要对图像检测算法在硬件设备加速方面进行进一步的研究.
参 考 文 献
[1] Gerhard Schall,Tobias Langlotz.Mobile Augmented Reality:Robust detection and tracking of annotations for out door augmented reality browsing[J].Computers & Graphics, 2011, 35(4):831-840.
[2] Ertl P, Bernhard Rohde A, Selzer P.Fast Calculation of Molecular Polar Surface Area as a Sum of Fragment-Based Contributions and Its Application to the Prediction of Drug Transport Properties[J].Journal of medicinal chemistry, 2017, 43(20):3714-3717.
[3] 刘洋,韩广良,史春蕾.基于SIFT算法的多表情人脸识别[J].液晶与显示, 2016,31(12):1156-1160.
[4] 韩峰,韩文静.一种改进SURF算法的视觉定位[J].电光与控制,2016(7):29-33.
[5] 吴延峰.基于OpenCV的实时人脸识别系统研究与实现[D].华北电力大学, 2016.
[6] 吉冬玉.基于ORB算法的图像匹配方法研究[D].陕西师范大学, 2016.