欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

為隔行掃描和逐行掃描視頻編碼和解碼宏塊和運(yùn)動信息中的革新的制作方法

文檔序號:7607836閱讀:490來源:國知局
專利名稱:為隔行掃描和逐行掃描視頻編碼和解碼宏塊和運(yùn)動信息中的革新的制作方法
技術(shù)領(lǐng)域
描述了用于逐行掃描和隔行掃描視頻編碼和解碼的技術(shù)和工具。例如,編碼器用信號表示隔行掃描幀編碼圖像中的宏塊的宏塊模式信息。作為另一示例,編碼器/解碼器編碼和解碼隔行掃描幀編碼圖像中的亮度和色度運(yùn)動矢量。
背景
數(shù)字視頻消耗了大量地存儲和傳輸容量。典型的原始數(shù)字視頻序列包括每秒15或30個(gè)圖像。每一圖像可包括幾萬或者幾十萬個(gè)像素(也稱為pel)。每一像素表示圖像中的一個(gè)微小元素。在原始形式中,計(jì)算機(jī)通常用24個(gè)比特或更多來表示一個(gè)像素。由此,典型的原始數(shù)字視頻序列的每秒的比特?cái)?shù),即比特率可以是5百萬比特/秒或更多。
大多數(shù)計(jì)算機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)缺乏處理原始數(shù)字視頻的資源。為此,工程師使用壓縮(也稱為編碼或?qū)懘a)來降低數(shù)字視頻的比特率。壓縮可以是無損的,其中視頻質(zhì)量不受損害,但是比特率的降低受到視頻復(fù)雜度的限制?;蛘?,壓縮可以是有損的,其中視頻質(zhì)量受到損害,但是比特率的降低更顯著。解壓反轉(zhuǎn)了壓縮。
一般而言,視頻壓縮技術(shù)包括“幀內(nèi)”壓縮和“幀間”或預(yù)測壓縮。幀內(nèi)壓縮技術(shù)壓縮個(gè)別的圖像,通常稱為I幀或關(guān)鍵幀。幀間壓縮技術(shù)參考前導(dǎo)和/或后續(xù)幀來壓縮各幀,且?guī)g壓縮的幀通常被稱為預(yù)測幀、P幀或B幀。
I.Window Media Video版本8和9中的幀間壓縮
微軟公司的Windows Media Video(Windows媒體視頻)版本8[“WMV8”]包括視頻編碼器和視頻解碼器。WMV8編碼器使用幀內(nèi)和幀間壓縮,而WMV8解碼器使用幀內(nèi)和幀間解壓。Windows Media Video版本9[“WMV9”]對許多操作使用類似的體系結(jié)構(gòu)。
WMV8編碼器中的幀間壓縮使用基于塊的經(jīng)運(yùn)動補(bǔ)償?shù)念A(yù)測編碼,之后是殘留誤差的變換編碼。圖1和2示出了用于WMV8編碼器中的預(yù)測幀的基于塊的幀間壓縮。具體地,圖1示出了用于預(yù)測幀110的運(yùn)動估計(jì),圖2示出了用于預(yù)測幀的經(jīng)運(yùn)動補(bǔ)償?shù)膲K的預(yù)測殘差的壓縮。
例如,在圖1中,WMV8編碼器為預(yù)測幀110中的宏塊115計(jì)算運(yùn)動矢量。為計(jì)算運(yùn)動矢量,編碼器在參考幀130的搜索區(qū)域135中進(jìn)行搜索。在搜索區(qū)域135中,編碼器將來自預(yù)測幀110的宏塊115與各種候選宏塊進(jìn)行比較,以找出作為良好匹配的候選宏塊。編碼器輸出指定匹配宏塊的運(yùn)動矢量(熵編碼的)的信息。
由于運(yùn)動矢量值通常與空間上的周圍運(yùn)動矢量的值相關(guān),因此用于發(fā)送運(yùn)動矢量信息的數(shù)據(jù)的壓縮可通過基于相鄰宏塊的運(yùn)動矢量選擇運(yùn)動矢量預(yù)測值,并使用運(yùn)動矢量預(yù)測值為當(dāng)前宏塊預(yù)測運(yùn)動矢量來實(shí)現(xiàn)。編碼器可對運(yùn)動矢量和預(yù)測值之間的差分進(jìn)行編碼。在通過將差分加到預(yù)測值重構(gòu)運(yùn)動矢量之后,解碼器使用運(yùn)動矢量,利用來自參考幀130的信息來為宏塊115計(jì)算預(yù)測宏塊,參考幀130是在編碼器和解碼器處可用的先前重構(gòu)的幀。預(yù)測很少是完美的,因此編碼器通常對預(yù)測宏塊和宏塊115本身之間的像素差塊(也稱為誤差或殘差塊)進(jìn)行編碼。
圖2示出了WMV8編碼器中的誤差塊235的計(jì)算和編碼的示例。誤差塊235是預(yù)測的塊215和原始的當(dāng)前塊225之差。編碼器向誤差塊235應(yīng)用離散余弦變換[“DCT”]240,得到8×8的系數(shù)塊245。編碼器然后量化(250)該DCT系數(shù),得到8×8的經(jīng)量化的DCT系數(shù)塊255。編碼器將8×8的塊255掃描(260)成一維數(shù)組265,使得系數(shù)一般從最低頻率到最高頻率排序。編碼器使用行程長度編碼270的變更對掃描的系數(shù)進(jìn)行熵編碼。編碼器從一個(gè)或多個(gè)“行程/等級/最后”表275中選擇熵碼,并輸出該熵碼。
圖3示出了用于幀間編碼塊的對應(yīng)解碼過程300的示例。在圖3的概述中,解碼器使用可變長度解碼310,利用一個(gè)或多個(gè)“行程/級別/最后”表315和行程長度解碼320,對表示預(yù)測殘差的熵編碼的信息進(jìn)行解碼(310、320)。解碼器將儲存熵編碼的信息的一維數(shù)組325反掃描(330)成二維塊335。解碼器對該數(shù)據(jù)進(jìn)行反量化和離散反余弦變換(共同在340處),得到重構(gòu)的誤差塊345。在獨(dú)立的運(yùn)動補(bǔ)償路徑中,解碼器對從參考幀的偏移使用運(yùn)動矢量信息355計(jì)算預(yù)測塊365。解碼器將預(yù)測塊365與重構(gòu)的誤差塊345組合(370),以形成重構(gòu)塊375。
原始的和重構(gòu)的幀之間的改變量是失真,且編碼該幀所需的比特?cái)?shù)指示了幀速率。失真的量大致與速率成反比。
II.隔行掃描視頻和逐行掃描視頻
視頻幀包含視頻信號的空間信息的行。對于逐行掃描視頻,這些行包含從一個(gè)時(shí)刻開始繼續(xù)通過連續(xù)的行直到幀底部的樣值。逐行掃描的I幀是幀內(nèi)編碼的逐行掃描視頻幀。逐行掃描的P幀是使用前向預(yù)測編碼的逐行掃描視頻幀,而逐行掃描的B幀是使用雙向預(yù)測編碼的逐行掃描視頻幀。
典型的隔行掃描視頻幀由兩個(gè)半幀構(gòu)成,這兩個(gè)半幀是從不同的時(shí)刻開始掃描的。例如,參考圖4,隔行掃描的視頻幀400包括上半幀410和下半幀420。通常,偶數(shù)號的行(上半幀)是從一個(gè)時(shí)刻(例如,時(shí)刻t)開始掃描的,而奇數(shù)號的行(下半幀)是從一個(gè)不同(通常稍晚)的時(shí)刻(例如,時(shí)刻t+1)開始掃描的。這一時(shí)序可創(chuàng)建隔行掃描視頻幀的存在運(yùn)動的區(qū)域中看似鋸齒狀的特征,因?yàn)閮蓚€(gè)半幀是在不同的時(shí)刻開始掃描的。為此,可依照半幀結(jié)構(gòu)對隔行掃描視頻幀重新排列,使得奇數(shù)行被組合在一起成為一個(gè)半幀,而偶數(shù)行被組合在一起成為另一半幀。這一排列被稱為半幀編碼,它在高運(yùn)動圖像中對于降低這一鋸齒狀邊緣的人為因素是非常有用的。另一方面,在靜止區(qū)域中,隔行掃描視頻幀中的圖像細(xì)節(jié)可被更有效地保存,而無需這樣的重新排列。因此,通常在靜止或低運(yùn)動的隔行掃描視頻幀中使用幀編碼,在這樣的視頻幀中,保存了原始的交錯半幀行排列。
典型的逐行掃描視頻幀由具有非交錯行的內(nèi)容的一幀構(gòu)成。與隔行掃描視頻相反,逐行掃描視頻不將視頻幀劃分成獨(dú)立的半幀,且從單個(gè)時(shí)刻開始,從左到右、從上到下掃描整個(gè)幀。
III.早先的WMV編碼器和解碼器中的P幀編碼和解碼
編碼器和解碼器在P幀中使用逐行掃描和隔行掃描編碼和解碼。在隔行掃描和逐行掃描P幀中,在編碼器中通過計(jì)算運(yùn)動矢量和運(yùn)動矢量預(yù)測值之間的差分來編碼運(yùn)動矢量,它是基于相鄰運(yùn)動矢量來計(jì)算的。在解碼器中,通過將運(yùn)動矢量差分加到運(yùn)動矢量預(yù)測值來重構(gòu)運(yùn)動矢量,它同樣也是基于相鄰運(yùn)動矢量來計(jì)算的(這次是在解碼器中)。由此,當(dāng)前宏塊或當(dāng)前宏塊的半幀的運(yùn)動矢量預(yù)測值是基于候選塊來選擇的,而運(yùn)動矢量差分是基于運(yùn)動矢量預(yù)測值來計(jì)算的。運(yùn)動矢量可通過在編碼器或解碼器側(cè)將運(yùn)動矢量差分加到所選擇的運(yùn)動矢量預(yù)測值來重構(gòu)。通常,亮度運(yùn)動矢量是從編碼的運(yùn)動信息中重構(gòu)的,而色度運(yùn)動矢量是從重構(gòu)的亮度運(yùn)動矢量中導(dǎo)出的。
A.逐行掃描P幀編碼和解碼
例如,在編碼器和解碼器中,逐行掃描P幀可包含在1運(yùn)動矢量(1MV)模式或在4運(yùn)動矢量(4MV)模式中編碼的宏塊,或跳過的宏塊,其中決策一般是在逐個(gè)宏塊的基礎(chǔ)上作出的。僅具有1MV宏塊(且可能有跳過宏塊)的P幀被稱為1MV P幀,而同時(shí)具有1MV和4MV宏塊(可能具有跳過宏塊)的P幀稱成為混合MV P幀。一個(gè)亮度運(yùn)動矢量與每一1MV宏塊相關(guān)聯(lián),且多達(dá)四個(gè)亮度運(yùn)動矢量與每一4MV宏塊相關(guān)聯(lián)(對每一塊有一個(gè)亮度運(yùn)動矢量)。
圖5A和5B是示出對1MV逐行掃描P幀中的宏塊的候選運(yùn)動矢量預(yù)測值考慮的宏塊的位置的圖示。候選預(yù)測值取自左側(cè)、頂部和右上角的宏塊,除了在宏塊是行中的最后一個(gè)宏塊的情況之外。在這一情況下,預(yù)測值B取自左上角的宏塊,而非右上角。對于其中該幀是一個(gè)宏塊寬的特殊情況,預(yù)測值總是為預(yù)測值A(chǔ)(頂部預(yù)測值)。當(dāng)由于宏塊在頂行中而使預(yù)測值A(chǔ)位于帶外時(shí),預(yù)測值為預(yù)測值C。各種其它規(guī)則解決諸如幀內(nèi)編碼預(yù)測值等其它特殊情況。
圖6A-10示出了為混合MV幀中的1MV或4MV宏塊的運(yùn)動矢量的多達(dá)三個(gè)候選運(yùn)動矢量考慮的塊或宏塊的位置。在以下附圖中,較大的方塊是宏塊邊界,而較小的方塊是塊邊界。對于其中幀是一個(gè)宏塊寬的特殊情況,預(yù)測值總是預(yù)測值A(chǔ)(頂部預(yù)測值)。各種其它規(guī)則解決諸如對頂行的4MV宏塊的頂行塊、頂行的1MV宏塊以及幀內(nèi)編碼預(yù)測值等其它特殊情況。
圖6A和6B是示出為混合MV幀中的1MV當(dāng)前宏塊的候選運(yùn)動矢量預(yù)測值考慮的塊位置的圖示。相鄰宏塊可以是1MV或4MV宏塊。圖6A和6B示出了假定鄰塊是4MV時(shí)候選運(yùn)動矢量的位置(即,預(yù)測值A(chǔ)是對于在當(dāng)前宏塊上方的宏塊中的塊2的運(yùn)動矢量,而預(yù)測值C是直接在當(dāng)前宏塊左邊的宏塊中的塊1的運(yùn)動矢量)。如果鄰塊中的任一塊是1MV宏塊,則圖5A和5B所示的運(yùn)動矢量預(yù)測值被帶到整個(gè)宏塊的運(yùn)動矢量預(yù)測值。如圖6B所示,如果宏塊是行中的最后一個(gè)宏塊,則預(yù)測值B來自左上角的宏塊的塊3,而非其它情況下的右上角宏塊中的塊2。
圖7A-10示出了為4MV宏塊中的4個(gè)亮度塊的每一個(gè)的候選運(yùn)動矢量預(yù)測值考慮的塊位置。圖7A和7B是示出為位置0處的塊的候選運(yùn)動矢量預(yù)測值考慮的塊位置的圖示;圖8A和8B是示出為位置1處的塊的候選運(yùn)動矢量預(yù)測值考慮的塊位置的圖示;圖9是示出為位置2處的塊的候選運(yùn)動矢量預(yù)測值考慮的塊位置的圖示;圖10是為位置3處的塊的候選運(yùn)動矢量預(yù)測值考慮的塊位置的圖示。再一次,如果鄰塊是1MV宏塊,則該宏塊的運(yùn)動矢量預(yù)測值用于該宏塊的各塊。
對于其中宏塊是行中的第一個(gè)宏塊的情況,塊0的預(yù)測值B與該行中其余宏塊的塊0不同地處理(見圖7A和7B)。在這一情況下,預(yù)測值B取自直接在當(dāng)前宏塊上方的宏塊中的塊3,而非如其它情況下取自在當(dāng)前宏塊左上方的宏塊中的塊3。類似地,對于其中宏塊是行中的最后一個(gè)宏塊的情況,塊1的預(yù)測值B加以不同的處理(圖8A和8B)。在這一情況下,預(yù)測值取自直接在當(dāng)前宏塊上方的宏塊中的塊2,而非如其它情況下取自當(dāng)前宏塊右上方的宏塊中的塊2。一般而言,如果宏塊是在第一個(gè)宏塊列中,塊0和2的預(yù)測值C被設(shè)為等于0。
B.隔行掃描P幀編碼和解碼
編碼器和解碼器對隔行掃描的P幀使用4∶1∶1的宏塊格式,它包含以半幀模式或幀模式編碼的宏塊,或跳過的宏塊,其中決策一般是在逐個(gè)宏塊的基礎(chǔ)上作出的。兩個(gè)運(yùn)動矢量與每一半幀編碼的幀間編碼宏塊相關(guān)聯(lián)(對每一半幀有一個(gè)運(yùn)動矢量),而一個(gè)運(yùn)動矢量與每一幀編碼的幀間編碼宏塊相關(guān)聯(lián)。編碼器聯(lián)合編碼運(yùn)動信息,包括水平和垂直運(yùn)動矢量差分分量,可能還有其它用信號表示的信息。
圖11、12和13示出了在編碼器和解碼器的隔行掃描P幀中,分別用于幀編碼的4∶1∶1宏塊和半幀編碼的4∶1∶1宏塊的運(yùn)動矢量預(yù)測的候選預(yù)測值的示例。圖11示出了在隔行掃描的P幀中用于內(nèi)部位置的當(dāng)前幀編碼的4∶1∶1宏塊(不是宏塊行中的第一個(gè)或最后一個(gè)宏塊,不在頂行中)的候選預(yù)測值A(chǔ)、B和C。預(yù)測值可以從除標(biāo)記為A、B和C之外的不同候選方向上獲得(例如,在諸如當(dāng)前宏塊是行中的第一個(gè)宏塊或最后一個(gè)宏塊,或在頂行中的特殊情況下,由于某些預(yù)測值對于這些情況是不可用的)。對于當(dāng)前幀編碼的宏塊,候選預(yù)測值是根據(jù)相鄰的宏塊是半幀編碼還是幀編碼的來不同地計(jì)算的。對于相鄰的幀編碼的宏塊,僅僅取運(yùn)動矢量作為候選預(yù)測值。對于相鄰的半幀編碼的宏塊,通過對上半幀和下半幀運(yùn)動矢量求平均值來確定候選運(yùn)動矢量。
圖12和13示出了用于半幀中的內(nèi)部位置的半幀編碼的4∶1∶1宏塊中的當(dāng)前半幀的候選預(yù)測值A(chǔ)、B和C。在圖12中,當(dāng)前半幀是下半幀,且相鄰宏塊中的下半幀運(yùn)動矢量用作候選預(yù)測值。在圖13中,當(dāng)前半幀是上半幀,且相鄰宏塊中的上半幀運(yùn)動矢量用作候選預(yù)測值。由此,對于當(dāng)前半幀編碼的宏塊中的每一半幀,每一半幀的運(yùn)動矢量候選預(yù)測值的數(shù)目最多是3,其中每一候選預(yù)測值來自與當(dāng)前半幀相同的半幀類型(例如,上半幀或下半幀)。再一次,當(dāng)當(dāng)前宏塊是行中的第一個(gè)宏塊或最后一個(gè)宏塊,或在頂行中時(shí),由于某些預(yù)測值對于這些情況是不可用的,因此應(yīng)用各種特殊情況(未示出)。
為從一組候選預(yù)測值中選出一個(gè)預(yù)測值,編碼器和解碼器使用不同的選擇算法,諸如三者中的中值(median-of-three)算法。三者中的中值預(yù)測過程在圖14的偽代碼14中描述。
IV.早先的WMV編碼器和解碼器中的B幀編碼和解碼
編碼器和解碼器使用逐行掃描和隔行掃描的B幀。B幀使用來自源視頻的兩個(gè)幀作為參考(或定位)幀,而非P幀中使用的一個(gè)定位幀。在典型的B幀的定位幀中,一個(gè)定位幀來自時(shí)間上的過去,而另一定位幀來自時(shí)間上的未來。參考圖15,視頻序列中的B幀1510具有時(shí)間上的先前參考幀1520以及時(shí)間上的未來參考幀1530。B幀的已編碼比特流通常使用比非B幀的已編碼比特流更少的比特?cái)?shù),而同時(shí)仍提供類似的視覺質(zhì)量。解碼器也可通過選擇不解碼或顯示B幀來容納空間和時(shí)間限制,因?yàn)锽幀一般不被用作參考幀。
盡管前向預(yù)測幀(例如,P幀)中的宏塊只有一個(gè)預(yù)測方向模式(從前一I或P幀向前),但B幀中的宏塊可使用五個(gè)不同的預(yù)測模式來預(yù)測前向、后向、直接、內(nèi)插和幀內(nèi)編碼。編碼器選擇比特流中的不同預(yù)測模式并用信號表示。前向模式類似于常規(guī)的P幀預(yù)測。在前向模式中,宏塊是從時(shí)間上先前的定位幀中導(dǎo)出的。在后向模式中,宏塊是從時(shí)間上后續(xù)的定位幀中導(dǎo)出的。直接或內(nèi)插模式中預(yù)測的宏塊同時(shí)使用前向和后向定位幀用于預(yù)測。
V.早先的WMV編碼器和解碼器中用信號表示宏塊信息
在編碼器和解碼器中,隔行掃描的P幀中的宏塊可以是三種可能類型中的一種幀編碼的、半幀編碼的和跳過的。宏塊類型是由幀級和宏塊級句法元素的多元素組合來表示的。
對于隔行掃描的P幀,幀級元素INTRLCF指示用于對該幀中的宏塊編碼的模式。如果INTRLCF=0,則該幀中的所有宏塊都是幀編碼的。如果INTRLCF=1,則宏塊可以是半幀編碼或幀編碼的。當(dāng)INTRLCF=1時(shí),INTRLCMB元素存在于幀層中。INTRLCMB是位平面編碼的數(shù)組,它指示了圖像中的每一宏塊的半幀/幀編碼狀態(tài)。解碼的位平面將每一宏塊的隔行掃描的狀態(tài)表示為1比特值的數(shù)組。特定比特的0值指示對應(yīng)的宏塊是以幀模式編碼的。1值指示對應(yīng)的宏塊是以半幀模式編碼的。
對于幀編碼的宏塊,宏塊級MVDATA元素與宏塊中的所有塊相關(guān)聯(lián)。MVDATA用信號表示宏塊中的塊是幀內(nèi)編碼還是幀間編碼的。如果它們是幀間編碼的,則MVDATA也指示運(yùn)動矢量差分。
對于半幀編碼的宏塊,TOPMVDATA元素與該宏塊中的上半幀塊相關(guān)聯(lián),而BOTMVDATA元素與該宏塊中的下半幀塊相關(guān)聯(lián)。TOPMVDATA和BOTMVDATA在每一半幀的第一個(gè)塊處發(fā)送,TOPMVDATA指示上半幀塊是幀內(nèi)編碼還是幀間編碼的。同樣,BOTMVDATA指示下半幀塊是幀內(nèi)編碼還是幀間編碼的。對于幀間編碼的塊,TOPMVDATA和BOTMVDATA也指示運(yùn)動矢量差分信息。
CBPCY元素指示用于宏塊中的亮度和色度分量的已編碼塊模式(CBP)信息。CBPCY元素也指示哪些半幀在比特流中具有運(yùn)動矢量數(shù)據(jù)元素。CBPCY和運(yùn)動矢量數(shù)據(jù)元素用于指定塊是否具有AV系數(shù)。如果從MVDATA解碼的“最后一個(gè)”值指示在要解碼的運(yùn)動矢量之后有數(shù)據(jù),則CBPCY對于隔行掃描的P幀的幀編碼的宏塊存在。如果CBPCY存在,則它解碼到6比特字段,對四個(gè)Y塊中的每一個(gè)有一個(gè)比特,對兩個(gè)U塊(上半幀和下半幀)有一個(gè)比特,且對兩個(gè)V塊(上半幀和下半幀)有一個(gè)比特。
CBPCY對半幀編碼的宏塊總是存在。CBPCY和兩個(gè)半幀運(yùn)動矢量數(shù)據(jù)元素用于確定宏塊的塊中AC系數(shù)的存在。CBPCY的意義與對于比特1、3、4和5的幀編碼的宏塊相同。即,它們分別指示右上半幀Y塊、右下半幀Y塊、頂部/底部U塊以及頂部/底部V塊中AC系數(shù)的存在或不存在。對于比特位置0和2,意義略有不同。比特位置0中的0指示TOPMVDATA不存在,且運(yùn)動矢量預(yù)測值用作頂部的半幀塊的運(yùn)動矢量。它也指示左上半幀塊不包含任何非零系數(shù)。比特位置0中的1指示存在TOPMVDATA。TOPMVDATA指示頂部的半幀塊是幀間編碼還是幀內(nèi)編碼的,如果是幀間編碼,則還指示運(yùn)動矢量差分。如果從TOPMVDATA中解碼的“最后一個(gè)”值解碼為1,則對于左上半幀塊不存在AC系數(shù),否則,對于左上半幀塊存在非零AC系數(shù)。類似地,上述規(guī)則應(yīng)用于BOTMVDATA和左下半幀塊的比特位置2。
VI.早先的WMV編碼器和解碼器中跳過的宏塊
編碼器和解碼器使用跳過的宏塊來降低比特率。例如,編碼器在比特流中用信號表示跳過的宏塊。當(dāng)解碼器接收到比特流中指示該宏塊被跳過的信息(例如,跳過的宏塊標(biāo)志)時(shí),解碼器對該宏塊跳過殘差塊信息的解碼。相反,解碼器使用來自參考幀中共同定位或經(jīng)運(yùn)動補(bǔ)償(用運(yùn)動矢量預(yù)測值)的宏塊的對應(yīng)像素?cái)?shù)據(jù)來重構(gòu)宏塊。編碼器和解碼器在多個(gè)編碼/解碼模式之間選擇,以對跳過的宏塊信息進(jìn)行編碼和解碼。例如,跳過的宏塊信息在比特流的幀級(例如,在壓縮的位平面中)或在宏塊級(例如,對每一宏塊有一個(gè)“跳過”位)上用信號表示。對于位平面編碼,編碼器和解碼器在不同的位平面編碼模式之間選擇。
一種早先的編碼器和解碼器將跳過的宏塊定義為其運(yùn)動等于其因果預(yù)測的運(yùn)動且具有零殘留誤差的預(yù)測宏塊。另一種早先的編碼器和解碼器將跳過的宏塊定義為具有零運(yùn)動和零殘留誤差的預(yù)測宏塊。
對于跳過的宏塊和位平面編碼的更多信息,參見2002年12月6日提交的名為“Skip Macroblock Coding(跳過宏塊編碼)”的美國專利申請第10/321,415號。
VII.早先的WMV編碼器和解碼器中的色度運(yùn)動矢量
色度運(yùn)動矢量導(dǎo)出是視頻編碼和解碼的一個(gè)重要方面。因此,用于早先的WMV編碼器和解碼器的軟件使用了舍入和二次采樣來從亮度(或“l(fā)uma”)運(yùn)動矢量中導(dǎo)出色度(或“chroma”)運(yùn)動矢量。
A.亮度運(yùn)動矢量重構(gòu)
早先的WMV編碼器和解碼器對于逐行掃描幀中的1MV和4MV宏塊,以及隔行掃描幀中的幀編碼或半幀編碼的宏塊重構(gòu)運(yùn)動矢量。亮度運(yùn)動矢量是通過將運(yùn)動矢量差分加到運(yùn)動矢量預(yù)測值來重構(gòu)的。在逐行掃描幀的1MV宏塊以及隔行掃描幀的幀編碼宏塊中,單個(gè)亮度運(yùn)動矢量應(yīng)用于構(gòu)成該宏塊的亮度分量的四個(gè)塊。在逐行掃描幀的4MV宏塊中,宏塊中的每一幀間編碼的亮度塊具有其自己的亮度運(yùn)動矢量。因此,對于每一4MV宏塊有多達(dá)4個(gè)亮度運(yùn)動矢量,取決于該宏塊中幀間編碼的塊的數(shù)目。在隔行掃描幀的半幀編碼宏塊中,有兩個(gè)亮度運(yùn)動矢量,對每一半幀有一個(gè)。
B.色度運(yùn)動矢量的導(dǎo)出和重構(gòu)
編碼器和解碼器對逐行掃描幀使用4∶2∶0的宏塊格式。幀數(shù)據(jù)包括亮度(“Y”)分量和色度分量(“U”和“V”)。每一宏塊包括四個(gè)8×8的亮度塊(有時(shí)候作為一個(gè)16×16的宏塊來處理)以及兩個(gè)8×8的色度塊。圖16示出了4∶2∶0 YUV采樣網(wǎng)格。圖16的4∶2∶0YUV采樣網(wǎng)格示出了宏塊的亮度和色度樣值之間的空間關(guān)系。色度樣值的分辨率在水平(x)和垂直(y)方向上都是亮度樣值分辨率的一半。由此,為從亮度網(wǎng)格上的對應(yīng)距離中導(dǎo)出色度網(wǎng)格上的距離,早先的WMV編碼器和解碼器將亮度運(yùn)動矢量分量除以2。這是在逐行掃描幀中從亮度運(yùn)動矢量中導(dǎo)出色度運(yùn)動矢量時(shí)的下采樣步驟的基礎(chǔ)。
編碼器和解碼器用兩個(gè)步驟對逐行掃描幀中的色度矢量進(jìn)行重構(gòu)。首先,通過適當(dāng)?shù)亟M合和比例縮放亮度運(yùn)動矢量來獲得名義色度運(yùn)動矢量。其次,在比例縮放之后可任選地執(zhí)行舍入來減少解碼時(shí)間。
例如,在1MV宏塊中,依照以下偽代碼,通過比例縮放亮度分量從亮度運(yùn)動矢量分量(lmv_x和lmv_y)中導(dǎo)出色度運(yùn)動矢量分量(cmv_x和cmv_y)
//s_RndTbl
=0,s_RndTbl[1]=0,s_RndTbl[2]=0,s_RndTbl[3]=1
cmv_x=(lmv_x+s_RndTbl[lmv_x &3])>>1
cmv_y=(lmv_y+s_RndTbl[lmv_y &3])>>1
比例縮放是用舍入表數(shù)組(s-RndTbl[])來執(zhí)行的,使得半像素偏移量優(yōu)于四分之一像素偏移量??梢栽诒壤s放運(yùn)算之后執(zhí)行額外的舍入以減少解碼時(shí)間。
在4MV宏塊中,編碼器和解碼器依照圖17的偽代碼1700從四個(gè)亮度塊內(nèi)的運(yùn)動信息中導(dǎo)出色度運(yùn)動矢量。如圖17所示,編碼器和解碼器使用中值預(yù)測或通過對宏塊中的幀間編碼塊的亮度運(yùn)動矢量求平均值。來導(dǎo)出色度運(yùn)動矢量分量。在三個(gè)或更多塊是幀內(nèi)編碼的特殊情況下,色度塊也是幀內(nèi)編碼的。
如果序列級位FASTUVMC=1,則編碼器和解碼器執(zhí)行額外的舍入。由FASTUVMC用信號表示的舍入促進(jìn)色度運(yùn)動矢量的半像素和整數(shù)像素位置,這可加速編碼。
早先的WMV編碼器和解碼器對隔行掃描幀使用4∶1∶1的宏塊格式。對于隔行掃描幀,幀數(shù)據(jù)也包括亮度(“Y”)分量和色度分量(“U”和“V”)。然而,在4∶1∶1的宏塊格式中,色度樣值的分辨率在水平方向上是亮度樣值分辨率的四分之一,而在垂直方向上是全分辨率。由此,為從亮度網(wǎng)格上的對應(yīng)距離中導(dǎo)出色度網(wǎng)格上的距離,早先的WMV編碼器和解碼器將水平亮度運(yùn)動矢量分量除以4。
對于幀編碼的宏塊,導(dǎo)出對應(yīng)于單個(gè)亮度運(yùn)動矢量的一個(gè)色度運(yùn)動矢量。對于半幀編碼的宏塊,導(dǎo)出對應(yīng)于兩個(gè)亮度運(yùn)動矢量的兩個(gè)色度運(yùn)動矢量,一個(gè)對應(yīng)于上半幀,另一個(gè)對應(yīng)于下半幀。
在早先的WMV編碼器和解碼器中,用于在隔行掃描幀中導(dǎo)出色度運(yùn)動矢量的規(guī)則與用于半幀編碼的宏塊和幀編碼的宏塊的規(guī)則相同。色度運(yùn)動矢量的x分量按照4的因子比例縮放(下采樣),而色度運(yùn)動矢量的y分量與亮度運(yùn)動矢量保持相同。經(jīng)比例縮放的色度運(yùn)動矢量的x分量也被舍入到相鄰的四分之一像素位置。色度運(yùn)動矢量依照以下偽代碼來重構(gòu),其中cmv_x和cmv_y表示色度運(yùn)動矢量分量,而lmv_x和lmv_y表示對應(yīng)的亮度運(yùn)動矢量分量。
frac_x4=(lmv_x<<2)%16;
int_x4=(lmv_x<<2)-frac_x;
ChromaMvRound[16]={0,0,0,.25,.25,.25,.5,.5,.5,.5,.5,.75,.75,.75,1,1};
cmv_y=lmv_y;
cmv_x=Sign(lmv_x)*(int_x4>>2)+ChromaMvRound[frac_x4];
VIII.用于視頻壓縮和解壓的標(biāo)準(zhǔn)
若干國際標(biāo)準(zhǔn)涉及視頻壓縮和解壓。這些標(biāo)準(zhǔn)包括來自國際電信聯(lián)盟[“ITU”]的運(yùn)動圖像專家組[“MPEG”]1、2和4標(biāo)準(zhǔn)以及H.261、H.262(MPEG 2的另一種名稱)、H.263和H.264(也稱為JVT/AVC)標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)指定了用于壓縮的視頻信息的視頻解碼器和格式方面。它們直接或隱含地也指定了某些編碼器細(xì)節(jié),但是未指定其它編碼器細(xì)節(jié)。這些標(biāo)準(zhǔn)使用幀內(nèi)和幀間解壓和壓縮的不同組合(或支持其使用)。
A.標(biāo)準(zhǔn)中的運(yùn)動估計(jì)/補(bǔ)償
國際標(biāo)準(zhǔn)中用于實(shí)現(xiàn)數(shù)字視頻序列的數(shù)據(jù)壓縮的一種主要方法是降低圖像之間的時(shí)間冗余度。這些常用的壓縮模式(MPEG-1、MPEG-2、MPEG-4、H.261、H.263等)使用運(yùn)動估計(jì)和補(bǔ)償。例如,當(dāng)前幀被劃分成均勻的正方形區(qū)域(例如塊和/或宏塊)。每一當(dāng)前區(qū)域的匹配區(qū)域是通過發(fā)送該區(qū)域的運(yùn)動矢量信息來指定的。運(yùn)動矢量指示了要用作當(dāng)前區(qū)域的預(yù)測值的先前編碼(和重構(gòu))的參考幀中該區(qū)域的位置。導(dǎo)出當(dāng)前區(qū)域和參考幀中的區(qū)域之間的逐像素差(稱為誤差信號)。該誤差信號通常具有比原始信號更低的熵。因此,可以按更低的速率來編碼信息。如在WMV 8和9編碼器和解碼器中,用于表示運(yùn)動矢量信息的數(shù)據(jù)的壓縮可通過對當(dāng)前運(yùn)動矢量和基于先前編碼的相鄰運(yùn)動矢量的運(yùn)動矢量預(yù)測值之間的差分進(jìn)行編碼來實(shí)現(xiàn)。
某些國際標(biāo)準(zhǔn)描述了隔行掃描視頻幀中的運(yùn)動估計(jì)和補(bǔ)償。例如,MPEG-2標(biāo)準(zhǔn)的章節(jié)7.6.1描述了雙主(dual-prime)編碼模式。在雙主編碼中,在比特流中僅與差分運(yùn)動矢量一起編碼一個(gè)運(yùn)動矢量(以其全格式)。在半幀圖像的情況下,從該信息中導(dǎo)出兩個(gè)運(yùn)動矢量。兩個(gè)導(dǎo)出的運(yùn)動矢量用于形成來自兩個(gè)參考半幀(一個(gè)上半幀和一個(gè)下半幀)的預(yù)測,對這兩個(gè)半幀求平均值以形成最終的預(yù)測。在幀圖像的情況下,對兩個(gè)半幀重復(fù)該過程,使得能夠作出總共四個(gè)半幀預(yù)測。
MPEG-4標(biāo)準(zhǔn)的1998年5月28日的委員會草稿描述了用于隔行掃描和逐行掃描視頻的運(yùn)動補(bǔ)償。章節(jié)7.5.5描述了逐行掃描視頻對象平面(VOP)中的運(yùn)動補(bǔ)償。候選運(yùn)動矢量是從相鄰的宏塊或塊中收集的。來自VOP外部的候選運(yùn)動矢量作為無效來對待。如果僅一個(gè)候選運(yùn)動矢量無效,則它被設(shè)為0。如果僅兩個(gè)無效,則它們被設(shè)為等于第三個(gè)運(yùn)動矢量。如果三個(gè)都無效,則它們被設(shè)為0。對這三個(gè)候選運(yùn)動矢量執(zhí)行中值濾波以計(jì)算預(yù)測值。
MPEG-4標(biāo)準(zhǔn)的委員會草稿的章節(jié)7.6.2描述了用于隔行掃描視頻的運(yùn)動補(bǔ)償。例如,章節(jié)7.6.2.1描述了對每一半幀有一個(gè)運(yùn)動矢量的半幀預(yù)測的宏塊,以及對每一塊有一個(gè)運(yùn)動矢量或?qū)γ恳缓陦K有一個(gè)運(yùn)動矢量的幀預(yù)測的宏塊。候選運(yùn)動矢量是從相鄰的宏塊或塊收集的,其中預(yù)測值是通過中值濾波來選擇的。
JVT/AVC標(biāo)準(zhǔn)的草稿JVT-d157的章節(jié)8.4也描述了運(yùn)動補(bǔ)償。當(dāng)前塊的運(yùn)動矢量的分量是使用中值預(yù)測來預(yù)測的。(預(yù)測不跨不屬于同一片的宏塊的邊界發(fā)生。)首先,確定三個(gè)候選相鄰塊的運(yùn)動矢量值和參考圖像。如果右上角的塊在當(dāng)前圖像或片的外部或由于解碼順序而不可用,則認(rèn)為右上角的塊的運(yùn)動矢量和參考圖像等于左上角的塊的運(yùn)動矢量和參考圖像。如果頂部、右上和左上塊都在當(dāng)前圖像或片的外部,則其運(yùn)動矢量和參考圖像被認(rèn)為等于左塊的運(yùn)動矢量和參考圖像。在其它情況下,幀內(nèi)編碼的或位于當(dāng)前圖像或片外部的候選預(yù)測塊的運(yùn)動矢量值被認(rèn)為是0,且參考圖像被認(rèn)為與當(dāng)前塊不同。
一旦確定了候選預(yù)測值的運(yùn)動矢量值和參考圖像,如果左側(cè)、頂部和右上塊中只有一個(gè)塊具有與當(dāng)前塊相同的參考圖像,則當(dāng)前塊的預(yù)測運(yùn)動矢量等于具有相同的參考圖像的塊的運(yùn)動矢量值。否則,當(dāng)前塊的預(yù)測的運(yùn)動矢量值的每一分量被計(jì)算為左側(cè)、頂部和右上塊的對應(yīng)的候選運(yùn)動矢量分量值的中值。
章節(jié)8.4也描述了宏塊自適應(yīng)幀/半幀編碼。在隔行掃描幀中,宏塊被組合成宏塊對(頂部和底部)。宏塊對可以是半幀編碼或幀編碼的。在幀編碼的宏塊對中,宏塊對被解碼為兩個(gè)幀編碼的宏塊。在半幀編碼的宏塊對中,頂部的宏塊由宏塊對中的上半幀行構(gòu)成,底部的宏塊由宏塊對中的下半幀行構(gòu)成。如果當(dāng)前塊在幀編碼模式中,則相鄰塊的候選運(yùn)動矢量也是基于幀的。如果當(dāng)前塊在半幀編碼模式中,相鄰塊的候選運(yùn)動矢量在相同的半幀奇偶性中也是基于半幀的。
B.標(biāo)準(zhǔn)中用信號表示半幀或幀編碼的宏塊
某些國際標(biāo)準(zhǔn)描述了對隔行掃描圖像中的宏塊用信號表示半幀/幀編碼類型(例如,半幀編碼或幀編碼)。
JVT/AVC標(biāo)準(zhǔn)的草稿JVT-d157描述了mb_field_decoding_flag句法元素,它用于用信號表示隔行掃描P幀中宏塊對是以幀模式還是半幀模式解碼的。章節(jié)7.3.4描述了一種比特流句法,其中在序列參數(shù)(mb_frame_field_adaptive_flag)指示宏塊中的幀和半幀解碼之間的切換并且片頭部元素(pic_structure)將圖像結(jié)構(gòu)標(biāo)識為逐行掃描圖像或隔行掃描幀圖像的情況下,mb_field_decoding_flag作為片數(shù)據(jù)的元素發(fā)送。
MPEG-4的1998年5月28日的委員會草稿描述了dct_type句法元素,該元素用于用信號表示宏塊是幀DCT編碼的還是半幀DCT編碼的。依照章節(jié)6.2.7.3和6.3.7.3,dct_type是僅存在于其中宏塊具有非零編碼的塊模式或是幀內(nèi)編碼的隔行掃描內(nèi)容中的MPEG-4比特流中的宏塊層元素。
在MPEG-2中,dct_type元素指示宏塊是幀DCT編碼的還是半幀DCT編碼的。MPEG-2也描述了圖像編碼擴(kuò)展元素frame_pred_frame_dct。當(dāng)frame_pred_frame_dct被設(shè)為“1”時(shí),在隔行掃描的幀中僅使用幀DCT編碼。當(dāng)frame_pred_frame_dct=1且dct_type元素在比特流中不存在時(shí),條件dct_type=0是“導(dǎo)出的”。
C.標(biāo)準(zhǔn)中的跳過的宏塊
某些國際標(biāo)準(zhǔn)使用跳過的宏塊。例如,JVT/AVC標(biāo)準(zhǔn)的草稿JVT-d157將跳過的宏塊定義為“其數(shù)據(jù)除關(guān)于該宏塊要被解碼為‘跳過’的指示之外不被編碼的宏塊”。類似地,MPEG-4的委員會草稿規(guī)定,“跳過的宏塊是其信息不被發(fā)送的宏塊”。
D.標(biāo)準(zhǔn)中的色度運(yùn)動矢量
國際標(biāo)準(zhǔn)中用于實(shí)現(xiàn)數(shù)字視頻序列的數(shù)據(jù)壓縮的一種主要方法是降低圖像之間的時(shí)間冗余度。這些常見壓縮模式MPEG-1、MPEG-2、MPEG-4、H.261、H.263等)使用運(yùn)動估計(jì)和補(bǔ)償。例如,當(dāng)前幀被劃分成亮度和色度信息的均勻正方形區(qū)域(例如,塊和/或宏塊)。每一當(dāng)前區(qū)域的匹配區(qū)域是通過發(fā)送該區(qū)域的運(yùn)動矢量信息來指定的。例如,亮度運(yùn)動矢量指示要用作當(dāng)前區(qū)域的預(yù)測值的先前編碼(和重構(gòu))的幀中的亮度樣值區(qū)域的位置。導(dǎo)出當(dāng)前區(qū)域和參考幀中的區(qū)域之間的逐像素差,稱為誤差信號。該誤差信號通常具有比原始信號更低的熵。因此,信息可以按更低的速率來編碼。如在早先的WMV編碼器和解碼器中,由于運(yùn)動矢量值通常與空間上的周圍運(yùn)動矢量相關(guān),因此用于表示運(yùn)動矢量信息的數(shù)據(jù)的壓縮可通過對當(dāng)前運(yùn)動矢量和基于先前編碼的相鄰運(yùn)動矢量的運(yùn)動矢量預(yù)測值之間的差分進(jìn)行編碼來實(shí)現(xiàn)。通常,色度運(yùn)動矢量是從亮度運(yùn)動矢量中導(dǎo)出的,以避免與單獨(dú)地計(jì)算和編碼色度運(yùn)動矢量相關(guān)聯(lián)的額外開銷。
某些國際標(biāo)準(zhǔn)描述了從亮度運(yùn)動矢量中導(dǎo)出色度運(yùn)動矢量。MPEG-2標(biāo)準(zhǔn)的章節(jié)7.6.3.7描述了通過將水平和垂直亮度運(yùn)動矢量分量的每一個(gè)除以2來適當(dāng)?shù)匕幢壤s放色度運(yùn)動矢量分量,以4∶2∶0宏塊格式從亮度運(yùn)動矢量中導(dǎo)出色度運(yùn)動矢量。在4∶2∶2格式中,色度信息僅在水平方向上二次采樣,因此垂直分量不除以2。在4∶4∶4格式中,色度信息以與亮度信息相同的分辯率采樣,因此兩個(gè)分量都不除以2。
H.263標(biāo)準(zhǔn)的附錄F描述了對每一宏塊使用四個(gè)運(yùn)動矢量用于預(yù)測的高級預(yù)測模式。在該高級預(yù)測模式中,四個(gè)運(yùn)動矢量中的每一個(gè)用于宏塊中四個(gè)亮度塊中的一個(gè)中的所有像素。兩個(gè)色度塊(采用4∶2∶0格式)的運(yùn)動矢量是通過在每一方向上計(jì)算四個(gè)亮度運(yùn)動矢量分量的和然后除以8來導(dǎo)出的。類似地,MPEG-4標(biāo)準(zhǔn)的1998年5月28日的委員會草稿的章節(jié)7.5.5描述了通過計(jì)算對應(yīng)于K個(gè)8×8的塊的K個(gè)運(yùn)動矢量的和,然后將該和除以2×K來導(dǎo)出采用4∶2∶0格式的兩個(gè)色度塊的運(yùn)動矢量MVDCHR。對于色度的預(yù)測是通過將運(yùn)動矢量MVDCHR應(yīng)用于兩個(gè)色度塊中的所有像素來獲得的。
JVT/AVC標(biāo)準(zhǔn)的草稿JVT-d157的章節(jié)8.4.1.4也描述了通過將水平和垂直亮度運(yùn)動矢量分量的每一個(gè)除以2來從采用4∶2∶0宏塊格式的亮度運(yùn)動矢量中導(dǎo)出色度運(yùn)動矢量。草稿JVT-d157的章節(jié)7.4.5描述了具有不同亮度塊大小(例如,16×16、16×8、8×16和8×8)和相關(guān)聯(lián)的色度塊的宏塊。例如,對于P片和SP片,“對每一N×M的亮度塊和相關(guān)聯(lián)的色度塊提供運(yùn)動矢量”。
E.標(biāo)準(zhǔn)的限制
這些國際標(biāo)準(zhǔn)在若干重要方面都有限制。例如,JVT/AVC標(biāo)準(zhǔn)的草稿JVT-d157以及MPEG-4標(biāo)準(zhǔn)的委員會草稿描述了使用中值預(yù)測來計(jì)算運(yùn)動矢量預(yù)測值,即使當(dāng)一個(gè)或多個(gè)候選運(yùn)動矢量被設(shè)為0時(shí)也是如此。當(dāng)候選運(yùn)動矢量被設(shè)為0時(shí)使用中值預(yù)測通常會產(chǎn)生歪斜的運(yùn)動矢量預(yù)測值。這些標(biāo)準(zhǔn)也沒有描述用四個(gè)編碼的半幀運(yùn)動矢量來預(yù)測宏塊,這對于運(yùn)動估計(jì)和補(bǔ)償?shù)目臻g自適應(yīng)性施加了限制性的局限。此外,草稿JVT-d157通過使用宏塊對而非通過個(gè)別的隔行掃描的宏塊來執(zhí)行隔行掃描編碼和解碼,這限制了圖像內(nèi)的半幀編碼/幀編碼的自適應(yīng)性。
作為另一示例,盡管這些標(biāo)準(zhǔn)能夠用信號表示宏塊類型,然而半幀/幀編碼類型信息是與運(yùn)動補(bǔ)償類型(例如,半幀預(yù)測或幀預(yù)測、一個(gè)運(yùn)動矢量或多個(gè)運(yùn)動矢量等)分離地用信號表示的。
作為另一示例,盡管某些國際標(biāo)準(zhǔn)允許通過跳過某些宏塊來節(jié)省比特率,但是這些標(biāo)準(zhǔn)中的跳過宏塊的條件僅指示對該宏塊不再編碼任何其它信息,且無法提供關(guān)于宏塊的其它可能有價(jià)值的信息。
作為另一示例,若干標(biāo)準(zhǔn)使用不足以表示色度運(yùn)動中的局部變化的色度運(yùn)動矢量。另一問題是色度運(yùn)動矢量導(dǎo)出中,尤其是對于半幀編碼的內(nèi)容的無效率的舍入機(jī)制。
給定視頻壓縮和解壓對于數(shù)字視頻的關(guān)鍵重要性,視頻壓縮和解壓是豐富開發(fā)的領(lǐng)域并不令人驚奇。然而,不論早先的視頻壓縮和解壓技術(shù)的好處如何,它們都沒有以下技術(shù)和工具的優(yōu)點(diǎn)。

發(fā)明內(nèi)容
概括而言,該詳細(xì)描述針對用于編碼和解碼視頻幀的各種技術(shù)和工具。所描述的實(shí)施例實(shí)現(xiàn)了包括但不限于以下所描述的技術(shù)和工具中的一個(gè)或多個(gè)
在一個(gè)方面,一種編碼器/解碼器接收運(yùn)動矢量信息,該信息包括對于隔行掃描幀編碼的前向預(yù)測圖像(例如,隔行掃描P幀)中的宏塊的四個(gè)半幀運(yùn)動矢量的信息。該編碼器/解碼器使用四個(gè)半幀運(yùn)動矢量處理該宏塊。這四個(gè)半幀運(yùn)動矢量中的兩個(gè)表示宏塊中的第一個(gè)半幀的運(yùn)動,而這四個(gè)半幀運(yùn)動矢量中的另外兩個(gè)表示該宏塊中的第二個(gè)半幀的運(yùn)動。關(guān)于這四個(gè)半幀運(yùn)動矢量的信息可包括關(guān)于這四個(gè)半幀運(yùn)動矢量的運(yùn)動矢量差分。
在另一方面,一種編碼器/解碼器確定用于預(yù)測隔行掃描幀編碼的圖像(例如,隔行掃描的P幀)中的當(dāng)前宏塊(例如,2半幀運(yùn)動矢量宏塊或4半幀運(yùn)動矢量宏塊)中的半幀運(yùn)動矢量的多個(gè)有效候選運(yùn)動矢量(例如,來自相鄰宏塊的幀或半幀運(yùn)動矢量)。該編碼器/解碼器至少部分地基于有效候選運(yùn)動矢量為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值。
計(jì)算包括基于有效候選運(yùn)動矢量的數(shù)目是否為3來確定是否在有效候選運(yùn)動矢量上執(zhí)行中值運(yùn)算(例如,分量級中值運(yùn)算)。如果有效候選運(yùn)動矢量的數(shù)目為3,則計(jì)算還可包括在有效候選運(yùn)動矢量上執(zhí)行中值運(yùn)算。如果數(shù)目小于3,則計(jì)算可包括選擇一個(gè)有效候選運(yùn)動矢量作為運(yùn)動矢量預(yù)測值,而無需執(zhí)行中值運(yùn)算。編碼器/解碼器可至少部分地基于該運(yùn)動矢量預(yù)測值和運(yùn)動矢量差分信息(可指示不存在差分)來重構(gòu)半幀運(yùn)動矢量。
有效候選運(yùn)動矢量可以通過用于隔行掃描幀編碼的圖像內(nèi)或與當(dāng)前宏塊相同的片內(nèi)的塊、宏塊半幀、宏塊半幀部分或宏塊來表征,并且可以是實(shí)際的運(yùn)動矢量值,而不是用于幀內(nèi)編碼塊、宏塊半幀、宏塊半幀部分或宏塊。
在另一方面,一種編碼器/解碼器確定用于對隔行掃描幀編碼圖像中的當(dāng)前宏塊的當(dāng)前半幀預(yù)測半幀運(yùn)動矢量的候選運(yùn)動矢量,確定一個(gè)或多個(gè)候選運(yùn)動矢量的半幀極性,以及至少部分地基于半幀極性計(jì)算半幀運(yùn)動矢量的運(yùn)動矢量預(yù)測值。候選運(yùn)動矢量可以按四分之一像素 增量來測量。半幀極性可以通過在候選運(yùn)動矢量的y分量上執(zhí)行逐位AND(與)運(yùn)算來確定。
確定候選運(yùn)動矢量的半幀極性可包括確定候選運(yùn)動矢量是否指示參考幀的上半幀或下半幀中的位移,或者候選運(yùn)動矢量是否指示與當(dāng)前半幀具有相同極性或相反極性的半幀中的位移。
在另一方面,一種編碼器/解碼器確定用于預(yù)測半幀運(yùn)動矢量的一個(gè)或多個(gè)有效候選運(yùn)動矢量,為一個(gè)或多個(gè)有效候選運(yùn)動矢量中的每一個(gè)別的有效候選運(yùn)動矢量確定半幀極性,根據(jù)其半幀極性將每一個(gè)別的有效候選運(yùn)動矢量分配給兩個(gè)集合中的一個(gè),以及至少部分地基于這兩個(gè)集合為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值。這兩個(gè)集合可以是相反極性集和相同極性集。計(jì)算運(yùn)動矢量預(yù)測值可包括選擇主要極性有效候選運(yùn)動矢量(例如,來自具有最大數(shù)目的有效候選運(yùn)動矢量的集合的候選運(yùn)動矢量)。候選運(yùn)動矢量可以按指定的選擇順序來選擇。如果僅向每一集合分配了一個(gè)有效候選運(yùn)動矢量,則計(jì)算運(yùn)動矢量預(yù)測值可包括選擇相同極性的候選運(yùn)動矢量而非相反極性的候選運(yùn)動矢量。如果三個(gè)有效候選運(yùn)動矢量被分配給兩個(gè)集合中的一個(gè),則計(jì)算運(yùn)動矢量預(yù)測值可包括在三個(gè)有效候選運(yùn)動矢量上執(zhí)行中值運(yùn)算。
在另一方面,解碼器對隔行掃描幀(例如,隔行掃描P幀、隔行掃描B幀或具有隔行掃描P半幀和/或隔行掃描B半幀的幀)的多個(gè)宏塊中的一個(gè)或多個(gè)跳過宏塊進(jìn)行解碼。這一個(gè)或多個(gè)跳過宏塊中的每一個(gè)(1)是由比特流中的跳過宏塊信號指示的,(2)僅使用一個(gè)預(yù)測的運(yùn)動矢量(例如,幀運(yùn)動矢量)且沒有運(yùn)動矢量差分信息,以及(3)缺少殘差信息。一個(gè)或多個(gè)跳過宏塊中的每一個(gè)的跳過宏塊信號指示對相應(yīng)的跳過宏塊的1運(yùn)動矢量的經(jīng)運(yùn)動補(bǔ)償?shù)慕獯a。跳過宏塊信號可以是在具有多個(gè)層的比特流中的幀層發(fā)送的壓縮位平面的一部分?;蛘?,跳過宏塊信號可以是在宏塊層發(fā)送的個(gè)別比特。
在另一方面,從一組多個(gè)可用編碼模式中選擇一個(gè)編碼模式,且依照所選擇的編碼模式在編碼器或解碼器中處理位平面。位平面包括用信號表示隔行掃描幀中的宏塊是被跳過還是不被跳過的二進(jìn)制信息。如果宏塊只有一個(gè)運(yùn)動矢量,則隔行掃描幀中的宏塊被跳過,唯一的運(yùn)動矢量等于為該宏塊預(yù)測的運(yùn)動矢量,且該宏塊沒有殘留誤差。如果宏塊具有多個(gè)運(yùn)動矢量,則它不被跳過。
在另一方面,編碼器對隔行掃描P幀中的宏塊選擇運(yùn)動補(bǔ)償類型(例如,1MV、4幀MV、2半幀MV或4半幀MV),并為該宏塊選擇半幀/幀編碼類型(例如,半幀編碼、幀編碼或未編碼塊)。編碼器對該宏塊的運(yùn)動補(bǔ)償類型和半幀/幀編碼類型進(jìn)行聯(lián)合編碼。編碼器也可對該宏塊的其它信息(例如,差分運(yùn)動矢量的存在的指示符,諸如對于1運(yùn)動矢量的宏塊)與運(yùn)動補(bǔ)償類型和半幀/幀編碼類型一起進(jìn)行聯(lián)合編碼。
在另一方面,解碼器接收隔行掃描P幀中的宏塊的宏塊信息,包括表示該宏塊的運(yùn)動補(bǔ)償類型和半幀/幀編碼類型的聯(lián)合碼。解碼器對該聯(lián)合碼(例如,可變長度編代碼表中的可變長度碼)進(jìn)行解碼,以獲得該宏塊的運(yùn)動補(bǔ)償類型信息和半幀/幀編碼類型信息。
在另一方面,解碼器接收一個(gè)宏塊的兩個(gè)以上亮度運(yùn)動矢量的亮度運(yùn)動矢量信息,兩個(gè)以上亮度運(yùn)動矢量中的每一個(gè)與宏塊(例如,4∶2∶0宏塊)的至少一部分相關(guān)聯(lián)。解碼器通過執(zhí)行涉及亮度運(yùn)動矢量信息上的舍入表(例如,基于半幀的舍入表)的至少一個(gè)運(yùn)算、維護(hù)宏塊的色度運(yùn)動矢量與亮度運(yùn)動矢量的1∶1的比率,對兩個(gè)以上亮度運(yùn)動矢量中的每一個(gè)導(dǎo)出與宏塊的至少一部分相關(guān)聯(lián)的色度運(yùn)動矢量。例如,解碼器接收宏塊的四個(gè)亮度(幀或半幀)運(yùn)動矢量,并導(dǎo)出該宏塊的四個(gè)色度運(yùn)動矢量。導(dǎo)出可包括使用基于半幀的舍入表對亮度運(yùn)動矢量信息的至少一部分的二次采樣和/或舍入。
在另一方面,解碼器至少部分地基于一個(gè)或多個(gè)亮度運(yùn)動矢量的運(yùn)動矢量信息,對一個(gè)或多個(gè)亮度運(yùn)動矢量中的每一個(gè)導(dǎo)出與隔行掃描幀編碼的圖像(例如,隔行掃描P幀、隔行掃描B幀)中的宏塊的至少一部分相關(guān)聯(lián)的色度運(yùn)動矢量。解碼器可用于對使用四個(gè)亮度半幀運(yùn)動矢量預(yù)測的宏塊進(jìn)行解碼。例如,解碼器諸如通過將基于半幀的舍入查找表應(yīng)用于亮度運(yùn)動矢量信息的至少一部分來導(dǎo)出四個(gè)色度半幀運(yùn)動矢量。
在另一方面,解碼器通過使用基于半幀的舍入表(例如,整數(shù)數(shù)組)舍入亮度半幀運(yùn)動矢量分量,以及對亮度半幀運(yùn)動矢量分量進(jìn)行二次采樣,對一個(gè)或多個(gè)亮度半幀運(yùn)動矢量中的每一個(gè)導(dǎo)出與宏塊的至少一部分相關(guān)聯(lián)的色度運(yùn)動矢量。
各種技術(shù)和工具可組合或單獨(dú)使用。
當(dāng)參考附圖閱讀以下不同實(shí)施例的詳細(xì)描述時(shí),可以清楚其它特征和優(yōu)點(diǎn)。


圖1是示出依照現(xiàn)有技術(shù)的視頻編碼器中的運(yùn)動估計(jì)的圖示。
圖2是示出依照現(xiàn)有技術(shù)的視頻編碼器中的8×8的預(yù)測殘差塊的基于塊的壓縮的圖示。
圖3是示出依照現(xiàn)有技術(shù)的視頻編碼器中的8×8的預(yù)測殘差塊的基于塊的解壓的圖示。
圖4是示出依照現(xiàn)有技術(shù)的隔行掃描幀的圖示。
圖5A和5B是示出依照現(xiàn)有技術(shù),用于逐行掃描P幀中的1MV宏塊的候選運(yùn)動矢量預(yù)測值的宏塊位置的圖示。
圖6A和6B是示出依照現(xiàn)有技術(shù),用于混合的1MV/4MV逐行掃描P幀中的1MV宏塊的候選運(yùn)動矢量預(yù)測值的塊位置的圖示。
圖7A、7B、8A、8B、9和10是示出依照現(xiàn)有技術(shù),用于混合的1MV/4MV逐行掃描P幀中的4MV宏塊中的各種位置處的塊的候選運(yùn)動數(shù)量預(yù)測值的塊位置的圖示。
圖11是示出依照現(xiàn)有技術(shù),用于隔行掃描P幀中的當(dāng)前幀編碼宏塊的候選運(yùn)動矢量預(yù)測值的圖示。
圖12和13是示出依照現(xiàn)有技術(shù),用于隔行掃描P幀中的當(dāng)前半幀編碼宏塊的候選運(yùn)動矢量預(yù)測值的圖示。
圖14是示出依照現(xiàn)有技術(shù)用于執(zhí)行3候選者中值的偽代碼的代碼圖。
圖15是示出依照現(xiàn)有技術(shù)具有過去和未來參考幀的B幀的圖示。
圖16是示出依照現(xiàn)有技術(shù)的4∶2∶0YUV采樣網(wǎng)格的圖示。
圖17是示出依照現(xiàn)有技術(shù),用于從4MV宏塊的四個(gè)亮度塊中的運(yùn)動信息導(dǎo)出色度運(yùn)動矢量的偽代碼的代碼圖。
圖18是可結(jié)合其實(shí)現(xiàn)所描述的若干實(shí)施例的合適的計(jì)算環(huán)境的框圖。
圖19是可結(jié)合其實(shí)現(xiàn)所描述的若干實(shí)施例的廣義視頻編碼器系統(tǒng)的框圖。
圖20是可結(jié)合其實(shí)現(xiàn)所描述的若干實(shí)施例的廣義視頻解碼器系統(tǒng)的框圖。
圖21是在所描述的若干實(shí)施例中使用的宏塊格式的圖示。
圖22A是隔行掃描視頻幀的一部分的圖示,示出了上半幀和下半幀的交錯行。圖22B是為編碼/解碼組織為幀的隔行掃描視頻幀的圖示,圖22C是為編碼/解碼組織為半幀的隔行掃描視頻幀的圖示。
圖23是示出隔行掃描P幀的2半幀MV宏塊中用于亮度塊的運(yùn)動矢量和用于色度塊的導(dǎo)出運(yùn)動矢量的圖示。
圖24是示出隔行掃描P幀的4幀MV宏塊中,用于四個(gè)亮度塊的每一個(gè)的不同運(yùn)動矢量以及用于四個(gè)色度子塊的每一個(gè)的導(dǎo)出運(yùn)動矢量的圖示。
圖25是示出隔行掃描P幀的4半幀MV宏塊中,用于亮度塊的運(yùn)動矢量和用于色度塊的導(dǎo)出運(yùn)動矢量的圖示。
圖26A-26B是示出用于隔行掃描P幀的當(dāng)前宏塊的候選預(yù)測值的圖示。
圖27是示出用于處理隔行掃描P幀中具有四個(gè)半幀運(yùn)動矢量的宏塊的技術(shù)的流程圖。
圖28是示出用于基于候選運(yùn)動矢量的極性為半幀編碼的宏塊計(jì)算運(yùn)動矢量預(yù)測值的技術(shù)的流程圖。
圖29是示出用于在為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值時(shí)確定是否執(zhí)行中值運(yùn)算的技術(shù)的流程圖。
圖30是示出用于確定在隔行掃描預(yù)測幀中是否跳過對特定宏塊的編碼的技術(shù)的流程圖。
圖31是示出用于對隔行掃描P幀中的宏塊解碼聯(lián)合編碼的運(yùn)動補(bǔ)償類型信息和半幀/幀編碼類型信息的技術(shù)的流程圖。
圖32是示出用于為多個(gè)亮度運(yùn)動矢量中的每一個(gè)導(dǎo)出一個(gè)色度運(yùn)動矢量的技術(shù)的流程圖。
圖33是示出用于使用基于半幀的舍入查找表來導(dǎo)出色度半幀運(yùn)動矢量的技術(shù)的流程圖。
圖34是示出用于使用基于半幀的舍入查找表從亮度運(yùn)動矢量分量中導(dǎo)出色度運(yùn)動矢量分量的偽代碼的代碼圖。
圖35是示出用于基于半幀的舍入查找表中的值的半幀指定的圖示。
圖36是示出組合的實(shí)現(xiàn)中的入口點(diǎn)層比特流句法的圖示。
圖37是示出組合實(shí)現(xiàn)中用于隔行掃描P幀的幀層比特流句法的圖示。
圖38是示出組合實(shí)現(xiàn)中用于隔行掃描B幀的幀層比特流句法的圖示。
圖39是示出組合實(shí)現(xiàn)中用于隔行掃描P半幀或B半幀的幀層比特流句法的圖示。
圖40是示出組合實(shí)現(xiàn)中用于隔行掃描P幀的宏塊的宏塊層比特流句法的圖示。
圖41是示出組合實(shí)現(xiàn)中用于為隔行掃描P幀中的1MV宏塊收集候選運(yùn)動矢量的偽代碼的代碼清單。
圖42、43、44和45是示出組合實(shí)現(xiàn)中用于為隔行掃描P幀中的4幀MV宏塊收集候選運(yùn)動矢量的偽代碼的代碼清單。
圖46和47是示出組合實(shí)現(xiàn)中用于為隔行掃描P幀中的2半幀MV宏塊收集候選運(yùn)動矢量的偽代碼的代碼清單。
圖48、49、50和51是示出組合實(shí)現(xiàn)中用于為隔行掃描P幀中的4半幀MV宏塊收集候選運(yùn)動矢量的偽代碼的代碼清單。
圖52是示出組合實(shí)現(xiàn)中用于為隔行掃描P幀中的幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值的偽代碼的代碼清單。
圖53是示出組合實(shí)現(xiàn)中用于為隔行掃描P幀中的半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值的偽代碼的代碼清單。
圖54A和54B是示出組合實(shí)現(xiàn)中用于為隔行掃描P幀解碼運(yùn)動矢量差分的偽代碼的代碼清單。
圖55A-55C是示出組合實(shí)現(xiàn)中用于普通-6和差分-6位平面編碼模式的平鋪塊的圖示。
具體實(shí)施例方式
本發(fā)明涉及用于隔行掃描和逐行掃描視頻的有效壓縮和解碼的技術(shù)和工具。在所描述的各實(shí)施例中,視頻編碼器和解碼器結(jié)合了用于對隔行掃描和逐行掃描的視頻進(jìn)行編碼和解碼的技術(shù),以及用于包括不同層或級(例如,序列級、幀級、半幀級、宏塊級和/或塊級)的比特流格式或句法的對應(yīng)的信號表示技術(shù)。
對此處所描述的實(shí)現(xiàn)的各種替換是可能的。例如,參考流程圖所描述的技術(shù)可以通過改變流程圖中所示的階段的排序,通過重復(fù)或省略某些階段等來改變。作為另一示例,盡管某些實(shí)現(xiàn)此處是參考特定宏塊格式描述的,但是也可使用其它格式。此外,此處參考前向預(yù)測所描述的技術(shù)和工具也可適用于其它類型的預(yù)測。
各種技術(shù)和工具可組合或單獨(dú)使用。不同的實(shí)施例實(shí)現(xiàn)所描述的技術(shù)和工具的一個(gè)或多個(gè)。此處所描述的某些技術(shù)和工具可以在視頻編碼器或解碼器中使用,或在不特別地限于視頻編碼或解碼的某一其它系統(tǒng)中使用。
I.計(jì)算環(huán)境
圖18示出了適合在其中實(shí)現(xiàn)所描述的若干實(shí)施例的計(jì)算環(huán)境1800的一個(gè)廣義示例。計(jì)算環(huán)境1800并非對使用范圍或功能提出任何局限,因?yàn)檫@些技術(shù)和工具可以在完全不同的通用或?qū)S糜?jì)算環(huán)境中實(shí)現(xiàn)。
參考圖18,計(jì)算環(huán)境1800包括至少一個(gè)處理單元1810和存儲器1820。在圖18中,這一最基本配置1830包括在虛線內(nèi)。處理單元1810執(zhí)行計(jì)算機(jī)可執(zhí)行指令,且可以是真實(shí)或虛擬處理器。在多處理系統(tǒng)中,多個(gè)處理單元執(zhí)行計(jì)算機(jī)可執(zhí)行指令以提高處理能力。存儲器1820可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,ROM、EEPROM、閃存等)或兩者的某一組合。存儲器1820儲存用此處所描述的一個(gè)或多個(gè)技術(shù)或工具實(shí)現(xiàn)視頻編碼器或解碼器的軟件1880。
計(jì)算環(huán)境可具有額外的特征。例如,計(jì)算環(huán)境1800包括存儲1840、一個(gè)或多個(gè)輸入設(shè)備1850、一個(gè)或多個(gè)輸出設(shè)備1860以及一個(gè)或多個(gè)通信連接1870。諸如總線、控制器或網(wǎng)絡(luò)等互連機(jī)制(未示出)將計(jì)算環(huán)境1800的組件互連。通常,操作系統(tǒng)軟件(未示出)為在計(jì)算環(huán)境1800中執(zhí)行的其它軟件提供了操作環(huán)境,并協(xié)調(diào)計(jì)算環(huán)境1800的組件的活動。
存儲1840可以是可移動或不可移動的,且包括磁盤、磁帶或磁帶盒、CD-ROM、DVD或可用于儲存信息并可在計(jì)算環(huán)境1800內(nèi)訪問的任何其它介質(zhì)。存儲1840儲存用于軟件1880實(shí)現(xiàn)視頻編碼器或解碼器的指令。
輸入設(shè)備1850可以是諸如鍵盤、鼠標(biāo)、筆或跟蹤球等觸摸輸入設(shè)備、語音輸入設(shè)備、掃描設(shè)備或可向計(jì)算環(huán)境1800提供輸入的另一設(shè)備。對于音頻或視頻編碼,輸入設(shè)備1850可以是聲卡、顯卡、TV調(diào)諧卡、或接受模擬或數(shù)字格式的音頻或視頻輸入的類似的設(shè)備、或?qū)⒁纛l或視頻樣值讀入計(jì)算環(huán)境1800的CD-ROM或CD-RW。輸出設(shè)備1860可以是顯示器、打印機(jī)、揚(yáng)聲器、CD刻錄機(jī)、或從計(jì)算環(huán)境1800提供輸出的另一設(shè)備。
通信連接1870允許通過通信介質(zhì)到另一計(jì)算實(shí)體的通信。通信介質(zhì)傳達(dá)諸如計(jì)算機(jī)可執(zhí)行指令、音頻或視頻輸入或輸出、或已調(diào)制數(shù)據(jù)信號形式的其它數(shù)據(jù)等信息。已調(diào)制數(shù)據(jù)信號是其一個(gè)或多個(gè)特征以在信號中編碼信息的方式設(shè)置或改變的信號。作為示例而非局限,通信介質(zhì)包括以電、光、RF、紅外、聲學(xué)或其它載波實(shí)現(xiàn)的有線或無線技術(shù)。
各種技術(shù)和工具可以在計(jì)算機(jī)可讀介質(zhì)的一般上下文中描述。計(jì)算機(jī)可讀介質(zhì)可以是可在計(jì)算環(huán)境內(nèi)訪問的任何可用介質(zhì)。作為示例而非局限,對于計(jì)算環(huán)境1800,計(jì)算機(jī)可讀介質(zhì)包括存儲器1820、存儲1840、通信介質(zhì)以及上述任一個(gè)的組合。
各種技術(shù)和工具可以在諸如程序模塊中所包括的在計(jì)算環(huán)境中的目標(biāo)真實(shí)或虛擬處理器上執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。程序模塊的功能可以如各實(shí)施例中所需的組合或在程序模塊之間分離。用于程序模塊的計(jì)算機(jī)可執(zhí)行指令可以在本地或分布式計(jì)算環(huán)境中執(zhí)行。
為演示起見,詳細(xì)描述使用了如“估計(jì)”、“補(bǔ)償”、“預(yù)測”和“應(yīng)用”等術(shù)語,來描述計(jì)算環(huán)境中的計(jì)算機(jī)操作。這些術(shù)語是由計(jì)算機(jī)執(zhí)行的操作的高級抽象,且不應(yīng)與人類所執(zhí)行的動作混淆。對應(yīng)于這些術(shù)語的實(shí)際的計(jì)算機(jī)操作取決于實(shí)現(xiàn)而不同。
II.廣義的視頻編碼器和解碼器
圖19是可結(jié)合其實(shí)現(xiàn)所描述的某些實(shí)施例的廣義的視頻編碼器1900的框圖。圖20是可結(jié)合其實(shí)現(xiàn)所描述的某些實(shí)施例的廣義的視頻解碼器2000的框圖。
編碼器1900和解碼器2000內(nèi)的模塊之間所示的關(guān)系指示了編碼器和解碼器中的一般信息流;為簡明起見,未示出其它關(guān)系。具體地,圖19和20一般不示出指示用于視頻序列、圖像、宏塊、塊等的編碼器設(shè)置、模式、表等輔助信息。這一輔助信息通常在該輔助信息的熵編碼之后在輸出比特流中發(fā)送。輸出比特流的格式可以是Windows Media Video版本9格式或其它格式。
編碼器1900和解碼器2000處理視頻圖像,視頻圖像可以是視頻幀、視頻半幀或幀和半幀的組合。圖像和宏塊級的比特流句法和語法可取決于使用了幀還是半幀。也可以對宏塊組織和總體時(shí)序有改變。編碼器1900和解碼器2000是基于塊的,且對幀使用4∶2∶0的宏塊格式,其中每一宏塊包括四個(gè)8×8的亮度塊(有時(shí)候作為一個(gè)16×16的宏塊來對待)以及兩個(gè)8×8的色度塊。對于半幀,可使用相同或不同的宏塊組織和格式。8×8的塊還可在不同的級細(xì)分,例如在頻率變換和熵編碼級。示例性視頻幀組織在以下更詳細(xì)描述?;蛘?,編碼器1900和解碼器2000可以是基于對象的,使用不同的宏塊或塊格式,或在與8×8的塊和16×16的宏塊不同的大小或配置的像素集上執(zhí)行操作。
取決于所需的實(shí)現(xiàn)和壓縮類型,編碼器或解碼器的模塊可被添加、省略、分成多個(gè)模塊、與其它模塊組合、和/或用相似的模塊來替代。在替換實(shí)施例中,具有不同模塊和/或其它模塊配置的編碼器或解碼器執(zhí)行一個(gè)或多個(gè)所描述的技術(shù)。
A.視頻幀組織
在某些實(shí)現(xiàn)中,編碼器1900和解碼器2000處理如下組織的視頻幀。幀包含視頻信號的空間信息行。對于逐行掃描視頻,這些行包含從一個(gè)時(shí)刻開始并繼續(xù)通過連續(xù)的行直到幀底部的樣值。逐行掃描視頻幀被劃分成諸如圖21所示的宏塊2100等宏塊。宏塊2100包括四個(gè)8×8的亮度塊(Y1到Y(jié)4)以及兩個(gè)8×8的色度塊,這些色度塊與四個(gè)亮度塊共同定位,但是水平和垂直分辨率都是一半,遵循常規(guī)的4∶2∶0的宏塊格式。8×8的塊還可以在不同的級上細(xì)分,例如在頻率變換級(例如,8×4、4×8或4×4DCT)和熵編碼級。逐行掃描I幀是幀內(nèi)編碼的逐行掃描視頻幀。逐行掃描P幀是使用前向預(yù)測編碼的逐行掃描視頻幀,而逐行掃描B幀是使用雙向預(yù)測編碼的逐行掃描視頻幀。逐行掃描P幀和B幀可包括幀內(nèi)編碼的宏塊以及不同類型的預(yù)測宏塊。
隔行掃描視頻幀由一幀的兩次掃描構(gòu)成—一次包括幀的偶數(shù)行(上半幀),另一次包括幀的奇數(shù)行(下半幀)。這兩個(gè)半幀可表示兩個(gè)不同的時(shí)間段,或者它們可以來自同一時(shí)間段。圖22A示出了隔行掃描視頻幀2200的一部分,包括位于隔行掃描視頻幀2200的左上部分的上半幀和下半幀的交替行。
圖22B示出了為編碼/解碼組織為幀2230的圖22A的隔行掃描視頻幀2200。隔行掃描視頻幀2200被劃分成諸如宏塊2231和2232等宏塊,它們使用如圖21所示的4∶2∶0的格式。在亮度平面中,每一宏塊2231、2232包括來自上半幀的8行,這8行與來自下半幀的8行交替,總共有16行,且每一行是16個(gè)像素長。(宏塊2231、2232內(nèi)亮度塊和色度塊的實(shí)際組織和布置未示出,且實(shí)際上可以對不同的編碼決策不同。)在給定宏塊內(nèi),上半幀信息和下半幀信息可以聯(lián)合編碼或在各種階段的任一個(gè)單獨(dú)編碼。隔行掃描I幀是隔行掃描視頻幀的兩個(gè)幀內(nèi)編碼的半幀,其中宏塊包括關(guān)于這兩個(gè)半幀的信息。隔行掃描P幀是使用前向預(yù)測編碼的隔行掃描視頻幀的兩個(gè)半幀,而隔行掃描B幀是使用雙向預(yù)測編碼的隔行掃描視頻幀的兩個(gè)半幀,其中宏塊包括關(guān)于這兩個(gè)半幀的信息。隔行掃描P幀和B幀可包括幀內(nèi)編碼宏塊以及不同類型的預(yù)測宏塊。隔行掃描BI幀是隔行掃描I幀和隔行掃描B幀的混合,它們是幀內(nèi)編碼的,但是不用作其它幀的定位幀。
圖22C示出了為編碼/解碼被組織成半幀2260的圖22A的隔行掃描視頻幀2200。隔行掃描視頻幀2200的兩個(gè)半幀中的每一個(gè)被劃分成宏塊。上半幀被劃分成諸如宏塊2261等宏塊,下半幀被劃分成諸如宏塊2262等宏塊。(這些宏塊也使用如圖21所示的4∶2∶0格式,且宏塊內(nèi)亮度塊和色度塊的組織和布置未示出)。在亮度平面中,宏塊2261包括來自上半幀的16行,且宏塊2262包括來自下半幀的16行,且每一行是16個(gè)像素長。隔行掃描I半幀是隔行掃描視頻幀的單個(gè)單獨(dú)表示的半幀。隔行掃描P半幀是使用前向預(yù)測編碼的隔行掃描視頻幀的單個(gè)單獨(dú)表示的半幀,隔行掃描B半幀是使用雙向預(yù)測編碼的隔行掃描視頻幀的單個(gè)單獨(dú)表示的半幀。隔行掃描P半幀和B半幀可包括幀內(nèi)編碼宏塊以及不同類型的預(yù)測宏塊。隔行掃描BI半幀是隔行掃描I半幀和隔行掃描B半幀的混合;它們是幀內(nèi)編碼的,但是不用作其它半幀的定位幀。
為編碼/解碼組織為半幀的隔行掃描視頻幀可包括不同半幀類型的各種組合。例如,這樣的幀可在上半幀和下半幀中具有相同的半幀類型,或者在每一半幀中具有不同的半幀類型。在一個(gè)實(shí)現(xiàn)中,半幀類型的可能組合包括I/I、I/P、P/I、P/P、B/B、B/BI、BI/B以及BI/BI。
術(shù)語圖像一般指的是源、已編碼的或已重構(gòu)的圖像數(shù)據(jù)。對于逐行掃描視頻,圖像是逐行掃描視頻幀。對于隔行掃描視頻,圖像可以指的是隔行掃描視頻幀、幀的上半幀、或幀的下半幀,取決于上下文。
或者,編碼器1900和解碼器2000是基于對象的,使用不同的宏塊或塊格式,或?qū)εc8×8的塊和16×16的宏塊不同大小或配置的像素集執(zhí)行操作。
B.視頻編碼器
圖19是廣義的視頻編碼器系統(tǒng)1900的框圖。編碼器系統(tǒng)1900接收包括當(dāng)前圖像1905(例如,逐行掃描視頻幀、隔行掃描視頻幀或隔行掃描視頻幀的半幀)的視頻圖像序列,并產(chǎn)生壓縮的視頻信息1995作為輸出。視頻編碼器的具體實(shí)施例通常使用廣義編碼器1900的變化或補(bǔ)充版本。
編碼器系統(tǒng)1900壓縮預(yù)測圖像和關(guān)鍵圖像。為演示起見,圖19示出了關(guān)鍵圖像通過編碼器系統(tǒng)1900的路徑以及用于預(yù)測圖像的路徑。編碼器系統(tǒng)1900的許多組件用于同時(shí)壓縮關(guān)鍵圖像和預(yù)測圖像兩者。由這些組件執(zhí)行的確切操作可以取決于所壓縮的信息類型而變化。
預(yù)測圖像(例如,逐行掃描P幀或B幀、隔行掃描P半幀或B半幀、或隔行掃描P幀或B幀)按照來自一個(gè)或多個(gè)其它圖像(通常被稱為參考圖像或定位幀)的預(yù)測(或差)來表示。預(yù)測殘差是所預(yù)測的和原始圖像之差。相反,關(guān)鍵圖像(例如,逐行掃描I幀、隔行掃描I半幀或隔行掃描I幀)不參考其它圖像來壓縮。
如果當(dāng)前圖像1905是前向預(yù)測圖像,則運(yùn)動估計(jì)器1910估計(jì)當(dāng)前圖像1905的宏塊或其它像素集相對于一個(gè)或多個(gè)參考圖像(例如,緩沖在圖像存儲1920中的重構(gòu)的前一圖像1925)的運(yùn)動。如果當(dāng)前圖像1905是雙向預(yù)測圖像,則運(yùn)動估計(jì)器1910估計(jì)當(dāng)前圖像1905中相對于多達(dá)四個(gè)重構(gòu)的參考圖像(例如,對于隔行掃描B半幀)的運(yùn)動。通常,運(yùn)動估計(jì)器估計(jì)B圖像中相對于一個(gè)或多個(gè)在時(shí)間上先前的參考圖像以及一個(gè)或多個(gè)在時(shí)間上未來的參考圖像的運(yùn)動。因此,編碼器系統(tǒng)1900可使用單獨(dú)的存儲1920和1922用于多個(gè)參考圖像。對于關(guān)于逐行掃描B幀和隔行掃描B幀和B半幀的更多信息,參見2003年7月18日提交的名為“Advanced Bi-Directional Predictive Coding of Video Frames(視頻幀的高級雙向預(yù)測編碼)”的美國專利申請第10/622,378號,以及2004年6月29日提交的名為“Advanced Bi-Directional Predictive Coding of Interlaced Video(隔行掃描視頻的高級雙向預(yù)測編碼)”的美國專利申請第10/882,135號。
運(yùn)動估計(jì)器1910可按照像素、1/2像素、1/4像素或其它增量來估計(jì)運(yùn)動,并可在逐圖像的基礎(chǔ)或其它基礎(chǔ)上切換運(yùn)動估計(jì)的分辨率。運(yùn)動估計(jì)器1910(和補(bǔ)償器1930)也可在每一幀或其它基礎(chǔ)上在參考圖像像素內(nèi)插的類型之間切換(例如,在雙三次內(nèi)插和雙線性內(nèi)插之間)。運(yùn)動估計(jì)的分辨率可以在水平和垂直上相同或不同。運(yùn)動估計(jì)器1910輸出運(yùn)動信息1915,諸如差分運(yùn)動矢量信息作為輔助信息。編碼器1900通過例如為運(yùn)動矢量計(jì)算一個(gè)或多個(gè)預(yù)測值,計(jì)算運(yùn)動矢量和預(yù)測值之間的差分,以及對差分進(jìn)行熵編碼,來對運(yùn)動信息1915進(jìn)行編碼。為重構(gòu)運(yùn)動矢量,運(yùn)動補(bǔ)償器1930將預(yù)測值與差分運(yùn)動矢量信息組合。以下描述用于計(jì)算運(yùn)動矢量預(yù)測值、計(jì)算差分運(yùn)動矢量、以及重構(gòu)運(yùn)動矢量的各種技術(shù)。
運(yùn)動補(bǔ)償器1930將重構(gòu)的運(yùn)動矢量應(yīng)用于重構(gòu)的圖像1925,以形成經(jīng)運(yùn)動補(bǔ)償?shù)漠?dāng)前圖像1935。然而,預(yù)測很少是完美的,且經(jīng)運(yùn)動補(bǔ)償?shù)漠?dāng)前圖像1935和原始的當(dāng)前圖像1905之間的差異是預(yù)測殘差1945。在稍后的圖像重構(gòu)期間,將預(yù)測殘差1945加到經(jīng)運(yùn)動補(bǔ)償?shù)漠?dāng)前圖像1935,以獲得更接近于原始的當(dāng)前圖像1905的經(jīng)重構(gòu)的圖像。然而,在有損壓縮中,某些信息仍從原始當(dāng)前圖像1905中丟失?;蛘撸\(yùn)動估計(jì)器和運(yùn)動補(bǔ)償器應(yīng)用另一類型的運(yùn)動估計(jì)/補(bǔ)償。
頻率變換器1960將空間域視頻信息轉(zhuǎn)換成頻域(即,頻譜)數(shù)據(jù)。對于基于塊的視頻圖像,頻率變換器1960向像素?cái)?shù)據(jù)或預(yù)測殘差數(shù)據(jù)的塊應(yīng)用DCT、DCT的變體或其它塊變換,從而產(chǎn)生頻率變換系數(shù)塊?;蛘撸l率變換器1960應(yīng)用諸如傅立葉變換等另一常規(guī)頻率變換或使用小波或子帶分析。頻率變換器1960可應(yīng)用8×8、8×4、4×8、4×4或其它大小的頻率變換。
量化器1970然后量化頻譜數(shù)據(jù)系數(shù)塊。量化器向頻譜數(shù)據(jù)應(yīng)用均勻的標(biāo)量量化,其步長在逐圖像的基礎(chǔ)或其它基礎(chǔ)上變化?;蛘?,量化器向頻譜數(shù)據(jù)系數(shù)應(yīng)用另一類型的量化,例如非均勻的、矢量或非自適應(yīng)量化,或直接在不使用頻率變換的編碼器系統(tǒng)中量化空間域數(shù)據(jù)。除自適應(yīng)量化之外,編碼器1900可使用幀丟棄、自適應(yīng)濾波或其它技術(shù)用于速率控制。
編碼器1900可對跳過宏塊(它是沒有某些類型的信息的宏塊)使用特殊的信號表示。跳過宏塊在以下更詳細(xì)描述。
當(dāng)需要重構(gòu)的當(dāng)前圖像用于后續(xù)的運(yùn)動估計(jì)/補(bǔ)償時(shí),反量化器1976在量化的頻譜數(shù)據(jù)系數(shù)上執(zhí)行反量化。反頻率變換器1966然后執(zhí)行頻率變換器1960的逆運(yùn)算,從而產(chǎn)生重構(gòu)的預(yù)測殘差(對于預(yù)測圖像)或重構(gòu)的關(guān)鍵圖像。如果當(dāng)前圖像1905是關(guān)鍵圖像,則重構(gòu)的關(guān)鍵圖像用作重構(gòu)的當(dāng)前圖像(未示出)。如果當(dāng)前圖像1905是預(yù)測圖像,則重構(gòu)的預(yù)測殘差被加到經(jīng)運(yùn)動補(bǔ)償?shù)漠?dāng)前圖像1935,以形成重構(gòu)的當(dāng)前圖像。圖像存儲1920、1922之一或兩者緩沖重構(gòu)的當(dāng)前圖像,以在經(jīng)運(yùn)動補(bǔ)償?shù)念A(yù)測中使用。在某些實(shí)施例中,編碼器向重構(gòu)的幀應(yīng)用分塊濾波器,以自適應(yīng)地平滑圖像中的不連續(xù)性和其它人為因素。
熵編碼器1980壓縮量化器1970的輸出以及某些輔助信息(例如,運(yùn)動信息1915、量化步長)。典型的熵編碼技術(shù)包括算術(shù)編碼、差分編碼、哈夫曼編碼、行程長度編碼、LZ編碼、字典式編碼以及上述的組合。熵編碼器1980通常對不同種類的信息(例如,DC系數(shù)、AC系數(shù)、不同種類的輔助信息)使用不同的編碼技術(shù),并可從特定編碼技術(shù)內(nèi)的多個(gè)代碼表中進(jìn)行選擇。
熵編碼器1980向多路復(fù)用器[“MUX”]1990提供壓縮的視頻信息1995。MUX1990可包括緩沖器,且可將緩沖器級別指示符反饋給比特率自適應(yīng)模塊用于速率控制。在MUX 1990之前或之后,壓縮的視頻信息1995可被信道編碼用于通過網(wǎng)絡(luò)發(fā)送。信道編碼可向壓縮的視頻信息1995應(yīng)用檢錯和糾錯數(shù)據(jù)。
C.視頻解碼器
圖20是通用視頻解碼器系統(tǒng)2000的框圖。解碼器系統(tǒng)2000接收關(guān)于壓縮的視頻圖像序列的信息2095,并產(chǎn)生包括重構(gòu)的圖像2005(例如,逐行掃描視頻幀、隔行掃描視頻幀或隔行掃描視頻幀的半幀)的輸出。視頻解碼器的具體實(shí)施例通常使用廣義解碼器2000的變體或補(bǔ)充版本。
解碼器系統(tǒng)2000解壓預(yù)測圖像和關(guān)鍵圖像。為演示起見,圖20示出了關(guān)鍵圖像通過解碼器系統(tǒng)2000的路徑以及用于前向預(yù)測圖像的路徑。解碼器系統(tǒng)2000的許多組件用于解壓關(guān)鍵圖像和預(yù)測圖像。由這些組件執(zhí)行的確切操作可以取決于所解壓的信息類型而變化。
DEMUX 2090接收關(guān)于壓縮的視頻序列的信息2095,并使得所接收的信息對熵解碼器2080可用。DEMUX 2090可包括抖動緩沖器以及其它緩沖器。在DEMUX2090之前或之后,壓縮的視頻信息可以被信道解碼,并被處理用于檢錯和糾錯。
熵解碼器2080對熵編碼的量化數(shù)據(jù)以及熵編碼的輔助信息(例如,運(yùn)動信息2015、量化步長)進(jìn)行解碼,通常應(yīng)用編碼器中執(zhí)行的熵編碼的逆運(yùn)算。熵解碼技術(shù)包括算術(shù)解碼、差分解碼、哈夫曼解碼、行程長度解碼、LZ解碼、字典式解碼以及上述的組合。熵解碼器2080通常對不同種類的信息(例如,DC系數(shù)、AC系數(shù)、不同種類的輔助信息)使用不同的解碼技術(shù),并可從特定的解碼技術(shù)中的多個(gè)代碼表之中進(jìn)行選擇。
解碼器2000通過例如為運(yùn)動矢量計(jì)算一個(gè)或多個(gè)預(yù)測值、對差分運(yùn)動矢量進(jìn)行熵解碼、以及將解碼的差分運(yùn)動矢量與預(yù)測值組合以重構(gòu)運(yùn)動矢量,來對運(yùn)動信息2015進(jìn)行解碼。
運(yùn)動補(bǔ)償器2030向一個(gè)或多個(gè)參考圖像2025應(yīng)用運(yùn)動信息2015,以形成所重構(gòu)的圖像2005的預(yù)測2035。例如,運(yùn)動補(bǔ)償器2030使用一個(gè)或多個(gè)宏塊運(yùn)動矢量以找出參考圖像2025中的宏塊。一個(gè)或多個(gè)圖像存儲(例如,圖像存儲2020、2022)儲存先前重構(gòu)的圖像以用作參考圖像。通常,B圖像具有一個(gè)以上參考圖像(例如,至少一個(gè)時(shí)間上先前的參考圖像以及至少一個(gè)時(shí)間上未來的參考圖像)。因此,解碼器系統(tǒng)2000可對多個(gè)參考圖像使用單獨(dú)的圖像存儲2020和2022。運(yùn)動補(bǔ)償器2030可以按像素、1/2像素、1/4像素或其它增量來補(bǔ)償運(yùn)動,并可在逐圖像的基礎(chǔ)或其它基礎(chǔ)上切換運(yùn)動補(bǔ)償?shù)姆直媛?。運(yùn)動補(bǔ)償器2030也可在每一幀或其它基礎(chǔ)上在參考圖像像素內(nèi)插的類型之間(例如,在雙三次內(nèi)插和雙線性內(nèi)插之間)切換。運(yùn)動補(bǔ)償?shù)姆直媛士梢栽谒胶痛怪鄙舷嗤虿煌;蛘撸\(yùn)動補(bǔ)償器應(yīng)用另一類型的運(yùn)動補(bǔ)償。運(yùn)動補(bǔ)償器的預(yù)測很少是完美的,因此解碼器2000也重構(gòu)預(yù)測殘差。
反量化器2070對熵解碼的數(shù)據(jù)進(jìn)行反量化。一般而言,反量化器向熵解碼的數(shù)據(jù)應(yīng)用均勻的標(biāo)量反量化,其中步長在逐圖像的基礎(chǔ)或其它基礎(chǔ)上變化?;蛘?,反量化器向數(shù)據(jù)應(yīng)用另一類型的反量化,例如用于在非均勻矢量量化或非自適應(yīng)量化之后重構(gòu),或直接在不使用反頻率變換的解碼器系統(tǒng)中對空間域數(shù)據(jù)進(jìn)行反量化。
反頻率變換器2060將量化的頻域數(shù)據(jù)轉(zhuǎn)換成空間域視頻信息。對于基于塊的視頻圖像,反頻率變換器2060向頻率變換系數(shù)塊應(yīng)用反DCT[“IDCT”]、IDCT的變體或其它反塊變換,從而分別對關(guān)鍵圖像或預(yù)測圖像產(chǎn)生像素?cái)?shù)據(jù)或預(yù)測殘差數(shù)據(jù)?;蛘撸搭l率變換器2060應(yīng)用另一常規(guī)的反頻率變換,諸如傅立葉反變換或使用小波或子帶合成。反頻率變換器2060可應(yīng)用8×8、8×4、4×8、4×4或其它大小的反頻率變換。
對于預(yù)測圖像,解碼器2000將重構(gòu)的預(yù)測殘差2045與經(jīng)運(yùn)動補(bǔ)償?shù)念A(yù)測2035組合,以形成重構(gòu)的圖像2005。當(dāng)解碼器需要重構(gòu)的圖像2005用于后續(xù)的運(yùn)動補(bǔ)償時(shí),圖像存儲(例如,圖像存儲2020)之一或兩者緩沖重構(gòu)的圖像2005以供預(yù)測下一圖像時(shí)使用。在某些實(shí)施例中,解碼器2000向重構(gòu)的圖像應(yīng)用分塊濾波器,以自適應(yīng)地平滑圖像中的不連續(xù)性以及其它人為因素。
III.隔行掃描P幀
典型的隔行掃描視頻幀由在不同的時(shí)刻掃描的兩個(gè)半幀(例如,上半幀和下半幀)構(gòu)成。一般而言,通過將兩個(gè)半幀一起編碼(“幀模式”編碼)來對隔行掃描視頻幀的靜止區(qū)域進(jìn)行編碼是更有效的。另一方面,通過單獨(dú)對各半幀編碼(“半幀模式”編碼)來對隔行掃描視頻幀的運(yùn)動區(qū)域進(jìn)行編碼通常是更有效的,因?yàn)閮蓚€(gè)半幀往往具有不同的運(yùn)動。前向預(yù)測的隔行掃描視頻幀可以被編碼為兩個(gè)單獨(dú)的前向預(yù)測的半幀—隔行掃描P半幀。對前向預(yù)測的隔行掃描視頻幀單獨(dú)地編碼半幀在例如貫穿該隔行掃描視頻幀中有高運(yùn)動,且因此在半幀之間有較多差異時(shí)可能是有效的。隔行掃描的P半幀參考一個(gè)或多個(gè)先前解碼的半幀。例如,在某些實(shí)現(xiàn)中,隔行掃描的P半幀參考一個(gè)或兩個(gè)先前解碼的半幀。對于關(guān)于隔行掃描P半幀的更多信息,參見2003年9月7日提交的名為“Video Encoding and DecodingTools and Techniques(視頻編碼和解碼工具和技術(shù))”的美國臨時(shí)專利申請第60/501,081號,以及2004年5月27日提交的名為“Predicting Motion Vectors forFields of Forward-predicted Interlaced Video Frames(為前向預(yù)測的隔行掃描視頻幀的半幀預(yù)測運(yùn)動矢量)”的美國專利申請第10/857,473號。
或者,前向預(yù)測的隔行掃描視頻幀可使用半幀編碼和幀編碼的混合來編碼,作為隔行掃描的P幀。對于隔行掃描P幀的宏塊,宏塊包括上半幀和下半幀的像素行,且這些行可以在幀編碼模式中共同編碼或者在半幀編碼模式中單獨(dú)編碼。
A.隔行掃描P幀中的宏塊類型。
在某些實(shí)現(xiàn)中,隔行掃描P幀中的宏塊可以是以下五種類型之一1MV、2半幀MV、4幀MV、4半幀MV以及幀內(nèi)編碼。
在1MV宏塊中,宏塊中四個(gè)亮度塊的位移由單個(gè)運(yùn)動矢量來表示。對應(yīng)的色度運(yùn)動矢量可以從亮度運(yùn)動矢量中導(dǎo)出以表示該運(yùn)動矢量的兩個(gè)8×8的色度塊中的每一個(gè)的位移。例如,再次參考圖21中所示的宏塊的排列,1MV宏塊2100包括四個(gè)8×8的亮度塊以及兩個(gè)8×8的色度塊。亮度塊(Y1到Y(jié)4)的位移是由單個(gè)運(yùn)動矢量來表示的,而對應(yīng)的色度運(yùn)動矢量可以從亮度運(yùn)動矢量中導(dǎo)出,以表示兩個(gè)色度塊(U和V)中的每一個(gè)的位移。
在2半幀MV宏塊中,宏塊中16×16的亮度分量的每一半幀的位移是由不同的運(yùn)動矢量來描述的。例如,圖23示出了上半幀運(yùn)動矢量描述了亮度分量的偶數(shù)行的位移,而下半幀運(yùn)動矢量描述了亮度分量的奇數(shù)行的位移。使用上半幀運(yùn)動矢量,編碼器可導(dǎo)出描述色度快的偶數(shù)行的位移的對應(yīng)的上半幀色度運(yùn)動矢量。類似地,編碼器可導(dǎo)出描述色度塊的奇數(shù)行的位移的下半幀色度運(yùn)動矢量。
參考圖24,在4幀MV宏塊中,四個(gè)亮度塊中的每一個(gè)的位移是由不同的運(yùn)動矢量(MV1、MV2、MV3和MV4)來描述的。每一色度塊可以通過使用描述四個(gè)4×4色度子塊的位移的四個(gè)導(dǎo)出的色度運(yùn)動矢量(MV1′、MV2′、MV3′和MV4′)來運(yùn)動補(bǔ)償。用于每一4×4色度子塊的運(yùn)動矢量可以從用于空間上對應(yīng)的亮度塊的運(yùn)動矢量中導(dǎo)出。
參考圖25,在4半幀MV宏塊中,16×16亮度分量中的每一半幀的位移是由兩個(gè)不同的運(yùn)動矢量來描述的。亮度分量的行被垂直地細(xì)分以形成兩個(gè)8×16的區(qū)域,其每一個(gè)由與8×8的奇數(shù)行區(qū)域交錯的8×8的偶數(shù)行區(qū)域構(gòu)成。對于偶數(shù)行,左側(cè)的8×8區(qū)域的位移是由左上半幀塊運(yùn)動矢量來描述的,而右側(cè)的8×8區(qū)域的位移是由右上半幀塊運(yùn)動矢量來描述的。對于奇數(shù)行,左側(cè)的8×8區(qū)域的位移是由左下半幀塊運(yùn)動矢量來描述的,而右側(cè)的8×8區(qū)域的位移是由右下半幀塊運(yùn)動矢量來描述的。每一色度塊也可被劃分成四個(gè)區(qū)域,而每一色度塊區(qū)域可以使用導(dǎo)出的運(yùn)動矢量來運(yùn)動補(bǔ)償。
對于幀內(nèi)編碼宏塊,運(yùn)動被假定為零。
B.計(jì)算隔行掃描P幀中的運(yùn)動矢量預(yù)測值
一般而言,為隔行掃描P幀中的當(dāng)前宏塊計(jì)算運(yùn)動矢量預(yù)測值的過程由兩個(gè)步驟構(gòu)成。首先,從其相鄰宏塊中收集當(dāng)前宏塊的多達(dá)三個(gè)候選運(yùn)動矢量。例如,在一個(gè)實(shí)現(xiàn)中,基于圖26A-26B所示的排列(以及對于頂行宏塊的各種特殊情況等)收集候選運(yùn)動矢量。或者,候選運(yùn)動矢量可以按某一其它順序或排列收集。其次,從候選運(yùn)動矢量集中計(jì)算當(dāng)前宏塊的運(yùn)動矢量預(yù)測值。例如,預(yù)測值可使用3預(yù)測中值或某一其它方法來計(jì)算。
IV.隔行掃描P幀中的運(yùn)動矢量預(yù)測的革新
運(yùn)動矢量預(yù)測的過程可以在概念上分成兩個(gè)步驟。首先,從相鄰塊中收集候選運(yùn)動矢量集,且如果適當(dāng),根據(jù)用于當(dāng)前運(yùn)動矢量的預(yù)測類型將其轉(zhuǎn)換成適當(dāng)?shù)念愋?。然后,從候選運(yùn)動矢量集中導(dǎo)出運(yùn)動矢量預(yù)測值。如下更詳細(xì)描述的,當(dāng)前運(yùn)動矢量預(yù)測值可以用不同的方式從候選運(yùn)動矢量中導(dǎo)出,諸如通過在一組完全的有效候選運(yùn)動矢量上執(zhí)行中值運(yùn)算,通過當(dāng)一組完全的有效候選運(yùn)動矢量不可用時(shí)僅選擇一個(gè)候選運(yùn)動矢量,或通過某一其它方法。
如上文在第III節(jié)中所解釋的,隔行掃描P幀中的每一宏塊可以使用1幀運(yùn)動矢量、4幀運(yùn)動矢量、2半幀運(yùn)動矢量或4半幀運(yùn)動矢量來運(yùn)動補(bǔ)償。每一半幀運(yùn)動矢量可以指的是參考幀的上半幀或下半幀,而與對方應(yīng)用哪一半幀無關(guān)。在某些實(shí)現(xiàn)中,運(yùn)動矢量預(yù)測考慮若干因素,諸如相鄰的宏塊或塊的運(yùn)動矢量和運(yùn)動預(yù)測類型、當(dāng)前運(yùn)動矢量類型等,以為當(dāng)前宏塊(或其塊或半幀)的當(dāng)前運(yùn)動矢量導(dǎo)出運(yùn)動矢量預(yù)測值。
所描述的實(shí)施例實(shí)現(xiàn)了所描述的一個(gè)或多個(gè)技術(shù)和工具,用于預(yù)測、編碼和解碼隔行掃描幀編碼的圖像中的運(yùn)動矢量,包括但不限于
1.使用4半幀運(yùn)動矢量預(yù)測隔行掃描P幀中的宏塊(例如,與其它諸如1MV、4幀MV、2半幀MV和/或幀內(nèi)編碼等其它宏塊類型相結(jié)合。)
2.通過將中值運(yùn)算的使用限于所有三個(gè)候選相鄰運(yùn)動矢量都可用的情況,并在其它情況下以預(yù)先指定的順序取相鄰運(yùn)動矢量之一,來改進(jìn)運(yùn)動矢量預(yù)測。
3.對于半幀運(yùn)動矢量,考慮合法候選運(yùn)動矢量集合中的半幀極性。
所描述的技術(shù)和工具可彼此結(jié)合或與其它技術(shù)和工具結(jié)合使用,或可單獨(dú)使用。
A.隔行掃描P幀中的4半幀MV宏塊
在某些實(shí)現(xiàn)中,編碼器/解碼器處理隔行掃描P幀中具有四個(gè)半幀運(yùn)動矢量的宏塊(例如,4半幀MV宏塊)。4半幀MV宏塊提供了對運(yùn)動的改進(jìn)的空間自適應(yīng)性,用于隔行掃描P幀中的半幀編碼宏塊的運(yùn)動估計(jì)和補(bǔ)償。
例如,圖27示出了用于處理隔行掃描P幀中具有四個(gè)半幀運(yùn)動矢量的宏塊的技術(shù)2700。在2710,編碼器/解碼器接收隔行掃描P幀中的宏塊的四個(gè)半幀運(yùn)動矢量的運(yùn)動矢量信息(例如,運(yùn)動矢量差分、運(yùn)動矢量值)。然后,在2720,編碼器/解碼器使用四個(gè)半幀運(yùn)動矢量來處理這些宏塊(例如,通過重構(gòu)宏塊)。
或者,編碼器/解碼器在沒有4半幀MV宏塊的隔行掃描P幀中執(zhí)行運(yùn)動估計(jì)/補(bǔ)償。
B.收集候選運(yùn)動矢量
在某些實(shí)現(xiàn)中,候選運(yùn)動矢量的收集順序是重要的。例如,隔行掃描P幀中當(dāng)前宏塊的三個(gè)候選運(yùn)動矢量是從其相鄰宏塊中收集的,如圖26A-26B所示。在一個(gè)實(shí)現(xiàn)中,收集順序從相鄰宏塊A開始,前進(jìn)到宏塊B,然后在宏塊C結(jié)束。
圖41-51中的偽代碼描述了在一個(gè)實(shí)現(xiàn)中如何收集候選運(yùn)動矢量。編碼器/解碼器檢查相鄰宏塊以確定它們是否“存在”(即,有效),用于為當(dāng)前宏塊(包括為塊、宏塊的半幀或宏塊的半個(gè)半幀)預(yù)測運(yùn)動矢量。如果對應(yīng)的宏塊/塊位于幀邊界之外,或者如果對應(yīng)的宏塊/塊是不同片的一部分,則候選預(yù)測值被認(rèn)為是不存在的(即,無效)。由此,不跨片邊界來執(zhí)行運(yùn)動矢量預(yù)測。
如圖41-51所示,如果相鄰宏塊有效且不是幀內(nèi)編碼的,則將來自相鄰宏塊的運(yùn)動矢量添加到候選運(yùn)動矢量集。添加到候選運(yùn)動矢量集的實(shí)際運(yùn)動矢量取決于相鄰宏塊相對于當(dāng)前宏塊的位置(例如,位置A、B或C),且取決于相鄰宏塊和當(dāng)前宏塊的類型(例如,1MV、4幀MV、2半幀MV或4半幀MV)。
圖41中的偽代碼4100示出在一個(gè)實(shí)現(xiàn)中如何為1MV宏塊中的當(dāng)前運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
圖42、43、44和45中的偽代碼4200、4300、4400和4500分別示出在一個(gè)實(shí)現(xiàn)中,如何為當(dāng)前4幀MV宏塊中的四個(gè)幀塊運(yùn)動矢量中的每一個(gè)收集來自相鄰宏塊/塊的候選運(yùn)動矢量。在這一實(shí)現(xiàn)中,編碼器/解碼器使用偽代碼4200、4300、4400和4500中所示的算法,以分別為左上幀塊運(yùn)動矢量、右上幀塊運(yùn)動矢量、左下幀塊運(yùn)動矢量和右下幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
圖46和47中的偽代碼4600和4700分別示出在一個(gè)實(shí)現(xiàn)中如何為當(dāng)前2半幀MV宏塊中的兩個(gè)半幀運(yùn)動矢量中的每一個(gè)收集來自相鄰宏塊的候選運(yùn)動矢量。在這一實(shí)現(xiàn)中,編碼器/解碼器適用偽代碼4600和4700中所示的算法來分別為上半幀運(yùn)動矢量和下半幀運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
圖48、49、50和51中的偽代碼4800、4900、5000和5100分別示出在一個(gè)實(shí)現(xiàn)中,如何為當(dāng)前4半幀MV宏塊中的四個(gè)半幀塊運(yùn)動矢量中的每一個(gè)收集來自相鄰宏塊/塊的候選運(yùn)動矢量。在這一實(shí)現(xiàn)中,編碼器/解碼器使用偽代碼4800、4900、5000和5100中所示的算法來分別為左上半幀塊運(yùn)動矢量、右上半幀塊運(yùn)動矢量、左下半幀塊運(yùn)動矢量和右下半幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
在某些情況下,所選擇的候選運(yùn)動矢量實(shí)際上是相鄰宏塊中的運(yùn)動矢量的平均值。在一個(gè)實(shí)現(xiàn)中,給定兩個(gè)半幀運(yùn)動矢量(MVX1,MVY1)和(MVX2,MVY2),則用于形成候選幀運(yùn)動矢量(MVXA,MVYA)的求平均運(yùn)算為
MVXA=(MVX1+MVX2+1)>>1;
MVYA=(MVY1+MVY2+1)>>1;
或者,候選運(yùn)動矢量可以依照與圖41-51中所示的不同的收集規(guī)則來收集。例如,從具有一個(gè)以上運(yùn)動矢量的相鄰宏塊(例如,4幀MV、2半幀MV或4半幀MV宏塊)中選擇為候選運(yùn)動矢量的特定運(yùn)動矢量可以變化。作為另一示例,候選運(yùn)動矢量集中的運(yùn)動矢量的順序可以從所描述的A-B-C順序調(diào)整為某一其它順序。
C.從候選運(yùn)動矢量中計(jì)算幀MV預(yù)測值
圖52中的偽代碼5200描述了一個(gè)實(shí)現(xiàn)中如何為幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值(PMVx,PMVy)。在偽代碼5200中,TotalValidMV(總有效MV)表示候選運(yùn)動收矢量集中的有效運(yùn)動矢量的總數(shù)(TotalValidMV=0、1、2或3),而ValidMV(有效MV)數(shù)組包括候選運(yùn)動矢量集中的有效運(yùn)動矢量。
在一個(gè)實(shí)現(xiàn)中,偽代碼5200用于為1MV宏塊中的運(yùn)動矢量以及4幀MV宏塊中四個(gè)幀塊運(yùn)動矢量中的每一個(gè)從候選運(yùn)動矢量集中計(jì)算預(yù)測值。
D.從候選運(yùn)動矢量中計(jì)算半幀MV預(yù)測值
本節(jié)描述了用于在給定候選運(yùn)動矢量集時(shí)為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值的技術(shù)和工具。本節(jié)中所描述的技術(shù)和工具可用于為兩個(gè)半幀運(yùn)動矢量(在2半幀MV宏塊中)中的每一個(gè)以及四個(gè)半幀運(yùn)動矢量(在4半幀MV宏塊中)中的每一個(gè)計(jì)算預(yù)測值。
在某些實(shí)現(xiàn)中,編碼器/解碼器在計(jì)算預(yù)測值時(shí)考慮由候選運(yùn)動矢量參考的半幀的極性。圖28示出了用于基于候選運(yùn)動矢量的極性為半幀編碼的宏塊計(jì)算運(yùn)動矢量預(yù)測值的技術(shù)2800。在2810,編碼器/解碼器確定用于為當(dāng)前宏塊的當(dāng)前半幀預(yù)測半幀運(yùn)動矢量的候選運(yùn)動矢量。在2820,編碼器/解碼器確定一個(gè)或多個(gè)有效候選運(yùn)動矢量的半幀極性。然后,在2830,編碼器/解碼器至少部分地基于一個(gè)或多個(gè)有效候選運(yùn)動矢量的半幀極性為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值。例如,在一個(gè)實(shí)現(xiàn)中,候選運(yùn)動矢量被分成兩個(gè)集合,其中一個(gè)集合僅包含指向與當(dāng)前半幀相同的半幀的運(yùn)動矢量,而另一集合包含指向相反的半幀的運(yùn)動矢量。然后,編碼器/解碼器使用這兩個(gè)集合之一來計(jì)算運(yùn)動矢量預(yù)測值。盡管未在圖28中示出,但為當(dāng)前宏塊計(jì)算運(yùn)動矢量預(yù)測值的過程可對宏塊的每一運(yùn)動矢量以及幀中的其它宏塊重復(fù)。
假定運(yùn)動矢量是以四分之一像素的單位來表示的,編碼器/解碼器可通過對其y分量執(zhí)行以下檢查來檢查候選運(yùn)動矢量是指向相同的半幀還是相反的半幀(相對于當(dāng)前半幀的極性)
if(ValidMVy&4){
ValidMV指向相反的半幀。
}else{
ValidMV指向相同的半幀。
}
在以上偽代碼中,ValidMVy是以四分之一像素的增量所測得的候選運(yùn)動矢量的y分量。因此,在二進(jìn)制中,ValidMVy的最低位是四分之一像素位,第二最低位是半像素位,第三最低位是全像素位。因此,逐位AND運(yùn)算(ValidMVy&4)確定全像素位是1(指示奇數(shù))還是0(指示偶數(shù))。如果整數(shù)偏移量為奇數(shù),則候選運(yùn)動矢量參考了參考幀中相反極性的半幀。如果整數(shù)偏移量是偶數(shù),則候選運(yùn)動矢量參考了參考幀中相同極性的半幀。
或者,候選運(yùn)動矢量的極性可以按某一其它方式來確定,或者在計(jì)算運(yùn)動矢量預(yù)測值的過程中可以不考慮候選運(yùn)動矢量的極性。
圖53中的偽代碼5300描述了一個(gè)實(shí)現(xiàn)中如何為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值(PMVx,PMVy)。在偽代碼5300中,SameFieldMV[ ](相同半幀MV)和OppFieldMV[ ](相反半幀MV)表示兩個(gè)候選運(yùn)動矢量集,而NumSameFieldMV(相同半幀MV數(shù))和NumOppFieldMV(相反半幀MV數(shù))表示屬于每一集合的候選運(yùn)動矢量的數(shù)目。在偽代碼5300所示的示例中,這些集合中可用候選運(yùn)動矢量的數(shù)目確定了是否使用中值運(yùn)算來計(jì)算運(yùn)動矢量預(yù)測值。
圖29示出了用于確定在為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值時(shí)是否執(zhí)行中值運(yùn)算的技術(shù)2900。在2910,編碼器/解碼器確定用于預(yù)測當(dāng)前宏塊中的半幀運(yùn)動矢量的有效候選運(yùn)動矢量的數(shù)目。在2920,如果有三個(gè)有效候選運(yùn)動矢量,則在2930,可在計(jì)算預(yù)測值過程中使用中值運(yùn)算。在2940,如果沒有三個(gè)有效候選運(yùn)動矢量(即,有兩個(gè)或更少的有效候選運(yùn)動矢量),則使用另一方法從可用有效候選運(yùn)動矢量中選擇一個(gè)運(yùn)動矢量預(yù)測值,而不使用中值運(yùn)算。
在偽代碼5300的示例中,編碼器/解碼器通過在所有三個(gè)候選運(yùn)動矢量有效時(shí),以及在所有三個(gè)有效候選運(yùn)動矢量都是相同極性時(shí),對候選運(yùn)動矢量的x分量或y分量執(zhí)行中值運(yùn)算(例如,median3),來導(dǎo)出運(yùn)動矢量預(yù)測值。如果所有三個(gè)候選運(yùn)動矢量都有效,但是并非它們?nèi)慷际窍嗤臉O性,則編碼器/解碼器選擇具有最多候選運(yùn)動矢量的集合來導(dǎo)出運(yùn)動矢量預(yù)測值。在兩個(gè)集合具有相同數(shù)目的候選運(yùn)動矢量的情況下,編碼器/解碼器使用集合SameFieldMV[ ]。對于有三個(gè)以下候選運(yùn)動矢量的情況,編碼器/解碼器以預(yù)先指定的順序從所選擇的集合中選擇第一個(gè)候選運(yùn)動矢量。在該示例中,每一集合中的候選運(yùn)動矢量的順序從候選運(yùn)動矢量A(如果存在)開始,接著是候選運(yùn)動矢量B(如果存在),然后是候選運(yùn)動矢量C(如果存在)。例如,如果編碼器/解碼器使用集合SameFieldMV[ ],且如果集合SameFieldMV[ ]僅包含候選運(yùn)動矢量B和候選運(yùn)動矢量C,則編碼器/解碼器使用候選運(yùn)動矢量B作為運(yùn)動矢量預(yù)測值。如果有效候選運(yùn)動矢量的數(shù)目為零,則編碼器/解碼器將預(yù)測值設(shè)置為(0,0)。
或者,運(yùn)動矢量預(yù)測值可以按除上述以外的方式來計(jì)算。例如,盡管偽代碼5300包括對于選擇相同半幀候選運(yùn)動矢量的偏差,然而可以調(diào)整預(yù)測值的計(jì)算以去除該偏差或使用相反半幀的偏差。作為另一示例,可以在更多情況下使用中值運(yùn)算(例如,當(dāng)存在兩個(gè)有效候選半幀運(yùn)動矢量時(shí)),或完全不使用中值運(yùn)算,或者對于兩個(gè)有效候選運(yùn)動矢量的非中值運(yùn)算可以是求平均運(yùn)算。作為又一示例,集合中候選運(yùn)動矢量的順序可被調(diào)整,或者候選運(yùn)動矢量可被全部儲存在一個(gè)集合中。
V.用于隔行掃描幀編碼圖像的宏塊信息信號表示的革新
所描述的實(shí)施例包括用于用信號表示隔行掃描幀編碼圖像(例如,隔行掃描P幀、隔行掃描B幀等)的宏塊信息的技術(shù)和工具。例如,所描述的技術(shù)和工具包括用于用信號表示隔行掃描P幀的宏塊信息的技術(shù)和工具,以及用于使用和用信號表示隔行掃描P幀和其它隔行掃描圖像(例如,隔行掃描B幀、隔行掃描P半幀、隔行掃描B半幀等)中的跳過宏塊的技術(shù)和工具。所描述的實(shí)施例實(shí)現(xiàn)了包括但不限于以下的所描述的技術(shù)和工具中的一個(gè)或多個(gè)
1.用對于隔行掃描P幀的半幀/幀編碼類型信息(例如,使用宏塊級句法元素MBMODE),對運(yùn)動補(bǔ)償類型(例如,1幀MV、4幀MV、2半幀MV、4半幀MV等)以及可能的其它信息進(jìn)行聯(lián)合編碼。
2.用信號表示宏塊跳過條件。信號表示可以與諸如MBMODE等其它句法元素分離地執(zhí)行。跳過條件指示宏塊是1MV宏塊,具有零差分運(yùn)動矢量,以及沒有編碼的塊。跳過信息可以在壓縮位平面中編碼。
所描述的技術(shù)和工具可彼此結(jié)合或與其它技術(shù)和工具結(jié)合使用,或可單獨(dú)使用。
A.跳過宏塊的信號表示
在某些實(shí)現(xiàn)中,編碼器用信號表示跳過的宏塊。例如,當(dāng)宏塊用一個(gè)運(yùn)動矢量來編碼,具有零運(yùn)動矢量差分以及沒有編碼的塊(即,沒有任何塊的殘差)時(shí),編碼器用信號表示隔行掃描幀中跳過的宏塊。跳過信息可被編碼為壓縮位平面(例如,在幀級),或者可在每一宏塊的基礎(chǔ)上在一個(gè)比特上用信號表示(例如,在宏塊級)。對宏塊的跳過條件的信號表示與對宏塊的宏塊模式的信號表示分離。解碼器執(zhí)行對應(yīng)的解碼。
對跳過宏塊的這一定義利用了這樣一個(gè)觀察結(jié)果當(dāng)使用一個(gè)以上運(yùn)動矢量來編碼宏塊時(shí),由于不可能所有的運(yùn)動矢量差分都為零且所有的塊都不被編碼,因此該宏塊很少被跳過。由此,當(dāng)宏塊用信號表示為被跳過時(shí),從跳過條件中隱含了宏塊模式(1MV),則無需為該宏塊發(fā)送該模式。在隔行掃描P幀中,1MV宏塊是用一個(gè)幀運(yùn)動矢量來運(yùn)動補(bǔ)償?shù)摹?br> 圖30示出了用于確定是否跳過隔行掃描預(yù)測幀(例如,隔行掃描P幀、隔行掃描B幀、或包括隔行掃描P半幀和/或隔行掃描B半幀的幀)中特定宏塊的編碼的技術(shù)3000。對于給定的宏塊,編碼器在3010檢查該宏塊是否為1MV宏塊。在3020,如果宏塊不是1MV宏塊,則編碼器不跳過該宏塊。否則,在3030,編碼器檢查該宏塊的一個(gè)運(yùn)動矢量是否等于其因果預(yù)測的運(yùn)動矢量(例如,該宏塊的差分運(yùn)動矢量是否等于零)。在3040,如果宏塊的運(yùn)動矢量不等于因果預(yù)測的運(yùn)動,則編碼器不跳過該宏塊。否則,在3050,編碼器檢查對該宏塊的塊是否還存在任何殘差要編碼。在3060,如果存在殘差要編碼,則編碼器不跳過該宏塊。在3070,如果對該宏塊的塊沒有殘差,則編碼器跳過該宏塊。在3080,編碼器可繼續(xù)編碼或跳過宏塊,直到編碼完成。
在一個(gè)實(shí)現(xiàn)中,宏塊級SKIPMBBIT字段(也可被標(biāo)記為SKIPMB等)指示宏塊的跳過條件。如果SKIPMBBIT字段為1,則當(dāng)前宏塊被跳過,且在SKIPMBBIT字段之后不發(fā)送任何其它信息。另一方面,如果SKIPMBBIT字段不是1,則解碼MBMODE字段以指示宏塊的類型以及關(guān)于當(dāng)前宏塊的其它信息,諸如以下在第V.B節(jié)中描述的信息。
在幀級,SKIPMB字段指示幀中宏塊的跳過信息。在一個(gè)實(shí)現(xiàn)中,跳過信息可以在若干中模式之一中編碼。例如,在原始編碼模式中,SKIPMB字段指示在宏塊級SKIPMBBIT的存在。在位平面編碼模式中,SKIPMB字段將跳過信息儲存在壓縮的位平面中。可用的位平面編碼模式包括普通-2模式、差分-2模式、普通-6模式、差分-6模式、行跳過模式和列跳過模式。位平面編碼模式在以下第VII節(jié)中更詳細(xì)描述。解碼的SKIPMB位平面對每一宏塊包含一個(gè)比特,且指示每一相應(yīng)宏塊的跳過條件。
或者,跳過的宏塊以某一其它方式或在比特流中的某一其它級上用信號表示。例如,在半幀級發(fā)送壓縮的位平面。作為另一替換,跳過條件可被定義成隱含與上述信息不同和/或除上述信息之外的關(guān)于跳過宏塊的信息。
B.宏塊模式的信號表示
在某些實(shí)現(xiàn)中,編碼器用宏塊的半幀/幀編碼類型信息,對關(guān)于宏塊的運(yùn)動補(bǔ)償類型和可能的其它信息進(jìn)行聯(lián)合編碼。例如,編碼器使用一個(gè)或多個(gè)可變長度編代碼表,對五種運(yùn)動補(bǔ)償類型(1MV、4幀MV、2半幀MV、4半幀MV和幀內(nèi)編碼)之一與半幀變換/幀變換/沒有編碼的塊事件一起進(jìn)行聯(lián)合編碼。解碼器執(zhí)行對應(yīng)的解碼。
關(guān)于宏塊的聯(lián)合編碼運(yùn)動補(bǔ)償類型和半幀/幀編碼類型信息利用了這樣一個(gè)觀察結(jié)果某些半幀/幀編碼類型更有可能出現(xiàn)在給定運(yùn)動補(bǔ)償類型的宏塊的某些上下文中。然后可使用可變長度編碼來向運(yùn)動補(bǔ)償類型和半幀/幀編碼類型的更可能的組合分配較短的碼。對于更進(jìn)一步的靈活性,可使用多個(gè)可變長度編代碼表,并且編碼器可根據(jù)情況在表之間切換。由此,對宏塊的運(yùn)動補(bǔ)償類型和半幀/幀編碼類型信息進(jìn)行聯(lián)合編碼可提供編碼額外開銷中的節(jié)省,否則這些開銷將用于對每一宏塊單獨(dú)地用信號表示半幀/幀編碼類型。
例如,在某些實(shí)現(xiàn)中,編碼器為宏塊選擇一個(gè)運(yùn)動補(bǔ)償類型(例如,1MV、4幀MV、2半幀MV或4半幀MV)以及半幀/幀編碼類型(例如,半幀、幀或沒有編碼的塊)。編碼器對該宏塊的運(yùn)動補(bǔ)償類型和半幀/幀編碼類型進(jìn)行聯(lián)合編碼。編碼器也可將其它信息與運(yùn)動補(bǔ)償類型和半幀/幀編碼類型一起進(jìn)行聯(lián)合編碼。例如,編碼器可對指示宏塊的差分運(yùn)動矢量的存在或缺乏(例如,對于具有一個(gè)運(yùn)動矢量的宏塊)的信息進(jìn)行聯(lián)合編碼。
解碼器執(zhí)行對應(yīng)的解碼。例如,圖31示出了在某些實(shí)現(xiàn)中,用于對隔行掃描P幀中的宏塊的聯(lián)合編碼的運(yùn)動補(bǔ)償類型信息和半幀/幀編碼類型信息進(jìn)行解碼的技術(shù)3100。在3110,解碼器接收包括表示宏塊的運(yùn)動補(bǔ)償類型和半幀/幀編碼類型的聯(lián)合碼(例如,來自可變編代碼表的可變長度碼)的宏塊信息。在3120,解碼器對該聯(lián)合碼進(jìn)行解碼(例如通過在可變長度編代碼表中查找該聯(lián)合碼),以獲得該宏塊的運(yùn)動補(bǔ)償類型信息和半幀/幀編碼類型信息。
在一個(gè)實(shí)現(xiàn)中,宏塊級比特流元素MBMODE聯(lián)合地指定宏塊的類型(1MV、4幀MV、2半幀MV、4半幀MV或幀內(nèi)編碼)、幀間編碼宏塊的半幀/幀編碼類型(半幀、幀或沒有編碼的塊)、以及對1MV宏塊是否存在差分運(yùn)動矢量。在該示例中,MBMODE可取15個(gè)可能值中的一個(gè)。設(shè)<MVP>表示對于是存在還是缺少非零1MV差分運(yùn)動矢量的信號表示。設(shè)<Fiele/Frame transform>表示對該宏塊的殘差是(1)幀編碼的;(2)半幀編碼的;還是(3)零個(gè)編碼塊(即CBP=0)的信號表示。MBMODE用信號聯(lián)合表示以下信息
MBMODE={<1MV,MVP,F(xiàn)ield/Frame transform>,<2Field MV,F(xiàn)ield/Frametransform>,<4Frame MV,F(xiàn)ield/Frame transform>,<4Field MV,F(xiàn)ield/Frametransform>,<INTRA>};
情況<1MV,MVP=0,CBP=0>不是由MBMODE來用信號表示的,而是由跳過條件來用信號表示的。(用信號表示該跳過條件的示例在以上第V.A節(jié)中提供。)
在該示例中,對于幀間編碼的宏塊,當(dāng)MBMODE中的<Field/frame Transform>指示沒有編碼的塊時(shí),CBPCY句法元素不被解碼。另一方面,如果MBMODE中的<Field/frame Transform>指示半幀或幀變換,則CBPCY被解碼。對于非1MV幀間編碼的宏塊,發(fā)送一附加字段以指示差分運(yùn)動矢量中哪一個(gè)是非零的。在2半幀MV宏塊的情況下,發(fā)送2MVBP字段以指示兩個(gè)運(yùn)動矢量中的哪一個(gè)包含非零差分運(yùn)動矢量。類似地,發(fā)送4MVBP字段以指示四個(gè)運(yùn)動矢量中的哪一個(gè)包含非零差分運(yùn)動矢量。對于幀內(nèi)編碼的宏塊,半幀/幀編碼類型和零編碼塊在單獨(dú)的字段中編碼。
或者,編碼器/解碼器對運(yùn)動補(bǔ)償類型和半幀/幀編碼類型的不同組合進(jìn)行聯(lián)合編碼。作為另一替換,編碼器/解碼器對除運(yùn)動矢量差分的存在以外的其它信息進(jìn)行聯(lián)合編碼/解碼。
在某些實(shí)現(xiàn)中,編碼器/解碼器使用若干可變長度代碼表之一來編碼MBMODE,并且可自適應(yīng)地在代碼表之間切換。例如,在某些實(shí)現(xiàn)中,幀級句法元素MBODETAB是2位字段,它指示用于對該幀中的宏塊的MBMODE解碼的表。在該示例中,表被組合成四個(gè)表的集合,且表的集合取決于是否對該幀啟用了4運(yùn)動矢量編碼來使用。
示例性MBMODE可變長度代碼表(例如,對每一集合的表0-3-混合MV或1MV)在以下表1-8中提供
表1隔行掃描P幀混合MV MB模式表0
表2隔行掃描幀混合MV MB模式表1
表3隔行掃描幀混合MV MB模式表2
表4隔行掃描幀混合MV MB模式表3
表5隔行掃描幀1MV MB模式表0
表6隔行掃描幀1MV MB模式表1
表7隔行掃描幀1MV MB模式表2
表8隔行掃描幀1MV MB模式表3
VI.色度運(yùn)動矢量導(dǎo)出中的革新
所描述的實(shí)施例包括用于從亮度(或“l(fā)uma”)運(yùn)動矢量中導(dǎo)出色度(或“chroma”)運(yùn)動矢量的技術(shù)和工具。某些所描述的技術(shù)和工具涉及導(dǎo)出幀編碼的隔行掃描圖像(例如,隔行掃描P幀、隔行掃描B幀等)中的色度運(yùn)動矢量以及改進(jìn)隔行掃描幀編碼圖像的速率/失真性能。在所描述的技術(shù)和工具中,色度運(yùn)動矢量不在比特流中顯式地發(fā)送。相反,它們從對幀的宏塊或塊編碼和發(fā)送的亮度運(yùn)動矢量中導(dǎo)出。
所描述的實(shí)施例實(shí)現(xiàn)了包括但不限于以下描述的技術(shù)和工具中的一個(gè)或多個(gè)
1.編碼器/解碼器通過對宏塊中的每一亮度運(yùn)動矢量導(dǎo)出色度運(yùn)動矢量,獲得隔行掃描幀編碼圖像(例如,隔行掃描P幀、隔行掃描B幀)中的亮度和色度運(yùn)動矢量之間的一對一對應(yīng)性。色度運(yùn)動矢量然后用于對相應(yīng)的色度塊或半幀進(jìn)行運(yùn)動補(bǔ)償。
2.當(dāng)對應(yīng)的宏塊通過在二次采樣之后將可變偏移量(例如,使用查找表)加到色度運(yùn)動矢量來進(jìn)行半幀編碼時(shí),編碼器/解碼器維護(hù)亮度和色度運(yùn)動矢量之間的相干性。
盡管所描述的技術(shù)應(yīng)用于隔行掃描視頻中的4∶2∶0宏塊格式,然而所描述的技術(shù)可應(yīng)用于其它宏塊格式(例如,4∶2∶2、4∶4∶4等)以及其它種類的視頻。所描述的技術(shù)和工具可彼此結(jié)合或與其它技術(shù)和工具結(jié)合使用,或可單獨(dú)使用。
A.一對一色度運(yùn)動矢量對應(yīng)性
在某些實(shí)現(xiàn)中,編碼器/解碼器導(dǎo)出并使用與用于預(yù)測宏塊的亮度運(yùn)動矢量相同數(shù)目的色度運(yùn)動矢量來預(yù)測宏塊。例如,當(dāng)編碼器/解碼器對給定宏塊使用一個(gè)、兩個(gè)或四個(gè)亮度半幀或幀類型的運(yùn)動矢量時(shí),編碼器/解碼器對給定宏塊分別導(dǎo)出一個(gè)、兩個(gè)或四個(gè)色度運(yùn)動矢量。這一技術(shù)與早先的編碼器和解碼器(例如,在逐行掃描幀或隔行掃描P幀上下文中)不同,其中早先的編碼器或解碼器總是對每一宏塊中任何數(shù)量的亮度運(yùn)動矢量(例如,一個(gè)或四個(gè))導(dǎo)出單個(gè)色度運(yùn)動矢量。
圖32是示出用于對宏塊中的多個(gè)亮度運(yùn)動矢量中的每一個(gè)導(dǎo)出色度運(yùn)動矢量的技術(shù)3200的流程圖。在3210,編碼器/解碼器接收宏塊的多個(gè)亮度運(yùn)動矢量。在3220,編碼器/解碼器對多個(gè)亮度運(yùn)動矢量中的每一個(gè)導(dǎo)出色度運(yùn)動矢量。導(dǎo)出的色度運(yùn)動矢量的數(shù)目取決于用于預(yù)測當(dāng)前宏塊的亮度運(yùn)動矢量的數(shù)目而變化。
在某些實(shí)現(xiàn)中,編碼器/解碼器對1MV宏塊導(dǎo)出一個(gè)色度運(yùn)動矢量,對2半幀MV宏塊導(dǎo)出兩個(gè)半幀色度運(yùn)動矢量,對4幀MV宏塊導(dǎo)出四個(gè)幀色度運(yùn)動矢量,并對4半幀MV宏塊導(dǎo)出四個(gè)半幀色度運(yùn)動矢量。
例如,再次參考圖23-25,圖23示出了2半幀MV宏塊中從亮度運(yùn)動矢量中導(dǎo)出的對應(yīng)的上半幀和下半幀色度運(yùn)動矢量。所導(dǎo)出的上半幀和下半幀色度運(yùn)動矢量分別描述了色度塊的偶數(shù)行和奇數(shù)行的位移。
圖24示出了4幀MV宏塊中對四個(gè)塊中的每一個(gè)從幀亮度運(yùn)動矢量中導(dǎo)出的對應(yīng)的幀色度運(yùn)動矢量(MV1′、MV2′、MV3′和MV4′)。四個(gè)導(dǎo)出的色度運(yùn)動矢量描述了四個(gè)4×4色度子塊各自的位移。
圖25示出了4半幀MV宏塊中從半幀亮度運(yùn)動矢量中導(dǎo)出的對應(yīng)的半幀色度運(yùn)動矢量。兩個(gè)半幀色度運(yùn)動矢量描述了色度塊中每一半幀的位移。色度塊的行被垂直細(xì)分以形成兩個(gè)4×8的區(qū)域,其每一個(gè)具有與下半幀行的4×4區(qū)域交錯的上半幀行的4×4區(qū)域。對于上半幀行,左側(cè)4×4區(qū)域的位移是由左上半幀色度塊運(yùn)動矢量描述的,而右側(cè)4×4區(qū)域的位移是由右上半幀色度塊運(yùn)動矢量描述的。對于下半幀行,左側(cè)4×4區(qū)域的位移是由左下半幀色度塊運(yùn)動矢量描述的,而右側(cè)4×4區(qū)域的位移是由右下半幀色度塊運(yùn)動矢量描述的。
每一色度塊區(qū)域可以使用導(dǎo)出的運(yùn)動矢量來進(jìn)行運(yùn)動補(bǔ)償。這允許比早先的編碼器和解碼器中更大的色度運(yùn)動補(bǔ)償分辨率,早先的編碼器和解碼器通常通過二次采樣(也稱為“下采樣”)和/或求平均來從任何數(shù)目的亮度運(yùn)動矢量中導(dǎo)出單個(gè)色度運(yùn)動矢量(例如,其中從宏塊中的四個(gè)亮度運(yùn)動矢量中導(dǎo)出一個(gè)色度運(yùn)動矢量)。
或者,編碼器/解碼器可從不同數(shù)目和/或類型的亮度運(yùn)動矢量中導(dǎo)出色度運(yùn)動矢量(例如,從用兩個(gè)幀亮度運(yùn)動矢量編碼的宏塊中導(dǎo)出兩個(gè)幀色度運(yùn)動矢量,從用四個(gè)以上亮度運(yùn)動矢量編碼的宏塊中導(dǎo)出四個(gè)以上色度運(yùn)動矢量等等)?;蛘?,色度運(yùn)動矢量可以按某一其它方式導(dǎo)出,而同時(shí)維持與宏塊的亮度運(yùn)動矢量數(shù)目的1∶1對應(yīng)性。
B.半幀編碼宏塊中基于半幀的舍入
在某些實(shí)現(xiàn)中,編碼器/解碼器在對半幀編碼的宏塊導(dǎo)出色度運(yùn)動矢量的過程中使用基于半幀的舍入來維持亮度運(yùn)動矢量和色度運(yùn)動矢量之間的相干性。
給定亮度幀運(yùn)動矢量或半幀運(yùn)動矢量,編碼器/解碼器導(dǎo)出對應(yīng)的色度幀運(yùn)動矢量或半幀運(yùn)動矢量,以對色度(Cb/Cr)塊的一部分(以及可能所有)執(zhí)行運(yùn)動補(bǔ)償。在某些實(shí)現(xiàn)中,對隔行掃描幀編碼圖像(例如,隔行掃描P幀、隔行掃描B幀等)的色度運(yùn)動矢量導(dǎo)出包括舍入和二次采樣。例如,當(dāng)從亮度半幀運(yùn)動矢量中導(dǎo)出色度運(yùn)動矢量時(shí),編碼器/解碼器在二次采樣之后將可變偏移量(例如,使用查找表)添加到色度運(yùn)動矢量。
圖33是示出用于使用基于半幀的舍入查找表導(dǎo)出宏塊中的色度運(yùn)動矢量的技術(shù)3300的流程圖。在3310,編碼器/解碼器對亮度半幀運(yùn)動矢量分量進(jìn)行二次采樣(例如,通過以4∶2∶0宏塊格式將y分量值除以2)。在3320,編碼器/解碼器然后使用基于半幀的舍入查找表執(zhí)行舍入。
圖34中的偽代碼3400描述了在一個(gè)實(shí)現(xiàn)中如何在4∶2∶0宏塊中從亮度運(yùn)動矢量分量(LMVx,LMVy)中導(dǎo)出色度運(yùn)動矢量分量(CMVx,CMVy)。如在偽代碼3400中示出的,編碼器/解碼器在水平二次采樣之前使用簡單的舍入策略(使用舍入查找表s_RndTbl[])來上舍入運(yùn)動矢量的x分量的3/4像素位置。如果宏塊是幀編碼的,則編碼器/解碼器在對y分量進(jìn)行垂直二次采樣之前使用相同的舍入查找表。然而,如果宏塊是半幀編碼的,則編碼器/解碼器不同地對待色度運(yùn)動矢量的y分量。在半幀編碼的宏塊中,色度運(yùn)動矢量對應(yīng)于上半幀或下半幀。上半幀和下半幀各自包括色度塊的交替的水平行。因此,在這一情況下,編碼器/解碼器使用偽代碼3400中所示的基于半幀的舍入查找表s_RndTblField[ ]。基于半幀的舍入查找表允許編碼器/解碼器在舍入時(shí)維持正確的半幀偏移量,使得亮度和色度運(yùn)動矢量映射到一致的半幀偏移量。例如,參考圖35,s_RndTblField[ ]中的值0,0,1,2和2,2,3,8(圖35中的上半幀值3510)應(yīng)用于一個(gè)半幀(例如,上半幀),而值4,4,5,6和6,6,7,12(圖35中的下半幀值3520)應(yīng)用于宏塊中的另一半幀(例如,下半幀)。
或者,編碼器/解碼器可使用不同的基于半幀的舍入查找表或以某一其它方式來執(zhí)行舍入和/或二次采樣。例如,處理不同格式的宏塊的編碼器/解碼器可使用不同的二次采樣因子和/或查找表值。
VII.組合實(shí)現(xiàn)
現(xiàn)在描述對于比特流句法、語義和解碼器的詳細(xì)的組合實(shí)現(xiàn),以及具有來自主要的組合實(shí)現(xiàn)的微小差別的替換組合實(shí)現(xiàn)。
A.比特流句法
在各種組合實(shí)現(xiàn)中,用于隔行掃描圖像的數(shù)據(jù)以具有多個(gè)層(例如,序列、入口點(diǎn)、幀、半幀、宏塊、塊和/或子塊層)的比特流的形式存在。
在句法圖中,箭頭路徑示出句法元素的可能流程。所示的帶有正方形邊框的句法元素指示固定長度的句法元素;帶有圓形邊框示出的句法元素指示可變長度句法元素,而帶有外部的圓形邊框內(nèi)的圓形邊框的句法元素指示由更簡單句法元素構(gòu)成的句法元素(例如,位平面)。固定長度句法元素被定義為其句法元素長度不依賴于句法元素本身中的數(shù)據(jù)的句法元素;固定長度句法元素的長度是常量,或由句法流中先前的數(shù)據(jù)來確定。分層圖中的較低層(例如,幀層圖中的宏塊層)是由矩形內(nèi)的矩形來指示的。
入口點(diǎn)級比特流元素在圖36中示出。一般而言,入口點(diǎn)標(biāo)記了比特流中解碼器可開始解碼的位置(例如,I幀或其它關(guān)鍵幀)。換言之,不需要比特流中在入口點(diǎn)之前的任何圖像來解碼入口點(diǎn)之后的圖像。入口點(diǎn)頭部可用于用信號表示編碼控制參數(shù)中的改變(例如,對入口點(diǎn)之后的幀啟用或禁用壓縮工具(例如,內(nèi)循環(huán)分塊濾波))。
對于隔行掃描的P幀和B幀,幀級比特流元素分別在圖37和38中示出。對于每一幀的數(shù)據(jù)由幀頭部及之后的宏塊層數(shù)據(jù)(不論是用于幀內(nèi)編碼還是各種幀間編碼類型的宏塊)構(gòu)成。構(gòu)成隔行掃描P幀的宏塊層(無論是用于幀內(nèi)編碼還是各種幀間編碼類型宏塊)的比特流元素在圖40中示出。用于隔行掃描P幀的宏塊層中的比特流元素可對其它隔行掃描圖像(例如,隔行掃描B幀、隔行掃描P半幀、隔行掃描B半幀等)中的宏塊存在。
對于具有隔行掃描P半幀和/或B半幀的隔行掃描視頻幀,幀級比特流元素在圖39中示出。對于每一幀的數(shù)據(jù)由幀頭部以及之后的用于半幀層的數(shù)據(jù)(被示為每一半幀的重復(fù)的“FieldPicLayer”元素)以及用于宏塊層的數(shù)據(jù)(無論是用于幀內(nèi)編碼、1MV還是4MV宏塊)構(gòu)成。
以下章節(jié)描述了幀和宏塊層內(nèi)涉及對隔行掃描圖像的信號表示的所選擇的比特流元素。盡管所選擇的比特流元素是在特定層的上下文中描述的,然而某些比特流元素可在一個(gè)以上層中使用。
1.選擇的入口點(diǎn)層元素
循環(huán)濾波器(LOOPFILTER)(1比特)
LOOPFILTER是指示是否對入口點(diǎn)段啟用循環(huán)濾波的布爾標(biāo)志。如果LOOPFILTER=0,則不啟用循環(huán)濾波。如果LOOPFILTER=1,則啟用循環(huán)濾波。在替換的組合實(shí)現(xiàn)中,LOOPFILTER是序列級元素。
擴(kuò)展的運(yùn)動矢量(EXTENDED_MV)(1比特)
EXTENDED_MV是指示擴(kuò)展運(yùn)動矢量是打開(值1)還是關(guān)閉(值0)的1比特句法元素。EXTENDED_MV指示P幀和B幀中擴(kuò)展的運(yùn)動矢量(在幀級用句法元素MVRANGE來用信號表示)的可能性。
擴(kuò)展的差分運(yùn)動矢量范圍(EXTENDED_DMV)(1比特)
EXTENDED_DMV是如果EXTENDED_MV=1則存在的1比特句法元素。如果EXTENDED_DMV為1,則應(yīng)當(dāng)對入口點(diǎn)段中的P幀和B幀在幀層上用信號表示擴(kuò)展的差分運(yùn)動矢量范圍(DMVRANGE)。如果EXTENDED_DMV為0,則不應(yīng)用信號表示DMVRANGE。
快速UV運(yùn)動比較(FASTUVMC)(1比特)
FASTUVMC是控制色度運(yùn)動矢量的子像素內(nèi)插和舍入的布爾標(biāo)志。如果FASTUVMC=1,則在四分之一像素偏移量處的色度運(yùn)動矢量被舍入到最近的半或全像素位置。如果FASTUVMC=0,則不對色度執(zhí)行任何特殊的舍入或?yàn)V波。FASTUVMC句法元素在隔行掃描P幀和隔行掃描B幀中忽略。
可變大小變換(VSTRANSFORM)(1比特)
VSTRANSFORM是指示對序列是否啟用可變大小變換編碼的布爾標(biāo)志。如果VSTRANSFORM=0,則不啟用可變大小變換編碼。如果VSTRANSFORM=1,則啟用可變大小變換編碼。
2.選擇的幀層元素
圖37和38是分別示出用于隔行掃描P幀和隔行掃描B幀的幀級比特流句法的圖示。圖39是示出用于包含隔行掃描P半幀和/或B半幀(或可能其它種類的隔行掃描的半幀)的幀的幀層比特流句法。具體的比特流元素描述如下。
幀編碼模式(FCM)(可變大小)
FCM是用于指示圖像編碼類型的可變長度碼字[“VLC”]。FCM采取以下表9中示出的用于幀編碼模式的值
表9幀編碼模式VLC
半幀圖像類型(FPTYPE)(3比特)
FPTYPE是存在于包括隔行掃描P半幀和/或隔行掃描B半幀以及可能的其它種類的半幀的幀的幀頭部中的3比特句法元素。FPTYPE依照以下表10,采取隔行掃描視頻幀中半幀類型的不同組合的值。
表10半幀圖像類型FLC
圖像類型(PTYPE)(可變大小)
PTYPE是存在于隔行掃描P幀和隔行掃描B幀(或其它種類的隔行掃描幀,諸如隔行掃描I幀)的幀頭部中的可變大小句法元素。PTYPE采取依照以下表11的用于不同幀類型的值。
表11圖像類型VLC
如果PTYPE指示幀被跳過,則該幀作為與其參考幀相同的P幀來對待。跳過的幀的重構(gòu)在概念上等效于復(fù)制參考幀。跳過的幀意味著對該幀無需再發(fā)送任何數(shù)據(jù)。
UV采樣格式(UVSAMP)(1比特)
UVSAMP是當(dāng)序列級字段INTERLACE=1時(shí)存在的1比特句法元素。UVSAMP指示用于當(dāng)前幀的色度二次采樣的類型。如果UVSAMP=1,則使用色度的逐行掃描二次采樣,否則,使用色度的隔行掃描二次采樣。該句法元素不影響比特流的解碼。
擴(kuò)展的MV范圍(MVRANGE)(可變大小)
MVRANGE是當(dāng)入口點(diǎn)層EXTENDED_MV位被設(shè)為1時(shí)存在的可變大小句法元素。MVRANGE VLC表示運(yùn)動矢量范圍。
擴(kuò)展的差分MV范圍(DMVRANGE)(可變大小)
DMVRANGE是如果入口點(diǎn)層句法元素EXNTEDED_DMV=1時(shí)存在的可變大小句法元素。DMVRANGE VLC表示運(yùn)動矢量差分范圍。
4運(yùn)動矢量切換(4MVSWITCH)(可變大小或1比特)
對于隔行掃描P幀,4MVSWITCH句法元素是1比特標(biāo)志。如果4MVSWITCH被設(shè)為零,則圖像中的宏塊只有一個(gè)運(yùn)動矢量或有兩個(gè)運(yùn)動矢量,分別取決于該宏塊是幀編碼的還是半幀編碼的。如果4MVSWITCH被設(shè)為1,則對每一宏塊可以有一個(gè)、兩個(gè)或四個(gè)運(yùn)動矢量。
跳過宏塊解碼(SKIPMB)(可變大小)
對于隔行掃描P幀,SKIPMB句法元素是包含指示圖像中每一宏塊的跳過/未跳過狀態(tài)的信息的壓縮的位平面。解碼的位平面用1比特的值表示每一宏塊的跳過/未跳過狀態(tài)。0值指示該宏塊未被跳過。1值指示該宏塊被編碼為跳過。隔行掃描P幀中的宏塊的跳過狀態(tài)意味著解碼器將該宏塊作為具有零運(yùn)動矢量差分和零編碼塊模式的1MV來對待。不期望對跳過宏塊跟任何其它信息。
宏塊模式表(MBMODETAB)(2或3比特)
MBMODETAB句法元素是固定長度字段。對于隔行掃描P幀,MBMODETAB是2比特值,它指示四個(gè)代碼表中的哪一個(gè)用于解碼宏塊層中的宏塊模式句法元素(MBMODE)。有兩組四個(gè)代碼表,且使用的組取決于如4MVSWITCH標(biāo)志所指示的是否使用了4MV。
運(yùn)動矢量表(MVTAB)(2或3比特)
MVTAB句法元素是固定長度字段。對于隔行掃描P幀,MVTAB是指示四個(gè)逐行掃描(或一個(gè)參考)運(yùn)動矢量代碼表中的哪一個(gè)用于編碼宏塊層中的MVDATA句法元素。
2MV塊模式表(2MVBPTAB)(2比特)
2MVBPTAB句法元素是用信號表示四個(gè)代碼表中的哪一個(gè)用于解碼2半幀MV宏塊中的2MV塊模式(2MVBP)句法元素的2比特值。
4MV塊模式表(4MVBPTAB)(2比特)
4MVBPTAB句法元素是用信號表示四個(gè)代碼表中的哪一個(gè)用于解碼4MV宏塊中的4MV塊模式(4MVBP)句法元素的2比特值。對于隔行掃描P幀,如果4MVSWITCH句法元素被設(shè)為1,則它存在。
宏塊級變換類型標(biāo)志(TTMBF)(1比特)
如果序列級句法元素VSTRANSFORM=1,則該句法元素存在于P幀和B幀中。TTMBF是用信號表示是否在幀或宏塊級啟用變換類型編碼的1比特句法元素。如果TTMBF=1,則對幀中的所有塊使用相同的變換類型。在這一情況下,在之后的幀級變換類型(TTFRM)句法元素中用信號表示變換類型。如果TTMBF=0,則變換類型可貫穿幀而變化,且在宏塊或塊級用信號表示。
幀級變換類型(TTFRM)(2比特)
如果VSTRANSFORM=1且TTMBF=1,則該句法元素存在于P幀和B幀中。TTFRM用信號表示用于變換預(yù)測塊中的8×8的像素誤差信號的變換類型。8×8的誤差塊可使用8×8變換、兩個(gè)8×4變換、兩個(gè)4×8變換或四個(gè)4×4變換來變換。
3.選擇的宏塊層元素
圖40是示出組合實(shí)現(xiàn)中用于隔行掃描P幀中的宏塊的宏塊級比特流句法。具體的比特流元素描述如下。宏塊數(shù)據(jù)由宏塊頭部及之后的塊層數(shù)據(jù)構(gòu)成。用于隔行掃描P幀的宏塊層中的比特流元素(例如,SKIPMBBIT)可能對于其它隔行掃描圖像(例如,隔行掃描B幀等)中的宏塊存在。
跳過MB位(SKIPMBBIT)(1比特)
SKIPMBBIT是當(dāng)幀級句法元素SKIPMB指示使用原始模式時(shí)存在于隔行掃描P幀宏塊和隔行掃描B幀宏塊中的1比特句法元素。如果SKIPMBBIT=1,則跳過該宏塊。SKIPMBBIT也可被標(biāo)記為宏塊級的SKIPMB。
宏塊模式(MBMODE)(可變大小)
MBMODE是聯(lián)合地指定宏塊類型(例如,1MV、2半幀MV、4半幀MV、4幀MV或幀內(nèi)編碼)、半幀/幀編碼類型(例如,半幀、幀或無編碼塊)以及1MV宏塊的差分運(yùn)動矢量數(shù)據(jù)的存在的可變大小句法元素。MBMODE在以下和以上第V節(jié)中詳細(xì)解釋。
2MV塊模式(2MVBP)(可變大小)
2MVBP是存在于隔行掃描P幀和隔行掃描B幀宏塊中的可變大小句法元素。在隔行掃描P幀宏塊中,如果MBMODE指示宏塊具有兩個(gè)半幀運(yùn)動矢量,則2MVBP存在。在這一情況下,2MVBP指示兩個(gè)亮度塊中的哪一個(gè)包含非零運(yùn)動矢量差分。
4MV塊模式(4MVBP)(可變大小)
4MVBP是存在于隔行掃描P半幀、隔行掃描B半幀、隔行掃描P幀和隔行掃描B幀宏塊中的可變大小句法元素。在隔行掃描P幀中,如果MBMODE指示宏塊具有四個(gè)運(yùn)動矢量,則4MVBP存在。在這一情況下,4MVBP指示四個(gè)亮度塊中的哪一個(gè)包含非零運(yùn)動矢量差分。
半幀變換標(biāo)志(FIELDTX)(1比特)
FIELDTX是存在于隔行掃描B幀幀內(nèi)編碼宏塊中的1比特句法。該句法元素指示宏塊是幀還是半幀編碼的(基本上是宏塊的內(nèi)部組織)。FIELDTX=1指示宏塊是半幀編碼的。否則,宏塊是幀編碼的。在幀間編碼的宏塊中,該句法元素可從如以下以及在以上第V節(jié)中詳細(xì)解釋的MBMODE中推導(dǎo)出來。
CBP存在標(biāo)志(CBPPRESENT)(1比特)
CBPPRESENT是存在于隔行掃描P幀和隔行掃描B幀中的幀內(nèi)編碼的宏塊中的1比特句法。如果CBPPRESENT為1,則對該宏塊存在CBPCY句法元素并解碼該元素。如果CBPPRESENT為0,則不存在CPBCY句法元素,且應(yīng)被設(shè)為零。
已編碼塊模式(CBPCY)(可變大小)
CBPCY是指示對于宏塊中的每一塊的變換系數(shù)狀態(tài)的可變長度句法元素。CBPCY解碼成指示對于對應(yīng)的塊是否存在系數(shù)的6比特字段。對于幀內(nèi)編碼的宏塊,特定位位置中的零值指示對應(yīng)的塊不包含任何非零AC系數(shù)。1值指示存在至少一個(gè)非零AC系數(shù)。在所有情況下,對于每一塊仍存在DC系數(shù)。對于幀間編碼的宏塊,特定位位置中的0值指示對應(yīng)的塊不包含任何非零系數(shù)。1值指示存在至少一個(gè)非零系數(shù)。對于該位為0的情況,不對該塊編碼任何數(shù)據(jù)。
運(yùn)動矢量數(shù)據(jù)(MVDATA)(可變大小)
MVDATA是對宏塊的運(yùn)動矢量的差分編碼的可變大小句法元素,其解碼在以下詳細(xì)描述。
MB級變換類型(TTMB)(可變大小)
TTMB是當(dāng)圖像層句法元素TTMBF=0時(shí)P圖像和B圖像宏塊中的可變大小句法元素。TTMB指定了變換類型、變換類型信號水平以及子塊模式。
B.解碼隔行掃描P幀
在一個(gè)組合實(shí)現(xiàn)中,用于解碼隔行掃描P幀的過程描述如下。
1.隔行掃描P幀的宏塊層解碼
在隔行掃描P幀中,每一宏塊可以在幀模式中使用一個(gè)或四個(gè)運(yùn)動矢量,或在半幀模式中使用兩個(gè)或四個(gè)運(yùn)動矢量來進(jìn)行運(yùn)動補(bǔ)償。幀間編碼的宏塊不包含任何幀內(nèi)編碼的塊。另外,運(yùn)動補(bǔ)償之后的殘差可以在幀變換模式或半幀變換模式中編碼。更具體地,如果以半幀變換模式編碼,則殘差的亮度分量依照半幀來重新排列,但是在幀變換模式中保持不變,而色度分量保持相同。宏塊也可作為幀內(nèi)編碼來編碼。
運(yùn)動補(bǔ)償可被限于不包括四個(gè)(半幀/幀兩者)運(yùn)動矢量,且這通過4MVSWITCH用信號表示。運(yùn)動補(bǔ)償和殘差編碼的類型通過MBMODE和SKIPMB對每一宏塊聯(lián)合指示。MBMODE采用了依照4MVSWITCH的一組不同的表。
隔行掃描P幀中的宏塊被分類為五個(gè)類型1MV、2半幀MV、4幀MV、4半幀MV和幀內(nèi)編碼。這五個(gè)類型已在上文第III節(jié)中詳細(xì)描述。前四個(gè)宏塊類型是幀間編碼的,而最后一個(gè)類型指示宏塊是幀內(nèi)編碼的。宏塊類型是由宏塊層中的MBMODE句法元素連同跳過位一起用信號表示的。(宏塊的跳過條件也可在壓縮位平面中的幀級處用信號表示。)MBMODE對不同類型的宏塊,對宏塊類型以及關(guān)于宏塊的各個(gè)信息進(jìn)行聯(lián)合編碼。
跳過宏塊的信號表示
宏塊級SKIPMBBIT字段指示宏塊的跳過條件。(關(guān)于跳過條件和對應(yīng)的信號表示的其它細(xì)節(jié)在以上第V節(jié)中提供。)如果SKIPMBBIT字段為1,則當(dāng)前宏塊被認(rèn)為是跳過,且在SKIPMBBIT字段之后不發(fā)送任何其它信息。(在幀級,SKIPMB字段指示在宏塊級SKIPMBBIT的存在(采用原始模式),或在壓縮位平面中儲存跳過信息。解碼的位平面對每一宏塊包含一個(gè)比特,且指示每一相應(yīng)宏塊的跳過條件。)跳過條件暗示當(dāng)前宏塊是具有零差分運(yùn)動矢量的1MV(即,該宏塊使用其1MV運(yùn)動預(yù)測值來運(yùn)動補(bǔ)償),且沒有已編碼的塊(CBP=0)。在替換的組合實(shí)現(xiàn)中,殘差被假定為為循環(huán)濾波目的而進(jìn)行幀編碼。
另一方面,如果SKIPMB字段不是1,則MBMODE字段被解碼為指示宏塊類型以及關(guān)于當(dāng)前宏塊的其它信息,諸如以下章節(jié)中所描述的信息。
宏塊模式的信號表示
MBMODE聯(lián)合地指定了宏塊的類型(1MV、4幀MV、2半幀MV、4半幀MV或幀內(nèi)編碼)、幀間編碼宏塊的變換類型(即,半幀或幀或無已編碼塊)、以及對1MV宏塊是否存在差分運(yùn)動矢量。(關(guān)于宏塊信息的信號表示的其它細(xì)節(jié)在以上第V節(jié)中提供。)MBMODE可采取15個(gè)可能的值中的一個(gè)
設(shè)<MVP>表示存在還是缺少非零1MV差分運(yùn)動矢量的信號表示。設(shè)<Field/Frame transform>表示宏塊的殘差是(1)幀變換編碼的;(2)半幀變換編碼的;還是(3)零編碼的塊(即,CBP=0)的信號表示。MBMODE用信號聯(lián)合表示以下信息
MBMODE={<1MV,MVP,F(xiàn)ield/Frame transform>,<2Field MV,F(xiàn)ield/Frametransform>,<4Frame MV,F(xiàn)ield/Frame transform>,<4Field MV,F(xiàn)ield/Frametransform>,<INTRA>};
情況<1MV,MVP=0,CBP=0>不是由MBMODE來用信號表示的,而是由跳過條件來用信號表示的。
對于幀間編碼的宏塊,當(dāng)MBMODE中的<Field/frame Transform>指示無已編碼塊時(shí),不解碼CBPCY句法元素。另一方面,如果MBMODE中的<Field/frameTransform>指示半幀或幀變換,則解碼CBPCY。解碼的<Field/frame Transform>用于設(shè)置標(biāo)志FIELDTX。如果它指示宏塊是半幀變換編碼的,則FIELDTX被設(shè)為1。如果它指示宏塊是幀變換編碼的,則FIELDTX被設(shè)為0。如果它指示零編碼的塊,則FIELDTX被設(shè)為與運(yùn)動矢量相同的類型,即如果它是半幀運(yùn)動矢量,則FIELDTX被設(shè)為1,如果是幀運(yùn)動矢量,則設(shè)為0。
對于非1MV幀間編碼的宏塊,發(fā)送一附加字段以指示差分運(yùn)動矢量中的哪一個(gè)是非零的。在2半幀MV宏塊的情況下,發(fā)送2MVBP字段以指示兩個(gè)運(yùn)動矢量中的哪一個(gè)包含非零差分運(yùn)動矢量。類似地,發(fā)送4MVBP字段以指示四個(gè)運(yùn)動矢量中的哪一個(gè)包含非零差分運(yùn)動矢量。
對于幀內(nèi)編碼的宏塊,在單獨(dú)的字段中編碼半幀/幀變換和零編碼塊。
2.用于隔行掃描P幀的運(yùn)動矢量解碼
用于隔行掃描P幀的運(yùn)動矢量預(yù)測值
為當(dāng)前宏塊計(jì)算運(yùn)動矢量預(yù)測值的過程由兩個(gè)步驟構(gòu)成。首先,從其相鄰宏塊收集當(dāng)前宏塊的三個(gè)候選運(yùn)動矢量。其次,從該候選運(yùn)動矢量集計(jì)算當(dāng)前宏塊的運(yùn)動矢量預(yù)測值。圖26A-26B示出了從其中收集候選運(yùn)動矢量的相鄰宏塊。候選運(yùn)動矢量的收集順序是重要的。在該組合實(shí)現(xiàn)中,收集順序總是從A開始,前進(jìn)到B,且在C結(jié)束。如果對應(yīng)的塊位于幀邊界之外,或者如果對應(yīng)的塊是不同片的一部分,則候選預(yù)測值被認(rèn)為不存在。由此,運(yùn)動矢量預(yù)測不跨片邊界執(zhí)行。
以下章節(jié)描述了如何為不同類型的宏塊收集候選運(yùn)動矢量以及如何計(jì)算運(yùn)動矢量預(yù)測值。
1MV候選運(yùn)動矢量
在該組合實(shí)現(xiàn)中,圖41中的偽代碼4100用于為運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
4幀MV候選運(yùn)動矢量
對于4幀MV宏塊,對于當(dāng)前宏塊中四個(gè)幀塊運(yùn)動矢量中的每一個(gè),收集來自相鄰塊的候選運(yùn)動矢量。在該組合實(shí)現(xiàn)中,圖42中的偽代碼4200用于為左上幀運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。圖43中的偽代碼4300用于為右上幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。圖44中的偽代碼4400用于為左下幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。圖45中的偽代碼4500用于為右下幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
2半幀MV候選運(yùn)動矢量
對于2半幀MV宏塊,對于當(dāng)前宏塊中的兩個(gè)半幀運(yùn)動矢量中的每一個(gè),收集來自相鄰塊的候選運(yùn)動矢量。圖46中的偽代碼4600用于為上半幀運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。圖47中的偽代碼4700用于為下半幀運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
4半幀MV候選運(yùn)動矢量
對于4半幀MV宏塊,對于當(dāng)前宏塊中四個(gè)半幀塊中的每一個(gè),收集來自相鄰塊的候選運(yùn)動矢量。圖48中的偽代碼4800用于為左上半幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。圖49中的偽代碼4900用于為右上半幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。圖50中的偽代碼5000用于為左下半幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。圖51中的偽代碼5100用于為右下半幀塊運(yùn)動矢量收集多達(dá)三個(gè)候選運(yùn)動矢量。
平均半幀運(yùn)動矢量
給定兩個(gè)半幀運(yùn)動矢量(MVX1,MVY1)和(MVX2,MVY2),用于形成候選運(yùn)動矢量(MVXA,MVYA)的求平均運(yùn)算為
MVXA=(MVX1+MVX2+1)>>1;
MVYA=(MVY1+MVY2+1)>>1;
從候選運(yùn)動矢量計(jì)算幀MV預(yù)測值
本節(jié)描述了如何在給定一組候選運(yùn)動矢量時(shí)為幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值。在該組合實(shí)現(xiàn)中,對于為1MV計(jì)算預(yù)測值或?qū)?幀MV宏塊中四個(gè)幀塊運(yùn)動矢量中的每一個(gè)計(jì)算預(yù)測值的運(yùn)算是相同的。
圖52中的偽代碼5200描述了如何為幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值(PMVx,PMVy)。在偽代碼5200中,TotalValidMV表示候選運(yùn)動矢量集中運(yùn)動矢量的總數(shù)(TotalValidMV=0、1、2或3),而ValidMV數(shù)組表示候選運(yùn)動矢量集中的運(yùn)動矢量。
從候選運(yùn)動矢量計(jì)算半幀MV預(yù)測值
本節(jié)描述了在組合實(shí)現(xiàn)中,如何在給定候選運(yùn)動矢量集的情況下為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值。在該組合實(shí)現(xiàn)中,對于為2半幀MV宏塊中兩個(gè)半幀運(yùn)動矢量中的每一個(gè)計(jì)算預(yù)測值或?qū)τ跒?半幀MV宏塊中四個(gè)半幀塊運(yùn)動矢量中的每一個(gè)計(jì)算預(yù)測值的運(yùn)算是相同的。
首先,將候選運(yùn)動矢量分為兩個(gè)集合,其中一個(gè)集合僅包含指向與當(dāng)前半幀相同的半幀的候選運(yùn)動矢量,而另一集合包含指向相反半幀的候選運(yùn)動矢量。假定候選運(yùn)動矢量是以四分之一像素單位表示的,以下對其y分量的校驗(yàn)驗(yàn)證了候選運(yùn)動矢量是否指向相同的半幀
if(ValidMVy&4){
ValidMV指向相反半幀。
}else{
ValidMV指向相同半幀。
}
圖53中的偽代碼5300描述了如何為半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值(PMVx,PMVy)。在偽代碼5300中,SameFieldMV和OppFieldMV表示兩個(gè)候選運(yùn)動矢量集,NumSameFieldMV和NumOppFieldMV表示屬于每一集合的候選運(yùn)動矢量的數(shù)目。每一集合中候選運(yùn)動矢量的順序以候選運(yùn)動矢量A(如果存在)開始,之后是候選運(yùn)動矢量B(如果存在),之后是候選運(yùn)動矢量C(如果存在)。例如,如果集合SameFieldMV僅包含候選運(yùn)動矢量B和候選運(yùn)動矢量C,則SameFieldMV
是候選運(yùn)動矢量B。
解碼運(yùn)動矢量差分
MVDATA句法元素包含宏塊的運(yùn)動矢量差分信息。取決于每一宏塊處用信號表示的運(yùn)動補(bǔ)償類型和運(yùn)動矢量塊模式,對每一宏塊可以有從0到4個(gè)MVDATA句法元素。更具體地,
·對于1MV宏塊,取決于MBMODE中的MVP字段,可以存在0個(gè)或1個(gè)MVDATA句法元素。
·對于2半幀MV宏塊,取決于2MVBP,可以存在0、1或2個(gè)MVDATA句法元素。
·對于4幀/半幀MV宏塊,取決于4MVBP,可以存在0、1、2、3或4個(gè)MVDATA句法元素。
在該組合實(shí)現(xiàn)中,以與隔行掃描P半幀的1參考半幀運(yùn)動矢量差分相同的方式解碼運(yùn)動矢量差分,而無需半像素模式。(圖54A中的偽代碼5400示出了如何為一個(gè)參考半幀解碼運(yùn)動矢量差分。圖54B中的偽代碼5410示出了替換的組合實(shí)現(xiàn)中如何為一個(gè)參考半幀解碼運(yùn)動矢量差分。偽代碼5410以不同的方式解碼運(yùn)動矢量差分。例如,偽代碼5410省略了對擴(kuò)展的運(yùn)動矢量差分范圍的處理。)
重構(gòu)運(yùn)動矢量
給定運(yùn)動矢量差分dmv,通過將該差分加到預(yù)測值來重構(gòu)亮度運(yùn)動矢量,如下
mv_x=(dmv_x+predictor_x)smod range_x
mv_y=(dmv_y+predictor_y)smod range_y
smod運(yùn)算確保重構(gòu)的矢量是有效的。(A smod b)處于于-b和b-1以內(nèi)。range_x和range_y取決于MVRANGE。
給定亮度幀或半幀運(yùn)動矢量,導(dǎo)出對應(yīng)的色度幀或半幀運(yùn)動矢量以補(bǔ)償色度(Cb/Cr)塊的一部分(或可能全部)。在隔行掃描P幀和隔行掃描B幀中忽略FASTUVMC句法元素。圖34中的偽代碼3400描述了在隔行掃描P幀中如何從亮度運(yùn)動矢量LMV中導(dǎo)出色度運(yùn)動矢量CMV。
C.位平面編碼
諸如跳過位等宏塊專用二進(jìn)制信息可以對每一宏塊在一個(gè)二進(jìn)制碼元中編碼。例如,宏塊是否被跳過可以用一個(gè)比特的信號來表示。在這些情況下,半幀或幀中的所有宏塊的狀態(tài)可以被編碼為一個(gè)位平面,且在半幀或幀頭部中發(fā)送。對于該規(guī)則的一個(gè)例外是如果位平面編碼模式被設(shè)為原始模式,在這一情況下,每一宏塊的狀態(tài)被編碼為每一碼元一個(gè)比特,且在宏塊級連同其它宏塊級句法元素一起發(fā)送。
半幀/幀級位平面編碼用于對二維二進(jìn)制數(shù)組進(jìn)行編碼。每一數(shù)組的大小是rowMB×colMB,其中rowMB和colMB分別是所討論的半幀或幀中宏塊行和列的數(shù)目。在比特流中,每一數(shù)組被編碼為一組接連的比特。使用七種模式之一來編碼每一數(shù)組。這七種模式是
1.原始模式—信息被編碼為每一碼元一個(gè)比特,并作為MB級句法的一部分發(fā)送;
2.普通-2模式—兩個(gè)碼元聯(lián)合編碼;
3.差分-2模式—位平面的差分編碼,之后對兩個(gè)殘差碼元聯(lián)合編碼;
4.普通-6模式—6個(gè)碼元聯(lián)合編碼;
5.差分-6模式—位平面的差分編碼,之后對6個(gè)殘差碼元聯(lián)合編碼;
6.行跳過模式—跳過一個(gè)比特以用信號表示沒有置位的行;以及
7.列跳過模式—跳過一個(gè)比特以用信號表示沒有置位的列。
半幀級或幀級對于位平面的句法元素在以下序列中INVERT、IMODE和DATABITS。
反轉(zhuǎn)標(biāo)志(INVERT)
INVERT句法元素是1比特的值,如果被置位,則指示位平面具有比零個(gè)位更多的位被置位。取決于INVERT和模式,解碼器應(yīng)當(dāng)反轉(zhuǎn)所解釋的位平面以重新創(chuàng)建原始信號。注意,當(dāng)使用原始模式時(shí),該位的值應(yīng)當(dāng)被忽略。如何在解碼位平面時(shí)使用INVERT值的描述在下文提供。
編碼模式(IMODE)
IMODE句法元素是指示用于對位平面編碼的編碼模式的可變長度值。表12示出了用于對IMODE句法元素編碼的代碼表。對IMODE值如何用于解碼位平面的描述在下文提供。
表12IMODE VLC代碼表
位平面編碼位(DATABITS)
DATABITS句法元素是對位平面的碼元流進(jìn)行編碼的可變大小句法元素。用于編碼位平面的方法是由IMODE的值來確定的。以下章節(jié)中描述了七種編碼模式。
原始模式
在該模式中,位平面被編碼為對宏塊中以光柵掃描順序掃描的每一碼元一個(gè)比特,并作為宏塊層的一部分發(fā)送。或者,原始模式中在半幀或幀級編碼的信息和DATABITS的長度是rowMB×colMB比特。
普通-2模式
如果rowMB×colMB是奇數(shù),則第一碼元是原始編碼的。后續(xù)的碼元以自然掃描順序成對地編碼。表13中的二進(jìn)制VLC表用于編碼碼元對。
表13普通-2/差分-2代碼表
差分-2模式
普通-2方法用于產(chǎn)生如上所述的位平面,然后如下所述向位平面應(yīng)用Diff-1運(yùn)算。
普通-6模式
在普通-6和差分-6模式中,位平面按照6個(gè)像素的組來編碼。這些像素被組合成2×3或3×2的平鋪塊。位平面使用一組規(guī)則最大化地平鋪,且剩余的像素使用行跳過和列跳過模式的變體來編碼。當(dāng)且僅當(dāng)rowMB是3的倍數(shù)且colMB不是時(shí),使用2×3的“垂直”平鋪塊。否則,使用3×2的“水平”平鋪塊。圖55A示出了2×3的“垂直”平鋪塊的一個(gè)簡化示例。圖55B和55C示出了3×2的“水平”平鋪塊的簡化示例,對于該平鋪塊,拉長的深色矩形是1個(gè)像素寬,且使用行跳過和列跳過編碼來編碼。對于如圖55C所示地平鋪的平面,其中線性平鋪塊沿著圖像的上邊和左邊,平鋪塊的編碼順序遵循以下模式。首先編碼6個(gè)元素的平鋪塊,然后是列跳過和行跳過編碼的線性平鋪塊。如果數(shù)組大小是2×3或3×2的倍數(shù),則后一線性平鋪塊不存在,且位平面是完美地平鋪的。
6元素矩形平鋪塊使用不完整的哈夫曼碼來編碼,即不使用所有的最終節(jié)點(diǎn)用于編碼的哈夫曼碼。設(shè)N是平鋪塊中置位的數(shù)目,即0≤N≤6。對于N<3,使用VLC來編碼該平鋪塊。對于N=3,固定長度換碼之后跟隨5比特的固定長度碼,且對于N>3,固定長度換碼之后跟隨該平鋪塊的補(bǔ)碼的代碼。
矩形平鋪塊包含6比特的信息。設(shè)k是與平鋪塊相關(guān)聯(lián)的代碼,其中k=bi2j,其中bi是平鋪塊中自然掃描順序的第i個(gè)比特的二進(jìn)制值。因此0≤k≤64。使用VLC和滿足固定長度碼的換碼的組合來用信號表示k。
差分-6模式
普通-6方法用于產(chǎn)生如上所述的位平面,然后如下所述向該位平面應(yīng)用Diff-1運(yùn)算。
行跳過模式
在行跳過編碼模式中,以一個(gè)比特的額外開銷跳過所有的零行。句法如下對于每一行,單個(gè)ROWSKIP位指示該行是否被跳過;如果該行被跳過,則接著是下一行的ROWSKIP位;否則(該行不被跳過),則接著是ROWBITS位(對行中的每一宏塊有一個(gè)比特)。由此,如果整個(gè)行為零,則發(fā)送一個(gè)0比特作為ROWSKIP碼元,且跳過ROWBITS。如果在行中有一個(gè)置位,則ROWSKIP被設(shè)為1,且整個(gè)行原始地發(fā)送(ROWBITS)。行是在半幀或幀中從上到下掃描的。
列跳過模式
列跳過是行跳過的轉(zhuǎn)置。列是在半幀或幀中從左到右掃描的。
Diff-1反差分解碼
如果使用了任一差分模式(差分-2或差分-6),則首先使用對應(yīng)的普通模式(分別為普通-2或普通-6)來解碼“差分位”的位平面。差分位用于重新生成原始的位平面。重新生成過程是二進(jìn)制字母表上的2-D DPCM。為重新生成位置(i,j)處的位,如下(從位置(i,j)處的位b(i,j))生成預(yù)測值bp(i,j)
對于差分編碼模式,不執(zhí)行基于INVERT的逐位反轉(zhuǎn)過程。然而,在不同的容量中使用INVERT標(biāo)志以指示用于上述預(yù)測值的導(dǎo)出的碼元A的值。更具體地,如果INVERT等于0,則A等于0,如果INVERT等于1,則A等于1。位平面的實(shí)際值是通過將預(yù)測值與解碼的差分位值進(jìn)行xor(異或)運(yùn)算來獲得的。在以上公式中,b(i,j)是在最終的解碼之后(即,在完成了普通-2/普通-6,接著完成了與其預(yù)測值的差分xor之后),第i,j位置處的位。
參考各實(shí)施例描述和示出了本發(fā)明的原理之后,可以認(rèn)識到,可以在排列和細(xì)節(jié)上修改各實(shí)施例,而不脫離這些原理。應(yīng)當(dāng)理解,此處所描述的程序、過程或方法不相關(guān)于或不限于任何特定類型的計(jì)算環(huán)境,除非另外指明。可依照此處所描述的教導(dǎo)來使用各種類型的通用或?qū)S糜?jì)算環(huán)境或執(zhí)行操作。以軟件示出的實(shí)施例的元素可以用硬件來實(shí)現(xiàn),反之亦然。
鑒于可應(yīng)用本發(fā)明的原理的許多可能的實(shí)施例,要求保護(hù)落入所附權(quán)利要求書及其等效技術(shù)方案的范圍和精神之內(nèi)的所有這樣的實(shí)施例作為本發(fā)明。
權(quán)利要求
1.一種方法,包括
確定用于為隔行掃描幀編碼的圖像中的當(dāng)前宏塊預(yù)測半幀運(yùn)動矢量的多個(gè)有效候選運(yùn)動矢量;以及
至少部分地基于所述有效候選運(yùn)動矢量,為所述半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值,所述計(jì)算包括基于所述有效候選運(yùn)動矢量的數(shù)目是否為三來確定是否對所述有效候選運(yùn)動矢量執(zhí)行中值運(yùn)算。
2.如權(quán)利要求1所述的方法,其特征在于,還包括至少部分地基于所述運(yùn)動矢量預(yù)測值和運(yùn)動矢量差分信息來重構(gòu)所述半幀運(yùn)動矢量。
3.如權(quán)利要求2所述的方法,其特征在于,所述運(yùn)動矢量差分信息指示對所述半幀運(yùn)動矢量不存在運(yùn)動矢量差分。
4.如權(quán)利要求1所述的方法,其特征在于,所述有效候選運(yùn)動矢量的數(shù)目為三,且其中,所述計(jì)算還包括
對所述有效候選運(yùn)動矢量執(zhí)行中值運(yùn)算。
5.如權(quán)利要求1所述的方法,其特征在于,所述有效候選運(yùn)動矢量的數(shù)目小于三,且其中,所述計(jì)算還包括
選擇所述有效候選運(yùn)動矢量中的一個(gè)以用作所述運(yùn)動矢量預(yù)測值,而無需在所述有效候選運(yùn)動矢量上執(zhí)行中值運(yùn)算。
6.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)前宏塊是2半幀運(yùn)動矢量宏塊。
7.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)前宏塊是4半幀運(yùn)動矢量宏塊。
8.如權(quán)利要求1所述的方法,其特征在于,所述有效候選運(yùn)動矢量中的至少一個(gè)是來自相鄰宏塊的幀運(yùn)動矢量。
9.如權(quán)利要求1所述的方法,其特征在于,所述有效候選運(yùn)動矢量中的至少一個(gè)是來自相鄰宏塊的半幀運(yùn)動矢量。
10.如權(quán)利要求1所述的方法,其特征在于,還包括為所述當(dāng)前宏塊的一個(gè)或多個(gè)其它半幀運(yùn)動矢量計(jì)算預(yù)測值。
11.如權(quán)利要求1所述的方法,其特征在于,所述隔行掃描幀編碼的圖像是隔行掃描P幀。
12.如權(quán)利要求1所述的方法,其特征在于,所述中值運(yùn)算是分量級的中值運(yùn)算。
13.如權(quán)利要求1所述的方法,其特征在于,所述有效候選運(yùn)動矢量中的每一個(gè)被表征為用于所述隔行掃描幀編碼的圖像中的塊、宏塊半幀、宏塊半幀部分或宏塊。
14.如權(quán)利要求1所述的方法,其特征在于,所述有效候選運(yùn)動矢量中的每一個(gè)被表征為用于與所述當(dāng)前宏塊相同的片內(nèi)的塊、宏塊半幀、宏塊半幀部分或宏塊。
15.如權(quán)利要求1所述的方法,其特征在于,所述有效候選運(yùn)動矢量中的每一個(gè)被表征為實(shí)際的運(yùn)動矢量值,而非用于幀內(nèi)編碼塊、宏塊半幀、宏塊半幀部分或宏塊。
16.一種其上儲存有用于在視頻解碼器中執(zhí)行如權(quán)利要求1所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
17.一種其上儲存有用于在視頻編碼器中執(zhí)行如權(quán)利要求1所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
18.一種方法,包括
接收關(guān)于隔行掃描幀編碼的前向預(yù)測圖像中的宏塊的運(yùn)動矢量信息,所述運(yùn)動矢量信息包括關(guān)于四個(gè)半幀運(yùn)動矢量的信息;以及
使用所述四個(gè)半幀運(yùn)動矢量處理所述宏塊;
其中,所述四個(gè)半幀運(yùn)動矢量中的兩個(gè)的第一集合表示所述宏塊中的第一半幀中的運(yùn)動,且其中,所述四個(gè)半幀運(yùn)動矢量中的兩個(gè)的第二集合表示所述宏塊中的第二半幀中的運(yùn)動。
19.如權(quán)利要求18所述的方法,其特征在于,關(guān)于所述四個(gè)半幀運(yùn)動矢量的信息包括關(guān)于所述四個(gè)半幀運(yùn)動矢量的運(yùn)動矢量差分。
20.一種其上儲存有用于在視頻解碼器中執(zhí)行如權(quán)利要求18所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
21.一種其上儲存有用于在視頻編碼器中執(zhí)行如權(quán)利要求18所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
22.一種方法,包括
確定用于為隔行掃描的幀編碼的圖像中的當(dāng)前宏塊的當(dāng)前半幀預(yù)測半幀運(yùn)動矢量的候選運(yùn)動矢量;
為一個(gè)或多個(gè)所述候選運(yùn)動矢量中的每一個(gè)確定半幀極性;以及
至少部分地基于所述一個(gè)或多個(gè)半幀極性為所述半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值。
23.如權(quán)利要求22所述的方法,其特征在于,所述候選運(yùn)動矢量是以四分之一像素的增量來測量的。
24.如權(quán)利要求22所述的方法,其特征在于,所述確定半幀極性包括對候選運(yùn)動矢量的y分量執(zhí)行逐位AND運(yùn)算。
25.如權(quán)利要求22所述的方法,其特征在于,所述當(dāng)前宏塊是2半幀運(yùn)動矢量宏塊。
26.如權(quán)利要求22所述的方法,其特征在于,所述當(dāng)前宏塊是4半幀運(yùn)動矢量宏塊。
27.如權(quán)利要求22所述的方法,其特征在于,所述候選運(yùn)動矢量中的至少一個(gè)是來自相鄰宏塊的幀運(yùn)動矢量。
28.如權(quán)利要求22所述的方法,其特征在于,所述候選運(yùn)動矢量中的至少一個(gè)是來自相鄰宏塊的半幀運(yùn)動矢量。
29.如權(quán)利要求22所述的方法,其特征在于,還包括為所述當(dāng)前宏塊的一個(gè)或多個(gè)半幀其它運(yùn)動矢量中的每一個(gè)計(jì)算運(yùn)動矢量預(yù)測值。
30.如權(quán)利要求22所述的方法,其特征在于,還包括至少部分地基于所述運(yùn)動矢量預(yù)測值和運(yùn)動矢量差分信息重構(gòu)所述半幀運(yùn)動矢量。
31.如權(quán)利要求30所述的方法,其特征在于,所述運(yùn)動矢量差分信息指示對所述半幀運(yùn)動矢量不存在運(yùn)動矢量差分。
32.一種其上儲存有用于在視頻解碼器中執(zhí)行如權(quán)利要求22所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
33.如權(quán)利要求22所述的方法,其特征在于,所述為候選運(yùn)動矢量確定半幀極性包括確定所述候選運(yùn)動矢量是否指示參考幀的上半幀或下半幀中的位移。
34.如權(quán)利要求22所述的方法,其特征在于,所述為候選運(yùn)動矢量確定半幀極性包括確定所述候選運(yùn)動矢量是否指示具有與所述當(dāng)前半幀相同或相反極性的半幀中的位移。
35.一種其上儲存有用于在視頻編碼器中執(zhí)行如權(quán)利要求22所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
36.一種方法,包括
確定用于為隔行掃描幀編碼的圖像中的當(dāng)前宏塊的當(dāng)前半幀預(yù)測半幀運(yùn)動矢量的一個(gè)或多個(gè)有效候選運(yùn)動矢量預(yù)測值;
為所述一個(gè)或多個(gè)有效候選運(yùn)動矢量預(yù)測值中的每一個(gè)別有效候選運(yùn)動矢量預(yù)測值確定半幀極性;
根據(jù)其半幀極性,將每一個(gè)別有效候選運(yùn)動矢量預(yù)測值分配給兩個(gè)集合中的一個(gè);以及
至少部分地基于所述兩個(gè)集合中的一個(gè)或多個(gè)為所述半幀運(yùn)動矢量計(jì)算運(yùn)動矢量預(yù)測值。
37.如權(quán)利要求36所述的方法,其特征在于,所述兩個(gè)集合是由相反極性集合和相同極性集合構(gòu)成的。
38.如權(quán)利要求37所述的方法,其特征在于,所述計(jì)算運(yùn)動矢量預(yù)測值包括選擇主要極性的有效候選運(yùn)動矢量預(yù)測值。
39.如權(quán)利要求38所述的方法,其特征在于,所述選擇主要極性的有效候選運(yùn)動矢量預(yù)測值包括以指定的選擇順序選擇第一有效候選運(yùn)動矢量預(yù)測值。
40.如權(quán)利要求37所述的方法,其特征在于,所述分配包括僅將一個(gè)相同極性的有效候選運(yùn)動矢量預(yù)測值分配給所述相同極性集合,以及僅將一個(gè)相反極性的有效候選運(yùn)動矢量預(yù)測值分配給所述相反極性集合,且其中,所述計(jì)算運(yùn)動矢量預(yù)測值包括選擇所述相同極性的有效候選運(yùn)動矢量預(yù)測值。
41.如權(quán)利要求36所述的方法,其特征在于,所述分配包括將三個(gè)有效候選運(yùn)動矢量預(yù)測值分配給所述兩個(gè)集合中的一個(gè),以及不將任何有效候選運(yùn)動矢量預(yù)測值分配給所述兩個(gè)集合中的另一個(gè)。
42.如權(quán)利要求41所述的方法,其特征在于,所述計(jì)算運(yùn)動矢量預(yù)測值包括對所述三個(gè)有效候選運(yùn)動矢量預(yù)測值執(zhí)行中值運(yùn)算。
43.一種其上儲存有用于在視頻解碼器中執(zhí)行如權(quán)利要求36所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
44.一種其上儲存有用于在視頻編碼器中執(zhí)行如權(quán)利要求36所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
45.一種方法,包括
解碼隔行掃描幀的多個(gè)宏塊中的一個(gè)或多個(gè)跳過宏塊,其中,所述一個(gè)或多個(gè)跳過宏塊中的每一個(gè)(1)是由比特流中的跳過宏塊信號指示的,(2)僅使用一個(gè)運(yùn)動矢量且沒有任何運(yùn)動矢量差分信息,以及(3)缺少殘差信息;
其中,對所述一個(gè)或多個(gè)跳過宏塊中的每一個(gè)本身的跳過宏塊信號指示對所述相應(yīng)跳過宏塊的1運(yùn)動矢量經(jīng)運(yùn)動補(bǔ)償?shù)慕獯a。
46.如權(quán)利要求45所述的方法,其特征在于,對所述一個(gè)或多個(gè)跳過宏塊中的每一個(gè)的跳過宏塊信號是在具有多個(gè)層的比特流中的幀層發(fā)送的壓縮位平面的一部分。
47.如權(quán)利要求46所述的方法,其特征在于,所述多個(gè)層包括序列層、入口點(diǎn)層、幀層和宏塊層。
48.如權(quán)利要求45所述的方法,其特征在于,對所述一個(gè)或多個(gè)跳過宏塊中的每一個(gè)的跳過宏塊信號是在具有多個(gè)層的比特流中的半幀層發(fā)送的壓縮位平面的一部分。
49.如權(quán)利要求45所述的方法,其特征在于,對所述一個(gè)或多個(gè)跳過宏塊中的每一個(gè)的跳過宏塊信號是由在具有多個(gè)層的比特流中的宏塊層發(fā)送的個(gè)別比特構(gòu)成的。
50.如權(quán)利要求45所述的方法,其特征在于,所述隔行掃描幀是隔行掃描P幀。
51.如權(quán)利要求45所述的方法,其特征在于,所述隔行掃描幀是隔行掃描B幀。
52.如權(quán)利要求45所述的方法,其特征在于,所述隔行掃描幀是具有隔行掃描P半幀的幀。
53.如權(quán)利要求45所述的方法,其特征在于,所述隔行掃描幀是具有隔行掃描B半幀的幀。
54.如權(quán)利要求45所述的方法,其特征在于,所述僅一個(gè)運(yùn)動矢量是幀運(yùn)動矢量。
55.一種其上儲存有用于執(zhí)行如權(quán)利要求45所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
56.一種方法,包括
從一組多個(gè)可用編碼模式中選擇一個(gè)編碼模式;以及
依照所選擇的編碼模式處理位平面,其中,所述位平面包括用信號表示隔行掃描幀中的宏塊是被跳過還是未跳過的二進(jìn)制信息,且其中,如果(1)所述宏塊只有一個(gè)運(yùn)動矢量;(2)所述僅一個(gè)運(yùn)動矢量等于為所述宏塊預(yù)測的運(yùn)動矢量;以及(3)所述宏塊沒有殘留誤差,則所述隔行掃描幀中的宏塊被跳過,但是如果所述宏塊具有多個(gè)運(yùn)動矢量,則所述宏塊不被跳過。
57.一種其上儲存有用于在視頻編碼器中執(zhí)行如權(quán)利要求56所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
58.一種其上儲存有用于在視頻解碼器中執(zhí)行如權(quán)利要求56所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
59.一種方法,包括
為隔行掃描P幀中的宏塊選擇運(yùn)動補(bǔ)償類型;
為所述宏塊選擇半幀/幀編碼類型;以及
為所述宏塊對所述運(yùn)動補(bǔ)償類型和所述半幀/幀編碼類型進(jìn)行聯(lián)合編碼。
60.如權(quán)利要求59所述的方法,其特征在于,還包括將所述宏塊的其它信息與所述運(yùn)動補(bǔ)償類型和所述半幀/幀編碼類型一起聯(lián)合編碼。
61.如權(quán)利要求60所述的方法,其特征在于,所述宏塊的其它信息包括所述宏塊的差分運(yùn)動矢量的存在的指示符。
62.如權(quán)利要求59所述的方法,其特征在于,還包括將所述宏塊的差分運(yùn)動矢量的存在或缺乏的指示符與所述運(yùn)動補(bǔ)償類型和所述半幀/幀編碼類型一起進(jìn)行聯(lián)合編碼,其中所述宏塊是1運(yùn)動矢量宏塊。
63.如權(quán)利要求59所述的方法,其特征在于,所述運(yùn)動補(bǔ)償類型是從由以下各項(xiàng)構(gòu)成的組中選出的1MV、4幀MV、2半幀MV或4半幀MV。
64.如權(quán)利要求59所述的方法,其特征在于,所述半幀/幀編碼類型是從由以下各項(xiàng)構(gòu)成的組中選出的半幀變換、幀變換或無已編碼塊。
65.一種其上儲存有用于執(zhí)行如權(quán)利要求59所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
66.一種方法,包括
接收關(guān)于隔行掃描P幀中的宏塊的宏塊信息,所述宏塊信息包括表示所述宏塊的運(yùn)動補(bǔ)償類型和半幀/幀編碼類型的聯(lián)合碼;以及
解碼所述聯(lián)合碼以獲得所述宏塊的運(yùn)動補(bǔ)償類型信息和半幀/幀編碼類型信息兩者。
67.如權(quán)利要求66所述的方法,其特征在于,所述聯(lián)合碼是可變長度代碼表中的可變長度碼。
68.如權(quán)利要求66所述的方法,其特征在于,所述解碼包括在可變長度代碼表中查找所述聯(lián)合碼。
69.如權(quán)利要求66所述的方法,其特征在于,所述聯(lián)合碼還表示關(guān)于所述宏塊的其它信息。
70.如權(quán)利要求69所述的方法,其特征在于,所述宏塊的其它信息包括所述宏塊的差分運(yùn)動矢量的存在的指示符。
71.如權(quán)利要求66所述的方法,其特征在于,所述聯(lián)合碼還表示所述宏塊的差分運(yùn)動矢量的存在的指示符,其中所述宏塊是1運(yùn)動矢量宏塊。
72.如權(quán)利要求66所述的方法,其特征在于,所述運(yùn)動補(bǔ)償類型是從由以下各項(xiàng)構(gòu)成的組中選出的1MV、4幀MV、2半幀MV或4半幀MV。
73.如權(quán)利要求66所述的方法,其特征在于,所述半幀/幀編碼類型是從由以下各項(xiàng)構(gòu)成的組中選出的半幀變換、幀變換或無已編碼塊。
74.一種其上儲存有用于執(zhí)行如權(quán)利要求66所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
75.一種方法,包括
接收關(guān)于一個(gè)宏塊的兩個(gè)以上亮度運(yùn)動矢量的亮度運(yùn)動矢量信息,所述兩個(gè)以上亮度運(yùn)動矢量中的每一個(gè)與所述宏塊的至少一部分相關(guān)聯(lián);以及
對所述兩個(gè)以上亮度運(yùn)動矢量中的每一個(gè)導(dǎo)出與所述宏塊的至少一部分相關(guān)聯(lián)的色度運(yùn)動矢量,所述導(dǎo)出包括執(zhí)行涉及所述亮度運(yùn)動矢量信息上的舍入表的至少一個(gè)計(jì)算。
76.如權(quán)利要求75所述的方法,其特征在于,所述宏塊是半幀編碼的宏塊。
77.如權(quán)利要求75所述的方法,其特征在于,所述宏塊是具有四個(gè)亮度半幀運(yùn)動矢量的半幀編碼的宏塊,所述四個(gè)亮度半幀運(yùn)動矢量中的每一個(gè)描述了所述宏塊的亮度半幀的一部分中的運(yùn)動。
78.如權(quán)利要求77所述的方法,其特征在于,每一色度運(yùn)動矢量是描述所述宏塊的色度半幀的一個(gè)不同部分中的運(yùn)動的色度半幀運(yùn)動矢量。
79.如權(quán)利要求75所述的方法,其特征在于,所述舍入表是基于半幀的舍入表,且其中,所述導(dǎo)出包括使用所述基于半幀的舍入表舍入所述亮度運(yùn)動矢量信息的至少一部分。
80.如權(quán)利要求75所述的方法,其特征在于,所述宏塊是具有四個(gè)亮度幀運(yùn)動矢量的幀編碼的宏塊,所述四個(gè)亮度幀運(yùn)動矢量中的每一個(gè)與所述宏塊的一個(gè)不同亮度塊相關(guān)聯(lián)。
81.如權(quán)利要求75所述的方法,其特征在于,所述宏塊是4:2:0宏塊。
82.如權(quán)利要求75所述的方法,其特征在于,所述導(dǎo)出包括對所述亮度運(yùn)動矢量信息的至少一部分進(jìn)行舍入和二次采樣。
83.如權(quán)利要求82所述的方法,其特征在于,所述舍入表是基于半幀的舍入查找表,且其中,所述舍入是使用所述基于半幀的舍入查找表來執(zhí)行的。
84.如權(quán)利要求75所述的方法,其特征在于,所述兩個(gè)以上亮度運(yùn)動矢量是以四分之一像素為單位的。
85.一種其上儲存有用于執(zhí)行如權(quán)利要求75所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
86.一種在視頻解碼器中的方法,包括
接收關(guān)于一個(gè)或多個(gè)亮度運(yùn)動矢量的亮度運(yùn)動矢量信息,所述一個(gè)或多個(gè)亮度運(yùn)動矢量中的每一個(gè)與隔行掃描P幀中的宏塊的至少一部分相關(guān)聯(lián);以及
對所述一個(gè)或多個(gè)亮度運(yùn)動矢量中的每一個(gè)導(dǎo)出與所述宏塊的至少一部分相關(guān)聯(lián)的色度運(yùn)動矢量,所述導(dǎo)出至少部分地基于關(guān)于所述一個(gè)或多個(gè)亮度運(yùn)動矢量的運(yùn)動矢量信息;
其中,所述視頻解碼器可用于對使用隔行掃描P幀中的四個(gè)亮度半幀運(yùn)動矢量預(yù)測的宏塊進(jìn)行解碼。
87.如權(quán)利要求86所述的方法,其特征在于,所述解碼器還可用于對具有四個(gè)亮度幀運(yùn)動矢量的幀間編碼的宏塊、具有兩個(gè)亮度半幀運(yùn)動矢量的幀間編碼的宏塊、具有一個(gè)亮度幀運(yùn)動矢量的幀間編碼的宏塊、以及幀內(nèi)編碼的宏塊進(jìn)行解碼。
88.如權(quán)利要求86所述的方法,其特征在于,所述導(dǎo)出包括導(dǎo)出四個(gè)色度半幀運(yùn)動矢量。
89.如權(quán)利要求86所述的方法,其特征在于,所述導(dǎo)出包括向所述亮度運(yùn)動矢量信息的至少一部分應(yīng)用基于半幀的舍入查找表。
90.一種包括用于使得計(jì)算機(jī)執(zhí)行一種方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述方法包括
接收關(guān)于一個(gè)或多個(gè)亮度半幀運(yùn)動矢量的亮度運(yùn)動矢量信息,所述一個(gè)或多個(gè)亮度半幀運(yùn)動矢量中的每一個(gè)與隔行掃描的幀編碼的圖像中的宏塊的至少一部分相關(guān)聯(lián);以及
對所述一個(gè)或多個(gè)亮度半幀運(yùn)動矢量中的每一個(gè)導(dǎo)出與所述宏塊的至少一部分相關(guān)聯(lián)的色度運(yùn)動矢量,所述導(dǎo)出至少部分地基于關(guān)于所述一個(gè)或多個(gè)亮度半幀運(yùn)動矢量的運(yùn)動矢量信息,所述導(dǎo)出色度運(yùn)動矢量包括
使用基于半幀的舍入表舍入亮度半幀運(yùn)動矢量分量;以及
對所述亮度半幀運(yùn)動矢量分量進(jìn)行二次采樣。
91.如權(quán)利要求90所述的方法,其特征在于,所述隔行掃描幀編碼的圖像是隔行掃描P幀。
92.如權(quán)利要求90所述的方法,其特征在于,所述基于半幀的舍入表是由以下值集合構(gòu)成的整數(shù)數(shù)組{0,0,1,2,4,4,5,6,2,2,3,8,6,6,7,12}。
93.如權(quán)利要求90所述的方法,其特征在于,所述一個(gè)或多個(gè)亮度半幀運(yùn)動矢量包括四個(gè)亮度半幀運(yùn)動矢量。
94.如權(quán)利要求90所述的方法,其特征在于,所述宏塊是4:2:0宏塊,且其中,所述二次采樣包括將所述亮度半幀運(yùn)動矢量分量除以2。
全文摘要
在一方面,編碼器/解碼器接收關(guān)于隔行掃描幀編碼的前向預(yù)測圖像中的宏塊的四個(gè)半幀運(yùn)動矢量的信息(1905),并使用四個(gè)半幀運(yùn)動矢量處理該宏塊。在另一方面,解碼器解碼隔行掃描幀的跳過宏塊。跳過宏塊僅使用一個(gè)運(yùn)動矢量,且沒有運(yùn)動矢量差分信息,且缺少殘差信息。跳過宏塊信號指示1運(yùn)動矢量編碼。在另一方面,解碼器接收關(guān)于宏塊的多個(gè)亮度運(yùn)動矢量的亮度運(yùn)動矢量信息,并通過在亮度運(yùn)動矢量信息上執(zhí)行至少一個(gè)計(jì)算來對每一亮度運(yùn)動矢量導(dǎo)出色度運(yùn)動矢量,從而維持了宏塊的色度運(yùn)動矢量與亮度運(yùn)動矢量的1∶1比。例如,解碼器接收宏塊的四個(gè)亮度半幀運(yùn)動矢量,并導(dǎo)出宏塊的四個(gè)色度運(yùn)動矢量。
文檔編號H04N7/36GK1846437SQ20048002545
公開日2006年10月11日 申請日期2004年9月3日 優(yōu)先權(quán)日2003年9月7日
發(fā)明者P·蘇, T·W·赫爾科比, 林志隆, S·斯里尼瓦杉, K·慕克吉 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
苏尼特左旗| 紫金县| 抚远县| 苍溪县| 涟源市| 寿阳县| 五指山市| 吉水县| 秦皇岛市| 忻州市| 弥渡县| 遵化市| 黑山县| 宿迁市| 永修县| 舒兰市| 古田县| 三江| 北票市| 合川市| 颍上县| 江津市| 沈丘县| 广宁县| 琼海市| 江川县| 兴海县| 肃宁县| 定结县| 鄢陵县| 长岭县| 荔浦县| 休宁县| 策勒县| 潼关县| 金昌市| 重庆市| 上虞市| 塘沽区| 崇义县| 通化市|