汽车可行驶区域实时检测方法和系统与流程

文档序号:13300042阅读:1070来源:国知局
汽车可行驶区域实时检测方法和系统与流程

本发明总体地涉及汽车自动驾驶技术,更具体地涉及汽车可行驶区域实时检测方法和系统。



背景技术:

精确实时的可行驶区域检测有重要的应用意义,尤其是在辅助驾驶安全警示和自动驾驶的自动控制中起到决定性作用,比如在辅助驾驶中,非可行驶路面的提前预警可以尽可能多地减少事故,避免人身和财产损失;在自动驾驶中,可行驶区域的检测越精确,自动控制则越精确。

目前,对于可行驶安全区域的检测方法主要有,一是基于激光雷达传感器,首先进行标定,对低于一定阈值的区域判断为地面,该方法所需激光雷达成本很高,很难普及使用,另一方面,地面基本不会是水平的,激光雷达的结果并不精确;二是利用单目彩色摄像头,通过机器学习和计算机视觉的方法来检测可行驶区域,该方法严重依赖于训练的样本和人工设计的特征,可行驶区域千差万别,遇到训练样本中不存在的情况则检测不出来,扩展性、通用性不强,另一方面,单目相机无法准确地获取深度信息,得到的结果往往不符合真实场景,最后该方法实时性也难以保障。

近几年来已经提出了利用立体相机来检测路面用于辅助驾驶的技术。

在专利文献cn103489175b中,提出了如下基于立体相机的路面检测技术:获得包括路面的v视差图;以及从v视差图中提取直线作为路面,其中从v视差图中提取直线作为路面包括:利用霍夫变换提取第一直线作为第一路面近似;以及基于第一直线,利用最小二乘法拟合得到第二直线作为路面。另外,在专利文献cn103489175b中,提出采用卡尔曼滤波方法对直线进行滤波。

在非专利文献realtimeobstacledetectiononnonflatroadgeometrythroughv-disparityrepresentation和在非专利文献u-v-disparitybasedobstacledetectionwith3dcameraandsteerablefilter中,都用到v视差图,用来检测地面以上的障碍物。不过,在行车环境中,车的高度一般都在1米以上,即使v视差图精度不是很高,障碍物也很容易检测出来,但如果要检测路面,对算法的精度要求就会高很多。



技术实现要素:

发明人经实验及分析发现:专利文献1存在一定的应用局限性:首先,路面并不是一个严格的平面,而是一个曲面,不能简单地用平面来表示曲面;其次,要想应用专利文献1,双目得到的深度图像必须包含较少的噪声,并且必须是稠密的视差图;这使得该技术不能实时运行;最小二乘法只适合与误差较小的情况。试想一下这种情况,假使需要从一个噪音较大的数据集中提取模型(比方说只有20%的数据时符合模型的)时,最小二乘法就显得力不从心了;综上,专利文献1的技术在实际应用中抗干扰能力很可能较差,不能适应各种复杂场景,当路面障碍物较多时无法有效去除障碍物所带来的影响。

鉴于以上情况,提出了本发明。

根据本发明的一个方面,提供了一种实时检测汽车的可行驶区域的汽车可行驶区域实时检测方法,可以包括:通过汽车车身上搭载的双目摄像头拍摄得到沿汽车行进方向的汽车前方的左右两张灰度图像,计算得到视差图;从视差图转换得到v视差图;对v视差图进行二值化;使用ransac方法来从二值化后的v视差图的点中拟合得到分段直线;根据多帧图像平滑滤波直线;以及通过所提取的直线得到原灰度图像中的可行驶区域。

根据上述汽车可行驶区域实时检测方法,其中,所述对v视差图进行二值化可以包括:求取每一行像素值的最大值,将每一行中仅最大值所处像素的灰度值设置为255,其余像素灰度值设置为0。

根据上述汽车可行驶区域实时检测方法,使用ransac方法来拟合一段分段直线可以包括:反复执行下述操作序列,直至达到预定结束标准:选择v视差图中的最大值点中的一组随机子集来进行直线拟合,得到直线模型;用得到的直线模型去测试所有的其它数据,如果某个点适用于估计的直线模型,认为它也是局内点,如果有超出预定数目的点被归类为局内点,那么估计的模型就认为是合理的,然后用所有局内点重新估计模型,并估计局内点与模型的错误率;如果模型的错误率低于当前最好的模型,则用该模型替代当前最好的模型;以最后得到的最好的模型作为该段分段直线。

根据上述汽车可行驶区域实时检测方法,所述使用ransac方法来拟合多段分段直线可以包括:首先按照上述方法来提取第一条直线,提取完毕后,将属于第一直线的点从v视差图中去除,然后针对剩下的点按照上述方法来提取第二条直线,如此反复下去,直到剩余的点的数目小于预定阈值。

根据上述汽车可行驶区域实时检测方法,根据多帧图像平滑滤波直线可以包括:设定一个时间窗口,假设直线模型表示为ax+by+c=0,对每帧图像得到直线模型参数,针对每个参数对每帧进行累加,当每来一帧新的图像,从累加的参数结果中减去最开始一帧图像的直线模型参数,再加上当前帧图像的直线模型参数,再求平均作为这一帧的直线模型参数。

根据上述汽车可行驶区域实时检测方法,通过所提取的直线得到原灰度图像中的可行驶区域可以包括:针对v视差图中的每一行,选取提取的直线上的视差值为d的点,在视差图对应的行中,比较每一个像素的视差值和d的差值,当差值小于一定阈值时,则将原图对应位置判定为安全的可行驶区域。

根据本发明的另一方面,提供了一种车载的用于检测汽车可行驶区域的汽车可行驶区域实时检测系统,可以包括:双目摄像头,持续拍摄得到沿汽车行驶方向的汽车前方的左右两张灰度图像;计算装置,包括存储器、处理器、通信接口、总线,存储器、通信接口和处理器都连接到总线,存储器中存储有计算机可执行指令,计算装置经由通信接口能够获得双目摄像头拍摄得到的左右两张灰度图像,当处理器执行所述计算机可执行指令时,执行下述方法:基于左右两张灰度图像,计算得到视差图;从视差图转换得到v视差图;对v视差图进行二值化;使用ransac方法来来从二值化后的v视差图的点中拟合得到分段直线;根据多帧图像平滑滤波直线;以及通过所提取的直线得到原灰度图像中的可行驶区域。

根据上述汽车可行驶区域实时检测系统,其中,对v视差图进行二值化可以包括:求取每一行像素值的最大值,将每一行中仅最大值所处像素的灰度值设置为255,其余像素灰度值设置为0。

根据上述汽车可行驶区域实时检测系统,使用ransac方法来拟合一段分段直线可以包括:反复执行下述操作序列,直至达到预定退出标准:选择v视差图中的最大值点中的一组随机子集来进行直线拟合,得到直线模型;用得到的直线模型去测试所有的其它数据,如果某个点适用于估计的直线模型,认为它也是局内点,如果有超出预定数目的点被归类为局内点,那么估计的模型就认为是合理的,然后用所有局内点重新估计模型,并估计局内点与模型的错误率;如果模型的错误率低于当前最好的模型,则用该模型替代当前最好的模型;以最后得到的最好的模型作为该段分段直线。

根据上述系统,使用ransac方法来拟合多段分段直线可以包括:提取第一条直线,提取完毕后,将属于第一直线的点从v视差图中去除,然后针对剩下的点来提取第二条直线,如此反复下去,直到剩余的点的数目小于预定阈值。

根据上述系统,根据多帧图像平滑滤波直线可以包括:设定一个时间窗口,假设直线模型表示为ax+by+c=0,对每帧图像得到直线模型参数,针对每个参数对每帧进行累加,当每来一帧新的图像,从累加的参数结果中减去最开始一帧图像的直线模型参数,再加上当前帧图像的直线模型参数,再求平均作为这一帧的直线模型参数。

根据上述的系统,通过所提取的直线得到原灰度图像中的可行驶区域可以包括:针对v视差图中的每一行,选取提取的直线上的视差值为d,在视差图对应的行中,比较每一个像素的视差图值和d的差值,当差值小于一定阈值时,则将原图对应位置判定为安全的可行驶区域。

根据本发明的另一方面,提供了一种实时检测汽车的可行驶区域的系统,可以包括:双目相机,配置为拍摄得到沿汽车行进方向的汽车前方的左右两张灰度图像;视差图计算部件,从左右两张灰度图像计算得到视差图;v视差图转换模块,从视差图转换得到v视差图;二值化模块,对v视差图进行二值化;ransac直线拟合模块,使用ransac方法来从二值化后的v视差图的点中拟合得到分段直线;多帧图像滤波模块,根据多帧图像平滑滤波直线;原图像可行驶区域确定模块,通过所提取的直线得到原灰度图像中的可行驶区域。

根据本发明实施例的汽车可行驶区域实时检测方法和系统,可以适应各种各样的路面和路况,对视差图精度要求低,减少前端运算量,抗干扰能力强,提高实时性,这些对于汽车的自动安全驾驶非常关键。

附图说明

从下面结合附图对本发明实施例的详细描述中,本发明的这些和/或其它方面和优点将变得更加清楚并更容易理解,其中:

图1示出了根据本发明实施例的、车载的用于检测汽车可行驶区域的系统100的示意图;

图2详细描述根据本发明实施例的实时检测汽车可行驶区域的方法;

图3示出了最小二乘法在存在较大噪声情况下错误提取直线情形的示意图;

图4示出了根据本发明实施例的从v视差图的点中拟合一段直线的方法240的流程图;

图5示出了根据本发明的另一实施例的实时检测汽车的可行驶区域的汽车可行驶区域实时检测系统300的结构框图。

具体实施方式

为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。

首先给出本文中使用的术语的解释。

视差图:视差图是以图像对中任一幅图像为基准,其大小为该基准图像的大小,元素值为视差值的图像。视差图包含了场景的距离信息。视差图可以从双目相机拍摄的左右图像中计算得到。普通二维视差图中的某点坐标以(u,v)表示,其中u为横坐标,v为纵坐标;点(u,v)处的像素的像素值用d(u,v)表示,像素值表示该点(u,v)处的视差。由于视差图包含了场景的距离信息,因此从立体图像对中提取视差图的图像匹配,一直是双目视觉研究中最为活跃的领域。

v视差图:v视差图从视差图转换得到,v视差图中任意一点(d,v)的灰度值是对应视差图的纵坐标为v的行中视差值等于d的点的个数。形象地说,v视差图可以视为视差图的侧视图。通过累计同一行的视差值相同点的个数将原图像中的平面投影成一条直线。

ransac:randomsampleconsensus的缩写,它是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。

图1示出了根据本发明实施例的、车载的用于检测汽车可行驶区域的系统100的示意图,包括双目摄像头110和计算装置120。

双目摄像头110持续拍摄得到沿汽车行驶方向的汽车前方的左右两张灰度图像。

双目摄像头110例如安装在车辆的顶部前方,使其摄像范围集中于车辆前部的路面。

计算装置120包括存储器121、处理器122、通信接口123、总线124。存储器121、通信接口123和处理器122都连接到总线124,存储器中存储有计算机可执行指令,计算装置经由通信接口能够获得双目摄像头拍摄得到的左右两张灰度图像,当处理器执行所述计算机可执行指令时,执行实时检测汽车可行驶区域的方法。

计算装置120中还可以包括报警器125,用于在发现危险或紧急情况时给出报警信号或向外发送通知。

图1所示的结构仅为示例,可以根据需要进行增加、减少、替换等。

另外,需要说明的是,有些功能或功能中的一部分可以根据需要由不同部件来实现,例如从左右图像来计算求得视差图在实施例中被描述为由计算装置来实现,不过根据需要也可以在双目相机中增加用于计算视差图的软件、硬件或固件,或者也可以在车辆中部署专门的用于基于左右图像计算视差图的部件,这些都在本发明构思范围之内。

下面结合图2详细描述根据本发明实施例的实时检测汽车可行驶区域的方法。

本发明实施例的实时检测汽车可行驶区域的技术,通过双目摄像头传感器获得左右两张图像,由左右两张图像得到视差图(disparitymap),用视差图来构造v视差图(v-disparitymap),再在v视差图上利用ransac求取分段直线,并根据多帧图像对直线进行平滑滤波,再最终由这些直线所对应的视差在原始图像中得到可行驶的安全区域。

图2示出了根据本发明实施例的实时检测汽车的可行驶区域的方法200的总体流程图。

在步骤s210中,通过汽车车身上搭载的双目摄像头拍摄得到沿汽车行进方向的汽车前方的左右两张灰度图像,计算得到视差图。

具体地,例如,依据双目立体匹配相关算法,先找出每对图像间的对应关系,根据三角测量原理,得到当前场景的视差图。

这里,还可以对视差图进行一些去噪处理等。

在步骤s220中,从视差图转换得到v视差图。

具体地,例如,在视差图中,用灰度深浅变化来表示物体相对于镜头的相对距离远近,根据视差图中包含的景深信息,地面的视差是连续变化的,近似分段直线。假设用md表示视差图上某点的像素值,用mvd表示v视差图上对应点的像素值。用函数f(md)=mvd来表示视差图和v视差图之间的转换关系,函数f表示累计视差图每一行上具有相同视差的像素的个数pnum,这样以视差为横轴,纵轴与视差图一致,pnum为对应像素的灰度值,这样就得到一个灰度v视差图。

在步骤s230中,对v视差图进行二值化。

在一个示例中,采用如下方法进行二值化:二值化的原则是先求取每一行的最大值,每一行中仅最大值所处像素灰度值设置为255,其余像素灰度值设置为0。

在步骤s240中,使用ransac方法来从二值化后的v视差图的点中拟合得到分段直线。

下面解释下在众多的直线拟合算法中,为什么本发明实施例选择使用ransac方法来进行二值化后的v视差图的点的直线拟合。

实际生活中的数据往往会有一定的偏差,或者说噪声,这给数学拟合造成了困难。例如我们知道两个变量x与y之间呈线性关系,y=ax+b,我们想确定参数a与b的具体值。通过实验,可以得到一组x与y的测试值。虽然理论上两个未知数的方程只需要两组值即可确认,但由于系统误差的原因,任意取两点算出的a与b的值都不尽相同。我们希望的是,最后计算得出的理论模型与测试值的误差最小。

通常现有技术采用最小二乘法或霍夫变换来拟合直线。

霍夫变换的不足在于:检测速度太慢,无法做到实时控制;精度不够高,期望的信息检测不到反而做出错误判断,进而产生大量的冗余数据。这主要源于:

1、需占用大量内存空间,耗时久、实时性差;

2、现实中的图像一般都受到外界噪声的干扰,信噪比较低,此时常规hough变换的性能将急剧下降,进行参数空间极大值的搜索时由于合适的阈值难以确定,往往出现“虚峰”和“漏检”的问题。

最小二乘法通过计算最小均方差关于参数a、b的偏导数为零时的值。事实上,在很多情况下,最小二乘法都是线性回归的代名词。遗憾的是,最小二乘法只适合于误差较小的情况。试想一下这种情况,假使需要从一个噪音较大的数据集中提取模型(比方说只有20%的数据时符合模型的)时,最小二乘法就显得力不从心了。例如图3,肉眼可以很轻易地看出一条直线(模式),但最小二乘法却找错了。

本发明通过从v视差图提取直线来检测路面,视差图中具有较大的噪声,这种情况下用最小二乘法来提取直线很可能会得到错误的拟合。

ransac算法可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数,非常适合于含有较多噪声的观测数据的模型参数估计。在实际应用中获取到的数据,常常会包含有噪声数据,这些噪声数据会使对模型的构建造成干扰,我们称这样的噪声数据点为outliers(局外点),那些对于模型构建起积极作用的我们称它们为inliers(局内点),ransac做的一件事就是先随机的选取一些点,用这些点去获得一个模型(如果是在做直线拟合的话,这个所谓的模型其实就是斜率),然后用此模型去测试剩余的点,如果测试的数据点在误差允许的范围内,则将该数据点判为局内点,否则判断为局外点。局内点的数目如果达到了某个设定的阈值,则说明此次选取的这些数据点集达到了可以接受的程度,否则继续前面的随机选取点集后所有的步骤,不断重复此过程,直到找到选取的这些数据点集达到了可以接受的程度为止,此时得到的模型便可认为是对数据点的最优模型构建。

图4示出了根据本发明实施例的从v视差图的点中拟合一段直线的方法240的流程图。该方法可以用于图2中的步骤s240。

在步骤s241中,选择二值化后的v视差图中的点中的一组随机子集来进行直线拟合,得到直线模型。

在步骤s242中用得到的直线模型去测试所有的其它数据,如果某个点适用于估计的直线模型,认为它也是局内点,统计局内点的数目。

在步骤s243中,判断局内点的数目是否大于阈值,如果确定的结果为是,则前进到步骤s245,否则前进到步骤s244。

在步骤s244中,判定估计的模型不合理,丢弃该模型,然后前进到步骤s249。

在步骤s245中,判定估计的模型是合理的,然后用所有局内点重新估计模型,并估计局内点与模型的错误率,然后前进到步骤s246。

在步骤s246中,判断当前估计模型的错误率是否小于最佳模型的错误率,如果结果是肯定的,前进到步骤s247,否则前进到步骤s248。

在步骤s247中,用当前估计的模型替代最佳模型,即因为根据步骤s246的判断,当前估计的模型错误率比最佳模型的错误率更低,性能比最佳模型更好,因此取代最佳模型成为新的最佳模型,然后前进到步骤s249。

在步骤s248中,丢弃估计的模型,然后前进到步骤s249。

在步骤s249中,判定是否达到终止条件,如果达到终止条件,则过程终止,否则返回到步骤s241重复执行。这里的终止条件,例如可以为迭代次数达到阈值次数,错误率低于预定阈值等等。

上面参考图4描述了利用ransac方法来从v视差图中提取一段直线的方法,地面不是平面,因此反映在v视差图中为多段连续的分段直线,提取多段的分段直线方法可以例如如下:首先按照例如结合图4所述的方法来提取第一条直线,提取完毕后,将属于第一直线的点从v视差图中去除,然后针对剩下的点按照同样的方法来提取第二条直线,如此反复下去,直到剩余的点的数目小于预定阈值。

回到图2,在步骤s240完成之后,前进到步骤s250。

在步骤s250中,根据多帧图像平滑滤波直线。

如前所述,在专利文献cn103489175b中,对拟合的直线进行了卡尔曼滤波。

发明人经实验分析认为,卡尔曼滤波方法基于处理对象的变化是高斯分布来进行滤波,但实际上路面的变化并不是高斯分布,另外卡尔曼滤波方法运行起来很慢,无法满足自动驾驶领域检测汽车可行驶区域的实时性要求。

根据本发明实施例的路面检测技术设计了符合实时需求的根据多帧图像平滑滤波直线的方法。由于汽车所行驶的路面其坡度不会发生巨变,其变化是均匀缓慢的,所以根据本发明实施例所拟合的直线的变化也是均匀变化的。另一方面由于双目摄像头所得出的视差图具有很多噪声,得到的直线会产生不必要的抖动。为了减少这种抖动以及考虑到上面的拟合得到的直线是均匀缓慢的性质,本发明实施例提出用多帧图像进行平滑滤波,来得到平滑均匀的直线模型。

具体地,可以如下根据多帧图像进行直线的平滑滤波:设定一个时间窗口,假设直线模型表示为ax+by+c=0,对每帧图像得到直线模型参数,针对每个参数对每帧进行累加,当每来一帧新的图像,从累加的参数结果中减去最开始一帧图像的直线模型参数,再加上当前帧图像的直线模型参数,再求平均作为这一帧的直线模型参数。例如,汽车行驶在路面上,当前时刻为tc,新拍摄得到当前图像,此时,即对于固定窗口,从窗口中去掉第一帧,然后加入新来的图像帧,对窗口内图像的直线模型参数来求平均作为新来的图像帧的直线模型参数,也即估计出的路面在v视差图中的数学模型参数;然后随着时间的进行,继续此操作,相当于随着时间进行向前滑动窗口。

在步骤s260中,通过所提取的直线得到原灰度图像中的可行驶区域。

在一个示例中,可以如下通过v视差图中所提取的直线得到原灰度图像中的可行驶区域:针对v视差图中的每一行,选取提取的直线上的视差值为d的点,在视差图对应的行中,比较每一个像素的视差值和d的差值,当差值小于一定阈值时,则将原图对应位置判定为安全的可行驶区域。

在灰度图中得到安全的可行驶区域的信息,能够为辅助驾驶、自动驾驶和无人驾驶提供关键的决策信息,防止碰撞发生,保证安全。

图5示出了根据本发明的另一实施例的实时检测汽车的可行驶区域的汽车可行驶区域实时检测系统300的结构框图。系统300安置在汽车上,用于实时检测汽车的可行驶区域,为汽车的辅助驾驶、自动驾驶和无人驾驶提供关键支撑。

如图5所示,汽车可行驶区域实时检测系统300可以包括:双目相机310、视差图计算部件320、v视差图转换部件330、二值化部件340、ransac直线拟合部件350、多帧图像滤波部件360、原图像可行驶区域确定部件370。

双目相机310配置为拍摄得到沿汽车行进方向的汽车前方的左右两张灰度图像。视差图计算部件320从左右两张灰度图像计算得到视差图。v视差图转换部件330从视差图转换得到v视差图。二值化部件340对v视差图进行二值化。ransac直线拟合部件350使用ransac方法来从二值化后的v视差图的点中拟合得到分段直线。多帧图像滤波部件360根据多帧图像平滑滤波直线。原图像可行驶区域确定部件370通过所提取的直线得到原灰度图像中的可行驶区域。

关于视差图计算部件320、v视差图转换部件330、二值化部件340、ransac直线拟合部件350、多帧图像滤波部件360、原图像可行驶区域确定部件370的功能和具体实现可以参考图2对应步骤的描述,这里不再赘述。

需要说明的是,本文中的双目相机应该做广义理解,任何能够获得左图像和右图像的相机或具有摄像功能的设备都可以视为本文中的双目相机。

关于视差图计算部件320、v视差图转换部件330、二值化部件340、ransac直线拟合部件350、多帧图像滤波部件360、原图像可行驶区域确定部件370也应做广义理解,这些部件可以以软件、固件或硬件或者这些的组合来实现,以及各个部件可以彼此进行组合、次组合或者进一步进行拆分等等,这些都落入本公开的范围。

根据本发明实施例的汽车可行驶区域实时检测方法和系统,可以适应各种各样的路面和路况,对视差图精度要求低,减少前端运算量,抗干扰能力强,提高实时性,这些对于汽车的自动安全驾驶非常关键。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1