首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自动驾驶关键技术之道路标线识别

版权声明:本文为IND4汽车人版权所有,未经网站官方许可严禁转载

车道线检测是汽车自动驾驶系统里感知模块的重要组成部分。无论是传统的图像处理技术还是新兴的深度学习方法,都是目前常见的车道表现检测的解决方法。

下图为特斯拉早些时间放出的一组图像,展示其已经实现的道路线识别算法,该算法可能是用深度学习方法完成的,当然也可能是使用了普通的图像处理技术。

传统的车道检测方法分两步:(1)特征提取(2)车道几何模型的建立与匹配。传统的计算机视觉算法是利用边缘检测(Edge detection),霍夫变换(Hough transform)等算法,把车道线从道路图片中提取分离出来。这是典型的人工设计特征(Hand crafted feature)的方法。如今火热的深度学习(Deep learning),正是取代人工设计特征,让计算机自行学习所需要的特征的技术。

基于深度学习的方法面临的一大问题是数据量的问题。目前国内外没用公开的公认的道路标线检测数据集,针对该问题的研究学者普遍采用自行驾车拍摄、自行标注的方法制作数据集。因此在数据样本方面就有着或多或少的差异,从而导致对如今各种算法的性能考核也没有一个完全统一的标准。

这篇文章中我们就简单介绍下,传统方法中的边缘检测算法。图像中每一个像素点的灰度值不同,边界处一般会有明显的边缘,利用此特征可以分割图像。这里要说明的是图像中的边缘指的是灰度值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。

典型的人工的边缘特征提取算子有Sobel、Prewitt等,常用的边缘检测方法有Canny算法等。将图像处理领域内经典的Lena图像用Sobel算子进行边缘检测后得到的图片如下所示

前面提到,图像的边缘指的是灰度值有突变的地方,一般通过求导数或者微分来搜索灰度值突变的像素点。导数越大表示灰度变化越大,即越有可能是边缘。微分也是同样的道理。

Sobel算子在x、y方向上的矩阵如图所示。Sobel算子根据像素点上下、左右8个邻点灰度值与矩阵的卷积和会在边缘处达到极值这一现象来检测边缘。该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。

Prewitt算子的矩阵和Sobel差不多。

Canny算法出现以后一直是作为一种标准的边缘检测算法。Canny算法分为几步:

一、灰度化

Canny算法通常处理的图像为灰度图,因此如果摄像机获取的是彩色图像,那首先就得进行灰度化。对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。

二、高斯滤波

图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。

三、计算梯度的幅值和方向

关于图像灰度值得梯度可使用一阶有限差分来进行近似,这样就可以得图像在x和y方向上偏导数的两个矩阵。常用的梯度算子如上面所说的Sobel和Prewitt。Canny一般采用下图更为简单的矩阵(实际也可以根据实验需要使用其他算子)

四、非极大值抑制

图像梯度幅值矩阵中的元素值越大,说明图像中该点的梯度值越大,但这不能说明该点就是边缘。在Canny算法中,非极大值抑制是进行边缘检测的重要步骤,通俗意义上是指寻找像素点局部最大值(极大值),将非极大值点所对应的灰度值置0,这样可以剔除掉一大部分非边缘的点。

五、用双阈值算法检测和连接边缘

Canny算法中减少假边缘数量的方法是采用双阈值法。选择两个阈值,根据高阈值得到一个边缘图像,这样一个图像含有很少的假边缘,但是由于阈值较高,产生的图像边缘可能不闭合,未解决这样一个问题采用了另外一个低阈值。

在高阈值图像中把边缘链接成轮廓,当到达轮廓的端点时,该算法会在断点的8邻域点中寻找满足低阈值的点,再根据此点收集新的边缘,直到整个图像边缘闭合。

上图是采用canny算法对雾天道路图片进行边缘检测得到的图像。Canny边缘检测的效果是很显著的。相比普通的梯度算法大大抑制了噪声引起的伪边缘,而且是边缘细化,易于后续处理。对于对比度较低的图像,通过调节参数,Canny算法也能有很好的效果。

你以为就这样结束了吗?当然还没有!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222G02TUP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券