蘇 詩(shī) 陳壯豪 尚小慶 郭風(fēng)朋
(上海交通大學(xué)機(jī)械與動(dòng)力工程學(xué)院 上海 200240)
車道線識(shí)別是智能安全駕駛領(lǐng)域非常重要與基本的技術(shù)組成部分。在智能駕駛中,利用算法對(duì)圖像中的兩條車道線進(jìn)行識(shí)別,并判斷車道線的左右,對(duì)于智能車的研究具有重要的意義。目前,國(guó)內(nèi)外研究人員提出了多種基于單目視覺(jué)的車道線識(shí)別和左右車道線判別方法:1998年Bertozzi和Broggi[1]提出了利用逆透視變換的方式來(lái)提取車道線;2013年Shang[2]等人利用消失點(diǎn)提取車道線;楊喜寧等[3]為提高車道線識(shí)別的實(shí)時(shí)性和可靠性,提出了一種基于改進(jìn)Hough變換的車道線檢測(cè)方法;彭紅等[4]提出一種將道路結(jié)構(gòu)模型信息與擴(kuò)展卡爾曼濾波器相結(jié)合的車道線檢測(cè)算法;張浩等人提出了一種基于車道線寬度特征的車道線識(shí)別方法[5];賈俊等人提出了一種基于線型約束和卡爾曼濾波的車道線提取與生成方法[6];孫悅等人基于單目視覺(jué)提出了一種車道邊緣檢測(cè)及中心線提取算法[7]。但是上述方法只是單純的識(shí)別出車道線,并沒(méi)有對(duì)無(wú)人車循跡做進(jìn)一步的研究。為實(shí)現(xiàn)對(duì)無(wú)人小車循跡的精準(zhǔn)控制,本文提出了一種基于純追蹤算法和車道線識(shí)別的預(yù)瞄點(diǎn)檢測(cè)方法。
本文使用的無(wú)人小車采用全套國(guó)產(chǎn)硬件設(shè)計(jì),其中車身主控板、底盤驅(qū)動(dòng)板定制開(kāi)發(fā);小車主控軟件基于 Ubuntu下開(kāi)源的 ROS 軟件平臺(tái)設(shè)計(jì),為使用者復(fù)用免費(fèi)的開(kāi)源代碼提供便利并通過(guò)標(biāo)準(zhǔn)化的接口簡(jiǎn)化使用者開(kāi)發(fā)過(guò)程。圖1為無(wú)人小車外形圖。圖2為無(wú)人小車系統(tǒng)主要組成與關(guān)系圖。
圖1 無(wú)人駕駛小車外形圖Fig.1 Appearance of the unmanned car
圖2 系統(tǒng)主要組成與關(guān)系圖Fig.2 System main composition and relationship diagram
3.1.1 圖像灰度化
攝像頭采集的原始圖像包含豐富的色彩信息,但是這些色彩信息容易受到外界條件的影響,不利于車道線的精準(zhǔn)識(shí)別。因此我們需要把原始的RGB車道線圖像轉(zhuǎn)換到灰度圖圖像,為之后的圖像分割、圖像識(shí)別和圖像分析等操作做準(zhǔn)備?;叶茸儞Q公式如下:
Gray(i,j)=0.299×R(i,j)+0.578×G(i,j)+
0.114×B(i,j)
(1)
其中Gray(i,j)為轉(zhuǎn)換后的灰度圖像在(i,j)點(diǎn)處的灰度值。
3.1.2 圖像二值化
圖像的二值化就是將圖像上的灰度值設(shè)置為0或者255,也就是將整個(gè)圖像呈現(xiàn)出明顯的只有黑和白兩種視覺(jué)效果,本文選取二值化閾值為150,二值化時(shí)灰度值變化公式如下:
(2)
3.1.3 ROI區(qū)域選取和逆透視變換
逆透視變換是當(dāng)前國(guó)內(nèi)外車道線檢測(cè)研究使用得比較多的一個(gè)方法,OpenCV中提供了透視變換的接口,在原圖和結(jié)果圖上分別設(shè)定4個(gè)相對(duì)應(yīng)的點(diǎn),這八個(gè)點(diǎn)就確定了原圖到逆透視圖的轉(zhuǎn)換矩陣。逆透視變換過(guò)程如下:
(3)
經(jīng)過(guò)大量實(shí)驗(yàn),本文最終選取ROI區(qū)域?yàn)樾≤嚽胺?.5米以內(nèi)、左右1米以內(nèi)的區(qū)域。如圖3,是對(duì)車道線選取ROI區(qū)域后進(jìn)行逆透視變換前后的結(jié)果。
圖3 ROI區(qū)域逆透視變換圖Fig.3 Perspective transformation map of ROI area
對(duì)圖像進(jìn)行預(yù)處理之后,本文首先通過(guò)直方圖來(lái)確定一條車道線作為小車追蹤車道線,然后采用滑窗法搜索圖像中的所有車道線像素點(diǎn),最后使用這些像素點(diǎn)來(lái)擬合二次曲線模型獲得最終的車道線。
將車道線離散為多個(gè)窗口,然后通過(guò)比較直方圖像素值的最大點(diǎn)來(lái)確定車道線起始點(diǎn)。
由圖4可以看出,像素值為30左右的區(qū)域?yàn)樽畲簏c(diǎn),則選取左側(cè)車道線為車道檢測(cè)開(kāi)始的點(diǎn)。取高斯分布曲線的頂點(diǎn)作為起始窗口的中心位置,采用滑窗法提取左側(cè)車道線,滑窗法的基本原理是將一個(gè)矩形窗口沿著一定的路徑從圖像底部滑動(dòng)至頂部,并在滑動(dòng)的過(guò)程中逐步搜索窗口內(nèi)部的車道線像素點(diǎn)。
通過(guò)大量實(shí)驗(yàn),本文選取二次函數(shù)來(lái)對(duì)車道線進(jìn)行擬合。擬合公式如下:
x=ay2+by+c
(4)
其中x,y均為車道線像素坐標(biāo)。
如圖5所示,我們采取大小相同的窗口來(lái)對(duì)左側(cè)車道線進(jìn)行提取,從最下方開(kāi)始直到最上方,其中窗口里的紅色曲線是提取的左側(cè)車道線。
將車輛模型簡(jiǎn)化為自行車模型,純跟蹤算法以車后軸為切點(diǎn),車身縱向車身為切線,通過(guò)控制前輪轉(zhuǎn)角,使車輛可以沿著一條經(jīng)過(guò)目標(biāo)點(diǎn)的圓弧行駛,如圖6所示,其中(gx,gy)為規(guī)劃路徑上的預(yù)瞄點(diǎn);ld為預(yù)瞄距離,即后輪與預(yù)瞄點(diǎn)的距離;α為車與預(yù)瞄點(diǎn)的夾角。根據(jù)正弦定理可得到:
(5)
(6)
(7)
(8)
k是圓弧的曲率,在以車輛中心為原點(diǎn),前進(jìn)方向?yàn)閥軸正向建立起的坐標(biāo)系下,純追蹤模型的表達(dá)式形式為:
(9)
其中L為前后輪軸心距離。
從提取的目標(biāo)車道線中選取靠近屏幕上方的一個(gè)車道線像素點(diǎn)(本文選取坐標(biāo)軸索引值八分之一點(diǎn))為目標(biāo)像素點(diǎn),計(jì)算此點(diǎn)斜率,然后求出過(guò)該點(diǎn)與切線垂直直線的方程,順著這條直線向道路中心延伸半個(gè)道路寬度得到的點(diǎn)就是預(yù)瞄點(diǎn)。
如圖7所示實(shí)驗(yàn)結(jié)果,本文算法可以完成在直道車道線和彎道車道線的檢測(cè),同時(shí)小車在直道和彎道行駛時(shí)都可以實(shí)時(shí)正確地得到預(yù)瞄點(diǎn)的位置。
(a) 沿左車道線直線行駛
本文提出的基于純追蹤算法的車道線目標(biāo)點(diǎn)識(shí)別方法,首先對(duì)原始車道線圖像進(jìn)行預(yù)處理,然后通過(guò)車道線起點(diǎn)檢測(cè)以及滑動(dòng)窗口方法來(lái)搜索車道線像素點(diǎn),接著對(duì)車道線進(jìn)行二次函數(shù)擬合,最終得到了精確的車道線模型,隨后運(yùn)用純追蹤算法在提取的車道線基礎(chǔ)上得到小車行駛的預(yù)瞄點(diǎn)。通過(guò)實(shí)驗(yàn)表明,本文的算法能夠在直道和彎道情況下對(duì)車道線和預(yù)瞄點(diǎn)均有較好的識(shí)別和檢測(cè)結(jié)果。