1.一种道路车辆阴影特征提取方法,其特征在于包括如下步骤:
步骤1:视频数据的提取与预处理
1-1、从摄像头读取前方车辆的视频数据,对视频数据中的每帧图像进行几何约束限制;
设视频数据中的原图像A的宽和高分别为Aw、Ah,通过几何约束限制对原图像A进行截取,获得截取后的图像B;图像B的宽度为[Aw/4,3×Aw/4],B的高度为[Ah/2-Ah/10,Ah-Ah/10];
1-2、提取HSV通道中的V分量作为单通道图像VImg;
1-3、提取单通道图像VImg的二值化边缘图SImg;
步骤2:阴影阈值计算
2-1、记录单通道图像VImg的宽度MaxWidth与长度MaxHeight,从底部开始扫描单通道图像VImg的每一列,每列上找到一个像素点A,该像素点A使得二值化边缘图SImg在该像素点A的值为0;
2-2、在同一列上,从该像素点A开始逐点向上扫描,计算相邻两个像素点的差值,若其中像素点B存在差值的突变δV,则记录该列上像素点A到像素点B之间的距离highIndex,并将距离highIndex压入高度队列HVector;
2-3、待所有列扫描完成后,保留单通道图像VImg上每列中像素点A到像素点B之间的所有像素,保留的所有像素点形成路面图RoadImg,对路面图RoadImg进行卷积求出均值mean与标准差stdev,并求出阴影阈值threshold:threshold=mean-3×stdev;
步骤3:通过阴影阈值threshold提取影线
3-1、通过阴影阈值threshold,自底向上对单通道图像VImg的每一行进行扫描,具体扫描如下:从左向右扫描单通道图像VImg中的一行像素点,如果扫描到的像素点p的灰度值小于阴影阈值threshold,且像素点p点未被包括到任意一条影线中,则认定像素点p为阴影点,并将像素点p作为一条影线的起始点;
3-2、创建构成影线的点集Cp;
将与像素点p同行且位于像素点p右侧的像素点依次加入点集Cp,直至点集Cp的平均灰度大于阴影阈值threshold或超出该行范围,将点集Cp视为一条影线,记录其左右端点(p,s)与行号,并将该影线放入影线集合SSL中;
所述的s为该影线的终点的像素点;
3-3、对影线的补全,如果像素点s右侧1/5长度范围内存在阴影点i,则将从像素点s到像素点i之间的像素的灰度值设为阴影阈值threshold,重复步骤3-2;
步骤4:对影线集合SSL进行分类,提取基准影线
求出影线集合SSL中每一条影线SL上邻域和下邻域的亮度均值Gb、Gl,并计算Gb与Gl的差值;如果Gb与Gl的差值大于阴影阈值threshold,则认定该条影线SL为阴影区域底层的基准影线BSLine,将其存储于BSL中;如果Gb与Gl的差值小于等于阴影阈值threshold,则认为其为普通影线FSL;
所述的BSL为存储基准影线的数据结构,是一个长度与单通道图像VImg宽度相等的数组;当需要存储基准影线BSLine时,更新基准影线BSLine范围内数组BSL中的元素,该元素记录了基准影线BSLine的行号Row;
所述的基准影线BSLine范围指从该基准影线BSLine的起始点到终点的所有像素点;
步骤5:通过影线融合的方法获取阴影区域
获取与步骤4得到的普通影线FSL相匹配的基准影线BSL;根据普通影线FSL与基准影线BSL位置关系进行融合,从而拟合车辆阴影区域;
5-1、融合普通影线FSL与基准影线BSL,当len(OverRider)>0且HM<10×len(BSL)/9时,则认为普通影线FSL与基准影线BSL之间存在匹配关系,其中len(OverRider)为普通影线FSL与基准影线BSL的重叠区域OverRider的长度,HM为融合影线FSL与基准影线BSL之间的高度差,len(BSL)为与普通影线FSL相匹配的基准影线BSL的长度;设单通道图像VImg宽度为MaxWidth,则融合后所得的基准影线BSL的长度上限阈值L为0.2×MaxWidth;
普通影线FSL与基准影线BSL具体匹配处理如下:
设普通影线FSL的起点为P(Px,Y),终点为S(Sx,Y);
如果(Px,Sx)的区间内不存在基准影线BSL,或普通影线FSL的纵坐标Y与基准影线BSL的纵坐标的高度差HM大于基准影线BSL的长度len(BSL),则普通影线FSL与基准影线BSL无法融合;因此计算普通影线FSL的水平边缘均值Ve与长度len(FSL);若Ve大于50且len(FSL)小于长度上限阈值L,则将普通影线FSL视为一条基准影线BSLine并更新BSL;
否则将普通影线FSL丢弃;
如果(Px,Sx)的区间中存在基准影线BSL,且基准影线BSL的坐标范围未超出区间(Px,Sx),则表示普通影线FSL完全覆盖了基准影线BSL;如果普通影线FSL的长度未超出长度上限阈值L,则更新基准影线BSL的长度,使得基准影线BSL覆盖普通影线FSL;如果在区间(Px,Sx)中存在多条基准影线BSL,则将多条基准影线BSL组合为一条基准影线BSL,并将多条基准影线BSL中高度最大值作为组合后基准影线BSL的纵坐标;
所述的多条基准影线BSL组合为一条基准影线BSL具体如下:
记录多条基准影线BSL中最大的高度值M,然后将所有的基准影线BSL删除,将区间(Px,Sx)中BSL的元素全部置为M,表示一条高度为M,左右边界与普通影线FSL相同的基准影线BSL;
如果普通影线FSL未完全覆盖基准影线BSL,则根据普通影线FSL与基准影线BSL重叠区域的长度len(OverRider)与高度差HM决定是否融合影线;
如len(OverRider)
所述的基准影线BSL的位置信息的更新方法如下:
设基准影线BSL的起点为m(mx,y),终点为n(nx,y);根据普通影线FSL扩展基准影线BSL的左右端点,形成新的基准影线BSL,其起点为M(Mx=min(mx,Px),y),其终点为N(Nx=max(nx,Sx),y)。