A line segment extraction algorithm using laser data based on seeded region growing
open source
摘要:本次将介绍一种基于种子区域生长的激光线段特征提取方法,种子区域生长在图像处理中得到了广泛的应用。所要介绍的方法将不同于线段跟踪、霍夫变换和分割合并等等,总的步骤包括种子线段的提取、区域生长、重叠区域处理和端点生成。通过实际对比实验,表明所提方法在提取线段过程中的实时性、准确性和精确性方面,相比于传统的Iterative-End-Point-Fit 取得了更好的效果,所用数据集为室内实验室环境和走廊环境。所要叙述的内容分为以下几个方面
相比于视觉传感器,激光传感器具有数据可靠、抗干扰能力强,数据精度高等优点。线激光应用于SLAM,karto_SLAM、gmapping以及cartographer都取得了相当成功的成果,以及在移动和飞行机器人自主导航等领域也取得了不错的效果。在需要移动机器人完成更为复杂的任务时,比如被绑架时的全局定位,自主导航过程中的鲁棒定位,SLAM过程中的回环检测,都需要利用观测信息对环境进行更为高等的描述,而不仅仅是点云。就线激光而言,容易想到也易于实现的高等特征,就是线段特征,也有大量学者利用线段特征进行导航、全局定位以及SLAM。
早期就有大量学者关于线激光的线段特征提取做了大量工作,譬如线段跟踪、霍夫变换以及分割合并等等,在07年的Auton Robot 发表的一篇关于线段提取方法比较的论文:
Nguyen V, Gachter S, Martinelli A, et al. A comparison of line extraction algorithms using 2D range data for indoor mobile robotics. Auton Robot 2007; 23(2): 97-111
经过实验比较之后,得出分割合并的性能最优;鉴于此,在设计对比实验中,我们所提方法也将与分割合并进行比较。分割合并方法的示意图如下所示:
但是在实验过程中发现,这样的提取方法会产生如下问题,致使线段提取的精确性与准确性收到影响:
所提方法的整体步骤如下图所示:
直线的参数方程为: ax+by+c=0 a x + b y + c = 0 。传统最小二乘只考虑 Y Y 轴方向上的误差,而对于正交最小二乘应用于直线拟合,考虑的是点到直线的垂直距离,使得拟合直线不会受到病态方程的影响(微小的波动就会引起直线参数巨大的变化)。代价函数如下:
代价函数关于对参数 a,b,c a , b , c 求偏导,分别置为0,在经过化简之后就可以获得所要拟合直线的参数。
种子区域生长的第一步,需要先获得种子,而线段的种子可以理解为一段少量连续点云构成的线段(小线段)。在获取激光数据之后,可以依次选取连续 Snum S n u m 个点云进行判断是否符合种子线段的要求,如果符合,则进行区域生长获取整条线段,否则舍弃,重新进行种子线段的选取。判断的标准有两个:
1、点到直线的距离:
候选种子线段上各个点云到所拟合直线的距离小于阈值 ϵ ϵ , 阈值的选取与所用传感器有关:
2、点到点的距离
候选种子线段的点云往往较少,因此引起的误差可能较大,由下图所示:
上图中,红色点即为了点云的预测位置,而蓝色的为实际位置,当候选种子线段的误差较大时,预测和实际位置之间的差距往往较大,所以在判定种子线段时需要增加这么一条判定条件。
其中预测点的位置,由当前点云的角度和所拟合的直线参数共同决定:
区域生长在图像领域获得了较为广泛的应用。通过一些删选条件把具有相同特征的对象聚类在一起,最终获得分割或者分类的效果。在线段提取的过程中,同一线段上的点云具有的特征就行,点云到直线的垂直距离小于给定阈值。在本方法中,通过种子线段的向前和向后生长获得完整线段,具体如下伪代码所示:
区域生长可以获得较为理想的分割效果,但是不尽如人意的是,环境错综复杂,经常会发生重叠区域,如上图所示。发生重叠的情况包括共线和不共线两种,上图所示的是共线情况,需要对两条共线的重叠线段合并为一条线段,而不共线的情况(比如墙角)则需要判断重叠部分的归属问题,即判断重叠部分的点云距离哪条线段更近(属于哪条),具体可以如下伪代码所示:
在其他的一些文献资料中,并未对线段端点有过多的描述,通过末端点云对线段端点进行描述,但是所提线段的末端点云包含包含噪声,本方法利用所获得的直线参数进行端点的生长,具体如下图所示:
通过末端点云正交所拟合的直线获取线段端点:
不失一般性,对于两个环境的数据集分别选取前1000帧数据进行实时性展示:
定量数据如下:
实验室环境(单位:毫秒)
项目 | 均值 | 方差 | 最小值 | 最大值 |
---|---|---|---|---|
种子区域生长 | 0.445 | 0.057 | 0.013 | 0.695 |
分割合并 | 6.672 | 0.672 | 3.084 | 12.00 |
定量数据如下:
走廊环境(单位:毫秒)
项目 | 均值 | 方差 | 最小值 | 最大值 |
---|---|---|---|---|
种子区域生长 | 0.329 | 0.129 | 0.073 | 0.6931 |
分割合并 | 5.193 | 1.039 | 2.848 | 7.791 |
准确性定义如下:
定量比较结果如下所示:
实验室环境(单位:%)
项目 | TR T R | FR F R |
---|---|---|
种子区域生长 | 93.55 | 2.59 |
分割合并 | 68.55 | 7.06 |
定量比较结果如下所示:
走廊环境(单位:%)
项目 | TR T R | FR F R |
---|---|---|
种子区域生长 | 94.20 | 0 |
分割合并 | 71.01 | 4.08 |
精确性比较指代所提线段是否完整,不同于07年线段提取方法比较的文章。
由上图所示,基于种子区域生长的方法可以获得更多更完整的正确线段。
至此,基于种子区域生长的直线段提取方法介绍完了,整个方法比较简单,参数较少。另外如果有不同的需要,例如所用传感器是否为全向,或者所用传感器是否存在噪点,需要对程序进行修改。
之后可以将所获得的线段特征应用于SLAM,混合特征于地图构建,全局定位或者更为鲁棒的自主导航过程。
有问题可加群 (移动机器人导航与控制群:199938556) 讨论交流,进群修改备注。