基于改进ORB 特征点的LK 光流算法
2021-04-08胡山山陈熙源卢飞平
胡山山陈熙源卢飞平
(1.东南大学仪器科学与工程学院,江苏 南京210096;2.微惯性仪表与先进导航技术教育部重点实验室,江苏 南京210096;3.上海电控研究所,上海200092)
光流表示的是三维空间运动物体在其对应的成像平面上的瞬时速度,是一种瞬时速度映射关系。而光流法正是利用光流的这一特性,通过图像序列相邻帧中同一像素在时间域上的位置变化,从而计算图像序列中包含的空间信息和运动信息[1]。 它被广泛用于目标跟踪、视觉导航和图像分割等领域。目前常用的光流算法如Horn-Schunk 算法,加入全局平滑假设,估计全局光流,需要计算图像中每一个像素点的光流,实时性较差。 基于神经网络智能算法的光流法,则需要大量的训练样本,在某些环境下无法满足需求。 基于特征点的Lucas-Kanade 算法,对特征点要求高,需要特征点具有较好的跟踪性,否则后续可能会出现跟踪失败的问题[2-4]。
南京理工大学李成美等人提出将Shi-Tomasi 角点检测和金字塔LK 光流结合,只计算强角点处的光流场,有效的检测出目标,在运动背景下对目标能够稳定跟踪[5]。 华东师范大学的Bai Jing 和上海交通大学的Huang Lili 为解决视觉跟踪中丢失跟踪目标和跟随错误目标问题,提出了一种改进的高斯LK光流算法,提高了跟踪精度和算法鲁棒性,但是在较暗场景下表示不佳[6]。 江苏科技大学的张忠义在LK 光流算法中引入压缩感知理论,有效地提高了LK 光流算法对环境的鲁棒性,但是当图像序列中物体存在尺度变化时效果较差[7]。 上海海事大学的陈伟杰等将SURF 特征匹配算法与LK 光流算法相结合,相较于传统特征匹配算法有效地提升了运算效率[8]。 综合以上可知,特征点跟踪性能如何将直接影响光流法的跟踪成功率,因此如何选取适当的特征点进行跟踪是光流法中难题之一。
针对以上问题,本文提出一种基于改进ORB 特征点的LK 光流算法,结合SURF 算法在特征提取步骤中构建的Hessian 矩阵对传统的ORB 特征点进行再提取。 若某个ORB 特征点的Hessian 矩阵判别式的值大于领域内其他像素点的对应的值,即取得领域内的局部最大值,领域取以该特征点为中心的3×3 像素领域,则再将领域内对应的差值进行累加,与预先设定的阈值进行比较,若大于阈值则保留,反之舍弃。 通过这样再提取的ORB 特征点,不仅有效提升了特征点匹配效果,同时也具有更好的跟踪特性,使得LK 光流法的跟踪成功率得到有效提升。
1 ORB 特征点
ORB 特征点由Ethan RubLee 等人于2011 年提出,ORB 是一种快速特征点提取和描述算法,算法主体由特征点提取和特征点描述两个部分组成[9]。
1.1 特征点提取
ORB 算法建立在FAST 算法的基础之上,FAST算法的做法是,取一个像素点P,考虑该像素点周围的16 个像素,计算该像素点与周围16 个像素点的灰度值差值,并取绝对值,与阈值进行比较,若大于该阈值,则认为这两个像素点不同,若该像素点周围的存在连续N个像素点都满足该条件,就定义其为FAST 特征点,N一般取12[10]。
式中:GP表示P点的灰度值,Gi表示P周围第i处像素点的灰度值,Gth表示阈值。
同时FAST 算法还提供了优化方案,根据判断条件,率先测试P周围第1、5、9、13 处像素点的灰度值是否满足条件,若4 处位置有3 处满足条件,则进行后续判断,反之舍弃。
ORB 特征点则是在FAST 基础上引入特征方向的概念,以此来实现特征点的旋转不变性。 确定特征方向的主要流程如下:以特征点P为圆心,r为半径确定一个圆;通过矩来计算圆的质心;定义特征方向为特征点P到以P为圆的质心的连线方向[11-13]。其中矩的定义如下:
式中:p、q表示阶数,mpq表示图像关于点(x,y)的p+q阶矩,f(x,y)表示图像关于点(x,y)的灰度值。
由式(2)进一步可推得质心表达式为:
若特征点P刚好位于坐标原点,则其对应的特征方向θP可表示为:
1.2 特征点描述
特征点描述主要是通过特征描述符实现的。ORB 特征点的特征描述符计算步骤如下:首先在特征点P的S×S的区域内,选取N对像素点pi、qi(i=1,2,…,N);然后对这N对像素点对进行旋转操作,旋转角度大小对应特征方向θP,同时定义新的点对为p′i、q′i(i=1,2,…,N);再按新点对的灰度值比较的结果进行区分,若满足I(p′i)≤I(q′i),则表示为数字0,反之表示为1;最后得到一串长度为N的字符串,这就是ORB 特征点的特征描述符[14]。
2 改进ORB 特征点
2.1 Hessian 矩阵
Hessian 矩阵广泛应用于提取图像特征、边缘检测和求取函数极值等领域。 SURF 算法相比于SIFT算法拥有更高效的特征提取和特征描述方法,而SURF 算法就是借助构建Hessian 矩阵来实现特征点提取的[15-17]。
Hessian 矩阵最初由德国科学家Ludwin Otto Hessian 于19 世纪提出,是一个自变量为向量的实值函数的二阶偏导数组成的矩阵,主要用于描述函数的局部曲率[18]。
其中二维图像f(x,y)的Hessian 矩阵表达式如式(5)所示:
式中:x,y分别表示横纵坐标,f(x,y)表示图像关于点(x,y)的灰度值。
再将式(5)进行高斯滤波,可推导出式(6):
进一步的,可以通过式(6)求得对应的Hessian矩阵判别式det(H),如式(7)所示:
2.2 基于Hessian 矩阵的改进ORB 特征点
在确定FAST 特征点之后,通过构建Hessian 矩阵进行再提取,以此来选取跟踪性更好的特征点,具体流程如下:
对于特征点P,构建其对应的det(HP),若特征点P的det(HP)在以其为中心的3×3 的像素领域内取得局部最大值,则保留,反之舍弃,具体的表达式如式(8)所示:
式中:det(HP)和det(Hi)都表示Hessian 矩阵判别式。
若特征点P满足式(8),则进行下一步判断,将特征点P的det(HP)分别与det(Hi)做差,然后累加求和,若最终结果大于设定的阈值,则保留,反之舍弃。 具体的表达式如式(9)所示:
式中:detth表示设定的阈值。
若满足上述所有条件,那么就再提取该特征点,后续的步骤则与传统ORB 特征点相同。 算法流程图如图1 所示。
图1 算法流程图
3 LK 光流法
光流表示的是三维空间运动物体在其对应的成像平面上的瞬时速度,是一种瞬时速度映射关系。而光流法则通过分析时域中不同图像中同一像素点的位置变化,从而获得物体的空间信息和运动信息。传统光流法基于两个基本假设条件。 ①亮度恒定不变:即同一像素点在不同帧图像上亮度不变;②运动是“小运动”:时间变化不会引起目标位置的剧烈运动。 在上述假设的基础之上,可进一步构建出光流的约束方程,即:
式中:Ix,Iy,It均可直接从图像中计算获得,u和v即为对应像素点的光流。
LK 光流法在此基础上提出第三个假设:假设像素点的领域内的光流是一个常数。 然后就可以根据最小二乘法对领域内的光流求解。 根据上述假设可知,某一图片上特征点P所在领域内的像素点光流相同,不妨假设有k个像素点,k个像素点对应k个基本约束方程,联立这k个方程,可得:
由方程求解出的唯一解即对应该领域内像素点的光流。 以上就是LK 光流法的核心思想。
传统的基于特征点的LK 光流法选择特征点的有Shi-Tomasi 特征点,ORB 特征点等。 本文采用上文所提出的改进ORB 特征点,并在此基础之上,引入LK 光流法,实现对特征点的跟踪。
4 实验结果及分析
本实验使用电脑处理器为Intel(R)Core(TM)i5-8300H,主频2.30 GHz,内存16 GB,64 位Windows 10 操作系统,实验平台为MATLAB 2019a 和Visual Studio 2017,所采用的数据集为标准计算机视觉数据集,以及实采数据集。
4.1 特征匹配性能实验
采用ETH Zurich(苏黎世联邦理工学院)行人数据样本数据集和实采数据集分别测试传统的ORB 特征匹配算法和本文提出的算法,测试结果如图2 和图3 所示。 其中图2(a)和图3(a)显示传统ORB 特征匹配的结果,图2(b)和图3(b)显示本文提出的算法的特征匹配结果。 可以看出,传统的ORB 特征匹配方法选取的特征点数量特别多,同时还存在误匹配的情况,而本文提出的算法选取的特征点则相对少很多,而且几乎没有误匹配的情况。
图2 ETH 行人数据样本ORB 特征匹配结果
图3 实采数据集ORB 特征匹配结果
为了更直观的体现改进ORB 特征点的优势,选取8 组数据,并对其进行匹配准确率测试。 匹配准确率,即特征点匹配的准确率,数值等于匹配成功的特征点数与总特征点数的比值。 本文按照上述方法分别对数据集中的8 组数据进行测试,分别计算传统ORB 特征点和改进ORB 特征点的匹配准确率,结果如表1 所示。
由表1 可知,改进ORB 特征点相比于传统ORB特征点在进行特征匹配时匹配准确率有明显的提高,平均提升效果为20.96%。 由此可知,改进ORB特征点有更好的匹配特性。
表1 ORB 特征匹配准确率对比表
4.2 基于LK 光流法的特征跟踪实验
图4 ETH 数据集基于传统ORB 特征点的LK 光流跟踪结果
本文采用ETH Zurich(苏黎世联邦理工学院)行人数据样本数据集和KITTI 计算机视觉数据集(由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办)进行测试。 跟踪的结果如图4 和图5所示。 其中图4 显示ETH 数据集中基于传统ORB特征点的LK 光流跟踪结果,图5 显示ETH 数据集中基于改进ORB 特征点的LK 光流跟踪结果。 传统ORB 特征点显示比较集中,而且在后续LK 光流跟踪过程中出现了不少误跟踪的情况。 相比之下,改进ORB 特征点显示的则比较分散,且在后续LK光流跟踪过程中,几乎没有出现误跟踪的情况。 因此,改进ORB 特征点具有更好的跟踪特性。
图5 ETH 数据集基于改进ORB 特征点的LK 光流跟踪结果
为了进一步直观的展示本文算法的效果,引入跟踪成功率参数。 对于每一个特征点,设置一个阈值,若前一帧位置与当前帧位置距离大于阈值,则认为跟踪失败,反之则认为跟踪成功,跟踪成功率是跟踪成功特征点数与总特征点数的比值。 本文设置阈值为20 像素。 对于ETH 数据集和KITTI 数据集中的样本,统计基于传统ORB 特征点的LK 光流法和基于改进ORB 特征点的LK 光流法的前10 帧跟踪成功的特征点数和总特征点数,并计算跟踪成功率,结果如表2 所示。
表2 基于ORB 特征点的LK 光流跟踪结果对比表
由表2 可知,在同样使用LK 光流法的情况下,基于改进ORB 特征点的LK 光流法比基于传统ORB 特征点的LK 光流法跟踪成功率有显著提升,平均提升了19.73%,说明了改进ORB 特征点相比于传统的ORB 特征点具有更好的跟踪特性,在进行光流跟踪的时候不容易出现误匹配的情况。
5 结论
本文提出了一种基于改进ORB 特征点的LK光流算法,结合SURF 算法在特征提取步骤中构建的Hessian 矩阵对传统的ORB 特征点进行再提取。采用传统ORB 特征点和改进ORB 特征点进行特征匹配实验和LK 光流跟踪实验,实验结果表明,相较于传统ORB 特征点,改进ORB 特征点在特征点匹配和LK 光流跟踪方面都有显著提升,其中特征匹配准确率平均提升20.96%,而LK 光流跟踪成功率平均提升19.73%。 因此,本文提出的改进ORB 特征点不仅拥有更好的特征匹配效果,同时具有更好的跟踪特性,具有更好的实用价值。