本发明涉及计算机图像处理领域,尤其涉及通过HSV空间色彩距离、图像的二值化、Hough直线检测等进行直线检测方法和装置。
背景技术:
近几年间,随着城市车辆的日益增加以及驾驶辅助系统的应用日渐普及,城市的交通及道路状况备受关注。同时,视频监控在交通领域也渐渐被广泛地应用。因而,能够准确地从视频流中区分出车道和运动目标,从而实现对运动目标,例如车辆等的实时分析、跟踪、判别监控等,具有重要意义,即,准确的车道直线检测技术变得日益重要。
在现有的车道直线检测技术中,应用最为广泛的是Hough变换直线检测方法。Hough变换的基本原理在于,利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像空间中的给定曲线的检测问题转化为寻找参数空间中的峰值问题。现有的Hough变换检测直线的方法,利用了像素在空间域上的分布信息,虽然有效、实用,但也有一定的局限性,例如,对复杂环境的鲁棒性不强等。Hough变换由于受阈值、图像分辨率、像素大小等因素的影响,所检测到的直线也会出现不被预知的变化,从而降低了车道检测技术的准确性以及实用性。而现有技术中,对于Hough变换并没有后续的方法去处理这些遗留的问题,从而导致Hough变换检测直线的方法在应用到实际中时,适应性并不那么理想。
技术实现要素:
针对上述出现的问题,提出了本发明,本发明提出了一种车道直 线检测方法和装置,其为基于Hough变换和半径约束的车道直线检测方法和装置。利用该方法和装置,将通过Hough变换之后的多条直线方程进行合并,使得实际路面中对应于同一条车道直线的多条直线方程合并为一条,从而提高了检测精度和准确性。
根据本发明的一方面,提供一种车道直线检测方法,其特征在于,所述方法包括:
图像处理步骤,即,对图像采集获得的路面车道的图像进行格式转换,并对格式转换后的图像进行二值化处理;
Hough变换步骤,即,对所述二值化处理中的灰度值为255的N个像素点进行Hough变换,以在θ-r极坐标系下获得N条曲线,根据所述N条曲线的满足所设定阈值条件而保留下来的M个交点获得x-y坐标系下的M条直线;以及
直线合并步骤,即,在所述Hough变换步骤中获得的所述M条直线中,对一条车道对应多条直线方程的情形,利用半径约束将所述多条直线方程合并为一条直线方程。
进一步地,所述图像处理步骤中,所述格式转换为将RGB格式的图像转换为HSV格式的图像;并且,
所述二值化处理中,计算所述HSV格式的图像中所有像素的HSV平均值,并计算所有像素中的每个像素的HSV值与该HSV平均值的距离。
进一步地,采用如下公式计算所述路面车道的图像的每个像素的所述HSV值与所有像素点的所述HSV平均值之间的距离:
Dist(C0,Ci)=|V0-Vi|+|V0*S0*cos(H0)-Vi*Si*cos(Hi)|
+|V0*S0*sin(H0)-Vi*Si*sin(Hi)|
其中,H0,S0,V0为所述路面车道的图像的所有像素的HSV平均值,Hi,Si,Vi为所述路面车道的图像中每个像素的HSV值,H表示图像的色调,S表示亮度,V表示饱和度。
进一步地,当像素的Dist(C0,Ci)大于预先设定的阈值时,将该像素的灰度值设定为0,当像素的Dist(C0,Ci)不大于所述预先设定的阈值时,将该像素的灰度值设定为255。
进一步地,所述半径约束具体为:在所述M条直线中任意选取两条直线,即,第一直线和第二直线,以所述第一直线上的像素点为圆心,预定值为半径画圆,获得所述圆与所述第二直线的两个交点,并统计所述两个交点之间的像素点的个数,当所述第一直线上的所有像素点所对应的两个交点之间的像素点的总数满足预先设定的条件时,则将所述第一直线与所述第二直线合并,否则,不合并。
进一步地,在所述半径约束中,对所述任意的两条直线进行合并的所述预先设定的条件为:
其中,为所述第一直线上的所有像素点对应的所述两个交点之间所有像素点的总和,tb为所述第二直线上的像素点的总数。
进一步地,当所述圆与所述第二直线没有交点时,COUNTk记为0,当所述圆与所述第二直线仅有一个交点时,COUNTk记为1。
更进一步地,反复进行所述直线合并步骤,直到没有任何两条直线满足所述预先设定的条件或者只剩余一条直线,则结束合并,合并结束后的直线即为所述路面车道的图像中的实际车道直线。
根据本发明的另一方面,提供了一种车道直线检测装置,其特征在于,所述装置包括:
图像处理模块,其用于对采集到的所述路面车道的图像进行格式转换,并对格式转换后的图像进行二值化处理;
Hough变换模块,其用于对所述二值化处理中的灰度值为255的 N个像素点进行Hough变换,以在θ-r极坐标系下获得N条曲线,根据所述N条曲线的满足设定阈值条件的M个交点获得x-y坐标系下的M条直线;以及
直线合并模块,其用于在所述Hough变换步骤中获得的所述M条直线中,对一条车道对应多条直线方程的情形,利用半径约束将所述多条直线方程合并为一条直线方程。
以下结合本发明的附图及优选实施方式对本发明的技术方案做进一步详细地描述,本发明的有益效果将进一步明确。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,但其说明仅用于解释本发明,并不构成对本发明的不当限定。
图1是根据本发明一优选实施例的车道直线检测方法的流程图。
图2是根据本发明一优选实施例的车道直线检测方法中图像处理的流程图。
图3是Hough变换的原理图。
图4是根据本发明一优选实施例的车道直线检测方法中进行半径约束的一个实例的示意图。
图5是根据本发明一优选实施例的车道直线检测装置的框图。
具体实施方式
下面将结合本发明的具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分优选实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的所述的车道直线检测方法,包括:图像处理步骤, 即,对图像采集获得的路面车道的图像进行格式转换,并对格式转换后的图像进行二值化处理;Hough变换步骤,即,对二值化处理中的灰度值为255的N个像素点进行Hough变换,以在θ-r极坐标系下获得N条曲线根据所述N条曲线的满足所设定阈值条件而保留的M个交点获得x-y坐标系下的M条直线;以及直线合并步骤,即,在Hough变换步骤中获得的M条直线中,对一条车道对应多条直线方程的情形,利用半径约束将所述多条直线方程的合并为一条直线方程。
根据本发明的如上方法,由于通过Hough变换之后的多条直线方程进行合并,使得实际路面中对应于同一条车道直线的多条直线方程合并为一条,从而提高了车道直线检测的精度和准确性。
以下首先结合附图对本发明的车道直线检测方法进行详细说明。
图1是根据本发明一优选实施例的车道直线检测方法的流程图。如图1所示,所述车道直线检测方法包括图像处理步骤S1,Hough变换步骤S2以及直线合并步骤S3,以下分别具体说明。
S1:图像处理步骤,即,对图像采集获得的路面车道的图像进行格式转换,并对格式转换后的图像进行二值化处理。
具体地,该图像处理步骤包括如下步骤:
步骤S101:采集图像。
利用成像装置,例如双目摄像机、立体相机等,获得路面车道的图像。
步骤S102:格式转换。
以上通过所述成像装置采集到图像的格式为RGB格式,在本发明 中,将该图像的格式转换为HSV格式,其中,H表示样本图像的色调,S表示亮度,V表示饱和度。
(r,g,b)表示RGB格式的图像中每个图像像素的红、绿和蓝的色彩值,它们的取值是在0到1之间的实数。max是r,g和b中的最大值,min是r,g和b中的最小值。对应地,HSV格式下每个像素的色调、亮度和饱和度的值用C=(h,s,v)表示。
则,将图像从RGB格式转换为HSV格式的公式如下:
步骤S103:二值化图像。
首先,根据上述转换得到的图像中每个像素的C=(h,s,v)的值,计算整个图像的C=(h,s,v)的平均值作为基准,记为C0=(H0,S0,V0)。本发明不限于采用平均值作为基准,还可以采用中位数等作为基准。
然后,计算图像中任意像素的Ci(i为自然数)的值与C0=(H0,S0,V0)之间的距离Dist(C0,Ci),根据以下公式计算Dist(C0,Ci)。
Dist(C0,Ci)=|V0-Vi|+|V0*S0*cos(H0)-Vi*Si*cos(Hi)|
+|V0*S0*sin(H0)-Vi*Si*sin(Hi)|
..............................(2)
其中,如上所述,H0,S0,V0为转换后的图像所有像素的色调,亮度和饱和度的平均值,Hi,Si,Vi为图像中任意像素Ci的色调、亮度和饱和度的值。
最后,根据计算得到的Dist(C0,Ci),将其与预先设定的阈值DIST进行比较,当Dist(C0,Ci)大于DIST时,将该像素Ci的灰度值设定为0,当Dist(C0,Ci)小于或等于DIST时,将该像素Ci的灰度值设定为255,从而构成二值化图像。其中,阈值DIST的设定通过多次的实验测试结果来确定。通过多次测试,对测试结果加以分析验证,将阈值限定在一个较为合理的范围内,从而获得更理想的检测结果。
灰度值为255,表示该像素颜色为白色,灰度值为0,表示该像素颜色为黑色。由于图像为路面车道的图像,所以灰度值为255的像素被认为是白色车道线,假定该像素点的个数为N,而灰度值为0的像素被认为构成黑色路面,假定其像素点的个数为T,则N与T的总和为图像所有像素点的个数。
S2:Hough变换步骤,即,对二值化处理中的灰度值为255的N个像素点进行Hough变换,以在θ-r极坐标系下获得N条曲线。
Hough变换是对图像进行直线检测的常见方法。本发明中,采用传统的Hough变换方法,其原理为:
在x-y坐标系下,一条直线可以用角度θ和距离r,其中,r为原点到直线的垂直距离,θ是原点到直线的一条垂线段与x轴的夹角,则,对于直线上的任何一点(x,y)均有r=xcosθ+ysinθ。则,Hough变换希望找到直线上的点所对应的参数r和θ。
x-y坐标系下图像中的一个点对应θ-r极坐标系下参数平面中的一条曲线,x-y坐标系下图像中的一条直线对应θ-r极坐标系下参数平 面中的一个点。即,x-y坐标系下相同直线上的点所对应的θ-r极坐标系下的曲线相交于同一点。例如,图3示出了Hough变换的原理图。如图3所示,θ-r极坐标系下,三条曲线分别为x-y坐标系下直线L0上的三个不同的点所对应的曲线,三条曲线相交于点(θ0,r0),则对应地,在x-y坐标系下与其对应的该条直线方程为L0:xcosθ0+ysinθ0-r0=0。
具体到本发明,根据上述Hough变换的原理,对步骤S103中所获得的二值化图像中的灰度值为255的N个像素点进行Hough变换,从而在θ-r极坐标系下获得N条曲线。最终所要检测的直线对应的是θ-r极坐标系下参数平面中N条曲线的交点以及每个交点所对应的相交的曲线数目。当交于一点的曲线数目超过所设定的阈值时,则将此交点坐标保留;否则,将交点坐标舍弃。此处阈值的设定是根据多次实验进行测试,并加以分析验证,最终选取的一个较为理想的值。
由此,根据N条曲线的满足设定阈值条件而最终保留下来的交点坐标为(θj,rj)(j=1,2,……M,M为N条曲线的满足设定阈值条件的交点个数),可以获得x-y坐标系下的M条候选车道直线方程Lj:xcosθj+ysinθj-rj=0(j=1,2,……M)。由此可以通过Hough变换,在极坐标系下,获得x-y坐标系下图像中的所有的候选车道直线。
S3:直线合并步骤,即,在Hough变换步骤中获得的M条直线中,对一条车道对应多条直线方程的情形,利用半径约束将所述多条直线方程的合并为一条直线方程。
在通过上述Hough变换得到的M条车道对应的直线中,可能存在一条实际车道对应s(s<M)条直线方程的情况,因此,本发明要解决的问题为将上述s条直线方程合并为一条直线方程。为此,可以采用以下步骤。
首先,在获得M条直线中,选取任意两条直线,记为Lm、Ln(1≤m,n≤M)。
然后,依次以直线Lm的图像上的每个像素点为圆心,以R为半径画圆。其中,R为预先设定的值,可以根据用户需求而改变,在本实施例中,将R设定为图像列数的1/30。例如,如图4所示,示出了直线Lm上的一个像素点O1的实例,该实例以O1为圆心,R为半径画圆。如图4所示,该圆与直线Ln相交,交点记为M1、N1。则将交点M1、N1之间的所有像素点的坐标存储在一个数组Point中,并统计像素点的个数记为COUNT1。若圆与直线Ln不相交,则COUNT1记为0,若圆与直线Ln仅相交于一点,则COUNT1记为1。
依此类推,对直线Lm的图像上的每个像素点Ok(其中,k=1,2,……tm,tm为直线Lm上像素点的总数)均进行上述处理。同时,如图4所示,设以Ok为圆心的圆与直线Ln的交点分别为Mk和Nk,则将每个像素点Ok对应的两个交点Mk和Nk之间的所有像素点的坐标均存储在数组Point中,并统计与每个像素点Ok对应的交点Mk和Nk之间的所有像素点的个数COUNTk。
根据以下合并条件:
其中,为直线Lm上的所有tm个像素点对应的交点Mk和Nk之间所有像素点的总和,tn为直线Ln上的像素点的总数。如果满足上述公式,则将直线Lm与直线Ln进行合并,否则,两条直线不合并。
对于M条直线中的所有直线,进行上述操作,直到没有任何两条直线满足合并条件或者只剩余一条直线,合并操作过程结束。合并结束后的直线即为图像中的车道直线。
以上通过步骤S1至S3描述了车道直线检测的具体方法,详细描述了该方法中各个步骤的具体操作方法。通过该方法,能够实现对多条候选车道直线的合并,使得在实际车道图像中对应于同一条车道的多条候选车道直线合并为一条,从而提高了检测的精度和准确性。
图5是根据本发明一优选实施例的车道直线检测装置的框图。下面结合图5描述进行车道直线检测的装置。
根据本发明的车道直线检测的装置,包括图像处理模块1、Hough变换模块2和直线合并模块3。下面具体描述各个模块。
图像处理模块1,其用于对采集到的路面图像进行格式转换,并对格式转换后的图像进行二值化处理。
该图像处理模块1使得图像从RGB格式转换为HSV格式,其中,H表示样本图像的色调,S表示亮度,V表示饱和度。
并且该图像处理模块1计算整个图像的所有像素的HSV值的平均值,记为C0=(H0,S0,V0),以计算图像中任意一个像素Ci(i为自然数)与C0=(H0,S0,V0)之间的距离Dist(C0,Ci),根据以下公式计算Dist(C0,Ci)。
Dist(C0,Ci)=|V0-Vi|+|V0*S0*cos(H0)-Vi*Si*cos(Hi)|
+|V0*S0*sin(H0)-Vi*Si*sin(Hi)|
其中,H0,S0,V0为图像所有像素的色调,亮度和饱和度的平均值,Hi,Si,Vi为图像中任意像素Ci的色调、亮度和饱和度的值。
并且该图像处理模块1用于对图像进行二值化处理。根据计算得到的Dist(C0,Ci),将其与预先设定的阈值DIST进行比较,当Dist (C0,Ci)大于DIST时,将该像素Ci的灰度值设定为0,当Dist(C0,Ci)小于等于DIST时,将该像素Ci的灰度值设定为255,从而构成二值化图像。其中,阈值DIST的设定通过多次的实验测试结果来确定。通过多次测试,对测试结果加以分析验证,将阈值限定在一个较为合理的范围内,从而获得更理想的检测结果。
Hough变换模块2,其用于对二值化图像中的灰度值为255的N个像素点进行Hough变换,从而在θ-r极坐标系下获得N条曲线。根据θ-r极坐标系下获得N条曲线之间的满足所设定的阈值条件的M个交点,获得与该M个交点相对应的图像中的M条候选车道直线。此处阈值条件的设定是根据多次实验进行测试,并加以分析验证,最终选取的一个较为理想的值。
其中,M个交点坐标为(θj,rj)(j=1,2,……M),则对应的图像中的M条候选车道直线方程为Lj:xcosθj+ysinθj-rj=0(j=1,2,……M)。由此可以通过Hough变换,在极坐标系下,获得x-y坐标系下图像中的所有的候选车道直线。
直线合并模块3,其用于对在Hough变换中获得的M条直线中,对一条车道对应多条直线方程的情形,利用半径约束将所述多条直线方程的合并为一条直线方程。
在通过上述Hough变换得到的M条车道对应的直线中,可能存在一条实际车道对应s(s<M)条直线方程的情况。在M条直线中,该直线合并模块3任意选取两条直线Lm、Ln(1≤m,n≤M),依次以直线Lm的图像上的每个像素点为圆心,以R为半径画圆。其中,R为预先设定的值,可以根据用户需求而改变,在本实施例中,将R设定为图像列数的1/30。从而获得该圆与直线Ln的交点M1、N1,并将交点M1、N1之间的所有像素点的坐标存储在一个数组Point中,以统计像素点的个数记为COUNT1。若圆与直线Ln不相交,则COUNT1记为0, 若圆与直线Ln仅相交于一点,则COUNT1记为1。
依此类推,该直线合并模块3对Lm的图像上的每个像素点Ok(其中,k=1,2,……tm,tm为直线Lm上像素点的总数)均进行上述处理。同时,如图4所示,设以Ok为圆心的圆与直线Lm和Ln的交点分别为Mk和Nk,则将每个像素点Ok对应的两个交点Mk和Nk之间的所有像素点的坐标均存储在数组Point中,并统计与每个像素点Ok对应的交点Mk和Nk之间的所有像素点的个数COUNTk。
根据以下合并条件:
其中,为直线Lm上的所有tm个像素点对应的交点Mk和Nk之间所有像素点的总和,tn为直线Ln上的像素点的总数。如果满足上述公式,则将直线Lm与直线Ln进行合并,否则,两条直线不合并。
这样,该直线合并模块3对M条直线中的所有直线,进行上述操作,直到没有任何两条直线满足合并条件或者只剩余一条直线,则该直线合并模块3结束合并操作过程。合并结束后的直线即为图像中的车道直线。
以上描述了根据本发明的实施例的车道直线检测方法和装置。通过该方法及装置,能够实现对多条候选车道直线的合并,使得在实际车道图像中对应于同一条车道的多条候选车道直线合并为一条,从而提高了检测的精度和准确性。
以上所述仅为本申请的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。