(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-07
(45)【発行日】2024-03-15
(54)【発明の名称】ビデオコーディング及び処理のためのデブロッキングフィルタ
(51)【国際特許分類】
H04N 19/117 20140101AFI20240308BHJP
H04N 19/136 20140101ALI20240308BHJP
H04N 19/182 20140101ALI20240308BHJP
H04N 19/82 20140101ALI20240308BHJP
H04N 19/86 20140101ALI20240308BHJP
【FI】
H04N19/117
H04N19/136
H04N19/182
H04N19/82
H04N19/86
(21)【出願番号】P 2021509216
(86)(22)【出願日】2019-08-27
(86)【国際出願番号】 US2019048353
(87)【国際公開番号】W WO2020046943
(87)【国際公開日】2020-03-05
【審査請求日】2022-07-27
(32)【優先日】2018-08-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-10-06
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】ルサノフスキー、ドミトロ
【審査官】鉢呂 健
(56)【参考文献】
【文献】米国特許出願公開第2013/0294525(US,A1)
【文献】米国特許出願公開第2015/0146795(US,A1)
【文献】特開2014-030234(JP,A)
【文献】CHEN, Y. et al.,Description of SDR, HDR and 360° video coding technology proposal by Qualcomm and Technicolor - low and high complexity versions,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 10-20 Apr. 2018, [JVET-J0021],JVET-J0021 (version 5),ITU-T,2018年04月14日,<URL:https://jvet-experts.org/doc_end_user/documents/10_San%20Diego/wg11/JVET-J0021-v5.zip>: JVET-J0021_r1.docx: pp.23-24
【文献】RUSANOVSKYY, D. et al.,CE2: Tests on long deblocking (CE2.2.1.4),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Ljubljana, SI, 10-18 July 2018, [JVET-K0334r1],JVET-K0334 (version 4),ITU-T,2018年07月11日,<URL:https://jvet-experts.org/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0334-v4.zip>: JVET-K0334_C2.2.1.4_r1.docx: pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
ビデオデータを復号する方法であって、
ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、前記第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、
ここにおいて、前記デブロッキングフィルタリングを前記適用することは、前記第1の再構築されたブロックのサイズに基づいて、前記デブロッキングフィルタが前記第1の再構築されたブロックの境界から6つ以下のサンプル離れたサンプルにのみ適用されるか、または、前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界から2つ以下のサンプル離れたサンプルに適用されるか、を決定することを備える、
前記第1の再構築されたブロックの
前記境界に対する前記第1のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックの
前記サイズに基づいて、前記第1のサンプルについての第1のクリッピング値を決定することと、
ここにおいて、前記第1のクリッピング値は、前記第1の再構築されたブロックのサイズと、前記第1のサンプルが前記第1の再構築されたブロックの前記境界から何サンプル離れているかと、に応じて異なる、
前記第1のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する前記修正の量が前記第1のクリッピング値よりも大きいことに応答して、前記第1のサンプルについての第1のフィルタリングされた値を決定するために、前記第1のクリッピング値によって前記第1の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記出力されたデブロッキングフィルタリングされたブロック中で、前記第1のサンプルは、前記第1のフィルタリングされた値を有する、
を備える、方法。
【請求項2】
前記第1のフィルタリングされた値は、前記第1の値に前記第1のクリッピング値を加えたものに等しい、または、前記第1の値から前記第1のクリッピング値を引いたものに等しい、請求項1に記載の方法。
【請求項3】
前記第1の再構築されたブロックについてのデブロッキングフィルタリングモードに更に基づいて、前記第1のサンプルについての前記第1のクリッピング値を決定すること、
を更に備える、請求項1に記載の方法。
【請求項4】
前記第1の再構築されたブロックは、第2の値を有する第2のサンプルを含み、前記方法は、
前記第1の再構築されたブロックの前記境界に対する前記第2のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックの前記サイズに基づいて、前記第2のサンプルについての第2のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第2のサンプルに対する修正の量が前記第2のクリッピング値よりも小さいことに応答して、前記第2のサンプルについての第2のフィルタリングされた値を決定するために、前記第2のサンプルに対する前記修正の量によって前記第2の値を修正することと、
を更に備え、前記デブロッキングフィルタリングされたブロック中で、前記第2のサンプルは、前記第2のフィルタリングされた値を有する、請求項1に記載の方法。
【請求項5】
前記第1のサンプルと前記第1の再構築されたブロックの前記境界との間の距離は、前記第2のサンプルと前記第1の再構築されたブロックの前記境界との間の距離に等しく、前記第1のクリッピング値は、前記第2のサンプルについての前記第2のクリッピング値に等しい、または、
前記第1のサンプルと前記第1の再構築されたブロックの前記境界との間の距離は、前記第2のサンプルと前記第1の再構築されたブロックの前記境界との間の距離とは異なり、前記第1のクリッピング値は、前記第2のクリッピング値とは異なる、
請求項4に記載の方法。
【請求項6】
前記デブロッキングフィルタが、前記第1の再構築されたブロックの前記境界から6つ以下のサンプル離れたサンプルにのみ適用されると決定
されたとき、
前記方法
は、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界に隣接していることに応答して、前記第1のクリッピング値が6に等しいと決定すること、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から1サンプル離れていることに応答して、前記第1のクリッピング値が5に等しいと決定すること、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から2サンプル離れていることに応答して、前記第1のクリッピング値が4に等しいと決定すること、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から3サンプル離れていることに応答して、前記第1のクリッピング値が3に等しいと決定すること、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から4サンプル離れていることに応答して、前記第1のクリッピング値が2に等しいと決定すること、および、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から5サンプル離れていることに応答して、前記第1のクリッピング値が1に等しいと決定すること、
のうちの1つを更に備える、請求項1に記載の方法。
【請求項7】
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界から2つ以下のサンプル離れたサンプルに適用されると決定
されたとき、
前記方法は
、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界に隣接していることに応答して、前記第1のクリッピング値が6に等しいと決定すること、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から1サンプル離れていることに応答して、前記第1のクリッピング値が4に等しいと決定すること、および、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から2サンプル離れていることに応答して、前記第1のクリッピング値が2に等しいと決定すること、
のうちの1つを更に備える、請求項1に記載の方法。
【請求項8】
ビデオデータの第2の再構築されたブロックを取得することと、ここにおいて、前記第2の再構築されたブロックは、第2の値を有する第2のサンプルを含み、前記第2の再構築されたブロックは、前記第1の再構築されたブロックと前記境界を共有し、前記第1の再構築されたブロックと前記第2の再構築されたブロックとは、異なるサイズである、
第2のデブロッキングフィルタリングされたブロックを決定するために、前記第2の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第2の再構築されたブロックの境界に対する前記第2のサンプルのロケーションに基づいて、及び前記第2の再構築されたブロックのサイズに基づいて、前記第2のサンプルについての第2のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第2のサンプルに対する修正の量が前記第2のクリッピング値よりも大きいことに応答して、前記第2のサンプルについての第2のフィルタリングされた値を決定するために、前記第2のクリッピング値によって前記第2の値を修正することと、
ビデオデータの第2のデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記第2のデブロッキングフィルタリングされたブロック中で、前記出力された第2のサンプルは、前記第2のフィルタリングされた値を有する、
を更に備える、請求項1に記載の方法。
【請求項9】
前
記デブロッキングフィルタリングされたブロックを決定するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用することは、第1の長さの第1のフィルタで前記第1の再構築されたブロック中のサンプルをフィルタリングすることを備え、
前記第2のデブロッキングフィルタリングされたブロックを決定するために、前記第2の再構築されたブロックにデブロッキングフィルタリングを適用することは、前記第1の長さとは異なる第2の長さの第2のフィルタで前記第2の再構築されたブロック中のサンプルをフィルタリングすることを備える、
請求項8に記載の方法。
【請求項10】
前記方法は、ビデオ符号化プロセスの一部として実行される、請求項1に記載の方法。
【請求項11】
ビデオデータを復号するためのデバイスであって、前記デバイスは、
ビデオデータを記憶するように構成されたメモリと、
回路内にインプリメントされた1つ以上のプロセッサと、
を備え、前記1つ以上のプロセッサは、
ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、前記第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、
ここにおいて、前記デブロッキングフィルタリングを適用することは、前記第1の再構築されたブロックのサイズに基づいて、前記デブロッキングフィルタが前記第1の再構築されたブロックの境界から6つ以下のサンプル離れたサンプルにのみ適用されるか、または、前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界から2つ以下のサンプル離れたサンプルに適用されるか、を決定することを備える、
前記第1の再構築されたブロックの
前記境界に対する前記第1のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックの
前記サイズに基づいて、前記第1のサンプルについての第1のクリッピング値を決定することと、
ここにおいて、前記第1のクリッピング値は、前記第1の再構築されたブロックのサイズと、前記第1のサンプルが前記第1の再構築されたブロックの前記境界から何サンプル離れているかと、に応じて異なる、
前記第1のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する前記修正の量が前記第1のクリッピング値よりも大きいことに応答して、前記第1のサンプルについての第1のフィルタリングされた値を決定するために、前記第1のクリッピング値によって前記第1の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記出力されたデブロッキングフィルタリングされたブロック中で、前記第1のサンプルは、前記第1のフィルタリングされた値を有する、
を行うように構成される、デバイス。
【請求項12】
前記第1のフィルタリングされた値は、前記第1の値に前記第1のクリッピング値を加えたものに等しい、請求項11に記載のデバイス。
【請求項13】
前記第1のフィルタリングされた値は、前記第1の値から前記第1のクリッピング値を引いたものに等しい、請求項11に記載のデバイス。
【請求項14】
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、請求項1~10のうちのいずれか1つに従った方法を実施させる命令を記憶する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001]本願は、2019年8月26日に出願された米国特許出願第16/551,388号の優先権を主張し、それは、2018年8月27日に出願された米国仮特許出願第62/723,408号、及び2018年10月6日に出願された米国仮特許出願第62/742,331号の利益を主張し、各々の内容全体は、参照によって本明細書に組み込まれる。
【技術分野】
【0002】
[0002]本開示は、ビデオ符号化及びビデオ復号に関する。
【背景技術】
【0003】
[0003]デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラ式又は衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、及び同様のものを含む、幅広い範囲のデバイスに組み込まれることができる。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンストビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)規格、ITU-T H.265/高効率ビデオコーディング(HEVC)、及びそのような規格の拡張によって定義された規格に説明されているものなど、ビデオコーディング技法をインプリメントする。ビデオデバイスは、そのようなビデオコーディング技法をインプリメントすることによって、より効率的にデジタルビデオ情報を送信、受信、符号化、復号、及び/又は記憶し得る。
【0004】
[0004]ビデオコーディング技法は、ビデオシーケンスに内在する冗長性を低減又は取り除くために、空間(イントラピクチャ)予測及び/又は時間(インターピクチャ)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(例えば、ビデオピクチャ又はビデオピクチャの一部分)は、コーディングツリーユニット(CTU)、コーディングユニット(CU)、及び/又はコーディングノードとも呼ばれ得る、ビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ中の近隣するブロック中の参照サンプルに対して空間予測を使用して符号化される。ピクチャのインターコーディングされた(P又はB)スライス中のビデオブロックは、同じピクチャ中の近隣するブロック中の参照サンプルに対して空間予測を、又は他の参照ピクチャ中の参照サンプルに対して時間予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
【発明の概要】
【0005】
[0005]本開示は、ビデオ符号化及び/又はビデオ復号プロセスにおける再構築されたビデオデータをフィルタリングすることに関連付けられた技法について説明し、より具体的には、本開示は、デブロッキングフィルタリングを実行するための技法に関連する技法について説明する。デブロッキングフィルタリングは、再構築プロセスの結果として生じるブロックのエッジに沿ったブロッキネスアーティファクト(blockiness artifacts)を低減し得るタイプのフィルタリングである。
【0006】
[0006]例によると、ビデオデータを復号する方法は、ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、 デブロッキングフィルタリングされたブロックを作成するために、第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、 第1の再構築されたブロックの境界に対する第1のサンプルのロケーションに基づいて、及び第1の再構築されたブロックのサイズに基づいて、第1のサンプルについての第1のクリッピング値を決定することと、 第1のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量と比較することと、 デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して、第1のサンプルについての第1のフィルタリングされた値を決定するために、第1のクリッピング値によって(by)第1の値を修正することと、 ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第1のサンプルは、第1のフィルタリングされた値を有する、 を含む。
【0007】
[0007]別の例によると、ビデオデータを復号するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、回路においてインプリメントされた1つ以上のプロセッサとを含み、その1つ以上のプロセッサは、ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、 デブロッキングフィルタリングされたブロックを作成するために、第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、 第1の再構築されたブロックの境界に対する第1のサンプルのロケーションに基づいて、及び第1の再構築されたブロックのサイズに基づいて、第1のサンプルについての第1のクリッピング値を決定することと、 第1のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量と比較することと、 デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して、第1のサンプルについての第1のフィルタリングされた値を決定するために、第1のクリッピング値によって第1の値を修正することと、 ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第1のサンプルは、第1のフィルタリングされた値を有する、 を行うように構成される。
【0008】
[0008]別の例によると、コンピュータ可読記憶媒体は、1つ以上のプロセッサによって実行されると、その1つ以上のプロセッサに、ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、 デブロッキングフィルタリングされたブロックを作成するために、第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、 第1の再構築されたブロックの境界に対する第1のサンプルのロケーションに基づいて、及び第1の再構築されたブロックのサイズに基づいて、第1のサンプルについての第1のクリッピング値を決定することと、 第1のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量と比較することと、 デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して、第1のサンプルについての第1のフィルタリングされた値を決定するために、第1のクリッピング値によって第1の値を修正することと、 ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第1のサンプルは、第1のフィルタリングされた値を有する、 を行わせる命令を記憶する。
【0009】
[0009]別の例によると、ビデオデータを復号するための装置は、ビデオデータの第1の再構築されたブロックを取得するための手段と、ここにおいて、第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、 デブロッキングフィルタリングされたブロックを作成するために、第1の再構築されたブロックにデブロッキングフィルタリングを適用するための手段と、 第1の再構築されたブロックの境界に対する第1のサンプルのロケーションに基づいて、及び第1の再構築されたブロックのサイズに基づいて、第1のサンプルについての第1のクリッピング値を決定するための手段と、 第1のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量と比較するための手段と、 デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して、第1のサンプルについての第1のフィルタリングされた値を決定するために、第1のクリッピング値によって第1の値を修正するための手段と、 ビデオデータのデブロッキングフィルタリングされたブロックを出力するための手段と、ここにおいて、デブロッキングフィルタリングされたブロックでは、第1のサンプルは、第1のフィルタリングされた値を有する、 を含む。
【0010】
[0010]1つ以上の例の詳細は、添付の図面及び以下の説明に記載されている。他の特徴、目的、及び利点が、説明、図面、及び特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0011】
【
図1】[0011]本開示を実行し得る実例的なビデオ符号化及び復号システムを例示するブロック図である。
【
図2A】[0012]実例的な四分木二分木(QTBT:quadtree binary tree)構造を例示する概念図である。
【
図2B】対応するコーディングツリーユニット(CTU)を例示する概念図である。
【
図3】[0013]隣接ブロックP及びQでデブロッキングされるべき4サンプルセグメントの例を示す。
【
図4】[0014]4つの円で囲まれたサンプルの2次導関数(the second derivatives)が算出されるビデオデータの実例的なブロックを示し、その合計は、デブロッキングがセグメントに対して適用されるべきかどうかを決定するために使用される。
【
図5】[0015]デブロッキングされるべきセグメント中の4つのラインのうちの1つについてのビデオデータのブロックのサンプルの例を示す。
【
図6】[0016]本開示の技法を実行し得る実例的なビデオ符号化器を例示するブロック図である。
【
図7】[0017]本開示の技法を実行し得る実例的なビデオ復号器を例示するブロック図である。
【
図8】[0018]本開示の技法を実行するための実例的なフィルタユニットを例示するブロック図である。
【
図9】[0019]ビデオ符号化プロセスの例を例示するフローチャートである。
【
図10】[0020]ビデオ復号プロセスの例を例示するフローチャートである。
【
図11】[0021]ビデオ復号プロセスの例を例示するフローチャートである。
【詳細な説明】
【0012】
[0022]ビデオコーディング(例えば、ビデオ符号化及び/又はビデオ復号)は、典型的には、同じピクチャ中のビデオデータの既にコーディングされたブロック(例えば、イントラ予測)又は異なるピクチャ中のビデオデータの既にコーディングされたブロック(例えば、インター予測)のうちのいずれかからビデオデータのブロックを予測することを伴う。いくつかの事例では、ビデオ符号化器はまた、予測ブロックを元のブロックと比較することによって残差データを算出する。このことから、残差データは、予測ブロックと元のブロックとの間の差分を表す。残差データをシグナリングするために必要とされるビット数を低減するために、ビデオ符号化器は、残差データを変換及び量子化し、符号化されたビットストリーム中で変換及び量子化された残差データをシグナリングする。変換及び量子化プロセスによって達成される圧縮は非可逆であり得、変換及び量子化プロセスが、復号されたビデオデータに歪みをもたらし得ることを意味し得る。
【0013】
[0023]ビデオ復号器は、予測ブロック単独よりも元のビデオブロックに密接に一致する再構築されたビデオブロックを作り出すために、残差データを復号し、それを予測ブロックに加算する。残差データの変換及び量子化によってもたらされる損失に起因して、第1の再構築されたブロックは、歪み又はアーティファクトを有し得る。アーティファクト又は歪みの1つの一般的なタイプは、ブロッキネスと呼ばれ、ここで、ビデオデータをコーディングするために使用されるブロックの境界が可視である。
【0014】
[0024]復号されたビデオの品質を更に改善するために、ビデオ復号器は、再構築されたビデオブロックに対して1つ以上のフィルタリングオペレーション(filtering operation)を実行することができる。これらのフィルタリングオペレーションの例は、デブロッキングフィルタリング、サンプル適応オフセット(SAO:sample adaptive offset)フィルタリング、及び適応ループフィルタリング(ALF:adaptive loop filtering)を含む。これらのフィルタリングオペレーションについてのパラメータは、ビデオ符号化器によって決定され、符号化されたビデオのビットストリーム中で明示的にシグナリングされ得るか、又はパラメータが符号化されたビデオのビットストリーム中で明示的にシグナリングされる必要なしにビデオ復号器によって黙示的に決定され得るかのうちのいずれかである。
【0015】
[0025]本開示は、ビデオ符号化及び/又はビデオ復号プロセスにおける再構築されたビデオデータをフィルタリングすることに関連付けられた技法について説明し、より具体的には、本開示は、デブロッキングフィルタリングに関連する技法について説明する。デブロッキングフィルタリングは、ブロッキネスを低減するように特に設計されたタイプのフィルタリングである。本開示は、圧縮、ぼかし、等によって歪められ得るビデオフレーム又はピクチャなどのビデオフレーム又はピクチャに対して実行されるフィルタリングプロセスに関連する技法について説明するが、本技法は、上記の歪みの例に限定されると見なされるべきではない。本技法は、ビデオの客観的品質及び主観的品質を改善し得る。本明細書に説明される技法は、H.266などの新しいビデオコーディングソリューションの設計において、又はH.265/高効率ビデオコーディング(HEVC)などの既存のビデオコーデックのうちの任意のものを拡張するために使用され得るか、又は将来のビデオコーディング規格のための有望なコーディングツールとして提案され得る。説明される技術はまた、標準又はプロプライエタリコーデックのうちのいずれかから出力されたビデオフレームに対する後処理方法として使用され得る。
【0016】
[0026]HEVCの現在のバージョンは、64×64の最大ブロックサイズを利用する。現在開発中の多用途ビデオコーディング(Versatile Video Coding)規格などの将来のビデオコーディング規格は、しかしながら、64×64よりも大きいブロックサイズを使用し得る。本開示は、特により大きいブロックサイズと併せて、デブロッキングフィルタリングから取得される歪み低減を改善し得る技法について説明する。更に、本明細書に説明される技法は、計算の複雑さ及びコーディング効率の所望されるレベルを維持しながら、この改善された歪み低減を取得し得る。
【0017】
[0027]本開示で使用される場合、ビデオコーディングという用語は、包括的に、ビデオ符号化又はビデオ復号のうちのいずれかを指す。同様に、ビデオコーダという用語は、包括的に、ビデオ符号化器又はビデオ復号器を指し得る。その上、ビデオ復号に関して本開示に説明されるある特定の技法はまた、ビデオ符号化に適用され得、その逆もまた然りである。例えば、ビデオ符号化器及びビデオ復号器は、同じプロセス、又は相反するプロセスを実行するように構成されることが多い。また、ビデオ符号化器は、典型的に、ビデオデータをどのように符号化するかを決定するプロセスの一部としてビデオ復号(再構築とも呼ばれる)を実行する。例えば、ビデオ符号化器は、ある特定の符号化方式が望ましいレート歪みトレードオフをもたらすかどうかを決定するために、またビデオ復号器が動き補償を実行するときにビデオ符号化器がビデオ復号器に利用可能な同じブロックを使用して動き推定を実行することができるように、復号されたビデオブロックに対してデブロッキングフィルタリングを実行し得る。
【0018】
[0028]
図1は、本開示のデブロッキングフィルタリング技法を実行し得る実例的なビデオ符号化及び復号システム100を例示するブロック図である。本開示の技法は、一般に、ビデオデータのコーディング(符号化及び/又は復号)を対象とし、より詳細には、ビデオデータをデブロッキングフィルタリングするための技法を対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。このことから、ビデオデータは、生の、コーディングされていないビデオ、符号化されたビデオ、復号された(例えば、再構築された)ビデオ、及びシグナリングデータなどのビデオメタデータを含み得る。
【0019】
[0029]
図1に示されているように、システム100は、この例では、宛先デバイス116によって復号及び表示されることになる符号化されたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102及び宛先デバイス116は、デスクトップコンピュータ、ノートブック(即ち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、又は同様のものを含む、幅広い範囲のデバイスのうちの任意のものであり得る。いくつかのケースでは、ソースデバイス102及び宛先デバイス116は、ワイヤレス通信のために装備され得、このことから、ワイヤレス通信デバイスと呼ばれ得る。
【0020】
[0030]
図1の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオ符号化器200、及び出力インターフェース108を含む。宛先デバイス116は、入力インターフェース122、ビデオ復号器300、メモリ120、及びディスプレイデバイス118を含む。本開示に従って、ソースデバイス102のビデオ符号化器200と宛先デバイス116のビデオ復号器300とは、本開示に説明されるデブロッキングフィルタリングのための技法を適用するように構成され得る。このことから、ソースデバイス102は、ビデオ符号化デバイスの例を表し、宛先デバイス116は、ビデオ復号デバイスの例を表す。他の例では、ソースデバイス及び宛先デバイスは、他のコンポーネント又は配置を含み得る。例えば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0021】
[0031]
図1に示されているシステム100は単に、一例に過ぎない。一般に、任意のデジタルビデオ符号化及び/又は復号デバイスが、本開示に説明されるデブロッキングフィルタリングのための技法を実行し得る。ソースデバイス102及び宛先デバイス116は単に、ソースデバイス102が宛先デバイス116への送信のためのコーディングされたビデオデータを生成するそのようなコーディングデバイスの例に過ぎない。本開示は、データのコーディング(符号化及び/又は復号)を実行するデバイスとして「コーディング」デバイスに言及する。このことから、ビデオ符号化器200及びビデオ復号器300は、コーディングデバイスの例、特に、ビデオ符号化器及びビデオ復号器をそれぞれ表す。いくつかの例では、ソースデバイス102及び宛先デバイス116は、ソースデバイス102及び宛先デバイス116の各々がビデオ符号化及び復号コンポーネントを含むような実質的に対称的な形で動作し得る。故に、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、又はビデオ電話通信のために、ソースデバイス102と宛先デバイス116との間の1方向又は2方向ビデオ送信をサポートし得る。
【0022】
[0032]一般に、ビデオソース104は、ビデオデータ(即ち、生の、コーディングされていないビデオデータ)のソースを表し、ピクチャについてのデータを符号化するビデオ符号化器200に、ビデオデータの連続する一連のピクチャ(「フレーム」とも呼ばれる)を提供する。ソースデバイス102のビデオソース104は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた生のビデオを包含するビデオアーカイブ、及び/又はビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。更なる代替として、ビデオソース104は、コンピュータグラフィックスベースのデータをソースビデオとして、又はライブビデオ、アーカイブされたビデオ、及びコンピュータ生成されたビデオの組み合わせとして生成し得る。各ケースでは、ビデオ符号化器200が、キャプチャされた、予めキャプチャされた、又はコンピュータ生成されたビデオデータを符号化する。ビデオ符号化器200は、ピクチャを、受信された順序(「表示順序」と呼ばれることもある)から、コーディングのためのコーディング順序に再配列し得る。ビデオ符号化器200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は次いで、例えば、宛先デバイス116の入力インターフェース122による受信及び/又は取り出しのために、出力インターフェース108を介してコンピュータ可読媒体110上に符号化されたビデオデータを出力し得る。
【0023】
[0033]ソースデバイス102のメモリ106及び宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、例えば、ビデオソース104からの生のビデオ、及びビデオ復号器300からの生の復号されたビデオデータを記憶し得る。追加又は代替として、メモリ106、120は、例えば、それぞれビデオ符号化器200及びビデオ復号器300によって実行可能なソフトウェア命令を記憶し得る。メモリ106及び120は、この例ではビデオ符号化器200及びビデオ復号器300とは別個に示されているが、ビデオ符号化器200及びビデオ復号器300はまた、機能的に類似又は同等の目的のために内部メモリを含み得ることが理解されるべきである。更に、メモリ106、120は、符号化されたビデオデータ、例えば、ビデオ符号化器200からの出力及びビデオ復号器300への入力を記憶し得る。いくつかの例では、メモリ106、120の一部分は、例えば、生の、復号された、及び/又は符号化されたビデオデータを記憶するために、1つ以上のビデオバッファとして割り振られ得る。
【0024】
[0034]コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移動させることが可能な任意のタイプの媒体又はデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、例えば、無線周波数ネットワーク又はコンピュータベースのネットワークを介して、リアルタイムで宛先デバイス116に符号化されたビデオデータを直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトル又は1つ以上の物理的伝送線路などのワイヤレス又はワイヤード通信媒体のうちの一方又は両方を含み得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス102から宛先デバイス116への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【0025】
[0035]いくつかの例では、コンピュータ可読媒体110は、記憶デバイス112を含み得る。ソースデバイス102は、出力インターフェース108から記憶デバイス112に符号化されたデータを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス112からの符号化されたビデオデータにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性若しくは不揮発性メモリ、又は符号化されたビデオデータを記憶するための任意の他の適したデジタル記憶媒体などの、様々な分散された又は局所的にアクセスされるデータ記憶媒体のうちの任意のものを含み得る。
【0026】
[0036]いくつかの例では、コンピュータ可読媒体110は、ソースデバイス102によって生成される符号化されたビデオデータを記憶し得るファイルサーバ114又は別の中間記憶デバイスを含み得る。ソースデバイス102は、符号化されたビデオデータをファイルサーバ114に出力し得る。宛先デバイス116は、ストリーミング又はダウンロードを介してファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶することと、宛先デバイス116にその符号化されたビデオデータを送信することとが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(例えば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、又はネットワーク接続記憶(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む、任意の標準データ接続を通じて、ファイルサーバ114からの符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ114上に記憶された符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、デジタル加入者回線(DSL)、ケーブルモデム、等)、又はその両方の組み合わせを含み得る。ファイルサーバ114及び入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、又はそれらの組み合わせに従って動作するように構成され得る。
【0027】
[0037]出力インターフェース108及び入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキングコンポーネント(例えば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のうちの任意のものに従って動作するワイヤレス通信コンポーネント、又は他の物理的コンポーネントを表し得る。出力インターフェース108及び入力インターフェース122がワイヤレスコンポーネントを含む例では、出力インターフェース108及び入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5G、又は同様のものなどのセルラ通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を含むいくつかの例では、出力インターフェース108及び入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(例えば、ZigBee(登録商標))、Bluetooth(登録商標)規格、又は同様のものなどの他のワイヤレス規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102及び/又は宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。例えば、ソースデバイス102は、ビデオ符号化器200及び/又は出力インターフェース108に帰する機能を実行するためのSoCデバイスを含み得、宛先デバイス116は、ビデオ復号器300及び/又は入力インターフェース122に帰する機能を実行するためのSoCデバイスを含み得る。
【0028】
[0038]本開示の技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、HTTPを通した動的適応型ストリーミング(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、又は他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。
【0029】
[0039]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(例えば、通信媒体、記憶デバイス112、ファイルサーバ114、又は同様のもの)から符号化されたビデオのビットストリームを受信する。コンピュータ可読媒体110からの符号化されたビデオのビットストリームは、ビデオブロック又は他のコーディングされたユニット(例えば、スライス、ピクチャ、ピクチャのグループ、シーケンス、又は同様のもの)の特性及び/又は処理を記述する値を有するシンタックス要素などの、ビデオ符号化器200によって定義され、ビデオ復号器300によっても使用されるシグナリング情報を含み得る。ディスプレイデバイス118は、ユーザに復号されたビデオデータの復号されたピクチャを表示する。ディスプレイデバイス118は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちの任意のものを表し得る。
【0030】
[0040]
図1には示されていないが、いくつかの態様では、ビデオ符号化器200及びビデオ復号器300は各々、オーディオ符号化器及び/又はオーディオ復号器と一体化され得、共通のデータストリームにおけるオーディオとビデオとの両方を含む多重化されたストリームを処理するために、適切なMUX-DEMUXユニット、又は他のハードウェア及び/若しくはソフトウェアを含み得る。適用可能である場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコルに、又はユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0031】
[0041]ビデオ符号化器200及びビデオ復号器300は各々、1つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせなどの、様々な適した符号化器及び/又は復号器回路のうちの任意のものとしてインプリメントされ得る。本技法がソフトウェアにおいて部分的にインプリメントされるとき、デバイスは、適した非一時的コンピュータ可読媒体中にソフトウェアのための命令を記憶し、本開示の技法を実行するために、1つ以上のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオ符号化器200及びビデオ復号器300の各々は、1つ以上の符号化器又は復号器中に含まれ得、それらのうちのいずれも、それぞれのデバイス中で、組み合わされた符号化器/復号器(CODEC)の一部として一体化され得る。ビデオ符号化器200及び/又はビデオ復号器300を含むデバイスは、集積回路、マイクロプロセッサ、及び/又はセルラ電話などのワイヤレス通信デバイスを含み得る。
【0032】
[0042]ビデオ符号化器200及びビデオ復号器300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格、又はマルチビュー及び/又はスケーラブルビデオコーディング拡張などの、それに対する拡張に従って動作し得る。他の例では、ビデオ符号化器200及びビデオ復号器300は、多用途ビデオコーディング(VVC)とも呼ばれる、共同調査テストモデル(JEM:Joint Exploration Test Model)又はITU-T H.266などの他のプロプライエタリ規格又は工業規格に従って動作し得る。VVC規格の最近のドラフトは、Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE(以下、「VVCドラフト6」)に記載されている。本開示の技法は、しかしながら、いかなる特定のコーディング規格にも限定されない。
【0033】
[0043]一般に、ビデオ符号化器200及びビデオ復号器300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される(例えば、符号化される、復号される、又は符号化及び/若しくは復号プロセスにおいて別様に使用される)データを含む構造を指す。例えば、ブロックは、ルミナンスデータ及び/又はクロミナンスデータのサンプルの2次元行列を含み得る。一般に、ビデオ符号化器200及びビデオ復号器300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。即ち、ピクチャのサンプルについての赤、緑、及び青(RGB)データをコーディングするのではなく、ビデオ符号化器200及びビデオ復号器300は、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤の色相クロミナンス成分と青の色相クロミナンス成分との両方を含み得る。いくつかの例では、ビデオ符号化器200は、受信されたRGBフォーマットされたデータを符号化より前にYUV表現に変換し、ビデオ復号器300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニット及び後処理ユニット(図示せず)が、これらの変換を実行し得る。
【0034】
[0044]本開示は、一般に、ピクチャのデータを符号化又は復号するプロセスを含むように、ピクチャのコーディング(例えば、符号化及び復号)に言及し得る。同様に、本開示は、ブロックについてのデータを符号化又は復号するプロセス、例えば、予測及び/又は残差コーディングを含むように、ピクチャのブロックのコーディングに言及し得る。符号化されたビデオのビットストリームは、一般に、コーディング決定(例えば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。このことから、ピクチャ又はブロックをコーディングすることへの言及は、一般に、ピクチャ又はブロックを形成するシンタックス要素についての値をコーディングすることとして理解されるべきである。
【0035】
[0045]HEVCは、コーディングユニット(CU)と、予測ユニット(PU)と、変換ユニット(TU)とを含む様々なブロックを定義する。HEVCによると、(ビデオ符号化器200などの)ビデオコーダは、四分木構造に従ってコーディングツリーユニット(CTU)をCUに区分する。即ち、ビデオコーダは、CTU及びCUを4つの等しい重複しない四角形(square)に区分し、四分木の各ノードは、0又は4つの子ノードのうちのいずれかを有する。子ノードを有さないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのCUは、1つ以上のPU及び/又は1つ以上のTUを含み得る。ビデオコーダは、PUとTUとを更に区分し得る。例えば、HEVCでは、残差四分木(RQT)は、TUの区分を表す。HEVCでは、PUは、インター予測データ又はイントラ予測データを表し、TUは、残差データを表す。イントラ予測されるCUは、イントラモードインジケーションなどのイントラ予測情報を含む。
【0036】
[0046]ビデオ符号化器200及びビデオ復号器300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格、又はマルチビュー及び/又はスケーラブルビデオコーディング拡張などの、それに対する拡張に従って動作し得る。代替として、ビデオ符号化器200及びビデオ復号器300は、多用途ビデオコーディング(VVC)とも呼ばれる、共同調査テストモデル(JEM)又はITU-T H.266などの他のプロプライエタリ規格又は工業規格に従って動作し得る。VVC規格の最近のドラフトは、Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE(以下、「VVCドラフト6」)に記載されている。本開示の技法は、しかしながら、いかなる特定のコーディング規格にも限定されない。
【0037】
[0047]一般に、ビデオ符号化器200及びビデオ復号器300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される(例えば、符号化される、復号される、又は符号化及び/若しくは復号プロセスにおいて別様に使用される)データを含む構造を指す。例えば、ブロックは、ルミナンスデータ及び/又はクロミナンスデータのサンプルの2次元行列を含み得る。一般に、ビデオ符号化器200及びビデオ復号器300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。即ち、ピクチャのサンプルについての赤、緑、及び青(RGB)データをコーディングするのではなく、ビデオ符号化器200及びビデオ復号器300は、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤の色相クロミナンス成分と青の色相クロミナンス成分との両方を含み得る。いくつかの例では、ビデオ符号化器200は、受信されたRGBフォーマットされたデータを符号化より前にYUV表現に変換し、ビデオ復号器300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニット及び後処理ユニット(図示せず)が、これらの変換を実行し得る。
【0038】
[0048]本開示は、一般に、ピクチャのデータを符号化又は復号するプロセスを含むように、ピクチャのコーディング(例えば、符号化及び復号)に言及し得る。同様に、本開示は、ブロックについてのデータを符号化又は復号するプロセス、例えば、予測及び/又は残差コーディングを含むように、ピクチャのブロックのコーディングに言及し得る。符号化されたビデオのビットストリームは、一般に、コーディング決定(例えば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。このことから、ピクチャ又はブロックをコーディングすることへの言及は、一般に、ピクチャ又はブロックを形成するシンタックス要素についての値をコーディングすることとして理解されるべきである。
【0039】
[0049]HEVCは、コーディングユニット(CU)と、予測ユニット(PU)と、変換ユニット(TU)とを含む様々なブロックを定義する。HEVCによると、(ビデオ符号化器200などの)ビデオコーダは、四分木構造に従ってコーディングツリーユニット(CTU)をCUに区分する。即ち、ビデオコーダは、CTU及びCUを4つの等しい重複しない正方形に区分し、四分木の各ノードは、0又は4つの子ノードのうちのいずれかを有する。子ノードを有さないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのCUは、1つ以上のPU及び/又は1つ以上のTUを含み得る。ビデオコーダは、PUとTUとを更に区分し得る。例えば、HEVCでは、残差四分木(RQT)は、TUの区分を表す。HEVCでは、PUは、インター予測データを表し、TUは、残差データを表す。イントラ予測されるCUは、イントラモードインジケーションなどのイントラ予測情報を含む。
【0040】
[0050]別の例として、ビデオ符号化器200及びビデオ復号器300は、JEM又はVVCに従って動作するように構成され得る。JEM又はVVCによると、(ビデオ符号化器200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオ符号化器200は、四分木二分木(QTBT)構造又はマルチタイプツリー(MTT)構造などのツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離などの、複数の区分タイプの概念を取り除く。QTBT構造は、四分木区分に従って区分された第1のレベルと、二分木区分に従って区分された第2のレベルとの2つのレベルを含む。QTBT構造のルートノードは、CTUに対応する。二分木のリーフノードは、コーディングユニット(CU)に対応する。
【0041】
[0051]MTT区分構造では、ブロックは、四分木(QT)区分と、二分木(BT)区分と、1つ以上のタイプの三分木(TT:triple tree)(三分木(TT:ternary tree)とも呼ばれる)区分とを使用して区分され得る。三分木区分(triple tree partition)又は三分木区分(ternary tree partition)は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、三分木区分(triple tree partition)又は三分木区分(ternary tree partition)は、中心を通して元のブロックを分割することなく、ブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(例えば、QT、BT、及びTT)は、対称又は非対称であり得る。
【0042】
[0052]いくつかの例では、ビデオ符号化器200及びビデオ復号器300は、ルミナンス成分及びクロミナンス成分の各々を表すために単一のQTBT又はMTT構造を使用し得るが、他の例では、ビデオ符号化器200及びビデオ復号器300は、ルミナンス成分のための1つのQTBT/MTT構造と両方のクロミナンス成分のための別のQTBT/MTT構造(又はそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBT又はMTT構造を使用し得る。
【0043】
[0053]ビデオ符号化器200及びビデオ復号器300は、HEVCによる四分木区分、QTBT区分、MTT区分、又は他の区分構造を使用するように構成され得る。説明を目的として、本開示の技法の説明は、QTBT区分に関して提示される。しかしながら、本開示の技法はまた、四分木区分、又は他のタイプの区分も使用するように構成されたビデオコーダに適用され得ることが理解されるべきである。
【0044】
[0054]ブロック(例えば、CTU又はCU)は、ピクチャ中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャ中の特定のタイル内のCTU行(rows)の矩形領域を指し得る。タイルは、ピクチャ中の特定のタイル列(column)及び特定のタイル行内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(例えば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を指す。タイル行は、(例えば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を指す。
【0045】
[0055]いくつかの例では、1つのタイルは、複数のブリックに区分され得、それらの各々は、当該タイル内に1つ以上のCTU行を含み得る。複数のブリックに区分されていないタイルもまた、ブリックと呼ばれ得る。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
【0046】
[0056]ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、単一のネットワーク抽象化レイヤ(NAL)ユニット中に排他的に(exclusively)包含され得るピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、又は1つのタイルの完全なブリックの連続したシーケンスのみのうちのいずれかを含む。
【0047】
[0057]本開示は、垂直寸法及び水平寸法に関する(CU又は他のビデオブロックなどの)ブロックのサンプル寸法、例えば、16×16サンプル又は16掛ける16サンプルを指すために、「N×N」及び「N掛けるN」を交換可能に使用し得る。一般に、16×16CUは、垂直方向に16個のサンプル(y=16)を、及び水平方向に16個のサンプル(x=16)を有することになる。同様に、N×N CUは、一般に、垂直方向にN個のサンプルを、及び水平方向にN個のサンプルを有し、ここで、Nは、非負整数値を表す。CU中のサンプルは、行及び列中に配置され得る。その上、CUは、水平方向に、垂直方向と同じ数のサンプルを必ずしも有する必要はない。例えば、CUは、N×Mサンプルを備え得、ここで、Mは、必ずしもNと等しいわけではない。
【0048】
[0058]ビデオ符号化器200は、予測及び/又は残差情報、並びに他の情報を表すCUについてのビデオデータを符号化する。予測情報は、CUについての予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、一般に、符号化より前のCUのサンプルと予測ブロックとの間のサンプル毎の差分を表す。
【0049】
[0059]CUを予測するために、ビデオ符号化器200は、一般に、インター予測又はイントラ予測を通じてCUについての予測ブロックを形成し得る。インター予測は、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指すのに対して、イントラ予測は、一般に、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオ符号化器200は、1つ以上の動きベクトルを使用して予測ブロックを生成し得る。ビデオ符号化器200は、一般に、例えば、CUと参照ブロックとの間の差分に関して、CUに密接に一致する参照ブロックを識別するために動き探索を実行し得る。ビデオ符号化器200は、参照ブロックが現在のCUに密接に一致するかどうかを決定するために、絶対差分和(SAD:sum of absolute difference)、二乗差分和(SSD:sum of squared differences)、平均絶対差分(MAD:mean absolute difference)、平均二乗差分(MSD:mean squared differences)、又は他のそのような差分算出を使用して差分メトリックを算出し得る。いくつかの例では、ビデオ符号化器200は、単方向予測又は双方向予測を使用して現在のCUを予測し得る。
【0050】
[0060]JEM及びVVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオ符号化器200は、ズームイン又はズームアウト、回転、遠近動き(perspective motion)、又は他の不規則な動きタイプなどの非並進動きを表す2つ以上の動きベクトルを決定し得る。
【0051】
[0061]イントラ予測を実行するために、ビデオ符号化器200は、予測ブロックを生成するためにイントラ予測モードを選択し得る。JEM及びVVCのいくつかの例は、様々な方向性モード、並びに平面モード及びDCモードを含む67個のイントラ予測モードを提供する。一般に、ビデオ符号化器200は、現在のブロック(例えば、CUのブロック)のサンプルをそこから予測すべき現在のブロックに近隣するサンプルを記述するイントラ予測モードを選択する。ビデオ符号化器200がラスタ走査順序(左から右、上から下)でCTU及びCUをコーディングすると仮定すると、そのようなサンプルは、一般に、現在のブロックと同じピクチャ中の現在のブロックの上、左上、又は左にあり得る。
【0052】
[0062]ビデオ符号化器200は、現在のブロックについての予測モードを表すデータを符号化する。例えば、インター予測モードの場合、ビデオ符号化器200は、様々な利用可能なインター予測モードのうちのどれが使用されるかを表すデータ、並びに対応するモードについての動き情報を符号化し得る。単方向又は双方向インター予測の場合、例えば、ビデオ符号化器200は、高度動きベクトル予測(AMVP)又はマージモードを使用して動きベクトルを符号化し得る。ビデオ符号化器200は、アフィン動き補償モードについての動きベクトルを符号化するために、同様のモードを使用し得る。
【0053】
[0063]ブロックのイントラ予測又はインター予測などの予測に続いて、ビデオ符号化器200は、ブロックについての残差データを算出し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたブロックについての予測ブロックとの間のサンプル毎の差分を表す。ビデオ符号化器200は、サンプルドメインの代わりに変換ドメイン中に変換されたデータを作り出すために、残差ブロックに1つ以上の変換を適用し得る。例えば、ビデオ符号化器200は、残差ビデオデータに離散コサイン変換(DCT)、整数変換、ウェーブレット変換、又は概念的に同様の変換を適用し得る。追加として、ビデオ符号化器200は、第1の変換に続いて、モード依存分離不可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT)、又は同様のものなどの2次変換を適用し得る。ビデオ符号化器200は、1つ以上の変換の適用に続いて変換係数を作り出す。
【0054】
[0064]上述されたように、変換係数を作り出すための任意の変換に続いて、ビデオ符号化器200は、変換係数の量子化を実行し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできる限り低減するためにそれら係数が量子化されるプロセスを指し、更なる圧縮を提供する。量子化プロセスを実行することによって、ビデオ符号化器200は、係数のうちのいくつか又は全てに関連付けられたビット深度を低減し得る。例えば、ビデオ符号化器200は、量子化中にnビット値をmビット値に切り捨て得、ここでnは、mよりも大きい。いくつかの例では、量子化を実行するために、ビデオ符号化器200は、量子化されるべき値のビット単位の右シフト(bitwise right-shift)を実行し得る。
【0055】
[0065]量子化に続いて、ビデオ符号化器200は、変換係数を走査し得、量子化された変換係数を含む2次元行列から1次元ベクトルを作り出し得る。走査は、ベクトルの前方により高いエネルギー(従って、より低い周波数)係数を置き、且つベクトルの後方により低いエネルギー(従って、より高い周波数)係数を置くように設計され得る。いくつかの例では、ビデオ符号化器200は、直列化されたベクトルを作り出すために、予め定義された走査順序を利用して、量子化された変換係数を走査し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオ符号化器200は、適応走査を実行し得る。1次元ベクトルを形成するために、量子化された変換係数を走査した後、ビデオ符号化器200は、例えば、コンテキスト適応バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)に従って1次元ベクトルをエントロピー符号化し得る。ビデオ符号化器200はまた、ビデオデータを復号する際にビデオ復号器300によって使用するための符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素についての値をエントロピー符号化し得る。
【0056】
[0066]CABACを実行するために、ビデオ符号化器200は、送信されることになるシンボルにコンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの近隣値が0値であるか否かに関連し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0057】
[0067]ビデオ符号化器200は、ビデオ復号器300への、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、及びシーケンスベースのシンタックスデータなどのシンタックスデータを、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ中に、または、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、若しくはビデオパラメータセット(VPS)などの他のシンタックスデータをさらに生成し得る。ビデオ復号器300は、同様に、対応するビデオデータをどのように復号するかを決定するために、そのようなシンタックスデータを復号し得る。
【0058】
[0068]このように、ビデオ符号化器200は、符号化されたビデオデータ、例えば、ブロック(例えば、CU)へのピクチャの区分並びにブロックについての予測及び/又は残差情報を記述するシンタックス要素、を含むビットストリームを生成し得る。最終的に、ビデオ復号器300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
【0059】
[0069]一般に、ビデオ復号器300は、ビットストリームの符号化されたデータを復号するために、ビデオ符号化器200によって実行されたものと相補的な(reciprocal)プロセスを実行する。例えば、ビデオ復号器300は、ビデオ符号化器200のCABAC符号化プロセスと実質的に同様であり、にもかかわらず相補的な形でCABACを使用して、ビットストリームのシンタックス要素についての値を復号し得る。シンタックス要素は、ピクチャのCTUへの区分情報と、CTUのCUを定義するための、QTBT構造などの対応する区分構造に従った各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(例えば、CU)についての予測及び残差情報を更に定義し得る。
【0060】
[0070]残差情報は、例えば、量子化された変換係数によって表され得る。ビデオ復号器300は、ブロックについての残差ブロックを再び作り出すために、ブロックの量子化された変換係数を逆量子化及び逆変換し得る。ビデオ復号器300は、ブロックについての予測ブロックを形成するために、シグナリングされた予測モード(イントラ予測又はインター予測)及び関連する予測情報(例えば、インター予測のための動き情報)を使用する。ビデオ復号器300は次いで、元のブロックを再び作り出すために、(サンプル毎に)予測ブロックと残差ブロックとを組み合わせ得る。ビデオ復号器300は、ブロックの境界に沿った視覚的アーティファクトを低減するために、デブロッキングプロセスを実行することなど、追加の処理を実行し得る。
【0061】
[0071]本開示は、一般に、シンタックス要素など、ある特定の情報を「シグナリングすること」に言及し得る。「シグナリングすること」という用語は、一般に、符号化されたビデオデータを復号するために使用されるシンタックス要素及び/又は他のデータについての値の通信を指し得る。即ち、ビデオ符号化器200は、ビットストリーム中でシンタックス要素についての値をシグナリングし得る。一般に、シグナリングは、ビットストリーム中に値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムで、又は、例えば、宛先デバイス116による後の取り出しのために記憶デバイス112にシンタックス要素を記憶するときに生じ得るようにリアルタイムではなく、宛先デバイス116にビットストリームを移動させ得る。
【0062】
[0072]
図2A及び2Bは、実例的な四分木二分木(QTBT:quadtree binary tree)構造130及び対応するコーディングツリーユニット(CTU)132を例示する概念図である。実線は、四分木分割を表し、点線は、二分木分割を示す。二分木の各分割(即ち、非リーフ)ノードでは、1つのフラグが、どの分割タイプ(即ち、水平又は垂直)が使用されているかを示すためにシグナリングされ、ここで、この例では、1は、水平分割を示し、0は、垂直分割を示す。四分木分割の場合、四分木ノードが等しいサイズを有する4つのサブブロックに水平及び垂直にブロックを分割するので、分割タイプを示す必要はない。それ故に、QTBT構造130の領域ツリーレベルについての(分割情報などの)シンタックス要素(即ち、実線)と、QTBT構造130の予測ツリーレベルについての(分割情報などの)シンタックス要素(即ち、破線)とを、ビデオ符号化器200は符号化し得、ビデオ復号器300は復号し得る。QTBT構造130の終端リーフノードによって表されるCUについての、予測及び変換データなどのビデオデータを、ビデオ符号化器200は符号化し得、ビデオ復号器300は復号し得る。
【0063】
[0073]一般に、
図2BのCTU132は、第1及び第2のレベルのQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、CTUサイズ(サンプル中のCTU132のサイズを表す)、最小四分木サイズ(MinQTSize、最小許容四分木リーフノードサイズを表す)、最大二分木サイズ(MaxBTSize、最大許容二分木ルートノードサイズを表す)、最大二分木深度(MaxBTDepth、最大許容二分木深度を表す)、及び最小二分木サイズ(MinBTSize、最小許容二分木リーフノードサイズを表す)を含み得る。
【0064】
[0074]CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルで4つの子ノードを有し得、それらの各々は、四分木区分に従って区分され得る。即ち、第1のレベルのノードは、リーフノード(子ノードを有さない)であるか、又は4つの子ノードを有するかのうちのいずれかである。QTBT構造130の例は、そのようなノードが、分岐のための実線を有する親ノード及び子ノードを含むように表す。第1のレベルのノードが最大許容二分木ルートノードサイズ(MaxBTSize)よりも大きくない場合、それらノードは、それぞれの二分木によって更に区分されることができる。1つのノードの二分木分割は、分割の結果として生じるノードが最小許容二分木リーフノードサイズ(MinBTSize)又は最大許容二分木深度(MaxBTDepth)に達するまで反復されることができる。QTBT構造130の例は、そのようなノードが分岐のための破線を有するように表す。二分木リーフノードは、コーディングユニット(CU)と呼ばれ、それは、任意の更なる区分を伴わずに予測(例えば、イントラピクチャ予測又はインターピクチャ予測)及び変換のために使用される。上述されたように、CUはまた、「ビデオブロック」又は「ブロック」と呼ばれ得る。
【0065】
[0075]QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプル及び2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは、16×16として設定され、MaxBTSizeは、64×64として設定され、(幅と高さとの両方についての)MinBTSizeは、4として設定され、MaxBTDepthは、4として設定される。四分木リーフノードを生成するために、最初に四分木区分がCTUに適用される。四分木リーフノードは、16×16(即ち、MinQTSize)から128×128(即ち、CTUサイズ)までのサイズを有し得る。リーフ四分木ノードが128×128である場合、それは、サイズがMaxBTSize(即ち、この例では、64×64)を上回るので、二分木によって更に分割されないであろう。そうでない場合、リーフ四分木ノードは、二分木によって更に区分されるであろう。従って、四分木リーフノードはまた、二分木のためのルートノードであり、0の二分木深度を有する。二分木深度がMaxBTDepth(この例では、4)に達するとき、更なる分割は許可されない。二分木ノードがMinBTSize(この例では、4)に等しい幅を有するとき、それは、更なる垂直分割が許可されないことを暗示する。同様に、MinBTSizeに等しい高さを有する二分木ノードは、その二分木ノードに対して更なる水平分割が許可されないことを暗示する。上述されたように、二分木のリーフノードは、CUと呼ばれ、更なる区分を伴わずに予測及び変換に従って更に処理される。
【0066】
[0076]ブロッキングアーティファクトは、元の静止ピクチャ又はビデオのピクチャ中に存在せず、中程度から高度の圧縮の結果として生じることが多い、再構築されたピクチャ中の水平及び垂直の不連続性を含み得る。例えば、ビデオ符号化器が入力画像を高度に圧縮する場合、復号された画像の視覚的品質は、画像コンテンツが解凍される、即ち、復号されるときに、解凍された画像コンテンツがブロッキングアーティファクトを被るように低下し得る。平坦なエリアにおけるこれらのアーティファクトは、アーティファクトが高コントラストのコンテンツによってマスクされないので、「タイル面(tiling)」のように見える。更に、再生ビデオ中のブロッキングアーティファクトは、不連続性が連続するフレーム中に異なるように位置するので、「動き及びちらつき」として観察され得る。
【0067】
[0077]上記で紹介されたように、ブロッキングアーティファクトの1つの原因は、イントラ予測誤差及びインター予測誤差(例えば、残差)に対して実行される、変換及び量子化を含むブロックベースの変換コーディングである。変換係数の粗い量子化は、ブロック境界において視覚的に邪魔な不連続性を引き起こす可能性がある。動き補償予測は、ブロッキングアーティファクトの別の潜在的な原因である。動き補償されたブロックは、おそらく異なる参照フレームの異なるロケーションから補間された画素データをコピーすることによって生成される。このデータ(例えば、補間から形成された参照ブロックについてのサンプル値)に対して完全に適合することはほとんどないので、データのコピーされたブロックの境界上に不連続性が典型的に生じる。即ち、動き補償を使用して符号化された2つの近隣するブロックは、不連続性を示し得る。
【0068】
[0078](例えば、HEVCにおけるような)デブロッキングフィルタリングは、通常、ブロッキングアーティファクトを減衰させるために、ピクチャ又はブロックのグループが再構築/復号された後に実行される。より詳細には、デブロッキングフィルタリングは、フィルタリング、クリッピング、又は他の手段によって、各ブロック境界の近くに位置するサンプルの値を修正し、それにより、不連続性が平滑化され、従って、より見えにくくなる。
【0069】
[0079]ビデオ圧縮では、デブロッキングフィルタリングは、ディスプレイバッファ中の画像に対して予測ループの外側で実行され得、それは、デブロッキングフィルタリングされたピクチャが他のピクチャを予測するために使用されないことを意味し得る。デブロッキングフィルタリングはまた、予測ループにおいて実行され得、それは、デブロッキングされたピクチャが、将来のピクチャの動き補償のための参照ピクチャとして使用されることを意味し得る。両方の技法は、表示されるビデオの主観的品質を潜在的に改善し、後者はまた、インター予測の正確度がデブロッキングされた参照フレームを使用することによって改善されることの結果として、圧縮効率を潜在的に改善する。
【0070】
[0080]HEVCにおけるデブロッキングは、インループプロセスであり、2つの条件を満たすブロック境界に適用される。第1の条件は、境界がCU、PU、又はTUの境界であることであり、第2の条件は、境界が垂直(又は水平)である場合、x座標(又はy座標)が8の倍数である(いくつかの例では、そうでなければならない)ことである。第2の条件は、デブロッキングされるべき2つの平行な近隣する境界の最小距離が8画素であることを意味し、それは、以下により詳細に説明されるように、より良好な平行化を容易にする。デブロッキングフィルタは、処理されるべき境界を、境界がどれだけ長くても、デブロッキングフィルタがデブロッキングフィルタリングを実行するユニットである複数の重複しない4サンプルセグメントに分割する。本開示では、セグメントに対するデブロッキングオペレーションが導入され、セグメントは、垂直であると仮定され得るが、水平セグメントの処理は、事実上同じである。
【0071】
[0081]ビデオ復号器300は、デブロッキングフィルタリングを実行するとき、境界強度決定を実行し得る。処理されるべきセグメントについて、ビデオ復号器は、ブロック境界の両側の、P及びQとして表される、両側の2つのブロックのコーディング条件(例えば、動きベクトル(MV)、参照インデックス、及び非0変換係数の存在)を調べる。
【0072】
[0082]
図3は、Pブロック142及びQブロック144の例を示す。Pブロック142は、8×8ブロックであり、Qブロック144は、16×16ブロックである。Pブロック142及びQブロック144は、セグメント146A及び146Bとして
図3に示されるブロック境界146を共有する。セグメント146Aと146Bとの両方は、HEVCのデブロッキングフィルタリングに従って、4サンプル長であるが、本開示の技法は、任意の特定のセグメント長に限定されない。
【0073】
[0083]ルーマブロックについて、ビデオ復号器は、セグメント146Aの境界強度を決定する。境界強度は、どれだけの可能性で、強いブロッキングアーティファクトがセグメント146Aの周囲に現れるかを表す。一例では、境界強度値は、0であり得、それは、Pブロック142及びQブロック144中のコーディング条件が、ブロッキングアーティファクトがセグメント146Aに沿って予想されず、セグメント146Aのためのデブロッキングフィルタリングがスキップされ得るようなものであることを意味し得る。別の例では、境界強度値は、2であり得、Pブロック142及びQブロック144中のコーディング条件が、深刻なブロッキングアーティファクトが存在することを潜在的に予想され、より強いデブロッキングフィルタリングが望ましくあり得るようなものであることを意味し得る。境界強度値はまた、1であり得、Pブロック142及びQブロック144中のコーディング条件が、より穏やかなブロッキングアーティファクトが存在することを潜在的に予想され、境界強度が2に等しいときのデブロッキングフィルタリングほど強くないが、何らかのデブロッキングフィルタリングが望ましくあり得るようなものであることを意味し得る。境界強度導出の詳細は、HEVCのセクション8.7.2.4に記載されている。
【0074】
[0084]ビデオ復号器は、ルーマブロックについての境界強度とは異なるようにクロマブロックについての境界強度を決定し得る。例えば、クロマブロックの場合、ビデオ復号器は、2に等しい境界強度をイントラコーディングされたブロックに隣接するセグメントに割り当て、そうでない場合は、0に等しい境界強度をセグメントに割り当てる。
【0075】
[0085]上述されたように、ビデオ復号器は、隣接ブロックのコーディング条件に基づいて、セグメントがブロッキングアーティファクトを有する可能性を推定し得る。しかしながら、ビデオ復号器はまた、セグメントがデブロッキングされるべきかどうか、及びどのようにデブロッキングされるべきかを決定するために、そのセグメントの近くのサンプルの値に基づいて、更なる分析を実行し得る。第1に、ビデオ復号器は、セグメントの近くの4つのサンプルの2次導関数を算出することによって、セグメントをフィルタリングするかどうかの決定を行う。
【0076】
[0086]
図4は、Pブロック152とQブロック154との間の境界上にあるセグメント150の例を示す。ビデオ復号器は、セグメントの近くの4つのサンプルの2次導関数(second derivatives)を算出し、それは、円で囲まれたサンプル158A~158Dとして
図4に示されている。4つの2次導関数の合計(式(1)を参照)が、閾値β及びt
Cに関して以下に説明されるように、閾値βよりも小さい場合、ビデオ復号器は、セグメントがデブロッキングされる必要があると決定する。そうでない場合、ビデオ復号器は、セグメントが、ブロッキングアーティファクトがマスクされる可能性が高い非平坦エリアに位置すると見なされ、このことから、デブロッキングされる必要がないと決定する。セグメントについては、非0境界強度であっても、式(1)の閾値に達しない場合、ビデオ復号器は、デブロッキングフィルタリングをスキップし得る。
|p
2,0-2p
1,0+p
0,0|+|p
2,3-2p
1,3+p
0,3|+|q
2,0-2q
1,0+q
0,0|+|q
2,3-2q
1,3+q
0,3|<β (1)
【0077】
[0087]第2に、デブロッキングされるべきセグメントについて、ビデオ復号器は、強いフィルタリングモードを使用すべきか、又は通常のフィルタリングモードを使用すべきかの別の決定を行い得る。以下の6つの条件(式(2-1)~(2-6))が全て真である場合、それは、エリアが任意のブロッキングアーティファクトをマスクするには平滑すぎる可能性が高いことを意味し、ビデオ復号器は、強いフィルタリングモードが使用されると決定する。そうでない場合、ビデオ復号器は、通常のフィルタリングモードが使用されると決定する。
|p2,0-2p1,0+p0,0|+|q2,0-2q1,0+q0,0|<β/8 (2-1)
|p2,3-2p1,3+p0,3|+|q2,3-2q1,3+q0,3|<β/8 (2-2)
|p3,0-p0,0|+|q0,0-q3,0|<β/8 (2-3)
|p3,3-p0,3|+|q0,3-q3,3|<β/8 (2-4)
|p0,0-q0,0|<2.5tC (2-5)
|p0,3-q0,3|<2.5tC (2-6)
閾値パラメータtcは、クリッピングパラメータを表し、それは、以下により詳細に説明される。
【0078】
[0088]
図5は、Pブロック162とQブロック164との間の境界上にあるセグメント160の例を示す。
図5は、サンプルp
0、p
1、p
2、p
3、q
0、q
1、q
2、及びq
3の物理的位置によって表される1つのラインのためのデブロッキングフィルタリングオペレーションを示すために使用される。
【0079】
[0089]上述されたルーマについての境界強度決定及び他の決定のために、ビデオ復号器は、セグメントレベルで分析及び導出を実行する。ルーマについての強いフィルタリングモード及びルーマについての通常のフィルタリングモードでは、デブロッキングフィルタリングは、ライン(line)毎に(例えば、セグメントが垂直である場合には行毎に、又はセグメントが水平である場合には列毎に)実行される。
【0080】
[0090]ルーマについての強いフィルタリングモードでは、ビデオ復号器は、セグメント160の両側の3つのサンプルを処理する。
図5の例では、Pブロック162中のp
0、p
1、p
2についてのサンプル値は、式(3-1)~(3-3)に示されるように、ローパスフィルタリングによってp
0
'、p
1
'、p
2
'に更新される。
p
0
'=(p
2+2p
1+2p
0+2q
0+q
1+4)≫3 (3-1)
p
1
'=(p
2+p
1+p
0+q
0+2)≫2 (3-2)
p
2
'=(2p
3+3p
2+p
1+p
0+q
0+4)≫3 (3-3)
修正されたサンプル値p
i
'(i=0、1、2)は、範囲[p
i-2t
C、p
i+2t
C]にクリッピングされる。
【0081】
[0091]ビデオ復号器は、pの代わりにqについてではあるが、式(3-1)~(3-3)と事実上同じ式を使用して、Qブロック164中のq0、q1、及びq2を処理する。クリッピングは、qについて、pについてと同じ形で適用される。
【0082】
[0092]ルーマについての通常のフィルタリングモードでは、ビデオ復号器は、セグメント160の両側の1つ又は2つのサンプルを処理する。セグメント160の左側について、例えば、ビデオ復号器は、式(4-1)における条件がチェックされることをチェックする。条件が真である場合、ビデオ復号器は、サンプルp0及びp1を処理する。そうでない場合、ビデオ復号器は、サンプルp0のみを処理する。同様に、右側について、ビデオ復号器は、サンプルq0に加えてサンプルq1が処理されるかどうかを決定するために、式(4-2)における条件をチェックする。処理されるべきサンプルの数に関する決定がセグメントの両側で独立して行われるので、一方の側で1つのサンプルを処理し、他方の側で2つのサンプルを処理することが可能である。
|p2,0-2p1,0+p0,0|+|p2,3-2p1,3+p0,3|<3/16β (4-1)
|q2,0-2q1,0+q0,0|+|q2,3-2q1,3+q0,3|<3/16β (4-2)
p0及びq0を処理するために、最初に中間値δが式(5)にあるように算出される。
δ=(9(q0-p0)-3(q1-p1)+8)≫4 (5)
【0083】
[0093]δの絶対値がtCの絶対値の10倍以上である場合、境界は、保持されるべき自然なエッジと見なされ、ビデオ復号器は、現在のライン上でデブロッキングフィルタリングを実行しない。そうでない場合、ビデオ復号器は、式(6)に示されるように、δを-tCからtCまでの範囲にクリッピングする。
Δ0=Clip3(-tC,tC,δ) (6)
【0084】
[0094]ビデオ復号器は、式(7-1)及び(7-2)に示されるように、Δ0を加算及び減算することによって、p0及びq0の値をそれぞれp0
'及びq0
'に更新する。
p0'=p0+Δ0 (7-1)
q0'=q0-Δ0 (7-2)
【0085】
[0095]セグメント164の両側の第2のサンプル、即ち、p
1及びq
1を処理するために、ビデオ復号器は、式(8-1)及び(8-2)を使用して、更新された値p
1
'及びq
1
'を得る。
【数1】
【0086】
[0096]ビデオ復号器は、境界強度値を決定することによって、しかし、いかなるサンプル値分析も実行せずに、クロマのためのデブロッキングフィルタリングを実行する。ビデオ復号器は、式(7-1)及び(7-2)によって、セグメントの両側の第1のサンプル、即ち、p0及びq0のみを処理し、ここで、デルタΔ0は、式(9)にあるように算出される。
Δ0=Clip3(-tC,tC,(((q0-p0)≪2)+p1-q1+4)≫3) (9)
【0087】
[0097]過剰なフィルタリングを回避するために、ビデオ復号器は、2つのパラメータβ及びtCを算出する。ビデオ復号器は、セグメントがデブロッキングされるべきかどうか、強いデブロッキングが使用されるか又は通常のデブロッキングが使用されるか、及び/又はセグメントの一方の側の1つ又は2つのサンプルが処理されるかどうかなど、デブロッキングが実行される方法を制御するために閾値βを使用する。β又はスケーリングされたβに達するか、又はそれを超えるとき(式(1)、(2)、及び(4)を参照)、局所的サンプル値のより大きい変動を意味し、従って、デブロッキングは、元のピクチャ中の詳細(details)を保持するために、より控えめ(conservative)になる傾向がある。そうでない場合、局所的サンプル値は、より少ない変動を有し(即ち、より平滑)、ビデオ復号器は、デブロッキングフィルタリングをより積極的に実行する。
【0088】
[0098]ビデオ復号器は、式(2-5)及び(2-6)を除いて、主にサンプルの大きさの最大変化を制御するためにクリッピング値tCを使用する。HEVCでは、例えば、通常のフィルタリングモード又はクロマのためのフィルタリングでは、サンプルの大きさの変化は、変化が(ルーマ及びクロマに適用可能な)セグメントの一方の側の第1のサンプルについて±tC、又は(ルーマにのみ適用可能な)第2のサンプルについて±tC/2を超えないように制限される。HEVCでは、大きさのより大きい変化が暗示される強いフィルタリングモードの場合、最大変化は、セグメントの両側で処理される3つのサンプルについて±2tCに制限される。
【0089】
[0099]β及びtCの値は主に、左ブロックP及び右ブロックQからの量子化パラメータ(QP)値に依存する。より詳細には、ビデオ復号器は、QPave=(QPP+QPQ+1)>>1として表される、P及びQからのQPの平均を、2つの1-Dルックアップテーブル(LUT)をβ及びtCについてそれぞれ探索するためのインデックスとして使用し得る。tC値を見出すための探索インデックスは、2を加算することによって調整され得る、即ち、(QPave+2)であるが、境界強度が2に等しい場合、β及びtCの値を決定する支配的な係数(dominant factor)は、依然としてQPaveである。両方のLUTでは、エントリ値は、探索インデックスの値と共に単調に増大し、それは、QPaveがより高いほど、β及びtCがより大きな値を有することになることを意味する。このことから、より重いデブロッキングフィルタリングが選択される可能性がより高く、より大きな大きさの変化が許容される。一方、より低いQPは、β及びtCについての値をより小さくするか、又は0にさえする。低いQPでコーディングされるとき、ピクチャは、典型的には、より少ない、又はより目立たないブロッキングアーティファクトを有し、従って、より軽いデブロッキングを必要とするか、又はデブロッキングを必要としないことさえある。
【0090】
[0100]idxβ及びidxtcとして表される、LUT中のβ及びtCを探索するために使用されるインデックスは、それぞれ、2つのパラメータtc_offset_div2及びbeta_offset_div2によって更に調整されることができる(式(10-1)及び(10-2)を参照)。
idxβ=QPave+2×beta_offset_div2 (10-1)
idxtc=QPave+2×(BS-1)+2×tc_offset_div2, (10-2)
ここで、tc_offset_div2及びbeta_offset_div2は、スライスヘッダ又はピクチャパラメータセット(PPS)中で送られる。これは、シーケンス特性、符号化モード、及び他のファクタに依存するデブロッキング強度を適応させる可能性を符号化器に与える。
【0091】
[0101]HEVCデブロッキングは、並列化を可能にし得る2つの連続するステージを有する。第1のステージでは、ビデオ復号器は、ピクチャ中の全ての垂直ブロック境界をフィルタリングし、第2の段階では、ビデオ復号器は、全ての水平ブロック境界をフィルタリングする。第2のステージでは、モード決定及びフィルタリングのために使用されるサンプルは、第1のステージの出力である。デブロッキングされる境界が全て平行であり、かつ少なくとも8サンプル離れている各ステージでは、1つの境界のデブロッキングに関与するサンプルは、任意の他の境界のデブロッキングに関与するサンプルと重複しない。このコンテキストでは、1つの境界のデブロッキングに関与するサンプルは、境界の両側でフィルタリングされるべき最大3つのサンプルを、及びフィルタリング及びモード決定をサポートするために両側で最大4つのサンプルを含み、従って、1つの境界は、任意の他の境界と平行してデブロッキングされることができる。
【0092】
[0102]HEVCデブロッキングフィルタは、ブロック境界の近くのサンプルをフィルタリングし、閾値量よりも大きいサンプルの大きさの変化をクリッピングする。HEVCデブロッキングフィルタは、3つの異なるレベルのフィルタ強度を有する3つのモードで動作する。3つのモード又はフィルタ強度は、本明細書では、ブロック境界の近くのサンプルの局所的アクティビティが増大すると共に、強い、通常、及び0(即ち、フィルタリングなし)と呼ばれる(式(1)及び(2-1)~(2-6)を参照)。強いフィルタリングモードでは、HEVCデブロッキングフィルタは、ローパスフィルタリングによってブロック境界の各側で3つのサンプルをフィルタリングする(式(3-1)~(3-3)を参照)。通常のフィルタリングモードの場合、HEVCデブロッキングフィルタは、少なくとも境界に最も近いサンプルをフィルタリングし、境界の両側で、内側サンプルが十分に平滑である場合、2番目に近いサンプルもフィルタリングし得る(式(4-1)及び(4-2)を参照)。HEVCデブロッキングフィルタは、パラメータtCによって制御されるクリッピングを実行する。強いフィルタリングの場合、サンプルの大きさの変化は、2tC以下に制限される。通常のフィルタリングの場合、第1のサンプル及び第2のサンプルの大きさの変化は、それぞれtC及びtC/2以下に制限される(式(6)-(8-2)を参照)。異なる境界強度値は、tCに差異を作るだけであり、即ち、2に等しい境界強度を有するセグメントは、1に等しい境界強度を有するセグメントよりも大きいtCを有する。
【0093】
[0103]HEVCデブロッキングフィルタは、本質的に、H.264/AVCデブロッキングのフレームワークに従い、コーディング条件に基づく境界強度決定、強いから0までのマルチレベルフィルタリング強度、QP並びに境界強度依存パラメータβ及びtCなど、H.264/AVCデブロッキングフィルタの主要な特徴を継承する。H.264/AVCデブロッキングフィルタと比較して、HEVCデブロッキングフィルタにおける新しい設計要素は、より容易な並列処理と、HEVCのより大きいブロックサイズコーディング構造へのより良好な適合とを可能にするが、コーディング効率をあまり改善しない。従って、HEVCのファイナライズ(finalization)時の計算の複雑さとコーディング効率との間の良好なトレードオフと見なされたHEVCデブロッキングは、今日の高度に開発されたハードウェア能力を考慮すると、過度に簡略化され得る。本開示の技法は、並列化フレンドリーな設計を依然として維持しながら、有意なコーディング効率改善を達成するために、より多くのハードウェア計算リソースを潜在的に活用する。
【0094】
[0104]本開示は、HEVCデブロッキングフィルタリングを含むデブロッキングフィルタリングの態様を改善し得る技法を提案する。HEVCデブロッキングフィルタリングの欠点の一例は、境界エリアの平滑度を表すために、3つのレベルのフィルタリング強度に対応する3つのレベルしか使用しないことが粗すぎ得ることである。HEVCデブロッキングフィルタリングの欠点の別の例は、セグメントの4つのラインのうちの2つしかデブロッキングモード決定及びフィルタ選択において使用されず、各ラインでは、両側からの4つのサンプルしか使用されないことである。次世代ビデオコーデックのブロックサイズは、128×128まで、又は更に大きくなる可能性があるので、モード決定のためにサンプルのそのような小さい部分を使用することは、境界エリアの実際のアクティビティを正確に反映しないことがあり、ノイズに敏感であり得る。
【0095】
[0105]HEVCデブロッキングフィルタリングの欠点の別の例は、セグメントの両側でフィルタリングされるべきサンプルが、3つものサンプル又はわずか1つのサンプルを含む可能性があり、それは、大きいブロックのデブロッキングに良好な結果を提供するのに十分なサンプルではないことがあることである。HEVCデブロッキングフィルタリングの欠点の別の例は、強いフィルタリングモードでは3つのサンプル(式(3-1)~(3-3)を参照)に、通常のフィルタリングモードでは2つのサンプル(式(5)~(8-2)を参照)にそれぞれ予め割り当てられた、合計で5つの予め定義された4タップ又は5タップフィルタがあることである。HEVCデブロッキングフィルタの選択における限られた数のオプション、長さ不足(short length)、及び柔軟性のなさは、デブロッキングにおけるより低い効率を引き起こし得る。
【0096】
[0106]HEVCデブロッキングフィルタリングの欠点の別の例は、異なる境界強度を有するセグメントが、全く異なる局所的アクティビティを有し得るが、2に等しい境界強度についてクリッピング値がより大きくなるものの、同じデブロッキングフィルタを共有し得ることである。HEVCデブロッキングフィルタリングの欠点の別の例は、HEVCデブロッキングフィルタがブロックPとブロックQとを区別しないことである。フィルタリング強度は、P及びQの2次導関数の平均によって決定され(式(1)及び(2-1)~(2-2)を参照)、パラメータβ及びtCの値は、P及びQの平均QPに依存する。Pブロック又はQブロックのうちの一方が平滑であり得るが、他方がディーテイルに富んでいるコーディングシナリオについて、Pブロック及びQブロックを同じ方法で処理する際に効率損失があり得、それは、珍しいシナリオではない。
【0097】
[0107]本開示は、ビデオコーディング又はビデオ処理のために利用されるデブロッキングフィルタリングの性能を潜在的に改善するためのいくつかの技法を提案する。一例によると、ビデオ復号器300は、ブロック区分のパラメータに基づいてフィルタ分析(例えば、フィルタ選択又はフィルタ強度適応)を実行するように構成され得る。一例では、ビデオ復号器300は、フィルタリングされた境界に直交するブロックの長さに基づいて、デブロッキングフィルタ及びフィルタサポート(例えば、ダウンサンプリングされたフィルタサポート)の長さを決定するように構成され得る。別の例では、フィルタリングされた境界と位置合わせされた(aligned)ブロックの長さは、決定プロセスに影響を及ぼし、例えば、フィルタ決定のために使用される境界サンプルの空間サブサンプリングを可能にする。
【0098】
[0108]別の例によると、ビデオ復号器300は、ブロック区分パラメータ(例えば、サイズ)と、Tc制限パラメータが適用される現在処理されているサンプルのブロック内の関連する位置との関数として、出力サンプル信頼区間(output sample confidence interval)、別名、係数Tcを適応させるように構成され得る。Tcは、復号されたサンプルからのデブロッキングされたサンプル値の正又は負のうちのいずれかの偏差を制限し、デブロッキングプロセスに入力される。
【0099】
[0109]別の例によると、ビデオ復号器300は、決定及びフィルタリングプロセスの設計を保持しながら、決定及びフィルタリングプロセスに利用可能なサンプルセットを制限するために、処理されたブロックのパラメータ(ブロックサイズ)を使用するように構成され得る。ビデオ復号器300は、フィルタリングプロセスに必要であるが、補外(extrapolation)又はパディングプロセスなどの指定されたプロセスを使用する制限に起因して利用可能でないサンプルを作り出し得る。別の例によると、ビデオ復号器300は、フィルタタイプ、フィルタ長、Tc制限パラメータ、空間サンプルスキップステップなどのデブロッキングフィルタパラメータを選択するために、変換タイプ/基底関数に関する情報などの変換特性と、ビデオ復号器300に非0としてシグナリングされ、従って、サンプルの再構築されたブロック中に存在する変換係数とを使用し得る。別の例によると、ビデオ復号器300は、P及びQフィルタ選択に関する閾値を独立して設定するために、P及びQブロックの量子化パラメータを使用し得る。
【0100】
[0110]一例では、異なるサイズのブロックを分離するブロック境界について、ビデオ復号器300は、非対称デブロッキングフィルタリングに関する決定を行い得る。例えば、ブロック境界が異なるサイズのブロックを分離するとき、ビデオ復号器300は、非対称デブロッキングフィルタを選択し得る。
【0101】
[0111]別の例では、非対称フィルタが使用されるべきであるとビデオ復号器300が決定した場合、境界の両側のデブロッキングプロセスは異なり得る。例えば、タップ長、フィルタ係数、クリッピング、又は正規化プロセスなどの、デブロッキングフィルタのパラメータは、フィルタリングされた境界の両側で異なり得る。追加又は代替として、分析フィルタのタップ長、分析フィルタ係数、クリッピング、正規化、又は閾値などの、決定プロセスのためのパラメータは、フィルタリングされた境界の両側で異なり得る。
【0102】
[0112]別の例では、ビデオ復号器300は、境界上のブロックの1つ以上のコーディングモードパラメータに基づいて、非対称フィルタリングのためのパラメータを決定し得る。そのようなコーディングモードパラメータの例は、コーディングモード、予測モード、スライスタイプ、又は他のそのようなパラメータを含む。
【0103】
[0113]次に、上記で紹介された技法のインプリメンテーションの非限定的な例が説明される。一例では、フィルタ分析(フィルタ選択又はフィルタ強度適応)のプロセスは、ブロック区分のパラメータを含むように拡張される。例えば、ビデオ復号器300は、フィルタリングされた境界影響(boundary affects)に直交するブロックの長さに基づいて、デブロッキングフィルタ及びフィルタサポート(例えば、ダウンサンプリングされたフィルタサポート)の長さを決定するように構成され得る。別の例では、ビデオ復号器300は、フィルタ決定のために使用される境界サンプルの空間サブサンプリングを可能にすることなど、フィルタリングされた境界と位置合わせされたブロックの長さに基づいて決定を行うように構成され得る。
【0104】
[0114]以下の疑似コードは、ビデオ復号器300によって実行されるデブロッキングパラメータ導出の実例的なインプリメンテーションを提供する:
VERT_SAMPLE_SKIPは、境界サンプルの分類のために使用されるサンプルの数を指定する空間リサンプリングパラメータ(スキップされたサンプルの数)を定義する変数である。
DB_BLOCK_SIZE_CLASSIFIERは、境界サンプルの分類のために使用されるサンプルの数を定義する変数である。
Function isSmoothAsymArea(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos)
if (edgeDir == EDGE_VER)
{
blkWidthQ = std::min((SizeType)LARGE_BLOCK_SIZE_CLASSIFIER, blkSizeQ.width >> 1);
blkHeightQ = blkSizeQ.height;
blkWidthP = std::min((SizeType)LARGE_BLOCK_SIZE_CLASSIFIER, blkSizeP.width >> 1);
blkHeightP = blkSizeP.height;
piSrcP = piSrcQ - blkWidthP;
}
else // (edgeDir == EDGE_HOR)
{
blkWidthQ = blkSizeQ.width;
blkHeightQ = std::min((SizeType) DB_BLOCK_SIZE_CLASSIFIER, blkSizeQ.height >> 1);
blkWidthP = blkSizeP.width;
blkHeightP = std::min((SizeType) DB_BLOCK_SIZE_CLASSIFIER, blkSizeP.height >> 1);
piSrcP = piSrcQ - blkHeightP * iStride;
}
if (edgeDir == EDGE_VER)
{
Int i;
i = localPos.y - cuPosLuma.y;
//水平方向の局所的分散を計算する
for (Int j = 1; j < (blkWidthQ - 1); j+=VERT_SAMPLE_SKIP)
{
Int loc = i * iStride + j;
varQ += abs(piSrcQ[loc - 1] + piSrcQ[loc + 1] - (piSrcQ[loc] << 1));
loc = (i + 3) * iStride + j;
varQ += abs(piSrcQ[loc - 1] + piSrcQ[loc + 1] - (piSrcQ[loc] << 1));
}
}
else if (edgeDir == EDGE_HOR)
{
Int j;
j = localPos.x - cuPosLuma.x;
//垂直方向の局所的分散を計算する
for (Int i = 1; i < (blkHeightQ - 1); i+=HOR_SAMPLE_SKIP)
{
Int loc = i * iStride + j;
varQ += abs(piSrcQ[loc - iStride] + piSrcQ[loc + iStride] - (piSrcQ[loc] << 1));
loc = i * iStride + (j + 3);
varQ += abs(piSrcQ[loc - iStride] + piSrcQ[loc + iStride] - (piSrcQ[loc] << 1));
}
}
【0105】
[0115]上記の例では、pSrcPは、例えば、デブロッキングフィルタリングされるべき境界の一方の側のブロックへのポインタを表し得、pSrcQは、デブロッキングフィルタリングされるべき境界の他方の側のブロックへのポインタを表し得る。
【0106】
[0116]ビデオ復号器300は、復号されたサンプルからのデブロッキングされたサンプル値の偏差を制限するために出力サンプル信頼区間、別名、係数Tcを決定するように構成され得る。Tcは、デブロッキングプロセスに入力され得る。ビデオ復号器300は、ブロックサイズなどのブロック区分パラメータと、Tc制限パラメータが適用されている現在処理されているサンプルのブロック内又はフィルタリングされた境界内の関連する位置との関数としてTcを適応させるように構成され得る。一例では、現在処理されているサンプルの関連する位置は、フィルタリングされた境界に対する現在処理されているサンプルのロケーションである。
【0107】
[0117]1つの実例的なインプリメンテーションでは、Tc制限パラメータは、フィルタリングされた境界内の現在フィルタリングされているライン/列の関連する位置の関数として定義されることができ、ここで、iは、境界の上/右のロケーションからそれぞれ始まる、フィルタリングされた境界の現在処理されているライン/列のインデックスである。
【0108】
[0118]以下の疑似コードは、Tc適用の実例的なインプリメンテーションを提供する:
for( int i = 0; i < boundaryLength; i++ )
{
for( int j = 0; j < deblockedSamplesOverBoundary; j++ )
{
delta = deblockingFilterResult[i][j] - deblockingFilterInpt[i][j];
delta1 = Clip3(-Tc[i], Tc[i], delta );
}
}
いくつかの例では、Tc値は、現在処理されているブロックの左上の位置に関連する位置の関数としてブロックについて定義されることができる:
y = coordinateCurrentlyProcessedSample.y - coordinateTopLeftSampleOfBlock.y;
x = coordinateCurrentlyProcessedSample.x - coordinateTopLeftSampleOfBlock.x;
delta1 = Clip3( -tc2[y][x], tc2[y][x], delta[y][x] );
【0109】
[0119]ビデオ復号器300は、決定及びフィルタリングプロセスの設計を保持しながら、決定及びフィルタリングプロセスに利用可能なサンプルセットを制限するために、ブロックサイズなど、処理されたブロックのパラメータを使用するように構成され得る。ビデオ復号器300は、フィルタリングプロセスに必要であるが、補外又はパディングプロセスなどの指定されたプロセスを使用する制限に起因して利用可能でないサンプルを作り出し得る。
【0110】
[0120]以下の疑似コードは、実例的なインプリメンテーションを提供する。いくつかのインプリメンテーションでは、境界処理のためのフィルタのグループが定義され得る。フィルタの選択は、ブロック境界で近接するブロックサイズの組み合わせと、境界サンプルの分類の結果とに基づくことができる。
DB_FILTER_BLOCK_SIZE1、DB_FILTER_BLOCK_SIZE2、及びDB_FILTER_BLOCK_SIZE3は、境界サンプルのフィルタリングのために使用されるサンプルの数を各々定義する変数であり、例として3つのフィルタのフィルタサポートを定義する。
if (edgeDir == EDGE_VER)
{
minTUSize = std::min(blkSizeP.width, blkSizeQ.width);
}
else
{
minTUSize = std::min(blkSizeP.height, blkSizeQ.height);
}
if (minTUSize >= DB_FILTER_BLOCK_SIZE1 )
{
if (isFilterApplicable (cu, edgeDir, localPos))
{
//P及びQサンプルに対して対称フィルタ1を適用する
apply_filter1(cu, edgeDir, localPos));
}
}
else if ((MODE_INTRA != cuP.predMode) && (MODE_INTRA != cuQ.predMode))
{
if (edgeDir == EDGE_VER)
{
if (
( (blkSizeP.width >= DB_FILTER_BLOCK_SIZE1) && (blkSizeQ.width >= 8) )
||
( (blkSizeQ.width >= DB_FILTER_BLOCK_SIZE1) && (blkSizeP.width >= 8) )
)
{
if (isFilterApplicable (cu, edgeDir, localPos))
{
//非対称フィルタリングを適用する
if (blkSizeP.width >= DB_FILTER_BLOCK_SIZE1)
{
apply_filter2_onP(cu, edgeDir, localPos));
apply_filter3_onQ(cu, edgeDir, localPos));
}
}
}
}
else
{
if (
( (blkSizeP.height >= DB_FILTER_BLOCK_SIZE1) && (blkSizeQ.height >= 8) )
||
( (blkSizeQ.height >= DB_FILTER_BLOCK_SIZE1) && (blkSizeP.height >= 8))
)
{
if (isFilterApplicable (cu, edgeDir, localPos))
{
//非対称フィルタリングを適用する
if (blkSizeP.width >= DB_FILTER_BLOCK_SIZE1)
{
apply_filter2_onP(cu, edgeDir, localPos));
apply_filter3_onQ(cu, edgeDir, localPos));
}
}
}
}
}
【0111】
[0121]ビデオ復号器300は、フィルタタイプ、フィルタ長、Tc制限パラメータ、及び/又は空間サンプルスキップステップなどのデブロッキングフィルタパラメータを選択するために、変換タイプ/基底関数に関する情報などの変換特性と、ビデオ復号器300に非0としてシグナリングされ、従って、サンプルの再構築されたブロック中に存在する変換係数とを使用するように構成され得る。
【0112】
[0122]以下の疑似コードは、実例的なインプリメンテーションを提供する。ビデオ符号化器200及びビデオ復号器300が複数の変換セット、例えば{T1、T2、T3}を利用し、ビデオ符号化器200が水平及び垂直方向に適用可能な最適な変換を選択すると仮定する。ビデオ復号器300において、水平/垂直方向への変換適用可能性は、ビットストリームのシンタックス要素から導出されることができる。VVCのWD(ドラフト2)において利用される導出プロセスが以下に指定される、
【表1】
【0113】
[0123]以下の疑似コードは、デブロッキングフィルタパラメータ導出のために利用されることができる:
if (MTS_CU_flag == 0)
{
ApplyDeblockingProcessType1();
}else
{
Int TransformSetId = (MTS_Hor_flag << 1) + MTS_Ver_flag;
switch( TransformSetId )
{
case 0: ApplyDeblockingProcessType2(); break;
case 1: ApplyDeblockingProcessType3(); break;
case 2: ApplyDeblockingProcessType4(); break;
case 3: ApplyDeblockingProcessType5(); break;
}
}
【0114】
[0124]以下は、関数ApplyDeblockingProcessType1の例である。他の関数、例えば、デブロッキング関数の設計もまた、同様のパターンに従い得る。
function ApplyDeblockingProcessType1()
{
1.ブロッキング境界に直交するブロックサイズ、非0コーディングされた変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、分類子(classifier)の長さを導出する。
2.ブロッキング境界に直交するブロックサイズ、非0コーディングされた変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、デブロッキングの長さを導出する。
3.ブロッキング境界に直交するブロックサイズ、非0コーディング変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、分類子(classifier)又はデブロッキングプロセス中にスキップされるサンプルを導出する。
4.ブロッキング境界に直交するブロックサイズ、非0コーディング変換係数のインデックス及び変換のタイプ、並びに局所的アクティビティ推定値に基づいて、Tc、局所的閾値、QP調整などのデブロッキングのパラメータを導出する。
【0115】
[0125]ビデオ復号器300は、P及びQフィルタ選択に関する閾値を独立して設定するために、P及びQブロックの量子化パラメータを使用するように構成され得る。
iQPp = cuP.qp;
iQPq = cuQ.qp;
【0116】
[0126]以下の疑似コードが、Pブロックパラメータについて与えられる。Qブロックのための処理は同様であり得る。
const int iIndexTCp = Clip3(0, MAX_QP + DEFAULT_INTRA_TC_OFFSET, Int(iQPp + DEFAULT_INTRA_TC_OFFSET * (uiBs_loc - 1) + (tcOffsetDiv2 << 1)));
const int iIndexBp = Clip3(0, MAX_QP, iQP + (betaOffsetDiv2 << 1));
const int iTcp = sm_tcTable [iIndexTC] * iBitdepthScale;
const int iBetap = sm_betaTable[iIndexB ] * iBitdepthScale;
const int iSideThresholdp = ( iBeta + ( iBeta >> 1 ) ) >> 3;
const int iThrCutp = iTc * 10;
【0117】
[0127]更に別の例では、位置依存デブロッキングの以下のインプリメンテーションが、本明細書の他の特徴と組み合わせて使用され得る。
【0118】
[0128]numberQSide及びnumberPSideを、現在のラインに適用されるフィルタの長さとする。上記で紹介されたように、フィルタ長numberPSide及びnumberQSideは、ブロックサイズに基づき得る。この例では、ブロック境界の7及び3画素をフィルタリングするために適用される2つのフィルタが展開される。位置依存クリッピング値のパラメータは、テーブル(tables)Tc7及びTc3を通じて表される。
const char Tc7[7] = { 6, 5, 4, 3, 2, 1, 1};
const char Tc3[3] = { 6, 4, 2 };
const char *pTcP = (numberPSide == 3) ? Tc3 : Tc7;
const char *pTcQ = (numberQSide == 3) ? Tc3 : Tc7;
for (int thePos = 0; thePos < numberPSide; thePos++)
{
src = piSrcP[-iOffset*thePos];
int cvalue = (tc * pTcP[thePos]) >>1;
piSrcP[-iOffset * thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6));
}
for (int thePos = 0; thePos < numberQSide; thePos++)
{
src = piSrcQ[iOffset*thePos];
int cvalue = (tc * pTcQ[thePos]) >> 1;
piSrcQ[iOffset*thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsQ[thePos] + refQ * (64 - dbCoeffsQ[thePos]) + 32) >> 6));
}
【0119】
[0129]上記の例では、「Src=piSrcP[-iOffSet*thePos]」は、デブロッキングフィルタリングの前のサンプル値を例示する。「((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)」は、デブロッキングフィルタリングオペレーションを適用することを例示する。「refP」又は「refQ」は、ブロック境界の一方の側(ブロックP又はQ側)のサンプルの線形結合の値、又はブロック境界の一方の側(ブロックP又はQ側)のフィルタリングされた値を表す。「refMiddle」は、ブロック境界の両側のサンプルの線形結合の値、又はブロック境界の両側のフィルタリングされた値を表す。「Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))」は、src-value及びsrc+cvalueの範囲内でデブロッキングフィルタリングされた値をクリッピングすることを例示し、それは、フィルタリングされる前のサンプル値に閾値cvalueを加えた/引いたものであり、ここで、cvalueは、サンプルのロケーション及びブロックサイズに基づいて適応的である。
【0120】
[0130]上述されたように、ビデオ復号器300は、デブロッキングフィルタリングが適用されたブロックのサイズに基づいて、numberQSide及びnumberPSideを決定し得る。refMiddleは、ブロックP及びブロックQの境界の各側のサンプルにフィルタを適用した後の値を表す。refP及びrefQは、ブロックP及びブロックQ中のサンプルにフィルタを適用した後の値を表す。
【0121】
[0131]更に別の例では、位置依存デブロッキングの以下のインプリメンテーションが、本明細書の他の特徴と組み合わせて使用され得る。
【0122】
[0132]numberQSide及びnumberPSideを、現在のラインに適用されるフィルタの長さとする。この例では、ブロック境界の7及び3画素をフィルタリングするために適用される2つのフィルタが展開される。位置依存クリッピング値のパラメータは、テーブルTc7及びTc3を通して表される。
const char Tc7[4] = { 3, 2, 1, 1 };
const char Tc3[3] = { 3, 2, 1 };
const char *pTcP = (numberPSide == 3) ? Tc3 : Tc7;
const char *pTcQ = (numberQSide == 3) ? Tc3 : Tc7;
char nSP = (numberPSide == 3) ? 0: 1;
char nSQ = (numberQSide == 3) ? 0: 1;
for (int thePos = 0; thePos < numberPSide; thePos++)
{
src = piSrcP[-iOffset*thePos];
int cvalue = tc * pTcP[thePos >> nSP];
piSrcP[-iOffset * thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6));
}
for (int thePos = 0; thePos < numberQSide; thePos++)
{
src = piSrcQ[iOffset*thePos];
int cvalue = tc * pTcQ[thePos >> nSQ];
piSrcQ[iOffset*thePos] = Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsQ[thePos] + refQ * (64 - dbCoeffsQ[thePos]) + 32) >> 6));
}
【0123】
[0133]上記の例では、「Src=piSrcP[-iOffSet*thePos]」は、デブロッキングフィルタリングの前のサンプル値を例示する。「((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)」は、デブロッキングフィルタリングオペレーションを適用することを例示する。「refP」及び「refMiddle」は、ブロック境界の一方の側のサンプルの線形結合、又はブロック境界の一方の側のフィルタリングされた画素の例である。「Clip3(src - cvalue, src + cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))」は、src-value及びsrc+cvalueの範囲内でデブロッキングフィルタリングされた値をクリッピングすることを例示し、それは、フィルタリングされる前のサンプル値に閾値cvalueを加えたものであり、ここで、cvalueは、サンプルのロケーション及びブロックサイズに基づいて適応的である。
【0124】
[0134]上述されたように、ビデオ復号器300は、デブロッキングフィルタリングが適用されたブロックのサイズに基づいて、numberQSide及びnumberPSideを決定し得る。refMiddleは、ブロックP及びブロックQの境界の各側のサンプルにフィルタを適用した後の値を表す。refP及びrefQは、ブロックP及びブロックQ中のサンプルにフィルタを適用した後の値を表す。
【0125】
[0135]更に別の例では、位置依存デブロッキングの以下のインプリメンテーションが、本明細書の他の特徴と組み合わせて使用され得る。
【0126】
[0136]numberQSide及びnumberPSideを、現在のラインに適用されるフィルタの長さとする。この例では、ブロック境界の7及び3画素をフィルタリングするために適用される2つのフィルタが展開される。位置依存クリッピング値のパラメータは、テーブルTc7及びTc3を通じて表される。
const char Tc7[4] = { 3, 2, 1, 1 };
const char Tc3[3] = { 3, 2, 1 };
const Pel m4 = piSrc[0];
const Pel m3 = piSrc[-iOffset];
const Pel m5 = piSrc[iOffset];
const Pel m2 = piSrc[-iOffset * 2];
const Pel m6 = piSrc[iOffset * 2];
const Pel m1 = piSrc[-iOffset * 3];
const Pel m7 = piSrc[iOffset * 3];
const Pel m0 = piSrc[-iOffset * 4];
piSrc[-iOffset] = Clip3(m3 - Tc3[0] * tc, m3 + Tc3[0] * tc, ((m1 + 2 * m2 + 2 * m3 + 2 * m4 + m5 + 4) >> 3));
piSrc[0] = Clip3(m4 - Tc3[0] * tc, m4 + Tc3[0] * tc, ((m2 + 2 * m3 + 2 * m4 + 2 * m5 + m6 + 4) >> 3));
piSrc[-iOffset * 2] = Clip3(m2 - Tc3[1] * tc, m2 + Tc3[1] * tc, ((m1 + m2 + m3 + m4 + 2) >> 2));
piSrc[iOffset] = Clip3(m5 - Tc3[1] * tc, m5 + Tc3[1] * tc, ((m3 + m4 + m5 + m6 + 2) >> 2));
piSrc[-iOffset * 3] = Clip3(m1 - Tc3[2] * tc, m1 + Tc3[2] * tc, ((2 * m0 + 3 * m1 + m2 + m3 + m4 + 4) >> 3));
piSrc[iOffset * 2] = Clip3(m6 - Tc3[2] * tc, m6 + Tc3[2] * tc, ((m3 + m4 + m5 + 3 * m6 + 2 * m7 + 4) >> 3));
【0127】
[0137]更に別の例では、非対称フィルタリングの以下の決定条件が、本明細書に開示される他の特徴と組み合わせて使用され得る。
・P又はQ予測モードに応じて非対称のケースではロングフィルタをディセーブルにする。
bool bSidePisLarge = (edgeDir == EDGE_VER && cuP.block(COMPONENT_Y).width >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH)
|| (edgeDir == EDGE_HOR && cuP.block(COMPONENT_Y).height >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH);
bool bSideQisLarge = (edgeDir == EDGE_VER && cuQ.block(COMPONENT_Y).width >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH)
|| (edgeDir == EDGE_HOR && cuQ.block(COMPONENT_Y).height >= SHARP_LARGE_BLOCKS_SIZE_LOWEST_TH);
bool asymmFlag = !(bSidePisLarge && bSideQisLarge);
if (asymmFlag)
if ((MODE_INTRA == cuP.predMode) || (MODE_INTRA == cuQ.predMode))
{
bSidePisLarge = 0;
bSideQisLarge = 0;
}
If (bSidePisLarge)
ApplyLongFilterP();
else
ApplyShortFilterP();
If (bSideQisLarge)
ApplyLongFilterQ();
else
ApplyShortFilterQ();
【0128】
[0138]
図6は、本開示の技法を実行し得る実例的なビデオ符号化器200を例示するブロック図である。
図6は、説明を目的として提供されており、本開示に広く例証及び説明されるような技法の限定と見なされるべきではない。説明を目的として、本開示は、HEVCビデオコーディング規格及び開発中のH.266ビデオコーディング規格などのビデオコーディング規格のコンテキストにおいてビデオ符号化器200について説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般にビデオ符号化及び復号に適用可能である。
【0129】
[0139]
図6の例では、ビデオ符号化器200は、ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、フィルタユニット216、復号ピクチャバッファ(DPB)218、及びエントロピー符号化ユニット220を含む。
【0130】
[0140]ビデオデータメモリ230は、ビデオ符号化器200のコンポーネントによって符号化されることになるビデオデータを記憶し得る。ビデオ符号化器200は、例えば、ビデオソース104(
図1)から、ビデオデータメモリ230中に記憶されたビデオデータを受信し得る。DPB218は、ビデオ符号化器200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして機能し得る。ビデオデータメモリ230及びDPB218は、同期動的ランダムアクセスメモリ(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、又は他のタイプのメモリデバイスを含むDRAMなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ230及びDPB218は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、例示されているように、ビデオデータメモリ230は、ビデオ符号化器200の他のコンポーネントと共にオンチップであり得るか、又はそれらのコンポーネントに対してオフチップであり得る。
【0131】
[0141]この開示では、ビデオデータメモリ230への言及は、そのように明記されていない限り、ビデオ符号化器200の内部にあるメモリに、又はそのように明記されていない限り、ビデオ符号化器200の外部にあるメモリに、限定されると解釈されるべきではない。むしろ、ビデオデータメモリ230への言及は、ビデオ符号化器200が符号化のために受信するビデオデータ(例えば、符号化されるべき現在のブロックについてのビデオデータ)を記憶するメモリへの言及として理解されるべきである。
図1のメモリ106はまた、ビデオ符号化器200の様々なユニットからの出力の一時記憶(temporary storage)を提供し得る。
【0132】
[0142]
図6の様々なユニットは、ビデオ符号化器200によって実行される動作の理解を助けるために例示される。それらユニットは、固定機能回路、プログラマブル回路、又はそれらの組み合わせとしてインプリメントされ得る。固定機能回路は、特定の機能を提供する回路を指し、実行されることができる動作に予め設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路を指し、実行されることができる動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義された形でプログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取る又はパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの1つ以上は、個別の回路ブロック(固定機能又はプログラムマブル)であり得、いくつかの例では、ユニットのうちの1つ以上は、集積回路であり得る。
【0133】
[0143]ビデオ符号化器200は、プログラマブル回路から形成された、算術論理ユニット(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、及び/又はプログラマブルコアを含み得る。ビデオ符号化器200の動作がプログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(
図1)が、ビデオ符号化器200が受信及び実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶し得るか、又はビデオ符号化器200内の別のメモリ(図示せず)が、そのような命令を記憶し得る。
【0134】
[0144]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオ符号化器200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、残差生成ユニット204及びモード選択ユニット202にビデオデータを提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべき生のビデオデータであり得る。
【0135】
[0145]モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、及びイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222及び/又は動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、又は同様のものを含み得る。
【0136】
[0146]モード選択ユニット202は、一般に、符号化パラメータの組み合わせをテストするために複数の符号化パスを調整し、そのような組み合わせのためのレート歪み値をもたらす。符号化パラメータは、CUへのCTUの区分、CUについての予測モード、CUの残差データについての変換タイプ、CUの残差データについての量子化パラメータ、等を含み得る。モード選択ユニット202は、最終的に、他のテストされた組み合わせよりも良好なレート歪み値を有する符号化パラメータの組み合わせを選択し得る。
【0137】
[0147]ビデオ符号化器200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、1スライス内の1つ以上のCTUをカプセル化し得る。モード選択ユニット202は、上述されたQTBT構造又はHEVCの四分木構造などの木構造に従ってピクチャのCTUを区分し得る。上述されたように、ビデオ符号化器200は、ツリー構造に従ってCTUを区分することから1つ以上のCUを形成し得る。そのようなCUはまた、一般に「ビデオブロック」又は「ブロック」と呼ばれ得る。
【0138】
[0148]一般に、モード選択ユニット202はまた、現在のブロック(例えば、現在のCU、又はHEVCでは、PUとTUとの重複部分)についての予測ブロックを生成するために、そのコンポーネント(例えば、動き推定ユニット222、動き補償ユニット224、及びイントラ予測ユニット226)を制御する。現在のブロックのインター予測の場合、動き推定ユニット222は、1つ以上の参照ピクチャ(例えば、DPB218中に記憶された1つ以上の以前にコーディングされたピクチャ)中の1つ以上の密接に一致する参照ブロックを識別するために動き探索を実行し得る。特に、動き推定ユニット222は、例えば、絶対差分和(SAD)、二乗差分和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、又は同様のものに従って、潜在的な参照ブロックが現在のブロックにどれだけ類似しているかを表す値を算出し得る。動き推定ユニット222は、一般に、現在のブロックと考慮されている参照ブロックとの間のサンプル毎の差分を使用してこれらの算出を実行し得る。動き推定ユニット222は、現在のブロックに最も密接に一致する参照ブロックを示す、これらの算出の結果として生じる最低値を有する参照ブロックを識別し得る。
【0139】
[0149]動き推定ユニット222は、現在のピクチャ中の現在のブロックの位置に対する参照ピクチャ中の参照ブロックの位置を定義する1つ以上の動きベクトル(MV)を形成し得る。動き推定ユニット222は次いで、動き補償ユニット224に動きベクトルを提供し得る。例えば、単方向インター予測の場合、動き推定ユニット222は、単一の動きベクトルを提供し得るのに対して、双方向インター予測の場合、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は次いで、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度(fractional sample precision)を有する場合、動き補償ユニット224は、1つ以上の補間フィルタに従って予測ブロックについての値を補間し得る。その上、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてのデータを取り出し、例えば、サンプル毎の平均化又は重み付き平均化を通して、取り出されたデータを組み合わせ得る。
【0140】
[0150]別の例として、イントラ予測、又はイントラ予測コーディングの場合、イントラ予測ユニット226は、現在のブロックに近隣するサンプルから予測ブロックを生成し得る。例えば、方向性モード(directional modes)の場合、イントラ予測ユニット226は、一般に、予測ブロックを作り出すために、近隣するサンプルの値を数学的に組み合わせ、現在のブロックにわたって定義された方向にこれらの算出された値をポピュレート(populate)し得る。別の例として、DCモードの場合、イントラ予測ユニット226は、現在のブロックに近隣するサンプルの平均を算出し、予測ブロックの各サンプルについて、この結果として得られた平均を含むように予測ブロックを生成し得る。
【0141】
[0151]モード選択ユニット202は、残差生成ユニット204に予測ブロックを提供する。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの生のコーディングされていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプル毎の差分を算出する。結果として生じるサンプル毎の差分は、現在のブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルス符号変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つ以上の減算器回路を使用して形成され得る。
【0142】
[0152]モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニット及び対応するクロマ予測ユニットに関連付けられ得る。ビデオ符号化器200及びビデオ復号器300は、様々なサイズを有するPUをサポートし得る。上記に示されたように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得、PUのサイズは、PUのルーマ予測ユニットのサイズを指し得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオ符号化器200は、イントラ予測の場合には2N×2N又はN×NのPUサイズを、及びインター予測の場合には2N×2N、2N×N、N×2N、N×N、又は同様のものの対称PUサイズをサポートし得る。ビデオ符号化器20及びビデオ復号器30はまた、インター予測の場合には2N×nU、2N×nD、nL×2N、及びnR×2NのPUサイズについての非対称区分をサポートし得る。
【0143】
[0153]モード選択ユニット202がCUをPUに更に区分しない例では、各CUは、ルーマコーディングブロック及び対応するクロマコーディングブロックに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオ符号化器200及びビデオ復号器300は、2N×2N、2N×N、又はN×2NのCUサイズをサポートし得る。
【0144】
[0154]イントラブロックコピーモードコーディング、アフィンモードコーディング、及び線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、ほんの数例として、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在のブロックについての予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築する方法を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるように、エントロピー符号化ユニット220にこれらのシンタックス要素を提供し得る。
【0145】
[0155]上述されたように、残差生成ユニット204は、現在のブロックと対応する予測ブロックとについてのビデオデータを受信する。残差生成ユニット204は次いで、現在のブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとの間のサンプル毎の差分を算出する。
【0146】
[0156]変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、残差ブロックに1つ以上の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。例えば、変換処理ユニット206は、残差ブロックに離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、又は概念的に同様の変換を適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、例えば、回転変換などの1次変換及び2次変換を実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
【0147】
[0157]量子化ユニット208は、量子化された変換係数ブロックを作り出すために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在のブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオ符号化器200は(例えば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在のブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、このことから、量子化された変換係数は、変換処理ユニット206によって作り出された元の変換係数よりも低い精度を有し得る。
【0148】
[0158]逆量子化ユニット210及び逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、量子化された変換係数ブロックに逆量子化及び逆変換をそれぞれ適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度の歪みを有するが)現在のブロックに対応する再構築されたブロックを作り出し得る。例えば、再構築ユニット214は、再構築されたブロックを作り出すために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに再構築された残差ブロックのサンプルを加算し得る。
【0149】
[0159]フィルタユニット216は、再構築されたブロックに対して1つ以上のフィルタオペレーションを実行し得る。例えば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキングオペレーションを実行し得る。例えば、フィルタユニット216は、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量をクリッピング値と比較し、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量の代わりにクリッピング値によって値を修正するように構成され得る。即ち、フィルタユニット216は、サンプルに対する修正の量の大きさを制限するように構成され得る。いくつかの例では、フィルタユニット216のオペレーションは、スキップされ得る。
【0150】
[0160]ビデオ符号化器200は、DPB218中に再構築されたブロックを記憶する。例えば、フィルタユニット216のオペレーションが実行されない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216のオペレーションが実行される例では、フィルタユニット216は、フィルタリングされた再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222及び動き補償ユニット224は、後に符号化されるピクチャのブロックをインター予測するために、再構築された(及び潜在的にフィルタリングされた)ブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャ中の他のブロックをイントラ予測するために、現在のピクチャのDPB218中の再構築されたブロックを使用し得る。
【0151】
[0161]一般に、エントロピー符号化ユニット220は、ビデオ符号化器200の他の機能的コンポーネントから受信されたシンタックス要素をエントロピー符号化し得る。例えば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測のための動き情報又はイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つ以上のエントロピー符号化オペレーションを実行し得る。例えば、エントロピー符号化ユニット220は、データに対してコンテキスト適応可変長コーディング(CAVLC:context-adaptive variable length coding)オペレーション、CABACオペレーション、可変対可変(V2V:variable-to-variable)長コーディングオペレーション、シンタックスベースのコンテキスト適応バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)オペレーション、確率区間区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングオペレーション、指数ゴロム(Exponential-Golomb)符号化オペレーション、又は別のタイプのエントロピー符号化オペレーションを実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【0152】
[0162]ビデオ符号化器200は、スライス又はピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220がビットストリームを出力し得る。
【0153】
[0163]上述された動作は、ブロックに関して説明される。そのような説明は、ルーマコーディングブロック及び/又はクロマコーディングブロックのための動作であると理解されるべきである。上述されたように、いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、CUのルーマ成分及びクロマ成分である。いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、PUのルーマ成分及びクロマ成分である。
【0154】
[0164]いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックについての動きベクトル(MV)及び参照ピクチャを識別するための動作は、クロマブロックについてのMV及び参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックについてのMVは、クロマブロックについてのMVを決定するためにスケーリングされ得、参照ピクチャは、同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロック及びクロマコーディングブロックについて同じであり得る。
【0155】
[0165]
図7は、本開示の技法を実行し得る実例的なビデオ復号器300を例示するブロック図である。
図7は、説明を目的として提供されており、本開示に広く例証及び説明されるような技法を限定していない。説明を目的として、本開示は、JEM及びHEVCの技法に従って説明されるビデオ復号器300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実行され得る。
【0156】
[0166]
図7の例では、ビデオ復号器300は、コーディングピクチャバッファ(CPB)メモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、フィルタユニット312、復号ピクチャバッファ(DPB)314を含む。予測処理ユニット304は、動き補償ユニット316及びイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、又は同様のものを含み得る。他の例では、ビデオ復号器300は、より多い、より少ない、又は異なる機能的コンポーネントを含み得る。
【0157】
[0167]CPBメモリ320は、ビデオ復号器300のコンポーネントによって復号されることになる、符号化されたビデオのビットストリームなどのビデオデータを記憶し得る。CPBメモリ320中に記憶されるビデオデータは、例えば、コンピュータ可読媒体110(
図1)から取得され得る。CPBメモリ320は、符号化されたビデオのビットストリームからの符号化されたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオ復号器300の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、符号化されたビデオのビットストリームの後続のデータ又はピクチャを復号するときにビデオ復号器300が参照ビデオデータとして出力及び/又は使用し得る復号されたピクチャを記憶する。CPBメモリ320及びDPB314は、SDRAM、MRAM、RRAM、又は他のタイプのメモリデバイスを含むDRAMなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。CPBメモリ320及びDPB314は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオ復号器300の他のコンポーネントと共にオンチップであり得るか、又はそれらのコンポーネントに対してオフチップであり得る。
【0158】
[0168]追加又は代替として、いくつかの例では、ビデオ復号器300は、メモリ120(
図1)からコーディングされたビデオデータを取り出し得る。即ち、メモリ120は、CPBメモリ320を用いて上述されたようにデータを記憶し得る。同様に、メモリ120は、ビデオ復号器300の処理回路によって実行されることになるソフトウェアにおいてビデオ復号器300の機能のうちのいくつか又は全てがインプリメントされるとき、ビデオ復号器300によって実行されることになる命令を記憶し得る。
【0159】
[0169]
図7に示された様々なユニットは、ビデオ復号器300によって実行される動作の理解を助けるために例示される。それらユニットは、固定機能回路、プログラマブル回路、又はそれらの組み合わせとしてインプリメントされ得る。
図6と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行されることができる動作に予め設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路を指し、実行されることができる動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義された形でプログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取る又はパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの1つ以上は、個別の回路ブロック(固定機能又はプログラムマブル)であり得、いくつかの例では、ユニットのうちの1つ以上は、集積回路であり得る。
【0160】
[0170]ビデオ復号器300は、プログラマブル回路から形成された、ALU、EFU、デジタル回路、アナログ回路、及び/又はプログラマブルコアを含み得る。ビデオ復号器300の動作がプログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップ又はオフチップメモリが、ビデオ復号器300が受信及び実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶し得る。
【0161】
[0171]エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、シンタックス要素を再び作り出すためにビデオデータをエントロピー復号し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、及びフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【0162】
[0172]一般に、ビデオ復号器300は、ブロック毎にピクチャを再構築する。ビデオ復号器300は、各ブロックに対して個々に再構築動作を実行し得る(ここで、現在再構築されている、即ち、復号されているブロックは、「現在のブロック」と呼ばれ得る)。
【0163】
[0173]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、並びに量子化パラメータ(QP)及び/又は変換モードインジケーション(1つ以上)などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度、及び同様に、逆量子化ユニット306が適用すべき逆量子化の程度を決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、例えば、量子化された変換係数を逆量子化するために、ビット単位の左シフトオペレーションを実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
【0164】
[0174]逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在のブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つ以上の逆変換を適用し得る。例えば、逆変換処理ユニット308は、変換係数ブロックに逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、又は別の逆変換を適用し得る。
【0165】
[0175]更に、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。例えば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は、予測ブロックを生成し得る。このケースでは、予測情報シンタックス要素は、参照ブロックをそこから取り出すべきDPB314中の参照ピクチャ、並びに、現在のピクチャ中の現在のブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(
図6)に関して説明されたのと実質的に同様の形でインター予測プロセスを実行し得る。
【0166】
[0176]別の例として、現在のブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(
図6)に関して説明されたのと実質的に同様の形でイントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から現在のブロックに近隣するサンプルのデータを取り出し得る。
【0167】
[0177]再構築ユニット310は、予測ブロック及び残差ブロックを使用して現在のブロックを再構築し得る。例えば、再構築ユニット310は、現在のブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
【0168】
[0178]フィルタユニット312は、再構築されたブロックに対して1つ以上のフィルタオペレーションを実行し得る。例えば、フィルタユニット312は、再構築されたブロックのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキングオペレーションを実行し得る。例えば、フィルタユニット312は、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量をクリッピング値と比較し、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して、デブロッキングフィルタリングによって引き起こされたサンプルに対する修正の量の代わりにクリッピング値によって値を修正するように構成され得る。即ち、フィルタユニット312は、サンプルに対する修正の量の大きさを制限するように構成され得る。フィルタユニット312のオペレーションは、必ずしも全ての例において実行されるわけではない。
【0169】
[0179]ビデオ復号器300は、DPB314中に再構築されたブロックを記憶し得る。例えば、フィルタユニット312のオペレーションが必要とされない例では、再構築ユニット310は、再構築されたブロックをDPB314に記憶し得る。フィルタユニット312のオペレーションが必要とされる例では、フィルタユニット312は、フィルタリングされた再構築されたブロックをDPB314に記憶し得る。上述されたように、DPB314は、予測処理ユニット304に、イントラ予測のための現在のピクチャと後続の動き補償のための以前に復号されたピクチャとのサンプルなどの参照情報を提供し得る。その上、ビデオ復号器300は、
図1のディスプレイデバイス118などのディスプレイデバイス上での後続の提示のために、DPB314から復号されたピクチャ(例えば、復号されたビデオ)を出力し得る。
【0170】
[0180]
図8は、
図7におけるフィルタユニット312の実例的なインプリメンテーションを示す。
図6におけるフィルタユニット216は、同じ又は同様の形でインプリメントされ得る。フィルタユニット216及び312は、ことによると、ビデオ符号化器200又はビデオ復号器300の他のコンポーネントと連携して、本開示の技法を実行し得る。
図8の例では、フィルタユニット312は、デブロッキングフィルタ342、SAOフィルタ344、及びALF/GLAFフィルタ346を含む。SAOフィルタ344は、例えば、ブロックのサンプルについてのオフセット値を決定するように構成され得る。ALF/GALF346は、同様に、適応ループフィルタ及び/又は幾何学的適応ループフィルタリングを使用してビデオデータのブロックをフィルタリングし得る。
【0171】
[0181]フィルタユニット312は、より少ないフィルタを含み得、及び/又は、追加のフィルタを含み得る。加えて、
図8に示される特定のフィルタは、異なる順序でインプリメントされ得る。(コーディングループ中又はコーディングループ後のうちのいずれかの)他のループフィルタもまた、画素遷移を平滑化するために、又は別様にビデオ品質を改善するために使用され得る。フィルタユニット312によって出力された、フィルタリングされた再構築されたビデオブロックは、後続の動き補償のために使用される参照ピクチャを記憶するDPB314中に記憶され得る。DPB314は、復号されたビデオを
図1のディスプレイデバイス118などのディスプレイデバイス上での後の提示のために記憶する追加のメモリの一部であるか、又はそれとは別個であり得る。
【0172】
[0182]ビデオ復号器300、例えば、フィルタユニット312のデブロッキングフィルタ342は、本開示に説明される任意の技法又は技法の組み合わせに従って、ビデオデータの第1の再構築されたブロックを取得し、第1の再構築されたブロックにデブロッキングフィルタリングを適用するように構成され得る。ビデオデータの第1の再構築されたブロックを取得するために、ビデオ復号器300は、ビデオデータの予測ブロックを決定し、ビデオデータの残差ブロックをビデオデータの予測ブロックに加算するように構成され得る。
デブロッキングフィルタリングを第1の再構築されたブロックに適用するために、ビデオ復号器300は、ビデオデータの第1の再構築されたブロックとビデオデータの第2の再構築されたブロックとの境界に位置するサンプルにデブロッキングフィルタリングを適用し得る。第1の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器300は、デブロッキングフィルタリングのためのフィルタ強度を決定する。
【0173】
[0183]第1の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器300は、デブロッキングフィルタリングのためのフィルタを選択し得る。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器300は、フィルタリングされるべき境界に直交するブロックの長さに基づいてフィルタを選択し得る。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器300は、フィルタリングされるべき境界と位置合わせされたブロック(a block aligned with a boundary)の長さに基づいてフィルタを選択する。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器300は、異なる長さを有する複数のデブロッキングフィルタからフィルタを選択し得る。デブロッキングフィルタリングのためのフィルタを選択するために、ビデオ復号器300は、異なるフィルタサポートを有する複数のデブロッキングフィルタからフィルタを選択する。
【0174】
[0184]ビデオ復号器300は、信頼係数(confidence factor)を決定し、信頼係数に基づいてサンプル修正量を決定するように構成され得る。ビデオ復号器300は、サンプル修正量によって第1の再構築されたブロックのサンプルを修正することによって、第1の再構築されたブロックにデブロッキングフィルタリングを適用し得る。ビデオ復号器300は、サンプル修正量を値の範囲に制限することによって、信頼係数に基づくサンプル修正量を決定し得る。信頼係数は、例えば、区間(interval)であり得る。
【0175】
[0185]ビデオ復号器300は、ビデオデータの第2の予測ブロックを決定することと、第1の再構築されたブロックに隣接するビデオデータの第2の再構築されたブロックを決定するために、ビデオデータの第2の予測ブロックにビデオデータの第2の残差ブロックを加算することと、残差ブロックについての第1の量子化パラメータを決定することと、第2の残差ブロックについての第2の量子化パラメータを決定することと、第1の量子化パラメータに基づいて第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、第2の量子化パラメータに基づいて第2の再構築されたブロックにデブロッキングフィルタリングを適用することとを行うように構成され得る。
【0176】
[0186]第1の量子化パラメータに基づいて第1の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器300は、第1の量子化パラメータに基づいて第1の再構築されたブロックのサンプルについてのサンプル修正量を決定することと、第2の量子化パラメータに基づいて第2の再構築されたブロックのサンプルについてのサンプル修正量を決定することによって、第2の量子化パラメータに基づいて第2の再構築されたブロックにデブロッキングフィルタリングを適用することと、を行い得る。第1の量子化パラメータに基づいて第1の再構築されたブロックのサンプルについてのサンプル修正量を決定するために、ビデオ復号器300は、第1の再構築されたブロックのサンプルについてのサンプル修正量を値の第1の範囲に制限することと、第2の再構築されたブロックのサンプルについてのサンプル修正量を値の第1の範囲とは異なる値の第2の範囲に制限することによって、第2の量子化パラメータに基づいて第2の再構築されたブロックのサンプルについてのサンプル修正量を決定することとを行い得る。
【0177】
[0187]第1の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器300は、デブロッキングフィルタリングのためのデブロッキングフィルタパラメータを選択し得る。デブロッキングフィルタリングパラメータは、例えば、フィルタタイプ、フィルタ長、制限パラメータ、又は空間サンプルスキップステップのうちの1つ以上を含み得る。デブロッキングフィルタリングのためのデブロッキングフィルタパラメータを選択するために、ビデオ復号器300は、残差ブロックについての変換特性又は変換係数のうちの一方又は両方に基づいて、デブロッキングフィルタパラメータを選択し得る。
【0178】
[0188]第1の再構築されたブロックにデブロッキングフィルタリングを適用するために、ビデオ復号器300は、利用不可能なサンプルについての値を決定し、決定された値を使用してデブロッキングフィルタリングを適用し得る。利用不可能なサンプルについての値を決定するために、ビデオ復号器300は、補外プロセス及び/又はパディングプロセスを実行し得る。ビデオ復号器300は、第1の再構築されたブロックのブロック特性に基づいて、利用不可能なサンプルが利用不可能であると決定し得る。
【0179】
[0189]ビデオ復号器300、例えば、フィルタユニット312のデブロッキングフィルタ342は、ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、 デブロッキングフィルタリングされたブロックを作成するために、第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、 第1の再構築されたブロックの境界に対する第1のサンプルのロケーションに基づいて、及び第1の再構築されたブロックのサイズに基づいて、第1のサンプルについての第1のクリッピング値を決定することと、
第1のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量と比較することと、 デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して、第1のサンプルについての第1のフィルタリングされた値を決定するために、第1のクリッピング値によって第1の値を修正することと、 ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、デブロッキングフィルタリングされたブロックでは、第1のサンプルは、第1のフィルタリングされた値を有する、 を行うように更に構成される。
【0180】
[0190]第1のフィルタリングされた値は、第1の値に第1のクリッピング値を加えたものに等しいか、又は第1の値から第1のクリッピング値を引いたものに等しくなり得る。ビデオ復号器300は、第1の再構築されたブロックについてのデブロッキングフィルタリングモードに更に基づいて、第1のサンプルについての第1のクリッピング値を決定し得る。
【0181】
[0191]第1の再構築されたブロックは、第2の値を有する第2のサンプルを含み得、ビデオ復号器300は、第1の再構築されたブロックの境界に対する第2のサンプルのロケーションに基づいて、及び第1の再構築されたブロックのサイズに基づいて、第2のサンプルについての第2のクリッピング値を決定することと、デブロッキングフィルタリングによって引き起こされた第2のサンプルに対する修正の量が第2のクリッピング値よりも小さいことに応答して、第2のサンプルについての第2のフィルタリングされた値を決定するために、第2のサンプルに対する修正の量によって第2の値を修正することと、を行い得る。そのような例では、デブロッキングフィルタリングされたブロックでは、第2のサンプルは、第2のフィルタリングされた値を有する。
【0182】
[0192]第1のサンプルと第1の再構築されたブロックの境界との間の距離が、第2のサンプルと第1の再構築されたブロックの境界との間の距離に等しい場合、ビデオ復号器300は、第1のクリッピング値を第2のサンプルについての第2のクリッピング値に等しく設定し得る。第1のサンプルと第1の再構築されたブロックの境界との間の距離が、第2のサンプルと第1の再構築されたブロックの境界との間の距離とは異なる場合、ビデオ復号器300は、第1のクリッピング値を第2のクリッピング値とは異なるように設定し得る。
【0183】
[0193]第1の再構築されたブロックのサイズに基づいて、ビデオ復号器300は、デブロッキングフィルタが、第1の再構築されたブロックの境界から6つ以下のサンプル離れた(removed from)サンプルにのみ適用されると決定し得る。第1の再構築されたブロックのサイズに基づいて、ビデオ復号器300は、デブロッキングフィルタが第1の再構築されたブロックの境界から2つ以下のサンプル離れた(removed from)サンプルに適用されると決定し得る。
【0184】
[0194]第1のクリッピング値は、第1の再構築されたブロックの境界からの距離と共に減少し得る。例えば、デブロッキングフィルタが第1の再構築されたブロックの境界の6行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界に隣接していることに応答して、ビデオ復号器300は、第1のクリッピング値が6に等しいと決定し得る。デブロッキングフィルタが第1の再構築されたブロックの境界の6行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界から1サンプル離れている(removed from)ことに応答して、ビデオ復号器300は、第1のクリッピング値が5に等しいと決定し得る。デブロッキングフィルタが第1の再構築されたブロックの境界の6行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界から2サンプル離れている(removed from)ことに応答して、ビデオ復号器300は、第1のクリッピング値が4に等しいと決定し得る。
【0185】
[0195]デブロッキングフィルタが第1の再構築されたブロックの境界の6行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界から3サンプル離れていることに応答して、ビデオ復号器300は、第1のクリッピング値が3に等しいと決定し得る。デブロッキングフィルタが第1の再構築されたブロックの境界の6行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界から4サンプル離れていることに応答して、ビデオ復号器300は、第1のクリッピング値が2に等しいと決定し得る。デブロッキングフィルタが第1の再構築されたブロックの境界の6行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界から5サンプル離れていることに応答して、ビデオ復号器300は、第1のクリッピング値が1に等しいと決定し得る。
【0186】
[0196]デブロッキングフィルタが第1の再構築されたブロックの境界の2行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界に隣接していることに応答して、ビデオ復号器300は、第1のクリッピング値が6に等しいと決定し得る。デブロッキングフィルタが第1の再構築されたブロックの境界の2行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界から1サンプル離れていることに応答して、ビデオ復号器300は、第1のクリッピング値が4に等しいと決定し得る。デブロッキングフィルタが第1の再構築されたブロックの境界の2行又は列内のサンプルに適用されると決定することに応答して、及び第1のサンプルが第1の再構築されたブロックの境界から離された2つのサンプルであることに応答して、ビデオ復号器300は、第1のクリッピング値が2に等しいと決定し得る。
【0187】
[0197]ビデオ復号器300はまた、ビデオデータの第2の再構築されたブロックを取得することと、ここにおいて、第2の再構築されたブロックは、第2の値を有する第2のサンプルを含み、第2の再構築されたブロックは、第1の再構築されたブロックと境界を共有し、第1の再構築されたブロックと第2の再構築されたブロックとは、異なるサイズである、 第2のデブロッキングフィルタリングされたブロックを決定するために、第2の再構築されたブロックにデブロッキングフィルタリングを適用することと、 第2の再構築されたブロックの境界に対する第2のサンプルのロケーションに基づいて、及び第2の再構築されたブロックのサイズに基づいて、第2のサンプルについての第2のクリッピング値を決定することと、 デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第2のクリッピング値よりも大きいことに応答して、第2のサンプルについての第2のフィルタリングされた値を決定するために、第2のクリッピング値によって第1の値を修正することと、 ビデオデータの第2のデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、第2のデブロッキングフィルタリングされたブロックでは、第2のサンプルは、第2のフィルタリングされた値を有する、 を行うように構成され得る。ビデオ復号器300は、第1のデブロッキングフィルタリングされたブロックを決定するために、第1の再構築されたブロックにデブロッキングフィルタリングを適用することが、第1の長さの第1のフィルタで第1の再構築されたブロック中のサンプルをフィルタリングすることを備え、 第2のデブロッキングフィルタリングされたブロックを決定するために、第2の再構築されたブロックにデブロッキングフィルタリングを適用することが、第1の長さとは異なる第2の長さの第2のフィルタで第2の再構築されたブロック中のサンプルをフィルタリングすることを備えることを行い得る。
【0188】
[0198]
図9は、現在のブロックを符号化するための実例的な方法を例示するフローチャートである。現在のブロックは、現在のCUを含み得る。ビデオ符号化器200(
図1及び
図6)に関して説明されるが、他のデバイスが
図9と同様の方法を実行するように構成され得ることが理解されるべきである。
【0189】
[0199]この例では、ビデオ符号化器200は最初に、現在のブロックを予測する(350)。例えば、ビデオ符号化器200は、現在のブロックについての予測ブロックを形成し得る。ビデオ符号化器200は次いで、現在のブロックについての残差ブロックを算出し得る(352)。残差ブロックを算出するために、ビデオ符号化器200は、元のコーディングされていないブロックと現在のブロックについての予測ブロックとの間の差分を算出し得る。ビデオ符号化器200は次いで、残差ブロックの係数を変換及び量子化し得る(354)。次に、ビデオ符号化器200は、残差ブロックの量子化された変換係数を走査し得る(356)。走査中、又は走査に続いて、ビデオ符号化器200は、係数をエントロピー符号化し得る(358)。例えば、ビデオ符号化器200は、CAVLC又はCABACを使用して係数を符号化し得る。ビデオ符号化器200は次いで、ブロックの係数についてのエントロピーコーディングされたデータを出力し得る(360)。
【0190】
[0200]
図10は、ビデオデータの現在のブロックを復号するための実例的な方法を例示するフローチャートである。現在のブロックは、現在のCUを含み得る。ビデオ復号器300(
図1及び
図7)に関して説明されるが、他のデバイスが
図10のものと同様の方法を実行するように構成され得ることが理解されるべきである。
【0191】
[0201]ビデオ復号器300は、現在のブロックに対応する残差ブロックの係数についてのエントロピーコーディングされた予測情報及びエントロピーコーディングされたデータなど、現在のブロックについてのエントロピーコーディングされたデータを受信し得る(370)。ビデオ復号器300は、現在のブロックについての予測情報を決定し、残差ブロックの係数を再び作り出すために、エントロピーコーディングされたデータをエントロピー復号し得る(372)。ビデオ復号器300は、現在のブロックについての予測ブロックを算出するために、例えば、現在のブロックについての予測情報によって示されるようなイントラ予測モード又はインター予測モードを使用して、現在のブロックを予測し得る(374)。ビデオ復号器300は次いで、量子化された変換係数のブロックを作成するために、再び作り出された係数を逆走査し得る(376)。ビデオ復号器300は次いで、残差ブロックを作り出すために、係数を逆量子化及び逆変換し得る(378)。ビデオ復号器300は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在のブロックを復号し得る(380)。再構築されたブロックを生成するために予測ブロックと残差ブロックとを組み合わせた後、ビデオ復号器300は、フィルタリングされた再構築されたブロックを生成するために、フィルタリングされていない再構築されたブロックに1つ以上のフィルタ(例えば、デブロッキング、SAO、及び/又はALF/GALF)を適用し得る(382)。
【0192】
[0202]
図11は、本開示に説明される実例的なビデオ復号技法を例示するフロー図である。
図11の技法は、それに限定するものではないが、ビデオ復号器300などの一般のビデオ復号器を参照して説明される。いくつかの事例では、
図11の技法は、ビデオ符号化プロセスの一部として、ビデオ符号化器200などのビデオ符号化器によって実行され得、そのケースでは、一般のビデオ復号器は、ビデオ符号化器200の復号ループ(例えば、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、及びフィルタユニット216)に対応する。
【0193】
[0203]
図11の例では、ビデオ復号器は、第1の値を有する第1のサンプルを含むビデオデータの第1の再構築されたブロックを取得する(400)。ビデオ復号器は、デブロッキングフィルタリングされたブロックを作成するために、第1の再構築されたブロックにデブロッキングフィルタリングを適用する(402)。ビデオ復号器は、第1の再構築されたブロックの境界に対する第1のサンプルのロケーションに基づいて、及び第1の再構築されたブロックのサイズに基づいて、第1のサンプルについての第1のクリッピング値を決定する(404)。ビデオ復号器300は、第1のクリッピング値を、デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量と比較する(406)。デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第1のクリッピング値よりも大きいことに応答して(408,YES)、ビデオ復号器は、第1のサンプルについての第1のフィルタリングされた値を決定するために、第1のクリッピング値によって第1の値を修正する(410)。デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量が第1のクリッピング値より大きくないことに応答して(408,NO)、ビデオ復号器は、デブロッキングフィルタリングによって引き起こされた第1のサンプルに対する修正の量によって第1の値を修正する(412)。ビデオ復号器は、例えば、第1のフィルタリングされた値を第1の値にクリッピング値を加えたもの又は引いたものに等しく設定するのではなく、第1のフィルタリングされた値をデブロッキングフィルタリングによって決定されたフィルタリングされた値に等しく保ち得る。
【0194】
[0204]例に応じて、本明細書に説明された技法のうちの任意のもののある特定の動作(acts)又はイベントは、異なるシーケンスで実行されることができ、追加、統合、又は完全に省略され得る(例えば、全ての説明された動作又はイベントが、それら技法の実施のために必要なわけではない)ことが認識されるべきである。その上、ある特定の例では、動作又はイベントは、連続にではなく、例えば、マルチスレッド処理、割り込み処理、又は複数のプロセッサを通じて、同時に実行され得る。
【0195】
[0205]1つ以上の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせにおいてインプリメントされ得る。ソフトウェアにおいてインプリメントされる場合、それら機能は、1つ以上の命令又はコードとして、コンピュータ可読媒体上に記憶され得るか、又はコンピュータ可読媒体を通して送信され得、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、又は、例えば、通信プロトコルに従って、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、又は(2)信号若しくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示に説明された技法のインプリメンテーションのための命令、コード及び/又はデータ構造を取り出すために、1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0196】
[0206]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROM若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、フラッシュメモリ、又は命令若しくはデータ構造の形態で所望されるプログラムコードを記憶するために使用されることができ、且つコンピュータによってアクセスされることができる任意の他の媒体のうちの1つ以上を含むことができる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、ウェブサイト、サーバ、又は同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、若しくは赤外線、無線、及びマイクロ波などのワイヤレス技術を使用する他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義中に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象にすることが理解されるべきである。ディスク(disk)及びディスク(disc)は、本明細書で使用される場合、コンパクトディスク(CD)(disc)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(DVD)(disc)、フロッピー(登録商標)ディスク(disk)、及びBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、磁気的にデータを再生し、ディスク(disc)は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0197】
[0207]命令は、1つ以上のDSP、汎用マイクロプロセッサ、ASIC、FPGA、又は他の同等な集積若しくはディスクリートロジック回路などの1つ以上のプロセッサによって実行され得る。それ故に、「プロセッサ」という用語は、本明細書で使用される場合、前述の構造のうちの任意のもの又は本明細書に説明された技法のインプリメンテーションに適した任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書に説明された機能は、符号化及び復号のために構成された専用ハードウェア及び/若しくはソフトウェアモジュール内で提供され得るか、又は組み合わされたコーデック中に組み込まれ得る。また、本技法は、1つ以上の回路又は論理素子において十分にインプリメントされることができる。
【0198】
[0208]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)又はICのセット(例えば、チップセット)を含む、幅広い様々なデバイス又は装置においてインプリメントされ得る。様々なコンポーネント、モジュール、又はユニットは、本開示では、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するように説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上述されたように、様々なユニットは、コーデックハードウェアユニット中で組み合わされ得るか、又は、適したソフトウェア及び/若しくはファームウェアと併せて、上述されたような1つ以上のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【0199】
[0209]様々な例が説明されてきた。これら及び他の例は、次の特許請求の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、前記方法は、
ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、前記第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第1の再構築されたブロックの境界に対する前記第1のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックのサイズに基づいて、前記第1のサンプルについての第1のクリッピング値を決定することと、
前記第1のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する前記修正の量が前記第1のクリッピング値よりも大きいことに応答して、前記第1のサンプルについての第1のフィルタリングされた値を決定するために、前記第1のクリッピング値によって前記第1の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第1のサンプルは、前記第1のフィルタリングされた値を有する、
を備える、方法。
[C2]
前記第1のフィルタリングされた値は、前記第1の値に前記第1のクリッピング値を加えたものに等しい、[C1]に記載の方法。
[C3]
前記第1のフィルタリングされた値は、前記第1の値から前記第1のクリッピング値を引いたものに等しい、[C1]に記載の方法。
[C4]
前記第1の再構築されたブロックについてのデブロッキングフィルタリングモードに更に基づいて、前記第1のサンプルについての前記第1のクリッピング値を決定すること、を更に備える、[C1]に記載の方法。
[C5]
前記第1の再構築されたブロックは、第2の値を有する第2のサンプルを含み、前記方法は、
前記第1の再構築されたブロックの前記境界に対する前記第2のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックの前記サイズに基づいて、前記第2のサンプルについての第2のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第2のサンプルに対する修正の量が前記第2のクリッピング値よりも小さいことに応答して、前記第2のサンプルについての第2のフィルタリングされた値を決定するために、前記第2のサンプルに対する前記修正の量によって前記第2の値を修正することと、
を更に備え、前記デブロッキングフィルタリングされたブロック中で、前記第2のサンプルは、前記第2のフィルタリングされた値を有する、[C1]に記載の方法。
[C6]
前記第1のサンプルと前記第1の再構築されたブロックの前記境界との間の距離は、前記第2のサンプルと前記第1の再構築されたブロックの前記境界との間の距離に等しく、前記第1のクリッピング値は、前記第2のサンプルについての前記第2のクリッピング値に等しい、[C5]に記載の方法。
[C7]
前記第1のサンプルと前記第1の再構築されたブロックの前記境界との間の距離は、前記第2のサンプルと前記第1の再構築されたブロックの前記境界との間の距離とは異なり、前記第1のクリッピング値は、前記第2のクリッピング値とは異なる、[C5]に記載の方法。
[C8]
前記第1の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが、前記第1の再構築されたブロックの前記境界から6つ以下のサンプル離れたサンプルにのみ適用されると決定すること、
を更に備える、[C1]に記載の方法。
[C9]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界に隣接していることに応答して、前記第1のクリッピング値が6に等しいと決定すること、
を更に備える、[C8]に記載の方法。
[C10]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から1サンプル離れていることに応答して、前記第1のクリッピング値が5に等しいと決定すること、
を更に備える、[C8]に記載の方法。
[C11]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から2サンプル離れていることに応答して、前記第1のクリッピング値が4に等しいと決定すること、
を更に備える、[C8]に記載の方法。
[C12]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から3サンプル離れていることに応答して、前記第1のクリッピング値が3に等しいと決定すること、
を更に備える、[C8]に記載の方法。
[C13]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から4サンプル離れていることに応答して、前記第1のクリッピング値が2に等しいと決定すること、
を更に備える、[C8]に記載の方法。
[C14]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から5サンプル離れていることに応答して、前記第1のクリッピング値が1に等しいと決定すること、
を更に備える、[C8]に記載の方法。
[C15]
前記第1の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界から2つ以下のサンプル離れたサンプルに適用されると決定すること、
を更に備える、[C1]に記載の方法。
[C16]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界に隣接していることに応答して、前記第1のクリッピング値が6に等しいと決定すること、
を更に備える、[C15]に記載の方法。
[C17]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から1サンプル離れていることに応答して、前記第1のクリッピング値が4に等しいと決定すること、
を更に備える、[C15]に記載の方法。
[C18]
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から2サンプル離れていることに応答して、前記第1のクリッピング値が2に等しいと決定すること、
を更に備える、[C15]に記載の方法。
[C19]
ビデオデータの第2の再構築されたブロックを取得することと、ここにおいて、前記第2の再構築されたブロックは、第2の値を有する第2のサンプルを含み、前記第2の再構築されたブロックは、前記第1の再構築されたブロックと前記境界を共有し、前記第1の再構築されたブロックと前記第2の再構築されたブロックとは、異なるサイズである、
第2のデブロッキングフィルタリングされたブロックを決定するために、前記第2の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第2の再構築されたブロックの境界に対する前記第2のサンプルのロケーションに基づいて、及び前記第2の再構築されたブロックのサイズに基づいて、前記第2のサンプルについての第2のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第2のサンプルに対する修正の量が前記第2のクリッピング値よりも大きいことに応答して、前記第2のサンプルについての第2のフィルタリングされた値を決定するために、前記第2のクリッピング値によって前記第2の値を修正することと、
ビデオデータの第2のデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記第2のデブロッキングフィルタリングされたブロック中で、前記第2のサンプルは、前記第2のフィルタリングされた値を有する、
を更に備える、[C1]に記載の方法。
[C20]
前記第1のデブロッキングフィルタリングされたブロックを決定するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用することは、第1の長さの第1のフィルタで前記第1の再構築されたブロック中のサンプルをフィルタリングすることを備え、
前記第2のデブロッキングフィルタリングされたブロックを決定するために、前記第2の再構築されたブロックにデブロッキングフィルタリングを適用することは、前記第1の長さとは異なる第2の長さの第2のフィルタで前記第2の再構築されたブロック中のサンプルをフィルタリングすることを備える、
[C19]に記載の方法。
[C21]
前記方法は、ビデオ符号化プロセスの一部として実行される、[C1]に記載の方法。
[C22]
ビデオデータを復号するためのデバイスであって、前記デバイスは、
ビデオデータを記憶するように構成されたメモリと、
回路内にインプリメントされた1つ以上のプロセッサと、
を備え、前記1つ以上のプロセッサは、
ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、前記第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第1の再構築されたブロックの境界に対する前記第1のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックのサイズに基づいて、前記第1のサンプルについての第1のクリッピング値を決定することと、
前記第1のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する前記修正の量が前記第1のクリッピング値よりも大きいことに応答して、前記第1のサンプルについての第1のフィルタリングされた値を決定するために、前記第1のクリッピング値によって前記第1の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第1のサンプルは、前記第1のフィルタリングされた値を有する、
を行うように構成される、デバイス。
[C23]
前記第1のフィルタリングされた値は、前記第1の値に前記第1のクリッピング値を加えたものに等しい、[C22]に記載のデバイス。
[C24]
前記第1のフィルタリングされた値は、前記第1の値から前記第1のクリッピング値を引いたものに等しい、[C22]に記載のデバイス。
[C25]
前記1つ以上のプロセッサは、
前記第1の再構築されたブロックについてのデブロッキングフィルタリングモードに更に基づいて、前記第1のサンプルについての前記第1のクリッピング値を決定すること、を行うように更に構成される、[C22]に記載のデバイス。
[C26]
前記再構築されたブロックは、第2の値を有する第2のサンプルを含み、前記1つ以上のプロセッサは、
前記第1の再構築されたブロックの前記境界に対する前記第2のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックの前記サイズに基づいて、前記第2のサンプルについての第2のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第2のサンプルに対する修正の量が前記第2のクリッピング値よりも小さいことに応答して、前記第2のサンプルについての第2のフィルタリングされた値を決定するために、前記第2のサンプルに対する前記修正の量によって前記第2の値を修正することと、
を行うように更に構成され、前記デブロッキングフィルタリングされたブロック中で、前記第2のサンプルは、前記第2のフィルタリングされた値を有する、[C22]に記載のデバイス。
[C27]
前記第1のサンプルと前記第1の再構築されたブロックの前記境界との間の距離は、前記第2のサンプルと前記第1の再構築されたブロックの前記境界との間の距離に等しく、前記第1のクリッピング値は、前記第2のサンプルについての前記第2のクリッピング値に等しい、[C26]に記載のデバイス。
[C28]
前記第1のサンプルと前記第1の再構築されたブロックの前記境界との間の距離は、前記第2のサンプルと前記第1の再構築されたブロックの前記境界との間の距離とは異なり、前記第1のクリッピング値は、前記第2のクリッピング値とは異なる、[C26]に記載のデバイス。
[C29]
前記1つ以上のプロセッサは、
前記第1の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが、前記第1の再構築されたブロックの前記境界から6つ以下のサンプル離れたサンプルにのみ適用されると決定すること、
を行うように更に構成される、[C22]に記載のデバイス。
[C30]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界に隣接していることに応答して、前記第1のクリッピング値が6に等しいと決定すること、
を行うように更に構成される、[C29]に記載のデバイス。
[C31]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から1サンプル離れていることに応答して、前記第1のクリッピング値が5に等しいと決定すること、
を行うように更に構成される、[C29]に記載のデバイス。
[C32]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から2サンプル離れていることに応答して、前記第1のクリッピング値が4に等しいと決定すること
を行うように更に構成される、[C29]に記載のデバイス。
[C33]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から3サンプル離れていることに応答して、前記第1のクリッピング値が3に等しいと決定すること、
を行うように更に構成される、[C29]に記載のデバイス。
[C34]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から4サンプル離れていることに応答して、前記第1のクリッピング値が2に等しいと決定すること
を行うように更に構成される、[C29]に記載のデバイス。
[C35]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の6行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から5サンプル離れていることに応答して、前記第1のクリッピング値が1に等しいと決定すること、
を行うように更に構成される、[C29]に記載のデバイス。
[C36]
前記1つ以上のプロセッサは、
前記第1の再構築されたブロックの前記サイズに基づいて、前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界から2つ以下のサンプル離れたサンプルに適用されると決定すること、
を行うように更に構成される、[C22]に記載のデバイス。
[C37]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界に隣接していることに応答して、前記第1のクリッピング値が6に等しいと決定すること、
を行うように更に構成される、[C36]に記載のデバイス。
[C38]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から1サンプル離れていることに応答して、前記第1のクリッピング値が4に等しいと決定すること、
を行うように更に構成される、[C36]に記載のデバイス。
[C39]
前記1つ以上のプロセッサは、
前記デブロッキングフィルタが前記第1の再構築されたブロックの前記境界の2行又は列内の前記サンプルに適用されると決定することに応答して、及び前記第1のサンプルが前記第1の再構築されたブロックの前記境界から2サンプル離れていることに応答して、前記第1のクリッピング値が2に等しいと決定すること
を行うように更に構成される、[C36]に記載のデバイス。
[C40]
前記1つ以上のプロセッサは、
ビデオデータの第2の再構築されたブロックを取得することと、ここにおいて、前記第2の再構築されたブロックは、第2の値を有する第2のサンプルを含み、前記第2の再構築されたブロックは、前記第1の再構築されたブロックと前記境界を共有し、前記第1の再構築されたブロックと前記第2の再構築されたブロックとは、異なるサイズである、
第2のデブロッキングフィルタリングされたブロックを決定するために、前記第2の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第2の再構築されたブロックの境界に対する前記第2のサンプルのロケーションに基づいて、及び前記第2の再構築されたブロックのサイズに基づいて、前記第2のサンプルについての第2のクリッピング値を決定することと、
前記デブロッキングフィルタリングによって引き起こされた前記第2のサンプルに対する修正の量が前記第2のクリッピング値よりも大きいことに応答して、前記第2のサンプルについての第2のフィルタリングされた値を決定するために、前記第2のクリッピング値によって前記第2の値を修正することと、
ビデオデータの第2のデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記第2のデブロッキングフィルタリングされたブロック中で、前記第2のサンプルは、前記第2のフィルタリングされた値を有する、
を行うように更に構成される、[C22]に記載のデバイス。
[C41]
前記第1のデブロッキングフィルタリングされたブロックを決定するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用するために、前記1つ以上のプロセッサは、第1の長さの第1のフィルタで前記第1の再構築されたブロック中のサンプルをフィルタリングするように更に構成され、
前記第2のデブロッキングフィルタリングされたブロックを決定するために、前記第2の再構築されたブロックにデブロッキングフィルタリングを適用するために、前記1つ以上のプロセッサは、前記第1の長さとは異なる第2の長さの第2のフィルタで前記第2の再構築されたブロック中のサンプルをフィルタリングするように更に構成される、
[C40]に記載のデバイス。
[C42]
前記デバイスは、ビデオ符号化プロセスの一部としてビデオデータを復号するように構成されたビデオ符号化器を備える、[C22]に記載のデバイス。
[C43]
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
ビデオデータの第1の再構築されたブロックを取得することと、ここにおいて、前記第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用することと、
前記第1の再構築されたブロックの境界に対する前記第1のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックのサイズに基づいて、前記第1のサンプルについての第1のクリッピング値を決定することと、
前記第1のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する修正の量と比較することと、
前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する前記修正の量が前記第1のクリッピング値よりも大きいことに応答して、前記第1のサンプルについての第1のフィルタリングされた値を決定するために、前記第1のクリッピング値によって前記第1の値を修正することと、
ビデオデータのデブロッキングフィルタリングされたブロックを出力することと、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第1のサンプルは、前記第1のフィルタリングされた値を有する、
を行わせる命令を記憶する、コンピュータ可読記憶媒体。
[C44]
ビデオデータを復号するための装置であって、前記装置は、
ビデオデータの第1の再構築されたブロックを取得するための手段と、ここにおいて、前記第1の再構築されたブロックは、第1の値を有する第1のサンプルを含む、
デブロッキングフィルタリングされたブロックを作成するために、前記第1の再構築されたブロックにデブロッキングフィルタリングを適用するための手段と、
前記第1の再構築されたブロックの境界に対する前記第1のサンプルのロケーションに基づいて、及び前記第1の再構築されたブロックのサイズに基づいて、前記第1のサンプルについての第1のクリッピング値を決定するための手段と、
前記第1のクリッピング値を、前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する修正の量と比較するための手段と、
前記デブロッキングフィルタリングによって引き起こされた前記第1のサンプルに対する前記修正の量が前記第1のクリッピング値よりも大きいことに応答して、前記第1のサンプルについての第1のフィルタリングされた値を決定するために、前記第1のクリッピング値によって前記第1の値を修正するための手段と、
ビデオデータのデブロッキングフィルタリングされたブロックを出力するための手段と、ここにおいて、前記デブロッキングフィルタリングされたブロック中で、前記第1のサンプルは、前記第1のフィルタリングされた値を有する、
を備える、装置。