无人车平台激光点云中线特征提取
2019-03-06蔡斌斌李必军
蔡斌斌,李必军,
(1. 武汉大学测绘遥感信息工程国家重点实验室,湖北 武汉 430079;2. 时空数据智能获取技术与应用教育部工程研究中心,湖北 武汉 430079)
近年来,随着无人平台的应用越来越广泛,如何获得全局准确且局部连续的定位变得愈发重要[1]。高精度的全局位置关系到无人平台对任务的理解和路径规划,局部连续的位姿估计关系到平台是否能够被准确跟踪和控制。当前一部分研究注重于同步定位与构图(simultaneous localization and mapping,SLAM)[2-3],该方法几乎不使用任何先验信息,依赖于前端里程计的推算提供局部连续的位姿,后端的滤波或非线性优化或回环检测优化全局的准确位置;另一部分研究则注重于高精度地图的构建和使用[4-6],根据无人平台的传感器搭配和使用环境的限制,使用特征、栅格、点云或拓扑关系[7]构建地图,依靠匹配和滤波得到准确、平滑的定位结果。由于高精度地图可以离线进行构建,其精度和准确率可以得到有效控制,相比于SLAM能够为无人平台提供更稳健的定位功能。
考虑定位的效率和精度,由三维点云构建特征地图逐渐成为高精度地图的研究热点。高精度地图中常用的特征又可分为人造特征和几何特征。人造特征一般基于图像中的像素梯度变化设计,如ORB角点[2],只适用于室内环境下RGB-D相机或双目相机采集的点云数据[8];几何特征一般分为点、线、面、体4种,既可以在点云中匹配,也可以在图像中进行投影和匹配[4]。4种几何特征中,线特征可定义为一系列存在方向的点集合,相比于点特征拥有更丰富的几何信息,相比于面特征和体特征更容易在图像中实时提取[9],较适用于室外无人平台的定位。
三维点云中的线特征尚未有较为权威的定义,通常将其定义为物体的轮廓线或物体表面的交线[10]。现有工作中对于点云中线特征的提取,可分为以下两类方法:
(1) 基于三维几何模型的线特征提取:直接计算点的邻域内的几何信息,如点的三维位置梯度[11],并根据邻域内梯度协方差矩阵判断点是否位于边界,或点与其邻域点之间连线的夹角[12],根据角度跳变判断点处于平面内部或边界,此类方法对点云的密度和噪声十分敏感,且需要通过图割或区域生长法将特征点连接为线特征;在点云内提取平面,通过平面距离和法向量夹角对点进行聚类[13],再取平面的交线和边缘作为线特征,此类方法中平面拟合的阈值设置往往会导致所提取的线特征的位置发生平移和断裂;也可以针对单根扫描线设计模型,将深度不连续处判断为线特征点[13],此类方法一般多用于二维LiDAR。
(2) 基于二维图像的线特征提取:对深度图进行可视化[14],依据二维图像中提取的二维特征计算三维线特征附近的相交平面,然后对相交平面应用区域生长法进行融合;将点云转化为俯视视角下的二维栅格,使用归一化的高度值作为栅格值并检测高度突变处作为二维边特征点[15],再由二维特征点邻域内重心和平面投影中心划分边特征类型,或使用点的法向量、高度及其方差作为栅格值[16],并应用聚类算法对栅格进行分割;直接在同步采集的灰度图像中提取边特征点[17],并根据三维点的朝向和深度对二维检测结果进行筛选。此类方法会在投影过程中损失特征的精度,但是对点云的密度和噪声不敏感。
无人车作为一种主流无人平台,在GPS信号遮挡严重的城市地区,需要构建三维地图并采用滤波定位方法才能够获得连续准确的位姿信息[18-19]。无人车一般配备Velodyne 64线或32线激光雷达作为获取点云的主要传感器,此类点云的密度和精度相比于RGB-D相机或静态激光雷达所获取的点云都有着较大的差距[20-21],目前针对此类点云中线特征提取的研究还较少。本文针对此类点云提出一种基于深度图像的线特征提取算法,并使用概率滤波对多帧数据进行融合,以提高线特征的准确率和精度。
1 特征提取
1.1 二维投影特征
在三维计算机图形学中,深度图像(depth image)是包含方向与视点的场景对象的表面距离有关的信息图像。在确定相机模型的内参和外参后,三维图形可通过Z-Buffer算法转化为深度图。由于相机投影模型中的像素位置相对于深度值是非线性的,因此三维空间中的直线和平面在深度图像中的像素梯度与像素位置之间也是非线性关系,这意味着深度图像中无法通过像素值的变化提取物体边界在像平面中的位置。使用(eye dome lighting,EDL)算法[14,22]可以对深度图像进行可视化转换,将深度图像转化为能够分辨物体边界的明暗图(shading image)。在明暗图中,提取到的二维线特征可与三维线特征一一对应。如图1(a)—(c)所示,分别为同一视角下相机采集到的灰度图、点云投影得到的深度图和EDL可视化得到的明暗图。
图像中的线特征是两个连续像素亮度区域的相交位置,对于图像中线特征的检测也被称为边缘检测[23]。常用的图像边缘检测算法有Canny算子、Hough变换、LSD(line segment detector)算子[24]等,其中LSD算子线性的时间内得出亚像素级精度的检测结果,其被设计为可以自适应调节参数,在任何图像中都只有一个误检,因此本文使用LSD算法提取二维特征,如图1(d)所示。LSD算法中线特征的提取会先在特征附近搜寻一个像素梯度与线特征相似的线支撑区域(line support region)[24],当检测出的二维线特征为物体边界时,此区域内应该为与边界相关的一个平面或两个平面中边界附近点云的投影,如图1(e)所示。此区域可用于分析物体边界附近的几何形状,因此本文将其沿二维线特征划分为左、右两个二维线支撑区域,并与二维线特征一起作为本文的二维特征模型。
1.2 三维几何模型
明暗图中的二维线特征可能分布于:①如图2(a)所示,物体与背景(天空、地面、景深方向)之间的相交位置;②如图2(b)所示,不同距离物体之间遮挡处;③如图2(c)所示,不同平面之间的交线。对应于各类线特征,左右二维线支撑区域存在以下几种情况:①靠近物体边缘的点云的投影;②空间中背景部分的投影;③当前视角下远处物体靠近被遮挡处点云的投影。图2中灰色线为LSD检测出的线特征,矩形为相应的线支撑区域。
一方面,当二维线特征分布于背景附近或出现不同距离的物体相互遮挡时,左右二维线支撑平面的其中一个有可能无法寻找到反投影点,也有可能其反投影点不是分布于三维线特征附近;另一方面,投影过程中存在精度损失,直接将二维特征反投影到三维空间中得到三维特征往往会有较多的噪声点。因此,本文提出一种新的三维几何模型,将二维线特征反投影得到的点云拟合为三维直线,称之为拟合直线;将左右二维线支撑区域反投影得到的点云拟合为左右两个支撑平面,并在其中筛选出与三维直线附近的平面,称之为相邻平面。拟合直线和相邻平面作为本文的三维几何模型,并由其几何关系提取空间中的三维线特征。
1.3 多帧数据融合
在投影过程中,很多线特征都会被遮挡,对相机模型进行和旋转,可以得到更多的视角从而提取到更多的线特征。此外,在不同的视角下提取到的线特征精度不同。为了提高线特征的准确度和精度,剔除单帧数据中的错误提取,本文使用贝叶斯滤波[25-26]对多帧数据进行融合,从而构建高精度的线特征。图3为本文的流程图,下文将分别对三维特征提取和数据融合进行介绍。
2 三维线特征提取
2.1 相邻平面选择
使用RANSAC可将反投影点拟合为直线和平面,由此可得到拟合直线和支撑平面的参数。如果其中一个平面拟合后内点数过少,则可认为此时线特征为物体与背景之间的相交线,另一个平面自然就是要求的相邻平面;如果两个平面都可以拟合成功,则需要对两个平面与直线的临近度进行比较。假定相邻平面是靠近物体边缘的,可以对此平面的几何特性提出以下假设:
(1) 其平面内点的外包矩形应该较小,整体离散度很小。如果平面内包括两个物体的投影,其整体离散度应该远远大于只包含一个物体投影的平面
(1)
(2) 此平面法向量与直线的方向向量应该接近垂直,其夹角与90°越接近,平面为相邻平面的可能性就越大
(2)
(3) 直线与此平面的距离应该更近,此假设对原始点云的密度比较敏感,因此应赋予较小的权重
(3)
式(1)—式(3)中,areaplanar表示平面面积;Nplanar和Nline表示平面和直线的内点数目;Norplanar代表拟合平面的法向量;Dirline代表拟合直线的方向向量;Ptproject表示点在平面的投影点。由这3个假设,可以计算平面是相邻平面的可能性
probability=wd·e-diversity+wv·e-vertical+wdis·e-distance
(4)
式中,wd、wv和wdis为3种度量的权重值,若平面的probability较大,则是相邻平面的可能性就更大。在得到相邻平面后,即可根据拟合直线和相邻平面之间的几何关系得到更高精度的三维线特征。
2.2 线特征的重优化
为了减小投影过程中的误差和点云密度对特征精度造成的影响,本文使用三维几何模型的几何特性对线特征作进一步优化。假定投影平面的拟合结果与真实相邻平面相同,如图4所示,以真实线特征方向为x轴、真实相邻平面法向量方向为z轴、朝向真实目标平面方向为y轴建立坐标系。图中planar代表拟合的平面,line表示拟合直线,优化目标应当是投影平面在x轴的投影。因此首先应该在XOY平面内寻找拟合直线的目标投影project,然后在投影平面内寻找y轴方向上的对应内点fit。Y轴的方向未知,因此只能通过拟合直线的参数求其平面投影的方向,并将其作为近似搜寻方向。此近似过程造成所得直线特征在其直线方向上发生偏移,偏移值与拟合直线与XOZ平面的夹角大小及距离有关。线特征方向与相机主光轴方向越相似,则其对应的深度值差异就越大,由此拟合的三维直线误差也就越大,因此对于同一特征应该在多个视角下对其进行观测。
3 特征融合
3.1 重复观测
将三维点云投影到二维平面,数据维度下降的同时也限制了特征提取的范围,因此可以将相机模型进行旋转和平移,得到不同位置下更多视角的投影图像。另一方面,每个视角下不可避免地存在二维线特征误检,从而导致三维线特征即使经过优化也存在误差,因此多个视角之间应有重叠部分,对同一特征进行重复观测。如图5所示,车辆的棱线在两种视角下被重复观测到,在图像中可以看到两次检测到的二维特征存在一定的区别,然而反投影到三维空间时左右支撑平面的区别并不大。这意味着两次得到的三维线特征差别不会太大,第二次多余观测可以提高此线特征的可信度和准确率。
3.2 贝叶斯滤波
对多余观测数据进行滤波的目的有两个:①消除某一帧数据下由于点云分布不均匀造成二维线检测时的误检,即认为无法被多次观测到的线特征是错误检测;②通过多次检测的结果进一步优化投影过程中的精度损失。本文使用贝叶斯滤波对多帧数据进行融合,通过贝叶斯滤波对线特征的置信率和参数进行更新。经过滤波后,舍弃那些置信率较低的线特征,对于置信率较高的线特征使用其多帧的内点集合重新进行拟合。
P(x=1)=exp(-∑dj/num)
(5)
4 试验与分析
4.1 数据预处理
大多数论文中使用RGB-D相机[4,17]或Rigel VMX-450 MLS[5,11-12,14]系列静态激光雷达获取点云,其中RGB-D相机虽然便宜,但一般只用于室内;静态激光雷达价格十分昂贵,且帧率过低。本文使用Kitti数据集[27]中的Odometry子集作为试验数据,该子集内包括已同步的Velodyne 64线雷达点云、灰度图像、IMU数据及标定结果,整体数据覆盖了数条街道,既存在静态停放的车辆,也包括动态移动的行人等。首先,对点云数据进行逐帧拼接,使用IMU数据对点云进行刚体变换,将点云转换到第一帧相机坐标系中;然后,使用滑动窗口法滤除点云的噪点和动态障碍物,减少点云的噪声,并使用RANSAC提取拼接点云中的地面部分。如图6所示,使用IMU数据对点云进行拼接,路边静止停放的车辆不会出现重影,建筑物立面也没有重叠。使用一次RANSAC即可大致将地面去除,剩余一些噪点属于孤立存在,不会影响其他物体的线特征提取。
4.2 三维模型
使用OpenCV的LSD检测接口可得到二维图像上的直线片段及相应的线支撑区域的宽度, 由此可计算出二维投影特征。由于LSD检测的特征为亚像素级,二维线特征和线支撑区域宽度并不是整数,因此反投影时应该对二维特征点的深度值进行双线性插值,如图7所示。从图7(b)中可以看出,二维线特征的检测存在误差,直线上的有些点偏离了实际的物体边界,这会导致一些明显远离三维线特征的反投影点。如图7(c)所示,中值滤波可以很好地抑制椒盐噪声与突变的反投影点,减少了后续RANSAC的计算量。
LSHP(line segment half planar)结构[14]在较为稠密且噪声较少的点云处可以得到较好的结果,但是当分布不均匀或噪声较大时无法提取正确的“V”字形结构,相比之下本文的方法可以提取到较好的结果。如图8所示,在车体这种较为稀疏的表面提取二维特征时,无论是线特征投影还是线支撑区域投影,当其与当前视角方向同向时都会存在较大的误差,这会导致LSHP结构无法正常提取,而本文使用的模型都可以得到较好的效果;对于建筑物这种分布较为均匀但噪声点较多的物体,LSHP结构中的主方向计算需要迭代多次才能得到,而且容易落入局部极值导致线特征整体偏移,而本文的模型可以通过RANSAC快速计算出平面参数,投影得到一条沿棱线均匀分布的线特征。
4.3 贝叶斯滤波
在没有加入概率模型对多帧数据进行滤波时,墙面上会存在一定量的误检,不同视角下同一线特征的位置也会有所不同。经过贝叶斯滤波处理后,误检数大大减少,且线特征的位置得到了进一步优化。图9分别为建筑物和车体的线特征在滤波前后的提取效果,由于只对视角作了旋转,因此对于建筑物的轮廓线提取尚不全面,但是明显可以看到平面内的误检大大减少了;车体表面的误检主要是由于车体的轮廓在激光雷达的移动过程中很难被完整扫描,导致表面的分布极不均匀,经过滤波后其提取精度大大提高了。
5 结 语
本文提出了一种新的几何模型,将点云转化为深度图像和明暗图像,并结合图像领域中成熟的线检测算法,实现了在Velodyne 64线激光雷达所获取的稀疏点云中提取线特征,并使用贝叶斯滤波对提取结果进一步优化。但目前只解决了直线特征的提取,还无法提取点云中的曲线特征。若用于构建线特征地图,还需要检测直线特征之间的拓扑关系,构建目标物体的完整轮廓,这样才能明确特征之间的遮挡关系,以便正确地进行投影和匹配。