李春明,耿永鵬,遠(yuǎn)松靈,李 鵬
(1.河北科技大學(xué) 信息科學(xué)與工程學(xué)院;2.石家莊市京華電子實(shí)業(yè)有限公司,河北 石家莊 050000)
雙目視覺測(cè)量系統(tǒng)在不接觸物體的前提下可以高效率、高精度地獲取目標(biāo)物體的三維信息,當(dāng)前作為機(jī)器視覺領(lǐng)域的重要分支,技術(shù)相對(duì)成熟,其擬人化的工作方法可以在各種條件下測(cè)量各種場(chǎng)景的三維信息,這在現(xiàn)代科學(xué)技術(shù)社會(huì)中具有重要意義和極高的研究?jī)r(jià)值,它廣泛用于工業(yè)、農(nóng)業(yè)和醫(yī)學(xué)等各個(gè)領(lǐng)域。因此,在研究了雙目視覺原理和關(guān)鍵技術(shù)之后,設(shè)計(jì)了一套雙目立體測(cè)距系統(tǒng)。
雙目立體視覺以模擬人眼圖像的方式獲得深度信息,其主要思想是通過視差原理,從兩個(gè)不同方向維度獲取目標(biāo)圖像信息,進(jìn)而獲取物體的三維信息。立體視覺測(cè)距試驗(yàn)完成過程如圖1所示。
圖1 立體視覺測(cè)距流程
類似于人眼獲取的場(chǎng)景信息,兩個(gè)相對(duì)平行的相機(jī)拍攝同一物體獲取照片,但由于兩臺(tái)攝像機(jī)位置不同,獲得的兩個(gè)圖像之間存在像素位置偏差,基于該原理獲得視差圖,再依據(jù)三角測(cè)量方法取得被測(cè)物體的三維信息,原理圖如圖2所示。
圖2 雙目立體視覺原理
由平行放置的兩臺(tái)攝像機(jī)對(duì)空間中的一點(diǎn)P進(jìn)行成像,待測(cè)點(diǎn)P在左右像平面的投影點(diǎn)分別為pl(xl,yl)和pr(xr,yr),假設(shè)P點(diǎn)在攝像機(jī)坐標(biāo)下的坐標(biāo)為(xc,yc,zc),則P點(diǎn)的坐標(biāo)可以表示為:
(1)
其中f為相機(jī)的焦距,b為光心O1和O2的距離。
通過公式可知,確定物體在平面上的坐標(biāo)就可以獲取它所對(duì)應(yīng)的三維空間坐標(biāo)。
筆者采用的是張正友教授提出的相機(jī)標(biāo)定法,挪動(dòng)標(biāo)定板的位置以拍攝多組照片。采用Matlab工具箱對(duì)拍攝的多組圖片進(jìn)行標(biāo)定,最后,檢索攝像機(jī)的內(nèi)部和外部參數(shù)以及畸變參數(shù)。
由于在制作過程中雙目相機(jī)很難保持相對(duì)平行,因此需要立體校正確保兩幅圖關(guān)聯(lián)在同一水平線上,簡(jiǎn)化立體匹配所需的時(shí)間。
根據(jù)約束條件的不同,立體匹配可大致分為以下三大類:①基于局部立體匹配。該算法的優(yōu)點(diǎn)是具備較強(qiáng)的實(shí)時(shí)功能,但當(dāng)處理圖像中弱紋理區(qū)域時(shí)就會(huì)顯得力不從心,造成誤匹配的概率增大。②基于全局的匹配算法。該算法雖然彌補(bǔ)了局部匹配中對(duì)弱紋理區(qū)域的匹配,但該算法復(fù)雜且耗時(shí)很多。③半全局立體匹配。該算法既保證精度的同時(shí)也確保了匹配速度,從而獲得了研究人員的普遍運(yùn)用,這也是本文采用此算法的原因。
半全局立體匹配算法的主要思路是對(duì)圖像中某一像素進(jìn)行一維路徑的計(jì)算,通過約束項(xiàng)對(duì)能量函數(shù)進(jìn)行優(yōu)化處理,從而得到最優(yōu)匹配結(jié)果,其具體步驟如下:①匹配代價(jià)的計(jì)算。計(jì)算圖像中某一個(gè)像素點(diǎn)的匹配代價(jià)。②匹配代價(jià)的聚合。通過沿8個(gè)方向掃描線上分別計(jì)算匹配代價(jià),每個(gè)路徑的間隔為45°,而后將一切掃描途徑的匹配代價(jià)進(jìn)行聚合。③視差的計(jì)算。經(jīng)過迭代得到計(jì)算視差,用隨機(jī)的視差影像來校正右圖像,再進(jìn)行匹配,獲得新的視差圖。④視差的優(yōu)化處理。左右圖像匹配后,利用左右兩幅圖之間存在的約束性來判定該點(diǎn)是否為誤匹配點(diǎn),若為誤匹配點(diǎn)則將其剔除。圖3為立體匹配流程圖。
圖3 立體匹配流程
4.1.1 Step1:相機(jī)校準(zhǔn)。以獲取相機(jī)的內(nèi)部和外部參數(shù),內(nèi)外參數(shù)結(jié)果如下:
T=[-120.5369 0.2066 1.5093]
Dl=[-0.2732 0.0584 -0.0006 -0.0008 0.0000]
Dr=[-0.3078 0.0860 -0.0003 -0.0001 0.0000]
其中矩陣Ml和Mr是相機(jī)自身的內(nèi)部參數(shù),R為旋轉(zhuǎn)矩陣,T為平移向量,Dl和Dr為兩個(gè)相機(jī)的畸變。
4.1.2 Step2:圖像讀取。在同一時(shí)刻對(duì)同一物體進(jìn)行左右目圖像的拍攝,圖4為相機(jī)拍攝的左右圖片。
圖4 左右相機(jī)拍攝圖片
4.1.3 Step3:圖像校正。使用OpenCV的內(nèi)置重映射功能進(jìn)行圖像校正。圖像校正完成后,輸出雙目行對(duì)齊圖像(雙目圖像能夠自動(dòng)行對(duì)齊說明雙目標(biāo)定結(jié)果基本正確),圖5為校正后圖片。
圖5 校正后圖片
4.1.4 Step4:立體匹配。雙目立體匹配采用的是SGBM算法,并且使用ReprojectImageTo3D函數(shù)將通過雙目匹配獲得的像素坐標(biāo)轉(zhuǎn)換為世界坐標(biāo)系中的3D坐標(biāo)。
4.1.5 Step5:像素視差圖顯示。圖6為視差圖。
圖6 視差圖
4.1.6 Step6:xyz三維坐標(biāo)值顯示。運(yùn)行程序,在像素視差圖上的任意位置單擊操作,從而在命令符號(hào)窗口中顯示與該點(diǎn)的像素坐標(biāo)相對(duì)應(yīng)的3D坐標(biāo),圖7為顯示距離的命令符號(hào)窗口。
圖7 顯示距離的命令符號(hào)窗口
基于SGBM算法匹配在保證精度的同時(shí)也大大提升了速度。實(shí)驗(yàn)通過改變目標(biāo)物與攝像機(jī)的相對(duì)距離測(cè)得不同距離下的深度數(shù)據(jù),檢測(cè)結(jié)果如表1所示。
表1 實(shí)驗(yàn)結(jié)果
本實(shí)驗(yàn)以車牌為基準(zhǔn),通過測(cè)量各種距離進(jìn)行檢查可以看出,在距離攝像機(jī)較近的位置時(shí)精度較高,而當(dāng)距離變長(zhǎng)時(shí)誤差也就越大。誤差產(chǎn)生的原因主要包括有實(shí)際測(cè)量產(chǎn)生的誤差、相機(jī)標(biāo)定產(chǎn)生的誤差以及其他因素影響產(chǎn)生的誤差。
筆者介紹了雙目匹配測(cè)距技術(shù)的主成分分析和實(shí)現(xiàn)過程,通過獲得圖像中被選擇點(diǎn)的三維位置信息,完成距離測(cè)量。在對(duì)測(cè)量車牌距離的測(cè)試實(shí)驗(yàn)中驗(yàn)證了該方法在測(cè)距方面的可行性,該實(shí)驗(yàn)表明,對(duì)于設(shè)備簡(jiǎn)單、成本低廉的雙目視覺測(cè)距系統(tǒng)依然可以測(cè)量出穩(wěn)定性強(qiáng)、準(zhǔn)確度高的結(jié)果,這也是它被廣泛應(yīng)用在計(jì)算機(jī)視覺、軍事技術(shù)、三維重建等多個(gè)重要領(lǐng)域的原因。雖然獲得了預(yù)期的實(shí)驗(yàn)結(jié)果,但研究不夠深入,還有可以改進(jìn)的地方:選擇精度更高的標(biāo)定板和提高立體匹配速度等問題。