999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

H.264整數DCT的FPGA實現

2008-04-12 00:00:00朱南坤黃士坦
現代電子技術 2008年24期

摘 要:H.264整數DCT變換算法有助于減少計算復雜度,提高編碼速度,進一步提高視頻或圖像的壓縮效率。分析H.264整數DCT變換的快速算法及其實現原理,并提出一種用來具體實現一個4×4塊的DCT變換的結構;同時給出用VHDL語言實現4×4塊DCT變換的內部模塊的源代碼和仿真波形。仿真結果表明用該算法可快速實現一個4×4塊的整數DCT變換。提出一種切實可行的用于H.264整數DCT變換的結構, 該結構可完全用硬件電路快速實現;對于用FPGA實現H.264整數DCT變換做了一次實踐性的嘗試,對深入理解H.264整數DCT變換及其算法的具體實現具有一定的實踐意義。

關鍵詞:H.264;宏塊;整數DCT;FPGA;VHDL

中圖分類號:TP391文獻標識碼:B

文章編號:1004-373X(2008)24-158-03

Implementation of Integer DCT in H.264 on FPGA

ZHU Nankun,HUANG Shitan

(Xi′an Micro-electronics Technology Institute,Xi′an,710075,China)

Abstract:The algorithm of integer transform in H.264 is good to reduce the complexities in computations and it is good to improve the speed in encoder,it can greatly improve the compress rate of videos or images from this. This article analyses the fast algorithm and principle of the integer in H.264,and privides an specific architecture which to be used to implement a 4×4 DCT transform;and gives the source codes and simulated waves in 4×4 DCT transform which implemented in VHDL.The result of simulation shows that the algorithm can fast implement a 4×4 DCT transform.The new thoughts of this article lie that it privides a practical architecture used in integer DCT transform in H.264.It can be implemented quickly in circuit through hardware, and it is a practical taste in the implemention of integer DCT transform in H.264 on FPGA.It is good to understand the integer DCT transform in H.264 deeply,it also has certain practical meanings in the specific implemention in integer DCT transform in H.264.

Keywords:H.264;Macro Block;integer DCT;FPGA;VHDL

1 引 言

新一代視頻壓縮編碼標準在對圖像進行壓縮時與以往的視頻編碼標準相同,同樣采用基于塊的變換編碼。H.264標準中使用4×4的整數DCT變換作為殘差宏塊的基本變換,這種變換的對象是經過運動補償預測或者幀內預測后的包含殘差數據的4×4塊。這類變換是基于DCT變換,但又不同于DCT。由于DCT變換是實數,量化時需對系數進行四舍五入,從而影響了運算的精度。

同時,傳統的DCT存在不匹配問題,產生參考幀的偏移,直接影響到重建圖像的質量。H.264對圖像或預測殘差采用了4×4整數離散余弦變換技術,避免以往標準中使用的通用8×8離散余弦變換、逆變換經常出現的失配問題。同時采用整數DCT變換技術,可有效地減少

計算量,同時不損失圖像的準確度。

2 H.264整數DCT變換

一維N點離散余弦變換(DCT)可以表示為:

yk=Ck∑N-1n=0xncos(2n+1)kπ2N(1)

其中,xn是輸入時域序列中的第n項;yk是輸出頻域序列中的第k項;系數Ck=1/N,k=0;Ck=2/N,k=1,2,…,N-1。

二維N×N圖像塊的DCT可以理解為先對圖像塊的每行進行一維DCT,然后對經行變換的塊每列再應用一維DCT。可以表示為:

Ymn=CmCn∑N-1i=0∑N-1j=0Xijcos(2j+1)nπ2Ncos(2i+1)mπ2N(2)

其中,Xij是圖像塊X中第i行第j列圖像或其殘差值;Ymn是變換結果矩陣Y相應頻率點上的DCT系數。可以用矩陣表示:

Y=AXAT(3)

其中,N×N變換矩陣A中的系數:

Aij=Cicos(2j+1)iπ2N(4)

H.264對4×4的圖像塊(亮度塊或Cr,Cb色度塊)進行操作,則相應的4×4 DCT變換矩陣A為:

A=12cos(0)12cos(0)12cos(0)12cos(0)

1/2cos(π/8)1/2cos(3π/8)1/2cos(5π/8)1/2cos(7π/8)

1/2cos(2π/8)1/2cos(6π/8)1/2cos(10π/8)1/2cos(14π/8)

1/2cos(3π/8)1/2cos(9π/8)1/2cos(15π/8)1/2cos(21π/8)〗

=1/21/21/21/2

1/2cos(π/8)1/2cos(3π/8)-1/2cos(3π/8)-1/2cos(π/8)

1/2-1/2-1/21/2

1/2cos(3π/8)-1/2cos(π/8)1/2cos(π/8)-1/2cos(π/8)〗(5)

設a=1/2,b=1/2cos(π/8)及c=1/2·cos(3π/8),則:

A=aaaa

bc-cb

a-a-aa

c-bb-c(6)

A中的a,b和c是實數,而圖像塊X中的元素是整數。對實數的DCT,由于在解碼端的浮點運算精度問題,會造成解碼后的數據的失配,進而引起漂移。H.264較其他圖像編碼使用了更多的預測過程,甚至內部編碼模式也依賴于空間預測。因此,H.264對預測漂移是十分敏感的。為此,H.264對4×4 DCT中的A進行了改造,采用整數DCT技術,可有效地減少計算量,同時不損失圖象的準確度。式(3)可以等效為:

Y=(CXCT)E=

1111

1d-d-1

1-1-11

d-11-d〗X111d

1d-1-1

1-d-11

1-11-d〗

a2aba2ab

abb2abb2

a2aba2ab

abb2abb2〗(7)

其中,d=c/b,符號“”表示(CXCT)結果中的每個元素乘以矩陣E中對應位置的系數值的運算。為簡化運算,取d=0.5。同時為了保持變換的正交性,對b進行修正,取b=2/5。對矩陣C中的第2行和第4行,以及矩陣CT中的第2列和第4列元素乘以2,相應地改造矩陣E為Ef,以保持式(7)成立,得到:

Y = (Cf XCTf )Ef =

1111

21-1-2

1-1-11

1-22-1〗X1211

11-1-2

1-1-12

1-21-1〗

a2ab/2a2ab/2

ab/2b2/4ab/2b2/4

a2ab/2a2ab/2

ab/2b2/4ab/2b2/4〗(8)

其中,運算“”對每個矩陣元素只進行1次乘法,同時它將被歸納到量化運算中。這樣,(Cf XCTf )中只剩下整數的加法、減法和移位(乘以2)運算。H.264將DCT中“Ef”運算的乘法融合到后面的量化過程中,實際的DCT輸出為:W=Cf XCTf。將該矩陣的乘法改造成2次一維整數DCT變換,并且每次的一維整數DCT可以采用疊形快速算法,以節省計算時間,如圖1所示。

圖1 DCT的疊形快速算法

3 H.264整數DCT變換的FPGA實現

圖2為用FPGA實現H.264整數DCT變換的框圖。以上的每個行變換單元僅處理1行數據,每個列變換單元僅處理1列數據;由于在從行變換到列變換中間經過1個矩陣轉置過程所以在給列變換單元輸入數據時,輸入的數據需要重新組合后再送給每個列變換單元。

圖2 用FPGA實現H.264整數DCT變換的框圖

數據輸入為經過運動補償預測或者幀內預測后的包含殘差數據的4×4塊。共16個數據,按順序送給每個行變換單元,每個數據用8位二進制表示,即表示輸入塊的相應像素點,每個像素點范圍為0~255;由于在進行行變換以后的輸入行單元的數據進行了8次加法(包括減法)和2次移位運算,所以經過數據組合后輸入到列變換單元的數據范圍發生了改變;所以為防止該輸入數據溢出將它定義為16位,經列變換后即為一個殘差數據的4×4塊經過整數DCT變換的結果。其輸出數據不會超過16位,故用16位定義不會溢出。因為行列變換各有4個變換單元所以處理1個殘差數據的4×4塊后需至少等待2個時鐘周期,之后讀取下一個4×4塊。行變換單元VHDL描述如下:

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_ARITH.all;

use IEEE.STD_LOGIC_SIGNED.all;

entity dct is

PORT(data0,data1,data2,data3:IN

STD_LOGIC_VECTOR(7 DOWNTO 0);

out0,out1,out2,out3:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

end dct;

architecture comp of dct is

SIGNAL temp0,temp1:STD_LOGIC_

VECTOR(15 DOWNTO 0);

SIGNAL temp2,temp3:STD_LOGIC_

VECTOR(14 DOWNTO 0);

SIGNAL temp4,temp5,temp6:STD_LOGIC_

VECTOR(8 DOWNTO 0);

BEGIN

PROCESS(temp0,temp1,temp2,temp3,data0,data1,data2,data3,temp5,temp6,temp4)

BEGIN

temp4<=(data0(7)data0)+(data3(7)

data3)-(data1(7)data1)-(data2(7)data2);

out2<=(temp4(7)temp4(7)temp4(7)

temp4(7)temp4(7)temp4(7)

temp4(7)temp4);

temp5<=(data1(7)data1)-(data2(7)

data2);

temp0<=(temp5(7)temp5(7)temp5(7)temp5(7)temp5(7)temp5(7)temp5(7)temp5);

temp6<=(data0(7)data0)-(data3(7)

data3);

temp1<=(temp6(7)temp6(7)temp6(7)temp6(7)temp6(7)temp6(7)temp6(7)temp6);

temp2<=temp0(14 DOWNTO 0);

temp3<=temp1(14 DOWNTO 0);

out1<=temp3'0'+temp0;

out3<=temp1-(temp2'0');

END PROCESS;

END comp;

仿真波形如圖3所示,該仿真時輸入數據為:1,-1,1,1。輸出為:2,-2,2,4;經驗證正確。列變換單元VHDL描述可參考行變換單元代碼。一個4×4塊的DCT變換的代碼可以直接調用行、列變換單元模塊來實現。該設計可快速實現H.264整數DCT變換。

圖3 仿真波形圖

4 結 語

為了實現H.264視頻壓縮的高壓縮率,必須進行大量的計算,而整數DCT變換計算量大,用FPGA實現可大大加快其處理速度。以上實現可用并行計算能加速整數DCT變換的處理效率。

參考文獻

[1]Wiegand T,Sullivan G J,Bjontegaard G,et al.Overview of H.264/AVC Video Coding Standard.IEEE Trans.Circuits Syst.Video Technol.,2003(13):560-576.

[2]Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification(ITU-T Rec.H.264/ISO/IEC 14 496-10 AVC.in Joint Video Team(JVT) of ISO/IEC MPEG and ITU-T VCEG,JVTG050,2003.

[3]Schafer Ralf,Wiegand Thomas,Schwarz Heiko.The Emerging H.264/AVC Standard EBU Technical Review.2003.

[4]Mathias Wien.Variable Block-Size Transforms for H.264/AVC.IEEE Trans.Circuit Syst.Video Technol.,2003,13:604-613.

[5]畢厚杰.多媒體信息的傳輸與處理.北京:人民郵電出版社,1999.

[6]朱秀昌.數字圖像處理與圖像通信.北京:北京郵電大學出版社,2002.

[7]陳傳波,金先級.數字圖像處理.北京:機械工業出版社,2004.

[8]畢厚杰.新一代視頻壓縮編碼標準H.264/AVC.北京:人民郵電出版社,2005.

[9]侯伯亨,顧新.VHDL硬件描述語言與數字邏輯電路設計.西安:西安電子科技大學出版社,1997.

[10]趙俊超.集成電路設計VHDL教程.北京:北京希望電子出版社,2002.

[11]李玉山.電子系統集成設計技術.北京:電子工業出版社,2002.

作者簡介 朱南坤 男,1979年出生,安徽合肥人,碩士。研究方向為數字圖像處理及視頻壓縮。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 特级aaaaaaaaa毛片免费视频| 国产哺乳奶水91在线播放| 日韩毛片基地| 国产爽爽视频| 久久一级电影| 成人在线亚洲| 久久精品国产国语对白| 欧美精品一二三区| 一区二区三区国产| 欧美www在线观看| 亚洲成人免费看| 国产麻豆精品手机在线观看| 一级毛片在线免费视频| 91视频99| 欧美激情综合| 国产导航在线| 国内精品一区二区在线观看| 国产特级毛片aaaaaa| 国产午夜人做人免费视频| 国产精品林美惠子在线观看| 亚亚洲乱码一二三四区| 97视频精品全国在线观看| 久久毛片网| 尤物成AV人片在线观看| 亚洲av色吊丝无码| 欧美日本在线观看| 无码啪啪精品天堂浪潮av| 国产91全国探花系列在线播放| 欧美啪啪视频免码| 超碰91免费人妻| 二级特黄绝大片免费视频大片| 亚洲精品另类| 亚洲精品无码AⅤ片青青在线观看| 欧美区在线播放| 一区二区三区国产精品视频| 99免费视频观看| 一级一级特黄女人精品毛片| 亚洲中文无码av永久伊人| 久久影院一区二区h| 亚洲资源站av无码网址| 一区二区日韩国产精久久| 不卡午夜视频| 亚洲成人网在线观看| 亚洲欧美在线综合一区二区三区 | 在线视频亚洲色图| 自慰网址在线观看| 五月天久久综合| 午夜国产大片免费观看| 国产在线视频导航| 午夜视频日本| 国产成人综合日韩精品无码不卡| 区国产精品搜索视频| 亚洲无码四虎黄色网站| 伊人激情综合| 免费观看精品视频999| 一级毛片在线免费看| 高清码无在线看| 欧美另类精品一区二区三区| 精品欧美一区二区三区在线| 亚洲天堂日韩在线| 久久免费精品琪琪| 国产99久久亚洲综合精品西瓜tv| 久久国产拍爱| 毛片三级在线观看| 国产精品久线在线观看| 五月六月伊人狠狠丁香网| 亚洲男人的天堂久久精品| 亚洲日韩第九十九页| 亚洲精品福利视频| 女人18毛片一级毛片在线 | 国产极品美女在线| 91色在线视频| 成人福利在线观看| 亚洲成人一区二区| 免费在线色| 亚洲天堂视频在线播放| 国产毛片一区| 久久久国产精品免费视频| 亚洲一区二区无码视频| 国产在线麻豆波多野结衣| 三级毛片在线播放| 91青青草视频在线观看的|