一种基于线结构光的汽车侧位停车的环境感知方法∗
2019-07-31任明武
沈 洁 任明武
(南京理工大学计算机科学与工程学院 南京 210094)
1 引言
车位检测主要是过各类传感器(如超声波传感器、激光传感器、摄像头等)获取车辆周围的环境信息,进行分析后搜索出一块不存在障碍物的尺寸足够大的矩形空间,作为停车位置。而线结构光三维测量技术以非接触性、精度高、实时性强等特点广泛用于工业生产之中[1~2]。因此本文提出一种基于线结构光的汽车侧位停车的环境感知方法。在线结构光测量系统中,当光束投射到物体表面之后就在物体的表面形成了光条,该光条会受到物体表面形貌的调制而变形,用摄像机获取光条的二维图像,利用三角测量原理求解出光条的三维信息[3]。
本文的实验平台是南京理工大学无人驾驶车平台,如图1 所示,摄像机和线结构光投射器固定在车辆的侧上方,保持位置不变。实验时打开线结构光投射器,线结构光投射器在行驶车辆侧边投射出一个光平面,投射出的光平面与周围物体表面物体相交。当线结构光平面斜入射至车辆表面时,则光平面与车辆相交形成的亮线会在车辆的顶部处发生“断裂”,形成断点,断点位置即代表了车辆的顶部。用摄像机拍摄该光条的图像并检测光条中像素点的位置变化,然后按照线结构光测量系统的标定模型进行测量、计算和判断。
图1 线结构光投射器投射光线在泊车位上和车辆上示意图
2 线结构光视觉测量系统的标定
线结构光测量系统的标定是实现侧位停车环境感知的前提,系统的标定包括摄像机参数的标定和线结构光平面参数的标定(线结构光平面相对于摄像机的位置)[4]。通过标定,最终确定三维空间坐标系中的目标点与它在图像平面上像素点之间的对应关系。
2.1 线结构光测量系统数学模型
线结构光视觉测量模型是以摄像机透视投影理论为基础,并以摄像机内部参数、视觉测量系统结构参数为基础的测量模型[5]。由线激光发射器投射出的光平面与被测物体表面相交形成带畸变的特征光条。特征光条上任意一个特征点在空间的三维表达可以借助一条射线和光平面组合来表示[6]。根据摄像机透视投影模型,特征点的像素坐标唯一对应一条通过摄像机光学中心的空间射线,即可以得到射线在世界摄像机坐标下的方程。如果能够获得光平面在摄像机坐标系下的方程,可由射线方程与光平面方程唯一确定光条上特征点在摄像机坐标系下的三维世界坐标。数学模型如图2所示。
其中(Ow-XwYwZw) 为世界坐标系;(Oc-XcYcZc)为摄像机坐标系;(o-uv)为像平面像素坐标系,(O-XuYu)为像平面物理坐标系。坐标系之间满足平行关系OcXc// OXu//ou 、OcYc// OYu//ov,Zc轴垂直于图像平面,π为结构光平面。
图2 线结构光视觉测量模型
设点P 为光平面上一点,对应像点Pʹ、P″分别是像平面和归一化平面上的成像点。点P 相对应的摄像机坐标为(Xc,Yc,Zc),像点Pʹ、P″的坐标为(u,v)、(Xu,Yu)。根据摄像机的透视投影变换关系,则有
式中 fx、fy,即是以像素为单位的焦距长度,Zc为摄像机坐标系下的Z 轴坐标,(u0,v0)是基准点(通常在图像的中心),A矩阵就是摄像机内参数矩阵。
点P 同时也为光平面上的一点,其三维坐标还应满足激光平面数学方程约束:
式(3)为光平面在摄像机坐标中的方程,其中A,B,C,D为光平面方程参数。在摄像机坐标系中,由式(1)确定射线OcP 方程,通过射线OcP 和光平面的交点便可以唯一确定点P 的在摄像机坐标系下的三维坐标。
因此,每次采集获得的光条图像,在提取中心坐标(u,v)以后,便可以根据摄像机内部参数和光平面方程求解出光条上的点在摄像机坐标系下的空间三维坐标,通过摄像机坐标系和世界坐标系的转换关系,便又可获得其对应世界坐标。世界坐标(Xw,Yw,Zw)和对应的摄像机坐标(Xc,Yc,Zc)的转换关系满足式(4)。
最后,综合式(1)、式(3)、式(4)唯一确定点P的三维世界坐标。
2.2 线结构光测量系统集成标定
在2.1 小节的论述中,摄像机标定和光平面方程的标定均借助规格已知的二维平面靶标。基于二维平面靶标的摄像机标定可得到摄像机的内部参数和外部参数[7~8];基于二维平面靶标的线结构光平面标定最终目的是为了得到光平面的方程,其最重要点在于多个非共线特征点的获取,并且特征点仍需要依靠特定的摄像机外部参数转换到摄像机坐标系下,光平面标定方法如图3 所示。因此,在进行光平面标定实验中,还需再一次进行摄像机标定实验以获得特定的摄像机外部参数。在具体标定实验过程中,本文采用了一种集成标定方法,即同时采集平面靶标在同一位姿下的带光条的棋盘格靶标图像和不带光条的棋盘格靶标图像,这样便可利用摄像机标定中的内外参数,以将光平面上标定特征点转换到摄像机坐标系下。该方法操作简单,且满足精度要求,提高了系统测量的效率,具体步骤如下:
1)在传感器测量范围内,自由放置二维平面棋盘格靶标,用摄像机摄取该位置的靶标图像;
2)保持棋盘格靶标不动,打开激光投射器光源,用摄像机摄取该位置带光条纹的图像;
3)关闭线结构光投射器光源,在测量空间范围内移动棋盘格靶标至另一个位置,用摄像机摄取该位置的靶标图像;
4)重复2)~3)步骤,直至采集六幅带光条纹的棋盘格靶标图像;
5)在关闭线结构光投射器光源情况下,继续在测量空间内移动棋盘格靶标至两个不同位置,并用摄像机采集两幅位于不同位姿下的图像;
6)提取八幅不带激光条纹靶标图像所有特征点的亚像素图像坐标,基于张正友的标定算法,估计并优化求取摄像机内部参数、畸变系数以及在八个位置下的摄像机外部参数。
7)提取六幅带光条纹靶标图像中特征光条的中心点像素坐标和棋盘格的角点坐标,然后根据棋盘格每一行角点坐标拟合每行棋盘格角点所在的直线I1。根据提取的光条中心坐标,用最小二乘法拟合光条中心直线I2,利用步骤6)中前六个位置下的摄像机外部参数,计算出光条直线和每一行棋盘格角点所在直线的交点在摄像机坐标系下的三维坐标P(xi,yi,zi),同理,计算出其它位姿下的交点在摄像机坐标系下的三维坐标。
8)求解摄像机坐标下光平面方程。
2.3 集成标定实验结果
采用德国AVT 生产的GT2450 型号的黑白CCD 相机,分辨率为2048*2448,镜头焦距为8mm,并采用200mW 高亮度15m 以一字线激光器搭建该系统进行实验。设计的二维标定棋盘格靶标上有5*7 个黑白相间棋盘格,其规格大小为10mm,标定特征点为棋盘格的四个角点。平面棋盘格靶标用打印机打印出来,并粘贴于平整的硬质纸板上,如图3所示。
图3 二维棋盘格
1)摄像机标定结果
摄像机内部参数:
畸变系数:
2)光平面标定结果
根据集成标定方法的实验步骤7)中所述,将光条和棋盘格的交点作为光平面标定的特征点,如图4所示。
图4 光平面标定特征点
根据提取的多组交点坐标,借助最小二乘法对光平面进行拟合,拟合所得平面的效果如图5 所示,其光平面方程为
3)实验结果精度评价
采用空间距离对光平面标定精度进行评价。利用提取的光条特征点来验证光平面标定精度,从每幅图像选取2 个光条中心点作为特征点,6 幅图像共12 个特征点。将特征点的像素坐标转换到每个特征点在靶标坐标系下的局部世界坐标,然后将特征点的世界坐标转到每个特征点的在摄像机坐标系下的坐标。通过比较两个特征点在特定靶标上的实际距离和在摄像机坐标系下的距离来验证标定结果的精度。计算数据如表1 所示,数据的单位都是mm。
图5 拟合的光平面
表1 空间距离评价光平面标定精度实验数据
由表1 可以看出,采用集成标定方法对光平面方程标定可获得较高的标定精度。光平面上空间两点距离的RMS误差为0.0028mm。这样的精度可满足对物体表面的三维视觉测量要求。
3 汽车侧位停车环境检测系统
3.1 系统搭建
为了实现泊车位的精确检测,设计了主要由线激光投射器和摄像机构成的主动视觉三维测量系统对汽车侧位停车环境进行检测。如图1 所示,工作时,线激光器投射的光平面与车辆表面和目标车位相交形成了反映被测物体表面的形状的光条纹。
汽车侧位停车环境感知系统的系统结构主要由三个部分组成:无人驾驶车系统、线结构光视觉传感器系统、图像处理系统。图6 为本实验室自行改装的无人驾驶汽车的全局图。该车配备的传感器包括64 线激光雷达、相机、惯导及GPS 系统等。通过这些传感器之间的相互配合,完成对无人车行驶环境的建模。线结构光视觉传感器是实现汽车侧位停车环境感知的核心部分,用于采集泊车环境的线结构光条纹图像,其主要部件有摄像机、线激光投射器、滤光片,如图7所示。
图6 无人驾驶车辆
图7 线结构光传感器系统
3.2 光条图像处理
线结构光条纹图像处理可为两步:光条图像预处理、光条中心提取。下面将讨论车身的线结构光图像处理方法。图8 为摄像机采集到的车身光条原始图像。
图8 摄像机采集的原始图像
1)图像预处理
从图8 中可以看出源图像中存在复杂的背景信息。在实验中,线激光投射器和摄像机位置固定后,光条在图像中的位置和大小就确定了。因此,为了减少运算量和环境光的影响,本文先从整幅图像中获取光条的ROI,然后再对ROI 进行下一步的图像处理,这大大提高了光条图像的处理速率和精确度。在实验中ROI 设置为 xleft=1900 ,ytop=500,xright=2050,ybottom=2050,如图9所示。
为了去除噪声点,本文采用的中值滤波对ROI进行去燥,中值滤波算子的大小3×3 图10 为中值滤波处理后的图像。
图9 光条ROI
图10 中值滤波
2)光条中心坐标提取
在研究了现有的线结构光条纹中心提取算法的基础上[9],本文提出了一种新的亚像素精度的光条中心提取算法,即将形态学细化方法和灰度重心法相结合[10~11]。算法首先对光条 ROI 进行分段二值化处理;之后通过形态学细化方法获取光条中心初始值坐标;最后采用灰度重心法获得亚像素精度的光条中心。整套算法的处理流程如图11所示。
图11 光条中心提取算法
下面将详细介绍图11中的图像处理算法。
1)分段二值化
结合本系统的线结构光扫描过程中捕获的图像特征可知,在泊车场景中,车窗、车体和背景的亮度分布一般有着明显的差异,且光条纹在图像中具有高亮度、形状细长等特征[12]。因此,本文采用基于直方图的分段二值化算法,即是在光条ROI中以垂直方向步长把图像划分为若干子区域,然后在分段提取的基础上对每个子区域分别根据其图像直方图特征进行二值化。图12 为光条ROI 分别经过OSTU 算法、分段OSTU 算法、分段直方图阈值法的结果图。
图12 二值化结果
由图12 中的图(a)不难看出,由于受到环境光的影响,很难采用一般的阈值法将线结构光中的光条分割出来。对比图(b)和图(c)可以看出,利用光条的直方图特征可以将光条有效地分割出来,并且基于直方图的分段二值化算法处理速度也很快。
2)小区域去除
通常因为室外环境光的影响,拍摄到的图像一般都会受到噪声的干扰,仅仅通过分段二值化很难将图像杂点全部去除。这时还需要采用小区域去除算法来消除图像中的这些杂点。如图12(c)中,可以看出在图像的上方存在一些杂点。
小区域去除算法基于二值化图像[13],本文采用链码跟踪方法来去除小的噪声点。首先使用链码跟踪算法获取整幅图像的候选目标外轮廓的链码,然后通过面积、外界矩形以及主方向去除掉非光条的噪声区域[14]。图12(c)中光条采用小区域算法后如图13所示。
图13 小区域去除算法
对比图13 和图12(c)可以看出,图像中的杂点已经被去除。
3)细化
图13 中已经提取出线结构光条纹二值图像,但是光条具有一定宽度,因此需要对其进行细化处理,以获取光条中心初始值。图14 为采用Hilditch细化、Zhang细化两种细化算法后的光条图像。
图14 细化的光条图像
比较图14 中的图(a)和图(b),不难发现,相比于Zhang 细化算法,Hilditch 细化算法引起了较多的突刺,在细化的过程中产生了较多的噪声。同时,Zhang细化算法是一种并行快速细化算法,其处理速度要比Hilditch细化算法要快,因此,本文采用Zhang细化算法[15]。
4)获取光条中心坐标初始值
经过Zhang 细化算法后,光条已经变成单像素宽的图像。对图14(b)进行逐行扫描,只要像素点的灰度值为255,即可粗略地认为是光条中心点,记录下该点坐标(i,j)。至此,已得到光条中心坐标的初始值。
5)光条中心亚像素坐标提取
在已知光条中心坐标初始值的基础上,利用改进的灰度重心法计算光条中心亚像素坐标,即将阈值法和灰度重心法相结合来提取光条中心的亚像素坐标[16~17],其算法描述如下:
Step1:选取光条初始中心值附近左右K个像素点,共2K+1个像素点,k为经验值,其一般根据具体实验中光条的宽度而定,在本文中,k=3;
Step2:通过阈值来判断边缘上点是否是光条上的数据点,设阈值为t,若该灰度值大于t,则认为该点是光条上的数据点,否则放弃该点,进行下一行处理。
Step3:根据灰度重心法,计算这2K+1 个像素的灰度重心值作为该行的光条中心,计算公式如式(6)和式(7)。
Step4:继续搜寻下一行(列),重复上述步骤,直至所有行(列)处理完。
在Step3 中灰度重心法的计算方法为:设在图像中某一行的光条坐标为(xi,yi),它们相对的灰度值为gray(xi,yi)(i=1…,N),N 为每列中有效的光条像素点的个数,那么其重心(xc,yc)的计算公式如下:
该算法充分利用了光条图像每行光强(灰度)值最大值附近所有点的光强信息,避免了因光条强度分布不均而带来的误差,同时适当的阈值也减弱了噪声的干扰。对于算法中使用的阈值可以采用自适用阈值法(OSTU)来获取[18]。
3.3 光条中心亚像素坐标提取实验
根据上文介绍的光条中心亚像素坐标提取算法,本节求解图8 中光条中心亚像素精度的坐标,提取出的部分光条中心坐标如图15所示。
图15 提取出的部分光条中心坐标
3.4 系统测量精度验证实验
本文选择标准的矩形纸盒为被测物体来进行系统精度测量实验。
1)图像采集
在线结构光视觉传感器的视觉范围内摆放好纸盒,用摄像机采集带有光条的纸盒图像,采集到的图像如图16所示。
图16 线结构光投射在标准矩形纸盒上
从图16 中可以看出,线结构光斜射入至纸盒表面时,光条在纸盒的底部和顶部发生了弯折,测量这两个弯折处的光条中心点之间的距离,即是纸盒的高度。通过比较实际的纸盒高度和所测得的高度的误差大小就可以对线结构光视觉测量系统测量精度做出一个评价。
2)光条图像处理
通过畸变矫正、获取ROI、中值滤波、光条中心亚像素坐标提取算法等一系列处理,提取出的光条中心如图17 所示。表2 是光条图像中两个弯折出点的像素坐标及其在摄像机坐标系和世界坐标系下的三维坐标。
图17 纸盒光条中心提取结果
表2 线结构光系统测量精度实验数据
由表2 可计算出,两个弯折点之间的距离在摄像机坐标系下为292.911mm,在世界坐标系下为292.909mm。通过卷尺测量出的纸盒的实际高度为290mm,误差为2.91mm。
4 三维重构实验
在环境光相对弱的傍晚,选择环境噪声较少的停车场位置进行图像采集。发动实验车,打开线结构光传感器电源,保持实验车以相对缓慢的速度匀速地在停车场行驶。线激光随着实验车匀速地对周围环境进行扫描,摄像机连续采集光条图像。如图18为采集过程中的部分图像序列。
图18 泊车环境中光条图像序列
通过光条中条纹中心提取算法对每一幅光条纹图像进行中心提取,获取对应点的三维坐标数据,并将数据保存为.asc 文件类型。将所有的asc文件导入到Geomagic studio 软件中进行处理,获取被测物体的三维点云[19~20]。 为了还原物体的侧面轮廓面貌,需要将所有的线结构光图像中的所有光条中心点的三维坐标按车子的行驶方向和间距拼接。三维重建后的结果如图19所示。
图19 图像三维重构结果
通过图19 可以看出,位于图片左下角的几根类似平行的线,表示该处没有障碍物存在。对于剩余部分光条发生弯折,表示此处有障碍物存在。目标物体的表面是由点云的重构得到的,通过汽车侧位停车环境检测系统得到车辆侧面的三维数据后用Geomagic studio 逆向重构软件得到了被测车辆的侧面轮廓图,验证了本文系统的正确性。
5 结语
本文通过对现有的车位检测技术的研究分析,结合线结构光的主动式三维视觉测量技术特点,初步开展了基于线结构光的汽车侧位停车环境检测,搭建了简单的汽车侧位停车环境检测系统,编写了基于线结构光视觉测量系统标定、车辆表面线激光中心线提取和光条三维坐标计算程序,进行了系统精度测量验证实验和泊车环境的三维重构实验,证实了采用线结构光进行汽车侧位停车环境检测的可行性。