1.基于相機(jī)運(yùn)動(dòng)和圖像明暗的Kinect深度重建算法,其特征在于,包括以下步驟:
1)在Kinect深度攝像頭和RGB攝像頭標(biāo)定對(duì)齊的情況下,通過(guò)第三方接口將Kinect采集的數(shù)據(jù)上傳到電腦;
2)從RGB視頻序列中恢復(fù)三維場(chǎng)景結(jié)構(gòu)和kinect RGB相機(jī)的運(yùn)動(dòng)軌跡,得到點(diǎn)云和相機(jī)運(yùn)動(dòng)關(guān)系;
3)結(jié)合步驟2)中獲得的點(diǎn)云和相機(jī)運(yùn)動(dòng)關(guān)系,利用圖像的明暗情況信息對(duì)圖像深度進(jìn)行重建。
2.根據(jù)權(quán)利要求1所述的基于彩色攝像頭與深度攝像頭融合的深度重建算法,其特征在于,所述步驟2)包括以下步驟:
2.1)在系統(tǒng)初始化的時(shí)候讀入一張RGB圖片并作為關(guān)鍵幀,給關(guān)鍵幀綁定一個(gè)深度圖,深度圖和灰度圖有相同的維度,遍歷深度圖,給每個(gè)像素位置賦一個(gè)隨機(jī)值;
2.2)每讀取一張RGB圖片,都構(gòu)造如下的代價(jià)函數(shù):
其中||·||δ是哈勃算子,rp代表誤差,代表誤差的方差;
哈勃算子的定義如下:
δ是哈勃算子的參數(shù);
誤差函數(shù)的定義rp如下:
rp(p,ζji)=Ii(p)-Ij(w(p,Di(p),ζji))
Ii(p)表示當(dāng)前幀中像素p的位置的灰度值,ζji表示將i坐標(biāo)下的三維點(diǎn)旋轉(zhuǎn)平移到j(luò)坐標(biāo)下的剛體變換的李代數(shù),Di(p)表示參考幀的深度圖中像素p對(duì)應(yīng)的位置的深度值,w(p,Di(p),ζji)表示參考幀i中像素p位置對(duì)應(yīng)的三維點(diǎn)經(jīng)過(guò)旋轉(zhuǎn)平移剛體變換到當(dāng)前幀中j位置,變換公式如下:
其中X,Y,Z分別表示相機(jī)坐標(biāo)系下的三維點(diǎn)在XYZ三個(gè)方向上的坐標(biāo);u,v表示像素坐標(biāo);fx,fy分別表示X,Y方向上焦距;
方差的定義如下:
其中表示圖片灰度的方差,Vi(p)表示參考幀深度圖像素點(diǎn)p的方差;
2.3)用高斯牛頓迭代法求解步驟2.2)中代價(jià)函數(shù)最小時(shí)的ζ,得到參考幀和當(dāng)前幀之間的旋轉(zhuǎn)平移關(guān)系;
2.4)對(duì)參考幀灰度圖上所有點(diǎn)求梯度,選取其中梯度大于門限的點(diǎn);接著對(duì)這些點(diǎn)進(jìn)行篩選;遍歷所有符合要求的點(diǎn),根據(jù)極線集合搜索這些點(diǎn)在當(dāng)前幀極線上的對(duì)應(yīng)點(diǎn);并根據(jù)單目視覺(jué)三維重建幾何知識(shí)計(jì)算點(diǎn)的空間坐標(biāo);
2.5)用卡曼濾波器對(duì)新得到的深度值與參考幀深度圖中的深度值融合。
3.根據(jù)權(quán)利要求1所述的基于彩色攝像頭與深度攝像頭融合的深度重建算法,其特征在于,所述步驟3)包括以下步驟:
3.1)進(jìn)行當(dāng)前幀下的深度攝像頭采集到的深度圖像與單目彩色攝像頭采集到的彩色圖像的對(duì)齊;由于彩色攝像頭與深度攝像頭之間存在視場(chǎng)范圍的差異,所以只有二者視場(chǎng)重疊部分才具有有效的深度值,因此對(duì)齊后得到的是不完整的深度圖;
3.2)按照深度攝像頭中針孔相機(jī)的模型,將該不完整的深度圖進(jìn)行三維點(diǎn)云的生成;針孔相機(jī)模型簡(jiǎn)述為:一個(gè)空間點(diǎn)的空間坐標(biāo)[x,y,z]與它在圖像中的像素坐標(biāo)[u,v,d]之間的關(guān)系表述為:
z=d/s
x=(u-cx)·z/fx
y=(v-cy)·z/fy
其中,d是深度圖中每個(gè)像素的深度值,s是深度圖的縮放因子,cx與cy是主點(diǎn)的橫縱坐標(biāo),fx與fy是橫坐標(biāo)方向和縱坐標(biāo)方向的焦距分量;
利用上述公式對(duì)每個(gè)像素的像素坐標(biāo)轉(zhuǎn)換成對(duì)應(yīng)的空間坐標(biāo),即可完成深度圖到三維點(diǎn)云的轉(zhuǎn)換;
3.3)將單目算法中生成的點(diǎn)云與上述不完整的深度圖生成的點(diǎn)云二者使用點(diǎn)對(duì)點(diǎn)的迭代最近鄰點(diǎn)ICP算法進(jìn)行配準(zhǔn)得到二者之間的旋轉(zhuǎn)矩陣R和平移矩陣T;
3.4)根據(jù)上述得到的旋轉(zhuǎn)矩陣和平移矩陣,將單目算法獲得的點(diǎn)云轉(zhuǎn)換到不完整的深度圖生成的點(diǎn)云的坐標(biāo)體系下,并將二者拼接成一個(gè)大的點(diǎn)云;
3.5)對(duì)于深度圖中由于視場(chǎng)范圍不重疊而形成的深度值無(wú)效區(qū)域,對(duì)每個(gè)處于無(wú)效區(qū)域中的像素,計(jì)算其空間位置;若該像素對(duì)應(yīng)的空間點(diǎn)位置正好與大的點(diǎn)云中某點(diǎn)空間位置重合,則直接將該點(diǎn)的z坐標(biāo)也就是深度值賦予該像素作為其深度值;若該像素對(duì)應(yīng)的空間點(diǎn)并未與點(diǎn)云中的點(diǎn)重合,則計(jì)算該空間點(diǎn)與它在大的點(diǎn)云中的相鄰點(diǎn)云點(diǎn)的距離之和的平均值,若該值大于某個(gè)閾值,則將該值作為該像素值的深度值;
3.6)檢測(cè)深度圖中是否還有未有有效值的像素點(diǎn);若仍有未有有效值的像素點(diǎn),則使用聯(lián)合雙邊濾波器對(duì)深度圖進(jìn)行深度值填補(bǔ),確保深度圖中每個(gè)像素點(diǎn)都具有深度值;
3.7)使用關(guān)于每個(gè)像素點(diǎn)的法線向量為變量的擴(kuò)展內(nèi)在圖像分解模型函數(shù)作為每個(gè)像素點(diǎn)的光照模型函數(shù);使用到的擴(kuò)展內(nèi)在圖像分解模型函數(shù)為:
3.8)為圖像中的每個(gè)像素計(jì)算明暗信息;明暗信息函數(shù)使用零階和一階球諧系數(shù)與點(diǎn)云表面法線向量的線性多項(xiàng)式的矩陣形式表示,也就是:
首先計(jì)算出每個(gè)點(diǎn)的法線向量,然后通過(guò)最小化明暗函數(shù)與真實(shí)光照強(qiáng)度間的差值的目標(biāo)函數(shù),從而求解出明暗函數(shù)的參數(shù)向量,從而為每個(gè)像素點(diǎn)確定了明暗函數(shù)值;
3.9)為圖像中的每個(gè)像素計(jì)算反照率;由于明暗信息函數(shù)僅僅考慮到遠(yuǎn)距離光源和環(huán)境光源,因此它是對(duì)光照的初步預(yù)測(cè),因而為了考慮到鏡面反射、陰影以及近光源造成的效果,需要為每個(gè)像素引入不同的反照率;
構(gòu)造最小化目標(biāo)函數(shù)為:
其中,ρ是每個(gè)像素的反照率,I是每個(gè)像素的光照強(qiáng)度,N是全圖迭代操作中當(dāng)正在操作的像素的一個(gè)鄰域,ρk是該鄰域內(nèi)的像素點(diǎn),λρ是參數(shù),而且,
3.10)類似步驟3.9)中的方法,為圖像中的每個(gè)像素計(jì)算由于局部光照差異所導(dǎo)致的光照差異值;
構(gòu)造最小化目標(biāo)函數(shù)為:
其中,β是每個(gè)像素點(diǎn)的光照差異值,βk是全圖迭代操作中當(dāng)正在操作的像素的一個(gè)鄰域內(nèi)的像素點(diǎn);是參數(shù);
3.11)構(gòu)造明暗模型與實(shí)際測(cè)量到的光照強(qiáng)度之間的目標(biāo)函數(shù),并使用改進(jìn)的深度增強(qiáng)加速算法對(duì)該目標(biāo)函數(shù)進(jìn)行最小化,從而得到優(yōu)化后的深度圖;
首先將每個(gè)像素對(duì)應(yīng)的點(diǎn)云上的點(diǎn)的法線表示成深度圖的梯度形式,即:
其中,
是深度圖的梯度;
然后建立深度優(yōu)化的目標(biāo)函數(shù)為:
其中,
Δz是深度圖的拉普拉斯變換;是參數(shù);
然后使用加速深度增強(qiáng)算法對(duì)深度進(jìn)行迭代優(yōu)化,如下:
①輸入初始的深度圖,以及球諧系數(shù)以及向量化的反照率向量ρ和光照差異值向量β;
②當(dāng)深度優(yōu)化目標(biāo)函數(shù)值一直處于減小狀態(tài)時(shí),循環(huán)執(zhí)行步驟③到⑤;
③更新其中
④更新
⑤更新zk,使得f(zk)更??;
此步驟結(jié)束后,再返回單目算法中運(yùn)行相應(yīng)的算法步驟,程序?qū)⒁恢眻?zhí)行直至得到結(jié)束程序的鍵盤輸入或強(qiáng)制關(guān)閉程序的操作。