劉型定,張 欣,任志強,朱煜君
(貴州大學 大數據與信息工程學院,貴陽 550025)
無人駕駛測距技術作為自動駕駛中不可或缺的一部分,其精確的測量結果可以為無人駕駛系統操控汽車行駛提供可靠的數據支持。應用于無人駕駛的測距技術一般有雷達測距技術、激光測距技術、超聲波測距技術等。這些測距技術存在設備成本高、測量精度較低、對環境因素較為敏感、探測角度小等缺點。
視覺測距技術能夠很好地規避上述缺陷,目前視覺測距技術主要分為單目視覺測距和雙目視覺測距。其中,單目視覺測距通過傳統小孔成像物理模型得到目標深度信息,因獲取圖像信息量少,其測量精度較低;雙目視覺測距通過模擬人類雙眼來感知物體在環境中的遠近,可改變雙目相機的基線來增加其測量范圍,獲取更多環境信息,成本較低,易于普及。
許多研究者在雙目視覺測距技術方面進行研究并取得了豐碩的研究成果。文獻[5]針對雙目視覺測距誤差大等缺點,提出了一種基于ORB(Oriented Fast and Rotated Brief)特征的雙目測距方法,使用RANSAC(Random Sample Consensus)模型去除誤匹配,該方法在較大程度上消除了像素點的誤匹配,但對于中遠距離的測量精度具有一定的局限性。文獻[6]運 用 卷 積 神 經 網 絡(Convolutional Neural Network,CNN)多階段多分支結構,檢測出圖像中人體的關鍵點,并得到這些點的坐標,用三角法原理測量行人距離,為了提高實時性,通過減少關鍵點數來降低系統計算量,導致測距精度不太理想。文獻[7]采用微變焦的超分辨率圖像重建雙目測距方法,通過變焦系統進行超分辨率重建,提高圖像分辨率,使測距相對誤差得以減小,同時增大測距距離。
基于改進雙目視覺算法的測距技術,在對雙目相機標定后得到標定數據,使用所得數據對雙目圖像進行立體校正,采用CLAHE算法對立體校正后的灰度圖像進行了預處理,優化視差計算,同時又使用k-means聚類算法選取視差值作為計算深度的視差值,實現雙目視覺測距。
雙目立體視覺測距原理如圖1所示。圖1中,和分別表示雙目攝像機的左攝像頭(左目)和右攝像頭(右目),在理想狀態下,左目和右目光軸在三維立體空間中相互平行,不存在任何角度交錯。點為目標物,利用三角形的相似定理得到目標物的深度信息,L與R分別表示左目和右目的成像平面,點在左目和右目中成像的點分別為P和P,就是以兩者成像平面左端點為坐標系原點建立坐標系,則2點的坐標可以表示為(x,y)和(x,y),雙目攝像機的基線為,焦距為,利用三角法獲取目標的深度信息。

圖1 雙目測距原理Fig.1 Principle diagram of binocular ranging
根據論證2個三角形相似的定理可得式(1):

計算可得:

其中,為雙目圖像中某一點的像素視差。
可見只需計算出目標點的視差值,便可得到該點深度信息。
在實際情況下,雙目相機因生產或者安裝等不可避免的因素會產生畸變而導致相機成像平面與理想模型存在一定角度偏差,將雙目相機標定所得到的標定數據進行圖像校正可以使整個測距系統最大限度接近理想狀態。使用Matlab R2019b中自帶標定軟件進行雙目自動標定,雙目相機標定誤差如圖2所示,具體內外參數結果見表1。

表1 雙目相機標定參數結果Tab.1 The results of the calibration parameters of the binocular camera

圖2 雙目相機標定誤差結果Fig.2 Calibration error results of binocular cameras
從標定結果可以得出,平均標定誤差約為0.125個像素,且根據平移向量第一個參數可知,標定的基線距離約為198.759 5 mm,與手動設定的基線距離200 mm基本一致,標定結果達到測距要求。
將得到的標定數據結果導入OpenCV庫,利用庫中相關函數進行雙目圖像立體校正以消除畸變,使OpenCV能夠更加精準地進行像素立體匹配以降低視差計算量。對雙目圖像進行立體更正,其輸出的結果為立體校正中所需要的映射矩陣,隨后計算畸變矯正。校正結果如圖3所示,可看出左目和右目中的同一點基本在一條直線上,圖像畸變基本消除,滿足理想狀態要求。

圖3 校正后的圖像對Fig.3 Corrected images pair
在視差計算過程中,若圖像局部區域的細節信息沒有得到有效處理,將導致立體匹配計算視差時出現誤匹配,嚴重影響視差計算結果。采用直方圖均衡化(Histogram Equalization,HE)技術增強圖像局部區域信息,會放大局部噪聲,使圖像失真,若處理的圖像中存在過亮或者過暗的像素信息,經過HE處理后,過亮和過暗的圖像區域可能會出現全白或全黑情況;自適應直方圖均衡化(Adaptive Histogram Equalization,AHE)在HE的基礎上進行改進,將需要處理的圖像劃分為幾個區域,分別對這幾個區域進行處理,這樣的處理方式將會加大系統計算量,降低時間效率,且由于每個單獨的像素塊都需要一個映射函數進行處理,則像素塊與像素塊之間的區域無法得到邊緣過度處理,最終呈現的圖像效果是不連續的。為了解決上述問題,Zuiderveld等人對AHE進行改進,提出對比度受限自適應直方圖均衡化(CLAHE)的方法。
CLAHE方法主要是通過設定一個閾值限制局部直方圖幅度來抑制噪點放大,同時將高于閾值部分的灰度像素值均勻分配到各個灰度級中,達到增強圖像的效果;對于計算效率與圖像效果不連續的問題,使用雙線性插值法進行優化,當前像素塊的灰度值由與其相鄰的子塊來共同決定,通過此方法進行邊緣處理,圖像效果會更加平滑。CLAHE方法數學原理如下:
首先,令灰度圖的直方圖累積分布函數為C(),再將需要處理的圖像分為個正方形像素塊,每個像素塊對應的局部映射函數為式(2):

令直方圖的幅度為H(),則像素塊的局部直方圖累積分布函數(Cumulative Distribution Function,CDF)為式(3):

對比度的大小可以通過分布函數的斜率控制,從式(3)可以得出,分布函數的斜率是由直方圖的幅度來決定,以此控制對比度大小。給定一個最大分布函數斜率,那么可以得出直方圖的最高幅度為式(4):

在實際處理中,設定的閾值并不等于式(4)中的,將大于的灰度像素值部分均勻分布在整體灰度級中,這部分灰度像素值所產生的直方圖平均幅度為,則最終改進的直方圖函數為式(5):

如果每個像素塊僅使用本塊的映射函數進行處理,得到的整個圖像將呈塊狀效果,采用插值法優化這一問題。
插值法原理如圖4所示。由圖4可知,中間無色區域屬于非邊緣像素點區域,剩余區域均屬于邊緣像素點區域,只有非邊緣像素點能夠進行雙線性插值,即該點像素值由其周圍4個像素塊的映射函數決定,進行插值運算;對于有色區域像素點的像素值由2個像素塊的映射函數決定,左上、左下、右上、右下角點像素值則由與其對角像素塊的映射函數決定,再進行線性插值運算。

圖4 插值法原理圖Fig.4 Schematic diagram of the interpolation method
將原灰度圖像進行HE和CLAHE處理,處理結果如圖5所示。經HE處理的灰度圖的對比度得到了一定增強,但增強效果不明顯;經CLAHE處理的灰度圖,整體圖像和細節區域對比度顯著增強,且細節信息保存完好。

圖5 優化前后效果比較Fig.5 Comparison of the effect before and after optimization
直方圖結果比較如圖6所示。對比圖6實驗結果可知,原灰度圖的灰度值基本分布在20~55和190~250的灰度級區間范圍內,經HE處理后把大部分灰度值均勻分布于80~160之間,僅進行了局部均衡;原灰度圖經CLAHE優化后,高于閾值的灰度值得以均勻分布在整體灰度級中,對直方圖進行了全局均衡。

圖6 直方圖結果比較Fig.6 Comparison of histogram results
選取合適的視差值進行深度計算在測距過程中十分重要,采用k-means無監督聚類算法來選取目標區域的最佳視差值。
將目標區域內的各個像素點視差值轉化為一個32位浮點型無標記視差矩陣集合,中包含視差值,,…,x,因k-means聚類算法為無監督算法,沒有對應的分類標簽,即在視差集合樣本中找出分類規律并聚類為個簇。具體的數學原理,可做闡釋表述如下。
無差別地在視差集合矩陣中選取個聚類質心點,,…,c,即存在個簇R,,,,…,c∈R。
對于每一個視差值,都需要計算其到各個質心點的距離,比較個距離,此視差值屬于最小距離所屬質心點的簇R,推得的數學公式可寫為:

得到個簇,之前所選取的質心將會失效,重新選擇質心進行距離計算,直至迭代得到合理的分類。
因為車窗反光、夜間車燈打開對視差計算影響較大,檢測框接近底部位置的視差值對于計算準確的深度沒有意義,所以需要對目標視差區域進行裁剪,即只選取整個區域的3/11(包括車燈以下,車輛底盤以上之間)的區域進行聚類,得到的聚類區域如圖7所示,聚類區域裁剪還可以降低系統的計算量。

圖7 選擇聚類區域原理圖Fig.7 Schematic diagram of selecting the clustering area
因目標視差值占據裁剪區域中的大部分面積,所以選擇2個質心點、即2,并取最大質心作為計算目標深度的視差值。
通過在公開的目標檢測框架上對車輛目標進行測距實驗。設置系統最大視差值為128,則其理論測距范圍約為1.65~211 m。當目標物體十分接近雙目相機時,該目標區域是雙目相機的視覺盲區,無法計算視差;目標物體越遠,由于相機像素缺陷,視差計算誤差過大。所以遠距離和近距離的測距數據不存在參考價值,通過測距實驗僅選取3~28 m范圍內的測距數據作為有效距離。測距實驗結果見表2。
通過分析表2中的測距實驗結果可知,CLAHE優化視差計算對雙目視覺測距精度的提升影響更大,k-means聚類算法進一步提升了測距精度。部分車輛測距結果如圖8所示。

表2 測距實驗結果Tab.2 Ranging experimental results

圖8 部分車輛測距結果Fig.8 Partial vehicles ranging results
本文針對傳統立體視覺測距算法測量精度較低的問題,通過CLAHE對雙目灰度圖進行預處理,解決視差計算不準確的弊端,使中遠距離測量精度得到一定提升;引入k-means聚類算法優化視差選取,使測量精度進一步提升。測距實驗結果表明,基于改進的雙目視覺測距方法測距效果表現良好,但對于較遠距離測量精度不高,后續將做深入探究和改進。