(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-18
(45)【発行日】2024-01-26
(54)【発明の名称】ブロックベースの適応ループフィルタ(ALF)の設計およびシグナリング
(51)【国際特許分類】
H04N 19/117 20140101AFI20240119BHJP
H04N 19/70 20140101ALI20240119BHJP
H04N 19/176 20140101ALI20240119BHJP
H04N 19/157 20140101ALI20240119BHJP
H04N 19/174 20140101ALI20240119BHJP
【FI】
H04N19/117
H04N19/70
H04N19/176
H04N19/157
H04N19/174
(21)【出願番号】P 2020566603
(86)(22)【出願日】2019-05-31
(86)【国際出願番号】 US2019034964
(87)【国際公開番号】W WO2019232412
(87)【国際公開日】2019-12-05
【審査請求日】2022-05-02
(32)【優先日】2018-06-01
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-05-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】カルチェビチ、マルタ
(72)【発明者】
【氏名】ガッデ、アクシャイ
(72)【発明者】
【氏名】セレジン、バディム
(72)【発明者】
【氏名】チェン、ウェイ-ジュン
【審査官】田部井 和彦
(56)【参考文献】
【文献】特表2018-509074(JP,A)
【文献】特表2014-506061(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/117
H04N 19/70
H04N 19/176
H04N 19/157
H04N 19/174
(57)【特許請求の範囲】
【請求項1】
ビデオデータをコーディングする方法であって、前記方法は、
スライスに適用可能な適応ループフィルタの複数のセットを、スライスレベルで決定することと、
現在のピクチャのブロック
のために、
前記適応ループフィルタの複数のセットの中から、適応ループフィルタ
のセットを
、ブロックレベルで決定することと、ここにおいて、
前記現在のピクチャの前記ブロックは、前記スライスのコーディングツリーユニット(CTU)であり、前記適応ループフィルタ
のセットは、1つまたは複数
の前の適応ループフィルタを
含み、さらに固定適応ループフィルタを含む複数の適応ループフィルタを含
む、
前記適応ループフィルタ
のセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングすることと
を備える、方法。
【請求項2】
前記適応ループフィルタ
のセットを決定することは、
前記現在のピクチャの
前記ブロック
のために、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタ
のセットを示す
、シンタックス要素をコーディングすること
を備える、請求項1に記載の方法。
【請求項3】
前
記シンタックス要素は、前記適応ループフィルタの複数のセットを含むリストへのインデックスである、請求項2に記載の方法。
【請求項4】
適応ループフィルタリングが前記それぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグをコーディングすること
をさらに備える、請求項1に記載の方法。
【請求項5】
適応ループフィルタリングが
前記現在のピクチャのブロックのそれぞれのグループ内の各ブロックについて使用されるかどうかを示す、
前記現在のピクチャのブロックのグループごとのそれぞれのフラグをコーディングすること
をさらに備える、請求項1に記載の方法。
【請求項6】
適応ループフィルタリングが、
前記現在のピクチャの各ブロックについて使用されるか、または
前記現在のピクチャのブロックのグループ内の各ブロックについて使用されるかを、
非ゼロコード化ブロックフラグ(CBF)を有する、ブロックのグループ内のブロックの数と、
非ゼロ変換係数の数と、
特定のモードでコーディングされた、ブロックのグループ内のブロックの数と、
スキップモードでコーディングされた、ブロックのグループ内のブロックの数と
のうちの1つまたは複数に基づいて決定すること
をさらに備える、請求項1に記載の方法。
【請求項7】
前記適応ループフィルタ
のセットは、前記現在のピクチャのためにシグナリングされた
1つまたは複数の現在の適応ループフィル
タのうちの1つまたは複数をさらに含む、請求項1に記載の方法。
【請求項8】
前記現在のピクチャのためにシグナリングされた
前記1つまたは複数の現在の適応ループフィルタが最初に追加され、
前記1つまたは複数の前の適応ループフィルタが2番目に追加され、
前記固定適応ループフィルタが最後に追加されるように、
前記適応ループフィルタ
のセットに適応ループフィルタを追加すること
をさらに備える、請求項
7に記載の方法。
【請求項9】
前記
1つまたは複数の現在の適応ループフィルタは、前記現在のピクチャのためにシグナリングされ、かつ、
前記1つまたは複数の前の適応ループフィルタに関連して、フィルタセットリスト中でより低いインデックス値を有する、請求項
8に記載の方法。
【請求項10】
前記現在のピクチャのために、前記現在のピクチャについての
前記1つまたは複数の現在の適応ループフィルタ
の現在の適応ループフィルタを示す1つまたは複数のシンタックス要素をコーディングすること
をさらに備える、請求項
7に記載の方法。
【請求項11】
前記適応ループフィルタ
のセットは、複数のクラスの各クラスに割り当てられ
た適応ループフィルタを含む、請求項1に記載の方法。
【請求項12】
前記適応ループフィルタ
のセットを決定することは、ビデオデータの第1のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第1のセットを示す、第1のシンタックス要素をコーディングすることと、ビデオデータの第2のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第2のセットを示す、第2のシンタックス要素をコーディングすることと、を備え、ここにおいて、前記適応ループフィルタの第2のセットは、前記適応ループフィルタの第1のセットとは異なり、前記方法は、
ビデオデータの第1の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第1のブロックをコーディングすることと、
前記ビデオデータの第1の再構成されたブロックのために、前記適応ループフィルタの第1のセットから第1の適応ループフィルタを決定することと、
前記ビデオデータの第1の再構成されたブロックに、前記第1の適応ループフィルタを適用することと、
ビデオデータの第2の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第2のブロックをコーディングすることと、
前記ビデオデータの第2の再構成されたブロックのために、前記適応ループフィルタの第2のセットから第2の適応ループフィルタを決定することと、
前記ビデオデータの第2の再構成されたブロックに、前記第2の適応ループフィルタを適用することと
をさらに備える、請求項1に記載の方法。
【請求項13】
コーディングすることは、符号化することを備え、前記方法は、
カメラを用いて前記現在のピクチャをキャプチャすること
をさらに備える、請求項1に記載の方法。
【請求項14】
コーディングすることは、復号することを備え、前記方法は、
前記現在のピクチャを表示すること
をさらに備える、請求項1に記載の方法。
【請求項15】
前記現在のピクチャの前記ブロックは、前記現在のピクチャの第1のブロックであり、前記方法は、
前記現在のピクチャの前記第1のブロックのために決定された前記適応ループフィルタのセットに従って、前記現在のピクチャの第2のブロックを適応ループフィルタリングすること
をさらに備える、請求項1に記載の方法。
【請求項16】
ビデオデータをコーディングするように構成された装置であって、前記装置は、
ビデオデータの現在のピクチャを記憶するように構成されたメモリと、
前記メモリと通信状態にある1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
スライスに適用可能な適応ループフィルタの複数のセットを、スライスレベルで決定することと、
前記現在のピクチャのブロック
のために、
前記適応ループフィルタの複数のセットの中から、適応ループフィルタ
のセットを
、ブロックレベルで決定することと、ここにおいて、
前記現在のピクチャの前記ブロックは、前記スライスのコーディングツリーユニット(CTU)であり、前記適応ループフィルタ
のセットは、1つまたは複数
の前の適応ループフィルタを
含み、さらに固定適応ループフィルタを含む複数の適応ループフィルタを含
む、
前記適応ループフィルタ
のセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングすることと
を行うように構成される、装置。
【請求項17】
前記適応ループフィルタ
のセットを決定するために、前記1つまたは複数のプロセッサは、
前記現在のピクチャの
前記ブロック
のために、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタ
のセットを示す
、シンタックス要素をコーディングすること
を行うようにさらに構成される、請求項
16に記載の装置。
【請求項18】
前
記シンタックス要素は、前記適応ループフィルタの複数のセットを含むリストへのインデックスである、請求項
17に記載の装置。
【請求項19】
前記1つまたは複数のプロセッサは、
適応ループフィルタリングが前記それぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグをコーディングすること
を行うようにさらに構成される、請求項
16に記載の装置。
【請求項20】
前記1つまたは複数のプロセッサは、
適応ループフィルタリングが
前記現在のピクチャのブロックのそれぞれのグループ内の各ブロックについて使用されるかどうかを示す、
前記現在のピクチャのブロックのグループごとのそれぞれのフラグをコーディングすること
を行うようにさらに構成される、請求項
16に記載の装置。
【請求項21】
前記1つまたは複数のプロセッサは、
適応ループフィルタリングが、
前記現在のピクチャの各ブロックについて使用されるか、または
前記現在のピクチャのブロックのグループ内の各ブロックについて使用されるかを、
非ゼロコード化ブロックフラグ(CBF)を有する、ブロックのグループ内のブロックの数と、
非ゼロ変換係数の数と、
特定のモードでコーディングされた、ブロックのグループ内のブロックの数と、
スキップモードでコーディングされた、ブロックのグループ内のブロックの数と
のうちの1つまたは複数に基づいて決定すること
を行うようにさらに構成される、請求項
16に記載の装置。
【請求項22】
前記適応ループフィルタ
のセットは、前記現在のピクチャのためにシグナリングされた
1つまたは複数の現在の適応ループフィル
タのうちの1つまたは複数をさらに含む、請求項
16に記載の装置。
【請求項23】
前記1つまたは複数のプロセッサは、
前記現在のピクチャのためにシグナリングされた
前記1つまたは複数の現在の適応ループフィルタが最初に追加され、
前記1つまたは複数の前の適応ループフィルタが2番目に追加され、
前記固定適応ループフィルタが最後に追加されるように、
前記適応ループフィルタ
のセットに適応ループフィルタを追加すること
を行うようにさらに構成される、請求項
22に記載の装置。
【請求項24】
前記1つまたは複数の現在の適応ループフィルタは、前記現在のピクチャのためにシグナリングされ、かつ、
前記1つまたは複数の前の適応ループフィルタに関連して、フィルタセットリスト中でより低いインデックス値を有する、請求項
23に記載の装置。
【請求項25】
前記1つまたは複数のプロセッサは、
前記現在のピクチャのために、
前記現在のピクチャについての前記
1つまたは複数の現在の適応ループフィルタ
の現在の適応ループフィルタを示す1つまたは複数のシンタックス要素をコーディングすること
を行うようにさらに構成される、請求項
22に記載の装置。
【請求項26】
前記適応ループフィルタ
のセットは、複数のクラスの各クラスに割り当てられ
た適応ループフィルタを含む、請求項
16に記載の装置。
【請求項27】
前記適応ループフィルタ
のセットを決定するために、前記1つまたは複数のプロセッサは、ビデオデータの第1のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第1のセットを示す、第1のシンタックス要素をコーディングすることと、ビデオデータの第2のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第2のセットを示す、第2のシンタックス要素をコーディングすることと、を行うようにさらに構成され、ここにおいて、前記適応ループフィルタの第2のセットは、前記適応ループフィルタの第1のセットとは異なり、ここにおいて、前記1つまたは複数のプロセッサは、
ビデオデータの第1の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第1のブロックをコーディングすることと、
前記ビデオデータの第1の再構成されたブロックのために、前記適応ループフィルタの第1のセットから第1の適応ループフィルタを決定することと、
前記ビデオデータの第1の再構成されたブロックに、前記第1の適応ループフィルタを適用することと、
ビデオデータの第2の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第2のブロックをコーディングすることと、
前記ビデオデータの第2の再構成されたブロックのために、前記適応ループフィルタの第2のセットから第2の適応ループフィルタを決定することと、
前記ビデオデータの第2の再構成されたブロックに、前記第2の適応ループフィルタを適用することと
を行うようにさらに構成される、請求項
16に記載の装置。
【請求項28】
コーディングするために、前記1つまたは複数のプロセッサは符号化するように構成され、前記装置は、
前記現在のピクチャをキャプチャするように構成されたカメラ
をさらに備える、請求項
16に記載の装置。
【請求項29】
コーディングするために、前記1つまたは複数のプロセッサは復号するように構成され、前記装置は、
前記現在のピクチャを表示するように構成されたディスプレイ
をさらに備える、請求項
16に記載の装置。
【請求項30】
前記現在のピクチャの前記ブロックは、前記現在のピクチャの第1のブロックであり、前記1つまたは複数のプロセッサは、
前記現在のピクチャの前記第1のブロックのために決定された前記適応ループフィルタのセットに従って、前記現在のピクチャの第2のブロックを適応ループフィルタリングすること
を行うようにさらに構成される、請求項16に記載の装置。
【請求項31】
ビデオデータをコーディングするように構成された装置であって、前記装置は、
スライスに適用可能な適応ループフィルタの複数のセットを、スライスレベルで決定するための手段と、
現在のピクチャのブロック
のために、
前記適応ループフィルタの複数のセットの中から、適応ループフィルタ
のセットを
、ブロックレベルで決定するための手段と、ここにおいて、
前記現在のピクチャの前記ブロックは、前記スライスのコーディングツリーユニット(CTU)であり、前記適応ループフィルタ
のセットは、1つまたは複数
の前の適応ループフィルタを
含み、さらに固定適応ループフィルタを含む複数の適応ループフィルタを含
む、
前記適応ループフィルタ
のセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングするための手段と
を備える、装置。
【請求項32】
前記適応ループフィルタ
のセットを決定するための前記手段は、
適応ループフィルタリングが前
記ブロックについて使用されるかどうかを示す、
前記ブロック
のためのフラグをコーディングするための手段と、
前記ブロック
のための前記フラグに基づいて、前記現在のピクチャの
前記ブロック
のために、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタ
のセットを示す
、シンタックス要素をコーディングするための手段と
を備える、請求項
31に記載の装置。
【請求項33】
前記適応ループフィルタ
のセットは、前記現在のピクチャのためにシグナリングされた
1つまたは複数の現在の適応ループフィル
タのうちの1つまたは複数をさらに含む、請求項
31に記載の装置。
【請求項34】
実行されると、1つまたは複数のプロセッサに、
スライスに適用可能な適応ループフィルタの複数のセットを、スライスレベルで決定することと、
現在のピクチャのブロック
のために、
前記適応ループフィルタの複数のセットの中から、適応ループフィルタ
のセットを
、ブロックレベルで決定することと、ここにおいて、
前記現在のピクチャの前記ブロックは、前記スライスのコーディングツリーユニット(CTU)であり、前記適応ループフィルタ
のセットは、1つまたは複数
の前の適応ループフィルタを
含み、さらに固定適応ループフィルタを含む複数の適応ループフィルタを含
む、
前記適応ループフィルタ
のセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングすることと、
を行わせる命令を記憶した非一時的なコンピュータ可読記憶媒体。
【請求項35】
前記適応ループフィルタのそれぞれのセットを決定するために、前記命令は、前記1つまたは複数のプロセッサに、
適応ループフィルタリングが前
記ブロックについて使用されるかどうかを示す、
前記ブロック
のためのフラグをコーディングすることと、
前記ブロック
のための前記フラグに基づいて、前記現在のピクチャの
前記ブロック
のために、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタ
のセットを示す
、シンタックス要素をコーディングすることと
をさらに行わせる、請求項
34に記載の非一時的なコンピュータ可読記憶媒体。
【請求項36】
前記適応ループフィルタ
のセットは、前記現在のピクチャのためにシグナリングされた
1つまたは複数の現在の適応ループフィル
タのうちの1つまたは複数をさらに含む、請求項
34に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願の説明】
【0001】
[0001] 本願は、2018年6月1日に出願された米国仮特許出願第62/679,685号の利益を主張する、2019年5月30日に出願された米国特許出願第16/427,017号の優先権を主張し、これらの内容全体が、参照により本明細書に組み込まれる。
【技術分野】
【0002】
[0002] 本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【0003】
[0003] デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、パート10、アドバンストビデオコーディング(AVC)によって定義された規格、最近完成した高効率ビデオコーディング(HEVC)規格、およびそのような規格の拡張に記載されているものなどの、ビデオ圧縮技法をインプリメントする。ビデオデバイスは、このようなビデオ圧縮技法をインプリメントすることによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【0004】
[0004] ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部分)が、ツリーブロック、コーディングユニット(CU:coding unit)および/またはコーディングノードとも呼ばれ得る、ビデオブロック(video block)に区分され得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ内の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ内の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ内の参照サンプルに対する時間的予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
【0005】
[0005] 空間的予測または時間的予測は、コーディングされるべきブロック(block)についての予測ブロック(predictive block)をもたらす。残差データ(Residual data)は、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトルと、コーディングされたブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され得、結果として残差変換係数が得られ、次いで、これは量子化され得る。最初に2次元アレイで配置される量子化された変換係数は、変換係数の1次元ベクトルを生成するために走査され得、エントロピーコーディングが、さらなる圧縮を達成するために適用され得る。
【発明の概要】
【0006】
[0006] 本開示は、「適応ループフィルタ(ALF:Adaptive Loop Filter)」と呼ばれるフィルタリング技法に関する技法を説明する。ALFは、インループコーディング(in-loop coding)のための後処理ステージにおいて、または予測プロセスにおいて使用され得る。サンプル適応オフセット(SAO:sample adaptive offset)フィルタリングおよび/または適応ループフィルタリング(adaptive loop filtering)は、HEVC準拠コーデック技術などの様々な既存のビデオコーデック技術のうちの任意のものに適用され得、または任意の将来のビデオコーディング規格における効率的なコーディングツールになり得る。したがって、説明される技法は、ビデオがブロック単位で再構成される様々なブロックベースのビデオコーディング技法に適用され得る。ピクセルのブロックは、後に説明されるように、使用されるブロックベースのビデオコーディングに依存して、コーディングツリーユニット(CTU:coding tree units)、最大コーディングユニット(LCU:largest coding units)、予測ユニット(PU:prediction unit)、または他の用語で様々に呼ばれ得る。
【0007】
[0007] 以下でより詳細に説明されるように、本開示の技法によれば、ビデオエンコーダ(video encoder)およびビデオデコーダ(video decoder)は、(例えば、適応ループフィルタリングがイネーブルにされるブロックについて)ブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのセットを決定するように構成され得る。このようにして、特定のブロックでの使用に利用可能な適応ループフィルタのセットは、特定のブロックの近くのビデオデータ(video data)の局所特性(local characteristics)により適合し得、したがって、コーディング効率(coding efficiency)および/またはピクチャ品質(picture quality)を改善する。
【0008】
[0008] 一例では、方法が、適応ループフィルタリングが使用されるブロックについて、現在のピクチャ(current picture)のブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャ(previous picture)において使用された前の適応ループフィルタを含み、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングすることと、を含む。
【0009】
[0009] 別の例では、ビデオデータをコーディングする(code)ように構成された装置(apparatus)が、ビデオデータの現在のピクチャを記憶するように構成されたメモリ(memory)と、メモリと通信状態にある1つまたは複数のプロセッサ(processor)とを含み、1つまたは複数のプロセッサは、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャ(または、前のピクチャ、スライス、または他の粒度のブロック)において使用された前の適応ループフィルタを含み、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングすることと、を行うように構成される。
【0010】
[0010] 別の例では、ビデオデータをコーディングするように構成された装置が、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定するための手段と、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングするための手段と、を含む。
【0011】
[0011] 別の例では、本開示は、実行されると、1つまたは複数のプロセッサに、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングすることと、を行わせる命令(instruction)を記憶した非一時的なコンピュータ可読記憶媒体(non-transitory computer-readable storage medium)を説明する。
【0012】
[0012] 1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点が、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0013】
【
図1】[0013]
図1は、本開示で説明される技法を利用し得る、例となるビデオ符号化および復号システムを例示するブロック図である。
【
図2】[0014]
図2は、HEVCデコーダの例となるブロック図を示す。
【
図3A】[0015]
図3Aは、エッジオフセット(EO:edge offset)サンプル分類のための4つの1-D方向性パターン(directional patterns)のうちの1つを示す。
【
図3B】
図3Bは、エッジオフセット(EO)サンプル分類のための4つの1-D方向性パターンのうちの1つを示す。
【
図3C】
図3Cは、エッジオフセット(EO)サンプル分類のための4つの1-D方向性パターンのうちの1つを示す。
【
図3D】
図3Dは、エッジオフセット(EO)サンプル分類のための4つの1-D方向性パターンのうちの1つを示す。
【
図4】[0016]
図4は、本開示で説明される技法をインプリメントし得る、例となるビデオエンコーダを例示するブロック図である。
【
図5】[0017]
図5は、本開示で説明される技法をインプリメントし得る、例となるビデオデコーダを例示するブロック図である。
【
図6】[0018]
図6は、本開示の技法を実行するためのフィルタユニット(filter unit)の例となるインプリメンテーションを示す。
【
図7】[0019]
図7は、本開示の例となる方法を例示するフローチャートである。
【
図8】[0020]
図8は、本開示の別の例となる方法を例示するフローチャートである。
【詳細な説明】
【0014】
[0021]
図1は、本開示で説明される適応ループフィルタリングのための技法を利用し得る、例となるビデオ符号化および復号システム10を例示するブロック図である。
図1に示されるように、システム10は、宛先デバイス14によって後に復号されることになる符号化されたビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、広範囲のデバイスのうちの任意のものであり得る。いくつかのケースでは、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【0015】
[0022] 宛先デバイス14は、リンク16を介して、復号されることになる符号化されたビデオデータを受信し得る。リンク16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動させることが可能な任意のタイプの媒体またはデバイスであり得る。一例では、リンク16は、ソースデバイス12がリアルタイムで符号化されたビデオデータを宛先デバイス14に直接送信することを可能にする、通信媒体であり得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得るその他任意の機器を含み得る。
【0016】
[0023] 別の例では、符号化されたビデオデータは、出力インターフェース22から記憶デバイス26に出力され得る。同様に、符号化されたビデオデータは、入力インターフェース28によって、記憶デバイス26からアクセスされ得る。記憶デバイス26は、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化されたビデオデータを記憶するためのその他任意の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のうちの任意のものを含み得る。さらなる例では、記憶デバイス26は、ファイルサーバ、またはソースデバイス12によって生成された符号化されたビデオを保持し得る別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、記憶デバイス26からの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、その符号化されたビデオデータを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例となるファイルサーバは、(例えば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続記憶(NAS:network attached storage)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適な、ワイヤレス接続(例えば、Wi-Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。記憶デバイス26からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【0017】
[0024] 本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えば、インターネットを介した、ストリーミングビデオ送信、データ記憶媒体上での記憶のためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディング(video coding)に適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話通信などのアプリケーションをサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【0018】
[0025]
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかのケースでは、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、例えば、ビデオカメラのような、ビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、またはそのようなソースの組合せを含み得る。一般に、ビデオデータをキャプチャすることは、ビデオデータを記録、生成、および/または感知するための任意の技法を含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、本開示で説明される技法は、ビデオコーディング全般に適用可能であり得、ワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。
【0019】
[0026] キャプチャされた、予めキャプチャされた、またはコンピュータにより生成されたビデオが、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して、宛先デバイス14に直接送信され得る。符号化されたビデオデータはまた(または、代替として)、復号および/または再生のために、宛先デバイス14または他のデバイスによる後のアクセスのために、記憶デバイス26上に記憶され得る。
【0020】
[0027] 宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかのケースでは、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を通じて、符号化されたビデオデータを受信する。リンク16を通じて通信されるか、または記憶デバイス26上に提供される符号化されたビデオデータは、ビデオデータを復号する(decode)際に、ビデオデコーダ30などのビデオデコーダによって使用するための、ビデオエンコーダ20によって生成された様々なシンタックス要素(syntax element)を含み得る。そのようなシンタックス要素は、通信媒体上で送信される、記憶媒体上に記憶される、またはファイルサーバ上に記憶される、符号化されたビデオデータとともに含まれ得る。
【0021】
[0028] ディスプレイデバイス32は、宛先デバイス14と一体化されるか、またはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体化されたディスプレイデバイスを含み、そしてまた、外部ディスプレイデバイスとインターフェースするようにも構成され得る。他の例では、宛先デバイス14は、ディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちの任意のものであり得る。
【0022】
[0029] ビデオエンコーダ20およびビデオデコーダ30は、最近完成した高効率ビデオコーディング(HEVC)規格などのビデオ圧縮規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。ビデオエンコーダ20およびビデオデコーダ30は、さらに、ITU-Tビデオコーディング専門家グループ(VCEG)と、ISO/IECモーションピクチャ専門家グループ(MPEG)とのビデオコーディング共同研究部会(JCT-VC)ならびに3Dビデオコーディング拡張開発共同研究部会(JCT-3V)によって開発されてきた、応用範囲の拡張、マルチビュー拡張(MV-HEVC)、またはスケーラブル拡張(SHVC)などの、HEVC拡張に従って動作し得る。代替として、ビデオエンコーダ20およびビデオデコーダ30は、代替的にISO/IEC MPEG-4、パート10、アドバンストビデオコーディング(AVC)とも呼ばれるITU-T H.264規格などの、他のプロプライエタリまたは業界標準規格、あるいはスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張などの、そのような規格の拡張に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、およびISO/IEC MPEG-4 Visualを含む。その応用範囲の拡張と、マルチビュー拡張(MV-HEVC)と、スケーラブル拡張(SHVC)とを含む、HEVC (ITU-T H.265)は、ITU-Tビデオコーディング専門家グループ(VCEG)と、ISO/IECモーションピクチャ専門家グループ(MPEG)とのビデオコーディング共同研究部会(JCT-VC)ならびに3Dビデオコーディング拡張開発共同研究部会(JCT-3V)によって開発されてきた。以下、HEVC WDと呼ばれる、完成したHEVCドラフトが、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipにおいて入手可能である。
【0023】
[0030] ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は、(スクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングについてのその現在の拡張と近い将来の拡張とを含む)現在のHEVC規格のそれを潜在的に超過する圧縮能力を有する将来のビデオコーディング技術を現在開発中である。この新しい規格は、H.266/VVC(Versatile Video coding)と呼ばれる。これらグループは、この分野におけるそれらの専門家によって提案された圧縮技術設計を評価するために、JVET(Joint Video Exploration Team)として知られる共同研究の取り組みにおいて、この調査活動を共同で進めている。JVETは、2015年10月19日~21日にわたって最初の会合を行った。参照ソフトウェアの1つのバージョン、すなわち、Joint Exploration Model 7(JEM7)が、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/からダウンロードされ得る。JEM7についてのアルゴリズム解説は、J. Chen、E. Alshina、G. J. Sullivan、J.R. Ohm、J. Boyce、「Algorithm description of Joint Exploration Test Model 7 (JEM7)」、JVET-G1001、トリノ、2017年7月に説明されている。VVC規格の最新ドラフトが、Bross他「Versatile Video Coding (Draft 5)」、Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11、第14回会議:ジュネーブ、CH、2019年3月19日~27日、JVET-N1001-v3(以下、「VVCドラフト5」)に説明されている。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
【0024】
[0031]
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、オーディオエンコーダおよびオーディオデコーダとそれぞれ一体化され得、共通のデータストリームまたは別個のデータストリームにおけるオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0025】
[0032] ビデオエンコーダ20およびビデオデコーダ30は、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組合せなどの、様々な好適なエンコーダ回路またはデコーダ回路のうちの任意のものとしてそれぞれインプリメントされ得る。本技法が部分的にソフトウェアでインプリメントされるとき、デバイスは、好適な非一時的なコンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(CODEC)の一部として一体化され得る。
【0026】
[0033] 本開示は、インループコーディングの一部として、後処理ステージにおいて、またはビデオコーディングの予測ステージにおいて使用され得るフィルタリング動作に関する技法を説明する。本開示の技法は、HEVCなどの、既存のビデオコーデックにインプリメントされるか、または現在開発中のH.266/VVC規格などの、将来のビデオコーディング規格のための効率的なコーディングツールになり得る。
【0027】
[0034] ビデオコーディングは、典型的に、同じピクチャ内のビデオデータのすでにコーディングされたブロックから(例えば、イントラ予測)、または異なるピクチャ内のビデオデータのすでにコーディングされたブロックから(例えば、インター予測)のいずれかで、ビデオデータのブロックを予測することを伴う。いくつかの事例では、ビデオエンコーダ20はまた、予測ブロックを元のブロックと比較することによって残差データを計算する。したがって、残差データは、予測ブロックと元のブロックとの間の差分を表す。
【0028】
[0035] ビデオエンコーダ20は、残差データを変換および量子化し、符号化されたビットストリーム中で、変換および量子化された残差データをシグナリングする。ビデオデコーダ30は、予測ブロック単独よりも密接に元のビデオブロックに一致する再構成されたビデオブロックを生成するために、残差データを予測ブロックに加算する。復号されたビデオの品質をさらに改善するために、ビデオエンコーダ20およびビデオデコーダ30は、再構成されたビデオブロックに対して1つまたは複数のフィルタリング動作を実行し得る。これらのフィルタリング動作の例は、デブロッキングフィルタリング(deblocking filtering)、サンプル適応オフセット(SAO)フィルタリング、および適応ループフィルタリングを含む。これらのフィルタリング動作のためのパラメータは、ビデオエンコーダ20によって決定され、符号化されたビデオビットストリーム中で明示的にシグナリングされ得るか、または、符号化されたビデオビットストリーム中でパラメータが明示的にシグナリングされる必要なしに、ビデオデコーダ30によって暗黙的に決定され得る。
【0029】
[0036] 本開示は、「適応ループフィルタ(ALF)」と呼ばれる(1つまたは複数の)フィルタリング方法に関する技法を説明する。ALFは、インループコーディングのための後処理ステージにおいて、または予測プロセスにおいて使用され得る。SAOフィルタリングおよび/または適応ループフィルタリングは、HEVC準拠コーデック技術などの様々な既存のビデオコーデック技術のうちの任意のものに適用され得、または任意の将来のビデオコーディング規格における効率的なコーディングツールになり得る。
【0030】
[0037] 本開示で使用される場合、ビデオコーディング(video coding)という用語は、総称的にビデオ符号化(video encoding)またはビデオ復号(video decoding)のいずれかを指す。同様に、ビデオコーダ(video coder)という用語は、総称的にビデオエンコーダまたはビデオデコーダを指し得る。さらに、ビデオ復号に関して本開示で説明されるある特定の技法は、ビデオ符号化にも適用され得、その逆もまた同様である。例えば、多くの場合、ビデオエンコーダおよびビデオデコーダは、同じプロセス、または逆のプロセスを実行するように構成される。また、ビデオエンコーダ20は、典型的に、ビデオデータをどのように符号化する(encode)かを決定するプロセスの一部としてビデオ復号を実行する。
【0031】
[0038] 以下でより詳細に説明されるように、本開示の技法によれば、ビデオエンコーダ20およびビデオデコーダ30は、(例えば、適応ループフィルタリングがイネーブルにされるブロックについて)ブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのセットを決定するように構成され得る。このようにして、特定のブロックでの使用に利用可能な適応ループフィルタのセットは、特定のブロックの近くのビデオデータの局所特性により適合し得、したがって、コーディング効率(coding efficiency)および/またはピクチャ品質(picture quality)を改善する。
【0032】
[0039] HEVC、VVC、および他のビデオコーディング仕様では、ビデオシーケンスは、典型的に、一連のピクチャを含む。ピクチャは、「フレーム(frame)」とも呼ばれ得る。1つの例となる手法では、ピクチャは、SL、SCb、およびSCrで示される、3つのサンプルアレイを含み得る。このような例となる手法では、SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルはまた、本明細書では「クロマ(chroma)」サンプルとも呼ばれ得る。他の事例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【0033】
[0040] ピクチャの符号化された表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック(coding tree block)と、クロマサンプルの2つの対応するコーディングツリーブロックと、これらコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造(syntax structure)とを含み得る。モノクロームのピクチャまたは3つの別個の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを含み得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック(tree block)」または「最大コーディングユニット(largest coding unit)」(LCU)とも呼ばれ得る。HEVCのCTUは、H.264/AVCなどの、他の規格のマクロブロックに大まかに類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるわけではなく、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査順に連続的に並べられた整数の数のCTUを含み得る。
【0034】
[0041] 一例では、コーディングされたCTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するために、CTUのコーディングツリーブロックに対して4分木区分化(quad-tree partitioning)を再帰的に実行し得、これが、「コーディングツリーユニット」という名称の由来である。コーディングブロックは、サンプルのNxNブロックであり得る。CUは、ルーマサンプルアレイと、Cbサンプルアレイと、Crサンプルアレイとを有するピクチャについての、ルーマサンプルのコーディングブロックと、クロマサンプルの2つの対応するコーディングブロックと、これらコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを含み得る。モノクロームのピクチャまたは3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを含み得る。
【0035】
[0042] ビデオエンコーダ20は、CUのコーディングブロックを、1つまたは複数の予測ブロック(prediction blocks)に区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、これら予測ブロックを予測するために使用されるシンタックス構造とを含み得る。モノクロームのピクチャまたは3つの別個の色平面を有するピクチャでは、PUは、単一の予測ブロックと、予測ブロックを予測するために使用されるシンタックス構造とを含み得る。ビデオエンコーダ20は、CUの各PUのルーマ、Cb、およびCr予測ブロックについての予測ルーマ、Cb、およびCrブロックを生成し得る。
【0036】
[0043] 別の例として、ビデオエンコーダ20およびビデオデコーダ30は、JEMまたはVVCに従って動作するように構成され得る。JEMまたはVVCに従って、ビデオコーダ(ビデオエンコーダ20など)は、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ20は、4分木2分木(QTBT:quadtree-binary tree)構造またはマルチタイプツリー(MTT:Multi-Type Tree)構造などの、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCU、PU、およびTU(変換ユニット)間の分離などの、複数の区分タイプの概念を除去する。QTBT構造は、4分木区分化に従って区分される第1のレベルと、2分木区分化に従って区分される第2のレベルとの、2つのレベルを含む。QTBT構造のルートノードは、CTUに対応する。2分木のリーフノードは、コーディングユニット(CU)に対応する。
【0037】
[0044] MTT区分化構造では、ブロックは、4分木(QT)区分と、2分木(BT)区分と、1つまたは複数のタイプの3分木(TT)区分とを使用して区分され得る。3分木区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、3分木区分は、元のブロックを、中心を通って分割することなく、ブロックを3つのサブブロックに分割する。MTTにおける区分化タイプ(例えば、QT、BT、およびTT)は、対称または非対称であり得る。
【0038】
[0045] いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、ルミナンス成分とクロミナンス成分との各々を表すために、単一のQTBTまたはMTT構造を使用し得、一方、他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ルミナンス成分のために1つのQTBT/MTT構造および両方のクロミナンス成分のために別のQTBT/MTT構造(または、それぞれのクロミナンス成分のために2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
【0039】
[0046] ビデオエンコーダ20およびビデオデコーダ30は、4分木区分化、QTBT区分化、MTT区分化、または他の区分化構造(partitioning structure)を使用するように構成され得る。
【0040】
[0047] ビデオエンコーダ20は、ブロック(例えば、PU)についての予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ20が、PUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20が、PUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。
【0041】
[0048] JEMおよびVVCのいくつかの例はまた、アフィン動き補償モード(affine motion compensation mode)を提供し、これは、インター予測モードと見なされ得る。アフィン動き補償モードでは、ビデオエンコーダ20は、ズームインまたはズームアウト、回転、遠近動き(perspective motion)、または他の不規則な動きタイプなどの、非並進動き(non-translational motion)を表す2つ以上の動きベクトルを決定し得る。
【0042】
[0049] イントラ予測を実行するために、ビデオエンコーダ20は、予測ブロックを生成するためのイントラ予測モードを選択し得る。JEMおよびVVCのいくつかの例は、様々な方向性モード、ならびにプレーナモード(planar mode)およびDCモードを含む、67個のイントラ予測モードを提供する。一般に、ビデオエンコーダ20は、現在のブロック(例えば、CUのブロック)のサンプルをそこから予測するための、現在のブロックに隣接するサンプルを記述する(describes)イントラ予測モードを選択する。このようなサンプルは、一般に、ビデオエンコーダ20がラスタ走査順(左から右、上から下)でCTUおよびCUをコーディングすると仮定すると、現在のブロックと同じピクチャ内の、現在のブロックの上、左上、または左にあり得る。
【0043】
[0050] ビデオエンコーダ20が、CUの1つまたは複数のPUについての予測ルーマ、Cb、およびCrブロックを生成した後、ビデオエンコーダ20は、CUについてのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルと、CUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CUについてのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はまた、CUについてのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【0044】
[0051] いくつかの例では、ビデオエンコーダ20は、CUのルーマ、Cb、およびCr残差ブロックを、1つまたは複数のルーマ、Cb、およびCr変換ブロックに分解するために、4分木区分化を使用し得る。他の例では、変換ブロックは、予測ブロックと同じサイズである。変換ブロックは、同じ変換が適用されるサンプルの矩形(例えば、正方形または非正方形)ブロックである。CUの変換ユニット(TU:transform unit)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、これら変換ブロックサンプルを変換するために使用されるシンタックス構造とを含み得る。したがって、CUの各TUは、ルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとに関連付けられ得る。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロームのピクチャまたは3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するために使用されるシンタックス構造とを含み得る。
【0045】
[0052] ビデオエンコーダ20は、TUについてのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、TUについてのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ20は、TUについてのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
【0046】
[0053] CTU、CU、PU、およびTUでの上記ブロック構造は、一般に、HEVCにおいて使用されるブロック構造を説明する。しかしながら、他のビデオコーディング規格は、異なるブロック構造を使用し得る。一例として、HEVCは、PUおよびTUが異なるサイズまたは形状を有することを可能にするが、他のビデオコーディング規格は、予測ブロックおよび変換ブロックが同じサイズを有することを必要とし得る。本開示の技法は、HEVCのブロック構造に限定されず、他のブロック構造との互換性があり得る。
【0047】
[0054] 係数ブロック(例えば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、一般に、変換係数が量子化されて、変換係数を表すために使用されるデータ量をできる限り(possibly)低減させ、さらなる圧縮を提供するプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。例えば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。
【0048】
[0055] ビデオエンコーダ20は、コーディングされたピクチャおよび関連するデータの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、ネットワーク抽象レイヤ(NAL:Network Abstraction Layer)ユニットのシーケンスを含み得る。NALユニットは、NALユニット中のデータのタイプのインジケーションと、必要に応じてエミュレーション防止ビットが組み入れられている生バイトシーケンスペイロード(RBSP:raw byte sequence payload)の形式でそのデータを含むバイトとを含むシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは、ゼロビットを含む。
【0049】
[0056] 異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。例えば、第1のタイプのNALユニットは、ピクチャパラメータセット(PPS)のためのRBSPをカプセル化し得、第2のタイプのNALユニットは、コーディングされたスライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットは、補足エンハンスメント情報(SEI:supplemental enhancement information)メッセージのためのRBSPをカプセル化し得、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。
【0050】
[0057] ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得するために、ビットストリームをパース(parse)し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。加えて、ビデオデコーダ30は、現在のCUのTUに関連付けられた係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在のCUのTUに関連付けられた変換ブロックを再構成するために、係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在のCUのPUについての予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算すること(adding)によって、現在のCUのコーディングブロックを再構成し得る。ピクチャの各CUについてのコーディングブロックを再構成することによって、ビデオデコーダ30は、ピクチャを再構成し得る。
【0051】
[0058] HEVCおよびJEMの技法の態様が、ここで説明される。
図2は、HEVCデコーダ31の例となるブロック図を示す。
図2に示されるビデオデコーダ31は、概して、ビデオデコーダ30に対応するが、ビデオデコーダ30とは異なり、再構成と参照ピクチャバッファとの間に適応ループフィルタを含まない。ビデオデコーダ30は、
図5により詳細に例示される。HEVCは、デブロッキングフィルタ(DBF:de-blocking filter)とサンプル適応オフセット(SAO)フィルタとを含む、2つのインループフィルタを用いる。HEVC復号およびSAOに関する追加の詳細は、C. Fu、E. Alshina、A. Alshin、Y. Huang、C.Chen、Chia. Tsai、C. Hsu、S. Lei、J. Park、W. Han、「Sample adaptive offset in the HEVC standard」、IEEE Trans. Circuits Syst. Video Technol.、22(12):1755-1764(2012)に説明されている。
【0052】
[0059]
図2に例示されるように、DBFへの入力は、再構成ブロックからの出力で示されるように、イントラまたはインター予測後の再構成された画像であり得る。DBFは、コーディングされたブロック境界(block boundary)におけるアーティファクト(artifact)の検出を実行し、選択されたフィルタを適用することによって、アーティファクトを減衰させる。H.264/AVCデブロッキングフィルタと比較して、HEVCデブロッキングフィルタは、依然として、視覚アーティファクトの大幅な低減を達成しながら、より低い計算複雑さおよびより良い並列処理能力を有する。追加の例については、A. Norkin、G. Bjontegaard、A. Fuldseth、M. Narroschke、M. Ikeda、K. Andersson、Minhua Zhou、G. Van der Auwera、「HEVC Deblocking Filter」、IEEE Trans. Circuits Syst. Video Technol.、22(12): 1746-1754 (2012)を参照。
【0053】
[0060] HEVCでは、デブロッキングフィルタの決定は、ピクチャを8×8サンプルのブロックに分割するグリッド上にある4サンプル長の各境界について別々に行われる。デブロッキングは、以下の条件が真である場合に、ブロック境界に対して実行される:(1)ブロック境界が、予測ユニット(PU)または変換ユニット(TU)の境界である;(2)下記表1に定義されるように、境界強度(Bs)がゼロよりも大きい;(3)以下の式(1)に定義されるように、ブロック境界の両側にある信号の変動が、指定されたしきい値を下回る。
【0054】
[0061] 表1.2つの隣接ルーマブロック間の境界についての境界強度(Bs)値
【0055】
【0056】
ルーマブロック境界についてBs>0である場合には、以下の条件が成り立つ場合、デブロッキングフィルタリングがその境界に適用される:
【0057】
【0058】
ここで、pおよびqは、境界におけるルーマサンプル値であり、βは、しきい値である。
【0059】
[0062] HEVCは、2つのタイプのルーマデブロッキングフィルタ、すなわち、(i)ノーマルフィルタと、(ii)ストロングフィルタとを可能とする。デブロッキングフィルタの選択は、特定の信号変動項が、ある特定のしきい値よりも小さいかどうかに依存する(詳細については、上記で引用されたNorkin他による「HEVC Deblocking Filter」(2012)を参照)。フィルタリング決定は、4ピクセル長の垂直の(または場合によっては水平の)境界の2つの行(または列)のみに基づくが、フィルタは、境界における全ての行(または場合によっては列)に適用される。フィルタリングプロセスで使用されるピクセルの数、および各タイプのフィルタリングで修正され得るピクセルの数が、下記表2に要約される。
【0060】
【0061】
[0063] クロマデブロッキング(すなわち、クロマ成分に対して実行されるデブロッキングフィルタリング)は、Bsが2に等しいときのみ実行される。HEVCでは、1つのタイプのクロマデブロッキングフィルタのみが使用される。クロマデブロッキングフィルタは、ピクセルp0、p1、q0、q1を使用し、各行においてピクセルp0およびq0を修正し得る(行インデックスを示す第2の下付き文字は、フィルタが全ての行に適用されるので、簡潔さのために上記の説明では省略されている)。JEMでは、デブロッキングは、CUレベルで実行される。境界の両側のCUのサイズは、8×8よりも大きくなり得る。JEMにおける最小CUサイズは、4×4である。したがって、デブロッキングフィルタは、4×4ブロックの境界にも適用され得る。
【0062】
[0064] SAOフィルタへの入力は、
図2のデブロッキングフィルタからの出力で示されるように、デブロッキングフィルタを適用した後の再構成されたブロック(reconstructed block)であり得る。ビデオコーダが、最初に領域サンプルを、選択された分類器(classifier)で複数のカテゴリに分類し、各カテゴリに対するオフセットを取得し、次いで、オフセットをカテゴリの各サンプルに加算することによって、領域の平均サンプル歪み(mean sample distortion)を低減するために、SAOフィルタを適用し得、ここで、領域のオフセットおよび分類器インデックスは、ビットストリーム中にコーディングされる。HEVCでは、領域(SAOパラメータシグナリングのためのユニット)は、CTUであると定義される。
【0063】
[0065] 低い複雑さであることの要件を満たし得る2つのSAOタイプが、HEVCにおいて採用された。これらの2つのタイプは、エッジオフセット(EO:edge offset)およびバンドオフセット(BO:band offset)SAOであり、これらは、以下でさらに詳細に説明される。ビデオエンコーダ20およびビデオデコーダ30は、SAOタイプのインデックスをコーディングし得る。EOの場合、サンプル分類は、1-D方向性パターン:水平、垂直、斜め135°、および斜め45°による、現在のサンプルと隣接サンプルとの間の比較に基づく。
【0064】
[0066]
図3A~
図3Dは、EOサンプル分類についての4つの1-D方向性パターン:水平(
図3A、EOクラス=0)、垂直(
図3B、EOクラス=1)、斜め135°(
図3C、EOクラス=2)、および斜め45°(
図3D、EOクラス=3)を示す。SAOに関する追加の詳細は、C. Fu、E. Alshina、A. Alshin、Y. Huang、C. Chen、Chia. Tsai、C. Hsu、S. Lei、J. Park、W. Han、「Sample adaptive offset in the HEVC standard」、IEEE Trans. Circuits Syst. Video Technol.、22(12): 1755-1764 (2012)に説明されている。
図3A~
図3Dでは、ブロックCは、現在のブロックであり、ブロックAおよびBは、隣接ブロックである。
【0065】
[0067] 選択されたEOパターンに従って、表3のedgeIdxによって示される5つのカテゴリがさらに定義される。edgeIdxが0~3に等しい場合、オフセットの大きさ(magnitude)がシグナリングされ得るとともに、符号フラグが暗黙的にコーディングされ、すなわち、edgeIdxが0または1に等しい場合は、負のオフセット、および、edgeIdxが2または3に等しい場合は、正のオフセットである。edgeIdxが4に等しい場合、オフセットは、常に0に設定され、これは、このケースでは、演算が必要でないことを意味する。
【0066】
【0067】
[0068] BOの場合、サンプル分類は、サンプル値に基づく。各色成分は、BOタイプSAOフィルタリングについての分類のための、それ自体のSAOパラメータを有し得る。BOは、1つのオフセットが、同じバンドの全てのサンプルに加算されることを暗示する。サンプル値の範囲は、32個のバンドに均等に分割される。0から255までの範囲の8ビットのサンプルの場合、バンド幅は8であり、8kから8k+7までのサンプル値が、バンドkに属し、ここで、kは、0から31までの範囲にある。1つのオフセットが、同じバンドの全てのサンプルに加算される。バンドにおける元のサンプルと再構成されたサンプルとの間の平均差分(すわなち、バンドのオフセット)が、デコーダ(例えば、ビデオデコーダ30)にシグナリングされる。オフセットの符号に対する制約はない。4つの連続するバンドのオフセットおよび開始バンド位置(starting band position )のみが、デコーダ(例えば、ビデオデコーダ30)にシグナリングされる。
【0068】
[0069] ビデオエンコーダ20およびビデオデコーダ30は、JEMおよび/またはVVCのワーキングドラフトに記載された様々な適応ループフィルタリング技法をインプリメントするように構成され得る。いくつかの例となるJEMフィルタリング技法(例えば、ALF)の態様が、ここで説明される。修正されたデブロッキング(DB:de-blocking)およびHEVC SAO方法に加えて、JEMは、ジオメトリ変換ベースの適応ループフィルタリング(GALF:Geometry transformation-based Adaptive Loop Filtering)と呼ばれる、別のフィルタリング方法を含む。ALF/GALFへの入力は、SAOの適用後の再構成された画像(例えば、
図2のサンプル適応オフセットの出力)であり得る。GALFの態様は、Tsai, C.Y.、Chen, C.Y.、Yamakage, T.、Chong, I.S.、Huang, Y.W.、Fu, C.M.、Itoh, T.、Watanabe, T.、Chujoh, T.、Karczewicz, M.、および Lei, S.M.、「Adaptive loop filtering for video coding」、IEEE Journal of Selected Topics in Signal Processing,7(6)、pp.934-945、2013およびM. Karczewicz、L. Zhang、W.-J. Chien、およびX. Li、「Geometry transformation-based adaptive in-loop filter」、Picture Coding Symposium (PCS)、2016に説明されている。
【0069】
[0070] ALF技法は、適応ウィーナーフィルタ(adaptive Wiener filter)を使用することによって、元のサンプルと、復号された/再構成されたサンプルとの間の平均2乗誤差を最小限にすることを試みる。入力画像をp、ソース画像をS、および有限インパルス応答(FIR)フィルタをhとして示す。次いで、2乗誤差の和(SSE:sum of squared errors)の以下の式が最小化されるべきであり、ここで、(x,y)は、pまたはSにおける任意のピクセル位置を示す。
【0070】
【0071】
hoptで表される最適なhは、h(i,j)に関するSSEの偏導関数を以下のように0に等しく設定することによって得られ得る:
【0072】
【0073】
これにより、以下に示されるウィーナー・ホップ(Wiener-Hopf)の方程式が導かれ、最適なフィルタhoptが得られる:
【0074】
【0075】
[0071] JEMまたはVVCのいくつかの例では、ピクチャ全体に対して1つのフィルタを使用する代わりに、ビデオエンコーダ20および/またはビデオデコーダ30は、局所勾配(local gradient)に基づいて、ピクチャ内のサンプルを25個のクラス(class)に分類するように構成され得る。ビデオエンコーダ20および/またはビデオデコーダ30は、各クラスにおけるピクセルのために別個の最適ウィーナーフィルタを導出し得る。いくつかの技法が、シグナリングオーバーヘッド(signaling overhead)および計算複雑さ(computational complexity)を低減させることによって、適応ループフィルタリングの有効性を増大させるために用いられてきた。シグナリングオーバーヘッドおよび/または計算複雑さを低減させることによって、ALFの有効性を増大させるために使用され得る技法のうちのいくつかが、以下に列挙される:
1.固定フィルタからの予測:各クラスについての最適なフィルタ係数が、各クラスについての16個の候補フィルタを含む固定フィルタの予測プールを使用して予測される。各クラスについて最良の予測候補が選択され、予測誤差のみが送信される。
2.クラスマージング:25個の異なるフィルタ(各クラスにつき1つ)を使用する代わりに、複数のクラスにおけるピクセルは、コーディングされるべきフィルタパラメータの数を低減させるために、1つのフィルタを共有し得る。2つのクラスをマージすることは、より高い累積SSEであるが、より低いレート-歪み(RD:Rate-Distortion)コストをもたらし得る。
3.可変数のタップ:フィルタタップの数は、フレームレベルで適応できる(adaptive)。理論的には、より多くのタップを有するフィルタは、より低いSSEを達成し得るが、より多くのフィルタ係数に関連付けられたビットオーバーヘッドのために、RDコストの観点からは、良い選択ではない場合がある。
4.ブロックレベルのオン/オフ制御:ALFは、ブロックごとにオンおよびオフ(イネーブルまたはディセーブル)にされ得る。オン/オフ制御フラグがシグナリングされるブロックサイズは、フレームレベルで適応的に選択される。フィルタ係数は、ALFがイネーブルにされる(すなわち、ALFが使用される)それらのブロックのみからのピクセルを使用して再計算され得る。
5.時間的予測:以前にコーディングされたフレームに対して導出されたフィルタが、バッファに記憶されている。現在のフレームがPまたはBフレームである場合には、記憶されたセットのフィルタのうちの1つが、それがより良好なRDコストをもたらす場合、このフレームをフィルタリングするために使用され得る。フラグ(flag)が、時間的予測の使用を示すためにシグナリングされる。時間的予測が使用される場合には、記憶されたフィルタのどのセットが使用されるかを示すインデックスがシグナリングされる。ALF係数の追加のシグナリングは必要ない。ブロックレベルALFオン/オフ制御フラグはまた、時間的予測を使用して、フレームのためにシグナリングされ得る。
【0076】
[0072] ALFのいくつかの態様の詳細が、この段落と以下の段落において要約される。ALFのいくつかの態様は、ピクセル分類およびジオメトリ変換に関連する。一例では、ビデオエンコーダ20およびビデオデコーダ30は、(ALFの前の)再構成されたフレーム中の各ピクセルをカバーする6×6ウィンドウ内の全てのピクセルにおいて、垂直ラプラシアン(Laplacian)、水平ラプラシアン、および斜めラプラシアンの絶対値の和を計算するように構成され得る。ビデオエンコーダ20およびビデオデコーダ30は、再構成されたフレームを重複しない2×2ブロックに分割する。ビデオエンコーダ20およびビデオデコーダ30は、これらのブロック中の4つのピクセルを、そのブロックの全体のラプラシアンアクティビティおよび方向性(total Laplacian activity and directionality)に基づいて、Ck(k=0,1,...,24)で表される25個のカテゴリのうちの1つに分類する。加えて、ビデオエンコーダ20およびビデオデコーダ30は、そのブロックの勾配方向性に基づいて、フィルタに4つのジオメトリ変換(変換なし、対角反転、垂直反転、または回転)のうちの1つを適用する。さらなる詳細は、M. Karczewicz、L. Zhang、W.-J. Chien、およびX. Li、「Geometry transformation-based adaptive in-loop filter」、Picture Coding Symposium (PCS)、2016を参照のこと。
【0077】
[0073] 適応ループフィルタリングのいくつかの態様は、固定フィルタからのフィルタ導出および予測に関する。各クラスCkについて、ビデオエンコーダ20およびビデオデコーダ30は、最初に、フィルタによって与えられるSSEに基づいて、hpred,kで表される、Ckのためのプールからの最良の予測フィルタを決定する。最小化されるべきCkのSSEは、以下のように書かれ得る。
【0078】
【0079】
ここで、hΔ,kは、Ckのための最適なフィルタと、hpred,kとの間の差分である。p′(x,y)=Σi,jhpred,k(i,j)p(x-i,y-j)を、hpred,kによってピクセルp(x,y)をフィルタリングした結果とする。この場合、SSEkの式は、次のように書き換えられ得る。
【0080】
【0081】
hΔ,k(i,j)に関するSSEkの偏導関数を0に等しくすることによって、修正されたウィーナー・ホップの方程式が以下のように得られる:
【0082】
【0083】
式を簡略化するために、(x,y)∈Ckでの、Σx,yp(x-i,y-j)p(x-m,y-n)およびΣx,y(S(x,y)-p′(x,y))p(x-m,y-n)を、それぞれRpp,k(i-m,j-n)およびR′ps,k(m,n)で表す。この場合、上記式は、次のように書かれ得る。
【0084】
【0085】
全てのCkについて、自己相関行列Rpp,k(i-m,j-n)および相互相関ベクトルR′ps,k(m,n)は、全ての(x,y)∈Ckにわたって計算される。
【0086】
[0074] 適応ループフィルタリングの一例では、ビデオエンコーダ20は、最適なフィルタと固定予測フィルタとの間の差分のみを計算および送信する。プール内で利用可能な候補フィルタのいずれも良好な予測子でない場合には、ビデオエンコーダ20およびビデオデコーダ30は、予測子としてアイデンティティフィルタ(identity filter)(すなわち、入力と出力とを同一にする、中心において1に等しい1つの非ゼロ係数(non-zero coefficient)のみを有するフィルタ)を使用する。
【0087】
[0075] 適応ループフィルタリングのいくつかの態様は、ピクセルクラスのマージングに関する。クラスは、シグナリングフィルタ係数のオーバーヘッドを低減させるためにマージされる。2つのクラスをマージするコストは、SSEに関して(with respect to)増大される。それぞれSSEmおよびSSEnによって与えられるSSEでの2つのクラスCmおよびCnを考慮する。Cm+nは、SSEm+nで表されるSSEでの(with)、CmとCnをマージすることによって得られるクラスを表すものとする。SSEm+nは、常にSSEm+SSEn以上である。ΔSSEm+nは、CmとCnをマージすることによって引き起こされるSSEの増大を表すものとし、これは、SSEm+n-(SSEm+SSEn)に等しい。SSEm+nを計算するために、ビデオエンコーダ20は、(1)と同様の以下の式を使用して、Cm+nについてのフィルタ予測誤差であるhΔ,m+nを導出し得る:
【0088】
【0089】
ビデオエンコーダ20は、マージされたカテゴリCm+nについてのSSEを次のように計算し得る:
【0090】
【0091】
[0076] クラスの数をNからN-1に低減させるために、2つのクラスCmおよびCnは、それらをマージすることがその他任意の組合せと比較して最小のΔSSEm+nをもたらすように、求められる必要があり得る。いくつかのALF設計では、ビデオエンコーダ20は、最小のマージコストを有するペアを求めるために、マージするために利用可能なクラスの全てのペアをチェックするように構成される。
【0092】
[0077] CmおよびCn(ここで、m<n)がマージされる場合には、ビデオエンコーダ20およびビデオデコーダ30は、Cnをさらなるマージのために利用不可能であるとマークし得、Cmのための自己相関および相互相関は、以下のように、組み合わされた自己相関および相互相関に変更される:
【0093】
【0094】
[0078] ビデオエンコーダ20は、RDコストに基づいて、各フレームについてのマージ後のALFクラスの最適な数を決定し得る。一例では、これは、25個のクラスから開始し、(利用可能なクラスのセットからの)クラスのペアを、1つのクラスのみが残るまで連続的にマージすることによって行われる。マージ後に残ったクラスの可能な数(1,2,...,25)ごとに、ビデオエンコーダ20は、どのクラスが共にマージされたかを示すマップを記憶し得る。次いで、ビデオエンコーダ20は、以下のように、RDコストが最小化されるように、クラスの最適な数を選択する:
【0095】
【0096】
ここで、D|Nは、N個のクラスを使用した総SSE
【0097】
【0098】
であり、R|Nは、N個のフィルタをコーディングするために使用されるビットの総数であり、λは、量子化パラメータ(QP:quantization parameter)によって決定される重み付け係数である。ビデオエンコーダ20は、ビデオデコーダ30に、どのクラスが共にマージされているかを示す、Nopt個のクラスについてのマージマップを送信し得る。
【0099】
[0079] ALFパラメータをシグナリングすることの態様が、以下で説明される。ビデオエンコーダ20によって実行される、例となるALFパラメータ符号化プロセスの簡単なステップごとの説明が、以下で与えられる。ビデオデコーダ30は、逆のプロセスを実行するように構成され得る(例えば、ビデオデコーダ30の観点からのシグナリング(signal)は、シンタックス要素の受信である)。
1.フレームレベルALFオン/オフフラグをシグナリングする。
2.ALFがオンである場合には、前のピクチャからのフィルタの使用を示す時間的予測フラグをシグナリングする。
3.時間的予測が使用される場合には、それからの対応するALFパラメータが現在のフレームをフィルタリングするために使用されるフレームのインデックスをシグナリングする。
4.時間的予測が使用されない場合には、以下のように、補助ALF情報およびフィルタ係数をシグナリングする:
a.以下の補助ALF情報は、フィルタ係数をシグナリングする前にシグナリングされ得る。補助ALF情報は、次のものを含み得る:
i.クラスマージ後に使用される一意のフィルタの数。
ii.フィルタタップの数。
iii.どのクラスがフィルタ予測誤差を共有するかを示すクラスマージ情報。
iv.各クラスについての固定フィルタ予測子のインデックス。
b.補助ALF情報をシグナリングした後、フィルタ係数予測誤差が、以下のようにシグナリングされ得る:
i.フラグが、マージ後に残ったクラスのうちのいくつかについて、フィルタ予測誤差が強制的にゼロ(0)にされるかどうかを示すためにシグナリングされる。
ii.フラグが、(マージ後に残ったクラスの数が1よりも大きい場合)差分コーディングがフィルタ予測誤差をシグナリングするために使用されるかどうかを示すためにシグナリングされる。
iii.次いで、フィルタ係数予測誤差は、k次指数ゴロムコード(k-th order Exp-Golomb code)を使用してシグナリングされ、ここで、異なる係数位置についてのk値は、経験的に(empirically)選択される。
c.クロマ成分のためのフィルタ係数は、利用可能な場合、いかなる予測方法もなしに直接コーディングされる。
5.最後に、ブロックレベルALFオン/オフ制御フラグがシグナリングされる。
【0100】
[0080] JEMのいくつかの例における適応ループフィルタリングの設計は、1つまたは複数の潜在的な問題を提示し得る。一例として、いくつかの例となる適応ループフィルタリング設計は、フレーム全体に対して1セットのフィルタ(例えば、ピクセルの各クラスについて1つのフィルタ、またはフレームにおける複数のクラスの間で共有される1つのフィルタ)を設計するために、各フレームに対して複数のパス(pass)を実行する。このような技法は、高いエンコーダレイテンシをもたらす。高いエンコーダレイテンシは、部分的に符号化されたフレームであってもできるだけ早くチャネルに送ることが重要であり得るビデオ会議などの低遅延アプリケーションにおいて、特に問題となり得る。
【0101】
[0081] 別の例として、いくつかの適応ループフィルタリング設計によれば、1セットのフィルタがピクチャ全体のために使用される。元のピクチャおよび再構成されたピクチャの小さいブロックにおける局所統計(local statistics)は、ピクチャ全体を使用して得られる累積統計(cumulative statistics)とは異なり得る。したがって、ピクチャ全体に対して最適であるALFは、所与のブロックに対して最適ではない場合がある。
【0102】
[0082] 別の例として、より良好な局所適応性(local adaptivity)を得るために、ピクチャの小さいブロックを使用して新しいセットのウィーナーフィルタを設計することに伴う潜在的な問題は、小さいブロック中で利用可能なピクセルの数が、ビデオエンコーダ20が相関行列およびベクトルの良好な推定値を決定するのに十分ではない場合があることである。これは、不良設定されたウィーナー・ホップの方程式をもたらし得、その結果、最適ではない(less than optimal)ALF係数を出力し得る。
【0103】
[0083] 別の例として、いくつかの例となる適応ループフィルタリング設計は、25個のクラスの各々について16個の固定フィルタを定義し、それによって、合計400個のフィルタをもたらす。これらのフィルタは、各クラスについての最終フィルタ係数のための予測子フィルタ(predictor filter)として使用され得る。使用される予測子フィルタのインデックスは、各クラスについてシグナリングされる。これは、高いシグナリングオーバーヘッド(signaling overhead)を引き起こし、全体的なコーディング利得(coding gain)を低減させ得る。
【0104】
[0084] フィルタの固定セットを予測子として使用することの別の潜在的な欠点は、予測子セットが、前のフレームのために設計された新しいフィルタに基づいて修正されないことである。時間的に隣接するフレームは、同様の統計を有する可能性が高いので、前のフレームのための最適なフィルタを使用することは、現在のフレームのための最適なフィルタの効率的な予測をもたらし得る。
【0105】
[0085] 別の例として、いくつかの例となる適応ループフィルタリング設計は、ブロックレベルのフィルタオン/オフ決定を行うために、現在のフレームに対して2つのパスを必要とする。これは、追加のエンコーダレイテンシをもたらす。それについてのALFオン/オフフラグがシグナリングされるブロックは、コーディングユニット(CU)とアライン(align)しない。したがって、モード、コード化ブロックフラグ(coded block flag)などのようなCU情報は、ALFオン/オフ制御決定において考慮されることができない。この情報を使用することは、オン/オフシグナリングオーバーヘッドを低減させ得る。
【0106】
[0086] 上記で説明された問題のうちの1つまたは複数に対処するために、本開示は、適応ループフィルタリングを使用することによって得られるコーディング利得および視覚的な品質(visual quality)をさらに改善するための技法を説明する。ビデオエンコーダ20および/またはビデオデコーダ30は、以下の項目別の技法のうちの任意のものを個々に適用し得る。代替として、ビデオエンコーダ20および/またはビデオデコーダ30は、以下で説明される項目別の技法の任意の組合せを適用し得る。
【0107】
[0087] 本開示の1つの例となる技法によれば、ビデオエンコーダ20は、1つのピクチャ/スライス/タイル内のブロックごとに適応ループフィルタのセットをシグナリングし得る。例えば、ビデオデータのピクチャ、スライス、またはタイル内の、ビデオデータの各ブロックについて、ビデオエンコーダ20は、そのブロックのために使用すべき適応ループフィルタのセットを示す1つまたは複数のシンタックス要素を符号化するように構成され得る。ビデオデコーダ30は、そのブロックのために使用すべき適応ループフィルタのセットを決定するために、各ブロックについての1つまたは複数のシンタックス要素を復号するように構成され得る。
【0108】
[0088] 一例では、ビデオエンコーダ20は、フィルタセット(例えば、適応ループフィルタの複数のセット)のリストへのセットインデックス(set index)を符号化することによって、ALFセット(例えば、上述された適応ループフィルタのセット)を示すように構成され得る。本開示では、「フィルタセット(filter set)」という用語は、適応ループフィルタの単一のセットを指し得、「フィルタセット(filter sets)」という用語は、適応ループフィルタの複数のセットを指し得、「フィルタセットリスト(filter set list)」という用語は、適応ループフィルタの複数のセットのリストを指し得る。一例では、フィルタセットリストは、適応ループフィルタの複数のセットを含み得る。すなわち、フィルタセットリストは、ピクチャ/スライス/タイルについての全ての決定された可能なフィルタセット(すなわち、適応ループフィルタの複数のセット)を含み得る。いくつかの例では、インデックスは、リスト中に含まれる適応ループフィルタの複数のセットの中から、適応ループフィルタの特定のセットを識別する。ビデオデコーダ30は、所定のルールに従って、適応ループフィルタの複数のセットを記憶および/または決定するように構成され得る。以下で説明されるように、適応ループフィルタの複数のセットは、事前トレーニングされたフィルタ(pre-trained filter)と、現在のピクチャのためにシグナリングされた適応ループフィルタと、前のピクチャから再使用される適応ループフィルタとを含み得る。一例では、適応ループフィルタの特定のセットについて、適応ループフィルタの特定のセットの各それぞれのセットは、現在のピクチャのためにシグナリングされた現在の適応ループフィルタ(current adaptive loop filter)または事前トレーニングされた適応ループフィルタ(pre-trained adaptive loop filter)のうちの1つまたは複数を含む。ビデオデコーダ30は、ビデオエンコーダ20によって送られたインデックス(index)を復号し、適応ループフィルタの複数のセットの中から、ビデオデータの特定のブロックのために使用すべき適応ループフィルタのセットを決定するように構成され得る。
【0109】
[0089] このようにして、ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定するように構成され得る。本開示の一例では、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含む。ビデオエンコーダ20およびビデオデコーダ30は、現在のピクチャのそれぞれのブロックについて、(例えば、ALFオン/オフフラグによって示されるように)適応ループフィルタリングがそのブロックについてイネーブルにされるケースでは、適応ループフィルタのそれぞれのセットを決定するように構成され得る。
【0110】
[0090] ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングするようにさらに構成され得る。例えば、上記で説明されたように、ビデオエンコーダ20およびビデオデコーダ30は、ブロックのサンプルを分類し、次いで、分類に関連付けられた適応ループフィルタのそれぞれのセット中の適応ループフィルタを使用するように構成され得る。別の例では、ビデオエンコーダ20は、適応ループフィルタのそれぞれのセット中のどの適応ループフィルタを現在のブロックのために使用すべきかを示すシンタックス要素をシグナリングするように構成され得る。したがって、一例では、ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタリングがそれぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグ(例えば、ブロックレベルALFオン/オフフラグ)をコーディングすることと、ブロックごとのそれぞれのフラグに基づいて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを示す、それぞれのシンタックス要素をコーディングすることと、を行うように構成され得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタリングが現在のブロックのために使用されない(例えば、ブロックレベルALFフラグが、適応ループフィルタリングがオフであるおよび/またはイネーブルにされないことを示す)ケースでは、適応ループフィルタのそれぞれのセットを示す、それぞれのシンタックス要素をコーディングしないことになる。
【0111】
[0091] 上記の例では、現在のピクチャの「ブロック」は、任意のサイズのブロックとして定義され得る。一例では、ブロックは、コーディングツリーユニット(CTU)またはその他任意のブロックであり得る。ブロックは、区分化から分離され(decoupled from partitioning)得る。ブロックがCTUであるケースでは、ビデオエンコーダ20およびビデオデコーダ30は、CTUから区分された全てのブロックについて、そのCTUのために選ばれた適応ループフィルタのセットを使用するように構成され得る。
【0112】
[0092] 一例では、ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタの複数のセットのリストを決定するように構成され得る。ビデオエンコーダ20およびビデオデコーダ30は、ピクチャごと、スライスごと、またはタイルごとに、そのようなリストを決定するように構成され得る。適応ループフィルタの複数のセットの適応ループフィルタの各セットは、サンプルの各可能な分類が、関連するフィルタを有するように構成され得る。すなわち、各セットは、クラスごとに割り当てられたフィルタを含み得る。上記で説明されたように、ビデオエンコーダ20およびビデオデコーダ30は、ブロックごとに適応ループフィルタの複数のセットのリストへのセットインデックスをコーディングするように構成され得る。一例では、適応ループフィルタの複数のセットのリストは、テーブルであり得、ここで、テーブル中の各エントリは、適応ループフィルタの特定のセットである。加えて、ビデオエンコーダ20およびビデオデコーダ30は、ALFが使用されるか否かを示すために、ブロックごとのフラグ(例えば、ブロックレベルALFオン/オフフラグ)をコーディングするように構成され得る。適応ループフィルタの複数のセットのリストは、1つまたは複数の事前トレーニングされたフィルタ、前のピクチャからのフィルタを使用して導出された1つまたは複数のフィルタ、および/または現在のピクチャのためのビットストリーム中でシグナリングされたフィルタを含み得る。
【0113】
[0093] 本開示のいくつかの例によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、異なるピクチャにわたって複数のフィルタセットのリストを共有し得る(例えば、前のピクチャのために使用された適応ループフィルタが、現在のブロックをコーディングするために使用される複数のフィルタセットのセット中(in a set of the plurality of filter sets)に含まれる)。一例では、フィルタセットリストは、事前トレーニングされたフィルタで初期化され得る。ピクチャをコーディングした後、ビデオエンコーダ20は、符号化されたピクチャに基づいて新しいフィルタセットを導出し、新しいフィルタセットをフィルタセットリストに追加し得る。代替として、新しいフィルタセットは、リスト中の既存のフィルタセットを置き換え得る。別のピクチャをコーディングした後、ビデオエンコーダ20は、別のフィルタセットを導出し、導出されたフィルタセットをフィルタセットリスト中に含め得る。この例では、フィルタセットリストは、全てのピクチャに対して共通であり、ピクチャをコーディングした後に更新され得る。デコーダ側から見ると、ビデオデコーダ30は、ピクチャを復号した後に、またはピクチャを復号する前に、新しいフィルタセットのシグナリングを検出し得る。
【0114】
[0094] 本開示のいくつかの例によれば、ビデオエンコーダ20は、ピクチャごと、スライスごと、および/またはタイルごとに、フィルタの新しいセットのシンタックス要素をシグナリング(例えば、符号化)するように構成され得る。ビデオデコーダ30は、ビデオエンコーダ20からのシグナリングに基づいてフィルタの新しいセットを決定し、フィルタの新しいセットを、フィルタの複数のセットを含むリストに追加するように構成され得る。
【0115】
[0095] 一例では、ビデオエンコーダ20およびビデオデコーダ30は、フィルタの新しいセットをフィルタセットリストに追加するように構成され得る。次いで、更新されたリストが、次の1つまたは複数のピクチャ内のブロックをフィルタリングするために使用され得る。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、現在のピクチャ/スライス/タイル内のブロックをフィルタリングするために、(例えば、現在のピクチャ/スライス/タイルを使用して導出されたフィルタの新しいセットを含む)更新されたリストを使用するように構成され得る。
【0116】
[0096] 本開示のいくつかの例によれば、ビデオエンコーダ20およびビデオデコーダ30は、前のピクチャ、前のスライス、および/または前のタイルを使用して導出されたフィルタを用いて、フィルタセットリスト(例えば、適応ループフィルタの複数のセットのリスト)を更新し得る。ビデオエンコーダ20およびビデオデコーダ30がフィルタセットリスト中に適応ループフィルタのセットを追加するように構成され得る順序は、固定か、予め定義されるか、またはフレキシブルであり得る。リストは、現在のピクチャに関連する情報と、リスト中の対応するフィルタがそれから導出されるピクチャに関連する情報とに基づいて、ピクチャごとに再順序付けされ得る。ビデオエンコーダ20は、フィルタセットリスト中のインデックスを使用して、ビデオデコーダ30にフィルタセットを示し得る。いくつかの例では、ビデオエンコーダ20は、より頻繁に使用されるフィルタまたは新たに追加されたフィルタにより小さいインデックス値(smaller index value)を割り当て得る。
【0117】
[0097] 一例では、ビデオエンコーダ20およびビデオデコーダ30は、新たに導出されたフィルタセットをリストの先頭に追加するように構成され得る。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、リスト中の、前のフレームを使用して導出されたフィルタのセット(例えば、前の適応ループフィルタ)を、現在シグナリングされているフィルタの後、およびリスト中の既存のフィルタセット(例えば、事前トレーニングされた固定フィルタのセット)の前に、追加するように構成され得る。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、現在の適応ループフィルタが最初に追加され、前の適応ループフィルタが2番目に追加され、事前トレーニングされた適応ループフィルタが最後に追加されるように、適応ループフィルタの各それぞれのセットに適応ループフィルタを追加するように構成され得る。
【0118】
[0098] 本開示の別の例では、リスト中のフィルタセットの順序付けは、他のピクチャ関連情報に依存し得る。例えば、現在のピクチャと同じ時間的レイヤにおけるピクチャから導出されたフィルタは、別の時間的レイヤにおけるピクチャを使用して導出されたフィルタの前に、リスト中に置かれ得る。別の例では、リスト中のフィルタセットのインデックスは、それがそこから導出される対応するピクチャが、現在のピクチャの予測のために使用される参照ピクチャであるかどうかに依存し得る。ビデオエンコーダ20およびビデオデコーダ30は、他の参照ピクチャから導出されたフィルタの前に、より頻繁に使用される参照ピクチャに対応するフィルタを追加するように構成され得る。このようにしてフィルタセットを順序付けることは、フィルタセットリスト中の最も頻繁に使用されるフィルタセットのために、より少ないビットを有するシンタックス要素(例えば、フィルタセットリスト中のインデックス)をもたらし得る。したがって、より少ないビットが、ブロックのために使用されるフィルタセットをシグナリングするために使用され得、したがって、コーディング効率を増大させる。
【0119】
[0099] 別の例では、ビデオエンコーダ20およびビデオデコーダ30は、現在のピクチャと同様の量子化パラメータ(QP:quantization parameter)を用いてコーディングされたピクチャを使用して導出されたフィルタを、異なるQPを用いてコーディングされた前のピクチャから導出されたフィルタの前に追加するように構成され得る。
【0120】
[0100] 本開示の別の例では、ビデオエンコーダ20およびビデオデコーダ30は、フィルタセットリスト中のフィルタのセットの最大数を制限するように構成され得る。一例では、最大32セットのフィルタが、フィルタセットリスト中に保持され得る。いくつかの例では、ビデオエンコーダ20は、スライスヘッダ、シーケンスパラメータセット、ピクチャパラメータセットの中で、他の高レベルシンタックス情報の中で、またはその他の場所で、リスト中のフィルタセットの最大数をシグナリングするように構成され得る。
【0121】
[0101] 本開示の別の例では、ビデオエンコーダ20は、異なるフィルタセットインデックスをシグナリングするために、異なる数のビットを使用し得る。より高いインデックス位置と比較して、より少ないビットがリスト中のより低いインデックス位置を示すために使用され得る(これは、リストの最上部付近のフィルタセットは、選択される可能性がより高いからである)。先と同様に、これは、より頻繁にブロックのために使用されるフィルタセットをシグナリングするために、より少ないビットが使用されることをもたらし得、したがって、コーディング効率を増大させる。
【0122】
[0102] 本開示のいくつかの例によれば、ビデオエンコーダ20およびビデオデコーダ30は、いくつかのブロックに関してALF情報を共有する(例えば、2つ以上のブロックにわたるALF情報のマージング)ように構成され得る。一例では、ビデオエンコーダ20およびビデオデコーダ30は、複数のブロックにわたって、フィルタのセットのインデックスおよび/またはALFオン/オフフラグ(このフラグは、適応ループフィルタリングがブロックに適用されるかどうかを示す)を共有するように構成され得る。ALFマージインジケータは、どのブロックがマージされるか、およびどのALF情報がALFマージインジケータに関連付けられているかを示し得る。マージインジケータ(merge indicator)は、インデックス、フラグ、またはその他任意のシンタックス要素であり得る。
【0123】
[0103] 一例では、ビデオエンコーダ20およびビデオデコーダ30は、ブロックのALF情報を、上のブロックと、または左のブロックとマージするように構成され得る。他の例では、1つのブロックと、ピクチャ内のその他任意のブロック(すなわち、必ずしも隣接ブロックではない)とのマージングを可能にする、よりフレキシブルなALF情報マージングも使用され得る。
【0124】
[0104] 本開示のいくつかの例では、ビデオデコーダ30は、他の既存のブロック情報に基づいて、ALFオン/オフフラグを導出するように構成され得る。一例では、ビデオデコーダ30は、既存のブロック情報に基づいて、ALFオン/オフフラグを導出し得、したがって、ビデオエンコーダ20は、ALFオン/オフフラグをシグナリングしない場合がある。ビデオエンコーダ20は、ALFブロックとして示される、ブロックのグループのためのALFオン/オフフラグをシグナリングし得る。ALFブロックのサイズは、予め決定され得るか、またはビデオエンコーダ20によってシグナリングされ得る。一例では、同じALFオン/オフフラグを共有するブロックは、ALFブロックを表し得る。別の例では、ALFブロックは、1つのブロックに等しくあり得る。
a.一例では、ビデオエンコーダ20およびビデオデコーダ30は、非ゼロコード化ブロックフラグ(CBF:coded block flag)を有する、同じALFオン/オフフラグを共有する、ALFブロック中のブロックの数に基づいて、ALFオン/オフフラグを導出するように構成され得る。CBFは、ブロックが何らかの有意(significant)(例えば、非ゼロ変換係数(non-zero transform coefficient))を含むかどうかを示す。CBFの「1」の値は、ブロックが非ゼロ変換係数を含むことを示す。非ゼロCBFの数がある特定のしきい値よりも小さい場合には、ALFがディセーブルにされ得るか、またはデフォルトALFフィルタが、ALFブロック中のそれらのブロックに適用され得る。
b.上記のサブブレット(sub-bullet)「a」の例では、非ゼロ変換係数の数が、CBFの代わりにカウントされ得る。しきい値がカウントされた係数に対して導入され得、非ゼロ変換係数の数がしきい値よりも小さい場合、適応ループフィルタリングが、ALFブロック中に含まれるブロックに対してディセーブルにされ得るか、またはデフォルトALFフィルタが、それらのブロックに適用され得る。
c.別の例では、スキップモード(skip mode)でコーディングされたALFブロック中のブロックの数が、ある特定のしきい値よりも大きい場合には、適応ループフィルタリングが、ALFブロック中のそれらのブロックに対してディセーブルにされ得る。サブブレット「c」の技法は、任意の組合せにおいて、サブブレット「a」および「b」の技法とともに使用され得る。
d.上記のサブブレット「c」の例では、スキップモードは一例として使用されており、他のコーディングモード(例えば、特定のイントラ予測方向などの特定のモード(particular mode)、特定のインター予測モードなど)が、ALFオン/オフフラグを導出する際に利用され得る。
【0125】
[0105]
図4は、本開示で説明される技法をインプリメントし得る、例となるビデオエンコーダ20を例示するブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または除去するために、空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣り合ったフレームまたはピクチャ内のビデオにおける時間的冗長性を低減または除去するために、時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのうちの任意のものを指し得る。片方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのうちの任意のものを指し得る。
【0126】
[0106]
図4の例では、ビデオエンコーダ20は、ビデオデータメモリ33、区分化ユニット35、予測処理ユニット41、加算器50、変換処理ユニット52、量子化ユニット54、エントロピー符号化ユニット56を含む。予測処理ユニット41は、動き推定ユニット(MEU:motion estimation unit)42、動き補償ユニット(MCU:motion compensation unit)44、およびイントラ予測ユニット46を含む。ビデオブロックの再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58、逆変換処理ユニット60、加算器62、フィルタユニット64、および復号ピクチャバッファ(DPB:decoded picture buffer)66を含む。
【0127】
[0107]
図4に示されるように、ビデオエンコーダ20は、ビデオデータを受信し、受信されたビデオデータをビデオデータメモリ33に記憶する。ビデオデータメモリ33は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ33に記憶されるビデオデータは、例えば、ビデオソース18から取得され得る。DPB66は、例えば、イントラまたはインターコーディングモードで、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ33およびDPB66は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ33およびDPB66は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ33は、ビデオエンコーダ20の他の構成要素とともにオンチップであり得、またはこれらの構成要素に対してオフチップであり得る。
【0128】
[0108] 区分化ユニット35は、ビデオデータメモリ33からビデオデータを取り出し、ビデオデータをビデオブロックに区分する。この区分化はまた、スライス、タイル、または他のより大きいユニットへの区分化のみならず、例えば、LCUおよびCUの4分木構造による、ビデオブロック区分化も含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を例示する。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、エラー結果(例えば、コーディングレートおよび歪みのレベル)に基づいて、現在のビデオブロックのために、複数のイントラコーディングモードのうちの1つまたは複数のインターコーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、残差ブロックデータを生成するために加算器50に、および参照ピクチャとして使用するための符号化されたブロックを再構成するために加算器62に、結果として得られたイントラまたはインターコーディングされたブロックを提供し得る。
【0129】
[0109] 予測処理ユニット41内のイントラ予測ユニット46は、空間的圧縮を提供するために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに関連して(relative to)、現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、時間的圧縮を提供するために、1つまたは複数の参照ピクチャ内の1つまたは複数の予測ブロックに関連して、現在のビデオブロックのインター予測コーディングを実行する。
【0130】
[0110] 動き推定ユニット42は、ビデオシーケンスのための所定のパターンに従って、ビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、PスライスまたはBスライスとして、シーケンス中のビデオスライスを指定し得る。動き推定ユニット42および動き補償ユニット44は、高度に一体化され得るが、概念的な目的のために別個に例示されている。動き推定ユニット42によって実行される動き推定は、動きベクトルを生成するプロセスであり、これは、ビデオブロックに関する動きを推定する。動きベクトルは、例えば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。
【0131】
[0111] 予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリクスによって決定され得るピクセル差分の観点から、コーディングされるべきビデオブロックのPUと密接に一致することが見出されたブロックである。いくつかの例では、ビデオエンコーダ20は、DPB66に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。例えば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【0132】
[0112] 動き推定ユニット42は、PUの位置と、参照ピクチャの予測ブロックの位置とを比較することによって、インターコーディングされたスライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、その各々がDPB66に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。動き推定ユニット42は、計算された動きベクトルを、エントロピー符号化ユニット56および動き補償ユニット44に送る。
【0133】
[0113] 動き補償ユニット44によって実行される動き補償は、動き推定によって決定される動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴い得、場合によっては、サブピクセル精度までの(to sub-pixel precision)補間(interpolation)を実行する。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルがそれを指し示す予測ブロックを位置特定し得る。ビデオエンコーダ20は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックについての残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際に、ビデオデコーダ30によって使用するための、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
【0134】
[0114] 予測処理ユニット41が、イントラ予測またはインター予測のいずれかを介して、現在のビデオブロックについての予測ブロックを生成した後、ビデオエンコーダ20は、現在のビデオブロックから予測ブロックを減算することによって、残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、1つまたは複数のTUに含まれ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT:discrete cosine transform)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータを、ピクセル領域から周波数領域などの変換領域に変換し得る。
【0135】
[0115] 変換処理ユニット52は、結果として得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減させるために、変換係数を量子化する。量子化プロセスは、係数の一部または全てに関連付けられたビット深度を低減させ得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。別の例では、エントロピー符号化ユニット56が走査を実行し得る。
【0136】
[0116] 量子化に続いて、エントロピー符号化ユニット(entropy encoding unit)56は、量子化された変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット56は、コンテキスト適応可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースのコンテキスト適応バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分化エントロピー(PIPE:probability interval partitioning entropy)コーディング、または別のエントロピー符号化方法または技法を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化に続いて、符号化されたビットストリームは、ビデオデコーダ30に送信されるか、またはビデオデコーダ30による後の送信または取り出しのためにアーカイブされ得る。エントロピー符号化ユニット56はまた、予測処理ユニット41によって提供される、コーディングされている現在のビデオスライスのための動きベクトルおよび他のシンタックス要素をエントロピー符号化し得る。
【0137】
[0117] 逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後に使用するための、ピクセル領域における残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定の際に使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、再構成されたブロックを生成するために、動き補償ユニット44によって生成された、動き補償された予測ブロックに、再構成された残差ブロックを加算する。
【0138】
[0118] フィルタユニット64は、再構成されたブロック(例えば、加算器62の出力)をフィルタリングし、参照ブロックとしての使用のために、フィルタされた再構成されたブロックをDPB66に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。フィルタユニット64は、デブロックフィルタリング、SAOフィルタリング、ピークSAOフィルタリング、ALF、および/またはGALF、および/または他のタイプのループフィルタなどの、任意のタイプのフィルタリングを実行し得る。デブロックフィルタは、例えば、ブロック境界をフィルタリングして、再構成されたビデオからブロッキネスアーティファクト(blockiness artifacts)を除去するために、デブロッキングフィルタリングを適用し得る。ピークSAOフィルタは、コーディング品質全体を改善するために、再構成されたピクセル値にオフセットを適用し得る。追加のループフィルタ(インループまたはポストループ)もまた使用され得る。
【0139】
[0119] 加えて、フィルタユニット64は、適応ループフィルタリングに関する本開示における技法のうちの任意のものを実行するように構成され得る。特に、上記で説明されたように、フィルタユニット64は、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングすることと、を行うように構成され得る。
【0140】
[0120]
図5は、本開示で説明される技法をインプリメントし得る、例となるビデオデコーダ30を例示するブロック図である。
図5のビデオデコーダ30は、例えば、
図4のビデオエンコーダ20に関して上記で説明されたシグナリングを受信するように構成され得る。
図5の例では、ビデオデコーダ30は、ビデオデータメモリ78、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、DPB94、およびフィルタユニット92を含む。予測処理ユニット81は、動き補償ユニット82およびイントラ予測ユニット84を含む。ビデオデコーダ30は、いくつかの例では、
図4からのビデオエンコーダ20に関して説明された符号化パスとは概して逆の復号パスを実行し得る。
【0141】
[0121] 復号プロセス中、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、受信された符号化されたビデオビットストリームをビデオデータメモリ78に記憶する。ビデオデータメモリ78は、ビデオデコーダ30の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ78に記憶されたビデオデータは、例えば、リンク16を介して、記憶デバイス26から、またはカメラ(camera)などのローカルビデオソースから、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ78は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコード化ピクチャバッファ(CPB:coded picture buffer)を形成し得る。DPB94は、例えば、イントラまたはインターコーディングモードで、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ78およびDPB94は、DRAM、SDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ78およびDPB94は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ78は、ビデオデコーダ30の他の構成要素とともにオンチップであり得、またはそれらの構成要素に対してオフチップであり得る。
【0142】
[0122] ビデオデコーダ30のエントロピー復号ユニット80は、量子化された係数、動きベクトル、および他のシンタックス要素を生成するために、ビデオデータメモリ78に記憶されたビデオデータをエントロピー復号する。エントロピー復号ユニット80は、予測処理ユニット81に動きベクトルおよび他のシンタックス要素を転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0143】
[0123] ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット81のイントラ予測ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。ビデオフレームがインターコーディングされたスライス(例えば、BスライスまたはPスライス)としてコーディングされるとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックについての予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、DPB94に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構成し得る。
【0144】
[0124] 動き補償ユニット82は、動きベクトルと他のシンタックス要素とをパースすることによって、現在のビデオスライスのビデオブロックについての予測情報を決定し、復号されている現在のビデオブロックについての予測ブロックを作成するために予測情報を使用する。例えば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(例えば、イントラまたはインター予測)と、インター予測スライスタイプ(例えば、BスライスまたはPスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化されたビデオブロックについての動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【0145】
[0125] 動き補償ユニット82はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット82は、参照ブロックのサブ整数ピクセルについての補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用されたような補間フィルタを使用し得る。このケースでは、動き補償ユニット82は、受信されたシンタックス要素から、ビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するために、この補間フィルタを使用し得る。
【0146】
[0126] 逆量子化ユニット86は、ビットストリームにおいて提供されてエントロピー復号ユニット80によって復号された、量子化された変換係数を逆量子化、すなわち量子化解除する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算された量子化パラメータの使用を含み得る。逆変換処理ユニット88は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換、例えば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを適用する。
【0147】
[0127] 予測処理ユニット81が、例えば、イントラまたはインター予測を使用して現在のビデオブロックについての予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット88からの残差ブロックを、動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、再構成されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数の構成要素を表す。
【0148】
[0128] フィルタユニット92は、再構成されたブロック(例えば、加算器90の出力)をフィルタリングし、参照ブロックとしての使用のために、フィルタされた再構成されたブロックをDPB94に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャ内のブロックをインター予測するための参照ブロックとして、動き補償ユニット82によって使用され得る。フィルタユニット92は、デブロックフィルタリング、SAOフィルタリング、ピークSAOフィルタリング、ALF、および/またはGALF、および/または他のタイプのループフィルタなどの、任意のタイプのフィルタリングを実行し得る。デブロックフィルタは、例えば、ブロック境界をフィルタリングして、再構成されたビデオからブロッキネスアーティファクトを除去するために、デブロッキングフィルタリングを適用し得る。ピークSAOフィルタは、コーディング品質全体を改善するために、再構成されたピクセル値にオフセットを適用し得る。追加のループフィルタ(インループまたはポストループ)もまた使用され得る。
【0149】
[0129] 加えて、フィルタユニット92は、適応ループフィルタリングに関する本開示における技法のうちの任意のものを実行するように構成され得る。特に、上記で説明されたように、フィルタユニット92は、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングすることと、を行うように構成され得る。
【0150】
[0130]
図6は、フィルタユニット92の例となるインプリメンテーションを示す。フィルタユニット64は、同様にインプリメントされ得る。フィルタユニット64および92は、場合によっては、ビデオエンコーダ20またはビデオデコーダ30の他の構成要素と連携して、本開示の技法を実行し得る。
図6の例では、フィルタユニット92は、デブロックフィルタ102、SAOフィルタ104、およびALF/GALFフィルタ106を含む。SAOフィルタ104は、例えば、本開示で説明される方法で、ブロックのサンプルに対するオフセット値を決定するように構成され得る。ALF/GALFフィルタ106は、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングすることと、を行うように構成され得る。
【0151】
[0131] フィルタユニット92は、より少数のフィルタを含み得、および/または追加のフィルタを含み得る。加えて、
図6に示される特定のフィルタは、異なる順序でインプリメントされ得る。他のループフィルタ(コーディングループ中またはコーディングループ後のいずれか)もまた、ピクセル遷移を平滑化するか、または別の方法でビデオ品質を改善するために使用され得る。次いで、所与のフレームまたはピクチャ内の復号されたビデオブロックは、後続の動き補償のために使用される参照ピクチャを記憶するDPB94に記憶される。DPB94は、
図1のディスプレイデバイス32などのディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する追加のメモリの一部であるか、またはそれとは別個であり得る。
【0152】
[0132]
図7は、本開示の例となる方法を例示するフローチャートである。
図7の技法は、フィルタユニット64およびフィルタユニット92を含む、ビデオエンコーダ20およびビデオデコーダ30の1つまたは複数の構造ユニットによって実行され得る。上記で説明されたように、「コーディング(coding)」という用語は、一般に、符号化と復号の両方を指す。同様に、「コーディングする(code)」という用語は、一般に、符号化すると復号するとの両方を指す。
【0153】
[0133] 本開示の一例では、ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定するように構成され得、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含む(700)。一例では、適応ループフィルタのそれぞれのセットを決定するために、ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタリングがそれぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグをコーディングすることと、ブロックごとのそれぞれのフラグに基づいて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを示す、それぞれのシンタックス要素をコーディングすることと、を行うようにさらに構成される。一例では、それぞれのシンタックス要素は、適応ループフィルタの複数のセットを含むリストへのインデックス(an index to a list)である。ビデオエンコーダ20およびビデオデコーダ30は、適応ループフィルタのそれぞれのセットに従って、現在のピクチャのブロックを適応ループフィルタリングするようにさらに構成され得る(702)。
【0154】
[0134]
図8は、本開示の別の例となる方法を例示するフローチャートである。
図8は、
図7の技法の例をより詳細に示す。例えば、ビデオエンコーダ20およびビデオデコーダ30は、ビデオデータの再構成されたブロックを作成するために、現在のピクチャ内のビデオデータのブロックをコーディングするように構成され得る(800)。すなわち、ビデオエンコーダ20およびビデオデコーダ30は、ビデオデータの第1の再構成されたブロック(first reconstructed block)を作成するために、現在のピクチャ内のビデオデータの第1のブロック(first block)をコーディングするように構成され得る。
【0155】
[0135] 次いで、ビデオエンコーダ20およびビデオデコーダ30は、ブロックレベルALFオン/オフフラグがオンであるかどうかを決定するように構成され得る(802)。NOの場合、ビデオエンコーダ20およびビデオデコーダ30は、ALFを適用せず、代わりに、ビデオデータの次のブロックをコーディングすることに進む(810)。YESの場合、ビデオエンコーダ20およびビデオデコーダ30は、そのブロックのために、適応ループフィルタのセットを示すシンタックス要素をコーディングする(804)。例えば、ビデオエンコーダ20およびビデオデコーダ30は、ビデオデータの第1のブロックのために、適応ループフィルタの複数のセットの中から適応ループフィルタの第1のセット(first set)を示す、第1のシンタックス要素(first syntax element)をコーディングする。
【0156】
[0136] 次いで、ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているブロックのための適応ループフィルタのセットから適応ループフィルタを決定し得る(806)。例えば、ビデオエンコーダ20およびビデオデコーダ30は、ビデオデータの第1の再構成されたブロックのための適応ループフィルタの第1のセットから、第1の適応ループフィルタ(first adaptive loop filter)を決定し得る。次いで、ビデオエンコーダ20およびビデオデコーダ30は、再構成されたブロックに適応ループフィルタを適用し得る(808)。次いで、ビデオエンコーダ20およびビデオデコーダ30は、ビデオデータの次のブロックをコーディングすることに進み得る(810)。例えば、ビデオデータの次のブロックは、ビデオデータの第2のブロック(second block)であり得る。次いで、
図8のプロセスは繰り返される。本開示の技法を実行するとき、ビデオデータの次のブロック(例えば、ビデオデータの第2のブロック)のための適応ループフィルタのセットを決定するとき、ビデオデータの第2のブロックのための適応ループフィルタのセットは、ビデオデータの他のブロックのために使用される適応ループフィルタのセットとは異なり得ることに留意されたい。
【0157】
[0137] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。ソフトウェアでインプリメントされる場合、これら機能は、コンピュータ可読媒体上で1つまたは複数の命令またはコードとして記憶または送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体、またはデータ記憶媒体のような有形の媒体に対応するコンピュータ可読記憶媒体を含み得る。このように、コンピュータ可読媒体は一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0158】
[0138] 限定ではなく例として、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶するために使用され得、かつコンピュータによってアクセスされ得るその他任意の媒体のうちの任意のものであり得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりに非一時的な有形の記憶媒体に向けられることが理解されるべきである。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多目的ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイ(登録商標)ディスクを含み、ここでディスク(disk)は、通常磁気的にデータを再生し、一方ディスク(disc)は、レーザーを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0159】
[0139] 命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等の集積されたまたはディスクリートロジック回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される場合、「プロセッサ」という用語は、任意の前述の構造または本明細書で説明された技法のインプリメンテーションに好適なその他任意の構造を指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得、または、複合コーデックに組み込まれ得る。また、これら技法は、1つまたは複数の回路または論理要素において完全にインプリメントされ得る。
【0160】
[0140] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い様々なデバイスまたは装置でインプリメントされ得る。様々な構成要素、モジュール、またはユニットが、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために、本開示において説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上記で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられるか、または、好適なソフトウェアおよび/またはファームウェアと併せて、上記で説明されたような1つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【0161】
[0141] 様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをコーディングする方法であって、前記方法は、
適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、
前記適応ループフィルタのそれぞれのセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングすることと
を備える、方法。
[C2]
前記適応ループフィルタのそれぞれのセットを決定することは、
適応ループフィルタが使用される前記現在のピクチャのブロックごとに、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタのそれぞれのセットを示す、それぞれのシンタックス要素をコーディングすること
を備える、C1に記載の方法。
[C3]
前記それぞれのシンタックス要素は、前記適応ループフィルタの複数のセットを含むリストへのインデックスである、C2に記載の方法。
[C4]
適応ループフィルタリングが前記それぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグをコーディングすること
をさらに備える、C1に記載の方法。
[C5]
適応ループフィルタリングがブロックのそれぞれのグループ内の各ブロックについて使用されるかどうかを示す、ブロックのグループごとのそれぞれのフラグをコーディングすること
をさらに備える、C1に記載の方法。
[C6]
適応ループフィルタリングが、各ブロックについて使用されるか、またはブロックのグループ内の各ブロックについて使用されるかを、
非ゼロコード化ブロックフラグ(CBF)を有する、ブロックのグループ内のブロックの数と、
非ゼロ変換係数の数と、
特定のモードでコーディングされた、ブロックのグループ内のブロックの数と、
スキップモードでコーディングされた、ブロックのグループ内のブロックの数と
のうちの1つまたは複数に基づいて決定すること
をさらに備える、C1に記載の方法。
[C7]
前記現在のピクチャの前記ブロックは、前記現在のピクチャのコーディングツリーユニット(CTU)である、C1に記載の方法。
[C8]
前記現在のピクチャのための前記適応ループフィルタの複数のセットを決定すること をさらに備える、C1に記載の方法。
[C9]
適応ループフィルタの各それぞれのセットは、前記現在のピクチャのためにシグナリングされた現在の適応ループフィルタまたは事前トレーニングされた適応ループフィルタのうちの1つまたは複数をさらに含む、C1に記載の方法。
[C10]
前記現在のピクチャのためにシグナリングされた任意の現在の適応ループフィルタが最初に追加され、任意の前の適応ループフィルタが2番目に追加され、任意の事前トレーニングされた適応ループフィルタが最後に追加されるように、適応ループフィルタの各それぞれのセットに適応ループフィルタを追加すること
をさらに備える、C9に記載の方法。
[C11]
前記現在の適応ループフィルタは、前記現在のピクチャのためにシグナリングされ、かつ、フィルタセットリスト中でより低いインデックス値を有する、C10に記載の方法。
[C12]
前記現在のピクチャのために、前記現在のピクチャについての現在の適応ループフィルタを示す1つまたは複数のシンタックス要素をコーディングすること
をさらに備える、C9に記載の方法。
[C13]
前記適応ループフィルタのそれぞれのセットは、複数のクラスの各クラスに割り当てられたそれぞれの適応ループフィルタを含む、C1に記載の方法。
[C14]
前記適応ループフィルタのそれぞれのセットを決定することは、ビデオデータの第1のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第1のセットを示す、第1のシンタックス要素をコーディングすることと、ビデオデータの第2のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第2のセットを示す、第2のシンタックス要素をコーディングすることと、を備え、ここにおいて、前記適応ループフィルタの第2のセットは、前記適応ループフィルタの第1のセットとは異なり、前記方法は、
ビデオデータの第1の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第1のブロックをコーディングすることと、
前記ビデオデータの第1の再構成されたブロックのために、前記適応ループフィルタの第1のセットから第1の適応ループフィルタを決定することと、
前記ビデオデータの第1の再構成されたブロックに、前記第1の適応ループフィルタを適用することと、
ビデオデータの第2の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第2のブロックをコーディングすることと、
前記ビデオデータの第2の再構成されたブロックのために、前記適応ループフィルタの第2のセットから第2の適応ループフィルタを決定することと、
前記ビデオデータの第2の再構成されたブロックに、前記第2の適応ループフィルタを適用することと
をさらに備える、C1に記載の方法。
[C15]
コーディングすることは、符号化することを備え、前記方法は、
カメラを用いて前記現在のピクチャをキャプチャすること
をさらに備える、C1に記載の方法。
[C16]
コーディングすることは、復号することを備え、前記方法は、
前記現在のピクチャを表示すること
をさらに備える、C1に記載の方法。
[C17]
ビデオデータをコーディングするように構成された装置であって、前記装置は、
ビデオデータの現在のピクチャを記憶するように構成されたメモリと、
前記メモリと通信状態にある1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
適応ループフィルタリングが使用されるブロックについて、前記現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、
前記適応ループフィルタのそれぞれのセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングすることと
を行うように構成される、装置。
[C18]
前記適応ループフィルタのそれぞれのセットを決定するために、前記1つまたは複数のプロセッサは、
適応ループフィルタが使用される前記現在のピクチャのブロックごとに、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタのそれぞれのセットを示す、それぞれのシンタックス要素をコーディングすること
を行うようにさらに構成される、C17に記載の装置。
[C19]
前記それぞれのシンタックス要素は、前記適応ループフィルタの複数のセットを含むリストへのインデックスである、C18に記載の装置。
[C20]
前記1つまたは複数のプロセッサは、
適応ループフィルタリングが前記それぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグをコーディングすること
を行うようにさらに構成される、C17に記載の装置。
[C21]
前記1つまたは複数のプロセッサは、
適応ループフィルタリングがブロックのそれぞれのグループ内の各ブロックについて使用されるかどうかを示す、ブロックのグループごとのそれぞれのフラグをコーディングすること
を行うようにさらに構成される、C17に記載の装置。
[C22]
前記1つまたは複数のプロセッサは、
適応ループフィルタリングが、各ブロックについて使用されるか、またはブロックのグループ内の各ブロックについて使用されるかを、
非ゼロコード化ブロックフラグ(CBF)を有する、ブロックのグループ内のブロックの数と、
非ゼロ変換係数の数と、
特定のモードでコーディングされた、ブロックのグループ内のブロックの数と、
スキップモードでコーディングされた、ブロックのグループ内のブロックの数と
のうちの1つまたは複数に基づいて決定すること
を行うようにさらに構成される、C17に記載の装置。
[C23]
前記現在のピクチャの前記ブロックは、前記現在のピクチャのコーディングツリーユニット(CTU)である、C17に記載の装置。
[C24]
前記1つまたは複数のプロセッサは、
前記現在のピクチャのための前記適応ループフィルタの複数のセットを決定すること を行うようにさらに構成される、C17に記載の装置。
[C25]
適応ループフィルタの各それぞれのセットは、前記現在のピクチャのためにシグナリングされた現在の適応ループフィルタまたは事前トレーニングされた適応ループフィルタのうちの1つまたは複数をさらに含む、C17に記載の装置。
[C26]
前記1つまたは複数のプロセッサは、
前記現在のピクチャのためにシグナリングされた任意の現在の適応ループフィルタが最初に追加され、任意の前の適応ループフィルタが2番目に追加され、任意の事前トレーニングされた適応ループフィルタが最後に追加されるように、適応ループフィルタの各それぞれのセットに適応ループフィルタを追加すること
を行うようにさらに構成される、C25に記載の装置。
[C27]
前記現在の適応ループフィルタは、前記現在のピクチャのためにシグナリングされ、かつ、フィルタセットリスト中でより低いインデックス値を有する、C26に記載の装置。
[C28]
前記1つまたは複数のプロセッサは、
前記現在のピクチャのために、前記現在の適応ループフィルタを示す1つまたは複数のシンタックス要素をコーディングすること
を行うようにさらに構成される、C25に記載の装置。
[C29]
前記適応ループフィルタのそれぞれのセットは、複数のクラスの各クラスに割り当てられたそれぞれの適応ループフィルタを含む、C17に記載の装置。
[C30]
前記適応ループフィルタのそれぞれのセットを決定するために、前記1つまたは複数のプロセッサは、ビデオデータの第1のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第1のセットを示す、第1のシンタックス要素をコーディングすることと、ビデオデータの第2のブロックのために、前記適応ループフィルタの複数のセットの中から適応ループフィルタの第2のセットを示す、第2のシンタックス要素をコーディングすることと、を行うようにさらに構成され、ここにおいて、前記適応ループフィルタの第2のセットは、前記適応ループフィルタの第1のセットとは異なり、ここにおいて、前記1つまたは複数のプロセッサは、
ビデオデータの第1の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第1のブロックをコーディングすることと、
前記ビデオデータの第1の再構成されたブロックのために、前記適応ループフィルタの第1のセットから第1の適応ループフィルタを決定することと、
前記ビデオデータの第1の再構成されたブロックに、前記第1の適応ループフィルタを適用することと、
ビデオデータの第2の再構成されたブロックを作成するために、前記現在のピクチャ内の前記ビデオデータの第2のブロックをコーディングすることと、
前記ビデオデータの第2の再構成されたブロックのために、前記適応ループフィルタの第2のセットから第2の適応ループフィルタを決定することと、
前記ビデオデータの第2の再構成されたブロックに、前記第2の適応ループフィルタを適用することと
を行うようにさらに構成される、C17に記載の装置。
[C31]
コーディングするために、前記1つまたは複数のプロセッサは符号化するように構成され、前記装置は、
前記現在のピクチャをキャプチャするように構成されたカメラ
をさらに備える、C17に記載の装置。
[C32]
コーディングするために、前記1つまたは複数のプロセッサは復号するように構成され、前記装置は、
前記現在のピクチャを表示するように構成されたディスプレイ
をさらに備える、C17に記載の装置。
[C33]
ビデオデータをコーディングするように構成された装置であって、前記装置は、
適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定するための手段と、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、
前記適応ループフィルタのそれぞれのセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングするための手段と
を備える、装置。
[C34]
前記適応ループフィルタのそれぞれのセットを決定するための前記手段は、
適応ループフィルタリングが前記それぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグをコーディングするための手段と、
前記ブロックごとのそれぞれのフラグに基づいて、前記現在のピクチャのブロックごとに、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタのそれぞれのセットを示す、それぞれのシンタックス要素をコーディングするための手段と
を備える、C33に記載の装置。
[C35]
適応ループフィルタの各それぞれのセットは、前記現在のピクチャのためにシグナリングされた現在の適応ループフィルタまたは事前トレーニングされた適応ループフィルタのうちの1つまたは複数をさらに含む、C33に記載の装置。
[C36]
実行されると、1つまたは複数のプロセッサに、
適応ループフィルタリングが使用されるブロックについて、現在のピクチャのブロックごとに、適応ループフィルタの複数のセットの中から、適応ループフィルタのそれぞれのセットを決定することと、ここにおいて、適応ループフィルタの各それぞれのセットは、1つまたは複数の前のピクチャにおいて使用された前の適応ループフィルタを含み、 前記適応ループフィルタのそれぞれのセットに従って、前記現在のピクチャの前記ブロックを適応ループフィルタリングすることと、
を行わせる命令を記憶した非一時的なコンピュータ可読記憶媒体。
[C37]
前記適応ループフィルタのそれぞれのセットを決定するために、前記命令は、前記1つまたは複数のプロセッサに、
適応ループフィルタリングが前記それぞれのブロックについて使用されるかどうかを示す、ブロックごとのそれぞれのフラグをコーディングすることと、
前記ブロックごとのそれぞれのフラグに基づいて、前記現在のピクチャのブロックごとに、前記適応ループフィルタの複数のセットの中から、前記適応ループフィルタのそれぞれのセットを示す、それぞれのシンタックス要素をコーディングすることと
をさらに行わせる、C36に記載の非一時的なコンピュータ可読記憶媒体。
[C38]
適応ループフィルタの各それぞれのセットは、前記現在のピクチャのためにシグナリングされた現在の適応ループフィルタまたは事前トレーニングされた適応ループフィルタのうちの1つまたは複数をさらに含む、C36に記載の非一時的なコンピュータ可読記憶媒体。