(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-04
(54)【発明の名称】単一参照動きベクトル差分のための適応解像度
(51)【国際特許分類】
H04N 19/70 20140101AFI20240226BHJP
H04N 19/523 20140101ALI20240226BHJP
【FI】
H04N19/70
H04N19/523
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023555700
(86)(22)【出願日】2022-05-31
(85)【翻訳文提出日】2023-09-12
(86)【国際出願番号】 US2022031588
(87)【国際公開番号】W WO2023096668
(87)【国際公開日】2023-06-01
(32)【優先日】2022-05-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-11-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャオ,リアン
(72)【発明者】
【氏名】ジャオ,シン
(72)【発明者】
【氏名】リウ,シャン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LC09
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159NN11
5C159NN14
5C159NN16
5C159NN21
5C159RC12
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
本開示は、ビデオ符号化および復号における動きベクトル差分のための適応解像度のシグナリングに関する。ビデオストリームの1つまたは複数のビデオブロックを復号する例示的な方法が開示される。本方法は、ビデオストリームを受信するステップと、1つまたは複数のビデオブロックについてADAPTMVモードがシグナリングされるかどうかを決定するために、ビデオストリームからインター予測シンタックス要素を抽出するステップであって、ADAPTMVモードは、適応動きベクトル差分(MVD)ピクセル解像度を有する単一参照インター予測モードである、ステップと、ADAPTMVモードがインター予測シンタックス要素中でシグナリングされるかどうかに基づいて、1つまたは複数のビデオブロックに関連付けられた現在のMVDピクセル解像度を決定するステップと、ADAPTMVモードがインター予測シンタックス要素中でシグナリングされるかどうかと、現在のMVDピクセル解像度とに基づいて、1つまたは複数のビデオブロックに関連付けられた1つまたは複数のMVD関連シンタックス要素を抽出および復号するステップとを含み得る。
【特許請求の範囲】
【請求項1】
ビデオストリームの1つまたは複数のビデオブロックを復号するための方法であって、
前記ビデオストリームを受信するステップと、
前記1つまたは複数のビデオブロックについてADAPTMVモードがシグナリングされるかどうかを決定するために、前記ビデオストリームからインター予測シンタックス要素を抽出するステップであって、前記ADAPTMVモードは、適応動きベクトル差分(MVD)ピクセル解像度を有する単一参照インター予測モードである、ステップと、
前記ADAPTMVモードが前記インター予測シンタックス要素中でシグナリングされるかどうかに基づいて、前記1つまたは複数のビデオブロックに関連付けられた現在のMVDピクセル解像度を決定するステップと、
前記ADAPTMVモードが前記インター予測シンタックス要素中でシグナリングされるかどうかに基づいて、および前記現在のMVDピクセル解像度にさらに基づいて、前記1つまたは複数のビデオブロックに関連付けられた1つまたは複数のMVD関連シンタックス要素を抽出および復号するステップと
を含む方法。
【請求項2】
前記インター予測シンタックス要素は、前記1つまたは複数のビデオブロックに関連付けられたインター予測参照フレームインデックスがシグナリングされた後に、前記ビデオストリーム中でシグナリングされる、請求項1に記載の方法。
【請求項3】
前記インター予測シンタックス要素は、以下の単一参照インター予測モード:
前記ADAPTMVモード、
非適応MVDピクセル解像度を有する単一参照インター予測モードであるNEWMVモード、
動きベクトル差分なしに動きベクトルが直接予測される単一参照インター予測モードであるNEARMVモード、および
前記動きベクトルがグローバル動きパラメータのセットを使用して予測される単一参照インター予測モードであるGLOBALMVモード
のうちの1つを示すように構成される、請求項1に記載の方法。
【請求項4】
前記インター予測シンタックス要素内の前記ADAPTMVモードを復号するためのコンテキストは、前記NEWMVモード、前記NEARMVモード、および前記GLOBALMVモードの復号と共有される、請求項3に記載の方法。
【請求項5】
前記方法は、前記ADAPTMVモードが前記インター予測シンタックス要素中でシグナリングされるかどうかに基づいて、前記1つまたは複数のMVD関連シンタックス要素を復号するための1つまたは複数のコンテキストを導出するステップをさらに含む、請求項1に記載の方法。
【請求項6】
前記1つまたは複数のMVD関連シンタックス要素は、
どのMVD成分が非ゼロであるかを示すための第1のMVDシンタックス要素、
MVD符号を指定するための第2のMVDシンタックス要素、
MVD大きさ範囲を指定するための第3のMVDシンタックス要素、
前記MVD大きさ範囲内の整数MVD大きさオフセットを指定するための第4のMVDシンタックス要素、または
MVDピクセル解像度を指定するための第5のMVDシンタックス要素
のうちの少なくとも1つを含む、請求項5に記載の方法。
【請求項7】
前記1つまたは複数のビデオブロックが前記ADAPTMVモードで符号化されるとき、第1のコンテキストが、前記第1のMVDシンタックス要素または前記第3のMVDシンタックス要素を復号するために導出され、前記1つまたは複数のビデオブロックが前記ADAPTMVモード以外のインター予測モードでコーディングされるとき、前記第1のコンテキストとは異なる第2のコンテキストが、前記第1のMVDシンタックス要素または前記第3のMVDシンタックス要素を復号するために導出される、請求項6に記載の方法。
【請求項8】
前記1つまたは複数のビデオブロックに関連付けられた前記現在のMVDピクセル解像度は、2nペル(2nピクセル)であり、ここで、nは整数であり、両端値を含め-6と11との間である、請求項1に記載の方法。
【請求項9】
前記ビデオストリームから、前記1つまたは複数のビデオブロックに関連付けられたMVD大きさ範囲を導出するステップをさらに含み、分数MVDピクセル解像度は、前記MVD大きさが所定のしきい値MVD大きさ以下であるときにのみ許容される、請求項1に記載の方法。
【請求項10】
許容されるMVDピクセル解像度は、非昇順で、異なるMVD大きさに対応する、請求項9に記載の方法。
【請求項11】
前記ビデオストリームから、前記1つまたは複数のビデオブロックに関連付けられたMVD大きさ範囲を指定するためのMVDクラスインデックスを取得するステップをさらに含む、請求項1に記載の方法。
【請求項12】
分数MVDピクセル解像度は、前記MVDクラスインデックスが所定のしきい値MVDクラスインデックス以下であるときにのみ許容される、請求項11に記載の方法。
【請求項13】
前記所定のしきい値MVDクラスインデックス以上のMVDクラスインデックスは、単一の許容される整数MVDピクセル解像度値にそれぞれ関連付けられる、請求項12に記載の方法。
【請求項14】
許容されたMVDピクセル解像度は、非昇順で、異なるMVDクラスインデックスに対応する、請求項11に記載の方法。
【請求項15】
異なるMVDクラスインデックスに関連付けられたMVDピクセル解像度は別個である、請求項14に記載の方法。
【請求項16】
ビデオストリームの1つまたは複数のビデオブロックを復号するための電子デバイスであって、前記電子デバイスは、コンピュータ命令を記憶するためのメモリと、前記メモリと通信しているプロセッサとを備え、前記プロセッサは、前記コンピュータ命令を実行するとき、前記電子デバイスに、
請求項1から15のいずれか一項に記載の方法を行わせるように構成される、電子デバイス。
【請求項17】
コンピュータに、請求項1から15のいずれか一項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[参照による援用]
本出願は、2022年5月25日に出願された「Adaptive Resolution for Single-Reference Motion Vector Difference」と題する米国非仮特許出願第17/824,248号に基づき、それらに対する優先権の利益を主張するものであり、この米国非仮特許出願は、2021年11月23日に出願された「Adaptive MVD for Single Reference」と題する米国仮特許出願第63/282,549号に基づき、それらに対する優先権の利益を主張するものである。これらは、参照により全体が本明細書に組み込まれる。
【0002】
[技術分野]
本開示は、一般に、ビデオコーディングに関し、特に、ビデオブロックのインター予測における動きベクトル差分のための適応解像度を提供する方法およびシステムに関する。
【背景技術】
【0003】
本明細書で提供されるこの背景技術の説明は、本開示の文脈を一般的に提示するためのものである。現在名前が挙げられている発明者の研究は、その研究がこの背景技術のセクションに記載されている限りにおいて、本出願の出願時に従来技術として認定されていない説明の態様と同様に、本開示に対する従来技術として明示的にも暗示的にも認められない。
【0004】
ビデオコーディングおよび復号は、動き補償を用いたインターピクチャ予測を使用して実行することができる。非圧縮デジタルビデオは、一連のピクチャを含むことができ、各ピクチャは、例えば、1920×1080の輝度サンプルおよび関連する完全なまたはサブサンプリングされたクロミナンスサンプルの空間次元を有する。一連のピクチャは、例えば、60ピクチャ/秒または60フレーム/秒の固定または可変ピクチャレート(代替的に、フレームレートと呼ばれる)を有することができる。非圧縮ビデオは、ストリーミングまたはデータ処理のための特定のビットレート要件を有する。例えば、ピクセル解像度が1920×1080で、フレームレートが60フレーム/秒で、クロマサブサンプリングが色チャネルあたり8ビット/ピクセルで4:2:0であるビデオは、1.5Gbit/秒に近い帯域幅を必要とする。このようなビデオの1時間には、600ギガバイト超の記憶空間が必要である。
【0005】
ビデオコーディングおよび復号の1つの目的は、圧縮をより、非圧縮入力ビデオ信号の冗長性を低減することであり得る。圧縮は、前述の帯域幅および/または記憶空間要件を、場合によっては2桁以上低減するのに役立つことができる。可逆圧縮と不可逆圧縮の両方およびこれらの組み合わせを採用することができる。可逆圧縮は、元の信号の正確なコピーを、圧縮された元の信号から復号プロセスを介して再構成することができる技法を指す。不可逆圧縮は、元のビデオ情報がコーディング中に完全には保持されず、復号中に完全には復元可能でないコーディング/復号プロセスを指す。不可逆圧縮を使用するとき、再構成された信号は元の信号と同一ではないことがあるが、元の信号と再構成された信号との間の歪みは、いくらかの情報損失があるものの、再構成された信号を意図されたアプリケーションに有用にするのに十分に小さくされる。ビデオの場合、不可逆圧縮は、多くのアプリケーションで広く採用されている。許容可能な歪みの量は、アプリケーションによって決まる。例えば、特定の消費者向けビデオストリーミングアプリケーションのユーザは、映画またはテレビ放送アプリケーションのユーザよりも高い歪みを許容し得る。特定のコーディングアルゴリズムによって達成可能な圧縮率は、様々な歪み許容度を反映するように選択または調整することができる。許容可能な歪みがより大きいと、一般に、より高い損失とより高い圧縮率とをもたらすコーディングアルゴリズムが可能になる。
【0006】
ビデオエンコーダおよびデコーダは、例えば、動き補償、フーリエ変換、量子化、およびエントロピーコーディングを含む、いくつかの広いカテゴリおよびステップからの技法を利用することができる。
【0007】
ビデオコーデック技術は、イントラコーディングとして知られる技法を含むことができる。イントラコーディングでは、サンプル値は、以前に再構成された参照ピクチャからのサンプルまたは他のデータを参照せずに表される。いくつかのビデオコーデックでは、ピクチャは、サンプルのブロックに空間的に細分される。サンプルのすべてのブロックがイントラモードでコーディングされるとき、そのピクチャは、イントラピクチャと呼ばれることがある。イントラピクチャおよび独立デコーダリフレッシュピクチャなどのそれらの派生物は、デコーダ状態をリセットするために使用することができ、したがって、コード化ビデオビットストリーム(coded video bitstream)およびビデオセッション中の第1のピクチャとして、または静止画像として使用することができる。次いで、イントラ予測後のブロックのサンプルは、周波数領域への変換を受けることができ、そのように生成された変換係数は、エントロピーコーディングの前に量子化することができる。イントラ予測は、変換前領域におけるサンプル値を最小化する技法を表す。場合によっては、変換後のDC値が小さいほど、またAC係数が小さいほど、エントロピーコーディング後のブロックを表すために所与の量子化ステップサイズにおいて必要とされるビット数が少なくなる。
【0008】
例えば、MPEG-2世代コーディング技術から知られているような従来のイントラコーディングは、イントラ予測を使用しない。しかしながら、いくつかのより新しいビデオ圧縮技術は、例えば、空間的に隣接するものの符号化および/または復号中に取得され、かつ、イントラコーディングまたは復号されているデータのブロックに復号順序で先行する周囲のサンプルデータおよび/またはメタデータに基づいて、ブロックのコーディング/復号を試みる技法を含む。そのような技法は、以下、「イントラ予測」技法と呼ばれる。少なくともいくつかの場合には、イントラ予測は、再構成中の現在ピクチャからの参照データのみを使用し、他の参照ピクチャからの参照データは使用しないことに留意されたい。
【0009】
イントラ予測には多くの異なる形態が存在し得る。所与のビデオコーディング技術においてそのような技法のうちの2つ以上が利用可能であるとき、使用中の技法は、イントラ予測モードと呼ばれることがある。特定のコーデックでは、1つまたは複数のイントラ予測モードが提供され得る。特定の場合、モードは、サブモードを有することができ、および/または様々なパラメータに関連付けられ得、ビデオのブロックのためのモード/サブモード情報およびイントラコーディングパラメータは、個々にコーディングされるか、または集合的にモードコードワードに含まれ得る。所与のモード、サブモード、および/またはパラメータの組み合わせにどのコードワードを使用すべきかについては、イントラ予測によるコーディング効率利得に影響を与える可能性があるので、コードワードをビットストリームに変換するために使用されるエントロピーコーディング技術にも影響を与える可能性がある。
【0010】
イントラ予測の特定のモードは、H.264で紹介され、H.265で改良され、ジョイント探索モデル(JEM)、多用途ビデオコーディング(VVC)、およびベンチマークセット(BMS)などのより新しいコーディング技術においてさらに改良された。一般に、イントラ予測の場合、予測子ブロックは、利用可能になった隣接サンプル値を使用して形成され得る。例えば、特定の方向および/または線に沿った隣接サンプルの特定のセットの利用可能な値が予測子ブロックにコピーされ得る。使用中の方向への参照は、ビットストリーム中でコーディング可能であるか、またはそれ自体が予測され得る。
【0011】
図1Aを参照すると、右下に示されているのは、H.265の33個の可能なイントラ予測子方向(H.265において定められている35個のイントラモードのうちの33個の角度モードに対応する)において定められている9つの予測子方向のサブセットである。矢印が収束する点(101)は、予測されているサンプルを表す。矢印は、101のサンプルを予測するために隣接サンプルが使用される方向を表す。例えば、矢印(102)は、サンプル(101)が、水平方向から45度の角度で、1つまたは複数の隣接サンプルから右上に予測されることを示す。同様に、矢印(103)は、サンプル(101)が、水平方向から22.5度の角度で、1つまたは複数の隣接サンプルからサンプル(101)の左下に予測されることを示す。
【0012】
引き続き
図1Aを参すると、その左上には、4×4サンプルの正方形ブロック(104)(太い破線で示される)が示されている。正方形ブロック(104)は16個のサンプルを含み、その各々が、「S」と、Y次元におけるその位置(例えば、行インデックス)と、X次元におけるその位置(例えば、列インデックス)とでラベル付けされている。例えば、サンプルS21は、Y次元において(上から)2番目のサンプルであり、X次元において(左から)1番目のサンプルである。同様に、サンプルS44は、Y次元とX次元の両方においてブロック(104)中の4番目のサンプルである。ブロックはサイズが4×4サンプルであるので、S44は右下にある。同様の番号付け方式に従う例示的な参照サンプルがさらに示される。参照サンプルは、Rと、ブロック(104)に対するそのY位置(例えば、行インデックス)と、X位置(列インデックス)とでラベル付けされている。H.264およびH.265の両方において、再構成中のブロックに隣接する予測サンプルが使用される。
【0013】
ブロック104のイントラピクチャ予測は、シグナリングされた予測方向にしたがって隣接サンプルから参照サンプル値をコピーすることによって開始し得る。例えば、コード化ビデオビットストリームが、このブロック104について、矢印(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は、2つの次元XおよびY、または3つの次元を有し得、第3の次元は、使用中の参照ピクチャの指示である(時間次元に類似する)。
【0019】
いくつかのビデオ圧縮技法では、サンプルデータの特定のエリアに適用可能な現在のMVは、他のMVから、例えば、再構成中のエリアに空間的に隣接し、復号順序で現在のMVに先行するサンプルデータの他のエリアに関係するそれらの他のMVから予測可能である。そうすることで、相関されたMV中の冗長性を除去することに依拠することによって、MVをコーディングするために必要とされるデータの全体的な量を実質的に低減し、それによって、圧縮効率を高めることができる。MV予測は、効果的に機能することができる。というのも、例えば、カメラから導出された入力ビデオ信号(自然ビデオとして知られる)をコーディングするとき、単一のMVが適用可能であるエリアよりも大きいエリアがビデオシーケンスにおいて同様の方向に移動する統計的な可能性があるので、場合によっては、隣接エリアのMVから導出された同様の動きベクトルを使用して予測され得るからである。その結果、所与のエリアの実際のMVは、周囲のMVから予測されたMVと同様または同一になる。そのようなMVは、エントロピーコーディングの後に、MVが隣接MV(複数可)から予測されるのではなく直接コーディングされる場合に使用されたであろうビット数よりも少ないビット数で表され得る。場合によっては、MV予測は、元の信号(すなわち、サンプルストリーム)から導出される信号(すなわち、MV)の可逆圧縮の例であり得る。他の場合、例えば、いくつかの周囲MVから予測子を計算するときの丸め誤差のために、MV予測自体が不可逆であり得る。
【0020】
H.265/HEVC(ITU-T Rec. H.265, “High Efficiency Video Coding”, December 2016))には、様々なMV予測メカニズムが記載されている。H.265が規定する多くのMV予測メカニズムのうち、以下に説明するのは、以下「空間マージ」と呼ばれる技法である。
【0021】
具体的には、
図2を参照すると、現在ブロック(201)は、空間的にシフトされた同じサイズの前のブロックから予測可能であることが動き探索プロセス中にエンコーダによって発見されたサンプルを含む。そのMVを直接コーディングする代わりに、MVは、A0、A1、およびB0、B1、B2(それぞれ202~206)と示される5つの周囲サンプルのいずれか1つに関連付けられたMVを使用して、1つまたは複数の参照ピクチャに関連付けられたメタデータから、例えば(復号順序で)直近の参照ピクチャから導出され得る。H.265では、MV予測は、隣接ブロックが使用するのと同じ参照ピクチャからの予測子を使用することができる。
【発明の概要】
【0022】
本開示は、一般に、ビデオコーディングに関し、特に、ビデオブロックのインター予測における動きベクトル差分のための適応解像度を提供し、シグナリングするための方法およびシステムに関する。例示的な実装形態では、ビデオストリームの1つまたは複数のビデオブロックを復号するための方法が開示される。本方法は、ビデオストリームを受信するステップと、1つまたは複数のビデオブロックについてADAPTMVモードがシグナリングされるかどうかを決定するために、ビデオストリームからインター予測シンタックス要素を抽出するステップであって、ADAPTMVモードは、適応動きベクトル差分(MVD)ピクセル解像度を有する単一参照インター予測モードである、ステップと、ADAPTMVモードがインター予測シンタックス要素中でシグナリングされるかどうかに基づいて、1つまたは複数のビデオブロックに関連付けられた現在のMVDピクセル解像度を決定するステップと、ADAPTMVモードがインター予測シンタックス要素中でシグナリングされるかどうかに基づいて、および現在のMVDピクセル解像度にさらに基づいて、1つまたは複数のビデオブロックに関連付けられた1つまたは複数のMVD関連シンタックス要素を抽出および復号するステップとを含み得る。
【0023】
上記の例示的な実装形態では、インター予測シンタックス要素は、1つまたは複数のビデオブロックに関連付けられたインター予測参照フレームインデックスがシグナリングされた後に、ビデオストリーム中でシグナリングされる。
【0024】
上記の例示的な実装形態のいずれかにおいて、インター予測シンタックス要素は、以下の単一参照インター予測モード:ADAPTMVモード、非適応MVDピクセル解像度を有する単一参照インター予測モードであるNEWMVモード、動きベクトル差分なしに動きベクトルが直接予測される単一参照インター予測モードであるNEARMVモード、および動きベクトルがグローバル動きパラメータのセットを使用して予測される単一参照インター予測モードであるGLOBALMVモードのうちの1つを示すように構成される。
【0025】
上記の例示的な実装形態のいずれかにおいて、インター予測シンタックス要素内のADAPTMVモードを復号するためのコンテキストは、NEWMVモード、NEARMVモード、およびGLOBALMVモードの復号と共有される。
【0026】
上記の例示的な実装形態のいずれかにおいて、方法は、ADAPTMVモードがインター予測シンタックス要素中でシグナリングされるかどうかに基づいて、1つまたは複数のMVD関連シンタックス要素を復号するための1つまたは複数のコンテキストを導出するステップをさらに含む。
【0027】
上記の例示的な実装形態のいずれかにおいて、1つまたは複数のMVD関連シンタックス要素は、どのMVD成分が非ゼロであるかを示すための第1のMVDシンタックス要素、およびMVD符号を指定するための第2のMVDシンタックス要素、MVD大きさ範囲を指定するための第3のMVDシンタックス要素、MVD大きさ範囲内の整数MVD大きさオフセットを指定するための第4のMVDシンタックス要素、またはMVDピクセル解像度を指定するための第5のMVDシンタックス要素のうちの少なくとも1つを含む。
【0028】
上記の例示的な実装形態のいずれかにおいて、1つまたは複数のビデオブロックがADAPTMVモードで符号化されるとき、第1のコンテキストが、第1のMVDシンタックス要素または第3のMVDシンタックス要素を復号するために導出され、1つまたは複数のビデオブロックがADAPTMVモード以外のインター予測モードでコーディングされるとき、第1のコンテキストとは異なる第2のコンテキストが、第1のMVDシンタックス要素または第3のMVDシンタックス要素を復号するために導出される。
【0029】
上記の例示的な実装形態のいずれかにおいて、1つまたは複数のビデオブロックに関連付けられた現在のMVDピクセル解像度は、2nペル(2nピクセル)であり、ここで、nは整数であり、両端値を含め-6と11との間である。
【0030】
上記の例示的な実装形態のいずれかにおいて、ビデオストリームから、1つまたは複数のビデオブロックに関連付けられたMVD大きさ範囲を導出するステップをさらに含み、分数MVDピクセル解像度は、MVD大きさが所定のしきい値MVD大きさ以下であるときにのみ許容される。
【0031】
上記の例示的な実装形態のいずれかにおいて、許容されるMVDピクセル解像度は、非昇順で、異なるMVD大きさに対応する。
【0032】
上記の例示的な実装形態のいずれかにおいて、ビデオストリームから、1つまたは複数のビデオブロックに関連付けられたMVD大きさ範囲を指定するためのMVDクラスインデックスを取得するステップをさらに含む。
【0033】
上記の例示的な実装形態のいずれかにおいて、分数MVDピクセル解像度は、MVDクラスインデックスが所定のしきい値MVDクラスインデックス以下であるときにのみ許容される。
【0034】
上記の例示的な実装形態のいずれかにおいて、所定のしきい値MVDクラスインデックス以上のMVDクラスインデックスは、単一の許容される整数MVDピクセル解像度値にそれぞれ関連付けられる。
【0035】
上記の例示的な実装形態のいずれかにおいて、許容されたMVDピクセル解像度は、非昇順で、異なるMVDクラスインデックスに対応する。
【0036】
上記の例示的な実装形態のいずれかにおいて、異なるMVDクラスインデックスに関連付けられたMVDピクセル解像度は別個である。
【0037】
本開示の態様はまた、上記の方法実装形態のいずれかを実行するように構成された回路を含むビデオ符号化または復号デバイスまたは装置を提供する。
【0038】
本開示の態様はまた、ビデオ復号および/または符号化のためにコンピュータによって実行されたとき、コンピュータに、ビデオ復号および/または符号化のための方法を実行させる命令を記憶した非一時的コンピュータ可読媒体を提供する。
【図面の簡単な説明】
【0039】
開示される主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになるであろう。
【
図1A】イントラ予測方向モードの例示的なサブセットの概略図を示す。
【
図2】一例における動きベクトル予測のための現在ブロックおよびそれの周囲の空間マージ候補の概略図を示す。
【
図3】例示的な実施形態による通信システム(300)の簡略化されたブロック図の概略図を示す。
【
図4】例示的な実施形態による通信システム(400)の簡略化されたブロック図の概略図を示す。
【
図5】例示的な実施形態によるビデオデコーダの簡略化されたブロック図の概略図を示す。
【
図6】例示的な実施形態によるビデオエンコーダの簡略化されたブロック図の概略図を示す。
【
図7】別の例示的な実施形態によるビデオエンコーダのブロック図を示す。
【
図8】別の例示的な実施形態によるビデオデコーダのブロック図を示す。
【
図9】本開示の例示的な実施形態によるコーディングブロックパーティショニングの方式を示す。
【
図10】本開示の例示的な実施形態によるコーディングブロックパーティショニングの別の方式を示す。
【
図11】本開示の例示的な実施形態によるコーディングブロックパーティショニングの別の方式を示す。
【
図12】例示的なパーティショニング方式による、ベースブロックのコーディングブロックへの例示的なパーティショニングを示す。
【
図13】例示的なターナリパーティショニング方式を示す。
【
図14】例示的な四分木二分木コーディングブロックパーティショニング方式を示す。
【
図15】本開示の例示的な実施形態による、コーディングブロックを複数の変換ブロックにパーティショニングするための方式と、変換ブロックのコーディング順序とを示す。
【
図16】本開示の例示的な実施形態による、コーディングブロックを複数の変換ブロックにパーティショニングするための別の方式と、変換ブロックのコーディング順序とを示す。
【
図17】本開示の例示的な実施形態による、コーディングブロックを複数の変換ブロックにパーティショニングするための別の方式を示す。
【
図18】本開示の例示的な実施形態による方法のフローチャートを示す。
【
図19】本開示の例示的な実施形態によるコンピュータシステムの概略図を示す。
【発明を実施するための形態】
【0040】
本明細書および特許請求の範囲全体を通して、用語は、明示的に述べられた意味を超えて文脈において示唆または暗示される微妙な意味を有し得る。本明細書で使用される「一実施形態では(in one embodiment)」または「いくつかの実施形態では(in some embodiments)」という表現は、必ずしも同じ実施形態を指すとは限らず、本明細書で使用される「別の実施形態では(in another embodiment)」または「他の実施形態では(in other embodiments)」という表現は、必ずしも異なる実施形態を指すとは限らない。同様に、本明細書で使用される「一実装形態では(in one implementation)」または「いくつかの実装形態では(in some implementations)」という表現は、必ずしも同じ実装形態を指すとは限らず、本明細書で使用される「別の実装形態では(in another implementation)」または「他の実装形態では(in other implementations)」という表現は、必ずしも異なる実装形態を指すとは限らない。例えば、特許請求される主題は、例示的な実施形態/実装形態の組み合わせを全体的にまたは部分的に含むことが意図される。
【0041】
一般に、用語は、文脈における用法から少なくとも部分的に理解され得る。例えば、本明細書で使用される「および(and)」、「または(or)」、または「および/または(and/or)」などの用語は、そのような用語が使用される文脈に少なくとも部分的に依存し得る様々な意味を含み得る。典型的には、「または」は、A、B、またはCなど、リストを関連付けるために使用される場合、A、B、およびC(ここでは、包括的な意味で使用される)ならびにA、B、またはC(ここでは排他的な意味で使用される)を意味することが意図される。加えて、本明細書で使用される「1つまたは複数の(one or more)」または「少なくとも1つの(at least one)」という用語は、少なくとも部分的に文脈に応じて、任意の特徴、構造、または特性を単数の意味で説明するために使用されてもよいし、特徴、構造、または特性の組み合わせを複数の意味で説明するために使用されてもよい。同様に、「a」、「an」、または「the」などの用語も、この場合も同様に、少なくとも部分的に文脈に応じて、単数の用法を伝えるように、または複数の用法を伝えるように理解され得る。加えて、「~に基づいて(based on)」または「~によって決定される(determined by)」という用語は、必ずしも排他的な要因のセットを伝えることを意図するものではなく、代わりに、この場合も同様に、少なくとも部分的に文脈に応じて、必ずしも明示的に説明されていない追加の要因の存在を許容し得ることが理解され得る。
図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末デバイス(310)および(320)の第1のペアを含む。
図3の例では、端末デバイス(310)および(320)の第1のペアは、データの単方向送信を実行し得る。例えば、端末デバイス(310)は、ネットワーク(350)を介して他方の端末デバイス(320)に送信するために、(例えば、端末デバイス(310)によってキャプチャされたビデオピクチャのストリームの)ビデオデータをコーディングし得る。符号化ビデオデータ(encoded video data)は、1つまたは複数のコード化ビデオビットストリームの形態で送信され得る。端末デバイス(320)は、ネットワーク(350)からコード化ビデオデータ(coded video data)を受信し、コード化ビデオデータを復号してビデオピクチャを復元し、復元されたビデオデータにしたがってビデオピクチャを表示し得る。単方向データ送信は、メディアサービングアプリケーションなどにおいて実装され得る。
【0042】
別の例では、通信システム(300)は、例えばテレビ会議アプリケーション中に実装され得るコード化ビデオデータの双方向送信を実行する端末デバイス(330)および(340)の第2のペアを含む。データの双方向送信のために、一例では、端末デバイス(330)および(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)および(340)のうちの他方の端末デバイスに送信するために、(例えば、端末デバイスによってキャプチャされたビデオピクチャのストリームの)ビデオデータをコーディングし得る。端末デバイス(330)および(340)の各端末デバイスはまた、端末デバイス(330)および(340)のうちの他方の端末デバイスによって送信されたコード化ビデオデータを受信し得、コード化ビデオデータを復号してビデオピクチャを復元し得、復元されたビデオデータにしたがってアクセス可能なディスプレイデバイスにおいてビデオピクチャを表示し得る。
【0043】
図3の例では、端末デバイス(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして実装され得るが、本開示の基本原理の適用可能性は、そのように限定されなくてもよい。本開示の実施形態は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、ウェアラブルコンピュータ、専用ビデオ会議機器、および/または同様のものにおいて実装され得る。ネットワーク(350)は、端末デバイス(310)、(320)、(330)、および(340)の間でコード化ビデオデータを伝達する任意の数またはタイプのネットワークを表し、例えば、ワイヤライン(ワイヤード)および/またはワイヤレス通信ネットワークを含む。通信ネットワーク(350)は、回線交換、パケット交換、および/または他のタイプのチャネルでデータを交換し得る。代表的なネットワークとしては、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが挙げられる。本説明の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジは、本明細書で明示的に説明されない限り、本開示の動作にとって重要でない場合がある。
【0044】
図4は、開示される主題のアプリケーションの一例として、ビデオストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示される主題は、例えば、ビデオ会議、デジタルTV放送、ゲーム、仮想現実、CD、DVD、メモリスティックなどを含むデジタル媒体上の圧縮ビデオの記憶などを含む、他のビデオアプリケーションなどにも等しく適用可能であり得る。
【0045】
ビデオストリーミングシステムは、圧縮されていないビデオピクチャまたは画像のストリーム(402)を作成するためのビデオソース(401)、例えばデジタルカメラを含むことができるビデオキャプチャサブシステム(413)を含み得る。一例では、ビデオピクチャのストリーム(402)は、ビデオソース401のデジタルカメラによって記録されたサンプルを含む。符号化ビデオデータ(404)(またはコード化ビデオビットストリーム)と比較して高データ量であることを強調するために太線で示されるビデオピクチャのストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理することができる。ビデオエンコーダ(403)は、以下でより詳細に説明されるように、開示される主題の態様を可能にするかまたは実装するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。非圧縮ビデオピクチャのストリーム(402)と比較して低データ量であることを強調するために細線で示される符号化ビデオデータ(404)(または符号化ビデオビットストリーム(encoded video bitstream)(404))は、将来の使用のためにストリーミングサーバ(405)上に記憶されるか、または下流のビデオデバイス(図示せず)に直接記憶され得る。
図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、符号化ビデオデータ(404)のコピー(407)および(409)を取り出すことができる。クライアントサブシステム(406)は、例えば、電子デバイス(430)内にビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、符号化ビデオデータの到来コピー(407)を復号し、圧縮されておらず、ディスプレイ(412)(例えば、表示画面)または他のレンダリングデバイス(図示せず)上にレンダリングすることができるビデオピクチャの発信ストリーム(411)を作成する。ビデオデコーダ410は、本開示で説明する様々な機能の一部または全部を実行するように構成され得る。いくつかのストリーミングシステムでは、符号化ビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格にしたがって符号化され得る。それらの規格の例としては、ITU-T Recommendation H.265が挙げられる。一例では、開発中のビデオコーディング規格は、非公式に多用途ビデオコーディング(VVC)として知られている。開示される主題は、VVCおよび他のビデオコーディング規格の文脈において使用され得る。
【0046】
電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)は、ビデオデコーダ(図示せず)を含むことができ、同様に、電子デバイス(430)は、ビデオエンコーダ(図示せず)を含むことができる。
【0047】
図5は、以下の本開示の任意の実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれ得る。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、
図4の例におけるビデオデコーダ(410)の代わりに使用することができる。
【0048】
受信機(531)は、ビデオデコーダ(510)によって復号されるべき1つまたは複数のコード化ビデオシーケンス(coded video sequence)を受信し得る。同じまたは別の実施形態では、1つのコード化ビデオシーケンスが一度に復号され得、ここで、各コード化ビデオシーケンスの復号は、他のコード化ビデオシーケンスから独立している。各ビデオシーケンスは、複数のビデオフレームまたは画像に関連付けられ得る。コード化ビデオシーケンスは、符号化ビデオデータを記憶する記憶デバイスまたは符号化ビデオデータを送信するストリーミングソースへのハードウェア/ソフトウェアリンクであり得るチャネル(501)から受信され得る。受信機(531)は、符号化ビデオデータを、それらのそれぞれの処理回路(図示せず)に転送され得る、コード化オーディオデータおよび/または補助データストリームなどの他のデータとともに受信し得る。受信機(531)は、コード化ビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、バッファメモリ(515)が、受信機(531)とエントロピーデコーダ/パーサ520)(以下、「パーサ(520)」)との間に配置され得る。特定のアプリケーションでは、バッファメモリ(515)は、ビデオデコーダ(510)の一部として実装され得る。他のアプリケーションでは、それは、ビデオデコーダ(510)の外部にあり、それとは別個であり得る(図示せず)。さらに他のアプリケーションでは、例えば、ネットワークジッタに対抗する目的で、ビデオデコーダ(510)の外部にバッファメモリ(図示せず)が存在することができ、例えば、再生タイミングを処理するために、ビデオデコーダ(510)の内部に別の追加のバッファメモリ(515)が存在し得る。受信機(531)が、十分な帯域幅および可制御性の記憶/転送デバイスから、またはアイソクロナスネットワーク(isosynchronous network)からデータを受信しているとき、バッファメモリ(515)は、必要とされない場合があるか、または小さくあり得る。インターネットなどのベストエフォート型パケットネットワーク上で使用するためには、十分なサイズのバッファメモリ(515)が必要とされ得、そのサイズは比較的大きくなり得る。そのようなバッファメモリは、適応サイズで実装され得、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)において少なくとも部分的に実装され得る。
【0049】
ビデオデコーダ(510)は、コード化ビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含み得る。それらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、場合によっては、
図5に示されるように、電子デバイス(530)の一体部分であってもなくてもよいが、電子デバイス(530)に結合可能なディスプレイ(512)(例えば、ディスプレイスクリーン)などのレンダリングデバイスを制御するための情報とを含む。レンダリングデバイス(複数可)のための制御情報は、補足エンハンスメント情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であり得る。パーサ(520)は、パーサ(520)によって受信されたコード化ビデオシーケンスを構文解析/エントロピー復号し得る。コード化ビデオシーケンスのエントロピーコーディングは、ビデオコーディング技術または規格に従うことができ、可変長コーディング、ハフマンコーディング、コンテキスト感度を伴うまたは伴わない算術コーディングなどを含む、様々な原理に従うことができる。パーサ(520)は、コード化ビデオシーケンスから、サブグループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダにおけるピクセルのサブグループのうちの少なくとも1つに関するサブグループパラメータのセットを抽出し得る。サブグループは、グループオブピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)はまた、コード化ビデオシーケンスから、変換係数(例えば、フーリエ変換係数)、量子化器パラメータ値、動きベクトルなどの情報を抽出し得る。
【0050】
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信されたビデオシーケンスに対してエントロピー復号/構文解析動作を実行し得る。
【0051】
シンボル(521)の再構成は、コード化ビデオピクチャまたはその一部のタイプ(インターピクチャおよびイントラピクチャ、インターブロック、およびイントラブロックなど)、および他の要因に応じて、複数の異なる処理または機能ユニットを含むことができる。含まれるユニットおよびそれらがどのように含まれるかは、パーサ(520)によってコード化ビデオシーケンスから構文解析されるサブグループ制御情報によって制御され得る。パーサ(520)と以下の複数の処理または機能ユニットとの間のそのようなサブグループ制御情報の流れは、簡略化のために示されていない。
【0052】
すでに述べた機能ブロックを超えて、ビデオデコーダ(510)は、以下で説明するように、いくつかの機能ユニットに概念的に細分され得る。商業的な制約の下で動作する実際の実装形態では、これらの機能ユニットの多くは、互いに密接に相互作用し、少なくとも部分的に互いに統合することができる。しかしながら、開示される主題の様々な機能を明確に説明する目的で、以下の開示では、機能ユニットへの概念的な細分が採用されている。
【0053】
第1のユニットは、スケーラ/逆変換ユニット(551)を含み得る。スケーラ/逆変換ユニット(551)は、量子化された変換係数と制御情報とを受信し得、この制御情報は、どのタイプの逆変換を使用すべきかを示す情報、ブロックサイズ、量子化因子/パラメータ、量子化スケーリング行列、およびパーサ(520)からのシンボル(複数可)(521)としてのライを含む。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力され得るサンプル値を含むブロックを出力することができる。
【0054】
場合によっては、スケーラ/逆変換ユニット(551)の出力サンプルは、イントラコーディングされたブロック、すなわち、以前に再構成されたピクチャからの予測情報は使用しないが、現在ピクチャの以前に再構成された部分からの予測情報は使用することができるブロックに関連し得る。そのような予測情報は、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、すでに再構成され、現在ピクチャバッファ(558)に記憶されている周囲ブロック情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成し得る。現在ピクチャバッファ(558)は、例えば、部分的に再構成された現在ピクチャおよび/または完全に再構成された現在ピクチャをバッファする。アグリゲータ(555)は、いくつかの実装形態では、サンプルごとに、イントラピクチャ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供された出力サンプル情報に追加し得る。
【0055】
他の場合、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされ、場合によっては動き補償されたブロックに関連し得る。そのような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、インターピクチャ予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)にしたがって、フェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力(ユニット551の出力は、残差サンプルまたは残差信号と呼ばれることがある)に追加され得る。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y成分(シフト)、および参照ピクチャ成分(時間)を有し得るシンボル(521)の形態で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているとき、参照ピクチャメモリ(557)からフェッチされるようなサンプル値の補間を含み得、また、動きベクトル予測機構などに関連付けられ得る。
【0056】
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技法を受けることができる。ビデオ圧縮技術は、コード化ビデオシーケンス(コード化ビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能にされるループ内フィルタ技術を含むことができるが、コード化ピクチャ(coded picture)またはコード化ビデオシーケンスの(復号順序で)前の部分の復号中に取得されたメタ情報に応答することもでき、前に再構成されループフィルタリングされたサンプル値に応答することもできる。いくつかのタイプのループフィルタが、以下でさらに詳細に説明するように、様々な順序でループフィルタユニット556の一部として含まれ得る。
【0057】
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)に出力されるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶可能なサンプルストリームとすることができる。
【0058】
特定のコード化ピクチャは、完全に再構成されると、将来のインターピクチャ予測のための参照ピクチャとして使用することができる。例えば、現在ピクチャに対応するコード化ピクチャが完全に再構成され、コード化ピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在ピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部となることができ、次のコード化ピクチャの再構成を開始する前に、新たな現在ピクチャバッファを再割り当てすることができる。
【0059】
ビデオデコーダ(510)は、ITU-T Rec.H.265などの規格で採用されている所定のビデオ圧縮技術にしたがって復号動作を実行し得る。コード化ビデオシーケンスは、コード化ビデオシーケンスがビデオ圧縮技術または規格のシンタックスとビデオ圧縮技術または規格において文書化されたプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術または規格によって指定されたシンタックスに準拠し得る。具体的には、プロファイルは、そのプロファイルの下で使用するために利用可能な唯一のツールとして、ビデオ圧縮技術または規格において利用可能なすべてのツールから特定のツールを選択することができる。規格に準拠するために、コード化ビデオシーケンスの複雑さは、ビデオ圧縮技術または規格のレベルによって定義された範囲内であり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、メガサンプル/秒で測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)仕様と、コード化ビデオシーケンス中でシグナリングされるHRDバッファ管理のためのメタデータとを通してさらに制限され得る。
【0060】
いくつかの例示的な実施形態では、受信機(531)は、符号化ビデオ(encoded video)とともに追加の(冗長)データを受信し得る。追加のデータは、コード化ビデオシーケンス(複数可)の一部として含まれ得る。追加のデータは、データを適切に復号するために、および/または元のビデオデータをより正確に再構成するために、ビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的、または信号対雑音比(SNR)エンハンスメントレイヤ、冗長スライス、冗長ピクチャ、順方向誤り訂正符号などの形態であり得る。
【0061】
図6は、本開示の例示的な実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれ得る。電子デバイス(620)は、送信機(640)(例えば、送信回路)をさらに含み得る。ビデオエンコーダ(603)は、
図4の例におけるビデオエンコーダ(403)の代わりに使用することができる。
【0062】
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるべきビデオ画像(複数可)をキャプチャし得る(
図6の例では電子デバイス(620)の一部ではない)ビデオソース(601)からビデオサンプルを受信し得る。別の例では、ビデオソース(601)は、電子デバイス(620)の一部として実装され得る。
【0063】
ビデオソース(601)は、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 YCrCb、RGB、XYZ…)、および任意の適切なサンプリング構造(例えば、YCrCb 4:2:0、YCrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを提供し得る。メディアサービングシステムでは、ビデオソース(601)は、以前に準備されたビデオを記憶することができる記憶デバイスであり得る。テレビ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、連続して見たときに動きを与える複数の個々のピクチャまたは画像として提供され得る。ピクチャ自体は、ピクセルの空間アレイとして編成され得、ここで、各ピクセルは、使用されているサンプリング構造、色空間などに応じて1つまたは複数のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てる。
【0064】
いくつかの例示的な実施形態によれば、ビデオエンコーダ(603)は、リアルタイムでまたはアプリケーションによって要求される任意の他の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングし、コード化ビデオシーケンス(643)に圧縮し得る。適切なコーディング速度を実施することは、コントローラ(650)の1つの機能を構成する。いくつかの実施形態では、コントローラ(650)は、以下に説明されるように、他の機能ユニットに機能的に結合され、それを制御し得る。結合は、簡単にするために示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技法のラムダ値、…)、ピクチャサイズ、グループオブピクチャ(GOP)レイアウト、最大動きベクトル探索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関連する他の適切な機能を有するように構成され得る。
【0065】
いくつかの例示的な実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成され得る。単純化し過ぎた説明として、一例では、コーディングループは、(例えば、コーディングされるべき入力ピクチャと参照ピクチャ(複数可)とに基づいて、シンボルストリームなどのシンボルを作成することを担う)ソースコーダ(630)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(エントロピーコーディングにおけるシンボルとコード化ビデオビットストリームとの間の任意の圧縮は、開示される主題において考慮されるビデオ圧縮技術において可逆であり得るので)埋め込みデコーダ633がエントロピーコーディングなしにソースコーダ630によるコード化ビデオストリームを処理したとしても、(リモート)デコーダが作成するのと同様の方法でサンプルデータを作成するためにシンボルを再構成する。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームの復号は、デコーダの位置(ローカルまたはリモート)とは無関係にビット精度(bit-exact)の結果をもたらすので、参照ピクチャメモリ(634)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビット精度である。言い換えると、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」であろうものと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、例えばチャネルエラーのために同期性が維持できない場合には、結果として得られるドリフト)のこの基本原理は、コーディング品質を改善するために使用される。
【0066】
「ローカル」デコーダ(633)の動作は、
図5に関連して上記ですでに詳細に説明したビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。しかしながら、
図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコード化ビデオシーケンスへのシンボルの符号化/復号が可逆であり得るので、バッファメモリ(515)およびパーサ(520)を含むビデオデコーダ(510)のエントロピー復号部分は、エンコーダ内のローカルデコーダ(633)では完全には実装されないことがある。
【0067】
この時点で行うことができる観察は、デコーダ内にのみ存在し得る構文解析/エントロピー復号を除く任意のデコーダ技術は、対応するエンコーダ内にも、実質的に同一の機能的形態で必ず存在する必要があり得ることである。この理由のために、開示される主題は、時には、エンコーダの復号部分に関連するデコーダ動作に焦点を当て得る。したがって、エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるので、省略することができる。特定の領域または態様においてのみ、エンコーダのより詳細な説明が以下に提供される。
【0068】
いくつかの例示的な実装形態における動作中に、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする動き補償された予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの予測参照(複数可)として選択され得る参照ピクチャ(複数可)のピクセルブロックとの間の色チャネルにおける差分(または残差)をコーディングする。「残差(residue)」という用語およびその形容詞形態「残差の(residual)」は、同義で使用され得る。
【0069】
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコード化ビデオデータを復号し得る。コーディングエンジン(632)の動作は、有利には、不可逆プロセスであり得る。コード化ビデオデータがビデオデコーダ(
図6に図示せず)において復号され得るとき、再構成されたビデオシーケンスは、典型的に、いくつかのエラーを有するソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得る復号プロセスを複製し、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に記憶させ得る。このようにして、ビデオエンコーダ(603)は、遠端(リモート)ビデオデコーダによって取得される再構成された参照ピクチャと共通のコンテンツを有する再構成された参照ピクチャのコピーをローカルに記憶し得る(送信エラーなし)。
【0070】
予測器(635)は、コーディングエンジン(632)の予測探索を実行し得る。すなわち、コーディングされるべき新しいピクチャに対して、予測器(635)は、新しいピクチャに対する適切な予測参照として機能し得る、(候補参照ピクセルブロックとしての)サンプルデータ、または参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを求めて参照ピクチャメモリ(634)を探索し得る。予測器(635)は、適切な予測参照を見つけるために、サンプルブロックごとにピクセルブック単位で(on a sample block-by-pixel block basis)動作し得る。場合によっては、予測器(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有し得る。
【0071】
コントローラ(650)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
【0072】
前述したすべての機能ユニットの出力は、エントロピーコーダ645におけるエントロピーコーディングを受け得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術にしたがってシンボルを可逆圧縮することによって、様々な機能ユニットによって生成されたシンボルをコード化ビデオシーケンスに変換する。
【0073】
送信機(640)は、符号化ビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであり得る通信チャネル(660)を介した送信に備えるために、エントロピーコーダ(645)によって作成されたコード化ビデオシーケンス(複数可)をバッファし得る。送信機(640)は、ビデオエンコーダ(603)からのコード化ビデオデータを、送信されるべき他のデータ、例えば、コード化オーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージし得る。
【0074】
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディングの間、コントローラ(650)は、各コード化ピクチャに特定のコード化ピクチャタイプを割り当て得、これは、それぞれのピクチャに適用され得るコーディング技法に影響を与え得る。例えば、ピクチャは、多くの場合、以下のピクチャタイプのうちの1つとして割り当てられ得る。
【0075】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス中の他のピクチャを使用することなくコーディングおよび復号され得るものであり得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを可能にする。当業者であれば、Iピクチャのそれらの変形例、ならびにそれらのそれぞれの用途および特徴を知っている。
【0076】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために多くとも1つの動きベクトルと参照インデックスとを使用するイントラ予測またはインター予測を使用してコーディングおよび復号され得るものであり得る。
【0077】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために多くとも2つの動きベクトルと参照インデックスとを使用するイントラ予測またはインター予測を使用してコーディングおよび復号され得るものであり得る。同様に、多重予測ピクチャ(multiple-predictive pictures)は、単一のブロックの再構成のために2つよりも多い参照ピクチャおよび関連するメタデータを使用することができる。
【0078】
ソースピクチャは、一般に、複数のサンプルコーディングブロック(例えば、各々4×4、8×8、4×8、または16×16サンプルのブロック)に空間的に細分され、ブロック単位でコーディングされ得る。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(すでにコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされ得るか、または、同じピクチャのすでにコーディングされたブロックを参照して予測的にコーディングされ得る(空間予測またはイントラ予測)。Pピクチャのピクセルブロックは、1つの以前にコーディングされた参照ピクチャを参照して、空間予測を介してまたは時間予測を介して予測的にコーディングされ得る。Bピクチャのブロックは、1つまたは2つの以前にコーディングされた参照ピクチャを参照して、空間予測を介してまたは時間予測を介して、予測的にコーディングされ得る。ソースピクチャまたは中間処理されたピクチャは、他の目的のために他のタイプのブロックに細分され得る。コーディングブロックおよび他のタイプのブロックの分割は、以下でさらに詳細に説明するように、同じ方法にしたがっても従わなくてもよい。
【0079】
ビデオエンコーダ(603)は、ITU-T Rec.H.265などの所定のビデオコーディング技術または規格にしたがってコーディング動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的冗長性および空間的冗長性を利用する予測コーディング動作を含む様々な圧縮動作を実行し得る。したがって、コード化ビデオデータは、使用されているビデオコーディング技術または規格によって指定されたシンタックスに準拠し得る。
【0080】
いくつかの例示的な実施形態では、送信機(640)は、符号化ビデオとともに追加のデータを送信し得る。ソースコーダ(630)は、そのようなデータをコード化ビデオシーケンスの一部として含み得る。追加のデータは、時間/空間/SNRエンハンスメントレイヤ、冗長ピクチャおよびスライスなどの他の形態の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
【0081】
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(多くの場合、イントラ予測と略される)は、所与のピクチャにおける空間的相関を利用し、インターピクチャ予測は、ピクチャ間の時間的または他の相関を利用する。例えば、現在ピクチャと呼ばれる、符号化/復号中の特定のピクチャは、ブロックにパーティショニングされ得る。現在ピクチャ中のブロックは、ビデオ中の、以前にコーディングされ、依然としてバッファされている参照ピクチャ中の参照ブロックと同様であるとき、動きベクトルと呼ばれるベクトルによってコーディングされ得る。動きベクトルは、参照ピクチャ中の参照ブロックを指し、複数の参照ピクチャが使用されている場合に、当該参照ピクチャを識別する第3の次元を有することができる。
【0082】
いくつかの例示的な実施形態では、インターピクチャ予測のために双予測技法を使用することができる。そのような双予測技法によれば、両方とも復号順序でビデオ中の現在ピクチャに先行する(ただし、表示順序ではそれぞれ過去または未来であり得る)第1の参照ピクチャおよび第2の参照ピクチャなど、2つの参照ピクチャが使用される。現在ピクチャ中のブロックは、第1の参照ピクチャ中の第1の参照ブロックを指す第1の動きベクトルと、第2の参照ピクチャ中の第2の参照ブロックを指す第2の動きベクトルとによってコーディングされ得る。ブロックは、第1の参照ブロックおよび第2の参照ブロックの組み合わせによって共同予測され得る。
【0083】
また、コーディング効率を高めるためにインターピクチャ予測でマージモード(merge mode)技法が使用され得る。
【0084】
本開示のいくつかの例示的な実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実行される。例えば、ビデオピクチャのシーケンス中のピクチャは、圧縮のためにコーディングツリーユニット(CTU)にパーティショニングされ、ピクチャ中のCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなど、同じサイズを有し得る。一般に、CTUは、3つの並列コーディングツリーブロック(CTB)、すなわち、1つのルーマCTBと2つのクロマCTBとを含み得る。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割され得る。例えば、64×64ピクセルのCTUは、64×64ピクセルの1つのCU、または32×32ピクセルの4つのCUに分割され得る。32×32ブロックのうちの1つまたは複数の各々は、16×16ピクセルの4つのCUにさらに分割され得る。いくつかの例示的な実施形態では、各CUは、インター予測タイプまたはイントラ予測タイプなどの様々な予測タイプの中からそのCUの予測タイプを決定するために、符号化中に分析され得る。CUは、時間的および/または空間的予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割され得る。一般に、各PUは、1つのルーマ予測ブロック(PB)と、2つのクロマPBとを含む。一実施形態では、コーディング(符号化/復号)時の予測動作は、予測ブロック単位で行われる。CUのPU(または異なる色チャネルのPB)への分割は、様々な空間パターンで実行され得る。例えば、ルーマまたはクロマPBは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8サンプルなど、サンプルの値(例えば、ルーマ値)の行列を含み得る。
【0085】
図7は、本開示の別の例示的な実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオピクチャのシーケンスにおける現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コード化ビデオシーケンスの一部であるコード化ピクチャに符号化するように構成される。例示的なビデオエンコーダ(703)は、
図4の例におけるビデオエンコーダ(403)の代わりに使用され得る。
【0086】
例えば、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロックのサンプル値の行列を受信する。次いで、ビデオエンコーダ(703)は、イントラモード、インターモード、または双予測モードのどれを使用することで処理ブロックが最良にコーディングされるかを、例えば、レート歪み最適化(RDO)を使用して、決定する。処理ブロックがイントラモードでコーディングされると決定されたとき、ビデオエンコーダ(703)は、イントラ予測技法を使用して、処理ブロックをコード化ピクチャに符号化し得、処理ブロックがインターモードまたは双予測モードでコーディングされると決定されたとき、ビデオエンコーダ(703)は、それぞれインター予測技法または双予測技法を使用して、処理ブロックをコード化ピクチャに符号化し得る。いくつかの例示的な実施形態では、マージモードは、インターピクチャ予測のサブモードとして使用され得、ここで、動きベクトルは、1つまたは複数の動きベクトル予測子から、その予測子の外側のコード化動きベクトル成分の助けを借りずに、導出される。いくつかの他の例示的な実施形態では、対象ブロックに適用可能な動きベクトル成分が存在し得る。したがって、ビデオエンコーダ(703)は、処理ブロックの予測モードを決定するために、モード決定モジュールなどの、
図7に明示的に示されていない構成要素を含み得る。
【0087】
図7の例では、ビデオエンコーダ(703)は、
図7の例示的な構成に示すように互いに結合された、インターエンコーダ(730)と、イントラエンコーダ(722)と、残差計算器(723)と、スイッチ(726)と、残差エンコーダ(724)と、統括コントローラ(721)と、エントロピーエンコーダ(725)とを含む。
【0088】
インターエンコーダ(730)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを参照ピクチャ内の1つまたは複数の参照ブロック(例えば、表示順序で前のピクチャおよび後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インター符号化技法による冗長情報の記述、動きベクトル、マージモード情報)を生成し、任意の適切な技法を使用してインター予測情報に基づいてインター予測結果(例えば、予測されたブロック)を計算するように構成される。いくつかの例では、参照ピクチャは、(以下でさらに詳細に説明するように、
図7の残差デコーダ728として示される)
図6の例示的なエンコーダ603に埋め込まれた復号ユニット633を使用して、符号化ビデオ情報に基づいて復号された復号参照ピクチャである。
【0089】
イントラエンコーダ(722)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを、同じピクチャ内のすでにコーディングされたブロックと比較し、変換後の量子化係数を生成し、また、場合によっては、イントラ予測情報(例えば、1つまたは複数のイントラ符号化技法によるイントラ予測方向情報)を生成するように構成される。イントラエンコーダ(722)は、イントラ予測情報および同じピクチャ内の参照ブロックに基づいて、イントラ予測結果(例えば、予測されたブロック)を計算し得る。
【0090】
統括コントローラ(721)は、統括制御データを決定し、統括制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成され得る。一例では、統括コントローラ(721)は、ブロックの予測モードを決定し、予測モードに基づいてスイッチ(726)に制御信号を提供する。例えば、予測モードがイントラモードである場合、統括コントローラ(721)は、残差計算器(723)による使用のためにイントラモード結果を選択するようにスイッチ(726)を制御し、イントラ予測情報を選択してイントラ予測情報をビットストリームに含めるようにエントロピーエンコーダ(725)を制御し、ブロックの予測モードがインターモードである場合、統括コントローラ(721)は、残差計算器(723)による使用のためにインター予測結果を選択するようにスイッチ(726)を制御し、インター予測情報を選択してインター予測情報をビットストリームに含めるようにエントロピーエンコーダ(725)を制御する。
【0091】
残差計算器(723)は、受信されたブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択されたブロックについての予測結果との間の差分(残差データ)を計算するように構成され得る。残差エンコーダ(724)は、残差データを符号化して変換係数を生成するように構成され得る。例えば、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換して変換係数を生成するように構成され得る。次いで、変換係数は、量子化された変換係数を取得するために量子化処理を受ける。様々な例示的な実施形態では、ビデオエンコーダ(703)は、残差デコーダ(728)も含む。残差デコーダ(728)は、逆変換を実行し、復号された残差データを生成するように構成される。復号された残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用することができる。例えば、インターエンコーダ(730)は、復号された残差データおよびインター予測情報に基づいて、復号されたブロックを生成することができ、イントラエンコーダ(722)は、復号された残差データおよびイントラ予測情報に基づいて、復号されたブロックを生成することができる。復号されたブロックは、復号されたピクチャを生成するために適切に処理され、復号されたピクチャは、メモリ回路(図示せず)にバッファされ、参照ピクチャとして使用され得る。
【0092】
エントロピーエンコーダ(725)は、符号化されたブロックを含むようにビットストリームをフォーマットし、エントロピーコーディングを実行するように構成され得る。エントロピーエンコーダ(725)は、様々な情報をビットストリームに含めるように構成される。例えば、エントロピーエンコーダ(725)は、統括制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、および他の適切な情報をビットストリームに含めるように構成され得る。インターモードまたは双予測モードのいずれかのマージサブモードでブロックをコーディングするとき、残差情報がないことがある。
【0093】
図8は、本開示の別の実施形態による例示的なビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コード化ビデオシーケンスの一部であるコード化ピクチャを受信し、コード化ピクチャを復号して、再構成されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、
図4の例におけるビデオデコーダ(410)の代わりに使用され得る。
【0094】
図8の例では、ビデオデコーダ(810)は、
図8の例示的な構成に示すように互いに結合された、エントロピーデコーダ(871)と、インターデコーダ(880)と、残差デコーダ(873)と、再構成モジュール(874)と、イントラデコーダ(872)とを含む。
【0095】
エントロピーデコーダ(871)は、コード化ピクチャから、コード化ピクチャを構成するシンタックス要素を表す特定のシンボルを再構成するように構成され得る。そのようなシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラモード、インターモード、双予測モード、マージサブモード、または別のサブモード)、イントラデコーダ(872)またはインターデコーダ(880)による予測に使用される特定のサンプルまたはメタデータを識別することができる予測情報(例えば、イントラ予測情報またはインター予測情報)、例えば、量子化された変換係数の形態の残差情報などを含むことができる。一例では、予測モードがインターモードまたは双予測モードである場合、インター予測情報がインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプである場合、イントラ予測情報がイントラデコーダ(872)に提供される。残差情報は、逆量子化を受けることができ、残差デコーダ(873)に提供される。
【0096】
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成され得る。
【0097】
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成され得る。
【0098】
残差デコーダ(873)は、逆量子化を実行して逆量子化された変換係数を抽出し、逆量子化された変換係数を処理して残差を周波数領域から空間領域に変換するように構成され得る。残差デコーダ(873)はまた、(量子化器パラメータ(QP)を含むために)特定の制御情報を利用し得、これは、エントロピーデコーダ(871)によって提供され得る(これは低データ量制御情報のみであり得るため、データ経路は図示されていない)。
【0099】
再構成モジュール(874)は、空間領域において、残差デコーダ(873)によって出力された残差と(場合に応じてインター予測モジュールまたはイントラ予測モジュールによって出力された)予測結果とを組み合わせて、再構成されたビデオの一部として再構成されたピクチャの一部を形成する再構成されたブロックを形成するように構成され得る。視覚品質を向上させるために、デブロッキング動作などの他の適切な動作も実行され得ることに留意されたい。
【0100】
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技法を使用して実装され得ることに留意されたい。いくつかの例示的な実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実装され得る。別の実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実装され得る。
【0101】
コーディングおよび復号のためのブロックパーティショニングに目を向けると、一般的なパーティショニングは、ベースブロックから開始し得、予め定義されたルールセット、特定のパターン、パーティションツリー、または任意のパーティション構造または方式に従い得る。パーティショニングは、階層的かつ再帰的であり得る。例示的なパーティショニングプロシージャもしくは以下で説明する他のプロシージャのいずれか、またはそれらの組み合わせにしたがってベースブロックを分割またはパーティショニングした後、パーティションまたはコーディングブロックの最終セットが取得され得る。これらのパーティションの各々は、パーティショニング階層における様々なパーティショニングレベルのうちの1つにあり得、様々な形状であり得る。パーティションの各々は、コーディングブロック(CB)と呼ばれることがある。以下でさらに説明される様々な例示的なパーティショニング実装形態について、結果として得られる各CBは、許容されたサイズおよびパーティショニングレベルのいずれかであり得る。そのようなパーティションは、いくつかの基本的なコーディング/復号決定が行われ得、コーディング/復号パラメータが最適化され、決定され、符号化ビデオビットストリーム中でシグナリングされ得る単位を形成し得るので、コーディングブロックと呼ばれる。最終パーティションにおける最高または最深レベルは、ツリーのコーディングブロックパーティショニング構造の深度を表す。コーディングブロックは、ルーマコーディングブロックまたはクロマコーディングブロックであり得る。各色のCBツリー構造は、コーディングブロックツリー(CBT)と呼ばれることがある。
【0102】
すべての色チャネルのコーディングブロックは、総称して、コーディングユニット(CU)と呼ばれることがある。すべての色チャネルの階層構造は、総称して、コーディングツリーユニット(CTU)と呼ばれることがある。CTU中の様々な色チャネルのためのパーティショニングパターンまたは構造は、同じであっても同じでなくてもよい。
【0103】
いくつかの実装形態では、ルーマチャネルおよびクロマチャネルに使用されるパーティションツリー方式または構造は、同じである必要がないであろう。言い換えると、ルーマチャネルおよびクロマチャネルは、別個のコーディングツリー構造またはパターンを有し得る。さらに、ルーマチャネルとクロマチャネルとが同じコーディングパーティションツリー構造を使用するのか異なるコーディングパーティションツリー構造を使用するのかと、使用されるべき実際のコーディングパーティションツリー構造とは、コーディングされているスライスがPスライスであるか、Bスライスであるか、Iスライスであるかに依存し得る。例えば、Iスライスの場合、クロマチャネルおよびルーマチャネルは、別個のコーディングパーティションツリー構造またはコーディングパーティションツリー構造モードを有し得るが、PまたはBスライスの場合、ルーマチャネルおよびクロマチャネルは、同じコーディングパーティションツリー方式を共有し得る。別個のコーディングパーティションツリー構造またはモードが適用されるとき、ルーマチャネルは、1つのコーディングパーティションツリー構造によってCBにパーティショニングされ得、クロマチャネルは、別のコーディングパーティションツリー構造によってクロマCBにパーティショニングされ得る。
【0104】
いくつかの例示的な実装形態では、所定のパーティショニングパターンがベースブロックに適用され得る。
図9に示すように、例示的な4ウェイパーティションツリーは、第1の予め定義されたレベル(例えば、ベースブロックサイズとして、64×64ブロックレベルまたは他のサイズ)から開始し得、ベースブロックは、予め定義された最下位レベル(例えば、4×4レベル)まで階層的にパーティショニングされ得る。例えば、ベースブロックは、902、904、906、および908によって示される4つの予め定義されたパーティショニングオプションまたはパターンを受け得、Rとして指定されたパーティションは、
図9に示されるのと同じパーティションオプションが最下位レベル(例えば、4×4レベル)までより低いスケールで繰り返され得るという点で、再帰的パーティショニングが許容される。いくつかの実装形態では、追加の制限が
図9のパーティショニング方式に適用され得る。
図9の実装形態では、長方形パーティション(例えば、1:2/2:1長方形パーティション)が許容され得るが、正方形パーティションが再帰的であることが許容されるのに対して、それらは再帰的であることが許容されないことがある。再帰を伴う
図9に従ったパーティショニングは、必要に応じて、コーディングブロックの最終セットを生成する。ルートノードまたはルートブロックからの分割深度を示すために、コーディングツリー深度がさらに定義され得る。例えば、ルートノードまたはルートブロック、例えば64×64ブロックのためのコーディングツリー深度は0に設定され得、ルートブロックが
図9にしたがってさらに1回分割された後、コーディングツリー深度は1だけ増加される。64×64ベースブロックから4×4の最小パーティションまでの最大または最深レベルは、上記の方式では(レベル0から開始して)4である。そのようなパーティショニング方式は、色チャネルのうちの1つまたは複数に適用され得る。各色チャネルは、
図9の方式にしたがって独立してパーティショニングされ得る(例えば、予め定義されたパターンの間のパーティショニングパターンまたはオプションは、各階層レベルにおいて色チャネルの各々について独立して決定され得る)。代替的に、色チャネルのうちの2つ以上が、
図9と同じ階層パターンツリーを共有してもよい(例えば、予め定義されたパターンの間の同じパーティショニングパターンまたはオプションが、各階層レベルにおいて2つ以上の色チャネルのために選定され得る)。
【0105】
図10は、パーティショニングツリーを形成するために再帰的パーティショニングを許容する別の例示的な予め定義されたパーティショニングパターンを示す。
図10に示すように、例示的な10ウェイパーティショニング構造またはパターンが予め定義され得る。ルートブロックは、予め定義されたレベルで(例えば、128×128レベルまたは64×64レベルのベースブロックから)開始し得る。
図10の例示的なパーティショニング構造は、様々な2:1/1:2および4:1/1:4長方形パーティションを含む。
図10の第2の行中の1002、1004、1006、および1008で示される3つのサブパーティションを有するパーティションタイプは、「T型」パーティションと呼ばれることがある。「T型」パーティション1002、1004、1006、および1008は、左T型、上T型、右T型、および下T型と呼ばれることがある。いくつかの例示的な実装形態では、
図10の長方形パーティションのいずれも、さらなる細分が許容されない。ルートノードまたはルートブロックからの分割深度を示すために、コーディングツリー深度がさらに定義され得る。例えば、ルートノードまたはルートブロック、例えば、128×128ブロックのためのコーディングツリー深度は0に設定され得、ルートブロックが
図10にしたがってさらに1回分割された後、コーディングツリー深度は1だけ増加される。いくつかの実装形態では、1010における全正方形パーティションのみが、
図10のパターンに従ったパーティショニングツリーの次のレベルへの再帰的パーティショニングを許容され得る。言い換えると、T型パターン1002、1004、1006、および1008内の正方形パーティションに対しては再帰的パーティショニングが許容されない場合がある。再帰を伴う
図10に従ったパーティショニングプロシージャは、必要に応じて、コーディングブロックの最終セットを生成する。そのような方式は、色チャネルのうちの1つまたは複数に適用され得る。いくつかの実装形態では、8×8レベルを下回るパーティションの使用に、より多くのフレキシビリティが追加され得る。例えば、特定の場合には2×2クロマインター予測が使用され得る。
【0106】
コーディングブロックパーティショニングのためのいくつかの他の例示的な実装形態では、ベースブロックまたは中間ブロックを四分木パーティションに分割するために四分木構造が使用され得る。このような四分木分割は、任意の正方形のパーティションに階層的かつ再帰的に適用され得る。ベースブロックまたは中間ブロックもしくはパーティションがさらに四分木分割されるかどうかは、ベースブロックまたは中間ブロック/パーティションの様々なローカル特性に適合され得る。ピクチャ境界における四分木パーティショニングがさらに適合され得る。例えば、サイズがピクチャ境界に適合するまでブロックが四分木分割を続けるように、ピクチャ境界において暗黙的四分木分割が実行され得る。
【0107】
いくつかの他の例示的な実装形態では、ベースブロックからの階層バイナリパーティショニングが使用され得る。そのような方式の場合、ベースブロックまたは中間レベルブロックは、2つのパーティションにパーティショニングされ得る。バイナリパーティショニングは、水平または垂直のいずれかであり得る。例えば、水平バイナリパーティショニングは、ベースブロックまたは中間ブロックを等しい右パーティションおよび左パーティションに分割し得る。同様に、垂直バイナリパーティショニングは、ベースブロックまたは中間ブロックを等しい上パーティションおよび下パーティションに分割し得る。そのようなバイナリパーティショニングは、階層的かつ再帰的であり得る。ベースブロックまたは中間ブロックの各々において、バイナリパーティショニング方式を継続すべきかどうか、および方式がさらに継続する場合、水平バイナリパーティショニングが使用されるべきか垂直バイナリパーティショニングが使用されるべきかについて決定が行われ得る。いくつかの実装形態では、さらなるパーティショニングは、(一方または両方の次元における)予め定義された最低パーティションサイズで停止し得る。代替的に、さらなるパーティショニングは、ベースブロックからの予め定義されたパーティショニングレベルまたは深度に達すると、停止してもよい。いくつかの実装形態では、パーティションのアスペクト比が制限され得る。例えば、パーティションのアスペクト比は、1:4よりも小さく(または4:1よりも大きく)ならないであろう。そのため、4:1の垂直対水平アスペクト比を有する垂直ストリップパーティションは、各々が2:1の垂直対水平アスペクト比を有する上パーティションおよび下パーティションへと垂直にのみさらにバイナリパーティショニングされ得る。
【0108】
さらにいくつかの他の例では、
図13に示すように、ベースブロックまたは任意の中間ブロックをパーティショニングするためにターナリパーティショニング方式が使用され得る。ターナリパターンは、
図13の1302に示されるように垂直に、または
図13の1304に示されるように水平に実装され得る。
図13の例示的な分割比は、垂直にまたは水平に、1:2:1として示されているが、他の比が予め定義されてもよい。いくつかの実装形態では、2つ以上の異なる比が予め定義され得る。四分木および二分木では常にブロック中心に沿って分割するので、オブジェクトを別個のパーティションに分割することになるが、そのような三分木パーティショニングは1つの連続するパーティション内のブロック中心に位置するオブジェクトをキャプチャすることが可能であるという点で、そのようなターナリパーティショニング方式は、四分木または二分木パーティショニング構造を補完するために使用され得る。いくつかの実装形態では、例示的な三分木のパーティションの幅および高さは、追加の変換を回避するために常に2のべき乗である。
【0109】
上記のパーティショニング方式は、異なるパーティショニングレベルにおいて任意の方法で組み合わせられ得る。一例として、上記で説明した四分木およびバイナリパーティショニング方式は、ベースブロックを四分木-二分木(QTBT)構造にパーティショニングするために組み合わせられ得る。そのような方式では、ベースブロックまたは中間ブロック/パーティションは、指定された場合、予め定義された条件のセットにしたがって、四分木分割またはバイナリ分割のいずれかが行われ得る。特定の例を
図14に示す。
図14の例では、ベースブロックは、最初に、1402、1404、1406、および1408によって示されるように、4つのパーティションに四分木分割される。その後、結果として得られるパーティションの各々は、4つのさらなるパーティションに四分木パーティショニングされる(1408など)か、次のレベルにおいて2つのさらなるパーティションにバイナリ分割される(例えば、水平にまたは垂直に、両方とも対称である1402または1406など)か、分割されない(1404)かのいずれかである。バイナリ分割または四分木分割は、1410の全体的な例示的パーティションパターンおよび1420における対応するツリー構造/表現によって示されるように、正方形のパーティションに対して再帰的に許容され得、ここで、実線は四分木分割を表し、破線はバイナリ分割を表す。バイナリ分割が水平であるか垂直であるかを示すために、各バイナリ分割ノード(非リーフバイナリパーティション)に対してフラグが使用され得る。例えば、1420に示すように、1410のパーティショニング構造と一致して、フラグ「0」は、水平バイナリ分割を表し得、フラグ「1」は、垂直バイナリ分割を表し得る。四分木分割されたパーティションの場合、四分木分割は常に、ブロックまたはパーティションを水平と垂直の両方に分割して、等しいサイズを有する4つのサブブロック/パーティションを生成するので、分割タイプを示す必要はない。いくつかの実装形態では、フラグ「1」は水平バイナリ分割を表し得、フラグ「0」は、垂直バイナリ分割を表し得る。
【0110】
QTBTのいくつかの例示的な実装形態では、四分木およびバイナリ分割ルールセットは、以下の予め定義されたパラメータおよびそれに関連する対応する関数によって表され得る。
- CTUサイズ:四分木のルートノードサイズ(ベースブロックのサイズ)
- MinQTSize:最小許容四分木リーフノードサイズ
- MaxBTSize:最大許容二分木ルートノードサイズ
- MaxBTDepth:最大許容二分木深度
- MinBTSize:最小許容二分木リーフノードサイズ
QTBTパーティショニング構造のいくつかの例示的な実装形態では、CTUサイズは、(例示的なクロマサブサンプリングを考慮し使用する場合)クロマサンプルの2つの対応する64×64ブロックを有する128×128ルーマサンプルとして設定され得、MinQTSizeは、16×16として設定され得、MaxBTSizeは、64×64として設定され得、MinBTSize(幅および高さの両方)は、4×4として設定され得、MaxBTDepthは、4として設定され得る。四分木パーティショニングは、四分木リーフノードを生成するために、最初、CTUに適用され得る。四分木リーフノードは、その最小許容サイズ16×16(すなわちMinQTSize)から128×128(すなわち、CTUサイズ)のサイズを有し得る。ノードが128×128である場合、サイズがMaxBTSize(すなわち64×64)を超えるので、最初、二分木によって分割されない。そうでない場合、MaxBTSizeを超えないノードは、二分木によってパーティショニングされる可能性がある。
図14の例では、ベースブロックは128×128である。ベースブロックは、予め定義されたルールセットにしたがって、四分木分割のみ行うことができる。ベースブロックは、0のパーティショニング深度を有する。結果として得られる4つのパーティションの各々は、64×64であり、MaxBTSizeを超えず、レベル1でさらに四分木または二分木分割され得る。プロセスは続く。二分木深度がMaxBTDepth(すなわち、4)に達すると、それ以上の分割は考慮されないであろう。二分木ノードがMinBTSize(すなわち、4)に等しい幅を有するとき、それ以上の水平分割は考慮されないであろう。同様に、二分木ノードの高さがMinBTSizeに等しいとき、それ以上の垂直分割は考慮されない。
【0111】
いくつかの例示的な実装形態では、上記のQTBT方式は、ルーマおよびクロマが同じQTBT構造または別個のQTBT構造を有するためのフレキシビリティをサポートするように構成され得る。例えば、PスライスおよびBスライスの場合、1つのCTU中のルーマCTBおよびクロマCTBは、同じQTBT構造を共有し得る。しかしながら、Iスライスの場合、ルーマCTBは、QTBT構造によってCBにパーティショニングされ得、クロマCTBは、別のQTBT構造によってクロマCBにパーティショニングされ得る。これは、CUがIスライス中の異なる色チャネルを指すために使用され得ることを意味し、例えば、Iスライスは、1つのルーマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックから構成され得、PスライスまたはBスライス中のCUは、すべての3つの色成分のコーディングブロックから構成され得る。
【0112】
いくつかの他の実装形態では、QTBT方式は、上記で説明したターナリ方式で補足され得る。そのような実装形態は、マルチタイプツリー(MTT)構造と呼ばれることがある。例えば、ノードのバイナリ分割に加えて、
図13のターナリパーティションパターンのうちの1つが選定され得る。いくつかの実装形態では、正方形ノードのみがターナリ分割の対象となり得る。ターナリパーティショニングが水平であるか垂直であるかを示すために、追加のフラグが使用され得る。
【0113】
QTBT実装形態およびターナリ分割によって補足されるQTBT実装形態など、2レベルツリーまたはマルチレベルツリーの設計は、主に複雑さ低減によって動機付けられ得る。理論的には、ツリーをトラバースする複雑さは、TDであり、ここで、Tは、分割タイプの数を示し、Dは、ツリーの深度である。深度(D)を低減しながら、複数のタイプ(T)を使用することによって、トレードオフが行われ得る。
【0114】
いくつかの実装形態では、CBは、さらにパーティショニングされ得る。例えば、CBは、コーディングおよび復号プロセス中のイントラまたはインターフレーム予測の目的で、複数の予測ブロック(PB)にさらにパーティショニングされ得る。言い換えると、CBは、個々の予測決定/構成が行われ得る異なるサブパーティションにさらに分割され得る。並行して、CBは、ビデオデータの変換または逆変換が実行されるレベルを線引きする目的で、複数の変換ブロック(TB)にさらにパーティショニングされ得る。CBのPBおよびTBへのパーティショニング方式は、同じであっても、同じでなくてもよい。例えば、各パーティショニング方式は、例えば、ビデオデータの様々な特性に基づいて、それ自体のプロシージャを使用して実行され得る。PBおよびTBパーティショニング方式は、いくつかの例示的な実装形態では独立しているであろう。PBおよびTBパーティショニング方式および境界は、いくつかの他の例示的な実装形態では相関性があるであろう。いくつかの実装形態では、例えば、TBは、PBパーティションにパーティショニングされ得、特に、PBは、コーディングブロックのパーティショニングにしたがって決定された後、1つまたは複数のTBにさらにパーティショニングされ得る。例えば、いくつかの実装形態では、PBは、1つ、2つ、4つ、または他の数のTBに分割され得る。
【0115】
いくつかの実装形態では、ベースブロックをコーディングブロックにパーティショニングし、さらに予測ブロックおよび/または変換ブロックにパーティショニングするために、ルーマチャネルとクロマチャネルとは別様に扱われ得る。例えば、いくつかの実装形態では、コーディングブロックの予測ブロックおよび/または変換ブロックへのパーティショニングは、ルーマチャネルに対しては許容され得るが、コーディングブロックの予測ブロックおよび/または変換ブロックへのそのようなパーティショニングは、クロマチャネル(複数可)に対しては許容されないことがある。そのような実装形態では、ルーマブロックの変換および/または予測は、このように、コーディングブロックレベルにおいてのみ実行され得る。別の例では、ルーマチャネルおよびクロマチャネル(複数可)のための最小変換ブロックサイズは異なり得、例えば、ルーマチャネルのためのコーディングブロックは、クロマチャネルよりも小さい変換および/または予測ブロックにパーティショニングされることが許容され得る。さらに別の例として、コーディングブロックの変換ブロックおよび/または予測ブロックへのパーティショニングの最大深度は、ルーマチャネルとクロマチャネルとの間で異なり得、例えば、ルーマチャネルのためのコーディングブロックは、クロマチャネル(複数可)よりも深い変換および/または予測ブロックにパーティショニングされることが許容され得る。具体的な例では、ルーマコーディングブロックは、最大2レベル下がる再帰的パーティションで表現することができる複数サイズの変換ブロックにパーティショニングされ、正方形、2:1/1:2、および4:1/1:4などの変換ブロック形状ならびに4×4から64×64までの変換ブロックサイズが許容され得る。しかしながら、クロマブロックの場合、ルーマブロックのために指定された最大の可能な変換ブロックのみが許容され得る。
【0116】
コーディングブロックをPBに分割するためのいくつかの例示的な実装形態では、PBパーティショニングの深度、形状、および/または他の特性は、PBがイントラコーディングされるかインターコーディングされるかに依存し得る。
【0117】
コーディングブロック(または予測ブロック)の変換ブロックへのパーティショニングは、限定はしないが、再帰的または非再帰的な四分木分割および予め定義されたパターン分割を含む様々な例示的な方式で、コーディングブロックまたは予測ブロックの境界における変換ブロックについての追加の考慮とともに、実装され得る。一般に、結果として得られる変換ブロックは、異なる分割レベルにあり得、同じサイズでなくてもよく、形状が正方形である必要はないであろう(例えば、それらは、何らかの許容サイズおよびアスペクト比を有する長方形であり得る)。さらなる例が、
図15、
図16、および
図17に関して以下でさらに詳細に説明される。
【0118】
しかしながら、いくつかの他の実装形態では、上記のパーティショニング方式のいずれかを介して取得されたCBは、予測および/または変換のための基本または最小コーディングブロックとして使用され得る。言い換えると、インター予測/イントラ予測目的および/または変換目的で、それ以上の分割は実行されない。例えば、上記のQTBT方式から取得されたCBは、予測を実行するためのユニットとして直接使用され得る。具体的には、そのようなQTBT構造は、複数のパーティションタイプの概念を除去し、すなわち、それは、CU、PUおよびTUの分離を除去し、上記で説明したようなCU/CBパーティション形状のためのより多くのフレキシビリティをサポートする。そのようなQTBTブロック構造では、CU/CBは、正方形または長方形の形状いずれかを有することができる。そのようなQTBTのリーフノードは、それ以上のパーティショニングなしに、予測および変換処理のためのユニットとして使用される。これは、CU、PU、およびTUが、そのような例示的なQTBTコーディングブロック構造において同じブロックサイズを有することを意味する。
【0119】
上記の様々なCBパーティショニング方式ならびに(PB/TBパーティショニングなしを含む)CBのPBおよび/またはTBへのさらなるパーティショニングは、任意の方法で組み合わせられ得る。以下の特定の実装形態は、非限定的な例として提供される。
【0120】
コーディングブロックおよび変換ブロックパーティショニングの特定の例示的な実装形態について以下で説明する。そのような例示的な実装形態では、ベースブロックは、再帰的四分木分割、または(
図9および
図10のものなどの)上記で説明した予め定義された分割パターンを使用してコーディングブロックに分割され得る。各レベルにおいて、特定のパーティションのさらなる四分木分割を継続すべきかどうかは、ローカルビデオデータ特性によって決定され得る。結果として得られるCBは、様々な四分木分割レベルであり、様々なサイズであり得る。インターピクチャ(時間)予測またはイントラピクチャ(空間)予測を使用してピクチャエリアをコーディングすべきかどうかに関する決定は、CBレベル(または、すべての3色チャネルについてCUレベル)において行われ得る。各CBは、予め定義されたPB分割タイプにしたがって、1つ、2つ、4つ、または他の数のPBにさらに分割され得る。1つのPBの内部では、同じ予測プロセスが適用され得、関連情報は、PBごとにデコーダに送信され得る。PB分割タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後、CBは、CBのためのコーディングツリーと同様の別の四分木構造にしたがってTBにパーティショニングされ得る。この特定の実装形態では、CBまたはTBは、正方形に限定され得るが、それに限定される必要はない。さらに、この特定の例では、PBは、インター予測の場合は正方形または長方形であり得、イントラ予測の場合は正方形のみであり得る。コーディングブロックは、例えば、4つの正方形のTBに分割され得る。各TBは、残差四分木(RQT)と呼ばれる、より小さいTBに(四分木分割を使用して)再帰的にさらに分割され得る。
【0121】
ベースブロックをCB、PB、および/またはTBにパーティショニングするための別の例示的な実装形態について以下でさらに説明する。例えば、
図9または
図10に示すものなどの複数のパーティションユニットタイプを使用するのではなく、バイナリおよびターナリ分割セグメンテーション構造(例えば、上記で説明したQTBTまたはターナリ分割を有するQTBT)を使用するネスト型マルチタイプツリーを有する四分木が使用され得る。CB、PB、およびTBの分離(すなわち、CBのPBおよび/またはTBへのパーティショニングならびにPBのTBへのパーティショニング)は、最大変換長に対して大きすぎるサイズを有するCBに必要とされるときを除いて、放棄され得、そのようなCBは、さらなる分割を必要とし得る。この例示的なパーティショニング方式は、予測と変換の両方がそれ以上のパーティショニングなしにCBレベルで実行され得るように、CBパーティション形状のためのより多くのフレキシビリティをサポートするように設計され得る。そのようなコーディングツリー構造では、CBは、正方形または長方形の形状のいずれかを有し得る。具体的には、コーディングツリーブロック(CTB)は、最初に四分木構造によってパーティショニングされ得る。次いで、四分木リーフノードは、ネスト型マルチタイプツリー構造によってさらにパーティショニングされ得る。バイナリ分割またはターナリ分割を使用するネスト型マルチタイプツリー構造の例を
図11に示す。具体的には、
図11の例示的なマルチタイプツリー構造は、垂直バイナリ分割(SPLIT_BT_VER)(1102)、水平バイナリ分割(SPLIT_BT_HOR)(1104)、垂直ターナリ分割(SPLIT_TT_VER)(1106)、および水平ターナリ分割(SPLIT_TT_HOR)(1108)と呼ばれる4つの分割タイプを含む。そして、CBは、マルチタイプツリーのリーフに対応する。この例示的な実装形態では、CBが最大変換長に対して大きすぎない限り、このセグメンテーションは、それ以上のパーティショニングなしに、予測処理と変換処理の両方に使用される。これは、ほとんどの場合、CB、PB、およびTBが、ネスト型マルチタイプツリーコーディングブロック構造を有する四分木において同じブロックサイズを有することを意味する。例外は、サポートされる最大変換長がCBの色成分の幅または高さよりも小さいときに発生する。いくつかの実装形態では、バイナリ分割またはターナリ分割に加えて、
図11のネスト型パターンは、四分木分割をさらに含み得る。
【0122】
1つのベースブロックのための(四分木、バイナリ、およびターナリ分割オプションを含む)ブロックパーティションのネスト型マルチタイプツリーコーディングブロック構造を有する四分木のための1つの具体的な例が
図12に示されている。より詳細には、
図12は、ベースブロック1200が4つの正方形パーティション1202、1204、1206、および1208に四分木分割されることを示す。さらなる分割のために
図11のマルチタイプツリー構造および四分木をさらに使用する決定は、四分木分割されたパーティションの各々に対して行われる。
図12の例では、パーティション1204は、それ以上分割されない。パーティション1202および1208はそれぞれ、別の四分木分割を採用する。パーティション1202の場合、第2レベルの四分木分割された左上、右上、左下、および右下のパーティションは、それぞれ、四分木、
図11の水平バイナリ分割1104、非分割、および
図11の水平ターナリ分割1108の第3レベルの分割を採用する。パーティション1208は、別の四分木分割を採用し、第2レベルの四分木分割された左上、右上、左下、および右下のパーティションは、それぞれ、
図11の垂直ターナリ分割1106、非分割、非分割、および
図11の水平バイナリ分割1104の第3レベルの分割を採用する。1208の第3レベルの左上パーティションのサブパーティションのうちの2つは、それぞれ、
図11の水平バイナリ分割1104および水平ターナリ分割1108にしたがってさらに分割される。パーティション1206は、
図11の垂直バイナリ分割1102に従った分割パターンを第2レベルで採用して2つのパーティションにし、これらのパーティションは、第3レベルで、
図11の水平ターナリ分割1108および垂直バイナリ分割1102にしたがってさらに分割される。第4レベルの分割は、
図11の水平バイナリ分割1104にしたがって、それらのうちの1つにさらに適用される。
【0123】
上記の具体的な例では、最大ルーマ変換サイズは64×64であり得、サポートされる最大クロマ変換サイズは、例えば、32×32におけるルーマとは異なり得る。
図12における上記の例示的なCBは、一般に、より小さいPBおよび/またはTBにさらに分割されないが、ルーマコーディングブロックまたはクロマコーディングブロックの幅または高さが最大変換幅または高さよりも大きいとき、ルーマコーディングブロックまたはクロマコーディングブロックは、当該方向における変換サイズ制限を満たすために、水平方向および/または垂直方向に自動的に分割され得る。
【0124】
上記のベースブロックをCBにパーティショニングするための具体的な例では、上記で説明したように、コーディングツリー方式は、ルーマとクロマとが別個のブロックツリー構造を有する能力をサポートし得る。例えば、PスライスおよびBスライスの場合、1つのCTU中のルーマCTBおよびクロマCTBは同じコーディングツリー構造を共有し得る。Iスライスの場合、例えば、ルーマおよびクロマは別個のコーディングブロックツリー構造を有し得る。別個のブロックツリー構造が適用されるとき、ルーマCTBは、1つのコーディングツリー構造によってルーマCBにパーティショニングされ得、クロマCTBは、別のコーディングツリー構造によってクロマCBにパーティショニングされる。これは、Iスライス中のCUが1つのルーマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックから構成され得、ビデオがモノクロームでない限り、PまたはBスライス中のCUが常にすべての3つの色成分のコーディングブロックから構成されることを意味する。
【0125】
コーディングブロックが複数の変換ブロックにさらにパーティショニングされるとき、その中の変換ブロックは、様々な順序または走査方法にしたがってビットストリーム中で順序付けられ得る。コーディングブロックまたは予測ブロックを変換ブロックにパーティショニングするための例示的な実装形態、および変換ブロックのコーディング順序が、以下でさらに詳細に説明される。いくつかの例示的な実装形態では、上記で説明したように、変換パーティショニングは、複数の形状、例えば、1:1(正方形)、1:2/2:1、および1:4/4:1の変換ブロックをサポートし得、変換ブロックサイズは、例えば、4×4から64×64に及ぶ。いくつかの実装形態では、コーディングブロックが64×64以下である場合、変換ブロックパーティショニングは、ルーマ成分のみに適用され得、したがって、クロマブロックについては、変換ブロックサイズはコーディングブロックサイズと同一である。そうではなく、コーディングブロック幅または高さが64よりも大きい場合、ルーマコーディングブロックとクロマコーディングブロックの両方は、それぞれmin(W,64)×min(H,64)およびmin(W,32)×min(H,32)の変換ブロックの倍数に暗黙的に分割され得る。
【0126】
変換ブロックパーティショニングのいくつかの例示的な実装形態では、イントラコーディングされたブロックとインターコーディングされたブロックの両方について、コーディングブロックは、予め定義されたレベル数(例えば、2つのレベル)までのパーティショニング深度で複数の変換ブロックにさらにパーティショニングされ得る。変換ブロックパーティショニング深度およびサイズは、関連し得る。いくつかの例示的な実装形態について、現在の深度の変換サイズから次の深度の変換サイズへのマッピングが、以下の表1に示される。
【表1】
【0127】
表1の例示的なマッピングに基づいて、1:1正方形ブロックの場合、次のレベルの変換分割は、4つの1:1正方形サブ変換ブロックを作成し得る。変換パーティションは、例えば、4×4で停止し得る。そのため、現在の深度の変換サイズ4×4は、次の深度でも同じサイズ4×4に対応する。表1の例では、1:2/2:1非正方形ブロックの場合、次のレベルの変換分割は、2つの1:1正方形サブ変換ブロックを作成し得るが、1:4/4:1非正方形ブロックの場合、次のレベルの変換分割は、2つの1:2/2:1サブ変換ブロックを作成し得る。
【0128】
いくつかの例示的な実装形態では、イントラコーディングされたブロックのルーマ成分について、変換ブロックパーティショニングに関して追加の制限が適用され得る。例えば、変換パーティショニングの各レベルについて、すべてのサブ変換ブロックは、等しいサイズを有するように制限され得る。例えば、32×16コーディングブロックの場合、レベル1変換分割は、2つの16×16サブ変換ブロックを作成し、レベル2変換分割は、8つの8×8サブ変換ブロックを作成する。言い換えると、第2レベルの分割は、変換ユニットを等しいサイズに保つために、すべての第1レベルのサブブロックに適用されなければならない。表1に従うイントラコーディングされた正方形ブロックのための変換ブロックパーティショニングの一例が、矢印によって示されるコーディング順序とともに
図15に示されている。具体的には、1502は、正方形のコーディングブロックを示す。表1にしたがった4つの等しいサイズの変換ブロックへの第1レベルの分割が、矢印によって示されるコーディング順序とともに1504に示されている。表1に従った、第1レベルの等しいサイズのブロックのすべての16個の等しいサイズの変換ブロックへの第2レベルの分割が、矢印によって示されるコーディング順序とともに1506に示されている。
【0129】
いくつかの例示的な実装形態では、インターコーディングされたブロックのルーマ成分について、イントラコーディングのための上記の制限は適用されないことがある。例えば、第1レベルの変換分割の後に、サブ変換ブロックのうちのいずれか1つが、さらにもう1つのレベルで独立して分割され得る。したがって、結果として得られる変換ブロックは、同じサイズであってもなくてもよい。インターコーディングされたブロックの変換ブロックへの例示的な分割が、それらのコーディング順序とともに
図16に示されている。
図16の例では、インターコーディングされたブロック1602は、表1にしたがって2つのレベルで変換ブロックに分割される。第1レベルでは、インターコーディングされたブロックは、等しいサイズの4つの変換ブロックに分割される。次いで、1604によって示されるように、4つの変換ブロックのうちの1つのみ(それらのすべてではない)が4つのサブ変換ブロックにさらに分割され、2つの異なるサイズを有する合計7つの変換ブロックとなる。これらの7つの変換ブロックの例示的なコーディング順序は、
図16の1604において矢印によって示されている。
【0130】
いくつかの例示的な実装形態では、クロマ成分(複数可)について、変換ブロックのためのいくつかの追加の制限が適用され得る。例えば、クロマ成分(複数可)について、変換ブロックサイズは、コーディングブロックサイズと同じ大きさであることができるが、予め定義されたサイズ、例えば、8×8よりも小さくはできない。
【0131】
いくつかの他の例示的な実装形態では、幅(W)または高さ(H)のいずれかが64よりも大きいコーディングブロックについて、ルーマコーディングブロックおよびクロマコーディングブロックの両方は、それぞれmin(W,64)×min(H,64)およびmin(W,32)×min(H,32)の変換ユニットの倍数に暗黙的に分割され得る。ここで、本開示では、「min(a,b)」は、aとbのうち、より小さい値を返し得る。
【0132】
図17は、コーディングブロックまたは予測ブロックを変換ブロックにパーティショニングするための別の代替の例示的な方式をさらに示す。
図17に示すように、再帰的変換パーティショニングを使用する代わりに、コーディングブロックの変換タイプにしたがって、パーティショニングタイプの予め定義されたセットがコーディングブロックに適用され得る。
図17に示される特定の例では、コーディングブロックを様々な数の変換ブロックに分割するために、6つの例示的なパーティショニングタイプのうちの1つが適用され得る。変換ブロックパーティショニングを生成するそのような方式は、コーディングブロックまたは予測ブロックのいずれかに適用され得る。
【0133】
より詳細には、
図17のパーティショニング方式は、任意の所与の変換タイプについて最大6つの例示的なパーティションタイプを与える(変換タイプは、例えば、ADSTなどの1次変換のタイプを指す)。この方式では、すべてのコーディングブロックまたは予測ブロックは、例えば、レート歪みコストに基づいて変換パーティションタイプを割り当てられ得る。一例では、コーディングブロックまたは予測ブロックに割り当てられた変換パーティションタイプは、コーディングブロックまたは予測ブロックの変換タイプに基づいて決定され得る。特定の変換パーティションタイプは、
図17に示す6つの変換パーティションタイプによって示されるように、変換ブロック分割サイズおよびパターンに対応し得る。様々な変換タイプと様々な変換パーティションタイプとの間の対応関係が予め定義され得る。レート歪みコストに基づいてコーディングブロックまたは予測ブロックに割り当てられ得る変換パーティションタイプを示す大文字のラベルを用いて、一例を以下に示す:
・ PARTITION_NONE:ブロックサイズに等しい変換サイズを割り当てる。
・ PARTITION_SPLIT:ブロックサイズの幅の1/2およびブロックサイズの高さの1/2である変換サイズを割り当てる。
・ PARTITION_HORZ:ブロックサイズと同じ幅およびブロックサイズの1/2の高さを有する変換サイズを割り当てる。
・ PARTITION_VERT:ブロックサイズの1/2の幅およびブロックサイズと同じ高さを有する変換サイズを割り当てる。
・ PARTITION_HORZ4:ブロックサイズと同じ幅およびブロックサイズの1/4の高さを有する変換サイズを割り当てる。
・ PARTITION_VERT4:ブロックサイズの1/4の幅およびブロックサイズと同じ高さを有する変換サイズを割り当てる。
【0134】
上記の例では、
図17に示すように、変換パーティションタイプはすべて、パーティショニングされた変換ブロックに対して一様な変換サイズを含んでいる。これは、限定ではなく単なる例である。いくつかの他の実装形態では、混合変換ブロックサイズが、特定のパーティションタイプ(またはパターン)中のパーティショニングされた変換ブロックに使用され得る。
【0135】
上記のパーティショニング方式のいずれかから取得されたPB(または予測ブロックにさらにパーティショニングされないときはPBとも呼ばれるCB)は、次いで、イントラ予測またはインター予測のいずれかを介したコーディングのための個々のブロックになり得る。現在PBに対するインター予測の場合、現在ブロックと予測ブロックとの間の残差が生成され、コーディングされ、コーディングされたビットストリーム中に含まれ得る。
【0136】
インター予測は、例えば、単一参照モードまたは複合参照モードで実装され得る。いくつかの実装形態では、現在ブロックがインターコーディングされ、スキップされるべきでないかどうかを示すために、最初に、現在ブロックのための(またはより高いレベルの)ビットストリーム中にスキップフラグが含まれ得る。現在ブロックがインターコーディングされる場合、現在ブロックの予測に単一参照モードが使用されるのか複合参照モードが使用されるのかを示すために、ビットストリーム中に信号として別のフラグがさらに含まれ得る。単一参照モードの場合、現在ブロックのための予測ブロックを生成するために、1つの参照ブロックが使用され得る。複合参照モードの場合、例えば、加重平均によって予測ブロックを生成するために、2つ以上の参照ブロックが使用され得る。複合参照モードは、複数参照モード(more-than-one-reference mode)、2参照モード、または多重参照モード(multiple-reference mode)と呼ばれることがある。1つまたは複数の参照ブロックは、1つまたは複数の参照フレームインデックスを使用して、追加的に、ロケーション、例えば、水平ピクセルおよび垂直ピクセルにおける参照ブロック(複数可)と現在ブロックとの間のシフト(複数可)を示す1つまたは複数の対応する動きベクトルを使用して識別され得る。例えば、現在ブロックのためのインター予測ブロックは、単一参照モードでは、参照フレーム中の1つの動きベクトルによって予測ブロックとして識別される単一参照ブロックから生成され得るが、複合参照モードでは、予測ブロックは、2つの参照フレームインデックスと2つの対応する動きベクトルとによって示される2つの参照フレーム中の2つの参照ブロックの加重平均によって生成され得る。動きベクトル(複数可)は、様々な方法でコーディングされ、ビットストリーム中に含まれ得る。
【0137】
いくつかの実装形態では、符号化または復号システムは、復号ピクチャバッファ(DPB)を維持し得る。いくつかの画像/ピクチャは、(復号システムにおいて)表示されるのを待つDPBにおいて維持され、DPB中のいくつかの画像/ピクチャは、(復号システムまたは符号化システムにおいて)インター予測を可能にするために参照フレームとして使用され得る。いくつかの実装形態では、DPB中の参照フレームは、符号化または復号されている現在の画像のための短期参照または長期参照のいずれかとしてタグ付けされ得る。例えば、短期参照フレームは、現在フレーム中の、または復号順序で現在フレームに最も近い予め定義された数(例えば、2つ)の後続のビデオフレーム中のブロックに対するインター予測に使用されるフレームを含み得る。長期参照フレームは、DPB中に、復号順序で現在フレームから予め定義された数よりも多くの数離れたフレームの画像ブロックを予測するために使用することができるフレームを含み得る。短期参照フレームおよび長期参照フレームのためのそのようなタグに関する情報は、参照ピクチャセット(RPS)と呼ばれることがあり、符号化されたビットストリーム中の各フレームのヘッダに追加され得る。符号化されたビデオストリーム中の各フレームは、ピクチャ順序カウンタ(POC)によって識別され得、これは、絶対的な方法で、または、例えばIフレームから開始するピクチャグループに関連して、再生シーケンスにしたがって番号付けされる。
【0138】
いくつかの例示的な実装形態では、インター予測のための短期参照フレームおよび長期参照フレームの識別を含む1つまたは複数の参照ピクチャリストが、RPS中の情報に基づいて形成され得る。例えば、単方向インター予測のために、L0参照(または参照リスト0)として示される単一のピクチャ参照リストが形成され得、双方向インター予測のために、2つの予測方向の各々についてL0(または参照リスト0)およびL1(または参照リスト1)として示される2つのピクチャ参照リストが形成され得る。L0リストおよびL1リストに含まれる参照フレームは、様々な所定の方法で順序付けられ得る。L0リストおよびL1リストの長さは、ビデオビットストリーム中でシグナリングされ得る。単方向インター予測は、単一参照モード、または複合予測モードにおける加重平均による予測ブロックの生成のための複数の参照が予測されるべきブロックの同じ側にあるときの複合参照モードのいずれかであり得る。双方向インター予測は、双方向インター予測が少なくとも2つの参照ブロックを伴うという点でのみ複合モードであり得る。
【0139】
いくつかの実装形態では、インター予測のためのマージモード(MM)が実装され得る。一般に、マージモードの場合、現在PBのための単一参照予測における動きベクトルまたは複合参照予測における動きベクトルのうちの1つまたは複数は、独立して計算およびシグナリングされるのではなく、他の動きベクトル(複数可)から導出され得る。例えば、符号化システムでは、現在PBのための現在動きベクトル(複数可)は、現在動きベクトル(複数可)と他の1つまたは複数のすでに符号化された動きベクトル(参照動きベクトルと呼ばれる)との間の差分(複数可)によって表され得る。現在動きベクトル(複数可)の全体ではなく動きベクトル(複数可)のそのような差分(複数可)が符号化されて、ビットストリーム中に含まれ得、参照動きベクトル(複数可)にリンクされ得る。それに対応して、復号システムでは、現在PBに対応する動きベクトル(複数可)は、復号された動きベクトル差分(複数可)と、それにリンクされた復号された参照動きベクトル(複数可)とに基づいて導出され得る。一般的なマージモード(MM)インター予測の特定の形態として、動きベクトル差分(複数可)に基づくそのようなインター予測は、動きベクトル差分を用いるマージモード(MMVD)と呼ばれることがある。したがって、一般的なMMまたは特にMMVDは、コーディング効率を高めるために、異なるPBに関連付けられた動きベクトル間の相関を活用するように実装され得る。例えば、隣接するPBは、同様の動きベクトルを有し得るので、MVDは小さくなり得、効率的にコーディングされ得る。別の例では、動きベクトルは、空間内の同様に位置特定/配置されたブロックについて、時間的に(フレーム間で)相関があり得る。
【0140】
いくつかの例示的な実装形態では、現在PBがマージモードにあるかどうかを示すためのMMフラグが、符号化プロセスの間にビットストリーム中に含まれ得る。追加的または代替的に、現在PBがMMVDモードにあるかどうかを示すために、MMVDフラグが符号化プロセスの間にビットストリーム中に含まれ、シグナリングされ得る。MMフラグおよび/またはMMVDフラグまたはインジケータは、PBレベル、CBレベル、CUレベル、CTBレベル、CTUレベル、スライスレベル、ピクチャレベル、シーケンスレベルなどで提供され得る。特定の例について、MMフラグおよびMMVDフラグの両方が現在CUのために含まれ得、MMVDフラグは、現在CUに対してMMVDモードが使用されるかどうかを指定するために、スキップフラグおよびMMフラグの直後にシグナリングされ得る。
【0141】
MMVDのいくつかの例示的な実装形態では、動きベクトル予測のためのマージ候補のリストが、予測されているブロックのために形成され得る。マージ候補のリストは、現在動きベクトルを予測するために動きベクトルが使用され得る、所定の数(例えば、2つ)のMV予測子候補ブロックを含み得る。MVD候補ブロックは、同じフレーム中の隣接ブロックおよび/または時間的ブロック(例えば、現在フレームの先行フレームまたは後続フレーム中の同じように位置特定されたブロック)から選択されたブロックを含み得る。これらのオプションは、現在ブロックと同様または同一の動きベクトルを有する可能性が高い、現在ブロックに対する空間ロケーションまたは時間ロケーションにおけるブロックを表す。MV予測子候補のリストのサイズは、予め決定され得る。例えば、リストは2つの候補を含み得る。マージ候補のリストに載るためには、候補ブロックは、例えば、現在ブロックと同じ参照フレーム(複数可)を有することが必要とされ得、存在しなければならず(例えば、現在ブロックがフレームのエッジの近くにあるとき、境界検査が実行される必要がある)、符号化プロセス中にすでに符号化されており、および/または復号プロセス中にすでに復号されていなければならない。いくつかの実装形態では、マージ候補のリストは、利用可能でかつ上記の条件を満たす場合、まず、(特定の予め定義された順序で走査された)空間的に隣接するブロックで埋められ、次いで、リスト中に依然として利用可能な空間がある場合には、時間ブロックで埋められ得る。隣接候補ブロックは、例えば、現在ブロックの左ブロックおよび上ブロックから選択され得る。マージMV予測子候補のリストは、ビットストリーム中でシグナリングされ得る。
【0142】
いくつかの実装形態では、現在ブロックの動きベクトルを予測するための参照動きベクトルとして使用されている実際のマージ候補がシグナリングされ得る。マージ候補リストが2つの候補を含む場合、参照マージ候補の選択を示すために、マージ候補フラグと呼ばれる1ビットフラグが使用され得る。複合モードで予測されている現在ブロックの場合、MV予測子を使用して予測された複数の動きベクトルの各々は、マージ候補リストからの参照動きベクトルに関連付けられ得る。
【0143】
MMVDのいくつかの例示的な実装形態では、マージ候補が、選択され、予測されるべき動きベクトルのためのベース動きベクトル予測子として使用された後、動きベクトル差分(MVDまたはデルタMV、予測されるべき動きベクトルと参照候補動きベクトルとの間の差分を表す)が符号化システムにおいて計算され得る。そのようなMVDは、MV差分の大きさとMV差分の方向とを表す情報を含み得、それらの両方がビットストリーム中でシグナリングされ得る。動きベクトル差分の大きさおよび動きベクトル差分の方向は、様々な方法でシグナリングされ得る。
【0144】
MMVDのいくつかの例示的な実装形態では、距離インデックスは、動きベクトル差分の大きさ情報を指定するために、および開始点(参照動きベクトル)からの予め定義された動きベクトル差分を表す予め定義されたオフセットのセットのうちの1つを示すために使用され得る。次いで、シグナリングされたインデックスによるMVオフセットが、開始(参照)動きベクトルの水平成分または垂直成分のいずれかに加算され得る。参照動きベクトルの水平成分または垂直成分がオフセットされるべきであるかどうかは、MVDの方向情報によって決定され得る。距離インデックスと予め定義されたオフセットとの間の例示的な予め定義された関係が、表2において定められている。
【表2】
【0145】
MMVDのいくつかの例示的な実装形態では、方向インデックスがさらにシグナリングされ、参照動きベクトルに対するMVDの方向を表すために使用され得る。いくつかの実装形態では、方向は、水平方向および垂直方向のいずれか1つに制限され得る。例示的な2ビット方向インデックスを表3に示す。表3の例では、MVDの解釈は、開始/参照MVの情報にしたがって変化し得る。例えば、開始/参照MVが単予測ブロックに対応するか、または両方の参照フレームリストが現在ピクチャの同じ側を指す(すなわち、2つの参照ピクチャのPOCが両方とも現在ピクチャのPOCよりも大きいかまたは両方とも現在ピクチャのPOCよりも小さい)双予測ブロックに対応するとき、表3中の符号は、開始/参照MVに加算されるMVオフセットの符号(方向)を指定し得る。開始/参照MVが、現在ピクチャの異なる側に2つの参照ピクチャを有する(すなわち、一方の参照ピクチャのPOCが現在ピクチャのPOCよりも大きく、他方の参照ピクチャのPOCが現在ピクチャのPOCよりも小さい)双予測ブロックに対応し、ピクチャ参照リスト0中の参照POCと現在フレームとの間の差分が、ピクチャ参照リスト1中の参照POCと現在フレームとの間の差分よりも大きいとき、表3中の符号は、ピクチャ参照リスト0中の参照ピクチャに対応する参照MVに加算されるMVオフセットの符号を指定し得、ピクチャ参照リスト1中の参照ピクチャに対応するMVのオフセットの符号は、反対の値(オフセットの反対の符号)を有し得る。そうではなく、ピクチャ参照リスト1中の参照POCと現在フレームとの間の差分が、ピクチャ参照リスト0中の参照POCと現在フレームとの間の差分よりも大きい場合、表3中の符号は、ピクチャ参照リスト1に関連付けられた参照MVに加算されるMVオフセットの符号を指定し得、ピクチャ参照リスト0に関連付けられた参照MVへのオフセットの符号は、反対の値を有する。
【表3】
【0146】
いくつかの例示的な実装形態では、MVDは、各方向におけるPOCの差分にしたがってスケーリングされ得る。両方のリストにおけるPOCの差分が同じである場合、スケーリングは必要とされない。そうではなく、参照リスト0中のPOCの差分が参照リスト1のものよりも大きい場合、参照リスト1のためのMVDがスケーリングされる。参照リスト1のPOC差分がリスト0よりも大きい場合、リスト0のためのMVDは、同じ方法でスケーリングされ得る。開始MVが単予測される場合、MVDは、利用可能なまたは参照MVに追加される。
【0147】
双方向複合予測のためのMVDコーディングおよびシグナリングのいくつかの例示的な実装形態では、2つのMVDを別々にコーディングおよびシグナリングすることに加えて、またはその代替として、一方のMVDのみがシグナリングを必要とし、他方のMVDはシグナリングされたMVDから導出され得るように、対称MVDコーディングが実装され得る。そのような実装形態では、リスト0およびリスト1の両方の参照ピクチャインデックスを含む動き情報がシグナリングされる。しかしながら、例えば、参照リスト0に関連付けられたMVDのみがシグナリングされ、参照リスト1に関連付けられたMVDは、シグナリングされるのではなく、導出される。具体的には、スライスレベルで、参照リスト1がビットストリーム中でシグナリングされないかどうかを示すための、「mvd_l1_zero_flag」と呼ばれるフラグがビットストリーム中に含まれ得る。このフラグが1であり、参照リスト-1が0に等しい(したがって、シグナリングされない)ことを示す場合、「BiDirPredFlag」と呼ばれる双方向予測フラグは、双方向予測がないことを意味する0に設定され得る。そうではなく、mvd_l1_zero_flagが0である場合で、リスト0中の最も近い参照ピクチャとリスト1中の最も近い参照ピクチャとが参照ピクチャの前方後方ペアまたは参照ピクチャの後方前方ペアを形成する場合、BiDirPredFlagは1に設定され得、リスト0およびリスト1の参照ピクチャは両方とも短期参照ピクチャである。それ以外の場合、BiDirPredFlagは0に設定される。1のBiDirPredFlagは、対称モードフラグがビットストリーム中で追加的にシグナリングされることを示し得る。デコーダは、BiDirPredFlagが1である場合、ビットストリームから対称モードフラグを抽出し得る。対称モードフラグは、例えば、(必要な場合)CUレベルでシグナリングされ得、対称MVDコーディングモードが対応するCUに対して使用されているかどうかを示し得る。対称モードフラグが1の場合、対称MVDコーディングモードの使用と、(「mvp_l0_flag」および「mvp_l1_flag」と呼ばれる)リスト0およびリスト1の両方の参照ピクチャインデックスのみが、リスト0に関連付けられたMVD(「MVD0」と呼ばれる)とともにシグナリングされ、他方の動きベクトル差分「MVD1」は、シグナリングされるのではなく導出されるべきであることとを示す。例えば、MVD1は、-MVD0として導出され得る。そのため、例示的な対称MVDモードでは1つのMVDのみがシグナリングされる。MV予測のためのいくつかの他の例示的な実装形態では、単一参照モードと複合参照モードの両方のMV予測について、一般的なマージモード、MMVD、およびいくつかの他のタイプのMV予測を実装するために、調和された方式が使用され得る。現在ブロックのためのMVが予測される方法をシグナリングするために、様々なシンタックス要素が使用され得る。
【0148】
例えば、単一参照モードの場合、以下のMV予測モードがシグナリングされ得る:
NEARMV - DRL(動的参照リスト)インデックスによって示されるリスト中の動きベクトル予測子(MVP)のうちの1つを、MVDなしに直接使用する。
NEWMV - DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを参照として使用し、(例えば、MVDを使用して)MVPにデルタを適用する。
GLOBALMV - フレームレベルのグローバル動きパラメータに基づいた動きベクトルを使用する。
【0149】
同様に、予測されるべき2つのMVに対応する2つの参照フレームを使用する複合参照インター予測モードの場合、以下のMV予測モードがシグナリングされ得る:
NEAR_NEARMV - 予測されるべきMVのうちの2つの各々に対して、MVDなしにDRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを使用する。
NEAR_NEWMV - 2つの動きベクトルのうちの第1の動きベクトルを予測するために、DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを、MVDなしの参照MVとして使用し、2つの動きベクトルのうちの第2の動きベクトルを予測するために、DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを、追加でシグナリングされたデルタMV(MVD)とともに参照MVとして使用する。
NEW_NEARMV - 2つの動きベクトルのうちの第2の動きベクトルを予測するために、DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを、MVDなしの参照MVとして使用し、2つの動きベクトルのうちの第1の動きベクトルを予測するために、DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを、追加でシグナリングされたデルタMV(MVD)とともに参照MVとして使用する。
NEW_NEWMV - DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを参照MVとして使用し、2つのMVの各々について予測するために、それを、追加でシグナリングされたデルタMVとともに使用する。
GLOBAL_GLOBALMV - 各参照からのMVを、それらのフレームレベルのグローバル動きパラメータに基づいて使用する。
【0150】
したがって、上記の「NEAR」という用語は、一般マージモードとして、MVDなしに参照MVを使用するMV予測を指し、「NEW」という用語は、MMVDモードの場合のように、参照MVを使用することと、それをシグナリングされたMVDでオフセットすることとを伴うMV予測を指す。複合インター予測の場合、上記の参照ベース動きベクトルと動きベクトルデルタは両方とも、例えば、それらに相関性があり得、そのような相関が、2つの動きベクトルデルタをシグナリングするために必要とされる情報量を低減するために活用され得るとしても、2つの参照の間で一般に異なり得るか、または独立し得る。そのような状況では、以下でさらに詳細に説明するように、2つのMVDの共同シグナリングが実装され、ビットストリーム中で示され得る。
【0151】
上記の動的参照リスト(DRL)は、動的に維持され、候補動きベクトル予測子として考慮されるインデックス付きの動きベクトルのセットを保持するために使用され得る。
【0152】
いくつかの例示的な実装形態では、MVDのための予め定義された解像度が許容され得る。例えば、1/8ピクセルの動きベクトル精度(または正確度)が許容され得る。様々なMV予測モードにおける上記で説明したMVDは、様々な方法で構成され、シグナリングされ得る。いくつかの実装形態では、参照フレームリスト0またはリスト1中の上記の動きベクトル差分(複数可)をシグナリングするために、様々なシンタックス要素が使用され得る。
【0153】
例えば、「mv_joint」と呼ばれるシンタックス要素は、それに関連付けられた動きベクトル差分のどの成分が非ゼロであるかを指定し得る。MVDの場合、これは、すべての非ゼロ成分について共同シグナリングされる。例えば、
0の値を有するmv_jointは、水平方向にも垂直方向にも非ゼロMVDがないことを示し得る。
1の値を有するmv_jointは、水平方向に沿ってのみ非ゼロMVDが存在することを示し得る。
2の値を有するmv_jointは、垂直方向に沿ってのみ非ゼロMVDがあることを示し得る。
3の値を有するmv_jointは、水平方向と垂直方向の両方に沿って非ゼロMVDがあることを示し得る。
【0154】
MVDのための「mv_joint」シンタックス要素が、非ゼロMVD成分がないことをシグナリングするとき、それ以上のMVD情報はシグナリングされなくてもよい。しかしながら、「mv_joint」シンタックスが、1つまたは2つの非ゼロ成分があることをシグナリングする場合、以下で説明するように、非ゼロMVD成分の各々について追加のシンタックス要素がさらにシグナリングされ得る。
【0155】
例えば、「mv_sign」と呼ばれるシンタックス要素は、対応する動きベクトル差分成分が正であるか負であるかを追加的に指定するために使用され得る。
【0156】
別の例では、「mv_class」と呼ばれるシンタックス要素が、対応する非ゼロMVD成分のためのクラスの予め定義されたセットの間で動きベクトル差分のクラスを指定するために使用され得る。動きベクトル差分のための予め定義されたクラスは、例えば、動きベクトル差分の連続する大きさ空間を、各範囲がMVDクラスに対応する重複しない範囲に分割するために使用され得る。したがって、シグナリングされたMVDクラスは、対応するMVD成分の大きさ範囲を示す。以下の表4に示す例示的な実装形態では、より高いクラスは、より大きい大きさの範囲を有する動きベクトル差分に対応する。表4では、シンボル(n,m]は、nピクセルよりも大きく、mピクセル以下である動きベクトル差分の範囲を表すために使用される。
【表4】
【0157】
いくつかの他の例では、非ゼロ動きベクトル差分成分と、対応してシグナリングされたMVクラス大きさ範囲の開始の大きさとの間のオフセットの整数部分を指定するために、「mv_bit」と呼ばれるシンタックス要素がさらに使用され得る。各MVDクラスの全範囲をシグナリングするための「mv_bit」で必要とされるビット数は、MVクラスの関数として変化し得る。例として、表4の実装形態におけるMV_CLASS 0およびMV_CLASS 1は、0の開始MVDから1または2の整数ピクセルオフセットを示すために単一ビットを必要とするにすぎず、表4の例示的な実装形態におけるより高い各MV_CLASSは、「mv_bit」に対して、前のMV_CLASSよりも漸進的に1ビット多いビットを必要とし得る。
【0158】
いくつかの他の例では、「mv_fr」と呼ばれるシンタックス要素は、対応する非ゼロMVD成分のための動きベクトル差分の最初の2つの分数ビットを指定するためにさらに使用され得、「mv_hp」と呼ばれるシンタックス要素は、対応する非ゼロMVD成分のための動きベクトル差分の3番目の分数ビット(高解像度ビット)を指定するために使用され得る。2ビットの「mv_fr」は、本質的に、1/4ピクセルMVD解像度を提供し、「mv_hp」ビットは、1/8ピクセル解像度をさらに提供し得る。いくつかの他の実装形態では、1/8ピクセルよりも細かいMVDピクセル解像度を提供するために、2つ以上の「mv_hp」ビットが使用され得る。いくつかの例示的な実装形態では、1/8ピクセル以上のMVD解像度がサポートされるかどうかを示すために、様々なレベルのうちの1つまたは複数において追加のフラグがシグナリングされ得る。MVD解像度が特定のコーディングユニットに適用されない場合、対応するサポートされていないMVD解像度のための上記のシンタックス要素はシグナリングされなくてもよい。
【0159】
上記のいくつかの例示的な実装形態では、分数解像度は、MVDの異なるクラスとは無関係であり得る。言い換えると、動きベクトル差分の大きさにかかわらず、非ゼロMVD成分の分数MVDをシグナリングするための予め定義された数の「mv_fr」および「mv_hp」ビットを使用して、動きベクトル解像度のための同様のオプションが提供され得る。
【0160】
しかしながら、いくつかの他の例示的な実装形態では、様々なMVD大きさクラスにおける動きベクトル差分のための解像度が区別され得る。具体的には、より高いMVDクラスの大きいMVD大きさのための高解像度MVDは、統計的に、圧縮効率において有意な向上をもたらさないことがある。そのため、MVDは、より高いMVD大きさクラスに対応する、より大きいMVD大きさ範囲に対して、解像度を減少させて(整数ピクセル解像度または分数ピクセル解像度で)コーディングされ得る。同様に、MVDは、一般に、より大きいMVD値に対して、解像度を減少させて(整数ピクセル解像度または分数ピクセル解像度で)コーディングされ得る。そのようなMVDクラス依存またはMVD大きさ依存のMVD解像度は、一般に、適応MVD解像度と呼ばれることがある。適応MVD解像度は、全体的により良好な圧縮効率を達成するために、以下の例示的な実装形態によって説明されるような様々な状況(matter)で実装され得る。特に、より精度の低いMVDを対象とすることによるシグナリングビット数の削減は、そのようなより精度の低いMVDの結果としてインター予測残差をコーディングするために必要とされる追加のビットよりも大きくなり得、これは、適応されない方法で、大きい大きさのまたは高いクラスのMVDのためのMVD解像度を、小さい大きさまたは低いクラスのMVDのためのMVD解像度と同様のレベルで扱かっても、大きい大きさまたは高いクラスのMVDを有するブロックのインター予測残差コーディング効率を有意に向上させることができないという統計的観測によるものである。言い換えると、大きい大きさまたは高いクラスのMVDに対してより高いMVD解像度を使用しても、より低いMVD解像度を使用する場合よりも多くのコーディング利得をもたらさないことがある。
【0161】
いくつかの一般的な例示的な実装形態では、MVDのためのピクセル解像度または精度は、MVDクラスが増加するにつれて減少し得るか、または増加しないことがある。MVDのためのピクセル解像度を減少させることは、より粗いMVD(または、あるMVDレベルから次のMVDレベルへのより大きいステップ)に対応する。いくつかの実装形態では、MVDピクセル解像度とMVDクラスとの間の対応は、指定されるか、予め定義されるか、または事前設定され得、したがって、符号化ビットストリーム中でシグナリングされる必要がないであろう。
【0162】
いくつかの例示的な実装形態では、表3のMVクラスはそれぞれ、異なるMVDピクセル解像度に関連付けられ得る。
【0163】
いくつかの例示的な実装形態では、各MVDクラスは、単一の許容解像度に関連付けられ得る。いくつかの他の実装形態では、1つまたは複数のMVDクラスは、2つ以上のオプションのMVDピクセル解像度に関連付けられ得る。したがって、そのようなMVDクラスを有する現在のMVD成分のためのビットストリーム中の信号の後に、どのオプションのピクセル解像度が現在のMVD成分のために選択されるかを示すための追加のシグナリングが続き得る。
【0164】
いくつかの例示的な実装形態では、適応的に許容されるMVDピクセル解像度は、(解像度の降順で)1/64ペル(ピクセル)、1/32ペル、1/16ペル、1/8ペル、1/4ペル、1/2ペル、1ペル、2ペル、4ペル…を含み得るが、これらに限定されない。そのため、昇順のMVDクラスのそれぞれが、非昇順方法でこれらの解像度のうちの1つに関連付けられ得る。いくつかの実装形態では、MVDクラスは、上記の2つ以上の解像度に関連付けられ得、より高い解像度は、先行するMVDクラスのためのより低い解像度以下であり得る。例えば、表4のMV_CLASS_3がオプションの1ペルおよび2ペル解像度に関連付けられ得る場合、表4のMV_CLASS_4が関連付けられ得る最高解像度は2ペルになる。いくつかの他の実装形態では、MVクラスのための最高許容解像度は、先行する(より低い)MVクラスの最低許容解像度よりも高くてもよい。しかしながら、昇順MVクラスのための許容解像度の平均は、非昇順のみであり得る。
【0165】
いくつかの実装形態では、1/8ペルよりも高い分数ピクセル解像度が許容される場合、「mv_fr」および「mv_hp」シグナリングが、合計で3を超える分数ビットに対応して拡張され得る。
【0166】
いくつかの例示的な実装形態では、分数ピクセル解像度は、しきい値MVDクラス以下のMVDクラスについてのみ許容され得る。例えば、分数ピクセル解像度は、MV_CLASS_0に対してのみ許容され、表4のすべての他のMVクラスに対しては許容されないことがある。同様に、分数ピクセル解像度は、表4の他のMVクラスのいずれか1つ以下のMVDクラスに対してのみ許容にされ得る。しきい値MVDクラスを上回る他のMVDクラスについては、MVDのための整数ピクセル解像度のみが許容される。そのような方法では、「mv_fr」および/または「mv_hp」ビットのうちの1つまたは複数などの分数解像度シグナリングは、しきい値MVDクラス以上のMVDクラスでシグナリングされるMVDについてはシグナリングの必要がないことがある。1ピクセル未満の解像度を有するMVDクラスの場合、「mv_bit」シグナリング中のビット数はさらに低減され得る。例えば、表4中のMV_CLASS_5の場合、MVDピクセルオフセットの範囲は(32,64]であるので、1ペル解像度で範囲全体をシグナリングするためには5ビットが必要である。しかしながら、MV_CLASS_5が2ペルMVD解像度(1ピクセル解像度よりも低い解像度)に関連付けられる場合、5ビットではなく4ビットが「mv_bit」に必要であり得、「mv_fr」および「mv_hp」のいずれも、MV_CLASS_5としての「mv_class」のシグナリングに続いてシグナリングされる必要はない。
【0167】
いくつかの例示的な実装形態では、分数ピクセル解像度は、しきい値整数ピクセル値を下回る整数値を有するMVDについてのみ許容され得る。例えば、分数ピクセル解像度は、5ピクセル未満のMVDに対してのみ許容され得る。この例に対応して、分数解像度は、表4のMV_CLASS_0およびMV_CLASS_1に対しては許容され、他すべてのMVクラスに対しては許容されないであろう。別の例では、分数ピクセル解像度は、7ピクセル未満のMVDに対してのみ許容され得る。この例に対応して、分数解像度は、(5ピクセルを下回る範囲を有する)表4のMV_CLASS_0およびMV_CLASS_1に対しては許容され、(5ピクセルを上回る範囲を有する)MV_CLASS_3およびそれ以上に対しては許容されないことがある。ピクセル範囲が5ピクセルを含むMV_CLASS_2に属するMVDの場合、MVDのための分数ピクセル解像度は、「mv_bit」値に応じて許容される場合も許容されない場合もあり得る。「mv_bit」値が1または2としてシグナリングされる場合(「mv_bit」によって示されるオフセット1または2を有するMV_CLASS_2のためのピクセル範囲の開始として計算される、シグナリングされるMVDの整数部分が5または6となる)、分数ピクセル解像度が許容され得る。そうではなく、「mv_bit」値が3または4としてシグナリングされる場合(シグナリングされたMVDの整数部分が7または8となる)、分数ピクセル解像度は許容されないことがある。
【0168】
いくつかの他の実装形態では、しきい値MVクラス以上のMVクラスの場合、単一のMVD値のみが許容され得る。例えば、そのようなしきい値MVクラスはMV_CLASS 2であり得る。したがって、MV_CLASS_2以上は、単一のMVD値を有することのみが許容され得、分数ピクセル解像度を有さない。これらのMVクラスのための単一の許容MVD値は、予め定義され得る。いくつかの例では、許容される単一の値は、表4中のこれらのMVクラスのためのそれぞれの範囲の上端値であり得る。例えば、MV_CLASS_2~MV_CLASS_10は、MV_CLASS 2のしきい値クラス以上であり得、これらのクラスのための許容される単一のMVD値は、それぞれ、8、16、32、64、128、256、512、1024、および2048として予め定義され得る。いくつかの他の例では、許容される単一の値は、表4中のこれらのMVクラスについてのそれぞれの範囲の中間値であり得る。例えば、MV_CLASS_2~MV_CLASS_10は、クラスしきい値を上回り得、これらのクラスのための許容される単一のMVD値は、それぞれ、3、6、12、24、48、96、192、384、768、および1536として予め定義され得る。範囲内の任意の他の値もまた、それぞれのMVDクラスのための単一の許容される解像度として定義され得る。
【0169】
上記の実装形態では、シグナリングされた「mv_class」が予め定義されたMVDクラスしきい値以上であるとき、MVD値を決定するためには「mv_class」シグナリングのみで十分である。次いで、MVDの大きさおよび方向が、「mv_class」および「mv_sign」を使用して決定されることとなる。
【0170】
そのため、MVDが(両方ではなく参照フレームリスト0またはリスト1のいずれかから)1つの参照フレームのみのためにシグナリングされるか、または2つの参照フレームのために共同シグナリングされる場合、MVDの精度(または解像度)は、表3中の動きベクトル差分の関連するクラスおよび/またはMVDの大きさに依存し得る。
【0171】
いくつかの他の実装形態では、MVDについてのピクセル解像度または精度は、MVD大きさが増加するにつれて減少し得るか、または増加しないことがある。例えば、ピクセル解像度は、MVD大きさの整数部分に依存し得る。いくつかの実装形態では、分数ピクセル解像度は、大きさ(amplitude)しきい値以下のMVD大きさに対してのみ許容され得る。デコーダの場合、最初に、MVD大きさの整数部分がビットストリームから抽出され得る。次いで、ピクセル解像度が決定され得、次いで、任意の分数MVDがビットストリーム中に存在し、パースされる必要があるかどうかに関して決定が行われ得る(例えば、分数ピクセル解像度が特定の抽出されたMVD整数大きさに対して許容されない場合、抽出を必要とするビットストリーム中に分数MVDビットは含まれないであろう)。MVDクラス依存適応MVDピクセル解像度に関連する上記の例示的な実装形態は、MVD大きさ依存適応MVDピクセル解像度に適用される。特定の例では、大きさしきい値を上回るかまたは包含するMVDクラスは、1つの予め定義された値のみを有することが許容され得る。
【0172】
上記の様々な例示的な実装形態は、単一参照モードに適用される。これらの実装形態は、MMVD下での複合予測における例示的なNEW_NEARMV、NEAR_NEWMV、および/またはNEW_NEWMVモードにも適用される。これらの実装形態は、一般に、任意のMVDのための適応解像度に適用される。
【0173】
いくつかの例示的な実装形態では、適応解像度を有するMVDは、本明細書では「ADAPTMV」または「ADAPTIVEMV」または「ADVANCEDMV」モードと呼ばれる別個のインター予測単一参照モードとして扱われ得る。通常のイントラ予測モードまたはインター予測モードと同様に、そのような適応単一参照インターコーディングモードは、フレームレベル、ピクチャレベル、コーディングブロックレベル、および他のレベルで決定および指定され得る。そのようなモードの仕様は、(1)対応するコーディングブロックがインターコーディングされること、(2)コーディングブロックが単一参照フレーム内の予測ブロックによって予測されること、(3)対応する動きベクトルも参照動きベクトルおよびMVDを介して予測されること、および(4)MVDのコーディングのために適応解像度が適用されることを示す。例えば、MVDピクセル解像度は、上記で説明したように、MVDクラスおよび/またはMVD大きさに依存し得る。
【0174】
いくつかの例では、適応ピクセル解像度を有するそのような単一参照インター予測モードは、通常インター予測モードのサブ予測モードとして実装され得、したがって、通常インター予測フラグの後にシグナリングされ得る。いくつかの特定の実装形態では、ADAPTMVモードをシグナリングするためのフラグは、ビットストリーム中のインター予測のための参照フレームに対するフレームインデックスに続き得る。
【0175】
上記で説明したように、単一参照インター予測モード下で、MVは、様々な方法で予測または構築され得、MVDを伴う場合も伴わない場合もある。例えば、NEWMVモードでは、MVは、MVDとともに参照MVによって予測されるが、NEARMVモードでは、MVは、MVDなしで参照MVによって直接予測される。さらに、GLOBALMVモードでは、MVは、任意の参照MVまたはMVDではなく、フレームレベルのグローバル動きパラメータに基づく。いくつかの例示的な実装形態では、追加されたADAPTMVモードは、これらの3つのモードと並行して実装され得る。そのため、単一参照インター予測アンブレラの下で以下の4つのサブモードが実装され得る:
ADAPTMV - DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを参照として使用し、適応ピクセル解像度または精度で(例えば、MVDを使用して)MVPにデルタを適用する;
NEWMV - DRLインデックスによってシグナリングされたリスト中の動きベクトル予測子(MVP)のうちの1つを参照として使用し、固定または非適応ピクセル解像度で(例えば、MVDを使用して)MVPにデルタを適用する;
NEARMV - DRL(動的参照リスト)インデックスによって示されるリスト中の動きベクトル予測子(MVP)のうちの1つを、MVDなしに直接使用する。
GLOBALMV - フレームレベルのグローバル動きパラメータに基づいた動きベクトルを使用する。
【0176】
したがって、これらの4つの単一参照インター予測モードは、上記で説明したような他のMVDおよびMV関連シンタックスの中で、1つのシンタックスを用いてビットストリーム中でシグナリングされ得る。
【0177】
いくつかの例示的な実装形態では、ADAPTMVモードをシグナリングするためのコンテキスト割り当ては、NEWMV、NEARMV、およびGLOBALMVのためのものと同じであり得る。言い換えると、これらのモードが同じシンタックスの下でシグナリングされるか否かにかかわらず、それらは、例えば、コンテキストベース適応バイナリ算術コーディング(CABAC)アルゴリズムを使用して、エントロピーコーディング中に同じ確率モデルを使用して符号化され得る。
【0178】
いくつかの例示的な実装形態では、様々なMVD関連シンタックスをシグナリングするためのコンテキスト導出は、MVDピクセル解像度が適応的であるか否かに依存し得る。MVD関連シンタックスの例としては、上記で説明したmv_joint、mv_bit、mv_sign、mv_class、mv_fr、およびmv_hp、ならびに他のMVD関連シンタックスが挙げられ得るが、それに限定されない。そのため、これらのMVDシンタックスは、ADAPTMVモードのシグナリングの後にシグナリングされ得、コンテキストまたは確率モデルは、ADAPTMVモードがビットストリーム中でシグナリングされるかどうかを考慮することによって導出され得る。したがって、そのような実装形態は、ADAPTMVモードまたは非ADAPTMVモードにおけるこれらのMVD関連シンタックスのためのシンボルの確率分布の差を考慮に入れる。
【0179】
例えば、mv_jointまたはmv_classについての確率分布は、ADAPTMVモードが使用されるときとADAPTMVモードが使用されないときとの間で異なり得る。具体的な例では、mv_classの場合、表4の下位クラスにあまり集中していない分布は、適応解像度でコーディングされ、ADAPTMVモードに関連付けられる可能性がより高くなり得る。そのため、いくつかの例示的な実装形態では、現在ブロックがADAPTMVモードでコーディングされる場合、1つのコンテキストが、mv_joint(またはmv_class)をシグナリングするために使用されるものとして導出され得る。そうでない場合、別の1つまたは複数の異なるコンテキストが、mv_joint(またはmv_class)をシグナリングするために使用され得る。
【0180】
図18は、適応MVD解像度およびそのシグナリングのための上記の実装形態の基礎をなす原理に従う例示的な方法のフローチャート1800を示す。例示的な復号方法フローは、S1801から開始する。S1810において、ビデオストリームが受信される。S1820において、1つまたは複数のビデオブロックについてADAPTMVモードがシグナリングされるかどうかを決定するために、インター予測シンタックス要素がビデオストリームから抽出され、ADAPTMVモードは、適応動きベクトル差分(MVD)ピクセル解像度を有する単一参照インター予測モードである。S1830において、ADAPTMVモードがインター予測シンタックス要素中でシグナリングされるかどうかに基づいて、1つまたは複数のビデオブロックに関連付けられた現在のMVDピクセル解像度が決定される。S1840において、ADAPTMVモードがインター予測シンタックス要素中でシグナリングされるかどうかに基づいて、および現在のMVDピクセル解像度にさらに基づいて、1つまたは複数のビデオブロックに関連付けられた1つまたは複数のMVD関連シンタックス要素が抽出され、復号される。
【0181】
本開示の実施形態および実装形態では、任意のステップおよび/または動作は、必要に応じて、任意の量または順序で組み合わせられるかまたは配置され得る。ステップおよび/または動作のうちの2つ以上は、並行して行われてもよい。本開示における実施形態および実装形態は、別々に使用されてもよく、または任意の順序で組み合わされてもよい。さらに、方法(または実施形態)、エンコーダ、およびデコーダの各々は、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装され得る。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。本開示における実施形態は、ルーマブロックまたはクロマブロックに適用され得る。ブロックという用語は、予測ブロック、コーディングブロック、またはコーディングユニット、すなわち、CUとして解釈され得る。本明細書におけるブロックという用語は、変換ブロックを指すためにも使用され得る。以下の項目において、ブロックサイズについて言及するとき、それは、ブロックの幅もしくは高さ、または幅および高さの最大値、または幅および高さの最小値、またはエリアサイズ(幅*高さ)、またはブロックのアスペクト比(幅:高さ、または高さ:幅)のいずれかを指し得る。
【0182】
上記で説明した技法は、コンピュータ可読命令を使用してコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶され得る。例えば、
図19は、開示される主題の特定の実施形態を実装するのに適したコンピュータシステム(1900)を示す。
【0183】
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックス処理ユニット(GPU)などによって、直接、または解釈、マイクロコード実行などを通して実行され得る命令を含むコードを作成するために、アセンブリ、コンパイル、リンキング、または同様の機構に従い得る、任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされ得る。
【0184】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーミングデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータまたはその構成要素上で実行され得る。
【0185】
コンピュータシステム(1900)に関して
図19に示される構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関していかなる限定を示唆することも意図されていない。また、構成要素の構成は、コンピュータシステム(1900)の例示的な実施形態に示される構成要素のいずれか1つまたは組み合わせに関するいかなる依存性または要件も有するものと解釈されるべきではない。
【0186】
コンピュータシステム(1900)は、特定のヒューマンインターフェース入力デバイスを含み得る。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(音声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(図示せず)を通した一人または複数の人間のユーザによる入力に反応し得る。ヒューマンインターフェースデバイスはまた、オーディオ(発話、音楽、周囲音など)、画像(スキャンされた画像、静止画像カメラから取得された写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)などの、人間による意識的な入力に必ずしも直接関係しない特定のメディアをキャプチャするために使用され得る。
【0187】
入力ヒューマンインターフェースデバイスは、キーボード(1901)、マウス(1902)、トラックパッド(1903)、タッチスクリーン(1910)、データグローブ(図示せず)、ジョイスティック(1905)、マイクロフォン(1906)、スキャナ(1907)、カメラ(1908)のうちの1つまたは複数(各々1つのみが示されている)を含み得る。
【0188】
コンピュータシステム(1900)はまた、特定のヒューマンインターフェース出力デバイスを含み得る。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味を通して、一人または複数の人間のユーザの感覚を刺激し得る。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1910)、データグローブ(図示せず)、またはジョイスティック(1905)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスも存在し得る)、オーディオ出力デバイス(スピーカ(1909)、ヘッドフォン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1910)などであり、それぞれがタッチスクリーン入力機能を有するかまたは有さず、それぞれが触覚フィードバック機能を有するかまたは有さず、そのうちのいくつかは、ステレオグラフィック出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず)などの手段により2次元視覚出力または3次元を超える出力を出力することが可能であり得る)、およびプリンタ(図示せず)を含み得る。
【0189】
コンピュータシステム(1900)はまた、人間がアクセス可能な記憶デバイスと、CD/DVDまたは同様の媒体(1921)を有するCD/DVD ROM/RW(1920)を含む光媒体、サムドライブ(1922)、リムーバブルハードドライブまたはソリッドステートドライブ(1923)、テープおよびフロッピー(登録商標)ディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず)など、それらの関連媒体とを含むことができる。
【0190】
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解すべきである。
【0191】
コンピュータシステム(1900)はまた、1つまたは複数の通信ネットワーク(1955)へのインターフェース(1954)を含むことができる。ネットワークは、例えば、ワイヤレス、ワイヤライン、光とすることができる。ネットワークはさらに、ローカル、ワイドエリア、都市、車両および産業、リアルタイム、遅延耐性などとすることができる。ネットワークの例としては、イーサネット(登録商標)などのローカルエリアネットワーク、ワイヤレスLAN、GSM(登録商標)、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上波放送TVを含むTVワイヤラインまたはワイヤレスワイドエリアデジタルネットワーク、CANBusを含む車両および産業用などが挙げられる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(1949)(例えば、コンピュータシステム(1900)のUSBポートなど)に取り付けられた外部ネットワークインターフェースアダプタを必要とし、他のものは、一般に、以下で説明するようにシステムバスに取り付けることによってコンピュータシステム(1900)のコアに統合される(例えば、PCコンピュータシステムへのイーサネット(登録商標)インターフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(1900)は、他のエンティティと通信することができる。そのような通信は、単方向受信専用(例えば、放送TV)、単方向送信専用(例えば、特定のCANbusデバイスへのCANbus)、または、例えば、ローカルまたはワイドエリアデジタルネットワークを使用する他のコンピュータシステムへの双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上記で説明したように、これらのネットワークおよびネットワークインターフェースの各々で使用され得る。
【0192】
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピュータシステム(1900)のコア(1940)に取り付けられ得る。
【0193】
コア(1940)は、1つまたは複数の中央処理装置(CPU)(1941)、グラフィックス処理ユニット(GPU)(1942)、フィールドプログラマブルゲートエリア(FPGA)(1943)の形態の専用プログラマブル処理ユニット、特定のタスクのためのハードウェアアクセラレータ(1944)、グラフィックスアダプタ(1950)などを含むことができる。これらのデバイスは、読取り専用メモリ(ROM)(1945)、ランダムアクセスメモリ(1946)、ユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量記憶装置(1947)とともに、システムバス(1948)を通して接続され得る。いくつかのコンピュータシステムでは、システムバス(1948)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺デバイスは、コアのシステムバス(1948)に直接、または周辺バス(1949)を通して接続され得る。一例では、スクリーン(1910)は、グラフィックスアダプタ(1950)に接続され得る。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
【0194】
CPU(1941)、GPU(1942)、FPGA(1943)、およびアクセラレータ(1944)は、組み合わせて前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1945)またはRAM(1946)に記憶され得る。過渡的なデータもRAM(1946)に記憶され得、永続的なデータは、例えば、内部大容量記憶装置(1947)に記憶され得る。メモリデバイスのうちのいずれかへの高速記憶および取出しは、キャッシュメモリの使用により可能にされ得、キャッシュメモリは、1つまたは複数のCPU(1941)、GPU(1942)、大容量記憶装置(1947)、ROM(1945)、RAM(1946)などと密接に関連付けられ得る。
【0195】
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されてもよいし、コンピュータソフトウェア分野の当業者に周知でかつ利用可能な種類のものであってもよい。
【0196】
限定としてではなく一例として、アーキテクチャを有するコンピュータシステム(1900)、具体的にはコア(1940)は、1つまたは複数の有形のコンピュータ可読媒体に具現化されたソフトウェアをプロセッサ(複数可)(CPU、GPU、FPGA、アクセラレータなどを含む)が実行した結果として、機能性を提供することができる。そのようなコンピュータ可読媒体は、上記で紹介したようなユーザアクセス可能な大容量記憶装置、ならびにコア内部大容量記憶装置(1947)またはROM(1945)などの非一時的な性質のものであるコア(1940)の特定の記憶装置に関連付けられた媒体であり得る。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶され、コア(1940)によって実行され得る。コンピュータ可読媒体は、特定のニーズにしたがって、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1940)および具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(1946)に記憶されたデータ構造を定義することおよびソフトウェアによって定義されたプロセスにしたがってそのようなデータ構造を修正することを含む、本明細書に説明される特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えてまたは代替として、コンピュータシステムは、回路(例えば、アクセラレータ(1944))内にハードワイヤードまたは別様に具現化されたロジックの結果として機能性を提供することができ、それは、ソフトウェアの代わりにまたはそれとともに動作して、本明細書に説明される特定のプロセスまたは特定のプロセスの特定の部分を実行することができる。ソフトウェアへの言及は、必要に応じて、ロジックを包含することができ、逆もまた同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
【0197】
本開示は、いくつかの例示的な実施形態を説明してきたが、本開示の範囲内に入る変更、置換、および様々な代替の同等物が存在する。したがって、当業者であれば、本明細書に明示的に図示または説明されていないが、本開示の原理を具現化し、したがって、その趣旨および範囲内である、多数のシステムおよび方法を考案することができるであろうことは理解されよう。
[付録A:頭字語]
JEM:joint exploration model(ジョイント探索モデル)
VVC:versatile video coding(多用途ビデオコーディング)
BMS:benchmark set(ベンチマークセット)
MV:Motion Vector(動きベクトル)
HEVC:High Efficiency Video Coding(高効率ビデオコーディング)
SEI:Supplementary Enhancement Information(補足エンハンスメント情報)
VUI:Video Usability Information(ビデオユーザビリティ情報)
GOPs:Groups of Pictures(グループオブピクチャ)
TUs:Transform Units(変換ユニット)
PUs:Prediction Units(予測ユニット)
CTUs:Coding Tree Units(コーディングツリーユニット)
CTB:Coding Tree Blocks(コーディングツリーブロック)
PB:Prediction Blocks(予測ブロック)
HRD:Hypothetical Reference Decoder(仮想参照デコーダ)
SNR:Signal Noise Ratio(信号対雑音比)
CPUs:Central Processing Units(中央処理装置)
GPUs:Graphics Processing Units(グラフィックス処理ユニット)
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 communications(グローバル・システム・フォー・モバイル・コミュニケーションズ)
LTE:Long-Term Evolution(ロングタームエボリューション)
CANBus:Controller Area Network Bus(コントローラエリアネットワークバス)
USB:Universal Serial Bus(ユニバーサル・シリアル・バス)
PCI:Peripheral Component Interconnect(周辺機器相互接続)
FPGA:Field Programmable Gate Areas(フィールドプログラマブルゲートエリア)
SSD:solid-state drive(ソリッドステートドライブ)
IC:Integrated Circuit(集積回路)
HDR:high dynamic range(高ダイナミックレンジ)
SDR:standard dynamic range(標準ダイナミックレンジ)
JVET:Joint Video Exploration Team(共同ビデオ探索チーム)
MPM:most probable mode(最確モード)
WAIP:Wide-Angle Intra Prediction(広角イントラ予測)
CU:Coding Unit(コーディングユニット)
PU:Prediction Unit(予測ユニット)
TU:Transform Unit(変換ユニット)
CTU:Coding Tree Unit(コーディングツリーユニット)
PDPC:Position Dependent Prediction Combination(位置依存予測の組み合わせ)
ISP:Intra Sub-Partitions(イントラサブパーティション)
SPS:Sequence Parameter Set(シーケンスパラメータセット)
PPS:Picture Parameter Set(ピクチャパラメータセット)
APS:Adaptation Parameter Set(適応パラメータセット)
VPS:Video Parameter Set(ビデオパラメータセット)
DPS:Decoding Parameter Set(復号パラメータセット)
ALF:Adaptive Loop Filter(適応ループフィルタ)
SAO:Sample Adaptive Offset(サンプル適応オフセット)
CC-ALF:Cross-Component Adaptive Loop Filter(クロスコンポーネント適応ループフィルタ)
CDEF:Constrained Directional Enhancement Filter(制約付き指向性強調フィルタ)
CCSO:Cross-Component Sample Offset(クロスコンポーネントサンプルオフセット)
LSO:Local Sample Offset(ローカルサンプルオフセット)
LR:Loop Restoration Filter(ループ復元フィルタ)
AV1:AOMedia Video 1(AOMediaビデオ1)
AV2:AOMedia Video 2(AOMediaビデオ2)
MVD:Motion Vector difference(動きベクトル差分)
CfL:Chroma from Luma(ルーマからのクロマ)
SDT:Semi Decoupled Tree(半分離ツリー)
SDP:Semi Decoupled Partitioning(半分離パーティショニング)
SST:Semi Separate Tree(半分離ツリー)
SB:Super Block(スーパーブロック)
IBC(またはIntraBC):Intra Block Copy(イントラブロックコピー)
CDF:Cumulative Density Function(累積密度関数)
SCC:Screen Content Coding(画面コンテンツコーディング)
GBI:Generalized Bi-prediction(一般化双予測)
BCW:Bi-prediction with CU-level Weights(CUレベルの重みによる双予測)
CIIP:Combined intra-inter prediction(複合イントラ-インター予測)
POC:Picture Order Counter(ピクチャ順序カウンタ)
RPS:Reference Picture Set(参照ピクチャセット)
DPB:Decoded Picture Buffer(復号ピクチャバッファ)
MMVD:Merge Mode with Motion Vector Difference(動きベクトル差分を用いるマージモード)
【国際調査報告】