對編碼視頻數據的變換單位的子集編碼和解碼的方法、設備和系統的製作方法
2023-04-23 00:34:36 2
對編碼視頻數據的變換單位的子集編碼和解碼的方法、設備和系統的製作方法
【專利摘要】公開了一種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位(例如,400)進行解碼的方法。確定變換單位的子集的有效殘差係數。選擇變換單位的子集的Golomb-Rice解碼的預定Rice參數。在所確定的有效殘差係數的數量高於預定閾值的情況下,預定Rice參數相對於零設置存在偏移。使用預定Rice參數作為Golomb-Rice解碼的初始參數來對變換單位的子集進行解碼。
【專利說明】對編碼視頻數據的變換單位的子集編碼和解碼的方法、設 備和系統
【技術領域】
[0001] 本發明通常涉及數字視頻信號處理,尤其涉及用於對視頻數據的變換單位的子集 進行編碼和解碼的方法、設備和系統。
【背景技術】
[0002] 當前存在包括用於傳輸和存儲視頻數據的應用程式的視頻編碼所用的許多應用 程序。還開發了許多視頻編碼標準並且其它視頻編碼標準當前正在開發中。視頻編碼標準 化的最新進展已導致形成被稱為"針對視頻編碼的聯合專家小組"(JCT_VC)的組。該針對 視頻編碼的聯合專家小組(JCT-VC)包括已知為視頻編碼專家組(VCEG)的國際電信聯盟 (ITU)的電信標準化部門(ITU-T)的研究組16、問題6(SG16/Q6)的成員、以及還已知為運 動圖片專家組(MPEG)的國際標準化組織/國際電工委員會聯合技術委員會1/小組委員會 29/工作組 11(IS0/IEC JTC1/SC29/WG11)的成員。
[0003] 針對視頻編碼的聯合專家小組(JCT-VC)的目標是產生新的視頻編碼標準以顯著 優於目前現有的已知為"H. 264/MPEG-4AVC"的視頻編碼標準。該H. 264/MPEG-4AVC標準本 身是針對諸如MPEG-4和ITU-T H. 263等的以前的視頻編碼標準的大幅改進。已將開發中的 新視頻編碼標準命名為"高效率視頻編碼(HEVC) "。針對視頻編碼的聯合專家小組JCT-VC 還考慮由於針對高效率視頻編碼(HEVC)所提出的技術而產生的、在對該標準的實現進行 縮放從而以高解析度或高幀頻進行工作的情況下產生困難的各種實現挑戰。
[0004] H. 264/MPEG-4AVC視頻編碼標準呈現在對用以表示視頻數據的殘差係數進行編碼 的情況下實現高壓縮效率的困難。
[0005] 視頻數據由幀序列構成,其中各幀具有樣本的二維陣列。通常,幀包括一個亮度 (luma)通道和兩個色度(chroma)通道。通常使用諸如YUV等的顏色空間來表示顏色信息, 其中Y是亮度通道並且UV是兩個色度通道。諸如YUV等的顏色空間給出了如下優點:大部 分幀內容包含在亮度通道中,並且UV通道中所存儲的相對較少量的內容足以重建彩色幀。 還可以將色度通道下採樣為感知質量損失可忽略的較低的空間解析度。
[0006] 已知為4:2:0的通常使用的色度格式使得各色度通道具有垂直和水平方向的分 辨率的一半。將各幀分解成最大編碼單位(LCU)的陣列。這些最大編碼單位(LCU)具有諸 如64個亮度樣本等的、邊尺寸是2的冪且寬度和高度相等的固定大小。編碼樹使得能夠將 各最大編碼單位(LCU)子分割成四個編碼單位(CU),其中各編碼單位(CU)的寬度和高度 是母最大編碼單位(LCU)的寬度和高度的一半。可以將各編碼單位(CU)進一步子分割成 相等大小的四個編碼單位(⑶)。可以遞歸地應用這種子分割處理,直到達到最小編碼單位 (SCU)大小為止,從而使得能夠將編碼單位(CU)向下定義為最小支持大小。將最大編碼單 位遞歸子分割成編碼單位的層級結構具有四叉樹結構並且被稱為編碼樹。將該子分割處理 作為被編碼為二進位數(bin)的標誌序列而在通信位流中編碼。因此,編碼單位具有正方 形形狀。
[0007] 在沒有進行進一步子分割的編碼樹中存在一組編碼單位,從而佔據編碼樹的葉節 點。在這些編碼單位中存在變換樹。變換樹還可以使用如編碼樹所使用的四叉樹結構來對 編碼單位進行分解。在變換樹的葉節點處,使用變換單位(TU)來對殘差數據進行編碼。與 編碼樹相對比,變換樹可以將編碼單位子分割成具有非正方形形狀的變換單位。此外,變換 樹結構不要求變換單位(TU)佔據母編碼單位所提供的所有區域。
[0008] 將編碼樹的葉節點處的各編碼單位子分割成各自已知為預測單位(PU)的預測數 據樣本的一個或多個陣列。各預測單位(PU)包含通過應用幀內預測或幀間預測處理所推 導出的輸入視頻幀數據的一部分的預測。
[0009] 可以使用幾種方法來對編碼單位(CU)內的預測單位(PU)進行編碼。一個預測單 位(PU)可能佔據編碼單位(CU)的整個區域,或者編碼單位(CU)可能在水平方向或垂直方 向上被分割成相等大小的兩個矩形預測單位(PU)。另外,可以將編碼單位(CU)分割成相等 大小的四個正方形預測單位(PU)。
[0010] 視頻編碼器通過將視頻數據轉換成句法元素序列來將視頻數據壓縮成位流。使 用與在MPEG4-AVC/H. 264視頻壓縮標準中所定義的算術編碼方案相同的算術編碼方案,在 開發中的高效率視頻編碼(HEVC)標準內定義上下文自適應二進位算術編碼(CABAC)。在 開發中的高效率視頻編碼(HEVC)標準中,在上下文自適應二進位算術編碼(CABAC)處於使 用中的情況下,將各句法元素表示為二進位數序列。對各二進位數進行旁路編碼或算術編 碼。使用二進位數同等可能為〇或1的旁路編碼。在這種情況下,不存在可實現的進一步 壓縮。對於概率分布不相等的二進位數使用算術編碼。各算術編碼二進位數與已知為"上 下文(context)"的信息相關聯。上下文包含可能的二進位數值('valMPS')和概率狀態 (映射到可能的二進位數值的估計概率的整數)。根據句法元素創建包括旁路編碼二進位 數和算術編碼二進位數的組合的這種二進位數序列已知為"二進位數產生(binarising) " 句法元素。
[0011] 在視頻編碼器或視頻解碼器中,由於各二進位數可使用單獨的上下文信息,因此 二進位數的上下文選擇提供了用以改進編碼效率的方式。特別地,可以通過選擇特定二進 制數來改進編碼效率,以使得來自使用關聯的上下文信息的二進位數的先前示例的統計特 性與二進位數的當前示例的統計特性相關。這種上下文選擇頻繁地利用空間本地信息以確 定最佳上下文。
[0012] 在開發中的高效率視頻編碼(HEVC)標準和H. 264/MPEG-4AVC中,基於來自其它幀 或者來自先前解碼後的當前塊內的鄰接區域的參考樣本數據來推導針對當前塊的預測。該 預測和期望樣本數據之間的差已知為殘差。該殘差的頻域表示是殘差係數的二維陣列。按 照慣例,二維陣列的左上角包含表示低頻信息的殘差係數。
[0013] 在典型的視頻數據中,樣本值的大部分變化是逐漸的,這導致低頻信息在殘差內 佔主導。這表明位於二維陣列的左上角的殘差係數的量值較大。
【發明內容】
[0014] 本發明的目的是大致克服或至少改進現有配置的一個或多個缺點。
[0015] 根據本發明的一個方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的方法,所述方法包括以下步驟:
[0016] 確定所述變換單位的子集的有效殘差係數;
[0017] 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的 有效殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移; 以及
[0018] 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼。
[0019] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的設備,所述設備包括:
[0020] 用於確定所述變換單位的子集的有效殘差係數的部件;
[0021] 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的部件,其中 在所確定的有效殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設 置存在偏移;以及
[0022] 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變 換單位的子集進行解碼的部件。
[0023] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的系統,所述系統包括:
[0024] 存儲器,用於存儲數據和電腦程式;
[0025] 處理器,其連接至所述存儲器,並且用於執行所述電腦程式,所述電腦程式包 括用於進行以下操作的指令:
[0026] 確定所述變換單位的子集的有效殘差係數;
[0027] 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的 有效殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移; 以及
[0028] 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼。
[0029] 根據本發明的另一方面,提供一種記錄有電腦程式的計算機可讀介質,所述計 算機程序用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼,所述計算機程 序包括以下代碼:
[0030] 用於確定所述變換單位的子集的有效殘差係數的代碼;
[0031] 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的代碼,其中 在所確定的有效殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設 置存在偏移;以及
[0032] 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變 換單位的子集進行解碼的代碼。
[0033] 根據本發明的另一方面,提供一種用於對視頻數據流進行解碼以確定解碼視頻數 據流中的當前殘差係數的值的方法,所述方法包括以下步驟:
[0034] 從所述視頻數據流接收殘差係數的變換單位;
[0035] 確定所述變換單位的當前殘差係數的位置;
[0036] 在所述當前殘差係數在所述變換單位中的位置大於預定閾值的情況下,使用 無依賴性的Golomb-Rice解碼對所述當前殘差係數進行解碼,其中所述無依賴性的 Golomb-Rice 使用預定 Golomb-Rice 值;
[0037] 在所述當前殘差係數在所述變換單位中的位置小於所述預定閾值的情況下,使用 針對當前係數的基於依賴性的Golomb-Rice解碼對所述當前殘差係數進行解碼,其中所述 基於依賴性的Golomb-Rice解碼使用先前解碼殘差係數值以選擇Golomb-Rice值;以及
[0038] 使用所選擇的Golomb-Rice解碼值來確定所述當前殘差係數的值。
[0039] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的方法,所述方法包括以下步驟:
[0040] 確定所述變換單位的量化參數;
[0041] 確定所述變換單位的子集的有效殘差係數;
[0042] 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的 量化參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及
[0043] 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼。
[0044] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的設備,所述設備包括:
[0045] 用於確定所述變換單位的子集的有效殘差係數的部件;
[0046] 用於確定所述變換單位的量化參數的部件;
[0047] 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的部件,其中 在所確定的量化參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移; 以及
[0048] 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變 換單位的子集進行解碼的部件。
[0049] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的系統,所述系統包括:
[0050] 存儲器,用於存儲數據和電腦程式;
[0051] 處理器,其連接至所述存儲器,並且用於執行所述電腦程式,所述電腦程式包 括用於進行以下操作的指令:
[0052] 確定所述變換單位的子集的有效殘差係數;
[0053] 確定所述變換單位的量化參數;
[0054] 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的 量化參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及
[0055] 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼。
[0056] 根據本發明的另一方面,提供一種記錄有電腦程式的計算機可讀介質,所述計 算機程序用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼,所述計算機程 序包括以下代碼:
[0057] 用於確定所述變換單位的子集的有效殘差係數的代碼;
[0058] 用於確定所述變換單位的量化參數的代碼;
[0059] 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的代碼,其中 在所確定的量化參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移; 以及
[0060] 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變 換單位的子集進行解碼的代碼。
[0061] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的方法,所述方法包括以下步驟:
[0062] 確定所述變換單位的量化參數;
[0063] 確定所述變換單位的寬度和高度;
[0064] 確定所述變換單位的子集的有效殘差係數;
[0065] 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定 的量化參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾值的情況 下,所述預定Rice參數相對於零設置存在偏移;以及
[0066] 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼。
[0067] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的設備,所述設備包括:
[0068]用於確定所述變換單位的子集的有效殘差係數的部件;
[0069] 用於確定所述變換單位的量化參數的部件;
[0070] 用於確定所述變換單位的寬度和高度的部件;
[0071] 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的部件,其中 在所確定的量化參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾 值的情況下,所述預定Rice參數相對於零設置存在偏移;以及
[0072] 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變 換單位的子集進行解碼的部件。
[0073] 根據本發明的另一方面,提供一種用於使用Golomb-Rice解碼對編碼視頻數據的 變換單位進行解碼的系統,所述系統包括:
[0074] 存儲器,用於存儲數據和電腦程式;
[0075] 處理器,其連接至所述存儲器,並且用於執行所述電腦程式,所述電腦程式包 括用於進行以下操作的指令:
[0076] 確定所述變換單位的子集的有效殘差係數;
[0077] 確定所述變換單位的量化參數;
[0078] 確定所述變換單位的寬度和高度;
[0079] 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定 的量化參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾值的情況 下,所述預定Rice參數相對於零設置存在偏移;以及
[0080] 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼。
[0081] 根據本發明的另一方面,提供一種記錄有電腦程式的計算機可讀介質,所述計 算機程序用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼,所述計算機程 序包括以下代碼:
[0082] 用於確定所述變換單位的子集的有效殘差係數的代碼;
[0083] 用於確定所述變換單位的量化參數的代碼;
[0084] 用於確定所述變換單位的寬度和高度的代碼;
[0085] 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的代碼,其中 在所確定的量化參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾 值的情況下,所述預定Rice參數相對於零設置存在偏移;以及
[0086] 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變 換單位的子集進行解碼的代碼。
[0087] 還公開了其它方面。
【專利附圖】
【附圖說明】
[0088] 現在將參考以下附圖來說明本發明的至少一個實施例,其中:
[0089] 圖1是示出視頻編碼器的功能模塊的示意框圖;
[0090] 圖2是示出視頻解碼器的功能模塊的示意框圖;
[0091] 圖3A和3B形成可以分別實踐圖1的編碼器和圖2的解碼器的通用計算機系統的 示意框圖;
[0092] 圖4A和4B示出示例變換單位的空間結構;
[0093] 圖5是示出示例變換單位的句法元素結構的示意框圖;
[0094] 圖6A是示出對變換單位(TU)進行編碼的方法的示意框圖;
[0095] 圖6B是示出對變換單位(TU)進行解碼的方法的示意流程圖;
[0096] 圖7是示出圖5的示例變換單位的子集的句法元素結構的示意框圖;
[0097] 圖8A是示出對變換單位的子集進行編碼的方法的示意流程圖;
[0098] 圖8B是示出對變換單位的子集進行解碼的方法的示意流程圖;
[0099] 圖9是示出利用Golomb-Rice (哥倫布-萊斯)碼字的殘差係數的二進位表示的 表;
[0100] 圖1〇是示出利用階次為零的指數Golomb碼字的殘差係數的二進位表示的表;
[0101] 圖11是示出用於基於Golomb-Rice參數的當前值和先前殘差係數的值來確定 Golomb-Rice參數的值的查找表的表;
[0102] 圖12A是示出對殘差係數進行編碼的方法的示意流程圖;
[0103] 圖12B是示出對殘差係數進行解碼的方法的示意流程圖;
[0104] 圖13是示出用於確定如用於使用Golomb-Rice解碼對殘差係數進行解碼的方法 所使用的參數K的值的方法的示意流程圖;
[0105] 圖14A示出用於針對變換單位(TU)的子集對其餘的殘差係數量值進行解碼的二 值化器;
[0106] 圖14B示出用於針對變換單位(TU)的子集對其餘的殘差係數量值進行解碼的另 一二值化器;以及
[0107] 圖15示出另一示例變換單位。
【具體實施方式】
[0108] 在任一個或多個附圖中參考具有相同附圖標記的步驟和/或特徵的情況下,除非 出現相反意圖,否則這些步驟和/或特徵是為了本說明書的目的而具有相同的功能或操 作。
[0109] 可以通過二值化方案來使用在殘差係數的二維陣列的左上角佔主導的低頻信息 的特性,以使殘差係數在位流中的大小最小。
[0110] 二值化的一個方面是選擇上下文以用於對與各個標誌相對應的句法元素進行編 碼。一個標誌可以使用一個以上的上下文。確定哪個上下文應當用於標誌的特定示例依賴 於其它已可用的信息並且已知為"上下文建模"。上下文建模是選擇最準確地表示標誌的 當前示例的統計特性的上下文的處理。例如,頻繁地,標誌的值受到同一標誌的鄰接示例的 值所影響,其中在這種情況下,可以基於標誌的鄰接示例的值來選擇上下文。由於大部分幀 信息包含在亮度通道中,因此相對於色度通道,上下文建模經常針對亮度通道使用單獨的 上下文。然而,由於兩個色度通道的統計特性相對相似,因此通常在色度通道之間共用上下 文。
[0111] 高效率視頻編碼(HEVC)測試模型的版本6 ( "HM-6. 0")將變換單位(TU)分割成 多個子集並且對各子集中的殘差係數進行兩遍掃描。第一遍對將殘差係數的狀態表示為非 零值(有效)或零值(無效)的標誌進行編碼。該數據已知為有效性映射。第二遍對已知 為係數等級的有效殘差係數的量值和符號進行編碼。
[0112] 所提供的掃描模式使得能夠將殘差係數的二維陣列掃描成一維陣列。在HM-6.0 中,使用所提供的掃描模式來對有效性映射和係數等級這兩者進行處理。通過使用所提供 的掃描模式掃描有效性映射,可以確定最末有效係數在二維有效性映射中的位置。掃描模 式可以是水平的、垂直的或對角的。
[0113] HM-6. 0提供針對(還已知為具有正方形形狀和非正方形形狀這兩者的變換單位 (TU)的)殘差塊的支持。各變換單位(TU)包含一組殘差係數。具有相等大小的邊尺寸的 殘差塊已知為正方形變換單位(TU),並且具有不等大小的邊尺寸的殘差塊已知為非正方形 變換單位(TU)。
[0114] HM-6.0 中所支持的變換單位(TU)的大小是 4X4、8X8、16X16、32X32、4X16、 16X4、8X32和32X8。通常針對亮度樣本說明變換單位(TU)的大小。然而,在使用4:2:0 的色度格式的情況下,各色度樣本佔據2X2個亮度樣本的區域。因此,掃描變換單位(TU) 以對色度殘差數據進行編碼使用了水平尺寸和垂直尺寸的一半的掃描模式,諸如針對4X4 亮度殘差塊的2X2等。為了對殘差係數進行掃描和編碼的目的,將16X 16、32X32、4X 16、 16X4、8X32和32X8的變換單位(TU)分割成多個子塊、即大小為4X4的變換單位(TU) 掃描的下層,其中在HM-6. 0內存在相應的映射。
[0115] 在HM-6. 0中,上述變換單位(TU)大小的子塊與變換單位(TU)中的子集位於同一 位置處。在另一實現中,子集可能與大小不同於上述子塊的大小的子塊不位於同一位置處。 將位於一個子塊內並排配置的有效性映射的一部分內的所設置的有效係數標誌稱為有效 係數組。
[0116] 對於 16X16、32X32、4X16、16X4、8X32 和 32X8 的變換單位(TU),有效性映射 編碼利用兩級掃描。上級掃描進行諸如後向對角左下掃描等的掃描,以編碼或推斷表示各 子塊的有效係數組的標誌。在這些子塊內,進行諸如後向對角左下掃描等的掃描,以針對 具有1值的有效係數組標誌的子塊來編碼有效係數標誌。對於16 X 16變換單位(TU),使 用4X4上級掃描。對於32X32變換單位(TU),使用8X8上級掃描。對於16X4、4X16、 32X8和8X32的變換單位(TU)大小,分別使用4X1、1X4、8X2和2X8的上級掃描。
[0117] 在各變換單位(TU)中,可以將殘差係數數據編碼在位流中。各"殘差係數"是表 示頻域(DCT)的變換單位內的圖像特徵並且在該變換單位內佔據獨特位置的數字。變換單 位是可以在空間域和頻域之間進行變換的殘差數據樣本的塊。在頻域中,變換單位(TU)將 殘差數據樣本編碼為殘差係數數據。按二(2)的冪來確定變換單位的邊尺寸的大小(針對 "亮度"通道為4個樣本?32個樣本、並且針對"色度"通道為2個樣本?16個樣本)。變 換單位(TU)樹的葉節點可以包含變換單位(TU)、或者在不需要殘差係數數據的情況下可 以什麼也不包含。
[0118] 由於變換單位的空間表示是殘差數據樣本的二維陣列,因此如以下詳細所述,根 據諸如改進的離散餘弦變換(DCT)等的變換所得的頻域表示還是殘差係數的二維陣列。變 換單位(TU)內的典型樣本數據的頻譜特性使得頻域表示與空間表示相比更加緊湊。此外, 變換單位(TU)中典型的較低頻率的頻譜信息的佔主導導致了較大值的殘差係數向著變換 單位(TU)的表示低頻殘差係數的左上方聚集。
[0119] 可以使用改進的離散餘弦變換(DCT)或改進的離散正弦變換(DST)來實現殘差變 換。殘差變換的實現被配置為支持所需的各變換單位(TU)大小。在視頻編碼器中,對來自 殘差變換的殘差係數進行縮放和量化。該縮放和量化使殘差係數的量值縮小,由此導致以 降低圖像質量為代價來縮小編碼在位流中的數據的大小。
[0120] 在進行殘差變換之後,進行量化處理。量化處理的目的是通過降低殘差係數的量 值的精度來實現較高的壓縮率。量值精度的該降低是有損處理,因而會對視覺質量產生影 響。利用量化參數(QP)來控制精度降低的等級。該參數的值越高,視覺質量所受到的影響 越大。可以通過使用如以下所述的delta-qp句法元素,針對變換單位(TU)等級來修改量 化參數。
[0121] 開發中的高效率視頻編碼(HEVC)標準正尋求視頻數據的高效率壓縮。可以使用 估計和統計數據分析來實現視頻數據的高效率壓縮。開發中的高效率視頻編碼(HEVC)標 準正尋求以高的位率對視頻數據進行編碼或解碼。開發中的高效率視頻編碼(HEVC)標準 中所採用的上下文自適應二進位算術編碼(CABAC)方案支持被稱為"旁路編碼"的"等概 率"運算模式。在該模式中,二進位數不與來自上下文模型的上下文相關聯,因而不存在上 下文模型更新步驟。在這種模式中,假定對各二進位數進行旁路編碼從而提高吞吐量,則可 以並行地從位流讀取多個相鄰二進位數。例如,硬體實現可以並行地進行相鄰旁路編碼數 據的組的寫入/讀取,以提高對位流進行編碼/解碼的吞吐量。
[0122] 圖1是示出視頻編碼器100的功能模塊的示意框圖。圖2是示出相應的視頻解碼 器200的功能模塊的示意框圖。如圖3A和3B所示,可以使用通用計算機系統300來實現 視頻編碼器100和視頻解碼器200,其中可以利用計算機系統300內的專用硬體、利用計算 機系統300內可執行的軟體、或者可選地利用專用硬體和計算機系統300內可執行的軟體 的組合來實現各種功能模塊。
[0123] 如圖3A所示,計算機系統300包括:計算機模塊301 ;諸如鍵盤302、滑鼠指示器裝 置303、掃描器326、照相機327和麥克風380等的輸入裝置;以及包括印表機315、顯示裝 置314和揚聲器317的輸出裝置。計算機模塊301可以使用外部調製器-解調器(調製解 調器)收發器裝置316來經由接線321與通信網絡320進行通信。通信網絡320可以是廣 域網(WAN),諸如網際網路、蜂窩電信網絡或私有WAN等。在接線321是電話線的情況下,調製 解調器316可以是傳統的"撥號上網"數據機。可選地,在接線321是高容量(例如, 線纜)接線的情況下,數據機316可以是寬帶數據機。還可以使用無線調製解調 器來進行向著通信網絡320的無線連接。
[0124] 計算機模塊301通常包括至少一個處理器單元305和存儲器單元306。例如,存 儲器單元306可以具有半導體隨機存取存儲器(RAM)和半導體只讀存儲器(ROM)。計算機 模塊301還包括多個輸入/輸出(I/O)接口,其中這多個輸入/輸出(I/O)接口包括:音 頻-視頻接口 307,其連接至視頻顯示器314、揚聲器317和麥克風380 ;1/0接口 313,其 連接至鍵盤302、滑鼠303、掃描器326、照相機327以及可選的操縱杆或其它人機接口裝置 (未示出);以及外部數據機316和印表機315所用的接口 308。在一些實現中,調製 解調器316可以內置於計算機模塊301內、例如內置於接口 308內。計算機模塊301還具 有本地網絡接口 311,其中該本地網絡接口 311允許計算機系統300經由接線323連接至已 知為區域網(LAN)的局域通信網絡322。如圖3A所示,局域通信網絡322還可以經由接線 324連接至廣域網320,其中該局域通信網絡322通常包括所謂的"防火牆"裝置或具有相似 功能的裝置。本地網絡接口 311可以包括乙太網(Ethernet?)電路卡、藍牙(Bluetooth?) 無線配置或IEEE 802. 11無線配置;然而,對於接口 311,可以實踐多種其它類型的接口。
[0125] I/O接口 308和313可以提供串行連接和並行連接中的任一個或這兩者,其中前 者通常根據通用串行總線(USB)標準來實現並且具有相應的USB連接器(未示出)。設置 有存儲裝置309,並且存儲裝置309通常包括硬碟驅動器(HDD) 310。還可以使用諸如軟盤 驅動器和磁帶驅動器(未示出)等的其它存儲裝置。通常設置有光碟驅動器312以用作數 據的非易失性源。作為向著系統300的數據的適當源,可以使用例如光碟(例如,⑶-ROM、 DVD、藍光碟(Blu-ray Disc?))、USB-RAM、便攜型外部硬碟驅動器和軟盤等的便攜型存儲器 裝置。通常,HDD 310、光碟驅動器312、網絡320和322或者照相機327中的任意均可用於 針對要編碼的視頻數據的源,或者連同顯示器314 -起用於要存儲或再現的解碼視頻數據 的目的地。
[0126] 計算機模塊301的組件305?313通常經由互連總線304並且以得到相關領域技 術人員已知的計算機系統300的傳統操作模式的方式進行通信。例如,處理器305使用接 線318連接至系統總線304。同樣,存儲器306和光碟驅動器312通過接線319連接至系統 總線304。可以實踐所述配置的計算機的示例包括IBM-PC和兼容機、Sun Sparcstation、 Apple Mac?或相似的計算機系統。
[0127] 在適當或期望的情況下,可以使用計算機系統300來實現編碼器100和解碼器200 以及以下所述的方法,其中可以將編碼器100和解碼器200以及要說明的處理作為計算機 系統300內可執行的一個或多個軟體應用程式333來實現。特別地,利用在計算機系統300 內執行的軟體333中的指令331 (參見圖3B)來實現編碼器100、解碼器200和所述方法的 各步驟。可以將軟體指令331形成為各自用於進行一個或多個特定任務的一個或多個代碼 模塊。還可以將軟體分割成兩個單獨部分,其中第一部分和相應的代碼模塊進行所述方法, 並且第二部分和相應的代碼模塊管理第一部分和用戶之間的用戶界面。
[0128] 例如,可以將軟體存儲在包括以下所述的存儲裝置的計算機可讀介質中。將軟體 從計算機可讀介質載入計算機系統300,然後由計算機系統300來執行。記錄有這種軟體或 電腦程式的計算機可讀介質是電腦程式產品。優選地,在計算機系統300中使用該計 算機程序產品實現了用於實現編碼器100、解碼器200和所述方法的有利設備。
[0129] 通常將軟體333存儲在HDD 310或存儲器306中。將該軟體從計算機可讀介質載 入計算機系統300,並且由計算機系統300來執行。因而,例如,可以將軟體333存儲在光碟 驅動器312所讀取的光學可讀盤存儲介質(例如,⑶-ROM) 325上。
[0130] 在一些示例中,將應用程式333以編碼在一個或多個⑶-ROM 325上並且經由相應 的驅動器312進行讀取的方式供給至用戶,或者可選地,可以由用戶從網絡320或322讀取 應用程式333。此外,還可以將軟體從其它計算機可讀介質載入計算機系統300。計算機可 讀存儲介質是指將所記錄的指令和/或數據提供至計算機系統300以供執行和/或處理的 任何非瞬態有形存儲介質。這種存儲介質的示例包括軟盤、磁帶、CD-R0M、DVD、藍光碟、硬碟 驅動器、ROM或集成電路、USB存儲器、磁光碟、或者諸如PCMCIA卡等的計算機可讀卡等,而 與這些裝置在計算機模塊301的內部還是外部無關。還可以參與將軟體、應用程式、指令和 /或視頻數據或編碼視頻數據提供至計算機模塊301的瞬態或非有形計算機可讀傳輸介質 的示例包括:無線電或紅外線傳輸通道及向著其它計算機或聯網裝置的網絡接線、以及包 括電子郵件發送和網站上所記錄的信息等的網際網路或內聯網等。
[0131] 可以執行上述的應用程式333的第二部分和相應的代碼模塊來實現要渲染或呈 現在顯示器314上的一個或多個圖形用戶界面(⑶I)。通過典型地對鍵盤302和滑鼠303 進行操作,計算機系統300的用戶和應用程式可以以在功能上可適應的方式對界面進行操 作,以將控制命令和/或輸入提供至與這些GUI相關聯的應用程式。還可以實現在功能上 可適應的其它形式的用戶界面,諸如利用經由揚聲器317所輸出的語音提示和經由麥克風 380所輸入的用戶聲音命令的音頻界面等。
[0132] 圖3B是處理器305和"存儲器"334的詳細示意框圖。存儲器334表示圖3A中的 計算機模塊301可以訪問的(包括HDD 309和半導體存儲器306的)所有存儲器模塊的邏 輯聚合。
[0133] 在初始對計算機模塊301通電的情況下,上電自檢(power-on self-test, POST) 程序350執行。通常將POST程序350存儲在圖3A的半導體存儲器306的ROM 349中。有 時將諸如存儲有軟體的ROM 349等的硬體裝置稱為固件。POST程序350檢查計算機模塊 301內的硬體以確保適當工作,並且通常檢查處理器305、存儲器334 (309, 306)和通常還存 儲在ROM 349中的基本輸入-輸出系統軟體(BIOS)模塊351,以進行正確操作。一旦POST 程序350成功運行,BIOS 351啟動圖3A的硬碟驅動器310。啟動硬碟驅動器310使得經由 處理器305執行駐留在硬碟驅動器310上的引導裝入程序352。這樣將作業系統353載入 RAM存儲器306,其中在該RAM存儲器306上,作業系統353開始工作。作業系統353是處 理器305可執行的系統級應用程式,以實現包括處理器管理、存儲器管理、裝置管理、存儲 管理、軟體應用程式接口和通用用戶界面等的各種高級功能。
[0134] 作業系統353管理存儲器334(309, 306),以確保計算機模塊301上運行的各處理 或應用程式具有在不會與分配至其它處理的內存衝突的情況下執行的充足內存。此外,必 須適當使用圖3A的系統300中可用的不同類型的存儲器,以使得各處理可以高效地運行。 因此,聚合存儲器334並不意圖例示如何分配存儲器的特定區段(除非另外說明),而是提 供計算機系統300可訪問的存儲器的概述圖以及如何使用該存儲器。
[0135] 如圖3B所示,處理器305包括多個功能模塊,其中這多個功能模塊包括控制單元 339、運算邏輯單元(ALU) 340和有時稱為高速緩衝存儲器的本地或內部存儲器348。高速緩 衝存儲器348在寄存器區段中通常包括多個存儲寄存器344?346。一個或多個內部總線 341從功能上使這些功能模塊相互連接。處理器305通常還具有用於使用接線318來經由 系統總線304與外部裝置進行通信的一個或多個接口 342。存儲器334使用接線319連接 至總線304。
[0136] 應用程式333包括可以包含條件分支指令和循環指令的指令序列331。程序333 還可以包括執行程序333時所使用的數據332。將指令331和數據332分別存儲在存儲器 位置328、329、330和335、336、337中。根據指令331和存儲器位置328?330的相對大小, 如存儲器位置330中示出的指令所描述的,可以將特定指令存儲在單個存儲器位置中。可 選地,如存儲器位置328和329中示出的指令段所描述的,可以將指令分割成各自被存儲在 單獨的存儲器位置中的多個部分。
[0137] 通常,向處理器305賦予一組指令,其中在該處理器305內執行該組指令。處理 器305等待下一輸入,其中處理器305通過執行另一組指令來對該下一輸入作出反應。可 以從一個或多個源提供各輸入,其中該輸入包括一個或多個輸入裝置302、303所生成的數 據、從外部源經由網絡320、302其中之一所接收到的數據、從存儲裝置306、309其中之一所 檢索到的數據或者從插入相應的讀取器312內的存儲介質325所檢索到的數據(所有這些 組件均在圖3A中示出)。執行一組指令在一些情況下可能會導致輸出數據。執行還可能涉 及將數據或變量存儲至存儲器334。
[0138] 編碼器100、解碼器200和所述方法使用存儲在存儲器334內的相應存儲器位置 355、356、357中的輸入變量354。編碼器100、解碼器200和所述方法產生存儲在存儲器334 內的相應存儲器位置362、363、364中的輸出變量361。可以將中間變量358存儲在存儲器 位置 359、360、366 和 367 中。
[0139] 參考圖3B的處理器305,寄存器344、345、346、運算邏輯單元以1^)340和控制單 元339 -起工作以進行微操作序列,其中這些微操作序列是針對構成程序333的指令集中 的每個指令進行"提取、解碼和執行"周期所需的。各提取、解碼和執行周期包括以下操作:
[0140] (a)提取操作,用於從存儲器位置328、329、330提取或讀取指令331 ;
[0141] (b)解碼操作,其中在該解碼操作中,控制單元339判斷提取了哪個指令;以及
[0142] (c)執行操作,其中在該執行操作中,控制單元339和/或ALU 340執行該指令。
[0143] 之後,可以執行針對下一指令的進一步提取、解碼和執行周期。同樣,可以進行存 儲周期,其中在該存儲周期中,控制單元339將值存儲至或寫入存儲器位置332。
[0144] 要說明的處理中的各步驟或子處理與程序333的一個或多個區段相關聯,並且通 過處理器305中的寄存器部344、345、347、ALU 340和控制單元339 -起工作以針對程序 333的所述區段的指令集中的每個指令進行提取、解碼和執行周期,來進行各步驟或子處 理。
[0145] 可選地,可以在諸如進行所述方法的功能或子功能的一個或多個集成電路等的專 用硬體中實現編碼器1〇〇、解碼器200和所述方法。這種專用硬體可以包括圖形處理器、數 字信號處理器、專用集成電路(ASIC)、現場可編程門陣列(FPGA)或者一個或多個微處理器 和關聯存儲器。
[0146] 如上所述,可以將視頻編碼器100作為駐留在硬碟驅動器310上並且由處理器305 控制其執行的軟體應用程式333的一個或多個軟體代碼模塊來實現。特別地,視頻編碼器 100包括各自可以作為軟體應用程式333的一個或多個軟體代碼模塊來實現的模塊102? 112、114 和 115。
[0147] 儘管圖1的視頻編碼器100是高效率視頻編碼(HEVC)視頻解碼流水線的示例,但 模塊102?112、114和115所進行的處理階段對於諸如VC-1或H. 264/MPEG-4AVC等的其 它視頻編解碼器是共通的。視頻編碼器100接收未編碼的幀數據101作為包括亮度樣本和 色度樣本的一系列幀。視頻編碼器1〇〇將幀數據101的各幀分割成例如可表示為編碼單位 (CU)樹的編碼單位(CU)的層級集合。
[0148] 視頻編碼器100通過從多路復用器模塊110輸出已知為預測單位(PU) 120的預測 數據樣本的陣列來進行工作。差模塊115輸出預測單位(PU) 120和從幀數據101所接收到 的數據樣本的相應陣列之間的差,其中該差已知為殘差數據樣本122。
[0149] 來自差模塊115的殘差數據樣本122被變換模塊102接收到,其中該變換模塊 102將該差從空間表示轉換為頻域表示,以針對變換樹中的各變換單位(TU)創建變換係數 124。針對開發中的高效率視頻編碼(HEVC)標準,使用改進的離散餘弦變換(DCT)來實現 向著頻域表示的轉換,其中在該改進的離散餘弦變換中,對傳統的DCT進行修改以使用移 位和加法來實現。然後將變換係數124輸入至縮放和量化模塊103,並且進行縮放和量化以 產生殘差係數126。該縮放和量化處理導致精度損失。
[0150] 將殘差係數126視為向著逆縮放模塊105的輸入,其中該逆縮放模塊105反轉縮 放和量化模塊103所進行的縮放以產生作為殘差係數126的重新縮放版本的重新縮放變換 係數128。還將殘差係數126視為向著熵編碼器模塊104的輸入,其中該熵編碼器模塊104 將殘差係數編碼在編碼位流113中。由於縮放和量化模塊103所引起的精度損失,因此重新 縮放變換係數128與原始變換係數124不一致。然後,將來自逆縮放模塊105的重新縮放 變換係數128輸出至逆變換模塊106。逆變換模塊106進行從頻域向著空間域的逆變換,以 產生與在解碼器處所產生的空間域表示相同的重新縮放變換係數128的空間域表示130。
[0151] 運動估計模塊107通過將幀數據101與配置在存儲器306內的幀緩衝器模塊112 中所存儲的先前幀數據進行比較來產生運動矢量132。然後將這些運動矢量132輸入至運 動補償模塊108,其中該運動補償模塊108考慮到源自於運動矢量132的空間偏移,通過對 幀緩衝器模塊112中所存儲的樣本進行濾波來產生幀間預測的參考樣本134。儘管圖1沒 有示出,但還將運動矢量132作為句法元素傳遞至熵編碼器模塊104以編碼在編碼位流113 中。幀內預測模塊109使用從求和模塊114獲得的樣本138來產生幀內預測的參考樣本 136,其中該求和模塊114對多路復用器模塊110的輸出120和來自逆變換模塊106的輸出 130進行求和。
[0152] 可以使用幀內預測或幀間預測方法來對預測單位(PU)進行編碼。根據由此得到 的編碼位流113的期望位率和由於幀內預測或幀間預測方法而引入的圖像質量失真量之 間的率失真權衡來判斷是使用幀內預測還是幀間預測。如果使用幀內預測,則還根據率失 真權衡,從一組可能模式中選擇一個幀內預測模式。針對各預測單位選擇一個幀內預測模 式。
[0153] 多路復用器模塊110根據利用儘管未示出但本領域內眾所周知的控制邏輯所確 定的當前預測模式142,來選擇來自幀內預測模塊109的幀內預測的參考樣本136或來自運 動補償塊108的幀間預測的參考樣本134。還將預測模式142提供至熵編碼器104,並且如 此使用該預測模式142來確定或建立如將說明的變換單位的掃描順序。幀間預測僅使用對 角掃描順序,而幀內預測可以使用對角掃描、水平掃描或垂直掃描順序。
[0154] 求和模塊114產生總和138,其中將該總和138輸入至去塊濾波器模塊111。去塊 濾波器模塊111沿著塊邊界進行濾波,從而產生寫入存儲器306內所配置的幀緩衝器模塊 112的去塊樣本140。幀緩衝器模塊112是具有用以保持來自多個過去幀的數據以供將來 參考的充足容量的緩衝器。
[0155] 在視頻編碼器100中,通過求出輸入幀數據101的數據樣本和輸入幀數據101的 數據樣本的預測120之間的差來確定一個變換單位(TU)內的殘差數據樣本122。該差提供 變換單位(TU)的殘差係數的空間表示。將變換單位(TU)的殘差係數轉換成二維有效性映 射。
[0156] 然後,按已知為掃描順序的特定順序來掃描變換單位(TU)中的殘差係數的有效 性映射,以形成被稱為有效係數標誌的列表的標誌值的一維列表。可以描述該掃描順序,或 者可以通過諸如利用預測模式142從幀內預測模塊109所接收到的掃描模式等的掃描模式 來指定該掃描順序。掃描模式可以是水平、垂直、對角或折線的。
[0157] 高效率視頻編碼(HEVC)測試模型的版本6(即,"HE_6.0")進行後向方向上的掃 描。然而,還可以進行前向方向上的掃描。在HEVC參考模型版本6.0(即,"HE_6.0")中, 掃描操作開始最末有效係數之後(其中,"之後"是在殘差係數的後向掃描的方向上)的一 個殘差係數,並且繼續直到到達有效性映射的左上位置為止。具有該特性並且符合HEVC參 考模型版本6. 0的掃描操作已知為"後向掃描"。在HEVC參考軟體版本6. 0 (即,"HE_6. 0") 中,通過對變換單位(TU)中的係數的坐標進行編碼來用信號通知最末有效係數的位置。該 上下文中的形容詞"最末"的使用依賴於掃描的特定順序。根據一個掃描模式可以作為"最 末的"非零殘差係數或相應的1值有效係數標誌的內容根據其它掃描模式可能不是"最末 的"。
[0158] 將表示最末有效係數之前的各殘差係數的有效性的有效係數標誌的列表編碼在 位流中。由於針對最末有效係數標誌的位置的先前編碼隱含表示該殘差係數是有效的,因 此不要求將最末有效係數標誌值明確編碼在位流中。
[0159] 較大值的殘差係數向著變換單位(TU)的左上方的聚集導致列表中較早的大部分 有效性標誌是有效的,而稍後在列表中發現較少的有效性標誌。
[0160] 如上所述,視頻編碼器100還包括實現熵編碼方法的熵編碼器模塊104。熵編碼器 模塊104根據從縮放和量化模塊103接收到的傳入殘差係數數據(或殘差係數)126產生 句法元素。熵編碼器模塊104輸出編碼位流113,並且以下將更詳細地進行說明。對於開發 中的高效率視頻編碼(HEVC)標準,將編碼位流113描繪成網絡抽象層(NAL)單位。幀的各 片包含在一個NAL單位中。
[0161] 針對熵編碼器模塊104中所實現的熵編碼方法,存在幾個替代方案。開發中的 高效率視頻編碼(HEVC)標準支持上下文自適應二進位算術編碼(CABAC),其中在H. 264/ MPEG-4AVC中發現上下文自適應二進位算術編碼(CABAC)的變形。替代的熵編碼方案已知 為概率區間劃分熵(PIPE)編碼器。
[0162] 對於支持多個視頻編碼方法的視頻編碼器100,根據編碼器100的結構來選擇所 支持的熵編碼方法其中之一。此外,在對來自各幀的編碼單位進行編碼時,熵編碼器模塊 104編寫編碼位流113,以使得各幀具有一個或多個片,其中各片包含該幀的一部分的圖像 數據。針對每幀產生一個片,這樣減少了與描述各片邊界相關聯的開支。然而,還可以將幀 分割成多個片。
[0163] 可以將圖2的視頻解碼器200作為駐留在硬碟驅動器310上並且由處理器305來 控制其執行的軟體應用程式333的一個或多個軟體代碼模塊來實現。特別地,視頻解碼器 200包括各自可以作為軟體應用程式333的一個或多個軟體代碼模塊來實現的模塊202? 208和210。儘管參考高效率視頻編碼(HEVC)視頻解碼流水線來描述視頻解碼器200,但 模塊202?208和209所進行的處理階段對於採用諸如H. 264/MPEG-4AVC、MPEG-2和VC-1 等的熵編碼的其它視頻編解碼器而言是共通的。
[0164] 諸如編碼位流113等的編碼位流被視頻解碼器200接收到。可以從存儲器306、硬 盤驅動器310、⑶-ROM、藍光(Blu-ray?)盤或其它計算機可讀存儲介質讀取編碼位流113。 可選地,可以從諸如連接至通信網絡320的伺服器或射頻接收器等的外部源來接收編碼位 流113。編碼位流113包含表示要解碼的幀數據的編碼句法元素。
[0165] 將編碼位流113輸入至熵解碼器模塊202,其中該熵解碼器模塊202從編碼位流 113中提取句法元素,並且將這些句法元素的值傳遞至視頻解碼器200中的其它塊。可以存 在諸如參考熵編碼器模塊104所述等的在熵解碼器模塊202中所實現的多個熵解碼方法。 將表示殘差係數數據的句法元素數據220傳遞至逆縮放和變換模塊203,並且將表示運動 矢量信息的句法元素數據222傳遞至運動補償模塊204。逆縮放和變換模塊203對殘差系 數數據進行逆縮放以創建重建變換係數。然後,諸如參考逆變換模塊106所述的逆變換等, 模塊203進行逆變換以將重建變換係數從頻域表示轉換成空間域表示,從而產生殘差樣本 224。
[0166] 運動補償模塊204將來自熵解碼器模塊202的運動矢量數據222與來自存儲器 306內所配置的幀緩衝器塊208的先前幀數據226相組合使用,以產生作為輸出解碼幀數據 的預測的針對預測單位(PU)的幀間預測參考樣本228。在句法元素表示使用幀內預測對當 前編碼單位進行編碼的情況下,幀內預測模塊205使用在空間上鄰接預測單位(PU)的樣本 來產生針對預測單位(PU)的幀內預測的參考樣本230。根據從求和模塊210輸出的總和 232來獲得在空間上鄰接的樣本。多路復用器模塊206根據利用編碼位流113中的句法元 素所表示的當前預測模式來選擇針對預測單位(PU)的幀內預測參考樣本或幀間預測參考 樣本。利用求和模塊210將從多路復用器模塊206輸出的樣本陣列234與來自逆縮放和變 換模塊203的殘差樣本224相加,以產生總和232,然後將該總和232分別輸入至去塊濾波 器模塊207和幀內預測模塊205。與編碼器100相對比,幀內預測模塊205從熵解碼器202 接收預測模式236。多路復用器206從熵解碼器202接收幀內預測/幀間預測選擇信號。 去塊濾波器模塊207沿著數據塊邊界進行濾波以使沿著數據塊邊界可見的偽影平滑化。將 去塊濾波器模塊207的輸出寫入存儲器306內所配置的幀緩衝器模塊208。幀緩衝器模塊 208提供用以保持多個解碼幀以供將來參考的充足存儲量。還從幀緩衝器模塊208輸出解 碼幀209。
[0167] 將參考圖4A和圖4B來說明示例的變換單位(TU) 400的空間結構。
[0168] 圖4A示出示例的變換單位(TU) 400。變換單位400具有矩形空間結構並且大小可 以為4X4?32X32。變換單位(TU)400的寬度和高度取作為二(2)的整數冪的值。
[0169] 如上所述,變換單位(TU)保持殘差係數。可以定義將變換單位(TU)400分割成 一個或多個子集401的集合的兩級掃描。根據最末有效係數的位置,除可能包含少於十六 (16)個殘差係數的按掃描順序的第一個子集以外,各子集包括按掃描順序403的十六(16) 個連續殘差係數。如從圖4B看出,示例的變換單位400相對於掃描順序403具有最末有效 係數位置451。
[0170] 如從圖4A看出,在變換單位400的上級處,通過使用諸如後向對角左下掃描等的 掃描來掃描各下級,進行掃描。在還已知為"子集級"的變換單位400的下級處,可以使用 諸如後向對角左下掃描等的掃描來進行掃描。在變換單位400的上掃描級處,如果下一子 集不包含任何有效殘差係數,則可以確定不進行下一子集的下級掃描。
[0171] 變換單位400包含不具有有效殘差係數的子集452。在該示例中,可以針對子集 452跳過下級掃描步驟,並且高級掃描按掃描順序403進入下一子集。變換單位400的左上 子集405具有子集索引零。其它子集按與掃描順序相反的順序具有遞增索引。
[0172] 將參考圖5和圖7來說明諸如變換單位(TU)400等的變換單位(TU)的句法元素 結構。位流113的位流部501包含變換單位(TU)400的句法元素並且包括以下句法元素。
[0173] (i) delta_qp 502 :delta_qp句法元素502包含與用於對變換單位(TU) 400進行 量化的量化參數值和預定量化參數值之間的差有關的信息。
[0174] (ii) last_significant_xy 503 :last_significant_xy 句法兀素 503 包含與變換單 位(TU)400中的最末有效殘差係數的位置有關的信息。
[0175] (iii)子集殘差係數數據504 :子集殘差係數數據包括零個或多個塊701,並且包 含與變換單位(TU)400的殘差係數的值有關的信息。
[0176] 如圖7所示,塊701包含與變換單位(TU)的一個子集的殘差係數的值有關的信 息,並且包括以下句法元素。
[0177] (i) significant_coefT_group_flag 702 :針對各子集對 significant_coeff_ gr〇Up_flag句法元素702進行一次編碼,並且在"假"的情況下,推斷出子集中的所有殘 差係數為零,並且在塊701中不存在殘差係數數據703、704、705、706和707。否則(在 significant_coeff_group_flag句法元素702為"真"的情況下),子集中的至少一個殘差 係數具有非零值,並且在塊701中存在殘差係數數據703、704、705、706和707的一些組合。
[0178] (ii)零個或多個 significant_coeff_flag 值的塊 703 :如果 significant_coeff_ group_flag 702表示塊703的存在,則存在塊703。除最末有效殘差係數以外,針對子集的 每個殘差係數在塊703中均存在significant_coeff_flag 702的值,以表不給定殘差係數 的量值是否大於零。
[0179] (iii)零個或多個 coeff_abs_level_greaterl_flag 值的塊 7〇4 :如果 significant_coeff_group_flag 702表示塊704的存在,貝U存在塊704。針對子集的量值被 表不為大於零的每個殘差係數,在塊703中存在coeff_abs_level_greaterl_f lag值,以表 示給定殘差係數的量值是否大於1。
[0180] (iv)零個或多個 coeff_abs_level_greater2_flag 值的塊 705 :如果 significant_coeff_group_flag 702表示塊705的存在,則存在塊705。針對子集的量值被 表不為大於1的每個殘差係數,在塊705中存在coeff_abs_level_greater2_flag值,以表 示給定殘差係數的量值是否大於2。
[0181] (v)零個或多個 coeff_sign_flag 值的塊 706 :如果 significant_coeff_group_ flag 702表示塊706的存在,則存在塊706。針對量值被表示為大於零的每個殘差係數,在 塊706中存在coeff_sign_flag值,以表示給定殘差係數的算術符號。
[0182] (vi)零個或多個coeff_abs_level_remaining值的塊707 :針對殘差係數量 值-3的給定值(即,剩餘殘差係數量值),塊707的各coeff_abs_level_remaining值 是 Golomb-Rice 碼字。如果 significant_coeff_group_flag 702 表示塊 707 的存在,貝丨J存 在塊707。針對量值被表示為大於2的各殘差係數,在塊707中存在C〇eff_abs_l evel_ remaining值。coeff_abs_level_remaining值針對給定殘差係數的剩餘殘差係數量值,指 定Golomb-Rice碼字的值。
[0183] 現在將參考圖6A來說明對變換單位(TU)進行編碼的方法650。可以將方法650 作為編碼器100的熵編碼器模塊104的一部分來實現。如上所述,構成編碼器100的軟體 代碼模塊102?112、114和115駐留在硬碟驅動器310上,並且由處理器305控制這些模 塊的執行。
[0184] 將參考圖5的位流部501來以示例方式說明方法650。方法650將delta_qp502、 last_significant_xy503和數據504編碼在位流部501中。
[0185] 方法650從對delta-qp值進行編碼的步驟651開始,其中在該步驟651中,在處 理器305的執行下,利用編碼器模塊104對delta-qp值進行編碼,並且存儲在存儲器306 中。
[0186] 然後,在對最末有效位置進行編碼的步驟652中,在處理器305的執行下,利用編 碼器模塊104將最末有效殘差係數的位置編碼在位流部501中。可以將位流部501存儲在 存儲器306中。使用最末有效殘差係數的位置、變換單位的寬度和高度和與掃描順序403 有關的信息來確定要編碼在變換單位(TU)中的子集的數量。
[0187] 方法650在對子集進行編碼的步驟653中繼續,其中在該步驟653中,利用編碼器 模塊104對子集數據504進行編碼並且存儲在存儲器306內。
[0188] 然後,在確定步驟654中,編碼器模塊104基於與變換單位(TU)中的最末有效殘 差係數的位置和所使用的掃描順序403有關的信息,判斷是否應將更多子集504編碼在位 流部501中。如果編碼器模塊104判斷為存在要編碼的更多子集504,則方法650返回至對 子集進行編碼的步驟653。如此,方法650迭代地進行步驟653和654,直到處理了從包含 最末有效係數的子集到第一個子集的所有子集為止。否則,方法650結束。
[0189] 將參考圖6B來說明對變換單位(TU)進行解碼的方法600。可以將方法600作為 解碼器200的熵解碼器模塊202的一部分來實現。如上所述,構成解碼器200的軟體代碼 模塊202?208和210駐留在硬碟驅動器310上,並且由處理器305控制執行這些模塊的 執行。
[0190] 再次,將參考根據方法650進行編碼後的圖5的位流部501來以示例方式說明方 法600。方法600從位流部501解碼數據塊502、503、504。
[0191] 該方法從對delta-qp值進行解碼的步驟601開始,其中在該步驟601中,在處理 器305的執行下,利用解碼器模塊202確定delta-qp標誌的值。可以將delta-qp標誌值 存儲在存儲器306中。
[0192] 然後,在對最末有效位置進行解碼的步驟602中,利用解碼器模塊202確定變換單 位(TU)中的最末有效殘差係數的位置。使用最末有效殘差係數的位置、變換單位的寬度和 高度以及與掃描順序403有關的信息來確定在變換單位(TU)中要解碼的子集的數量。
[0193] 方法600在對子集進行解碼的步驟603中繼續,其中在該步驟603中,在處理器 305的執行下,利用解碼器模塊202對子集數據504進行解碼。可以將解碼後的子集數據存 儲在存儲器306內。
[0194] 然後,在確定步驟604中,解碼器模塊202基於與變換單位(TU)中的最末有效殘 差係數的位置和所使用的掃描順序403有關的信息,來判斷是否應從位流部501解碼更多 子集504。
[0195] 如果解碼器模塊202判斷為存在要解碼的更多子集504,則方法600返回至子集步 驟603。否則,方法600結束。
[0196] 現在將參考圖8A來說明對變換單位(TU)的子集進行編碼的方法850。可以將方 法850作為編碼器100的熵編碼器模塊104的一部分來實現。如上所述,構成編碼器100 的軟體代碼模塊102?112U14和115駐留在硬碟驅動器310上,並且由處理器305控制 這些模塊的執行。
[0197] 將參考圖7的塊701以示例方式說明方法850。方法850將塊702、703、704、705、 706、707編碼在位流部501中。
[0198] 方法850從對有效組標誌進行編碼的步驟851開始,其中在該步驟851中,編碼器 模塊104在處理器305的執行下,對significant_coeff_group_flag 702的值進行編碼並 將編碼值存儲在存儲器306中。
[0199] 然後,在步驟852中,如果significant_coeff_group_flag 702的值表示子集包含 針對塊703、704、705、706、707要編碼的數據,則方法850進入步驟853。否則,方法850結 束。
[0200] 在編碼步驟853中,編碼器模塊104在處理器305的執行下,對significant# C〇eff_flag值的塊703進行編碼。編碼器模塊104針對子集的除變換單位(TU)的最末有 效殘差係數以外的各殘差係數,確定一個significant_coeff_flag值。可以將significant# coeff_f lag值存儲在存儲器306中。
[0201] 然後,在編碼步驟854中,編碼器模塊104對coeff_abs_level_greaterl_flag值 的塊704進行編碼。編碼器模塊104針對子集的量值大於零的各殘差係數,確定一個coeff_ abs_level_greaterl_flag 值。可以將編碼後的 coeff_abs_level_greaterl_flag 值存儲 在存儲器306中。
[0202] 在編碼步驟855中,編碼器模塊104對coeff_abs_level_greater2_flag值的塊 705進行編碼。編碼器模塊104針對子集的量值大於1的各殘差係數,確定一個c 〇eff_abs_ level_greater2_flag 值。可以將編碼後的 coeff_abs_level_greater2_flag 值存儲在存 儲器306中。
[0203] 然後,在編碼步驟856中,編碼器模塊104在處理器305的執行下,對c〇eff_sign_ flag值的塊706進行編碼。編碼器模塊104針對子集的量值大於零的各殘差係數,確定一 個coeff_sign_flag值。可以將編碼後的coeff_sign_flag值存儲在存儲器306中。
[0204] 在編碼步驟857中,編碼器模塊104對coeff_abs_level_remaining值的塊707進 行編碼。編碼器模塊104針對子集的量值大於2的各殘差係數,確定一個 C〇eff_abs_level_ remaining值。可以將編碼後的coeff_abs_level_remaining值存儲在存儲器306中。在 步驟857之後,方法850結束。
[0205] 將參考圖8B來說明對變換單位(TU)的子集進行解碼的方法800。可以將方法800 作為解碼器200的熵解碼器模塊202的一部分來實現。如上所述,構成解碼器200的軟體 代碼模塊202?208和210駐留在硬碟驅動器310上,並且由處理器305控制這些模塊的 執行。
[0206] 將參考圖7的塊701來以示例方式說明方法800。方法800從位流部501解碼塊 702、703、704、705、706、707。
[0207] 方法800從對有效組標誌進行解碼的步驟801開始,其中在該步驟801中,解 碼器模塊202對significant_coeff_group_flag 702的值進行解碼。可以將解碼後的 significant_coeff_group_flag 702 值存儲在存儲器 306 中。
[0208] 然後,在步驟802中,如果解碼器模塊202判斷為significant_coeff_group_flag 702的值表示子集包含殘差係數數據塊703、704、705、706、707,則方法800進入步驟803。 否則,方法800結束。
[0209] 在解碼步驟803中,解碼器模塊202在處理器305的執行下,對significant# coeff_f lag值的塊703進行解碼。解碼器模塊202針對子集的除變換單位(TU)的最末 有效殘差係數以外的各殘差係數,確定一個significant_coeff_flag值。可以將解碼後的 significant_coeff_flag 值存儲在存儲器 306 中。
[0210] 然後,在解碼步驟 804 中,解碼器模塊 202 對 coeff_abs_level_greaterl_flag 值的塊704進行解碼。解碼器模塊202針對子集的在步驟803中量值被確定為大於零的 各殘差係數,確定一個coeff_abs_level_greaterl_flag值。可以將解碼後的coeff_abs_ level_greaterl_f lag值存儲在存儲器306中。
[0211] 在解碼步驟805中,解碼器模塊202在處理器305的執行下,對coeff_abs_level_ greater2_flag值的塊705進行解碼。解碼器模塊202針對子集的在步驟804中量值被確 定為大於1的各殘差係數,確定一個coeff_abs_level_greater2_flag值。可以將解碼後 的 coeff_abs_level_greater2_flag 值存儲在存儲器 306 中。
[0212] 然後,在解碼步驟806中,解碼器模塊202對coeff_sign_flag值的塊706進行解 碼。解碼器模塊202針對子集的在步驟803中量值被確定為大於零的各殘差係數,確定一 個coeff_sign_flag值。可以將coeff_sign_flag值存儲在存儲器306中。
[0213] 方法800在步驟807中結束,其中在步驟807中,解碼器模塊202對coeff_abs_ level_remaining值的塊707進行解碼。解碼器模塊202針對子集的在步驟805中量值被 確定為大於2的各殘差係數,確定一個coeff_abs_level_remaining值。同樣在步驟807 中,解碼器模塊202針對給定殘差係數的剩餘殘差係數量值,確定Golomb-Rice碼字的值。
[0214] 在步驟807之後,方法800結束。
[0215] 現在將參考圖9、圖10、圖14A和圖14B來說明參數化Golomb-Rice碼和這些碼在 HEVC參考模型版本6.0中的使用以及這裡所述的方法。
[0216] 參數化Golomb-Rice碼是用於表示變換單位(TU)的殘差係數的剩餘殘差係數量 值的一類通用前綴二進位碼。前綴二進位碼是每個二進位碼字具有唯一前綴的二進位值表 示。這種唯一前綴使得能夠將特定碼字與其它碼字區分開,這是唯一地識別這些碼字所表 示的值所需的。
[0217] 參數化Golomb-Rice碼的各碼字可以包括參數化截斷Rice前綴部分和可能的空 階次〇指數Golomb後綴部分這兩部分。截斷Rice前綴部分依賴於可能取值0、1、2、3、4的 參數K。對於參數K的每個值,定義閾值。如果殘差係數剩餘量值的編碼值小於閾值,則利 用無指數Golomb後綴的截斷Rice碼來對該值進行編碼。
[0218] 如果殘差係數剩餘量值的編碼值等於或大於閾值,則對預定截斷Rice碼字進行 編碼,以表示編碼值等於或大於閾值。此外,使用階次0指數Golomb碼對與(原始編碼 值 -閾值的值)相等的值進行編碼。
[0219] 如從圖9看出,表900包含針對值為0?15且參數K值為0和1的示例截斷Rice 碼字。
[0220] 如從圖10看出,表1000包含示例的階次0指數Golomb碼字。例如,使用具有參 數 K = 0 的 Golomb-Rice 碼,將利用構成 Golomb-Rice 碼字"11111111110"的截斷 Rice 前 綴"11111111"和階次0指數Golomb後綴"110"來表示值十(10)。在已知參數K的值的情 況下,可以根據給定二進位序列來唯一地識別Golomb-Rice碼字。
[0221] 參數化Golomb-Rice碼的每個碼字具有依賴於參數K和編碼值的固定長度。有限 數量的碼字可以具有給定長度。如此,對於編碼值的集合,利用較短的碼字來表示一些編碼 值,而利用較長的碼字來表示其它編碼值。對於視頻數據編碼,可以將碼字分配至編碼值, 從而使編碼在位流113中的所有碼字的總長度最小。不同的剩餘殘差係數量值在變換單位 (TU)數據中的出現頻率不同。可以通過將碼字分配至編碼值、以使得碼字的長度與編碼值 的出現頻率相對應來實現總碼字長度的縮減。例如,可以向殘差係數剩餘量值的更頻繁值 分配較短的碼字,並且可以向頻率相同的殘差係數剩餘量值的值分配長度相同的碼字。
[0222] 參數化Golomb-Rice碼的參數K使得能夠在要控制的碼字中分配碼字長度。值較 小的參數K將更佳的碼字分配至量值較小的值,而值較大的參數K將更佳的碼字分配至量 值較大的值。因此,為了大體分配最佳碼字,所述方法基於殘差係數剩餘量值的給定值的出 現頻率來確定參數K的值。
[0223] 在開發中的HEVC標準中,預先並不知曉諸如剩餘殘差係數量值的值等的殘差系 數剩餘量值的真實頻率,因而在子集內進行參數K值的估計。為了確保參數化Golomb-Rice 碼字的正確解碼,編碼器100和解碼器200可被配置為使用參數K的相同值來對特定碼字 進行解碼。如此,頻率值的估計局限於解碼器200處可利用的信息。
[0224] 頻率值的估計可以包括初始估計和自適應這兩個階段。
[0225] 初始估計階段針對參數K提供初始估計值。由於正對剩餘殘差係數量值的值進行 解碼並且更多信息變得可用於進行分析,因而自適應階段提供針對參數K的值的進一步校 正。
[0226] 初始估計確保了更佳的碼字分配。另一方面,初始估計通常難以以如可利用不對 與剩餘殘差係數量值的值有關的信息進行解碼之前那樣的高效方式實現。最初確定參數K 的估計的高效方法可以提供編碼效率方面的大幅改進。
[0227] 在參數K的初始估計期間,可以檢測進一步自適應將不會對參數K的值產生明顯 影響、因此可以跳過該自適應的情況。自適應階段大體改進編碼效率。然而,對於實際情況 的廣泛類別,由於初始估計提供參數K的最佳值並且無需進一步的自適應,因此自適應是 冗餘的。自適應階段的一個缺點是無法對coeff_abs_level_remaining值的連續值進行並 行解碼,這是因為在不知曉在先前coeff_abs_level_remaining值的解碼之後自適應地估 計出的參數K的值的情況下,無法對各值進行解碼。
[0228] 現在將參考圖11和圖12A來說明對變換單位(TU)的子集的coeff_abs_level_ remaining值的塊進行編碼的方法1250。
[0229] 可以將方法1250作為編碼器100的熵編碼器模塊104的一部分來實現。如上所 述,構成編碼器100的軟體代碼模塊102?112、114和115駐留在硬碟驅動器310上,並且 由處理器305控制這些模塊的執行。
[0230] 將參考圖7的coeff_abs_level_remaining值的塊707通過示例來說明方法 1250。方法1250將零個或多個coeff_abs_level_remaining值編碼在位流部501的塊701 中。
[0231] 方法1250從初始化步驟1251開始,其中在該初始化步驟1251中,在處理器305 的執行下,利用編碼器模塊104來初始估計Golomb-Rice參數K。可以將K的初始值存儲在 存儲器306中。此外,在步驟1251中,編碼器模塊104判斷編碼期間的參數K自適應的必 要性。
[0232] 然後,在確定步驟1257中,如果編碼器模塊104判斷為需要進行自適應,則方法 1250進入步驟1252。以下將更詳細地說明自適應確定步驟1257。否則,方法1250進入步 驟 1255。
[0233] 在確定步驟1252中,如果編碼器模塊104判斷為存在更多要編碼的c〇eff_abs_ level_remaining值,則方法1250進入步驟1253。否則,方法1250結束。
[0234] 在編碼步驟1253中,編碼器模塊104如以上參考表900和1000所述,根據 Golomb-Rice參數K的初始值來將Golomb-Rice碼字編碼在塊707中。
[0235] 然後,在更新步驟1254中,編碼器模塊104進行要用於對下一 coeff_abs_level_ remaining值進行編碼的參數K的值的自適應。在步驟1254中,基於參數的當前值Kn和最 後解碼的coeff_abs_level_remaining值這兩個參數來確定參數Κ的下一值Κ η+1。可以使 用如圖11所示的查找表1100來確定步驟1254。可以將查找表1100存儲在存儲器306和 /或硬碟驅動器310中。查找表1100使用值Κ η作為列並使用殘差係數量值作為行來提供 κη+1的值。例如,如果參數Κ的當前值是一(1)並且最後解碼的coeff_abs_level_remaining 值是十二(12),則參數K的下一值是三(3)。
[0236] 在確定步驟1255中,如果編碼器模塊104判斷為存在更多要編碼的c〇eff_abs_ level_remaining值,則方法1250進入步驟1256。否則,方法1250結束。
[0237] 在編碼步驟1256中,編碼器模塊104將Golomb-Rice碼字編碼在塊707中並將編 碼後的Golomb-Rice碼字存儲在存儲器306中。
[0238] 現在將參考圖11和圖12B來說明對變換單位(TU)的子集的coeff_abs_level_ remaining值的塊進行解碼的方法1200。根據使用Golomb-Rice解碼的方法1200來進行 解碼。可以將方法1200作為解碼器200的熵解碼器模塊202?208的一部分來實現。如 上所述,構成解碼器200的軟體代碼模塊202?208和210駐留在硬碟驅動器310上,並且 由處理器305控制這些模塊的執行。
[0239] 將參考圖7的coeff_abs_level_remaining值的塊707通過示例來說明方法 1200。方法1200從位流部501的塊707解碼零個或多個coeff_abs_level_remaining值 (即,殘差係數剩餘量值的值)。
[0240] 方法1200從初始化步驟1201開始,其中在初始化步驟1201中,在處理器305的 執行下,利用解碼器模塊202初始確定Golomb-Rice參數K。此外,在步驟1201中,解碼器 模塊202確定解碼期間的參數K自適應的必要性。步驟1201與步驟1251相同。
[0241] 然後,在確定步驟1207中,如果解碼器模塊202判斷為需要進行自適應,則如以下 將說明的,方法1200進入步驟1202。否則,方法1200進入步驟1205。
[0242] 然後,在確定步驟1202中,如果解碼器模塊202判斷為存在更多要解碼的coefT_ abs_level_remaining值,則方法1200進入步驟1203。否則,方法1200結束。
[0243] 在解碼步驟1203中,解碼器模塊202從存儲器306中所存儲的塊707解碼 Golomb-Rice 碼字。
[0244] 然後,在更新步驟1204中,解碼器模塊202進行要用於對子集的下一 c〇eff_abs_ level_remaining值進行Golomb-Rice解碼的參數K的值的自適應。步驟1204中所進行的 自適應的過程與以上所述的步驟1254中所使用的自適應的過程相同。
[0245] 在確定步驟1205中,如果解碼器模塊202判斷為存在更多要解碼的c〇eff_abs_ level_remaining值,則方法1200進入步驟1206。否貝丨J,方法1200結束。
[0246] 在解碼步驟1206中,解碼器模塊202使用Golomb-Rice解碼來從塊707解碼 Golomb-Rice碼字。可以將解碼後的Golomb-Rice碼字存儲在存儲器306中。
[0247] 現在將參考圖14A和圖14B來說明剩餘殘差係數量值的自適應和非自適應解碼。
[0248] 圖14A示出coeff_abs_level_remaining二值化器1400。可以使用計算機系統 300來實現二值化器模塊1400,其中在該計算機系統300中,可以利用在計算機系統300內 可執行的軟體來實現各種功能模塊1414、1413、1406、1407和1410。可選地,可以利用計算 機系統300內的專用硬體來實現二值化器1400。在又一替代中,可以利用專用硬體和在計 算機系統300內可執行的軟體的組合來實現二值化器1400。
[0249] 可以將二值化器1400作為解碼器200的解碼器模塊202的一部分來實現。可選 地,還可以將二值化器1400作為編碼器100的編碼器模塊104的一部分來實現。
[0250] 二值化器1400針對變換單位(TU)的子集,對剩餘殘差係數量值進行解碼。
[0251] 二值化器1400使用參數K的自適應估計。二值化器1400包括&的初始估計模 塊1414,其中該模塊1414如上所述進行參數K的初始估計。
[0252] 模塊1413對剩餘殘差係數量值V。進行解碼。模塊1413接受所輸入的Go lomb-Ri ce 碼字1402和參數K的初始估計值1401。一旦模塊1413完成了解碼,則如從圖14A看出,輸 出解碼剩餘殘差係數量值1412。
[0253] 模塊1406基於參數Κ的初始估計值1401和如上所述利用模塊1413進行解碼後 的值1404來進行參數K值的自適應。
[0254] 模塊1407對剩餘殘差係數量值Vi進行解碼。模塊1407接受Golomb-Rice碼字 1403和參數K的估計值1405作為輸入。一旦模塊1407完成了解碼,則輸出解碼剩餘殘差 係數量值1411。
[0255] 模塊1410基於參數K的先前值1405和利用模塊1407進行解碼後的值1408來進 行參數K值的自適應。
[0256] 可以利用下一 Golomb-Rice解碼和自適應模塊1415來使用參數K的估計值1409。 模塊1410依賴於模塊1407所提供的數據,而模塊1407依賴於模塊1406所提供的數據,而 模塊1406依賴於模塊1413所提供的數據。如此,難以並行執行解碼模塊1413和1410。此 夕卜,解碼和自適應模塊1415也依賴於輸入數據1416和參數K的先前估計值這兩者。然而, 在參數K的值已是最佳的情況下,諸如步驟1406和1410等的自適應步驟不會影響參數K 的實際值。避免冗餘的自適應步驟可以在不會對編碼效率產生大幅影響的情況下提高解碼 吞吐量。
[0257] 圖14B不出另一 coeff_abs_level_remaining二值化器1450。再次,可以使用計 算機系統300來實現二值化器模塊1450,其中在該計算機系統300中,可以利用在計算機系 統300內可執行的軟體來實現各種功能模塊1414、1413、1406、1407和1410。可選地,可以 利用計算機系統300內的專用硬體來實現二值化器1450。在又一替代中,可以利用專用硬 件和在計算機系統300內可執行的軟體的組合來實現二值化器1450。
[0258] 再次,可以將二值化器1450作為解碼器200的解碼器模塊202的一部分來實現。 可選地,還可以將二值化器1450作為編碼器100的編碼器模塊104的一部分來實現。
[0259] 二值化器1450不使用參數K的自適應估計。二值化器1450通過針對每個時鐘周 期對多個殘差係數進行解碼來實現平行性。
[0260] 模塊1458如上所述進行參數K的初始估計。
[0261] 模塊1454如上所述對剩餘殘差係數量值%進行解碼。
[0262] 然後,模塊1454接受所輸入的Golomb-Rice碼字1452和參數K的初始估計值 1451。模塊1456對剩餘殘差係數量值Vi進行解碼。模塊1456接受Golomb-Rice碼字1453 和參數K的初始估計值1451作為輸入。
[0263] 此外,解碼模塊1460還將接受它們相應的輸入Golomb-Rice碼字1459和參數K 的初始估計值1451。
[0264] 模塊1454U456和所有其它解碼器模塊1460不具有任何數據依賴性並且可以並 行執行。
[0265] 現在將參考圖13來說明確定用於對變換單位(TU)的子集的coeff_abs_level_ remaining值的塊進行解碼的參數K的值的方法1300。
[0266] 方法1300由編碼器100和解碼器200這兩者所使用以確保數據的正確解碼。如 此,可以將方法1300作為編碼器100的熵編碼器模塊104的一部分來實現。此外,可以將 方法1300作為解碼器200的熵解碼器模塊202的一部分來實現。
[0267] 將參考解碼器200通過示例來說明方法1300。
[0268] 方法1300從步驟1301開始,其中在該步驟1301中,解碼器模塊202在處理器305 的執行下,分析針對變換單位(TU)的當前子集和先前解碼子集的先前解碼信息。可以從存 儲器306訪問針對當前子集的先前解碼信息。以下將更詳細地說明步驟1301。
[0269] 然後,在步驟1302中,解碼器模塊202判斷解碼是否將使用自適應並且確定參數 K的值。以下將更詳細地說明步驟1302。
[0270] 在步驟1303中,利用解碼器模塊202將步驟1302中所估計出的參數K的值分配 至保持參數K的存儲器306內所配置的變量。在步驟1303之後,方法1300結束。
[0271] 在一個實現中,步驟1301可以分析當前子集中的非零殘差係數的數量是否大於 預定閾值T。如果非零(有效)殘差係數的數量大於預定閾值,則向參數K分配偏移值 該偏移值將導致具有非零值的參數K相對於零偏移了值。值可以作為 預定值並且設置為一(1)。否則,向參數K分配零設置值KZOT。。
[0272] 對於HEVC測試模型6.0( "HM-6.0"),用於作出該決定的閾值T將是十四(14)。 參數K的偏移值將是一(1),並且零設置值K_。將是零(0)。
[0273] 在另一實現中,在步驟1301中可以分析量化參數Q的值和當前子集的索引I。在這 種實現中,如果量化參數Q的值小於預定閾值T Q並且子集索引I的值小於預定閾值Isubsrt, 則向參數K分配偏移值Kf#。否則,向參數K分配零設置值K ZOT。。
[0274] 對於HEVC測試模型6. 0 ( "HM-6. 0"),用於作出該決定的量化參數TQ的閾值將是 十(10),並且用於作出該決定的子集索引Isubsrt的值將是一(1)。參數K的偏移值1(。"^將 是一(1)並且零設置值K_。將是零(0)。
[0275] 在步驟1301中可以附加地分析變換單位的寬度和高度的值。在這種實現中,如果 變換單位的寬度和高度的值大於預定閾值T width和TMght,則向參數Κ分配偏移值。否 貝1J,向參數Κ分配零設置值KZOT。。
[0276] 對於HEVC測試模型6. 0( "HM-6. 0"),用於作出該決定的變換單位的寬度和高度 的閾值Twidth和TMght將是八⑶和八(8)。參數K的偏移值1(。"^將是一⑴並且零設置 值Κ ζεΜ將是零(0)。
[0277] 在步驟1302中,可以基於子集的索引來進行與子集的編碼或解碼期間使用自適 應有關的決定。如果索引等於或大於預定值I max,則在編碼器方法1250的步驟1257和解碼 器方法1200的步驟1207中,方法進入解碼器的步驟1205和編碼器的步驟1255,並且不使 用參數K的自適應。具有固定的Rice參數K可被視為無依賴性的Golomb-Rice編碼或解 碼。否則,方法進入方法1200的步驟1202和方法1250的步驟1252,並且使用參數K的自 適應。具有自適應Rice參數K可被視為基於依賴性的Golomb-Rice編碼或解碼。
[0278] 對於HEVC測試模型6. 0 ( "HM-6. 0"),索引Imax的閾值將是六(6)。圖15示出示 例變換單位1500,其中在該變換單位1500中,在步驟1302中使用索引I max的閾值六(6)以 進行與子集的編碼或解碼期間使用自適應有關的決定。在圖15的示例中假定後向對角掃 描模式。將變換單位1500分割成諸如子集1510等的16個子集。利用字母"A"或字母"F" 來標記圖15的每個子集,其中利用字母"A"所標記的子集表示使用自適應Rice參數K進行 編碼和解碼後的子集;而利用"F"所標記的子集表示在步驟1302中對索引I max使用六(6) 的閾值的情況下、使用固定Rice參數K的子集。針對索引Imax的六的值得到使用子集內的 自適應Ri ee參數K的"A"子集。利用字母"F"所標記的子集表示TU 1500內的如下位置中 的子集:針對索引的閾值六(6)得到使用固定Rice參數的子集。索引Imax的閾值對於 TU 1500中的所有子集相同,並且將TU 1500中的子集的位置與閾值進行比較以判斷自適 應Rice參數是否要用於進行編碼和解碼。使用閾值索引Imax的值來選擇圖15中的自適應 子集和固定子集之間的邊界。子集順序從左上方子集1520的零(0)開始,並且按逆向掃描 順序繼續作為一(1)的子集1530和作為子集二(2)的子集1540。
[0279] 在另一實現中,在步驟1302中,可以基於先前編碼或解碼子集中的大於1的殘差 係數的數量h和大於2的殘差係數的數量G 2來進行與子集的編碼或解碼期間使用自適應 有關的決定。然而,這種方法不適用於不存在先前編碼或解碼子集的情況。在存在先前編 碼或解碼子集的情況下,如果值(G 2_Gi)大於預定閾值T21,則在編碼器方法1250的步驟 1257中(或者在解碼器方法1200的步驟1207中),方法1250進入編碼器方法1250的步 驟1255(或解碼器方法1200的步驟1205)並且不使用參數K的自適應。否則,方法1250 進入編碼器方法1250的步驟1252(或者方法1200進入解碼器方法1200的步驟1200)並 且使用參數K的自適應。
[0280] 對於HEVC測試模型6.0,索引的閾值T21將為四(4)。
[0281] 應用於視頻編碼器100的情況下的方法1250和1300以及應用於解碼器200的方 法1200和1300使得能夠進行用以實現諸如幀數據101等的幀數據的更高效壓縮的實現。 所述方法還使得能夠進行用以實現對諸如編碼位流113等的編碼位流進行解析的吞吐量 的提高的實現。通過使用Golomb-Rice參數K的更好估計而發生幀數據的更高效壓縮,從 而使得能夠將較短的碼字分配至編碼符號。可以通過允許用以使用所述的對Golomb-Rice 碼字進行解碼的方法的實現來實現較高的吞吐量,其中該方法可以通過消除碼字之間的數 據依賴性來一次對一個以上的碼字進行解碼。
[0282] 產業h的可利用件
[0283] 所述的配置適用於計算機和數據處理行業,特別適用於對諸如視頻信號等的信號 進行編碼或解碼的數位訊號處理。
[0284] 前述僅說明本發明的一些實施例,並且可以在沒有背離本發明的範圍和精神的情 況下對本發明進行修改和/或改變,其中這些實施例僅是示例性而非限制性的。
[0285] 在本說明書的上下文中,詞語"包括"意味著"主要但未必僅包括"或"具有"或"包 含",而不是"僅由…組成"。詞語"包括(comprising) "的諸如"comprise"和"comprises" 等的詞尾變化具有相應的變化含義。
【權利要求】
1. 一種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的方法,所述 方法包括以下步驟: 確定所述變換單位的子集的有效殘差係數; 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的有效 殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單位的 子集進行解碼。
2. 根據權利要求1所述的方法,其中,所述預定閾值是14。
3. -種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的設備,所述 設備包括: 用於確定所述變換單位的子集的有效殘差係數的部件; 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的部件,其中在所 確定的有效殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設置存 在偏移;以及 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼的部件。
4. 一種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的系統,所述 系統包括: 存儲器,用於存儲數據和電腦程式; 處理器,其連接至所述存儲器,並且用於執行所述電腦程式,所述電腦程式包括用 於進行以下操作的指令: 確定所述變換單位的子集的有效殘差係數; 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的有效 殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單位的 子集進行解碼。
5. -種記錄有電腦程式的計算機可讀介質,所述電腦程式用於使用Golomb-Rice 解碼對編碼視頻數據的變換單位進行解碼,所述電腦程式包括以下代碼: 用於確定所述變換單位的子集的有效殘差係數的代碼; 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的代碼,其中在所 確定的有效殘差係數的數量高於預定閾值的情況下,所述預定Rice參數相對於零設置存 在偏移;以及 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼的代碼。
6. -種用於對視頻數據流進行解碼以確定解碼視頻數據流中的當前殘差係數的值的 方法,所述方法包括以下步驟: 從所述視頻數據流接收殘差係數的變換單位; 確定所述變換單位的當前殘差係數的位置; 在所述當前殘差係數在所述變換單位中的位置大於預定閾值的情況下,使用無依賴性 的Golomb-Rice解碼對所述當前殘差係數進行解碼,其中所述無依賴性的Golomb-Rice使 用預定Golomb-Rice值; 在所述當前殘差係數在所述變換單位中的位置小於所述預定閾值的情況下,使用針對 當前係數的基於依賴性的Golomb-Rice解碼對所述當前殘差係數進行解碼,其中所述基於 依賴性的Golomb-Rice解碼使用先前解碼殘差係數值以選擇Golomb-Rice值;以及 使用所選擇的Golomb-Rice解碼值來確定所述當前殘差係數的值。
7. -種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的方法,所述 方法包括以下步驟: 確定所述變換單位的量化參數; 確定所述變換單位的子集的有效殘差係數; 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的量化 參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單位的 子集進行解碼。
8. 根據權利要求7所述的方法,其中,所述預定閾值是10。
9. 一種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的設備,所述 設備包括: 用於確定所述變換單位的子集的有效殘差係數的部件; 用於確定所述變換單位的量化參數的部件; 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的部件,其中在所 確定的量化參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼的部件。
10. -種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的系統,所 述系統包括: 存儲器,用於存儲數據和電腦程式; 處理器,其連接至所述存儲器,並且用於執行所述電腦程式,所述電腦程式包括用 於進行以下操作的指令: 確定所述變換單位的子集的有效殘差係數; 確定所述變換單位的量化參數; 選擇所述變換單位的子集的Go 1 omb-Rice解碼的預定Rice參數,其中在所確定的量化 參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單位的 子集進行解碼。
11. 一種記錄有電腦程式的計算機可讀介質,所述電腦程式用於使用 Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼,所述電腦程式包括以下代碼: 用於確定所述變換單位的子集的有效殘差係數的代碼; 用於確定所述變換單位的量化參數的代碼; 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的代碼,其中在所 確定的量化參數低於預定閾值的情況下,所述預定Rice參數相對於零設置存在偏移;以及 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼的代碼。
12. -種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的方法,所 述方法包括以下步驟: 確定所述變換單位的量化參數; 確定所述變換單位的寬度和高度; 確定所述變換單位的子集的有效殘差係數; 選擇所述變換單位的子集的Go 1 omb-Rice解碼的預定Rice參數,其中在所確定的量化 參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾值的情況下,所 述預定Rice參數相對於零設置存在偏移;以及 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單位的 子集進行解碼。
13. 根據權利要求13所述的方法,其中,所述預定閾值是10。
14. 一種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的設備,所 述設備包括: 用於確定所述變換單位的子集的有效殘差係數的部件; 用於確定所述變換單位的量化參數的部件; 用於確定所述變換單位的寬度和高度的部件; 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的部件,其中在所 確定的量化參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾值的 情況下,所述預定Rice參數相對於零設置存在偏移;以及 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼的部件。
15. -種用於使用Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼的系統,所 述系統包括: 存儲器,用於存儲數據和電腦程式; 處理器,其連接至所述存儲器,並且用於執行所述電腦程式,所述電腦程式包括用 於進行以下操作的指令: 確定所述變換單位的子集的有效殘差係數; 確定所述變換單位的量化參數; 確定所述變換單位的寬度和高度; 選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數,其中在所確定的量化 參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾值的情況下,所 述預定Rice參數相對於零設置存在偏移;以及 使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單位的 子集進行解碼。
16. -種記錄有電腦程式的計算機可讀介質,所述電腦程式用於使用 Golomb-Rice解碼對編碼視頻數據的變換單位進行解碼,所述電腦程式包括以下代碼: 用於確定所述變換單位的子集的有效殘差係數的代碼; 用於確定所述變換單位的量化參數的代碼; 用於確定所述變換單位的寬度和高度的代碼; 用於選擇所述變換單位的子集的Golomb-Rice解碼的預定Rice參數的代碼,其中在所 確定的量化參數低於或等於預定閾值、所述寬度大於預定閾值且所述高度高於預定閾值的 情況下,所述預定Rice參數相對於零設置存在偏移;以及 用於使用所述預定Rice參數作為所述Golomb-Rice解碼的初始參數來對所述變換單 位的子集進行解碼的代碼。
【文檔編號】H03M7/40GK104221288SQ201380019838
【公開日】2014年12月17日 申請日期:2013年4月12日 優先權日:2012年4月13日
【發明者】沃洛迪米爾·科勒斯尼科夫 申請人:佳能株式會社