劉梅鋒,陸 玲
(東華理工大學(xué)機(jī)械與電子工程學(xué)院,江西 撫州 344000)
隨著眾多如數(shù)字電視、互聯(lián)網(wǎng)高清視頻、數(shù)碼相機(jī)、數(shù)碼攝像機(jī)等高清數(shù)碼產(chǎn)品的逐漸普及,現(xiàn)有的視頻編解碼標(biāo)準(zhǔn)已經(jīng)不能滿足要求,尤其對(duì)于有著平滑背景的高分辨力視頻。因此,人們?cè)桨l(fā)關(guān)注能適應(yīng)高清甚至超高清視頻的高性能視頻編碼標(biāo)準(zhǔn)的開發(fā)進(jìn)程。近期,ISO-IEC/MPEG和ITU-T/VCEG兩大國(guó)際標(biāo)注化組織成立了視頻編碼聯(lián)合開發(fā)小組(JCT-VC),其目標(biāo)是開發(fā)新一代國(guó)際視頻標(biāo)準(zhǔn),名稱為高性能視頻編碼標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)的目標(biāo)是在保持H.264/AVC標(biāo)準(zhǔn)視頻質(zhì)量的基礎(chǔ)上,使比特率降低一半,即壓縮率提高一倍。據(jù)HEVC參考軟件HM仿真結(jié)果顯示,目前針對(duì)HEVC標(biāo)準(zhǔn)提出的各個(gè)提案還未達(dá)到壓縮率提升一半的目標(biāo)。與H.264/AVC視頻標(biāo)準(zhǔn)一樣,HEVC也包含幀內(nèi)預(yù)測(cè)、幀間預(yù)測(cè)、運(yùn)動(dòng)估計(jì)與補(bǔ)償、正交變換、量化、濾波、熵編碼和重建等編解碼流程。
HEVC定義了3種類型的單元,包括編碼單元(CU)、預(yù)測(cè)單元(PU)和變換單元(TU)[1]。對(duì)于1個(gè)編碼單元,1幅圖像可以被分為多個(gè)片,而1個(gè)片可以被分為多個(gè)最大編碼單元(LCU),1個(gè)最大編碼單元又可以分為4個(gè)編碼單元,每個(gè)分片的編碼單元可以繼續(xù)分片至最大深度。HEVC定義了5種尺寸類型的編碼單元:128×128(LCU),64×64,32×32,16×16和8×8。預(yù)測(cè)單元被定義為編碼單元的支節(jié)點(diǎn),因此,其尺寸最大不超過相應(yīng)編碼單元的尺寸。而變換單元,則是針對(duì)正交變換和量化。對(duì)于幀內(nèi)預(yù)測(cè),HEVC定義了34幀內(nèi)預(yù)測(cè)方向,遠(yuǎn)遠(yuǎn)超過了H.264/AVC 標(biāo)準(zhǔn)的9種[2]。除了傳統(tǒng)的16×16,8×8和4×4等尺寸外,還定義了8×2和2×8尺寸的長(zhǎng)方形塊。對(duì)于幀間預(yù)測(cè),HEVC采取了運(yùn)動(dòng)向量方案(MVR)、差值濾波(IF)、運(yùn)動(dòng)共享(MS)、運(yùn)動(dòng)向量競(jìng)爭(zhēng)(MVC)和基于塊的照明競(jìng)爭(zhēng)(B-BIC)來提高編碼性能。對(duì)于正交變換,HEVC采用包含了16×16,32×32和64×64等尺寸塊的變換矩陣、旋轉(zhuǎn)變換和基于模式的方向性變換來提高編碼性能[3]。對(duì)于濾波,HEVC采用了非線性降噪聲濾波(NDF)、幀自適應(yīng)降噪聲濾波(ADF)、去方塊濾波(DBF)等濾波方法。對(duì)于熵編碼,HEVC采用了零樹編碼、基于語法的內(nèi)容自適應(yīng)二進(jìn)制算術(shù)編碼(SB-CABAC)和自適應(yīng)系數(shù)掃描來提高熵編碼的編碼性能。
本文試圖對(duì)最近6個(gè)JCT-VC會(huì)議中關(guān)于HEVC正交變換的若干主要提案進(jìn)行研究討論,基于HEVC參考軟件模擬仿真結(jié)果,比較其各方面的性能優(yōu)劣,最終提出HEVC正交變換的未來研究方向及可提升性能的研究點(diǎn)。
截止到目前,HEVC標(biāo)準(zhǔn)中包含以下5種正交變換方法:基于模式的方向變換(MDDT)[4]、自適應(yīng)DCT/DST選擇[5]、旋轉(zhuǎn)變換(ROT)[6]、IDCT 修剪和變換跳過模式(TSM)。
在視頻編碼正交變換的應(yīng)用中,早已證實(shí)了Karhunen-Loève變換比DCT具有更高的性能。但在之前的H.264/AVC標(biāo)準(zhǔn)中,由于Karhunen-Loève變換實(shí)現(xiàn)較為復(fù)雜,而DCT具有如蝶形算法等快速的實(shí)現(xiàn)算法,因此被一直采用。
MDDT算法框架僅包含了1個(gè)DCT和1個(gè)派生的KLT,在MDDT中使用可分離變換來進(jìn)行近似理想的非可分離方向變換。例如對(duì)于1個(gè)N×N像素的塊,其二維變換系數(shù)的計(jì)算公式為
式中:Cm和Rm的下綴m代表某預(yù)測(cè)方向上的行與列變換的依賴性。在H.264/AVC標(biāo)準(zhǔn)中,Cm=Rm=M,其中M是離散余弦變換DCT矩陣。在MDDT算法中,KLT采用Cm和Rm,而且是通過訓(xùn)練視頻序列得到的預(yù)測(cè)模式m來計(jì)算預(yù)測(cè)殘差塊來完成的。
為了簡(jiǎn)化派生過程,設(shè)每個(gè)圖像像素為零均值和單位方差的隨機(jī)變量。因此,該圖像像素的相關(guān)函數(shù)可定義為
因此幀內(nèi)編碼后的殘差統(tǒng)計(jì)可以由式(2)得出。首先注意每個(gè)殘差行的統(tǒng)計(jì)特性,第k行(1≤k≤4)的方差矩陣為
接著,第k列(1≤k≤4)的相關(guān)矩陣可定義為
當(dāng)N=4時(shí),可以得到變換矩陣為
表1 HEVC中DCT/KLT的選擇
三星公司提出了基于幀內(nèi)預(yù)測(cè)模式判決的DCT/DST選擇算法。該算法不要求任何訓(xùn)練,且不必準(zhǔn)備大量的變換基,只要把一維的DCT和一維的DST類型7結(jié)合起來即可。當(dāng)然上述結(jié)合只應(yīng)用在幀內(nèi)預(yù)測(cè)模式中。
由于DCT把能力集中在1個(gè)系數(shù)上,因此其視頻編碼性能較好。然而,在新的視頻標(biāo)準(zhǔn)中采用了眾多高效預(yù)測(cè)方法,從而導(dǎo)致DC系數(shù)能量的集中性也降低了。在此情況下,DCT在殘差信號(hào)的編碼中已經(jīng)不適合了。另一方面,從能量集中的角度來看,DST反而適合這種信號(hào)的編碼。同時(shí),DCT也不容易識(shí)別幅-頻特性和相-頻特性。且DCT的量化性能也影響信號(hào)的相位。兩種變換定義為
這些變換均包含三角函數(shù),DST可以用DCT增加一些額外的變量來表示,DST中的正弦函數(shù)可以表示為
式(8)顯示了DST包含了DCT,而且有一半是與DCT相反的,這就意味著DST可以用一個(gè)DCT的電路來實(shí)現(xiàn),如圖1所示。
圖1 4點(diǎn)DST和8點(diǎn)DST
其并行運(yùn)算方法如圖2所示。
圖2 DST串行和并行處理的流程圖
在HEVC中DCT/DST選擇算法與幀內(nèi)預(yù)測(cè)模式的對(duì)應(yīng)關(guān)系如表2所示。
表2 HEVC中DCT/DST選擇算法
8×8旋轉(zhuǎn)變換(ROT)是DCT處理后的第二變換,該算法已嵌入到JCT-VC的HEVC測(cè)試軟件HM中了,其框架如圖3所示。
圖3 ROT應(yīng)用于DCT之后
ROT變換塊mo計(jì)算公式為
式中:mi是輸入的殘差塊,D是DCT矩陣,Rh和Rv分別是水平和垂直的ROT矩陣,計(jì)算公式為
由于量化和正交變換的能力集中特性,大尺寸塊變換的高頻部分往往被量化為0。因此可以采用IDCT修剪算法來運(yùn)行非零子塊信號(hào),從而消除冗余的零入和零出IDCT計(jì)算量。提案中測(cè)量了各個(gè)非零子塊的發(fā)生率。令LK表示1個(gè)塊中最低頻子塊K×K為非零塊。16×16變換包括:L4,L8,L16;而32 ×32 變換包括:L4,L8,L16,L32。非零子塊百分比分布如表3所示。
表3 非零子塊百分比分布
有的塊大部分均為0,而IDCT修建算法能有效地降低復(fù)雜度。1個(gè)N×N塊的二維IDCT需要2N個(gè)一維IDCT變換。比如,沿著行方向只需要執(zhí)行N/2個(gè)變換,這種情況下總的變換數(shù)目?jī)H需N/2+N=1.5N個(gè),計(jì)算復(fù)雜度降低了25%。
總的變換數(shù)目將是:水平方向?yàn)镹/2×N2/4;垂直方向?yàn)镹×N2/4;總的數(shù)目為(3/8)×N2。
在HM3.2中,其量化方法與H.264/AVC沒有改變,而在跳過變換的行/列處的縮放因子的選擇僅由塊的尺寸決定,基于率失真優(yōu)化RDO搜索,編碼器為每個(gè)塊作一個(gè)變換/跳過的選擇,稱為變換跳過模式(TSM)。變換跳過模式信號(hào)被編碼傳送到解碼端,在解碼端也相應(yīng)地作變換/跳過處理。此算法目前已經(jīng)嵌入HM3.2中。
TSM決定一個(gè)或多個(gè)預(yù)測(cè)方向下變換是否跳過,在這些方向下變換將在普通條件下進(jìn)行。這將于有利塊壓縮,例如在幀間預(yù)測(cè)的條件下,殘差塊信號(hào)之間的特征有很大不同。這些特征由很多因素決定,包括序列的運(yùn)動(dòng)程度和類型、量化步長(zhǎng)和運(yùn)動(dòng)估計(jì)的精度等。對(duì)這種信號(hào)進(jìn)行二維變換不是最好的方法,因?yàn)槠鋸?qiáng)行用二維變換將現(xiàn)在DCT作為一種編碼工具的有效性。因此必須為TSM設(shè)計(jì)一種交替、低復(fù)雜度的方法。
變換/跳過模式如表4所示。處理模式TS0,該模式對(duì)應(yīng)于二維變換,其余3種新的變換模式分別為:跳過垂直變換模式(TS1),跳過水平變換模式(TS2)以及水平、垂直均跳過變換模式(TS3)。在編碼器端一定要選擇4種情況中的1種,并且要把這個(gè)選擇編碼傳送到解碼器端。
表4 TSM模式對(duì)于變換選擇和碼字
為了驗(yàn)證前面介紹的幾種算法,筆者對(duì)各種算法進(jìn)行了仿真實(shí)驗(yàn)。
對(duì)于MDDT算法,本文采用KTA參考軟件(KTA2.6r1)。實(shí)驗(yàn)中為幀內(nèi)殘差塊采用4×4,8×8和16×16塊,并使用MDDT中提出的DCT與派生的KLT結(jié)合方法進(jìn)行變換。對(duì)于16×16的塊,只應(yīng)用到水平和垂直兩種方向上。在算法中,對(duì)于每種尺寸的塊變換只存儲(chǔ)2個(gè)變換矩陣。測(cè)試序列分別為BasketballDrive,BQTerrace,Cactus,Kimono1 and ParkScene。序列分辨力等級(jí)從A到E,測(cè)試目標(biāo)為比特率的降低百分比和PSNR變化情況。仿真結(jié)果的平均值如表5所示。
表5 幀內(nèi)預(yù)測(cè)下MDDT算法結(jié)果
據(jù)表5顯示,與傳統(tǒng)的DCT算法相比,MDDT算法獲得了7.75%的比特率下降,但與此同時(shí)PSNR視頻質(zhì)量卻有一點(diǎn)提高。
對(duì)于DCT/DST,采用通用測(cè)試條件,幀內(nèi)和幀間的8×8~32×32的TU都經(jīng)過測(cè)試。變換類型是基于率失真優(yōu)化結(jié)果來選擇的。DCT/DST算法的比特率和PSNR結(jié)果如表6所示。
表6 DCT/DST算法的比特率和PSNR結(jié)果
表6顯示了DCT/DST算法在HE模式下,比特率比原方法降低了0.1%~1.0%。當(dāng)該算法應(yīng)用在幀內(nèi)預(yù)測(cè)的TU情況下,取得了較好的效果。另一方面,在AILC和RALC情況下該算法引起了比特率的升高,這是因?yàn)樵撍惴ū仨殲檫@些標(biāo)志符號(hào)編碼并傳送到解碼器端。
對(duì)于ROT算法,仿真實(shí)驗(yàn)采用了WQVGA,WVGA,720 p,1 080 p和4 k×2 k等規(guī)格的測(cè)試視頻序列。軟件版本為TMuC 0.9。操作系統(tǒng)為 Windows 7 Enterprise 64-bit,CPU 為 Inter Core(TM)i7,2.8 GHz。內(nèi) 存 為4 Gbyte。測(cè)試結(jié)果如表7所示。
表7 ROT算法的比特率和編碼時(shí)間測(cè)試結(jié)果
目前,有許多人建議將ROT算法加入下一代HM參考軟件中去,但該算法引起的編碼時(shí)間上的增加卻不容忽視,尤其在幀內(nèi)預(yù)測(cè)的情況下。
為了證明IDCT修剪算法,筆者比較了該算法與HM2.0的計(jì)算復(fù)雜度,結(jié)果如表8所示。
表8 IDCT修剪算法的計(jì)算復(fù)雜度
從表8可以看出,IDCT修剪方法比HM2.0無論在乘法還是加法上均有所減少。
TSM算法已經(jīng)嵌入到HM3.2參考軟件中。該算法在幀間預(yù)測(cè)模式及ROT分離被關(guān)閉的情況下有效,而在幀內(nèi)預(yù)測(cè)模式下則是無效的。
表9顯示了TSM算法在降低比特率的情況下提高了最大約為20%的計(jì)算復(fù)雜度。導(dǎo)致這種情況的原因是,在幀間預(yù)測(cè)的CU,TSM算法的每個(gè)選擇必須通過率失真來搜索,而該搜索需花費(fèi)很多時(shí)間。
表9 IDCT修剪算法的比特率和編碼時(shí)間測(cè)試結(jié)果
MDDT算法給HEVC帶來了較大的編碼性能提高,但同時(shí)也帶來了計(jì)算復(fù)雜度的增加。因此,如何降低該算法的計(jì)算復(fù)雜度將成為未來的一個(gè)研究方向。通過對(duì)這些計(jì)算范例的更具體細(xì)致的研究,將會(huì)帶來更低的計(jì)算復(fù)雜度。在幀內(nèi)編碼的情況下,ROT算法帶來了編碼時(shí)間的增加。Loeffler因式分解被普遍認(rèn)為有很好的穩(wěn)定性,同時(shí)在加法和乘法方面的計(jì)算復(fù)雜度很低。但是它沒有很好地重復(fù)利用變換過程中已生效的小尺寸DCT類型2的變換。重復(fù)利用將在軟件和硬件編碼中大大降低計(jì)算復(fù)雜度。從以上的仿真結(jié)果來看,對(duì)于DST,如果能在比特率降低和計(jì)算復(fù)雜度之間設(shè)計(jì)更合理的折中方案,則將獲得更好的編碼性能。并行計(jì)算也將是HEVC標(biāo)準(zhǔn)的重要性能。然而,目前的標(biāo)準(zhǔn)中并沒有進(jìn)行并行計(jì)算的處理。如果能在設(shè)計(jì)中采用并行計(jì)算的設(shè)計(jì),則理論上其編碼時(shí)間將會(huì)降低一半。這個(gè)重要的特性就是在解碼器端增加一個(gè)額外的變換來降低解碼計(jì)算復(fù)雜度。研究基于模式的變換和掃描方法也是降低計(jì)算復(fù)雜度的一個(gè)方向。對(duì)于DCT/DST算法,采取更高效的變換矩陣是降低其復(fù)雜度的一個(gè)性能提高研究方向。最后,考慮到變換、量化后的信號(hào)更適應(yīng)熵編碼,這也是一個(gè)間接降低比特率的重要研究方向。
本文討論了HEVC視頻標(biāo)準(zhǔn)中幾種主要的正交變換算法。首先主要研究了基于模式的方向變換MDDT、自適應(yīng)離散余弦/正弦變換(DCT/DST)、旋轉(zhuǎn)變換(ROT)、IDCT修剪和變換跳過模式(TSM)等方法。接著通過實(shí)驗(yàn)仿真測(cè)試了這些算法在比特率的降低、編碼時(shí)間的縮短、軟硬件實(shí)現(xiàn)的復(fù)雜度和視頻質(zhì)量等方面。最后,對(duì)HEVC正交變換方法方面提出了一些有待研究的重點(diǎn)和方向,以供視頻編碼研究工作者參考。
[1] HAN W J,MIN J H,KIM I K,et al.Improved video compression ef?ciency through flexible unit representation and corresponding extension of coding tools[J].IEEE Trans.Circuits Syst.Video Technol,2010,20(12):1709-1720.
[2] WIEGAND T.Joint collaborative team on video cFoding(JCT-VC)of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,JCTVC-B118.[S].[S.l.]:JCT-VC,2010.
[3] BOSSEN F,DRUGEON V,F(xiàn)RANCOIS E,et al.Video coding using a simpli?ed block structure and advanced coding techniques[J].IEEE Trans.Circuits Syst.Video Technol,2010,20(12):1667-1675.
[4] YEO C,TAN Y,LI Zhengguo.Mode-dependent fast separable klt for block-based intra coding[C]//Proc.IEEE International Symposium on Circuits and Systems(ISCAS),2011.[S.l.]:IEEE Press,2011:621-624.
[5] SAXENA A,F(xiàn)ERNANDES F C.Jointly optimal intra prediction and adaptive primary transform[EB/OL].[2011-08-08].http://wftp3.itu.int/av-arch/jctvc-site/2010_10_C_Guangzhou/JCTVC -C108.doc.
[6] FERNANDES F C A.Low complexity rotational transform[EB/OL].[2011-08-09].http://wftp3.itu.int/av - arch/jctvc - site/2010_10_C_Guangzhou/JCTVC - C096.doc.