專利名稱::用于前向預測的隔行掃描視頻幀的場的預測運動矢量的制作方法
技術領域:
:描述用于隔行掃描視頻編碼和解碼的技術與工具。例如,視頻編碼器/解碼器為隔行掃描視頻幀的場計算運動矢量預測值。
背景技術:
:數字視頻消耗大量的存儲器和傳輸容量。典型的未加工的數字視頻序列每秒包括15或30個圖象。每個圖象可以包括幾萬或幾十萬像素(pixel)(也稱為pels(象素))。每個像素代表圖象中的一個微小元素。在未加工的形式中,計算機通常用24比特或更多的比特來表示一個像素。因而,典型的未加工的數字視頻序列的每秒比特數,或者比特率可以是5百萬比特/秒或更多。許多計算機和計算機網絡缺乏資源來處理未加工的數字視頻。因此,工程師使用壓縮(也稱為編碼(coding或encoding))來降低數字視頻的比特率。壓縮可以是無損的,其中視頻的質量不受損害,但對比特率的減少受到視頻復雜性的限制?;蛘?,壓縮可以是有損的,其中視頻的質量受到損害,但對比特率的減少更有效。解壓縮與壓縮相反。一般而言,視頻壓縮技術包括“幀內(intra)”壓縮和“幀間(inter)”或預測壓縮。幀內壓縮技術壓縮單獨的圖片,一般稱為I圖片或關鍵圖片。幀間壓縮技術參考先前和/或后面的圖片來壓縮圖片,且一般稱為預測圖片、P圖片或B圖片。I.在WindowsMediaVideo(視窗媒體視頻)版本8和9中的幀間壓縮Microsoft(微軟)公司的WindowsMediaVideo版本8[“WMV8”]包括視頻編碼器和視頻解碼器。WMV8編碼器使用幀內和幀間壓縮,WMV8解碼器使用幀內和幀間解壓縮。WindowsMediaVideo版本9[“WMV9”]的早期版本對于許多操作使用相似的結構。WMV8編碼器中的幀間壓縮使用基于分塊的運動補償預測編碼,后跟隨剩余誤差(residualerror)變換編碼。圖1和2例示在WMV8編碼器中對于預測幀的基于分塊的幀間壓縮。特別地,圖1例示預測幀110的運動估計,而圖2例示預測幀的運動補償塊的預測剩余部分(predictionresidual)的壓縮。例如,在圖1中,WMV8編碼器為預測幀110中的宏塊(macroblock)115計算運動矢量。為了計算運動矢量,編碼器搜索參考幀130的搜索區(qū)135。在搜索區(qū)135內,編碼器將來自預測幀110的宏塊115與各種候選宏塊比較,以便找出一個良好匹配的候選宏塊。編碼器輸出指定用于匹配宏塊的(熵編碼的)運動矢量的信息。由于運動矢量值常常與在空間上環(huán)繞運動矢量的值有關系,用于傳輸運動矢量信息的數據壓縮可以通過選擇來自相鄰宏塊的運動矢量預測值并使用該預測值為當前宏塊預測運動矢量來完成。編碼器可以編碼運動矢量與預測值之間的差分。在通過將差分加到預測值上來重新構造運動矢量之后,解碼器使用運動矢量,用來自在參考幀130的信息來為宏塊115計算預測宏塊,其中參考幀130是先前重新構造的、在編碼器和解碼器可得到的幀。預測很少是完美的,因此編碼器通常編碼預測宏塊與宏塊115本身之間像素差的塊(也稱為誤差或剩余塊)。圖2例示在WMV8編碼器中誤差塊235的計算與編碼的例子。誤差塊235是預測塊215與原來的當前塊225之間的差。編碼器將DCT240應用于誤差塊235,得到一個8×8的系數塊245。編碼器隨后量化250DCT系數,得到8×8最化的DCT系數塊255。編碼器將8×8塊255掃描260到一維陣列265中,使得系數通常從最低頻率到最高頻率排序。編碼器使用游程長度編碼(runlengthencoding)270的變體來熵編碼經掃描的系數。編碼器從一個或多個行程/級/最后(run/level/last)表275選擇一個熵代碼并輸出這個熵代碼。圖3示出用于幀間編碼塊的相應解碼過程300。在圖3中概括地說,使用具有一個或多個游程/級/最后表315的可變長度解碼(variablelengthdecoding)310和游程長度解碼(runlengthdecoding)320,解碼器解碼(310,320)表示預測剩余部分的經熵編碼的信息。解碼器將存儲經熵解碼的信息的一維陣列325逆掃描330到二維塊335中。解碼器逆量化并逆離散余弦變換(一起,340)數據,得到重新構造的誤差塊345。在一個獨立的運動補償路徑中,解碼器使用用于離參考幀的位移的運動矢量信息355來計算預測的塊365。解碼器將預測塊365與重新構造的誤差塊345結合起來,來形成重新構造的塊375。原來的與重新構造的幀之間的改變量就是失真,而編碼幀所需要的位數表示幀的速率。失真量約略與速率成反比。II.隔行掃描的視頻和逐行掃描的視頻典型的隔行掃描視頻幀由不同時間開始的兩個場組成。例如,參考圖4,隔行掃描的視頻幀400包括頂場410和底場420。通常,在一個時間(時間t)開始掃描偶數行(頂場)并在一個不同(一般稍后)時間(例如時間t+1)開始掃描奇數行(底場)。這個時序可以在存在運動的隔行掃描的視頻幀的區(qū)域中產生鋸齒化牙狀特點,因為在不同時間開始掃描兩個場。因此,可以按照場結構重新安排隔行掃描的視頻幀,將奇數行一起分組在一個場中,而將偶數行一起分組在另一個場中。這種安排,稱為場編碼,在高度運動的圖象中對于減少這樣的鋸齒化邊緣人為假象是有用的。另一方面,在靜止區(qū)域中,可在沒有這樣的重新安排的情況下,更有效地保持隔行掃描視頻幀中的圖象細節(jié)。因此,在靜止或低度運動的隔行掃描視頻幀中常常使用幀編碼,其中保持原來交替的場行安排。典型的逐行掃描視頻幀由一個具有非交替行的內容的幀組成。與隔行掃描的視頻相比,逐行掃描的視頻不將視頻幀劃分成獨立的場,而是在單一時間開始從左至右、由頂至底掃描整個幀。III.在WMV9的早期版本中隔行掃描P幀編碼與解碼WindowsMediaVideo版本9[“WMV9”]的早期版本,使用隔行掃描P幀編碼和解碼。在WMV9的這些早期版本中,隔行掃描的P幀可以包含以場模式或者以幀模式編碼的宏塊,或者被跳過的宏塊,其中通常在一個接一個宏塊基礎上作出判決。兩個運動矢量與每一個場編碼的宏塊相關聯,而一個運動矢量與每一個幀編碼的宏塊相關聯。編碼器聯合地編碼宏塊中塊的運動信息,包括水平和垂直運動矢量差分分量,有可能連同其它信令(signaling)信息。在編碼器中,通過計算運動矢量與運動矢量預測值之間的差分來編碼運動矢量,其中運動矢量預測值是根據相鄰的運動矢量來計算的。而且,在解碼器中,通過將運動矢量差分加到運動矢量預測值上來重新構造運動矢量,其中運動矢量預測值再次是根據相鄰的運動矢量計算的(這次是在解碼器中)。圖5、6和7示出在WMV9的早期版本中的隔行掃描的P幀中,分別用于幀編碼的宏塊和場編碼的宏塊的運動矢量預測值的候選預測值的例子。圖5示出用于隔行掃描的P幀中的內部位置中當前的幀編碼宏塊的候選預測值A、B和C(不是宏塊行中第一或最后一個宏塊,不是在頂行中)??梢詮牟煌谀切俗、B和C的候選方向獲得預測(例如在諸如在當前宏塊是一行或頂行中的第一個宏塊或最后一個宏塊時這樣的特殊情況下,因為對于這樣的情況某些預測值是不能得到的)。對于當前幀編碼的宏塊,取決于相鄰的宏塊是場編碼的還是幀編碼的來不同地計算預測值候選。對于相鄰的幀編碼宏塊,簡單地取運動矢量作為預測值候選。對于相鄰的場編碼宏塊,通過對頂與底場運動矢量取平均來確定候選運動矢量。圖6和7示出用于在宏塊行中但不在頂行中、不是第一或最后一個宏塊的場編碼宏塊中的當前場的候選預測值A、B和C。在圖6中,當前場是底場,并使用相鄰宏塊中的底場運動矢量作為候選預測值。在圖7中,當前場是頂場,并使用頂場運動矢量作為候選預測值。因而,對于當前的場編碼宏塊中的每一個場,用于每一個場的運動矢量預測值候選的數量最多是三,其中每一個來自同一場類型(例如頂或底)的每一個候選作為當前場。用于當前宏塊或當前宏塊的場的預測值是根據候選預測值來選擇的,并根據預測值來計算運動矢量差分。可以通過在編碼器或解碼器任意一邊將運動矢量差分加到選擇的運動矢量預測值上,來重新構造運動矢量。通常,由經編碼的運動信息來重新構造亮度運動矢量,而由重新構造的亮度運動矢量來導出色度運動矢量。IV.用于視頻壓縮和解壓縮的標準除WMV8和WMV9的早期版本之外,若干國際標準涉及視頻壓縮和解壓縮。這些標準包括運動圖片專家組[“MPEG”]1、2和4標準和來自國際電信聯合會[“ITU”]的H.261、H.262、H.263和H.264標準。用于在國際標準中實現數字視頻序列的數據壓縮的一種基本方法是要減少圖片之間的時間冗余(temporalredundancy)。這些流行的壓縮方案(MPEG-1、MPEG-2、MPEG-4、H.261、H.263等)使用運動估計和補償。例如,將當前幀被劃分成統(tǒng)一的正方形區(qū)域(例如塊和/或宏塊)。為每一當前區(qū)域通過發(fā)送用于該區(qū)域的運動矢量信息來指定匹配的區(qū)域。運動矢量表示在先前編碼(和重新構造)的幀中要用作當前區(qū)域的預測值的區(qū)域的位置。導出當前區(qū)域與參考幀中的區(qū)域之間一個接一個像素的差,稱為誤差信號。這個誤差信號通常具有比原來的信號低的熵。因此,可以用較低的速率來編碼該信息。如在WMV8和WMV9的早期版本中,由于運動矢量值常常與在空間環(huán)繞的運動矢量有關系,用于表示運動矢量信息的數據的壓縮可以通過編碼當前運動矢量與基于先前編碼的相鄰運動矢量的預測值之間的差分來完成。此外,有些國際標準描述在隔行掃描視頻幀中的運動估計和補償。H.262標準允許隔行掃描的視頻幀編碼為單一幀或為兩個場,其中可以自適應地在一幀接一幀的基礎上選擇幀編碼或場編碼。H.262標準描述基于場的預測,它是只使用參考幀的一個場的預測模式。H.262標準還描述雙主預測(dual-primeprediction),這是一種預測模式,其中為隔行掃描的P圖象中一個16×16塊平均兩個前向的基于場的預測。H.262標準的7.6節(jié)描述“場預測”,包括在兩個參考場之間選擇用于隔行掃描視頻幀的當前場的宏塊的運動補償。7.6.3節(jié)描述運動矢量預測和重新構造,其中用于給定宏塊的重新構造的運動矢量變成用于隨后被編碼/被解碼的宏塊的運動矢量預測值。這樣的運動矢量預測在許多情況下未能恰當地為隔行掃描視頻幀的場的宏塊預測運動矢量。給出對數字視頻的視頻壓縮和解壓縮的急迫重要性,不會驚訝視頻壓縮和解壓縮是高度發(fā)展的領域。無論前面的視頻壓縮和解壓縮技術有什么好處,但是,它們不具有下面的技術和工具的優(yōu)點。
發(fā)明內容總而言之,詳細的描述是針對用于編碼和解碼隔行掃描的視頻中預測視頻圖象的各種技術和工具的。所述的技術包括為隔行掃描視頻幀的塊或宏塊計算運動矢量預測值的技術。這些技術在許多情況下提高運動矢量預測值的準確性,從而減少了與編碼用于隔行掃描視頻幀的場的運動矢量信息相關聯的比特率??梢越M合地或獨立地使用各種技術和工具。在第一方面,編碼器/解碼器為隔行掃描的P場的一部分(例如塊或宏塊)的運動矢量計算運動矢量預測值,包括在為該部分使用相同極性運動矢量預測值與使用相反極性運動矢量預測值之間選擇。編碼器/解碼器至少部分地基于為運動矢量計算的運動矢量預測值來處理運動矢量。該處理可以包括在編碼過程中計算運動矢量與運動矢量預測值之間的運動矢量差分,和在解碼過程中由運動矢量差分與運動矢量預測值重新構造運動矢量。該選擇可以至少部分地基于在該部分周圍的近鄰的相反極性運動矢量的計數和/或近鄰的相同極性運動矢量的計數。該選擇還可以至少部分地基于比特流中單個比特信號。該選擇可以包括至少部分地基于在該部分周圍的近鄰的相反極性運動矢量的計數和/或近鄰的相同極性運動矢量的計數來確定主導預測值,并基于主要預測值和比特流中的單個比特信號來選擇相同極性運動矢量預測值或者相反極性運動矢量預測值。該選擇還可以包括,如果用于該部分的運動矢量參考相同極性場,則選擇相同極性運動矢量預測值,或者如果用于該部分的運動矢量參考相反極性場,則選擇相反極性運動矢量預測值??梢宰鳛樵谠摬糠种車慕彽亩鄠€相同極性的運動矢量預測值候選的中值來計算相同極性運動矢量預測值,并可以作為在該部分周圍的近鄰的多個相反極性的運動矢量預測值的中值來計算相反極性運動矢量預測值。相同極性運動矢量預測值候選可以通過定標相反極性運動矢量預測值候選來導出,并且相反極性運動矢量預測值可以通過定標相同極性運動矢量預測值候選來導出。在另一方面,編碼器/解碼器至少部分地基于多個相鄰的運動矢量為隔行掃描的P場的一部分的運動矢量計算運動矢量預測值,其中,多個相鄰的運動矢量包括一個或多個相反極性運動矢量和一個或多個相同極性運動矢量。編碼器/解碼器至少部分地基于為運動矢量計算的運動矢量預測值來處理運動矢量??梢宰鳛槎鄠€相同極性運動矢量預測值候選的中值來計算相同極性運動矢量預測值,其中,至少基于定標來自一個或多個相反極性運動矢量之一的值來導出多個候選的至少一個,以及可以作為多個相反極性運動矢量預測值候選的中值來計算相反極性運動矢量預測值,其中,至少基于定標來自一個或多個相同極性運動矢量之一的值來導出多個候選的至少一個。在另一方面,編碼器/解碼器處理隔行掃描的預測視頻幀,這是通過為視頻幀中當前場中的宏塊確定運動矢量預測值候選的第一集合,運動矢量預測值候選的第一集合引用具有相對于當前場的相同極性的第一參考場。至少部分地基于運動矢量預測值候選的第一集合中的一個或多個,為宏塊計算第一運動矢量預測值。為宏塊確定運動矢量預測值候選的第二集合,運動矢量預測值候選的第二集合引用具有相對于當前場的相反極性的第二參考場。至少部分地基于運動矢量預測值候選的第二集合的一個或多個,為宏塊計算第二運動矢量預測值。在該處理中使用第一和第二運動矢量預測值,諸如通過選擇第一和第二運動矢量預測值之一并基于選擇的運動矢量預測值為宏塊計算運動矢量差分,和/或選擇第一和第二運動矢量預測值之一并將選擇的預測值與運動矢量差分結合起來,為宏塊重新構造運動矢量。可以熵編碼運動矢量差分。在另一方面,通過定標具有不同于第一極性的第二極性的實際運動矢量值來計算第一極性運動矢量預測值候選。當為隔行掃描的P場的一部分的運動矢量計算運動矢量預測值時,使用第一極性運動矢量預測值候選。在編碼過程中計算運動矢量與運動矢量預測值之間的運動矢量差分。在解碼過程中由運動矢量差分與運動矢量預測值來重新構造運動矢量。第一極性運動矢量預測值候選具有與該部分相反的場極性,其中,實際運動矢量值具有與該部分相同的場極性,以及其中,調整定標以從相同極性定標成相反極性?;蛘?,第一極性運動矢量預測值候選可以具有與該部分相同的場極性,其中,實際運動矢量值具有與該部分相反的場極性,以及其中,調整定標以從相反極性定標成相同極性。定標至少部分地基于參考幀距離。在另一方面,編碼器/解碼器為視頻幀中當前場中的宏塊確定第一運動矢量預測值候選,第一運動矢量預測值候選具有第一極性。編碼器/解碼器為宏塊確定第二運動矢量預測值候選,其中,第二運動矢量預測值候選是由第一運動矢量預測值候選使用定標操作來導出的。第二運動矢量預測值候選具有不同于第一極性的極性。在另一方面,編碼器/解碼器為視頻幀中當前場中的宏塊確定第一運動矢量預測值候選,第一運動矢量預測值候選引用具有第一極性和參考距離的場。編碼器/解碼器為宏塊確定第二運動矢量預測值候選,其中,第二運動矢量預測值候選是由第一運動矢量預測值候選使用至少部分地基于參考距離變化的定標操作來導出的。第二運動矢量預測值候選具有不同于第一極性的極性。在另一方面,解碼器解碼比特流中的一個場層次處的第一元素,和比特流中一個宏塊層次處的第二元素與第三元素。第一元素包括用于視頻幀中當前場的參考場數量信息,它表示用于當前場的兩個參考場。第二元素包括用于當前場中的當前宏塊的宏塊模式信息。第三元素包括用于當前宏塊的運動矢量數據,其中,運動矢量數據包括差分運動矢量數據。解碼器為宏塊處理運動矢量數據。該處理包括為當前宏塊確定第一和第二運動矢量預測值,以及至少部分地基于第一和第二運動矢量預測值和至少部分地基于差分運動矢量數據,為當前宏塊重新構造運動矢量。第一運動矢量預測值是奇數場預測值而第二運動矢量預測值是偶數場預測值。在另一方面,解碼器解碼運動矢量數據,運動矢量數據共同地用信號表示水平差分運動矢量分量、垂直差分運動矢量分量和表示是否使用主導的或非主導的運動矢量預測值的標志。解碼器至少部分地基于經解碼的運動矢量數據,重新構造運動矢量。該重新構造可以包括基于該標志在使用主導運動矢量預測值或非主導運動矢量預測值之間選擇,將水平差分運動矢量分量與選擇的預測值的水平分量結合起來,以及將垂直差分運動矢量分量與選擇的預測值的水平分量結合起來。通過下面參考附圖進行的不同實施例的詳細描述,將使另外的特征和優(yōu)點顯而易見。圖1示出在按照
背景技術:
的視頻編碼器中的運動估計。圖2示出在按照
背景技術:
的視頻編碼器中對8×8的預測剩余部分塊進行基于塊的壓縮。圖3示出在按照
背景技術:
的視頻編碼器中對8×8的預測剩余部分塊進行基于塊的解壓縮。圖4示出按照
背景技術:
的隔行掃描視頻幀。圖5示出WMV9的早期版本中用于當前的幀編碼宏塊的候選運動矢量預測值。圖6和7示出WMV9的早期版本中用于當前的場編碼宏塊的候選運動矢量預測值。圖8是合適的計算環(huán)境的方框圖,可結合該環(huán)境實現幾個所述的實施例。圖9是一般化的視頻編碼器系統(tǒng)的方框圖,可結合該系統(tǒng)實現幾個所述實施例。圖10是一般化的視頻編碼器系統(tǒng)的方框圖,可結合該系統(tǒng)實現幾個所述實施例。圖11是在幾個所述的實施例中使用的宏塊格式的圖。圖12A是隔行掃描視頻幀的部分的圖,示出頂場和底場的交替行。圖12B是為編碼/解碼而組織為幀的隔行掃描視頻幀的圖,而圖12C是為編碼/解碼而組織為場的隔行掃描視頻幀。圖13和14是代碼列表,示出分別用于3個值的中值和4個值的中值計算的偽代碼。圖15和16示出隔行掃描的P場,每個場具有兩個參考場。圖17示出對于當前與參考場極性的不同組合,運動矢量的垂直分量與相應空間位置之間的關系。圖18是流程圖,示出用于為具有兩個可能的參考場的隔行掃描的P場選擇運動矢量預測值。圖19示出用于當前宏塊的由三個候選運動矢量預測值組成的兩個集合。圖20A-20F是代碼列表,示出用于計算二個參考隔行掃描的P場中的運動矢量預測值的偽代碼。圖21A-21B是代碼列表,示出用于定標來自一個場的預測值來導出來自另一個場的預測值。圖22和23是示出與不同參考幀距離相關聯的定標操作值的表。圖24示出在組合的實現中用于隔行掃描的P場的幀層比特流語法。圖25示出在組合的實現中用于隔行掃描的P場的場層比特流語法。圖26示出在組合的實現中用于隔行掃描的P場的宏塊層比特流語法。圖27A和27B是代碼列表,示出例示為一個參考隔行掃描的P場解碼運動矢量差分的偽代碼。圖28A和28B是代碼列表,示出例示為兩個參考隔行掃描的P場解碼運動矢量差分和主導/非主導預測值信息的偽代碼。圖29A和29B示出用于隔行掃描的P場中的1MV宏塊的候選運動矢量預測值的宏塊的位置。圖30A和30B示出用于在混合的1MV/4MV隔行掃描的P場中的1MV宏塊的候選運動矢量預測值的塊的位置。圖31A、31B、32A、32B、33和34示出用于在混合的1MV/4MV隔行掃描的P場中的4MV宏塊中不同位置的塊的候選運動矢量預測值的塊的位置。圖35A-35F是代碼列表,示出在組合的實現中用于計算兩個參考隔行掃描的P場中的運動矢量預測值的偽代碼。圖36是代碼列表,示出用于確定兩個參考隔行掃描的P場中的參考場的偽代碼。具體實施例方式本申請涉及用于隔行掃描的視頻的有效壓縮和解壓縮的技術和工具。在所述的各種實施例中,例如,視頻編碼器和解碼器在編碼和解碼隔行掃描視頻幀中的預測場時結合用于預測運動矢量的技術,以及與包括不同層(layer)或級(level)(例如,序列級,圖象(picture)/圖象(image)級,場級,宏塊級和/或塊級)的比特流格式或語法一起使用的信令技術。例如在數字視頻廣播系統(tǒng)(例如,電纜、衛(wèi)星、DSL等)中,可以使用這些技術和工具。特別地,所述的技術和工具提高了用于隔行掃描視頻幀的正向預測場的塊和/或宏塊的運動矢量預測值的質量,從而允許運動矢量被更有效地編碼。例如,描述用于使用周圍的塊和/或宏塊的相鄰運動矢量為當前場的塊和/或宏塊產生預測值運動矢量的技術,其中相鄰運動矢量共同地參考兩個場中的一個或兩個作為參考。在所述技術和工具中實現的創(chuàng)新包括但不限于下列內容1)為隔行掃描的P場(interlacedP-field)中的塊或宏塊產生兩個運動矢量預測值一個運動矢量預測值用于“偶數”參考場而一個運動矢量預測值用于“奇數”參考場。編碼器/解碼器為當前塊或宏塊考慮達六個運動矢量預測值候選(三個用于偶數運動矢量預測值,三個用于奇數運動矢量預測值)。多達六個運動矢量預測值候選的使用允許進行比現有方法更好的運動矢量預測。2)使用來自由當前運動矢量引用的參考場的運動矢量預測值如果當前運動矢量引用參考幀的相應場中的區(qū)域(指當前場與參考場是相同極性的),則使用來自那個參考場的運動矢量預測值。同樣,如果使用相反極性場作為參考,則使用來自那個參考場的運動矢量預測值。這允許進行比現有方法更好的運動矢量預測值。3)使用定標操作為現有運動矢量候選的相反極性產生運動矢量預測值候選。編碼器/解碼器取用來自候選塊/宏塊位置的運動矢量,其中該運動矢量或者引用奇數場或者引用偶數場。編碼器/解碼器隨后定標運動矢量來導出其它極性的運動矢量預測值候選。例如,如果一個毗鄰宏塊的實際運動矢量引用奇數場,則使用那個值作為來自毗鄰宏塊的奇數運動矢量預測值候選,并使用經定標的運動矢量值(從實際值導出的)作為來自毗鄰宏塊的偶數運動矢量預測值候選。盡管運動矢量預測值候選只是從三個塊/宏塊位置(具有三個運動矢量值)獲得的,但編碼器/解碼器的不同極性運動矢量預測值候選的推導給出總數六個候選以供從中選擇。4)在導出運動矢量預測值候選時使用取決于參考幀距離的定標操作。編碼器/解碼器使用當前場與兩個參考場之間的相對時間距離來執(zhí)行定標操作,定標操作從來自另一個場的現有運動矢量候選為缺少的極性導出預測值候選。考慮相對瞬時距離以執(zhí)行定標的編碼器/解碼器,可以產生比假定不變的參考距離的編碼器/解碼器更準確的預測值。對于在此所述的實現的各種可替換方案是可能的。例如,參考流程圖描述的技術可以通過改變流程圖中所示階段的順序、通過重復或省略某些階段等來改變。作為另一個例子,盡管某些實現是參考特定的宏塊和/或塊格式來描述的,但也可以使用其它格式。而且,參考隔行掃描的P場類型預測描述的技術和工具也可應用于其它類型的預測??梢越M合地或獨立地使用各種技術和工具。不同的實施例實現所述技術和工具中的一個或多個。在視頻編碼器或解碼器中,或者在不是明確地受限于視頻編碼或解碼的某些其它系統(tǒng)中,可以使用在此描述的技術和工具。I.計算環(huán)境圖8例示合適的計算環(huán)境800的一般化例子,在該環(huán)境中可實現幾個所述的實施例。計算環(huán)境800不是想要建議對使用范圍或功能的任何限制,而是可在各種各樣的通用或專用計算環(huán)境中實現這些技術和工具。參考圖8,計算環(huán)境800包括至少一個處理單元810和存儲器820。在圖8中,這個最基本的配置830包括在虛線中。處理單元810執(zhí)行計算機可執(zhí)行指令,并可以是真實的或虛擬的處理器。在多處理器系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以增加處理能力。存儲器820可以是易失性存儲器(例如,寄存器、高速緩存、RAM),非易失性存儲器(例如,ROM、EEPROM、閃存等),或者兩者的組合。存儲器820存儲實現具有隔行掃描的P場的二個參考場運動矢量預測值的視頻編碼器或解碼器的軟件880。計算環(huán)境可具有另外的特征。例如,計算環(huán)境800包括存儲器840,一個或多個輸入設備850,一個或多個輸出設備860,以及一個或多個通信連接870?;ミB機制(未示出)諸如總線、控制器或網絡將計算環(huán)境800的組件互相連接。一般地,操作系統(tǒng)軟件(未示出)為在計算環(huán)境800中執(zhí)行的其它軟件提供操作環(huán)境,并協(xié)調計算環(huán)境800的組件的活動。存儲器840可以是可移動的或不可移動的,并包括磁盤、磁帶或盒、CD-ROM、DVD或任何可用于存儲信息并在計算環(huán)境800內可以訪問的其它介質。存儲器840存儲用于實現視頻編碼器或解碼器的軟件880的指令。輸入設備850可以是接觸式輸入設備諸如鍵盤、鼠標、筆或軌跡球,語音輸入設備,掃描設備或給計算環(huán)境800提供輸入的其它設備。對于音頻或視頻編碼,輸入設備850可以是聲卡,視頻卡,TV調諧卡,或以模擬或數字形式接收音頻或視頻輸入的相似設備,或將音頻或視頻樣本讀入計算環(huán)境800的CD-ROM或CD-RW。輸出設備860可以是顯示器,打印機,揚聲器,CD-寫入器,或從計算環(huán)境800提供輸出的其它設備。通信連接870允許在通信介質上與另外的計算實體通信。通信介質傳送信息,諸如計算機可執(zhí)行指令、音頻或視頻輸入或輸入,或在經調制的數據信號中的其它數據。經調制的數據信號是一種信號,具有以將信息編碼在該信號的這樣一種方式設置或改變的其一個或多個特性。作為例子,而非限制,通信介質包括以電子、光、紅外線、RF、聲音或其它載波實現的有線或無線技術??梢栽谟嬎銠C可讀介質的一般環(huán)境中描述本技術和工具。計算機可讀介質是可以在計算環(huán)境內訪問的任何可用介質。作為例子,而非限制性地,就計算環(huán)境800而言,計算機可讀介質包括存儲器820、存儲裝置840、通信介質和上述的任何組合??梢栽谟嬎銠C可執(zhí)行指令的一般環(huán)境中描述本技術和工具,諸如包括在計算環(huán)境中在目標真實的(targetreal)或虛擬(virtual)的處理器上執(zhí)行的程序模塊中的計算機可執(zhí)行指令。通常,程序模塊包括例程、程序、庫、對象、類、組件、數據結構等,它們執(zhí)行特定的任務或實現特定的抽象數據類型。在各種實施例中按需要,可在程序模塊之間組合或分開程序模塊的功能。用于程序模塊的計算機可執(zhí)行指令可在本地或分布式計算環(huán)境內執(zhí)行。為了表達,詳細描述使用象“估計(estimate)”、“補償(compensate)”、“預測(predict)”和“應用(apply)”這樣的術語來描述計算環(huán)境中的計算機操作。這些術語是對由計算機執(zhí)行的操作的高級抽象,且不應該與由人執(zhí)行的動作混淆。相應于這些術語的實際計算機操作取決于實現而變化。II.一般化的視頻編碼器和解碼器圖9是一般化的視頻編碼器900的方框圖,可結合它實現所述的實施例。圖10是一般化的視頻解碼器1000的方框圖,可結合它實現所述的實施例。在編碼器900與解碼器1000內的模塊之間所示的關系表示在編碼器和解碼器中的一般信息流;為了簡單,未示出其它關系。特別地,圖9和10通常不示出表示用于視頻序列、圖象、宏塊、塊等的編碼器設置、模式、表等的邊信息(sideinformation)。這樣的邊信息是在輸出比特流中發(fā)送的,一般在熵編碼邊信息之后。輸出比特流的格式可以是WindowsMediaVideo版本9格式或其它格式。編碼器900和解碼器1000處理視頻圖象,視頻圖象可以是視頻幀、視頻場或幀和場的組合。在圖象或宏塊級的比特流語法和語義可取決于使用幀還是使用場??梢愿淖兒陦K組織和整個時序。編碼器900和解碼器1000是基于塊的,并使用4:2:0宏塊格式用于幀,其中每個宏塊包括四個8×8亮度塊(有時視為一個16×16宏塊)和兩個8×8色度塊。對于場,可使用相同或不同的宏塊組織和格式??稍诓煌A段進一步子劃分8×8塊,例如在頻率變換和熵編碼階段。在下面更詳細地描述示例視頻幀組織??晒┨鎿Q地,編碼器900和解碼器1000是基于對象的,使用不同的宏塊或塊格式,或者對不同于8×8塊和16×16宏塊的大小或配置的像素執(zhí)行操作。取決于實現和所希望的壓縮類型,可增加、省略編碼器或解碼器的模塊,將它們劃分成多個模塊,與其它模塊組合起來,和/或用相似的模塊代替它們。在可替換的實施例中,具有不同模塊和/或模塊的其它配置的編碼器或解碼器執(zhí)行一個或多個所述技術。A.視頻幀組織在某些實現中,編碼器900和解碼器1000處理按如下組織的視頻幀。幀包含視頻信號的空間信息的行。對于逐行掃描的視頻,這些行包含從一個時刻開始并繼續(xù)通過至幀的底部的連續(xù)行的樣本。逐行掃描的視頻幀被劃分成宏塊,諸如圖11中所示的宏塊1100。宏塊1100包括四個8×8亮度塊(Y1至Y4)和兩個8×8色度塊,后者與四個亮度塊位置在一起,但在水平與垂直方向只有一半分辨率,按照常規(guī)的4:2:0的宏塊格式??稍诓煌A段進一步細分8×8塊,例如,在頻率變換和熵編碼階段。逐行I幀是幀內編碼的逐行掃描視頻幀。逐行掃描的P幀是使用前向預測編碼的逐行掃描視頻幀,而逐行掃描的B幀是使用雙向預測編碼的逐行掃描視頻幀。逐行掃描的P和B幀可包括幀內編碼的宏塊和不同類型的預測宏塊。對于隔行掃描的視頻,幀由兩個場即頂場和底場組成。這些場之一比另一個晚開始一個場周期。圖12a示出隔行掃描的視頻幀1200的部分,在隔行掃描的視頻幀1200的左上部分包括頂場和底場的交替行。圖12b示出為編碼/解碼而組織為幀1230的圖12a的隔行掃描視頻幀1200。隔行掃描視頻幀1200已被劃分成宏塊,諸如宏塊1231和1232,它們使用如在圖11中所示的4:2:0格式。在亮度平面中,每個宏塊1231、1232包括來自頂場的8行,與來自底場的8交替總數16行,且每一行16像素長。(沒有示出宏塊1231、1232內亮度塊和色度塊的實際組織和布置,且實際上對于不同的編碼選擇可以變化)。在給定的宏塊內,可共同地或者獨立地以任何各種各樣的相位編碼頂場信息和底場信息。隔行掃描的I幀是隔行掃描視頻幀的兩個幀內編碼的場,其中宏塊包括兩個場的信息。隔行掃描的P幀是使用正向預測編碼的隔行掃描視頻幀的兩個場,而隔行掃描的B幀是使用雙向預測編碼的隔行掃描視頻幀的兩個場,其中宏塊包括兩個場的信息。隔行掃描的P和B幀可包括幀內編碼的宏塊和不同類型的預測宏塊。圖12c示出為編碼/解碼而組織為場1260的圖12a的隔行掃描視頻幀1200。隔行掃描視頻幀1200的兩個場的每一個被劃分成宏塊。頂場被劃分成宏塊,諸如宏塊1261,而底場被劃分成宏塊,諸如宏塊1262。(再一次,宏塊使用如在圖11中所示的4:2:0格式,但未示出宏塊內亮度塊和色度塊的組織和布置)。在亮度平面中,宏塊1261包括來自頂場的16行,而宏塊1262包括來自底場的16行,每一行16像素長。隔行掃描的I場是隔行掃描視頻幀的單一、獨立表示的場。隔行掃描的P幀是使用正向預測編碼的隔行掃描視頻幀的單一、獨立表示的場,而隔行掃描的B場是使用雙向預測編碼的隔行掃描視頻幀的單一、獨立表示的場。隔行掃描的P和B場可包括幀內編碼的宏塊和不同類型的預測宏塊。術語圖片(picture)指源、編碼的或重新構造的圖象(image)數據。對于逐行掃描視頻,圖片是逐行掃描視頻幀。對于隔行掃描的視頻,圖片可以指隔行掃描的視頻幀,幀的頂場,或幀的底場,取決于上下文。B.視頻編碼器圖9是一般化的視頻編碼器系統(tǒng)900的方框圖。編碼器系統(tǒng)900接收包括當前圖片905在內的視頻圖片序列,并產生壓縮的視頻信息995作為輸出。視頻編碼器的特定實施例一般使用一般化編碼器900的變體或補充版本。編碼器系統(tǒng)900壓縮預測圖片和關鍵圖片(keypicture)。為了表示,圖9示出關鍵圖片通過編碼器系統(tǒng)900的路徑和預測圖片的路徑。編碼器系統(tǒng)900的許多組件用于壓縮關鍵圖片和預測圖片兩者。由那些組件執(zhí)行的準確操作可以根據正在壓縮的信息類型變化。預測圖片(也稱為p圖片,對于雙向預測稱為b-圖片,或幀間編碼的圖片)是按照來自一個或多個其它圖片(一般稱為參考圖片或錨(anchor))的預測值(或差)來表示的。預測剩余部分(predictionresidual)是所預測的與原來的圖片之間的差。相反,在不參考其它圖片的情況下壓縮關鍵圖片(也稱為I圖片,幀間編碼的圖片)。如果當前圖片905是正向預測的圖片,則運動估計器(motionestimator)910根據一個或多個參考圖片來估計宏塊或當前圖片905的像素的其它集合的運動,參考圖片是在圖片存儲器(picturestore)920、922中緩沖的重新構造的先前的圖片。如果當前圖片905是雙向預測的圖片(B圖片),則運動估計器910根據兩個或多個重新構造的參考圖片來估計當前圖片905中的運動。一般地,運動估計器根據至少一個在時間上在前的參考圖片和至少一個在時間上在后的參考圖片來估計B圖片中的運動。因此,編碼器系統(tǒng)900可以使用獨立的存儲器920和922用于后向和正向參考圖片。關于雙向預測圖片的更多信息,見2003年七月18日提交的美國專利申請序列號10/622,378,標題為“AdvancedBi-DirectionalPredictiveCodingofVideoFrames(視頻幀的高級雙向預測編碼)”。運動估計器910可以按像素、像素、像素或者其它增量來估計運動,并可以在一個接一個圖片基礎或其它基礎上切換運動估計的分辨率。運動估計的分辨率可以水平地和垂直地相同或不同。運動估計器910作為邊信息輸出運動信息915,諸如差分運動矢量信息。編碼器900通過例如為運動矢量計算一個或多個預測值,計算運動矢量與預測值的差分并熵編碼差分來編碼運動信息。為了重新構造運動矢量,運動補償器930將預測值與差分運動矢量信息組合起來。下面描述用于計算運動矢量預測值、計算差分運動矢量和為隔行掃描的P場重新構造運動矢量的各種技術。運動補償器930將重新構造的運動矢量應用于重新構造的圖片925,以形成經運動補償的當前圖片935。但是預測很少是完美的,而經運動補償的當前圖片935與原來的當前圖片905之間的差是預測剩余部分945??晒┨鎿Q地,運動估計器和運動補償器應用另外類型的運動估計/補償。頻率變換器960將空間域視頻信息轉換成頻域(即光譜)數據。對于基于塊的視頻圖片,頻率變換器960將離散余弦變換[“DCT”],DCT的變體,或者其它塊變換應用于像素數據或預測剩余部分數據塊,產生頻率變換系數塊??晒┨鎿Q地,頻率變換器960應用另一種常規(guī)頻率變換諸如傅立葉變換或使用小波或子帶分析。頻率變換器960可應用8×8、8×4、4×8、4×4或其它尺寸的頻率變換。量化器970隨后量化光譜數據系數塊。量化器以在一個接一個圖片基礎或其它基礎上變化的步長,對光譜數據應用均勻的標量量化??晒┨鎿Q地,量化器對光譜數據系數應用另一種類型的量化,例如非均勻的、矢量的或非自適應的量化,或者在不使用頻率變換的編碼器系統(tǒng)中直接量化空間域數據。除自適應量化之外,編碼器900可以使用幀丟棄(framedropping)、自適應濾波或其它技術用于速率控制。如果在預測圖片中給定的宏塊沒有某些類型的信息(例如,沒有用于宏塊的運動信息和沒有剩余部分信息),則編碼器900可將宏塊編碼為跳過的宏塊(skippedmacroblock)。如果有,則編碼器在壓縮的視頻信息995的輸出比特流中用信號表示跳過的宏塊。當需要重新構造的當前圖片用于后續(xù)的運動估計/補償時,逆量化器976對量化的光譜數據系數執(zhí)行逆量化。逆頻率變換器966隨后執(zhí)行頻率變換器960的逆操作,產生(為預測圖片)重新構造的預測剩余部分或重新構造的關鍵圖片。如果當前圖片905是關鍵圖片,則取重新構造的關鍵圖片作為重新構造的當前圖片(未示出)。如果當前圖片905是預測圖片,則將重新構造的預測剩余部分加到經運動補償的當前圖片935上,以形成重新構造的當前圖片。圖片存儲器920、922之一緩沖在預測下一個圖片時使用的重新構造的當前圖片。在某些實施例中,編碼器將解塊(de-blocking)的濾波器應用于重新構造的圖片以自適應地平滑圖片中的不連續(xù)。熵編碼器980壓縮量化器970的輸出和某個邊信息(例如,對于運動信息915,量化步長)。典型的熵編碼技術包括算術編碼(arithmeticcoding),差分編碼(differentialcoding),霍夫曼編碼(Huffmancoding),行程長度編碼(runlengthcoding),LZ編碼(LZcoding),詞典編碼(dictionarycoding),和上述的組合。熵編碼器980一般使用不同編碼技術用于不同種類的信息(例如,DC系數,AC系數,不同種類的邊信息),并可以從特定編碼技術內多個編碼表中選擇。熵編碼器980提供壓縮視頻信息995給多路復用器[“MUX”]990。MUX990可包括緩沖器,并可將緩沖器級指示器(bufferlevelindicator)反饋回比特率自適應模塊用于速率控制。在MUX990之前或之后,可以為在網絡上傳輸,信道編碼壓縮的視頻信息995。信道編碼(channelcoding)可以將差錯檢測和校正數據應用于壓縮的視頻信息995。C.視頻解碼器圖10是一般的視頻解碼器系統(tǒng)1000的方框圖。解碼器系統(tǒng)1000接收用于視頻預測值的壓縮序列的信息1095,并產生包括重新構造的圖片1005的輸出。視頻解碼器的特定實施例一般使用通用的解碼器1000的變體或補充版本。解碼器系統(tǒng)1000解壓縮預測圖片和關鍵圖片。為了表示,圖10示出關鍵圖片通過解碼器系統(tǒng)1000的路徑和正向預測圖片的路徑。解碼器系統(tǒng)1000的許多組件用于解壓縮關鍵圖片和預測圖片兩者。由那些組件執(zhí)行的準確操作可以根據正在解壓縮的信息的類型變化。DEMUX1090接收用于壓縮的視頻序列的信息1095并使接收的信息可用于熵解碼器1080。DEMUX1090可包括抖動緩沖器(jitterbuffer)和其它緩沖器。在DEMUX1090之前或之后,壓縮的視頻信息可以被信道解碼并為差錯檢測和校正對其處理。熵解碼器1080熵解碼經熵編碼的量化的數據和經熵編碼的邊信息(例如,對于運動信息1015,量化步長),一般應用編碼器中所執(zhí)行的熵編碼的逆操作。熵解碼技術包括算術解碼(arithmeticdecoding),差分解碼(differentialdecoding),霍夫曼編碼(Huffmandecoding),行程長度解碼(runlengthdecoding),LZ解碼(LZdecoding),詞典解碼(dictionarydecoding),以及上述的組合。熵解碼器1080一般為不同種類的信息使用不同的解碼技術(例如,DC系數,AC系數,不同種類的邊信息),并可以從特定編碼技術內的多個編碼表中選擇。解碼器1000解碼運動信息1015,例如通過為運動矢量計算一個或多個預測值,熵解碼差分運動矢量,以及將經解碼的差分運動矢量與預測值組合起來重新構造運動矢量。下面描述用于為隔行掃描的P幀計算運動矢量預測值、計算差分運動矢量和重新構造運動矢量的各種技術。運動補償器1030將運動信息1015應用于一個或多個參考圖片1025以形成正在重新構造的圖片1005的預測1035。例如,運動補償器1030使用一個或多個宏塊運動矢量來查找參考圖片1025中的宏塊。一個或多個圖片存儲器(例如,圖片存儲器1020、1022)存儲先前重新構造的圖片用作參考圖片。一般地,B圖片具有多于一個參考圖片(例如,至少一個在時間上在先的參考圖片和至少一個在時間上在后的參考圖片)。因此,解碼器系統(tǒng)1000可以使用分開的圖片存儲器1020和1022用于后向和前向參考圖片。運動補償器1030可以以像素、像素、像素或其它增量來補償運動,并可以在一個接一個圖片基礎或其它基礎上切換運動補償的分辨率。運動補償的分辨率可以在水平或垂直上相同或不同??晒┨鎿Q地,運動補償器應用另一種類型的運動補償。通過運動補償器的預測很少是完美的,因此解碼器1000還重新構造預測剩余部分。逆量化器1070逆量化經熵解碼的數據。一般而言,逆量化器以在一個接一個圖片基礎或其它基礎上變化的步長,對經熵解碼的數據應用均勻的、標量的逆量化??晒┨鎿Q地,逆量化器對數據應用其它類型的逆量化,例如,非均勻的、矢量的或非自適應的量化,或者在不使用逆頻率變換的解碼器系統(tǒng)中直接逆量化空間域數據。逆頻率變換器1060將量化的、頻域數據轉換成空間域視頻信息。對于基于塊的視頻圖片,逆頻率變換器1060對頻率變換系數的塊應用逆DCT[“IDCT”]、IDCT的變體或其它逆塊變換,分別為關鍵圖片或預測圖片產生像素數據或預測剩余部分數據??晒┨鎿Q地,逆頻率變換器1060應用另外的常規(guī)逆頻率變換諸如逆傅立葉變換或使用小波或子帶綜合。逆頻率變換器1060可應用8×8、8×4、4×8、4×4或其它大小的逆頻率變換。對于預測圖片,解碼器1000將重新構造的預測剩余部分1045與運動補償預測1035結合起來以形成重新構造的圖片1005。當解碼器需要重新構造的圖片1005用于隨后的運動補償,圖片存儲器之一(例如圖片存儲器1020)緩沖重新構造的1005以在預測下一個圖片時使用。在某些實施例中,解碼器1000對重新構造的圖片應用解塊濾波器(de-blockingfilter)以自適應地平滑圖片中的不連續(xù)。III.運動矢量預測值可以使用用于宏塊(或塊)的運動矢量來預測那些宏塊(或塊)的因果關系的近鄰中的運動矢量。例如,編碼器/解碼器可以從用于相鄰的候選宏塊的運動矢量之中為當前宏塊選擇運動矢量預測值,并預測地使用該運動矢量預測值為當前宏塊編碼運動矢量。編碼器/解碼器可以使用三個值的中值(median-of-three)預測,四個值的中值(median-of-four)預測,或某種其它技術來從來自相鄰宏塊的候選運動矢量之中為當前宏塊確定運動矢量預測值。在圖13的偽代碼1300中描述用于三個值的中值預測的過程。在圖14的偽代碼1400中描述用于四個值的中值預測的過程。IV.用于隔行掃描圖片的場編碼典型的隔行掃描視頻幀由在不同時間掃描的兩個場(例如,頂場和底場)組成。一般而言,通過將場編碼在一起(“幀模式”編碼)來編碼隔行掃描視頻幀的靜止區(qū)域更有效。另一方面,通過獨立地編碼場(“場模式”編碼)來編碼隔行掃描視頻幀的移動區(qū)域常常更有效,因為兩個場傾向于不同的運動。正向預測的隔行掃描視頻幀可被編碼為兩個獨立的正向預測場一隔行掃描的P場。獨立地為正向預測隔行掃描視頻幀編碼場可能是有效的,例如,當遍及隔行掃描的視頻幀有高度運動,并因此在場之間有更多的差異。A.用于隔行掃描的P場的參考場隔行掃描的P場引用一個或多個其它場(一般為先前的場,可以編碼在比特流中或者可以不編碼在比特流中)。例如,在某些實現中,隔行掃描的P場可具有一個或兩個參考場。如果隔行掃描的P場具有兩個參考場,則用于P場的塊或宏塊的特定運動矢量參考這兩個參考幀中所選擇的一個。圖15和16示出具有兩個參考場的隔行掃描的P場的例子。在圖15中,當前場1510參考在時間上在前的幀中的頂場1520和底場1530。由于場1540和1550是隔行掃描的B場,它們不用作為參考場。在圖16中,當前場1610參考緊接在包含當前場1610的隔行掃描視頻幀之前的預測幀中的頂場1620和底場1630。在其它情況下,隔行掃描的P場引用單個場,例如,最近的或次最近的I場或P場??晒┨鎿Q地,隔行掃描的P場可使用來自從不同類型或時間位置的幀得到的其它場的場作為參考場。B.場圖片坐標系統(tǒng)和場極性運動矢量單位可以用像素/子-像素(sub-pixel)單位或場單位來表示。例如,如果運動矢量的垂直分量表示六個四分之一像素單位的位移,這表示一又二分之一場行的位移,因為在場中每行一個像素高。圖17示出在一個實現中運動矢量的垂直分量與空間位置之間的關系。在圖17中所示的例子示出三個不同情景1710、1720和1730,用于當前和參考場類型(例如頂和底)的三種不同組合。如果當前和參考場的場類型不同,則極性“相反”。如果場類型相同,則極性“相同”。對于每一種情景,圖17示出當前場中的像素的一個垂直列和參考場中的像素的第二垂直列。實際上,這兩個列是水平對齊的。圓圈表示實際的整數像素位置而X表示內插的二分之一或四分之一像素位置。水平分量值(未示出)不需要考慮因隔行掃描引起的任何偏移,因為相應的場是水平對齊的。負值表示進一步向上偏移,且在相反的方向中,如所示的正值垂直偏移。在情景1710中,極性“相反”。當前場是頂場而參考場是底場。相對于當前場,參考場的位置因隔行掃描在向下方向中偏移二分之一像素。因而,垂直運動矢量分量值0表示參考場中的位置,它在當前場中的位置之下偏移二分之一像素,作為默認的“無運動”值。垂直分量值+2表示在當前場中位置之下偏移整個像素(以絕對值)的位置,它是參考場中的內插值,而垂直分量+4表示在當前場中位置之下偏移一又二分之一像素(以絕對值)的位置,它是參考場中的實際值。在情景1720中,極性也“相反”。當前場是底場而參考場是頂場。相對于當前場,參考場的位置因隔行掃描在向上方向中偏移二分之一像素。因而,垂直運動矢量分量0表示參考場中高于當前場中位置二分之一像素的位置(以絕對值),垂直分量值+2表示與當前場中位置相同水平(以絕對值)的位置,而垂直分量+4表示在當前場中位置之下偏移二分之一像素的位置(以絕對值)。在情景1730中,極性“相同”,沒有應用垂直偏移,因為當前場的位置與相對于參考場的位置相同??晒┨鎿Q地,按照不同的慣例表示運動矢量的位移。V.在用于預測編碼/解碼隔行掃描的P場的運動矢量預測方面的創(chuàng)新所述實施例包括用于編碼和解碼隔行掃描的視頻(例如隔行掃描的P場)的技術和工具。所述技術和工具可以彼此結合或者結合其它技術和工具使用,或者可以獨立地使用。特別地,所述技術和工具規(guī)定例如為隔行掃描的P場的塊和/或宏塊產生運動矢量預測值的方法,其中隔行掃描的P場使用兩個場作為參考用于運動補償預測編碼。所述技術和工具實現一個或多個創(chuàng)新,包括但不限于下列內容1.產生兩個運動矢量預測值-一個用于偶數場參考,一個用于奇數場參考。每個預測值是從三個先前編碼的、候選的相鄰運動矢量導出的。2.使用來自相同參考場的運動矢量預測值作為當前運動矢量(都參考相同的參考場)。3.定標一個場的實際運動矢量預測值候選值,為其它場產生運動矢量預測值候選用于運動矢量預測。4.使用定標操作(它使用當前場與兩個參考場之間的相對時間距離),由另一種極性的現有運動矢量預測值候選,為一種參考極性導出運動矢量預測值候選。在隔行掃描的視頻中,可不使用運動預測(幀內或I場)、使用前向運行預測(P場)或使用雙向預測(B場)來編碼場。所述技術和工具包括為隔行掃描的P場的部分計算運動矢量預測值,尤其在可以參考兩個最近的(以顯示順序)I或P場中任何一個時發(fā)生運動補償的情況下。假定兩個參考場是相反極性的,即指一個參考場表示隔行掃描視頻幀的奇數行,而另一個參考場表示相同或不同的隔行掃描視頻幀的偶數行。這是在圖24中表示的信令協(xié)議的情況,它示出用于隔行掃描的圖片的場圖片類型的語法元素(FPTYPE)?;蛘?,例如,再次參考圖15,當前場1510參考頂場1520和底場1530,它們分別表示視頻幀的奇數和偶數行。A.在兩個參考場圖片中的運動矢量預測用兩個參考場P-場,當前場可以在相同的時間方向上引用兩個場(例如兩個最近的在前參考場)。在兩個參考場隔行掃描的P場的情況下,編碼器和解碼器為塊或宏塊的運動矢量在兩個運動矢量預測值之間選擇。在某些實施例中,一個預測值用于與當前場相同極性的參考場,而另一個用于相反極性的參考場。其它極性組合也有可能。在某些實施例中,編碼器/解碼器通過查找奇數場預測值和偶數場為當前塊或宏塊計算運動矢量預測值,并選擇一個預測值來處理宏塊。例如,圖18示出一種技術1800,用于為具有兩個可能的參考場的隔行掃描的P場的塊或宏塊計算運動矢量預測值。在1810,編碼器/解碼器確定奇數場運動矢量預測值和偶數場運動矢量預測值。運動矢量預測值之一因而具有與當前場相同的極性,而另一個運動矢量預測值具有相反極性。在1820,編碼器/解碼器從奇數場運動矢量預測值與偶數場運動矢量預測值之中選擇運動矢量預測值。例如,編碼器在運動矢量預測值之間基于哪一個給出更好的預測的運動矢量預測值來選擇。或者,編碼器選擇參考相同參考場的運動矢量預測值作為當前正在預測的運動矢量。編碼器使用簡單的選擇信號或使用更復雜的結合上下文信息(contextualinformation)以提高編碼效率的信令,用信號表示要使用哪一個運動矢量預測值。上下文信息可表示奇數場或偶數場中的哪一個、或者相同極性場或相反極性場中的哪一個是在塊或宏塊周圍的近鄰中主要使用的。解碼器基于選擇信號和/或上下文信息來選擇要使用哪一個運動矢量預測值。在1830,編碼器/解碼器使用所選擇的運動矢量預測值來處理運動矢量。例如,編碼器編碼運動矢量與運動矢量預測值之間的差分。或者,解碼器通過將運動矢量差分與運動矢量預測值結合起來解碼運動矢量??晒┨鎿Q地,編碼器和/或解碼器可跳過確定奇數場運動矢量預測值或確定偶數場運動矢量預測值。例如,如果編碼器確定將為用于特定塊或宏塊的運動補償使用奇數場,則編碼器只確定奇數場運動矢量預測值?;蛘?,如果解碼器根據上下文和/或用信號表示的信息確定將為運動補償使用奇數場,則解碼器只確定奇數場運動矢量預測值。因此,編碼器和解碼器可避免不必要的操作。在一個實現中,解碼器使用下列技術來為當前隔行掃描的P場確定運動矢量預測值對于隔行掃描的P場中每一個具有運動矢量的塊或宏塊,獲得兩組三個候選的運動矢量預測值。在圖19中示出相對于當前宏塊1900的相鄰宏塊,從它們獲得這些候選的運動矢量預測值。這些候選中的三個來自于偶數參考場,三個來自于奇數參考場。由于在每個候選方向(A、B或C)中相鄰宏塊將或者是幀內編碼的或者具有實際的運動矢量(它或者引用偶數場或者引用奇數場),因此有必要導出其它場的運動矢量。例如,對于給定的宏塊,假定預測值A具有引用奇數場的運動矢量。在這種情況下,“偶數場”預測值候選A是從“奇數場”預測值候選A的運動矢量導出的。這個推導是使用定標操作來完成的。(例如,見下面圖21A和21B的說明)??晒┨鎿Q地,推導是以另一種方式完成的。一旦已獲得三個奇數場候選運動矢量預測值,就使用中值操作(medianoperation)來從三個奇數場候選中導出一個奇數場運動矢量預測值。同樣,一旦已獲得三個偶數場候選運動矢量預測值,就使用中值操作從三個偶數場候選中導出一個偶數場運動矢量預測值??晒┨鎿Q地,使用另一種機制基于候選場運動矢量預測值來選擇場運動矢量預測值。解碼器決定使用偶數場還是使用奇數場作為運動矢量預測值(例如,通過選擇主導預測值),并使用偶數或奇數運動矢量預測值來重新構造運動矢量。在圖20A-20F中的偽代碼2000例示用于從如在圖19中安排的預測值A、B、C產生運動矢量預測值的過程。盡管圖19示出在當前隔行掃描的P場的中間的一個典型宏塊的近鄰,但圖20A-20F的偽代碼2000處理宏塊位置的各種特殊情況。此外,可使用偽代碼2000為在各種位置的塊的運動矢量計算運動矢量預測值。在偽代碼2000中,應該理解,術語“相同場”和“相反場”是相對于當前正在編碼或解碼的場而言的。例如,如果當前場是偶數場,則“相同場”是偶數參考場,而“相反場”是奇數參考場。偽代碼2000中的變量samefieldpred_x和samefieldpred_y表示來自相同場的運動矢量預測值的水平和垂直分量,而變量oppositefieldpred_x和oppositefieldpred_y表示來自相反場的運動矢量預測值的水平和垂直分量。變量samecount和oppositecount分別跟蹤有多少用于當前塊或宏塊的近鄰的運動矢量引用對于當前場的“相同”的極性參考場和有多少引用“相反”極性參考場。在偽代碼的開始處將變量samecount和oppositecount初始化為0。使用在偽代碼2000中提到的定標操作scaleforsame()和scaleforopposite()從近鄰的實際運動矢量值為“其它”場導出運動矢量預測值候選。定標操作是由實現決定的。下面參考圖21A、21B、22和23描述示例定標操作。可供替換地,例如,使用其它定標操作來補償諸如在圖17中所示的垂直位移。圖20A和20B示出用于為典型的內部塊或宏塊計算運動矢量預測值。將用于“幀內”近鄰的運動矢量設置為0。對于每一近鄰,設置相同場運動矢量預測值和相反場運動矢量預測值,其中一個是由近鄰的運動矢量的實際值設置的,而另一個是從它導出的。為相同場運動矢量預測值和相反場運動矢量預測值計算候選的中值,并根據samecount和oppositecount確定“主導(dominant)”預測值。變量dominatepredictor表示哪一個場包含主導運動矢量預測值。如果運動矢量預測值具有與三個候選預測值中大多數相同的極性,則它是主導的。(用信號表示的值predictor_flag,連同運動矢量差分數據一起被解碼,表示使用主導還是非主導預測值)。在圖20C中的偽代碼處理每行只有一個宏塊的隔行掃描的P場中的宏塊的情況,其中的宏塊沒有近鄰B和C。在圖20D和20E中的偽代碼處理在隔行掃描的P場左邊緣的塊或宏塊的情況,其中的塊或宏塊沒有近鄰C。這里,如果運動矢量預測值具有與多于兩個候選預測值的相同極性,則它是主導的,而在平分(tie)的情況下,奇數場運動矢量預測值是主導的。最后,在圖20F中的偽代碼處理例如隔行掃描的P場的首行中的宏塊的情況。B.用于從另一個場運動矢量預測值導出一個場運動矢量預測值的定標在一個實施例中,編碼器/解碼器使用在圖21A和21B的偽代碼中例示的定標操作從另一個場運動矢量預測值導出一個場運動矢量預測值。SCALEOPP、SCALESAME1、SCALESAME2、SCALEZONE1_X、SCALEZONE2_Y、ZONE1OFFSET_X和ZONE1OFFSET_Y的值是由實現決定的。圖22的表2200中和圖23的表2300中所示的兩個可能的值集合,前者用于當前場是隔行掃描的視頻幀中的第一個場,而后者用于當前場是隔行掃描視頻幀中的第二個場。在表2200和2300中,參考幀距離是作為當前場與包含在時間上最遠的參考場之間的B圖片(即包括兩個B場的視頻幀)的數量來定義的。在表2200與表2300中所示的例子中,N的值取決于運動矢量范圍。例如,擴展的運動矢量范圍可以通過語法元素EXTENDED_MV=1來用信號表示。如果EXTENDED_MV=1,則MVRANGE語法元素存在于圖片首部中并用信號表示運動矢量范圍。如果EXTENDED_MV=0,則使用默認的運動矢量范圍。表1示出N與MVRANGE之間的關系。表1在圖22和23中N的推導在表2200和2300中的值可以根據實現來修改??晒┨鎿Q地,不使用擴展的運動矢量范圍信息,或者以某種其它方法來執(zhí)行定標。VI.組合的實現現在描述用于比特流語法和解碼器的詳細的組合實現,之外還描述具有與主組合實現微小差別的可替換組合實現。A.比特流語法在各種組合實現中,以具有多個層(layer)(例如,序列、幀、場、宏塊、塊和/或子塊層)的比特流的形式提供用于隔行掃描的P場的數據。用于包括隔行掃描的P場的每一幀的數據由幀首部和跟隨其后的用于場層的數據組成。在圖24中示出構成用于包括隔行掃描的P場的幀的幀首部的比特流元素。在圖25中示出構成用于隔行掃描的P場的場首部的比特流元素。在圖26中示出構成用于隔行掃描的P場的宏塊層的比特流元素。下面的章節(jié)描述在涉及用信號表示隔行掃描的P場的塊或宏塊的運動矢量預測值的幀、場和宏塊層中所選擇的比特流元素。I.選擇的幀層元素圖24示出在組合實現中用于包括隔行掃描的P場的幀的幀級(frame-level)比特流語法。下面描述具體的比特流元素。幀編碼模式(FrameCodingMode)(FCM)(可變大小)FCM是可變長度代碼字(variablelengthcodeword)[“VLC”],用于表示圖片片碼類型。FCM取下面在圖2中所示的用于幀編碼模式的值表2幀編碼模式VLC場圖片類型(FieldPictureType)(FPTYPE)(3位)FPTYPE是在用于包括隔行掃描的P場的幀的幀首部中存在的三比特語法元素。FPTYPE取按照下面表3用于不同組合的場類型的值。表3場圖片類型FLCP參考距離(PReferenceDistance)(REFDIST)(可變大小)REFDIST是可變大小的語法元素。這個元素表示當前幀與參考幀之間的幀數量。表4示出用于編碼REFDIST值的VLC。表4REFDISTVLC表表4中最后一行表示用于表示比2大的參考幀距離的代碼字。它們被編碼為(二進制)11,跟隨著N-3個1,其中N是參考幀距離。代碼字中的最后位是0。例如N=3,VLC代碼字=110,VLC大小=3N=4,VLC代碼字=1110,VLC大?。?N=5,VLC代碼字=11110,VLC大?。?在可替換的組合實現中,在用于隔行掃描的P場的場層的開始處代替在用于包括隔行掃描的P場的幀的幀層處用信號表示圖片類型信息,并省略P參考距離。2.選擇的場層元素圖25示出在組合實現中用于隔行掃描的P場的場級(field-level)比特流語法。下面描述具體的比特流元素。參考圖片的數量(NumberofReferencePictures)(NUMREF)(1比特)NUMREF語法元素是一個一比特語法元素,表示當前場引用一個還是兩個先前的參考場圖片。如果NUMREF=0,則當前P場圖片可只引用一個場。在這種情況下,在圖片層比特流中跟隨著REFFIELD語法元素。對于具有兩個參考場的隔行掃描的P場,NUMREF=1。參考場圖片指示器(ReferenceFieldPictureIndicator)(REFFIELD)(1比特)如果NUMREF=0,REFFIELD是在隔行掃描的P場圖片首部中存在的一個1位語法元素。REFFIELD表示使用哪一個先前解碼的場作為參考。如果REFFIELD=0,則使用在時間上最近的(以顯示順序)I或P場作為參考。如果REFFIELD=1,則使用在時間上次最近的I或P場圖片作為參考。擴展的MV范圍標志(ExtendedMVRangeFlag)(MVRANGE)(可變大小)MVRANGE是在序列層EXTENDED_MV位設置為1時存在的可變大小的語法元素。MVRANGEVLC表示運動矢量范圍。擴展的差分MV范圍標志(ExtendedDifferentialMVRangeFlag)(DMVRANGE)(可變大小)如果序列級語法語法元素EXTENDED_DMV=1,則存在DMVRANGE,它是可變大小的語法元素。DMVRANGEVLC表示運動矢量差分范圍。運動矢量模式(MotionVectorMode)(MVMODE)(可變大小或1比特)MVMODE語法元素用信號表示四種運動矢量編碼模式之一或一種強度補償模式。若干后續(xù)的元素提供另外的運動矢量模式和/或強度補償信息。宏塊模式表(MacroblockModeTable)(MBMODETAB)(2或3比特)MBMODETAB語法元素是定長字段。對于隔行掃描的P場,MBMODETAB是3比特值,表示使用八個霍夫曼表中的哪一個來解碼宏塊層中的宏塊模式語法元素(MBMODE)。運動矢量表(MotionVectorTable)(MVTAB)(2或3比特)MVTAB語法元素是一個2或3位值。對于其中NUMREF=1的隔行掃描的P場,MVTAB是3比特語法元素,表示使用八個隔行掃描的霍夫曼表中的哪些來解碼運動矢量數據。4MV塊圖案表(4MVBlockPatternTable)(4MVBPTAB)(2比特)4MVBPTAB語法元素是一個2比特值。對于隔行掃描的P場,只有當MVMODE(或MVMODE2,如果MVMODE設置為強度補償)表示圖片是“混合的MV”類型時才提供它。4MVBPTAB語法元素用信號表示使用四個霍夫曼表中的哪一個來解碼4MV宏塊中的4MV塊圖案(4MVBP)語法元素。3.選擇的宏塊層元素圖26示出在組合實現中用于隔行掃描的P場的宏塊級(macroblock-level)比特流語法。下面描述具體的比特流元素。用于宏塊的數據由宏塊首部和跟隨其后的塊層數據構成。宏塊模式(MacroblockMode)(MBMODE)(可變大小)MBMODE語法元素表示宏塊類型(1MV、4MV或幀內),并存在CBP標志和運動矢量數據,如在下面VI.B.3.節(jié)中詳細描述的。運動矢量數據(MotionVectorData)(MVDATA)(可變大小)MVDATA是可變大小的語法元素,它編碼用于宏塊的運動矢量的差分,在下面VI.B.3.節(jié)中詳細描述它的解碼。4MV塊圖案(4MVBlockPattern)(4MVBP)(4比特)4MVBP語法元素表示4個亮度塊中哪一個包含非零運動矢量差分,在下面VI.B.3.節(jié)中詳細描述其使用。塊級運動矢量數據(Block-levelMotionVector)(BLKMVDATA)(可變大小)BLKMVDATA是可變大小的語法元素,包含用于塊的運動信息,并存在于4MV宏塊中。混合運動矢量預測(HybridMotionVectorPrediction)(HYBRIDPRED)(1比特)HYBRIDPRED是每運動矢量1比特語法元素。如果預測值顯式地編碼在比特流中,則提供一個比特表示使用預測值A還是預測值C作為運動矢量預測值。B.解碼隔行掃描的P場下面的章節(jié)描述用于在組合實現中解碼隔行掃描的P場的過程。1.幀/場層解碼參考圖片P場圖片可引用一個或兩個先前編碼的場。在圖片層中的NUMREF語法元素是一個一比特語法元素,表示當前場可引用一個還是兩個先前的參考場圖片。如果NUMREF=0,則當前隔行掃描的P場圖片的塊和宏塊可只引用一個場。如果NUMREF=1,則當前隔行掃描的P場圖片的塊或宏塊可使用兩個在時間上最近的(以顯示順序)I或P場圖片中的任何一個作為參考。圖15和16示出兩個參考P-場的例子。P場圖片類型隔行掃描的P場圖片可以兩種類型之一1MY或混合的MV(Mixed-MV)。下面的章節(jié)描述每種類型。在1MVP場中,每個運動補償的宏塊使用單個運動矢量來表示用于在宏塊中所有6個塊的預測的塊的位移。1MV模式是由MVMODE和MVMODE2圖片層語法元素用信號表示的。在混合的MVP場中,每個運動補償的宏塊可編碼為1MV或4MV宏塊。在4MV宏塊中,4個亮度塊的每一個具有與其相關聯的運動矢量。在混合的MVP場中,用于每一個宏塊的1MV或4MV是由MBMODE語法元素在每個宏塊表示的?;旌系腗V模式是由MVMODE和MVMODE2圖片層語法元素用信號表示的。2.宏塊層解碼在隔行掃描的P場中的宏塊可以是3種可能類型之一1MV、4MV和幀內(Intra)。宏塊類型是由宏塊層中的MBMODE語法元素用信號表示的。下面的章節(jié)描述1MV和4MV類型以及如何用信號表示它們。1MV宏塊1MV宏塊可在1MV和混合的MVP場圖片中出現。在1MV宏塊中,對于宏塊中所有6個宏塊,單個運動矢量代表當前和參考圖片之間的位移。對于1MV宏塊,在宏塊層中的MBMODE語法元素表示三項內容1)宏塊類型是1MV2)CBPCY語法元素是否存在3)MVDATA語法元素是否存在如果MBMODE語法元素表示CBPCY語法元素存在,則CBPCY語法元素存在于相應位置中的宏塊層中。CBPCY表示6個塊中哪些被編碼在塊層中。如果MBMODE語法元素表示CBPCY語法元素不存在,則假定CBPCY等于0且不存在用于宏塊中6個塊的任何一個的塊數據。如果MBMODE語法元素表示MVDATA語法元素存在,則MVDATA存在于相應位置中的宏塊層中。MVDATA語法元素編碼運動矢量差分。將運動矢量差分與運動矢量預測值結束起來重新構造運動矢量。如果MBMODE語法元素表示MVDATA語法元素不存在,則假定運動矢量差分是零并因此運動矢量等于運動矢量預測值。4MV宏塊4MV宏塊只可在混合的MV圖片中出現。在4MV宏塊中,在宏塊中的4個亮度塊的每一個具有相關聯的運動矢量,它表示用于那個塊的當前和參考圖片之間的位移。用于色度塊的位移是從4個亮度運動矢量導出的。對于4MV宏塊,宏塊層中的MBMODE語法元素表示三項內容1)宏塊類型是4MV2)CBPCY語法元素是否存在4MVBP語法元素表示4個亮度塊中的哪些包含非零運動矢量差分。4MVBP語法元素解碼成0與15之間的值。對于4MVBP中的4個比特位置(bitposition)的每一個,值0表示不存在用于那個塊的運動矢量差分(BLKMVDATA)并假定運動矢量差分是0。值1表示在相應位置中存在用于那個塊的運動矢量差分(BLKMVDATA)。例如,如果4MVBP解碼成值1100(二進制),則比特流包含用于塊0和1的BLKMVDATA而沒有用于塊2和3的BLKMVDATA。在可替換的實現中,MBMODE語法元素可以表示4MVBP語法元素是否存在;如果MBMODE語法元素表示4MVBP語法元素不存在,則假定用于所有4個亮度塊的運動矢量差分數據(BLKMVDATA)存在。取決于MVMODE/MVMODE2語法元素表示混合的MV還是表示全部1MV(all-1MV),MBMODE用信號表示如下的信息。表5示出MBMODE如何用信號表示關于在全部1MV圖片中的宏塊的信息。表5在全部-1MV圖片中的宏塊模式表6示出MBMODE如何用信號表示關于混合的MV圖片中的宏塊的信息。表6在混合的1MV圖片中的宏塊模式使用8個表之一來用信號表示MBMODE。在圖片層處通過MBMODETAB語法元素用信號表示該表。3.運動矢量解碼過程下列章節(jié)描述用于P場圖片的塊或宏塊的運動矢量解碼過程。解碼運動矢量差分MVDATA或BLKMVDATA語法元素為宏塊中的宏塊或塊編碼運動信息。1MV宏塊具有單個MVDATA語法元素,而4MV宏塊可具有零與四個之間的BLKMVDATA元素。下面的章節(jié)描述如何為一個參考(one-reference)(圖片層語法元素NUMREF=0)和兩個參考(two-reference)(圖片層語法元素NUMREF=1)情況計算運動矢量差分。在一個參考場圖片中的運動矢量差分在只有一個參考場的場圖片中,在宏塊層中每個MVDATA或BLKMVDATA語法元素共同地編碼兩項內容1)水平運動矢量差分分量和2)垂直運動矢量差分分量。MVDATA或BLKMVDATA語法元素是可變長的霍夫曼碼字(Huffmancodeword)和跟隨著的定長碼字?;舴蚵a字的值確定定長碼字的大小。在圖片層中的MVTAB語法元素指定用于解碼可變大小的碼字的霍夫曼表。在圖27A中的偽代碼2700例示如何為一個參考場解碼運動矢量差分。在偽2700中計算值dmv_x和dmv_y。按如下定義這些值dmv_x差分水平運動矢量分量,dmv_y差分垂直運動矢量分量,k_x,k_y用于長運動矢量的固定長度,k_x和k_y取決于如由MVRANGE符號定義的運動矢量范圍。表7由MVRANGE指定的k_x和k_yextend_x用于水平運動矢量差分的擴展范圍,extend_y用于垂直運動矢量差分的擴展范圍,extend_x和extend_y是從DMVRANGE圖片場語法元素導出的。如果DMVRANGE表示使用用于水平分量的擴展范圍,則extend_x=1。否則extend_x=0。同樣,如果DMVRANGE表示使用用于垂直分量的擴展范圍,則extend_y=1,否則extend_y=0。offset_table(偏移表)是在偽代碼2700中使用的數組,并如在圖27A中所示的那樣定義。在圖27B中的偽代碼2710例示在可替換的組合實現中如何為一個參考場編碼運動矢量差分。偽代碼2710以不同的方式解碼運動矢量差分。例如,偽代碼2710省略了擴展的運動矢量差分范圍的處理。在兩個參考場圖片中的運動矢量差分在使用場圖片編碼隔行掃描幀時出現兩個參考場圖片。序列的每個幀被分成兩個場,每個場使用實際上是逐行掃描的編碼路徑來編碼每個場。場圖片常常具有兩個參考場,并在下面描述在這種情況下場圖片運動矢量的編碼。在具有兩個參考場的場圖片中,在宏塊層中的每個MVDATA或BLKMVDATA語法元素共同地編碼三項內容1)水平運動矢量差分分量,2)垂直運動矢量差分分量和3)是否使用主導或非主導的預測值,即由運動矢量引用兩個場中的哪一個。MVDATA或BLKMVDATA語法元素是變長的霍夫曼碼字并跟隨著的定長碼字?;舴蚵a字的值確定定長碼字的大小。在圖片層中的MVTAB語法元素指定用于解碼可變大小的碼字的霍夫曼表。在圖28A中的偽代碼2800例示如何編碼運動矢量差分和主導/非主導的預測值信息。在圖28A中的偽代碼2800中計算值predictor_flag、dmv_x和dmv_y。除在圖27A中的偽代碼2700中所示的變量和數組之外,偽代碼2800包含變量predictor_flag,它是表示使用主導還是非主導運動矢量預測值的二進制標志(0=使用主導預測值,1=使用非主導的預測值),以及表size_table,它是如在圖28中所示的那樣定義的數組。在圖28B中的偽代碼2810例示在可替換的組合實現中如何為兩個參考場解碼運動矢量差分。偽代碼2810以不同的方法解碼運動矢量差分。例如,偽代碼2810省略了擴展的運動矢量差分范圍的處理。運動矢量預測值通過將前一節(jié)中計算的運動矢量差分加到運動矢量預測值上來計算運動矢量。預測值是由多達三個相鄰的運動矢量來計算的。下面的章節(jié)描述在這個組合實現中如何為1MVP場圖片和混合的MVP場圖片計算運動矢量預測值。在1MV隔行掃描的P場中的運動矢量預測值圖29A和29B示出為隔行掃描的P場的1MV宏塊的候選運動矢量預測值考慮的宏塊位置。在1MV隔行掃描的P場中,從左邊、上部和右上的宏塊取候選預測值,除了在宏塊是行中最后一個宏塊的情況之外。在這種情況下,預測值B是從左上的宏塊取得的,而不是右上。對于幀是一個宏塊寬的特殊情況,預測值總是預測值A(上部的預測值)。當前宏塊在首行中的特殊情況(沒有A和B預測值,或者根本沒有預測值),參考上面圖20A-20F來處理。在混合的MVP圖片中的運動矢量預測值圖30A-34示出為混合的MVP場圖片中的1MV或4MV宏塊的多達3個候選運動矢量預測值考慮的宏塊位置。在下列圖中,較大的正方形是宏塊邊界,而較小的正方形是塊邊界。對于幀是一個宏塊寬的特殊情況,預測值總是預測值A(上部預測值)。當前塊或宏塊在頂行中的特殊情況是參考上面圖20A-20F來處理的。圖30A和30B示出為混合的1MV/4MV隔行掃描的P場中的1MV當前宏塊的候選運動矢量預測值考慮的塊位置。相鄰的宏塊可以是1MV或4MV宏塊。圖30A和30B示出假定近鄰是4MV時(即預測值A是在當前宏塊之上的宏塊中的塊2的運動矢量,而預測值C是緊接著當前宏塊的左邊的宏塊中的塊1的運動矢量)候選運動矢量的位置。如果任何近鄰是1MV宏塊,則取在圖29A和29B中所示的運動矢量預測值作為用于整個宏塊的矢量。如圖30B所示,如果宏塊是行中最后的宏塊,則預測值B來自左上的宏塊中的塊3而不是來自右上的宏塊中的塊2,否則反之。圖31A-34示出為在4MV宏塊中的4個亮度塊的每一個的候選運動矢量預測值考慮的塊位置。圖31A和31B示出為在混合的1MV/4MV隔行掃描的P場中的4MV宏塊中在位置0處的塊的候選運動矢量預測值考慮的塊位置;圖32A和32B示出為在混合的隔行掃描的P場中的4MV宏塊中在位置1處的塊的候選運動矢量預測值考慮的塊位置;圖33示出為在混合的1MV/4MV隔行掃描的P場中的4MV宏塊中在位置2處的塊的候選運動矢量預測值考慮的塊位置;以及圖34示出為在混合的1MV/4MV隔行掃描的P場中的4MV宏塊中在位置3處的塊的候選運動矢量預測值考慮的塊位置。再一次,如果近鄰是1MV宏塊,則為宏塊的塊使用用于宏塊的運動矢量預測值。對于宏塊是行中第一個宏塊的情況,與行中其余宏塊的塊0不同地處理塊0的預測值B。在這種情況下,從緊接在當前宏塊之上的宏塊中的塊3而不是從當前宏塊之上和左邊的宏塊中的塊3來取預測值B,否則反之。同樣,對于宏塊是行中最后一個宏塊,不同地處理塊1的預測值B。在這種情況下,從緊接在當前宏塊之上的宏塊中的塊2而不是從當前宏塊之上和右邊的宏塊中的塊2來取預測值B,否則反之。如果宏塊在第一宏塊列中,則將塊0和2的預測值C設置為等于0。主導和非主導的MV預測值在兩個參考場P場圖片中,對于每個幀間編碼的宏塊,導出兩個運動矢量預測值。一個來自主導場,而另一個來自非主導場。主導場被認為是包含近鄰的實際值運動矢量預測值候選的大部分的場。在平分的情況下,用于相反場的運動矢量預測值被認為是主導預測值。在主導/非主導預測值的計算中不考慮幀內編碼的宏塊。如果所有候選預測值宏塊是幀內編碼的,則主導和非主導運動矢量預測值設置為零,并從相反的場取主導預測值。計算運動矢量預測值如果NUMREF=1,則當前場圖片可參考兩個最近的場圖片,且為塊或宏塊的每個運動矢量計算兩個運動矢量預測值。在圖35A-35F中的偽代碼3500描述在組合實現中如何為于兩個參考情況計算運動矢量預測值。(在圖20A-20F中的偽代碼2000描述在另一個實現中如何為兩個參考情況計算運動矢量預測值)。在兩個參考圖片(NUMREF=1)中,當前場可引用兩個最近的場。一個預測值用于相同極性的參考場,而另一個用于具有相反極性的參考場。在組合實現中的定標操作圖21A-B是代碼圖,示出用于定標來自一個場的預測值來導出來自另一個場的預測值的偽代碼2100。在圖22的表2200中(對于當前場是第一個場的情況)和在圖23的表2300中(對于當前場是第二個場的情況),示出在這個組合實現中的SCALEOPP、SCALESAME1、SCALESAME2、SCALEZONE1_X、SCALEZONE1_Y、ZONE1OFFSET_X和ZONE1OFFSET_Y的值。在圖片首部中的REFDIST中編碼參考幀距離。參考幀距離是REFDIST+1。重新構造運動矢量下面的章節(jié)描述如何為1MV和4MV宏塊重新構造亮度和色度運動矢量。在重新構造運動矢量之后,隨后可使用它作為相鄰的運動矢量來為鄰近的宏塊預測運動矢量。如果運動矢量用于兩個參考場隔行掃描的P場中的塊或宏塊,則運動矢量將具有相關聯的“相同”或“相反”的極性,且可用于為運動矢量預測值的其它場極性導出運動矢量預測值。亮度運動矢量重新構造在所有情況(1MV和4MV宏塊)下,通過如下將差分加到預測值上來重新構造亮度運動矢量mv_x=(dmv_x+predictor_x)smodrange_xmv_y=(dmv_y+predictor_y)smodrange_y模操作“smod”是帶符號模,按如下定義Asmodb=((A+b)%(2*b))-b這確保重新構造的矢量是有效的。(Asmodb)位于-b與b-1之內。range_x和range_y取決于MVRANGE。如果隔行掃描的P場圖片使用兩個參考圖片(NUMREF=1),則將在解碼運動矢量差分之后導出的predictor_flag與從運動矢量預測值導出的dominatpredictor值結合起來以確定使用哪一個場作為參考。在圖36中的偽代碼3600描述如何確定參考場。在1MV宏塊中,將存在用于4個構成宏塊的亮度分量的塊的單個運動矢量。如果MBMODE語法元素表示在宏塊層中不存在MV數據,則dmv_x=0和dmv_y=0(mv_x=predictor_x且mv_y=predictor_y)。在4MV宏塊中,在宏塊中的每一個幀間編碼的亮度塊將具有其自己的運動矢量。因此在每個4MV宏塊中將存在0與4個之間的亮度運動矢量。如果4MVBP語法元素表示不存在用于塊的運動矢量信息,則對于那個塊dmv_x=0和dmv_y(mv_x=predictor_x且mv_y=predictor_y)。色度運動矢量重新構造色度運動矢量是從亮度運動矢量導出的。在可替換的實現中,對于4MV宏塊,基于亮度塊或場的狀態(tài)作出關于將色度塊作為幀間還是幀內編碼的決定。已經參考各種實施例描述和例示了我的發(fā)明的原理,將認識到,可以在不脫離這樣的原理的情況下在安排和細節(jié)上修改各種實施例。應該理解,在此描述的程序、過程或方法與任何特定類型的計算環(huán)境無關,或者不受限于它們,除非另有說明??膳c各種類型的通用或專用計算環(huán)境一起使用或執(zhí)行按照在此描述的教導的操作。在軟件中所示的實施例的元素可在硬件中實現,反之亦然。由于許多可能的實施例可應用我的發(fā)明原理,我要求我的發(fā)明所有這樣的實施例都落在所附的權利要求書及其等價物的范圍和精神之中。權利要求1.一種方法,其特征在于,所述方法包括為隔行掃描的P場的一部分的運動矢量計算運動矢量預測值,包括在為所述部分使用相同極性運動矢量預測值與使用相反極性運動矢量預測值之間選擇;以及至少部分地基于為運動矢量計算的運動矢量預測值來處理運動矢量。2.如權利要求1所述的方法,其特征在于,所述處理的步驟包括在編碼過程中計算運動矢量與運動矢量預測值之間的運動矢量差分。3.如權利要求1所述的方法,其特征在于,所述處理的步驟包括在解碼過程中由運動矢量差分和運動矢量預測值來重新構造運動矢量。4.如權利要求1所述的方法,其特征在于,所述部分是-宏塊。5.如權利要求1所述的方法,其特征在于,所述部分是-宏塊的-塊。6.如權利要求1所述的方法,其特征在于,所述選擇的步驟至少部分地基于在所述部分周圍的一個近鄰的相反極性運動矢量的計數和/或基于所述近鄰的相同極性運動矢量的計數。7.如權利要求1所述的方法,其特征在于,所述選擇的步驟至少部分地基于比特流中的單個比特信號。8.如權利要求1所述的方法,其特征在于,所述選擇的步驟包括至少部分地基于在所述部分周圍的一個近鄰的相反極性運動矢量的計數和/或所述近鄰的相同極性運動矢量的計數,確定主導預測值;以及基于主導預測值與比特流中單個比特信號來選擇相同極性運動矢量預測值或相反極性運動矢量預測值。9.如權利要求1所述的方法,其特征在于,所述選擇的步驟包括如果用于所述部分的運動矢量參考相同極性的場,則選擇相同極性的運動矢量預測值,或者如果用于所述部分的運動矢量參考相反極性的場,則選擇相反極性的運動矢量預測值。10.如權利要求1所述的方法,其特征在于,還包括可以作為在所述部分周圍的一個近鄰的多個相同極性的運動矢量預測值候選的中值來計算相同極性的運動矢量預測值。11.如權利要求10所述的方法,其特征在于,通過定標一個相反極性的運動矢量預測值候選來導出多個相同極性的運動矢量預測值候選的至少一個。12.如權利要求1所述的方法,其特征在于,還包括作為在所述部分周圍的一個近鄰的多個相反極性的運動矢量預測值的候選的中值來計算相反極性的運動矢量預測值。13.如權利要求12所述的方法,其特征在于,通過定標一個相同極性的運動矢量預測值候選來導出多個相反極性的運動矢量預測值候選的至少一個。14.如權利要求1所述的方法,其特征在于,還包括為隔行掃描的P場的多個其它部分的每一個重復所述計算和處理步驟。15.一種方法,其特征在于,包括至少部分地基于多個相鄰的運動矢量來為隔行掃描的P場的一部分的運動矢量計算運動矢量預測值,其中,所述多個相鄰的運動矢量包括一個或多個相反極性運動矢量和一個或多個相同極性運動矢量;以及至少部分地基于為運動矢量計算的運動矢量預測值來處理運動矢量。16.如權利要求15所述的方法,其特征在于,所述處理的步驟包括在編碼過程中計算運動矢量與運動矢量預測值之間的運動矢量差分。17.如權利要求15所述的方法,其特征在于,所述處理的步驟包括在解碼過程中由運動矢量差分和運動矢量預測值來重新構造運動矢量。18.如權利要求15所述的方法,其特征在于,所述部分是-宏塊。19.如權利要求15所述的方法,其特征在于,所述部分是-宏塊的-塊。20.如權利要求15所述的方法,其特征在于,還包括作為多個相同極性的運動矢量預測值候選的中值來計算相同極性的運動矢量預測值,其中,至少基于定標來自一個或多個相反極性的運動矢量之一的值來導出多個候選的至少一個。21.如權利要求15所述的方法,其特征在于,還包括作為多個相反極性的運動矢量預測值候選的中值來計算相反極性的運動矢量預測值,其中,至少基于定標來自一個或多個相同極性的運動矢量之一的值來導出多個候選的至少一個。22.一種處理隔行掃描的預測視頻幀的方法,其特征在于,所述方法包括為視頻幀中當前場中的宏塊確定運動矢量預測值候選的第一集合,運動矢量預測值候選的第一集合引用相對于當前場具有相同極性的第一參考場;至少部分地基于運動矢量預測值候選的第一集合中的一個或多個,為宏塊計算第一運動矢量預測值;為宏塊確定運動矢量預測值候選的第二集合,運動矢量預測值候選的第二集合引用具有相對于當前場的相反極性的第二參考場;至少部分地基于運動矢量預測值候選的第二集合中的一個或多個,為宏塊計算第二運動矢量預測值;以及在所述處理步驟中使用第一和第二運動矢量預測值。23.如權利要求22所述的方法,其特征在于,所述使用第一和第二運動矢量預測值的步驟包括選擇第一和第二運動矢量預測值之一并基于選擇的運動矢量預測值來為宏塊計算運動矢量差分,所述方法還包括熵編碼運動矢量差分。24.如權利要求22所述的方法,其特征在于,還包括為宏塊熵解碼運動矢量差分,其中,所述使用第一和第二運動矢量預測值的步驟包括選擇第一和第二運動矢量預測值之一并將選擇的預測值與運動矢量差分結合起來為宏塊重新構造運動矢量。25.一種具有在其上存儲用于在視頻解碼器中執(zhí)行如權利要求22所述的方法的計算機可執(zhí)行指令的計算機可讀介質。26.一種具有在其上存儲用于在視頻解碼器中執(zhí)行如權利要求22所述的方法的計算機可執(zhí)行指令的計算機可讀介質。27.一種方法,其特征在于,包括通過定標具有不同于第一極性的第二極性的實際運動矢量值,來計算第一極性運動矢量預測值候選;以及當為隔行掃描的P場的一部分的運動矢量計算運動矢量預測值時,使用第一極性運動矢量預測值候選。28.如權利要求27所述的方法,其特征在于,還包括在編碼過程中計算運動矢量與運動矢量預測值之間的運動矢量差分。29.如權利要求27所述的方法,其特征在于,還包括在解碼期間由運動矢量差分與運動矢量預測值來重新構造運動矢量。30.如權利要求27所述的方法,其特征在于,所述部分是-宏塊。31.如權利要求27所述的方法,其特征在于,所述部分是-宏塊的-塊。32.如權利要求27所述的方法,其特征在于,第一極性運動矢量預測值候選具有與所述部分相反的場極性,其中,實際運動矢量值具有與所述部分相同的場極性,以及其中,調整所述定標以從相同極性定標成相反極性。33.如權利要求27所述的方法,其特征在于,第一極性運動矢量預測值候選具有與所述部分相同的場極性,其中,實際運動矢量值具有與所述部分相反的場極性,以及其中,調整所述定標以從相反極性定標成相同極性。34.如權利要求27所述的方法,其特征在于,所述定標是至少部分地基于參考幀距離。35.一種處理隔行掃描的預測視頻幀的方法,其特征在于,所述方法包括為視頻幀中當前場中的宏塊確定第一運動矢量預測值候選,第一運動矢量預測值候選具有第一極性;為宏塊確定第二運動矢量預測值候選,其中,第二運動矢量預測值候選是從第一運動矢量預測值候選使用定標操作來導出的;以及其中,第二運動矢量預測值候選具有不同于第一極性的極性。36.一種具有在其上存儲用于在視頻解碼器中執(zhí)行如權利要求35所述的方法的計算機可執(zhí)行指令的計算機可讀介質。37.一種具有在其上存儲用于在視頻解碼器中執(zhí)行如權利要求35所述的方法的計算機可執(zhí)行指令的計算機可讀介質。38.一種處理隔行掃描的預測視頻幀的方法,其特征在于,所述方法包括為視頻幀中當前場中的宏塊確定第一運動矢量預測值候選,第一運動矢量預測值候選引用具有第一極性和參考距離的場;以及為宏塊確定第二運動矢量預測值候選,其中,第二運動矢量預測值候選是從第一運動矢量預測值候選使用至少部分地基于參考距離變化的定標操作來導出的。39.如權利要求38所述的方法,其特征在于,第二運動矢量預測值候選具有不同于第一極性的極性。40.一種具有在其上存儲用于在視頻解碼器中執(zhí)行如權利要求38所述的方法的計算機可執(zhí)行指令的計算機可讀介質。41.一種具有在其上存儲用于在視頻解碼器中執(zhí)行如權利要求38所述的方法的計算機可執(zhí)行指令的計算機可讀介質。42.一種為編碼的視頻數據比特流中的當前幀解碼數據的方法,其特征在于,所述方法包括解碼比特流中一個場級處的第一元素,第一元素包括用于視頻幀中的當前場的參考場數量信息,參考場數量信息表示用于當前場的兩個參考場;解碼比特流中一個宏塊級處的第二元素,第二元素包括用于當前場中的當前宏塊的宏塊模式信息;以及解碼宏塊級處的第三元素,第三元素包括用于當前宏塊的運動矢量數據,其中,運動矢量數據包括不同的運動矢量數據;以及為宏塊處理運動矢量數據,所述處理的步驟包括為當前宏塊確定第一和第二運動矢量預測值,其中,第一運動矢量預測值是奇數場預測值而第二運動矢量預測值是偶數場預測值;以及至少部分地基于第一和第二運動矢量預測值并至少部分地基于差分運動矢量數據,為當前宏塊重新構造運動矢量。43.一種解碼隔行掃描的P場的當前宏塊的方法,其特征在于,所述方法包括解碼運動矢量數據,運動矢量數據共同地用信號表示水平差分運動矢量分量、垂直差分運動矢量分量和表示是否使用主導的或非主導的運動矢量預測值的標志;以及至少部分地基于解碼的運動矢量數據,重新構造運動矢量。44.如權利要求43所述的方法,其特征在于,運動矢量是用于當前宏塊的。45.如權利要求43所述的方法,其特征在于,運動矢量是用于當前宏塊的一個塊的。46.如權利要求43所述的方法,其特征在于,所述重新構造的步驟包括基于標志在使用主導運動矢量預測值或非主導運動矢量預測值之間選擇;將水平差分運動矢量分量與選擇的預測值的水平分量結合起來;以及將垂直差分運動矢量分量與選擇的預測值的水平分量結合起來。全文摘要描述用于編碼和解碼隔行掃描的視頻中預測圖象的技術和工具。例如,視頻編碼器或解碼器為隔行掃描的P場的一部分(例如,一個塊或宏塊)的運動矢量計算運動矢量預測值,包括在為該部分使用相同極性或使用相反極性的運動矢量預測值之間選擇。編碼器/解碼器至少部分地基于為該運動矢量計算的運動矢量預測值來處理運動矢量。該處理可以包括在編碼過程中計算運動矢量與運動矢量預測值之間的差分,并在解碼過程中由運動矢量差分與運動矢量預測值來重新構造運動矢量。該選擇可以至少部分地基于在該部分周圍的近鄰的相反極性運動矢量的計數和/或相同極性運動矢量的計數。文檔編號H04NGK1630374SQ20041007719公開日2005年6月22日申請日期2004年9月7日優(yōu)先權日2003年9月7日發(fā)明者T·W·豪爾克姆申請人:微軟公司