具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,对本发明的车道线识别方法和装置、车辆进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
实施例一
图1为本发明实施例一提供的一种车道线识别方法的方法流程图。参见图1,所述车道线识别方法可以包括如下步骤:
步骤S101:识别道路图像中所有线段;
在实际中,车道线可包括直线和曲线,故而道路图像中的直线段和曲线段都会被当作疑似车道线。本实施例通过执行步骤S101,可识别出道路图像中所有直线段和/或曲线段,即本实施例的线段可包括直线段和/或曲线段。
具体可选择不同的方式识别道路图像中所有线段,在本实施例中,先分割出道路图像中所有的线段区域,再基于线段检测算法识别所有线段。其中,对道路图像中所有的线段区域进行分割的方式可根据需要选择,例如,在其中一些例子中,基于CNN(Convolutional Neural Network,卷积神经网络)分割出道路图像中所有的线段区域。可选的,基于CNN语义分割出道路图像中所有的线段区域。可选的,利用深度学习算法对大量的道路图像样本进行训练,获得车道线模型,将当前道路图像输入该车道线模型,获得当前道路图像中的所有的线段区域(包括直线段区域和/或曲线段区域)。
在另一些例子中,基于边缘检测算法分割出道路图像中所有的线段区域。具体的,基于边缘检测算法检测道路图像中所有线段的边缘,从而分割出道路图像中所有的线段区域。
本实施例的线段检测算法可以为霍夫变换算法(hough transform),也可以为其他线段检测算法,具体可根据需要选择线段检测算法的类型。在本实施例中,基于线段检测算法能够识别出道路图像中所有线段的一些参数信息,例如,所有线段的长度、所有线段之间的位置关系(如所有线段之间的夹角和/或所有线段之间的间距)。
本实施例的车道线识别方法可应用在车辆上,特别是无人驾驶车辆,道路图像可由车辆上的拍摄装置拍摄到的车辆前方的道路图像,该道路图像一般为前视图。在前视图中,路面标志物箭头、车道线等车道标志物可能会存在扭曲,扭曲的形状与车辆的位置相关,并且前视图中离车辆越远的线段越难被识别,前视图中同种车道标志物一致性较差,难以识别准确。为提高车道线识别的准确性,本实施例在识别道路图像中所有线段之前,对道路图像进行图像矫正。图像矫正的方式可根据需要选择,在一实施例中,基于反透视变换,将道路图像投影至对应的俯视图。本实施例通过将道路图像投影到俯视图,使得车道线和箭头等路面标志物都会被还原成真实尺度和性质,俯视图中的路面标志物更容易被识别;并且,俯视图中路面上的像素点的位置直接对应真实位置,可根据俯视图直接得到某一像素点和车辆的位置关系,从而可以满足基本ADAS功能和自动驾驶功能的需求。
具体的,基于反透视变换,将道路图像投影至对应的俯视图可包括如下步骤:
(1)标定拍摄装置的内参及该拍摄装置对地外参;
其中,拍摄装置的内参fx、fy表征拍摄装置的焦距,cx、cy表征拍摄装置的镜头光轴穿过成像传感器的位置。拍摄装置的内参的标定可使用现有的标定算法,此处不再详述。
拍摄装置对地外参包括旋转矩阵R和平移向量T,分别为拍摄装置相对物体平面的旋转和平移,在本实施例中,该物体平面是车道线所在平面。其中,T可以通过拍摄装置对地高度进行换算。R的标定通过间接标定拍摄装置对地(拍摄装置拍摄到当前道路图像时的地面)俯仰角pitch、拍摄装置对地横滚角roll及拍摄装置对车辆正前方的偏航角yaw来实现,pitch、roll、yaw分别是拍摄装置对自身坐标轴x、y、z的旋转角度,分别为θ、φ,根据3个角度可以计算出三个轴分别对应的旋转矩阵/>Ry(θ)、Rz(φ),然后再根据三个轴分别对应的旋转矩阵计算R。
本实施例中,
(2)计算道路图像中的像素点映射到俯视图的投影矩阵H;
将物体平面坐标系的点映射到图像坐标系上可以表示为:
其中,u、v是道路图像坐标系的像素点;
s为归一化系数;
M为拍摄装置内参;
[r1 r2 r3 t]是拍摄装置对物体平面的外参,即位置关系;
r1、r2、r3为3乘1的列向量,r1、r2、r3构成旋转矩阵R;
t是3乘1的列向量,表示拍摄装置到物体平面的平移;
X、Y表示物体平面上的坐标。
假设物体在一个平面,Z是零,公式(1)可以表示为:
H=sM[r1 r2 t] (3);
(3)根据投影矩阵H,将道路图像投影到俯视图。
将公式(3)代入公式(2),可获得:
如果将X、Y物体平面坐标作为地面坐标,那么,公式(4)就变成地面到道路图像之间映射关系两边乘以H的逆矩阵:
将道路图像上各像素点坐标带入公式(5),即可获得各像素点在俯视图中的坐标。
利用上述反透视变换算法将物体平面的点投影到俯视图只能较为精确地处理在物体平面上的点,非物体平面上的点投影会存在误差,比如护栏上的栏杆在真实俯视视角上离路边的车道线很近,但由于利用上述反透视变换算法投影护栏上的点是不准确的,所以护栏上的点投影到俯视图会和路边上的车道线有一定距离,导致将护栏误检成车道线。本实施例先利用上述反透视变换算法将道路图像投影至俯视图,再对俯视图进行车道线检测,后续利用先验条件的车道线检测方法更容易区分俯视图中的真实车道线和误检的车道线。
本实施例中,识别俯视图中的所有线段,具体的,先分割出俯视图中所有的线段区域,再基于线段检测算法识别所有线段。
步骤S102:针对每一线段,从其他线段中确定出该线段的关联线段,并计算该线段的关联线段对该线段的贡献度,贡献度用于表征关联线段对该线段作为车道线的影响程度大小;
具体的,参见图2,根据该线段与其他线段之间的位置关系和预设的车道线先验条件,从其他线段中确定出该线段的关联线段。可选的,该线段与其他线段之间的位置关系包括该线段与其他线段之间的夹角,或/和该线段与其他线段之间的间距,当然,该线段与其他线段之间的位置关系还可根据真实车道线之间的其他位置关系设定。在一实施例中,该线段与其他线段之间的位置关系包括该线段与其他线段之间的夹角。在另一实施例中,该线段与其他线段之间的位置关系包括该线段与其他线段之间的间距。在又一实施例中,该线段与其他线段之间的位置关系包括该线段与其他线段之间的夹角,及该线段与其他线段之间的间距。
本实施例以该线段与其他线段之间的位置关系包括该线段与其他线段之间的夹角,及该线段与其他线段之间的间距为例进一步说明。
实际道路上的车道线之间尽可能平行,且相邻车道线之间的间距大约位于2.5米至4.2米的范围。然而,由于拍摄角度以及其他一些因素的影响,道路图像中的车道线之间通常会存在一个较小夹角,道路图像中两条线段之间的夹角越小,表明这两条线段在实际道路上越趋向于平行位置关系,这两条线段为车道线的可能性越大,本实施例的预设的车道线先验条件包括车道线之间的夹角位于预设夹角范围内,其中,可根据车道线之间尽可能平行这一条件来设定预设夹角范围大小。
进一步的,预设的车道线先验条件还包括车道线之间的间距为预设间距的整数倍。通常预设间距为相邻车道线之间的间距等比缩小的一个数值或者数值范围,在预设间距确定后,道路图像中两条线段之间的间距与预设间距的比值为整数或越接近整数,则表明这两条线段为车道线的可能性越大。本实施例中,可根据相邻车道线之间的间距大约位于2.5米至4.2米的范围这一条件来设定预设间距的大小。
通过预设的车道线先验条件,对识别出的线段进行初步筛选,滤除一些明显不是车道线的线段,比如,一些箭头或车边缘或护栏和正常车道线间距不符合真实间距的线段、与正常车道线不平行的线段等。
在该步骤中,若当前线段为直线段,确定出的当前线段的关联线段则为直线段。若当前线段为曲线段,确定出的当前线段的关联线段则为曲线段。
在处理时,针对直线段,可直接根据该直线段与其直他线段之间的位置关系和预设的车道线先验条件,从其他直线段中确定出该直线段的关联直线段。而针对曲线段,通常会将曲线段分割成多段处理,每段曲线段近似于一个直线段,再确定每段曲线段的关联曲线段,确定过程近似于直线段,此处不再赘述。对直线段进行处理时,也可以将直线段分割成多段处理。
参见图3,在确定出每一线段的关联线段后,针对每一线段,根据该线段与该线段的关联线段之间的位置关系、该线段的关联线段的长度及该线段的长度,计算该线段的关联线段对该线段的贡献度。其中,该线段与该线段的关联线段之间的位置关系包括该线段与该线段的关联线段之间的夹角,及该线段与该关联线段之间的间距。
针对每一线段,根据该线段与该线段的关联线段之间的位置关系、该线段的关联线段的长度及该线段的长度,计算该线段的关联线段对该线段的贡献度的具体步骤可参见图4:
步骤S401:针对每一线段的每一关联线段,根据该关联线段的长度及该线段的其他关联线段对该关联线段的贡献度,计算该关联线段的分值;
步骤S402:针对每一线段,根据每一关联线段的分值、每一关联线段与该线段的夹角、每一关联线段与该线段的间距与预设间距的比值及该线段的长度,计算每一关联线段对该线段的贡献度。
在一可行的实现方式中,在执行步骤S401时,先根据该线段与该线段的关联线段之间的位置关系,确定位于该线段左侧的左关联线段和位于该线段右侧的右关联线段;接着,针对每一线段的每一左关联线段,根据该左关联线段的长度及该左关联线段的其他左关联线段对该左关联线段的贡献度,计算该左关联线段的分值,并针对每一线段的每一右关联线段,根据该右关联线段的长度及该右关联线段的其他右关联线段对该右关联线段的贡献度,计算该右关联线段的分值。其中,计算该左关联线段的分值和计算该右关联线段的分值可同时执行,也可以按照先后顺序执行。
需要说明的是,本发明实施例中,左关联线段的其他左关联线段是指位于该左关联线段左侧的关联线段,右关联线段的其他右关联线段是指位于该右关联线段右侧的关联线段。例如,针对道路图像中识别出的关联线段:线段1、线段2、线段3、线段4和线段5,其中,线段1、线段2、线段3、线段4和线段5从左至右依次排列,以线段3为例,线段3的左关联线段包括线段1和线段2,右关联线段包括线段4和线段5,线段1无左关联线段,线段2的左关联线段包括线段1,线段4的右关联线段包括线段5,线段5无右关联线段。在执行步骤S402时,针对每一线段,根据每一左关联线段的分值、每一左关联线段与该线段的夹角、每一左关联线段与该线段的间距与预设间距的比值及该线段的长度,计算每一左关联线段对该线段的左贡献度;针对每一线段,根据每一右关联线段的分值、每一右关联线段与该线段的夹角、每一右关联线段与该线段的间距与预设间距的比值及该线段的长度,计算每一右关联线段对该线段的右贡献度。
具体的,针对第i条线段,第j条左关联线段对该第i条线段的左贡献度的计算公式如下:
针对第i条线段,第j条左关联线段对该第i条线段的右贡献度的计算公式如下:
其中,i、j为正整数,i∈(1,n),j∈(1,n),n为线段条数;
Li为第i条线段的长度;
k1为第一预设系数,且k1>0;本实施例中,k1的大小可根据需要设定,k1设置的越大,贡献度受α影响扩大;
α为第i条线段和第j条左线段或第j条右线段之间的夹角;
δ为第i条线段和第j条左线段或第j条右线段之间的间距与预设间距的比值;
k2为第二预设系数,且0<k2<1;本实施例中,k2的大小可根据需要设定,k2设置的越小,贡献度受δ的影响扩大;
为第j条左关联线段的分值;
为第j条右关联线段的分值。
需要说明的是,当第j条左关联线段的左侧不存在关联线段时,当第j条右线段的右侧不存在关联线段时,/>
可以理解的是,计算方式并不限于本实施例列出的公式(6)的计算公式,的计算方式也不限于本实施例列出的公式(7)的计算公式。
步骤S103:根据每一线段的长度及该线段的关联线段对该线段的贡献度,计算该线段的分值,该分值用于表征该线段为车道线的可能性大小;
本实施例中,第i条线段的分值为Si,Si的计算公式如下:
Si=Li+CSi,N (8);
公式(8)中,Li为第i条线段的长度;
CSi,N为该第i条线段的第N条关联线段对该第i条线段的贡献度。
可以理解的是,第i条线段的分值为Si的计算方式并不限于上述公式(8)。
为了简化计算过程,在执行步骤S103时,具体针对每一线段,根据该线段的长度、该线段的左关联线段对该线段的左贡献度中的最大值及该线段的右关联线段对该线段的右贡献度中的最大值/>计算该线段的分值,其中最大值/>和最大值/>也可以通过不同的加权系数处理后用于计算该线段的分值,具体加权系数由具体应用场景而定,在本方案中,二者的加权系数都为1,表征二者对该线段的贡献度相当。可选的,每一线段的分值为该线段的长度、该线段的左关联线段对该线段的左贡献度中的最大值/>及该线段的右关联线段对该线段的右贡献度中的最大值之和。
上述公式(8)简化为:
其中,的计算方式可参见上述步骤S102,此处不再赘述。
通过公式(9)即可计算出第i条线段的分值。
例如,针对道路图像识别出的线段3,确定出线段3的关联线段为线段1、线段2、线段4和线段5,其中,线段1和线段2位于线段3的左侧,线段4和线段5位于线段3的左侧,在计算线段3的分值时,需要分别计算线段1和线段2对线段3以及线段4和线段5对线段3的贡献度。
在计算线段1对线段3的贡献度时,由于线段1的左侧不存在关联线段,故只需根据线段1的长度,确定线段1的分值;再根据线段1的分值、线段1和线段3之间的位置关系(线段1和线段3之间的夹角、线段1和线段3的间距与预设间距的比值)和线段3的长度,确定线段1对线段3的贡献度。
在计算线段2对线段3的贡献度时,首先根据线段2的长度以及线段1对线段2的贡献度,确定线段2的分值;再根据线段2的分值、线段2和线段3之间的位置关系(线段2和线段3之间的夹角、线段2和线段3的间距与预设间距的比值)和线段3的长度,确定线段1对线段3的贡献度。
在计算线段4对线段3的贡献度时,首先根据线段4的长度以及线段5对线段4的贡献度,确定线段4的分值;再根据线段4的分值、线段4和线段3之间的位置关系(线段4和线段3之间的夹角、线段4和线段3的间距与预设间距的比值)和线段4的长度,确定线段4对线段3的贡献度。
在计算线段5对线段3的贡献度时,由于线段5的右侧不存在关联线段,故只需根据线段5的长度,确定线段5的分值;再根据线段5的分值、线段5和线段3之间的位置关系(线段5和线段3之间的夹角、线段5和线段3的间距与预设间距的比值)和线段5的长度,确定线段5对线段3的贡献度。
在计算出线段1、线段2、线段4以及线段5对线段3的贡献度后,根据线段3的长度、线段1对线段3的贡献度及线段2对线段3的贡献度中的最大值、及线段4对线段3的贡献度及线段5对线段3的贡献度中的最大值,计算线段3的分值。
步骤S104:将分值最高的线段及该分值最高的线段的关联线段确定为车道线。
执行完步骤S103后,可获得道路图像中所有线段的分值,接着,确定所有线段中分值最高的线段:
通过公式(10)确定出的分值最高的线段及该分值最高的线段的关联线段即为车道线。
本发明实施例的车道线识别方法,综合考虑了道路图像中每一线段的长度及该线段的关联线段对该线段贡献度判断该线段作为车道线的可能性大小,通过组合优化,让检测出来的车道线结果尽可能符合实际道路线,从而提高车道线检测的鲁棒性。
基于线段的长度、线段之间的夹角以及线段之间的间距与预设间距的比值,能够将一些被错误检测成车道线的线段滤除,如箭头、人行道、路面文字、护栏、车辆边缘等等,并选择出一组最优组合作为车道线,降低了车道线误检率。
实施例二
图5是本发明实施例二提供的一种车道线检测装置的结构框图。参见图5,该车道线检测装置包括:存储装置110以及第一处理器120。
其中,存储装置110,用于存储程序指令。第一处理器120,调用存储装置110中存储的程序指令,当程序指令被执行时,用于识别道路图像中所有线段;并针对每一线段,从其他线段中确定出该线段的关联线段,并计算该线段的关联线段对该线段的贡献度,贡献度用于表征关联线段对该线段作为车道线的影响程度大小;根据每一线段的长度及该线段的关联线段对该线段的贡献度,计算该线段的分值,分值用于表征该线段为车道线的可能性大小;将分值最高的线段及该分值最高的线段的关联线段确定为车道线。
第一处理器120可以实现如本发明图1至图4实施例中所示的相应方法,具体可参见上述实施例一的车道线识别方法对本实施例的车道线识别装置进行说明,此处不再赘述。
在本实施例中,所述存储装置110可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储装置110也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储装置110还可以包括上述种类的存储器的组合。
所述第一处理器120可以是中央处理器(central processing unit,CPU)。所述处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logicdevice,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
实施例三
图6是本发明实施例三提供的一种车辆的结构框图。参见图6,该车辆可包括车身(未显示)、固定在车身上的拍摄装置210及第二处理器220,其中,拍摄装置210与第二处理器220电连接。
本实施例的拍摄装置210用于拍摄车辆前方的道路图像,并发送至第二处理器220。第二处理器220用于识别道路图像中所有线段;并针对每一线段,从其他线段中确定出该线段的关联线段,并计算该线段的关联线段对该线段的贡献度,贡献度用于表征关联线段对该线段作为车道线的影响程度大小;根据每一线段的长度及该线段的关联线段对该线段的贡献度,计算该线段的分值,分值用于表征该线段为车道线的可能性大小;将分值最高的线段及该分值最高的线段的关联线段确定为车道线。
第二处理器220可以实现如本发明图1至图4实施例中所示的相应方法,具体可参见上述实施例一的车道线识别方法对本实施例的车道线识别装置进行说明,此处不再赘述。
本实施例的第二处理器220可以为车辆主控器,也可以为设于车辆上的其他控制器。以第二处理器220为主控器为例进一步说明,本实施例的第二处理器220采用上述方式确定出车道线后,可根据确定出的车道线控制车辆运行,满足基本ADAS功能和自动驾驶功能的需求。
拍摄装置210可以为相机,也可以为图像传感器,具体可根据需要选择拍摄装置210的类型。
实施例四
此外,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例的车道线识别方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明部分实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。