張 靜,李 強(qiáng),楊馥霖
(蘭州理工大學(xué)能源與動(dòng)力工程學(xué)院,甘肅 蘭州 730050)
20世紀(jì)80年代初,麻省理工學(xué)院的MARR首先提出了一種雙目匹配算法[1],雙目立體視覺的理論基礎(chǔ)由此奠定。目前雙目立體視覺在視覺伺服機(jī)器人、月球地表探測(cè)[2]、無(wú)人駕駛、果蔬采摘機(jī)器人、醫(yī)學(xué)成像等領(lǐng)域廣泛運(yùn)用。系統(tǒng)搭建、攝像機(jī)標(biāo)定、圖像矯正、立體匹配以及視差運(yùn)算等都是雙目立體視覺測(cè)量技術(shù)實(shí)現(xiàn)的重要環(huán)節(jié),在每個(gè)環(huán)節(jié)中都會(huì)產(chǎn)生誤差。一般認(rèn)為誤差形成的原因有3種:1)硬件制造方面造成的誤差,如CCD面陣的分辨率誤差,可通過(guò)優(yōu)化制造工藝加以改善;鏡頭的畸變(徑向和切向)、成像平面和鏡頭不平行等,可在對(duì)攝像機(jī)標(biāo)定的過(guò)程中得到矯正。2)軟件算法造成的誤差,國(guó)內(nèi)外已有很多學(xué)者提出了各種解決匹配誤差的方法,這些算法日漸完善,誤差也得到了控制。3)系統(tǒng)結(jié)構(gòu)參數(shù)組合和人工操作造成的誤差,如光軸與Z軸夾角、基線距、焦距、分辨率、物距等,這些參數(shù)的組合需要根據(jù)應(yīng)用場(chǎng)景精度需求通過(guò)實(shí)驗(yàn)確定,實(shí)驗(yàn)臺(tái)的人工標(biāo)定過(guò)程也會(huì)引入誤差。本文將通過(guò)理論分析與實(shí)驗(yàn)著重討論第3種誤差。
在計(jì)算機(jī)視覺領(lǐng)域,一般用針孔模型[3]對(duì)攝像機(jī)成像進(jìn)行分析。如圖1所示,QO1b和光軸Z1以及QO2c和光軸Z2構(gòu)成了最簡(jiǎn)單的兩個(gè)針孔模型。雙目視覺測(cè)量的基本原理是利用空間同一點(diǎn)在兩攝像機(jī)畫面上的視差來(lái)計(jì)算空間點(diǎn)的三維坐標(biāo)?,F(xiàn)有雙目傳感器的鏡頭有兩種擺放姿態(tài),即正直擺放姿態(tài)(兩光軸相互平行)和交向擺放姿態(tài)(兩光軸不平行)。
圖1 雙目立體視覺原理圖
兩攝像機(jī)坐標(biāo)系分別為O1X1Y1Z1和O2X2Y2Z2,假設(shè)兩個(gè)攝像機(jī)對(duì)稱放置,光軸Z1與Z2相交于P,相應(yīng)像素坐標(biāo)系為O11X11Y11Z11和O22X22Y22Z22,兩坐標(biāo)原點(diǎn)間距離為基線距離B。世界坐標(biāo)系OwXwYwZw與O1X1Y1Z1重合。光軸Z1、光軸Z2與Z軸夾角均為θ。假設(shè)兩攝像機(jī)的焦距f相等,即f=O1O11=O2O22??臻g上任意點(diǎn)Q(x,y,z)在O2X2Y2Z2中的坐標(biāo)為Q(x2,y2,z2),對(duì)應(yīng)像素點(diǎn)坐標(biāo)分別為(X1,Y1)、(X2,Y2)。根據(jù)小孔成像原理以及坐標(biāo)變換可推導(dǎo)出Q(x,y,z)的坐標(biāo)為:
(1)
因此,想要確定某點(diǎn)的三維坐標(biāo),則要根據(jù)左攝像機(jī)像面中該點(diǎn),找到其在右攝像機(jī)像面中對(duì)應(yīng)的匹配點(diǎn)。
由于制造工藝的限制,實(shí)際使用的攝像機(jī)主點(diǎn)(光軸與感光平面交點(diǎn))不能保證在成像設(shè)備的正中心位置,所以引入兩個(gè)變量參數(shù)cx和cy表示真實(shí)主點(diǎn)與理想主點(diǎn)間的偏移[4]。在一個(gè)普通攝像機(jī)上,一般使用兩個(gè)不同的焦距fx和fy。假設(shè)左成像平面上的點(diǎn)q用矩陣表示為q=[X1,Y1,1]T,目標(biāo)物體點(diǎn)Q用矩陣表示為Q=[x,y,z,1],引入?yún)?shù)s(比例因子)和單應(yīng)性矩陣H,定義:q=sHQ,其中H=MW。
(2)
式中:M為攝像機(jī)內(nèi)參數(shù)矩陣。式(2)表述了現(xiàn)實(shí)世界點(diǎn)Q在外參數(shù)矩陣基礎(chǔ)上,經(jīng)過(guò)攝像機(jī)的鏡頭,并通過(guò)針孔成像轉(zhuǎn)化成為像素點(diǎn)的過(guò)程。
W=[RT]
(3)
式中:R,T為外部參數(shù),R為旋轉(zhuǎn)矩陣,T為平移向量;W為攝像機(jī)外參數(shù)矩陣。式(3)表述了現(xiàn)實(shí)世界點(diǎn)Q(世界坐標(biāo))經(jīng)過(guò)旋轉(zhuǎn)平移,落到另一個(gè)現(xiàn)實(shí)世界(攝像機(jī)坐標(biāo)系)上的過(guò)程。
假設(shè)校正后的坐標(biāo)點(diǎn)為qp(xp,yp),畸變后的坐標(biāo)點(diǎn)為qd(xd,yd),因?yàn)橛型哥R畸變,則有
(4)
式中:(k1,k2,p1,p2,k3)是攝像機(jī)的畸變矩陣,表述沒有落在理論計(jì)算該落在位置的現(xiàn)實(shí)世界點(diǎn)Q產(chǎn)生的偏移和變形;r為旋轉(zhuǎn)半徑。
對(duì)攝像機(jī)標(biāo)定就是為了得到攝像機(jī)的內(nèi)部參數(shù)、外部參數(shù)和畸變矩陣,本文采用張正友標(biāo)定法,該標(biāo)定法具有較好的精度和魯棒性[5-6]。開源計(jì)算機(jī)視覺庫(kù)OpenCV由Intel公司開發(fā),采用C/C++語(yǔ)言編程,具有開源、輕量級(jí)、高效的特點(diǎn),實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法,在對(duì)實(shí)時(shí)性要求較高的計(jì)算機(jī)視覺研究中有廣泛應(yīng)用。本文在Microsoft VS 2010開發(fā)環(huán)境下,基于開源計(jì)算機(jī)視覺庫(kù)OpenCV,在文獻(xiàn)[7]攝像機(jī)標(biāo)定與立體匹配程序的基礎(chǔ)上對(duì)代碼進(jìn)行了重構(gòu)、對(duì)界面進(jìn)行了調(diào)整。攝像機(jī)標(biāo)定與立體匹配程序能夠?qū)崿F(xiàn)攝像機(jī)單雙目標(biāo)定、圖像矯正、立體匹配和視差運(yùn)算等過(guò)程,從而計(jì)算出被測(cè)物體的深度信息。
如圖2所示,本文使用40mm×40mm平面黑白棋盤格標(biāo)定攝像機(jī),雙目攝像機(jī)從不同的角度、不同的距離拍攝30幅圖像,對(duì)棋盤圖像進(jìn)行標(biāo)定。表1為通過(guò)攝像機(jī)標(biāo)定與立體匹配程序獲得的一組標(biāo)定數(shù)據(jù)。
圖2 棋盤圖和檢測(cè)的所有角點(diǎn)
參數(shù)左攝像機(jī)右攝像機(jī)內(nèi)部參數(shù)A=9.86×10203.20×10209.92×1022.40×102001é?êêêù?úúúA=9.74×10203.20×10209.75×1022.40×102001é?êêêù?úúú畸變矩陣[-1.49×10-1 1.11 6.40×10-49.49×10-3 0][-1.30×10-1 1.11 -1.18×10-2-8.10×10-6 0]外部參數(shù)R=9.99×10-1-3.40×10-2-4.08×10-23.23×10-29.99×10-1-4.03×10-24.21×10-23.90×10-29.98×10-1é?êêêù?úúú T=-8.84×10-8.28×10-2-1.51×101é?êêêù?úúú
有了旋轉(zhuǎn)矩陣R和平移向量T,立體矯正Bouguet算法就能簡(jiǎn)單地使雙目視覺標(biāo)定中采集的左右圖像的每幅圖像的重投影次數(shù)最小,且重投影畸變最大,從而使立體匹配更加準(zhǔn)確和快速。在OpenCV中通過(guò)stereoRectify()函數(shù)完成以上矯正功能。在OpenCV中使用reprojectImageTo3D()函數(shù)可實(shí)現(xiàn)測(cè)距。OpenCV提供了Bouguet和Hartley等雙目矯正以及BM和SGBM等雙目匹配的多種算法。
文獻(xiàn)[8]、[9]詳細(xì)講述了攝像機(jī)標(biāo)定、圖像矯正、立體匹配與測(cè)距的原理。攝像機(jī)標(biāo)定與立體匹配程序參數(shù)設(shè)置如圖3所示。
圖3 攝像機(jī)標(biāo)定與立體匹配程序參數(shù)設(shè)置圖
針對(duì)雙目立體視覺測(cè)量中,基線距離B、光軸與Z軸夾角θ等結(jié)構(gòu)參數(shù)在實(shí)驗(yàn)中難以測(cè)量的問題,本文設(shè)計(jì)了一套較為規(guī)范的雙目立體視覺實(shí)驗(yàn)臺(tái),實(shí)現(xiàn)了雙目測(cè)距,并研究了雙目視覺測(cè)量系統(tǒng)的結(jié)構(gòu)參數(shù)對(duì)測(cè)量精度的影響。
圖4為實(shí)驗(yàn)臺(tái)的總體框架圖,由軟件和硬件兩部分組成,能夠精確設(shè)置并讀取旋轉(zhuǎn)半徑r、光軸與Z軸夾角θ、物距L等結(jié)構(gòu)參數(shù),可通過(guò)標(biāo)定、圖像矯正、立體匹配以及視差運(yùn)算實(shí)現(xiàn)雙目測(cè)距。
圖4 雙目立體視覺實(shí)驗(yàn)臺(tái)總體框架圖
圖5為3D打印的實(shí)驗(yàn)臺(tái),實(shí)際搭建的雙目立體視覺實(shí)驗(yàn)臺(tái)選用的工業(yè)相機(jī)為顯微精工GY200,其像素為200萬(wàn),焦距為2.8mm~12mm,鏡頭視角101°×33°。工作站配置為Win10以及酷睿i7處理器。
圖5 雙目立體視覺實(shí)驗(yàn)臺(tái)的實(shí)際搭建
雙目視覺系統(tǒng)結(jié)構(gòu)參數(shù)模型如圖6所示。在實(shí)驗(yàn)中,基線距離B=2rcosγ-2(f+a)sinθ,其中a為一個(gè)可求的常量,γ為旋轉(zhuǎn)角度,由三角形相似可得γ=θ?,F(xiàn)有研究如文獻(xiàn)[7],是將攝像頭在一平面固定擺放后進(jìn)行實(shí)驗(yàn),而本文進(jìn)行了光軸與Z軸夾角θ和基線距離B同時(shí)變化的實(shí)驗(yàn)。此模型能夠?qū)崿F(xiàn)雙目視覺測(cè)量系統(tǒng)的基線距離B、物距L、相機(jī)與Z軸夾角θ等結(jié)構(gòu)參數(shù)精確設(shè)置、隨意組合,能夠大大提高實(shí)驗(yàn)效率,減小人工操作帶來(lái)的誤差。
圖6 實(shí)驗(yàn)臺(tái)雙目視覺系統(tǒng)結(jié)構(gòu)參數(shù)模型
1)相機(jī)分辨率、物距對(duì)雙目視覺精度的影響。
三維重建是指對(duì)三維物體建立適合計(jì)算機(jī)表示和處理的數(shù)學(xué)模型,在雙目視覺研究中,一般采用基于視差圖的三維重建方法。分辨率較高的攝像機(jī)具有較高的測(cè)量精度,且測(cè)量較遠(yuǎn)物體時(shí)精度衰減較小,但價(jià)格也更高。本實(shí)驗(yàn)所用攝像機(jī),其像元尺寸為2.8μm×2.8μm。對(duì)于一個(gè)既定的雙目視覺系統(tǒng),一般物距L越小,即物體距離攝像機(jī)越近,誤差越小,精度越高[10]。
2)光軸與Z軸夾角、基線距離對(duì)雙目視覺精度的影響。
通常情況下,左右攝像機(jī)對(duì)稱布置,且各項(xiàng)參數(shù)比較接近,如圖7所示。
圖7 雙目視覺系統(tǒng)結(jié)構(gòu)模型
圖7中,攝像機(jī)的視角為α,攝像機(jī)主光軸與Z軸之間的夾角為θ。該雙目視覺系統(tǒng)的可視范圍W如下:
(5)
空間中的點(diǎn)Q(x,y,z) 在左右圖像上的對(duì)應(yīng)點(diǎn)分別為u1,u2,設(shè)u1的橫坐標(biāo)為U1。點(diǎn)Q與左右攝像機(jī)光心的連線和左右攝像機(jī)光軸的夾角分別為β1,β2,如圖 7所示。根據(jù)三角形相似原理可得:
(6)
所以:
(7)
將式(7)對(duì)U1求偏導(dǎo)可得:
(8)
又由式(7)可得
(9)
將式(9)代入式(8)可得
(10)
由式(10)可知,理論上,對(duì)于特定的焦距和空間點(diǎn),當(dāng)θ與x,z滿足θ=90°-arctan(z/x)時(shí),誤差可以取到最小值。
本文在實(shí)驗(yàn)臺(tái)上進(jìn)行了不同旋轉(zhuǎn)半徑r下系統(tǒng)標(biāo)定誤差隨光軸與Z軸夾角變化(-6°~9°)的實(shí)驗(yàn),變化規(guī)律如圖8所示,當(dāng)正向角度過(guò)大時(shí),圖像集中于中間,當(dāng)反向角度過(guò)大時(shí),圖像集中于兩側(cè),這兩種情形都不能使圖像同時(shí)被左右攝像機(jī)完全采集。就本文中所用攝像機(jī)而言,在θ=3°時(shí)標(biāo)定誤差最小,且測(cè)量物體在采集圖像中占比較大。
圖8 不同r下系統(tǒng)標(biāo)定誤差隨γ的變化規(guī)律
基線長(zhǎng)度的變化不僅會(huì)引起系統(tǒng)結(jié)構(gòu)的改變,也會(huì)對(duì)系統(tǒng)測(cè)量精度造成影響。
測(cè)量誤差△L的公式為:
(11)
式中:d為視差;δ為一個(gè)像素單位。
將d=fB/L代入式(11)可得:
(12)
由式(12)可知,當(dāng)焦距和空間點(diǎn)確定后,基線距離B增大,測(cè)量誤差會(huì)減小。在實(shí)驗(yàn)中基線距離B=2rcosγ-2(f+a)sinθ,由圖8可知,隨著基線距離增大,誤差在逐漸減小,同時(shí)基線距離越大,交叉視野越往遠(yuǎn)處移動(dòng)。在實(shí)驗(yàn)中發(fā)現(xiàn)基線距離越大,測(cè)較遠(yuǎn)物體精度越高,因?yàn)檩^近物體無(wú)法完全進(jìn)入交差視野。
測(cè)距精度的外在因素取決于焦距與基線的配合,內(nèi)在因素取決于測(cè)距算法的編寫是否有效,首先根據(jù)目標(biāo)距離確定鏡頭焦距,之后通過(guò)實(shí)驗(yàn)確定旋轉(zhuǎn)半徑r和旋轉(zhuǎn)角度γ,從而間接確定基線距離。焦距選型在于讓目標(biāo)在圖像中占據(jù)合理的比例,基線選型在于確保雙目有足夠的交叉圖像面積,二者的選型要重復(fù)實(shí)驗(yàn)后才可定下來(lái)。
從應(yīng)用場(chǎng)景需求出發(fā)的結(jié)構(gòu)參數(shù)確定方法如圖9所示,針對(duì)由旋轉(zhuǎn)半徑r、旋轉(zhuǎn)角度γ表述的雙目視覺結(jié)構(gòu)參數(shù)模型,本文提出了一種根據(jù)實(shí)際應(yīng)用場(chǎng)景需求進(jìn)行雙目視覺測(cè)量系統(tǒng)結(jié)構(gòu)參數(shù)選擇的方法:根據(jù)參考值初步搭建系統(tǒng),先確定部分參數(shù),在當(dāng)前算法下根據(jù)剩余結(jié)構(gòu)參數(shù)的來(lái)回組合實(shí)驗(yàn)結(jié)果,進(jìn)行最優(yōu)結(jié)構(gòu)參數(shù)的選擇,最后完成結(jié)構(gòu)參數(shù)的確定。
圖9 從應(yīng)用場(chǎng)景需求出發(fā)的結(jié)構(gòu)參數(shù)確定方法
文獻(xiàn)[10]給出了利用雙目視覺測(cè)量系統(tǒng)搭建的一些結(jié)構(gòu)參數(shù)參考值,如:當(dāng)基線距離B在0.8L~2.2L之間時(shí),系統(tǒng)的測(cè)量誤差變化較小。當(dāng)基線距離B<0.5L或B>3.0L時(shí),應(yīng)根據(jù)具體情況對(duì)系統(tǒng)結(jié)構(gòu)參數(shù)做適當(dāng)調(diào)節(jié),從而減小測(cè)量誤差,基線距離越大測(cè)量精度越高。
本文選用蘋果為目標(biāo)物體,物距L為50cm~100cm,進(jìn)行了測(cè)距實(shí)驗(yàn)。在實(shí)驗(yàn)中,得出光軸與Z軸夾角為3°,基線距離為10.5mm時(shí),待測(cè)物體在采集圖像中占比最大,測(cè)量精度為0.3mm,精度最高,證明本文的結(jié)構(gòu)參數(shù)確定方法有較高的實(shí)用價(jià)值。
本文介紹了雙目立體視覺的原理,針對(duì)雙目立體視覺的標(biāo)定、立體矯正、匹配與測(cè)距等環(huán)節(jié)進(jìn)行了比較全面的分析,設(shè)計(jì)了一套較為規(guī)范的軟硬件實(shí)驗(yàn)臺(tái),結(jié)合實(shí)驗(yàn)臺(tái)進(jìn)一步提出了由旋轉(zhuǎn)半徑r、旋轉(zhuǎn)角度γ表述的雙目視覺系統(tǒng)結(jié)構(gòu)參數(shù)模型,具有較高的實(shí)用價(jià)值。本方法仍有許多深入研究的空間,如何通過(guò)優(yōu)化視覺算法來(lái)提高測(cè)量精度,將在今后做進(jìn)一步研究。