劉型定,張 欣,任志強,朱煜君
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴陽 550025)
無人駕駛測距技術(shù)作為自動駕駛中不可或缺的一部分,其精確的測量結(jié)果可以為無人駕駛系統(tǒng)操控汽車行駛提供可靠的數(shù)據(jù)支持。應(yīng)用于無人駕駛的測距技術(shù)一般有雷達(dá)測距技術(shù)、激光測距技術(shù)、超聲波測距技術(shù)等。這些測距技術(shù)存在設(shè)備成本高、測量精度較低、對環(huán)境因素較為敏感、探測角度小等缺點。
視覺測距技術(shù)能夠很好地規(guī)避上述缺陷,目前視覺測距技術(shù)主要分為單目視覺測距和雙目視覺測距。其中,單目視覺測距通過傳統(tǒng)小孔成像物理模型得到目標(biāo)深度信息,因獲取圖像信息量少,其測量精度較低;雙目視覺測距通過模擬人類雙眼來感知物體在環(huán)境中的遠(yuǎn)近,可改變雙目相機的基線來增加其測量范圍,獲取更多環(huán)境信息,成本較低,易于普及。
許多研究者在雙目視覺測距技術(shù)方面進(jìn)行研究并取得了豐碩的研究成果。文獻(xiàn)[5]針對雙目視覺測距誤差大等缺點,提出了一種基于ORB(Oriented Fast and Rotated Brief)特征的雙目測距方法,使用RANSAC(Random Sample Consensus)模型去除誤匹配,該方法在較大程度上消除了像素點的誤匹配,但對于中遠(yuǎn)距離的測量精度具有一定的局限性。文獻(xiàn)[6]運 用 卷 積 神 經(jīng) 網(wǎng) 絡(luò)(Convolutional Neural Network,CNN)多階段多分支結(jié)構(gòu),檢測出圖像中人體的關(guān)鍵點,并得到這些點的坐標(biāo),用三角法原理測量行人距離,為了提高實時性,通過減少關(guān)鍵點數(shù)來降低系統(tǒng)計算量,導(dǎo)致測距精度不太理想。文獻(xiàn)[7]采用微變焦的超分辨率圖像重建雙目測距方法,通過變焦系統(tǒng)進(jìn)行超分辨率重建,提高圖像分辨率,使測距相對誤差得以減小,同時增大測距距離。
基于改進(jìn)雙目視覺算法的測距技術(shù),在對雙目相機標(biāo)定后得到標(biāo)定數(shù)據(jù),使用所得數(shù)據(jù)對雙目圖像進(jìn)行立體校正,采用CLAHE算法對立體校正后的灰度圖像進(jìn)行了預(yù)處理,優(yōu)化視差計算,同時又使用k-means聚類算法選取視差值作為計算深度的視差值,實現(xiàn)雙目視覺測距。
雙目立體視覺測距原理如圖1所示。圖1中,和分別表示雙目攝像機的左攝像頭(左目)和右攝像頭(右目),在理想狀態(tài)下,左目和右目光軸在三維立體空間中相互平行,不存在任何角度交錯。點為目標(biāo)物,利用三角形的相似定理得到目標(biāo)物的深度信息,L與R分別表示左目和右目的成像平面,點在左目和右目中成像的點分別為P和P,就是以兩者成像平面左端點為坐標(biāo)系原點建立坐標(biāo)系,則2點的坐標(biāo)可以表示為(x,y)和(x,y),雙目攝像機的基線為,焦距為,利用三角法獲取目標(biāo)的深度信息。
圖1 雙目測距原理Fig.1 Principle diagram of binocular ranging
根據(jù)論證2個三角形相似的定理可得式(1):
計算可得:
其中,為雙目圖像中某一點的像素視差。
可見只需計算出目標(biāo)點的視差值,便可得到該點深度信息。
在實際情況下,雙目相機因生產(chǎn)或者安裝等不可避免的因素會產(chǎn)生畸變而導(dǎo)致相機成像平面與理想模型存在一定角度偏差,將雙目相機標(biāo)定所得到的標(biāo)定數(shù)據(jù)進(jìn)行圖像校正可以使整個測距系統(tǒng)最大限度接近理想狀態(tài)。使用Matlab R2019b中自帶標(biāo)定軟件進(jìn)行雙目自動標(biāo)定,雙目相機標(biāo)定誤差如圖2所示,具體內(nèi)外參數(shù)結(jié)果見表1。
表1 雙目相機標(biāo)定參數(shù)結(jié)果Tab.1 The results of the calibration parameters of the binocular camera
圖2 雙目相機標(biāo)定誤差結(jié)果Fig.2 Calibration error results of binocular cameras
從標(biāo)定結(jié)果可以得出,平均標(biāo)定誤差約為0.125個像素,且根據(jù)平移向量第一個參數(shù)可知,標(biāo)定的基線距離約為198.759 5 mm,與手動設(shè)定的基線距離200 mm基本一致,標(biāo)定結(jié)果達(dá)到測距要求。
將得到的標(biāo)定數(shù)據(jù)結(jié)果導(dǎo)入OpenCV庫,利用庫中相關(guān)函數(shù)進(jìn)行雙目圖像立體校正以消除畸變,使OpenCV能夠更加精準(zhǔn)地進(jìn)行像素立體匹配以降低視差計算量。對雙目圖像進(jìn)行立體更正,其輸出的結(jié)果為立體校正中所需要的映射矩陣,隨后計算畸變矯正。校正結(jié)果如圖3所示,可看出左目和右目中的同一點基本在一條直線上,圖像畸變基本消除,滿足理想狀態(tài)要求。
圖3 校正后的圖像對Fig.3 Corrected images pair
在視差計算過程中,若圖像局部區(qū)域的細(xì)節(jié)信息沒有得到有效處理,將導(dǎo)致立體匹配計算視差時出現(xiàn)誤匹配,嚴(yán)重影響視差計算結(jié)果。采用直方圖均衡化(Histogram Equalization,HE)技術(shù)增強圖像局部區(qū)域信息,會放大局部噪聲,使圖像失真,若處理的圖像中存在過亮或者過暗的像素信息,經(jīng)過HE處理后,過亮和過暗的圖像區(qū)域可能會出現(xiàn)全白或全黑情況;自適應(yīng)直方圖均衡化(Adaptive Histogram Equalization,AHE)在HE的基礎(chǔ)上進(jìn)行改進(jìn),將需要處理的圖像劃分為幾個區(qū)域,分別對這幾個區(qū)域進(jìn)行處理,這樣的處理方式將會加大系統(tǒng)計算量,降低時間效率,且由于每個單獨的像素塊都需要一個映射函數(shù)進(jìn)行處理,則像素塊與像素塊之間的區(qū)域無法得到邊緣過度處理,最終呈現(xiàn)的圖像效果是不連續(xù)的。為了解決上述問題,Zuiderveld等人對AHE進(jìn)行改進(jìn),提出對比度受限自適應(yīng)直方圖均衡化(CLAHE)的方法。
CLAHE方法主要是通過設(shè)定一個閾值限制局部直方圖幅度來抑制噪點放大,同時將高于閾值部分的灰度像素值均勻分配到各個灰度級中,達(dá)到增強圖像的效果;對于計算效率與圖像效果不連續(xù)的問題,使用雙線性插值法進(jìn)行優(yōu)化,當(dāng)前像素塊的灰度值由與其相鄰的子塊來共同決定,通過此方法進(jìn)行邊緣處理,圖像效果會更加平滑。CLAHE方法數(shù)學(xué)原理如下:
首先,令灰度圖的直方圖累積分布函數(shù)為C(),再將需要處理的圖像分為個正方形像素塊,每個像素塊對應(yīng)的局部映射函數(shù)為式(2):
令直方圖的幅度為H(),則像素塊的局部直方圖累積分布函數(shù)(Cumulative Distribution Function,CDF)為式(3):
對比度的大小可以通過分布函數(shù)的斜率控制,從式(3)可以得出,分布函數(shù)的斜率是由直方圖的幅度來決定,以此控制對比度大小。給定一個最大分布函數(shù)斜率,那么可以得出直方圖的最高幅度為式(4):
在實際處理中,設(shè)定的閾值并不等于式(4)中的,將大于的灰度像素值部分均勻分布在整體灰度級中,這部分灰度像素值所產(chǎn)生的直方圖平均幅度為,則最終改進(jìn)的直方圖函數(shù)為式(5):
如果每個像素塊僅使用本塊的映射函數(shù)進(jìn)行處理,得到的整個圖像將呈塊狀效果,采用插值法優(yōu)化這一問題。
插值法原理如圖4所示。由圖4可知,中間無色區(qū)域?qū)儆诜沁吘壪袼攸c區(qū)域,剩余區(qū)域均屬于邊緣像素點區(qū)域,只有非邊緣像素點能夠進(jìn)行雙線性插值,即該點像素值由其周圍4個像素塊的映射函數(shù)決定,進(jìn)行插值運算;對于有色區(qū)域像素點的像素值由2個像素塊的映射函數(shù)決定,左上、左下、右上、右下角點像素值則由與其對角像素塊的映射函數(shù)決定,再進(jìn)行線性插值運算。
圖4 插值法原理圖Fig.4 Schematic diagram of the interpolation method
將原灰度圖像進(jìn)行HE和CLAHE處理,處理結(jié)果如圖5所示。經(jīng)HE處理的灰度圖的對比度得到了一定增強,但增強效果不明顯;經(jīng)CLAHE處理的灰度圖,整體圖像和細(xì)節(jié)區(qū)域?qū)Ρ榷蕊@著增強,且細(xì)節(jié)信息保存完好。
圖5 優(yōu)化前后效果比較Fig.5 Comparison of the effect before and after optimization
直方圖結(jié)果比較如圖6所示。對比圖6實驗結(jié)果可知,原灰度圖的灰度值基本分布在20~55和190~250的灰度級區(qū)間范圍內(nèi),經(jīng)HE處理后把大部分灰度值均勻分布于80~160之間,僅進(jìn)行了局部均衡;原灰度圖經(jīng)CLAHE優(yōu)化后,高于閾值的灰度值得以均勻分布在整體灰度級中,對直方圖進(jìn)行了全局均衡。
圖6 直方圖結(jié)果比較Fig.6 Comparison of histogram results
選取合適的視差值進(jìn)行深度計算在測距過程中十分重要,采用k-means無監(jiān)督聚類算法來選取目標(biāo)區(qū)域的最佳視差值。
將目標(biāo)區(qū)域內(nèi)的各個像素點視差值轉(zhuǎn)化為一個32位浮點型無標(biāo)記視差矩陣集合,中包含視差值,,…,x,因k-means聚類算法為無監(jiān)督算法,沒有對應(yīng)的分類標(biāo)簽,即在視差集合樣本中找出分類規(guī)律并聚類為個簇。具體的數(shù)學(xué)原理,可做闡釋表述如下。
無差別地在視差集合矩陣中選取個聚類質(zhì)心點,,…,c,即存在個簇R,,,,…,c∈R。
對于每一個視差值,都需要計算其到各個質(zhì)心點的距離,比較個距離,此視差值屬于最小距離所屬質(zhì)心點的簇R,推得的數(shù)學(xué)公式可寫為:
得到個簇,之前所選取的質(zhì)心將會失效,重新選擇質(zhì)心進(jìn)行距離計算,直至迭代得到合理的分類。
因為車窗反光、夜間車燈打開對視差計算影響較大,檢測框接近底部位置的視差值對于計算準(zhǔn)確的深度沒有意義,所以需要對目標(biāo)視差區(qū)域進(jìn)行裁剪,即只選取整個區(qū)域的3/11(包括車燈以下,車輛底盤以上之間)的區(qū)域進(jìn)行聚類,得到的聚類區(qū)域如圖7所示,聚類區(qū)域裁剪還可以降低系統(tǒng)的計算量。
圖7 選擇聚類區(qū)域原理圖Fig.7 Schematic diagram of selecting the clustering area
因目標(biāo)視差值占據(jù)裁剪區(qū)域中的大部分面積,所以選擇2個質(zhì)心點、即2,并取最大質(zhì)心作為計算目標(biāo)深度的視差值。
通過在公開的目標(biāo)檢測框架上對車輛目標(biāo)進(jìn)行測距實驗。設(shè)置系統(tǒng)最大視差值為128,則其理論測距范圍約為1.65~211 m。當(dāng)目標(biāo)物體十分接近雙目相機時,該目標(biāo)區(qū)域是雙目相機的視覺盲區(qū),無法計算視差;目標(biāo)物體越遠(yuǎn),由于相機像素缺陷,視差計算誤差過大。所以遠(yuǎn)距離和近距離的測距數(shù)據(jù)不存在參考價值,通過測距實驗僅選取3~28 m范圍內(nèi)的測距數(shù)據(jù)作為有效距離。測距實驗結(jié)果見表2。
通過分析表2中的測距實驗結(jié)果可知,CLAHE優(yōu)化視差計算對雙目視覺測距精度的提升影響更大,k-means聚類算法進(jìn)一步提升了測距精度。部分車輛測距結(jié)果如圖8所示。
表2 測距實驗結(jié)果Tab.2 Ranging experimental results
圖8 部分車輛測距結(jié)果Fig.8 Partial vehicles ranging results
本文針對傳統(tǒng)立體視覺測距算法測量精度較低的問題,通過CLAHE對雙目灰度圖進(jìn)行預(yù)處理,解決視差計算不準(zhǔn)確的弊端,使中遠(yuǎn)距離測量精度得到一定提升;引入k-means聚類算法優(yōu)化視差選取,使測量精度進(jìn)一步提升。測距實驗結(jié)果表明,基于改進(jìn)的雙目視覺測距方法測距效果表現(xiàn)良好,但對于較遠(yuǎn)距離測量精度不高,后續(xù)將做深入探究和改進(jìn)。