劉金清, 陳存弟
1(福州外語外貿學院, 福州 350202)
2(福建師范大學 光電與信息工程學院 醫學光電科學與技術教育部重點實驗室, 福州 350007)通訊作者: 劉金清, E-mail: 2060008441@qq.com
自動駕駛是智能交通的必然產物, 而機器視覺感知技術是自動駕駛中的“眼睛”, 它能夠通過對無人駕駛車輛所在的路面車輛動態圖像進行智能識別以實現安全駕駛.本文主要研究無人車所在路面的車輛動態圖像的智能識別技術, 基于嵌入式平臺選擇適用于高速路的車道檢測、車輛監測和跟蹤算法.
近些年, 車道檢測和車輛跟蹤技術的進步得益于國內外學者廣泛的關注與研究.車道檢測技術有: 基于逆透視變換的方法[1,2], 基于Hough 變換的方法[3,4], 基于拋物線的方法[5], 基于B 樣條曲線的方法[6,7].
適用于車輛檢測的目標檢測算法主要以深度學習算法為主, 如以CNN 結構為基礎的AlexNet、GoogleNet、LeNet[8]、VGG、ResNet 等算法, 而這些算法需要高性能CPU+GPU 作為訓練和運行載體, 因而并不適用于嵌入式平臺上的實時性要求.基于Adaboost 分類器簡單且運算量較小, 較容易移植到嵌入式平臺.
基于動態背景下的車輛跟蹤方法有: 基于卡爾曼濾波KF (Kalman Filter)的車輛跟蹤[9,10], 基于擴展卡爾曼濾波EKF (Extended Kalman Filter)的車輛跟蹤[11],基于均值漂移(Mean-Shift)的車輛跟蹤[12], 基于粒子濾波PF (Particle Filter)的車輛跟蹤[13,14], 基于核化相關濾波KCF (Kernelized Correlation Filters)的車輛跟蹤[15],基于一種新的單目標長時間跟蹤TLD (Tracking Learning Detection)的車輛跟蹤[16], 基于多示例學習MIL (Multiple Instance Learning)的車輛跟蹤[17,18].本文選用適用于多目標跟蹤且非線性系統的粒子濾波算法來實現車輛跟蹤.
車道經過攝像機成像后, 由原先三維空間中的客觀物體投影在二維空間上, 車道線不可避免地在圖像中出現透視效果.針對任意的分辨率圖像, 如本文處理的路面圖像大小為480×320, 在算法設計時先設置分道線最大寬度為 ML W=0.1×IW=48個 像素, 其中 IW表示圖像寬度.假設路面的ROI 區域高度為 RO I_H, 那么從ROI 區域的底部到消失點所在的行數, 其分道線寬度的變化可用(1)表達式表示:ROI 區域內, 針對第i 行的LW, 計算坐標( c,r)點的灰度值與 (c- LW,r) 點灰度值之差diffL和坐標為( c,r)點和(c+LW,r)點的灰度值之差diffR, 再綜合diffL和diffR的

利用式(1)和式(2)遍歷原圖I, 可表述為: 在差值來重定義原來的灰度圖.

圖1(a)為重新定義的灰度圖F, 圖1(b)為二值化的結果.

圖1 自適應閾值二值化
圖2 中, 白色橫線處的灰色分布如圖3 所示, 分道線的灰度值與路面灰度值之差約為100.利用式(3)擴展得到式(4), 車道分割自適應閾值Th 就為:Th=I(c,r).data/2, 接下來使用Th 對圖像F 進行二值化處理, 得到圖1(b)結果.

圖2 路面上白色橫線

圖3 白色橫線路面灰度值

成像路面不但包含有真正的分道線, 而且還有偽分道區域, 要想擬合出正確的分道線, 就必須剔除偽分道線.如圖4 所示, 分道線經過相機系統投影成像后,分道線表現有如下特征:

圖4 車道最小矩形模型
(1)分道線是細長的連通域.
(2)求白色連通域的最小矩形, 可知道其與水平邊的夾角控制在一定的范圍內, 夾角范圍為 θ ∈ [20,70].
(3)白色連通域所含的像素數不可能很小.
(4)分道線質心所在的行不小于圖像高度的2/3.
本文使用Suzuki S 提出的輪廓提取算法[19]尋找二值圖的輪廓, 首先提取二值圖連通域輪廓, 接著提取每個輪廓的最小矩形, 同時計算每個連通域最小矩形的質心, 根據以上的4 點特征, 過濾掉多余的偽分道線.結果如圖5 所示.
高速結構路面上同向車道經常被分成幾條車道,由虛線、實線、虛實線和雙實隔開.為了避免在分道線擬合時同一車道錯誤識別為多條車道, 有必要對斷裂的車道線進行合并.圖6 為合并示意圖.

圖5 車道分割結果

圖6 車道拼接示意圖
(1)斷裂的分道線或虛線分道線, 其連通域之間是上下關系, 加上相機系統投影成像后出現透視效果的原因, 行間距相差不大: | y1-y2|<T1.
(2)最小矩形與水平線的角度θ 相差不大:|θ1-θ2|<
(3)根據最小矩形的質心和t anθ求得的直線表達式能以最短的距離交于彼此的最小矩形區域.如圖6(b)中 L1和 L2的延長線彼此相交于最小矩形.
(4)針對虛實分道線或者雙實分道線, 依據兩個連通域最小矩形與水平線的夾角不大15°的規則:|θ1-θ2|≤15, 提取斜邊最長的連通域作為最終的分道線.
如圖7 所示, 分別是斷裂分道線的連接結果和多余分道線連接結果.
針對車道中的直線分道線部分, 用直線方程擬合,而對于車道中曲線分道線部分, 采用的是基于Catmullrom[6]的樣條曲線擬合.
(1)斜截式:y=kx+b
(2) Catmull-rom splines
Catmull-rom 樣條曲線實質上是三次多項式(式(5)).假設有兩點 pi和 pi+1, 且已知兩點對應的導數為和 pi+1′, 根據 pi、 pi+1、 pi′和 pi+1′計算處多項式的系數 aj, j=0,1,2,3 , 便可擬合兩點的曲線.本文將 pi和pi+1相 鄰兩點的斜率作為 pi′和 pi+1′導數, 得到樣條曲線的表達式(6).從式(6)可以看出, 如果要擬合兩點之間的曲線, 則須知道4 個坐標點.

(3)直線方程擬合車道
車道上用于Catmull-Rom 擬合的點模型如圖8 所示.取接近圖像底部的兩點計算出直線方程, 并延伸到車道圖像的底邊緣.擬合結果如圖9 所示, 延長直線即是以直線方程擬合的結果.

圖7 分道線提取結果

圖8 曲線擬合點模型

圖9 車道直線部分
(4) Catmull-spline 擬合曲線車道
取 p1, p2,p3,pv作為Catmull-spline 算法的擬合坐標點, pv是 p2和 p3的線性方程延長點, 因此擬合出來的樣條曲線能經過 p1, p2,p33 點, 如圖10 所示.

圖10 彎曲車道擬合
針對無人車在高速路上不變更車道或者不超車的情況下, 只檢測當前行駛車道, 既能降低路面車道檢測算法的復雜度, 又能提高運行速度和檢測的準確度.本文基于HSV 顏色空間和Sobel 梯度設置一定的閾值范圍來分割單車道.
1.6.1 路面圖像二值化
如圖11 為車道圖像的RGB 空間圖像和HSV 空間圖像.圖12(a)是Sobel 水平方向邊緣圖.根據HSV顏色空間特性和Sobel 邊緣特性, 各自設定特定的閾值, 便可以得到分割出路面的二值圖.經過大量的實驗數據比較, 本文設定S 通道灰度值在 S g ∈[170, 255],V 通道灰度級設定在 Vg∈[30,255], Sobel 圖灰度值轉成 [0, 255] 范圍后設定的灰度閾值為 S bg∈[65,100], 如果滿足關系則認為是分道線.如圖12(b)所示即是分割后的路面二值圖.

圖11 HSV 顏色空間各通道圖

圖12 車道二值化圖像
1.6.2 基于透視變換提取分道線坐標點
基于透視變換提取分道線坐標點的步驟如下:
(1)車輛的視覺傳感器安裝后位置方向均固定不變, 因此, 可以根據拍攝到的路面圖像, 預先設定車道的ROI 區域.如圖13(a)所示.

圖13 尋找透視空間車道點
(2)設定ROI 區域主要是用在二值圖中, 對ROI區域透視變換, 如圖13(b)所示.
(3)在透視空間尋找分道線的坐標點.將透視空間分成左右兩半, 分別以小矩形滑動窗口的方式遍歷出左右分道線的坐標點.滑動窗口自下往上計算在滑動窗口中的投影值, 取投影值最大的列和窗口底邊所在的行作為透視空間中的分道線坐標點, 如圖13(b)的紅點.
1.6.3 基于二次多項式擬合分道線
選用二次多項式來擬合分道線.對于多項的求解,可定義為對給定的一組數 (xi,yi),i=0,1,···,m, 求次數不超過m 的多項式(7)且滿足差平方之和最小式(8):

根據式(8)求得系數 ai得到 Pn(x)即是最小二乘擬合的多項式.如圖14(a)所示, 紅點表示原來提取到的點, 藍點所示二次多項式擬合后的點.將透視空間的坐標點逆變換到原圖像上, 其結果如圖14(b)所示.

圖14 單車道透視結果
本文檢測車輛是基于HOG+Adaboost[20]分類算法和基于車底陰影特征相結合的方法.
車輛檢測框圖如圖15 所示.

圖15 車輛檢測框圖
HOG 相關參數:
① cell 單元為8×8 像素;
② [ 0,2π]劃分成9 個bins;
③ 設置block 大小為16×16 像素, 滑動步長為4×4.
每個cell 的特征矢量維度為9, 2×2 個cell 組成block 對應的特征矢量維度為36.所有待訓練的車輛圖像均尺度縮小為32×32, 且block 的滑動窗口步長為4,因此一幅圖像的HOG 特征維度為36×7×7=1764.將特征向量輸入由多個強分類器組成的Cascade[21]分類器,得到最終的分類結果.車輛檢測結果圖16 所示.

圖16 車輛檢測結果
為了過濾Adaboost 算法的誤檢區域, 引入車底陰影的方法作為車輛的校驗, 同時能找到車輛底部與路面的交線, 有助于建立三維模型精確計算車距.
2.2.1 提取車輛區域子圖并二值化
對2.1 節得到的車輛矩形框放大一倍得到車輛區域子圖 Fbw, 接著依據結構路面上分道線與路面的灰度級分布近似呈正態分布的規律, 計算出相應的閾值來二值化車輛區域子圖.本文二值化方法如下:
(1)高速路面上的安全車距一般保持在50 米以上,因此在圖像底部設定一個ROI 區域能夠確保僅包含有路面而不會包含其他車輛, 稱該子圖為 Fl, 如圖17 所示.

圖17 F l 子圖
(2)灰度化 Fl, 計算灰度均值μ 和路面方差 σ:

(3)統計路面像素點: gσ(x,y)∈[μ-σ,μ+σ], 然后求像素點的均值 μσ和方差σσ:



圖18 二值化
2.2.2 提取車底陰影與路面的交線
本文根據以下規則來提取車底陰影與路面交線:
(1)在圖 Fbw下半區域尋找車底陰影塊.如圖19(a)所示, 車底陰影的上下線分布關系為:

(2)遍歷所有獨立陰影區域的最小列 mi n_L、最大列 ma x_R 和最大行 ma x_D, 兩兩比較獨立陰影區域的最大行y 間距, 滿足式(12)關系則合并為一個陰影區:

(3)計算 ma x_R 和 mi n_L之差, 如式(13), 其差值大于 Fbw寬1/4 的陰影區域可初步設定為車底陰影.

(4) max_R 和 mi n_L之差最大時作為陰影與路面的交線, 如圖19(b).
(5)對于不能在(1, 2, 3, 4)驗證規則中找到陰影區域的矩形框認定為非車輛區域.結果如圖19(c)和圖19(d)所示.

圖19 檢測結果
相機以30 f/m 的速度采集, 且車輛在高速路上行駛的最高速度為120 km/h, 最低速度為60 km/h, 故可計算出幀間車輛行駛的距離為(0.55-1.11) m, 可引入跟蹤算法.粒子濾波是一種基于蒙特卡洛方法, 其核心思想是從后驗概率中抽取隨機狀態粒子來近似蒙特卡洛積分, 進而估計出下一個跟蹤狀態.該方法切合于所有能用狀態空間模型表示的非線性系統, 濾波過程中抽取的隨機狀態粒子可以逼近最優估計的精度.
將車輛的粒子模型定義為:

其中, x、y 是最優估計中心位置, s 是尺度因子, xp、yp是 前一幀的最優估計中心位置, sp是前一幀的尺度因子, x0和 y0保 存 檢 測 到 的 車 輛 原 始 坐 標; w idth和height 分別是車輛區域的寬和高, w是粒子的權重.histogram是維度為110 的HSV 顏色直方圖, 本文的提取規則為式(15)所示:

提取規則中, H、S 和V 為HSV 空間中的3 個通道像素值, 認為分量 V 或者 S的值小于0.2 為無色塊, 則將無色塊的直方圖分配在下標為 [10 0,109]之間, 否則將 S 和 V分量值各分成10 個區間, 組合成維度為100 的特征矢量, 因此, 基于HSV 的顏色直方圖采集每個車輛的特征矢量維度為110.
計算前一幀車輛所有粒子的狀態轉移預測, 實質上是在獲取車輛目標后, 在目標附近場景中按照高斯分布的規則分撒粒子來搜索目標對象.本文在動態二階自回歸模型中融入高斯分布規則來實現粒子更新,如式(16)所示:

得到本幀的所有粒子狀態轉移結果, 粒子的屬性有:

A1與A2系數分別表示相鄰幀跟蹤結果的信任度和間隔幀的信任度.粒子濾波的觀測概率密度函數以第n 個粒子的歸一化顏色直方圖與前一幀最優狀態估計的歸一化顏色直方圖的相似度來衡量.顏色直方圖歸一化為式(17)所示:

計算兩個歸一化顏色直方圖的巴氏距離作為該粒子的權重值, 權重值越大的粒子, 說明該粒子與上一幀的最優估計車輛區域越相近.假設前一幀的歸一化顏色直方圖為 Hp[i], 當前幀歸一化顏色直方圖為 H[i], 其巴氏距離 pw的計算公式為式(18):

計算完一個車輛目標的所有粒子權重后, 歸一化權重以更好地衡量每個粒子的相對作用度, 歸一化后最大權重的粒子可以被視為本次跟蹤的最優狀態評估.車輛長時間跟蹤過程中總會出現粒子退化現象, 傳統的重采樣方法是直接刪除與目標對象不相似的粒子,依據權重大小復制與目標對象相似度高的粒子.傳統的重采樣方法:
① 大到小的順序對預測的粒子權重排序如下:

② 假設每個跟蹤目標的粒子數為 Nu m個, 按權重大小順序復制粒子數為:

③ 循環②步, 根據權重順序累加 npi個權重為pwi的粒子, 直到累加數量達到N um個則停止復制粒子.
傳統重采樣方法盡管能夠解決粒子退化問題, 但缺陷是粒子的多樣性缺失問題被引入.本文設置跟蹤目標的粒子數為 Nu m=50 個, 當有效粒子數 Neff少于30 個時則認為粒子退化.消除退化的粒子, 也就是對粒子重采樣, 同時確保粒子不失多樣性.本文改進的重采樣方法如下:
(1)計算有效粒子數 Neff, 若則進入步驟(2), 否則跳到步驟(3).
① 隨機選取粒子 , 找到距離 最小的m=6 個粒子.
② 求m+1 個粒子的加權平均值:

④ 循環①~③步, 利用 Uj產生新的粒子來代替原來權重大于 wph的粒子, 并且補充原來剔除掉小于wpl的粒子, 直到粒子數達到 Nu m則停止粒子的產生.
⑤ 重置每個粒子的權重為: w pj=1/Num.
圖20 為粒子退化圖, 可看出粒子散布很散亂且范圍大, 這是由于隨著迭代次數的增加, 大部分粒子的權重會縮小, 少部分的粒子權重變得極大, 導致粒子間的權重方差會隨著迭代次數而不斷增大產生的.圖21 是采用傳統的重采樣法更新的粒子圖, 由圖可看出按照權重排序來復制粒子時, 權重越大的粒子被復制的數量越多, 導致顯示在圖像上的粒子數量越少, 繼而引進粒子多樣性降低問題.如圖22 所示, 為了既能克服粒子退化問題又能解決傳統重采樣方法導致粒子多樣性缺失問題, 本文改進的粒子重采樣方法, 不但提高了粒子分布的多樣性, 而且粒子能夠均勻地分布在車輛區域中.

圖20 粒子退化

圖21 傳統的重采樣法粒子圖

圖22 改進的重采樣粒子圖
6 種不同性質路面上的多車道檢測實驗結果如圖23所示.
3 種不同性質路面上的單車道檢測實驗結果如圖24所示.
不同幀次的車輛視頻跟蹤實驗結果如圖25 所示.
本文使用多個視頻流來檢驗算法的檢測結果.4.1 節中使用兩個路段上的路面視頻測試多車道算法,截取6 張正常光照路面、減速標志路面、隧道路面、彎曲路面和上坡路面上的車道檢測結果; 4.2 節是單車道在有陰影、強光和花白路面的結果; 4.3 節截取的是第1、10、40、60、70、90、100、150、200 幀的跟蹤結果.通過實驗結果可看出, 本文檢測結果良好, 有助于進一步地移植在嵌入式平臺并實現車道偏離報警和前向防撞系統.
對于車輛檢測, 檢測集200 張圖片, 有248 個車輛,采用不同算法實驗統計檢測到的車輛識別率和誤檢區域個數如表1 所示.采用傳統的單獨使用Hog+Gentle-Adaboost 算法, 檢測到的車輛有239 個, 誤檢區域52 個;采用Hog+Gentle-Adaboost 算法結合車底陰影校驗算法檢測到的車輛有239 個, 誤檢區域只有2 個, 大大減少誤檢的區域個數, 進而避免跟蹤算法不必要的跟蹤運算, 提高跟蹤效率.實驗表明采用本文檢測算法效果良好.
本文車道檢測與車輛跟蹤算法[22]能較好地檢測高速路段車輛行駛的分道線和前方車輛, 可靠性和準確性較高, 較容易移植到嵌入式平臺.盡管目前的深度學習算法對目標檢測精度較高, 但是難以在嵌入式平臺得到運用, 而且本文的算法是針對視頻流處理, 所采用的Hog+Adaboost 算法檢測到車輛后則使用跟蹤算法實現車輛的跟蹤, 能在嵌入式平臺內存和運算能力有限的情況下得到可靠的運用.
針對車道檢測, 本文將車道分為單車道和多車道來檢測, 對于正常光照路面、減速標志路面、隧道路面、彎曲路面和上坡路面均能得到較好的結果.

圖23 多車道檢測實驗結果圖

圖24 單車道檢測實驗結果圖
針對車輛跟蹤, 采用動態二階自回歸模型的方法預測車輛的狀態.對于粒子濾波固有的粒子退化問題,創新性地引入Thompson_Taylor 算法改善了粒子退化和低多樣性的缺陷.
針對車輛檢測, 首先使用Hog+Gentle-Adaboost 分類算法實現無人車前方路面車輛的檢測, 接著基于車底陰影的特征對車底陰影進行檢測以驗證學習算法檢測到的車輛區域的真偽性, 同時提高了車輛的跟蹤效率.

圖25 車輛檢測與跟蹤結果圖

表1 采用不同算法的車輛識別率和區域誤檢數對比表
不足之處是車道檢測和車輛檢測算法過于繁瑣,接下來的研究工作是優化算法, 進一步結合嵌入式平臺實時運行本文算法, 同時根據車道提取和車輛檢測反饋的結果, 基于機器視覺建立車距檢測模型, 不但要檢測出前方車輛與本車的距離, 還要計算出前方車輛相對于攝像機光軸的偏轉角度, 以實現車道偏離的及時報警.