摘 要:數字視頻技術在通信和廣播領域獲得了日益廣泛的應用,視頻信息和多媒體信息在網絡中的處理和傳輸成為當前我國信息化中的熱點技術。運動圖像專家組和視頻編碼專家組給出一種更好的標準,確定為MPEG-4標準的第十部分,即H.264/AVC。簡述H.264的研究意義及DCT的原理。為了減少運算量,分析H.264中如何對宏塊的整數變換,詳述H.264的編碼變換的方法,給出整數變換方法與傳統的DCT的區別和聯系,并給出H.264的整數變換方法的快速算法即蝶形算法,這與傳統的DCT變換是不同的。
關鍵詞:DCT;H.264;編碼;蝶形算法;視頻信息
中圖分類號:TP391文獻標識碼:B文章編號:1004373X(2008)2013103
Comparison between Integer Transform and DCT in H.264/AVC
DU Luquan,WANG Zeyong,WANG Li,GAO Xiaorong
(College of Sciences,Southwest Jiaotong University,Chendu,610031,China)
Abstract:Digital video is widely applied in communications and broadcasting.Video and media information dealt with in internet is hotspot in China.MPEG and VCEG give a better standard,which is called H.264/AVC.In the article,the purpose of research on H.264 and the theory of DCT are explained.To reduce calculation,integer transform of macro block in H.264 is analysed.Coding ways in H.264,and difference between integer transform and DCT are expatiated.The fast way of integer transform called program of butterfly is shown.This is different from traditional DCT.
Keywords:DCT;H.264;coding;program of butterfly;video information
H.264作為新一代的視頻壓縮標準,是由ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(運動圖像編碼專家組)成立的聯合視頻小組(JVT:joint video team)共同開發的[1]。H.264標準采用統一的VLC符號編碼、1/4像素精度的運動估計、多模式運動估計、基于4×4塊的整數變換、分層編碼語法等。由于采用了整數變換,計算不會出現浮點數,而且精度高等。這些措施使得H.264算法具有很高的編碼效率。下面主要分析H.264中的整數變換[2]。
1 H.264中宏塊的變換與量化[3]
H.264與先前的視頻壓縮標準相似,都是對殘差數據采用基于塊的變換編碼。但變換是整數操作而不是實數運算,其過程和DCT基本相似。變換的單位是4×4塊[4],而不是以往常用的8×8塊。因為用于變換塊的尺寸縮小,運動物體的劃分更精確,這樣,不但變換計算量比較小,而且在運動物體邊緣處的銜接誤差也大為減小。為了使小尺寸塊的變換方式對圖像中較大面積的平滑區域不產生塊之間的灰度差異,可對幀內宏塊亮度數據的16個4×4塊的DC系數(每個小塊1個,共16個)進行第二次4×4塊的變換;對色度數據的4個4×4塊的DC系數(每個小塊1個,共4個)進行2×2塊的變換[5]。
這種方法的優點在于:在編碼器中和解碼器中允許精度相同的變換和反變換,便于使用簡單的定點運算方式。變換編碼可以去除原始數據的空間冗余,使圖像能量集中在小部分低頻系數上。這樣不僅可以提高壓縮比還可以增強其抗干擾性能。
在要編碼的數據宏塊中,亮度與色度的DC系數均采用哈達瑪變換,而殘差數據4×4宏塊使用基于DCT的變換。宏塊中的數據按照圖1的順序進行傳輸。
圖1 在一個宏塊內對殘差塊的掃描順序
首先輸出每個宏塊包含4×4亮度塊的DC變換系數。然后亮度殘差塊0~15按照所示順序進行傳輸,其中,DC系數不用傳輸。塊16和17分別被傳輸后,色度殘差塊18到25被傳輸[6,7]。
H.264中的變換是基于DCT的,它是一個整數變換,因而其可以實現編碼端和解碼端反變換之間的零匹配,并且變換的核心部分可以僅使用加法和移位操作。
2 H.264中4×4整數變換的處理
下面是傳統的DCT 變換[10]。
正向變換DCT:
F(μ,ν)=2N∑N-1x=0∑N-1y=0f(x,y)cos(2x+1)μπ2Ncos(2y+1)νπ2N(1)
逆向變換DCT:
f(x,y)=2N∑N-1μ=0∑N-1ν=0F(μ,ν)cos(2x+1)μπ2Ncos(2y+1)νπ2N(2)
其中:x,y=0,1,…,N-1;μ,ν=0,1,…,N-1。
下面是矩陣形式[8,9]:
Y=AXAT=aaaa
bc-c-b
a-a-aa
c-bb-c\\abac
ac-a-b
a-c-ab
a-ba-c(3)
其中:a=12,b=12cos(π8),c=12cos(3π8)。這個矩陣乘法可以變換成下面形式:
Y=(CXCT)E=1111
1d-d-1
1-1-11
d-11-d\\111d
1d-1-1
1-d-11
1-11-da2aba2ab
abb2abb2
a2aba2ab
abb2abb2(4)
這里CXCT是一個二維變換核;E是尺度因子矩陣;符號表示CXCT中的每個元素與矩陣E中相同位置的尺度因子相乘。常數a和b與以前一樣,d為c/b。為了避免在CXCT核心運算中出現非整數的乘法,做了如下修正:
矩陣C的第2,4 行與CT的第2,4列分別乘2;a,b,c的值修改如下:
a=1/2,b=25,d=1/2。
最后正向變換如下:
Y=CfXCTfEf=1111
21-1-2
1-1-11
1-22-1X1211
11-1-2
1-1-12
1-21-1a2ab/2a2ab/2
ab/2b2/2ab/2b2/4
a2ab/2a2ab/2
ab/2b2/4ab/2b2/4(5)
這個變換是4×4DCT變換的近似,由于因子d和b的變化, 新變換的結果和4×4DCT變換不一樣。
反變換如下等式:
Y=CTf(YEi)Ci=1111/2
11/2-1-1
1-1/2-11
1-11-1/2.Xa2aba2ab
abb2abb2
a2aba2ab
abb2abb21111
11/2-1/2-1
1-1-11
1/2-11-1/2(6)
此時,首先用矩陣E中的適當權重系數與Y中的每個系數相乘,并進行預尺度變換。
3 4×4整數變換和DCT變換的結果比較
假設輸入矩陣為X:
1723149
9876
1530227
18501005
則DCT輸出為:
Y=AXAT=94.000 0-12.084 1-31.000 021.782 5
-30.124 6-16.889 156.321 5-16.045 9
42.000 0-21.705 5-16.000 024.685 4
4.360 1-3.045 911.848 6-9.110 9(7)
近似變換輸出:
Y′=(CXCT)Ef=94.000 0-13.596 6-31.000 020.869 2
-30.355 2-15.500 055.335 0-16.500 0
42.000 0-23.398 8-16.000 023.082 6
2.213 4-3.500 015.810 0-10.500 0(8)
DCT和整數變換的差別是:
Y-Y′=01.512 500.913 3
0.230 6-1.389 10.986 50.454 1
01.693 301.602 8
2.146 70.454 1-3.961 41.389 1(9)
式(7)是傳統的DCT變換得到的結果;式(8)是采用整數變換后的結果,可見兩式具有相同的壓縮效果,由于b,d系數的不同,輸出系數略有不同,但這是可以接受的。式(9)是DCT和整數變換的差別。通過采用整數變換,有效地減少計算量,同時不損失圖像準確度。H.264將DCT中 “Ef”運算的乘法合并到量化過程中。
將式(5)的矩陣乘法運算改造成2次一維整數DCT變換,例如先對圖像或殘差塊每行進行一維整數DCT,然后對經行變換的塊的每列再應用一維整數DCT。每次一維整數DCT可以采用蝶形快速算法。在反變換過程中,也使用了蝶形算法來簡化運算。如圖2所示[10]。其中r=1,表示Hadamard變換,r=2表示整數DCT變換。
圖2 蝶形算法的示意圖
通過以上的分析,變換CXCT的主要部分由加減法和移位組成的整數運算,它不丟失解碼精度,實現編碼端和解碼端反變換之間的零匹配。
4 結 語
H.264/AVC作為新一代視頻壓縮標準,具有超高壓縮率。在數據宏塊的變換過程中,采用了與傳統DCT變換不同方法即整數變換法,可以使計算僅使用加法、減法和移位操作實現,減少了計算量,不丟失解碼精度。矩陣乘法運算時采用蝶形算法,加快了運算速度,使H.264/AVC具有很好的優越性。
參考文獻
[1]Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification[S].
[2]李清揚.基于FPGA的H_264變換量化去方塊濾波研究及設計[D].成都:電子科技大學,2007.
[3]H.264標準.H.264/MPEG-4 Part10 White Paper[S].
[4]朱松超.H.264編碼算法的研究和基于FPGA的設計[D].西安:西北工業大學,2006.
[5]H.264標準1.Overview of the H.264_AVC Video Coding Standard[S].
[6]H.264標準2.JVT-G050[S].
[7]Iain E G Richardson.H.264 And MPEG-4 Video Compression.
[8]劉海鷹,張兆揚,沈禮權.基于FPGA的H.264變換量化的高性能的硬件實現[J].中國圖像圖形學報,2006,11(11):1 636-1 639.
[9]Lain E G,Richardson.H.264和MPEG4視頻壓縮[M].歐陽合,韓軍,譯.長沙:國防科技大學出版社,2004.
[10]畢厚杰.新一代視頻壓縮編碼標準H.264/AVC[M].北京:人民郵電出版社,2005.
[11]候正信.數字信號處理基礎[M].北京:電子工業出版社,2003.
作者簡介 杜路泉 男,1984年出生,西南交通大學理學院在讀碩士研究生。主要從事視頻壓縮方面的研究。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文