车道线边缘特征点的提取方法及装置
技术领域
本发明涉及计算机领域,特别涉及一种车道线边缘特征点的提取方法及装置。
背景技术
随着交通的发展和汽车性能的提高,汽车行驶速度也相应地加快,因而,汽车的行车安全越来越为人们所重视。为了保证汽车的行车安全,在汽车行驶过程中需要检测车辆前方道路上的车道线,而检测车道线的关键因素为车道线边缘特征点的提取,所以需要准确地进行车道线边缘特征点的提取。
目前车道线边缘特征点提取的过程具体为:将车载视觉系统采集到的彩色图像经灰度化转换为灰度图像,对转换后的灰度图像进行中值滤波处理。将中值滤波处理后的灰度图像进行区域划分,得到感兴趣区域,该感兴趣区域中包括该灰度图像中的左车道线和右车道线。根据该感兴趣区域中的每个像素点的灰度值,构成m×n的图像矩阵。对于该图像矩阵中的每一个像素点x(i,j),当j≦c时,计算像素点x(i,j)与像素点x(i,j+c)之间的像素点的灰度值的平均值Vmean,如果像素点x(i,j)的灰度值大于Vmean+T,则将该像素点x(i,j)的灰度值置为255,否则,将该像素点的灰度值置为0。当c<j<n-c时,计算像素点x(i,j-c)与像素点x(i,j)之间的像素点的灰度值的平均值VmeanL,以及计算像素点x(i,j)与像素点x(i,j+c)之间的像素点的灰度值的平均值VmeanR,如果像素点x(i,j)的灰度值大于max{VmeanL+T,VmeanR+T},则将该像素点x(i,j)的灰度值置为255,否则,将该像素点的灰度值置为0。当j≥n-c时,计算像素点x(i,j-c)与像素点x(i,j)之间的像素点的灰度值的平均值VmeanL1,如果像素点x(i,j)的灰度值大于VmeanL1+T,则将该像素点x(i,j)的灰度值置为255,否则,将该像素点的灰度值置为0。将该图像矩阵中的每个像素点根据上述步骤置为255或者置为0之后,将像素点的灰度值为0的像素点确定为车道线边缘特征点。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
上述方法是以图像矩阵为最小处理单元,且对于该图像矩阵中的每个像素点均按照上述方法进行处理。当该图像矩阵的行数和列数较大时,会导致计算量较大,以及需要的存储空间较大。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种车道线边缘特征点的提取方法及装置。所述技术方案如下:
一方面,提供了一种车道线边缘特征点的提取方法,所述方法包括:
从车辆前方道路的灰度图像中获取感兴趣区域;
根据所述感兴趣区域,构造至少一个图像矩阵,每个图像矩阵包括多个第一行向量;
对所述多个第一行向量分别进行图像边缘增强与二值化处理,得到多个第二行向量;
根据所述多个第二行向量,从所述感兴趣区域内提取车道线边缘特征点。
其中,所述对所述多个第一行向量分别进行图像边缘增强与二值化处理,得到多个第二行向量,包括:
对于所述多个第一行向量中的每一个第一行向量,获取与所述第一行向量相邻的至少一个第一行向量;
将所述第一行向量和所述获取的第一行向量进行相加,得到第三行向量;
将所述第三行向量相邻的至少一个第三行向量相减并取差值的绝对值,得到第四行向量;
对所述第四行向量包括的元素进行二值化处理,得到第二行向量。
进一步地,所述获取与所述第一行向量相邻的至少一个第一行向量,包括:
如果所述第一行向量为所述图像矩阵中的第一个第一行向量,则获取所述第一行向量下方相邻的第一行向量;
如果所述第一行向量为所述图像矩阵中的最后一个第一行向量,则获取所述第一行向量上方相邻的第一行向量;
如果所述第一行向量为所述第一个第一行向量与所述最后一个第一行向量之间的第一行向量,则获取与所述第一行向量上下相邻的两个第一行向量。
其中,所述对所述第四行向量包括的元素进行二值化处理,得到第二行向量,包括:
将所述第四行向量包括的元素进行相加,得到第一数值;
计算所述第四行向量包括的元素的平均值,以及计算所述第一数值与所述平均值的比值;
根据所述比值和所述平均值,计算阈值;
根据所述阈值,将所述第四行向量包括的元素进行二值化处理,得到第二行向量。
优选地,所述根据所述阈值,将所述第四行向量包括的元素进行二值化处理,得到第二行向量,包括:
对于所述第四行向量中的每一个元素,如果所述元素大于所述阈值,则将所述元素设置为第二数值,否则,将所述元素设置为第三数值。
其中,所述根据所述多个第二行向量,从所述感兴趣区域内提取车道线边缘特征点,包括:
如果根据所述感兴趣区域构成一个图像矩阵,则将所述多个第二行向量构成的矩阵进行左右平均划分,得到第一子矩阵和第二子矩阵,所述第一子矩阵对应第一子区域,所述第二子矩阵对应第二子区域,所述第一子区域和所述第二子区域构成所述感兴趣区域;
根据所述第一子矩阵包括的多个第五行向量,从所述第一子区域内提取车道线边缘特征点;
根据所述第二子矩阵包括的多个第六行向量,从所述第二子区域内提取车道线边缘特征点。
另一方面,提供了一种车道线边缘特征点的提取装置,所述装置包括:
获取模块,用于从车辆前方道路的灰度图像中获取感兴趣区域;
构造模块,用于根据所述感兴趣区域,构造至少一个图像矩阵,每个图像矩阵包括多个第一行向量;
处理模块,用于对所述多个第一行向量分别进行图像边缘增强与二值化处理,得到多个第二行向量;
提取模块,用于根据所述多个第二行向量,从所述感兴趣区域内提取车道线边缘特征点。
其中,所述处理模块包括:
获取单元,用于对于所述多个第一行向量中的每一个第一行向量,获取与所述第一行向量相邻的至少一个第一行向量;
相加单元,用于将所述第一行向量和所述获取的第一行向量进行相加,得到第三行向量;
相减单元,用于将所述第三行向量相邻的至少一个第三行向量相减并取差值的绝对值,得到第四行向量;
处理单元,用于对所述第四行向量包括的元素进行二值化处理,得到第二行向量。
进一步地,所述获取单元包括:
第一获取子单元,用于如果所述第一行向量为所述图像矩阵中的第一个第一行向量,则获取所述第一行向量下方相邻的第一行向量;
第二获取子单元,用于如果所述第一行向量为所述图像矩阵中的最后一个第一行向量,则获取所述第一行向量上方相邻的第一行向量;
第三获取子单元,用于如果所述第一行向量为所述第一个第一行向量与所述最后一个第一行向量之间的第一行向量,则获取与所述第一行向量上下相邻的两个第一行向量。
其中,所述处理单元包括:
相加子单元,用于将所述第四行向量包括的元素进行相加,得到第一数值;
第一计算子单元,用于计算所述第四行向量包括的元素的平均值,以及计算所述第一数值与所述平均值的比值;
第二计算子单元,用于根据所述比值和所述平均值,计算阈值;
处理子单元,用于根据所述阈值,将所述第四行向量包括的元素进行二值化处理,得到第二行向量。
优选地,所述处理子单元,具体用于:
对于所述第四行向量中的每一个元素,如果所述元素大于所述阈值,则将所述元素设置为第二数值,否则,将所述元素设置为第三数值。
其中,所述提取模块包括:
划分单元,用于如果根据所述感兴趣区域构成一个图像矩阵,则将所述多个第二行向量构成的矩阵进行左右平均划分,得到第一子矩阵和第二子矩阵,所述第一子矩阵对应第一子区域,所述第二子矩阵对应第二子区域,所述第一子区域和所述第二子区域构成所述感兴趣区域;
第一提取单元,用于根据所述第一子矩阵包括的多个第五行向量,从所述第一子区域内提取车道线边缘特征点;
第二提取单元,用于根据所述第二子矩阵包括的多个第六行向量,从所述第二子区域内提取车道线边缘特征点。
在本发明实施例中,从车辆前方道路的灰度图像中获取感兴趣区域,根据该感兴趣区域构造至少一个图像矩阵。以行向量为单位,对该图像矩阵包括的每个第一行向量进行图像增强与二值化处理,得到第二行向量,减少了对第一行向量进行变换的计算量,减少了处理时间,且减少了需要的存储空间。并且以行向量为单位,根据第二行向量,从该感兴趣区域中提取车道线边缘特征点,更进一步地减少了提取车道线边缘特征点的计算量,进一步地减少了处理时间,进一步地减少了需要的存储空间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种车道线边缘特征点的提取方法流程图;
图2是本发明实施例二提供的一种车道线边缘特征点的提取方法流程图;
图3是本发明实施例二和本发明实施例三提供的一种灰度图像示意图;
图4是本发明实施例二和本发明实施例三提供的一种提取的边缘特征点的图像示意图;
图5是本发明实施例三提供的一种车道线边缘特征点的提取方法流程图;
图6是本发明实施例四提供的一种车道线边缘特征点的提取装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
图1是本发明实施例提供的一种车道线边缘特征点的提取方法流程图,参见图1,该方法包括:
步骤101:从车辆前方道路的灰度图像中获取感兴趣区域;
步骤102:根据该感兴趣区域,构造至少一个图像矩阵,每个图像矩阵包括多个第一行向量;
步骤103:对该多个第一行向量分别进行图像边缘增强与二值化处理,得到多个第二行向量;
步骤104:根据该多个第二行向量,从感兴趣区域内提取车道线边缘特征点。
其中,对多个第一行向量分别进行图像边缘增强与二值化处理,得到多个第二行向量,包括:
对于多个第一行向量中的每一个第一行向量,获取与该第一行向量相邻的至少一个第一行向量;
将该第一行向量和获取的第一行向量进行相加,得到第三行向量;
将该第三行向量相邻的至少一个第三行向量相减并取差值的绝对值,得到第四行向量;
对第四行向量包括的元素进行二值化处理,得到第二行向量。
进一步地,获取与该第一行向量相邻的至少一个第一行向量,包括:
如果该第一行向量为该图像矩阵中的第一个第一行向量,则获取该第一行向量下方相邻的第一行向量;
如果该第一行向量为该图像矩阵中的最后一个第一行向量,则获取该第一行向量上方相邻的第一行向量;
如果该第一行向量为第一个第一行向量与最后一个第一行向量之间的第一行向量,则获取与该第一行向量上下相邻的两个第一行向量。
其中,对第四行向量包括的元素进行二值化处理,得到第二行向量,包括:
将第四行向量包括的元素进行相加,得到第一数值;
计算第四行向量包括的元素的平均值,以及计算第一数值与该平均值的比值;
根据该比值和该平均值,计算阈值;
根据该阈值,将第四行向量包括的元素进行二值化处理,得到第二行向量。
优选地,根据该阈值,将该第四行向量包括的元素进行二值化处理,得到第二行向量,包括:
对于该第四行向量中的每一个元素,如果该元素大于所述阈值,则将该元素设置为第二数值,否则,将该元素设置为第三数值。
其中,根据该多个第二行向量,从感兴趣区域内提取车道线边缘特征点,包括:
如果根据该感兴趣区域构成一个图像矩阵,则将该多个第二行向量构成的矩阵进行左右平均划分,得到第一子矩阵和第二子矩阵,第一子矩阵对应第一子区域,第二子矩阵对应第二子区域,第一子区域和第二子区域构成感兴趣区域;
根据第一子矩阵包括的多个第五行向量,从第一子区域内提取车道线边缘特征点;
根据第二子矩阵包括的多个第六行向量,从第二子区域内提取车道线边缘特征点。
在本发明实施例中,从车辆前方道路的灰度图像中获取感兴趣区域,根据该感兴趣区域构造至少一个图像矩阵。以行向量为单位,对该图像矩阵包括的每个第一行向量进行图像增强与二值化处理,得到第二行向量,减少了对第一行向量进行变换的计算量,减少了处理时间,且减少了需要的存储空间。并且以行向量为单位,根据第二行向量,从该感兴趣区域中提取车道线边缘特征点,更进一步地减少了提取车道线边缘特征点的计算量,进一步地减少了处理时间,进一步地减少了需要的存储空间。
实施例二
图2是本发明实施例提供的一种车道线边缘特征点的提取方法流程图,参见图2,该方法包括:
步骤201:从车辆前方道路的灰度图像中获取感兴趣区域。
具体地,通过安装在车辆内部或者外部的摄像机,采集车辆前方道路的彩色图像,将采集到的彩色图像经灰度化转换为灰度图像。根据该摄像机的内部参数和外部参数,计算地平面消失线。根据该地平面消失线,从该灰度图像中获取感兴趣区域。
其中,将采集到的彩色图像经灰度化转换为灰度图像的具体操作可以为:根据采集到的彩色图像中的每个像素点的像素值的R、G和B三个分量,按照如下公式(1)计算灰度图像中的每个像素点的灰度值,进而将采集到的彩色图像转换为灰度图像;
Vgray=0.30R+0.59G+0.11B (1)
其中,在上述公式(1)中,Vgray为灰度图像中的像素点的灰度值,R、G、B为彩色图像中像素点的像素值在RGB彩色模型中的三个分量。
其中,根据该摄像机的内部参数和外部参数,计算地平面消失线的具体操作可以为:
根据摄像头成像理论,确定世界坐标系任意一点的坐标和该世界坐标系中该点在该灰度图像上对应的一点的坐标之间的函数关系,该函数关系如下所示:
其中,在上述函数关系(2)中,Xw、Yw、Zw是世界坐标系任意一点的坐标,u、v是该世界坐标系中该点在该灰度图像上对应的一点的坐标,k是一个系数,A[R t]是已知的摄像机内外部参数。
在地平面Zw=0上无限远处任意一点的世界坐标可写为[X,+∞,0]T,将[X,+∞,0]T带入上述函数关系式中,得到一个具有四个未知量u,v,X,k,三个方程的线性方程组。因此可以解算出一个u,v的线性关系u=av+b,而该式即是图像中的地平面消失线。该地平面消失线的含义为无限远处的地平面在该灰度图像中的映射。
其中,根据该地平面消失线,从该灰度图像中获取感兴趣区域的具体操作可以为:根据该地平面消失线,将该灰度图像划分为两部分,将该灰度图像中该地平面消失线以下的部分确定为感兴趣区域。例如,如图3所示,图3为根据车辆上安装的摄像机采集到的彩色图像转换的灰度图像。在图3中,根据地平面消失线将该灰度图像划分为两个部分,一部分为天空的图像,另一部分为地面的图像。将地面的图像确定为感兴趣区域。
其中,摄像机的内部参数包括主点坐标、焦距等参数,摄像机的外部参数包括摄像机的位置、姿态等参数。
在图像处理领域中,感兴趣区域是指从图像中选择的一个局部图像区域。感兴趣区域是图像分析所关注的重点,从感兴趣区域中提取车道线边缘特征点可以减少处理时间,以及增加提取的车道线边缘特征点的精度。
步骤202:根据获取的感兴趣区域,构造两个图像矩阵,每个图像矩阵包括多个第一行向量。
具体地,将获取的感兴趣区域进行左右平均划分,得到两个子区域。根据该两个子区域内包括的像素点的灰度值,构造两个图像矩阵。
其中,每个子区域内均包括多行像素点,且每行像素点包括多个像素点。根据两个子区域内的多行像素点的灰度值,分别构造多个第一行向量。将两个子区域内的多行像素点的灰度值构造的多个第一行向量组成两个图像矩阵。每个图像矩阵中包括的第一行向量与每个子区域内包括的多行像素点的灰度值一一对应。
其中,根据两个子区域内的多行像素点的灰度值,分别构造多个第一行向量的具体操作可以为:将两个子区域内的多行像素点的灰度值分别填充到对应的第一行向量中,得到多个第一行向量。
例如,获取的感兴趣区域内包括4行像素点,且每行像素点中包括8个像素点。假如,第一行像素点的灰度值为0、0、210、240、220、235、232和224,第二行像素点的灰度值为243、0、0、0、200、213、142和153,第三行像素点的灰度值为232、0、0、0、180、167、125和154,第四行像素点的灰度值为124、198、0、0、158、148、194和210。根据感兴趣区域内的4行像素点的灰度值,构造的4个第一行向量分别为:[0 0 210 240 220 235 232 224]、[243 0 00200 213 142 153]、[232 0 0 0 180 167 125 154]和[124 198 0 0 158 148 194 210]。
根据该4个第一行向量组成的图像矩阵为
步骤203:对该两个图像矩阵包括的多个第一行向量分别进行图像边缘增强与二值化处理,得到两个图像矩阵对应的多个第二行向量。
具体地,对该两个图像矩阵中的每一个图像矩阵对应的多个第二行向量,本步骤可以分为如下(1)-(8)的步骤来实现,包括:
(1)、对于该多个第一行向量中的每一个第一行向量,获取与该第一行向量相邻的至少一个第一行向量;
具体地,如果该第一行向量为该图像矩阵中的第一个第一行向量,则获取该第一行向量下方相邻的第一行向量;如果该第一行向量为该图像矩阵中的最后一个第一行向量,则获取该第一行向量上方相邻的第一行向量;如果该第一行向量为第一个第一行向量与最后一个第一行向量之间的第一行向量,则获取与该第一行向量上下相邻的两个第一行向量。
可选地,如果该第一行向量为该图像矩阵中的第一个第一行向量或者最后一个第一行向量,则不获取与该第一行向量相邻的第一行向量。
(2)、将该第一行向量和获取的第一行向量进行相加,得到第三行向量;
具体地,如果该第一行向量为该图像矩阵中的第一个第一行向量,则将两倍的该第一行向量和获取的第一行向量进行相加,得到第三行向量;或者将该第一行向量和两倍的获取的第一行向量进行相加,得到第三行向量。如果该第一行向量为该图像矩阵中的最后一个第一行向量,则将两倍的该第一行向量和获取的第一行向量进行相加,得到第三行向量;或者将该第一行向量和两倍的获取的第一行向量进行相加,得到第三行向量。如果该第一行向量为第一个第一行向量与最后一个第一行向量之间的第一行向量,则将该第一行向量和获取的两个第一行向量中对应的元素进行相加,得到第三行向量。
其中,如果没有获取该第一行向量相邻的第一行向量,则将该第一行向量确定为第三行向量。
例如,第一行向量为[243 0 0 0 200 213 142 153],与该第一行向量上下相邻的两个第一行向量分别为[0 0 210 240 220 235 232 224]和[232 0 0 0 180 167125154],则将第一行向量[243 0 0 0 200 213 142 153]与该相邻的两个第一行向量[00210 240 220 235 232 224]和[232 0 0 0 180 167 125 154]进行相加,得到的第三行向量为[475 0 210 240 600 615 499 531]。
(3)、将第三行向量相邻的至少一个第三行向量相减并取差值的绝对值,得到第四行向量;
具体地,如果该第三行向量为第一个第三行向量或者最后一个第三行向量,则将该第三行向量确定为第四行向量。如果该第三行向量为第一个第三行向量与最后一个第三行向量之间的第三行向量,则将该第三行向量上下相邻的两个第三行向量相减并取差值的绝对值,得到第四行向量。
可选地,如果该第三行向量为第一个第三行向量,也可以将该第三行向量下方相邻的第三行向量确定为第四行向量。如果该第三行向量为最后一个第三行向量时,也可以将该第三行向量上方相邻的第三行向量确定为第四行向量。
在本发明实施例中,以行向量为单位按照上述步骤对每个第一行向量进行变换,得到每个第一行向量对应的第四行向量,只需按照上述步骤执行一次即可。当以第一行向量中包括的每个元素为单位进行变换,需要按照上述步骤对每个元素都执行一次。所以本发明实施例以行向量为单位进行变换的方法节省了对第一行向量进行变换的步骤,降低了对第一行向量进行变换的计算量,进而减小了处理时间。并且以行向量为单位对每个第一行向量为单位进行变换时,只需将变换需要的中间数据存储一次即可,当以第一行向量中包括的每个元素为单元进行变换时,需要将每个元素需要的中间数据都存储,且有的中间数据是重复存储的,所以本发明实施例以行向量为单位进行变换时,需要的存储空间较少。
(4)、将第四行向量包括的元素进行相加,得到第一数值;
(5)、计算第四行向量包括的元素的平均值,以及计算第一数值与该平均值的比值;
具体地,将第一数值除以第四行向量包括的元素的个数,得到第四行向量包括的元素的平均值。将第一数值除以该平均值,得到第一数值与该平均值之间的比值。
(6)、根据该比值和该平均值,计算阈值;
具体地,当该比值大于第一预设数值时,则将该平均值乘以6,得到该阈值。当该比值小于或等于第一预设数值且该比值大于第二预设数值时,将该平均值乘以4,得到该阈值。当该比值小于或等于第二预设数值时,将该平均值乘以10,得到该阈值。
例如,第一预设数值可以为12,第二预设数值可以为7。
(7)、根据该阈值,将第四行向量包括的元素进行二值化处理,得到第二行向量;
具体地,对于第四行向量中的每一个元素,如果该元素大于该阈值,则将该元素设置为第二数值,否则,将该元素设置为第三数值。
例如,第二数值可以为1,第三数值可以为0。
(8)、根据上述(1)-(7)的步骤,对该图像矩阵中的其他第一行向量进行图像边缘增强与二值化处理,得到多个第二行向量。
其中,在本发明实施例中,以行向量为单位进行处理时,只需针对该行向量计算一个阈值,根据该一个阈值就可以对第四行向量进行二值化处理,降低了对第四行向量进行二值化的计算量,减少了处理时间。
在车辆主动安全产品中,可能存在硬件平台低成本的要求,所以导致资源有限的约束,而本发明提供的方法计算量低,且需要的存储空间较小,可以广泛适用于硬件平台低成本要求的车辆主动安全产品中。
步骤204:根据该两个图像矩阵对应的多个第二行向量,分别从该两个子区域内提取车道线边缘特征点。
其中,为了描述方便,在本发明实施例中,将感兴趣区域划分的两个子区域称为第一子区域和第二子区域,第一子区域为该感兴趣区域中左边的子区域,第二子区域为该感兴趣区域中右边的子区域。
其中,对于第一子区域,根据第一子区域对应的图像矩阵对应的多个第二行向量,从第一子区域中提取车道线边缘特征点的步骤可以为如下(1)-(15)的步骤,包括:
(1)、对于该多个第二行向量中的每一个第二行向量,令Lbinary(i,j)为该第二行向量中的第j个元素,j的初值为1,且j小于或等于该第二行向量的列数;
(2)、获取该第二行向量中的第j个元素,并将变量start设置为j;
(3)、如果第j个元素等于第三数值,则j=j+1,返回步骤(2);
(4)、如果第j个元素等于第二数值,则j=j+1,获取该第二行向量中的第j个元素,执行步骤(5);
(5)、如果第j个元素等于第二数值,则j=j+1,获取该第二行向量中的第j个元素,返回本步骤;
(6)、如果第j个元素等于第三数值,则j=j+1,获取该第二行向量中的第j个元素,执行步骤(7);
(7)、判断第j个元素是否等于第三数值,如果第j个元素等于第三数值,则j=j+1,执行步骤(8),如果第j个元素等于第二数值,则执行步骤(11);
(8)、判断j-start是否大于30*i/m,m为该图像矩阵的行数,i为该第二行向量所在行的编号;
(9)、如果j-start大于30*i/m,则返回步骤(2);
(10)、如果j-start小于或等于30*i/m,则获取该第二行向量中的第j个元素,返回步骤(7);
(11)、j=j+1,并获取该第二行向量中的第j个元素,执行步骤(12);
(12)、如果第j个元素等于第二数值,则j=j+1,返回本步骤;
(13)、如果第j个元素等于第三数值,则判断j-start是否大于15*i/m;
(14)、如果j-start大于15*i/m,则将Lbinary(i,j)对应的像素点确定为车道线边缘特征点,否则,返回步骤(2)。
进一步地,当将Lbinary(i,j)对应的像素点确定为车道线边缘特征点之后,如果Lbinary(i,j)中的j小于该第二行向量的行数,则可以继续根据上述步骤(2)-(14)确定车道线边缘特征点。
(15)、对于该多个第二行向量中的其他第二行向量,按照上述(1)-(14)的步骤,从第一子区域中提取车道线边缘特征点。
其中,根据上述(1)-(15)的步骤从第一子区域中提取的车道线边缘特征点为该车道线内侧的边缘特征点,即车道线的右侧边缘的边缘特征点,如图4所示。
其中,其中,对于第二子区域,根据该第二子区域对应的图像矩阵对应的多个第二行向量,从第二子区域中提取车道线边缘特征点的步骤可以为如下(1)-(15)的步骤,包括:
(1)、对于该多个第二行向量中的每一个第二行向量,令Lbinary(i,j)为该第二行向量中的第j个元素,j的初值为1,且j小于或等于该第二行向量的列数;
(2)、获取该第二行向量中的第j个元素,并将变量start设置为j;
(3)、如果第j个元素等于第三数值,则j=j+1,返回步骤(2);
(4)、如果第j个元素等于第二数值,则j=j+1,获取该第二行向量中的第j个元素,执行步骤(5);
(5)、如果第j个元素等于第二数值,则j=j+1,获取该第二行向量中的第j个元素,返回本步骤;
(6)、如果第j个元素等于第三数值,则j=j+1,获取该第二行向量中的第j个元素,执行步骤(7);
(7)、判断第j个元素是否等于第三数值,如果第j个元素等于第三数值,则j=j+1,执行步骤(8),如果第j个元素等于第二数值,则执行步骤(11);
(8)、判断j-start是否大于30*i/m,m为该图像矩阵的行数,i为该第二行向量所在行的编号;
(9)、如果j-start大于30*i/m,则返回步骤(2);
(10)、如果j-start小于或等于30*i/m,则获取该第二行向量中的第j个元素,返回步骤(7);
(11)、j=j+1,并获取该第二行向量中的第j个元素,执行步骤(12);
(12)、如果第j个元素等于第二数值,则j=j+1,返回本步骤;
(13)、如果第j个元素等于第三数值,则判断j-start是否大于15*i/m;
(14)、如果j-start大于15*i/m,则将Lbinary(i,start)对应的像素点确定为车道线边缘特征点,否则,返回步骤(2)。
进一步地,当将Lbinary(i,start)对应的像素点确定为车道线边缘特征点之后,如果Lbinary(i,start)中的start小于该第二行向量的行数,则可以继续根据上述步骤(2)-(14)确定车道线边缘特征点。
(15)、对于该多个第二行向量中的其他第二行向量,按照上述(1)-(14)的步骤,从第二子区域中提取车道线边缘特征点。
其中,根据上述(1)-(15)的步骤从第二子区域中提取的车道线边缘特征点为该车道线内侧的边缘特征点,即车道线的左侧边缘的边缘特征点,如图4所示。
其中,根据步骤203对该图像矩阵包括的多个第一行向量进行图像增强与二值化处理之后,得到多个第二行向量,再根据步骤204对该多个第二行向量中的元素进一步地判断,以提取车道线边缘特征点,提高了提取车道线边缘特征点的准确率。
其中,在车辆运行过程中,车辆上安装的摄像机可以实时地采集车辆前方道路的彩色图像,利用本发明实施例提供的方法也可以实时地对采集到的彩色图像进行处理,以提取该彩色图像中的车道线边缘特征点。
在本发明实施例中,从车辆前方道路的灰度图像中获取感兴趣区域,将该感兴趣区域划分为两个子区域,根据该两个子区域分别构造一个图像矩阵。以行向量为单位,对该图像矩阵包括的每个第一行向量进行图像增强与二值化处理,得到第二行向量,减少了对第一行向量进行变换的计算量,减少了处理时间,且减少了需要的存储空间。并且以行向量为单位,根据第二行向量,从该两个子区域中提取车道线边缘特征点,更进一步地减少了提取车道线边缘特征点的计算量,进一步地减少了处理时间,进一步地减少了需要的存储空间。
实施例三
图5是本发明实施例提供的一种车道线边缘特征点的提取方法流程图,参见图5,该方法包括:
步骤301:从车辆前方道路的灰度图像中获取感兴趣区域。
具体地,通过安装在车辆内部或者外部的摄像机,采集车辆前方道路的彩色图像,将采集到的彩色图像经灰度化转换为灰度图像。根据该摄像机的内部参数和外部参数,计算地平面消失线。根据该地平面消失线,从该灰度图像中获取感兴趣区域。
其中,将采集到的彩色图像经灰度化转换为灰度图像的具体操作可以为:根据采集到的彩色图像中的每个像素点的像素值的R、G和B三个分量,按照如下公式(1)计算灰度图像中的每个像素点的灰度值,进而将采集到的彩色图像转换为灰度图像;
Vgray=0.30R+0.59G+0.11B (1)
其中,在上述公式(1)中,Vgray为灰度图像中的像素点的灰度值,R、G、B为彩色图像中像素点的像素值在RGB彩色模型中的三个分量。
其中,根据该摄像机的内部参数和外部参数,计算地平面消失线的具体操作可以为:
根据摄像头成像理论,确定世界坐标系任意一点的坐标和该世界坐标系中该点在该灰度图像上对应的一点的坐标之间的函数关系,该函数关系如下所示:
其中,在上述函数关系(2)中,Xw、Yw、Zw是世界坐标系任意一点的坐标,u、v是该世界坐标系中该点在该灰度图像上对应的一点的坐标,k是一个系数,A[R t]是已知的摄像机内外部参数。
在地平面Zw=0上无限远处任意一点的世界坐标可写为[X,+∞,0]T,将[X,+∞,0]T带入上述函数关系式中,得到一个具有四个未知量u,v,X,k,三个方程的线性方程组。因此可以解算出一个u,v的线性关系u=av+b,而该式即是图像中的地平面消失线。该地平面消失线的含义为无限远处的地平面在该灰度图像中的映射。
其中,根据该地平面消失线,从该灰度图像中获取感兴趣区域的具体操作可以为:根据该地平面消失线,将该灰度图像划分为两部分,将该灰度图像中该地平面消失线以下的部分确定为感兴趣区域。例如,如图3所示,图3为根据车辆上安装的摄像机采集到的彩色图像转换的灰度图像。在图3中,根据地平面消失线将该灰度图像划分为两个部分,一部分为天空的图像,另一部分为地面的图像。将地面的图像确定为感兴趣区域。
其中,摄像机的内部参数包括主点坐标、焦距等参数,摄像机的外部参数包括摄像机的位置、姿态等参数。
在图像处理领域中,感兴趣区域是指从图像中选择的一个局部图像区域。感兴趣区域是图像分析所关注的重点,从感兴趣区域中提取车道线边缘特征点可以减少处理时间,以及增加提取的车道线边缘特征点的精度。
步骤302:根据获取的感兴趣区域,构造一个图像矩阵,该图像矩阵包括多个第一行向量。
其中,获取的感兴趣区域内包括多行像素点,且每行像素点包括多个像素点。根据获取的感兴趣区域内的多行像素点的灰度值,构造多个第一行向量。将构造的多个第一行向量组成图像矩阵。图像矩阵中包括的第一行向量与该感兴趣区域内包括的多行像素点的灰度值一一对应。
其中,根据获取的感兴趣区域内的多行像素点的灰度值,构造多个第一行向量的具体操作可以为:将获取的感兴趣区域内的多行像素点的灰度值分别填充到对应的第一行向量中,得到多个第一行向量。
例如,获取的感兴趣区域内包括4行像素点,且每行像素点中包括8个像素点。假如,第一行像素点的灰度值为0、0、210、240、220、235、232和224,第二行像素点的灰度值为243、0、0、0、200、213、142和153,第三行像素点的灰度值为232、0、0、0、180、167、125和154,第四行像素点的灰度值为124、198、0、0、158、148、194和210。根据感兴趣区域内的4行像素点的灰度值,构造的4个第一行向量分别为:[0 0 210 240 220 235 232 224]、[243 0 00200 213 142 153]、[232 0 0 0 180 167 125 154]和[124 198 0 0 158 148 194 210]。
根据该4个第一行向量组成的图像矩阵为
步骤303:对该图像矩阵包括的多个第一行向量分别进行图像边缘增强与二值化处理,得到多个第二行向量。
具体地,本步骤可以分为如下(1)-(8)的步骤来实现,包括:
(1)、对于该多个第一行向量中的每一个第一行向量,获取与该第一行向量相邻的至少一个第一行向量;
具体地,如果该第一行向量为该图像矩阵中的第一个第一行向量,则获取该第一行向量下方相邻的第一行向量;如果该第一行向量为该图像矩阵中的最后一个第一行向量,则获取该第一行向量上方相邻的第一行向量;如果该第一行向量为第一个第一行向量与最后一个第一行向量之间的第一行向量,则获取与该第一行向量上下相邻的两个第一行向量。
可选地,如果该第一行向量为该图像矩阵中的第一个第一行向量或者最后一个第一行向量,则不获取与该第一行向量相邻的第一行向量。
(2)、将该第一行向量和获取的第一行向量进行相加,得到第三行向量;
具体地,如果该第一行向量为该图像矩阵中的第一个第一行向量,则将两倍的该第一行向量和获取的第一行向量进行相加,得到第三行向量;或者将该第一行向量和两倍的获取的第一行向量进行相加,得到第三行向量。如果该第一行向量为该图像矩阵中的最后一个第一行向量,则将两倍的该第一行向量和获取的第一行向量进行相加,得到第三行向量;或者将该第一行向量和两倍的获取的第一行向量进行相加,得到第三行向量。如果该第一行向量为第一个第一行向量与最后一个第一行向量之间的第一行向量,则将该第一行向量和获取的两个第一行向量中对应的元素进行相加,得到第三行向量。
其中,如果没有获取该第一行向量相邻的第一行向量,则将该第一行向量确定为第三行向量。
例如,第一行向量为[243 0 0 0 200 213 142 153],与该第一行向量上下相邻的两个第一行向量分别为[0 0 210 240 220 235 232 224]和[232 0 0 0 180 167125154],则将第一行向量[243 0 0 0 200 213 142 153]与该相邻的两个第一行向量[00210 240 220 235 232 224]和[232 0 0 0 180 167 125 154]进行相加,得到的第三行向量为[475 0 210 240 600 615 499 531]。
(3)、将第三行向量相邻的至少一个第三行向量相减并取差值的绝对值,得到第四行向量;
具体地,如果该第三行向量为第一个第三行向量或者最后一个第三行向量,则将该第三行向量确定为第四行向量。如果该第三行向量为第一个第三行向量与最后一个第三行向量之间的第三行向量,则将该第三行向量上下相邻的两个第三行向量相减并取差值的绝对值,得到第四行向量。
可选地,如果该第三行向量为第一个第三行向量,也可以将该第三行向量下方相邻的第三行向量确定为第四行向量。如果该第三行向量为最后一个第三行向量时,也可以将该第三行向量上方相邻的第三行向量确定为第四行向量。
在本发明实施例中,以行向量为单位按照上述步骤对每个第一行向量进行变换,得到每个第一行向量对应的第四行向量,只需按照上述步骤执行一次即可。当以第一行向量中包括的每个元素为单位进行变换,需要按照上述步骤对每个元素都执行一次。所以本发明实施例以行向量为单位进行变换的方法节省了对第一行向量进行变换的步骤,降低了对第一行向量进行变换的计算量,进而减小了处理时间。并且以行向量为单位对每个第一行向量为单位进行变换时,只需将变换需要的中间数据存储一次即可,当以第一行向量中包括的每个元素为单元进行变换时,需要将每个元素需要的中间数据都存储,且有的中间数据是重复存储的,所以本发明实施例以行向量为单位进行变换时,需要的存储空间较少。
(4)、将第四行向量包括的元素进行相加,得到第一数值;
(5)、计算第四行向量包括的元素的平均值,以及计算第一数值与该平均值的比值;
具体地,将第一数值除以第四行向量包括的元素的个数,得到第四行向量包括的元素的平均值。将第一数值除以该平均值,得到第一数值与该平均值之间的比值。
(6)、根据该比值和该平均值,计算阈值;
具体地,当该比值大于第一预设数值时,则将该平均值乘以6,得到该阈值。当该比值小于或等于第一预设数值且该比值大于第二预设数值时,将该平均值乘以4,得到该阈值。当该比值小于或等于第二预设数值时,将该平均值乘以10,得到该阈值。
例如,第一预设数值可以为12,第二预设数值可以为7。
(7)、根据该阈值,将第四行向量包括的元素进行二值化处理,得到第二行向量;
具体地,对于第四行向量中的每一个元素,如果该元素大于该阈值,则将该元素设置为第二数值,否则,将该元素设置为第三数值。
例如,第二数值可以为1,第三数值可以为0。
(8)、根据上述(1)-(7)的步骤,对该图像矩阵中的其他第一行向量进行图像边缘增强与二值化处理,得到多个第二行向量。
其中,在本发明实施例中,以行向量为单位进行处理时,只需针对该行向量计算一个阈值,根据该一个阈值就可以对第四行向量进行二值化处理,降低了对第四行向量进行二值化的计算量,减少了处理时间。
在车辆主动安全产品中,可能存在硬件平台低成本的要求,所以导致资源有限的约束,而本发明提供的方法计算量低,且需要的存储空间较小,可以广泛适用于硬件平台低成本要求的车辆主动安全产品中。
步骤304:将该多个第二行向量构成的矩阵进行左右平均划分,得到第一子矩阵和第二子矩阵,第一子矩阵对应第一子区域,第二子矩阵对应第二子区域,第一子区域和第二子区域构成感兴趣区域。
在本发明实施例中,将该感兴趣区域的左边的子区域称为第一子区域,将该感兴趣区域的右边的子区域称为第二子区域。
其中,将该多个第二行向量构成的矩阵进行左右平均划分之后,得到的第一子矩阵包括的第五行向量的行数不变,第二子矩阵包括的第六行向量的行数不变。如果该多个第二行向量构成的矩阵的列数为偶数时,则第一子矩阵包括的第五行向量的列数与第二子矩阵包括的第六行向量的列数相等。如果该多个第二行向量构成的矩阵的列数为奇数时,则第一子矩阵包括的第五行向量的列数与第二子矩阵包括的第六行向量的列数之差为1。
步骤305:根据第一子矩阵包括的多个第五行向量,从第一子区域内提取车道线边缘特征点。
具体地,本步骤可以分为如下(1)-(15)的步骤,包括:
(1)、对于该多个第五行向量中的每一个第五行向量,令Lbinary(i,j)为该第五行向量中的第j个元素,j的初值为1,且j小于或等于该第五行向量的列数;
(2)、获取该第五行向量中的第j个元素,并将变量start设置为j;
(3)、如果第j个元素等于第三数值,则j=j+1,返回步骤(2);
(4)、如果第j个元素等于第二数值,则j=j+1,获取该第五行向量中的第j个元素,执行步骤(5);
(5)、如果第j个元素等于第二数值,则j=j+1,获取该第五行向量中的第j个元素,返回本步骤;
(6)、如果第j个元素等于第三数值,则j=j+1,获取该第五行向量中的第j个元素,执行步骤(7);
(7)、判断第j个元素是否等于第三数值,如果第j个元素等于第三数值,则j=j+1,执行步骤(8),如果第j个元素等于第二数值,则执行步骤(11);
(8)、判断j-start是否大于30*i/m,m为该第一子矩阵的行数,i为该第五行向量所在行的编号;
(9)、如果j-start大于30*i/m,则返回步骤(2);
(10)、如果j-start小于或等于30*i/m,则获取该第五行向量中的第j个元素,返回步骤(7);
(11)、j=j+1,并获取该第五行向量中的第j个元素,执行步骤(12);
(12)、如果第j个元素等于第二数值,则j=j+1,返回本步骤;
(13)、如果第j个元素等于第三数值,则判断j-start是否大于15*i/m;
(14)、如果j-start大于15*i/m,则将Lbinary(i,j)对应的像素点确定为车道线边缘特征点,否则,返回步骤(2)。
进一步地,当将Lbinary(i,j)对应的像素点确定为车道线边缘特征点之后,如果Lbinary(i,j)中的j小于该第五行向量的行数,则可以继续根据上述步骤(2)-(14)确定车道线边缘特征点。
(15)、对于该多个第五行向量中的其他第五行向量,按照上述(1)-(14)的步骤,从该第一子矩阵对应的第一子区域中提取车道线边缘特征点。
其中,根据上述(1)-(15)的步骤提取的车道线边缘特征点为第一子区域中车道线内侧的边缘特征点,即车道线的右侧边缘的边缘特征点,如图4所示。
步骤306:根据第二子矩阵包括的多个第六行向量,从第二子区域内提取车道线边缘特征点。
具体地,本步骤可以分为如下(1)-(15)的步骤,包括:
(1)、对于该多个第六行向量中的每一个第六行向量,令Lbinary(i,j)为该第六行向量中的第j个元素,j的初值为1,且j小于或等于该第六行向量的列数;
(2)、获取该第六行向量中的第j个元素,并将变量start设置为j;
(3)、如果第j个元素等于第三数值,则j=j+1,返回步骤(2);
(4)、如果第j个元素等于第二数值,则j=j+1,获取该第六行向量中的第j个元素,执行步骤(5);
(5)、如果第j个元素等于第二数值,则j=j+1,获取该第六行向量中的第j个元素,返回本步骤;
(6)、如果第j个元素等于第三数值,则j=j+1,获取该第六行向量中的第j个元素,执行步骤(7);
(7)、判断第j个元素是否等于第三数值,如果第j个元素等于第三数值,则j=j+1,执行步骤(8),如果第j个元素等于第二数值,则执行步骤(11);
(8)、判断j-start是否大于30*i/m,m为该第二子矩阵的行数,i为该第六行向量所在行的编号;
(9)、如果j-start大于30*i/m,则返回步骤(2);
(10)、如果j-start小于或等于30*i/m,则获取该第六行向量中的第j个元素,返回步骤(7);
(11)、j=j+1,并获取该第六行向量中的第j个元素,执行步骤(12);
(12)、如果第j个元素等于第二数值,则j=j+1,返回本步骤;
(13)、如果第j个元素等于第三数值,则判断j-start是否大于15*i/m;
(14)、如果j-start大于15*i/m,则将Lbinary(i,start)对应的像素点确定为车道线边缘特征点,否则,返回步骤(2)。
进一步地,当将Lbinary(i,start)对应的像素点确定为车道线边缘特征点之后,如果Lbinary(i,start)中的start小于该第六行向量的行数,则可以继续根据上述步骤(2)-(14)确定车道线边缘特征点。
(15)、对于该多个第六行向量中的其他第六行向量,按照上述(1)-(14)的步骤,从该第二子矩阵对应的第二子区域中提取车道线边缘特征点。
其中,根据上述(1)-(15)的步骤提取的车道线边缘特征点为第二子区域中车道线内侧的边缘特征点,即车道线的左侧边缘的边缘特征点,如图4所示。
其中,根据步骤203对该图像矩阵包括的多个第一行向量进行图像增强与二值化处理之后,得到多个第二行向量,再根据步骤204-206对该多个第二行向量中的元素进一步地判断,以提取车道线边缘特征点,提高了提取车道线边缘特征点的准确率。
其中,在车辆运行过程中,车辆上安装的摄像机可以实时地采集车辆前方道路的彩色图像,利用本发明实施例提供的方法也可以实时地对采集到的彩色图像进行处理,以提取该彩色图像中的车道线边缘特征点。
在本发明实施例中,从车辆前方道路的灰度图像中获取感兴趣区域,根据该感兴趣区域构造一个图像矩阵。以行向量为单位,对该图像矩阵包括的每个第一行向量进行图像增强与二值化处理,得到第二行向量,减少了对第一行向量进行变换的计算量,减少了处理时间,且减少了需要的存储空间。并且以行向量为单位,根据第二行向量,从该感兴趣区域中提取车道线边缘特征点,更进一步地减少了提取车道线边缘特征点的计算量,进一步地减少了处理时间,进一步地减少了需要的存储空间。
实施例四
图6是本发明实施例提供的一种车道线边缘特征点的提取装置结构示意图,参见图6,该装置包括:
获取模块401,用于从车辆前方道路的灰度图像中获取感兴趣区域;
构造模块402,用于根据该感兴趣区域,构造至少一个图像矩阵,每个图像矩阵包括多个第一行向量;
处理模块403,用于对该多个第一行向量分别进行图像边缘增强与二值化处理,得到多个第二行向量;
提取模块404,用于根据该多个第二行向量,从感兴趣区域内提取车道线边缘特征点。
其中,处理模块403包括:
获取单元,用于对于该多个第一行向量中的每一个第一行向量,获取与该第一行向量相邻的至少一个第一行向量;
相加单元,用于将该第一行向量和获取的第一行向量进行相加,得到第三行向量;
相减单元,用于将第三行向量相邻的至少一个第三行向量相减并取差值的绝对值,得到第四行向量;
处理单元,用于对第四行向量包括的元素进行二值化处理,得到第二行向量。
进一步地,获取单元包括:
第一获取子单元,用于如果第一行向量为该图像矩阵中的第一个第一行向量,则获取该第一行向量下方相邻的第一行向量;
第二获取子单元,用于如果该第一行向量为该图像矩阵中的最后一个第一行向量,则获取该第一行向量上方相邻的第一行向量;
第三获取子单元,用于如果该第一行向量为第一个第一行向量与最后一个第一行向量之间的第一行向量,则获取与该第一行向量上下相邻的两个第一行向量。
其中,处理单元包括:
相加子单元,用于将第四行向量包括的元素进行相加,得到第一数值;
第一计算子单元,用于计算第四行向量包括的元素的平均值,以及计算第一数值与该平均值的比值;
第二计算子单元,用于根据该比值和该平均值,计算阈值;
处理子单元,用于根据该阈值,将第四行向量包括的元素进行二值化处理,得到第二行向量。
优选地,处理子单元,具体用于:
对于第四行向量中的每一个元素,如果该元素大于该阈值,则将该元素设置为第二数值,否则,将该元素设置为第三数值。
其中,提取模块404包括:
划分单元,用于如果根据该感兴趣区域构成一个图像矩阵,则将该多个第二行向量构成的矩阵进行左右平均划分,得到第一子矩阵和第二子矩阵,第一子矩阵对应第一子区域,第二子矩阵对应第二子区域,第一子区域和第二子区域构成感兴趣区域;
第一提取单元,用于根据第一子矩阵包括的多个第五行向量,从第一子区域内提取车道线边缘特征点;
第二提取单元,用于根据第二子矩阵包括的多个第六行向量,从第二子区域内提取车道线边缘特征点。
在本发明实施例中,从车辆前方道路的灰度图像中获取感兴趣区域,根据该感兴趣区域构造至少一个图像矩阵。以行向量为单位,对该图像矩阵包括的每个第一行向量进行图像增强与二值化处理,得到第二行向量,减少了对第一行向量进行变换的计算量,减少了处理时间,且减少了需要的存储空间。并且以行向量为单位,根据第二行向量,从该感兴趣区域中提取车道线边缘特征点,更进一步地减少了提取车道线边缘特征点的计算量,进一步地减少了处理时间,进一步地减少了需要的存储空间。
需要说明的是:上述实施例提供的车道线边缘特征点的提取装置在车道线边缘特征点的提取时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的车道线边缘特征点的提取装置与车道线边缘特征点的提取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。