版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
精品文檔-下載后可編輯基于PC機的MPEG-4編碼原理研究及實現(xiàn)-基礎電子0引言
隨著多媒體業(yè)務的發(fā)展,日益增長的多媒體通信量和有限的通信帶寬之間的矛盾日益突出。為了減小傳輸?shù)臄?shù)據量,國際電信聯(lián)盟和MPEG標準組織都制定過各自的視頻壓縮標準。其中,MPEG-4標準以其高壓縮率,支持低碼率傳輸和基于對象編碼等優(yōu)點,而在傳真、視頻點播、電視會議、醫(yī)用圖像傳輸?shù)阮I域廣泛應用。
MPEG-4繼承了MPEG-2中檔次和等級概念,共有視頻檔次、音頻檔次、圖形檔次和場景描述檔次共四類。檔次是針對某一特定的應用而采用的編碼工具,它是MPEG-4提供的工具集中一個子集,不同的檔次就是不同的子集。每一個檔次分為一個或多個等級,等級則定義了比特流參數(shù)的規(guī)格,實際上是限定了解碼一個編碼序列所應具備的性能。
MPEG-4的獨特之處在于支持基于內容的編解碼,為此引入了視聽對象AVO(Audio/VideoObject)的概念。AVO可以是一幅圖像中一個小提琴或琴聲等,每個AVO可獨立編碼,但相互之間又存在著時空結構關系,因此編碼時,必須傳送編碼對象的組成結構信息體“場景描述”,以表示場景中各AVO之間的時空結構關系。解碼時根據此“場景描述”對圖像和聲音的有關內容進行編輯和操作。視聽對象還可以是一個矩形幀,從而使MPEG-4兼容原來的MPEG標準。視聽對象中的視頻對象VO通常由3類信息來描述,即運動、形狀和紋理信息。
1編碼原理
MPEG-4編碼器主要由形狀編碼、紋理編碼和運動編碼三部分組成。幀格式分為I-VoP,P-VOP和B-VOP。這里只討論I-VOP和P-VOP。I-VOP采用紋理編碼來消除一幀圖像數(shù)據間的空間冗余度;P-VOP是參考前一幀圖像,并采用兩種參數(shù)來編碼。一種是當前要編碼的圖像與參考圖像之間的差值;另一種是運動矢量。編碼器的具體結構模塊如圖1所示。
1.1形狀編碼
形狀編碼主要用于記錄從圖像序列中提取VOP的形狀信息,該信息分為二值形狀信息和灰度形狀信息。二值形狀信息用0和1兩個值表示VOP的形狀;灰度形狀信息用0~255表示VOP區(qū)域的不同透明度。在編碼時,當提取的VOP具有非矩形形狀時,需要對其進行邊界擴展,使其矩形邊界都是16的倍數(shù),同時保證擴展后的面積,然后進行形狀編碼;當提取的VOP為矩形時(矩形的長度和寬度都是16的倍數(shù)),形狀編碼就會被屏蔽。
1.2紋理編碼
紋理編碼主要對I-VOP內的圖像像素或P-VOP內的差值像素進行編碼,包括DCT、量化、DC和AC預測、熵編碼等過程,地去除當前VOP內各像素之間的空間冗余度。
視頻的幀圖像采用I-VOP格式編碼,其余的幀采用I-VOP,還是P-VOP格式則受兩個因素制約。其用戶會按照IPPPIPPPI的方式設置當前幀所采用的格式;二是已經人為地設置了當前幀為P-VOP,通過運動估計計算mad_P的值,如果mad_P滿足下列兩個條件之一,則當前幀就采用P-VOP編碼格式,否則采用I-VOP編碼格式。
條件1:madP50/3;
條件2:madP50,并且IntraMBRatio0.4。其中,IntraMBRatio為當前幀中采用MBM_INTRA預測模式的宏塊占總宏塊的比重。
紋理編碼中的DCT和量化模塊比較簡單,這里略過,重點介紹剩下的紋理編碼模塊。
1.2.1DC和AC預測
8×8塊經過DCT和量化后,系數(shù)排列呈現(xiàn)以下的規(guī)律,即非零系數(shù)集中在左上角,大部分的0系數(shù)集中在偏離DC系數(shù)向右和向下的位置上。特別是DC系數(shù)、行和列AC系數(shù),數(shù)值非零且較大,如果能用較小的數(shù)值代替它們,會減少編碼后的位流數(shù),于是產生DC和AC預測。
在MPEG-4中,通常把一個宏塊分為6個8×8塊進行DC和AC預測。
首先對8×8塊進行DC預測。如圖2所示,X表示當前的8×8塊;A,B和C表示X的相鄰8×8塊,其位置分別位于X的左邊、左上角和上邊。對X進行DC預測就是采用相鄰塊的DC系數(shù)值預測X的DC系數(shù)值,關鍵是選擇哪個相鄰塊的DC系數(shù)。
程序采用了以下策略選取相鄰塊。定義塊A,B,C,X的DC系數(shù)值分別為DC_A,DC_B,DC_C,DC_X。
如果DC_A與DC_B的差小于DC_B與DC_C的差,則DC_A與DC_B在數(shù)值上比較接近,即在垂直方向上的數(shù)值比水平方向上更接近,所以采用DC_C來預測DC_X;反之,在水平方向的數(shù)值比較接近,即采用DC_A來預測DC_X。
將當前塊的DC系數(shù)與用來預測的相鄰塊的DC系數(shù),經過特定處理后做差,其差存放到當前塊的DC位置上,同時記錄此DC系數(shù)的預測方向。
AC預測主要是針對8×8塊的行或者列AC系數(shù),其預測方向取決于當前塊DC系數(shù)的預測方向。如圖2所示,如果之前DC預測為水平預測,則當前塊X的列AC系數(shù)采用A塊的列AC系數(shù)預測,同時將X的列7個AC系數(shù)各自取后相加到變量S1(S1的初始值為0)上。將當前塊列AC系數(shù)與用來預測的相鄰塊A的列AC系數(shù)做差,其7個差值存放到當前塊的列AC系數(shù)的位置上,同時將7個差值各自取后相加到變量S2(S2的初始值為0)上。如果之前的DC預測為垂直預測,則只進行當前塊X的行AC系數(shù)預測,其預測步驟同列AC系數(shù)的預測一樣。
有時AC預測會產生較大的預測誤差,并沒有達到節(jié)省位流的目的,因此必須判斷AC預測的有效性。在單個8×8小塊的AC預測中,用S1記錄了此小塊的行或列AC系數(shù)的之和,用S2記錄了行或列預測后7個差值的和。以一個宏塊的6個8×8小塊為單位,將各個小塊的S1與S2之差相加,得到值S。如果S非零,則此宏塊進行AC預測,其標志ACpred_flag置1,否則此宏塊不進行AC預測,ACpred_flag置0。
1.2.2之字型掃描
DC和AC預測之后,對8×8塊的系數(shù)進行之字形掃描,共有Zigzag,Zigzag_v(交替垂直掃描)和Zigzag_h(交替水平掃描)三種掃描方式。采用何種掃描方式由三個要素決定,即幀內還是幀間預測,AC預測標志ACpred_flag的值,DC系數(shù)的預測方向。
對于幀內預測的宏塊,如果AC預測標志ACpredflag為0,則此宏塊中的6個8×8塊都使用Zigzag掃描;如果AC預測標志為1,則此宏塊中的6個8×8塊將根據各自的DC預測方向決定AC系數(shù)的掃描方向。如果DC預測為水平預測,則此8×8塊使用Zigzag_v掃描方式掃描系數(shù),否則使用Zigzag_h掃描方式。
對于幀間預測的宏塊,其每個8×8塊統(tǒng)一采用Zigzag掃描方式掃描系數(shù)。
8×8的系數(shù)矩陣經過之字型掃描后,大部分非零系數(shù)集中在一個一維數(shù)組的前部,大部分零系數(shù)集中在此一維數(shù)組的后面,根據此特點便產生了游程編碼。
1.2.3游程編碼和熵編碼
所謂游程編碼就是對8×8系數(shù)矩陣的AC系數(shù)進行特定的處理,使其成為個數(shù)更少的三維矢量(Last,Run,Level)。其中,Level代表非0系數(shù)的大小。Run代表Level前面連續(xù)0的個數(shù)。Last代表終止標志:其值為0時,表示Level后還有不為0的系數(shù);其值為1時表示該系數(shù)是不為0的數(shù);余下的系數(shù)全為0。游程編碼生成三維矢量,壓縮了數(shù)據量,然后根據Last,Run和Level的不同組合作為索引,找到對應Huffman編碼表中的碼字,生成碼流。
1.3運動編碼
運動編碼對當前P-VOP和參考VOP進行運動估計與補償,減小幀間的時間相關性,實現(xiàn)壓縮。
通常采用塊匹配法進行運動估計。塊匹配法就是針對當前幀中某一特定大小的圖像塊,從參考幀的一定區(qū)域中找出該圖像塊誤差和(SumofAbsoluteDifference,SAD)的匹配塊,利用此匹配塊來預測當前塊。圖像塊的誤差和指兩個大小相同的圖像塊的中像素差的之和。SAD16×16函數(shù)實現(xiàn)當前宏塊和參考宏塊間的誤差和;SAD8×8函數(shù)實現(xiàn)當前8×8塊與參考8×8塊間的誤差和。
確定了塊匹配準則后,就要進行匹配點的搜索,MPEG-4校驗模型采用鉆石搜索法(DiamondSearch,DS)。鉆石搜索法是一種利用搜索模板的形狀和大小,對運動估計算法速度及精度產生重要影響的快速搜索法。選用了兩種形狀和大小都不相同的搜索模板:一種是大鉆石搜索模板(LargeDiamondSearchPattern,LDSP),它有9個候選位置:(0,0),(0,2),(1,1),(2,0),(1,-1),(0,-2),(-1,-1),(-2,0)和(-1,1)。具體模板如圖3所示。一種是小鉆石搜索模板(SmallDiamondSearchPattern,SDSP),它包含5個候選位置:(0,0),(0,1),(1,0),(0,-1)和(-1,0)。具體模板如圖4所示。
鉆石搜索過程如下:以當前幀的當前宏塊的左上角起點坐標為大模板的原點(0,0),在參考幀的搜索范圍內,分別以大模板的(0,0),(0,2),(1,1),(2,0),(1,-1),(0,-2),(-1,-1),(-2,0)和(-1,1)像素點作為宏塊的左上角起點,將該宏塊和當前幀的宏塊做SAD16×16運算,選擇SAD16×16值的左上角起點作為暫時的匹配點,此點與當前宏塊左上角起點之間的位移就是運動矢量。判斷此運動矢量是否適合特定的規(guī)則,如果不適合,則進行新一輪的大鉆石模板搜索,直到找到適合條件的運動矢量。然后再以大鉆石模板搜索的匹配點為中心點(0,0),用小鉆石搜索模板進行(0,1),(1,0),(0,-1)和(-1,0)四個參考點的搜索,搜索到的SAD16×16值點就是終的匹配點,匹配點與當前宏塊的左上角起點之間的位移就是終的運動矢量。
以上是基于宏塊的全像素搜索,還可以選擇是否進行基于8×8塊的全像素搜索。利用已經得到的基于宏塊的運動矢量,找到基于宏塊的匹配點。此匹配點為中心(0,0),其他匹配點為(-1,-1),(0,-1),(1,-1),(-1,0),(1,0),(-1,1),(0,1),(1,1),分別以這9個匹配點作為8×8像素塊的左上角起點,將該8×8塊和當前幀的8×8塊做差值和的運算,選擇SAD8×8值的左上角起點作為匹配點,以找到運動矢量,得到宏塊內每個8×8亮度塊的運動矢量和SAD8×8值。將4個SAD8×8的和與SAD16×16做比較,將較小值按照一定的規(guī)則處理,從而判斷當前宏塊的預測模式為幀內或幀間預測。
如果采用幀間預測,進一步采用半像素搜索。首先對整個參考幀進行雙線性差值,則參考幀的面積變?yōu)樵瓉淼?倍,然后在特定的搜索范圍內搜索出更的運動矢量,根據參考圖像的亮度信息、色度信息和運動矢量做運動補償。
如果采用幀內預測,不再對當前宏塊進行任何運動估計,相應運動補償后的參考宏塊數(shù)值為0。
用當前幀減去運動補償后參考圖像得到差值,將差值數(shù)據進行紋理編碼;對每個宏塊的運動矢量進行預測并求出差分值,對差分值進行位流轉換并輸出。
2編碼器的實現(xiàn)和測試
根據圖1并結合MPEG-4編碼器各個模塊的實現(xiàn)原理,進行編碼器主函數(shù)的編寫和調試。初步確定編碼器的主函數(shù)應包括以下三部分:
初始化部分由于參考代碼中存在RGB到YUV的圖像格式轉換函數(shù)(本文未介紹),則應開辟相應的存儲BMP和YUV圖像的空間;還要開辟空間存放編碼器生成的壓縮文件;必須設置編碼器的編碼參數(shù)。
編碼處理部分此部分是通過循環(huán)編碼各幀圖像來實現(xiàn)的,讀入一幀圖像后,判斷是采用I幀還是P幀,然后輸出VOP頭信息,進行當前VOP的編碼并輸出位流信息到緩沖器中,利用fwrite函數(shù)形成磁盤文件。
釋放資源前面兩個階段開辟的內存空間必須釋放掉,整個視頻的編碼過程結束。
結合參考的編碼主函數(shù),調試并運行編碼器,生成di文件,相應地調試出解碼器。逐一更改編碼器的量化參數(shù)QP、幀率、輸出碼率和I幀間隔參數(shù),測試出它們對編碼效果的影響,如量化參數(shù)QP、幀率和I幀間隔參數(shù)與壓縮比成正比,輸出碼率與壓縮比成反比。經過綜合測試,在保證解碼圖像質量的前提下,當QP為8,幀率為30f/s,輸出碼率為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)員工離職與退休手續(xù)
- 文化娛樂行業(yè)設施安全管理規(guī)范
- 電力系統(tǒng)維護與檢修規(guī)范(標準版)
- 城市交通管理處罰制度
- 城市道路施工檔案管理制度
- 采購管理制度
- 辦公室網絡資源使用規(guī)范制度
- 養(yǎng)老院員工培訓及考核制度
- 2026年雄安科技產業(yè)園開發(fā)管理有限公司招聘備考題庫帶答案詳解
- 2026年永仁縣教育系統(tǒng)公開遴選校醫(yī)的備考題庫及答案詳解參考
- 2026年度醫(yī)保制度考試真題卷及答案
- 2026年1月浙江省高考(首考)英語試題(含答案)+聽力音頻+聽力材料
- 2026年貨物運輸合同標準模板
- 廣西壯族自治區(qū)南寧市2025-2026學年七年級上學期期末語文綜合試題
- 2024VADOD臨床實踐指南:耳鳴的管理解讀課件
- 2026年湖南鐵路科技職業(yè)技術學院單招職業(yè)適應性測試題庫及參考答案詳解一套
- 第一單元寫作:考慮目的和對象 教學課件
- (人教A版)高二數(shù)學下學期期末考點復習訓練專題05 導數(shù)的計算與復合函數(shù)導數(shù)的計算(重難點突破+課時訓練)(原卷版)
- 開放大學(電大)《農村社會學》期末試題
- 2025年70歲老人考駕照三力測試題及答案
- 2023-2024學年六年級上學期南沙區(qū)數(shù)學期末考試試題(含答案)
評論
0/150
提交評論