ORB 特征点提取和匹配的研究

2023-01-24 12:51姚三坤刘明
电子设计工程 2023年2期
关键词:实时性质心像素点

姚三坤,刘明

(云南民族大学电气信息工程学院,云南昆明 650504)

近几年来视觉SLAM(Visual SLAM,VSLAM)技术展现出了极大的潜力,成为机器人和汽车自动驾驶领域的新热点,其关键技术包括同时定位与绘图(Simultaneous Localization And Mapping,SLAM)和图像处理。VSLAM 方法可以获取更加丰富的外界环境信息,且图像传感器体积小、性价比高,能够减少移动设备对GPS 的依赖进行自主导航,图像信息还可以引入神经网络算法,所以VSLAM 是目前机器人领域研究的热点[1]。

目前,VSLAM 根据视觉里程计提取方法的不同分为特征点法和直接法[2]。如LSD-SLAM(Large Scale Direct monocular SLAM)、VINS 系列是以直接法为提取方式。直接法的优点是以像素的明暗程度来判断移动设备的运动,不关注关键点和描述子;但对移动设备的硬件非常敏感且移动较快时可能丢失信息,在回环检测中也没有基于直接法的回环检测方式。

视觉SLAM 在各种场景的大量应用,对SLAM 的实时性提出了很高的要求[3],传统的ORB 在特征点的提取和匹配上花费了大量的时间且不能保证有很好的效果,而且特征点局部集中会导致信息重复。

该文在ORB 的提取和匹配部分进行改进,使得特征点分布均匀,在低纹理部分也能够提取到特征点,减少误匹配。可使视觉SLAM 减少后续不必要的计算和信息重复,并在数据集中验证了改进ORB在实时性和准确性上均有所提升。

1 传统ORB

传统ORB 流程图如图1 所示,根据流程图可知,当传感器的数据传入之后,前端对数据的处理极为关键。但前端视觉里程计计算非常耗时,且前端视觉里程计的时间主要花费在特征点的提取和匹配上。由于对特征点的选取不佳,也会导致在特征匹配时产生更多的误匹配和局部匹配信息重复,而增加匹配时间。如果使整个SLAM 的运行满足实时性的要求,运行时间必须低于30 毫秒/帧,而ORB 的运行速度为20 毫秒/帧,特征点计算将占据大部分时间。只有提高特征点提取和匹配的计算速度才能在运行SLAM 时有较好的实时性与稳定性。

图1 传统ORB流程图

1.1 FAST特征点

因为FAST 不具有方向信息,姚海芳等[4]采用SURF 来获取特征点,该文利用改进的FAST 角点(Oriented FAST)来计算特征点[5],保留FAST 非常快的检测速度,通过灰度质心来计算方向,当图像的某一部分像素发生了明显的变化,这个像素点就会被检测到。当一个点和它附近区域的像素相差很大时,那么这个点就应该是角点。因为FAST 只用计算像素,所以比其他算法速度快,如图2 所示,大致过程如下:

1)在图像中选取像素点P,假设它的亮度为IP。

2)设置一个阈值T(比如IP的20%)。

3)以像素点P为中心,选取图2中的16个像素点。

图2 FAST特征点

4)当圆上有N个点的亮度大于IP+T或小于IP-T,像素点被认为是特征点[6]。

5)循环以上四步,对每一个像素点都如此反复。

在N取12 的算法中,添加预测试操作,以便在计算特征点时排除大多数错误的像素点。直接测试附近圆上四个方向的代表像素点1、5、9、13 的亮度。至少有三个部分同时大于IP+T或小于IP-T时,才有可能判断像素点为特征点,如果不是就不考虑。在检测之前有一层筛选操作,可以大大加速特征点的筛选。而如果图像特征点经常出现局部堆积,在筛选之后可以用非极大值抑制,避免筛选集中问题。

FAST 特征点是只计算像素点的亮度区别,虽然计算速度很快,但有局部重复、不能均匀分布、没有方向信息等缺点。又因为圆取的半径固定,所以存在尺度问题:某些点从远处和近处看,不能同时确定为角点。ORB 添加尺度和旋转的描述,来改善FAST方向性和尺度的缺点[7]。图像金字塔用来改善尺度,并在每一层上进行检测,旋转通过灰度质心法改善[8]。

图像金字塔是计算机视觉中常用的一种处理方法,示意图如图3 所示。底层是原始图像,对图像进行固定缩放,就可以看到不同分辨率的图像,距离越远对应层数越高的像素。当计算完特征点后进行匹配特征点时,每一个像素点可以对应到金字塔的不同层数像素,这就可以实现尺度不变性。如相机在后退,那么应该能够在上一个图像金字塔的上层和下一个图像金字塔的下层中找到匹配。

图3 相机后退图像金字塔

质心是以图像灰度值为中心,灰度质心法可以计算图像灰度质心。操作步骤如下:

通过以上方法使得FAST 有尺度和旋转的描述,通过改进的方法使得相机在特殊复杂的场景中有更强的抗干扰能力,就算在环境昏暗或者室外也能提取和匹配到特征点,在ORB 中将添加了尺度和旋转的FAST 叫作Oriented FAST。

1.2 BRIEF描述子

BRIEF 描述子是计算一帧图像里关键点周围随机像素的大小,当周围像素比中心像素点大就取1,反之就取0。这些根据像素计算出的0 和1 组成了描述向量,关键点周围随机像素的关系就用二进制表示。如果取128 个这样的随机像素,则由0 和1 组成的向量有128 维[9]。因为BRIEF 是没有规律的去取两个像素点,所以计算简单、速度快且使用0 和1 数字表示,存储便捷。由于BRIEF 的种种优势,使得图像匹配中在实时性方面有很好的优势。传统BRIEF有旋转不变性的缺点,即在发生旋转时容易丢失[10]。而ORB 由于计算了特征点方向,“Steer BRIEF”让BRIEF 描述子也有了旋转不变性。

因为ORB 特征点计算了旋转和缩放,在各种情况下表现都较原来更优良。而且改进FAST和BRIEF的组合在实时SLAM 中表现非常高效[11]。

1.3 特征匹配

视觉SLAM 的数据关联非常关键,而匹配就是计算各帧图像的关系。比如当前帧图像与前一帧图像的对应关系,对它们的描述子进行准确匹配,在姿态估计、优化等进程可以减少很多不必要的工作量[12]。

匹配时将当前帧特征点和其他帧特征点描述子距离进行计算,再将所有计算结果排序[13]。选取最近的距离,将这两个点作为匹配点[14]。特征点的相同与否靠描述子的距离体现,描述子通常使用汉明距离(二进制表达,当一个字符串变成另外一个字符串时替换的字符数)。

2 改进ORB

1)计算FAST 特征点时加入图像金字塔,使得图像具有深度信息,并根据图像信息设置提取阈值。

2)计算灰度质心时使用三角函数原理回避复杂的arctan、sin、cos 计算,从而达到加速的效果。在提取特征点计算灰度质心时,如果选取的图像块超过整张图的边界,将这个点标记为坏特征点,后续的步骤将不考虑这个点。

3)使用256 位的二进制描述,对应到8 个32 位的unsigned int 数据,用typedef将它表示成DescType。

4)在匹配时,毕杨等[15]直接利用汉明距离计算匹配,会导致产生很多误匹配,该文匹配时将标记点剔除后,在函数中使用SSE 指令集中的_mm_popcnt_u32 函数计算变量中1(当附近像素比中心像素大时取1)的个数,达到计算汉明距离消除误匹配的目的,改进ORB 流程图如图4 所示。

图4 改进ORB流程图

3 实验及结果分析

该文实验条件:便捷式计算机i5-10210U、CPU1.60 GHz、8 GB 内存、使用Ubuntu18.04 操作系统、程序为C++,公开数据集EuRoc。

3.1 数据集图片仿真对比分析

选取两张相机发生微小运动的EuRoc 数据集图像,在改进ORB 中图片的FAST 提取阈值设置为35,提取了367 个特征点,由于提取特征点数目越多,提取时间越长[16],所以在传统的ORB 算法中也提取相应的367 个特征点,仿真结果如图5、6 所示。

图5 传统ORB特征点

图6 改进ORB特征点

从图5 可以看出,传统ORB 特征点分布集中在左上角管道及中部铁架,特征点集中在棱角分明区域,不能很好地反映图片中其他区域的信息,在某些光照变化较大或低纹理区域(如木板)不能很好地提取特征点[17-20]。改进后的ORB 特征点分布较均匀,重复小,并且在纹理较低的木板、光照不明显的区域均比传统ORB 有较大提升。

通过对特征点的提取,传统ORB 匹配结果如图7、8 所示。

图7 传统ORB特征点未筛选匹配

从图7 看出,传统ORB 未进行筛选的匹配有大量误匹配(如左下角的毛网线和木板都匹配到了左上角的管道区域),将汉明距离小于最小距离的两倍作为匹配的筛选条件,再对其进行匹配,结果如图8所示。

图8 传统ORB特征点筛选后匹配

经过筛选后的特征点匹配,误匹配明显降低,但还是有少量匹配不精准。

在改进的ORB 中优化特征提取和匹配,在提取特征点时加入图像金字塔,使得图像具有深度信息,并根据图像信息设置提取阈值;用256 位二进制描述,对应8 个32 位的unsigned int 数据;计算灰度质心时使用三角函数原理回避复杂的arctan、sin、cos 计算,使得计算加速,将超出图像边界的特征点标记为坏特征点并进行剔除;在特征匹配中,使用剔除和整理后的良好特征点进行匹配,将SSE 指令集中的_mm_popcnt_u32 函数计算变量中1 的个数,从而消除误匹配,结果如图9 所示。

图9 改进ORB特征匹配

从图9 可以看出,改进ORB 特征点匹配局部很少重复且更加均匀,也没有误匹配,对SLAM 后续位姿深度等的计算有更好的研究价值。

3.2 仿真结果分析

为了证明该文算法的准确性和实时性,将传统ORB 和改进ORB 进行对比实验,实验仿真结果如表1 所示。

表1 传统ORB与改进ORB仿真

由表1 可知,在提取相同数量特征点的情况下,改进ORB 经过对特征点的筛选(包括设计提取阈值、删除计算灰度质心时,图像块越界的坏特征点),减少信息冗余的重复点,保留分布均匀的特征点,最后成功匹配了103 个分布均匀的点,特征点提取时间缩短了22.08 ms,特征点匹配时间缩短了0.39 ms。

4 结论

该文对ORB 特征点方法进行了详细描述,并对ORB 特征点提取和匹配进行优化,在公开数据集EuRoc 上对传统ORB 和改进ORB 进行了对比仿真,通过仿真结果可以看出,改进的ORB 特征点提取和匹配时间都大幅减少,提取时间缩短了22.08 ms,匹配时间缩短了0.39 ms。同时特征点的筛选避免了重复提取和错误点的匹配,为计算节省了时间,提高了实时性与准确性,为后续计算提供了更好的基础。

猜你喜欢
实时性质心像素点
重型半挂汽车质量与质心位置估计
基于GNSS测量的天宫二号质心确定
基于局部相似性的特征匹配筛选算法
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
航空电子AFDX与AVB传输实时性抗干扰对比
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
计算机控制系统实时性的提高策略
基于局部权重k-近质心近邻算法
一种海洋测高卫星质心在轨估计算法