李会宾,史 云,张文利,项铭涛,刘含海
(1.北京工业大学 信息学部,北京 100124;2.中国农业科学院 农业资源与农业区划研究所,北京 100081)
随着人们对无人驾驶的日益关注,基于道路的三维信息检测技术成为自主导航中一项重要技术,其中道路边界检测是道路三维信息检测中的重点。在城市交通环境中,道路边界划分了道路区域和非道路区域,同时凸起的道路边界也是行驶过程中的障碍物[1-2],检测道路边界不仅能够保证车辆在可行驶区域内行驶,还可以控制车辆与道路边界的距离,保障行车安全。
当前多种类型的传感器被用于道路边界的检测,其中包括单目相机或双目相机、LiDAR或者LiDAR和相机结合的双传感器[3]等。基于相机的道路边界检测算法中,大多采用基于图像的边缘提取技术[4-5]或者从深度图像的数字高程模型中提取道路边界的技术[6],由于相机易受外界光照影响,会造成图像模糊和畸变,导致道路边界误检或无法检测。随着近年来LiDAR点云数据采集技术的发展,国内外研究者对基于LiDAR的道路边界检测技术进行了大量研究,并取得较好结果。文献[7]和文献[8]根据道路边界高程跳变特性及斜率特征获取道路边界点,然后进行道路边界点跟踪优化去除异常边界点,最后利用线性分析拟合出道路边界。文献[9]根据距离判别法和霍夫变换法提取激光扫描线中道路边界点,最后将道路边界点作为种子点,通过高斯迭代回归过程拟合出道路边界。文献[10]使用道路边界点的高程跳变、强度特征提取道路边界点,最后通过道路拓扑特征来优化道路边界点。基于LiDAR和相机双传感器结合的方法[11]虽然结合两者各自的优点,但是该类方法将高分辨率的图像和点云处理数据融合时算法复杂,道路边界的二维边缘变化特征以及三维结构特征的同时检测会造成检测效率低下。
在城市交通环境中,道路边界附近往往会存在绿化带,绿化带生长过程中会出现遮挡道路边界的现象,前人基于LiDAR进行道路边界检测的算法中较少考虑道路边界被绿化带遮挡的情况,如图1所示,本文主要针对这一情况,提出基于车载LiDAR的道路边界检测算法。本文算法主要利用道路边界的局部三维结构特征和道路边界分布特征来准确地检测道路边界。首先根据行驶轨迹获取道路的横切面,然后通过单线点云获取道路横切面轮廓,之后根据道路横切面中的高程变化特征、斜率变化特征和道路边界分布特征来检测道路边界点,最后通过回归拟合的算法获取完整的道路边界线。算法流程如图2所示。
图1 道路边界遮挡情况下的检测模型
图2 算法流程
如图3所示,在道路横切面获取模型中,道路横切面由道路初始横切面与道路垂直相交而形成,道路横切面能反映地物高程变化的情况。道路初始横切面中的虚线代表道路横切面,道路平面和道路凸起处的交线为道路边界线,道路边界线上的点为道路边界点,每个道路初始横切面上存在一个车辆轨迹点,两个相邻车辆轨迹点间的箭头代表车辆的运动方向。道路横切面具体获取方式如下:首先根据车辆轨迹点获取道路初始横切面方向向量;然后根据方向向量和车辆轨迹点确定道路初始横切面;在道路初始横切面前后一定范围内存在道路上点云数据,最后将临近的点云数据向道路初始横切面垂直投影,最终获得较为稠密的道路横切面。
图3 道路横切面获取模型
1.1.1 道路初始横切面法向量获取
相邻两个轨迹点之间的道路横切面方向向量算式为
(1)
(xi,yi,zi)和(xi+1,yi+1,zi+1)分别是第i个和第i+1个轨迹点坐标,n(xid,yid,zid)是两轨迹点之间道路初始横切面的方向向量。
1.1.2 道路横切面邻域点投影
选取道路初始横切面前后一定范围内的点云数据,向道路初始横切面上进行垂直投影,获取道路初始横切面上的投影点集合形成最终的道路横切面,本文选取道路初始横切面前后0.05m范围内的点云数据。
道路初始横切面的方程为
ax+by+cz+d=0,
d=-(axi+byi+czi).
(2)
a,b和c的值在本文中分别为xid,yid和cid。(xi,yi,zi)为道路横切面对应的轨迹点。
每个初始三维点的投影算式为
xp=-(axi+byi+czi+d)asabc+xsi,
yp=-(axi+byi+czi+d)bsabc+ysi,
(3)
zp=-(axi+byi+czi+d)csabc+zsi,
式中:(xsi,ysi,zsi)为横切面邻域内三维点的坐标;(xp,yp,zp)为(xsi,ysi,zsi)投影后的坐标。
道路边界检测的关键是道路横切面中的道路边界点检测。在城市道路环境中,道路边界附近一般会存在绿化带等障碍物遮挡道路边界,导致道路边界的上平面出现大量杂点。道路边界结构的变化会严重影响道路边界的高程变化和斜率特征,使得道路边界点检测难度大大提升。为了避免绿化带等对道路边界遮挡带来的影响,本文提出通过单线点云自底向上从道路平面底部提取道路横切面轮廓,然后从道路横切面轮廓中提取道路边界点。该方法可以完整地提取道路横切面的轮廓,在道路边界存在遮挡的情况下也能保留道路边界的高程变化和斜率等属性信息,同时也可去除道路平面以上障碍物信息。
1.2.1 单线点云生成
单线点云上的三维点依次排列,其长度由车辆轨迹点起向左右拓展长度的总和,与道路横切面共面且位于道路底面下方,单线点云中相邻点的间隔为dm,单线点云初始状态如图4所示。单线点云生成过程如下:首先获取单线点云上的初始点,将车辆轨迹点(激光器坐标点)垂直下降(H+h)m后,得到初始点,其中H为激光器距离地面高度,h为初始点相对于地面下降的距离;然后确定单线点云的斜率,由于单线点云的高度值已确定,所以只需确定单线点云在xy方向的斜率,单线点云和道路横切面属于同一个平面,则道路横切面中xy方向的斜率即为单线点云的斜率;之后以初始点为基准,确定单线点云左右拓展的长度;最后根据单线点云的初始点、斜率、左右拓展的长度和以及相邻点的间隔获取单线点云上其他所有点。本文中d,H和h分别为0.02、2.3和0.3。
1.2.2 单线点云定位
本文提出采取单线点云自底向上包围道路横切面的方式获取道路横切面轮廓。单线点云上升过程中采取“遇则停,停则定位”的策略,如图4所示,道路横切面和单线点云分别以星形点和圆形点表示,单线点云垂直上升向道路底面靠近,在上升过程中,利用 kd-tree近似最邻近邻域搜索算法[12],对单线点云中每个点的邻域进行搜索,查找是否存在道路上地物的点云数据,若存在,则停止向下搜索,执行定位操作,单线点云上剩余点的继续上升搜索,直到所有点都执行了定位操作。单线点云每次上升的高度为Hcm,本文中Hc为0.02,通过定位操作使单线点云更加靠近道路横切面,保证道路轮廓的完整性和平滑性。单线点云定位是将单线点云中的每个点根据其邻域点分配新的位置,算式为
(4)
式中:n为单线点云中的每个点邻域中点的数量;(xsi,ysi,zsi)为每个点邻域中三维点的坐标。图4描述了单线点云逐渐上升获取道路横切面轮廓的过程,最终单线点云完整地附着在道路横切面轮廓的表面,成型后的单线点云即为道路横切面轮廓。
图4 道路横切面轮廓提取
道路边界具有明显的特征,首先道路边界区域内高程变化较大,其次道路边界点和相邻的路面点存在较大的斜率[13-14],最后道路边界点平滑延伸分布。基于以上发现,本文选取道路边界点高程跳变特征、斜率变化特征和道路边界点的分布特征,然后采用双窗口法在道路横切面中对道路边界点进行检测,如图5所示。在窗口1和窗口2双窗口内,道路上下边界点存在较大的高程变化和斜率,本文利用这两个特征检测出道路下边界点,然后根据道路边界点的分布特征剔除错误的道路边界点。
图5 双窗口法检测道路边界点
1.3.1 高程跳变
如图5所示,道路边界的高程跳变存在两个窗口中。高程跳变算式为
Δz1=|zmax(win1)-zmin(win1)|,
Δz2=|zmax(win2)-zmin(win2)|,
(5)
Δz12=|zmax(win1)-zmin(win2) |.
其中zmax(win1)和zmin(win1)分别是窗口1中的最大和最小z值,zmax(win2)和zmin(win2)分别是窗口2中的最大和最小z值,Δz1和Δz2分别是窗口1和窗口2存在的最大高程差,Δz12为窗口1与窗口2之间存在的最大高程差,道路边界的高度设定范围为H1和H2。如果H1<Δz1
1.3.2 斜率
由图5可知,由于道路的上边界点和下边界点之间存在明显的高程差且水平方向距离较小,可知道路上下边界点之间存在较大斜率值。斜率s的算式为
(6)
道路边界点的斜率阈值为sT,如果s>sT,则所得道路边界点满足道路边界点斜率的特征,同时也验证了利用高程跳变获取的道路边界点的准确性。
1.3.3 道路边界点的分布
道路边界具有连续延伸的特征,相邻道路横切面上同侧道路边界点在道路延伸的方向会存在较大的距离,在其它两个方向的距离较小,如图3所示:道路边界点的分布特征为两个相邻的边界点在y方向上存在较大的距离,在x和z方向存在较小的距离,根据道路边界点的分布特征来剔除误差较大的边界点。
相邻边界点y方向的距离算式为
Disy=|yc(i)-yc(i+1)|.
(7)
相邻边界点xz方向的距离算式为
Disxz=|xc(i)-xc(i+1)|+
|zc(i)-zc(i+1)|.
(8)
如果Disy>DT1且Disxz 本算法在道路边界点检测的结果中会存在少量外点,所以需要对道路边界点检测结果进行优化,然后对优化后的道路边界点进行拟合。由于道路形状多种多样,本文利用RANSAC算法,对道路边界点分段优化和道路边界线参数的获取。首先将全部道路边界点进行分段处理,即整条道路划分为多条较小长度的道路段,这样道路边界线可以近似于多条折线段组成,然后对每段道路边界点进行直线参数提取并绘制直线,最终形成多条折线段,多条折线段合并可形成较完整的道路边界。道路边界点拟合的效果如图6所示,RANSAC算法成功地排除误差较大的边界点,获取较为完整的道路边界线。 本文的实验数据是基于“全景激光测量”车辆实验平台获取的,该平台主要配备了全景相机、VLP-16LiDAR、惯导系统和GPS天线。LiDAR的测量范围为0~200 m,测量精度为±0.03 m,每秒钟可获取30万个点。实验平台如图7所示,矩形框内为“全景激光测量”系统。 图6 道路边界点拟合结果 图7 实验平台 本文实验测试数据为北京市三环附近路段,在整个道路环境内存在大量城市中的地物,例如道路、建筑、电线杆和树木等其它道路组件,整条道路长约2 km,存在约3 752.7万个点。道路场景存在2类道路边界,分别是无绿化带遮挡的道路边界和被绿化带遮挡的道路边界,如图8所示。图8(a)中白色边框中是无遮挡的道路边界,即为规则的道路边界。图8(b)白色边框中,道路边界的上平面由于杂草覆盖而存在大量无规则的杂点。本文中数据处理PC配置为Intel Core i5-6500 3.2 GHz处理器、8 GB内存。 无绿化带遮挡的道路边界的数据及检测结果,如图9所示,图9(a)中的道路边界结构完整度高,且没有杂草覆盖的影响,图9(b)中白色直线为检测到的道路边界,本文算法对于无遮挡的道路边界获取了良好的检测结果,道路边界检测结果准确地与实际道路边界相统一。 图8 两种类型的道路边界 图9 无绿化带遮挡的道路边界数据及检测结果 存在绿化带遮挡的道路边界数据及检测结果,如图10所示,图10(a)中道路左边界完整度高,道路右边界出现绿化带遮挡,白框区域为绿化带遮挡区域,存在大量的杂点。虽然右边道路边界存在大量的杂点,导致道路边界上平面的平整性受到破坏,但是道路边界的下平面形态仍然保存完整。本文根据这一特征,通过单线点云从道路平面下方逐渐上升获取道路的整体轮廓,避免道路上平面出现遮挡时对道路边界检测的影响,通过本算法获取良好的道路边界检测结果,道路边界检测结果准确地与实际道路边界相统一,检测结果如图10(b)中白线所示。 该路段全部数据及检测结果,如图11所示,该路段存在绿化带遮挡的道路边界区域和无绿化带遮挡区域,如图11(b)所示,在复杂的道路区域环境中,本文算法对道路边界的检测结果整体完整度较高,道路边界的误检率较低,但是结果中存在少量杂点,这是一些路口存在类似于道路边界特征的障碍物引起的,分散性大,较难去除。 为验证本文算法的性能,本文首先从初始道路数据中手工提取了真实的道路边界作为参考值,将参考值和本文算法、VRMesh软件中道路边界检测算法以及Fang等人[10]算法的道路边界检测结果分别从道路边界完整率、正确率两个方面进行了对比,评估算法由文献[15]提出,被广泛地用于道路边界检测结果的评估。实验对比结果如表1所示。 图10 绿化带遮挡的道路边界数据及检测结果 图11 全路段数据及道路边界检测结果 表1 本文算法和VRMesh中道路边界检测 初始道路数据及三种算法检测结果,如图12所示,图12(a)中道路的左边界存在绿化带的遮挡,而右边界不存在绿化带的遮挡,Fang等人算法对于较好的道路边界模型,即需要平整的上下道路边界平面才能获取较好的检测结果,左道路边界上的绿化带杂点导致道路边界的高程发生无规则变化,同时杂草的强度值也和路面存在明显差异,所以该算法在右边界有较好的检测结果,但是左边界检测结果就存在大量的错点,如图12(b)所示。VRMesh中道路边界检测算法通过检测道路边缘的凸起和路面的交界位置来确定道路边界,该方法需要人为干预选择两个边界点,然后跟踪延伸形成道路边界,该算法受绿化带遮挡影响较小,但是部分检测结果和实际道路边界存在较大的偏移,如图12(c)所示,并且遇到路口位置会造成道路边界检测提前中断,需要人工多次选择,才能获得较好的道路边界检测结果。如图12(d)所示,在道路边界存在绿化带遮挡时,本文算法在检测道路边界过程中,减小了绿化带杂点的影响,最终在道路横切面轮廓中准确地检测到道路边界点,并且本文算法在道路边界无遮挡时也获得较好的检测结果。同时如表1所示,对比3个算法检测结果的完整率和正确率,通过对比发现本文算法在道路边界检测的准确率和完整率上表现较好。 图12 初始道路数据及三种算法道路边界检测结果 本文针对道路边界易受到绿化带等障碍物遮挡的情况,设计出一种基于车载LiDAR的道路边界检测算法。通过实际道路场景的实验结果,验证了本文算法在道路边界无绿化带遮挡和被遮挡的情况下检测的准确性和有效性,同时与以往的算法相比,本文算法提高了道路边界检测的准确率和完整率,能够满足实际工程需要,但是该算法检测结果还存在少量的误检边界点。1.4 道路边界点线性拟合
2 实验分析
2.1 实验平台
2.2 实验数据和处理平台
2.3 实验结果和分析
3 结 论