新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > H.264編碼器中亞像素運動估計的硬件實現

        H.264編碼器中亞像素運動估計的硬件實現

        作者: 時間:2011-08-29 來源:網絡 收藏

        引言

        本文引用地址:http://www.104case.com/article/187358.htm

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

          

          圖1 分像素運動矢量

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

          FME的運動矢量

          幀間編碼宏塊中的每個塊或亞宏塊分割區域都是根據參考幀中同尺寸的區域預測得到的,它們之間的關系用運動矢量來表示。H.264對亮度成分和色度成分進行搜索時,兩者之間的運動矢量是有差異的,對亮度成分采用1/4像素精度,色度成分采用1/8像素精度。

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

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

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

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

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

          半像素點計算出來后,在此基礎上,1/4像素點可通過線性內插得出,如圖2所示。

          

          圖2 亮度1/4像素內插

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

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

          剩余1/4像素點(p,r)由一對對角半像素點線性內插得出,如e由b和h獲得。相應地,對于色度成分的1/8像素精度的運動矢量,也同樣通過整像素點線性內插得出,如圖3所示。

          

          圖3 色度1/8像素內插

          其中:

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

          FME模塊算法原理及硬件實現


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 于都县| 鲁山县| 昌平区| 青岛市| 永嘉县| 扎囊县| 仙居县| 马山县| 攀枝花市| 五原县| 浦城县| 石狮市| 舟曲县| 临洮县| 和政县| 石家庄市| 彰武县| 临城县| 宁强县| 重庆市| 平乐县| 阿尔山市| 开封市| 荃湾区| 孟津县| 额济纳旗| 扶风县| 阿尔山市| 岐山县| 晋州市| 湖南省| 竹北市| 昭苏县| 习水县| 龙门县| 锡林郭勒盟| 闽清县| 遂宁市| 台中市| 信阳市| 江川县|