本開示は、1つまたは複数の小ブロックサイズと、ローカルデュアルツリーの実行とに向けられた実施形態を含む。実施形態は、小ブロック(例えば、小クロマブロック)の制約およびローカルデュアルツリーの使用を改善するための方法、装置、および非一時的なコンピュータ可読記憶媒体を含む。また、ブロックは、予測ブロック、コーディングブロック、またはコーディングユニットをいう場合がある。
I.ビデオ符号化のためのエンコーダおよびデコーダ
図2は、本開示の一実施形態による通信システム(200)の簡略化したブロック図を示す。通信システム(200)は、例えば、ネットワーク(250)を介して、互いに通信可能な複数の端末装置を含む。例えば、通信システム(200)は、ネットワーク(250)を介して相互に接続された第1の対の端末装置(210)および(220)を含む。図2の例において、第1の対の端末装置(210)および(220)は、データの一方向送信を実行する。例えば、端末装置(210)は、ネットワーク(250)を介して他の端末装置(220)に送信するためにビデオデータ(例えば、端末装置(210)によりキャプチャされたビデオ画像のストリーム)をコーディングしてもよい。エンコード化されたビデオデータは、1つまたは複数の符号化されたビデオビットストリームの形態で送信されてもよい。端末装置(220)は、ネットワーク(250)から符号化されたビデオデータを受信し、符号化されたビデオデータを復号してビデオ画像を復元し、復元されたビデオデータに従ってビデオ画像を表示してもよい。データの一方向伝送は、メディアサービングアプリケーションなどにおいて一般的であり得る。
別の例において、通信システム(200)は、例えばビデオ会議中に発生し得る符号化されたビデオデータの双方向伝送を行う第2の対の端末装置(230)および(240)を含む。一例において、端末装置(230)および(240)の各端末装置は、データの双方向伝送のために、ネットワーク(250)を介して端末装置(230)および(240)のうちの他方の端末装置に送信するためにビデオデータ(例えば、端末装置によってキャプチャされたビデオ画像のストリーム)をコーディングしてもよい。また、端末装置(230)および(240)の各端末装置は、端末装置(230)および(240)の他の端末装置から送信された符号化されたビデオデータを受信し、符号化されたビデオデータを復号してビデオ画像を復元し、復元されたビデオデータに従ってアクセス可能な表示装置にビデオ画像を表示してもよい。
図2の例では、端末装置(210)、(220)、(230)および(240)は、サーバ、パーソナルコンピュータおよびスマートフォンとして例示されていてもよいが、本開示の原理はそのようには限定されなくてもよい。本開示の各実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤーおよび/または専用のビデオ会議装置に適用することができる。ネットワーク(250)は、例えば有線(ワイアード)および/または無線通信ネットワークを含む端末装置(210)、(220)、(230)、(240)間で、符号化されたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(250)は、回路スイッチおよび/またはパケットスイッチ型チャネルでデータを交換してもよい。代表的なネットワークには、通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットが含まれる。本記述内容の範囲において、ネットワーク(250)のアーキテクチャおよびトポロジーは、以下で説明されていない限り、本開示の動作に関して重要ではない場合がある。
図3は、開示された主題の適用の一例として、ストリーミング環境におけるビデオエンコーダとビデオデコーダとの配置を示したものである。開示された主題は、例えば、ビデオ会議、デジタルテレビ、およびCD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの保存などを含む、他のビデオ対応用途にも同様に適用することができる。
ストリーミングシステムは、キャプチャサブシステム(313)を含んでもよく、これは、例えばデジタルカメラなどのビデオソース(301)を含むことができ、例えば圧縮されていないビデオ画像のストリーム(302)を作成することができる。一例において、ビデオ画像のストリーム(302)は、デジタルカメラで撮影されたサンプルを含む。ビデオ画像のストリーム(302)は、エンコードされたビデオデータ(304)(または符号化されたビデオビットストリーム)に比してデータ量が多いことを強調するために太線により示されているが、ビデオソース(301)に接続されたビデオエンコーダ(303)を含む電子デバイス(320)によって処理されてもよい。ビデオエンコーダ(303)は、以下でより詳細に説明するように、開示された主題の態様を可能にする、または実行するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含んでもよい。ビデオ画像のストリーム(302)に比しデータ量が少ないことを強調するために細線で示されているエンコードされたビデオデータ(304)(またはエンコードされたビデオビットストリーム(304))は、将来の使用のためにストリーミングサーバ(305)に保存されてもよい。図3のクライアントサブシステム(306)および(308)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(305)にアクセスして、エンコードされたビデオデータ(304)のコピー(307)および(309)を取得することができる。クライアントサブシステム(306)は、例えば、電子デバイス(330)にビデオデコーダ(310)を含んでもよい。ビデオデコーダ(310)は、エンコードされたビデオデータの入力されるコピー(307)を復号し、ディスプレイ(312)(例えば、表示画面)または他のレンダリングデバイス(図示せず)上でレンダリングできるビデオ画像の発信ストリーム(311)を作成する一部のストリーミングシステムにおいて、エンコードされたビデオデータ(304)、(307)、および(309)(例えば、ビデオビットストリーム)は、特定のビデオ符号化/圧縮規格に従ってエンコードされてもよい。ITU-T推奨H.265はそれらの規格の一例である。一例として、非公式には多用途ビデオ符号化(VVC)として知られているビデオ符号化規格が開発されつつある。本開示の主題は、VVCの文脈で使用されてもよい。
なお、電子デバイス(320)および(330)は、他の構成要素(図示せず)を含んでもよい。例えば、電子デバイス(320)は、ビデオデコーダ(図示せず)を含んでよく、同様に電子デバイス(330)は、ビデオエンコーダ(図示せず)を含んでもよい。
図4は、本開示の一実施形態によるビデオデコーダ(410)のブロック図を示す。ビデオデコーダ(410)は、電子デバイス(430)に含まれてもよい。電子デバイス(430)は、受信機(431)(例えば、受信回路)を含んでもよい。ビデオデコーダ(410)は、図3の例のビデオデコーダ(310)の代わりに用いてもよい。
受信機(431)は、ビデオデコーダ(410)によって復号される1つまたは複数の符号化されたビデオシーケンスを受信してもよく、同じまたは別の実施形態においては、各符号化されたビデオシーケンスの復号が他の符号化されたビデオシーケンスから独立している場合、一度に1つの符号化されたビデオシーケンスを受信してもよい。符号化されたビデオシーケンスは、チャネル(401)から受信されてもよく、このチャネルは、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであってもよい。受信機(431)は、エンコードされたビデオデータを、他のデータ、例えば、符号化された音声データおよび/または補助的なデータストリームとともに受信してもよく、それらは、それぞれを利用するエンティティ(図示せず)に転送されてもよい。受信機(431)は、符号化されたビデオシーケンスを他のデータから分離してもよい。ネットワークジッターに対処するために、バッファメモリ(415)が、受信機(431)とエントロピーデコーダ/パーサ(420)(以下、「パーサ(420)」)との間に接続されてもよい。特定のアプリケーションにおいて、バッファメモリ(415)は、ビデオデコーダ(410)の一部である。別のアプリケーションにおいて、それはビデオデコーダ(410)の外部にあってもよい(図示せず)。さらに他のアプリケーションにおいて、例えばネットワークジッターに対処するために、ビデオデコーダ(410)の外部にバッファメモリ(図示せず)があってもよく、さらに、例えばプレイアウトのタイミングに対処するために、ビデオデコーダ(410)の内部に別のバッファメモリ(415)があってもよい。受信機(431)が、充分な帯域幅と制御性を有するストア/転送デバイスから、または等時性ネットワークからデータを受信している場合には、バッファメモリ(415)は必要がないか、あるいは小さくてもよい。インターネットのようなベストエフォート型のパケットネットワークにおいて使用する場合、バッファメモリ(415)が必要とされることがあり、比較的大型であってもよく、適応的なサイズであれば有利であり、また、少なくとも部分的に、ビデオデコーダ(410)の外部のオペレーティングシステムまたは同様の要素(図示せず)において実行されてもよい。
ビデオデコーダ(410)は、符号化されたビデオシーケンスからシンボル(421)を再構築するためにパーサ(420)を含んでもよい。それらのシンボルのカテゴリーには、ビデオデコーダ(410)の演算を管理するために使用される情報、および、場合によっては、図4に示すように、電子デバイス(430)の不可欠な部分ではないが、電子デバイス(430)に接続されてもよいレンダリングデバイス(412)(例えば、表示画面)などのレンダリングデバイスを制御するための情報が含まれる。レンダリングデバイスのための制御情報は、補足強化情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であってもよい。パーサ(420)は、受信した符号化されたビデオシーケンスを構文解析/エントロピー復号してもよい。符号化されたビデオシーケンスのコーディングは、ビデオ符号化技術または規格に準拠していてもよく、可変長コーディング、ハフマンコーディング、文脈感度を伴う、または伴わない算術コーディングなどを含む様々な原理に則ってもよい。パーサ(420)は、符号化されたビデオシーケンスから、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内の画素のサブグループの少なくとも1つに対する一組のサブグループパラメータを抽出してもよい。サブグループは、画像群(GOPs)、画像、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含んでもよい。また、パーサ(420)は、変換係数、量子化器パラメータ値、動きベクトルなどの情報を、符号化されたビデオシーケンスから抽出してもよい。
パーサ(420)は、バッファメモリ(415)から受信したビデオシーケンスに対して、エントロピー復号/構文解析演算を実行し、シンボル(421)を作成してもよい。
シンボル(421)の再構築には、符号化されたビデオ画像またはその一部のタイプ(例えば、インターおよびイントラ画像、インターおよびイントラブロック)などの要素に従って、複数の異なるユニットが関与してもよい。いずれのユニットが、どのように関与するかは、パーサ(420)によって符号化されたビデオシーケンスから構文解析されたサブグループ制御情報によって制御されてもよい。パーサ(420)と以下の複数のユニットとの間のこのようなサブグループ制御情報の流れは、煩雑さを避けるため、描かれていない。
ビデオデコーダ(410)は、既に述べた機能ブロック以外にも、以下に説明するように概念的に複数の機能ユニットに分割されてもよい。商業的な制約の下で動作する実用的な実施において、これらのユニットの多くは互いに密接に作用し、少なくとも部分的に相互に組み込まれてもよい。しかしながら、開示された主題を説明するためには、以下の機能ユニットに概念的に分割することが適切である。
第1のユニットは、スケーラ/逆変換ユニット(451)である。スケーラ/逆変換ユニット(451)は、量子化された変換係数に加えて、いずれの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリングマトリクスなどの制御情報を、シンボル(421)としてパーサ(420)から受信する。スケーラ/逆変換ユニット(451)は、アグリゲータ(455)に入力され得るサンプル値を含むブロックを出力してもよい。
スケーラ/逆変換部(451)の出力サンプルは、イントラ符号化されたブロック、すなわち、以前に再構築された画像からの予測情報を使用していないが、現在の画像に先行して再構築された部分からの予測情報を使用し得るブロックに関連している場合がある。このような予測情報は、イントラ画像予測ユニット(452)によって提供されてもよい。イントラ画像予測ユニット(452)が、現在の画像バッファ(458)からフェッチされた、既に再構築された周囲の情報を使用して、再構築中のブロックと同じサイズおよび形状のブロックを生成する場合がある。現在の画像バッファ(458)は、例えば、部分的に再構築された現在の画像および/または完全に再構築された現在の画像をバッファリングする。アグリゲータ(455)は、場合によっては、イントラ予測ユニット(452)が生成した予測情報を、サンプルごとに、スケーラ/逆変換ユニット(451)が提供する出力サンプル情報に追加する。
また、スケーラ/逆変換ユニット(451)の出力サンプルが、インター符号化された、また場合によっては動き補償されたブロックに関連する場合もある。このような場合、動き補償予測ユニット(453)は、参照画像メモリ(457)にアクセスして、予測に使用されるサンプルをフェッチしてもよい。ブロックに関連するシンボル(421)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、アグリゲータ(455)によって、スケーラ/逆変換ユニット(451)の出力(この場合、残余サンプルまたは残余信号と呼ぶ)に追加され、出力サンプル情報を生成してもよい。動き補償予測ユニット(453)が予測サンプルをフェッチする参照画像メモリ(457)内のアドレスは、例えばX、Y、および参照画像成分を有し得るシンボル(421)の形態で動き補償予測ユニット(453)に利用可能な動きベクトルによって制御されてもよい。また動き補償は、サブサンプルまで精度が保証された動きベクトルが使用されているとき、参照画像メモリ(457)からフェッチされたサンプル値の補間、および動きベクトル予測メカニズムなどを含んでもよい。
アグリゲータ(455)の出力サンプルは、ループフィルタユニット(456)において、様々なループフィルタリング技術にかけられてもよい。ビデオ圧縮技術は、符号化されたビデオシーケンス(符号化されたビデオビットストリームとも呼ぶ)に含まれるパラメータによって制御され、パーサ(420)からシンボル(421)としてループフィルタユニット(456)が利用することのできるループ内フィルタ技術を含んでもよいが、符号化された画像または符号化されたビデオシーケンスの(復号順において)先行する部分の復号時に得られるメタ情報に応答してもよく、また、先行して再構築され、ループフィルタリングされたサンプル値に応答してもよい。
ループフィルタユニット(456)の出力は、レンダリングデバイス(412)に出力されてもよく、また将来のインター画像予測に使用するために参照画像メモリ(457)に保存され得るサンプルストリームであってもよい。
特定の符号化された画像は、一度完全に再構築されると、将来の予測のための参照画像として使用されてもよい。例えば、現在の画像に対応する符号化された画像が完全に再構築され、その符号化された画像が(例えばパーサ(420)によって)参照画像として識別されると、現在の画像バッファ(458)は参照画像メモリ(457)の一部となってもよく、次の符号化された画像の再構築を開始する前に、新たな現在の画像バッファが再割り当てされてもよい。
ビデオデコーダ(410)は、ITU-T Rec.H.265などの規格における所定のビデオ圧縮技術に従って復号動作を実行してもよい。
符号化されたビデオシーケンスは、符号化されたビデオシーケンスが、ビデオ圧縮技術または規格のシンタックスと、ビデオ圧縮技術または規格で文書化されたプロファイルとの両方を厳守するという意味で、使用されているビデオ圧縮技術または規格により指定されたシンタックスに準拠してもよい。具体的には、プロファイルは、ビデオ圧縮技術または規格で利用可能なすべてのツールの中から、特定のツールをそのプロファイルで利用可能な唯一のツールとして選択してもよい。また、規格に準拠するためには、符号化されたビデオシーケンスの計算量が、ビデオ圧縮技術または規格のレベルによって定義された範囲内であることが要求される。レベルにより、最大画像サイズ、最大フレームレート、最大再構築サンプルレート(例えば、メガサンプル/秒として測定)、最大参照画像サイズなどが制限される場合がある。レベルによって設定された制限は、場合によっては、仮想参照デコーダ(HRD)仕様および符号化されたシーケンスで伝達されたHRDバッファ管理のためのメタデータによりさらに制限されることがある。
一実施形態において、受信機(431)は、エンコードされたビデオを有する追加の(冗長な)データを受信してもよい。この追加データは、符号化されたビデオシーケンスの一部として含まれてもよい。この追加データは、データを適切に復号するため、および/または元のビデオデータをより正確に再構築するために、ビデオデコーダ(410)によって使用されてもよい。追加データは、例えば、時間的、空間的、または信号雑音比(SNR)強化層、冗長スライス、冗長画像、順方向誤り訂正コードなどの形態であってもよい。
図5は、本開示の一実施形態によるビデオエンコーダ(503)のブロック図である。ビデオエンコーダ(503)は、電子デバイス(520)に含まれる。電子デバイス(520)は、送信機(540)(例えば、送信回路)を含む。ビデオエンコーダ(503)は、図3の例のビデオエンコーダ(303)の代わりに使用されてもよい。
ビデオエンコーダ(503)は、ビデオエンコーダ(503)によって符号化されるビデオ画像をキャプチャすることができるビデオソース(501)(図5の例において電子デバイス(520)の一部ではない)からビデオサンプルを受信してもよい。別の例において、ビデオソース(501)は、電子デバイス(520)の一部である。
ビデオソース(501)は、ビデオエンコーダ(503)によって符号化されるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、など)、任意の色空間(例えば、BT.601 Y CrCB、RGB、など)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)を有し得るデジタルビデオサンプルストリームの形態で提供してもよい。メディアサービングシステムにおいて、ビデオソース(501)は、以前に作成されたビデオを保存する記憶装置であってもよい。ビデオ会議システムにおいて、ビデオソース(501)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであってもよい。ビデオデータは、連続して見たとき、動きを付与する複数の個々の画像として提供されてもよい。画像自体は、画素の空間アレイとして編成されてもよく、各画素は、使用時のサンプリング構造、色空間などに依存して、1つまたは複数のサンプルを含んでもよい。当業者であれば、画素とサンプルとの関係を容易に理解することができる。以下の記述において、サンプルを中心に説明する。
一実施形態によれば、ビデオエンコーダ(503)は、ソースビデオシーケンスの画像を符号化し、リアルタイムで、またはアプリケーションが要求する他の時間制約の下で、符号化されたビデオシーケンス(543)に圧縮してもよい。適切なコーディング速度を課することは、コントローラ(550)の1つの機能である。一部の実施形態において、コントローラ(550)は、以下に述べるとおり他の機能ユニットを制御し、他の機能ユニットに機能的に接続されている。この接続は、煩雑さを避けるために、描かれていない。コントローラ(550)によって設定されるパラメータは、レート制御関連パラメータ(画像スキップ、量子化器、レート歪み最適化技術のラムダ値、など)、画像サイズ、画像群(GOP)レイアウト、最大動きベクトル許容参照領域などを含んでもよい。コントローラ(550)は、あるシステム設計に最適化されたビデオエンコーダ(503)に関連する他の適切な機能を有するように構成されてもよい。
一部の実施形態において、ビデオエンコーダ(503)は、コーディングループで動作するように構成されている。極端に簡略化して述べれば、一例として、コーディングループは、ソースコーダ(530)(例えば、符号化される入力画像と参照画像とに基づいて、シンボルストリームなどのシンボルを作成する機能を果たす)と、ビデオエンコーダ(503)に組み込まれた(ローカル)デコーダ(533)とを含んでもよい。デコーダ(533)は、(リモート)デコーダが作成するのと同様の方法で、サンプルデータを作成するためにシンボルを再構築する(これは、開示された主題で扱われているビデオ圧縮技術においては、シンボルと符号化されたビデオビットストリームとの間のいかなる圧縮も、可逆的であるためである)。再構築されたサンプルストリーム(サンプルデータ)は、参照画像メモリ(534)に入力される。シンボルストリームの復号は、デコーダの位置(ローカルまたはリモート)に依存しないビットパーフェクトな結果をもたらすため、参照画像メモリ(534)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビットパーフェクトである。換言すれば、エンコーダの予測部分は、デコーダが復号時に予測を用いるときに「見る」のと全く同一のサンプル値を、参照画像サンプルとして「見る」。この参照画像の同期性(および、例えばチャンネルエラーなどで同期性が維持できない場合は、結果的に発生するドリフト)の基本原理は、一部の関連技術においても用いられる。
「ローカル」デコーダ(533)の演算は、図4を参照して既に詳細に述べたビデオデコーダ(410)などの「リモート」デコーダの演算と同じであり得る。しかしながら、ここで図4も簡単に参照しつつ説明すると、シンボルが利用可能であり、エントロピーコーダ(545)およびパーサ(420)による、符号化されたビデオシーケンスへのシンボルのエンコーディング/復号は可逆的であり得るため、バッファメモリ(415)およびパーサ(420)を含むビデオデコーダ(410)のエントロピーデコーダ部分は、ローカルデコーダ(533)において完全には実行されなくてもよい。
この時点で言えることは、デコーダに存在する構文解析/エントロピー復号を除く任意のデコーダ技術は、必然的に、対応するエンコーダにおいても、実質的に同一の機能形態で存在するということである。このため、開示された主題は、デコーダの演算に焦点を当てている。デコーダ技術の説明は、包括的に説明されるエンコーダ技術の逆であるため、簡略化することができる。特定の領域においてのみ、より詳細な説明が必要であり、それに関して以下に述べる。
動作時、一部の例において、ソースコーダ(530)は、「参照画像」として指定されたビデオシーケンスから、以前に符号化された1つ以上の画像を参照して入力画像を予測的に符号化する、動き補償された予測コーディングを実行してもよい。このようにして、コーディングエンジン(532)は、入力画像の画素ブロックと、入力画像に対する予測参照として選択され得る参照画像の画素ブロックとの間の差分を符号化する。
ローカルビデオデコーダ(533)は、ソースコーダ(530)によって作成されたシンボルに基づいて、参照画像として指定され得る画像の符号化されたビデオデータを復号してもよい。コーディングエンジン(532)の演算は、非可逆処理であることが有利である。符号化されたビデオデータがビデオデコーダ(図5には示されていない)で復号されてもよい場合、再構築されたビデオシーケンスは、典型的には、いくつかのエラーを伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(533)は、ビデオデコーダにより参照画像に対して実行され得る復号処理を複製し、再構築された参照画像を参照画像キャッシュ(534)に保存させてもよい。このようにして、ビデオエンコーダ(503)は、(伝送エラーがないという条件で)遠端のビデオデコーダによって取得される再構築された参照画像と共通の内容を有する再構築された参照画像のコピーをローカルに保存してもよい。
予測器(535)は、コーディングエンジン(532)のために予測検索を行ってもよい。すなわち、新規の画像を符号化するため、予測器(535)は、新規の画像のための適切な予測参照として機能することができるサンプルデータ(候補参照画素ブロックとして)、または参照画像動きベクトル、ブロック形状などの特定のメタデータを参照画像メモリ(534)内で検索してもよい。予測器(535)は、適切な予測参照を求めるために、サンプルブロック、画素ブロック単位で動作してもよい。場合によっては、予測器(535)によって得られた検索結果によって決定されることであるが、入力画像は、参照画像メモリ(534)に保存された複数の参照画像から予測参照を引き出させてもよい。
コントローラ(550)は、例えば、ビデオデータをエンコードするのに用いられるパラメータおよびサブグループパラメータの設定などを含む、ソースコーダ(530)のコーディング演算を管理してもよい。
前述のすべての機能ユニットの出力には、エントロピーコーダ(545)においてエントロピーコーディングを施してもよい。エントロピーコーダ(545)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化されたビデオシーケンスに変換する。
送信機(540)は、エントロピーコーダ(545)によって作成されたような符号化されたビデオシーケンスをバッファリングして、エンコードされたビデオデータを保存することになる記憶装置へのハードウェア/ソフトウェアリンクであり得る通信チャネル(560)を介した送信の準備をしてもよい。送信機(540)は、ビデオコーダ(503)からの符号化されたビデオデータを、例えば、符号化された音声データおよび/または補助データストリーム(ソースは図示せず)などの、送信される他のデータと統合してもよい。
コントローラ(550)は、ビデオエンコーダ(503)の演算を管理してもよい。コーディング時、コントローラ(550)は、各符号化された画像に、それぞれの画像に適用され得るコーディング技術に影響を与える可能性がある特定の符号化された画像タイプを割り当ててもよい。例えば、画像は以下の画像タイプの1つとして割り当てられてもよいことが多い。
その1つがイントラ画像(I画像)であり、これはシーケンスにおける他の画像を予測源として使用せずに符号化および復号することができる。ビデオコーデックによっては、例えば独立デコーダリフレッシュ(「IDR」)画像を含む、異なるタイプのイントラ画像に対応できるものもある。当業者には、それらのI画像の変種ならびにそれぞれの用途および特徴は知られている。
予測画像(P画像)は、各ブロックのサンプル値を予測するために、最大1つの動きベクトルおよび参照インデックスを使用し、イントラ予測またはインター予測を用いて符号化および復号され得るものであってもよい。
双方向予測画像(B画像)は、各ブロックのサンプル値を予測するために、最大2つの動きベクトルおよび参照インデックスを使用し、イントラ予測またはインター予測を用いて符号化および復号され得るものであってもよい。同様に、マルチ予測画像は、単一のブロックの再構築に3つ以上の参照画像および関連するメタデータを用いることができる。
ソース画像は一般に、空間的に複数のサンプルブロック(例えば、それぞれ4×4、8×8、4×8、または16×16のサンプルのブロック)に分割され、ブロックごとに符号化されてもよい。ブロックは、ブロックのそれぞれの画像に適用されるコーディング割り当てによって決定される、他の(すでに符号化された)ブロックを参照して予測的に符号化されてもよい。例えば、I画像のブロックは、非予測的に符号化されてもよいし、同じ画像の既に符号化されたブロックを参照して予測的に符号化されてもよい(空間予測またはイントラ予測)。P画像の画素ブロックは、以前に符号化された1つの参照画像を参照して、空間的予測または時間的予測によって予測的に符号化されてもよい。B画像のブロックは、以前に符号化された1つまたは2つの参照画像を参照して、空間的予測または時間的予測によって予測的に符号化されてもよい。
ビデオデエンコーダ(503)は、所定のビデオ符号化技術またはITU-T Rec.H.265などの規格に従ってコーディング演算を実行してもよい。その演算において、ビデオエンコーダ(503)は、入力ビデオシーケンスの時間的および空間的な冗長性を利用する予測コーディング演算を含む様々な圧縮演算を行ってもよい。したがって、符号化されたビデオデータは、使用されているビデオ符号化技術または規格によって指定されたシンタックスに準拠してもよい。
一実施形態において、送信機(540)は、エンコードされたビデオを有する追加のデータを送信してもよい。ソースコーダ(530)は、そのようなデータを、符号化されたビデオシーケンスの一部として含んでもよい。追加データは、時間/空間/SNR強化層、冗長画像やスライスなどの他の形態の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含んでもよい。
ビデオは、時間的に連続した複数のソース画像(ビデオ画像)としてキャプチャされてもよい。イントラ画像予測(イントラ予測と略されることが多い)は、所与の画像の空間的な相関関係を利用し、インター画像予測は画像間の(時間的またはその他の)相関関係を利用する。一例として、現在の画像と呼ぶエンコーディング/復号中の特定の画像は、ブロックに分割されている。現在の画像内のブロックが、ビデオの、以前に符号化され、まだバッファリングされている参照画像内の参照ブロックに類似する場合、現在の画像内のブロックは、動きベクトルと呼ばれるベクトルによって符号化することができる。動きベクトルは、参照画像内の参照ブロックを指し、複数の参照画像が使用されている場合は、参照画像を識別する第3の次元を有してもよい。
一部の実施形態において、インター画像予測に双予測技術を用いてもよい。双予測技術によれば、ビデオ内の現在の画像に復号の順序において先行する(ただし、表示順ではそれぞれ過去と未来にあってもよい)第1の参照画像および第2の参照画像などの2つの参照画像が用いられる。現在の画像内のブロックは、第1の参照画像内の第1の参照ブロックを指す第1の動きベクトルと、第2の参照画像内の第2の参照ブロックを指す第2の動きベクトルとによって符号化されてもよい。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測されてもよい。
さらに、コーディングの効率を向上させるために、インター画像予測においてマージモード技術を用いてもよい。
本開示の一部の実施形態によれば、インター画像予測およびイントラ画像予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、一連のビデオ画像内の1つの画像は、圧縮のためにコーディングツリーユニット(CTU)に分割され、一画像内のCTUは、64×64画素、32×32画素、または16×16画素などの同じサイズを有する。一般に、1つのCTUは、1つのルーマCTBおよび2つのクロマCTBである3つのコーディングツリーブロック(CTB)を含む。各CTUは、再帰的に1つまたは複数のコーディングユニット(CU)にクワッドツリー分割することができる。例えば、64×64画素のCTUは、64×64画素の1つのCU、または32×32画素の4つのCU、または16×16画素の16個のCUに分割することができる。一例において、各CUが分析され、インター予測タイプやイントラ予測タイプなど、CUの予測タイプが決定される。CUは、時間的および/または空間的な予測可能性に従って、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つのルーマ予測ブロック(PB)と、2つのクロマPBとを含む。一実施形態において、コーディング(エンコーディング/復号)における予測演算は、予測ブロックの単位で実行される。予測ブロックの一例として、ルーマ予測ブロックを用いると、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などの、画素に対する値(例えば、ルーマ値)のマトリクスを含む。
図6は、本開示の別の実施形態によるビデオエンコーダ(603)を示す図である。ビデオエンコーダ(603)は、ビデオ画像のシーケンスにおける現在のビデオ画像内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、符号化されたビデオシーケンスの一部である符号化された画像へとエンコードするように構成されている。一例として、ビデオエンコーダ(603)は、図3の例のビデオエンコーダ(303)の代わりに使用されている。
HEVCの例において、ビデオエンコーダ(603)は、8×8サンプルの予測ブロックなどの処理ブロックに対するサンプル値のマトリクスを受信する。ビデオエンコーダ(603)は、処理ブロックがイントラモード、インターモード、または双予測モードを用いて最適に符号化されているか否かを、例えばレート歪み最適化処理を用いて判断する。処理ブロックがイントラモードで符号化される場合、ビデオエンコーダ(603)は、イントラ予測技術を用いて処理ブロックを符号化された画像にエンコードしてもよく、処理ブロックがインターモードまたは双予測モードで符号化される場合、ビデオエンコーダ(603)は、それぞれ、インター予測または双予測技術を用いて、処理ブロックを符号化された画像にエンコードしてもよい。特定のビデオ符号化技術において、マージモードは、動きベクトルが、予測器の範囲外にある符号化された動きベクトル成分の恩恵を受けずに、1つまたは複数の動きベクトル予測変数から導出されるインター画像予測サブモードであってもよい。他の特定のビデオ符号化技術においては、当該ブロックに適用可能な動きベクトル成分が存在してもよい。一例において、ビデオエンコーダ(603)は、処理ブロックのモードを決定するモード決定モジュール(図示せず)などの他の構成要素を含む。
図6の例において、ビデオエンコーダ(603)は、図6に示すように接続されたインターエンコーダ(630)、イントラエンコーダ(622)、残余計算機(623)、スイッチ(626)、残余エンコーダ(624)、統括コントローラ(621)、およびエントロピーエンコーダ(625)を含む。
インターエンコーダ(630)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、ブロックを参照画像内の1つまたは複数の参照ブロック(例えば、先行する画像および後続の画像内のブロック)と比較し、インター予測情報(例えば、インターエンコーディング技術による冗長情報の記述、動きベクトル、マージモード情報)を生成し、任意の適切な技術を用いて、インター予測情報に基づきインター予測結果(例えば、予測ブロック)を計算するように構成されている。一部の例において、参照画像は、エンコードされたビデオ情報に基づいて復号される復号された参照画像である。
イントラエンコーダ(622)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によってはブロックを同じ画像において既に符号化されたブロックと比較し、変換後の量子化係数を生成し、場合によってはイントラ予測情報(例えば、1つまたは複数のイントラエンコーディング技術によるイントラ予測方向情報)も生成するように構成されている。一例において、イントラエンコーダ(622)は、イントラ予測情報と同一画像内の参照ブロックとに基づいて、イントラ予測結果(例えば、予測ブロック)も計算する。
統括コントローラ(621)は、統括制御データを決定し、統括制御データに基づいてビデオエンコーダ(603)の他の構成要素を制御するように構成されている。一例において、統括コントローラ(621)は、ブロックのモードを決定し、当該モードに基づいてスイッチ(626)に制御信号を提供する。例えば、モードがイントラモードである場合、統括コントローラ(621)は、スイッチ(626)を制御して、残余計算機(623)が使用するイントラモードの結果を選択し、エントロピーエンコーダ(625)を制御して、イントラ予測情報を選択し、かつビットストリームにイントラ予測情報を含め、モードがインターモードである場合、統括コントローラ(621)は、スイッチ(626)を制御して、残余計算機(623)が使用するインター予測結果を選択し、エントロピーエンコーダ(625)を制御して、インター予測情報を選択し、ビットストリームにインター予測情報を含める。
残余計算機(623)は、受信したブロックと、イントラエンコーダ(622)またはインターエンコーダ(630)から選択された予測結果との間の差分(残余データ)を計算するように構成されている。残余エンコーダ(624)は、残余データに基づいて演算を実行し、残余データをエンコードして変換係数を生成するように構成されている。一例において、残余エンコーダ(624)は、残余データを空間領域から周波数領域に変換して、変換係数を生成するように構成されている。次に、変換係数が量子化処理を受けて、量子化された変換係数が得られる。また、様々な実施形態において、ビデオエンコーダ(603)は、残余デコーダ(628)を含む。残余デコーダ(628)は、逆変換を行い、復号された残余データを生成するように構成されている。復号された残余データは、イントラエンコーダ(622)およびインターエンコーダ(630)で好適に使用されてもよい。例えば、インターエンコーダ(630)は、復号された残余データおよびインター予測情報に基づいて復号されたブロックを生成し、イントラエンコーダ(622)は、復号された残余データおよびイントラ予測情報に基づいて復号されたブロックを生成することができる。復号されたブロックは好適に処理されて復号された画像を生成し、復号された画像はメモリ回路(図示せず)にバッファリングされ、一部の例において参照画像として用いられてもよい。
エントロピーエンコーダ(625)は、エンコードされたブロックを含むようにビットストリームをフォーマットするように構成されている。エントロピーエンコーダ(625)は、HEVC規格などの適切な規格に従って、様々な情報を含むように構成されている。一例において、エントロピーエンコーダ(625)は、統括制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残余情報、およびその他の適切な情報をビットストリームに含むように構成されている。なお、開示された主題によれば、インターモードまたは双予測モードのいずれかのマージサブモードでブロックを符号化する場合、残余情報は存在しない。
図7は、本開示の別の実施形態によるビデオデコーダ(710)を示す図である。ビデオデコーダ(710)は、符号化されたビデオシーケンスの一部である符号化された画像を受信し、符号化された画像を復号して再構築画像を生成するように構成されている。一例として、ビデオデコーダ(710)は、図3の例のビデオデコーダ(310)の代わりに使用されている。
図7の例において、ビデオデコーダ(710)は、図7に示すように接続された、エントロピーデコーダ(771)、インターデコーダ(780)、残余デコーダ(773)、再構築モジュール(774)、およびイントラデコーダ(772)を含む。
エントロピーデコーダ(771)は、符号化された画像から、符号化された画像を構成するシンタックス要素を表す特定のシンボルを再構築するように構成されてもよい。そのようなシンボルは、例えば、ブロックが符号化されるモード(例えば、イントラモード、インターモード、双予測モード、およびマージサブモードまたは別のサブモードにおける後者2つ)、特定のサンプルを識別することができる予測情報(例えば、イントラ予測情報またはインター予測情報など)またはそれぞれイントラデコーダ(772)またはインターデコーダ(780)によって予測に使用されるメタデータ、例えば量子化された変換係数などの形態の残余情報、などを含むことができる。一例として、予測モードがインター予測モードまたは双予測モードである場合、インター予測情報がインターデコーダ(780)に提供され、予測タイプがイントラ予測タイプである場合、イントラ予測情報はイントラデコーダ(772)に提供される。残余情報は、逆量子化処理を受けてもよく、残余デコーダ(773)に提供される。
インターデコーダ(780)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成されている。
イントラデコーダ(772)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成されている。
残余デコーダ(773)は、逆量子化を実行して、非量子化された変換係数を抽出し、非量子化された変換係数を処理して、周波数領域から空間領域に残余を変換するように構成される。また、残余デコーダ(773)は、特定の制御情報(量子化器パラメータ(QP)を含むように)を必要としてもよく、その情報は、エントロピーデコーダ(771)によって提供されてもよい(データパスは、これが低容量の制御情報のみである可能性があるため、描かれていない)。
再構築モジュール(774)は、空間領域において、残余デコーダ(773)によって出力された残余と、予測結果(場合により、インターまたはイントラ予測モジュールによって出力されたもの)とを組み合わせて、再構築ブロックを形成するように構成されており、このブロックは、再構築画像の一部であってもよく、この再構築画像は再構築ビデオの一部であってもよい。なお、視覚的品質を向上させるために、デブロッキング演算などの他の適切な演算を実行してもよい。
なお、ビデオエンコーダ(303)、(503)、(603)、およびビデオデコーダ(310)、(410)、(710)は、任意の適切な技術を用いて動作させることができる。一実施形態において、ビデオエンコーダ(303)、(503)、(603)、およびビデオデコーダ(310)、(410)、(710)は、1つまたは複数の集積回路を用いて動作させることができる。別の実施形態において、ビデオエンコーダ(303)、(503)、(603)、およびビデオデコーダ(310)、(410)、(710)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを用いて動作させることができる。
II.HEVCブロック分割構造
HEVCにおいて、様々なローカル特性に適合するため、CTUはコーディングツリーと呼ばれる四分木構造を用いてCUに区分される。インター画像(時間)予測またはイントラ画像(空間)予測のいずれにより画像領域を符号化するかは、CUレベルで決定される。各CUは、PU区分のタイプに従って、さらに1つ、2つ、または4つのPUに区分される。1つのPU内では、同じ予測プロセスが適用され、関連する情報がPUベースでデコーダに送信される。PUの区分タイプに基づいて予測プロセスを適用することによって、残余ブロックを得た後、CUは、CUのコーディングツリーのような別のQT構造に従ってTUに分割されてもよい。
HEVC構造の1つの重要な特徴は、CU、PU、TUを含む多重分割の概念を有するということである。HEVCにおいて、CUやTUの形状は正方形のみであり、PUはインター予測ブロックに関しては正方形または長方形の形状を有してもよい。提案されたイントラ予測および変換のための矩形状のPUは、拡張してJoint Exploration Model(JEM)に用いてもよい。
HEVCでは、画像の境界において、サイズが画像の境界に適合するまで四分木区分を続けるように、四分木区分が暗黙のうちに要求されている。
III.QTBTを用いたブロック分割構造
VVC試験モデル(VTM)において、四分木(QT)プラス二分木(BT)プラス三分木(TT)分割構造が適用される。四分木プラス二分木ツリー(QTBT)構造は、多重分割タイプの概念を取り除くものであり、すなわち CU、PU、TU の概念の分離を取り除き、CU 分割形状により柔軟にサポートする。
QTTB構造において、CUは正方形または矩形のいずれかの形状を有してもよい。図8Aおよび8Bに示すように、CTUはまずQT構造により分割される。QTのリーフノードは、BT構造によってさらに分割される。BT区分には、対称的な水平区分と対称的な垂直区分の2つの区分タイプがある。BTのリーフノードはCUであり、2つのCU間のセグメント化は、さらに分割することなく、予測と変換処理に使用される。従って、QTBT構造において、CU、PU、TUは同じブロックサイズを有してもよい。
JEMにおいて、1つのCUは異なる色成分のCBを含んでもよく、例えば、4:2:0クロマフォーマットのPおよびBスライスの場合、1つのCUは1つのルーマCBと2つのクロマCBとを含んでもよい。あるいは、1つのCUは、単一成分のCBを含んでもよく、例えば、Iスライスの場合、1つのCUは、1つのルーマCBのみ、または2つのクロマCBのみを含むことができる。
QTBT分割構成には、以下のパラメータが定義されている。
-CTUSize:例えばHEVCにおける、QTのルートノードサイズ
-MinQTSize:許容されるQTリーフノードサイズ最小値
-MaxBTSize:許容されるBTルートノードサイズ最大値
-MaxBTDepth:許容されるBT深さ最大値
-MinBTSize:許容されるBTリーフノードサイズ最小値
QTBT分割構造の一例において、CTUサイズは128×128のルーマサンプルおよびそれに対応する2つの64×64クロマサンプルブロックとして設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、MinBTSize(幅と高さの両方に対して)は4×4として設定され、MaxBTDepthは4として設定される。QT分割は、まずCTUに適用され、QTリーフノードが生成される。QTリーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有してもよい。リーフQTノードが128×128の場合、サイズがMaxBTSize(すなわち、64×64)を超えるので、BTによってさらに区分されない。それ以外の場合、リーフQTノードは、BTツリーによってさらに分割されてもよい。したがって、QT リーフノードは、BT に対するルートノードでもあり、そのBT の深さは0である。BTの深さがMaxBTDepth(すなわち、4)に達すると、それ以上の区分は考慮されない。BTノードの幅がMinBTSize(すなわち4)に等しい場合、それ以上の水平方向の区分は考慮されない。同様に、BTノードの高さがMinBTSizeに等しい場合、それ以上の垂直方向の区分は考慮されない。BTのリーフノードには、それ以上の分割を行わずに、予測および変換プロセスが実行される。JEMにおいて、最大CTUサイズは256×256のルーマサンプルである。
図8Aは、QTBT分割構造(8200)を用いたブロック分割(8100)の一例を示し、図8Bは、対応するQTBT構造(8200)を示す。実線はQT区分を示し、点線は二分木BT区分を示す。各非リーフBT区分ノードにおいて、区分タイプ(すなわち、対称水平区分または対称垂直区分)を示すフラグが信号伝達される。例えば、図8Bの例において、「0」は対称水平区分を示し、「1」は対称垂直区分を示す。ただし、QT区分の場合、QT区分が、非リーフノードを水平方向および垂直方向に区分して同じサイズの、より小さい4つのブロックを生成することから、区分タイプフラグは表示されず、信号伝達もされない。
図8Bを参照すると、QTBT構造(8200)において、まずルートノード(8201)がQT構造によってQTノード(8211)~(8214)に分割される。したがって、図8Aに示すように、コーディングツリーブロック(8101)は、実線によって、サイズの等しい4つのブロック(8111)~(8114)に分割される。
図8Bに戻ると、QTノード(8211)および(8212)は、それぞれ、2つのBT区分によりさらに区分される。上述したように、BT区分は、2つの区分タイプ、すなわち、対称水平区分と対称垂直区分とを含む。非リーフQTノード(8211)は、「1」と表示されているので、対称垂直区分を用いて、2つのノード(8221)および(8222)に区分されてもよい。非リーフQTノード(8212)は、「0」と表示されているので、対称水平方向の区分を用いて、2つのノード(8223)および(8224)に区分されてもよい。非リーフQTノード(8213)は、別のQTBT構造によって4つのノード(8225)~(8228)にさらに区分される。ノード(8214)は、さらに分割されないため、リーフノードである。したがって、図8Aに示すように、ブロック(8111)は垂直方向にサイズの等しい2つのブロック(8121)および(8122)に分割され、ブロック(8112)は水平方向にサイズの等しい2つのブロックに分割され、ブロック(8113)はサイズの等しい4つのブロックに分割され、ブロック(8114)はさらには分割されない。
図8Bに戻ると、より深いレベルでは、ノードの一部、例えば、ノード(8221)~(8228)のようにさらに区分されるものもあれば、区分されないノードもある。例えば、非リーフBTノード(8221)は、対称垂直区分により、さらに2つのリーフノード(8231)および(8232)に区分されるのに対して、リーフノード(8222)は、さらには区分されない。したがって、図8Aに示すように、ブロック(8121)は、サイズの等しい2つのブロック(8131)および(8132)に分割されるのに対し、ブロック(8122)はさらには分割されない。
QTBT構造(8200)の区分が完了した後、さらに区分されないリーフノードは、予測および変換処理に使用されるCUである。したがって、CUと、CUに関連付けられたPUと、CUに関連付けられたTUとは、QTBT構造において同じブロックサイズを有してもよい。また、QTBT構造において、CUは異なる色成分のCBを含んでもよい。例えば、4:2:0フォーマットにおいて、1つのCUは、PスライスまたはBスライスに1つのルーマCBと2つのクロマCBとを含んでもよい。しかしながら、他の一部の実施形態において、CUは、単一の成分にCBを含んでもよい。例えば、Iスライスにおいて、1つのCUは、1つのルーマCBまたは2つのクロマCBを含んでもよい。すなわち、QTBT構造は、ルーマとクロマとが異なる分割構造を有することをサポートする。
さらに、QTBT構成は、ルーマとクロマが別々のQTBT構造を有する柔軟性をサポートしている。現在、PおよびBスライスでは、1つのCTU内のルーマおよびクロマのCTBは、同じQTBT構造を共有する。しかしながら、Iスライスに関して、ルーマCTBはQTBT構造によりCUに分割され、クロマCTBは別のQTBT構造によりクロマCUに分割される。したがって、IスライスのCUは、ルーマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックを含み、PまたはBスライスのCUは、3つの色成分すべてのコーディングブロックを含む。
HEVCにおいて、小ブロックのインター予測は動き補償のメモリアクセスを低減するために制限されているため、4×8および8×4ブロックに対しては双予測がサポートされず、4×4ブロックに対してはインター予測がサポートされない。JEM-7.0で実行されたQTBTにおいて、これらの制限は解消されている。
例えば、VTM6において、コーディングツリー構成は、ルーマとクロマとが別々のブロックツリー構造を有することをサポートしている。一例として、PおよびBのスライスに対して、1つのCTU内のルーマおよびクロマのCTBは同じコーディングツリー構造を共有する必要がある。しかしながら、I スライスに関しては、ルーマおよびクロマは別々のブロックツリー構造を有してもよい。別々のブロックツリーモードが適用される場合、ルーマCTBは1つのコーディングツリー構造によってCUに分割され、クロマCTBは別のコーディングツリー構造によってクロマCUに分割される。すなわち、IスライスのCUには、ルーマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックが含まれてもよく、PスライスやBスライスのCUには、ビデオがモノクロでない限り、必ず3つの色成分すべてのコーディングブロックが含まれる。
IV.トリプルツリーを用いたブロック分割構造
上述のQTBT構造に加えて、多重型ツリー(MTT)構造と呼ぶ別の区分構造は、QTBT構造よりも柔軟性が高い。MTTでは、図9Aおよび図9Bに示すように、QTおよびBT以外に、水平および垂直方向のセンターサイドTTが導入されている。
図9Aは、垂直方向のセンターサイドTT分割の一例を示す。例えば、ブロック(910)は、サブブロック(912)がブロック(910)の中央に位置する3つのサブブロック(911)~(913)に垂直に区分される。
図9Bは、水平方向のセンターサイドTT分割の一例を示す。例えば、ブロック(920)は、サブブロック(922)がブロック(920)の中央に位置する3つのサブブロック(921)~(923)に水平に区分される。
BT区分と同様に、TT区分において、区分タイプ(すなわち、対称水平区分または対称垂直区分)を示すフラグが信号伝達される。一例において、「0」は対称水平区分を示し、「1」は対称垂直区分を示す。
TT分割の1つの利点は、TT分割がQT分割やBT分割を補完することができることである。例えば、TT分割がブロックセンターに位置するオブジェクトをキャプチャすることができるのに対し、QT分割とBT分割とは常にブロックセンターに沿って区分する。TT分割のもう一つの利点は、TT分割による分割の幅と高さは常に2の累乗であるため、追加の変換が不要であることである。
四分木、二分木、三分木の区分タイプを含むMTT構造は、QTBTTT構造と呼ばれる。QTBT構造と同様に、QTBTTT構造は、ルーマおよびクロマが異なる構造を有することもサポートしている。例えば、Iスライスにおいて、ルーマCTBを分割するためのQTBTTT構造は、クロマCTBを分割するためのQTBTTT構造とは異なってもよい。すなわち、分けられたツリー構造が有効な場合、1つのCUには1つのルーマCBまたは2つのクロマCBが含まれる。しかしながら、PまたはBスライスにおいて、ルーマCTBは1つのCTUにおいてクロマCTBと同じQTBTTT構造を共有することができる。換言すれば、分けられたツリー構造が無効の場合、1つのCUには3つのCBすべて、すなわち1つのルーマCBと2つのクロマCBとが含まれる。
VVCでは、I-sliceに対してデュアルツリーまたはセパレートツリーが使用される。すなわち、一方のツリーがルーマ成分に、他方のツリーはクロマ成分に使用される。BスライスおよびPスライスに対して、1つのシングルツリーをルーマ成分とクロマ成分とが共有する。
2つのレベルを有するツリーを設計するのは、主に計算量を軽減するためである。一例として、ツリーを横切ることに対する計算量はTDであり、Tは区分タイプの数、Dはツリーの深さを表す。
V.ルーマ成分に対するイントラ予測
図10は、一部の例(例えば、VVC)における例示的なイントラ予測方向を示す説明図である。図10において、合計95個のイントラ予測モード(モード-14~80)があり、そのうち、モード0は平面モード(INTRA_PLANARと表記)、モード1はDCモード(INTRA_DCと表記)、その他のモード(モード-14~-1、モード2~80)は角度(または方向)モード(INTRA_ANGULARとも表記)である。角度(または方向)モードのうち、モード18(INTRA_ANGULAR18と表記)は水平モードであり、モード50(INTRA_ANGULAR50と表記)は垂直モードであり、モード2(INTRA_ANGULAR2と表記)は左下方向を指す対角線モードであり、モード34(INTRA_ANGULAR34と表記)は左上方向を向いた対角線モード、モード66(INTRA_ANGULAR66と表記)は右上方向を向いた対角線モードである。モード-14~-1とモード67~80は広角イントラ予測(WAIP)モードと呼ぶ。
VI.クロマ成分に対するイントラ予測
イントラPUのクロマ成分(例えば、VTMにおいて)に対して、エンコーダは、平面モード、DCモード、水平モード、垂直モード、ルーマ成分からのイントラ予測モード(DM)の直接のコピー、左および上方クロス成分リニアモード(LT_CCLM)、左クロス成分リニアモード(L_CCLM)、上方クロス成分リニアモード(T_CCLM)を含む8つのモードの中から最適なクロマ予測モードを選択する。表1のクロマ予測モードインデックス4、5、6によりそれぞれ示されるLT_CCLM、L_CCLM、T_CCLMは、クロス成分リニアモード(CCLM)のグループに分類されてもよい。
表1は、CCLMを有効にした場合のルーマモードからのクロマ予測モードの導出を例示したものである。平面モード、垂直モード、水平モード、DCモード、LT_CCLM、L_CCLM、T_CCLM、およびDMは、クロマ予測モードインデックス0~7で表される。対応するデフォルトのクロマイントラ予測方向は、DMを除くこれらのクロマ予測モードに対して0、50、18、1、81、82、83である。
表1において、クロマ成分に対応するクロマ予測モードインデックス番号が7の場合、クロマ成分のイントラ予測サンプル生成には、ルーマ成分のイントラ予測方向を用いてもよい。例えば、クロマ予測モードインデックス7(すなわちDM)の場合、対応するルーマイントラ予測方向が50(すなわち、垂直方向)であるとき、クロマイントラ予測方向も50であり、したがって、クロマ成分には垂直モードが用いられることになる。
表1において、クロマ成分に対するクロマ予測モードインデックス番号が7でない場合、クロマ成分のイントラ予測方向は、デフォルトのクロマイントラ予測方向が、対応するルーマイントラ予測と同一であるか否かに依存する場合がある。
デフォルトのクロマイントラ予測方向が、対応するルーマイントラ予測と同一である場合、イントラ予測方向66は、クロマ成分のイントラ予測サンプル生成に用いられてもよい。例えば、クロマ予測モードインデックス1(すなわち、垂直モード)に対しては、デフォルトのクロマイントラ予測方向は50であり、イントラ予測方向66は、対応するルーマイントラ予測方向も50(すなわち、垂直方向)である場合に、クロマ成分のイントラ予測サンプル生成に用いられる。
デフォルトのクロマイントラ予測方向が、対応するルーマイントラ予測方向と同一でない場合、デフォルトクロマイントラ予測方向は、クロマ成分のイントラ予測サンプル生成に用いられてもよい。例えば、クロマ予測モードインデックス1(すなわち、垂直モード)に対しては、デフォルトのクロマイントラ予測方向は50であり、デフォルトクロマイントラ予測50は、対応するルーマイントラ予測方向が50でない場合(例えば、18)、クロマ成分のイントラ予測サンプル生成に用いられてもよい。
表2は、CCLMが有効な場合のイントラクロマ予測モードの例示的な信号伝達(例えば、2値化)処理を示す。DM(すなわち、モード7)は、すべてのクロマイントラ予測モードの中で、最も少ないコードワードを有することが示されている。
VII.小ブロックサイズの制約
2×2、2×4、4×2サンプルを含む小ブロックサイズは、デュアルツリーにおいて制限される。この制約は、4×4,2×8,8×2ブロックに対しては区分が許可されず、8×4,4×8ブロックに対しては三分木区分が許可されない、という区分禁止により実行される。
シングルツリーの場合、クロマブロックのブロックサイズ(例えば、面積サイズまたはサンプル数)が閾値以上であり、クロマブロックの区分によってクロマブロックのサブブロックのサイズが閾値未満になる場合や、クロマブロックのさらなる区分が許可されない場合、クロマブロックは並列処理可能領域(PPR)として扱われてもよい。閾値は、16または32などの任意の正の整数であってもよい。一例において、VTMの4倍の処理量という最悪の場合の処理を達成するために、閾値は16サンプルに等しいものとして設定される。
図11A~11Eは、本開示の一実施形態によるPPRの例示的な形状を示す。各ブロック(またはサブブロック)内に記された値は、そのブロック(またはサブブロック)内のサンプル数を示す。例えば、図11Aは、4×4クロマブロック(16個のサンプル)が4つの2×2サブブロックに区分され、各サブブロックが4個のサンプルを有することを示す。この4×4クロマブロックは、1つのPPRとみなすことができる。
16サンプルのPPR内のブロック(またはサブブロック)間のイントラ予測依存性は、PPR内の複数のブロック(またはサブブロック)を、このPPRに含まれるすべてのブロック(またはサブブロック)を予測することに「利用不可能」と記すことで解消することができる。なお、参照サンプルの置換は、隣接するブロックが利用不可能である場合に、VVCの参照置換プロセスによって自動的に行うことができる。また、この方法のために、イントラ予測の他の部分における変更が必要となることはない。
VIII.小ブロックサイズ制約の改善
本開示の実施形態は、1つまたは複数の小ブロックサイズの使用を改善することができる。異なる色成分が同じブロック分割構造を共有するシングルツリーにおける小クロマブロック制限については、1つのPPR内の複数のブロック(またはサブブロック)が利用不可能と記されている可能性がある。例えば、図11A、図11B、図11Cのそれぞれ右下のブロック(1101)~(1103)のような、PPR内の小クロマブロックについては、これらの小クロマブロックの左隣接サンプルおよび上方隣接サンプルの両方とも利用不可能と記されているものがある。しかしながら、これに関連して、表1に記載されたモードのようなすべてのクロマ予測モードが、PPR内のすべてのブロック(またはサブブロック)を予測するのに許可されており、いくつかの冗長な信号伝達ビットにつながる場合もある。
本開示の態様によれば、本方法は、1つまたは複数の小ブロックに適用することができる。小ブロックは、ブロックの面積サイズまたはブロックの辺の長さ(例えば、ブロックの高さまたはブロックの幅)によって特定することができる。1つまたは複数の小ブロックは、例えば、2の倍数であるサイズを有してもよい。一例において、1つまたは複数の小ブロックは、2×2ブロックを含んでもよい。別の例において、小ブロックは、2×2、2×4、および4×2ブロックを含んでもよい。
1つまたは複数の小ブロックは、1つの固定されたサイズを有してもよい。例えば、小ブロックは、2×NおよびN×2ブロックを含んでもよく、ここでNは正の整数である。すなわち、小ブロックの1辺は、2つのサンプルを有することに限定される。別の例において、小ブロックは、4×NおよびN×4クロマブロックを含んでもよく、ここでNは正の整数である。すなわち、小ブロックの1辺は、4つのサンプルを有することに限定される。
1つまたは複数の小ブロックは、ルーマイントラ符号化された最小のブロックサイズを有するルーマイントラ符号化されたブロックに基づいてもよい。例えば、ブロック面積サイズ、ブロック幅、および/またはブロック高さが、ルーマイントラ符号化された最小のブロックサイズを有するイントラ符号化されたブロックよりも小さい。すなわち、小ブロックの場合、小ブロックのブロックサイズは、ルーマイントラ符号化された最小のブロックのブロックサイズよりも小さく、および/または、小ブロックのブロック幅は、ルーマイントラ符号化された最小のブロックのブロック幅よりも小さく、および/または、ブロック高さは、ルーマイントラ符号化された最小のブロックのブロック高さよりも小さい。
1つまたは複数の小ブロックは、閾値に基づいたものであってもよい。例えば、小ブロックは、2×NまたはN×2画素を含んでもよく、小ブロック内の画素数は、閾値ThrePixelsよりも小さく、ここで、Nは正の整数である。閾値ThrePixelsは、16や32などの所定の値に設定されてもよい。ThrePixelsは、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダなどのビットストリームで信号伝達されてもよい。
本開示の態様によれば、1つの現在のPPR内のイントラ符号化されたクロマ(またはルーマ)ブロック(またはサブブロック)に対して、その上方隣接サンプルおよび/または左隣接サンプルが現在のブロックの予測に使用されていない(例えば、これらの隣接ブロックのうち少なくとも1つが「使用不可能」と記されている)場合、他のブロック(例えば、非小ブロック)に適用可能なすべてのクロマイントラ予測モードの代わりに、現在のブロックの予測に使用されてもよいのは特定のクロマイントラ予測モードのみである。
例えば、11A~11Cに示すように、4×4ブロックは3つの異なる分割パターンを用いて区分されてもよい。各分割パターンについて、4つのサンプルのみを有する、右下の2×2ブロックの上方隣接サンプルおよび左隣接サンプルは、「利用不可能」と記されてもよく、右下の2×2ブロックの予測に用いることはできない。
本開示の態様によれば、一ブロックに対する許容されるクロマ予測モードは、利用可能なクロマ予測モードのサブセットに制約されてもよく、このサブセットは、例えば、表1に記載されたモードの1つまたは複数を含んでもよい。許容されるクロマ予測モードは、ブロックの上方隣接および/または左隣接サンプルの利用可能性に基づいて制約されてもよい。
一実施形態において、1つの現在のPPRにおける1つまたは任意の小クロマブロック(またはサブブロック)について、小クロマブロック(またはサブブロック)の上方隣接サンプルおよび/または左隣接サンプルが小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)に対して許容されるクロマ予測モードは制約されてもよい。許容されるクロマ予測モードは、表1に記載されたモードのサブセットに限定されてもよい。例えば、許容されるクロマ予測モードは、1つのモード(例えば、DM)のみに制限されてもよい。1つのモードのみに制約された場合、現在のクロマブロックのクロマ予測モードを示すための信号伝達にビットを用いる必要はない。
一実施形態において、1つの現在のPPRにおける1つまたは任意の小クロマブロック(またはサブブロック)について、小クロマブロック(またはサブブロック)の上方隣接サンプルおよび/または左隣接サンプルが現在のPPR内にあり、小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)に対して許容されるクロマ予測モードは制約されてもよい。例えば、許容されるクロマ予測モードは、表1に記載されたモードの1つ(例えば、DM)などの、1つのモードのみに制限されてもよい。1つのモードのみに制約された場合、現在のクロマブロックのクロマ予測モードを示すための信号伝達にビットを用いる必要はない。
一実施形態において、1つの現在のPPRにおける1つまたは任意の小クロマブロック(またはサブブロック)について、小クロマブロック(またはサブブロック)上方隣接サンプルおよび/または左隣接サンプルが現在の画像(またはCTU行またはCTU、またはスライス、またはタイル、またはタイルグループ)の外側にある場合、小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)に対して許容されるクロマ予測モードは制約されてもよい。例えば、許容されるクロマ予測モードは、表1に記載されたモードの1つ(例えば、DM)などの、1つのモードのみに制限されてもよい。1つのモードのみに制約された場合、現在のクロマブロックのクロマ予測モードを示すための信号伝達にビットを用いる必要はない。
本開示の態様によれば、1つの現在のPPRにおける1つまたは任意の小クロマブロックについて、小クロマブロック(またはサブブロック)の上方隣接サンプルまたは左隣接サンプルが小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)の許容されるクロマ予測モードは、DMおよびL_CCLM(またはT_CCLM)などの2つのモードのみに制約されてもよい。上方のサンプルおよび隣接するサンプルのいずれが利用不可能であるかによって、異なる制約が適用されてもよい。
一実施形態において、1つの現在のPPR内の1つまたは任意の小クロマブロックについて、小クロマブロック(またはサブブロック)の上方隣接サンプルが現在のPPR内にあり、小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)に対して許容されるクロマ予測モードはDMおよび/またはL_CCLMモードのみに制約されてもよい。
一実施形態において、1つの現在のPPR内の1つまたは任意の小クロマブロックについて、小クロマブロック(またはサブブロック)の左隣接サンプルが現在のPPR内にある場合、小クロマブロック(またはサブブロック)に対して許容されるクロマ予測モードは、DMモードおよび/またはT_CCLMモードのみに制約されてもよい。
本開示の態様によれば、1つの現在のPPR内の1つまたは任意の小クロマブロックについて、小クロマブロック(またはサブブロック)の上方隣接サンプルまたは左隣接サンプルが現在のPPR内にあり、小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)の許容されるクロマ予測モードは、DMモードおよび垂直(または水平)モードなどの、2つのモードのみに制約されてもよい。上方のサンプルおよび隣接するサンプルのいずれが利用不可能であるかによって、異なる制約が適用されてもよい。
一実施形態において、1つの現在のPPR内の1つまたは任意の小クロマブロックについて、小クロマブロック(またはサブブロック)の上方隣接サンプルが現在のPPR内にあり、小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)に対して許容されるクロマ予測モードはDMおよび/または水平モードのみに制約されてもよい。
一実施形態において、1つの現在のPPR内の1つまたは任意の小クロマブロックについて、小クロマブロック(またはサブブロック)の左隣接サンプルが現在のPPR内にあり、小クロマブロック(またはサブブロック)の予測に利用不可能である場合、小クロマブロック(またはサブブロック)に対して許容されるクロマ予測モードはDMおよび/または垂直モードのみに制約されてもよい。
本開示の態様によれば、本開示に示された上記の方法は、シングルツリーおよび/またはデュアルツリーの場合に適用されてもよい。すなわち、本方法は、クロマサンプルとルーマサンプルが同じパーティションツリー構造を使用するか否かにかかわらず用いられてもよい。
IX.小ブロックサイズ制約改善のフローチャート
図12は、本開示の一実施形態による例示的なプロセス(1200)を概説するフローチャートを示す。様々な実施形態において、プロセス(1200)は、端末装置(210)、(220)、(230)および(240)内の処理回路、ビデオエンコーダ(303)の機能を実行する処理回路、ビデオデコーダ(310)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、イントラ予測モジュール(452)の機能を実行する処理回路、ビデオエンコーダ(503)の機能を実行する処理回路、予測器(535)の機能を実行する処理回路、イントラエンコーダ(622)の機能を実行する処理回路、イントラデコーダ(772)の機能を実行する処理回路、などの処理回路により実行される。一部の実施形態において、プロセス(1200)はソフトウェア命令で実行され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1200)を実行する。
プロセス(1200)は、一般に、プロセス(1200)が符号化されたビデオシーケンスの一部である現在の画像の現在のブロックの予測情報を復号するステップ(S1210)で開始されてもよい。予測情報は、現在のブロックのクロマサンプルに対するパーティションツリー構造を示してもよい。次に、プロセス(1200)は、ステップ(S1220)に進む。
ステップ(S1220)において、プロセス(1200)は、現在のブロックのクロマサンプルを、パーティションツリー構造に基づいて、複数のサブブロックに分割する。次に、プロセス(1200)は、ステップ(S1230)に進む。
ステップ(S1230)において、プロセス(1200)は、複数のサブブロック内のサブブロックのクロマサンプルを、以下の2つの条件、すなわち、(i)サブブロックの上方隣接サンプルおよび左隣接サンプルの少なくとも1つがサブブロックの予測に利用不可能であること、および(ii)サブブロックのブロックサイズがサイズ閾値以下であること、またはサブブロックの辺の長さが長さ閾値以下であること、という条件が満たされた場合、クロマイントラ予測モードのサブセットに基づいて予測する。次に、プロセス(1200)は、ステップ(S1240)に進む。
ステップ(S1240)において、プロセス(1200)は、予測されたクロマサンプルに基づいて、現在のブロックを再構築する。
現在のブロックを再構築した後、プロセス(1200)は終了する。
一実施形態において、現在のブロックのブロックサイズは、サイズ閾値より大きく、サブブロックのブロックサイズは、サイズ閾値以下である。サイズ閾値は、2×2、2×4、および4×2のいずれかを含んでもよい。サイズ閾値は、ルーマイントラ符号化された許容される最小のブロックのブロックサイズを含んでもよい。
一実施形態において、現在のブロックの辺の長さは長さ閾値より大きく、サブブロックの辺の長さは長さ閾値以下である。長さ閾値は、2および4のいずれか一方を含む。長さ閾値は、ルーマイントラ符号化された許容される最小のブロックの辺の長さを含んでもよい。
一実施形態において、クロマイントラ予測モードは、平面モード、DCモード、水平モード、垂直モード、派生モード(DM)、左クロス成分リニアモード(L_CCLM)、上方クロス成分リニアモード(T_CCLM)、ならびに左および上方クロス成分リニアモード(LT_CCLM)を含む。
一実施形態において、クロマイントラ予測モードのサブセットは、クロマイントラ予測モードの1つまたは2つを含む。 例えば、クロマイントラ予測モードのサブセットは、DMのみを含む。
一実施形態において、クロマイントラ予測モードのサブセットは、サブブロックの上方隣接サンプルがサブブロックの予測に利用不可能であり、かつ現在のブロック内に位置する場合、DM、L_CCLM、および垂直モードのうちの少なくとも1つを含む。
一実施形態において、クロマイントラ予測モードのサブセットは、サブブロックの左隣接サンプルがサブブロックの予測に利用不可能であり、かつ現在のブロック内に位置する場合、DM、T_CCLM、および水平モードのうちの少なくとも1つを含む。
一実施形態において、現在のブロックは、すべてのサブブロックが並列に再構築されるPPRである。
X.イントラサブパーティション(ISP)コーディングモード
イントラサブパーティション(ISP)コーディングモードで符号化されたルーマコーディングブロックは、表3に示すように、ブロックのブロックサイズに依存して、垂直方向(垂直ISPモード)または水平方向(水平ISPモード)に複数のサブパーティション(例えば、2または4)に分割されてもよい。表3は、ブロックサイズに依存するサブパーティションの例を示す。
一部の例において、CUを2つのサブパーティションに分割するか、4つのサブパーティションに分割するか否かは、CUのブロックサイズに依存する。図13Aおよび13Bは、一部の例示的なサブパーティションを示す。一部の例において、すべてのサブパーティションが、少なくとも16個のサンプルを有するという条件を満たす。クロマ成分については、ISPモードを適用することはできない。一部の例において、最大で2つのビンがISPに関して信号伝達される。第1のビンは、ISPが使用されるか否かを示す。ISPが使用される場合、1つの方向しか利用することができない場合を除き、ISPの方向を示すために、第2のビンがさらに信号伝達される。
図13Aは、本開示の一実施形態によるISPモードで符号化されるコーディングブロック(1300)の例示的な水平方向のISPモードおよび例示的な垂直方向のISPモードを示す。図13Aの例において、コーディングブロック(1300)のブロックサイズはW1×H1であり、これは例えば4×8または8×4サンプルのいずれかである。したがって、コーディングブロック(1300)は、2つのサブパーティションに分割される。図13に示すように、コーディングブロック(1300)は、水平ISPモードの場合は、それぞれがW1×H1/2サンプルのサイズを有する2つのサブパーティション(1311)~(1312)に水平に分割され、垂直ISPモードの場合は、それぞれがW1/2×H1サンプルのサイズを有する2つのサブパーティション(1321)~(1322)に垂直に分割される。
図13Bは、本開示の一実施形態によるISPモードで符号化される別のコーディングブロック(1350)の例示的な水平方向のISPモードおよび例示的な垂直方向のISPモードを示す。図13Bの例において、コーディングブロック(1350)のブロックサイズはW2xH2であり、これは例えば上記の4×8または8×4サンプルである。したがって、コーディングブロック(1350)は、4つのサブパーティションに分割される。図13Bに示すように、コーディングブロック(1350)は、それぞれがW2×H2/4サンプルのサイズを有する4つのサブパーティション(1361)~(1364)に水平に分割されるか、または、それぞれがW2/4×H2サンプルのサイズを有する4つのサブパーティション(1371)~(1374)に垂直に分割される。
一部の例において、これらのサブパーティションのそれぞれについて、エンコーダから送信された係数をエントロピー復号し、さらにその係数を逆量子化および逆変換することにより、残余信号が生成されてもよい。次に、現在のサブパーティションと呼んでもよいサブパーティションの1つについて、現在のサブパーティションにイントラ予測を行うことによって予測信号が生成されてもよい。最後に、現在のサブパーティションの再構築されたサンプルは、残余信号を予測信号に加えることにより得られてもよい。したがって、現在のサブパーティションの再構築されたサンプルは、例えば、現在のサブパーティションに隣接する別のサブパーティションを予測するために用いてもよい。このプロセスは、他のサブパーティションに対して繰り返してもよい。すべてのサブパーティションは、同じイントラモードを共有してもよい。
一部の例において、ISPモードは、最確モード(MPM)リストの一部であるイントラモードでのみ試験することができる。従って、CUがISPモードで符号化される場合、MPMリストのMPMフラグは、例えば、1すなわち真であると推論されてもよい。一部の例において、MPMリストは、DCモードを除外し、水平ISPモードに対して水平イントラ予測モードを優先し、垂直ISPモードに対しては垂直イントラ予測モードを優先するように変更されてもよい。
一部の例において、CUの各サブパーティションは、変換および再構築は各サブパーティションに対して個別に実行してもよいため、サブTUとみなしてもよい。
表4は、本開示の一実施形態によるISPモードを有するコーディングユニットの例示的な仕様を示す。
表4において、変数intra_subpartitions_mode_flag[x0][y0]が1に等しい場合、それは、現在のイントラCUがNumIntraSubPartitions[x0][y0]矩形変換ブロックサブパーティションに分割されることを指定する。変数intra_subpartitions_mode_flag[x0][y0]が0に等しい場合、それは現在のイントラコーディングユニットが矩形変換ブロックサブパーティションに分割されないことを指定する。変数intra_subpartitions_mode_flag[x0][y0]が存在しない場合は、それは0に等しいと推論される。
変数intra_subpartitions_split_flag[x0][y0]は、イントラサブパーティションの区分タイプが水平か垂直かを指定する。変数intra_subpartitions_split_flag[x0][y0]が存在しない場合は、以下のように推論される。
-cbHeightがMaxTbSizeYより大きい場合、intra_subpartitions_split_flag[x0][y0]は0に等しいと推論される。
-それ以外の場合、変数cbWidthがMaxTbSizeYより大きい場合、intra_subpartitions_split_flag[x0][y0]は1に等しいと推論される。
変数IntraSubPartitionsSplitTypeは、表5に示されるように、現在のルーマコーディングブロックに使用される区分タイプを指定する。表5は、IntraSubPartitionsSplitTypeへの例示的な名前結合を示す。IntraSubPartitionsSplitTypeは以下のように導出される。
-変数intra_subpartitions_mode_flag[x0][y0]が0に等しい場合、変数IntraSubPartitionsSplitTypeは0に設定される。
-それ以外の場合、変数IntraSubPartitionsSplitTypeは、1+intra_subpartitions_split_flag[x0][y0]に等しく設定される。
変数NumIntraSubPartitionsは、イントラルーマコーディングブロックがそへと分けられる変換ブロックサブパーティションの数を指定する。NumIntraSubPartitionsは以下のように導出される。
-変数IntraSubPartitionsSplitTypeがISP_NO_SPLITに等しい場合、変数NumIntraSubPartitionsは1に等しく設定される。
-それ以外の場合、以下の条件のいずれかが真であれば、NumIntraSubPartitionsは2に等しく設定される。
-cbWidthは4に等しく、cbHeightは8に等しい、
-cbWidthは8に等しく、cbHeightは4に等しい。
-それ以外の場合、変数NumIntraSubPartitionsは4に等しく設定される。
XI.スケーリングされた変換係数の変換プロセス
スケーリングされた変換係数のための変換プロセスへの入力は、(i)現在の画像の左上のルーマサンプルに対する現在のルーマ変換ブロックの左上のサンプルを指定するルーマロケーション(xTbY,yTbY)と、(ii)現在の変換ブロックの幅を指定する変数nTbWと、(iii)現在の変換ブロックの高さを指定する変数nTbHと、(iv)現在のブロックの色成分を指定する変数cIdxと、(v)x=0..nTbW-1,y=0..nTbH-1であるスケーリングされた変換係数の(nTbW)x(nTbH)配列d[x][y]と、を含んでもよい。
このプロセスの出力は、x=0..nTbW-1,y=0..nTbH-1である、残余サンプルの(nTbW)x(nTbH)配列r[x][y]である。
lfnst_idx[xTbY][yTbY]が0に等しくなく、nTbWおよびnTbHの両方が4以上の場合、以下が成立する。
-変数predModeIntra、nLfnstOutSize、log2LfnstSize、nLfnstSize、およびnonZeroSizeが以下のように導出される。
predModeIntra=(cIdx==0)?IntraPredModeY[xTbY][yTbY]:
IntraPredModeC[xTbY][yTbY] 式(1)
nLfnstOutSize=(nTbW>=8&&nTbH>=8)?48:16 式(2)
log2LfnstSize=(nTbW>=8&&nTbH>=8)?3:2 式(3)
nLfnstSize=1<<log2LfnstSize 式(4)
nonZeroSize=((nTbW==4&&nTbH==4)||(nTbW==8&&nTbH==8))?8:16 式(5)
-intra_mip_flag[xTbComp][yTbComp]が1に等しく、cIdxが0に等しい場合、predModeIntraはINTRA_PLANARに等しく設定される。
-predModeIntraがINTRA_LT_CCLM、INTRA_L_CCLM、またはINTRA_T_CCLMのいずれかに等しい場合、predModeIntraはIntraPredModeY[xTbY+nTbW/2][yTbY+nTbH/2]に等しく設定される。
-広角イントラ予測モードマッピングプロセスは、predModeIntra、nTbW、nTbHおよびcIdxを入力として、および変更されたpredModeIntraを出力として、起動される。
-x=0..nonZeroSize-1であるリストu[x]の値は、以下のように導出される。
xC=DiagScanOrder[2][2][x][0] 式(6)
yC=DiagScanOrder[2][2][x][1] 式(7)
u[x]=d[xC][yC] 式(8)
-一次元低周波非分離変換は、スケーリングされた変換係数の入力長nonZeroSizeと、nLfnstOutSizeに等しく設定された変換出力長nTrSと、x=0..nonZeroSize-1であるスケーリングされた非ゼロ変換係数のリストu[x]と、LFNSTセット選択のためのイントラ予測モードpredModeIntraと、入力として、選択されたLFNSTセットにおける変換選択のためのLFNSTインデックスlfnst_idx[xTbY][yTbY]と、出力として、x=0..nLfnstOutSize-1であるリストv[x]とにより起動される。
-x=0..nLfnstSize-1,y=0..nLfnstSize-1である配列d[x][y]は以下のように導出される。
-predModeIntraが34以下の場合、以下が成立する。
d[x][y]=(y<4)?v[x+(y<<log2LfnstSize)]:(x<4)?V[32+X+((y-4)<<2)]:d[x][y]) 式(9)
-それ以外の場合、以下のようになる。
d[x][y]=(x<4)?v[y+(x<<log2LfnstSize)]:(y<4)?v[32+y+((x-4)<<2)]:d[x][y]) 式(10)
変数implicitMtsEnabledは以下のように導出される。
-sps_mts_enabled_flagが1であり、以下の条件のいずれかが真である場合、implicitMtsEnabledは1に設定される。
-IntraSubPartitionsSplitTypeがISP_NO_SPLITに等しくない。
-cu_sbt_flagが1に等しく、Max(nTbW,nTbH)が32以下である。
-sps_explicit_mts_intra_enabled_flagが0に等しく、CuPredMode[0][xTbY][yTbY]がMODE_INTRAに等しく、lfnst_idx[x0][y0]が0に等しく、intra_mip_flag[x0][y0]が0に等しい。
-それ以外の場合、implicitMtsEnabledは0に設定される。
水平方向の変換カーネルを指定する変数trTypeHorと、垂直方向の変換カーネルを指定する変数trTypeVerとは、以下のように導出される。
-cIdxが0より大きい場合、trTypeHorおよびtrTypeVerは0に等しく設定される。
-それ以外の場合、implicitMtsEnabledが1に等しい場合、以下が成立する。
-IntraSubPartitionsSplitTypeがISP_NO_SPLITに等しくないか、sps_explicit_mts_intra_enabled_flagが0に等しく、CuPredMode[0][xTbY][yTbY]がMODE_INTRAにひとしい場合、trTypeHorとtrTypeVerは以下のように導出される。
trTypeHor=(nTbW>=4&&nTbW<=16)?1:0 式(11)
trTypeVer=(nTbH>=4&&nTbH<=16)?1:0 式(12)
-それ以外の場合(cu_sbt_flagが1に等しい)、trTypeHorおよびtrTypeVerはcu_sbt_horizontal_flagとcu_sbt_pos_flagに依存する。
-それ以外の場合、trTypeHorおよびtrTypeVerはtu_mts_idx[xTbY][yTbY]に依存する。
表6は、本開示の一実施形態による変換ツリーの例示的な仕様を示す。
表7は、本開示の一実施形態による変換ユニットの例示的な仕様を示す。
XII.小クロマイントラ予測ユニット(SCIPU)
最小イントラCUのサイズは、例えばHEVCにおいて8×8のルーマサンプルである。最小イントラCUのルーマ成分は、さらに4つの4×4ルーマイントラPUに区分することができるが、最小イントラCUのクロマ成分はさらに分割することはできない。そのため、4×4のクロマイントラブロックまたは4×4のルーマイントラブロックを処理する際に、ハードウェアの処理量が最悪になる可能性がある。
VTM5.0でのように、シングルコーディングツリーにおいて、クロマパーティションが、関連するルーマパーティションに続くため、また最小のイントラCUが4×4のルーマサンプルであるため、最小のクロマイントラCBは2×2となる。そのため、VVC復号に関する最悪のハードウェア処理量は、HEVC復号の場合のわずか1/4となる。
例えばVTM6.0におけるような小クロマイントラ予測ユニット(SCIPU)は、シングルツリー中にローカルデュアルツリーを作成することにより、クロマサンプル数が16よりも小さいクロマイントラCBの分割を禁止することを目的とする。ローカルデュアルツリーに入る前に、クロマパーティションは、関連するルーマパーティションと同じ区分を行う。すべてのCUは、イントラ符号化、インター符号化、IBC符号化のいずれにするかを柔軟に決定することができる。ローカルデュアルツリーに入った後、すべてのCUはインター符号化されるか、非インター符号化(イントラまたはIBC)されるかのいずれかを実行する必要がある。現在のCUがインター符号化される場合、現在のCUのクロマ成分も、その関連するルーマブロックと同様の区分に従う。そうでない場合、現在のCUが非インター符号化される場合、ルーマブロックはさらに分割することができるが、関連するクロマイントラブロックはさらに分割することはできない。現在のCUがローカルデュアルツリーの親ノードであるか否かを判断するための例示的な条件には、以下が含まれる:a)CUサイズが64であり、現在のCUがさらにQT区分されている、(b)CUサイズが64であり、現在のCUがさらにTT区分されている、(c)CUサイズが32であり、現在のCUがさらにBT区分されている、(d)CUサイズが64であり、現在のCUがさらにBT区分されている、(e)CUサイズが128であり、現在のCUがさらにTT区分されている。
上記条件の1つが真である場合、現在のCUはローカルデュアルツリーの親ノードとして判定される。また、条件(a)、(b)または(c)が成立する場合、この領域(すなわち現在のCU)内のすべてのCU(またはサブCU)は、すべてイントラ符号化またはすべてIBC符号化されるように制約される。条件d)またはe)が成立する場合、このエリア(すなわち、現在のCU)内のすべてのCU(またはサブCU)がインター符号化されているか、または非インター符号化されているかを、さらにもう1つのフラグにより伝達することが必要となる。
表8は、本開示の一実施形態によるSCIPUモードの例示的な仕様を示す。
変数modeTypeConditionは以下のように導出される。
-以下の条件の1つが真であれば、modeTypeConditionは0に等しく設定される。
-slice_type==Iおよびqtbtt_dual_tree_intra_flagが1に等しいか、
-modeTypeCurrがMODE_TYPE_ALLに等しくない。
-それ以外の場合、以下の条件の1つが真であれば、modeTypeConditionは1に等しく設定される。
-cbWidth*cbHeightが64に等しく、split_qt_flagが1に等しいか、
-cbWidth*cbHeightが64に等しく、MttSplitMode[x0][y0][mttDepth]がSPLIT_TT_HORまたはSPLIT_TT_VERに等しいか、
-cbWidth*cbHeightが32に等しく、かつMttSplitMode[x0][y0][mttDepth]がSPLIT_BT_HORまたはSPLIT_BT_VERに等しい。
-それ以外の場合、以下の条件の1つが真であれば、modeTypeConditionは、1+(slice_type!=I?1:0)に等しく設定される。
-cbWidth*cbHeightが64に等しく、かつMttSplitMode[x0][y0][mttDepth]がSPLIT_BT_HORまたはSPLIT_BT_VERに等しいか、
-cbWidth*cbHeightが128に等しく、かつMttSplitMode[x0][y0][mttDepth]がSPLIT_TT_HORまたはSPLIT_TT_VERに等しい。
-それ以外の場合、modeTypeConditionは0に等しく設定される。
変数mode_constraint_flagが0に等しい場合、それは、現在のコーディングツリーノード内のコーディングユニットが、インター予測コーディングモードのみを使用することができることを指定する。変数mode_constraint_flagが1に等しい場合、それは、現在のコーディングツリーノード内のコーディングユニットが、インター予測コーディングモードを使用することはできないことを指定する。
XIII.異なるカラーフォーマット
図14A~14Dは、異なるYUVフォーマットのいくつかの例を示す。YUV4:4:4フォーマットに関しては、UおよびV画像の幅および高さは、Y画像のそれと同じである。YUV4:2:2フォーマットに関しては、UおよびV画像の高さはY画像のそれと同じであるが、UとVの画像の幅はY画像のそれの半分である。YUV4:1:1フォーマットに関しては、UおよびV画像の高さはY画像のそれと同じであるが、UとVの画像の幅はY画像のそれの1/4である。YUV4:2:0フォーマットに関しては、UおよびV画像の幅および高さは、Y画像のそれの半分である。
XIV.多重参照線イントラ予測
図15は、本開示の一実施形態による例示的な多重参照線イントラ予測を示す。多重参照線イントラ予測は、イントラ予測のためにより多くの参照線を使用することができ、エンコーダは、いずれの参照線がイントラ予測子を生成するために使用されるかを決定し、それを示す信号を送信することができる。一例において、参照線0、1、および/または3を使用することができ、参照線2は除外されてもよい。イントラ予測モードの前に参照線インデックスを信号伝達することができ、非ゼロ参照線インデックスが信号伝達されてもよい場合には、最確モードのみが許可される。図15において、4つの参照線の例が描かれており、各参照線は、左上の参照サンプルとともに、6つのセグメント、すなわち、セグメントA~Fにより構成されている。さらに、セグメントAとFには、それぞれセグメントBおよびEから最も近いサンプルがパディングされている。
XV.ローカルデュアルツリーの改善
本開示の実施形態は、ローカルデュアルツリーの使用を改善することができる。いくつかの関連する例において、SCIPUは、シングルツリーにおいて2×2、2×4、4×2の小クロマブロックを回避するが、シングルツリーにおいてはローカルデュアルツリーを採用する。しかしながら、ローカルデュアルツリーは実行が難しい場合がある。したがって、SCIPUを変更しても、それに見合う恩恵が得られないことがある。
本開示の態様によれば、1つのSCIPU領域内のツリー深さは、閾値T以下であることがあり、ここで、Tは0、1または2などの整数である。Tの値は、SCIPU領域をさらに区分することができる回数を示す。例えば、Tが0に等しい場合、それは、SCIPUがさらに区分できないことを意味する。Tが1に等しい場合、それは、SCIPUを1回だけ区分してもよいことを意味する。
一実施形態において、インター符号化されたSCIPU領域および非インター符号化されたSCIPU領域は、異なる閾値を有してもよい。現在のSCIPU領域内のすべてのCUがインター符号化されている場合、現在のSCIPU領域内のツリー深さは閾値T以下であってもよい。現在のSCIPU領域内のすべてのCUが非インター符号化されている場合(例えばイントラ符号化されているか、IBC符号化されている)、現在のSCIPU領域内のツリー深さは、閾値Tよりも大きくてもよい。すなわち、非インター符号化されたSCIPUのツリー深さは、閾値Tによって制約されない。この実施形態においては、Tは、1または2などの正の整数であることに留意されたい。
XVI.ローカルデュアルツリーの改善に関するフローチャート
図16は、本開示の一実施形態による例示的なプロセス(1600)を概説するフローチャートである。様々な実施形態において、プロセス(1600)は、端末装置(210)、(220)、(230)および(240)内の処理回路、ビデオエンコーダ(303)の機能を実行する処理回路、ビデオデコーダ(310)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、イントラ予測モジュール(452)の機能を実行する処理回路、ビデオエンコーダ(503)の機能を実行する処理回路、予測器(535)の機能を実行する処理回路、イントラエンコーダ(622)の機能を実行する処理回路、イントラデコーダ(772)の機能を実行する処理回路、などの処理回路により実行される。一部の実施形態において、プロセス(1600)はソフトウェア命令で実行され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1600)を実行する。
プロセス(1600)は、一般に、プロセス(1600)が、符号化されたビデオシーケンスの一部である現在の画像の現在のブロックの予測情報を復号するステップ(S1610)で開始されてもよい。予測情報は、現在のブロックに対するシングルパーティションツリー構造およびブロックサイズを示してもよい。次に、プロセス(1600)は、ステップ(S1620)に進む。
ステップ(S1620)において、処理回路(1600)は、現在のブロックがローカルパーティションツリー構造の親ノードであるか否かを、シングルパーティションツリー構造と現在のブロックのブロックサイズとに基づいて判定する。ローカルパーティションツリー構造のツリー深さは閾値以下である。現在のブロックがローカルパーティションツリー構造の親ノードであると判定されると、プロセス(1600)はステップ(S1630)に進む。
ステップ(S1630)において、プロセス(1600)は、現在のブロックがローカルパーティションツリー構造の親ノードであることに応じて、ローカルパーティションツリー構造に従って現在のブロックを分割する。一実施形態において、プロセス(1600)は、現在のブロックがローカルパーティションツリー構造の親ノードであることと、およびツリー深さがある値(例えば0)であることとに応じて、ローカルパーティションツリー構造に従って現在のブロックを分割する。次に、プロセス(1600)は、ステップ(S1640)に進む。
ステップ(S1640)において、プロセス(1600)は、現在のブロックの予測モードに基づいて現在のブロックを再構築する。
現在のブロックを再構築した後、プロセス(1600)は終了する。
一実施形態において、現在のブロックの予測モードは、(i)ブロックサイズが64サンプルであり、ローカルパーティションツリー構造が四分木であること、または(ii)ブロックサイズが64サンプルであり、ローカルパーティションツリー構造が三分木であること、および(iii)ブロックサイズが32サンプルであり、ローカルパーティションツリー構造が二分木であることの3つの条件のうち、1つが満たされる場合、非インター予測であると判定される。
一実施形態において、現在のブロックの予測モードの判定は、(i)ブロックサイズが64サンプルであり、ローカルパーティションツリー構造が二分木であることと、(ii)ブロックサイズが128サンプルであり、ローカルパーティションツリー構造が三分木であることとの2つの条件のうち、1つが満たされる場合、予測情報に含まれるシグナル伝達されたフラグに基づき判定される。
一実施形態において、閾値は、現在のブロックがインター符号化されていれば第1の閾値であり、現在のブロックが非インター符号化されていれば第2の閾値である。第1の閾値は、第2の閾値とは異なってもよい。
一実施形態において、プロセス(1600)は、現在のブロックがローカルパーティションツリー構造の親ノードであると判定された場合、現在のブロックをSCIPUであると判定する。
一実施形態において、プロセス(1600)は、現在のブロックの予測モードが判定されたか否かに基づいて、現在のブロックを分割する。例えば、表8に示す例示的な仕様に一条件を追加することで、閾値を1に設定することができる。追加された条件は、表9に示すように、「modeTypeCurr==Mode_TYPE_ALL」であってもよい。初期分割に対しては、現在のブロックの予測モードが判定されていないため、追加された条件「modeTypeCurr==Mode_TYPE_ALL」は満たすことができる。他の条件も満たされていれば、初期分割を実行してもよい。初期分割の後、現在のブロックの予測モードが判定されるため、追加された条件「modeTypeCurr==Mode_TYPE_ALL」は満たされない。他の条件は満たされているが、第2の分割を実行することはできない。したがって、追加された条件「modeTypeCurr==Mode_TYPE_ALL」の結果として、ローカルパーティションツリー構造のツリー深さが、1に設定されている閾値によって制約されることがある。
一実施形態において、プロセス(1600)は、現在のブロックがインター符号化されているか否かに基づいて、現在のブロックを分割する。例えば、表8に示す例示的な仕様に別の条件を追加することで、閾値を1に設定することができる。追加された条件は、表10に示すように、「modeTypeCurr!=Mode_TYPE_INTER」であってもよい。初期分割に関しては、現在のブロックの予測モードが判定されていないため、追加された条件「modeTypeCurr!=Mode_TYPE_INTER」を満たすことができる。他の条件も満たされていれば、初期分割を行ってもよい。初期分割の後、現在のブロックの予測モードが判定される。現在のブロックの予測モードがインター予測であると判定された場合、「modeTypeCurr!=Mode_TYPE_INTER」という条件は満たされない。他の条件は満たされているが、第2の分割を行うことはできない。したがって、追加された条件「modeTypeCurr!=Mode_TYPE_INTER」の結果として、ローカルパーティションツリー構造のツリー深さは、現在のブロックの予測モードがインター予測の場合、1に設定された閾値によって制約されることがある。
XVII.コンピュータシステム
本明細書において提示された方法は、別々に使用してもよいし、任意の順序で組み合わせてもよい。さらに、実施形態、エンコーダ、およびデコーダのそれぞれは、処理回路(例えば、1つまたは複数のプロセッサ、または1つまたは複数の集積回路)によって動作させてもよい。一例として、1つまたは複数のプロセッサは、非一時的なコンピュータ可読媒体に保存されたプログラムを実行する。
上述の技術は、コンピュータ可読命令を用いた、1つ以上のコンピュータ可読媒体に物理的に保存されたコンピュータソフトウェアとして実行されてもよい。
例えば、図17は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム(1700)を示す。
コンピュータソフトウェアは、任意の適切な機械コードまたはコンピュータ言語を使用して符号化されてもよく、それは、1つ以上のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによって、直接、または、解釈、マイクロコードの実行などにより実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどのメカニズムを施されてもよい。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機器、モノのインターネット機器などを含む、様々なタイプのコンピュータまたはその構成要素上で実行されてもよい。
コンピュータシステム(1700)のための図17に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実行するコンピュータソフトウェアの使用または機能の範囲に関して、いかなる制限の示唆も意図されていない。また、構成要素の構成は、コンピュータシステム(1700)の例示的な実施形態に図示されている構成要素のいずれか1つまたはその組み合わせに関連する依存性または要求を有するものとは解釈されないものとする。
コンピュータシステム(1700)は、特定のヒューマンインターフェース入力デバイスを含んでもよい。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、音声入力(例えば、声、拍手)、視覚入力(例えばジェスチャー)、嗅覚入力(図示せず)などを介して、1人または複数の人間のユーザによる入力に反応するものであってもよい。ヒューマンインターフェースデバイスは、音声(スピーチ、音楽、周囲の音など)、画像(スキャンした画像、静止画カメラで撮影した写真画像など)、ビデオ(二次元ビデオ、立体ビデオを含む三次元ビデオなど)など、人間による意識的な入力に必ずしも直接に関係しない特定のメディアをキャプチャするために用いてもよい。
入力用ヒューマンインターフェースデバイスは、キーボード(1701)、マウス(1702)、トラックパッド(1703)、タッチスクリーン(1710)、データグローブ(図示せず)、ジョイスティック(1705)、マイクロフォン(1706)、スキャナ(1707)、カメラ(1708)のうちの1つまたは複数(それぞれ1つのみが図示されている)を含んでもよい。
また、コンピュータシステム(1700)は、特定のヒューマンインターフェース出力デバイスを含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味を介して、1人または複数の人間のユーザの感覚を刺激するものであってもよい。そのようなヒューマンインターフェース出力デバイスに含まれてもよいものとしては、触覚出力デバイス(例えば、タッチスクリーン(1710)による触覚フィードバック)、データグローブ(図示せず)、またはジョイスティック(1705)などであるが、入力デバイスとして機能しない触覚フィードバックデバイスもあってもよい)、音声出力装置(例えば、スピーカー(1709))、ヘッドフォン(図示せず)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンなどのスクリーン(1710)であって、それぞれタッチスクリーン入力機能を有する、または有しないもの、かつ触覚フィードバック機能を有する、または有しないもの、などであり、ここで、そのうちの一部は、二次元視覚出力、または立体画法出力などの手段による三次元以上の出力を出力することができてもよいもの、さらに仮想現実ゴーグル(描かれていない)、ホログラフィックディスプレイ、スモークタンク(描かれていない))、およびプリンタ(描かれていない)などがある。(スクリーン(1710)などの)これらの視覚出力デバイスは、グラフィックスアダプタ(1750)を介してシステムバス(1748)に接続されてもよい。
また、コンピュータシステム(1700)は、CD/DVDなどのメディア(1721)を備えたCD/DVD ROM/RW(1720)を含む光学メディア、サムドライブ(1722)、リムーバブルハードドライブまたはソリッドステートドライブ(1723)、テープやフロッピーディスクなどのレガシー磁気メディア(描かれていない)、セキュリティドングル(描かれていない)などの特殊なROM/ASIC/PLDベースのデバイスなど、人間がアクセス可能な記憶装置およびそれらに関連付けられたメディアを含んでもよい。
また、当業者には、本願において開示された主題に関連して使用される用語「コンピュータ可読媒体」が、伝送媒体、搬送波、または他の一過性の信号を包含しないことは周知のことである。
また、コンピュータシステム(1700)は、1つまたは複数の通信ネットワーク(1755)へのネットワークインターフェース(1754)を含んでもよい。1つ以上の通信ネットワーク(1755)は、例えば、無線式、有線式、光学式であってもよい。1つ以上の通信ネットワーク(1755)はさらに、ローカルエリア、ワイドエリア、メトロポリタン エリア、車両および産業用、実時間型、遅延耐性型などであってもよい。1つ以上の通信ネットワーク(1755)の例としては、イーサネットなどのローカルエリアネットワーク、無線LAN、ならびにGSM、3G、4G、5G、LTEなどのセルラーネットワーク、ケーブルTV、衛星TV、地上波放送TVなどのTV有線または無線広域デジタルネットワーク、CANBusなどの車両および産業用ネットワークなどが挙げられる。特定の汎用データポートまたは周辺バス(1749)(例えば、コンピュータシステム(1700)のUSBポート)に接続される外部ネットワークインターフェースアダプタを必要とするのが一般的である特定のネットワークがあり、また、後述のシステムバス(例えば、PCコンピュータシステムに組み込まれるイーサネットインターフェースや、スマートフォンコンピュータシステムに組み込まれるセルラーネットワークインターフェースなど)に取り付けることでコンピュータシステム(1700)のコアに組み込まれるのが一般的であるネットワークもある。これらのネットワークのいずれかを使用して、コンピュータシステム(1700)は、他のエンティティと通信することができる。このような通信は、単一方向受信のみのもの(例えば、テレビ放送)、単一方向送信のみのもの(例えば、特定のCANbusデバイスへのCANbus)、または、例えばローカルまたはワイドエリアデジタルネットワークを使用する他のコンピュータシステムとの双方向性のものであってもよい。特定のプロトコルやプロトコルスタックは、前述のようにそれらのネットワークやネットワークインターフェースのそれぞれにおいて使用されてもよい。
前述のヒューマンインターフェースデバイス、ヒューマンアクセス可能な記憶装置、およびネットワークインターフェースは、コンピュータシステム(1700)のコア(1740)に取り付けられてもよい。
コア(1740)は、1つまたは複数の中央処理装置(CPU)(1741)、グラフィックスプロセッシングユニット(GPU)(1742)、フィールドプログラマブルゲートエリア(FPGA)の形態の特殊なプログラム可能処理装置(1743)、特定のタスクのためのハードウェアアクセラレータ(1744)などを含んでもよい。これらのデバイスは、リードオンリーメモリ(ROM)(1745)、ランダムアクセスメモリ(1746)、ユーザがアクセスできない内蔵ハードドライブ、SSDなどの内蔵大容量記憶装置(1747)とともに、システムバス(1748)を介して接続されてもよい。一部のコンピュータシステムにおいて、システムバス(1748)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理的なプラグの形でアクセス可能であってもよい。周辺機器は、コアのシステムバス(1748)に直接に、または周辺バス(1749)を介して取り付けることができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU(1741)、GPU(1742)、FPGA(1743)、およびアクセラレータ(1744)は、組み合わされて前述のコンピュータコードを構成することができる特定の命令を実行してもよい。そのコンピュータコードは、ROM(1745)またはRAM(1746)に格納されていてもよい。また、暫定的なデータは、RAM(1746)に保存されてもよく、一方、永続的なデータは、例えば、内蔵大容量記憶装置(1747)に保存されてもよい。記憶装置のいずれかへの高速な記憶およびそれからの取り出しは、CPU(1741)、GPU(1742)、大容量記憶装置(1747)、ROM(1745)、RAM(1746)の少なくとも1つに密接に関連し得るキャッシュメモリの使用によって可能になり得る。
コンピュータ可読媒体は、コンピュータが実行する様々な演算を実行するためのコンピュータコードを有してもよい。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、あるいはコンピュータソフトウェアの技術に精通した者によく知られ、かつ利用可能な種類のものであってもよい。
非限定的な一例として、アーキテクチャ(1700)、特にコア(1740)を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が1つまたは複数の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行することによる機能性を提供することができる。このようなコンピュータ可読媒体は、上で紹介したようなユーザアクセス可能な大容量記憶装置、およびコア内部大容量記憶装置(1747)またはROM(1745)などの、非一時的な性質を有するコア(1740)の特定の記憶装置に関連する媒体であってもよい。本開示の様々な実施形態を実行するソフトウェアは、そのようなデバイスに格納され、コア(1740)によって実行されてもよい。コンピュータ可読媒体は、特定のニーズに応じて、1つまたは複数のメモリデバイスまたはチップを含んでもよい。ソフトウェアは、コア(1740)および特にその中の処理装置(CPU、GPU、FPGAなどを含む)に、RAM(1746)に保存されたデータ構造を定義すること、およびそのようなデータ構造をソフトウェアによって定義されたプロセスに従って変更することを含む、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。
追加または代替として、コンピュータシステムは、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに、またはソフトウェアとともに動作することができる回路(例えば、アクセラレータ(1744))にハードワイヤードの方式で、またはその他の方式で具現化された論理の結果として機能性を提供することができる。ソフトウェアとは、論理を包含してもよく、また場合により、その逆であってもよい。本願において、コンピュータ可読媒体とは、実行のためのソフトウェアを格納した回路(集積回路(IC)など)、実行のための論理を具現化した回路、または場合によりその両方を含んでもよい。本開示は、ハードウェアおよびソフトウェアの任意の適切な組み合わせを包含する。
本開示では、一部の例示的な実施形態を説明してきたが、本開示の範囲内にある、変更、変形、および様々な代替的な等価物が存在する。したがって、当業者は、本明細書に明示的に示されていない、または記載されていないが、本開示の原理を具現化し、したがってその趣旨および範囲内にある多数のシステムおよび方法に想到することができることが理解されるであろう。
付録A:頭字語
AMVP:Advanced Motion Vector Prediction (高度動きベクトル予測)
ASIC:Application-Specific Integrated Circuit(特定用途向け集積回路)
ATMVP:Alternative/Advanced Temporal Motion Vector Prediction(代替/高度時間動きベクトル予測)
BDOF:Bi-directional Optical Flow(双方向オプティカルフロー)
BDPCM(またはRDPCM)Residual Difference Pulse Coded Modulation(残余パルス符号化変調)
BIO: Bi-directional Optical Flow(双方向オプティカルフロー)
BMS: Benchmark Set(ベンチマークセット)
BT: Binary Tree(二分木)
BV:Block Vector(ブロックベクトル)
CANBus:Controller Area Network Bus(コントローラエリアネットワークバス)
CB: Coding Block(コーディングブロック)
CBF:Coded Block Flag(符号化されたブロックフラグ)
CCLM:Cross-Component Linear Mode/Model(クロス成分リニアモード/モデル)
CD: Compact Disc (コンパクトディスク)
CPR: Current Picture Referencing(現在画像参照)
CPU: Current Picture Referencing(中央画像参照)
CRT:Cathode Ray Tube(陰極線管)
CTB:Coding Tree Block(コーディングツリーブロック)
CTU: Coding Tree Units(コーディングツリーユニット)
CU: Coding Unit (コーディングユニット)
DM: Derived Mode(派生モード)
DPB:Decoder Picture Bufferデコーダ画像バッファ
DVD: Digital Video Disc (デジタルビデオディスク)
FPGA:Field Programmable Gate Areas(フィールドプログラマブルゲートエリア)
GOP: Group of Picture (画像群)
GPU:Graphics Processing Unit(グラフィックスプロセッシングユニット)
GSM:Global System for Mobile communications(汎欧州デジタル移動電話方式)
HDR:High Dynamic Range(ハイダイナミックレンジ)
HEVC:High Efficiency Video Coding(高効率ビデオ符号化)
HRD:Hypothetical Reference Decoder(仮想参照デコーダ)
IBC: Intra Block Copy(イントラブロックコピー)
IC:Integrated Circuit(集積回路)
ISP:Intra Sub-Partitions(イントラサブパーティション)
JEM:Joint Exploration Model(共同検証モデル)
JVET: Joint Video Exploration Team(共同ビデオ検証チーム)
LAN:Local Area Network(ローカルエリアネットワーク)
LCD:Liquid-Crystal Display(液晶ディスプレイ)
LFNST:Low Frequency Non-Separable Transform(低周波非分離変換)
LTE: Long-Term Evolution(ロングタームエボリューション))
L_CCLM: Left-Cross-Component Linear Mode/Model(左クロス成分リニアモード/モデル)
LT_CCLM: Left and Top Cross-Component Linear Mode/Model(左/上方クロス成分リニアモード/モデル)
MIP: Matrix based Intra Prediction(マトリックスベースイントラ予測)
MPM: Most Probable Mode(最確モード)
MRLP (または MRL): Multiple Reference Line Prediction (多重参照線予測)
MTS: マルチトランスフォームセレクション
MV:Motion Vector(動きベクトル)
OLED: Organic Light-Emitting Diode(有機発光ダイオード)
PBs: Prediction Blocks(予測ブロック)
PCI:Peripheral Component Interconnect(周辺機器相互接続)
PDPC: Position Dependent Prediction Combination(位置依存予測組合せ)
PLD:Programmable Logic Device(プログラマブルロジックデバイス)
PPR: Parallel-Processable Region(並列処理可能領域)
PU: Prediction Unit(予測ユニット)
QT:Quad-Tree(四分木)
RAM Random Access Memory(ランダムアクセスメモリ)
ROM: Read-Only Memory(リードオンリーメモリ
SBT:Sub-block Transform(サブブロック変換)
SCC:Screen Content Coding(スクリーンコンテンツコーディング)
SCIPU: Small Chroma Intra Prediction Unit(小クロマイントラ予測ユニット)
SDR:Standard Dynamic Range(スタンダードダイナミックレンジ)
SEI:Supplementary Enhancement Information(補足強化情報)
SNR:Signal Noise Ratio(シグナルノイズ比)
SSD:Solid-state Drive(ソリッドステートドライブ)
TT: Ternary Tree(三分木)
TU: Transform Unit(変換ユニット)
T_CCLM: Top Cross-Component Linear Mode/Model(上方クロス成分リニアモード/モデル)
USB: Universal Serial Bus(ユニバーサルシリアルバス)
VPDU:Visual Process Data Unit(ビジュアルプロセスデータユニット)
VUI: Video Usability Information(ビデオユーザビリティ情報
VVC:Versatile Video Coding(多用途ビデオ符号化)
WAIP:Wide-Angle Intra Prediction(広角イントラ予測)
送信機(540)は、エントロピーコーダ(545)によって作成されたような符号化されたビデオシーケンスをバッファリングして、エンコードされたビデオデータを保存することになる記憶装置へのハードウェア/ソフトウェアリンクであり得る通信チャネル(560)を介した送信の準備をしてもよい。送信機(540)は、ビデオエンコーダ(503)からの符号化されたビデオデータを、例えば、符号化された音声データおよび/または補助データストリーム(ソースは図示せず)などの、送信される他のデータと統合してもよい。