H.264編碼器中亞像素運動(dòng)估計的硬件實(shí)現

發(fā)布時(shí)間:2009-11-30 14:54    發(fā)布者:bakedham
關(guān)鍵詞: 編碼器 , H.264 , 亞像素
作者:同濟大學(xué)超大規模集成電路研究所 鄭巨定 周開(kāi)倫 林濤    來(lái)源:電子設計應用2009年第11期

引言


運動(dòng)估計是視頻壓縮的關(guān)鍵,能進(jìn)一步減小圖像的冗余度,提高編碼壓縮效率。運動(dòng)估計就是在幀間預測時(shí)設法找到當前幀的像素(或圖像塊)是從上一幀圖像的什么位置移動(dòng)過(guò)來(lái)的,以該位置上的像素(或圖像塊)作為預測依據,以此提高預測的準確性。由于H.264中的運動(dòng)估計采用了一系列新技術(shù),如七種塊尺寸(將一個(gè)宏塊分割成16×16、16×8、8×16、8×8、8×4、4×8、4×4七種類(lèi)型的子塊進(jìn)行運動(dòng)估計)、1/4像素精度運動(dòng)補償技術(shù)和多參考幀技術(shù)等,在使壓縮效率至少提高兩倍的同時(shí),計算量也大大增加。實(shí)驗結果表明,運動(dòng)估計占H.264編碼器的60%~80%的時(shí)間。H.264中的運動(dòng)估計由整數運動(dòng)估計和分數運動(dòng)估計兩部分組成。由于不論是自然視頻圖像序列或是合成視頻圖像序列,實(shí)際對象的運動(dòng)精度都是任意小的,所以引入分數運動(dòng)估計能非常準確地描述對象的運動(dòng)軌跡,能更進(jìn)一步去除視頻圖像序列的時(shí)間冗余,其精度達到了1/8像素精度。分像素的運動(dòng)矢量如圖1所示。


圖1 分像素運動(dòng)矢量

一般在實(shí)際應用中,運動(dòng)估計普遍采用分級搜索算法:首先在搜索區內找到最佳整像素運動(dòng)矢量,再在整像素最佳匹配點(diǎn)下尋找最佳1/2匹配點(diǎn),得到半像素精度的運動(dòng)矢量,接著(zhù)在該半像素精度最佳匹配點(diǎn)周?chē)M(jìn)行1/4像素點(diǎn)搜索,得到1/4像素精度最佳匹配點(diǎn)以及相應的運動(dòng)矢量。由于分像素運動(dòng)估計運算量大,很多學(xué)者對分像素運動(dòng)估計從算法上進(jìn)行優(yōu)化,提出了很多快速搜索算法,減少搜索點(diǎn)數目以達到降低運算復雜度的目的。本文就是基于這個(gè)目的,在塊匹配算法的基礎上,提出了一種1/4像素精度的亞像素運動(dòng)估計的硬件實(shí)現方法。在整像素運動(dòng)估計的基礎上用10×10整像素陣列實(shí)現半像素精度和1/4像素精度的最佳匹配點(diǎn)搜索,在空間上具有更高的并行度,硬件實(shí)現簡(jiǎn)潔有效。

FME的運動(dòng)矢量

幀間編碼宏塊中的每個(gè)塊或亞宏塊分割區域都是根據參考幀中同尺寸的區域預測得到的,它們之間的關(guān)系用運動(dòng)矢量來(lái)表示。H.264對亮度成分和色度成分進(jìn)行亞像素搜索時(shí),兩者之間的運動(dòng)矢量是有差異的,對亮度成分采用1/4像素精度,色度成分采用1/8像素精度。如圖2所示,大寫(xiě)字母代表整像素點(diǎn),小寫(xiě)字母代表1/2像素點(diǎn)。


圖2  亮度半像素內插

假定點(diǎn)H是在整像素運動(dòng)估計中找到的最佳匹配點(diǎn),在此基礎上再進(jìn)行1/2像素點(diǎn)的搜索,如點(diǎn)(bb,aa等),如果MV的垂直和水平分量為整數,參考塊相應像素實(shí)際存在;如果其中一個(gè)或兩個(gè)為分數,則參考塊相應的亮度和色度像素并不存在,需利用鄰近已編碼點(diǎn)進(jìn)行內插而得。

內插像素生成的步驟如下:

首先生成參考圖象亮度成分的半像素點(diǎn)。半像素點(diǎn)(如b、h、m)通過(guò)對相應整像素點(diǎn)進(jìn)行6抽頭濾波得出,權重為(1/32、-5/32、5/8、5/8、-5/32、1/32)。b通過(guò)下式計算得出:

b=round((E-5F=20G+20H-5I+J)/32)      (1)

類(lèi)似的,h由A、C、G、M、R、T濾波得出。一旦鄰近(垂直或水平方向)整像素點(diǎn)的所有像素都計算出來(lái),剩余的半像素點(diǎn)便可通過(guò)對6個(gè)垂直或水平方向的半像素點(diǎn)濾波得到。例如,j由cc、dd、h、m、ee、ff濾波得出。

半像素點(diǎn)計算出來(lái)后,在此基礎上,1/4像素點(diǎn)可通過(guò)線(xiàn)性?xún)炔宓贸,如圖3所示。


圖3 亮度1/4像素內插

1/4像素點(diǎn)(如a、c、i、k、d、f、n、q)由鄰近像素內插而得,如

a=round((G+b)/2)                          (2)

剩余1/4像素點(diǎn)(p,r)由一對對角半像素點(diǎn)線(xiàn)性?xún)炔宓贸,如e由b和h獲得。相應地,對于色度成分的1/8像素精度的運動(dòng)矢量,也同樣通過(guò)整像素點(diǎn)線(xiàn)性?xún)炔宓贸,如圖4所示。


圖4 色度1/8像素內插

其中:
a=round([(8-dx)(8-dy)A+dx(8-dy)B+(8-dx)dyC+dx dyD]/64)       (3)

FME模塊算法原理及硬件實(shí)現

在本設計中,FME搜索采用的是如圖5所示的菱形全搜索方法。


圖5 菱形全搜索

即先利用整像素運動(dòng)估計搜索出最佳整像素點(diǎn),再在最佳整像素匹配點(diǎn)的基礎上搜索出最佳整像素點(diǎn)周?chē)?6個(gè)亞像素點(diǎn)(假設在圖5中正中心點(diǎn)是最佳整像素匹配點(diǎn))。等36個(gè)亞像素點(diǎn)都計算出來(lái)后,加上正中心的最佳整像素點(diǎn)共37個(gè)像素點(diǎn)。比較這37個(gè)像素點(diǎn)的SATD的值,將SATD值最小的像素點(diǎn)確定為最佳的預測點(diǎn)。

由于H.264采用樹(shù)形結構運動(dòng)估計,每個(gè)宏塊可劃分成更小的子塊,其中4×4塊是宏塊劃分中最小的子塊,任何類(lèi)型的子塊都可由若干個(gè)具有相同運動(dòng)矢量的 4×4塊組成,因此本設計在硬件實(shí)現時(shí)將4×4塊作為處理的基本單位?紤]到硬件資源的節省及計算的并行度,在本設計模塊中每次能并行處理兩個(gè)4×4塊的亞像素點(diǎn)的搜索,一個(gè)宏塊(16×16)要分8次完成,處理單元的硬件結構框圖如圖6所示。


圖6 FME硬件框圖

其中IME單元為FME單元提供10×10整像素點(diǎn)陣列,內插法用于1/2像素點(diǎn)的插值,ave單元用于計算1/4像素精度的像素點(diǎn),Sram單元用于存儲計算出來(lái)的亞像素點(diǎn)的值。比較器單元由diff、DCT、satd三個(gè)單元組成,用于比較這些亞像素的SATD值,確定最佳的亞像素預測值。

假設當前處理的4×4塊在參考幀中的最佳整像素匹配塊如圖7所示(方框中的4×4塊為匹配的塊),在硬件實(shí)現的過(guò)程中為減少搜索次數,只要搜索出圖7中對應的5×5塊的每個(gè)整像素點(diǎn)左上角的15個(gè)亞像素點(diǎn)(見(jiàn)圖8),然后將相鄰整像素點(diǎn)左上角的亞像素點(diǎn)進(jìn)行組合后就能將當前處理的4×4塊中每個(gè)整像素點(diǎn)周?chē)?6個(gè)亞像素點(diǎn)(見(jiàn)圖5)都計算出來(lái)。
     
  圖7 最佳整像素匹配塊


圖8 亞像素點(diǎn)



本設計在硬件實(shí)現的過(guò)程中為提高計算的并行度,利用15個(gè)六抽頭濾波器,25個(gè)均值器等硬件資源來(lái)計算圖8所示的亞像素點(diǎn)的值,計算依據分別如公式1、2所示,硬件搜索計算過(guò)程如圖9所示。


圖9 亞像素點(diǎn)硬件搜索步驟

通過(guò)上述15個(gè)步驟就可將圖8所示的亞像素點(diǎn)全部計算出來(lái),并將計算出來(lái)的亞像素點(diǎn)的值都存入到開(kāi)辟的Sram中,以便在進(jìn)行P幀重構時(shí)從Sram中直接取出最佳的預測值給相關(guān)的模塊。由于如上文所述在對每個(gè)4×4塊進(jìn)行亞像素搜索時(shí)要計算出對應的5×5塊(如圖7所示4×4塊對應的5×5塊)的每個(gè)整像素點(diǎn)左上角的15個(gè)亞像素點(diǎn)的值(如圖8所示的15個(gè)亞像素點(diǎn)),加上最佳整像素點(diǎn)共16個(gè)像素點(diǎn)的值都要存儲起來(lái),且對應的5×5塊中的每個(gè)整像素點(diǎn)左上角的亞像素點(diǎn)的像素值都是并行計算出來(lái)的(如step1計算點(diǎn)2,是將對應的5×5塊的25個(gè)整像素點(diǎn)左上角對應的點(diǎn)2一次全計算出來(lái)),所以在進(jìn)行一個(gè)4×4塊的亞像素搜索時(shí),要存儲的像素點(diǎn)共有25×16個(gè)。由于在本設計模塊中每次能并行處理兩個(gè)4×4塊單元,即利用兩套FME模塊資源并行處理兩個(gè) 4×4塊的亞像素搜索,一個(gè)宏塊(16×16)要分8次完成?紤]到數據組織的方便性,本設計在一套FME模塊中開(kāi)辟兩塊Sram資源,一塊大小為 104×128,一個(gè)地址存儲13個(gè)像素點(diǎn)的值(每個(gè)像素點(diǎn)的值占8bit),另一塊大小為96×128,一個(gè)地址能存儲12個(gè)像素點(diǎn)的值(每個(gè)像素點(diǎn)的值占8bit),地址深度128剛好能存儲8個(gè)4×4塊的亞像素點(diǎn)的像素值,所以?xún)商譌ME模塊中的Sram資源剛好能把一個(gè)宏塊的亞像素點(diǎn)的像素值都存儲起來(lái)。此設計在硬件的實(shí)現過(guò)程中計算并行度高,硬件實(shí)現簡(jiǎn)潔有效。

根據圖6所示的硬件架構及上文描述的算法原理,利用Verilog HDL對其進(jìn)行建模,建立測試平臺在ModelSim環(huán)境中進(jìn)行編譯、仿真,驗證其功能的準確性。然后使用Synplify工具對其進(jìn)行綜合,工作頻率可達68MHz。在FPGA 驗證平臺上,可實(shí)現對高清碼流(1920×1080)的編碼,利用Design Complier工具進(jìn)行綜合,在中芯國際0.18μm 工藝標準單元庫的基礎上,綜合后面積占150千門(mén),工作時(shí)鐘頻率可達166MHz,達到了預期要求。

結語(yǔ)

H.264中的分數運動(dòng)估計能有效提高預測精度,但大大增加了計算復雜度。同整數運動(dòng)估計一樣,分數運動(dòng)估計存在兩個(gè)主要問(wèn)題,一是計算量大,二是存儲訪(fǎng)問(wèn)量大。而本文提出的用于H.264/AVC的分像素運動(dòng)估計的硬件實(shí)現方法能在全搜索塊匹配算法的基礎上,采用子塊分解,利用 10×10整像素點(diǎn)陣列實(shí)現1/2像素精度和1/4像素精度的最佳匹配點(diǎn)的并行搜索,與其他實(shí)現方法相比在空間上具有更高的并行度,處理能力更高,不但減少了大量中間數據的存儲與傳輸,節省了存儲器資源,而且簡(jiǎn)化了數據流和控制流,使硬件實(shí)現簡(jiǎn)潔有效,非常適合高分辨率視頻的分像素運動(dòng)估計。

參考文獻

1. RICHARDSONIEG. H.264 and MPEG-4 Video Compression:video coding for next-generation multimedia [M ]. U. S: John Wiley& Sons, 2003

2. JVT-G050. Draft ITU-T Recommendation H.264 and Draft ISO/IEC 14496-10 AVC. 2005

3. 畢厚杰. 新一代視頻壓縮編碼標準—H.264/AVC[M]. 北京:人民郵電出版社,2005.5
本文地址:http://selenalain.com/thread-6185-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页