1.一种车辆自动驾驶距离判断算法,其特征在于,包括以下步骤:步骤一:获取到的前方车辆图像进行图像预处理,对图像进行高斯滤波处理,即高斯模糊,去除图像的噪声;
步骤二:高斯滤波后的图像进行灰度化处理,得到图像灰度图,去除图像的彩色信息,减少计算量;
步骤三:通过边缘检测sobel算子对图像进行竖直方向的边缘特征提取操作;
步骤四:通过二值化将图像转化成二值图,即像素值只有0或者1的图像;
步骤五:通过对二值图进行闭操作处理,得到若干个矩形框;
步骤六:通过对图像进行求轮廓操作,得到图像中所有的轮廓,其中包含感兴趣区域,即长方形亮区域和黑色区域;
所述步骤六中长方形亮区域和黑色区域划分依据:晴天时,汽车后保险杠、两侧车轮在太阳照射下在地上的影子会形成一个长方形的黑色区域,汽车后保险杠、两侧车轮与地面在竖直平面内形成长方形亮区域;
步骤七:通过对轮廓求最小外接矩形,根据感兴趣区域ROI的长宽比进行筛选,确定长方形亮区域和黑色区域;
步骤八:根据灰度值大小从而分别确定出长方形亮区域和黑色区域;
黑色区域的灰度值小,而亮色区域的灰度值大,根据这个确定出黑色区域和亮色区域。
2.根据权利要求1所述的车辆自动驾驶距离判断算法,其特征在于:还包括步骤九:通过收集大量的长方形亮区域和黑色区域不同大小、时间的样本图像,以这些样本图像作为输入、每个图像所对应的车距作为输出,进行BP神经网络训练,得到图像对应的车距判断的BP神经网络模型。
3.根据权利要求2所述的车辆自动驾驶距离判断算法,其特征在于:还包括步骤十:采集图像数据对模型进行测试,根据模型对图像所判断的距离与实际测量到的距离进行比对,纠正,不断增加新的样本数据,不断迭代升级模型,提升模型的判断精度。
4.根据权利要求1所述的车辆自动驾驶距离判断算法,其特征在于:所述步骤一中高斯滤波的具体操作是:用一个模板扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值,对均值滤波和方框滤波来说,其邻域内每个像素的权重是相等的;而在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和;
一维高斯分布公式如下:
二维高斯分布公式如下:
以模板的中心位置为坐标原点进行取样,将各个位置的坐标带入到高斯函数G中,得到的每个值按照位置排列,得到模板。
5.根据权利要求1所述的车辆自动驾驶距离判断算法,其特征在于:所述步骤二中图像进行灰度化处理的方式为:f(x,y)=0.3R(x,y)+0.59G(x,y)+0.11B(x,y) (2‑1)其中:f(x,y)是灰度化后像素点的值;
R(x,y)、G(x,y)、B(x,y)分别是红、绿、蓝三个颜色通道的像素值;
红、绿、蓝三个颜色通道的像素值乘以对应的系数,最后计算得到这个像素点的灰度值。
6.根据权利要求1所述的车辆自动驾驶距离判断算法,其特征在于:所述步骤三中sobel算子主要用于获得数字图像的一阶梯度,常见的应用是对图像进行边缘检测提取;
sobel算子使用两个3*3的矩阵算子去和原始图像作卷积,分别得到横向G(x)和纵向G(y)的梯度值,如果梯度值大于某一个阈值,则认为该点为边缘点;
Sobel算子在x,y两个方向求导:
最后的结果为:
只需要提取竖直方向的边缘,因此只需计算Gy即可,就可提取得到图像的竖直边缘。
7.根据权利要求1所述的车辆自动驾驶距离判断算法,其特征在于:所述步骤四中图像二值化就是将图像上像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程;
二值图像每个像素只有两种取值:要么纯黑即0,要么纯白即1;
其中:f(i)是图像;
i是像素点的像素值;
T是判断阈值;
图像二值化的方法选择最大类间方差法OTSU,找到一个阈值使得大于该阈值和小于该阈值的两部分像素的方差和最大,目的是为了去掉尽可能多的信息,只保留最基本的信息;
对于图像I(x,y)属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0,背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1,图像的总平均灰度记为μ,类间方差记为g;
假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有:ω0=N0/M×N
ω1=N1/M×N
N0+N1=M×N
ω0+ω1=1
μ=ω0*μ0+ω1*μ1 (4‑2)
g=ω0(μ0‑μ)^2+ω1(μ1‑μ)^2 (4‑3)将式(4‑2)代入式(4‑3),得到等价公式:g=ω0ω1(μ0‑μ1)^2 (4‑4)采用遍历的方法得到使类间方差g最大的阈值T,即为所求。
8.根据权利要求1所述的车辆自动驾驶距离判断算法,其特征在于:所述步骤五的具体步骤如下:对图像先膨胀后腐蚀的过程称为闭运算,先进行膨胀以填充连通域内的小型空洞,扩大连通域的边界,连接邻近的两个连通域,之后通过腐蚀运算减少由膨胀运算引起的连通域边界的扩大及面积的增加。具有填充物体内细小空洞,连接邻近物体和平滑边界的作用,其数学表达式如下:dst=close(src,element)=erode(dilate(src,element)) (5‑1)。
9.根据权利要求2所述的车辆自动驾驶距离判断算法,其特征在于:所述步骤九中BP神经网络训练具体步骤如下:BP网络采用的传递函数是非线性变换函数——Sigmoid函数,其特点是函数本身及其导数都是连续的,因而在处理上十分方便,单极性S型函数定义如下:‑x
f(x)=1/(1+e ) (9‑1)
使用S型激活函数时,输入:
net=x1w1+x2w2+Λ+xnwn输出为:
net
y=f(net)=1/(1+e‑ ) (9‑2)则,输出y的导数为:
net net 2
F′(net)=1/(1+e‑ )‑1/(1+e‑ ) =y(1‑y) (9‑3)第一步,网络初始化,给各个连接权值赋一个区间(‑1,1)内的随机数,设定误差函数e,给定计算精度εε和学习次数M;
第二步,算计选取第k个输入样本以及对应的期望输出:x(k)=(x1k,x2k,K,xnk)d(k)=(d1k,d2k,K,dqk)第三步,计算隐含层各神经元的输入和输出:hoh(k)=f(hih(k)) h1,2,...pyoo(k)=f(yio(k)) o=1,2,...p第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数:第五步,利用输出层各神经元的δo(k)和隐含层各神经元的输出来修正连接权值who(k)第六步,利用隐含层各神经元的δh(k)和输入层各神经元的输入来修正连接权值:第七步,计算全局误差
第八步,判断网络误差是否满足要求,当误差大道预设精度或者学习次数大于设定的最大值,则结束算法,否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。