本發(fā)明屬于計(jì)算機(jī)視覺(jué)與計(jì)算機(jī)圖形圖像處理領(lǐng)域,具體地說(shuō)是一種基于深度圖像數(shù)據(jù)流的虛實(shí)遮擋處理方法,該方法可在輸入數(shù)據(jù)分辨率較低、深度數(shù)據(jù)存在空洞和噪聲的情況下,實(shí)時(shí)地估計(jì)相機(jī)姿態(tài)和重建三維場(chǎng)景的點(diǎn)云模型,并根據(jù)相機(jī)姿態(tài)實(shí)時(shí)處理虛擬物體與三維場(chǎng)景之間的遮擋關(guān)系,并將遮擋處理后的結(jié)果與彩色圖像融合,實(shí)現(xiàn)一種虛實(shí)融合的效果,對(duì)于三維重建系統(tǒng)和實(shí)時(shí)增強(qiáng)現(xiàn)實(shí)(ar)技術(shù)的研究有著重要意義。
背景技術(shù):
增強(qiáng)現(xiàn)實(shí)是將虛擬物體疊加到真實(shí)環(huán)境中從而實(shí)現(xiàn)虛實(shí)融合效果的一項(xiàng)技術(shù),近年來(lái)己經(jīng)成為計(jì)算機(jī)視覺(jué)、計(jì)算機(jī)圖形學(xué)等領(lǐng)域的一個(gè)研究熱點(diǎn)。虛實(shí)遮擋處理問(wèn)題的研究對(duì)于增強(qiáng)現(xiàn)實(shí)系統(tǒng)的完善和實(shí)用化起到至關(guān)重要的作用,是增強(qiáng)現(xiàn)實(shí)應(yīng)用中迫切需要解決的關(guān)鍵問(wèn)題。當(dāng)融合圖像中存在錯(cuò)誤的虛實(shí)遮擋關(guān)系時(shí),觀察者就很難正確地判斷虛實(shí)物體之間的相對(duì)位置關(guān)系,難以得到逼真的虛實(shí)融合效果。隨著深度傳感器的普及和三維重建技術(shù)的發(fā)展,近年來(lái)基于深度數(shù)據(jù)的slam系統(tǒng)和三維模型重建的研究正在興起。與傳統(tǒng)基于圖像識(shí)別追蹤的ar系統(tǒng)相比,深度數(shù)據(jù)提供了場(chǎng)景的三維信息,極大地提高了相機(jī)位姿的估計(jì)的準(zhǔn)確度,并為處理虛實(shí)遮擋問(wèn)題提供了足夠的數(shù)據(jù)信息。在三維重建和虛實(shí)融合系統(tǒng)等相關(guān)應(yīng)用場(chǎng)景中起到了至關(guān)重要的作用。
目前在增強(qiáng)現(xiàn)實(shí)技術(shù)方法可以分為以下三大類(lèi):一是基于圖像識(shí)別追蹤,可使用光學(xué)攝像機(jī)對(duì)平面識(shí)別標(biāo)識(shí)圖像的特征點(diǎn)提取,結(jié)合攝像頭標(biāo)定參數(shù)及標(biāo)識(shí)特征點(diǎn)位置計(jì)算疊加模型的3d空間變換矩陣,然后進(jìn)行虛擬模型在視頻層上的疊加,但此技術(shù)對(duì)識(shí)別追蹤的速度、準(zhǔn)確性、環(huán)境光的適應(yīng)能力以及對(duì)多識(shí)別標(biāo)識(shí)同時(shí)追蹤的容錯(cuò)能力有極高的要求;二是基于傳感器實(shí)現(xiàn)相機(jī)運(yùn)動(dòng)的追蹤和定位,這類(lèi)方法通過(guò)實(shí)時(shí)的攝像機(jī)或者物體的姿態(tài)與位置的捕捉來(lái)準(zhǔn)確計(jì)算出需要疊加的數(shù)字虛擬物體的相對(duì)空間位置。物體姿態(tài)的捕捉一般通過(guò)帶陀螺儀的姿態(tài)傳感器、電子羅盤(pán)、重力加速計(jì)等傳感器來(lái)實(shí)現(xiàn),但對(duì)硬件設(shè)備的需求較高;三是結(jié)合圖像識(shí)別追蹤與傳感器運(yùn)動(dòng)追蹤。在硬件條件允許的情況下,結(jié)合圖像識(shí)別與傳感器運(yùn)動(dòng)捕捉技術(shù),可以充分發(fā)揮兩種技術(shù)各自的優(yōu)勢(shì),提高增強(qiáng)現(xiàn)實(shí)應(yīng)用的穩(wěn)定性與環(huán)境適應(yīng)性。
上述方法有的耗時(shí)較大,比如特征點(diǎn)的提取,能量方程的優(yōu)化等步驟,缺少真實(shí)場(chǎng)景的三維信息,難以處理虛擬物體和真實(shí)場(chǎng)景之間的遮擋關(guān)系,虛實(shí)融合缺乏真實(shí)感。
技術(shù)實(shí)現(xiàn)要素:
為克服上述缺點(diǎn),本發(fā)明的目的在于根據(jù)深度圖像數(shù)據(jù)流的特點(diǎn),結(jié)合真實(shí)場(chǎng)景實(shí)時(shí)三維重建的需求,提供一種基于深度圖像數(shù)據(jù)流的虛實(shí)遮擋處理方法,根據(jù)相機(jī)姿態(tài)實(shí)時(shí)處理虛擬物體與三維場(chǎng)景之間的遮擋關(guān)系,并將遮擋處理后的結(jié)果與彩色圖像融合,實(shí)現(xiàn)一種較為真實(shí)、具有遮擋關(guān)系的虛實(shí)融合效果。
為了達(dá)到上述目的,本發(fā)明提出了一種基于深度圖像數(shù)據(jù)流的虛實(shí)遮擋處理方法,包括以下步驟:
步驟(1)、對(duì)原始深度圖像數(shù)據(jù)作預(yù)處理操作,其中包括平滑處理、對(duì)深度圖像的空洞區(qū)域的修補(bǔ)和增強(qiáng);若尚未進(jìn)行虛擬物體的三位空間注冊(cè),則對(duì)原始深度相機(jī)數(shù)據(jù)流中的彩色圖像進(jìn)行orb特征檢測(cè),用于匹配模板圖像的特征點(diǎn);
步驟(2)、根據(jù)相機(jī)內(nèi)部參數(shù),將預(yù)處理后的深度數(shù)據(jù)中的每一個(gè)像素點(diǎn)的坐標(biāo)和深度轉(zhuǎn)化為相機(jī)坐標(biāo)系下的三維坐標(biāo);然后利用相鄰像素的三維坐標(biāo)值計(jì)算每一個(gè)像素對(duì)應(yīng)的三維點(diǎn)云的法向量;由所述三維坐標(biāo)和法向量構(gòu)成三維點(diǎn)云映射圖;
步驟(3)、根據(jù)上一幀的相機(jī)位姿,采用光線投影算法,計(jì)算三維模型的投影點(diǎn)云映射圖map1,采用最鄰近點(diǎn)迭代算法(icp),利用map1與步驟(2)計(jì)算得到的三維點(diǎn)云映射圖map2計(jì)算出相機(jī)的當(dāng)前位姿;然后根據(jù)當(dāng)前相機(jī)位姿,將當(dāng)前幀的點(diǎn)云融合到三維模型中;根據(jù)當(dāng)前幀相機(jī)位姿從模型投影得到當(dāng)前相機(jī)視角下的點(diǎn)云,并且計(jì)算其法向量,用于對(duì)下一幀點(diǎn)云圖像配準(zhǔn);
步驟(4)、若尚未完成三維空間注冊(cè),則將步驟(1)所得的彩色圖像orb特征點(diǎn)與模板圖像orb特征點(diǎn)進(jìn)行knn匹配,通過(guò)計(jì)算單映射矩陣得到模板圖像在原始彩色圖像所對(duì)應(yīng)的區(qū)域,通過(guò)彩色圖像與步驟(2)三維點(diǎn)云映射圖的對(duì)應(yīng)關(guān)系,計(jì)算模板圖像在相機(jī)坐標(biāo)系的三維空間坐標(biāo),再根據(jù)步驟(3)相機(jī)位姿,將該坐標(biāo)變換到三維場(chǎng)景坐標(biāo)系,完成三維空間注冊(cè);
步驟(5)、根據(jù)步驟(3)得到的相機(jī)姿態(tài)和步驟(4)得到虛擬物體空間注冊(cè)位置,實(shí)時(shí)處理虛擬物體和三維場(chǎng)景的空間位置關(guān)系和遮擋關(guān)系,對(duì)處理后的虛擬物體采用渲染到紋理(rtt)技術(shù),并將渲染的圖像結(jié)果與彩色圖像融合,實(shí)現(xiàn)一種較為真實(shí)的、具有良好遮擋關(guān)系的虛實(shí)融合效果。
所述步驟(4)中,快速計(jì)算orb圖像特征,然后進(jìn)行flann特征匹配,對(duì)匹配的結(jié)果采用knn篩選匹配點(diǎn),其中knn的最鄰近匹配參數(shù)k為4。再通過(guò)單應(yīng)性變換矩陣進(jìn)行目標(biāo)定位。
所述步驟(5)中,先將opengl環(huán)境的顏色緩沖區(qū)設(shè)為黑色,作為融合時(shí)的掩碼,同時(shí)設(shè)置場(chǎng)景模型的材質(zhì)混合光顏色為透明,并開(kāi)啟深度測(cè)試,采用rtt技術(shù)與彩色圖像融合。
通過(guò)深度圖像進(jìn)行相機(jī)姿態(tài)的估計(jì)和場(chǎng)景的模型重建相結(jié)合的方式,解決了虛實(shí)遮擋問(wèn)題。
本發(fā)明的原理在于:充分結(jié)合深度相機(jī)的深度圖像數(shù)據(jù)和彩色圖像數(shù)據(jù),通過(guò)建模的方法解決增強(qiáng)現(xiàn)實(shí)系統(tǒng)中的虛實(shí)遮擋問(wèn)題。首先對(duì)深度圖像進(jìn)行快速雙邊濾波,對(duì)帶有噪聲的深度數(shù)據(jù)進(jìn)行濾波去噪。對(duì)預(yù)處理后的深度圖像,根據(jù)相機(jī)內(nèi)部參數(shù)計(jì)算每一個(gè)像素對(duì)應(yīng)的相機(jī)坐標(biāo)系下的三維坐標(biāo),構(gòu)成初步的三維點(diǎn)云映射圖?;谙噜徬袼氐狞c(diǎn)云在三維坐標(biāo)系下也相鄰的假設(shè),計(jì)算每一個(gè)像素對(duì)應(yīng)的點(diǎn)云法向量,構(gòu)造三維點(diǎn)云映射圖。再利用相機(jī)內(nèi)部參數(shù),將場(chǎng)景的三維點(diǎn)云模型投影到像素坐標(biāo)系下,獲得上一幀三維點(diǎn)云映射圖中對(duì)應(yīng)像素坐標(biāo)的數(shù)據(jù),根據(jù)點(diǎn)到平面的距離誤差函數(shù),采用最鄰近迭代算法,得到兩幀數(shù)據(jù)的相機(jī)變換矩陣,再將當(dāng)前點(diǎn)云融合到真實(shí)場(chǎng)景的三維模型中。利用彩色圖像數(shù)據(jù)與模板圖像的匹配,解決三維空間的注冊(cè)問(wèn)題,實(shí)時(shí)地計(jì)算相機(jī)姿態(tài)和更新融合場(chǎng)景的三維點(diǎn)云模型。
本發(fā)明中深入分析了增強(qiáng)現(xiàn)實(shí)系統(tǒng)(ar)在處理遮擋和真實(shí)感問(wèn)題時(shí),對(duì)相機(jī)位姿估計(jì)、場(chǎng)景三維重建和處理遮擋問(wèn)題的需求,與一般現(xiàn)有的強(qiáng)現(xiàn)實(shí)系統(tǒng)的技術(shù)方法相比的優(yōu)點(diǎn)在于:
(1)利用深度相機(jī)提供的深度圖像數(shù)據(jù)進(jìn)行相機(jī)姿態(tài)估計(jì)和實(shí)時(shí)三維重建,并結(jié)合彩色圖像進(jìn)行三維空間注冊(cè),提高了相機(jī)位姿估計(jì)的精確度和魯棒性。既實(shí)時(shí)獲得相機(jī)姿態(tài),也可獲得真實(shí)場(chǎng)景的三維信息,利用相機(jī)姿態(tài)、場(chǎng)景三維模型和虛擬物體三者的空間位置關(guān)系,可有效解決vr系統(tǒng)中的虛實(shí)遮擋問(wèn)題。
(2)考慮增強(qiáng)現(xiàn)實(shí)(ar)系統(tǒng)的應(yīng)用場(chǎng)合,本方法能夠在現(xiàn)有的主流平臺(tái)下能夠?qū)崟r(shí)地進(jìn)行相機(jī)姿態(tài)估計(jì)、模型重建和渲染任務(wù)。本發(fā)明所有步驟均可在gpu下加速執(zhí)行,能夠空出cpu資源用于其他功能模塊。經(jīng)過(guò)實(shí)驗(yàn),在主流平臺(tái)運(yùn)行的幀率能夠達(dá)到20fps,基本達(dá)到實(shí)時(shí)要求。
附圖說(shuō)明
圖1為本發(fā)明中基于深度圖像數(shù)據(jù)流的虛實(shí)遮擋處理方法的主要流程圖;
圖2為本發(fā)明中根據(jù)深度圖像進(jìn)行三維場(chǎng)景重建的結(jié)果圖;
圖3為本發(fā)明中處理虛實(shí)遮擋后的虛實(shí)融合效果圖;
圖4為本發(fā)明中虛實(shí)融合后的效果圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)的描述。
如圖1所示,本發(fā)明的實(shí)施過(guò)程主要分成四個(gè)步驟:深度數(shù)據(jù)預(yù)處理、構(gòu)建場(chǎng)景三維點(diǎn)云模型、三維空間注冊(cè)、虛實(shí)融合渲染。
步驟一、深度數(shù)據(jù)預(yù)處理
其主要步驟為:
(11)對(duì)于給定的輸入rgbd(彩色+深度)數(shù)據(jù)流中的深度數(shù)據(jù),根據(jù)深度相機(jī)的誤差范圍設(shè)定閾值wmin,wmax,深度值在wmin與wmax之間的點(diǎn)視為可信值,只保留閾值范圍內(nèi)的深度數(shù)據(jù)i。
(12)對(duì)深度數(shù)據(jù)的每一個(gè)像素做快速雙邊濾波,具體如下:
其中pj為像素pi的鄰域內(nèi)的像素,s為鄰域內(nèi)有效像素的個(gè)數(shù),σ1與σ2為預(yù)設(shè)參數(shù),dpi為像素pi濾波后的深度值。
(13)對(duì)給定的輸入rgbd數(shù)據(jù)流中的rgb數(shù)據(jù)作維納濾波去模糊。
步驟二、構(gòu)建場(chǎng)景三維點(diǎn)云模型
其主要步驟為:
(21)根據(jù)相機(jī)內(nèi)部參數(shù),對(duì)濾波后的深度數(shù)據(jù)圖中的每一個(gè)像素,計(jì)算其在相機(jī)坐標(biāo)系下的三維坐標(biāo):
p(x,y,z)=k-1*(u,v,d)t(2)
其中,p為映射后的三維點(diǎn)坐標(biāo),u,v為濾波后的深度數(shù)據(jù)圖中的像素坐標(biāo),d為對(duì)應(yīng)的深度值,k-1為深度相機(jī)的內(nèi)參矩陣的逆矩陣。
(22)根據(jù)相鄰像素的三維坐標(biāo),依次計(jì)算深度圖像中的每一個(gè)像素在相機(jī)坐標(biāo)系下的法向量:
n(u,v)=normalize(cross(p(u+1,v)-p(u-1,v),p(u,v+1)-p(u,v-1)))(3)
其中,normalize為向量的歸一化,p(u,v)為像素坐標(biāo)u,v處在相機(jī)坐標(biāo)系中的三維坐標(biāo),cross為向量的叉乘運(yùn)算。
最終的三維點(diǎn)云映射圖map1是一組二維數(shù)據(jù),每一個(gè)像素存儲(chǔ)對(duì)應(yīng)三維點(diǎn)云在相機(jī)坐標(biāo)系下的三維點(diǎn)坐標(biāo)p以及對(duì)應(yīng)的法向量n。
(23)根據(jù)三維模型的投影點(diǎn)云映射圖map1和三維點(diǎn)云映射圖map2,按照如下所述的方式計(jì)算三維坐標(biāo)和法向量的差值篩選對(duì)應(yīng)點(diǎn):
其中,ci為對(duì)應(yīng)像素的rgb值,cross為向量的叉乘運(yùn)算。d_p表示對(duì)應(yīng)點(diǎn)三維坐標(biāo)的距離,d_n表示對(duì)應(yīng)點(diǎn)法向量的夾角正弦值,dist_c表示對(duì)應(yīng)點(diǎn)顏色的差值。d_p、d_n、d_c均在一定閾值范圍內(nèi)的點(diǎn)對(duì)視為第i幀與第i-1幀的對(duì)應(yīng)點(diǎn)對(duì)。
(24)對(duì)每一組對(duì)應(yīng)點(diǎn)對(duì),計(jì)算點(diǎn)到平面的距離平方和目標(biāo)函數(shù),極小化該目標(biāo)函數(shù):
以上目標(biāo)函數(shù)對(duì)于未知6維位姿參數(shù)x=(rx,ry,rz,tx,ty,tz)求導(dǎo)并且令導(dǎo)數(shù)為0,得:
其中,r,t是待求解的位姿變換。pi,qi分別是點(diǎn)集原始點(diǎn)和目標(biāo)點(diǎn)。
(25)利用一下公式對(duì)當(dāng)前幀的點(diǎn)云映射圖融合到場(chǎng)景的三維模型中。并根據(jù)最新的相機(jī)姿態(tài),采用光線投影算法投影出當(dāng)前視角下的點(diǎn)云,用于下一幀的匹配。
global_p(x1,y1,z1)=m-1*cam_p(x,y,z)(7)
其中,global_p為當(dāng)前幀點(diǎn)云在三維場(chǎng)景坐標(biāo)系的坐標(biāo),cam_p是在相機(jī)坐標(biāo)系下的坐標(biāo),m為當(dāng)前相機(jī)姿態(tài)。
步驟三、三維空間注冊(cè)
獲取相機(jī)當(dāng)前幀的彩色圖像curimg,分別計(jì)算彩色圖像orb特征關(guān)鍵點(diǎn)keypoint1和模板圖像tempimg的orb特征關(guān)鍵點(diǎn)keypoint2,模板圖像的關(guān)鍵點(diǎn)只需要計(jì)算一次。
(31)根據(jù)keypoint1和keypoint2,采用flann最鄰近算法計(jì)算出兩者之間的匹配關(guān)系,然后通過(guò)knn最鄰近算法進(jìn)行進(jìn)一步優(yōu)化,去除偽匹配,得到兩幅圖像最終的匹配關(guān)系。然后計(jì)算出單應(yīng)性變換矩陣h,依次對(duì)tempimg的四個(gè)頂點(diǎn)的像素位置進(jìn)行下列操作得到tempimg在curimg的位置區(qū)域:
bi=h*ait,ai=(x,y,1),bi=(x1,y1,1)(8)
其中,ai為tempimg的四個(gè)頂點(diǎn)的像素位置,bi為對(duì)應(yīng)i坐標(biāo)在curimg的像素位置。
(32)根據(jù)上一步獲取的四個(gè)像素坐標(biāo)點(diǎn),以及當(dāng)前幀的三維點(diǎn)云映射圖的像素和前幀的彩色圖像curimg的對(duì)應(yīng)關(guān)系,依次計(jì)算在三維點(diǎn)云映射圖中對(duì)應(yīng)的四個(gè)像素坐標(biāo)在世界坐標(biāo)系下的三維坐標(biāo)和法向量。具體對(duì)每一個(gè)像素作如下操作:
其中,vi表示第i個(gè)像素坐標(biāo),k表示相機(jī)內(nèi)參,t表示第i幀數(shù)據(jù)估計(jì)的相機(jī)位姿,p_gi和n_gi分別為第i幀個(gè)相機(jī)坐標(biāo)系下的三維點(diǎn)云映射圖對(duì)應(yīng)像素的三維坐標(biāo)和法向量。
(33)由以上步驟獲取到模板圖像在世界坐標(biāo)系下的場(chǎng)景三維模型的具體位置,將虛擬物體放置到有該四個(gè)點(diǎn)決定的平面區(qū)域,并計(jì)算平面法向量,用于旋轉(zhuǎn)虛擬物體至合適的角度。
步驟四、虛實(shí)融合渲染
其主要步驟為:
(41)每處理一幀圖像,渲染引擎獲取最新的相機(jī)姿態(tài),并實(shí)時(shí)更新渲染引擎攝像機(jī)的參數(shù),設(shè)置如下:
其中campos為攝像機(jī)在世界坐標(biāo)系的三維坐標(biāo),camdir為攝像機(jī)的向前的朝向,camhead為攝像機(jī)正上方朝向。
(42)為了實(shí)現(xiàn)場(chǎng)景模型對(duì)虛擬物體的遮擋效果,先將opengl環(huán)境的顏色緩沖區(qū)設(shè)為黑色,同時(shí)設(shè)置場(chǎng)景模型的材質(zhì)混合光顏色為透明,并開(kāi)啟深度測(cè)試,采用rtt技術(shù)與彩色圖像融合。
本發(fā)明與其他現(xiàn)有增強(qiáng)現(xiàn)實(shí)技術(shù)相比,能夠適應(yīng)輸入深度數(shù)據(jù)分辨率較低的場(chǎng)景,能夠適應(yīng)較大空間的應(yīng)用場(chǎng)合,相機(jī)姿態(tài)估計(jì)較為準(zhǔn)確,能夠較好的處理虛擬物體和現(xiàn)實(shí)場(chǎng)景之間的遮擋關(guān)系,實(shí)現(xiàn)了一種較為真實(shí)、具有遮擋關(guān)系的虛實(shí)融合效果。