陳 磊,黃影平,胡 興,慈文彥
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200093)
交通場景理解是智能汽車環(huán)境感知系統(tǒng)的基本任務(wù).計算機視覺技術(shù)被廣泛運用于智能汽車.特別是立體視覺技術(shù)所具備的三維重建能力,十分有助于距離測量、物體檢測和場景分析等.雙目視覺技術(shù)中,深度圖的應(yīng)用不僅能夠優(yōu)化圖像分割[1],且在多目標檢測系統(tǒng)[2]中證明了其有效性.場景理解是識別所有移動和靜止的物體,從而確定車輛可能駛?cè)氲淖杂煽臻g,即可通行區(qū)域.棒狀像素模型[3]是解釋交通場景的有效方法之一.通過使用雙目相機裝置,該方法能夠提取障礙物的逐列分段,稱之為“棒狀像素”.每個棒狀像素是一個矩形棒,根據(jù)其相對于相機的3D位置而定義,并且直立于地面上,具有一定的高度.自由空間是圖像中地平面的一個子集,而棒狀像素的存在能夠限定這個位置的自由空間邊界.棒狀像素模型可以實現(xiàn)對各種障礙物的通用檢測,大幅降低數(shù)據(jù)量,為后續(xù)處理提供有效的計算結(jié)果,是一種緊湊有效3D交通場景表達方法.
Badino等人[3]于2009年首次提出棒狀像素模型.其根據(jù)立體圖像計算隨機占據(jù)柵格圖,獲取地平面的自由空間和棒狀像素的基點.通過預(yù)定義的距離知識將視差圖中的前景和背景進行分割,并采用依賴于灰度信息的代價函數(shù)來確定前景和背景之間的邊界,得到棒狀像素的高度.自此,棒狀像素模型的計算方法被廣泛研究.Pfeiffer等人[4]使用6D-Vision卡爾曼濾波器來估計每個棒狀像素的橫向和縱向運動,將原始靜態(tài)棒狀像素模型擴展到動態(tài)棒狀像素模型,幫助檢測移動障礙物.基于顏色提示的像素級語義分割和場景的幾何特征,增強了棒狀像素的估計[5].而卷積神經(jīng)網(wǎng)絡(luò)的利用[6]進一步擴展了該方法.Benenson等人[7]和Wieszok等人[8]提出的方法不需要計算深度圖,在不獲取視差值的條件下,構(gòu)建尺寸為1個像素的窗口計算代價量,作為RGB顏色通道上的絕對差值之和,直接由立體圖像獲取棒狀像素模型.Benenson等人[7]通過代價量得出平滑約束和先驗知識,從而提取棒狀像素.Wieszok等人[8]擴展了這一思想,利用顏色模型和代價函數(shù)改進地平面和棒狀像素的估計.Saleem等人[9]使用共線的三目視覺系統(tǒng)構(gòu)建棒狀像素模型.結(jié)合多圖融合技術(shù),計算視差空間中的傳遞性誤差,從而提高三張配對的立體圖像的視差值一致性,獲得魯棒的棒狀像素結(jié)果.
棒狀像素模型在一些應(yīng)用中使用并證明了其有效性.Enzweiler等人[10]將3D棒狀像素與目標分類的先驗知識進行匹配,實現(xiàn)基于棒狀像素的目標辨識.Schneider等人[11]通過深度學(xué)習(xí)的場景標記方法將深度棒狀像素擴展為語義級棒狀像素,從而為每個像素提供一個對象類標簽.Cordts等人[12]將棒狀像素與圖像語義分割相結(jié)合,進一步增強場景理解.Erbs等人[13]使用動態(tài)棒狀像素模型來檢測和跟蹤交通場景中的運動物體.通過在線顏色建模來分割道路和障礙物,可以進一步增強棒狀像素模型的場景表示[14,15].
本文擴展了Badino[3]的工作,利用U視差的性質(zhì)提出了一種新穎簡單的棒狀像素估計方法.該方法可以規(guī)避某些區(qū)域的視差模糊及丟失帶來的誤差,準確標記出場景中的移動或靜止的前景障礙物平面,獲取多種地形環(huán)境下的自由空間,有效表達交通場景.
雙目立體視覺是從兩個不同的位置觀察物體,從而提取物體的三維信息.圖1顯示了立體相機的安裝方法和相機坐標系與世界坐標系之間的關(guān)系.兩個相同的相機校正后保持光軸平行安裝在車輛上,它們的光心是Ol和Or,水平軸平行于地平面.兩個相機坐標系分別是(Xl,Yl,Zl)和(Xr,Yr,Zr),坐標原點位于圖像的中心.在此模型中,世界坐標系(X,Y,Z)設(shè)置與左相機的坐標系重合.
圖1 理想的雙目立體視覺模型Fig.1 Model of an ideal binocular stereovision
對于場景中的點P(X,Y,Z),將其投影到左圖和右圖以分別獲得Pl(Xl,Yl)和Pr(Xr,Yr).根據(jù)幾何關(guān)系,可以得到式(1):
(1)
那么P點的世界坐標可以計算出來:
(2)
其中,f是相機焦距,b是基線距離.d是視差值,由以下等式表示:
d=xl-xr
(3)
因此,只要計算圖像中的每個點的視差值,便可以獲得場景的三維信息.通過立體匹配算法可以獲得濃密視差圖,存儲實際場景中每個點的視差值,便可將圖像中所有視差非零點的三維信息恢復(fù)到世界坐標系中.
Labayrade首次提出V視差[16]的概念,U視差的原理與之類似.濃密視差圖由立體圖像對獲得,將其表示為δ(u,v),其中1≤u≤Ncol,1≤v≤Nrow.設(shè)H是圖像變量δ的函數(shù),使得δu=H(δ),將δu(u,d)稱為“U視差圖”.H在給定圖像的列上累計相同視差的點,對于圖像列u,δu(u,d)中點的值是該列上具有相同視差d的點的數(shù)量,即:
δu(u,d)=card{u:1≤u≤Ncol∩INT(δ(u,v))=d}
(4)
其中,0≤d≤dmax,表示視差圖δ(u,v)中量化后的視差范圍;INT是取整函數(shù).δu(u,d)的橫坐標u與δ(u,v)的橫坐標是同一個變量,δu(u,d)的縱坐標是視差d.
在實際場景中,可以將相機前方的障礙物平面簡化為兩類:垂直正平面和垂直側(cè)平面.如圖2所示,左相機坐標系(Xl,Yl,Zl)和右相機坐標系(Xr,Yr,Zr)構(gòu)成雙目立體視覺系統(tǒng).為了簡化問題,將世界坐標系的原點設(shè)置在兩個相機坐標系原點的中心,其Z軸平行于水平面,θ是相機光軸與水平面的俯仰角.相機拍照成像時,圖像中點的位置由圖像坐標系(u,v)描述.相機光心投影在圖像平面的中心點,坐標是(u0,v0).
根據(jù)Hu[17]等人的工作,此模型下世界坐標系與圖像坐標系的轉(zhuǎn)換等式為:
(5)
根據(jù)式(3)可以推導(dǎo)出視差的計算等式:
(6)
在世界坐標系中,垂直正平面可以描述為:
Z=p
(7)
當(dāng)θ很小近似于0°時,可認為該面上每個點到相機的距離均為p,結(jié)合U視差原理與式(6)可推導(dǎo)出該障礙物平面在U視差圖中的方程:
(8)
式(8)表明垂直正平面在U視差圖中呈現(xiàn)為一條水平直線.
世界坐標系中得垂直側(cè)平面可以描述為:
Z=ρX+τ
(9)
結(jié)合式(5)(6),可推導(dǎo)出對應(yīng)于立體圖片中左圖的方程:
(10)
當(dāng)俯仰角θ足夠小時,等式(10)可簡化成:
(11)
上式表明垂直側(cè)平面在U視差圖中近似表現(xiàn)為一條斜線.
圖2 世界坐標系下的兩種障礙物平面Fig.2 Two planes of obstacles in world coordinate system
當(dāng)棒狀像素模型被用于描述立體場景時,各個方向上最靠近自車的障礙物被標記為感興趣的對象,即棒狀像素,其背后的物體被視為背景.自由空間是地面上不包含任何障礙物的區(qū)域,即自車可以駛?cè)氲膮^(qū)域.一旦某位置的棒狀像素被確定,它的存在即可排除該位置的自由空間,因此,自由空間與棒狀像素的計算是密切相關(guān)的.對于構(gòu)建棒狀像素模型,其主要任務(wù)是將棒狀像素從地面和背景中區(qū)分出來,并確定它們的高度和距離.本文提出的棒狀像素估計方法利用U視差圖的屬性來完成這些任務(wù).
在駕駛環(huán)境下,場景中的對象可以被分為兩類.第一類是路面,可以抽象為水平面;第二類是近似垂直于地面的障礙物,包括車輛、行人、樹木和路邊建筑,可以抽象為垂直平面.這些平面在U視差圖中具有不同的表現(xiàn)形式.
對于水平平面,由于水平面(道路平面)的覆蓋區(qū)域由近至遠且范圍較大,所以它的視差累積點被分散,即δu(u,d)很小.因此,水平面將離散分布在U視差圖中.
對于兩種垂直平面,已經(jīng)在2.2節(jié)中作了具體推導(dǎo).實際場景中,垂直正平面包括汽車正車身、行人和樹木等對象,路邊建筑、墻面、汽車側(cè)車身等則被認為是垂直側(cè)平面.由于垂直正平面上的點到我方車輛的距離近似相等,即U視差圖中該平面的對應(yīng)點具有相同的視差,因此它在U視差圖中顯示為水平線段,并且線段的長度表示平面寬度.類似地,U視差圖中垂直側(cè)平面對應(yīng)點的視差值是沿橫軸連續(xù)變化的,因此它在U視差圖中顯示為近似斜線段.障礙物的距離取決于其視差,視差越大,障礙物越近.通過在U視差圖中檢測這些線,障礙物的位置及尺寸能夠被確定.
此處以一個典型的交通場景作為示例,圖3(a)是這個場景的左圖.本文使用Geiger提出的立體匹配算法[18]來生成濃密視差圖,該算法可以實現(xiàn)高分辨率圖像的快速匹配,并且無需全局優(yōu)化即可產(chǎn)生精確的濃密重建結(jié)果.結(jié)果如圖3(b)所示.最終生成的U視差圖如圖3(c)所示,其中3D障礙物呈現(xiàn)為水平或傾斜線段,路面則分散在圖中且不能被清楚地觀察到.
由于地面相關(guān)點具有小的灰度并且離散地分布在U視差圖中,因此可以通過設(shè)置合適的灰度閾值將它們?nèi)コ?圖4(a)是去除了地面相關(guān)點并且二值化后的U視差圖.將圖4(a)與圖3(c)進行比較,可以觀察到只有障礙物信息被保存下來,呈現(xiàn)為水平線段和斜線段.另外,該步驟消除了一些具有偏差視差的離散點,從而使距離估計更準確.
圖3 U視差圖的構(gòu)建Fig.3 Construction of U-disparity map
圖4(a)中點群的位置反映了它與相機的距離,位置越低則距離越近.為了去除背景障礙物,可以簡單地保留較低點并丟棄同一列上的較高點.然而,在實際交通場景中,某些障礙物可能含有缺乏紋理的區(qū)域,導(dǎo)致濃密視差圖中部分點的視差丟失.那么,圖4(a)中對應(yīng)于該障礙物的線段則會不連續(xù)或中斷.因此,不在圖4(a)中進行背景剔除,而是通過以下轉(zhuǎn)換來生成壓縮的U視差圖,從而規(guī)避這一影響.
圖4 地面點與背景點的剔除Fig.4 Elimination of ground points and background points
圖4(a)被分成多個寬度為w的小矩形,將U視差圖橫向壓縮成圖4(b).壓縮的U視差圖可以寫成式(12)的形式:
(12)
然后,對圖4(b)中每列的點從下到上進行遍歷.當(dāng)連續(xù)搜索到具有非零值的點時,將其視為前景對象并保留下來,同時將其上方的點作為背景點丟棄.結(jié)果如圖4(c)所示.
根據(jù)式(13)的轉(zhuǎn)換關(guān)系,將去除背景后的壓縮U視差圖重新轉(zhuǎn)換為U視差圖:
(13)
式中Q是重新生成的U 視差圖,s和t分別是Q的橫坐標和縱坐標.T是去除背景的壓縮U視差圖,即圖4(c).重新生成的U視差圖如圖4(d)所示.
圖4(d)所示的U視差圖僅包含前景障礙物的相關(guān)點,而其他點均被移除.因此,將圖4(d)投影回濃密視差圖能夠提取前景障礙物的基點和頂點.
U視差圖中的任意一個點都是從對應(yīng)的視差圖中的一個或多個點計算得到的,我們將視差圖中的這些點稱為“貢獻點”.反過來,視差圖中的任意一個點均對應(yīng)于U視差圖中的唯一點.該映射關(guān)系可以在圖5中描述為三維到三維的空間映射.在圖5中,I1是三維U視差圖,I2是與之對應(yīng)的三維視差圖.I1和I2具有相同的橫坐標(U).I1中的垂直坐標(D)是視差值,而I2中的垂直坐標(V)是圖像行數(shù).I1中的第三坐標(N)表示同一列中具有相同視差的點的數(shù)量,而I2中的第三坐標(D)與I1中的縱坐標相同.橫坐標和垂直坐標定義位置,而第三坐標表示圖像的灰度值.I1中的坐標系(U,D,N)可以描述為以下函數(shù):
N=Φ(U,D)
(14)
I2中的坐標系(U,V,D)可以表示為:
D=Δ(U,V)
(15)
(16)
在I2的第a列中搜索視差為b的點,便可以確定未知數(shù){j1,j2,…,js}.因此,可以獲得貢獻點P*1(a,j1,b),P*2(a,j2,b),…,P*s(a,jc,b).對應(yīng)地,視差圖中的點P1(a,j1),P2(a,j2),…,Pc(a,jc)可以被確定.
將圖4(d)映射到濃密視差圖后得到圖6,可以注意到部分障礙物點群內(nèi)部含有少量空洞.這是由于將點群從U視差空間映射到視差圖時,視差的匹配搜索使得一些視差錯誤點無法被匹配到,從而被剔除,保證了視差的準確性,有利于后續(xù)步驟的距離估計.
圖5 U視差圖到視差圖的映射Fig.5 Mapping from U-disparity map to disparity map
圖6中地面相關(guān)點和背景相關(guān)點全部被消除,僅保留前景障礙物,可以直接在圖中提取基點和背景邊界.如圖7所示是原始場景圖中標記出的前景障礙物基點和頂點.
圖6 視差圖中被投影的貢獻點Fig.6 Projected contribution points in the disparity map
當(dāng)圖像中每列的基點和頂點被計算出來,就可以直接提取棒狀像素.如果棒狀像素的預(yù)定義寬度大于一列,則將前一步驟中獲得的多列高度值融合起來,得到棒狀像素的高度.
圖7 基點與頂點Fig.7 Base and top-points
棒狀像素的距離根據(jù)其中所有貢獻點的主要距離來進行估計.由于在構(gòu)建棒狀像素模型時,偏差點已經(jīng)被去除,因此每個貢獻點均具有準確的視差值.圖8示出了棒狀像素以及對應(yīng)的自由空間,棒狀像素的灰度代表距離信息.
圖8 棒狀像素模型Fig.8 Stixel World
算法在配置1.6GHz的四核英特爾i5處理器和8GB內(nèi)存的計算機中運行.從KITTI公共數(shù)據(jù)集[19]中選擇City、Road、Residential和Campus等場景類別的圖像序列作為實驗數(shù)據(jù),圖像分辨率為1240×375像素.取棒狀像素寬度為10個像素,得到棒狀像素和自由空間的結(jié)果如圖9所示,棒狀像素的灰度值呈現(xiàn)了距離信息.
圖9 不同場景下實驗結(jié)果Fig.9 Experimental results in different scenarios
本文的重點是棒狀像素邊界的準確提取而不是距離測量,距離估計的準確性取決于立體匹配算法[18].將檢測到的基點、頂點與手動標記的真實值進行比較,通過棒狀像素的位置誤差來評估算法.每幀圖像的基點均方根誤差以及頂點均方根誤差分別通過式(17)(18)進行計算:
(17)
(18)
其中,Nstx表示圖像中棒狀像素的數(shù)量,Bi和Ti分別是檢測得到的基點位置和頂點位置,bi和ti分別表示基點位置和頂點位置的真實值,基點和頂點的位置值以像素為單位.從不同類別的場景中各選擇100幀圖像,對本文算法和傳統(tǒng)算法[3]分別進行實驗.根據(jù)式(17)、(18)計算每幀圖像的基點誤差和頂點誤差,從而得出不同場景下的平均誤差,以此來比較兩種算法準確性.
在表1和表2中,分別展示了各個圖片序列的平均基點誤差和平均頂點誤差.比較兩種算法可見,本文的算法較傳統(tǒng)算法的在基點與頂點的提取精度上有提高.
表1 與傳統(tǒng)方法的基點誤差比較
Table 1 Comparison of base-point error
圖片序列基點誤差(像素)本文算法傳統(tǒng)算法City2.84.2Road6.37.7Residential2.93.1Campus4.87.4
在實際應(yīng)用中,算法的計算效率也是衡量其性能的重要因素之一.基于立體視覺的棒狀像素提取方法中,立體匹配是其中的一個關(guān)鍵環(huán)節(jié).不同的立體匹配算法,其準確度和計算耗時有較大差異.由于本文方法與傳統(tǒng)方法采用的的立體匹配算法不同,而本文與傳統(tǒng)方法的主要不同在于棒狀像素的提取方法不同,所以實驗僅對棒狀像素的計算時間進行比較,來對比兩種方法的運行效率.
表2 與傳統(tǒng)方法的頂點誤差比較
Table 2 Comparison of top-point error
圖片序列頂點誤差(像素)本文算法傳統(tǒng)算法City5.08.7Road5.43.2Residential6.67.1Campus6.75.5
圖10 棒狀像素計算時間比較Fig.10 Comparison of stixel computation time
在實驗中,對棒狀像素取不同的寬度,統(tǒng)計平均的計算時間,結(jié)果如圖10所示.取棒狀像素寬度為12個像素時,兩種算法運行時間比較接近;隨著棒狀像素寬度的減小,傳統(tǒng)算法的計算時間呈遞增趨勢,而本文算法的計算時間則保持穩(wěn)定.考慮到實際應(yīng)用中的精度要求,棒狀像素的寬度一般不超過10個像素.由此可看出,本文提出的算法相較傳統(tǒng)算法減少了計算時間,提高了運行效率.
構(gòu)建棒狀像素的傳統(tǒng)算法與本文算法均基于深度信息,Benenson等人[7]提出的算法直接對立體圖片進行計算,不需要獲取視差圖.將本方法的結(jié)果與該算法的結(jié)果進行比較.采用文獻[7]的評估方法:對于一個給定的像素偏離誤差,統(tǒng)計圖像中低于該誤差的棒狀像素的數(shù)量占比,作為得分來評估算法,高分值說明性能好.圖11給出了棒狀像素的基點及頂點的比較結(jié)果.如圖11(a)所示,本文算法提取基點的精度較Benenson算法有一定的提升;由圖11(b)可見,當(dāng)給定的誤差小于20像素時,本文算法提取頂點具有優(yōu)勢;大于該值時,Benenson算法提取頂點稍微好一些.
圖11 與Benenson方法的棒狀像素精度比較Fig.11 Comparison of stixel accuracy with benenson method
1)對于1240×375分辨率的圖像,單幀圖像的棒狀像素均方根誤差在10個像素以內(nèi),較傳統(tǒng)算法和Benenson算法都有一定的提高.
同時,算法在計算速度方面有所提升.由于本算法對基點和頂點進行整體投影和提取,棒狀像素個數(shù)的變化并不影響計算效率.當(dāng)棒狀像素寬度為5、7、10個像素時,相比傳統(tǒng)算法,棒狀像素的計算時間分別減少了59%、40%、22%.
2)本算法的適用場合并不局限于平坦道路.圖9(b)中展示了輕度上坡路面的棒狀像素提取結(jié)果,圖9(c)顯示了坑洼路面的計算結(jié)果.從實驗可以看出,本算法能夠識別前景障礙物并為場景生成準確的棒狀像素模型.
3)場景圖像的像素點達到105數(shù)量級.計算并定義每個像素點,對系統(tǒng)的計算能力是一個巨大的挑戰(zhàn).在本方法中,只需要少量的包含距離和位置信息的棒狀像素便能夠表達交通場景,大幅減少了計算開銷,簡化了場景的分析過程.
本文利用U視差的性質(zhì),提出了一種新穎簡單的棒狀像素估計方法.U視差圖中障礙物相關(guān)點呈現(xiàn)為水平或傾斜線段,而地面相關(guān)點分散地分布在U視差圖中.通過灰度閾值化處理消除地面相關(guān)點,根據(jù)距離信息去除背景障礙物.得到的U視差圖僅包含前景障礙物相關(guān)點,將其投影回視差圖進行匹配,從而確定前景障礙物的基點和頂點,提取棒狀像素.實驗結(jié)果表明,該方法可以有效地構(gòu)建多種場景的棒狀像素模型.
與現(xiàn)有的棒狀像素估計算法相比,這項工作的貢獻可以總結(jié)如下:
1)現(xiàn)有算法[3]采用基于灰度的代價函數(shù)并結(jié)合預(yù)定義的距離閾值來分割前景和背景.本文提出的方法直接在U視差圖中去除背景和地面相關(guān)點,將所得的U視差圖重新投影回視差圖來提取圖像每列的基點和頂點.
2)提出的方法不需要對地平面進行建模,因此,它不受地形的約束.無論是在傾斜路面或是在坑洼路面上,算法都能正常工作.
3)立體匹配算法的局限性可能會導(dǎo)致視差圖存在視差錯誤或丟失的情況.本文的方法中,地面相關(guān)點的去除以及壓縮U視差圖中對數(shù)據(jù)的模塊化處理,有利于規(guī)避這一誤差.
4)算法在保證低誤差的同時,提升了運行速度.
本算法準確性受到視差圖精度的局限,且大部分計算時間消耗于視差圖的生成.在今后工作中,開發(fā)出高精度、高實時性的立體匹配算法,是進一步提升性能的關(guān)鍵.