一种基于环视系统的车位检测方法
2019-02-20
(天津大学 精密仪器与光电子工程学院,光电信息技术教育部重点实验室,天津 300072)
1 引言
当前自动驾驶技术飞速发展,已成为人工智能领域的研究热点,而自动泊车系统(Automatic Parking System 简称:APS)作为智能驾驶的重要组成部分,已成为国内外各大汽车厂商和高校的研究热点方向[1]。研究表明,大城市的停车难问题严重,给人们的出行带来非常的不便。国内外对自动泊车系统都有一定的研究,同时停车位的智能识别又成为自动泊车系统中的重要研究方向,其主要通过传感器检测停车位:如基于激光雷达传感器[2],基于超声传感器[3]和基于视觉传感器[4]等。目前基于视觉的自动泊车系统的研究已经成为主流,而且摄像头具有成本低、体积小、可视化等优点。虽然目前各大汽车厂商的泊车系统都使用4个鱼眼相机,但是环视图的左右可视距离有限,文章[5]能显示的左右可视距离仅为2.5m,这给车位检测带来了很大的难度。本研究同样是基于4个鱼眼相机获取环视图,但是最终生成的环视图,左右相机可视距离为7.5m,提高了车位检测的准确率。
由于环视图的左右可视距离有限,而标准停车位的长度为5m,宽度为2.5m,在垂直泊车[6]的情况下,车位最远端的一条边距离车的距离至少为5m。如果在距离车3m~5m处存在障碍物,那么无法在上述环视图上显示出来。目前基于视觉的停车位检测方法核心技术是找出环视图中的直线,而最常用的方法是Hough变换。然而,实际泊车场景往往存在车位线损坏、有阴影、不平行的情况,如果依然使用Hough变换检测环视图中的直线,会出现漏检以及准确率差的情况。
本研究提出了一种新的基于环视系统的车位检测方法。(1)超声波传感器检测车位需要车位附近的车辆做辅助,而本研究算法是完全基于视觉的车位检测,可以在不依赖相邻车辆的情况下准确识别车位;(2)目前大部分全景环视泊车辅助系统的图像显示范围有限,这给车位检测带来了很大的难度,而本研究算法实现的环视系统,左右相机显示的距离最远能达到7.5m,提高了车位检测和车位内障碍物检测的准确率;(3)Hough变换在检测车位时的漏检率很高,本研究在环视图像上使用基于边缘信息的LSD(Line Segment Detector)[7]算法来检测车位线,具有更高的准确性和鲁棒性,本研究算法目前处于研究测试阶段。
2 环视泊车辅助系统
全景环视系统[8]由4个鱼眼相机组成,安装位置如下图1所示。
图1 相机安装位置
前视相机安装在进气格栅的车标之下;后视相机安装在牌照之上;左右相机安装在后视镜下面。
环视图像的生成主要分为以下三步:鱼眼相机标定、逆透视变换和图像拼接。生成流程如图2所示。
图2 全景图像生成流程
2.1 鱼眼相机标定
鱼眼相机标定[9]主要是为了确定世界坐标系与相机图像坐标系之间的转换关系。实验使用棋盘格对相机进行标定,首先对每个相机进行单独标定,求出每个相机的内部参数和畸变系数,之后在整个车辆的四周铺上标定板,实现4相机的联合标定,建立以车身为中心的环视图的车辆坐标系X1O1Y1,然后建立该坐标系下其他4路图像到环视图的坐标映射关系,使得4幅图像能够在同一个平面中处理与显示。在车身四周铺上标定板,通过人工测量,提前获取标定板上角点的位置信息,最终标定可以得到每个相机的图像坐标系与世界坐标系之间的转换关系,如图3所示。
2.2 逆透视变换
采用直接线性变换(DLT)[10]确定逆透视变换的投影矩阵,使用内参和外参对鱼眼图像进行畸变矫正和逆透视变换,将世界坐标系的点变换到图像坐标系生成鸟瞰图。公式如下:
(1)
式中,(X,Y,Z)为世界坐标系上一点,(u,v)为世界坐标点投影在图像坐标系上经过矫正后的坐标,A为摄像机内参矩阵,[R|t ]为摄像机外参矩阵,将世界坐标系构造在Z=0的平面上,那么(1)转换为
(2)
其中,H称为单应性矩阵,利用非线性最小二乘法可以求解出H的最大似然估计,那么矫正图像坐标系和世界坐标系之间的关系可以通过H进行描述。将世界坐标系选择为地面,那么鸟瞰图图像坐标系与世界坐标系之间存在一个比例关系λ,已知矫正图像坐标系上一点(u,v),可以求出对应的鸟瞰图图像坐标系的坐标,公式如下:
(3)
2.3 改进的环视拼接融合算法
传统的图像拼接算法比较复杂,在光线较弱的情况下找到的特征点数量有限,拼接效果不是很好,本研究采用了一种更加简单有效的算法实现环视图的无缝拼接。原理是在车周围铺上标定板,如图3所示,每个相机的视野中都对应着4幅标定板,这样就构建了4组相对位置固定的标定板群,可以分别求出每个相机的变换矩阵H1,H2,H3,H4,这些矩阵就是每个相机图像坐标系到鸟瞰图的映射关系,再将各图像带入式(3),则可以得到鸟瞰图。根据这个关系,可以生成坐标对应的查找表,只需要标定一次,之后的每次拼接只需要通过查找表填充就可以完成拼接,而不需要每次都进行特征匹配,这大大提升了拼接速度[11]。
图像拼接中最重要是图像融合区域的选择,大多数环视拼接区域都如图4所示,其中A、B、C、D是4块重叠区域:
图4 传统的环视拼接区域
由于相机分辨率有限,距离相机越远的地方,误差越大,越容易出现重叠区域拼接不上的情况,本研究提出了一种新颖的融合策略,能够在远处同样实现无缝拼接。首先,改变后的融合区域如图5所示,A、B、C、D 4个矩形区域为两相机之间的重叠区域(比如A为前视相机和左相机的重叠区域),中间的黑色区域为未融合区域。
图5 新的融合区域
对融合区域,采用加权平均融合算法[12],该算法原理如图6所示。
图6 拼接区域融合算法原理
图中黑色矩形框为两幅图像的重叠区域。假设重叠区域中,图一中的像素点为P1,图二中的像素点为P2,那么重叠区域的像素点为
(4)
其中,L表示拼接区域宽度,l表示重叠区域某一像素点距离右边界的距离。最终得到的融合区域如图7所示。图7(a)为前后相机映射到俯视图上的区域,图7(b)为左右相机映射到俯视图上的区域,图中的模糊区域为拼接融合区域。
图7 最终融合区域
使用该融合算法生成的最终环视效果图如图8所示。
图8 环视效果图
由图8可以看出,生成的全景环视图效果良好,可以将汽车四周的场景以鸟瞰图的形式再现出来,并且在距离相机较远的地方,也没有出现线段拼接不上的情况。
本研究的拼接方法与传统的基于特征点匹配的拼接方法相比,具有以下优势:对环境光线的适应能力更强、不需要大面积的重叠区域即可实现环视图的生成;不需要进行特征点匹配,所以拼接速度更快,易于嵌入式系统的实现。
3 停车位的检测与识别
为了检测出环视图中的有效车位,需要对环视图进行一系列的图像处理,包括边缘检测、直线检测、过滤干扰线、基于几何原理的车位拟合等过程。整个车位检测的算法流程如图9所示。
图9 车位检测算法流程
为了提高车位线的检测精度,首先需要对环视拼接图进行边缘检测,本研究使用Canny检测算子。在获得边缘图像的基础上,使用LSD方法进行直线检测,LSD算法主要分为三步[13]:提取直线区域、矩形拟合、线段有效性的验证。
1)提取直线区域。首先计算图像中每个像素点Level-Line的角度,形成一个Level-Line区域,然后有相同Level-Line角度的像素点就构成了line support区域,而这些区域正是线段的候选区域(图10)。
图10 图像梯度和Level-Line
2)矩形拟合。在提取出直线区域之后,对区域进行矩形拟合,求出矩形的中心点、方向角以及长和宽,用该矩形代表该线段。结果如图11所示,其中(a)为待检测的原图,(b)为使用步骤1)提取出的直线段候选区域,(c)为最终矩形拟合的结果图。
图11 矩形拟合结果
3)线段有效性的验证。该方法是基于亥姆霍兹原理,线段由矩形区域的宽度和端点决定。计算每个矩形框内的像素点个数,以及与该矩形框方向一致的像素点,并且设置能够计算出NFA[14]的精度值,然后根据NFA进行线段有效性的验证(图12)。
图12 使用LSD与Hough变换检测结果对比
图12是使用LSD与Hough变换检测直线的结果对比,可以明显看出,使用LSD检测的直线结果要比Hough变换检测的直线结果更加准确,干扰直线也少了很多。
通过LSD算法检测到直线之后,需要对直线进行过滤等处理,整个车位检测[15,16]的算法流程见图13。
图13 车位检测算法流程
4 实验及结果
实验采用荣威RX5为样车,4个鱼眼相机的安装位置如图1所示,相机分辨率为1280*720,环视图分辨率为875*775,通过相机获取的实验数据运行在NVIDIA Jetson TX2平台,调用Opencv3.2以及编写CUDA代码,处理速度为30帧/s,可以满足实时的要求。
首先对4相机进行联合标定,角点检测结果如图14所示,可以看出每个鱼眼相机视野中的26个角点都被检测到。
图14 角点检测
以前摄像机为例,标定计算得到的俯视变换矩阵如下:
(5)
4.1 环视拼接实验
传统的环视拼接与本研究提出的环视拼接对比效果如图15所示。图15(a)为传统环视拼接方法效果图,从图中可以看出,矩形框内出现线段拼接不上的情况,并且距离车越远的地方,拼接不上的情况越严重;图15(b)为本研究提出的环视拼接效果图,可以看出在对应的矩形框区域,能够实现无缝拼接,还可以增大环视图的左右可视距离,在实际的测试中,经过测量,图15(b)显示的左右可视实际距离为7.5m。
图15 环视拼接方法对比图
4.2 车位检测实验
在本研究提出的环视拼接算法的基础上进行车位检测,为了验证算法的有效性,首先对基于Hough变换的车位检测与基于LSD的车位检测进行对比实验,对比效果如下图16所示。
图16 基于Hough和LSD的车位检测
图16(a)为基于Hough变换的车位检测,左上角矩形框内的数字78(1)表示:该车位ID为78,第1次被检测到;图16(b)为基于LSD的车位检测,对比可以看出,右图中ID为27的车位,在左图中并没有被检测到,说明基于Hough变换的车位检测容易发生漏检。
由于目前完全基于视觉的车位检测方法比较少,于是本研究使用基于LSD的车位检测算法分别对地上车位与地下车位检测效果进行对比,对比效果如图17所示。
图17 地上车位与地下车位检测
图17(a)为基于LSD的地上车位检测效果,可以看出能够完全检测到所有车位,没有漏检;图17(b)中红色箭头所指车位,由于灯光太暗、车位线已经无法看清,所以没有检测出来,其他车位都能检测到,说明本研究基于LSD的车位检测对光照有一定的要求,并且能够有效的减少漏检。
为了评估本研究算法的准确性,实验一共采集3000张图片,其中包含11371个车位,为了对提出的算法进行有效性评估,定义公式(6)和公式(7),其中F表示误检率,M表示漏检率,FD(false detections)表示误检车位的数量,CD(correct detection)表示正确检测出车位的数量,MD(missing detections)表示漏检车位的数量。
(6)
(7)
表1给出了车位检测中使用Hough和LSD算法的F值和M值的结果对比,可以看出,使用LSD的方法能够提高车位的检测率,并且能够有效减少误检和漏检。
表1 Hough和LSD的F值和M值的结果对比
5 结束语
提出了一种新的基于环视系统的车位检测方法,与传统的环视拼接方法相比,不仅可以实现无缝拼接,还可以增大环视图的左右可视距离。在环视图像的基础上进行车位检测,使用LSD进行车位检测,与传统的直线检测算法Hough变换相比,检测结果更准确,并且能有效减少误检和漏检。但是依然存在不足之处,标定过程中,本实验需要将车开到标定场地,进行人工手动标定,由于车每次停的位置不同,所以会存在人为因素的误差,下一步的研究中,最好能固定车的位置,采用自标定的方法解决这种人为误差;虽然在远处可以实现无缝拼接,但是远处的马赛克情况严重,下一步可以改变差值方式解决马赛克问题。