APP下载

一种基于视觉的道路宽度测量方法

2022-07-06豆毅庚徐建华丁子豪陈家斌

中国惯性技术学报 2022年2期
关键词:立体匹配灰度宽度

豆毅庚,徐建华,潘 亮,吴 限,丁子豪,陈家斌

(1. 西安爱生技术集团有限公司,西安 710065;2. 北京理工大学 自动化学院,北京 100081;3. 陆军装备部驻西安地区军事代表局驻南阳地区第二军事代表室,南阳 473000;4. 航天时代飞鸿技术有限公司,北京 100094)

在自动驾驶车辆的环境感知研究领域,道路检测和道路宽度测量是一项关键的研究内容,也是车辆定位导航、路径规划以及车辆安全性评估等任务的基础。

在基于视觉的道路检测方面,许多研究者借助图像特征进行检测。文献[1]使用了一种结合Canny边缘算子与霍夫变换的道路边缘检测方法。文献[2]采用了基于B样条曲线拟合道路边界的方法拟合出道路边界。此外还有许多研究者通过图像的颜色特征来检测道路。文献[3]使用基于HSV颜色空间的方法对道路区域边缘进行拟合,文献[4]为HSV颜色空间设计了一种新的量化技术,以生成用于K-Means聚类[5]的颜色直方图和灰色直方图,该方法自动估计了质心的初始化和聚类的数量,进而能够有效地划分出图像中的有效信息区域,增强了HSV颜色空间的使用广泛性。近年来,越来越多的研究者使用基于神经网络的方法处理计算机视觉相关问题[6,7]。文献[8]在FCN[9]的末端增加全连接条件随机场(Fully Connected Condition Random Field, FCCRF),对粗糙分割图进行优化,并使用空洞卷积扩大特征图的感受域(Receptive Field,RF),提出了Deeplab网络。随后文献[10-12]等通过引入带空洞和特征金字塔方法、将不同空洞率的空洞卷积并联等机制,使得Deeplab算法对于多尺度输入图像的分割效果得到大幅度提升,该系列算法目前已经发展到了Deeplabv3+。在视觉测量方面,文献[13]提出了一种基于空间位置的匹配区域对齐算法与基于模板匹配的空间位移计算方法,进而测量出车辆的移动速度。文献[14]利用机器学习与视觉测量原理,提出了一种高精度的机器人抓取方法。文献[15]提出了一种小尺度视觉测量方法。文献[16]提出了一种基于双目视觉技术的无缝线路钢轨纵向位移测量方法。

上述基于视觉的语义分割算法对于包含多类物体的数据集的分割效果好,但是在道路场景中的语义分割中,在道路尽头以及道路接近消失的部位分割效果差,现有算法还有提升的空间。其次,目前大多数视觉测量算法都是用来测量物体的深度或外径,在道路宽度测量系统方面鲜有成熟的研究成果。

1 道路检测算法

1.1 空间域注意力机制

基于空间域的注意机制受到人眼观察图像过程的启发[17]。人眼在观察图像时,会自动将眼睛聚焦在图像的特定部分,以获取图像中的重要信息,这部分信息也称为感兴趣区域。基于空间域的注意力机制是通过一些方法使神经网络更加关注图像的关键区域,从而促进神经网络模型的快速收敛,提高网络对特定数据的学习效果。空间注意机制示意图如图1所示。

图1 空间域注意力机制Fig.1 Spatial domain attention mechanism

1.2 改进Deeplabv3+算法

对道路场景数据进行分析得到,自动驾驶汽车相机传感器第一视角采集的含有道路的图像中,道路通常位于图像的中部,并且越接近道路消失处的部分道路宽度越窄,细节信息也变得越少。因此对于道路场景图像来说,道路检测模型的注意力应该侧重于图像的中间和道路消失的部位,才能获得道路更多的细节信息。基于这一先验知识,本文对Deeplabv3+的网络编码解码部分进行了修改。

Xception网络是一种常见的特征提取网络,它使用深度可分离卷积替代了部分常规卷积,在减少计算量的同时还提高了网络的特征提取能力。Deeplabv3+算法的特征提取部分就使用了Xception网络,并且配合采样率为6、12、18的3×3并行空洞卷积进行提取道路特征图,不同特征图合并后再进行1×1卷积进行维度调整,最后经过4倍上采样以增加特征图的分辨率。如上所述,为了防止道路边缘和道路尽头部分重要信息丢失,本文使用带有真值标注的图像,通过二值化得到掩膜(mask)。将其在浅层网络部分下采样得到G,进而与浅层的特征图中间结果R做均方误差Lgr(Mean Square Error, MSE),并将此部分误差添加到原Deeplabv3+算法损失函数中,使得算法对道路边缘和道路尽头的关注度提高,图像细节特征能够被放大。修改后的损失函数如下所示:

其中,N是特征图中像素点总数,α是可修改参数,一般设置为0.01~0.1之间的数。改进Deeplabv3+算法的流程图如图2所示,其中红色框内的L'为损失函数,由Lgr与LDeeplabv3+组成。在神经网络的训练阶段,数据会从损失函数开始沿前向传播的反方向计算梯度并自适应修正各部分参数,为了避免流程图过于复杂,图2中省略了此部分箭头。

图2 改进的Deeplabv3+算法Fig.2 Improved Deeplabv3+ algorithm

2 道路宽度测量算法

本文使用视觉方法测量道路宽度,借助双目相机获取左、右相机图像,然后进行立体匹配,从而能够提取到空间三维信息。在立体匹配的过程中,最常用的就是半全局立体匹配算法。

2.1 半全局立体匹配算法

(1)初始匹配代价

在初始匹配代价的计算中,左图像上的待匹配点为p(x,y),其像素灰度I L(x,y);右图像上x方向的视差为d的像素点为q((x-d),y),其灰度为I R((x-d),y),则该两点的匹配代价C(p,q)计算公式如式(1)所示:

(2)半全局立体匹配

半全局立体匹配算法是一种速度和精度双赢的立体匹配算法,其在OpenCV库中命名为SGBM(Semi-Global Block Matching),SGBM算法通过优化能量函数E(D)使其得到最小值,进而得到视差图。

式中,C(p,Dp)是在视差图D下所有像素点的匹配代价,D p表示像素点p的视差量。第二项是对像素点p的邻域Np中的所有像素点q进行平滑,Dq为像素点q的视差量。

T[]是截断函数,根据判断条件是否成立,对其赋值1或0。P1表示p与q的像素值差等于1的概率,P2表示p与q像素差值大于1的概率。如果P1和P2的值越大,表示该点所在的区域越平滑。

2.2 改进的半全局立体匹配算法

为了进一步提高半全局立体匹配算法的精度,本文提出了一种改进的半全局立体匹配算法,其中,为了对图像进行增强,引入了直方图均衡化(Histogram Equalization)算法。直方图均衡化算法的核心思想是对图像灰度进行非线性映射,进而突出图像中的有用信息。其基本原理如下:

首先将图像转化为单通道灰度图,用r表示图像中的像素灰度等级,0≤r≤n-1。Pr(r)表示像素灰度等级分布,即灰度分布的概率密度函数。离散情况下用Pr(rk)表示,则有:

其中nk为灰度rk的像素数,n为总像素数。使用式(5)对像素灰度重映射,得到增强后的图像。

其中Si为原像素灰度i的像素映射后的像素值。

本节改进的立体匹配算法主要思路是对于输入三通道图像I,首先将其转化为单通道灰度图G,进行图像直方图均衡化,得到增强后的图像G'。随后在使用OpenCV的SGBM算法,获得立体匹配结果D'。最后,对D'使用加权最小二乘滤波平滑,得到平滑后的立体匹配结果。

2.3 道路宽度测量流程

本文利用上述道路检测和立体视觉算法,结合下述第3节中的实验平台,提出了一种道路宽度测量方法,具体流程如下:

1)双目相机拍摄带有道路的图像对。

2)左相机图像使用改进的Deeplabv3+算法分割道路区域,并把道路边界的二维相对坐标存入列表List1。

3)双目相机使用改进的SGBM立体匹配算法获得视差图,结合相机参数使用三角测量原理计算出深度图Ddepth。

4)在列表List1中随机抽取三组坐标,结合深度图Ddepth恢复出各个点在左相机坐标系下的坐标。

5)对每组坐标点计算空间欧式距离,取平均值作为道路宽度测量值Width,单位为毫米(mm)。

上述算法流程示意图如图3所示。

图3 道路宽度测量流程Fig.3 Road width measurement process

3 实验与分析

本节对上述改进Deeplabv3+和改进SGBM算法以及本文提出的道路测量方法分别实施验证实验。使用Autolabor pro1实验底盘搭载小觅智能MYNT120相机,相机为水平放置,完成拍摄道路双目图像等任务,再通过道路测量系统测量道路宽度。

图4 实验所用双目相机Fig.4 Binocular camera used in the experiment

图5 实验移动平台Fig.5 Mobile platform

3.1 改进的Deeplabv3+算法验证实验

本节使用改进的Deeplabv3+算法进行网络训练与测试。实验细节:使用Cityscapes数据集的预训练权重初始化训练,学习率为0.001到0.0001变化,训练轮数为45000轮。训练最终Loss值降到了0.3以下。使用自采集的非结构化道路和结构化道路的图像、带有直路和弯道的图像进行测试,取得结果如图6所示,可以看到对于各种道路都能够很好地分割出其边界,对于道路快要消失的远处部分细节也分割得很好。

图6 道路分割结果Fig.6 Road segmentation results

使用指标mIOU(Mean Intersection Over Union)评价算法,选取Cityscapes数据集和自标注数据的共计200张图像进行测试,得到结果如表1所示。

表1 道路分割精度Tab.1 Accuracy of road segmentation

3.2 改进立体匹配算法验证实验

本节通过实验对改进的SGBM算法进行验证实验,使用VS2015和OpenCV3.10作为实验软件平台,对立体匹配标准测试数据集中的Middle2、Bowling1和laundry进行测试,实验结果如图7所示。

图7 立体匹配结果Fig.7 Stereo matching result

表2 误匹配率(单位:%)Tab.2 Mismatching rate (Unit: %)

可以看出,改进后的SGBM立体匹配算法对于图像边缘的匹配效果更好,与原始SGBM算法相比,图中红色方框中框处的部分在细节处得到了明显的改善,同时也降低了误检率,效果更好。

3.3 道路宽度测量实验

本节对本文提出的道路宽度测量方法进行实验验证。实验细节:软件环境为python3.6,OpenCV3.7,VScode。硬件为小觅MYNT120相机,并已提前标定。

图8所示为本文提出的道路宽度测量方法的验证实验效果图。其中,第一行所示为改进的立体匹配算法结果,可以看出改进算法的视差图较平整,下方图像内黄色部分是使用改进的Deeplabv3+进行的道路分割结果,红色文字表示的是道路宽度测量结果。

图8 道路宽度测量结果Fig.8 Road width measurement results

为了更进一步验证本文提出的道路宽度检测方法的有效性,设置对照实验,原始方法为Deeplabv3+算法结合SGBM算法进行道路检测与宽度测量,本文方法为改进的Deeplabv3+算法结合改进的SGBM算法进行道路检测与宽度测量。对照实验结果如表3所示。

表3 道路宽度测量误差Tab.3 road width measurement error

由以上测量结果图和测量结果误差表可以得到,本文提出的基于视觉的道路宽度测量方法比原始方法效果好,并且能够在结构化道路和非结构化道路下都取得很好的测量结果,测量误差不超过真实值的5.0%。

4 结 论

本文提出了一种基于计算机视觉的道路宽度测量系统。该系统在道路语义分割环节采用改进的Deeplabv3+算法,能够准确分割出图像中的道路区域。立体视觉测量部分提出了一种改进的SGBM立体匹配算法,使得图像边缘等细节处的匹配效果得到提升。道路宽度测量系统基于前两个改进算法进行,实验结果表明,本文提出的方法对非结构化道路和结构化道路具有很好的测量精度,该方法提高了自动驾驶车辆对道路的感知能力,并且在建图领域可实现代替人工方法对道路进行测量。

猜你喜欢

立体匹配灰度宽度
采用改进导重法的拓扑结构灰度单元过滤技术
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
Arduino小车巡线程序的灰度阈值优化方案
双目立体视觉系统的旋转轴方位计算与特征点立体匹配
基于SIFT算法的图像匹配技术在测量系统中的应用
一种改进自适应权重稀疏区域立体匹配算法
镜像式单摄像机立体视觉传感器对弹簧几何尺寸的测量
孩子成长中,对宽度的追求更重要
基于热区增强的分段线性变换提高室间隔缺损超声图像可懂度研究
你有“马屁股的宽度”吗?