劉 然,謝 輝,邰國(guó)欽,譚迎春
(1.重慶大學(xué) 通信工程學(xué)院,重慶 400044;2.重慶大學(xué) 計(jì)算機(jī)學(xué)院,重慶 400044;3.軟件理論與技術(shù)重慶市重點(diǎn)實(shí)驗(yàn)室,重慶 400044;4.四川虹微技術(shù)有限公司,四川 成都 610041)
由于深度圖像繪制(depth-image-based rendering,DIBR)技術(shù)是三維電視系統(tǒng)中的關(guān)鍵技術(shù),因此引起了很多研究者的關(guān)注[1-2].DIBR技術(shù)的核心步驟是三維圖像變換(3Dimage warping)[3].三維圖像變換能夠?qū)⒖紙D像(reference image)中的點(diǎn)投影到三維空間,再將三維空間中的點(diǎn)重投影到目標(biāo)圖像(destination image)平面上,從而生成新視點(diǎn)視圖[3-4].理論上,采用三維圖像變換技術(shù)可以生成任意視點(diǎn)的視圖,但是用硬件實(shí)現(xiàn)該技術(shù)較復(fù)雜.到目前為止,實(shí)際應(yīng)用中僅考慮虛擬視點(diǎn)在水平方向移動(dòng)的特殊情形(基線與參考圖像及目標(biāo)圖像平面平行且無旋轉(zhuǎn))[1],這一特殊情形正是目前三維電視(包括自由立體顯示器)中廣泛使用的情形[1,5].
在三維圖像變換時(shí),有可能將參考圖像中的多個(gè)像素點(diǎn)映射到目標(biāo)圖像的同一個(gè)點(diǎn)上,這就是由可見性變化所引起的“褶皺(folds)”現(xiàn)象[5-6],消除褶皺才能使目標(biāo)圖像呈現(xiàn)出正確的遮擋關(guān)系.處理褶皺的傳統(tǒng)方法是Z-buffer算法,該算法需要存儲(chǔ)并比較每一個(gè)像素點(diǎn)的深度值,不但占用額外的內(nèi)存空間,而且繪制速度慢.McMillan等提出了一種遮擋兼容算法(occlusion-compatible algorithm)[6-7],該算法將目標(biāo)圖像對(duì)應(yīng)的攝像機(jī)光心投影到參考圖像上得到極點(diǎn),通過極點(diǎn)來確定掃描順序,從而得到正確的視圖.由于該算法只依賴于參考攝像機(jī)的內(nèi)部參數(shù)矩陣、外部參數(shù)和目標(biāo)圖像對(duì)應(yīng)的虛擬攝像機(jī)的光心坐標(biāo),從而處理簡(jiǎn)單.但McMillan沒有針對(duì)DIBR技術(shù)討論基線與參考(目標(biāo))圖像平面平行時(shí)的掃描順序,并且該算法需要攝像機(jī)標(biāo)定參數(shù),而在目前的三維電視中,基于深度圖像的三維視頻只包含了參考圖像及其對(duì)應(yīng)的深度圖像,攝像機(jī)標(biāo)定參數(shù)都是未知的[8],這就限制了遮擋兼容算法的應(yīng)用.
本文針對(duì)DIBR在三維電視中的應(yīng)用,研究了虛擬視點(diǎn)在水平方向移動(dòng)時(shí)具有的特殊性質(zhì),給出了一種通過視圖判定確定參考圖像像素點(diǎn)掃描順序的方法來消除褶皺.該方法的特點(diǎn)是通過虛擬一個(gè)接近無窮遠(yuǎn)的極點(diǎn)來確定極點(diǎn)的極性,最終只需判斷目標(biāo)圖像是左視圖還是右視圖(稱為視圖判定),便可確定參考圖像像素點(diǎn)的掃描順序.
如前所述,DIBR存在的一個(gè)重要問題就是由可見性變化所引起的褶皺現(xiàn)象,即參考圖像中的多個(gè)像素點(diǎn)映射到目標(biāo)圖像中同一個(gè)點(diǎn)的現(xiàn)象.圖1說明了褶皺現(xiàn)象產(chǎn)生的原因.
圖1 由可見性變化引起的褶皺現(xiàn)象示意圖Fig.1 Illustration of“folds”introduced by changes in visibility
圖1中,由攝像機(jī)光心c1,c2和點(diǎn)p1確定的平面稱為極平面,c1,c2連線稱為基線(baseline),記為向量c,向量c與圖像平面的交點(diǎn)為e1,e2.如果e1,e2在向量c的正方向上,則為正極點(diǎn),如果e1,e2在向量c的負(fù)方向上則為負(fù)極點(diǎn).極平面與攝像機(jī)平面的交線l1,l2稱為極線.通過DIBR技術(shù),極線l1被映射到目標(biāo)圖像平面上,形成極線l2.如圖1所示,當(dāng)p2在直線p1c2上時(shí),則其在目標(biāo)圖像平面上的投影與p1的投影重合,從而產(chǎn)生了褶皺現(xiàn)象.
消除褶皺現(xiàn)象的一種方法是確定參考圖像中像素點(diǎn)的掃描順序,確保被其他點(diǎn)遮擋的點(diǎn)在目標(biāo)圖像中總是先被繪制,通常這種方法叫做從后向前褶皺消除法,遮擋兼容算法便是一種從后向前的方法[5,7].本文的方法本質(zhì)上也是從后向前的方法,下面介紹該方法的原理.
如圖1所示,a,b表示投影點(diǎn)p1,p2離虛擬光心c2的距離,且a>b.從圖中可以看出:在參考圖像上沿著極線l1指向正極點(diǎn)e1的方向來掃描參考圖像中的像素點(diǎn)時(shí),離虛擬攝像機(jī)光心c2遠(yuǎn)的點(diǎn)先繪制,近的點(diǎn)后繪制.因此離虛擬攝像機(jī)光心c2近的點(diǎn)p2的信息將覆蓋遠(yuǎn)處點(diǎn)p1的信息,從而建立正確的可見性關(guān)系.若e1為負(fù)極點(diǎn),則在參考圖像上沿著極線背離負(fù)極點(diǎn)的方向來掃描像素點(diǎn).
由于所有可能產(chǎn)生褶皺現(xiàn)象的點(diǎn)都可以約束在極平面上,所有的極平面相交于基線,所有的極線相交于極點(diǎn),因而只要確定極點(diǎn)就可以得到正確的參考圖像像素點(diǎn)掃描順序.極點(diǎn)的具體確定方法描述如下:
設(shè)極點(diǎn)e1在圖像像素坐標(biāo)系中的齊次坐標(biāo)為[exeyez1]T,在c1對(duì)應(yīng)的攝像機(jī)坐標(biāo)系下的規(guī)范化齊次坐標(biāo)為[exceycezc1]T;設(shè)向量c的齊次坐標(biāo)(c2-c1)為 [cxcycz1]T(世界坐標(biāo)系),由針孔攝像機(jī)模型可得
式中:K為攝像機(jī)的內(nèi)部參數(shù)矩陣(4×4),ax和ay分別為水平方向和垂直方向的比例因子,[oxoy10]T為光軸與圖像平面的交點(diǎn)坐標(biāo),矩陣R(4×4)代表從世界坐標(biāo)系變換到攝像機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣.將K代入式(1)可推出
從式(2)可以看出,當(dāng)cz=0時(shí),基線與參考圖像平面無交點(diǎn).當(dāng)cz≠0時(shí),基線與參考圖像平面不平行,必與之有交點(diǎn).
設(shè)參考圖像平面的單位法向量的規(guī)范化齊次坐標(biāo)為d=[dxdydz1]T.由式(2)得[exceycez1]T為向量c通過旋轉(zhuǎn)矩陣R變換后生成的新向量d1的坐標(biāo)(d,d1的坐標(biāo)為c1對(duì)應(yīng)的攝像機(jī)坐標(biāo)系下的坐標(biāo)),而d可以看成由世界坐標(biāo)系z(mì)軸的單位向量規(guī)范化齊次坐標(biāo)d0=[0011]T經(jīng)過旋轉(zhuǎn)矩陣R變換后生成的新向量,因此向量d1和向量d的夾角與向量c和向量d0的夾角相同.若d1和d的夾角小于90°,則向量c與參考圖像平面的交點(diǎn)在向量c的正方向,為正極點(diǎn),此時(shí)ez>0;若夾角大于90°則向量c與參考圖像平面的交點(diǎn)在向量c的負(fù)方向,為負(fù)極點(diǎn),此時(shí)ez<0.將極點(diǎn)e1的齊次坐標(biāo)歸一化可得[ex/ezey/ez1]T,歸一化后的前兩個(gè)分量便是極點(diǎn)在參考圖像平面中的坐標(biāo)值.
目前三維電視中的DIBR系統(tǒng)僅考慮虛擬視點(diǎn)在水平方向移動(dòng)的特殊情形,這種情形下兩攝像機(jī)的坐標(biāo)系是互相平行的,如圖2所示.本節(jié)重點(diǎn)研究這種特殊情形下的消除褶皺.
圖2 兩攝像機(jī)的基線與參考圖像平行的特殊情形示意圖Fig.2 Illustration of the special case when the baseline of the two cameras is parallel to the reference image
不失一般性,設(shè)圖2中c1對(duì)應(yīng)的攝像機(jī)坐標(biāo)系與世界坐標(biāo)系重合,且基線與參考(目標(biāo))圖像平行,c2為虛擬視點(diǎn)對(duì)應(yīng)的光心坐標(biāo).根據(jù)針孔攝像機(jī)模型有(c2-c1)=[cxcycz1]T,cz=0,且R=E(單位矩陣),由式(2)得ez=0.此時(shí)極點(diǎn)e1與參考圖像平面相交于無窮遠(yuǎn)處,無法確定極點(diǎn)的極性.
為了確定參考圖像像素點(diǎn)的掃描順序,可作如下假設(shè):設(shè)cz=Δσ,Δσ→0,代入式(1)可得
如果Δσ→0+,則極點(diǎn)為正極點(diǎn),且落在無窮遠(yuǎn)處.可以證明,Δσ→0-時(shí)參考圖像的掃描順序與Δσ→0+時(shí)的順序相同.
定理 設(shè)極點(diǎn)e1在圖像像素坐標(biāo)系中的坐標(biāo)為[exeyΔσ]T,則Δσ→0-時(shí)參考圖像的掃描順序與Δσ→0+時(shí)的順序相同.
證明 將極點(diǎn)e1的齊次坐標(biāo)歸一化為[ex/Δσ ey/Δσ 1]T.根據(jù)第1.2節(jié)的原理,(ex/Δσ,ey/Δσ)便是e1在參考圖像平面中的坐標(biāo).當(dāng)Δσ→0時(shí),極點(diǎn)e1(ex/Δσ,ey/Δσ)可以落在坐標(biāo)系中任意一個(gè)象限或坐標(biāo)軸的無窮遠(yuǎn)處,具體位置取決于ex和ey的符號(hào).如果Δσ→0+,e1是正極點(diǎn),根據(jù)第1.2節(jié)的原理,參考圖像的掃描順序是朝向e1的方向;如果Δσ→0-,e1是負(fù)極點(diǎn),參考圖像的掃描順序是遠(yuǎn)離e1的方向.由于Δσ→0+時(shí)的極點(diǎn)坐標(biāo)與Δσ→0-時(shí)的極點(diǎn)坐標(biāo)關(guān)于原點(diǎn)對(duì)稱,趨向相反的方向,如圖3所示,因此Δσ→0+和Δσ→0-時(shí)掃描順序相同.
圖3 Δσ→0+與Δσ→0-時(shí)參考圖像的掃描順序Fig.3 Scan order of the reference image in case of Δσ→0+andΔσ→0-
上述定理說明了在考察參考圖像的掃描順序時(shí),只需要考察Δσ→0+與Δσ→0-中的一種.下面僅討論Δσ→0+即e1為正極點(diǎn)時(shí),ex和ey取其他不同的符號(hào)組合參考圖像的掃描順序.
如果ex>0,ey>0,則e1坐標(biāo)為[+∞ +∞1]T.此時(shí),極線li與極線lj平行,如圖3所示.顯然,此時(shí)應(yīng)按照從左到右,從上到下的順序掃描參考圖像,如圖4a所示.
若ex<0,ey>0,則e1的坐標(biāo)為[-∞ +∞1]T,其掃描方向如圖4b所示,按從右到左,從上到下的順序掃描.類似地,可以得到當(dāng)ex>0,ey<0時(shí)的掃描方向(見圖4c)以及當(dāng)ex<0,ey<0時(shí)的掃描方向(見圖4d).
e1落在坐標(biāo)軸上的情況有如下幾種:若ex>0,ey=0則e1的坐標(biāo)為[+∞ 01]T,落在x軸正無窮遠(yuǎn)處,極線與x軸平行,因此應(yīng)按從上到下的順序掃描,而水平方向的掃描順序沒有限制,如圖4e所示.類似地,可以得到其他情形的掃描順序,分別如圖4f~h所示.若ex=0,ey=0,又ez=0,代入式(1),可得(c2-c1)=[0001]T,即視點(diǎn)沒有變換,沒有形成新的視圖,因此不存在此種情況.
圖4囊括了ex和ey符號(hào)組合的所有情況,按圖4的掃描順序掃描參考圖像像素點(diǎn)便可消除褶皺.
目前的三維電視應(yīng)用中僅考慮視點(diǎn)在水平方向移動(dòng)的特殊情形,即(c2-c1)=[cx001]T,代入公式(3),可得極點(diǎn)e1的坐標(biāo)為[axcx0 Δσ]T.由于ax為正數(shù),當(dāng)cx小于0,此時(shí)極點(diǎn)e1落在x軸的負(fù)方向,如圖4f;反之,極點(diǎn)e1落在x軸的正方向,如圖4e所示.從圖4f中可知,繪制左視圖時(shí)應(yīng)從右到左掃描參考圖像;從圖4e可知,繪制右視圖時(shí)應(yīng)從左到右掃描參考圖像;垂直方向的順序沒有限制.因此在三維電視應(yīng)用中,可先根據(jù)需求判斷需要繪制的是左視圖還是右視圖(視圖判定),然后再根據(jù)視圖確定參考圖像像素點(diǎn)的掃描順序,便可消除褶皺.具體算法流程如圖5所示.
圖5 算法流程圖Fig.5 Flowchart of the algorithm
本文采用“Ballet”和“Breakdancer”序列[9]中攝像機(jī)4拍攝到的圖像以及“Lawn”和“Road”序列[10]進(jìn)行試驗(yàn).假設(shè)以拍攝參考圖像的攝像機(jī)為中心,左右兩邊各擺放一個(gè)與該攝像機(jī)完全相同的虛擬攝像機(jī)(相當(dāng)于左眼或右眼),人眼之間的距離為65mm(在“Ballet”和“Breakdancer”序列參數(shù)中相當(dāng)于2.6[11],所有試驗(yàn)的基線長(zhǎng)度都采用該參數(shù)).根據(jù)本文算法確定的掃描順序(見圖5)和三維圖像變換公式[1]完成虛擬視點(diǎn)的繪制后,生成的目標(biāo)視圖如圖6所示.
圖6a為按照本文方法確定的掃描順序(從右到左)掃描參考圖像生成的左視圖.由于視點(diǎn)的改變,在左視圖中人物的左邊緣和左視圖左邊界存在較大的空洞,這里為方便比較不進(jìn)行空洞填充.圖6b為按相反的順序(從左到右)掃描參考圖像生成的左視圖.由于該圖中人物先繪制,背景后繪制,導(dǎo)致圈和框所示的地方背景信息覆蓋了部分的人物信息,生成了遮擋關(guān)系錯(cuò)誤的內(nèi)容.
圖6c為按從左到右、從下到上的順序掃描參考圖像得到的右視圖,圖6d為按從左到右、從上到下的順序掃描參考圖像得到的右視圖,兩圖的結(jié)果一樣.由于基線與參考圖像平行時(shí),極點(diǎn)在無窮遠(yuǎn)處,所有的極線都平行,當(dāng)極線與水平軸平行時(shí),垂直方向沒有分量,因而不需考慮垂直方向的繪制順序.
圖6e為采用Z-buffer算法生成的左視圖,其結(jié)果與圖6a一致,但采用本文方法的仿真速度比采用Z-buffer的速度快.采用其他序列重復(fù)上述試驗(yàn)(試驗(yàn)平臺(tái),Intel(R)i5CPU,2.81GHz,3.99G的內(nèi)存),均可以得到同樣的結(jié)論.圖7顯示了”Ballet”,“Breakdancer”, “Angkorwat”[10], “Flower”[10],“Lawn”,“Road”,“Stair”[10]以及 “Temple”[10]這八個(gè)序列的部分試驗(yàn)結(jié)果.
在圖7a和b中,縱軸表示仿真時(shí)間,圖7的橫軸表示各個(gè)序列.用本文算法和Z-buffer算法測(cè)試各個(gè)序列的前10幀圖像,然后計(jì)算這10幅圖像仿真時(shí)間的平均值和方差,得到圖7.其中圖7a和c是繪制左視圖時(shí)各個(gè)序列的平均仿真時(shí)間和仿真時(shí)間方差對(duì)比圖,圖7b和d是繪制右視圖時(shí)各個(gè)序列的平均仿真時(shí)間和仿真時(shí)間方差.從圖7可看出本文方法不但比Z-buffer算法速度快,而且更穩(wěn)定.本文方法之所以快,是因?yàn)閆 buffer算法需要計(jì)算并比較每一個(gè)像素點(diǎn)的深度值,而本文的方法不需要;本文方法之所以更穩(wěn)定,是因?yàn)閆-buffer算法與產(chǎn)生褶皺現(xiàn)象的像素點(diǎn)的數(shù)目及掃描像素點(diǎn)的順序有關(guān),而本文方法僅需要確定掃描順序,與圖像內(nèi)容無關(guān).
從圖7還可以發(fā)現(xiàn),當(dāng)繪制右視圖時(shí),Z-buffer算法的掃描順序與本文方法的掃描順序?qū)嶋H上是一致的.由于Z-buffer算法需要計(jì)算并比較每一個(gè)像素點(diǎn)的深度值(盡管這種比較是多余的),因而繪制速度比本文的方法慢很多.當(dāng)繪制左視圖時(shí),Z-buffer算法的掃描順序與本文方法是相反的.這時(shí)Z-buffer算法會(huì)保證離虛擬光心近的像素點(diǎn)先繪制,離虛擬光心遠(yuǎn)的像素點(diǎn)不被繪制,而本文方法中每一個(gè)像素點(diǎn)必然要繪制一次,因此Z-buffer算法與本文算法的性能差距稍有縮小.
在DIBR實(shí)際應(yīng)用中,很多情況下是將參考圖像當(dāng)成左(右)視圖來生成右(左)視圖,并且要求虛擬視圖的視點(diǎn)只在水平方向移動(dòng).本文研究了這種特殊情形下參考圖像像素點(diǎn)的掃描順序,提出了一種通過視圖判定來消除褶皺的方法.該方法只需判斷目標(biāo)圖像是左視圖還是右視圖,便可確定參考圖像像素點(diǎn)的掃描順序以消除褶皺.由于本文方法無需比較每個(gè)像素點(diǎn)的深度值,也不需要攝像機(jī)標(biāo)定參數(shù),且與圖像的具體內(nèi)容無關(guān),因而計(jì)算簡(jiǎn)單、處理速度快、穩(wěn)定性好.此外,該方法不需要另辟內(nèi)存空間來存儲(chǔ)每個(gè)點(diǎn)的深度值,有利于降低硬件實(shí)現(xiàn)的成本,簡(jiǎn)化DIBR系統(tǒng)的硬件實(shí)現(xiàn).大量試驗(yàn)表明,本文的方法能夠得到正確的掃描順序,性能優(yōu)于傳統(tǒng)的Z-buffer算法.
本文方法適用于只有一幅參考圖像的情況,下一步研究如何將該方法推廣到有多幅參考圖像的情況.
[1]LIU Ran,XIE Hui,TAI Guoqin,et al.Depth adjustment for depth-image-based rendering in 3D TV system[J].Journal of Information and Computational Science,2011,8(16):4233.
[2]ZHANG Ling,TAI Guoqin,LIU Ran,et al.Correction algorithm of matching error for DIBR[J].Journal of South China University of Technology:Natural Science,2011,39(12):51.
[3]劉然,巫英堅(jiān),許小艷,等.一種用于DIBR的去隔行算法[J].計(jì)算機(jī)應(yīng)用研究,2011(4):1563.LIU Ran,WU Yingjian,XU Xiaoyan,et al.De-interlacing algorithm for DIBR[J].Application Research of Computers,2011(4):1563.
[4]LEE P-J,Effendi.Nongeometric distortion smoothing approach for depth map preprocessing [J]. Multimedia, IEEE Transactions on,2011,13(2):246.
[5]馮雅美.自然三維電視系統(tǒng)中虛擬視點(diǎn)繪制技術(shù)研究[D].杭州:浙江大學(xué),2010.FENG Yamei.Virtual view generation research for natural 3D TV systems[D].Hangzhou:Zhejiang University,2010.
[6]LIU Zhanwei,AN Ping,LIU Suxing,et al.Arbitrary view generation based on DIBR[C]//Intelligent Signal Processing and Communications Systems 2007.Xiamen:Institute of Electrical and Electronics Engineers Inc.,2008:168-171.
[7]McMillan L,Jr.An image-based approach to three-dimensional computer graphic[D].Chapel Hill:University of North Carolina,1997.
[8]HDMI Licensing LLC.High-definition multimedia interface specification version 1.4a[EB/OL].[2012-10-15].http://www.docin.com/p-113296854.html.2011.
[9]Zitnick C L,Kang S B,Uyttendaele M,et al.High-quality video view interpolation using a layered representation[C]//ACM SIGGRAPH and ACM Transactions on Graphics.Los Angeles:Association for Computing Machinery,2004:600-608.
[10]ZHANG Guofeng,JIA Jiaya, Wong T,et al.3D video download[EB/OL].[2012-10-15].http://www.cad.zju.edu.cn/home/gfzhang/projects/videodepth/data/.2011.
[11]郁理.基于深度圖像繪制的自由視點(diǎn)視頻關(guān)鍵技術(shù)研究[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2010.YU Li.Key technology research on free-view video based on depth-image based rendering[D].Hefei:University of Science and Technology of China,2010.