(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-21
(45)【発行日】2024-08-29
(54)【発明の名称】インター予測を利用した映像符号化方法、映像復号化方法、及びビデオデータを提供する方法
(51)【国際特許分類】
H04N 19/537 20140101AFI20240822BHJP
H04N 19/70 20140101ALI20240822BHJP
【FI】
H04N19/537
H04N19/70
(21)【出願番号】P 2023076010
(22)【出願日】2023-05-02
(62)【分割の表示】P 2021574744の分割
【原出願日】2020-06-15
【審査請求日】2023-06-01
(31)【優先権主張番号】10-2019-0070633
(32)【優先日】2019-06-14
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2019-0082010
(32)【優先日】2019-07-08
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2020-0072332
(32)【優先日】2020-06-15
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】512297583
【氏名又は名称】ヒョンダイ モーター カンパニー
(73)【特許権者】
【識別番号】512297594
【氏名又は名称】キア コーポレーション
(73)【特許権者】
【識別番号】518357128
【氏名又は名称】イファ ユニバーシティ-インダストリー コラボレーション ファウンデーション
【氏名又は名称原語表記】EWHA UNIVERSITY - INDUSTRY COLLABORATION FOUNDATION
【住所又は居所原語表記】52, Ewhayeodae-gil Seodaemun-gu Seoul 03760, Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】カン,ゼ ウォン
(72)【発明者】
【氏名】パク,サン ヒョ
(72)【発明者】
【氏名】パク,スン ウク
(72)【発明者】
【氏名】イム,ファ ピョン
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2020/233659(WO,A1)
【文献】国際公開第2020/191034(WO,A1)
【文献】Jiancong (Daniel) Luo, and Yuwen He,CE2-related: Prediction refinement with optical flow for affine mode,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-N0236-r5,14th Meeting: Geneva, CH,2019年03月,pp.1-7
【文献】Jiancong (Daniel) Luo, and Yuwen He,CE4-2.1: Prediction refinement with optical flow for affine mode,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-O0070-CE4-2.1_WD_r3,14th Meeting: Geneva, CH,2019年07月,pp.1-21
【文献】Jie Chen, et al.,CE4-related: On PROF on/off control,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-P0408,16th Meeting: Geneva,2019年09月,pp.1-4
【文献】Xiaoyu Xiu, et al.,Non-CE4/AHG17: On high-level control flags of BDOF and PROF,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-P0524,16th Meeting: Geneva, CH,2019年09月,pp.1-6
【文献】Kyohei Unno, and Kei Kawamura,Non-CE4: A slice header flag disabling PROF,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-P0544,16th Meeting: Geneva, CH,2019年09月,pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
符号化したピクチャ(coded pictures)のシーケンス(sequence)をブロック単位で復号化する映像復号化方法において、
ビットストリームから第1のハイレベルシンタックス要素を復号化することで、アフィンモーション予測(affine motion prediction)が許容されるか否かをシーケンスレベルで設定するステップと、
前記第1のハイレベルシンタックス要素に依存し、前記ビットストリームから少なくとも1つのコーディングツールのそれぞれに対する1つ以上の第2のハイレベルシンタックス要素を復号化することで、前記少なくとも1つのコーディングツールの各々が許容されるか否かをピクチャレベルで設定するステップと、を含み、
ここで、前記少なくとも1つのコーディングツールは、アフィンモーション予測サンプルのサンプル単位調整(sample-by-sample adjustment)を含み、
さらに、前記シーケンスレベルの設定が、前記アフィンモーション予測が許容されることを示すとき、前記アフィンモーション予測を用いて符号化した対象ブロックの
2つまたは3つの制御点動きベクトル(affine motion prediction)を決定し、前記制御点動きベクトルを用いてサブブロック単位のアフィンモーション予測を実行して、前記対象ブロック内の各サブブロックに対するアフィン予測サンプルを生成するステップと、
前記ピクチャレベルの設定に基づき、前記対象ブロックを含む現在ピクチャに対して前記アフィンモーション予測サンプルのサンプル単位調整が許容されることが識別したとき、前記対象ブロックの前記制御点動きベクトルに基づいて前記各サブブロック内のサンプル位置に応じた動きを補償することで前記アフィン予測サンプルのサンプル値を修正するステップと、
前記修正されたサンプル値と前記ビットストリームから復号された残差信号に基づいてターゲットブロックを再構成するステップと、
を含むことを特徴とする映像復号化方法。
【請求項2】
前記第1のハイレベルシンタックス要素は、前記シーケンスのヘッダから復号化することを特徴とする請求項1に記載の映像復号化方法。
【請求項3】
前記アフィンモーション予測サンプルのサンプル単位調整に対する前記1つ以上の第2のハイレベルシンタックス要素を復号化することは、
前記第1のハイレベルシンタックス要素が、前記アフィンモーション予測が許容されることを示すとき、前記シーケンスのヘッダから前記アフィンモーション予測サンプルに対するサンプル単位調整が許容されるか否かを示すシーケンスレベルフラグを復号化するステップ、及び、
前記シーケンスレベルフラグに依存し、前記シーケンスに属するピクチャそれぞれのピクチャヘッダから前記アフィンモーション予測サンプルに対するサンプル単位調整が許容されるか否かを示すピクチャレベルフラグを復号化するステップを含むことを特徴とする請求項2に記載の映像復号化方法。
【請求項4】
前記第1のハイレベルシンタックス要素が前記アフィンモーション予測が許容されないことを示す、あるいは、前記シーケンスレベルフラグが前記サンプル単位調整が許容されないことを示すとき、前記ピクチャレベルフラグは前記ピクチャヘッダから復号化されず、前記サンプル単位調整が許容されないことを示す値に設定されることを特徴とする請求項3に記載の映像復号化方法。
【請求項5】
前記第1のハイレベルシンタックス要素が、前記アフィンモーション予測が許容されないことを示すとき、前記アフィンモーション予測及び前記少なくとも1つのコーディングツールのすべては前記シーケンス内のすべてのピクチャに対して許容されないことを特徴とする請求項1に記載の映像復号化方法。
【請求項6】
前記アフィン予測サンプルのサンプル値を修正するステップは、
前記対象ブロックの制御点動きベクトルを用い、修正しようとする対象サブブロック内のサンプル位置及び前記対象サブブロックの中心との間の差に起因する動きオフセットを生成するステップと、
前記対象サブブロック内のサンプル位置に対する横方向及び縦方向の勾配(gradient)を生成するステップと、
前記横方向及び縦方向の勾配及び前記動きオフセットを用い、前記対象サブブロック内のサンプル位置に対応するアフィン予測サンプルに対するサンプルオフセットを生成するステップと、
前記サンプル位置に対応するアフィン予測サンプルのサンプル値に前記サンプルオフセットを加算するステップと、を含むことを特徴とする請求項1に記載の映像復号化方法。
【請求項7】
前記対象サブブロック内のサンプル位置に対して生成した前記動きオフセットは、前記対象ブロックの他のサブブロック内の同一サンプル位置に対する動きオフセットとして再利用されることを特徴とする請求項6に記載の映像復号化方法。
【請求項8】
ピクチャ(coded pictures)のシーケンス(sequence)をブロック単位で符号化する方法において、
アフィンモーション予測(affine motion prediction)及び少なくとも1つのコーディングツールのすべてがディセーブル(disable)されるか否かを示すためのシーケンスレベルの第1のハイレベルシンタックス要素を前記シーケンスのヘッダに符号化するステップを含み、
ここで、前記少なくとも1つのコーディングツールは、アフィンモーション予測サンプルのサンプル単位調整(sample-by-sample adjustment)を含み、
さらに、前記第1のハイレベルシンタックス要素に依存し、前記少なくとも1つのコーディングツールの各々に対し、前記コーディングツールが許容されるか否かに対するシーケンスレベル又はピクチャレベルの設定を示すための1つ以上の第2のハイレベルシンタックス要素を符号化するステップと、
第1のハイレベルシンタックス要素が、前記少なくとも1つのコーディングツールの全てがディセーブル(disable)にならないことを示すとき、
前記アフィンモーション予測により符号化しようとする対象ブロックに対する
2つまたは3つの制御点動きベクトル(control point motion vector)を決定し、前記制御点動きベクトルを用いてサブブロック単位のアフィンモーション予測を実行することで、各サブブロックに対するアフィン予測サンプルを生成するステップと、
前記対象ブロックを含む現在ピクチャに対して前記アフィンモーション予測サンプルのサンプル単位調整が許容されるとき、前記対象ブロックの制御点動きベクトルに基づいて前記各サブブロック内のサンプル位置に応じた動きを補償することで、前記アフィン予測サンプルのサンプル値を修正するステップと、
前記修正されたサンプル値に基づいて残差信号を生成し、残差信号を符号化するステップと、
を含むことを特徴とする映像符号化方法。
【請求項9】
前記アフィンモーション予測サンプルのサンプル単位調整に対する前記1つ以上の第2のハイレベルシンタックス要素を符号化することは、
前記第1のハイレベルシンタックス要素が、前記アフィンモーション予測が許容されることを示すとき、前記アフィンモーション予測サンプルに対するサンプル単位調整が許容されるか否かを示すシーケンスレベルフラグを前記シーケンスのヘッダに符号化するステップ、及び、
前記シーケンスレベルフラグに依存し、前記シーケンスに属するピクチャそれぞれのピクチャヘッダに前記サンプル単位調整が許容されるか否かを示すピクチャレベルフラグを符号化するステップ、を含むことを特徴とする請求項
8に記載の映像符号化方法。
【請求項10】
前記アフィン予測サンプルのサンプル値を修正するステップは、
前記対象ブロックの制御点動きベクトルを用い、修正しようとする対象サブブロック内のサンプル位置及び前記対象サブブロックの中心との間の差に起因する動きオフセットを生成するステップと、
前記対象サブブロック内のサンプル位置に対する横方向及び縦方向の勾配(gradient)を生成するステップと、
前記横方向及び縦方向の勾配及び前記動きオフセットを用い、前記対象サブブロック内のサンプル位置に対応するアフィン予測サンプルに対するサンプルオフセットを生成するステップ、及び、
前記サンプル位置に対応するアフィン予測サンプルのサンプル値に前記サンプルオフセットを加算するステップと、を含むことを特徴とする請求項
8に記載の映像符号化方法。
【請求項11】
ビデオデコード装置にビデオデータを提供する方法であって、前記ビデオデータをビットストリームに符号化することと、ビットストリームをビデオデコード装置に送信することと、を含み、
前記ビデオ
データの符号化方法は、
アフィンモーション予測(affine motion prediction)及び少なくとも1つのコーディングツールのすべてがディセーブル(disable)されるか否かを示すためのシーケンスレベルの第1のハイレベルシンタックス要素を前記シーケンスのヘッダに符号化し、
ここで、前記少なくとも1つのコーディングツールは、アフィンモーション予測サンプルのサンプル単位調整(sample-by-sample adjustment)を含み、
さらに、前記第1のハイレベルシンタックス要素に依存し、前記少なくとも1つのコーディングツールの各々に対し、前記コーディングツールが許容されるか否かに対するシーケンスレベル又はピクチャレベルの設定を示すための1つ以上の第2のハイレベルシンタックス要素を符号化し、
第1のハイレベルシンタックス要素が、前記少なくとも1つのコーディングツールの全てがディセーブル(disable)にならないことを示すとき、前記アフィンモーション予測により符号化しようとする対象ブロックに対する2つまたは3つの制御点動きベクトル(control point motion vector)を決定し、前記制御点動きベクトルを用いてサブブロック単位のアフィンモーション予測を実行することで、各サブブロックに対するアフィン予測サンプルを生成し、
前記対象ブロックを含む現在ピクチャに対して前記アフィンモーション予測サンプルのサンプル単位調整が許容されるとき、前記対象ブロックの制御点動きベクトルに基づいて前記各サブブロック内のサンプル位置に応じた動きを補償することで、前記アフィン予測サンプルのサンプル値を修正し、
前記修正されたサンプル値に基づいて残差信号を生成し、残差信号を符号化する、ことを特徴とする
ビデオデータを提供する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、映像(ビデオ)の符号化及び復号化に係り、特に、インター予測の圧縮性能を改善するコーディングツール(coding tool)に関する。
【背景技術】
【0002】
ビデオデータは、音声データや静止画データなどに比べて多くのデータ量を有するため、圧縮のための処理なしにそれ自体を保存又は伝送するためにはメモリを含む多くのハードウェアリソースを必要とする。
【0003】
したがって、通常、ビデオデータを保存又は送信する際には、符号化器を用いてビデオデータを圧縮して保存又は送信し、復号化器では圧縮したビデオデータを受信して圧縮を解除して再生する。このようなビデオ圧縮技術としては、H.264/AVCをはじめ、H.264/AVCに比べて約40%程度の符号化効率を向上させたHEVC(High Efficiency Video Coding)が存在する。
【0004】
しかし、映像のサイズ及び解像度、フレームレートが徐々に増加しており、それによって符号化すべきデータ量も増加しているため、従来の圧縮技術よりも符号化効率が良く、画質改善効果も高い新しい圧縮技術が要求される。
【0005】
映像(ビデオ)符号化では、圧縮性能の改善のために予測符号化を主に使用する。現在ピクチャ内の既復元したサンプルを使用して符号化しようとする対象ブロックを予測するイントラ予測と、先に復元した参照ピクチャ内を用いて現在ブロックを予測するインター予測が存在する。特に、インター予測は、イントラ予測と比較して圧縮性能に優れ、ビデオ符号化に多く用いられる。
【0006】
本発明は、既存のインター予測の圧縮性能を改善するコーディングツールを提案する。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、インター予測の圧縮性能を改善するコーディングツールに係り、一側面として、並進モーション(translation motion)だけでなく、客体の様々な動きに対する補償が可能なコーディングツールに関する。
【課題を解決するための手段】
【0008】
本発明の一側面は、符号化したピクチャ(coded pictures)のシーケンス(sequence)をブロック単位で復号化する画像復号方法を提供する。前記方法は、ビットストリームから第1のハイレベルシンタックス要素を復号化することによってアフィンモーション予測(affine motion prediction)が許容されるか否かをシーケンスレベルで設定するステップと、前記第1のハイレベルシンタックス要素に依存して前記ビットストリームから少なくとも1つのコーディングツールの各々に対する1つ以上の第2のハイレベルシンタックス要素を復号化することによって、少なくとも1つのコーディングツールのそれぞれが許容されるか否かをピクチャレベルで設定するステップと、を含み、ここで、前記少なくとも1つのコーディングツールは、アフィンモーション予測サンプルのサンプル単位調整(sample-by-sample adjustment)を含み、さらに前記シーケンスレベルの設定が、前記アフィンモーション予測が許可されることを示すとき、前記アフィンモーション予測を用いて符号化した対象ブロックの複数の制御点動きベクトル(control point motion vector)を決定し、前記制御点動きベクトルを用いてサブブロック単位のアフィンモーション予測を実行して、前記対象ブロック内の各サブブロックに対するアフィン予測サンプルを生成するステップと、前記ピクチャレベルの設定に基づいて、前記対象ブロックを含む現在ピクチャに対して前記アフィンモーション予測サンプルのサンプル単位調整が許可されることを識別したとき、前記対象ブロックの制御点動きベクトルに基づいて前記各サブブロック内のサンプルの位置に応じた動きを補償することで前記アフィン予測サンプルのサンプル値を修正するステップと、を含む。
【0009】
本開示の他側面は、コーディングしたピクチャ(coded pictures)のシーケンス(sequence)をブロック単位で復号化する画像復号装置を提供する。前記装置は、ビットストリームから第1のハイレベルシンタックス要素を復号化することによってアフィンモーション予測(affine motion prediction)が許可されるか否かをシーケンスレベルで設定し、前記第1のハイレベルシンタックス要素に依存して前記ビットストリームから少なくとも1つのコーディングツールの各々に対する1つ以上の第2のハイレベルシンタックス要素を復号化することによって、前記少なくとも1つのコーディングツールの各々が許容されるか否かをピクチャレベルで設定する復号化部を含む。ここで、前記少なくとも1つのコーディングツールは、アフィンモーション予測サンプルのサンプル単位調整(sample-by-sample adjustment)を含む。さらに、前記装置は、前記シーケンスレベルの決定が、前記アフィンモーション予測が許容されることを示すとき、前記アフィンモーション予測を利用して符号化した対象ブロックの複数の制御点動きベクトル(control point motion vector)を決定し、前記制御点動きベクトルを利用して前記サブブロック単位のアフィンモーション予測を実行することによって、前記対象ブロック内の各サブブロックに対するアフィン予測サンプルを生成する予測部を含む。前記予測部は、前記ピクチャレベルの設定に基づいて、前記対象ブロックを含む現在ピクチャに前記アフィンモーション予測サンプルのサンプル単位調整が許可されることを識別したとき、前記対象ブロックの前記制御点動きベクトルに基づき、前記各サブブロック内のサンプル位置に応じた動きを補償することで、前記アフィン予測サンプルのサンプル値を修正する。
【0010】
本開示のまた他の側面は、ピクチャ(coded pictures)のシーケンス(sequence)をブロック単位で符号化する方法を提供する。前記方法は、アフィンモーション予測(affine motion prediction)及び少なくとも1つのコーディングツールのすべてがディセーブル(disable)になるか否かを示すためのシーケンスレベルの第1の高レベルシンタックス要素を前記シーケンスのヘッダに符号化するステップを含み、ここで、前記少なくとも1つのコーディングツールは、アフィンモーション予測サンプルのサンプル単位調整(sample-by-sample adjustment)を含み、さらに前記第1のハイレベルシンタックス要素に依存し、前記少なくとも1つのコーディングツールの各々に対して前記コーディングツールが許容されるか否かについてのシーケンスレベル又はピクチャレベルの設定を示すための1つ以上の第2のハイレベルシンタックス要素を符号化するステップと、第1のハイレベルシンタックス要素が、前記少なくとも1つのコーディングツールの全てがディセーブル(disable)にならないことを示す場合、符号化しようとする対象ブロックに対する制御点動きベクトル(control point motion vector)を決定し、前記制御点動きベクトルを利用してサブブロック単位のアフィンモーション予測を実行することで、各サブブロックに対するアフィン予測サンプルを生成するステップと、前記対象ブロックを含む現在ピクチャに対して前記アフィンモーション予測サンプルのサンプル単位調整が許容される場合、前記対象ブロックの制御点動きベクトルに基づいて前記各サブブロック内のサンプル位置に応じた動きを補償することで、前記アフィン予測サンプルのサンプル値を修正するステップと、を含む。
【図面の簡単な説明】
【0011】
【
図1】本発明の技術を具現できる映像符号化装置についての例示的なブロック図である。
【
図2】QTBTTT構造を用いてブロックを分割する方法を説明するための図である。
【
図4】現在ブロックの周辺ブロックについての例示図である。
【
図5】本発明の技術を具現できる映像復号化装置の例示的なブロック図である。
【
図6】本発明が提供する双方向オプティカルフロー(bi-prediction optical flow)の概念を説明するための例示図である。
【
図7】双方向オプティカルフローにてブロック境界サンプルに対する勾配(gradient)を導出する方法を説明するための例示図である。
【
図8】本発明が提供するアフィンモーション予測(affine motion prediction)を説明するための例示図である。
【
図9】本発明が提供するアフィンモーション予測(affine motion prediction)を説明するための例示図である。
【
図10】周辺ブロックの並進モーションベクトル(translation motion vector)からアフィンモーション予測のためのマージ候補を導出する方法を説明するための例示図である。
【
図11a】本発明が提供する照明補償の一実施例に係る照明補償パラメータを導出する方法を説明するための例示図である。
【
図11b】本発明が提供する照明補償の一実施例に係る照明補償パラメータを導出する方法を説明するための例示図である。
【
図11c】本発明が提供する照明補償の一実施例に係る照明補償パラメータを導出する方法を説明するための例示図である。
【
図12】本発明が提供する照明補償の他の実施例に係り、対象ブロックを複数の領域に分割する方法を説明するための例示図である。
【
図13】本発明が提供する照明補償の他の実施例に係り、対象ブロックを4つの領域に分割した場合に補償パラメータを導出するために使用する参照サンプルを決定する方法を説明するための例示図である。
【
図14】本発明が提供する照明補償の他の実施例に係り、対象ブロックを4つの領域に分割した場合、4つの領域に対する照明補償パラメータを用いて照明補償を実行する方法を説明するための例示図である。
【
図15】本発明が提供する照明補償の他の実施例に係り、対象ブロックを4つの領域に分割した場合、4つの領域に対する照明補償パラメータを用いて照明補償を実行する方法を説明するための例示図である。
【
図16】本発明が提供する照明補償の他の実施例に係り、対象ブロックを2つの領域に分割した場合に各領域に対する照明補償を実行する方法を説明するための例示図である。
【
図17】本発明が提供する照明補償の他の実施例に係り、対象ブロックを2つの領域に分割した場合に各領域に対する照明補償を実行する方法を説明するための例示図である。
【
図18】本発明が提供する照明補償の他の実施例に係り、対象ブロックが4つ以上の複数個の領域に分割した場合に、各領域に対する照明補償を行う方法を説明するための例示図である。
【発明を実施するための形態】
【0012】
以下、本発明の一部の実施例を例示的な図面を通して詳しく説明する。各図面の構成要素に識別符号を付加する際に、同一の構成要素に対しては、たとえ他の図面に表示されても可能な限り同一の符号を有するようにしていることに留意しなければならない。なお、本発明の説明にて、関連する公知の構成又は機能についての具体的な説明が本発明の要旨を曖昧にすると判断する場合には、その詳しい説明は省く。
【0013】
図1は、本開示の技術を具現する映像符号化装置についての例示的なブロック図である。以下では、
図1を参照し、映像符号化装置と、この装置のサブ構成について説明する。
【0014】
映像符号化装置は、ピクチャー分割部110、予測部120、減算器130、変換部140、量子化部145、並べ替え部150、エントロピー符号化部155、逆量子化部160、逆変換部165、加算器170、ループフィルタ部180、及びメモリ190を含んで構成する。
【0015】
映像符号化装置の各構成要素は、ハードウェア又はソフトウェアで具現してもよく、ハードウェア及びソフトウェアの組み合わせで具現してもよい。さらに、各構成要素の機能がソフトウェアで具現され、マイクロプロセッサが各構成要素に対応するソフトウェアの機能を実行するように具現してもよい。
【0016】
1つの画像(ビデオ)は、複数のピクチャを含む1つ以上のシーケンスで構成する。各ピクチャは複数の領域に分割され、各領域毎に符号化が行われる。例えば、1つのピクチャは、1つ以上のタイル(Tile)又は/及びスライス(Slice)に分割する。ここで、1つ以上のタイルをタイルグループ(Tile Group)として定義する。各タイル又は/及びスライスは、1つ以上のCTU(Coding Tree Unit)に分割する。そして、各CTUは、ツリー構造によって1つ以上のCU(Coding Unit)に分割する。各CUに適用する情報はCUのシンタックスとして符号化され、1つのCTUに含まれるCUに共通に適用する情報はCTUのシンタックスとして符号化する。また、1つのスライス内のすべてのブロックに共通に適用する情報は、スライスヘッダのシンタックスとして符号化され、1つ以上のピクチャを構成するすべてのブロックに適用する情報は、ピクチャパラメータセット(PPS、Picture Parameter Set)又はピクチャヘッダに符号化する。さらに、複数のピクチャからなるシーケンスに共通に参照する情報は、シーケンスパラメータセット(SPS、Sequence Parameter Set)に符号化する。さらに、1つのタイル又はタイルグループに共通に適用する情報は、タイル又はタイルグループヘッダのシンタックスとして符号化してもよい。SPS、PPS、スライスヘッダ、タイル又はタイルグループヘッダに含まれるシンタックスは、ハイレベル(high level)シンタックスと称する。
【0017】
ピクチャー分割部110は、CTU(Coding Tree Unit)の大きさを決定する。CTUのサイズに関する情報(CTU size)は、SPS又はPPSのシンタックスとして符号化して映像復号化装置に伝達する。
【0018】
ピクチャー分割部110は、映像を構成する各ピクチャを予め決めた大きさを有する複数のCTU(Coding Tree Unit)に分割した後に、ツリー構造(tree structure)を用いてCTUを繰り返し(recursively)分割する。ツリー構造におけるリーフノード(leaf node)が符号化の基本単位であるCU(coding unit)となる。
【0019】
ツリー構造では、上位ノード(あるいは親ノード)が同じサイズの4つの下位ノード(あるいは子ノード)に分割するマスクワッドツリー(QuadTree, QT)、又は上位ノードが2つの下位ノードに分割するバイナリツリー(BinaryTree, BT)、又は上位ノードが1:2:1の比率で3つの下位ノードに分割するターナリーツリー(TernaryTree, TT)、又はこれらのQT構造、BT構造、及びTT構造のうちの2つ以上を混用した構造である。例えば、QTBT(QuadTree plus BinaryTree)構造を使用することができ、又はQTBTTT(QuadTree plus BinaryTree TernaryTree)構造を使用する。ここで、BTTTを合わせてMTT(Multiple-Type Tree)と称する。
【0020】
図2は、QTBTTT分割ツリー構造を示す。
図2に示すように、CTUはまずQT構造に分割するマスクワッドツリー分割は、分割ブロック(splitting block)のサイズがQTで許容されるリーフノードの最小ブロックサイズ(MinQTSize)に達するまで繰り返す。QT構造の各ノードが下位レイヤーの4つのノードに分割するか否かを指示する第1のフラグ(QT_split_flag)は、エントロピー符号化部155によって符号化され、映像復号化装置にシグナリングされる。QTのリーフノードがBTで許容されるルートノードの最大ブロックサイズ(MaxBTSize)よりも大きくない場合、BT構造又はTT構造のうちのいずれか1つ以上にさらに分割する。BT構造及び/又はTT構造では、複数の分割方向が存在する。例えば、該当ノードのブロックが横に分割する方向と縦に分割する方向の2つが存在する。
図2に示すように、MTT分割を開始すると、ノードを分割したか否かを指示する第2のフラグ(mtt_split_flag)と、分割した場合には追加に分割方向(vertical又はhorizontal)を示すフラグ及び/又は分割タイプ(BinaryもしくはTernary)を示すフラグが、エントロピー符号化部155によって符号化され、映像復号化装置にシグナリングされる。対案して、各ノードを下位レイヤーの4つのノードに分割するか否かを指示する第1のフラグ(QT_split_flag)を符号化する前に、そのノードを分割するか否かを指示するCU分割フラグ(split_cu_flag)が符号化されてもよい。CU分割フラグ(split_cu_flag)値を分割にならないことを指示する場合、該当ノードのブロックが分割ツリー構造におけるリーフノード(leaf node)となり、符号化の基本単位であるCU(coding unit)となる。CU分割フラグ(split_cu_flag)値を分割することを指示する場合、映像符号化装置は、前述したように第1のフラグから符号化を開始する。
【0021】
ツリー構造の他の例としてQTBTを使用する場合、該当ノードのブロックを同一サイズの2つのブロックに横に分割するタイプ(すなわち、symmetric horizontal splitting)と縦に分割するタイプ(すなわち、symmetric vertical splitting)の2つがある。BT構造の各ノードを下位レイヤーのブロックに分割するか否かを指示する分割フラグ(split_flag)、及び分割するタイプを指示する分割タイプ情報がエントロピー符号化部155によって符号化されて映像復号化装置に伝達される。一方、該当ノードのブロックを互いに非対称型の2つのブロックに分割するタイプが追加でさらに存在してもよい。非対称型には、該当ノードのブロックを1:3のサイズ比率を有する2つの長方形ブロックに分割する形態を含んでもよく、あるいは、該当ノードのブロックを対角線方向に分割する形態を含んでもよい。
【0022】
CUは、CTUからのQTBT又はQTBTTT分割によって様々なサイズを有する。以下では、符号化又は復号化しようとするCU(すなわち、QTBTTTのリーフノード)に該当するブロックを「現在ブロック」と称する。QTBTTT分割の採用によって現在ブロックの形状は正方形だけでなく長方形でもよい。
【0023】
予測部120は、現在ブロックを予測して予測ブロックを生成する。予測部120は、イントラ予測部122とインター予測部124を含む。
【0024】
イントラ予測部122は、現在ブロックを含む現在ピクチャ内で現在ブロックの周辺に位置するサンプル(参照サンプル)を用いて現在ブロック内のサンプルを予測する。予測方向によって複数のイントラ予測モードが存在する。例えば、
図3に示すように、複数のイントラ予測モードは、プラナー(planar)モードとDCモードを含む2つの非方向性モードと65個の方向性モードを含む。各予測モードによって使用する周辺サンプルと演算式が異なるように定義する。
【0025】
イントラ予測部122は、現在ブロックを符号化するために使用するイントラ予測モードを決定する。一部の例で、イントラ予測部122は、いろんなイントラ予測モードを使用して現在ブロックを符号化し、テストしたモードから使用する適切なイントラ予測モードを選択してもよい。例えば、イントラ予測部122は、いろいろテストしたイントラ予測モードに対するレートディストーション(rate-distortion)分析を用いてレート歪み値を演算し、テストしたモードの中で最良のレート歪み特徴を有するイントラ予測モードを選択してもよい。
【0026】
イントラ予測部122は、複数のイントラ予測モードの中から1つのイントラ予測モードを選択し、選択したイントラ予測モードによって決定する周辺サンプル(参照サンプル)と演算式を用いて現在ブロックを予測する。選択したイントラ予測モードに関する情報は、エントロピー符号化部155によって符号化されて映像復号化装置に伝達される。
【0027】
インター予測部124は、動き補償過程を通じて現在ブロックに対する予測ブロックを生成する。インター予測部124は、現在ピクチャよりも前に符号化及び復号化した参照ピクチャ内で現在ブロックと最も類似したブロックを探索し、その探索したブロックを用いて現在ブロックに対する予測ブロックを生成する。そして、現在ピクチャ内の現在ブロックと参照ピクチャ内の予測ブロックとの間の変位(displacement)に該当する動きベクトル(motion vector)を生成する。一般に、動き推定はルマ(luma)成分に対して行われ、ルマ成分に基づいて演算したモーションベクトルはルマ成分及びクロマ成分の両方に対して使用する。現在ブロックを予測するために用いる参照ピクチャに関する情報及び動きベクトルに関する情報を含む動き情報は、エントロピー符号化部155によって符号化されて映像復号化装置に伝達される。
【0028】
インター予測部124は、予測の精度を高めるために、参照ピクチャ又は参照ブロックに対する補間を行ってもよい。すなわち、連続する2つの整数サンプル間のサブサンプルは、その2つの整数サンプルを含む連続した複数の整数サンプルにフィルタ係数を適用して補間する。補間した参照ピクチャに対して現在ブロックと最も類似したブロックを探索する過程を実行すると、動きベクトルは整数サンプル単位の精度(precision)ではなく小数単位の精度まで表現する。動きベクトルの精度又は解像度(resolutio)は、符号化しようとする対象領域、例えばスライス、タイル、CTU、CUなどの単位ごとに異なるように設定する。このような適応的動きベクトル解像度を適用する場合、各対象領域に適用する動きベクトル解像度に関する情報は、対象領域ごとにシグナリングしなければならない。例えば、対象領域がCUである場合、各CU毎に適用した動きベクトル解像度に関する情報をシグナリングする。動きベクトル解像度に関する情報は、後述する差分動きベクトルの精度を示す情報である。
【0029】
一方、インター予測部124は、双方向予測(bi-prediction)を用いてインター予測を行う。双方向予測の場合、2つの参照ピクチャと各参照ピクチャ内で現在ブロックと最も類似したブロック位置を表す2つの動きベクトルを使用する。インター予測部124は参照ピクチャリスト0(RefPicList0)及び参照ピクチャリスト1(RefPicList1)からそれぞれ第1の参照ピクチャ及び第2の参照ピクチャを選択し、各参照ピクチャ内で現在ブロックと類似のブロックを探索して第1の参照ブロックと第2の参照ブロックを作成する。そして、第1の参照ブロックと第2の参照ブロックを平均又は加重平均して現在ブロックに対する予測ブロックを生成する。そして、現在ブロックを予測するために使用した2つの参照ピクチャに関する情報及び2つの動きベクトルに関する情報を含む動き情報をコーディングユニット150に伝達する。ここで、参照ピクチャリスト0は、既復元ピクチャのうちからディスプレイ順で現在ピクチャより前のピクチャで構成し、参照ピクチャリスト1は、既復元のピクチャのうちからディスプレイ順で現在ピクチャ以降のピクチャで構成してもよい。しかしながら、必ずしもこれに限定せず、ディスプレイ順序上で現在ピクチャより後の既復元ピクチャを参照ピクチャリスト0に追加でさらに含み、逆に現在ピクチャより前の既復元ピクチャを参照ピクチャリスト1に追加でさらに含んでもよい。
【0030】
動き情報を符号化するのに所要のビット量を最小化するために様々な方法を使用する。
【0031】
例えば、現在ブロックの参照ピクチャと動きベクトルが周辺ブロックの参照ピクチャ及び動きベクトルと同一場合には、その周辺ブロックを識別できる情報を符号化することで、現在ブロックの動き情報を復号化装置に伝達できる。このような方法を「マージモード(merge mode)」とする。
【0032】
マージモードで、インター予測部124は、現在ブロックの周辺ブロックから既に決定した個数のマージ候補ブロック(以下、「マージ候補」とする)を選択する。
【0033】
マージ候補を誘導するための周辺ブロックとしては、
図4に示すように、現在ピクチャ内で現在ブロックに隣接する左側ブロックL、上段ブロックA、右上段ブロックAR、左下段ブロックBL、左上段ブロックALのうち、全部又は一部を用いる。さらに、現在ブロックが位置する現在ピクチャではなく参照ピクチャ(現在ブロックを予測するために使用した参照ピクチャと同じでも異なってもよい)内に位置するブロックをマージ候補として使用してもよい。例えば、参照ピクチャ内で現在ブロックと同じ位置にあるブロック(co-located block)、又はその同じ位置のブロックに隣接するブロックを、マージ候補として追加でさらに使用する。
【0034】
インター予測部124は、このような周辺ブロックを用いて予め決まった個数のマージ候補を含むマージリストを構成する。マージリストに含まれるマージ候補の中から現在ブロックの動き情報として使用するマージ候補を選択し、選択した候補を識別するためのマージインデックス情報を生成する。生成したマージインデックス情報は、エントロピー符号化部155によって符号化されて復号化装置に伝達される。
【0035】
動き情報を符号化するためのまた他の方法はAMVPモードである。
【0036】
AMVPモードでは、インター予測部124は、現在ブロックの周辺ブロックを用いて現在ブロックの動きベクトルに対する予測動きベクトル候補を導出する。予測動きベクトル候補を導くために使用する周辺ブロックとしては、
図4に示す現在ピクチャ内で現在ブロックに隣接する左側ブロックL、上段ブロックA、右上段ブロックAR、左下段ブロックBL、左上段ブロックALのうち、全部又は一部を用いる。さらに、現在ブロックが位置する現在ピクチャではなく、参照ピクチャ(現在ブロックを予測するために使用した参照ピクチャと同じでも異なっていてもよい)内に位置するブロックを、予測動きベクトル候補を導出するために使用する周辺ブロックとして使用してもよい。例えば、参照ピクチャ内の現在ブロックと同じ位置にあるブロック(co-located block)、又はその同じ位置のブロックに隣接するブロックを使用する。
【0037】
インター予測部124は、この周辺ブロックの動きベクトルを用いて予測動きベクトル候補を導き出し、予測動きベクトル候補を用いて現在ブロックの動きベクトルに対する予測動きベクトルを決定する。そして、現在ブロックの動きベクトルから予測動きベクトルを減算して差分動きベクトルを算出する。
【0038】
予測動きベクトルは、予測動きベクトル候補に予め定義した関数(例えば、中央値、平均値演算など)を適用して求める。この場合、映像復号化装置も予め定義した関数を知っている。また、予測動きベクトル候補を導出するために使用する周辺ブロックは既に符号化及び復号化が完了したブロックであるため、映像復号化装置もその周辺ブロックの動きベクトルも既に知っている。したがって、映像符号化装置は、予測動きベクトル候補を識別するための情報を符号化する必要がない。したがって、この場合、差分動きベクトルに関する情報と現在ブロックを予測するために使用した参照ピクチャに関する情報を符号化する。
【0039】
一方、予測動きベクトルは、予測動きベクトル候補のうちのいずれか1つを選択する方法で決定してもよい。この場合、差分動きベクトルに関する情報及び現在ブロックを予測するために使用した参照ピクチャに関する情報と共に、選択した予測動きベクトル候補を識別するための情報を追加で符号化する。
【0040】
減算器130は、現在ブロックからイントラ予測部122又はインター予測部124によって生成した予測ブロックを減算して残差ブロックを生成する。
【0041】
変換部140は、残差ブロックを1つ以上のサブブロックに分割し、変換を1つ以上のサブブロックに適用して変換ブロックの残差値をサンプルドメインから周波数ドメインに変換する。周波数ドメインで、変換したブロックは、1つ以上の変換係数値を含む係数ブロック(coefficient block)又は変換ブロック(transform block)と称する。変換には二次元変換カーネルを使用してもよく、横方向変換と縦方向にそれぞれ一次元変換カーネルを使用してもよい。変換カーネルは、離散コサイン変換(DCT)、離散サイン変換(DST)などに基づく。
【0042】
変換部140は、残差ブロックの全体サイズを変換単位として用いて残差ブロック内の残差信号を変換する。あるいは、残差ブロックを複数個のサブブロックに分割し、そのサブブロックを変換単位として使用してサブブロック内の残差信号を変換してもよい。
【0043】
一方、変換部140は、残差ブロックに対して横方向と縦方向に個別に変換を行う。変換のために、様々なタイプの変換関数又は変換マトリックスを使用する。例えば、横方向変換と縦方向変換のための変換関数のペアをMTS(Multiple Transform Set)と定義する。変換部140は、MTSのうち、変換効率が最も良い1つの変換関数ペアを選択し、横方向及び縦方向にそれぞれ残差ブロックを変換する。MTSの中から選択した変換関数ペアに関する情報(mts_idx)は、エントロピー符号化部155によって符号化され、映像復号化装置にシグナリングされる。
【0044】
量子化部145は、変換部140から出力する変換係数を量子化パラメータを用いて量子化し、量子化した変換係数をエントロピー符号化部155に出力する。量子化部145は、任意のブロック又はフレームに対して変換なしに、関連する残差ブロックを直ちに量子化してもよい。量子化部145は、変換ブロック内の変換係数の位置によって互いに異なる量子化係数(スケーリング値)を適用してもよい。二次元に配列した量子化した変換係数に適用する量子化係数の行列は、符号化されて映像復号化装置にシグナリングされる。
【0045】
並べ替え部150は、量子化した残差値に対して係数値の並べ替えを行う。並べ替え部150は、係数スキャニング(coefficient scanning)を介して2次元の係数アレイを1次元の係数シーケンスに変更する。例えば、並べ替え部150では、千鳥状スキャン(Zig-Zag Scan)又は対角線スキャン(Diagonal Scan)を用いてDC係数から高周波領域の係数までスキャンして1次元の係数シーケンスを出力する。変換単位のサイズ及びイントラ予測モードによって、千鳥状スキャンの代わりに2次元の係数アレイを列方向にスキャンする垂直スキャン、2次元のブロック形状係数を行方向にスキャンする水平スキャンを使用してもよい。すなわち、変換単位のサイズ及びイントラ予測モードによって、千鳥状スキャン、対角線スキャン、垂直スキャン、及び水平スキャンの中から使用するスキャン方法を決定してもよい。
【0046】
エントロピー符号化部155は、CABAC(Context-based Adaptive Binary Arithmetic Code)、指数ゴロム(Exponential Golomb)などの様々な符号化方式を用いて、並べ替え部150から出力した1次元の量子化した変換係数のシーケンスを符号化することによってビットストリームを生成する。
【0047】
また、エントロピー符号化部155は、ブロック分割に関するCTUサイズ、CU分割フラグ、QT分割フラグ、MTT分割タイプ、MTT分割方向などの情報を符号化し、映像復号化装置が映像符号化装置と同じようにブロックを分割できるようにする。また、エントロピー符号化部155は、現在ブロックをイントラ予測によって符号化したのか、それともインター予測によって符号化したかの如何を指示する予測タイプに関する情報を符号化し、予測タイプによってイントラ予測情報(すなわち、イントラ予測モードに関する情報)又はインター予測情報(マージモードの場合はマージインデックス、AMVPモードの場合は参照ピクチャインデックス及び差分動きベクトルに関する情報)を符号化する。また、エントロピー符号化部155は、量子化に関する情報、すなわち量子化パラメータに関する情報及び量子化行列に関する情報を符号化する。
【0048】
逆量子化部160は、量子化部145から出力する量子化した変換係数を逆量子化して変換係数を生成する。逆変換部165は、逆量子化部160から出力する変換係数を周波数ドメインから空間ドメインに変換して残差ブロックを復元する。
【0049】
加算部170は、復元した残差ブロックと予測部120によって生成した予測ブロックを加算して現在ブロックを復元する。復元した現在ブロック内のサンプルは、次の順序のブロックをイントラ予測するときの参照サンプルとして使用する。
【0050】
ループフィルタ部180は、ブロックベースの予測及び変換/量子化によって発生するブロッキングアーチファクト(blocking artifacts)、リンギングアーチファクト(ringing artifacts)、ぼかしアーチファクト(blurring artifacts)等を低減するために復元したサンプルに対するフィルタリングを実行する。ループフィルタ部180は、デブロッキングフィルタ182、SAO(Sample Adaptive Offset)フィルタ184、ALF(Adaptive Loop Filter)186のうちの1つ以上を含む。
【0051】
デブロッキングフィルタ182は、ブロック単位の符号化/復号化によって発生するブロッキング現象(blocking artifact)を除去するために復元したブロック間の境界をフィルタリングし、SAOフィルタ184はデブロッキングフィルタリングした画像に対して追加のフィルタリングを実行する。SAOフィルタ184は、損失符号化(lossy coding)によって発生する復元したサンプルと元本サンプルとの間の差を補償するために使用するフィルタであり、各復元したサンプルにそれに対応するオフセットに加算される方式で実行する。ALF186は、フィルタリングを実行する対象サンプル及びその対象サンプルの周囲サンプルにフィルタ係数を適用して対象サンプルに対するフィルタリングを実行する。ALF186は、画像に含まれるサンプルを所定のグループに分割した後、該当グループに適用する1つのフィルタを決定してグループ毎に差別的にフィルタリングを行う。ALFに使用するフィルタ係数に関する情報は符号化され、映像復号化装置にシグナリングされる。
【0052】
ループフィルタ部180を介してフィルタリングした復元ブロックは、メモリ190に保存する。1つのピクチャ内のすべてのブロックが復元すると、復元したピクチャは、後で符号化しようとするピクチャ内のブロックをインター予測するための参照ピクチャとして使用される。
【0053】
図5は、本開示の技術を具現する映像復号化装置の例示的な機能ブロック図である。以下では、
図5を参照し、映像復号化装置とこの装置の下位構成について説明する。
【0054】
映像復号化装置は、エントロピー復号化部510、並べ替え部515、逆量子化部520、逆変換部530、予測部540、加算器550、ループフィルタ部560、及びメモリ570を含むように構成する。
【0055】
図1の映像符号化装置と同様に、映像復号化装置の各構成要素は、ハードウェア又はソフトウェアで具現するか、ハードウェア及びソフトウェアの組み合わせで具現する。さらに、各構成要素の機能をソフトウェアで具現し、マイクロプロセッサが各構成要素に対応するソフトウェアの機能を実行するように具現してもよい。
【0056】
エントロピー復号化部510は、映像符号化装置によって生成したビットストリームを復号化してブロック分割に関する情報を抽出することにより復号化しようとする現在ブロックを決定し、現在ブロックを復元するために必要な予測情報と残差信号に関する情報などを抽出する。
【0057】
エントロピー復号化部510は、SPS(Sequence Parameter Set)又はPPS(Picture Parameter Set)からCTUサイズに関する情報を抽出してCTUのサイズを決定し、ピクチャを決定したサイズのCTUに分割する。そして、CTUをツリー構造の最上位レイヤー、すなわちルートノードとして決定し、CTUの分割情報を抽出することにより、ツリー構造を用いてCTUを分割する。
【0058】
例えば、QTBTTT構造を用いてCTUを分割する場合、まずQTの分割に関連する第1のフラグ(QT_split_flag)を抽出して各ノードを下位レイヤーの4つのノードに分割する。そして、QTのリーフノードに該当するノードについては、MTTの分割に関連する第2のフラグ(MTT_split_flag)及び分割方向(vertical / horizontal)及び/又は分割タイプ(binary / ternary)情報を抽出して当該リーフノードをMTT構造に分割する。これにより、QTのリーフノード以下の各ノードをBT又はTT構造に繰り返し(recursively)分割する。
【0059】
また他の例として、QTBTTT構造を用いてCTUを分割する場合、まずCUを分割するか否かを指示するCU分割フラグ(split_cu_flag)を抽出し、該当ブロックが分割した場合、第1のフラグ(QT_split_flag)を抽出してもよい。分割の過程で、各ノードは、0回以上の繰り返しのQT分割後に0回以上の繰り返しのMTT分割が発生する。例えば、CTUはすぐにMTT分割が発生するか、逆に複数回のQT分割のみが発生し得る。
【0060】
他の例として、QTBT構造を用いてCTUを分割する場合、QTの分割に関連する第1のフラグ(QT_split_flag)を抽出して各ノードを下位レイヤーの4つのノードに分割する。そして、QTのリーフノードに該当するノードについては、BTにさらに分割するか否かを指示する分割フラグ(split_flag)及び分割方向情報を抽出する。
【0061】
一方、エントロピー復号化部510は、ツリー構造の分割を通じて復号化しようとする現在ブロックを決定すると、現在ブロックがイントラ予測したか、それともインター予測したかを指示する予測タイプに関する情報を抽出する。予測タイプ情報がイントラ予測を指示する場合、エントロピー復号化部510は、現在ブロックのイントラ予測情報(イントラ予測モード)に対するシンタックス要素(elemenet)を抽出する。予測タイプ情報がインター予測を指示する場合、エントロピー復号化部510は、インター予測情報に対するシンタックス要素、すなわち動きベクトル及びその動きベクトルが参照する参照ピクチャを示す情報を抽出する。
【0062】
また、エントロピー復号化部510は、量子化に関する情報、及び残差信号に関する情報として現在ブロックの量子化した変換係数に関する情報を抽出する。
【0063】
並べ替え部515は、映像符号化装置によって実行した係数スキャニング順序の逆順で、エントロピー復号化部510でエントロピー復号化した1次元の量子化した変換係数のシーケンスを再び2次元の係数アレイ(つまり、ブロック)に変更する。
【0064】
逆量子化部520は、量子化パラメータを用いて量子化した変換係数を逆量子化する。逆量子化部520は、2次元に配列した量子化した変換係数に対して互いに異なる量子化係数(スケーリング値)を適用してもよい。逆量子化部520は、映像符号化装置から量子化係数(スケーリング値)の行列を量子化した変換係数の2次元アレイに適用して逆量子化を行う。
【0065】
逆変換部530は、逆量子化した変換係数を周波数ドメインから空間ドメインに逆変換して残差信号を復元することにより、現在ブロックに対する復元した残差ブロックを生成する。また、MTSが適用した場合、逆変換部530は、映像符号化装置からシグナリングされたMTS情報(mts_idx)を用いて、横及び縦方向にそれぞれ適用する変換関数又は変換行列を決定し、決定した変換関数を用いて横方向及び縦方向に変換ブロック内の変換係数に対して逆変換を実行する。
【0066】
予測部540は、イントラ予測部542及びインター予測部544を含む。イントラ予測部542は、現在ブロックの予測タイプがイントラ予測であるときに活性化し、インター予測部544は、現在ブロックの予測タイプがインター予測であるときに活性化する。
【0067】
イントラ予測部542は、エントロピー復号化部510から抽出したイントラ予測モードに対するシンタックス要素から複数のイントラ予測モードのうち、現在ブロックのイントラ予測モードを決定し、イントラ予測モードによって現在ブロック周囲の参照サンプルを利用して現在ブロックを予測する。
【0068】
インター予測部544は、エントロピー復号化部510から抽出したイントラ予測モードに対するシンタックス要素を用いて現在ブロックの動きベクトルとその動きベクトルが参照する参照ピクチャを決定し、動きベクトルと参照ピクチャを利用して現在ブロックを予測する。
【0069】
加算器550は、逆変換部から出力する残差ブロックと、インター予測部又はイントラ予測部から出力する予測ブロックを加算して現在ブロックを復元する。復元した現在ブロック内のサンプルは、後で復号化するブロックをイントラ予測する際の参照サンプルとして活用する。
【0070】
ループフィルタ部560は、デブロッキングフィルタ562、SAOフィルタ564、及びALF566のうちの少なくとも1つを含む。デブロッキングフィルタ562は、ブロック単位の復号化によって発生するブロッキング現象(blocking artifact)を除去するために、復元したブロック間の境界をデブロッキングフィルタリングする。SAOフィルタ564は、損失符号化(lossy coding)によって発生する復元したサンプルと原本サンプルとの間の差を補償するために、デブロッキングフィルタリング後の復元したブロックにそれに対応するオフセットに加算される方式でフィルタリングを実行する。ALF566は、フィルタリングを実行する対象サンプル及びその対象サンプルの周囲サンプルにフィルタ係数を適用し、対象サンプルに対するフィルタリングを実行する。ALF566は、画像に含まれるサンプルを所定のグループに分割した後に、該当グループに適用する1つのフィルタを決定してグループ毎に差別的にフィルタリングを行う。ALFのフィルタ係数は、ビットストリームから復号化したフィルタ係数に関する情報を利用して決定される。
【0071】
ループフィルタ部560を介してフィルタリングした復元ブロックはメモリ570に保存する。1つのピクチャ内のすべてのブロックが復元すると、復元したピクチャは、後で符号化しようとするピクチャ内のブロックをインター予測するための参照ピクチャとして使用する。
【0072】
以下の開示は、インター予測の圧縮性能を向上させるためのコーディングツールと関連し、映像符号化装置のインター予測部124及び映像復号化装置のインター予測部544で行う。以下で使用する「対象ブロック(target block)」という用語は、上で使用した現在ブロック又はコーディングユニットCUと同じ意味で使用し、又はコーディングユニットの一部の領域を意味してもよい。
【0073】
I. 双方向オプティカルフロー(Bi-directional Optical Flow)
双方向オプティカルフローは、映像を構成するサンプル又は客体が一定の速度で移動し、サンプル値の変化がほとんどないという仮定に基づき、双方向動き予測を用いて予測したサンプルの動きをさらに補償する技術である。
【0074】
図6は、BIOの基本的な概念を説明するための参照図である。
【0075】
対象ブロックに対する(通常の)双方向動き予測によって参照ピクチャRef0とRef1で現在ピクチャの符号化する対象ブロックと最も類似した対応領域(すなわち、参照ブロック)を指す双方向の動きベクトルMV
0、MV
1が決定したと仮定する。該当の2つの動きベクトルは、対象ブロック全体の動きを表す値である。
図6の例で、対象ブロック内のサンプルPに対応するものとして動きベクトルMV
0が指す参照ピクチャRef
0内のサンプルはP
0であり、対象ブロック内のサンプルPに対応する動きベクトルMV
1が指す参照ピクチャRef
1内のサンプルはP
1である。そして、
図6でサンプルPに対する動きが対象ブロックの全体的な動きとは少し異なると仮定する。例えば、
図6のRef
0内のサンプルAに位置する物体が現在ピクチャの対象ブロック内のサンプルPを通過してRef
1内のサンプルBに移動したとすると、サンプルA及びサンプルBはかなり類似した値を有する。なお、この場合、対象ブロック内のサンプルPと最も類似したRef
0内の地点は、双方向動きベクトルMV
0が指すP
0ではなく、P
0を所定の変位ベクトルv
xt
0、v
yt
1だけ移動させたAであり、対象ブロック内のサンプルPと最も類似したRef
1内の地点は、双方向動きベクトルMV
1が指すP
1ではなく、P
1を所定の変位ベクトル-v
xt
0、-v
yt
1だけ移動させたBである。t
0 とt
1 は、現在ピクチャに基づいてそれぞれRef
0 とRef
1 に対する時間軸距離を意味し、POC(Picture Order Count)に基づいて算出する。以下では、(v
x、v
y)を「オプティカルフロー(optical flow)」と称する。
【0076】
現在ピクチャ内対象ブロックのサンプルP値を予測する際に、2つの参照サンプルA、Bの値を用いると、双方向動きベクトルMV0、MV1が指す参照サンプルP0、P1を利用するよりも、もっと正確な予測が可能である。
【0077】
対象ブロック内サンプルi,jに対応するもので動きベクトルMV0が指す参照ピクチャRef0内サンプルの値をI(0)(i,j)と定義し、対象ブロック内サンプルi,jに対応するものとして動きベクトルMV1が指す参照ピクチャRef1内のサンプルの値をI(1)(i,j)と定義する。
【0078】
BIO動きベクトルvx、vyが対象ブロック内のサンプルに対応することを指す参照ピクチャRef0内のサンプルAの値はI(0)(i+vxt0、j+vyt0)と定義することができ、参照ピクチャRef1内のサンプルBの値は、I(1)(i‐vxt1、j‐vyt1)として定義する。ここで、テイラー級数の一次項のみを用いて線形近似(linear approximation)を行うと、AとBを[数1]のように表現する。
【0079】
【0080】
ここで、Ix
(k)とIy
(k)(k=0,1)はRef0及びRef1の(i,j)位置における横及び縦方向の勾配値を示す。t0 及びt1 は、現在ピクチャに基づいてそれぞれRef0及びRef1に対する時間軸距離を意味し、POC(Picture Order Count)に基づいて算出する。式で t0 = POC(current)‐POC(Ref0), t1 = POC(Ref1)‐POC(current) である。
【0081】
ブロック内の各サンプルの双方向オプティカルフロー(vx、vy)は、サンプルAとサンプルBの差値として定義するΔを最小化する解として決定する。[数1]で導き出したAとBの線形近似を用いてΔを[数2]で定義する。
【0082】
【0083】
簡略に表記するために、上記[数2]の各項におけるサンプルの位置(i,j)は省く。
【0084】
より堅牢な(robust)オプティカルフロー推定のために、動きが局所的に周囲のサンプルと一貫しているという仮定を導入する。現在予測しようとするサンプル(i,j)に対するBIO動きベクトルは、サンプル(i,j)を中心とする一定サイズのマスクΩ内に存在するすべてのサンプル(i’、j’)に対する[数2]の差分値△を考慮する。すなわち、現在のサンプル(i,j)に対するオプティカルフローは、次の[数3]のように、マスクΩ内の各サンプルに対して得られた差分値Δ[i’,j’]の二乗和である目的関数Φ(vx,vy)を最小にするベクトルとして決定する。
【0085】
【0086】
本開示の双方向オプティカルフローは、双方向予測に使用する2つの参照ピクチャのうちの1つは現在ピクチャよりもディスプレイ順序上先行し、もう1つは現在ピクチャよりも遅く、2つの参照ピクチャから現在ピクチャまでの距離が互いに同一、すなわち、各参照ピクチャと現在ピクチャとの間のPOC(picture order count)の差が同じの場合に適用する。したがって、t0とt1は無視できる。
【0087】
さらに、本開示の双方向オプティカルフローは、ルマ(luma)成分にのみ適用してもよい。
【0088】
本開示の双方向オプティカルフローは、双方向予測を適用する対象ブロックに対してピクセルベースではなくサブブロックベースで実行する。サブブロックのサイズは、2×2、4×4、8×8など多様なサイズを有するが、以下では説明の便宜のためにサブブロックのサイズを4×4と仮定する。
【0089】
オプティカルフローを実行する前に、映像符号化装置のインター予測部124は、前述した双方向予測を用いて対象ブロックに対する2つの参照ブロックを生成する。2つの参照ブロックのうちの第1の参照ブロックは、対象ブロックの第1の動きベクトルMV0を用いて参照ピクチャRef0から生成した予測サンプルからなるブロックを意味し、第2の参照ブロックは対象ブロックの第2の動きベクトルMV1を用いて参照ピクチャRef1から生成した予測サンプルからなるブロックを意味する。
【0090】
インター予測部124は、第1の参照ブロックと第2の参照ブロック内の予測サンプルの横及び縦方向勾配値を用い、対象ブロックを構成する4×4サブブロックのそれぞれに対してオプティカルフローと称する(vx、vy)を演算する。オプティカルフロー(vx、vy)は、参照ピクチャRef0から予測サンプルと参照ピクチャRef1からの予測サンプル間の差が最小になるように決定する。インター予測部124は、4×4サブブロックに対して算出した(vx、vy)とは、4×4サブブロック内の予測サンプルの勾配を用い、サブブロックに対する双方向予測サンプルを修正するためのサンプルオフセットを導出する。
【0091】
具体的には、インター予測部124は、[数4]を用いて(i,j)位置のサンプル値の横及び縦方向勾配を演算する。
【0092】
【0093】
kは0又は1であり、I(0)(i,j)及びI(1)(i,j)はそれぞれ第1の参照ブロック及び第2の参照ブロック内(i,j)位置のサンプル値を意味する。Shift1は、shift1 = max(6, bitDepth-6)のように、ルマ成分に対するビット-デプス(bit-depth)から導出する値である。
【0094】
各参照ブロックの境界に位置するサンプルの勾配を導くために、第1の参照ブロックと第2の参照ブロックの境界の外郭のサンプルが必要である。したがって、
図6に示すように、各参照ブロックは、左右にそれぞれ1列ずつ、そして上下にそれぞれ1行ずつ拡張する。演算量を減らすために、拡張した部分の各サンプルは、参照ブロック内の最も近い位置のサンプル又は整数サンプルでパディングする。さらに、各参照ブロックの境界の外郭のサンプル位置における勾配も、最も近い位置のサンプルに該当する勾配でパディングする。
【0095】
インター予測部124は、
図7に示すような4×4サブブロックをカバーする6×6ウィンドウ内の横及び縦の勾配を用い、勾配の自己相関(auto-correlation)と交差相関(cross- correlation)に該当するS1、S2、S3、S5、S6を演算する。
【0096】
【0097】
ここで、Ωはサブブロックをカバーするウィンドウを意味する。また、下の[数6]に示すように、Ψx(i,j)は、第1の参照ブロックと第2の参照ブロック内の(i,j)位置における横方向勾配値の和を、Ψy(i,j)は、第1の参照ブロックと第2の参照ブロック内の(i,j)位置における縦方向勾配値の和を意味し、θ(i,j)は第2の参照ブロック内の(i,j)位置のサンプル値と第1の参照ブロック内の(i,j)位置のサンプル値との差を意味する。
【0098】
【0099】
ここで、naとnbはビットデプスから導出する値で、min(1, bitDepth-11)及びmin(4, bitDepth-8)の値を有する。
【0100】
インター予測部124は、S1、S2、S3、S5、S6を用いて、[数7]を介して、4×4サブブロックに対するオプティカルフロー(vx、vy)を演算する。
【0101】
【0102】
ここで、
、
、
である。
は切捨て関数である。
である。
【0103】
対象ブロックの4×4サブブロック内の各サンプル位置(x,y)における予測サンプルを修正するためのサンプルオフセットは、[数8]のように、その4×4サブブロックに対して演算したオプティカルフロー及びサンプル位置(x、y)における勾配値を用いて演算する。式8にて、rnd()は四捨五入(round-off)演算を意味する。
【0104】
【0105】
インター予測部124は、(x,y)位置におけるサンプルオフセットb(x,y)と、第1の参照ブロック及び第2の参照ブロック内の予測サンプルI(0)(x,y)及びI(1)(x,y)を用いて[数9]のように最終予測サンプルpred(x,y)を生成する。
【0106】
【0107】
ここで、shiftはMax(3, 15‐BitDepth)であり、Ooffsetは四捨五入演算のための値でshiftの半分である。
【0108】
上で説明したように、双方向オプティカルフロー技法は、双方向予測に使用した動き情報(2つの動きベクトル及び2つの参照ピクチャ)を利用して予測した予測サンプルの値を用いる。したがって、映像復号化装置のインター予測部544も、映像符号化装置から受信した双方向予測に使用する動き情報(動きベクトル、参照ピクチャ)を用いて映像符号化装置と同一の方式で双方向オプティカルフローを行う。映像符号化装置から映像復号化装置への、双方向オプティカルフロープロセスのための追加情報のシグナリングは要求されない。
【0109】
II.アフィンモーション予測(Affine Motion Prediction)
これまで述べたインター予測は並進モーション(translation motion)モデルを反映した動き予測である。すなわち、横方向(x軸方向)及び縦方向(y軸方向)への動きを予測する技法である。しかしながら、実際には、並進モーションの以外に、回転(rotation)、ズームイン(zoom-in)、又はズームアウト(zoom-out)のような多様な形態の動きが存在する。本開示の一側面は、このような様々な形態の動きをカバーするアフィンモーション予測を提供する。
【0110】
図8は、アフィンモーション予測を説明するための例示図である。
【0111】
アフィンモーション予測のための2つのタイプのモデルが存在する。1つは、
図8(A)に示すように、現在符号化しようとする対象ブロックの左上角(top-left corner)と右上角(top-right corner)の2つの制御点(control point)の動きベクトル、すなわち、4個のパラメータを利用するモデルである。もう1つは、
図8(B)に示すように、対象ブロックの左上角、右上角、左下角(bottom-left corner)の3つの制御点の動きベクトル、すなわち、6つのパラメータを用いるモデルである。
【0112】
4パラメータアフィンモデルは、[数10]のように表現する。対象ブロック内のサンプル位置(x、y)における動きは、[数10]によって演算する。ここで、対象ブロックの左上段サンプルの位置を(0,0)と仮定する。
【0113】
【0114】
6パラメータアフィンモデルは、[数11]のように表現する。対象ブロック内のサンプル位置(x、y)における動きは、[数11]によって演算する。
【0115】
【0116】
ここで、(mv0x、mv0y)は左上角制御点の動きベクトル、(mv1x、mv1y)は右上角制御点の動きベクトル、(mv2x、mv2y)は左下角制御点の動きベクトルである。Wは対象ブロックの横長から決定する定数、Hは対象ブロックの縦長から決定する定数である。
【0117】
アフィンモーション予測は、対象ブロック内の各サンプル毎に、[数10]又は[数11]を介して演算した動きベクトルを用いて実行する。
【0118】
代案として、演算の複雑さを減らすために、
図9に示すように、対象ブロックから分割したサブブロック単位で行われてもよい。例示的に、サブブロックのサイズは4×4であってもよいし、又は2×2や8×8であってもよい。以下では、対象ブロックに対して4×4サブブロック単位でアフィンモーション予測を行うことを例に説明する。この例は説明の便宜のためだけのものであり、本発明を限定するものではない。
【0119】
サブブロック単位アフィンモーション予測にて、各サブブロックの動きベクトル(アフィンモーションベクトル)は、[数10]又は[数11]の(x、y)に各サブブロックの中心位置を代入することで演算する。ここで、中心位置は、サブブロックの実際の中心点(center point)であってもよく、その中心点の右下段のサンプル位置であってもよい。例えば、左下段のサンプルの座標が(0,0)である4×4サブブロックの場合、サブブロックの中心位置は(1.5、1.5)でもよく、(2,2)でもよい。各サブブロックに対する予測ブロックは、該当サブブロックのアフィンモーションベクトル(mvx、mvy)を用いて生成する。
【0120】
動きベクトル(mvx、mvy)は、1/16サンプル精度(precision)を有するように設定する。この場合、[数1]又は[数2]を介して算出した動きベクトル(mvx、mvy)は1/16サンプル単位に四捨五入する。一方、アフィンモーション予測でも、一般インター予測と同様に適応的動きベクトル解像度を適用する。この場合、対象ブロックの動きベクトル解像度、すなわち動きベクトルの精度に関する情報は、対象ブロックごとにシグナリングする。
【0121】
アフィンモーション予測は、輝度(luma)成分だけでなく色差(chroma)成分に対しても実行する。4:2:0ビデオフォーマットの場合、輝度成分に対して4×4サブブロック単位のアフィンモーション予測が行われたら、色差成分に対するアフィンモーション予測は2×2サブブロック単位で行われる。色差成分の各サブブロックの動きベクトル(mvx、mvy)は、対応する輝度成分の動きベクトルから導き出す。代案として、色差成分のアフィンモーション予測のためのサブブロックのサイズは、輝度成分の場合と同一であってもよい。輝度成分に対して4×4サブブロック単位でアフィンモーション予測が行われたら、色差成分に対しても4×4サブブロックサイズでアフィンモーション予測が行われる。この場合、色差成分に対する4×4サイズのサブブロックは、輝度成分に対する4つの4×4サブブロックに対応するので、色差成分のサブブロックに対する動きベクトル(mvx、mvy)は、対応する輝度成分の4つのサブブロックの動きベクトルの平均演算を通じて算出する。
【0122】
映像符号化装置は、イントラ予測、インター予測(並進モーション予測)、アフィンモーション予測などを行い、RD(rate-distortion)コスト(cost)を演算して最適な予測方法を選択する。アフィンモーション予測を行うために、映像符号化装置のインター予測部124は、2つのタイプのモデルのうち、どのタイプを使用するかを決定し、決定したタイプによって2つ又は3つの制御点を決定する。インター予測部1214は、制御点の動きベクトルを用いて対象ブロック内の4×4サブブロックのそれぞれに対する動きベクトル(mvx、mvy)を演算する。そして、各サブブロックの動きベクトル(mvx、mvy)を用いてサブブロック単位で参照ピクチャ内で動き補償を行うことで、対象ブロック内の各サブブロックに対する予測ブロックを生成する。
【0123】
映像符号化装置のエントロピー符号化部155は、対象ブロックにアフィンモーション予測が適用されたか否かを示すフラグ、アフィンモデルのタイプを示すタイプ情報、及び各制御点の動きベクトルを示す動き情報等を含むアフィン関連シンタックス要素を符号化して映像復号化装置に伝達する。タイプ情報と制御点の動き情報は、アフィンモーション予測が行われる場合にシグナリングされ、制御点の動きベクトルはタイプ情報によって決定した個数だけシグナリングされる。また、適応的動きベクトル解像度を適用する場合、対象ブロックのアフィンモーションベクトルに対する動きベクトル解像度情報がシグナリングされる。
【0124】
映像復号化装置は、シグナリングしたシンタックスを用いてアフィンモデルのタイプと制御点動きベクトル(control point motion vector)を決定し、[数10]又は[数11]を用いて対象ブロック内の各4×4サブブロックに対する動きベクトル(mvx、mvy)を演算する。もし、対象ブロックのアフィンモーションベクトルに対する動きベクトル解像度情報がシグナリングされた場合、動きベクトル(mvx、mvy)は、四捨五入などの演算に通じて動きベクトル解像度情報によって識別される精度で修正する。
【0125】
映像復号化装置は、各サブブロックに対する動きベクトル(mvx、mvy)を用いて参照ピクチャ内で動き補償を行うことで、各サブブロックに対する予測ブロックを生成する。
【0126】
制御点の動きベクトルを符号化するための所要のビット量を減らすために、前記の一般的なイントラ予測(並進モーション予測)のような方式を適用する。
【0127】
一例として、マージモードの場合、映像符号化装置のインター予測部124は、対象ブロックの周辺ブロックから各制御点の動きベクトルを導出する。インター予測部124は、例えば、
図4に示す対象ブロックの周辺サンプルL、BL、A、AR、ALから予め定義した個数のマージ候補を導き出すことで、マージ候補リストを生成する。リストに含まれるマージ候補のそれぞれは、2つ又は3つの制御点の動きベクトルのペアに対応する。
【0128】
まず、インター予測部124は、アフィンモードで決定した周辺ブロックのうち、アフィンモードで予測した周辺ブロックの制御点動きベクトルからマージ候補を導出する。一部の実施例で、アフィンモードで予測した周辺ブロックから導出するマージ候補の個数は制限される。例えば、インター予測部124は、L及びBLのうちの1つ、ならびにA、AR、及びALのうちの1つ、合計2つのマージ候補をアフィンモードで予測した周辺ブロックから導出する。優先順位は、L、BLの順、及びA、AR、ALの順である。
【0129】
一方、マージ候補の総数が3個以上の場合、インター予測部124は周辺ブロックの並進モーションベクトル(translational motion vector)から不十分な数だけのマージ候補を導出する。
【0130】
図10は、周辺ブロックの並進モーションベクトル(translation motion vector)からアフィンモーション予測のためのマージ候補を導出する方法を説明するための例示図である。
【0131】
インター予測部124は、周辺ブロックグループ{B2、B3、A2}、周辺ブロックグループ{B1、B0}、周辺ブロックグループ{A1、A0}からそれぞれ1つずつの制御点動きベクトルCPMV1、CPMV2、CPMV3を導出する。一例として、各周辺ブロックグループ内の優先順位は、B2、B3、A2の順、B1、B0の順、そしてA1、A0の順である。また、参照ピクチャ内の同じ位置ブロック(collocated block)Tからまた1つの制御点動きベクトルCPMV4を導出する。インター予測部124は、4つの制御点動きベクトルのうち、2つ又は3つの制御点動きベクトルを組み合わせて不足する個数だけのマージ候補を生成する。組み合わせの優先順位は下の通りである。各グループ内の要素は、左上角、右上角、左下角制御点の動きベクトルの順で並ぶ。
【0132】
{CPMV1、CPMV2、CPMV3}、{CPMV1、CPMV2、CPMV4}、{CPMV1、CPMV3、CPMV4}、
{CPMV2、CPMV3、CPMV4}、{CPMV1、CPMV2}、{CPMV1、CPMV3}
【0133】
インター予測部124は、マージ候補リストからマージ候補を選択して対象ブロックに対するアフィンモーション予測を行う。選択した候補が2つの制御点動きベクトルからなる場合、4パラメータモデルを用いてアフィンモーション予測を行う。一方、選択した候補が3つの制御点動きベクトルからなる場合、6パラメータモデルを用いてアフィンモーション予測を行う。映像符号化装置のエントロピー符号化部155は、マージ候補リスト内のマージ候補のうち、選択したマージ候補を示すインデックス情報を符号化して映像復号装置にシグナリングする。
【0134】
映像復号化装置のエントロピー復号化部510は、映像符号化装置からシグナリングしたインデックス情報を復号化する。映像復号化装置のインター予測部544は、映像符号化装置と同様の方式でマージ候補リストを構成し、インデックス情報によって指示されるマージ候補に対応する制御点動きベクトルを用いてアフィンモーション予測を行う。
【0135】
他の例として、AMVPモードの場合、映像符号化装置のインター予測部124は、対象ブロックに対するアフィンモデルのタイプと制御点動きベクトルを決定する。そして、対象ブロックの実際の制御点動きベクトルと各制御点の予測動きベクトルとの差である差分動きベクトル(motion vector difference)を演算し、各制御点に対する差分動きベクトルを符号化して伝送する。このために、映像符号化装置のインター予測部124は、予め定義した個数のアフィンAMVPリストを構成する。対象ブロックが4パラメータタイプの場合、リストに含まれる候補はそれぞれ2つの制御点動きベクトルのペアからなる。一方、対象ブロックが6パラメータタイプの場合、リストに含まれる候補はそれぞれ3つの制御点動きベクトルのペアからなる。アフィンAMVPリストは、前述のマージ候補リストを構成する方法と類似した、周辺ブロックの制御点動きベクトル又は並進モーションベクトルを用いて導出する。
【0136】
しかしながら、アフィンAMVPリストに含まれる候補を導出するために、
図4の周辺ブロックのうち、対象ブロックと同じ参照ピクチャを参照する周辺ブロックのみを考慮する制約事項が存在する。
【0137】
また、AMVPモードでは対象ブロックのアフィンモデルタイプを考慮しなければならない。映像符号化装置は、対象ブロックのアフィンモデルタイプが4パラメータタイプの場合、周辺ブロックのアフィンモデルを用いて2つの制御点動きベクトル(対象ブロックの左上角及び右上角制御点動きベクトル)を導出する。対象ブロックのアフィンモデルタイプが6パラメータタイプの場合、周辺ブロックのアフィンモデルを用いて3つの制御点動きベクトル(対象ブロックの左上角、右上角及び左下角制御点動きベクトル)を導出する。
【0138】
周辺ブロックが4パラメータタイプの場合、周辺ブロックの2つの制御点動きベクトルを用い、対象ブロックのアフィンモデルタイプによって2つ又は3つの制御点動きベクトルを予測する。例えば、[数10]で表す周辺ブロックのアフィンモデルを使用する。[数10]にて、(mv0x、mv0y)及び(mv1x、mv1y)は、それぞれ周辺ブロックの左上角(top-left corner)及び右上角制御点の動きベクトルに置き換わる。Wは周辺ブロックの横方向の長さに置き換わる。対象ブロックの各制御点に対する予測動きベクトルは、(x、y)に対象ブロックの該当制御点の位置と周辺ブロックの左上角位置との間の差を入力することによって導出する。
【0139】
周辺ブロックが6パラメータタイプの場合、周辺ブロックの3つの制御点動きベクトルを用い、対象ブロックのアフィンモデルタイプによって2つ又は3つの制御点動きベクトルを予測する。例えば、[数11]で表す周辺ブロックのアフィンモデルを用いる。[数11]にて、(mv0x、mv0y)、(mv1x、mv1y)、及び(mv2x、mv2y)は、それぞれ周辺ブロックの左上角、右上角及び左下角の制御点動きベクトルに置き換わる。W及びHは、それぞれ周辺ブロックの横長及び縦長に置き換わる。対象ブロックの各制御点に対する予測動きベクトルは、(x、y)に対象ブロックの該当制御点の位置と周辺ブロックの左上角位置との間の差を入力することで導出する。
【0140】
映像符号化装置のインター予測部124は、アフィンAMVPリストから1つの候補を選択し、実際各制御点の動きベクトルと選択した候補の対応する制御点の予測動きベクトルとの間の差分動きベクトルを生成する。映像符号化装置のエントロピー符号化部155は、対象ブロックのアフィンモデルタイプを示すタイプ情報、アフィンAMVPリスト内の候補の中から選択した候補を指示するインデックス情報、及び各制御点に対応する差分動きベクトルを符号化して映像復号化装置に伝達する。
【0141】
映像復号化装置のインター予測部544は、映像符号化装置からシグナリングした情報を用いてアフィンモデルタイプを決定し、各制御点の差分動きベクトルを生成する。そして、映像符号化装置と同様の方式でアフィンAMVPリストを生成し、アフィンAMVPリスト内でシグナリングしたインデックス情報によって指示される候補を選択する。映像復号化装置のインター予測部544は、選択した候補の各制御点の予測動きベクトルと対応する差分動きベクトルを加算して各制御点の動きベクトルを算出する。
【0142】
III.アフィンモーション予測サンプルのサンプル単位の調整
対象ブロックに対するサブブロック単位アフィンモーション予測を述べた。本開示のまた他の側面は、サブブロック単位アフィンモーション予測から生成した予測サンプルのサンプル値をサンプル単位に調整することに関連する。アフィンモーション予測が行われた単位であるサブブロック内で、各サンプルの位置に応じた動きを追加で補償する。
【0143】
対象ブロックに対するサブブロック単位アフィンモーション予測の結果として生成したいずれか1つのサブブロック内のサンプル値をI(x,y)とするとき、映像符号化装置は各サンプル位置における横方向及び縦方向勾配gx(i,j)とgy(i,j)を計算する。勾配演算のために[数12]を使用する。
【0144】
【0145】
予測サンプルを調整するためのサンプルオフセット(sample offset)ΔI(i,j)は、次の式のように演算する。
【0146】
【0147】
ここで、Δmv(i,j)は、サンプル(i,j)におけるアフィンモーションベクトルとサブブロックの中心位置におけるアフィンモーションベクトルとの間の差、すなわち、動きオフセットを意味し、対象ブロックのアフィンモデルタイプによって、[数10]又は[数11]を適用して演算する。すなわち、[数10]又は[数11]の(x、y)=(i,j)を入力したときの動きベクトルから(x、y)にサブブロック中心位置を入力したときの動きベクトルを減算して計算する。言い換えると、Δmv(i,j)は、[数10]及び[数11]の(x、y)をサブブロックの中心位置からサンプル位置(i,j)までの横方向及び縦方向のオフセットで置き換え、最後の項である「+ mv0x」と「+ mv0y」を除き、式を通じて演算する。中心位置は、サブブロックの実際の中心点(center point)であってもよく、その中心点の右下段のサンプル位置であってもよい。
【0148】
一方、Δmv(i,j)の演算に用いられる対象ブロックの各制御点の動きベクトル及び、サンプル位置(i,j)とサブブロック中心位置との間の差は、全てのサブブロックに対して同一である。したがって、Δmv(i,j)値は、1つのサブブロック、例えば、一番目のサブブロックに対してのみ演算され、他のサブブロックに対して再使用され得る。
【0149】
本開示の技法は、物体が一定の速度で移動し、サンプル値の変化が一定(smooth)であるという仮定に基づく。したがって、Δmv(i,j)のx成分(Δmvx)とy成分(Δmvy)にそれぞれ横方向及び縦方向でサンプル勾配値を乗じて横方向へのサンプル変化量と縦方向へのサンプル変化量を求め、2つの変化量を加えてサンプルオフセットΔI(i,j)を計算する。
【0150】
最後に予測サンプルの値は次のように演算する。
【0151】
【0152】
アフィンモーション予測サンプルに対するサンプル単位調整を適用する場合、映像符号化装置のインター予測部124及び映像復号化装置のインター予測部544は、前述したような処理を行ってアフィンモーション予測を通じて生成した予測サンプルのサンプル値を修正する。勾配値は、アフィンモーション予測に通じて生成した予測サンプルから導出し、Δmv(i,j)は対象ブロックの制御点動きベクトルから導出する。したがって、映像符号化装置から映像復号化装置への本技法のプロセスのための追加的な情報のシグナリングは要求されない。
【0153】
IV.アフィンモーション予測サンプルに対する地域照明補償(Local Illumination Compensation)
地域照明補償技術は、現在ブロックと予測ブロックの照明変化に関する線形モデルを用いて変化量を補償する符号化技術である。映像符号化装置のインター予測部124は、対象ブロックの動きベクトル(並進モーションベクトル)を用いて参照ピクチャ内で参照ブロックを決定し、参照ブロックの周辺(上側と左側)の既復元のサンプル及び対象ブロックの周囲(上側と左側)の既復元のサンプルを用いて照明補償のための線形モデルのパラメータを求める。
【0154】
参照ブロック周辺の既復元のサンプルをx、対象ブロック周辺の対応する既復元のサンプルをyとするとき、[数15]のようにyと(Ax+b)の差の二乗和を最小にするパラメータ(A,b)を導出する。
【0155】
【0156】
最終予測サンプルは、[数16]のように、対象ブロックの動きベクトルによって生成した予測ブロック(参照ブロック)内のサンプルにAの重みとbのオフセットを適用して生成する。[数16]にて、pred[x][y]は対象ブロックの動きベクトルによって生成した(x,y)位置の予測サンプルであり、predLIC[x][y]は照明補償後の最終予測サンプルである。
【0157】
【0158】
本開示のまた他の側面は、このような照明補償技術をアフィンモーション予測と結合する技術に関連する。
【0159】
前述したように、対象ブロックに対してサブブロック単位アフィンモーション予測を適用する場合、サブブロックそれぞれに対して動きベクトルを生成する。各サブブロックごとに該当動きベクトルを利用して照明補償パラメータを導出して照明補償を実行する場合、演算の複雑さが増加するだけでなく、深刻な遅延問題も発生する。各サブブロック内の復元したサンプルは、次回のサブブロックの照明補償のために必要であるため、隣接するサブブロックが復元するまで(すなわち、サブブロックに対する予測ブロックと残差ブロックの両方を復元するまで)、次回のサブブロックに対する照明補償プロセスを保留しなければならないからである。本開示は、このような問題の改善に関する。
【0160】
図11a~cは、本開示の一実施例による照明補償パラメータを導出するために参照ブロックの位置を決定する様々な例を示す。本実施例は、対象ブロックに対して1つの照明補償パラメータセット(A、b)を導出し、対象ブロック内の全てのサブブロックに対して同じパラメータを適用する。すなわち、対象ブロック全体を1つの照明補償パラメータを介して修正する。
【0161】
図11aに示すように、映像符号化装置のインター予測部124は、対象ブロック内の左上段に位置するサブブロックのアフィンモーションベクトル又は対象ブロックの左上角制御点動きベクトルを用いて参照ピクチャ内の参照ブロックの位置を決定する。決定した参照ブロックの周りの既復元のサンプルがパラメータの導出に使用される。代案として、
図11bに示すように、対象ブロック内の中央サブブロックのアフィンモーションベクトルを用いて参照ブロックの位置を決定する。参照ブロックの位置を決定すると、参照ブロックの上側と左側に隣接する既復元のサンプル及び対象ブロックの上側と左側に隣接する対応する既復元のサンプルを用いて照明補償パラメータを導出する。
【0162】
また他の例として、対象ブロック内の複数のサブブロックを使用してもよい。
図11cのように、インター予測部124は、対象ブロック内の境界に位置するサブブロック(境界サブブロック)のアフィンモーションベクトルを用いて境界サブブロックのそれぞれに対応する参照サブブロックを決定する。照明補償パラメータを導出するためのサンプルは、対象ブロック内の境界サブブロック及びそれに対応する参照サブブロックにそれぞれ隣接する既復元のサンプルから抽出する。対象ブロック内の上側境界に位置するサブブロック及びそれに対応する参照サブブロックに対しては、上側に隣接する既復元のサンプルから抽出し、対象ブロック内の左側境界に位置するサブブロック及びそれに対応する参照サブブロックに対しては、左側に隣接する既復元のサンプルから抽出する。
【0163】
本実施例は、対象ブロック周辺の既復元のサンプルと参照ブロック周辺の既復元のサンプルを用いて照明補償パラメータが導出されるため、前述した遅延問題を解決できる。しかしながら、サブブロック単位のアフィンモーション予測を適用した対象ブロックにただ1つの照明補償パラメータを適用することは、符号化効率を潜在的に低下させ得る。下で説明する別の実施例は、わずかな複雑さの増加に対するトレードオフ(trade off)として符号化効率の増加をもたらす。
【0164】
本開示の他の実施例によると、映像符号化装置のインター予測部124は、対象ブロックを複数の領域(region)に分割する。各領域は、アフィンモーション予測を実行した単位であるサブブロックを1つ以上含む。インター予測部124は、複数の領域に対する照明補償パラメータを算出し、算出した照明補償パラメータを用いて対象ブロック内の領域又はサブブロック単位で照明補償を行う。
【0165】
1. 対象ブロック分割
映像符号化装置のインター予測部124は、対象ブロックをアフィンモーション予測が行われた単位であるサブブロックを1つ以上含む複数の領域に分割する。
【0166】
対象ブロックは、その対象ブロックの制御点動きベクトルを用いて分割する。
図12は、制御点動きベクトルを用いた対象ブロック分割の例である。
図12(A)を参照すると、対象ブロックの左上角制御点動きベクトルMV
0と右上角制御点動きベクトルMV
1との間の角度が鈍角であると(90度より大きいと)、対象ブロックは縦方向に分割する。例えば、対象ブロックは2つの領域に二等分する。そうでなければ、対象ブロックは縦方向に分割されない。また、
図12(B)を参照すると、左上角制御点動きベクトルMV
0と左下角制御点動きベクトルMV
2との間の角度が鈍角であると、対象ブロックは横方向に分割、例えば二等分に分割する。そうでなければ、対象ブロックは横方向に分割されない。もし、対象ブロックのアフィンモデルタイプが4パラメータの場合、左下角制御点動きベクトルMV
2は、[数1]の(x,y)に対象ブロックの左下角サンプル座標を入力して導出する。
【0167】
このように制御点動きベクトルがなす角度に基づき、インター予測部124は対象ブロックを分割しないか、2つの領域(横分割の場合は左側領域と右側領域、縦分割の場合は上側領域と下側領域)、又は4つの領域に分割する。2つのベクトルの内積が0より小さいと鈍角であるので、インター予測部124は、制御点動きベクトル間の角度が鈍角であるか否かを2つのベクトル間の内積演算を通じて判断する。
【0168】
前記の例では、2つの制御点動きベクトル間の角度が鈍角の場合、対象ブロックを分割するものとして例示したが、逆に鋭角(90度より小さい角度)の場合に分割してもよい。
【0169】
また、対象ブロックの分割のために対象ブロックのサイズを考慮する。例えば、横方向の長さが予め設定の閾値を超えると、対象ブロックを縦方向に分割し、縦長が予め設定の閾値を超えると、対象ブロックを横方向に分割する。対象ブロックを分割するために、対象ブロックのサイズと制御点動きベクトルとの間の角度と共に対象ブロックの分割に用いてもよい。例えば、映像符号化装置は、対象ブロックの横長及び/又は縦長が予め設定の閾値より大きい場合にのみ、制御点動きベクトル間の角度を使用して分割の如何を決定してもよい。他の例として、映像符号化装置は、横長が予め設定の閾値を超える場合に、対象ブロックの左上角及び右上角制御点動きベクトルの間の角度を用いて縦方向への分割の如何を決定する。そして、縦長が予め設定の閾値を超える場合に、対象ブロックの左上角及び左下角制御点動きベクトルの間の角度を用いて縦方向への分割の如何を決定する。
【0170】
一方、対象ブロックの制御点動きベクトルを用いて対象ブロックを複数の領域に分割するものとして説明したが、本発明はこれに限定されない。例えば、左上角制御点動きベクトルMV0、右上角制御点動きベクトルMV1、及び左下角制御点動きベクトルMV2の代わりに、対象ブロック内の左上段サブブロック、右上段サブブロック及び左下段サブブロックのアフィンモーションベクトルを用いてもよい。
【0171】
図12では、対象ブロックが横方向又は縦方向に二等分することを例示したが、本発明がこれに限定するものではない。例えば、対象ブロックは、横方向に複数個及び/又は縦方向に複数個(nは1以上)に分割してもよい。あるいは、対象ブロックは、アフィンモーション予測が行われたサブブロック単位に分割してもよい。この場合、1つのサブブロックが1つの領域を構成する。
【0172】
対象ブロックから分割した各領域は、アフィンモーション予測が行われたサブブロックのサイズ以上でなければならない。つまり、各領域は1つ以上のサブブロックで構成しなければならない。例えば、サブブロックのサイズが4×4の場合、領域のサイズは2m×2n(mとnは2以上の整数)である。
【0173】
対象ブロックが分割されない場合には、前述した第1の実施例に従って照明補償パラメータを導出する。以下では、対象ブロックが分割した場合に照明補償パラメータを導出する方法を説明する。
【0174】
2. 照明補償パラメータ誘導及び照明補償
映像符号化装置は、複数の領域に対する照明補償パラメータを算出する。複数の照明補償パラメータを用い、対象ブロック内の領域又はサブブロック単位で照明補償を行う。映像符号化装置は、複数の領域のそれぞれに対し、補償パラメータを導出するために使用する現在ピクチャ及び参照ピクチャ内の既復元のサンプル(参照サンプル)を決定する。現在ピクチャ内の参照サンプルは、対象ブロックに隣接する既復元のサンプルから選択する。対象ブロックの左側の境界から離間している領域の場合、対象ブロックの左側に隣接する既復元のサンプルを参照サンプルとして選択する。対象ブロックの上側境界から離間している領域の場合、対象ブロックの上側に隣接する既復元のサンプルを参照サンプルとして選択する。
【0175】
一方、参照ピクチャ内の参照サンプルは、対象ブロックの制御点動きベクトル又はその制御点動きベクトルから導出した1つ以上の動きベクトルを利用して選択する。以下では、対象ブロックの様々な分割形態によって照明補償パラメータを導出して照明補償を行う方法を説明する。
【0176】
2.1 対象ブロックの4つの領域に分割した場合
まず、横長及び縦長がそれぞれW、Hである対象ブロックが横方向及び縦方向にそれぞれ分割されて合計4つの領域で構成する場合を例に説明する。
【0177】
映像符号化装置は、各領域に対する補償パラメータを導出するために使用する現在ピクチャ及び参照ピクチャ内の既復元のサンプル(参照サンプル)を決定する。
【0178】
図13は、補償パラメータを導出するために使用する参照サンプルを決定する方法を説明するための例示図である。
【0179】
対象ブロック内左上段領域の場合、映像符号化装置は現在ピクチャ内で左上段領域の上側に隣接するT0~Tw/2‐1と左側に隣接するL0~LH/2‐1を、補償パラメータを誘導するための参照サンプルとして選択する。そして、左上段領域の代表動きベクトルを用いて参照ピクチャ内で左上段領域に対応する参照領域を決定し、その参照領域の上側及び左側に隣接する既復元のサンプルを参照サンプルとして選択する。ここで、左上段領域の代表動きベクトルとしては、対象ブロックの左上角制御点動きベクトルMV0である。
【0180】
右上段領域の場合、映像符号化装置は、右上段領域の上側に隣接するTw/2~Tw-1を、補償パラメータを導くための少なくとも一部の参照サンプルとして選択する。また、対象ブロックの左側に隣接するL0~LH/2-1を参照サンプルとして追加で選択する。右上段領域の左側に隣接する既復元のサンプルは存在しないので、対象ブロックの左側のL0~LH/2-1を右上段領域の左側の参照サンプルとしてパディングする。そして、映像符号化装置は、右上段領域の代表動きベクトルを用いて参照ピクチャ内で右上段領域に対応する参照領域を決定し、その参照領域の上側に隣接する既復元のサンプルを補償パラメータの導出のための参照サンプルとして選択する。また、対象ブロックの左側に隣接するL0~LH/2-1を追加で選択する場合、映像符号化装置は、その参照領域の左側に隣接する既復元のサンプルを参照サンプルとして追加で選択する。ここで、右上段領域の代表動きベクトルは、対象ブロックの右上角制御点動きベクトルMV1である。
【0181】
左下段領域の場合、映像符号化装置は、左下段領域の左側に隣接するLH/2~LH‐1を少なくとも一部の参照サンプルとして選択する。また、対象ブロックの上側に隣接するT0~Tw/2-1を追加でさらに選択する。そして、映像符号化装置は、左下段領域の代表動きベクトルを用いて、参照ピクチャ内で左下段領域に対応する参照領域を決定し、その参照領域の左側に隣接する既復元のサンプルを参照サンプルとして選択する。対象ブロックの上側に隣接するT0~Tw/2-1が追加でさらに選択された場合、映像符号化装置は、その参照領域の上側に隣接する既復元のサンプルを追加で選択することができる。ここで、左上段領域の代表動きベクトルは、対象ブロックの左下角制御点動きベクトルMV1である。
【0182】
対象ブロック内の左上段、右上段、及び左下段領域それぞれに対する参照サンプルを決定すると、映像符号化装置は、[数15]を用い、xに参照ピクチャから選択した参照サンプル、yに現在ピクチャから選択した参照サンプルを入力して各領域に対する照明補償パラメータを導出する。
【0183】
右下段領域の照明補償パラメータは、左上段、右上段、及び左下段領域の照明補償パラメータから導出する。例えば、右下段領域の照明補償パラメータは、右上段領域と左下段領域の照明補償パラメータの平均値に設定する。
【0184】
あるいは、映像符号化装置は、右下段領域に対する代表動きベクトルを決定し、その代表動きベクトルを用いて右下段領域の照明補償パラメータを導出してもよい。右下段領域に対する代表動きベクトルは、対象ブロックの右下角制御点動きベクトルである。映像符号化装置は、[数10]又は[数11]の(x,y)に対象ブロック内の右下角サンプル(右下段の領域の右下角サンプル)の座標(W‐1,H‐1)を代入することで、対象ブロックの右下角制御点の移動ベクトルを誘導することができる。対象ブロックの右下段領域に隣接する既復元のサンプルは存在しない。したがって、対象ブロックの上側及び左側にそれぞれ隣接するTw/2~Tw‐1及びLH/2~LH‐1を補償パラメータ導出のための参照サンプルとして用いる。そして、対象ブロックの右下角制御点動きベクトルを用いて参照ピクチャ内の参照領域を決定し、その参照領域の上側と左側に隣接する既復元のサンプルを参照サンプルとして選択する。映像符号化装置は、選択した参照サンプルを用い、[数15]を介して右下段領域に対する照明補償パラメータを導出する。
【0185】
上の例では、補償パラメータ導出のための参照ピクチャ内の参照サンプルを決定するために、各領域の代表動きベクトルを用い、その例として対象ブロックの制御点動きベクトル(すなわち、アフィンモーション予測のためのパラメータ)を使用した。しかしながら、本発明はこれに限定されず、各領域の代表動きベクトルは、対象ブロックの制御点の動きベクトルから導出した動きベクトルであってもよい。
【0186】
一例として、各領域の代表動きベクトルは、対象ブロックの制御点の動きベクトルから導出した、予め定義した位置の動きベクトルである。一例として、アフィンモーション予測で予め生成した対象ブロック内の左上段、右上段、左下段、及び右下段の4×4サブブロックのアフィンモーションベクトルを、左上段、右上段、左下段、及び右下段領域の代表動きベクトルとしてそれぞれ使用する。他の例として、左上段、右上段、左下段、及び右下段領域のそれぞれの中心点におけるアフィンモーションベクトルを各領域の代表動きベクトルとして使用してもよい。各領域の中心点におけるアフィンモーションベクトルは、[数10]又は[数11]の(x、y)に各領域の中心位置を代入することによって生成する。
【0187】
他の例として、各領域内のサブブロックのアフィンモーションベクトルの平均値を該当領域の代表動きベクトルとして使用してもよい。
【0188】
一方、補償パラメータ導出のために使用する参照ピクチャ内の参照サンプルを決定するための方法として、各領域の代表動きベクトルの代わりに各領域内のサブブロックのアフィンモーションベクトルを使用してもよい。すなわち、各領域の4×4サブブロックのアフィンモーションベクトルが指示する位置の4×4参照ブロックを参照ピクチャ内で決定し、4×4参照ブロックの上側と左側に隣接する既復元ピクセルを参照ピクセルとして選択する。
【0189】
図14は、対象ブロックの4つの領域に対する照明補償パラメータを用いて照明補償を行う方法を説明するための例示図である。
【0190】
各領域は、アフィン変換が行われる単位であるサブブロックを1つ以上含む。
図14の例では、対象ブロックの左上段領域TL、右上段領域TR、左下段領域BL、右下段領域BRがそれぞれ4つのサブブロック(4×4サブブロック)を含む。映像符号化装置は、各領域の照明補償パラメータを用い、当該領域内の予測サンプル(アフィンモーション予測を通じて生成した予測サンプル)に対して照明補償を行う。各サブブロックは、自分が属する領域の照明補償パラメータを用いて補償する。例えば、左上段領域に含まれる4つのサブブロックは、左上段領域の照明補償パラメータ(A
0、b
0)を用いて補償する。
【0191】
一部の他の実施例では、映像符号化装置は、4つの領域(TL、TR、BL、BR)の照明補償パラメータを用いて各領域内のサブブロックに対応する照明補償パラメータを補間し、補間した照明補償パラメータを使用して各サブブロックに対して照明補償を実行してもよい。前述のように、各領域の照明補償パラメータは、該当領域の代表動きベクトルから導き出す。しかしながら、代表動きベクトルは、該当領域内のすべてのサブブロックの動きを反映できない場合がある。例えば、各領域の照明補償パラメータは、対象ブロックの左上角、右上角、左下角、及び右下角の制御点動きベクトル、又は対象ブロックの左上段、右上段、左下段、及び右下段の4×4サブブロックのアフィンモーションベクトルとして導出する。この場合、左上段、右上段、左下段、及び右下段の4×4サブブロックの動きは、照明補償パラメータの導出にさらに多くの影響を及ぼし得る。したがって、映像符号化装置は、各領域の照明補償パラメータを用いた補間を通じて各サブブロックの照明補償パラメータを導出してもよい。
【0192】
図15は、各領域の照明補償パラメータを用いてサブブロックの照明補償パラメータを補間する方法を説明するための例示図である。
【0193】
(A0、b0)から(A3、b3)はそれぞれ対象ブロックの左上角、右上角、左下角、及び右下角の制御点動きベクトル、又は対象ブロックの左上段、右上段、左下段、及び右下段の4x4サブブロックのアフィンモーションベクトルから導出した各領域の照明補償パラメータである。(A0、b0)は、対象ブロックの左上段領域内の左上段4×4サブブロックの照明補償パラメータであると仮定する。同様に、(A1、b1)から(A3、b3)は、それぞれ右上段領域内の右上段4×4サブブロックの照明補償パラメータ、左下段領域内の左下段4×4サブブロックの照明補償パラメータ、右下段領域内の右下段4×4サブブロックの照明補償パラメータと仮定する。すなわち、(A0、b0)から(A3、b3)は、対象ブロックの4つのコーナー(corner)サブブロックの補償パラメータであると仮定する。
【0194】
映像符号化装置は、4つのコーナー(corner)サブブロックの補償パラメータを用いて他のサブブロックの補償パラメータを補間する。4つのコーナー(corner)サブブロックを用いた二次元補間(bi-linear interpolation)を使用してもよく、又は一次元補間を使用してもよい。例えば、対象ブロック内の最初行のサブブロックは、(A0、b0)及び(A1、b1)を使用して補間する。対象ブロック内の最初列のサブブロックは、(A0、b0)及び(A2、b2)を使用して補間する。このような方式で、すべてのサブブロックの補償パラメータを導出する。
【0195】
ここで、補間に使用するフィルタ係数又は重みは、コーナーサブブロックの位置と対象サブブロックの位置との間の差(又は、コーナーサブブロックと対象サブブロックとの間の距離)に従って設定する。位置差が小さいほど大きな重みが与えられる。
【0196】
代案として、補間に使用するフィルタ係数又は重みは、コーナーサブブロックの補償パラメータを導出するために使用した動きベクトル(対象ブロックの左上角、右上角、左下角、及び右下角の制御点動きベクトル、又は対象ブロックの左上段、右上段、左下段、及び右下段の4×4サブブロックのアフィンモーションベクトル)と対象サブブロックのアフィンモーションベクトルとの間の差によって設定してもよい。動きベクトル間の差が小さいほど大きな重みが与えられる。
【0197】
2.2 対象ブロックを2つの領域に分割した場合
対象ブロックを2つの領域に分割した場合でも、4つの領域に分割した場合と同様の方式で、各領域の照明補償パラメータを導出する。例えば、
図16を参照すると、映像符号化装置は、上段領域の補償パラメータを導出するための現在ピクチャ内の参照サンプルとして、上段領域の上側に隣接する既復元のサンプルT
0~T
w-1及び上段領域の左側に隣接する既復元のサンプル(L
0~L
H/2-1)を選択する。そして、上段領域の代表動きベクトルを用いて参照ピクチャ内の参照領域を決定し、その参照領域の上側と左側に隣接する既復元のサンプルを参照サンプルとして選択する。
【0198】
上段領域の代表動きベクトルは、対象ブロックの左上角制御点動きベクトルである。代案として、対象ブロックの制御点動きベクトルから導出した動きベクトルである。例えば、上段領域内の左上段4×4サブブロックのアフィンモーションベクトルを用いてもよく、又は上段領域の中心点に該当するアフィンモーションベクトルである。他の例として、各領域内のサブブロックのアフィンモーションベクトルの平均値は該当領域の代表動きベクトルとして使用してもよい。
【0199】
映像符号化装置は、下段領域の補償パラメータを導出するための現在ピクチャ内の参照サンプルとして、対象ブロックの上側に隣接する既復元のサンプルT0~Tw‐1及び下段領域の左側に隣接する既復元のサンプル(LH/2~LH-1)を選択する。そして、下段領域の代表動きベクトルを用いて参照ピクチャ内の参照領域を決定し、その参照領域の上側と左側に隣接する既復元のサンプルを参照サンプルとして選択する。
【0200】
下段領域の代表動きベクトルは、対象ブロックの左下角制御点動きベクトルである。代案として、対象ブロックの制御点動きベクトルから導出した動きベクトルである。例えば、下段領域内の左下段4×4サブブロックのアフィンモーションベクトルを使用してもよく、又は下段領域の中心点に該当するアフィンモーションベクトルである。他の例として、下段領域内のサブブロックのアフィンモーションベクトルの平均値を下段領域の代表動きベクトルとして使用してもよい。
【0201】
以上では、補償パラメータ導出するために使用する参照ピクチャ内の参照サンプルを決定するための方法として、各領域の代表動きベクトルを用いたが、各領域の代表動きベクトルの代わりに各領域内のサブブロックのアフィンモーションベクトルを用いてもよい。すなわち、各領域に対し、4×4サブブロックのアフィンモーションベクトルが指示する位置の4×4参照ブロックを参照ピクチャ内で決定し、4×4参照ブロックの上側と左側に隣接する既復元のピクセルを参照ピクセルとして選択する。
【0202】
映像符号化装置は、各領域に対し、参照ピクチャ内で選択した参照サンプル及び現在ピクチャ内で選択した参照サンプルをそれぞれ[数15]のx及びyに入力して各領域の補償パラメータを導出する。そして、映像符号化装置は、各領域の照明補償パラメータを用い、当該領域内の予測サンプル(アフィンモーション予測を通じて生成した予測サンプル)に対して照明補償を行う。各サブブロックは、自分が属する領域の照明補償パラメータを使用して補償する。
【0203】
代案として、映像符号化装置は、対象ブロックの4つの領域に分割した場合と同様に、各領域の照明補償パラメータを用いて各サブブロックの照明補償パラメータを補間し、補間したパラメータを各サブブロックに対して照明補償を実行してもよい。
【0204】
補償パラメータを導出するために使用した各領域の代表動きベクトルが各領域の特定の位置に関連する場合に補間を適用する。例えば、対象ブロックの左上角及び左下角の制御点動きベクトル、又は対象ブロックの左上段及び左下段の4×4サブブロックのアフィンモーションベクトル等が代表動きベクトルとして用いられる場合である。この場合、2つの領域の補償パラメータは、
図17に示すように、対象ブロック内の左上段及び左下段コーナーサブブロックTL、BLの照明補償パラメータと見なす。
【0205】
映像符号化装置は、上段領域の補償パラメータ(A0、b0)と下段領域の補償パラメータ(A2、b2)に重みを適用して対象サブブロックの補償パラメータを補間する。このとき、重みは、対象ブロック内の左上段及び左下段コーナーサブブロックと対象サブブロックとの間の距離によって割り当てる。あるいは、2つの領域の補償パラメータを導出するために使用する動きベクトル(対象ブロックの左上角及び左下角の制御点動きベクトル、又は対象ブロックの左上段及び左下段4×4サブブロックのアフィンモーションベクトル)と対象サブブロックのアフィンモーションベクトルとの間の差異によって設定してもよい。動きベクトル間の差異が小さいほど大きな重みが与えられる。
【0206】
対象ブロックが縦方向に2つの領域に分割した場合でも、横方向に2つの領域に分割した場合と同様の方式を適用する。この場合、2つの領域(左側領域と右側領域)の代表動きベクトルは、一例として、対象ブロックの左上角及び右上角制御点動きベクトル、又は対象ブロックの左上段及び右上段4×4サブブロックのアフィンモーションベクトルである。代案として、各領域の中心点のアフィンモーションベクトル、又は各領域のサブブロックのアフィンモーションベクトルの平均値などを各領域の代表動きベクトルとして使用してもよい。その他の動作は、前述した横方向分割の場合と同様であるか、それから自明に導出が可能であるため、これ以上の詳しい説明は省く。
【0207】
2.3 対象ブロックを4個より多いサブブロックに分割する場合
前述したように、対象ブロックは、横方向及び縦方向にそれぞれ2m及び2n(m及びnは2以上の整数)に分割してもよい。あるいは、対象ブロックのアフィンモーション予測が行われる単位であるサブブロックに分割してもよい。このような例は
図18に示す。
【0208】
図18を参照すると、映像符号化装置は、対象ブロックが左上段領域TL、右上段領域TR、左下段領域BL及び右下段領域BRに対し、2.1で説明したような方式で、照明補償パラメータを導出する。
【0209】
この4つの領域を除いた残りの領域に対しては、2.1で説明した補間を適用してその残りの領域の照明補償パラメータを導出する。
【0210】
代案として、残りの領域に対しても、左上段領域TL、右上段領域TR、左下段領域BL及び右下段領域BRの場合と同様の方式で、照明補償パラメータを導出できるだろう。例えば、A領域の場合、映像符号化装置は、A領域の上側に位置し、対象ブロックに隣接する既復元サンプルとA領域の左側に位置し、対象ブロックに隣接する既復元サンプルを現在ピクチャ内の参照ピクセルで選択する。そして、A領域の左上角制御点動きベクトル、A領域の左上段に位置する4×4サブブロックのアフィンモーションベクトル、又はA領域の中心点のアフィンモーションベクトルなどを用いて参照ピクチャ内の参照サンプルを選択する。選択した参照サンプルを用いてA領域の照明補償パラメータを導出する。
【0211】
上で説明した照明補償技法は、既復元のサンプルとアフィンモーション予測を通じて獲得可能な動きベクトルを利用する技法である。したがって、映像復号化装置も映像符号化装置と同様の方式で照明補償を行う。映像符号化装置から映像復号化装置への照明補償プロセスのための追加情報のシグナリングは要求されない。
【0212】
一方、前述の照明補償技法は、アフィンモーション予測以外に、対象ブロックに対してサブブロック単位で動きを補償する他のコーディングツールと共に使用してもよい。例えば、双方向オプティカルフローに適用が可能である。映像符号化装置及び映像復号化装置は、対象ブロックに対してサブブロック単位双方向オプティカルフローを実行して各サブブロックに対する予測サンプルを生成し、対象ブロック内の予測サンプルに前述したような照明補償技法を追加で実行する。双方向オプティカルフローに適用する照明補償技法は、次を除いて前述の照明補償技法と同じである。
【0213】
前述した照明補償技法では、対象ブロックの分割及び対象ブロックから分割した各領域の代表動きベクトル演算のために、対象ブロックの制御点動きベクトル、又はサブブロックのアフィンモーションベクトルを利用した。しかしながら、双方向オプティカルフローの場合には、制御点動きベクトルやアフィンモーションベクトルは存在しない。したがって、双方向オプティカルフローに適用する照明補償技法では、制御点動きベクトル又はサブブロックのアフィンモーションベクトルの代わりにサブブロックのオプティカルフロー(vx、vy)を使用する。
【0214】
V.シンタックスシグナリング
本開示のまた他の側面は、前述の様々なツールのオン/オフを制御するためのハイレベル(high-level)シンタックスのシグナリング技法に関連する。
【0215】
前述のアフィンモーション予測、アフィンモーション予測サンプルに対するサンプル単位調整、適応的動きベクトル解像度、及び照明補償は、映像符号化の効率を向上させるためのコーディングツールである。しかしながら、例えばスクリーンコンテンツの場合のような、特定のコンテンツの場合には、前述の様々なコーディングツールは圧縮性能の向上に寄与しない可能性がある。したがって、符号化しようとする各コーディングユニット毎に各コーディングツールが適用できるか否かをシグナリングするか、又は適用の如何を決定することは、むしろ符号化効率を低下させるか、演算の複雑さを増加させる。本開示は、前記のコーディングツールを効率的に制御するためのシグナリング技法を提供する。
【0216】
映像符号化装置は、ピクチャのシーケンスを符号化するために、前述した複数のコーディングツールの全てをディセーブル(disable)するか否かを示すためのシーケンスレベルの第1のハイレベルシンタックス要素(syntax element)を符号化する。第1のハイレベルシンタックス要素は、シーケンスのヘッダ、すなわちSPS内で符号化される。ここで、複数のコーディングツールは、アフィンモーション予測を含み、また、アフィンモーション予測サンプルに対するサンプル単位調整、適応的動きベクトル解像度、及び照明補償のうちの少なくとも1つを含む。
【0217】
第1のハイレベルシンタックス要素(syntax element)が、複数のコーディングツールすべてがディセーブルになることを示す場合、いかなるコーディングツールも該当シーケンスの符号化に適用されない。つまり、シーケンス内のすべてのピクチャに前述のコーディングツールは適用されない。
【0218】
第1のハイレベルシンタックス要素(syntax element)が、複数のコーディングツールがディセーブルにならないことを示すとき、該当シーケンスの符号化のために複数のコーディングツールを使用できる。例えば、アフィンモーション予測はシーケンス内の全てのピクチャに適用可能である。したがって、映像符号化装置は、コーディングユニットの各々に対してアフィンモーション予測を用いた符号化の適用如何を示すコーディングユニットフラグを符号化して映像復号化装置に伝達する。映像復号化装置は、コーディングユニットフラグによって当該コーディングユニットにアフィンモーション予測が適用されたことを指示した場合、そのコーディングユニットに対して前述したアフィンモーション予測を行う。
【0219】
一方、映像符号化装置は、第1のハイレベルシンタックス要素(syntax element)が、複数のコーディングツールがディセーブルされないことを示すとき、複数のコーディングツールのうち、少なくとも一部に対して各コーディングツールがシーケンスレベル又はピクチャレベルで許容されるか否かを示す1つ以上の第2のハイレベルシンタックス要素を符号化する。
【0220】
1つ以上の第2のハイレベルシンタックス要素を符号化するための一部の実施例で、映像符号化装置は、各コーディングツールに対し、該当コーディングツールが許容されるか否かを示すシーケンスレベルフラグをSPS内に符号化する。そのシーケンスレベルフラグが、該当コーディングツールが許容されないことを示す場合、該当コーディングツールは、シーケンスに属するピクチャの符号化に使用されない。そして、映像符号化装置は、シーケンスレベルフラグの値に依存し、前記シーケンスに属するピクチャそれぞれのピクチャヘッダ(すなわち、PPS)内に該当コーディングツールが許容されるか否かを示すピクチャレベルフラグを符号化する。例えば、シーケンスレベルフラグは、シーケンスレベルで該当コーディングツールが許可されることを示す場合、該当コーディングツールのピクチャレベルでの許容如何を示すためのピクチャレベルフラグを符号化する。もし、第1のハイレベルシンタックス要素(syntax element)が、複数のコーディングツールのすべてがディスエーブルであることを示す場合、又は、シーケンスレベルフラグが、該当コーディングツールがシーケンスレベルで、許容されないことを示す場合、ピクチャレベルフラグは別途符号化されない。この場合、映像復号化装置は、ピクチャレベルフラグを該当コーディングツールが許容されないことを示す値に自動的に設定する。
【0221】
一方、アフィンモーション予測以外の他のコーディングツールに対するピクチャレベルフラグは、アフィンモーション予測に対するピクチャレベルフラグに依存してシグナリングされてもよい。アフィンモーション予測に対するピクチャレベルフラグが、アフィンモーション予測がピクチャレベルで許容されないことを示すとき、他のコーディングツールに対するピクチャレベルフラグは符号化されず、他のコーディングツールはピクチャレベルでは許可されない。映像復号化装置は、他のコーディングツールに対するピクチャレベルフラグがビットストリームに含まれていないと、それぞれのピクチャレベルフラグを、該当コーディングツールがピクチャレベルで許容されないことを示す値に設定する。
【0222】
映像復号化装置は、映像符号化装置からシグナリングされたピクチャーレベルフラグ又はその値を自動設定したピクチャーレベルフラグから該当コーディングツールの許容可否をピクチャーレベルで設定できる。
【0223】
一方、アフィンモーション予測に対する第2のハイレベルシンタックス要素は省略してもよい。この場合、アフィンモーション予測は、第1のハイレベルシンタックスによってシーケンスレベルで許容の如何が制御される。映像復号化装置は、映像符号化装置から第1のハイレベルシンタックスを復号化した後、シーケンスレベルでアフィンモーション予測の許容如何を決定する。
【0224】
前述したシンタックス構造によると、映像符号化装置は、シーケンスレベルとピクチャレベルの中から適応的にコーディングツールの許容如何を決定する。また、映像復号化装置は、映像符号化装置からシグナリングしたシンタックスを復号化することで、シーケンスレベルとピクチャレベルの中から適応的にコーディングツールの許容可否を決定する。
【0225】
1つ以上の第2のハイレベルシンタックス要素を符号化するための一部他の実施例で、前述の実施例のピクチャレベルフラグはスライスレベルフラグに置き換わってもよい。即ち、映像符号化装置は、シーケンスレベルフラグが、シーケンスレベルで該当コーディングツールが許容されることを示すとき、当該コーディングツールのスライスレベルでの許容如何を示すためのスライスレベルフラグをスライスヘッダ内に符号化する。シーケンスレベルフラグが、該当コーディングツールが許容されないことを示すとき、スライスレベルフラグは符号化されない。映像符号化装置は、コーディングツールの許容可否をシーケンスレベルとスライスレベルの中から適応的に決定できる。映像復号化装置は、スライスレベルフラグを介して各ツールの許容如何をスライスレベルで決定できる。
【0226】
1つ以上の第2のハイレベルシンタックス要素を符号化するための一部のまた他の実施例で、シーケンスレベルフラグは省いてもよい。ピクチャレベルフラグ又はスライスレベルフラグは、第1のハイレベルシンタックス要素に依存してシグナリングされる。第1のハイレベルシンタックス要素が複数のコーディングツールが許容されることを示すとき、ピクチャレベルフラグ又はスライスレベルフラグはピクチャヘッダ又はスライスヘッダ内で符号化される。
【0227】
以上の説明での例示的な実施例は、多くの異なる方式で具現できることを理解しなければならない。1つ以上の例で説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの任意の組み合わせで具現できる。本明細書で説明した機能的コンポーネントは、それらの具現独立性を特に強調するために「…部(unit)」とラベル付けされていることを理解すべきである。
【0228】
一方、本開示で説明した様々な機能又は方法は、1つ以上のプロセッサによって読み取って実行できる非一時的記録媒体に保存した命令で具現したもよい。非一時的記録媒体は、例えば、コンピュータシステムによって読み取り可能な形式でデータを保存するあらゆる種類の記録装置を含む。例えば、非一時的記録媒体は、EPROM(erasable programmable read only memory)、フラッシュドライブ、光学ドライブ、磁気ハードドライブ、ソリッドステートドライブ(SSD)などのような保存媒体を含む。
【0229】
以上の説明は、本実施例の技術思想を例示的に説明したものに過ぎず、本実施例が属する技術分野で通常の知識を有する者であれば、本実施例の本質的な特性から逸脱しない範囲で多様な修正及び変形が可能であるだろう。したがって、本実施例は、本実施例の技術思想を限定するものではなく説明するためのものであり、このような実施例によって本実施例の技術思想の範囲を限定するものではない。本実施例の保護範囲は、特許請求の範囲によって解釈するべきであり、それと同等の範囲内にある全ての技術思想は、本実施例の権利範囲に含まれるものと解釈するべきである。
【0230】
優先権の主張
本特許出願は、本明細書にその全体が参考として含まれる、2019年6月14日付で韓国に出願した特許出願番号第10-2019-0070633号、2019年7月8日付で韓国に出願した特許出願番号第10-2019-0082010号、及び2020年6月15日付で韓国に出願した特許出願番号第10-2020-0072332号に対して優先権を主張する。
【符号の説明】
【0231】
110 ピクチャー分割部
120、540 予測部
122、542 イントラ予測部
124、544 インター予測部
130 減算器
140 変換部
145 量子化部
150、515 並べ替え部
155 エントロピー符号化部
160、520 逆量子化部
165、530 逆変換部
170、550 加算器
180、560 ループフィルタ部
182、562 デブロッキングフィルタ
184、564 SAOフィルタ
186、566 ALF
190、570 メモリ
510 エントロピー復号化部