本發(fā)明主張申請(qǐng)于2014年7月18日,序列號(hào)為PCT/CN2014/082538的PCT專利申請(qǐng)的優(yōu)先權(quán)。將此PCT專利申請(qǐng)以參考的方式并入本文中。
【技術(shù)領(lǐng)域】
本發(fā)明涉及視頻編碼。特別地,本發(fā)明涉及從用于運(yùn)動(dòng)向量預(yù)測(cè)的單向運(yùn)動(dòng)向量導(dǎo)出雙向運(yùn)動(dòng)向量。
背景技術(shù):
運(yùn)動(dòng)估計(jì)是利用視頻序列中的時(shí)間冗余的一種有效的幀間編碼技術(shù)。運(yùn)動(dòng)補(bǔ)償幀間編碼已經(jīng)被廣泛地使用于各種國(guó)際視頻編碼標(biāo)準(zhǔn)中。在各種編碼標(biāo)準(zhǔn)中采用的運(yùn)動(dòng)估計(jì)通常是基于塊的技術(shù),其中,運(yùn)動(dòng)信息(例如:編碼模式以及運(yùn)動(dòng)向量)被確定以用于每個(gè)宏區(qū)塊或類似塊配置。對(duì)于運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)(motion compensation prediction,MCP)編碼來(lái)說(shuō),當(dāng)前塊是通過(guò)參考?jí)K來(lái)預(yù)測(cè)。當(dāng)前塊與參考?jí)K之間的位移(displacement)被稱為運(yùn)動(dòng)向量(motion vector,MV)。運(yùn)動(dòng)向量被標(biāo)識(shí)到解碼器。當(dāng)使用兩個(gè)參考?jí)K(即,雙向預(yù)測(cè))時(shí),兩個(gè)運(yùn)動(dòng)向量被標(biāo)識(shí)。幀間預(yù)測(cè)或幀內(nèi)預(yù)測(cè)殘差通常通過(guò)轉(zhuǎn)換、量化、以及熵編碼被進(jìn)一步處理以產(chǎn)生壓縮后的視頻比特流。
為了減少用于編碼運(yùn)動(dòng)向量的數(shù)據(jù)量,運(yùn)動(dòng)向量預(yù)測(cè)子(motion vector predictor,MVP)已經(jīng)被廣泛地用于高級(jí)編碼(例如:高效視頻編碼(High Efficiency Video Coding,HEVC))標(biāo)準(zhǔn)中。MVP是由空間或時(shí)間相鄰已編碼塊導(dǎo)出。例如,在HEVC中的高級(jí)運(yùn)動(dòng)向量預(yù)測(cè)(advanced motion vector prediction,AMVP)和合并模式中使用多個(gè)MVP。期望進(jìn)一步提高M(jìn)VP的編碼效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于給定第一方向的運(yùn)動(dòng)向量(given motion vector)來(lái)導(dǎo)出第二方向的時(shí)間導(dǎo)出運(yùn)動(dòng)向量(temporal derived motion vector)的運(yùn)動(dòng)向量預(yù)測(cè)的方法以及裝置。根據(jù)本發(fā)明,用于當(dāng)前塊的給定運(yùn)動(dòng)向量被確定,其中,給定運(yùn)動(dòng)向量是沿第一方向從所述當(dāng)前塊指出。識(shí)別與第一參考幀中第一參考?jí)K相關(guān)聯(lián)的參考運(yùn)動(dòng)向量。接著,基于參考運(yùn)動(dòng)向量以及給定運(yùn)動(dòng)向量來(lái)導(dǎo)出時(shí)間導(dǎo)出運(yùn)動(dòng)向量。時(shí)間導(dǎo)出運(yùn)動(dòng)向量從當(dāng)前塊沿第二方向指向第二參考幀的第二參考?jí)K,其中,第二方向不同于第一方向。接著,時(shí)間導(dǎo)出運(yùn)動(dòng)向量被用作為用于當(dāng)前塊的運(yùn)動(dòng)向量的編碼或解碼的一個(gè)預(yù)測(cè)子。
通過(guò)將當(dāng)前塊的對(duì)應(yīng)中心、左上、或其他位置移位(shifting)給定運(yùn)動(dòng)向量來(lái)定位第一參考幀中的第一參考?jí)K。用于當(dāng)前塊的給定運(yùn)動(dòng)向量可基于當(dāng)前塊的空間或時(shí)間相鄰塊的運(yùn)動(dòng)向量來(lái)確定。時(shí)間導(dǎo)出運(yùn)動(dòng)向量可根據(jù)給定運(yùn)動(dòng)向量以及參考運(yùn)動(dòng)向量的和來(lái)確定。
如果給定運(yùn)動(dòng)向量指向不同于第一參考幀的另一參考幀,則給定運(yùn)動(dòng)向量被縮放(scaled)以指向第一參考幀。類似地,如果參考運(yùn)動(dòng)向量指向不同于第二參考幀的另一參考幀,則參考運(yùn)動(dòng)向量可被縮放以指向第二參考幀。此外,如果時(shí)間導(dǎo)出運(yùn)動(dòng)向量指向不同于第二參考幀的另一參考幀,則時(shí)間導(dǎo)出運(yùn)動(dòng)向量可被縮放以指向第二參考幀。
在一個(gè)實(shí)施例中,校驗(yàn)一個(gè)或多個(gè)編碼參數(shù)以確定參考運(yùn)動(dòng)向量是否有效。只有當(dāng)參考運(yùn)動(dòng)向量有效時(shí),參考運(yùn)動(dòng)向量被用于導(dǎo)出時(shí)間導(dǎo)出運(yùn)動(dòng)向量。例如,如果第二參考?jí)K為跳過(guò)模式(skip mode)或合并模式或第二參考?jí)K的已編碼塊旗標(biāo)(coded block flag,cbf)為零,則參考運(yùn)動(dòng)向量是無(wú)效的。
在一個(gè)實(shí)施例中,時(shí)間導(dǎo)出運(yùn)動(dòng)向量被用于合并模式中。產(chǎn)生一個(gè)或多個(gè)時(shí)間導(dǎo)出運(yùn)動(dòng)向量以添加到合并候選列表,且使用初始合并候選列表(original merge candidate list)中的一個(gè)運(yùn)動(dòng)向量作為一個(gè)給定運(yùn)動(dòng)向量來(lái)導(dǎo)出每個(gè)時(shí)間導(dǎo)出運(yùn)動(dòng)向量。冗余校驗(yàn)可被應(yīng)用于時(shí)間導(dǎo)出運(yùn)動(dòng)向量,且任何冗余的時(shí)間導(dǎo)出運(yùn)動(dòng)向量不會(huì)被添加到合并候選列表。時(shí)間導(dǎo)出運(yùn)動(dòng)向量可被放置于合并候選列表的預(yù)定義的位置。例如,時(shí)間導(dǎo)出運(yùn)動(dòng)向量可被放置于合并候選列表中所有空間以及時(shí)間合并候選之后,且被允許添加到合并候選列表的所述一個(gè)或多個(gè)時(shí)間導(dǎo)出運(yùn)動(dòng)向量的數(shù)量取決于合并候選列表的最大尺寸。
在另一實(shí)施例中,時(shí)間導(dǎo)出運(yùn)動(dòng)向量被用于AMVP模式。例如,產(chǎn)生一個(gè)或多個(gè)時(shí)間導(dǎo)出運(yùn)動(dòng)向量以添加到AMVP合并候選列表,且使用初始AMVP候選列表中的一個(gè)運(yùn)動(dòng)向量作為一個(gè)給定運(yùn)動(dòng)向量來(lái)導(dǎo)出每個(gè)時(shí)間導(dǎo)出運(yùn)動(dòng)向量。
通過(guò)使用一個(gè)或多個(gè)語(yǔ)法元素來(lái)指示是否將時(shí)間導(dǎo)出運(yùn)動(dòng)向量用于運(yùn)動(dòng)向量預(yù)測(cè),可自適應(yīng)地應(yīng)用用于運(yùn)動(dòng)向量預(yù)測(cè)的時(shí)間導(dǎo)出運(yùn)動(dòng)向量。語(yǔ)法元素可被顯式地標(biāo)識(shí)于序列等級(jí)、視頻等級(jí)、圖片等級(jí)、或條帶等級(jí)。是否將時(shí)間導(dǎo)出運(yùn)動(dòng)向量用于運(yùn)動(dòng)向量預(yù)測(cè)還可于解碼器側(cè)被隱式地確定。例如,此決定可根據(jù)模式選擇、當(dāng)前塊的相鄰已編碼塊的運(yùn)動(dòng)參數(shù)、或第一參考?jí)K的運(yùn)動(dòng)參數(shù)、或第二參考?jí)K的運(yùn)動(dòng)參數(shù)、或第一參考?jí)K的運(yùn)動(dòng)參數(shù)以及第二參考?jí)K的運(yùn)動(dòng)參數(shù)來(lái)做出。
【附圖說(shuō)明】
圖1所示為時(shí)間導(dǎo)出雙向(temporal-derived bi-direction,TDB)運(yùn)動(dòng)向量預(yù)測(cè)子(motion vector predictor,MVP)的示例,其中,MV0表示當(dāng)前塊在一個(gè)方向上的給定運(yùn)動(dòng)向量,MV01表示參考運(yùn)動(dòng)向量,且MV1表示TDB MVP。
圖2所示為根據(jù)本發(fā)明實(shí)施例的結(jié)合TDB MVP的視頻編碼系統(tǒng)的示范性流程圖。
【具體實(shí)施方式】
下文的描述是實(shí)施本發(fā)明的最佳預(yù)期模式。這種描述是為了說(shuō)明本發(fā)明的一般原理,而不應(yīng)被理解成對(duì)本發(fā)明的限制。本發(fā)明的范圍可通過(guò)參考所附權(quán)利要求做最好的確定。
為了提高與運(yùn)動(dòng)向量預(yù)測(cè)(motion vector prediction,MVP)相關(guān)聯(lián)的編碼效率,本發(fā)明基于給定運(yùn)動(dòng)向量導(dǎo)出附加的時(shí)間運(yùn)動(dòng)向量(也被稱作“時(shí)間導(dǎo)出運(yùn)動(dòng)向量”)以形成用于當(dāng)前塊的雙向運(yùn)動(dòng)向量預(yù)測(cè)子(motion vector predictor,MVP)。于本公開(kāi)中,根據(jù)相關(guān)的上下文,術(shù)語(yǔ)MVP可指代運(yùn)動(dòng)向量預(yù)測(cè)或運(yùn)動(dòng)向量預(yù)測(cè)子。圖1所示為時(shí)間導(dǎo)出雙向(temporal-derived bi-direction,TDB)運(yùn)動(dòng)向量預(yù)測(cè)子(motion vector predictor,MVP)的示例。運(yùn)動(dòng)向量MV0表示當(dāng)前幀120的當(dāng)前塊122在一個(gè)方向上的運(yùn)動(dòng)向量。如圖1所示,運(yùn)動(dòng)向量MV0指向參考幀110中的參考?jí)K112。參考?jí)K112的運(yùn)動(dòng)向量MV01指向?qū)?yīng)于另一方向的另一參考幀130中的另一參考?jí)K132。運(yùn)動(dòng)向量MV01與運(yùn)動(dòng)向量MV0一起被用于導(dǎo)出用于當(dāng)前塊其它方向的新的運(yùn)動(dòng)向量。兩個(gè)MV(即,MV0以及MV1)形成了用于當(dāng)前塊的雙向運(yùn)動(dòng)向量預(yù)測(cè)子。
通過(guò)將當(dāng)前塊122的對(duì)應(yīng)中心、左上、或其他位置移位(shifting)MV0,可定位參考幀中參考?jí)K112的位置。
對(duì)于運(yùn)動(dòng)向量預(yù)測(cè)中的應(yīng)用,運(yùn)動(dòng)向量MV0可對(duì)應(yīng)于先前已編碼塊的MV。因此,根據(jù)本發(fā)明,運(yùn)動(dòng)向量MV0可從當(dāng)前塊122的空間或時(shí)間相鄰塊導(dǎo)出。此外,在基于MVP的編碼中,差分編碼可減少用于編碼運(yùn)動(dòng)向量所需的數(shù)據(jù),其中,當(dāng)前MV以及MVP之間的差(difference)被編碼。因此,運(yùn)動(dòng)向量MV0可通過(guò)差分編碼被標(biāo)識(shí)。
在一個(gè)實(shí)施例中,已導(dǎo)出的MV1可通過(guò)將MV0以及MV01相加來(lái)獲得,即:MV1=MV0+MV01。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,如果運(yùn)動(dòng)向量MV0指向不同于第一目標(biāo)參考幀(例如,參考幀110)的參考幀,運(yùn)動(dòng)向量MV0可據(jù)此被縮放。在本領(lǐng)域中,各種運(yùn)動(dòng)向量縮放技術(shù)是公知的。例如,時(shí)間運(yùn)動(dòng)向量縮放可根據(jù)圖片順序計(jì)數(shù)(picture order count,POC)來(lái)執(zhí)行。類似地,根據(jù)本發(fā)明的一個(gè)實(shí)施例,如果運(yùn)動(dòng)向量MV1指向不同于第二目標(biāo)參考幀(例如,參考幀130)的參考幀,則運(yùn)動(dòng)向量MV1可據(jù)此被縮放。此外,根據(jù)本發(fā)明的一個(gè)實(shí)施例,如果運(yùn)動(dòng)向量MV01指向不同于第二目標(biāo)參考幀(例如,參考幀130)的參考幀,則運(yùn)動(dòng)向量MV01可據(jù)此被縮放。例如,第一和第二目標(biāo)參考幀是與當(dāng)前塊122相關(guān)聯(lián)的預(yù)定參考幀(122)。
也可校驗(yàn)?zāi)承┚幋a參數(shù)或條件以確定參考運(yùn)動(dòng)向量(即,MV01)是否為有效的。如果運(yùn)動(dòng)向量MV01是無(wú)效的,則可跳過(guò)TDB MVP,或應(yīng)用其它備選程序。例如,可校驗(yàn)對(duì)應(yīng)于參考?jí)K132是否被編碼于跳過(guò)模式或合并模式,或參考?jí)K132的已編碼塊旗標(biāo)是否為零的條件,以確定運(yùn)動(dòng)向量MV01是否有效。如果任何以上條件為真,則運(yùn)動(dòng)向量MV01是無(wú)效的。
TDB運(yùn)動(dòng)向量預(yù)測(cè)子可被應(yīng)用于不同的MVP場(chǎng)景。例如,TDB MVP可被用作HEVC中合并模式的候選。此外,來(lái)自每個(gè)空間候選的運(yùn)動(dòng)向量可被用作給定的MV(即,MV0)。TDB MVP可被添加到合并候選列表以作為附加的候選(被稱為TDB合并候選)。類似地,來(lái)自每個(gè)時(shí)間合并候選的運(yùn)動(dòng)向量也可被用作給定的MV(即,MV0)。TDB MVP被添加到合并候選列表以作為TDB候選。
在另一實(shí)施例中,可使用冗余校驗(yàn)程序來(lái)校驗(yàn)TDB合并候選是否與合并候選列表中已經(jīng)存在的任何候選相同。如果是,則TDB合并候選是冗余的,且不需要被添加。
當(dāng)合并候選列表被使用時(shí),合并候選列表中的合并候選根據(jù)特定順序被放置于列表中。每個(gè)合并候選可通過(guò)索引來(lái)識(shí)別。如果產(chǎn)生TDB合并候選以用于合并候選列表(即,于添加任何TDB合并候選之前的初始合并候選列表)中的每個(gè)MV,則多個(gè)TDB合并候選可被產(chǎn)生以用于初始合并候選列表中的多個(gè)MV。在一個(gè)實(shí)施例中,TDB合并候選或候選被放置于列表中的預(yù)定位置。在另一實(shí)施例中,TDB合并候選或候選可被放置于空間以及時(shí)間合并候選之后??杀惶砑拥胶喜⒑蜻x列表的TDB合并候選的數(shù)量可由合并候選列表的最大尺以及現(xiàn)存的合并候選的數(shù)量來(lái)確定。
在另一實(shí)施例中,用于合并候選的TDB MVP的使用是被自適應(yīng)地應(yīng)用。例如,語(yǔ)法元素可被用于指示單向或雙向合并候選是否被用于導(dǎo)出對(duì)應(yīng)的合并候選。
在又一實(shí)施例中,是否添加TDB合并候選可取決于與兩個(gè)參考幀(即,圖1中的參考幀110以及130)相關(guān)聯(lián)的參考列表。例如,如果兩個(gè)參考列表是相同的,則TDB合并候選將不會(huì)被添加。否則,TDB合并候選將被添加。
于另一示例中,TDB MVP可被用作HEVC中AMVP模式的候選。在此情況下,運(yùn)動(dòng)向量MV0可從AMVP候選列表中的MV導(dǎo)出。TDB MVP程序可被用于導(dǎo)出運(yùn)動(dòng)向量MV1,且TDB MVP被添加到其它方向的AMVP候選列表。備選地,TDB MVP可被用作其它方向的MV,而不需標(biāo)識(shí)MVD。
當(dāng)TDB MVP被用作為合并或AMVP模式中的候選時(shí),一個(gè)或多個(gè)語(yǔ)法元素被用于標(biāo)識(shí)雙向運(yùn)動(dòng)向量預(yù)測(cè)子是否被使用。此外,語(yǔ)法元素可被顯式地傳送于序列、視頻、圖片或條帶等級(jí),例如:序列參數(shù)集(sequence parameter set,SPS)、視頻參數(shù)集(video parameter set,VPS)、圖片參數(shù)集(picture parameter set,PPS)或條帶標(biāo)頭(slice header)。備選地,關(guān)于雙向運(yùn)動(dòng)向量預(yù)測(cè)子是否被用于合并或AMVP候選列表的信息可于解碼器側(cè)被隱式地導(dǎo)出。于解碼器側(cè),可根據(jù)模式選擇或當(dāng)前塊122的相鄰已編碼塊的運(yùn)動(dòng)參數(shù),或根據(jù)參考?jí)K112和/或參考?jí)K132的運(yùn)動(dòng)參數(shù)隱式地導(dǎo)出此信息。
圖2所示為根據(jù)本發(fā)明實(shí)施例的結(jié)合TDB MVP的視頻編碼系統(tǒng)的示范性流程圖。如步驟210所述,確定用于當(dāng)前塊的給定運(yùn)動(dòng)向量,其中,給定運(yùn)動(dòng)向量是沿第一方向從當(dāng)前塊指出。于步驟220中,識(shí)別與第一參考幀中第一參考?jí)K相關(guān)聯(lián)的參考運(yùn)動(dòng)向量。于步驟230中,基于參考運(yùn)動(dòng)向量以及給定運(yùn)動(dòng)向量,導(dǎo)出時(shí)間導(dǎo)出運(yùn)動(dòng)向量,其中,時(shí)間導(dǎo)出運(yùn)動(dòng)向量是從當(dāng)前塊沿不同于第一方向的第二方向指向第二參考幀的第二參考?jí)K。接著,于步驟240中,使用時(shí)間導(dǎo)出運(yùn)動(dòng)向量來(lái)作為一個(gè)預(yù)測(cè)子以編碼或解碼當(dāng)前塊的當(dāng)前運(yùn)動(dòng)向量。
圖2所示的示范性流程圖是用于示例的目的。本領(lǐng)域技術(shù)人員可在不背離本發(fā)明精神實(shí)質(zhì)的情況下,重新排列每個(gè)步驟、合并步驟、或分割步驟來(lái)實(shí)施本發(fā)明。
以上描述可使本領(lǐng)域的普通技術(shù)人員如特定應(yīng)用及其要求的上下文提供的來(lái)實(shí)踐本發(fā)明。對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō),對(duì)所描述的實(shí)施例的各種修改是顯而易見(jiàn)的,且本文定義的一般原理可被應(yīng)用于其它實(shí)施例。因此,本發(fā)明并非意在限定于以上所示及所描述的特定實(shí)施例,而是要符合與此公開(kāi)揭露的原理和新穎特征相一致的最寬范圍。在以上詳細(xì)描述中,各種具體細(xì)節(jié)被示出以便提供本發(fā)明的徹底理解。然而,本領(lǐng)域技術(shù)人員應(yīng)知曉本發(fā)明是可被實(shí)踐的。
如上所述,本發(fā)明的實(shí)施例可以由各種硬件,軟件代碼,或兩者的組合來(lái)實(shí)現(xiàn)。例如,本發(fā)明的實(shí)施例可以是被集成到視頻壓縮芯片的一個(gè)或多個(gè)電子電路,或被集成于視頻壓縮軟件的程序代碼以執(zhí)行本文所描述的處理過(guò)程。本發(fā)明的實(shí)施例還可以是執(zhí)行于數(shù)字信號(hào)處理器上的程序代碼,以執(zhí)行本文所描述的處理過(guò)程。本發(fā)明還可包含由計(jì)算機(jī)處理器,數(shù)字信號(hào)處理器,微處理器,或現(xiàn)場(chǎng)可編程門陣列執(zhí)行的多個(gè)功能。根據(jù)本發(fā)明,通過(guò)執(zhí)行定義本發(fā)明所體現(xiàn)的特定方法的機(jī)器可讀軟件代碼或固件代碼,這些處理器可被配置為執(zhí)行特定任務(wù)。軟件代碼或固件代碼可被開(kāi)發(fā)為不同的編程語(yǔ)言以及不同的格式或風(fēng)格。軟件代碼還可被編譯以用于不同的目標(biāo)平臺(tái)。然而,根據(jù)本發(fā)明的不同的軟件代碼的代碼格式、風(fēng)格及語(yǔ)言,以及用于配置代碼以執(zhí)行任務(wù)的其他方式,均不會(huì)背離本發(fā)明的精神以及范圍。
在不脫離其精神或本質(zhì)特征的情況下,本發(fā)明可以其它特定形式來(lái)體現(xiàn)。所描述的示例在所考慮的所有的方面都只是說(shuō)明性的而不是限制性的。因此,本發(fā)明的范圍是由其所附的權(quán)利要求來(lái)指示的,而不是由上文的描述來(lái)指示的。在權(quán)利要求的等效范圍及含義內(nèi)的所有改變均包含于本發(fā)明范圍之內(nèi)。