融合光流与改进ORB算法的单目视觉里程计*

2019-12-24 09:20王红旗茹淑慧
传感器与微系统 2019年12期
关键词:光流法里程计矩阵

唐 浩, 王红旗, 茹淑慧

(河南理工大学 电气工程与自动化学院,河南 焦作 454000)

0 引 言

随着移动机器人的快速发展,移动机器人需要完成的任务多种多样,例如物体抓取、空间探索、农业植保、搜索救援等,这些任务对移动机器人的定位提出了更高要求[1]。对于距离传感器,激光传感器价格昂贵,应用门槛太高,超声波传感器较大的误差也限制其应用;轮式里程计结合惯性测量单元(inertial measurement unit,IMU)的应用得到了一定的推广,但轮式里程计需要构建准确的车轮数学模型,存在远距离运动后误差累计的问题。视觉里程计仅仅利用摄像机采集到的图片来估计出相对运动,提供了精确的轨迹估计,相对位置误差范围为0.1 %~2 %[2],能够在信号遮挡,GPS导航系统不能用的地方如水下,室内等进行位姿定位。单目视觉里程计与双目视觉里程计相比,因为仅仅使用了一个摄像头,成本更低,图像处理速度更快[3],并且在现有的硬件基础上也更容易配置,因此单目视觉里程计具有更高的应用前景[4]。Nister D等人[5]对单目视觉里程计进行了早期研究,采用Harris算法提取特征点,结合5点和随机抽样一致性算法来进行运动估计,该方法对图形的旋转、缩放等变换适应性较差。Pretto A[6]采用尺度不变特征变换(scale invariant feature transform,SIFT)算法提取特征点,结合5点算法完成运动估计,采用SIFT算法对于图像的平移、旋转等有较好的适应性。文献[7] 基于平面假设,将光流跟踪与特征点匹配进行融合,通过卡尔曼滤波更新机器人的位置和姿态,该方法提高了定位精度,采用SURF算法对图像的平移、旋转、缩放等有较好的鲁棒性,但SURF算法计算量比较大。经过改进的定向二进制(orientated binary,ORB)算法计算速度快、精度高,可以与光流法进行融合,提高视觉里程计的性能。

1 光流法与改进ORB融合方法

1.1 基于光流的运动估计

1.1.1 基于FAST算子角点检测

在图像中以像素点p为圆心,以3个像素单位为半径画圆,通过求出p点灰度值与该圆周上各像素点灰度值的差值,并统计该差值的绝对值大于某个阈值εd的点的个数,以此判断p点是否为角点,则角点响应函数N为

(1)

式中I(i)为p点的圆周上第i个像素点的灰度值,对于给定的阈值N0(这里取N0为9),当N>N0时,认为p点为角点[8]。

1.1.2 基于LK法光流跟踪

LK光流法基于三个假设:图像光照变化不大;目标在帧间的位移比较小;局部小邻域内像素点运动参数相同,依照前2个假设建立光流方程[9]

Ixu+Iyv+It=0

(2)

式中I为整幅图像,Ix,Iy和It分别为图像对x,y,t方向的导数,u,v分别为x,y方向的速度[10],利用超定方程组求解得到中心点的运动参数,其方程可表示为

(3)

如果图像中的纹理区域最少包含两个方向,就可以得到式(3)的定解,光流法跟踪如图1所示。

图1 光流法跟踪

1.1.3 位姿恢复

由对极几何约束[11]可知,任意相邻两帧图像上的对应点x,x′,满足

x′TFx=0

(4)

式中F为基础矩阵。得到基础矩阵F后,用式(5)计算本质矩阵E

E=KTFK

(5)

式中K为相机内参矩阵,对本质矩阵E奇异值(SVD)分解,可以得到机器人相邻帧间的旋转矩阵R和平移向量T。

1.2 基于改进ORB法的运动估计

1.2.1 Hessian矩阵特征点检测

(6)

式中 (x,y)为图像坐标点,σ为尺度因子,Lxx(x,y,σ)为高斯拉普拉斯算子LOG,在此用DOG算子D(x,y,σ),取代LOG算子来近似的表达。则近似Hessian矩阵的行列式可表示为:det(Happrox)=DxxDyy-(wDxy)2,其中w为比例系数,在此取为0.9,如果近似Hessian矩阵的行列式det(Happrox)的符号为正,则该点为极值点[12]。

1.2.2 生成特征描述子

采用灰度质心法,给特征点增加方向信息,然后使用ORB构造特征描述子的方法,计算出特征描述子,进而得到了既具有旋转不变性又有尺度不变性的特征描述子。

1.2.3 汉明距离匹配

由于使用ORB构造的是二进制描述子,所以可以利用汉明距离对特征点进行匹配,为了设定域值来筛选匹配点,本文的设置是当描述子之间的距离大于2倍的最小距离时,即视为匹配有误,但最小距离有时会非常小,为此设置一个经验值30作为下限。

1.2.4 剔除误匹配对

找到两幅图像之间单应性矩阵,通过单应矩阵建立两幅图像间的关联,采用RANSAC算法使用比较少的点对模型估算,再用余下的点去验证模型的正确性,找到较为准确的模型,根据此模型筛选误匹配点。改进ORB法特征匹配图如图2所示。

图2 改进ORB法特征匹配

1.2.5 位姿恢复

同1.1.3位姿恢复方法类似,由相邻帧的匹配点对,计算出相邻帧间的本质矩阵,然后对获得的本质矩阵使用奇异值分解得到旋转矩阵R和平移向量T。

1.3 光流法与改进ORB融合

光流法计算速度快,定位频率高,适合车辆的实时定位,但是误差会随着跟踪点数的丢失而增加。改进ORB算法定位法精度较高,但定位频率低,两者的性能具有较好的互补性。本文提出一种光流法与改进ORB融合方法,具体步骤如图3所示。

图3 光流法和改进ORB特征点匹配融合算法流程

如图3所示,在2帧图像之间利用光流法获得旋转矩阵R和平移向量T,当第ln+1帧跟踪特征点数小于设定的阈值时,对于ln帧和ln+1帧利用改进ORB特征点匹配法获得两帧间的旋转矩阵R和平移向量T,同时重新检测ln帧图像并在ln帧和ln+1帧图像间进行跟踪,并通过地面的平面单应性矩阵来估计具体平移尺度[13],对之前得到的T进行更新,然后对于光流法的结果和特征点匹配得到的结果进行累积,不断循环,得到最终的R和T。

2 仿真结果分析

为了验证本文算法的有效性,在公开数据集KITTI上进行了测试,本文选取数据集序列5作为测试对象。实验计算机参数为:Pentium(R) Dual-Core CPU,2 GB内存,64位操作系统。实验所用的程序是在Visual Studio2015中使用C++编写,并借助OpenCV3.0开源库和Cmake3.8.0编译工具。序列5中的800帧属于静态场景,同时含有相机校正文件,从中可读出相机的焦距和主点坐标。在Visual Studio上进行仿真测试后,记录下结果数据并用Matlab处理,得到与传统光流法对比的定位结果比较如图4(a)所示。

图4 仿真结果对比

为了保证光流计算的精度,本文中对每帧检测的最少特征点数设为800,当跟踪特征点数低于这一阈值时,采用改进ORB算法进行帧间位移定位。另外本文算法平均每23帧执行一次循环,同光流法一样具有较快的计算速度,从图像帧中选取的8帧及其对应的运行时间如表1所示。

表1 里程计运行时间

从图4(a)中可以看出,本文方法估计的轨迹更加接近真实轨迹,因为在拐弯处跟踪点数快速减少,使用光流法估计的精度下降,所以在拐弯处两种方法的差距更加明显。从图4(b)中可以看出,在前二百多帧时光流法定位精度稍高于本文方法,但随着误差的累积,之后光流法定位误差越来越大,而本文方法因为融合了改进ORB算法精度得到提高,累积误差导致的定位误差比光流法小的多,在800帧范围内误差曲线始终在2 m范围内波动。

3 结束语

本文设计了一种光流法和改进ORB特征点匹配算法融合的单目视觉里程计方法,采用光流和改进ORB基于阈值循环运行,突出了光流法处理时间短和改进ORB特征点匹配算法精度高的优点,相比于传统的光流法视觉里程计,精度得到了提高。实验结果表明,本文算法有着比较好的定位结果,对视觉里程计的开发有一定的指导意义。

猜你喜欢
光流法里程计矩阵
室内退化场景下UWB双基站辅助LiDAR里程计的定位方法
车载自主导航系统里程计误差在线标定方法
一种单目相机/三轴陀螺仪/里程计紧组合导航算法
基于背景分类的监控视频中的运动目标检测算法综述
Matlab下视频处理系统设计与实现
权重系数自适应光流法运动目标检测
初等行变换与初等列变换并用求逆矩阵
大角度斜置激光惯组与里程计组合导航方法
矩阵
矩阵