TWI841033B - 視頻數據的幀間預測方法和裝置 - Google Patents

視頻數據的幀間預測方法和裝置 Download PDF

Info

Publication number
TWI841033B
TWI841033B TW111142039A TW111142039A TWI841033B TW I841033 B TWI841033 B TW I841033B TW 111142039 A TW111142039 A TW 111142039A TW 111142039 A TW111142039 A TW 111142039A TW I841033 B TWI841033 B TW I841033B
Authority
TW
Taiwan
Prior art keywords
motion information
image block
current image
control point
candidate motion
Prior art date
Application number
TW111142039A
Other languages
English (en)
Other versions
TW202312738A (zh
Inventor
陳煥浜
高山
楊海濤
Original Assignee
大陸商華為技術有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN201711319298.2A external-priority patent/CN109922336B/zh
Application filed by 大陸商華為技術有限公司 filed Critical 大陸商華為技術有限公司
Publication of TW202312738A publication Critical patent/TW202312738A/zh
Application granted granted Critical
Publication of TWI841033B publication Critical patent/TWI841033B/zh

Links

Abstract

本申請提供了一種視頻數據的幀間預測方法和裝置,能夠減少視頻傳輸的比特開銷,該方法包括:確定當前圖像塊的候選運動信息列表,所述候選運動信息列表包括一組第一候選運動信息、一組第二候選運動信息,以及用於索引第一候選運動信息和第二候選運動信息的多個索引信息;從候選運動信息列表中確定目標運動信息;根據所述目標運動信息,對所述當前圖像塊執行幀間預測。

Description

視頻數據的幀間預測方法和裝置
本申請涉及視頻編解碼領域,尤其涉及一種視頻數據的幀間預測方法、裝置以及視訊轉碼器和視頻解碼器。
隨著光電採集技術的發展及不斷增長的高清數位視訊需求,視頻數據量越來越大,有限異構的傳輸頻寬、多樣化的視頻應用不斷地對視頻編碼效率提出了更高的需求,高性能視頻編碼(high efficient video coding,HEVC)標準的制定工作因需啟動。
視頻編碼壓縮的基本原理是利用空域、時域和碼字之間的相關性,盡可能去除冗餘。目前流行做法是採用基於塊的混合視頻編碼框架,通過預測(包括幀內預測和幀間預測)、變換、量化、熵編碼等步驟實現視頻編碼壓縮。這種編碼框架,顯示了很強的生命力,HEVC也仍沿用這種基於塊的混合視頻編碼框架。在各種視頻編/解碼方案中,運動估計/運動補償是一種影響編/解碼性能的關鍵技術。
由於視頻中鄰近幀中的景物存在著一定的相關性,因此,可將圖像分成若干塊或巨集塊,搜索出每個塊或宏塊在鄰近幀中的位置,並得出兩者之間的空間位置的相對偏移量,得到的相對偏移量即運動矢量(motion vector,MV),得到運動矢量的過程被稱為運動估計(motion estimation,ME),通過運動估計可以去除幀間冗餘,減少視頻傳輸的比特開銷。
現有的一種運動估計方法是按照預設策略從當前編碼塊的相鄰編碼 塊中選擇一個編碼塊,並利用該編碼塊的運動信息推導出當前編碼塊的運動信息,該方法無需編碼端向解碼端發送指示相鄰編碼塊的索引信息,減少了視頻傳輸的比特開銷。然而,若相鄰編碼塊的上述運動信息不可用,則編碼端需要重新選擇運動估計方法,並且向解碼端發送指示信息指示重新選擇的運動估計方法,因此增加了視頻傳輸的比特開銷。
本申請提供了一種視頻數據的幀間預測方法、裝置以及視訊轉碼器、視頻解碼器,能夠減少視頻傳輸的比特開銷,以提高編解碼效率。
第一方面,提供了一種視頻數據的幀間預測方法,包括:確定當前圖像塊的候選運動信息列表,所述候選運動信息列表包括至少一組第一候選運動信息、至少一組第二候選運動信息,以及用於索引第一候選運動信息和第二候選運動信息的多個索引信息,多個索引信息與多組候選運動信息一一對應,其中,第一候選運動信息為基於當前圖像塊的第一相鄰圖像塊的預設位置的運動信息和第一相鄰圖像塊的運動模型確定的運動信息,第二候選運動信息為與當前圖像塊的至少兩個默認位置分別相鄰的至少兩個像素位置的運動信息的集合,所述至少兩個像素位置位於當前圖像塊的至少一個第二相鄰圖像塊;從候選運動信息列表中確定目標運動信息,所述目標運動信息為至少一組第一候選運動信息和所述至少一組第二候選運動信息中滿足篩選規則的一組運動信息;根據所述目標運動信息,對所述當前圖像塊執行幀間預測。
應當理解的是,這裡的第一相鄰圖像塊和第二相鄰圖像塊僅僅是用於區分採用不同方式獲取候選運動信息的過程中,被遍歷的當前圖像塊的空域鄰近塊和/或當前圖像塊的時域鄰近塊;第一相鄰圖像塊可以包括當前圖像塊的空域鄰近塊和/或當前圖像塊的時域鄰近塊;第二相鄰圖像塊可以包括當前圖像 塊的空域鄰近塊和/或當前圖像塊的時域鄰近塊。
需要說明的是,第一相鄰圖像塊的預設位置可以理解為所述第一相鄰圖像塊的角點位置,例如所述第一相鄰圖像塊的左上頂點和右上頂點,或者所述第一相鄰圖像塊的左上頂點和左下頂點,或者,所述第一相鄰圖像塊的左上頂點、左下頂點和右上頂點;所述當前圖像塊的至少兩個默認位置可以理解為所述當前圖像塊的至少兩個角點位置,亦可稱為當前圖像塊的至少兩個控制點,例如所述當前圖像塊的左上頂點和右上頂點,或者所述當前圖像塊的左上頂點和左下頂點,或者,所述當前圖像塊的左上頂點、左下頂點和右上頂點。
在一種示例下,所述目標運動信息為滿足篩選規則的一組運動信息,可以理解為從所述候選運動信息列表中確定一組第一候選運動信息或者一組第二候選運動信息,其中,所述目標運動信息編碼所述當前編碼塊的碼率失真代價最小。
根據本實施例提供的幀間預測方法,編碼端或解碼端構建包括兩種候選運動信息的候選運動信息列表,該兩種候選運動信息具有統一編排的索引信息,若兩種候選運動信息中的一種不適用於當前圖像塊,則編碼端可以從候選運動信息列表包括的另一種候選運動信息中選擇目標運動信息,並將該目標運動信息的索引信息通過碼流發送給解碼端,由於候選運動信息列表中的候選運動信息具有唯一的索引信息,因此,編碼端無需在碼流中傳遞指示編碼端使用的運動估計方法的指示信息,從而減少了視頻傳輸的比特開銷。
可選地,第一候選運動信息的索引信息的比特數小於或等於第二候選運動信息的索引信息的比特數。
第一候選運動信息為基於運動模型的運動信息,根據第一候選運動信息進行編解碼的效率高於根據第二候選運動信息進行編解碼的效率,因此,第一候選運動信息為目標運動信息的概率較大,因此,可以將第一候選運動信 息的索引信息設置為比特數較小的索引信息,有利於減小視頻傳輸的比特開銷。
可選地,多個索引信息中第一索引信息的比特數小於多個索引信息中第二索引信息的比特數,第一索引信息對應先加入候選運動信息列表的運動信息,第二索引信息對應後加入候選運動信息列表的運動信息;所述確定當前圖像塊的候選運動信息列表,包括:先將第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表。
第一候選運動信息為基於運動模型的運動信息,根據第一候選運動信息進行編解碼的效率高於根據第二候選運動信息進行編解碼的效率,因此,第一候選運動信息為目標運動信息的概率較大,因此,可以將第一候選運動信息的索引信息設置為比特數較小的索引信息,有利於減小視頻傳輸的比特開銷。
可選地,所述確定當前圖像塊的候選運動信息列表,包括:當第一相鄰圖像塊為採用平動運動模型的相鄰圖像塊時,將第一相鄰圖像塊的運動信息作為一組第一候選運動信息加入候選運動信息列表;和/或,當第一相鄰圖像塊為採用非平動運動模型的圖像塊時,根據第一相鄰圖像塊的至少兩個預設位置的運動信息以及第一相鄰圖像塊的運動模型推導出當前圖像塊對應的至少兩個預設位置的運動信息,並將當前圖像塊對應的至少兩個預設位置的運動信息作為一組第一候選運動信息加入候選運動信息列表。
應當理解的是,非平動運動模型可以包括但不限於各種仿射運動模型,例如4參數的仿射運動模型、6參數的仿射運動模型或8參數的仿射運動模型。
若第一相鄰圖像塊的運動模型為平動運動模型,可以將其作為第一候選運動信息直接加入候選運動信息列表,從而提高了圖像效率;若第一相鄰圖像塊的運動模型為非平動運動模型,則需要根據該非平動運動模型對應的公式以及第一相鄰圖像塊的預設位置的運動信息生成第一候選運動信息。
可選地,第一相鄰圖像塊包括採用平動運動模型的第一相鄰圖像塊 和採用非平動運動模型的第一相鄰圖像塊,多個索引信息中第一索引信息的比特數小於多個索引信息中第二索引信息的比特數,第一索引信息對應先加入候選運動信息列表的運動信息,第二索引信息對應後加入候選運動信息列表的運動信息; 所述確定當前圖像塊的候選運動信息列表,包括: 當採用非平動運動模型的第一相鄰圖像塊的數量大於或等於數量閾值時,基於採用非平動運動模型的第一相鄰圖像塊的至少兩個預設位置的運動信息以及採用非平動模型的第一相鄰圖像塊的運動模型推導出當前圖像塊對應的至少兩個預設位置的運動信息,並將當前圖像塊對應的至少兩個預設位置的運動信息作為一組第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表。
若採用非平動運動模型的第一相鄰圖像塊的數量大於或等於數量閾值,則說明當前圖像塊為採用非平動運動模型的圖像塊的概率較大,因此,可以先將基於採用非平動運動模型的第一相鄰圖像塊推導出的第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表,由於先加入候選運動信息列表的運動信息的索引信息的比特數較小,且目標運動信息為先加入候選運動信息列表的運動信息的概率較大,因此,本實施例有利於減少視頻傳輸的比特開銷。
可選地,所述確定當前圖像塊的候選運動信息列表,還包括:當候選運動信息列表的長度小於長度閾值,且第一相鄰圖像塊還包括採用平動運動模型的第一相鄰圖像塊時,進一步將採用平動運動模型的第一相鄰圖像塊的運動信息作為一組第一候選運動信息加入候選運動信息列表,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入所述候選運動信息列表。
應當理解的是,這裡的候選運動信息列表的長度,可以理解為當前 已加入候選運動信息列表中的候選運動信息的數量;這裡的長度閾值可以理解為候選運動信息列表的預設的最大候選運動信息數量。
若第二候選運動信息加入候選運動信息列表之後,候選運動信息列表長度小於長度閾值,並且第一相鄰圖像塊還包括採用平動運動模型的第一相鄰圖像塊,則將採用平動運動模型的第一相鄰圖像塊的運動信息作為第一候選運動信息加入候選運動信息列表,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入候選運動信息列表。
可選地,當採用非平動運動模型的第一相鄰圖像塊的數量大於或等於數量閾值時,第三候選運動信息的索引信息的比特數小於第二候選運動信息的比特數,第三候選運動信息為基於採用非平動運動模型的第一相鄰圖像塊的至少兩個預設位置的運動信息以及採用非平動運動模型的第一相鄰圖像塊的運動模型推導出的一組第一候選運動信息。
若採用非平動運動模型的第一相鄰圖像塊的數量大於或等於數量閾值,則說明當前圖像塊為採用非平動運動模型的圖像塊的概率較大,因此,可以將基於非平動運動模型的第一相鄰圖像塊推導出的第一候選運動信息(即,第三候選運動信息)的索引信息設置為比特數較小的索引信息,由於目標運動信息為第三候選運動信息的概率較大,因此,本實施例有利於減少視頻傳輸的比特開銷。
可選地,當候選運動信息列表的長度小於長度閾值,且第一相鄰圖像塊還包括採用平動運動模型的第一相鄰圖像塊時,候選運動信息列表還包括採用平動運動模型的第一相鄰圖像塊的運動信息,所述採用平動運動模型的第一相鄰圖像塊的運動信息為一組第一候選運動信息,所述採用平動運動模型的第一相鄰圖像塊的運動信息的索引信息的比特數大於或等於第二候選運動信息的索引信息的比特數。
若第二候選運動信息加入候選運動信息列表之後,候選運動信息列表長度小於長度閾值,並且第一相鄰圖像塊還包括採用平動運動模型的第一相鄰圖像塊,則將採用平動運動模型的第一相鄰圖像塊的運動信息作為第一候選運動信息加入候選運動信息列表,並將該第一候選運動信息的索引信息設置為比特數較大的索引信息,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入候選運動信息列表。
可選地,第一相鄰圖像塊包括採用平動運動模型的第一相鄰圖像塊和採用非平動運動模型的第一相鄰圖像塊,多個索引信息中第一索引信息的比特數小於多個索引信息中第二索引信息的比特數,第一索引信息對應先加入候選運動信息列表的運動信息,第二索引信息對應後加入候選運動信息列表的運動信息; 所述確定當前圖像塊的候選運動信息列表,包括:當採用非平動運動模型的第一相鄰圖像塊的數量小於或等於數量閾值時,先將採用平動運動模型的第一相鄰圖像塊的運動信息作為一組第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表。
若採用非平動運動模型的第一相鄰圖像塊的數量小於或等於數量閾值,則說明當前圖像塊為採用非平動運動模型的圖像塊的概率較大,因此,可以先將基於採用平動運動模型的第一相鄰圖像塊的運動信息作為第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表,由於先加入候選運動信息列表的運動信息的索引信息的比特數較小,且目標運動信息為先加入候選運動信息列表的運動信息的概率較大,因此,本實施例有利於減少視頻傳輸的比特數。
可選地,所述確定當前圖像塊的候選運動信息列表,還包括:當候 選運動信息列表的長度小於長度閾值,且第一相鄰圖像塊還包括非採用平動運動模型的第一相鄰圖像塊時,進一步基於採用非平動運動模型的第一相鄰圖像塊的至少兩個預設位置的運動信息以及採用非平動模型的第一相鄰圖像塊的運動模型推導出當前圖像塊的至少兩個預設位置的運動信息,將當前圖像塊的至少兩個預設位置的運動信息作為一組第一候選運動信息加入候選運動信息列表,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入所述候選運動信息列表。
若第二候選運動信息加入候選運動信息列表之後,候選運動信息列表長度小於長度閾值,並且第一相鄰圖像塊還包括採用非平動運動模型的第一相鄰圖像塊,則將基於採用非平動運動模型的第一相鄰圖像塊的運動信息推導出的第一候選運動信息加入候選運動信息列表,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入候選運動信息列表。從而可以擴大目標運動信息的選擇範圍。
可選地,當採用非平動運動模型的第一相鄰圖像塊的數量小於或等於數量閾值時,採用平動運動模型的第一相鄰圖像塊的運動信息為一組第一候選運動信息,且所述採用平動運動模型的第一相鄰圖像塊的運動信息的索引信息的比特數小於第二候選運動信息的比特數。
若採用非平動運動模型的第一相鄰圖像塊的數量小於或等於數量閾值,則說明當前圖像塊為採用平動運動模型的圖像塊的概率較大,因此,可以將採用平動運動模型的第一相鄰圖像塊的運動信息作為第一候選運動信息,並將該第一候選運動信息的索引信息設置為比特數較小的索引信息,由於目標運動信息為該第一候選運動信息的概率較大,因此,本實施例有利於減少視頻傳輸的比特開銷。
可選地,當候選運動信息列表的長度小於長度閾值,且第一相鄰圖 像塊還包括採用非平動運動模型的第一相鄰圖像塊時,候選運動信息列表還包括第四候選運動信息,第四候選運動信息為基於採用非平動運動模型的第一相鄰圖像塊的至少兩個預設位置的運動信息以及採用非平動運動模型的第一相鄰圖像塊的運動模型推導出的一組第一候選運動信息,第四候選運動信息的索引信息的比特數大於或等於第二候選運動信息的索引信息的比特數。
若第二候選運動信息加入候選運動信息列表之後,候選運動信息列表長度小於長度閾值,並且第一相鄰圖像塊還包括採用非平動運動模型的第一相鄰圖像塊,則將基於採用非平動運動模型的第一相鄰圖像塊的運動信息推導出的運動信息作為第一候選運動信息加入候選運動信息列表,並將該第一候選運動信息的索引信息設置為比特數較大的索引信息,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入候選運動信息列表。從而可以擴大目標運動信息的選擇範圍。
可選地,第一候選運動信息和第二候選運動信息均為當前圖像塊的第一組位置的運動信息,當前圖像塊中至少兩個默認位置為第二組位置,所述確定當前圖像塊的候選運動信息列表,包括:當第二組位置與所述第一組位置相異時,根據位置變換公式以及第二位置對應的運動信息推導出第二候選運動信息。
當第一候選運動信息對應的位置的數量和第二候選運動信息對應的位置的數量相同時,根據本實施例得到的候選運動信息列表中的運動信息均為相同位置的運動信息,從而減小了運動估計的複雜度。
可選地,第一候選運動信息為當前圖像塊的第一組位置的運動信息,第二候選運動信息為當前圖像塊的第三組位置的運動信息,所述方法還包括:當第一組位置與第三組位置相異時,根據位置變換公式以及第二候選運動信息推導出第五候選運動信息,所述第五候選運動信息對應的位置與第一組位 置相同。
當第一候選運動信息對應的位置的數量和第二候選運動信息對應的位置的數量相同時,根據本實施得到的候選運動信息列表中的運動信息均為相同位置的運動信息,從而減小了運動估計的複雜度。
第二方面,本申請提供了一種視頻數據的幀間預測裝置,包括用於實施第一方面的任意一種方法的若干個功能單元。舉例來說,視頻數據的幀間預測裝置可以包括:候選運動信息列表確定單元,用於確定當前圖像塊的候選運動信息列表,所述候選運動信息列表包括至少一組第一候選運動信息、至少一組第二候選運動信息,以及用於索引所述第一候選運動信息和所述第二候選運動信息的多個索引信息,所述第一候選運動信息為基於所述當前圖像塊的第一相鄰圖像塊的預設位置的運動信息和所述第一相鄰圖像塊的運動模型確定的運動信息,所述第二候選運動信息為與所述當前圖像塊的至少兩個默認位置分別相鄰的至少兩個像素位置的運動信息的集合,所述至少兩個像素位置位於所述當前圖像塊的至少一個第二相鄰圖像塊;幀間預測處理單元,用於從所述候選運動信息列表中確定目標運動信息,所述目標運動信息為所述至少一組第一候選運動信息和所述至少一組第二候選運動信息中滿足篩選規則的一組運動信息;所述幀間預測處理單元還用於根據所述目標運動信息,對所述當前圖像塊執行幀間預測。
上述幀間預測裝置例如可以應用在視頻編碼裝置(視訊轉碼器)或視頻解碼裝置(視頻解碼器)中。
協力廠商面,本申請提供了一種視訊轉碼器,該視訊轉碼器用於編碼圖像塊,該視訊轉碼器包括:第二方面所述的幀間預測裝置,該幀間預測裝置用於基於目標運動 信息預測待編碼圖像塊的預測塊,所述目標運動信息是候選運動信息列表中滿足篩選規則的一組運動信息;比如,所述目標運動信息編碼所述當前圖像塊的碼率失真代價最小;熵編碼器,用於將所述目標運動信息的索引信息編入碼流,所述目標運動信息的索引信息用於從所述候選運動信息列表中確定所述目標運動信息;重建器,用於根據所述預測塊重建所述待編碼圖像塊。
第四方面,本申請提供了一種視頻解碼器,所述視頻解碼器用於從碼流中解碼出圖像塊,所述視頻解碼器包括:熵解碼器,用於從碼流中解碼出目標運動信息的索引信息;第二方面所述的幀間預測裝置,所述幀間預測裝置用於基於目標運動信息預測待解碼圖像塊的預測塊,所述目標運動信息是候選運動信息列表中所述解碼出的索引信息對應的一組運動信息;重建器,用於根據所述預測塊重建所述待解碼圖像塊。
第五方面,本申請提供一種用於編碼視頻數據的設備,所述設備包括:記憶體,用於存儲視頻數據,所述視頻數據包括一個或多個圖像塊;視訊轉碼器,用於確定當前圖像塊的候選運動信息列表,所述候選運動信息列表包括至少一組第一候選運動信息、至少一組第二候選運動信息,以及用於索引所述第一候選運動信息和所述第二候選運動信息的多個索引信息,所述第一候選運動信息為基於所述當前圖像塊的第一相鄰圖像塊的預設位置的運動信息和所述第一相鄰圖像塊的運動模型確定的運動信息,所述第二候選運動信息為與所述當前圖像塊的至少兩個默認位置分別相鄰的至少兩個像素位置的運動信息的集合,所述至少兩個像素位置位於所述當前圖像塊的至少一 個第二相鄰圖像塊;從所述候選運動信息列表中確定目標運動信息,所述目標運動信息為所述至少一組第一候選運動信息和所述至少一組第二候選運動信息中滿足篩選規則的一組運動信息;根據所述目標運動信息,對所述當前圖像塊執行幀間預測;發送包括所述目標運動信息的索引信息的碼流。
第六方面,本申請提供一種用於解碼視頻數據的設備,所述設備包括:記憶體,用於存儲碼流形式的視頻數據;視頻解碼器,用於從碼流中解碼出索引信息,該索引信息用於確定目標運動信息;確定當前圖像塊的候選運動信息列表,所述候選運動信息列表包括至少一組第一候選運動信息、至少一組第二候選運動信息,以及用於索引所述第一候選運動信息和所述第二候選運動信息的多個索引信息,所述第一候選運動信息為基於所述當前圖像塊的第一相鄰圖像塊的預設位置的運動信息和所述第一相鄰圖像塊的運動模型確定的運動信息,所述第二候選運動信息為與所述當前圖像塊的至少兩個默認位置分別相鄰的至少兩個像素位置的運動信息的集合,所述至少兩個像素位置位於所述當前圖像塊的至少一個第二相鄰圖像塊;根據從碼流中解碼出的索引信息從所述候選運動信息列表中確定目標運動信息;根據所述目標運動信息,對所述當前圖像塊執行幀間預測。
第七方面,本申請提供了一種編碼設備,包括:相互耦合的非易失性記憶體和處理器,所述處理器調用存儲在所述記憶體中的程式碼以執行第一方面的任意一種方法的部分或全部步驟。
第八方面,本申請提供了一種解編碼設備,包括:相互耦合的非易失性記憶體和處理器,所述處理器調用存儲在所述記憶體中的程式碼以執行第一方面的任意一種方法的部分或全部步驟。
第九方面,本申請提供一種計算器可讀存儲介質,所述計算器可讀 存儲介質存儲了程式碼,其中,所述程式碼包括用於執行第一方面的任意一種方法的部分或全部步驟的指令。
第十方面,本申請實施例提供一種計算器程式產品,當所述計算器程式產品在計算器上運行時,使得所述計算器執行第一方面的任意一種方法的部分或全部步驟。
應當理解的是,本申請的第二至十方面的技術方案與本申請的第一方面的技術方案一致,各方面及對應的可行實施方式所取得的有益效果相似,不再贅述。
400:方法
S410,S420,S430:步驟
100:視訊轉碼器
200:視頻解碼器
10:源裝置
20:目的地裝置
30:鏈路
40:存儲裝置
42:網路實體
140:輸出介面
240:輸入介面
120:視頻源
220:顯示裝置
101:變換器
102:量化器
103:熵編碼器
203:熵解碼器
104,204:反量化器
105,205:反變換器
106,206:濾波器單元
107,207:經解碼圖像緩衝器
108,208:預測處理單元
109,209:幀內預測器
110,210:幀間預測器
111,211:求和器
1000:幀間預測裝置
1001:候選運動信息列表確定單元
1002:幀間預測處理單元
1110:處理器
1150:匯流排
1130:記憶體
1131:資料
1133:作業系統
1135:應用程式
1170:顯示器
第1圖是一種適用於本申請的視頻編碼方法的示意性流程圖;第2圖是一種適用於本申請的視頻解碼方法的示意性流程圖;第3圖是本申請提供的一種根據基於運動模型的仿射變換融合模式進行預測的方法的示意圖;第4圖是本申請提供的一種幀間預測的方法的示意性流程圖;第5圖是本申請提供的一種構造基於組合控制點的運動信息的方法的示意圖;第6圖是本申請提供的一種基於構建候選運動信息列表的方法的示意性流程圖;第7圖是本申請提供的一種視頻編碼及解碼系統的示意性框圖;第8圖是本申請提供的一種視訊轉碼器的示意性框圖;第9圖是本申請提供的一種視頻解碼器的示意性框圖;第10圖是本申請提供的一種視頻數據的幀間預測裝置的示意性框圖; 第11圖是本申請提供的一種編碼設備或解碼設備的示意性框圖。
為了便於理解本申請,首先對本申請提供的技術方案中可能涉及的技術特徵進行描述。
第1圖示出了一種適用於本申請的視頻編碼方法的示意性流程圖。
該視頻編碼方法包括幀內預測(intra prediction)、幀間預測(inter prediction)、變換(transform)、量化(quantization)、熵編碼(entropy encode)、環內濾波(in-loop filtering)等環節。將圖像劃分為編碼塊之後進行幀內預測或者幀間預測,並且在得到殘差之後進行變換量化,最終進行熵編碼並輸出碼流。此處編碼塊為由像素點組成的M×N大小的陣列(M可以等於N,也可以不等於N),並且已知各個像素點位置的像素值。第1圖中,P表示預測值,Dn表示殘差,uFn'表示重建值(濾波前),Dn'表示殘差。
幀內預測是指利用當前圖像內已重建區域內像素點的像素值對當前編碼塊內像素點的像素值進行預測。
幀間預測是在已重建的圖像中,為當前圖像中的當前編碼塊尋找匹配的參考塊,將參考塊中的像素點的像素值作為當前編碼塊中像素點的像素值的預測信息或者預測值(以下不再區分信息和值),此過程即運動估計,並傳輸當前編碼塊的運動信息。
需要說明的是,當前編碼塊的運動信息包括了預測方向的指示信息(通常為前向預測、後向預測或者雙向預測),一個或兩個指向參考塊的運動矢量,以及參考塊所在圖像的指示信息(通常記為參考幀索引)。
前向預測是指當前編碼塊從前向參考圖像集合中選擇至少一個參考圖像獲取至少一個參考塊。後向預測是指當前編碼塊從後向參考圖像集合中選 擇至少一個參考圖像獲取至少一個參考塊。雙向預測是指從前向和後向參考圖像集合中各選擇至少一個參考圖像獲取至少一個參考塊。當使用雙向預測方法時,當前編碼塊會存在至少兩個參考塊,每個參考塊各自需要運動矢量和參考幀索引進行指示,然後根據至少兩個參考塊內像素點的像素值確定當前塊內像素點像素值的預測值。
運動估計過程需要為當前編碼塊在參考圖像中搜索多個參考塊,最終使用哪一個或者哪幾個參考塊用作預測則使用率失真優化(rate-distortion optimization,RDO)或者其它方法確定。
利用幀內預測方法或者幀間預測方法得到預測信息之後,根據當前編碼塊內像素點的像素值和對應的預測信息可以得到殘差信息,例如可以通過當前編碼塊的像素值與參考塊的像素值直接相減的方式得到殘差信息,也可以是通過其它可能的方式得到殘差值信息。然後利用離散余弦變換(discrete cosine transformation,DCT)等方法對殘差信息進行變換,再對變換後的殘差信息進行量化,熵編碼等操作,最終得到碼流,以便解碼端對碼流進行解碼。在編碼端的處理中,還可以對預測信號和重建殘差信號進行濾波操作,進而得到重建信號,並將其作為後續編碼的參考信號。
解碼端對碼流的處理類似於編碼端對圖像進行編碼的逆過程,第2圖示出了適用於本申請的碼流解碼方法的示意性流程圖。
如第2圖所示,首先利用熵解碼,反量化等操作變換得到殘差信息,解碼端首先通過解析碼流得到當前待解碼塊的預測模式。如果是幀內預測,則利用當前待解碼塊周圍已重建區域內像素點的像素值構建預測信息。如果是幀間預測,則需要得到當前解碼塊的運動信息,並使用該運動信息在已重建的圖像中確定參考塊,將參考塊內像素點的像素值作為預測信息。使用預測信息(亦稱為預測塊)和殘差信息(亦稱為殘差塊),經過濾波操作便可以得到當前待解 碼塊的重建信息(亦稱為重建塊),從而進一步得到重建的部分圖像。
在一些可能的實現方式中,可以通過非平動運動模型預測得到當前編碼塊的運動信息。
在非平動運動模型預測的一些實現方式中,在編解碼端使用相同的運動模型推導出當前編碼塊內每一個子運動補償單元的運動信息,根據子運動補償單元的運動信息進行運動補償,得到預測塊,從而提高預測效率。常用的運動模型有6參數仿射模型或者4參數仿射變換模型。
4參數的仿射變換模型如公式(1)所示:
Figure 111142039-A0305-02-0018-1
4參數仿射變換模型可以通過兩個像素點的運動矢量及其相對於當前編碼塊左上頂點像素的座標來表示,將用於表示運動模型參數的像素點記為控制點。若採用左上頂點(0,0)和右上頂點(W,0)像素點作為控制點,則先確定當前編碼塊左上頂點和右上頂點控制點的運動矢量(vx0,vy0)和(vx1,vy1),然後根據公式(2)推導得到當前編碼塊中每一個子運動補償單元的運動信息,其中(x,y)為子運動補償單元相對於當前編碼塊左上頂點像素的座標,W為當前編碼塊的寬。
Figure 111142039-A0305-02-0018-2
6參數的仿射變換模型如公式(3)所示:
Figure 111142039-A0305-02-0018-3
6參數仿射變換模型可以通過三個控制點(亦稱為默認位置)的運動矢量及其相對於當前編碼塊左上頂點像素的座標來表示。若採用左上頂點(0,0)、右上頂點(W,0)和左下頂點(0,H)像素點作為控制點,則先確定當前編碼塊左 上頂點、右上頂點和左下頂點控制點的運動矢量(vx0,vy0)、(vx1,vy1)和(vx2,vy2),然後根據公式(4)推導得到當前編碼塊中每一個子運動補償單元的運動信息,其中(x,y)為子運動補償單元相對於當前編碼塊左上頂點像素的座標,W和H分別為當前編碼塊的寬和高。需要說明的是,在本申請中,寬和高的定義可以參考影像處理領域或視頻處理領域標準中相關的標準,例如,寬指的是當前編碼塊在水準方向上的像素點的數量,高指的是當前編碼塊在豎直方向上的數量。
Figure 111142039-A0305-02-0019-4
8參數的雙線性模型如公式(5)所示:
Figure 111142039-A0305-02-0019-5
8參數雙線性模型可以通過四個控制點的運動矢量及其相對於當前編碼塊左上頂點像素的座標來表示。若採用左上頂點(0,0)、右上頂點(W,0)、左下頂點(0,H)和右下定點(W,H)像素點作為控制點,則先確定當前編碼塊左上頂點、右上頂點、左下頂點和右下頂點控制點的運動矢量(vx0,vy0)、(vx1,vy1)、(vx2,vy2)和(vx3,vy3),然後根據公式(6)推導得到當前編碼塊中每一個子運動補償單元的運動信息,其中(x,y)為子運動補償單元相對於當前編碼塊左上頂點像素的座標,W和H分別為當前編碼塊的寬和高。
Figure 111142039-A0305-02-0019-6
採用非平動運動模型進行預測的編碼塊稱為非平動編碼塊,仿射編碼塊是一種非平動編碼塊,可以使用仿射變換融合(affine model merge,AMM)模式獲得非平動編碼塊的控制點的運動信息。仿射變換融合模式有兩種,一種是基於運動模型的AMM模式,另一種是基於控制點的複雜融合(complex merge) 模式。
第3圖示出了本申請提供的根據基於運動模型的AMM模式進行預測的方法。
在對當前編碼塊(也可稱為“當前塊”)的控制點的運動矢量進行編碼時,從相鄰編碼塊(也可稱為“相鄰塊”,例如“空域鄰近塊”)中按照預設策略選擇一個編碼塊,利用該編碼塊的角點位置(例如左上頂點和右上頂點)的運動信息推導出當前塊角點位置(例如左上頂點和右上頂點)的運動信息,使得當前塊與該編碼塊的運動模型相同。需要說明的是,上述運動模型相同指的是當前塊和相鄰塊在相同坐標系下的運動模型參數值以及參數個數相同,例如,當前塊和相鄰塊均採用4參數仿射編碼模型,或者,當前塊和相鄰塊均採用6參數仿射編碼模型,或者,當前塊和相鄰塊均採用8參數雙線性模型。
如第3圖所示,A、B、C、D和E為當前塊的相鄰編碼塊(即空域鄰近塊)的像素位置(也可簡稱為“位置”),按照A、B、C、D、E的順序遍歷,找到一個仿射編碼塊,獲得該仿射編碼塊的預設位置(亦可稱為控制點,例如該仿射編碼塊的左上頂點和右上頂點)的運動信息,進而推導出當前塊的對應的默認位置(亦可稱為控制點,例如當前塊的左上頂點和右上頂點)的運動信息。需要說明的是,這裡示例的A、B、C、D和E也可以理解為像素樣本,例如可以是像素點或包括至少兩個像素點的區塊。若像素樣本為區塊,則該區塊的大小例如為2*2,1*2、4*2、4*4或其他大小。
下面以A為例描述推導過程,其它情況以此類推:
若像素位置A(例如left sample location A)所在的編碼塊為仿射編碼塊,則獲得該仿射編碼塊左上頂點(x2,y2)的運動矢量(vx2,vy2)、右上頂點(x3,y3)的運動矢量(vx3,vy3);利用公式(7)計算得到當前編碼塊左上頂點(x0,y0)的運動矢量(vx0,vy0),利用公式(8)計算得到當前編碼塊右上頂點(x1,y1)的運動矢量(vx1, vy1)。
Figure 111142039-A0305-02-0021-7
Figure 111142039-A0305-02-0021-8
需要說明的是,其它獲得控制點的運動信息的方法也可以應用到本申請中,為了簡潔,在此不再贅述。
由上可知,由於當前塊繼承相鄰塊的運動模型,因此,基於運動模型的AMM模式比基於控制點的複雜融合模式具有更高的編碼效率,然而,若相鄰塊的運動信息不可用,則編碼端需要重新選擇運動估計方法,並且向解碼端發送指示信息指示重新選擇的運動估計方法,因此增加了視頻傳輸的比特開銷,此外,即使相鄰塊的運動信息可用。
本申請提供了一種視頻數據的幀間預測方法,能夠減少視頻傳輸的比特開銷,此外,還能夠擴大基於運動模型的AMM模式的適用範圍。
如第4圖所示,本申請實施例方法400可以包括:
S410,確定當前圖像塊的候選運動信息列表,所述候選運動信息列表包括至少一組第一候選運動信息、至少一組第二候選運動信息,以及用於索引第一候選運動信息和第二候選運動信息的多個索引信息,多個索引信息與多組候選運動信息一一對應,其中,第一候選運動信息為基於當前圖像塊的第一相鄰圖像塊的預設位置的運動信息和第一相鄰圖像塊的運動模型確定的運動信息,第二候選運動信息為與當前圖像塊的至少兩個默認位置分別相鄰的至少兩個像素位置的運動信息的集合,所述至少兩個像素位置位於當前圖像塊的至少 一個第二相鄰圖像塊。
S420,從候選運動信息列表中確定一組目標運動信息。
S430,根據所述目標運動信息對所述當前圖像塊執行幀間預測。
方法400可以由編碼端或解碼端執行,編碼端或解碼端可以是硬體設備,也可以是運行在通用硬體設備上的編碼軟體或解碼軟體,還可以是具有編碼功能的硬體設備與編碼軟體的集合,或者是具有解碼功能的硬體設備與解碼軟體的集合。應當理解的是,如果該方法400由編碼端執行,則S420中,所述一組目標運動信息為至少一組第一候選運動信息和所述至少一組第二候選運動信息中滿足篩選規則的一組運動信息,例如所述目標運動信息為所述候選運動信息列表中,編碼所述當前圖像塊的碼率失真代價最小的一組運動信息;如果該方法400由解碼端執行,則S420中,所述目標運動信息為所述候選運動信息列表中,解碼出的索引信息指示的一組運動信息。
當方法400由編碼端執行時,上述圖像塊應理解為編碼塊,例如,當前圖像塊為當前編碼塊,第一相鄰圖像塊為第一相鄰編碼塊,第二相鄰圖像塊為第二相鄰編碼塊;當方法400由解碼端執行時,上述圖像塊均應理解為解碼塊,例如,當前圖像塊為當前解碼塊,第一相鄰圖像塊為第一相鄰解碼塊,第二相鄰圖像塊為第二相解碼塊。為了簡潔,下面主要以編碼端執行方法400為例對本申請提供的幀間預測方法進行說明,僅在解碼端的處理方式不同時對解碼端的幀間預測方法進行說明,若無特別說明,則解碼端與解碼端執行的操作類似。
本申請對編碼端確定候選運動信息列表的方式不做限定,例如,可以通過第3圖所示的方法獲取第一候選運動信息,也可以通過其它方法獲取第一運動信息,還可以通過下文所述的方法獲取第二候選運動信息,獲取第一候選運動信息和第二候選運動信息之後,將第一候選運動信息和第二候選運動信息 填入候選運動信息列表。
第一相鄰編碼塊與第二相鄰編碼塊可能相同,也可能不同,如第3圖所示,第一相鄰編碼塊可以是位置A所在的編碼塊,第二相鄰編碼塊可以是位置D所在的編碼塊(第3圖未示出),此時,第一相鄰編碼塊與第二相鄰編碼塊相異,第二相鄰編碼塊也可以是位置A所在的編碼塊,此時第二相離編碼塊與第二相鄰編碼塊相同。
第一相鄰編碼塊和第二相鄰編碼塊可以是當前塊的空域相鄰編碼塊,也可以是當前塊的時域相鄰編碼塊,本申請對此不作限定,例如空域相鄰編碼塊的範圍包括但不限於第3圖所示的像素位置A、B、C、D和E所在的編碼塊。
由於第一相鄰編碼塊可能是採用平動運動模型的編碼塊,也可能是採用非平動運動模型的編碼塊,因此,當第一相鄰編碼塊為採用平動運動模型的編碼塊時,第一候選運動信息為平動運動信息,當第一相鄰編碼塊為採用非平動運動模型的編碼塊時,第一候選運動信息為非平動運動信息,其中,平動運動信息有一個運動矢量或者有兩個運動矢量,非平動運動信息包括至少兩個運動矢量,因此,一組第一候選運動信息可能僅有一個運動矢量,也可能包括多個運動矢量。
相應地,當第一相鄰編碼塊為採用平動運動模型的編碼塊時,第一相鄰編碼塊的預設位置例如是第3圖所示的位置A,當第一相鄰編碼塊為採用非平動運動模型的編碼塊時,第一相鄰編碼塊的預設位置例如可以是第3圖的左上頂點(x2,y2)和右上頂點(x3,y3)。
對於第二候選運動信息,當前編碼塊的至少兩個默認位置例如可以是下文的第5圖中的CP1和CP2,與當前編碼塊的至少兩個默認位置相鄰的的至少兩個像素位置例如可以是B2和B1,B2和B1可能屬於同一個相鄰編碼塊(即,第二相鄰編碼塊),也可能屬於不同的相鄰編碼塊。
在本申請中,運動信息包括但不限於運動矢量,例如,一組運動信息包括預測方向的指示信息(通常為前向預測、後向預測或者雙向預測)、一個或兩個或兩個以上的運動矢量,以及參考幀索引(reference index);應當理解的是,如果一組運動信息為平動運動信息,則該運動信息可以包括一個或兩個運動矢量,例如,包括預測方向為前向的運動矢量和/或預測方向為後向的運動矢量。也就是說,一組平動運動信息可能包括一個運動矢量或可能包括預測方向不同的兩個運動矢量。如果一組運動信息為非平動運動信息,則該運動信息包括多個運動矢量的組合,例如兩個運動矢量的組合,具體可以是兩個默認位置(亦稱為控制點)的運動矢量的組合,應當理解的是,解碼端可以通過兩個控制點的運動矢量的組合結合所述兩個控制點的位置座標,計算出當前圖像塊中任意位置座標(x,y)的像素的運動矢量,亦可稱為計算出當前圖像塊中每個子運動補償單元的運動矢量,所述運動矢量指向對應參考幀中的參考塊。
編碼端確定候選運動信息列表之後,根據篩選規則從候選運動信息列表中篩選出一組目標運動信息,目標運動信息也可稱為最佳運動信息,例如,編碼端可以採用候選運動信息列表中的各個運動信息進行運動補償預測,然後通過碼率失真優化(rate distortion optimization,RDO)準則篩選出最佳運動信息,例如所述最佳運動信息編碼所述當前編碼塊的碼率失真代價最小,並將最佳運動信息的索引寫入碼流,隨後發送碼流。上述RDO準則即篩選規則。
上述示例僅是舉例說明,其它確定最佳運動信息的方式也適用於本申請。根據本實施例提供的編碼方法,編碼端構建包括兩種候選運動信息的候選運動信息列表,應理解的是,這裡的兩種候選運動信息僅僅是為了體現候選運動信息的獲取方式(derivation)不同,若兩種候選運動信息中的一種不適用於當前編碼塊,則編碼端可以從候選運動信息列表包括的另一種候選運動信息中選擇目標運動信息,並將該目標運動信息的索引信息通過碼流發送給解碼 端,由於候選運動信息列表中的候選運動信息具有唯一的索引信息,因此,編碼端無需在碼流中傳遞指示編碼端使用的候選運動信息列表構建方法的指示信息,從而減小了視頻傳輸的比特開銷,此外,若當前塊的相鄰塊為採用基於控制點的複雜融合模式的編碼塊,則當前塊仍然可以使用該相鄰塊的運動信息進行基於運動模型的AMM模式的運動估計,提高了編碼效率。
下面再舉出一個本申請提供的幀間預測方法的實施例。
實施例一。
步驟1:構建候選運動信息列表。
步驟1.1,將基於運動模型的運動信息加入候選運動信息列表。
可以按照第3圖所示的方法遍歷當前塊周圍的相鄰塊,找到全部的非平動編碼塊,若非平動編碼塊的運動模型與當前塊的運動模型相同,獲得每個非平動編碼塊的控制點的運動信息,進而推導出當前塊的對應控制點的運動信息(即,第一運動信息)。
步驟1.2,將基於組合控制點的運動信息加入候選運動信息列表。
若步驟1.1得到的候選運動信息列表的長度小於預設的列表長度N,則構造基於組合控制點的運動信息(即,第二運動信息),並將該運動信息加入候選運動信息列表。
構造基於組合控制點的運動信息的方法如下:
首先,推導得到各個控制點的運動信息。如第5圖所示,CPk(k=1,2,3,4)表示第k個控制點。A0、A1、A2、B0、B1、B2和B3為當前塊的空域相鄰位置,用於預測CPk(k=1,2,3)的運動信息;Tr為當前塊的時域相鄰位置,用於預測CP4的運動信息。應當理解的是,Tr為當前塊的同位置塊的右下空域鄰近像素位置,其中同位置塊為參考圖像中與當前塊具有相同的大小、形狀和座標的圖像塊。
CP1、CP2、CP3和CP4的位置座標分別為(0,0),(W,0),(H,0)和(W, H),其中W和H為當前塊的寬度和高度。
對於每個控制點,其運動信息按照以下順序獲得:
- 對於CP1,檢查順序依次為B2、A2、B3,如果B2的運動信息可得(available),則採用B2的運動信息。否則,依次檢測A2和B3。若三個位置的運動信息均不可得,則無法獲得CP1的運動信息。
- 對於CP2,檢查順序為B0、B1
- 對於CP3,檢測順序為A0、A1
- 對於CP4,可以採用Tr的運動信息。
此處運動信息可得表示包括X位置的塊已經編碼並且為幀間編碼模式;否則,X位置不可得,X位置例如是位置B2、位置A2、位置B3、位置A0、位置A1、位置B0、位置B1或位置Tr
需要說明的是,其它獲得控制點運動信息的方法也可適用於本發明,在此不做贅述。例如,對於CP1,如果B2、A2、B3均可得,則CP1可以採用{B2、A2、B3}中的任意一個的運動信息,CP2-CP4同理,在此不再贅述。又或者,如第5圖所示,所述當前圖像塊的控制點CP1(亦可稱為左上像素樣本)的運動信息的來源可包括x1個像素樣本的運動信息。其中,所述x1個像素樣本包括:與所述當前圖像塊所屬的視頻幀時域相鄰的視頻幀之中的與所述當前圖像塊的左上像素樣本LT位置相同的像素樣本Col-LT、所述當前圖像塊的左邊的空域相鄰圖像塊A2、所述當前圖像塊的左上的空域相鄰圖像塊B2、所述當前圖像塊的上邊的空域相鄰圖像塊B3中的至少一個。
接著,將控制點的運動信息進行組合,得到非平動的運動信息。
將兩個控制點的運動信息進行組合,用來構建4參數仿射變換模型。兩個控制點的組合方式包括如下方式:{CP1,CP4},{CP2,CP3},{CP1,CP2},{CP2,CP4},{CP1,CP3},{CP3,CP4}。例如,採用CP1和CP2控制點構建的4參數仿射變換 模型記做Affine(CP1,CP2)。
將三個控制點的運動信息進行組合,用來構建6參數仿射變換模型。三個控制點的組合方式為{CP1,CP2,CP4},{CP1,CP2,CP3},{CP2,CP3,CP4},{CP1,CP3,CP4}。例如,採用CP1、CP2和CP3控制點構建的6參數仿射變換模型,記做Affine(CP1,CP2,CP3)。
將四個控制點的運動信息進行組合,用來構建8參數雙線性模型。採用CP1、CP2、CP3和CP4控制點構建的8參數雙線性模型,記做Bilinear(CP1,CP2,CP3,CP4)。
按照預置的順序遍歷這些模型,若組合模型對應的控制點運動信息不可得,則認為該模型不可得,若組合模型對應的控制點運動信息可得,則確定該模型的參考幀索引,並將控制點的運動矢量進行縮放,若縮放後的所有控制點的運動信息一致,則該模型失效,否則,將控制點的運動信息加入候選運動信息列表中。
Figure 111142039-A0305-02-0027-9
縮放的方法如公式(9)所示。CurPoc表示當前幀的圖序計數(picture order count,POC)號,DesPoc表示當前塊的參考幀的POC號,SrcPoc表示控制點的參考幀的POC號,MV s 表示縮放得到的MV。
步驟1.3,補充運動信息。
可選地,若步驟1.2得到的候選運動列表長度小於設定的列表長度N,則將當前塊周邊鄰近的已編碼塊的運動信息,加入候選運動信息列表中,或者,填充零運動信息(即零運動矢量)。
候選運動信息列表的構建流程圖如第6圖所示。
S601,獲取第一候選運動信息,並將第一候選運動信息加入候選運 動信息列表,若此時候選運動信息列表的長度(candNum1)小於預設的列表長度N,則執行步驟S602,若此時候選運動信息列表的長度等於N,則結束候選運動信息列表的構建流程。
S602,獲取第二候選運動信息,並將第二候選運動信息加入候選運動信息列表,若此時候選運動信息列表的長度(candNum2)小於預設的列表長度N,則執行步驟S603,若此時候選運動信息列表的長度等於N,則結束候選運動信息列表的構建流程。
S603,填充運動信息,該運動信息可以是零運動信息和/或當前塊的相鄰塊的平動運動信息,直至候選運動信息列表的長度值等於N停止填充,結束候選運動信息列表的構建流程。
表1為實施例一構建的候選運動信息列表的例子。
Figure 111142039-A0305-02-0028-10
表1中,MV0、MV1、MV2和MV3分別為當前塊的四個控制點的運動矢量,索引值0對應的運動矢量組合為步驟1.1確定的運動信息,索引值2對應的運動矢量組合為步驟1.2確定的運動信息。
需要說明的是,候選運動信息列表中還可以包括預測方向、參考幀 索引值等信息。如索引值對應的預測方向為雙向,則該項包括前向的參考幀索引及運動矢量組合,以及後向的參考幀索引及運動矢量組合。如索引值對應的預測方向為前向,則該項包括前向的參考幀索引及運動矢量組合;如索引值對應的預測方向為後向,則該項包括後向的參考幀索引及運動矢量組合。進一步的,如果編碼端和解碼端約定了特定數量的運動矢量的組合為特定位置的控制點的運動矢量的組合,例如兩個運動矢量的組合,預設是左上頂點和右上頂點的兩個控制點的運動矢量的組合,則候選運動該信息列表中不需要體現與每個運動矢量組合對應的位置座標組合;反之,候選運動該信息列表中,非平動運動模型下的每個索引對應的候選項(candidate)包括多個控制點的運動矢量以及對應的多個控制點的位置座標。
步驟2:確定最佳運動信息。
在解碼端,從碼流中解碼得到塊級的索引,例如當前塊的最佳候選運動信息在候選運動信息列表中的索引值,即可得到當前塊控制點的運動矢量預測值。
可以直接將運動矢量預測值作為當前塊控制點的運動矢量,該方法為基於融合(merge)模式獲取運動矢量的方法,或者, 從碼流中進一步解碼得到各個控制點的運動矢量差值,把運動矢量預測值和運動矢量差值分別相加,得到當前塊的控制點的運動矢量,該方法為基於高級運動矢量預測(advanced motion vector prediction,AMVP)模式獲取運動矢量的方法。
在編碼端,分別採用候選運動信息列表中的運動信息進行運動補償預測,然後通過RDO準則選擇出最佳運動信息及其索引值,並將該索引值寫入碼流。
可以直接將運動矢量預測值作為當前塊控制點的運動矢量(合併預測模式(Merge)),或者,再進行運動估計,搜索得到最終的運動矢量,並將各個控制點的運動矢量預測差值(motion vector difference,MVD)寫入碼流(AMVP模式),這裡的MVD即可理解為估計得到的運動矢量與列表中選擇的最佳運動矢量的差值。
步驟3:根據控制點的運動信息及其運動模型,確定當前塊中每個像素點(x,y)或每個子運動補償單元的運動矢量(Vx,Vy),在當前塊的預測方向上的參考幀索引所指示的參考幀中,根據當前塊中各像素點的運動矢量所指向的位置獲得各像素點的預測值。
應當理解的是,在一種實現方式中,如果運動矢量組合不限於指定位置的運動矢量組合,則在候選運動信息列表中,每個運動矢量組合具有與之關聯的位置座標,換言之,每個運動矢量組合中的每個運動矢量與該運動矢量對應的控制點的位置座標一一對應;在另一種實現中,如果運動矢量組合為指定位置的運動矢量組合,例如4參數的仿射運動模型對應的運動矢量組合為當前塊的左上頂點和右上頂點的運動矢量組合;6參數的仿射運動模型對應的運動矢量組合為當前塊的左上頂點、左下頂點和右上頂點的運動矢量組合,則在候選運動信息列表中,不需要包括與每個運動矢量組合對應的位置座標。
應當理解的是,4參數的仿射運動模型對應2個運動矢量的組合,6參數的仿射運動模型對應3個運動矢量的組合,8參數的仿射運動模型對應4個運動矢量的組合,則在候選運動信息列表中,通過運動矢量組合包括的運動矢量的個數可以間接的推導出所需使用的仿射運動模型,因此,在候選運動信息列表 中也可以不包括運動模型信息域。
應理解的是,這裡的步驟3中假設步驟2所選擇的最佳運動信息對應的運動模型是非平動運動模型的情況;如果步驟2中所選擇的最佳運動信息為一個運動矢量或對應於雙向預測方向的兩個運動矢量,換言之,如果步驟2中所選擇的最佳運動信息對應的運動模型是平動運動模型,則將最佳運動信息中的運動矢量作為當前塊的運動矢量或者將最佳運動信息中的運動矢量和MVD之和作為當前塊的運動矢量,在當前塊的預測方向上的參考幀索引所指示的參考幀中,根據當前塊的運動矢量所指向的位置獲得當前塊的預測塊。
可選地,方法400中,第一候選運動信息的索引信息的比特數小於或等於第二候選運動信息的索引信息的比特數。
第一候選運動信息為基於運動模型的運動信息,根據第一候選運動信息進行編碼的效率高於根據第二候選運動信息進行編碼的效率,因此,第一候選運動信息為目標運動信息的概率較大,因此,可以將第一候選運動信息的索引信息設置為比特數較小的索引信息,有利於減小視頻傳輸的比特開銷。
例如,可以設置先加入候選運動信息列表的運動信息對應比特數較小的索引信息,後加入候選運動信息列表的運動信息對應比特數較大的索引信息,在構建候選運動信息列表時,先將第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表,從而使得第一候選運動信息的索引信息的比特數小於第二候選運動信息的索引信息的比特數。
可選地,所述確定當前編碼塊的候選運動信息列表,包括:S411,當第一相鄰編碼塊為採用平動運動模型的相鄰編碼塊時,將第一相鄰編碼塊的運動信息作為一組第一候選運動信息加入候選運動信息列表。和/或,S412,當第一相鄰編碼塊為採用非平動運動模型的編碼塊時,根據 第一相鄰編碼塊的至少兩個預設位置的運動信息以及第一相鄰編碼塊的運動模型推導出當前編碼塊對應的至少兩個預設位置的運動信息,並將當前編碼塊對應的至少兩個預設位置的運動信息作為一組第一候選運動信息加入候選運動信息列表。
若第一相鄰編碼塊的運動模型為平動運動模型,則無需對第一相鄰編碼塊的運動信息做任何處理,可以將其作為第一候選運動信息直接加入候選運動信息列表,從而提高了編碼效率;若第一相鄰編碼塊的運動模型為非平動運動模型,則需要根據該非平動運動模型對應的公式以及第一相鄰編碼塊的預設位置的運動信息生成第一候選運動信息。
下面再舉一個本申請提供的幀間預測的實施例。
實施例二。
步驟1:構建候選運動信息列表。
步驟1.1,將基於運動模型的運動信息加入候選運動信息列表。
可以按照第3圖所示的方法遍歷當前塊周圍的相鄰塊,若相鄰塊為平動編碼塊,則直接將其運動信息填入候選運動信息列表,若相鄰塊為非平動塊,且非平動編碼塊的運動模型與當前塊的運動模型相同,獲得每個非平動編碼塊的控制點的運動信息,進而推導出當前塊的對應控制點的運動信息(即,第一運動信息)。
步驟1.2,將基於組合控制點的運動信息加入候選運動信息列表。
實施例二的步驟1.2可參照實施例一的步驟1.2,為了簡潔,在此不再贅述。
步驟1.3,補充運動信息。
可選地,若步驟1.2得到的候選運動列表長度小於設定的列表長度N,則填充零運動信息(即零運動矢量)。
表2為實施例二構建的候選運動信息列表的例子。
Figure 111142039-A0305-02-0033-11
表2中,MV0、MV1、MV2和MV3分別為當前塊的四個控制點的運動矢量,索引值0對應的運動矢量組合為步驟1.1確定的運動信息,索引值3對應的運動矢量組合為步驟1.2確定的運動信息。
需要說明的是,候選運動信息列表中還可以包括預測方向、參考幀索引值等信息。如索引值對應的預測方向為雙向,則該項包括前向的參考幀索引及運動矢量組合,以及後向的參考幀索引及運動矢量組合。如索引值對應的預測方向為前向,則該項包括前向的參考幀索引及運動矢量組合;如索引值對應的預測方向為後向,則該項包括後向的參考幀索引及運動矢量組合。
步驟2:確定最佳運動信息。
在解碼端,從碼流中解碼得到當前塊的最佳候選運動信息在列表中的索引值,即可得到當前塊控制點的運動矢量預測值。
可以直接將運動矢量預測值作為當前塊控制點的運動矢量(Merge模式),或者, 從碼流中解碼得到各個控制點的運動矢量差值,把運動矢量預測值和MVD分別相加,得到當前塊的控制點的運動矢量(AMVP模式)。
在編碼端,分別採用候選運動信息列表中的運動信息進行運動補償預測,然後通過RDO準則選擇出最佳運動信息及其索引值,並將該索引值寫入碼流。
可以直接將運動矢量預測值作為當前塊控制點的運動矢量(Merge模式),或者,再進行運動估計,搜索得到最終的運動矢量,並將各個控制點的MVD寫入碼流(AMVP模式)。
步驟3:根據控制點的運動信息及其運動模型,確定當前塊中每個像素點(x,y)或每個子運動補償單元的運動矢量(Vx,Vy),在當前塊的預測方向上的參考幀索引所指示的參考幀中,根據當前塊中各像素點的運動矢量所指向的位置獲得各像素點的預測值。
應當理解的是,在一種實現方式中,如果運動矢量組合不限於指定位置的運動矢量組合,則在候選運動信息列表中,每個運動矢量組合具有與之關聯的位置座標,換言之,每個運動矢量組合中的每個運動矢量與該運動矢量對應的控制點的位置座標一一對應;在另一種實現中,如果運動矢量組合為指定位置的運動矢量組合,例如4參數的仿射運動模型對應的運動矢量組合為當前塊的左上頂點和右上頂點的運動矢量組合;6參數的仿射運動模型對應的運動矢量組合為當前塊的左上頂點、左下頂點和右上頂點的運動矢量組合,則在候選運動信息列表中,不需要包括與每個運動矢量組合對應的位置座標。
應當理解的是,4參數的仿射運動模型對應2個運動矢量的組合,6參 數的仿射運動模型對應3個運動矢量的組合,8參數的仿射運動模型對應4個運動矢量的組合,則在候選運動信息列表中,通過運動矢量組合包括的運動矢量的個數可以間接的推導出所需使用的仿射運動模型,因此,在候選運動信息列表中也可以不包括運動模型信息域。需要說明的是,運動信息列表包括了預測方向的信息,可以根據此信息進行區分不同的運動模型,例如,雙向4參數模型包括2個前向,2個後向運動矢量;雙向平動模型則包括1個前向,1個後向運動矢量。
可選地,當採用非平動運動模型的第一相鄰編碼塊的數量大於或等於數量閾值時,第三候選運動信息的索引信息的比特數小於第二候選運動信息的比特數,第三候選運動信息為基於採用非平動運動模型的第一相鄰編碼塊的至少兩個預設位置的運動信息以及採用非平動運動模型的第一相鄰編碼塊的運動模型推導出的一組第一候選運動信息。
以第3圖為例,位置A所在的編碼塊為採用非平動運動模型的第一相鄰編碼塊,左上頂點(x2,y2)和右上頂點(x3,y3)為第一相鄰編碼塊的至少兩個默認位置,V2和V3為該至少兩個預設位置的運動信息,V0和V1為根據V2和V3推導出的一組第一候選運動信息(即,第三候選運動信息)。
若採用非平動運動模型的第一相鄰編碼塊的數量大於或等於數量閾值,則說明當前編碼塊為採用非平動運動模型的編碼塊的概率較大,因此,可以將基於非平動運動模型的第一相鄰編碼塊推導出的第一候選運動信息(即,第三候選運動信息)的索引信息設置為比特數較小的索引信息,由於目標運動信息為第三候選運動信息的概率較大,因此,本實施例有利於減少視頻傳輸的比特數。
例如,可以設置先加入候選運動信息列表的運動信息對應比特數較小的索引信息,後加入候選運動信息列表的運動信息對應比特數較大的索引信 息,在構建候選運動信息列表時,先將第三候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表,從而使得第三候選運動信息的索引信息的比特數小於第二候選運動信息的索引信息的比特數。
可選地,當候選運動信息列表的長度小於長度閾值,且第一相鄰編碼塊還包括採用平動運動模型的第一相鄰編碼塊時,候選運動信息列表還包括採用平動運動模型的第一相鄰編碼塊的運動信息,所述採用平動運動模型的第一相鄰編碼塊的運動信息為一組第一候選運動信息,所述採用平動運動模型的第一相鄰編碼塊的運動信息的索引信息的比特數大於或等於第二候選運動信息的索引信息的比特數。
在本申請中,候選運動信息列表的長度指的是候選運動信息列表能夠容納的運動信息的數量。
若第二候選運動信息加入候選運動信息列表之後,候選運動信息列表長度小於長度閾值,並且第一相鄰編碼塊還包括採用平動運動模型的第一相鄰編碼塊,則將採用平動運動模型的第一相鄰編碼塊的運動信息作為第一候選運動信息加入候選運動信息列表,並將該第一候選運動信息的索引信息設置為比特數較大的索引信息,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入候選運動信息列表。
可選地,當採用非平動運動模型的第一相鄰編碼塊的數量小於或等於數量閾值時,所述採用平動運動模型的第一相鄰編碼塊的運動信息為一組第一候選運動信息,且所述採用平動運動模型的第一相鄰編碼塊的運動信息的索引信息的比特數小於第二候選運動信息的比特數。
若採用非平動運動模型的第一相鄰編碼塊的數量小於或等於數量閾值,則說明當前編碼塊為採用平動運動模型的編碼塊的概率較大,因此,可以將採用平動運動模型的第一相鄰編碼塊的運動信息作為一組第一候選運動信 息,並將該組第一候選運動信息的索引信息設置為比特數較小的索引信息,由於目標運動信息為該第一候選運動信息的概率較大,因此,本實施例有利於減少視頻傳輸的比特開銷。
以第3圖為例,若位置A所在的編碼塊為採用平動運動模型的第一相鄰編碼塊,則可以將位置A所在的編碼塊的運動信息作為當前塊左下角的控制點的運動信息(即,第一候選運動信息)。
可以設置先加入候選運動信息列表的運動信息對應比特數較小的索引信息,後加入候選運動信息列表的運動信息對應比特數較大的索引信息,在構建候選運動信息列表時,先將採用平動運動模型的第一相鄰編碼塊的運動信息作為一組第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表,從而有利於減少目標運動信息的索引信息的比特數。
可選地,當候選運動信息列表的長度小於長度閾值,且第一相鄰編碼塊還包括採用非平動運動模型的第一相鄰編碼塊時,候選運動信息列表還包括第四候選運動信息,第四候選運動信息為基於採用非平動運動模型的第一相鄰編碼塊的至少兩個預設位置的運動信息以及採用非平動運動模型的第一相鄰編碼塊的運動模型推導出的一組第一候選運動信息,第四候選運動信息的索引信息的比特數大於或等於第二候選運動信息的索引信息的比特數。
若第二候選運動信息加入候選運動信息列表之後,候選運動信息列表長度小於長度閾值,並且第一相鄰編碼塊還包括採用非平動運動模型的第一相鄰編碼塊,則將基於採用非平動運動模型的第一相鄰編碼塊的運動信息推導出的運動信息作為第一候選運動信息加入候選運動信息列表,並將該第一候選運動信息的索引信息設置為比特數較大的索引信息,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入候選運動信息列表。
以第3圖為例,假設位置A所在的編碼塊為採用非平動運動模型的第 一相鄰編碼塊,左上頂點(x2,y2)和右上頂點(x3,y3)為該第一相鄰編碼塊的至少兩個默認位置,V2和V3為該至少兩個預設位置的運動信息,則V0和V1為根據V2和V3推導出的一組第一候選運動信息(即,第四候選運動信息)。
下面,再舉一個本申請提供的幀間預測的方法的實施例。
實施例三。
步驟1:構建候選運動信息列表。
如第3圖所示,按照A,B,C,D,E的順序遍歷當前塊周邊的相鄰塊,統計相鄰塊中非平動編碼塊的數量M。
若M大於預置的數量閾值T,則運動信息的加入順序為:首先將基於非平動編碼塊的運動信息確定的當前塊的運動信息(即一些第一候選運動信息)加入候選運動信息列表,即根據所述非平動編碼塊的至少兩個預設位置的運動信息以及所述非平動編碼塊的運動模型推導出所述當前塊對應的至少兩個預設位置的運動信息,並將所述當前塊對應的至少兩個預設位置的運動信息作為一組第一候選運動信息加入所述候選運動信息列表;其次將基於組合控制點的運動信息(即第二候選運動信息)加入候選運動信息列表;若此時候選運動信息列表的長度小於設定的列表長度N,則進一步將基於平動編碼塊的運動信息確定的當前塊的運動信息(即另外的一些第一候選運動信息)加入候選運動信息列表;若此時候選運動信息列表的長度仍然小於設定的列表長度N,再填充零運動信息。
若M小於或等於預置的數量閾值T,則運動信息的加入順序為:首先將基於平動編碼塊的運動信息確定的當前塊的運動信息(即一些第一候選運動信息)加入候選運動信息列表; 其次將基於組合控制點的運動信息(即第二候選運動信息)加入候選運動信息列表;若此時候選運動信息列表的長度小於設定的列表長度N,則進一步將基於非平動編碼塊的運動信息推導的當前塊的運動信息(即另外的一些第一候選運動信息)加入候選運動信息列表;若此時候選運動信息列表的長度仍然小於設定的列表長度N,再填充零運動信息。
基於非平動編碼塊的運動信息或平動編碼塊的運動信息確定當前塊的運動信息的方法可參考實施例一的步驟1.1和步驟1.2,為了簡潔,在此不再贅述。
可選地,第一候選運動信息和第二候選運動信息均為當前編碼塊的第一組位置的運動信息,當前編碼塊中至少兩個默認位置為第二組位置,所述確定當前編碼塊的候選運動信息列表,包括:當第二組位置與所述第一組位置相異時,根據位置變換公式以及第二組位置對應的運動信息推導出第二候選運動信息。
當第一候選運動信息對應的位置的數量和第二候選運動信息對應的位置的數量相同時,根據本實施得到的候選運動信息列表中的運動信息均為特定位置的運動信息,從而減小了運動估計的複雜度。
以第5圖為例,假設第一候選運動信息為CP1和CP2對應的運動信息,則CP1和CP2為第一組位置,若第二候選運動信息所基於的像素位置是位置A1和位置A2(即,第二組位置),則編碼端可以根據位置變換公式以及第二組位置對應的運動信息得到CP1和CP2對應的第二候選運動信息。
可選地,第一候選運動信息為當前編碼塊的第一組位置的運動信息,第二候選運動信息為當前編碼塊的第三組位置的運動信息,所述方法還包 括:當第一組位置與第三組位置相異時,根據位置變換公式以及第二候選運動信息推導出第五候選運動信息,所述第五候選運動信息對應的位置與第一組位置相同。
當第一候選運動信息對應的位置的數量和第二候選運動信息對應的位置的數量相同時,根據本實施得到的候選運動信息列表中的運動信息均為特定位置的運動信息,從而減小了運動估計的複雜度。
以第5圖為例,假設第一候選運動信息為CP1和CP2對應的運動信息,則CP1和CP2為第一組位置,若第二候選運動信息為CP2和CP3(即,第三組位置)對應的運動信息,則編碼端可以根據位置變換公式以及CP2和CP3得到CP1和CP2對應的第二候選運動信息。
在實施例一、實施例二和實施例三中,可將不同控制點的組合轉換為同一位置的控制點。
例如將{CP1,CP4},{CP2,CP3},{CP2,CP4},{CP1,CP3},{CP3,CP4}組合得到的4參數仿射變換模型轉換為控制點{CP1,CP2}來表示。轉換方法為將控制點的運動矢量及其座標信息,代入公式(1),得到模型參數,再將{CP1,CP2}的座標信息代入,得到其運動矢量。
例如將{CP1,CP2,CP4},{CP2,CP3,CP4},{CP1,CP3,CP4}組合的6參數仿射變換模型轉換為控制點{CP1,CP2,CP3}來表示。轉換方法為將控制點的運動矢量及其座標信息,代入公式(3),得到模型參數,再將{CP1,CP2,CP3}的座標信息代入,得到其運動矢量。
公式(1)和公式(3)相當於位置變換公式。
上文詳細描述了本申請提供的視頻數據的幀間預測方法,下面,將結合附圖對本申請提供的視頻編解碼系統以及視頻數據的編碼裝置和解碼裝置進行清楚、完整地描述。
第7圖為本申請實施例中所描述的一種實例的視頻解碼系統1的框圖。如本文所使用,術語“視頻解碼器”一般是指視訊轉碼器和視頻解碼器兩者。在本申請中,術語“視頻解碼”或“解碼”可一般地指代視頻編碼或視頻解碼。視頻解碼系統1的視訊轉碼器100和視頻解碼器200用於根據本申請提出的幀間預測方法來預測當前經解碼圖像塊或其子運動補償單元的運動信息,例如運動矢量,使得預測出的運動矢量最大程度上接近使用運動估算方法得到的運動矢量從而進一步的改善編解碼性能。
如第7圖中所示,視頻解碼系統1包含源裝置10和目的地裝置20。源裝置10產生經編碼視頻數據。因此,源裝置10可被稱為視頻編碼裝置。目的地裝置20可對由源裝置10所產生的經編碼的視頻數據進行解碼。因此,目的地裝置20可被稱為視頻解碼裝置。源裝置10、目的地裝置20或兩個的各種實施方案可包含一或多個處理器以及耦合到所述一或多個處理器的記憶體。所述記憶體可包含但不限於隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read only memory,ROM)、可擦除可程式設計唯讀記憶體(erasable programmable ROM,EPROM)、快閃記憶體或可用於以可由計算器存取的指令或數據結構的形式存儲所要的程式碼的任何其它媒體,如本文所描述。
源裝置10和目的地裝置20可以包括各種裝置,包含桌上型計算器、移動計算裝置、筆記型(例如,膝上型)計算器、平板計算器、機上盒、例如所謂的“智慧”電話等電話手持機、電視機、相機、顯示裝置、數位媒體播放機、視頻遊戲控制台、車載計算器或其類似者。
目的地裝置20可經由鏈路30從源裝置10接收經編碼視頻數據。鏈路30可包括能夠將經編碼視頻數據從源裝置10移動到目的地裝置20的一或多個媒體或裝置。在一個實例中,鏈路30可包括使得源裝置10能夠即時將經編碼視頻數據直接發射到目的地裝置20的一或多個通信媒體。在此實例中,源裝置10可 根據通信標準(例如無線通訊協定)來調製經編碼視頻數據,且可將經調製的視頻數據發射到目的地裝置20。所述一或多個通信媒體可包含無線和/或有線通信媒體,例如射頻(radio frequency,RF)頻譜或一或多個物理傳輸線。所述一或多個通信媒體可形成基於分組的網路的一部分,基於分組的網路例如為局域網、廣域網路或全球網路(例如,網際網路)。所述一或多個通信媒體可包含路由器、交換器、基站或促進從源裝置10到目的地裝置20的通信的其它設備。
在另一實例中,可將經編碼數據從輸出介面140輸出到存儲裝置40。類似地,可通過輸入介面240從存儲裝置40存取經編碼數據。存儲裝置40可包含多種分散式或本地存取的數據存儲媒體中的任一者,例如硬碟驅動器、藍光光碟、數位通用光碟(digital versatile disc,DVD)、唯讀光碟(CD-ROM)、快閃記憶體、易失性或非易失性記憶體,或用於存儲經編碼視頻數據的任何其它合適的數位存儲媒體。
在另一實例中,存儲裝置40可對應於檔案伺服器或可保持由源裝置10產生的經編碼視頻的另一中間存儲裝置。目的地裝置20可經由數據流程或下載從存儲裝置40存取所存儲的視頻數據。檔案伺服器可為任何類型的能夠存儲經編碼的視頻數據並且將經編碼的視頻數據發射到目的地裝置20的伺服器。實例檔案伺服器包含網路服務器(例如,用於網站)、檔案傳輸通訊協定(file transfer protocol,FTP)伺服器、網路附接式存儲(network attached storage,NAS)裝置或本地磁碟機。目的地裝置20可通過任何標準數據連接(包含網際網路連接)來存取經編碼視頻數據。這可包含無線通道(例如,無線保真(wireless-fidelity,Wi-Fi)連接)、有線連接(例如,數位用戶線路(digital subscriber line,DSL)、纜線數據機等),或適合於存取存儲在檔案伺服器上的經編碼視頻數據的兩者的組合。經編碼視頻數據從存儲裝置40的傳輸可為數據流程、下載傳輸或兩者的組合。
本申請的運動矢量預測技術可應用於視頻編解碼以支援多種多媒體應用,例如空中電視廣播、有線電視發射、衛星電視發射、串流視頻發射(例如,經由網際網路)、用於存儲於數據存儲媒體上的視頻數據的編碼、存儲在數據存儲媒體上的視頻數據的解碼,或其它應用。在一些實例中,視頻解碼系統1可用於支援單向或雙向視頻傳輸以支援例如視頻數據流程、視頻重播、視頻廣播和/或視頻電話等應用。
第7圖中所說明的視頻解碼系統1僅為實例,並且本申請的技術可適用於未必包含編碼裝置與解碼裝置之間的任何數據通信的視頻解碼設置(例如,視頻編碼或視頻解碼)。在其它實例中,數據從本機存放區器檢索、在網路上數據流程等等。視頻編碼裝置可對數據進行編碼並且將數據存儲到記憶體,和/或視頻解碼裝置可從記憶體檢索數據並且對數據進行解碼。在許多實例中,由並不彼此通信而是僅編碼數據到記憶體和/或從記憶體檢索數據且解碼數據的裝置執行編碼和解碼。
在第7圖的實例中,源裝置10包含視頻源120、視訊轉碼器100和輸出介面140。在一些實例中,輸出介面140可包含調節器/解調器(數據機)和/或發射器。視頻源120可包括視頻捕獲裝置(例如,攝像機)、含有先前捕獲的視頻數據的視頻存檔、用以從視頻內容提供者接收視頻數據的視頻饋入介面,和/或用於產生視頻數據的計算器圖形系統,或視頻數據的此些來源的組合。
視訊轉碼器100可對來自視頻源120的視頻數據進行編碼。在一些實例中,源裝置10經由輸出介面140將經編碼視頻數據直接發射到目的地裝置20。在其它實例中,經編碼視頻數據還可存儲到存儲裝置40上,供目的地裝置20以後存取來用於解碼和/或播放。
在第7圖的實例中,目的地裝置20包含輸入介面240、視頻解碼器200和顯示裝置220。在一些實例中,輸入介面240包含接收器和/或數據機。輸入介 面240可經由鏈路30和/或從存儲裝置40接收經編碼視頻數據。顯示裝置220可與目的地裝置20集成或可在目的地裝置20外部。一般來說,顯示裝置220顯示經解碼視頻數據。顯示裝置220可包括多種顯示裝置,例如,液晶顯示器(liquid crystal display,LCD)、等離子顯示器、有機發光二極體(organic light-emitting diode,OLED)顯示器或其它類型的顯示裝置。
儘管第7圖中未圖示,但在一些方面,視訊轉碼器100和視頻解碼器200可各自與音訊編碼器和解碼器集成,且可包含適當的多工器-多路分用器單元或其它硬體和軟體,以處置共同數據流程或單獨數據流程中的音訊和視頻兩者的編碼。在一些實例中,如果適用的話,那麼混流-分流(multiplex-demultiplex,MUX-DEMUX)單元可符合ITU H.223多工器協議,或例如使用者數據包通訊協定(user datagram protocol,UDP)等其它協議。
視訊轉碼器100和視頻解碼器200各自可實施為例如以下各項的多種電路中的任一者:一或多個微處理器、數位訊號處理器(digital signal processor,DSP)、專用積體電路(application-specific integrated circuit,ASIC)、現場可程式設計閘陣列(field programmable gate array,FPGA)、離散邏輯、硬體或其任何組合。如果部分地以軟體來實施本申請,那麼裝置可將用於軟體的指令存儲在合適的非易失性計算器可讀存儲媒體中,且可使用一或多個處理器在硬體中執行所述指令從而實施本申請技術。前述內容(包含硬體、軟體、硬體與軟體的組合等)中的任一者可被視為一或多個處理器。視訊轉碼器100和視頻解碼器200中的每一者可包含在一或多個編碼器或解碼器中,所述編碼器或解碼器中的任一者可集成為相應裝置中的組合編碼器/解碼器(編碼解碼器)的一部分。
本申請可大體上將視訊轉碼器100稱為將某些信息“發信號通知”或“發射”到例如視頻解碼器200的另一裝置。術語“發信號通知”或“發射”可大體上指代用以對經壓縮視頻數據進行解碼的語法元素和/或其它數據的傳送。此傳送 可即時或幾乎即時地發生。替代地,此通信可經過一段時間後發生,例如可在編碼時在經編碼位元流中將語法元素存儲到計算器可讀存儲媒體時發生,解碼裝置接著可在所述語法元素存儲到此媒體之後的任何時間檢索所述語法元素。
視訊轉碼器100和視頻解碼器200可根據例如高效視頻編碼(HEVC)等視訊壓縮標準或其擴展來操作,並且可符合HEVC測試模型(HM)。或者,視訊轉碼器100和視頻解碼器200也可根據其它業界標準來操作,所述標準例如是ITU-T H.264、H.265標準,或此類標準的擴展。然而,本申請的技術不限於任何特定編解碼標準。
在一個實例中,一併參閱第4圖,視訊轉碼器100用於:將與當前待編碼的圖像塊相關的語法元素編碼入數位視訊輸出位元流(簡稱為位流或碼流),這裡將用於當前圖像塊幀間預測的語法元素簡稱為幀間預測數據,其中,幀間預測數據可以包括用於指示目標運動信息的索引信息,為了確定用於對當前圖像塊進行編碼的目標運動信息,視訊轉碼器100還用於確定或生成候選運動信息列表(S410),並根據篩選規則(例如RDO)從候選運動信息列表中確定目標運動信息(S420),視訊轉碼器100還用於基於確定的目標運動信息,編碼所述當前圖像塊(S430),這裡的編碼過程可以包括基於確定的目標運動信息,預測所述當前圖像塊中每個子運動補償單元(亦可稱為基本運動補償單元)的運動信息,並利用所述當前圖像塊中一個或多個子運動補償單元的運動信息對所述當前圖像塊執行幀間預測。
應理解,基本運動補償單元是進行運動補償的最小單元,在單元內具有統一的運動信息,在本發明實施例中,採用像素點作為基本運動補償單元,也可以使用像素矩陣作為基本運動補償單元等,本申請不作限定。
應當理解的是,當視訊轉碼器使用AMVP模式進行幀間預測時,如果由基於本申請提出的新的幀間預測方法預測出的運動信息產生的預測塊與當 前待編碼圖像塊(即原始塊)之間的差值(即殘差)為0,則視訊轉碼器100中只需要將與當前待編碼的圖像塊相關的語法元素編入位元流(亦稱為碼流);反之,除了語法元素外,還需要將相應的殘差編入位流。當視訊轉碼器使用融合模式進行幀間預測時,只需將目標運動信息的索引信息編入位元流。
在另一實例中,一併參閱第4圖,視頻解碼器200用於:從位元流中解碼出與當前待解碼的圖像塊相關的語法元素,並確定候選運動信息列表(S410),這裡將用於當前圖像塊幀間預測的語法元素簡稱為幀間預測資料,所述幀間預測數據包括用於確定目標運動信息的索引信息,視頻解碼器200基於幀間預測數據中的索引信息確定目標運動信息(S420),並且基於確定的目標運動信息解碼所述當前圖像塊(S430),這裡的解碼過程可以包括基於確定的目標運動信息,預測所述當前圖像塊中一個或多個基本運動補償單元的運動信息,並利用所述當前圖像塊中一個或多個基本運動補償單元的運動信息對所述當前圖像塊執行幀間預測。
可選地,視頻解碼器200確定的候選運動信息列表可以是完整的列表(即,與視訊轉碼器確定的候選運動信息列表相同的列表),也可以是不完整的列表,例如,包括目標運動信息的部分列表,例如如果碼流中攜帶的用於確定目標運動信息的索引值為3,則確定的不完整的列表包括索引值為0,1,2和3的候選運動信息,而可以不包括索引值為4和5等的候選運動信息。
由上可見,本申請提供的視訊轉碼器100和視頻解碼器200,構建包括兩種候選運動信息的候選運動信息列表,該兩種候選運動信息具有統一編排的索引信息,若兩種候選運動信息中的一種不適用於當前圖像塊,則視訊轉碼器100可以從候選運動信息列表包括的另一種候選運動信息中選擇目標運動信息,並將該目標運動信息的索引信息通過碼流發送給視頻解碼器200,由於候選運動信息列表中的候選運動信息具有唯一的索引信息,因此,視訊轉碼器100無 需在碼流中傳遞指示編碼端使用的候選運動信息列表構建方法的指示信息,從而減少了視頻傳輸的比特開銷。
第8圖為本申請實施例中所描述的一種實例的視訊轉碼器100的框圖。視訊轉碼器100用於將視頻輸出到後處理實體41。後處理實體41表示可處理來自視訊轉碼器100的經編碼視頻數據的視頻實體的實例,例如媒體感知網路元件(MANE)或拼接/編輯裝置。在一些情況下,後處理實體41可為網路實體的實例。在一些視頻編碼系統中,後處理實體41和視訊轉碼器100可為單獨裝置的若干部分,而在其它情況下,相對於後處理實體41所描述的功能性可由包括視訊轉碼器100的相同裝置執行。在某一實例中,後處理實體41是第7圖的存儲裝置40的實例。
視訊轉碼器100可根據本申請提出的方法執行視頻圖像塊的幀間預測。
在第8圖的實例中,視訊轉碼器100包括預測處理單元108、濾波器單元106、經解碼圖像緩衝器(decoded picture buffer,DPB)107、求和器112、變換器101、量化器102和熵編碼器103。預測處理單元108包括幀間預測器110和幀內預測器109。為了圖像塊重構,視訊轉碼器100還包含反量化器104、反變換器105和求和器111。濾波器單元106既定表示一或多個環路濾波器,例如去塊濾波器、自我調整環路濾波器(adaptive loop filter,ALF)和樣本自我調整偏移(sample adaptive offset,SAO)濾波器。儘管在第8圖中將濾波器單元106示出為環路內濾波器,但在其它實現方式下,可將濾波器單元106實施為環路後濾波器。在一種示例下,視訊轉碼器100還可以包括視頻數據記憶體、分割單元(圖中未示意)。
視頻數據記憶體可存儲待由視訊轉碼器100的元件編碼的視頻數據。可從視頻源120獲得存儲在視頻數據記憶體中的視頻資料。DPB 107可為參考圖像記憶體,其存儲用於由視訊轉碼器100在幀內、幀間解碼模式中對視頻數 據進行編碼的參考視頻數據。視頻數據記憶體和DPB 107可由多種記憶體裝置中的任一者形成,例如包含同步DRAM(SDRAM)的動態隨機存取記憶體(DRAM)、磁阻式RAM(MRAM)、電阻式RAM(RRAM),或其它類型的記憶體裝置。視頻數據記憶體和DPB 107可由同一記憶體裝置或單獨記憶體裝置提供。在各種實例中,視頻數據記憶體可與視訊轉碼器100的其它元件一起在晶片上,或相對於那些元件在晶片外。
如第8圖中所示,視訊轉碼器100接收視頻數據,並將所述視頻資料存儲在視頻數據記憶體中。分割單元將所述視頻數據分割成若干圖像塊,而且這些圖像塊可以被進一步分割為更小的塊,例如基於四叉樹結構或者二叉樹結構的圖像塊分割。此分割還可包含分割成條帶(slice)、片(tile)或其它較大單元。視訊轉碼器100通常說明編碼待編碼的視頻條帶內的圖像塊的元件。所述條帶可分成多個圖像塊(並且可能分成被稱作片的圖像塊集合)。預測處理單元108(具體是預測處理單元108中的幀間預測單元110)可以確定當前圖像塊的候選運動信息列表,並根據篩選規則從該候選運動信息列表中確定目標運動信息,並根據目標運動信息,對當前圖像塊執行幀間預測預測,預處理單元108可以將所得經幀內、幀間解碼的塊提供給求和器112以產生殘差塊,且提供給求和器111以重構用作參考圖像的經編碼塊。此外,預處理單元108(具體是,幀間預測單元110)可以將目標運動信息的索引信息發送至熵編碼器103,以便於熵編碼器103將目標運動信息的索引信息編入碼流。
預測處理單元108內的幀內預測器109可相對於與待編碼當前塊在相同幀或條帶中的一或多個相鄰塊執行當前圖像塊的幀內預測性編碼,以去除空間冗餘。預測處理單元108內的幀間預測器110可相對於一或多個參考圖像中的一或多個預測塊執行當前圖像塊的幀間預測性編碼以去除時間冗餘。
具體的,幀間預測器110可用於確定用於確定目標運動信息。舉例來 說,幀間預測器110可使用速率-失真分析來計算候選運動信息列表中的各種運動信息的速率-失真值,並從中選擇具有最佳速率-失真特性的運動信息。速率失真分析通常確定經編碼塊與經編碼以產生所述經編碼塊的原始的未經編碼塊之間的失真(或誤差)的量,以及用於產生經編碼塊的位元速率(也就是說,位元數目)。例如,幀間預測器110可確定候選運動信息集合中編碼所述當前圖像塊的碼率失真代價最小的運動信息為用於對當前圖像塊進行幀間預測的目標運動信息。下文將詳細介紹幀間預測性編碼過程。
幀間預測器110用於基於確定的目標運動信息,預測當前圖像塊中一個或多個基本運動補償單元的運動信息(例如運動矢量),並利用當前圖像塊中一個或多個基本運動補償單元的運動信息(例如運動矢量)獲取或產生當前圖像塊的預測塊。幀間預測器110可在參考圖像列表中的一者中定位所述運動矢量指向的預測塊。幀間預測器110還可產生與圖像塊和視頻條帶相關聯的語法元素以供視頻解碼器200在對視頻條帶的圖像塊解碼時使用。又或者,一種示例下,幀間預測器110利用每個基本運動補償單元的運動信息執行運動補償過程,以生成每個基本運動補償單元的預測塊,從而得到當前圖像塊的預測塊;應當理解的是,這裡的幀間預測器110執行運動估計和運動補償過程。
具體的,在為當前圖像塊選擇目標運動信息之後,幀間預測器110可將指示當前圖像塊的目標運動信息提供到熵編碼器103,以便於熵編碼器103編碼指示所選目標運動信息的信息。在本申請中,熵編碼器103可在所發射的位流中包含與當前圖像塊相關的幀間預測數據,其可包括索引信息,以表示從候選運動信息列表中選擇的目標運動信息。
幀內預測器109可對當前圖像塊執行幀內預測。明確地說,幀內預測器109可確定用來編碼當前塊的幀內預測模式。舉例來說,幀內預測器109可使用速率-失真分析來計算各種待測試的候選運動信息的速率-失真值,並從待測試 模式當中選擇具有最佳速率-失真特性的幀內預測模式。在任何情況下,在為圖像塊選擇目標運動信息之後,幀內預測器109可將當前圖像塊的目標運動信息提供到熵編碼器103,以便熵編碼器103編碼目標運動信息。
在預測處理單元108經由幀間預測、幀內預測產生當前圖像塊的預測塊之後,視訊轉碼器100通過從待編碼的當前圖像塊減去所述預測塊來形成殘差圖像塊。求和器112表示執行此減法運算的一或多個組件。所述殘差塊中的殘差視頻資料可包含在一或多個TU中,並應用於變換器101。變換器101使用例如離散余弦變換(DCT)或概念上類似的變換等變換將殘差視頻資料變換成殘差變換係數。變換器101可將殘差視頻數據從像素值域轉換到變換域,例如頻域。
變換器101可將所得變換係數發送到量化器102。量化器102量化所述變換係數以進一步減小位元速率。在一些實例中,量化器102可接著執行對包含經量化的變換係數的矩陣的掃描。或者,熵編碼器103可執行掃描。
在量化之後,熵編碼器103對經量化變換係數進行熵編碼。舉例來說,熵編碼器103可執行上下文自我調整可變長度編碼(context adaptive variable length coding,CAVLC)、上下文自我調整二進位算術編碼(context adaptive binary arithmatic coding,CABAC)、基於語法的上下文自我調整二進位算術編碼(SBAC)、概率區間分割熵(PIPE)編碼或另一熵編碼方法或技術。在由熵編碼器103熵編碼之後,可將經編碼位元流發射到視頻解碼器200,或經存檔以供稍後發射或由視頻解碼器200檢索。熵編碼器103還可對待編碼的當前圖像塊的語法元素進行熵編碼,例如,將目標運動信息編入碼流中。
反量化器104和反變化器105分別應用逆量化和逆變換以在像素域中重構所述殘差塊,例如以供稍後用作參考圖像的參考塊。求和器111將經重構的殘差塊添加到由幀間預測器110或幀內預測器109產生的預測塊,以產生經重構圖像塊。濾波器單元106可以適用於經重構圖像塊以減小失真,諸如方塊效應 (block artifacts)。然後,該經重構圖像塊作為參考塊存儲在經解碼圖像緩衝器107中,可由幀間預測器110用作參考塊以對後續視頻幀或圖像中的塊進行幀間預測。
應當理解的是,視訊轉碼器100的其它的結構變化可用於編碼視頻流。例如,對於某些圖像塊或者圖像幀,視訊轉碼器100可以直接地量化殘差信號而不需要經變換器101處理,相應地也不需要經反變換器105處理;或者,對於某些圖像塊或者圖像幀,視訊轉碼器100沒有產生殘差數據,相應地不需要經變換器101、量化器102、反量化器104和反變換器105處理;或者,視訊轉碼器100可以將經重構圖像塊作為參考塊直接地進行存儲而不需要經濾波器單元106處理;或者,視訊轉碼器100中量化器102和反量化器104可以合併在一起。
第9圖為本申請實施例中所描述的一種實例的視頻解碼器200的框圖。在第9圖的實例中,視頻解碼器200包括熵解碼器203、預測處理單元208、反量化器204、反變換器205、求和器211、濾波器單元206以及經解碼圖像緩衝器207。預測處理單元208可以包括幀間預測器210和幀內預測器209。在一些實例中,視頻解碼器200可執行大體上與相對於來自第8圖的視訊轉碼器100描述的編碼過程互逆的解碼過程。
在解碼過程中,視頻解碼器200從視訊轉碼器100接收表示經編碼視頻條帶的圖像塊和相關聯的語法元素的經編碼視頻位元流。視頻解碼器200可從網路實體42接收視頻數據,可選的,還可以將所述視頻數據存儲在視頻數據記憶體(圖中未示意)中。視頻數據記憶體可存儲待由視頻解碼器200的元件解碼的視頻數據,例如經編碼視頻位元流。存儲在視頻數據記憶體中的視頻數據,例如可從存儲裝置40、從相機等本地視頻源、經由視頻數據的有線或無線網路通信或者通過存取物理數據存儲媒體而獲得。視頻數據記憶體可作為用於存儲來自經編碼視頻位元流的經編碼視頻數據的經解碼圖像緩衝器(CPB)。因此, 儘管在第9圖中沒有示意出視頻數據記憶體,但視頻數據記憶體和DPB 207可以是同一個的記憶體,也可以是單獨設置的記憶體。視頻數據記憶體和DPB 207可由多種記憶體裝置中的任一者形成,例如:包含同步DRAM(SDRAM)的動態隨機存取記憶體(DRAM)、磁阻式RAM(MRAM)、電阻式RAM(RRAM),或其它類型的記憶體裝置。在各種實例中,視頻數據記憶體可與視頻解碼器200的其它元件一起集成在晶片上,或相對於那些元件設置在晶片外。
網路實體42可例如為伺服器、MANE、視頻編輯器/剪接器,或用於實施上文所描述的技術中的一或多者的其它此裝置。網路實體42可包括或可不包括視訊轉碼器,例如視訊轉碼器100。在網路實體42將經編碼視頻位元流發送到視頻解碼器200之前,網路實體42可實施本申請中描述的技術中的部分。在一些視頻解碼系統中,網路實體42和視頻解碼器200可為單獨裝置的部分,而在其它情況下,相對於網路實體42描述的功能性可由包括視頻解碼器200的相同裝置執行。在一些情況下,網路實體42可為第7圖的存儲裝置40的實例。
視頻解碼器200的熵解碼器203對位元流進行熵解碼以產生經量化的係數和一些語法元素。熵解碼器203將語法元素轉發到預測處理單元208。視頻解碼器200可接收在視頻條帶層級和/或圖像塊層級處的語法元素。本申請中,在一種示例下,這裡的語法元素可以包括與當前圖像塊相關的目標運動信息。
當視頻條帶被解碼為經幀內解碼(I)條帶時,預測處理單元208的幀內預測器209可基於發信號通知的幀內預測模式和來自當前幀或圖像的先前經解碼塊的數據而產生當前視頻條帶的圖像塊的預測塊。當視頻條帶被解碼為經幀間解碼(即,B或P)條帶時,預測處理單元208的幀間預測器210可基於從熵解碼器203接收到的語法元素,確定用於對當前視頻條帶的當前圖像塊進行解碼的目標運動信息,基於確定的目標運動信息,對所述當前圖像塊進行解碼(例如執行幀間預測)。具體的,幀間預測器210可確定是否對當前視頻條帶的當前 圖像塊採用新的幀間預測方法(具體的,是否採用本申請的方法來確定候選運動信息列表)進行預測,如果語法元素指示採用新的幀間預測方法來對當前圖像塊進行預測,基於新的幀間預測方法(例如通過語法元素指定的一種新的幀間預測方法或默認的一種新的幀間預測方法)預測當前視頻條帶的當前圖像塊或當前圖像塊的基本運動補償單元的運動信息,從而通過運動補償過程使用預測出的當前圖像塊或當前圖像塊的基本運動補償單元的運動信息來獲取或生成當前圖像塊或當前圖像塊的基本運動補償單元的預測塊。這裡的運動信息可以包括參考圖像信息和運動矢量,其中參考圖像信息可以包括但不限於單向/雙向預測信息,參考圖像列表號和參考圖像列表對應的參考圖像索引。對於幀間預測,可從參考圖像列表中的一者內的參考圖像中的一者產生預測塊。視頻解碼器200可基於存儲在DPB 207中的參考圖像來建構參考圖像列表,即列表0和列表1。當前圖像的參考幀索引可包含於參考幀列表0和列表1中的一或多者中。在一些實例中,可以是視訊轉碼器100發信號通知指示是否採用新的幀間預測方法來解碼特定塊的特定語法元素,或者,也可以是發信號通知指示是否採用新的幀間預測方法,以及指示具體採用哪一種新的幀間預測方法來解碼特定塊的特定語法元素。應當理解的是,這裡的幀間預測器210執行運動補償過程。上文方法實施例中已經詳細的闡述了採用兩個控制點(4參數)的仿射模型(例如旋轉縮放仿射模型),還可以採用三個控制點(6參數)的仿射模型(例如旋轉縮放仿射模型),或者四個控制點(8參數)的仿射模型(例如透視仿射模型)來預測當前圖像塊或當前圖像塊的基本運動補償單元的運動信息的幀間預測過程。
反量化器204將在位流中提供且由熵解碼器203解碼的經量化變換係數逆量化,即去量化。逆量化過程可包括:使用由視訊轉碼器100針對視頻條帶中的每個圖像塊計算的量化參數來確定應施加的量化程度以及同樣地確定應施加的逆量化程度。反變換器205將逆變換應用於變換係數,例如逆DCT、逆整數 變換或概念上類似的逆變換過程,以便產生像素域中的殘差塊。
在幀間預測器210產生用於當前圖像塊或當前圖像塊的子塊的預測塊之後,視頻解碼器200通過將來自反變換器205的殘差塊與由幀間預測器210產生的對應預測塊求和以得到重建的塊,即經解碼圖像塊。求和器211表示執行此求和操作的組件。在需要時,還可使用環路濾波器(在解碼環路中或在解碼環路之後)來使像素轉變平滑或者以其它方式改進視頻品質。濾波器單元206可以表示一或多個環路濾波器,例如去塊濾波器、自我調整環路濾波器(ALF)以及樣本自我調整偏移(SAO)濾波器。儘管在第9圖中將濾波器單元206示出為環路內濾波器,但在其它實現方式中,可將濾波器單元206實施為環路後濾波器。在一種示例下,濾波器單元206適用於重建塊以減小塊失真,並且該結果作為經解碼視頻流輸出。並且,還可以將給定幀或圖像中的經解碼圖像塊存儲在經解碼圖像緩衝器207中,經解碼圖像緩衝器207存儲用於後續運動補償的參考圖像。經解碼圖像緩衝器207可為記憶體的一部分,其還可以存儲經解碼視頻,以供稍後在顯示裝置(例如第7圖的顯示裝置220)上呈現,或可與此類記憶體分開。
應當理解的是,視頻解碼器200的其它結構變化可用於解碼經編碼視頻位元流。例如,視頻解碼器200可以不經濾波器單元206處理而生成輸出視頻流;或者,對於某些圖像塊或者圖像幀,視頻解碼器200的熵解碼器203沒有解碼出經量化的係數,相應地不需要經反量化器204和反變換器205處理。
第10圖為本申請實施例中的幀間預測裝置1000的一種示意性框圖。需要說明的是,幀間預測裝置1000既適用於解碼視頻圖像的幀間預測,也適用於編碼視頻圖像的幀間預測,應當理解的是,這裡的幀間預測裝置1000可以對應於第8圖中的幀間預測器110,或者可以對應於第9圖中的幀間預測器210,該幀間預測裝置1000可以包括:候選運動信息列表確定單元1001,用於確定當前圖像塊的候選運動 信息列表,所述候選運動信息列表包括至少一組第一候選運動信息、至少一組第二候選運動信息,以及用於索引所述第一候選運動信息和所述第二候選運動信息的多個索引信息,所述第一候選運動信息為基於所述當前圖像塊的第一相鄰圖像塊的預設位置的運動信息和所述第一相鄰圖像塊的運動模型確定的運動信息,所述第二候選運動信息為與所述當前圖像塊的至少兩個默認位置分別相鄰的至少兩個像素位置的運動信息的集合,所述至少兩個像素位置位於所述當前圖像塊的至少一個第二相鄰圖像塊;幀間預測處理單元1002,用於從所述候選運動信息列表中確定目標運動信息;根據所述目標運動信息,對所述當前圖像塊執行幀間預測。
由此可見,幀間預測裝置1000構建包括兩種候選運動信息的候選運動信息列表,該兩種候選運動信息具有統一編排的索引信息,若兩種候選運動信息中的一種不適用於當前圖像塊,則編碼端可以從候選運動信息列表包括的另一種候選運動信息中選擇目標運動信息,並將該目標運動信息的索引信息通過碼流發送給解碼端,由於候選運動信息列表中的候選運動信息具有唯一的索引信息,因此,編碼端無需在碼流中傳遞指示編碼端使用的運動估計方法的指示信息,從而減少了視頻傳輸的比特開銷。
在一種可行的實施方式中,多個索引信息中第一索引信息的比特數小於多個索引信息中第二索引信息的比特數,第一索引信息對應先加入候選運動信息列表的運動信息,第二索引信息對應後加入候選運動信息列表的運動信息;幀間預測處理單元1002具體用於:先將第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表。
第一候選運動信息為基於運動模型的運動信息,根據第一候選運動信息進行編解碼的效率高於根據第二候選運動信息進行編解碼的效率,因此,第一候選運動信息為目標運動信息的概率較大,因此,可以將第一候選運動信 息的索引信息設置為比特數較小的索引信息,有利於減小視頻傳輸的比特開銷。
在一些可能的實施場景下,如第一相鄰圖像塊包括採用平動運動模型的第一相鄰圖像塊和採用非平動運動模型的第一相鄰圖像塊,多個索引信息中第一索引信息的比特數小於多個索引信息中第二索引信息的比特數,第一索引信息對應先加入候選運動信息列表的運動信息,第二索引信息對應後加入候選運動信息列表的運動信息,所述幀間預測處理單元1002具體用於:當採用非平動運動模型的第一相鄰圖像塊的數量大於或等於數量閾值時,基於採用非平動運動模型的第一相鄰圖像塊的至少兩個預設位置的運動信息以及採用非平動模型的第一相鄰圖像塊的運動模型推導出當前圖像塊對應的至少兩個預設位置的運動信息,並將當前圖像塊對應的至少兩個預設位置的運動信息作為一組第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表。
若採用非平動運動模型的第一相鄰圖像塊的數量大於或等於數量閾值,則說明當前圖像塊為採用非平動運動模型的圖像塊的概率較大,因此,可以先將基於採用非平動運動模型的第一相鄰圖像塊推導出的第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表,由於先加入候選運動信息列表的運動信息的索引信息的比特數較小,且目標運動信息為先加入候選運動信息列表的運動信息的概率較大,從而有利於減少視頻傳輸的比特開銷。
在一些可行的實施方式中,在確定候選運動信息列表的方面,所述幀間預測處理單元1002具體用於:當候選運動信息列表的長度小於長度閾值,且第一相鄰圖像塊還包括採用平動運動模型的第一相鄰圖像塊時,進一步將採用平動運動模型的第一相鄰圖像塊的運動信息作為一組第一候選運動信息加入候選運動信息列表,若 候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入所述候選運動信息列表。
在一些可能的實施場景下,如第一相鄰圖像塊包括採用平動運動模型的第一相鄰圖像塊和採用非平動運動模型的第一相鄰圖像塊,多個索引信息中第一索引信息的比特數小於多個索引信息中第二索引信息的比特數,第一索引信息對應先加入候選運動信息列表的運動信息,第二索引信息對應後加入候選運動信息列表的運動信息,所述幀間預測處理單元1002具體用於:當採用非平動運動模型的第一相鄰圖像塊的數量小於或等於數量閾值時,先將採用平動運動模型的第一相鄰圖像塊的運動信息作為一組第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表。
若採用非平動運動模型的第一相鄰圖像塊的數量小於或等於數量閾值,則說明當前圖像塊為採用非平動運動模型的圖像塊的概率較大,因此,可以先將基於採用平動運動模型的第一相鄰圖像塊的運動信息作為第一候選運動信息加入候選運動信息列表,再將第二候選運動信息加入候選運動信息列表,由於先加入候選運動信息列表的運動信息的索引信息的比特數較小,且目標運動信息為先加入候選運動信息列表的運動信息的概率較大,從而有利於減少視頻傳輸的比特開銷。
在一些可行的實施方式中,在確定候選運動信息列表方面,所述幀間預測處理單元1002具體用於:當候選運動信息列表的長度小於長度閾值,且第一相鄰圖像塊還包括非採用平動運動模型的第一相鄰圖像塊時,進一步基於採用非平動運動模型的第一相鄰圖像塊的至少兩個預設位置的運動信息以及採用非平動模型的第一相鄰圖像塊的運動模型推導出當前圖像塊的至少兩個預設位置的運動信息,將 當前圖像塊的至少兩個預設位置的運動信息作為一組第一候選運動信息加入候選運動信息列表,若候選運動信息列表的長度仍然小於長度閾值,再將零運動信息加入所述候選運動信息列表。
在一些可能的實施場景下,第一候選運動信息和第二候選運動信息均為當前圖像塊的第一組位置的運動信息,當前圖像塊中至少兩個默認位置為第二組位置,所述幀間預測處理單元1002具體用於:當第二組位置與所述第一組位置相異時,根據位置變換公式以及第二位置對應的運動信息推導出第二候選運動信息。
當第一候選運動信息對應的位置的數量和第二候選運動信息對應的位置的數量相同時,根據本實施例得到的候選運動信息列表中的運動信息均為相同位置的運動信息,從而減小了運動估計的複雜度。
在一些可能的實施場景下,第一候選運動信息為當前圖像塊的第一組位置的運動信息,第二候選運動信息為當前圖像塊的第三組位置的運動信息,所述幀間預測處理單元1002還用於:當第一組位置與第三組位置相異時,根據位置變換公式以及第二候選運動信息推導出第五候選運動信息,所述第五候選運動信息對應的位置與第一組位置相同。
當第一候選運動信息對應的位置的數量和第二候選運動信息對應的位置的數量相同時,根據本實施得到的候選運動信息列表中的運動信息均為相同位置的運動信息,從而減小了運動估計的複雜度。
當所述裝置1000用於解碼視頻圖像,所述裝置1000還可以包括:幀間預測數據獲取單元(圖中未示意),用於接收包括用於確定目標運動信息的索引信息;相應的,幀間預測處理單元1002具體用於根據目標運動信息的索引 信息從候選運動信息列表中確定一組目標運動信息。
當所述裝置1000用於編碼視頻圖像,所述裝置1000還可以包括:所述幀間預測模式處理單元1002具體用於根據篩選規則確定所述候選運動信息列表中的目標運動信息,例如確定所述候選運動信息列表中,編碼當前圖像塊的碼率失真代價最小的運動信息為用於對當前圖像塊進行幀間預測的目標運動信息。
需要說明的是,本申請實施例的幀間預測裝置中的各個模組為實現本申請幀間預測方法中所包含的各種執行步驟的功能主體,即具備實現完整實現本申請幀間預測方法中的各個步驟以及這些步驟的擴展及變形的功能主體,具體請參見本文中對幀間預測方法的介紹,為簡潔起見,本文將不再贅述。
第11圖為本申請實施例的編碼設備或解碼設備(簡稱為解碼設備1100)的一種實現方式的示意性框圖。其中,解碼設備1100可以包括處理器1110、記憶體1130和匯流排系統1150。其中,處理器和記憶體通過匯流排系統相連,該記憶體用於存儲指令,該處理器用於執行該記憶體存儲的指令。編碼設備的記憶體存儲程式碼,且處理器可以調用記憶體中存儲的程式碼執行本申請描述的各種視頻編碼或解碼方法,尤其是本申請描述的幀間預測方法。為避免重複,這裡不再詳細描述。
在本申請實施例中,該處理器1110可以是中央處理單元(central processing unit,CPU),該處理器1110還可以是其他通用處理器、數位訊號處理器(DSP)、專用積體電路(ASIC)、現成可程式設計閘陣列(FPGA)或者其他可程式設計邏輯器件、分立門或者電晶體邏輯器件、分立硬體元件等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。
該記憶體1130可以包括唯讀記憶體(ROM)設備或者隨機存取記憶體(RAM)設備。任何其他適宜類型的存放裝置也可以用作記憶體1130。記憶體1130 可以包括由處理器1110使用匯流排1150訪問的代碼和數據1131。記憶體1130可以進一步包括作業系統1133和應用程式1135,該應用程式1135包括允許處理器1110執行本申請描述的視頻編碼或解碼方法(尤其是本申請描述的幀間預測方法)的至少一個程式。例如,應用程式1135可以包括應用1至N,其進一步包括執行在本申請描述的視頻編碼或解碼方法的視頻編碼或解碼應用(簡稱視頻解碼應用)。
該匯流排系統1150除包括數據匯流排之外,還可以包括電源匯流排、控制匯流排和狀態信號匯流排等。但是為了清楚說明起見,在圖中將各種匯流排都標為匯流排系統1150。
可選的,解碼設備1100還可以包括一個或多個輸出設備,諸如顯示器1170。在一個示例中,顯示器1170可以是觸感顯示器,其將顯示器與可操作地感測觸摸輸入的觸感單元合併。顯示器1170可以經由匯流排1150連接到處理器1110。
本領域技術人員能夠領會,結合本文公開描述的各種說明性邏輯框、模組和演算法步驟所描述的功能可以硬體、軟體、固件或其任何組合來實施。如果以軟體來實施,那麼各種說明性邏輯框、模組、和步驟描述的功能可作為一或多個指令或代碼在計算器可讀媒體上存儲或傳輸,且由基於硬體的處理單元執行。計算器可讀媒體可包含計算器可讀存儲媒體,其對應於有形媒體,例如數據存儲媒體,或包括任何促進將計算器程式從一處傳送到另一處的媒體(例如,根據通信協定)的通信媒體。以此方式,計算器可讀媒體大體上可對應於(1)非暫時性的有形計算器可讀存儲媒體,或(2)通信媒體,例如信號或載波。數據存儲媒體可為可由一或多個計算器或一或多個處理器存取以檢索用於實施本申請中描述的技術的指令、代碼和/或數據結構的任何可用媒體。計算器程式產品可包含計算器可讀媒體。
作為實例而非限制,此類計算器可讀存儲媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光碟存儲裝置、磁片存儲裝置或其它磁性存儲裝置、快閃記憶體或可用來存儲指令或數據結構的形式的所要程式碼並且可由計算器存取的任何其它媒體。並且,任何連接被恰當地稱作計算器可讀媒體。舉例來說,如果使用同軸纜線、光纖纜線、雙絞線、數位訂戶線(DSL)或例如紅外線、無線電和微波等無線技術從網站、伺服器或其它遠端源傳輸指令,那麼同軸纜線、光纖纜線、雙絞線、DSL或例如紅外線、無線電和微波等無線技術包含在媒體的定義中。但是,應理解,所述計算器可讀存儲媒體和數據存儲媒體並不包括連接、載波、信號或其它暫時媒體,而是實際上針對於非暫時性有形存儲媒體。如本文中所使用,磁片和光碟包含壓縮光碟(CD)、鐳射光碟、光學光碟、數位多功能光碟(DVD)和藍光光碟,其中磁片通常以磁性方式再現數據,而光碟利用鐳射以光學方式再現數據。以上各項的組合也應包含在計算器可讀媒體的範圍內。
可通過例如一或多個數位訊號處理器(DSP)、通用微處理器、專用積體電路(ASIC)、現場可程式設計邏輯陣列(FPGA)或其它等效集成或離散邏輯電路等一或多個處理器來執行指令。因此,如本文中所使用的術語“處理器”可指前述結構或適合於實施本文中所描述的技術的任一其它結構中的任一者。另外,在一些方面中,本文中所描述的各種說明性邏輯框、模組、和步驟所描述的功能可以提供於經配置以用於編碼和解碼的專用硬體和/或軟體模組內,或者併入在組合轉碼器中。而且,所述技術可完全實施於一或多個電路或邏輯元件中。
本申請的技術可在各種各樣的裝置或設備中實施,包含無線手持機、積體電路(IC)或一組IC(例如,晶片組)。本申請中描述各種元件、模組或單元是為了強調用於執行所揭示的技術的裝置的功能方面,但未必需要由不同硬體單元實現。實際上,如上文所描述,各種單元可結合合適的軟體和/或固件組 合在編碼解碼器硬體單元中,或者通過交互操作硬體單元(包含如上文所描述的一或多個處理器)來提供。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
400:方法
S410,S420,S430:步驟

Claims (19)

  1. 一種視頻數據的幀間預測方法,其特徵在於,包括:獲得第二候選運動信息,所述第二候選運動信息包括所述當前圖像塊的第一組控制點的運動矢量;生成當前圖像塊的候選運動信息列表,所述候選運動信息列表至少包括第二候選運動信息,所述第二候選運動信息具有與之對應的索引信息,從所述候選運動信息列表中確定目標運動信息;將與當前圖像塊相關的語法元素編碼入碼流中,以生成所述碼流,其中所述語法元素包括指示所述目標運動信息的索引;其中:所述獲得第二候選運動信息包括:將當前圖像塊的至少兩個控制點的運動矢量進行組合,以得到的當前圖像塊的第二組控制點的運動矢量,其中當前圖像塊的至少兩個控制點中的每個控制點的運動矢量是按照預設檢查順序從一個或多個相鄰像素位置中確定的第一個可得的相鄰像素位置的運動矢量,所述一個或多個相鄰像素位置與所述對應的控制點相鄰,所述一個或多個相鄰像素位置位於所述當前圖像塊的至少一個相鄰圖像塊;當第二組控制點與所述第一組控制點相異時,根據位置變換公式以及所述第二組控制點的運動矢量推導出所述第一組控制點的運動矢量,所述第二組控制點為所述當前圖像塊的至少兩個控制點,所述第一組控制點為所述當前圖像塊的至少兩個控制點。
  2. 如請求項1所述的方法,位置變換前的所述第二組控制點的個數與位置變換後的所述第一組控制點的個數相同。
  3. 如請求項2所述的方法,當位置變換前的所述第二組控制點的個數與位置變換後的所述第一組控制 點的個數為2個,所述第一組控制點為所述當前圖像塊的左上控制點,右上控制點;當位置變換前的所述第二組控制點的個數與位置變換後的所述第一組控制點的個數為3個,所述第一組控制點為所述當前圖像塊的左上控制點,右上控制點,左下控制點。
  4. 如請求項3所述的方法,所述第二組控制點為所述當前圖像塊的左上控制點,右上控制點,右下控制點;所述第一組控制點為所述當前圖像塊的左上控制點,右上控制點,左下控制點;或者所述第二組控制點為所述當前圖像塊的左上控制點,左下控制點,右下控制點;所述第一組控制點為所述當前圖像塊的左上控制點,右上控制點,左下控制點;或者所述第二組控制點為所述當前圖像塊的右上控制點,左下控制點,右下控制點;所述第一組控制點為所述當前圖像塊的左上控制點,右上控制點,左下控制點;或者所述第二組控制點為所述當前圖像塊的左上控制點,左下控制點;所述第一組控制點為所述當前圖像塊的左上控制點,右上控制點。
  5. 如請求項1至4任一項所述的方法,所述第二組控制點中的至少兩個控制點是如下四個控制點中的至少兩個,其中:- 對於當前圖像塊的第一控制點CP1,當前圖像塊的第一控制點CP1的運動矢量是按照第一檢查順序從所述第一控制點CP1的一個或多個相鄰像素位置中確定的第一個可得的相鄰像素位置的運動矢量;- 對於當前圖像塊的第二控制點CP2,當前圖像塊的第二控制點CP2的運動矢量是按照第二檢查順序從所述第二控制點CP2的一個或多個相鄰像素位置中確定的第一個可得的相鄰像素位置的運動矢量; - 對於當前圖像塊的第三控制點CP3,當前圖像塊的第三控制點CP2的運動矢量是按照第三檢查順序從所述第三控制點CP3的一個或多個相鄰像素位置中確定的第一個可得的相鄰像素位置的運動矢量;- 對於當前圖像塊的第四控制點CP4,當前圖像塊的第四控制點CP4的運動矢量是採用時域相鄰位置Tr的運動矢量。
  6. 如請求項5所述的方法,所述將當前圖像塊的至少兩個控制點的運動矢量進行組合,包括:將當前圖像塊的第一控制點CP1的運動矢量和第二控制點CP2的運動矢量進行組合而得到的;或者將當前圖像塊的第一控制點CP1的運動矢量和第三控制點CP3的運動矢量進行組合而得到的;或者將當前圖像塊的第一控制點CP1的運動矢量、第二控制點的運動矢量CP2和第四控制點CP4的運動矢量進行組合而得到的;或者將當前圖像塊的第一控制點CP1的運動矢量、第二控制點的運動矢量CP2的運動矢量和第三控制點CP3的運動矢量進行組合而得到的;或者將當前圖像塊的第二控制點CP2的運動矢量、第三控制點CP3的運動矢量和第四控制點CP4的運動矢量進行組合而得到的;或者將當前圖像塊的第一控制點CP1的運動矢量、第三控制點CP3的運動矢量和第四控制點CP4的運動矢量進行組合而得到的。
  7. 如請求項1至4中任一項所述的方法,所述至少兩個像素位置位於所述當前圖像塊的至少一個相鄰圖像塊,包括:兩個所述像素位置位於所述當前圖像塊的一個相鄰圖像塊,或者,兩個所述像素位置位於所述當前圖像塊的兩個相鄰圖像塊,或者,三個所述像素位置位於所述當前圖像塊的兩個相鄰圖像塊,或者, 三個所述像素位置位於所述當前圖像塊的三個相鄰圖像塊,或者,四個所述像素位置位於所述當前圖像塊的三個相鄰圖像塊,或者,四個所述像素位置位於所述當前圖像塊的四個相鄰圖像塊。
  8. 如請求項5所述的方法,所述至少兩個像素位置位於所述當前圖像塊的至少一個相鄰圖像塊,包括:兩個所述像素位置位於所述當前圖像塊的一個相鄰圖像塊,或者,兩個所述像素位置位於所述當前圖像塊的兩個相鄰圖像塊,或者,三個所述像素位置位於所述當前圖像塊的兩個相鄰圖像塊,或者,三個所述像素位置位於所述當前圖像塊的三個相鄰圖像塊,或者,四個所述像素位置位於所述當前圖像塊的三個相鄰圖像塊,或者,四個所述像素位置位於所述當前圖像塊的四個相鄰圖像塊。
  9. 一種編碼器(100),其特徵在於,包括處理電路,用於執行根據請求項1至8任一項所述的方法。
  10. 一種解碼器(200),其特徵在於,包括處理電路,用於執行根據請求項1至8任一項所述的方法。
  11. 一種電腦可讀存儲介質,其特徵在於,所述電腦可讀存儲介質存儲有程式指令,當所述程式指令由設備或一個或多個處理器執行時,使得所述設備執行如請求項1至8中任一項所述的方法。
  12. 一種電腦可讀存儲介質,其特徵在於,所述電腦可讀存儲介質上存儲有由一個或多個處理器執行的如請求項1至8中任一項所述方法得到的視頻碼流。
  13. 一種存儲視頻數據的經編碼的碼流的方法,其特徵在於,所述方法包括:接收根據請求項1至8中任一項所述的方法生成的所述碼流;以及, 將所述碼流存儲到存儲介質中。
  14. 一種存儲視頻數據的經編碼的碼流的系統,其特徵在於,包括:用於接收根據請求項1至8中任一項所述的方法生成的所述碼流的單元;以及,用於存儲所述碼流的單元。
  15. 一種傳輸視頻數據的經編碼的碼流的方法,其特徵在於,所述方法包括:從存儲介質中獲取碼流,所述碼流是根據請求項1至8中任一項所述的方法生成的碼流且存儲在所述存儲介質中;以及,發送所述碼流。
  16. 一種傳輸視頻數據的經編碼的碼流的系統,其特徵在於,所述系統包括:用於從存儲介質中獲取碼流的單元,所述碼流是根據請求項1至8中任一項所述的方法生成的碼流且存儲在所述存儲介質中;以及,用於發送所述碼流的單元。
  17. 一種存儲視頻數據的經編碼的碼流的方法,其特徵在於,所述方法包括:接收碼流,所述碼流是根據請求項1至8中任一項所述的方法生成的所述碼流;以及,發送所述碼流。
  18. 一種傳輸視頻數據的經編碼的碼流的系統,其特徵在於,所述系統包括:用於接收碼流的單元,所述碼流是根據請求項1至8中任一項所述的方法生成的碼流;以及, 用於發送所述碼流的單元。
  19. 一種存儲裝置,其特徵在於,所述存儲裝置存儲有根據請求項1至8中任一項所述的方法生成的碼流。
TW111142039A 2017-12-12 2018-12-10 視頻數據的幀間預測方法和裝置 TWI841033B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711319298.2 2017-12-12
CN201711319298.2A CN109922336B (zh) 2017-12-12 2017-12-12 视频数据的帧间预测方法和装置

Publications (2)

Publication Number Publication Date
TW202312738A TW202312738A (zh) 2023-03-16
TWI841033B true TWI841033B (zh) 2024-05-01

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017118411A1 (en) 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017118411A1 (en) 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system

Similar Documents

Publication Publication Date Title
US11252436B2 (en) Video picture inter prediction method and apparatus, and codec
TWI786790B (zh) 視頻資料的幀間預測方法和裝置
CN110876282B (zh) 运动矢量预测方法以及相关装置
CN110876065A (zh) 候选运动信息列表的构建方法、帧间预测方法及装置
CN112055970B (zh) 候选运动信息列表的构建方法、帧间预测方法及装置
TWI841033B (zh) 視頻數據的幀間預測方法和裝置
CN110677645B (zh) 一种图像预测方法及装置
CN110971899B (zh) 一种确定运动信息的方法、帧间预测方法及装置
WO2019237287A1 (zh) 视频图像的帧间预测方法、装置及编解码器