高 越,張 勇,杜學(xué)峰,楊 偉
(長安大學(xué) 汽車學(xué)院,陜西 西安 710064)
在復(fù)雜的交通系統(tǒng)中,采用基于視覺的輔助駕駛技術(shù)是解決當(dāng)前嚴(yán)重交通問題的重要手段之一?,F(xiàn)階段無人駕駛、自動(dòng)駕駛、先進(jìn)駕駛輔助系統(tǒng)中的感知模塊有很大的改進(jìn)空間,車道線檢測是感知模塊中極其關(guān)鍵的一環(huán),傳統(tǒng)的車道線檢測方法中,由于路面的各種車道線磨損導(dǎo)致不清晰或者有陰影遮擋等都會(huì)對(duì)檢測的結(jié)果產(chǎn)生很大干擾[1],從而導(dǎo)致結(jié)果出現(xiàn)很大誤差。
本文旨在克服實(shí)際中難以檢測的場景問題,處理無人駕駛領(lǐng)域中常見的路面損壞,光照變化較快,車道線不清晰等場景,提出了一種基于視覺的無人駕駛汽車和智能網(wǎng)聯(lián)汽車領(lǐng)域的車道線檢測及跟蹤方法,從而實(shí)現(xiàn)智能車輛高級(jí)輔助駕駛中車道線的實(shí)時(shí)檢測及追蹤。
通常的攝像機(jī)可以拍攝出較好的視覺效果,但是卻存在著一個(gè)明顯的問題,就是畸變。攝像機(jī)標(biāo)定是通過對(duì)已知的形狀拍攝圖像,利用確定的攝像機(jī)內(nèi)部參數(shù),結(jié)合若干個(gè)已知的物點(diǎn)和對(duì)應(yīng)像點(diǎn)坐標(biāo),通過正交旋轉(zhuǎn)矩陣計(jì)算該形狀在世界坐標(biāo)系中與在攝像機(jī)坐標(biāo)系中位置的偏差量(畸變系數(shù)),從而進(jìn)行畸變的校正。
本文采用平面棋盤格作為標(biāo)定板來的進(jìn)行攝像機(jī)的標(biāo)定和畸變校正處理,利用OpenCV 庫中cv2.findChessboard Corners()函數(shù)[2],輸入攝像機(jī)拍攝的完整棋盤格圖像,以及交點(diǎn)在橫縱向上的數(shù)量,隨后使用函數(shù)cv2.drawChessboard Corners()繪制出標(biāo)定結(jié)果,如圖1 所示:
圖1 棋盤格檢測
獲取交點(diǎn)的檢測結(jié)果后,使用函數(shù)cv2.calibrateCamera()即可得到相機(jī)的畸變系數(shù)。最后使用函數(shù)cv2.undistort(),進(jìn)行畸變校正處理。
透視變換是一種中心投影的射影變換,將圖像轉(zhuǎn)換為正投影,從而方便后續(xù)的車道線提取和檢測。在原圖像中選擇四個(gè)標(biāo)志點(diǎn),記錄其坐標(biāo),在新圖中選取四個(gè)端點(diǎn)(投影點(diǎn))構(gòu)成矩形對(duì)應(yīng)著原圖中的標(biāo)志點(diǎn),使用函數(shù)cv2.getPerspec-tive Transform()計(jì)算出原圖標(biāo)志點(diǎn)和新圖投影點(diǎn)的投影矩陣,繪制出經(jīng)過投影變換后的圖像。
具體做法是在拍攝的道路圖像中計(jì)算出每個(gè)像素點(diǎn)的橫縱坐標(biāo),沿著左、右車道線的邊界,選擇一個(gè)合適的梯形區(qū)域,將該梯形區(qū)域的四個(gè)頂點(diǎn)坐標(biāo)記錄下來,作為標(biāo)志點(diǎn),在新建的圖中選擇合適的矩形,記錄矩形的四個(gè)頂點(diǎn)作為投影點(diǎn),進(jìn)行透視變換,將圖像轉(zhuǎn)換為正投影,也就是轉(zhuǎn)換成鳥瞰圖視角。如圖2 所示:
圖2 透視變換效果圖
從透視變換處理過的效果圖中可以看出,靠近圖片下方的圖像較為清晰,靠近圖片上方的圖像比較模糊[3]。這是因?yàn)檩^遠(yuǎn)的地方,像素點(diǎn)偏少,從而導(dǎo)致圖像模糊,經(jīng)過處理后整體的圖像都變得較為清晰。
Sobel 算子根據(jù)像素點(diǎn)上下、左右鄰點(diǎn)灰度加權(quán)差,在邊緣處達(dá)到極值這一現(xiàn)象檢測邊緣[4]。
車道線檢測的實(shí)質(zhì)是檢測拍攝的道路圖像中沿著水平方向的邊緣突變,使用cv2.Sobel()函數(shù),進(jìn)行邊緣提取,將進(jìn)行邊緣提取后的圖像進(jìn)行灰度二值化處理,車道線邊緣的像素點(diǎn)為白色,其余位置為黑色。
直方圖是一種二維統(tǒng)計(jì)圖表,它的兩個(gè)坐標(biāo)分別是統(tǒng)計(jì)樣本和該樣本對(duì)應(yīng)的某個(gè)屬性的度量[5]。對(duì)進(jìn)行過邊緣提取的圖像繪制灰度直方圖,將各灰度級(jí)像素對(duì)應(yīng)的頻率統(tǒng)計(jì)出來作為縱坐標(biāo),如圖3 所示:
圖3 直方圖
該灰度直方圖可以較為明顯的分辨出車道線在圖像中的大體位置。左、右兩部分各產(chǎn)生了較為明顯的灰度突變,以此可以推斷出其對(duì)應(yīng)的列數(shù)是左右車道線所處的大致位置。
采用直方圖的方法可以大致檢測出左右車道線的位置,但是確定整條車道線上所有的點(diǎn),尤其是車道線不清晰或者有陰影的情況還有較大的誤差,本文還采取了一種滑動(dòng)窗口的方法來實(shí)現(xiàn)對(duì)車道線上所有點(diǎn)的檢測。
將直方圖中檢測到的兩個(gè)車道線大致位置作為起始點(diǎn),定義一個(gè)矩形區(qū)域(窗口),設(shè)置滑窗高度、窗寬基數(shù)和存儲(chǔ)數(shù)組等,將滑動(dòng)窗口內(nèi)有效的像素橫坐標(biāo)平均值作為基準(zhǔn)坐標(biāo),迭代檢測,重復(fù)搜索[6]。如下圖4 中紅色點(diǎn)和藍(lán)色點(diǎn)所示。然后使用最小二乘法做二次曲線擬合,得到車道線的曲線方程,從而確定車道線的具體位置。
圖4 滑動(dòng)窗口車道線檢測
由于視頻數(shù)據(jù)是連續(xù)的圖片,使用上一幀檢測到的車道線結(jié)果,作為下一幀圖像處理的輸入,從而減少計(jì)算量,得到較為穩(wěn)定的車道線檢測結(jié)果,從而實(shí)現(xiàn)車道線的追蹤處理,如圖5 所示:
圖5 車道線追蹤
為了使最后檢測好的車道線視頻更好地展示出來,還需要對(duì)實(shí)驗(yàn)的結(jié)果進(jìn)行進(jìn)一步的處理。將兩條車道線所圍成的區(qū)域涂上顏色,將結(jié)果繪制在“鳥瞰圖”上后,使用逆透視變換矩陣反投到原圖上,從而使檢測結(jié)果更加直觀明了,如圖6 所示:
圖6 逆透視變換
本文通過長安大學(xué)汽車綜合性能試驗(yàn)場真實(shí)道路視頻輸入,進(jìn)行攝像機(jī)標(biāo)定、圖像畸變校正、透視變換、提取車道線、檢測車道線、跟蹤車道線和逆透視變換等一系列技術(shù)處理,實(shí)驗(yàn)結(jié)果表明,本文所提出的方法較好地實(shí)現(xiàn)了車道線的檢測及追蹤具有良好的準(zhǔn)確性、實(shí)時(shí)性和魯棒性。