遞歸塊分區(qū)的制作方法
【專利摘要】根據(jù)本公開的各個方面,提供了用于將圖像分為區(qū)域、將分區(qū)類型應用于每個區(qū)域、基于應用于每個區(qū)域的分區(qū)類型來為每個區(qū)域確定率失真代價、基于應用于每個區(qū)域的所述分區(qū)類型來為每個區(qū)域確定代碼化方案、并且基于為每個區(qū)域確定的率失真代價和代碼化方案來單獨地對每個區(qū)域進行編碼的系統(tǒng)和方法。
【專利說明】
遞歸塊分區(qū)
[0001] 相關(guān)申請的交叉引用
[0002] 本申請要求2013年12月30日提交的標題為"RECURSIVE BLOCK PARTITIONING"的 美國非臨時專利申請第No. 14/144,375號的優(yōu)先權(quán)并且是該案的延續(xù),其公開內(nèi)容以引用 的方式全部并入本文。
技術(shù)領(lǐng)域
[0003] 本描述涉及用于遞歸塊分區(qū)以及其在視頻壓縮中的熵編碼的各種基于計算機的 技術(shù)。
【背景技術(shù)】
[0004] -般而言,視頻編解碼能夠?qū)崿F(xiàn)數(shù)字視頻的的壓縮/解壓縮。通常,在視頻質(zhì)量、表 現(xiàn)視頻所需的數(shù)據(jù)量(即,比特率)、編碼/解碼算法的復雜性、和一些其它因素之間存在復 雜平衡。視頻編解碼器通常采用基于塊的編碼,其中,較大塊大小使代碼化方面的平均間接 成本降低,而較小塊大小可以允許在預測方面更靈活以減少殘差能量。當處理塊大小選擇 時,傳統(tǒng)視頻編解碼在維持相對簡單和簡潔的編解碼結(jié)構(gòu)的同時使率失真代價最佳化方面 有不足。近年來,使在平均間接成本與預測質(zhì)量之間的折衷最佳化的共同策略是針對給定 區(qū)域的共同策略,編碼器可以對所有允許的塊大小進行測試并且選擇使率失真代價最小化 的允許的塊大小。該共同策略明確地將選定的塊大小編碼為比特流。不幸的是,由于傳統(tǒng)編 碼,在所有塊大小上的這類大規(guī)模搜索導致高度復雜的視頻編解碼實施方式。進一步地,明 確地對塊大小信息進行代碼化充分地利用了空間相關(guān)性,這可能導致壓縮效率低。同樣,存 在對通過其實現(xiàn)視頻編解碼的過程最佳化和/或和/或改進需要。
【發(fā)明內(nèi)容】
[0005] 根據(jù)本公開的各個方面,提供了一種用于存儲指令的非暫時性計算機可讀存儲介 質(zhì),該指令在被執(zhí)行時使得至少一個處理器進行過程。所述指令可以包括被配置成將圖像 分為多個區(qū)域并且將多個分區(qū)類型應用于所述多個區(qū)域中的每個區(qū)域的指令。所述指令可 以包括被配置成基于應用于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型來為所述多 個區(qū)域中的每個區(qū)域確定率失真(例如,率失真代價)的指令。所述指令可以包括被配置成 基于應用于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型來為所述多個區(qū)域中的每個 區(qū)域確定代碼化方案的指令。所述指令可以包括被配置成基于為所述多個區(qū)域中的每個區(qū) 域確定的率失真代價和代碼化方案來單獨地對所述多個區(qū)域中的每個區(qū)域進行編碼的指 令。
[0006] 根據(jù)本公開的各個方面,提供了一種用于存儲指令的非暫時性計算機可讀存儲介 質(zhì),所述指令在被執(zhí)行時使得至少一個處理器執(zhí)行過程。所述指令可以包括被配置成將視 頻分為多個像素塊并且將多個分區(qū)類型應用于所述多個像素塊中的每個像素塊的指令。所 述指令可以包括被配置成對于應用于所述多個像素塊中的每個像素塊的所述多個分區(qū)類 型的第一分區(qū)類型,將第一分區(qū)類型的每個像素塊分為多個像素子塊,并且將所述多個分 區(qū)類型重新應用于所述多個像素子塊中的每個像素子塊的指令。所述指令可以包括被配置 成基于分別應用于并且重新應用于每個像素塊和每個像素子塊的所述多個分區(qū)類型來為 每個像素塊和每個像素子塊確定率失真代價的指令。所述指令可以包括被配置成基于分別 應用于并且重新應用于每個像素塊和每個像素子塊的所述多個分區(qū)類型來為每個像素塊 和每個像素子塊確定代碼化方案的指令。所述指令可以包括基于為每個像素塊和每個像素 子塊確定的率失真代價和代碼化方案來單獨地對每個像素塊和每個像素子塊進行編碼的 指令。
[0007] 根據(jù)本公開的各個方面,系統(tǒng)可以包括至少一個處理器和存儲器。系統(tǒng)可以包括 編碼器,該編碼器被配置成使得至少一個處理器將圖像分為多個區(qū)域并且將多個分區(qū)類型 應用于所述多個區(qū)域中的每個區(qū)域。編碼器可以被配置成使得至少一個處理器:對于應用 于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型中的至少一個分區(qū)類型,將該至少一個 分區(qū)類型的每個區(qū)域分為多個子區(qū)域,并且將所述多個分區(qū)類型重新應用于多個子區(qū)域中 的每個子區(qū)域。編碼器可以被配置成使至少一個處理器基于分別應用于并且重新應用于每 個區(qū)域和每個子區(qū)域的所述多個分區(qū)類型來為每個區(qū)域和每個子區(qū)域確定率失真代價。編 碼器可以被配置成使至少一個處理器基于分別應用于并且重新應用于每個區(qū)域和每個子 區(qū)域的多個分區(qū)類型來為每個區(qū)域和每個子區(qū)域確定編碼方案。編碼器可以被配置成使至 少一個處理器基于分別為每個區(qū)域和每個子區(qū)域確定的率失真代價和編碼方案來單獨地 對每個區(qū)域和每個子區(qū)域進行編碼。
[0008] 在附圖或以下描述中闡釋了一個或多個實施方式的細節(jié)。其它特征將通過描述和 附圖并且通過權(quán)利要求而變得顯而易見。
【附圖說明】
[0009] 圖1A是圖示出了根據(jù)本公開的各個方面的用于實施各種基于計算機的技術(shù)的示 例系統(tǒng)的框圖,該各種基于計算機的技術(shù)用于遞歸塊分區(qū)和其在視頻壓縮中的熵編碼。
[0010] 圖1B是圖示出了根據(jù)本公開的各個方面的與圖1A所示的部分框相關(guān)聯(lián)的示例組 件的框圖。
[0011] 圖2是圖示出了根據(jù)本公開的各個方面的示例編碼器的框圖。
[0012] 圖3是圖示出了根據(jù)本公開的各個方面的示例解碼器的另一框圖。
[0013]圖4是圖示出了根據(jù)本公開的各個方面的用于遞歸塊分區(qū)的示例技術(shù)的框圖。
[0014] 圖5是圖示出了根據(jù)本公開的各個方面的用于基于上下文的熵編碼的示例技術(shù)的 框圖。
[0015] 圖6A是圖示出了根據(jù)本公開的各個方面的用于在編碼器處產(chǎn)生表格的方法的過 程流程。
[0016] 圖6B至圖6C是根據(jù)本公開的各個方面的用于遞歸塊分區(qū)的示例方法的過程流程。
[0017] 圖7是圖示出了根據(jù)實施方式的概率表的示例的示意圖。
[0018] 圖8是圖示出了根據(jù)本公開的各個方面的用于遞歸塊分區(qū)的另一示例方法的過程 流程。
【具體實施方式】
[0019] 圖1A是圖示出了根據(jù)本公開的各個方面的用于實施各種技術(shù)的示例系統(tǒng)100的框 圖,該各種技術(shù)用于遞歸塊分區(qū)和其在視頻壓縮中的熵編碼。在一些實施方式中,可以將圖 像分為多個區(qū)域(例如,每個區(qū)域具有諸如64 X 64像素的n X n像素的大?。_M一步地,可以 通過率失真環(huán)路來對每個區(qū)域進行測試以發(fā)現(xiàn)最佳代碼化決策決策(包括:將圖像分為或 者分區(qū)為區(qū)域或者像素塊大小的方式、每塊的預測模式、應用于每個塊的變換類型等),并 且然后可以以光柵順序?qū)⒚總€區(qū)域代碼化或者編碼為比特流。在一些實施方式中,可以將 圖像分為多個區(qū)域,該多個區(qū)域具有諸如64X32像素的nXm像素的尺寸。
[0020] 率失真環(huán)路可以用于在視頻壓縮中提高視頻質(zhì)量,并且可以涉及將失真量(視頻 質(zhì)量損失)與用于對視頻進行編碼的數(shù)據(jù)量(數(shù)據(jù)率)進行比較并且確定該失真量。在一些 實施方式中,率失真環(huán)路可以用于改善編碼,其中,決策可以同時影響編碼視頻的文件大小 和質(zhì)量。
[0021] 在圖1A的示例中,系統(tǒng)100可以包括用于實施遞歸塊分區(qū)的計算機系統(tǒng)。在圖1A的 示例中,編碼器120可以包括:在正向通路上執(zhí)行各種功能以使用輸入視頻流來提供編碼比 特流或者壓縮比特流的一個或者多個階段。如本文進一步所描述的,可以將輸入視頻流的 圖像或者視頻幀分為多個區(qū)域,其中,可以通過率失真環(huán)路來對每個區(qū)域執(zhí)行測試或者評 估以發(fā)現(xiàn)最佳代碼化決策,并且然后可以以光柵順序?qū)⒚總€區(qū)域編碼為比特流。
[0022] 在圖1A的示例中,解碼器124可以包括:執(zhí)行各種功能以提供來自編碼比特流或者 壓縮比特流的輸出視頻流的一個或者多個階段。如本文進一步所描述的,可以向用于解碼 的解碼器提供編碼比特流或者壓縮比特流以提供輸出視頻流。在一些實施方式中,解碼器 124是編碼器120的補充,因此,解碼器124所使用的解碼過程是編碼器120所使用的編碼過 程的補充。下面結(jié)合例如圖2至圖5來描述與編碼器120和解碼器124的操作有關(guān)的更多細
[0023] 在圖1A的示例中,計算裝置104可以包括與視頻源114和網(wǎng)絡118通信的服務器或 者用戶裝置。在一些實施方式中,計算裝置104可以配置為:經(jīng)由視頻接口 130接收來自視頻 源114的視頻數(shù)據(jù)流、經(jīng)由編碼器120對視頻數(shù)據(jù)流執(zhí)行編碼、并且經(jīng)由網(wǎng)絡接口 134通過網(wǎng) 絡118傳送編碼視頻數(shù)據(jù)流。編碼器120可以使用基于視頻源114的塊分區(qū)和其熵編碼而被 最佳化的編碼過程。本文進一步描述了發(fā)生最佳化的(一個或多個)示例編碼過程。
[0024] 在一些實施方式中,計算裝置104可以配置為:經(jīng)由網(wǎng)絡接口 134接收來自網(wǎng)絡118 的視頻數(shù)據(jù)流、經(jīng)由解碼器124對視頻數(shù)據(jù)流進行解碼、并且經(jīng)由視頻接口 130將解碼視頻 數(shù)據(jù)流顯示在顯示裝置150上。解碼器124可以使用基于視頻數(shù)據(jù)流的塊分區(qū)和其熵編碼而 被最佳化的解碼過程。本文進一步描述了示例解碼過程。
[0025] 視頻源114可以是能夠提供、捕捉、和/或傳送包括靜態(tài)圖像、視頻幀等的視頻圖像 的任何裝置。例如,視頻源114可以包括:計算機服務器、膝上型計算機、筆記本計算機、平板 計算機、移動電話、個人數(shù)字助理、數(shù)碼相機、數(shù)碼攝像機、網(wǎng)絡攝像機、或者能夠提供、捕 捉、和/或傳送包括視頻圖像的圖像的任何其它裝置。在一些實施方式中,計算機裝置104可 以接收來自多個視頻源114的音頻和/或視頻,并且將源合并為單個視頻數(shù)據(jù)流。
[0026] 在一些實施方式中,計算裝置104可以處于網(wǎng)絡118的一個節(jié)點處,并且可以操作 為與網(wǎng)絡118的一個或者多個其它節(jié)點直接地并且間接地通信。例如,計算機裝置104可以 包括web服務器,該web服務器操作為經(jīng)由網(wǎng)絡118與一個或者多個客戶端裝置通信,使得計 算裝置104使用網(wǎng)絡118來向用戶傳送信息并且將該信息顯示在顯示裝置152上。雖然通常 參照計算裝置104來描述本文所述的概念和技術(shù),但是本公開的各個方面可以應用于能夠 實施編碼/解碼操作的任何裝置和/或計算節(jié)點。
[0027] 在一些實施方式中,系統(tǒng)100可以配置成為數(shù)據(jù)提供隱私保護,包括例如,個人可 識別信息的匿名化、數(shù)據(jù)的聚合、敏感信息的過濾、移除個人屬性的敏感信息的加密、散列 或者過濾、有關(guān)信息存儲的時間限制、和/或有關(guān)數(shù)據(jù)使用或者共享的限制。這樣,可以使數(shù) 據(jù)匿名化并且聚合,使得個人用戶數(shù)據(jù)不會被透露。
[0028] 在圖1A的示例中,視頻接口 130可以配置為:為與許多不同的音頻和視頻標準有關(guān) 的輸入提供硬件和/或軟件接口,該音頻和視頻標準定義為在計算裝置、外圍設備、和各種 類型的電氣設備之間的連接指定的物理特性和參數(shù)的類型。這些音頻和視頻標準可以定義 用于信號的成功傳輸?shù)哪M和數(shù)字視頻數(shù)據(jù)傳輸協(xié)議。例如,數(shù)字接口可以用于將視頻源 連接至用于傳輸諸如輸入視頻流的數(shù)字視頻內(nèi)容的諸如計算機的計算裝置。在某些情況 下,可以將視頻接口 130設計為接收來自視頻源114的輸入視頻流,并且將其提供給用于編 碼的編碼器120。
[0029] 在圖1A的示例中,網(wǎng)絡接口 134可以配置為管理傳送編碼器120所編碼的視頻數(shù)據(jù) 流。進一步地,網(wǎng)絡接口 134可以配置為管理接收解碼器124所解碼的視頻數(shù)據(jù)流。網(wǎng)絡接口 134可以配置為接收來自該至少一個處理器110的指令以配置用于傳送和接收視頻數(shù)據(jù)流 的網(wǎng)絡參數(shù)和網(wǎng)絡協(xié)議。
[0030]網(wǎng)絡118可以包括各種配置并且使用各種協(xié)議,包括:互聯(lián)網(wǎng)、萬維網(wǎng)、內(nèi)聯(lián)網(wǎng)、虛 擬專用網(wǎng)、本地以太網(wǎng)、使用一個或者多個公司專有的通信協(xié)議的專用網(wǎng)絡、蜂窩和無線網(wǎng) 絡(例如,Wi-Fi )、即時通信、超文本傳輸協(xié)議("HTTP")、簡易郵件傳輸協(xié)議("SMTP")、以及 上述事項的各種組合。進一步地,系統(tǒng)100可以是經(jīng)由網(wǎng)絡118通信的相連計算機的較大系 統(tǒng)的一部分。
[0031 ]雖然如上面所看到的那樣在傳送或者接收信息時獲得某些優(yōu)點,但是本文所描述 的系統(tǒng)和方法的其它方面并不限于信息傳輸?shù)娜魏翁囟ǚ绞健@?,在一些實施方式中,?以經(jīng)由諸如光盤或者便攜式驅(qū)動的介質(zhì)傳送信息。在其它實施方式中,可以以非電子格式 傳送信息和/或?qū)⒃撔畔⑹謩虞斎氲较到y(tǒng)中。
[0032] 在圖1A的示例中,系統(tǒng)100可以包括用于實施遞歸塊分區(qū)的計算機系統(tǒng),該遞歸塊 分區(qū)可以與計算裝置104相關(guān)聯(lián),該計算裝置104可以配置為專用機器,該專用機器設計為 實施用于遞歸塊分區(qū)和其在視頻壓縮中的熵編碼的各種基于計算機的技術(shù),如本文所描 述。從這個意義上講,計算裝置104可以包括任何(一個或多個)標準元件和/或(一個或多 個)組件,包括至少一個處理器110、至少一個存儲器112(例如,非暫時性計算機可讀存儲介 質(zhì))、至少一個數(shù)據(jù)庫140、電源、(一個或多個)外圍設備、以及在圖1A中可能未被特別示出 的各種其它計算元件和/或組件。進一步地,系統(tǒng)100可以與顯示裝置150(例如,監(jiān)視器或者 其它顯示器)相關(guān)聯(lián),該顯示裝置150可以用于提供用戶界面(UI)152,諸如,例如,圖形用戶 界面(GUI)。1]1 152可以用于接收來自利用系統(tǒng)100的用戶的輸入。
[0033] 這樣,可以添加或者包括系統(tǒng)100的可以用于實施系統(tǒng)100的各種其它元件和/或 組件。進一步地,在各種實施方式中,計算裝置104可以包括任何類型的裝置,諸如,計算機 服務器、膝上型計算機、筆記本計算機、平板計算機、移動電話、個人數(shù)字助理、或者能夠處 理(例如,編碼、解碼等)和/或傳送包括靜態(tài)圖像和視頻圖像的圖像的任何其它裝置。
[0034] 雖然圖1A在單個功能框內(nèi)功能地圖示出了至少一個處理器110和至少一個存儲器 112,但是應該理解,該至少一個處理器110和該至少一個存儲器112可以包括:可以或可以 不被存儲在相同的物理殼體內(nèi)的多個處理器和存儲器。這樣,對(一個或多個)處理器、(一 個或多個)計算機、和/或(一個或多個)存儲器的引用可以包括對可以并行操作或者可以不 并行操作的一些處理器、計算機、和/或存儲器的引用。
[0035] 在圖1A的示例中,系統(tǒng)100可以包括計算裝置104和記錄在計算機可讀介質(zhì)112并 且可由至少一個處理器110執(zhí)行的指令。進一步地,在一個實施方式中,系統(tǒng)100可以包括用 于向用戶提供輸出的顯示裝置150,并且顯示裝置150可以包括用于接收來自用戶的輸入的 UI 152〇
[0036] 在圖1A的示例中,應該理解,通過使用或多或少地表示離散功能的各種功能框或 者模塊來圖示出系統(tǒng)1〇〇。然而,為了清晰和方便起見提供了這種圖示,且因此應該了解,各 種功能可能與所述(一個或多個)框或者(一個或多個)模塊重疊或者被結(jié)合在所述框或者 模塊內(nèi),并且/或者可以由在圖1A的示例中未被具體圖示出的一個或者多個框或者模塊實 施。這樣,應該了解,為了清晰和方便起見,即使沒有明確地圖示出這種傳統(tǒng)元件,也可以包 括可能被認為對圖1A的系統(tǒng)100有用的傳統(tǒng)功能。
[0037] 圖1B是圖示出了根據(jù)本公開的各個方面的與圖1A所示的部分框相關(guān)聯(lián)的示例組 件的框圖。具體地,圖1B示出了與圖1A所示的存儲器112和編碼器120相關(guān)聯(lián)的示例組件。
[0038] 在圖1B的示例中,存儲器112可以包括概率表160,其中,每個概率表160與一個或 者多個概率值(例如,0價、0~2、0似丄~4)相關(guān)聯(lián)和/或用該一個或者多個概率值來填充。在 各種實施方式中,存儲器112可以包括諸如概率表160的任何數(shù)量的概率表以及任何數(shù)量的 相關(guān)聯(lián)概率值。在一些實施方式中,概率值中的一個或者多個概率值可以與一個或者多個 其它概率表(未示出)有關(guān)??梢詾樵诎ㄒ唤M視頻幀的視頻序列中的每個幀修改/更新在 概率表160中所包括的一個或者多個概率值。概率值CN1、CN2、CN3、CN4可以各自與對在視頻 幀內(nèi)的塊進行編碼結(jié)合使用的特定分區(qū)類型的概率相關(guān)聯(lián)。
[0039] 進一步地,在圖1B的示例中,編碼器120可以包括一個或者多個組件(例如,處理組 件),該一個或者多個組件包括視頻序列檢測器162、概率計算器164、和分區(qū)模塊165。在一 些實施方式中,可以將視頻序列的每個視頻幀分為小區(qū)域網(wǎng)格,其中,可以通過率失真最佳 化環(huán)路來測試每個區(qū)域以發(fā)現(xiàn)最佳代碼化決策,并且然后以光柵順序?qū)⒃撁總€區(qū)域代碼化 為比特流。
[0040] 視頻序列檢測器162可以配置為識別在視頻幀序列中的第一幀。例如,視頻序列檢 測器162可以配置為檢測新的視頻序列、重新設置/重新開始概率計算、并且更新/修改概率 表,包括例如,將概率表重新設置為默認在視頻序列的開始(第一幀)。在一些實施方式中, 視頻序列檢測器162可以配置為當檢測到視頻序列的第一幀時,改變概率分布數(shù)和/或值。
[0041] 概率計算器164可以配置為:基于在視頻幀序列中的第一幀(或者隨后的幀)的編 碼來將與分區(qū)類型相關(guān)聯(lián)的概率值(例如,概率值CN1)修改/更新為更新的概率值。在一些 實施方式中,可以對每個概率表160的概率值進行修改/更新,以使針對在視頻序列中的每 個幀的代碼化決策最佳化。
[0042] 分區(qū)模塊165可以配置為基于存儲在存儲器112中的概率表160來對在視頻序列中 的第一幀進行編碼。在一些實施方式中,概率表160可以包括與一個或者多個分區(qū)類型相關(guān) 聯(lián)的一個或者多個概率值。進一步地,分區(qū)模塊165可以配置為基于在概率表160中包括的 更新的概率值來對在視頻幀序列中的第二幀進行編碼。在一些實施方式中,可以遞歸地對 每個幀進行編碼以確定最佳代碼化決策,最佳代碼化決策包括將每個幀分區(qū)為較小塊大小 的方式、每塊的預測模式、應用于每個塊的變換模式等。
[0043] 分區(qū)模塊165可以包括一個或者多個組件,該一個或者多個組件包括鄰居塊分析 器166和分區(qū)選擇器167。在一些實施方式中,鄰居塊分析器166可以配置為識別包括左邊鄰 居塊和上方鄰居塊的鄰居塊(和/或不同的鄰居),并且分區(qū)選擇器167可以配置為將各種分 區(qū)類型應用于一個或者多個鄰居塊以進行進一步分析,所述分析包括在參照鄰居塊的分區(qū) 來識別當前塊的最佳分區(qū)。
[0044] 根據(jù)本公開的各個方面,編碼器120可以配置為利用基于上下文的熵編碼方法來 分析鄰居塊,并且選擇分區(qū)類型來使代碼化決策最佳化。例如,用于分區(qū)類型代碼化的概率 模型可以以下列因素中的一個或者多個為條件:當前塊大?。ɡ?,64 X64、32X 32、16 X 16、8\8、4\4、2乂2等)、其上方鄰居塊的分區(qū)類型、其左邊鄰居塊的分區(qū)類型。每個條件概 率模型可以是后向自適應的,并且可以以每幀為基礎而被更新。該基于上下文的熵代碼化 技術(shù)可以用于有效地利用空間相關(guān)性,其中,分區(qū)類型傾向于與連續(xù)區(qū)域保持一致,并且可 以用于實現(xiàn)各種性能增益。
[0045] 與超過所有可能的塊大小的傳統(tǒng)大規(guī)模搜索方法不同,本公開的基于上下文的熵 代碼化技術(shù)配置為使用用于最佳率失真搜索以及最佳編碼和解碼過程的遞歸塊分區(qū)。在率 失真最佳化階段期間,可以通過多個分區(qū)類型(諸如,例如,垂直(vert)分區(qū)、水平(horz)分 區(qū)、無(none)分區(qū)、以及拆分(split)分區(qū)為更小的區(qū)域/塊)來對每個區(qū)域/塊進行測試。進 一步地,然后通過各種可能的預測模式、濾波類型、變換尺寸等來獨立地對結(jié)果子塊中的每 個結(jié)果子塊進行測試,以發(fā)現(xiàn)其(局部)最佳代碼化決策。本文更詳細地描述了本公開的這 些和各種其它方面。
[0046] 圖2是圖示出了根據(jù)本公開的各個方面的示例編碼器200的框圖??梢灾T如通過提 供在例如存儲器112(在圖1A中示出)的存儲器中存儲的計算機軟件程序來在計算裝置、月艮 務器、傳送站等中實施編碼器200。編碼器200可以包括在正向通路208(例如,如流虛線所 示)上執(zhí)行各種功能以通過使用輸入視頻流210來提供編碼或者壓縮比特流230的一個或者 多個階段。在各種實施方式中,正向通路208可以包括:作為對編碼器200的輸入的輸入視頻 流210,其后跟隨內(nèi)部/中間預測階段214(例如,可以從初始視頻信號中減去預測信號以生 成用于下個階段的殘差)、變換階段218、量化階段222、和熵編碼階段226。
[0047]編碼器200可以包括重構(gòu)通路232(例如,如連接虛線所示)以重構(gòu)用于未來塊的編 碼的幀。在一些實施方式中,這可以確保編碼器200和解碼器300(例如,如圖3所示)使用相 同的參考來對編碼器200所提供的編碼或者壓縮比特流230進行解碼。如圖2所示,編碼器 200可以包括在重構(gòu)通路232中執(zhí)行各種功能的一個或者多個附加階段。在各種實施方式 中,重構(gòu)通路232可以包括解量化階段234、反變換階段238、重構(gòu)階段242、和環(huán)路濾波階段 246。在其它實施方式中,編碼器200的結(jié)構(gòu)變化可以用于對輸入視頻流210進行編碼。
[0048] 當將輸入視頻流210發(fā)送至用于編碼的編碼器200時,可以以塊為單元處理輸入視 頻流210的每個幀。在一些實施方式中,在內(nèi)部/中間預測階段214,可以使用幀內(nèi)預測(其可 以被稱為內(nèi)部預測)或者幀間預測(其可以被稱為其間預測)來對每個塊進行編碼。在任何 情況下,可以形成(例如,定義)預測塊。在內(nèi)部預測的情況下,預測塊可以由在已經(jīng)被先前 編碼和重構(gòu)的當前幀中的采樣形成。在其間預測的情況下,預測塊可以由在一個或者多個 先前構(gòu)建的參考幀中的采樣形成。在內(nèi)部/其間預測階段214,可以從當前塊中減去預測塊 以提供殘差塊(其可以被稱為殘差)。變換階段218可以配置為將殘差轉(zhuǎn)變?yōu)樵诶珙l域中 的系數(shù)。
[0049] 進一步地,在一些實施方式中,量化階段222可以配置為使用量化器值或者量化級 別來將變換系數(shù)轉(zhuǎn)換為離散量子值,該離散量子值可以被稱為量化變換系數(shù)。然后可以通 過熵編碼階段226來對量化變換系數(shù)進行熵編碼。然后將熵編碼系數(shù)連同用于對可以包括 例如所使用的預測類型、運動矢量和量化器值的塊進行解碼的其它信息一起輸出至編碼或 者壓縮比特流230。在各種實施方式中,可以使用各種技術(shù)(諸如例如變長代碼化(VLC)、算 術(shù)代碼化)來使壓縮比特流230格式化。壓縮比特流230也可以被稱為編碼視頻流或者編碼 輸出視頻流。熵編碼階段226可以配置為生成一個或者多個概率表,并且生成一個或者多個 概率值以用本文所描述的方式來填充概率表。
[0050] 在一些實施方式中,視頻編解碼可以采用基于塊的代碼化去,其中,將每個幀分區(qū) 為塊網(wǎng)格,然后使用跟隨有空間變換和量化的幀間/幀內(nèi)預測來獨立地對每個塊進行代碼 化。大塊大小可以導致在對預測模式、參考幀索引、運動矢量等進行代碼化方面的平均間接 成本更低,而小塊大小可以允許在預測方面的更多靈活性,從而減少殘差能量。本公開的各 個方面可以配置為提供方法和設備來有效地處理塊大小選擇以在維持相對簡單和簡潔的 編解碼結(jié)構(gòu)的同時使總體率失真代價權(quán)衡最佳化。進一步地,在編碼器200中設置互補的熵 代碼化技術(shù),以對每個選定塊大小進行代碼化/解碼,從而充分地利用用于對性能增益進行 代碼化的空間相關(guān)性,本文進一步對此進行了描述。
[0051] 使在平均間接成本與預測質(zhì)量之間的折衷最佳化或者平衡的一個策略為針對給 定區(qū)域的策略,編碼器可以對每個允許的塊大小進行測試并且選擇使率失真代價最小化的 至少一個塊大小。進一步地,編碼器然后可以明確地將選定的塊大小編碼為比特流。超過每 個塊大小的這種大規(guī)模搜索可能導致高度復雜的視頻編解碼實施方式。此外,明確地對塊 大小信息進行代碼化充分地利用了空間相關(guān)性,這可能導致壓縮效率低。
[0052] 然而,本公開的各個方面使用遞歸塊分區(qū),這在維持相對簡單和簡潔的編解碼實 施方式的同時允許在使塊大小最佳化方面的更多靈活性。在一些實施方式中,遞歸塊分區(qū) 將實際塊大小的代碼化轉(zhuǎn)化為結(jié)合基于上下文的熵代碼化的分區(qū)類型的代碼化(本文進一 步描述),從而提供改進的性能增益。根據(jù)允許的塊大小的靈活性可以通過維持簡單和簡潔 的編解碼結(jié)構(gòu)來提高壓縮效率。進一步地,在一些實施方式中,分區(qū)類型的基于上下文的熵 代碼化可以提供進一步對性能增益進行代碼化。本公開的各個方面可以應用于研究并且開 發(fā)視頻編解碼和/或各種視頻壓縮技術(shù)(例如,編解碼設計)。更進一步地,本公開的各個方 面可以應用于和/或適用于與視頻流和/或靜態(tài)圖片代碼化有關(guān)的技術(shù)。
[0053]圖3是圖示出了根據(jù)本公開的各個方面的示例編碼器300的框圖。在一些實施方式 中,解碼器300可以與編碼器200的重構(gòu)通路232相似。解碼器300可以包括執(zhí)行各種功能以 提供來自編碼或者壓縮比特流310的輸出視頻流342的一個或者多個階段。解碼器300可以 包括熵解碼階段314、解量化階段318、反變換階段322、重構(gòu)階段326、環(huán)路濾波階段330、內(nèi) 部/其間預測階段334、和解塊濾波階段338。在其它實施方式中,解碼器300的結(jié)構(gòu)變化可以 用于對壓縮比特流310進行解碼。
[0054] 當向用于解碼的解碼器300提供壓縮比特流310時,可以由熵解碼階段314(例如, 使用VLC、算術(shù)代碼化等)來對在壓縮比特流310內(nèi)的數(shù)據(jù)元素進行解碼以產(chǎn)生一組量化變 換系數(shù)。解量化階段318可以配置為對量化變換系數(shù)進行解量化,并且反變換階段322可以 配置為對解量化變換系數(shù)進行反變換以提供導數(shù)殘差,該導數(shù)殘差可以與由編碼器200的 反變換階段238生成的導數(shù)殘差相同。在一些實施方式中,使用從壓縮比特流310解碼的頭 信息,解碼器300可以配置為使用內(nèi)部/其間預測階段334來生成與由內(nèi)部/其間預測階段 214在編碼器200中生成的預測塊相同的預測塊。在重構(gòu)階段326,可以將預測塊添加至導數(shù) 殘差以生成重構(gòu)塊??梢詫h(huán)路濾波階段330應用于重構(gòu)塊以降低塊效應。在一些實施方式 中,可以將各種其它濾波應用于重構(gòu)塊。例如,可以將解塊濾波階段338應用于重構(gòu)塊以降 低導致例如輸出視頻流342的輸出的塊失真。可以將輸出視頻流342稱為解碼視頻流或者解 碼輸出視頻流。
[0055] 圖4是圖示出了根據(jù)本公開的各個方面的用于遞歸塊分區(qū)400的示例技術(shù)的框圖。 在圖4中,在一些實施方式中,可以將圖像410(例如,視頻幀)分為諸如區(qū)域網(wǎng)格的多個區(qū)域 414,其中,每個區(qū)域418至少可以比圖像本身?。ɡ?,每個區(qū)域的尺寸為64X64像素)。在 這種情況下,可以利用率失真環(huán)路來對每個區(qū)域418進行測試以評估和發(fā)現(xiàn)最佳代碼化決 策(包括:將圖像410分為或者分區(qū)為更小塊大小的方式、每塊的預測模式、應用于每個塊的 變換類型等),并且然后以光柵順序?qū)⒃撁總€區(qū)域418代碼化為比特流。
[0056] 關(guān)于最佳代碼化方案,對于給定區(qū)域,編碼器可以配置為對一個、一些、或者全部 可能的分區(qū)(劃分)類型進行測試,其中,每個類型導致一組子塊,該一組子塊可以是互相排 斥的并且一起可以覆蓋整個區(qū)域。編碼器然后可以對在每個子塊上的包括預測模式、參考 源、濾波類型、變換類型和大小等的各種可能的代碼化模式進行測試,并且獲得使該子塊的 率失真代價最小化或者具有滿足閾值條件(例如,閾值)的率失真代價的一種可能的代碼化 模式。給定區(qū)域的每個分區(qū)類型現(xiàn)在可以與率失真代價值相關(guān)聯(lián),該率失真代價值可以被 計算為每個子塊的最小率失真代價的總和。因此,編碼器可以選取或者選擇提供最小總體 代價的分區(qū)類型。
[0057] 與超過所有可能的塊大小的傳統(tǒng)大規(guī)模搜索不同,本公開的各個方面可以配置為 進行用于率失真搜索以及編碼和解碼過程的遞歸塊分區(qū)方法,如本文所描述的。在各個實 施方式中,在率失真最優(yōu)化階段期間,可以通過多個分區(qū)類型426來對每個區(qū)域418進行測 試,所述多個分區(qū)類型426諸如例如包括無分區(qū)(none)分區(qū)類型430、水平(horz)分區(qū)類型 432、垂直(vert)分區(qū)類型434、和拆分分區(qū)類型436的四個分區(qū)類型中的至少一個,該至少 一個類型將每個區(qū)域438分為四個更小的區(qū)域(拆分)或者被稱為子塊的子區(qū)域438。如圖4 所示,然后可以通過一種或者多種可能的預測模式、濾波類型、變換尺寸等來獨立地對結(jié)果 子區(qū)域438進行測試,以發(fā)現(xiàn)其(局部)最佳代碼化決策。這指的是圖像410的遞歸分區(qū)。
[0058] 在一些實施方式中,分區(qū)操作可以應用于方形塊。例如,區(qū)域可以包括NXN的大 小,其中,N為偶數(shù)(例如,二的冪)。四個分區(qū)類型可以導致以下子塊大?。?br>[0059] 無分區(qū)(NONE)-〉一個 NX N子塊,
[0060] 拆分分區(qū)(SPLIT)-〉四個(N/2)X(N/2)子塊,
[0061 ] 垂直分區(qū)(VERT I CAL)->兩個(N/2) X N子塊,以及
[0062] 水平分區(qū)(HORIZONTAL)-〉兩個NX (N/2)子塊。
[0063] 在一些實施方式中,第一分區(qū)類型可以包括具有尺寸相似的四個子塊的拆分分區(qū) 類型436,第二分區(qū)類型可以包括具有兩個尺寸相似的、水平布置的兩個子塊的水平分區(qū)類 型432,第三分區(qū)類型可以包括具有尺寸相似的、垂直布置的兩個子塊的垂直分區(qū)類型434, 并且第四分區(qū)類型可以包括具有單個塊的無分區(qū)類型430。
[0064] 在一些實施方式中,可以認為包括無分區(qū)430、水平分區(qū)432和垂直分區(qū)434的分區(qū) 類型426是終端節(jié)點,即,其中無進一步分區(qū)可以應用于子塊內(nèi)部。然后可以認為拆分分區(qū) 類型436的子區(qū)域438是起始點,可以通過包括無分區(qū)430、水平分區(qū)432、垂直分區(qū)434和拆 分分區(qū)456的四個分區(qū)類型446中的每一個來對該起始點進行遞歸測試。在這種情況下,可 以將第一次劃分414的每個區(qū)域418分為在第二次劃分446中的多個子區(qū)域438,諸如四個區(qū) 域的網(wǎng)格??梢詾椴鸱址謪^(qū)類型的每次迭代重復該遞歸分區(qū)任意多次。在一些實施方式中, 該遞歸分區(qū)可以開始于64X64像素塊,每個下一次遞歸分區(qū)接下來是一系列32X32像素 塊、16 X 16像素塊、8 X 8像素塊、和4 X 4像素塊。在一些實施方式中,從4 X 4像素塊開始,遞 歸分區(qū)可以緊接下來至2X2像素塊。在其它實施方式中,遞歸分區(qū)可以從任何nXn像素塊 開始并且結(jié)束于任何nXn像素塊。應該理解,可以可選地迫使代碼化模式信息(諸如,例如, 參考幀索引、濾波類型等)被分配為超過某個塊大小級別。
[0065] 一旦選定最佳代碼化模式,編碼器200就可以配置為將該選定的最佳代碼化模式 寫入到比特流中。替代明確地對在給定區(qū)域內(nèi)的實際塊大小進行代碼化之外,該遞歸分區(qū) 方法以遞歸方式對分區(qū)類型進行代碼化。例如,該遞歸分區(qū)方法可以從64X64塊開始并且 寫入該分區(qū)類型。如果該類型為垂直分區(qū)、水平分區(qū)、或者無分區(qū),則可能已經(jīng)對子塊大小 進行了解析,因此無進一步分區(qū)信息被發(fā)送。如果該類型為拆分分區(qū)類型,則編碼器200可 以寫入另外四個分區(qū)類型,每個分區(qū)類型針對一個子塊。在一些實施方式中,編碼器200重 復發(fā)送分區(qū)類型信息,直到達到垂直分區(qū)/水平分區(qū)/無分區(qū)的分區(qū)類型,或者在一些情況 下,例如8X8以下塊大小。解碼器300可以配置為從64X64塊開始,讀取分區(qū)類型,并且相應 地解析子塊大小。
[0066] 進一步地,本公開的各個方面配置為對分區(qū)信息進行基于上下文的熵代碼化方 法。例如,用于分區(qū)類型代碼化的概率模型可以以下列三個因素為條件:當前塊大小(例如, 64乂64、32乂32、16乂16等)、其上方鄰居塊的分區(qū)類型、其左邊鄰居塊的分區(qū)類型,如參照 圖5所描述的。在一些實施方式中,這些條件概率模型可以配置為后向自適應,并且可以是 逐幀被更新。這種基于上下文的熵代碼化方法有效地利用了空間相關(guān)性,即,其中分區(qū)類型 傾向于與連續(xù)區(qū)域保持一致,并且該基于上下文的熵代碼化方法可以實現(xiàn)某些性能增益。
[0067] 在一些實施方式中,可以將自然視頻信號視為(模型化為)平穩(wěn)隨機過程。塊可以 處理與一個或者多個附近塊的某些相似之處,包括像素值、運動信息等。例如,如果幀包括 在明亮的背景前面水平移動的深色對象,則包括對象邊緣的塊(區(qū)域)可以傾向于被垂直分 區(qū),使得可以單獨地對分別包括對象和背景的子塊進行代碼化,這在使每個子塊的代碼化 模式最優(yōu)化方面允許更多的靈活性。
[0068] 在圖4的實施方式中,本公開的系統(tǒng)和方法可以配置為:將圖像410(例如,視頻幀) 分為多個區(qū)域414、將多個分區(qū)類型426應用于多個區(qū)域中的每個區(qū)域418、并且基于應用于 每個區(qū)域418的多個分區(qū)類型426來為每個區(qū)域418確定率失真代價。進一步地,本公開的系 統(tǒng)和方法可以配置為:基于應用于每個區(qū)域418的多個分區(qū)類型426來為每個區(qū)域418確定 代碼化方案、并且基于為每個區(qū)域418確定的率失真代價和代碼化方案來單獨地對每個區(qū) 域418進行編碼。在一些實施方式中,該分區(qū)方法可以以重復方式遞歸地應用于諸如拆分分 區(qū)類型436的分區(qū)類型426中的至少一個的一個或者多個子區(qū)域438以實現(xiàn)最佳率失真代 價。率失真環(huán)路可以用于在視頻壓縮中提高視頻質(zhì)量,并且可以涉及將失真量(視頻質(zhì)量損 失)與用于對視頻進行編碼的數(shù)據(jù)量(數(shù)據(jù)率)進行比較并且確定該失真量。在一些示例中, 率失真環(huán)路可以用于改善編碼,其中,決策可以同時影響編碼視頻的文件大小和質(zhì)量。
[0069] 圖5是圖示出了根據(jù)本公開的各個方面的用于分區(qū)類型的基于上下文的熵編碼的 示例技術(shù)的框圖。在一些實施方式中,如本文所描述,分區(qū)類型的采樣空間可以包括至少4 個條目,包括無分區(qū)(NONE)、水平分區(qū)(H0RZ)、垂直分區(qū)(VERT)、和拆分(SPLIT)為4個子塊。 大小范圍從例如8 X 8到64 X 64的每個方塊可以被分配至少一個分區(qū)類型。可以通過使用采 用在采樣空間上的概率分布的熵代碼化來對該符號進行代碼化以實現(xiàn)壓縮。
[0070] 例如,如圖5所示,塊A和塊B可以表示先前代碼化的塊,并且塊C可以表示待編碼的 塊。參考自然視頻/圖像信號的空間一致性,如果A被垂直地分區(qū)(即,VERT或者SPLIT),則C 也更有可能被垂直地分區(qū)。同樣地,如果B被水平地分區(qū)(即,H0RZ或者SPLIT),則C也非常可 能被水平地分區(qū)。因此,本公開的各個方面提供了一種由熵代碼器使用的依賴于在圖5中的 其上方(即,A)代碼化鄰居和左邊代碼化鄰居(即,B)的概率分布。進一步地,本公開的各個 方面識別有關(guān)塊C的塊大小的概率模型(分布)的潛在依賴,例如,假定上方/左邊塊分區(qū)類 型相同,64 X 64塊可能比8 X 8塊更有可能選擇SPLIT。
[0071] 因此,該工作采用概率模型陣列來捕捉上述依賴,如圖5所圖示。進一步地,該工作 根據(jù)鄰居上方/左邊(A和B)分區(qū)類型和當前塊大小來計算索引數(shù)、從陣列中檢索對應概率 模型、并且使用所檢索的模型用于C分區(qū)類型的熵代碼化。
[0072] 以下為用于分區(qū)類型的基于上下文的熵編碼的采樣代碼:
[0073]檢索上下文信息的源代碼: static INLINE intpartition_plane_context(MACROBLOCKD *xd, r3LOCK_SIZE_TYPE sb_type) { intbsl = mi_vvidth_log2(sb_type}, bs = 1 ?bsl;
[0074] int above = 0, left = 0, i; intboffset = ini_width_log2(BLOCK_SIZE_SB64X64) - bsl; assert(mi_width_log2(sb_type) == mi_height_log2(sb_t.ype)); assert(bsl>= 0); assert(hotTset>= 0); for (i = 0; i<bs; i++) above j= (xd->above_seg_context[i] & (1 ?bofTsel)); for (i = 0; i<bs; i++)
[0075] left |= (xd->left_seg_conlext[i] & (1 ?boffset)); above = (above >0); left = (left > 0); return (left 2 + above) + bsl * PARTITION_PLOFFSET; }
[0076] 在一些實施方式中,參考遞歸塊分區(qū)方法和其在視頻壓縮中的熵代碼化,如參照 圖4至圖5所描述的,可允許的塊大小可以包括各個n Xn像素塊,諸如8X8、16X16、32X32、 64 X 64,并且如本文所描述,其中,可以將每個塊大小代碼化為4個分區(qū)類型{NONE,H0RZ, VERT,SPLIT}〇
[0077] 在這一點上,在一些實施方式中,可能的結(jié)果可以是方形塊或者矩形塊??梢蕴^ 任意一個或者多個分區(qū)類型。例如,對于32X32塊,最佳過程或者技術(shù)可以在編碼為一個32 X32塊、或者兩個32X16子塊兩者中作出選擇,并且因此跳過其它分區(qū)類型的測試以使最 佳化過程加速。
[0078] 在一些實施方式中,參照圖5,可以經(jīng)由以下規(guī)則將分區(qū)類型A和B的組合轉(zhuǎn)化為范 圍從〇到3的整數(shù):
[0079] 如果A的分區(qū)類型為VERT或者SPLIT,則a = 2;否則,a = 0;
[0080] 如果B的分區(qū)類型為H0RZ或者SPLIT,則b = l;否則,b = 0;
[0081 ] 合并這些兩個因素產(chǎn)生c = (a+b)。
[0082]根據(jù)塊大小進一步使該數(shù)c偏移:
[0083] 如果塊大小為8X8,則偏移量=0;
[0084] 如果塊大小為16 X 16,則偏移量=4;
[0085] 如果塊大小為32X32,則偏移量=8;
[0086] 如果塊大小為64 X 64,則偏移量=12;
[0087] 將可以用于從陣列中檢索概率模型的總體索引計算為(c+偏移量)。
[0088] 如本文所描述,基于上下文的熵代碼化可以應用于分區(qū)信息,其中,用于分區(qū)類型 代碼化的概率模型以因素中的一個或者多個為條件,所述因素包括當前塊大小(例如,64X 64、32\32、16\16、8父8等)、其上方塊的分區(qū)類型、和其左邊塊的分區(qū)類型??梢哉J為這些 條件概率模型是后向自適應的,并且可以以每幀為基礎來更新這些條件概率模型。該基于 上下文的熵代碼化技術(shù)可以用于有效地利用空間相關(guān)性,其中,在一些示例中,分區(qū)類型傾 向于與連續(xù)區(qū)域保持一致,并且可以用于實現(xiàn)某些性能增益。
[0089] 例如,在一些實施方式中,參照圖5,可以認為概率分布依賴于其上方(a)代碼化鄰 居(例如,A)和其左邊(1)代碼化鄰居(例如,B)的分區(qū)類型。進一步地,在一些示例中,假定 上方/左邊塊分區(qū)類型相同,例如64 X 64塊的塊C的塊大小的概率模型(分布)的潛在依賴可 能比8X8塊更有可能選擇SPLIT。因此,概率模型陣列可以用于捕捉這些潛在依賴,如圖5所 不。
[0090] 在一些實施方式中,可以生成一個或者多個概率表以基于其上方鄰居塊和左邊鄰 居塊的分區(qū)類型來為當前塊識別概率分布。這樣,本公開的各個方面基于鄰居塊(例如,上 方鄰居塊和左邊鄰居塊)的分區(qū)類型來為當前塊的基于上下文的熵代碼化提供構(gòu)建表(例 如,概率表(也可以被稱為概率分布表))。
[0091] 在一些實施方式中,默認概率表可以用于在視頻序列(其可以被稱為視頻幀序列) 中的第一幀,并且概率表更新可以應用于基于第一幀的分區(qū)類型的概率分布的下一幀(其 可以被稱為后續(xù)幀)。在一些示例中,圖1A和/或圖1B的編碼器120可以用于生成概率分布 表。
[0092] 圖1B是圖示出了與圖1A所示的計算裝置104相關(guān)聯(lián)的示例組件的示意圖。如圖1B 所示,存儲器112可以配置為存儲概率表160,并且編碼器120可以配置為基于存儲在概率表 160中的概率值來以最佳方式對在視頻幀中的每個塊進行編碼。
[0093] 例如,參照圖1B和圖4的示例,編碼器120可以配置為:將圖像(例如,視頻幀)分為 多個區(qū)域,將多個分區(qū)類型(例如,垂直、水平、無、拆分)應用于多個區(qū)域中的每個區(qū)域,并 且基于應用于每個區(qū)域的多個分區(qū)類型來為每個區(qū)域確定最佳率失真代價。進一步地,編 碼器120可以配置為:基于應用于每個區(qū)域的多個分區(qū)類型來為每個區(qū)域確定最佳代碼化 方案,并且基于為每個區(qū)域確定的最佳率失真代價和最佳代碼化方案來單獨地對每個區(qū)域 進行編碼。
[0094] 在一些實施方式中,可以以重復方式將該分區(qū)技術(shù)遞歸地應用于每個分區(qū)類型的 每個區(qū)域和子區(qū)域以實現(xiàn)最佳率失真代價。率失真環(huán)路可以用于在視頻壓縮中提高視頻質(zhì) 量,并且可以涉及將失真量(視頻質(zhì)量損失)與用于對視頻進行編碼的數(shù)據(jù)量(數(shù)據(jù)率)進行 比較并且確定該失真量。在一些示例中,率失真環(huán)路可以用于改善編碼,其中,決策可以同 時影響編碼視頻的文件大小和質(zhì)量。
[0095] 圖6A是示出了根據(jù)本公開的各個方面的用于在編碼器120處產(chǎn)生概率表的方法 600的流程圖。編碼器120可以配置為將一個或者多個概率表160存儲在存儲器112中,包括 將默認概率表存儲在計算裝置104的存儲器112中。
[0096] 在圖6A的示例中,圖示出了操作602至608作為以相繼順序發(fā)生的離散操作。然而, 應該了解,在其它實施方式中,操作602至操作608中的兩個或者多個可以以部分或者完全 重疊或者并行的方式、或者以嵌套的或者循環(huán)的方式發(fā)生,或者可以以與所示的順序不同 的順序發(fā)生。進一步地,也可以在一些示例實施方式中包括在圖6A的示例中可能未被具體 圖示出的附加操作,而在其它實施方式中可以省略操作602至操作608中的一個或者多個。 在一些實施方式中,方法600可以包括用于在圖1A的系統(tǒng)100中的遞歸塊分區(qū)的計算機實施 的方法的過程流程。進一步地,如本文所描述,操作602至608可以提供簡化的操作過程流 程,該簡化的操作過程流程由計算裝置104制定以提供參照圖1A所描述的特征和功能。 [0097]在圖6A的示例中,在602處,方法600可以包括識別在視頻幀序列中的第一幀。例 如,編碼器120可以配置為檢測新的視頻序列、重新設置/重新開始概率計算、并且更新/修 改概率表,包括例如,將概率表重新設置為默認在視頻序列的開始(第一幀)。在一些實施方 式中,編碼器120可以配置為:當檢測到視頻序列的第一幀時,改變概率分布數(shù)和/或值。 [0098]在604處,方法600可以包括:基于存儲在存儲器中的概率表來對在視頻幀序列中 的第一幀進行編碼,其中,概率表包括與分區(qū)類型相關(guān)聯(lián)的概率值。例如,編碼器120可以配 置為基于存儲在存儲器中的概率表中的至少一個概率表來對在視頻幀序列中的第一幀進 行編碼。在一些實施方式中,每個概率表可以包括與一個或者多個分區(qū)類型相關(guān)聯(lián)的一個 或者多個概率值。在一些實施方式中,可以遞歸地對每個幀進行編碼以確定最佳代碼化決 策,包括以將每個幀分區(qū)為較小塊大小的方式、每塊的預測模式、應用于每個塊的變換類型 等。
[0099]在606處,方法600可以包括:基于在視頻幀序列中的第一幀的編碼來將與分區(qū)類 型相關(guān)聯(lián)的概率值修改為更新的概率值。例如,編碼器120可以配置為基于在視頻幀序列中 的第一幀的編碼來將與分區(qū)類型相關(guān)聯(lián)的概率值修改/更新為更新的概率值。在一些實施 方式中,可以對每個概率表的概率值進行修改/更新,以使針對在視頻序列中的每個幀的代 碼化決策最佳化。
[0100] 在608處,方法600可以包括:基于在概率表中所包括的更新的概率值來對在視頻 幀序列中的第二幀進行編碼。例如,編碼器120可以配置為基于在概率表中包括的修改的/ 更新的概率值來對在視頻幀序列中的第二幀進行編碼。如本文所描述,存儲器112可以包括 概率表160,其中,概率表160包括一個或者多個概率值。
[0101] 根據(jù)本公開的各個方面,編碼器120可以配置為利用基于上下文的熵代碼化方法 來分析鄰居塊,并且選擇使代碼化決策最佳化分區(qū)類型。例如,用于分區(qū)類型代碼化的概率 模型可以以下列因素中的一個或者多個為條件:當前塊大?。ɡ纾?4 X64、32X 32、16 X 16、8乂8、4乂4、2乂2等)、上方鄰居塊的分區(qū)類型、以及左邊鄰居塊的分區(qū)類型。每個條件概 率模型可以是后向自適應的,并且可以以每幀為基礎而被更新。該基于上下文的熵代碼化 技術(shù)可以用于有效地利用空間相關(guān)性,其中,分區(qū)類型傾向于與連續(xù)區(qū)域保持一致,并且可 以用于實現(xiàn)各種性能增益。
[0102] 參照圖1A的示例,解碼器124可以包括執(zhí)行各種功能以提供從編碼比特流或者壓 縮比特流解碼的輸出視頻流的一個或者多個階段。如本文所描述,根據(jù)本公開的各個方面, 可以向用于解碼的解碼器提供編碼比特流以提供解碼輸出視頻流。在一些實施方式中,解 碼器124是編碼器120的補充,因此,解碼器124所使用的解碼過程是編碼器120所使用的編 碼過程的補充,其中,解碼器124配置為執(zhí)行與編碼器120所執(zhí)行的編碼過程相反的解碼過 程。
[01 03]圖7是示出了根據(jù)實施方式的概率表700的示例的示意圖。如圖7所示,概率表700 包括兩個不同的塊部分:塊部分B和塊部分A。每個塊部分與正在被處理的當前塊大小相關(guān) 聯(lián)。例如,概率表700的塊部分A用于做出與具有塊大小A至塊大小B (例如,64 X 64至32 X 32) 的塊的拆分有關(guān)的決策。塊大小A可以被稱為正在被處理的當前塊大小,并且塊大小B可以 被稱為目標塊大小。概率表700的塊部分B用于做出與具有塊大小B至例如塊大小C(例如,32 X 32至16X16)的塊的拆分有關(guān)的決策。盡管未示出,也可以包括附加塊部分和/或大小(包 括非方形大?。?。
[0104]在該示例中,塊部分A包括四行三列的概率值。四行由字符P至S描繪,并且列由數(shù) 字1至3描繪。因此,在第二行和第二列上包括概率值Q2。
[0105] 行P至S中的每一行與不同類型的鄰居分析相關(guān)聯(lián)。作為具體示例,行P可以包括用 于分析均未拆分的上方鄰居和左邊鄰居(對于正在被分析的即時塊)的概率值,并且行Q可 以包括用于分析被拆分的上方鄰居和未被拆分的左邊鄰居的概率值。因此,編碼器(例如, 圖1A所示的編碼器120)可以配置為在當前塊的分析期間選擇概率表700的一行概率值,該 當前塊與塊鄰居(例如,相鄰)的塊的拆分(或者非拆分)相一致。
[0106] 概率值可以表示可以由熵代碼器使用的值。在編碼期間,熵代碼器可以配置為基 于在概率表700中所包括的概率值來分配比特率。可以由熵代碼器將更少的比特數(shù)分配給 概率值所表示的相對高的結(jié)果(例如,相對高的可能結(jié)果、更有可能的結(jié)果),并且可以由熵 代碼器將更高的比特數(shù)分配給概率值所表示的不太可能的結(jié)果。
[0107] 在概率表700中的每列與不同類型的分區(qū)相關(guān)聯(lián)。例如,概率值P1 (在行P中)可以 表示無分區(qū)的概率,概率值P2可以表示垂直拆分的概率,并且概率值P3可以表示水平拆分 的概率。如果沒有滿足針對與概率值P1至P3相關(guān)聯(lián)的拆分的條件,則分區(qū)分析的結(jié)果為不 同的拆分(例如,完整的四通拆分)。在一些實施方式中,概率表700可以包括具有100 %概率 并且如果與概率值的前三列(例如,P1至P3)相關(guān)聯(lián)的條件沒有得到滿足則與最終結(jié)果相關(guān) 聯(lián)的第四列。
[0108] 在一些實施方式中,概率值可以具有例如從0到255的范圍。較高的概率值可以是 與該概率值相關(guān)聯(lián)的結(jié)果的概率。例如,概率值P2可以表示垂直拆分的概率,并且按照從0 到255的比例,概率值P2可以為245。因此,基于概率值P2的垂直拆分的概率非常高。
[0109]在一些實施方式中,可以在對幀序列中的幀進行處理期間對在概率表700中所包 括的概率值進行更新。例如,概率表700可以是默認概率表,該默認概率表可以用于在視頻 序列或者幀序列中的初始幀(例如,第一幀)。根據(jù)在初始幀中的塊拆分結(jié)果,可以對在概率 表700中包括的概率值進行修改以對后續(xù)幀(例如,第二)進行編碼。作為具體示例,概率值 P2可以表示與在塊大小A至塊大小B的塊內(nèi)的垂直拆分相關(guān)聯(lián)的概率。如果在從塊大小A到 塊大小B的第一幀內(nèi)的垂直拆分分布較高,則可以增加概率值P2以處理第二幀的塊。另一方 面,如果在從塊大小A到塊大小B的第一幀內(nèi)的垂直拆分分布較低,貝lj可以減小概率值P2以 處理第二幀的塊。
[0110] 在一些實施方式中,可以存儲對在概率表700中包括的概率值中的一個或者多個 的變化作為與在概率表700中包括的默認概率值的差異(殘差)??梢源鎯υ摬町悾⑶以摬?異可以與正在被處理的塊或者幀相關(guān)聯(lián)。因此,在解碼期間,解碼器(例如,圖1A所示的解碼 器124)可以結(jié)合默認概率值使用該差異。
[0111] 可以利用對每個幀(或者塊組)的處理來執(zhí)行概率值的修改。在一些實施方式中, 默認概率值可以初始地用于在視頻幀序列中的第一幀。例如,默認概率值可以用于I幀,并 且可以為在I幀之后被處理的每個后續(xù)P幀或者B幀修改(根據(jù)默認概率值)概率值。當達到 新的I幀(與視頻幀(例如P幀、B幀)序列相關(guān)聯(lián))時,可以重新建立默認概率值,并且該默認 概率值可以再次用于與新的I幀相關(guān)聯(lián)的幀。
[0112] 以下為具體示例概率表(其可以是默認概率表),可以生成該具體示例概率表以基 于當前塊的上方鄰居塊和左邊鄰居塊的分區(qū)類型來為當前塊識別概率分布。要注意,正在 被處理的塊大小和目標塊大?。ɡ?,//8 X 8->4 X 4)是上文提到的表的塊部分(其各自包 括4行和3列)。在該示例中,概率值的范圍在0和255之間。在一些實施方式中,范圍能夠是不 同的。
[0113] //8X8-MX4
[0114] {199,122,141},//上方/左邊均未拆分
[0115] {147,63,159},//上方被拆分,左邊未拆分
[0116] {148,133,118 },//左邊被拆分,上方未被拆分
[0117] {121,104,114},//上方/左邊均被拆分
[0118] //16X16->8X8
[0119] {174,73,87},//上方/左邊均未拆分
[0120] {92,41,83},//上方被拆分,左邊未被拆分
[0121] {82,99,50},//左邊被拆分,上方未被拆分
[0122] {53,39,39},//上方/左邊均被拆分
[0123] //32X32->16X16
[0124] {177,58,59},//上方/左邊均未拆分
[0125] {68,26,63},//上方被拆分,左邊未被拆分
[0126] {52,79,25},//左邊被拆分,上方未被拆分
[0127] {17,14,12},//上方/左邊均被拆分
[0128] //64X64->32X32
[0129] {222,34,30},//上方/左邊均未拆分
[0130] {72,16,44},//上方被拆分,左邊未被拆分
[0131] {58,32,12},//左邊被拆分,上方未被拆分
[0132] {10,7,6},//上方/左邊均被拆分
[0133] 在該示例中,概率可以分布在0至255的值之間,其中,更高數(shù)可以指的是對基于當 前塊的當前塊大小(例如,64\64、32乂32、16乂16等)、其上方鄰居塊的分區(qū)類型、和其左邊 鄰居塊的分區(qū)類型的當前塊的可能分區(qū)類型的更高概率。在各個示例中,可以將更少的比 特數(shù)分配給可能的候選者,并且可以將更多的比特數(shù)分配給不太可能的候選者。進一步地, 在一些示例中,可以將生成的表應用于整個幀。
[0134] 根據(jù)本公開的各個方面,遞歸塊分區(qū)連同基于上下文的熵代碼化在維持有效的視 頻編解碼實施方式的同時允許在使塊大小最佳化時的靈活性提高。在各個示例中,該遞歸 塊分區(qū)技術(shù)可以用于將實際塊大小的代碼化轉(zhuǎn)化為塊分區(qū)類型的代碼化,并且結(jié)合基于上 下文的熵代碼化,該技術(shù)提供了改進的代碼化性能增益。
[0135] 圖6B至圖6C是根據(jù)本公開的各個方面的用于遞歸塊分區(qū)的示例方法的過程流程。 具體地,圖6B是示出了根據(jù)本公開的各個方面的用于遞歸塊分區(qū)的示例方法620的過程流 程。
[0136] 在圖6B的示例中,示出了操作622至628作為以相繼順序發(fā)生的離散操作。然而,應 該了解,在其它實施方式中,操作622至操作628中的兩個或者多個可以以部分或者完全重 疊或者并行的方式、或者以嵌套的或者循環(huán)的方式發(fā)生,或者可以以與所示的順序不同的 順序發(fā)生。進一步地,也可以在一些示例實施方式中包括在圖6B的示例中可能未被具體示 出的附加操作,而在其它實施方式中可以省略操作622至操作628中的一個或者多個。在一 些實施方式中,方法620可以包括用于在圖1的系統(tǒng)100中的遞歸塊分區(qū)的計算機實施的方 法的過程流程。進一步地,如本文所描述,操作622至628可以提供一種簡化的操作過程流 程,該簡化的操作過程流程由計算裝置104制定以提供參照圖1A所描述的特征和功能。
[0137] 在圖6B的示例中,在622處,方法620可以包括將圖像分為多個區(qū)域。在624處,方法 620可以包括將多個分區(qū)類型應用于多個區(qū)域中的每個區(qū)域。在626處,方法620可以包括: 基于應用于多個區(qū)域中的每個區(qū)域的多個分區(qū)類型來為多個區(qū)域中的每個區(qū)域確定率失 真(例如,率失真代價)。
[0138] 在628處,方法620可以包括:基于應用于多個區(qū)域中的每個區(qū)域的多個分區(qū)類型 來為多個區(qū)域中的每個區(qū)域確定代碼化方案。在630處,方法620可以包括:基于為多個區(qū)域 中的每個區(qū)域確定的率失真代價和代碼化方案來單獨地對多個區(qū)域中的每個區(qū)域進行編 碼。
[0139] 在一些實施方式中,第一分區(qū)類型可以包括具有尺寸相似的四個子塊的拆分分區(qū) 類型,第二分區(qū)類型可以包括具有兩個尺寸相似的、水平布置的兩個子塊的水平分區(qū)類型, 第三分區(qū)類型可以包括具有尺寸相似的、垂直布置的兩個子塊的垂直分區(qū)類型,并且第四 分區(qū)類型可以包括具有單個塊的無分區(qū)類型。
[0140] 圖6C是示出了根據(jù)本公開的各個方面的用于遞歸塊分區(qū)的另一示例方法640的過 程流程。
[0141] 在圖6C的示例中,圖示出了操作642至648作為以相繼順序發(fā)生的離散操作。然而, 應該了解,在其它實施方式中,操作642至操作648中的兩個或者多個可以以部分或者完全 重疊或者并行的方式、或者以嵌套的或者循環(huán)的方式發(fā)生,或者可以以與所示的順序不同 的順序發(fā)生。進一步地,也可以在一些示例實施方式中包括在圖6C的示例中可能未被具體 示出的附加操作,而在其它實施方式中可以省略操作642至操作648中的一個或者多個。在 一些實施方式中,方法640可以包括用于在圖1的系統(tǒng)100中的遞歸塊分區(qū)的計算機實施的 方法的過程流程。進一步地,如本文所描述,操作642至648可以提供簡化的操作過程流程, 該簡化的操作過程流程由計算裝置104制定以提供參照圖1A所描述的特征和功能。更進一 步地,操作642至648可以是圖6B的操作622至630的延續(xù),以提供簡化的操作過程流程,該簡 化的操作過程流程由計算裝置104制定以提供參照圖1A所描述的特征和功能。
[0142] 在圖6B的示例中,在642處,方法640可以包括:對于應用于多個區(qū)域中的每個區(qū)域 的多個分區(qū)類型的第一分區(qū)類型,將多個區(qū)域中的每個區(qū)域分為多個子區(qū)域。在644處,方 法640可以包括將多個分區(qū)類型重新應用于多個子區(qū)域中的每個子區(qū)域。
[0143] 在646處,方法640可以包括:基于應用于多個子區(qū)域中的每個子區(qū)域的多個分區(qū) 類型來為多個子區(qū)域中的每個子區(qū)域確定率失真代價。在648處,方法640可以包括:基于應 用于多個子區(qū)域中的每個子區(qū)域的多個分區(qū)類型來為多個子區(qū)域中的每個子區(qū)域確定代 碼化方案。
[0144] 在一些實施方式中,第一分區(qū)類型可以包括具有尺寸相似的四個子塊的拆分分區(qū) 類型,第二分區(qū)類型可以包括具有尺寸相似的、水平布置的兩個子塊的水平分區(qū)類型,第三 分區(qū)類型可以包括具有尺寸相似的、垂直布置的兩個子塊的垂直分區(qū)類型,并且第四分區(qū) 類型可以包括具有單個塊的無分區(qū)類型。
[0145] 在一些實施方式中,基于為多個區(qū)域中的每個區(qū)域確定的率失真代價和代碼化方 案來單獨地對多個區(qū)域中的每個區(qū)域進行編碼可以包括:基于為多個子區(qū)域中的每個子區(qū) 域確定的率失真代價和代碼化方案來單獨地對多個子區(qū)域中的每個子區(qū)域進行編碼。
[0146] 在一些實施方式中,為多個區(qū)域中的每個區(qū)域確定率失真代價可以包括:基于應 用于多個區(qū)域中的每個區(qū)域的多個分區(qū)類型來為多個區(qū)域中的每個區(qū)域評估多個率失真 代價,以及為多個區(qū)域中的每個區(qū)域確定最佳率失真代價,該最佳率失真代價選自為多個 區(qū)域中的每個區(qū)域評估的多個率失真代價。
[0147] 在一些實施方式中,為多個區(qū)域中的每個區(qū)域確定編碼方案可以包括:基于應用 于多個區(qū)域中的每個區(qū)域的多個分區(qū)類型來為多個區(qū)域中的每個區(qū)域評估多個代碼化方 案,以及為多個區(qū)域中的每個區(qū)域確定最佳代碼化方案,該最佳率編碼方案選自為多個區(qū) 域中的每個區(qū)域評估的多個代碼化方案。
[0148] 圖8是圖示出了根據(jù)本公開的各個方面的用于遞歸塊分區(qū)的另一示例方法800的 過程流程。
[0149] 在圖8的示例中,示出了操作802至808作為以相繼順序發(fā)生的離散操作。然而,應 該了解,在其它實施方式中,操作802至操作808中的兩個或者多個可以以部分或者完全重 疊或者并行的方式、或者以嵌套的或者循環(huán)的方式發(fā)生,或者可以以與所示的順序不同的 順序發(fā)生。進一步地,也可以在一些示例實施方式中包括在圖8的示例中可能未被具體示出 的附加操作,而在其它實施方式中,可以省略操作802至操作808中的一個或者多個。進一步 地,在一些實施方式中,方法800可以包括用于在圖1的系統(tǒng)100中的遞歸塊分區(qū)的計算機實 施的方法的過程流程。進一步地,如本文所描述,操作802至808可以提供簡化的操作過程流 程,該簡化的操作過程流程由計算裝置104制定以提供參照圖1A所描述的特征和功能。
[0150] 在圖8的示例中,在802處,方法800可以包括將視頻幀分為多個像素塊。在804處, 方法800可以包括將多個分區(qū)類型應用于多個像素塊中的每個像素塊。
[0151] 在806處,方法800可以包括:對于應用于多個像素塊中的每個像素塊的多個分區(qū) 類型的第一分區(qū)類型,將第一分區(qū)類型的每個像素塊分為多個像素子塊,并且將多個分區(qū) 類型重新應用于多個像素子塊中的每個像素子塊。在808處,方法800可以包括:基于分別應 用于并且重新應用于每個像素塊和每個像素子塊的多個分區(qū)類型來為每個像素塊和每個 像素子塊確定率失真代價。
[0152] 在810處,方法800可以包括:基于分別應用于并且重新應用于每個像素塊和每個 像素子塊的多個分區(qū)類型來為每個像素塊和每個像素子塊確定代碼化方案。在812處,方法 800可以包括:基于為每個像素塊和每個像素子塊確定的率失真代價和代碼化方案來單獨 地對每個像素塊和每個像素子塊進行編碼。
[0153] 可以用數(shù)字電子電路系統(tǒng),或者用計算機硬件、固件、軟件,或者用它們的組合來 實施本文所描述的各種技術(shù)的實施方式。實施方式可以實施為計算機程序產(chǎn)品,即,有形地 體現(xiàn)在信息載體中的計算機程序,例如在機器可讀存儲裝置中或者由數(shù)據(jù)處理設備(例如, 可編程處理器、計算機、或者多個計算機)執(zhí)行或者控制該數(shù)據(jù)處理設備的操作的的傳播信 號中??梢杂冒ň幾g式或者解釋型語言的任何形式的編程語言來編寫諸如上述計算機程 序的計算機程序,并且可以將該計算機程序部署為包括獨立程序或者模塊、組件、子例程或 者適合在計算環(huán)境中使用的其它單元的任何形式。可以將計算機程序部署為在一個計算機 上或者在位于一個站點處或者分布于多個站點之間并且通過通信網(wǎng)絡互相連接的多個計 算機上執(zhí)行。
[0154] 可以通過執(zhí)行通過操作輸入數(shù)據(jù)和生成輸出來執(zhí)行功能的計算機程序的一個或 者多個可編程處理器來執(zhí)行方法步驟。也可以通過專用邏輯電路系統(tǒng)(例如,F(xiàn)PGA(現(xiàn)場可 編程門陣列)或者ASIC(專用集成電路))來執(zhí)行方法步驟,并且設備也可以實施為專用邏輯 電路系統(tǒng)。
[0155] 適合執(zhí)行計算機程序的處理器作為示例包括通用微處理器、專用微處理器二者、 以及任何種類的數(shù)字計算機的任何一個或者多個處理器。一般而言,處理器將接收來自只 讀存儲器或者隨機存取存儲器或者兩者的指令和數(shù)據(jù)。計算機的元件可以包括:用于執(zhí)行 指令的至少一個處理器;以及用于存儲指令和數(shù)據(jù)的一個或者多個存儲裝置。一般而言,計 算機也可以包括用于存儲數(shù)據(jù)的一個或者多個大容量存儲裝置(例如,磁盤、磁光盤、或者 光盤),或者被可操作地耦合以接收來自該大容量存儲裝置的數(shù)據(jù)或者將數(shù)據(jù)傳輸?shù)皆摯?容量存儲裝置或者同時進行兩者。適合體現(xiàn)計算機程序指令和數(shù)據(jù)的信息載體包括所有形 式的非易失性存儲器,該所有形式的非易失性存儲器作為示例包括半導體存儲器裝置(例 如,EPROM、EEPR0M、和閃存裝置)、磁盤(例如,內(nèi)置硬盤或者可移動盤)、磁光盤、以及⑶-ROM 和DVD-ROM盤。處理器和存儲器可以由專用邏輯電路系統(tǒng)補充或者被合并到該專用邏輯電 路系統(tǒng)中。
[0156]為了提供用戶交互,可以在計算機上實施實施方式,該計算機具有:用于向用戶顯 示信息的顯示裝置,例如,CRT(陰極射線管)或者LCD(液晶顯示器)監(jiān)視器;用戶可以用來向 計算機提供輸入的鍵盤和指示裝置,例如,鼠標或者軌跡球。其它類型的裝置同樣可以用于 提供與用戶的交互;例如,提供給用戶的反饋可以是任何形式的感覺反饋,例如,視覺反饋、 聽覺反饋、或者觸覺反饋;并且可以以任何形式(包括聲音輸入、語音輸入、或者觸覺輸入) 來接收來自用戶的輸入。
[0157] 可以在計算系統(tǒng)中實施實施方式,該計算系統(tǒng)包括后端組件(例如,數(shù)據(jù)服務器), 或者包括中間件組件(例如,應用服務器),或者包括前端組件(例如,具有圖形用戶界面或 者web瀏覽器的客戶端計算機,用戶可以通過該圖形用戶界面或者該web瀏覽器來與實施方 式交互);或者包括該后端組件、該中間件組件或者該前端組件的任何組合。組件可以通過 任何形式或者介質(zhì)的數(shù)字數(shù)據(jù)通信(例如,通信網(wǎng)絡)來互連。諸如通信網(wǎng)絡的網(wǎng)絡的示例 可以包括局域網(wǎng)(LAN)和例如互聯(lián)網(wǎng)的廣域網(wǎng)(WAN)。
[0158] 雖然已經(jīng)如此處描述那樣圖示了所描述的實施方式的某些特征,但是本領(lǐng)域的技 術(shù)人員現(xiàn)在會想到許多修改、代替、改變及等同物。因此,要理解,隨附權(quán)利要求旨在涵蓋所 有這樣的修改和改變使其落入實施例的范圍內(nèi)。
【主權(quán)項】
1. 一種存儲指令的非暫時性計算機可讀存儲介質(zhì),所述指令在被執(zhí)行時使得至少一個 處理器執(zhí)行過程,所述指令包括被配置為進行如下操作的指令: 將圖像分為多個區(qū)域; 基于概率表將多個分區(qū)類型應用于所述多個區(qū)域中的每個區(qū)域; 基于應用于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型來為所述多個區(qū)域中的 每個區(qū)域確定率失真代價; 基于應用于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型來為所述多個區(qū)域中的 每個區(qū)域確定代碼化方案;以及 基于為所述多個區(qū)域中的每個區(qū)域確定的率失真代價和代碼化方案來單獨地對所述 多個區(qū)域中的每個區(qū)域進行編碼。2. 根據(jù)權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,所述圖像包括視頻幀,并且所述 多個區(qū)域包括所述多個區(qū)域的網(wǎng)格。3. 根據(jù)權(quán)利要求1和2中任一項所述的計算機可讀存儲介質(zhì),其中,所述多個區(qū)域中的 每個區(qū)域包括η X η像素塊。4. 根據(jù)權(quán)利要求3所述的計算機可讀存儲介質(zhì),其中,所述ηΧη像素塊包括以下至少一 個:64 X 64像素塊、32 X 32像素塊、16 X 16像素塊、8 X 8像素塊、4 X 4像素塊、和2 X 2像素塊。5. 根據(jù)權(quán)利要求1至4中任一項所述的計算機可讀存儲介質(zhì),其中,所述概率表包括:與 所述多個分區(qū)類型中的第一分區(qū)類型相關(guān)聯(lián)的概率值、和與所述多個分區(qū)類型中的第二分 區(qū)類型相關(guān)聯(lián)的概率值。6. 根據(jù)權(quán)利要求1至5中任一項所述的計算機可讀存儲介質(zhì),其中,所述多個分區(qū)類型 包括: 第一分區(qū)類型,所述第一分區(qū)類型包括具有尺寸相似的四個子塊的拆分分區(qū)類型, 第二分區(qū)類型,所述第二分區(qū)類型包括具有尺寸相似的、水平布置的兩個子塊的水平 分區(qū)類型, 第三分區(qū)類型,所述第三分區(qū)類型包括具有尺寸相似的、垂直布置的兩個子塊的垂直 分區(qū)類型,以及 第四分區(qū)類型,所述第四分區(qū)包括具有單個塊的無分區(qū)類型。7. 根據(jù)權(quán)利要求1至6中任一項所述的計算機可讀存儲介質(zhì),其中,對于應用于所述多 個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型的第一分區(qū)類型,所述指令包括被配置為進行如 下操作的指令: 將所述多個區(qū)域中的每個區(qū)域分為多個子區(qū)域; 將所述多個分區(qū)類型重新應用于所述多個子區(qū)域中的每個子區(qū)域; 基于應用于所述多個子區(qū)域中的每個子區(qū)域的所述多個分區(qū)類型來為所述多個子區(qū) 域中的每個子區(qū)域確定率失真代價;以及 基于應用于所述多個子區(qū)域中的每個子區(qū)域的所述多個分區(qū)類型來為所述多個子區(qū) 域中的每個子區(qū)域確定代碼化方案。8. 根據(jù)權(quán)利要求1至7中任一項所述的計算機可讀存儲介質(zhì),其中,被配置為基于為所 述多個區(qū)域中的每個區(qū)域確定的率失真代價和代碼化方案來單獨地對所述多個區(qū)域中的 每個區(qū)域進行編碼的所述指令包括配置為進行如下操作的指令: 基于為所述多個子區(qū)域中的每個子區(qū)域確定的率失真代價和代碼化方案來單獨地對 所述多個子區(qū)域中的每個子區(qū)域進行編碼。9. 根據(jù)權(quán)利要求1至8中任一項所述的計算機可讀存儲介質(zhì),其中,被配置成為所述多 個區(qū)域中的每個區(qū)域確定率失真代價的所述指令包括被配置成進行如下操作的指令: 基于應用于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型來為所述多個區(qū)域中的 每個區(qū)域評估多個率失真代價;以及 為所述多個區(qū)域中的每個區(qū)域確定率失真代價,所述率失真代價選自為所述多個區(qū)域 中的每個區(qū)域評估的所述多個率失真代價。10. 根據(jù)權(quán)利要求1至9中任一項所述的計算機可讀存儲介質(zhì),其中,被配置成單獨地對 所述多個區(qū)域中的每個區(qū)域進行編碼的所述指令包括被配置為進行如下操作的指令: 基于為所述多個區(qū)域中的每個區(qū)域確定的最佳率失真代價來單獨地對所述多個區(qū)域 中的每個區(qū)域進行編碼。11. 根據(jù)權(quán)利要求1至10中任一項所述的計算機可讀存儲介質(zhì),其中,被配置成為所述 多個區(qū)域中的每個區(qū)域確定代碼化方案的所述指令包括被配置成進行如下操作的指令: 基于應用于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型來為所述多個區(qū)域中的 每個區(qū)域評估多個代碼化方案;以及 為所述多個區(qū)域中的每個區(qū)域確定最佳代碼化方案,所述最佳代碼化方案選自為所述 多個區(qū)域中的每個區(qū)域評估的所述多個代碼化方案。12. 根據(jù)權(quán)利要求1至11中任一項所述的計算機可讀存儲介質(zhì),其中,被配置成單獨地 對所述多個區(qū)域中的每個區(qū)域進行編碼的所述指令包括被配置成進行如下操作的指令: 基于為所述多個區(qū)域中的每個區(qū)域確定的最佳代碼化方案來單獨地對所述多個區(qū)域 中的每個區(qū)域進行編碼。13. 根據(jù)權(quán)利要求1至12中任一項所述的計算機可讀存儲介質(zhì),其中,所述代碼化方案 包括基于上下文的熵代碼化方案,當為所述多個區(qū)域中的每個區(qū)域確定代碼化方案時,所 述基于上下文的熵代碼化方案考慮每個區(qū)域的大小、應用于在每個區(qū)域上方的第一鄰居區(qū) 域和在每個區(qū)域左邊的第二鄰居區(qū)域的分區(qū)類型。14. 根據(jù)權(quán)利要求1至13中任一項所述的計算機可讀存儲介質(zhì),其中,被配置成單獨地 對所述多個區(qū)域中的每個區(qū)域進行編碼的所述指令包括被配置成進行如下操作的指令: 基于為所述多個區(qū)域中的每個區(qū)域確定的率失真代價和代碼化方案,以光柵順序?qū)⒚?個區(qū)域單獨地編碼為比特流。15. -種存儲指令的非暫時性計算機可讀存儲介質(zhì),所述指令被執(zhí)行時使得至少一個 處理器進行過程,所述指令包括被配置成進行如下操作的指令: 將視頻幀分為多個像素塊; 基于概率表將多個分區(qū)類型應用于所述多個像素塊中的每個像素塊; 對于應用于所述多個像素塊中的每個像素塊的所述多個分區(qū)類型的第一分區(qū)類型,將 所述第一分區(qū)類型的每個像素塊分為多個像素子塊,并且將所述多個分區(qū)類型重新應用于 所述多個像素子塊中的每個像素子塊; 基于分別應用于并且重新應用于每個像素塊和每個像素子塊的所述多個分區(qū)類型來 為每個像素塊和每個像素子塊確定率失真代價; 基于分別應用于并且重新應用于每個像素塊和每個像素子塊的所述多個分區(qū)類型來 為每個像素塊和每個像素子塊確定代碼化方案;以及 基于為每個像素塊和每個像素子塊確定的率失真代價和代碼化方案來單獨地對每個 像素塊和每個像素子塊進行編碼。16. 根據(jù)權(quán)利要求15所述的計算機可讀存儲介質(zhì),其中: 每個像素塊包括η X η像素塊,以及 每個η X η像素塊包括以下至少一個:64 X 64像素塊、32 X 32像素塊、16 X 16像素塊、8 X 8像素塊、4 X 4像素塊、和2 X 2像素塊。17. 根據(jù)權(quán)利要求15和16所述的計算機可讀存儲介質(zhì),其中: 所述多個分區(qū)類型的所述第一分區(qū)類型包括具有尺寸相似的四個子塊的拆分分區(qū)類 型, 第二分區(qū)類型包括具有尺寸相似的、水平布置的兩個子塊的水平分區(qū)類型, 第三分區(qū)類型包括具有尺寸相似的、垂直布置的兩個子塊的垂直分區(qū)類型,以及 第四分區(qū)類型包括具有單個塊的無分區(qū)類型。18. 根據(jù)權(quán)利要求15至17中任一項所述的計算機可讀存儲介質(zhì),其中,所述代碼化方案 包括基于上下文的熵代碼化方案,當為所述多個像素塊中的每個像素塊確定代碼化方案 時,所述基于上下文的熵代碼化方案考慮每個像素塊的大小、應用于在每個像素塊上面的 第一鄰居區(qū)域和在每個像素塊左邊的第二鄰居區(qū)域的分區(qū)類型。19. 一種系統(tǒng),包括: 至少一個處理器和存儲器; 至少一個處理器被配置成: 將幀分為多個區(qū)域; 將多個分區(qū)類型應用于所述多個區(qū)域中的每個區(qū)域; 對于應用于所述多個區(qū)域中的每個區(qū)域的所述多個分區(qū)類型中的至少一個分區(qū)類型, 基于概率表將該至少一個分區(qū)類型的每個區(qū)域分為多個子區(qū)域,并且將所述多個分區(qū)類型 重新應用于該多個子區(qū)域中的每個子區(qū)域; 基于分別應用于并且重新應用于每個區(qū)域和每個子區(qū)域的所述多個分區(qū)類型來為每 個區(qū)域和每個子區(qū)域確定率失真代價; 基于分別應用于并且重新應用于每個區(qū)域和每個子區(qū)域的所述多個分區(qū)類型來為每 個區(qū)域和每個子區(qū)域確定代碼化方案;以及 基于為每個區(qū)域和每個子區(qū)域確定的所述率失真代價和所述代碼化方案來單獨地對 每個區(qū)域和每個子區(qū)域進行編碼。20. 根據(jù)權(quán)利要求19的系統(tǒng),其中,所述幀為第一幀,所述概率表包括與該至少一個分 區(qū)類型相關(guān)聯(lián)的概率值, 所述至少一個處理器被配置成基于與所述第一幀相關(guān)聯(lián)的所述處理來更新用于處理 第二幀的所述概率值。21. 根據(jù)權(quán)利要求29和20中任一項所述的系統(tǒng),其中,所述幀為在視頻幀序列中的第一 幀,所述概率表包括與該至少一個分區(qū)類型相關(guān)聯(lián)的默認概率值。22. -種存儲指令的非暫時性計算機可讀存儲介質(zhì),所述指令在被執(zhí)行時致使至少一 個處理器進行過程,所述指令包括被配置成進行如下操作的指令: 識別在視頻幀序列中的第一幀; 基于存儲在存儲器中的概率表來對在所述視頻幀序列中的所述第一幀進行編碼,所述 概率表包括與分區(qū)類型相關(guān)聯(lián)的概率值; 基于對所述視頻幀序列中的所述第一幀的所述編碼來將與所述分區(qū)類型相關(guān)聯(lián)的所 述概率值修改為更新的概率值;以及 基于在所述概率表中包括的所述更新的概率值來對在視頻幀序列中的第二幀進行編 碼。23. 根據(jù)權(quán)利要求22所述的計算機可讀存儲介質(zhì),其中,對所述第一幀的所述編碼包括 煙編碼。24. 根據(jù)權(quán)利要求22和23中任一項所述的計算機可讀存儲介質(zhì),其中,所述指令進一步 包括進行以下操作的指令: 計算與所述第一幀相關(guān)聯(lián)的所述分區(qū)類型的概率分布,并且基于所述分區(qū)類型的概率 分布來修改所述概率值。25. 根據(jù)權(quán)利要求22至24中任一項所述的計算機可讀存儲介質(zhì),其中,基于所述概率值 來分配與熵編碼器相關(guān)聯(lián)的比特率。26. 根據(jù)權(quán)利要求22至25中任一項所述的計算機可讀存儲介質(zhì),其中,所述概率表包括 與從第一塊大小到第二塊大小的分區(qū)相關(guān)聯(lián)的第一塊部分,并且所述概率表包括與從所述 第二塊大小到第三塊大小的分區(qū)相關(guān)聯(lián)的第二塊部分。
【文檔編號】H04N19/176GK105960803SQ201480074562
【公開日】2016年9月21日
【申請日】2014年12月26日
【發(fā)明人】韓敬寧, 羅納德·塞巴斯蒂安·布特杰
【申請人】谷歌公司