本案是分案申請(qǐng),其母案為于2011年12月13日申請(qǐng)的申請(qǐng)?zhí)枮?01180067583.4的題為“幀間預(yù)測(cè)編碼的運(yùn)動(dòng)畫面的解碼方法”的專利申請(qǐng)。
本發(fā)明涉及一種對(duì)以幀間預(yù)測(cè)模式編碼的運(yùn)動(dòng)畫面的解碼方法,并且更具體地,涉及一種用于通過使用空間運(yùn)動(dòng)矢量的候選項(xiàng)和時(shí)間運(yùn)動(dòng)矢量的候選項(xiàng)來構(gòu)造運(yùn)動(dòng)矢量列表、通過使用接收的運(yùn)動(dòng)矢量索引來解碼當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量并且解碼以幀間預(yù)測(cè)模式編碼的運(yùn)動(dòng)畫面的方法。
背景技術(shù):
在諸如運(yùn)動(dòng)圖像專家組(mpeg)-1、mpeg-2、mpeg-4和h.264/mpeg-4高級(jí)視頻編碼(avc)的圖像壓縮方法中,將一個(gè)畫面劃分為宏塊來對(duì)圖像進(jìn)行編碼。并且,使用幀間預(yù)測(cè)或幀內(nèi)預(yù)測(cè)來對(duì)相應(yīng)的宏塊進(jìn)行編碼。然后,基于將要編碼的宏塊的數(shù)據(jù)大小和原始宏塊的失真來選擇最佳的編碼模式,并且對(duì)該宏塊進(jìn)行編碼。
在幀間預(yù)測(cè)中,使用運(yùn)動(dòng)估計(jì)來消除在連續(xù)畫面之間的時(shí)間冗余。運(yùn)動(dòng)估計(jì)編碼是通過以下方式來編碼圖像的方法:使用一個(gè)或多個(gè)參考畫面來以塊為單位估計(jì)并補(bǔ)償當(dāng)前畫面的運(yùn)動(dòng)。
在運(yùn)動(dòng)估計(jì)編碼中,使用預(yù)定估計(jì)功能在參考畫面的預(yù)定搜索范圍內(nèi)搜索與當(dāng)前塊最類似的塊。如果搜索到最類似的塊,則僅傳送當(dāng)前塊與參考畫面中的最類似塊之間的殘差,以提高數(shù)據(jù)壓縮比。
此時(shí),為了對(duì)運(yùn)動(dòng)估計(jì)編碼的當(dāng)前塊進(jìn)行解碼,用于表示當(dāng)前塊與參考畫面中的類似塊之間的位置差的運(yùn)動(dòng)矢量的信息。因此,當(dāng)編碼當(dāng)前塊時(shí)需要在比特流中插入編碼的運(yùn)動(dòng)矢量的信息。在這個(gè)過程中,如果照原樣編碼并插入運(yùn)動(dòng)矢量的信息,則減小了圖像數(shù)據(jù)的壓縮比,因?yàn)樵龃罅碎_銷。
因此,在幀間預(yù)測(cè)編碼中,使用與當(dāng)前塊相鄰的塊來預(yù)測(cè)當(dāng)前塊的運(yùn)動(dòng)矢量,僅編碼并發(fā)送在生成的運(yùn)動(dòng)矢量預(yù)測(cè)子和原始運(yùn)動(dòng)矢量之間的差值,并且,還壓縮運(yùn)動(dòng)矢量的信息。
在h.264中,作為當(dāng)前塊的運(yùn)動(dòng)矢量的預(yù)測(cè)子的運(yùn)動(dòng)矢量預(yù)測(cè)子被確定為mva、mvb和mvc的中值。由于相鄰塊傾向于彼此類似時(shí),將當(dāng)前塊的運(yùn)動(dòng)矢量確定為相鄰塊的運(yùn)動(dòng)矢量的中值。
但是,如果相鄰塊的一個(gè)或多個(gè)運(yùn)動(dòng)矢量與當(dāng)前塊的運(yùn)動(dòng)矢量不同,則相鄰塊的運(yùn)動(dòng)矢量的中值可能不是當(dāng)前塊的有效運(yùn)動(dòng)矢量預(yù)測(cè)子。另外,當(dāng)圖像的運(yùn)動(dòng)很小或穩(wěn)定時(shí),需要比公知的運(yùn)動(dòng)預(yù)測(cè)方法更有效的預(yù)測(cè)運(yùn)動(dòng)矢量的候選項(xiàng)選擇方法以及運(yùn)動(dòng)矢量編碼或解碼方法。
技術(shù)實(shí)現(xiàn)要素:
技術(shù)問題
本發(fā)明涉及提供一種適時(shí)地使用與當(dāng)前預(yù)測(cè)單元相鄰的預(yù)測(cè)單元的運(yùn)動(dòng)矢量和位于不同畫面中的預(yù)定位置處的運(yùn)動(dòng)矢量之一來編碼當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量的幀間預(yù)測(cè)方法。
技術(shù)方案
本發(fā)明的一個(gè)方面提供了一種幀內(nèi)預(yù)測(cè)模式的運(yùn)動(dòng)畫面的解碼方法,包括;生成當(dāng)前預(yù)測(cè)單元的預(yù)測(cè)塊的步驟;以及,生成所述當(dāng)前預(yù)測(cè)單元的殘差塊的步驟,其中,所述生成預(yù)測(cè)塊的步驟包括以下步驟:從接收的比特流獲得所述當(dāng)前預(yù)測(cè)單元的參考畫面索引和運(yùn)動(dòng)矢量差;導(dǎo)出左空間運(yùn)動(dòng)矢量候選項(xiàng)和上空間運(yùn)動(dòng)矢量候選項(xiàng);導(dǎo)出時(shí)間運(yùn)動(dòng)矢量候選項(xiàng);構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表,并且如果多個(gè)運(yùn)動(dòng)矢量候選項(xiàng)具有相同的運(yùn)動(dòng)矢量,則刪除在所述運(yùn)動(dòng)矢量候選項(xiàng)列表中的除了順序在先的運(yùn)動(dòng)矢量候選項(xiàng)之外的運(yùn)動(dòng)矢量候選項(xiàng);如果運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量小于預(yù)定數(shù)量,則向所述列表增加零矢量;將由來自所述接收的比特流的運(yùn)動(dòng)矢量索引指示的運(yùn)動(dòng)矢量候選項(xiàng)確定為運(yùn)動(dòng)矢量預(yù)測(cè)子,并且,使用所述運(yùn)動(dòng)矢量差和所述運(yùn)動(dòng)矢量預(yù)測(cè)子來恢復(fù)所述當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量;并且,使用所述恢復(fù)的運(yùn)動(dòng)矢量和所述參考畫面索引來生成所述當(dāng)前預(yù)測(cè)單元的預(yù)測(cè)塊,其中,所述時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)是當(dāng)檢索與所述當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的多個(gè)塊或預(yù)定塊的運(yùn)動(dòng)矢量時(shí)遇到的第一可用的運(yùn)動(dòng)矢量。
有益效果
根據(jù)本發(fā)明的一種方法通過以下方式來精確地解碼當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量,由此高效地編碼當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)信息:使用位于與當(dāng)前預(yù)測(cè)單元相鄰的預(yù)定位置處的預(yù)測(cè)單元的可用的空間運(yùn)動(dòng)矢量候選項(xiàng),以及位于與在先前編碼的參考畫面中的當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的位置處并且位于與在先前編碼的參考畫面中的當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的位置相鄰的位置處的預(yù)測(cè)單元的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)之一。因此,降低了解碼器的計(jì)算復(fù)雜度和帶寬,并且,迅速且精確地解碼運(yùn)動(dòng)信息。
附圖說明
圖1是圖示根據(jù)本發(fā)明的在最大編碼單元中掃描編碼單元的方法的概念圖。
圖2是根據(jù)本發(fā)明的運(yùn)動(dòng)畫面編碼設(shè)備的框圖。
圖3是根據(jù)本發(fā)明的運(yùn)動(dòng)畫面解碼設(shè)備的框圖。
圖4是圖示根據(jù)本發(fā)明的空間跳躍候選塊的位置的概念圖。
圖5是圖示根據(jù)本發(fā)明的在與當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的時(shí)間跳躍候選畫面中的塊的位置的概念圖。
圖6是示出根據(jù)本發(fā)明的用于生成運(yùn)動(dòng)矢量候選項(xiàng)的相鄰預(yù)測(cè)單元的位置的概念圖。
具體實(shí)施方式
以下參考附圖詳細(xì)描述本發(fā)明的各種實(shí)施例。然而,本發(fā)明不限于以下公開的示例性實(shí)施例,而是可以以各種方式實(shí)施。因此,能夠?qū)Ρ景l(fā)明進(jìn)行的許多其他修改和改變,并且應(yīng)當(dāng)明白在所公開的構(gòu)想的范圍內(nèi),可以按照已經(jīng)具體描述之外的方式來實(shí)施本發(fā)明。
畫面被劃分為多個(gè)片斷,并且每一個(gè)片斷被劃分為多個(gè)最大編碼單元(lcu)。通過地址指示符來指示每一個(gè)lcu的位置。lcu可以是編碼單元本身,或者可以被劃分為多個(gè)編碼單元。lcu包含用于指示在lcu中的編碼單元的結(jié)構(gòu)的信息。一個(gè)或多個(gè)劃分標(biāo)記用于指示在lcu中的編碼單元的結(jié)構(gòu)。
各個(gè)編碼單元(cu)由一個(gè)或多個(gè)預(yù)測(cè)單元構(gòu)成。預(yù)測(cè)單元是幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)的基本單位。
每一個(gè)編碼單元由一個(gè)或多個(gè)預(yù)測(cè)單元(pu)構(gòu)成。變換單元(tu)是用于變換編碼的基本塊。在幀內(nèi)預(yù)測(cè)中,預(yù)測(cè)單元包含一個(gè)或多個(gè)變換單元。在幀間預(yù)測(cè)中,變換單元可以由一個(gè)或多個(gè)預(yù)測(cè)單元構(gòu)成。在序列參數(shù)集(sps)中限定預(yù)測(cè)單元的最大大小,并且,可以將變換單元?jiǎng)澐譃檫f歸四叉樹的形式。在幀內(nèi)預(yù)測(cè)中的預(yù)測(cè)單元的最大大小可以與在幀間預(yù)測(cè)中的預(yù)測(cè)單元的最大大小不同。在sps中包含在幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)中的預(yù)測(cè)單元的最大大小。
用于亮度分量的編碼單元的預(yù)測(cè)單元結(jié)構(gòu)與用于色度分量的編碼單元的預(yù)測(cè)單元結(jié)構(gòu)相同。但是,用于亮度分量的編碼單元的變換單元結(jié)構(gòu)可以與用于色度分量的編碼單元的預(yù)測(cè)單元結(jié)構(gòu)不同。也就是說,可以不考慮亮度分量的變換單元大小來確定色度分量的變換單元大小。例如,可以通過編碼單元的大小來確定色度分量的變換單元的大小??梢酝ㄟ^預(yù)先確定色度分量的最大深度信息來自適應(yīng)地調(diào)整色度分量的變換單元大小。例如,如果亮度分量的深度信息等于或小于色度分量的深度信息,則根據(jù)亮度分量的變換單元的劃分信息來劃分色度分量的變換單元。相反,如果亮度分量的深度信息大于色度分量的深度信息,則可以將色度分量的變換單元設(shè)置為不小于色度分量的變換單元的最大深度信息的大小。色度分量的變換單元的最大深度信息可以被編碼器預(yù)先設(shè)置或確定,并且被發(fā)送到解碼器。
掃描用于解碼的編碼單元的過程如下。首先,從比特流解析lcu的地址。還解析lcu大小。lcu大小可以是在編碼器和解碼器之間的預(yù)定值,或者可以被插入比特流的序列數(shù)據(jù)頭或畫面數(shù)據(jù)頭中。使用lcu的地址和/或大小來獲得lcu的左上像素的位置。
圖1是圖示根據(jù)本發(fā)明的在最大編碼單元中掃描編碼單元的方法的概念圖。如圖1所示,以光柵順序遞歸地掃描在lcu中的編碼單元。
如果在編碼單元中存在多個(gè)預(yù)測(cè)單元,則也以光柵順序掃描預(yù)測(cè)單元。通過預(yù)測(cè)單元索引來指定預(yù)測(cè)單元的位置。因此,使用預(yù)測(cè)單元索引來獲得預(yù)測(cè)單元的左上像素。
如果在編碼單元中存在多個(gè)變換單元,則也以光柵順序遞歸地掃描預(yù)測(cè)單元。使用變換單元索引來獲得變換單元的左上像素。
將描述由編碼器發(fā)送的參數(shù)。通過序列數(shù)據(jù)頭來發(fā)送序列參數(shù)集(sps)。序列參數(shù)集包括編碼單元的最小大小和最大劃分深度信息。序列參數(shù)集也包括變換單元的最小大小和最大變換深度信息。變換深度信息可以在幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)中不同。
片斷數(shù)據(jù)頭包括片斷類型。如果片斷類型是p或b,則表示用于生成預(yù)測(cè)塊的方法的信息被包括。片斷數(shù)據(jù)頭可以包括用于指示當(dāng)編碼運(yùn)動(dòng)信息時(shí)是否使用時(shí)間候選項(xiàng)的標(biāo)記。時(shí)間候選項(xiàng)是在與當(dāng)前預(yù)測(cè)單元的位置對(duì)應(yīng)的位置或附近存在的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。有可能多個(gè)運(yùn)動(dòng)矢量位于與當(dāng)前預(yù)測(cè)單元的位置對(duì)應(yīng)的位置處或附近,或者在與當(dāng)前預(yù)測(cè)單元的位置對(duì)應(yīng)的位置處附近。在這種情況下,將根據(jù)當(dāng)前預(yù)測(cè)單元的位置預(yù)定的一個(gè)運(yùn)動(dòng)矢量選擇為時(shí)間運(yùn)動(dòng)矢量??梢愿鶕?jù)在lcu中的當(dāng)前預(yù)測(cè)單元的位置來改變候選項(xiàng)的位置。片斷數(shù)據(jù)頭可以包括指示時(shí)間候選畫面是否屬于參考畫面列表0或參考畫面列表1的標(biāo)記。如果沒有用于指示參考畫面列表的標(biāo)記,則將該標(biāo)記的值當(dāng)作1(也就是說,參考畫面列表0)。
片斷數(shù)據(jù)頭包括用于在片斷類型是p或b的情況下管理用于存儲(chǔ)參考畫面的存儲(chǔ)器的信息。
片斷數(shù)據(jù)頭包括用于指示是否向當(dāng)前片斷應(yīng)用自適應(yīng)回路濾波的標(biāo)記。如果應(yīng)用自適應(yīng)回路濾波,則片斷數(shù)據(jù)頭進(jìn)一步包括自適應(yīng)回路濾波器(alf)參數(shù)信息。alf參數(shù)信息包括用于指示亮度分量的水平濾波器長度和/或垂直濾波器長度的信息。alf參數(shù)信息可以包括用于指示濾波器的數(shù)量的信息。如果濾波器的數(shù)量是2或更多,則可以使用預(yù)測(cè)方法來編碼濾波器的系數(shù)。另外,可以在片斷數(shù)據(jù)頭中包括是否使用預(yù)測(cè)方法的信息。
也可以對(duì)色度分量進(jìn)行自適應(yīng)濾波。alf參數(shù)信息可以包括是否對(duì)各個(gè)色度分量進(jìn)行濾波的信息。為了減小比特的數(shù)量,可以對(duì)指示是否對(duì)cr分量進(jìn)行濾波的信息以及指示是否對(duì)cb分量進(jìn)行濾波的信息進(jìn)行聯(lián)合編碼或復(fù)用。在未對(duì)cr和crb分量兩者進(jìn)行濾波的情況下,通過指配最低索引來執(zhí)行熵編碼,因?yàn)閏r和cb分量兩者未被濾波的可能性很高。并且,該信息可以包括用于指示色度分量的水平濾波器長度和/或垂直濾波器長度的信息和濾波器信息。
可以在畫面數(shù)據(jù)頭或另一個(gè)參數(shù)集中發(fā)送alf參數(shù)。在這種情況下,片斷數(shù)據(jù)頭不包括alf參數(shù),并且alf參數(shù)可以包括用于指示alf參數(shù)的索引信息。
可以基于編碼單元或基于等于或大于預(yù)定大小的編碼單元來執(zhí)行alf處理。并且,片斷數(shù)據(jù)頭可以包括用于指示是否向?qū)Ω鱾€(gè)編碼單元應(yīng)用自適應(yīng)回路濾波處理的信息。在這種情況下,用于指示cu的大小的信息可以是預(yù)定大小,并且可以被包括在片斷數(shù)據(jù)頭中。
片斷包括片斷數(shù)據(jù)頭和多個(gè)lcu。lcu包括用于指示在lcu中的cu結(jié)構(gòu)的信息。cu結(jié)構(gòu)是遞歸四叉樹結(jié)構(gòu)。cu結(jié)構(gòu)可以包括指示是否將cu的預(yù)定大小劃分為cu的較小大小的信息(split_coding_unit_flag)。最大大小的編碼單元不包含split_coding_unit_flag。編碼單元可以包括用于指示是否應(yīng)用alf的信息(alf_flag)。如果不包括alf_flag,則認(rèn)為未應(yīng)用alf。因此,解碼器確定是否包括alf_flag,并且如果包括alf_flag則根據(jù)alf_flag的值來自適應(yīng)地應(yīng)用回路濾波器。
在h.264中,為了對(duì)預(yù)測(cè)矢量進(jìn)行編碼,使用左相鄰塊a、上相鄰塊b和右上相鄰塊c的運(yùn)動(dòng)矢量的水平分量和垂直分量的中值。但是,在hevc中,因?yàn)閷⒆赃m應(yīng)大小的預(yù)測(cè)單元用于運(yùn)動(dòng)補(bǔ)償,所以當(dāng)前預(yù)測(cè)單元的大小很可能與相鄰預(yù)測(cè)單元的大小不同。因此,將運(yùn)動(dòng)矢量預(yù)測(cè)如下。
位于的左運(yùn)動(dòng)矢量和上運(yùn)動(dòng)矢量被用作空間運(yùn)動(dòng)矢量候選項(xiàng)。左運(yùn)動(dòng)矢量是多個(gè)左相鄰預(yù)測(cè)單元之一的運(yùn)動(dòng)矢量,并且上運(yùn)動(dòng)矢量是多個(gè)上相鄰預(yù)測(cè)單元之一的運(yùn)動(dòng)矢量。相鄰預(yù)測(cè)單元可以位于預(yù)定位置處。例如,左運(yùn)動(dòng)矢量是當(dāng)以第一預(yù)定順序檢索多個(gè)左相鄰預(yù)測(cè)單元時(shí)首先遇到的可用的運(yùn)動(dòng)矢量,并且,上運(yùn)動(dòng)矢量是當(dāng)以第二預(yù)定順序檢索多個(gè)上相鄰預(yù)測(cè)單元時(shí)首先遇到的可用的運(yùn)動(dòng)矢量。如果當(dāng)前預(yù)測(cè)單元位于畫面或片斷的上邊界處,則只有左運(yùn)動(dòng)矢量被用作空間運(yùn)動(dòng)矢量候選項(xiàng)。另外,如果當(dāng)前預(yù)測(cè)單元位于畫面或片斷的左邊界處,則僅上運(yùn)動(dòng)矢量被用作空間運(yùn)動(dòng)矢量候選項(xiàng)。
預(yù)定塊的運(yùn)動(dòng)矢量被用作時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。預(yù)定塊位于與當(dāng)前預(yù)測(cè)單元的位置對(duì)應(yīng)的時(shí)間候選畫面的位置處或附近。多個(gè)塊可以位于時(shí)間參考畫面候選項(xiàng)的位置處或附近。因此,預(yù)定塊可以是通過當(dāng)前預(yù)測(cè)單元的位置確定的塊,或者可以是按照預(yù)定順序的多個(gè)塊之一??梢愿鶕?jù)在當(dāng)前預(yù)測(cè)單元的lcu中的當(dāng)前預(yù)測(cè)單元的位置來確定預(yù)定塊。在包括當(dāng)前預(yù)測(cè)單元的片斷是b片斷的情況下,確定包含時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的時(shí)間候選畫面是否屬于參考畫面列表0或1。用于指示一個(gè)參考畫面列表的列表指示符被插入片斷數(shù)據(jù)頭中,并且被發(fā)送到解碼器。如果片斷數(shù)據(jù)頭不包含列表指示符,則將列表指示符看作1(也就是說,用于指示參考畫面列表0)。
編碼當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量的過程如下。
首先,獲得當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。
接下來,導(dǎo)出當(dāng)前預(yù)測(cè)單元和與當(dāng)前預(yù)測(cè)單元相鄰的可用的左運(yùn)動(dòng)矢量候選項(xiàng)和可用的上運(yùn)動(dòng)矢量候選項(xiàng)。如果相鄰預(yù)測(cè)單元的運(yùn)動(dòng)矢量不存在或當(dāng)前預(yù)測(cè)單元的相鄰塊位于當(dāng)前片斷的邊界之外,則將相鄰塊的運(yùn)動(dòng)矢量確定為不可用的。
接下來,可以自適應(yīng)地縮放空間運(yùn)動(dòng)矢量候選項(xiàng)。如果當(dāng)前預(yù)測(cè)單元和相鄰預(yù)測(cè)單元具有相同的參考畫面,則不縮放運(yùn)動(dòng)矢量候選項(xiàng)。但是,如果當(dāng)前預(yù)測(cè)單元和相鄰預(yù)測(cè)單元具有不同的參考畫面并且該參考畫面的時(shí)間距離不相同,則可以使用時(shí)間距離來縮放運(yùn)動(dòng)矢量候選項(xiàng)。對(duì)于靜止圖像或背景圖像,可以不縮放運(yùn)動(dòng)矢量。在這種情況下,用于指示是否應(yīng)用縮放的信息(標(biāo)記)可以被發(fā)送到解碼器??臻g運(yùn)動(dòng)矢量候選項(xiàng)的縮放的次數(shù)可以限于預(yù)定數(shù)。例如,縮放次數(shù)可以是1。在這種情況下,如果執(zhí)行一次縮放,則將要縮放的第二空間運(yùn)動(dòng)矢量候選項(xiàng)設(shè)置為不可用的。
接下來,導(dǎo)出可用的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。該可用的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)與如上所述相同。
接下來,使用可用的空間和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)來構(gòu)造候選項(xiàng)列表。在可用的空間運(yùn)動(dòng)矢量候選項(xiàng)后列出可用的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。如果多個(gè)運(yùn)動(dòng)矢量候選項(xiàng)相同,則從候選項(xiàng)列表刪除較低優(yōu)先級(jí)的運(yùn)動(dòng)矢量候選項(xiàng)。
接下來,在可用的空間和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)中選擇當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子。當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量可以是預(yù)定的。如果可用的運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量大于該預(yù)定數(shù)量,則在該預(yù)定數(shù)量的運(yùn)動(dòng)矢量候選項(xiàng)中選擇當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子。如果可用的運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量小于該預(yù)定數(shù)量,則可以增加一個(gè)或多個(gè)額外的運(yùn)動(dòng)矢量候選項(xiàng)。該額外的運(yùn)動(dòng)矢量候選項(xiàng)可以是零矢量。
接下來,獲得并編碼運(yùn)動(dòng)矢量差。也編碼用于指示運(yùn)動(dòng)矢量預(yù)測(cè)子的信息。運(yùn)動(dòng)矢量差是在當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和與前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子之差。
解碼當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量的過程如下。
解碼當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量差。
恢復(fù)用于指示當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子的信息。
通過下面的過程來確定用于獲得當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子的運(yùn)動(dòng)矢量候選項(xiàng)。
首先,導(dǎo)出當(dāng)前預(yù)測(cè)單元的相鄰預(yù)測(cè)單元的可用的左運(yùn)動(dòng)矢量候選項(xiàng)和可用的上運(yùn)動(dòng)矢量候選項(xiàng)。如果相鄰預(yù)測(cè)單元的運(yùn)動(dòng)矢量不存在或當(dāng)前預(yù)測(cè)單元的相鄰塊位于當(dāng)前片斷的邊界之外,則將相鄰塊的運(yùn)動(dòng)矢量確定為不可用的。
接下來,可以自適應(yīng)地縮放空間運(yùn)動(dòng)矢量候選項(xiàng)。如果當(dāng)前預(yù)測(cè)單元和相鄰預(yù)測(cè)單元具有相同的參考畫面,則不縮放運(yùn)動(dòng)矢量候選項(xiàng)。但是,如果當(dāng)前預(yù)測(cè)單元和相鄰預(yù)測(cè)單元具有不同的參考畫面或參考畫面的時(shí)間距離不同,則可以使用時(shí)間距離來縮放運(yùn)動(dòng)矢量候選項(xiàng)。對(duì)于靜止圖像或背景圖像,可以不縮放運(yùn)動(dòng)矢量??臻g運(yùn)動(dòng)矢量候選項(xiàng)的縮放次數(shù)可以限于預(yù)定數(shù)量。例如,縮放次數(shù)可以是1。在這種情況下,如果執(zhí)行一次縮放,則將要縮放的第二空間運(yùn)動(dòng)矢量候選項(xiàng)設(shè)置為不可用的。
接下來,導(dǎo)出可用的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)??捎玫臅r(shí)間運(yùn)動(dòng)矢量候選項(xiàng)與如上所述相同。
接下來,使用可用的空間運(yùn)動(dòng)矢量候選項(xiàng)和可用的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)來構(gòu)造候選項(xiàng)列表。在可用的空間運(yùn)動(dòng)矢量候選項(xiàng)后列出可用的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。如果多個(gè)運(yùn)動(dòng)矢量候選項(xiàng)相同,則從候選項(xiàng)列表刪除較低優(yōu)先級(jí)的運(yùn)動(dòng)矢量候選項(xiàng)。
接下來,在可用的空間運(yùn)動(dòng)矢量候選項(xiàng)和可用的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)中選擇運(yùn)動(dòng)矢量預(yù)測(cè)子。運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量可以是預(yù)定的。如果可用的運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量大于預(yù)定數(shù)量,則在該預(yù)定數(shù)量的運(yùn)動(dòng)矢量候選項(xiàng)中選擇運(yùn)動(dòng)矢量預(yù)測(cè)子。如果可用的運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量小于預(yù)定數(shù)量,則可以增加一個(gè)或多個(gè)額外的運(yùn)動(dòng)矢量候選項(xiàng)。該額外的運(yùn)動(dòng)矢量候選項(xiàng)是零矢量。
當(dāng)導(dǎo)出當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量候選項(xiàng)時(shí),將與用于指示當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子的信息對(duì)應(yīng)的一個(gè)運(yùn)動(dòng)矢量候選項(xiàng)確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子。
使用運(yùn)動(dòng)矢量差和運(yùn)動(dòng)矢量預(yù)測(cè)子來獲得當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。
時(shí)間候選畫面的參考畫面索引可以是0。
圖2是根據(jù)本發(fā)明的運(yùn)動(dòng)畫面編碼設(shè)備100的框圖。
參見圖2,根據(jù)本發(fā)明的運(yùn)動(dòng)畫面編碼設(shè)備100包括畫面劃分單元110、變換單元120、熵編碼單元130、掃描單元131、幀內(nèi)預(yù)測(cè)單元140、幀間預(yù)測(cè)單元150、幀間預(yù)測(cè)單元160、逆量化單元135、逆變換單元125、后處理單元170、畫面存儲(chǔ)單元180、減法器190和加法器195。
畫面劃分單元110劃分并分析輸入視頻信號(hào),以將畫面的每一個(gè)lcu劃分為各個(gè)都具有預(yù)定大小的一個(gè)或多個(gè)編碼單元,確定各個(gè)編碼單元的預(yù)測(cè)模式,并且確定每一個(gè)編碼單元的預(yù)測(cè)單元的大小。畫面劃分單元110根據(jù)預(yù)定模式向幀間預(yù)測(cè)單元150或幀間預(yù)測(cè)單元160發(fā)送要編碼的預(yù)測(cè)單元。另外,畫面劃分單元110向減法器190發(fā)送要編碼的預(yù)測(cè)單元。
變換單元120變換作為在預(yù)測(cè)單元的原始?jí)K和由幀間預(yù)測(cè)單元150或幀間預(yù)測(cè)單元160生成的預(yù)測(cè)塊之間的殘差信號(hào)的殘差塊。殘差塊的變換單元的大小等于或小于編碼單元的大小。在幀內(nèi)預(yù)測(cè)中,變換單元的大小等于或小于預(yù)測(cè)單元的大小。在幀間預(yù)測(cè)中,變換單元的大小也等于或小于預(yù)測(cè)單元的大小,雖然變換單元的大小可以大于預(yù)測(cè)單元的大小??梢愿鶕?jù)預(yù)定模式(幀內(nèi)或幀間)和幀內(nèi)預(yù)測(cè)模式來自適應(yīng)地確定變換矩陣。可以通過水平的和垂直的一維(1d)變換矩陣來對(duì)變換單元進(jìn)行變換。
在幀間預(yù)測(cè)中,對(duì)每一個(gè)預(yù)定變換矩陣應(yīng)用一個(gè)變換方向。
如果預(yù)測(cè)模式是亮度分量的幀內(nèi)預(yù)測(cè)并且變換單元的大小等于或小于預(yù)定大小,則自適應(yīng)地確定垂直的和水平的一維變換矩陣。例如,如果幀內(nèi)預(yù)測(cè)模式是水平的,則很可能殘差塊具有垂直方向性。因此,向垂直方向應(yīng)用基于離散余弦變換(dct)的整數(shù)矩陣,并且向水平方向應(yīng)用基于離散正弦變換(dst)或基于kl變換(klt)的整數(shù)矩陣。如果幀內(nèi)預(yù)測(cè)模式是垂直的,則向垂直方向應(yīng)用基于dst或klt的整數(shù)矩陣,并且向水平方向應(yīng)用基于dct的整數(shù)矩陣。另外,在dc模式中,向水平和垂直方向應(yīng)用基于dct的整數(shù)矩陣。也就是說,在亮度分量的幀內(nèi)預(yù)測(cè)中,可以根據(jù)變換單元的大小和幀內(nèi)預(yù)測(cè)模式來自適應(yīng)地確定變換矩陣。同時(shí),在色度分量的幀內(nèi)預(yù)測(cè)模式中,變換矩陣是預(yù)定矩陣,而與預(yù)測(cè)模式和幀內(nèi)預(yù)測(cè)模式無關(guān)。
同時(shí),可以每一個(gè)變換單元在多個(gè)變換模式中自適應(yīng)地選擇一個(gè)變換模式,并且,可以向解碼器發(fā)送所選擇的變換模式。多個(gè)變換模式可以包括二維變換、垂直變換和水平變換。可以通過變換模式來確定掃描單元131的掃描模式。例如,如果變換模式是二維變換,則選擇第一掃描模式(對(duì)角掃描),如果變換模式是垂直變換,則選擇第二掃描模式(水平掃描),如果變換模式是水平變換則選擇第三掃描模式(垂直掃描),并且,如果變換模式是其中不應(yīng)用變換的模式,則選擇第一掃描模式。
熵編碼單元130確定用于量化由變換矩陣變換的殘差塊的變換系數(shù)的量化步長。在具有等于或大于預(yù)定大小的大小的編碼單元上確定量化步長。對(duì)于具有小于預(yù)定大小的大小的編碼單元,在預(yù)定大小上確定量化步長。使用所確定的量化步長和根據(jù)預(yù)定模式確定的量化矩陣,量化變換塊的變換系數(shù)。當(dāng)當(dāng)前預(yù)測(cè)單元的大小等于或大于預(yù)定大小時(shí),熵編碼單元130可以以掃描順序使用相鄰編碼單元的量化步長或前一個(gè)編碼單元的量化步長來確定當(dāng)前預(yù)測(cè)單元的量化步長預(yù)測(cè)子。
例如,熵編碼單元130可以根據(jù)當(dāng)前編碼單元的幀內(nèi)預(yù)測(cè)模式將左編碼單元的量化步長、上編碼單元的量化步長或左和上編碼單元的量化步長的平均值確定為量化步長預(yù)測(cè)子。如果上編碼單元不存在,則可以將左編碼單元或前一個(gè)編碼單元的量化步長確定為量化步長預(yù)測(cè)子。如果左編碼單元不可用的,則可以將上編碼單元或前一個(gè)編碼單元的量化步長確定為量化步長預(yù)測(cè)子。當(dāng)使用左和上編碼單元的量化步長的平均值時(shí),如果僅一個(gè)量化步長可用的,則可以將可用的量化步長或前一個(gè)編碼單元的量化步長確定為量化步長預(yù)測(cè)子。上述方法可以僅被應(yīng)用到在lcu內(nèi)的編碼單元。也就是說,如果左或上編碼單元位于lcu的邊界之外,則可以將該編碼單元看作不可用的編碼單元。
量化的變換塊被提供到逆量化單元135和掃描單元131。
掃描單元131掃描量化的變換塊的系數(shù)或用于指示量化的變換系數(shù)是否存在的信息,并且將該系數(shù)和信息變換為一維系數(shù)。根據(jù)預(yù)測(cè)模式和幀內(nèi)預(yù)測(cè)模式來確定掃描圖案。也可以根據(jù)變換單元的大小來確定掃描模式。
掃描單元131根據(jù)當(dāng)前變換單元的大小來確定是否將量化的變換塊劃分為多個(gè)子集。如果變換單元的大小大于第一參考大小,則將量化的變換塊劃分為多個(gè)子集。第一參考大小是4×4或8×8。
掃描單元131確定要應(yīng)用于量化的變換塊的掃描模式。在幀間預(yù)測(cè)中,使用預(yù)定掃描模式(例如,鋸齒形掃描)。在幀內(nèi)預(yù)測(cè)中,基于幀內(nèi)預(yù)測(cè)模式來選擇掃描模式,并且可以根據(jù)定向幀內(nèi)預(yù)測(cè)模式而改變。第一掃描模式用于非定向幀內(nèi)預(yù)測(cè)模式。非定向幀內(nèi)預(yù)測(cè)模式是dc模式和平面模式。以正向或反向執(zhí)行掃描。當(dāng)將量化的系數(shù)被劃分為多個(gè)子集時(shí),將同一個(gè)的掃描模式應(yīng)用于所有的子集。該多個(gè)子集由一個(gè)主子集和一個(gè)或多個(gè)殘差子集構(gòu)成。主子集位于左上側(cè),并且包括dc系數(shù)。該一個(gè)或多個(gè)殘差子集覆蓋除主子集之外的區(qū)域。
第一掃描模式可以被應(yīng)用來掃描子集??梢栽谡蛏蠌闹髯蛹_始向殘差子集掃描子集,或者可以在反向上掃描子集。用于掃描子集的掃描模式可以被設(shè)置得與用于掃描在子集中的量化的變換系數(shù)的掃描模式相同。在這種情況下,根據(jù)幀內(nèi)預(yù)測(cè)模式來確定用于掃描子集的掃描模式。
編碼器向解碼器發(fā)送能夠指示變換單元的最后一個(gè)非零量化系數(shù)的信息。編碼器還向解碼器發(fā)送能夠指示每一個(gè)子集的最后一個(gè)非零量化系數(shù)的位置的信息或用于指示每個(gè)子集是否包括非零系數(shù)的信息。
逆量化單元135將量化的變換系數(shù)進(jìn)行逆量化。逆變換單元125從逆量化的變換系數(shù)恢復(fù)空間域的殘差塊。加法器通過將由逆變換單元125重構(gòu)的殘差塊與來自幀間預(yù)測(cè)單元150或幀間預(yù)測(cè)單元160的預(yù)測(cè)塊相加來生成重構(gòu)的塊。
后處理單元170執(zhí)行去塊濾波處理,用于去除在重構(gòu)的畫面中生成的塊效應(yīng),執(zhí)行自適應(yīng)偏移應(yīng)用處理,用于補(bǔ)充在每個(gè)像素的重構(gòu)的畫面與原始圖像之間的差別,并且執(zhí)行自適應(yīng)回路濾波處理,用于補(bǔ)充在編碼單元中的重構(gòu)畫面與原始圖像之間的差別。
去塊濾波處理可以被應(yīng)用到在具有預(yù)定大小或更大的預(yù)測(cè)單元之間的邊界以及在變換單元之間的邊界。該預(yù)定大小可以是8×8。該去塊濾波處理包括:確定要濾波的邊界的步驟;確定要向邊界應(yīng)用的邊界濾波強(qiáng)度的步驟;確定是否應(yīng)用去塊濾波器的步驟;以及,當(dāng)確定應(yīng)用去塊濾波器時(shí)選擇要向邊界應(yīng)用的濾波器的步驟。
確定是否應(yīng)用去塊濾波器的依據(jù)是:i)邊界濾波強(qiáng)度是否大于0;以及,ii)用于指示在p塊和q塊的邊界像素之差的值是否小于根據(jù)量化參數(shù)確定的第一參考值。
可以存在兩個(gè)或更多個(gè)濾波器。當(dāng)在與塊邊界相鄰的兩個(gè)像素之差的絕對(duì)值等于或大于第二參考值時(shí),選擇弱濾波器。通過量化參數(shù)和邊界濾波強(qiáng)度來確定第二參考值。
可以基于通過比較原始圖像與應(yīng)用了去塊濾波處理或自適應(yīng)偏移應(yīng)用處理的重構(gòu)圖像而獲得的值來執(zhí)行自適應(yīng)回路濾波處理。通過基于4×4塊的一個(gè)拉普拉斯算子活性值(laplacianactivityvalue)來檢測(cè)自適應(yīng)回路濾波器(alf)。所確定的alf可以被應(yīng)用于在4×4塊或8×8塊中包括的所有像素??梢愿鶕?jù)編碼單元來確定是否要應(yīng)用alf?;芈窞V波器的大小和系數(shù)可以根據(jù)每一個(gè)編碼單元而改變。片斷數(shù)據(jù)頭可以包括用于指示是否要對(duì)各個(gè)編碼單元應(yīng)用alf的信息、濾波器系數(shù)信息和濾波器形狀信息等。在色度分量的情況下,可以以畫面為單位來確定是否應(yīng)用alf。與亮度不同,回路濾波器可以具有矩形。
畫面存儲(chǔ)單元180從后處理單元160接收后處理的圖像數(shù)據(jù),并且以畫面為單位存儲(chǔ)圖像。畫面可以是在幀或域中的圖像。畫面存儲(chǔ)單元180具有能夠存儲(chǔ)多個(gè)畫面的緩沖器(未示出)。
幀間預(yù)測(cè)單元150使用在畫面存儲(chǔ)單元180中存儲(chǔ)的一個(gè)或多個(gè)參考畫面來執(zhí)行運(yùn)動(dòng)估計(jì),并且確定用于指示參考畫面的參考畫面索引和運(yùn)動(dòng)矢量。根據(jù)參考畫面索引和運(yùn)動(dòng)矢量,幀間預(yù)測(cè)單元150從在幀間預(yù)測(cè)單元150中存儲(chǔ)的多個(gè)參考畫面中選擇的參考畫面提取與要編碼的預(yù)測(cè)單元對(duì)應(yīng)的預(yù)測(cè)塊,并且輸出所提取的預(yù)測(cè)塊。
幀內(nèi)預(yù)測(cè)單元140使用在當(dāng)前畫面內(nèi)的重構(gòu)的像素值來執(zhí)行幀內(nèi)預(yù)測(cè)。幀內(nèi)預(yù)測(cè)單元140接收要預(yù)測(cè)編碼的當(dāng)前預(yù)測(cè)單元,選擇預(yù)定數(shù)量的幀內(nèi)預(yù)測(cè)模式之一,并且執(zhí)行幀內(nèi)預(yù)測(cè)。幀內(nèi)預(yù)測(cè)模式的預(yù)定數(shù)量可以取決于當(dāng)前預(yù)測(cè)單元的大小。幀內(nèi)預(yù)測(cè)單元自適應(yīng)地濾波參考像素以生成幀內(nèi)預(yù)測(cè)塊。當(dāng)一些參考像素不可用時(shí),就能夠使用一個(gè)或多個(gè)可用的參考像素來在不可用的位置處生成參考像素。
熵編碼單元130對(duì)量化單元130所量化的量化系數(shù)、從幀內(nèi)預(yù)測(cè)單元140接收的幀內(nèi)預(yù)測(cè)信息和從幀間預(yù)測(cè)單元150接收的運(yùn)動(dòng)信息等進(jìn)行熵編碼。
圖3是根據(jù)本發(fā)明的運(yùn)動(dòng)畫面解碼設(shè)備的框圖。
參見圖3,根據(jù)本發(fā)明的運(yùn)動(dòng)畫面解碼設(shè)備包括熵解碼單元210、逆量化/變換單元220、加法器270、后處理單元250、畫面存儲(chǔ)單元260、幀內(nèi)預(yù)測(cè)單元230、幀間預(yù)測(cè)單元240和開關(guān)280。
熵解碼單元210從運(yùn)動(dòng)畫面編碼設(shè)備發(fā)送的所接收的比特流提取幀內(nèi)預(yù)測(cè)模式索引、運(yùn)動(dòng)矢量和量化系數(shù)序列(殘差塊信號(hào))等。熵解碼單元210向幀間預(yù)測(cè)單元240發(fā)送解碼的運(yùn)動(dòng)信息,向幀內(nèi)預(yù)測(cè)單元230和逆量化/變換單元220發(fā)送幀內(nèi)預(yù)測(cè)模式索引,并且向逆量化/變換單元220發(fā)送量化的系數(shù)序列。
逆量化/變換單元220包括逆掃描單元221、逆量化單元222和逆變換單元223。
逆掃描單元221將量化的系數(shù)序列轉(zhuǎn)換為二維逆量化系數(shù)。選擇多個(gè)逆掃描模式之一進(jìn)行轉(zhuǎn)換?;诋?dāng)前塊的預(yù)測(cè)模式(幀內(nèi)預(yù)測(cè)模式或幀間預(yù)測(cè)模式)和幀內(nèi)預(yù)測(cè)模式的至少一個(gè)來選擇逆掃描模式。
例如,在幀間預(yù)測(cè)中,使用第一掃描模式(例如,鋸齒形掃描或?qū)菕呙?。在幀內(nèi)預(yù)測(cè)中,基于幀內(nèi)預(yù)測(cè)模式來選擇第二掃描模式??梢愿鶕?jù)定向幀內(nèi)預(yù)測(cè)模式來改變第二掃描模式。對(duì)于非定向幀內(nèi)預(yù)測(cè)模式,可以應(yīng)用第一掃描模式。
如果要解碼的當(dāng)前變換單元的大小大于第一預(yù)定參考大小并且以子集為單位來編碼當(dāng)前變換單元,則通過逆掃描每一個(gè)子集來恢復(fù)量化的變換塊。在這種情況下,向所有的子集應(yīng)用相同的掃描模式。該多個(gè)子集由一個(gè)主子集和一個(gè)或多個(gè)殘差子集構(gòu)成。該主子集位于左上側(cè),并且包括dc系數(shù)。該一個(gè)或多個(gè)殘差子集覆蓋除主子集之外的區(qū)域。
第一掃描模式可以被應(yīng)用來逆掃描子集??梢栽谡蛏蠌闹髯蛹_始向殘差子集來對(duì)子集進(jìn)行掃描,或者可以在反向上掃描子集。用于掃描子集的掃描模式可以被設(shè)置為與用于掃描在子集中的量化的變換系數(shù)的掃描模式相同。在這種情況下,根據(jù)幀內(nèi)預(yù)測(cè)模式來確定對(duì)子集進(jìn)行逆向掃描的掃描模式。
當(dāng)變換單元的大小等于或大于預(yù)定大小時(shí),可以通過解碼用于指示各個(gè)子集是否包括非零系數(shù)的信息來執(zhí)行逆掃描。也就是說,可以通過以下方式來恢復(fù)量化的變換塊:使用信息對(duì)包括非零系數(shù)的子集中的系數(shù)進(jìn)行逆掃描,并且將包括0的所有子集設(shè)置為0。
逆量化單元222生成當(dāng)前編碼單元的量化步長預(yù)測(cè)子。在具有等于或大于預(yù)定大小的編碼單元上確定量化步長。如果在該預(yù)定大小中包括多個(gè)編碼單元,則根據(jù)該預(yù)定大小來確定量化步長。逆量化單元222可以利用相鄰編碼單元的一個(gè)或多個(gè)量化步長或前一個(gè)編碼單元的量化步長以掃描順序來確定量化步長預(yù)測(cè)子。
逆量化單元222恢復(fù)量化步長以逆量化2d逆量化系數(shù)。在具有等于或大于預(yù)定大小的編碼單元上確定量化步長。如果編碼單元的大小小于預(yù)定大小,則將以預(yù)定大小為單位在每一個(gè)編碼單元確定的預(yù)定量化步長確定為量化步長。逆量化單元222可以以掃描順序?qū)?dāng)前預(yù)測(cè)單元的一個(gè)或多個(gè)相鄰編碼單元的量化步長或前一個(gè)編碼單元的量化步長用作當(dāng)前編碼單元的量化步長預(yù)測(cè)子。
例如,逆量化單元222可以根據(jù)當(dāng)前編碼單元的幀內(nèi)預(yù)測(cè)模式而自適應(yīng)地選擇左編碼單元的量化步長、上編碼單元的量化步長或等于左和上量化步長的量化步長的舍入平均值來作為當(dāng)前編碼單元的量化步長預(yù)測(cè)子。
如果上編碼單元不存在,則可以將左編碼單元或前一個(gè)編碼單元的量化步長確定為量化步長預(yù)測(cè)子。如果左編碼單元不可用的,則可以將上編碼單元或前一個(gè)編碼單元的量化步長確定為量化步長預(yù)測(cè)子。當(dāng)使用左和上編碼單元的量化步長的舍入平均值時(shí),如果僅一個(gè)量化步長是可用的,則可以將這個(gè)可用的量化步長和前一個(gè)編碼單元的量化步長確定為量化步長預(yù)測(cè)子。在幀間預(yù)測(cè)中,量化步長預(yù)測(cè)子是左和上編碼單元的量化步長的舍入平均值或前一個(gè)編碼單元的量化步長。同時(shí),可以僅對(duì)lcu內(nèi)的編碼單元應(yīng)用上述方法。也就是說,如果左或上編碼單元位于lcu的邊界之外,則該編碼單元可以被看作不可用的編碼單元。
當(dāng)確定量化步長預(yù)測(cè)子時(shí),通過將接收的殘差量化步長與量化步長預(yù)測(cè)子相加來生成當(dāng)前編碼單元的量化步長。然后,使用由量化步長和預(yù)測(cè)模式確定的逆量化矩陣來對(duì)量化的變換系數(shù)進(jìn)行逆量化。
如果逆量化的塊是亮度塊并且預(yù)測(cè)模式是幀內(nèi)預(yù)測(cè),則逆變換單元223根據(jù)變換單元的大小來確定逆變換矩陣。例如,如果變換單元的大小等于或小于預(yù)定大小,則根據(jù)幀內(nèi)預(yù)測(cè)模式來確定垂直和水平一維逆變換矩陣。例如,如果幀內(nèi)預(yù)測(cè)模式是水平的,則殘差塊很可能具有垂直方向。因此,向垂直方向應(yīng)用基于dct的整數(shù)矩陣,并且向水平方向應(yīng)用基于dst或klt的整數(shù)矩陣。如果幀內(nèi)預(yù)測(cè)模式是垂直的,則向垂直方向應(yīng)用基于dst或klt的整數(shù)矩陣,并且向水平方向應(yīng)用基于dct的整數(shù)矩陣。另外,在dc模式中,向水平和垂直方向應(yīng)用基于dct的整數(shù)矩陣。也就是說,在亮度分量的幀內(nèi)預(yù)測(cè)中,可以根據(jù)變換單元的大小和幀內(nèi)預(yù)測(cè)模式來自適應(yīng)地確定逆變換矩陣。同時(shí),在色度分量的幀內(nèi)預(yù)測(cè)模式中,逆變換矩陣是預(yù)定矩陣,而與預(yù)測(cè)模式(幀內(nèi)預(yù)測(cè)模式或幀間預(yù)測(cè)模式)和幀內(nèi)預(yù)測(cè)模式無關(guān)。
加法器270將由逆量化/變換單元220恢復(fù)的恢復(fù)殘差塊和由幀內(nèi)預(yù)測(cè)單元230或幀間預(yù)測(cè)單元240生成的預(yù)測(cè)塊相加以生成重構(gòu)塊。
后處理單元250執(zhí)行:去塊濾波處理,用于去除在重構(gòu)的畫面中產(chǎn)生的塊效應(yīng);自適應(yīng)偏移應(yīng)用處理,用于補(bǔ)充在每一個(gè)像素的重構(gòu)的畫面和原始圖像之間的差別;以及,自適應(yīng)回路濾波處理,用于補(bǔ)充在編碼單元中的重構(gòu)畫面和原始圖像之間的差別。
去塊濾波處理可以被應(yīng)用到在具有預(yù)定大小或更大的預(yù)測(cè)單元和變換單元的邊界。在預(yù)測(cè)單元或變換單元的水平長度或垂直長度小于8的情況下,可以向具有大小為8×8的塊邊緣應(yīng)用去塊濾波處理。首先對(duì)垂直邊緣進(jìn)行濾波,然后對(duì)水平邊緣進(jìn)行濾波。該去塊濾波處理包括:確定要濾波的邊界的步驟;確定要向邊界應(yīng)用的邊界濾波強(qiáng)度的步驟;確定是否應(yīng)用去塊濾波器的步驟;以及,當(dāng)確定應(yīng)用去塊濾波器時(shí)選擇要向邊界應(yīng)用的濾波器的步驟。
確定是否應(yīng)用去塊濾波器的依據(jù)是:i)邊界濾波強(qiáng)度是否大于0;以及,ii)用于指示在p塊和q塊的邊界像素之間的差別的值是否小于根據(jù)量化參數(shù)確定的第一參考值。
可以存在兩個(gè)或更多的濾波器。當(dāng)在與塊邊界相鄰的兩個(gè)像素之差的絕對(duì)值等于或大于第二參考值時(shí),選擇弱濾波器。通過量化參數(shù)和邊界濾波強(qiáng)度來確定第二參考值。
可以基于通過比較原始圖像和應(yīng)用了去塊濾波處理或自適應(yīng)偏移應(yīng)用處理的重構(gòu)圖像而獲得的值來執(zhí)行自適應(yīng)回路濾波處理。通過基于4×4塊的一個(gè)拉普拉斯行為值來檢測(cè)自適應(yīng)回路濾波器(alf)。所確定的alf可以被應(yīng)用到在4×4塊或8×8塊中包括的所有像素??梢愿鶕?jù)編碼單元來確定是否要應(yīng)用alf?;芈窞V波器的大小和系數(shù)可以根據(jù)每一個(gè)編碼單元而改變。片斷數(shù)據(jù)頭可以包括用于指示是否要向每一個(gè)編碼單元應(yīng)用alf的信息、濾波器系數(shù)信息和濾波器形狀信息等。在色度分量的情況下,可以以畫面為單位來確定是否應(yīng)用alf。與亮度不同,回路濾波器可以具有矩形形狀。
畫面存儲(chǔ)單元260是用于存儲(chǔ)由后處理單元250進(jìn)行濾波的局部重構(gòu)畫面的幀存儲(chǔ)器。
幀內(nèi)預(yù)測(cè)單元230基于接收的幀內(nèi)預(yù)測(cè)模式索引來恢復(fù)當(dāng)前塊的幀內(nèi)預(yù)測(cè)模式,并且根據(jù)恢復(fù)的幀內(nèi)預(yù)測(cè)模式來生成預(yù)測(cè)塊。
開關(guān)280根據(jù)預(yù)測(cè)模式向加法器270提供由幀內(nèi)預(yù)測(cè)單元230或幀間預(yù)測(cè)單元240生成的預(yù)測(cè)單元。
幀間預(yù)測(cè)單元240基于接收的運(yùn)動(dòng)信息來恢復(fù)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)信息,并且基于恢復(fù)的運(yùn)動(dòng)信息來從在畫面存儲(chǔ)單元260中存儲(chǔ)的畫面生成預(yù)測(cè)塊。當(dāng)應(yīng)用十進(jìn)制精度的運(yùn)動(dòng)補(bǔ)償時(shí),幀間預(yù)測(cè)單元240通過應(yīng)用所選擇的內(nèi)插濾波器來生成預(yù)測(cè)塊。
現(xiàn)在,描述幀間預(yù)測(cè)模式的運(yùn)動(dòng)圖像的解碼方法。該方法包括:生成當(dāng)前預(yù)測(cè)單元的預(yù)測(cè)塊的過程、恢復(fù)當(dāng)前預(yù)測(cè)單元的殘差塊的過程和使用所述預(yù)測(cè)塊和所述殘差塊來生成重構(gòu)塊的過程。通過圖3的幀間預(yù)測(cè)單元240來執(zhí)行生成預(yù)測(cè)塊的過程。
生成當(dāng)前預(yù)測(cè)單元的預(yù)測(cè)塊的過程如下。該過程包括:1)導(dǎo)出預(yù)測(cè)單元的運(yùn)動(dòng)信息的步驟;以及,2)用于生成預(yù)測(cè)單元的預(yù)測(cè)塊的步驟。該運(yùn)動(dòng)信息包括運(yùn)動(dòng)矢量、預(yù)測(cè)方向和參考畫面索引。
當(dāng)以跳躍模式對(duì)預(yù)測(cè)單元進(jìn)行編碼時(shí),生成預(yù)測(cè)塊的過程如下。如果在所接收的編碼單元中的skip_flag是1,則預(yù)測(cè)單元是編碼單元。
圖4是示出根據(jù)本發(fā)明的空間跳躍候選項(xiàng)的位置的概念圖。如圖4所示,左預(yù)測(cè)單元(a塊)、上預(yù)測(cè)單元(b塊)、右上預(yù)測(cè)單元(c塊)和左下預(yù)測(cè)單元(d塊)可以是空間跳躍候選項(xiàng)。當(dāng)存在多個(gè)左預(yù)測(cè)單元時(shí),可以將最上的左預(yù)測(cè)單元或最下的左預(yù)測(cè)單元確定為左預(yù)測(cè)單元。當(dāng)存在多個(gè)上預(yù)測(cè)單元時(shí),可以將最左的上預(yù)測(cè)單元或最右的上預(yù)測(cè)單元確定為上預(yù)測(cè)單元。
首先,查看每個(gè)空間跳躍候選項(xiàng)(a、b、c、d)的可用的性。如果預(yù)測(cè)單元不存在或預(yù)測(cè)單元的預(yù)測(cè)模式是幀內(nèi)預(yù)測(cè),則將候選塊確定為不可用的。
如果超過預(yù)定數(shù)量的一個(gè)或多個(gè)候選塊a、b、c和d不可用的,則當(dāng)前預(yù)測(cè)單元的左上預(yù)測(cè)單元(e塊)可以是空間跳躍候選項(xiàng),??梢愿鶕?jù)從編碼器發(fā)送的跳躍候選項(xiàng)的數(shù)量來確定該預(yù)定數(shù)量。
導(dǎo)出時(shí)間跳躍候選項(xiàng)。導(dǎo)出時(shí)間跳躍候選項(xiàng)的過程包括用于導(dǎo)出時(shí)間跳躍候選項(xiàng)的參考畫面索引的步驟和用于導(dǎo)出時(shí)間跳躍候選項(xiàng)的運(yùn)動(dòng)矢量的步驟。時(shí)間跳躍候選項(xiàng)的參考畫面索引可以被設(shè)置為0,或者可以使用空間相鄰的預(yù)測(cè)單元的參考畫面索引來導(dǎo)出時(shí)間跳躍候選項(xiàng)的參考畫面索引。該相鄰的預(yù)測(cè)單元是預(yù)定的。
按照如下方式導(dǎo)出用于時(shí)間跳躍候選項(xiàng)的運(yùn)動(dòng)矢量。
首先,確定時(shí)間跳躍候選項(xiàng)塊所屬的畫面(以下,“時(shí)間跳躍候選畫面”)??梢詫⑺饕?的參考畫面確定為時(shí)間跳躍候選畫面。例如,當(dāng)片斷類型是p時(shí),將參考畫面列表0的第一參考畫面確定為時(shí)間跳躍候選畫面。當(dāng)片斷類型是b時(shí),使用用于指示時(shí)間跳躍候選畫面的片斷數(shù)據(jù)頭的標(biāo)記來選擇一個(gè)參考畫面列表,并且將該選擇的參考畫面列表的第一參考畫面確定為時(shí)間跳躍候選畫面。例如,當(dāng)該標(biāo)記是1時(shí),從所選擇的參考畫面列表0導(dǎo)出時(shí)間跳躍候選畫面,而當(dāng)標(biāo)記是0時(shí),從所選擇的參考畫面列表1導(dǎo)出時(shí)間跳躍候選畫面。
可替代地,將由時(shí)間跳躍候選項(xiàng)的參考畫面索引指示的參考畫面確定為時(shí)間跳躍候選項(xiàng)塊所屬的時(shí)間跳躍候選畫面。
接下來,導(dǎo)出時(shí)間跳躍候選塊。與當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的多個(gè)塊之一被選定為時(shí)間跳躍候選塊。所述多個(gè)塊被包括在時(shí)間跳躍候選畫面中。在這種情況下,基于當(dāng)前預(yù)測(cè)單元的位置來選擇多個(gè)塊之一,或者,選擇位于預(yù)定位置處的多個(gè)塊之一。當(dāng)選擇多個(gè)塊之一時(shí),將基于向多個(gè)塊指配的優(yōu)先級(jí)而確定的第一可用的塊被選定為時(shí)間跳躍候選塊。如果與當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的塊的運(yùn)動(dòng)矢量是不可用的,則認(rèn)為時(shí)間跳躍候選項(xiàng)是不可用的。
圖5是圖示根據(jù)本發(fā)明的在與當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的時(shí)間跳躍候選畫面中的塊的位置的概念圖。
在選定候選塊之一的情況下,右下角的塊(br_c塊)或右下塊(br塊)可以是第一跳躍候選塊。并且,包括左上像素的塊(c1塊)以及被包括在時(shí)間跳躍候選畫面中并且與當(dāng)前預(yù)測(cè)單元相對(duì)應(yīng)的塊的中心位置的左上像素的塊(c2塊)可以是第二跳躍候選塊。如果第一候選塊是可用的,則將第一候選塊確定為時(shí)間跳躍候選塊。如果第一候選塊是不可用的并且第二候選塊是可用的,則將第二候選塊確定為時(shí)間跳躍候選塊。
在當(dāng)前預(yù)測(cè)單元位于畫面的下邊界或右邊界時(shí),如果第二跳躍候選塊是可用的,則將第二候選塊確定為時(shí)間跳躍候選塊。在當(dāng)前預(yù)測(cè)單元位于片斷或lcu的下邊界處時(shí),如果第二跳躍候選塊是可用的,則將第二候選塊確定為時(shí)間跳躍候選塊。
接下來,生成跳躍候選列表。
使用可用的空間和時(shí)間跳躍候選項(xiàng)來生成跳躍候選列表。可以以預(yù)定順序來列出跳躍候選項(xiàng)。該預(yù)定順序可以是空間左跳躍候選項(xiàng)(a塊)、空間上跳躍候選項(xiàng)(b塊)、時(shí)間跳躍候選項(xiàng)、空間右上跳躍候選項(xiàng)(c塊)和空間左下跳躍候選項(xiàng)(d塊)的順序。
可以根據(jù)從編碼器發(fā)送的跳躍候選項(xiàng)的數(shù)量來改變?cè)擃A(yù)定順序。在這種情況下,不改變空間跳躍候選項(xiàng)的順序(也就是說,a、b、c、d、e,并且允許可用的空間跳躍候選項(xiàng)),但是,可以改變時(shí)間跳躍候選項(xiàng)的優(yōu)先級(jí)。
例如,如果跳躍候選項(xiàng)的數(shù)量是5,則在可用的的空間跳躍候選項(xiàng)后列出時(shí)間跳躍候選項(xiàng)。如果跳躍候選項(xiàng)的數(shù)量是3,則可以調(diào)整時(shí)間跳躍候選項(xiàng)的順序,使得在頭三個(gè)列出時(shí)間候選項(xiàng)。可以按照空間左跳躍候選項(xiàng)(a塊)、空間上跳躍候選項(xiàng)(b塊)和時(shí)間跳躍候選項(xiàng)的順序來列出跳躍候選項(xiàng)。如果存在兩個(gè)或更多個(gè)可用的空間跳躍候選項(xiàng),則在兩個(gè)可用的空間跳躍候選項(xiàng)之后列出時(shí)間跳躍候選項(xiàng)。當(dāng)跳躍候選項(xiàng)的數(shù)量是2或4時(shí),應(yīng)用同一方法。
同時(shí),如果在跳躍候選項(xiàng)列表中的可用的跳躍候選項(xiàng)的數(shù)量小于從編碼器接收的候選項(xiàng)數(shù)量,則生成一個(gè)或多個(gè)跳躍候選項(xiàng)。在最后一個(gè)可用的跳躍候選項(xiàng)之后列出所生成的跳躍候選項(xiàng)。當(dāng)生成多個(gè)跳躍候選項(xiàng)時(shí),以預(yù)定順序來增加這些候選項(xiàng)。
使用多種方法以預(yù)定順序來生成跳躍候選項(xiàng)。用于生成跳躍候選項(xiàng)的方法取決于當(dāng)前預(yù)測(cè)單元所屬的片斷的類型。
在當(dāng)前片斷類型是b并且可用的跳躍候選項(xiàng)的數(shù)量是2或更多時(shí),可以使用第一種方法。當(dāng)?shù)谝豢捎玫奶S候選項(xiàng)的參考列表與第二可用的跳躍候選項(xiàng)的參考列表不同時(shí),可以結(jié)合第一可用的跳躍候選項(xiàng)的運(yùn)動(dòng)信息和第一可用的跳躍候選項(xiàng)的運(yùn)動(dòng)信息以生成一個(gè)或多個(gè)跳躍候選項(xiàng)。所生成的跳躍候選項(xiàng)是雙向運(yùn)動(dòng)信息。如果生成多個(gè)跳躍候選項(xiàng),則根據(jù)預(yù)定順序來增加所生成的跳躍候選項(xiàng)?;诳捎玫奶S候選項(xiàng)的索引來確定該預(yù)定順序。通過第一種方法生成的跳躍候選項(xiàng)的數(shù)量可以限于預(yù)定數(shù)量。
在第二種方法中,增加具有零運(yùn)動(dòng)矢量的跳躍候選項(xiàng)。具有零運(yùn)動(dòng)矢量的跳躍候選項(xiàng)是單向l0跳躍候選項(xiàng)、單向l1跳躍候選項(xiàng)和雙向跳躍候選項(xiàng)之一。單向l0跳躍候選項(xiàng)具有零運(yùn)動(dòng)矢量、參考畫面列表0和參考畫面索引0。單向l1跳躍候選項(xiàng)具有零運(yùn)動(dòng)矢量、參考畫面列表1和參考畫面索引0。雙向跳躍候選項(xiàng)是單向l0跳躍候選項(xiàng)和單向l1跳躍候選項(xiàng)的組合。
在當(dāng)前片斷類型是p時(shí),增加單向l0跳躍候選項(xiàng)。在當(dāng)前片斷類型是b時(shí),可以增加具有零運(yùn)動(dòng)矢量的一個(gè)或多個(gè)跳躍候選項(xiàng)。對(duì)于片斷類型b,可以首先增加雙向跳躍候選項(xiàng),或者可以按照預(yù)定順序(例如,按照雙向跳躍候選項(xiàng)和單向跳躍候選項(xiàng)的順序)來增加具有零運(yùn)動(dòng)矢量的跳躍候選項(xiàng),直到達(dá)到了跳躍候選項(xiàng)的數(shù)量。
接下來,導(dǎo)出當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考畫面索引。
當(dāng)在所接收的預(yù)測(cè)單元中存在跳躍索引時(shí),由該跳躍索引指示的跳躍候選項(xiàng)的運(yùn)動(dòng)矢量和參考畫面索引被確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引。當(dāng)在所接收的預(yù)測(cè)單元中沒有跳躍索引并且存在跳躍候選項(xiàng)時(shí),將該跳躍候選項(xiàng)的運(yùn)動(dòng)矢量和參考畫面索引確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引。
當(dāng)跳躍候選項(xiàng)指示時(shí)間跳躍候選項(xiàng)時(shí),將該時(shí)間跳躍候選項(xiàng)的運(yùn)動(dòng)矢量確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量,并且將時(shí)間跳躍候選項(xiàng)的參考畫面索引確定為當(dāng)前預(yù)測(cè)單元的參考畫面索引。
如果導(dǎo)出當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考畫面索引,則使用在由參考畫面索引指示的畫面中的運(yùn)動(dòng)矢量來生成預(yù)測(cè)塊。預(yù)測(cè)塊被輸出為當(dāng)前預(yù)測(cè)單元的重構(gòu)塊。
接下來,描述合并模式。
當(dāng)編碼單元中的skip_flag(跳躍標(biāo)記)是0并且在所接收的預(yù)測(cè)單元中的merge_flag(合并標(biāo)記)是1時(shí),生成預(yù)測(cè)塊的過程與生成跳躍模式的預(yù)測(cè)塊的過程幾乎相同。
從相鄰的預(yù)測(cè)單元導(dǎo)出可用的的空間合并候選項(xiàng)。用于獲得空間合并候選項(xiàng)的過程與用于獲得空間跳躍候選項(xiàng)的過程相同。但是,在當(dāng)前預(yù)測(cè)單元是2n×n、n×2n、2n×nu、2n×nd、nl×2n或nr×2n并且當(dāng)前預(yù)測(cè)單元是分區(qū)1時(shí),刪除與分區(qū)0對(duì)應(yīng)的合并候選項(xiàng)。
用于獲得時(shí)間合并候選項(xiàng)的過程與用于獲得時(shí)間跳躍候選項(xiàng)的過程相同。
構(gòu)造合并候選項(xiàng)列表的過程以及生成合并候選項(xiàng)的過程與在跳躍模式中的過程相同。
當(dāng)在接收的預(yù)測(cè)單元中存在合并索引時(shí),將由在合并候選項(xiàng)列表中的合并索引指示的合并候選項(xiàng)的運(yùn)動(dòng)矢量和參考畫面索引確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引。當(dāng)在接收的預(yù)測(cè)單元中沒有合并索引時(shí),將第一可用的合并候選項(xiàng)的運(yùn)動(dòng)矢量和參考畫面索引確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引。
如果導(dǎo)出當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考畫面索引,則使用由參考畫面索引指示的畫面中的參考畫面來生成預(yù)測(cè)塊。
接下來,通過熵解碼、逆掃描、逆量化和逆變換從接收的殘差信號(hào)恢復(fù)殘差塊。分別通過圖2的解碼設(shè)備的熵解碼單元210、逆掃描單元221、逆量化單元222和逆變換單元223來執(zhí)行所述過程。
最后,使用預(yù)測(cè)塊和殘差塊來生成當(dāng)前預(yù)測(cè)單元的重構(gòu)塊。
接下來,將描述amvp模式。當(dāng)編碼單元中的skip_flag是0并且所接收的預(yù)測(cè)單元中的merge_flag是0時(shí),應(yīng)用amvp模式。生成預(yù)測(cè)塊的過程如下。
首先,從接收的比特流獲得當(dāng)前預(yù)測(cè)單元的參考畫面索引和運(yùn)動(dòng)矢量差。如果片斷類型是b,則查看幀間預(yù)測(cè)信息(inter_pred_flag)。如果幀間預(yù)測(cè)信息指示使用組合參考畫面列表(pred_lc)的單向預(yù)測(cè),則使用參考畫面索引來選擇在組合的參考畫面列表(list_c)的參考畫面中的參考畫面,并且恢復(fù)運(yùn)動(dòng)矢量差。如果幀間預(yù)測(cè)信息指示使用參考畫面列表0的單向預(yù)測(cè),則使用參考畫面列表0的參考畫面索引來選擇參考畫面,并且恢復(fù)運(yùn)動(dòng)矢量差。如果幀間預(yù)測(cè)信息指示雙向預(yù)測(cè),則使用參考畫面列表0和1的各個(gè)參考畫面索引來選擇各個(gè)參考畫面,并且,恢復(fù)各個(gè)參考畫面的各個(gè)運(yùn)動(dòng)矢量差。
接下來,確定運(yùn)動(dòng)矢量預(yù)測(cè)。在空間運(yùn)動(dòng)矢量候選項(xiàng)和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)中選擇運(yùn)動(dòng)矢量預(yù)測(cè)子。
圖6是示出根據(jù)本發(fā)明的用于生成運(yùn)動(dòng)矢量候選項(xiàng)的相鄰預(yù)測(cè)單元的位置的概念圖。
空間左運(yùn)動(dòng)矢量候選項(xiàng)可以是當(dāng)前預(yù)測(cè)單元的左預(yù)測(cè)單元之一(塊a0塊和a1塊之一)??臻g上運(yùn)動(dòng)矢量候選項(xiàng)可以是當(dāng)前預(yù)測(cè)單元的上預(yù)測(cè)單元(b0塊、b1塊和b2塊)之一。
首先,將描述用于導(dǎo)出空間左運(yùn)動(dòng)矢量候選項(xiàng)的過程。
通過按照a0塊和a1塊的順序檢索當(dāng)前預(yù)測(cè)單元的左塊來查看是否存在滿足第一條件或第二條件的預(yù)測(cè)單元。第一條件是:1)存在預(yù)測(cè)單,2)該預(yù)測(cè)單元是幀間預(yù)測(cè)編碼的單元,3)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元相同的參考畫面,并且,4)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元相同的參考畫面列表。如果存在滿足第一條件的預(yù)測(cè)單元,則將該預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間左運(yùn)動(dòng)矢量候選項(xiàng)。第二條件是:1)存在預(yù)測(cè)單元,2)該預(yù)測(cè)單元是幀間預(yù)測(cè)編碼的單元,3)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元相同的參考畫面,并且,4)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元不同的參考畫面列表。如果存在滿足第二條件的預(yù)測(cè)單元,則將該預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間左運(yùn)動(dòng)矢量候選項(xiàng)。如果存在滿足第一條件或第二條件的預(yù)測(cè)單元,則將該預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間左運(yùn)動(dòng)矢量候選項(xiàng)。
如果不存在滿足第一條件和第二條件的任意一個(gè)的預(yù)測(cè)單元,則當(dāng)按照a0塊和a1塊的順序來檢索左塊時(shí)查看是否存在滿足第三條件或第四條件的預(yù)測(cè)單元。第三條件是:1)存在預(yù)測(cè)單元,2)該預(yù)測(cè)單元是幀間預(yù)測(cè)編碼的單元,3)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元相同的參考畫面列表,并且,4)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元不同的參考畫面。如果存在滿足第三條件的預(yù)測(cè)單元,則將該預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間左運(yùn)動(dòng)矢量候選項(xiàng)。第四條件是:1)存在預(yù)測(cè)單元,2)該預(yù)測(cè)單元是幀間預(yù)測(cè)編碼的單元,3)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元不同的參考畫面列表,并且,4)該預(yù)測(cè)單元具有與當(dāng)前預(yù)測(cè)單元不同的參考畫面。如果存在滿足第三條件或第四條件的預(yù)測(cè)單元,則將該預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間左運(yùn)動(dòng)矢量候選項(xiàng)。
滿足第一條件或第二條件的預(yù)測(cè)單元的運(yùn)動(dòng)矢量不進(jìn)行縮放。但是,滿足第三條件或第四條件的預(yù)測(cè)單元的運(yùn)動(dòng)矢量進(jìn)行縮放。
如果沒有滿足任何一個(gè)條件的預(yù)測(cè)單元,則空間左運(yùn)動(dòng)矢量候選項(xiàng)是不可用的。
用于導(dǎo)出空間上運(yùn)動(dòng)矢量候選項(xiàng)的過程如下。
當(dāng)按照b0塊、b1塊和b2塊的順序來檢索上面的塊時(shí),查看是否存在滿足第一條件或第二條件的預(yù)測(cè)單元。如果存在滿足第一條件或第二條件的預(yù)測(cè)單元,則將該預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間上運(yùn)動(dòng)矢量候選項(xiàng)。
如果不存在滿足第一條件和第二條件的任一個(gè)的預(yù)測(cè)單元,則查看是否存在滿足第三條件或第四條件的預(yù)測(cè)單元。如果存在滿足第三條件或第四條件的預(yù)測(cè)單元,則將預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間左運(yùn)動(dòng)矢量候選項(xiàng)。但是,如果空間左運(yùn)動(dòng)矢量候選項(xiàng)滿足第三條件或第四條件,則空間上運(yùn)動(dòng)矢量候選項(xiàng)可以被設(shè)置為不可用的。
導(dǎo)出時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的過程與導(dǎo)出時(shí)間跳躍候選項(xiàng)的運(yùn)動(dòng)矢量的過程相同。
接下來,構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表。
使用可用的的空間和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)來構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表。可以按照預(yù)定順序來構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表。該預(yù)定順序是空間左運(yùn)動(dòng)矢量候選項(xiàng)(a塊)、空間上運(yùn)動(dòng)矢量候選項(xiàng)(b塊)和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的順序,或者時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)、空間左運(yùn)動(dòng)矢量候選項(xiàng)(a塊)和空間上運(yùn)動(dòng)矢量候選項(xiàng)(b塊)的順序。
可以根據(jù)預(yù)測(cè)單元的預(yù)測(cè)模式來改變預(yù)定順序。
接下來,如果多個(gè)候選項(xiàng)具有相同的運(yùn)動(dòng)矢量,則在運(yùn)動(dòng)矢量候選項(xiàng)列表中刪除最低優(yōu)先級(jí)的候選項(xiàng)。如果在列表中的運(yùn)動(dòng)矢量候選項(xiàng)的數(shù)量小于預(yù)定數(shù)量,則增加零矢量。
接下來,獲得當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子。將由運(yùn)動(dòng)矢量索引指示的運(yùn)動(dòng)矢量候選項(xiàng)確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)子。
接下來,通過將從編碼器接收的運(yùn)動(dòng)矢量差和運(yùn)動(dòng)矢量預(yù)測(cè)子相加來生成當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。并且,使用從編碼器接收的參考畫面索引和恢復(fù)的運(yùn)動(dòng)矢量來生成預(yù)測(cè)塊。
另外,通過熵解碼、逆掃描、逆量化和逆變換從自編碼器接收的殘差信號(hào)來恢復(fù)殘差塊。分別通過圖3的解碼設(shè)備的熵解碼單元210、逆掃描單元221、逆量化單元222和逆變換單元223來執(zhí)行該過程。
最后,使用預(yù)測(cè)塊和殘差塊來生成重構(gòu)塊。
雖然已經(jīng)參考本發(fā)明特定示例性實(shí)施例示出并描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員可以明白,在不偏離由所附的權(quán)利要求書限定的本發(fā)明的精神和范圍的情況下,可以在形式和細(xì)節(jié)上進(jìn)行各種改變。