用于視頻編碼的低復雜度幀內預測的制作方法
【專利說明】
[0001] 本申請是申請號為201180034682. 2、國際申請號為PCT/US2011/044014、申請日 為2011年7月14日、發明名稱為"用于視頻編碼的低復雜度幀內預測"的發明專利申請的 分案申請。
技術領域
[0002] 本發明涉及視頻編碼,并且具體地涉及使用來自相同視頻幀的先前編碼并且重建 的像素的、其中預測采樣塊的幀內預測。
【背景技術】
[0003] 數字視頻需要大量數據來以未壓縮的方式代表數字視頻序列(例如系列幀)的每 一幀。對于多數應用而言跨越計算機網絡發送未壓縮的數字視頻由于帶寬限制而不可行。 此外,未壓縮的數字視頻需要大量存儲空間。通常以某一方式對數字視頻編碼以減少存儲 要求并且減少帶寬要求。
[0004] -種用于對數字視頻編碼的技術是幀間預測。幀間預測利用在不同幀之間的時間 冗余度。在時間上相鄰的視頻幀通常包括保持基本上相同的像素塊。在編碼過程期間,運 動矢量將一幀中的像素塊的移動與另一幀中的相似像素的塊相關聯。因而無需系統對像素 塊編碼兩次,而是對像素塊編碼一次并且提供用于預測其它像素塊的運動矢量。
[0005] 另一種用于對數字視頻編碼的技術是幀內預測。幀內預測對幀或者其部分編碼而 未參考其它幀中的像素。幀內預測利用在幀內的像素塊之間的空間冗余度。由于在空間上 相鄰的像素塊一般具有相似屬性,所以通過參考在相鄰塊之間的空間相關性來提高編碼過 程的效率。通過基于在相鄰塊中使用的預測模式預測目標塊可以利用這一相關性。
【發明內容】
[0006] 本發明提供一種提高視頻編碼效率的獨特幀內預測過程。H. 264/AVC使用位于緊 接待預測的目標塊上方的水平邊界中的參考像素和位于緊接該目標塊的左側的豎直邊界 中的參考像素。在本發明中,取出水平邊界像素陣列或者豎直邊界像素陣列的至少一些像 素。然后向其它邊界像素添加取出的像素以擴展其陣列。僅基于擴展的邊界像素陣列執行 幀內預測。在本發明的一個實施方式中,取出豎直邊界像素中的至少一些像素并且向水平 邊界像素添加以擴展其陣列。
[0007] 本發明消除選擇從其取出參考像素的水平邊界或者豎直邊界的判決過程。本發明 也消除計算與預測方向相交的豎直邊界的位置的重復出現過程,其中重復出現計算過程通 常包括除法操作。消除這些過程使幀內預測過程能夠實施于單指令多數據(S頂D)架構上, 由此提尚視頻編碼的計算效率。
[0008] 在根據本發明的一個實施方式中,使用由下式表達的豎直像素標識符來取出豎直 邊界像素中的至少一些像素:
[0010] 其中size代表待預測的目標塊的大小,angle代表預測方向,并且col是從-1至 angle遞減1的計數器。向在水平像素標識符[col]標識的位置處的水平像素添加取出的 像素。
[0011] 在另一實施方式中,在取出豎直邊界像素中的至少一些像素時根據下式計算 InvAngle :
[0013] 其中N是2的整數冪。然后使用由[colXInvAngle >> log2N]表達的豎直像素 標識符來取出豎直邊界像素之中的至少一些像素。向在水平像素標識符[col]標識的位置 處的水平像素添加取出的像素。
[0014] 在另一實施方式中,從查找表獲得InvAngle,查找表相對于angle的值列出了 InvAngle 的值。
[0015] 在另一實施方式中,使用豎直像素標識符[row]來標識豎直邊界像素之中的像 素,其中row是從0至size遞增1的計數器。向在水平像素標識符[int+Ι]標識的位置處 的水平邊界像素添加取出的像素,其中int是與預測方向相交的像素的位置的整數表示。
[0016] 本發明也提供一種實施幀內預測操作的編碼器和解碼器,在該幀內預測操作中, 取出水平邊界像素陣列或者豎直邊界像素陣列的至少一些像素。然后向其它邊界像素添加 取出的像素以擴展其陣列。僅基于擴展的邊界像素陣列執行幀內預測。
【附圖說明】
[0017] 圖1是示出了本發明可以實施于其上的示例硬件架構的框圖。
[0018] 圖2是示出了本發明可以被應用于的視頻編碼器的總體視圖的框圖。
[0019] 圖3是示出了本發明可以被應用于的視頻解碼器的總體視圖的框圖。
[0020] 圖4是示出了根據本發明一個實施方式的編碼器的功能模塊的框圖。
[0021] 圖5是示出了本發明實施方式的幀內預測模塊執行的幀內預測過程的流程圖。
[0022] 圖6是示出了根據本發明一個實施方式的解碼器的功能模塊的框圖。
[0023] 圖7是示出了預測方向的圖,這些預測方向圖示了在H.264/AVC中支持的 Intra_4X4預測模式。
[0024] 圖8是示出了在第JCT-VC A119號文檔中提出的預測方向的圖。
[0025] 圖9是示出了在JCT-VC A119中提出的沿著圖7中所示預測方向之一生成預測的 塊的過程的流程圖。
[0026] 圖10是示出了根據本發明一個實施方式執行的低復雜度幀內預測過程的流程 圖。
[0027] 圖11A是示出了預測塊以及水平和豎直邊界像素陣列的示意視圖。
[0028] 圖11B是示出了用豎直邊界像素擴展的水平邊界像素陣列的示意圖。
[0029] 圖12是示出了根據本發明一個實施方式執行的擴展水平邊界像素陣列的過程的 流程圖。
[0030] 圖13是示出了擴展水平邊界像素陣列的另一實施方式的流程圖。
[0031] 圖14是示出了根據本發明另一實施方式執行的低復雜度幀內預測過程的流程 圖。
【具體實施方式】
[0032] 圖1示出了本發明可以實施于其上的計算機100的示例硬件架構。請注意圖1中 所示硬件架構可以在實施本發明實施方式的視頻編碼器和視頻解碼器中共用。計算機1〇〇 包括經由本地接口 107通信地耦合的處理器101、存儲器102、存儲設備105和一個或者多 個輸入和/或輸出(I/O)設備1〇6(或者外設)。本地接口 105可以例如是但不限于如在本 領域中已知的一個或者多個總線或者其它有線或者無線連接。
[0033] 處理器101是用于執行軟件、具體為存儲于存儲器102中的軟件的硬件設備。處 理器101可以是任何定制或者商用處理器、中央處理單元(CPU)、在與計算機100關聯的若 干處理器之中的輔助處理器、基于半導體的微處理器(形式為微芯片或者芯片組)或者一 般為任何用于執行軟件指令的設備。
[0034] 存儲器102包括計算機可讀介質,該計算機可讀介質可以包括易失性存儲器元件 (例如隨機存取存儲器(RAM,比如DRAM、SRAM、SDRAM等))和非易失性存儲器元件(例如 R0M、硬驅動、磁帶、⑶ROM等)中的任何存儲器元件或者組合。另外,存儲器102可以并入 電子、磁、光學和/或其它類型的存儲介質。計算機可讀介質可以是任何可以存儲、傳達、傳 播或者傳送用于由指令執行系統、裝置或者設備使用或者與指令執行系統、裝置或者設備 結合使用的程序的裝置。請注意存儲器102可以具有分布式結構,其中各種部件處于相互 遠離處、但是可以由處理器101訪問。
[0035] 存儲器102中的軟件103可以包括一個或者多個單獨程序,每個程序包含用于實 施計算機100的如下文描述的邏輯功能的可執行指令有序列表。在圖1的例子中,存儲器 102中的軟件103限定計算機100的根據本發明的視頻編碼或者視頻解碼功能。此外,雖然 非必需,但是存儲器102有可能包含操作系統(0/S) 104。操作系統104實質上控制計算機 程序的執行并且提供調度、輸入-輸出控制、文件和數據管理、存儲器管理以及通信控制和 有關服務。
[0036] 計算機100的存儲設備105可以是許多不同存儲設備類型之一,這些存儲設備類 型包括靜止存儲設備或者便攜式存儲設備。作為例子,存儲設備105可以是磁帶、磁盤、閃 存、易失性存儲器或者不同存儲設備。此外,存儲設備105可以是安全數字記憶卡或者任何 其它可拆卸存儲設備105。
[0037] I/O設備106可以包括輸入設備、例如但不限于觸屏、鍵盤、鼠標、掃描儀、麥克風 或者其它輸入設備。另外,I/O設備106也可以包括輸出設備、例如但不限于顯示器或者其 它輸出設備。I/O設備106還可以包括經由輸入和輸出二者通信的設備、例如但不限于調制 器/解調器(調制解調器;用于訪問另一設備、系統或者網絡)、射頻(RF)、無線或者其它收 發器、電話接口、橋接器、路由器或者作為輸入和輸出二者工作的其它設備。
[0038] 如本領域普通技術人員公知的那樣,通過去除視頻序列中的冗余信息來實現視頻 壓縮。存在許多不同視頻編碼標準,這些視頻編碼標準的例子包括MPEG-1、MPEG-2、MPEG-4、 Η. 261、H. 263和H. 264/AVC。應當注意本發明未旨在限于任何具體視頻編碼標準的應用。然 而使用通過引用而結合于此的H. 264/AVC標準例子來提供本發明的以下描述。H. 264/AVC 是最新的視頻編碼標準并且實現較先前編碼標準、比如MPEG-1、MPEG-2、H. 261和H. 263而 目的顯者性能提尚。
[0039] 在H. 264/AVC中,視頻的每個幀或者畫面能分解成若干分片。分片然后劃分成 稱為宏塊的16X16個像素的塊,這些塊然后可以進一步劃分成8X16、16X8、8X8、4X8、 8X4下至4X4個像素的塊。H. 264/AVC支持五個類型的分片。在I分片中,使用幀內預測 對所有宏塊編碼。在P分片中,可以使用幀內或者幀間預測對宏塊編碼。P分片允許使用每 個宏塊僅一個運動補償預測(MCP)信號。在B分片中,可以使用幀內或者幀間預測對宏塊 編碼。可以每個預測使用兩個MCP信號。SP分片允許在不同視頻流之間高效切換P分片。 SI分片是在僅使用幀內預測之時用于隨機訪問或者錯誤恢復的SP分片的確切匹配。
[0040] 圖2示出了本發明可以被應用于的視頻編碼器的總體視圖。圖中所示塊代表處理 器101執行存儲器102中的軟件103而實現的功能模塊。向視頻編碼器201饋送視頻幀畫 面200。視頻編碼器以宏塊200A為單位對待畫面200。每個宏塊包含畫面200的若干像素。 對每個宏塊執行變換成變換系數、繼而量化成變換系數級。另外,使用幀內預測或者幀間預 測,以不直接對像素數據執行編碼步驟,而是對像素數據與預測的像素值的差執行編碼步 驟,由此實現更容易壓縮的小值。
[0041] 對于每個分片,編碼器201生成多個語法元素,這些語法元素形成相應分片的宏 塊的編碼版本。語法元素中的與變換系數的編碼有關的所有殘余數據元素稱為殘余數據語 法元素,這些殘余數據元素比如是變換系數級或者指示略去的變換系數級的重要圖。除了 這些殘余數據語法元素之外,編碼器201生成的語法元素還包含控制信息語法元素,這些 控制信息語法元素分別包含關于已經如何對每個宏塊編碼并且必須如何對每個宏塊解碼 的控制信息。換言之,語法元素可劃分成兩個類別。控制信息語法元素這第一類別例如包 含與宏塊類型、子宏塊類型和關于空間和時間類型二者的預測模式的信息以及基于分片和 基于宏塊的控制信息有關的元素。在第二類別中,所有殘余數據元素、比如重要圖被組合并 且變成殘余數據語法元素,該重要圖指示量化的變換系數的塊內部的所有重要系數的位置 和重要系數的以與量化步進對應的級為單位指示的值。
[0042] 編碼器201包括對語法元素編碼并且為每個分片