本發(fā)明主張?jiān)?014年2月21日提出的申請(qǐng)?zhí)枮?1/942,819的美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán);主張?jiān)?014年3月17日提出的申請(qǐng)?zhí)枮?1/954,181的美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán)。因此在全文中合并參考該些專利申請(qǐng)案。
技術(shù)領(lǐng)域
本發(fā)明是有關(guān)于利用幀內(nèi)區(qū)塊復(fù)制(Intra-block copy,IntraBC)模式的視頻編碼,特別是有關(guān)于用于屏幕內(nèi)容編碼或視頻編碼的幀內(nèi)區(qū)塊復(fù)制編碼模式的相關(guān)改善性能或簡(jiǎn)化過(guò)程的技術(shù)。
背景技術(shù):
高效視頻編碼(High Efficiency Video Coding,以下簡(jiǎn)稱為HEVC)是近年來(lái)開(kāi)發(fā)的新的編碼標(biāo)準(zhǔn)。在HEVC系統(tǒng)中,H.264/AVC中固定尺寸的宏塊由靈活的區(qū)塊來(lái)代替,并將其命名為編碼單元(coding unit,CU)。在編碼單元中像素共享相同的編碼參數(shù),以改善編碼效率。編碼單元可開(kāi)始于最大編碼單元(largest CU,LCU),其在HEVC中也被稱為編碼樹(shù)單元。除編碼單元的概念之外,預(yù)測(cè)單元的概念也被引入HEVC中。一旦編碼單元分層樹(shù)的分割完成,根據(jù)預(yù)測(cè)類型和預(yù)測(cè)單元分割,每一個(gè)葉編碼單元被進(jìn)一步分割為一個(gè)或多個(gè)預(yù)測(cè)單元。
在高效率視頻編碼(HEVC)標(biāo)準(zhǔn)的屏幕內(nèi)容編碼或擴(kuò)展版本(range extension,RExt)的當(dāng)前發(fā)展中,已采用一些工具,這些工具能夠改善用于屏幕內(nèi)容的編碼效率。對(duì)于幀內(nèi)區(qū)塊,根據(jù)現(xiàn)有技術(shù)的幀內(nèi)預(yù)測(cè)基于自相鄰區(qū)塊的已重建像素利用預(yù)測(cè)而執(zhí)行。幀內(nèi)預(yù)測(cè)可自幀內(nèi)模式的集合中選擇幀內(nèi)模式,幀內(nèi)模式的集合包括垂直模式、水平模式和各種角度預(yù)測(cè)模式。對(duì)于HEVC范圍擴(kuò)展和屏幕內(nèi)容編碼來(lái)說(shuō),已使用新的幀內(nèi)編碼模式,也稱為幀內(nèi)區(qū)塊復(fù)制。幀內(nèi)區(qū)塊復(fù)制技術(shù)最初由Budagavi在AHG8中提出(Video coding using Intra motion compensation,Joint Collaborative Team on Video Coding(JCT-VC)of ITU-T SG 16WP 3and ISO/IEC JTC 1/SC 29/WG 11,13th Meeting:Incheon,KR,18–26 Apr.2013,Document:JCTVC-M0350(在下文中記做JCTVC-M0350))。根據(jù)JCTVC-M0350的示例如圖1所示,其中當(dāng)前編碼單元(CU,110)利用幀內(nèi)運(yùn)動(dòng)補(bǔ)償(Intra motion compensation,Intra MC)而編碼。預(yù)測(cè)區(qū)塊(120)自當(dāng)前編碼單元和位移向量(112)而定位。在此示例中,搜索區(qū)塊被限制為當(dāng)前編碼樹(shù)單元、左側(cè)編碼樹(shù)單元、左側(cè)的第二個(gè)編碼樹(shù)單元。預(yù)測(cè)區(qū)塊自已重建區(qū)域而得到。然后,位移向量,也稱為運(yùn)動(dòng)向量(motion vector,MV),和用于當(dāng)前編碼單元的殘差被編碼。已知HEVC采用編碼樹(shù)單元和編碼單元區(qū)塊結(jié)構(gòu)作為用于編碼視頻數(shù)據(jù)的基本單元。每一個(gè)圖片被分割為多個(gè)編碼樹(shù)單元,以及每一個(gè)編碼樹(shù)單元被分割為多個(gè)編碼單元。在預(yù)測(cè)期間,每一個(gè)編碼單元可被分割為多個(gè)區(qū)塊,該多個(gè)區(qū)塊被稱為預(yù)測(cè)單元,以用于執(zhí)行預(yù)測(cè)處理。在預(yù)測(cè)殘差形成而用于每一個(gè)編碼單元之后,與每一個(gè)編碼單元相關(guān)的殘差被分割為多個(gè)區(qū)塊,稱為變換單元,以應(yīng)用變換(例如離散余弦變換(discrete cosine transform,DCT))。
在JCTVC-M0350中,至少在如下方面,幀內(nèi)運(yùn)動(dòng)補(bǔ)償不同于用于幀間預(yù)測(cè)的運(yùn)動(dòng)補(bǔ)償。
·運(yùn)動(dòng)向量被限制為1維(即水平或垂直)以用于幀內(nèi)運(yùn)動(dòng)補(bǔ)償,而幀間預(yù)測(cè)使用2維運(yùn)動(dòng)估計(jì)。
·二值化(Binarization)為固定長(zhǎng)度以用于幀內(nèi)運(yùn)動(dòng)補(bǔ)償,而幀間預(yù)測(cè)使用指數(shù)哥倫布(exponential-Golomb)。
·幀內(nèi)運(yùn)動(dòng)補(bǔ)償引入新的語(yǔ)法元素以發(fā)信號(hào)指示運(yùn)動(dòng)向量為水平還是垂直。
基于JCTVC-M0350,Pang等在Non-RCE3中做了一些修改(Intra Motion Compensation with 2-D MVs,Joint Collaborative Team on Video Coding(JCT-VC)of ITU-T SG 16WP 3and ISO/IEC JTC 1/SC 29/WG 11,14th Meeting:Vienna,AT,25July–2Aug.2013,Document:JCTVC-N0256(在下文中記做JCTVC-N0256))。首先,幀內(nèi)運(yùn)動(dòng)補(bǔ)償被擴(kuò)展以支持2維運(yùn)動(dòng)向量,以使得運(yùn)動(dòng)向量組分可以同時(shí)為0。對(duì)于幀內(nèi)運(yùn)動(dòng)補(bǔ)償來(lái)說(shuō),這將比原來(lái)的方式提供更大的靈活性,其中原來(lái)的方式中運(yùn)動(dòng)向量被限制為嚴(yán)格地水平或垂直。
在JCTVC-N0256中,揭示兩種運(yùn)動(dòng)向量編碼方法:
·方法1-運(yùn)動(dòng)向量預(yù)測(cè)。左側(cè)或上方的運(yùn)動(dòng)向量被選擇作為運(yùn)動(dòng)向量預(yù)測(cè)子,以及結(jié)果運(yùn)動(dòng)向量差值(motion vector difference,MVD)被編碼。一個(gè)標(biāo)志 用于指示運(yùn)動(dòng)向量差值是否為0。當(dāng)運(yùn)動(dòng)向量差值不為0,則指數(shù)哥倫布編碼的第三位指數(shù)被使用以編碼運(yùn)動(dòng)向量差值的剩余絕對(duì)水平。另一個(gè)標(biāo)志被使用以編碼這個(gè)跡象。
·方法2:無(wú)運(yùn)動(dòng)向量預(yù)測(cè)。使用用于HEVC中的運(yùn)動(dòng)向量差值的指數(shù)哥倫布碼,編碼運(yùn)動(dòng)向量。
在JCTVC-N0256中揭示的其他差異是,2維幀內(nèi)運(yùn)動(dòng)補(bǔ)償被進(jìn)一步與管線(pipeline)友好的方式結(jié)合:
1.不使用插值濾波器,
2.運(yùn)動(dòng)向量搜索區(qū)域被限制。分兩種情況進(jìn)行討論:
a搜索區(qū)域?yàn)楫?dāng)前編碼樹(shù)單元和左側(cè)編碼樹(shù)單元或者
b搜索區(qū)域?yàn)楫?dāng)前編碼樹(shù)單元和左側(cè)編碼樹(shù)單元的最右邊4列采樣。
在JCTVC-N0256中提出的各種方法之間,2維幀內(nèi)運(yùn)動(dòng)補(bǔ)償,移除插值濾波器、以及搜索區(qū)域被限制為當(dāng)前編碼樹(shù)單元和左側(cè)編碼樹(shù)單元,已在新版本標(biāo)準(zhǔn)草案中被采用。對(duì)應(yīng)于JCTVC-N0256的編碼單元級(jí)語(yǔ)法已包含于高效視頻編碼范圍擴(kuò)展文本規(guī)范:草案4(RExt Draft 4)中(Flynn,et al.,Joint Collaborative Team on Video Coding(JCT-VC)of ITU-T SG 16WP 3and ISO/IEC JTC 1/SC29/WG 11,14th Meeting:Vienna,AT,25July–2Aug.2013,Document:JCTVC-N1005)。
需要進(jìn)一步改善幀內(nèi)區(qū)塊復(fù)制模式的性能。此外,需要維持在現(xiàn)有的HEVC標(biāo)準(zhǔn)的相同框架中的任意新的開(kāi)發(fā)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明揭示了一種包括幀內(nèi)區(qū)塊復(fù)制模式的視頻編碼方法。在一個(gè)實(shí)施方式中,參考圖像列表包括對(duì)應(yīng)于當(dāng)前圖像的幀內(nèi)區(qū)塊復(fù)制參考圖像。在編碼或重建順序中先于當(dāng)前區(qū)塊的(例如,編碼單元或編碼區(qū)塊)的此圖像一部分被填充了已重建像素,而在編碼或重建順序中在當(dāng)前區(qū)塊之后的此圖像的其他部分在一個(gè)實(shí)施方式中為空,或通常填充其他值。若幀內(nèi)區(qū)塊復(fù)制模式被選擇以用于當(dāng)前編碼單元,則基于自參考圖像列選擇的幀內(nèi)區(qū)塊復(fù)制參考圖像得到的幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)子,當(dāng)前編碼單元被編碼或被解碼。參考圖像列表包括幀內(nèi)區(qū)塊復(fù)制參考圖像,也可包括對(duì)應(yīng)于一個(gè)或多個(gè)先前已重建的幀內(nèi)編碼的圖像的一個(gè)或多個(gè)幀內(nèi)參考圖像。有可能參考列表僅包括幀內(nèi)區(qū)塊復(fù)制參考圖像。 在編碼或解碼應(yīng)用于當(dāng)前編碼單元之后,第一已重建當(dāng)前區(qū)塊被產(chǎn)生并被用于更新幀內(nèi)區(qū)塊復(fù)制參考圖像。參考圖像列表可對(duì)應(yīng)于參考圖像列表l0或參考圖像列表l1。此外,當(dāng)當(dāng)前幀內(nèi)預(yù)測(cè)模式被選擇以用于當(dāng)前編碼單元時(shí),利用基于自參考圖像列表選擇的至少一個(gè)幀間參考圖像得到的幀內(nèi)預(yù)測(cè)子,當(dāng)前編碼單元被編碼或被解碼。在編碼或解碼被用于當(dāng)前編碼單元之后,第二已重建當(dāng)前區(qū)塊被產(chǎn)生并被使用以用于更新幀內(nèi)區(qū)塊復(fù)制參考圖像。
通過(guò)代替一個(gè)存在的幀內(nèi)參考圖像或作為新的參考圖像包括于參考圖像列表中,幀內(nèi)區(qū)塊復(fù)制參考圖像可包括于參考圖像列表中。幀內(nèi)區(qū)塊復(fù)制參考圖像可被放置于參考圖像列表中最后的參考圖像處或選擇的位置中。選擇的位置在序列級(jí)、圖像級(jí)、或條帶級(jí)被發(fā)送,或選擇的位置被推斷。當(dāng)幀內(nèi)區(qū)塊復(fù)制參考圖像被包括于該參考圖像列表中作為新的參考圖像時(shí),幀內(nèi)區(qū)塊復(fù)制參考圖像被初始化為空?qǐng)D像。當(dāng)幀內(nèi)區(qū)塊復(fù)制參考圖像通過(guò)代替一個(gè)存在的幀間參考圖像而包括于該參考圖像列表中時(shí),該幀內(nèi)區(qū)塊復(fù)制參考圖像被初始化為該個(gè)存在的幀間參考圖像。在第一已重建的當(dāng)前區(qū)塊被用于更新幀內(nèi)區(qū)塊復(fù)制參考圖像之前,該第一已重建的當(dāng)前區(qū)塊利用濾波器而被濾波,例如樣本自適應(yīng)偏移。
在另一實(shí)施方式中,揭示了一種用于當(dāng)前區(qū)塊的運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)子或一個(gè)或多個(gè)合并/跳過(guò)候選的獲取方法。若當(dāng)前預(yù)測(cè)單元為幀內(nèi)區(qū)塊復(fù)制模式,則基于與該當(dāng)前區(qū)塊的一個(gè)或多個(gè)第一相鄰區(qū)塊相關(guān)的一個(gè)或多個(gè)第一運(yùn)動(dòng)向量,確定第一運(yùn)動(dòng)向量預(yù)測(cè)子,或基于與該當(dāng)前區(qū)塊的一個(gè)或多個(gè)第二相鄰區(qū)塊相關(guān)的一個(gè)或多個(gè)第二運(yùn)動(dòng)向量,確定一個(gè)或多個(gè)第一合并/跳過(guò)候選?;谠摰谝贿\(yùn)動(dòng)向量預(yù)測(cè)子或該一個(gè)或多個(gè)第一合并/跳過(guò)候選,編碼或解碼與該幀內(nèi)區(qū)塊復(fù)制模式相關(guān)的當(dāng)前運(yùn)動(dòng)向量。
在一個(gè)示例中,僅當(dāng)一個(gè)相鄰區(qū)塊被編碼于幀內(nèi)區(qū)塊復(fù)制模式時(shí),與該個(gè)相鄰區(qū)塊相關(guān)的運(yùn)動(dòng)向量被視為有效的第一運(yùn)動(dòng)向量預(yù)測(cè)子候選或有效的第一合并/跳過(guò)候選。在另一示例中,僅當(dāng)一個(gè)相鄰區(qū)塊被編碼于該幀間模式時(shí),與該個(gè)相鄰區(qū)塊相關(guān)的該運(yùn)動(dòng)向量被視為有效的第二運(yùn)動(dòng)向量預(yù)測(cè)子候選或有效的第二合并/跳過(guò)候選??蛇x地,當(dāng)一個(gè)相鄰區(qū)塊被編碼于幀間模式時(shí),與該個(gè)相鄰區(qū)塊相關(guān)的運(yùn)動(dòng)向量被視為有效的第二運(yùn)動(dòng)向量預(yù)測(cè)子候選或有效的第二合并/跳過(guò)候選。相似地,當(dāng)一個(gè)相鄰區(qū)塊被編碼于幀內(nèi)區(qū)塊復(fù)制模式時(shí),與該個(gè)相鄰區(qū)塊相關(guān)的運(yùn)動(dòng)向量為有效的第一運(yùn)動(dòng)向量預(yù)測(cè)子候選或有效的第一合 并/跳過(guò)候選。
當(dāng)前區(qū)塊的相鄰區(qū)塊包括五個(gè)空間相鄰區(qū)塊、該五個(gè)空間相鄰區(qū)塊包括右上區(qū)塊、右對(duì)齊頂部區(qū)塊、左上區(qū)塊、左下區(qū)塊以及下對(duì)齊左側(cè)區(qū)塊。一個(gè)或多個(gè)第一合并/跳過(guò)候選對(duì)應(yīng)于當(dāng)前幀內(nèi)區(qū)塊復(fù)制運(yùn)動(dòng)向量預(yù)測(cè)子,一個(gè)最后編碼的幀內(nèi)區(qū)塊復(fù)制運(yùn)動(dòng)向量,或當(dāng)前區(qū)塊的左側(cè)相鄰區(qū)塊或上方相鄰區(qū)塊的該運(yùn)動(dòng)向量。第一運(yùn)動(dòng)向量預(yù)測(cè)子或一個(gè)或多個(gè)第一合并/跳過(guò)候選被限制為整數(shù)。
附圖說(shuō)明
圖1描述了根據(jù)幀內(nèi)區(qū)塊復(fù)制模式的幀內(nèi)運(yùn)動(dòng)補(bǔ)償?shù)氖纠?,其中使用水平位移向量?/p>
圖2描述了得到用于幀內(nèi)區(qū)塊復(fù)制模式的運(yùn)動(dòng)向量預(yù)測(cè)子的相鄰區(qū)塊配置的示例。
圖3描述了包括本發(fā)明實(shí)施方式的示范性編碼系統(tǒng)的流程圖,其中參考圖片列表包括幀內(nèi)區(qū)塊復(fù)制參考圖像。
圖4描述了包括本發(fā)明實(shí)施方式的示范性編碼系統(tǒng)的流程圖,其中運(yùn)動(dòng)向量預(yù)測(cè)子或一個(gè)或多個(gè)合并/跳過(guò)候選用于在幀內(nèi)區(qū)塊復(fù)制模式中編碼的當(dāng)前區(qū)塊的運(yùn)動(dòng)向量。
具體實(shí)施方式
在上述提到的當(dāng)前幀內(nèi)圖像區(qū)塊復(fù)制技術(shù)中,對(duì)于幀內(nèi)和幀間預(yù)測(cè)來(lái)說(shuō),幀內(nèi)區(qū)塊復(fù)制是不同的、附加的模式。對(duì)于已被用于HEVC編碼系統(tǒng)的幀內(nèi)和幀間預(yù)測(cè)子來(lái)說(shuō),幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)子為附加的預(yù)測(cè)子。此外,區(qū)塊匹配搜索需要確定幀內(nèi)區(qū)塊復(fù)制的“區(qū)塊向量”,其對(duì)應(yīng)于需要得到用于幀間預(yù)測(cè)的運(yùn)動(dòng)向量的運(yùn)動(dòng)搜索的附加的計(jì)算。在本發(fā)明中,揭示了一種幀內(nèi)圖像區(qū)塊復(fù)制(即,幀內(nèi)區(qū)塊復(fù)制)技術(shù)的方法,將其與幀間區(qū)塊預(yù)測(cè)相匹配(align),以使得不需要對(duì)現(xiàn)有的HEVC的編解碼器的主要配置文件的做出區(qū)塊級(jí)改變,而有可能實(shí)現(xiàn)幀內(nèi)區(qū)塊復(fù)制。
幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元的表示和發(fā)送。在本發(fā)明中,“幀內(nèi)區(qū)塊復(fù)制參考圖像”(在下文中被稱為ibc_ref_pic)被以與幀間參考圖像相同的方式來(lái)對(duì)待。在當(dāng)前HEVC中,存在幀間預(yù)測(cè)的兩個(gè)參考列表,即,對(duì)應(yīng)于列表0和列表1的參考列表l0和參考列表l1。舉例來(lái)說(shuō),ibc_ref_pic可被插入兩個(gè)參考列表(參 考列表l0或參考列表l1)中的一個(gè),作為幀間參考圖像的附加的參考圖像。若僅存在一個(gè)參考列表,則ibc_ref_pic被插入至此參考列表中。在另一實(shí)施方式中,ibc_ref_pic被插入至參考列表l0和參考列表l1中,作為幀間參考圖像的附加的參考圖像。ibc_ref_pic可被放置于參考列表中最后的位置中,即,在最后幀間參考圖像之后。然而,ibc_ref_pic也可被插入至參考列表并被放置于特定的位置。此位置可在條帶、圖像、或序列級(jí)中被明確地發(fā)送;或此位置可被推斷。
在另一實(shí)施方式中,ibc_ref_pic被放入?yún)⒖剂斜?若存在兩個(gè)參考列表的話,則l0或l1中),以代替存在的幀間參考圖像中的一個(gè)。舉例來(lái)說(shuō),ibc_ref_pic可被放入?yún)⒖剂斜碇校源孀詈髱g參考圖像。在另一示例中,ibc_ref_pic被插入至參考列表中,以在特定位置中代替一個(gè)幀間參考圖像。此位置可在條帶、圖像、或序列級(jí)中被明確地發(fā)送;或此位置可被推斷。
根據(jù)另一實(shí)施方式,幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元處理可與HEVC幀間預(yù)測(cè)單元處理相匹配(align),包括運(yùn)動(dòng)向量的表示和編碼、發(fā)送等。換句話說(shuō),除來(lái)自“幀內(nèi)區(qū)塊復(fù)制參考圖像”的預(yù)測(cè)子代替“幀間參考圖像”的預(yù)測(cè)子之外,幀內(nèi)區(qū)塊復(fù)制的已編碼區(qū)塊(即,預(yù)測(cè)單元)以與幀間已預(yù)測(cè)的區(qū)塊(即,預(yù)測(cè)單元)同樣的方式而被處理。此外,幀內(nèi)區(qū)塊復(fù)制處理可被使能或禁能于預(yù)測(cè)單元級(jí)。換句話說(shuō),各種類型的預(yù)測(cè)單元,例如,幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元、幀間預(yù)測(cè)單元、以及幀內(nèi)預(yù)測(cè)單元可在同一編碼單元中存在。
幀內(nèi)區(qū)塊復(fù)制參考圖像的結(jié)構(gòu)。若ibc_ref_pic被添加或被插入至參考列表,作為幀間參考圖像的一種附加,以及對(duì)應(yīng)的參考圖像可被初始化為空(NULL)圖像。通過(guò)編解碼(編碼或解碼)處理,空參考圖像被逐漸地由當(dāng)前已編碼的圖像的已重建像素填滿,當(dāng)前已編碼的圖像為幀內(nèi)區(qū)塊復(fù)制參考圖像。像素值逐區(qū)塊地被更新,以及區(qū)塊尺寸依賴于實(shí)現(xiàn)的平臺(tái),例如,4x4,8x8,編碼單元或最大編碼單元。在編碼器側(cè),此參考圖像的運(yùn)動(dòng)向量(或區(qū)塊向量)的搜索范圍可被限制于利用有效已重建像素值更新的區(qū)域。
若ibc_ref_pic被插入至參考列表作為一個(gè)幀間參考圖像的替代,首先,ibc_ref_pic等于現(xiàn)有的幀間參考圖像。通過(guò)編解碼(編碼或解碼)處理,此幀間參考圖像的像素值逐漸地由當(dāng)前的已編碼圖像的已重建像素來(lái)代替。像素值逐區(qū)塊地被更新,以及區(qū)塊尺寸依賴于實(shí)現(xiàn)的平臺(tái),例如,4x4,8x8,編碼單元或最大編碼單元。在編碼器側(cè),此參考圖像的搜索范圍可被限制于利用新的已重建像素值更新的區(qū)域。然而,在編碼器側(cè),此參考圖像的搜索區(qū)塊可與其他 普通的幀間參考圖片相同。
利用AMVP的幀內(nèi)區(qū)塊復(fù)制的向量預(yù)測(cè)。在另一實(shí)施方式中,在HEVC中使用的先進(jìn)的運(yùn)動(dòng)向量預(yù)測(cè)(advanced motion vector prediction,AMVP)方法被用于預(yù)測(cè)幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元的區(qū)塊向量。用于幀內(nèi)區(qū)塊復(fù)制的區(qū)塊的區(qū)塊向量與幀間已編碼區(qū)塊的運(yùn)動(dòng)向量的處理相似。相應(yīng)地,在本申請(qǐng)中,術(shù)語(yǔ)“運(yùn)動(dòng)向量”也可被稱為“區(qū)塊向量”。與在HEVC中用于運(yùn)動(dòng)向量預(yù)測(cè)的五個(gè)空間先進(jìn)的運(yùn)動(dòng)向量預(yù)測(cè)相同的五個(gè)相鄰候選的位置,可被用于區(qū)塊向量(如圖2所示)。然而,其他相鄰區(qū)塊配置也可被用于區(qū)塊向量預(yù)測(cè)。在一個(gè)實(shí)施方式中,對(duì)于在幀內(nèi)區(qū)塊復(fù)制模式中已編碼的當(dāng)前區(qū)塊,只有在相鄰區(qū)塊被編碼于幀內(nèi)區(qū)塊復(fù)制模式時(shí),相鄰區(qū)塊的運(yùn)動(dòng)向量(區(qū)塊向量)可被視為有效的候選運(yùn)動(dòng)向量(區(qū)塊向量)預(yù)測(cè)子。相似地,對(duì)于在幀間模式中編碼的當(dāng)前區(qū)塊,只有當(dāng)相鄰區(qū)塊被編碼于幀間模式時(shí),相鄰區(qū)塊的運(yùn)動(dòng)向量可被視為有效的候選運(yùn)動(dòng)向量預(yù)測(cè)子。
在以上示例中,只有當(dāng)如當(dāng)前區(qū)塊一樣相鄰區(qū)塊被編碼于相同的預(yù)測(cè)模式(即,幀間或幀內(nèi)區(qū)塊復(fù)制模式)時(shí),與相鄰區(qū)塊相關(guān)的運(yùn)動(dòng)向量可被視為有效。然而,幀間已編碼的相鄰預(yù)測(cè)單元的運(yùn)動(dòng)向量也可被視為有效的運(yùn)動(dòng)向量預(yù)測(cè)子以用于當(dāng)前幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元。相似地,幀內(nèi)區(qū)塊復(fù)制已編碼的相鄰預(yù)測(cè)單元的運(yùn)動(dòng)向量也可被視為有效的運(yùn)動(dòng)向量預(yù)測(cè)子以用于當(dāng)前幀間預(yù)測(cè)單元。自幀內(nèi)區(qū)塊復(fù)制已編碼的預(yù)測(cè)單元至當(dāng)前幀間預(yù)測(cè)單元的運(yùn)動(dòng)向量的預(yù)測(cè)、或自幀間已編碼的預(yù)測(cè)單元至當(dāng)前幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元的預(yù)測(cè)可為直接地預(yù)測(cè)、或在適當(dāng)修改之后預(yù)測(cè),例如移位。在一個(gè)實(shí)施方式中,當(dāng)幀內(nèi)區(qū)塊復(fù)制已編碼的預(yù)測(cè)單元的運(yùn)動(dòng)向量被用作幀間預(yù)測(cè)單元的預(yù)測(cè)子時(shí),幀內(nèi)區(qū)塊復(fù)制已編碼的預(yù)測(cè)單元的運(yùn)動(dòng)向量需要被左移兩位;當(dāng)幀間已編碼的預(yù)測(cè)單元的運(yùn)動(dòng)向量被用作幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元的預(yù)測(cè)子時(shí),幀間已編碼的預(yù)測(cè)單元的運(yùn)動(dòng)向量需要被右移兩位。
幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元的合并/跳過(guò)模式。在此實(shí)施方式中,在HEVC中使用的合并/跳過(guò)模式被應(yīng)用以編碼在幀內(nèi)區(qū)塊復(fù)制模式中編碼的預(yù)測(cè)單元。當(dāng)在合并模式或跳過(guò)模式中被編碼時(shí),當(dāng)前運(yùn)動(dòng)向量與合并或跳過(guò)候選中的一個(gè)相同。選擇的合并/跳過(guò)候選通過(guò)明確地發(fā)送或推斷而被識(shí)別。當(dāng)區(qū)塊編碼于合并模式時(shí),預(yù)測(cè)殘差被傳送。當(dāng)區(qū)塊編碼于跳過(guò)模式時(shí),預(yù)測(cè)殘差不被傳送。合并/跳過(guò)相鄰候選可與在HEVC合并/跳過(guò)模式中使用的相鄰候選相同。合并/跳 過(guò)相鄰候選也可與在HEVC合并/跳過(guò)模式中使用的相鄰候選不相同。舉例來(lái)說(shuō),合并/跳過(guò)相鄰候選可對(duì)應(yīng)于當(dāng)前幀內(nèi)區(qū)塊復(fù)制運(yùn)動(dòng)向量預(yù)測(cè)子、一個(gè)或多個(gè)最后編碼的幀內(nèi)區(qū)塊復(fù)制運(yùn)動(dòng)向量、或自頂部或左側(cè)預(yù)測(cè)單元的運(yùn)動(dòng)向量。
對(duì)于利用幀內(nèi)區(qū)塊復(fù)制模式編碼的區(qū)塊的合并/跳過(guò)模式中的運(yùn)動(dòng)向量候選的資格來(lái)說(shuō),用于幀內(nèi)區(qū)塊復(fù)制的區(qū)塊向量使用相似的考慮。在一個(gè)實(shí)施方式中,對(duì)于在幀內(nèi)區(qū)塊復(fù)制模式中編碼的當(dāng)前區(qū)塊(即,預(yù)測(cè)單元)來(lái)說(shuō),僅當(dāng)在幀內(nèi)區(qū)塊復(fù)制模式中編碼相鄰區(qū)塊時(shí),相鄰區(qū)塊的運(yùn)動(dòng)向量(區(qū)塊向量)可被視為合并/跳過(guò)模式的有效候選。相似地,對(duì)于在幀間模式中編碼的當(dāng)前區(qū)塊來(lái)說(shuō),僅當(dāng)在幀間模式中編碼相鄰區(qū)塊時(shí),相鄰區(qū)塊的運(yùn)動(dòng)向量可被視為合并/跳過(guò)模式的有效候選。
在合并/跳過(guò)候選推導(dǎo)的上述示例中,僅當(dāng)如當(dāng)前區(qū)塊一樣相鄰區(qū)塊在相同的預(yù)測(cè)模式(即,幀間或幀內(nèi)區(qū)塊復(fù)制模式)中被編碼時(shí),與相鄰區(qū)塊相關(guān)的運(yùn)動(dòng)向量被視為有效。然而,幀間已編碼的相鄰預(yù)測(cè)單元的運(yùn)動(dòng)向量也可被視為有效的運(yùn)動(dòng)向量預(yù)測(cè)子以用于當(dāng)前幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)單元。相似地,幀間區(qū)塊復(fù)制已編碼的相鄰區(qū)塊預(yù)測(cè)單元的運(yùn)動(dòng)向量也可被視為有效的運(yùn)動(dòng)向量預(yù)測(cè)子以用于當(dāng)前幀間預(yù)測(cè)單元。
幀內(nèi)區(qū)塊復(fù)制的區(qū)塊的運(yùn)動(dòng)(區(qū)塊)向量的表示。在HEVC標(biāo)準(zhǔn)中采用的幀內(nèi)區(qū)塊復(fù)制技術(shù)僅允許整數(shù)的區(qū)塊向量。在本發(fā)明中,ibc_ref_pic以與幀間參考圖像相同的方式來(lái)對(duì)待。相應(yīng)地,區(qū)塊向量的表示和編碼機(jī)制可與在幀間預(yù)測(cè)中的運(yùn)動(dòng)向量的表示和編碼機(jī)制相同。如此一來(lái),子像素區(qū)塊向量以與子像素運(yùn)動(dòng)向量相同的方式而被允許、處理、和發(fā)送。插值濾波器和其他濾波器(例如,樣本自適應(yīng)偏移)可被應(yīng)用于在ibc_ref_pic中的幀間區(qū)域和幀內(nèi)區(qū)域中。
在又一實(shí)施方式中,ibc_ref_pic的幀內(nèi)區(qū)域可被限制為僅允許整數(shù)的區(qū)塊向量。同時(shí),應(yīng)用于幀間預(yù)測(cè)的插值濾波和其他濾波不應(yīng)用于ibc_ref_pic的幀內(nèi)區(qū)域。
在一個(gè)實(shí)施方式中,ibc_ref_picture的幀內(nèi)和幀間區(qū)域的分離不被發(fā)送。反而,ibc_ref_picture的幀內(nèi)和幀間區(qū)域的分離通過(guò)當(dāng)前被預(yù)測(cè)或被編碼的區(qū)塊的位置來(lái)推斷。在此實(shí)施方式中,以編碼順序在當(dāng)前區(qū)塊之前的所有區(qū)塊或區(qū)域被視為幀內(nèi)區(qū)域,以編碼順序在當(dāng)前區(qū)塊之后的所有區(qū)塊或區(qū)域被視為幀間區(qū)域。
在各種系統(tǒng)配置下(即,所有幀內(nèi)(All Intra)、隨機(jī)存取(Random Access)、 以及低延遲B圖像(Low Delay B Picture)),根據(jù)本發(fā)明實(shí)施方式的包括幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)模式的視頻編碼系統(tǒng)的性能與現(xiàn)有的系統(tǒng)的性能進(jìn)行比較,如表1和表2所示。現(xiàn)有的系統(tǒng)對(duì)應(yīng)于基于HEVC屏幕內(nèi)容編碼測(cè)試模型2(SCM 2)的系統(tǒng)。表1中包括本發(fā)明實(shí)施方式的系統(tǒng)對(duì)應(yīng)于利用參考圖像列表的、對(duì)幀內(nèi)區(qū)塊復(fù)制已編碼區(qū)塊應(yīng)用先進(jìn)的運(yùn)動(dòng)向量預(yù)測(cè)、運(yùn)動(dòng)向量差值、合并/跳過(guò)模式的系統(tǒng),參考圖像列表包括幀內(nèi)區(qū)塊復(fù)制參考圖像。表2中包括本發(fā)明實(shí)施方式的系統(tǒng)對(duì)應(yīng)于利用參考圖像列表的、對(duì)幀內(nèi)區(qū)塊復(fù)制已編碼區(qū)塊應(yīng)用區(qū)塊向量預(yù)測(cè)子(block vector predictor,BVP)、區(qū)塊向量差值(block vector difference,BVD)、合并/跳過(guò)模式的系統(tǒng),參考圖像列表包括幀內(nèi)區(qū)塊復(fù)制參考圖像。其中,區(qū)塊向量預(yù)測(cè)子和區(qū)塊向量差值不同于先進(jìn)的運(yùn)動(dòng)向量預(yù)測(cè)和運(yùn)動(dòng)向量差值。區(qū)塊向量預(yù)測(cè)子和區(qū)塊向量差值被指定用于幀內(nèi)區(qū)塊復(fù)制已編碼預(yù)測(cè)單元。性能比較是基于如第一列所示的測(cè)試數(shù)據(jù)做出的。BD率中的負(fù)值意味著本發(fā)明具有更佳的性能。如表1所示,本發(fā)明可高達(dá)6.8%。如表2所示,本發(fā)明可高達(dá)5.2%。
表1
表2
圖3描述了包括本發(fā)明實(shí)施方式的示范性編碼系統(tǒng)的流程圖,其中,參考圖像列表包括幀內(nèi)區(qū)塊復(fù)制參考圖像。如步驟310所示,在當(dāng)前圖像中,系統(tǒng)接收與當(dāng)前預(yù)測(cè)單元相關(guān)的輸入數(shù)據(jù)。對(duì)于編碼端來(lái)說(shuō),輸入數(shù)據(jù)對(duì)應(yīng)于將被編碼的像素?cái)?shù)據(jù)。對(duì)于解碼端來(lái)說(shuō),輸入數(shù)據(jù)對(duì)應(yīng)于將被解碼的已編碼像素?cái)?shù)據(jù)。自存儲(chǔ)器(例如,計(jì)算機(jī)存儲(chǔ)器、緩沖器(RAM或DRAM)、或其他媒體)或自處理器提取輸入數(shù)據(jù)。如步驟320所示,檢查幀內(nèi)區(qū)塊復(fù)制模式是否被選擇用于當(dāng)前預(yù)測(cè)單元。若結(jié)果為“是”,則執(zhí)行步驟330、340、和350。若結(jié)果為“否”,則跳過(guò)步驟330、340、和350。在步驟330中,利用基于自參考圖像列表選擇的幀內(nèi)區(qū)塊復(fù)制參考圖像得到的幀內(nèi)區(qū)塊復(fù)制預(yù)測(cè)子,當(dāng)前預(yù)測(cè)單元被編碼或解碼。參考圖像列表包括幀內(nèi)區(qū)塊復(fù)制參考圖像和零個(gè)、一個(gè)或多個(gè)幀間參考圖像,幀內(nèi)區(qū)塊復(fù)制參考圖像包括一個(gè)或多個(gè)先前已重建的幀內(nèi)區(qū)塊復(fù)制的區(qū)塊以及零個(gè)、一個(gè)或多個(gè)幀間參考圖像對(duì)應(yīng)于零個(gè)、一個(gè)或多個(gè)先前已重建的幀間已編碼圖像。在步驟340中,在編碼或解碼當(dāng)前預(yù)測(cè)單元之后,第一已重建的當(dāng)前區(qū)塊被產(chǎn)生。在步驟350中,根據(jù)第一已重建的當(dāng)前區(qū)塊,幀內(nèi)區(qū)塊復(fù)制參考圖像被更新。
圖4描述了包括本發(fā)明實(shí)施方式的示范性編碼系統(tǒng)的流程圖,其中用于當(dāng)前區(qū)塊的運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)子或一個(gè)或多個(gè)合并/跳過(guò)候選被編碼于幀內(nèi)區(qū)塊復(fù)制模式中。在步驟410中,用于當(dāng)前區(qū)塊的當(dāng)前預(yù)測(cè)模式被確定。在步驟420中,與當(dāng)前區(qū)塊的相鄰區(qū)塊相關(guān)的運(yùn)動(dòng)向量被接收。在步驟430中,檢查幀內(nèi)區(qū)塊復(fù)制模式是否被選擇以用于當(dāng)前編碼單元。若結(jié)果為“是”,則執(zhí)行步驟440、和450。若結(jié)果為“否”,則跳過(guò)步驟440、和450。在步驟440中,基于與當(dāng)前區(qū)塊的一個(gè)或多個(gè)第一相鄰區(qū)塊相關(guān)的一個(gè)或多個(gè)第一運(yùn)動(dòng)向量,確定第一運(yùn)動(dòng)向量預(yù)測(cè)子,或基于與當(dāng)前區(qū)塊的一個(gè)或多個(gè)第二相鄰區(qū)塊相關(guān)的一個(gè)或多個(gè)第二運(yùn)動(dòng)向量,確定一個(gè)或多個(gè)第一合并/跳過(guò)候選。在步驟450中,基于第一運(yùn)動(dòng)向量預(yù)測(cè)子或一個(gè)或多個(gè)第一合并/跳過(guò)候選,與幀內(nèi)區(qū)塊復(fù)制模式相關(guān)的當(dāng)前運(yùn)動(dòng)向量被編碼或被解碼。
上述的流程圖用于描述根據(jù)本發(fā)明實(shí)施方式的幀內(nèi)區(qū)塊復(fù)制編碼的示例。本領(lǐng)域技術(shù)人員可在不脫離本發(fā)明精神的前提下,修改、重排列、拆分、或組合各個(gè)步驟,以實(shí)現(xiàn)本發(fā)明。在本申請(qǐng)中,具體的語(yǔ)法和語(yǔ)義已被用來(lái)說(shuō)明實(shí)施方式。本領(lǐng)域技術(shù)人員可以用等效的語(yǔ)法和語(yǔ)義在不脫離本發(fā)明的精神的前 提下而代替本申請(qǐng)中提到的語(yǔ)法和語(yǔ)義來(lái)實(shí)現(xiàn)本發(fā)明。
在提供特定應(yīng)用和其需求的情況下,以上描述使得本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)本發(fā)明。對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō),各種修飾是清楚的,以及在此定義的基本原理可以應(yīng)用與其他實(shí)施方式。因此,本發(fā)明并不限于描述的特定實(shí)施方式,而應(yīng)與在此公開(kāi)的原則和新穎性特征相一致的最廣范圍相符合。在上述詳細(xì)描述中,為全面理解本發(fā)明,描述了各種特定細(xì)節(jié)。然而,本領(lǐng)域技術(shù)人員能夠理解本發(fā)明可以實(shí)現(xiàn)。
以上描述的本發(fā)明的實(shí)施方式可在各種硬件、軟件編碼或兩者組合中進(jìn)行實(shí)施。例如,本發(fā)明的實(shí)施方式可為集成入視頻壓縮芯片的電路或集成入視頻壓縮軟件以執(zhí)行上述過(guò)程的程序代碼。本發(fā)明的實(shí)施方式也可為在數(shù)據(jù)信號(hào)處理器(Digital Signal Processor,DSP)中執(zhí)行上述程序的程序代碼。本發(fā)明也可涉及計(jì)算機(jī)處理器、數(shù)字信號(hào)處理器、微處理器或現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array,FPGA)執(zhí)行的多種功能??筛鶕?jù)本發(fā)明配置上述處理器執(zhí)行特定任務(wù),其通過(guò)執(zhí)行定義了本發(fā)明揭示的特定方法的機(jī)器可讀軟件代碼或固件代碼來(lái)完成??蓪④浖a或固件代碼發(fā)展為不同的程序語(yǔ)言與不同的格式或形式。也可為了不同的目標(biāo)平臺(tái)編譯軟件代碼。然而,根據(jù)本發(fā)明執(zhí)行任務(wù)的軟件代碼與其他類型配置代碼的不同代碼樣式、類型與語(yǔ)言不脫離本發(fā)明的精神與范圍。
在不脫離本發(fā)明精神或本質(zhì)特征的情況下,可以其他特定形式實(shí)施本發(fā)明。描述示例被認(rèn)為僅在所有方面進(jìn)行說(shuō)明并且不是限制性的。因此,本發(fā)明的范圍由權(quán)利要求書(shū)指示,而非前面描述。所有在權(quán)利要求等同的方法與范圍中的變化都屬于本發(fā)明的涵蓋范圍。