基于单目摄像头的车辆前方障碍物的检测研究
2022-10-31沈念伟于大泳
沈念伟,于大泳
(200093 上海市 上海理工大学 机械工程学院)
0 引言
进入21 世纪以来我国汽车产量日益增加,但随之而来的交通事故也同样增多。中国交通网2018 年数据显示,当年全球道路交通事故造成的死亡人数多达125 万,交通事故伤害已位列第8大致死原因,其中有较大比例是因为躲避障碍物不及时所造成的[1]。如果能在行驶过程中提前检测和躲避道路中的障碍物,那么交通事故的发生概率就会大大降低,由此可见障碍物的检测在汽车的行驶过程中极为重要。随着时代的发展,城市道路中的交通工具成为了最主要的障碍物,其次是行人,所以本文主要研究的障碍物是各种交通工具和行人[2]。目前对于道路上的障碍物的检测和识别主要依靠的设备大多是激光雷达、机器视觉以及超声波。由于激光雷达过于昂贵,也易受电磁波干扰,超声波虽然结构简单,价格也便宜,但是其缺点也比较明显,就是测量的距离太短,达不到车辆的要求,因此这些设备并不适合大批次生产。然而单目摄像头成本较低,对于资源要求也不高,比较适合大批次生产[3]。
本文采用CMOS 摄像头对道路上障碍物进行采集,首先对采集到的图像设定ROI 区域,再对ROI 区域进行预处理,采用加权平均法进行图像灰度化,除噪阶段选择了效果较好的中值滤波,对除噪后图像进行了基于遗传算法的二维最大熵法的阈值分割,较于传统的阈值分割法,分割效果更优,其速度也很快。最后通过形态学、填充算法和差分法对道路上的障碍物进行检测和提取,具体的流程图如图1 所示。
图1 障碍物检测流程图Fig.1 Obstacle detection flow chart
1 图像的获取
为了实验的严谨和真实性,本文所有视频图像都是通过汽车的行车记录仪所获取,体现了障碍物的随机性。本实验所用的行车记录仪的摄像头的品牌型号是惠普F975X 黑色,分辨率为1 080×820,采用CMOS 传感器。行车记录仪如图2 所示,将获取到的视频加载到电脑上进行算法处理。
图2 行车记录仪Fig.2 Automobile data recorder
2 图像ROI 区域
感兴趣区域ROI(region of interest)是指从图像中选取一个在整幅图像最想要的区域,而这个区域将是本文所要研究的重要区域,相比于处理原图来说这样可以大大减少计算机的运行时间。本文研究的是汽车正前方的区域,对车辆有威胁的障碍物会从图像的正上方慢慢出现,ROI的区域范围应该根据汽车的车型尺寸来确定,由于市面上不同的汽车其车型尺寸大小也各不相同,所以在图像I 的范围(r,c)区域内以固定百分比k%和l%[4]。提取ROI 区域的公式如下:
式中:k,l——一般取值为0.3;ceil——向下取整函数。根据上述方法在图像中提取的感兴趣区域如图3 所示。
图3 原图中提取ROI 区域Fig.3 Extract ROI area from original image
3 图像预处理
在获取图像的过程中,往往会有许多外在的因素,从而导致摄像头采集到的图像存在质量问题,例如恶劣的自然气候甚至是路面上的强光照射,造成许多摄像头都会存在曝光问题。图像的质量问题会直接影响到计算机检测的结果,因此在对图像进行正式处理之前必须对其进行预处理,这样就能够最大化程度过滤掉图像上的一些无用的信息以及加快图像的处理效率。所以图像预处理的必要不言而喻。
3.1 图像灰度化
如今大部分的摄像头类型所拍摄的图片都是彩色的,彩色图像包含的数据特别大,这样就会增加后期计算机处理的速度,大量的数据集会占据计算机的运行内存,因此必须把图像进行灰度化,这样就可以在保留图像的重要信息的情况下能够避免这样的事情发生,对图像进行灰度化后,才能保证后续算法运行顺利。
彩色图像由红、绿、蓝(RGB)3 种颜色组成,其像素点的变化范围由0 到255×255×255 之间。进行图像的灰度化目的就是为了改变其像素的变化范围,将其像素的范围变化成0 到255。本文采用的是一种加权平均值的方法进行灰度化处理,根据彩色图像的3 个通道各自的重要性赋予不同的权重,然后再进行加权平均处理。大量实验表明,比较符合人类视觉的灰度值的最佳颜色的权重分别为红色0.3、绿色0.59、蓝色0.11。加权平均法公式如下所示:
式中:i,j——像素所在的位置的像素值。
灰度化效果如图4 所示。
图4 加权平均的灰度图像Fig.4 Weighted average grayscale image
3.2 图像滤波
图像的噪声可以理解为“妨碍人们感觉器官对所接收的信源信息理解的因素”,在其理论上是不可预测的,只能用概率统计方法来认识的随机误差[5]。图像的大部分能量都集中在幅度谱的中频段以及低频段,因此在高频段一些比较有用的信息往往带有一些噪声,所以在图像预处理阶段必须使用一种滤波方法,只有降低高频段部分的成分幅度,才能够最大程度地减弱噪声。本文所用的滤波方法为中值滤波。中值滤波是一种邻域运算,把邻域中的所有像素值按照大小进行排序,然后从排序的列表中选取中间值作为其像素值,这样就能够让每一个像素点的值都接近真实的数据,进而达到了去除图像中孤立点噪声的目的。中值滤波后的效果如图5 所示,其优点在于实际运算过程中并不需要图像的统计特性,也因此给计算机的运算带来了很大的便利。其中值滤波的公式如式(3):
式中:f(x,y)——处理前的图像;g(x,y)——中值滤波后的图像;W——邻域内的像素点。
4 ROI 区域内障碍物的检测
4.1 ROI 区域的分割
图像分割的目的就是把障碍物与背景分开,为后续的障碍物的提取提供基础。图像分割的方法有很多,有基于边缘的分割方法,基于阈值的分割方法等等。在图像处理中,阈值分割法是一种较为常用的图像分割的方法,主要是因为计算比较简单,性能比较稳定,速度快,在图像处理领域被广泛运用。
传统的阈值分割方法在处理一些背景比较单一且几乎不变时,这种方法能够达到很好的分割效果,但是碰到背景比较复杂且信噪比较小的图像时,分割效果往往就会变得很差。本文摒弃传统的阈值分割法,选用的是一种基于遗传算法的二维最大熵的方法实现灰度图像阈值的分割[6],熵在数字图像处理和模式识别的领域中代表的是一种平均信息量的表征,应用非常广泛。使用此方法分割后的结果如图6 所示。
图6 阈值分割图Fig.6 Threshold segmentation diagram
传统的阈值分割法的分割时间太长,无法达到要求,使用遗传算法之后能大大节省时间,增加了算法的实效性。表1 是实验过程中连续5 次获取的算法运行时间和阈值的分割结果,由此看出其运行时间较短。
表1 算法的运行时间和阈值Tab.1 Running time and threshold of the algorithm
4.2 ROI 区域内障碍物的提取
在对感兴趣区域(ROI)进行图像的阈值分割之后,发现其图像中仍然存在一些毛刺以及断断续续的地方,为了进一步优化改善,可以在图像的连通区域进行形态学修复。形态学的闭运算是一种先膨胀然后再腐蚀的几何运算的滤波器,使用闭运算能够最大程度改善图像中的障碍物边缘不连续以及毛刺的现象,而使其总的位置和形状却几乎不会变化。处理后的效果如图7(a)所示。使用填充算法对障碍物部分进行填充,填充效果如图7(b)所示。最后阶段使用带阈值的差分法,能够得到障碍物的大致区域[4]。如果障碍物的区域的面积大于阈值T时,那么则认为被检测到的区域就是障碍物,然后把这块区域标记出来,否则就认为这块区域不是障碍物。使用带阈值的差分法能够有效防止在运算过程中出现误差情况的发生。其中,本实验中所用的阈值T为图像面积的5%±0.5%。检测的结果如图7(c)所示。
图7 障碍物的提取过程Fig.7 Process of obstacle extraction
通过上述3 个步骤对ROI 区域内的障碍物进行提取,在不考虑大雾、暴雨等干扰度较大的天气影响下,基本可以完成对障碍物的检测。在不同复杂环境下的障碍物检测试验结果如图8 所示。
图8 障碍物检测实验结果Fig.8 Test results of obstacle detection
5 结语
针对汽车在行驶过程中所遇到的障碍物未能够及时准确检测的问题,本文对道路中的障碍物部分的快速检测做了详细的介绍。论文的实验结果是基于MATLAB 软件仿真。通过大量的实验结果表明:在道路大体一致的情况下,利用本文的研究算法是切实可行的。