ADAS技术概要

来源:互联网 发布:idc虚拟主机源码 编辑:程序博客网 时间:2024/05/19 20:18

        先进驾驶辅助系统(Advanced DriverAssistant System),简称ADAS,是智能交通领域的一个大方向,近几年ADAS迅速发展,在车道线检测、前车防撞、疲劳驾驶、紧急壁障、信号灯识别等方面都取得了长足的进步,这也是我们把ADAS单独作为一节来进行阐述的原因。

        当然ADAS系统会用到多种传感器,比如激光雷达、深度摄像头等,这里我们仅通过传统的RGB摄像头来说明两方面的技术思路,车道线检测和疲劳驾驶。



•   车道线检测

        车道线检测的依据是图像中的颜色、形状和纹理,包括车道线直线性约束。

        最常用的方法是基于形状模型的方法,常用的车道模型有直线模型、二次曲线模型、组合模型、Snake曲线模型等,可以将算法描述如下:

1)将图像灰度图作为输入,在此基础上通过边缘提取算子(如Sobel、Canny等)提取车道线边缘;

2)通过各种形状模型对提取的车道线模型进行拟合,包括 最小二乘拟合、小波变换、Hough变换等;

3)将得到的拟合结果进行过滤,去除非相关性结果(噪声、阴影等),并结合车道线约束条件进行最终判别。

        基于车道线模型的方法容易受到阴影或其他车辆、路牌、建筑等有明显边缘的物体的影响,因此会检测出大量与车道线无关的边缘,算法性能将会显著降低。另外,不同颜色的车道线需要结合额外的颜色模型进行区分。

        车道线模型算法较为成熟,其中一个典型是结合Hough变换来进行轮廓线提取(可以参考opencv封装好的Hough直线检测函数),典型的特征角点也是可以参照的特征之一。

        基于特征的方法 主要是将路面特征进行提取,然后通过分类的方法进行判断,特征包括颜色特征、纹理特征、梯度特征等,再结合线性特征、结构特征进行约束来获取车道线信息。

        基于特征的方法应用较少,主要原因在于车道线特征单一,没有复杂的纹理描述,因此可区分性比较差。

        这里给出一种基于逆透视变换(Inverse PerspectiveMapping, IPM)的方法,将图像变换到统一的坐标空间下进行提取和判断。


        如上图所示,通过成像车道线的平行约束,反求透视投影矩阵,通过逆矩阵将成像图像变换到右图所示的统一坐标空间,基于此,我们能够得到互相平行的车道线、固定的宽度和间距等,这些都可以作为有效的判定依据,并进一步结合分类算法进行检测和分类。


•   前车防撞

        检测车距最好的传感器是激光,这里不否认多点激光检测方案的准确性和稳定性,也有一些方案已经得到应用。我们这里考虑的是利用摄像头图像的检测方案。

        车距检测主要思路可以分成两步,第一步是得到目标车辆的宽度、高度;第二步是计算车辆目标在图像中的位置和比例,在此基础上通过摄像机的FOV张角来计算目标对应张角,并通过三角函数得到目标距离。


        距离计算结果受两个因素影响,一是摄像机的标定,一个好的标定结果能够得到好的结果;第二个因素是目标的真实尺寸参照,获取目标尺寸有两个思路,一是根据目标检测获取车辆的车型,从而得到预设的车辆目标尺寸,第二是根据车道线检测结果,计算车辆的相对尺寸。在车辆目标在正前方时准确度较高,不在当前车道时由于三角函数的距离估算会影响准确度。

        计算前车距离还有其他的算法或者模型,比如结合车辆跟踪和多帧检测,根据车道线的闭合程度模型(结合Scale map)也能够有效计算出目标距离。


•   疲劳检测

        检测车距最好的传感器是激光,这里不否认多点激光检测方案的准确性和稳定性,也有一些方案已经得到应用。我们这里考虑的是利用摄像头图像的检测方案。

        疲劳检测大致分为以下两个方向:

1)头部姿态估计,人脸朝向

2)人眼定位及睁闭眼状态


        姿态估计的大致流程可以描述为:

        人脸检测和前面有一些篇幅已经讲过,不作为本节重点。人眼定位现有的方法也有很多可以借鉴,其中效果比较好的是EyeApi,另外,ITUGaze Tracker、Haythamgaze tracker、Opencv也可以作为参考,大家可以自行搜索学习。

        眨眼检测是重点关注的第二个问题,在定位眼镜的位置和区域后,通过有效方法对目标区域进行提取分析,基本算法思路如下图:


        人脸姿态估计也是要讨论的一个重点,姿态估计需要建立在人脸识别定位的基础之上,比如通过典型的AAM算法进行关键点的检测,或者结合我们已经提取到的人眼目标进行计算,一般我们通过与标准脸的关键点进行比对来计算偏转角度,典型的变换模型算法是POSIT方法,这里不再详细介绍,感兴趣的话可以自行研究。

3 0
原创粉丝点击