楊慧聞 張嘉琪
1(中核地礦科技集團(tuán)有限公司 北京 100013) 2(天津理工大學(xué)環(huán)境科學(xué)與安全工程學(xué)院 天津 300384)
當(dāng)前,車(chē)輛駕駛技術(shù)已經(jīng)由L2輔助駕駛技術(shù)(包括碰撞預(yù)警、車(chē)道偏離預(yù)警、行車(chē)記錄、倒車(chē)?yán)走_(dá)等)向L3受條件約束的自動(dòng)駕駛技術(shù)(主動(dòng)干預(yù)、主動(dòng)剎車(chē)、行人識(shí)別、車(chē)距檢測(cè))方向發(fā)展。統(tǒng)計(jì)資料顯示,若在公路交通事故發(fā)生前的1.5 s給駕駛員發(fā)出預(yù)警,則可避免90%的人類(lèi)車(chē)輛事故[1]。
為使車(chē)輛主動(dòng)安全預(yù)警系統(tǒng)發(fā)出有效預(yù)警信息,對(duì)于行車(chē)障礙物的準(zhǔn)確識(shí)別及距離檢測(cè)則顯得尤為重要。在距離檢測(cè)的研究中,有利用脈沖飛行時(shí)間原理的激光雷達(dá)測(cè)距,有利用單孔成像原理的單目測(cè)距,也有利用雷達(dá)、超聲波等傳感器通過(guò)監(jiān)測(cè)車(chē)輛的自身狀態(tài)預(yù)測(cè)汽車(chē)碰撞情況,進(jìn)行輔助駕駛。初期的輔助技術(shù)以被動(dòng)式預(yù)警為主,當(dāng)監(jiān)測(cè)到車(chē)輛遇到潛在危險(xiǎn)時(shí),會(huì)發(fā)出報(bào)警聲提醒駕駛者注意車(chē)輛周邊狀況,但是當(dāng)前的ADAS(高級(jí)輔助駕駛技術(shù))[2]為了實(shí)現(xiàn)車(chē)輛的主動(dòng)式安全,即識(shí)別障礙物使車(chē)輛進(jìn)行主動(dòng)剎車(chē),采用較多的是基于雙目視覺(jué)技術(shù)的測(cè)距系統(tǒng),相較于人眼只能取得主觀的判斷,該技術(shù)可以利用計(jì)算機(jī)讀出精確的數(shù)據(jù),更加客觀地反映三維世界中的距離;對(duì)比于早年提出的單目系統(tǒng),雙目立體視覺(jué)所需的對(duì)比樣本數(shù)據(jù)更少,只需要通過(guò)兩幅圖像就能讀取出視差信息,從而測(cè)量物體的遠(yuǎn)近,精度高、實(shí)時(shí)性強(qiáng)因而泛用性也更強(qiáng);相較于傳統(tǒng)的測(cè)距工具(如雷達(dá)、激光),雙目測(cè)距系統(tǒng)從安裝到標(biāo)定再到投入使用所需要的工序少,更少的環(huán)節(jié)變相提高了系統(tǒng)的使用精度(人為操作的誤差率降低),而且雙目測(cè)距系統(tǒng)的養(yǎng)護(hù)頻率低,從而避免了人力物力的浪費(fèi)。因此,本文設(shè)計(jì)一種基于LabVIEW的雙目測(cè)距系統(tǒng),并在軟件平臺(tái)編寫(xiě)圖像的立體匹配程序,獲取圖像深度信息,并對(duì)多組數(shù)據(jù)分析誤差率,驗(yàn)證了可以在特征明顯的ROI區(qū)域測(cè)距誤差率保持在2%左右,證明了所設(shè)計(jì)的基于LabVIEW的雙目測(cè)距系統(tǒng)的可靠性。
雙目視覺(jué)測(cè)距基于相似三角形原理,即在理論成像模型中空間一點(diǎn)P在左右相機(jī)的像面上成像關(guān)系如圖1所示,右成像點(diǎn)Pr經(jīng)過(guò)對(duì)稱在另一個(gè)成像面上的成像點(diǎn)為Pr1,則Pl到左像面左側(cè)距離Xl與Pr到右像面左側(cè)距離Xr的差值(Xl-Xr)即為視差d,兩相機(jī)光心為Ol、Or,利用兩個(gè)三角形(△PPlPr和△POlOr)相似,設(shè)Pl到Pr的距離為dis,可以得出所求深度(即距離)Z的公式如下:
圖1 空間點(diǎn)p在成像面的成像點(diǎn)
dis=T-(Xl-Xr)
(1)
d=Xl-Xr
(2)
(3)
(4)
式中:d為視差,單位為像素尺寸pixel,在計(jì)算時(shí)需要乘以pixelsize(像素尺寸),要求得像素尺寸,則需要建立像素坐標(biāo)與圖像坐標(biāo)系的關(guān)系;f為相機(jī)焦距;T為兩臺(tái)相機(jī)光心距離。
在世界坐標(biāo)系與相機(jī)坐標(biāo)系的轉(zhuǎn)換中屬于剛體轉(zhuǎn)換,涉及到的轉(zhuǎn)換為旋轉(zhuǎn)和平移,可以用旋轉(zhuǎn)轉(zhuǎn)矩R和平移矩陣T來(lái)描述,設(shè)轉(zhuǎn)換前空間一點(diǎn)P的坐標(biāo)為P(Xw,Yw,Zw),轉(zhuǎn)換后的P點(diǎn)坐標(biāo)為P(Xc,Yc,Zc),轉(zhuǎn)換公式如下:
(5)
轉(zhuǎn)換為矩陣式為:
(6)
式中:旋轉(zhuǎn)矩陣R為3×3矩陣;平移矩陣T為3×1矩陣。
像素坐標(biāo)系和圖像坐標(biāo)系都在成像平面上,只是各自的原點(diǎn)和度量單位不一樣,兩個(gè)坐標(biāo)系間的關(guān)系如圖2所示[3]。
圖2 像素坐標(biāo)系與圖像坐標(biāo)系
相機(jī)的光心在成像面上的投影點(diǎn)為圖像坐標(biāo)系的原點(diǎn),如圖2中的O-XY坐標(biāo)系,而像素坐標(biāo)系的原點(diǎn)為成像面的左上角邊緣點(diǎn),即O-UV坐標(biāo)系,單位分別為mm和pixel,前者為物理單位,后者為像素單位。圖2中p為空間任一點(diǎn),其在坐標(biāo)系中為p(x,y)。兩個(gè)坐標(biāo)系間的轉(zhuǎn)換關(guān)系如下:設(shè)dx和dy分別表示每個(gè)像素點(diǎn)的行和列代表的實(shí)際尺寸為多少mm,即1pixel=dxmm。假設(shè)像素點(diǎn)坐標(biāo)(u0,v0)為圖像坐標(biāo)中心,可以列出方程組:
(7)
(8)
從相機(jī)坐標(biāo)系到圖像坐標(biāo)系,屬于透視投影關(guān)系,從3D坐標(biāo)系轉(zhuǎn)換到2D坐標(biāo)系。如圖3所示,利用△ABOc與△OCOc相似和△PBOc與△pCOc相似可以得到:
圖3 相機(jī)坐標(biāo)系與圖像坐標(biāo)系
(9)
(10)
(11)
通過(guò)以上四個(gè)坐標(biāo)系的轉(zhuǎn)換就可以得到一個(gè)點(diǎn)從世界坐標(biāo)系與像素坐標(biāo)系的轉(zhuǎn)換關(guān)系如下:
(12)
式中:第一個(gè)矩陣內(nèi)為像素坐標(biāo)系與圖像坐標(biāo)系間關(guān)系,為相機(jī)內(nèi)參,第二個(gè)矩陣內(nèi)為世界坐標(biāo)系與相機(jī)和圖像坐標(biāo)間的關(guān)系,為相機(jī)外參,相機(jī)內(nèi)外參通過(guò)相機(jī)標(biāo)定即可得到。由式(12)可求出空間一點(diǎn)P的理論三維坐標(biāo)及深度Z計(jì)算公式如下[4]:
(13)
式中:x、y、z即為空間一點(diǎn)P的理論三維信息,通過(guò)圖像匹配獲取視差d和雙目相機(jī)的內(nèi)參矩陣和外參矩陣,從而計(jì)算出x、y、z的值。
在LabVIEW平臺(tái)編寫(xiě)軟件用到的圖像匹配算法為灰度值金字塔算法[5],該算法使用歸一化相關(guān)度作為核心特征。圖像匹配過(guò)程分為學(xué)習(xí)和匹配兩個(gè)階段。在學(xué)習(xí)階段,算法會(huì)從模板圖像中獲取該圖像的灰度值和邊緣梯度信息,將學(xué)習(xí)到的信息進(jìn)行暫時(shí)存儲(chǔ)[6]。在匹配階段,灰度值圖像匹配算法會(huì)從被匹配圖像中獲取該圖像的灰度值,通過(guò)在檢測(cè)圖像中定位歸一化相關(guān)度最高的區(qū)域來(lái)開(kāi)始匹配。
基于灰度值的歸一化相關(guān)度算法[7](Normalized Cross Correlation,NCC)是在圖像中尋找匹配模板的最常用方法,利用子圖與模板圖的灰度,通過(guò)歸一化的相關(guān)性度量公式來(lái)計(jì)算二者之間的匹配程度。為了提高匹配過(guò)程的速度,需要減小圖像的大小并限制匹配的圖像區(qū)域,采用金字塔匹配算法是提高匹配速度的一種常用方法。當(dāng)圖像中的圖案沒(méi)有縮放或旋轉(zhuǎn)時(shí),歸一化相關(guān)度法可以檢測(cè)到相同大小的圖案甚至最大旋轉(zhuǎn)角度為5°到10°的圖案[8],當(dāng)匹配圖像方式旋轉(zhuǎn)之后,圖像匹配會(huì)變得更加復(fù)雜,此時(shí)如果可以從圖像中提取有關(guān)圖像旋轉(zhuǎn)的參數(shù),則可以簡(jiǎn)單地旋轉(zhuǎn)模板再進(jìn)行相關(guān)匹配會(huì)簡(jiǎn)單很多,在軟件設(shè)計(jì)時(shí),增加圖片旋轉(zhuǎn)操作,以保證在匹配的開(kāi)始,兩幅圖像在理論上沒(méi)有旋轉(zhuǎn)角度,降低匹配時(shí)間。設(shè)S為k×l的實(shí)時(shí)圖,T為m×n的模板圖,模板T在圖像S上遍歷,將在(i,j)位置覆蓋的子圖記作Si,j,則子圖Si,j與模板T之間的歸一化相關(guān)度RN(i,j)計(jì)算式如下:
RN(i,j)=
(14)
式中:E(Si,j)、E(T)分別表示(i,j)處子圖、模板的平均灰度值;Si,j(m,n)和T(m,n)分別為搜索子圖和模板在位置(m,n)處的灰度值。在對(duì)實(shí)時(shí)圖按一定順序遍歷搜索后,計(jì)算每一個(gè)子圖位置的相關(guān)度,具有最大相關(guān)值的子圖位置即為最佳匹配位置。
金字塔搜索算法是通過(guò)減小圖像和模板的大小,以提高ROI(手動(dòng)框選的圖像匹配區(qū)域)圖像匹配的時(shí)間[9]。該算法使用了高斯金字塔的方法將圖像和模板取樣到較小的空間分辨率,這種方法每隔一個(gè)像素采樣一次,因此圖像和模板在每個(gè)連續(xù)的金字塔級(jí)別上都可以減小到其原始大小的四分之一,如圖4所示。
圖4 金字塔算法將圖像縮小到原先1/4的效果圖
在金字塔算法的學(xué)習(xí)階段,該算法自動(dòng)計(jì)算給定模板的最大金字塔級(jí)別,并儲(chǔ)存表示模板所需的數(shù)據(jù)及其在所有金字塔級(jí)別上的版本。該算法會(huì)試圖找到一個(gè)最佳的金字塔層次(基于對(duì)模板數(shù)據(jù)的分析),這將提供最快和最準(zhǔn)確的匹配,同時(shí)可以使用灰度值(基于像素強(qiáng)度)作為特征。該方法利用歸一化像素灰度值作為特征,這樣做可以確保不遺漏任何信息,這在模板不包含結(jié)構(gòu)化信息,但具有復(fù)雜紋理或密集邊緣時(shí)非常有用。
金字塔算法在匹配階段使用從粗到細(xì)的方法[10],以盡可能低的分辨率(最高的金字塔級(jí)別)開(kāi)始搜索,即從實(shí)時(shí)圖Sk和模板圖Tk開(kāi)始進(jìn)行匹配,在Sk所有的搜索位置上與Tk進(jìn)行相關(guān)運(yùn)算,得到粗匹配位置(xk,yk)。由于在該分辨率下,搜索的圖像和模板的大小已經(jīng)顯著減小,因此計(jì)算速度很快且可以執(zhí)行基于窮舉的相關(guān)性搜索,相對(duì)而言從粗到細(xì)的匹配已經(jīng)消除大量的冗余計(jì)算。但此時(shí)相關(guān)度值較低,可能會(huì)產(chǎn)生多個(gè)粗匹配位置,然后將具有較高分辨率即較低一層金字塔層的圖像Sk-1和Tk-1進(jìn)行進(jìn)一步匹配,即只需在粗匹配位置進(jìn)行相關(guān)運(yùn)算即可,確定相對(duì)精確的匹配位置(xk-1,yk-1)。以此類(lèi)推,直到在最高分辨率的實(shí)時(shí)圖S0和模板T0上找到精確匹配位置為止[11]。這種方法將所有后續(xù)搜索限制在最佳匹配候選對(duì)象周?chē)男〉木植繀^(qū)域,從而顯著提高了速度。
為使金字塔算法匹配中獲得最佳性能,通??梢赃M(jìn)行以下調(diào)整。
(1) 搜索旋轉(zhuǎn)模式時(shí),使用“角度范圍”設(shè)置將搜索限制為最小角度范圍,以提高性能并減少內(nèi)存消耗。例如,如果已知匹配僅從基準(zhǔn)位置略微旋轉(zhuǎn),則-10°到10°的角度范圍就足夠了。
(2) 該算法會(huì)根據(jù)請(qǐng)求的匹配次數(shù)和最小匹配分?jǐn)?shù)自動(dòng)處理從粗到細(xì)的匹配。配置以獲得程序速度和準(zhǔn)確性的最佳組合。
(3) 最小對(duì)比度設(shè)置指定一個(gè)區(qū)域必須顯示的最小對(duì)比度值,才能被視為候選區(qū)域。在圖像背景中存在顯著的低對(duì)比度或零對(duì)比度區(qū)域(均勻區(qū)域)時(shí),使用此功能可提高速度。
基于灰度值金字塔算法的雙目測(cè)距系統(tǒng)的軟件設(shè)計(jì)[12]是利用NI公司的LabVIEW工程可視化編程軟件。軟件程序包括圖像旋轉(zhuǎn)、圖像查找、圖像提取、圖像匹配[13]、像素坐標(biāo)系、相似度值、立體視覺(jué)工作臺(tái)(即步進(jìn)電機(jī)控制程序)、圖像ROI拾取及ROI區(qū)域像素值、x和y像素差等功能。軟件中的匹配參數(shù)包含有相似度閾值(即低于此相似度時(shí),認(rèn)為圖像匹配未成功)[14]、圖像匹配的相似度值(從0~1 000,0為不匹配,1 000為完美匹配);同時(shí)程序右下角單獨(dú)顯示有手動(dòng)選取的圖像ROI,也有圖像ROI的匹配簇[15](以像素坐標(biāo)表示,位置對(duì)應(yīng)圖像的左上角的角點(diǎn)坐標(biāo)為初始零點(diǎn)坐標(biāo)),ROI圖像匹配的x、y坐標(biāo)的像素差(此像素差和像素坐標(biāo)即為雙目測(cè)距計(jì)算深度信息的數(shù)據(jù)),圖像匹配采用屏幕ROI拾取方式,基于以上功能設(shè)計(jì)的LabVIEW測(cè)距軟件的程序前后面板如圖5-圖9所示[16]。
圖5 雙目視覺(jué)測(cè)距系統(tǒng)軟件程序前面板(操作界面)
圖6 步進(jìn)電機(jī)驅(qū)動(dòng)程序前面板(操作界面)
圖7 LabVIEW軟件編寫(xiě)圖像匹配及測(cè)距程序框圖
圖8 LabVIEW程序for循環(huán)中的for結(jié)構(gòu)截圖
圖9 LabVIEW軟件編寫(xiě)步進(jìn)電機(jī)驅(qū)動(dòng)程序框圖
雙目測(cè)距系統(tǒng)硬件由步進(jìn)電機(jī)、兩臺(tái)??低昐mart265 4K相機(jī)、行程開(kāi)關(guān)、USB轉(zhuǎn)R485轉(zhuǎn)換器、筆記本電腦(Windows 10操作系統(tǒng)、i55處理器、8 GB內(nèi)存)構(gòu)成。相機(jī)平移控制程序由LabVIEW中編寫(xiě)的立體視覺(jué)平臺(tái)子VI控制,將左目相機(jī)固定右目相機(jī)由步進(jìn)電機(jī)控制移動(dòng),可以操縱步進(jìn)電機(jī)在任意位置停止進(jìn)行拍攝,實(shí)物搭建圖如圖10所示。
圖10 雙目測(cè)距系統(tǒng)實(shí)物搭建圖
仿真實(shí)驗(yàn)在實(shí)驗(yàn)室進(jìn)行,為避免實(shí)驗(yàn)偶然性,均采用實(shí)驗(yàn)室普通常見(jiàn)物件作為雙目測(cè)距的標(biāo)志物,所選用的標(biāo)志物有筆筒、3D耗材盒子、工控機(jī)盒子、自制標(biāo)定板、502膠水瓶2個(gè)、小藍(lán)盒子及收納盒,均為隨機(jī)選取進(jìn)行測(cè)距實(shí)驗(yàn)。取左目相機(jī)一臺(tái)固定于滑軌一側(cè)上,使用步進(jìn)電機(jī)進(jìn)行驅(qū)動(dòng),保證右目相機(jī)在同一水平線上平移,且兩臺(tái)相機(jī)同一型號(hào)保證相機(jī)內(nèi)參相同,滑軌經(jīng)過(guò)標(biāo)定后測(cè)得,步進(jìn)電機(jī)每驅(qū)動(dòng)1 000個(gè)單位,相機(jī)平移8 cm,取5幅連續(xù)照片(第一幅為右目拍攝照片,第二至第五幅照片為右目每平移8 cm所拍攝的圖像)進(jìn)行雙目測(cè)距仿真實(shí)驗(yàn)并進(jìn)行數(shù)據(jù)分析,軟件運(yùn)行及圖像匹配時(shí)程序如圖11所示,通過(guò)式(5)進(jìn)行計(jì)算,匯總結(jié)果如圖12-圖15所示。
圖11 仿真實(shí)驗(yàn)右目相機(jī)連續(xù)平移4次,每次8 cm拍攝的標(biāo)識(shí)物圖像
圖12 雙目測(cè)距系統(tǒng)軟件運(yùn)行時(shí)的實(shí)時(shí)系統(tǒng)界面截圖
圖13 理論測(cè)距實(shí)驗(yàn)數(shù)據(jù)及與實(shí)際距離對(duì)比圖
圖14 測(cè)距系統(tǒng)測(cè)距誤差率匯總
圖15 測(cè)距系統(tǒng)左右目圖像匹配相似度圖
針對(duì)雙目視覺(jué)測(cè)距系統(tǒng)的軟件設(shè)計(jì),通過(guò)仿真實(shí)驗(yàn)對(duì)測(cè)得五組數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,實(shí)驗(yàn)結(jié)果表明:
(1) 在圖像相似度值上,本文匹配結(jié)果與蔡秀梅等[17]關(guān)于匹配方法研究中的結(jié)果相比較,其中魯棒精確匹配算法匹配值達(dá)到982.4,其他魯棒LBP算法、改進(jìn)的harris算法、harris算法匹配值分別為902.7、888.7和638.2,本文的相似度匹配值在特征清晰、紋理復(fù)雜的標(biāo)志物時(shí)均能達(dá)到950以上,在其他較弱紋理區(qū)域匹配值在900左右,表明本文系統(tǒng)基于灰度值金字塔雙目圖像匹配結(jié)果可以用來(lái)計(jì)算視差值。
(2) 在軟件測(cè)試中通過(guò)進(jìn)行自身對(duì)照,圖像匹配相似度數(shù)據(jù)顯示,程序設(shè)計(jì)存在系統(tǒng)誤差,系統(tǒng)像素誤差為0.5 pixel,可以在計(jì)算過(guò)程中進(jìn)行提前消去以避免影響結(jié)果。此外,出現(xiàn)一組匹配相似度結(jié)果為614的偶然誤差,可能是選擇ROI區(qū)域時(shí)選擇不當(dāng),屬于操作失誤,在考慮誤差率時(shí)可以不考慮該組數(shù)據(jù)。
(3) 由圖13-圖15實(shí)驗(yàn)數(shù)據(jù)可得出,從右目平移8 cm到32 cm的4組數(shù)據(jù)中,隨著相機(jī)間距離T的增加,像素差ΔX也在增加,符合式(3)的正相關(guān)情況。在焦距不變情況下,隨著相機(jī)間光心距T增加,誤差率也隨之增加,誤差率與光心距符合正相關(guān)關(guān)系。
(4) 由圖15可知,相似度值與特征點(diǎn)選取有關(guān),本次實(shí)驗(yàn)隨機(jī)選取的8樣常見(jiàn)標(biāo)志物各自區(qū)域灰度值紋理復(fù)雜度相差較為明顯,其中墻面為無(wú)紋理或弱紋理區(qū)域接近純白,灰度值接近255(灰度等級(jí)0~255,0為黑色,白色為255),匹配難度最大,相似度值均在900以下,匹配誤差率明顯最大。其次小藍(lán)盒子由于數(shù)量較多及灰度值相差并不明顯,故匹配誤差率僅次于白色墻面。此外標(biāo)定板和502盒子灰度值最小,特征最為明顯,匹配相似度值最高,誤差率最小。由此可知,在雙目測(cè)距選取測(cè)量標(biāo)志物時(shí),選擇接近于標(biāo)定板這樣紋理明顯且復(fù)雜度較高的物體時(shí)圖像匹配相似值較高,誤差較低。
(5) 本次仿真實(shí)驗(yàn)雖然每組數(shù)據(jù)選擇標(biāo)志物的ROI區(qū)域不完全相同(右目相機(jī)移動(dòng)圖像識(shí)別區(qū)域產(chǎn)生遮擋和每次所選區(qū)域不能100%相同),但是誤差率均能達(dá)到5%以下,甚至對(duì)于特征點(diǎn)明顯的標(biāo)志物測(cè)距誤差率低至了2%左右,且保證圖像匹配的相似度值均達(dá)到了900以上,充分檢驗(yàn)了灰度值金字塔算法在圖像匹配ROI處理時(shí)的可靠性,且驗(yàn)證了基于LabVIEW的雙目視覺(jué)測(cè)距系統(tǒng)設(shè)計(jì)達(dá)到預(yù)期效果,未來(lái)在更多場(chǎng)景的測(cè)試后有可能實(shí)現(xiàn)車(chē)載系統(tǒng)的應(yīng)用,用來(lái)解決行車(chē)障礙物及車(chē)距的精確測(cè)量。
本文通過(guò)設(shè)計(jì)雙目視覺(jué)測(cè)距系統(tǒng)及進(jìn)行仿真實(shí)驗(yàn),論證基于灰度值金字塔算法的圖像匹配程序的可靠性,未來(lái)在更多場(chǎng)景的測(cè)試后有可能實(shí)現(xiàn)車(chē)載系統(tǒng)的應(yīng)用,用來(lái)解決行車(chē)障礙物及車(chē)距的精確測(cè)量問(wèn)題,為未來(lái)車(chē)輛L3級(jí)自動(dòng)駕駛的主動(dòng)安全系統(tǒng)提供一種解決方案。