劉恩亞,崔軍峰,南 楠
(國(guó)家無(wú)線電監(jiān)測(cè)中心,北京 100037)
3D技術(shù)以其栩栩如生的真實(shí)感極大地豐富了大眾的娛樂(lè)生活,但是為了達(dá)到自然真實(shí)的效果,需要巨大的數(shù)據(jù)存儲(chǔ)與傳輸。自20世紀(jì)90年代開(kāi)始,視頻編碼標(biāo)準(zhǔn)不斷迭代升級(jí),以適應(yīng)日新月異的技術(shù)發(fā)展需求。結(jié)合文獻(xiàn)調(diào)研,本文簡(jiǎn)單介紹了3D視頻編碼的基本原理。
視頻是連續(xù)的圖像序列[1-3],由連續(xù)的幀構(gòu)成,一幀即為一幅圖像。由于人眼的視覺(jué)暫留效應(yīng),當(dāng)幀序列以一定的速率播放時(shí),我們看到的就是動(dòng)作連續(xù)的視頻。由于連續(xù)的幀之間相似性極高,為便于儲(chǔ)存?zhèn)鬏?,我們需要?duì)原始的視頻進(jìn)行編碼壓縮,以去除空間、時(shí)間維度的冗余。
視頻編碼是建立在圖像編碼的基礎(chǔ)上,以JPEG(Joint Photographic Experts Group,聯(lián)合圖像專(zhuān)家小組)格式為例,圖像編解碼原理如圖1所示[1]:
圖1 圖像編解碼原理示意圖
圖像編碼流程如下:
(1)首先將圖像分塊(Block),JPEG中通常為8*8像素。
(2)對(duì)分塊進(jìn)行DCT(Discrete Cosine Transform,離散余弦變換),將圖像數(shù)據(jù)變換到空間頻域。
(3)對(duì)變換后的空間頻域矩陣進(jìn)行量化(Quantize),通常需設(shè)定一個(gè)QP值(Quantization Parameter,量化參數(shù))。把空間頻域矩陣的每一個(gè)DCT系數(shù)除以QP值,再取整,從而DCT矩陣中較小的系數(shù)就被忽略掉了,以此達(dá)到壓縮效果,如圖2所示。
QP值是視頻編碼中的一個(gè)重要的參數(shù),QP值越大,壓縮后的文件越小,但是視覺(jué)上效果越差;QP值越小,則反之。
(4)經(jīng)過(guò)量化后的矩陣含有大量0值,為進(jìn)一步壓縮,進(jìn)行Zigzag掃描,如圖3所示。
(5)將Zigzag掃描后得到的序列進(jìn)行壓縮編碼(通常稱(chēng)作熵編碼,Entropy Coding)。編碼方法可采用RLE(Run-Level Encoding,游程編碼)或VLC(Variable-Length Coding,變長(zhǎng)編碼)[1]。
圖2 DCT及量化示意圖
圖3 Zigzag掃描示意圖
視頻編碼時(shí),要重點(diǎn)考慮消除幀與幀之間的冗余信息。相比于圖像編碼,視頻編碼增加了Motion Est.和Motion Comp.兩個(gè)模塊,如圖4所示。Motion Esti.為運(yùn)動(dòng)估計(jì)(Motion Estimation),即計(jì)算兩幅圖像中變化的部分;Motion Comp.為運(yùn)動(dòng)補(bǔ)償(Motion Compensation),即利用運(yùn)動(dòng)估計(jì)的結(jié)果和前一幅圖像,計(jì)算得到新的圖像。也即,運(yùn)動(dòng)估計(jì)去掉了時(shí)序上相鄰的兩幅圖像中的冗余部分,僅保留其變化部分,以達(dá)到壓縮的效果。
圖4 視頻編碼原理示意圖
視頻解碼過(guò)程如圖5所示。
圖5 視頻解碼原理示意圖
目前,主要有兩家國(guó)際機(jī)構(gòu)負(fù)責(zé)制定視頻編碼標(biāo)準(zhǔn):國(guó)際電信聯(lián)盟的視頻編碼專(zhuān)家組(ITU-T's Video Coding Experts Group)和國(guó)際標(biāo)準(zhǔn)化組織和國(guó)際電工委員會(huì)的動(dòng)態(tài)圖像專(zhuān)家組(ISO/IEC Moving Picture Experts Group,MPEG)。
表1 視頻編碼標(biāo)準(zhǔn)演進(jìn)情況表
簡(jiǎn)單回顧一下20世紀(jì)90年代以來(lái)的主流編碼標(biāo)準(zhǔn)[9,12]。表1中,ITU-T的標(biāo)準(zhǔn)包括H.261、H.263、H.264,主要應(yīng)用于實(shí)時(shí)視頻通信領(lǐng)域,如視頻會(huì)議;MPEG系列標(biāo)準(zhǔn)是由ISO/IEC制定的,主要應(yīng)用于視頻存儲(chǔ)(DVD)、廣播電視、互聯(lián)網(wǎng)或無(wú)線網(wǎng)絡(luò)的流媒體等。兩個(gè)組織也共同制定了一些標(biāo)準(zhǔn),H.262標(biāo)準(zhǔn)等同于MPEG-2的視頻編碼標(biāo)準(zhǔn),而H.264標(biāo)準(zhǔn)則被納入MPEG-4的第10部分。
表1中提到的各個(gè)標(biāo)準(zhǔn)在[8-12]中有著比較詳盡的介紹,本文不再展開(kāi),值得一提的是AVS和HEVC這兩種較新的編碼標(biāo)準(zhǔn)。AVS的全稱(chēng)是The Audio Video Standard of China,即中國(guó)音視頻編碼[10],與其他標(biāo)準(zhǔn)相比,AVS可以在顯著降低復(fù)雜度的同時(shí)提供近乎最優(yōu)的性能。2006年,AVS作為中國(guó)國(guó)家標(biāo)準(zhǔn)正式發(fā)布[11]。HEVC全稱(chēng)是High Efficiency Video coding,即高效視頻編碼[13]。2013年1月26日,HEVC正式被批準(zhǔn)稱(chēng)為國(guó)際標(biāo)準(zhǔn),ISO/IEC將其納入MPEG-H Part 2,而ITU-T則將其納入H.265。HEVC主要針對(duì)高清、超高清視頻,比起H.264/AVC而言,可以提高50%的編碼效率,其代價(jià)是算法復(fù)雜度的升高。
H.264編碼標(biāo)準(zhǔn)最初發(fā)表于2003年,是ITU-T和ISO/IEC兩家機(jī)構(gòu)的聯(lián)合產(chǎn)品[3,4]。H.264是ITU-T沿用的標(biāo)準(zhǔn)名,而ISO/IEC則將其命名為MPEG-4 Part 10/AVC,AVC是高級(jí)視頻編碼(Advanced Video Coding)的首字母。H.264編解碼大致流程如圖6所示[3],分為三個(gè)步驟:預(yù)測(cè)(Prediction)、變換(Transform)和編碼(Encode),解碼則反之。
圖6 H.264/AVC編解碼原理示意圖
圖7 I,P,B幀示意圖
在H.264編碼的視頻序列中,共分I,P,B三類(lèi)幀(圖7):I幀,即Intra Frame,是獨(dú)立編解碼的幀,不需要其他的幀作為參考。視頻序列的第一幀一定是I幀,I幀通常包含較多的比特?cái)?shù)。P幀,即Predictive Inter Frame,它以之前的I或P幀作為參考幀來(lái)進(jìn)行編碼。P幀通常比I幀包含更少的比特?cái)?shù),比I幀更易受到傳輸錯(cuò)誤的干擾。B幀,即Bi-predictive Inter Frame,它的壓縮編碼不但需要參考之前的I或P幀,還需要參考之后的I或P幀。
諸如“IBBPBBPBB”這樣的結(jié)構(gòu)被稱(chēng)作一個(gè)GOP(Group of Pictures)。
2.2.1 預(yù)測(cè)模塊(Prediction)
編碼器在處理一幀圖像時(shí)是基于宏塊(Macroblock)進(jìn)行的,一個(gè)宏塊是16*16個(gè)像素點(diǎn)。每個(gè)宏塊的預(yù)測(cè)都是參考之前已編碼的宏塊。根據(jù)已編碼的宏塊的來(lái)源不同,預(yù)測(cè)編碼可以分為兩類(lèi):一類(lèi)是幀內(nèi)預(yù)測(cè)編碼(Intra Prediction),即以同一幀內(nèi)的已編碼的宏塊作為參考;另一類(lèi)是幀間預(yù)測(cè)編碼(Inter Prediction),即以之前已被編碼并且已被發(fā)送的幀的相關(guān)宏塊作為參考。編碼器將預(yù)測(cè)得到的數(shù)據(jù)從當(dāng)前宏塊中去掉,于是便得到剩余數(shù)據(jù)(residual)。
圖8 幀內(nèi)預(yù)測(cè)編碼
幀內(nèi)預(yù)測(cè)編碼如圖8所示,相對(duì)之前的編碼標(biāo)準(zhǔn)來(lái)說(shuō),H.264的塊大小較為靈活(可為16×16或者4×4個(gè)像素點(diǎn)),這也使得其在預(yù)測(cè)精度和編碼效率上得到很大提高。
幀間預(yù)測(cè)編碼需要考察連續(xù)幀之間的差異來(lái)進(jìn)行壓縮[4]。如圖9所示,連續(xù)的三幀描述了一個(gè)人跑向房屋的場(chǎng)景。在三幅圖像中,房屋不變,故在后兩幀中可以視為冗余數(shù)據(jù)。針對(duì)這種情況,可采用差分編碼(difference coding)的方法來(lái)進(jìn)行壓縮,即只編碼那些相對(duì)于參考幀有變化的像素點(diǎn)。僅通過(guò)差分編碼來(lái)進(jìn)行幀間預(yù)測(cè)編碼不足以較好地壓縮圖像中運(yùn)動(dòng)的部分,這時(shí)要采用運(yùn)動(dòng)補(bǔ)償(motion compensation),運(yùn)動(dòng)補(bǔ)償?shù)幕舅枷胧牵寒?dāng)前幀中的圖像數(shù)據(jù)大體上都可從之前已編碼的幀中找到,只不過(guò)是位置不同而已,如果將其位置的變化找到并儲(chǔ)存,即可預(yù)測(cè)得到當(dāng)前幀,詳見(jiàn)[4]。
2.2.2 變換及量化(Transform and Quantization)
在預(yù)測(cè)部分提到,編碼器將預(yù)測(cè)得到的塊的數(shù)據(jù)從當(dāng)前的塊中去掉,從而獲得剩余數(shù)據(jù)(residual),繼而對(duì)每一塊剩余數(shù)據(jù)進(jìn)行4×4或者8×8的整數(shù)變換(integer transform,整數(shù)變換是DCT變換的近似形式),隨后再對(duì)變換后得到的系數(shù)進(jìn)行量化,具體過(guò)程已在前文介紹。
圖9 Inter預(yù)測(cè)編碼應(yīng)用場(chǎng)景
2.2.3 比特流編碼(Bitstream Encoding)
經(jīng)過(guò)前述步驟后,我們得到了若干待壓縮為比特流的數(shù)據(jù)。這些數(shù)據(jù)分別是:量化后的變換系數(shù)、解碼器預(yù)測(cè)重建數(shù)據(jù)的有關(guān)信息、壓縮數(shù)據(jù)的結(jié)構(gòu)信息和編碼時(shí)使用的壓縮工具的信息、關(guān)于整個(gè)視頻序列的有關(guān)信息。利用變長(zhǎng)編碼(Variable Length Coding,VLC)或算數(shù)編碼(Arithmetic Coding),將上述提到的數(shù)據(jù)、參數(shù)(語(yǔ)法元素,syntax elements)轉(zhuǎn)換為二進(jìn)制碼,即為比特流編碼。經(jīng)比特流編碼后的二進(jìn)制序列可用于傳輸或儲(chǔ)存。本小節(jié)簡(jiǎn)單介紹了H.264/AVC的編碼原理,詳細(xì)的算法介紹可以參考[5-7]。
如何在有限帶寬前提下,成功展示滿意的3D效果是擺在研究人員面前的一項(xiàng)艱巨任務(wù)。不同的3D顯示技術(shù)需要用到不同的3D數(shù)據(jù)格式,也即需要采用不同的3D編碼方法。但是,各種方法的目的是相同的,即有效地去除待編碼視頻之間的時(shí)間、空間冗余?;谥敖榻B的H.264/AVC,文獻(xiàn)[14-21]中提出的3D視頻編碼方法大致可以分為兩類(lèi):一類(lèi)是基于多視角(multi-view)的編碼方法;另一類(lèi)是基于視頻加深度(video plus depth)的編碼方法。
3.1.1 傳統(tǒng)立體視頻編碼(CSV)
傳統(tǒng)立體視頻編碼(Conventional Stereo Video Coding,CSV)是最經(jīng)典的3D視頻編碼方式[14]。兩臺(tái)攝像機(jī)參考人眼的距離放置,同時(shí)拍攝同一場(chǎng)景。在壓縮編碼時(shí),某一路視角的視頻可以參考另一路視角來(lái)進(jìn)行編碼,提高壓縮效率。采用CSV時(shí),兩路視角的視頻分為基礎(chǔ)層(base layer)和增強(qiáng)層(enhancement layer)?;A(chǔ)層完全當(dāng)做獨(dú)立的二維視頻來(lái)進(jìn)行編碼,而增強(qiáng)層則在編碼時(shí)需要以基礎(chǔ)層作為參考。3D視頻編碼通常將左視作為基礎(chǔ)層,右視作為增強(qiáng)層;左視具有后向兼容性,可以作為二維視頻在常規(guī)顯示設(shè)備上播放。CSV方法的缺陷在于其只能保證在拍攝視角觀看視頻時(shí)會(huì)有3D效果,而其他視角則不能。
圖10 CSV編碼方法視頻結(jié)構(gòu)示意
3.1.2 多視角視頻編碼(MVC)
多視角視頻編碼(Multi-view Video Coding,MVC)是CSV的升級(jí)版,即多個(gè)攝像機(jī)同時(shí)拍攝同一場(chǎng)景。這樣,在觀看時(shí)可以從多個(gè)位置看到立體效果。在編碼壓縮多視角視頻信號(hào)時(shí),可采用視差補(bǔ)償(disparity compensation)來(lái)去除視角間的冗余(Inter-view Redundancy)[14]?;贖.264/AVC的“分層B幀(hierarchical B-pictures)”結(jié)構(gòu)如圖12所示。MVC方法也存在兩個(gè)缺陷,一是其計(jì)算復(fù)雜度高,尤其不適合移動(dòng)設(shè)備;二是雖然較CSV而言,MVC可以給觀眾更多的觀看視角,但是這些視角在錄制視頻之初就固定了,缺乏一定的靈活性。
圖11 MVC編碼方法視頻結(jié)構(gòu)示意
3.1.3 雙視抑制理論(BST)
L. Stelmach等學(xué)者于2000年提出了利用“雙視抑制理論(Binocular Suppression Theory,BST)”來(lái)進(jìn)行3D視頻編碼[15,22]。BST的理論指出:觀眾的主觀測(cè)評(píng)結(jié)果是由高質(zhì)量的視頻(左視)決定的。在編碼時(shí)可將右視的分辨率下采樣至原始大小的二分之一或四分之一,如圖13所示。BST在學(xué)術(shù)研究上是一個(gè)有意義的嘗試,但其商業(yè)化應(yīng)用較為有限。
3.2.1 視頻加深度編碼(V+D)
視頻加深度編碼方法(Coding of Video Plus Depth,V+D)是在歐洲信息社會(huì)技術(shù)(The European Information Society Technologies,IST)發(fā)起的“先進(jìn)3D電視系統(tǒng)技術(shù)(Advanced Three-Dimensional Television System Technologies,ATTEST)”項(xiàng)目中提出的。V+D編碼中3D圖像表達(dá)為:?jiǎn)我暯菆D像(monoscopic color video),外加一個(gè)深度信息(per-pixel depth information),如圖13所示:
圖12 BST編碼方法視頻結(jié)構(gòu)示意 圖13 V+D編碼方法視頻結(jié)構(gòu)示意
單視角圖像即為普通2D視頻,深度圖的每一個(gè)像素點(diǎn)與單視角圖像的像素點(diǎn)一一對(duì)應(yīng),用8比特的灰度值(gray value)來(lái)代表原圖像該像素的深度信息?;叶戎禐?表示“最遠(yuǎn)/深端”,灰度值為255則表示“最近/淺端”。可通過(guò)兩種方法獲取深度圖[17]:一種方法是利用特殊設(shè)備,如“測(cè)距”相機(jī)(time of flight cameras);另一種是利用算法估計(jì)得到,如分析同一場(chǎng)景中同一物品的位移或差異(displacement or disparity)。在接收端,利用DIBR算法(Depth-Image-Based-Rendering Technique)可以從V+D格式的數(shù)據(jù)中恢復(fù)出適合人眼觀看的3D視頻效果。
V+D編碼方式有兩個(gè)顯著的特點(diǎn):一是它可實(shí)現(xiàn)非常高的壓縮效率,由于深度信息為單色圖像,所以在使用V+D方法壓縮視頻后會(huì)比壓縮兩路彩色視頻節(jié)省資源;二是它具有“互動(dòng)性”,接收端的3D效果展示是通過(guò)數(shù)學(xué)手段計(jì)算而得,故可將深度信息設(shè)置為與亮度、對(duì)比度類(lèi)似的可調(diào)參數(shù),通過(guò)調(diào)節(jié)深度來(lái)達(dá)到個(gè)性化的3D觀看效果。V+D編碼方式的也存在較為明顯的缺陷,即圖像中前景對(duì)后景的遮擋:如在圖13中,我們無(wú)法獲得被人臉遮擋部分的深度信息,如果觀看者調(diào)整了觀看角度,則DIBR算法無(wú)法算出被遮擋部分的深度,導(dǎo)致觀看3D視頻的主觀體驗(yàn)下降。
3.2.2 多視角視頻加深度編碼(MVD)
MVD是Multi-view Video Plus Depth的縮寫(xiě),它是V+D編碼方法的擴(kuò)展[14]。MVD需錄制多視角的原始視頻和深度信息(見(jiàn)圖14)。MVD相比MVC來(lái)說(shuō)更節(jié)省資源,但是隨著視角數(shù)的增多,MVD會(huì)產(chǎn)生大量的數(shù)據(jù)。
圖14 MVD編碼方法視頻結(jié)構(gòu)示意
3.2.3 分層深度編碼(LDV)
LDV是Layered Depth Video的縮寫(xiě),LDV編碼是針對(duì)V+D的不足而提出的[14]。LDV將原始視頻中的前后景區(qū)分出來(lái),分別進(jìn)行V+D編碼,以克服單純使用V+D的不足,如圖15所示。
圖15 LDV編碼方法視頻結(jié)構(gòu)示意
3.2.4 MVC與MVD的比較
MVC與MVD相比,其優(yōu)勢(shì)在于不需要額外的深度感知設(shè)備,當(dāng)前的3D電影基本都是參考MVC標(biāo)準(zhǔn)制作的;而MVD相比MVC而言,在某些場(chǎng)景中會(huì)更節(jié)省資源,具體分析見(jiàn)[15]。誠(chéng)然MVD有自己的優(yōu)勢(shì),但是由于MVD方法與工業(yè)界的慣例做法沒(méi)有傳承關(guān)系,而且需要有特殊的深度感知設(shè)備,所以工業(yè)界一直沒(méi)有采用并且推廣MVD。[15]中也指出,未來(lái)市場(chǎng)中通用的3D編碼方式將會(huì)是MVC。
結(jié)合文獻(xiàn)調(diào)研,本文簡(jiǎn)要介紹了圖像和視頻壓縮編碼的基本原理,進(jìn)一步介紹了3D視頻編碼基本原理和多種編碼方法。隨著5G時(shí)代的到來(lái),從原理上了解3D視頻編碼方法,將對(duì)3D視頻數(shù)據(jù)在通信(尤其是無(wú)線通信)網(wǎng)絡(luò)中傳輸建模及分析應(yīng)用大有裨益。