黃子巖,婁小平
(北京信息科技大學(xué)光電測(cè)試技術(shù)及儀器教育部重點(diǎn)實(shí)驗(yàn)室,北京 100192)
隨著三維重建技術(shù)的不斷發(fā)展,其在生產(chǎn)制造、文物保護(hù)、醫(yī)學(xué)測(cè)量等方面的應(yīng)用日益廣泛,其中三維重建的紋理信息具有重要的研究?jī)r(jià)值。獲取三維信息的方式有結(jié)構(gòu)光掃描、激光掃描及使用方便、成本較低的Kinect、RealSense深度相機(jī)等。Kinect、RealSense通過(guò)兩組不同的相機(jī)分別獲取深度與彩色數(shù)據(jù),為了得到準(zhǔn)確的三維紋理信息,需要進(jìn)行深度圖與彩色圖的配準(zhǔn)。
SIFT、SURF、RANSAC算法等常見的圖像配準(zhǔn)方法一般用于二維彩色圖像。龍勇志使用卷積神經(jīng)網(wǎng)絡(luò)提取紅外圖像與可見光圖像的共有特征,實(shí)現(xiàn)了紅外圖像與可見光圖像的配準(zhǔn)。針對(duì)深度圖與彩色圖的配準(zhǔn),彭麗通過(guò)使用NPDM算法,以迭代的方式獲取深度圖與彩色圖間的配準(zhǔn)參數(shù)。Mikhelson等提出了一種用于RGB-D相機(jī)的配準(zhǔn)方法,將深度圖重建為三維點(diǎn)云數(shù)據(jù),分別提取點(diǎn)云中的角點(diǎn)與彩色圖的角點(diǎn),獲得深度圖與彩色圖的對(duì)應(yīng)關(guān)系。宋希彬針對(duì)RGB-D傳感器深度圖像的偏移問(wèn)題提出了進(jìn)行校正的偏移建模算法,能夠得到更加準(zhǔn)確的配準(zhǔn)結(jié)果。
本文的目的是實(shí)現(xiàn)RGB-D相機(jī)深度圖與彩色圖的配準(zhǔn)。在對(duì)常用的二維圖像特征匹配算法進(jìn)行研究的基礎(chǔ)上,利用SAD算子與亞像素插值算法結(jié)合得到深度圖,再根據(jù)深度圖與彩色圖的坐標(biāo)系變換關(guān)系完成深度圖與彩色圖的配準(zhǔn)。
為了實(shí)現(xiàn)RGB-D相機(jī)深度圖與彩色圖的配準(zhǔn),首先需要對(duì)相機(jī)進(jìn)行標(biāo)定與立體校正,然后通過(guò)雙目圖像匹配結(jié)果得到深度圖,最后使用深度相機(jī)與彩色相機(jī)的坐標(biāo)系變換關(guān)系完成配準(zhǔn)過(guò)程。
1.1.1 相機(jī)標(biāo)定
相機(jī)標(biāo)定的目的是獲取相機(jī)像素坐標(biāo)系與物體所在的世界坐標(biāo)系之間的轉(zhuǎn)換關(guān)系,根據(jù)相機(jī)模型求解內(nèi)部參數(shù)和外部參數(shù)。張正友標(biāo)定法采用理想針孔成像模型,利用圖形尺寸信息已知的平面標(biāo)定板,計(jì)算得到每一個(gè)圖像角點(diǎn)在世界坐標(biāo)系下的物理坐標(biāo),從而求解相機(jī)像素坐標(biāo)與世界坐標(biāo)系的關(guān)系。在張正友標(biāo)定法中,世界坐標(biāo)系的XOY平面定義在棋盤格上,則有=0。根據(jù)針孔成像模型可計(jì)算出像素坐標(biāo)系與世界坐標(biāo)系之間的變換關(guān)系:
其中,、為旋轉(zhuǎn)矩陣的前兩列。把內(nèi)參矩陣記為,令[]為。、作為旋轉(zhuǎn)矩陣的兩列,存在單位正交的關(guān)系,即:
將=[]代入(2)中,可得:
其中、為矩陣的前兩列。由于相機(jī)內(nèi)參矩陣有5個(gè)未知數(shù),因此需要至少三張姿態(tài)不同的標(biāo)定板照片才能完成標(biāo)定。
真實(shí)的鏡頭并非理想的小孔成像模型,而是帶有不同程度的畸變。畸變主要包括徑向畸變與切向畸變兩種類型,由于切向畸變影響較小,通常只考慮徑向畸變。設(shè)(,)、(,)為理想的像素坐標(biāo)與圖像坐標(biāo),(u,v)、(x,y)為實(shí)際測(cè)量的像素坐標(biāo)與圖像坐標(biāo),、為畸變系數(shù)。則有:
通過(guò)圖像像素坐標(biāo)系與圖像物理坐標(biāo)系的變換公式=+/d、=+/d與u=+x/d、v=v+y/d將(4)式轉(zhuǎn)換到像素坐標(biāo),、為相機(jī)光軸與圖像平面交點(diǎn)的橫、縱坐標(biāo)值,d、d分別為每個(gè)像素在軸和軸方向上的物理尺寸:
設(shè)拍攝到張照片,每張照片有個(gè)角點(diǎn),對(duì)于每個(gè)角點(diǎn),由式(5)可得到2個(gè)方程:
將矩陣系數(shù)記為,等式右端項(xiàng)記為,由最小二乘法得:
雙目相機(jī)標(biāo)定利用標(biāo)定板中同一點(diǎn)在左右相機(jī)中的圖像坐標(biāo),計(jì)算出左右兩相機(jī)之間的旋轉(zhuǎn)矩陣和平移矩陣。設(shè)、與R、T分別為左右相機(jī)經(jīng)過(guò)單目相機(jī)標(biāo)定后的外參,左右相機(jī)與空間中的一點(diǎn)在世界坐標(biāo)系下的坐標(biāo)分別為A、A、A,可得:
式(8)中消去A可得左右相機(jī)之間坐標(biāo)系轉(zhuǎn)換關(guān)系:
由式(9)可得左右相機(jī)坐標(biāo)系間的旋轉(zhuǎn)平移矩陣:
1.1.2 立體校正
為方便后續(xù)的立體匹配步驟,加快匹配速度,需要對(duì)匹配過(guò)程中的對(duì)應(yīng)點(diǎn)從二維搜索降到一維搜索。立體校正的目的是對(duì)左右相機(jī)獲取的圖像進(jìn)行重投影,使其落于同一豎直平面上,只有水平方向上的偏移。校正后的匹配點(diǎn)的搜索只需在對(duì)應(yīng)的水平方向進(jìn)行。本文采用Bouguet算法對(duì)雙目相機(jī)進(jìn)行立體校正。
經(jīng)過(guò)雙目標(biāo)定后,得到了左右相機(jī)間的旋轉(zhuǎn)矩陣與平移矩陣。將旋轉(zhuǎn)矩陣分解成、r兩個(gè)矩陣,分別表示左、右相機(jī)的旋轉(zhuǎn)。為了將兩幅圖像的行像素對(duì)準(zhǔn),將左圖像中的極點(diǎn)移動(dòng)到無(wú)窮遠(yuǎn)處,使雙目相機(jī)的極線變換到水平位置。左右相機(jī)平移向量方向是左圖像極點(diǎn)方向:
方向須與垂直,則可表示為:
由與叉乘得到,可得到合成矩陣:
左右相機(jī)的校正矩陣為:
1.2.1 SAD圖像匹配算法
SAD(sum of absolute differences)是一種圖像的塊匹配算法。以左相機(jī)圖像的源匹配點(diǎn)為中心,定義一個(gè)大小為×的窗口,計(jì)算出窗口的灰度值的總和,然后逐步在右相機(jī)圖像中計(jì)算左右窗口的灰度和的差值,最后檢測(cè)到匹配點(diǎn)’為差值最小的區(qū)域的中心像素。SAD算法原理如圖1所示。
圖1 SAD算法原理圖
公式如下:
其中(,)為絕對(duì)誤差,(,)為左相機(jī)×窗口,(,)為右相機(jī)M×N窗口。
1.2.2 亞像素插值
圖像視差計(jì)算不能恢復(fù)出圖像中所有點(diǎn)的視差,且得到的視差為離散值。亞像素插值是對(duì)離散的灰度值進(jìn)行插值,得到亞像素點(diǎn)的灰度值,使物體表面視差更加平滑。本文使用雙線性插值法進(jìn)行亞像素插值計(jì)算。
如圖2所示,雙線性插值是通過(guò)待求點(diǎn)周圍4個(gè)已知相鄰點(diǎn)的值,分別進(jìn)行方向與方向的兩次線性插值得到待求點(diǎn)(,)的值。假設(shè)已知4個(gè)點(diǎn)=(,)、=(,)、=(,)、=(,),進(jìn) 行方 向 的 線 性插 值,得到:
圖2 雙線性插值示意圖
然后在方向進(jìn)行線性插值,得到:
將式(16)、(17)、(18)結(jié)合得:
1.3.1 視差圖轉(zhuǎn)換到深度圖
左右相機(jī)校正完成后,使得極線平行,兩條光軸方向也平行,如圖3所示。設(shè)空間中一點(diǎn),和是點(diǎn)在左右像平面上的成像點(diǎn),為點(diǎn)的深度值,為相機(jī)焦距,X和X是兩個(gè)成像點(diǎn)在左右兩個(gè)像面上距離圖像左邊緣的距離,為左右相機(jī)基線距離,則視差和物體深度的關(guān)系式如下:
圖3 視差與深度轉(zhuǎn)換示意圖
令=X-X,整理可得:
1.3.2 深度圖轉(zhuǎn)換到點(diǎn)云圖
根據(jù)相機(jī)成像模型可得像素坐標(biāo)系與世界坐標(biāo)系之間的變換,其中為(,)對(duì)應(yīng)的深度值:
由于世界坐標(biāo)原點(diǎn)和相機(jī)原點(diǎn)是重合的,即沒有旋轉(zhuǎn)和平移,所以為單位矩陣,為0向量,式(22)可以簡(jiǎn)化為:
由式(23)可得:
由式(23)可知,深度相機(jī)坐標(biāo)系與深度圖圖像坐標(biāo)系轉(zhuǎn)換關(guān)系如下:
以上變換過(guò)程等價(jià)于如下的表達(dá):
于是得到深度相機(jī)坐標(biāo)系與深度圖圖像坐標(biāo)系轉(zhuǎn)換關(guān)系:
M為紅外左相機(jī)內(nèi)參矩陣。
同理可得彩色相機(jī)坐標(biāo)系與彩色圖圖像坐標(biāo)系轉(zhuǎn)換關(guān)系:
M為彩色相機(jī)內(nèi)參矩陣。
深度相機(jī)坐標(biāo)系到彩色相機(jī)坐標(biāo)系變換如下:
將式(27)、式(28)代入式(29),兩側(cè)同時(shí)左乘M矩陣得到:
由于Z≈Z,因此式(30)可以簡(jiǎn)化為:
由此將式(31)展開,可得到深度圖像坐標(biāo)到彩色圖像坐標(biāo)轉(zhuǎn)換關(guān)系:
本實(shí)驗(yàn)使用Intel RealSense D435i相機(jī)作為獲取雙目散斑圖片和彩色圖片的工具。雙目紅外相機(jī)的分辨率為1280×800,彩色相機(jī)的圖像分辨率為1920×1080。采用340 mm×260 mm標(biāo)定板作為被測(cè)對(duì)象,拍攝10組圖片,計(jì)算標(biāo)定板三維重建的平面平整度。實(shí)驗(yàn)所用設(shè)備如圖4所示。
圖4 實(shí)驗(yàn)設(shè)備
關(guān)閉相機(jī)紅外散斑發(fā)射器,多次改變12×9棋盤格位姿,分別對(duì)雙目紅外相機(jī)和彩色相機(jī)進(jìn)行標(biāo)定。標(biāo)定圖片如圖5所示。
圖5 相機(jī)標(biāo)定
使用張正友標(biāo)定法計(jì)算出相機(jī)內(nèi)參,如表1所示,其中f、f為相機(jī)焦距,c、c為相機(jī)主點(diǎn),δ為重投影誤差,、為畸變系數(shù)。
表1 相機(jī)標(biāo)定參數(shù)
深度相機(jī)中左右相機(jī)的外參標(biāo)定結(jié)果為:
深度相機(jī)中左相機(jī)與彩色相機(jī)的外參標(biāo)定結(jié)果為:
對(duì)雙目圖片進(jìn)行立體校正預(yù)處理,得到校正后的圖片,如圖6所示。
圖6 立體校正圖
使用SAD算法與亞像素插值算法得到深度圖,如圖7(a)所示;將深度圖轉(zhuǎn)換為點(diǎn)云圖,如圖7(b)所示。
圖7 深度圖(a)和點(diǎn)云圖(b)
將圖7(a)的深度圖與圖8(a)的彩色圖進(jìn)行配準(zhǔn),生成如圖8(b)所示的點(diǎn)云圖。
圖8 深度圖與彩色圖(a)配準(zhǔn)得點(diǎn)云圖(b)
截取對(duì)齊后標(biāo)定板平整部分的深度圖,使用RANSAC算法擬合截取部分,計(jì)算出所有點(diǎn)與擬合平面的平均距離。截取的標(biāo)定板平面部分點(diǎn)云如圖9所示。由表2可知,深度圖與彩色圖配準(zhǔn)后的平面平整度基本符合要求。
圖9 截取后的點(diǎn)云圖
表2 配準(zhǔn)后的平面平整度
本文利用SAD與亞像素插值算法,根據(jù)雙目圖像特征計(jì)算出深度圖。結(jié)合深度圖與彩色圖坐標(biāo)系變換關(guān)系,得到與彩色圖配準(zhǔn)后的深度圖。實(shí)驗(yàn)表明,本文的算法可較好完成深度圖與彩色圖的配準(zhǔn),為三維紋理重建提供了基礎(chǔ)。