技術(shù)領(lǐng)域
本發(fā)明涉及一種幀間預(yù)測(cè)編碼方法,更具體地講,涉及一種使用與當(dāng)前預(yù)測(cè)單元相鄰的預(yù)測(cè)單元的運(yùn)動(dòng)矢量和位于被先前編碼的參考圖片的預(yù)定位置處的運(yùn)動(dòng)矢量之一對(duì)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量進(jìn)行編碼的幀間預(yù)測(cè)編碼方法。
背景技術(shù):
本發(fā)明涉及一種通過(guò)預(yù)測(cè)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量進(jìn)行編碼和解碼的設(shè)備及方法。
在例如運(yùn)動(dòng)圖像專家組(MPEG)-1、MPEG-2、MPEG-4和H.264/MPEG-4先進(jìn)視頻編碼(AVC)等的圖像壓縮方法中,一張圖片被分割成多個(gè)宏塊以對(duì)圖像進(jìn)行編碼。并且,通過(guò)使用幀間預(yù)測(cè)或幀內(nèi)預(yù)測(cè)對(duì)各個(gè)宏塊進(jìn)行編碼。然后,根據(jù)將要編碼的宏塊的數(shù)據(jù)大小和原始宏塊的失真選擇最佳的編碼模式,并且對(duì)宏塊進(jìn)行編碼。
在幀間預(yù)測(cè)中,使用運(yùn)動(dòng)估計(jì)以消除連續(xù)圖片之間的時(shí)間冗余度。運(yùn)動(dòng)估計(jì)編碼是通過(guò)使用一個(gè)或多個(gè)參考圖片來(lái)估計(jì)并補(bǔ)償塊單元中當(dāng)前圖片的運(yùn)動(dòng)而對(duì)圖像進(jìn)行編碼的方法。
在運(yùn)動(dòng)估計(jì)編碼中,通過(guò)使用預(yù)定的估計(jì)函數(shù)在參考圖片的預(yù)定的搜索范圍內(nèi)搜索與當(dāng)前塊最相似的塊。如果搜索到最相似的塊,則僅發(fā)送當(dāng)前塊與參考圖片中最相似的塊之間的殘差以提高數(shù)據(jù)壓縮比。
此時(shí),為了對(duì)經(jīng)過(guò)運(yùn)動(dòng)估計(jì)編碼的當(dāng)前塊進(jìn)行解碼,用于運(yùn)動(dòng)矢量的信息表示當(dāng)前塊與參考圖片中相似塊之間的位置差。因此,當(dāng)對(duì)當(dāng)前塊進(jìn)行編碼時(shí),需要在比特流中插入用于運(yùn)動(dòng)矢量的編碼信息。在此過(guò)程中,如果照這樣對(duì)用于運(yùn)動(dòng)矢量的信息進(jìn)行編碼并且插入,則降低了圖像數(shù)據(jù)的壓縮比,因?yàn)樵黾恿祟~外負(fù)擔(dān)。
因此,在幀間預(yù)測(cè)編碼中,使用與當(dāng)前塊相鄰的塊來(lái)預(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的中間值。由于相鄰的塊傾向于彼此相似,所以將當(dāng)前塊的運(yùn)動(dòng)矢量確定為相鄰的塊的運(yùn)動(dòng)矢量的中間值。
但是,如果相鄰的塊的一個(gè)或多個(gè)運(yùn)動(dòng)矢量不同于當(dāng)前塊的運(yùn)動(dòng),則對(duì)于當(dāng)前塊而言,相鄰的塊的運(yùn)動(dòng)矢量的中間值可能不是有效的運(yùn)動(dòng)矢量預(yù)測(cè)值。另外,當(dāng)圖像的運(yùn)動(dòng)很小或者靜止時(shí),需要選擇用于預(yù)測(cè)運(yùn)動(dòng)矢量的候選項(xiàng)并且將運(yùn)動(dòng)矢量進(jìn)行編碼或解碼的方法,該方法與已知的運(yùn)動(dòng)預(yù)測(cè)方法相比更加有效。
技術(shù)實(shí)現(xiàn)要素:
技術(shù)問(wèn)題
本發(fā)明涉及提供一種使用與當(dāng)前預(yù)測(cè)單元相鄰的預(yù)測(cè)單元的運(yùn)動(dòng)矢量和位于被先前編碼的參考圖片的預(yù)定位置處的運(yùn)動(dòng)矢量之一對(duì)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量進(jìn)行編碼的幀間預(yù)測(cè)方法。
技術(shù)方案
本發(fā)明的一方面提供了一種幀間預(yù)測(cè)編碼方法,包括:確定參考圖片索引和當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量;使用每個(gè)均存在于預(yù)定位置處的相鄰的預(yù)測(cè)單元的可用的運(yùn)動(dòng)矢量導(dǎo)出空間運(yùn)動(dòng)矢量候選項(xiàng);導(dǎo)出所述當(dāng)前預(yù)測(cè)單元的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng),確定所述空間運(yùn)動(dòng)矢量候選項(xiàng)和所述時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)之一作為所述當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)值;以及計(jì)算所述當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量與所述運(yùn)動(dòng)矢量預(yù)測(cè)值之間的運(yùn)動(dòng)矢量差值,并且對(duì)所述運(yùn)動(dòng)矢量差值和所述參考圖片索引進(jìn)行編碼,其中所述時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)是每個(gè)均存在于與所述當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的并被先前編碼的參考圖片中的位置處的當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量或與當(dāng)前預(yù)測(cè)單元相鄰的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。
有益效果
根據(jù)本發(fā)明的方法通過(guò)使用與當(dāng)前單元相鄰并且在預(yù)定位置處存在的相鄰預(yù)測(cè)單元的可用的運(yùn)動(dòng)矢量來(lái)導(dǎo)出空間運(yùn)動(dòng)矢量候選項(xiàng),通過(guò)使用每個(gè)均存在于與當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的并被先前編碼的參考圖片中的位置處的當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量或與當(dāng)前預(yù)測(cè)單元相鄰的預(yù)測(cè)單元的運(yùn)動(dòng)矢量來(lái)導(dǎo)出當(dāng)前預(yù)測(cè)單元的時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。并且所述方法確定空間和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)之一作為運(yùn)動(dòng)矢量預(yù)測(cè)值,并且計(jì)算當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量與運(yùn)動(dòng)矢量預(yù)測(cè)值之間的運(yùn)動(dòng)矢量差值。因此,通過(guò)使用時(shí)間和空間運(yùn)動(dòng)矢量候選項(xiàng),能夠減少對(duì)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)信息進(jìn)行編碼所需的編碼位的數(shù)量。
附圖說(shuō)明
圖1是根據(jù)本發(fā)明的幀間預(yù)測(cè)編碼設(shè)備的方框圖。
圖2是根據(jù)本發(fā)明的幀間預(yù)測(cè)解碼設(shè)備的方框圖。
圖3是示出根據(jù)本發(fā)明生成跳過(guò)的編碼預(yù)測(cè)單元的重構(gòu)塊的過(guò)程的流程圖。
圖4是示出了根據(jù)本發(fā)明的空間跳過(guò)候選項(xiàng)的位置的示意圖。
圖5是示出了根據(jù)本發(fā)明的用于導(dǎo)出時(shí)間跳過(guò)候選項(xiàng)的預(yù)測(cè)單元的位置的示意圖。
圖6是示出了根據(jù)本發(fā)明的與當(dāng)前預(yù)測(cè)單元相對(duì)應(yīng)的時(shí)間跳過(guò)候選圖片中塊的位置的示意圖。
圖7是示出了生成根據(jù)本發(fā)明編碼的預(yù)測(cè)單元運(yùn)動(dòng)矢量預(yù)測(cè)用的重構(gòu)塊的過(guò)程的流程圖。
圖8是示出了根據(jù)本發(fā)明的用于生成空間運(yùn)動(dòng)矢量候選項(xiàng)的、與當(dāng)前預(yù)測(cè)單元相鄰的預(yù)測(cè)單元的位置的示意圖。
具體實(shí)施方式
以下將參照附圖詳細(xì)描述本發(fā)明的各個(gè)實(shí)施例。然而,本發(fā)明并不局限于以下公開(kāi)的示例性實(shí)施例,而是可以以多種形式實(shí)施。因此,可以對(duì)本發(fā)明進(jìn)行許多其他的修改和設(shè)變,但是要理解的是在所公開(kāi)的內(nèi)容的范圍內(nèi),本發(fā)明另外可以以不同于具體描述的方式實(shí)施。
將一張圖片分割成多個(gè)切片,并且將每個(gè)切片分割成多個(gè)最大的編碼單元(LCU)。每個(gè)LCU的位置由地址指示器指定。LCU可以是編碼單元自身或者可以被分割成多個(gè)編碼單元。LCU包含表示LCU中編碼單元結(jié)構(gòu)的信息。使用一個(gè)或多個(gè)分隔標(biāo)志來(lái)表示LCU中編碼單元的結(jié)構(gòu)。
每個(gè)編碼單元包括一個(gè)或多個(gè)預(yù)測(cè)單元。預(yù)測(cè)單元是幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)用的基本單元。
變換單元是變換編碼用的基本塊。在幀內(nèi)預(yù)測(cè)中,預(yù)測(cè)單元包含一個(gè)或多個(gè)變換單元。在幀間預(yù)測(cè)中,變換單元可以是由一個(gè)或多個(gè)預(yù)測(cè)單元構(gòu)成的。預(yù)測(cè)單元的最大大小被定義為順序參數(shù)集(SPS),并且變換單元可以被分割為遞歸四叉樹(shù)的形式。幀內(nèi)預(yù)測(cè)中預(yù)測(cè)單元的最大大小可以與幀間預(yù)測(cè)中預(yù)測(cè)單元的最大大小不同。幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)的預(yù)測(cè)單元的最大大小都包含在SPS中。
圖1是根據(jù)本發(fā)明的幀間預(yù)測(cè)編碼設(shè)備的方框圖。
參照?qǐng)D1,根據(jù)本發(fā)明的幀間預(yù)測(cè)編碼設(shè)備100包括圖片分割單元110、變換單元120、量化單元130、掃描單元131、熵編碼單元140、幀內(nèi)預(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ù)測(cè)模式將要編碼的預(yù)測(cè)單元發(fā)送到幀內(nèi)預(yù)測(cè)單元150或幀間預(yù)測(cè)單元160。另外,圖片分割單元110將要編碼的預(yù)測(cè)單元發(fā)送到減法器190。
變換單元120將殘差塊進(jìn)行變換,該殘差塊是預(yù)測(cè)單元的原始?jí)K與幀內(nèi)預(yù)測(cè)單元150或幀間預(yù)測(cè)單元160生成的預(yù)測(cè)塊之間的殘差信號(hào)。殘差塊可以由編碼單元構(gòu)成。由編碼單元構(gòu)成的殘差塊可以被分割成最佳變換單元并且進(jìn)行變換。根據(jù)預(yù)測(cè)模式(幀內(nèi)或幀間)和幀內(nèi)預(yù)測(cè)模式可以自適應(yīng)地確定變換矩陣。變換單元可以通過(guò)水平的和垂直的一維(1D)變換矩陣進(jìn)行變換。在幀間預(yù)測(cè)中,采用一個(gè)預(yù)定的變換矩陣。
在幀內(nèi)預(yù)測(cè)中,當(dāng)幀內(nèi)預(yù)測(cè)模式是水平的時(shí)候,殘差塊很可能具有垂直方向性。因此,垂直方向采用基于離散余弦變換(DCT)的整數(shù)矩陣,并且水平方向采用基于離散正弦變換(DST)或基于卡洛變換(KLT)(Karhunen Loève transform)的整數(shù)矩陣。當(dāng)幀內(nèi)預(yù)測(cè)模式是垂直的時(shí)候,在垂直方向采用基于DST或KLT的整數(shù)矩陣,在水平方向采用基于DCT的整數(shù)矩陣。當(dāng)幀內(nèi)預(yù)測(cè)模式是DC的時(shí)候,在兩個(gè)方向都可以采用基于DCT的整數(shù)矩陣。也就是說(shuō),在幀內(nèi)預(yù)測(cè)中,可以根據(jù)變換單元的大小和幀內(nèi)預(yù)測(cè)模式自適應(yīng)確定變換矩陣。
量化單元130確定用于對(duì)變換矩陣所變換的殘差塊的變換系數(shù)進(jìn)行量化的量化步距。對(duì)大小等于或大于預(yù)定大小的編碼單元確定量化步距。對(duì)于大小小于預(yù)定大小的編碼單元,量化步距取決于預(yù)定大小。通過(guò)使用所確定的量化步距和根據(jù)預(yù)測(cè)模式確定的量化矩陣,量化變換塊的變換系數(shù)。量化單元130可以將相鄰的編碼單元的量化步距確定為當(dāng)前編碼單元的量化步距預(yù)測(cè)值。例如,量化單元130可以將當(dāng)前編碼單元的左側(cè)編碼單元的量化步距確定為量化步距預(yù)測(cè)值。如果左側(cè)編碼單元無(wú)法使用,則確定掃描順序中前一個(gè)編碼單元的量化步距作為當(dāng)前編碼單元的量化步距預(yù)測(cè)值。作為另外一種選擇,通過(guò)按照左側(cè)編碼單元、上側(cè)編碼單元和前一個(gè)編碼單元的順序掃描,將第一個(gè)可用的量化步距確定為量化步距預(yù)測(cè)值。
量化的變換塊被提供到反向量化單元135和掃描單元131。
掃描單元131掃描量化的變換塊的量化的變換系數(shù),從而將量化的變換系數(shù)轉(zhuǎn)換成一維量化的變換系數(shù)。根據(jù)預(yù)測(cè)模式和幀內(nèi)預(yù)測(cè)模式確定掃描方式。也可以根據(jù)變換單元的大小確定掃描方式。
掃描單元131根據(jù)當(dāng)前變換單元的大小確定是否將量化的變換塊分割成多個(gè)子集。如果變換單元的大小大于第一參考大小,則將量化的變換塊分割成多個(gè)子集。第一參考大小是4x4或8x8。
掃描單元131確定將要應(yīng)用于量化的變換塊的掃描方式。在幀間預(yù)測(cè)中,使用預(yù)定的掃描方式(例如,鋸齒狀掃描)。在幀內(nèi)預(yù)測(cè)中,根據(jù)幀內(nèi)預(yù)測(cè)模式和變換單元的大小選擇掃描方式。在非定向幀內(nèi)預(yù)測(cè)模式模式中,使用預(yù)定的方式。非定向幀內(nèi)預(yù)測(cè)模式是DC模式或平面模式。
在定向幀內(nèi)預(yù)測(cè)模式中,掃描方式可以根據(jù)幀內(nèi)預(yù)測(cè)模式以及變換單元的大小的變化而變化。在定向幀內(nèi)預(yù)測(cè)模式中,如果變換單元的大小等于或大于預(yù)定大小,則使用預(yù)定的掃描方式;并且如果變換單元的大小小于預(yù)定大小,則根據(jù)定向幀內(nèi)預(yù)測(cè)模式自適應(yīng)選擇掃描方式。預(yù)定大小是16x16。
如果變換單元的大小小于預(yù)定大小,使用三個(gè)掃描方式中的一個(gè)。三個(gè)掃描方式是第一掃描方式(預(yù)定掃描)、第二掃描方式(水平掃描)和第三掃描方式(垂直掃描)。對(duì)于垂直幀內(nèi)預(yù)測(cè)模式,采用第二掃描方式,因?yàn)樵谒椒较蛏虾芸赡艽嬖诜橇阆禂?shù)。對(duì)于在兩側(cè)與垂直幀內(nèi)預(yù)測(cè)模式相鄰的預(yù)定數(shù)量的定向幀內(nèi)預(yù)測(cè)模式,采用第二掃描方式。對(duì)于水平幀內(nèi)預(yù)測(cè)模式,采用第三掃描方式。對(duì)于在兩側(cè)與水平幀內(nèi)預(yù)測(cè)模式相鄰的預(yù)定數(shù)量的定向幀內(nèi)預(yù)測(cè)模式,采用第三掃描方式。預(yù)定數(shù)量是3或4。
在相反方向上掃描量化的變換系數(shù)。當(dāng)量化的變換系數(shù)被分割成多個(gè)子集時(shí),將同一個(gè)掃描方式應(yīng)用于每個(gè)子集的量化的變換系數(shù)。多個(gè)子集包括主子集和一個(gè)或多個(gè)剩余子集。主子集位于左上側(cè)并且包括DC系數(shù)。一個(gè)或多個(gè)剩余子集覆蓋不同于主子集的區(qū)域。
鋸齒狀掃描可以用于掃描這些子集??梢栽谇跋蚍较蛏蠌闹髯蛹绞S嘧蛹瘨呙枳蛹?,或者可以在相反的方向上掃描子集。掃描子集用的掃描方式可以設(shè)置成與掃描量化的變換系數(shù)用的掃描方式相同。在這種情況下,根據(jù)幀內(nèi)預(yù)測(cè)模式確定掃描子集用的掃描方式。
編碼器將能表示變換單元的最后一個(gè)非零量化系數(shù)的位置的信息發(fā)送到解碼器。編碼器還將能表示每個(gè)子集的最后一個(gè)非零量化系數(shù)的位置的信息發(fā)送到解碼器。
反向量化單元135將量化的變換系數(shù)進(jìn)行反向量化。反向變換單元125從反向量化的變換系數(shù)中恢復(fù)空間域的殘差塊。加法器195通過(guò)將反向變換單元125重構(gòu)的殘差塊加上來(lái)自幀內(nèi)預(yù)測(cè)單元150或幀間預(yù)測(cè)單元160的預(yù)測(cè)塊而生成重構(gòu)塊。
后處理單元170執(zhí)行用于清除重構(gòu)的圖片中產(chǎn)生的塊效應(yīng)的去塊濾波過(guò)程、用于補(bǔ)償重構(gòu)的圖片與原始圖像的每個(gè)像素之間的差值的自適應(yīng)偏移應(yīng)用過(guò)程、以及用于補(bǔ)償編碼單元中重構(gòu)的圖片與原始圖像之間的差值的自適應(yīng)回路濾波器過(guò)程。
去塊濾波過(guò)程可以應(yīng)用于具有預(yù)定大小或更大的預(yù)測(cè)單元之間的邊界以及變換單元之間的邊界。預(yù)定大小可以是8×8。去塊濾波過(guò)程包括:確定將要濾波的邊界的步驟,確定將要應(yīng)用于邊界的邊界濾波強(qiáng)度的步驟,確定是否應(yīng)用去塊濾波器的步驟,以及當(dāng)確定采用去塊濾波器時(shí)選擇將要應(yīng)用于邊界的濾波器的步驟。
根據(jù)以下內(nèi)容確定是否采用去塊濾波器:i)邊界濾波強(qiáng)度是否大于0;ii)表示P塊和Q塊的邊界像素之間的差的值是否小于根據(jù)量化參數(shù)確定的第一參考值。
可能存在兩個(gè)或更多個(gè)濾波器。當(dāng)與塊邊界相鄰的兩個(gè)像素之間的差值的絕對(duì)值等于或大于第二參考值時(shí),選擇弱濾波器。由量化參數(shù)和邊界濾波強(qiáng)度確定第二參數(shù)值。
可以根據(jù)通過(guò)比較原始圖像與去塊濾波過(guò)程或自適應(yīng)偏移應(yīng)用過(guò)程所應(yīng)用的重構(gòu)的圖像而獲得的一個(gè)值,來(lái)執(zhí)行自適應(yīng)回路濾波過(guò)程。通過(guò)根據(jù)4×4塊的一個(gè)拉普拉斯算子的活性值來(lái)檢測(cè)自適應(yīng)回路濾波器(ALF)。所確定的ALF可以應(yīng)用于包括在4×4塊或8×8塊中的所有像素??梢愿鶕?jù)編碼單元來(lái)確定是否采用ALF?;芈窞V波器的大小和系數(shù)可以根據(jù)每個(gè)編碼單元的變化而變化。切片頭可以包括表示是否將ALF應(yīng)用于每個(gè)編碼單元的信息、濾波器系數(shù)信息和濾波器形狀信息等等。在色度分量的情況下,可以在圖片單元中確定是否應(yīng)用ALF。與亮度不同,回路濾波器可以具有矩形形狀。
可以根據(jù)通過(guò)比較原始圖像與去塊濾波過(guò)程或自適應(yīng)偏移應(yīng)用過(guò)程所應(yīng)用的重構(gòu)圖像而獲得的一個(gè)值,來(lái)執(zhí)行自適應(yīng)回路濾波過(guò)程。通過(guò)根據(jù)4×4塊的一個(gè)拉普拉斯算子的活性值來(lái)檢測(cè)自適應(yīng)回路濾波器(ALF)。所確定的ALF可以應(yīng)用于包括在4×4塊或8×8塊中的所有像素。可以根據(jù)編碼單元來(lái)確定是否采用ALF?;芈窞V波器的大小和系數(shù)可以根據(jù)每個(gè)編碼單元的變化而變化。表示是否將ALF應(yīng)用于每個(gè)編碼單元的信息、濾波器系數(shù)信息和濾波器形狀信息可以被包括在切片頭中并且被發(fā)送到解碼器。在色度信號(hào)的情況下,可以在圖片單元中確定是否應(yīng)用ALF。與亮度不同,回路濾波器可以具有矩形形狀。
根據(jù)順序或圖片執(zhí)行自適應(yīng)回路濾波過(guò)程。ALF濾波器參數(shù)信息被包括在圖片頭中或切片頭中。如果ALF濾波器參數(shù)信息被包括在圖片頭中,則切片頭不包括ALF濾波器參數(shù)信息。但是,如果ALF濾波器參數(shù)信息不包括在圖片頭中,則切片頭包括ALF濾波器參數(shù)信息。ALF濾波器參數(shù)信息包括亮度分量用的濾波器的水平長(zhǎng)度和/或垂直長(zhǎng)度和濾波器數(shù)量。如果濾波器的數(shù)量是2或更多,則ALF濾波器參數(shù)信息可以包括表示是否使用預(yù)測(cè)對(duì)濾波器進(jìn)行編碼的信息。當(dāng)使用預(yù)測(cè)對(duì)濾波器進(jìn)行編碼時(shí),ALF濾波器參數(shù)信息包括被預(yù)測(cè)性編碼的濾波器系數(shù)。反之,當(dāng)不使用預(yù)測(cè)對(duì)濾波器進(jìn)行編碼時(shí),ALF濾波器參數(shù)信息包括未被預(yù)測(cè)性編碼的濾波器系數(shù)。
也可以自適應(yīng)地對(duì)色度分量進(jìn)行濾波。ALF濾波器參數(shù)信息可以包括每個(gè)色度分量是否被濾波的信息。為了減少位數(shù),表示Cr分量是否被濾波的信息以及表示Cb分量是否被濾波的信息可以被共同編碼。優(yōu)選的是,在Cr和Cb分量?jī)烧叨嘉幢粸V波的情況下熵編碼分配最低信息,因?yàn)镃r和Cb分量?jī)烧叨嘉幢粸V波的可能性很大。對(duì)于Cr和Cb分量中至少一個(gè)被濾波的情況,ALF濾波器參數(shù)信息包括表示色度分量用的濾波器系數(shù)的水平長(zhǎng)度和/或垂直長(zhǎng)度以及濾波器的信息。
另外,對(duì)于等于或大于預(yù)定大小的每個(gè)編碼單元,可以打開(kāi)或關(guān)閉ALF過(guò)程。因此,每個(gè)切片頭包括表示是否對(duì)切片中的每個(gè)編碼單元應(yīng)用ALF過(guò)程的信息。
圖片存儲(chǔ)單元180從后處理單元170接收后處理的圖像數(shù)據(jù),并且將圖像存儲(chǔ)在圖片單元中。圖片可以是以幀或場(chǎng)為單位的圖像。圖片存儲(chǔ)單元180具有能存儲(chǔ)多個(gè)圖片的緩沖器(未示出)。
幀間預(yù)測(cè)單元160使用存儲(chǔ)在圖片存儲(chǔ)單元180中的一個(gè)或多個(gè)參考圖片來(lái)執(zhí)行運(yùn)動(dòng)估計(jì),并且確定表示參考圖片的參考圖片索引和運(yùn)動(dòng)矢量。根據(jù)參考圖片索引和運(yùn)動(dòng)矢量,幀間預(yù)測(cè)單元160從存儲(chǔ)于圖片存儲(chǔ)單元180中的多個(gè)參考圖片中選擇的一個(gè)參考圖片提取與將要編碼的預(yù)測(cè)單元相對(duì)應(yīng)的預(yù)測(cè)塊,并且輸出所提取的預(yù)測(cè)塊。
幀內(nèi)預(yù)測(cè)單元150使用當(dāng)前圖片中重構(gòu)的參考像素值執(zhí)行幀內(nèi)預(yù)測(cè)。幀內(nèi)預(yù)測(cè)單元150接收將要被預(yù)測(cè)性編碼的當(dāng)前的預(yù)測(cè)單元,選擇預(yù)定數(shù)量的幀內(nèi)預(yù)測(cè)模式之一,并且執(zhí)行幀內(nèi)預(yù)測(cè)。預(yù)定數(shù)量的幀內(nèi)預(yù)測(cè)模式可以根據(jù)當(dāng)前的預(yù)測(cè)單元的大小確定。幀內(nèi)預(yù)測(cè)單元自適應(yīng)濾波參考像素以生成幀內(nèi)預(yù)測(cè)塊。當(dāng)一些參考像素?zé)o法使用時(shí),能夠使用一個(gè)或多個(gè)可用的參考像素在無(wú)法使用的位置處生成參考像素。
熵編碼單元140對(duì)量化單元130所量化的量化系數(shù)、從幀內(nèi)預(yù)測(cè)單元150接收的幀內(nèi)預(yù)測(cè)信息、從幀間預(yù)測(cè)單元160接收的運(yùn)動(dòng)信息等進(jìn)行熵編碼。
同時(shí),根據(jù)本發(fā)明的運(yùn)動(dòng)圖片編碼設(shè)備100對(duì)運(yùn)動(dòng)矢量進(jìn)行預(yù)測(cè)性編碼。運(yùn)動(dòng)矢量的編碼過(guò)程由幀間預(yù)測(cè)單元160和熵編碼單元140執(zhí)行。運(yùn)動(dòng)矢量的編碼過(guò)程如下。
首先,獲得當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。將存在于預(yù)定位置處的相鄰的預(yù)測(cè)單元的可用的運(yùn)動(dòng)矢量確定為空間運(yùn)動(dòng)矢量候選項(xiàng)。如果相鄰的預(yù)測(cè)單元的運(yùn)動(dòng)矢量不存在,或者相鄰的預(yù)測(cè)單元不包括在當(dāng)前切片中,則將運(yùn)動(dòng)矢量確定為無(wú)法使用。
接下來(lái),可以對(duì)空間運(yùn)動(dòng)矢量進(jìn)行自適應(yīng)地縮放。如果當(dāng)前預(yù)測(cè)單元和相鄰的預(yù)測(cè)單元具有相同的參考圖片,則不縮放運(yùn)動(dòng)矢量候選項(xiàng)。但是,如果當(dāng)前預(yù)測(cè)單元和相鄰的預(yù)測(cè)單元具有不同的參考圖片,或者參考圖片的時(shí)間距離不一樣,則可以使用時(shí)間距離對(duì)運(yùn)動(dòng)矢量候選項(xiàng)進(jìn)行縮放。對(duì)于靜態(tài)圖像(例如,背景圖像),不可以將運(yùn)動(dòng)矢量進(jìn)行縮放。可以將空間運(yùn)動(dòng)矢量候選項(xiàng)的縮放數(shù)量限定為預(yù)定數(shù)量。
在空間運(yùn)動(dòng)矢量候選項(xiàng)和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)之中選擇運(yùn)動(dòng)矢量預(yù)測(cè)值,然后對(duì)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量與運(yùn)動(dòng)矢量預(yù)測(cè)值之間的運(yùn)動(dòng)矢量差值(MVD)進(jìn)行編碼。并且對(duì)表示運(yùn)動(dòng)矢量預(yù)測(cè)值的信息進(jìn)行編碼。
時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)是位于或靠近與當(dāng)前預(yù)測(cè)單元的位置相對(duì)應(yīng)的一個(gè)參考圖片中的位置處的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。當(dāng)位于與參考圖片中當(dāng)前預(yù)測(cè)單元的位置相對(duì)應(yīng)的一個(gè)參考圖片中的位置或其附近存在預(yù)測(cè)單元的多個(gè)運(yùn)動(dòng)矢量時(shí),根據(jù)預(yù)定的方法選擇一個(gè)運(yùn)動(dòng)矢量作為時(shí)間運(yùn)動(dòng)矢量。例如,如果位于與圖片中的當(dāng)前預(yù)測(cè)單元相對(duì)應(yīng)的第一位置處的塊的運(yùn)動(dòng)矢量可用,則將運(yùn)動(dòng)矢量確定為時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。但是,如果位于第一位置處的塊的運(yùn)動(dòng)矢量無(wú)法使用,則將位于第二位置處的塊的運(yùn)動(dòng)矢量確定為時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。
在B切片(雙向預(yù)測(cè))中,從包括時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的參考圖片導(dǎo)出參考圖片列表0或1。因此,將表示一個(gè)參考圖片列表的列表信息發(fā)送到解碼器,并且解碼器使用列表指示符來(lái)確定參考圖片。
比特流中可以包括表示是否使用了時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的信息。因此,運(yùn)動(dòng)矢量的解碼過(guò)程可以根據(jù)信息而變化。
空間運(yùn)動(dòng)矢量候選項(xiàng)包括左運(yùn)動(dòng)矢量候選項(xiàng)和上運(yùn)動(dòng)矢量候選項(xiàng)。當(dāng)前預(yù)測(cè)單元的左運(yùn)動(dòng)矢量候選項(xiàng)是當(dāng)前預(yù)測(cè)單元的左側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量或左下側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量。左運(yùn)動(dòng)矢量候選項(xiàng)是在按照預(yù)定的順序檢索左側(cè)預(yù)測(cè)單元和左下側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量時(shí)遇到的第一個(gè)可用的運(yùn)動(dòng)矢量。當(dāng)前預(yù)測(cè)單元的上運(yùn)動(dòng)矢量候選項(xiàng)是當(dāng)按照預(yù)定的順序檢索當(dāng)前預(yù)測(cè)單元的上側(cè)預(yù)測(cè)單元、右上側(cè)預(yù)測(cè)單元和左上側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量時(shí)遇到的第一個(gè)可用的運(yùn)動(dòng)矢量。
如果運(yùn)動(dòng)矢量候選項(xiàng)具有相同的運(yùn)動(dòng)矢量,則去除序數(shù)較大的運(yùn)動(dòng)矢量候選項(xiàng)。如果運(yùn)動(dòng)矢量候選項(xiàng)是一個(gè),則將該運(yùn)動(dòng)矢量候選項(xiàng)確定為運(yùn)動(dòng)矢量預(yù)測(cè)值,并且不對(duì)表示運(yùn)動(dòng)矢量預(yù)測(cè)值的預(yù)測(cè)值指示符進(jìn)行編碼。
圖2是根據(jù)本發(fā)明的幀內(nèi)預(yù)測(cè)解碼設(shè)備的方框圖。
根據(jù)本發(fā)明的解碼設(shè)備包括熵解碼單元210、反向掃描單元215、反向量化單元220、反向變換單元225、加法器270、后處理單元250、圖片存儲(chǔ)單元260、幀內(nèi)預(yù)測(cè)單元230、幀間預(yù)測(cè)單元240和開(kāi)關(guān)280。
熵解碼單元210從接收的由運(yùn)動(dòng)圖片編碼設(shè)備發(fā)送的比特流提取幀內(nèi)預(yù)測(cè)模式索引、運(yùn)動(dòng)矢量、量化系數(shù)序列等。熵解碼單元210將解碼的運(yùn)動(dòng)信息發(fā)送到幀間預(yù)測(cè)單元240,將幀內(nèi)預(yù)測(cè)模式信息發(fā)送到幀內(nèi)預(yù)測(cè)單元230和反向量化/變換單元225,將量化系數(shù)序列發(fā)送到反向量化單元220和反向量化/變換單元225。
反向掃描單元215將量化的系數(shù)信息轉(zhuǎn)換成二維(2D)的反向量化的變換塊。選擇多個(gè)反向掃描方式中的一個(gè)用于變換。根據(jù)幀內(nèi)預(yù)測(cè)模式選擇反向掃描方式。如果當(dāng)前變換單元的大小大于預(yù)定的參考大小,則根據(jù)選擇的反向掃描方式反向地掃描每個(gè)子集的量化的變換系數(shù),以生成量化的變換單元。如果將要解碼的變換單元的大小等于預(yù)定的參考大小,則根據(jù)選擇的反向掃描方式反向地掃描量化的變換塊的量化的變換系數(shù),以生成量化的變換單元。如果在子集的單元中反向地掃描量化的變換系數(shù),則將同一個(gè)反向掃描方式應(yīng)用于每個(gè)子集中的量化的變換系數(shù)。多個(gè)子集包括主子集和一個(gè)或多個(gè)剩余子集。主子集位于左上側(cè)并且包括DC系數(shù),并且一個(gè)或多個(gè)剩余子集覆蓋與主子集不同的區(qū)域。
將要應(yīng)用于子集的掃描方式可以是鋸齒狀掃描。可以在前向方向上從主子集到剩余子集反向地掃描子集,或者可以在相反的方向上掃描子集。掃描子集用的掃描方式可以設(shè)置成與掃描量化的變換系數(shù)用的掃描方式相同。反向掃描單元215使用表示變換單元的最后一個(gè)非零量化系數(shù)的位置的信息來(lái)執(zhí)行反向掃描過(guò)程。
在定向幀內(nèi)預(yù)測(cè)模式中,掃描方式可以根據(jù)幀內(nèi)預(yù)測(cè)模式以及變換單元的大小而變化。在定向幀內(nèi)預(yù)測(cè)模式中,如果變換單元的大小等于或大于預(yù)定大小,則使用預(yù)定的掃描方式,并且如果變換單元的大小小于預(yù)定大小,則根據(jù)定向幀內(nèi)預(yù)測(cè)模式自適應(yīng)選擇掃描方式。預(yù)定大小是16x16。
如果變換單元的大小小于預(yù)定大小,則使用三個(gè)掃描方式中的一個(gè)。三個(gè)掃描方式是第一掃描方式(預(yù)定掃描)、第二掃描方式(水平掃描)和第三掃描方式(垂直掃描)。在垂直幀內(nèi)預(yù)測(cè)模式中,采用第二掃描方式,因?yàn)樵谒椒较蛏虾芸赡艽嬖诜橇阆禂?shù)。對(duì)于在兩側(cè)與垂直幀內(nèi)預(yù)測(cè)模式相鄰的預(yù)定數(shù)量的定向幀內(nèi)預(yù)測(cè)模式,采用第二掃描方式。在水平幀內(nèi)預(yù)測(cè)模式中,采用第三掃描方式。對(duì)于在兩側(cè)與水平幀內(nèi)預(yù)測(cè)模式相鄰的預(yù)定數(shù)量的定向幀內(nèi)預(yù)測(cè)模式,采用第三掃描方式。預(yù)定數(shù)量是3或4。
反向量化單元220恢復(fù)量化步距以反向地量化二維反向量化的系數(shù)。對(duì)大小等于或大于預(yù)定大小的編碼單元確定量化步距。如果編碼單元的大小小于預(yù)定大小,則量化步距取決于預(yù)定大小。反向量化單元220可以將相鄰的編碼單元的量化步距確定為當(dāng)前編碼單元的量化步距預(yù)測(cè)值。例如,反向量化單元220可以將當(dāng)前編碼單元的左側(cè)編碼單元的量化步距確定為當(dāng)前編碼單元的量化步距預(yù)測(cè)值。如果左側(cè)編碼單元無(wú)法使用,則確定掃描順序中前一個(gè)編碼單元的量化步距作為當(dāng)前編碼單元的量化步距預(yù)測(cè)值。作為另外一種選擇,當(dāng)按照左側(cè)編碼單元、上側(cè)編碼單元和前一個(gè)編碼單元的順序進(jìn)行掃描時(shí),將可用的量化步距確定作為當(dāng)前編碼單元的量化步距預(yù)測(cè)值。
當(dāng)確定了量化步距預(yù)測(cè)值時(shí),通過(guò)將量化步距預(yù)測(cè)值加上接收的殘差的量化步距,從而獲得量化步距。然后,使用根據(jù)量化步距和預(yù)測(cè)模式確定的量化矩陣,反向地量化反向量化的系數(shù)。
反向變換單元225將反向量化的塊進(jìn)行反向地變換以恢復(fù)殘差塊。根據(jù)預(yù)測(cè)模式(幀內(nèi)或幀間)和幀內(nèi)預(yù)測(cè)模式自適應(yīng)地確定將要應(yīng)用到反向量化的塊的反向變換矩陣。反向變換矩陣的確定過(guò)程與圖1中變換單元120的過(guò)程相同。
加法器270將反向量化/變換單元220重構(gòu)的恢復(fù)的殘差塊加上幀內(nèi)預(yù)測(cè)單元230或幀間預(yù)測(cè)單元240生成的預(yù)測(cè)塊以生成重構(gòu)塊。
后處理單元250對(duì)加法器270生成的恢復(fù)的圖像執(zhí)行去塊濾波器過(guò)程。由此,可以減少根據(jù)量化過(guò)程的圖像損失造成的塊效應(yīng)。
圖片存儲(chǔ)單元260是幀存儲(chǔ)器,該幀存儲(chǔ)器存儲(chǔ)由后處理單元250進(jìn)行去塊濾波的重構(gòu)的局部圖像。
幀內(nèi)預(yù)測(cè)單元230根據(jù)所接收的幀內(nèi)預(yù)測(cè)模式索引恢復(fù)當(dāng)前塊的幀內(nèi)預(yù)測(cè)模式,并且根據(jù)恢復(fù)的幀內(nèi)預(yù)測(cè)模式生成預(yù)測(cè)塊。
幀間預(yù)測(cè)單元240根據(jù)接收的運(yùn)動(dòng)信息恢復(fù)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量,并且生成當(dāng)前預(yù)測(cè)單元的預(yù)測(cè)塊。如果應(yīng)用小數(shù)精度的運(yùn)動(dòng)補(bǔ)償,則使用內(nèi)插濾波器生成預(yù)測(cè)塊。
幀間預(yù)測(cè)單元240按照如下方式解碼運(yùn)動(dòng)矢量。
通過(guò)恢復(fù)被編碼的運(yùn)動(dòng)矢量之間的差值來(lái)生成運(yùn)動(dòng)矢量差值。
將存在于預(yù)定位置處的相鄰的預(yù)測(cè)單元的可用的運(yùn)動(dòng)矢量確定為空間運(yùn)動(dòng)矢量候選項(xià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í)間距離對(duì)運(yùn)動(dòng)矢量候選項(xiàng)進(jìn)行縮放。
使用表示運(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è)值。然后,將運(yùn)動(dòng)矢量差值與運(yùn)動(dòng)矢量預(yù)測(cè)值相加以生成當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。
時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)是位于或靠近與當(dāng)前預(yù)測(cè)單元的位置相對(duì)應(yīng)的一個(gè)參考圖片中的位置處的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。當(dāng)位于與參考圖片中當(dāng)前預(yù)測(cè)單元的位置相對(duì)應(yīng)的一個(gè)參考圖片中的位置處或其附近存在預(yù)測(cè)單元的多個(gè)運(yùn)動(dòng)矢量時(shí),根據(jù)預(yù)定的方法選擇一個(gè)運(yùn)動(dòng)矢量作為時(shí)間運(yùn)動(dòng)矢量。例如,如果位于與圖片中的當(dāng)前預(yù)測(cè)單元相對(duì)應(yīng)的第一位置處的塊的運(yùn)動(dòng)矢量可用,則將運(yùn)動(dòng)矢量確定為時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。但是,如果位于第一位置處的塊的運(yùn)動(dòng)矢量無(wú)法使用,則將位于第二位置處的塊的運(yùn)動(dòng)矢量確定為時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。
在B切片(雙向預(yù)測(cè))中,從包括時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的參考圖片導(dǎo)出參考圖片列表0或1。因此解碼設(shè)備使用列表指示符來(lái)確定參考圖片。
比特流中可以包括表示是否使用了時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的信息。因此,運(yùn)動(dòng)矢量的解碼過(guò)程可以根據(jù)信息而變化。
空間運(yùn)動(dòng)矢量候選項(xiàng)包括左運(yùn)動(dòng)矢量候選項(xiàng)和上運(yùn)動(dòng)矢量候選項(xiàng)。當(dāng)前預(yù)測(cè)單元的左運(yùn)動(dòng)矢量候選項(xiàng)是當(dāng)前預(yù)測(cè)單元的左側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量或左下側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量。左運(yùn)動(dòng)矢量候選項(xiàng)是在按照預(yù)定的順序檢索左側(cè)預(yù)測(cè)單元和左下側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量時(shí)遇到的第一個(gè)可用的運(yùn)動(dòng)矢量。當(dāng)前預(yù)測(cè)單元的上運(yùn)動(dòng)矢量候選項(xiàng)是當(dāng)按照預(yù)定的順序檢索當(dāng)前預(yù)測(cè)單元的上側(cè)預(yù)測(cè)單元、右上側(cè)預(yù)測(cè)單元和左上側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)矢量時(shí)遇到的第一個(gè)可用的運(yùn)動(dòng)矢量。
如果運(yùn)動(dòng)矢量候選項(xiàng)具有相同的運(yùn)動(dòng)矢量,則去除序數(shù)較大的運(yùn)動(dòng)矢量候選項(xiàng)。
如果運(yùn)動(dòng)矢量候選項(xiàng)是一個(gè),則將該運(yùn)動(dòng)矢量候選項(xiàng)確定為運(yùn)動(dòng)矢量預(yù)測(cè)值,并且不對(duì)表示運(yùn)動(dòng)矢量預(yù)測(cè)值的預(yù)測(cè)值指示符進(jìn)行編碼。
開(kāi)關(guān)280根據(jù)預(yù)測(cè)模式將幀內(nèi)預(yù)測(cè)單元230或幀間預(yù)測(cè)單元240生成的預(yù)測(cè)塊提供給加法器270。
本文描述了根據(jù)本發(fā)明的幀內(nèi)預(yù)測(cè)解碼方法。所述方法包括:將當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)信息進(jìn)行解碼的過(guò)程,生成當(dāng)前預(yù)測(cè)單元的預(yù)測(cè)塊的過(guò)程,恢復(fù)殘差塊的過(guò)程和使用預(yù)測(cè)塊和殘差塊生成重構(gòu)塊的過(guò)程。運(yùn)動(dòng)信息包括運(yùn)動(dòng)矢量和參考圖片索引。
圖3是示出根據(jù)本發(fā)明生成跳過(guò)的編碼單元的重構(gòu)塊的過(guò)程的流程圖。當(dāng)所接收的編碼單元的skipflag為1時(shí),執(zhí)行此過(guò)程。
首先,在步驟S210中,從相鄰的預(yù)測(cè)單元導(dǎo)出空間跳過(guò)候選項(xiàng)。
如圖4所示,當(dāng)前單元的左側(cè)預(yù)測(cè)單元(A塊)的運(yùn)動(dòng)信息、當(dāng)前單元的上側(cè)預(yù)測(cè)單元(B塊)的運(yùn)動(dòng)信息、當(dāng)前單元的右上側(cè)預(yù)測(cè)單元(C塊)的運(yùn)動(dòng)信息和當(dāng)前單元的左下預(yù)測(cè)單元(D塊)的運(yùn)動(dòng)信息可以是空間跳過(guò)候選項(xiàng)。如果A塊、B塊、C塊和D塊中的一個(gè)或多個(gè)塊無(wú)法使用,當(dāng)前單元的左上側(cè)預(yù)測(cè)單元(E塊)的運(yùn)動(dòng)信息可以是空間跳過(guò)候選項(xiàng)塊。運(yùn)動(dòng)信息包括運(yùn)動(dòng)矢量和參考圖片索引。
作為另外一種選擇,左側(cè)預(yù)測(cè)單元(A塊)的運(yùn)動(dòng)信息、上側(cè)預(yù)測(cè)單元(B塊)的運(yùn)動(dòng)信息和角預(yù)測(cè)單元的運(yùn)動(dòng)信息可以是空間跳過(guò)候選項(xiàng)。角預(yù)測(cè)單元是當(dāng)按照預(yù)定的順序(例如,按照C塊、D塊和E塊的順序,按照E塊、D塊和C塊的順序,等等)檢索C、D和E塊時(shí)遇到的第一個(gè)可用的預(yù)測(cè)單元。
檢查每個(gè)相鄰的預(yù)測(cè)單元的可用性。如果不存在預(yù)測(cè)單元或者預(yù)測(cè)單元的預(yù)測(cè)模式是幀內(nèi)模式,則將預(yù)測(cè)單元確定為無(wú)法使用。
當(dāng)存在多個(gè)左側(cè)預(yù)測(cè)單元時(shí),在按照預(yù)定的順序(例如,從上到下或從下到上)檢查多個(gè)左側(cè)預(yù)測(cè)單元的可用性時(shí)遇到的第一個(gè)可用的預(yù)測(cè)單元可以被確定為左側(cè)預(yù)測(cè)單元,或者左側(cè)最上方的預(yù)測(cè)單元或左側(cè)最下方的預(yù)測(cè)單元可以被確定為左側(cè)預(yù)測(cè)單元。當(dāng)存在多個(gè)上側(cè)預(yù)測(cè)單元時(shí),在按照預(yù)定的順序(例如,從左到右或從右到左)檢查多個(gè)上側(cè)預(yù)測(cè)單元的可用性時(shí)遇到的第一個(gè)可用的預(yù)測(cè)單元可以被確定為上側(cè)預(yù)測(cè)單元,或者上方最左側(cè)的預(yù)測(cè)單元或上方最右側(cè)的預(yù)測(cè)單元可以被確定為上側(cè)預(yù)測(cè)單元。
在步驟S220中導(dǎo)出時(shí)間跳過(guò)候選項(xiàng)。步驟S220包括導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引的步驟以及導(dǎo)出時(shí)間跳過(guò)候選項(xiàng)的運(yùn)動(dòng)矢量的步驟。
在導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引的步驟中,導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引可以設(shè)置成0?;蛘呖梢允褂迷诳臻g上相鄰的預(yù)測(cè)單元的參考圖片索引來(lái)導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。
圖5是示出了根據(jù)本發(fā)明的與用于導(dǎo)出時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引的當(dāng)前預(yù)測(cè)單元相鄰的預(yù)測(cè)單元的位置的示意圖。用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引是相鄰的預(yù)測(cè)單元的參考圖片索引之一。
左側(cè)預(yù)測(cè)單元(A塊)、上側(cè)預(yù)測(cè)單元(B塊)、右上側(cè)預(yù)測(cè)單元(C塊)、左下側(cè)預(yù)測(cè)單元(D塊)和右上側(cè)單元(E塊)的參考圖片索引可用于導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。
當(dāng)存在多個(gè)上側(cè)預(yù)測(cè)單元時(shí),在從左到右或從右到左檢索多個(gè)上側(cè)預(yù)測(cè)單元時(shí)遇到的第一個(gè)可用的預(yù)測(cè)單元可以被確定為上側(cè)預(yù)測(cè)單元。并且將第一可用單元的參考圖片索引確定為上側(cè)預(yù)測(cè)單元的參考圖片索引。當(dāng)存在多個(gè)左側(cè)預(yù)測(cè)單元時(shí),在從上到下檢索多個(gè)左側(cè)預(yù)測(cè)單元時(shí)遇到的第一個(gè)可用的預(yù)測(cè)單元可以被確定為左側(cè)預(yù)測(cè)單元。并且將第一可用單元的參考圖片索引確定為左側(cè)預(yù)測(cè)單元的參考圖片索引。
角預(yù)測(cè)單元的參考圖片索引是在按照C塊、D塊和E塊的順序檢索塊時(shí)遇到的第一個(gè)可用的預(yù)測(cè)單元的參考圖片索引。
當(dāng)確定了左側(cè)相鄰的預(yù)測(cè)單元的參考圖片索引(左參考圖片索引)、上側(cè)相鄰的預(yù)測(cè)單元的參考圖片索引(上參考圖片索引)和角相鄰的預(yù)測(cè)單元的參考圖片索引(角參考圖片索引)時(shí),從其中導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。這里,使用C塊、D塊和E塊中的唯一一個(gè)來(lái)導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。但是,可以使用C塊和D塊(4個(gè)候選項(xiàng))或所有的C塊、D塊和E塊(5個(gè)候選項(xiàng))來(lái)導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。以下將會(huì)描述所有的左參考圖片索引、上參考圖片索引和角參考圖片索引都被使用的情況。
將可用的參考圖片索引中頻率最高的參考圖片索引確定為用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。當(dāng)存在多個(gè)具有最高頻率的參考圖片索引時(shí),將最低的參考圖片索引確定為用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引。
導(dǎo)出用于時(shí)間跳過(guò)候選項(xiàng)的運(yùn)動(dòng)矢量的步驟如下。
首先,導(dǎo)出時(shí)間跳過(guò)候選塊所屬的圖片(時(shí)間跳過(guò)候選圖片)。例如,將索引為0的參考圖片確定為時(shí)間跳過(guò)候選圖片。當(dāng)切片類(lèi)型為P時(shí),將列表0的第一圖片確定為時(shí)間跳過(guò)候選圖片。當(dāng)切片類(lèi)型為B時(shí),使用表示時(shí)間跳過(guò)候選項(xiàng)所屬的參考圖片列表的切片頭的標(biāo)志來(lái)選擇一個(gè)參考圖片列表,并且將來(lái)自選擇的參考圖片列表的參考圖片索引為0的圖片確定為時(shí)間跳過(guò)候選圖片。例如,當(dāng)標(biāo)志為1時(shí),就從列表0中選擇時(shí)間跳過(guò)候選圖片。并且當(dāng)標(biāo)志為0時(shí),就從列表1中選擇時(shí)間跳過(guò)候選圖片。
作為另外一種選擇,將用于時(shí)間跳過(guò)候選圖片的參考圖片索引所表示的參考圖片確定為時(shí)間跳過(guò)候選塊所屬的時(shí)間跳過(guò)候選圖片。例如,當(dāng)切片類(lèi)型為P時(shí),列表0中用于時(shí)間跳過(guò)候選圖片的參考圖片索引所表示的參考圖片被確定為時(shí)間跳過(guò)候選圖片。當(dāng)切片類(lèi)型為B時(shí),使用表示時(shí)間跳過(guò)候選圖片的標(biāo)志來(lái)選擇參考圖片列表,并且將用于時(shí)間跳過(guò)候選圖片的參考圖片列表所表示的參考圖片確定為時(shí)間跳過(guò)候選圖片。
接下來(lái),導(dǎo)出時(shí)間跳過(guò)候選塊。選擇與當(dāng)前預(yù)測(cè)單元相對(duì)應(yīng)的多個(gè)塊之一作為時(shí)間跳過(guò)候選塊。多個(gè)塊位于時(shí)間跳過(guò)候選圖片中。為這些塊的每一個(gè)指定優(yōu)先級(jí)。將根據(jù)優(yōu)先級(jí)確定的第一個(gè)可用的塊確定為時(shí)間跳過(guò)候選塊。
圖6是示出了根據(jù)本發(fā)明的與當(dāng)前預(yù)測(cè)單元相對(duì)應(yīng)的時(shí)間跳過(guò)候選圖片中的塊的示意圖。
優(yōu)選的是,時(shí)間跳過(guò)候選塊的位置不同于空間跳過(guò)候選塊的位置。
因此,下方左側(cè)的角塊(BR0塊)或較下方左側(cè)的塊(BR1塊)可以是第一跳過(guò)候選塊。下方左側(cè)的角塊(BR0塊)與包括在時(shí)間跳過(guò)候選圖片中的塊相鄰并且對(duì)應(yīng)于當(dāng)前的預(yù)測(cè)單元。較下方左側(cè)的塊(BR1塊)位于包括在時(shí)間跳過(guò)候選圖片中的塊內(nèi)并且對(duì)應(yīng)于當(dāng)前預(yù)測(cè)單元。塊(C塊)包括在時(shí)間跳過(guò)候選圖片中所包括的并且與當(dāng)前預(yù)測(cè)單元對(duì)應(yīng)的塊的中心位置的左上像素或右下像素,該C塊可以是第二跳過(guò)候選塊。
如果第一跳過(guò)候選塊可用,則將第一跳過(guò)候選塊確定為時(shí)間跳過(guò)候選塊。如果第一跳過(guò)候選塊無(wú)法使用并且第二跳過(guò)候選塊可用,則將第二跳過(guò)候選塊確定為時(shí)間跳過(guò)候選塊。
作為另外一種選擇,可以按照BR0、BR1和C0的順序掃描塊。另外,當(dāng)存在多個(gè)可用的時(shí)間跳過(guò)候選塊時(shí),將最大的對(duì)應(yīng)塊或可用的時(shí)間跳過(guò)候選塊的中間值確定為時(shí)間跳過(guò)候選運(yùn)動(dòng)矢量。
當(dāng)確定了時(shí)間跳過(guò)候選塊時(shí),將時(shí)間跳過(guò)候選塊的運(yùn)動(dòng)矢量設(shè)置為時(shí)間跳過(guò)候選運(yùn)動(dòng)矢量。
接下來(lái),在步驟S230中重構(gòu)跳過(guò)候選項(xiàng)列表。
使用可用的空間跳過(guò)候選項(xiàng)和可用的時(shí)間跳過(guò)候選項(xiàng)構(gòu)造跳過(guò)候選列表??梢园凑湛臻g左側(cè)跳過(guò)候選項(xiàng)(A候選項(xiàng))、空間上側(cè)跳過(guò)候選項(xiàng)(B候選項(xiàng))、時(shí)間跳過(guò)候選項(xiàng)、空間右上側(cè)跳過(guò)候選項(xiàng)(C候選項(xiàng))和空間左下跳過(guò)候選項(xiàng)(D候選項(xiàng))的順序,或按照時(shí)間跳過(guò)候選項(xiàng)、空間左側(cè)跳過(guò)候選項(xiàng)(A候選項(xiàng))、空間上側(cè)跳過(guò)候選項(xiàng)(B候選項(xiàng))、空間右上側(cè)跳過(guò)候選項(xiàng)(C候選項(xiàng))和空間左下跳過(guò)候選項(xiàng)(D候選項(xiàng))的順序,來(lái)構(gòu)造跳過(guò)候選項(xiàng)列表。
當(dāng)A、B、C、D候選項(xiàng)中一個(gè)或多個(gè)無(wú)法使用時(shí),將空間左上側(cè)跳過(guò)候選項(xiàng)(E候選項(xiàng))添加到跳過(guò)候選項(xiàng)列表中無(wú)法使用的候選項(xiàng)的位置處。也就是說(shuō),按照每個(gè)空間跳過(guò)候選項(xiàng)的優(yōu)先級(jí)的順序檢查每個(gè)空間跳過(guò)候選項(xiàng)的可用性,并且將空間左上跳過(guò)候選項(xiàng)(E候選項(xiàng))添加到跳過(guò)候選項(xiàng)列表中無(wú)法使用的候選項(xiàng)的位置處。按照A候選項(xiàng)、B候選項(xiàng)、C候選項(xiàng)和D候選項(xiàng)的順序,或者按照A候選項(xiàng)、D候選項(xiàng)、B候選項(xiàng)和C候選項(xiàng)的順序指定優(yōu)先級(jí)。
如果多個(gè)候選項(xiàng)具有相同的運(yùn)動(dòng)信息,則將優(yōu)先級(jí)低的候選項(xiàng)從跳過(guò)候選項(xiàng)列表中刪除。運(yùn)動(dòng)信息包括運(yùn)動(dòng)矢量和參考圖片索引。
接下來(lái),在步驟S240中,導(dǎo)出當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考圖片索引。
當(dāng)所接收的預(yù)測(cè)單元中存在跳過(guò)索引時(shí),將跳過(guò)索引所表示的跳過(guò)候選項(xiàng)的運(yùn)動(dòng)矢量和參考圖片索引確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引。
當(dāng)所接收的預(yù)測(cè)單元中不存在跳過(guò)索引而存在跳過(guò)候選項(xiàng)時(shí),將跳過(guò)候選項(xiàng)的運(yùn)動(dòng)矢量和參考圖片索引確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引。
當(dāng)所接收的預(yù)測(cè)單元中不存在跳過(guò)索引并且至少一個(gè)跳過(guò)候選項(xiàng)都不存在時(shí),將當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引設(shè)置為0。
當(dāng)跳過(guò)候選項(xiàng)表示時(shí)間跳過(guò)候選項(xiàng)時(shí),將跳過(guò)候選塊的運(yùn)動(dòng)矢量確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量,并且將0或用于時(shí)間跳過(guò)候選項(xiàng)的參考圖片索引確定為當(dāng)前預(yù)測(cè)單元的參考圖片索引。
可能已經(jīng)使用由可用的跳過(guò)候選項(xiàng)的數(shù)量所確定的可變長(zhǎng)度編碼(VLC)表對(duì)跳過(guò)索引進(jìn)行編碼。如果已經(jīng)使用由可用的跳過(guò)候選項(xiàng)的數(shù)量所確定的VLC對(duì)跳過(guò)索引進(jìn)行編碼,則在步驟230與步驟240之間可以插入使用與可用的跳過(guò)候選項(xiàng)的數(shù)量相對(duì)應(yīng)的VLC表對(duì)跳過(guò)索引進(jìn)行解碼的步驟。在步驟S240中,使用被解碼的跳過(guò)索引來(lái)確定當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。作為另外一種選擇,跳過(guò)候選項(xiàng)的數(shù)量可以是固定的。如果跳過(guò)候選項(xiàng)的數(shù)量是固定的,則可以通過(guò)使用可用的跳過(guò)候選項(xiàng)來(lái)生成與一個(gè)或多個(gè)無(wú)法使用的跳過(guò)候選項(xiàng)相對(duì)應(yīng)的跳過(guò)候選項(xiàng),以構(gòu)造跳過(guò)候選項(xiàng)列表。
在步驟S250中,如果導(dǎo)出了當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考圖片索引,則使用參考圖片索引所表示的圖片的運(yùn)動(dòng)矢量來(lái)生成預(yù)測(cè)塊。預(yù)測(cè)塊是重構(gòu)的塊。
同時(shí),當(dāng)編碼單元中的skip_flag為0并且所接收的預(yù)測(cè)單元中的merge_flag為1時(shí),生成重構(gòu)的塊的過(guò)程與生成跳過(guò)的編碼單元的重構(gòu)的塊的過(guò)程幾乎相同。具體地講,生成預(yù)測(cè)塊的過(guò)程與生成跳過(guò)模式的預(yù)測(cè)塊的過(guò)程相同。在跳過(guò)模式中,所生成的預(yù)測(cè)塊是重構(gòu)塊,因?yàn)闅埐顗K為0。然而,在合并模式中,殘差塊并非為0,從而增加恢復(fù)殘差塊的步驟和通過(guò)添加預(yù)測(cè)塊和殘差塊來(lái)生成重構(gòu)的塊的步驟。
從相鄰的預(yù)測(cè)單元中導(dǎo)出可用的空間和時(shí)間合并候選項(xiàng)。用于獲得空間合并候選項(xiàng)和時(shí)間合并候選項(xiàng)的過(guò)程分別與空間跳過(guò)候選項(xiàng)和時(shí)間跳過(guò)候選項(xiàng)的過(guò)程相同。
接下來(lái),構(gòu)造可用的合并候選項(xiàng)列表。以預(yù)定的順序排列可用的空間合并候選項(xiàng)和可用的時(shí)間合并候選項(xiàng)。預(yù)定的順序是空間左側(cè)合并候選項(xiàng)(A候選項(xiàng))、空間上側(cè)合并候選項(xiàng)(B候選項(xiàng))、時(shí)間合并候選項(xiàng)、空間右上側(cè)合并候選項(xiàng)(C候選項(xiàng))和空間左下合并候選項(xiàng)(D候選項(xiàng))的順序,或者時(shí)間合并候選項(xiàng)、空間左側(cè)合并候選項(xiàng)(A候選項(xiàng))、空間上側(cè)合并候選項(xiàng)(B候選項(xiàng))、空間右上側(cè)合并候選項(xiàng)(C候選項(xiàng))和空間左下合并候選項(xiàng)(D候選項(xiàng))的順序。
當(dāng)A、B、C、D合并候選項(xiàng)中一個(gè)或多個(gè)無(wú)法使用時(shí),將空間左上側(cè)合并候選項(xiàng)(E候選項(xiàng))添加到合并候選項(xiàng)列表中無(wú)法使用的候選項(xiàng)的位置處。也就是說(shuō),按照每個(gè)空間合并候選項(xiàng)的優(yōu)先級(jí)的順序檢查每個(gè)空間合并候選項(xiàng)的可用性,并且將空間左上合并候選項(xiàng)(E候選項(xiàng))添加到合并候選項(xiàng)列表中無(wú)法使用的候選項(xiàng)的位置處。按照A、B、C和D的順序或者A、D、B和C的順序指定優(yōu)先級(jí)。
另外,根據(jù)預(yù)測(cè)單元的預(yù)測(cè)模式,可以改變預(yù)定的順序或者從合并候選項(xiàng)中排除一個(gè)或多個(gè)合并候選項(xiàng)。例如,如果預(yù)測(cè)單元為2N×N,則可以排除空間左下側(cè)的合并候選項(xiàng)(D候選項(xiàng))。如果預(yù)測(cè)單元為N×2N,則改變空間左下側(cè)合并候選項(xiàng)(D候選項(xiàng))和空間右上側(cè)合并候選項(xiàng)(C候選項(xiàng))的順序或者排除空間右上側(cè)合并候選項(xiàng)(C候選項(xiàng)),因?yàn)榭臻g左下側(cè)合并候選項(xiàng)(D候選項(xiàng))與當(dāng)前預(yù)測(cè)單元之間的關(guān)聯(lián)性高于空間右上側(cè)合并候選項(xiàng)(C候選項(xiàng))與當(dāng)前預(yù)測(cè)單元之間的關(guān)聯(lián)性。
接下來(lái),導(dǎo)出當(dāng)前預(yù)測(cè)單元的運(yùn)動(dò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è)單元中不存在合并索引而存在合并候選項(xiàng)時(shí),將合并候選項(xiàng)的運(yùn)動(dòng)矢量和參考圖片索引確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引。
當(dāng)所接收的預(yù)測(cè)單元中不存在合并索引并且至少一個(gè)跳過(guò)候選項(xiàng)都不存在時(shí),將當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考索引設(shè)置為0。
當(dāng)合并候選項(xiàng)表示時(shí)間合并候選項(xiàng)時(shí),將時(shí)間合并候選項(xiàng)的運(yùn)動(dòng)矢量確定為當(dāng)前單元的運(yùn)動(dòng)矢量。并且可以將0或用于時(shí)間合并候選項(xiàng)的參考圖片索引確定為當(dāng)前預(yù)測(cè)單元的參考圖片索引。
可能已經(jīng)使用由可用的合并候選項(xiàng)的數(shù)量所確定的VLC表對(duì)合并索引進(jìn)行編碼。如果已經(jīng)使用了由可用的合并候選項(xiàng)的數(shù)量所確定的VLC表對(duì)合并索引進(jìn)行了編碼,則可以插入統(tǒng)計(jì)可用的跳過(guò)候選項(xiàng)的數(shù)量并且使用與該數(shù)量相對(duì)應(yīng)的VLC表對(duì)跳過(guò)索引進(jìn)行解碼的步驟。
如果導(dǎo)出了當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量和參考圖片索引,則使用參考圖片索引所表示的圖片中的運(yùn)動(dòng)矢量來(lái)生成預(yù)測(cè)塊。
另外,在變換單元的單元中恢復(fù)殘差塊。通過(guò)熵解碼、反向掃描、反向量化和反向變換來(lái)恢復(fù)殘差塊。由圖2中解碼裝置的熵解碼單元210、反向掃描單元215、反向量化單元220和反向變換單元225執(zhí)行此過(guò)程。
最后,使用預(yù)測(cè)單元和殘差塊來(lái)生成重構(gòu)的塊??梢栽诰幋a單元的單元中生成重構(gòu)的塊。因此,在編碼單元中分別生成預(yù)測(cè)塊和殘差塊之后,使用編碼單元的單元中的預(yù)測(cè)塊和編碼單元的單元中的殘差塊來(lái)生成重構(gòu)的塊。
圖7是示出了根據(jù)本發(fā)明生成被運(yùn)動(dòng)矢量預(yù)測(cè)編碼的預(yù)測(cè)單元的重構(gòu)的塊的過(guò)程的流程圖。當(dāng)編碼單元中skip_flag為0并且所接收的預(yù)測(cè)單元中merge_flag為0時(shí),應(yīng)用此過(guò)程。
首先,在步驟S310中,從所接收的比特流的預(yù)測(cè)單元語(yǔ)法獲得當(dāng)前預(yù)測(cè)單元的參考圖片索引和運(yùn)動(dòng)矢量差值。
如果切片類(lèi)型為B,則檢查幀間預(yù)測(cè)信息。如果幀間預(yù)測(cè)信息通過(guò)使用結(jié)合的參考圖片列表(Pred_LC)來(lái)表示單向預(yù)測(cè),則使用參考圖片索引選擇所結(jié)合的參考圖片列表(list_c)的多個(gè)參考圖片中的一個(gè)參考圖片,并且恢復(fù)運(yùn)動(dòng)矢量差值。如果幀間預(yù)測(cè)信息通過(guò)使用參考圖片列表0來(lái)表示單向預(yù)測(cè),則使用參考圖片列表0的參考圖片索引選擇參考圖片,并且恢復(fù)運(yùn)動(dòng)矢量差值。如果幀間預(yù)測(cè)信息表示雙向預(yù)測(cè),則使用參考圖片列表0和1的每個(gè)參考圖片索引來(lái)選擇每個(gè)參考圖片,并且恢復(fù)每個(gè)參考圖片的每個(gè)運(yùn)動(dòng)矢量差值。
接下來(lái),在步驟S320中導(dǎo)出空間運(yùn)動(dòng)矢量候選項(xiàng)。圖8是示出了根據(jù)本發(fā)明的用于生成運(yùn)動(dòng)矢量候選項(xiàng)的相鄰的預(yù)測(cè)單元的位置的示意圖。
空間左運(yùn)動(dòng)矢量候選項(xiàng)可以是當(dāng)前預(yù)測(cè)單元的左側(cè)預(yù)測(cè)單元(A塊和D塊)之一??臻g上運(yùn)動(dòng)矢量候選塊可以是當(dāng)前預(yù)測(cè)單元的上側(cè)預(yù)測(cè)單元(B塊、C塊和E塊)之一。
用于導(dǎo)出空間左運(yùn)動(dòng)矢量候選項(xiàng)的過(guò)程如下。
通過(guò)按照A塊和D塊的順序或者按照D塊和A塊的順序檢索當(dāng)前預(yù)測(cè)單元的左側(cè)塊來(lái)檢查是否存在滿足第一條件的預(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)。
如果不存在滿足第一條件的預(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)。
如果不存在滿足第二條件的預(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è)單元?jiǎng)t,將預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間左運(yùn)動(dòng)矢量候選項(xià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)。
不縮放滿足第一條件或第二條件的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。但是,縮放滿足第三條件或第四條件的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。
如果不存在滿足任何一個(gè)條件的預(yù)測(cè)單元,則空間左側(cè)的運(yùn)動(dòng)矢量候選項(xiàng)就無(wú)法使用。
用于導(dǎo)出空間上運(yùn)動(dòng)矢量候選項(xiàng)的過(guò)程如下。
通過(guò)按照B塊、C塊和E塊的順序或者按照C塊、B塊和E塊的順序檢索以上塊來(lái)檢查是否存在滿足第一條件的預(yù)測(cè)單元。如果存在滿足第一條件的預(yù)測(cè)單元,則將預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間上運(yùn)動(dòng)矢量候選項(xiàng)。
如果不存在滿足第一條件的預(yù)測(cè)單元,則檢查是否滿足第二條件的預(yù)測(cè)單元。如果存在滿足第二條件的預(yù)測(cè)單元,將預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間上運(yùn)動(dòng)矢量候選項(xiàng)。
如果不存在滿足第二條件的預(yù)測(cè)單元,則檢查是否滿足第三條件的預(yù)測(cè)單元。如果存在滿足第三條件的預(yù)測(cè)單元,將預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間上運(yùn)動(dòng)矢量候選項(xiàng)。
如果不存在滿足第三條件的預(yù)測(cè)單元,則檢查是否滿足第四條件的預(yù)測(cè)單元。如果存在滿足第四條件的預(yù)測(cè)單元,將預(yù)測(cè)單元的運(yùn)動(dòng)矢量確定為空間上運(yùn)動(dòng)矢量候選項(xiàng)。
不縮放滿足第一條件或第二條件的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。但是,縮放滿足第三條件或第四條件的預(yù)測(cè)單元的運(yùn)動(dòng)矢量。
如果不存在滿足任何一個(gè)條件的預(yù)測(cè)單元,空間上側(cè)的運(yùn)動(dòng)矢量候選項(xiàng)就無(wú)法使用。
用于確定空間左運(yùn)動(dòng)矢量候選項(xiàng)的第一至第四條件與用于確定空間上運(yùn)動(dòng)矢量候選項(xiàng)的第一至第四條件相同。
在步驟S330中導(dǎo)出時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。首先,導(dǎo)出數(shù)據(jù)運(yùn)動(dòng)矢量候選塊所屬的圖片(時(shí)間跳過(guò)候選圖片)。可以將索引為0的參考圖片確定為時(shí)間運(yùn)動(dòng)矢量候選圖片。例如,當(dāng)切片類(lèi)型為P時(shí),將參考圖片列表0的第一圖片確定為時(shí)間運(yùn)動(dòng)矢量候選圖片。當(dāng)切片類(lèi)型為B時(shí),使用表示時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)所屬的列表的切片頭的標(biāo)志來(lái)確定時(shí)間運(yùn)動(dòng)矢量候選圖片。例如,如果標(biāo)志為1,從列表0確定時(shí)間運(yùn)動(dòng)矢量候選圖片,并且如果標(biāo)志為0,從列表1確定時(shí)間運(yùn)動(dòng)矢量候選圖片。作為另外一種選擇,將從預(yù)測(cè)單元獲得的參考圖片索引所表示的圖片確定為時(shí)間運(yùn)動(dòng)矢量候選圖片。
接下來(lái),導(dǎo)出時(shí)間運(yùn)動(dòng)矢量候選圖片中的數(shù)據(jù)運(yùn)動(dòng)矢量候選塊。時(shí)間運(yùn)動(dòng)矢量候選塊與時(shí)間跳過(guò)候選塊相同。如果導(dǎo)出了時(shí)間運(yùn)動(dòng)矢量候選塊,將時(shí)間運(yùn)動(dòng)矢量候選塊的運(yùn)動(dòng)矢量確定為時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)。
接下來(lái),在步驟S340中構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表。使用可用的空間和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)來(lái)構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表??梢园凑疹A(yù)定的順序構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表。預(yù)定的順序是空間左運(yùn)動(dòng)矢量候選項(xiàng)、空間上運(yùn)動(dòng)矢量候選項(xiàng)和時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)的順序,或者時(shí)間運(yùn)動(dòng)矢量候選項(xiàng)、空間左運(yùn)動(dòng)矢量候選項(xiàng)和空間上運(yùn)動(dòng)矢量候選項(xiàng)的順序。
根據(jù)預(yù)測(cè)單元的預(yù)測(cè)模式可以改變預(yù)定的順序或者從運(yùn)動(dòng)矢量候選項(xiàng)中排除一個(gè)或多個(gè)運(yùn)動(dòng)矢量候選項(xiàng)。例如,如果當(dāng)前預(yù)測(cè)單元被分割為兩個(gè)2N×N預(yù)測(cè)單元,則可以對(duì)下側(cè)2N×N預(yù)測(cè)單元將空間上運(yùn)動(dòng)矢量候選項(xiàng)排除。如果當(dāng)前預(yù)測(cè)單元被分割成兩個(gè)N×2N預(yù)測(cè)單元,則可以改變空間上運(yùn)動(dòng)矢量候選項(xiàng)和空間左運(yùn)動(dòng)矢量候選項(xiàng)的順序,或者可以對(duì)右側(cè)N×2N預(yù)側(cè)單元將空間左運(yùn)動(dòng)矢量候選項(xiàng)排除。
作為另外一種選擇,當(dāng)編碼單元被分割成兩個(gè)2N×N預(yù)測(cè)單元時(shí),可以合并以上2N×N預(yù)測(cè)單元。如果可能無(wú)法合并以上2N×N預(yù)測(cè)單元時(shí),可以刪除D塊,或者當(dāng)確定空間左運(yùn)動(dòng)矢量候選項(xiàng)時(shí),按照此順序掃描A塊和D塊。當(dāng)編碼單元被分割為兩個(gè)N×2N預(yù)測(cè)單元時(shí),相同的方法可以應(yīng)用于空間上運(yùn)動(dòng)矢量候選項(xiàng)。
接下來(lái),如果多個(gè)候選項(xiàng)具有相同的運(yùn)動(dòng)矢量,則在運(yùn)動(dòng)矢量候選項(xiàng)列表中刪除具有較低優(yōu)先級(jí)的候選項(xiàng)。
接下來(lái),在步驟S350中獲得當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)值。
當(dāng)在預(yù)測(cè)單元中存在運(yùn)動(dòng)矢量索引時(shí),將運(yùn)動(dòng)矢量候選項(xiàng)列表中相對(duì)應(yīng)的索引的運(yùn)動(dòng)矢量候選項(xiàng)確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)值。當(dāng)在所接收的預(yù)測(cè)單元中不存在運(yùn)動(dòng)矢量索引并且存在運(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ùn)動(dòng)矢量候選項(xiàng)都無(wú)法使用時(shí),將當(dāng)前單元的運(yùn)動(dòng)矢量預(yù)測(cè)值設(shè)置為0。
同時(shí),在構(gòu)造運(yùn)動(dòng)矢量候選項(xiàng)列表之前,可以讀取運(yùn)動(dòng)矢量索引。在這種情況下,在按照預(yù)定的順序以運(yùn)動(dòng)矢量索引所表示的數(shù)量檢索可用的運(yùn)動(dòng)矢量候選項(xiàng)之后,可以將與運(yùn)動(dòng)矢量索引相對(duì)應(yīng)的運(yùn)動(dòng)矢量候選項(xiàng)確定為當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。運(yùn)動(dòng)矢量索引可以以固定的長(zhǎng)度或變化的長(zhǎng)度進(jìn)行編碼。
在步驟S360中,如果獲得了當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量預(yù)測(cè)值,則通過(guò)將運(yùn)動(dòng)矢量差值與運(yùn)動(dòng)矢量預(yù)測(cè)值相加而重構(gòu)當(dāng)前預(yù)測(cè)單元的運(yùn)動(dòng)矢量。
接下來(lái),在步驟S370中,使用當(dāng)前預(yù)測(cè)單元的接收的參考圖片索引和當(dāng)前預(yù)測(cè)單元的恢復(fù)的運(yùn)動(dòng)矢量來(lái)生成預(yù)測(cè)塊。
另外,在步驟S380中,在變換單元的單元中恢復(fù)殘差塊。通過(guò)熵解碼、反向掃描、反向量化和反向變換恢復(fù)殘差塊。由圖2中解碼裝置的熵解碼單元210、反向掃描單元215、反向量化單元220和反向變換單元225執(zhí)行此過(guò)程。
最后,在步驟S390中使用預(yù)測(cè)塊和殘差塊來(lái)生成重構(gòu)的塊。在編碼單元的單元中可以生成重構(gòu)的塊。因此,在編碼單元的單元中分別生成預(yù)測(cè)塊和殘差塊之后,使用編碼單元的單元中的預(yù)測(cè)塊和編碼單元的單元中的殘差塊來(lái)生成重構(gòu)的塊。
盡管根據(jù)本發(fā)明的某些示例性實(shí)施例示出并且描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將會(huì)理解的是,在不脫離由所附權(quán)利要求書(shū)所限定的精神和范圍中,可以在本發(fā)明的形式和細(xì)節(jié)上進(jìn)行各種修改。