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