図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えば、ネットワーク(350)を介して互いに通信することができる複数の端末装置を含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1の一対の端末装置(310)および(320)を含む。図3の例では、第1の一対の端末装置(310)および(320)はデータの一方向送信を実行する。例えば、端末装置(310)は、ネットワーク(350)を介して他の端末装置(320)に送信するために、ビデオデータ(例えば、端末装置(310)によってキャプチャされたビデオ画像のストリーム)をコード化することができる。コード化されたビデオデータは、1つ以上のコード化されたビデオビットストリームの形式で送信することができる。端末装置(320)は、ネットワーク(350)からコード化されたビデオデータを受信し、コード化されたビデオデータをデコードしてビデオ画像を復元し、そして復元されたビデオデータに従ってビデオ画像を表示することができる。一方向データ送信は、メディアサービングアプリケーションなどにおいて一般的であり得る。
別の例では、通信システム(300)は、例えば、ビデオ会議中に発生する可能性のあるコード化されたビデオデータの双方向送信を実行する第2の一対の端末装置(330)および(340)を含む。データの双方向送信の場合、一例では、端末装置(330)および(340)の各端末装置は、ネットワーク(350)を介して端末装置(330)および(340)の他の端末装置に送信するために、ビデオデータ(例えば、端末装置によってキャプチャされたビデオ画像のストリーム)をコード化することができる。端末装置(330)および(340)の各端末装置はまた、端末装置(330)および(340)の他の端末装置によって送信されたコード化されたビデオデータを受信し、そしてコード化されたビデオデータをデコードしてビデオ画像を復元し、復元されたビデオデータに従ってアクセス可能なディスプレイ装置にビデオ画像を表示することができる。
図3の例では、端末装置(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示されてもよいが、本開示の原理は、そのように限定されない場合がある。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤー、および/または専用ビデオ会議装置に適用される。ネットワーク(350)は、端末装置(310)、(320)、(330)および(340)間でコード化されたビデオデータを伝達する任意の数のネットワークを表し、それは、例えば有線および/または無線通信ネットワークを含む。通信ネットワーク(350)は、回線交換チャネルおよび/またはパケット交換チャネルでデータを交換することができる。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、広域ネットワーク、および/またはインターネットが含まれる。本議論の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジーは、本明細書で以下に説明されない限り、本開示の動作とは無関係であり得る。
図4は、開示された主題に関する用途の一例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示された主題は、例えば、ビデオ会議、デジタルTVを含む他のビデオ対応アプリケーションに等しく適用することができ、CD、DVD、メモリスティックなどを含むデジタルメディアに圧縮されたビデオを格納する。
ストリーミングシステムは、キャプチャサブシステム(413)を含むことができ、このキャプチャサブシステムは、例えば、圧縮されていないビデオ画像(402)のストリームを作成する、例えばデジタルカメラなどのビデオソース(401)を含むことができる。一例では、ビデオ画像(402)のストリームは、デジタルカメラによって撮影されたサンプルを含む。コード化されたビデオデータ(404)(またはコード化されたビデオビットストリーム)と比較して高いデータ量を強調するために太線で示されているビデオ画像(402)のストリームは、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子装置(420)によって処理することができる。ビデオエンコーダ(403)は、以下により詳細に説明されるように、開示された主題の態様を可能にするか、または実装するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。ビデオ画像(402)のストリームと比較して低いデータ量を強調するために細線で示されているコード化されたビデオデータ(404)(またはコード化されたビデオビットストリーム(404))は、将来の使用のためにストリーミングサーバ(405)に格納することができる。図4のクライアントサブシステム(406)および(408)などの1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、コード化されたビデオデータ(404)のコピー(407)および(409)を検索することができる。クライアントサブシステム(406)は、例えば、電子装置(430)内にビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、コード化されたビデオデータの受信コピー(407)をデコードし、ディスプレイ(412)(例えば、ディスプレイ画面)または他のレンダリング装置(図示せず)上にレンダリングすることができるビデオ画像(411)の発信ストリームを作成する。一部のストリーミングシステムでは、コード化されたビデオデータ(404)、(407)および(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコードされることができる。これらの基準の例には、ITU‐T勧告H.265が含まれる。一例では、開発中のビデオコーディング基準は、非公式に多用途ビデオコーディング(VVC)として知られている。開示された主題は、VVCの場合で使用され得る。
電子装置(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子装置(420)は、ビデオデコーダ(図示せず)を含むことができ、電子装置(430)も、ビデオエンコーダ(図示せず)を含むことができる。
図5は、本開示の一実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子装置(530)に含まれてもよい。電子装置(530)は、受信機(531)(例えば、受信回路)を含むことができる。図4の例では、ビデオデコーダ(410)の代わりにビデオデコーダ(510)を使用することができる。
受信機(531)は、ビデオデコーダ(510)によってデコードされる1つ以上のコード化されたビデオシーケンスを受信することができ、同じまたは別の実施形態では、一度に1つのコード化されたビデオシーケンスを受信し、各コード化されたビデオシーケンスのデコーディングは他のコード化されたビデオシーケンスから独立している。コード化されたビデオシーケンスは、チャネル(501)から受信されてもよく、このチャネルは、コード化されたビデオデータを格納する記憶装置へのハードウェア/ソフトウェアリンクであってもよい。受信機(531)は、他のデータ、例えば、コード化されたオーディオデータおよび/または補助データストリームと共にコード化されたビデオデータを受信することができ、これらは、それぞれの使用エンティティ(図示せず)に転送され得る。受信機(531)は、コード化されたビデオシーケンスを他のデータから分離することができる。ネットワークジッタに対処するために、バッファメモリ(515)は、受信機(531)とエントロピーデコーダ/パーサ(520)(以降、「パーサ(520)」)との間に結合されてもよい。特定の用途では、バッファメモリ(515)はビデオデコーダ(510)の一部である。他の用途では、これはビデオデコーダ(510)(図示せず)の外部にあってもよい。さらに他の用途では、例えばネットワークジッタに対処するために、ビデオデコーダ(510)の外部にバッファメモリ(図示せず)があってもよく、さらに、例えばプレイアウトタイミングを処理するためにビデオデコーダ(510)の内部に別のバッファメモリ(515)があってもよい。受信機(531)が十分な帯域幅および可制御性を有するストア/フォワード装置から、または等同期ネットワークからデータを受信している場合、バッファメモリ(515)は必要ないか、または小さくてもよい。インターネットなどのベストエフォートパケットネットワークで使用するには、バッファメモリ(515)が必要とされる場合があり、それは比較的大きくてもよく、有利には適応サイズであり、また、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装されてもよい。
ビデオデコーダ(510)は、コード化されたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含んでもよい。これらのシンボルのカテゴリには、ビデオデコーダ(510)の動作を管理するために使用される情報と、図5に示されているように、電子装置(530)の不可欠な部分ではないが、電子装置(530)に結合することができるレンダリング装置(512)(例えば、ディスプレイ画面)などのレンダリング装置を制御するための潜在的な情報とが含まれる。レンダリング装置に対する制御情報は、付加拡張情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形式であってもよい。パーサ(520)は、受信されたコード化されたビデオシーケンスを解析/エントロピーデコードすることができる。コード化されたビデオシーケンスのコーディングは、ビデオコーディング技術または基準に従うことができ、可変長コーディング、ハフマンコーディング、コンテキスト感度を伴うまたは伴わない算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コード化されたビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つに対するサブグループパラメータのセットを抽出することができる。サブグループは、画像のグループ(GOP)、画像、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)はまた、コード化されたビデオシーケンス情報から、変換係数、量子化パラメータ値、動きベクトルなどを抽出することができる。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信したビデオシーケンスに対してエントロピーデコーディング/構文解析動作を実行することができる。
シンボル(521)の再構成には、コード化されたビデオ画像またはその一部のタイプ(インター画像およびイントラ画像、インターブロックおよびイントラブロックなど)、および他の要因に応じて、複数の異なるユニットが関与する可能性がある。どのユニットが関与し、どのようにして関与するかは、パーサ(520)によってコード化されたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のこのようなサブグループ制御情報の流れは、明確にするために図示されていない。
すでに述べた機能ブロックに加えて、ビデオデコーダ(510)は、以下に説明されるように、概念的にいくつかの機能ユニットに分割することができる。商業的制約の下で動作する実際の実装において、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的に、互いに一体化することができる。しかしながら、開示された主題を説明するために、以下の機能ユニットへの概念的な分割が適切である。
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数、ならびに使用する変換、ブロックサイズ、量子化係数、量子化スケーリングマトリックスなどを含む制御情報をシンボル(521)としてパーサ(520)から受信する。スケーラ/逆変換ユニット(551)は、サンプル値を含むブロックを出力することができ、これをアグリゲータ(555)に入力することができる。
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングブロック、すなわち、予て再構成された画像からの予測情報を使用しないが、カレント(現在)画像の予て再構成された部分からの予測情報を使用できるブロックに関連することができる。そのような予測情報は、イントラ画像予測ユニット(552)によって提供することができる。場合によっては、イントラ画像予測ユニット(552)は、カレント画像バッファ(558)からフェッチされた周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。カレント画像バッファ(558)は、例えば、部分的に再構成されたカレント画像および/または完全に再構成されたカレント画像をバッファリングする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供された出力サンプル情報に追加する。
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコード化され、潜在的に動き補償されたブロックに関連することができる。そのような場合、動き補償予測ユニット(553)は、参照画像メモリ(557)にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)に従ってフェッチしたサンプルを動き補償した後、アグリゲータ(555)によってこれらのサンプルをスケーラ/逆変換ユニット(551)の出力(この場合、残差サンプルまたは残差信号と呼ばれる)に追加して出力サンプル情報を生成することができる。動き補償予測ユニット(553)が予測サンプルをフェッチする参照画像メモリ(557)内のアドレスは、動きベクトルによって制御することができ、動きベクトルは、例えば、X、Y、および参照画像成分を有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能である。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照画像メモリ(557)からフェッチしたサンプル値の補間、動きベクトル予測メカニズムなどを含むことができる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技術を受けることができる。ビデオ圧縮技術は、コード化されたビデオシーケンス(コード化されたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能なループ内フィルタ技術を含むことができるが、コード化された画像またはコード化されたビデオシーケンスの以前の(デコーディング順序の)部分のデコーディング中に得られたメタ情報に応答することも、予て再構成され、ループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、サンプルストリームであってもよく、サンプルストリームは、将来のインター画像予測で使用するために、レンダリング装置(512)に出力できるだけでなく、参照画像メモリ(557)に格納することもできる。
特定のコード化された画像は、完全に再構成されると、将来の予測のための参照画像として使用することができる。例えば、カレント画像に対応するコード化された画像が完全に再構成され、コード化された画像が参照画像として識別されると(例えば、パーサ(520)によって)、カレント画像バッファ(558)は、参照画像メモリ(557)の一部となることができ、そして、次のコード化された画像の再構成を開始する前に、新しいカレント画像バッファを再割り当てすることができる。
ビデオデコーダ(510)は、ITU‐T Rec.H.265などの規格における所定のビデオ圧縮技術に従ってデコーディング動作を実行することができる。コード化されたビデオシーケンスは、コード化されたビデオシーケンスがビデオ圧縮技術または規格の構文とビデオ圧縮技術または規格で文書化されたプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術または規格によって指定された構文に準拠することができる。具体的には、プロファイルは、ビデオ圧縮技術または規格で利用可能なすべてのツールから、そのプロファイルで使用できる唯一のツールとして特定のツールを選択することができる。また、準拠のために必要なことは、コード化されたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内であることである。場合によっては、レベルによって、最大画像サイズ、最大フレームレート、最大再構成サンプルレート(例えば、1秒あたりのメガサンプル数で測定)、最大参照画像サイズなどが制限される。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)の仕様と、コード化されたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限されることがある。
一実施形態では、受信機(531)は、コード化されたビデオと共に追加の(冗長な)データを受信することができる。追加のデータは、コード化されたビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコードすることおよび/または元のビデオデータをより正確に再構成することのために、ビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的、または信号対雑音比(SNR)強化層、冗長スライス、冗長画像、順方向誤り訂正コードなどの形式であり得る。
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子装置(620)に含まれている。電子装置(620)は、送信機(640)(例えば、送信回路)を含む。図4の例では、ビデオエンコーダ(403)の代わりにビデオエンコーダ(603)を使用することができる。
ビデオエンコーダ(603)は、ビデオソース(601)(図6の例では電子装置(620)の一部ではない)からビデオサンプルを受信することができ、ビデオソースは、ビデオエンコーダ(603)によってコード化されるビデオ画像をキャプチャすることができる。別の例では、ビデオソース(601)は、電子装置(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によってコード化されるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット…)、任意の色空間(例えば、BT.601 Y CrCB、RGB、…)、および任意の適切なサンプリング構造(例えば、Y CrCB 4:2:0、Y CrCB 4:4:4)であり得るデジタルビデオサンプルストリームの形式で提供することができる。メディアサービングシステムでは、ビデオソース(601)は、事前に準備されたビデオを格納する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見たときに動きを与える複数の個別の画像として提供することができる。画像自体は、ピクセルの空間配列として編成することができ、各ピクセルは、使用中のサンプリング構造、色空間などに応じて、1つ以上のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下では、サンプルに焦点を当てて説明する。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、またはアプリケーションによって必要とされる他の任意の時間制約の下で、ソースビデオシーケンスの画像をコード化し、コード化されたビデオシーケンス(643)に圧縮することができる。適切なコーディング速度を適用することは、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下に記載されるように他の機能ユニットを制御し、また、他の機能ユニットに機能的に結合される。わかりやすくするために、結合は図示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(画像スキップ、量子化器、レート歪み最適化技術のラムダ値…)、画像サイズ、画像のグループ(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関連する他の適切な機能を有するように構成することができる。
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に単純化された説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コード化される入力画像および参照画像に基づいて、シンボルストリームなどのシンボルを作成する役割を果たす)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(リモート)デコーダが作成するのと同様の方法でシンボルを再構成してサンプルデータを作成する(シンボルとコード化されたビデオビットストリームとの間の圧縮は、開示された主題で考慮されているビデオ圧縮技術において可逆であるため)。再構成されたサンプルストリーム(サンプルデータ)は、参照画像メモリ(634)に入力される。シンボルストリームのデコーディングは、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクト結果をもたらすため、参照画像メモリ(634)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビット正確である。言い換えると、エンコーダの予測部分は、デコーディング中に予測を使用するときにデコーダが「見る」のとまったく同じサンプル値を参照画像サンプルとして「見る」。参照画像の同期性(および、例えばチャネルエラーのために同期性を維持できない場合に生じるドリフト)のこの基本原理は、一部の関連技術でも使用される。
「ローカル」デコーダ(633)の動作は、図5に関連して上記ですでに詳細に説明されたビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。しかし、また図5を簡単に参照すると、シンボルは利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコード化されたビデオシーケンスに対するシンボルのエンコーディング/デコーディングは可逆であり得るため、バッファメモリ(515)を含むビデオデコーダ(510)のエントロピーデコーディング部分、およびパーサ(520)は、ローカルデコーダ(633)に完全において実装されていない可能性がある。
この時点で行うことができる観察は、デコーダ内に存在する構文解析/エントロピーデコーディング以外のいかなるデコーダ技術も、対応するエンコーダ内に実質的に同一の機能形態で必ず存在する必要があるということである。このため、開示された主題はデコーダ動作に焦点を合わせている。エンコーダ技術の説明は、それらが包括的に説明されたデコーダ技術の逆であるため、省略することができる。特定の領域でのみ、より詳細な説明が必要とされ、以下に提供される。
動作中、いくつかの例では、ソースコーダ(630)は、動き補償予測コーディングを実行してもよく、これは、「参照画像」として指定されたビデオシーケンスからの1つ以上の予てコード化された画像を参照して、入力画像を予測的にコード化する。このようにして、コーディングエンジン(632)は、入力画像のピクセルブロックと、入力画像への予測参照として選択され得る参照画像のピクセルブロックとの間の差分をコード化する。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照画像として指定され得る画像のコード化されたビデオデータをデコードすることができる。コーディングエンジン(632)の動作は、有利には、非可逆プロセスであり得る。コード化されたビデオデータがビデオデコーダ(図6には示されていない)でデコードされ得る場合、再構成されたビデオシーケンスは、通常、いくつかのエラーを伴うソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、参照画像に対してビデオデコーダによって実行され得るデコーディングプロセスを複製し、再構成された参照画像を参照画像キャッシュ(634)に格納させることができる。このようにして、ビデオエンコーダ(603)は、遠端ビデオデコーダによって取得される再構成された参照画像と共通の内容を有する再構成された参照画像のコピーをローカルに格納することができる(送信エラーがない)。
予測器(635)は、コーディングエンジン(632)に対して予測検索を実行することができる。すなわち、コード化すべき新しい画像について、予測器(635)は、参照画像メモリ(634)から、サンプルデータ(候補参照ピクセルブロックとして)または参照画像動きベクトル、ブロック形状などの特定のメタデータを検索することができ、これらは、新しい画像の適切な予測参照として役立つ可能性がある。予測器(635)は、適切な予測参照を見つけるために、サンプルブロックごとにピクセルブロックベースで動作することができる。場合によっては、予測器(635)によって得られた検索結果によって決定されるように、入力画像は、参照画像メモリ(634)に格納された複数の参照画像から引き出された予測参照を有することがある。
コントローラ(650)は、例えば、ビデオデータをコーディングするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)においてエントロピーコーディングを受けることができる。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコード化されたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成されたコード化されたビデオシーケンスをバッファリングして、通信チャネル(660)を介した送信の準備をすることができ、通信チャネルは、コード化されたビデオデータを格納する記憶装置へのハードウェア/ソフトウェアリンクであってもよい。送信機(640)は、ビデオコーダ(603)からのコード化されたビデオデータを、送信される他のデータ、例えば、コード化されたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージすることができる。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理することができる。コーディング中に、コントローラ(650)は、各コード化された画像に特定のコード化された画像タイプを割り当てることができ、これは、それぞれの画像に適用され得るコーディング技術に影響を及ぼし得る。例えば、多くの場合、画像は以下の画像タイプのいずれかとして割り当てられる。
イントラ画像(I画像)は、シーケンス内の他の画像を予測のソースとして使用することなくコード化およびデコードされ得るものであり得る。一部のビデオコーデックでは、例えば独立デコーダリフレッシュ(「IDR」)画像を含む様々なタイプのイントラ画像を使用できる。当業者は、I画像のそれらの変形例およびそれらのそれぞれの用途および特徴を知っている。
予測画像(P画像)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコード化およびデコードされ得るものであり得る。
双方向予測画像(B画像)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコード化およびデコードされ得るものであり得る。同様に、多重予測画像は、単一のブロックの再構成のために3つ以上の参照画像および関連するメタデータを使用することができる。
ソース画像は、通常、複数のサンプルブロック(例えば、それぞれ4×4、8×8、4×8、または16×16サンプルのブロック)に空間的に再分割され、ブロックごとにコード化され得る。ブロックは、ブロックのそれぞれの画像に適用されるコード化割り当てによって決定された他の(すでにコード化された)ブロックを参照して予測的にコード化することができる。例えば、I画像のブロックは、非予測的にコード化されてもよく、またはそれらは、同じ画像のすでにコード化されたブロックを参照して予測的にコード化され得る(空間的予測またはイントラ予測)。P画像のピクセルブロックは、1つの予てコード化された参照画像を参照して、空間的予測または時間的予測を介して予測的にコード化され得る。B画像のブロックは、1つまたは2つの予てコード化された参照画像を参照して、空間的予測または時間的予測を介して予測的にコード化され得る。
ビデオエンコーダ(603)は、ITU‐T Rec.H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を実行することができる。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実行することができる。したがって、コード化されたビデオデータは、使用されているビデオコード化技術または規格によって指定された構文に準拠している可能性がある。
一実施形態では、送信機(640)は、コード化されたビデオと共に追加のデータを送信することができる。ソースコーダ(630)は、そのようなデータをコード化されたビデオシーケンスの一部として含むことができる。追加のデータは、時間的/空間的/SNR強化層、冗長画像およびスライスなどの他の形式の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含むことができる。
ビデオは、時間的順序で複数のソース画像(ビデオ画像)としてキャプチャされてもよい。イントラ画像予測(多くの場合、イントラ予測と略される)は、所与の画像の空間的相関を利用し、インター画像予測は、画像間の(時間的またはその他の)相関を利用する。一例では、カレント画像と呼ばれる、エンコーディング/デコーディング中の特定の画像がブロックに分割される。カレント画像内のブロックが、ビデオ内の予てコード化され、まだバッファリングされている参照画像内の参照ブロックと類似している場合、カレント画像内のブロックは、動きベクトルと呼ばれるベクトルによってコード化することができる。動きベクトルは、参照画像内の参照ブロックを指し、複数の参照画像が使用されている場合、参照画像を識別する第3の次元を有することができる。
いくつかの実施形態では、インター画像予測において双方向予測技術を使用することができる。双方向予測技術によれば、ビデオ内のカレント画像よりもデコーディング順が両方とも前である(ただし、表示順がそれぞれ過去と将来であり得る)2つの参照画像、例えば第1の参照画像および第2の参照画像が使用される。カレント画像内のブロックは、第1の参照画像内の第1の参照ブロックを指す第1の動きベクトルと、第2の参照画像内の第2の参照ブロックを指す第2の動きベクトルとによってコード化することができる。ブロックは、第1の参照ブロックと第2の参照ブロックの組み合わせによって予測することができる。
さらに、インター画像予測において、マージモード技術を使用してコーディング効率を向上させることができる。
本開示のいくつかの実施形態によれば、インター画像予測およびイントラ画像予測などの予測は、ブロックの単位で実行される。例えば、HEVC規格によれば、一連のビデオ画像内の画像は圧縮のためにコーディングツリーユニット(CTU)に分割され、画像内のCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは、3つのコーディングツリーブロック(CTB)を含み、それらは1つの輝度CTBと2つの彩度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は、輝度予測ブロック(PB)と2つの彩度PBを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測動作は、予測ブロックの単位で実行される。予測ブロックの例として輝度予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなどのピクセルの値(例えば、輝度値)のマトリックスを含む。
図7は、本開示の別の実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、一連のビデオ画像における現在のビデオ画像内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを、コード化されたビデオシーケンスの一部であるコード化された画像にエンコードするように構成される。一例では、図4の例のビデオエンコーダ(403)の代わりにビデオエンコーダ(703)が使用される。
HEVCの例では、ビデオエンコーダ(703)は、8x8サンプルの予測ブロックなどの処理ブロックのサンプル値のマトリックスを受信する。ビデオエンコーダ(703)は、処理ブロックが、イントラモード、インターモード、または、例えばレート歪み最適化を使用する双方向予測モードを用いて最適にコード化されているか否かを判定する。処理ブロックがイントラモードでコード化される場合、ビデオエンコーダ(703)は、イントラ予測技術を使用して、処理ブロックをコード化された画像にエンコードすることができ、そして、処理ブロックがインターモードまたは双方向予測モードでコード化される場合、ビデオエンコーダ(703)は、インター予測または双方向予測モードをそれぞれ使用して、処理ブロックをコード化された画像にエンコードすることができる。特定のビデオコーディング技術では、マージモードは、インター画像予測サブモードであってもよく、ここで、動きベクトルは、予測子の外部のコード化された動きベクトル成分の利益なしに、1つ以上の動きベクトル予測子から導出される。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在する場合がある。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示されているように、互いに結合されインターエンコーダ(730)、イントラエンコーダ(722)、残差計算機(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、カレントブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを、参照画像内の1つ以上の参照ブロック(例えば、前の画像および後の画像のブロック)と比較し、インター予測情報(例えば、インターコーディング技術による冗長情報の記述、動きベクトル、マージモード情報)を生成し、そして任意の適切な技術を使用してインター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照画像は、コード化されたビデオ情報に基づいてデコードされるデコードされた参照画像である。
イントラエンコーダ(722)は、カレントブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては、そのブロックを同じ画像内ですでにコード化されたブロックと比較し、変換後に量子化係数を生成し、場合によっては、イントラ予測情報(例えば、1つ以上のイントラコーディング技術によるイントラ予測方向情報)も生成するように構成される。一例では、イントラエンコーダ(722)はまた、イントラ予測情報および同じ画像内の参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算する。
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、汎用コントローラ(721)は、ブロックのモードを決定し、そのモードに基づいてスイッチ(726)に制御信号を提供する。例えば、モードがイントラモードである場合、汎用コントローラ(721)は、スイッチ(726)を制御して残差計算機(723)で使用するためのイントラモード結果を選択させ、そして、エントロピーエンコーダ(725)を制御して、イントラ予測情報を選択してイントラ予測情報をビットストリームに含めるようにし、また、モードがインターモードである場合、汎用コントローラ(721)は、スイッチ(726)を制御して残差計算機(723)で使用するためのインター予測結果を選択させ、そして、エントロピーエンコーダ(725)を制御して、インター予測情報を選択してインター予測情報をビットストリームに含めるようにする。
残差計算機(723)は、受信ブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択した予測結果との間の差分(残差データ)を計算するように構成される。残差エンコーダ(724)は、残差データに基づいて動作し、残差データをエンコードして変換係数を生成するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。次に、変換係数は量子化処理され、量子化された変換係数が得られる。様々な実施形態において、ビデオエンコーダ(703)はまた、残差デコーダ(728)を含む。残差デコーダ(728)は、逆変換を実行し、デコードされた残差データを生成するように構成される。デコードされた残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用することができる。例えば、インターエンコーダ(730)は、デコードされた残差データおよびインター予測情報に基づいてデコードされたブロックを生成することができ、イントラエンコーダ(722)は、デコードされた残差データおよびイントラ予測情報に基づいてデコードされたブロックを生成することができる。デコードされたブロックは、デコードされた画像を生成するために適切に処理され、デコードされた画像は、メモリ回路(図示せず)内にバッファリングされ、いくつかの例では参照画像として使用され得る。
エントロピーエンコーダ(725)は、エンコードされたブロックを含むようにビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従って様々な情報を含むように構成される。一例では、エントロピーエンコーダ(725)は、汎用制御データ、選択した予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、およびビットストリーム内の他の適切な情報を含むように構成される。開示された主題によれば、インターモードまたは双方向予測モードのいずれかのマージサブモードでブロックをコーディングする場合、残差情報がないことに留意されたい。
図8は、本開示の別の実施形態によるビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コード化されたビデオシーケンスの一部であるコード化された画像を受信し、コード化された画像をデコードして再構成された画像を生成するように構成される。一例では、図4の例のビデオデコーダ(410)の代わりにビデオデコーダ(810)が使用される。
図8の例では、ビデオデコーダ(810)は、図8に示されているように、互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コード化された画像から、コード化された画像を構成する構文要素を表す特定のシンボルを再構成するように構成することができる。そのようなシンボルは、例えば、ブロックがコード化されるモード(例えば、イントラモード、インターモード、双方向予測モード、マージサブモードまたは別のサブモードにおける後者の2つなど)、イントラデコーダ(872)またはインターデコーダ(880)による予測にそれぞれ使用される特定のサンプルまたはメタデータを識別することができる予測情報(例えば、イントラ予測情報またはインター予測情報など)、例えば量子化された変換係数の形式の残差情報などを含むことができる。一例では、予測モードがインター予測モードまたは双方向予測モードである場合、インター予測情報は、インターデコーダ(880)に提供され、予測タイプがイントラ予測タイプである場合、イントラ予測情報は、イントラデコーダ(872)に提供される。残差情報は逆量子化を受けることができ、そして残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を実行して非量子化された変換係数を抽出し、そして非量子化された変換係数を処理して残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)はまた、(量子化パラメータ(QP)を含むために)特定の制御情報を必要とする場合があり、その情報は、エントロピーデコーダ(871)によって提供され得る(これは、少量の制御情報のみである可能性があるため、データパスは示されていない)。
再構成モジュール(874)は、空間領域において、残差デコーダによって出力された残差と、予測結果(場合によっては、インターまたはイントラ予測モジュールによって出力されたもの)とを組み合わせて再構成されたブロックを形成するように構成され、再構成されたブロックは、再構成された画像の一部である可能性があり、再構成された画像は次に、再構成されたビデオの一部である可能性がある。視覚的品質を改善するために、デブロッキング動作などの他の適切な動作を実行することができることに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技術を使用して実装できることに留意されたい。一実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つ以上の集積回路を使用して実装することができる。別の実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実装することができる。
様々な実施形態において、スクリーンコンテンツの特定の特性のために、HEVCのスクリーンコーディング拡張用のSCCなどのスクリーンコンテンツコーディング(SCC)ツールを開発することができる。SCCツールは、コーディング効率を大幅に向上することができる。SCCツールの1つは、パレットコーディングモード(またはパレットモード、パレットモードコーディング方法、パレットコード化プロセス)と呼ばれ、ここでピクセル(またはサンプル)のブロックは、パレットへのインデックス(例えば、主要カラーを含む)を使用して表すことができる。パレットとインデックスは、空間的冗長性を利用してエンコードすることができる。いくつかの例では、パレットコーディングモードは、パレットのコーディング方法およびパレットを使用するサンプルのコーディング方法などの2つの部分を含むことができる。パレットを使用するサンプルのコーディング方法は、パレットインデックスコーディング、ランレングスコーディング、エスケープピクセルコーディングなどを含むことができる。以下は、パレットコーディングモードのいくつかの例である。
主要カラーは次のように選択できる。シンプルで効率的なヒストグラムベースのアルゴリズムを使用して、ブロック内のピクセルまたはサンプルを分類することができる。例えば、ヒストグラムにおける最も重要なLピーク値を主要カラーとして選択し、主要カラーの1つに近いピクセル値を主要カラーの1つに量子化することができる。一例では、主要カラー(または主要カラーセット)に属さない他のピクセルは、エスケープピクセルと呼ぶことができる。エスケープピクセルは、コード化前に量子化することができる。一例では、量子化プロセスは、可逆コーディングプロセスには使用されない。ブロック内の各ピクセルに対して、カラーインデックス(便宜上、インデックスとも呼ばれる)を割り当てて、そのピクセルがどの主要カラーセットに属するかを示すことができる。L個の主要カラーが使用される場合、L個の主要カラーの値(例えば、0~L-1)を、L個の主要カラー(またはL個の主要カラーセット)に対してシグナリングすることができ、主要カラーの値Nを、例えば、エスケープピクセルを含むエスケープピクセルセットに対してシグナリングすることができる。Nは、L個の主要カラーの値(例えば、0~L-1)とは異なる場合がある。一例では、Nは(L-1)よりも大きい。パレットは通常、カラールックアップテーブルとして実装することができ、そこで各カラーエントリをカラーインデックスに関連付けることができる。単一のパレットを使用して、輝度成分と彩度成分の両方をコード化することができる。各エントリは、特定のRGBカラー、YUVカラーなどを表すことができる。例えば、(R、G、B)=(0、0、0)のエントリ1は純粋な黒色を表し、(R、G、B)=(2、10、200)のエントリ0は青みがかった色を表す。ビデオフォーマットが420である場合、彩度プレーンをアップサンプリングしてカラーパレットを生成することができる。
パレットモードコーディングでは、パレットベースコーディングは、CU単位で実行することができる。
パレットエントリは、以下のようにエンコードすることができる。パレット予測子リストを参照として使用して現在のパレットをコード化するには、バイナリベクトルを使用して、パレット予測子リスト内の各エントリを現在のパレットで再利用できるか否かを示すことができる。1つ以上の再利用されたエントリは、パレット予測子リスト内の1つ以上の再利用されたエントリの順序を維持しながら、現在のパレットの先頭に配置できる。パレット予測子リストにない1つ以上の新しいパレットエントリは、1つ以上の再利用されたエントリの後に続くことができる。一例では、事前定義されたエントリを有するパレット初期化子をオプションで使用して、パレット予測子リストを初期化することができ、その結果、そのようなシナリオでのコーディング効率が向上する。パレット初期化子は、画像パラメータセット(PPS)、シーケンスパラメータセット(SPS)などでシグナリングすることができる。
カラーインデックスは、以下のようにエンコードすることができる。分類後、ブロックのピクセルは、選択した主要カラーセットに従ってカラーインデックスに変換することができる。予測コーディング方法をカラーインデックスに適用することができ、ここで、ピクセルラインは、水平モード(例えば、コピーインデックスモード)、垂直モード(例えば、コピーアバブモード)、および通常モード(例えば、エスケープモード)を含む複数の異なるモード(例えば、3つの異なるモード)によって予測することができる。いくつかの例では、カラーインデックスをコーディングするときに、2つのインデックススキャン順序(例えば、水平トラバーススキャンおよび垂直トラバーススキャン)が使用される。2つのインデックススキャン順序のうちのどちらが使用されているかを示すために、インデックス回転フラグをシグナリングすることができる。
コピーインデックスモードでは、第1のピクセルから開始して、1つ以上の連続するインデックスを第1のピクセルからコピーすることができる。第1のピクセルのカラーインデックスをシグナリングすることができる。
コピーアバブモードでは、1つ以上の連続するカラーインデックスを、上記のピクセルライン、例えば、現在のピクセルラインより上にあるピクセルラインからコピーすることができる。
エスケープモードでは、例えば、主要カラーセット内の最大インデックス(例えば、N)によってシグナリングされたエスケープピクセルに遭遇した場合、対応するピクセル値を最大インデックス(例えば、N)の後にコード化することができる。CUには、異なるカラー値を有する複数のエスケープピクセルが存在する場合がある。エスケープピクセルの位置が異なると、エスケープピクセルのピクセル値が異なる場合がある。
各コピーインデックスモードでは、インデックスをシグナリングすることができる。インデックスシグナリングは、例えば、コンテキスト適応型バイナリ算術コーディング(CABAC)スループットを向上させるために、前部(または先頭)でグループ化することができる。同様に、エスケープピクセルのピクセル値は、例えばCABACスループットを向上させるために、後部でシグナリングすることができる。コピーインデックスモードおよびコピーアバブモードは、インデックスコーディングとエスケープコーディングとの間でシグナリングすることができる。
輝度成分および彩度成分に対して別個のコーディングツリー構造を使用することができる。いくつかの例では、CUは輝度成分と彩度成分の両方のサンプルを含む。JVETなどのいくつかの例では、彩度成分のサンプルは、輝度成分と比較して、独立したまたは別個の分割ツリー構造(またはコーディングツリー構造)を有することができる。別個のコーディングツリー構造は、CTUレベルから開始することができる。一例では、彩度CU(例えば、2つの彩度成分のみを含むCU)は、対応するサンプル位置での彩度CUの輝度対応物よりも大きい。
VTM5.0などの一実施形態では、彩度ブロックに対する複数のイントラ予測モード(例えば、8つのイントラ予測モード)は、平面モード、DCモード、水平モード(または水平予測モード)、垂直モード(または垂直予測モード)、3つのクロス成分線形モデル(CCLM)モード、および導出モード(DM)を含むことができる。彩度ブロックがDMモードを使用してエンコードされる場合、彩度ブロックに適用される実際のイントラ予測モードは、対応する輝度ブロックのイントラ予測モードから導出することができる。対応する輝度ブロックが通常のイントラモード以外のモードを使用してエンコードされる場合、彩度ブロックがDCモードに基づいて実際のイントラ予測モードを導出できるように、輝度ブロックにDCモードを適用(または割り当て)することができる。
輝度および彩度のカラープレーンが別々にコード化される場合、彩度コーディングブロックに対して、対応する輝度ブロックをパレットコーディングモードでコード化することができる。一例では、パレットコーディングモードでコード化された対応する輝度ブロックに対するイントラ予測モードの割り当てを改善することができる。
ブロックベースの補償は、インター予測およびイントラ予測に使用することができる。インター予測の場合、別の画像からのブロックベースの補償は動き補償として知られている。ブロックベースの補償はまた、イントラ予測などにおいて、同じ画像内の予て再構成された領域から実行することもできる。同じ画像内の再構成された領域からのブロックベースの補償は、イントラ画像ブロック補償、カレント画像参照(CPR)、またはイントラブロックコピー(IBC)と呼ばれる。同じ画像内のカレントブロックと参照ブロック(予測ブロックとも呼ばれる)との間のオフセットを示す変位ベクトルは、ブロックベクトル(BV)と呼ばれ、ここでカレントブロックは、参照ブロックに基づいてエンコード/デコードすることができる。任意の値(xまたはy方向のいずれかで正または負)であり得る動き補償の動きベクトルとは異なり、BVは、参照ブロックが利用可能であり、かつすでに再構成されていることを保証するためにいくつかの制約を有する。また、いくつかの例では、並列処理を考慮して、タイル境界、スライス境界、または波面ラダー形状境界であるいくつかの参照領域が除外される。
ブロックベクトルのコーディングは、明示的または暗黙的のいずれかであり得る。明示的モード(インターコーディングにおけるAMVPモードと同様)では、ブロックベクトルとその予測子との間のBV差分がシグナリングされる。暗黙的モードでは、ブロックベクトルは、マージモードにおける動きベクトルと同様に、BV差分を使用することなく、予測子(ブロックベクトル予測子と呼ばれる)から復元される。ブロックベクトルの解像度は、いくつかの実装において、整数位置に制限される。他のシステムでは、ブロックベクトルは小数位置を指すことができる。
いくつかの例では、ブロックレベルでのイントラブロックコピーの使用は、IBCフラグなどのブロックレベルフラグを使用してシグナリングすることができる。一実施形態では、ブロックレベルフラグは、カレントブロックが明示的にコード化される(例えば、マージモードでコード化されない)ときにシグナリングされる。いくつかの例では、ブロックレベルでのイントラブロックコピーの使用は、参照インデックス手法を使用してシグナリングすることができる。デコーディング中のカレント画像は、参照画像または特別な参照画像として扱われる。一例では、そのような参照画像は、参照画像のリストの最後の位置に置かれる。特別な参照画像はまた、デコード画像バッファ(DPB)などのバッファ内の他の時間参照画像と共に管理される。
また、イントラブロックコピーには、反転されたイントラブロックコピー(参照ブロックは、カレントブロックを予測するために使用される前に、水平または垂直に反転される)、またはラインベースのイントラブロックコピー(M×Nコーディングブロック内の各補償ユニットは、Mx1または1xNラインである)などのいくつかの変形もある。
図9は本開示の一実施形態によるイントラブロックコピーの一例を示す。カレント画像(900)はデコーディング中に再構成される。カレント画像(900)は、再構成された領域(910)(灰色の領域)およびデコードされる領域(920)(白い領域)を含む。カレントブロック(930)は、デコーダによって再構成中である。カレントブロック(930)は再構成された領域(910)内にある参照ブロック(940)から再構成することができる。参照ブロック(940)とカレントブロック(930)との間の位置オフセットは、ブロックベクトル(950)(またはBV(950))と呼ばれる。図9の例では、検索範囲(960)は再構成された領域(910)内にあり、参照ブロック(940)は検索範囲(960)内にあり、ブロックベクトル(950)は検索範囲(960)内の参照ブロック(940)を指すように制約される。
図10A~10Dは、本開示の一実施形態によるイントラブロックコピーの例を示す。図10A~Dを参照すると、カレント画像(1001)は、再構成中のカレントCTB(1015)と、カレントCTB(1015)の左隣にある予て再構成されたCTB(1010)とを含む。カレント画像(1001)内のCTBは、CTBサイズおよびCTB幅を有する。検索範囲は、CTUのサイズ(例えば、CTBサイズ)を有することができる。メモリは、予て再構成されたCTB(1010)の一部を検索するために再利用され得る。カレントCTB(1015)は4つの領域(1016)~(1019)を含む。同様に、予て再構成されたCTB(1010)は、4つの領域(1011)~(1014)を含む。一実施形態では、CTBサイズは、参照メモリサイズに等しい。一例では、CTBサイズおよび参照メモリサイズは、128×128サンプルであり、領域(1011)~(1014)および(1016)~(1019)のそれぞれは、64×64サンプルのサイズを有する。
図10A~Dに示される例では、カレントCTB(1015)は、それぞれ、領域(1016)~(1019)に対応する左上領域、右上領域、左下領域、および右下領域を含む。予て再構成されたCTB(1010)は、それぞれ領域(1011)~(1014)に対応する左上領域、右上領域、左下領域、および右下領域を含む。
図10Aを参照すると、現在の領域(1016)は再構成中である。現在の領域(1016)は、複数のコーディングブロック(1021)~(1029)を含む。カレントブロック(1021)は、現在の領域(1016)において最初に再構成される。現在の領域(1016)は、予て再構成されたCTB(1010)において、同一位置の領域、すなわち、領域(1011)を有する。いくつかの実施形態によれば、カレントブロック(1021)の検索範囲は、現在の領域(1016)においてカレントブロック(1021)が最初に再構成される同一位置の領域(1011)を除外する。したがって、参照メモリバッファの厳密な同期およびタイミング制御は必要ない。検索範囲は、予て再構成されたCTB(1010)の領域(1012)~(1014)を含み、これらの領域は、同一位置の領域(1011)の後、カレントブロック(1021)の前にデコーディング順に再構成される。
図10Aを参照すると、同一位置の領域(1011)の位置は、現在の領域(1016)の位置から、128サンプルなどのCTB幅だけオフセットされる。例えば、同一位置の領域(1011)の位置は、現在の領域(1016)の位置から128サンプルだけ左にシフトされる。
再び図10Aを参照すると、現在の領域(1016)がカレントCTB(1015)の左上領域である場合、同一位置の領域(1011)は、予て再構成されたCTB(1010)の左上領域であり、検索領域は、予て再構成されたCTBの左上領域を除外する。
図10Bを参照すると、現在の領域(1017)は再構成中である。現在の領域(1017)は複数のコーディングブロック(1041)~(1049)を含む。カレントブロック(1041)は、現在の領域(1017)において最初に再構成される。現在の領域(1017)は、同一位置の領域(すなわち、予て再構成されたCTB(1010)内の領域(1012))を有する。本開示の態様によれば、カレントブロック(1041)の検索範囲は、現在の領域(1017)においてカレントブロック(1041)が最初に再構成される同一位置の領域(1012)を除外する。したがって、参照メモリバッファの厳密な同期およびタイミング制御は必要ない。検索範囲は、予て再構成されたCTB(1010)の領域(1013)~(1014)と、同一位置の領域(1012)の後、カレントブロック(1041)の前に再構成されたカレントCTB(1015)内の領域(1016)とを含む。参照メモリサイズ(すなわち、1つのCTBサイズ)の制約により、検索範囲はさらに領域(1011)を除外する。同様に、同一位置の領域(1012)の位置は、現在の領域(1017)の位置から、128サンプルなどのCTB幅だけオフセットされる。
図10Bの例では、現在の領域(1017)はカレントCTB(1015)の右上領域であり、同一位置の領域(1012)も予て再構成されたCTB(1010)の右上領域であり、検索領域は、予て再構成されたCTB(1010)の右上領域を除外する。
図10Cを参照すると、現在の領域(1018)は再構成中である。現在の領域(1018)は複数のコーディングブロック(1061)~(1069)を含む。カレントブロック(1061)は、現在の領域(1018)において最初に再構成される。現在の領域(1018)は、予て再構成されたCTB(1010)において、同一位置の領域(すなわち、領域(1013))を有する。本開示の態様によれば、カレントブロック(1061)の検索範囲は、現在の領域(1018)においてカレントブロック(1061)が最初に再構成される同一位置の領域(1013)を除外する。したがって、参照メモリバッファの厳密な同期およびタイミング制御は必要ない。検索範囲は、予て再構成されたCTB(1010)の領域(1014)と、同一位置の領域(1013)の後、カレントブロック(1061)の前に再構成されたカレントCTB(1015)内の領域(1016)~(1017)とを含む。同様に、参照メモリサイズの制約により、検索範囲はさらに領域(1011)~(1012)を除外する。同一位置の領域(1013)の位置は、現在の領域(1018)の位置から、128サンプルなどのCTB幅だけオフセットされる。図10Cの例では、現在の領域(1018)がカレントCTB(1015)の左下領域である場合、同一位置の領域(1013)も、予て再構成されたCTB(1010)の左下領域であり、検索領域は、予て再構成されたCTB(1010)の左下領域を除外する。
図10Dを参照すると、現在の領域(1019)は再構成中である。現在の領域(1019)は複数のコーディングブロック(1081)~(1089)を含む。カレントブロック(1081)は、現在の領域(1019)において最初に再構成される。現在の領域(1019)は、予て再構成されたCTB(1010)において、同一位置の領域(すなわち、領域(1014))を有する。本開示の態様によれば、カレントブロック(1081)の検索範囲は、現在の領域(1019)においてカレントブロック(1081)が最初に再構成される同一位置の領域(1014)を除外する。したがって、参照メモリバッファの厳密な同期およびタイミング制御は必要ない。検索範囲は、カレントCTB(1015)内の領域(1016)~(1018)を含み、これらの領域は同一位置の領域(1014)の後、カレントブロック(1081)の前にデコーディング順で再構成される。検索範囲は、参照メモリサイズの制約により、領域(1011)~(1013)を除外し、したがって、検索範囲は、予て再構成されたCTB(1010)を除外する。同様に、同一位置の領域(1014)の位置は、現在の領域(1019)の位置から、128サンプルなどのCTB幅だけオフセットされる。図10Dの例では、現在の領域(1019)がカレントCTB(1015)の右下領域である場合、同一位置の領域(1014)も予て再構成されたCTB(1010)の右下領域であり、検索領域は予て再構成されたCTB(1010)の右下領域を除外する。
イントラブロックコピーのいくつかの変形例は、イントラブロックコピーを、イントラ予測モードおよびインター予測モードとは異なる第3のモードとして扱うことを含むことができる。イントラブロックコピーを第3のモードとして扱うことにより、マージモード(またはIBCマージモード)およびAMVPモード(またはIBC AMVPモード)でのBV予測を、通常のインターモードから分離することができる。例えば、個別のマージ候補リスト(またはIBCマージ候補リスト)は、IBCモード用に定義され、個別のマージ候補リスト内の各エントリがBVである。同様に、IBC AMVPモードでのBV予測候補リストは、BVのみを含む。IBCマージ候補リストおよびBV予測候補リストに適用されるいくつかの一般的なルールは、IBCマージ候補リストおよびBV予測候補リストが、候補導出プロセスに関して、インターマージ候補リストまたはBV予測候補リストと同じロジックに従うことができることを含むことができる。例えば、インターマージモード(例えば、HEVCまたはVVC)における5つの空間的に隣接する位置(例えば、図2の202~206)は、IBCモード用のマージ候補リストを導出するために、イントラブロックコピーのためにアクセスされる。
一例では、ビットレートが高い場合、または特定のコンテンツに対して、スクリーンコンテンツコーディングツールでコード化された領域または境界に対してループフィルタを実行しないことが有用である場合がある。したがって、ループフィルタを無効にすることも、条件付きで無効にすることもできる。
SCCツールは、スクリーンコンテンツ素材に適し得る、変換スキップ(TS)モード、ブロック差分パルスコード化変調(BDPCM)モードなどをさらに含むことができる。
BDPCMモードは、スクリーンコンテンツコーディングに使用することができる。シーケンスレベルでは、BDPCMイネーブルフラグをSPSでシグナリングすることができる。一例では、BDPCMイネーブルフラグは、SPS内でTSモードが有効になっている場合にのみシグナリングされる。
BDPCMモードが有効になっている場合、CUサイズが輝度サンプルに関してMaxTsSize×MaxTsSize以下であり、かつCUがイントラコーディングされている場合、フラグをCUレベルで送信することができ、ここで、MaxTsSizeは、TSモードが許可される最大ブロックサイズである。フラグは、通常のイントラコーディングまたはBDPCMモードのどちらが使用されているかを示すことができる。BDPCMモードが使用されている場合、BDPCM予測方向フラグを送信して予測が水平か垂直かを示すことができる。次に、フィルタリングされていない参照サンプルを用いた通常の水平または垂直イントラ予測プロセスを使用して、ブロックを予測することができる。残差を量子化することができ、各量子化残差と対応する予測子との間の差分、例えば、(BDPCM予測方向に応じて)水平または垂直の隣接位置の予てコード化された残差をコード化することができる。
サイズM(高さ)×N(幅)のブロックの場合、
を予測残差とする。
を残差ri,jの量子化バージョンを示すものとする。BDPCMモードは量子化残差値に適用でき、結果として、要素r~i,j,を有する修正M×N配列R~が得られ、ここで、r~i,jは、その隣接する量子化残差値から予測される。垂直BDPCMモードの場合、0≦j≦(N-1)の場合、以下の式を用いてr~i,jを導出することができる。
水平BDPCM予測モードの場合、0≦i≦(M-1)の場合、以下を用いてr~i,jを導出することができる。
デコーダ側では、上記のプロセスを逆にして、Q(ri,j), 0≦i≦M-1, 0≦j≦N-を以下のように計算することができる。
逆量子化残差
をイントラブロック予測値に加算して、再構成されたサンプル値を生成する。
予測された量子化残差値r~
i,jは、TSモード残差コーディングと同じ残差コーディングプロセスを使用してデコーダに送信することができる。可逆コーディングの場合、slice_ts_residual_coding_disabled_flagが1に設定されると、量子化残差値は、通常の変換残差コーディングを使用してデコーダに送信することができる。イントラモードコーディングのMPMモードに関して、BDPCM予測方向がそれぞれ水平または垂直である場合、BDPCMコード化されたCUのために水平または垂直予測モードを格納することができる。デブロッキングの場合、ブロック境界の両側の両方のブロックがBDPCMモードを使用してコード化されている場合、ブロック境界はデブロッキングされない場合がある。
TSモードは、MaxTsSize×MaxTsSizeまでのサイズの輝度ブロックに使用することができ、ここで、MaxTsSizeの値は、PPSでシグナリングすることができ、また32以下であり得る。CUがTSモードでコード化されている場合、予測残差は、変換スキップ残差コーディングプロセスを使用して量子化およびコード化することができる。変換スキップ残差コーディングプロセスは、変換係数コーディングプロセスから修正することができる。変換スキップモードでは、TUの残差は、サイズ4×4の重複しないサブブロックの単位でコード化することができる。コーディング効率を向上させるために、いくつかの修正を加えて、残差信号の特性に合わせて残差コーディングプロセスをカスタマイズすることができる。以下は、変換スキップ残差コーディングと通常の変換残差コーディングのいくつかの違いをまとめたものであり、(i)順方向スキャン順序は、変換ブロック内のサブブロックおよびサブブロック内の位置をスキャンするために適用され、(ii)最後の(x、y)位置のシグナリングがなく、(iii)coded_sub_block_flagは、前のすべてのフラグが0に等しい場合、最後のサブブロックを除くすべてのサブブロックに対してコード化することができ、(iv)sig_coeff_flagコンテキストモデリングは縮小されたテンプレートを使用し、sig_coeff_flagのコンテキストモデルは上部と左側の隣接する値に依存し、(v)abs_level_gt1フラグのコンテキストモデルは、左側と上部のsig_coeff_flag値にも依存し、(vi)par_level_flagは1つのコンテキストモデルのみを使用し、(vii)係数レベルを示すために、3、5、7、9より大きい追加のフラグをシグナリングすることができ、各フラグにつき1つのコンテキストであり、(viii)剰余値の二値化のために固定次数=1を使用してライスパラメータを導出し、(ix)符号フラグのコンテキストモデルは、左側および上の隣接する値に基づいて決定され、すべてのコンテキストコード化されたビンをまとめるために、符号フラグはsig_coeff_flagの後に解析される。
各サブブロックについて、coded_subblock_flagが1に等しい場合(例えば、サブブロックに少なくとも1つの非ゼロ量子化残差がある場合)、量子化残差レベルのコーディングは、3つのスキャンパスで実行される。最初のスキャンパスでは、有意性フラグ(例えば、sig_coeff_flag)、符号フラグ(例えば、coeff_sign_flag)、1フラグより大きい絶対レベル(例えば、abs_level_gt1_flag[0])、およびパリティ(例えば、par_level_flag)をコード化することができる。特定のスキャン位置について、sig_coeff_flagが1に等しい場合、coeff_sign_flagがコード化され、その後にabs_level_gt1_flag[0](絶対レベルが1より大きいか否かを指定する)がコード化される。abs_level_gt1_flag[0]が1に等しい場合、par_level_flagは絶対レベルのパリティを指定するためにさらにコード化される。xより大きいスキャンパスでは、絶対レベルが1より大きいスキャン位置について、i=1…4場合に最大4つのabs_level_gtx_flag[i]をコード化して、特定の位置の絶対レベルがそれぞれ3、5、7、または9より大きいか否かを示すことができる。残りのスキャンパスでは、絶対レベルabs_remainderの残りをバイパスモードでコード号化することができる。絶対レベルの残りは、固定のライスパラメータ値1を使用して二値化することができる。
最初の2つのスキャンパス(例えば、最初のスキャンパスおよびxより大きいスキャンパス)におけるビンは、TU内のコンテキストコード化されたビンの最大数が使い果たされるまで、コンテキストコード化することができる。残差ブロック内のコンテキストコード化されたビンの最大数は、1.75*block_width*block_height、または同等にサンプル位置ごとに平均1.75のコンテキストコード化されたビンに制限することができる。最後のスキャンパス(残りのスキャンパスなど)におけるビンはバイパスコード化される。変数RemCcbsは、最初にブロックのコンテキストコード化されたビンの最大数に設定され、コンテキストコード化されたビンがコード化されるたびに1つずつ減少する。RemCcbsは4以上であるが、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flagおよびpar_level_flagを含む最初のコーディングパス内の構文要素は、コンテキストコード化されたビンを使用してコード化される。最初のパスのコーディング中にRemCcbsが4より小さい場合、最初のパスでまだコード化されていない残りの係数は、残りのスキャンパスでコード化される。
最初のパスコーディングの完了後、RemCcbsが4以上である場合、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、およびabs_level_gt9_flagを含む第2のコーディングパス内の構文要素は、コンテキストコード化されたビンを使用してコード化される。第2のパスのコーディング中にRemCcbsが4より小さい場合、第2のパスでまだコード化されていない残りの係数は、残りのスキャンパスでコード化される。
図11は、本開示の一実施形態による、変換スキップ残差コーディングプロセスの一例を示す。星形(1122)は、コンテキストコード化されたビンが使い果たされたときの位置を示し、その時点で、残りのすべてのビンは、矢印(1121)~(1122)によって示されるように、バイパスコーディングを使用してコード化される。正方形(1110)内の矢印は、コンテキストコーディングを示す。
さらに、BDPCMモードでコード化されていないブロックに対して、コンテキストコード化されたビンの最大数に達するまで、レベルマッピングメカニズムを変換スキップ残差コーディングに適用することができる。レベルマッピングでは、シグナリングコストを削減するために、上部および左側の隣接する係数レベルを使用して現在の係数レベルを予測することができる。特定の残差位置について、absCoeffはマッピング前の絶対係数レベルを表すことができ、absCoeffModはマッピング後の係数レベルを表すことができる。X0を左側の隣接位置の絶対係数レベルを示すものとし、X1を上の隣接位置の絶対係数レベルを示すものとすると、レベルマッピングは以下のように実行される。
pred=max(X0,X1);
if(absCoeff==pred)
absCoeffMod=1;
else
absCoeffMod=(absCoeff<pred)?absCoeff+1:absCoeff.
次に、absCoeffMod値を上記のようにコード化することができる。すべてのコンテキストコード化されたビンが使い果たされた後、カレントブロック内の残りのすべてのスキャン位置に対してレベルマッピングを無効にすることができる。
いくつかの実施形態では、デブロッキングフィルタ技術を使用することができる。一例(例えば、HEVC)では、デブロッキングフィルタリングプロセスはデコーディングプロセスと同じ順序で各CUに対して実行される。例えば、CUのエッジ(または境界)をそれぞれフィルタリングすることができる。一例では、垂直エッジが最初にフィルタリングされ(水平フィルタリング)、次に水平エッジがフィルタリングされる(垂直フィルタリング)。いくつかの例では、フィルタリングは、輝度成分および彩度成分の両方の8×8ブロック境界に適用されてもよく、複雑さを軽減するために、4×4ブロック境界は処理されない場合がある。境界強度(Bs)は、境界に使用できるデブロッキングフィルタリングプロセスの程度または強度を示すために使用できる。一実施形態では、Bsの値2は強いフィルタリングを示し、値1は弱いフィルタリングを示し、値0はデブロッキングフィルタリングがないことを示す。
一実施形態では、Bsは4×4サンプルグリッドベースで計算されるが、8×8サンプルグリッドに再マッピングすることができる。一例では、8×8ブロックは4つの4×4ブロックを含むため、8×8ブロックの境界は、2つの隣接する4×4ブロックの2つの側面を含む。4×4グリッド内でラインを形成する8個のピクセルに対応するBsの2つの値の最大値を、8×8グリッド内の境界のBsとして選択することができる。
図12は、本開示の一実施形態による、Bs値を決定するための例示的なプロセス(1200)のフローチャートを示す。他の実施形態では、図12のステップの順序を並べ替えることができるか、または1つ以上のステップを省略できることに留意されたい。
図12において、PおよびQは、それらの間に境界を有する2つの隣接ブロックである。垂直エッジの場合、Pは、境界の左側にあるブロックを表し、Qは境界の右側にあるブロックを表すことができる。水平エッジの場合、Pは境界の上にあるブロックを表し、Qは境界の下にあるブロックを表すことができる。
図12に示されるように、Bs値は、予測モード(例えば、イントラコーディングモード)、非ゼロ変換係数(例えば、非ゼロ変換係数の存在)、参照画像、動きベクトルの数、および動きベクトル差分に基づいて決定することができる。
ステップ(S1210)において、プロセス(1200)は、PまたはQがイントラ予測モードでコード化されているか否かを判定する。PおよびQの少なくとも1つがイントラ予測モードでコード化されていると判定した場合、プロセス(1200)は、Bsの第1の値(例えば、2)を決定する。そうでない場合、プロセス(1200)はステップ(S1220)に進む。
ステップ(S1220)において、プロセス(1200)は、PまたはQが非ゼロ変換係数を有するか否かを判定する。PおよびQの少なくとも1つが非ゼロ変換係数を有すると判定した場合、プロセス(1200)は、Bsの第2の値(例えば、1)を決定する。そうでない場合、プロセス(1200)はステップ(S1230)に進む。
ステップ(S1230)において、プロセス(1200)は、PおよびQが異なる参照画像を有するか否かを判定する。PおよびQが異なる参照画像を有すると判定した場合、プロセス(1200)は、Bsの第3の値(例えば、1)を決定する。そうでない場合は、プロセス(1200)はステップ(S1240)に進む。
ステップ(S1240)において、プロセス(1200)は、PおよびQが異なる数の動きベクトルを有するか否かを判定する。PおよびQが異なる数の動きベクトルを有すると判定した場合、プロセス(1200)は、Bsの第4の値(例えば、1)を決定する。そうでない場合は、プロセス(1200)はステップ(S1250)に進む。
ステップ(S1250)において、プロセス(1200)は、PとQとの動きベクトル差分が閾値T以上であるか否かを判定する。PとQとの動きベクトル差分が閾値T以上であると判定した場合、プロセス(1200)は、Bsの第5の値(例えば、1)を決定する。そうでない場合、プロセス(1200)はBsの第6の値(例えば、0)を決定する。一実施形態では、閾値Tは1ピクセルに設定される。一例では、MV精度は1/4ピクセルであり、MV差分閾値の値は4に設定することができる。別の例では、MV精度は1/16であり、MV差分の値は16に設定することができる。
上記のデブロッキングフィルタリングプロセスは、VTM5などのいくつかの例において修正されてもよい。いくつかの実施形態では、(1)デブロッキングフィルタのフィルタ強度は、再構成されたサンプルの平均輝度レベルに依存することができ、(2)デブロッキングtCテーブルを拡張することができ、(3)輝度に対してより強いデブロッキングフィルタを使用することができ、(4)彩度に対してより強いデブロッキングフィルタを使用することができ、(5)輝度および彩度に対して異なるデブロッキンググリッドを使用することができ、例えば、4×4サンプルグリッドに対して輝度デブロッキングを実行し、8×8サンプルグリッドに対して彩度デブロッキングを実行するという修正のうちの1つ以上を行うことができる。
具体的には、一実施形態では、フィルタ強度は、再構成された平均輝度レベルに依存する。いくつかの例(例えば、HEVC)では、デブロッキングフィルタのフィルタ強度は、平均化された量子化パラメータqPLから導出された変数βおよびtCによって制御される。例のVTM5では、デブロッキングフィルタの強度もqPLに対するオフセットによって制御され、オフセットは、再構成されたサンプルの輝度レベルに従って設定される。再構成された輝度レベルLLは(式5)のように導出することができる。
LL=((p0,0 + p0,3+q0,0+q0,3)>> 2 )/ ( 1<<bitDepth) (5)
ここで、i=0..3およびk=0および3のサンプル値pi,kおよびqi,kはサンプル位置に基づいて導出される。
図13は、i = 0..3およびk=0および3でpi,kおよびqi,kを導出する一例を示す。
一例では、変数qPLは(式6)のように導出される。
qPL=((QpQ+QpP+1)>>1)+qpOffset (6)
ここで、QpQおよびQpPは、それぞれサンプルq0,0とp0,0を含むコーディングユニットの量子化パラメータを示す。オフセットqpOffsetは伝達関数に依存し、値はSPSでシグナリングされる。
一実施形態では、デブロッキングtCテーブルを拡張することができる。例えば、VTM5では、最大QPを51から63に変更することができる。デブロッキングパラメータtCの値は、ブロックQPに基づいて導出されるため、それに応じてデブロッキングテーブルが変更される。以下は、QP範囲の拡張に対応するために更新されたtCテーブルである。
tC=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,5,5,6,6,7,8,9,10,11,13,14,16,18,20,22,25,28,31,35,39,44,50,56,63,70,79,88,99].
一実施形態では、輝度に対してより強いデブロッキングフィルタを使用することができる。いくつかの例では、境界の両側のサンプルが大きなブロックに属する場合、双線形フィルタ(より強いデブロッキングフィルタの一例)が使用される。大きなブロックに属するサンプルは、ブロックの幅が垂直境界の場合は32以上であり、ブロックの高さが水平境界の場合は32以上であると定義される。次に、i=0~Sp-1のブロック境界サンプルp
iとj=0~Sq-1のq
iは、以下のように線形補間に置き換えられる。
ここで、tcPD
iおよびtcPD
j項は位置に依存するクリッピングであり、g
j、f
i、Middle
s,t、P
S、およびQ
Sは以下の表1に基づいて与えられる。
表1:輝度用のより強いデブロッキングパラメータの導出
いくつかの実施形態では、上記のより強い輝度フィルタは、3つの条件(条件1、条件2および条件3と呼ばれる)のすべてがTRUEである場合にのみ使用される。条件1は「大きなブロック条件」である。条件1はP側とQ側のサンプルが大きなブロックに属するか否かを検出する。条件2および条件3は、以下によって決定される。
条件2=(d<β)?TRUE:FALSE (9)
条件3=StrongFilterCondition=(dpqは(β>>2)未満、sp3+sq3は(3×β>>5)未満、Abs(p0-q0)は(5×tC+1)>>1未満)?TRUE:FALSE (式10)
一実施形態では、彩度に対して強いデブロッキングフィルタを使用する。 一例では、彩度用の強いデブロッキングフィルタは、(式10~式12)に示されるように定義することができる。
p2′=(3×p3+2×p2+p1+p0+q0+4)>>3 (10)
p1′=(2×p3+p2+2×p1+p0+q0+q1+4)>>3 (11)
p0′=(p3+p2+p1+2×p0+q0+q1+q2+4)>>3 (12)
上記の彩度フィルタは、8x8彩度サンプルグリッドに対してデブロッキングを実行する。彩度用の強フィルタは、ブロック境界の両側に使用される。一例では、彩度エッジの両側が8(彩度サンプルの単位)以上である場合に彩度フィルタが選択され、以下の3つの条件で決定が満たされる。第1の条件は境界強度と大きなブロックの決定である。第2の条件および第3の条件は基本的にHEVC輝度決定の場合と同じであり、それぞれオン/オフ決定および強フィルタ決定である。第1の決定では、境界強度(Bs)は、表2に示されるように、彩度フィルタリングのために修正される。表2の条件は順次チェックすることができる。ある条件が満たされた場合、いくつかの例では、優先度の低い残りの条件をスキップすることができる。
表2―修正された境界強度
彩度デブロッキングは、Bsが2に等しいときに実行されており、または、大きなブロック境界が検出されたときにBsが1に等しい。第2および第3の条件はHEVC輝度強フィルタ決定と同じであり得る。
一実施形態では、サブブロック境界に対するデブロッキングフィルタが使用される。いくつかの例では、デブロッキングフィルタは、輝度の場合は4×4グリッドで、彩度の場合は8×8グリッドで有効になる。いくつかの例では、デブロッキングフィルタは、PUの8×8グリッドで有効になる。いくつかの実施形態では、デブロッキングフィルタリングプロセスは、サブブロック境界だけでなくCU境界にも適用される。
一例では、ビットレートが高い場合、または特定のコンテンツに対して、例えば、コーディング効率を向上させるために、スクリーンコンテンツコーディングツールでコード化された領域または境界に対してループフィルタを実行しないことが有用である場合がある。いくつかの例では、スクリーンコンテンツを含む画像の特性は、自然なシーンの画像(例えば、カメラによって撮影された画像)の特性と比べて異なる場合がある。したがって、特定の特性を有する画像(例えば、自然なシーンの画像)の画質を改善することができる特定のループフィルタ(例えば、DBF、SAOフィルタなど)は、特定のスクリーンコンテンツを含む画像には適さない場合がある。一例では、DBFは、HEVCまたはVVCなどにおいて、ブロックパーティションによって生じるエッジを滑らかにし、したがってビデオ品質を向上させることができる。しかしながら、DBFの平滑化効果は、特定のスクリーンコンテンツを含む画像に悪影響を与えるか、または最小限の効果しか得られない場合がある。したがって、コーディング効率を向上させるために、ループフィルタを無効にするか、または条件付きで無効にすることができる。
本開示の態様によれば、少なくとも1つのループフィルタは、デブロッキングフィルタ(DBF)、適応ループフィルタ(ALF)、サンプル適応オフセット(SAO)、バイラテラルフィルタなどのうちの1つまたは組み合わせを含むことができるが、これらに限定されない。少なくとも1つのSCCツールは、IBCモード、パレットコーディングモード、BDPCMモード、TSモードなどのうちの1つまたは組み合わせを含むことができるが、これらに限定されない。高レベルは、シーケンスレベル、画像レベル、スライスレベル、タイルレベル、タイルグループレベル、例えばタイルまたはタイルグループに類似したサブ画像レベルのうちの1つを含むことができる。高レベルフラグ(例えば、高レベル制御フラグ)は、SPS、PPS、画像ヘッダ、スライスヘッダ、タイル、タイルグループ、およびサブ画像レベルのうちの1つまたは組み合わせでシグナリングされるフラグを含むことができるが、これに限定されない。
本開示の態様によれば、第1のブロック(例えば、コーディングブロック)は、パレットコーディングモードを使用してコード化することができ、したがって、パレットコード化ブロックと呼ぶことができる。第2のブロックをイントラ予測し、パレットコーディングモード(または第1のブロック)を使用してイントラモード予測を構成する場合、第2のブロックが使用するために、対応するイントラ予測モード(例えば、水平モード、垂直モードなど)を
パレットコード化ブロック(または第1のブロック)に割り当てることができる。一例では、単一のデフォルトのイントラ予測モードの代わりに、対応するイントラ予測モードが複数のイントラ予測モードから選択され、したがって、第2のブロックをイントラ予測し、第2のブロックのコーディング効率を向上させるのにより適している場合がある。いくつかの例では、水平イントラ予測モードおよび垂直イントラ予測モードは、他のいくつかのイントラ予測モードよりも構成が容易であり、したがって、コーディング効率を向上させることができる。第1のブロックは第2のブロックの参照ブロックであり得る。第1のブロックは第2のブロックの隣接ブロック(例えば、空間的に隣接するブロック)であり得る。第1のブロックは第2のブロック(例えば、彩度ブロック)の同一位置のブロック(例えば、同一位置の輝度ブロック)であり得る。第2のブロックはパレットコード化ブロックの隣接ブロック(例えば、空間的に隣接するブロック)であり得る。第2のブロックはパレットコード化ブロック(例えば、輝度ブロック)の同一位置のブロック(例えば、同一位置の彩度ブロック)であり得る。
パレットコード化ブロックに割り当てられた対応するイントラ予測モードは、水平モードであり得る。第2のブロックが、例えば、参照ブロックとしてパレットコード化ブロックを使用して、イントラモード予測を構成する場合、パレットコード化ブロックに対して水平モードを考慮することができる。一例では、第2のブロックは、第1のブロックの隣接する輝度ブロックであり、第2のブロックに対して最確モード(MPM)リストが作成される。第2のブロックは、第1のブロックに割り当てられた水平モードを参照として使用して、MPMリストを作成することができる。一例では、デュアルツリーの場合、第2のブロックは、DMモード(例えば、イントラ予測モードの1つ)でコード化された彩度ブロックであり、第1のブロック(例えば、第2のブロックの同一位置の輝度ブロック)と併置される。したがって、第2のブロックに適用される実際のイントラ予測モードは、第1のブロック(例えば、同一位置の輝度ブロック)に割り当てられた水平モードから導出することができる。同一位置の輝度ブロックは、彩度ブロックの同一位置の輝度位置の中心位置を示し得る。
パレットコード化ブロックに割り当てられた対応するイントラ予測モードは、垂直モードであり得る。第2のブロックが、例えば、参照ブロックとしてパレットコード化ブロックを使用して、モード内予測を構成する場合、パレットコード化ブロックに対して垂直モードを考慮することができる。一例では、第2のブロックは第1のブロックの隣接する輝度ブロックであり、第2のブロックに対してMPMリストが作成される。第2のブロックは第1のブロックに割り当てられた垂直モードを参照として使用して、MPMリストを作成することができる。一例では、デュアルツリーの場合、第2のブロックは、DMモード(例えば、イントラ予測モードの1つ)でコード化された彩度ブロックであり、第1のブロック(例えば、第2ブロックの同一位置の輝度ブロック)と併置される。したがって、第2のブロックに適用される実際のイントラ予測モードは、第1のブロック(例えば、同一位置の輝度ブロック)に割り当てられた垂直モードから導出することができる。同一位置の輝度ブロックは、彩度ブロックの同一位置の輝度位置の中心位置を示し得る。
ブロックに関連付けられた少なくとも1つのループフィルタ(例えば、DBF、SAOフィルタ、ALF、バイラテラルフィルタなど)は、SCCツール(例えば、IBCモード、パレットコーディングモード、BDPCMモード、TSモードなど)でコード化されたブロックに対して無効に(または禁止)することができる。いくつかの例では、少なくとも1つのループフィルタ(例えば、DBFなど)は、SCCツールでコード化されたブロックと別のブロックとの間の境界に対して無効にすることができる。一例では、ブロックはパレットコーディングモードまたはIBCモードでコード化される。パレットコーディングモードでコード化されたブロックは、パレットコード化ブロックと呼ぶことができ、IBCモードでコード化されたブロックはIBCコード化ブロックと呼ぶことができる。一例では、カレントブロックに関連付けられた少なくとも1つのループフィルタが無効にされているか否かは、ブロックの予測モード(例えば、パレットコーディングモード、IBCモード、または別のSCCツール)およびブロックの第1の量子化パラメータ(QP)のうちの少なくとも1つに基づいて判定することができる。
一実施形態では、パレットコーディングモードまたはIBCモードでコード化されたブロックに対して、ブロックとブロックの隣接ブロックとの間の境界を横切るDBFを無効にすることができる(例えば、境界強度(Bs)は0に設定される)。
一例では、ブロックおよび隣接ブロックは、パレットコーディングモードでコード化され、したがって、境界は、2つのパレットコード化ブロックの間にあるか、または境界の両側はパレットコード化ブロックである。境界の両側にあるブロックおよび隣接ブロックがパレットコーディングモードでコード化されている場合に、境界を横切るDBFを無効にすることも、無効にすると決定することもできる。
一例では、ブロックおよび隣接ブロックは、IBCモードでコード化され、したがって、境界は、2つのIBCコード化ブロックの間にある。境界の両側にあるブロックおよび隣接ブロックがIBCモードでコード化されている場合に、境界を横切るDBFを無効にすることができる。
一例では、ブロックおよび隣接ブロックの1つは、パレットコーディングモードでコード化され、ブロックおよび隣接ブロックの別の1つは、IBCモードでコード化される。境界は、パレットコード化ブロックとIBCコード化ブロックの間にある。したがって、境界を横切るDBFを無効にすることができる。
一例では、ブロックおよび隣接ブロックの1つは、パレットコーディングモードでコード化される。したがって、境界は、パレットコード化ブロックと、任意の適切な予測モード(例えば、SCCツール、イントラ予測モード、インター予測モードなど)でコード化されたブロックとの間にある。したがって、境界を横切るDBFを無効にすることができる。
一例では、ブロックおよび隣接ブロックの1つは、IBCモードでコード化される。したがって、境界は、IBCブロックと、任意の適切な予測モード(例えば、SCCツール、イントラ予測モード、インター予測モードなど)でコード化されたブロックとの間である。したがって、境界を横切るDBFを無効にする。
一例では、ブロックおよび隣接ブロックの1つは、パレットコーディングモードでコード化される。さらに、ブロックの第1のQPおよび/または隣接ブロックの第2のQPは、特定の条件を満たす。したがって、境界を横切るDBFは無効になる。一例では、条件は、ブロックの第1のQPが閾値を下回っていることである。一例では、条件は、ブロックの第1のQPおよび隣接ブロックの第2のQPが閾値を下回っていることである。閾値は22などの任意の適切な値であってもよい。閾値はシグナリングすることができ、または事前に決定することができる。
一例では、ブロックおよび隣接ブロックの1つは、IBCモードでコード化される。さらに、ブロックの第1のQPおよび/または隣接ブロックの第2のQPは、上記の特定の条件を満たす。したがって、境界を横切るDBFは無効になる。一例では、条件は、ブロックの第1のQPが上記のように閾値を下回っていることである。一例では、条件は、ブロックの第1のQPおよび隣接ブロックの第2のQPが閾値を下回っていることである。
一実施形態では、パレットコーディングモードまたはIBCモードでコード化されたブロックに対して、DBFとは異なる1つ以上のループフィルタ(例えば、ALF、SAOフィルタ、バイラテラルフィルタなど)を無効にする(または禁止する、オフにするとも呼ばれる)ことができる。DBFとは異なる1つ以上のループフィルタは、ブロック用にすることができ、ここで、1つ以上のループフィルタはブロックに適用することができる。例えば、1つ以上のループフィルタはブロック内のサンプルに適用することができる。一例では、ブロックに対する1つ以上のループフィルタを無効にするか否かは、ブロックの第1のQPおよび第1の予測モードに基づく。例えば、第1のQPが閾値未満で、ブロックがパレットコーディングモードでコード化されている場合、ブロックに対する1つ以上のループフィルタを無効にする。一例では、第1のQPが閾値未満で、ブロックがIBCモードでコード化されている場合、ブロックに対する1つ以上のループフィルタを無効にする。
いくつかの例では、ブロックに対する1つ以上のループフィルタを無効にするか否かは、第1のQP、ブロックの第1の予測モード、第2のQP、および第2の予測モードのうちの少なくとも1つに基づく。一例では、ブロックの第1のQPが閾値を下回り、第1の予測モードおよび第2の予測モードの1つがパレットコーディングモードである場合、ブロックに対する1つ以上のループフィルタを無効にする。一例では、第1のQPおよび第2のQPが閾値を下回り、第1の予測モードおよび第2の予測モードの1つがパレットコーディングモードである場合、ブロックに対する1つ以上のループフィルタを無効にする。一例では、ブロックの第1のQPが閾値を下回り、第1の予測モードおよび第2の予測モードの1つがIBCモードである場合、ブロックに対する1つ以上のループフィルタを無効にする。一例では、第1のQPおよび第2のQPが閾値を下回り、第1の予測モードおよび第2の予測モードの1つがIBCモードである場合、ブロックに対する1つ以上のループフィルタを無効にする。
本開示の態様によれば、カレントブロックのコーディング情報は、コード化されたビデオビットストリームからデコードすることができる。コーディング情報は、カレントブロックの第1の予測モードがSCCツールまたは複数のSCCツールのうちの1つであることを示すことができる(例えば、IBCモード、パレットコーディングモード、BDPCMモード、TSモードなど)。いくつかの例では、第1の予測モードは、IBCモードまたはパレットコーディングモードである。カレントブロックに関連付けられた少なくとも1つのループフィルタが無効にされているか否かは、カレントブロックの第1の予測モードおよびカレントブロックの第1のQPのうちの少なくとも1つに基づいて判定することができる。一例では、少なくとも1つのループフィルタを無効にすることに応答して、カレントブロックは、少なくとも1つのループフィルタなしで再構成することができる。一例では、DBFを無効にしないことに応答して、カレントブロックを少なくとも1つのループフィルタで再構成する。いくつかの例では、カレントブロックに対する少なくとも1つのループフィルタは、ALF、SAOフィルタ、およびバイラテラルフィルタのうちの少なくとも1つを含む。少なくとも1つのループフィルタはカレントブロック用であり、DBFとは異なっていてもよい。したがって、カレントブロックに対して少なくとも1つのループフィルタが有効になっている場合、少なくとも1つのループフィルタをカレントブロックに適用することができ、それによりカレントブロック内のサンプルを少なくとも1つのループフィルタによって修正(またはフィルタリング)することができる。少なくとも1つのループフィルタが無効されているか否かは、カレントブロックの第1のQPおよび第1の予測モードに基づいて判定することができる。
一実施形態では、少なくとも1つのループフィルタは、カレントブロックとカレントブロックの隣接ブロックとの間の境界に対するDBFである。第1の予測モードは、IBCモードまたはパレットコーディングモードである。カレントブロックとカレントブロックの隣接ブロックとの間の境界に対するDBFが無効にされているか否かは、(i)カレントブロックの第1の予測モード、(ii)隣接ブロックの第2の予測モード、(iii)カレントブロックの第1のQP、および(iv)隣接ブロックの第2のQPのうちの少なくとも1つに基づいて判定することができる。カレントブロックとカレントブロックの隣接ブロックとの間の境界に対するDBFが無効にされているか否かは、第1の予測モードおよび第2の予測モードのうちの少なくとも1つに基づいて判定することができる。
一例では、第1の予測モードおよび第2の予測モードのうちの少なくとも1つが(i)IBCモードおよび(ii)パレットコーディングモードのいずれかである場合、カレントブロックと隣接ブロックとの間の境界に対するDBFが無効にされていると判定する。一例では、(i)第1のQPが閾値(例えば、22)未満であるか、または第1のQPおよび第2のQPが閾値未満であり、そして(ii)第1の予測モードおよび第2の予測モードの1つがパレットコーディングモードまたはIBCモードである場合、カレントブロックと隣接ブロックとの間の境界に対するDBFが無効にされていると判定する。
高レベルフラグ(高レベル制御フラグ、フィルタコントロールフラグ、無効制御フラグ、高レベル無効制御フラグとも呼ばれる)を使用して、少なくとも1つのSCCツールに対して少なくとも1つのループフィルタを禁止または無効にすることができる。上記のように、フィルタコントロールフラグは、SPS、PPS、画像ヘッダ、スライスヘッダ、タイル、タイルグループ、および/またはタイルまたはタイルグループに類似したサブ画像レベルのうちの1つまたは組み合わせにすることができる。したがって、フィルタコントロールフラグは、ブロックのグループに関連付けることができ、したがって、ブロックのグループの1つ以上に対して少なくとも1つのループフィルタを制御する。ブロックのグループは、シーケンス、画像、スライス、タイル、タイルグループ、または適切なサブ画像レベルにすることができる。ブロックのグループは、複数のブロックを含むことができる。一例では、例えば、複数のブロックに対して、高レベル制御フラグを使用して、ブロックレベルよりも高いレベルで少なくとも1つのループフィルタを制御することは、例えば、各ブロックに対して、ブロックレベルで少なくとも1つのループフィルタを制御することよりも効率的であり得る。
本開示の態様によれば、カレントブロックを含むブロックのグループのコーディング情報は、コード化されたビデオビットストリームからデコードすることができる。コーディング情報は、例えば、シーケンス、画像、スライス、タイル、タイルグループ、または適切なサブ画像レベルで、ブロックのグループに関連付けられたフィルタコントロールフラグを示すことができる。カレントブロックは、SCCツールを使用してコード化することができる。一例では、カレントブロックの予測モードはSCCツールである。カレントブロックに対する少なくとも1つのループフィルタが無効にされているか否かは、フィルタコントロールフラグに基づいて判定することができる。一例では、少なくとも1つのループフィルタが無効にされていると判定したことに応答して、カレントブロックは、少なくとも1つのループフィルタなしで再構成することができる。
一実施形態では、例えば、ブロックのグループに関連付けられたフィルタコントロールフラグが真である(またはフィルタコントロールフラグがオンになっている)場合、フィルタコントロールフラグに基づいてカレントブロックに対する少なくとも1つのループフィルタが無効にされていると判定することができる。したがって、一例では、少なくとも1つのループフィルタは、適切に選択されたSCCツール(例えば、IBCモード)でコード化されたサンプル(例えば、ブロックのグループの1つ以上内)には適用されない。選択されたSCCツールはコーデックによってサポートされる。一例では、ブロックのグループは、IBCモードなどの選択されたSCCツールの1つ以上でコード化され、したがって、ブロックのグループ内のサンプルに対して少なくとも1つのループフィルタが無効にされる。一例では、ブロックのグループの第1のサブセットは、1つ以上の選択されたSCCツールでコード化され、ブロックのグループの第2のサブセットは、インター予測モードなど、選択されたSCCツールとは異なる予測モードでコード化される。したがって、少なくとも1つのループフィルタは、ブロックのグループの第1のサブセット内のサンプルに対して無効にされ、少なくとも1つのループフィルタは、ブロックのグループの第2のサブセット内のサンプルに適用され得る。
一例では、フィルタコントロールフラグが偽である(またはフィルタコントロールフラグがオフになっている)場合、特定の条件(決定条件とも呼ばれる)が満たされるならば、少なくとも1つのループフィルタが、選択されたSCCツールでコード化されたサンプルに適用され得る。一例では、少なくとも1つのループフィルタはカレントブロック用のものであり(例えば、カレントブロックに適用可能である)、条件はカレントブロックに対するものであるか、またはカレントブロックに関連している。一例では、少なくとも1つのループフィルタはDBFであるため、ブロック間の境界に適用可能である。DBFは、境界に適用されると、境界の両側にあるブロック内のサンプルを修正することができる。条件は、ブロック(例えば、カレントブロックと隣接ブロック)間の境界に対するものであり、したがって、条件は境界の両側にあるブロックに関連している。
一実施形態では、フィルタコントロールフラグは、SCCツールに固有である。SCCツールに固有のフィルタコントロールフラグに基づいてカレントブロックに対する少なくとも1つのループフィルタが無効にされていると判定する。例えば、フィルタコントロールフラグがSCCツールに対して特別にシグナリングされ、かつフィルタコントロールフラグが真である場合、少なくとも1つのループフィルタが無効にされていると判定する。一例では、各SCCツール(例えば、IBCモード、パレットコーディングモード、TSモード、BDPCMモードなど)に対して、対応するフィルタコントロールフラグ(またはSCCツール固有のフィルタコントロールフラグ)をシグナリングする。対応するフィルタコントロールフラグがオンまたは真の場合、少なくとも1つのループフィルタは、SCCツール(例えば、IBCモード)でコード化されたサンプルには適用されない。例えば、SCCツールはIBCモードであり、対応するフィルタコントロールフラグはIBCモード用である。IBCモード用の対応するフィルタコントロールフラグが真の場合、少なくとも1つのループフィルタは、IBCモードでコード化されたサンプルには適用されない。対応するフィルタコントロールフラグがオフ(または偽)の場合、決定条件が満たされていれば、少なくとも1つのループフィルタは、選択されたSCCツールでコード化されたサンプルに適用され得る。一例では、上記のように、条件はカレントブロックに対するものである。一例では、少なくとも1つのループフィルタはDBFであり、条件は、上記のように、ブロック(例えば、カレントブロックと隣接ブロック)間の境界に対するものである。
上記のように、フィルタコントロールフラグに基づいてカレントブロックに対する少なくとも1つのループフィルタが無効にされていると判定することができ、ここでフィルタコントロールフラグは、ブロックのグループに関連付けることができ、またはSCCツールに固有である。
一実施形態では、フィルタコントロールフラグは、SCCツールに固有であるか、またはSCCツールを含む複数のSCCツールに適用可能であり得る。フィルタコントロールフラグは、上記のように、SCCツールまたは複数のSCCツールがブロックレベルよりも高いレベルに対して有効であることを示すために、SCCフラグがブロックレベルよりも高いレベルでシグナリングされるか否かに基づいて、条件付きでシグナリングすることができる。
上記のように、カレントブロックは、SCCツールを用いてコード化することができる。一実施形態では、フィルタコントロールフラグは、SCCツールに固有である。フィルタコントロールフラグは、SCCツールがブロックレベルよりも高いレベルに対して有効であることを示すために、SCCフラグ(または高レベル有効化フラグ)が、例えばブロックレベルよりも高いレベルでシグナリングされるか否かに基づいて、条件付きでシグナリングすることができる。
一例では、少なくとも1つのループフィルタの使用を制御するためのフィルタコントロールフラグは、SCCツールの高レベル有効化フラグによって条件付きでシグナリングされる。例えば、SCCツールはIBCモードであり、少なくとも1つのループフィルタはDBFであり、したがって、IBCモードでコード化された1つ以上のブロックのグループに対するDBFの使用を制御するためのフィルタコントロールフラグは、IBCモードの高レベル有効化フラグがオン(または真)の場合にのみシグナリングされる。それ以外の場合、IBCモード用のフィルタコントロールフラグはシグナリングされず、偽(またはオフ)であると推測できる。
したがって、一例では、フィルタコントロールフラグは、SCCツールが使用される場合にのみシグナリングされる。例えば、IBCモードの高レベル有効化フラグは、第1のレベル(例えば、シーケンスレベル)でシグナリングされる。IBCモード用のフィルタコントロールフラグは、第2のレベル(例えば、画像レベル)でシグナリングされる。IBCモード用のフィルタコントロールフラグは、シーケンスレベルでのIBCモードの高レベル有効化フラグがオンになっている場合にのみシグナリングされる。第1のレベルおよび第2のレベルは同一でも異なっていてもよい。第1のレベルおよび第2のレベルはブロックレベルよりも高いレベルであり得る。
一実施形態では、フィルタコントロールフラグは、SCCツールを含む複数のSCCツールに適用可能であり、また、複数のSCCツールがブロックレベルよりも高いレベルに対して有効であることを示すために、SCCフラグ(または高レベル有効化フラグ)が、例えばブロックレベルよりも高いレベルでシグナリングされるか否かに基づいて、条件付きでシグナリングされる。一例では、フィルタコントロールフラグは、複数のSCCツールがブロックレベルよりも高いレベルに対して有効であることを示すために、SCCフラグがブロックレベルよりも高いレベルでシグナリングされる場合、条件付きでシグナリングされる。
一例では、少なくとも1つのループフィルタの使用を制御するフィルタコントロールフラグは、複数のSCCツール用であり、複数のSCCツールを有効にすることができる高レベル有効化フラグによって条件付きでシグナリングされる。複数のSCCツールは、コーデックによってサポートされるすべてのSCCツールを含むことができる。一般に、複数のSCCツールは、コーデックによってサポートされる任意の適切なSCCツールを含むことができる。一例では、複数のSCCツールは、IBCモード、パレットコーディングモード、TSモード、およびBDPCMモードの組み合わせを含む。上記のSCCツールのうちの1つ以上を複数のSCCツールから除外することができ、また、追加のSCCツールを複数のSCCツールに追加することができる。一例では、複数のSCCツールを有効にすることができる高レベル有効化フラグが真(またはオン)であり、複数のSCCツール用のフィルタコントロールフラグがシグナリングされる。一例では、複数のSCCツールを有効にすることができる高レベル有効化フラグが偽(またはオフ)であり、複数のSCCツール用のフィルタコントロールフラグがシグナリングされない。フィルタコントロールフラグがシグナリングされていない場合、フィルタコントロールフラグを偽(またはオフ)であると推測できる。
一実施形態では、フィルタコントロールフラグは、SCCツールを含む複数のSCCツールに適用可能であり、また、SCCツールがブロックレベルよりも高いレベルに対して有効であることを示すために、SCCフラグが、例えばブロックレベルよりも高いレベルでシグナリングされるか否かに基づいて、条件付きでシグナリングされる。一例では、少なくとも1つのループフィルタの使用を制御するフィルタコントロールフラグは、複数のSCCツール用であり、複数のSCCツールのうちの任意の選択された1つを有効にすることができるSCCフラグ(または高レベル有効化フラグ)によって条件付きでシグナリングされる。複数のSCCツールのうちの選択された1つは、コーデックによってサポートされる。複数のSCCツールは、上記のように、コーデックによってサポートされるすべてのSCCツールを含むことができる。一例では、複数のSCCツールは、IBCモード、パレットコーディングモード、TSモード、BDPCMモード、および/または追加のSCCモードの組み合わせを含む。
一例では、高レベル有効化フラグは、高レベル構文で真(またはオン)であり、複数のSCCツールのうちの選択された1つが有効にされる。複数のSCCツール用のフィルタコントロールフラグをシグナリングすることができる。一例では、高レベル有効化フラグが偽(またはオフ)であり、複数のSCCツール用のフィルタコントロールフラグはシグナリングされない。フィルタコントロールフラグがシグナリングされていない場合、フィルタコントロールフラグは偽(またはオフ)であると推測できる。
一実施形態では、少なくとも1つのループフィルタを無効にするか否かは、フィルタコントロールフラグおよびカレントブロックのQPに基づいて判定することができる。例えば、少なくとも1つのループフィルタは、カレントブロック(例えば、コーディングブロック)のQPが値の範囲(例えば、事前に決定された値の範囲、所与の値の範囲)内にあり、フィルタコントロールフラグがオンになっている場合にのみ無効にされる。値の範囲は、QPが閾値(例えば、22)以上であるなど、任意の適切な範囲とすることができる。一例では、値の範囲は、QPが閾値(例えば、22)以下であるというものである。値の範囲は、推測またはシグナリングすることができる。閾値は任意の適切な値とすることができ、また、推測またはシグナリングすることができる。
一実施形態では、少なくとも1つのループフィルタは、ブロックのグループ内のカレントブロックと隣接ブロックとの間の境界などに対するDBFを含む。カレントブロックと隣接ブロックとの間の境界に対するDBFが無効にされているか否かは、フィルタコントロールフラグと、(i)カレントブロックのSCCツールおよび(ii)隣接ブロックの予測モードのうちの少なくとも1つとに基づくことができる。フィルタコントロールフラグがオンになり、(i)カレントブロックのSCCツールおよび(ii)隣接ブロックの予測モードのうちの少なくとも1つがSCCツール(例えば、IBCモード)である場合、カレントブロックと隣接ブロックとの間の境界に対するDBFが無効にされていると判定することができる。
上記のように、境界の2つの側面(例えば、カレントブロックおよび隣接ブロック)の少なくとも1つのサンプルが選択されたSCCツールによってコード化されている場合、境界に対するDBFの無効化を適用することができる。例えば、フィルタコントロールフラグがオンになり、他の決定条件(例えば、QPが22以下であるなど、QPがある範囲内にある)がある場合、DBFは、例えばIBCモードでコード化されたサンプルに対して無効にされ、QPは、サンプルを含むそれぞれのブロックに対するものである。一例では、両側がIBCモードでコード化されている場合にのみ、DBFは、境界に沿ったサンプルに対して無効にされる。
図14は本開示の一実施形態によるプロセス(1400)を概説するフローチャートを示す。プロセス(1400)は、再構成中のカレントブロックの予測ブロックを生成するために、カレントブロックの再構成に使用することができる。様々な実施形態では、プロセス(1400)は、端末装置(310)、(320)、(330)、および(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1400)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1400)を実行する。プロセスは(S1401)から始まり、(S1410)に進む。
(S1410)において、コード化されたビデオビットストリームからカレントブロックのコーディング情報をデコードすることができる。コーディング情報は、カレントブロックの第1の予測モードが複数のSCCツールのうちの1つであることを示すことができる。複数のSCCツールのうちの1つは、任意の適切なSCCツールであってもよい。一例では、第1の予測モードは、IBCモードまたはパレットコーディングモードである。
(S1420)において、上記のように、カレントブロックの第1の予測モードおよびカレントブロックの第1のQPのうちの少なくとも1つに基づいて、カレントブロックに関連付けられた少なくとも1つのループフィルタが無効にされているか否かを判定する。少なくとも1つのループフィルタを無効にすることに応答して、プロセス(1400)は(S1430)に進む。そうでない場合、プロセス(1400)は(S1440)に進む。
(S1430)において、少なくとも1つのループフィルタが無効にされていることに応答して、少なくとも1つのループフィルタなしでカレントブロックを再構成することができる。プロセス(1400)は(S1499)に進み、終了する。
(S1440)において、少なくとも1つのループフィルタが無効にされていないことに応答して、例えば、カレントブロックと隣接ブロックとの間の境界に適用された少なくとも1つのループフィルタでカレントブロックを再構成することができる。プロセス(1400)は(S1499)に進み、終了する。
プロセス(1400)は、様々なシナリオに適切に適合させることができ、プロセス(1400)のステップは、それに応じて調整することができる。プロセス(1400)の1つ以上のステップは、適合、省略、繰り返し、および/または組み合わせることができる。プロセス(1400)を実装するために、任意の適切な順序を使用することができる。追加のステップをプロセス(1400)に追加することができる。
図15は、本開示の一実施形態によるプロセス(1500)を概説するフローチャートを示す。プロセス(1500)は、再構成中のカレントブロックの予測ブロックを生成するために、カレントブロックの再構成に使用することができる。様々な実施形態では、プロセス(1500)は、端末装置(310)、(320)、(330)、および(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1500)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1500)を実行する。プロセスは(S1501)から始まり、(S1510)に進む。
(S1510)において、コード化されたビデオビットストリームからカレントブロックを含むブロックのグループのコーディング情報をデコードすることができる。コーディング情報は、ブロックのグループに関連付けられたフィルタコントロールフラグを示すことができる。カレントブロックは、SCCツールを用いてコード化することができる。
(S1520)において、上記のように、フィルタコントロールフラグに基づいてカレントブロックに対する少なくとも1つのループフィルタが無効にされているか否かを判定することができる。DBFを無効にすることに応答して、プロセス(1500)は(S1530)に進む。そうでない場合、プロセス(1500)は(S1540)に進む。
(S1530)において、少なくとも1つのループフィルタが無効にされていることに応答して、少なくとも1つのループフィルタなしでカレントブロックを再構成することができる。プロセス(1500)は(S1599)に進み、終了する。
(S1540)において、上記のように、少なくとも1つのループフィルタが無効にされていないことに応答して、例えば、特定の決定条件が満たされる場合、少なくとも1つのループフィルタでカレントブロックを再構成することができる。プロセス(1500)は(S1599)に進み、終了する。
プロセス(1500)は、様々なシナリオに適切に適合させることができ、プロセス(1500)のステップは、それに応じて調整することができる。プロセス(1500)の1つ以上のステップは、適合、省略、繰り返し、および/または組み合わせることができる。プロセス(1500)を実装するために、任意の適切な順序を使用することができる。追加のステップを追加することができる。
本開示の実施形態は、別々に使用することも、任意の順序で組み合わせて使用することもできる。さらに、方法(または実施形態)、エンコーダ、およびデコーダのそれぞれは、処理回路(例えば、1つ以上のプロセッサまたは1つ以上の集積回路)によって実装され得る。一例では、1つ以上のプロセッサは、非一時的なコンピュータ可読媒体に格納されているプログラムを実行する。
上記の技術は、コンピュータ可読命令を使用してコンピュータソフトウェアとして実装することができ、また1つ以上のコンピュータ可読媒体に物理的に格納することができる。例えば、図16は、開示された主題の特定の実施形態を実装するのに適したコンピュータシステム(1600)を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、または同様のメカニズムを受けて直接実行できる命令を含むコードを作成することができる任意の適切なマシンコードまたはコンピュータ言語を使用してコード化することができ、また、1つ以上のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによる解釈、マイクロコード実行などを介してコード化することができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、モノのインターネット装置などを含む様々なタイプのコンピュータまたはその構成要素上で実行することができる。
図16に示されるコンピュータシステム(1600)用の構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲または機能に関する制限を示唆することを意図するものではない。また、構成要素の構成は、コンピュータシステム(1600)の例示的な実施形態に示される構成要素のいずれか1つまたは組み合わせに関連する依存性または要件を有すると解釈されるべきではない。
コンピュータシステム(1600)は、特定のヒューマンインタフェース入力装置を含み得る。そのようなヒューマンインタフェース入力装置は、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(音声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介した1人以上の人間ユーザによる入力に応答することができる。ヒューマンインタフェース装置はまた、オーディオ(音声、音楽、周囲の音など)、画像(スキャンされた画像、静止画像カメラから取得した写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、人間による意識的な入力に必ずしも直接関連していない特定のメディアをキャプチャするためにも使用できる。
入力ヒューマンインタフェース装置は、キーボード(1601)、マウス(1602)、トラックパッド(1603)、タッチスクリーン(1610)、データグローブ(図示せず)、ジョイスティック(1605)、マイクロフォン(1606)、スキャナ(1607)、カメラ(1608)のうちの1つ以上(示されているそれぞれの1つのみ)を含み得る。
コンピュータシステム(1600)はまた、特定のヒューマンインタフェース出力装置を含み得る。そのようなヒューマンインタフェース出力装置は、例えば、触覚出力、音、光、および匂い/味覚を通して、1人以上の人間ユーザの感覚を刺激することができる。そのようなヒューマンインタフェース出力装置は、触覚出力装置(例えば、タッチスクリーン(1610)、データグローブ(図示せず)、またはジョイスティック(1605)による触覚フィードバックであるが、入力装置として機能しない触覚フィードバック装置もある)、オーディオ出力装置(スピーカー(1609)、ヘッドホン(図示せず)など)、視覚出力装置(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1610)など、それぞれタッチスクリーン入力機能を有しても有しなくてもよく、それぞれ触覚フィードバック機能を有しても有しなくてもよく、そのうちのいくつかは、ステレオグラフィック出力、バーチャルリアリティグラス(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず)などの手段を介して、2次元の視覚出力または3次元以上の出力を出力できる可能性がる)、およびプリンタ(図示せず)を含み得る。
コンピュータシステム(1600)はまた、人間がアクセス可能な記憶装置と、CD/DVDまたは同様の媒体を備えたCD/DVD ROM/RW(1620)を含む光学媒体(1621)、サムドライブ(1622)、リムーバブルハードドライブまたはソリッドステートドライブ(1623)、テープやフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースの装置(図示せず)などの関連媒体とを含むことができる。
当業者はまた、現在開示されている主題に関連して使用される「コンピュータ可読媒体」という用語は、伝送媒体、搬送波、または他の一時的な信号を含まないことを理解すべきである。
コンピュータシステム(1600)はまた、1つ以上の通信ネットワーク(1655)へのネットワークインタフェース(1654)を含むことができる。ネットワークは、例えば、無線、有線、光学であり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例には、イーサネットなどのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上放送TVを含むTV有線または無線広域デジタルネットワーク、CANBusを含む車両および産業用ネットワークなどが含まれる。特定のネットワークは通常、特定の汎用データポートまたは周辺バス(1649)(例えば、コンピュータシステム(1600)のUSBポートなど)に接続された外部ネットワークインタフェースアダプタが必要であり、他のネットワークは通常、以下に説明されるように、システムバスに接続することによってコンピュータシステム(1600)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインタフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインタフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(1600)は、他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたは広域デジタルネットワークを使用する他のコンピュータシステムに対して、一方向、受信専用(例えば、放送TV)、一方向送信専用(例えば、CANbusから特定のCANbus装置へ)、または双方向であり得る。上記のように、特定のプロトコルおよびプロトコルスタックは、これらのネットワークおよびネットワークインタフェースのそれぞれで使用することができる。
前述のヒューマンインタフェース装置、人間がアクセス可能な記憶装置、およびネットワークインタフェースは、コンピュータシステム(1600)のコア(1640)に接続することができる。
コア(1640)は、1つ以上の中央処理装置(CPU)(1641)、グラフィック処理装置(GPU)(1642)、フィールドプログラマブルゲートエリア(FPGA)の形態の専用プログラム可能処理ユニット(1643)、特定のタスク用のハードウェアアクセラレータ(1644)、グラフィックアダプタ(1650)などを含むことができる。これらの装置は、読み取り専用メモリ(ROM)(1645)、ランダムアクセスメモリ(1646)、ユーザがアクセスできない内蔵ハードドライブ、SSDなどの内蔵大容量記憶装置(1647)と共に、システムバス(1648)介して接続することができる。一部のコンピュータシステムでは、システムバス(1648)は、1つ以上の物理プラグの形態でアクセス可能であり、追加のCPU、GPUなどによる拡張を可能にする。周辺装置は、コアのシステムバス(1648)に直接接続するか、または周辺バス(1649)を介して接続することができる。一例では、ディスプレイ(1610)をグラフィックアダプタ(1650)に接続することができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU(1641)、GPU(1642)、FPGA(1643)、およびアクセラレータ(1644)は、組み合わせて前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1645)または(RAM)(1646)に格納することができる。移行データはRAM(1646)に格納することもでき、一方、永続データは、例えば内蔵大容量記憶装置(1647)に格納することができる。1つ以上のCPU(1641)、GPU(1642)、大容量記憶装置(1647)、ROM(1645)、RAM(1646)などと密接に関連付けることができるキャッシュメモリを使用することによって、任意のメモリ装置への高速格納および検索を可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、またはそれらは、コンピュータソフトウェア技術の当業者に周知で利用可能な種類のものであってもよい。
限定ではなく、一例として、アーキテクチャ(1600)、特にコア(1640)を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が1つ以上の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行する結果として機能性を提供することができる。そのような可読媒体は、上述のようにユーザがアクセス可能な大容量記憶装置に関連付けられた媒体、ならびにコア内蔵大容量記憶装置(1647)またはROM(1645)などの非一時的な性質を有するコア(1640)の特定の記憶装置であり得る。本開示の様々な実施形態を実装するソフトウェアは、そのような装置に格納され、コア(1640)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つ以上のメモリ装置またはチップを含むことができる。ソフトウェアは、コア(1640)、特にその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行させることができ、それは、RAM(1646)に格納されたデータ構造を定義し、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む。さらにまたは代替として、コンピュータシステムは、ロジックが回路(例えば、アクセラレータ(1644))に配線で接続され、または他の方法で回路に具現化された結果として機能性を提供することができ、回路は、ソフトウェアの代わりにまたはソフトウェアと共に動作して、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行することができる。必要に応じて、ソフトウェアへの言及はロジックを含むことができ、その逆も可能である。コンピュータ可読媒体への言及は、必要に応じて、実行用のソフトウェアを格納する回路(集積回路(IC)など)、実行用のロジックを具現化する回路、またはその両方を含むことができる。本開示は、ハードウェアおよびソフトウェアの任意の適切な組み合わせを含む。
付録A:頭字語
JEM:共同探索モデル
VVC:多用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
MVP:動きベクトル予測
AMVP:高度な動きベクトル予測
DM:導出モード
MPM:最確モード
QP:量子化パラメータ
ALF:適応ループフィルタ
SAO:サンプル適応オフセット
HEVC: 高効率ビデオコーディング
HEVC SCC: HEVCスクリーンコンテンツコーディング
SEI:補足強化情報
VUI:ビデオユーザビリティ情報
GOP:画像のグループ
TU:変換ユニット
PU:予測ユニット
CTU:コーディングツリーユニット
CTB:コーディングツリーブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SNR:信号対雑音比
CPU:中央処理装置
GPU:グラフィック処理装置
CRT:ブラウン管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクトディスク
DVD:デジタルビデオディスク
ROM:読み取り専用メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブルロジックデバイス
LAN:ローカルエリアネットワーク
GSM:汎欧州デジタル移動体通信システム
LTE:ロングタームエボリューション
CANBus:コントローラエリアネットワークバス
USB:ユニバーサルシリアルバス
PCI:周辺構成要素相互接続
FGPA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:コーディングユニット
BV:ブロックベクトル
CPR:カレント画像参照
IBC:イントラブロックコピー
DPB:デコーディング画像バッファ
本開示はいくつかの例示的な実施形態を説明しているが、本開示の範囲内にある変更、置換、および様々な代替同等物が存在する。したがって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現化し、したがって本開示の精神および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。