本公開通常涉及編碼和解碼視頻數(shù)據(jù),并且尤其是,涉及使用參考運動矢量的視頻編碼。
背景技術:
數(shù)字視頻流可以表示使用幀序列或者靜止圖像的視頻。數(shù)字視頻可以用于各種各樣的應用,例如包括視頻會議、高分辨率視頻娛樂、視頻廣告,或者用戶產(chǎn)生的視頻的共享。數(shù)字視頻流可以包含大量的數(shù)據(jù),并且耗費巨大的計算量或者用于視頻數(shù)據(jù)的處理、傳輸或者存儲的計算設備的通信資源。已經(jīng)提出減小在視頻流中的數(shù)據(jù)量的各種各樣的方法,包括壓縮和其它的編碼技術。
技術實現(xiàn)要素:
按照本公開的一個實施例的用于解碼視頻流的方法,包括:對于當前塊識別用于編碼在當前幀內的當前塊的參考幀,使用參考塊生成用于參考幀的參考運動矢量候選列表,通過從當前塊到提供運動矢量的參考塊的距離,并通過運動矢量的流行性值(popularityvalue),排名在參考運動矢量候選列表內的每個運動矢量,運動矢量的流行性值表示運動矢量被參考塊使用的水平,基于該排名將運動矢量分配給多個幀間預測模式,選擇用于解碼當前塊的幀間預測模式,和使用幀間預測模式解碼當前塊。參考塊可以包括當前幀的空間相鄰塊、在先前幀內的并置塊,和在先前幀內的并置塊的空間相鄰塊,或者其它參考塊。
也提供了用于解碼視頻流的對應裝置,例如一種處理器和存儲器裝置,該存儲器存儲使得處理器執(zhí)行以上方法的指令。
按照本公開的一個實施例用于編碼視頻流的方法,包括:對于多個參考幀的每個,識別用于使用參考塊編碼在當前幀內的當前塊的候選運動矢量,通過提供相應的候選運動矢量的相應參考塊距當前塊的距離,并且通過運動矢量的流行性值,排名在用于參考幀的參考運動矢量候選列表內的候選運動矢量,運動矢量的流行性值表示運動矢量被參考塊使用的水平,基于該排名將運動矢量分配給多個幀間預測模式,選擇用于編碼當前塊的幀間預測模式,和使用幀間預測模式編碼當前塊。
也提供了用于編碼視頻流的對應裝置,例如一種包括處理器和存儲器的裝置,該存儲器存儲使得處理器執(zhí)行以上方法的指令。也提供了一種或多種計算機可讀介質,其提供計算機程序代碼,該供計算機程序代碼被布置為擋在適合的計算機裝置上執(zhí)行時,實施在此描述的編碼和/或解碼方法和裝置。
在本公開的這些和其它的方面中的變化將在下面在附加的細節(jié)方面描述。
附圖說明
在此處描述提到如下所述的伴隨的附圖,其中相同的參考數(shù)字貫穿幾個視圖涉及相同的部分。
圖1是視頻編碼和解碼系統(tǒng)的示意圖。
圖2是可以實現(xiàn)發(fā)送站或者接收站的計算設備示例的方框圖。
圖3是要編碼和隨后解碼的視頻流的圖。
圖4是按照在此處教導的一個方面的視頻壓縮系統(tǒng)的方框圖。
圖5是按照在此處教導的另一個方面的視頻解壓縮系統(tǒng)的方框圖。
圖6是按照本公開的一個實施例用于使用參考運動矢量編碼視頻流過程的流程圖。
圖7是用于解釋在圖6的過程內的候選運動矢量的標識的幀序列的圖。
圖8是按照本公開的實施例用于使用參考運動矢量解碼編碼的視頻流過程的流程圖。
具體實施方式
與編碼視頻流相關的壓縮方案可以包括將每個圖像分解為塊,并且使用一個或多個技術產(chǎn)生數(shù)字視頻輸出位流以限制包括在該輸出中的信息。接收的位流可以被解碼以從有限的信息重新生成該塊和源圖像。編碼視頻流,或者其一部分,諸如幀或者塊可以包括使用視頻流中的時間和空間相似性以改善編碼效率。例如,視頻流的當前塊可以通過基于視頻流中的先前編碼塊預測用于當前塊的運動和顏色信息,和識別在預測值和當前塊之間的差值(殘差),基于先前編碼塊編碼。以這種方法,僅僅用于產(chǎn)生其的殘差和參數(shù)需要被添加到該位流,而不是包括當前塊的整體。這種技術可以稱為幀間預測。
在幀間預測中的參數(shù)中的一個是運動矢量,其表示先前編碼塊相對于該當前塊的空間位移。運動矢量可以使用運動估算的方法,諸如運動搜索。在運動搜索中,參考幀的一部分可以被轉換為一連串的位置以形成預測塊,其可以被從當前幀的一部分中減去以形成一系列的殘差。對應于具有最小殘差的位置的x和y轉換可以被選擇為運動矢量。表示運動矢量的位可以包括在編碼的位流中,以允許解碼器再現(xiàn)預測塊,并且解碼與運動矢量相關聯(lián)的編碼的視頻位流的該部分。
對于視頻壓縮方案,用于編碼運動矢量的位數(shù)目可能是很大的,特別地,對于以較低的數(shù)據(jù)速率或者較高的壓縮比編碼的視頻流。為了改善編碼效率,運動矢量可以使用參考運動矢量差分地編碼,即,僅僅在運動矢量和參考運動矢量之間的差值被編碼。在有些情況下,參考運動矢量可以是從在視頻流中先前地使用的運動矢量中選擇出來的,例如,來自相鄰塊的最后的非零運動矢量。選擇先前地使用的運動矢量編碼當前的運動矢量可以進一步減小包括在編碼的視頻位流中的位數(shù),并且從而減小傳輸和存儲帶寬需求。運動矢量參考模式允許編碼塊從先前編碼的相鄰塊推斷運動信息。
參考運動矢量候選列表可以按照在參考塊和正在編碼的當前塊之間的距離構成。但是,僅按照該塊距離排名忽略了運動矢量可以由多個塊使用。在參考區(qū)域中多少像素正在使用運動矢量可以表示運動矢量是用于當前塊的有效運動矢量的似然性。
如提及的,相鄰塊可用于構成參考運動矢量候選列表。為了編碼器和解碼器使用相同的信息,使用先前編碼塊。當以光柵掃描順序編碼時,這在可用的程度將相鄰塊限制為當前塊的左側和上面的相鄰塊。也可以考慮來自先前幀(也稱作最后的幀)的并置塊。但是,并置塊是位于具有與當前塊相同的像素位置的最后的幀中的塊,因此,潛在地來自當前塊的右側和底部的有用的運動信息仍然被省略。
不考慮參考運動矢量候選列表如何構成,可能存在固定數(shù)目的運動矢量參考模式,諸如兩個。固定數(shù)目的參考模式的使用可能是低效的。例如,如果參考運動矢量候選列表具有小于固定數(shù)目的運動矢量,可能需要零個運動矢量填充沒有運動矢量的模式。在其它情況下,參考運動矢量候選列表可以具有大于固定數(shù)目的運動矢量。省略的運動矢量可能是比保留的更好的候選,也就是說,省略的運動矢量可能導致在編碼當前塊時更好的速率和/或更小的失真。
在本公開的實施例中,壓縮性能可以通過采用有效的參考運動矢量排名制度而改善,繼之以動態(tài)運動矢量參考模式,其充分地考慮可用的運動矢量候選列表。在排名制度中,例如,用于具有單個參考幀的塊的參考運動矢量候選可以按照離當前塊和覆蓋范圍(例如,運動矢量的使用)兩者的相對距離排名。對于具有復合(例如,兩個)參考幀的塊,來自共享相同的參考幀組合的參考塊的候選運動矢量可以以較高優(yōu)先級排名。在此下面排名的選擇性地是來自具有單個參考幀的相鄰塊的運動矢量的組合。在確定運動矢量候選時,可以考慮與并置塊的下面和右邊的塊相關聯(lián)的運動信息以便獲得其運動方向。最后,動態(tài)運動矢量參考模式可以使用許多的模式,其取決于參考運動矢量候選列表的大小,使得潛在地丟失有價值的參考信息的機會減小。
參考運動矢量可以是基于在參考塊和當前塊之間的距離,和參考運動矢量的流行性(popularity)從候選運動矢量中選擇出來的。例如,在參考塊和當前塊之間的距離可以基于在先前編碼塊中的像素和在當前塊中的對應并置像素之間的以像素為單位測量的空間位移。例如,運動矢量的流行性可以基于使用該運動矢量的先前編碼的像素量。使用該運動矢量的先前編碼的像素越多,該運動矢量的概率越高。在一個示例中,流行性值是使用該運動矢量的先前編碼的像素的數(shù)目。在另一個示例中,流行性值是在使用該運動矢量的區(qū)域內先前編碼的像素的百分比。
由于當前塊與在參考塊中的像素的接近,在很多情況下,可能當前塊具有與那些像素類似的運動特征。因此,在接近當前塊的參考塊中使用的候選運動矢量可能緊密地類似用于當前塊的實際運動矢量。另外,由在接近當前塊的參考塊中最大量的像素使用的候選運動矢量將進一步類似用于當前塊的實際運動矢量。由于這個緣故,具有在附近的參考塊中使用的最高流行性的候選運動矢量的運動矢量可以被選擇為用于當前塊的實際運動矢量的參考運動矢量。較少的位可通過編碼在運動矢量方面的小差別用于編碼實際運動矢量,從而,改善總體編碼效率。在下文中論述可以使用選擇的運動矢量的其它的方法。
候選運動矢量可以局限于空間-時間相鄰運動矢量。也就是說,候選運動矢量的池可以是從當前塊的鄰區(qū)域的區(qū)域中選擇出來的。在一些視頻編碼方案中,特別地,其中視頻幀被亂序(outoforder)編碼的那些,所希望的是來自遠古或者未來的視頻幀的運動信息包括在候選運動矢量的池中。能夠亂序編碼視頻幀例如可以在所謂的“替換參考幀(alternatereferenceframe)”,也就是說,非時間相鄰于緊挨在它們前面和后面編碼的幀的編碼中發(fā)生。替換參考幀可以是合成的幀,其在輸入視頻流中不出現(xiàn),或者是為了預測而對于在輸入視頻流中的一個的復制幀,并且通常是在解碼之后不顯示的。這樣的幀可以類似于在非相鄰的未來的視頻幀。亂序編碼可能發(fā)生的另一個示例是通過使用所謂的“黃金參考幀(goldenreferenceframe)”,其是可以或者可以不相鄰于當前視頻幀的重建的視頻幀,并且存儲在存儲器中用作參考幀,直到例如被新的黃金參考幀取代為止。
在此處,除了相鄰視頻幀之外,替換參考幀和黃金參考幀(也稱作替換幀和黃金幀)可用于推斷用于視頻數(shù)據(jù)幀的塊的運動矢量候選。在首先描述本公開可以實現(xiàn)的環(huán)境之后,在此處描述其它的細節(jié)。
圖1是視頻編碼和解碼系統(tǒng)100的示意圖。發(fā)送站102例如可以是具有諸如在圖2中描述的硬件的內部配置的計算機。但是,發(fā)送站102的其它的實施例是可能的。例如,發(fā)送站102的處理可以在多個設備之中分配。
網(wǎng)絡104可以連接用于視頻流的編碼和解碼的發(fā)送站102和接收站106。特別地,視頻流可以在發(fā)送站102中編碼,并且編碼的視頻流可以在接收站106中解碼。網(wǎng)絡104例如可以是因特網(wǎng)。網(wǎng)絡104還可以是局域網(wǎng)(lan)、廣域網(wǎng)(wan)、虛擬專用網(wǎng)絡(vpn)、蜂窩電話網(wǎng)絡,或者在這個示例中,從發(fā)送站102到接收站106傳送視頻流的任何其它的裝置。
在一個示例中,接收站106可以是具有諸如在圖2中描述的硬件的內部配置的計算機。但是,接收站106的其它的實施例是可能的。例如,接收站106的處理可以在多個設備之中分配。
視頻編碼和解碼系統(tǒng)100的其它的實施例是可能的。例如,一個實施例可以省略網(wǎng)絡104。在另一個實施例中,視頻流可以被編碼,然后存儲供在以后的時間里傳輸?shù)浇邮照?06,或者具有存儲器的任何其它的設備。在一個實施例中,接收站106接收(例如,經(jīng)由網(wǎng)絡104、計算機總線,和/或一些通信通道)編碼的視頻流,并且存儲供稍后解碼的視頻流。在一個示例實施例中,實時傳輸協(xié)議(rtp)用于經(jīng)網(wǎng)絡104編碼的視頻的傳輸。在另一個實施例中,可以使用除rtp以外的傳輸協(xié)議,例如,基于超級文本傳輸協(xié)議(http)的視頻流協(xié)議。
當在視頻會議系統(tǒng)中使用時,例如,發(fā)送站102和/或接收站106可以包括如下所述的編碼和解碼視頻流兩者的能力。例如,接收站106可以是視頻會議參加者,其從視頻會議服務器(例如,發(fā)送站102)接收編碼的視頻位流以解碼和觀看,并且進一步編碼和向視頻會議服務器發(fā)送其自己的視頻位流,供由其它的參加者解碼和觀看。
圖2是可以實現(xiàn)發(fā)送站或者接收站的計算設備200示例的方框圖。例如,計算設備200可以實現(xiàn)圖1的發(fā)送站102和接收站106的一個或者兩個。計算設備200可以以包括多個計算設備的計算系統(tǒng)的形式,或者以單個計算設備的形式,例如,移動電話、小平板計算機、膝上電腦、筆記本計算機、臺式計算機等等。
在計算設備200中cpu202可以是中央處理單元。做為選擇,cpu202可以是目前現(xiàn)有或者今后開發(fā)的能夠操縱或者處理信息的任何其它類型的設備,或者多個設備。雖然本公開的實施例可以以如所示的單個處理器實踐,例如,中央處理器202,在速度和效率方面的優(yōu)點可以使用一個以上的處理器實現(xiàn)。
在一個實施例中,在計算設備200中的存儲器204可以是只讀存儲器(rom)設備或者隨機存取存儲器(ram)設備。任何其他適宜類型的存儲設備可以用作存儲器204。存儲器204可以包括由cpu202使用總線212訪問的代碼和數(shù)據(jù)206。存儲器204可以進一步包括操作系統(tǒng)208和應用程序210,該應用程序210包括允許cpu202執(zhí)行在這里描述的方法的至少一個程序。例如,應用程序210可以包括應用1至n,其進一步包括執(zhí)行在這里描述的方法的視頻編碼應用。計算設備200還可以包括以輔助儲存器214形式的附加存儲器,例如其可以是隨移動計算設備使用的存儲卡。因為視頻通信對話可以包含很大的信息量,它們可以整體或者部分地存儲在輔助儲存器214中,并且根據(jù)對處理的需要加載進存儲器204。
計算設備200還可以包括一個或多個輸出設備,諸如顯示器218。在一個示例中,顯示器218可以是觸感顯示器,其將顯示器與可操作地感測觸摸輸入的觸感單元合并。顯示器218可以經(jīng)由總線212連接到cpu202。除了或者作為顯示器218的替換,允許用戶編程或者另外使用計算設備200的其它的輸出設備可以提供。當輸出設備是或者包括顯示器時,該顯示器可以以各種各樣的方式實現(xiàn),包括作為液晶顯示器(lcd)、陰極射線管(crt)顯示器或者發(fā)光二極管(led)顯示器,諸如有機led(oled)顯示器。
計算設備200還可以包括例如照相機的圖像感測設備220,或者目前現(xiàn)有或者今后開發(fā)的任何其它的圖像感測設備220或者與其通信,圖像感測設備220可以感測圖像,諸如用戶操作計算設備200的圖像。圖像感測設備220可以被放置使得其指向操作計算設備200的用戶。在一個示例中,圖像感測設備220的位置和光軸可以被配置使得視野包括直接地接近于顯示器218和從其看得見顯示器218的區(qū)域。
計算設備200還可以包括例如麥克風的聲音感測設備222或者目前現(xiàn)有或者今后開發(fā)的任何其它的聲音感測設備,或者與其通信,聲音感測設備222可以感測靠近計算設備200的聲音。聲音感測設備222可以放置使得其朝向操作計算設備200的用戶,并且可以被配置為接收聲音,例如,在用戶操作該計算設備200的同時由用戶進行的語音或者其它的發(fā)言。
雖然圖2描述計算設備200的cpu202和存儲器204集成為單個單元,可以使用其它的配置。cpu202的操作可以被分布在多個機器上(每個機器具有一個或多個處理器),其可以直接地連接或者在局部區(qū)域或者其它的網(wǎng)絡上。存儲器204可以分布在多個機器上,諸如基于網(wǎng)絡的存儲器或者在執(zhí)行計算設備200操作的多個機器中的存儲器。雖然在這里作為單個總線描述,計算設備200的總線212可以由多個總線組成。此外,輔助儲存器214可以直接地耦合到計算設備200的其它的部件,或者可以經(jīng)由網(wǎng)絡訪問,并且可以包括諸如存儲卡的單個集成的單元,或者諸如多個存儲卡的多個單元。計算設備200因此可以以各式各樣的配置實現(xiàn)。
圖3是要編碼和隨后解碼的視頻流300的示例的圖。視頻流300包括視頻序列302。在下一個電平上,視頻序列302包括許多的相鄰幀304。雖然三個幀被描述為該相鄰幀304,視頻序列302可以包括許多的相鄰幀304。相鄰幀304然后可以被進一步細分為特殊的幀,例如,幀306。在下一個電平上,幀306可以被劃分為一系列的面或者段308。段(或者面)308可以例如是允許并行處理的幀的子集。段308還可以是可以將視頻數(shù)據(jù)分解為單獨的顏色的幀的子集。例如,顏色視頻數(shù)據(jù)的幀306可以包括亮度平面和兩個色度平面。段308可以被以不同的分辨率采樣。
無論幀306是否被劃分為段308,幀306可以被進一步細分為塊310,其可以在幀306中包含對應于例如16x16像素的數(shù)據(jù)。塊310還可以被安排為包括來自像素數(shù)據(jù)的一個或多個平面的數(shù)據(jù)。塊310還可以是任何其他適宜的大小,諸如4x4像素、8x8像素、16x8像素、8x16像素、16x16像素或者更大的。除非另作說明,術語塊和宏塊在此處可互換地使用。
圖4是按照一個實施例的編碼器400的方框圖。編碼器400可以如上所述在發(fā)送站102中實現(xiàn),諸如通過提供在存儲器,例如存儲器204中存儲的計算機軟件程序。計算機軟件程序可以包括機器指令,當由處理器,諸如cpu202執(zhí)行時,其使得發(fā)送站102以以下在圖4和在圖6中描述的方式編碼視頻數(shù)據(jù)。編碼器400還可以作為例如包括在發(fā)送站102中專用的硬件實現(xiàn)。編碼器400具有在前向路徑(由實的連接線條示出)中執(zhí)行各種各樣功能以使用視頻流300生成編碼的或者壓縮的位流420的以下的級:幀內/幀間預測級402、變換級404、量化級406,和熵編碼級408。編碼器400也可以包括重建路徑(由虛線的連接線條示出)以重建供編碼未來塊的幀。在圖4中,編碼器400具有在重建路徑中執(zhí)行各種各樣功能的以下的級:去量化級410、逆變換級412、重建級414和環(huán)形濾波器級416。編碼器400的其它的結構變化可用于編碼視頻流300。
當存在用于編碼的視頻流300時,每個幀306可以以塊為單位處理。在幀內/幀間預測級402處,每個塊可以被使用幀內預測或者幀間預測或者兩者組合編碼。在任何情況下,預測塊可以形成。在幀內預測的情況下,預測塊的全部或者一部分可以由在當前幀中的已經(jīng)先前編碼和重建的采樣形成。在幀間預測的情況下,預測塊的全部或者一部分可以由在使用運動矢量確定的一個或多個先前地構成的參考幀中的采樣形成。
接下來,仍然參考圖4,可以在幀內/幀間預測級402處從當前塊中減去該預測塊以生成殘差塊(也稱作殘差)。變換級404例如在頻率域中使用基于塊的變換將該殘差變換為變換系數(shù)。這樣的基于塊的變換例如包括離散余弦變換(dct)和不對稱離散正弦變換(adst)。其它的基于塊的變換是可能的。此外,不同的變換組合可以適用于單個殘差。在變換應用的一個示例中,dct將該殘差塊變換為頻率域,這里變換系數(shù)值以空間頻率為基礎。最低的頻率(dc)系數(shù)在矩陣的左上方,并且最高的頻率系數(shù)在矩陣的右下方。值得注意,預測塊的大小并且因此產(chǎn)生的殘差塊可以不同于變換塊的大小。例如,預測塊可以被分解為單獨的變換適用于其的較小的塊。
量化級406使用量化器值或者量化電平將變換系數(shù)轉換為離散的量子值,其稱為量化變換系數(shù)。例如,變換系數(shù)可以除以量化器值,并且被截取。量化變換系數(shù)然后由熵編碼級408熵編碼。熵編碼可以使用許多的技術,包括令牌和二元樹執(zhí)行。與用于解碼該塊的其它的信息一起的熵編碼的系數(shù)可以例如包括使用的預測類型、變換類型、運動矢量和量化器值,其然后輸出為壓縮的位流420。解碼該塊需要的信息可以被熵編碼為在壓縮的位流420內的塊、幀、片段和/或部分頭部。壓縮的位流420還可以稱為編碼的視頻流或者編碼的視頻位流,并且該術語將在此處可互換地使用。
在圖4中的重建路徑(由虛線的連接線條示出)可用于保證編碼器400和解碼器500兩者(如下所述)使用相同的參考幀和塊來解碼壓縮的位流420。重建路徑執(zhí)行類似于在解碼過程(在下面更詳細地論述其)期間出現(xiàn)的功能的功能,包括在去量化級410處對量化變換系數(shù)去量化,和在逆變換級412處對去量化變換系數(shù)逆變換來生成衍生殘差塊(也稱作衍生殘差)。在重建級414處,在幀內/幀間預測級402處預測的預測塊可以被添加到衍生殘差以生成重建的塊。環(huán)形濾波器級416可以適用于重建的塊以減小失真,諸如方塊效應(blockartifacts)。
編碼器400的其它的變化可用于編碼壓縮的位流420。例如,基于非變換的編碼器400可以對于某些塊或者幀直接地量化殘差信號而不經(jīng)變換級404。在另一個實施例中,編碼器400可以具有合并為單個級的量化級406和去量化級410。
圖5是按照另一個實施例的解碼器500的方框圖。解碼器500可以在接收站106中,例如通過提供在存儲器204中存儲的計算機軟件程序實現(xiàn)。計算機軟件程序可以包括機器指令,當由處理器,諸如cpu202執(zhí)行時,其使得接收站106以以下在圖5和在圖8中描述的方式解碼視頻數(shù)據(jù)。解碼器500還可以以例如包括在發(fā)送站102或者接收站106中的硬件實現(xiàn)。
類似于以上論述的編碼器400的重建路徑的解碼器500在一個示例中包括執(zhí)行從壓縮的位流420生成輸出視頻流516的各種各樣功能的以下的級:熵解碼級502、去量化級504、逆變換級506、幀內/幀間預測級508、重建級510、環(huán)形濾波器級512和去塊濾波級514。解碼器500的其它的結構變化可用于解碼壓縮的位流420。
當存在用于解碼的壓縮的位流420時,在壓縮的位流420內的數(shù)據(jù)元素可以由熵解碼級502解碼以生成一組量化變換系數(shù)。去量化級504將量化變換系數(shù)去量化(例如,通過量化變換系數(shù)乘以量化器值),并且逆變換級506使用選擇的變換類型逆變換去量化變換系數(shù)以生成衍生殘差,其可能與由在編碼器400中的逆變換級412生成的相同。使用從壓縮的位流420解碼的頭部信息,解碼器500可以使用幀內/幀間預測級508生成與在編碼器400中,例如,在幀內/幀間預測級402處生成的相同的預測塊。在重建級510處,預測塊可以被添加到衍生殘差以生成重建的塊。環(huán)形濾波器級512可以適用于重建的塊以減小方塊效應。其它的濾波可以適用于重建的塊。在這個示例中,去塊濾波級514適用于重建的塊以減小塊失真,并且該結果被作為輸出視頻流516輸出。輸出視頻流516還可以稱為解碼的視頻流,并且該術語將在此處可互換地使用。
解碼器500的其它的變化可用于解碼壓縮的位流420。例如,解碼器500可以不經(jīng)去塊濾波級514生成輸出視頻流516。
如以上簡要地提及的,塊可以通過運動矢量預測動態(tài)的參考運動矢量編碼模式編碼或者解碼。使用用于編碼和解碼的動態(tài)的參考運動矢量編碼模式的一個實施例接下來論述。
圖6是示出按照本公開的一個實施例用于使用參考運動矢量編碼視頻流過程600的流程圖。過程600可以在編碼器,諸如編碼器400中實現(xiàn),并且可以例如作為可以由計算設備,諸如發(fā)送站102或者接收站106執(zhí)行的軟件程序實現(xiàn)。例如,軟件程序可以包括機器可讀的指令,其可以存儲在存儲器,諸如存儲器204或者214中,并且可以由處理器,諸如cpu202執(zhí)行,以使得計算設備執(zhí)行過程600。
過程600可以使用專用的硬件或者固件實現(xiàn)。一些計算設備可以具有多個存儲器、多個處理器或者兩者。過程600的步驟或者操作可以使用不同的處理器、存儲器或者兩者分布。除了具有可以每個在列舉的步驟的一些或者所有的實現(xiàn)中使用的多個處理器或者多個存儲器的設備之外,術語“處理器”或者“存儲器”以單個的使用包含具有一個處理器或者一個存儲器的計算設備。為解釋的簡單起見,過程600被作為一系列的步驟或者操作描繪和描述。但是,按照本公開的教導可以以各種各樣的順序和/或同時發(fā)生。另外,按照本公開的步驟可以以在此處不存在和描述的其它的步驟發(fā)生。此外,可以不需要實現(xiàn)按照本公開的主題方法的所有圖示的步驟或者操作。
過程600假設具有多個幀的視頻數(shù)據(jù)的流(每個具有多個塊)正在使用視頻編碼器,諸如在計算設備,諸如發(fā)送站102處執(zhí)行的編碼器400編碼。視頻數(shù)據(jù)或者流可以由計算設備以許多的方法接收,諸如通過經(jīng)網(wǎng)絡、經(jīng)電纜接收視頻數(shù)據(jù),或者通過從主存儲器或者其它的存儲設備讀取視頻數(shù)據(jù),包括磁盤驅動器或者可移除介質,諸如緊湊的閃存(cf)卡、安全數(shù)字(sd)卡,或者能夠交換視頻數(shù)據(jù)的任何其它的設備。在一些實施例中,視頻數(shù)據(jù)可以從連接到操作編碼器的計算設備的攝像機接收。在幀內的至少一些塊被使用如以下更詳細地描述的幀間預測編碼。
在602處,過程600從在視頻流中先前編碼塊中識別候選運動矢量。過程600分析先前編碼塊的運動行為以生成排名的候選運動矢量的列表,采用有效參考運動矢量排名系統(tǒng),并且提供動態(tài)的運動參考模式,其充分地考慮可用的運動矢量候選列表,其允許參考運動矢量模式的數(shù)目動態(tài)地擴展或者縮短,并且改善熵編碼的效率。候選運動矢量的池可以按照相鄰參考塊條件動態(tài)地,即,如何生成候選運動矢量列表而擴展或者縮短。在視頻流中先前編碼塊可以包括在當前塊之前使用幀間預測編碼的任何塊,諸如來自先前編碼的幀的塊,或者來自與當前塊相同的幀的在當前塊之前已經(jīng)編碼的塊。例如,在一些編碼/解碼(編解碼器)方案,諸如以光柵掃描順序編碼的一個中,先前編碼塊可以在相同的幀中包括當前塊的上面、左側,或者左上塊。先前編碼塊還可以例如包括來自緊接先前幀(即,最后的幀)的塊、來自黃金幀(在幀內/幀間預測級402處描述的)的塊、來自任何其它的參考幀的塊,或者其任意組合。但是,希望地,候選運動矢量是基于在某些方面對應于當前塊的先前編碼塊由于其像素接近于當前塊很可能具有與當前塊類似的運動特征的理論,從這樣的塊中獲得的。
塊可以從單個參考幀或者從諸如兩個參考幀的復合預測。對于具有單個參考幀的塊,過程600從與參考幀相關聯(lián)的最靠近的空間相鄰塊識別候選運動矢量。候選運動矢量可以包括在參考覆蓋范圍內的運動矢量參考塊,諸如來自在當前塊之上的邊緣區(qū)域(例如,塊)的運動矢量、來自在當前塊左側的邊緣區(qū)域(例如,塊)的運動矢量、來自當前塊的右上角落的運動矢量,和來自在先前幀中的并置塊的運動矢量。在某些實施例中,考慮與并置塊的下面和右側的塊相關聯(lián)的運動矢量。
構成參考運動矢量候選列表的初始步驟參考圖7描述。也就是說,圖7是用于解釋在圖6的過程600內的候選運動矢量的識別602的幀序列的圖。正在編碼的當前塊b被設置在當前幀n內。幀n-1是先前幀,也稱作時間相鄰幀,其可以是可用于編碼幀n的塊的、存儲在所謂的最后參考幀緩存器中的重建的幀。在這種情況下,塊r3是與當前塊b的并置塊,并且其位于相同的像素位置(通常地,從左上方像素測量),并且在幀n-1內的x和y平面(即,相同的像素坐標)具有與在幀n內當前塊b具有的相同的像素維度。換言之,塊r3空間地對應于當前塊b。在單個參考模式中,即,當前塊b正在使用單個參考幀幀間預測,運動矢量候選緩存器與參考幀相關聯(lián)。給定參考幀索引,可以通過在圖7中示出的參考塊執(zhí)行對與相同的參考幀相關聯(lián)的運動矢量的搜索,以包括在候選列表中。
塊b和r3是任意塊大小。例如,塊b和r3可以每個是32x32像素。如上所述,每個幀可以被分割為用于編碼的塊。這些塊可以為了編碼目的被進一步分割為更小的塊。由于這個緣故,接近于當前塊b的任何塊或者區(qū)域可能已經(jīng)分割為由不同的運動矢量預測的更小的塊。因此,考慮這一點,搜索運動矢量可以通過評價用于在幀內最小的可能的預測塊大小的運動信息。在示出的示例中,在當前幀中搜索運動矢量使用來自頂行邊緣區(qū)域(也稱作塊r0)、左列邊緣區(qū)域(也稱作塊r1),和右上角(也稱作塊r2)的運動信息進行。塊r0和r1是其大小(維度)與當前塊b的大小相關聯(lián)的區(qū)域。有時候,塊r0和r1是與當前塊b相同的大小,但是,它們可以是大小為當前塊b的一半,或者以其他方式與當前塊b的大小相關。在任何情況下,例如,在塊r0和r1內具有最小的預測塊大小像素的每個子塊可以為了候選運動矢量而被掃描通過。例如,最小的預測塊大小可以是8x8或者4x4。塊r2希望地是最小的預測塊大小以最小化搜索,并且因為更遠的塊很可能提供更不相關的信息。如果塊r2是最小的預測塊大小,塊r2將僅僅具有一個運動矢量(或者在合并預測中兩個)。在一個實施例中,塊r2可以在大小方面是較大的。
在最后的幀中搜索運動矢量是使用來自并置塊r3,和相鄰于底端行(塊r6、r7)、最右列(r4),或者兩者(r5)的附加的參考塊r4、r5、r6和r7的運動信息進行的。也就是說,它們每個緊鄰于(例如,與其接觸)的并置塊的角部。如提及的,并置塊r3具有與當前塊相同的大小。在并置塊r3內具有最小的預測塊大小的每個子塊可以被掃描或者搜索候選運動矢量。在示出的示例中,不考慮當前塊b的大小,附加的參考塊r4、r5、r6和r7分別地具有最小的預測塊大小,但是這不是需要的。
現(xiàn)在返回到圖6,一旦在602處獲得參考運動矢量,它們可以在604處被按照距相應參考塊的距離和其與當前塊的重疊長度排名。換言之,過程600可以對于每個候選運動矢量確定在當前塊和與候選運動矢量相關聯(lián)的先前編碼塊之間的距離。來自到當前塊的最靠近的行和列邊緣和右上角落的運動矢量與當前塊接觸,并且可以被認為是更加相關的,從而排名高于那些遠離的。距離可用于將運動矢量分組為類別。例如,并且參考圖7,如果有的話,來自參考塊r0和r1的子塊的任何運動矢量和來自參考塊r2的運動矢量可以被認為是類別1候選運動矢量,而來自塊r3至r7和來自參考塊r0和r1的任何其它的子塊的剩余的候選運動矢量被認為是類別2候選運動矢量。在這種情況下,類別1候選運動矢量將采用比類別2候選運動矢量更高的優(yōu)先級。距離可以另外或者做為選擇包括計算在參考塊和/或參考塊的子塊中的每個與當前塊的中心之間的直線距離。在參考塊和當前塊之間的距離可以基于以像素為單位測量的、在先前編碼塊中的像素和在當前塊中的并置像素之間的空間位移。在后面這些示例中,甚至當考慮流行性值時,并置塊可以排名為比在當前幀中的參考塊更高(例如,因為差值/位移是零)?;诰嚯x分組和/或排名運動矢量的其它的方法是可能的。
當運動矢量通過類別分組時,在每個類別內,運動矢量可以按照在搜索區(qū)域(例如,至少一些參考塊的先前編碼的像素)內使用每個運動矢量像素的數(shù)目排名。例如,過程600可以在606處基于與特定的候選運動矢量相關聯(lián)的先前編碼的像素值確定流行性值。與候選運動矢量相關聯(lián)的先前編碼的像素值的數(shù)目越大,候選運動矢量的流行性值越高。流行性值可以是像素的原始數(shù)目(rawnumber),或者例如在全部或者一些參考塊內的像素總數(shù)的百分比。
這可以參考圖7的示例描述,假設每個包括32x32像素的當前塊b和并置塊r3,參考塊r0和參考塊r1分別地包括32x16和16x32像素,并且參考塊r2和r4-r7每個包括8x8像素,其也對應于最小的預測塊大小。在這種情況下,可能存在高達九個與參考幀相關聯(lián)并且分配給類別1的運動矢量候選:來自相鄰于當前塊b的參考塊r0和r1的8x8子塊的各四個,以及來自8x8參考塊r2的一個??赡艽嬖诟哌_二十八個與參考幀相關聯(lián)并且分配給類別2的運動矢量:來自參考塊r0和r1的剩余的8x8子塊的各四個、來自并置塊r3的十六個、和來自附加的四個8x8參考塊r4-r7的各一個。在現(xiàn)實中,運動矢量通常被重新使用。在所有識別的那些候選運動矢量中,在類別內的特殊運動矢量中的每個被流行性值表征,該流行性值與使用該運動矢量的8x8像素(也就是說,64個像素)的組中的每個對應。在評價在602處識別的運動矢量是否是特殊的時,運動矢量不必與另一個相同??梢允褂梅秶员闾峁┱撟C足夠變化有用的運動矢量候選列表。也就是說,如果與已經(jīng)在類別中的運動矢量候選的變化不足夠,諸如,變化10%,或者某些其它變量,運動矢量可以在類別內省略。在這個實施例中,運動矢量通過類別排名,然后在該類別內排名,但是這不是需要的。運動矢量候選可以基于流行性值被分組在一起用于排名。
參考運動矢量候選列表可以對于與先前編碼塊或者子塊相關聯(lián)的每個特殊參考幀如描述地構成。例如,三個參考幀可對于如上所述的每個幀——最后的幀、替換參考幀,和黃金參考幀可用。在這種情況下,單獨的參考運動矢量候選列表可以使用具有指向最后的幀、替換參考幀和黃金參考幀中的每個的運動矢量的先前編碼塊或者子塊構成。對于每個幀更新最后的幀,并且替換參考幀和黃金參考幀可以較不頻繁地更新。
在某些實施例中,當構成參考運動矢量候選列表時,執(zhí)行運動矢量縮放。運動矢量縮放可以在606處作為流行性值確定的一部分進行,或者可以在過程600中的其它的點上進行。運動矢量縮放調整運動矢量的幅值以考慮在視頻流內的幀序列內,相對于所考慮的幀,在參考幀之間的時間差。例如,并且再次參考圖7,參考塊r2使用最后的幀——其是幀n-1——用于幀間預測,而參考塊r4使用最后的幀——其是在幀n-1(或者幀n-2,未示出)之前的幀——用于幀間預測。在每個塊r2和r4設置其中的幀(分別地,幀n和幀n-1)和相應的參考幀(分別地,幀n-1和幀n-2)之間的時間差是一個幀,因此,指示無縮放。相比之下,如果參考塊r2和r4兩者使用黃金參考幀,如果黃金參考幀是不變的,在幀n和黃金參考幀之間,和在幀n-1和黃金參考幀之間的時間差是不同的。候選運動矢量可以通過放大與較短的時間差相關聯(lián)的運動矢量的幅值,或者縮小與較長的時間差相關聯(lián)的運動矢量的幅值產(chǎn)生,使得運動矢量共享通用的基礎。用于縮放的因子可以基于由時間差形成的比。
運動矢量縮放也可以在為所有參考幀準備僅一個參考運動矢量候選列表,而不是為每個參考幀準備單獨的列表的實施例中使用。參考幀可以在視頻序列中設置或者在當前幀之前或者之后。在某些實施例中,運動矢量縮放被省略。
迄今地,候選列表結構用于單個參考模式,這里一個參考幀(并且因此,典型地,與一個參考幀相關聯(lián)的一個運動矢量)用于幀間預測。但是,有時候,可以從兩個或更多個參考幀預測一個塊,這里像素值是由相應的運動矢量產(chǎn)生的每個幀內來自預測塊的像素值的組合。當考慮復合參考模式用于當前塊的預測時,該列表通過首先尋找為其參考運動矢量共享相同的復合參考幀(即,相同的參考幀的組合)的相鄰塊構成。較高的優(yōu)先級被分配給來自如考慮當前塊一樣共享參考幀的組合的相鄰參考塊的候選運動矢量。運動矢量也可以從最高的到最低的流行性值排名。如果產(chǎn)生的候選列表具有比限定數(shù)目更短的長度,諸如兩個,該列表可以附加以如上所述識別和排名的單個參考幀的參考運動矢量的組合。例如,如果正在考慮使用最后的幀和替換參考幀的復合參考模式,參考最后的幀或者替換參考幀對參考塊搜索運動矢量參考,其然后被基于流行性值如論述地排名。
再次參考圖6,并且如以上解釋的,在608處流行性值的確定包括使用流行性值排名運動矢量。其還可以包括基于該排名向幀間編碼(或者幀間預測)模式分配運動矢量。最流行的運動矢量可以被選擇用于包括新運動矢量的差分編碼的幀間預測模式。這可以稱為newmv模式。然后,按照該排名結果,剩余的運動矢量可以分配給其它的參考矢量運動模式。在某些實施例中,refmv模式是動態(tài)參考運動矢量編碼模式,其包括現(xiàn)有的運動矢量被重新使用的至少兩個模式。在一個示例中,這兩個幀間預測模式是nearestmv模式和nearmv模式。在該排名中在分配給newmv模式的運動矢量之后的下一個運動矢量(即,具有第二高的流行性值的運動矢量)被分配給nearestmv模式,并且在其后的下一個運動矢量(即,具有第三高的流行性值的運動矢量)被分配給nearmv模式。如果用于特定的參考幀的候選參考運動矢量列表比兩個更長,參考運動矢量模式的數(shù)目可以擴展以適應在該列表中剩余的項目。另一個可用的幀間預測模式可以是zeromv模式,其指的是不存在運動。
在608處,幀間預測模式被選擇用于當前塊。這可以包括測試幀間預測模式的每個,并且選擇導致當前塊的最有效編碼的幀間預測模式。例如,過程600可以是用于選擇供要編碼的當前塊的幀間預測模式的率失真環(huán)的一部分。作為率失真環(huán)的一部分,用于當前塊的幀間預測的實際運動矢量可以按照許多的運動搜索技術經(jīng)由運動搜索確定。對于每個參考幀,參考運動矢量的一個用途可以包括基于實際運動矢量很可能接近于用于參考幀的高排名運動矢量的理由,使用分配給newmv模式,或者其它的識別的候選運動矢量的參考運動矢量作為用于運動搜索算法的開始參數(shù)。在復合預測模式中參考幀的組合可以使用來自候選列表的運動矢量,特別地,對于參考幀的每個具有最高排名的那些類似地搜索。
做為選擇,運動搜索可以無需使用來自候選列表的運動矢量執(zhí)行。無論是否在運動搜索中使用參考運動矢量,可以測試各種各樣的幀間預測模式。在一個實施例中,窮舉的運動搜索使用單個或者復合模式(即,使用三個參考幀和參考幀的組合中的每個)嘗試可用的幀間預測模式的每個。對于每個提出的運動矢量和對于每個測試幀間預測模式,計算使用幀間預測模式編碼當前塊的位成本(也稱作速率)和在原始值和重建的值(也稱作失真)之間的像素值中產(chǎn)生的誤差,位成本包括信令通知幀間預測模式、參考幀、從當前塊產(chǎn)生的殘差塊需要的位,以及如果需要的話,一個或多個運動矢量或者運動矢量差分。導致最低的率失真值(也稱作比)的幀間預測模式和參考幀可以在608處被選擇為用于當前塊的幀間預測模式。
窮舉搜索不需要執(zhí)行。各種各樣的技術可用于減小計算的負擔。例如,用于在該幀中相鄰塊的幀間預測模式可以被首先測試,然后僅僅某些幀間預測模式可以被測試以看看是否導致改善的率失真比。此外,運動搜索可適用于幀間預測。率失真環(huán)可以包括對于各種各樣幀內預測模式的測試,或者單獨的率失真環(huán)可用于從可用的幀內預測模式中選擇最有效幀內預測模式。然后,最有效幀間預測模式和最有效幀內預測模式被比較以選擇用于該塊的預測模式。
在這里假設在608處選擇的幀間預測模式比可用的幀內預測模式更好,在610處使用幀間預測模式編碼當前塊。例如,如果newmv模式用于編碼當前塊,預測的塊使用來自運動搜索的實際運動矢量和選擇的參考幀產(chǎn)生。然后,在當前塊和預測的塊之間的殘差如參考圖4描述地產(chǎn)生和編碼。通過該排名分配給newmv模式的運動矢量可用于差分地編碼實際運動矢量。例如,差值或者殘差可以通過從用于編碼該當前塊的運動矢量減去參考運動矢量計算。該差值可以被編碼和包括在視頻流中。此外,表示參考幀和使用的newmv模式的位可以在塊頭部和/或在幀或者片頭中表示。
在具有單個參考幀的另一個示例中,在運動矢量中的運動搜索結果等于或者在有關分配給參考運動矢量模式的參考運動矢量的一個的值范圍內。在這種情況下,指示refmv幀間預測模式。在這個示例中,如果由搜索產(chǎn)生的運動矢量等于或者在有關分配給nearmv模式的參考運動矢量的值范圍內,預測的塊被使用分配給nearmv模式的參考運動矢量和選擇的參考幀產(chǎn)生。然后,在當前塊和預測的塊之間的殘差被如參考圖4描述的產(chǎn)生和編碼。此外,表示參考幀和refmv模式,并且特別地nearmv模式被使用的位可以在塊頭部和/或在幀或者片頭中表示。
如果在608處選擇了,剩余的幀間預測模式可以類似地用于編碼當前塊,或者編碼在視頻序列內幀的其它的塊。圖6的過程600可以根據(jù)需要重復。
如相對于圖4的編碼器400的操作提及的,編碼當前塊可以包括熵編碼。熵編碼幀間預測模式可以被修改以考慮新的動態(tài)的參考運動矢量模式。采用對應于新的運動矢量、零運動矢量和動態(tài)的參考運動矢量模式的三個幀間預測模式,在這個示例中,分別地newmv模式、zeromv模式和refmv模式,熵編碼從newmv模式開始。也就是說,假設當前塊被使用newmv模式編碼,概率模型可以按照兩個場境選擇:1)找到多少參考運動矢量;和2)如果找到具有匹配的參考幀的相鄰塊,它們可能將如何以newmv模式編碼。
如果下一個編碼模式不是newmv模式,如果下一個編碼模式是zeromv模式,編碼繼續(xù)。在這種情況下,概率模型可以按照兩個場境選擇:1)如果在最后的(或者先前的)幀中的并置塊使用零運動矢量,或者接近于零運動矢量(即,在兩個行和列分量中小于一個全像素);和2)是否(和可能地多少)在當前幀內的空間相鄰塊使用零運動矢量,或者接近于零運動矢量。
如果代替地,下一個編碼模式不是zeromv模式(即,是由refmv模式表示的動態(tài)的參考運動矢量模式),如以上的討論地在參考運動矢量之間進行判定。相關的場境是多少參考運動矢量被檢查進候選列表,并且當可用時,其加權系數(shù)被在復合預測中使用。
圖8是按照本公開的實施例用于使用參考運動矢量解碼編碼的視頻流過程800的流程圖。過程800可以例如作為可以由計算設備,諸如發(fā)送站102或者接收站106執(zhí)行的軟件程序實現(xiàn)。例如,軟件程序可以包括機器可讀的指令,其可以存儲在存儲器,諸如存儲器204或者214中,并且當由處理器,諸如cpu202執(zhí)行時,可以使得計算設備執(zhí)行過程800。過程800可以使用專用的硬件或者固件實現(xiàn)。如以上解釋的,某些計算設備可以具有多個存儲器或者處理器,并且在過程800中描述的操作可以使用多個處理器、存儲器或者兩者分布。
為解釋的簡單起見,過程800被作為一系列的步驟或者操作描繪和描述。但是,按照本公開的步驟或操作可以以各種各樣的順序和/或同時發(fā)生。另外,可以使用不存在和在此處描述的其它的步驟或者操作。此外,可以不需要實現(xiàn)按照本公開的主題方法的所有圖示的步驟或者操作。
在802處,解碼器確定使用單個預測還是復合預測編碼當前塊。這個信息可以通過讀取和解碼來自編碼的視頻位流的、指示一個或多個運動矢量被用于編碼當前塊的位通信。編碼的位流(或者編碼的視頻數(shù)據(jù))可以由計算設備的解碼器以許多的方法接收,諸如,通過經(jīng)網(wǎng)絡、經(jīng)電纜接收視頻數(shù)據(jù),或者通過從主存儲器或者其它的存儲設備讀取視頻數(shù)據(jù),包括磁盤驅動器或者可移除介質,諸如dvd、緊湊的閃存(cf)卡、安全數(shù)字(sd)卡,或者能夠交換視頻流的任何其它的設備。這個信息例如可以包括在與當前塊相關聯(lián)的頭部,或者幀頭部中。這個解釋假設當前塊是幀間預測。否則,參考幀沒有編碼到與當前塊結合的位流,并且當前塊被幀內預測。
已知參考幀,候選運動矢量可以以如參考圖6的過程600描述的類似的方式排名。也就是說,編碼器和解碼器可以共享關于參考運動矢量候選列表的產(chǎn)生的規(guī)則,使得接收與哪個幀間預測模式用于編碼當前塊(例如,newmv、nearestmv、nearmv等等)相關的頭部信息的解碼器能夠識別由編碼器使用的相同的參考運動矢量。首先,候選運動矢量可以在804處,以與它們在過程600中在602處識別類似的方式從先前編碼塊識別。雖然過程600可以使用所有可用的參考幀和參考幀組合識別用于排名的候選運動矢量,以便選擇幀間預測模式,該過程800只須排名那些用于實際地編碼該塊的參考幀的候選運動矢量。
在804處識別候選運動矢量之后,它們在806和808處被排名。更具體地說,排名候選運動矢量包括在806處對于每個候選運動矢量確定在作為運動矢量來源的先前編碼塊和當前塊之間的距離。這涉及與相對于如上所述的在過程600中在604處的確定相同的操作。這個操作的結果是在一個實施例中由距離分組的候選運動矢量列表。然后,在804處從先前編碼塊確定用于候選運動矢量的相應的流行性值被與在過程600中在606處的確定相同執(zhí)行。這個操作的結果是用于在當前塊的預測中使用的單個參考幀或者組合的參考幀的候選運動矢量的排名的列表。在一個實施例中,最高排名的(例如,最可能的)運動矢量被分配給newmv模式,并且在該排名中的接下來的兩個運動矢量被分別地分配給動態(tài)參考運動矢量(refmv)模式的nearestmv和nearmv參考運動矢量模式。更進一步參考運動矢量此后被依次分配。
在810處,識別用于編碼當前塊的幀間預測模式。在一個實施例中,幀間預測模式通過解碼包括在識別幀間預測模式的位流內的位識別。例如,幀間預測模式可以是新的運動矢量模式、零運動矢量模式,或者動態(tài)的參考運動矢量模式。如果幀間預測模式是動態(tài)參考運動矢量模式,使用的特定的參考運動矢量模式可以例如,從在該位流中包括在頭部內的位類似地確定。
在812處,在810處識別的幀間預測模式用于在812處解碼當前塊,諸如經(jīng)由參考圖5描述的解碼過程。當幀間預測模式涉及差分地編碼的運動矢量時,例如,參考運動矢量可用于解碼用于預測該當前塊的運動矢量。做為選擇,幀間預測模式可以通過參考該列表指示運動矢量。不考慮一個或多個運動矢量的來源,預測塊被使用運動矢量產(chǎn)生,并且被添加到用于從位流解碼的當前塊的殘差。
過程800可以被對于使用幀間預測編碼的每個塊重復以產(chǎn)生重建的塊。使用重建的塊和使用幀內預測重建的那些來重建該幀。通過解碼多個幀,輸出視頻流,諸如在圖5中示出的輸出視頻流516可以被重建。
在用于refmv模式的位流內語法的使用建議有效的運動矢量來自于參考相鄰塊的編碼信息。給定參考幀,這樣的可能的參考運動矢量候選的列表被按照其與當前塊的相對距離及其相對用途排名。這個技術推廣refmv模式(例如,nearestmv和nearmv),并且改善熵編碼的效率。此外,附加的運動矢量候選可能導致進一步壓縮增益。
如上所述的編碼和解碼的方面圖示某些編碼和解碼技術。但是,應該理解,如在權利要求中使用的那些術語的編碼和解碼可以指的是壓縮、解壓縮、變換,或者數(shù)據(jù)的任何其它的處理或者變化。
在此處使用的措詞“示例”、“方面”或者“實施例”指的是起示例、例子或者圖例的作用。在此處描述的作為使用這些措詞的一個或多個的任何方面或者設計不必然地認為是對其它的方面或者設計優(yōu)選的或者有益的。更合適地,措詞“示例”、“方面”、或者“實施例”的使用意欲以具體的方式呈現(xiàn)概念。如在本申請中使用的,術語“或者”意欲指的是相容的“或者”,而不是排它的“或者”。也就是說,除非另外指定的,或者從場境中清楚的,“x包括a或者b”意欲指的是任何自然相容的置換。也就是說,如果x包括a,x包括b,或者x包括a和b兩者,那么,“x包括a或者b”在先前的例子的任何一個之下滿足。此外,如在本申請和所附的權利要求中使用的冠詞“一”和“一個”除非另外指定,將通常解釋為指的是“一個或多個”,或者從場境中清楚的是直接為單個形式。另外,術語“一個實施例”或者“一個執(zhí)行過程”的使用自始至終不意欲指的是相同的實施例、方面或者執(zhí)行過程,除非照此描述的。
發(fā)送站102和/或接收站106的實施例(并且存儲在其上的算法、方法、指令等等,和/或從而包括由編碼器400和解碼器500執(zhí)行的)可以以硬件、軟件或者其任何組合實現(xiàn)。該硬件例如可以包括計算機、知識產(chǎn)權(ip)核心、專用集成電路(asic)、可編程邏輯陣列、光學處理器、可編程序邏輯控制器、微碼、微控制器、服務器、微處理器、數(shù)字信號處理器,或者任何其它適宜的電路。在權利要求中,該術語“處理器”應該理解為包含任何先前的硬件,或者單獨地或者以其組合。術語“信號”和“數(shù)據(jù)”可互換地使用。此外,發(fā)送站102和接收站106的一部分不必然地以相同的方式實現(xiàn)。
此外,在一個方面中,例如,發(fā)送站102或者接收站106可以使用具有計算機程序的通用計算機或者通用的處理器實現(xiàn),當執(zhí)行時,該計算機程序執(zhí)行在此處描述的任何相應的方法、算法和/或指令。此外,或者做為選擇,例如專用計算機/處理器可以使用,其可以包含用于執(zhí)行在此處描述的任何方法、算法或者指令的其它的硬件。
發(fā)送站102和接收站106例如可以在視頻會議系統(tǒng)中在計算機上實現(xiàn)。做為選擇,發(fā)送站102可以在服務器上實現(xiàn),并且接收站106可以在與服務器分離的設備,諸如手持通信設備上實現(xiàn)。在這種情況下,發(fā)送站102可以使用編碼器400將內容編碼為編碼的視頻信號,并且將編碼的視頻信號發(fā)送給通信設備。隨后,通信設備然后可以使用解碼器500解碼編碼的視頻信號。做為選擇,通信設備可以解碼在通信設備上本地存儲的內容,例如,未由發(fā)送站102發(fā)送的內容。其它的發(fā)送站102和接收站106實施方案是可用的。例如,接收站106可以是通常固定的個人計算機,而不是便攜式通信設備,和/或包括編碼器400的設備也可以包括解碼器500。
此外,本公開的實施例的全部或者一部分可以采取例如從有形的計算機可使用的可訪問的計算機程序產(chǎn)品或者計算機可讀的介質的形式。計算機可使用的或者計算機可讀的介質可以是例如可以可觸摸的包含、存儲、交換,或者傳輸供由或者與任何處理器結合使用的程序的任何設備。該介質例如可以是電子、磁性、光學、電磁或者半導體器件。其他適宜的介質也是可用的。
以上描述的實施例、執(zhí)行過程和方面已經(jīng)描述以便允許容易理解本公開,并且不限制本公開。相反地,本公開意欲覆蓋包括在所附的權利要求的范圍內的各種各樣的修改和等效方案,其范圍將賦予最寬的解釋,以便包含如在法律之下允許的所有這樣的修改和等效結構。