霍智勇,武明虎,劉天亮,朱秀昌
(1南京郵電大學傳媒與藝術學院,江蘇 南京210003;2湖北工業大學電氣與電子工程學院,湖北 武漢430068;3南京郵電大學通信與信息工程學院,江蘇 南京210003)
自由視點視頻(FVV)的一項關鍵技術是新視點內容的生成,即虛擬視點渲染合成技術.許多研究機構均在這方面開展相關研究[1].DIBR虛擬視點渲染技術核心思想在于利用深度信息和攝像機參數將已知視點的圖像像素投影到未知的虛擬視點.1996年,Seitz提出了一種視點變換方法(View Morphing)[2],這種方法和 DIBR技術的基本原理比較接近.他將參考圖像信息還原到三維空間,然后重新投影到虛擬視點的圖像平面.1997年,McMillan提出了一種一般場合的視點間的變換公式[3].Oliveira等人使用了單參考圖像投影虛擬視點[4],這類方法的缺點在于,當虛擬攝像機距離過遠時,虛擬畫面中出現的人量遮擋導致的空洞由于缺少信息而難以得到有效的填補,極大的影響了視覺質量.2004年,C.Fehn則提出了在針孔相機模型下,世界坐標系和參考視點的攝像機坐標系重合的條件下,利用DIBR技術繪制虛擬視點的3D渲染方程[5].Zitnick等人[6]提出了基于分層深度圖表示的自由視點渲染算法.實驗結果由Smolic等人[7]進行了擴展,根據其可靠性識別并分類為三個深度層,然后獲得的每一層的圖像變形結果合并在一起,采用了三個后處理算法來解決渲染中人工偽影的問題.算法的質量無法測量,但算法需要有相當多的預處理和后處理計算.Merkle[8]進行DIBR計算之前會首先為視點建立深度圖.深度圖中沒有得到定義的像素利用結合了腐蝕和膨脹計算的經驗花定義進行填補.基于建立的深度圖,通過逆映射得到紋理.利用對應的深度值合并變形后的紋理,前景像素具有優先權.算法結果表明得到的映射結果優于幾個其他的算法.Mori[9]的自由視點DIBR的算法采用了一種邊界膨脹的方法,能夠消除部分遮擋邊界上的偽影,并使用了相鄰像素填充非遮擋空洞,達到了較好的效果,成為 DIBR的標準參考方法(ISO/IEC JTC1/SC29/WG11,M15377).
對DIBR的標準參考方法Mori算法存在的問題進行了分析,研究現有算法存在的主要問題,并嘗試用新的方法解決.
假設3D點所在的齊次坐標系為Pw=(Xw,Yw,Zw,1)T,由兩個攝像機分別拍攝并投影到參考圖像平面和合成圖像平面的點的位置分別為P1= (X1,Y1,1)T和P2= (X2,Y2,1)T,如圖1所示.

圖1 參考圖像3D變形過程
攝像機i(這里i∈ {1,2})的方向和位置由旋轉矩陣Ri和變換矩陣ti=-RiCi描述,Ci為攝像機的中心的坐標,則兩個圖像平面的像素位置P1和P2為:

這里K1和K2為3×3的攝像機內部參數矩陣,λ1和λ2為尺度因子,假設攝像機1位于坐標原點,C1=03,方向為Z方向(R1=I3×3),尺度因子λ1可以指定為λ1=Zw.
由式(1),原點Pw的3D坐標可以寫為

則式(2)代入式(3)得到合成的像素點P2為

假設攝像機1方向為Z方向,則可以簡化為

同樣,深度圖的變形可以寫為

這里的D1,D2分別為參考深度圖和變形投影后的深度圖.
1)反向變形消除裂縫 要面對的第一個問題是變形后圖像中的裂縫和空洞,這主要是由于在參考圖像的x和y方向上采樣而產生.如圖1所示,大的空白區出現在每個人物右側的陰影部分,細小的裂縫出現在人物的左右兩側,都是不遮蔽的.標準參考方法中對付裂縫的方法是圖像空間過采樣.當在參考圖像中沿著x和y方向采樣時,采樣率是分辨率的2倍,則大部分裂縫會消失,同時執行變形的計算量也增大了4倍,加重了計算的代價.在最初的實驗中,結論是僅僅為了消除裂縫就執行過采樣,計算代價太大.另一個可能的問題是由于周邊選擇的像素太多,一些相鄰的彎曲像素可能會有錯誤的值.
這種方法是標記裂縫像素并反向變形,查找對應紋理.該方法分三步:第一步,對變形的深度圖進行中值濾波處理.由于深度圖包含邊緣清晰的平滑區域,中值濾波并不會降低質量;第二步比較中值濾波的輸入和輸出,標記所有數值發生改變的像素(紅色的像素);第三步對改變像素執行一個逆向變形,查找對應的紋理像素(圖2).這個方法能很好地消除裂縫,計算量也要小于前一種方法.
根據公式(6),深度圖反向映射可以表示為

這里D1w為反向變換后的深度圖,D2C為改變了的深度像素.

圖2 中值濾波后逆向變形消除裂縫
2)背景中偽影的消除 不可靠的深度圖會使虛擬視點圖像中紋理被扭曲到錯誤的地方,而這種現象在紋理對象的邊緣最為明顯,原因是那里深度變化最為劇烈.在深度圖中,這些邊是清晰的并只有一個像素的寬度.而在紋理圖中,它們通常支配著2到3個像素.當進行前向變形時,邊緣像素本來在前景紋理的,結果被扭曲到背景中.
DIBR的標準參考方法的解決方案是擴大這個不遮擋區來消除重影的輪廓線.但這個方法存在嚴重缺點,它不只是去掉了重影輪廓線,而且也修改了紋理像素.這種方法只去掉深度變化劇烈區域邊沿的變形像素,由于這個邊可能覆蓋2至3個像素,因此鄰近像素也被抹去.這個方法的優勢在于只去掉重影輪廓,但前提是需要找到非常不連續的部分.這里簡要說明一下如何實現.作為前景,目標對象周圍都存在相鄰前景像素.一般的做法是,首先比較每個像素和它周圍的8個像素,以便確認是不是最不連續的區域.只要它的相鄰像素有一個是前景像素,就已經認為該像素是重影輪廓.因此檢查每個像素是否滿足條件:

這里S是圖像空間,D標示參考圖像的深度圖,Td是預先定義的閾值.
如圖3所示,如果放大這個不連續區域的邊緣,就可以看到這些邊緣的紋理存在前景和背景的混合.因此我們發現:如果直接忽略掉這些邊緣的變形像素效果更為明顯.去變形唯一沒有被當作重影輪廓的那個像素.將每個像素帶入公式(8)中,判斷像素是否需要變形.這個方法的好處是不需要抹去重影輪廓這一步.但由于邊緣通常有兩個像素寬度,不得不給當作重影輪廓的邊增加一個像素.

圖3 非常不連續的邊緣部分
3)剩余空洞的填充 在混合兩個投影圖像時,遮擋區域可能仍然存在.這個區域在參考攝像機中是看不到的.目前的inpaint填充技術都是用于小塊圖像區域的.這些區域可以用遮擋區域的邊緣像素來填充,以便保持那里紋理的結構.雖然這些技術有很好的效果,但是往往填充區域還是會留有某些模糊的情況.
在填補遮擋區的應用中,遮擋不僅僅是隨機出現的區域,而且作為新的背景的一部分,沒有任何紋理信息,完全與前景無關.當遮擋區是背景時,可以利用遮擋區邊緣的深度信息來填充更精準的紋理.
填充過程如下:首先對于最靠近邊緣的像素,在8個方向搜索遮擋區的每個像素;這里僅考慮具有最低深度值的邊緣像素.這些像素根據公式(9)計算加權平均值.這個方法的好處是前景與背景之間不存在模糊的問題.缺點是當遮擋區面積比較大時,填充區域就成為低頻小塊.填充算法是基于不含紋理值的鄰域像素加權內插,表達式為

這里的O是遮擋區,N是在背景中邊緣像素的數量,d是P到遮擋區邊緣的距離,t是邊緣像素的紋理值.計算時逐一處理遮擋區中的每個像素,以便在保證算法復雜度的前提下,實現盡可能高質量的輸出效果.
完整的基于深度信息增強的DIBR虛擬視點渲染算法分4步進行.首先對參考攝像機圖像進行3D變形,并同時將深度和紋理圖3D變形到虛擬視點.投影圖像的裂縫利用中值濾波來處理,濾波器的窗口寬度為3×3像素.改變的像素再逆向變形回參考攝像機圖像,找出其中的紋理.為了去掉重影輪廓,檢查用于變形的所選像素,深度變化劇烈的前景邊緣區域的邊不去做變形處理.剩下的空洞利用inpaint的方法進行填充,最后對兩路生成的渲染圖像進行混合.下面介紹一下具體的算法步驟.
第一步:同時對參考視點的紋理圖和深度圖進行3D變形,該位置由深度圖變形所定義.變形過程由下面的表達式定義:

這里Tr1和Tr2分別是兩個參考攝像機的紋理圖,Dr1和Dr2分別是兩個參考攝像機的深度圖,W是3D變形函數,如式(10)、(11)所示,Dw1和Dw2分別是Dr1和Dr2變形后的深度圖,Tw1和Tw2分別是新視點中的紋理圖.

比較每個像素和它周圍的8個像素,以便確認是不是最不連續的區域.函數H標記深度變化劇烈區域的像素,變形這個像素,然后從前景中抹去.根據公式(8),取閾值Td=80,閾值的取值一般在最大深度值的1/4左右.Dedge為變形后的輪廓像素.
第二步:中值濾波和定義修改的像素.
首先對Dw1和Dw2進行中值濾波,找出并標記改變了值的像素位置Iw1和Iw2.這個計算表達式為:

這里的M表示窗口大小為3×3的中值濾波,C函數檢測像素是否在中值濾波中發生改變.
第三步:通過反向變形填補紋理裂縫.
變形后的紋理圖像中的裂縫利用方向變形進行填補,變形時從虛擬視點反向變形到參考攝像機視點.W-1的表達式見式(7),這種反向修復的表達式:

第四步:創建新視點的紋理.
這一步包括填充和混合兩項任務.分別填充兩個變形紋理圖,然后混合函數實現結果圖像的混合,表達式為

這里的In為填充函數,B為混合函數.
由于選用的參考視點處于虛擬視點的兩側,一個視點的遮擋區域在另一個視點中未必被遮擋,因此,絕大多數由遮擋引起的空洞可由不同視點的像素互補填充,從各個參考視點得到的虛擬視點公共部分則根據虛擬視點與參考視點的距離,由α混合加權得到最終像素顏色,如公式(20)所示,對于同一位置的像素顏色,距離越近的參考視點得到的權值越大,α混合后剩余的空洞則交由后續步驟處理.

這里

公式(19)中,I左表示由左參考視點變換得到的虛擬視點(u,v)處的像素值,I右表示由右參考視點得到的虛擬視點.I則表示最終的虛擬視點,O表示相應的虛擬視點位置 (u,v)是否處于空洞區域,Z是虛擬視點位置(u,v)的深度值,α的值與虛擬視點和已知的參考視點之間的距離有關,如式(20)所示,t,tl,tr表示相對應攝像機外部參數中的平移向量.

本文選擇了微軟研究院交互視頻組的多視點數據集“Ballet”和“Breakdancers”視頻序列作為測試場景,如圖6和圖7所示.算法生成的視點圖像與Mori的算法結果進行了比較.這兩個測試視頻序列分別包含100幀紋理和對應的深度圖,分辨率為1024×768像素.場景由8個攝像機沿著圓弧的視點同時拍攝,裝置圖見圖4.每幀圖像都有對應的深度圖.




其中第5個攝像機光學中心坐標為世界坐標系原點.深度圖中的像素值P與真實的深度值Z之間的關系為

這里的P是深度圖的亮度值,“Ballet”視頻測試序列的Zmin=42.0,Zmax=130.0,Breakdancers視頻測試序列的Zmin=44.0,Zmax=120.0.
下面從測試序列中任意選取圖像進行DIBR新的視點圖像生成實驗.
圖8為紋理圖進行3D變形后得到的新視點的紋理圖的裂縫填充實驗結果,從圖中可以看到包含有明顯的裂縫和大的空洞.圖8b為算法對裂縫進行了消除后的結果,圖8a中原有的裂縫已經被去除,畫面紋理結構完整,可以觀察到前面人左邊還有明顯的黑色的大塊區域,這是畫面中包含的空洞.這些空洞通過后面的inpaint流程加以消除.

圖8 變形后的紋理圖進行裂縫填充
圖9為深度圖進行變形后得到的新視點的深度圖的填充結果,從圖中可以看到包含有明顯的細線狀的裂縫和大片的黑色區域.圖8b為算法對裂縫進行了消除后的結果,圖8a中原有的裂縫已經被去除,畫面紋理結構完整,可以觀察到前面人左邊和褲子上還有明顯的黑色的大塊空洞.

圖9 變形后的紋理圖進行裂縫填充
圖10為提取出來的裂縫和空洞進行填充的實驗結果,從圖中可以看到變形后存在于紋理和深度圖中的細線狀的裂縫和大片的白色區域,這些區域由于變形后沒有數據,以零值填充.圖10b為算法對裂縫進行了消除后的結果,圖10a中原有的裂縫已經被去除,但可以觀察到前面人和后面人的左側和褲子上還有明顯的白色的大塊空洞,觀察效果比紋理圖中明顯.
圖11是消除變形后紋理圖中偽影實驗結果,圖11a中可以看到人物頭部左側有明顯的偽影,通過本文的消除算法,可以觀察到重影被有效的消除了,如圖11b所示.


圖12為算法對空洞進行了inpaint后的實驗結果,畫面中還包含有大塊的黑色空洞區域,未填充前為零值.圖12a中原有的空洞已經被去除,可以明顯觀察到右側畫面中前面人和后面人的左側和褲子上的大塊空洞,已經被有效以新的紋理數據填充,達到預期目標.

圖12 紋理圖中剩余空洞的填充
圖13a圖為Mori算法生成的新的紋理圖的結果,圖13b圖與圖12b相同,為合成的新視點的紋理圖.

圖13 Mori的算法和本文算法的結果對比
通過對比可以觀察到,圖13a中前面人和后面人的左側仍然有明顯的重影存在,畫面左側墻上還有一條明顯的黑色細線,褲子上的大塊空洞也察覺不到,已經被新的紋理數據有效填充.通過對比,從主觀觀察來看,可以明顯看出本文算法的效果要比Mori算法結果好.
在兩個視點圖像(圖14、圖15)之間進行了虛擬視點內插的實驗,在“Ballet”和“Breakdancers”數據集中任取相鄰兩視點,攝像機間距為20cm,三個內插視點的α分別取1/4、1/2、3/4.每行左右兩端的圖像幀(a)和(e)為原始參考圖像,中間的3個圖像為視點生成的圖像,如圖(b)、(c)和(d)所示,從結果可以觀察到,生成視點質量較好,沒有非常明顯的偽影和空洞.


下面將進行兩項質量評價:PSNR評價包括了與視頻壓縮有關的渲染視點的攝像機配置和扭曲.由于攝像機的數量有限,攝像機配置的首要目的就是為了獲得高質量的自由視點渲染.
第一項測量是通過改變相鄰攝像機之間的角度,研究對最終渲染的質量.RGB圖像被首先轉換到YUV色彩空間,然后計算Y的峰值信噪比(PSNR).

PSNR的計算表達式為

均方誤差(Mean Squared Error,MSE)的計算表達式為

結果如圖16所示.測量是隨機選擇20個圖像幀進行的.從圖中可觀察到,對于測試場景(a)圖“Ballet”和(b)圖“Breakdancers”,與 Mori提出的算法相比,PSNR平均提高了4dB左右.這么明顯的提升主要原因在于兩個方面,一是利用中值濾波取代雙向濾波,二是inpaint填充算法中利用了深度信息.主觀品質也能感覺到有小幅的改善,主要是一些前景對象的邊緣更加平滑.

圖16 攝像機之間角度改變對合成圖像PSNR的影響
第二項測量分析了編碼對渲染質量的影響.我們使用常規配置的H.264對周圍的攝像機流進行編碼,目的是找到聯合優化的量化參數,編碼器的質量參數,qmin=22,qmax=52.為此首先創建出聯合深度和紋理率失真表面曲面,通過搜索以便找到最小的失真,尤其是優化參數.
渲染的質量對于每個聯合比特率都可以表示為PSNR最大化.H.264的率失真曲面如圖17所示.率失真曲面的計算參考了 Morvan的方法[10],為了最小化這些曲面上離群點的數量,從測試序列中隨機選擇10幀進行測量并取平均值,每一幀的紋理和深度圖的分辨率為1024×768.圖18為聯合紋理深度比特率的渲染質量曲線,這里的比特率為紋理和深度圖的編碼比特率和.


由圖17、18可以看出,深度和紋理的比特率達到1 500kbit/s后,渲染的質量就沒有太多的改善.這意味著取更高的比特率對于渲染質量的影響不大,影響最大的還是渲染算法,而不是來自相鄰攝像機的視頻流的壓縮.
本文研究的渲染算法可以實現兩個參考視點之間的自由視點生成計算.在每個參考視點都有好的深度圖的情況下,算法可以獲得比較滿意的虛擬視點生成結果.對于DIBR渲染過程,分析了面臨的主要問題,重點放在人工偽影的消除方法上.首先,渲染產生的裂縫利用反向變形進行消除,這個方法的優點在于填充裂縫時計算量不大,不要為新視點生成深度圖.其次,給出一種遮擋區的處理方法,對于深度劇烈變化的區域可略去邊緣的變形.雖然方法簡單,但是實際效果很好.最后,給出了利用了深度圖信息解決遮擋區的重繪(inpaint)方法,可以避免由于內插所造成的紋理圖質量下降.
總的來說,本文提出的算法比現有的Mori算法性能要好,特別是當參考攝像機角度變化時,其效果更加明顯.而且,在保證渲染質量的同時,所需的算法復雜度較低.此外,還證明了在H.264編碼時,提高編碼比特率對于渲染質量的改善貢獻有限.
[1]Koch R,Evers-Senne J.3DVideo communication algorithms,concepts and real-time systems in human centered communication[M].Wiley,2005.
[2]Seitz S M,Dyer C R.Toward image-based scene representation using view morphing[C].In Pattern Recognition,1996,Proceedings of the 13th International Conference on,1996:84-89.
[3]McMillan Jr L.An image-based approach to three dimensional computer graphics[D].Citeseer 1997.
[4]Oliveira M,Bishop G.Relief textures[C].University of North Carolina at Chapel Hill,Chapel Hill,NC,1999.
[5]Fehn C.Depth-image-based rendering (DIBR),compression,and transmission for a new approach on 3DTV[C].In Electronic Imaging 2004,2004:93-104.
[6]Zitnick C L,Kang S B,Uyttendaele M,etal.Highquality video view interpolation using a layered representation[C].In 2004:600-608.
[7]Smolic A,Muller K,Dix K,etal.Intermediate view interpolation based on multiview video plus depth for advanced 3Dvideo systems[C].In 2008:2 448-2 451.
[8]Merkle P,Morvan Y,Smolic A,etal.The effects of multiview depth video compression on multiview rendering[J].Signal Processing:Image Communication,2009,24(1):73-88.
[9]Mori Y,Fukushima N,Yendo T,etal.View generation with 3Dwarping using depth information for FTV[J].Signal processing:image communication,2009,24(1):65-72.
[10]Morvan Y,Farin D,de With,P H N.Joint Depth texture bit-allocation for multi-view video compression[C].In 2007.