欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有非對稱分區(qū)的幀內(nèi)塊復(fù)制預(yù)測以及編碼器側(cè)搜索圖案、搜索范圍和用于分區(qū)的方法

文檔序號:10557423閱讀:602來源:國知局
具有非對稱分區(qū)的幀內(nèi)塊復(fù)制預(yù)測以及編碼器側(cè)搜索圖案、搜索范圍和用于分區(qū)的方法
【專利摘要】在幀內(nèi)塊復(fù)制(“BC”)預(yù)測中的創(chuàng)新以及在編碼器側(cè)搜索圖案、和用于分區(qū)的方法中的創(chuàng)新。例如,一些創(chuàng)新涉及針對幀內(nèi)BC預(yù)測使用非對稱分區(qū)。其它創(chuàng)新涉及在塊向量估計(用于幀內(nèi)BC預(yù)測)或運動估計期間編碼器使用的搜索圖案或方法。又一些其它創(chuàng)新涉及使用在BV估計期間使用具有水平或垂直偏置的BV搜索范圍。
【專利說明】具有非對稱分區(qū)的幀內(nèi)塊復(fù)制預(yù)測以及編碼器側(cè)搜索圖案、搜索范圍和用于分區(qū)的方法
[0001 ] 背景
[0002]工程師使用壓縮(也叫做源編碼(source coding或source encoding))來降低數(shù)字視頻的比特率。壓縮通過將視頻信息轉(zhuǎn)換成較低比特率的形式來降低存儲和傳送該信息的成本。解壓(也被稱為解碼)從壓縮的形式中重構(gòu)一種版本的原始信息?!熬幗獯a器”是編碼器/解碼器系統(tǒng)。
[0003]在過去的二十年中,已采用了各種視頻編解碼器標準,包括ITU-T H.26UH.262(MPEG-2或IS0/IEC 13818-2)、Η.263和H.264(MPEG_4AVC或IS0/IEC 14496-10)標準、MPEG-KIS0/IEC 11172 I 172-2)和MPEG-4視覺(IS0/IEC 14496-2)標準以及SMPTE 421M(VC_1)標準。最近,H.265/HEVC標準(ITU-T H.265或IS0/IEC 23008-2)已被批準。目前,(例如,用于可縮放視頻編碼/解碼、用于在樣本比特深度或色度采樣率方面具有較高保真度的視頻的編碼/解碼、用于屏幕捕捉內(nèi)容、或用于多視圖編碼/解碼的)H.265/HEVC標準的擴展處于開發(fā)中。視頻編解碼器標準通常定義針對經(jīng)編碼的視頻比特流的句法的選項,從而詳述當在編碼和解碼時使用特定特征時該比特流中的參數(shù)。在許多情況下,視頻編解碼器標準還提供關(guān)于解碼器應(yīng)當執(zhí)行以在解碼時取得一致的結(jié)果的解碼操作的細節(jié)。除了編解碼器標準外,各種專用編解碼器格式定義針對經(jīng)編碼的視頻比特流的句法的其他選項以及相應(yīng)的解碼操作。
[0004]幀內(nèi)塊復(fù)制(“BC”)是H.265/HEVC擴展的處于開發(fā)中的預(yù)測模式。對于幀內(nèi)BC預(yù)測模式,圖片的當前塊的樣本值是使用同一圖片中的先前重構(gòu)的樣本值來預(yù)測的。塊向量(“BV”)指示從當前塊到圖片的包括用于預(yù)測的先前重構(gòu)的樣本值的區(qū)域的位移。BV被信號化在比特流中。幀內(nèi)BC預(yù)測是一種形式的圖片內(nèi)預(yù)測一一針對圖片的塊的幀內(nèi)BC預(yù)測不使用除了同一圖片中的樣本值以外的任何樣本值。
[0005]如當前在HEVC標準中規(guī)定并在針對HEVC標準的某一參考軟件中實現(xiàn)的,幀內(nèi)BC預(yù)測模式具有若干問題。特別是,用于幀內(nèi)BC預(yù)測的塊大小的選項在許多場景下過于受限,而且在許多場景下不能使關(guān)于塊大小以及如何使用幀內(nèi)BC預(yù)測的編碼器側(cè)決策高效。
[0006]概述
[0007]概言之,本詳細描述呈現(xiàn)了在幀內(nèi)塊復(fù)制(“BC)預(yù)測中的創(chuàng)新以及在編碼器側(cè)搜索圖案、搜索范圍和用于分區(qū)的方法中的創(chuàng)新?!崩?,一些創(chuàng)新涉及針對幀內(nèi)BC預(yù)測使用非對稱分區(qū)(有時被稱為“AMP)。”其它創(chuàng)新涉及在塊向量(“BV”)估計(用于幀內(nèi)BC預(yù)測)或運動估計期間編碼器使用的搜索圖案或方法。又一些其它創(chuàng)新涉及使用在BV估計期間使用具有水平或垂直偏置的BV搜索范圍。
[0008]根據(jù)本文中描述的創(chuàng)新中的第一方面,圖像編碼器或視頻編碼器對圖像或視頻進行編碼以產(chǎn)生經(jīng)編碼的數(shù)據(jù)并將經(jīng)編碼數(shù)據(jù)作為比特率的一部分輸出。作為編碼的一部分,編碼器執(zhí)行為了幀內(nèi)BC預(yù)測而被非對稱分區(qū)的當前塊的幀內(nèi)BC預(yù)測。例如,所述當前塊是2N X 2N±夬,且所述當前塊被分區(qū)為(I)一2N x N/2塊和一2N x 3N/2塊或(2)—2N x 3N/2塊和一2N X N/2塊?;蛘?,作為另一示例,所述當前塊是2N x 2N塊,且其中所述當前塊被分區(qū)為(I)一N/2 X 2N塊和一3N/2 x 2N±夬或(2)—3N/2 x 2N塊和一N/2 x 2N塊。更一般而言,對于非對稱分區(qū),當前塊可被劃分為具有不同維度的兩個分區(qū)。作為編碼的一部分,編碼器還可執(zhí)行為了幀內(nèi)BC預(yù)測而被對稱分區(qū)的另一塊的幀內(nèi)BC預(yù)測。例如,另一塊是被分區(qū)為(I)兩個2N X N塊,(2)兩個N X 2N塊,或(3)四個N x N塊的2N x 2N塊,每個塊可被進一步分區(qū)為兩個N X N/2塊、兩個N/2 X N塊、或四個N/2 x N/2塊。更一般而言,對于對稱分區(qū),該另一塊可被劃分為具有等同維度的分區(qū)。
[0009]根據(jù)本文中描述的創(chuàng)新中的第二方面,圖像解碼器或視頻解碼器接收作為比特率的一部分的經(jīng)編碼數(shù)據(jù)并將經(jīng)編碼數(shù)據(jù)進行解碼以重構(gòu)圖像或視頻。作為解碼的一部分,解碼器執(zhí)行為了幀內(nèi)BC預(yù)測而被非對稱分區(qū)的當前塊的幀內(nèi)BC預(yù)測。例如,所述當前塊是2N X 2N±夬,且所述當前塊被分區(qū)為(I)一2N x N/2塊和一2N x 3N/2塊或(2)—2N x 3N/2塊和一2N X N/2塊?;蛘?,作為另一示例,所述當前塊是2N X 2N±夬,且其中所述當前塊被分區(qū)為(I)一N/2 X 2N塊和一3N/2 x 2N塊或(2) — 3N/2 x 2N塊和一N/2 x 2N塊。更一般而言,對于非對稱分區(qū),當前塊可被劃分為具有不同維度的兩個分區(qū)。作為解碼的一部分,解碼器還可執(zhí)行為了幀內(nèi)BC預(yù)測而被對稱分區(qū)的另一塊的幀內(nèi)BC預(yù)測。例如,另一塊是被分區(qū)為(I)兩個2N X N塊,(2)兩個N X 2N塊,或(3)四個N x N塊的2N x 2N塊,每個塊可被進一步分區(qū)為兩個N X N/2塊、兩個N/2 X N塊、或四個N/2 x N/2塊。更一般而言,對于對稱分區(qū),該另一塊可被劃分為具有等同維度的分區(qū)。
[0010]根據(jù)本文中描述的創(chuàng)新中的第三方面,圖像編碼器或視頻編碼器對圖像或視頻進行編碼以產(chǎn)生經(jīng)編碼的數(shù)據(jù)并將經(jīng)編碼數(shù)據(jù)作為比特率的一部分輸出。作為編碼的一部分,編碼器計算當前圖片的當前塊的預(yù)測(例如,預(yù)測單元的預(yù)測塊)。預(yù)測可針對用于幀內(nèi)BC預(yù)測的運動估計或BV估計。在任何情況下,計算預(yù)測使用從下到上的方法來標識當前塊的分區(qū)。一般而言,當前塊的分區(qū)包括具有不同維度的兩個或更多個分區(qū)。例如,當前塊是2N X 2N±夬,且從下到上方法包括:(a)檢查該2N x 2N塊的每N x N塊的模式;(b)選擇各個NX N塊的最佳模式;(c)高速緩存各個N X N塊的向量值;(d)檢查該2N X 2N塊的具有2N維度的模式,包括使用被高速緩存的向量值;(e)選擇該2N X 2N塊的具有2N維度的最佳模式;以及(f)在該2N X 2N塊的具有2N維度的最佳模式和所選擇的該2N x 2N塊的各個N x N塊的最佳模式之間做出選擇?;蛘?,作為另一示例,當前塊是2N X 2N塊,且從下到上方法包括:(a)檢查該2N X 2N塊的每N x N塊的模式的子集;(b)高速緩存各個N x N塊的向量值;(c)檢查該2N X 2N塊的具有2N維度的模式的子集,包括使用被高速緩存的向量值;(d)選擇該2N X 2N塊的具有2N維度的最佳模式;以及(e)在該2N x 2N塊的具有2N維度的最佳模式和各個N X N塊的最佳模式之間做出選擇。
[0011]根據(jù)本文中描述的創(chuàng)新中的第四方面,圖像編碼器或視頻編碼器對圖像或視頻進行編碼以產(chǎn)生經(jīng)編碼的數(shù)據(jù)并將經(jīng)編碼數(shù)據(jù)作為比特率的一部分輸出。作為編碼的一部分,編碼器計算當前圖片的當前塊的預(yù)測。預(yù)測可針對用于幀內(nèi)BC預(yù)測的運動估計或BV估計。在任何情況下,計算預(yù)測包括(a)通過當前最佳位置周圍的小鄰域(例如,水平或垂直緊鄰當前最佳位置的位置)中的迭代評估來標識該預(yù)測的當前最佳位置,以及(b)通過當前最佳位置周圍的后繼更大大鄰域(例如,小鄰域外的環(huán)中的位置)中的迭代評估來確認該當前最佳位置。例如,如果當前最佳位置比更大鄰域之一中的位置差,則編碼器取代當前最佳位置并重復(fù)所述標識和所述確認。如果達到后繼更大鄰域中的評估的閾值迭代次數(shù),所述確認階段可停止。
[0012]根據(jù)本文描述的創(chuàng)新的第五方面,圖像編碼器或視頻編碼器確定圖片的當前塊的BV、使用該BV執(zhí)行當前塊的幀內(nèi)BC預(yù)測,并編碼該BV。該BV指示到圖片內(nèi)的一區(qū)域的位移。在確定該BV時,編碼器檢查該區(qū)域位于具有水平偏置或垂直偏置的BV搜索范圍內(nèi)的約束。編碼器可從多個可用BV搜索范圍中選擇BV搜索范圍,例如至少部分取決于一個或多個先前塊的BV值,其可在直方圖數(shù)據(jù)結(jié)構(gòu)中被跟蹤。
[0013]根據(jù)本文中描述的創(chuàng)新中的第六方面,圖像編碼器或視頻編碼器使用幀內(nèi)BC預(yù)測來編碼圖片的數(shù)據(jù),并將經(jīng)編碼數(shù)據(jù)作為比特率的一部分輸出。作為編碼的一部分,編碼器使用具有水平或垂直偏置的BV搜索范圍來執(zhí)行BV估計操作。編碼器可從多個可用BV搜索范圍中選擇BV搜索范圍,例如至少部分取決于一個或多個先前塊的BV值,其可在直方圖數(shù)據(jù)結(jié)構(gòu)中被跟蹤。
[0014]這些創(chuàng)新可以被實現(xiàn)為方法的一部分、被適配成執(zhí)行該方法的計算系統(tǒng)的一部分或存儲用于使得計算系統(tǒng)執(zhí)行該方法的計算機可執(zhí)行指令的有形計算機可讀介質(zhì)的一部分。各創(chuàng)新可以結(jié)合地或分開地使用。
[0015]參考附圖閱讀以下詳細描述,將更清楚本發(fā)明的前述和其他目標、特征和優(yōu)點。
[0016]附圖簡述
[0017]圖1是其中可實現(xiàn)所描述的一些實施例的示例計算系統(tǒng)的示圖。
[0018]圖2a和2b是其中可實現(xiàn)所描述的一些實施例的示例網(wǎng)絡(luò)環(huán)境的示圖。
[0019]圖3是結(jié)合其可實現(xiàn)所描述的一些實施例的示例編碼器系統(tǒng)的示圖。
[0020]圖4是結(jié)合其可實現(xiàn)所描述的一些實施例的示例解碼器系統(tǒng)的示圖。
[0021]圖5a和5b是示出結(jié)合其可實現(xiàn)所描述的一些實施例的示例視頻編碼器的示圖。
[0022]圖6是示出結(jié)合其可實現(xiàn)所描述的一些實施例的示例視頻解碼器的示圖。
[0023]圖7和8是示出對圖片的塊和該塊在塊匹配中的候選塊的幀內(nèi)BC預(yù)測的示圖。
[0024]圖9是示出用于幀內(nèi)BC預(yù)測的示例塊大小的圖示,其包括一些非對稱分區(qū)和一些對稱分區(qū)。
[0025]圖10和11分別是包括具有非對稱分區(qū)的幀內(nèi)BC預(yù)測的用于編碼和解碼的一般化技術(shù)。
[0026]圖12是示出針對圖片的塊的運動估計的示圖。
[0027]圖13是示出用于對經(jīng)幀內(nèi)BC預(yù)測的塊進行分區(qū)的從上到下的方法的流程圖和附圖。
[0028]圖14是示出用于分區(qū)的從下到上的方法的一般化技術(shù)的流程圖。
[0029]圖15是示出用于對經(jīng)幀內(nèi)BC預(yù)測的塊進行分區(qū)的從下到上的方法的流程圖和附圖。
[0030]圖16是示出用于對經(jīng)幀內(nèi)BC預(yù)測的塊進行分區(qū)的甚至更快的從下到上的方法的流程圖和附圖。
[0031]圖17是示出用于使用小鄰域中的位置的迭代估計和更大鄰域中的該位置的迭代確認來搜索塊的BV值或MV值的一般化技術(shù)的流程圖。
[0032 ]圖18a和18b是示出在搜索塊的BV值或MV值時的小鄰域中的位置的迭代估計的圖不O
[0033]圖19是示出在搜索塊的BV值或MV值時在一個或多個更大鄰域中的位置的迭代確認的圖示。
[0034]圖20是示出用于使用小鄰域中的位置的迭代估計和更大鄰域中的該位置的迭代確認來搜索塊的BV值或MV值的示例技術(shù)的流程圖。
[0035]圖2la-21 e是示出針對BV值的搜索范圍的示例約束的示圖。
[0036]圖22是示出用于采用幀內(nèi)BC預(yù)測模式來進行編碼的通用技術(shù)的流程圖,其中該幀內(nèi)BC預(yù)測模式受制于針對BV值的選擇的一個或多個約束。
[0037]圖23是示出對圖片的塊的示例Z-掃描次序的示圖。
[0038]詳細描述
[0039]本詳細描述呈現(xiàn)了在幀內(nèi)塊復(fù)制(“BC")預(yù)測中的創(chuàng)新以及在編碼器側(cè)搜索圖案、搜索范圍和用于分區(qū)的方法中的創(chuàng)新。例如,一些創(chuàng)新涉及在編碼和/或解碼期間針對幀內(nèi)BC預(yù)測使用非對稱分區(qū)(有時被稱為“AMP”)。其它創(chuàng)新涉及在塊向量(“BV”)估計(用于幀內(nèi)BC預(yù)測)或運動估計期間編碼器使用的搜索圖案或方法。又一些其它創(chuàng)新涉及使用在BV估計期間使用具有水平或垂直偏置的BV搜索范圍。
[0040]雖然在此所述的操作是被適當描述為由視頻編碼器或視頻解碼器來執(zhí)行,但在許多情況中,這些操作可以由另一類型的媒體處理工具(例如圖像編碼器或圖像解碼器)來執(zhí)行。
[0041 ]本文中描述的一些創(chuàng)新是參考專用于H.265/HEVC標準的句法元素和操作來示出的。例如,對H.265/HEVC標準的草稿版本JCTVC-P1005—即2014年2月的“高效視頻編碼(HEVC)范圍擴展文本規(guī)范:第6稿” JCTVC-P1005_vl作出參考。本文中描述的各創(chuàng)新還可以被實現(xiàn)為用于其它標準或格式。
[0042]本文中描述的許多創(chuàng)新可以在當編碼諸如屏幕捕捉內(nèi)容之類的某種“人工創(chuàng)建的”視頻內(nèi)容時改善速率-失真性能。一般來說,與僅相機捕捉的視頻內(nèi)容相反,屏幕捕捉視頻(也稱為屏幕內(nèi)容視頻)是包含在向計算機顯示器渲染時捕捉的經(jīng)渲染的文本、計算機圖形、動畫生成的內(nèi)容或其它類似類型的內(nèi)容的視頻。屏幕捕捉內(nèi)容通常包括重復(fù)的結(jié)構(gòu)(例如圖形、文本字符)。屏幕捕捉內(nèi)容一般以具有高色度采樣分辨率的格式(例如,YUV 4:4:4或RGB 4:4:4)來編碼,但是也可用具有較低色度采樣分辨率的格式(例如,YUV 4:2:0)來編碼。用于編碼/解碼屏幕捕捉內(nèi)容的常見場景包括遠程桌面會議和對自然視頻或其它“混合內(nèi)容”視頻上的圖形覆蓋的編碼/解碼。在此所述的幾種發(fā)明適用于編碼屏幕內(nèi)容視頻或其它人工創(chuàng)建的視頻。這些創(chuàng)新也可以被用于自然視頻,但可能不像那樣有效。本文描述的其它創(chuàng)新在自然視頻或人類創(chuàng)建的視頻的編碼中是有效的。
[0043]更一般地,本文中描述的各示例的各種替代是可能的。例如,本文中描述的一些方法可以通過改變描述的方法動作的順序、通過拆分、重復(fù)或忽略某些方法動作等來更改。所公開的技術(shù)的各方面能夠被組合地或分開地使用。不同的實施例使用所描述的創(chuàng)新中的一個或多個。本文中描述的一些創(chuàng)新解決了背景中指出的一個或多個問題。通常,所給出的技術(shù)/工具并不解決所有這些問題。
[0044]1.示例計算系統(tǒng)
[0045]圖1示出了其中可實現(xiàn)所描述的若干創(chuàng)新的合適計算系統(tǒng)(100)的概括示例。計算系統(tǒng)(100)并不旨對使用范圍或功能提出任何限制,因為這些創(chuàng)新可以在不同的通用或?qū)S糜嬎阆到y(tǒng)中實現(xiàn)。
[0046]參考圖1,計算系統(tǒng)(100)包括一個或多個處理單元(I 10、115)和存儲器(120、125)。處理單元(I 10、115)執(zhí)行計算機可執(zhí)行指令。處理單元可以是通用中央處理單元(“CPU”)、專用集成電路(“ASIC”)中的處理器或任何其它類型的處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以提高處理能力。例如,圖1示出中央處理單元(110)以及圖形處理單元或協(xié)處理單元(115)。有形存儲器(120、125)可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,R0M、EEPR0M、閃存等)或兩者的某種組合,可通過(一個或多個)處理單元存取。存儲器(120、125)存儲實現(xiàn)用于具有非對稱分區(qū)的幀內(nèi)預(yù)測的一個或多個創(chuàng)新和/或用于編碼器側(cè)搜索圖案、具有水平或豎直偏置的搜索范圍和/或用于分區(qū)的方法的一個或多個創(chuàng)新的軟件(180),其形式為適于由(一個或多個)處理單元執(zhí)行的計算機可執(zhí)行指令。
[0047]計算系統(tǒng)可具有附加的特征。例如,計算系統(tǒng)(100)包括存儲(140)、一個或多個輸入設(shè)備(150)、一個或多個輸出設(shè)備(160)以及一個或多個通信連接(170)。諸如總線、控制器或網(wǎng)絡(luò)之類的互連機制(未示出)將計算系統(tǒng)(100)的各組件互連。通常,操作系統(tǒng)軟件(未示出)為在計算系統(tǒng)(100)中執(zhí)行的其它軟件提供操作環(huán)境,并協(xié)調(diào)計算系統(tǒng)(100)的各組件的活動。
[0048]有形存儲(140)可以是可移動或不可移動的,并包括磁盤、磁帶或磁帶盒、⑶-R0M、DVD或可用于儲存信息并可在計算系統(tǒng)(100)內(nèi)訪問的任何其他介質(zhì)。存儲(140)存儲用于實現(xiàn)具有非對稱分區(qū)的幀內(nèi)BC預(yù)測的一個或多個創(chuàng)新和/或用于編碼器側(cè)搜索圖案、搜索范圍和/或用于分區(qū)的方法的一個或多個創(chuàng)新的軟件(180)的指令。
[0049](諸)輸入設(shè)備(150)可以是觸摸輸入設(shè)備(諸如鍵盤、鼠標、筆或跟蹤球)、語音輸入設(shè)備、掃描設(shè)備或向計算系統(tǒng)(100)提供輸入的另一設(shè)備。對于視頻,(一個或多個)輸入設(shè)備(150)可以是相機、視頻卡、TV調(diào)諧卡、屏幕捕捉模塊或接受模擬或數(shù)字形式的視頻輸入的類似設(shè)備、或?qū)⒁曨l輸入讀到計算系統(tǒng)(100)中的⑶-ROM或⑶-RW。(一個或多個)輸出設(shè)備(160)可以是顯示器、打印機、揚聲器、CD刻錄機或提供來自計算系統(tǒng)(100)的輸出的另一設(shè)備。
[0050](一個或多個)通信連接(170)允許通過通信介質(zhì)與另一計算實體通信。通信介質(zhì)傳達諸如計算機可執(zhí)行指令、音頻或視頻輸入或輸出、或已調(diào)制數(shù)據(jù)信號中的其他數(shù)據(jù)之類的信息。已調(diào)制數(shù)據(jù)信號是使其一個或多個特征以在信號中編碼信息的方式設(shè)置或改變的信號。作為示例而非限制,通信介質(zhì)可以使用電的、光學(xué)的、RF或其它載體。
[0051]各創(chuàng)新可以在計算機可讀介質(zhì)的一般上下文中描述。計算機可讀介質(zhì)是可在計算環(huán)境內(nèi)訪問的任何可用有形介質(zhì)。作為示例而非局限,對于計算系統(tǒng)(100),計算機可讀介質(zhì)包括存儲器(120、125)、存儲(140)、和以上任意的組合。
[0052]各創(chuàng)新可在計算機可執(zhí)行指令(諸如包括在程序模塊中的在目標現(xiàn)實或虛擬處理器上在計算系統(tǒng)中執(zhí)行的那些計算機可執(zhí)行指令)的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)等。如各實施例中所描述的,這些程序模塊的功能可以被組合,或者在這些程序模塊之間拆分。針對各程序模塊的計算機可執(zhí)行指令可以在本地或分布式計算系統(tǒng)中執(zhí)行。
[0053]術(shù)語“系統(tǒng)”和“設(shè)備”在此被互換地使用。除非上下文明確指示,否則,術(shù)語并不暗示對計算系統(tǒng)或計算設(shè)備的類型的任何限制。一般說來,計算系統(tǒng)或計算設(shè)備可以是本地的或分布式的,并且可以包括具有實現(xiàn)本文中描述的功能的軟件的專用硬件和/或通用硬件的任意組合。
[0054]所公開的方法還可使用被配置成執(zhí)行所公開的方法中的任一者的專用計算硬件來實現(xiàn)。例如,所公開的方法可以由被專門設(shè)計或配置成實現(xiàn)所公開的方法中的任一者的集成電路(例如,諸如ASIC數(shù)字信號處理器(“DSP”)之類的ASIC、圖像處理單元(“GPU”)、或諸如場可編程門陣列(“FPGA”)之類的可編程邏輯器件(“PLD”))來實現(xiàn)。
[0055]為了呈現(xiàn)起見,本詳細描述使用了如“確定”和“使用”等術(shù)語來描述計算系統(tǒng)中的計算機操作。這些術(shù)語是對由計算機執(zhí)行的操作的高級抽象,且不應(yīng)與人類所執(zhí)行的動作混淆。對應(yīng)于這些術(shù)語的實際的計算機操作取決于實現(xiàn)而不同。如本文用于描述編碼選項時所使用的,術(shù)語“最佳”(如在“最佳位置”、用于分區(qū)的“最佳模式”或“最佳組合”)指示:相較于其它編碼選項,關(guān)于估計的編碼效率或?qū)嶋H編碼效率,在失真成本、比特率成本或失真成本和比特率成本的某種組合方面優(yōu)選的編碼選項。任何可用失真度量可被用于失真成本。任何可用比特率度量可被用于比特率成本。其它因素(諸如算法編碼復(fù)雜度、算法解碼復(fù)雜度、資源使用和/或延遲)也可影響關(guān)于哪些編碼選項為“最佳”的決策。
[0056]I1.示例網(wǎng)絡(luò)環(huán)境
[0057]圖2a和2b示出了包括視頻編碼器(220)和視頻解碼器(270)的示例網(wǎng)絡(luò)環(huán)境(201,202)。編碼器(220)和解碼器(270)使用合適的通信協(xié)議通過網(wǎng)絡(luò)(250)連接。網(wǎng)絡(luò)(250)可包括因特網(wǎng)或另一計算機網(wǎng)絡(luò)。
[0058]在圖2a所示的網(wǎng)絡(luò)環(huán)境(201)中,每個實時通信(“RTC”)工具(210)都包括用于雙向通信的編碼器(220)和解碼器(270)兩者。給定的編碼器(220)可以產(chǎn)生輸出,該輸出遵循H.265/HEVC標準、SMPTE 421M標準、IS0/IEC14496-10標準(也稱為H.264或AVC)、另一標準的變體或擴展,或遵循針對接受來自編碼器(220)的經(jīng)編碼的數(shù)據(jù)的對應(yīng)的解碼器(270)的專用格式。雙向通信可以是視頻會議、視頻電話呼叫或其它雙方或多方通信場景的部分。雖然,圖2a中的網(wǎng)絡(luò)環(huán)境(201)包括兩個實時通信工具(210),但網(wǎng)絡(luò)環(huán)境(201)可改為包括參與多方通信的三個或更多個實時通信工具(210)。
[0059]實時通信工具(210)管理編碼器(220)做出的編碼。圖3示出可以被包括在實時通信工具(210)中的示例編碼器系統(tǒng)(300)。替換地,實時通信工具(210)使用另一編碼器系統(tǒng)。實時通信工具(210)還管理解碼器(270)做出的解碼。圖4示出可以被包括在實時通信工具(210)中的示例解碼器系統(tǒng)(400)。替換地,實時通信工具(210)使用另一解碼器系統(tǒng)。
[0060]在圖2b中示出的網(wǎng)絡(luò)環(huán)境(202)中,編碼工具(212)包括編碼供遞送給多個回放工具(214)的視頻的編碼器(220),此多個回放工具(214)包括解碼器(270)。單向通信可被提供用于視頻監(jiān)視系統(tǒng)、web相機監(jiān)視系統(tǒng)、屏幕捕捉模塊、遠程桌面會議演示或在其中編碼視頻并將其從一個位置發(fā)送到一個或多個其它位置的其它場景。雖然在圖2b中的網(wǎng)絡(luò)環(huán)境(202)包括兩個回放工具(214),但該網(wǎng)絡(luò)環(huán)境(202)可以包括更多或更少的回放工具(214)。一般來說,回放工具(214)與編碼工具(212)通信以確定回放工具(214)要接收的視頻流?;胤殴ぞ?214)接收該流、緩沖所接收的經(jīng)編碼數(shù)據(jù)達合適的時間段并開始解碼和回放。
[0061]圖3示出可以被包括在編碼工具(212)中的示例編碼器系統(tǒng)(300)。替換地,編碼工具(212)使用另一編碼器系統(tǒng)。編碼工具(212)還可以包括用于管理與一個或多個回放工具(214)的連接的服務(wù)器側(cè)控制器邏輯。圖4示出可以被包括在回放工具(214)中的示例解碼器系統(tǒng)(400)。替換地,回放工具(214)使用另一解碼器系統(tǒng)?;胤殴ぞ?214)還可以包括用于管理與編碼工具(212)的連接的客戶機側(cè)控制器邏輯。
[0062]II1.示例編碼器系統(tǒng)。
[0063]圖3是結(jié)合其可實現(xiàn)所描述的一些實施例的示例編碼器系統(tǒng)(300)的框圖。編碼器系統(tǒng)(300)可以是能夠用多種編碼模式中的任一者(諸如用于實時通信的低等待時間編碼模式、轉(zhuǎn)碼模式和用于從文件或流中產(chǎn)生供回放的媒體的較高等待時間編碼模式)操作的通用編碼工具,或它可以是適用于一種這樣的編碼模式的專用編碼工具。編碼器系統(tǒng)(300)可以適用于編碼特定類型的內(nèi)容(例如屏幕捕捉內(nèi)容)。編碼器系統(tǒng)(300)可以被實現(xiàn)為操作系統(tǒng)模塊、應(yīng)用庫的部分、獨立的應(yīng)用。總體上,編碼器系統(tǒng)(300)從視頻源(310)接收源視頻幀序列(311)并產(chǎn)生經(jīng)編碼數(shù)據(jù)作為到信道(390)的輸出。輸出到信道的經(jīng)編碼的數(shù)據(jù)可包括使用幀內(nèi)BC預(yù)測模式來編碼的內(nèi)容。
[0064]視頻源(310)可以是相機、調(diào)諧卡、存儲介質(zhì)、屏幕捕捉模塊或其它數(shù)字視頻源。視頻源(310)以例如每秒30幀的幀速率產(chǎn)生視頻幀序列。如本文中所使用的,術(shù)語“幀”一般指代源、經(jīng)編碼的或經(jīng)重構(gòu)的圖像數(shù)據(jù)。對于逐行掃描視頻,幀是逐行掃描視頻幀。對于隔行視頻,在各示例實施例中,隔行視頻幀可以在編碼之前被去隔行。替換地,兩個互補的隔行視頻場可以被編碼在一起作為單個視頻幀或者被編碼成兩個經(jīng)分開編碼的場。除了指示逐行掃描視頻幀或隔行掃描視頻幀之外,術(shù)語“幀”或“圖片”可以指示單個非成對的視頻場、互補的成對視頻場、表示在給定時間的視頻對象的視頻對象平面、或較大圖像中的感興趣區(qū)域。視頻對象平面或區(qū)域可以是包括場景的多個對象或區(qū)域的較大圖像的一部分。
[0065]抵達的源幀(311)被存儲在包括多個幀緩沖器存儲區(qū)域(321、322、…、32η)的源幀臨時存儲器存儲區(qū)域(320)中。幀緩沖區(qū)(321、322等)在源幀存儲區(qū)域(320)中保持一個源幀。在一個或多個源幀(311)已被存儲在幀緩沖區(qū)(321、322等)中后,幀選擇器(330)從源幀存儲區(qū)域(320)中選擇一個體源幀。幀選擇器(330)選擇幀以供輸入到編碼器(340)的次序可不同于視頻源(310)產(chǎn)生這些幀的次序,例如某些幀的編碼可以被按序延遲,從而允許一些更后面的幀被先編碼并由此促成時間上向后的預(yù)測。在編碼器(340)之前,編碼器系統(tǒng)(300)可包括預(yù)處理器(未示出),該預(yù)處理器在編碼之前執(zhí)行對選中的幀(331)的預(yù)處理(例如濾波)。預(yù)處理可包括將色彩空間轉(zhuǎn)換成主要(例如亮度)和次要(例如偏向紅色和偏向藍色的色度差)分量以及對編碼的重采樣處理(例如以減少色度分量的空間分辨率)。通常,在編碼之前,視頻已被轉(zhuǎn)換成諸如YUV的色彩空間,其中亮度(Y)分量的樣本值表示明亮度或強度值,而色度(U,V)分量的樣本值表示色差值。色差值(以及從YUV色彩空間到諸如RGB的另一色彩空間和/或從另一色彩空間到Y(jié)UV色彩空間的轉(zhuǎn)換操作)的精確定義取決于實現(xiàn)。通常,如在此所用,術(shù)語YUV指示具有亮度(或照度)分量和一個或多個色度(或色差)分量的任意色彩空間,包括Y’UV、YIQ、Y’IQ和YDbDr以及諸如YCbCr和YCoCg之類的變體。色度采樣值可以被子采樣到較低的色度采樣率(例如對于YUV 4:2:0格式),或者色度采樣值可以具有與亮度采樣值相同的分辨率(例如對于YUV4:4:4格式)?;蛘?,視頻可用另一格式(例如RGB 4:4:4格式、GBR 4:4:4格式或BGR 4:4:4格式)來編碼。
[0066]編碼器(340)編碼選中的幀(331)以產(chǎn)生經(jīng)編碼的幀(341)并且還產(chǎn)生存儲器管理控制操作(“MMCO”)信號(342)或參考圖片集(“RPS”)信息。RPS是在針對當前幀或任意后續(xù)幀的運動補償中可用于供參考的幀集。如果當前幀不是已被編碼的第一幀,則在執(zhí)行其編碼處理時,編碼器(340)可以使用已經(jīng)被存儲在經(jīng)解碼幀的臨時存儲器存儲區(qū)域(360)中的一個或多個先前被編碼/解碼的幀(369)。這樣的存儲的經(jīng)解碼幀(369)被用作用于當前源幀(331)的內(nèi)容的幀間預(yù)測的參考幀JMCO/RPS信息(342)向解碼器指示哪些經(jīng)重構(gòu)的幀可被用作參考幀,并且因此應(yīng)該被存儲在幀存儲區(qū)域中。
[0067]—般來說,編碼器(340)包括執(zhí)行編碼任務(wù)的多個編碼模塊,編碼任務(wù)為諸如分割成小塊、幀內(nèi)預(yù)測估計和預(yù)測、運動估計和補償、頻率變換、量化和熵編碼。由編碼器(340)執(zhí)行的確切操作可以取決于壓縮格式而變化。輸出的經(jīng)編碼數(shù)據(jù)的格式可以是H.265/HEVC格式、Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的變型或擴展。
[0068]編碼器(340)可以將幀分割成相同尺寸或不同尺寸的多個小塊。例如,編碼器
(340)沿小塊行和小塊列來拆分幀,這些小塊行和小塊列利用幀邊界定義在該幀內(nèi)的小塊的水平和垂直邊界,其中每個小塊是矩形區(qū)域。小塊通常被用于提供并行處理的選項。幀還可以被組織成一個或多個片,其中一個片可以是整個幀或該幀的區(qū)域。片可以獨立于幀中的其它片編碼,這改善了錯誤復(fù)原性。出于編碼和解碼的目的,片或小塊的內(nèi)容被進一步分隔成塊或其它采樣值集。
[0069]對于根據(jù)H.265/HEVC標準的句法來說,編碼器將幀(或片或小塊)的內(nèi)容拆分成編碼樹單元。編碼樹單元(“CTU”)包括被組織為亮度編碼樹塊(“CTB”)的亮度樣本值,并且對應(yīng)的被組織為兩個色度CTB的色度樣本值。CTU(和其CTB)的尺寸由編碼器選擇。亮度CTB可包含例如64x64,、32x32或16x16亮度樣本值。CTU包括一個或多個編碼單元。編碼單元(“CU”)具有亮度編碼塊(“CB”)和兩個相應(yīng)的色度CB。例如,具有64x64亮度CTB和兩個64x64色度CTB(YUV 4:4:4格式)的CTU可以被拆分成4個⑶,其中每個⑶包括一32x32亮度CB和兩個32x32色度CB,并且每個CU可能被進一步拆分成更小的CU?;蛘撸鳛榱硪皇纠?,具有64x64亮度CTB和兩個32x32色度CTB (YUV 4:2:0格式)的CTU可以被拆分成4個CU,其中每個⑶包括一 32x32亮度CB和兩個16x16色度CB,并且每個⑶可能被進一步拆分成更小的⑶。CU的最小允許尺寸(例如8 X 8、16 X 16)可被信號化在比特流中。
[0070]通常,CU具有諸如幀間或幀內(nèi)之類的預(yù)測模式。出于信號化預(yù)測信息(例如預(yù)測模式細節(jié)、位移值等)和/或預(yù)測處理的目的,CU包括一個或多個預(yù)測單元。預(yù)測單元(“PU”)具有亮度預(yù)測塊(“PB” )和兩個色度PB。根據(jù)H.265/HEVC標準,對于幀內(nèi)預(yù)測⑶,PU與⑶具有相同的尺寸,除非CU具有最小尺寸(例如8x8)。在那個情況下,CU可被拆分成四個較小的PU(例如,對于圖片內(nèi)預(yù)測,如果最小CU尺寸為8x8,則每個PU為4x4),或者PU可具有最小CU尺寸,如CU的句法元素所指示的。然而,對于在幀內(nèi)BC預(yù)測中使用的非對稱分區(qū),CU可被劃分為多個HJ,如在圖9中所示。在此情況下,較大的⑶(例如,64x64、32x32或16x16)或最小大小的⑶可被化分為多個PU。
[0071]出于殘差編碼和解碼的目的,CU還具有一個或多個變換單元,其中變換單元(“TU”)具有亮度變換塊(“TB”)和兩個色度TB。幀內(nèi)預(yù)測的⑶中的PU可包含單個TU(尺寸上等于HJ)或多個TU。編碼器決定如何將視頻分割成CTU、⑶、PU、TU等。
[0072]在H.265/HEVC實現(xiàn)中,片可以包括單個片段(獨立的片段)或被劃分成多個片段(獨立的片段和一個或多個從屬的片段)。片段是包含在單個網(wǎng)絡(luò)抽象層(“NAL”)單元中的、在小塊掃描中連續(xù)排序的整數(shù)數(shù)目的CTU。對于獨立的片段,片段頭部包括適用于該獨立的片段的句法元素的值。對于從屬片段,截斷的片段頭部包括適用于該從屬片段的句法元素的幾個值,并且從屬片段的其它句法元素的值是以解碼順序從在前的獨立的片段的值中推導(dǎo)出來的。
[0073]如本文中所使用的,術(shù)語“±夬”可以指示宏塊、預(yù)測單元、殘留數(shù)據(jù)單元、或者CB、PB或TB,或者某些其它樣本值集,這取決于上下文。
[0074]回到圖3,編碼器根據(jù)來自源幀(331)中的其它、先前重構(gòu)的樣本值的預(yù)測來表示該幀(331)內(nèi)編碼的塊。對于幀內(nèi)BC預(yù)測,圖片內(nèi)估計器估計塊相對于其它、先前重構(gòu)的采樣值的塊的位移。幀內(nèi)預(yù)測參考區(qū)域是幀中被用于生成塊的BC預(yù)測值的樣本值區(qū)域。幀內(nèi)預(yù)測區(qū)域可以用(在BV估計中確定的)塊向量(“BV”)值來指示。以下描述了在圖片內(nèi)編碼期間作出判定的示例方法。取決于實現(xiàn),編碼器可以使用輸入采樣值或重構(gòu)采樣值(在同一圖片中先前經(jīng)編碼的采樣值)對塊執(zhí)行BV估計。更多細節(jié)參看第V節(jié)對BV估計的描述。
[0075]對于塊的空間內(nèi)預(yù)測,圖片內(nèi)估計器估計相鄰的經(jīng)重構(gòu)的樣本值到該塊的外插。圖片內(nèi)估計器可以輸出經(jīng)熵編碼的預(yù)測信息(例如幀內(nèi)BC預(yù)測的BV值或幀內(nèi)空間預(yù)測的預(yù)測模式(方向))。幀內(nèi)預(yù)測預(yù)測器應(yīng)用預(yù)測信息來確定幀內(nèi)預(yù)測值。
[0076]編碼器(340)依據(jù)來自參考幀的預(yù)測來表示源幀(331)的幀間編碼的預(yù)測的塊。運動估計器估計塊相對于一個或多個參考幀(369)的運動。當使用多個參考幀時,這多個參考幀可來自不同的時間方向或相同的時間方向。經(jīng)運動補償?shù)念A(yù)測參考區(qū)域是在參考幀中被用于生成當前幀的采樣值的塊的經(jīng)運動補償?shù)念A(yù)測值的采樣值的區(qū)域。運動估計器輸出諸如運動向量(“MV” )信息之類的運動信息,該運動信息被熵編碼。運動補償器將MV應(yīng)用于參考幀(369)以確定用于幀間預(yù)測的經(jīng)運動補償?shù)念A(yù)測值。以下描述了在圖片內(nèi)編碼期間作出判定的示例方法。
[0077]編碼器可以確定在塊預(yù)測值(幀內(nèi)或幀間)和對應(yīng)的原始值之間的差值(如果有的話)。這些預(yù)測殘留值將使用頻率變換(如果該頻率變換不被跳過)、量化和熵編碼來被進一步編碼。例如,編碼器(340)為圖片、小塊、片和/或視頻中的其它部分設(shè)置量化參數(shù)(“QP”)的值,并相應(yīng)地量化變換系數(shù)。編碼器(340)的熵編碼器壓縮經(jīng)量化的變換系數(shù)值以及某些輔助信息(例如MV信息、BV預(yù)測值的索引值、BV差、QP值、模式判定、參數(shù)選擇)。典型的熵編碼技術(shù)包括指數(shù)_Go 1mb編碼、Go 1mb-Ri ce編碼、算術(shù)編碼、差分編碼、Huffman編碼、行程長度編碼、可變長度到可變長度(“V2V”)編碼、可變長度到固定長度(“V2F”)編碼、Lempel-Ziv( “LZ”)編碼、字典編碼、概率區(qū)間劃分熵編碼(“PIPE”)和上述編碼的組合。熵編碼器可針對不同種類的信息使用不同的編碼技術(shù),并可組合地應(yīng)用多個技術(shù)(例如,通過應(yīng)用Golomb-Rice編碼,隨后應(yīng)用算術(shù)編碼),并可從特定編碼技術(shù)內(nèi)的多個碼表中進行選擇。在一些實現(xiàn)中,可以跳過頻率變換。在這種情況中,可以對預(yù)測殘留值進行量化和熵編碼。
[0078]自適應(yīng)去塊濾波器可以被包括在編碼器(340)中的運動補償環(huán)路(也即“內(nèi)環(huán)路”濾波)中以平滑經(jīng)解碼的幀中的塊邊界行和/或列上的間斷??商鎿Q地或另外地應(yīng)用其它濾波(諸如去振鈴濾波、自適應(yīng)環(huán)路濾波(“ALF”)或樣本自適應(yīng)偏移(“SA0”)濾波;未示出)作為內(nèi)環(huán)路濾波操作。
[0079]由編碼器(340)產(chǎn)生的經(jīng)編碼的數(shù)據(jù)包括針對各層比特流句法的句法元素。對于根據(jù)H.265/HEVC的標準的句法,例如,圖片參數(shù)集(“PPS”)是包含了與圖片相關(guān)聯(lián)的句法元素的句法結(jié)構(gòu)。PPS可被用于單個圖片,或者PPS可被重用于序列中的多個圖片。PPS典型地與圖片的經(jīng)編碼的數(shù)據(jù)分開地發(fā)送信號(例如PPS的一個NAL單元和用于圖片的經(jīng)編碼的數(shù)據(jù)的一個或多個其它NAL單元)。在圖片的經(jīng)編碼數(shù)據(jù)內(nèi),句法元素指示要為該圖片使用哪個PPS ο類似地,對于根據(jù)H.265/HEVC的標準的句法,序列參數(shù)集(“SPS”)是包含了與圖片的序列相關(guān)聯(lián)的句法元素的句法結(jié)構(gòu)。比特流可包括單個SPS或多個SPS APS通常被信號化成與序列的其它數(shù)據(jù)分開,并且其它數(shù)據(jù)中的句法元素指示要使用哪個SPS。
[0080]經(jīng)編碼的幀(341)和MMC0/RPS信息(342)(或與MMC0/RPS信息(342)等價的信息,因為在編碼器(340)處已經(jīng)知道各幀的依賴關(guān)系和排序結(jié)構(gòu))由解碼處理仿真器(350)處理。解碼處理仿真器(350)實現(xiàn)了解碼器的一些功能,例如對任務(wù)進行解碼以重構(gòu)參考幀。以與MM⑶/RPS信息(342)相一致的方式,解碼處理仿真器(350)確定給定的經(jīng)編碼幀(341)是否需要被重構(gòu)并被存儲以供在對要編碼的后續(xù)幀的幀間預(yù)測中用作參考幀。如果經(jīng)編碼的幀
(341)需要被存儲,則解碼處理仿真器(350)對將由解碼器進行的解碼處理建模,該解碼器接收經(jīng)編碼的幀(341)并產(chǎn)生相應(yīng)的經(jīng)解碼的幀(351)。通過這么做,當編碼器(340)已經(jīng)使用已被存儲在經(jīng)解碼幀存儲區(qū)域(360)中的經(jīng)解碼的幀(369)時,解碼處理仿真器(350)還使用來自存儲區(qū)域(360)的經(jīng)解碼的幀(369)作為解碼處理的一部分。
[0081]經(jīng)解碼幀臨時存儲器存儲區(qū)域(360)包括多個幀緩沖存儲區(qū)域(361,362,...,36η)。以與MMC0/RPS信息(342)相一致的方式,解碼處理仿真器(350)管理存儲區(qū)域(360)中的內(nèi)容,以便標識出具有編碼器(340)不再需要將其用作參考幀的幀的任何幀緩沖區(qū)(361、362等)。在對解碼處理進行建模之后,解碼處理仿真器(350)在幀緩沖區(qū)(361、362等)中存儲已經(jīng)以此方式標識出的新解碼的幀(351)。
[0082]經(jīng)編碼的幀(341)和MM⑶/RPS信息(342)被緩沖在臨時的經(jīng)編碼數(shù)據(jù)區(qū)域(370)中。被聚集在經(jīng)編碼數(shù)據(jù)區(qū)域(370)中的經(jīng)編碼數(shù)據(jù)包含一個或多個圖片的經(jīng)編碼數(shù)據(jù)作為基本經(jīng)編碼視頻位流的句法的一部分。在經(jīng)編碼數(shù)據(jù)區(qū)域(370)中被聚集的經(jīng)編碼數(shù)據(jù)還可包括與經(jīng)編碼的視頻數(shù)據(jù)相關(guān)的媒體元數(shù)據(jù)(例如作為一個或多個補充增強信息(“SEI”)消息或視頻可用性信息(“VUI”)消息中的一個或多個參數(shù))。
[0083]來自臨時的經(jīng)編碼數(shù)據(jù)區(qū)域(370)的經(jīng)聚集的數(shù)據(jù)(371)由信道編碼器(380)處理。信道編碼器(380)可以分組化和/或復(fù)用經(jīng)聚集的數(shù)據(jù)以供作為媒體流傳輸或存儲(例如根據(jù)媒體程序流或傳輸流格式,例如ITU-T H.222.0| IS0/IEC 13818-1或因特網(wǎng)實時傳輸協(xié)議格式(例如IETF RFC 3550)),在這種情況中,信道編碼器(380)可以添加句法元素作為媒體傳輸流的句法的一部分?;蛘?,信道編碼器(380)可以組織經(jīng)聚集的數(shù)據(jù)以供存儲成文件(例如根據(jù)媒體容器格式,諸如IS0/IEC 14496-12),在這種情況中信道編碼器(380)可添加句法元素作為媒體存儲文件的句法的一部分?;蛘?,更一般地,信道編碼器(380)可以實現(xiàn)一個或多個媒體系統(tǒng)復(fù)用協(xié)議或傳輸協(xié)議,在這種情況中,信道編碼器(380)可以添加句法元素作為(一個或多個)協(xié)議的句法的一部分。信道編碼器(380)將輸出提供給信道(390),該信道(390)表示存儲、通信連接或該輸出的另一信道。信道編碼器(380)或信道(390)還可以包括例如用于前向糾錯(“FEC")編碼和模擬信號調(diào)制的其它元素(未示出)。
[0084]IV.示例解碼器系統(tǒng)。
[0085]圖4是結(jié)合其可實現(xiàn)所描述的一些實施例的示例解碼器系統(tǒng)(400)的框圖。解碼器系統(tǒng)(400)可以是能夠在多種解碼模式(例如針對實時通信的低等待時間解碼模式以及針對來自文件或流中的媒體回放的較高等待時間解碼模式)中的任一者操作的通用解碼工具,或它可以是適用于一種這樣的解碼模式的專用解碼工具。解碼器系統(tǒng)(400)可以被實現(xiàn)為操作系統(tǒng)模塊、應(yīng)用庫的一部分或獨立的應(yīng)用??傮w上,解碼器系統(tǒng)(400)從信道(410)接收經(jīng)編碼數(shù)據(jù)并產(chǎn)生經(jīng)重構(gòu)的幀作為針對輸出目的地(490)的輸出。
[0086]解碼器系統(tǒng)(400)包括信道(410),該信道(410)可以表示存儲、通信連接或針對作為輸入的經(jīng)編碼數(shù)據(jù)的另一信道。信道(410)產(chǎn)生已經(jīng)被信道編碼的經(jīng)編碼數(shù)據(jù)。信道解碼器(420)可以處理經(jīng)編碼的數(shù)據(jù)。例如,信道解碼器(420)可以(例如根據(jù)諸如ITU-TH.222.0|IS0/IEC 13818-1的媒體程序流或傳輸流格式,或諸如IETF RFC 3550的因特網(wǎng)實時傳輸協(xié)議格式)去分組化和/或去復(fù)用已被聚集以供作為媒體流來傳輸或存儲的數(shù)據(jù),在這種情況中,信道解碼器(420)可以解析所添加的作為媒體傳輸流的句法的一部分的句法元素?;蛘?,信道解碼器(420)可以(例如根據(jù)諸如IS0/IEC 14496-12的媒體容器格式)來將已被聚集以供作為文件來存儲的經(jīng)編碼的視頻數(shù)據(jù)分開,在這種情況中,信道解碼器(420)可以解析所添加的作為媒體存儲文件的句法的一部分的句法元素。或者,更一般地,信道解碼器(420)可以實現(xiàn)一個或多個媒體系統(tǒng)去復(fù)用協(xié)議或傳輸協(xié)議,在這種情況中,信道解碼器(420)可以解析所添加的作為(一個或多個)協(xié)議的句法的一部分的句法元素。信道(410)或信道解碼器(420)還可以包括例如用于FEC解碼和模擬信號解調(diào)的其它元素(未示出)。
[0087]從信道解碼器(420)輸出的經(jīng)編碼的數(shù)據(jù)(421)被存儲在臨時的經(jīng)編碼數(shù)據(jù)區(qū)域(430)中,直到已經(jīng)接收到足夠數(shù)量的這樣的數(shù)據(jù)。經(jīng)編碼數(shù)據(jù)(421)包括經(jīng)編碼的幀(431)和MMC0/RPS信息(432)。在經(jīng)編碼數(shù)據(jù)區(qū)域(430)中的經(jīng)編碼數(shù)據(jù)(421)包含一個或多個圖片的經(jīng)編碼數(shù)據(jù)作為基本編碼的視頻比特流的句法的一部分。在經(jīng)編碼數(shù)據(jù)區(qū)域(430)中的經(jīng)編碼數(shù)據(jù)(421)還可包括與經(jīng)編碼的視頻數(shù)據(jù)相關(guān)的媒體元數(shù)據(jù)(例如作為一個或多個SE I消息或VUI消息中的一個或多個參數(shù))。
[0088]一般來說,經(jīng)編碼數(shù)據(jù)區(qū)域(430)臨時存儲經(jīng)編碼數(shù)據(jù)(421),直到這樣的經(jīng)編碼數(shù)據(jù)(421)被解碼器(450)使用。此時,經(jīng)編碼幀(431)和MMC0/RPS信息(432)的經(jīng)編碼數(shù)據(jù)被從經(jīng)編碼數(shù)據(jù)區(qū)域(430)傳輸?shù)浇獯a器(450)。當解碼繼續(xù)時,新的經(jīng)編碼數(shù)據(jù)被添加到經(jīng)編碼數(shù)據(jù)區(qū)域(430)并且保留在經(jīng)編碼數(shù)據(jù)區(qū)域(430)中的最舊的經(jīng)編碼數(shù)據(jù)被傳輸?shù)浇獯a器(450)。
[0089]解碼器(450)解碼經(jīng)編碼幀(431)以產(chǎn)生相應(yīng)的經(jīng)解碼幀(451)。在適當時,當執(zhí)行其解碼處理時,解碼器(450)可以將一個或多個先前解碼的幀(469)用作幀間預(yù)測的參考幀。解碼器(450)從經(jīng)解碼幀臨時存儲器存儲區(qū)域(460)中讀取這樣的先前解碼的幀(469)。通常,解碼器(450)包括執(zhí)行諸如熵解碼、幀內(nèi)預(yù)測、運動補償幀間預(yù)測、逆量化、逆頻率變換(如果未被跳過)和合并小塊之類的解碼任務(wù)的多個解碼模塊。由解碼器(450)執(zhí)行的確切操作可以取決于壓縮格式而變化。
[0090]例如,解碼器(450)接收經(jīng)壓縮的幀或幀序列的經(jīng)編碼數(shù)據(jù),并產(chǎn)生包括經(jīng)解碼的幀(451)的輸出。在解碼器(450)中,緩沖器接收針對經(jīng)壓縮的幀的經(jīng)編碼數(shù)據(jù),并在適當時,使得接收到的經(jīng)編碼數(shù)據(jù)對熵解碼器可用。熵解碼器對經(jīng)熵編碼的量化數(shù)據(jù)以及經(jīng)熵編碼的輔助信息進行熵解碼,通常應(yīng)用編碼器中執(zhí)行的熵編碼的逆來進行熵解碼。運動補償器將運動信息應(yīng)用于一個或多個參考幀以形成針對正被重構(gòu)的幀的任何幀間編碼塊的經(jīng)運動補償?shù)念A(yù)測值。幀內(nèi)預(yù)測模塊可從相鄰的、先前重構(gòu)的樣本值中空間地預(yù)測當前塊的樣本值,或者對于幀內(nèi)BC預(yù)測,使用幀中的幀內(nèi)預(yù)測區(qū)域的先前重構(gòu)的樣本值來預(yù)測當前塊的樣本值。幀內(nèi)預(yù)測區(qū)域可用BV值來指示。解碼器(450)還重構(gòu)預(yù)測殘留值。逆量化器對經(jīng)熵解碼的數(shù)據(jù)進行逆量化。例如,解碼器(450)基于比特流中的句法元素來設(shè)置圖片、小塊、片和/或視頻中的其他部分的QP,并相應(yīng)地對變換系數(shù)進行逆量化。逆頻率變換器將量化的頻域數(shù)據(jù)轉(zhuǎn)換成空間域數(shù)據(jù)。在一些實現(xiàn)中,可以跳過頻率變換,在這樣的情況中逆頻率變換也被跳過。如果這樣,預(yù)測殘留值可以被熵解碼并逆量化。對于幀間預(yù)測的塊,解碼器(450)將重構(gòu)的預(yù)測殘留值與經(jīng)運動補償?shù)念A(yù)測值組合。解碼器(450)可以類似地將預(yù)測殘留值與來自幀內(nèi)預(yù)測的預(yù)測值組合。自適應(yīng)去塊濾波器被包括在視頻解碼器(450)中的運動補償環(huán)路內(nèi)以平滑經(jīng)解碼的幀(451)中的塊邊界行和/或列上的間斷??商鎿Q地或另外地應(yīng)用其它濾波(例如去振鈴濾波、ALF或SAO濾波;未示出)作為內(nèi)環(huán)路濾波操作。
[0091 ]經(jīng)解碼幀臨時存儲器存儲區(qū)域(460)包括多個幀緩沖器存儲區(qū)域(461、462、…、46η)。經(jīng)解碼幀存儲區(qū)域(460)是經(jīng)解碼圖片緩沖區(qū)的一個示例。解碼器(450)使用MMC0/PS信息(432)來標識該解碼器可將經(jīng)解碼幀(451)存儲在其中的幀緩沖器(461、462等)。解碼器(450)將經(jīng)解碼的幀(451)存儲在那個幀緩沖器中。
[0092]輸出序列發(fā)生器(480)標識按輸出次序?qū)a(chǎn)生的下一幀何時可在經(jīng)編碼幀存儲區(qū)域(460)中獲得。當按輸出順序?qū)a(chǎn)生的下一幀(481)可在經(jīng)解碼幀存儲區(qū)域(460)中獲得時,輸出序列發(fā)生器(480)讀取該下一幀并將其輸出到輸出目的地(490)(例如顯不器)。一般來說,輸出序列發(fā)生器(480)將幀從經(jīng)解碼幀存儲區(qū)域(460)中輸出的次序可以與解碼器(450)解碼這些幀的次序不同。
[0093]V.示例視頻編碼器。
[0094]圖5a和5b是可結(jié)合其實現(xiàn)所描述的一些實施例的通用視頻編碼器(500)的框圖。編碼器(500)接收包括當前圖片的視頻圖片序列作為輸入視頻信號(505)并在經(jīng)編碼視頻比特流(595)中產(chǎn)生經(jīng)編碼數(shù)據(jù)作為輸出。
[0095]編碼器(500)是基于塊的并使用取決于實現(xiàn)的塊格式。塊還可在不同的階段上被進一步細分,例如在預(yù)測、頻率變換和/或熵編碼階段。例如,圖片可以被劃分成64x64塊、32x32塊或16x16塊,這些塊進而可以被劃分成更小的樣本值塊以用于編碼和解碼。在針對H.265/HEVC標準的編碼的實現(xiàn)中,編碼器將圖片分割成CTU(CTB)、CU(CB)、HJ(PB)和TU(TB)。塊(例如CU)可被非對稱地分區(qū)為更小的塊(例如,PU)以用于幀內(nèi)BC預(yù)測的目的,如圖9中所示。
[0096]編碼器(500)使用圖片內(nèi)編碼和/或圖片間編碼來壓縮圖片。編碼器(500)的許多組件被用于圖片內(nèi)編碼和圖片間編碼兩者。由這些組件執(zhí)行的確切操作可取決于所壓縮的信息的類型而變化。
[0097]小塊化模塊(510)可選地將圖片分割成相同尺寸或不同尺寸的多個小塊。例如,小塊化模塊(510)沿小塊行和小塊列來拆分圖片,所述小塊行和小塊列利用圖片邊界定義在圖片內(nèi)的小塊的水平和垂直邊界,其中每個小塊是矩形區(qū)域。在H.265/HEVC實現(xiàn)中,編碼器(500)將圖片分割成一個或多個片,其中每個片包括一個或多個片段。
[0098]通用編碼控件(520)接收輸入視頻信號(505)的圖片以及來自編碼器(500)的各個模塊的反饋(未示出)。整體上,通用編碼控件(520)將控制信號(未示出)提供給其它模塊(例如小塊化模塊(510)、變換器/縮放器/量化器(530)、縮放器/逆變換器(535)、圖片內(nèi)估計器(540)、運動估計器(550)以及幀內(nèi)/幀間切換)以設(shè)置和改變編碼期間的編碼參數(shù)。特別是,通用編碼控制(520)可在編碼期間管理關(guān)于分區(qū)的決策。更一般而言,通用編碼控件(520)可以決定在編碼期間是否和如何使用幀內(nèi)BC預(yù)測。通用編碼控件(520)還可以估計編碼期間的中間結(jié)果,例如執(zhí)行速率-失真分析來估計。通用編碼控件(520)產(chǎn)生指示在編碼期間作出的判定的通用控制數(shù)據(jù)(522),使得對應(yīng)的解碼器可以作出一致的判定。通用控制數(shù)據(jù)(522)被提供給頭部格式化器/熵編碼器(590)。
[0099]如果使用圖片間預(yù)測來預(yù)測當前的圖片,則運動估計器(550)估計輸入視頻信號(505)的當前圖片的采樣值塊相對于一個或多個參考圖片的運動。經(jīng)解碼的圖片緩沖器(570)緩沖一個或多個經(jīng)重構(gòu)的先前編碼的圖片以供用作參考圖片。在確定如何針對運動估計來劃分塊時,運動估計器(550)可應(yīng)用從上到下方法或從下到上方法,如下所述。運動估計器(550)可使用如下所述的搜索圖案或其它搜索圖案。當使用多個參考圖片時,這多個參考圖片可以來自不同的時間方向或相同的時間方向。運動估計器(550)產(chǎn)生諸如MV數(shù)據(jù)、合并模式索引值和參考圖片選擇數(shù)據(jù)之類的輔助信息運動數(shù)據(jù)(552)。運動數(shù)據(jù)(552)被提供給頭部格式化器/熵編碼器(590)以及運動補償器(555)。
[0100]運動補償器(555)將MV應(yīng)用于來自經(jīng)解碼圖片緩沖器(570)的(一個或多個)經(jīng)重構(gòu)的參考圖片。運動補償器(555)產(chǎn)生針對當前圖片的經(jīng)運動補償?shù)念A(yù)測。
[0101]在編碼器(500)內(nèi)的分開的路徑中,圖片內(nèi)估計器(540)確定如何執(zhí)行對輸入視頻信號(505)的當前圖片的樣本值塊的圖片內(nèi)預(yù)測。當前圖片可全部或部分使用圖片內(nèi)編碼來編碼。對于空間內(nèi)預(yù)測,使用當前圖片的重構(gòu)(538)的值,圖片內(nèi)估計器(540)確定如何從當前圖片的鄰近的、先前重構(gòu)的樣本值中空間地預(yù)測當前圖片的當前塊的樣本值。
[0102]或者,對于使用BV值的幀內(nèi)BC預(yù)測,圖片內(nèi)估計器(540)估計當前塊的樣本值到當前圖片內(nèi)的不同候選參考區(qū)域的位移。在確定如何針對BV估計(以及幀內(nèi)BC預(yù)測)來劃分塊時,圖片內(nèi)估計器(540)可應(yīng)用從上到下方法或從下到上方法,如下所述。圖片內(nèi)估計器(540)可使用如下所述的搜索圖案或其它搜索圖案。對于幀內(nèi)BC預(yù)測,幀內(nèi)預(yù)測估計器(540)可使用以下所描述的一個或多個約束來約束BV選擇過程。
[0103]取決于實現(xiàn),編碼器可以使用在循環(huán)內(nèi)濾波之前的輸入采樣值、經(jīng)重構(gòu)的采樣值,或在循環(huán)內(nèi)濾波之后的經(jīng)重構(gòu)的采樣值,來執(zhí)行當前塊的BV估計。通常,通過使用輸入采樣值或未經(jīng)濾波的經(jīng)重構(gòu)的采樣值用于BV估計,編碼器可以避免序列化處理的瓶頸(該瓶頸可能由在BV估計/幀內(nèi)BC預(yù)測之前濾波參考區(qū)域的經(jīng)重構(gòu)的采樣值而導(dǎo)致)。另一方面,存儲所述未經(jīng)濾波的、經(jīng)重構(gòu)的樣本值使用了額外的存儲器。而且,如果在BV估計之前應(yīng)用了循環(huán)內(nèi)濾波,可能存在一個在解碼當前區(qū)域之后將應(yīng)用的濾波處理和正被用于BV估計/幀內(nèi)BC預(yù)測的區(qū)域之間重疊的影響區(qū)域。在這樣的情況中,BV估計/幀內(nèi)BC預(yù)測將在濾波操作的該方面之前被應(yīng)用。在一些實現(xiàn)中,編碼器可以在BV估計/幀內(nèi)BC預(yù)測之前應(yīng)用某些循環(huán)內(nèi)濾波操作,并且在隨后的處理階段中執(zhí)行附加的或替換的濾波。
[0104]或者,對于圖片內(nèi)字典編碼模式,塊中的像素是使用存儲在字典或其他位置的先前的樣本值來編碼的,其中一像素是各共置樣本值的集合(例如,RGB三元組或YUV三元組)。例如,編碼器(500)可計算先前重構(gòu)的樣本值(例如,I個像素、2個像素、4個像素、8個像素并以此類推的群組)的散列值并將那些散列值與正被編碼的當前像素集合的散列值進行比較。長度為一或更多的匹配可在先前重構(gòu)的樣本值中基于散列比較來標識出。(一個或多個)當前像素(或樣本值)可使用標識在先前像素內(nèi)(例如,字典中)的位置的偏移以及指示從該偏移預(yù)測出的像素數(shù)的長度以各種1-D和偽2-D字典模式來編碼。通常,沒有計算出針對用圖片內(nèi)字典編碼模式編碼的塊的殘留值。
[0105]圖片內(nèi)估計器(540)產(chǎn)生幀內(nèi)預(yù)測數(shù)據(jù)(542)作為副信息,幀內(nèi)預(yù)測數(shù)據(jù)(442)為諸如指示幀內(nèi)預(yù)測是否使用空間預(yù)測、幀內(nèi)BC預(yù)測或字典模式、預(yù)測模式方向(用于空間內(nèi)預(yù)測)、BV值(用于幀內(nèi)BC預(yù)測)以及偏移和長度(用于字典模式)的信息。幀內(nèi)預(yù)測數(shù)據(jù)(542)被提供給頭部格式化器/熵編碼器(590)以及圖片內(nèi)預(yù)測器(545)。
[0106]根據(jù)幀內(nèi)預(yù)測數(shù)據(jù)(542),圖片內(nèi)預(yù)測器(545)在空間上從當前圖片的鄰近的先前重構(gòu)的采樣值中預(yù)測當前圖片的當前塊的采樣值?;蛘?,對于幀內(nèi)BC預(yù)測,圖片內(nèi)預(yù)測器(545)使用圖片內(nèi)預(yù)測參考區(qū)域的先前重構(gòu)的樣本值來預(yù)測當前塊的樣本值,圖片內(nèi)預(yù)測參考區(qū)域由針對當前塊的BV值指示。在一些情況中,BV值可以是BV預(yù)測值(預(yù)測的BV值)。在其它情況中,BV值可以不同于其被預(yù)測的BV值,在該情況中BV差異指示了在被預(yù)測的值BV和BV值之間的差值?;蛘?,對于圖片內(nèi)字典模式,圖片內(nèi)預(yù)測器(545)使用偏移和長度重構(gòu)各像素。
[0107]幀內(nèi)/幀間切換選擇針對給定塊的預(yù)測(558)將是經(jīng)運動補償?shù)念A(yù)測還是圖片內(nèi)預(yù)測。
[0108]對于非字典模式,當殘留值編碼沒有被跳過時,預(yù)測(558)的塊和輸入視頻信號(505)的原始當前圖片的對應(yīng)部分之間的差(如果有的話)提供各殘留(518)的值。在當前圖片的重構(gòu)期間,當殘留值已經(jīng)被編碼/信號化,經(jīng)重構(gòu)的殘留值與預(yù)測(558)組合以從視頻信號(505)中生成對原始內(nèi)容的近似重構(gòu)或準確重構(gòu)(538)。(在有損壓縮中,一些信息從視頻信號(505)中丟失。)
[0109]在變換器/縮放器/量化器(530)中,對于非字典模式,當不跳過頻率變換時,頻率變換器將空間域視頻信息轉(zhuǎn)換為頻域(即頻譜、變換)數(shù)據(jù)。對于基于塊的視頻編碼,頻率變換器將離散余弦變換(“DCT”)、其整數(shù)近似、或其它類型的前向塊變換(例如離散正弦變換或其整數(shù)近似)應(yīng)用于預(yù)測殘留數(shù)據(jù)的塊(如果預(yù)測(558)為空則應(yīng)用于采樣值數(shù)據(jù)),產(chǎn)生頻率變換系數(shù)的塊。變換器/縮放器/量化器(530)可以應(yīng)用具有可變塊尺寸的變換。在這種情況中,變換器/縮放器/量化器(530)可確定要對當前塊的殘留值使用哪些塊尺寸的變換??s放器/量化器對變換系數(shù)進行縮放和量化。例如,量化器將以逐圖片基礎(chǔ)、逐小塊基礎(chǔ)、逐片基礎(chǔ)、逐塊基礎(chǔ)、頻率專用基礎(chǔ)或其它基礎(chǔ)來變化的量化步進尺寸將死區(qū)標量量化應(yīng)用于頻域數(shù)據(jù)。經(jīng)量化的變換系數(shù)數(shù)據(jù)(532)被提供給頭部格式化器/熵編碼器(590)。如果頻率變換被跳過,則縮放器/量化器可對預(yù)測殘留數(shù)據(jù)塊(或如果預(yù)測(558)為空則對樣本值)進行縮放和量化,從而生成要提供給頭部格式化器/熵編碼器(590)的經(jīng)量化的值。
[0110]在縮放器/逆變換器(535)中,對于非字典模式,縮放器/逆量化器對經(jīng)量化的變換系數(shù)執(zhí)行逆縮放和逆量化。當變換階段沒有被跳過時,逆頻率變換器執(zhí)行逆頻率變換,生成經(jīng)重構(gòu)的預(yù)測殘留值或采樣值的塊。如果變換階段已經(jīng)被跳過,則也跳過逆頻率變換。在這種情況中,縮放器/逆量化器可對預(yù)測殘留值(或樣本值數(shù)據(jù))的塊執(zhí)行逆縮放和逆量化,從而產(chǎn)生經(jīng)重構(gòu)的值。當殘留值已經(jīng)被編碼/信號化時,編碼器(500)將經(jīng)重構(gòu)的殘留值與預(yù)測(558)的值(例如,經(jīng)運動補償?shù)念A(yù)測器、圖片內(nèi)預(yù)測器)組合以形成重構(gòu)(538)。當殘留值尚未被編碼/信號化時,編碼器(500)將預(yù)測(558)的值用作重構(gòu)(538)。
[0111]對于圖片內(nèi)預(yù)測,重構(gòu)(538)的值可以被饋送回圖片內(nèi)估計器(540)和圖片內(nèi)預(yù)測器(545)。重構(gòu)(538)的值可以被用于對后續(xù)圖片的經(jīng)運動補償?shù)念A(yù)測。重構(gòu)(538)的值可被進一步濾波。對于視頻信號(505)的給定圖片,濾波控件(560)確定如何對重構(gòu)(538)的值執(zhí)行去塊濾波和SAO濾波。濾波控件(560)生成濾波控制數(shù)據(jù)(562),它被提供給頭部格式化器/熵編碼器(590)和合并器/(一個或多個)濾波器(565)。
[0112]在合并器/(一個或多個)濾波器(565)中,編碼器(500)將來自不同小塊的內(nèi)容合并到圖片的經(jīng)重構(gòu)版本中。編碼器(500)根據(jù)濾波器控制數(shù)據(jù)(562)選擇性地執(zhí)行去塊濾波和SAO濾波,以便自適應(yīng)地平滑跨各圖片中的各邊界上的間斷??商鎿Q地或另外地應(yīng)用其它濾波(例如去振鈴濾波或ALF;未示出)。取決于編碼器(500)的設(shè)置,小塊邊界可以被選擇性地濾波或根本不被濾波,并且編碼器(500)可以在經(jīng)編碼的位流內(nèi)提供指示是否應(yīng)用這樣的濾波的句法。經(jīng)解碼的圖片緩沖器(570)緩沖經(jīng)重構(gòu)的當前圖片以供在后續(xù)的經(jīng)運動補償?shù)念A(yù)測中使用。
[0113]頭部格式化器/熵編碼器(590)對通用控制數(shù)據(jù)(522)、經(jīng)量化的變換系數(shù)數(shù)據(jù)(532)、圖片內(nèi)預(yù)測數(shù)據(jù)(542)、運動數(shù)據(jù)(552)以及濾波器控制數(shù)據(jù)(562)進行格式化和/或熵編碼。對于運動數(shù)據(jù)(552),頭部格式化器/熵編碼器(590)可以選擇并熵編碼合并模式索引值,或可使用默認的MV預(yù)測器。在一些情況中,頭部格式化器/熵編碼器(590)還確定MV值(相對于MV值的MV預(yù)測器)的MV差異,隨后例如使用上下文自適應(yīng)二進制算術(shù)編碼對該MV差異進行熵編碼。對于幀內(nèi)預(yù)測數(shù)據(jù)(542),可使用BV預(yù)測來編碼BV值。BV預(yù)測可使用默認BV預(yù)測器(例如來自一個或多個鄰近塊)。當多個BV預(yù)測器是可能的時,BV預(yù)測器索引可以指示多個BV預(yù)測器中的哪個用于BV預(yù)測。頭部格式化器/熵譯碼器(590)可以選擇并熵譯碼BV預(yù)測器索引值(用于幀內(nèi)BC預(yù)測),或可以使用默認BV預(yù)測器。在一些情況中,頭部格式化器/熵編碼器(590)還(相對于BV值的BV預(yù)測值)確定BV值的BV差,隨后對BV差進行熵編碼,例如使用上下文自適應(yīng)二進制算術(shù)編碼來對BV差進行熵編碼。
[0114]頭部格式化器/熵編碼器(590)在經(jīng)編碼的視頻位流(595)中提供經(jīng)編碼數(shù)據(jù)。經(jīng)編碼的視頻比特流的格式(595)可以是H.265/HEVC格式、Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG_2或MPEG-4)、Η.26x格式(例如,H.261、Η.262、Η.263或
H.264)或其它格式的變型或擴展。
[0115]取決于實現(xiàn)和期望的壓縮類型,編碼器(500)的模塊可被添加、省略、拆分成多個模塊、與其它模塊組合、和/或用相似的模塊來替代。在替換實施例中,具有不同模塊和/或其它配置的模塊的編碼器執(zhí)行一個或多個所描述的技術(shù)。編碼器的具體實施例通常使用編碼器(500)的變型或補充版本。所示的編碼器(500)內(nèi)的各模塊之間的關(guān)系指示了信息在編碼器中的一般流動;為簡明起見,未示出其它關(guān)系。
[0116]V1.示例視頻解碼器。
[0117]圖6是結(jié)合其可實現(xiàn)所描述的一些實施例的通用解碼器(600)的框圖。解碼器(600)接收經(jīng)編碼的視頻比特流(605)中的經(jīng)編碼的數(shù)據(jù)并產(chǎn)生包括經(jīng)重構(gòu)視頻(695)的圖片的輸出。經(jīng)編碼的視頻比特流(605)的格式可以是HEVC格式、Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG_2或MPEG-4)、Η.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的變體或擴展。
[0118]解碼器(600)是基于塊的并使用取決于實現(xiàn)的塊格式。塊可以在不同的階段被進一步細分。例如,圖片可以被劃分成64x64塊、32x32塊或16x16塊,這些塊隨后可以被劃分成更小的樣本值塊。在針對HEVC標準的解碼實現(xiàn)中,將圖片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。塊(例如CUI)可被非對稱地分區(qū)為更小的塊(例如,PU)以用于幀內(nèi)BC預(yù)測的目的,如圖9中所示。
[0119]解碼器(600)使用圖片內(nèi)解碼和/或圖片間解碼來對圖片進行解壓縮。解碼器(600)的許多組件被用于圖片內(nèi)解碼和圖片間解碼這兩者。由這些組件執(zhí)行的確切操作可以取決于正被解壓縮的信息的類型而變化。
[0120]緩沖器接收經(jīng)編碼的視頻比特流(605)中的經(jīng)編碼數(shù)據(jù),并使得接收到的經(jīng)編碼數(shù)據(jù)可用于解析器/熵解碼器(610)。解析器/熵解碼器(610)通常應(yīng)用在編碼器(500)中執(zhí)行的熵編碼的逆(例如上下文自適應(yīng)二進制算術(shù)解碼)對經(jīng)熵編碼的數(shù)據(jù)進行熵解碼。作為解析和熵解碼的結(jié)果,解析器/熵解碼器(610)產(chǎn)生通用控制數(shù)據(jù)(622)、經(jīng)量化的變換系數(shù)數(shù)據(jù)(632)、圖片內(nèi)預(yù)測數(shù)據(jù)(642)、運動數(shù)據(jù)(652)以及濾波器控制數(shù)據(jù)(662)。對于幀內(nèi)預(yù)測數(shù)據(jù)(642),如果BV預(yù)測器索引值被信號化,解析器/熵解碼器(610)可以例如使用上下文自適應(yīng)二進制算術(shù)解碼來熵解碼DV預(yù)測器索引值。在一些情況中,解析器/熵解碼器(610)還可以(例如使用上下文自適應(yīng)二進制算術(shù)解碼)對BV值的BV差進行熵解碼,隨后將該BV差與相應(yīng)的BV預(yù)測值組合以重構(gòu)BV值。在其它情況中,該BV差異可以自比特流中忽略,并且BV值僅僅是(例如用BV預(yù)測器索引值所指示的)BV預(yù)測器。
[0121]通用解碼控件(620)接收通用控制數(shù)據(jù)(622)并將控制信號(未示出)提供給其它模塊(例如縮放器/逆變換器(635)、圖片內(nèi)預(yù)測器(645)、運動補償器(655)以及幀內(nèi)/幀間切換)以設(shè)置和改變解碼期間的解碼參數(shù)。
[0122]如果當前圖片是使用圖片間預(yù)測來預(yù)測的,則運動補償器(655)接收運動數(shù)據(jù)(652),例如MV數(shù)據(jù)、參考圖片選擇數(shù)據(jù)、以及合并模式索引值。運動補償器(655)將MV應(yīng)用于來自經(jīng)解碼圖片緩沖器(670)的(一個或多個)經(jīng)重構(gòu)的參考圖片。運動補償器(655)產(chǎn)生針對當前圖片中的經(jīng)幀間編碼的塊的運動補償?shù)念A(yù)測。經(jīng)解碼圖片緩沖器(670)存儲一個或多個先前重構(gòu)的圖片以供用作參考圖片。
[0123]在解碼器(600)內(nèi)的分開路徑中,幀內(nèi)預(yù)測預(yù)測器(645)接收幀內(nèi)預(yù)測數(shù)據(jù)(642),諸如指示幀內(nèi)預(yù)測是否使用空間預(yù)測或幀內(nèi)BC預(yù)測或字典模式、以及預(yù)測模式方向(對于幀內(nèi)空間預(yù)測)、BV值(對于幀內(nèi)BC預(yù)測)或偏移和長度(對于字典模式)的信息。對于幀內(nèi)空間內(nèi)預(yù)測,根據(jù)預(yù)測模式數(shù)據(jù)使用當前圖片的重構(gòu)(638)的值,圖片內(nèi)預(yù)測器(645)從當前圖片的相鄰的、先前重構(gòu)的樣本值中空間地預(yù)測當前圖片的當前塊的樣本值?;蛘撸瑢τ谑褂肂V值的幀內(nèi)BC預(yù)測,圖片內(nèi)預(yù)測器(645)使用幀內(nèi)預(yù)測區(qū)域的先前重構(gòu)的樣本值來預(yù)測當前塊的樣本值,圖片內(nèi)預(yù)測區(qū)域的先前重構(gòu)的樣本值由針對當前塊的BV值來指示。或者,對于圖片內(nèi)字典模式,圖片內(nèi)預(yù)測器(645)使用偏移和長度重構(gòu)各像素。
[0124]幀內(nèi)/幀間切換選擇運動補償?shù)念A(yù)測或圖片內(nèi)預(yù)測的值用作給定塊的預(yù)測(658)。例如,當遵循HEVC句法時,可以基于為圖片中的CU編碼的句法元素來控制圖片內(nèi)/圖片間切換,該CU可以包括圖片內(nèi)預(yù)測的CU和圖片間預(yù)測的CU。當殘留值已經(jīng)被編碼/信號化時,解碼器(600)將預(yù)測(658)與重構(gòu)的殘留值組合以產(chǎn)生來自視頻信號的內(nèi)容的重構(gòu)(638)。當殘留值尚未被編碼/信號化時,解碼器(600)將預(yù)測(658)的值用作重構(gòu)(638)。
[0125]為了在殘留值已被編碼/信號化時重構(gòu)殘留值,縮放器/逆變換器(635)接收并處理經(jīng)量化的變換系數(shù)數(shù)據(jù)(632)。在縮放器/逆變換器(635)中,縮放器/逆量化器對經(jīng)量化的變換系數(shù)執(zhí)行逆縮放和逆量化。逆頻率變換器執(zhí)行逆頻率變換,從而產(chǎn)生經(jīng)重構(gòu)的預(yù)測殘留值或樣本值的塊。例如,逆頻率變換器將逆塊變換應(yīng)用到頻率變換系數(shù),從而產(chǎn)生樣本值數(shù)據(jù)或預(yù)測殘留數(shù)據(jù)。逆頻率變換可以是逆DCT、其整數(shù)近似、或另一種類型的逆頻率變換(例如逆離散正弦變換或其整數(shù)近似)。如果頻率變換在編碼期間被跳過,則逆頻率變換也被跳過。在這種情況中,縮放器/逆量化器可對預(yù)測殘留值(或樣本值數(shù)據(jù))的塊執(zhí)行逆縮放和逆量化,從而產(chǎn)生經(jīng)重構(gòu)的值。
[0126]對于圖片內(nèi)預(yù)測,重構(gòu)(638)的值可以被饋送回圖片內(nèi)預(yù)測器(645)。對于圖片間預(yù)測,重構(gòu)(638)的值可以被進一步濾波。在合并器/(一個或多個)濾波器(665)中,解碼器(600)將來自不同小塊的內(nèi)容合并到圖片的經(jīng)重構(gòu)版本中。解碼器(600)根據(jù)濾波器控制數(shù)據(jù)(662)和濾波自適應(yīng)規(guī)則來執(zhí)行去塊濾波和SAO濾波,以便自適應(yīng)地平滑各幀中的各邊界上的間斷??商鎿Q地或另外地應(yīng)用其它濾波(例如去振鈴濾波或ALF;未示出)。小塊邊界可以被選擇性地濾波或根本不濾波,這取決于解碼器(600)的設(shè)置或經(jīng)編碼的比特流數(shù)據(jù)內(nèi)的句法指示。經(jīng)解碼的圖片緩沖器(670)緩沖經(jīng)重構(gòu)的當前圖片以供在后續(xù)的經(jīng)運動補償?shù)念A(yù)測中使用。
[0127]解碼器(600)還可包括后處理濾波器。后處理濾波器(608)可以包括去塊濾波、去振鈴濾波、自適應(yīng)維納濾波、膜顆粒再現(xiàn)濾波、SAO濾波或另一種類的濾波。盡管內(nèi)環(huán)路摂濾波是在運動補償環(huán)路中對幀的經(jīng)重構(gòu)的樣本值執(zhí)行的,并因此影響參考幀的樣本值,但后處理濾波器(608)是在經(jīng)重構(gòu)的樣本值被輸出以供顯示之前在運動補償環(huán)路外部被應(yīng)用于經(jīng)重構(gòu)的樣本值的。
[0128]取決于實現(xiàn)和期望的解壓縮類型,解碼器(600)的模塊可被添加、被省略、被拆分成多個模塊、被與其他模塊組合和/或被替換為類似的模塊。在替換實施例中,具有不同模塊和/或其它配置的模塊的解碼器執(zhí)行一個或多個所描述的技術(shù)。解碼器的具體實施例通常使用解碼器(600)的變型或補充版本。所示的解碼器(600)內(nèi)的模塊之間的關(guān)系指示信息在解碼器中的一般流動;為簡明起見,未示出其它關(guān)系。
[0129]VI1.帶有非對稱分區(qū)的塊內(nèi)復(fù)制預(yù)測
[0130]本節(jié)呈現(xiàn)了經(jīng)幀內(nèi)BC預(yù)測的塊的非對稱分區(qū)的示例。使用非對稱分區(qū)可以允許編碼器適配分區(qū)到塊內(nèi)的強定義但是不規(guī)則的圖像圖案,所述圖案在文本、網(wǎng)頁、以及屏幕捕捉視頻和其它人造視頻的其它部分中很常見。
[0131]A.幀內(nèi)BC預(yù)測模式和BV值——介紹。
[0132]對于幀內(nèi)BC預(yù)測,圖片的當前塊的樣本值是使用同一圖片中的樣本值來預(yù)測的。BV值指示從當前塊到圖片的包括用于預(yù)測的樣本值的區(qū)域(“參考區(qū)域”)的位移。參考區(qū)域提供了當前塊的預(yù)測值。用于預(yù)測的樣本值是先前重構(gòu)的樣本值,由此這些樣本值可在編碼期間在編碼器處獲得并在解碼期間在解碼器處獲得。BV值在比特流中被信號化,并且解碼器可以使用BV值來確定圖片的參考區(qū)域以用于預(yù)測,其也在解碼器處被重構(gòu)。幀內(nèi)BC預(yù)測是一種形式的圖片內(nèi)預(yù)測一一針對圖片的塊的幀內(nèi)BC預(yù)測不使用除了同一圖片中的樣本值以外的任何樣本值。
[0133]圖7示出針對當前圖片(710)的當前塊(730)的幀內(nèi)BC預(yù)測。當前塊可以是編碼單元(“CU”)的編碼塊(“CB”)、預(yù)測單元(“PU”)的預(yù)測塊(“PB” )、變換單元(“TU”)的變換塊(“TB”)或其它塊。當前塊的尺寸可以是64 X 64、32 X 32、16 X 16、8 X 8或某個其它尺寸。更一般地,當前塊的尺寸為mXn,其中m和η中的每一者都是整數(shù),并且其中m和η可彼此相等或可具有不同的值。這樣,當前塊可以是正方形或矩形。替換地,當前塊可具有某種其它形狀。
[0134]BV(740)指示當前塊(730)到圖片的包括用于預(yù)測的樣本值的參考區(qū)域(750)的位移(或偏移)。由BV(740)指示的參考區(qū)域(750)有時被稱為當前塊(730)的“匹配塊”。匹配塊可與當前塊(730)相同,或它可以是當前塊(730)的近似。假設(shè)當前塊的左上位置是在當前圖片中的位置(XQ,yo)處,并假設(shè)參考區(qū)域的左上位置在當前圖片中的位置(X1,yi)處。BV指示位移(xmy1-yo)。例如,如果當前塊的左上位置是在位置(256,128)處,并且參考區(qū)域的左上位置在位置(I26,104)處,BV值是(-130,-24)。在本示例中,負水平位移指示在當前塊的左邊的位置,而負垂直位移指示在當前塊之上的位置。
[0135]幀內(nèi)BC預(yù)測可使用BC操作通過利用冗余性(例如在圖片內(nèi)部的重復(fù)的圖案)來改善編碼效率。然而,考慮到編碼器可能估計的候選塊的數(shù)量,為當前塊查找匹配塊可以在計算上是復(fù)雜的并且耗時的。圖8示出在塊匹配操作中用于當前圖片(810)的當前塊(830)的某些候選塊。四個BV(841,842,843,844)指示了四個候選塊的位移。候選塊可在當前圖片(810)的經(jīng)重構(gòu)內(nèi)容內(nèi)的任何地方。(通常從左向右隨后從上到下地編碼塊。)候選塊可以與其它候選塊重疊,如由BV(843,844)指示的候選塊所示。
[0136]在一些示例實現(xiàn)中,幀內(nèi)預(yù)測區(qū)域(850)被約束到在與當前塊(830)相同的片或小塊內(nèi)。這樣的幀內(nèi)BC預(yù)測不使用在其它片或小塊中的采樣值。幀內(nèi)預(yù)測區(qū)域(850)的位置可受制于一個或多個其它約束(例如,對于搜索范圍的約束,與對幀間編碼的塊的重構(gòu)的采樣值的使用有關(guān)的約束)。替換地,幀內(nèi)預(yù)測區(qū)域(850)的位置不被約束在當前圖片(810)的重構(gòu)內(nèi)容內(nèi)(即,全部搜索范圍)。
[0137]具有幀內(nèi)BC預(yù)測的預(yù)測模式的塊可以是CB、PB或其它塊。當塊是CB時,可以在CU級上用信號通知塊的BV值(而CU中的其它CB使用相同的BV或其經(jīng)縮放的版本)。或者,當塊是I3B時,可以在PU級上用信號通知塊的BV值(而PU中的其它I3B使用相同的BV或其經(jīng)縮放的版本)。更一般地,在塊的適當?shù)木浞壣嫌眯诺劳ㄖ獛瑑?nèi)-BC預(yù)測塊的BV。
[0138]根據(jù)幀內(nèi)BC預(yù)測模式,預(yù)測的塊復(fù)制操作可以在CB級(當根據(jù)CB信號化BV時)或PB(當根據(jù)PB信號化BV時)被執(zhí)行。例如,假設(shè)16 X 16CB具有單個16 X 16PB。(PB的)BV被應(yīng)用于塊復(fù)制16 X 16區(qū)域。當幀內(nèi)預(yù)測區(qū)域被約束為不與正被預(yù)測的16 X 16塊重疊時,B V在水平或垂直上具有至少16的幅值(絕對值)。
[0139]替換地,即使當為PB或CB信號化BV時,可以在PB或CB內(nèi)的TB級執(zhí)行塊復(fù)制操作。在這種方式中,BV,就像應(yīng)用于TB—樣,可參考相同I3B或CB中的其它TB的位置。例如,假設(shè)16 X16CB具有單個16 X 161?,但是出于殘留編碼/解碼的目的被拆分成十六個4 X 4TB。(PB的)BV被應(yīng)用以按照光柵掃描次序?qū)Φ谝?TB的4X4區(qū)域進行塊復(fù)制,隨后同一 BV被應(yīng)用以按照光柵掃描次序?qū)Φ诙B的4X4區(qū)域進行塊復(fù)制,依此類推。在將殘留值與對那些之前重構(gòu)的TB的預(yù)測值組合之后,用于TB的BC操作中的4 X 4區(qū)域可包括在同一 CB中之前被重構(gòu)的TB中的位置。(BV仍然不參考正被預(yù)測的同一TB中的位置。)在TB級應(yīng)用BC操作促進了對于具有相對小的幅值的BV的使用。
[0140]TB級重疊隱式地創(chuàng)造了在重構(gòu)PU內(nèi)的TU時的串行依賴。這減少了并行計算的機會并潛在地減少了硬件級的吞吐量。PU級重疊可消除TB中的這種串行依賴。在此情況下,塊復(fù)制操作在可重疊的PB級執(zhí)行。以此方式,BV,就像應(yīng)用于I3B—樣,可參考相同CB中的其它I3B的位置。假定出于幀內(nèi)預(yù)測之目的,一16xl6CB被化分為兩個I3B(例如,兩個16x8ro,或兩個8xl6PB,或一 4xl6PB和一 12xl6PB等)。一個PB的BV被應(yīng)用以塊復(fù)制該PB的區(qū)域,隨后另一 PB的BV被應(yīng)用以塊復(fù)制該另一 PB的區(qū)域。在將殘留值與第一 PB的預(yù)測值組合之后,在第二 PB的BC操作中使用的區(qū)域可包括在同一CB中之前被重構(gòu)的第一I3B中的位置。(BV仍然不參考正被預(yù)測的同一 PB中的位置。)在PB級應(yīng)用BC操作促進了對具有相對小量的BV的使用(相較于在CB級應(yīng)用BC操作)。而且,當在PB級應(yīng)用BC操作時,對于PB內(nèi)的TB,TU級并行處理仍舊被允許。
[0141]一 CU的色度塊的幀內(nèi)BC預(yù)測操作大體對應(yīng)于該CU的亮度塊的幀內(nèi)BC預(yù)測操作。正常情況下,色度PB和色度TB的分段直接對應(yīng)于該CU中的亮度PB和亮度TB的分段。當視頻的格式為YUV 4:4:4時,色度PB和TB的大小與相應(yīng)PB和TB的大小匹配。當視頻的格式是YUV 4:2:0時,色度PB和TB的寬度和高度是對應(yīng)的亮度PB和TB的一半。然而,如果亮度TB具有最小變換尺寸,則使用具有該最小變換尺寸的單個色度TB。當視頻的格式是YUV4:2:2時,色度PB和TB的寬度是對應(yīng)的亮度PB和TB的一半。
[0142]在一些實現(xiàn)中,對于幀內(nèi)BC預(yù)測的⑶,對PU中的色度塊的幀內(nèi)BC預(yù)測使用與對于PU中的亮度塊的幀內(nèi)BC預(yù)測相同的BV值,這通常是當色度數(shù)據(jù)已減少了相對于亮度數(shù)據(jù)的分辨率時(例如,當格式是YUV 4:2:0格式時,對于水平和垂直分量BV值被除以2;或者,當格式是YUV 4:2: 2格式時,對于水平分量BV值被除以2)在縮放和舍入之后進行的。替代地,可針對PU的亮度塊和色度塊用信號指示不同的BV值。
[0143]在一些實現(xiàn)中,編碼器在BV估計或MV估計期間在標識BV值或MV值時考慮亮度樣本值。例如,編碼器嘗試將當前塊(例如一 PU的PB)的亮度樣本值匹配到經(jīng)重構(gòu)的亮度樣本值。然而,所得到的BV值或MV值也被應(yīng)用到相應(yīng)色度塊的色度樣本值。替換地,編碼器在BV估計或MV估計期間在標識BV值或MV值時考慮亮度樣本值和相應(yīng)的色度樣本值。
[0144]在一些實現(xiàn)中,如果PU的亮度塊的預(yù)測模式是幀內(nèi)BC預(yù)測,則該PU的色度塊的預(yù)測模式也是幀內(nèi)BC預(yù)測。例如,用信號指示該PU的預(yù)測模式。替代地,PU的亮度塊或色度塊的預(yù)測模式可以是幀內(nèi)BC預(yù)測,但不都是幀內(nèi)BC預(yù)測。
[0145]B.非對稱分區(qū)
[0146]圖9示出了在一些示例實現(xiàn)中用于幀內(nèi)BC預(yù)測的塊的分區(qū)的示例(900)。使用幀內(nèi)BC預(yù)測來編碼一2N X 2N±夬。例如,該2N x 2N±夬為64x64塊、32x32塊、16x16塊或8x8塊。該2NX 2N塊可以是在無分區(qū)情況下經(jīng)幀內(nèi)BC預(yù)測的?;蛘?,該2N X 2N塊可以按各種方式分區(qū),如在圖9中所示。
[0147]該2NX 2N塊可以被水平分區(qū)為兩個分區(qū)。這兩個分區(qū)可具有相同的維度一一兩個2N X N塊一一以用于對稱分區(qū)。或者,這兩個分區(qū)可以不對稱。例如,上分區(qū)為2N X N/2塊,而下分區(qū)為2N X 3N/2塊?;蛘撸鳛榱硪皇纠?,上分區(qū)為2N x 3N/2塊,而下分區(qū)為2N xN/2塊。從而,一64x64塊可被分區(qū)為兩個64x32塊、一64x16塊和一64x48塊、或一64x48塊和一 64x16塊。一 32x32、16x16或8x8塊可被類似地水平分區(qū)。
[0148]該2NX 2N塊可以相反被垂直分區(qū)為兩個分區(qū)。這兩個分區(qū)可具有相同的維度一一兩個N X 2N塊一一以用于對稱分區(qū)?;蛘?,這兩個分區(qū)可以不對稱。例如,左分區(qū)為N/2 X 2N±夬,而右分區(qū)為3N/2 x 2N±夬。或者,作為另一示例,左分區(qū)為3N/2 x 2N±夬,而右分區(qū)為N/2 X 2N塊。從而,一64x64塊可被分區(qū)為兩個32x64塊、一16x64塊和一48x64塊、或一48x64塊和一 16x64塊。一 32x32、16x16或8x8塊可被類似地垂直分區(qū)。
[0149]或者,該2NX 2N塊可被分區(qū)為四個N x N分區(qū),所述分區(qū)可以被進一步細分。例如,如圖9中所示,給定N X N分區(qū)可被進一步分區(qū)為兩個N X N/2塊、兩個N/2 x N塊、或四個N/2 X N/2塊。從而,64x64塊可被分區(qū)為四個32x32塊,每個32x32塊可被進一步分區(qū)為兩個32x16塊、兩個16x32塊、或四個16x16塊。32x32、16x16或8x8塊可類似地通過四叉樹劃分來分區(qū)為四個分區(qū)。
[0150]在大多數(shù)情況下,在本文中使用的術(shù)語“NX N”分區(qū)也可被認為是2N x 2N分區(qū)。在H.265/HEVC實現(xiàn)中,術(shù)語N x N通常被用來描述PU或PB,而不是CU或CB。如本文所使用的,術(shù)語“N X N分區(qū)”或“N X Ni夬”指示一2N x 2N當前塊的分區(qū)(例如,作為分區(qū)模式的從上到下評估或分區(qū)模式的從下到上評估的一部分)。在此上下文中,N X N分區(qū)或N X N塊本身可被認為是2N X 2N±夬,并且在進一步分區(qū)中可被這樣對待,除非該N X N分區(qū)或N x N塊具有最小大小且不被進一步分區(qū)。N X N分區(qū)或N X N塊內(nèi)的分區(qū)的注釋可被類似地調(diào)整。
[0151]將非對稱分區(qū)大小限制為N/2的倍數(shù)可減少評估在編碼期間使用哪些分區(qū)模式時的復(fù)雜度。替換地,編碼器可考慮其它分區(qū)大小(例如,N/4的倍數(shù)或更一般地分區(qū)大小m Xη)??紤]其它分區(qū)大小可略微改善編碼增益,但是也增加了編碼期間搜索過程的復(fù)雜度,并且可能增加信令開銷。
[0152]C.包括幀內(nèi)BC的編碼或解碼的示例技術(shù)具有非對稱分區(qū)的預(yù)測
[0153]圖10示出包括針對具有非對稱分區(qū)的幀內(nèi)BC預(yù)測的編碼的一般化技術(shù)(1000)。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執(zhí)行該技術(shù)(1000)。圖11示出包括針對具有非對稱分區(qū)的幀內(nèi)BC預(yù)測的解碼的一般化技術(shù)(1100)。圖像解碼器或視頻解碼器(諸如參考圖4或圖6描述的解碼器)可執(zhí)行該技術(shù)(1100)。
[0154]參考圖10,編碼器對圖像或視頻進行編碼(1010)以產(chǎn)生經(jīng)編碼的數(shù)據(jù)。作為編碼的一部分,編碼器執(zhí)行為了幀內(nèi)BC預(yù)測而被非對稱分區(qū)的當前塊的幀內(nèi)BC預(yù)測。特別是,當前塊可被劃分為具有不同維度的兩個分區(qū)。編碼器將經(jīng)編碼的數(shù)據(jù)作為比特流的一部分來輸出(1020)。
[0155]參考圖11,解碼器將經(jīng)編碼的數(shù)據(jù)作為比特流的一部分來接收(1110)。解碼器對經(jīng)編碼的數(shù)據(jù)進行解碼(1120)以重構(gòu)圖像或視頻。作為解碼的一部分,解碼器執(zhí)行為了幀內(nèi)BC預(yù)測而被非對稱分區(qū)的當前塊的幀內(nèi)BC預(yù)測。特別是,當前塊可被劃分為具有不同維度的兩個分區(qū)。
[0156]例如,當前2N X 2N塊被水平分區(qū)為(1)2N x N/2塊和2N x 3N/2塊,或(2)2N x3N/2塊和2N X N/2塊?;蛘撸斍?N x 2N塊被垂直分區(qū)為(1)Ν/2 x 2N塊和3N/2 x 2N塊,或(2)3N/2 X 2N塊和N/2 x 2N±夬。替換地,以某一其它方式來非對稱地分區(qū)當前塊。
[0157]另一塊可被對稱地分區(qū)以用于幀內(nèi)BC預(yù)測。例如,另一塊是被分區(qū)為(I)兩個2NxN塊,(2)兩個N X 2N塊,或(3)四個N x N塊的2N x 2N塊,每個塊可被進一步分區(qū)為兩個N xN/2塊、兩個N/2 X N塊、或四個N/2 x N/2塊。更一般而言,對于對稱分區(qū),該另一塊可被劃分為具有等同維度的分區(qū)。
[0158]VII1.用于分區(qū)的編碼器側(cè)方法
[0159]本節(jié)呈現(xiàn)了用于在運動估計或塊向量估計(對于幀內(nèi)BC預(yù)測)期間標識分區(qū)的各種編碼器側(cè)方法。
[0160]例如,在章節(jié)V、VI1.A、IX和X中呈現(xiàn)了幀內(nèi)BC預(yù)測和BV估計的示例??紤]到當前塊的大量可能候選塊,BV估計可以是計算上復(fù)雜的。當BV值的搜索范圍包括圖片的所有先前重構(gòu)的區(qū)域時,由于當前塊可與其進行比較的候選塊的較大數(shù)目,BV估計的計算復(fù)雜性特別成問題。對于整個幀的各候選塊,操作的數(shù)量甚至更高。當編碼器對非對稱分區(qū)求值時,BV估計的復(fù)雜度被進一步增加。
[0161 ]運動估計的計算復(fù)雜度也可能很高,如在下章節(jié)解釋的。
[0162]A.運動估計和MV值——介紹
[0163]對于運動估計,當前圖片中的當前塊的樣本值是使用另一圖片(其被稱為參考圖片)中的樣本值來預(yù)測的。運動矢量(“MV”)值指示從當前塊在參考圖片中的位置到參考圖片的包括用于預(yù)測的樣本值的區(qū)域(“參考區(qū)域”)的位移。參考區(qū)域提供了當前塊的預(yù)測值。用于預(yù)測的樣本值是先前重構(gòu)的樣本值,由此這些樣本值可在編碼期間在編碼器處獲得并在解碼期間在解碼器處獲得。MV值在比特流中被信號化,并且解碼器可以使用該MV值來確定參考圖片的參考區(qū)域以用于預(yù)測,其也在解碼器處被重構(gòu)。當多個參考圖片可用時,比特流還可包括關(guān)于要使用哪個參考圖片來找到參考區(qū)域的指示。
[0164]圖12示出針對當前圖片(1210)的當前塊(1230)的運動預(yù)測。當前塊可以是編碼單元(“CU”)的編碼塊(“CB”)、預(yù)測單元(“PU”)的預(yù)測塊(“PB” )、變換單元(“TU”)的變換塊(“TB”)或其它塊。當前塊的尺寸可以是64 X 64、32 X 32、16 X 16、8 X 8或某個其它尺寸。更一般地,當前塊的尺寸為mXn,其中m和η中的每一者都是整數(shù),并且其中m和η可彼此相等或可具有不同的值。這樣,當前塊可以是正方形或矩形。替換地,當前塊可具有某種其它形狀。
[0165]MV值(1240)指示從當前塊(1230)的位置到參考圖片(1250)中包括用于預(yù)測的樣本值的參考區(qū)域(有時被稱為參考塊)的位移(或偏移)O該MV值(1240)所指示的參考區(qū)域有時被稱為當前塊(1230)的“匹配塊”。匹配塊可與當前塊(1230)相同,或它可以是當前塊(1230)的近似。假設(shè)當前(1230)塊的左上位置在當前圖片(1210)中的位置(XQ,yQ)處,并假設(shè)參考區(qū)域的左上位置在參考圖片(1250)中的位置(X1,yi)處。MV值(1240)指示位移(X1-Xo,y1-yo)。例如,如果當前塊的左上位置在位置(256,128)處,并且參考區(qū)域的左上位置在位置(126,104)處,該MV值為(-130,-24)。在本示例中,負水平位移指示在當前塊的左邊的位置,而負垂直位移指示在當前塊之上的位置。
[0166]當前塊(1230)的參考區(qū)域是在運動估計期間從多個候選塊之中選出的。圖12還示出運動估計中針對當前圖片(I 210)的當前塊(1230)的某些候選塊。四個MV值(1241,1242,1243,1244)指示四個候選參考塊的位移。一般來說,這些候選塊可在參考圖片(1250)內(nèi)的任何地方。候選塊可與其它候選塊重疊,如針對MV值(I243,1244)所指示的候選塊示出的。運動估計的計算復(fù)雜度在MV值的搜索范圍包含參考圖片的全部區(qū)域時因當前塊與大量候選塊比較,而特別成問題。當運動估計針對多個參考圖片執(zhí)行時,該計算復(fù)雜性更加復(fù)雜。
[0167]B.BV值和MV值的精度
[0168]在本文描述的許多示例中,BV值具有整數(shù)樣本精度(integer-sampleprecis1n)。這樣的BV值指示整數(shù)樣本偏移。幀內(nèi)BC預(yù)測常在編碼人造視頻(諸如屏幕內(nèi)容視頻)時使用,對于人造視頻而言,分數(shù)樣本位移很少見,所以整數(shù)樣本精度對于BV值已足夠。替換地,BV值可指示分數(shù)樣本偏移。例如,具有I/2樣本精度(I/2-samp I e preci s 1n)的BV值可指示具有1/2樣本偏移(諸如1.5個樣本、2.5個樣本等等)的水平和/或垂直位移。或者,具有1/4樣本精度的BV值可指示具有1/4、1/2或3/4樣本偏移的水平和/或垂直位移?;蛘?,具有1/8樣本精度的BV值可指示具有1/8、1/4、3/8、1/2、5/8、3/4或7/8樣本偏移的水平和/或垂直位移。或者,BV值可具有某種其它精度。
[0169]另一方面,MV值通常具有分數(shù)樣本精度,因為分數(shù)樣本精度位移在編碼自然視頻時是常見的。例如,MV值可具有1/2樣本精度、I/4樣本精度、1/8樣本精度或某種其它精度。替換地,MV值具有整數(shù)樣本精度。
[0170]C.用于標識分區(qū)的方法
[0171]一般而言,編碼器在運動估計或BV估計期間(用于幀內(nèi)BC預(yù)測)在標識分區(qū)時可使用從上到下方法或從下到上方法。從下到上方法初始地評估最小大小分區(qū)的選項,隨后在評估后續(xù)更大大小分區(qū)的選項時使用來自該初始評估的結(jié)果。從下到上方法可能在計算上是昂貴的。另一方面,從上到下方法初始地評估較大大小分區(qū)的選項,隨后在評估后續(xù)更小大小分區(qū)的選項是使用來自該初始評估的結(jié)果。從上到下方法較不可能標識分區(qū)塊的最優(yōu)方式,但是通常比從下到上方法在計算上更簡單。
[0172]對于關(guān)于分區(qū)方法的更多細節(jié),參見例如:(I)Sullivan等人在加拿大多倫多的國際聲學(xué)、語言和信號處理會議(ICASSP) IEEE匯刊1991年5月第4卷第2661-2664頁中的“Efficient Quadtree Coding of Images and Video(圖像和視頻的高效四叉樹編碼)”,其描述了如何針對樹結(jié)構(gòu)編碼(至少在某些場景下)在速率失真的意義上標識最佳樹,(2)Sullivan等人在亞利桑那鳳凰城的國際電信會議(GLOBECOM)IEEE匯刊1991年12月第85-90頁中的 “Rate-Distort1n Optimized Mot1n Compensat1n for Video Compress1nusing Fixed or Variable Size Blocks(針對使用固定或可變大小塊的視頻壓縮的速率失真優(yōu)化的運動補償)”,其描述了如何將速率失真優(yōu)化應(yīng)用到運動補償(帶或不帶樹);以及(3) Sullivan等人在IEEE圖像處理匯刊1994年5月第IP-3卷第3號第327-331頁中的“Efficient Quadtree Coding of Images and VideoEfficient Quadtree Coding ofImages and Video(圖像和視頻的高效四叉樹編碼)”,其進一步描述了如何對于樹結(jié)構(gòu)編碼在速率失真意義上標識最優(yōu)樹。
[0173]在一些實現(xiàn)中,應(yīng)用以下描述的從上到下方法或從下到上方法之一,編碼器標識PU的分區(qū)。編碼器可基于對PU的亮度PB的分析來設(shè)置PU的分區(qū)。或者,編碼器可基于對PU的亮度PB和色度PB兩者的分析來設(shè)置PU的分區(qū)。在任一情況下,以PU為基礎(chǔ)設(shè)置的分區(qū)隨后被應(yīng)用到該PU的PB。替換地,編碼器標識另一類型的單元或塊的分區(qū)。
[0174]1.用于標識分區(qū)的從上到下方法
[0175]編碼器在BV估計(對于幀內(nèi)BC預(yù)測)或運動估計期間在標識當前塊的分區(qū)時可使用從上到下方法。當前塊可以是PU的PB,或其它類型的塊。圖13是示出用于對經(jīng)幀內(nèi)BC預(yù)測的塊進行分區(qū)的從上到下的方法的流程圖和附圖。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可使用該方法(1300)。在圖13中所示的示例中,編碼器標識具有非對稱分區(qū)的經(jīng)幀內(nèi)BC預(yù)測的2N X 2N塊的至少一些分區(qū)。
[0176]編碼器檢查(1310)具有2N維度的模式。例如,編碼器檢查單一2Nx 2N塊的模式、兩個2N X N塊的模式、兩個N X 2N塊的模式、一個N/2 x 2N塊和一個3N/2 x 2N塊的模式(圖13中示出的兩個選項,在左側(cè)或右側(cè)具有窄塊)、以及一個2N X N/2塊和一個2N x 3N/2塊的模式(在圖13中示出的兩個選項,在頂部或底部具有較短的塊)。例如,對于16x16CU,編碼器檢查具有大小16xP的所有PU和具有大小Pxl6的所有PU,其中在所允許的組合中,P可以是4、8、12和16。
[0177]對于當前2NX 2N塊的給定模式,編碼器根據(jù)該模式確定當前2N x 2N塊的(一個或多個)塊的(一個或多個)BV值。對于當前2N X 2N塊的一塊,編碼器可例如基于(I)當前圖片中的(一個或多個)相鄰塊所使用的(一個或多個)BV值,(2)前一圖片的并列塊所使用的BV值,或(3)較早運動估計中針對當前2N X 2N±夬的該塊所標識的MV值來選擇起始BV值編碼器隨后針對該當前2N X 2N塊的該塊尋找適當?shù)腂V值。
[0178]編碼器選擇(1320)具有2N維度的最佳模式。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。例如,在圖13中,編碼器選擇具有左N/2 X 2N塊和右3N/2 x 2N塊的模式。
[0179]在將2N X 2N塊作為四叉樹劃分之后,編碼器還檢查(I330)該2N x 2N塊的每N xN塊的模式。例如,對于給定N X N塊,編碼器檢查單一N X N塊的模式、兩個N x N/2塊的模式、兩個N/2 X N塊的模式、以及四個N/2 X N/2塊的模式。編碼器可獨立地檢查每個N x N塊。對于例如8x8U,編碼器檢查8x8PU、兩個8x4PU、兩個4x8PU、以及四個4x4PU。
[0180]對于給定NX N塊的給定模式,編碼器根據(jù)該模式確定該給定N X N塊的(一個或多個)塊的(一個或多個)BV值。編碼器可例如基于針對該當前2N X 2N塊標識的BV值來選擇起始BV值。編碼器隨后根據(jù)該模式針對該給定N X N塊的(一個或多個)塊尋找適當?shù)?一個或多個)BV值。
[0181]編碼器選擇(1340)各個NX N塊的最佳模式組合。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。如圖13中所示,不同N X N塊可具有相同模式或不同模式。
[0182]對于2NX 2N塊,編碼器隨后在具有2N維度的最佳模式和各個N x N塊的最佳模式組合之間進行選擇(1350)。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。
[0183]2.用于標識分區(qū)的從下到上的方法
[0184]取代使用從上到下方法,編碼器在BV估計(對于幀內(nèi)BC預(yù)測)或運動估計期間在標識當前塊的分區(qū)時可使用從下到上方法。圖14是示出用于分區(qū)的從下到上的方法的一般化技術(shù)的流程圖。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執(zhí)行技術(shù)(1400)。
[0185]編碼器對圖像或視頻進行編碼(1410)以產(chǎn)生經(jīng)編碼數(shù)據(jù)。作為編碼的一部分(例如,作為運動估計的一部分或者作為用于幀內(nèi)BC預(yù)測的塊向量估計的一部分),編碼器計算當前圖片的當前塊的預(yù)測。當前塊可以是PU的PB,或其它類型的塊。在計算預(yù)測時,編碼器使用從下到上的方法來標識當前塊的分區(qū)。編碼器可不對稱地分區(qū)當前塊,以使得當前塊的分區(qū)是具有不同維度的兩個分區(qū),或?qū)ΨQ地分區(qū)當前塊,以使得當前塊的分區(qū)具有等同的維度。
[0186]—般而言,對于從下到上方法,對于當前塊,編碼器檢查當前塊內(nèi)的更小塊的至少一些分區(qū)模式。編碼器高速緩存更小塊的結(jié)果,諸如BV值或MV值。編碼器隨后使用(來自更小塊的)被高速緩存的結(jié)果來檢查當前塊的至少一些分區(qū)模式以減少檢查當前塊的分區(qū)模式的計算復(fù)雜度。例如,編碼器使用來自更小塊的被高速緩存的結(jié)果來標識當前塊的分區(qū)模式的起始BV值(在BV估計期間)或MV值(在運動估計期間)。在許多情況下,起始BV值(或MV值)將被用于當前塊,這顯著縮短了搜索過程。圖15和16示出了用于標識當前塊的分區(qū)的示例從下到上方法。替換地,編碼器使用另一從下到上方法。
[0187]編碼器隨后將經(jīng)編碼的數(shù)據(jù)作為比特流的一部分來輸出(1420)。
[0188]圖15是示出用于對經(jīng)幀內(nèi)BC預(yù)測的塊進行分區(qū)的從下到上方法(1500)的流程圖和附圖。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可使用該方法(1500)。
[0189]對于被劃分為四叉樹的2N X 2N塊,編碼器檢查(1510)該2N x 2N塊的每N x N塊的模式。例如,對于給定N X N塊,編碼器檢查單一N X N塊的模式、兩個N X N/2塊的模式、兩個N/2 X N塊的模式、以及四個N/2 X N/2塊的模式。編碼器可獨立地檢查每個N x N塊。對于例如8x8U,編碼器檢查8x8PU、兩個8x4PU、兩個4x8PU、以及四個4x4PU的模式。
[0190]對于給定NX N塊的給定模式,編碼器根據(jù)該模式確定該給定N X N塊的(一個或多個)塊的(一個或多個)BV值。對于給定N X N塊的一塊,編碼器可例如基于(I)當前圖片中的(一個或多個)相鄰塊所使用的(一個或多個)BV值,(2)前一圖片的并列塊所使用的BV值,或(3)較早運動估計中針對給定N X N塊的該塊所標識的MV值來選擇起始BV值編碼器隨后針對該給定N X N塊的該塊尋找適當?shù)腂V值。
[0191]編碼器選擇(1520)各個NX N塊的最佳模式組合。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。如圖15中所示,不同N X N塊可具有相同模式或不同模式。
[0192]編碼器高速緩存(1530)向量值、分區(qū)模式信息、和/或檢查(1510)2Nx2N塊的每NX N塊的模式的其它結(jié)果。例如,編碼器高速緩存BV估計期間的BV值,以及針對2N X 2N塊的N X N塊的分區(qū)模式選擇。
[0193]編碼器使用被高速緩存的信息來檢查(1540)具有2N維度的模式,以通過在許多情況下縮短搜索過程來減少計算復(fù)雜度。編碼器可使用被高速緩存的結(jié)果來標識2N X 2N塊的起始BV值(在BV估計期間)。在許多情況下,起始BV值將被用于2N X 2N塊的2N維度分區(qū)模式,其顯著縮短搜索過程。
[0194]例如,編碼器檢查單一2N X 2N塊的模式、兩個2N x N塊的模式、兩個N x 2N塊的模式、一個N/2 X 2N塊和一個3N/2 x 2N塊的模式(圖15中示出的兩個選項,在左側(cè)或右側(cè)具有窄塊)、以及一個2N X N/2塊和一個2N X 3N/2塊的模式(在圖15中示出的兩個選項,在頂部或底部具有較短的塊)。例如,對于16xl6CU,編碼器重用在檢查該16x16⑶的四個8x8⑶的分區(qū)模式之后高速緩存的信息。在許多情況下,16xl6CU的分區(qū)模式終止于使用來自8x8⑶的被高速緩存的BV值,這顯著縮短了搜索過程。
[0195]編碼器選擇(1550)具有2N維度的最佳模式。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。例如,在圖15中,編碼器選擇具有左N/2 X 2N塊和右3N/2 x 2N塊的模式。
[0196]對于2NX 2N塊,編碼器隨后在具有2N維度的最佳模式和各個N x N塊的模式組合之間進行選擇(1560)。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。
[0197]參考圖15描述的技術(shù)(1500)也可被用于經(jīng)幀間編碼的塊的從下到上分區(qū)。在此情況下,來自N X N塊的MV值和其它結(jié)果被高速緩存。編碼器可使用被高速緩存的結(jié)果來標識2N X 2N塊的起始MV值(在運動估計期間)。在許多情況下,起始MV值將被用于2N x 2N塊的2N維度分區(qū)模式,其顯著縮短搜索過程。
[0198]圖16是示出用于對經(jīng)幀內(nèi)BC預(yù)測的塊進行分區(qū)的甚至更快的從下到上的方法(1600)的流程圖和附圖。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可使用這些方法(I 600)之一。圖16中的方法(1600)類似于圖15中的方法(1500),但是已在若干地方被修改以進一步縮短搜索過程。
[0199]對于被劃分為四叉樹的2N X 2N塊,編碼器檢查(1610)該2N x 2N塊的每N x N塊的模式的子集。即,編碼器檢查每N X N塊的部分而非全部模式。例如,對于給定N X N塊,編碼器僅檢查具有兩個N X N/2塊的模式。或者,作為另一示例,編碼器僅檢查具有兩個N/2 XN塊的模式。編碼器可獨立地檢查每個N X N塊。然而,通過檢查更少的模式,搜索過程被縮短。替換地,編碼器檢查每N X N塊的其它和/或附加模式。
[0200]如果多個模式被檢查(1610),則編碼器選擇(1620)各個Nx N塊的最佳模式組合。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。如果僅單一模式被檢查(1610),則編碼器簡單地每N X N塊使用該模式。
[0201]編碼器高速緩存(1630)向量值、分區(qū)模式信息、和/或檢查(1610)2Nx2N塊的每NX N塊的模式的其它結(jié)果。例如,編碼器高速緩存BV估計期間的BV值,以及針對2N X 2N塊的N X N塊的分區(qū)模式選擇。
[0202]編碼器使用被高速緩存的信息來檢查(1640)具有2N維度的模式的子集以減少計算復(fù)雜度。例如,如果編碼器僅檢查(1610)N X N塊的N X N/2塊,則編碼器檢查單一2N x2N塊的模式、兩個2N X N塊的模式、以及一個2N x N/2塊和一個2N x 3N/2塊的模式(在圖16中示出的兩個選項,其中在頂部或底部具有較短的塊)?;蛘撸绻幋a器僅檢查(1610)NX N塊的N/2 X N塊,則編碼器檢查單一2N X 2N塊的模式、兩個N x 2N塊的模式、以及一個N/2 X 2N塊和一個3N/2 x 2N塊的模式(在圖16中示出的兩個選項,其中在左側(cè)或右側(cè)具有窄塊)。
[0203]或者,作為另一示例(在圖16中未示出),編碼器僅檢查(1610)2N x 2N塊的每N xN塊的N X N分區(qū)。如果2N X 2N塊是經(jīng)幀內(nèi)編碼的塊,則編碼器檢查(1640)單一2N x 2N塊的模式、兩個N X 2N塊的模式、以及一個N/2 X 2N塊和一個3N/2 x 2N塊的模式(在左側(cè)或右側(cè)具有窄塊)。如果2N X 2N塊是經(jīng)幀間編碼的塊,則編碼器檢查(1640)單一2N x 2N塊的模式、兩個2N X N塊的模式、以及一個2N X N/2塊和一個2N x 3N/2塊的模式(在頂部或底部具有更短的塊)。
[0204]編碼器選擇(1650)具有2N維度的最佳模式。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。對于2N X 2N塊,編碼器隨后在具有2N維度的最佳模式和各個N x N塊的模式組合之間進行選擇(1660)。選擇準則可以是失真成本、比特率成本或失真成本和比特率成本的某種組合,或選擇準則可使用某種其它度量(例如,使用方差閾值或邊緣檢測器)。
[0205]參考圖16描述的技術(shù)(1600)也可被用于經(jīng)幀間編碼的塊的從下到上分區(qū)。在此情況下,來自N X N塊的MV值和其它結(jié)果被高速緩存。編碼器可使用被高速緩存的結(jié)果來標識2N X 2N塊的起始MV值(在運動估計期間)。在許多情況下,起始MV值將被用于2N x 2N塊的2N維分區(qū)模式,其顯著縮短搜索過程。
[0206]在圖15和16中示出的方法(1500、1600)中,編碼器可限制被高速緩存的BV值或MV值的數(shù)量。例如,編碼器僅存儲2N X 2N塊的每N X N塊的最佳分區(qū)模式的(一個或多個)BV值或MV值。替換地,編碼器還存儲其它BV值或MV值。編碼器約束可控制編碼器存儲多少BV值或MV值。
[0207]IX.搜索圖案
[0208]本章節(jié)呈現(xiàn)可在運動估計或幀內(nèi)BC預(yù)測中使用的各種搜索圖案。特別是,搜索圖案利用屏幕捕捉視頻或其它人造視頻中的共同的運動類型。在這種視頻中,塊的運動通常是純水平運動或純垂直運動(例如,來自計算機桌面環(huán)境中的網(wǎng)頁內(nèi)容或應(yīng)用內(nèi)容的滾動,或來自混合內(nèi)容視頻中的跑馬燈圖形(t i cker graphi c)的滾動)。在此意義上,搜索圖案被適配于屏幕捕捉視頻或其它人造視頻,但是它們也在編碼自然視頻時被使用。
[0209]圖17是示出用于使用小鄰域中的位置的迭代估計和更大鄰域中的該位置的迭代確認來搜索塊的BV值或MV值的一般化技術(shù)(1700)的流程圖。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執(zhí)行該技術(shù)(1700)。
[0210]編碼器對圖像或視頻進行編碼以產(chǎn)生經(jīng)編碼的數(shù)據(jù),并將該經(jīng)編碼的數(shù)據(jù)作為比特流的一部分來輸出。在編碼期間,編碼器計算當前圖片的當前塊的預(yù)測(例如,使用BV估計或運動估計)。在計算預(yù)測時,編碼器標識(1710)通過該預(yù)測的當前最佳位置周圍的小鄰域中的迭代估計來預(yù)測的當前最佳位置。例如,小鄰域包括水平或垂直地緊鄰當前最佳位置的位置。如果小鄰域中的位置之一提供比當前最佳位置更好的結(jié)果,則用該小鄰域中的該更好位置替換該當前最佳位置,且在該新位置周圍的小鄰域中檢查該新位置。以此方式,使用小鄰域圖案的搜索過程可迭代地重復(fù),直到當前最佳位置是其周圍的小鄰域中的最佳位置為止。這可在第一迭代中或在多次迭代之后發(fā)生。
[0211]圖18a和18b示出在搜索塊的BV值或MV值時的小鄰域中的位置的迭代估計。在圖18a中,當前最佳位置被示出為黑色圓。菱形圖案中的鄰近位置(被示出為灰色圓)被評估。四個鄰近位置的結(jié)果分別被與當前最佳位置的結(jié)果進行比較(在失真成本、比特率成本或失真成本和比特率成本的某種組合方面)。在圖18a和18b的示例中,圖18a中的當前最佳位置下方的位置提供了更好的結(jié)果并變成當前最佳位置。在下一次迭代中,如圖18b中所示,新當前最佳位置周圍的菱形圖案中的鄰近位置被評估。替換地,小鄰域可具有另一種形狀。
[0212]編碼器可使用閾值來限制標識(1710)階段中的迭代次數(shù)。閾值取決于實現(xiàn),且例如為4次迭代。如果達到閾值迭代次數(shù),則編碼器可執(zhí)行另一搜索過程(例如,完整搜索過程或散列化過程)來確定該預(yù)測的最佳位置。
[0213]返回圖17,在標識小鄰域中的當前最佳位置后(在閾值迭代次數(shù)內(nèi)),編碼器通過該預(yù)測的當前最佳位置周圍的相繼更大鄰域中的迭代評估來確認(1720)該預(yù)測的當前最佳位置。例如,每個更大鄰域包括小鄰域外的環(huán)中的位置。相繼更大鄰域可在每一側(cè)按照一個樣本、兩個樣本等遞增增長?;蛘?,相繼更大鄰域可按照某種因子來放大。例如,更大鄰域的半徑在第一次之后的每次迭代中按因子2放大。
[0214]如果更大鄰域中的位置之一提供比當前最佳位置更好的結(jié)果,則用該更大鄰域中的該更好位置替換該當前最佳位置,且編碼器在新當前最佳位置處重新開始該過程。否則(更大鄰域中的位置均不提供比當前最佳位置更好的結(jié)果),編碼器用下一更大鄰域重復(fù)該確認過程,直到達到確認(1720)過程的閾值迭代次數(shù)。閾值取決于實現(xiàn),且例如為對于相繼更大鄰域而言為4到7個階段的檢查中的任一者。
[0215]在最大鄰域被成功檢查之后,編碼器終止搜索過程。否則(如決策1730中所示),編碼器在新當前最佳位置處重新開始該過程。
[0216]圖19示出在搜索塊的BV值或MV值時在一個或多個更大鄰域中的位置的迭代確認。在圖19中,當前最佳位置被示出為黑色圓。編碼器檢查當前最佳位置周圍的方形(內(nèi)部的方形)的角和中點處的八個位置。這八個位置在圖19中被示出為灰色圓。這八個位置的結(jié)果分別被與當前最佳位置的結(jié)果進行比較(在失真成本、比特率成本或失真成本和比特率成本的某種組合方面)。如果內(nèi)部的方形中的這八個位置均不比當前最佳位置更好,則編碼器檢查更大的方形(圖19中的外部的方形)的八個位置(角和中點)。替換地,更大鄰域可具有另一形狀(例如,位置的圓圈),包括更少被評估的位置(例如,僅角)或包括更多被評估的位置(例如,在形狀外圍處的位置)。
[0217]第一閾值的計數(shù)器(小閾值迭代)可在每次標識(1710)階段被開始或重新開始時被重置?;蛘?,編碼器可僅在該過程(1700)開始時將第一閾值的計數(shù)器重置一次。類似地,第二閾值的計數(shù)器(較大閾值迭代)可在每次確認(1720)階段被開始或重新開始時被重置?;蛘?,編碼器可僅在該過程(1700)開始時將第二閾值的計數(shù)器重置一次。如果在過程(1700)內(nèi)重置計數(shù)器,則編碼器可使用另一約束來限制搜索過程持續(xù)多久,從而確保其在合理時間量內(nèi)終止。
[0218]圖20是示出用于使用小鄰域中的位置的迭代估計和更大鄰域中的該位置的迭代確認來搜索塊的BV值或MV值的示例技術(shù)的流程圖。
[0219]編碼器重置(2010)第一和第二計數(shù)器。編碼器設(shè)置(2020)當前最佳位置并評估該當前最佳位置(如果該當前最佳位置的結(jié)果尚未從先前評估可用)。編碼器隨后評估(2030)該當前最佳位置周圍的小鄰域中的鄰近位置(如果鄰近位置的結(jié)果尚未從先前評估可用)。編碼器檢查(2040)新最佳位置是否被發(fā)現(xiàn)(通過比較結(jié)果)。如果是,則編碼器使用第一計數(shù)器檢查(2042)是否達到第一閾值。如果否,則編碼器遞增第一計數(shù)器(未示出),將當前最佳位置設(shè)置(2010)為新最佳位置(來自鄰近位置中)并從此處繼續(xù)。以此方式,編碼器可迭代地檢查當前最佳位置周圍的鄰近位置的小鄰域。
[0220]如果達到第一閾值,則編碼器執(zhí)行(2080)完整搜索。替換地,編碼器使用另一搜索過程,諸如散列化過程。
[0221]如果沒有發(fā)現(xiàn)新最佳位置(在決策(2040)處),則編碼器評估(2050)當前最佳位置周圍的位置的環(huán)。編碼器檢查(2060)新最佳位置是否被發(fā)現(xiàn)(通過比較結(jié)果)。如果是,則編碼器重置(2090)第一和第二計數(shù)器,將當前最佳位置設(shè)置(2010)為新最佳位置(來自鄰近位置中)并從此處繼續(xù)。以此方式,編碼器重新開始該過程(2000)。
[0222]否則(在決策(2060)處沒有發(fā)現(xiàn)新最佳位置),編碼器使用第二計數(shù)器檢查(2062)是否達到第二閾值。如果是,則編碼器(成功地)終止搜索過程。如果否,則編碼器遞增第二計數(shù)器(未示出),擴展位置的環(huán)(2070)并評估(2050)當前最佳位置周圍的位置的(經(jīng)擴展)環(huán)。
[0223]在本章節(jié)中描述的示例中,BV值和MV值指示整數(shù)樣本偏移。替換地,BV值和/或MV值可指示分數(shù)樣本偏移。當分數(shù)樣本偏移被允許時,編碼器可標識具有整數(shù)樣本偏移的BV值或MV值,如參考圖17-20描述的。隨后,編碼器可標識整數(shù)樣本BV或MV值周圍(例如,在距整數(shù)樣本BV或MV值單一樣本偏移內(nèi))的鄰域中的BV值或MV值。
[0224]替換地,當分數(shù)樣本偏移被允許時,編碼器可在參考圖17-20描述的每個階段處標識具有帶有所允許的精度的分數(shù)樣本偏移的BV值或MV值(S卩,標識小鄰域中具有分數(shù)樣本偏移的BV值或MV值、標識更大鄰域中具有分數(shù)樣本偏移的BV值或MV值等等)。
[0225]X.約束針對幀內(nèi)BC預(yù)測的BV搜索范圍
[0226]在一些示例實現(xiàn)中,編碼器使用完整搜索范圍以用于BV估計。經(jīng)重構(gòu)的樣本值的整個區(qū)域被搜索以標識當前塊的BV值。盡管使用完整搜索范圍可幫助標識要在幀內(nèi)BC預(yù)測中使用的最佳BV值,然而這也可能增加BV估計的復(fù)雜度。
[0227]在其它示例實現(xiàn)中,編碼器根據(jù)一個或多個約束來限制BV搜索范圍。通過限制BV搜索范圍,編碼和解碼期間為了幀內(nèi)BC預(yù)測而進行的快速存儲器存取所參考的經(jīng)重構(gòu)的樣本值的區(qū)域可被縮小,這有助于降低實現(xiàn)成本。
[0228]在本章節(jié)的示例中,編碼器在BV估計期間標識BV值時考慮當前亮度塊的亮度樣本值。編碼器嘗試將當前塊的亮度樣本值匹配到先前亮度塊的經(jīng)重構(gòu)的亮度樣本值。然而,所得到的BV值也被應(yīng)用到相應(yīng)色度塊的色度樣本值。
[0229]圖21a示出了針對BV值的搜索范圍的示例約束。除了當前幀(2110)的當前塊(2130),圖21a還示出了通過兩個CTB(2120、2122)來限定的搜索范圍。當前CTB(2120)是當前CTU的一部分并且包括當前塊(2130)。在CTB(2122)在其左側(cè)的情況下,當前CTB(2120)限定了能夠在其中找到當前塊(2130)的可允許BV的搜索范圍。BV(2142、2144)參考區(qū)域位于該搜索范圍之外,因此那些BV值(2142、2144)不被允許。
[0230]在一些示例實現(xiàn)中,當前塊的BV值的搜索范圍是當前CTB和在其左側(cè)的CTB。例如,CTB可具有64x64、32x32或16x16個樣本值的大小,這產(chǎn)生128x64、64x32或32x16個樣本值的搜索范圍。只有在當前CTB和左側(cè)CTB中的樣本值被用于當前塊的幀內(nèi)BC預(yù)測。這通過對搜索過程進行約束而簡化了編碼器實現(xiàn)。還通過限制解碼器在快速存儲器中緩沖的用于幀內(nèi)預(yù)測的樣本值的數(shù)量而簡化了解碼器實現(xiàn)。(即使選擇更小的CTU/CTB大小,解碼器也具有足夠的緩沖能力來存儲最大可能維度的兩個CTB的樣本值)。另一約束是幀內(nèi)預(yù)測不能參考來自另一片或小塊的樣本值。對于具有位于(XQ,yo)處的左上位置的當前的塊m X η以及各自具有尺寸CTBsizeY X CTBsizeY的CTB,編碼器可如下地為具有水平分量BV[0]和垂直分量BV[I ]的二維BV檢查這些約束。
[0231 ] BV[0] ^-( (xo%CTBsizeY)+CTBsizeY)
[0232]BV[l]^-(yo%CTBsizeY)
[0233]位于位置(XQ,yο)、(xo+BV[O],yo+BV[I ])和(xo+BV[O] +m_I,yo+BV[ I ] +η-1)處的樣本值應(yīng)當在同一片中。
[0234]位于位置(XQ,yο)、( xo+BV [O], yo+BV [ I ])和(xo+BV [ O ] +m_ I, yo+BV [ I ] +n_ I)處的樣本值應(yīng)當在同一小塊中。
[0235]在實踐中,如果最佳BV值趨向于水平朝向或垂直朝向,則評估大的方形搜索范圍(諸如SxS搜索范圍,其中S為CTBsize3Y)或大的矩形搜索范圍(諸如2SxS搜索范圍,其中S為CTBslzeY)中的候選BV值沒有意義。相反,編碼器可使用仍舊包括可能的候選BV值的較小搜索范圍,其中較小BV搜索范圍是水平定向(例如,具有維度2S X 1/4S或2S x 3/4S)或垂直定向(例如,具有維度1/4S X 2S或3/4S X 2S)的。在大多數(shù)場景中,編碼器在BV估計期間檢查更少的BV值,但仍舊能找到最適當?shù)腂V值。
[0236]具有水平偏置(或水平定向)的BV搜索范圍包括具有比垂直BV分量值的范圍更大的水平BV分量的候選BV值。相反,具有垂直偏置(或垂直定向)的BV搜索范圍包括具有比水平BV分量值的范圍更大的垂直BV分量的候選BV值。
[0237]BV搜索范圍也可經(jīng)受其它約束。例如,BV搜索范圍可經(jīng)受以下約束:當前塊的任何BV值參考位于當前CTB和/或當前CTB左側(cè)的CTB內(nèi)的區(qū)域。即,BV搜索范圍適合放入當前CTB或其左側(cè)的CTB內(nèi)?;蛘?,作為另一示例,BV搜索范圍可經(jīng)受以下約束:當前塊的任何BV值參考位于當前CTB和/或當前CTB上方的CTB內(nèi)的區(qū)域內(nèi)。即,BV搜索范圍適合放入當前CTB或其上方的CTB內(nèi)。奶搜索范圍也可被約束為適合放入當前圖片內(nèi)。在一些實現(xiàn)中,BV搜索范圍被進一步約束為適合放入當前切片(slice)和/或當前小塊(tile)內(nèi)。
[0238]除了在BV搜索范圍的遠邊界(遠離當前塊)處的約束外,BV搜索范圍還可在其近邊界(靠近當前塊)處被約束。例如,在一些實現(xiàn)中,對于具有大小2Nx2N的CU,PU分區(qū)可具有大小NxN和2NxN或Nx2N,其中每個PU具有其自己的BV,或某種其它分區(qū)大小。然而,PU的BV不被允許參考同一 CU內(nèi)的其它PU區(qū)域。對BV搜索范圍的這一約束相對于允許PU級重疊在某種程度上降低了性能,但是允許每個PU具有其自己的BV并允許每個CU內(nèi)的PU被并行地重構(gòu),這可促進高效解碼。
[0239]替換地,如果在CB和相應(yīng)幀內(nèi)預(yù)測區(qū)域之間的重疊被允許,則編碼器可執(zhí)行重疊處理。在此情況下,具有水平偏置或垂直偏置的BV搜索范圍可延伸到當前CU中。
[0240]圖21b示出具有水平偏置(水平定向)的第一替換搜索范圍(2181)。搜索范圍(2181)具有最多2S X 1/4S的維度。搜索范圍(2181)可被截斷以適合放入當前CTB及其左側(cè)的CTB內(nèi),如在搜索范圍(2181)的交叉陰影和陰影部分中所示。或者,搜索范圍(2181)可被進一步約束為不包括當前CTB內(nèi)的任何部分(在圖21b被示出為搜索范圍(2181)的陰影部分)。
[0241]圖21c示出具有水平偏置的第二替換搜索范圍(2182)。搜索范圍(2182)具有最多2S X 3/4S的維度。搜索范圍(2182)可被截斷以適合放入當前CTB及其左側(cè)的CTB內(nèi),如在搜索范圍(2182)的交叉陰影和陰影部分中所示?;蛘撸阉鞣秶?2182)可被進一步約束為不包括當前CTB內(nèi)的任何部分(在圖21 c被示出為搜索范圍(2182)的陰影部分)。
[0242]圖21b示出具有垂直偏置(垂直定向)的第三替換搜索范圍(2183)。搜索范圍(2183)具有最多1/4S X 2S的維度。搜索范圍(2183)可被截斷以適合放入當前CTB及其上方的CTB內(nèi),如在搜索范圍(2183)的交叉陰影和陰影部分中所示?;蛘?,搜索范圍(2183)可被進一步約束為不包括當前CTB內(nèi)的任何部分(在圖21d中被示出為搜索范圍(2183)的陰影部分)。
[0243]圖21e示出具有垂直偏置的第四替換搜索范圍(2184)。搜索范圍(2184)具有最多3/4S X 2S的維度。搜索范圍(2184)可被截斷以適合放入當前CTB及其上方的CTB內(nèi),如在搜索范圍(2184)的交叉陰影和陰影部分中所示。或者,搜索范圍(2184)可被進一步約束為不包括當前CTB內(nèi)的任何部分(在圖21 d中被示出為搜索范圍(2184)的陰影部分)。
[0244]在BV估計期間,視頻編碼器或圖像編碼器可執(zhí)行包括如下的BV估計的編碼。
[0245]編碼器確定圖片的當前塊的BV。該BV指示到圖片內(nèi)的一區(qū)域的位移。當前塊是具有大小S的當前CTB。作為確定BV的一部分,編碼器檢查該區(qū)域在具有水平偏置或垂直偏置的BV搜索范圍內(nèi)的約束。編碼器使用BV來執(zhí)行對于當前塊的幀內(nèi)BC預(yù)測。編碼器還對BV進行編碼。例如,編碼器執(zhí)行BC預(yù)測并編碼BV,如在本申請中別處所述。
[0246]更一般地,編碼器使用幀內(nèi)BC預(yù)測來編碼圖片的數(shù)據(jù)。編碼包括使用具有水平或垂直偏置的BV搜索范圍來執(zhí)行BV估計操作。編碼器輸出該圖片的經(jīng)編碼的數(shù)據(jù)。
[0247]BV搜索范圍可具有水平偏置,其具有維度2S X 1/4S或2S x 3/4S?;蛘撸话愕氐?,水平偏置的BV搜索范圍具有在S和2S之間(包括S和2S)的寬度,并具有在1/4S和3/4S之間的高度(包括1/4S和3/4S)?;蛘?,BV搜索范圍可具有垂直偏置,其具有維度1/4S x 2S或3/4S X 2S?;蛘撸话愕氐?,垂直偏置的BV搜索范圍具有在S和2S之間(包括S和2S)的高度,并具有在1/4S和3/4S之間的寬度(包括1/4S和3/4S)。
[0248]編碼器可從多個可用BV搜索范圍中選擇BV搜索范圍。例如,編碼器從具有水平偏置的多個搜索范圍(諸如2S X 1/4S和2S X 3/4S搜索范圍)中選擇?;蛘撸幋a器從具有垂直偏置的多個搜索范圍(諸如1/4S X 2S和3/4S X 2S搜索范圍)中選擇?;蛘?,編碼器從各自具有水平偏置或垂直偏置的多個搜索范圍中選擇。
[0249]編碼器可至少部分基于一個或多個先前塊的BV值來選擇BV搜索范圍。例如,(一個或多個)先前塊在當前圖片中。或者,(一個或多個)先前塊在一個或多個先前圖片中?;蛘?,先前塊在當前圖片中并且在一個或多個先前圖片中。通過考慮(一個或多個)先前塊的(一個或多個)BV值,編碼器可標識BV值中的趨勢(例如,大多數(shù)BV值具有強水平BV分量但是具有小垂直BV分量或沒有垂直BV分量)并選擇適當?shù)腂V搜索范圍。BV搜索范圍的選擇也可取決于其它因素(例如,用戶設(shè)置)。
[0250](—個或多個)先前塊的(一個或多個)BV值可被跟蹤,例如使用將(一個或多個)BV值組織為直方圖的數(shù)據(jù)結(jié)構(gòu),其中不同類別(或“槽”)對應(yīng)于不同BV值范圍并且每個類別/槽存儲一計數(shù)器。從而,直方圖數(shù)據(jù)結(jié)構(gòu)可提供關(guān)于不同BV值的使用頻率的統(tǒng)計數(shù)據(jù)?;蛘?,可按某一其他方式來跟蹤(一個或多個)BV值。例如,編碼器跟蹤當前圖片的塊的BV值,隨后評估當前塊周圍的鄰域中的先前塊的BV值來確定要使用哪個BV搜索范圍。
[0251]使用具有水平或垂直偏置的較小BV搜索范圍與使用較大的SxS或2SxS搜索范圍相比可能略微低效(在速率失真性能方面)。對于許多編碼場景,BV估計的計算復(fù)雜度的減少使這種罰分有意義。
[0252]圖22示出用于采用幀內(nèi)BC預(yù)測模式的編碼的技術(shù)(2200),其中該幀內(nèi)BC預(yù)測模式受制于針對BV值的選擇的一個或多個約束。編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執(zhí)行該技術(shù)(2200)。
[0253]作為開始,編碼器確定(2210)圖片的當前塊的BV。當前塊可以是CB、PB或其他塊。該BV指示到圖片內(nèi)的一區(qū)域的位移。在確定BV時,編碼器檢查一個或多個約束。
[0254]根據(jù)一個可能的約束,編碼器檢查用于幀內(nèi)BC預(yù)測的樣本值的范圍。編碼器可檢查候選幀內(nèi)預(yù)測區(qū)域是否位于當前CTB和一個或多個其它CTB(例如,當前CTB左側(cè)的CTB)所限定的范圍內(nèi)。例如,當BV具有第一分量BV[0]和第二分量BV[1],當前塊具有位置(XQ,yQ)處的左上位置,并且每一個CTB具有寬度CTBwidth和高度CTBheight時,如果BV[0]> = -((xo%CTBwidth)+CTBwidth)且BV[ I ]> =-(yo%CTBheight),則滿足約束。編碼器可類似地檢查在以下搜索范圍內(nèi)的BV[0]和BV[1]的值的上限:8¥[0]〈((7^^_-111-(別%(7^^沾))且^[1]〈(CTBheight-n-(yO%CTBheight))。替換地,該搜索范圍包括更多或更少的CTB,或者該搜索范圍以某種其它方式來定義。
[0255]根據(jù)另一可能約束,編碼器將搜索限制于當前片和小塊(S卩,當前塊和區(qū)域是圖片的不大于I個片和圖片的不大于I個小塊的一部分)。編碼器可檢查當前塊的左上位置、候選幀內(nèi)預(yù)測區(qū)域的左上位置以及候選幀內(nèi)預(yù)測區(qū)域的右下位置是否是單個片和單個小塊的一部分。例如,如果(xo,yo)、(xo+BV[0],yo+BV[ I])和(xo+BV[0]+m-l,yo+BV[I ]+n_l)是單個片和單個小塊的一部分,則滿足約束。
[0256]替代地,編碼器檢查其它和/或附加約束。
[0257]編碼器使用BV來執(zhí)行(2220)對于當前塊的幀內(nèi)BC預(yù)測。例如,編碼器對整個當前塊執(zhí)行幀內(nèi)BC預(yù)測?;蛘?,編碼器對與當前塊相關(guān)聯(lián)的多個塊(例如,對于逐TB為基礎(chǔ)的多個TB,其中TB與具有該BV的當前PB相關(guān)聯(lián))執(zhí)行幀內(nèi)BC預(yù)測。
[0258]編碼器對BV進行編碼(2230)。編碼器可為另一幀內(nèi)BC預(yù)測模式塊重復(fù)該技術(shù)(2200)。
[0259]對于幀內(nèi)BC預(yù)測,編碼器和解碼器使用重構(gòu)的樣本值。未重構(gòu)的樣本值可被呈現(xiàn)作為尚未被編碼和重構(gòu)的圖片的部分。為了避免將未重構(gòu)的樣本值用于幀內(nèi)BC預(yù)測,編碼器可設(shè)置針對可允許的BV值的約束,使得只有真實的、之前被重構(gòu)的樣本值被用于根據(jù)BV進行的幀內(nèi)BC預(yù)測。
[0260]在一些示例實現(xiàn)中,編碼器通過考慮當前塊和包含候選幀內(nèi)預(yù)測區(qū)域的右下位置的塊的Z-掃描次序來檢查BV值。更具體地,編碼器檢查包含位置(XQ+BV[0]+m-l,yQ+BV[l] +n-1)的塊的z-掃描次序是否小于包含(xq,yo)的塊的z-掃描次序。如果是,則包含幀內(nèi)預(yù)測區(qū)域的右下位置的塊已經(jīng)在先前被重構(gòu)(并且因此具有該幀內(nèi)預(yù)測區(qū)域的剩余部分)。奶還滿足條件V[0]+m彡O和BV[l]+n彡O中的至少一個,確保幀內(nèi)預(yù)測區(qū)域不覆蓋當前塊。
[0261]Z-掃描次序遵循分隔圖片的順序指定的塊排序。圖23示出用于當前塊(2330)和可能包括候選BV的幀內(nèi)預(yù)測區(qū)域的右下位置的塊的示例Z-掃描次序(2300)。當前塊(2330)可以是CB、PB或其他塊。Z-掃描次序通常被以在行中從左到右順序分派給塊,在從上到下的連續(xù)行中重復(fù)。當塊被拆分時,可以在被拆分的塊內(nèi)遞歸地分派Z-掃描次序。對于用于HEVC標準的編碼/解碼的實現(xiàn),Z-掃描次序通過CTB光柵掃描模式(在CTB行中從左到右,從上到下在連續(xù)CTB行中重復(fù))從CTB到CTB開始行進。如果CTB被拆分,z_掃描次序遵循在經(jīng)拆分的CTB內(nèi)的四叉樹的CB的光柵掃描模式。并且,如果CB被拆分(例如,拆成多個CB或拆成多個PB),z-掃描次序遵循在經(jīng)拆分的CB內(nèi)的塊的光柵掃描模式。
[0262]替代地,當幀內(nèi)BC預(yù)測可在逐TB的基礎(chǔ)上執(zhí)行時,編碼器和解碼器可檢查幀內(nèi)預(yù)測區(qū)域和當前塊(TB)之間的可能重疊,隨后使用檢查的結(jié)果來決定當前TB是否應(yīng)當被拆分成更小的TB來應(yīng)用幀內(nèi)BC預(yù)測操作。假設(shè)當前TB具有m χ η的大小,其中m和η可以彼此相等或可具有不同值。如果BV[0]>-m并且BV[l]>-n,則幀內(nèi)預(yù)測區(qū)域與當前的m χ η TB重疊,這會產(chǎn)生問題,除非該當前的m χ η TB被拆分成更小的TB來應(yīng)用幀內(nèi)BC預(yù)測操作。因此,如果BV[0]>-m并且BV[l]>-n,則編碼器和解碼器將當前TB拆分成更小的TB。對于更小的TB檢查同一條件(例如,遞歸地檢查),如果對于拆分后的更小的m和η值,還是BV[0]>-m且BV[1]>-n,則這些更小的TB可被進一步拆分。
[0263]例如,假設(shè)PB的BV是(-9,_5),并且當前TB是32x32的塊。編碼器和解碼器確定-9>-32且-5>-32,這表示幀內(nèi)預(yù)測區(qū)域(其左上角位移-9,-5)將與當前的32132了8重疊。編碼器和解碼器將該32x32TB拆分成四個16x16TB。對于每一個16x16TB,編碼器和解碼器確定-9>-16且-5>-16,這表示幀內(nèi)預(yù)測區(qū)域(其左上角位移-9,-5)將與當前的16116了8重疊。編碼器和解碼器繼續(xù)將每個16x16TB拆分成四個8x8TB。對于8x8TB,(-9,-5)的BV不是問題,因此8x8TB不被進一步執(zhí)行拆分。
[0264]在這一場景中,當TB由于BV值和TB的大小的緣故而被拆分時,編碼器可省略對于標志值的信令,該標志值原本會指示當前TB是否要拆分成更小的TB。編碼數(shù)據(jù)的比特流缺少指導(dǎo)解碼器將當前TB拆分成更小TB的標志值。替代地,解碼器可根據(jù)BV值和TB的大小來推導(dǎo)TB應(yīng)當被拆分。這可節(jié)省原先被花費在指示關(guān)于拆分TB的信息的比特。
[0265]作為BV估計的一部分,編碼器可使用若干方法中的任一方法。編碼器可使用全面搜索,從而評估搜索范圍中允許的每一候選BV值?;蛘?,編碼器可使用部分搜索,從而評估搜索范圍中允許的僅一些候選BV值。例如,編碼器可在當前塊的預(yù)測的BV值(例如,基于一個或多個相鄰塊的BV值來預(yù)測的)處開始部分搜索。在為部分搜索評估了在開始位置處的候選BV值后,編碼器可(例如,根據(jù)螺旋搜索模式或某一其他模式)評估在距開始位置遞增的距離處的一個或多個其他候選BV值。或者,編碼器可使用如在前節(jié)中描述的搜索圖案。在評估給定候選BV值時,編碼器可比較幀內(nèi)預(yù)測區(qū)域中的所有樣本值和當前塊?;蛘?,編碼器可評估樣本值的子集(即,值被評估的子樣本)。在比較幀內(nèi)預(yù)測區(qū)域和當前塊之間的樣本值以確定失真成本時,編碼器可計算均方差、差方和(“SSD”)、絕對差之和(“SAD”)或某一其他失真測量。編碼器還可確定與對候選BV值的編碼相關(guān)聯(lián)的比特率成本。
[0266]X1.替換和變型
[0267]在在此所述的許多示例中,在分開的組件或過程中實現(xiàn)幀內(nèi)BC預(yù)測和運動補償,并且在分開的組件或過程中實現(xiàn)BV估計和運動估計?;蛘?,幀內(nèi)BC預(yù)測可以被實現(xiàn)為運動補償?shù)奶囟ㄇ闆r,而BV估計可以被實現(xiàn)為運動估計的特定情況,所述情況中當前圖片被用作參考圖片。在這樣的實現(xiàn)中,BV值可以被信號通知為MV值,但用于(在當前圖片內(nèi))的幀內(nèi)BC預(yù)測,而不是圖片間預(yù)測。作為術(shù)語被用在此處時,“幀內(nèi)BC預(yù)測”指示在當前圖片內(nèi)的預(yù)測,無論該預(yù)測是使用圖片內(nèi)預(yù)測模塊、運動補償模塊、或某種其它模塊提供的。類似地,可以使用MV值或使用不同類型的參數(shù)或語法元素來表示BV值,并且可以使用圖片內(nèi)預(yù)測模塊、運動補償模塊、或某種其它模塊提供BV估計。
[0268]鑒于可應(yīng)用所公開的本發(fā)明的原理的許多可能的實施例,應(yīng)當認識到,所示實施例僅是本發(fā)明的優(yōu)選示例,并且不應(yīng)認為是限制本發(fā)明的范圍。相反,本發(fā)明的范圍由后續(xù)的權(quán)利要求來界定。因此我們要求作為我們的發(fā)明保護落入這些權(quán)利要求范圍和精神內(nèi)的所有內(nèi)容。
【主權(quán)項】
1.一種在實現(xiàn)圖像或視頻編碼器的計算設(shè)備中的方法,該方法包括: 編碼圖像或視頻以產(chǎn)生經(jīng)編碼的數(shù)據(jù),包括執(zhí)行當前塊的幀內(nèi)塊復(fù)制(“Be”)預(yù)測,所述當前塊為所述幀內(nèi)BC預(yù)測被非對稱分區(qū);以及 將所述經(jīng)編碼的數(shù)據(jù)作為比特流的一部分來輸出。2.如權(quán)利要求1所述的方法,其特征在于,所述編碼進一步包括針對另一塊執(zhí)行幀內(nèi)BC預(yù)測,所述另一塊為所述幀內(nèi)BC預(yù)測被對稱分區(qū),其中所述另一塊是2N X 2N±夬,且其中所述另一塊被分區(qū)為(I)兩個2N X N塊,(2)兩個N X 2N塊,或(3)四個N x Ni夬,每個N x N塊可被進一步分區(qū)為兩個Nx N/2塊、兩個N/2x N塊、或四個N/2x N/2塊。3.一種在實現(xiàn)圖像或視頻解碼器的計算設(shè)備中的方法,該方法包括: 將經(jīng)編碼的數(shù)據(jù)作為比特流的一部分來接收;以及 解碼所述經(jīng)編碼的數(shù)據(jù)以重構(gòu)圖像或視頻,包括執(zhí)行當前塊的幀內(nèi)塊復(fù)制(“BC”)預(yù)測,所述當前塊為所述幀內(nèi)BC預(yù)測被非對稱分區(qū)。4.如權(quán)利要求3所述的方法,其特征在于,所述解碼進一步包括針對另一塊執(zhí)行幀內(nèi)BC預(yù)測,所述另一塊為所述幀內(nèi)BC預(yù)測被對稱分區(qū),其中所述另一塊是2N X 2N±夬,且其中所述另一塊被分區(qū)為(I)兩個2N X N塊,(2)兩個N X 2N塊,或(3)四個N x Ni夬,每個N x N塊可被進一步分區(qū)為兩個Nx N/2塊、兩個N/2x N塊、或四個N/2x N/2塊。5.如權(quán)利要求1或3所述的方法,其特征在于,所述當前塊是2NX 2N塊,且其中所述當前塊被分區(qū)為(I)一2N X N/2塊和一N X 3N/2塊或(2) —2N x 3N/2塊和一2N x N/2塊。6.如權(quán)利要求1或3所述的方法,其特征在于,所述當前塊是2NX 2N塊,且其中所述當前塊被分區(qū)為(I)一N/2x 2N塊和一3N/2x 2N塊或(2) —3N/2x 2N塊和一N/2x 2N塊。7.如權(quán)利要求1-6中任一項所述的方法,其特征在于,所述當前塊是64x64塊、32x32塊、16x16塊或8x8塊。8.如權(quán)利要求1-7中的任一項所述方法,其特征在于,所述視頻是人造視頻。9.一個或多個存儲計算機可執(zhí)行指令的計算機可讀介質(zhì),所述計算機可執(zhí)行指令使得計算系統(tǒng)由此執(zhí)行一種方法,所述方法包括: 編碼圖像或視頻以產(chǎn)生經(jīng)編碼的數(shù)據(jù),包括計算當前圖片的當前塊的預(yù)測,其中計算所述預(yù)測使用從下到上方法來標識所述當前塊的分區(qū);以及將所述經(jīng)編碼的數(shù)據(jù)作為比特流的一部分來輸出。10.如權(quán)利要求9所述的一個或多個計算機可讀介質(zhì),其特征在于,所述預(yù)測是運動估計的一部分或是用于幀內(nèi)塊復(fù)制預(yù)測的塊向量估計的一部分。11.如權(quán)利要求9所述的一個或多個計算機可讀介質(zhì),其特征在于,所述當前塊的分區(qū)是具有不同維度的兩個分區(qū)。12.如權(quán)利要求9或10所述的一個或多個計算機可讀介質(zhì),其特征在于,所述當前塊是2N X 2N±夬,且其中所述從下到上方法包括: 檢查所述2N X 2N塊的每N X N塊的模式; 選擇所述2N X 2N塊的各個N X N塊的最佳模式; 高速緩存所述2N X 2N塊的各個N X N塊的向量值; 檢查所述2N X 2N塊的具有2N維度的模式,包括使用被高速緩存的向量值; 選擇所述2N X 2N塊的具有2N維度的最佳模式;以及 在所述2N X 2N塊的具有2N維度的所述最佳模式和所選擇的所述2N x 2N塊的各個N xN塊的最佳模式之間做出選擇。13.如權(quán)利要求9或10所述的一個或多個計算機可讀介質(zhì),其特征在于,所述當前塊是2N X 2N±夬,且其中所述從下到上方法包括: 檢查所述2N X 2N塊的每N X N塊的模式的子集; 高速緩存所述2N X 2N塊的各個N X N塊的向量值; 檢查所述2N X 2N塊的具有2N維度的模式的子集,包括使用被高速緩存的向量值; 選擇所述2N X 2N塊的具有2N維度的最佳模式;以及 在所述2N X 2N塊的具有2N維度的所述最佳模式和所述2N x 2N塊的各個N x N塊的最佳模式之間做出選擇。14.如權(quán)利要求13所述的一個或多個計算機可讀介質(zhì),其特征在于,每NX N塊的模式的所述子集是具有兩個N X N/2塊的模式,并且其中具有2N維度的模式的所述子集是具有2N X 2N塊的模式、具有兩個2N X N塊的模式、具有一2N x N/2塊和一2N x 3N/2塊的模式、以及具有一2N X 3N/2塊和一2N x N/2塊的模式。15.如權(quán)利要求13所述的一個或多個計算機可讀介質(zhì),其特征在于,每NX N塊的模式的所述子集是具有兩個N/2x N塊的模式,并且其中具有2N維度的模式的所述子集是具有2NX 2N塊的模式、具有兩個N X 2N塊的模式、具有一N/2x 2N塊和一3N/2x 2N塊的模式、以及具有一3N/2x 2N塊和一N/2x 2N塊的模式。
【文檔編號】H04N19/11GK105917648SQ201580004941
【公開日】2016年8月31日
【申請日】2015年1月12日
【發(fā)明人】L·朱, Y·吳, G·J·沙利文
【申請人】微軟技術(shù)許可有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
武宁县| 托里县| 汉沽区| 正宁县| 河东区| 木里| 夏邑县| 泾川县| 江城| 安乡县| 平原县| 叙永县| 彭山县| 太谷县| 轮台县| 泰兴市| 桦川县| 秦安县| 普格县| 余江县| 广灵县| 突泉县| 佳木斯市| 铜鼓县| 吴江市| 蒙山县| 法库县| 平乐县| 和政县| 吉林市| 平原县| 武义县| 伊川县| 海宁市| 虹口区| 大化| 永善县| 长宁县| 屏东市| 通州市| 浙江省|