羅勝,趙麗,王慕抽
(溫州大學(xué) 計(jì)算機(jī)與人工智能學(xué)院,溫州 325000)
目前,道路執(zhí)法的視覺(jué)監(jiān)控系統(tǒng)中,從靜態(tài)攝像頭中抽取語(yǔ)義信息的自動(dòng)化程度較高[1-6],能自動(dòng)識(shí)別并記錄違規(guī)違法行為;但是架設(shè)在執(zhí)法車(chē)上的動(dòng)態(tài)攝像頭,其信息處理和自動(dòng)化程度較低,無(wú)法自動(dòng)識(shí)別違規(guī)違法行為,甚至無(wú)法準(zhǔn)確解析道路結(jié)構(gòu)。解析道路結(jié)構(gòu)是自動(dòng)化動(dòng)態(tài)執(zhí)法的基礎(chǔ)和關(guān)鍵。尤其在高速道路上,識(shí)別出快車(chē)道和慢車(chē)道、路肩,隨機(jī)動(dòng)態(tài)執(zhí)法,可以提高高速道路的通行效率,消除安全隱患。而且,道路結(jié)構(gòu)化解析也是無(wú)人駕駛、輔助行駛、自主導(dǎo)航等智能系統(tǒng)至關(guān)重要的基礎(chǔ)技術(shù)。
近幾十年來(lái),各國(guó)研究者提出了自頂向下[7]、自底向上[6,8-13]的人工設(shè)計(jì)算法,抽取道路特征解析道路,但是難于普適多種道路,而且往往側(cè)重于當(dāng)前車(chē)輛兩側(cè)的兩條車(chē)道線。其中,最為經(jīng)典的方法是基于Hough變換檢測(cè)車(chē)道[8],但其計(jì)算速度低。因此,Satzoda等[9]提出利用多層次Hough變換來(lái)提高計(jì)算速度,Katru[10]采用分支、合并的并行方法提高計(jì)算速度。另外,Wang等[11]提出基于B-snake的車(chē)道模型以描述更廣泛的車(chē)道結(jié)構(gòu),Jung和Kelber[12]提出近場(chǎng)采用線性函數(shù)、遠(yuǎn)場(chǎng)采用二次函數(shù)的拋物線車(chē)道模型,Bertozzi和Broggi[13]采用附加非線性項(xiàng)的擴(kuò)展雙曲線處理直線和曲線之間的過(guò)渡。近十年來(lái),深度學(xué) 習(xí) 迅 猛 發(fā) 展,迅 速 出 現(xiàn) 了 LaneNet[14]、3DLaneNet[15]、LaneNet+H-Net[16]、LineNet[17]、SCNN[18]、UPSNet[19]等 準(zhǔn) 確 自 動(dòng) 化 解 析 道 路 的 網(wǎng)絡(luò),能夠結(jié)構(gòu)化解析道路上的全部車(chē)道,但是計(jì)算設(shè)備復(fù)雜、昂貴,并不適合架設(shè)在車(chē)上。
傳統(tǒng)的車(chē)道檢測(cè)算法把圖像空間的邊緣線經(jīng)Hough變換到ρ-θ空間,根據(jù)車(chē)道線總是長(zhǎng)線的特點(diǎn)定位到累加值較大的候選點(diǎn),再回到圖像空間篩選候選線段。這種思路具有以下缺點(diǎn):①需要把圖像空間邊緣上的所有點(diǎn)都投影到離散的ρ-θ空間,然后對(duì)ρ-θ空間的每個(gè)點(diǎn)進(jìn)行篩選,并對(duì)每條候選線段再次篩選,流程長(zhǎng),算法復(fù)雜,時(shí)間和空間復(fù)雜度都很高;②得到的ρ-θ空間候選點(diǎn)并不與道路線一一對(duì)應(yīng),而是零散、重復(fù)甚至包含不相關(guān)的線段,導(dǎo)致圖像空間篩選候選線段的處理比較復(fù)雜,檢測(cè)結(jié)果不準(zhǔn)確。因此,Ding等[20]采用增強(qiáng)RANSAC進(jìn)行線段篩選。事實(shí)上,圖像空間邊緣點(diǎn)上就有梯度信息,對(duì)此梯度計(jì)算直方圖,長(zhǎng)線總是峰值,而且此直方圖比Hough變換后的ρ-θ空間更直觀。但是,此直方圖綜合了整個(gè)圖像各個(gè)位置相同角度線段的梯度,并不能獨(dú)立篩選出車(chē)道線。而Hough變換后的ρ-θ空間中有距離ρ變量,因此能夠?qū)⒏鱾€(gè)直線區(qū)分開(kāi)來(lái)。如果結(jié)合這2種信息,就可以簡(jiǎn)化ρ-θ空間和直線段的篩選步驟,簡(jiǎn)化算法,提升檢測(cè)效果。
基于以上思路,本文提出了梯度直方圖和Hough變換互補(bǔ)的算法,具有以下優(yōu)點(diǎn):①用邊緣點(diǎn)的梯度直方圖篩選ρ-θ空間的候選點(diǎn);②用動(dòng)態(tài)規(guī)劃的方法在剩余的ρ-θ空間候選點(diǎn)中尋找最合理的車(chē)道線組合。這種算法能夠大幅降低時(shí)間和空間復(fù)雜度,提高檢測(cè)效率,并且能夠定位道路上的所有車(chē)道,為動(dòng)態(tài)執(zhí)法提供結(jié)構(gòu)化的道路信息。
本文算法流程如圖1所示,分為邊緣檢測(cè)、邊緣點(diǎn)梯度統(tǒng)計(jì)、Hough變換、非最大值抑制和動(dòng)態(tài)規(guī)劃等步驟,最后輸出檢測(cè)到的多車(chē)道數(shù)據(jù)。

圖1 本文算法流程Fig.1 Flowchart of proposed algorithm
采用常規(guī)的邊緣檢測(cè)方法,如canny算子,對(duì)輸入的圖像抽取邊緣。為提高計(jì)算速度,采取了以下2個(gè)措施:①由于定位車(chē)道計(jì)算出車(chē)道線在圖像中的相對(duì)位置,把分辨率較高的輸入車(chē)道圖像降采樣為只有960×800的低分辨率圖像;②由于車(chē)道主要位于圖像的下半部分,并且車(chē)道線的消失點(diǎn)通常位于圖像中間的一個(gè)矩形框內(nèi),假設(shè)矩形框高度和寬度為整個(gè)圖像的1/10,同時(shí)車(chē)道線的角度在-80°~80°范圍內(nèi),將圖像的下半部分、-80°~80°的范圍設(shè)置為感興趣區(qū)域。預(yù)處理效果如圖2所示。

圖2 輸入圖像及感興趣區(qū)域部分的邊緣Fig.2 Original image and edges of ROI
對(duì)感興趣區(qū)域中的所有點(diǎn),在原圖像的灰度圖中計(jì)算梯度。為提高梯度的準(zhǔn)確性,擴(kuò)大了鄰域范圍,采用5×5的濾波器,權(quán)重如圖3所示。統(tǒng)計(jì)每個(gè)梯度角度上的邊緣點(diǎn)數(shù)目,得到邊緣點(diǎn)梯度統(tǒng)計(jì)直方圖,如圖4所示。因?yàn)槭菍?duì)整個(gè)感興趣區(qū)域進(jìn)行統(tǒng)計(jì),同一傾角但不同線段上的邊緣點(diǎn)會(huì)被合計(jì)成一個(gè)值。

圖3 梯度濾波器Fig.3 Gradient filter

圖4 邊緣點(diǎn)梯度統(tǒng)計(jì)直方圖Fig.4 Gradient statistic histogram of edge points
Hough變換將圖像空間的參數(shù)離散化成累加器[2]。Hough變換如下:

將圖像中的點(diǎn)坐標(biāo)(x,y)轉(zhuǎn)換到參數(shù)空間(ρ,θ),每個(gè)點(diǎn)對(duì)應(yīng)的累加器值加1。通過(guò)改變?chǔ)押挺戎担塬@得大量累加器,如圖5中灰點(diǎn)所示。由于參數(shù)空間中的累加器會(huì)出現(xiàn)局部最大值,通過(guò)檢測(cè)該局部最大值,能夠?qū)ふ业礁采w多數(shù)點(diǎn)(x,y)的直線參數(shù)方程(ρ,θ)。

圖5 邊緣的Hough空間圖像Fig.5 Image of Hough space of all edges
車(chē)道線往往是圖像下半部分中最長(zhǎng)的線,因此取邊緣點(diǎn)梯度統(tǒng)計(jì)直方圖中的峰值mi。Hough變換進(jìn)行了離散化處理,每個(gè)峰值mi向左右2個(gè)方向拓展Δm,因此在Hough變換的ρ-θ空間中,保留[mi-Δm,mi+Δm]間的候選點(diǎn),去除非其余最大值角度中的候選點(diǎn),如圖6所示。圖6中綠色的區(qū)間就是結(jié)合梯度的方向和Hough變換的位置信息篩選出的候選區(qū)域。
車(chē)道線往往是各個(gè)角度最長(zhǎng)的線,因此只保留每列的最大值,如圖6所示。圖6綠色區(qū)間的白色點(diǎn)就是每列的最大候選點(diǎn)。相鄰車(chē)道線間存在夾角,因此把每個(gè)候選區(qū)域中的候選點(diǎn)[]合并成一個(gè)候選點(diǎn)ci,ci的位置參數(shù)(ρi,θi)為此段候選點(diǎn)[]中累加值最大的候選點(diǎn)的位置參數(shù),累加值A(chǔ)i為候選點(diǎn)[]中累加值[]的平均值:

篩選后的候選點(diǎn),相比由Hough變換得到的初始候選點(diǎn),數(shù)量大為減少,僅有幾十個(gè)。如圖6中紅色叉點(diǎn)所示,候選點(diǎn)的準(zhǔn)確性提高。

圖6 Hough空間候選點(diǎn)的三次篩選Fig.6 Candidate points in Hough space filtered for 3 times
將候選點(diǎn)升序排列,分別做為概率矩陣K的行和列。概率矩陣K中,(θl,θr)位置的元素為plr,表示左車(chē)道線的角度為θl、右車(chē)道線的角度為θr時(shí)車(chē)道成立的概率。在非最大值抑制步驟已經(jīng)確定了θl的距離為ρl、θr的距離為ρr,因此(ρl,θl)代表了左車(chē)道線、(ρr,θr)代表了右車(chē) 道線。概率plr為

式中:pl為左車(chē)道線成立的概率;pr為右車(chē)道線成立的概率;pw為左右車(chē)道線間寬度成立的概率;ps為左右車(chē)道線長(zhǎng)度成立的概率。

式中:pl為左車(chē)道線(ρl,θl)Hough變換后累加值A(chǔ)l與候選點(diǎn)中最大累加值A(chǔ)m的比值;pr為右車(chē)道線(ρr,θr)Hough變換后累加值A(chǔ)r與Am的比值;pw為左右車(chē)道線間寬度dlr與車(chē)道經(jīng)驗(yàn)寬度d0的比率;H為圖像的高度;ps為左右車(chē)道線累加值比值接近1或接近0.33的程度;r0為左右車(chē)道線累加值比值。
按照高速道路的設(shè)計(jì)規(guī)則,最左邊或者最右邊的車(chē)道線是實(shí)線,其余車(chē)道線是虛線,虛線實(shí)線長(zhǎng)2m,間隔長(zhǎng)4m,占空比為0.33。如果左右車(chē)道線累加比值為1或者0.33,左右車(chē)道線成為相鄰車(chē)道線的概率最大,其余比值下概率就小。
因此,概率矩陣K中的元素包括左車(chē)道線(ρl,θl)、右車(chē)道線(ρr,θr)、寬度dlr和概率plr等4個(gè)屬性。概率矩陣中的元素是一條車(chē)道的成立概率,因此車(chē)道檢測(cè)就是在概率矩陣中從左上角到右下角的路徑尋找最優(yōu)的車(chē)道組合方案。采用動(dòng)態(tài)規(guī)劃選擇路徑內(nèi)各車(chē)道概率均值最大、寬度方差最小的方案為最優(yōu)的組合。目標(biāo)函數(shù)s定義為

動(dòng)態(tài)規(guī)劃步驟如下:
步驟1在概率矩陣中找到最大的k個(gè)值,構(gòu)成k個(gè)初始種子組合。
步驟2從步驟1的種子方案向右邊生長(zhǎng),如第i個(gè)方案為pi=[],其最后車(chē)道在矩陣中的位置為(li,ri)。在ri行找到寬度相近、概率最大的m個(gè)車(chē)道,其概率值為(t∈[0,m]),放入方案中作為新的、最右邊的成員,計(jì)算此方案的概率均值和寬度方差。
步驟3從所有種子方案中挑選出概率均值和寬度方差加權(quán)和最大的前k個(gè)組合。
步驟4迭代步驟2、步驟3,直到右邊沒(méi)有候選點(diǎn)。
步驟5將種子方案向左邊生長(zhǎng),按步驟2、步驟3迭代直到左邊沒(méi)有候選點(diǎn)。
步驟6選擇概率均值和寬度方差加權(quán)和最大的方案作為結(jié)果。
按高速道路設(shè)計(jì)原則,道路最左和最右的車(chē)道線是實(shí)線,最右車(chē)道線的右邊是路肩。因此,動(dòng)態(tài)規(guī)劃尋優(yōu)得到的方案中,最左線段累加值與此方案中各線段最大累加值的比值應(yīng)接近1;如果最左的多條相鄰線段的比值相近且都接近1,那么選擇該多條相鄰線段中最右的線段為方案的最左車(chē)道線,其余作為圍欄等干擾,從方案中去除;如果最右的多條相鄰線段的比值相近且都接近1,那么選擇該多條相鄰線段中最左的線段為方案的最右車(chē)道線,最左的線段右邊鄰接線段作為路肩,其余作為圍欄等干擾,也從方案中去除。
從筆者拍攝的高速行駛視頻中抽取200張?jiān)u測(cè)本文算法,結(jié)果如圖7所示。圖7中紅線是最左、最右車(chē)道線,紫線是路肩的車(chē)道線,綠線是淘汰的干擾線,中間的紅點(diǎn)為消失點(diǎn)。可以看出,本文算法能夠準(zhǔn)確地檢測(cè)出實(shí)車(chē)道線、虛車(chē)道線、路肩,結(jié)構(gòu)化解析高速道路,可以用于高速道路的動(dòng)態(tài)執(zhí)法。

圖7 高速道路的車(chē)道檢測(cè)結(jié)果Fig.7 Lane detection results of expressways
本文算法主要針對(duì)高速道路的結(jié)構(gòu)化解析。為了驗(yàn)證本文算法對(duì)普通道路的效果,也從筆者拍攝的行駛視頻中抽取50張進(jìn)行評(píng)測(cè)。與高速道路不同,普通道路最右實(shí)車(chē)道線的右邊沒(méi)有路肩,因此對(duì)動(dòng)態(tài)規(guī)劃的規(guī)則進(jìn)行了相應(yīng)修改,結(jié)果如圖8所示。與圖7相同,圖中紅線是最左、最右車(chē)道線,綠線是淘汰的干擾線,中間的紅點(diǎn)為消失點(diǎn)。圖8中間的例子,由于停車(chē)的遮擋,左邊的實(shí)車(chē)道線被誤檢為虛線。可以看出,本文算法能夠較準(zhǔn)確地檢測(cè)出實(shí)車(chē)道線、虛車(chē)道線,結(jié)構(gòu)化解析普通道路,也可以用于普通道路的動(dòng)態(tài)執(zhí)法。

圖8 普通道路的車(chē)道檢測(cè)結(jié)果Fig.8 Lane detection results of urban roads
為了評(píng)比本文算法的性能,將其與傳統(tǒng)的Hough變換車(chē)道檢測(cè)[8]、層次化Hough變換車(chē)道檢測(cè)[9]、擴(kuò)展雙曲線模型車(chē)道檢測(cè)[13]及深度學(xué)習(xí)的LaneNet[14]、UPSNet[19]在i7-6700K處理器(無(wú)GPU)、MATLAB2017的平臺(tái)上進(jìn)行了對(duì)比。從KITTI[21]的高速道路中選擇100張樣本作為測(cè)試集。如果檢測(cè)到的車(chē)道線段有30%或者以上落在ground truth中,就認(rèn)為是正確檢測(cè)到車(chē)道;否則失敗。定義準(zhǔn)確率為檢測(cè)到的車(chē)道線是真正車(chē)道線的數(shù)量比例,即

召回率為檢測(cè)正確的車(chē)道線占ground truth中全部車(chē)道線的比率,即

式中:TP(True Positive)為正確檢測(cè)到的真實(shí)車(chē)道線數(shù)量;TN(True Negative)為將非車(chē)道線檢測(cè)為真實(shí)車(chē)道線的數(shù)量;FP(False Negative)為未檢測(cè)到的真實(shí)車(chē)道線數(shù)量。
實(shí)驗(yàn)結(jié)果如表1所示。

表1 不同算法的性能對(duì)比Tab le 1 Com parison of perform ance between different algorithm s
基于傳統(tǒng)的Hough變換車(chē)道檢測(cè)[8]的準(zhǔn)確率和召回率只有63.47%和59.04%,速度只有8.2 FPS;基于層次化Hough變換的車(chē)道檢測(cè)[9]的準(zhǔn)確率和召回率均有較大提高,達(dá)到了76.29%和73.34%,速度提高更快,達(dá)到了32.7 FPS;基于擴(kuò)展雙曲線模型車(chē)道檢測(cè)[13]的準(zhǔn)確率和召回率一步提高到79.57% 和87.13%,速度為23.6 FPS;LaneNet[14]和UPSNet[19]都 是 基 于 深 度學(xué)習(xí),沒(méi)有GPU的支持,速度只有18.4 FPS和13.6 FPS,但是準(zhǔn)確率分別達(dá)到92.81%(最大值)和89.96%,召回率也分別達(dá)到93.19%和91.37%;本文算法篩選掉了大部分偽車(chē)道線,能夠去掉陰影和近似印跡,但是容易受車(chē)輛遮擋,準(zhǔn)確率為91.23%,不如LaneNet算法的92.81%,但是召回率達(dá)到了最大值94.18%,而且檢測(cè)速度也達(dá)到了最大值36.5 FPS。
1)相比于傳統(tǒng)的基于Hough變換車(chē)道檢測(cè)的算法,本文算法利用邊緣梯度減少了Hough變換后候選點(diǎn)的數(shù)量,基本上排除了不含車(chē)道線信息的Hough空間候選點(diǎn),保留了包含車(chē)道線信息的候選點(diǎn),并采用動(dòng)態(tài)規(guī)劃篩選出真實(shí)車(chē)道線,定位到道路上的全部車(chē)道,結(jié)構(gòu)化解析高速道路,能夠用于道路的動(dòng)態(tài)執(zhí)法。
2)算法簡(jiǎn)單,計(jì)算資源耗費(fèi)少,能夠用于實(shí)時(shí)的道路分析檢測(cè)。