(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024099825
(43)【公開日】2024-07-25
(54)【発明の名称】ビデオフィルタリングのための方法及び装置
(51)【国際特許分類】
H04N 19/117 20140101AFI20240718BHJP
H04N 19/157 20140101ALI20240718BHJP
H04N 19/176 20140101ALI20240718BHJP
H04N 19/186 20140101ALI20240718BHJP
H04N 19/82 20140101ALI20240718BHJP
【FI】
H04N19/117
H04N19/157
H04N19/176
H04N19/186
H04N19/82
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024075095
(22)【出願日】2024-05-07
(62)【分割の表示】P 2022554804の分割
【原出願日】2021-06-29
(31)【優先権主張番号】63/126,423
(32)【優先日】2020-12-16
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/360,761
(32)【優先日】2021-06-28
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャオ,リアン
(72)【発明者】
【氏名】ドゥ,イーシン
(72)【発明者】
【氏名】ジャオ,シン
(72)【発明者】
【氏名】リウ,シャン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159PP16
5C159TA68
5C159TB08
5C159TC27
5C159UA02
5C159UA05
5C159UA16
(57)【要約】 (修正有)
【課題】ビデオデコーディングにおけるフィルタリングのための方法を提供する。
【解決手段】方法は、コーディングされたビデオビットストリーム内のデコードされた情報に基づいて、ブロックの第1の色成分及び第2の色成分の分離されたコーディング情報を決定することと、第1のループフィルタ構成に基づいて前記ブロック内の位置にある前記第1の色成分の第1のサンプルを再構成し、前記第1のループフィルタ構成とは異なる第2のループフィルタ構成に基づいて前記ブロック内の位置にある前記第2の色成分の第2のサンプルを再構成することと、を含む。
【選択図】
図29
【特許請求の範囲】
【請求項1】
ビデオデコーディングにおけるフィルタリングのための方法であって、
プロセッサが、コーディングされたビデオビットストリーム内のデコードされた情報に基づいて、ブロックの第1の色成分及び第2の色成分の分離されたコーディング情報を決定するステップと、
前記プロセッサが、第1のループフィルタ構成に基づいて、前記ブロック内の位置にある前記第1の色成分の第1のサンプルと、前記第1のループフィルタ構成とは異なる第2のループフィルタ構成に基づいて、前記ブロック内の前記位置にある前記第2の色成分の第2のサンプルとを再構成するステップと、を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
参照による組み込み
本願は、2020年12月16日に出願した、2021年6月28日に提出された、出願番号が17/360761であり、発明の名称が「METHOD AND APPARATUS FOR VIDEO FILTERING」である米国特許出願に対して優先権を主張し、この出願は、出願番号が63/126423であり、発明の名称が「HARMONIZED SCHEME BETWEEN(登録商標) SEMI DECOUPLED PARTITIONING AND LOOP FILTER」である米国仮出願に対して優先権を主張する。これらの出願の全ての内容は、参照により本願に組み込むものとする。
【0002】
本開示は、一般的にビデオコーディングに関する実施形態を記載する。
【背景技術】
【0003】
本明細書で提供される「背景技術」の説明は、本開示の背景を大まかに示すことを目的とする。ここに名を挙げられている発明者の研究は、この背景技術に記載された範囲において、出願時に従来技術として通常見なされ得ない記載の態様とともに、明示的にも黙示的にも本開示に対する従来技術として認められない。
【0004】
ビデオコーディング及びデコーディングは、動き補償を伴うインターピクチャ予測を使用して実行することができる。非圧縮デジタルビデオは一連のピクチャを含むことができ、各ピクチャは、例えば、1920×1080ルマ(luma)サンプルと関連するクロマ(chroma)サンプルの空間寸法を有している。一連のピクチャは、例えば毎秒60ピクチャ又は60Hzの固定又は可変ピクチャレート(非公式には「フレームレート」とも呼ばれる)を有することができる。非圧縮ビデオには、顕著なビットレート要件がある。例えば、サンプルあたり8ビットでの1080p60 4:2:0ビデオ(60Hzフレームレートでの1920×1080ルマサンプル解像度)には、1.5Gbit/sに近い帯域幅が必要となる。このようなビデオを1時間使用するには、600GBytesを超える記憶空間が必要である。
【0005】
ビデオコーディング及びデコーディングの1つの目的は、圧縮によって入力ビデオ信号の冗長性を削減することであり得る。圧縮は、前述の帯域幅及び/又は記憶空間の要件を、場合によっては2桁以上削減するのに役立つ。可逆圧縮と非可逆圧縮の両方、及びそれらの組み合わせを使用することができる。可逆圧縮とは、圧縮された元の信号から元の信号の正確なコピーを再構成できる技法を指す。非可逆圧縮を使用する場合、再構成された信号は元の信号と同一ではない可能性があるが、元の信号と再構成された信号の間の歪みは、再構成された信号を意図されたアプリケーションに役立つ程度に小さい。ビデオの場合、非可逆圧縮が広く採用されている。許容される歪みの量はアプリケーションによって異なる。例えば、特定のコンシューマストリーミングアプリケーションのユーザは、テレビ配信アプリケーションのユーザよりも高い歪みを許容できる。達成可能な圧縮率は、受け入れ可能/許容可能な歪みが大きいほど、圧縮率が高くなることを反映することができる。
【0006】
ビデオエンコーダ及びデコーダは、例えば、動き補償、変換、量子化及びエントロピーコーディングを含むいくつかの幅広いカテゴリからの技法を利用することができる。
【0007】
ビデオコーデック技術は、イントラコーディングとして知られる技法を含み得る。イントラコーディングでは、サンプル値は、予め再構成された参照ピクチャからのサンプル又は他のデータを参照せずに表される。一部のビデオコーデックでは、ピクチャは空間的にサンプルのブロックに細分化される。サンプルのすべてのブロックがイントラモードでコーディングされると、そのピクチャはイントラピクチャになり得る。イントラピクチャと、独立したデコーダリフレッシュピクチャなどのその派生物とは、デコーダの状態をリセットするために使用できるため、コーディングされたビデオビットストリームとビデオセッションの最初のピクチャとして、又は静止画像として使用することができる。イントラブロックのサンプルは変換にさらすことができ、変換係数はエントロピーコーディングの前に量子化することができる。イントラ予測は、事前変換領域でサンプル値を最小化する技法であり得る。場合によっては、変換後のDC値が小さく、AC係数が小さいほど、エントロピーコーディング後のブロックを表すために所定の量子化ステップサイズで必要なビットが少なくなる。
【0008】
例えばMPEG-2世代コーディング技術から知られているような従来のイントラコーディングは、イントラ予測を使用しない。しかしながら、いくつかのより新しいビデオ圧縮技術は、例えば、空間的に隣接し、デコード順の先に位置するデータのブロックのエンコード及び/又はデコード中に得られた周囲のサンプルデータ及び/又はメタデータからイントラ予測を試みる技法を含む。そのような技法は、以降、「イントラ予測」技法と呼ばれる。少なくともいくつかのケースでは、イントラ予測は、再構成中の現在のピクチャからの参照データのみを使用し、参照ピクチャからの参照データを使用しないことに注意されたい。
【0009】
イントラ予測は異なる形態で存在し得る。そのような技法の2つ以上が所定のビデオコーディング技術に使用できる場合、使用中の技法はイントラ予測モードでコーディングすることができる。場合によっては、モードはサブモード及び/又はパラメータを有することができ、それらを個別にコーディングするか、又はモードコードワードに含めることができる。どのコードワードが所定のモード/サブモード及び/又はパラメーターの組み合わせに使用されるかは、イントラ予測によるコーディング効率ゲインに影響を与える可能性があるため、コードワードをビットストリームに変換するために使用されるエントロピーコーディング技術も影響を与える可能性がある。
【0010】
イントラ予測の特定のモードはH.264で導入され、H.265で改良され、さらに共同探索モデル(JEM)、多用途ビデオコーディング(VVC)及びベンチマークセット(BMS)などのより新しいコーディング技術で改良された。予測子ブロックは、既に利用可能なサンプルに属する隣接サンプル値を使用して形成することができる。隣接サンプルのサンプル値は、方向に従って予測子ブロックにコピーされる。使用中の方向への参照は、ビットストリームでコーディングされるか、又はそれ自体を予測され得る。
【0011】
図1Aを参照すると、右下に示されているのは、H.265の33通りの予測可能な方向(35個のイントラモードのうちの33個の角度モードに対応)から知られる9通りの予測方向のサブセットである。矢印が収束する点(101)は、予測されているサンプルを表す。矢印は、サンプルが予測されている方向を表す。例えば、矢印(102)は、サンプル(101)が、水平軸から45度の角度での右上の1つ又は複数のサンプルから予測されることを示す。同様に、矢印(103)は、サンプル(101)が、水平軸から22.5度の角度での、サンプル(101)の左下の1つ又は複数のサンプルから予測されることを示す。
【0012】
引き続き
図1Aを参照すると、左上には、4×4サンプルの正方形ブロック(104)(太い破線で示される)が示されている。正方形ブロック(104)は、それぞれが、「S」、Y次元におけるその位置(例えば、行インデックス)、及びX次元におけるその位置(例えば、列インデックス)でラベル付けされた16サンプルを含む。例えば、サンプルS21は、Y次元(上から)における2番目のサンプルであり、かつX次元(左から)における1番目のサンプルである。同様に、サンプルS44は、Y及びX次元の両方においてブロック(104)における4番目のサンプルである。ブロックが4×4サンプルのサイズのため、S44は、右下にある。さらに、同様な番号付け体系に従う参照サンプルが示されている。参照サンプルは、R、ブロック(104)に対するそのY位置(例えば、行インデックス)及びX位置(列インデックス)でラベル付けされる。H.264とH.265の両方で、予測サンプルは再構成中のブロックに隣接している。したがって、負の値を使用する必要はない。
【0013】
イントラピクチャ予測は、シグナリングされた予測方向で適切な隣接サンプルから参照サンプル値をコピーすることで機能することができる。例えば、仮に、コーディングされたビデオビットストリームは、このブロックについて矢印(102)と一致する予測方向(すなわち、サンプルが、水平軸から45度の角度での右上の1つ又は複数の予測サンプルから予測される)を示すシグナリングを含むものとする。この場合、サンプルS41、S32、S23及びS14は同一の参照サンプルR05から予測される。次に、サンプルS44は、参照サンプルR08から予測される。
【0014】
特定の場合において、特に方向が45度で均等に分割されていない場合に、複数の参照サンプルの値は、参照サンプルを算出するために、例えば補間によって組み合わせられることができる。
【0015】
ビデオコーディング技術が発展するにつれて、可能な方向の数は増加した。H.264(2003年)では、9通りの異なる方向を表すことができた。H.265(2013年)で33通りに増加し、JEM/VVC/BMSは開示時に最大65通りの方向をサポートできる。最も見込みのある方向を識別するための実験が行われ、エントロピーコーディングにおける特定の技法は、少ない数のビットで見込みの高い方向を表すために使用され、見込みの低い方向に対する特定のペナルティを容認する。さらに、方向自体は、隣接する、既にデコードされたブロックで使用される隣接方向から予測される場合がある。
【0016】
図1Bは、経時的な予測方向の増加数を示すために、JEMによる65通りのイントラ予測方向を示す概略図(180)を示す。
【0017】
方向を表すコーディングされたビデオビットストリームにおけるイントラ予測方向ビットのマッピングは、ビデオコーディング技術ごとに異なる可能性があり、また、例えば、イントラ予測モードへ乃至コードワードへの予測方向の単純な直接マッピングから、最確モードや類似した技法を含む複雑な適応方式までの範囲とすることができる。しかしながら、すべての場合において、他の特定の方向よりも、ビデオコンテンツにおいて発生する可能性が統計的に低い特定の方向が存在する可能性がある。ビデオ圧縮の目的は冗長性の削減であるため、適切に機能するビデオコーディング技術では、これらの可能性の低い方向は、可能性の高い方向より多くのビット数で表される。
【0018】
動き補償は、非可逆圧縮技法であり得、予め再構成されたピクチャ又はその一部(参照ピクチャ)からのサンプルデータのブロックを、動きベクトル(以降、「MV」)によって示される方向に空間的にシフトした後、新しく再構成されたピクチャ又はピクチャ部分の予測に使用する技法に関連し得る。場合によっては、参照ピクチャは現在再構成中のピクチャと同じになることがある。MVは、XとYの2次元、又は、第3次元が、使用中の参照ピクチャを示す3次元を有することができる(後者は間接的に時間次元になることができる)。
【0019】
一部のビデオ圧縮技法では、サンプルデータの特定の領域に適用可能なMVは、他のMVから、例えば再構成中の領域に空間的に隣接し、デコード順序でそのMVより前であるサンプルデータの別の領域に関連するMVから予測することができる。そうすることで、MVのコーディングに必要なデータの量を大幅に削減することができ、これにより冗長性を取り除き、圧縮を強化する。例えば、カメラから導出される入力ビデオ信号(「ナチュラルビデオ」と呼ばれる)をコーディングする際に、単一のMVが適用される領域より大きい領域が、同様の方向に移動するため、場合によって隣接領域のMVから導出された類似の動きベクトルを使用して予測することができる統計的可能性があるため、MV予測は有効に働くことができる。その結果、特定の領域に対して検出されたMVは、周囲のMVから予測されたMVと類似又は同一であり、エントロピーコーディング後、MVを直接コーディングする場合より少ないビット数で表することができる。場合によっては、MV予測は、元の信号(つまり、「サンプルストリーム」)から導出される信号(つまり、「MV」)の可逆圧縮の例になってもよい。他の場合では、例えばいくつかの周囲のMVから予測子を計算するときの丸め誤差のために、MV予測自体は非可逆になる可能性がある。
【0020】
H.265/HEVC(ITU-T推奨のH.265、「高効率ビデオコーディング」、2016年12月)には、様々なMV予測メカニズムが記載されている。H.265が提供する多くのMV予測メカニズムのうち、ここで説明するのは、以降、「空間マージ」と呼ばれる技法である。
【0021】
図2を参照すると、現在のブロック(201)は、空間的にシフトされた同じサイズの以前のブロックから予測可能である、エンコーダによって動き探索過程において発見されたサンプルを含むことができる。そのMVを直接コーディングする代わりに、A0、A1、B0、B1及びB2(それぞれ202から206)で示される5つの周囲のサンプルのいずれか1つに関連付けられるMVを使用して、1つ以上の参照ピクチャに関連付けられるメタデータから、例えば(デコード順序で)最新の参照ピクチャから、MVを導出することができる。H.265では、MV予測は、隣接ブロックが使用しているのと同じ参照ピクチャからの予測子を使用することができる。
【発明の概要】
【0022】
本開示の態様は、ビデオエンコード/デコーディングのための方法及び装置を提供する。一部の例では、ビデオデコーディングのための装置は、処理回路を含む。前記処理回路は、コーディングされたビデオビットストリーム内のデコードされた情報に基づいて、ブロックの第1の色成分及び第2の色成分の分離されたコーディング情報を決定する。そして、前記処理回路は、第1のループフィルタ構成に基づいて、前記ブロック内の位置にある前記第1の色成分の第1のサンプルを再構成し、前記第1のループフィルタ構成とは異なる第2のループフィルタ構成に基づいて、前記ブロック内の位置にある前記第2の色成分の第2のサンプルを再構成する。
【0023】
一部の実施形態では、前記分離されたコーディング情報は、ルマ成分とクロマ成分のブロック内コピーモードの有効化/無効化の違いを含む。一部の実施形態では、前記分離されたコーディング情報は、前記ルマ成分と前記クロマ成分の分離された区分構造を含む。
【0024】
一部の実施形態では、前記処理回路は、前記第1のループフィルタ構成及び前記第2のループフィルタ構成の一方において、デブロッキングフィルタ、制約付き方向強調フィルタ(CDEF)、ループ復元フィルタ、ローカルサンプルオフセット(LSO)フィルタ、及び交差成分サンプルオフセット(CCSO)フィルタのうちの少なくとも1つを有効化し、前記第1のループフィルタ構成及び前記第2のループフィルタ構成の他方において、前記デブロッキングフィルタ、前記制約付き方向強調フィルタ(CDEF)、前記ループ復元フィルタ、前記ローカルサンプルオフセット(LSO)フィルタ、及び前記交差成分サンプルオフセット(CCSO)フィルタを無効化する。
【0025】
一実施形態では、前記処理回路は、クロマ成分のブロック内コピーモードの無効化と、ルマ成分の前記ブロック内コピーモードの有効化とに応じて、当該クロマ成分に関連付けられた前記第2のループフィルタ構成において、前記デブロッキングフィルタ、前記制約付き方向強調フィルタ(CDEF)、前記ループ復元フィルタ、前記ローカルサンプルオフセット(LSO)フィルタ、及び前記交差成分サンプルオフセット(CCSO)フィルタを有効化する。
【0026】
別の実施形態では、前記処理回路は、クロマ成分のブロック内コピーモードの無効化と、ルマ成分の前記ブロック内コピーモードの有効化とに応じて、当該クロマ成分に関連付けられた前記第2のループフィルタ構成において、前記ローカルサンプルオフセット(LSO)フィルタ、及び前記交差成分サンプルオフセット(CCSO)フィルタのうちの1つを有効化する。
【0027】
別の実施形態では、前記処理回路は、クロマ成分のブロック内コピーモードの無効化と、ルマ成分の前記ブロック内コピーモードの有効化とに応じて、当該クロマ成分に関連付けられた前記第2のループフィルタ構成において、前記制約付き方向強調フィルタ(CDEF)、及び前記交差成分サンプルオフセット(CCSO)フィルタの両方を有効化する。
【0028】
一部の例では、前記処理回路は、ブロックレベル、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、適応パラメータセット(APS)、スライスヘッダ、及びタイルヘッダのうちの少なくとも1つの前記第1の色成分及び前記第2の色成分のそれぞれの有効化/無効化信号に基づいて、前記ブロック内の前記第1の色成分及び前記第2の色成分の前記分離されたコーディング情報を決定する。
【0029】
一部の例では、前記処理回路は、前記コーディングされたビデオビットストリームから、ルマ成分に関連付けられた第1の有効化/無効化フラグをデコードし、前記コーディングされたビデオビットストリームから、クロマ成分に関連付けられた第2の有効化/無効化フラグをデコードする。そして、前記処理回路は、前記第1の有効化/無効化フラグ及び前記第2の有効化/無効化フラグに基づいて、前記ルマ成分及び前記クロマ成分の前記分離されたコーディング情報を決定する。
【0030】
一部の例では、処理回路は、前記コーディングされたビデオビットストリームから、ルマ成分に関連付けられた第1の有効化/無効化フラグをデコードし、前記コーディングされたビデオビットストリームから、第1のクロマ成分に関連付けられた第2の有効化/無効化フラグをデコードし、前記コーディングされたビデオビットストリームから、第2のクロマ成分に関連付けられた第3の有効化/無効化フラグをデコードする。そして、前記処理回路は、前記第1の有効化/無効化フラグ、前記第2の有効化/無効化フラグ、及び前記第3の有効化/無効化フラグに基づいて、前記ルマ成分、前記第1のクロマ成分、及び前記第2のクロマ成分の前記分離されたコーディング情報を決定する。
【0031】
一部の実施形態では、前記処理回路は、前記ブロックより高いレベルのシンタックスから、特定のループフィルタに関連付けられたフラグをデコードし、前記分離されたコーディング情報又はブロック内コピーモードに関係なく、前記フラグが真であることに応じて、前記特定のループフィルタをルマ成分に適用する。
【0032】
本開示の態様はまた、ビデオデコーディングのためにコンピュータによって実行されると、前記コンピュータにビデオデコーディングのための方法を実行させる命令を記憶する非一時的なコンピュータ読取可能媒体を提供する。
【図面の簡単な説明】
【0033】
開示する主題のさらなる特徴、性質及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになる。
【
図1A】イントラ予測モードの例示的なサブセットの概略図である。
【
図1B】例示的なイントラ予測方向の説明図である。
【
図2】一例における現在のブロック及びその周囲の空間マージ候補の概略図である。
【
図3】一実施形態に係る通信システム(300)の簡略化されたブロック図の概略図である。
【
図4】一実施形態に係る通信システム(400)の簡略化されたブロック図の概略図である。
【
図5】一実施形態に係るデコーダの簡略化されたブロック図の概略図である。
【
図6】一実施形態に係るエンコーダの簡略化されたブロック図の概略図である。
【
図7】別の実施形態に係るエンコーダのブロック図を示す。
【
図8】別の実施形態に係るデコーダのブロック図を示す。
【
図9】本開示の実施形態に係るフィルタ形状の例を示す。
【
図10A】本開示の実施形態に係る、勾配を計算するために使用されるサブサンプリングされた位置の例を示す。
【
図10B】本開示の実施形態に係る、勾配を計算するために使用されるサブサンプリングされた位置の例を示す。
【
図10C】本開示の実施形態に係る、勾配を計算するために使用されるサブサンプリングされた位置の例を示す。
【
図10D】本開示の実施形態に係る、勾配を計算するために使用されるサブサンプリングされた位置の例を示す。
【
図11A】本開示の実施形態に係る仮想境界フィルタリングプロセスの例を示す。
【
図11B】本開示の実施形態に係る仮想境界フィルタリングプロセスの例を示す。
【
図12A】本開示の実施形態に係る仮想境界での対称パディング動作の例を示す。
【
図12B】本開示の実施形態に係る仮想境界での対称パディング動作の例を示す。
【
図12C】本開示の実施形態に係る仮想境界での対称パディング動作の例を示す。
【
図12D】本開示の実施形態に係る仮想境界での対称パディング動作の例を示す。
【
図12E】本開示の実施形態に係る仮想境界での対称パディング動作の例を示す。
【
図12F】本開示の実施形態に係る仮想境界での対称パディング動作の例を示す。
【
図13】本開示の一部の実施形態に係るピクチャの区分例を示す。
【
図14】一部の例におけるピクチャの四分木分割パターンを示す。
【
図15】本開示の一実施形態に係る交差成分フィルタを示す。
【
図16】本開示の一実施形態に係るフィルタ形状の例を示す。
【
図17】本開示の一部の実施形態に係る交差成分フィルタの構文例を示す。
【
図18A】本開示の実施形態に係るルマサンプルに対するクロマサンプルの例示的な位置を示す。
【
図18B】本開示の実施形態に係るルマサンプルに対するクロマサンプルの例示的な位置を示す。
【
図19】本開示の一実施形態に係る方向検索の例を示す。
【
図20】一部の例における部分空間射影を説明する例を示す。
【
図21】本開示の一実施形態に係る複数のサンプル適応オフセット(SAO)タイプの表を示す。
【
図22】一部の例における、エッジオフセットにおける画素分類のためのパターンの例を示す。
【
図23】一部の例におけるエッジオフセットのための画素分類規則の表を示す。
【
図24】シグナリングされてもよい構文の例を示す。
【
図25】本開示の一部の実施形態に係るフィルタサポートエリアの例を示す。
【
図26】本開示の一部の実施形態に係る別のフィルタサポートエリアの例を示す。
【
図27A】本開示の一実施形態に係る81個の組み合わせを有する表を示す。
【
図27B】本開示の一実施形態に係る81個の組み合わせを有する表を示す。
【
図27C】本開示の一実施形態に係る81個の組み合わせを有する表を示す。
【
図28】ルマ及びクロマ成分のコーディングツリー構造の例を示す。
【
図29】本開示の一実施形態に係る、プロセスを概説するフローチャートを示す。
【
図30】一実施形態に係るコンピュータシステムの概略図である。
【発明を実施するための形態】
【0034】
図3は、本開示の一実施形態に係る通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末装置を含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1の対の端末装置(310)及び(320)を含む。
図3の例では、第1の対の端末装置(310)及び(320)は、データの単方向送信を実行する。例えば、端末装置(310)は、ネットワーク(350)を介して他方の端末装置(320)へ送信するためにビデオデータ(例えば、端末装置(310)によってキャプチャされたビデオピクチャのストリーム)をコーディングし得る。エンコードされたビデオデータは、1つ以上のコーディングされたビデオビットストリームの形態で送信することができる。端末装置(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコードしてビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示することができる。一方向のデータ送信は、媒体供給用途などで一般的である可能性がある。
【0035】
別の例では、通信システム(300)は、例えば、ビデオ会議中に発生し得るコーディングされたビデオデータの双方向送信を実行する第2の対の端末装置(330)及び(340)を含む。データの双方向送信の場合、一例では、端末装置(330)及び(340)のそれぞれは、ネットワーク(350)を介して端末装置(330)及び(340)のうちの他方の端末装置へ送信するためにビデオデータ(例えば、端末装置によってキャプチャされたビデオピクチャのストリーム)をコーディングし得る。端末装置(330)及び(340)の一方は、端末装置(330)及び(340)のうちの他方の端末装置によって送信されたコーディングされたビデオデータを受信することができ、コーディングされたビデオデータをデコードしてビデオピクチャを復元することができ、復元されたビデオデータに従って、アクセス可能な表示装置にビデオピクチャを表示することができる。
【0036】
図3の例では、端末装置(310)、(320)、(330)及び(340)は、サーバ、パーソナルコンピュータ及びスマートフォンとして示され得るが、本開示の原理はこれに制限されることはない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤー及び/又は専用のビデオ会議機器などにおける用途を見出す。ネットワーク(350)は、例えば有線及び/又は無線通信ネットワークを含む、端末装置(310)、(320)、(330)及び(340)間でコーディングされたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回線交換及び/又はパケット交換チャネルでデータを交換することができる。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はインターネットを含む。本議論の目的のために、ネットワーク(350)のアーキテクチャ及びトポロジーは、以下に本明細書で説明されない限り、本開示の動作にとって重要でない場合がある。
【0037】
図4は、開示する主題の用途の例として、ストリーミング環境におけるビデオエンコーダ及びビデオデコーダの配置を示す。開示する主題は、例えば、ビデオ会議、デジタルTV、及びCD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶など、を含む他のビデオ対応アプリケーションに等しく適用可能である。
【0038】
ストリーミングシステムは、例えば非圧縮のビデオピクチャ(402)のストリームを作成するデジタルカメラなどのビデオソース(401)を含むことができるキャプチャサブシステム(413)を含んでもよい。一例では、ビデオピクチャ(402)のストリームは、デジタルカメラによって取得されたサンプルを含む。エンコードされたビデオデータ(404)(又はコーディングされたビデオビットストリーム)と比較して高データ量を強調するために太線で示されたビデオピクチャ(402)のストリームは、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理することができる。ビデオエンコーダ(403)は、以下でより詳細に説明されるように、開示する主題の態様を可能にするか或いは実施するためのハードウェア、ソフトウェア、又はそれらの組み合わせを含むことができる。ビデオピクチャ(402)のストリームと比較してより低いデータ量を強調するために細い線で示された、エンコードされたビデオデータ(404)(又はエンコードされたビデオビットストリーム(404))は、将来の使用のためにストリーミングサーバ(405)に記憶することができる。
図4のクライアントサブシステム(406)及び(408)のような1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、エンコードされたビデオデータ(404)のコピー(407)及び(409)を検索することができる。クライアントサブシステム(406)は、例えば、電子デバイス(430)におけるビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコードされたビデオデータの入方向コピー(407)をデコードし、ディスプレイ(412)(例えば、表示画面)又は他のレンダリングデバイス(図示せず)でレンダリングできるビデオピクチャ(411)の出方向のストリームを作成する。一部のストリーミングシステムにおいて、エンコードされたビデオデータ(404)、(407)及び(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコードすることができる。これらの規格の例は、ITU-T勧告H.265を含む。一例では、発展中のビデオコーディング規格は、非公式的に多用途ビデオコーディング(VVC)として知られている。開示する主題は、VVCの文脈に使用され得る。
【0039】
なお、電子デバイス(420)及び(430)は、他の構成要素(図示せず)を含むことができる。例えば、電子デバイス(420)は、ビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)は、ビデオエンコーダ(図示せず)を含むこともできる。
【0040】
図5は、本開示の実施形態に係るビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれることができる。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、
図4の例におけるビデオデコーダ(410)の代わりに使用することができる。
【0041】
受信機(531)は、ビデオデコーダ(510)によってデコードされる1つ以上のコーディングされたビデオシーケンスを受信することができ、同一又は別の実施形態では、一度に1つのコーディングされたビデオシーケンスを受信してもよく、各コーディングされたビデオシーケンスのデコードは、他のコーディングされたビデオシーケンスから独立している。コーディングされたビデオシーケンスは、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得るチャネル(501)から受信することができる。受信機(531)は、それぞれの使用エンティティ(図示せず)に転送され得る他のデータ、例えば、コーディングされたオーディオデータ及び/又は補助データストリームとともに、エンコードされたビデオデータを受信し得る。受信機(531)は、コーディングされたビデオシーケンスを他のデータから分離することができる。ネットワークジッタを防止するために、バッファメモリ(515)は、受信機(531)とエントロピーデコーダ/パーサ(520)(以降、「パーサ(520)」)の間に結合されてもよい。特定のアプリケーションでは、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合、バッファメモリ(515)は、ビデオデコーダ(510)(図示せず)の外部に存在し得る。さらに他の場合、例えば、ネットワークジッタを防止するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)が存在し、さらに、例えば、再生タイミングを取り扱うためにビデオデコーダ(510)の内部に別のバッファメモリ(515)が存在し得る。受信機(531)が十分な帯域幅及び可制御性を有する記憶/転送装置から、又は等同期ネットワークからデータを受信する際に、バッファメモリ(515)は必要とされないことがあり、又は小さくされることがある。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要になる場合があり、バッファメモリ(515)は、比較的大きいことがあり、有利には適応サイズであることができ、ビデオデコーダ(510)の外部のオペレーティングシステム又は類似の要素(図示せず)に少なくとも部分的に実施され得る。
【0042】
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するパーサ(520)を含んでもよい。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報を含み、かつ、電子デバイス(530)の不可欠な部分ではないが、
図5に示されるように電子デバイス(530)に結合され得るレンダリングデバイス(512)(例えば、表示画面)のようなレンダリングデバイスを制御する情報を潜在的に含む。レンダリングデバイスのための制御情報は、補助強化情報(SEIメッセージ)又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であってよい。パーサ(520)は、受信されたコーディングされたビデオシーケンスを構文解析/エントロピーデコードすることができる。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術又は規格に合わせることができ、可変長コーディング、ハフマンコーディング、文脈感受性を有する若しくは有さない算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コーディングされたビデオシーケンスからビデオデコーダ内の画素の少なくとも1つのサブグループのためのサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャ群(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)は、コーディングされたビデオシーケンスから変換係数、量子化パラメータ値、動きベクトルなどのような情報をも抽出することができる。
【0043】
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信されたビデオシーケンスに対してエントロピーデコード/構文解析動作を実行することができる。
【0044】
シンボル(521)の再構成は、コーディングされたビデオピクチャ又はその一部(例えば、インター及びイントラピクチャ、インター及びイントラブロック)のタイプ及び他の要因に応じて、複数の異なるユニットに関与することができる。どのユニットが、どのように関与するかは、コーディングされたビデオシーケンスからパーサ(520)によって構文解析されたサブグループ制御情報によって、制御することができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために示されていない。
【0045】
既に述べた機能ブロックに加え、ビデオデコーダ(510)は、以下で説明されるようにいくつかの機能ユニットに概念的に細分化することができる。商業的制約で動作する実際の実装では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的には互いに統合することができる。しかしながら、開示する主題を説明する目的のために、以下の機能ユニットへの概念的な細分化は適切である。
【0046】
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、使用する変換、ブロックサイズ、量子化因子、量子化スケーリング行列などを含む制御情報と、量子化された変換係数をシンボル(521)としてパーサ(520)から受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力可能なサンプル値を含むブロックを出力することができる。
【0047】
場合によっては、スケーラ/逆変換ユニット(551)の出力サンプルは、イントラコーディングされたブロック、すなわち、予め再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの予め再構成された部分からの予測情報を使用できるブロックに関係することがある。このような予測情報は、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)から取り出された周囲の既に再構成された情報を用いて、再構成中のブロックと同じサイズ及び形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構成された現在のピクチャ及び/又は完全に再構成された現在のピクチャをバッファリングする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
【0048】
他の場合では、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされた、潜在的に動き補償されたブロックに関係することがある。このような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルを取り出すことができる。取り出されたサンプルをブロックに関係するシンボル(521)に従って動き補償した後、出力サンプル情報を生成するように、これらのサンプルを、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加することができる(この場合、残差サンプル又は残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルを取り出す参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y及び参照ピクチャ成分を有し得るシンボル(521)の形態で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御することができる。動き補償は、サブサンプルの正確な動きベクトルが使用中であるときに参照ピクチャメモリ(557)から取り出されたサンプル値の補間、動きベクトル予測メカニズムなどを含むこともできる。
【0049】
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技法によって採用されてもよい。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれる、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能とされたパラメータによって制御することができ、かつ、コーディングされたピクチャ又はコーディングされたビデオシーケンスの(デコード順で)前の部分のデコード中に取得されたメタ情報に応じるとともに、予め再構成されループフィルタリングされたサンプル値に応じることもできるループ内フィルタ技術を含むことができる。
【0050】
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)へ出力することができるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶することができるサンプルストリームであり得る。
【0051】
特定のコーディングされたピクチャは、完全に再構成されると、将来の予測のために参照ピクチャとして使用することができる。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、当該コーディングされたピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次のコーディングされたピクチャの再構成を開始する前に新しい現在のピクチャバッファを再割り当てすることができる。
【0052】
ビデオデコーダ(510)は、ITU-T推奨のH.265のような規格の所定のビデオ圧縮技術に従ってデコード動作を実行することができる。コーディングされたビデオシーケンスが、ビデオ圧縮技術又は規格のシンタックスと、ビデオ圧縮技術又は規格で文書化されたプロファイルとの両方に準拠しているという意味で、コーディングされたビデオシーケンスは、使用されているビデオ圧縮技術又は規格によって指定されるシンタックスに準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術又は規格で使用可能なすべてのツールから、特定のツールをそのプロファイルで使用できるツールとして選択することができる。コーディングされたビデオシーケンスの複雑さがビデオ圧縮技術又は規格のレベルで限定される範囲内にあることも、遵守のためには必要である。場合によっては、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、1秒あたりのメガサンプルで測定される)、最大参照ピクチャサイズなどがレベルによって制限される。レベルによって設定された制限は、いくつかの場合では、仮想参照デコーダ(HRD)の仕様及びコーディングされたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限され得る。
【0053】
一実施形態では、受信機(531)は、エンコードされたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、コーディングされたビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコードし、及び/又は、元のビデオデータをより正確に再構成するためにビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的又は信号対雑音比(SNR)エンハンスメントレイヤ、冗長スライス、冗長ピクチャ、前方向誤り訂正コードなどの形態であり得る。
【0054】
図6は、本開示の実施形態に係るビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれる。電子デバイス(620)は、送信機(640)(例えば、送信回路)を含む。
図4の例におけるビデオエンコーダ(403)の代わりにビデオエンコーダ(603)を使用することができる。
【0055】
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングすべきビデオ画像をキャプチャし得るビデオソース(601)(
図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信することができる。別の例では、ビデオソース(601)は、電子デバイス(620)の一部である。
【0056】
ビデオソース(601)は、ビデオエンコーダ(603)によってコーディングすべきソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビットなど)、任意の色空間(例えば、BT.601 Y CrCB、RGBなど)及び任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で提供し得る。メディア供給システムでは、ビデオソース(601)は、予め準備されたビデオを記憶する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見られるときに動きが与えられる複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、画素の空間アレイとして編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに応じて1つ以上のサンプルを含むことができる。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明ではサンプルを中心に説明する。
【0057】
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで又はアプリケーションが要求する任意の他の時間制約の下でソースビデオシーケンスのピクチャをコーディングし、コーディングされたビデオシーケンス(643)に圧縮することができる。適切なコーディング速度を実施することは、コントローラ(650)の機能の1つである。一部の実施形態では、コントローラ(650)は、以下で説明される他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。明瞭にするために、結合は図示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化技法のラムダ値、・・・)、ピクチャサイズ、ピクチャ群(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計に対して最適化されたビデオエンコーダ(603)に関する他の適切な機能を有するように構成することができる。
【0058】
一部の実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に簡略化した説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングすべき入力ピクチャ及び参照ピクチャに基づくシンボルストリームなどのシンボルの作成を担当する)、及びビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)を含むことができる。デコーダ(633)は、シンボルを再構成して、(リモート)デコーダが作成するのと同様な方法でサンプルデータを作成する(シンボルとコーディングされたビデオビットストリーム間の任意の圧縮は、開示する主題で考慮されるビデオ圧縮技術では可逆であるためである)。再構成されたサンプルストリーム(サンプルデータ)は参照ピクチャメモリ(634)に入力される。シンボルストリームのデコーディングにより、デコーダの位置(ローカル又はリモート)に関係なくビット正確な結果が得られるため、参照ピクチャメモリ(634)のコンテンツもローカルエンコーダとリモートエンコーダの間でビット正確である。言い換えれば、エンコーダの予測部分は、デコード中に予測を使用するときにデコーダが「見る」のと全く同じサンプル値を、参照ピクチャサンプルとして「見る」。参照ピクチャの同期性のこの基本原理(及び例えばチャネルエラーに起因して同期性を維持できない場合に生じるドリフト)は、いくつかの関連技術にも使用されている。
【0059】
「ローカル」デコーダ(633)の動作は、前文で
図5に関連して既に詳細に説明された、ビデオデコーダ(510)などの「リモート」デコーダの動作と同様であり得る。しかしながら、
図5も簡単に参照すると、シンボルが使用可能であり、エントロピーコーダ(645)及びパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコード/デコーディングは可逆であり得るため、バッファメモリ(515)、及びパーサ(520)を含むビデオデコーダ(510)のエントロピーデコード部分は、ローカルデコーダ(633)では完全に実施されない場合がある。
【0060】
これで分かるように、デコーダに存在する構文解析/エントロピーデコード以外の如何なるデコーダ技術も、対応するエンコーダに実質的に同一の機能的形態で必ず存在する必要がある。このため、開示する主題は、デコーダの動作に焦点を合わせている。エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるため、省略できる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
【0061】
動作中、一部の例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つ以上の予めコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする動き補償予測コーディングを実行してもよい。このようにして、コーディングエンジン(632)は、入力ピクチャの画素ブロックと、入力ピクチャへの予測基準として選択され得る参照ピクチャの画素ブロックとの差異をコーディングする。
【0062】
ローカルビデオデコーダ(633)は、ソースコーダ(630)で作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコードすることができる。コーディングエンジン(632)の動作は、有利には非可逆プロセスであり得る。コーディングされたビデオデータがビデオデコーダ(
図6に示されていない)でデコードされ得るとき、再構成されたビデオシーケンスは、通常、いくつかの誤差を伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(633)は、ビデオデコーダによって参照ピクチャに対して実行され得るデコードプロセスを再現し、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に記憶させることができる。このようにして、ビデオエンコーダ(603)は、遠端ビデオデコーダによって取得される再構成された参照ピクチャと共通するコンテンツ(送信エラー無し)を有する再構成された参照ピクチャのコピーをローカルに記憶し得る。
【0063】
予測器(635)は、コーディングエンジン(632)の予測検索を実行することができる。つまり、新しいコーディングすべきピクチャについて、予測器(635)は、(候補の参照画素ブロックとしての)サンプルデータ、又は、参照ピクチャの動きベクトル、ブロック形状など、新しいピクチャの適切な予測基準として機能し得る特定のメタデータを参照ピクチャメモリ(634)で検索することができる。予測器(635)は、適切な予測基準を見つけるために、サンプルブロック/画素ブロックごとに動作することができる。場合によっては、予測器(635)で取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測基準を有してもよい。
【0064】
コントローラ(650)は、例えば、ビデオデータをエンコードするために使用されるパラメータ及びサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理することができる。
【0065】
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でエントロピーコーディングできる。エントロピーコーダ(645)は、例えば、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
【0066】
送信機(640)は、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る通信チャネル(660)を介した送信の準備のために、エントロピーコーダ(645)によって作成されたコーディングされたビデオシーケンスをバッファリングすることができる。送信機(640)は、ビデオエンコーダ(603)からのコーディングされたビデオデータを、送信されるべき他のデータ、例えば、コーディングされたオーディオデータ及び/又は補助データストリーム(ソースは示されていない)とマージすることができる。
【0067】
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディング中、コントローラ(650)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技法に影響を及ぼし得る。例えば、ピクチャは、多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る。
【0068】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のいかなるピクチャも使用せずにコーディング及びデコードされ得るものであり得る。一部のビデオコーデックは、例えば、インディペンデントデコーダリフレッシュ(Independent Decoder Refresh、「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャの変形及びそれらのそれぞれの用途及び特徴を知っている。
【0069】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大1つの動きベクトル及び参照インデックスを使用したイントラ予測又はインター予測によりコーディング及びデコーディングされ得るものであってもよい。
【0070】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大2つの動きベクトル及び参照インデックスを使用したイントラ予測又はインター予測によりコーディング及びデコーディングされ得るものであってもよい。同様に、多重予測ピクチャは、単数のブロックの再構成のために3つ以上の参照ピクチャ及び関連メタデータを使用することができる。
【0071】
ソースピクチャは、一般に、複数のサンプルブロック(例えば、それぞれ、4×4、8×8、4×8、又は16×16サンプルのブロック)に空間的に細分化され、ブロックごとにコーディングされ得る。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディングされた割り当てによって決定された他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされてもよく、或いは、同一のピクチャの既にコーディングされたブロック(空間予測又はイントラ予測)を参照して予測的にコーディングされてもよい。Pピクチャの画素ブロックは、1つの予めコーディングされた参照ピクチャを参照して、空間予測を介して又は時間予測を介して予測的にコーディングされ得る。Bピクチャのブロックは、1つ又は2つの予めコーディングされた参照ピクチャを参照して、空間予測を介して又は時間予測を介して予測的にコーディングされ得る。
【0072】
ビデオエンコーダ(603)は、ITU-T推奨のH.265などの予め設定されたビデオコーディング技術又は規格に従って、コーディング動作を実行することができる。動作中、ビデオエンコーダ(603)は、入力ビデオシーケンスの時間的及び空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実行することができる。したがって、コーディングされたビデオデータは、使用されるビデオコーディング技術又は規格によって指定された構文に従う場合がある。
【0073】
一実施形態では、送信機(640)は、エンコードされたビデオとともに追加のデータを送信してもよい。ソースコーダ(630)は、このようなデータをコーディングされたビデオシーケンスの一部として含み得る。追加のデータは、時間的/空間的/SNRエンハンスメントレイヤ、冗長なピクチャやスライスなどの他の形態での冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
【0074】
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(「イントラ予測」と略されることが多い)は、所定のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的又は他の)相関を利用する。一例では、現在のピクチャと呼ばれるエンコード/デコーディング中の特定のピクチャは、ブロックに分割される。現在のピクチャにおけるブロックが、ビデオにおける予めコーディングされ、まだバッファリングされている参照ピクチャの参照ブロックに類似している場合、現在のピクチャにおけるブロックは、動きベクトルと呼ばれるベクトルによってコーディングすることができる。動きベクトルは、参照ピクチャの参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3次元を有することができる。
【0075】
一部の実施形態では、インターピクチャ予測において双予測技法を使用することができる。双予測技法によれば、ビデオにおける現在のピクチャよりデコード順序がそれぞれ前である(ただし、表示順序でそれぞれ過去及び未来にあり得る)第1の参照ピクチャ及び第2の参照ピクチャのような2つの参照ピクチャを使用する。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトル、及び第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルによってコーディングすることができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測することができる。
【0076】
さらに、マージモード技法をインターピクチャ予測に適用して、コーディング効率を向上させることができる。
【0077】
本開示の一部の実施形態によれば、インターピクチャ予測及びイントラピクチャ予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、一連のビデオピクチャ内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、又は16×16画素など、同一のサイズを有する。一般に、CTUは、1つのルマCTBと2つのクロマCTBである3つのコーディングツリーブロック(CTB)を含む。各CTUは、1つ以上のコーディングユニット(CU)に再帰的に四分木分割することができる。例えば、64×64画素のCTUは、1つの64×64画素のCU、4つの32×32画素のCU、又は16個の16×16画素のCUに分割することができる。一例では、各CUを解析して、インター予測タイプ又はイントラ予測タイプなど、CUの予測タイプを決定する。CUは、時間的及び/又は空間的予測可能性に応じて、1つ以上の予測ユニット(PU)に分割される。通常、各PUは、1つのルマ予測ブロック(PB)と2つのクロマPBを含む。一実施形態では、コーディング(エンコード/デコーディング)における予測動作は、予測ブロックの単位で実行される。ルマ予測ブロックを予測ブロックの例として用いて、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などの画素の値(例えば、ルマ値)の行列を含む。
【0078】
図7は、本開示の別の実施形態に係るビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、一連のビデオピクチャ内の現在ビデオピクチャにおけるサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャにエンコードするように構成される。一例では、
図4の例におけるビデオエンコーダ(403)の代わりにビデオエンコーダ(703)を使用する。
【0079】
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルのような予測ブロックなどの処理ブロックのサンプル値の行列を受信する。ビデオエンコーダ(703)は、例えばレート歪み最適化を用いて、処理ブロックをイントラモード、インターモード、又は双予測モードにより最も良くコーディングするか否かを決定する。処理ブロックがイントラモードでコーディングされようとする場合、ビデオエンコーダ(703)は、イントラ予測技法を用いて処理ブロックをコーディングされたピクチャにエンコードすることができる。また、処理ブロックがインターモード又は双予測モードでコーディングされようとする場合、ビデオエンコーダ(703)は、それぞれインター予測又は双予測技法を用いて、処理ブロックをコーディングされたピクチャにエンコードすることができる。特定のビデオコーディング技術では、マージモードは、予測子以外にコーディングされた動きベクトル成分の利便を介することなく、1つ以上の動きベクトル予測子から動きベクトルを導出するインターピクチャ予測サブモードであり得る。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在し得る。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
【0080】
図7の例では、ビデオエンコーダ(703)は、
図7に示すように互いに結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差算出部(723)、スイッチ(726)、残差エンコーダ(724)、統括制御部(721)及びエントロピーエンコーダ(725)を含む。
【0081】
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、該ブロックを参照ピクチャ内の1つ以上の参照ブロック(例えば、前のピクチャ及び後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インターエンコード技法による冗長情報の記述、動きベクトル、マージモード情報)を生成し、インター予測情報に基づいて任意の適切な技法を用いてインター予測結果(例えば、予測ブロック)を算出するように構成される。一部の例では、参照ピクチャは、エンコードされたビデオ情報に基づいてデコードされたデコード参照ピクチャである。
【0082】
イントラエンコーダ(722)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては該ブロックを同一のピクチャで既にコーディングされたブロックと比較し、量子化された変換後係数を生成し、場合によってはイントラ予測情報(例えば、1つ以上のイントラエンコード技法によるイントラ予測方向情報)をも生成するように構成される。一例では、イントラエンコーダ(722)は、イントラ予測情報及び同一のピクチャ内の参照ブロックに基づいてイントラ予測結果(例えば、予測ブロック)も算出する。
【0083】
統括制御部(721)は、統括制御データを決定し、統括制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、統括制御部(721)は、ブロックのモードを決定し、モードに基づいて制御信号をスイッチ(726)に提供する。例えば、モードがイントラモードである場合、統括制御部(721)は、残差算出部(723)が使用するためのイントラモード結果を選択するようにスイッチ(726)を制御するとともに、イントラ予測情報を選択してイントラ予測情報をビットストリームに含ませるようにエントロピーエンコーダ(725)を制御する。また、モードがインターモードである場合、統括制御部(721)は、残差算出部(723)が使用するためのインター予測結果を選択するようにスイッチ(726)を制御するとともに、インター予測情報を選択してインター予測情報をビットストリームに含ませるようにエントロピーエンコーダ(725)を制御する。
【0084】
残差算出部(723)は、受信されたブロックとイントラエンコーダ(722)又はインターエンコーダ(730)から選択された予測結果との差(残差データ)を算出するように構成される。残差エンコーダ(724)は、残差データに基づいて動作し、残差データをエンコードして変換係数を生成するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域へと変換し、変換係数を生成するように構成される。その後、変換係数は量子化処理を受けて、量子化された変換係数が得られる。様々な実施形態では、ビデオエンコーダ(703)は、残差デコーダ(728)をも含む。残差デコーダ(728)は、逆変換を実行し、デコード残差データを生成するように構成される。デコード残差データは、イントラエンコーダ(722)及びインターエンコーダ(730)によって適切に使用することができる。例えば、インターエンコーダ(730)は、デコード残差データ及びインター予測情報に基づいて、デコードブロックを生成することができ、イントラエンコーダ(722)は、デコード残差データ及びイントラ予測情報に基づいて、デコードブロックを生成することができる。一部の例では、デコードブロックは、デコードピクチャを生成するように適切に処理され、デコードピクチャは、メモリ回路(図示せず)にバッファリングされ、参照ピクチャとして使用することができる。
【0085】
エントロピーエンコーダ(725)は、エンコードブロックを含めるようにビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従って様々な情報をビットストリームに含ませるように構成される。一例では、エントロピーエンコーダ(725)は、統括制御データ、選択された予測情報(例えば、イントラ予測情報又はインター予測情報)、残差情報及び他の適切な情報をビットストリームに含ませるように構成される。開示する主題によれば、インターモード又は双予測モードのマージサブモードでブロックをコーディングする場合、残差情報はないことに留意されたい。
【0086】
図8は、本開示の別の実施形態に係るビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受信し、コーディングされたピクチャをデコードして、再構成ピクチャを生成するように構成される。一例では、
図4の例におけるビデオデコーダ(410)の代わりにビデオデコーダ(810)を使用する。
【0087】
図8の例では、ビデオデコーダ(810)は、
図8に示されるように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)及びイントラデコーダ(872)を含む。
【0088】
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャを構成するシンタックス要素を表す特定のシンボルを再構成するように構成することができる。このようなシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラモード、インターモード、双予測モード、後の2つのマージサブモード又は他のサブモード)、それぞれイントラデコーダ(872)又はインターデコーダ(880)による予測に使用される特定のサンプル又はメタデータを識別できる予測情報(例えば、イントラ予測情報又はインター予測情報)、例えば、量子化された変換係数の形態での残差情報などを含むことができる。一例では、予測モードがインター又は双予測モードであれば、インター予測情報は、インターデコーダ(880)に提供される。また、予測タイプがイントラ予測タイプであれば、イントラ予測情報は、イントラデコーダ(872)に提供される。残差情報は、逆量子化を施すことができ、残差デコーダ(873)に提供される。
【0089】
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
【0090】
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
【0091】
残差デコーダ(873)は、逆量子化を実行することで、逆量子化された変換係数を抽出し、逆量子化された変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)は、(量子化器パラメータ(QP)を含めるように)特定の制御情報をも必要とする場合があり、この情報は、エントロピーデコーダ(871)によって提供されてもよい(データパスは、低ボリューム制御情報のみであり得るため、示されていない)。
【0092】
再構成モジュール(874)は、空間領域において、残差デコーダ(873)によって出力された残差と、(場合によってはインター又はイントラ予測モジュールによって出力される)予測結果とを組み合わせて、再構成ビデオの一部となり得る再構成ピクチャの一部であり得る再構成ブロックを形成するように構成される。なお、視覚的品質を改善するために、デブロッキング動作などの他の適切な動作を実行することができる。
【0093】
なお、ビデオエンコーダ(403)、(603)及び(703)とビデオデコーダ(410)、(510)及び(810)は、任意の適切な技法を用いて実施することができる。一実施形態では、ビデオエンコーダ(403)、(603)及び(703)とビデオデコーダ(410)、(510)及び(810)は、1つ以上の集積回路を用いて実施することができる。別の実施形態では、ビデオエンコーダ(403)、(603)及び(603)とビデオデコーダ(410)、(510)及び(810)は、ソフトウェア命令を実行する1つ以上のプロセッサを用いて実施することができる。
【0094】
本開示の態様は、ビデオコーディング/デコーディングのためのフィルタリング技法を提供する。具体的には、フィルタリング技法は、予測ループ内のループフィルタユニット(556)などのループフィルタユニットに適用される。例えば、ループフィルタユニット(556)によってフィルタリングされた画像は、さらなる予測のための参照として、参照ピクチャメモリ(557)などのバッファに記憶される。ループフィルタユニットは、サンプルフィルタリングに様々なループフィルタを適用してもよい。一部の例では、ループフィルタユニットのループフィルタ構成は、ループフィルタユニットによって適用されるループフィルタを指す。
【0095】
ブロックベースのフィルタ適応を備えた適応ループフィルタ(ALF)をエンコーダ/デコーダで適用して、アーチファクトを低減することができる。ルマ成分の場合、例えば、局所的な勾配の方向及びアクティビティに基づいて、複数のフィルタ(例えば、25個のフィルタ)のうちの1つを4×4のルマブロックに対して選択することができる。
【0096】
ALFは、任意の適切な形状とサイズを有することができる。
図9を参照すると、ALF(910)~(911)は、ひし形を有し、例えば、ALF(910)の場合で5×5のひし形で、ALF(911)の場合で7×7のひし形である。ALF(910)では、要素(920)~(932)は、ひし形を形成し、フィルタリングプロセスで使用することができる。要素(920)~(932)には、7つの値(例えば、C0~C6)を使用することができる。ALF(911)では、要素(940)~(964)は、ひし形を形成し、フィルタリングプロセスで使用することができる。要素(940)~(964)には、13個の値(例えば、C0~C12)を使用することができる。
【0097】
図9を参照すると、一部の例では、ひし形を有する2つのALF(910)~(911)が使用される。5×5のひし形フィルタ(910)は、クロマ成分(例えば、クロマブロック、クロマCB)に適用することができ、7×7のひし形フィルタ(911)は、ルマ成分(例えば、ルマブロック、ルマCB)に適用することができる。他の適切な形状とサイズをALFにおいて使用することができる。例えば、9×9のひし形フィルタを使用することができる。
【0098】
値(例えば、(910)におけるC0~C6又は(920)におけるC0~C12)で示される位置でのフィルタ係数は、非ゼロとすることができる。さらに、ALFにクリッピング関数が含まれている場合、その位置でのクリッピング値は、非ゼロとすることができる。
【0099】
ルマ成分のブロック分類の場合、4×4ブロック(又はルマブロック、ルマCB)を、複数(例えば、25)のクラスの1つとしてカテゴリ化又は分類することができる。分類指数Cは、式(1)を使用して、方向性パラメータDとアクティビティ値Aの量子化値
【数1】
に基づいて導出することができる。
【数2】
方向性パラメータと量子化値を計算するために、次のように、1-Dラプラシアンを使用して、垂直方向、水平方向及び2つの対角方向(例えば、d1とd2)の勾配g
v、g
h、g
d1及びg
d2をそれぞれ計算することができる。
【数3】
【数4】
【数5】
【数6】
ここで、インデックスiとj4×4ブロック内の左上のサンプルの座標を指し、R(k, l)が座標(k, l)での再構成されたサンプルを指す。方向(例えば、d1とd2)は、2つの対角方向を指すことができる。
【0100】
上記ブロック分類の複雑さを低減するために、サブサンプリングされた1-Dラプラシアン計算を適用することができる。
図10A~10Dは、垂直方向(
図10A)、水平方向(
図10B)、2つの対角方向d1(
図10C)及びd2(
図10D)の勾配g
v、g
h、g
d1及びg
d2をそれぞれ計算するためのサブサンプリングされた位置の例を示す。同じサブサンプリングされた位置を異なる方向の勾配計算に使用することができる。
図10Aでは、ラベル「V」は、垂直方向勾配g
vを計算するためのサブサンプリングされた位置を示す。
図10Bでは、ラベル「H」は、水平方向勾配g
hを計算するためのサブサンプリングされた位置を示す。
図10Cでは、ラベル「D1」は、d1対角方向勾配g
d1を計算するためのサブサンプリングされた位置を示す。
図10Dでは、ラベル「D2」は、d2対角方向勾配g
d2を計算するためのサブサンプリングされた位置を示す。
【0101】
水平方向と垂直方向の勾配g
vとg
hの最大値
【数7】
と最小値
【数8】
は、次のように設定することができる。
【数9】
2つの対角方向g
d1とg
d2の勾配の最大値
【数10】
と最小値
【数11】
は、次のように設定することができる。
【数12】
方向性パラメータは、上記値と2つの閾値t
1及びt
2に基づいて、以下のように導出することができる。
ステップ1:
【数13】
と
【数14】
が真の場合、Dを0に設定する。
ステップ2:
【数15】
の場合、ステップ3に進み、それ以外の場合、ステップ4に進む。
ステップ3:
【数16】
の場合、Dを2に設定し、それ以外の場合、Dを1に設定する。
ステップ4:
【数17】
の場合、Dを4に設定し、それ以外の場合、Dを3に設定する。
【0102】
アクティビティ値Aは、次のように計算することができる。
【数18】
Aを0から4までの範囲でさらに量子化でき、量子化値は、
【数19】
で示される。
【0103】
ピクチャ内のクロマ成分の場合、ブロック分類が適用されないため、各クロマ成分に単一のセットのALF係数を適用することができる。
【0104】
幾何学的変換は、フィルタ係数及び対応するフィルタクリッピング値(クリッピング値とも呼ばれる)に適用することができる。ブロック(例えば、4×4ルマブロック)をフィルタリングする前に、回転又は対角及び垂直方向の反転などの幾何学的変換は、例えば、ブロックに対して計算された勾配値(例えば、gv、gh、gd1、及び/又はgd2)に応じて、フィルタ係数f(k,l)及び対応するフィルタクリッピング値c(k,l)に適用することができる。フィルタ係数f(k,l)及び対応するフィルタクリッピング値c(k,l)に幾何学的変換を適用することは、フィルタによってサポートされる領域内のサンプルに幾何学的変換を適用することと同等であり得る。幾何学的変換は、それぞれの方向性を位置合わせすることにより、ALFが適用される異なるブロックをより類似させることができる。
【0105】
対角反転、垂直反転及び回転を含む3つの幾何学的変換は、それぞれ式(9)~(11)で説明されているように実行することができる。
【数20】
【数21】
【数22】
ここで、KがALF又はフィルタのサイズであり、0<=k,1<=K―1が係数の座標である。例えば、位置(0,0)は、左上隅にあり、位置(K-1,K-1)は、フィルタf又はクリッピング値行列(又はクリッピング行列)cの右下隅にある。変換は、ブロックに対して計算された勾配値に応じて、フィルタ係数f(k,l)及びクリッピング値c(k,l)に適用することができる。変換と4つの勾配の関係の例を表1に纏める。
【表1】
【0106】
一部の実施形態では、ALFフィルタパラメータは、ピクチャの適応パラメータセット(APS)でシグナリングされる。APSでは、1つ以上のセット(例えば、最大25セット)のルマフィルタ係数とクリッピング値インデックスをシグナリングすることができる。一例では、1つ以上のセットのうちの1つ以上は、ルマフィルタ係数及び1つ以上のクリッピング値インデックスを含むことができる。1つ以上のセット(例えば、最大8セット)のクロマフィルタ係数及びクリッピング値インデックスをシグナリングすることができる。シグナリングのオーバヘッドを削減するために、ルマ成分の様々な分類(例えば、様々な分類インデックスを有する)のフィルタ係数をマージすることができる。スライスヘッダでは、現在のスライスに使用されているAPSのインデックスをシグナリングすることができる。
【0107】
一実施形態では、クリッピング値インデックス(クリッピングインデックスとも呼ばれる)は、APSからデコードすることができる。クリッピング値インデックスは、例えば、クリッピング値インデックスと対応するクリッピング値との間の関係に基づいて、対応するクリッピング値を決定するために使用することができる。この関係は、事前定義してデコーダに記憶することができる。一例では、この関係は、クリッピング値インデックスと対応するクリッピング値のルマ表(例えば、ルマCBに使用される)、クリッピング値インデックスと対応するクリッピング値のクロマ表(例えば、クロマCBに使用される)などの表によって説明される。クリッピング値は、ビット深度Bに依存し得る。ビット深度Bは、内部ビット深度、フィルタリングされるCB内の再構成されたサンプルのビット深度などを指すことができる。一部の例では、表(例えば、ルマ表、クロマ表)は、式(12)を使用して得られる。
【数23】
ここで、AlfClipがクリッピング値であり、Bがビット深度(例えば、bitDepth)であり、N(例えば、N=4)が許可されたクリッピング値の数であり、(n-1)がクリッピング値インデックス(クリッピングインデックス又はclipIdxとも呼ばれる)である。表2は、N=4の場合の式(12)を使用して得られた表の例を示す。クリッピングインデックス(n-1)が表2における0、1、2及び3であり得、nがそれぞれ1、2、3及び4であり得る。表2は、ルマブロック又はクロマブロックに使用することができる。
【表2】
【0108】
現在のスライスのスライスヘッダでは、1つ以上のAPSインデックス(例えば、最大7つのAPSインデックス)をシグナリングして、現在のスライスに使用できるルマフィルタセットを指定することができる。フィルタリングプロセスは、ピクチャレベル、スライスレベル、CTBレベルなどのような1つ以上の適切なレベルで制御することができる。一実施形態では、フィルタリングプロセスは、CTBレベルでさらに制御することができる。ALFがルマCTBに適用されているかどうかを示すフラグをシグナリングすることができる。ルマCTBは、複数の固定フィルタセット(例えば、16個の固定フィルタセット)と、APSにシグナリングされたフィルタセット(シグナリングされたフィルタセットとも呼ばれる)のうちからフィルタセットを選択することができる。フィルタセットインデックスをルマCTBに対してシグナリングして、適用されるフィルタセット(例えば、複数の固定フィルタセットとシグナリングされたフィルタセットのうちのフィルタセット)を示すことができる。複数の固定フィルタセットは、エンコーダとデコーダで事前定義しハードコーディングすることができ、事前定義フィルタセットと呼ばれ得る。
【0109】
クロマ成分の場合、スライスヘッダでAPSインデックスをシグナリングして、現在のスライスに使用されるクロマフィルタセットを示すことができる。CTBレベルでは、APSに複数のクロマフィルタセットがある場合、各クロマCTBに対してフィルタセットインデックスをシグナリングすることができる。
【0110】
フィルタ係数は、128に等しいノルムで量子化することができる。乗算の複雑さを軽減するために、ビットストリーム適合性を適用して、非中央位置の係数値が-27~27-1の範囲になるようにすることができる。一例では、中央位置の係数は、ビットストリームにシグナリングされず、128に等しいと見なすことができる。
【0111】
一部の実施形態では、クリッピングインデックス及びクリッピング値のシンタックス及びセマンティクスは、以下のように定義される。
alf_luma_clip_idx[sfIdx][j]を使用して、sfIdxで示されるシグナリングされたルマフィルタのj番目の係数を乗算する前に使用するクリッピング値のクリッピングインデックスを指定することができる。ビットストリーム適合性の要件は、sfIdx=0~alf_luma_num_filters_signalled_minus1及びj=0~11の場合のalf_luma_clip_idx[sfIdx][j]の値が0~3の範囲であることを含むことができる。
filtIdx=0~NumAlfFilters-1、j=0~11の場合の要素AlfClipL[adaptation_parameter_set_id][filtIdx][j]を有するルマフィルタのクリッピング値AlfClipL[adaptation_parameter_set_id]は、BitDepthYに等しいbitDepthセットとalf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j]に等しいclipIdxセットとに応じて、表2に指定されているように導出することができる。
alf_chroma_clip_idx[altIdx][j]を使用して、インデックスaltIdxを有する代替クロマフィルタのj番目の係数を乗算する前に使用するクリッピング値のクリッピングインデックスを指定することができる。ビットストリーム適合性の要件は、altIdx=0~alf_chroma_num_alt_filters_minus1、j=0~5の場合のalf_chroma_clip_idx[altIdx][j]の値が0~3の範囲であることを含むことができる。
altIdx=0~alf_chroma_num_alt_filters_minus1、j=0~5の場合の要素AlfClipC[adaptation_parameter_set_id][altIdx][j]を有するクロマフィルタのクリッピング値AlfClipC[adaptation_parameter_set_id][altIdx]は、BitDepthCに等しいbitDepthセットとalf_chroma_clip_idx[altIdx][j]に等しいclipIdxセットとに応じて、表2に指定されているように導出することができる。
【0112】
一実施形態では、フィルタリングプロセスは、以下のように説明することができる。デコーダ側では、ALFがCTBに対して有効になっている場合、CU(又はCB)内のサンプルR(i,j)をフィルタリングして、以下に示すように式(13)を使用してフィルタリングされたサンプル値R’(i,j)を生成することができる。一例では、CU内の各サンプルはフィルタリングされる。
【数24】
ここで、f(k,l)がデコードされたフィルタ係数を示し、K(x,y)がクリッピング関数であり、c(k,l)がデコードされたクリッピングパラメータ(又はクリッピング値)を示す。変数kとlは、-L/2とL/2との間に変化し、ここで、Lがフィルタの長さを示す。クリッピング関数K(x,y)=min(y,max(-y,x))は、クリッピング関数Clip3(-y,y,x)に対応する。クリッピング関数K(x,y)を組み込むことにより、ループフィルタリング方法(例えば、ALF)は、非線形プロセスになり、非線形ALFと呼ぶことができる。
【0113】
非線形ALFでは、複数のセットのクリッピング値を表3に示すことができる。一例では、ルマセットには4つのクリッピング値{1024、181、32、6}が含まれ、クロマセットには4つのクリッピング値{1024、161、25、4}が含まれる。ルマセットにおける4つのクリッピング値は、対数領域で、ルマブロックのサンプル値(10ビットでコーディング)の全範囲(例えば、1024)をほぼ均等に分割することによって選択することができる。クロマセットの範囲は、4~1024であり得る。
【表3】
【0114】
選択されたクリッピング値は、「alf_data」シンタックス要素で次のようにコーディングすることができる。適切なエンコードスキーム(例えば、ゴロムエンコードスキーム)を使用して、表3に示すような選択されたクリッピング値に対応するクリッピングインデックスをエンコードすることができる。エンコード方式は、フィルタセットインデックスをエンコードするために使用されるものと同じエンコードスキームであり得る。
【0115】
一実施形態では、仮想境界フィルタリングプロセスを使用して、ALFのラインバッファ要件を低減することができる。したがって、変更されたブロック分類及びフィルタリングは、CTU境界(例えば、水平方向CTU境界)の近くのサンプルに使用することができる。仮想境界(1130)は、
図11Aに示すように、水平方向CTU境界(1120)を「N
samples」サンプルだけシフトすることによって線として定義することができ、ここで、N
samplesが正の整数であり得る。一例では、N
samplesは、ルマ成分の場合で4に等しく、クロマ成分の場合で2に等しくなる。
【0116】
図11Aを参照すると、変更されたブロック分類をルマ成分に適用することができる。一例では、仮想境界(1130)の上方の4x4ブロック(1110)の1Dラプラシアン勾配計算に対して、仮想境界(1130)の上方のサンプルのみが使用される。同様に、
図11Bを参照すると、CTU境界(1121)からシフトされた仮想境界(1131)の下方の4x4ブロック(1111)の1Dラプラシアン勾配計算に対して、仮想境界(1131)の下方のサンプルのみが使用される。したがって、アクティビティ値Aの量子化は、1Dラプラシアン勾配計算で使用されるサンプル数の減少を考慮することによりスケーリングすることができる。
【0117】
フィルタリング処理では、仮想境界での対称パディング動作をルマ成分とクロマ成分の両方に使用することができる。
図12A~12Fは、仮想境界でのルマ成分に対するそのような変更されたALFフィルタリングの例を示す。フィルタリングされるサンプルが仮想境界の下方にある場合、仮想境界の上方にある隣接するサンプルをパディングすることができる。フィルタリングされるサンプルが仮想境界の上方にある場合、仮想境界の下方にある隣接するサンプルをパディングすることができる。
図12Aを参照すると、隣接するサンプルC0は、仮想境界(1210)の下方にあるサンプルC2でパディングすることができる。
図12Bを参照すると、隣接するサンプルC0は、仮想境界(1220)の上方にあるサンプルC2でパディングすることができる。
図12Cを参照すると、隣接するサンプルC1~C3は、仮想境界(1230)の下方にあるサンプルC5~C7でそれぞれパディングすることができる。
図12Dを参照すると、隣接するサンプルC1~C3は、仮想境界(1240)の上方にあるサンプルC5~C7でそれぞれパディングすることができる。
図12Eを参照すると、隣接するサンプルC4~C8は、仮想境界(1250)の下方にあるサンプルC10、C11、C12、C11及びC10でそれぞれパディングすることができる。
図12Fを参照すると、隣接するサンプルC4~C8は、仮想境界(1260)の上方にあるサンプルC10、C11、C12、C11及びC10でそれぞれパディングすることができる。
【0118】
一部の例では、サンプル及び隣接するサンプルが仮想境界の左(又は右)及び右(又は左)にある場合、上記説明を適切に適合させることができる。
【0119】
本開示の一態様によれば、コーディング効率を向上させるために、フィルタリングプロセスに基づいてピクチャを区分することができる。一部の例では、CTUは、最大コーディングユニット(LCU)とも呼ばれる。一例では、CTU又はLCUは、64×64画素のサイズを有することができる。一部の実施形態では、LCU位置合わせピクチャ四分木分割をフィルタリングベースの区分に使用することができる。一部の例では、同期性コーディングユニットとピクチャ四分木ベースの適応ループフィルタを使用することができる。例えば、ルマピクチャを幾つかのマルチレベルの四分木区分に分割し、各区分の境界をLCUの境界に位置合わせすることができる。各区分には、独自のフィルタリングプロセスがあるため、フィルタユニット(FU)と呼ばれる。
【0120】
一部の例では、2パスエンコードフローを使用することができる。2パスエンコードフローの第1のパスで、ピクチャの四分木分割パターンと各FUの最適なフィルタを決定することができる。一部の実施形態では、ピクチャの四分木分割パターンの決定及びFUに最適なフィルタの決定は、フィルタリング歪みに基づく。フィルタリング歪みは、決定プロセス中に高速フィルタリング歪み推定(FFDE)方法によって推定することができる。ピクチャは、四分木区分を使用して区分される。決定された四分木分割パターンとすべてのFUの選択されたフィルタに従って、再構成されたピクチャをフィルタリングすることができる。
【0121】
2-パスエンコードフローの第2のパスで、CUとALFのオン/オフ同期制御が実行される。ALFのオン/オフの結果によると、最初にフィルタリングされたピクチャは、再構成されたピクチャによって部分的に復元される。
【0122】
具体的には、一部の例では、トップダウン分割戦略を採用して、レート歪み基準を使用してピクチャをマルチレベルの四分木区分に分割する。各区分は、フィルタユニット(FU)と呼ばれる。分割プロセスは、四分木区分をLCU境界に位置合わせする。FUのエンコード順序は、z走査の順序に従う。
【0123】
図13は、本開示の一部の実施形態に係る区分例を示す。
図13の例では、ピクチャ(1300)は、10個のFUに分割され、エンコード順序は、FU0、FU1、FU2、FU3、FU4、FU5、FU6、FU7、FU8及びFU9である。
【0124】
図14は、ピクチャ(1300)の四分木分割パターン(1400)を示す。
図14の例では、分割フラグを使用して、ピクチャ区分パターンを示す。例えば、「1」は、四分木区分がブロックに対して実行されることを示し、「0」は、ブロックがさらに区分されていないことを示す。一部の例では、最小サイズのFUにはLCUサイズがあり、最小サイズのFUに分割フラグは必要ではない。分割フラグは、
図14に示すように、z順序でエンコードされ送信される。
【0125】
一部の例では、各FUのフィルタは、レート歪み基準に基づいて2つのフィルタセットから選択される。第1のセットには、現在のFUに対して導出された1/2対称の正方形と菱形のフィルタがある。第2のセットは、時間遅延フィルタバッファから取得され、該時間遅延フィルタバッファは、前のピクチャのFUに対して以前導出されたフィルタを記憶する。現在のFUのために、これら2つのセットの中でレート歪みコストが最小のフィルタを選択することができる。同様に、現在のFUが最小のFUではなく、さらに4つのサブFUに分割できる場合、4つのサブFUのレート歪みコストを計算する。分割の場合と分割されていない場合のレート歪みコストを再帰的に比較することにより、ピクチャの四分木分割パターンを決定することができる。
【0126】
一部の例では、最大四分木分割レベルを使用して、FUの最大数を制限することができる。一例では、最大四分木分割レベルが2である場合、FUの最大数は、16である。さらに、四分木分割の決定中に、最下位の四分木レベルでの16個のFU(最小のFU)のウィーナー係数を導出する相関値を再利用することができる。残りのFUは、最下位の四分木レベルでの16個のFUの相関からウィーナーフィルタを導出することができる。したがって、この例では、すべてのFUのフィルタ係数を導出するために1回のフレームバッファアクセスのみが実行される。
【0127】
四分木分割パターンが決定された後、フィルタリング歪みをさらに減らすために、CUとALFのオン/オフ同期制御を実行することができる。各リーフCUでのフィルタリング歪みと非フィルタリング歪みを比較することにより、リーフCUは、そのローカル領域でALFのオン/オフを明示的に切り替えることができる。一部の例では、ALFオン/オフの結果に従ってフィルタ係数を再設計することによって、コーディング効率をさらに改善することができる。
【0128】
交差成分フィルタリングプロセスでは、交差成分適応ループフィルタ(CC-ALF)などの交差成分フィルタを適用することができる。交差成分フィルタは、ルマ成分(例えば、ルマCB)のルマサンプル値を使用して、クロマ成分(例えば、ルマCBに対応するクロマCB)を改良することができる。一例では、ルマCB及びクロマCBは、CUに含まれる。
【0129】
図15は、本開示の一実施形態に係る、クロマ成分を生成するための交差成分フィルタ(例えば、CC-ALF)を示す。一部の例では、
図15は、第1のクロマ成分(例えば、第1のクロマCB)、第2のクロマ成分(例えば、第2のクロマCB)及びルマ成分(例えば、ルマCB)のフィルタリングプロセスを示す。サンプル適応オフセット(SAO)フィルタ(1510)によってルマ成分をフィルタリングして、SAOでフィルタリングされたルマ成分(1541)を生成することができる。SAOでフィルタリングされたルマ成分(1541)は、さらにALFルマフィルタ(1516)によってフィルタリングされて、フィルタリングされたルマCB(1561)(例えば、「Y」)になることができる。
【0130】
SAOフィルタ(1512)及びALFクロマフィルタ(1518)によって第1のクロマ成分をフィルタリングして、第1の中間成分(1552)を生成することができる。さらに、第1のクロマ成分のための交差成分フィルタ(例えば、CC-ALF)(1521)によって、SAOでフィルタリングされたルマ成分(1541)をフィルタリングして、第2の中間成分(1542)を生成することができる。続いて、第2の中間成分(1542)及び第1の中間成分(1552)のうちの少なくとも1つに基づいてフィルタリングされた第1のクロマ成分(1562)(例えば、「Cb」)を生成することができる。一例では、第2の中間成分(1542)と第1の中間成分(1552)とを加算器(1522)で組み合わせることによって、フィルタリングされた第1のクロマ成分(1562)(例えば、「Cb」)を生成することができる。第1のクロマ成分のための交差成分適応ループフィルタリングプロセスは、CC-ALF(1521)によって実行するステップと、例えば、加算器(1522)によって実行するステップとを含むことができる。
【0131】
上記説明は、第2のクロマ成分に適合させることができる。SAOフィルタ(1514)及びALFクロマフィルタ(1518)によって第2のクロマ成分をフィルタリングして、第3の中間成分(1553)を生成することができる。さらに、第2のクロマ成分のための交差成分フィルタ(例えば、CC-ALF)(1531)によって、SAOでフィルタリングされたルマ成分(1541)をフィルタリングして、第4の中間成分(1543)を生成することができる。続いて、第4の中間成分(1543)及び第3の中間成分(1553)のうちの少なくとも1つに基づいて、フィルタリングされた第2のクロマ成分(1563)(例えば、「Cr」)を生成することができる。一例では、第4の中間成分(1543)と第3の中間成分(1553)とを加算器(1532)で組み合わせることによって、フィルタリングされた第2のクロマ成分(1563)(例えば、「Cr」)を生成することができる。一例では、第2のクロマ成分のための交差成分適応ループフィルタリングプロセスは、CC-ALF(1531)によって実行するステップと、例えば、加算器(1532)によって実行するステップとを含むことができる。
【0132】
交差成分フィルタ(例えば、CC-ALF(1521)、CC-ALF(1531))は、任意の適切なフィルタ形状を有する線形フィルタをルマ成分(又はルマチャネル)に適用することにより、各クロマ成分(例えば、第1のクロマ成分、第2のクロマ成分)を改良するように動作することができる。
【0133】
図16は、本開示の一実施形態に係るフィルタ(1600)の例を示す。フィルタ(1600)は、非ゼロのフィルタ係数及びゼロフィルタ係数を含むことができる。フィルタ(1600)は、(黒い塗りつぶしを有する円によって示される)フィルタ係数(1610)によって形成されたひし形(1620)を有する。一例では、フィルタ(1600)内の非ゼロのフィルタ係数は、フィルタ係数(1610)に含まれ、フィルタ係数(1610)に含まれないフィルタ係数は、ゼロである。したがって、フィルタ(1600)内の非ゼロのフィルタ係数は、ひし形(1620)に含まれ、ひし形(1620)に含まれないフィルタ係数は、ゼロである。一例では、フィルタ(1600)内のフィルタ係数の数は、フィルタ係数(1610)の数に等しく、
図16に示される例では、18である。
【0134】
CC-ALFには、任意の適切なフィルタ係数(CC-ALFフィルタ係数とも呼ばれる)を含むことができる。
図15に戻り、CC-ALF(1521)及びCC-ALF(1531)は、
図16に示されるひし形(1620)などの同じフィルタ形状及び同じ数のフィルタ係数を有することができる。一例では、CC-ALF(1521)内のフィルタ係数の値は、CC-ALF(1531)のフィルタ係数の値とは異なる。
【0135】
一般に、CC-ALF内のフィルタ係数(例えば、非ゼロのフィルタ係数)は、例えばAPSで送信することができる。一例では、フィルタ係数は、係数(例えば、210)によってスケーリングすることができ、固定小数点表示に対して四捨五入することができる。CC-ALFの応用は、可変ブロックサイズで制御し、サンプルのブロックごとに受信したコンテキストコーディングフラグ(例えば、CC-ALF有効化フラグ)によってシグナリングすることができる。CC-ALF有効化フラグなどのコンテキストコーディングフラグは、ブロックレベルなどの任意の適切なレベルでシグナリングすることができる。各クロマ成分について、ブロックサイズとCC-ALF有効化フラグをスライスレベルで受信することができる。一部の例では、ブロックサイズ(クロマサンプル)16x16、32x32及び64x64をサポートすることができる。
【0136】
図17は、本開示の一部の実施形態に係るCC-ALFの構文例を示す。
図17の例では、alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]は、交差成分Cbフィルタが使用されているかどうかを示すインデックスであり、交差成分Cbフィルタが使用されている場合のインデックスである。例えば、alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しい場合、交差成分Cbフィルタは、ルマ位置(xCtb、yCtb)のCb色成分サンプルのブロックに適用されず、alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しくない場合、alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]は、適用されるフィルタのインデックスである。例えば、alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]番目の交差成分Cbフィルタは、ルマ位置(xCtb、yCtb)のCb色成分サンプルのブロックに適用される。
【0137】
さらに、
図17の例では、alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]を使用して、交差成分Crフィルタが使用されているかどうか、交差成分Crフィルタのインデックスが使用されているかどうかを示す。例えば、alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しい場合、交差成分Crフィルタは、ルマ位置(xCtb、yCtb)のCr色成分サンプルのブロックに適用されず、alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しくない場合、alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]は、交差成分Crフィルタのインデックスである。例えば、alf_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]番目の交差成分Crフィルタは、ルマ位置(xCtb、yCtb)のCr色成分サンプルのブロックに適用することができる。
【0138】
一部の例では、クロマサブサンプリング技法が使用されるため、各クロマブロック内のサンプル数は、ルマブロック内のサンプル数未満であり得る。クロマサブサンプリングフォーマット(例えば、chroma_format_idcで指定されるクロマサブサンプリングフォーマットとも呼ばれる)は、各クロマブロックと対応するルマブロックとの間の水平方向クロマサブサンプリング係数(例えば、SubWidthC)及び垂直方向クロマサブサンプリング係数(例えば、SubHeightC)を示すことができる。一例では、クロマサブサンプリングフォーマットが4:2:0であるため、
図18A~18Bに示すように、水平方向クロマサブサンプリング係数(例えば、SubWidthC)と垂直方向クロマサブサンプリング係数(例えば、SubHeightC)は、2である。一例では、クロマサブサンプリングフォーマットが4:2:2であるため、水平方向クロマサブサンプリング係数(例えば、SubWidthC)は、2であり、垂直方向クロマサブサンプリング係数(例えば、SubHeightC)は、1である。一例では、クロマサブサンプリングフォーマットが4:4:4であるため、水平方向クロマサブサンプリング係数(例えば、SubWidthC)と垂直方向クロマサブサンプリング係数(例えば、SubHeightC)は、1である。クロマサンプルタイプ(クロマサンプル位置とも呼ばれる)は、ルマブロック内の少なくとも1つの対応するルマサンプルに対するクロマブロック内のクロマサンプルの相対位置を示すことができる。
【0139】
図18A~18Bは、本開示の実施形態に係るルマサンプルに対するクロマサンプルの例示的な位置を示す。
図18Aを参照し、ルマサンプル(1801)は、行(1811)~(1818)にある。
図18Aに示されるルマサンプル(1801)は、ピクチャの一部を表すことができる。一例では、ルマブロック(例えば、ルマCB)は、ルマサンプル(1801)を含む。ルマブロックは、4:2:0のクロマサブサンプリングフォーマットを有する2つのクロマブロックに対応することができる。一例では、各クロマブロックは、クロマサンプル(1803)を含む。各クロマサンプル(例えば、クロマサンプル(1803(1))は、4つのルマサンプル(例えば、ルマサンプル(1801(1))~(1801(4))に対応する。一例では、4つのルマサンプルは、左上のサンプル(1801(1))、右上のサンプル(1801(2))、左下のサンプル(1801(3))及び右下のサンプル(1801(4))である。クロマサンプル(例えば、(1803(1)))は、左上のサンプル(1801(1))と左下のサンプル(1801(3))との間にある左中央の位置にあり、クロマサンプル(1803)を有するクロマブロックのクロマサンプルタイプは、クロマサンプルタイプ0と呼ばれ得る。クロマサンプルタイプ0は、左上のサンプル(1801(1))と左下のサンプル(1801(3))の中央の左中央位置に対応する相対位置0を示す。4つのルマサンプル(例えば、(1801(1))~(1801(4)))は、クロマサンプル(1803)(1)の隣接するルマサンプルと呼ばれ得る。
【0140】
一例では、各クロマブロックは、クロマサンプル(1804)を含む。クロマサンプル(1803)に関する上記説明は、クロマサンプル(1804)に適合させることができるので、簡潔にするために詳細な説明を省略することができる。各クロマサンプル(1804)は、4つの対応するルマサンプルの中央位置にあり得、クロマサンプル(1804)を有するクロマブロックのクロマサンプルタイプは、クロマサンプルタイプ1と呼ばれ得る。クロマサンプルタイプ1は、4つのルマサンプル(例えば、(1801(1))~(1801(4)))の中央位置に対応する相対位置1を示す。例えば、クロマサンプル(1804)の1つは、ルマサンプル(1801(1))~(1801(4))の中央位置にあり得る。
【0141】
一例では、各クロマブロックは、クロマサンプル(1805)を含む。各クロマサンプル(1805)は、4つの対応するルマサンプル(1801)の左上のサンプルと同じ位置にある左上の位置にあり得、クロマサンプル(1805)を有するクロマブロックのクロマサンプルタイプは、クロマサンプルタイプ2と呼ばれ得る。したがって、各クロマサンプル(1805)は、それぞれのクロマサンプルに対応する4つのルマサンプル(1801)の左上のサンプルと同じ位置にある。クロマサンプルタイプ2は、4つのルマサンプル(1801)の左上の位置に対応する相対位置2を示す。例えば、クロマサンプル(1805)の1つは、ルマサンプル(1801(1))~(1801(4))の左上の位置にあり得る。
【0142】
一例では、各クロマブロックは、クロマサンプル(1806)を含む。各クロマサンプル(1806)は、対応する左上のサンプルと対応する右上のサンプルとの間の上部中央の位置にあり得、クロマサンプル(1806)を有するクロマブロックのクロマサンプルタイプは、クロマサンプルタイプ3と呼ばれ得る。クロマサンプルタイプ3は、左上のサンプルと右上のサンプルとの間の上部中央の位置に対応する相対位置3を示す。例えば、クロマサンプル(1806)の1つは、ルマサンプル(1801(1))~(1801(4))の上部中央の位置にあり得る。
【0143】
一例では、各クロマブロックは、クロマサンプル(1807)を含む。各クロマサンプル(1807)は、4つの対応するルマサンプル(1801)の左下のサンプルと同じ位置にある左下の位置にあり得、クロマサンプル(1807)を有するクロマブロックのクロマサンプルタイプは、クロマサンプルタイプ4と呼ばれ得る。したがって、各クロマサンプル(1807)は、それぞれのクロマサンプルに対応する4つのルマサンプル(1801)の左下のサンプルと同じ位置にあり得る。クロマサンプルタイプ4は、4つのルマサンプル(1801)の左下の位置に対応する相対位置4を示す。例えば、クロマサンプル(1807)の1つは、ルマサンプル(1801(1))~(1801(4))の左下の位置にあり得る。
【0144】
一例では、各クロマブロックは、クロマサンプル(1808)を含む。各クロマサンプル(1808)は、左下のサンプルと右下のサンプルとの間の下部中央の位置にあり、クロマサンプル(1808)を有するクロマブロックのクロマサンプルタイプは、クロマサンプルタイプ5と呼ばれ得る。クロマサンプルタイプ5は、4つのルマサンプル(1801)の左下のサンプルと右下のサンプルとの間の下部中央の位置に対応する相対位置5を示す。例えば、クロマサンプル(1808)の1つは、ルマサンプル(1801(1))~(1801(4))の左下のサンプルと右下のサンプルとの間にあり得る。
【0145】
一般に、適切なクロマサンプルタイプは、クロマサブサンプリングフォーマットに使用することができる。クロマサンプルタイプ0~5は、クロマサブサンプリングフォーマット4:2:0で説明された例示的なクロマサンプルタイプである。追加のクロマサンプルタイプは、クロマサブサンプリングフォーマット4:2:0に使用されてもよい。さらに、他のクロマサンプルタイプ及び/又はクロマサンプルタイプ0~5の変形は、4:2:2、4:4:4などの他のクロマサブサンプリングフォーマットに使用することができる。一例では、クロマサンプル(1805)と(1807)を組み合わせたクロマサンプルタイプは、クロマサブサンプリングフォーマット4:2:2に使用される。
【0146】
一例では、ルマブロックは、4つのルマサンプル(例えば、(1801(1))~(1801(4)))の上部の2つのサンプル(例えば、(1801(1))~(180)(2)))と、4つのルマサンプル(例えば、(1801(1)~(1801(4)))の下部の2つのサンプル(例えば、(1801(3))~(1801(4)))とをそれぞれ含む行(1811)~(1812)などの交互の行を有すると見なされる。したがって、行(1811)、(1813)、(1815)及び(1817)は、現在の行(トップフィールドとも呼ばれる)と呼ばれ得、行(1812)、(1814)、(1816)及び(1818)は、次の行(ボトムフィールドとも呼ばれる)と呼ばれ得る。4つのルマサンプル(例えば、(1801(1))~(1801(4)))は、現在の行(例えば、(1811))と次の行(例えば、(1812))にある。相対位置2~3は、現在の行にあり、相対位置0~1は、各現在の行とそれぞれの次の行の間にあり、相対位置4~5は、次の行にある。
【0147】
クロマサンプル(1803)、(1804)、(1805)、(1806)、(1807)又は(1808)は、各クロマブロックの行(1851)~(1854)にある。行(1851)~(1854)の特定の位置は、クロマサンプルのクロマサンプルタイプに依存し得る。例えば、クロマサンプル(1803)~(1804)がそれぞれのクロマサンプルタイプ0~1を有する場合、行(1851)は、行(1811)~(1812)の間にある。クロマサンプル(1805)~(1806)がそれぞれのクロマサンプルタイプ2~3を有する場合、行(1851)は、現在の行(1811)と同じ位置にある。クロマサンプル(1807)~(1808)がそれぞれのクロマサンプルタイプ4~5を有する場合、行(1851)は、次の行(1812)と同じ位置にある。上記説明は、行(1852)~(1854)に適切に適合させることができるので、簡潔にするために詳細な説明を省略する。
【0148】
任意の適切な走査方法を使用して、以上の
図18Aで説明したルマブロック及び対応するクロマブロックを表示、記憶及び/又は送信することができる。一例では、順次走査が使用される。
【0149】
図18Bに示すように、インタレース走査を使用することができる。上記のように、クロマサブサンプリングフォーマットは、4:2:0である(例えば、chroma_format_idcは1に等しい)。一例では、可変クロマロケーションタイプ(例えば、ChromaLocType)は、現在の行(例えば、ChromaLocTypeがchroma_sample_loc_type_top_fieldである)又は次の行(例えば、ChromaLocTypeがchroma_sample_loc_type_bottom_fieldである)を示す。現在の行(1811)、(1813)、(1815)及び(1817)と、次の行(1812)、(1814)、(1816)及び(1818)とをそれぞれ走査することができ、例えば、まず、現在の行(1811)、(1813)、(1815)及び(1817)を走査し、続いて次の行(1812)、(1814)、(1816)及び(1818)を走査することができる。現在の行にはルマサンプル(1801)を含むことができ、次の行にはルマサンプル(1802)を含むことができる。
【0150】
同様に、対応するクロマブロックをインタレース走査することができる。クロマサンプル(1803)、(1804)、(1805)、(1806)、(1807)又は(1808)を含む、塗りつぶしのない行(1851)及び(1853)は、現在の行(又は現在のクロマ行)と呼ばれ得、クロマサンプル(1803)、(1804)、(1805)、(1806)、(1807)又は(1808)を含む、灰色の塗りつぶしのある行(1852)及び(1854)は、次の行(又は次のクロマ行)と呼ばれ得る。一例では、インタレース走査中に、まず、行(1851)及び(1853)を走査し、続いて行(1852)及び(1854)を走査する。
【0151】
一部の例では、制約付き方向強調フィルタリング技法を使用することができる。インループ制約付き方向強調フィルタ(CDEF)を使用すると、画像の詳細を保持しながら、コーディングアーチファクトをフィルタリングすることができる。一例(例えば、HEVC)では、サンプル適応オフセット(SAO)アルゴリズムは、異なるクラスの画素のために信号オフセットを定義することによって、同様の目標を達成することができる。SAOとは異なり、CDEFは、非線形空間フィルタである。一部の例では、CDEFは、簡単にベクトル化できるように制約することができる(つまり、単一命令複数データ(SIMD)動作により実施できる)。なお、メディアンフィルタ、バイラテラルフィルタなどの他の非線形フィルタは、同じ方法で処理できない。
【0152】
場合によっては、コーディングされた画像のリンギングアーチファクトの量は、量子化ステップサイズにほぼ比例する傾向がある。詳細の量は入力画像の特性であるが、量子化された画像に保持される最小の詳細も、量子化ステップサイズに比例する傾向がある。与えられた量子化ステップサイズについて、リンギングの振幅は、一般に詳細の振幅より小さくなる。
【0153】
CDEFを使用して、各ブロックの方向を識別し、識別された方向に沿って適応的にフィルタリングし、識別された方向から45度回転した方向に沿ってより少ない程度でフィルタリングすることができる。一部の例では、エンコーダは、フィルタ強度を検索し、フィルタ強度を明示的にシグナリングすることができるため、ブレを高度に制御することができる。
【0154】
具体的には、一部の例では、方向検索は、デブロッキングフィルタの直後に、再構成された画素に対して実行される。これらの画素がデコーダで利用可能であるため、デコーダは、方向を検索できる。したがって、一例では、方向は、シグナリングを必要としない。一部の例では、方向探索は、8×8ブロックなどの特定のブロックサイズで動作でき、これらブロックは、非直線エッジを適切に処理するのに十分に小さい一方で、量子化された画像に適用されたときに方向を確実に推定するのに十分に大きい。また、8×8の領域で方向が一定であると、フィルタのベクトル化が容易になる。一部の例では、各ブロック(例えば、8×8)を完全方向性ブロックと比較して、違いを判断することができる。完全方向性ブロックとは、一方向の線に沿ったすべての画素が同じ値を有するブロックである。一例では、二乗差の合計(SSD)、二乗平均平方根(RMS)誤差などの、ブロックと各完全方向性ブロックとの違いの測度を計算することができる。次に、最小の違い(例えば、最小のSSD、最小のRMSなど)を有する完全方向性ブロックを決定でき、決定された完全方向性ブロックの方向は、ブロック内のパターンに最も一致する方向であり得る。
【0155】
図19は、本開示の一実施形態に係る方向検索の例を示す。一例では、ブロック(1910)は、再構成され、デブロッキングフィルタから出力された8×8ブロックである。
図19の例では、方向検索は、(1920)によって示される8つの方向からブロック(1910)の方向を決定することができる。8つの完全方向性ブロック(1930)は、それぞれ8つの方向(1920)に対応して形成される。方向に対応する完全方向性ブロックは、方向の線に沿った画素が同じ値を有するブロックである。さらに、ブロック(1910)と完全方向性ブロック(1930)のそれぞれの、SSD、RMS誤差などの違いの測度を計算することができる。
図19の例では、RMS誤差は、(1940)によって示される。(1943)に示すように、ブロック(1910)と完全方向性ブロック(1933)のRMS誤差が最小であるため、方向(1923)は、ブロック(1910)のパターンに最も一致する方向である。
【0156】
ブロックの方向が識別された後、非線形ローパス方向性フィルタを決定することができる。例えば、非線形ローパス方向性フィルタのフィルタタップを識別された方向に沿って位置合わせして、方向性エッジ又はパターンを維持しながらリンギングを低減することができる。しかしながら、一部の例では、方向性フィルタリングのみは、リンギングを十分に低減できない場合がある。一例では、追加のフィルタタップは、識別された方向に沿って存在しない画素にも使用される。ブレのリスクを低減するために、余分なフィルタタップをより保守的に処理する。このため、CDEFは、一次フィルタタップと二次フィルタタップを含む。一例では、完全な2-D CDEFフィルタは、式(14)のように表すことができる。
【数25】
ここで、Dが減衰パラメータを示し、S
(p)が一次フィルタタップの強度を示し、S
(s)が二次フィルタタップの強度を示し、round(・)がゼロから遠い方向に四捨五入する動作を示し、wがフィルタの重みを示し、f(d,S,D)がフィルタタップされた画素と隣接する各画素との違いに対する制約関数である。一例では、違いが小さい場合、関数f(d,S,D)はDに等しく、これにより、フィルタを線形フィルタのように動作させることができ、違いが大きい場合、関数f(d,S,D)は0に等しく、これにより、フィルタタップを効果的に無視することができる。
【0157】
一部の例では、インループ復元スキームは、デブロッキング動作に加えて、デブロッキング後のビデオコーディングで使用され、一般にノイズ除去とエッジの品質の向上を実現する。一例では、インループ復元スキームは、適切なサイズのタイルごとにフレーム内で切り替え可能である。インループ復元スキームは、分離可能な対称ウィーナーフィルタ、部分空間射影を使用したデュアルセルフガイドフィルタ及び領域変換再帰フィルタに基づく。コンテンツ統計がフレーム内で大幅に変化し得るため、インループ復元スキームは、フレームの様々な領域で様々なスキームをトリガーできる切り替え可能なフレームワーク内に統合される。
【0158】
分離可能な対称ウィーナーフィルタは、インループ復元スキームの1つであり得る。一部の例では、劣化フレーム内のすべての画素は、その周囲のw×wウィンドウ内の画素の非因果的フィルタリングバージョンとして再構成でき、ここで、w=2r+1が整数rに対して奇数である。2Dフィルタタップが列ベクトル化形式のw2×1要素ベクトルFで示される場合、単純なLMMSE最適化により、フィルタパラメータはF=H-1 Mで与えられ、ここで、H=E[XXT]がxの自己共分散で、画素の周りのw×wウィンドウ内のw2サンプルの列ベクトル化バージョンであり、M=E[YXT]が、推定されるxとスカラーソースサンプルyの相互相関である。一例では、エンコーダは、デブロッキングされたフレームとソースの実現からHとMを推定し、得られたフィルタFをデコーダに送信することができる。しかしながら、これは、w2タップの送信にかなりのビットレートコストがかかるだけでなく、分離不可能なフィルタリングによってデコードが非常に複雑になる。一部の実施形態では、Fの性質にいくつかの追加の制約が課せられる。第1の制約について、Fが分離可能に制約されているため、フィルタリングは、分離可能な水平及び垂直方向のw-タップ畳み込みとして実施することができる。第2の制約について、水平フィルタと垂直フィルタのそれぞれは、対称になるように制約される。第3の制約について、水平フィルタ係数と垂直フィルタ係数の両方の合計が1になると想定される。
【0159】
部分空間射影を使用したデュアルセルフガイドフィルタリングは、インループ復元スキームの1つであり得る。ガイド付きフィルタリングは、式(15)で示されるローカル線形モデルを使用して、フィルタリングされていないサンプルxからフィルタリングされた出力yを計算する画像フィルタリング方法であり、
y=Fx+G 式(15)
ここで、FとGが劣化画像とフィルタリングされた画素の近くのガイダンス画像との統計に基づいて決定される。ガイド画像が劣化画像と同じである場合、得られたセルフガイドフィルタリングは、エッジ保存平滑化の効果を有する。一例では、特定の形式のセルフガイドフィルタリングを使用することができる。セルフガイドフィルタリングの特定の形式は、半径rとノイズパラメータeの2つのパラメータに依存し、以下のようなステップ1~3が列挙される。
1.すべての画素の周りの(2r+1)×(2r+1)ウィンドウに画素の平均μと分散σ2を取得する。このステップは、インテグラルイメージングに基づくボックスフィルタリングを使用して効率的に実施することができる。
2.f=σ2/(σ2+e)、g=(1-f)μというすべての画素について計算する。
3.使用のためにすべての画素のFとGを画素の周囲の3×3ウィンドウのf値とg値の平均値として計算する。
【0160】
セルフガイドフィルタの特定の形式は、rとeによって制御され、ここで、rが高いほど空間分散が高く、eが高いほど範囲分散が高い。
【0161】
図20は、一部の例における部分空間射影を説明する例を示す。
図20に示すように、復元X
1、X
2がいずれもソースYに近接しなくても、適切な乗数{α、β}は、ある程度正しい方向に移動している限り、ソースYにはるかに近づけることができる。
【0162】
一部の例(例えば、HEVC)では、サンプル適応オフセット(SAO)と呼ばれるフィルタリング方法を使用することができる。一部の例では、デブロッキングフィルタ後にSAOを再構成信号に適用する。SAOは、スライスヘッダで指定されたオフセット値を使用することができる。一部の例では、ルマサンプルの場合、エンコーダは、スライスにSAOを適用(有効化)するかどうかを決定することができる。SAOが有効になっている場合、現在のピクチャでは、コーディングユニットを4つのサブ領域に再帰的に分割することを可能にし、各サブ領域は、サブ領域の機能に基づいて複数のSAOタイプからSAOタイプを選択することができる。
【0163】
図21は、本開示の一実施形態に係る複数のSAOタイプの表(2100)を示す。表(2100)には、SAOタイプ0~6が示される。なお、SAOタイプ0は、SAOアプリケーションがないことを示すために使用される。さらに、SAOタイプ1~SAOタイプ6の各SAOタイプには、複数のカテゴリが含まれる。SAOは、サブ領域の再構成された画素をカテゴリに分類し、サブ領域の各カテゴリの画素にオフセットを追加することで歪みを減らすことができる。一部の例では、エッジ特性は、SAOタイプ1~4の画素分類に使用でき、画素強度は、SAOタイプ5~6の画素分類に使用できる。
【0164】
具体的には、SAOタイプ5~6などの実施形態では、バンドオフセット(BO)を使用して、サブ領域のすべての画素を複数のバンドに分類することができる。複数のバンドにおける各バンドには、同じ強度インターバルの画素が含まれる。一部の例では、強度範囲は、ゼロから最大強度値までの32個のインターバル(例えば、8ビット画素の場合での255)などの複数のインターバルに均等に分割され、各インターバルがオフセットに関連付けられる。さらに、一例では、32個のバンドは、第1のグループと第2のグループなどの2つのグループに分割される。第1のグループには中央の16個のバンド(例えば、強度範囲の中央にある16個のインターバル)が含まれ、第2のグループには残りの16個のバンド(例えば、強度範囲の低い側にある8つのインターバルと強度範囲の高い側にある8つのインターバル)が含まれる。一例では、2つのグループのうちの1つのオフセットのみが送信される。一部の実施形態では、BOの画素分類動作が使用される場合、各画素の5つの最上位ビットをバンドインデックスとして直接使用することができる。
【0165】
さらに、SAOタイプ1~4などの実施形態では、エッジオフセット(EO)は、画素分類及びオフセット決定のために使用することができる。例えば、画素分類は、エッジの方向情報を考慮して、1次元の3画素パターンに基づいて決定することができる。
【0166】
図22は、一部の例における、エッジオフセットにおける画素分類のための3画素パターンの例を示す。
図22の例では、(3つの灰色の画素によって示される)第1のパターン(2210)は、0度パターンと呼ばれ(水平方向が0度パターンに関連付けられる)、(3つの灰色の画素で示される)第2のパターン(2220)は、90度パターンと呼ばれ(垂直方向が90度パターンに関連付けられる)、(3つの灰色の画素で示される)第3のパターン(2230)は、135度パターンと呼ばれ(135度の対角方向が135度のパターンに関連付けられる)、(3つの灰色の画素で示される)第4のパターン(2240)は、45度パターンと呼ばれる(45度の対角方向が45度のパターンに関連付けられる)。一例では、サブ領域のエッジの方向情報を考慮して、
図22に示される4つの方向性パターンのうちの1つを選択することができる。選択は、例のサイド情報として、コーディングされたビデオビットストリームで送信することができる。次に、サブ領域内の画素は、各画素を、方向性パターンに関連付けられた方向にある2つの隣接する画素と比較することにより、複数のカテゴリに分類することができる。
【0167】
図23は、一部の例におけるエッジオフセットのための画素分類規則の表(2300)を示す。具体的には、(
図22の各パターンにも示される)画素cは、(
図22の各パターンにも灰色で示される)2つの隣接する画素と比較し、
図23に示される画素分類規則による比較に基づいて、カテゴリ0~4のうちの1つに分類することができる。
【0168】
一部の実施形態では、デコーダ側のSAOは、最大コーディングユニット(LCU)(例えば、CTU)とは独立して動作することができ、その結果、ラインバッファを節約することができる。一部の例では、90度、135度及び45度の分類パターンが選択された場合、各LCUの上行と下行の画素は、SAOで処理されず、0度、135度及び45度のパターンが選択された場合、各LCUの最も左端と最も右端の列の画素は、SAOで処理されない。
【0169】
図24は、パラメータが隣接するCTUからマージされない場合に、CTUのためにシグナリングされる必要がある可能性がある構文の例(2400)を示す。例えば、シンタックス要素sao_type_idx[cldx][rx][ry]は、サブ領域のSAOタイプを示すようにシグナリングすることができる。SAOタイプは、BO(バンドオフセット)又はEO(エッジオフセット)であってもよい。sao_type_idx[cldx][rx][ry]の値が0である場合、SAOがオフであることを示し、値1~4は、0°、90°、135°及び45°に対応する4つのEOカテゴリのうちの1つが使用されることを示し、値5は、BOが使用されることを示す。
図24の例では、BO及びEOタイプのそれぞれは、シグナリングされた4つのSAOオフセット値(sao_offset[cIdx][rx][ry][0]~sao_offset[cIdx][rx][ry][3])を有する。
【0170】
図24に示すように、SAOは、SAOフィルタリングを実行するために必要とされるすべての関連情報を示すために追加のシグナリングオーバヘッドを必要とするフィルタリングプロセスであり、該SAOフィルタリングが、
図24に示すように、SAOの可能性を制限してもよい。
【0171】
一般に、フィルタリングプロセスは、第1の色成分の再構成されたサンプルを入力(例えば、Y若しくはCb若しくはCr、又はR若しくはG若しくはB)として使用して出力を生成し、フィルタリングプロセスの出力は、第1の色成分と同じであり得るか又は第1の色成分とは異なる別の色成分であり得る第2の色成分に適用される。
【0172】
交差成分フィルタリング(CCF)の関連する例では、いくつかの数式に基づいてフィルタ係数を導出する。導出されたフィルタ係数は、エンコーダ側からデコーダ側にシグナリングされ、線形結合を使用してオフセットを生成するために使用される。次に、生成されたオフセットを、フィルタリングプロセスとして再構成されたサンプルに追加する。例えば、フィルタリング係数とルマサンプルの線形結合に基づいてオフセットを生成し、生成されたオフセットを再構成されたクロマサンプルに追加する。CCFの関連する例は、再構成されたルマサンプル値と、元のクロマサンプルと再構成されたクロマサンプルの間のデルタ値との間の線形マッピング関係の仮定に基づく。しかしながら、再構成されたルマサンプル値と、元のクロマサンプルと再構成されたクロマサンプルの間のデルタ値との間のマッピングは、必ずしも線形マッピングプロセスに従うとは限らないため、CCFのコーディング性能は、線形マッピング関係の仮定の下で制限される可能性がある。
【0173】
一部の例では、非線形マッピング技法は、重大なシグナリングオーバヘッドなしに、交差成分フィルタリング及び/又は同じ色成分フィルタリングに使用することができる。一例では、非線形マッピング技法を交差成分フィルタリングに使用して、交差成分サンプルオフセットを生成することができる。別の例では、非線形マッピング技法を同じ色成分フィルタリングに使用して、ローカルサンプルオフセットを生成することができる。
【0174】
便宜上、非線形マッピング技法を使用するフィルタリングプロセスは、非線形マッピングによるサンプルオフセット(SO-NLM)と呼ばれ得る。交差成分フィルタリングプロセスにおけるSO-NLMは、交差成分サンプルオフセット(CCSO)と呼ばれ得る。同じ色成分フィルタリングプロセスにおけるSO-NLMは、ローカルサンプルオフセット(LSO)と呼ばれ得る。
【0175】
一例では、CCSOとLSOをループフィルタリングとして使用して、再構成されたサンプルの歪みを減らすことができる。CCSOとLSOは、関連するCCFの例に使用されている線形マッピングの仮定に依存しない。例えば、CCSOは、再構成されたルマサンプル値と、元のクロマサンプルと再構成されたクロマサンプルの間のデルタ値との間の線形マッピング関係の仮定に依存しない。同様に、LSOは、色成分の再構成されたサンプル値と、色成分の元のサンプルと色成分の再構成されたサンプルの間のデルタ値との間の線形マッピング関係の仮定に依存しない。
【0176】
以下の説明では、第1の色成分の再構成されたサンプルを入力(例えば、Y若しくはCb若しくはCr、又はR若しくはG若しくはB)として使用して出力を生成するSO-NLMフィルタリングプロセスについて説明し、フィルタリングプロセスの出力を第2の色成分に適用する。第2の色成分が第1の色成分と同じ色成分である場合、該説明は、LSOに適用され、第2の色成分が第1の色成分と異なる場合、該説明は、CCSOに適用される。
【0177】
SO-NLMでは、エンコーダ側で非線形マッピングが導出される。非線形マッピングは、フィルタサポート領域の第1の色成分の再構成されたサンプルと、フィルタサポート領域の第2の色成分に追加されるオフセットとの間にある。第2の色成分が第1の色成分と同じである場合、LSOでは非線形マッピングを使用し、第2の色成分が第1の色成分と異なる場合、CCSOでは非線形マッピングを使用する。非線形マッピングのドメインは、処理された入力再構成サンプルの異なる組み合わせ(可能な再構成サンプル値の組み合わせとも呼ばれる)によって決定される。
【0178】
SO-NLM技法は、特定の例を使用して説明することができる。特定の例では、フィルタサポートエリア(「フィルタサポート領域」とも呼ばれる)にある第1の色成分からの再構成されたサンプルが決定される。フィルタサポートエリアは、フィルタを適用できるエリアであり、フィルタサポートエリアは、任意の適切な形状を有することができる。
【0179】
図25は、本開示の一部の実施形態に係るフィルタサポートエリア(2500)の例を示す。フィルタサポートエリア(2500)には、第1の色成分のP0、P1、P2及びP3の4つの再構成されたサンプルが含まれる。
図25の例では、4つの再構成されたサンプルは、垂直方向及び水平方向に沿って十字形を形成することができ、十字形の中央位置が、フィルタリングされるサンプルの位置である。中央位置にある、P0~P3と同じ色成分のサンプルをCで示す。中央位置にある第2の色成分のサンプルをFで示す。第2の色成分は、P0~P3の第1の色成分と同じであり得るか、又はP0~P3の第1の色成分とは異なり得る。
【0180】
図26は、本開示の一部の実施形態に係る別のフィルタサポートエリア(2600)の例を示す。フィルタサポートエリア(2600)は、正方形を形成する第1の色成分の4つの再構成されたサンプルP0、P1、P2及びP3を含む。
図26の例では、正方形の中央位置は、フィルタリングされるサンプルの位置である。中央位置にある、P0~P3と同じ色成分のサンプルをCで示す。中央位置にある第2の色成分のサンプルをFで示す。第2の色成分は、P0~P3の第1の色成分と同じであり得るか、又はP0~P3の第1の色成分とは異なり得る。
【0181】
そして、再構成されたサンプルを適切に処理して、フィルタタップを形成する。特定の例では、再構成されたサンプルを次の2つのステップで処理する。
【0182】
ステップ1では、P0~P3とCとの間のデルタ値をそれぞれ計算する。例えば、m0がP0からCまでのデルタ値を示し、m1がP1からCまでのデルタ値を示し、m2がP2からCまでのデルタ値を示し、m3がP3からCまでのデルタ値を示す。
【0183】
ステップ2では、デルタ値m0~m3をさらに量子化し、量子化値をd0、d1、d2、d3として示す。一例では、量子化値は、量子化プロセスに基づく-1、0、1のうちの1つであり得る。例えば、値mは、mが-N(Nが正の値であり、量子化ステップサイズと呼ばれる)より小さい場合、-1に量子化でき、mが[-N、N]の範囲にある場合、0に量子化でき、mがNより大きい場合、1に量子化できる。一部の例では、量子化ステップサイズNは、4、8、12、16などのうちの1つであり得る。
【0184】
一部の実施形態では、量子化値d0~d3は、フィルタタップであり、フィルタドメイン内の1つの組み合わせを識別するために使用することができる。例えば、フィルタタップd0~d3は、フィルタドメインに組み合わせを形成することができる。各フィルタタップが3つの量子化値を有することができるため、4つのフィルタタップが使用される場合、フィルタドメインには81(3×3×3×3)個の組み合わせが含まれる。
【0185】
図27A~27Cは、本開示の一実施形態に係る81個の組み合わせを有する表(2700)を示す。表(2700)には、81個の組み合わせに対応する81の行が含まれる。組み合わせに対応する各行では、第1の列には、組み合わせのインデックスが含まれ、第2の列には、組み合わせに対するフィルタタップd0の値が含まれ、第3の列には、組み合わせに対するフィルタタップd1の値が含まれ、第4の列には、組み合わせに対するフィルタタップd2の値が含まれ、第5の列には、組み合わせに対するフィルタタップd3の値が含まれ、第6列には、非線形マッピングに対する組み合わせに関連付けられたオフセット値が含まれる。一例では、フィルタタップd0~d3が決定された場合、d0~d3の組み合わせに関連付けられた(sで示される)オフセット値は、表(2700)に従って決定することができる。一例では、オフセット値s0~s80は、0、1、-1、3、-3、5、-5、-7などの整数である。
【0186】
一部の実施形態では、SO-NLMの最終フィルタリングプロセスは、式(16)に示すように適用することができる。
【数26】
ここで、Fが、フィルタリングされる第2の色成分の再構成されたサンプルであり、sが、表(2700)を使用するなど、第1の色成分の再構成されたサンプルの結果を処理するフィルタタップに従って決定されたオフセット値である。再構成されたサンプルFとオフセット値sの合計は、さらにビット深度に関連付けられた範囲にクリップされて、第2の色成分のフィルタリングされた最終的なサンプルf’を決定する。
【0187】
なお、LSOの場合、上記説明における第2の色成分は、第1の色成分と同じであり、CCSOの場合、上記説明における第2の色成分は、第1の色成分とは異なり得る。
【0188】
なお、上記説明は、本開示の他の実施形態に対して調整することができる。
【0189】
一部の例では、エンコーダ側で、エンコード装置は、フィルタサポート領域内の第1の色成分の再構成されたサンプルと、第2の色成分の再構成されたサンプルに追加されるオフセットとの間のマッピングを導出することができる。マッピングは、任意の適切な線形又は非線形マッピングであり得る。次に、マッピングに基づいて、エンコーダ側及び/又はデコーダ側にフィルタリングプロセスを適用することができる。例えば、マッピングは、デコーダに適切に通知され(例えば、マッピングは、エンコーダ側からデコーダ側に送信されるコーディングされたビデオビットストリームに含まれる)、その後、デコーダは、マッピングに基づいてフィルタリングプロセスを実行することができる。
【0190】
一部の例では、半分離区分(SDP)と呼ばれる技法を使用することができる。一例では、SDP技法のうちの1つは、半分離ツリー(SDT)を使用する。SDT技法は、セミセパレートツリー(SST)又はクロマ成分に対する柔軟なブロック区分とも呼ばれる。SDT技術では、(AOMedia Video 1(AV1)で定義されるものなどの)スーパーブロック(SB)又は(HEVCで定義されるものなどの)CTUにおけるルマブロックとクロマブロックは、同じ又は異なるブロック区分を有してもよく、ブロック区分がコーディングされたルマブロックサイズ又はルマツリー深度に依存し得る。一例では、ルマブロックエリアサイズが第1の閾値T1より大きいか、又はルマブロックのコーディングツリー分割深度が第2の閾値T2以下である場合、クロマブロックは、ルマと同じコーディングツリー構造を使用する。そうでない場合、ルマブロックエリアサイズがT1以下であるか、又はルマ分割深度がT2より大きい場合、対応するクロマブロックは、ルマ成分とは異なるコーディングブロック区分を有することができ、該コーディングブロック区分は、クロマ成分に対する柔軟なブロック区分と呼ばれる。上記の例では、T1は、128又は256などの正の整数であり、T2は、1又は2などの正の整数である。
【0191】
図28は、ルマ及びクロマ成分のコーディングツリー構造の例を示す。
図28は、スーパーブロック内のルマ成分の第1の区分構造(2810)と、スーパーブロック内のクロマ成分の第2の区分構造(2850)とを示す。なお、
図28では4:2:0クロマサブサンプリングスキームが使用されているが、他のクロマサブサンプリング方式が使用されている場合、
図28は、適切に変更することができる。
図28では、ブロック内のD1は、ブロックのコーディングツリー分割深度が1であることを示し、ブロック内のD2は、ブロックのコーディングツリー分割深度が2であることを示し、ブロック内のD3は、ブロックのコーディングツリー分割深度が3であることを示す。
【0192】
図28の例では、T2は、1に設定される。したがって、第1の区分構造(2810)及び第2の区分構造(2850)は、コーディングツリー分割深度が1に等しい場合、同じブロック区分構造を有する。例えば、スーパーブロックのルマブロックエリアは、四分木(QT)区分に従って(2811)~(2814)に区分され(例えば、大きな正方形のブロックは同じサイズの4つの小さな正方形のブロックに分割され)、対応するクロマブロックエリアは、QT区分に従って(2851)~(2854)に区分される。
【0193】
コーディングツリー分割深度がT2より大きい場合、ルマブロックエリアと対応するクロマブロックエリアは、異なるコーディングブロック区分構造を有することができる。例えば、ルマブロックエリア(2813)は、垂直二分木(BT)区分を使用して(2821)と(2822)に区分され(例えば、大きなブロックは垂直線によって同じサイズの2つの小さなブロックに分割され)、対応するクロマブロックエリア(2853)は、QT区分を使用して(2861)~(2864)に区分される。
【0194】
さらに、別のSDP技法では、ルマ及びクロマ成分は、スーパーブロックのルートノードからの部分的なツリー構造を共有する場合があり、ルマとクロマが別々のツリー区分を開始する条件は、ルマ成分の区分情報又はビットストリームからの高レベルの構文に依存する。
【0195】
インター予測及びイントラ予測には、ブロックベースの補償を使用することができる。インター予測では、異なるピクチャからのブロックベースの補償は、動き補償として知られている。ブロックベースの補償は、同じピクチャ内の以前に再構成されたエリアから実行することもできる。同じピクチャ内の再構成されたエリアからのブロックベースの補償は、イントラピクチャブロック補償、現在のピクチャ参照(CPR)又はイントラブロックコピー(IntraBC)と呼ばれる。同じピクチャにおける現在のブロックと参照ブロックとの間のオフセットを示す変位ベクトルは、現在のブロックが参照ブロックに基づいてエンコード/デコードすることができるブロックベクトル(BV)と呼ばれる。任意の値(x又はy方向のいずれかで正又は負)になり得る動き補償における動きベクトルと異なるBVは、参照ブロックが使用可能であり、かつ再構成されていることを確認するためのいくつかの制約を有する。また、一部の例では、並列処理を考慮して、タイル境界、スライス境界又は波面ラダー形状境界であるいくつかの参照エリアが除外される。
【0196】
ブロックベクトル(BV)は、予測子ブロックの位置を指定するようにコーディングすることができる。ブロックベクトルのコーディングは、明示的であっても、暗黙的であってもよい。明示的モードでは、ブロックベクトルとブロックベクトルの予測子(ブロックベクトル予測子とも呼ばれる)との間のBV差がシグナリングされる。暗黙的モードでは、ブロックベクトルは、マージモードでの動きベクトルと同様に、BV差を使用せずにブロックベクトルの予測子(ブロックベクトル予測子と呼ばれる)から復元される。明示的モードは、非マージBV予測モードと呼ばれ得る。暗黙的モードは、マージBV予測モードと呼ばれ得る。
【0197】
いくつかの実施形態では、ブロックベクトルの解像度は、整数位置に制限される。他の実施では、ブロックベクトルは、分数位置へ指すことが許容される。
【0198】
一部の例では、現在のブロックについて、まず、現在のブロックがイントラBCモードにあるかどうかを示すフラグ(例えば、IntraBCフラグ)は、コーディングされたビデオビットストリームに送信される。次に、現在のブロックがイントラBCモードにある場合、BV差(例えば、diff)は、現在のBVから参照BV(例えば、ブロックベクトル予測子)を差し引くことによって取得され、diffは、diffの水平成分と垂直成分に応じて4つのタイプに分類される。タイプ情報をビットストリームに送信する必要があり、その後、タイプ情報に基づいて2つの成分のdiff値をシグナリングしてもよい。
【0199】
本開示の一態様では、イントラBCモードでは、インループフィルタリングを適用する前に、現在のピクチャ内の再構成されたサンプルから予測子ブロックを形成し、インター予測モードでは、インループフィルタリングを適用した後、他のピクチャの再構成されたサンプルから予測ブロックを形成する。イントラBCモードでループフィルタが無効になっている場合、再構成されたサンプルのピクチャバッファをイントラBCモードとインター予測モードとの間で共有でき、ハードウェア設計を簡素化することができる。
【0200】
一部の例(例えば、AOMedia Video 1(AV1))では、イントラBCモードが有効になっている場合、イントラBCモードは、ルマ及びクロマ成分の両方に対して有効になり、すべてのループフィルタは、ルマ及びクロマ成分の両方に対して無効になる。ループフィルタは、デブロッキングフィルタ、制約付き方向強調フィルタ(CDEF)、ループ復元(LR)フィルタなどを含むことができる。しかしながら、一部の例では、SDPがオンになっている場合、イントラBCモードは、ルマ成分などの1つの色成分に対して有効になるが、クロマ成分などの別の色成分に対して無効になる場合がある。本開示の一部の態様によれば、ループフィルタを異なる色成分に対して有効化又は無効化することができ、かついくつかの色成分にループフィルタを使用することにより、より良い画質を達成することができる。例えば、イントラBCモードがルマ成分のみに対して有効になっている場合、ルマ成分とクロマ成分に対して異なる方法でループフィルタを有効化/無効化してもよい。例えば、ルマ成分に対するイントラBCモードの有効化に応じて、ルマ成分に対してループフィルタを有効化し、クロマ成分に対するイントラBCモードの無効化に応じて、クロマ成分に対してループフィルタを無効化してもよい。したがって、ルマ成分に対してループフィルタを無効化することにより、ピクチャバッファをイントラBCモードとインター予測モードとの間で共有でき、クロマ成分にループフィルタを使用することにより、より良い画質を達成することができる。
【0201】
以下の説明では、インループフィルタリングで使用されるフィルタは(イン)ループフィルタと呼ばれ、アクセス可能な1つのフレーム/スライス/タイル内の再構成されたサンプルでそれぞれ動作するフィルタのいずれかを含むことができる。(イン)ループフィルタは、デブロッキング(DB)フィルタ、CDEFフィルタ、ループ復元フィルタ、CCSOフィルタ、LSOフィルタなどを含むが、これらに限定されない。
【0202】
本開示の一部の態様によれば、イントラBCモードがルマ成分に対して有効になっているが、クロマ成分に対して無効になっている場合、少なくとも1つの(イン)ループフィルタがクロマ成分に使用されることを許可する。
【0203】
一部の実施形態では、イントラBCモードがルマ成分に対して有効になっているが、クロマ成分に対して無効になっている場合、すべての(イン)ループフィルタがクロマ成分に使用されることを許可する。一例では、イントラBCモードがルマ成分に対して有効になっているが、クロマ成分に対して無効になっている場合、DBフィルタ、CDEFフィルタ、LRフィルタ、CCSOフィルタ及びLSOフィルタがすべてクロマ成分に使用されることを許可する。
【0204】
一部の実施形態では、イントラBCモードがルマ成分に対して有効になっているが、クロマ成分に対して無効になっている場合、CCSOフィルタ又はLSOフィルタがクロマ成分に使用されることを許可する。
【0205】
一実施形態では、イントラBCモードがルマ成分に対して有効になっているが、クロマ成分に対して無効になっている場合、CCSOフィルタ及びCDEFフィルタの両方がクロマ成分に使用されることを許可する。
【0206】
一実施形態では、異なる色成分に対するイントラBCモードの有効化/無効化は、ピクチャレベルでそれぞれシグナリングされる。次に、ピクチャレベルでイントラBCモードが色成分に対して無効になっている場合、少なくとも1つのループフィルタがピクチャにおける色成分に使用されることを許可する。
【0207】
一例では、2つの別個のピクチャレベルフラグを使用して、ピクチャレベルでのルマ及びクロマ成分に対するイントラBCモードの有効化/無効化をそれぞれ示す。例えば、第1のフラグ「cm->features.allow_intrabc_luma」は、ルマ成分(ルマチャネルとも呼ばれる)に対するイントラBCモードの有効化/無効化を示すために使用され、第2のフラグ「cm->features.allow_intrabc_chroma」は、クロマ成分(クロマチャネルとも呼ばれる)に対するイントラBCモードの有効化/無効化を示すために使用される。第1のフラグ「cm->features.allow_intrabc_luma」がオン(例えば、値が「1」である)にあり、第2のフラグ「cm->features.allow_intrabc_chroma」がオフ(例えば、値が「0」である)にある場合、少なくとも1つのループフィルタがクロマ成分に使用されることを許可する。
【0208】
別の例では、3つの別個のピクチャレベルフラグを使用して、Y/Cb/Cr成分に対するイントラBCモードの有効化/無効化をそれぞれ示す。例えば、第1のフラグ「cm->features.allow_intrabc_y」は、Y成分(ルマ成分とも呼ばれる)に対するイントラBCモードの有効化/無効化を示すために使用され、第2のフラグ「cm->features.allow_intrabc_cb」は、Cb成分(第1のクロマ成分とも呼ばれる)に対するイントラBCモードの有効化/無効化を示すために使用され、第3のフラグ「cm->features.allow_intrabc_cr」は、Cr成分(第2のクロマ成分とも呼ばれる)に対するイントラBCモードの有効化/無効化を示すために使用される。例えば、第1のフラグ「cm->features.allow_intrabc_y」がオンにあり(例えば、値が「1」である場合)、第2のフラグ「cm->features.allow_intrabc_cb」及び第3のフラグ「cm->features.allow_intrabc_cr」がオフにある(値がそれぞれ「0」である)場合、少なくとも1つのループフィルタがCb成分とCr成分に使用されることを許可する。
【0209】
一実施形態では、ルマ及びクロマ成分の両方に対してイントラBCモードがオンになる場合、ルマブロックと関連するクロマブロックとは、同じブロックベクトル(BV)を共有し、一部の例では、ルマブロックとクロマブロックとに対してループフィルタが無効になる。
【0210】
一部の例では、1つの色成分(例えば、Y、Cb、Cr)に(イン)ループフィルタを適用するかどうかの条件は、上記色成分に対するイントラBCモードの有効化/無効化を示すフラグに依存する。一例では、フラグが色成分(例えば、Y、Cb、Cr)に対するイントラBCモードの無効化を示す場合、(イン)ループフィルタを色成分に適用でき、フラグが色成分(Y、Cb、Crなど)に対するイントラBCモードの有効化を示す場合、(イン)ループフィルタを色成分に対して無効化する。
【0211】
一部の例では、1つの色チャネル(ルマ/クロマ)に(イン)ループフィルタを適用するかどうかの条件は、上記色チャネルに対するイントラBCモードの有効化/無効化を示すフラグに依存する。一例では、フラグが色チャネル(例えば、ルマ又はクロマ)に対するイントラBCモードの無効化を示す場合、(イン)ループフィルタを色チャネルに適用でき、フラグが色チャネル(例えば、ルマ又はクロマ)に対するイントラBCモードの有効化を示す場合、(イン)ループフィルタを色チャネルに対して無効化する。
【0212】
一部の実施形態では、異なる色成分に対するイントラBCモードの有効化/無効化は、ブロックレベルでそれぞれシグナリングされる。次に、ブロックレベルでイントラBCモードが色成分に対して無効になっている場合、少なくとも1つのループフィルタが色成分における現在のブロックに使用されることを許可する。ブロックは、予測ブロック、コーディングブロック又はコーディングユニット、つまり、CU、CTUブロック、スーパーブロック又はフィルタリングユニット(FU)として解釈されてもよい。
【0213】
一例では、2つの別個のブロックレベルフラグを使用して、ブロックレベルでのルマ及びクロマ成分に対するイントラBCモードの有効化/無効化をそれぞれ示す。例えば、第1のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_luma」は、ブロックレベルでのルマ成分に対するイントラBCモードの有効化/無効化を示すために使用され、第2のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_chroma」は、ブロックレベルでのクロマ成分に対するイントラBCモードの有効化/無効化を示すために使用される。例えば、第1のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_luma」がオン(例えば、値が「1」である)にあり、第2のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_chroma」がオフ(例えば、値が「0」である)にある場合、少なくとも1つのループフィルタが現在のクロマブロックに使用されることを許可する。
【0214】
別の例では、3つの別個のブロックレベルフラグを使用して、Y/Cb/Crブロックに対するイントラBCモードの有効化/無効化をそれぞれ示す。例えば、第1のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_y」は、Yブロックに対するイントラBCモードの有効化/無効化を示すために使用され、第2のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_cb」は、Cbブロックに対するイントラBCモードの有効化/無効化を示すために使用され、第3のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_cr」は、Crブロックに対するイントラBCモードの有効化/無効化を示すために使用される。例えば、第1のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_y」がオン(例えば、値が「1」である)にあり、第2のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_cb」及び第3のフラグ「mi_params->mi_grid_base[x]->allow_intrabc_cr」がオフ(例えば、値がそれぞれ「0」である)にある場合、少なくとも1つのループフィルタが現在のCbブロックと現在のCrブロックに使用されることを許可する。
【0215】
別の実施形態では、イントラBCモードの有効化/無効化は、適応パラメータセット(APS)、スライスヘッダ、フレームヘッダ、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)などの高レベル構文(HLS)でシグナリングすることができる。
【0216】
一部の実施形態では、イントラBCモードが適用される場合、DBフィルタ、CDEFフィルタ、LRフィルタ、CCSOフィルタ、LSOフィルタなどの特定のループフィルタを適用できるかどうかは、HLSでシグナリングされる別のフラグ(APS、スライスヘッダ、フレームヘッダ、PPS、SPS、VPS)に依存する。一実施形態では、フラグ「slice_force_cdef_flag_luma」は、CDEFフィルタのスライスヘッダでシグナリングされる。一例では、フラグ「slice_force_cdef_flag_luma」がスライスのスライスヘッダで真としてシグナリングされる場合(例えば、値が「1」である場合)、イントラBCモードが有効になっているかどうかに関係なく、CDEFフィルタをスライス内のルマ成分に適用している。別の例では、フラグ「slice_force_cdef_flag_luma」がスライスのスライスヘッダで偽としてシグナリングされる場合(例えば、値が「0」である場合)、スライス内のルマ成分にCDEFフィルタを適用するかどうかは、イントラBCモードが有効になっているかどうかに依存する。
【0217】
一部の実施形態では、イントラBCモードが現在のフレーム/スライス/タイルに対して有効になっていることを許可するかどうかに関係なく、少なくとも1つの(イン)ループフィルタがクロマ成分に使用されることを許可する。
【0218】
一部の実施形態では、イントラBCモードが現在のフレーム/スライス/タイルに対して有効になっているかどうかに関係なく、すべての(イン)ループフィルタがクロマ成分に使用されることを許可する。
【0219】
別の実施形態では、イントラBCモードが現在のフレーム/スライス/タイルに対して有効になっているかどうかに関係なく、CCSOフィルタ又はLSOフィルタ又はCDEFフィルタがクロマ成分に使用されることを許可する。
【0220】
本開示の一部の態様によれば、SDPを使用して、ループフィルタの有効化/無効化を決定することができる。SDPが適用される場合、少なくとも1つの(イン)ループフィルタがクロマ成分に使用されることを許可する。
【0221】
一部の実施形態では、SDPが適用される場合、すべての(イン)ループフィルタがクロマ成分に使用されることを許可する。一例では、SDPが適用される場合、DBフィトラ、CDEFフィルタ、LRフィルタ、CCSOフィルタ及びLSOフィルタがすべてクロマ成分に使用されることを許可する。
【0222】
一部の実施形態では、SDPが適用される場合、CCSOフィルタ又はLSOフィルタがクロマ成分に使用されることを許可する。
【0223】
一実施形態では、SDPが適用される場合、SCSOフィルタ及びCDEFフィルタの両方がクロマ成分に使用されることを許可する。
【0224】
図29は、本開示の一実施形態に係る、プロセス(2900)を概説するフローチャートを示す。プロセス(2900)は、コーディングされたビデオシーケンスのピクチャ内のブロックを再構成するために使用することができる。ブロックという用語は、予測ブロック、コーディングユニット、ルマブロック、クロマブロックなどとして解釈することができる。様々な実施形態では、プロセス(2900)は、端末装置(310)、(320)、(330)及び(340)における処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。一部の実施形態では、プロセス(2900)はソフトウェア命令で実施されるため、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(2900)を実行する。プロセスは、(S2901)から開始し、(S2910)に進む。
【0225】
(S2910)では、コーディングされたビデオビットストリーム内のデコードされた情報に基づいて、ブロックの第1の色成分及び第2の色成分の分離されたコーディング情報を決定する。一部の例では、分離されたコーディング情報は、ルマ成分とクロマ成分のブロック内コピーモードの有効化/無効化の違いを含む。例えば、ブロック内コピーモードは、ルマ成分に対して有効になっており、クロマ成分に対して無効になっている。一部の例では、分離されたコーディング情報は、ルマ成分とクロマ成分の分離された区分構造を含む。一例では、SDPが適用されるため、ルマ成分とクロマ成分は、ブロック内で異なる区分構造を有する。
【0226】
一部の実施形態では、ブロックレベル、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、適応パラメータセット(APS)、スライスヘッダ及びタイルヘッダのうちの少なくとも1つの第1の色成分及び第2の色成分のそれぞれの有効化/無効化信号に基づいて、ブロック内の第1の色成分及び第2の色成分の分離されたコーディング情報を決定する。
【0227】
一部の例では、コーディングされたビデオビットストリームからルマ成分に関連付けられた第1の有効化/無効化フラグをデコードし、コーディングされたビデオビットストリームからクロマ成分に関連付けられた第2の有効化/無効化フラグをデコードする。第1の有効化/無効化フラグ及び第2の有効化/無効化フラグに基づいて、ルマ成分及びクロマ成分の分離されたコーディング情報を決定する。
【0228】
一部の例では、コーディングされたビデオビットストリームからルマ成分に関連付けられた第1の有効化/無効化フラグをデコードし、コーディングされたビデオビットストリームから第1のクロマ成分に関連付けられた第2の有効化/無効化フラグをデコードし、コーディングされたビデオビットストリームから第2のクロマ成分に関連付けられた第3の有効化/無効化フラグをデコードする。次に、第1の有効化/無効化フラグ、第2の有効化/無効化フラグ及び第3の有効化/無効化フラグに基づいて、ルマ成分、第1のクロマ成分及び第2のクロマ成分の分離されたコーディング情報を決定する。
【0229】
(S2920)では、第1のループフィルタ構成に基づいてブロック内の位置にある第1の色成分の第1のサンプルを再構成し、第2のループフィルタ構成に基づいてブロック内の位置にある第2の色成分の第2のサンプルを再構成する。第1のループフィルタ構成は、第2のループフィルタ構成とは異なる。
【0230】
一部の実施形態では、第1のループフィルタ構成及び第2のループフィルタ構成の一方において、デブロッキングフィルタ、制約付き方向強調フィルタ(CDEF)、ループ復元フィルタ、ローカルサンプルオフセット(LSO)フィルタ及び交差成分サンプルオフセット(CCSO)フィルタのうちの少なくとも1つを有効化し、第1のループフィルタ構成及び第2のループフィルタ構成の他方において、デブロッキングフィルタ、制約付き方向強調フィルタ(CDEF)、ループ復元フィルタ、ローカルサンプルオフセット(LSO)フィルタ及び交差成分サンプルオフセット(CCSO)フィルタのうちの少なくとも1つを無効化する。
【0231】
一実施形態では、クロマ成分のブロック内コピーモードの無効化と、ルマ成分のブロック内コピーモードの有効化とに応じて、クロマ成分に関連付けられた第2のループフィルタ構成において、デブロッキングフィルタ、制約付き方向強調フィルタ(CDEF)、ループ復元フィルタ、ローカルサンプルオフセット(LSO)フィルタ及び交差成分サンプルオフセット(CCSO)フィルタをすべて有効化する。
【0232】
別の実施形態では、クロマ成分のブロック内コピーモードの無効化と、ルマ成分のブロック内コピーモードの有効化とに応じて、クロマ成分に関連付けられた第2のループフィルタ構成において、ローカルサンプルオフセット(LSO)フィルタ及び交差成分サンプルオフセット(CCSO)フィルタを有効化する。
【0233】
別の実施形態では、クロマ成分のブロック内コピーモードの無効化と、ルマ成分のブロック内コピーモードの有効化とに応じて、クロマ成分に関連付けられた第2のループフィルタ構成において、制約付き方向強調フィルタ(CDEF)及び交差成分サンプルオフセット(CCSO)フィルタの両方を有効化する。
【0234】
一部の実施形態では、ブロックより高いレベルのシンタックスから特定のループフィルタに関連付けられたフラグをデコードし、分離されたコーディング情報に関係なく、フラグが真であることに応じて、特定のループフィルタをルマ成分に適用する。
【0235】
プロセス(2900)は、(S2999)に進んで終了する。
【0236】
プロセス(2900)は、適切に適合することができる。プロセス(2900)のステップは、変更及び/又は省略することができる。追加ステップを追加できる。任意の適切な実装順序を使用できる。
【0237】
本開示の実施形態は、別々に使用されるか、又は任意の順序で組み合わされてもよい。さらに、方法(又は実施形態)、エンコーダ及びデコーダのそれぞれは、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実施することができる。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読取可能媒体に記憶されるプログラムを実行する。
【0238】
以上で説明された技法は、コンピュータ読取可能命令を使用するコンピュータソフトウェアとして実行され、1つ以上のコンピュータ読取可能媒体に物理的に記憶することができる。例えば、
図30は、開示する主題の特定の実施形態を実行することに適したコンピュータシステム(3000)を示す。
【0239】
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、又はそのようなメカニズムを施されて、1つ以上のコンピュータ中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)などによって直接、又は解釈、マイクロコード実行などによって実行することができる命令を含むコードを作成する任意の適切な機械コード又はコンピュータ言語を用いてコーディングすることができる。
【0240】
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータ又はその構成要素上で実行することができる。
【0241】
コンピュータシステム(3000)について、
図30に示される構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用又は機能範囲に関する限定を示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(3000)の例示的な実施形態で示される構成要素のうちのいずれか1つ又は組み合わせに関する任意の依存性又は必要性を有するとして解釈されるべきではない。
【0242】
コンピュータシステム(3000)は、特定のヒューマンインタフェース入力デバイスを含んでもよい。このようなヒューマンインタフェース入力デバイスは、例えば触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(音声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(図示せず)を通じて、1人以上の人間ユーザによる入力に応答することができる。ヒューマンインタフェースデバイスは、音声(スピーチ、音楽、環境音など)、画像(スキャンされた画像、静止画像カメラから取得した写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)などの、人間による意識的な入力に必ずしも直接的に関連しない特定の媒体を取り込むために使用することもできる。
【0243】
入力ヒューマンインタフェースデバイスは、キーボード(3001)、マウス(3002)、トラックパッド(3003)、タッチスクリーン(3010)、データグローブ(図示せず)、ジョイスティック(3005)、マイクフォン(3006)、スキャナ(3007)及びカメラ(3008)(それぞれが1つのみ示されている)のうちの1つ以上を含んでもよい。
【0244】
コンピュータシステム(3000)はまた、特定のヒューマンインタフェース出力デバイスを含んでもよい。このようなヒューマンインタフェース出力デバイスは、例えば触覚出力、音、光、及び嗅覚/味覚を通じて、1人以上の人間ユーザの感覚を刺激することができる。このようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(3010)、データグローブ(図示せず)、又はジョイスティック(3005)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスであってもよい)、オーディオ出力デバイス(スピーカ(3009)、ヘッドホン(図示せず)など)、視覚出力デバイス(それぞれがタッチスクリーン入力能力、触覚フィードバック能力の有無にかかわらず、一部が、ステレオグラフィック出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレ及びスモークタンク(図示せず)などの手段を介して、2次元の視覚出力又は3次元以上の出力を出力できるCRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(3010)など)、及びプリンタ(図示せず)を含み得る。
【0245】
コンピュータシステム(3000)はまた、ヒューマンアクセス可能な記憶装置と、それらに関連する媒体、例えば、CD/DVDを有するCD/DVD ROM/RW(3020)若しくは同様な媒体(3021)、サムドライブ(3022)、及びリムーバブルハードドライブ若しくはソリッドステートドライブ(3023)を含む光媒体、テープやフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの専用ROM/ASIC/PLDベースのデバイスなどとを含むことができる。
【0246】
当業者はまた、ここに開示する主題に関連して使用される「コンピュータ読取可能媒体」という用語が、伝送媒体、搬送波、又は他の一時的な信号を含まないことを理解すべきである。
【0247】
コンピュータシステム(3000)は、1つ以上の通信ネットワーク(3055)へのインタフェース(3054)をさらに含むことができる。ネットワークは、例えば、無線、有線、光ネットワークであり得る。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両用及び産業用、リアルタイム、遅延耐性ネットワークなどであり得る。ネットワークの例は、イーサネット及び無線LANなどのローカルエリアネットワークと、GSM、3G、4G、5G、LTEなどを含むセルラーネットワークと、ケーブルTV、衛星TV及び地上波放送TVを含むTV有線又は無線ワイドエリアデジタルネットワークと、CANBusなどを含む車両用及び産業用ネットワークと、を含む。特定のネットワークは、一般に、特定の汎用データポート又は周辺バス(3049)(例えば、コンピュータシステム(3000)のUSBポートなど)に接続された外部ネットワークインタフェースアダプターを必要とする。他のネットワークは、一般に、以下で説明するようにシステムバスに接続することにより、コンピュータシステム(3000)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインタフェース又はスマートフォンコンピュータシステムへのセルラーネットワークインタフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(3000)は、他のエンティティと通信することができる。このような通信は、例えば、ローカル又はワイドエリアデジタルネットワークを使用して、他のコンピュータシステムに対して、単方向の受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、CANbusから特定のCANbusデバイスへ)、又は双方向であってもよい。上記のように、特定のプロトコルとプロトコルスタックをこれらのネットワークとネットワークインタフェースの各々に使用することができる。
【0248】
前述のヒューマンインタフェースデバイス、ヒューマンアクセス可能な記憶装置、及びネットワークインタフェースは、コンピュータシステム(3000)のコア(3040)に接続することができる。
【0249】
コア(3040)は、1つ以上の中央処理装置(CPU)(3041)、グラフィックスプロセッシングユニット(GPU)(3042)、フィールドプログラマブルゲートエリア(FPGA)(3043)の形態での専用プログラマブル処理ユニット、特定のタスクのためのハードウェアアクセラレータ(3044)、グラフィックアダプタ(3050)などを含むことができる。これらのデバイスは、リードオンリメモリ(ROM)(3045)、ランダムアクセスメモリ(3046)、及びユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量記憶装置(3047)と共に、システムバス(3048)を介して接続されてもよい。一部のコンピュータシステムでは、システムバス(3048)は、1つ以上の物理プラグの形態でアクセス可能であり、追加のCPU、GPUなどによる拡張を可能にする。周辺デバイスは、コアのシステムバス(3048)に直接的に接続されてもよく、周辺バス(3049)を介して接続されてもよい。一例では、スクリーン(3010)は、グラフィックアダプタ(3050)に接続することができる。周辺バスのアーキテクチャには、PCI、USBなどを含む。
【0250】
CPU(3041)、GPU(3042)、FPGA(3043)及びアクセラレータ(3044)は、組み合わせて、前述のコンピュータコードを構成できる特定の命令を実行することができる。そのコンピュータコードは、ROM(3045)又はRAM(3046)に記憶することができる。遷移的なデータは、RAM(3046)に記憶することもでき、また恒久的なデータは、例えば内部大容量記憶装置(3047)に記憶することができる。CPU(3041)、GPU(3042)、大容量記憶装置(3047)、ROM(3045)、RAM(3046)などのうちの1つ以上と密接に関連付けることができるキャッシュメモリを使用して、任意のメモリデバイスに対する高速記憶及び検索を可能にすることができる。
【0251】
コンピュータ読取可能媒体には、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構築されたものであってもよく、コンピュータソフトウェア分野の当業者によく知られている利用可能な種類のものであってもよい。
【0252】
限定ではなく、あくまでも一例として、アーキテクチャ(3000)、具体的にはコア(3040)を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が1つ以上の有形のコンピュータ読取可能媒体に具体化されたソフトウェアを実行した結果として機能を提供することができる。このようなコンピュータ読取可能媒体は、コア内部の大容量記憶装置(3047)又はROM(3045)などの、非一時的な性質のコア(3040)の特定の記憶装置以外に、以上に説明したようにユーザがアクセス可能な大容量記憶装置に関連付けられる媒体であってもよい。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶でき、コア(3040)によって実行することができる。コンピュータ読取可能媒体は、特定の需要に応じて、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(3040)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(3046)に記憶されたデータ構造を定義すること、及びソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することを含む、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。加えて又は代替として、コンピュータシステムは、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行するためにソフトウェアの代わりに又はソフトウェアと一緒に動作することができる回路(例えば、アクセラレータ(3044))に配線されるか又は他の方法で具体化されたロジックの結果として機能を提供することができる。ソフトウェアへの参照は、必要に応じて、ロジックを含むことができ、その逆も同様である。コンピュータ読取可能媒体への参照は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、又はその両方を含むことができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを含む。
付録A:頭字語
JEM:joint exploration model(共同探索モデル)
VVC:versatile video coding(多用途ビデオコーディング)
BMS:benchmark set(ベンチマークセット)
MV:Motion Vector(動きベクトル)
HEVC:High Efficiency Video Coding(高効率ビデオコーディング)
MPM:可能性の最も高いモード
WAIP:Wide-Angle Intra Prediction(広角イントラ予測)
SEI:Supplementary Enhancement Information(補助強化情報)
VUI:Video Usability Information(ビデオユーザビリティ情報)
GOP:Groups of Pictures(ピクチャ群)
TU:Transform Unit(変換ユニット)
PU:Prediction Unit(予測ユニット)
CTU:Coding Tree Unit(コーディングツリーユニット)
CTB:Coding Tree Block(コーディングツリーブロック)
PB:Prediction Block(予測ブロック)
HRD:Hypothetical Reference Decoder(仮想リファレンスデコーダ)
SDR:Standard Dynamic Range(標準ダイナミックレンジ)
SNR:Signal Noise Ratio(信号対雑音比)
CPU:Central Processing Unit(中央処理装置)
GPU:Graphics Processing Unit(グラフィック処理装置)
CRT:Cathode Ray Tube(ブラウン管)
LCD:Liquid-Crystal Display(液晶ディスプレイ)
OLED:Organic Light-Emitting Diode(有機発光ダイオード)
CD:Compact Disc(コンパクトディスク)
DVD:Digital Video Disc(デジタルビデオディスク)
ROM:Read-Only Memory(リードオンリメモリ)
RAM:Random Access Memory(ランダムアクセスメモリ)
ASIC:Application-Specific Integrated Circuit(特定用途向け集積回路)
PLD:Programmable Logic Device(プログラマブルロジックデバイス)
LAN:Local Area Network(ローカルエリアネットワーク)
GSM:Global System for Mobile communication(移動通信用グローバルシステム)
LTE:Long-Term Evolution(長期的な進化)
CANBus:Controller Area Network Bus(コントローラエリアネットワークバス)
USB:Universal Serial Bus(ユニバーサルシリアルバス)
PCI:Peripheral Component Interconnect(ペリフェラルコンポーネントインターコネクト)
FPGA:Field Programmable Gate Arrays(フィールド・プログラマブル・ゲート・アレイ)
SSD:Solid-state Drive(ソリッドステートドライブ)
IC:Integrated Circuit(集積回路)
CU:Coding Unit(コーディングユニット)
PDPC: Position Dependent Prediction Combination(位置依存の予測の組み合わせ)
ISP:Intra Sub-Partitions(イントラサブパーティション)
SPS: Sequence Parameter Setting(シーケンスパラメータ設定)
【0253】
本開示は一部の例示的な実施形態を説明してきたが、本開示の範囲内に含まれる変更、置換、及び様々な代替の均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、開示の原理を具体化するため、その精神及び範囲内にある多数のシステム及び方法を考案することができることが理解されたい。
【外国語明細書】