図1は、本開示の実施形態による通信システム(100)の簡略化されたブロック図を示す。通信システム(100)は、例えばネットワーク(150)を介して互いに通信可能な複数の端末装置を含む。例えば、通信システム(100)は、ネットワーク(150)を介して相互接続された第1の対の端末装置(110)および(120)を含む。図1の例では、第1の対の端末装置(110)および(120)は、データの単方向送信を実行する。例えば、端末装置(110)は、ネットワーク(150)を介して他方の端末装置(120)へ送信するためにビデオデータ(例えば、端末装置(110)によってキャプチャされたビデオピクチャのストリーム)をコード化し得る。エンコードされたビデオデータは、1つ以上のコード化されたビデオビットストリームの形で送信されることができる。端末装置(120)は、ネットワーク(150)からコード化されたビデオデータを受信し、コード化されたビデオデータをデコードしてビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示することができる。単方向のデータ送信は、メディア供給アプリケーションなどで一般的である。
別の例では、通信システム(100)は、例えば、ビデオ会議中に発生し得るコード化されたビデオデータの双方向送信を実行する第2の対の端末装置(130)および(140)を含む。データの双方向送信の場合、一例では、端末装置(130)および(140)のそれぞれは、ネットワーク(150)を介して端末装置(130)および(140)のうちの他方の端末装置へ送信するためにビデオデータ(例えば、端末装置によってキャプチャされたビデオピクチャのストリーム)をコード化し得る。端末装置(130)および(140)の一方は、端末装置(130)および(140)のうちの他方の端末装置で送信されたコード化されたビデオデータを受信することができ、コード化されたビデオデータをデコードしてビデオピクチャを復元することができ、復元されたビデオデータに従ってビデオピクチャをアクセス可能な表示装置に表示することができる。
図1の例では、端末装置(110)、(120)、(130)および(140)は、サーバ、パーソナルコンピュータおよびスマートフォンとして示され得るが、しかし、本開示の原理はこれに制限されることはない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤー、および/または専用のビデオ会議機器などにおける用途を見出す。ネットワーク(150)は、例えば有線および/または無線通信ネットワークを含む、端末装置(110)、(120)、(130)および(140)間でコード化されたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(150)は、回線交換および/またはパケット交換チャネルでデータを交換することができる。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。本議論の目的のために、ネットワーク(150)のアーキテクチャおよびトポロジーは、以下で説明されない限り、本開示の動作にとって重要でないかもしれない。
図2は、開示された主題の適用の例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示された主題は、例えば、ビデオ会議、デジタルTV、および、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶など、を含む他のビデオ対応アプリケーションに等しく適用可能である。
ストリーミングシステムは、例えば非圧縮のビデオピクチャ(202)のストリームを作成するデジタルカメラなどのビデオソース(201)を含むことができるキャプチャサブシステム(213)を含んでもよい。一例では、ビデオピクチャ(202)のストリームは、デジタルカメラによって取得されたサンプルを含む。エンコードされたビデオデータ(204)(またはコード化されたビデオビットストリーム)と比較して高データ量を強調するために太線で示されたビデオピクチャ(202)のストリームは、ビデオソース(201)に結合されたビデオエンコーダ(203)を含む電子デバイス(220)によって処理されることができる。ビデオエンコーダ(203)は、以下でより詳細に説明されるように、開示された主題の態様を可能にするか或いは実施するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。ビデオピクチャ(202)のストリームと比較してより低いデータ量を強調するために細い線で示された、エンコードされたビデオデータ(204)(またはエンコードされたビデオビットストリーム(204))は、将来使うためにストリーミングサーバ(205)に記憶されることができる。図2のクライアントサブシステム(206)および(208)のような1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(205)にアクセスして、エンコードされたビデオデータ(204)のコピー(207)および(209)を検索することができる。クライアントサブシステム(206)は、例えば、電子デバイス(230)におけるビデオデコーダ(210)を含むことができる。ビデオデコーダ(210)は、エンコードされたビデオデータの入り方向コピー(207)をデコードし、ディスプレイ(212)(例えば、表示画面)または他のレンダリングデバイス(描画せず)でレンダリングできるビデオピクチャ(211)の出方向ストリームを作成する。一部のストリーミングシステムにおいて、エンコードされたビデオデータ(204)、(207)、および(209)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコードされることができる。これらの規格の例は、ITU-T勧告H.265を含む。一例では、発展中のビデオコーディング規格は、非公式的にヴァーサトゥルビデオコーディング(VVC)として知られている。開示された主題は、VVCの文脈に使用され得る。
なお、電子デバイス(220)および(230)は、他の構成要素(図示せず)を含むことができる。例えば、電子デバイス(220)は、ビデオデコーダ(図示せず)を含むことができ、電子デバイス(230)は、ビデオエンコーダ(図示せず)を含むこともできる。
図3は、本開示の実施形態によるビデオデコーダ(310)のブロック図を示す。ビデオデコーダ(310)は、電子デバイス(330)に含まれることができる。電子デバイス(330)は、受信機(331)(例えば、受信回路)を含むことができる。ビデオデコーダ(310)は、図2の例におけるビデオデコーダ(210)の代わりに使用されることができる。
受信機(331)は、ビデオデコーダ(310)によってデコードされる1つ以上のコード化されたビデオシーケンスを受信することができ、同一または別の実施形態では、一度に1つのコード化されたビデオシーケンスを受信してもよく、各コード化されたビデオシーケンスのデコードは、他のコード化されたビデオシーケンスから独立している。コード化されたビデオシーケンスは、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得るチャネル(301)から受信されることができる。受信機(331)は、それぞれの使用エンティティ(描画せず)に転送され得る他のデータ、例えば、コード化されたオーディオデータおよび/または補助データストリームとともに、エンコードされたビデオデータを受信し得る。受信機(331)は、コード化されたビデオシーケンスを他のデータから分離することができる。ネットワークジッタを防止するために、バッファメモリ(315)は、受信機(331)とエントロピーデコーダ/パーサ(320)(以降、「パーサ(320)」)の間に結合されてもよい。特定のアプリケーションでは、バッファメモリ(315)は、ビデオデコーダ(310)の一部である。他の場合、バッファメモリ(315)は、ビデオデコーダ(310)(描画せず)の外部に存在し得る。さらに他の場合、例えば、ネットワークジッタを防止するためにビデオデコーダ(310)の外部にバッファメモリ(描画せず)が存在し、さらに、例えば、再生タイミングを取り扱うためにビデオデコーダ(310)の内部に別のバッファメモリ(315)が存在し得る。受信機(331)が十分な帯域幅および可制御性を有する記憶/転送装置から、または等同期ネットワークからデータを受信する際に、バッファメモリ(315)は必要とされないことがあり、または小さくされることがある。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(315)が必要になる場合があり、バッファメモリ(315)は、比較的大きいことがあり、有利には適応サイズであることができ、ビデオデコーダ(310)の外部のオペレーティングシステムまたは類似の要素(描画せず)に少なくとも部分的に実施され得る。
ビデオデコーダ(310)は、コード化されたビデオシーケンスからシンボル(321)を再構築するパーサ(320)を含んでもよい。これらのシンボルのカテゴリは、ビデオデコーダ(310)の操作を管理するために使用される情報を含んで、および、電子デバイス(330)の不可欠な部分ではないが、図3に示されるように電子デバイス(330)に結合され得るレンダリングデバイス(312)(例えば、表示画面)のようなレンダリングデバイスを制御する情報を潜在的に含む。レンダリングデバイスのための制御情報は、補助強化情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(描画せず)の形態であってよい。パーサ(320)は、受信されたコード化されたビデオシーケンスを構文解析/エントロピーデコードすることができる。コード化されたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に合わせることができ、可変長コーディング、ハフマンコーディング、文脈感受性を有するもしくは有さない算術コーディングなどを含む様々な原理に従うことができる。パーサ(320)は、グループに対応する少なくとも1つのパラメータに基づいて、コード化されたビデオシーケンスからビデオデコーダにおける画素の少なくとも1つのサブグループのためのサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャ群(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(320)は、コード化されたビデオシーケンスから変換係数、量子化パラメータ値、動きベクトルなどのような情報をも抽出することができる。
パーサ(320)は、シンボル(321)を作成するために、バッファメモリ(315)から受信されたビデオシーケンスに対してエントロピーデコード/構文解析操作を実行することができる。
シンボル(321)の再構築は、コード化されたビデオピクチャまたはその一部のタイプ(例えば、インターおよびイントラピクチャ、インターおよびイントラブロック)、および他の要因に応じて、複数の異なるユニットが関与することができる。どのユニットが、どのように関与するかは、パーサ(320)によってコード化されたビデオシーケンスから構文解析されたサブグループ制御情報によって制御されることができる。パーサ(320)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために示されていない。
すでに述べた機能ブロックに加え、ビデオデコーダ(310)は、以下で説明されるようにいくつかの機能ユニットに概念的に細分されることができる。商業的な制約の下で実際の実施操作にあたっては、これらのユニットの多くは互いに密接に相互作用し、少なくとも一部は互いに統合することができる。しかしながら、開示された主題の説明の目的で、以下の機能ユニットへの概念的な細分は、適切に行われる。
第1のユニットは、スケーラ/逆変換ユニット(351)である。スケーラ/逆変換ユニット(351)は、使用する変換、ブロックサイズ、量子化因子、量子化スケーリング行列などを含む制御情報と、量子化された変換係数をシンボル(321)としてパーサ(320)から受信する。スケーラ/逆変換ユニット(351)は、アグリゲータ(355)に入力可能なサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換(351)の出力サンプルは、イントラコード化されたブロック、すなわち、予め再構築されたピクチャからの予測情報を使用していないが、現在ピクチャの予め再構築された部分からの予測情報を使用できるブロックに関係することがある。このような予測情報は、イントラピクチャ予測ユニット(352)によって提供されることができる。場合によっては、イントラピクチャ予測ユニット(352)は、現在ピクチャバッファ(358)から取り出された周囲の既に再構築された情報を用いて、再構築中のブロックの同じサイズおよび形状のブロックを生成する。現在ピクチャバッファ(358)は、例えば、一部再構築された現在ピクチャおよび/または完全に再構築された現在ピクチャをバッファリングする。アグリゲータ(355)は、場合によっては、サンプルごとに、イントラ予測ユニット(352)が生成した予測情報を、スケーラ/逆変換ユニット(351)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(351)の出力サンプルは、インターコード化された、潜在的に動き補償されたブロックに関係することがある。このような場合、動き補償予測ユニット(353)は、参照ピクチャメモリ(357)にアクセスして、予測に使用されるサンプルを取り出すことができる。取り出されたサンプルをブロックに関係するシンボル(321)に従って動き補償した後、出力サンプル情報を生成するように、これらのサンプルは、アグリゲータ(355)によってスケーラ/逆変換ユニット(351)の出力に追加されることができる(この場合、残差サンプルまたは残差信号と呼ぶことができる)。動き補償予測ユニット(353)が予測サンプルを取り出す参照ピクチャメモリ(357)におけるアドレスは、例えば、X、Y、および参照ピクチャ成分を有し得るシンボル(321)の形態で動き補償予測ユニット(353)に利用可能な動きベクトルによって制御されることができる。動き補償は、サブサンプル正確な動きベクトルが使用中であるときに参照ピクチャメモリ(357)から取り出されたサンプル値の補間、動きベクトル予測メカニズムなどを含むこともできる。
アグリゲータ(355)の出力サンプルは、ループフィルタユニット(356)において様々なループフィルタリング技法を受けられる。ビデオ圧縮技術は、コード化されたビデオシーケンス(コード化されたビデオビットストリームとも呼ぶことができる)に含まれる、パーサ(320)からのシンボル(321)としてループフィルタユニット(356)に利用可能とされたパラメータによって制御されることができ、それに、コード化されたピクチャまたはコード化されたビデオシーケンスの(デコード順で)前の部分のデコード中に取得されたメタ情報に応じるとともに、予め再構築されループフィルタリングされたサンプル値に応じることもできるループ内フィルタ技術を含むことができる。
ループフィルタユニット(356)の出力は、レンダリングデバイス(312)へ出力されることができるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(357)に記憶されることができるサンプルストリームであり得る。
特定のコード化されたピクチャは、完全に再構築されると、将来の予測のために参照ピクチャとして使用されることができる。例えば、現在ピクチャに対応するコード化されたピクチャが完全に再構築され、該コード化されたピクチャが(例えば、パーサ(320)によって)参照ピクチャとして識別されると、現在ピクチャバッファ(358)は、参照ピクチャメモリ(357)の一部になることができ、次のコード化されたピクチャの再構築を開始する前に新しい現在ピクチャバッファを再割当てすることができる。
ビデオデコーダ(310)は、ITU-T推奨のH.265のような規格での所定のビデオ圧縮技術に従ってデコード操作を実行することができる。コード化されたビデオシーケンスが、ビデオ圧縮技術または規格のシンタックスと、ビデオ圧縮技術または規格で文書化されたプロファイルとの両方に準拠しているという意味で、コード化されたビデオシーケンスは、使用されているビデオ圧縮技術または規格によって指定されるシンタックスに準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格で使用可能なすべてのツールから、特定のツールをそのプロファイルで使用できるツールとして選択することができる。コード化されたビデオシーケンスの複雑さがビデオ圧縮技術または規格のレベルで定義される範囲内にあることも、コンプライアンスに必要である。場合によっては、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えば、1秒あたりのメガサンプルで測定される)、最大参照ピクチャサイズなどがレベルによって制限される。レベルによって設定された制限は、場合によっては、仮想参照デコーダ(HRD)仕様およびコード化されたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(331)は、エンコードされたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、コード化されたビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコードし、および/または、元のビデオデータをより正確に再構築するためにビデオデコーダ(310)によって使用され得る。追加のデータは、例えば、時間的、空間的、または信号対雑音比(SNR)エンハンスメントレイヤ、冗長スライス、冗長ピクチャ、前方向誤り訂正コードなどの形態にされることができる。
図4は、本開示の実施形態によるビデオエンコーダ(403)のブロック図を示す。ビデオエンコーダ(403)は、電子デバイス(420)に含まれる。電子デバイス(420)は、送信機(440)(例えば、送信回路)を含む。図2の例におけるビデオエンコーダ(203)の代わりにビデオエンコーダ(403)を使用することができる。
ビデオエンコーダ(403)は、ビデオエンコーダ(403)によってコード化されるビデオ画像をキャプチャし得るビデオソース(401)(図4の例では電子デバイス(420)の一部ではない)からビデオサンプルを受信することができる。別の例では、ビデオソース(401)は、電子デバイス(420)の一部である。
ビデオソース(401)は、ビデオエンコーダ(403)によってコード化されるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、・・・)、任意の色空間(例えば、BT.601 Y CrCB、RGB、・・・)および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で提供し得る。メディア供給システムでは、ビデオソース(401)は、予め準備されたビデオを記憶する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(401)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見られるときに動きが与えられる複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、画素の空間アレイとして編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに応じて1つ以上のサンプルを含むことができる。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明ではサンプルを中心に説明する。
一実施形態によれば、ビデオエンコーダ(403)は、リアルタイムでまたはアプリケーションが要求する任意の他の時間制約の下でソースビデオシーケンスのピクチャをコード化し、コード化されたビデオシーケンス(443)に圧縮することができる。適切なコーディング速度を実施することは、コントローラ(450)の機能の1つである。一部の実施形態では、コントローラ(450)は、以下で説明される他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。分かりやすくするために、カップリングは示されていない。コントローラ(450)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化技法のラムダ値、・・・)、ピクチャサイズ、ピクチャ群(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(450)は、特定のシステム設計に対して最適化されたビデオエンコーダ(403)に関する他の適切な機能を有するように構成されることができる。
一部の実施形態では、ビデオエンコーダ(403)は、コーディングループで動作するように構成される。過度に簡略化した説明として、一例では、コーディングループは、ソースコーダ(430)(例えば、コーディング対象となる入力ピクチャおよび参照ピクチャに基づくシンボルストリームなどのシンボルの作成を担当する)、およびビデオエンコーダ(403)に埋め込まれた(ローカル)デコーダ(433)を含むことができる。デコーダ(433)は、シンボルを再構築して、(リモート)デコーダが作成するのと同様な方法でサンプルデータを作成する(シンボルとコード化されたビデオビットストリーム間の如何なる圧縮は、開示された主題で考慮されるビデオ圧縮技術では可逆であるためである)。再構築されたサンプルストリーム(サンプルデータ)は参照ピクチャメモリ(434)に入力される。シンボルストリームのデコードにより、デコーダの位置(ローカルまたはリモート)に関係なくビット正確な結果が得られるため、参照ピクチャメモリ(434)のコンテンツもローカルエンコーダとリモートエンコーダの間でビット正確である。言い換えれば、エンコーダの予測部分は、参照ピクチャサンプルとして、デコード中に予測を使用するときにデコーダが「見る」のと全く同じサンプル値を「見る」。参照ピクチャの同期性の該基本原理(および例えばチャネルエラーに起因して同期性を維持できない場合に生じるドリフト)は、いくつかの関連分野にも使用されている。
「ローカル」デコーダ(433)の動作は、前文で図3に関連して既に詳細に説明された、ビデオデコーダ(310)などの「リモート」デコーダの動作と同様であり得る。しかしながら、図3も簡単に参照し、シンボルが使用可能であり、エントロピーコーダ(445)およびパーサ(320)によるコード化されたビデオシーケンスへのシンボルのエンコード/デコードは可逆であり得るので、バッファメモリ(315)、およびパーサ(320)を含むビデオデコーダ(310)のエントロピーデコード部分は、ローカルデコーダ(433)では完全に実施されない場合がある。
これで分かるように、デコーダに存在する、構文解析/エントロピーデコード以外の如何なるデコーダ技術も、対応するエンコーダに実質的に同一の機能的形態で必ず存在する必要がある。このため、開示された主題は、デコーダ操作に焦点を合わせている。エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるため、省略できる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
操作中、一部の例では、ソースコーダ(430)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つ以上の予めコード化されたピクチャを参照して入力ピクチャを予測的にコード化する動き補償予測コーディングを実行してもよい。このようにして、コーディングエンジン(432)は、入力ピクチャの画素ブロックと、入力ピクチャへの予測基準として選択され得る参照ピクチャの画素ブロックとの差異をコード化する。
ローカルビデオデコーダ(433)は、ソースコーダ(430)で作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコード化されたビデオデータをデコードすることができる。コーディングエンジン(432)の操作は、有利には非可逆プロセスであり得る。コード化されたビデオデータがビデオデコーダ(図4に示されていない)でデコードされ得るとき、再構築されたビデオシーケンスは、通常、いくつかのエラーを伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(433)は、ビデオデコーダによって参照ピクチャに対して実行され得るデコードプロセスを再現し、再構築された参照ピクチャを参照ピクチャキャッシュ(434)に記憶させることができる。このようにして、ビデオエンコーダ(403)は、遠端ビデオデコーダによって取得される再構築された参照ピクチャと共通するコンテンツ(送信エラー無し)を有する再構築された参照ピクチャのコピーをローカルに記憶し得る。
予測器(435)は、コーディングエンジン(432)の予測検索を実行することができる。つまり、コーディング対象となる新しいピクチャについて、予測器(435)は、(候補の参照画素ブロックとしての)サンプルデータ、または、参照ピクチャの動きベクトル、ブロック形状など、新しいピクチャの適切な予測基準として機能し得る特定のメタデータを参照ピクチャメモリ(434)に検索することができる。予測器(435)は、適切な予測基準を見つけるために、サンプルブロック/画素ブロックごとに操作することができる。場合によっては、予測器(435)で取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(434)に記憶された複数の参照ピクチャから引き出された予測基準を有してもよい。
コントローラ(450)は、例えば、ビデオデータをエンコードするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(430)のコーディング操作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(445)においてエントロピーコーディングを受けられる。エントロピーコーダ(445)は、例えば、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコード化されたビデオシーケンスに変換する。
送信機(440)は、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る通信チャネル(460)を介した送信の準備のために、エントロピーコーダ(445)によって作成されたコード化されたビデオシーケンスをバッファリングすることができる。送信機(440)は、ビデオコーダ(403)からのコード化されたビデオデータを、送信されるべき他のデータ、例えば、コード化されたオーディオデータおよび/または補助データストリーム(ソースは示されていない)とマージすることができる。
コントローラ(450)は、ビデオエンコーダ(403)の操作を管理し得る。コーディング中、コントローラ(450)は、各コード化されたピクチャに特定のコード化されたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技法に影響を及ぼし得る。例えば、ピクチャは、多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンスにおける他のいかなるピクチャを使用せずにコード化およびデコードされ得るものであり得る。一部のビデオコーデックは、例えば、インディペンデントデコーダリフレッシュ(Independent Decoder Refresh、「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャの変形およびそれらのそれぞれの用途および特徴を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大1つの動きベクトルおよび参照インデックスを使用したイントラ予測またはインター予測によりコード化およびデコードされ得るものであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大2つの動きベクトルおよび参照インデックスを使用したイントラ予測またはインター予測によりコード化およびデコードされ得るものであり得る。同様に、多重予測ピクチャは、単数のブロックの再構築のために2つを超えた参照ピクチャおよび関連メタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、それぞれ、4×4、8×8、4×8、または16×16サンプルのブロック)に空間的に細分され、ブロック単位でコード化され得る。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定された他の(既にコード化された)ブロックを参照して予測的にコード化され得る。例えば、Iピクチャのブロックは、非予測的にコード化されてもよく、或いは、同一のピクチャの既にコード化されたブロック(空間予測またはイントラ予測)を参照して予測的にコード化されてもよい。Pピクチャの画素ブロックは、1つの予めコード化された参照ピクチャを参照して、空間予測を介してまたは時間予測を介して予測的にコード化され得る。Bピクチャのブロックは、1つまたは2つの予めコード化された参照ピクチャを参照して、空間予測を介してまたは時間予測を介して予測的にコード化され得る。
ビデオエンコーダ(403)は、ITU-T推奨のH.265などの予め設定されたビデオコーディング技術または規格に従って、コーディング操作を実行することができる。操作中、ビデオエンコーダ(403)は、入力ビデオシーケンスの時間的および空間的冗長性を利用する予測コーディング操作を含む、様々な圧縮操作を実行することができる。したがって、コード化されたビデオデータは、使用されるビデオコーディング技術または規格によって指定されたシンタックスに準拠する場合がある。
一実施形態では、送信機(440)は、エンコードされたビデオとともに追加のデータを送信することができる。ソースコーダ(430)は、このようなデータをコード化されたビデオシーケンスの一部として含み得る。追加のデータは、時間的/空間的/SNRエンハンスメントレイヤ、冗長なピクチャやスライスなどの他の形態での冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(「イントラ予測」と略されることが多い)は、所定のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的または他の)相関を利用する。一例では、現在ピクチャと呼ぶことができるエンコード/デコード中の特定のピクチャは、ブロックに分割される。現在ピクチャにおけるブロックが、ビデオにおける予めコード化され、まだバッファリングされていた参照ピクチャの参照ブロックに類似している場合、現在ピクチャにおけるブロックは、動きベクトルと呼ぶことができるベクトルによってコード化されることができる。動きベクトルは、参照ピクチャの参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3次元を有することができる。
一部の実施形態では、インターピクチャ予測において双予測法を使用することができる。双予測法によれば、ビデオにおける現在ピクチャよりもデコード順序がそれぞれ前である(ただし、表示順序でそれぞれ過去および未来にあり得る)第1の参照ピクチャおよび第2の参照ピクチャのような2つの参照ピクチャを使用する。現在ピクチャにおけるブロックは、第1の参照ピクチャにおける第1の参照ブロックを指す第1の動きベクトル、および第2の参照ピクチャにおける第2の参照ブロックを指す第2の動きベクトルによってコード化されることができる。該ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測されることができる。
さらに、マージモード技法をインターピクチャ予測に適用して、コーディング効率を向上させることができる。
本開示の一部の実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、一連のビデオピクチャ内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャにおけるCTUは、64×64画素、32×32画素、または16×16画素など、同一のサイズを有する。一般に、CTUは、1つの輝度CTBと2つの彩度CTBである3つのコーディングツリーブロック(CTB)を含む。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割されることができる。例えば、64×64画素のCTUは、1つの64×64画素のCU、4つの32×32画素のCU、または16個の16×16画素のCUに分割されることができる。一例では、各CUを解析して、インター予測タイプまたはイントラ予測タイプなど、CUの予測タイプを決定する。CUは、時間的および/または空間的予測可能性に応じて、1つ以上の予測ユニット(PU)に分割される。通常、各PUは、1つの輝度予測ブロック(PB)と2つの彩度PBを含む。一実施形態では、コーディング(エンコード/デコード)における予測操作は、予測ブロックの単位で実行される。輝度予測ブロックを予測ブロックの例として用いて、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などの画素の値(例えば、輝度値)の行列を含む。
図5は、本開示の別の実施形態によるビデオエンコーダ(503)の図を示す。ビデオエンコーダ(503)は、一連のビデオピクチャ内の現在ビデオピクチャにおけるサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コード化されたビデオシーケンスの一部であるコード化されたピクチャにエンコードするように構成される。一例では、図2の例におけるビデオエンコーダ(203)の代わりにビデオエンコーダ(503)を使用する。
HEVCの例では、ビデオエンコーダ(503)は、8×8サンプルのような予測ブロックなどの処理ブロックのサンプル値の行列を受信する。ビデオエンコーダ(503)は、例えばレート歪み最適化を用いて、処理ブロックをイントラモード、インターモード、または双予測モードにより最も良くコード化するか否かを決定する。処理ブロックがイントラモードでコード化されようとする場合、ビデオエンコーダ(503)は、イントラ予測法を用いて処理ブロックをコード化されたピクチャにエンコードすることができる。また、処理ブロックがインターモードまたは双予測モードでコード化されようとする場合、ビデオエンコーダ(503)は、それぞれインター予測または双予測法を用いて、処理ブロックをコード化されたピクチャにエンコードすることができる。特定のビデオコーディング技術では、マージモードは、予測子外のコード化された動きベクトル成分の利便を介することなく、1つ以上の動きベクトル予測子から動きベクトルを導出するインターピクチャ予測サブモードであり得る。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在し得る。一例では、ビデオエンコーダ(503)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
図5の例では、ビデオエンコーダ(503)は、図5に示すように互いに結合されたインターエンコーダ(530)、イントラエンコーダ(522)、残差算出部(523)、スイッチ(526)、残差エンコーダ(524)、統括制御部(521)およびエントロピーエンコーダ(525)を含む。
インターエンコーダ(530)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、該ブロックを参照ピクチャにおける1つ以上の参照ブロック(例えば、前のピクチャおよび後のピクチャにおけるブロック)と比較し、インター予測情報(例えば、インターエンコード法による冗長情報の記述、動きベクトル、マージモード情報)を生成し、インター予測情報に基づいて任意の適切な技法を用いてインター予測結果(例えば、予測ブロック)を算出するように構成される。一部の例では、参照ピクチャは、エンコードされたビデオ情報に基づいてデコードされたデコード参照ピクチャである。
イントラエンコーダ(522)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては該ブロックを同一のピクチャで既にコード化されたブロックと比較し、量子化された変換後係数を生成し、場合によってはイントラ予測情報(例えば、1つ以上のイントラエンコード法によるイントラ予測方向情報)をも生成するように構成される。一例では、イントラエンコーダ(522)は、イントラ予測情報および同一のピクチャにおける参照ブロックに基づいてイントラ予測結果(例えば、予測ブロック)も算出する。
統括制御部(521)は、統括制御データを決定し、統括制御データに基づいてビデオエンコーダ(503)の他の構成要素を制御するように構成される。一例では、統括制御部(521)は、ブロックのモードを決定し、モードに基づいて制御信号をスイッチ(526)に提供する。例えば、モードがイントラモードである場合、統括制御部(521)は、残差算出部(523)が使用するためのイントラモード結果を選択するようにスイッチ(526)を制御するとともに、イントラ予測情報を選択してイントラ予測情報をビットストリームに含ませるようにエントロピーエンコーダ(525)を制御する。また、モードがインターモードである場合、統括制御部(521)は、残差算出部(523)が使用するためのインター予測結果を選択するようにスイッチ(526)を制御するとともに、インター予測情報を選択してインター予測情報をビットストリームに含ませるようにエントロピーエンコーダ(525)を制御する。
残差算出部(523)は、受信されたブロックとイントラエンコーダ(522)またはインターエンコーダ(530)から選択された予測結果との差(残差データ)を算出するように構成される。残差エンコーダ(524)は、残差データに基づいて動作し、残差データをエンコードして変換係数を生成するように構成される。一例では、残差エンコーダ(524)は、残差データを空間領域から周波数領域へと変換し、変換係数を生成するように構成される。その後、変換係数は量子化処理を受けて、量子化された変換係数が得られる。様々な実施形態では、ビデオエンコーダ(503)は、残差デコーダ(528)をも含む。残差デコーダ(528)は、逆変換を実行し、デコード残差データを生成するように構成される。デコード残差データは、イントラエンコーダ(522)およびインターエンコーダ(530)によって適切に使用されることができる。例えば、インターエンコーダ(530)は、デコード残差データよびインター予測情報に基づいて、デコードブロックを生成することができ、イントラエンコーダ(522)は、デコード残差データおよびイントラ予測情報に基づいて、デコードブロックを生成することができる。一部の例では、デコードブロックは、デコードピクチャを生成するように適切に処理され、デコードピクチャは、メモリ回路(図示せず)にバッファリングされ、参照ピクチャとして使用されることができる。
エントロピーエンコーダ(525)は、エンコードブロックを含めるようにビットストリームをフォーマットするように構成される。エントロピーエンコーダ(525)は、HEVC規格などの適切な規格に従って様々な情報をビットストリームに含ませるように構成される。一例では、エントロピーエンコーダ(525)は、統括制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、および他の適切な情報をビットストリームに含ませるように構成される。開示された主題によれば、インターモードまたは双予測モードのマージサブモードでブロックをコード化する場合、残差情報はないことに留意されたい。
図6は、本開示の別の実施形態によるビデオデコーダ(610)の図を示す。ビデオデコーダ(610)は、コード化されたビデオシーケンスの一部であるコード化されたピクチャを受信し、コード化されたピクチャをデコードして、再構築ピクチャを生成するように構成される。一例では、図2の例におけるビデオデコーダ(210)の代わりにビデオデコーダ(610)を使用する。
図6の例では、ビデオデコーダ(610)は、図6に示されるように互いに結合されたエントロピーデコーダ(671)、インターデコーダ(680)、残差デコーダ(673)、再構築モジュール(674)、およびイントラデコーダ(672)を含む。
エントロピーデコーダ(671)は、コード化されたピクチャから、コード化されたピクチャを構成するシンタックス要素を表す特定のシンボルを再構築するように構成されることができる。このようなシンボルは、例えば、ブロックがコード化されるモード(例えば、イントラモード、インターモード、双予測モード、後の2つのマージサブモードまたは別のサブモード)、それぞれイントラデコーダ(672)またはインターデコーダ(680)による予測に使用される特定のサンプルまたはメタデータを識別できる予測情報(例えば、イントラ予測情報またはインター予測情報)、例えば、量子化された変換係数の形態での残差情報などを含むことができる。一例では、予測モードがインターまたは双予測モードであれば、インター予測情報は、インターデコーダ(680)に提供される。また、予測タイプがイントラ予測タイプであれば、イントラ予測情報は、イントラデコーダ(672)に提供される。残差情報は、逆量子化を施されることができ、残差デコーダ(673)に提供される。
インターデコーダ(680)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(672)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(673)は、逆量子化を実行することで、逆量子化された変換係数を抽出し、逆量子化された変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(673)は、(量子化器パラメータ(QP)を含めるように)特定の制御情報をも必要とする場合があり、この情報は、エントロピーデコーダ(671)によって提供されてもよい(データパスは、低ボリューム制御情報のみであり得るため、示されていない)。
再構築モジュール(674)は、空間領域において、残差デコーダ(673)によって出力された残差と、(場合によってはインターまたはイントラ予測モジュールによって出力される)予測結果とを組み合わせて、再構築ビデオの一部となり得る再構築ピクチャの一部であり得る再構築ブロックを形成するように構成される。なお、視覚的品質を改善するために、デブロッキング操作などの他の適切な操作を実行することができる。
なお、ビデオエンコーダ(203)、(403)および(503)とビデオデコーダ(210)、(310)および(610)は、任意の適切な技法を用いて実施されることができる。一実施形態では、ビデオエンコーダ(203)、(403)および(503)とビデオデコーダ(210)、(310)および(610)は、1つ以上の集積回路を用いて実施されることができる。別の実施形態では、ビデオエンコーダ(203)、(403)および(503)とビデオデコーダ(210)、(310)および(610)は、ソフトウェア命令を実行する1つ以上のプロセッサを用いて実施されることができる。
本開示の態様は、二次変換インデックスまたはフラグをエントロピーコード化するためのコンテキストモデリング技術を提供する。具体的には、一部の実施形態では、二次インデックスのエントロピーコーディングのためのコンテキストモデリングとしてMPMインデックスまたはフラグを使用する方法が使用される。
本開示の一部の態様によれば、一次および二次変換は、残差信号のコーディングに使用することができる。一部の実施形態では、4点、8点、16点、および32点のタイプ2離散コサイン変換(DCT-2)変換を一次変換として使用することができる。図7~図10は、それぞれ4点、8点、16点、および32点のDCT-2の変換コア行列を示す。これらの変換コア行列の要素は、8ビット整数を使用して表すことができるため、これらの変換コア行列は8ビット変換コアと呼ぶことができる。図示されているように、小さいDCT-2の変換コア行列は、大きいDCT-2の変換コア行列の一部である。
DCT-2コア行列は、対称性/非対称性の特徴を示す。したがって、いわゆる「部分バタフライ」実装をサポートして、演算回数(乗算、加算/減算、シフト)を減らすことができる。行列乗算の同じ結果は、部分バタフライの実装を使用して取得することができる。
一部の実施形態では、上記の4点、8点、16点、および32点のDCT-2変換に加えて、追加の2点および64点のDCT-2が使用される。図11A~図11Eは、64点DCT-2変換の64x64変換コア行列を示す。
一部の実施形態では、DCT-2および4x4離散サイン変換タイプIIV(DCT-7)変換に加えて、適応型多重変換(AMT)(拡張多重変換(EMT)または多重変換選択(MTS)とも呼ぶことができる)は、インターおよびイントラコード化されたブロックの両方の残差コーディングに使用される。AMTは、DCT-2変換に加えて、DST-7またはDCT-8変換の変換コア行列などの、離散コサイン変換(DCT)/離散サイン変換(DST)ファミリから選択された多重変換を使用する。
図12は、選択されたDST/DCT変換の変換基底関数を示す。
一部の実施形態では、AMTで使用されるDST/DCT変換コア行列は、8ビット表現で表される。一部の実施形態では、AMTは、幅および高さの両方が32以下であるCUに適用される。AMTを適用するか否かは、mts_flagで示されるフラグで制御することができる。例えば、mts_flagが0である場合、残差ブロックのコーディングには、DCT-2のみが適用される。mts_flagが1である場合、mts_idxで示されるインデックスは、2つのビンを用いてシグナリングして、使用する水平および垂直変換を指定することができる。
図13は、mts_idx値と水平または垂直変換のそれぞれとの間のマッピング関係を示す表(1300)を示す。値が-1のmts_idxを有する行(1301)は、mts_flagが0であり、かつDCT-2変換が使用されるシナリオに対応する。値が0、1、2、または3のmts_idxを有する行(1302)~(1305)は、mts_flagが1であるシナリオに対応する。表(1300)の右側の2つの列では、0はDCT-2の変換タイプを表し、1はDST-7の変換タイプを表し、2はDCT-8の変換タイプを表す。
図14~図17は、DST-7変換の変換コア行列を示す。図18~図21は、DCT-8変換の変換コア行列を示す。
VVCなどの一部の例では、コード化されたブロックの高さと幅の両方が64以下である場合、変換サイズはコード化されたブロックのサイズと同じである。コード化されたブロックの高さまたは幅のいずれかが64よりも大きい場合、変換(例えば、逆変換、逆一次変換など)またはイントラ予測を行う場合、コード化されたブロックはさらに複数のサブブロックに分割されて、各サブブロックの幅および高さは64以下である。各サブブロックに1つの変換を行うことができる。
図22は、本開示の一部の実施形態に係る変換ユニットシンタックスの例を示す。一部の例(例えば、VVC)でのMTSの関連するシンタックスとセマンティクスは、(2210)に示すように記述することができる。
図23A~図23Cは、本開示の一部の実施形態に係る残差コーディングシンタックスの例を示す。一部の例(例えば、VVC)でのMTSの関連するシンタックスとセマンティクスは、(2310)に示すように記述することができる。
一部の例では、変換ユニットセマンティクスおよび残差コーディングセマンティクスは、MTS情報を指定することができる。一例では、cu_mts_flag[x0][y0]は、MTSが適用されるか否かを示すために使用される。例えば、cu_mts_flag[x0][y0]が1である場合、多重変換選択は、関連する輝度変換ブロックの残差サンプルに適用される。cu_mts_flag[x0][y0]が0である場合、多重変換選択は、関連する輝度変換ブロックの残差サンプルに適用されない。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考えられた変換ブロックの左上の輝度サンプルの位置(x0、y0)を指定する。一部の例では、cu_mts_flag[x0][y0]が存在しない場合、cu_mts_flag[x0][y0]の値は0と推定される。
別の例では、mts_idx[x0][y0]は、現在の変換ブロックの水平方向および垂直方向に沿って輝度残差サンプルにどの変換カーネルが適用されるかを指定するために使用される。配列インデックスx0、y0は、ピクチャの左上の輝度サンプルに対する、考えられた変換ブロックの左上の輝度サンプルの位置(x0、y0)を指定する。mts_idx[x0][y0]が存在しない場合、mts_idx[x0][y0]の値は-1と推定される。
図24Aは、エンコーダによって実行される例示的な順変換(順一次変換とも呼ぶことができる)を示す。一部の例では、順変換は、順水平変換と順垂直変換によって行うことができるため、順変換は分離可能であり、順水平変換と順垂直変換に分離される。一例では、まず、順水平変換を、残差データを有する残差ブロック(2410)に適用して、変換中間ブロックを取得する。続いて、順垂直変換を変換中間ブロックに適用して、変換係数を有する係数ブロック(2412)を取得する。
図24Bは、デコーダによって実行される例示的な後向き変換(逆一次変換または逆変換とも呼ぶことができる)を示す。一般的に、逆変換は順変換と一致する。逆一次変換は、逆一次水平変換(逆水平変換とも呼ぶことができる)および逆一次垂直変換(逆垂直変換とも呼ぶことができる)によって行うことができる。順変換を一致させるために、逆水平変換と逆垂直変換を適用する順序が逆変換において切り替える。したがって、まず逆垂直変換を係数ブロック(2422)に適用して、逆変換中間ブロックを取得する。続いて、逆水平変換を逆変換中間ブロックに適用して、残差ブロック(2420)を取得する。
一般に、一次変換の場合、エンコーダ側で、順一次変換が行われ、デコーダ側では、逆一次変換が行われる。一次変換が分離可能である場合、一例では、順一次変換を行うために、順水平変換と順垂直変換を行い、逆一次変換を行うために、逆垂直変換および逆水平変換を行う。
図25A~図25Eは、一部の例に係るスケーリングされた変換係数の変換プロセスの例を示す。
一部の実施形態では、二次変換は、一次変換に伴って行うことができる。二次変換は、垂直変換と水平変換とに分離できない非分離変換であり得る。一般に、水平変換と垂直変換として実行される分離変換を使用すると、水平方向と垂直方向の相関関係を捉えることができ、非分離変換を使用すると、対角線方向などの他の方向の相関関係をさらに捉えることができる。非分離変換には、分離変換よりも多くの演算が含まれる。
一実施形態では、非分離二次変換は、モード依存性であり得、モード依存性の非分離二次変換(NSST)と呼ぶことができる。一部の例では、NSSTは、エンコーダ側での順コア(一次)変換と量子化の間、およびデコーダ側での逆量子化と逆コア(一次)変換の間で行うことができる。例えば、複雑さを低く抑えるために、NSSTは一次変換(またはコア変換)の後に低周波数係数に適用される。変換係数ブロックの幅(W)と高さ(H)の両方が8以上である場合、8×8のNSSTは変換係数ブロックの左上の8×8領域に適用される。そうでない場合、変換係数ブロックの幅(W)と高さ(H)のいずれかが4である場合、4×4のNSSTは適用され、4×4のNSSTは変換係数ブロックの左上のmin(8、W)×min(8、H)領域に行われる。上記の変換選択方法は、一例では輝度成分と彩度成分の両方に適用される。
具体的には、一実施形態では、4×4の入力ブロックを例として用いて、NSSTの行列乗算の実装を以下のように説明する。4×4の入力ブロックXは、(式1)のように示される。
次に、入力ブロックXは、下記(式2)においてベクトル
として表すことができる。
一部の実施形態では、非分離変換は、
として計算され、ここで、
は、変換係数ベクトルを示し、Tは、16×16変換行列を示す。続いて、16×1変換係数ベクトル
は、入力ブロックXの走査順序(例えば、水平走査順序、垂直走査順序、または対角走査順序)を使用して4×4ブロックとして再編成される。小さいインデックスの係数は、小さい走査インデックスで4×4係数ブロックに配置することができる。一部の実施形態では、バタフライ実装を備えたハイパーキューブギブンズ変換(HyGT)を、NSSTの複雑さを低減するために、上記の行列乗算の代わりに使用することができる。
一部の実装例では、35×3の非分離二次変換が、4×4および8×8の両方のブロックサイズで使用可能であり、ここで、35はイントラ予測モードに関連付けられた変換セットの数であり、3は各イントラ予測モードのNSST候補の数である。
図26は、イントラ予測モードからそれぞれの変換セットへの例示的なマッピング2600を示す。輝度/彩度変換係数に適用される変換セットは、イントラ予測モードから変換セットインデックスへのマッピング2600に基づいて、対応する輝度/彩度イントラ予測モードによって指定される。対角予測方向に対応する34よりも大きいイントラ予測モードでは、変換係数ブロックは、それぞれエンコーダ/デコーダのNSSTの前/後に転置される。
変換セットごとに、選択されたNSST候補は、明示的にシグナリングされたCUレベルNSSTインデックスによってさらに指定することができる。CUレベルNSSTインデックスは、変換係数の後の各イントラコーディングCUのビットストリームでシグナリングされ、CUレベルNSSTインデックスに切り捨て単項二値化が使用される。例えば、切り捨てられた値は、平面モードまたはDCモード(平面モードとDCモードが非角度予測モードと呼ぶことができる)の場合に2であり、角度イントラ予測モードの場合に3である。一例では、CUレベルNSSTインデックスは、CUに非ゼロ係数が1つより多くある場合にのみシグナリングされる。デフォルト値は、ゼロでシグナリングされず、これは、CUにNSSTが適用されないことを示す。値1~3はそれぞれ、どのNSST候補を変換セットから適用するかを示す。
一部の実施形態では、NSSTは、変換スキップモードでコード化されたブロックに適用されない。CUレベルNSSTインデックスがCUのためにシグナリングされ、かつ0とならない場合に、NSSTは、該CUにおける変換スキップモードでコード化されたブロックに使用されない。CUの全ての成分のブロックが変換スキップモードでコード化される場合、または非変換スキップモードCBの非ゼロ係数の数が2より小さい場合、CUレベルNSSTインデックスは該CUのためにシグナリングされない。
図27は、HEVCで使用される例示的なイントラ予測方向およびイントラ予測モードを示す。HEVCには、合計35個のイントラ予測モード(モード0~モード34)が存在する。モード0およびモード1は無指向性モードであり、そのうちモード0は平面モードであり、モード1はDCモードである。モード2~モード34は指向性モードであり、そのうちモード10が水平モードであり、モード26が垂直モードであり、モード2、モード18、およびモード34が対角モードである。一部の例では、イントラ予測モードは、3つの最確モード(MPMS)および32個の残りのモードによってシグナリングされる。
図28は、一部の例(例えば、VVC)における例示的なイントラ予測方向およびイントラ予測モードを示す。合計95個のイントラ予測モード(モード-14~モード80)があり、そのうちモード18が水平モードであり、モード50が垂直モードであり、モード2、モード34、およびモード66が対角モードである。モード-1~-14およびモード67~80は、広角イントラ予測(WAIP)モードと呼ぶことができる。
本開示の一態様によれば、イントラモードをコード化するために、最確モード(MPM)リストは、イントラ予測モードのサブセットを含むように構築される。HEVCなどの一部の例では、MPMリストは、3つの最確モードを含み、現在ブロックの隣接ブロックのイントラ予測モードに基づいて構築される。このMPMリストは、一次MPMリストとも呼ぶことができる。この例では、MPMフラグは、現在ブロックのイントラ予測モードがMPMリストからのものであるか否かを示すためにシグナリングされる。MPMフラグが、現在ブロックのイントラ予測モードがMPMリストからのものであることを示す場合、MPMリストインデックスは、現在ブロックのMPMリストにおいて、3つの最確モードのうちの1つを示すようにシグナリングされる。しかし、MPMフラグが、現在ブロックのイントラ予測モードがMPMリストからのものではないことを示す場合、モードインデックスは、現在ブロックのMPMリストにない他のイントラモードの1つを示すようにシグナリングされる。
一部の例では、MPMリスト生成プロセスは以下のように示される。
If (leftIntraDir == aboveIntraDir && leftIntraDir > DC_IDX)
MPM [0] = leftIntraDir;
MPM [1] = ((leftIntraDir + offset) % mod) + 2;
MPM [2] = ((leftIntraDir - 1) % mod) + 2;
Else if (leftIntraDir == aboveIntraDir)
MPM [0] = PLANAR_IDX;
MPM [1] = DC_IDX;
MPM [2] = VER_IDX;
Else if (leftIntraDir != aboveIntraDir)
MPM [0] = leftIntraDir;
MPM [1] = aboveIntraDir;
If (leftIntraDir > 0 && aboveIntraDir > 0)
MPM [2] = PLANAR_IDX;
Else
MPM [2] = (leftIntraDir + aboveIntraDir) < 2 ?VER_IDX :DC_IDX;
MPMリスト生成プロセスにおいて、leftIntraDirは、現在ブロックの左の隣接ブロックのイントラ予測モードを示し、aboveIntraDirは、現在ブロックの上の隣接ブロックのイントラ予測モードを示す。左または上のブロックが使用可能ではない場合、leftIntraDirまたはaboveIntraDirは、DC_IDXに設定することができる。PLANAR_IDX、DC_IDX、およびVER_IDXは、それぞれ平面モード(例えば、モード0)、DCモード(例えば、モード1)、および垂直モード(例えば、モード26)のモードインデックスを示す。また、変数「offset」と「mod」は定数値であり、一例ではそれぞれ29と32に設定される。このような例では、左の隣接ブロックと上の隣接ブロックの両方が同じ指向性モードを有する場合、第1の最確モードは同じ指向性モードに設定される。第2および第3の最確モードは、第1の最確モードのモード番号に最も近い2つの指向性モードとして選択される。左の隣接ブロックと上の隣接ブロックの両方が同じ無指向性モードを有する場合、第1、第2および第3の最確モードはそれぞれ平面モード、DCモード、および垂直モードに設定される。左の隣接ブロックと上の隣接ブロックが異なるイントラ予測モードを有する場合、第1および第2の最確モードは、それぞれ左の隣接ブロックと上の隣接ブロックのイントラ予測モードに設定され、第3の最確モードは、平面モード、DCモード、または垂直モードのいずれかが、この順序で、最初の2つの最確モードのいずれと重複しないかによって、当該モードに設定される。
VTM3などの一部の例では、MPMリストのサイズは、隣接する参照ライン(参照ライン0とも呼ぶことができる)および隣接しない参照ライン(非ゼロ参照ラインとも呼ぶことができる)の両方において6に設定される。一例では、MPMリストは、隣接する参照ラインおよび隣接しない参照ラインから導出することができる。
図29は、現在コーディングユニットの隣接コーディングユニットの例を示す。図29に示すように、ブロックAは、現在コーディングユニットの左の隣接ユニットを示し、ブロックBは、現在コーディングユニットの上の隣接ユニットを示す。
一部の実施形態では、多重ラインのイントラ予測を適用して、イントラ予測のためにより多くの参照ラインを使用することができ、エンコーダは、イントラ予測子を生成するためにどの参照ラインを使用するかを決定し、シグナリングする。参照ラインインデックスは、イントラ予測モードの前にシグナリングされ、非ゼロの参照ラインインデックスがシグナリングされた場合、最確モードのみが許容される。
図30は、参照ライン0、参照ライン1、参照ライン2、および参照ライン3として示される4本の参照ラインなどの多重参照ラインの例を示す。各参照ラインは、左上の参照サンプル(4本の参照ラインに対してそれぞれS0、S1、S2、およびS3として示される)とともに、6つのセグメント、即ちセグメントA~Fで構成される。また、セグメントAとFには、それぞれセグメントBとEからの最も近いサンプルが埋め込まれる。
一部の実施形態では、6つのMPM候補を導出するために使用される隣接モードの位置もまた、図29に示されるように、隣接する参照ラインおよび隣接しない参照ラインについて同じである。図29では、ブロックAおよびブロックBは、現在コーディングユニットの上と左の隣接コーディングユニットを示す。変数candIntraPredModeAおよびcandIntraPredModeBは、それぞれブロックAおよびBに関連付けられたイントラ予測モードを示すために使用される。一例では、candIntraPredModeAおよびcandIntraPredModeBは、最初にINTRA_PLANARと等しく設定される。ブロックA(またはB)が使用可能としてマークされると、candIntraPredModeA(またはcandIntraPredModeB)は、ブロックA(またはB)の実際のイントラ予測モードと等しく設定される。
一部の実施形態では、MPM候補導出プロセスは、隣接する参照ラインと隣接しない参照ラインで異なる。ゼロ参照ライン(参照ライン0)について、2つの隣接モードが両方とも平面モードまたはDCモードである場合、デフォルトモードを使用してMPMリストを構築する。例えば、MPMリストの6つの候補モードのうちの2つは平面モードとDCモードであり、残りの4つのモードは角度モードである(角度デフォルトモードとも呼ぶことができる)。非ゼロ参照ラインについて、2つの隣接モードが両方とも平面モードまたはDCモードである場合、6つの角度デフォルトモードを使用してMPMリストを構築する。一例では、MPMリストの導出プロセスは以下のように示され、ここで、x=0..5のcandModeList[x]は、6つのMPM候補を示し、IntraLumaRefLineIdx[xCb][yCb]は、予測されるブロックの参照ラインインデックスを示し、IntraLumaRefLineIdx[xCb][yCb]は、0、1、または3にすることができる。
例えば、candIntraPredModeBがcandIntraPredModeAと等しく、かつcandIntraPredModeAがINTRA_DCよりも大きい場合、x=0..5のcandModeList[x]は、IntraLumaRefLineIdx[xCb][yCb]に基づいて導出される。IntraLumaRefLineIdx[xCb][yCb]が0である場合、候補リストは(式3)~(式8)に従って構築される。
candModeList[0]=candIntraPredModeA (式3)
candModeList[1]=INTRA_PLANAR (式4)
candModeList[2]=INTRA_DC (式5)
candModeList[3]=2+((candIntraPredModeA+61)%64) (式6)
candModeList[4]=2+((candIntraPredModeA-1)%64) (式7)
candModeList[5]=2+((candIntraPredModeA+60)%64) (式8)
そうでない場合、IntraLumaRefLineIdx[xCb][yCb]が0ではない場合、候補リストは(式9)~(式14)に従って構築される。
candModeList[0]=candIntraPredModeA (式9)
candModeList[1]=2+((candIntraPredModeA+61)%64) (式10)
candModeList[2]=2+((candIntraPredModeA-1)%64) (式11)
candModeList[3]=2+((candIntraPredModeA+60)%64) (式12)
candModeList[4]=2+(candIntraPredModeA%64) (式13)
candModeList[5]=2+((candIntraPredModeA+59)%64) (式14)
candIntraPredModeBがcandIntraPredModeAと等しくなく、かつcandIntraPredModeAまたはcandIntraPredModeBがINTRA_DCよりも大きい場合、2つの変数minABおよびmaxABは(式15)および(式16)に従って導出される。
minAB=candModeList[(candModeList[0]>candModeList[1])?1:0] (式15)
maxAB=candModeList[(candModeList[0]>candModeList[1])?0:1] (式16)
さらに、candIntraPredModeAおよびcandIntraPredModeBが両方ともINTRA_DCよりも大きい場合、x=0..1のcandModeList[x]は、(式17)~(式22)に従って導出することができる。
candModeList[0]=candIntraPredModeA (式17)
candModeList[1]=candIntraPredModeB (式18)
次に、IntraLumaRefLineIdx[xCb][yCb]に基づいて、他の4つの候補モードが設定される。例えば、IntraLumaRefLineIdx[xCb][yCb]が0である場合、2つの候補モードは(式19)と(式20)のように設定することができる。
candModeList[2]=INTRA_PLANAR (式19)
candModeList[3]=INTRA_DC (式20)
maxAB-minABが2~62の範囲にある場合、最後の2つの候補モードは、(式21)および(式22)のように設定することができる。
candModeList[4]=2+((maxAB+61)%64) (式21)
candModeList[5]=2+((maxAB-1)%64) (式22)
maxAB-minABが2~62の範囲外である場合、最後の2つの候補モードは、(式23)および(式24)のように設定することができる。
candModeList[4]=2+((maxAB+60)%64) (式23)
candModeList[5]=2+((maxAB)%64) (式24)
IntraLumaRefLineIdx[xCb][yCb]が0ではない場合、他の4つの候補モードは、maxABとminABの差に基づいて設定される。maxAB-minABが1である場合、4つの候補モードは(式25)~(式28)のように設定することができる。
candModeList[2]=2+((minAB+61)%64) (式25)
candModeList[3]=2+((maxAB-1)%64) (式26)
candModeList[4]=2+((minAB+60)%64) (式27)
candModeList[5]=2+(maxAB%64) (式28)
maxAB-minABが2である場合、4つの候補モードは、(式29)~(式32)のように設定することができる。
candModeList[2]=2+((minAB-1)%64) (式29)
candModeList[3]=2+((minAB+61)%64) (式30)
candModeList[4]=2+((maxAB-1)%64) (式31)
candModeList[5]=2+((minAB+60)%64) (式32)
maxAB-minABが61よりも大きい場合、4つの候補モードは、(式33)~(式36)のように設定することができる。
candModeList[2]=2+((minAB-1)%64) (式33)
candModeList[3]=2+((maxAB+61)%64) (式34)
candModeList[4]=2+(minAB%64) (式35)
candModeList[5]=2+((maxAB+60)%64) (式36)
maxAB-minABが2よりも大きく、かつ61よりも小さい場合、4つの候補モードは(式37)~(式40)のように設定することができる。
candModeList[2]=2+((minAB+61)%64) (式37)
candModeList[3]=2+((minAB-1)%64) (式38)
candModeList[4]=2+((maxAB+61)%64) (式39)
candModeList[5]=2+((maxAB-1)%64) (式40)
candIntraPredModeAおよびcandIntraPredModeBのうちの1つがINTRA_DCよりも大きい場合、x=0..5のcandModeList[x]はIntraLumaRefLineIdx[xCb][yCb]に基づいて導出することができる。例えば、IntraLumaRefLineIdx[xCb][yCb]が0である場合、6つの候補モードは(式41)~(式46)に従って導出することができる。
candModeList[0]=candIntraPredModeA (式41)
candModeList[1]=candIntraPredModeB (式42)
candModeList[2]=1-minAB (式43)
candModeList[3]=2+((maxAB+61)%64) (式44)
candModeList[4]=2+((maxAB-1)%64) (式45)
candModeList[5]=2+((maxAB+60)%64) (式46)
しかしながら、IntraLumaRefLineIdx[xCb][yCb]が0ではない場合、6つの候補モードは(式47)~(式52)に従って導出することができる。
candModeList[0]=maxAB (式47)
candModeList[1]=2+((maxAB+61)%64) (式48)
candModeList[2]=2+((maxAB-1)%64) (式49)
candModeList[3]=2+((maxAB+60)%64) (式50)
candModeList[4]=2+(maxAB%64) (式51)
candModeList[5]=2+((maxAB+59)%64) (式52)
そうでない場合、candIntraPredModeAとcandIntraPredModeBの両方がINTRA_DCよりも大きくない場合、x=0..5のcandModeList[x]は、IntraLumaRefLineIdx[xCb][yCb]に基づいて導出することができる。例えば、IntraLumaRefLineIdx[xCb][yCb]が0である場合、6つの候補モードは(式53)~(式58)に従って導出することができる。
candModeList[0]=candIntraPredModeA (式53)
candModeList[1]=(candModeList[0]==INTRA_PLANAR)?INTRA_DC:INTRA_PLANAR (式54)
candModeList[2]=INTRA_ANGULAR50 (式55)
candModeList[3]=INTRA_ANGULAR18 (式56)
candModeList[4]=INTRA_ANGULAR46 (式57)
candModeList[5]=INTRA_ANGULAR54 (式58)
しかしながら、IntraLumaRefLineIdx[xCb][yCb]が0ではない場合、6つの候補モードは(式59)~(式64)に従って導出することができる。
candModeList[0]=INTRA_ANGULAR50 (式59)
candModeList[1]=INTRA_ANGULAR18 (式60)
candModeList[2]=INTRA_ANGULAR2 (式61)
candModeList[3]=INTRA_ANGULAR34 (式62)
candModeList[4]=INTRA_ANGULAR66 (式63)
candModeList[5]=INTRA_ANGULAR26 (式64)
一部の実施形態では、イントラサブパーティション(ISP)コーディングモードが採用される。ISPコーディングモードでは、輝度イントラ予測ブロックは、垂直または水平に2つまたは4つのサブパーティションに分割することができる。サブパーティションの数は、ブロックのサイズに依存する。図31は、ブロックサイズに応じたサブパーティションの数を示す。図32は、ブロックが2つのサブパーティションに分割されるシナリオを示す。図33は、ブロックが4つのサブパーティションに分割されるシナリオを示す。一例では、全てのサブパーティションは、少なくとも16個のサンプルを有するという条件を満たす。一例では、ISPは彩度成分に適用されない。
一例では、コード化されたブロックから分割されたサブパーティションごとに、エンコーダから送信された各係数をエントロピーデコードして、それらを逆量子化および逆変換することによって、残差信号を生成する。そして、1つの第1のサブパーティションをイントラ予測して予測信号を生成する。予測信号を、対応する再構築されたサンプルを取得するために、第1のサブパーティションの各残差信号に追加する。その後、第1のサブパーティションの再構築されたサンプル値を使用して、1つの第2のサブパーティションの予測を生成することができる。このプロセスは、コード化されたブロックからの全てのサブパーティションが再構築されるまで、サブパーティションごとに繰り返すことができる。一例では、全てのサブパーティションが同じイントラモードを共有する。
一実施形態では、ISPコーディングモードは、最確モード(MPM)リストの一部であるイントラモードでのみテストされる。したがって、ブロックがISPを使用する場合、MPMフラグは1つであると推定することができる。また、ISPが特定のブロックに使用される場合、各MPMリストが変更されて、DCモードが除外され、ISPの水平分割の水平イントラモードと垂直分割の垂直イントラモードが優先される。
ISPコーディングモードでは、変換および再構築が各サブパーティションに個別に実行されるため、各サブパーティションはサブTUと見なすことができる。
なお、開示された技術は、NSSTおよび他の適切な非分離二次変換、例えば、非分離二次変換の代替設計である縮小二次変換(RST)に使用できる。RSTは、NSSTの変形例であり、変換ゼロアウト方式を使用する。RSTは、NSSTの変換インデックスをエントロピーコード化するために、イントラ予測モードが平面であるかまたはDCであるかをチェックする。
一例(例えば、JVET-N0193)では、4つの変換セットは適用され、各変換セットは、3つのRST変換コアを含み、これは、サイズ16×48(または16×64)(高さと幅の両方が8以上の変換係数ブロックに適用される)または16×16(高さまたは幅のいずれかが4である変換係数ブロックに適用される)のいずれかであってもよい。表記上の便宜のために、16x48(または16x64)変換はRST8x8として示され、16x16変換はRST4x4として示される。
図34は、本開示の実施形態に係る16x64変換コアを使用する例を示す。例えば、エンコーダ側では、変換係数ブロックの左上8x8領域である部分(3410)に16x64変換が適用され、その結果は16個の係数となる。したがって、デコーダ側では、左上の4x4領域の、16個の係数を含む部分(3420)に逆RSTが適用される。
図35は、本開示の実施形態に係る16x48変換コアを使用する例を示す。例えば、エンコーダ側では、変換係数ブロックの4x4ブロックのうちの3つを含む左上の灰色の領域である部分(3510)に16x48変換が適用され、その結果は16個の係数となる。したがって、デコーダ側では、左上の4x4領域の、16個の係数を含む部分(3520)に逆RSTが適用される。
一般に、縮小変換(RT)の主なアイデアは、N次元ベクトルを異なる空間内のR次元ベクトルにマッピングすることであり、ここで、R/N(R<N)は縮小係数である。
図36は、R×N行列であるRST行列を示す。RST行列は、N次元空間のR個のベースであるR行の変換を含む。RTの逆変換行列は、順変換の転置である。
例えば、縮小係数4(1/4サイズ)のRST8×8を適用することができる。従来の8x8の非分離変換行列サイズについて、64x64変換行列を適用する必要がある。縮小変換RST8x8について、16x64直接行列が使用される。言い換えると、64×16の逆RST行列は、デコーダ側で使用されて、8×8の左上の領域においてコア(一次)変換係数を生成する。順RST8x8は16×64(または8x8ブロックの場合に8x64)行列を使用するため、縮小変換では、所定の8×8領域における左上の4×4領域でのみ非ゼロ係数が生成される。言い換えると、RSTが適用される場合、左上の4×4領域を除く8×8領域はゼロ係数のみを有する。RST4x4について、16x16(または4x4ブロックの場合に8x16)の直接行列乗算が適用される。
RST8x8などの一部の実施形態では、変換行列のサイズをさらに小さくするために、左上の8x8係数全体を二次変換の計算するための入力として使用する代わりに、左上の3つの4x4係数を二次変換の計算するための入力として使用する。
図37Aは、16x16ブロック(例えば、一次変換後の係数ブロック)を示す。一例では、RST8x8は、16x64変換行列を使用して(対角ストライプでの)左上の8x8領域に適用することができる。
図37Bは、16x16ブロック(例えば、一次変換後の係数ブロック)を示す。一例では、RST8x8は、16x48変換行列を使用して、対角ストライプでの左上の領域に適用することができる。
一部の実施形態では、逆RSTは、ブロックサイズが所定の閾値(例えば、W>=4&&H>=4)以上であることを要求する第1の条件と、変換スキップモードフラグが0であることを要求する第2の条件など、特定の条件が満たされたときに、条件付きで適用される。
一部の例では、変換係数ブロックの幅(W)および高さ(H)の両方が4よりも大きい場合、RST8×8は、変換係数ブロックの左上の8×8領域に適用される。そうでない場合、RST4x4は、変換係数ブロックの左上のmin(8,W)×min(8,H)領域に適用される。
一部の実施形態では、RSTインデックスが使用される。RSTインデックスが0である場合、RSTは適用されない。RSTインデックスが0ではない場合、RSTが適用され、カーネルがRSTインデックスに基づいて選択される。
一部の実施形態では、RSTは、イントラスライスとインタースライスの両方のイントラCUに適用され、輝度および彩度の両方に適用される。一例では、デュアルツリーが有効である場合、輝度と彩度のRSTインデックスが別々にシグナリングされる。インタースライス(デュアルツリーが無効)の場合、単一のRSTインデックスが輝度と彩度の両方にシグナリングされて使用される。ISPモードが選択されると、RSTが無効になり、RSTインデックスがシグナリングされない。
一部の実施形態では、RST行列は4つの変換セットから選択され、各セットは2つの変換を含む。変換セットの選択は、イントラ予測モードに基づいて決定される。
3つのクロスコンポーネント線形モデル(CCLM)モードのうちの1つが示される場合、変換セット0が選択される。そうでない場合、変換セットの選択は表に従って行われる。
図38は、変換セットの選択に使用される表を示す。図38の例では、IntraPredModeの範囲は[-14,83]であり、広角イントラ予測に使用される。InPredModeに対応する変換モードインデックスは、広角イントラ予測に使用される変換モードインデックスである。
VVCドラフトv5で採用されたRST設計を例として使用すると、RSTは4x2 16x16変換行列(RST4x4)と4x2 16x48変換行列(RST8x8)を利用し、変換行列の各要素は8ビット整数を使用して表される。したがって、合計4x2x(256+768)=8Kバイトのメモリが変換行列の記憶に使用される。
他の規格では、様々な実装を実装することができる。例えば、JVET-O0292およびJVET-O0350では、2つの候補の代わりに、1つの候補のみを使用して各ブロックのためにグナリングすることができる。JVET-O0292およびJVET-O0350で使用されるように、1つの候補を使用する技術は、低周波非分離二次変換(LFNST)と呼ぶことができる。
図39は、LFSNTインデックス(表内のlfnstIdx)を決定するための表を示す。図39の例では、ビットストリームでシグナリングされるLFSNTインデックスはlfnstIdxとして示され、所定の変換セット内で選択されたLFNSTコアインデックスはcoreIdxとして示され、イントラ予測モードはintraModeとして示される。
JVET-O0292およびJVET-O0350で使用されるような一部の例では、1つのLFNST候補のみが残っているが、方式は現在のVVCドラフト6で定義される全てのLFNST候補の選択を引き続きサポートする。LFNST候補が1つだけ保持されるため、エンコーダにおけるLFNSTの選択負担が軽減される。
さらに、エンコーダがfnstIdx2をドロップしてエンコーダの高速化を実現する場合、第2のLFNST候補を選択できないため、コーディングロスが大きくなる。
本開示の一部の態様によれば、ハードウェア処理のボトルネックは、4x4イントラ予測である可能性がある。4x4のTUにLFNSTを追加することによって、ハードウェア処理を悪化させる。しかしながら、4x4のTUのLFNSTは、良好なコーディングゲインに寄与しない場合がある。
本開示の一部の態様によれば、NSSTは、主に指向性テクスチャパターンを有するビデオコンテンツに役立つ。平面またはDCなどの非角度イントラ予測モードについて、NSSTのコーディングゲインは比較的低い。したがって、本開示は、二次変換インデックスまたはフラグをエントロピーコード化するためのコンテキストモデリング技術を提供する。
提案された方法は、別々に用いられてもよく、任意の順序で組み合わせられてもよい。さらに、方法(または実施形態)、エンコーダおよびデコーダのそれぞれは、処理回路(例えば、1つ以上のプロセッサまたは1つ以上の集積回路)によって実施することができる。一例では、1つ以上のプロセッサは、非一時的なコンピュータ可読媒体に記憶されるプログラムを実行する。以下では、ブロックという用語は、予測ブロック、コード化されたブロック、またはコーディングユニット、即ちCUとして解釈されてもよい。
一部の例では、DST-7はMTS候補として使用され、DST-4は、DST-7の代わりに、MTS候補として使用することができる。一部の例では、DCT-8はMTS候補として使用され、DCT-4は、DCT-8の代わりに、MTS候補として使用することができる。
なお、開示された技術は、NSSTおよび他の適切な非分離二次変換、例えば、非分離二次変換の代替設計である(例えば、JVET-M0292またはJVET-N0193で説明されるような)縮小二次変換(RST)、または(例えば、VVCドラフトv6で採用される)低周波非分離二次変換(LFNST)に使用できる。
なお、本開示において、TBは、1つの色成分の変換係数ブロックを意味し、TUは、同じ座標およびサイズを有する複数のTBを含み得る。さらに、ブロックサイズ(例えば、CUサイズ、またはTUサイズ、またはPUサイズ、またはTBサイズ)が閾値以下である場合、ブロックサイズの制限は、1つまたは複数の解釈を意味することができる。当該解釈は、(1)ブロック幅とブロック高さの両方が閾値以下であること、(2)ブロック領域のサイズ(サンプル数)が閾値以下であること、(3)ブロック幅とブロック高さの間の最小値が閾値以下であること、(4)ブロック幅とブロック高さの間の最大値が閾値以下であること、(5)ブロック幅が閾値以下であること、(6)ブロック高さが閾値以下であること、(7)ブロックのアスペクト比(幅と高さ、または高さと幅)が閾値以下(または以上)であることを含む。
本開示の一部の態様によれば、NSSTインデックスまたはNSSTフラグをエントロピーコード化するためのコンテキスト導出または二値化は、コーディング効率を向上させるために、角度イントラ予測モードなどの、ブロックの指向性パターンの使用可能性を示すビットに基づいて行うことができる。したがって、デコーダ側では、一部の実施形態では、指向性パターンの使用可能性を示すビットがバイストリームから構文解析される場合、角度イントラ予測モードが完全にデコードされる前に、ビットを使用してNSSTインデックスまたはNSSTフラグをエントロピーコード化するためのコンテキストを提供することができる。
一部の実施形態では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するためのコンテキスト導出または二値化は、MPMフラグ、および/またはMPMインデックスに依存する。例えば、MPMフラグがtrueである場合、角度イントラ予測モードを使用する可能性は、MPMフラグがfalseである場合よりも低い。
一実施形態では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、MPMインデックスの第1のビンに基づいて導出される。一部の例では、切り捨て単項二値化は、MPMインデックスを二値化するために使用することができる。例えば、インデックス0(MPMリストの1番目)は、MPMインデックスの第1のビン(第1のバイナリ)を使用してエンコードすることができ、インデックス1(MPMリストの2番目)は、第1のビンと第2のビンを使用してコード化することができる。MPMリストを形成するための一部の技術は、DCおよび/または平面モードをMPMリストの1番目および/または2番目の位置に配置する傾向がある。したがって、MPMインデックスの第1のビンおよび/または第2のビンは、二次変換をコード化するためのコンテキストを提供することができる。したがって、一例では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、MPMインデックスの第1のビンおよび/または第2のビンに基づいて導出される。
本開示の別の態様によれば、NSSTインデックスおよび/またはNSSTフラグをエントロピーコード化するためのコンテキスト導出または二値化は、参照ラインインデックスに依存する。一部の例では、非ゼロ参照ラインは、角度イントラ予測モードを提供する傾向がある。したがって、参照ラインインデックスは、二次変換の情報をエントロピーコード化するためのコンテキストを提供することができる。
一例では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、参照ラインインデックスの第1のビンに基づいて導出される。
別の例では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、参照ラインインデックスの第2のビンに基づいて導出される。
別の例では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、参照ラインインデックスの第1のビンおよび/または第2のビンに基づいて導出される。
本開示の一態様によれば、NSSTインデックスおよび/またはNSSTフラグをエントロピーコード化するためのコンテキスト導出または二値化は、ISP分割インデックス(水平分割であるか、または垂直分割であるか、あるいは水平または垂直分割であるか)に依存する。したがって、ISP分割インデックスは、二次変換の情報をエントロピーコード化するためのコンテキストを提供することができる。
一例では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、ISP分割インデックスの第1のビンに基づいて導出される。
別の実施形態では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、ISP分割インデックスの第2のビンに基づいて導出される。
別の実施形態では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、ISP分割インデックスの第1のビンおよび/または第2のビンに基づいて導出される。
一部の実施形態では、イントラモードコーディングについて、角度モードが適用されるか否かを示すフラグ(intra_ang_flagとして示される)がシグナリングされる。角度モードが使用されない場合、平面またはDCが適用されるか否かを示す別のフラグ(intra_planar_flagとして示される)がシグナリングされる。次に、intra_ang_flagおよび/またはintra_planar_flagなどのフラグは、二次変換の情報をエントロピーコード化するためのコンテキストを提供することができる。したがって、NSSTインデックスまたはNSSTフラグをエントロピーコード化するためのコンテキスト導出または二値化は、フラグに依存することができる。
一例では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、intra_planar_flagのみに基づいて導出される。
別の実施形態では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、intra_ang_flagのみに基づいて導出される。
別の実施形態では、NSSTインデックスまたはNSSTフラグをエントロピーコード化するために使用されるコンテキストは、intra_ang_flagおよびintra_planar_flagの両方に基づいて導出される。
本開示の一部の態様によれば、LFNSTなどの二次変換は、特定の閾値よりも小さいTUサイズに対して無効にすることができる。
一部の実施形態では、LFNSTは、4×4のTUサイズに対して無効である。一実施形態では、LFNSTは、4×4の輝度TUに対して無効である。別の実施形態では、LFNSTは、4×4の彩度TUに対して無効である。別の実施形態では、LFNSTは、4×4の輝度TUおよび4×4の彩度TUの両方に対して無効である。
一部の実施形態では、LFNSTは、4×4、4×8、および8×4のTUサイズに対して無効である。一実施形態では、LFNSTは、4×4、4×8、および8×4の輝度TUに対して無効である。別の実施形態では、LFNSTは、4×4、4×8、および8×4の彩度TUに対して無効である。別の実施形態では、LFNSTは、4×4、4×8および8×4の輝度TUと4×4、4×8および8×4の彩度TUの両方に対して無効である。
一部の実施形態では、1つのLFNSTインデックスは、複数の色成分に使用されるためにシグナリングされる(例えば、1つのLFNSTインデックスは、Y、Cb、およびCrのためにシグナリングされる)。各色成分について、関連するTBサイズが所定の閾値以下である場合、このTBの関連する係数はLFNSTインデックスのシグナリングに影響を与えない。言い換えると、LFNSTインデックスのシグナリングは、サイズが所定の閾値以下であるいかなるTBの係数(例えば、DC係数が非ゼロであるか否か、最後の位置値)を考慮しない。
一部の実施形態では、1つのLFNSTインデックスは、複数の色成分に使用されるためにシグナリングされる(例えば、1つのLFNSTインデックスは、Y、Cb、およびCrのためにシグナリングされる)。各色成分について、関連するTBサイズが所定の閾値以下であり、これによってこのTBがLFNSTを適用できない場合、LFNSTインデックスのシグナリングは、サイズが所定の閾値以下であるこのTBの係数(例えば、DC係数が非ゼロであるか否か、最後の位置値)をまだ考慮する。一部の例では、閾値は4または8であってもよいことに留意されたい。
図40は、本開示の実施形態に係るプロセス(4000)の概要のフローチャートを示す。プロセス(4000)は、ブロックの再構築に用いて、再構築中のブロックの予測ブロックを生成することができる。様々な実施形態では、プロセス(4000)は、端末装置(110)、(120)、(130)および(140)の処理回路、ビデオエンコーダ(203)の機能を実行する処理回路、ビデオデコーダ(210)の機能を実行する処理回路、ビデオデコーダ(310)の機能を実行する処理回路、ビデオエンコーダ(403)の機能を実行する処理回路などの処理回路によって実行される。一部の実施形態では、プロセス(4000)はソフトウェア命令で実施され、したがって処理回路がソフトウェア命令を実行すると、処理回路はプロセス(4000)を実行する。プロセスは(S4001)から開始し、(S4010)に進む。
(S4010)では、ビットストリームを受信する。ビットストリームは、コード化されたピクチャにおけるブロックの残差に対応するビットを含む。例えば、エンコーダでは、元のブロックに対する予測ブロックの残差を計算し、変換を残差に適用して係数を生成する。係数がビットにエントロピーコード化されるため、ビットはブロックの残差に対応する。ビットは、エンコーダ側でビットストリームに含まれる。
(S4020)では、ビットストリームを構文解析して、ブロックの角度予測の使用可能性を示す少なくとも1つのビットを抽出する。一例では、ビットが「1」である場合、ブロックに角度予測を使用する確率が非角度予測を使用する確率よりも高くなり、また、ビットが「0」である場合、ブロックに角度予測を使用する確率が非角度予測を使用する確率よりも低くなる。一例では、MPMフラグ、またはMPMインデックスのビンを抽出する。別の例では、参照ラインインデックスを抽出する。別の例では、ISP分割インデックスを抽出する。別の例では、角度モードの適用を示すフラグを抽出する。別の例では、平面またはDCモードを適用するか否かを示すフラグを抽出する。
(S4030)では、ブロックの角度予測の使用可能性を示す少なくとも1つのビットに基づいて、二次変換の情報をコード化するためのコンテキストを決定する。一部の実施形態では、NSSTなどの二次変換を、角度イントラ予測モードなどの指向性テクスチャパターンを有するビデオコンテンツに適用する。NSSTフラグおよびNSSTインデックスなどのNSSTの情報に対するエントロピーコーディングの二値化は、ブロックの角度予測の使用可能性を示すビットから導出できるコンテキストモデルに基づくものである。
(S4040)では、コンテキストに基づいてデコードされた二次変換情報を使用して、ブロックの残差に対応するビットをデコードする。残差を決定することができる。例えば、二次変換情報は、コンテキストに基づいてデコードすることができ、二次逆変換は、二次変換情報に基づいて行うことができる。また、一次逆変換を行って、残差を計算することができる。ブロックを再構築するために、予測に残差を加算することができる。プロセスは、(S4099)に進み、終了する。
以上で説明された技法は、コンピュータ読取可能な命令を使用するコンピュータソフトウェアとして実行され、1つ以上のコンピュータ読取可能な媒体に物理的に記憶されることができる。例えば、図41は、開示された主題の特定の実施形態を実行することに適したコンピュータシステム(4100)を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、またはそのようなメカニズムを施されて、1つ以上のコンピュータ中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)などによって直接、または解釈、マイクロコード実行などによって実行されることができる命令を含むコードを作成する任意の適切な機械コードまたはコンピュータ言語を用いてコード化されることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータまたはそのコンポーネント上で実行されることができる。
コンピュータシステム(4100)について、図41に示される例示的なコンポーネントは、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関していかなる限定を示唆することも意図しない。コンポーネントの構成は、コンピュータシステム(4100)の例示的な実施形態で示されるコンポーネントのうちのいずれか1つまたは組み合わせに関する任意の依存性または必要性を有するとして解釈されるべきではない。
コンピュータシステム(4100)は、特定のヒューマンインターフェース入力デバイスを含み得る。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(音声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(描画せず)によって、1人以上のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、静止画像カメラから取得される写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、人間による意識的な入力に必ずしも直接関係しない特定のメディアをキャプチャすることにも使用できる。
入力ヒューマンインターフェースデバイスは、キーボード(4101)、マウス(4102)、トラックパッド(4103)、タッチスクリーン(4110)、データグローブ(図示せず)、ジョイスティック(4105)、マイクフォン(4106)、スキャナ(4107)、カメラ(4108)(それぞれ1つのみ示されている)のうちの1つ以上を含み得る。
コンピュータシステム(4100)は、特定のヒューマンインターフェース出力デバイスをも含み得る。このようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音声、光、および嗅覚/味覚を介して1人以上のユーザの感覚を刺激し得る。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(4110)、データグローブ(図示せず)、またはジョイスティック(4105)による触覚フィードバックがあるが、入力デバイスとして機能しない触覚フィードバックデバイスであってもよい)、オーディオ出力デバイス(スピーカ(4109)、ヘッドホン(描画せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(4110)(それぞれタッチスクリーン入力能力を有するかもしくは有せず、それぞれ触覚フィードバック能力を有するかもしくは有しない。それらの一部は、ステレオグラフィック出力などの手段を介して、2次元の視覚出力または3次元以上の出力を出力することができる)、仮想現実眼鏡(描画せず)、ホログラフィックディスプレおよびスモークタンク(描画せず)など)、およびプリンタ(描画せず)を含み得る。
コンピュータシステム(4100)は、人間がアクセス可能な記憶装置およびそれらの関連する媒体、例えば、CD/DVDなどの媒体(4121)付きのCD/DVD ROM/RW(4120)を含む光学媒体、サムドライブ(4122)、リムーバブルハードドライブまたはソリッドステートドライブ(4123)、テープやフロッピーディスクなどの従来の磁気媒体(描画せず)、セキュリティドングルなどの専用のROM/ASIC/PLDベースのデバイス(描画せず)などをも含むことができる。
ここで開示された主題に関連して使用される「コンピュータ読取可能な媒体」という用語は、送信媒体、搬送波、または他の一時的な信号を包含しないことをも当業者が理解するべきである。
コンピュータシステム(4100)は、1つ以上の通信ネットワークへのインターフェースをさらに含むことができる。ネットワークは、例えば、無線、有線、光学的であり得る。ネットワークは、さらに、ローカル、広域、大都市圏、車両用および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例は、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上放送TVを含むTV有線または無線広域デジタルネットワーク、CANBusを含む車両用や産業用などを含む。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(4149)(例えば、コンピューターシステム(4100)のUSBポートなど)に接続された外部ネットワークインターフェースアダプターを必要とする。他のものは一般に、以下で説明するようにシステムバスに接続することにより、コンピューターシステム(4100)のコアに統合される(例えば、PCコンピューターシステムへのイーサネットインターフェースまたはスマートフォンコンピューターシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを用いて、コンピュータシステム(4100)は、他のエンティティと通信することができる。このような通信は、単方向、受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向、例えばローカルまたはワイドエリアデジタルネットワークを用いる他のコンピュータシステムへの送信であり得る。特定のプロトコルおよびプロトコルスタックを上述したこれらのネットワークおよびネットワークインターフェースのそれぞれで使用することができる。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶装置、およびネットワークインターフェースは、コンピュータシステム(4100)のコア(4140)に接続されることができる。
コア(4140)は、1つ以上の中央処理装置(CPU)(4141)、グラフィックスプロセッシングユニット(GPU)(4142)、フィールドプログラマブルゲートエリア(FPGA)(4143)の形態での専用プログラマブル処理ユニット、特定のタスクのためのハードウェアアクセラレータ(4144)などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM)(4145)、ランダムアクセスメモリ(4146)、非ユーザアクセス可能な内部ハードドライブ、SSDなどの内部大容量記憶装置(4147)とともに、システムバス(4148)を介して接続されてもよい。一部のコンピュータシステムでは、システムバス(4148)は、1つ以上の物理プラグの形態でアクセスでき、追加のCPU、GPUなどによる拡張を可能にする。周辺機器は、コアのシステムバス(4148)に直接、または周辺バス(4149)を介して接続されることができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU(4141)、GPU(4142)、FPGA(4143)、およびアクセラレータ(4144)は、組み合わせて、前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(4145)またはRAM(4146)に記憶されることができる。推移データはRAM(4146)にも記憶できるが、永続データは、例えば、内部大容量ストレージ(4147)に記憶されることができる。1つ以上のCPU(4141)、GPU(4142)、大容量ストレージ(4147)、ROM(4145)、RAM(4146)などと密接に関連付けることができるキャッシュメモリを使用することにより、任意のメモリデバイスへの高速保存および検索が可能になる。
コンピュータ読取可能な媒体は、様々なコンピュータ実施操作を実行するためのコンピュータコードを備えることができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであり得るか、もしくは、それらは、コンピュータソフトウェア技術の当業者に周知であって利用可能な種類のものであり得る。
限定ではなく、一例として、アーキテクチャを有するコンピュータシステム(4100)、特にコア(4140)は、1つ以上の有形のコンピュータ読取可能な媒体に組み込まれたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果としての機能性を提供することができる。このようなコンピュータ読取可能な媒体は、以上で紹介したようにユーザがアクセス可能な大容量ストレージ、および、コア内部大容量ストレージ(4147)またはROM(4145)などの非一時的な性質を持つコア(4140)の特定のストレージに関連付けられた媒体であり得る。本開示の様々な実施形態を実行するソフトウェアは、このようなデバイスに記憶され、コア(4140)によって実行されることができる。コンピュータ読取可能な媒体は、特定の必要に応じて、1つ以上のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(4140)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(4146)に記憶されたデータ構造を定義すること、および、ソフトウェアで定義されたプロセスに従ってこのようなデータ構造を変更することを含む、ここで説明する特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または、代替として、コンピュータシステムは、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行するためにソフトウェアの代わりにまたは一緒に動作することができる回路(例えば、アクセラレータ(4144))に有線接続されたまたは組み込まれたロジックの結果としての機能性を提供することができる。ソフトウェアへの言及は、必要に応じて、ロジックを含むことができ、その逆も同様である。コンピュータ読取可能な媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、またはその両方を含むことができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを含む。
付録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(ビデオユーザビリティ情報)
GOP:Groups of Pictures(ピクチャ群)
TU:Transform Unit(変換ユニット)
PU:Prediction Unit(予測ユニット)
CTU:Coding Tree Unit(コーディングツリーユニット)
CTB:Coding Tree Block(コーディングツリーブロック)
PB:Prediction Block(予測ブロック)
HRD:Hypothetical Reference Decoder(仮想リファレンスデコーダ)
SNR:Signal Noise Ratio(信号対雑音比)
CPU:Central Processing Unit(中央処理装置)
GPU:Graphics Processing Unit(グラフィック処理装置)
CRT:Cathode Ray Tube(ブラウン管)
LCD:Liquid-Crystal Display(液晶表示装置)
OLED:Organic Light-Emitting Diode(有機発光ダイオード)
CD:Compact Disc(コンパクトディスク)
DVD:Digital Video Disc(デジタルビデオディスク)
ROM:Read-Only Memory(リードオンリメモリ)
RAM:Random Access Memory(ランダムアクセスメモリ)
ASIC:Application-Specific Integrated Circuit(特定用途向け集積回路)
PLD:Programmable Logic Device(プログラマブルロジックデバイス)
LAN:Local Area Network(ローカルエリアネットワーク)
GSM:Global System for Mobile communication(移動通信用グローバルシステム)
LTE:Long-Term Evolution(長期的な進化)
CANBus:Controller Area Network Bus(コントローラエリアネットワークバス)
USB:Universal Serial Bus(ユニバーサルシリアルバス)
PCI:Peripheral Component Interconnect(ペリフェラルコンポーネントインターコネクト)
FPGA:Field Programmable Gate Array(フィールド・プログラマブル・ゲート・アレイ)
SSD:solid-state drive(ソリッドステートドライブ)
IC:Integrated Circuit(集積回路)
CU:Coding Unit(コーディングユニット)
本開示は一部の例示的な実施形態を説明してきたが、本開示の範囲内に含まれる変更、置換、および様々な代替の均等物が存在する。したがって、当業者は、本明細書では明示的に示されていないか、または記載されていないが、本開示の原理を具現化し、その思想および範囲内に含まれる様々なシステムおよび方法を考案できることが理解されよう。