(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-12
(45)【発行日】2024-07-23
(54)【発明の名称】復号化方法、符号化方法、装置、デバイスおよび記憶媒体
(51)【国際特許分類】
H04N 19/70 20140101AFI20240716BHJP
【FI】
H04N19/70
(21)【出願番号】P 2023580585
(86)(22)【出願日】2022-06-06
(86)【国際出願番号】 CN2022097124
(87)【国際公開番号】W WO2023273802
(87)【国際公開日】2023-01-05
【審査請求日】2023-12-27
(31)【優先権主張番号】202110739455.5
(32)【優先日】2021-06-30
(33)【優先権主張国・地域又は機関】CN
【早期審査対象出願】
(73)【特許権者】
【識別番号】508219313
【氏名又は名称】杭州海康威視数字技術股▲フン▼有限公司
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】曹 小▲強▼
(72)【発明者】
【氏名】▲陳▼ 方▲棟▼
(72)【発明者】
【氏名】王 莉
【審査官】山内 裕史
(56)【参考文献】
【文献】特表2015-525999(JP,A)
【文献】特開2012-19447(JP,A)
【文献】中国特許出願公開第112073733(CN,A)
【文献】中国特許出願公開第112291565(CN,A)
【文献】中国特許出願公開第111010579(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップと、
スキップモードまたはダイレクトモードの候補リストを構築するステップと、
前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいて前記カレント符号化ユニットの予測モードを決定するステップと、
前記カレント符号化ユニットの予測モードに基づいて前記カレント符号化ユニットの動き情報を取得し、前記カレント符号化ユニットに対して動き補償を行うステップと、を含み
ここで、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップは、
動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得するステップと、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップと、を含
み、
動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得するステップは、
シーケンスレベルのハイレベルシンタックスを解析することで、前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とを取得するステップを含む
ことを特徴とする復号化方法。
【請求項2】
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップは、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップを含む
ことを特徴とする請求項
1に記載の方法。
【請求項3】
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップは、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数と、前記カレント画像の画像タイプとに基づいて、最大インデックス値を決定するステップと、
前記最大インデックス値に基づいて、トランケーテッド・ユーナリの逆2値化方式を用いて前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップと、を含む
ことを特徴とする請求項
2に記載の方法。
【請求項4】
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数と、前記カレント画像の画像タイプとに基づいて、最大インデックス値を決定するステップは、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とのうちの最大値を決定するステップと、
前記カレント画像の画像タイプがPピクチャである場合、当該最大値と1との和を前記最大インデックス値として決定するステップと、
前記カレント画像の画像タイプがBピクチャである場合、当該最大値と3との和を前記最大インデックス値として決定するステップと、を含む
ことを特徴とする請求項
3に記載の方法。
【請求項5】
前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいて前記カレント符号化ユニットの予測モードを決定するステップは、
有効な角度予測モードの数と、前記スキップモードまたはダイレクトモードの動き情報インデックス値とに基づいて、前記カレント符号化ユニットの予測モードが動きベクトル角度予測
MVAPモードであるか、履歴情報に基づく動きベクトル予測
HVAPモードであるかを決定するステップを含む
ことを特徴とする請求項
1に記載の方法。
【請求項6】
有効な角度予測モードの数と、前記スキップモードまたはダイレクトモードの動き情報インデックス値とに基づいて、前記カレント符号化ユニットの予測モードが
MVAPモードであるか、
HVAPモードであるかを決定するステップは、
前記スキップモードまたはダイレクトモードの動き情報インデックス値がN以上である場合、
前記有効な角度予測モードの数が0より大きく、且つ前記スキップモードまたはダイレクトモードの動き情報インデックス値が、Nと前記有効な角度予測モードの数との和より小さいとき、前記カレント符号化ユニットの予測モードが
MVAPモードであると決定し、
前記有効な角度予測モードの数が0に等しいとき、または、前記スキップモードまたはダイレクトモードの動き情報インデックス値が、Nと有効な角度予測モードの数との和以上であるとき、前記カレント符号化ユニットの予測モードが
HVAPモードであると決定するステップを含む
ことを特徴とする請求項
5に記載の方法。
【請求項7】
カレント画像の画像タイプがPピクチャである場合、N=2であり、カレント画像の画像タイプがBピクチャである場合、N=4である
ことを特徴とする請求項
6に記載の方法。
【請求項8】
前記カレント符号化ユニットの予測モードを決定した後、
前記カレント符号化ユニットの予測モードが
HVAPモードであるとき、前記カレント符号化ユニットが、インター予測ユニットであり、且つアフィン予測ユニットではなく、且つ角度重み付け予測ユニットではなく、且つ強化時間動きベクトル予測ユニットではなく、且つ動きベクトル角度予測ユニットではなく、且つサブブロック時間動き情報予測ユニットではなく、且つ前記インター予測の履歴動き情報候補の数が0より大きい場合、履歴動き情報リストを更新し、それ以外の場合、履歴動き情報リストを更新しないステップをさらに含む
ことを特徴とする請求項
5に記載の方法。
【請求項9】
スキップモードまたはダイレクトモードの候補リストを構築し、予測モードの候補リスト中の各予測モードを順にトラバースし、各予測モードについて、カレント符号化ユニットの動き情報と、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値とを取得するステップと、
前記カレント符号化ユニットの動き情報に基づいて、前記カレント符号化ユニットに対して動き補償を行うステップと、
当該予測モードに対応するレート歪みコスト値を計算し、当該レート歪みコスト値と他の予測モード候補のコスト値を比較し、最も小さいレート歪みコスト値に対応する予測モードを選択するステップと、
レート歪みコスト値が最も小さい予測モードに対応する前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加し、復号化側に送信するステップと、を含み、
ここで、レート歪みコスト値が最も小さい予測モードに対応する前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加するステップは、
動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得するステップと、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加するステップと、を含
み、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化するステップは、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、最大インデックス値を決定するステップと、
前記最大インデックス値に基づいて、トランケーテッド・ユーナリの2値化方式を用いて前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化するステップと、を含む
ことを特徴とする符号化方法。
【請求項10】
ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するための復号化モジュールと、
スキップモードまたはダイレクトモードの候補リストを構築するための構築モジュールと、
前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいて前記カレント符号化ユニットの予測モードを決定するための決定モジュールと、
前記カレント符号化ユニットの予測モードに基づいて前記カレント符号化ユニットの動き情報を取得し、前記カレント符号化ユニットに対して動き補償を行うための補償モジュールと、を備え、
ここで、前記復号化モジュールは、具体的に、
動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得し、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するために用いられ
、
前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得することは、
シーケンスレベルのハイレベルシンタックスを解析することで、前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とを取得することを含む
ことを特徴とする復号化装置。
【請求項11】
スキップモードまたはダイレクトモードの候補リストを構築し、予測モードの候補リスト中の各予測モードを順にトラバースし、各予測モードについて、カレント符号化ユニットの動き情報と、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値とを取得するための構築モジュールと、
前記カレント符号化ユニットの動き情報に基づいて、前記カレント符号化ユニットに対して動き補償を行うための補償モジュールと、
当該予測モードに対応するレート歪みコスト値を計算し、当該レート歪みコスト値と他の予測モード候補のコスト値を比較し、最も小さいレート歪みコスト値に対応する予測モードを選択するための決定モジュールと、
レート歪みコスト値が最も小さい予測モードに対応する前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加し、復号化側に送信するための符号化モジュールと、を備え、
ここで、前記符号化モジュールは、具体的に、
動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得し、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加するために用いられ
、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化することは、
前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、最大インデックス値を決定することと、
前記最大インデックス値に基づいて、トランケーテッド・ユーナリの2値化方式を用いて前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化することと、を含む
ことを特徴とする符号化装置。
【請求項12】
プロセッサと、機械可読記憶媒体とを備える復号化デバイスであって、前記機械可読記憶媒体は、前記プロセッサにより実行可能な機械実行可能命令を記憶しており、前記プロセッサは、機械実行可能命令を実行して請求項1~
8のいずれか一項に記載の方法を実施するために用いられる
ことを特徴とする復号化デバイス。
【請求項13】
プロセッサと、機械可読記憶媒体とを備える符号化デバイスであって、前記機械可読記憶媒体は、前記プロセッサにより実行可能な機械実行可能命令を記憶しており、前記プロセッサは、機械実行可能命令を実行して請求項
9に記載の方法を実施するために用いられる
ことを特徴とする符号化デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動画符号化および復号化の分野に関し、特に、復号化方法、符号化方法、装置、デバイスおよび機械可読記憶媒体に関する。
【背景技術】
【0002】
完全な動画符号化には通常、予測、変換、量子化、エントロピー符号化、およびフィルタリングなどの操作が含まれる。予測は、イントラ予測とインター予測に分けることができる。イントラ予測は、周辺の符号化済みユニットを参照としてカレント未符号化ユニットを予測し、空間領域の冗長性を効果的に除去する。インター予測は、隣接する符号化済み画像を用いてカレント画像を予測し、時間領域の冗長性を効果的に除去する。
【発明の概要】
【0003】
これに鑑みて、本発明は、復号化方法、符号化方法、装置、デバイスおよび機械可読記憶媒体を提供する。
【0004】
本発明の実施形態の第1の態様によれば、ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップと、スキップモードまたはダイレクトモードの候補リストを構築するステップと、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいて前記カレント符号化ユニットの予測モードを決定するステップと、前記カレント符号化ユニットの予測モードに基づいて前記カレント符号化ユニットの動き情報を取得し、前記カレント符号化ユニットに対して動き補償を行うステップと、を含み、ここで、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得するステップと、前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップと、を含む、復号化方法が提供される。
【0005】
本発明の実施形態の第2の態様によれば、スキップモードまたはダイレクトモードの候補リストを構築し、予測モードの候補リスト中の各予測モードを順にトラバースし、各予測モードについて、カレント符号化ユニットの動き情報と、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値とを取得するステップと、前記カレント符号化ユニットの動き情報に基づいて、前記カレント符号化ユニットに対して動き補償を行うステップと、当該予測モードに対応するレート歪みコスト値を計算し、当該レート歪みコスト値と他の予測モード候補のコスト値を比較し、最も小さいレート歪みコスト値に対応する予測モードを選択するステップと、レート歪みコスト値が最も小さい予測モードに対応する前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加し、復号化側に送信するステップと、を含み、ここで、レート歪みコスト値が最も小さい予測モードに対応する前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加するステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得するステップと、前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加するステップと、を含む、符号化方法が提供される。
【0006】
本発明の実施形態の第3の態様によれば、ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するための復号化モジュールと、スキップモードまたはダイレクトモードの候補リストを構築するための構築モジュールと、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいて前記カレント符号化ユニットの予測モードを決定するための決定モジュールと、前記カレント符号化ユニットの予測モードに基づいて前記カレント符号化ユニットの動き情報を取得し、前記カレント符号化ユニットに対して動き補償を行うための補償モジュールと、を備え、ここで、前記復号化モジュールは、具体的に、動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とを取得し、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するために用いられる、復号化装置が提供される。
【0007】
本発明の実施形態の第4の態様によれば、スキップモードまたはダイレクトモードの候補リストを構築し、予測モードの候補リスト中の各予測モードを順にトラバースし、各予測モードについて、カレント符号化ユニットの動き情報と、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値とを取得するための構築モジュールと、前記カレント符号化ユニットの動き情報に基づいて、前記カレント符号化ユニットに対して動き補償を行うための補償モジュールと、当該予測モードに対応するレート歪みコスト値を計算し、当該レート歪みコスト値と他の予測モード候補のコスト値を比較し、最も小さいレート歪みコスト値に対応する予測モードを選択するための決定モジュールと、レート歪みコスト値が最も小さい予測モードに対応する前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加し、復号化側に送信するための符号化モジュールと、を備え、ここで、前記符号化モジュールは、具体的に、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得し、前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加するために用いられる、符号化装置が提供される。
【0008】
本発明の実施形態の第5の態様によれば、プロセッサと、機械可読記憶媒体とを備える復号化デバイスであって、前記機械可読記憶媒体は、前記プロセッサにより実行可能な機械実行可能命令を記憶しており、前記プロセッサは、機械実行可能命令を実行して第1の態様により提供される復号化方法を実施するために用いられる、復号化デバイスが提供される。
【0009】
本発明の実施形態の第6の態様によれば、プロセッサと、機械可読記憶媒体とを備える符号化デバイスであって、前記機械可読記憶媒体は、前記プロセッサにより実行可能な機械実行可能命令を記憶しており、前記プロセッサは、機械実行可能命令を実行して第2の態様により提供される符号化方法を実施するために用いられる、符号化デバイスが提供される。
【0010】
本発明の実施形態の第7の態様によれば、機械実行可能命令を記憶している機械可読記憶媒体であって、前記機械実行可能命令がプロセッサにより実行されると、第1の態様または第2の態様に記載の方法が実施される、機械可読記憶媒体が提供される。
【0011】
本発明の実施形態の復号化方法は、ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析し、スキップモードまたはダイレクトモードの候補リストを構築し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいてカレント符号化ユニットの予測モードを決定し、カレント符号化ユニットの予測モードに基づいてカレント符号化ユニットの動き情報を取得し、カレント符号化ユニットに対して動き補償を行い、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するとき、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得し、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定することで、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値の決定の柔軟性を向上させ、符号化および復号化性能を向上させた。
【図面の簡単な説明】
【0012】
【
図1a】本発明の例示的な実施形態に示される符号化・復号化方法を示す概略図である。
【
図1b】本発明の例示的な実施形態に示される符号化・復号化方法を示す概略図である。
【
図2】本発明の例示的な実施形態に示されるSBTMVPモードのブロック分割を示す概略図である。
【
図3】本発明の例示的な実施形態に示されるSkipとDirectモードの空間領域隣接ブロックの位置を示す概略図である。
【
図4】本発明の例示的な実施形態に示されるMVAPモードのモードインデックスとモードとの対応関係を示す概略図である。
【
図5】本発明の例示的な実施形態に示される動きベクトル角度予測サンプルの位置を示す概略図である。
【
図6】本発明の例示的な実施形態に示されるHMVP方法の復号化を示すフローチャートである。
【
図7】本発明の例示的な実施形態に示される復号化方法を示すフローチャートである。
【
図8】本発明の例示的な実施形態に示される別の復号化方法を示すフローチャートである。
【
図9】本発明の例示的な実施形態に示される符号化方法を示すフローチャートである。
【
図10】本発明の例示的な実施形態に示される別の符号化方法を示すフローチャートである。
【
図11】本発明の例示的な実施形態に示される復号化装置の構造を示す概略図である。
【
図12】本発明の例示的な実施形態に示される符号化装置の構造を示す概略図である。
【
図13】本発明の例示的な実施形態に示される復号化デバイスのハードウェア構造を示す概略図である。
【
図14】本発明の例示的な実施形態に示される符号化デバイスのハードウェア構造を示す概略図である。
【発明を実施するための形態】
【0013】
ここで、例示的な実施形態について詳細に説明し、その例を図面において表示する。以下の説明が図面にかかわる場合、特に断りのない限り、異なる図における同一の数字は同一または類似の要素を表す。以下の例示的な実施形態において説明される実施方式は、本発明に一致するすべての実施方式を示すものではない。逆に、それらは、添付の特許請求の範囲に詳しく記載されるような、本発明のいくつかの態様に一致する装置および方法の例に過ぎない。
【0014】
本発明において使用される用語は、特定の実施形態を説明するためのものに過ぎず、本発明を限定するものではない。本発明および添付の特許請求の範囲において使用される単数形の「一種」、「前記」および「当該」は、文脈において他の意味が明確に示されない限り、複数形を含むことも意図している。
【0015】
当業者が本発明の実施形態により提供される技術的解決手段をよりよく理解できるようにするために、以下、まず本発明の実施形態に係る技術用語の一部と、従来の動画符号化・復号化の主なプロセスとについて簡単に説明する。
【0016】
当業者が本発明の実施形態により提供される技術的解決手段をよりよく理解できるようにするために、以下、まず本発明の実施形態に係る技術用語の一部について簡単に説明する。
【0017】
一、技術用語
【0018】
1、インター予測(Inter Prediction):インター予測は、動画の時間的相関性を利用し、動画シーケンスが通常、比較的強い時間的相関性を含むため、隣接する符号化済み画像の画素を用いてカレント画像の画素を予測することで、動画の時間的冗長性を効果的に除去することができる。
【0019】
2、予測画素(Prediction Signal):符号化・復号化済み画素から導出される画素値であり、元の画素と予測画素との差により残差を得ることで、残差変換量子化および係数符号化を行う。
【0020】
例示的に、インター予測画素とは、カレントブロックの参照フレーム(再構成画像)から導出される画素値であり、画素位置が離散的であるため、内挿演算を通じて最終的な予測画素を取得する必要がある。予測画素と元の画素が近いほど、両者を減算して得られる残差エネルギーが小さくなり、符号化圧縮性能が高くなる。
【0021】
3、動きベクトル(Motion Vector、略してMV):インター符号化では、MVを用いてカレント符号化ブロックとその参照画像中の最適なマッチングブロックとの間の相対的な変位を表す。分割された各ブロック(サブブロックと呼んでもよい)には、いずれも復号側に送信する必要のある対応する動きベクトルがある。各ブロックのMVを独立して符号化と送信を行うと、特に小さいサイズに分割されたサブブロックについて、多くのビットが消費される。MVの符号化のためのビット数を低減するために、動画符号化では、隣接ブロック間の空間的相関性を利用して、隣接する符号化済みブロックのMVに基づいて符号化対象のカレントブロックのMVを予測し、予測差を符号化する。こうすると、MVを表すビット数を効果的に低減することができる。これに基づいて、カレント画像ブロックのMVを符号化する際に、一般的に、まず隣接する符号化済みブロックのMVを用いてカレント画像ブロックのMVを予測し、次にMVの予測値(Motion Vector Prediction、略してMVP)と動きベクトルの実際の推定値との差、つまり差分動きベクトル(Motion Vector Difference、略してMVD)を符号化することで、MVの符号化のビット数を効果的に低減する。
【0022】
4、動き情報(Motion Information):MVはカレント画像ブロックと特定の参照画像中の最適なマッチングブロックとの間の相対的な変位を表すため、画像ブロック向けの情報を正確に取得するためには、MVの他に、参照画像のインデックス情報を通じてどの参照画像を用いたかを表す必要がある。カレント画像について、通常、特定の原則に基づいて、参照画像リストを作成し、参照画像インデックス情報は、カレント画像ブロックが参照画像リスト中の何番目の参照画像を用いたかを表す。さらに、複数の参照画像リストをサポートする符号化技術も多くあるため、1つのインデックス値でどの参照画像リストを用いたかを表す必要があり、当該インデックス値を参照方向と呼んでもよい。動画符号化では、MV、参照フレームインデックス、参照方向などの動きに関連する情報をまとめて動き情報と呼ぶ。
【0023】
5、スキップ(Skip)モード:Skipモードはインター予測におけるスキップモードであり、残差情報やMVDを送信する必要がなく、動き情報のインデックスを送信すればよく、復号化側はインデックスを解析すれば符号化ユニットの動き情報を導出することができ、動き情報を得た後に予測値をそのまま再構成値とすればよい。
【0024】
6、ダイレクト(Direct)モード:Directモードはインター予測におけるダイレクトモードであり、残差情報を送信する必要があるが、MVDを送信する必要がなく、動き情報のインデックスを送信すればよく、復号化側はインデックスを解析すれば符号化ユニットの動き情報を導出することができ、動き情報を得た後に残差値を予測値に加算して再構成値を得る。
【0025】
7、トランケーテッド・ユーナリの2値化および逆2値化方法:synElValとバイナリ記号列との関係は、表1に示すものであってもよい。
【表1】
【0026】
符号化側は、maxValと符号化する必要のある値synElValから、表1に従って符号化する必要のあるバイナリ記号列を得てもよく、復号化側は、バイナリ記号列とmaxValから、表1に従ってsynElValの値を一意に得てもよい。
【0027】
8、レート歪み最適化(Rate-Distortion Optimization、略してRDO)原則:符号化効率を評価する指標は、ビットレートとピーク信号対雑音比(Peak Signal to Noise Ratio、略してPSNR)とを含む。ビットストリームが小さいほど、圧縮率が大きく、PSNRが大きいほど、再構成画像の品質が良い。モードを選択する際に、判別式は実質的に両者に対する総合的な評価である。
【0028】
モードに対応するコスト:J(mode)=D+λ*Rとなる。ここで、Dは歪み(Distortion)を表し、一般にSSE(Sum of the Squared Errors、残差平方和)指標を用いて評価し、SSEは、再構成ブロックとソース画像との残差平方和を指し、λはラグランジュ乗数であり、Rは、当該モードにおいて画像ブロックを符号化するのに必要な実際のビット数で、符号化モード情報、動き情報、残差などに必要なビットの総和を含む。
【0029】
モードを選択する際に、RDO原則を用いて符号化モードを比較すると、一般的に最適な符号化性能が保証できる。
【0030】
二、以下、動画符号化・復号化の主なプロセスについて簡単に説明する。
【0031】
図1の(a)を参照すると、動画符号化を例として、動画符号化は一般的に予測、変換、量子化、エントロピー符号化などの処理を含み、さらに、符号化プロセスは
図1の(b)のフレームワークで実現されてもよい。
【0032】
ここで、予測は、イントラ予測とインター予測に分けることができる。イントラ予測は、周辺の符号化済みブロックを参照としてカレント未符号化ブロックを予測し、空間領域の冗長性を効果的に除去する。インター予測は、隣接する符号化済み画像を用いてカレント画像を予測し、時間領域の冗長性を効果的に除去する。
【0033】
変換とは、画像を空間領域から変換領域へ変換し、変換係数を用いて画像を表現することである。多くの画像は、平坦な部分とゆっくり変化する部分が多く、適切な変換を行うことで、画像の空間領域での散乱分布から変換領域での比較的集中した分布に変換することができ、信号間の周波数領域の相関性を除去し、量子化処理と合わせてビットストリームを効果的に圧縮することができる。
【0034】
エントロピー符号化は、一連の要素記号を伝送または保存のためのバイナリビットストリームに変換する可逆符号化方式であり、入力される記号は、量子化された変換係数、動きベクトル情報、予測モード情報、変換・量子化に関するシンタックスなどを含み得る。エントロピー符号化は、動画要素記号の冗長性を効果的に除去することができる。
【0035】
以上、符号化を例に紹介したが、動画復号化の処理は動画符号化の処理と相対するものであり、すなわち動画復号化は通常、エントロピー復号化、予測、逆量子化、逆変換、フィルタリングの処理を含み、各処理の実現原理は動画符号化と同一または類似である。
【0036】
三、以下、時間動きベクトル予測(Temporal Motion Vector Prediction、略してTMVP)モード/サブブロック時間動き情報予測(Sub-Block Temporal Motion Vector Prediction、略してSBTMVP)、MHBSKIP、動きベクトル角度予測(Motion Vector Angle Prediction、略してMVAP)、履歴情報に基づく動きベクトル予測(History-based Motion Vector Prediction、略してHMVP)、強化時間動きベクトル予測(Enhanced Temporal Motion Vector Prediction、略してETMVP)技術の実現についてそれぞれ簡単に説明する。
【0037】
3.1、TMVP/SBTMVP
【0038】
AVS3において、現在、TMVPおよびSBTMVP技術が規格に採用されている。カレントブロックの幅と高さの両方が16以上の場合、カレントブロックの時間動き情報はSBTMVPによって生成された動き情報であり、それ以外の場合、カレントブロックの時間動き情報はTMVPによって生成された動き情報である。
【0039】
TMVP:まず、時間領域参照フレームにおいて、カレント符号化ユニットのプリセット位置と同じ位置の動き情報を見つけ、スケーリングしてカレントブロックの時間動き情報とし、ここで、Pピクチャについて、時間領域参照フレームはlist0の最初のフレームであり、Bピクチャについて、時間領域参照フレームはlist1の最初のフレームである。
【0040】
SBTMVP:カレントブロックのサイズを2Mx2Nとし、概略図は
図2に示すものであってもよく、まず時間領域参照フレームにおいて、カレント符号化ユニットと同じ位置の領域を見つけ、次に当該領域を4つのサイズがMxNであるサブブロックに分割し、各サブブロックの時間領域参照フレームの対応位置における動き情報を取得し、スケーリングしてカレントブロックの対応位置のサブブロックの動き情報とし、最後に、各サブブロックの動き情報を動き補償して予測値を得る。
【0041】
3.2、MHBSKIP
【0042】
MHBSKIPはAVS中のSkipとDirectモードにおける予測モードであり、カレント符号化ユニットの空間領域隣接ブロックの動き情報を用いて、カレント符号化ユニットの動き情報を予測する。
【0043】
MHBSKIPモードは、カレント符号化ユニットの空間領域隣接ブロックを通じて、双方向、前方向、後方向の3つの動き情報を構築し、カレント符号化ユニットを予測する。
【0044】
例示的に、SkipとDirectモードの空間領域隣接ブロックの位置は、
図3に示すものであってもよい。
【0045】
3.3、MVAP
【0046】
AVS3において、現在、MVAP技術が規格に採用されており、MVAP技術では、カレント符号化ユニットをサブブロックに分割し、最大5つの予測角度を用いて、各サブブロックについて、あらかじめ設定した角度で周辺の空間領域隣接ブロックから動き情報をコピーする。こうすると、符号化ユニットを分割することなく、カレント符号化ユニット内により多くの動き情報を提供することが可能となり、符号化性能を向上させる。
【0047】
例示的に、MVAP技術における、モードインデックスとモードとの対応関係については、それぞれ表2、
図4を参照してもよい。
【表2】
【0048】
具体的な手順は以下のとおりである。
【0049】
3.3.1、有効な動きベクトル角度予測モードの数(ValidMvapModeNum)を導出する。
【0050】
カレント復号化ユニットの幅と高さをWとH、mとnの値をそれぞれW/4とH/4、(x、y)をカレント復号化ユニットの左上隅の画素座標とする。A0、A1、...、Am-1はカレントブロックの左下隅の位置にある4×4ブロックであり、Am、Am+1、...、Am+n-1はカレントブロックの左の位置にある4×4ブロックであり、Am+nはカレントブロックの左上隅の位置にある4×4ブロックであり、Am+n+1、Am+n+2、...、A2m+nはカレントブロックの上の位置にある4×4ブロックであり、A2m+n+1、A2m+n+1、...、A2m+2nはカレントブロックの右上隅の位置にある4×4ブロックである。
【0051】
例示的に、動きベクトル角度予測サンプルの位置の概略図は、
図5に示すものであってもよい。
【0052】
例示的に、iの値の範囲は、0~m+nである場合、Aiの座標はそれぞれ(x-1、y+H+W-4×i-1)であり、iの値の範囲はm+n+1~2m+2nである場合、Aiの座標はそれぞれ(x+4×i-W-H-1、y-1)である。
【0053】
以下の手順に従ってValidMvapModeNumとValidMvapModeFlag[s](s=0~4)とを導出する。
【0054】
3.3.1.1、ValidMvapModeNumを0に初期化し、ValidMvapModeFlag[s]を0(s=0~4)に初期化する。
【0055】
3.3.1.2、以下のいずれかの条件を満たす場合、ValidMvapModeNumは0に等しく、ValidMvapModeFlag[s]は0に等しい(s=0~4)。
【0056】
3.3.1.2.1、EtmvpMvapEnableFlagの値は0である。
【0057】
3.3.1.2.2、Wは8より小さいか、またはHは8より小さいか、またはWとHの両方が8と等しい。
【0058】
3.3.1.3、それ以外の場合、以下の手順に従ってValidMvapModeNumの値とValidMvapModeFlag[s]の値とを更新する。
【0059】
3.3.1.3.1、Am-1+H/8ブロックとAm+n-1ブロックは、いずれもインター予測モードを用い、且つ動き情報が異なる場合、ValidMvapModeFlag[0]は1に等しく、ValidMvapModeNumの値に1を足す。
【0060】
3.3.1.3.2、Am+n+1+W/8ブロックとAm+n+1ブロックは、いずれもインター予測モードを用い、且つ動き情報が異なる場合、ValidMvapModeFlag[1]は1に等しく、ValidMvapModeNumの値に1を足す。
【0061】
3.3.1.3.3、Am+n-1ブロックとAm+nブロックは、いずれもインター予測モードを用い、且つ動き情報が異なる場合、またはAm+nブロックとAm+n+1ブロックはいずれもインター予測モードを用い、且つ動き情報が異なる場合、ValidMvapModeFlag[2]は1に等しく、ValidMvapModeNumの値に1を足す。
【0062】
3.3.1.3.4、AW/8-1ブロックとAm-1ブロックは、いずれもインター予測モードを用い、且つ動き情報が異なる場合、またはAm-1ブロックとAm-1+H/8ブロックはいずれもインター予測モードを用い、且つ動き情報が異なる場合、ValidMvapModeFlag[3]は1に等しく、ValidMvapModeNumの値に1を足す。
【0063】
3.3.1.3.5、Am+n+1+W/8ブロックとA2m+n+1ブロックは、いずれもインター予測モードを用い、且つ動き情報が異なる場合、またはA2m+n+1ブロックとA2m+n+1+H/8ブロックはいずれもインター予測モードを用い、且つ動き情報が異なる場合、ValidMvapModeFlag[4]は1に等しく、ValidMvapModeNumの値に1を足す。
【0064】
3.3.2、参照動き情報リストneighborMotions[i](i=0~2m+2n)を充填する。
【0065】
neighborMotions[i]を、参照動き情報リストのi番目の動き情報(interPredRefMode,mvE0,mvE1,refIndexL0,refIndexL1)とし、iの値の範囲は0~2m+2nである。
【0066】
Ai位置の空間領域記憶ユニットの動き情報が「使用可能」の場合、Ai位置の空間領域記憶ユニットの動き情報をmotionInfoAi(i=0~2m+2n)として記録する。
【0067】
3.3.2.1、neighborMotions[0]を充填する。
【0068】
3.3.2.1.1、A0位置の空間領域記憶ユニットの動き情報が「使用不可」の場合、neighborMotions[0]の予測参照モードinterPredRefModeを「PRED_List0」に設定し、neighborMotions[0]のmvE0をゼロベクトルに設定し、neighborMotions[0]のrefIndexL0を0に設定する。
【0069】
3.3.2.1.2、それ以外の場合、neighborMotions[0]をmotionInfoA0に設定する。
【0070】
3.3.2.2、以下の手順に従って、Aiを小さいものから大きいものへと順にトラバースし、neighborMotions[i]を充填する。
【0071】
3.3.2.2.1、Ai位置の空間領域記憶ユニットの動き情報が「使用可能」の場合、neighborMotions[i]はmotionInfoAiとなる。
【0072】
3.3.2.2.2、それ以外の場合、neighborMotions[i]はneighborMotions[i-1]に等しい。
【0073】
3.3.3、動き情報配列MotionArrayを導出する。
【0074】
curMvapModeとneighborMotionsとに基づいて、カレント符号化ユニット内のサブブロックの動き情報配列MotionArray[i][j](interPredRefMode,MvE0,MvE1,fIndexL0,RefIndexL1)を決定し、ここで、i=0~(W>>3)-1、j=0~(H>>3)-1となり、(i,j)はカレント符号化ユニット内の8×8サブブロックのインデックスであり、iはサブブロックの水平インデックス値であり、jはサブブロックの垂直インデックス値である。各サブブロックをトラバースし、動きベクトル角度予測のサブブロック動き情報配列MotionArrayを導出し、BgcFlagとBgcIndexとをゼロに設定する。
【表3】
【0075】
3.4、HMVP
【0076】
履歴情報に基づく動きベクトル予測方法は、次世代動画符号化規格AVS3で採用された技術であり、その原理は、今までの符号化ブロックの動き情報を用いて、カレント符号化ユニットの動き情報を予測することである。HMVPのTableを作成することで、今までの符号化ユニットの動き情報を記憶し、あるブロックを復号化すると、当該HMVPのTableを更新する。従って、カレント符号化ユニットについて、HMVPのTable中には、使用可能な動き情報が常にあり、予測精度を向上させた。
【0077】
例示的に、HMVP方法の復号化フローチャートは、
図6に示すものであってもよい。
【0078】
3.5、ETMVP
【0079】
AVS3において、現在、ETMVP技術が規格に採用されており、まず時間領域参照フレームにおいて、カレント符号化ユニットと同じ位置の領域を見つけ、次に当該領域内の各8x8ブロックが位置する時間動き情報記憶ユニット中の動きベクトルのスケーリング値を最初の候補とし、次に当該領域を8輝度サンプル左右上下にオフセットして後続の候補とし、各候補を得た後、候補を重複チェックする必要があり、次に動きベクトル候補リストに入れ、ここで、Pピクチャについて、時間領域参照フレームはlist0の最初のフレームであり、Bピクチャについて、時間領域参照フレームはlist1の最初のフレームである。最後に、リスト内の各候補について、8×8サブブロックの動き情報を取得し、動き補償を行い、予測値を得る。
【0080】
関連技術において、skip/directモードのリスト構築順序は、時間領域+MHBSKIP+MVAP+HMVPとなり、すなわち、時間領域、MHBSKIP、MVAP、HMVPの順にskip/directモードの候補リストが構築される.
【0081】
カレント画像がPピクチャである場合、時間領域は1つの動き情報候補を生成し、MHBSKIPは1つの動き情報候補を生成し、MVAPとHMVPは合計8つの動き情報候補を生成し、リストの長さは1+1+8=10となる。
【0082】
カレント画像がBピクチャである場合、時間領域は1つの動き情報候補を生成し、MHBSKIPは3つの動き情報候補を生成し、MVAPとHMVPは合計8つの動き情報候補を生成し、リストの長さは1+3+8=12となる。
【0083】
ここで、MVAPとHMVPは合計8つの動き情報候補を生成するのは、例えば、MVAPがValidMvapModeNum個の動き情報候補を生成し、HMVPが残った8-ValidMvapModeNum個の動き情報候補を生成し、ValidMvapModeNumの値の範囲は0~5である。
【0084】
各異なる動き情報候補を表すために、カレント符号化ユニットのskipモードまたはdirectモードの動き情報インデックス値cu_subtype_indexを用いてマーキングする必要がある。現在、cu_subtype_indexの値の範囲は、0~11であり、トランケーテッド・ユーナリを用いて2値化符号化を行い、maxValが11に等しい。
【0085】
しかし、実際には、PピクチャとBピクチャは異なる長さの候補リストを生成し、HMVPとMVAPによって生成されることが許容される動き情報候補の最大数は固定ではないため、cu_subtype_indexの値の範囲も固定ではなく、cu_subtype_indexを符号化するのにmaxValを11と固定して使用すると、ビットコストが冗長になる。
【0086】
インデックス値の決定の柔軟性を向上させ、符号化冗長性を低減し、それによって符号化および復号化性能を向上させるために、本発明の実施形態の最適化解決手段は、以下の一部または全部を含み得る。
【0087】
まず、ハイレベルシンタックスを取得し、動きベクトル角度予測の動き情報候補の数(NumOfMvapCand)とインター予測の履歴動き情報候補の数(NumOfHmvpCand)とを取得し、カレント画像の画像タイプを取得する。
【0088】
次に、カレント画像の画像タイプと、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0089】
最後に、ValidMvapModeNumを取得し、cu_subtype_indexとValidMvapModeNumとに基づいて、カレント符号化ユニットのタイプはMVAPモードであるか、HMVPモードであるかを決定する。
【0090】
本発明の実施形態の上記目的、特徴および利点をより明白かつ理解しやすくするために、以下、添付図面と合わせて、本発明の実施形態における技術的解決手段をさらに詳細に説明する。
【0091】
図7は、本発明の実施形態により提供される復号化方法のフローチャートであり、ここで、当該復号化方法は、復号化デバイスに適用することが可能であり、
図7に示すように、当該復号化方法は、以下のステップを含み得る。
【0092】
ステップS700、ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析する。
【0093】
ステップS710、スキップモードまたはダイレクトモードの候補リストを構築する。
【0094】
ステップS720、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいてカレント符号化ユニットの予測モードを決定する。
【0095】
ステップS730、カレント符号化ユニットの予測モードに基づいてカレント符号化ユニットの動き情報を取得し、カレント符号化ユニットに対して動き補償を行う。
【0096】
図8に示すように、ステップS700において、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップは、以下のステップで実現され得る。
【0097】
ステップS701、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得する。
【0098】
ステップS702、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定する。
【0099】
本発明の実施形態では、HMVPとMVAPによって生成されることが許容される動き情報候補の最大数が固定ではなく、スキップモードまたはダイレクトモードの動き情報インデックス値の値の範囲も固定ではないと考えるため、スキップモードまたはダイレクトモードの動き情報インデックス値の決定の柔軟性を向上させるために、最大インデックス値(すなわちmaxVal)を11に固定せず、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて決定してもよい。
【0100】
例示的に、復号化デバイスがビットストリームを受信すると、動きベクトル角度予測の動き情報候補の数(すなわちNumOfMvapCand)とインター予測の履歴動き情報候補の数(すなわちNumOfHmvpCand)とを取得してもよい。
【0101】
いくつかの実施形態において、シーケンスレベルのハイレベルシンタックスを解析することで、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得する。
【0102】
復号化デバイスが動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得した場合、取得した動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定してもよい。
【0103】
一例において、上記のシーケンスレベルのハイレベルシンタックスを解析することで、前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とを取得するステップは、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグを解析し、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値に基づいて、動きベクトル角度予測の動き情報候補の数を決定するステップと、インター予測の履歴動き情報候補の数のインデックスを解析し、前記インター予測の履歴動き情報候補の数のインデックスの値に基づいて、インター予測の履歴動き情報候補の数を決定するステップと、を含み得る。
【0104】
例示的に、シーケンスレベルのハイレベルシンタックスを通じて、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグ(etmvp_mvap_enable_flag)と、インター予測の履歴動き情報候補の数のインデックスとをそれぞれ用いて、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを決定してもよい。
【0105】
例示的に、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグは、強化時間動きベクトル予測モードと動きベクトル角度予測モードとを同時にオンにすること、または、強化時間動きベクトル予測モードと動きベクトル角度予測モードとを同時にオフにすることを示すために用いられる。
【0106】
例示的に、etmvp_mvap_enable_flagの値の範囲は0~1であり、num_of_hmvp_candの値の範囲は0~8である。
【0107】
例示的に、復号化デバイスはそれぞれ、etmvp_mvap_enable_flagの値を解析することでNumOfMvapCandを決定し、num_of_hmvp_candの値を解析することでNumOfHmvpCandを決定してもよい。
【0108】
例えば、復号化デバイスは、etmvp_mvap_enable_flagの値に基づいて、以下の方式に従ってNumOfMvapCandを決定してもよい。
NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0である。
【0109】
ここで、etmvp_mvap_enable_flagの値が1である場合、NumOfMvapCandの値は5であり、etmvp_mvap_enable_flagの値が1でない場合、NumOfMvapCandの値は0である。
【0110】
すなわち、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1である場合、前記動きベクトル角度予測の動き情報候補の数が5であると決定し、ここで、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1であることは、カレント符号化ユニットに対して、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができること、すなわち、カレント符号化ユニットは、強化時間動きベクトル予測と動きベクトル角度予測とを同時にイネーブルすることを表す。
【0111】
強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0である場合、動きベクトル角度予測の動き情報候補の数が0であると決定し、ここで、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0であること、または、ビットストリームに前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグが存在しないことは、カレント符号化ユニットに対して、強化時間動きベクトル予測と動きベクトル角度予測とを用いるべきでないこと、すなわち、カレント符号化ユニットは、強化時間動きベクトル予測と動きベクトル角度予測とを同時にイネーブルしないことを表す。
【0112】
例示的に、復号化デバイスは、num_of_hmvp_candの値をNumOfHmvpCandとして使用してもよい。
【0113】
一例において、上記の動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、最大インデックス値を決定するステップと、最大インデックス値に基づいて、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップと、を含み得る。
【0114】
例示的に、上記の方式でNumOfMvapCandとNumOfHmvpCandとを決定した場合、復号化デバイスは、決定されたNumOfMvapCandとNumOfHmvpCandとに基づいて、最大インデックス値(すなわちmaxVal)を決定し、当該maxValに基づいて、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析してもよい。例示的に、決定されたNumOfMvapCandとNumOfHmvpCandとに基づいて決定されるmaxValは11以下である。
【0115】
一例として、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、最大インデックス値を決定するステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とのうちの最大値を決定するステップと、当該最大値と3との和を最大インデックス値として決定するステップと、を含み得る。例示的に、時間動き情報候補とMHBSKIPの動き情報候補の最大数が4であり、maxValの値がリストの長さ-1であると考えるため、NumOfMvapCandとNumOfHmvpCandとのうちの最大値と、3との和に基づいて、maxValを決定してもよい。
【0116】
例示的に、復号化デバイスは、以下の方式に従ってmaxValを決定してもよい。
maxVal=(3+Max(NumOfMvapCand,NumOfHmvpCand))
【0117】
ここで、Max(NumOfMvapCand,NumOfHmvpCand)≦8であるため、上記の方式に従って決定されたmaxVal≦11となり、当該maxValに基づいて、トランケーテッド・ユーナリの2値化方式を用いてスキップモードまたはダイレクトモードの動き情報インデックス値を符号化する場合、必要なビット数は、maxVal=11の場合に必要なビット数以下となり、従って、本発明の実施形態により提供される方式を用いれば、スキップモードまたはダイレクトモードの動き情報インデックスを符号化するのに必要なビット数を高い確率で削減でき、符号化および復号化のコストを減らし、符号化および復号化性能を向上させる。
【0118】
いくつかの実施形態において、ステップS702において、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するステップを含み得る。
【0119】
例示的に、異なる画像タイプに対応するMHBSKIPの動き情報候補の数は、例えば、Pピクチャについて、MHBSKIPの動き情報候補の数は1であり、Bピクチャについて、MHBSKIPの動き情報候補の数は3であるように、異ってもよいと考える。従って、スキップモードまたはダイレクトモードの動き情報インデックス値の決定の柔軟性を向上させるために、スキップモードまたはダイレクトモードの動き情報インデックス値を決定する際に、画像タイプを考慮してもよく、すなわち、復号化デバイスは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定してもよい。
【0120】
一例において、上記の動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定することステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、最大インデックス値を決定するステップと、最大インデックス値に基づいて、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するステップと、を含み得る。
【0121】
例示的に、復号化デバイスは、上記の実施形態で説明した方法でNumOfMvapCandとNumOfHmvpCandとを取得する以外、カレント符号化ユニットの属する動画画像(本発明ではカレント画像と呼ぶ)の画像タイプを取得してもよい。例示的に、画像タイプは、BピクチャまたはPピクチャを含み得るが、これらに限定されない。
【0122】
例示的に、復号化デバイスは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、最大インデックス値を決定してもよい。
【0123】
一例として、上記の動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、最大インデックス値を決定するステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とのうちの最大値を決定するステップと、カレント画像の画像タイプがPピクチャである場合、当該最大値と1との和を最大インデックス値として決定するステップと、カレント画像の画像タイプがBピクチャである場合、当該最大値と3との和を最大インデックス値として決定するステップと、を含み得る。
【0124】
例示的に、Pピクチャについて、MHBSKIPの動き情報候補の数は1であり、Bピクチャについて、MHBSKIPの動き情報候補の数は3であると考える。従って、カレント画像の画像タイプがPピクチャである場合、NumOfMvapCandとNumOfHmvpCandとのうちの最大値と、1との和をmaxValとして決定してもよい。カレント画像の画像タイプがBピクチャである場合、NumOfMvapCandとNumOfHmvpCandとのうちの最大値と、3との和をmaxValとして決定してもよい。
【0125】
画像タイプがPピクチャの場合、MHBSKIPの動き情報候補の数の値は1であり、画像タイプを考慮せず、MHBSKIPの動き情報候補の数を直接3とする実現方式に比べ、決定されたmaxValは低くなるため、トランケーテッド・ユーナリの2値化方式を用いてスキップモードまたはダイレクトモードの動き情報インデックス値を符号化する際のビットコストを節約でき、符号化および復号化性能を向上させる。
【0126】
例示的に、復号化デバイスが上記の方式でmaxValを決定した場合、決定されたmaxValに基づいて、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析してもよい。例示的に、maxValとスキップモードまたはダイレクトモードの動き情報インデックス値との間の対応関係は、表1に記載された関連情報を参照してもよい。
【0127】
いくつかの実施形態において、ステップS720において、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいてカレント符号化ユニットの予測モードを決定するステップは、有効な角度予測モードの数と、スキップモードまたはダイレクトモードの動き情報インデックス値とに基づいて、カレント符号化ユニットの予測モードを決定するステップを含み得る。
【0128】
例示的に、復号化デバイスが上記の方式でカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定した場合、有効な角度予測モードの数(ValidMvapModeNum)と、スキップモードまたはダイレクトモードの動き情報インデックス値とに基づいて、カレント符号化ユニットの予測モードを決定してもよい。
【0129】
一例において、有効な角度予測モードの数と、スキップモードまたはダイレクトモードの動き情報インデックス値とに基づいて、カレント符号化ユニットの予測モードを決定するステップは、スキップモードまたはダイレクトモードの動き情報インデックス値がN以上である場合、有効な角度予測モードの数が0より大きく、且つスキップモードまたはダイレクトモードの動き情報インデックス値が、Nと有効な角度予測モードの数との和より小さいとき、カレント符号化ユニットの予測モードが動きベクトル角度予測モードであると決定し、有効な角度予測モードの数が0に等しいとき、または、スキップモードまたはダイレクトモードの動き情報インデックス値が、Nと有効な角度予測モードの数との和以上であるとき、カレント符号化ユニットの予測モードが履歴情報に基づく動きベクトル予測モードであると決定するステップを含み得る。
【0130】
例示的に、復号化デバイスが、上記の方式でスキップモードまたはダイレクトモードの動き情報インデックス値を決定するとき、スキップモードまたはダイレクトモードの動き情報インデックス値がNより大きいか否かを決定してもよい。例示的に、Nは、正の整数である。
【0131】
例示的に、Nは、候補リスト中の時間動き情報候補と、MHBSKIPによって生成された動き情報候補との合計であってもよい。例示的に、Nの値は、カレント画像の画像タイプに基づいて決定されてもよい。
【0132】
一例として、カレント画像の画像タイプがPピクチャである場合、N=2であり、カレント画像の画像タイプがBピクチャである場合、N=4である。
【0133】
例示的に、復号化デバイスがスキップモードまたはダイレクトモードの動き情報インデックス値がN以上であると決定した場合、復号化デバイスはさらに、ValidMvapModeNumが0より大きいか否か、およびスキップモードまたはダイレクトモードの動き情報インデックス値が、NとValidMvapModeNumとの和より小さいか否かを決定してもよい。
【0134】
ValidMvapModeNumが0より大きく、且つスキップモードまたはダイレクトモードの動き情報インデックス値が、NとValidMvapModeNumとの和より小さとき、すなわち、動きベクトル角度予測モードが動き情報候補を生成し、且つスキップモードまたはダイレクトモードの動き情報インデックス値に対応する動き情報候補が、動きベクトル角度予測モードによって生成された動き情報候補を指すとき、復号化デバイスは、カレント符号化ユニットの予測モードが動きベクトル角度予測モードであると決定してもよい。
【0135】
ValidMvapModeNumが0に等しいとき、または、スキップモードまたはダイレクトモードの動き情報インデックス値が、Nと有効な角度予測モードの数との和以上であるとき、すなわち、動きベクトル角度予測モードが動き情報候補を生成しておらず、または、スキップモードまたはダイレクトモードの動き情報インデックス値に対応する動き情報候補が、履歴情報に基づく動きベクトル予測モードによって生成された動き情報候補を指すとき、復号化デバイスは、カレント符号化ユニットの予測モードが履歴情報に基づく動きベクトル予測モードであると決定してもよい。
【0136】
いくつかの実施形態において、上記のカレント符号化ユニットの予測モードを決定した後、カレント符号化ユニットの予測モードが履歴情報に基づく動きベクトル予測モードであるとき、カレント符号化ユニットが、インター予測ユニットであり、且つアフィン予測ユニットではなく、且つ角度重み付け予測ユニットではなく、且つ強化時間動きベクトル予測ユニットではなく、且つ動きベクトル角度予測ユニットではなく、且つサブブロック時間動き情報予測ユニットではなく、且つインター予測の履歴動き情報候補の数が0より大きい場合、履歴動き情報リストを更新し、それ以外の場合、履歴動き情報リストを更新しないステップをさらに含み得る。
【0137】
例示的に、復号化デバイスは、上記の実施形態で説明した方法で、カレント符号化ユニットの予測モードが履歴情報に基づく動きベクトル予測モードであると決定した場合、復号化デバイスはカレント符号化ユニットが、カレント符号化ユニットがインター予測ユニットであること、カレント符号化ユニットがアフィン予測ユニットではないこと、カレント符号化ユニットが角度重み付け予測ユニットではないこと、カレント符号化ユニットが強化時間動きベクトル予測ユニットではないこと、カレント符号化ユニットが動きベクトル角度予測ユニットではないこと、カレント符号化ユニットがサブブロック時間動き情報予測ユニットではないこと、および、インター予測の履歴動き情報候補の数(すなわちNumOfHmvpCand)が0より大きいこと、という条件を満たすか否かを決定してもよい。
【0138】
復号化デバイスは、カレント符号化ユニットが上記のすべての条件を満たしていると決定した場合、復号化デバイスは履歴動き情報リスト(HmvpCandList)を更新してもよい。例示的に、復号化デバイスはカレント予測ブロックの動き情報と、BgcFlagと、BgcIndexとに基づいて履歴動き情報リストを更新してもよい。
【0139】
復号化デバイスは、カレント符号化ユニットが上記の少なくとも1つの条件を満たしていないと決定した場合、復号化デバイスは履歴動き情報リストを更新しなくてもよい。
【0140】
いくつかの実施形態において、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値に基づいて、動きベクトル角度予測の動き情報候補の数を決定するステップは、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1である場合、動きベクトル角度予測の動き情報候補の数が5であると決定するステップであって、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1であることは、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができることを表すステップと、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0である場合、または、ビットストリームに前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグが存在しない場合、動きベクトル角度予測の動き情報候補の数が0であると決定するステップであって、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0であること、または、ビットストリームに前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグが存在しないことは、強化時間動きベクトル予測と動きベクトル角度予測とを用いるべきでないこと表すステップと、を含み得る。
【0141】
例示的に、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグを通じて、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができるか否かを示してもよい。
【0142】
例示的に、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1であることは、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができることを表し、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0であることは、強化時間動きベクトル予測と動きベクトル角度予測とを用いるべきでないこと表す。
【0143】
例示的に、復号化デバイスがビットストリームを受信すると、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値を解析してもよい。
【0144】
強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1である場合、すなわち、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができる場合、復号化デバイスは、NumOfMvapCandが5であると決定してもよい。
【0145】
強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0である場合、すなわち、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができない場合、復号化デバイスは、NumOfMvapCandが0であると決定してもよい。
【0146】
例示的に、復号化デバイスは、ビットストリームから強化時間動きベクトル予測と動きベクトル角度予測の許可フラグを解析することができない場合、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0であると、すなわち強化時間動きベクトル予測と動きベクトル角度予測とを用いることができないと決定してもよく、この場合、復号化デバイスは、NumOfMvapCandが0であると決定してもよい。
【0147】
図9は、本発明の実施形態により提供される符号化方法のフローチャートであり、ここで、当該符号化方法は、符号化デバイスに適用することが可能であり、
図9に示すように、当該符号化方法は、以下のステップを含み得る。
【0148】
ステップS900、スキップモードまたはダイレクトモードの候補リストを構築し、予測モードの候補リスト中の各予測モードを順にトラバースし、各予測モードについて、カレント符号化ユニットの動き情報と、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値とを取得する。
【0149】
ステップS910、カレント符号化ユニットの動き情報に基づいて、カレント符号化ユニットに対して動き補償を行う。
【0150】
ステップS920、当該予測モードに対応するレート歪みコスト値を計算し、当該レート歪みコスト値と他の予測モード候補のコスト値を比較し、最も小さいレート歪みコスト値に対応する予測モードを選択する。
【0151】
ステップS930、レート歪みコスト値が最も小さい予測モードに対応するカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加し、復号化側に送信する。
【0152】
図10に示すように、ステップS930において、レート歪みコスト値が最も小さい予測モードに対応するカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加するステップは、以下のステップで実現され得る。
【0153】
ステップS931、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得する。
【0154】
ステップS932、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加する。
【0155】
本発明の実施形態では、HMVPとMVAPによって生成されることが許容される動き情報候補の最大数が固定ではなく、スキップモードまたはダイレクトモードの動き情報インデックス値の値の範囲も固定ではないと考えるため、スキップモードまたはダイレクトモードの動き情報インデックス値の決定の柔軟性を向上させるために、最大インデックス値(すなわちmaxVal)を11に固定せず、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて決定してもよい。
【0156】
例示的に、符号化デバイスは、動き情報インデックス値を符号化する必要がある場合、NumOfMvapCandとNumOfHmvpCandとを取得してもよい。例示的に、符号化デバイスはシーケンスレベルのハイレベルシンタックスを符号化することで、NumOfMvapCandとNumOfHmvpCandとを決定してもよい。
【0157】
本発明の実施形態では、符号化デバイスは、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加してもよい。
【0158】
いくつかの実施形態において、ステップS932において、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化するステップは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、最大インデックス値を決定するステップと、最大インデックス値に基づいて、トランケーテッド・ユーナリの2値化方式を用いて前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化するステップと、を含み得る。
【0159】
例示的に、上記の方式でNumOfMvapCandとNumOfHmvpCandとを決定した場合、符号化デバイスは、決定されたNumOfMvapCandとNumOfHmvpCandとに基づいて、最大インデックス値(すなわちmaxVal)を決定し、当該maxValに基づいて、トランケーテッド・ユーナリの2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してもよい。
【0160】
例示的に、決定されたNumOfMvapCandとNumOfHmvpCandとに基づいて決定されるmaxValは11以下である。
【0161】
例示的に、時間動き情報候補とMHBSKIPの動き情報候補の最大数が4であり、maxValの値がリストの長さ-1であると考えるため、NumOfMvapCandとNumOfHmvpCandとのうちの最大値と、3との和に基づいて、maxValを決定してもよい。
【0162】
例示的に、復号化デバイスは、以下の方式に従ってmaxValを決定してもよい。
maxVal=(3+Max(NumOfMvapCand,NumOfHmvpCand))
【0163】
ここで、Max(NumOfMvapCand,NumOfHmvpCand)≦8であるため、上記の方式に従って決定されたmaxVal≦11となり、当該maxValに基づいて、トランケーテッド・ユーナリの2値化方式を用いてスキップモードまたはダイレクトモードの動き情報インデックス値を符号化する場合、必要なビット数は、maxVal=11の場合に必要なビット数以下となり、従って、本発明の実施形態により提供される方式を用いれば、スキップモードまたはダイレクトモードの動き情報インデックスを符号化するのに必要なビット数を高い確率で削減でき、符号化および復号化のコストを減らし、符号化および復号化性能を向上させる。
【0164】
一例において、上記の動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、最大インデックス値を決定するステップは、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、最大インデックス値を決定するステップを含み得る。
【0165】
例示的に、異なる画像タイプに対応するMHBSKIPの動き情報候補の数は、例えば、Pピクチャについて、MHBSKIPの動き情報候補の数は1であり、Bピクチャについて、MHBSKIPの動き情報候補の数は3であるように、異ってもよいと考える。
【0166】
従って、スキップモードまたはダイレクトモードの動き情報インデックス値の符号化の柔軟性を向上させるために、スキップモードまたはダイレクトモードの動き情報インデックス値を符号化する際に、画像タイプを考慮してもよく、すなわち、符号化デバイスは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してもよい。
【0167】
例示的に、画像タイプは、BピクチャまたはPピクチャを含み得るが、これらに限定されない。
【0168】
例示的に、符号化デバイスは、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、最大インデックス値を決定してもよい。
【0169】
例示的に、Pピクチャについて、MHBSKIPの動き情報候補の数は1であり、Bピクチャについて、MHBSKIPの動き情報候補の数は3であると考える。
【0170】
従って、カレント画像の画像タイプがPピクチャである場合、NumOfMvapCandとNumOfHmvpCandとのうちの最大値と、1との和をmaxValとして決定してもよい。
【0171】
カレント画像の画像タイプがBピクチャである場合、NumOfMvapCandとNumOfHmvpCandとのうちの最大値と、3との和をmaxValとして決定してもよい。
【0172】
画像タイプがPピクチャの場合、MHBSKIPの動き情報候補の数の値は1であり、画像タイプを考慮せず、MHBSKIPの動き情報候補の数を直接3とする実現方式に比べ、決定されたmaxValは低くなるため、トランケーテッド・ユーナリの2値化方式を用いてスキップモードまたはダイレクトモードの動き情報インデックス値を符号化する際のビットコストを節約でき、符号化および復号化性能を向上させる。
【0173】
例示的に、符号化デバイスが上記の方式でmaxValを決定した場合、決定されたmaxValに基づいて、トランケーテッド・ユーナリの2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してもよい。
【0174】
当業者が本発明の実施形態によって提供される技術的解決策をよりよく理解できるようにするために、以下、具体例と合わせて、本発明の実施形態によって提供される技術的解決手段を説明する。
【0175】
インデックス値の決定の柔軟性を向上させ、符号化冗長性を低減し、それによって符号化および復号化性能を向上させるために、本発明の実施形態の最適化解決手段は、以下の一部または全部を含み得る。
【0176】
まず、ハイレベルシンタックスを取得し、動きベクトル角度予測の動き情報候補の数(NumOfMvapCand)とインター予測の履歴動き情報候補の数(NumOfHmvpCand)とを取得し、カレント画像の画像タイプを取得する。
【0177】
次に、カレント画像の画像タイプと、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0178】
最後に、ValidMvapModeNumを取得し、cu_subtype_indexとValidMvapModeNumとに基づいて、カレント符号化ユニットのタイプはMVAPモードであるか、HMVPモードであるかを決定する。
(実施形態1、符号化方法および符号化装置)
【0179】
1.1、スキップモードまたはダイレクトモードの候補リストを構築し、予測モードの候補リスト中の各予測モードを順にトラバースし、各予測モードについて、カレント符号化ユニットの動き情報と、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値とを取得する
【0180】
1.2、カレント符号化ユニットの動き情報に基づいて、カレント符号化ユニットに対して動き補償を行う。
【0181】
1.3、当該予測モードに対応するレート歪みコスト値を計算し、当該レート歪みコスト値と他の予測モード候補のコスト値を比較し、最も小さいレート歪みコスト値に対応する予測モードを選択する。
【0182】
1.4、レート歪みコスト値が最も小さい予測モードに対応するカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加し、復号化側に送信する。
(実施形態2、復号化方法および復号化装置)
【0183】
2.1、ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析する。
【0184】
2.2、スキップモードまたはダイレクトモードの候補リストを構築する。
【0185】
2.3、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいてカレント符号化ユニットの予測モードを決定する。
【0186】
2.4、カレント符号化ユニットの予測モードに基づいてカレント符号化ユニットの動き情報を取得し、カレント符号化ユニットに対して動き補償を行う。
(実施形態3)
【0187】
符号化プロセス
【0188】
(1)、シーケンスレベルのハイレベルシンタックスを符号化し、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0189】
(2)、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加する。
【0190】
復号化プロセス
【0191】
(1)、シーケンスレベルのハイレベルシンタックスを解析することで、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0192】
(2)、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
(実施形態4)
【0193】
符号化プロセス
【0194】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを符号化する。
【0195】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0196】
ここで、etmvp_mvap_enable_flag==1?5:0であることは、etmvp_mvap_enable_flagの値が1である場合、NumOfMvapCandの値は5であり、etmvp_mvap_enable_flagの値が1でなく、すなわちetmvp_mvap_enable_flagの値が0である場合、NumOfMvapCandの値は0であることを表す(以下も同じ)。
【0197】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0198】
(2)、トランケーテッド・ユーナリの2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを符号化してビットストリームに付加する。
【0199】
例示的に、maxVal=(3+Max(NumOfMvapCand,NumOfHmvpCand))である。
【0200】
復号化プロセス
【0201】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを解析する。
【0202】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0203】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0204】
(2)、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0205】
例示的に、maxVal=(3+Max(NumOfMvapCand,NumOfHmvpCand))である。
(実施形態5)
【0206】
符号化プロセス
【0207】
(1)、シーケンスレベルのハイレベルシンタックスを符号化し、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0208】
(2)、カレント画像の画像タイプと、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加する。
【0209】
復号化プロセス
【0210】
(1)、シーケンスレベルのハイレベルシンタックスを解析することで、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0211】
(2)、カレント画像の画像タイプと、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
(実施形態6)
【0212】
符号化プロセス
【0213】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを符号化する。
【0214】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0215】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0216】
(2)、トランケーテッド・ユーナリの2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを符号化してビットストリームに付加する。
【0217】
例示的に、maxVal=((PictureType==1)?(1:3)+Max(NumOfMvapCand,NumOfHmvpCand))であり、PictureTypeはカレント画像の画像タイプを表し、値が1であることは、カレント画像がPピクチャであることを表す。
【0218】
復号化プロセス
【0219】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを解析する。
【0220】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0221】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0222】
(2)、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0223】
例示的に、maxVal=((PictureType==1)?(1:3)+Max(NumOfMvapCand,NumOfHmvpCand))であり、PictureTypeはカレント画像の画像タイプを表し、値が1であることは、カレント画像がPピクチャであることを表す。
【0224】
ここで、maxVal=((PictureType==1)?(1:3)+Max(NumOfMvapCand,NumOfHmvpCand))であることは、PictureTypeの値が1である場合、maxVal=1+Max(NumOfMvapCand,NumOfHmvpCand)であり、PictureTypeの値が1でない場合、maxVal=3+Max(NumOfMvapCand,NumOfHmvpCand)であることを表す(以下も同じ)。
(実施形態7)
【0225】
符号化プロセス
【0226】
(1)、シーケンスレベルのハイレベルシンタックスを符号化し、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0227】
(2)、ValidMvapModeNumを取得し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexとValidMvapModeNumとに基づいて、カレント符号化ユニットのタイプはMVAPモードであるか、HMVPモードであるかを決定する。
【0228】
(3)、NumOfMvapCandとNumOfHmvpCandとに基づいて、cu_subtype_indexを符号化してビットストリームに付加する。
【0229】
復号化プロセス
【0230】
(1)、シーケンスレベルのハイレベルシンタックスを解析することで、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0231】
(2)、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0232】
(3)、ValidMvapModeNumを取得し、cu_subtype_indexとValidMvapModeNumとに基づいて、カレント符号化ユニットのタイプはMVAPモードであるか、HMVPモードであるかを決定する。
(実施形態8)
【0233】
符号化プロセス
【0234】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを符号化する。
【0235】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0236】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0237】
(2)、有効な角度予測モードの数ValidMvapModeNumを取得し、CuSubTypeIndexがN以上である場合、
【0238】
ValidMvapModeNumが0より大きく、且つCuSubTypeIndexが、N+ValidMvapModeNumより小さいとき、カレント符号化ユニットのタイプがMVAPモードであると決定する。
【0239】
ValidMvapModeNumが0に等しいとき、または、CuSubTypeIndexが、N+ValidMvapModeNum以上であるとき、カレント符号化ユニットのタイプがHMVPモードであると決定する。
【0240】
例示的に、カレント画像がPピクチャである場合、N=2であり、カレント画像がBピクチャである場合、N=4である。
【0241】
(3)、トランケーテッド・ユーナリの2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを符号化してビットストリームに付加する。
【0242】
例示的に、maxVal=(3+Max(NumOfMvapCand,NumOfHmvpCand))である。
【0243】
復号化プロセス
【0244】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを解析する。
【0245】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0246】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0247】
(2)、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0248】
例示的に、maxVal=(3+Max(NumOfMvapCand,NumOfHmvpCand))である。
【0249】
(3)、有効な角度予測モードの数ValidMvapModeNumを取得し、CuSubTypeIndexがN以上である場合、
【0250】
ValidMvapModeNumが0より大きく、且つCuSubTypeIndexが、N+ValidMvapModeNumより小さいとき、カレント符号化ユニットのタイプがMVAPモードであると決定する。
【0251】
ValidMvapModeNumが0に等しいとき、または、CuSubTypeIndexが、N+ValidMvapModeNum以上であるとき、カレント符号化ユニットのタイプがHMVPモードであると決定する。
【0252】
例示的に、カレント画像がPピクチャである場合、N=2であり、カレント画像がBピクチャである場合、N=4である。
(実施形態9)
【0253】
符号化プロセス
【0254】
(1)、シーケンスレベルのハイレベルシンタックスを符号化し、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0255】
(2)、ValidMvapModeNumを取得し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexとValidMvapModeNumとに基づいて、カレント符号化ユニットのタイプはMVAPモードであるか、HMVPモードであるかを決定する。
【0256】
(3)、カレント画像の画像タイプと、NumOfMvapCandとNumOfHmvpCandとに基づいて、cu_subtype_indexを符号化してビットストリームに付加する。
【0257】
復号化プロセス
【0258】
(1)、シーケンスレベルのハイレベルシンタックスを解析することで、動きベクトル角度予測の動き情報候補の数NumOfMvapCandとインター予測の履歴動き情報候補の数NumOfHmvpCandとを取得する。
【0259】
(2)、カレント画像の画像タイプと、NumOfMvapCandとNumOfHmvpCandとに基づいて、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0260】
(3)、ValidMvapModeNumを取得し、cu_subtype_indexとValidMvapModeNumとに基づいて、カレント符号化ユニットのタイプはMVAPモードであるか、HMVPモードであるかを決定する。
(実施形態10)
【0261】
符号化プロセス
【0262】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを符号化する。
【0263】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0264】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0265】
(2)、有効な角度予測モードの数ValidMvapModeNumを取得し、CuSubTypeIndexがN以上である場合、
【0266】
ValidMvapModeNumが0より大きく、且つCuSubTypeIndexが、N+ValidMvapModeNumより小さいとき、カレント符号化ユニットのタイプがMVAPモードである。
【0267】
ValidMvapModeNumが0に等しいとき、または、CuSubTypeIndexが、N+ValidMvapModeNum以上であるとき、カレント符号化ユニットのタイプがHMVPモードである。
【0268】
例示的に、カレント画像がPピクチャである場合、N=2であり、カレント画像がBピクチャである場合、N=4である。
【0269】
(3)、トランケーテッド・ユーナリの2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを符号化してビットストリームに付加する。
【0270】
例示的に、maxVal=((PictureType==1)?(1:3)+Max(NumOfMvapCand,NumOfHmvpCand))であり、PictureTypeはカレント画像の画像タイプを表し、値が1であることは、カレント画像がPピクチャであることを表す。
【0271】
復号化プロセス
【0272】
(1)、シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagとnum_of_hmvp_candとを解析する。
【0273】
例示的に、NumOfMvapCandの値は、etmvp_mvap_enable_flag==1?5:0であり、etmvp_mvap_enable_flagの値の範囲は0~1である。
【0274】
例示的に、NumOfHmvpCandの値はnum_of_hmvp_candであり、num_of_hmvp_candの値の範囲は0~8である。
【0275】
(2)、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値cu_subtype_indexを解析する。
【0276】
例示的に、maxVal=((PictureType==1)?(1:3)+Max(NumOfMvapCand,NumOfHmvpCand))であり、PictureTypeはカレント画像の画像タイプを表し、値が1であることは、カレント画像がPピクチャであることを表す。
【0277】
(3)、有効な角度予測モードの数ValidMvapModeNumを取得し、CuSubTypeIndexがN以上である場合、
【0278】
ValidMvapModeNumが0より大きく、且つCuSubTypeIndexが、N+ValidMvapModeNumより小さいとき、カレント符号化ユニットのタイプがMVAPモードである。
【0279】
ValidMvapModeNumが0に等しいとき、または、CuSubTypeIndexが、N+ValidMvapModeNum以上であるとき、カレント符号化ユニットのタイプがHMVPモードである。
【0280】
例示的に、カレント画像がPピクチャである場合、N=2であり、カレント画像がBピクチャである場合、N=4である。
(実施形態11)
【0281】
シーケンスレベルのハイレベルシンタックスetmvp_mvap_enable_flagを符号化・復号し、ETMVPとMVAPとを制御する。
【0282】
例示的に、etmvp_mvap_enable_flagを通じてETMVPとMVAPとを有効にするか否かをマーキングしてもよい。
【0283】
例示的に、シンタックス記述は、次の表に示すものであってもよい。
【表4】
【0284】
セマンティック記述
【0285】
強化時間動きベクトル予測と動きベクトル角度予測の許可フラグ(etmvp_mvap_enable_flag):2値変数である。値が「1」であることは、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができることを表し、値が「0」であることは、強化時間動きベクトル予測と動きベクトル角度予測とを用いるべきでないこと表す。EtmvpMvapEnableFlagの値はetmvp_mvap_enable_flagの値に等しい。
【0286】
例示的に、ビットストリームにetmvp_mvap_enable_flagが存在しない場合、EtmvpMvapEnableFlagの値は0である。
【0287】
EtmvpMvapEnableFlagの値が1である場合、NumOfMvapCandの値は5に等しく、それ以外の場合、NumOfMvapCandの値は0に等しい。
(実施形態12)
【0288】
カレント予測ユニット(すなわちカレント符号化ユニット)の復号化を完了した後、カレント予測ユニットが、インター予測ユニットであり、且つ強化時間動きベクトル予測ユニットではなく、且つ動きベクトル角度予測ユニットではなく、且つサブブロック時間動き情報予測ユニットではなく、且つNumOfHmvpCand(更新可能な動き情報の数)が0より大きい場合、カレント予測ブロックの動き情報と、BgcFlagと、BgcIndexとに基づいて履歴動き情報リストHmvpCandListを更新する。
【0289】
それ以外の場合、すなわちNumOfHmvpCand=0、カレント予測ユニットがインター予測ユニットではないこと、カレント予測ユニットが強化時間動きベクトル予測ユニットであること、カレント予測ユニットが動きベクトル角度予測ユニットであること、カレント予測ユニットがサブブロック時間動き情報予測ユニットであること、などの条件のうち少なくとも1つが満たされた場合、履歴動き情報リストを更新しない。
(実施形態13)
【0290】
カレント予測ユニット(すなわちカレントブロック)の復号化を完了した後、カレント予測ユニットが、インター予測ユニットであり、且つアフィン予測ユニットではなく、且つ角度重み付け予測ユニットではなく、且つ強化時間動きベクトル予測ユニットではなく、且つ動きベクトル角度予測ユニットではなく、且つサブブロック時間動き情報予測ユニットではなく、且つNumOfHmvpCand(更新可能な動き情報の数)が0より大きい場合、カレント予測ブロックの動き情報と、BgcFlagと、BgcIndexとに基づいて履歴動き情報リストHmvpCandListを更新し、それ以外の場合、すなわちNumOfHmvpCand=0、カレント予測ユニットがインター予測ユニットではないこと、カレント予測ユニットがアフィン予測ユニットであること、カレント予測ユニットが角度重み付け予測ユニットであること、カレント予測ユニットが強化時間動きベクトル予測ユニットであること、カレント予測ユニットが動きベクトル角度予測ユニットであること、カレント予測ユニットがサブブロック時間動き情報予測ユニットであること、などの条件のうち少なくとも1つが満たされた場合、履歴動き情報リストを更新しない。
【0291】
なお、上記の実施形態は、本発明の実施形態の実現方法の具体例に過ぎず、本発明の保護範囲を限定するものではなく、上記の実施形態に基づいて、実施形態を互いに組み合わせることによって、または実施形態を変形させることによって、新たな実施形態を得ることができるが、それらはすべて本発明の保護範囲に含まれるものとする。
【0292】
また、上記の各実施形態の符号化側と復号化側の実現プロセスについては、お互いを参照してもよい。
【0293】
本発明によって提供される方法は上記のとおりである。以下、本発明によって提供される装置を説明する。
図11は、本発明の実施形態により提供される復号化装置の構造を示す概略図であり、ここで、当該復号化装置は、ビットストリームを受信し、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するための復号化モジュール1110と、スキップモードまたはダイレクトモードの候補リストを構築するための構築モジュール1120と、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値と候補リストとに基づいてカレント符号化ユニットの予測モードを決定するための決定モジュール1130と、カレント符号化ユニットの予測モードに基づいてカレント符号化ユニットの動き情報を取得し、カレント符号化ユニットに対して動き補償を行うための補償モジュール1140と、を備え得る。ここで、前記復号化モジュール1110は、具体的に、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得し、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するために用いられる。
【0294】
いくつかの実施形態において、前記復号化モジュール1110は、具体的に、シーケンスレベルのハイレベルシンタックスを解析することで、前記動きベクトル角度予測の動き情報候補の数と前記インター予測の履歴動き情報候補の数とを取得するために用いられる。
【0295】
いくつかの実施形態において、前記復号化モジュール1110は、具体的に、強化時間動きベクトル予測と動きベクトル角度予測の許可フラグを解析し、前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値に基づいて、前記動きベクトル角度予測の動き情報候補の数を決定し、インター予測の履歴動き情報候補の数のインデックスを解析し、前記インター予測の履歴動き情報候補の数のインデックスの値に基づいて、前記インター予測の履歴動き情報候補の数を決定するために用いられ、ここで、前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグは、強化時間動きベクトル予測モードと動きベクトル角度予測モードとを同時にオンにすること、または、強化時間動きベクトル予測モードと動きベクトル角度予測モードとを同時にオフにすることを示すために用いられる。
【0296】
いくつかの実施形態において、前記決定モジュール1130は、具体的に、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を決定するために用いられる。
【0297】
いくつかの実施形態において、前記決定モジュール1130は、具体的に、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、最大インデックス値を決定し、前記最大インデックス値に基づいて、トランケーテッド・ユーナリの逆2値化方式を用いてカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を解析するために用いられる。
【0298】
いくつかの実施形態において、前記決定モジュール1130は、具体的に、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とのうちの最大値を決定し、前記カレント画像の画像タイプがPピクチャである場合、当該最大値と1との和を最大インデックス値として決定し、前記カレント画像の画像タイプがBピクチャである場合、当該最大値と3との和を最大インデックス値として決定するために用いられる。
【0299】
いくつかの実施形態において、前記決定モジュール1130は、具体的に、有効な角度予測モードの数と、前記スキップモードまたはダイレクトモードの動き情報インデックス値とに基づいて、カレント符号化ユニットの予測モードが動きベクトル角度予測モードであるか、履歴情報に基づく動きベクトル予測モードであるかを決定するために用いられる。
【0300】
いくつかの実施形態において、前記決定モジュール1130は、具体的に、前記スキップモードまたはダイレクトモードの動き情報インデックス値がN以上である場合、前記有効な角度予測モードの数が0より大きく、且つ前記スキップモードまたはダイレクトモードの動き情報インデックス値が、Nと前記有効な角度予測モードの数との和より小さいとき、前記カレント符号化ユニットの予測モードが動きベクトル角度予測モードであると決定し、前記有効な角度予測モードの数が0に等しいとき、または、前記スキップモードまたはダイレクトモードの動き情報インデックス値が、Nと有効な角度予測モードの数との和以上であるとき、前記カレント符号化ユニットの予測モードが履歴情報に基づく動きベクトル予測モードであると決定するために用いられる。
【0301】
いくつかの実施形態において、カレント画像の画像タイプがPピクチャである場合、N=2であり、カレント画像の画像タイプがBピクチャである場合、N=4である。
【0302】
いくつかの実施形態において、前記決定モジュール1130は、さらに、前記カレント符号化ユニットの予測モードが履歴情報に基づく動きベクトル予測モードであるとき、前記カレント符号化ユニットが、インター予測ユニットであり、且つアフィン予測ユニットではなく、且つ角度重み付け予測ユニットではなく、且つ強化時間動きベクトル予測ユニットではなく、且つ動きベクトル角度予測ユニットではなく、且つサブブロック時間動き情報予測ユニットではなく、且つ前記インター予測の履歴動き情報候補の数が0より大きい場合、履歴動き情報リストを更新し、それ以外の場合、履歴動き情報リストを更新しないために用いられる。
【0303】
いくつかの実施形態において、前記復号化モジュール1110は、具体的に、前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1である場合、前記動きベクトル角度予測の動き情報候補の数が5であると決定し、前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0である場合、または、ビットストリームに前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグが存在しない場合、前記動きベクトル角度予測の動き情報候補の数が0であると決定するために用いられ、ここで、前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が1であることは、カレント符号化ユニットに対して、強化時間動きベクトル予測と動きベクトル角度予測とを用いることができることを表し、前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグの値が0であること、または、ビットストリームに前記強化時間動きベクトル予測と動きベクトル角度予測の許可フラグが存在しないことは、カレント符号化ユニットに対して、強化時間動きベクトル予測と動きベクトル角度予測とを用いるべきでないことを表す。
【0304】
図12は、本発明の実施形態により提供される符号化装置の構造を示す概略図であり、ここで、当該符号化装置は、スキップモードまたはダイレクトモードの候補リストを構築し、予測モードの候補リスト中の各予測モードを順にトラバースし、各予測モードについて、カレント符号化ユニットの動き情報と、カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値とを取得するための構築モジュール1210と、カレント符号化ユニットの動き情報に基づいて、カレント符号化ユニットに対して動き補償を行うための補償モジュール1220と、当該予測モードに対応するレート歪みコスト値を計算し、当該レート歪みコスト値と他の予測モード候補のコスト値を比較し、最も小さいレート歪みコスト値に対応する予測モードを選択するための決定モジュール1230と、レート歪みコスト値が最も小さい予測モードに対応するカレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値をビットストリームに付加し、復号化側に送信するための符号化モジュール1240と、を備え得る。ここで、前記符号化モジュール1240は、具体的に、動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とを取得し、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化してビットストリームに付加するために用いられる。
【0305】
いくつかの実施形態において、前記符号化モジュール1240は、具体的に、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数とに基づいて、最大インデックス値を決定し、前記最大インデックス値に基づいて、トランケーテッド・ユーナリの2値化方式を用いて前記カレント符号化ユニットのスキップモードまたはダイレクトモードの動き情報インデックス値を符号化するために用いられる。
【0306】
いくつかの実施形態において、前記符号化モジュール1240は、具体的に、前記動きベクトル角度予測の動き情報候補の数とインター予測の履歴動き情報候補の数と、カレント画像の画像タイプとに基づいて、最大インデックス値を決定するために用いられる。
【0307】
図13は、本発明の実施形態により提供される復号化デバイスのハードウェア構造を示す概略図である。当該復号化デバイスはプロセッサ1301と、機械実行可能命令を記憶している機械可読記憶媒体1302とを備え得る。プロセッサ1301と機械可読記憶媒体1302は、システムバス1303を介して通信することができる。機械可読記憶媒体1302における復号化制御ロジックに対応する機械実行可能命令を読み出して実行することにより、プロセッサ1301は、上述した復号化デバイスの復号化方法を実行し得る。
【0308】
本明細書に言及される機械可読記憶媒体1302はいずれかの電子、磁性、光学または他の物理的記憶装置であってもよく、実行可能なコマンド、データなどの情報を含むまたは記憶することができる。例えば、機械可読記憶媒体は、例えば、RAM(Radom Access Memory、ランダムアクセスメモリ)、揮発性メモリ、不揮発性メモリ、フラッシュメモリ、記憶ドライブ(ハードディスクドライブなど)、ソリッドステートドライブ、任意のタイプの記憶ディスク(光ディスク、dvdなど)、または類似の記憶媒体、または、これらの組み合わせなどが挙げられる。
【0309】
いくつかの実施例において、機械実行可能命令が記憶されている機械可読記憶媒体をさらに提供し、前記機械実行可能命令は、プロセッサにより実行されると、上述した復号化デバイスの復号化方法が実現される。例えば、前記機械可読記憶媒体はROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光データ記憶デバイスなどであってもよい。
【0310】
図14は、本発明の実施形態により提供される符号化デバイスのハードウェア構造を示す概略図である。当該符号化デバイスはプロセッサ1401と、機械実行可能命令を記憶している機械可読記憶媒体1402とを備え得る。プロセッサ1401と機械可読記憶媒体1402は、システムバス1403を介して通信することができる。機械可読記憶媒体1402における符号化制御ロジックに対応する機械実行可能命令を読み出して実行することにより、プロセッサ1401は、上述した符号化デバイスの符号化方法を実行し得る。
【0311】
本明細書に言及される機械可読記憶媒体1402はいずれかの電子、磁性、光学または他の物理的記憶装置であってもよく、実行可能なコマンド、データなどの情報を含むまたは記憶することができる。例えば、機械可読記憶媒体は、例えば、RAM(Radom Access Memory、ランダムアクセスメモリ)、揮発性メモリ、不揮発性メモリ、フラッシュメモリ、記憶ドライブ(ハードディスクドライブなど)、ソリッドステートドライブ、任意のタイプの記憶ディスク(光ディスク、dvdなど)、または類似の記憶媒体、または、これらの組み合わせなどが挙げられる。
【0312】
いくつかの実施例において、機械実行可能命令が記憶されている機械可読記憶媒体をさらに提供し、前記機械実行可能命令は、プロセッサにより実行されると、上述した符号化デバイスの符号化方法が実現される。いくつかの実施例において、上記のいずれかの実施形態における復号化装置および/または符号化装置を含むカメラデバイスをさらに提供する。
【0313】
本明細書において、第1および第2等のような関係用語は1つのエンティティまたは操作を他のエンティティまたは操作と区別するために用いられるだけであり、必ずしもこれらのエンティティまたは操作の間にいかなる実際の関係または順序が存在することを要求または示唆するものではない。また、用語「含む」、「含有」またはそのいずれかの他の変形は、非排他的な含有を含むことを意図し、それにより一連の要素を含むプロセス、方法、物品または装置はそれらの要素を含むだけでなく、また明確に列挙されていない他の要素も含み、またはこのようなプロセス、方法、物品またはデバイスの固有の要素も含む。より多くの制限がない場合、文「1つの…を含む」により限定された要素は、前記要素を含むプロセス、方法、物品またはデバイスにさらに他の同じ要素が存在することを排除するものではない。
【0314】
以上の記載は本発明の好適な実施形態に過ぎず、本発明を限定するものではなく、本発明の精神と原則内で行われたいかなる補正、均等置換または改善などは、いずれも本発明の保護範囲内に含まれるべきである。