刘義伟,孟令镯,刘松涛,张高飞
(1.北京信息科技大学 仪器科学与光电工程学院,北京 100192;2.清华大学 精密仪器系,北京 100084)
激光雷达(light detection and ranging,LiDAR)作为无人驾驶系统中用于环境感知、实现安全驾驶的核心器件[1],其性能指标测试是确保车辆在实际交通环境下安全行驶的关键所在[2],需要一套标准严格且便捷的测试方法及系统。而能够保证汽车探测采集最大范围道路信息,为汽车自动驾驶提供数据支撑的激光雷达视场范围测试尤为重要。
目前,针对激光雷达性能测试方法及测试系统的相关研究较少。对于激光雷达的测试研究主要是在仿真建模[3]、室内模拟[4]以及实际测试等条件下开展[5]。如大疆LIVOX激光雷达视场范围测量方法主要是通过重复扫描然后测量扫描图案,从而得到激光雷达水平和垂直视场范围。对于微机电系统(micro-electro-mechanical system,MEMS)扫描成像激光雷达视场范围的研究,文献[6]通过内置激光雷达微镜角度传感器,将采集到的微镜自身角度值与实际角度测量值标定为一次函数关系,从而根据角度传感器的输出值换算得到不同扫描模式下的扫描范围;而文献[7]直接对激光雷达扫描图案的几何尺寸进行人工测量,通过几何位置转换关系得到其扫描范围。对于目标物尺寸测量的方法目前有很多,现今使用图像处理技术可以对目标尺寸进行较高精度测量,如利用激光器和相机扫描目标物,得到目标的三维信息[8]。
本文提出了一种基于数字图像处理的激光雷达扫描图案尺寸测量算法,通过架设工业相机直接对激光雷达扫描图案进行采集,后续使用数字图像处理技术将图像像素作为测量刻度,电脑上位机作为计算平台,实现激光雷达视场范围高精度无接触测量。此测量方法与文献[6-7]相比,测试流程更加便捷,测试结果更加精确,能够针对任意形状的激光雷达扫描图案测量任意方向视场,同时可以采用工业流水线模式对多台激光雷达设备进行测试,在提高测试效率的基础上进一步节省了人力。
使用相机对扫描图案进行测量,可以在相机自身视场中测量出目标的角度,但是目标物的实际尺寸并不能直接得到。相机测量原理如图1所示。
目标物的真实尺寸L为[9]
(1)
式中:D为目标像平面尺寸;f为相机焦距;H为拍摄距离。其中D=目标所占像素数×单位像素对应的实际尺寸。
通过在目标靶面粘贴标志点,在相机视场成像内通过标志点的像素距离就可以计算得到单位像素对应的实际尺寸。视场范围测量原理如图2所示,其中lline为拍摄图像中目标所占像素距离长度,d为拍摄距离,S为两标志点实际距离。
图2 视场范围测量原理Fig.2 Principle of field of view measurement
使用相机拍摄激光雷达扫描图及两标志点图像,通过图像处理算法计算出两标志点在拍摄图像中的像素距离n,则单位像素对应的实际距离dp为
dp=S/n
(2)
则激光雷达扫描范围θ为
(3)
由测量原理可知,要实现激光雷达视场范围的高精度测量,主要取决于扫描图案几何尺寸的测量精度。基于此测量方法,本文设计了高精度扫描图案测量算法,通过式(3)即可计算得到高精度视场范围结果。
本测量系统中使用的激光雷达为实验室自研MEMS扫描成像激光雷达,其扫描图案近似于平行四边形,如图3所示。
图3 测试用激光雷达扫描图案Fig.3 LiDAR scanning pattern for testing
测量参数为该扫描图案轮廓的几何尺寸。图4为激光雷达水平垂直视场和顶点视场测量参数。如图4(a)所示,定义A′C和D′B的像素距离长度为激光雷达水平和垂直视场投射线长度,本文测量方法所设计的图像处理算法就是精确计算A′C和D′B这两条线的实际长度,然后通过式(3)得到激光雷达的视场范围。从图4(b)可知,同理可计算激光雷达顶点方向视场(AC和BD),实现任意多边形任意方向视场计算。下文以计算水平和垂直视场为例进行阐述。
图4 扫描图案几何参数定义Fig.4 Definition of geometrical parameters of the scanning pattern
本文所设计的数字图像处理算法流程如图5所示。首先对采集到的图像进行预处理,通常使用高斯滤波来减轻其他无效微小光斑对测量结果的影响。然后进行图像分割,图像分割的目的主要是提取出标志点和目标图案。在图像分割完成后,由于扫描图案轮廓并非笔直线段,因此需要进行轮廓直线拟合,然后对拟合完的图像进行顶点识别,识别顶点后利用标志点进行单位像素距离标定,最后得到目标尺寸lline。
图5 算法流程Fig.5 Algorithm flow
图像预处理通常使用图像滤波去噪和图像开运算。首先将图像灰度化后进行高斯滤波预处理,图像预处理之后再进行图像分割[10]。为保证测量算法的精度,实验过程都是在光线较暗的室内环境下进行,因此光屏上的激光雷达扫描图案与背景存在较为明显的差异,针对这种情况使用基于阈值分割的方法具有很好的处理效果。
采用固定阈值分割方法可以通过不断尝试设置不同的阈值后观察阈值效果,但是对于不同环境下采集到的图像可能需要不同的阈值设置,增加了测量复杂度。因此本文使用最大类间方差阈值分割算法,又称大津法 (OTSU),这是一种自适应阈值确定方法,按照不同阈值将图像分为前景和背景两部分,若当前阈值下前景和背景的类间方差最大,则该阈值为最佳分割阈值[11]。
假设图像的分割阈值为T,图像平均灰度等级为μ,图像大小为M×N,则有:
w0=N0/M×N
(4)
w1=N1/M×N
(5)
N0+N1=M×N
(6)
w0+w1=1
(7)
μ=w0μ0+w1μ1
(8)
g=w0(μ0-μ)2+w1(μ1-μ)2
(9)
将式(8)代入式(9)中可得最大类间方差gmax,从而得到最佳阈值T[12]:
gmax=w0w1(μ0-μ1)2
(10)
式中:w0为前景中像素点占整个图像像素的比例;μ0为其平均灰度等级;w1为背景中像素点占整个图像像素的比例;μ1为其平均灰度等级;g为类间方差;N0为灰度值小于分割阈值T的像素点;N1为灰度值大于分割阈值T的像素点。
对预处理后的激光雷达扫描图案使用OTSU阈值分割效果如图6所示,分割后的图像能较明显看到扫描图案几何形状,但是在图像右上角还存在干扰区域(圈起来的地方)。为准确提取到扫描图案的几何形状,需要进一步处理。
图6 OTSU阈值分割Fig.6 OTSU threshold segmentation
从图6中分割的结果来看,噪声区域的面积都小于扫描图案面积,并且整幅图像中除了背景以外,只有扫描图案的面积是最大的,因此可以选择使用最大连通域面积[13]的方式,去除噪声并提取出扫描图案轮廓。
在图6基础上使用图像轮廓提取后的效果如图7所示,从图中可以观察到右上角存在噪声区域轮廓,符合OTSU阈值分割后的特征。
图7 边缘轮廓提取Fig.7 Edge contour extraction
在图7的基础上,以所有检测到的轮廓面积为参考,面积最大的轮廓即为扫描图案几何形状,将此轮廓提取出来并在原图上进行标记,如图8所示。图8(a)是将最大轮廓提取出来的效果图,图8(b)是提取后的轮廓用绿色直线标记出来效果图。
图8 边缘轮廓检测提取Fig.8 Edge contour detection extraction
从图8可知,提取的扫描图案轮廓边缘为高低起伏的不规则曲线。如果直接以组成轮廓曲线点坐标在X、Y方向上的分布特性来确定扫描图案的四个顶点坐标的方法不具有普适性。针对顶点像素坐标分布特性不明显的扫描图案,该方法存在误判情况,会对测量结果造成一定的影响。
因此为了精确地测量出扫描图案几何尺寸,需要对图8中的轮廓边缘进行直线拟合。轮廓直线拟合分两步进行:第一,对组成轮廓的所有像素点使用凸包算法[14]进行处理,目的是找到最外围的轮廓点,过滤轮廓包围的内部点或重复点,方便进行下一步处理;第二,使用多边形逼近算法进行直线拟合。
本文使用经典Graham扫描法来求解组成轮廓像素点的凸包顶点[15]。
多边形逼近最常用的是Douglas-Peucker算法,如图9所示,其算法步骤如下[16]:
1)在组成曲线的点集中找到首尾端点E、F,并将其连接成线段EF,该直线为曲线的弦;
2)在曲线点集中找到距离EF最远的点T,并计算其与EF的距离dmax,如图9(a)所示;
3)设置阈值距离εd,比较dmax与阈值距离εd,若dmax>εd,则保留点T,曲线EF被划分为ET、TF两部分,如图9(b)所示。若dmax<εd,则忽略EF段所有中间点,即曲线逼近为线段EF。重复对每一段曲线进行上述操作,直至曲线组成的线段全部满足设置好的阈值距离条件(dmax<εd),如图9(c)和9(d)所示。
上述算法是针对非闭合曲线点集进行的拟合。本文处理后的扫描图案边缘像素点集是闭合曲线,因此在取初始点位E、F时可以将距离最远的两点作为初始线段。设置的距离阈值εd越小,其直线拟合效果越贴近于原曲线。在像素尺度下进行距离阈值选取,标定完单位像素距离后,测量精度可以达到微米尺度。图10是扫描图案经过轮廓提取和直线拟合后的效果,此时轮廓已经是由笔直的4段直线组成。
图10 直线拟合效果图Fig.10 Straight line fitting effect picture
顶点识别算法主要思想是:求解轮廓点集中每3个相邻点形成的夹角大小,在多边形边长上的点组成的夹角趋于180°,而位于多边形顶点的轮廓组成的夹角小于180°,使用数组记录每3个相邻点形成的夹角及其点序列号,其中夹角最小的角点即为多边形的顶点。
在图10 的基础上进行顶点识别,结果如图11所示。可知轮廓的4个顶点在像素坐标系中分别为A(704,731)、B(1 176,667)、C(1 338,1 113)、D(864,1 161)。结合4个顶点坐标,可以根据式(11)和式(12)计算得到该轮廓在水平和垂直方向的最大像素距离。
图11 顶点识别结果Fig.11 Vertex recognition result
Xmax=|Ax-Cx|
(11)
Ymax=|By-Dy|
(12)
得到扫描图像轮廓在水平和垂直方向上的最大像素距离后,要将像素转换成实际距离还需要进行单位像素距离标定。单位像素距离的标定流程如下。
1)让相机和激光雷达处于同一侧并固定,然后在光屏上粘贴两个预先设置好距离的标志点,使用相机拍摄光屏上的标志点。为减少相机视野内环境因素的影响,测量全程将相机曝光时间设置为80 000 μs,标志点圆心距为S=144 mm。
2)使用图像处理算法对采集到的标定图像进行处理,得到标志点的圆形轮廓。
3)使用质心定位算法确定标志点轮廓圆心,计算两圆心的像素距离n。
4)根据式(2)得到单位像素对应的实际距离。
为保证单位像素距离标定的精确度,需要在不改变圆形轮廓的情况下定位到圆心,并且经由上文的图像处理算法已经得到标志点的轮廓,因此采用最小二乘圆拟合法将轮廓拟合为圆之后再定位圆心。
最小二乘法圆拟合曲线为
R2=(x-xct)2+(y-yct)2
(13)
展开后为
R2=x2-2xctx+xct2+y2-2ycty+yct2
(14)
令a=-2xct,b=-2yct,c=xct2+yct2-R2,则式(14)可表示为
-ax-by-c=x2+y2
(15)
矩阵形式表示为
(16)
得到R·A=Y的矩阵形式后,可通过
A=(RT·R)-1·RT·Y
(17)
得到a,b,c的值,从而得到圆心坐标。如图12所示为标志点采集照片及圆心距离测算效果图,计算两圆心像素距离n= 309,由式(2)得单位像素距离为dp=0.466 mm。
图12 标志点图像和圆心距
Fig.12 Flag point image and circle distance
实验所使用的激光雷达为实验室自研MEMS激光雷达原型机,距离测量使用徕卡S910手持式激光测距仪,测得激光雷达距离光屏距离为1.135 m。图像采集使用大恒MER水星工业相机及其配套镜头。采集到的图像分辨率为2 048×1 536像素。激光雷达安装在固定平台,相机架设在可垂直调节高度和水平旋转角度的支撑杆上,两者安装相对位置如图13所示。单位像素距离标志点如上文所述。
图13 安装相对位置Fig.13 Mounting relative positions
激光雷达在不同工作频率下的扫描图案会有较大不同,因此本文选取三种不同的激光雷达扫描图案进行处理,处理结果如图14所示。
图14 处理结果Fig.14 Processing results
根据上述算法处理后得到三种不同扫描图案轮廓尺寸以及根据式(3)计算激光雷达的水平和垂直视场结果如表1所示。
表1 三种不同图案轮廓尺寸测量结果Table 1 Measurement results of three patterns with different contour dimensions
扫描图案轮廓的实际尺寸由游标卡尺测得。由表1可以发现,通过本文中的图像处理算法测得的轮廓尺寸与实际尺寸的最大误差为0.43 mm,而标定好的单位像素距离为0.46 mm,可知本文设计的图像处理算法误差最大在一个像素左右,其真实角度值θσ按式(18)计算:
(18)
式中:σ为像素个数误差。
在激光雷达与光屏间距为1.135 m情况下,结合式(18),最后测得的角度误差为±0.02°。如果提高相机分辨率,可进一步提高测量精度。
本文针对激光雷达扫描图案,使用基于数字图像处理算法进行扫描图案几何尺寸测量,并通过相机测量原理计算得到激光雷达实时扫描范围。使用OTSU阈值分割方法分割提取扫描图案轮廓,简化后续运算流程;利用最大连通域面积判定方法去除无效噪声轮廓;结合凸包算法和多边形逼近算法实现目标边缘直线拟合,提高测量精度;通过顶点识别算法和相机视场范围测量原理,得到激光雷达高精度视场范围。经过实验验证,本文所设计的测量方法操作便捷,极大提高了激光雷达视场范围性能实时测试效率,视场范围的最大测量误差为±0.02°,且能针对任意扫描多边形进行多方向视场测量。目前测试系统各个设备还处于独立运行状态,后续的工作方向是将测量系统整合于一体,图像处理算法移植到如单片机等便携式运算平台上,进一步精简测量系统和测量流程。