摘 要:數(shù)字視頻技術(shù)在通信和廣播領(lǐng)域獲得了日益廣泛的應(yīng)用,視頻信息和多媒體信息在網(wǎng)絡(luò)中的處理和傳輸成為當(dāng)前我國(guó)信息化中的熱點(diǎn)技術(shù)。運(yùn)動(dòng)圖像專家組和視頻編碼專家組給出一種更好的標(biāo)準(zhǔn),確定為MPEG-4標(biāo)準(zhǔn)的第十部分,即H.264/AVC。簡(jiǎn)述H.264的研究意義及DCT的原理。為了減少運(yùn)算量,分析H.264中如何對(duì)宏塊的整數(shù)變換,詳述H.264的編碼變換的方法,給出整數(shù)變換方法與傳統(tǒng)的DCT的區(qū)別和聯(lián)系,并給出H.264的整數(shù)變換方法的快速算法即蝶形算法,這與傳統(tǒng)的DCT變換是不同的。
關(guān)鍵詞:DCT;H.264;編碼;蝶形算法;視頻信息
中圖分類(lèi)號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):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作為新一代的視頻壓縮標(biāo)準(zhǔn),是由ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(運(yùn)動(dòng)圖像編碼專家組)成立的聯(lián)合視頻小組(JVT:joint video team)共同開(kāi)發(fā)的[1]。H.264標(biāo)準(zhǔn)采用統(tǒng)一的VLC符號(hào)編碼、1/4像素精度的運(yùn)動(dòng)估計(jì)、多模式運(yùn)動(dòng)估計(jì)、基于4×4塊的整數(shù)變換、分層編碼語(yǔ)法等。由于采用了整數(shù)變換,計(jì)算不會(huì)出現(xiàn)浮點(diǎn)數(shù),而且精度高等。這些措施使得H.264算法具有很高的編碼效率。下面主要分析H.264中的整數(shù)變換[2]。
1 H.264中宏塊的變換與量化[3]
H.264與先前的視頻壓縮標(biāo)準(zhǔn)相似,都是對(duì)殘差數(shù)據(jù)采用基于塊的變換編碼。但變換是整數(shù)操作而不是實(shí)數(shù)運(yùn)算,其過(guò)程和DCT基本相似。變換的單位是4×4塊[4],而不是以往常用的8×8塊。因?yàn)橛糜谧儞Q塊的尺寸縮小,運(yùn)動(dòng)物體的劃分更精確,這樣,不但變換計(jì)算量比較小,而且在運(yùn)動(dòng)物體邊緣處的銜接誤差也大為減小。為了使小尺寸塊的變換方式對(duì)圖像中較大面積的平滑區(qū)域不產(chǎn)生塊之間的灰度差異,可對(duì)幀內(nèi)宏塊亮度數(shù)據(jù)的16個(gè)4×4塊的DC系數(shù)(每個(gè)小塊1個(gè),共16個(gè))進(jìn)行第二次4×4塊的變換;對(duì)色度數(shù)據(jù)的4個(gè)4×4塊的DC系數(shù)(每個(gè)小塊1個(gè),共4個(gè))進(jìn)行2×2塊的變換[5]。
這種方法的優(yōu)點(diǎn)在于:在編碼器中和解碼器中允許精度相同的變換和反變換,便于使用簡(jiǎn)單的定點(diǎn)運(yùn)算方式。變換編碼可以去除原始數(shù)據(jù)的空間冗余,使圖像能量集中在小部分低頻系數(shù)上。這樣不僅可以提高壓縮比還可以增強(qiáng)其抗干擾性能。
在要編碼的數(shù)據(jù)宏塊中,亮度與色度的DC系數(shù)均采用哈達(dá)瑪變換,而殘差數(shù)據(jù)4×4宏塊使用基于DCT的變換。宏塊中的數(shù)據(jù)按照?qǐng)D1的順序進(jìn)行傳輸。
圖1 在一個(gè)宏塊內(nèi)對(duì)殘差塊的掃描順序
首先輸出每個(gè)宏塊包含4×4亮度塊的DC變換系數(shù)。然后亮度殘差塊0~15按照所示順序進(jìn)行傳輸,其中,DC系數(shù)不用傳輸。塊16和17分別被傳輸后,色度殘差塊18到25被傳輸[6,7]。
H.264中的變換是基于DCT的,它是一個(gè)整數(shù)變換,因而其可以實(shí)現(xiàn)編碼端和解碼端反變換之間的零匹配,并且變換的核心部分可以僅使用加法和移位操作。
2 H.264中4×4整數(shù)變換的處理
下面是傳統(tǒng)的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)。這個(gè)矩陣乘法可以變換成下面形式:
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是一個(gè)二維變換核;E是尺度因子矩陣;符號(hào)表示CXCT中的每個(gè)元素與矩陣E中相同位置的尺度因子相乘。常數(shù)a和b與以前一樣,d為c/b。為了避免在CXCT核心運(yùn)算中出現(xiàn)非整數(shù)的乘法,做了如下修正:
矩陣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)
這個(gè)變換是4×4DCT變換的近似,由于因子d和b的變化, 新變換的結(jié)果和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)
此時(shí),首先用矩陣E中的適當(dāng)權(quán)重系數(shù)與Y中的每個(gè)系數(shù)相乘,并進(jìn)行預(yù)尺度變換。
3 4×4整數(shù)變換和DCT變換的結(jié)果比較
假設(shè)輸入矩陣為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和整數(shù)變換的差別是:
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)是傳統(tǒng)的DCT變換得到的結(jié)果;式(8)是采用整數(shù)變換后的結(jié)果,可見(jiàn)兩式具有相同的壓縮效果,由于b,d系數(shù)的不同,輸出系數(shù)略有不同,但這是可以接受的。式(9)是DCT和整數(shù)變換的差別。通過(guò)采用整數(shù)變換,有效地減少計(jì)算量,同時(shí)不損失圖像準(zhǔn)確度。H.264將DCT中 “Ef”運(yùn)算的乘法合并到量化過(guò)程中。
將式(5)的矩陣乘法運(yùn)算改造成2次一維整數(shù)DCT變換,例如先對(duì)圖像或殘差塊每行進(jìn)行一維整數(shù)DCT,然后對(duì)經(jīng)行變換的塊的每列再應(yīng)用一維整數(shù)DCT。每次一維整數(shù)DCT可以采用蝶形快速算法。在反變換過(guò)程中,也使用了蝶形算法來(lái)簡(jiǎn)化運(yùn)算。如圖2所示[10]。其中r=1,表示Hadamard變換,r=2表示整數(shù)DCT變換。
圖2 蝶形算法的示意圖
通過(guò)以上的分析,變換CXCT的主要部分由加減法和移位組成的整數(shù)運(yùn)算,它不丟失解碼精度,實(shí)現(xiàn)編碼端和解碼端反變換之間的零匹配。
4 結(jié) 語(yǔ)
H.264/AVC作為新一代視頻壓縮標(biāo)準(zhǔn),具有超高壓縮率。在數(shù)據(jù)宏塊的變換過(guò)程中,采用了與傳統(tǒng)DCT變換不同方法即整數(shù)變換法,可以使計(jì)算僅使用加法、減法和移位操作實(shí)現(xiàn),減少了計(jì)算量,不丟失解碼精度。矩陣乘法運(yùn)算時(shí)采用蝶形算法,加快了運(yùn)算速度,使H.264/AVC具有很好的優(yōu)越性。
參考文獻(xiàn)
[1]Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification[S].
[2]李清揚(yáng).基于FPGA的H_264變換量化去方塊濾波研究及設(shè)計(jì)[D].成都:電子科技大學(xué),2007.
[3]H.264標(biāo)準(zhǔn).H.264/MPEG-4 Part10 White Paper[S].
[4]朱松超.H.264編碼算法的研究和基于FPGA的設(shè)計(jì)[D].西安:西北工業(yè)大學(xué),2006.
[5]H.264標(biāo)準(zhǔn)1.Overview of the H.264_AVC Video Coding Standard[S].
[6]H.264標(biāo)準(zhǔn)2.JVT-G050[S].
[7]Iain E G Richardson.H.264 And MPEG-4 Video Compression.
[8]劉海鷹,張兆揚(yáng),沈禮權(quán).基于FPGA的H.264變換量化的高性能的硬件實(shí)現(xiàn)[J].中國(guó)圖像圖形學(xué)報(bào),2006,11(11):1 636-1 639.
[9]Lain E G,Richardson.H.264和MPEG4視頻壓縮[M].歐陽(yáng)合,韓軍,譯.長(zhǎng)沙:國(guó)防科技大學(xué)出版社,2004.
[10]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC[M].北京:人民郵電出版社,2005.
[11]候正信.數(shù)字信號(hào)處理基礎(chǔ)[M].北京:電子工業(yè)出版社,2003.
作者簡(jiǎn)介 杜路泉 男,1984年出生,西南交通大學(xué)理學(xué)院在讀碩士研究生。主要從事視頻壓縮方面的研究。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文