本公開總體上涉及了編碼和解碼視頻數(shù)據(jù),更特別地,涉及使用參考運(yùn)動(dòng)矢量進(jìn)行視頻編碼。
背景技術(shù):
數(shù)字視頻流可代表使用幀或靜止圖像的序列的視頻。數(shù)字視頻可用于各種應(yīng)用,包括例如視頻會(huì)議、高清視頻娛樂、視頻廣告、或共享由用戶生成的視頻。數(shù)字視頻流可包含大量數(shù)據(jù)并且為了處理、發(fā)送或存儲(chǔ)視頻數(shù)據(jù),消耗了計(jì)算裝置的大量計(jì)算或通信資源。各種方法已經(jīng)推薦了減少視頻流中的數(shù)據(jù)量,包括壓縮和其他編碼技術(shù)。
技術(shù)實(shí)現(xiàn)要素:
這里教導(dǎo)的一方面是一種對(duì)視頻位流進(jìn)行解碼的方法。所述方法包括:針對(duì)所述視頻位流的當(dāng)前塊,從不同數(shù)量的候選參考運(yùn)動(dòng)矢量中確定參考運(yùn)動(dòng)矢量,其中,所述參考運(yùn)動(dòng)矢量與參考?jí)K關(guān)聯(lián)并且包括預(yù)測(cè)部分和殘留部分;通過用一個(gè)或多個(gè)閾值評(píng)價(jià)所述參考運(yùn)動(dòng)矢量的所述殘留部分來為所述當(dāng)前塊選擇概率場(chǎng)境模型;以及針對(duì)使用處理器的所述當(dāng)前塊,使用所述概率場(chǎng)境模型對(duì)與所述當(dāng)前塊關(guān)聯(lián)的運(yùn)動(dòng)矢量殘留進(jìn)行熵解碼。
這里教導(dǎo)的另一方面是一種編碼視頻流的方法。所述方法包括:針對(duì)所述視頻流的當(dāng)前塊,從不同數(shù)量的候選參考運(yùn)動(dòng)矢量中選擇參考運(yùn)動(dòng)矢量,其中,所述參考運(yùn)動(dòng)矢量與參考?jí)K關(guān)聯(lián)并且包括預(yù)測(cè)部分和殘留部分;通過用一個(gè)或多個(gè)閾值評(píng)價(jià)所述參考運(yùn)動(dòng)矢量的所述殘留部分來為所述當(dāng)前塊選擇概率場(chǎng)境模型;以及針對(duì)使用處理器的所述當(dāng)前塊,使用所述概率場(chǎng)境模型對(duì)與所述當(dāng)前塊關(guān)聯(lián)的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。
本文中的教導(dǎo)的另一方面是一種對(duì)視頻位流解碼的設(shè)備。所述設(shè)備包括:存儲(chǔ)器;以及處理器,其被配置成執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的指令以:針對(duì)所述視頻位流的當(dāng)前塊,從不同數(shù)量的候選參考運(yùn)動(dòng)矢量中確定參考運(yùn)動(dòng)矢量,其中,所述參考運(yùn)動(dòng)矢量與參考?jí)K關(guān)聯(lián)并且包括預(yù)測(cè)部分和殘留部分;通過用一個(gè)或多個(gè)閾值評(píng)價(jià)所述參考運(yùn)動(dòng)矢量的所述殘留部分來為所述當(dāng)前塊選擇概率場(chǎng)境模型;以及針對(duì)使用處理器的所述當(dāng)前塊,使用所述概率場(chǎng)境模型對(duì)與所述當(dāng)前塊關(guān)聯(lián)的運(yùn)動(dòng)矢量殘留進(jìn)行熵解碼。
下文中,將額外詳細(xì)地描述本公開的這些和其他方面的變形形式。
附圖說明
這里的描述參考了附圖,其中,在數(shù)個(gè)視圖中,類似的附圖標(biāo)記始終表示類似的部件,除非另外指明。
圖1是根據(jù)本公開的實(shí)施方式的視頻編碼和解碼系統(tǒng)的示意圖。
圖2是根據(jù)本公開的實(shí)施方式的將被編碼和解碼的示例視頻流的示圖。
圖3是根據(jù)本公開的實(shí)施方式的編碼器的框圖。
圖4是根據(jù)本公開的實(shí)施方式的解碼器的框圖。
圖5是根據(jù)本公開的實(shí)施方式的使用參考運(yùn)動(dòng)矢量來編碼視頻流的運(yùn)動(dòng)矢量的示例過程的流程圖。
圖6是根據(jù)本公開的實(shí)施方式的使用參考運(yùn)動(dòng)矢量來解碼視頻流的運(yùn)動(dòng)矢量的示例過程的流程圖。
圖7是包括用于說明圖5和圖6的過程的當(dāng)前框的示例框架的示圖。
圖8是用于說明圖5和圖6的過程的示例概率場(chǎng)境模型的示圖。
圖9是可實(shí)現(xiàn)發(fā)送站或接收站的計(jì)算裝置的示例的框圖。
具體實(shí)施方式
與編碼視頻流相關(guān)的壓縮方案可包括將各圖像分成塊并且使用一種或更多種技術(shù)來生成數(shù)字視頻輸出位流以限制輸出中包括的信息。可將接收到的位流解碼,以用有限的信息重新形成塊和源圖像。編碼視頻流或諸如幀或塊的其一部分可包括使用視頻流中的時(shí)間和空間相似性來提高編碼效率。例如,可通過基于先前編碼的塊來預(yù)測(cè)當(dāng)前塊的運(yùn)動(dòng)和顏色信息并且識(shí)別預(yù)測(cè)值和當(dāng)前塊之間的差異(殘留),基于視頻流中的先前編碼塊對(duì)視頻流的當(dāng)前塊進(jìn)行編碼。以此方式,只需要在位流中添加殘留和用于產(chǎn)生殘留的參數(shù),而非包括當(dāng)前塊的全部。這種技術(shù)可被稱為幀間預(yù)測(cè)。
幀間預(yù)測(cè)的參數(shù)之一是運(yùn)動(dòng)矢量,運(yùn)動(dòng)矢量代表先前編碼塊相對(duì)于當(dāng)前塊的空間位移??墒褂弥T如運(yùn)動(dòng)搜索的運(yùn)動(dòng)估計(jì)的方法來識(shí)別運(yùn)動(dòng)矢量。在運(yùn)動(dòng)搜索中,參考幀的一部分可被轉(zhuǎn)換成形成預(yù)測(cè)塊的一系列位置,可從當(dāng)前幀的一部分中減去這些位置,以形成一連串殘留??蛇x擇與具有最小殘留的位置對(duì)應(yīng)的x和y平移作為運(yùn)動(dòng)矢量。代表運(yùn)動(dòng)矢量的位可被包括在編碼位流中,以允許解碼器再現(xiàn)預(yù)測(cè)塊并且解碼編碼視頻位流的與運(yùn)動(dòng)矢量關(guān)聯(lián)的部分。
對(duì)于視頻壓縮方案,運(yùn)動(dòng)矢量的編碼經(jīng)常消耗整體碼率中的很大比例,尤其是對(duì)于以較低數(shù)據(jù)速率或較高壓縮比率編碼的視頻流。為了提高編碼效率,可使用參考運(yùn)動(dòng)矢量以不同方式編碼運(yùn)動(dòng)矢量,即,僅編碼運(yùn)動(dòng)矢量和參考運(yùn)動(dòng)矢量之間的差異(殘留)。在一些情形下,可從視頻流中的先前使用的運(yùn)動(dòng)矢量(例如,來自相鄰塊的最后一個(gè)非零運(yùn)動(dòng)矢量)中選擇參考運(yùn)動(dòng)量。選擇先前使用的運(yùn)動(dòng)矢量來編碼當(dāng)前運(yùn)動(dòng)矢量還可減少編碼視頻位流中包括的位數(shù),由此減少發(fā)送和存儲(chǔ)帶寬的需要。運(yùn)動(dòng)矢量參考模式允許編碼塊來推導(dǎo)來自先前編碼的相鄰塊的運(yùn)動(dòng)信息。
根據(jù)本公開的實(shí)施方式,對(duì)于視頻位流的塊,可從變化(動(dòng)態(tài)可調(diào))數(shù)量的候選參考運(yùn)動(dòng)矢量中選擇參考運(yùn)動(dòng)矢量。候選參考運(yùn)動(dòng)矢量可包括諸如先前被編碼(或解碼)的幀中的塊或先前已經(jīng)被編碼(或解碼)的同一幀中的塊的、來自視頻流中的任何先前被編碼(或解碼)塊的運(yùn)動(dòng)矢量。候選參考?jí)K可包括(當(dāng)前塊的)共同位置塊和在其周圍的參考幀中的塊。例如,周圍塊可包括朝向共同位置塊的右方、左下、右下、或下方的塊。可使用一個(gè)或多個(gè)候選參考幀,包括單個(gè)和復(fù)合參考幀。通過數(shù)量動(dòng)態(tài)可調(diào)節(jié)的候選參考幀和/或候選參考?jí)K,允許編解碼器適于變形形式,并且基于指示物(諸如,各個(gè)個(gè)體塊及其周圍的運(yùn)動(dòng)特性)來調(diào)節(jié)候選項(xiàng)的數(shù)量,從而可提高編碼效率。
如這里使用的,術(shù)語“概率場(chǎng)境模型”指的是根據(jù)如這里描述的場(chǎng)境選擇或者基于如這里描述的場(chǎng)境識(shí)別的概率模型。根據(jù)實(shí)施方式,可使用概率場(chǎng)境模型針對(duì)當(dāng)前塊對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。可使用諸如塊的相鄰塊中的先前編碼的運(yùn)動(dòng)矢量殘留的場(chǎng)境來選擇概率場(chǎng)境模型,從而可提供額外的碼率節(jié)省。用于運(yùn)動(dòng)矢量的熵編碼的場(chǎng)境可以是基于例如參考?jí)K的運(yùn)動(dòng)矢量殘留所指示的運(yùn)動(dòng)強(qiáng)度。例如,當(dāng)用小運(yùn)動(dòng)矢量殘留(例如,低于某個(gè)閾值)來編碼所選擇的參考?jí)K時(shí),好跡象是當(dāng)前塊可具有相對(duì)小的運(yùn)動(dòng)矢量殘留。為了從用于編碼運(yùn)動(dòng)矢量殘留的多個(gè)概率場(chǎng)境模型中選擇概率場(chǎng)境模型,可將參考運(yùn)動(dòng)矢量的殘留的大小與一個(gè)或多個(gè)閾值進(jìn)行比較,以確定當(dāng)前塊的運(yùn)動(dòng)強(qiáng)度的指示。概率場(chǎng)境模型可包括預(yù)定的概率分布并且基于實(shí)際編碼(解碼)值進(jìn)行更新。
基于所選擇的概率場(chǎng)境模型,可使用運(yùn)動(dòng)矢量殘留的大小來確定用于運(yùn)動(dòng)矢量殘留的熵編碼(或解碼)的概率值。熵編碼可使用諸如算術(shù)編碼的技術(shù)。
可基于參考?jí)K和當(dāng)前塊之間的距離和參考運(yùn)動(dòng)矢量的流行度(popularity),從候選參考運(yùn)動(dòng)矢量中選擇參考運(yùn)動(dòng)矢量。例如,參考運(yùn)動(dòng)矢量和當(dāng)前塊之間的距離可以是基于以像素為單元測(cè)得的、先前編碼塊中的像素和當(dāng)前塊中的共同位置像素之間的空間位移。例如,運(yùn)動(dòng)矢量的流行度可以是基于使用該運(yùn)動(dòng)矢量的先前編碼像素的量。使用該運(yùn)動(dòng)矢量的先前編碼像素越多,該運(yùn)動(dòng)矢量的流行度越高。在一個(gè)示例中,流行度值是使用運(yùn)動(dòng)矢量的先前編碼像素的數(shù)量。在另一個(gè)示例中,流行度值是使用運(yùn)動(dòng)矢量的區(qū)域內(nèi)的先前編碼像素的百分比。
根據(jù)本文中的教導(dǎo),可選擇參考運(yùn)動(dòng)矢量來減少編碼通過例如運(yùn)動(dòng)搜索技術(shù)所確定的運(yùn)動(dòng)矢量所需的位的數(shù)量。本文中的教導(dǎo)利用時(shí)間運(yùn)動(dòng)連續(xù)來減少通過參考相鄰和非相鄰視頻幀中的運(yùn)動(dòng)矢量發(fā)送運(yùn)動(dòng)矢量信息所需的位數(shù)。在一些實(shí)施方式中,解碼器可用編碼器具有的所有信息來選擇參考運(yùn)動(dòng)矢量,從而允許選擇參考運(yùn)動(dòng)矢量,而不用明確傳送其他信息。編碼運(yùn)動(dòng)矢量殘留可被包括在編碼位流中,以允許解碼器再現(xiàn)預(yù)測(cè)塊并且對(duì)編碼視頻位流的與運(yùn)動(dòng)矢量關(guān)聯(lián)的一部分解碼。在本文中,在首先描述了可用于實(shí)現(xiàn)本公開的環(huán)境之后,描述其他細(xì)節(jié)。
圖1是可實(shí)現(xiàn)本公開的一些方面的視頻編碼和解碼系統(tǒng)100的示意圖。發(fā)送站102可以是例如計(jì)算機(jī),具有包括諸如中央處理單元(cpu)104的處理器和存儲(chǔ)器106的內(nèi)部硬件配置。cpu104是用于控制發(fā)送站102的操作的控制器。cpu104可通過例如存儲(chǔ)器總線連接到存儲(chǔ)器106。存儲(chǔ)器106可以是只讀存儲(chǔ)器(rom)、隨機(jī)存取存儲(chǔ)器(ram)或任何其他合適的存儲(chǔ)器裝置。存儲(chǔ)器106可存儲(chǔ)供cpu104使用的數(shù)據(jù)和程序指令。發(fā)送站102的其他合適實(shí)施方式是可能的。例如,發(fā)送站102的處理可分布于多個(gè)裝置。
網(wǎng)絡(luò)108連接用于編碼和解碼視頻流的發(fā)送站102和接收站110。具體地,視頻流可在發(fā)送站102中被編碼并且編碼后的視頻流可在接收站110中被解碼。網(wǎng)絡(luò)108可以是例如互聯(lián)網(wǎng)。網(wǎng)絡(luò)108還可以是局域網(wǎng)(lan)、廣域網(wǎng)(wa)、虛擬私有網(wǎng)(vpn)、蜂窩電話網(wǎng)絡(luò)或?qū)⒁曨l流從發(fā)送站102傳送到(在這個(gè)示例中)接收站110的任何其他裝置。
在一個(gè)示例中,接收站110可以是計(jì)算機(jī),具有包括諸如cpu112的處理器和存儲(chǔ)器114的內(nèi)部硬件配置。cpu112是用于控制接收站110的操作的控制器。cpu112可通過例如存儲(chǔ)器總線連接到存儲(chǔ)器114。存儲(chǔ)器114可以是rom、ram或任何其他合適的存儲(chǔ)器裝置。存儲(chǔ)器114可存儲(chǔ)供cpu112使用的數(shù)據(jù)和程序指令。接收站110的其他合適實(shí)施方式是可能的。例如,接收站110的處理可分布于多個(gè)裝置。
被配置成顯示視頻流的顯示器116可連接到接收站110。可以以各種方式實(shí)現(xiàn)顯示器116,包括液晶顯示器(lcd)、陰極射線管(crt)、或發(fā)光二極管顯示器(led)(諸如,有機(jī)發(fā)光二極管顯示器(oled))。顯示器116聯(lián)接到cpu112并且可被配置成顯示在接收站110中被解碼的視頻流的呈現(xiàn)118。
編碼器和解碼器系統(tǒng)100的其他實(shí)施方式也是可能的。例如,實(shí)施方式可省略網(wǎng)絡(luò)108和/或顯示器116。在另一個(gè)實(shí)施方式中,視頻流可被編碼,然后被存儲(chǔ),以后續(xù)由發(fā)送站102或具有存儲(chǔ)器的任何其他裝置來發(fā)送。接收站110可接收(例如,借助網(wǎng)絡(luò)108、計(jì)算機(jī)總線、或某個(gè)通信路徑)編碼視頻流并且存儲(chǔ)視頻流,以后續(xù)進(jìn)行解碼。可在編碼器和解碼器系統(tǒng)100中添加額外的組件。例如,可將顯示器或視頻攝影機(jī)附連到發(fā)送站102,以捕獲將被編碼的視頻流。
圖2是將被編碼和解碼的視頻流200的示圖。視頻流200(在本文中也被稱為視頻數(shù)據(jù))包括視頻序列204。在下一級(jí)處,視頻序列204包括多個(gè)相鄰幀206。雖然在相鄰幀206中示出三個(gè)幀,但視頻序列204可包括任何數(shù)量的相鄰幀。隨后,可將相鄰幀206進(jìn)一步細(xì)分為個(gè)體幀,例如,幀208。各幀208可捕獲含一個(gè)或多個(gè)對(duì)象(諸如,人、背景要素、圖形、文本、空白墻壁、或任何其他信息)的場(chǎng)景。
在下一級(jí)處,幀208可被分成塊210的集合,這些塊210可包含與幀208中的8×8像素組(在下述示例中的一些中)對(duì)應(yīng)的數(shù)據(jù)。塊210還可具有任何其他合適的大小,諸如,16×8個(gè)像素的塊、8×8個(gè)像素的塊、16×16個(gè)像素的塊、4×4個(gè)像素的塊、或任何其他大小。除非另外指出,否則術(shù)語“塊”可包括宏塊、子塊(即,宏塊的細(xì)分)、分段、切片、殘留塊或幀的任何其他部分。幀、塊、像素或其組合可包括可用于存儲(chǔ)、修改、傳達(dá)、或顯示視頻流或其一部分的顯示信息(諸如,亮度信息、色度信息、或任何其他信息)。
圖3是根據(jù)本公開的實(shí)施方式的編碼器300的框圖。例如,編碼器300可如上所述諸如通過提供存儲(chǔ)器106中存儲(chǔ)的計(jì)算機(jī)軟件程序在發(fā)送站102中實(shí)現(xiàn)。計(jì)算機(jī)軟件程序可包括當(dāng)由cpu104執(zhí)行時(shí)致使發(fā)送站102以圖3中描述的方式編碼視頻數(shù)據(jù)的機(jī)器指令。編碼器300還可被實(shí)現(xiàn)為例如發(fā)送站102中的專用軟件。編碼器300具有執(zhí)行(用實(shí)線連接線示出的)正向路徑上的各種功能以使用視頻流200作為輸入來形成編碼或壓縮位流320的以下各級(jí):幀內(nèi)/幀間預(yù)測(cè)級(jí)304、變換級(jí)306、量化級(jí)308和熵編碼級(jí)310。編碼器300可包括用于重構(gòu)編碼今后塊的幀的(用虛線連接線示出的)重構(gòu)路徑。在圖3中,編碼器300具有執(zhí)行重構(gòu)路徑上的各種功能的以下各級(jí):反量化級(jí)312、逆變換級(jí)314、重構(gòu)級(jí)316和環(huán)路濾波級(jí)318??墒褂镁幋a器300的其他結(jié)構(gòu)變形形式來編碼視頻流200。
當(dāng)視頻流200表現(xiàn)為用于編碼時(shí),可按塊為單元來處理視頻流200內(nèi)的各幀208。參照?qǐng)D3,在幀內(nèi)/幀間預(yù)測(cè)級(jí)304處,可使用幀內(nèi)預(yù)測(cè)(即,單個(gè)幀內(nèi))或幀間預(yù)測(cè)(即,幀-幀)來編碼各塊。在任一種情況下,可形成預(yù)測(cè)塊。然后,從塊中減去預(yù)測(cè)塊,以形成殘留塊(在本文中也被稱為殘留)。
幀內(nèi)預(yù)測(cè)(在本文中也被稱為幀內(nèi)-預(yù)測(cè)或幀-內(nèi)預(yù)測(cè))和幀間預(yù)測(cè)(在本文中也被稱為幀間-預(yù)測(cè)或幀-間預(yù)測(cè))是在現(xiàn)代圖像/視頻壓縮方案中使用的技術(shù)。在幀內(nèi)預(yù)測(cè)的情況下,預(yù)測(cè)塊可由先前已經(jīng)被編碼和重構(gòu)的當(dāng)前幀中的樣本形成。在幀間預(yù)測(cè)的情況下,預(yù)測(cè)塊可由諸如最近一幀(即,就在當(dāng)前幀先前的相鄰幀)、黃金幀或如下描述的配置的或替代的幀的一個(gè)或多個(gè)先前配置的參考幀中的樣本形成。
然后,從當(dāng)前塊中減去預(yù)測(cè)塊。然后,差異或殘留被編碼并且發(fā)送到解碼器。圖像或視頻編解碼器可支持許多不同的幀內(nèi)和幀間預(yù)測(cè)模式;各塊可使用預(yù)測(cè)模式中的一個(gè)來得到與塊最近似的預(yù)測(cè)塊,以使將被編碼在殘留中而重新形成塊的信息最少。轉(zhuǎn)換系數(shù)的各塊的預(yù)測(cè)模式還可被編碼并且發(fā)送,所以解碼器可在解碼和重構(gòu)處理中使用相同的預(yù)測(cè)模式來形成預(yù)測(cè)塊。
預(yù)測(cè)模式可選自多個(gè)幀內(nèi)預(yù)測(cè)模式之一??晒┻x擇地,可在編碼方案中使用一個(gè)或多個(gè)參考幀(包括例如最近一幀、黃金幀、替代參考幀、或任何其他參考幀)從多個(gè)幀間預(yù)測(cè)模式之一中選擇預(yù)測(cè)模式。位流語法支持幀間預(yù)測(cè)模式中的三種類別。幀間預(yù)測(cè)模式可包括例如:模式(有時(shí)被稱為zero_mv模式),在該模式下,使用參考幀內(nèi)的與當(dāng)前塊的位置相同的塊作為預(yù)測(cè)塊;模式(有時(shí)被稱為new_mv模式),在該模式下,發(fā)送運(yùn)動(dòng)矢量以指示將相對(duì)于當(dāng)前塊用作預(yù)測(cè)塊的參考幀內(nèi)的塊的位置;或模式(有時(shí)被稱為包括near_mv或nearest_mv模式的ref_mv模式),在該模式下,不發(fā)送運(yùn)動(dòng)矢量并且當(dāng)前塊使用供相鄰的先前編碼塊使用的最近的一個(gè)或第二近的一個(gè)的非零運(yùn)動(dòng)矢量來生成預(yù)測(cè)塊。幀間預(yù)測(cè)模式可與可用參考幀中的任一個(gè)一起使用。
參考運(yùn)動(dòng)矢量編碼模式分析可用塊運(yùn)動(dòng)活動(dòng)來形成經(jīng)排序的參考運(yùn)動(dòng)矢量候選列表,從而允許參考運(yùn)動(dòng)矢量模式的大小成為動(dòng)態(tài)擴(kuò)展的固定nearest_mv模式和near_mv模式的概括,并且提高熵編碼的功效。ref_mv模式代表參考運(yùn)動(dòng)矢量模式,包括near_mv和nearest_mv、以及當(dāng)候選運(yùn)動(dòng)矢量列表示出足夠變形形式時(shí)的擴(kuò)展模式。熵編碼系統(tǒng)開始于near_mv,根據(jù)所找到的參考運(yùn)動(dòng)矢量的數(shù)量的場(chǎng)境來選擇概率模型,并且如果找到具有匹配的參考幀的相鄰塊,確定以near_mv模式來編碼相鄰塊。如果編碼模式是near_mv模式,則若模式是zero_mv模式,編解碼器持續(xù)進(jìn)行編碼。當(dāng)先前幀中的共同位置塊正使用零運(yùn)動(dòng)矢量,或者接近零運(yùn)動(dòng)矢量(即,小于行和列組成的1個(gè)全像素)時(shí),或者當(dāng)空間相鄰塊正使用零或接近零的運(yùn)動(dòng)矢量時(shí),編解碼器根據(jù)場(chǎng)境來選擇模式概率模型。如果編碼模式是非zero_mv模式,則編解碼器在ref_mv模式之間進(jìn)行決策。關(guān)聯(lián)的場(chǎng)境是多少參考運(yùn)動(dòng)矢量登記在候選列表和加權(quán)系數(shù)中。ref_mv模式語法提示有效運(yùn)動(dòng)矢量是源自參考相鄰塊編碼信息。在給定參考幀的情況下,這些可能的參考運(yùn)動(dòng)矢量候選項(xiàng)的列表包括根據(jù)其與當(dāng)前塊的相對(duì)距離和重疊量進(jìn)行排序的參考運(yùn)動(dòng)矢量候選。編解碼器需要決定要拾取和使用列表中的哪個(gè)。編解碼器可選擇列表中的候選參考運(yùn)動(dòng)矢量之中的將提供最佳預(yù)測(cè)的候選運(yùn)動(dòng)矢量并且向解碼器與該特定候選運(yùn)動(dòng)矢量關(guān)聯(lián)的索引。
接下來,仍然參照?qǐng)D3,變換級(jí)306將殘留轉(zhuǎn)換成例如頻域中的轉(zhuǎn)換系數(shù)的塊。基于塊的變換的示例包括karhunen-loève變換(klt)、離散余弦變換(dct)、walsh-hadamardtransform變換(wht)、奇異值分解變換(svd)和不對(duì)稱離散正弦變換(adst)。在一個(gè)示例中,dct將塊變換到頻域中。在dct的情況下,變換系數(shù)值是基于空間頻率,最低頻率(例如,dc)系數(shù)在矩陣的左上方而最高頻率系數(shù)在矩陣的右上方。
圖4是根據(jù)本公開的實(shí)施方式的解碼器400的框圖。解碼器400可諸如通過例如提供存儲(chǔ)在存儲(chǔ)器中的計(jì)算機(jī)軟件程序而在例如接收站110中實(shí)現(xiàn)。計(jì)算機(jī)軟件程序可包括機(jī)器指令,這些機(jī)器指令在由cpu112執(zhí)行時(shí),致使接收站110與圖4中描述的方式來解碼視頻數(shù)據(jù)。解碼器400還可被實(shí)現(xiàn)為例如發(fā)送站102或接收站110中的專用硬件或固件。
類似于以上討論的編碼器300的重構(gòu)路徑,在一個(gè)示例中,解碼器400包括執(zhí)行各種功能以用壓縮位流320形成輸出視頻流416的各種功能的如下級(jí):熵解碼級(jí)402、反量化級(jí)404、反變換級(jí)406、幀內(nèi)/幀間預(yù)測(cè)級(jí)408、重構(gòu)級(jí)410、環(huán)路濾波級(jí)412和去塊濾波級(jí)414??墒褂媒獯a器400的其他結(jié)構(gòu)變形形式來解碼壓縮位流320。
當(dāng)壓縮位流320表現(xiàn)為用于解碼時(shí),可通過熵解碼級(jí)402(使用例如算術(shù)編碼)來解碼壓縮位流320內(nèi)的數(shù)據(jù)元素以生成量化變換系數(shù)的集合。反量化級(jí)404將量化后的變換系數(shù)反量化并且逆變換級(jí)406將反量化后的變換系數(shù)逆變換,以形成可與通過編碼器300中的重構(gòu)級(jí)316形成的殘留相同的導(dǎo)數(shù)殘留。使用從壓縮位流320解碼而來的頭部信息,解碼器400可使用幀內(nèi)/幀間預(yù)測(cè)級(jí)408來形成與編碼器300中的例如幀內(nèi)/幀間預(yù)測(cè)級(jí)304處形成的相同的預(yù)測(cè)塊。在幀內(nèi)預(yù)測(cè)的情況下,可使用位流內(nèi)包含的信息,在位流中發(fā)送或者通過解碼器配置用于生成預(yù)測(cè)塊的參考幀。
在重構(gòu)級(jí)410處,預(yù)測(cè)塊可與導(dǎo)數(shù)殘留相加,以形成可與通過編碼器300中的重構(gòu)級(jí)316形成的塊相同的重構(gòu)塊。環(huán)路濾波級(jí)412可應(yīng)用于重構(gòu)塊,以減少塊效應(yīng)。去塊濾波級(jí)414可應(yīng)用于重構(gòu)塊,以減少塊失真,并且結(jié)果被作為輸出視頻流416輸出。輸出視頻流416還可被稱為解碼視頻流并且這些術(shù)語將在本文中可互換地使用。
可使用解碼器400的其他變形形式來解碼壓縮位流320。另外,解碼器可在沒有去塊濾波級(jí)414的情況下形成輸出視頻流416。
圖5是根據(jù)本公開的實(shí)施方式的使用參考運(yùn)動(dòng)矢量來編碼視頻流的運(yùn)動(dòng)矢量的示例過程500的流程圖。過程500可在諸如編碼器300(圖3中示出)的編碼器來實(shí)現(xiàn)并且可被實(shí)現(xiàn)為例如可由諸如發(fā)送站102或接收站110(圖1中示出)的計(jì)算裝置來執(zhí)行。例如,軟件程序可包括可存儲(chǔ)在諸如存儲(chǔ)器106或存儲(chǔ)器114的存儲(chǔ)器中,并且可由諸如cpu104的處理器執(zhí)行以致使計(jì)算裝置執(zhí)行過程500的機(jī)器可讀指令。
可使用專用硬件或固件來實(shí)現(xiàn)過程500。一些計(jì)算裝置可具有多個(gè)存儲(chǔ)器、多個(gè)處理器、或這二者??墒褂貌煌幚砥鳌⒋鎯?chǔ)器或這二者來分配過程500的步驟。使用單數(shù)術(shù)語“處理器”或“存儲(chǔ)器”涵蓋具有一個(gè)處理器或一個(gè)存儲(chǔ)器的計(jì)算裝置以及具有多個(gè)處理器或多個(gè)存儲(chǔ)器的裝置,這多個(gè)處理器或多個(gè)存儲(chǔ)器均可用于所述步驟中的一些或全部的效能。為了簡(jiǎn)化說明,過程500被描繪和描述為一系列步驟。然而,根據(jù)本公開的步驟可按各種次序和/或同時(shí)地出現(xiàn)。另外,根據(jù)本公開的步驟可在不存在其他步驟的情況下出現(xiàn)并且在本文中進(jìn)行描述。此外,并非會(huì)需要用所有例示步驟來實(shí)現(xiàn)根據(jù)所公開主題的方法。
過程500假設(shè)正使用在諸如發(fā)送站102上的計(jì)算裝置上執(zhí)行的諸如視頻編碼器300的視頻編碼器編碼的具有多個(gè)幀的視頻數(shù)據(jù)的流,每個(gè)幀具有多個(gè)塊??捎捎?jì)算裝置按任何數(shù)量的方式來接收視頻數(shù)據(jù)或流,諸如,憑借通過網(wǎng)絡(luò)、通過電纜、或者通過從主存儲(chǔ)器或其他存儲(chǔ)裝置讀取視頻數(shù)據(jù)來接收視頻數(shù)據(jù),這些其他存儲(chǔ)裝置包括諸如緊湊閃存(cf)卡、安全數(shù)字(sd)卡、或能夠傳達(dá)視頻數(shù)據(jù)的任何其他裝置??蓮呐c操作編碼器的計(jì)算裝置連接的視頻相機(jī)接收視頻數(shù)據(jù)。使用幀間預(yù)測(cè)來編碼幀內(nèi)的至少一些塊,如以下更詳細(xì)描述的。
在502中,過程500針對(duì)視頻位流的當(dāng)前塊從變化數(shù)量的候選參考運(yùn)動(dòng)矢量中選擇參考運(yùn)動(dòng)矢量。當(dāng)前塊位于視頻位流的當(dāng)前幀中。候選參考運(yùn)動(dòng)矢量可包括來自視頻流中的任何先前編碼塊的運(yùn)動(dòng)矢量。先前編碼塊可包括在當(dāng)前塊先前使用幀間預(yù)測(cè)進(jìn)行編碼的任何塊(諸如,先前編碼幀中的塊、或在當(dāng)前塊先前已經(jīng)被編碼的與當(dāng)前塊相同的幀中的塊)。
先前編碼塊可包括例如在當(dāng)前塊之前被編碼的位于當(dāng)前幀中的塊。例如,在一些編碼/解碼(編解碼器)方案(諸如,以光柵掃描次序編碼的方案)中,先前編碼塊可包括朝向當(dāng)前塊左方的塊、朝向當(dāng)前塊左上方的塊、朝向當(dāng)前塊右上方的塊、當(dāng)前塊上方的塊等。
先前編碼塊還可包括位于視頻位流中的當(dāng)前幀的參考幀中的塊。例如,候選參考?jí)K可包括參考幀中的當(dāng)前塊的共同位置塊和參考幀中的以下塊中的至少一個(gè)(諸如,朝向共同位置塊右方的塊、共同位置塊下方的塊、朝向共同位置塊的左下方塊和朝向共同位置塊右下方的塊)。參考幀可以是時(shí)間上相鄰的幀(諸如,最近一幀)或時(shí)間上不相鄰的幀(諸如,黃金幀或替代幀)。例如,參考幀可以就是在當(dāng)前幀的前一幀(最近一幀)、黃金幀中的塊(例如,在幀內(nèi)/幀間級(jí)304處描述的)、任何其他參考幀中的塊、或以上的任何組合。
可基于以下理論,用以某種方式對(duì)應(yīng)于當(dāng)前塊的先前編碼塊來得到候選參考運(yùn)動(dòng)矢量:這些塊由于它們的像素接近當(dāng)前塊而導(dǎo)致有可能與當(dāng)前塊具有類似的運(yùn)動(dòng)特性。例如,過程500可分析先前編碼塊的運(yùn)動(dòng)活性以生成一系列排序的候選參考運(yùn)動(dòng)矢量,從而采用有效的參考運(yùn)動(dòng)矢量排序系統(tǒng),并且提供完全歸因于可用運(yùn)動(dòng)矢量候選列表的動(dòng)態(tài)運(yùn)動(dòng)參考模式,從而允許參考運(yùn)動(dòng)矢量的數(shù)量動(dòng)態(tài)延長(zhǎng)或縮短并且提高了熵編碼的功效。候選參考運(yùn)動(dòng)矢量候選的列表可根據(jù)例如針對(duì)當(dāng)前塊的相鄰參考?jí)K狀況而有所不同(諸如,動(dòng)態(tài)延長(zhǎng)或縮短)。對(duì)應(yīng)地,針對(duì)當(dāng)前塊的候選參考?jí)K的數(shù)量也可有所不同。另外,在考慮之列的候選參考幀的數(shù)量也可有所不同。使用不同數(shù)量的候選參考幀和/或變化數(shù)量的候選參考?jí)K,允許編碼器/解碼器(編解碼器)適于變形形式并且基于諸如各個(gè)體塊及其周圍的移動(dòng)特性的指示物來調(diào)節(jié)候選的數(shù)量,這樣可提高當(dāng)前塊的編碼效率。
可從不同數(shù)量的候選參考?jí)K的動(dòng)態(tài)列表中選擇參考?jí)K,參考?jí)K可包括參考幀中的共同位置塊中的一個(gè)或多個(gè)、參考幀中的朝向共同位置塊右方的塊、參考幀的在共同位置塊下方的塊、參考幀中的朝向共同位置塊左下方的塊、參考幀中的朝向共同位置塊右下方的塊、當(dāng)前幀中的當(dāng)前塊上方的塊、當(dāng)前幀中的朝向當(dāng)前塊左方的塊、當(dāng)前幀中的朝向當(dāng)前塊左上方的塊和當(dāng)前幀中的朝向當(dāng)前塊右上方的塊。如以上討論的,候選參考?jí)K的數(shù)量可基于例如針對(duì)當(dāng)前塊的相鄰參考?jí)K而有所不同。
仍然在502中,從候選參考運(yùn)動(dòng)矢量中選擇參考運(yùn)動(dòng)矢量??赏ㄟ^編碼器內(nèi)的速率失真環(huán)路來評(píng)價(jià)各候選參考運(yùn)動(dòng)矢量,該環(huán)路通過比較各候選參考運(yùn)動(dòng)矢量的速率失真成本(例如,針對(duì)由于編碼導(dǎo)致的圖像改變的位成本)來確定最佳編碼模式。
可基于最靠近當(dāng)前塊并且具有最高優(yōu)先級(jí)值的候選運(yùn)動(dòng)矢量,從候選參考運(yùn)動(dòng)矢量中選擇參考運(yùn)動(dòng)矢量。過程500可針對(duì)各候選參考運(yùn)動(dòng)矢量來確定與候選運(yùn)動(dòng)矢量關(guān)聯(lián)的先前編碼塊和當(dāng)前塊之間的距離。例如,與候選運(yùn)動(dòng)矢量關(guān)聯(lián)的先前編碼塊和當(dāng)前塊之間的距離可以是基于以像素為單元測(cè)得的先前編碼塊中的像素和當(dāng)前塊中的共同位置像素之間的空間位移?;趶南惹熬幋a塊到當(dāng)前塊的從最近到最遠(yuǎn)的距離和先前編碼塊和當(dāng)前塊之間的重疊長(zhǎng)度來將候選參考運(yùn)動(dòng)矢量排序??苫趨⒖几采w區(qū)域中有多少先前編碼像素使用該特定候選運(yùn)動(dòng)矢量,針對(duì)各候選運(yùn)動(dòng)矢量來確定流行度值。使用特定候選運(yùn)動(dòng)矢量的先前編碼像素越多,針對(duì)該特定候選運(yùn)動(dòng)矢量的流行度值將越高。可向共用同一參考幀組合的相鄰參考?jí)K中的候選參考運(yùn)動(dòng)矢量分派較高優(yōu)先級(jí)??苫诰哂凶罡邇?yōu)先級(jí)的候選運(yùn)動(dòng)量,從候選參考運(yùn)動(dòng)矢量中選擇參考運(yùn)動(dòng)矢量。
可用單個(gè)參考幀或不止一個(gè)參考幀來預(yù)測(cè)包括當(dāng)前塊的塊。例如,可通過兩個(gè)或更多個(gè)幀的平均(在某些情況下,加權(quán)平均)來形成復(fù)合參考幀。對(duì)于使用單個(gè)參考幀的塊,選擇可以是基于例如從與最高流行度值關(guān)聯(lián)并且與最靠近當(dāng)前塊的參考?jí)K關(guān)聯(lián)的候選參考運(yùn)動(dòng)矢量中選擇運(yùn)動(dòng)矢量。對(duì)于具有復(fù)合參考幀的塊,過程500可發(fā)現(xiàn),例如,選擇可以基于例如共享具有較高優(yōu)先級(jí)的同一參考幀組合的參考?jí)K中的運(yùn)動(dòng)矢量。當(dāng)識(shí)別到不到2個(gè)候選參考運(yùn)動(dòng)矢量時(shí),復(fù)合參考幀中的候選參考運(yùn)動(dòng)矢量可附帶單個(gè)參考幀的參考運(yùn)動(dòng)矢量的組合。也可使用其他選擇標(biāo)準(zhǔn)。
候選參考運(yùn)動(dòng)矢量可限于空間-時(shí)間上相鄰的運(yùn)動(dòng)矢量。也就是說,候選參考運(yùn)動(dòng)矢量的池可選自與當(dāng)前塊的區(qū)域相鄰的區(qū)域。在一些視頻編碼方案中,特別地,在其中不按次序編碼視頻幀的視頻編碼方案中,期望在候選參考運(yùn)動(dòng)矢量的池中包括來自在遙遠(yuǎn)的過去或未來的視頻幀的運(yùn)動(dòng)信息。例如,在所謂的“交替參考幀”的編碼中,可出現(xiàn)不按次序編碼視頻幀,交替參考幀與就在它們之前或就在它們之后被編碼的幀在時(shí)間上并不相鄰。交替參考幀可以是在輸入視頻流中沒有出現(xiàn)的合成幀,或者是輸入視頻流中的用于預(yù)測(cè)并且通常在解碼之后沒有顯示的幀的復(fù)制幀。此幀可類似于久遠(yuǎn)未來中的視頻幀。可出現(xiàn)不按次序編碼的另一個(gè)示例是通過使用所謂的“黃金參考幀”,黃金參考幀是可與或不可與當(dāng)前視頻幀相鄰的重構(gòu)視頻幀并且被存儲(chǔ)在存儲(chǔ)器中,用作參考幀,直到例如被新的黃金參考幀替換。
參考運(yùn)動(dòng)矢量可用于進(jìn)一步處理。即,可在針對(duì)當(dāng)前幀的下一個(gè)塊再次開始處理之前,使用參考運(yùn)動(dòng)矢量對(duì)當(dāng)前塊的運(yùn)動(dòng)矢量進(jìn)行編碼。另外,可根據(jù)相對(duì)于圖3描述的處理來編碼當(dāng)前塊。在編碼當(dāng)前塊的運(yùn)動(dòng)矢量時(shí),存在多種使用參考運(yùn)動(dòng)矢量的方式。例如,并且如上所述,過程500可以是用于為待編碼當(dāng)前塊選擇幀間預(yù)測(cè)模式的速率失真環(huán)路的部分。作為速率失真環(huán)路的部分,可通過根據(jù)任何數(shù)量的技術(shù)進(jìn)行運(yùn)動(dòng)搜索來確定用于當(dāng)前塊的幀間預(yù)測(cè)的實(shí)際運(yùn)動(dòng)矢量。參考運(yùn)動(dòng)矢量的一種使用可包括基于實(shí)際運(yùn)動(dòng)矢量有可能靠近用于選擇參考運(yùn)動(dòng)矢量的矢量的理由,使用參考運(yùn)動(dòng)矢量作為運(yùn)動(dòng)搜索算法的開始參數(shù)??晒┻x擇地,可在過程500之前或者與過程500并行地執(zhí)行運(yùn)動(dòng)搜索。
在504中,過程500通過用一個(gè)或多個(gè)閾值評(píng)價(jià)參考運(yùn)動(dòng)矢量的殘留部分來選擇針對(duì)當(dāng)前塊的概率場(chǎng)境模型。在502中選擇的與參考?jí)K關(guān)聯(lián)的參考運(yùn)動(dòng)矢量包括預(yù)測(cè)部分(“預(yù)測(cè)參考運(yùn)動(dòng)矢量”)和殘留部分(“參考運(yùn)動(dòng)矢量殘留”)??稍?06中使用所選擇的概率場(chǎng)境模型,以編碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留。
如所討論的,運(yùn)動(dòng)矢量(諸如,當(dāng)前塊的運(yùn)動(dòng)矢量或在502中選擇的參考運(yùn)動(dòng)矢量)可包括預(yù)測(cè)部分和殘留部分。對(duì)于當(dāng)前塊,預(yù)測(cè)部分是預(yù)測(cè)運(yùn)動(dòng)矢量,即,針對(duì)當(dāng)前塊選擇的參考運(yùn)動(dòng)矢量。當(dāng)前塊的殘留部分是基于參考運(yùn)動(dòng)矢量和當(dāng)前塊的運(yùn)動(dòng)矢量之間的差異。對(duì)于參考?jí)K,預(yù)測(cè)部分即預(yù)測(cè)參考運(yùn)動(dòng)矢量是為了預(yù)測(cè)參考運(yùn)動(dòng)矢量而選擇的預(yù)測(cè)運(yùn)動(dòng)矢量,并且殘留部分即參考運(yùn)動(dòng)矢量殘留是基于預(yù)測(cè)參考運(yùn)動(dòng)矢量和參考運(yùn)動(dòng)矢量之間的差異。以下將說明的圖7包括當(dāng)前塊b的運(yùn)動(dòng)矢量和參考?jí)Kr0的參考運(yùn)動(dòng)矢量的示例,運(yùn)動(dòng)矢量均具有預(yù)測(cè)部分和殘留部分。
概率場(chǎng)境模型可包括用于編碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留的概率分布,諸如,預(yù)定的或更新后的概率分布。編碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留可包括例如使用所選擇的概率場(chǎng)境模型對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。可基于實(shí)際編碼值來更新概率分布。
包括基于當(dāng)前塊的相鄰塊中的場(chǎng)境(諸如,先前編碼的運(yùn)動(dòng)矢量殘留)來選擇概率場(chǎng)境模型的場(chǎng)境建模可提供額外的碼率節(jié)省。多個(gè)概率場(chǎng)境模型可用于在不同場(chǎng)境中的對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。用于運(yùn)動(dòng)矢量的熵編碼的場(chǎng)境可以是基于例如參考?jí)K的運(yùn)動(dòng)矢量殘留(即,參考運(yùn)動(dòng)矢量殘留)所指示的運(yùn)動(dòng)強(qiáng)度。例如,當(dāng)用小運(yùn)動(dòng)矢量殘留(例如,低于某個(gè)閾值)來編碼所選擇的參考?jí)K時(shí),好跡象是當(dāng)前塊可具有相對(duì)小的運(yùn)動(dòng)矢量殘留。這可指示當(dāng)前塊具有弱運(yùn)動(dòng)強(qiáng)度,并且可針對(duì)當(dāng)前塊來選擇與指示弱運(yùn)動(dòng)強(qiáng)度的塊的類別關(guān)聯(lián)的概率場(chǎng)境模型。否則,當(dāng)所選擇的參考?jí)K被編碼有大運(yùn)動(dòng)矢量殘留時(shí),可指示當(dāng)前塊可具有相對(duì)大的運(yùn)動(dòng)矢量殘留,這指示強(qiáng)運(yùn)動(dòng)強(qiáng)度,并且可針對(duì)當(dāng)前塊來選擇與指示強(qiáng)運(yùn)動(dòng)強(qiáng)度的塊的類別關(guān)聯(lián)的不同概率場(chǎng)境模型。
為了選擇用于編碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留的概率場(chǎng)境模型,可將參考運(yùn)動(dòng)矢量的殘留部分的大小與一個(gè)或多個(gè)閾值進(jìn)行比較,以針對(duì)當(dāng)前塊確定運(yùn)動(dòng)強(qiáng)度的指示。例如,可將參考運(yùn)動(dòng)矢量的殘留部分的水平(x)和垂直(y)分量中的每個(gè)的絕對(duì)值與一個(gè)預(yù)定閾值(或多個(gè)預(yù)定閾值)進(jìn)行比較,以確定參考運(yùn)動(dòng)矢量殘留的大小是小還是大。預(yù)定閾值可以是像素值,例如,2個(gè)或8個(gè)像素。如果參考運(yùn)動(dòng)矢量殘留的x和y分量二者都小于閾值,則可確定參考運(yùn)動(dòng)矢量殘留的大小(“參考?xì)埩舸笮 ?小,并且可指示當(dāng)前塊的運(yùn)動(dòng)強(qiáng)度弱。如果參考運(yùn)動(dòng)矢量殘留的x或y分量等于或大于閾值,則可確定參考?xì)埩舸笮〈?,這可指示當(dāng)前塊具有大運(yùn)動(dòng)矢量殘留,并且可指示當(dāng)前塊的運(yùn)動(dòng)強(qiáng)度強(qiáng)。以下將說明的圖8包括兩個(gè)示例概率場(chǎng)境模型,可使用這兩個(gè)模型來編碼不同運(yùn)動(dòng)強(qiáng)度的塊的運(yùn)動(dòng)矢量殘留。在圖8的示例中,當(dāng)參考運(yùn)動(dòng)矢量的殘留部分的垂直和水平分量二者都小于閾值(例如,8個(gè)像素)時(shí),將針對(duì)被指示具有弱運(yùn)動(dòng)強(qiáng)度的塊,選擇“類別0”的概率場(chǎng)境模型。否則,將選擇“類別1”。還可按其他方式確定該大小是例如x和y分量的平方和的平方根等。
基于所選擇的概率場(chǎng)境模型,可使用當(dāng)前塊的運(yùn)動(dòng)矢量殘留的大小來確定用于對(duì)當(dāng)前塊的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼的有效(實(shí)際)概率值。可使用諸如算術(shù)編碼的技術(shù),使用概率值對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。將在圖7之后討論的圖8包括兩個(gè)示例概率場(chǎng)境模型,可用這兩個(gè)模型針對(duì)當(dāng)前塊選擇概率場(chǎng)境模型,可使用該概率場(chǎng)境模型來確定用于對(duì)當(dāng)前塊的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼的有效概率值。
圖7是示例幀700的示圖,示例幀700包括當(dāng)前塊b和在當(dāng)前塊b之前已經(jīng)被編碼的塊,例如,朝向當(dāng)前塊b的左方或上方的塊r0、r1和r2。在這個(gè)示例中,出于例示目的,候選參考運(yùn)動(dòng)矢量包括來自當(dāng)前塊b上方的塊r0的運(yùn)動(dòng)矢量pmv0、來自當(dāng)前塊b左方的塊r1的運(yùn)動(dòng)矢量pmv1和來自當(dāng)前塊b左上方的塊r2的運(yùn)動(dòng)矢量pmv2。候選參考運(yùn)動(dòng)矢量還可包括來自幀700或其他幀中的其他塊的運(yùn)動(dòng)矢量。在這個(gè)示例中,參考?jí)K被選擇為塊r0,當(dāng)前塊b上方的塊。因此,塊r0的運(yùn)動(dòng)矢量pmv0是塊b的參考運(yùn)動(dòng)矢量。包括塊b和針對(duì)塊b選擇的參考?jí)K(在這個(gè)示例中,r0)的各塊可具有包括兩部分(并且編碼到兩部分中)的運(yùn)動(dòng)矢量:預(yù)測(cè)部分和殘留部分。
在圖7中,塊b具有運(yùn)動(dòng)矢量mv,其包括預(yù)測(cè)部分pmv0和殘留部分res0。預(yù)測(cè)部分(即參考運(yùn)動(dòng)矢量pmv0)與參考?jí)Kr0(在這個(gè)示例中,所選擇的參考?jí)K)關(guān)聯(lián)。殘留部分res0是基于參考運(yùn)動(dòng)矢量pmv0和塊b的運(yùn)動(dòng)矢量mv之間的差異。對(duì)于參考?jí)Kr0,運(yùn)動(dòng)矢量pmv0可包括預(yù)測(cè)部分即r0的參考運(yùn)動(dòng)矢量(圖7中的ppmv)和殘留部分(圖7中的pres0)即參考運(yùn)動(dòng)矢量pmv0和塊r0的預(yù)測(cè)參考運(yùn)動(dòng)矢量ppmv之間的差異。預(yù)測(cè)部分或殘留部分中的任一個(gè)可以是零。例如,當(dāng)殘留部分是零時(shí),可使用參考運(yùn)動(dòng)矢量直接用諸如塊b或r0的塊的參考?jí)K來預(yù)測(cè)該塊。
編碼過程500(或圖6中的解碼過程600)可評(píng)價(jià)參考運(yùn)動(dòng)矢量(例如,圖7中的pmv0)的殘留部分(例如,圖7中的pres0)的大小,以選擇可用于編碼塊b的運(yùn)動(dòng)矢量的殘留部分。例如,可將塊r0的殘留部分pres0的水平(x)和垂直(y)分量中的每個(gè)的絕對(duì)值與閾值進(jìn)行比較,以針對(duì)塊b選擇概率場(chǎng)境模型。該比較可以是基于例如將參考運(yùn)動(dòng)矢量pres0的x和y分量二者與閾值進(jìn)行比較,以確定這二者是否都小于閾值。在這個(gè)示例中,閾值可以是比方說8個(gè)像素?;谠摫容^,可確定參考運(yùn)動(dòng)矢量的殘留大小是大或小,從而可使用其從不同概率場(chǎng)境模型中選擇概率場(chǎng)境模型,如將在圖8中進(jìn)一步說明的。
圖8是用于說明圖5和圖6的過程的示例概率場(chǎng)境模型的示圖。在這個(gè)示例中,兩個(gè)概率場(chǎng)境模型被示出為“類別0”和“類別1”。雖然只示出了兩個(gè)概率場(chǎng)境模型,但概率場(chǎng)境模型的數(shù)量可超過兩個(gè)?!邦悇e0”是用于編碼表現(xiàn)出(被指示為)弱運(yùn)動(dòng)強(qiáng)度的塊的概率場(chǎng)境模型,“類別1”是用于編碼表現(xiàn)出強(qiáng)運(yùn)動(dòng)強(qiáng)度的塊的概率場(chǎng)境模型。如果參考?jí)Kr0的參考運(yùn)動(dòng)矢量殘留即pres0的x和y分量二者都小于閾值(例如,8個(gè)像素),則針對(duì)當(dāng)前塊b選擇“類別0”的概率場(chǎng)境模型。否則,選擇“類別1”。
在這個(gè)示例中,用于編碼塊b的實(shí)際(有效)概率值可被除以256。編碼過程可作為二叉決策樹(binarytreedecision)來進(jìn)行。過程500或600可經(jīng)歷所選擇的概率場(chǎng)境模型的概率分布,從大小0開始,直至找到當(dāng)前塊(例如,塊b)的運(yùn)動(dòng)矢量殘留(例如,圖7中的res0)的目標(biāo)大小值(例如,x或y分量的絕對(duì)值)。例如,當(dāng)塊b的運(yùn)動(dòng)矢量殘留res0的大小是0并且確定塊b是“類別0”時(shí),編碼塊b的大小0的(有效)概率是80/256。然而,如果確定塊b屬于類別1,則編碼塊b的大小0的概率是50/256。當(dāng)將針對(duì)塊b編碼的運(yùn)動(dòng)矢量殘留的大小是1時(shí),類別0的塊的有效概率被確定是((256-80)/256)*(60/256)并且類別1的塊的有效概率是((256-50)/256)*(40/256)。在另一個(gè)示例中,當(dāng)將針對(duì)塊b編碼的運(yùn)動(dòng)矢量殘留的大小是2時(shí)并且確定塊b屬于“類別0”時(shí),可確定概率是((256-80)/256)*((256-60)/256)*(40/256),等等。編解碼器先開始確定大小是否為0。如果不為0,則將確定大小是否為1,直到它到達(dá)目標(biāo)大小值。還可使用其他方式來確定用于編碼過程的概率值。
回到504,例如,可基于針對(duì)幀中的一些或所有塊確定的概率場(chǎng)境模型的柱狀圖來更新場(chǎng)境模型中的概率分布。例如,一旦處理(編碼或解碼)了幀中的所有塊,就可更新場(chǎng)境模型。還可以以其他基礎(chǔ)(諸如,根據(jù)各宏塊或針對(duì)限定的一組塊)來更新場(chǎng)境模型。
在506中,針對(duì)使用處理器的當(dāng)前塊,過程500使用概率場(chǎng)境模型對(duì)與當(dāng)前塊關(guān)聯(lián)的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。可確定,與當(dāng)前塊關(guān)聯(lián)的運(yùn)動(dòng)矢量殘留是針對(duì)當(dāng)前塊確定的運(yùn)動(dòng)矢量和參考運(yùn)動(dòng)矢量之間的差異。
如所討論的,可基于在504中選擇的概率場(chǎng)境模型,使用當(dāng)前塊的運(yùn)動(dòng)矢量殘留的大小來確定用于對(duì)當(dāng)前塊的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼的有效(實(shí)際)概率值。概率值可用于使用諸如算術(shù)編碼的技術(shù)對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。在圖8的示例中,當(dāng)選擇與“類別1”塊關(guān)聯(lián)的概率場(chǎng)境模型并且當(dāng)前塊的運(yùn)動(dòng)矢量殘留的大小是1時(shí),可通過從大小0開始向所選擇的概率場(chǎng)境模型(“類別1”)應(yīng)用二叉樹處理直到達(dá)到當(dāng)前塊的目標(biāo)大小,確定用于對(duì)具有大小1的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼的有效概率是例如((256-50)/256)*(40/256)。在這個(gè)示例中,目標(biāo)大小是1。
位可被包括在視頻流中,用于識(shí)別編碼的運(yùn)動(dòng)矢量大小以及預(yù)定概率分布中的哪個(gè)用于基于編碼的大小來形成運(yùn)動(dòng)矢量。在一些變形形式中,指示哪個(gè)參考幀用于解碼當(dāng)前塊的一個(gè)或多個(gè)位也可被包括在位流中。如同它用于差分編碼,參考運(yùn)動(dòng)矢量還可縮放成它期望的程度。
可使用參考運(yùn)動(dòng)矢量以不同方式編碼實(shí)際運(yùn)動(dòng)矢量。例如,可通過從用于編碼當(dāng)前塊的運(yùn)動(dòng)矢量中減去參考運(yùn)動(dòng)矢量來計(jì)算差異值。該差異值可被編碼并且包括在視頻流中。由于參考運(yùn)動(dòng)矢量是使用先前編碼和解碼的數(shù)據(jù)形成的,因此所述數(shù)據(jù)可在解碼器處可用于識(shí)別與用于在編碼器處形成運(yùn)動(dòng)矢量時(shí)所使用的相同的參考運(yùn)動(dòng)矢量,從而不需要針對(duì)當(dāng)前塊來編碼和發(fā)送運(yùn)動(dòng)矢量??蓪⒔獯a后的差異值與如下所述的通過解碼器識(shí)別的參考運(yùn)動(dòng)矢量相加,以形成用于解碼當(dāng)前塊的運(yùn)動(dòng)矢量。注意的是,參考運(yùn)動(dòng)矢量與可用參考幀之一關(guān)聯(lián)。因此,倘若參考運(yùn)動(dòng)矢量與和與實(shí)際運(yùn)動(dòng)矢量關(guān)聯(lián)的參考幀不同的參考幀關(guān)聯(lián),可如之前描述地縮放參考運(yùn)動(dòng)矢量,以生成參考運(yùn)動(dòng)矢量和實(shí)際運(yùn)動(dòng)矢量之間的差異。所使用的參考幀的分開指示也將被編碼在位流中。
還可在編碼當(dāng)前塊時(shí)直接使用參考運(yùn)動(dòng)矢量。這可出現(xiàn)在例如使用通過運(yùn)動(dòng)搜索而確定的運(yùn)動(dòng)矢量來編碼當(dāng)前塊時(shí)涉及的速率失真值的比較高于使用參考運(yùn)動(dòng)矢量來編碼當(dāng)前塊時(shí)涉及的速率失真值的比較時(shí)。在該比較中,所使用的參考幀將期望地是用于選擇參考運(yùn)動(dòng)矢量的參考幀,所以不需要縮放。在某些情況下,關(guān)于是否要使用參考運(yùn)動(dòng)矢量的決策可與參考運(yùn)動(dòng)矢量和通過搜索得到的運(yùn)動(dòng)矢量之間的差異有聯(lián)系。當(dāng)該差異小(或?yàn)榱?時(shí),通過使用參考運(yùn)動(dòng)矢量進(jìn)行搜索而得到的參考幀的預(yù)測(cè)結(jié)果與實(shí)際運(yùn)動(dòng)矢量的差異也小(或?yàn)榱?。當(dāng)直接使用參考運(yùn)動(dòng)矢量來編碼當(dāng)前塊時(shí),將不需要將運(yùn)動(dòng)矢量單獨(dú)編碼。替代地,一個(gè)或多個(gè)位將與當(dāng)前塊關(guān)聯(lián)地被插入位流中,用于指示使用用于編碼的參考運(yùn)動(dòng)矢量。
圖6是根據(jù)本公開的實(shí)施方式的使用參考運(yùn)動(dòng)矢量來解碼視頻流的運(yùn)動(dòng)矢量的過程600的流程圖。解碼器可再現(xiàn)在圖5中示出的過程500中配置的所述候選參考運(yùn)動(dòng)矢量。解碼器可讀取位流的索引,以確定候選參考運(yùn)動(dòng)矢量中要使用的參考運(yùn)動(dòng)矢量。過程600可被實(shí)現(xiàn)為例如可由諸如發(fā)送站102或接收站110的計(jì)算裝置執(zhí)行的軟件程序。例如,軟件程序可包括機(jī)器可讀指令,機(jī)器可讀指令可被存儲(chǔ)在諸如存儲(chǔ)器106或114中的存儲(chǔ)器中,并且當(dāng)由諸如cpu104或112的處理器執(zhí)行時(shí),可致使計(jì)算裝置執(zhí)行過程600??墒褂脤S糜布蚬碳韺?shí)現(xiàn)過程600。如以上說明的,一些計(jì)算裝置可具有多個(gè)存儲(chǔ)器或處理器,并且可使用多個(gè)處理器、存儲(chǔ)器或這二者來分配過程600的步驟。
為了簡(jiǎn)化說明,過程600被描繪和描述為一系列步驟。然而,根據(jù)本公開的步驟可按各種次序和/或同時(shí)地出現(xiàn)。另外,根據(jù)本公開的步驟可在不存在其他步驟的情況下出現(xiàn)并且在本文中進(jìn)行描述。此外,并非會(huì)需要用所有例示步驟來實(shí)現(xiàn)根據(jù)所公開主題的方法。
期望的是,過程600基本上遵從過程500。然而,在下面對(duì)過程600的描述中指出了一些不同之處。在步驟與過程500中的步驟基本類似的情況下,將參照以上的描述。
在602中,針對(duì)編碼后的視頻位流,解碼器從不同數(shù)量的候選參考運(yùn)動(dòng)矢量中確定當(dāng)前塊的參考運(yùn)動(dòng)矢量。參考運(yùn)動(dòng)矢量與參考?jí)K關(guān)聯(lián)并且包括預(yù)測(cè)部分和殘留部分??赏ㄟ^讀取并且解碼編碼后的視頻位流中的位來傳達(dá)該信息,這些位指示根據(jù)以上公開的技術(shù)中的一種來使用參考運(yùn)動(dòng)矢量。計(jì)算裝置的解碼器已經(jīng)以任何數(shù)量的方式接收到編碼后的位流(或編碼后的視頻數(shù)據(jù)),諸如,憑借通過網(wǎng)絡(luò)、通過電纜、或者通過從主存儲(chǔ)器或其他存儲(chǔ)裝置讀取視頻數(shù)據(jù)來接收視頻數(shù)據(jù),這些其他存儲(chǔ)裝置包括諸如dvd、緊湊閃存(cf)卡、安全數(shù)字(sd)卡、或能夠傳達(dá)視頻流的任何其他裝置。步驟602涉及解碼編碼后的視頻位流中的至少一部分,以提取關(guān)于當(dāng)前塊的運(yùn)動(dòng)矢量的信息。例如,該信息可被包括在與當(dāng)前塊關(guān)聯(lián)的頭部或幀頭部中。一個(gè)或多個(gè)頭部中的信息向解碼器指示將使用幀間預(yù)測(cè)來解碼當(dāng)前塊并且用于該幀間預(yù)測(cè)的運(yùn)動(dòng)矢量依賴于如之前描述的參考運(yùn)動(dòng)矢量。例如,位流中的信息可指示使用參考運(yùn)動(dòng)矢量以不同方式編碼在編碼當(dāng)前塊時(shí)使用的實(shí)際運(yùn)動(dòng)矢量??晒┻x擇地,信息可指示直接使用參考運(yùn)動(dòng)矢量來編碼當(dāng)前塊。
候選參考運(yùn)動(dòng)矢量可包括來自視頻流中的任何先前解碼塊的運(yùn)動(dòng)矢量。先前解碼塊可包括在當(dāng)前塊之前使用幀間預(yù)測(cè)進(jìn)行解碼的任何塊,諸如,先前編碼幀中的塊或在當(dāng)前塊之前已經(jīng)被解碼的與當(dāng)前塊相同的幀中的塊。
先前解碼塊可包括例如在當(dāng)前塊之前被解碼的位于當(dāng)前幀中的塊。例如,在一些編碼/解碼(編解碼器)方案(諸如,以光柵掃描次序編碼的方案)中,先前解碼塊可包括朝向當(dāng)前塊左方的塊、朝向當(dāng)前塊左上方的塊、朝向當(dāng)前塊右上方的塊、當(dāng)前塊上方的塊等。先前解碼塊還可包括位于視頻位流中的當(dāng)前幀的參考幀中的塊。例如,候選參考?jí)K可包括參考幀中的當(dāng)前塊的共同位置塊和參考幀中的以下塊中的至少一個(gè):諸如,朝向共同位置塊右方的塊、共同位置塊下方的塊、朝向共同位置塊左下方的塊和朝向共同位置塊右下方的塊。
一旦確定了參考運(yùn)動(dòng)矢量,就可使用所選擇的參考運(yùn)動(dòng)矢量來解碼用于編碼當(dāng)前塊的運(yùn)動(dòng)矢量。然后,可使用解碼后的運(yùn)動(dòng)矢量來根據(jù)圖4的過程解碼當(dāng)前塊。
過程600可從例如同一參考幀的上方和左方相鄰塊中識(shí)別候選參考運(yùn)動(dòng)矢量。所識(shí)別的候選參考運(yùn)動(dòng)矢量可通過如之前描述的標(biāo)志來實(shí)現(xiàn)和/或通過關(guān)于基于當(dāng)前塊的位置來選擇可用于編碼器和解碼器二者的候選參考運(yùn)動(dòng)矢量來實(shí)現(xiàn)??苫诶鐓⒖?jí)K和當(dāng)前塊和各候選參考運(yùn)動(dòng)矢量的流行度之間的距離,將候選參考運(yùn)動(dòng)矢量排序??舍槍?duì)各候選參考運(yùn)動(dòng)矢量確定參考?jí)K和當(dāng)前塊之間的距離。可基于與多個(gè)候選參考運(yùn)動(dòng)矢量關(guān)聯(lián)的一組先前編碼的像素值通過流行度值來確定各候選參考運(yùn)動(dòng)矢量的流行度。最有可能的候選參考運(yùn)動(dòng)矢量可被指派作為用于例如new_mv模式的預(yù)測(cè)運(yùn)動(dòng)矢量。額外運(yùn)動(dòng)矢量可基于它們與當(dāng)前塊的相對(duì)距離和參考?jí)K和當(dāng)前塊及其流行度值之間的重疊長(zhǎng)度被指派用于ref_mv模式,包括例如nearest_mv模式和new_mv模式。如果候選參考運(yùn)動(dòng)矢量的列表包括不止兩個(gè)候選參考運(yùn)動(dòng)矢量,則參考運(yùn)動(dòng)矢量模式的數(shù)量可動(dòng)態(tài)擴(kuò)展。然后,可確定是要使用new_mv模式還是使用ref_mv模式。當(dāng)選擇ref_mv模式時(shí),過程600還確定是要使用nearest_mv模式還是near_mv模式。
如果使用參考運(yùn)動(dòng)矢量以不同方式編碼當(dāng)前塊的實(shí)際運(yùn)動(dòng)矢量,則解碼器可通過例如解碼隨后可與被選擇用于生成實(shí)際運(yùn)動(dòng)矢量的參考運(yùn)動(dòng)矢量相加的編碼差異值來解碼移動(dòng)矢量。然后,可使用實(shí)際運(yùn)動(dòng)矢量利用幀間預(yù)測(cè)來解碼當(dāng)前塊??墒褂脜⒖歼\(yùn)動(dòng)矢量來識(shí)別預(yù)定概率分布,可使用該概率分布來解碼用于編碼當(dāng)前塊的運(yùn)動(dòng)矢量的大小值,之后再使用移動(dòng)矢量來解碼當(dāng)前塊。類似于圖5的討論,這樣可涉及縮放參考運(yùn)動(dòng)矢量。可直接使用參考運(yùn)動(dòng)矢量作為用于在指示參考運(yùn)動(dòng)矢量應(yīng)該這樣使用的一個(gè)或多個(gè)位之后解碼當(dāng)前塊。
在604中,過程600通過用一個(gè)或多個(gè)閾值評(píng)價(jià)參考運(yùn)動(dòng)矢量的殘留部分來選擇針對(duì)當(dāng)前塊選擇概率場(chǎng)境模型。在602中確定的與參考?jí)K關(guān)聯(lián)的參考運(yùn)動(dòng)矢量包括預(yù)測(cè)部分(“預(yù)測(cè)參考運(yùn)動(dòng)矢量”)和殘留部分(“參考運(yùn)動(dòng)矢量殘留”)??墒褂盟x擇的概率場(chǎng)境模型來解碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留。如之前討論的,運(yùn)動(dòng)矢量(諸如,當(dāng)前塊的運(yùn)動(dòng)矢量或在502中選擇的參考運(yùn)動(dòng)矢量)可均包括預(yù)測(cè)部分和殘留部分。
概率場(chǎng)境模型可包括用于解碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留的概率分布(諸如,預(yù)定的或更新后的概率分布)。解碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留可包括例如使用所選擇的概率場(chǎng)境模型對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼??苫趯?shí)際解碼值來更新概率分布。因?yàn)闊o損編碼方案(例如,熵編碼)中的實(shí)際值和解碼值對(duì)于編碼器和解碼器而言是相同的,所以不需要發(fā)送概率場(chǎng)境模型。
多個(gè)概率場(chǎng)境模型可用于在不同場(chǎng)境中的對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵解碼。用于運(yùn)動(dòng)矢量的熵編碼的場(chǎng)境可以是基于例如參考?jí)K的運(yùn)動(dòng)矢量殘留所指示的運(yùn)動(dòng)強(qiáng)度。例如,當(dāng)用小運(yùn)動(dòng)矢量殘留(例如,低于某個(gè)閾值)來解碼所選擇的參考?jí)K時(shí),好跡象是當(dāng)前塊可具有相對(duì)小的運(yùn)動(dòng)矢量殘留。這可指示當(dāng)前塊具有弱運(yùn)動(dòng)強(qiáng)度,并且可針對(duì)當(dāng)前塊來選擇與指示弱運(yùn)動(dòng)強(qiáng)度的塊的類別關(guān)聯(lián)的概率場(chǎng)境模型。否則,可針對(duì)當(dāng)前塊來選擇與指示強(qiáng)運(yùn)動(dòng)強(qiáng)度的塊的類別關(guān)聯(lián)的不同概率場(chǎng)境模型。
為了選擇用于解碼當(dāng)前塊的運(yùn)動(dòng)矢量殘留的概率場(chǎng)境模型,可將參考運(yùn)動(dòng)矢量的殘留部分的大小與一個(gè)或多個(gè)閾值進(jìn)行比較,以針對(duì)當(dāng)前塊確定運(yùn)動(dòng)強(qiáng)度的指示。
在606中,過程600針對(duì)當(dāng)前塊使用概率場(chǎng)境模型來解碼與當(dāng)前塊關(guān)聯(lián)的運(yùn)動(dòng)矢量。
基于604中選擇的概率場(chǎng)境模型,可使用當(dāng)前塊的運(yùn)動(dòng)矢量殘留的大小來確定用于對(duì)當(dāng)前塊的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼的有效(實(shí)際)概率值??墒褂弥T如算術(shù)編碼的技術(shù),使用概率值對(duì)運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼。在圖8的示例中,當(dāng)選擇與“類別1”塊關(guān)聯(lián)的概率場(chǎng)境模型并且當(dāng)前塊的運(yùn)動(dòng)矢量殘留的大小是1時(shí),可通過從大小0開始向所選擇的概率場(chǎng)境模型(“類別1”)應(yīng)用二叉樹處理直到達(dá)到當(dāng)前塊的目標(biāo)大小,確定用于對(duì)具有大小1的運(yùn)動(dòng)矢量殘留進(jìn)行熵編碼的有效概率是例如((256-50)/256)*(40/256)。在這個(gè)示例中,目標(biāo)大小是1。
位可被包括在視頻流中,用于識(shí)別編碼的運(yùn)動(dòng)矢量大小以及預(yù)定概率分布中的哪個(gè)用于基于可通過過程600解碼的編碼大小來形成運(yùn)動(dòng)矢量。指示哪個(gè)參考幀用于解碼當(dāng)前塊的一個(gè)或多個(gè)位也可被包括在位流中。
一旦解碼了運(yùn)動(dòng)矢量和當(dāng)前塊,就可處理下一個(gè)塊。如果下一個(gè)塊被幀間編碼,則可重復(fù)過程600。可用通過幀內(nèi)或幀間預(yù)測(cè)而重構(gòu)的值推導(dǎo)的塊來重構(gòu)幀。輸出可以是輸出視頻流(諸如,圖4中示出的輸出視頻流416)。
圖9是可實(shí)現(xiàn)為發(fā)送站或接收站的計(jì)算裝置900的示例的框圖。例如,計(jì)算裝置900可實(shí)現(xiàn)圖1的發(fā)送站102和接收站110中的一個(gè)或兩個(gè)。計(jì)算裝置900可處于包括多個(gè)計(jì)算裝置的計(jì)算系統(tǒng)的形式,或者處于單個(gè)計(jì)算裝置的形式,例如,移動(dòng)電話、平板計(jì)算機(jī)、便攜式計(jì)算機(jī)、筆記本計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)等。
計(jì)算裝置900中的cpu902可以是中央處理單元。可供選擇地,cpu902可以是能夠操縱或處理現(xiàn)存或此后開發(fā)的操縱或處理信息的任何其他類型的裝置或多個(gè)裝置。雖然可用如所示出的單個(gè)處理器(例如,cpu902)實(shí)現(xiàn)所公開的實(shí)施方式,但可使用不止一個(gè)處理器來實(shí)現(xiàn)速度和效率的優(yōu)點(diǎn)。
計(jì)算裝置900中的存儲(chǔ)器904可以是實(shí)施方式中的只讀存儲(chǔ)器(rom)裝置或隨機(jī)存取存儲(chǔ)器(ram)裝置??墒褂萌魏魏线m其他類型的存儲(chǔ)裝置作為存儲(chǔ)器904。存儲(chǔ)器904可包括供cpu902使用總線912訪問的代碼和數(shù)據(jù)906。存儲(chǔ)器904還可包括操作系統(tǒng)908和應(yīng)用程序910,應(yīng)用程序910包括允許cpu902執(zhí)行這里所描述方法的至少一個(gè)程序。例如,應(yīng)用程序910可包括應(yīng)用1至n,還包括執(zhí)行這里所描述的方法的視頻編碼應(yīng)用。計(jì)算裝置900還可包括輔存儲(chǔ)器914,輔存儲(chǔ)器914可以是例如用于移動(dòng)計(jì)算裝置的存儲(chǔ)卡。因?yàn)橐曨l通信會(huì)話可包含大量信息,所以它們可被全部或部分地存儲(chǔ)在輔存儲(chǔ)器914中并且根據(jù)需要被加載到存儲(chǔ)器904中以進(jìn)行處理。
計(jì)算裝置900還可包括諸如顯示器918的一個(gè)或多個(gè)輸出裝置。在一個(gè)示例中,顯示器918可以是觸摸感應(yīng)顯示器,將顯示器與可操作用于感測(cè)觸摸輸入的觸摸感應(yīng)元件相結(jié)合。顯示器918可借助總線912聯(lián)接到cpu902。可提供允許用戶將計(jì)算裝置900編程或者以其他方式使用計(jì)算裝置900的其他輸出裝置作為顯示器918的補(bǔ)充或替代。當(dāng)輸出裝置是顯示器或包括顯示器時(shí),可按各種方式(包括lcd、crt顯示器、或諸如oled顯示器的led顯示器)來實(shí)現(xiàn)顯示器。
計(jì)算裝置900還可包括圖像感測(cè)裝置920(例如,相機(jī))或現(xiàn)在存在或此后開發(fā)的可感測(cè)圖像(諸如,操作計(jì)算裝置900的用戶的圖像)的任何其他圖像感測(cè)裝置920或者與其通信。圖像感測(cè)裝置920可被設(shè)置成,使得它指向操作計(jì)算裝置900的用戶。在示例中,圖像感測(cè)裝置920的位置和光學(xué)軸可被配置成使得視場(chǎng)包括與顯示器918緊鄰并且從其可見顯示器918的區(qū)域。
計(jì)算裝置900還可包括聲音感測(cè)裝置922(例如,麥克風(fēng))或現(xiàn)在存在或此后開發(fā)的可感測(cè)計(jì)算裝置900附近的聲音的任何其他聲音感測(cè)裝置。聲音感測(cè)裝置922可被設(shè)置成,使得它指向操作計(jì)算裝置900的用戶并且可被配置成接收在用戶操作計(jì)算裝置900時(shí)用戶發(fā)出的聲音(例如,語言或其他發(fā)言)。
雖然圖9將計(jì)算裝置900的cpu902和存儲(chǔ)器904描繪為集成為單個(gè)單元,但可利用其他配置。cpu902的操作可被分配于可直接聯(lián)接或者跨局域網(wǎng)或其他網(wǎng)絡(luò)的多個(gè)機(jī)器(各機(jī)器具有一個(gè)或多個(gè)處理器)。存儲(chǔ)器904可被分布于多個(gè)機(jī)器,諸如,基于網(wǎng)絡(luò)的存儲(chǔ)器或執(zhí)行計(jì)算裝置900的操作的多個(gè)機(jī)器中的存儲(chǔ)器。雖然這里描繪為單個(gè)總線,但計(jì)算裝置900的總線912可由多個(gè)總線構(gòu)成。另外,輔存儲(chǔ)器914可直接聯(lián)接到計(jì)算裝置900的其他組件或者可借助網(wǎng)絡(luò)來訪問并且可包括諸如存儲(chǔ)卡的單個(gè)集成單元或諸如多個(gè)存儲(chǔ)卡的多個(gè)單元。計(jì)算裝置900因此可在各式各樣的配置中實(shí)現(xiàn)。
上述編碼和解碼的方面示出編碼和解碼技術(shù)的一些示例。然而,要理解,編碼和解碼(如權(quán)利要求書中使用的那些術(shù)語)可意指數(shù)據(jù)的壓縮、解壓縮、變換、或任何其他處理或改變。
詞語“示例”或“方面”在本文中用于意指用作示例、實(shí)例、或圖示。在本文中被描述為“示例”或“方面”的任何方面或設(shè)計(jì)不一定被理解為相對(duì)于其他方面或設(shè)計(jì)是優(yōu)選或有利的。相反,使用詞語“示例”或“方面”旨在以有形方式表現(xiàn)構(gòu)思。如本申請(qǐng)中使用的,術(shù)語“或”旨在意指包括性的“或”而非排他性的“或”。也就是說,除非另外指明,或者從上下文中清楚的,“x包括a或b”旨在意指自然包括性排列中的任一個(gè)。也就是說,如果x包括a;x包括b;或x既包括a又包括b,則在以上情形中的任一個(gè)下滿足“x包括a或b”。另外,本申請(qǐng)和隨附權(quán)利要去書中使用的冠詞“一”和“一個(gè)”大體應(yīng)該被理解為意指“一個(gè)或多個(gè)”,除非另外指明或根據(jù)場(chǎng)境清楚的是指單數(shù)形式。此外,使用術(shù)語“實(shí)施方式”或“方面”始終不旨在意指相同的實(shí)施例或?qū)嵤┓绞?,除非如此描述?/p>
發(fā)送站102和/或接收站110(和存儲(chǔ)在其上和/或供其執(zhí)行包括供編碼器300和解碼器400執(zhí)行的算法、方法、指令等)的實(shí)施方式可用硬件、軟件、或其任何組合來實(shí)現(xiàn)。硬件可包括例如計(jì)算機(jī)、知識(shí)產(chǎn)權(quán)(ip)核、專用集成電路(asic)、可編程邏輯陣列、光學(xué)處理器、可編程邏輯控制器、微代碼、微控制器、服務(wù)器、微處理器、數(shù)字信號(hào)處理器或任何其他合適的電路。在權(quán)利要求書中,術(shù)語“處理器”應(yīng)該被理解為涵蓋以上硬件(單個(gè)或組合地)中的任一個(gè)。術(shù)語“信號(hào)”和“數(shù)據(jù)”可互換地使用。另外,發(fā)送站102和接收站110的一些部分不一定必須以相同方式實(shí)現(xiàn)。
另外,在一個(gè)方面,例如,可使用帶計(jì)算機(jī)程序的通用計(jì)算機(jī)或通用處理器來實(shí)現(xiàn)發(fā)送站102或接收站110,計(jì)算機(jī)程序當(dāng)被執(zhí)行時(shí),執(zhí)行本文中描述的各個(gè)方法、算法和/或指令中的任一個(gè)。作為補(bǔ)充或替代,例如,可利用可包含用于執(zhí)行本文中描述的方法、算法、或指令中的任一個(gè)的其他硬件的專用計(jì)算機(jī)/處理器。
發(fā)送站102和接收站110可以例如在視頻會(huì)議系統(tǒng)中的計(jì)算機(jī)上實(shí)現(xiàn)??晒┻x擇地,發(fā)送站102可在服務(wù)器上實(shí)現(xiàn)并且接收站110可在與服務(wù)器分開的裝置(諸如,手持通信裝置)上實(shí)現(xiàn)。在這種情形下,發(fā)送站102可使用編碼器300將內(nèi)容編碼成編碼視頻信號(hào)并且向通信裝置發(fā)送編碼后的視頻信號(hào)。進(jìn)而,通信裝置可隨后使用解碼器400來解碼編碼后的視頻信號(hào)??晒┻x擇地,通信裝置可解碼本地存儲(chǔ)在通信裝置上的內(nèi)容,例如,不通過發(fā)送站102發(fā)送的內(nèi)容。其他合適的發(fā)送站102和接收站110實(shí)現(xiàn)方案是可用的。例如,接收站110可以是常見固定式個(gè)人計(jì)算機(jī)而非便攜式通信裝置和/或包括編碼器300的裝置還可包括解碼器400。
另外,本公開的實(shí)施方式中的全部或一部分可采取可從例如有形計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問的計(jì)算機(jī)程序產(chǎn)品的形式。計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是任何裝置,可例如有形地包含存儲(chǔ)、通信、或傳輸供任何處理使用或與任何處理器結(jié)合使用的程序。該介質(zhì)可以是例如電子、磁、光學(xué)、電磁、或半導(dǎo)體裝置。還可用其他合適的介質(zhì)。
已經(jīng)描述了上述實(shí)施例、實(shí)施方式和方面,以允許容易理解本公開并且不限制本公開。相反地,本公開旨在涵蓋包括在隨附權(quán)利要求書的范圍內(nèi)的各種修改形式和等同形式,該范圍將給予最廣的解釋,以涵蓋法律所允許的所有這些修改形式和等同結(jié)構(gòu)。