蒯向阳 任明武
(南京理工大学计算机科学与工程学院 南京 210094)
特大型车辆编队在通过未知路况时通常是危险的,尤其是矿山车等特大型工程用车辆而言,其驾驶舱的视野小,盲区大(如图1)驾驶员很难通过肉眼对前方路况进行准确充分的判断,对于行驶途中的编队而言,驶入不可通行路段后整个车队的调头也是相当困难和耗时的,严重影响行进速度,贻误战机。智能先导车辆装载激光雷达、可见光相机、红外相机等感知设备,先于车队前方驾驶,对前方道路、隧道和急造土路进行可通过性探测和判断,保障车队安全和速度。在高空障碍中(电力线、限高杆、指示牌、树枝等),电力线是国家重要基础设施,损坏后往往会区域内电力系统造成影响,由于特种车驾驶舱视野窄,且电力线悬于空中没有对照物,驾驶人员很难肉眼辨别其高度是否可以通行。为了避免行军过程中对其造成损坏,需要实时检测电力线。基于此应用需求,本文着手实时电力线检测算法研究。
图1 特大型车辆
由于可见光相机在夜晚鲁棒性较差,多用激光雷达对电线进行检测。目前基于雷达的电力线检测研究领域,应用场景多是输电线走廊巡检维护[1~6],且往往是基于机载LiDAR设备,该设备通过直升机搭载,从高空扫描,其点云数据有高精度、高密度、大视场等特点(如图2),应用是多是先采集数据再后期处理,检测方法不用考虑实时性要求。基于机载LiDAR点云数据检测电力线方法可以大致包括以下几类[7]:1)基于二维图像的Hough变换和聚类的处理方法,该类方法先将三维点云数据转换为二维,如文献[8]采用自上而下的策略,先通过滤波将数据中的地面点、植被点剔除,再通过Hough变换分离各条电力线。2)基于局部模型提取电力线,文献[9]通过在多个椭圆邻域内构建电力线悬链线模型,利用椭圆邻域内的点云估计模型参数,进而识别电力线;文献[10]先确定电力线的初始方向,然后用悬链线方程在立方体内分段拟合电力线参数,然后通过在立方体中多次迭代计算最终确定模型参数;文献[11]首先采用人工交互的方式初步对点云数据进行分类,确定电力线点云数据以及非电力线数据然后再利用移动激光点拟合法对电力线数据进行拟合提取。3)基于高程、密度、强度、回波次数等信息差异的点云统计分析,文章[12]采用基于点云体素分级的方式,采用由粗到细的处理策略。4)基于激光点云几何、分布特征的监督分类,文献[13]通过提取电力线的多个特征,运用先验知识从XOZ铅垂面和XOY水平面内提取电力线点;文献[14]据语义关系提取电力线和电力塔。
图2 机载LiDAR点云数据
本课题是车载雷达应用场景,考虑系统成本和使用场景,车载激光雷达往往选择机械光雷达,机械式激光雷达点云比机载LiDAR点云数据要稀疏很多,且基于机载LiDAR的电力线检测方法往往更追求检测后电力线模型的精度,往往实时性较差,不能完全采用现有的电力线检测方法。
基于车载雷达点云特点,本文提出了一种基于法线方向的滤波,将滤波后的点云进行聚类,在每个类中进行直线拟合,然后基于雷达扫描线特性提出了一种电力线后验方法提高检测准确率。
为了识别电力线,机械式激光雷达应该垂直安装,即雷达扫描平面法线与地面平行。若水平安装雷达,将会引入过多线性特征,无法辨别电力线。垂直安装会保证更多的扫描线打在电力线上。
2.1.1 感兴趣区域ROI
首先根据电力线位于高空的特点,选定感兴趣区域(ROI),对于低于一定高程阈值的点进行剔除,对于以雷达为中心,半径2m的球体空间内(该区域内点云多是安装雷达的载体)点云剔除。
2.1.2 法线方向滤波
电力线点云多呈现规律性,其法线方向趋于一致,且有特定方向范围。基于此特性,可对整体点云求法向量,跟据法线方向去除部分非电力线点云。
求解表面一点法线的问题近似于估计表面的一个相切面法线的问题,因此可以转换成一个最小二乘法平面拟合估计问题。设代拟合的平面为
最小二乘拟合该平面方程,即使参选点与平面的距离平方和最小,转换为求极值:
其中n为参与拟合点数,一般选择目标点一定半径领域内所有点;为参选点到平面的距离平方。
分别对d、a、b、c求偏导,整理后得到:
即:
其中A为领域内n个点的协方差矩阵,x为特征向量。由于要使得最小,即使λ最小,则最小特征值对应的特征向量即为法向量。
计算法向量与z轴夹角,将夹角大于一定阈值的点云过滤。法线方向滤波后效果如图3。
图3 法线方向滤波(右侧为滤波后结果,白色框内为电力线)
此滤波方法有效保留了电力线数据,去除了大部分非电力线点云,提高了后续处理的效率。
分析图3中点云数据,可以发现电力线在空间上明显的聚成一类,且与其他点云间隔一定距离,所以可以采用欧式聚类对点云数据进行聚类。欧式聚类,顾名思义就是通过欧式距离作为度量准则对数据进行聚类,通过计算种子点与近邻点的距离,判断是否小于设定阈值来决定是否归为一类。为了进行有效的近邻点搜索,需要用到数据结构KD-tree来重新组织点云数据。
KD-tree(k-dimensional tree),用于对k维空间的实例进行存储以便快速查询的树形结构数据,能够以O(n1-1k+m)的时间复杂度进行查询,其中m表示每次要搜索的近邻点个数。
在构建好KD-tree后,进行欧式聚类,点云将根据点之间的欧式距离聚成多类。
欧式聚类后验。电力线点云聚类呈悬浮空中的状态,与其他高障碍物不同,不会因欧式聚类连接到近地端,根据这一特点,可以判断每个聚类中的最低点,如果低于某阈值,则剔除,如图4。
剔除进一步减少了点云量,提高后续处理效率。
对于每个聚类的点集,进行直线拟合。本文采用RANSAC算法进行直线拟合,RANSAC从样本中随机选取一个样本子集,用最小方差估计法对子集计算直线模型参数,然后计算所有样本点与该模型的偏差,若偏差小于预设定阈值,则将该点划分为内样本点,否则划分为外样本点,以上过程为一次迭代,重复迭代过程,每次都记录模型参数对应的内样本点个数,内样本点最多的模型参数则为最优直线参数。迭代结束条件为达到预设的期望误差率或预设的迭代次数。RANSAC能在样本集中排除外样本点的干扰,达到检测直线的作用。
在每个聚类样本集中重复进行上述RANSAC拟合直线,每得到一条直线则记录参数并将参与拟合的样本点从样本集中剔除,进行下一次RANSAC直线拟合,直到样本集中的点数小于某阈值(与雷达线数相关),无法再进行电力线的拟合。对每个聚类中的直线检测,流程如图5所示。
图5 每个聚类中的直线检测流程
电力线检测结果如图6,可以看到图中的电力线被较好的检测出来。
图6 电力线检测结果(右侧框内白色粗点为检测到的电力线)
由于RANSAC拟合的特性,可能会出现很多误检,本文根据垂直架设雷达扫描线的特性和电力线点云特征提出一种通过内样本点数目、参与拟合点的扫描线号(laserID)以及聚类中直线间夹角累加和作为判据的电力线后验方法。
如图7(a),雷达扫描线按序打在同一根电线上,参与拟合直线的点数不应该多过雷达扫描线数,且参与拟合的点应该属于不同的扫描线。如图7(b),电力线走廊常为多条平行电线组成,被分为同一个聚类中的直线方向应该大体一致。根据这个特性,将不属于电力线的直线去除。在之前的步骤中已经得到多个点云聚类,每个聚类中都有一个拟合出的直线集设为L={li}i=1,2…n},n为直线集中直线数量,设参与拟合直线li的点集为Pi={pij}j=1,2…mi},mi为点集Pi中点的数量,则判断每个直线集是否是电力线的后验算法如下:
图7 垂直架设雷达点云
其中,min threshold、max threshold、angle threshold分别为参与拟合的最少点数阈值、最多点数阈值、直线集中两两直线间夹角累加和阈值。angle(li,lk)为计算直线li和lk间夹角函数。对每个聚类执行上述算法。
本文研究试用了多款雷达,最终采用三种激光雷达(北科天绘Rfans16、禾赛Pandar40M、禾赛PandarQT,扫描线数分别是16线、40线、64线),进行数据采集,本文通过学校无人车装载三款激光雷达对学校、市区的高架电力线缆、低矮电线等多种场景进行了数据采集。最终采集了北科天绘16线共355帧、禾赛Pandar40M共425帧、禾赛PandarQT共151帧,总共931帧点云图像。
CPU:Inter(R)Core(TM)i7-9750H;RAM:16GB;系统:Windows10;平台:Visual Studio 2019点云工具库:PCL[15]。
表1 本文方法在各型号雷达数据上的表现
图8 各数据集上检测结果(框内粗点为电力线点)
本方法在市面常见机械式激光雷达各种型号(16线、40线、64线)上表现良好,平均准确度、精确度、召回率都在90%左右。在距离电线较远时,由于能够打在电力线上的雷达点很稀疏,所以会影响召回率,但是当先导车靠近电力线时,准确度、精确度、召回率都非常高,接近98%,是符合应用需求的。本方法能满足实时行需求,尤其是在16线雷达上耗时相当少,区别于深度神经网络的方法,本方法不需要GPU,大大降低了车载感知系统的成本,同时保障了装备的鲁棒性。从效果和实时行来说,本文方法能够实际应用在大型车队可通行性检测项目中。
针对大型车辆编队的通过性检测项目中电力线检测问题,本文提出了一种实时的基于车载激光雷达的电力线检测方法。垂直装载雷达,根据电力线点云的法线方向特征进行滤波,根据电力线点云悬浮特征进行欧式聚类,在每个聚类中进行RANSAC直线拟合,并提出一种有效的电力线后验算法。本文采集了三种常见扫描线数的雷达点云数据集进行了实验,验证了本文方法的有效性和实时性。后续工作将对更加复杂的电力线场景进行实验并优化。