<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > H.264/AVC解碼器運動(dòng)矢量預測模塊設計與應用

H.264/AVC解碼器運動(dòng)矢量預測模塊設計與應用

作者: 時(shí)間:2016-12-09 來(lái)源:網(wǎng)絡(luò ) 收藏

H.264/AVC支持3種圖像編碼模式:幀模式、場(chǎng)模式和宏塊自適應幀場(chǎng)(MBAFF)模式。在幀模式下,1幅圖像被劃分成由16×16宏塊組成的幀;H.264是一種高性能的視頻編解碼技術(shù)。目前國際上制定視頻編解碼技術(shù)的組織有兩個(gè),一個(gè)是“國際電聯(lián)(ITU-T)”,它制定的標準有H.261、H.263、H.263+等,另一個(gè)是“國際標準化組織(ISO)”它制定的標準有MPEG-1、MPEG-2、MPEG-4等。H.264最大的優(yōu)勢是具有很高的數據壓縮比率,在同等圖像質(zhì)量的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。本文將探討在解碼的過(guò)程中MBAFF模式在P幀和B幀的幀間預測算法和硬件設計。

本文引用地址:http://dyxdggzs.com/article/201612/328516.htm

1 幀間預測技術(shù)

幀間預測是利用視頻圖像幀間的相關(guān)性,即時(shí)間相關(guān)性,來(lái)達到圖像壓縮的目的,廣泛用于普通電視、會(huì )議電視、視頻電話(huà)、高清晰度電視的壓縮編碼。在圖像傳輸技術(shù)中,活動(dòng)圖像特別是電視圖像是關(guān)注的主要對象?;顒?dòng)圖像是由時(shí)間上以幀周期為間隔的連續圖像幀組成的時(shí)間圖像序列,它在時(shí)間上比在空間上具有更大的相關(guān)性。大多數電視圖像相鄰幀間細節變化是很小的,即視頻圖像幀間具有很強的相關(guān)性,利用幀所具有的相關(guān)性的特點(diǎn)進(jìn)行幀間編碼,可獲得比幀內編碼高得多的壓縮比。在解碼時(shí),解碼器只需要采用同樣的算法先預測出運動(dòng)矢量的預測值MVp,而后將其與殘差MVd相加便可以恢復出運動(dòng)矢量的實(shí)際值MV[1]供運動(dòng)補償使用。MVp[1]取決于運動(dòng)補償的尺寸和鄰近MV的有無(wú)。

在幀間預測模式下,宏塊有16×16、16×8、8×16、8×8、8×4、4×8、4×4這7種運動(dòng)矢量的分割方法。為方便描述,把參考宏塊相應分割的運動(dòng)矢量命名為MVLXN[2],參考索引命名為refIdxLXN,當前宏塊分割的運動(dòng)矢量MVpLX[2]就是通過(guò)MVLXN和refIdxLXN預測得到的。圖1所示為非MBAFF模式時(shí)當前宏塊分割為16×16的情況,E為當前宏塊或宏塊分割,A、B、C分別為E的左、上、右上方的3個(gè)相對應分割塊。因為人眼對圖像中靜止或活動(dòng)慢的部分,要求有較高的空間分辨率,而對時(shí)間分辨率的要求可低些。這種方法叫幀重復方法,廣泛應用于視頻電話(huà)、視頻會(huì )議系統中,其圖像幀速率一般為1~15幀/秒。

1.1 預測運動(dòng)矢量MVp的計算

在宏塊分割為16×16、8×8、8×4、4×8和4×4時(shí),運動(dòng)矢量的預測值是由參考宏塊分割A、B、C的運動(dòng)矢量計算得到的:

(1)如果分割B和C不可用,而分割A可用,則會(huì )對MVLXB、MVLXC、refIdxLXB、refIdxLXC重新賦值:MVLXB=‘MVLXA、MVLXC=MVLXA、refIdxLXB=refIdxLXA、refIdx-LXC=refIdxLXA。

(2)根據refIdxLXA、refIdxLXB和refIdxLXC的取值計算mvpLX:

①如果分割A、B、C的參考索引refIdxLXA、 refIdxLXB或refIdxLXC中的一個(gè)等于當前分割的索引號refIdxLX,則當前分割的矢量預測值由相應分割的運動(dòng)矢量得到:MVpLX=mvLXN。

②如果分割A、B、C的參考索引refIdxLXA、 refIdxLXB或refIdxLXC都不等于當前分割的索引號refIdxLX,則通過(guò)取A、B、C的運動(dòng)矢量中值得到:

MVpLX[0]=Median(MVLXA[0],MVLXB[0],MVLXC[0])

MVpLX[1]=Median(MVLXA[1],MVLXB[1],MVLXC[1])

運動(dòng)矢量的預測在當前宏塊分割為16×8和8×16的時(shí)候會(huì )先做如下的判斷,如果不滿(mǎn)足則通過(guò)上述取中值的方法得到預測值:

(1)對于1個(gè)宏塊被分割成2個(gè)16×8子宏塊的情況

①計算mbPartIdx等于0的子宏塊如圖2(a)所示。如果refIdxLXB等于當前分割的refIdxLX,則當前塊的矢量預測值由B宏塊的相應分割的矢量得到:MVpLX= MVLXB。

②計算mbPartIdx等于1的子宏塊如圖2所示,如果refIdxLXA等于當前分割的refIdxLX,則當前塊的矢量預測值由A宏塊的相應分割的矢量得到:MVpLX=MVLXA。

(2)對于1個(gè)宏塊被分割成2個(gè)8×16子宏塊的情況:

①計算mbPartIdx等于0的子宏塊如圖2(b)所示。如果refIdxLXA等于當前分割的refIdxLX,則當前塊的矢量預測值由B宏塊的相應分割的矢量得到:MVpLX=MVLXA。

②計算mbPartIdx等于1的子宏塊如圖2(b)所示,如果refIdxLXC等于當前分割的refIdxLX,則當前塊的矢量預測值由C宏塊的相應分割的矢量得到:MVpLX=MVLXC。

1.2 參考宏塊分割的運動(dòng)矢量MVLXN和參考索引refIdxLXN的計算

在計算參考宏塊分割A、B、C的運動(dòng)矢量MVLXN和參考索引refIdxLXN之前,應先檢測分割C是否可用,如果C不可用,則用分割D的信息代替。A、B、C的運動(dòng)矢量MVLXN和參考索引refIdxLXN的計算:

(1)如果宏塊mbAddrN不可用或者宏塊mbAddrN為幀內編碼,或者mbAddrN相應分割或者子宏塊分割的predFlagLX等于0,則對MVLXN置0,對refIdxLXN置-1。

(2)MVLXN為mbAddrN相應宏塊分割或者子宏塊分割的運動(dòng)矢量,refIdxLXN為mbAddrN相應宏塊分割的參考索引值:

MVLXN=MvLX[mbPartIdxN][subMbPartIdxN]

refIdxLXN=RefIdxLX[mbPartIdxN]

(3)在MBAFF模式時(shí),需要對MVLXN和refIdxLXN再做1次計算:

①如果當前宏塊為場(chǎng)宏塊,而mbAddrN為幀宏塊,則:

MVLXN[1]=MVLXN[1]/2

refIdxLXN=refIdxLXN×2

②如果當前宏塊為幀宏塊,而mbAddrN為場(chǎng)宏塊,則:

MVLXN[1]=MVLXN[1]×2

refIdxLXN=refIdxLXN/2

1.3 空間相鄰參考宏塊分割的選擇

在非MBAFF模式時(shí),當前宏塊的空間相鄰宏塊地址A、B、C、D的位置如圖3所示??臻g參考宏塊mbAddrN可以是MbAddrA、MbAddrB、MbAddrC、MbAddrD或者CurrMbAddr。

在MBAFF模式時(shí),當前宏塊的空間相鄰宏塊地址A、B、C、D的位置如圖4所示。此時(shí)會(huì )根據當前宏塊是幀宏塊或者場(chǎng)宏塊currMbFrameFlag以及當前宏塊是頂宏塊或者底宏塊mbIsTopMbFlag來(lái)計算1個(gè)中間值mbAddrX,并根據mbAddrX的幀場(chǎng)信息mbAddrXFrameFlag來(lái)得到最終的參考宏塊MbAddrN。參考宏塊mbAddrN可以是MbAddrA、MbAddrA+1、MbAddrB、MbAddrB+1、MbAddrC、MbAddrC+1、MbAddrD、MbAddrD+1、CurrMbAddr或者CurrMbAddr-1。

1.4 運動(dòng)矢量預測所需數據的組織

運動(dòng)矢量的預測需要當前分割的左邊、上邊、左上和右上相應分割的MVLXN和refIdxLXN信息來(lái)計算得到當前分割的MVLX。1個(gè)宏塊需要存儲16個(gè)block的運動(dòng)矢量MVLX和參考索引refIdxLX,當采用其他分割類(lèi)型時(shí),每個(gè)分割內所有block的運動(dòng)矢量和參考索引為相同值。

幀間預測按照block存儲和使用數據。當前宏塊分割的運動(dòng)矢量和參考索引需要按照block來(lái)存儲以用于后面宏塊的預測。每個(gè)分割內所有block的運動(dòng)矢量和參考索引為相同值,所以參考分割的MVLXN和refIdxLXN的引用也可以按照block來(lái)進(jìn)行。

因為同一分割內所有block的運動(dòng)矢量和參考索引為相同值,因此,參考分割的MVLXN和refIdx-LXN也就是參考宏塊相應的block的MVLX和refIdx-LX。圖5(a)~(d)分別表明了當前宏塊采用不同劃分時(shí)A、B、C、D 4個(gè)參考塊的取值情況。在預測時(shí)一般選取A、B、C塊對當前的運動(dòng)矢量進(jìn)行預測,當C不可用時(shí)則選用A、B、D進(jìn)行預測。在MBAFF模式時(shí),由于參考宏塊的位置不同會(huì )作相應變化。H.264為了提高碼率控制的能力,量化步長(cháng)的變化的幅度控制在12.5%左右,而不是以不變的增幅變化。變換系數幅度的歸一化被放在反量化過(guò)程中處理以減少計算的復雜性。為了強調彩色的逼真性,對色度系數采用了較小量化步長(cháng)。2 直接預測模式和硬件設計

H.264/AVC對運動(dòng)矢量的重建引入了直接預測模式,在該模式下運動(dòng)矢量殘差沒(méi)有被傳送,只有宏塊的預測模式會(huì )被傳送。解碼器根據預測模式以及其余宏塊的信息對當前的運動(dòng)矢量進(jìn)行恢復。運動(dòng)矢量的重建流程如圖6所示。在直接預測模式下,H.264分別采用3種不同的方式對運動(dòng)矢量進(jìn)行重建。

在先前的H.26x系列和MPEG-x系列標準中,都是采用的幀間預測的方式。在H.264中,當編碼Intra圖像時(shí)可用幀內預測。對于每個(gè)4×4塊(除了邊緣塊特別處置以外),每個(gè)像素都可用17個(gè)最接近的先前已編碼的像素的不同加權和(有的權值可為0)來(lái)預測,即此像素所在塊的左上角的17個(gè)像素。顯然,這種幀內預測不是在時(shí)間上,而是在空間域上進(jìn)行的預測編碼算法,可以除去相鄰塊之間的空間冗余度,取得更為有效的壓縮。

(1)復制模式。在P類(lèi)型的宏塊中,利用空間上相鄰分割的運動(dòng)矢量對當前的運動(dòng)矢量進(jìn)行預測。

(2)空間模式。在B類(lèi)型的宏塊中,利用空間上相鄰分割的運動(dòng)矢量對當前的運動(dòng)矢量進(jìn)行預測。

(3)時(shí)間模式。在B類(lèi)型的宏塊中,通過(guò)將時(shí)間上相鄰而且在空間上位置相同的8×8分割的運動(dòng)矢量進(jìn)行重量化來(lái)預測出當前的運動(dòng)矢量。

其中復制模式和空間模式在算法上具有一定的相似性,差別在于復制模式只需要重建1個(gè)方向的運動(dòng)矢量,而空間模式需要重建雙向的運動(dòng)矢量。

2.1 空間模式及復制模式重建算法和硬件設計

在這2種模式下:(1)宏塊只能劃分成1個(gè)16×16分割或者4個(gè)8×8分割。在劃分成4個(gè)8×8時(shí),每1個(gè)8×8分割可以獨立地被設置成直接模式或者ReadMV模式;(2)計算當前的運動(dòng)矢量需要借助在空間上相鄰分割的運動(dòng)矢量來(lái)對當前分割的運動(dòng)矢量進(jìn)行重建。此時(shí)運動(dòng)矢量的預測算法與前面介紹的預測運動(dòng)矢量的算法基本相同,所不同的是此時(shí)宏塊中的任意1個(gè)分割預測時(shí)所使用的相鄰塊信息均由圖7所示的A、B、C、D 4個(gè)塊預測。

Direct 8×8用A、B、C、D 4個(gè)塊進(jìn)行預測。預測的基本算法流程如圖8所示。由圖可見(jiàn),在預測時(shí)首先檢測參考塊C是否可用,如不可用,則C塊的參數用D塊的參數代替;而后利用A、B


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>