王連增
(中國(guó)空空導(dǎo)彈研究院,洛陽(yáng)471009)
視覺(jué)導(dǎo)航技術(shù)是一種依靠光學(xué)成像技術(shù)進(jìn)行導(dǎo)航的方法,它具有測(cè)量速度快、測(cè)量精度高、自主性強(qiáng)、隱蔽性好、低成本等優(yōu)點(diǎn)。近30 年,伴隨著光學(xué)成像技術(shù)及視覺(jué)導(dǎo)航技術(shù)新概念、新方法、新理論發(fā)展,視覺(jué)導(dǎo)航技術(shù)在飛機(jī)、無(wú)人飛行(Unmanned Air Vehicles,UAV)、火星探測(cè)車(chē)、航天器、巡航導(dǎo)彈以及自動(dòng)駕駛等方面得到普遍的應(yīng)用,同時(shí),視覺(jué)導(dǎo)航技術(shù)與其他導(dǎo)航手段相結(jié)合成為近些年發(fā)展的新趨勢(shì),其能夠在衛(wèi)星拒止條件下實(shí)現(xiàn)對(duì)INS 誤差的有效補(bǔ)償,使其成為SINS/GPS 傳統(tǒng)導(dǎo)航手段外的新的組合導(dǎo)航形式,并成功實(shí)現(xiàn)在國(guó)外空地導(dǎo)彈上的應(yīng)用。
雙目視覺(jué)是通過(guò)左右兩個(gè)相機(jī)模擬人眼采集圖像信息的過(guò)程,用專(zhuān)業(yè)的圖像處理器替代人腦對(duì)圖像的處理過(guò)程,通過(guò)對(duì)不同視角對(duì)同一圖像拍攝兩張二維圖像來(lái)恢復(fù)圖像三維信息的一種方法。雙目視覺(jué)技術(shù)具有計(jì)算精度高、系統(tǒng)簡(jiǎn)單易于實(shí)現(xiàn)、操作過(guò)程簡(jiǎn)便、不過(guò)分依賴(lài)于硬件產(chǎn)品易于工程化實(shí)現(xiàn)等特點(diǎn),是機(jī)器視覺(jué)重要研究方向。對(duì)于雙目視覺(jué)成像過(guò)程,涉及到4 個(gè)坐標(biāo)系,分別為:像素坐標(biāo)系、圖像坐標(biāo)系、相機(jī)坐標(biāo)系和世界坐標(biāo)系。許威在基于MATLAB 和Open CV 的雙目視覺(jué)測(cè)距系統(tǒng)的實(shí)現(xiàn)一文中完成了測(cè)距系統(tǒng)的搭建工作,并從實(shí)時(shí)性及測(cè)距精度方面完成了SGBM(Semi-Global Block Matching)算法與BM 算法的對(duì)比驗(yàn)證工作。汪珍珍在基于MATLAB 與OpenCV 相結(jié)合的雙目立體視覺(jué)測(cè)距系統(tǒng)一文中完成了測(cè)距系統(tǒng)的搭建工作,并通過(guò)SAD 算法完成了圖像匹配工作。
本文在Win10 操作環(huán)境下,用MATLAB 標(biāo)定工具箱完成雙目攝像頭標(biāo)定,采用VS2017 與OpenCV3.1 相結(jié)合的方法開(kāi)發(fā)一種雙目視覺(jué)定位測(cè)距系統(tǒng),以PC 為中心,由雙目攝像頭、圖像采集、處理等模塊構(gòu)成,實(shí)現(xiàn)雙目圖像的獲取、矯正、匹配以及目標(biāo)深度信息獲取等功能。在系統(tǒng)實(shí)現(xiàn)過(guò)程中,通過(guò)Canny 邊緣檢測(cè)算法對(duì)匹配進(jìn)行約束,以解決SGBM 算法匹配算法慢等問(wèn)題。
圖1 雙目視覺(jué)定位測(cè)距系統(tǒng)及雙目攝像頭
由圖2 可知,Ol和Or為雙目攝像頭左、右光學(xué)中心,其光軸與成像平面如圖2 所示。 f 表示攝像機(jī)焦距,T 表示左、右攝像頭光學(xué)中心之間的間隔。通過(guò)式(1)和(2)可以求得Z,也就獲得了距離信息。
圖2 平行雙目視覺(jué)模型
根據(jù)相似三角形原理,有:
可得:
式(2)中:xl、xr分別為空間點(diǎn)P 在雙目攝像頭成像上平面的投影點(diǎn)Pl、Pr橫坐標(biāo)值。
由式(2)能夠定量計(jì)算目標(biāo)點(diǎn)P 在空間中的深度信息Z。式(2)中,焦距f 和基線(xiàn)T 可通過(guò)相機(jī)標(biāo)定得到,在確定的雙目視覺(jué)測(cè)距系統(tǒng)中,通常焦距f 和基線(xiàn)T 是固定不變的,因此,只要獲得了視差d=xl-xr即可獲得距離信息。上述三角測(cè)量法只是定量的描述雙目立體測(cè)距的模型,在實(shí)際的算法實(shí)現(xiàn)中,為提高測(cè)距信息的精度,通常采用最小二乘法進(jìn)行深度信息的精確求解。
如圖1 平行雙目視覺(jué)模型所示,空間中點(diǎn)P 在左右相機(jī)坐標(biāo)系下的投影點(diǎn)為Pl和Pr,可以利用矩陣形式描述上述成像模型,其中左、右相機(jī)的投影矩陣可以由雙目相機(jī)標(biāo)定的過(guò)程獲取,包括雙目相機(jī)的內(nèi)參數(shù)、旋轉(zhuǎn)矩陣、畸變參數(shù)、平移向量等,記為M1、M2,此時(shí)有:
式中,( u1,v1,1) 和( u2,v2,1) 分別為Pl和Pr在雙目相機(jī)各自圖像坐標(biāo)系下的齊次坐標(biāo)表示,( X,Y,Z,1) 為其對(duì)應(yīng)的點(diǎn)P 在世界坐標(biāo)下的齊次坐標(biāo),則式(3)和(4)中的Zc1和Zc2可以得到:
將式(5)和(6)寫(xiě)成矩陣的形式有:
此時(shí)可以將式(7)寫(xiě)成:
式中,K 和U 已知,此時(shí)根據(jù)最小二乘法即可求解得到:
式(9)中的X 即為未知數(shù)向量的值,此時(shí),可以得到Z 的精確值。
相機(jī)標(biāo)定是視覺(jué)定位技術(shù)中的必要過(guò)程,是一種通過(guò)構(gòu)建相機(jī)像素點(diǎn)和空間物體位置間的聯(lián)系,最終求得相機(jī)成像模型并完成數(shù)學(xué)表達(dá)對(duì)三維位置確定。成像模型中所要求得的參數(shù)為像機(jī)的內(nèi)、外參數(shù)。通過(guò)矩陣能夠表征相機(jī)與放置環(huán)境位置和方向之間聯(lián)系的參數(shù)稱(chēng)為相機(jī)外參數(shù);相機(jī)焦距、鏡頭畸變系數(shù)等由幾何光學(xué)特性影響的相機(jī)自身參數(shù)稱(chēng)為內(nèi)參數(shù),如果已經(jīng)得知兩個(gè)圖片特征點(diǎn)立體匹配關(guān)系,那么通過(guò)簡(jiǎn)單的三角測(cè)量,通過(guò)上述的標(biāo)定參數(shù)即可完成目標(biāo)點(diǎn)的空間坐標(biāo)重建過(guò)程。因此,標(biāo)定是雙目立體視覺(jué)的基礎(chǔ)和必要過(guò)程,其結(jié)果好壞將決定對(duì)目標(biāo)物體實(shí)現(xiàn)三維測(cè)量的精度值。
雙目相機(jī)的標(biāo)定工作,主要分為以下兩個(gè)過(guò)程:先通過(guò)MATLAB 標(biāo)定工具箱分別對(duì)左、右兩個(gè)相機(jī)單目標(biāo)定,求得其內(nèi)部參數(shù),其次再通過(guò)雙目標(biāo)定工作求解兩個(gè)相機(jī)之間相對(duì)的位置關(guān)系。上述的求解過(guò)程均能夠通過(guò)MATLAB 標(biāo)定工具箱求解實(shí)現(xiàn)。在本標(biāo)定實(shí)驗(yàn)中,選取8×12 格,15mm×15mm 組成的標(biāo)準(zhǔn)棋盤(pán)格,通過(guò)雙目攝像頭分別完成不同拍攝角度、不同拍攝距離20 張棋盤(pán)格照片的拍攝,且拍攝過(guò)程中應(yīng)確保黑白棋盤(pán)格盡量處于圖像的中心,且無(wú)遮擋。
具體標(biāo)定流程如圖3 所示。
圖3 標(biāo)定實(shí)現(xiàn)流程圖
圖4 雙目攝像頭標(biāo)定結(jié)果
在雙目視覺(jué)匹配中,為提高SGBM 算法匹配的精度及快速性,并減少系統(tǒng)的誤匹配操作,在系統(tǒng)中通過(guò)Canny 邊緣檢測(cè)算法對(duì)匹配過(guò)程進(jìn)行約束。Canny 提出高斯函數(shù)的一階導(dǎo)數(shù)是受白噪聲影響的階躍邊緣的最優(yōu)逼近。通對(duì)稱(chēng)二維高斯函數(shù)對(duì)圖像與做卷積處理后,再沿著梯度方向做微分處理,就可以形成一個(gè)方向算子。因此,Canny 邊緣檢測(cè)過(guò)程可以簡(jiǎn)單由兩個(gè)過(guò)程實(shí)現(xiàn),先設(shè)計(jì)高斯濾波器完成平滑處理,然后再進(jìn)行梯度計(jì)算。其具體實(shí)現(xiàn)如下:
(1)通過(guò)建立高斯濾波器完成圖像預(yù)處理工作,消除圖像信息中的噪聲干擾;圖像f( x,y )與二維高斯函數(shù)G( x,y )做卷積運(yùn)算。
(2)通過(guò)高斯算子一階微分過(guò)程完成圖像濾波工作,獲得圖像單點(diǎn)像素的梯度模值 ||G 以及方向θ;邊緣強(qiáng)度為可描述,邊緣方向描述為
(3)對(duì)圖像單點(diǎn)像素梯度進(jìn)行非極大抑制,完成其邊緣細(xì)化處理工作;判斷梯度值是否是圖像局部極大值,把邊緣細(xì)化為單像素。
(4)閾值化和圖像邊緣連接,提高檢測(cè)準(zhǔn)確度。
圖5 Canny算法流程圖
圖6 Canny邊緣檢測(cè)算法結(jié)果
SGBM 匹配算法的核心是由雙目圖像的信息閾H1和H2及其聯(lián)合信息閾H1,2來(lái)進(jìn)行互信息MI1,2的定義,并以MI1,2作為基礎(chǔ),其定義如下:
圖像信息閾H 用直方圖描繪的概率分布計(jì)算。聯(lián)合圖像的信息閾H1,2可以通過(guò)對(duì)互匹配影像灰度的聯(lián)合概率分布求解獲得。
該算法的基本流程為:
(1)逐像素匹配計(jì)算。函數(shù)d( xi,yi,IL,IR)表征左、右雙目圖像中某兩個(gè)點(diǎn)為同名像點(diǎn)的可能性。
式(12)中,xi和yi表示左、右雙目圖像中處于同一掃描線(xiàn)上的兩個(gè)像點(diǎn)。將掃描線(xiàn)上左圖像點(diǎn)x 的灰度信息表示為IL( x );掃描線(xiàn)上右圖像點(diǎn)y 的灰度信息IR可以通過(guò)采樣點(diǎn)線(xiàn)性?xún)?nèi)插差值獲取。
(2)基于Canny 算法的圖像邊緣約束。對(duì)左目圖像掃描線(xiàn)上的檢測(cè)到邊緣信息點(diǎn),通過(guò)SGBM 算法在右圖像掃描線(xiàn)上獲取,將二維匹配運(yùn)算通過(guò)目標(biāo)點(diǎn)圖像邊緣約束實(shí)現(xiàn)掃描線(xiàn)上一維相關(guān)計(jì)算。
(3)視差計(jì)算。用迭代運(yùn)算完成視差計(jì)算,首先,通過(guò)隨機(jī)視差影像糾正右影像,然后進(jìn)行左右圖像對(duì)匹配,產(chǎn)成新的視差影像;也可通過(guò)分等級(jí)計(jì)算的方法進(jìn)行視差計(jì)算,先在半分辨率情況下計(jì)算視差影像作為初值,然后對(duì)視差影像進(jìn)行遞歸計(jì)算。
(4)誤匹配的剔除。左、右視覺(jué)圖像同名點(diǎn)匹配完成后,通過(guò)右視覺(jué)圖像中的同名點(diǎn)反向匹配左視覺(jué)圖像中的匹配點(diǎn),與由左圖像和右圖像進(jìn)行匹配得到的視差不同,則視之為誤匹配,重復(fù)上述計(jì)算過(guò)程,從新進(jìn)行匹配。
圖7 SGBM算法雙目匹配結(jié)果
Step1:圖像讀取。讀取拍攝好的同一時(shí)刻左目、右目圖像各一張;
圖8
Step2:圖像校正。運(yùn)用Remap 函數(shù)進(jìn)行圖像校正。圖像校正完成后,輸出雙目行對(duì)齊圖像(雙目圖像能夠自動(dòng)行對(duì)齊說(shuō)明雙目標(biāo)定結(jié)果基本正確);
圖9
Step3:SGBM 算法雙目圖像匹配;
Step4:坐標(biāo)系映射計(jì)算三維坐標(biāo)。坐標(biāo)系映射是運(yùn)用ReprojectImageTo3D 功能將雙目匹配得到的像素視差數(shù)據(jù)轉(zhuǎn)化為世界坐標(biāo)系的三維坐標(biāo);
Step5:像素視差圖顯示。像素視差值是以像素為單位的“距離值”,像素視差值與世界坐標(biāo)系的三維坐標(biāo)值直接相關(guān);
圖10
Step6:像素視差圖上選定點(diǎn)的xyz 三維坐標(biāo)值顯示。運(yùn)行程序后,鼠標(biāo)點(diǎn)擊上圖所示像素視差圖上的任意一點(diǎn),則會(huì)從xyz 這個(gè)矩陣中自動(dòng)讀取被點(diǎn)擊像素點(diǎn)對(duì)應(yīng)的三維坐標(biāo)值,并將結(jié)果顯示在命令提示符界面窗口。
圖11
三維坐標(biāo)原點(diǎn)為左目圖像光心點(diǎn)(即左目的ccpoint,該點(diǎn)可標(biāo)定后獲取)三維坐標(biāo)單位:mm,像素視差圖與校正后輸出的左目圖像一一對(duì)應(yīng)。
本文主要設(shè)計(jì)了一種在Win10 操作系統(tǒng)的PC上,實(shí)現(xiàn)VS2017 與OpenCV3.1 相結(jié)合的雙目視覺(jué)定位測(cè)距系統(tǒng)?;陔p目測(cè)距基本原理,通過(guò)MATLAB標(biāo)定工具箱完成雙目攝像頭標(biāo)定,并將結(jié)果導(dǎo)入程序中。利用Canny 邊緣檢測(cè)算法實(shí)現(xiàn)對(duì)SGBM 算法中的匹配進(jìn)行約束,完成平行雙目測(cè)距功能,并以為左目圖像光心點(diǎn)為三維坐標(biāo)原點(diǎn),輸出目標(biāo)點(diǎn)的三維坐標(biāo)信息。通過(guò)雙目測(cè)距實(shí)驗(yàn)可知,基于Win10+VS2017+OpenCV3.1 的雙目視覺(jué)定位測(cè)距系統(tǒng)能夠較好完成雙目圖像的立體匹配以及視差圖獲取工作,并能夠獲得圖像中被選擇點(diǎn)的三維位置信息,完成目標(biāo)點(diǎn)的定位功能。