袁星范
(華南理工大學(xué) 電子與信息學(xué)院,廣東 廣州 510640)
?
最新一代視頻壓縮標(biāo)準(zhǔn)VP9綜述
袁星范
(華南理工大學(xué) 電子與信息學(xué)院,廣東廣州 510640)
摘要:VP9是一個由谷歌開發(fā)的開放格式、無使用授權(quán)費(fèi)的視頻壓縮標(biāo)準(zhǔn),并做為谷歌推行WebM工程的一部分。對VP9標(biāo)準(zhǔn)的主要技術(shù)特征進(jìn)行了分析,包括幀內(nèi)預(yù)測、幀間預(yù)測、變換和量化、熵編碼、環(huán)路濾波等,同時與其他先進(jìn)的視頻壓縮標(biāo)準(zhǔn)HEVC進(jìn)行了比較。
關(guān)鍵詞:VP9;HEVC;核心技術(shù)
1VP9概述
隨著網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展,網(wǎng)絡(luò)視頻業(yè)務(wù)的需求日益增長,網(wǎng)絡(luò)視頻數(shù)據(jù)占據(jù)了互聯(lián)網(wǎng)數(shù)據(jù)的絕大部分。2010年,谷歌開始推行WebM工程[1],致力于開發(fā)下一代開放、免授權(quán)費(fèi)的視頻壓縮標(biāo)準(zhǔn)VP9。VP9目標(biāo)之一就是在相同質(zhì)量下相對于前一代標(biāo)準(zhǔn)VP8可以減少50%的比特率,另一個目標(biāo)是爭取能在壓縮效率上超過HEVC。在2012年12月30日,VP9解碼器被添加到了Chromium網(wǎng)頁瀏覽器中,2013年2月21日,第一個支持VP9解碼技術(shù)的谷歌Chroma網(wǎng)頁瀏覽器發(fā)布了。
VP9支持的色彩空間標(biāo)準(zhǔn)有:BT.601,BT.709,BT.2020,SMPTE.170,SMPTE.240,sRGB。目前,VP9標(biāo)準(zhǔn)支持4種編碼格式設(shè)定(profiles):profile 0,profile 1,profile 2,profile 3,profile 0支持8bit色彩深度和4∶2∶0的色度抽樣;profile 1支持8 bit色彩深度和4∶2∶0、4∶2∶2和4∶4∶0的色度抽樣;profile 2支持10 bit、12 bit色彩深度和4∶2∶0的色度抽樣;profile 3支持10 bit、12 bit色彩深度和4∶2∶0、4∶2∶2和4∶4∶0的色度抽樣。
2VP9核心技術(shù)
2.1幀內(nèi)預(yù)測
2.1.1預(yù)測塊大小
VP9編碼效率的提升很大程度上取決于使用了更大尺寸的預(yù)測塊。VP9引入了超級塊(Super Block)的概念,塊大小可達(dá)64×64,允許以四叉樹形式將64×64的塊劃分到4×4,所以VP9預(yù)測塊的大小有13種類型:64×64,64×32,32×64,32×32,32×16,16×32,16×16,16×8,8×16,8×8,8×4,4×8,4×4,具體劃分方式如圖1所示。
圖1 VP9 Super Block的劃分
2.1.2幀內(nèi)預(yù)測模式
對于4×4到64×64的像素塊,VP9支持10種幀內(nèi)預(yù)測模式:直流(DC),水平(Horizontal),垂直(Vertical),TM(Ture Motion),以及6種角度預(yù)測模式,分別為D207,D153,D135,D117,D63,D45,相應(yīng)角度為207°,153°,135°,117°,63°,45°,如圖2所示。
圖2 角度模式的預(yù)測方向
對1幀圖像中的預(yù)測塊進(jìn)行幀內(nèi)預(yù)測時,解碼時的操作單元都是采用變換塊[2](Transform Block,TB)。例如:對于1個16×16的預(yù)測塊進(jìn)行幀內(nèi)預(yù)測時,操作單元是4×4的TB塊,在這個16×16的預(yù)測塊區(qū)域,采用光柵掃描方式對每一個4×4的TB進(jìn)行像素值的預(yù)測和重構(gòu),其中待解碼的TB參考已解碼TB重構(gòu)出來的像素值。
2.2幀間預(yù)測
2.2.1參考幀選擇
VP9目前支持從8個已存儲的參考幀中動態(tài)地選出3個參考幀來進(jìn)行幀間預(yù)測,分別稱為LAST_FRAME,GOLDEN_FRAME,ALTREF_FRAME,在每解碼完一幀圖像后,需要對這3個參考幀進(jìn)行更新。在VP9中,有一些已編碼的幀,例如ALTREF,僅僅被用來作為參考幀使用,實(shí)際解碼完成后是不會顯示出來的。VP9沒有采用可以在前后雙向參照的B幀,但引入了復(fù)合預(yù)測模式,允許存在一些不會被顯示的幀,而這些不會被顯示的幀可以作為前后其他任意幀的參考,變相地實(shí)現(xiàn)了雙向B幀。
2.2.2幀間預(yù)測模式
對于4×4到64×64的宏塊,VP9支持4種幀間預(yù)測模式:NEARESTMV,NEARMV,ZEROMV,NEWMV。VP9允許使用一個或兩個運(yùn)動矢量(Motion Vector,MV),影響MV預(yù)測值精確程度的一個關(guān)鍵因素是參考MV的選擇,VP9建立了一個包含兩個矢量的候選參考MV列表,分別稱為nearestmv和nearmv。與當(dāng)前預(yù)測塊相鄰宏塊中已編碼的MV構(gòu)成了這兩個候選MV,若當(dāng)前預(yù)測塊的幀間預(yù)測模式為NEARESTMV或NEARMV時,則當(dāng)前預(yù)測塊的MV分別對應(yīng)于候選列表中的nearestmv和nearmv;若當(dāng)前預(yù)測塊的幀間預(yù)測模式為NEWMV時,則在候選列表中為當(dāng)前預(yù)測塊找不到一個合適的MV,此時當(dāng)前預(yù)測塊的MV為nearestmv的基礎(chǔ)上再疊加一個新的MV;ZEROMV表示當(dāng)前預(yù)測塊使用(0,0)這個矢量。
2.2.3亞像素內(nèi)插
在視頻編解碼器中,濾波器對亞像素內(nèi)插十分重要。亞像素位置的亮度和色度像素并不存在于參考圖像中,需要利用鄰近已編碼點(diǎn)進(jìn)行內(nèi)插而得。如果MV的垂直和水平分量為整數(shù),則參考塊相應(yīng)像素實(shí)際存在。如果其中一個或兩個為分?jǐn)?shù),預(yù)測像素則要通過參考幀中相應(yīng)像素內(nèi)插獲得[3]。VP9中MV最大支持到1/8像素精度,編碼以每幀頭部信息的標(biāo)識來確定是使用1/4像素精度還是1/8像素精度。1/8像素精度僅適應(yīng)于微小的運(yùn)動,取決于參考MV的量級。對于取樣格式為4∶2∶0的色度塊預(yù)測,MV要求使用1/16像素精度。
在實(shí)際的亞像素內(nèi)插過程中,VP9支持3個8-tap的濾波器,稱為EIGHTTAP,EIGHTTAP_SHARP,EIGHTTAP_SMOOTH,以及一個簡單的雙線性濾波器(Bilinear),每個濾波器為1/16像素精度。對于每一個Super Block,都可以使用這3個8-tap濾波器中的一個來進(jìn)行濾波,其中EIGHTTAP_SHARP適應(yīng)于類似屋頂和天空交接這種高對比場景,保留其尖銳邊緣部分;EIGHTTAP_SMOOTH適應(yīng)于相鄰幀某處呈現(xiàn)出不一致非自然的尖銳情況,能有效地平緩,節(jié)省了空間;Bilinear適應(yīng)于快速解碼的情況。
2.2.4縮放因子
在VP9中,當(dāng)前幀與參考幀尺寸不一致時,使用一個縮放因子(scale_factor)進(jìn)行縮放,scale_factor取值范圍是[1/16,2]。不同的縮放因子,當(dāng)前塊所用參考幀的像素數(shù)據(jù)量也不同,同時,scale_factor對亞像素內(nèi)插過程的計算復(fù)雜度也產(chǎn)生重大影響。
2.3變換、量化和掃描
VP9中TB大小分為4×4,8×8,16×16,32×32四種,支持3種變換類型:離散余弦變換(DCT),非對稱離散正弦變換(ADST)和哈夫曼變換(WHT)。TB的大小等于或小于預(yù)測塊大小,例如:預(yù)測塊大小為4×4時,TB大小只能是4×4;預(yù)測塊大小為8×8時,TB大小可以是4×4或8×8;預(yù)測塊大小為16×16時,TB大小可以是4×4或8×8或16×16;預(yù)測塊大小為64×64時,TB大小可達(dá)到32×32。在每一幀的頭部信息中都會標(biāo)識每個預(yù)測塊允許使用的最大TB大小,或在宏塊級信息中會明確標(biāo)識所用TB的大小。
特別地,對于DCT類型,二維DCT對上述4種TB大小都適應(yīng)。所有的幀間編碼宏塊都是采用二維DCT,但對于幀內(nèi)編碼宏塊,VP9新增了一種新的變換類型ADST。根據(jù)相應(yīng)的幀內(nèi)預(yù)測模式,ADST可以和一維DCT結(jié)合起來形成二維混合變換類型。所以,使用水平和垂直兩個方向來進(jìn)行幀內(nèi)冗余信號的變換就有4種可能的變換類型:(ADST,ADST),(ADST,DCT),(DCT,ADST),(DCT,DCT)。另外,對于4×4的宏塊,VP9支持一種WHT類型,適應(yīng)于在低量化值時進(jìn)行無損編碼。
量化過程在不降低視覺效果的前提下應(yīng)盡量減少圖像編碼長度,減少視覺恢復(fù)過程中不必要的信息。VP9提供了8 bit、10 bit、12 bit三個量化表,量化步長決定量化器的編碼壓縮率和圖像精度,量化步長應(yīng)根據(jù)圖像實(shí)際動態(tài)范圍實(shí)時改變,在編碼長度和圖像精度之間折衷,以達(dá)到整體最佳效果。
VP9有3種掃描方式:default_scan,row_scan,col_scan。根據(jù)不同的變換類型選擇不同的掃描方式,當(dāng)變換類型為(DCT,DCT)或(ADST,ADST)時,掃描方式為default_scan;當(dāng)變換類型為(ADST,DCT)時,掃描方式為row_scan;當(dāng)變換類型為(DCT,ADST)時,掃描方式為col_scan。具體掃描方法如圖3所示(以4×4為例)。
圖3 3種掃描方法
2.4自適應(yīng)熵編碼
VP9采用布爾編碼(Bool Code)作為底層的算術(shù)編碼,Bool Code流程如圖4所示。一般來說,給定一個n元碼表,一棵二進(jìn)制樹就建立起來了,包括1個根節(jié)點(diǎn)和n-1個內(nèi)部節(jié)點(diǎn),0對應(yīng)著樹的根節(jié)點(diǎn),正數(shù)表示內(nèi)部節(jié)點(diǎn)的值,負(fù)數(shù)表示葉子的值。每個節(jié)點(diǎn)的概率用8 bit精度表示,范圍是[1,255],相應(yīng)實(shí)際概率范圍是[1/256,255/256]。通過遍歷這棵樹的所有節(jié)點(diǎn)并利用上下文模型來進(jìn)行熵編碼,稱之為Tree Code。在VP9碼流中,預(yù)測模式、TB的大小、MV和參考幀確定、殘差信號都是使用Tree Code進(jìn)行編碼的,如圖5所示是以MV的確定來舉例說明Tree Code,相比哈夫曼編碼,這種編碼方式具有更低的碼率。
圖4 Bool Code 流程
圖5 MV的Tree Code
視頻內(nèi)容本質(zhì)上是不穩(wěn)定的,因此,對于任何一種編碼器,跟蹤統(tǒng)計實(shí)際編碼的各種符號是一種關(guān)鍵機(jī)制。目前,大部分的編碼器都采用后向更新方法來更新符號的概率,這種方法是基于對每一個已編碼好的符號數(shù)目進(jìn)行統(tǒng)計來實(shí)現(xiàn)的。若只采用后向更新,由于概率更新時的中間計算量對解碼每一個符號來說是必不可少的,所以會影響解碼速率。VP9在幀級別結(jié)合前向更新和后向更新來更新符號概率,使編碼效率和速度達(dá)到了一個平衡。
2.5環(huán)路濾波
由于VP9中使用了許多尺寸大小為4×4到32×32的TB塊,環(huán)路濾波就是為了消除邊界之間的塊效應(yīng)。經(jīng)環(huán)路濾波處理后得到的重構(gòu)圖像會做為編碼或解碼時的參考幀,參考幀的準(zhǔn)確性直接影響編解碼器的性能。環(huán)路濾波以Super Block為單位,對一幀圖像以光柵掃描方式先在垂直方向進(jìn)行濾波,再水平方向進(jìn)行濾波。VP9中有3種不同的濾波器,分別是15-tap平滑濾波器,7-tap平滑濾波器,4-tap自適應(yīng)閾值模糊濾波器,濾波時對不同大小的TB使用不同的濾波器。
2.6分段
VP9中引入了分段(segment)這個概念,使具有相同屬性的Super Block或宏塊擁有同一個segment索引號(segment_ID),一幀圖像最多有8個不同的segment_ID。對于每一個segment,包含的屬性有:量化因子,環(huán)路濾波強(qiáng)度,預(yù)測時所選用的參考幀、TB尺寸大小和宏塊是否為skip模式。在幀級別每一個segment的屬性可能會選擇性的進(jìn)行更新,如果沒有進(jìn)行更新,那么這些屬性值保持不變直到解碼下一幀??傮w來說,VP9通過引入segment機(jī)制,提供了一套靈活的編碼方式,在給定的碼率下提高了視頻質(zhì)量。
2.7碼流特征
VP9碼流除了提供高壓縮效率和合適的編碼復(fù)雜度外,還設(shè)計了一些額外的特性用來支持在網(wǎng)絡(luò)視頻傳送和播放過程中產(chǎn)生的特殊情況。
2.7.1誤碼修復(fù)
為了在不可靠的網(wǎng)絡(luò)中進(jìn)行視頻會話時具有低延時性,就需要VP9支持一種編碼模式,當(dāng)有幀在傳播過程中丟失時,解碼端也能正確地解碼。VP9在幀級別提供一個誤碼修復(fù)標(biāo)識,當(dāng)有幀丟失時,誤碼修復(fù)標(biāo)識被激活,會重新發(fā)送一個起始幀或重新選擇參考幀來保證解碼正確。
2.7.2幀級的并行
為了適應(yīng)多核多線程的硬件發(fā)展,VP9的并行解碼能力也有所加強(qiáng)。VP9在每一幀的頭部信息中包含是否進(jìn)行并行解碼模式的標(biāo)識,一旦標(biāo)識被激活,就能實(shí)現(xiàn)幀級的并行解碼,在高清視頻重放系統(tǒng)中,并行處理必不可少。
2.7.3tile并行
VP9除了能進(jìn)行幀級別的并行外,也支持在一幀中使用多線程。因此,VP9中引入tile的概念,一幀圖像可以按列劃分為不同數(shù)目的tile,每一個tile可以在多線程中進(jìn)行單獨(dú)的編碼或解碼,不會引入任何額外的延時。
3VP9與HEVC比較
HEVC在整體上與VP9類似,都采用相同的四叉樹劃分機(jī)制,混合編碼方式,高階的DCT變換和自適應(yīng)熵編碼等[4]。相比VP9,HEVC更多地體現(xiàn)在實(shí)現(xiàn)編碼所用的技巧上。HEVC幀內(nèi)預(yù)測模式有35種,而VP9只有10種幀內(nèi)預(yù)測模式;HEVC的預(yù)測單元都是正方形的,而VP9的預(yù)測單元可以是矩形;HEVC中亞像素內(nèi)插使用的濾波器有4-tap、7-tap和8-tap三種,幀間預(yù)測時還有權(quán)重預(yù)測和AMVP技術(shù),而VP9亞像素內(nèi)插使用的濾波器有2-tap、6-tap、7-tap和8-tap四種,幀間預(yù)測時沒有權(quán)重預(yù)測和AMVP技術(shù),但多了一個縮放因子的概念;HEVC進(jìn)行后處理時新增了SAO技術(shù)[5-6],而VP9后處理時只有去塊濾波器;HEVC有獨(dú)立進(jìn)行編碼和解碼的機(jī)制,而VP9只有并行解碼機(jī)制。
4結(jié)束語
VP9在壓縮效率上超過了前代VP8和H.264,降低30%~50%的碼率即可表現(xiàn)出相同的畫質(zhì),能以更低的帶寬傳送高清的畫面,和HEVC相差甚少,已具備高效編碼的所有特點(diǎn)。同時,VP9使用自由的版權(quán)協(xié)議,可直接用于包括商用在內(nèi)的各種用途,也可以對代碼進(jìn)行更改或創(chuàng)新,無須繳納任何版權(quán)許可費(fèi),綜述所述,VP9的綜合優(yōu)勢不言而喻。
參考文獻(xiàn):
[1]BANKOSKI J,KOLESZAR J,QUILLIO L,et al.VP8 data format and decoding guide[EB/OL].[2015-10-20].http://datatracker.ietf.org/doc/rfc6386/.
[2]劉昱,胡曉爽,段繼忠,等.新一代視頻編碼技術(shù)HEVC算法分析及比較[J].電視技術(shù),2012,36(20):45-49.
[3]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)—H.264/AVC[M].北京:人民郵電出版社,2005.
[4]何海東,董全武,紀(jì)琳.H.265/HEVC、VP9、H.264編碼算法比較及性能測試分析[J].廣播與電視技術(shù),2014,41(10):47-52.
[5]唐華敏,杜建超,王慶雷.新一代視頻編碼標(biāo)準(zhǔn)HEVC中的環(huán)路濾波技術(shù)分析[J].電視技術(shù),2014,38(11):1-4.
[6]萬帥,楊付正.新一代高效視頻編碼H.265/HEVC:原理、標(biāo)準(zhǔn)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2014.
責(zé)任編輯:時雯
Overview of latest generation of video compression standard VP9
YUAN Xingfan
(SchoolofElectronicsandInformation,SouthChinaUniversityofTechnology,Guangzhou510640,China)
Abstract:VP9 is an open format and no license fee video compression standard,which is developed by Google,and it is a part of the implementation of the WebM project for Google. In this paper, the main technical features of VP9 standard are analyzed, including intra prediction, inter prediction, transform and quantization, entropy encoding, loop filter, and other advanced video compression standard HEVC are compared.
Key words:VP9;HEVC;core technology
中圖分類號:TN919.81
文獻(xiàn)標(biāo)志碼:A
DOI:10.16280/j.videoe.2016.05.005
作者簡介:
袁星范(1991— ),碩士生,主研基于VP9的數(shù)字芯片設(shè)計。
收稿日期:2015-11-01
文獻(xiàn)引用格式:袁星范.最新一代視頻壓縮標(biāo)準(zhǔn)VP9綜述[J].電視技術(shù),2016,40(5):18-21.YUAN X F. Overview of latest generation of video compression standard VP9[J].Video engineering,2016,40(5):18-21.