(湖北大學(xué) 物理與電子科學(xué)學(xué)院 鐵電壓電材料與器件湖北省重點(diǎn)實(shí)驗(yàn)室,武漢 430062)
雙目技術(shù)作為計(jì)算機(jī)視覺的一個(gè)重要研究分支,廣受人們關(guān)注。它在機(jī)器人技術(shù)、無人駕駛汽車技術(shù)等領(lǐng)域有著廣泛的前景。雙目技術(shù)利用雙目攝像頭感知三維場景的深度信息,為機(jī)器人視覺、三維建模等提供有效依據(jù)[1]。測距方式有很多,包括量尺測距、電磁波測距、視差法測距等。量尺測距是指用量尺直接測量兩點(diǎn)距離,精度高,成本低,但僅適用于短距離測量,無法做到實(shí)時(shí)性;電磁波測距是基于發(fā)送的電磁波與接收的電磁波之間的時(shí)間差或相位差而計(jì)算兩點(diǎn)距離,如紅外測距、激光測距,測距精度高,實(shí)時(shí)性強(qiáng),但設(shè)備復(fù)雜、成本也高[2]。
室內(nèi)空間有隔離性、封閉性、貼近性、有限性等特點(diǎn)。室內(nèi)環(huán)境被限定性較高的圍護(hù)實(shí)體包圍起來,對光線、聲音等有很強(qiáng)的阻隔作用。因此,傳統(tǒng)的測距方法,在精度、成本、適用環(huán)境等方面考慮,不適用于室內(nèi)三維測量。利用視差法測距的雙目技術(shù)測量方法,具有高效率、高精度、低成本、簡單的系統(tǒng)結(jié)構(gòu)、易于集成在機(jī)器人、汽車上等優(yōu)點(diǎn),可以實(shí)現(xiàn)室內(nèi)三維測量。
雙目技術(shù)是基于類似于人眼的視差視覺原理。它是由雙目攝像頭在不同位置同時(shí)獲取目標(biāo)點(diǎn)的左右視圖,類似于人類或者動物的雙眼功能,并利用雙目視差相似三角形測量原理獲取目標(biāo)的三維坐標(biāo)信息,由此得到目標(biāo)點(diǎn)的深度信息,即測量目標(biāo)點(diǎn)與雙目攝像頭之間的距離。
雙目攝像頭的測距原理是基于人類雙目視差的原理,利用雙目視差三角測量原理獲取物體的深度信息。雙目攝像頭測距原理如圖1所示,圖中點(diǎn)P為目標(biāo)點(diǎn),Oleft為左攝像頭的光心,Oright為右攝像頭的光心,f為攝像頭焦距(Focal Length),b為基線(Baseline)長度,d為視差(Disparity):
d=xleft+xright
(1)
根據(jù)相似三角形原理,即可求得深度信息z:
(2)
化簡得:
(3)
圖1 雙目攝像頭測距原理圖
在雙目攝像頭測距系統(tǒng)中,攝像頭焦距f和基線長度b由設(shè)備固有參數(shù)、自己的需求確定,為已知量。故在該系統(tǒng)中,其核心是求解視差d,由此可以得到深度信息z。
雙目攝像頭測距系統(tǒng)整體結(jié)構(gòu)如圖2所示。利用張氏棋盤格相機(jī)標(biāo)定法,完成雙目攝像頭標(biāo)定,得到攝像頭內(nèi)參數(shù)(焦距、畸變系數(shù)、成像原點(diǎn))與外參數(shù)(平移向量、旋轉(zhuǎn)矩陣)。待測目標(biāo)的雙目圖片可以利用這些參數(shù)進(jìn)行雙目立體校準(zhǔn),使得左右兩張視圖消除畸變以及行對準(zhǔn)。進(jìn)行立體雙目匹配,將同一物體的左右視圖的對應(yīng)像素點(diǎn)匹配起來,可以得到視差圖,再利用上述原理公式可計(jì)算出深度信息。
圖2 雙目測距系統(tǒng)整體結(jié)構(gòu)
攝像機(jī)標(biāo)定是為了獲取攝像機(jī)的固有參數(shù):內(nèi)參數(shù)與外參數(shù),這些參數(shù)只與設(shè)備本身信息有關(guān)。一旦雙目攝像頭確定,內(nèi)參數(shù)與外參數(shù)就為定值,這些參數(shù)在接下來的實(shí)驗(yàn)測試中可以一直使用。內(nèi)、外參數(shù)決定了攝像機(jī)光屏的二維圖像坐標(biāo)系與世界三維坐標(biāo)系之間的映射關(guān)系。內(nèi)參數(shù)是一種從平面到像素的變換,僅決定于攝像機(jī)本身的物理特性。外參數(shù)反映的是攝像機(jī)坐標(biāo)系與世界坐標(biāo)系的變換,決定于內(nèi)參數(shù)與基線長度。
理論上,任意具有鮮明特征的目標(biāo)都能成為待標(biāo)定的物體,但通常都是以棋盤為標(biāo)定物體[3]。棋盤標(biāo)定法是基于張氏棋盤格相機(jī)標(biāo)定法。本實(shí)驗(yàn)采用的張氏棋盤格相機(jī)標(biāo)定法中,用于標(biāo)定的模板是角點(diǎn)數(shù)為5×4、棋盤格邊長為37mm×37mm矩形的黑白棋盤。
(4)
其中:
(5)
s是比例系數(shù),矩陣K是攝像機(jī)的內(nèi)參數(shù)矩陣,其中α,β為焦距信息,(u0,v0)為坐標(biāo)主點(diǎn)(光心),[R、T]外參數(shù)矩陣,R、T分別為攝像機(jī)平面與物體平面的旋轉(zhuǎn)矩陣與平移矩陣。
攝像頭由于透鏡的光學(xué)特性使得成像存在徑向畸變;兩個(gè)攝像頭由于裝配方面存在誤差,不可能絕對平行放置,故成像存在切向畸變。因此,需要求解畸變參數(shù)對圖片進(jìn)行矯正。在此假設(shè)qd(xd,yd)為攝像頭獲取的點(diǎn),經(jīng)過去畸變、矯正后得點(diǎn)qr(xr,yr),其關(guān)系為:
(6)
其中:D=(k1,k2,p1,p2,k3)構(gòu)成1×5的矩陣,為攝像頭的畸變參數(shù)矩陣[5]。其中k1,k2,k3確定徑向畸變,p1,p2確定切向畸變。
張氏棋盤格相機(jī)標(biāo)定法常用到的工具有OpenCV視覺類庫、halcon機(jī)器視覺軟件以及Matlab的TOOLBOX_calib或者Stereo Camera Calibrator等[6]。Matlab的TOOLBOX_calib有精度較高、操作方法簡單、三維可視化等特點(diǎn),因此本文采用Matlab的TOOLBOX_calib對左右相機(jī)進(jìn)行標(biāo)定,標(biāo)定圖片如圖3、圖4所示,標(biāo)定結(jié)果如下:
左攝像頭:
焦距: [αlβl]=[832.19568 838.64596]
坐標(biāo)主點(diǎn): [u0lv0l]=[313.50676 190.52907]
右攝像頭:
焦距: [αrβr]=[814.96533 820.46468]
坐標(biāo)主點(diǎn): [u0rv0r]=[348.55656 190.62929]
Distortionr=(0.00069 0.20770 -0.00251 0.01163 0.00000)
Distortionr=(0.04731 -0.67737 -0.00447 0.01159 0.00000)
OM=(0.01420 0.01002 -0.00357)
T=(-65.73752 -2.87428 -12.44283)
OM為旋轉(zhuǎn)關(guān)系向量(對其作Rodrigues變換,變換為R旋轉(zhuǎn)關(guān)系矩陣),T為平移向量。
XC98-IIIN型超聲細(xì)胞粉碎儀,北京鴻達(dá)新辰生物科技有限公司;D2F-6050ABF型真空干燥箱,天津工興實(shí)驗(yàn)室儀器有限公司;80ZYT11/H3型攪拌器,山東祥和集團(tuán)股份有限公司博山微電機(jī)廠; K2004E01激振器,The Modal Shop公司;Siglent SDG5162型波形發(fā)生器,深圳鼎陽科技有限公司;振動實(shí)驗(yàn)臺、模具,自制;LEO 1530 VP型高分辨場發(fā)射掃描電鏡,德國Zeiss公司。
圖3 雙目攝像頭標(biāo)定圖片(棋盤格平移)
圖4 雙目攝像頭標(biāo)定圖片(棋盤格偏轉(zhuǎn))
計(jì)算出雙目攝像頭的內(nèi)、外參數(shù)及畸變參數(shù)后,便可以實(shí)現(xiàn)世界三維坐標(biāo)系與圖像二維坐標(biāo)系之間的轉(zhuǎn)換。但為了求解視差d,還需要進(jìn)行立體矯正。求解視差的過程是將左右視圖對應(yīng)點(diǎn)相互匹配的過程。但是在二維空間中搜索相匹配的點(diǎn),將目標(biāo)點(diǎn)進(jìn)行嚴(yán)格對應(yīng)是非常困難的,內(nèi)存資源占用、時(shí)間耗費(fèi)、計(jì)算復(fù)雜度都非常大,并且由于噪聲、曝光、聚焦等因素影響,匹配結(jié)果會出現(xiàn)誤匹配現(xiàn)象。因此,我們可以將二維空間中的搜索匹配降至一維空間,由此減少搜索匹配范圍,增加匹配準(zhǔn)確性。這也是立體矯正的目的所在。
立體矯正是利用標(biāo)定的參數(shù)將用雙目攝像頭獲取的圖像去畸變處理,再將消除畸變后的圖像進(jìn)行嚴(yán)格地行對應(yīng),即左右視圖對極線處在同一水平線上,左視圖中的任意一個(gè)目標(biāo)點(diǎn)與右視圖中的對應(yīng)目標(biāo)點(diǎn)必有相同的行號。在立體匹配的過程中,搜索匹配同一行號與之相同特征的目標(biāo)點(diǎn)即可,這將有效降低計(jì)算復(fù)雜度,提高匹配準(zhǔn)確性[7]。
圖5 立體矯正流程圖
Bonguet算法利用雙目攝像頭的旋轉(zhuǎn)矩陣R和平移矩陣T,使左右視圖中的每幅重投影次數(shù)最小、重投影畸變最小、重疊觀測面積最大,立體矯正流程圖如上圖5所示。
Matlab中的TOOLBOX_calib工具箱和OpenCV視覺類庫都提供了雙目矯正的功能。在OpenCV中可通過stereoRectify函數(shù)完成左右視圖矯正。該函數(shù)通過雙目攝像頭的內(nèi)參數(shù)矩陣、外參數(shù)矩陣、畸變向量,旋轉(zhuǎn)矩陣和平移矩陣得到左右相機(jī)平面間的行對校正旋轉(zhuǎn)矩陣,左右相機(jī)的投影矩陣,和重投影矩陣。再調(diào)用函數(shù)initUndistortRectifyMap生成圖像矯正所需要的映射矩陣。最后調(diào)用remap函數(shù)得到矯正后的圖像。矯正前后左右視圖如圖6~7所示。
圖6 矯正前左右視圖圖片(未行對準(zhǔn))
圖7 矯正后左右視圖圖片(已行對準(zhǔn))
雙目匹配的作用是把同一場景左右視圖對應(yīng)的像點(diǎn)匹配起來,從而得到視差信息。立體匹配算法依據(jù)匹配基元的不同,可分為基于區(qū)域、特征和相位的匹配算法[8]?;趨^(qū)域的立體匹配算法通過構(gòu)建支持窗口的方式估計(jì)視差值,適用于高紋理圖像,采集圖像的視點(diǎn)差距不應(yīng)過大;基于特征的立體匹配算法顧名思義通過特征匹配估計(jì)視差值,適用于特征豐富的圖像;基于相位的立體匹配算法依據(jù)傅里葉變換的平移不變性,使得不同頻率范圍的相位相應(yīng)做匹配基元,適用在相位奇點(diǎn)較少、局部結(jié)構(gòu)相同的圖像[9]。根據(jù)視差獲取方式不同,又可分為全局立體匹配算法、半全局立體匹配算法和局部立體匹配算法。
基于區(qū)域的匹配算法相對于其他兩種算法而言能夠保證視差圖的密集性,對圖像無需預(yù)處理,有實(shí)現(xiàn)難度容易、實(shí)時(shí)性強(qiáng)、易于集成在嵌入式系統(tǒng)等優(yōu)點(diǎn),本實(shí)驗(yàn)采用基于區(qū)域的匹配算法。
BM(Block Matching)算法實(shí)現(xiàn)快速有效的局部塊匹配算法。BM算法使用小窗口SAD(絕對誤差累計(jì))查找左右校準(zhǔn)圖像之間的匹配點(diǎn)。SAD公式如下:
(7)
其中:pleft、pright表示匹配窗口灰度均值,B為匹配區(qū)域,r為窗口偏移量。該算法在強(qiáng)紋理環(huán)境下,能夠得到很好的效果,在弱紋理環(huán)境下匹配效果一般,并且對光照強(qiáng)度、對比度等因素造成的灰度值變化敏感,但并不影響總體匹配效果。OpenCV提供了StereoBM_create函數(shù)實(shí)現(xiàn)有效快速的塊匹配算法。該算法的兩個(gè)參數(shù)為視差搜索范圍numDisparities與匹配窗口大小blockSize。通過規(guī)定視差的搜索范圍構(gòu)成了一個(gè)雙目世界,尋找合適的匹配窗口大小,其具體的數(shù)值可以根據(jù)實(shí)驗(yàn)環(huán)境和工具參數(shù)進(jìn)行設(shè)置。
(8)
半全局塊匹配算法SGBM(Semi-Global Block Matching)是對BM算法的改進(jìn)。相比較而言,SGBM提高了匹配準(zhǔn)確性,但同時(shí)增加了耗時(shí)。在OpenCV中設(shè)置了BM/SGBM的參數(shù)后,使用視覺庫中的stereo.compute和normalize函數(shù)可以得到視差圖。知道圖像點(diǎn)(x,y)和視差值d,可以使用如下的公式計(jì)算物體深度:
Q(x,y,d,1)T=(X,Y,Z,W)T
(9)
圖8 左攝像頭圖片 圖9 深度圖
雙目測距的測試環(huán)境是在實(shí)驗(yàn)室內(nèi),用鼠標(biāo)點(diǎn)擊如上圖9所示圖中目標(biāo)點(diǎn)即可獲得深度信息,即目標(biāo)點(diǎn)與雙目攝像機(jī)的直線距離。
使用軟尺進(jìn)行實(shí)際測量,將實(shí)驗(yàn)?zāi)繕?biāo)擺放在待測實(shí)驗(yàn)點(diǎn)。為了計(jì)算簡便以及結(jié)果的準(zhǔn)確性,實(shí)際測量距離為整數(shù)。用雙目攝像機(jī)進(jìn)行拍照得到左右視圖,導(dǎo)入計(jì)算機(jī)內(nèi),使用之前已經(jīng)標(biāo)定好的數(shù)據(jù),對目標(biāo)點(diǎn)進(jìn)行雙目測距。使用BM算法測量結(jié)果如表1所示。使用SGBM算法測量結(jié)果如表2所示。
表1 BM算法實(shí)驗(yàn)結(jié)果
如表2所示SGBM算法的誤差比BM算法的誤差小,準(zhǔn)確性更高。并且軟尺測量的真實(shí)距離越大,相對誤差越小??紤]到標(biāo)定誤差、算法誤差與實(shí)際操作誤差,誤差結(jié)果在可接受范圍內(nèi)。
綜合設(shè)備環(huán)境、實(shí)驗(yàn)環(huán)境、算法魯棒性等客觀因素考慮,實(shí)驗(yàn)存在以下誤差因素:雙目標(biāo)定誤差,實(shí)驗(yàn)環(huán)境誤差以及算法誤差等。
表2 SGBM算法實(shí)驗(yàn)結(jié)果
圖10 雙目測距相對誤差
2.2.1 雙目標(biāo)定誤差
雙目標(biāo)定在整個(gè)系統(tǒng)里有著至關(guān)重要的作用,后續(xù)所有步驟都是基于雙目標(biāo)定數(shù)據(jù)的前提下完成的。雙目標(biāo)定誤差直接和間接影響著雙目測距的結(jié)果。
圖像采集。首先要保證標(biāo)定棋盤的左右視圖圖像清晰,其次采集圖像時(shí)保證棋盤標(biāo)定板與攝像機(jī)平面有角度變化,最重要的是棋盤標(biāo)定板需要遍歷整個(gè)圖像區(qū)域,在視場的不同范圍都要有標(biāo)定圖像。標(biāo)定圖像的多少對精度也會造成影響,盡量多的圖像能避免標(biāo)定數(shù)據(jù)對噪聲的敏感性,本文采集了21對圖像。每次由于圖像的不同,標(biāo)定的數(shù)據(jù)也不同。
角點(diǎn)提取。角點(diǎn)提取直接影響標(biāo)定結(jié)果。使用Matlab中的TOOLBOX_calib標(biāo)定時(shí),必須手動提取角點(diǎn),由于人的主觀因素影響,角點(diǎn)提取無法恰到好處。例如使用Matlab中的Stereo Camera Calibrator自動提取角點(diǎn),標(biāo)定結(jié)果如下:
如上式,由于標(biāo)定棋盤采集角度變化和數(shù)量、覆蓋相片比例,Matlab手動角點(diǎn)提取的不確定性,與第2節(jié)標(biāo)定結(jié)果對比有一定偏差。
2.2.2 實(shí)驗(yàn)環(huán)境誤差
由表1、表2觀察可知,實(shí)際距離越短,相對誤差反而挺大的,絕對誤差在15~32 mm之中,推測有攝像頭擺放角度、攝像頭物理結(jié)構(gòu)、噪聲等因素影響。
攝像頭所在平面與物體所在的平面存在一定角度,距離較短時(shí)誤差不大,但當(dāng)距離較長時(shí)例如2 000 mm,與物體夾角為5°,便會有7.6 mm的誤差,對實(shí)驗(yàn)結(jié)果影響較大。
市面上普通的攝像頭鏡頭長度大概約為2~3 cm,鏡頭里包含凸透鏡、圖像傳感器等器件,考慮到凸透鏡厚度、凸透鏡焦距(本實(shí)驗(yàn)選定的攝像頭焦距為4 mm)等因素,預(yù)估成像點(diǎn)與真實(shí)成像點(diǎn)存在毫米級別的誤差,這會影響測量結(jié)果。短距離測距時(shí)對該誤差尤為敏感。
外部電磁波干擾、攝像頭內(nèi)部電路光和電的基本性質(zhì)等引起的噪聲同樣會產(chǎn)生誤差。
2.2.3 算法誤差
本文采用的是基于區(qū)域的立體匹配算法,但單純的區(qū)域匹配都有一定限制[11]。
如圖8、圖9所示桌上的水杯、旁邊的空調(diào)有深度信息,而藍(lán)色的桌子、白色的背景沒有深度信息,這是由于BM算法只查找兩幅圖像之間的強(qiáng)紋理信息,在背景單一的室內(nèi)只能得到為數(shù)不多的點(diǎn)的深度信息。
在選擇好的區(qū)域塊內(nèi),所有的像素都被認(rèn)為具有相同的視差值,所以該算法不適用于當(dāng)區(qū)域塊過大時(shí)或者深度變化劇烈的場景。
對光照、對比度和噪聲敏感。同一場景,在不同的光照、對比度等因素情況下,得出的結(jié)果可能會有很大的偏差。
視差搜索范圍(numDisparities)與區(qū)域塊(blockSize)的大小難以選擇。由于BM/SGBM算法的特殊性,在不同場景下,所設(shè)定的參數(shù)不同。匹配窗口大小blockSize越大,計(jì)算復(fù)雜度越小,但是匹配的準(zhǔn)確性越低;匹配窗口大小blockSize越大,計(jì)算復(fù)雜度越高,但是同樣極易受到噪聲影響使之誤匹配。
本文研究了雙目三維測量技術(shù)在室內(nèi)環(huán)境的應(yīng)用,解決了在室內(nèi)環(huán)境下的目標(biāo)的三維測量、深度信息提取等問題。從雙目視差三角測量原理出發(fā),研究了攝像頭立體標(biāo)定、立體校準(zhǔn)、立體匹配等關(guān)鍵技術(shù),計(jì)算室內(nèi)目標(biāo)深度信息。通過實(shí)驗(yàn)對比基于區(qū)域的匹配算法BM和半全局塊匹配算法SGBM可知,兩種算法的相對誤差隨著實(shí)際距離的增加而減少,且SGBM的精度更高。在此基礎(chǔ)上又分析了實(shí)驗(yàn)誤差,從雙目標(biāo)定誤差、實(shí)驗(yàn)環(huán)境誤差和算法誤差3個(gè)方面進(jìn)行分析,研究了引起誤差造成的原因,在以后的研究中可以在此方面進(jìn)行改進(jìn)。