王 琦
3D能夠給觀眾帶來(lái)更真實(shí)的視覺(jué)體驗(yàn),但是目前無(wú)論是電視臺(tái),還是圖片庫(kù)運(yùn)營(yíng)商、影視節(jié)目發(fā)行商、大型網(wǎng)絡(luò)音視頻網(wǎng)站存儲(chǔ)的內(nèi)容介質(zhì)超過(guò)99%都是2D視頻、圖像。由于3D攝像、拍照等環(huán)節(jié)成本較高,因此基于人眼對(duì)三維模型的視覺(jué)模型,2D轉(zhuǎn)3D的技術(shù)應(yīng)用顯的尤為重要,通過(guò)該項(xiàng)技術(shù)可以將普通的2D圖像轉(zhuǎn)成3D圖像,進(jìn)而可以由2D視頻轉(zhuǎn)換為3D視頻。
本文從人眼視覺(jué)模型出發(fā)闡述3D相關(guān)技術(shù),著重討論2D轉(zhuǎn)3D技術(shù),并給出一種軟件實(shí)現(xiàn)方法及實(shí)驗(yàn)結(jié)果。
3D相關(guān)技術(shù)包括3D顯示技術(shù)、立體視覺(jué)、2D轉(zhuǎn)3D、多視點(diǎn)編解碼等。本章將簡(jiǎn)述除2D轉(zhuǎn)3D技術(shù)之外的相關(guān)技術(shù)。
圖像、視頻處理、傳輸技術(shù)經(jīng)歷了從黑白到彩色,從模擬電視到數(shù)字電視,從標(biāo)準(zhǔn)清晰度到高清的多次變革。每次變革都提高了人們的視覺(jué)享受。目前,千家萬(wàn)戶都在觀看的二維(2D)圖像、視頻平面顯示系統(tǒng)由于缺少物體的深度信息,使人的視覺(jué)缺乏立體(深度)感而有與實(shí)際的自然場(chǎng)景不一致的感覺(jué)。目前,觀看立體圖像、視頻的方式主要有佩戴立體眼鏡(偏振式、快門式、分色式)和自動(dòng)立體顯示(視差柵欄式、柱透鏡光柵式)。
人類之所以能夠感知自然深度是由于左右眼觀看真實(shí)世界有輕微的差異,每只眼睛的視網(wǎng)膜上各形成一個(gè)獨(dú)立的影像,傳到大腦皮層后結(jié)合為具有深度感的視像。進(jìn)一步說(shuō),當(dāng)相距約6.5cm的雙眼觀察物體時(shí),因視向的不同,左眼看到物體的左邊物點(diǎn),右眼看到物體的右邊物點(diǎn),在兩個(gè)視網(wǎng)膜上得到不同的兩個(gè)視像,其兩者之差成為視差。由此可見(jiàn),雙眼視差是形成對(duì)立體物體有深度感的重要條件,視差與深度之間存在必然聯(lián)系。人眼對(duì)獲取的景象的深度感知能力(Depth Perception)主要來(lái)自于:雙目視差(Binocular Parallax)、運(yùn)動(dòng)視差(Motion Parallax)、眼睛的適應(yīng)性調(diào)節(jié)(Accommodation)、視差圖像在人腦的融合(Convergence)。[1]
MVC標(biāo)準(zhǔn)建立在AVC標(biāo)準(zhǔn)之上,以AVC標(biāo)準(zhǔn)補(bǔ)篇(附錄H)的形式出現(xiàn)。詳見(jiàn)[2]。
觀眾在觀看2D圖像、視頻時(shí),兩眼同時(shí)接收同一圖像、視頻序列幀;而在觀看3D圖像、視頻,要體驗(yàn)到立體感,則左眼接收左序列幀,右眼接收有視差的右序列幀。因此2D轉(zhuǎn)3D的技術(shù)難點(diǎn)在于如何由單目序列幀生成一對(duì)有視差的雙目序列幀。
根據(jù)輸入2D圖像數(shù)目的不同,現(xiàn)有的2D轉(zhuǎn)3D技術(shù)大體上可以分為兩類:基于兩幅或多幅圖像的轉(zhuǎn)換技術(shù)和基于單幅圖像的轉(zhuǎn)換技術(shù)。第一種技術(shù)利用多路相機(jī)拍攝的圖像或者是單路相機(jī)拍攝動(dòng)態(tài)場(chǎng)景得到的圖像,使用了奪目深度線索;而第二種技術(shù)利用單幅靜止圖像作為輸入,使用的是單目深度線索,作為目前最常用,也是目前國(guó)內(nèi)電視臺(tái)中已經(jīng)上線運(yùn)營(yíng)過(guò)的技術(shù)是基于3d紅藍(lán)立體原理的圖像轉(zhuǎn)換技術(shù)。
3d紅藍(lán)立體原理的圖像轉(zhuǎn)換技術(shù)主要是指人類是通過(guò)左眼和右眼所看到的物體的細(xì)微差異來(lái)獲得立體感的,要從一幅平面的圖像中獲得立體感,那么這幅平面圖像中就必須包含具有一定視差的兩幅圖像的信息,再通過(guò)適當(dāng)?shù)姆椒ê凸ぞ叻謩e傳送到我們的左右眼睛。
那么一幅紅藍(lán)立體圖是如何包含兩幅圖像信息。純黃的RGB數(shù)值是255,255,0,可以看出:純黃色=純紅色+純綠色,根據(jù)互補(bǔ)色原理,補(bǔ)色指完全不含另一種顏色,紅和綠混合成黃色,因?yàn)橥耆缓{(lán)色,所以黃色就是藍(lán)色的補(bǔ)色。我們可以通過(guò)計(jì)算來(lái)確定任意一個(gè)顏色的互補(bǔ)色:首先取得這個(gè)顏色的RGB數(shù)值,再用255分別減去現(xiàn)有的RGB值即可。比如黃色的RGB值是255,255,0,那么通過(guò)計(jì)算:r(255-255),g(255-255),b(255-0),互補(bǔ)色為:0,0,255。正是藍(lán)色。紅色的互補(bǔ)色為青色,紅色的RGB值是(0--255),0,0;而青色的RGB值是0,(0--255),(0--255),由于它們不含有對(duì)方的顏色,利用這個(gè)特點(diǎn),我們用紅色來(lái)保存一幅圖像的信息,而用青色來(lái)保存另一幅圖像的信息,這樣就完全可以用一幅圖像來(lái)包含兩幅圖像的信息了。
我們可以用一個(gè)公式來(lái)表達(dá);第一幅圖像RGB1=R1,G1,B1;第二幅圖像RGB2=R2,G2,B2,合成后的立體圖像RGB12=R1,G2,B2(這種情況程序?qū)崿F(xiàn)時(shí)深度向外)或RGB21=R2,G1,B1(這種情況程序?qū)崿F(xiàn)時(shí)深度向內(nèi))。從公式RGB12=R1,G2,B2中可以看出,合成后的立體圖像實(shí)際上包含了第一幅圖像的紅色RGB=R1,0,0和第二幅圖像的青色RGB=0,R2,B2。
接下來(lái)的問(wèn)題就是怎樣保證我們的左右眼分別只看到一幅圖像,研究一下立體眼鏡,紅色眼鏡片的RGB值是255,0,0;青色眼鏡片的RGB值是0,255,255,因?yàn)橹挥屑t色才能透過(guò)紅色眼鏡片,傳送到我們左眼的圖像的RGB紅=R1,0,0;因?yàn)橹挥星嗌拍芡高^(guò)青色眼睛片,傳送到我們右眼的圖像的RGB青=0,R2,B2。這樣包含在一幅紅藍(lán)立體圖中的兩幅圖像的信息就被分別傳送到了我們的左右眼睛。
Depth from motion主要經(jīng)過(guò)視頻幀的讀取、視頻分割、視差估計(jì)(深度圖的求取),合成3D視頻幀等幾個(gè)步驟,如圖1所示:
圖1 Depth from motion
深度圖(Depth map):場(chǎng)景中各點(diǎn)相對(duì)于攝像機(jī)的距離,即深度圖中的每一個(gè)像素值表示場(chǎng)景中某一點(diǎn)與攝像機(jī)之間的距離。視差圖(Parallax map):以圖像對(duì)中任一幅圖像為基準(zhǔn),其大小為該基準(zhǔn)圖像的大小,元素值為視差值的圖像。
DIBR(Depth image based Rendering)[3]技術(shù)著重解決的是如何由提供的原圖片和對(duì)應(yīng)的深度圖生成一對(duì)3D立體圖。
DIBR的算法處理流程是:圖片預(yù)處理(原圖和深度圖):深度圖歸一化,對(duì)深度圖進(jìn)行不對(duì)稱高斯濾波。因?yàn)槿祟惖囊曈X(jué)模型獲取視差主要來(lái)自與水平差,而并非垂直差,所以要進(jìn)行不對(duì)稱的高斯濾波。
Structure from Motion技術(shù)通過(guò)分析二維物體的運(yùn)動(dòng)信號(hào)得到三維結(jié)構(gòu),只有一個(gè)取景器(如攝像機(jī))的情況下,通過(guò)分析取景器移動(dòng)時(shí)拍到的場(chǎng)景來(lái)得到場(chǎng)景的三維信息。類似于多取景器狀況下的立體視覺(jué)。。從二維圖像得到三維場(chǎng)景具有挑戰(zhàn)性,因?yàn)閳D像的形成過(guò)程是不可逆的。
本文給出一種基于3d紅藍(lán)立體原理的圖像轉(zhuǎn)換技術(shù),并實(shí)現(xiàn)了一套2D到3D的軟件系統(tǒng)。實(shí)驗(yàn)證明,該方法僅對(duì)顏色空間層進(jìn)行相應(yīng)處理,具有使用簡(jiǎn)單、高效等特點(diǎn),后期可方便的擴(kuò)展到硬件實(shí)現(xiàn),且可兼容市面上的低價(jià)格3D眼睛。
2D轉(zhuǎn)3D轉(zhuǎn)換實(shí)現(xiàn)總流程,如圖2所示:
圖2 2D轉(zhuǎn)3D轉(zhuǎn)換實(shí)現(xiàn)總流程圖
首先定義存儲(chǔ)圖像的結(jié)構(gòu)體,設(shè)定選擇模式,程序根據(jù)設(shè)定的模式為結(jié)構(gòu)體賦值并申請(qǐng)圖像存儲(chǔ)空間,設(shè)置顏色搭配模式,為文件中的指定幀進(jìn)行3D圖像轉(zhuǎn)換。
2D轉(zhuǎn)3D轉(zhuǎn)換處理,首先要判斷轉(zhuǎn)換處理模式,處理模式共分為2種,分別為圖像進(jìn)行左右處理和上下處理,對(duì)其進(jìn)行YUV轉(zhuǎn)換為RGB并按序保存,最后把幀畫面寫入圖像中,從而完成2D轉(zhuǎn)3D功能,如圖3所示:
圖3 2D轉(zhuǎn)3D處理流程圖
下面根據(jù)2D轉(zhuǎn)3D處理處理流程的兩種選擇模式進(jìn)行細(xì)化處理,通過(guò)轉(zhuǎn)換存儲(chǔ)矩陣,判斷顏色搭配模式,實(shí)現(xiàn)YUV分量轉(zhuǎn)RGB并依次存儲(chǔ),最后將其寫入BMP文件,如圖4、圖5所示:
圖4 圖像轉(zhuǎn)換左右處理邏輯流程圖
圖5 圖像轉(zhuǎn)換上下處理邏輯流程圖
轉(zhuǎn)換公式
YUV分量轉(zhuǎn)換RGB公式如下:
R=Y+1.4075*(V-128)
G=Y-0.3455*(U-128)-0.7169*(V-128)
B=Y+1.799*(U-128)
人眼立體感知處理的7種不同顏色組合及對(duì)應(yīng)處理公式如下:
3D red-blue image(左B右R,即紅藍(lán))
R=left R*0+right R*1
G=left G*0+right G*0
B=left B*1+right B*0
3D red-cyan image(左GB右R,即紅青)
R=left R*0+right R*1
G=left G*1+right G*0
B=left B*1+right B*0
3D red-green image(左G右R,即紅綠)
R=left R*0+right R*1
G=left G*1+ right G*0
B=left B*0+right B*0
3D green-red image(左R右G,即綠紅)
R=left R*1+right R*0
G=left G*0+right G*1
B=left B*0+right B*0
3D magenta-green image(左G右RB,即品紅綠)
R=left R*0+right R*1
G=left G*1+ right G*0
B=left B*0+right B*1
3D green-magenta image(左RB右G,即綠品紅)
R=left R*1+right R*0
G=left G*0+right G*1
B=left B*1+right B*0
3D brown-blue image(左B右RG,即棕藍(lán))
R=left R*0+right R*0.5
G=left G*0+right G*0.25
B=left B*1+right B*0
通過(guò)判斷顏色組合模式,套用轉(zhuǎn)換公式實(shí)現(xiàn)YUV分量轉(zhuǎn)RGB并依次存儲(chǔ),最后將其寫入BMP文件完成對(duì)一個(gè)畫面的3D轉(zhuǎn)換處理。
1、影片圖片的枚舉變量設(shè)計(jì):
typedef enum{YUV420=0,YUV422,YUV444,
RGB565,RGB888,RGB32,}AV_ImageFormat;
2、圖像轉(zhuǎn)換處理結(jié)構(gòu)體設(shè)計(jì):
typedef struct AV_3DVideo_PostProcessing__OperatePar{
//for Input Image
//unsigned int inImageFormat;
AV_ImageFormat inImageFormat;
unsigned char*inYUVFrame[3];
unsigned int inYUVWidth[3];
unsigned int inYUVHeight[3];
unsigned int inYUVStride[3];
//for Output Image
AV_ImageFormat outImageFormat;
unsigned char*outRGBFrame;
unsigned int outRGBWidth;
unsigned int outRGBHeight;
unsigned int outRGBStride;
unsigned char*outYUVFrame[3];
unsigned int outYUVWidth[3];
unsigned int outYUVHeight[3];
unsigned int outYUVStride[3];
//for Effect type
unsigned int colorchoose;
unsigned int typechoose;
}AV_3DVideo_PostProcessing__OperatePar;
Int AV_3DVideo_Create(unsigned int *handle,AV_3DVideo_PostProcessing__OperatePar*videoconversion);
int AV_3DVideo_Destroy(unsigned int handle);
int AV_3DVideo_PostProcessing(unsigned int handle,VA_3DVideo_PostProcessing__OperatePar*videoconversion);
基于以上思路,開(kāi)發(fā)Demo運(yùn)行系統(tǒng),并對(duì)一個(gè)800x450的YUV420序列進(jìn)行2D到3D轉(zhuǎn)換。
根據(jù)以上實(shí)驗(yàn)結(jié)果,結(jié)合人眼佩戴眼睛后實(shí)現(xiàn)感觀體驗(yàn)。將YUV分量轉(zhuǎn)換為RGB并依次存儲(chǔ),左G右RB,即品紅綠;或者將YUV分量轉(zhuǎn)換為RGB并依次存儲(chǔ)左RB右G即綠品紅,這兩種轉(zhuǎn)換效果相對(duì)較好。
通過(guò)本文實(shí)現(xiàn)的DEMO系統(tǒng),已經(jīng)能初步較好的完成2D轉(zhuǎn)3D圖像轉(zhuǎn)換,并通過(guò)配置相關(guān)觀看裝置技術(shù)能給人們帶來(lái)一定的3D體驗(yàn)。希望隨著2D轉(zhuǎn)3D技術(shù)的不斷前進(jìn),能夠?qū)⒏嗟钠胀?D圖像方便的轉(zhuǎn)成3D圖像。
[1]王樹(shù)峰,基于立體視覺(jué)方法的圖像三維模型重建研究,[D]南京航空航天大學(xué),20080301
[2]ITU-T T-REC-H.264-201003-I!!PDF-E
[3]Tao Li,Qionghai Dai,Xudong Xie,An Efficient Method for Automatic Stereoscopic Conversion,[D]Visual Information Engineering,2008.VIE 2008.5th International Conference on
[4]Liang Zhang;Tam,W.J “Stereoscopic image generation based on depth images for 3D TV,”[D]IEEE Conference on Broadcasting,pp.191-199,2005