本明細書および特許請求の範囲全体を通して、用語は、明示的に記載される意味を超えて文脈内で示唆または暗示される微妙な意味を有する場合がある。本明細書で使用される「一実施形態では」または「いくつかの実施形態では」という語句は、必ずしも同じ実施形態を指すものではなく、本明細書で使用される「別の実施形態では」または「他の実施形態では」という語句は、必ずしも異なる実施形態を指すものではない。同様に、本明細書で使用される「一実装形態では」または「いくつかの実装形態では」という語句は、必ずしも同じ実装形態を指すものではなく、本明細書で使用される「別の実装形態では」または「他の実装形態では」という語句は、必ずしも異なる実装形態を指すものではない。例えば、特許請求される主題は、例示的な実施形態/実装形態の全部または一部の組み合わせを含むことを意図している。
一般に、専門用語は、文脈における使用法から少なくとも部分的に理解される場合がある。例えば、本明細書で使用される「および」、「または」、または「および/または」などの用語は、そのような用語が使用される文脈に少なくとも部分的に依存する場合がある様々な意味を含んでもよい。典型的には、A、B、またはCなどのリストを関連付けるために使用される場合の「または」は、ここでは包括的な意味で使用されるA、B、およびC、ならびにここでは排他的な意味で使用されるA、B、またはCを意味することを意図している。加えて、本明細書で使用される「1つまたは複数」または「少なくとも1つ」という用語は、文脈に少なくとも部分的に依存して、単数の意味で任意の特徴、構造、もしくは特性を記述するために使用されてもよく、または複数の意味で特徴、構造、もしくは特性の組み合わせを記述するために使用されてもよい。同様に、「a」、「an」、または「the」などの用語もやはり、文脈に少なくとも部分的に依存して、単数形の使用法を伝えるか、または複数形の使用法を伝えると理解されてもよい。加えて、「に基づいて」または「によって決定される」という用語は、必ずしも排他的な要因のセットを伝えることを意図していないと理解されてもよく、代わりに、やはり文脈に少なくとも部分的に依存して、必ずしも明示的に記述されていないさらなる要因の存在を可能にする場合もある。
図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示している。通信システム(300)は、例えば、ネットワーク(350)を介して互いに通信することができる複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末デバイス(310)および(320)の第1のペアを含む。図3の例では、端末デバイス(310)および(320)の第1のペアは、データの単方向送信を実施し得る。例えば、端末デバイス(310)は、ネットワーク(350)を介して他方の端末デバイス(320)に送信するための(例えば、端末デバイス(310)によって取り込まれたビデオピクチャのストリームの)ビデオデータをコーディングし得る。エンコーディングされたビデオデータは、1つまたは複数のコーディングされたビデオビットストリームの形式で送信され得る。端末デバイス(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコーディングしてビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示し得る。単方向データ送信は、メディアサービング用途などで実施されてもよい。
別の例では、通信システム(300)は、例えば、ビデオ会議用途の間に実施され得るコーディングされたビデオデータの双方向送信を実施する端末デバイス(330)および(340)の第2のペアを含む。データの双方向送信のために、一例では、端末デバイス(330)および(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)および(340)の他方の端末デバイスに送信するための(例えば、その端末デバイスによって取り込まれたビデオピクチャのストリームの)ビデオデータをコーディングし得る。端末デバイス(330)および(340)の各端末デバイスはまた、端末デバイス(330)および(340)の他方の端末デバイスによって送信されたコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコーディングしてビデオピクチャを復元し、復元されたビデオデータに従ってアクセス可能な表示デバイスでビデオピクチャを表示し得る。
図3の例では、端末デバイス(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして実装されてもよいが、本開示の基礎となる原理の適用はそのように限定されなくてもよい。本開示の実施形態は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、ウェアラブルコンピュータ、専用のビデオ会議機器などにおいて実装され得る。ネットワーク(350)は、例えば、有線(有線接続)および/または無線通信ネットワークを含む、端末デバイス(310)、(320)、(330)および(340)間でコーディングされたビデオデータを伝達する任意の数またはタイプのネットワークを表す。通信ネットワーク(350)は、回線交換チャネル、パケット交換チャネル、および/または他のタイプのチャネルでデータを交換し得る。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが含まれる。本説明の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジーは、本明細書で明確に説明されない限り、本開示の動作にとって重要でない可能性がある。
図4は、開示された主題についての用途用の一例として、ビデオストリーミング環境内のビデオエンコーダおよびビデオデコーダの配置を示している。開示された主題は、例えば、ビデオ会議、デジタルテレビ放送、ゲーム、仮想現実、CD、DVD、メモリスティックなどを含むデジタル媒体上の圧縮ビデオの記憶などを含む、他のビデオ用途に等しく適用可能であってもよい。
ビデオストリーミングシステムは、例えば、圧縮されていないビデオピクチャまたは画像のストリーム(402)を作成するためのビデオソース(401)、例えば、デジタルカメラを含むことができるビデオキャプチャサブシステム(413)を含んでもよい。一例では、ビデオピクチャのストリーム(402)は、ビデオソース401のデジタルカメラによって記録されたサンプルを含む。エンコーディングされたビデオデータ(404)(またはコーディングされたビデオビットストリーム)と比較したときに多いデータ量を強調するために太い線として示されたビデオピクチャのストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理され得る。ビデオエンコーダ(403)は、以下でより詳細に記載されるように、開示された主題の態様を可能にするかまたは実装するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。エンコーディングされたビデオデータ(404)(またはエンコーディングされたビデオビットストリーム(404))は、非圧縮ビデオピクチャのストリーム(402)と比較した場合の低データ量を強調するために細線で示されており、将来の使用のためにストリーミングサーバ(405)に、または下流のビデオデバイス(図示せず)に直接記憶され得る。図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、エンコーディングされたビデオデータ(404)のコピー(407)および(409)を取り出すことができる。クライアントサブシステム(406)は、例えば、電子デバイス(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコーディングされたビデオデータの入力コピー(407)をデコーディングし、圧縮されていない、ディスプレイ(412)(例えば、表示画面)または他のレンダリングデバイス(図示せず)上にレンダリングすることができるビデオピクチャの出力ストリーム(411)を作成する。ビデオデコーダ410は、本開示に記載される様々な機能の一部または全部を実施するように構成され得る。いくつかのストリーミングシステムでは、エンコーディングされたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコーディングされ得る。それらの規格の例には、ITU-T勧告H.265が含まれる。一例では、開発中のビデオコーディング規格は、多用途ビデオコーディング(VVC)として非公式に知られている。開示された主題は、VVC、および他のビデオコーディング規格の文脈で使用されてもよい。
電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)はビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)もビデオエンコーダ(図示せず)を含むことができる。
図5は、以下の本開示の任意の実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれ得る。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)を、図4の例のビデオデコーダ(410)の代わりに使用することができる。
受信機(531)は、ビデオデコーダ(510)によってデコーディングされるべき1つまたは複数のコーディングされたビデオシーケンスを受信し得る。同じまたは別の実施形態では、一度に1つのコーディングされたビデオシーケンスがデコーディングされ得、各コーディングされたビデオシーケンスのデコーディングは、他のコーディングされたビデオシーケンスから独立している。各ビデオシーケンスは、複数のビデオフレームまたはビデオ画像に関連付けられ得る。コーディングされたビデオシーケンスはチャネル(501)から受信され得、チャネル(501)は、エンコーディングされたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンク、またはエンコーディングされたビデオデータを送信するストリーミングソースであり得る。受信機(531)は、エンコーディングされたビデオデータを、それぞれの処理回路(図示せず)に転送され得る、コーディングされたオーディオデータおよび/または補助データストリームなどの他のデータと共に受信し得る。受信機(531)は、コーディングされたビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、バッファメモリ(515)が、受信機(531)とエントロピーデコーダ/パーサ(520)(以後、「パーサ(520)」)との間に配置されてもよい。特定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部として実装され得る。他の用途では、バッファメモリ(515)は、ビデオデコーダ(510)から分離されて外部にあり得る(図示せず)。さらに他の用途では、例えば、ネットワークジッタに対抗するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)があってもよく、例えば再生タイミングを処理するためにビデオデコーダ(510)の内部に別の追加のバッファメモリ(515)があり得る。受信機(531)が十分な帯域幅および可制御性の記憶/転送デバイスから、またはアイソシンクロナスネットワークからデータを受信しているとき、バッファメモリ(515)は不要な場合があり、または小さくすることができる。インターネットなどのベストエフォートパケットネットワークで使用するために、十分なサイズのバッファメモリ(515)が必要とされる場合があり、そのサイズは比較的大きくなり得る。そのようなバッファメモリは、適応サイズで実装されてもよく、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装されてもよい。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構築するためにパーサ(520)を含むことができる。それらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、潜在的に、図5に示すように、電子デバイス(530)の不可欠な部分である場合もそうでない場合もあるが、電子デバイス(530)に結合することができるディスプレイ(512)(例えば、表示画面)などのレンダリングデバイスを制御するための情報とを含む。レンダリングデバイスのための制御情報は、補足拡張情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)のパラメータセットフラグメント(図示せず)の形式であってもよい。パーサ(520)は、パーサ(520)によって受信されるコーディングされたビデオシーケンスを構文解析/エントロピーデコーディングし得る。コーディングされたビデオシーケンスのエントロピーコーディングは、ビデオコーディング技術または規格に従ったものとすることができ、可変長コーディング、ハフマンコーディング、文脈依存性ありまたはなしの算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、コーディングされたビデオシーケンスから、サブグループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内の画素のサブグループのうちの少なくとも1つのサブグループパラメータのセットを抽出し得る。サブグループには、ピクチャグループ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含めることができる。パーサ(520)はまた、コーディングされたビデオシーケンスから、変換係数(例えば、フーリエ変換係数)、量子化パラメータ値、動きベクトルなどの情報も抽出し得る。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受信されたビデオシーケンスに対してエントロピーデコーディング/構文解析動作を実施することができる。
シンボル(521)の再構築は、コーディングされたビデオピクチャまたはその部分のタイプ(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)、ならびに他の要因に応じて、複数の異なる処理ユニットまたは機能ユニットを含むことができる。含まれるユニットおよびユニットがどのように含まれるかは、パーサ(520)によってコーディングされたビデオシーケンスから構文解析されたサブグループ制御情報によって制御され得る。パーサ(520)と以下の複数の処理ユニットまたは機能ユニットとの間のそのようなサブグループ制御情報の流れは、簡潔にするために図示されていない。
すでに述べられた機能ブロック以外に、ビデオデコーダ(510)は、以下で説明されるように、概念的にいくつかの機能ユニットに細分することができる。商業的制約の下で動作する実際の実装形態では、これらの機能ユニットの多くは互いに密接に相互作用し、少なくとも部分的に、互いに統合され得る。しかしながら、開示された主題の様々な機能を明確に記載する目的で、以下の開示において機能ユニットへの概念的細分化が採用される。
第1のユニットは、スケーラ/逆変換ユニット(551)を含んでもよい。スケーラ/逆変換ユニット(551)は、量子化変換係数、ならびにどのタイプの逆変換を使用するかを示す情報、ブロックサイズ、量子化係数/パラメータ、量子化スケーリング行列などを含む制御情報を、パーサ(520)からシンボル(521)として受信し得る。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力することができるサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロック、すなわち、以前に再構築されたピクチャからの予測情報を使用しないが、現在のピクチャの以前に再構築された部分からの予測情報を使用することができるブロックに関係する場合がある。そのような予測情報は、イントラピクチャ予測ユニット(552)によって提供され得る。場合によっては、イントラピクチャ予測ユニット(552)は、すでに再構築され、現在のピクチャバッファ(558)に記憶されている周囲のブロックの情報を使用して、再構築中のブロックと同じサイズおよび形状のブロックを生成してもよい。現在のピクチャバッファ(558)は、例えば、部分的に再構築された現在のピクチャおよび/または完全に再構築された現在のピクチャをバッファリングする。アグリゲータ(555)は、いくつかの実装形態では、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加することができる。
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされ、潜在的に動き補償されたブロックに関連する可能性がある。そのような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、インターピクチャ予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルを、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加することができる(ユニット551の出力は、残差サンプルまたは残差信号と呼ばれ得る)。動き補償予測ユニット(553)がそこから予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えば、X成分、Y成分(シフト)、および参照ピクチャ成分(時間)を有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能な、動きベクトルによって制御され得る。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間を含んでもよく、また、動きベクトル予測メカニズムなどに関連付けられてもよい。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技法を受けることができる。ビデオ圧縮技術は、(コーディングされたビデオビットストリームとも呼ばれる)コーディングされたビデオシーケンスに含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能にされるインループフィルタ技術を含むことができるが、コーディングされたピクチャまたはコーディングされたビデオシーケンスの(デコーディング順序で)前の部分のデコーディング中に取得されたメタ情報に応答するだけでなく、以前に再構築およびループフィルタリングされたサンプル値に応答することもできる。以下でさらに詳細に説明するように、いくつかのタイプのループフィルタが、様々な順序でループフィルタユニット556の一部として含まれ得る。
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)に出力されるだけでなく、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶することもできるサンプルストリームであり得る。
特定のコーディングされたピクチャは、完全に再構築されると、将来のインターピクチャ予測のための参照ピクチャとして使用され得る。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構築され、コーディングされたピクチャが参照ピクチャとして(例えば、パーサ(520)によって)識別されると、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、未使用の現在のピクチャバッファは、次のコーディングされたピクチャの再構築を開始する前に再割り当てされ得る。
ビデオデコーダ(510)は、例えばITU-T勧告H.265などの規格で採用された所定のビデオ圧縮技術に従ってデコーディング動作を実施し得る。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されたプロファイルの両方に忠実であるという意味において、使用されているビデオ圧縮技術または規格によって指定された構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格において使用可能なすべてのツールから、そのプロファイルの下で使用することができる唯一のツールとして特定のツールを選択することができる。規格に準拠するために、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義される範囲内にあり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えば毎秒メガサンプルで測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)の仕様、およびコーディングされたビデオシーケンス内でシグナリングされるHRDバッファ管理用のメタデータによってさらに制限され得る。
いくつかの例示的な実施形態では、受信機(531)は、エンコーディングされたビデオと共に追加の(冗長な)データを受信し得る。追加のデータは、コーディングされたビデオシーケンスの一部として含まれてもよい。追加のデータは、ビデオデコーダ(510)によって、データを適切にデコーディングするために、かつ/または元のビデオデータをより正確に再構築するために使用され得る。追加のデータは、例えば、時間、空間、または信号対雑音比(SNR)の拡張層、冗長スライス、冗長ピクチャ、順方向誤り訂正コードなどの形式であり得る。
図6は、本開示の例示的な実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれ得る。電子デバイス(620)は、送信機(640)(例えば、送信回路)をさらに含み得る。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるべきビデオ画像を取り込み得るビデオソース(601)(図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信し得る。別の例では、ビデオソース(601)は、電子デバイス(620)の一部分として実装されてもよい。
ビデオソース(601)は、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、…)、任意の色空間(例えば、BT.601 YCrCb、RGB、XYZ…)、および任意の適切なサンプリング構造(例えば、YCrCb 4:2:0、YCrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形式で、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを提供することができる。メディアサービングシステムでは、ビデオソース(601)は、以前に準備されたビデオを記憶することが可能な記憶デバイスであり得る。ビデオ会議システムでは、ビデオソース(601)は、ビデオシーケンスとしてローカル画像情報を取り込むカメラであってもよい。ビデオデータは、順番に見たときに動きを与える複数の個々のピクチャまたは画像として提供され得る。ピクチャ自体は、画素の空間配列として編成されてもよく、各画素は、使用されているサンプリング構造、色空間などに応じて、1つまたは複数のサンプルを含むことができる。当業者であれば、画素とサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てている。
いくつかの例示的な実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、または用途によって必要とされる他の任意の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングされたビデオシーケンス(643)にコーディングおよび圧縮し得る。適切なコーディング速度を強制することが、コントローラ(650)の1つの機能を構成する。いくつかの実施形態では、コントローラ(650)は、以下で説明されるように、他の機能ユニットに機能的に結合され、他の機能ユニットを制御し得る。簡潔にするために、結合は図示されていない。コントローラ(650)によって設定されるパラメータには、レート制御関連のパラメータ(ピクチャスキップ、量子化器、レート歪み最適化技法のラムダ値など)、ピクチャサイズ、ピクチャグループ(GOP)レイアウト、最大動きベクトル検索範囲などが含まれ得る。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関連する他の適切な機能を有するように構成することができる。
いくつかの例示的な実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成されてもよい。過度に簡略化した説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングされるべき入力ピクチャと参照ピクチャとに基づいて、シンボルストリームなどのシンボルを生成することに関与する)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含み得る。デコーダ(633)は、組み込まれたデコーダ633がエントロピーコーディングなしでソースコーダ630によってコーディングされたビデオストリームを処理するとしても、シンボルを再構築して、(リモート)デコーダが作成することになるのと同様の方法でサンプルデータを作成する(開示された主題で考慮されるビデオ圧縮技術では、シンボルとコーディングされたビデオビットストリームとの間の任意の圧縮が可逆であり得るため)。再構築されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームのデコーディングは、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクトな結果をもたらすため、参照ピクチャメモリ(634)の内容も、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、デコーディング中に予測を使用するときにデコーダが「見る」のと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャ同期性のこの基本原理(および、例えばチャネル誤差が原因で同期性を維持することができない場合に結果として生じるドリフト)は、コーディング品質を向上させるために使用される。
「ローカル」デコーダ(633)の動作は、図5と併せて上記で詳細にすでに説明されている、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。図5も簡単に参照すると、しかしながら、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングが可逆であり得るため、バッファメモリ(515)およびパーサ(520)を含むビデオデコーダ(510)のエントロピーデコーディング部分は、エンコーダ内のローカルデコーダ(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)を介した送信の準備をすることができ、通信チャネル(660)は、エンコーディングされたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであってもよい。送信機(640)は、ビデオコーダ(603)からのコーディングされたビデオデータを、送信される他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージし得る。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理することができる。コーディング中、コントローラ(650)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技法に影響を及ぼす場合がある。例えば、ピクチャは、しばしば、以下のピクチャタイプのうちの1つとして割り当てられてもよい。
イントラピクチャ(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勧告H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を実施し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間および空間の冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実施することができる。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術または規格によって指定された構文に準拠し得る。
いくつかの例示的な実施形態では、送信機(640)は、エンコーディングされたビデオと共に追加のデータを送信し得る。ソースコーダ(630)は、コーディングされたビデオシーケンスの一部としてそのようなデータを含み得る。追加のデータは、時間/空間/SNR拡張層、冗長なピクチャおよびスライスなどの他の形式の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含んでもよい。
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)として取り込まれてもよい。イントラピクチャ予測(しばしばイントラ予測と略される)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の時間または他の相関を利用する。例えば、現在のピクチャと呼ばれる、エンコーディング/デコーディング中の特定のピクチャがブロックに分割され得る。現在のピクチャ内のブロックは、ビデオ内の以前にコーディングされたまだバッファリングされている参照ピクチャ内の参照ブロックと同様である場合、動きベクトルと呼ばれるベクトルによってコーディングされ得る。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3の次元を有することができる。
いくつかの例示的な実施形態では、双予測技法がインターピクチャ予測に使用され得る。そのような双予測技法によれば、第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用され、これらは両方ともビデオ内の現在のピクチャをデコーディング順序で進める(ただし、表示順序では、それぞれ過去または未来にあり得る)。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトル、および第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルによってコーディングされ得る。ブロックは、第1の参照ブロックと第2の参照ブロックの組み合わせによって協調して予測することができる。
さらに、マージモード技法が、インターピクチャ予測においてコーディング効率を改善するために使用されてもよい。
本開示のいくつかの例示的な実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実施される。例えば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、または16×16画素などの同じサイズを有し得る。一般に、CTUは、3つの並列のコーディングツリーブロック(CTB)、すなわち、1つのルマCTBおよび2つのクロマCTBを含み得る。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割され得る。例えば、64×64画素のCTUを、64×64画素の1つのCU、または32×32画素の4つのCUに分割することができる。32×32ブロックのうちの1つまたは複数の各々は、16×16画素の4つのCUにさらに分割され得る。いくつかの例示的な実施形態では、各CUは、インター予測タイプやイントラ予測タイプなどの様々な予測タイプの中からそのCUの予測タイプを決定するためにエンコーディング中に分析され得る。CUは、時間的および/または空間的予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割され得る。一般に、各PUは、1つのルマ予測ブロック(PB)および2つのクロマPBを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測動作は、予測ブロックの単位で実施される。CUのPU(または異なる色チャネルのPB)への分割は、様々な空間パターンで実施され得る。ルマPBまたはクロマPBは、例えば、8×8画素、16×16画素、8×16画素、16×8画素などといった、サンプルの値(例えば、ルマ値)の行列を含み得る。
図7は、本開示の別の例示的な実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオピクチャのシーケンス内の現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックをコーディングされたビデオシーケンスの一部であるコーディングされたピクチャにエンコーディングするように構成される。例示的なビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用することができる。
例えば、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロックについてのサンプル値の行列を受信する。次いでビデオエンコーダ(703)は、例えば、レート歪み最適化(RDO)を使用して、処理ブロックがそれを使用して最良にコーディングされるのは、イントラモードか、インターモードか、それとも双予測モードかを決定する。処理ブロックがイントラモードでコーディングされると決定された場合、ビデオエンコーダ(703)は、イントラ予測技法を使用して処理ブロックをコーディングされたピクチャにエンコーディングし、処理ブロックがインターモードまたは双予測モードでコーディングされると決定された場合、ビデオエンコーダ(703)は、それぞれインター予測技法または双予測技法を使用して、処理ブロックをコーディングされたピクチャにエンコーディングし得る。いくつかの例示的な実施形態では、インターピクチャ予測のサブモードとして、動きベクトルが予測子の外側のコーディングされた動きベクトル成分の恩恵を受けずに1つまたは複数の動きベクトル予測子から導出されるマージモードが使用され得る。いくつかの他の例示的な実施形態では、対象ブロックに適用可能な動きベクトル成分が存在し得る。したがって、ビデオエンコーダ(703)は、処理ブロックの予測モードを決定するために、モード決定モジュールなど、図7に明示的に示されていない構成要素を含んでもよい。
図7の例では、ビデオエンコーダ(703)は、図7の例示的な配置に示されたように互いに結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差計算器(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、そのブロックを参照ピクチャ内の1つまたは複数の参照ブロック(例えば、表示順序で前のピクチャ内および後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インターエンコーディング技法による冗長情報、動きベクトル、マージモード情報の記述)を生成し、任意の適切な技法を使用してインター予測情報に基づいてインター予測結果(例えば、予測されたブロック)を計算するように構成される。いくつかの例では、参照ピクチャは、(以下でさらに詳細に説明するように、図7の残差デコーダ728として示されている)図6の例示的なエンコーダ620に組み込まれたデコーディングユニット633を使用して、エンコーディングされたビデオ情報に基づいてデコーディングされた、デコーディングされた参照ピクチャである。
イントラエンコーダ(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)は、ビットストリームに様々な情報を含めるように構成される。例えば、エントロピーエンコーダ(725)は、汎用制御データ、選択された予測情報(例えば、イントラ予測情報やインター予測情報)、残差情報、および他の適切な情報をビットストリームに含めるように構成され得る。インターモードまたは双予測モードのいずれかのマージサブモードでブロックをコーディングするとき、残差情報は存在しなくてもよい。
図8は、本開示の別の実施形態による例示的なビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受信し、コーディングされたピクチャをデコーディングして再構築されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用することができる。
図8の例では、ビデオデコーダ(810)は、図8の例示的な配置に示されたように、互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構築モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャが構成される構文要素を表す特定のシンボルを再構築するように構成することができる。そのようなシンボルは、例えば、ブロックがコーディングされているモード(例えば、イントラモード、インターモード、双予測モード、マージサブモードまたは別のサブモード)、イントラデコーダ(872)またはインターデコーダ(880)によって予測に使用される特定のサンプルまたはメタデータを識別することができる予測情報(例えば、イントラ予測情報やインター予測情報)、例えば、量子化変換係数の形式の残差情報などを含むことができる。一例では、予測モードがインター予測モードまたは双予測モードである場合、インター予測情報がインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプである場合、イントラ予測情報がイントラデコーダ(872)に提供される。残差情報は、逆量子化を受けることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成されてもよい。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成されてもよい。
残差デコーダ(873)は、逆量子化を実施して逆量子化変換係数を抽出し、逆量子化変換係数を処理して、残差を周波数領域から空間領域に変換するように構成されてもよい。残差デコーダ(873)はまた、(量子化器パラメータ(QP)を含めるために)特定の制御情報を利用することができ、その情報は、エントロピーデコーダ(871)によって提供されてもよい(これは小さいデータ量の制御情報のみであり得るので、データパスは示されていない)。
再構築モジュール(874)は、空間領域において、残差デコーダ(873)による出力としての残差と、(場合によって、インター予測モジュールまたはイントラ予測モジュールによる出力としての)予測結果を組み合わせて、再構築されたビデオの一部としての再構築されたピクチャの一部を形成する再構築されたブロックを形成するように構成され得る。視覚的品質を改善するために、デブロッキング動作などの他の適切な動作が実施されてもよいことに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技法を使用して実装することができることに留意されたい。いくつかの例示的な実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実装することができる。別の実施形態では、ビデオエンコーダ(403)、(603)、および(603)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実装することができる。
コーディングおよびデコーディングのためのブロック分割に目を向けると、一般的な分割は、ベースブロックから開始することができ、事前定義されたルールセット、特定のパターン、分割ツリー、または任意の分割構造もしくは方式に従うことができる。分割は、階層的かつ再帰的であってもよい。以下に記載される例示的な分割手順もしくは他の手順、またはそれらの組み合わせのいずれかに従ってベースブロックを分離または分割した後に、パーティションまたはコーディングブロックの最終セットが取得されてもよい。これらのパーティションの各々は、分割階層内の様々な分割レベルのうちの1つにあってもよく、様々な形状のパーティションであってもよい。パーティションの各々は、コーディングブロック(CB)と呼ばれる場合がある。以下にさらに記載される様々な例示的な分割実装形態では、結果として得られる各CBは、許容されるサイズおよび分割レベルのいずれかのCBであってもよい。そのようなパーティションは、そのためのいくつかの基本的なコーディング/デコーディング決定が行われ得、コーディング/デコーディングパラメータが最適化され、決定され、エンコーディングされたビデオビットストリームにおいてシグナリングされ得るユニットを形成し得るので、コーディングブロックと呼ばれる。最終パーティションにおける最高または最深のレベルは、コーディングブロック分割ツリー構造の深度を表す。コーディングブロックは、ルマコーディングブロックまたはクロマコーディングブロックであってもよい。各色のCBツリー構造は、コーディングブロックツリー(CBT)と呼ばれる場合がある。
すべての色チャネルのコーディングブロックは、まとめてコーディングユニット(CU)と呼ばれる場合がある。すべての色チャネルの階層構造は、まとめてコーディングツリーユニット(CTU)と呼ばれる場合がある。CTU内の様々な色チャネルの分割パターンまたは分割構造は、同じであってもなくてもよい。
いくつかの実装形態では、ルマチャネルおよびクロマチャネルに使用される分割ツリー方式または構造は、同じである必要はなくてもよい。言い換えれば、ルマチャネルおよびクロマチャネルは、別々のコーディングツリー構造またはパターンを有してもよい。さらに、ルマチャネルおよびクロマチャネルが同じコーディング分割ツリー構造を使用するか、異なるコーディング分割ツリー構造を使用するか、および使用されるべき実際のコーディング分割ツリー構造は、コーディングされているスライスがPスライスか、Bスライスか、Iスライスかに依存する場合がある。例えば、Iスライスの場合、クロマチャネルおよびルマチャネルは、別々のコーディング分割ツリー構造またはコーディング分割ツリー構造モードを有してもよいが、PスライスまたはBスライスの場合、ルマチャネルおよびクロマチャネルは、同じコーディング分割ツリー方式を共有してもよい。別々のコーディング分割ツリー構造またはモードが適用されるとき、ルマチャネルは、1つのコーディング分割ツリー構造によってCBに分割されてもよく、クロマチャネルは、別のコーディング分割ツリー構造によってクロマCBに分割されてもよい。
いくつかの例示的な実装形態では、所定の分割パターンがベースブロックに適用されてもよい。図9に示すように、例示的な4方向分割ツリーは、第1の事前定義されたレベル(例えば、ベースブロックサイズとして、64×64ブロックレベルまたは他のサイズ)から開始してもよく、ベースブロックは、事前定義された最下位レベル(例えば、4×4レベル)まで階層的に分割されてもよい。例えば、ベースブロックは、902、904、906、および908によって示された4つの事前定義された分割オプションまたはパターンに従うことができ、Rとして指定されたパーティションは、図9に示された同じ分割オプションが最下位レベル(例えば、4×4レベル)まで下位スケールで繰り返され得るという点で、再帰分割が可能である。いくつかの実装形態では、図9の分割方式に追加の制限が加えられてもよい。図9の実装形態では、長方形パーティション(例えば、1:2/2:1の長方形パーティション)は、許容され得るが、再帰的であることは許容され得ず、一方、正方形パーティションは再帰的であることが許容される。必要に応じて、再帰による図9の後に続く分割により、コーディングブロックの最終セットが生成される。ルートノードまたはルートブロックからの分割深度を示すために、コーディングツリー深度がさらに定義されてもよい。例えば、64×64ブロックのルートノードまたはルートブロックに対するコーディングツリー深度は0に設定されてもよく、ルートブロックが図9に従ってさらに1回分割された後、コーディングツリー深度は1だけ増加する。64×64のベースブロックから4×4の最小パーティションまでの最大または最深のレベルは、上記の方式では(レベル0から開始して)4である。そのような分割方式が、色チャネルのうちの1つまたは複数に適用されてもよい。各色チャネルは、図9の方式に従って独立して分割されてもよい(例えば、各階層レベルにおける色チャネルの各々に対して、事前定義されたパターンの中の分割パターンまたはオプションが独立して決定されてもよい)。あるいは、2つ以上の色チャネルが図9の同じ階層パターンツリーを共有してもよい(例えば、各階層レベルにおける2つ以上の色チャネルに対して、事前定義されたパターンの中の同じ分割パターンまたはオプションが選択されてもよい)。
図10は、再帰分割が分割ツリーを形成することを可能にする別の例示的な事前定義された分割パターンを示す。図10に示すように、例示的な10通りの分割構造またはパターンが事前定義されてもよい。ルートブロックは、事前定義されたレベルから(例えば、128×128レベルまたは64×64レベルのベースブロックから)開始することができる。図10の例示的な分割構造は、様々な2:1/1:2および4:1/1:4の長方形パーティションを含む。図10の2列目の1002、1004、1006、および1008で示される3つのサブパーティションを有するパーティションタイプは、「T型」パーティションと呼ばれ得る。「T型」パーティション1002、1004、1006、および1008は、左T型、上T型、右T型、および下T型と呼ばれる場合がある。いくつかの例示的な実装形態では、図10の長方形パーティションのどれもこれ以上細分されることは可能でない。ルートノードまたはルートブロックからの分割深度を示すために、コーディングツリー深度がさらに定義されてもよい。例えば、128×128ブロックのルートノードまたはルートブロックに対するコーディングツリー深度は0に設定されてもよく、ルートブロックが図10に従ってさらに1回分割された後、コーディングツリー深度は1だけ増加する。いくつかの実装形態では、1010のすべて正方形パーティションのみが、図10のパターンの後に続く分割ツリーの次のレベルへの再帰分割を可能とすることができる。言い換えれば、再帰分割は、T型パターン1002、1004、1006、および1008内の正方形パーティションでは可能でない場合がある。必要に応じて、再帰による図10の後に続く分割手順により、コーディングブロックの最終セットが生成される。そのような方式が、色チャネルのうちの1つまたは複数に適用されてもよい。いくつかの実装形態では、8×8レベル未満のパーティションの使用に、より多くの柔軟性が加えられてもよい。例えば、場合によっては、2×2のクロマインター予測が使用されてもよい。
コーディングブロック分割についてのいくつかの他の例示的な実装形態では、ベースブロックまたは中間ブロックを四分木パーティションに分割するために四分木構造が使用されてもよい。そのような四分木分割は、任意の正方形パーティションに階層的かつ再帰的に適用されてもよい。ベースブロックまたは中間ブロックまたはパーティションがさらに四分木分割されるかどうかは、ベースブロックまたは中間ブロック/パーティションの様々なローカル特性に適合してもよい。ピクチャ境界における四分木分割が、さらに適合してもよい。例えば、サイズがピクチャ境界に収まるまでブロックが四分木分割を続けるように、ピクチャ境界で暗黙の四分木分割が実施されてもよい。
いくつかの他の例示的な実装形態では、ベースブロックからの階層二分割が使用されてもよい。そのような方式の場合、ベースブロックまたは中間レベルブロックは、2つのパーティションに分割されてもよい。二分割は、水平または垂直のいずれかであってもよい。例えば、水平二分割は、ベースブロックまたは中間ブロックを等しい左右のパーティションに分割することができる。同様に、垂直二分割は、ベースブロックまたは中間ブロックを等しい上下のパーティションに分割することができる。そのような二分割は、階層的かつ再帰的であってもよい。二分割方式を続けるべきかどうか、および方式がさらに続く場合、水平二分割が使用されるべきか、垂直二分割が使用されるべきかは、ベースブロックまたは中間ブロックの各々において決定されてもよい。いくつかの実装形態では、さらなる分割は、(一方または両方の次元の)事前定義された最低パーティションサイズで停止することができる。あるいは、ベースブロックから事前定義された分割レベルまたは深度に達すると、さらなる分割を停止することができる。いくつかの実装形態では、パーティションのアスペクト比は制限されてもよい。例えば、パーティションのアスペクト比は、1:4よりも小さく(または4:1よりも大きく)なくてもよい。そのため、4:1の垂直対水平アスペクト比を有する垂直ストリップパーティションは、各々が2:1の垂直対水平アスペクト比を有する上下のパーティションに垂直にさらに二分割され得るのみである。
さらにいくつかの他の例では、図13に示すように、ベースブロックまたは任意の中間ブロックを分割するために三分割方式が使用され得る。三元パターンは、図13の1302に示すように垂直に、または図13の1304に示すように水平に実装されてもよい。図13の例示的な分割比は、垂直または水平のいずれかで1:2:1として示されているが、他の比が事前定義されてもよい。いくつかの実装形態では、2つ以上の異なる比が事前定義されてもよい。そのような三分木分割が1つの連続するパーティション内のブロック中心に位置するオブジェクトを取り込むことが可能であるが、四分木および二分木が常にブロック中心に沿って分割しており、したがってオブジェクトを別々のパーティションに分割するという点で、そのような三分割方式は四分木または二分割構造を補完するために使用されてもよい。いくつかの実装形態では、例示的な三分木のパーティションの幅および高さは、さらなる変換を回避するために常に2の累乗である。
上記の分割方式は、異なる分割レベルで任意の方法で組み合わされ得る。一例として、上述された四分木および二分割方式は、ベースブロックを四分木-二分木(QTBT)構造に分割するために組み合わされてもよい。そのような方式では、ベースブロックまたは中間ブロック/パーティションは、指定された場合、事前定義された条件のセットに従う、四分木分割または二分割のいずれかであってもよい。特定の例が、図14に示されている。図14の例では、ベースブロックは、1402、1404、1406、および1408によって示すように、最初に4つのパーティションに四分木分割される。その後、結果として得られたパーティションの各々は、(1408などの)4つのさらなるパーティションに四分木分割されるか、または次のレベルで(例えば、両方とも対称である1402もしくは1406などの水平もしくは垂直のいずれかの)2つのさらなるパーティションに二分割されるか、または(1404などの)分割されないかのいずれかである。二分割または四分木分割は、1410の全体的な例示的な分割パターンおよび1420の対応するツリー構造/表現によって示すように、正方形パーティションに対して再帰的に可能にされてもよく、実線は四分木分割を表し、破線は二分割を表す。二分割が水平か垂直かを示すために、二分割ノード(非リーフバイナリパーティション)ごとにフラグが使用されてもよい。例えば、1410の分割構造と一致する1420に示すように、フラグ「0」は水平二分割を表すことができ、フラグ「1」は垂直二分割を表すことができる。四分木分割パーティションの場合、四分木分割は常にブロックまたはパーティションを水平と垂直の両方に分割して等しいサイズの4つのサブブロック/パーティションを生成するので、分割タイプを示す必要はない。いくつかの実装形態では、フラグ「1」は水平二分割を表すことができ、フラグ「0」は垂直二分割を表すことができる。
QTBTのいくつかの例示的な実装形態では、四分木および二分割ルールセットは、以下の事前定義されたパラメータおよびそれに関連する対応する関数によって表されてもよい。
-CTUサイズ:四分木のルートノードサイズ(ベースブロックのサイズ)
-MinQTSize:最小許容四分木リーフノードサイズ
-MaxBTSize:最大許容二分木ルートノードサイズ
-MaxBTDepth:最大許容二分木深度
-MinBTSize:最小許容二分木リーフノードサイズ
QTBT分割構造のいくつかの例示的な実装形態では、CTUサイズは、クロマサンプルの2つの対応する64×64ブロックを有する128×128個のルマサンプルとして設定されてもよく(例示的なクロマサブサンプリングが考慮され使用される場合)、MinQTSizeは、16×16として設定されてもよく、MaxBTSizeは、64×64として設定されてもよく、MinBTSize(幅および高さの両方について)は、4×4として設定されてもよく、MaxBTDepthは、4として設定されてもよい。四分木分割は、四分木リーフノードを生成するために、最初にCTUに適用されてもよい。四分木リーフノードは、16×16のその最小許容サイズ(すなわち、MinQTSize)から128×128(すなわち、CTU size)までのサイズを有することができる。ノードが128×128である場合、サイズがMaxBTSize(すなわち、64×64)を超えるので、二分木によって最初に分割されることはない。そうでない場合、MaxBTSizeを超えないノードは、二分木によって分割される可能性がある。図14の例では、ベースブロックは、128×128である。ベースブロックは、事前定義されたルールセットに従って、四分木分割のみが可能である。ベースブロックは、0の分割深度を有する。結果として得られた4つのパーティションの各々は、MaxBTSizeを超えない64×64であり、レベル1でさらに四分木分割または二分木分割されてもよい。プロセスは続く。二分木深度がMaxBTDepth(すなわち、4)に達すると、それ以上の分割は考慮されなくてもよい。二分木ノードの幅がMinBTSize(すなわち、4)に等しいとき、それ以上の水平分割は考慮されなくてもよい。同様に、二分木ノードの高さがMinBTSizeに等しいとき、それ以上の垂直分割は考慮されない。
いくつかの例示的な実装形態では、上記のQTBT方式は、ルマおよびクロマが同じQTBT構造または別々のQTBT構造を有するための柔軟性をサポートするように構成されてもよい。例えば、PスライスおよびBスライスの場合、1つのCTU内のルマCTBおよびクロマCTBは同じQTBT構造を共有することができる。しかしながら、Iスライスの場合、ルマCTBはQTBT構造によってCBに分割されてもよく、クロマCTBは別のQTBT構造によってクロマCBに分割されてもよい。これは、CUがIスライス内の異なる色チャネルを参照するために使用されてもよく、例えば、Iスライスが、ルマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックから構成されてもよく、PスライスまたはBスライス内のCUが、3つの色成分すべてのコーディングブロックから構成されてもよいことを意味する。
いくつかの他の実装形態では、QTBT方式は、上述された三元方式で補完されてもよい。そのような実装形態は、マルチタイプツリー(MTT)構造と呼ばれる場合がある。例えば、ノードの二分割に加えて、図13の三分割パターンのうちの1つが選択されてもよい。いくつかの実装形態では、正方形ノードのみが三分割を受けることができる。三分割が水平であるか垂直であるかを示すために、追加のフラグが使用されてもよい。
QTBT実装形態および三分割によって補完されたQTBT実装形態などの2レベルツリーまたはマルチレベルツリーの設計は、主に複雑さの低減によって動機付けられてもよい。理論的には、ツリーをトラバースする複雑さはTDであり、ここで、Tは分割タイプの数を表し、Dはツリーの深度である。深度(D)を低減しながらマルチタイプ(T)を使用することによって、トレードオフが行われてもよい。
いくつかの実装形態では、CBはさらに分割されてもよい。例えば、CBは、コーディングプロセスおよびデコーディングプロセス中のイントラフレーム予測またはインターフレーム予測を目的として、複数の予測ブロック(PB)にさらに分割され得る。言い換えれば、CBは異なるサブパーティションにさらに分割されてもよく、そこで個々の予測決定/構成が行われてもよい。並行して、CBは、ビデオデータの変換または逆変換が実施されるレベルを記述する目的で、複数の変換ブロック(TB)にさらに分割されてもよい。CBのPBおよびTBへの分割方式は、同じである場合もそうでない場合もある。例えば、各分割方式は、例えば、ビデオデータの様々な特性に基づいて独自の手順を使用して実施され得る。PBおよびTBの分割方式は、いくつかの例示的な実装形態では独立していてもよい。PBおよびTBの分割方式および境界は、いくつかの他の例示的な実装形態では相関されていてもよい。いくつかの実装形態では、例えば、TBは、PB分割後に分割されてもよく、特に、各PBは、コーディングブロックの分割の後に続いて決定された後、次いで1つまたは複数のTBにさらに分割されてもよい。例えば、いくつかの実装形態では、PBは、1つ、2つ、4つ、または他の数のTBに分割され得る。
いくつかの実装形態では、ベースブロックをコーディングブロックに分割し、さらに予測ブロックおよび/または変換ブロックに分割するために、ルマチャネルおよびクロマチャネルは異なって処理されてもよい。例えば、いくつかの実装形態では、コーディングブロックの予測ブロックおよび/または変換ブロックへの分割は、ルマチャネルに対して許容されてもよいが、コーディングブロックの予測ブロックおよび/または変換ブロックへのそのような分割は、クロマチャネルに対して許容されない場合がある。そのような実装形態では、よって、ルマブロックの変換および/または予測は、コーディングブロックレベルでのみ実施され得る。別の例では、ルマチャネルおよびクロマチャネルの最小変換ブロックサイズが異なっていてもよく、例えば、ルマチャネルのコーディングブロックは、クロマチャネルよりも小さい変換ブロックおよび/または予測ブロックに分割されることが許容され得る。さらに別の例では、コーディングブロックの変換ブロックおよび/または予測ブロックへの分割の最大深度がルマチャネルとクロマチャネルとの間で異なっていてもよく、例えば、ルマチャネルのコーディングブロックは、クロマチャネルよりも深い変換ブロックおよび/または予測ブロックに分割されることが許容され得る。具体例として、ルマコーディングブロックは、最大2レベルだけ下がる再帰分割によって表すことができる複数のサイズの変換ブロックに分割されてもよく、正方形、2:1/1:2、および4:1/1:4などの変換ブロック形状、ならびに4×4から64×64の変換ブロックサイズが許容され得る。しかしながら、クロマブロックの場合、ルマブロックに指定された可能な最大の変換ブロックのみが許容されてもよい。
コーディングブロックをPBに分割するためのいくつかの例示的な実装形態では、PB分割の深度、形状、および/または他の特性は、PBがイントラコーディングされるかインターコーディングされるかに依存してもよい。
コーディングブロック(または予測ブロック)の変換ブロックへの分割は、四分木分割および事前定義されたパターン分割を含むがそれらに限定されない様々な例示的な方式で、再帰的または非再帰的に、コーディングブロックまたは予測ブロックの境界での変換ブロックをさらに考慮して実施されてもよい。一般に、結果として得られた変換ブロックは、異なる分割レベルにあってもよく、同じサイズでなくてもよく、形状が正方形である必要がなくてもよい(例えば、それらはいくつかの許容されたサイズおよびアスペクト比を有する長方形であり得る)。さらなる例は、図15、図16、および図17に関連して以下でさらに詳細に説明される。
しかしながら、いくつかの他の実装形態では、上記の分割方式のいずれかを介して取得されたCBは、予測および/または変換のための基本または最小のコーディングブロックとして使用されてもよい。言い換えれば、インター予測/イントラ予測を実施する目的で、かつ/または変換の目的で、これ以上の分割は実施されない。例えば、上記のQTBT方式から取得されたCBは、予測を実施するための単位としてそのまま使用されてもよい。具体的には、そのようなQTBT構造は、複数の分割タイプの概念を取り除く、すなわち、CU、PU、およびTUの分離を取り除き、上述したように、CU/CB分割形状についてのさらなる柔軟性をサポートする。そのようなQTBTブロック構造では、CU/CBは、正方形または長方形のいずれかの形状を有することができる。そのようなQTBTのリーフノードは、これ以上の分割なしに予測および変換処理のための単位として使用される。これは、CU、PU、およびTUがそのような例示的なQTBTコーディングブロック構造において同じブロックサイズを有することを意味する。
上記の様々なCB分割方式、ならびにPBおよび/またはTBへのCBのさらなる分割(PB/TB分割なしを含む)は、任意の方法で組み合わされ得る。以下の特定の実装形態は、非限定的な例として提供される。
コーディングブロックおよび変換ブロックの分割の具体的で例示的な実装形態が、以下に記載される。そのような例示的な実装形態では、ベースブロックは、再帰的四分木分割、または(図9および図10の分割パターンなどの)上述された事前定義された分割パターンを使用して、コーディングブロックに分割されてもよい。各レベルにおいて、特定のパーティションのさらなる四分木分割を続けるべきかどうかが、ローカルビデオデータ特性によって決定されてもよい。結果として得られたCBは、様々な四分木分割レベルにあり、様々なサイズのCBであってもよい。ピクチャエリアをインターピクチャ(時間)予測を使用してコーディングするか、イントラピクチャ(空間)予測を使用してコーディングするかの決定は、CBレベル(または、すべての3色チャネルの場合CUレベル)で行われてもよい。各CBは、事前定義されたPB分割タイプに従って、1つ、2つ、4つ、または他の数のPBにさらに分割されてもよい。1つのPB内部で、同じ予測プロセスが適用されてもよく、関連情報はPBベースでデコーダに送信されてもよい。PB分割タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後、CBは、CB用のコーディングツリーと同様の別の四分木構造に従ってTBに分割することができる。この特定の実装形態では、CBまたはTBは、正方形に限定されなくてもよい。さらにこの特定の例では、PBは、インター予測では正方形または長方形であってもよく、イントラ予測では正方形のみであってもよい。コーディングブロックは、例えば、4つの正方形のTBに分割されてもよい。各TBは、(四分木分割を使用して)再帰的に、残差四分木(RQT)と呼ばれるより小さいTBにさらに分割されてもよい。
ベースブロックをCB、PB、および/またはTBに分割するための別の例示的な実装形態が、以下でさらに記載される。例えば、図9または図10に示すタイプなどの複数のパーティションユニットタイプを使用するのではなく、二分割および三分割のセグメント化構造(例えば、QTBTまたは上述された三分割によるQTBT)を使用するネストされたマルチタイプツリーを有する四分木が使用されてもよい。CB、PB、およびTBの分離(すなわち、CBのPBおよび/またはTBへの分割、ならびにPBのTBへの分割)は、そのようなCBがさらなる分割を必要とする場合に、最大変換長には大きすぎるサイズを有するCBに必要なときを除き、断念されてもよい。この例示的な分割方式は、予測および変換が両方ともこれ以上の分割なしにCBレベルで実施され得るように、CB分割形状についてのさらなる柔軟性をサポートするように設計されてもよい。そのようなコーディングツリー構造では、CBは、正方形または長方形のいずれかの形状を有することができる。具体的には、コーディングツリーブロック(CTB)が最初に四分木構造によって分割されてもよい。次いで、四分木リーフノードが、ネストされたマルチタイプツリー構造によってさらに分割されてもよい。二分割または三分割を使用するネストされたマルチタイプツリー構造の一例が、図11に示されている。具体的には、図11の例示的なマルチタイプツリー構造は、垂直二分割(SPLIT_BT_VER)(1102)、水平二分割(SPLIT_BT_HOR)(1104)、垂直三分割(SPLIT_TT_VER)(1106)、および水平三分割(SPLIT_TT_HOR)(1108)と呼ばれる4つの分割タイプを含む。次いで、CBはマルチタイプツリーのリーフに対応する。この例示的な実装形態では、CBが最大変換長に対して大きすぎない限り、このセグメント化は、これ以上の分割なしに予測と変換の両方の処理に使用される。これは、ほとんどの場合、CB、PB、およびTBが、ネストされたマルチタイプツリーコーディングブロック構造を有する四分木において同じブロックサイズを有することを意味する。例外は、サポートされる最大変換長がCBの色成分の幅または高さよりも小さいときに発生する。いくつかの実装形態では、二分割または三分割に加えて、図11のネストされたパターンは、四分木分割をさらに含んでもよい。
1つのベースブロックに対する(四分木分割、二分割、および三分割のオプションを含む)ブロック分割のネストされたマルチタイプツリーコーディングブロック構造を有する四分木についての1つの具体例が図12に示されている。より詳細には、図12は、ベースブロック1200が4つの正方形パーティション1202、1204、1206、および1208に四分木分割されることを示す。さらなる分割のために図11のマルチタイプツリー構造および四分木をさらに使用する決定は、四分木分割されたパーティションの各々について行われる。図12の例では、パーティション1204は、これ以上分割されない。パーティション1202およびパーティション1208は、別の四分木分割を各々採用する。パーティション1202では、第2のレベルの四分木分割された左上、右上、左下、および右下のパーティションは、それぞれ、四分木、図11の水平二分割1104、非分割、および図11の水平三分割1108の第3のレベルの分割を採用する。パーティション1208は別の四分木分割を採用し、第2のレベルの四分木分割された左上、右上、左下、および右下のパーティションは、それぞれ、図11の垂直三分割1106、非分割、非分割、および図11の水平二分割1104の第3のレベルの分割を採用する。1208の第3のレベルの左上パーティションのサブパーティションのうちの2つは、それぞれ、図11の水平二分割1104および水平三分割1108に従ってさらに分割される。パーティション1206は、図11の垂直二分割1102の後に続く、2つのパーティションへの第2のレベルの分割パターンを採用し、2つのパーティションは図11の水平三分割1108および垂直二分割1102に従って第3のレベルでさらに分割される。図11の水平二分割1104に従って、それらのうちの1つに第4のレベルの分割がさらに適用される。
上記の具体例では、最大ルマ変換サイズは64×64であってもよく、サポートされる最大クロマ変換サイズは、ルマとは異なる、例えば、32×32であり得る。図12の上記の例示的なCBが、一般に、より小さいPBおよび/またはTBにこれ以上分割されない場合でも、ルマコーディングブロックまたはクロマコーディングブロックの幅または高さが最大変換幅または最大変換高さよりも大きいとき、ルマコーディングブロックまたはクロマコーディングブロックは、水平方向および/または垂直方向の変換サイズ制限を満たすように、その方向に自動的に分割されてもよい。
上記のベースブロックのCBへの分割についての具体例では、上述されたように、コーディングツリー方式は、ルマおよびクロマが別々のブロックツリー構造を有するための能力をサポートすることができる。例えば、PスライスおよびBスライスの場合、1つのCTU内のルマCTBおよびクロマCTBは、同じコーディングツリー構造を共有することができる。Iスライスの場合、例えば、ルマおよびクロマは、別々のコーディングブロックツリー構造を有してもよい。別々のブロックツリー構造が適用されるとき、ルマCTBは1つのコーディングツリー構造によってルマCBに分割されてもよく、クロマCTBは別のコーディングツリー構造によってクロマCBに分割される。これは、Iスライス内のCUがルマ成分のコーディングブロックまたは2つのクロマ成分のコーディングブロックから構成されてもよく、PスライスまたはBスライス内のCUが常に、ビデオがモノクロでない限り3つの色成分すべてのコーディングブロックから構成されることを意味する。
コーディングブロックが複数の変換ブロックにさらに分割されるとき、その中の変換ブロックは、様々な順序または走査方法に従ってビットストリーム内で順序付けされてもよい。コーディングブロックまたは予測ブロックを変換ブロックに分割するための例示的な実装形態、および変換ブロックのコーディング順序が、以下でさらに詳細に記載される。いくつかの例示的な実装形態では、上述されたように、変換分割は、例えば、4×4から64×64までの範囲の変換ブロックサイズを有する、複数の形状、例えば、1:1(正方形)、1:2/2:1、および1:4/4:1の変換ブロックをサポートすることができる。いくつかの実装形態では、コーディングブロックが64×64よりも小さいか等しい場合、変換ブロック分割は、クロマブロックの場合、変換ブロックサイズがコーディングブロックサイズと同一であるように、ルマ成分にのみ適用されてもよい。そうではなく、コーディングブロックの幅または高さが64よりも大きい場合、ルマコーディングブロックとクロマコーディングブロックの両方は、それぞれ、min(W,64)×min(H,64)およびmin(W,32)×min(H,32)の倍数の変換ブロックに暗黙的に分割されてもよい。
変換ブロック分割のいくつかの例示的な実装形態では、イントラコーディングされたブロックとインターコーディングされたブロックの両方について、コーディングブロックが、事前定義された数のレベル(例えば、2レベル)までの分割深度を有する複数の変換ブロックにさらに分割され得る。変換ブロックの分割深度およびサイズは、関連してもよい。いくつかの例示的な実装形態の場合、現在の深度の変換サイズから次の深度の変換サイズへのマッピングが以下で表1に示されている。
表1の例示的なマッピングに基づいて、1:1正方形ブロックの場合、次のレベルの変換分割は、4つの1:1正方形サブ変換ブロックを作成することができる。変換分割は、例えば、4×4で停止してもよい。したがって、4×4の現在の深度の変換サイズは、次の深度の4×4の同じサイズに対応する。表1の例では、1:2/2:1非正方形ブロックの場合、次のレベルの変換分割は2つの1:1正方形サブ変換ブロックを作成することができるが、1:4/4:1非正方形ブロックの場合、次のレベルの変換分割は2つの1:2/2:1サブ変換ブロックを作成することができる。
いくつかの例示的な実装形態では、イントラコーディングされたブロックのルマ成分に対して、変換ブロック分割に関してさらなる制限が適用され得る。例えば、変換分割のレベルごとに、すべてのサブ変換ブロックは、等しいサイズを有するように制限されてもよい。例えば、32×16のコーディングブロックの場合、レベル1の変換分割は、2つの16×16のサブ変換ブロックを作成し、レベル2の変換分割は、8つの8×8のサブ変換ブロックを作成する。言い換えれば、変換ユニットを等しいサイズに保つために、すべての第1のレベルのサブブロックに第2のレベルの分割が適用されなければならない。表1に従ってイントラコーディングされた正方形ブロックに対する変換ブロック分割の一例が、矢印によって示されたコーディング順序と共に図15に示されている。具体的には、1502は、正方形コーディングブロックを示す。表1による4つの等しいサイズの変換ブロックへの第1のレベルの分割が、矢印によって示されたコーディング順序と共に1504に示されている。表1によるすべての第1のレベルの等しいサイズのブロックの16個の等しいサイズの変換ブロックへの第2のレベルの分割が、矢印によって示されたコーディング順序と共に1506に示されている。
いくつかの例示的な実装形態では、インターコーディングされたブロックのルマ成分に対して、イントラコーディングに対する上記の制限が適用されない場合がある。例えば、第1のレベルの変換分割の後に、サブ変換ブロックのいずれか1つが、もう1つのレベルでさらに独立して分割され得る。したがって、結果として得られた変換ブロックは、同じサイズのブロックであってもなくてもよい。インターコーディングされたブロックのそれらのコーディング順序による変換ロックへの例示的な分割が、図16に示されている。図16の例では、インターコーディングされたブロック1602は、表1に従って2つのレベルで変換ブロックに分割される。第1のレベルで、インターコーディングされたブロックは、等しいサイズの4つの変換ブロックに分割される。次いで、4つの変換ブロックのうちの(それらのすべてではない)1つのみが4つのサブ変換ブロックにさらに分割され、1604によって示すように、2つの異なるサイズを有する合計7つの変換ブロックがもたらされる。これらの7つの変換ブロックの例示的なコーディング順序が、図16の1604に矢印によって示されている。
いくつかの例示的な実装形態では、クロマ成分の場合、変換ブロックに対する何らかのさらなる制限が適用されてもよい。例えば、クロマ成分の場合、変換ブロックサイズは、コーディングブロックサイズと同じ大きさであり得るが、事前定義されたサイズ、例えば、8×8よりも小さくすることはできない。
いくつかの他の例示的な実装形態では、幅(W)または高さ(H)のいずれかが64よりも大きいコーディングブロックの場合、ルマコーディングブロックとクロマコーディングブロックの両方は、それぞれ、min(W,64)×min(H,64)およびmin(W,32)×min(H,32)の倍数の変換ユニットに暗黙的に分割されてもよい。ここで、本開示では、「min(a,b)」は、aとbとの間で小さい方の値を返すことができる。
図17は、コーディングブロックまたは予測ブロックを変換ブロックに分割するための別の代替の例示的な方式をさらに示す。図17に示すように、再帰変換分割を使用する代わりに、コーディングブロックの変換タイプに従って、事前定義された分割タイプのセットがコーディングブロックに適用されてもよい。図17に示す特定の例では、6つの例示的な分割タイプのうちの1つが、コーディングブロックを様々な数の変換ブロックに分割するために適用されてもよい。変換ブロック分割を生成するそのような方式は、コーディングブロックまたは予測ブロックのいずれかに適用されてもよい。
より詳細には、図17の分割方式は、任意の所与の変換タイプ(変換タイプは、例えば、ADSTなどのプライマリ変換のタイプを指す)に対して最大6つの例示的な分割タイプを提供する。この方式では、すべてのコーディングブロックまたは予測ブロックは、例えば、レート歪みコストに基づいて変換分割タイプが割り当てられてもよい。一例では、コーディングブロックまたは予測ブロックに割り当てられる変換分割タイプは、コーディングブロックまたは予測ブロックの変換タイプに基づいて決定されてもよい。図17に例示された6つの変換分割タイプによって示すように、特定の変換分割タイプが、変換ブロックの分割サイズおよびパターンに対応することができる。様々な変換タイプと様々な変換分割タイプとの間の対応関係が、事前定義されてもよい。一例が以下に示されており、大文字のラベルは、レート歪みコストに基づいてコーディングブロックまたは予測ブロックに割り当てられ得る変換分割タイプを示している。
・PARTITION_NONE:ブロックサイズに等しい変換サイズを割り当てる。
・PARTITION_SPLIT:ブロックサイズの1/2の幅およびブロックサイズの1/2の高さの変換サイズを割り当てる。
・PARTITION_HORZ:ブロックサイズと同じ幅およびブロックサイズの1/2の高さの変換サイズを割り当てる。
・PARTITION_VERT:ブロックサイズの1/2の幅およびブロックサイズと同じ高さの変換サイズを割り当てる。
・PARTITION_HORZ4:ブロックサイズと同じ幅およびブロックサイズの1/4の高さの変換サイズを割り当てる。
・PARTITION_VERT4:ブロックサイズの1/4の幅およびブロックサイズと同じ高さの変換サイズを割り当てる。
上記の例では、図17に示す変換分割タイプは、すべて分割された変換ブロックについての均一な変換サイズを含む。これは限定ではなく単なる例である。いくつかの他の実装形態では、特定の分割タイプ(またはパターン)における分割された変換ブロックに混合変換ブロックサイズが使用されてもよい。
上記の分割方式のいずれかから取得されたPB(または、予測ブロックにさらに分割されていない場合はPBとも呼ばれるCB)は、イントラ予測またはインター予測のいずれかを介してコーディングのための個々のブロックになり得る。現在のPBにおけるインター予測のために、現在のブロックと予測ブロックとの間の残差が生成され、コーディングされ、コーディングされたビットストリームに含まれ得る。
インター予測は、例えば、単一参照モードまたは複合参照モードで実施され得る。いくつかの実装形態では、現在のブロックがインターコーディングされており、スキップされないかどうかを示すために、スキップフラグが最初に現在のブロックのビットストリームに(またはより高いレベルで)含まれ得る。現在のブロックがインターコーディングされている場合、現在のブロックの予測に単一参照モードが使用されているか複合参照モードが使用されているかを示す信号として、別のフラグがビットストリームにさらに含まれ得る。単一参照モードの場合、現在のブロックの予測ブロックを生成するために1つの参照ブロックが使用され得る。複合参照モードの場合、例えば、加重平均によって予測ブロックを生成するために2つ以上の参照ブロックが使用され得る。複合参照モードは、複数参照モード、2参照モード、または多重参照モードと呼ばれる場合がある。1つまたは複数の参照ブロックは、1つまたは複数の参照フレームインデックスを使用して、さらに、参照ブロックと、例えば、水平および垂直画素内の位置における現在のブロックとの間のシフトを示す対応する1つまたは複数の動きベクトルを使用して識別され得る。例えば、現在のブロックのインター予測ブロックは、単一参照モードの予測ブロックとして参照フレーム内の1つの動きベクトルによって識別される単一参照ブロックから生成され得るが、複合参照モードの場合、予測ブロックは、2つの参照フレームインデックスおよび2つの対応する動きベクトルによって示される2つの参照フレーム内の2つの参照ブロックの加重平均によって生成され得る。動きベクトルは、様々な方法でコーディングされ、ビットストリームに含まれ得る。
いくつかの実装形態では、エンコーディングまたはデコーディングシステムは、デコーディングされたピクチャバッファ(DPB)を維持することができる。いくつかの画像/ピクチャは、(デコーディングシステムにおいて)表示されるのを待つDPBにおいて維持されてもよく、DPBにおけるいくつかの画像/ピクチャは、(デコーディングシステムまたはエンコーディングシステムにおいて)インター予測を可能にするための参照フレームとして使用されてもよい。いくつかの実装形態では、DPB内の参照フレームは、エンコーディングまたはデコーディングされている現在の画像の短期参照または長期参照のいずれかとしてタグ付けされ得る。例えば、短期参照フレームは、現在のフレームまたは現在のフレームに最も近い事前定義された数(例えば、2つ)の後続のビデオフレーム内のブロックのインター予測に使用されるフレームをデコーディング順序に含むことができる。長期参照フレームは、デコーディングの順序で現在のフレームから事前定義された数のフレームを超えるフレーム内の画像ブロックを予測するために使用することができるDPB内のフレームを含むことができる。短期および長期参照フレームのためのこのようなタグに関する情報は、参照ピクチャセット(RPS)と称され、エンコーディングされたビットストリームにおける各フレームのヘッダに追加され得る。エンコーディングされたビデオストリーム内の各フレームは、ピクチャ順序カウンタ(POC)によって識別されることができ、これは、絶対的な方法で、または例えば、Iフレームから開始するピクチャグループに関連して、再生シーケンスに従って番号付けされる。
いくつかの例示的な実装形態では、インター予測のための短期および長期参照フレームの識別を含む1つまたは複数の参照ピクチャリストが、RPS内の情報に基づいて形成され得る。例えば、単一のピクチャ参照リストは、L0参照(または参照リスト0)として表記される単方向インター予測のために形成されてもよく、2つのピクチャ参照リストは、2つの予測方向の各々についてL0(または参照リスト0)およびL1(または参照リスト1)として表記される双方向インター予測のために形成されてもよい。L0リストおよびL1リストに含まれる参照フレームは、様々な所定の方法で順序付けられてもよい。L0リストおよびL1リストの長さは、ビデオビットストリームにおいてシグナリングされ得る。単方向インター予測は、複合予測モードでの加重平均による予測ブロックの生成のための複数の参照が予測対象のブロックの同じ側にある場合、単一参照モードまたは複合参照モードのいずれかであり得る。双方向インター予測は、双方向インター予測が少なくとも2つの参照ブロックを含むという点で、複合モードのみであり得る。
適応ループフィルタ
多用途ビデオコーディングでは、ブロックベースのフィルタ適応を有する適応ループフィルタ(ALF)が適用される。ルマ成分に対して、各4×4のブロックに、局所的な勾配の方向および動きに基づいて、多くのフィルタから1つが選択される。一例では、25個のフィルタから選択することができる。
図18は、例示的な適応ループフィルタ(ALF)形状を示す。具体的には、図18は、2つのダイヤモンドフィルタ形状を示している。ルマ成分には7×7のダイヤモンド形状が適用され、クロマ成分には5×5のダイヤモンド形状が適用される。
ブロック分類は、以下のように異なる例について計算することができる。ルマ成分に対して、4×4の各ブロックは25クラスのうちの1つに分類される。分類指標インデックスCは、その方向性Dと動きの量子化値
に基づいて、以下のように導出される。
Dおよび
を計算するために、最初に1次元ラプラシアンを使用して、水平、垂直、および2つの対角方向の勾配を計算する。
ここで、インデックスiおよびjは、4×4ブロック内の左上のサンプルの座標を示し、R(i、j)は、座標(i、j)における再構築されたサンプルを示す。
ブロック分類の複雑さを低減するために、サブサンプリングされた1次元ラプラシアン計算が適用され得る。図19aから図19dに示すように、同じサブサンプリングされた位置は、すべての方向の勾配計算に使用することができる。図19aは、垂直勾配についてのラプラシアン計算におけるサブサンプリングされた位置を示す。図19bは、水平勾配についてのラプラシアン計算におけるサブサンプリングされた位置を示す。図19cは、対角勾配についてのラプラシアン計算におけるサブサンプリングされた位置を示す。図19dは、別の対角勾配についてのラプラシアン計算におけるサブサンプリングされた位置を示す。
次に、水平方向および垂直方向の勾配のDの最大値および最小値を次のように設定する。
2つの対角方向の勾配の最大値および最小値を次のように設定する。
方向性Dの値を導出するために、これらの値を互いに2つの閾値t1およびt2と比較する。
ステップ1.
と
の両方が真である場合、Dは0に設定される。
ステップ2.
の場合、ステップ3から続行し、それ以外の場合、ステップ4から続行する。
ステップ3.
の場合、Dは2に設定される。それ以外の場合、Dは1に設定される。
ステップ4.
の場合、Dは4に設定され、それ以外の場合、Dは3に設定される。
動き値Aは次のように計算される。
さらにAは0~4の範囲(両端を含む)で量子化され、その量子化値は
で表される。ピクチャ内のクロマ成分については、分類方法は適用されない。言い換えれば、ALF係数の単一のセットは各クロマ成分に適用され得る。
フィルタ係数およびクリッピング値の幾何学的変換が存在し得る。各4×4のルマブロックをフィルタリングする前に、そのブロックに対して計算された勾配値に応じて、回転、または対角および垂直方向フリップなどの幾何学的変換がフィルタ係数f(k、l)および対応するフィルタクリッピング値c(k、l)に適用され得る。これは、フィルタ支持領域内のサンプルにこれらの変換を適用することに相当し得る。これは、それらの方向性を整列させることによって、ALFが適用される異なるブロックをより均一にすることができる。3つの幾何学的変換は、対角、垂直方向フリップ、および回転を含むことができる。
対角:f
D(k、l)=f(l、k)、c
D(k、l)=c(l、k)、 (9)
垂直方向フリップ:f
V(k、l)=f(k、K-l-1)、c
V(k、l)=c(k、K-l-1) (10)
回転:f
R(k、l)=f(K-l-1、k)、c
R(k、l)=c(K-l-1、k) (11)
ここで、Kはフィルタのサイズ、0≦k、l≦K-1は係数の座標で、位置(0、0)が左上コーナ、位置(K-1、K-1)が右下コーナである。変換は、そのブロックに対して計算された勾配値に応じて、フィルタ係数f(k、l)およびクリッピング値c(k、l)に適用される。変換と4方向の4つの勾配との関係を以下の表2に要約する。
表2-1つのブロックに対して計算された勾配と変換のマッピング
VVCでは、ALFフィルタパラメータは適応パラメータセット(APS)でシグナリングされる。1つのAPSでは、ルマフィルタ係数およびクリッピング値インデックスのいくつかのセットを使用することができる。例えば、25セットのルマフィルタが存在してもよい。加えて、クロマフィルタ係数およびクリッピング値インデックスのいくつかのセットをシグナリングすることができる。一例では、シグナリングされ得る最大8セットのクロマフィルタ係数およびクリッピング値インデックスが存在し得る。ビットのオーバーヘッドを低減するために、ルマ成分の異なる分類のフィルタ係数をマージすることができる。スライスヘッダでは、現在のスライスに使用されるAPSのインデックスをシグナリングすることができる。ALFのシグナリングは、コーディングツリーユニット(CTU)ベースであってもよい。
APSからデコーディングされたクリッピング値インデックスは、ルマおよびクロマのクリッピング値の表を使用してクリッピング値を決定することができる。これらのクリッピング値は、内部ビット深度に依存し得る。より正確には、クリッピング値の表は以下の式によって取得され得る。
AlfClip={round(2
B-α*n)、n∈[0..N-1]} (12)
ここで、Bは内部ビット深度に等しく、αは事前定義された定数値であり2.35に等しく、Nは一実施形態においてVVCで許容されるクリッピング値の数であり4に等しい。表3は、式(12)の出力を示す。
1つのスライスヘッダの例では、最大7つのAPSインデックスをシグナリングし、現在のスライスに使用されるルマフィルタセットを指定することができる。フィルタリングプロセスは、コーディングツリーブロック(CTB)レベルでさらに制御することができる。ALFがルマCTBに適用されるかどうかを示すためにフラグをシグナリングすることができる。一例では、ルマCTBは、16個の固定フィルタセットとAPSからのフィルタセットとの中からフィルタセットを選択することができる。どのフィルタセットを適用するかを示すために、ルマCTBのフィルタセットインデックスがシグナリングされる。16個の固定フィルタセットは、エンコーダとデコーダの両方で事前定義され、ハードコーディングされ得る。クロマ成分には、現在のスライスで使用されているクロマフィルタセットを示すために、スライスヘッダでAPSインデックスがシグナリングされる。CTBレベルでは、APSに複数のクロマフィルタセットがある場合、各クロマCTBにフィルタインデックスがシグナリングされる。フィルタ係数は、128に等しいノルムで量子化することができる。乗算の複雑さを制限するために、非中心位置の係数値が-27~27-1の範囲(両端を含む)になり得るように、ビットストリーム適合性が適用される。中心位置係数は、ビットストリームではシグナリングされず、128に等しいとみなされる。
VVCの例では、クリッピングインデックスや値の構文およびセマンティクスは以下のように定義される:alf_luma_clip_idx[sfIdx][j]は、sfIdxで示されるシグナリングされたルマフィルタのj番目の係数を乗算する前に使用するクリッピング値のクリッピングインデックスを指定する。ビットストリーム適合性要件は、sfIdx=0..alf_luma_num_filters_signalled_minus1かつj=0..11であるときのalf_luma_clip_idx[sfIdx][j]の値が、0~3の範囲(両端を含む)であることである。filtIdx=0..NumAlfFilters-1かつj=0..11である、要素AlfClipL[adaptation_parameter_set_id][filtIdx][j]を有する、ルマフィルタクリッピング値AlfClipL[adaptation_parameter_set_id]は、ビット深度セットがビット深度Yと等しく、かつclipIdxセットがalf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j]と等しいことに応じて、表3に指定されたように導出される。alf_chroma_clip_idx[altIdx][j]は、使用するクリッピング値のクリッピングインデックスを指定し、その後、インデックスaltIdxの代替クロマフィルタのj番目の係数を乗算する。altIdx=0..alf_chroma_num_alt_filters_minus1、j=0..5でのalf_chroma_clip_idx[altIdx][j]の値を0~3の範囲(両端を含む)とすることが、ビットストリーム適合性要件である。要素AlfClipC[adaptation_parameter_set_id][altIdx][j]を有するクロマフィルタクリッピング値AlfClipC[adaptation_parameter_set_id][altIdx]は、altIdx=0..alf_chroma_num_alt_filters_minus1、j=0..5の要素の状態で、ビット深度セットをビット深度Cに等しく設定し、かつclipIdxをalf_chroma_clip_idx[altIdx][j]に等しく設定することに応じて、表3に指定されるように導出される。
フィルタリングプロセスは、以下の例で実施されてもよい。デコーダ側では、CTBに対してALFを有効にすると、CU内の各サンプルR(i、j)はフィルタリングされ、サンプル値R’(i、j)となる。
R’(i、j)=R(i、j)+((Σk≠0Σl≠0f(k、l)×K(R(i+k、j+l)-R(i、j)、c(k、l))+64)≫7) (13)
ここで、f(k、l)はデコーディング化されたフィルタ係数を表し、K(x、y)はクリッピング関数であり、c(k、l)はデコーディングされたクリッピングパラメータを表す。変数kおよびlは
から
の間で変化し、ここでLはフィルタ長を表す。クリッピング関数K(x、y)=min(y、max(-y、x))は、関数Clip3(-y、y、x)に対応する。このクリッピング関数を組み込むことにより、JVET-N0242で最初に提案されたように、このループフィルタリング方法は、非線形ALFとして知られる非線形プロセスになる。選択されたクリッピング値は、表3のクリッピング値のインデックスに対応するゴロムエンコーディング方式を使用して、「alf_data」構文要素にコーディングされる。このエンコーディング方式は、フィルタインデックスのエンコーディング方式と同じであってもよい。
ラインバッファ低減のための仮想境界フィルタリングプロセスが存在し得る。ALFのラインバッファ要件を低減するために、水平CTU境界付近のサンプルに対して修正されたブロック分類およびフィルタリングが適用され得る。したがって、図20に示すように、水平CTU境界を「N」個のサンプルでシフトすることによって仮想境界が線として定義され得る。図20は、仮想境界における修正されたブロック分類の一例を示す。この例では、Nは、ルマ成分については4に等しく、クロマ成分については2に等しい。
図20に図示したように、ルマ成分に対して修正されたブロック分類が適用される。仮想境界より上の4×4ブロックの1次元ラプラシアン勾配計算には、仮想境界より上のサンプルのみを使用する。同様に、仮想境界より下の4×4ブロックの1次元ラプラシアン勾配計算には、仮想境界より下のサンプルのみを使用する。動き値Aの量子化は、1次元ラプラシアン勾配計算で使用するサンプル数の低減を考慮してスケーリングされる。
図21は、仮想境界におけるルマ成分のための修正された適応ループフィルタリングの一例を示す。フィルタリング処理のために、仮想境界における対称パディング演算は、ルマ成分とクロマ成分の両方に使用され得る。図21に示すように、フィルタリングされているサンプルが仮想境界の下に位置する場合、仮想境界の上に位置する隣接するサンプルをパディングする。他方の対応するサンプルもまた、対称的にパディングされる。
図22は、最大コーディングユニット(LCU)整列ピクチャ四分木分割の一例を示す。コーディング効率を向上させるために、コーディングユニット同期ピクチャ四分木ベースの適応ループフィルタを使用することができる。ルマピクチャはいくつかのマルチレベル四分木パーティションに分割され得、各パーティション境界は最大コーディングユニット(LCU)の境界に整列される。各パーティションは、独自のフィルタリングプロセスを有し、フィルタユニット(FU)と呼ばれる場合がある。2パスエンコーディングフローは、以下を含むことができる。第1のパスでは、四分木分割パターンおよび各FUの最適なフィルタが決定される。決定プロセス中、FFDEによってフィルタリング歪みが推定される。決定された四分木分割パターンおよびすべてのFUの選択されたフィルタに従って、再構築されたピクチャがフィルタリングされる。第2のパスでは、CU同期ALFのオン/オフ制御を実施する。ALFのオン/オフ結果に従って、最初にフィルタリングされたピクチャが再構築されたピクチャによって部分的に復元される。
トップダウン分割戦略を採用して、レート歪み基準を使用することによってピクチャをマルチレベル四分木パーティションに分割することができる。各パーティションは、フィルタユニットと呼ばれる場合がある。分割プロセスは、四分木パーティションをLCUの境界に整列させる。FUのエンコーディング順序は、z走査順序に従う。例えば、図22では、ピクチャは10個のFUに分割され、エンコーディング順序はFU0、FU1、FU2、FU3、FU4、FU5、FU6、FU7、FU8、およびFU9である。
図23は、z次でエンコーディングされた四分木分割フラグの一例を示す。ピクチャ四分木分割パターンを示すために、分割フラグがエンコーディングされ、z次で送信される。図23は、図22に対応する四分木分割パターンを示す。各FUのフィルタは、レート歪み基準に基づいて2つのフィルタセットから選択される。第1のセットは、現在のFUに対して新たに導出された1/2対称の正方形および菱形のフィルタを有する。第2のセットは、時間遅延フィルタバッファに由来する。時間遅延フィルタバッファは、前のピクチャのFUについて以前に導出されたフィルタを記憶する。これら2つのセットの最小レート歪みコストを有するフィルタが、現在のFUに対して選択される。同様に、現在のFUが最小のFUではなく、4つの子FUにさらに分割することができる場合、4つの子FUのレート歪みコストが計算される。分割および分割なしの場合のレート歪みコストを再帰的に比較することにより、ピクチャ四分木分割パターンを決定することができる。一例では、最大四分木分割レベルは2であってもよく、これはFUの最大数が16であることを意味する。四分木分割決定中、最下位の四分木レベル(最小FU)の16個のFUのウィーナー係数を導出するための相関値を再利用することができる。残りのFUは、最下位の四分木レベルの16個のFUの相関から、それらのウィーナーフィルタを導出することができる。したがって、すべてのFUのフィルタ係数を導出するためのフレームバッファアクセスは1つしかない場合がある。四分木分割パターンが決定された後、フィルタリング歪みをさらに低減するために、CU同期ALFのオン/オフ制御を実施する。フィルタリング歪みと非フィルタリング歪みを比較することによって、リーフCUはそのローカル領域でALFのオン/オフを明示的に切り替えることができる。ALFのオン/オフ結果に従ってフィルタ係数を再設計することによって、コーディング効率をさらに向上させることができる。しかしながら、再設計プロセスは、追加のフレームバッファアクセスを必要とし得る。修正されたエンコーダ設計では、フレームバッファアクセス数を最小化するために、CU同期ALFのオン/オフ決定後の再設計プロセスは存在しない場合がある。
交差成分適応ループフィルタ(CC-ALF)
図24は、交差成分適応ループフィルタ(CC-ALF)配置の一例を示す。CC-ALFは、ルマサンプル値を利用して各クロマ成分を精緻化することができる。図24は、他のループフィルタに対するCC-ALFの配置を示している。
図25は、ダイヤモンド形状のフィルタの一例を示す。CC-ALFは、図25の線形ダイヤモンド形状のフィルタを各クロマ成分のルマチャネルに適用することによって動作することができる。フィルタ係数はAPSで送信され、一例では210倍にスケーリングされ、固定小数点表現のために丸められる。フィルタの適用は、可変ブロックサイズで制御され、サンプルの各ブロックに対して受信したコンテキストコーディングされたフラグによってシグナリングされる。ブロックサイズは、CC-ALF有効化フラグと共に、各クロマ成分のスライスレベルで受信される。一例では、以下のブロックサイズ(クロマサンプル単位)が16×16、32×32、64×64でサポートされた。
CC-ALFのための例示的な構文は、以下を含み得る。
CC-ALF関連構文のセマンティクスは、以下を含み得る。
alf_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しい場合、交差成分Cbフィルタがルマ位置(xCtb、yCtb)のCb色成分サンプルのブロックに適用されないことを示す。alf_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しくない場合、alf_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]番目の交差成分Cbフィルタがルマ位置(xCtb、yCtb)のCb色成分サンプルのブロックに適用されることを示す。
alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しい場合、交差成分Crフィルタがルマ位置(xCtb、yCtb)のCr色成分サンプルのブロックに適用されないことを示す。alf_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が0に等しくない場合、alf_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]番目の交差成分Crフィルタがルマ位置(xCtb、yCtb)のCr色成分サンプルのブロックに適用されることを示す。
クロマサンプリングフォーマット
図26は、ルマサンプルに対するクロマサンプルの例示的な位置を示す。図26は、chroma_format_idcが1(4:2:0クロマフォーマット)に等しく、chroma_sample_loc_type_top_fieldまたはchroma_sample_loc_type_bottom_fieldが変数ChromaLocTypeの値に等しい場合の左上クロマサンプルの示された相対位置を示している。左上の4:2:0クロマサンプル(中心に大きなドットを有する大きな四角として図示)によって表される領域は、左上のルマサンプル(中心に小さなドットを有する小さな正方形として図示)によって表される領域と相対的に示されている。隣接するルマサンプルによって表される領域は、中心に小さな陰影のある灰色のドットを有する小さな陰影のある灰色の正方形として示されている。
方向性強調特徴
インループ制約方向性強調フィルタ(CDEF)の1つの目的は、画像の詳細を保持しながらコーディングアーチファクトを除去することである。HEVCでは、サンプル適応オフセット(SAO)アルゴリズムは、異なるクラスの画素の信号オフセットを定義することによって同様の目的を達成することができる。SAOとは異なり、CDEFは非線形空間フィルタである。フィルタの設計は、容易にベクトル化可能であるように制約されており(すなわち、SIMD動作で実施可能である)、これは、メディアンフィルタおよびバイラテラルフィルタのような他の非線形フィルタには当てはまらない場合がある。CDEF設計は、以下の観察に由来する。コーディングされた画像のリンギングアーチファクトの量は、量子化ステップサイズにほぼ比例する傾向がある。詳細度は入力画像の性質であるが、量子化画像に保持される最小の詳細も量子化ステップサイズに比例する傾向がある。所与の量子化ステップサイズでは、リンギングの振幅は、一般に、詳細の振幅よりも小さい。
CDEFは、各ブロックの方向を識別し、次いで識別された方向に沿って、識別された方向から45度回転した方向に沿ってより少ない程度まで適応的にフィルタリングすることによって機能する。フィルタ強度は明示的にシグナリングされるため、ぼやけに対する高度な制御が可能である。フィルタ強度に対して効率的なエンコーダ検索が設計されている。CDEFは、2つの以前に提案されたインループフィルタに基づいており、組み合わされたフィルタは、新興のAV1コーデックに採用された。
図27は、方向検索の一例を示す。方向検索は、デブロッキングフィルタの直後に再構築された画素に対して動作する。これらの画素はデコーダで利用可能なので、方向はシグナリングを必要としない。検索は8×8ブロックで動作し、これは、非直線エッジを適切に処理するために十分に小さく、量子化画像に適用された場合に確実に方向を推定するのに十分に大きい。8×8領域に一定の方向性を持たせることで、フィルタのベクトル化が容易になる。各ブロックに対して、量子化されたブロックと最も近接する完全方向性ブロックとの間の差分二乗和(SSD)を最小化することで、ブロック内のパターンに最も一致する方向を決定する。完全方向性ブロックは、ある方向の線に沿ったすべての画素が同じ値を有するブロックである。図27は、8×8ブロックの方向検索の一例である。
非線形ローパス方向性フィルタが存在し得る。方向を識別する1つの理由は、方向エッジまたはパターンを維持しながら、その方向に沿ってフィルタタップを整列させリンギングを低減するためである。しかしながら、方向性フィルタリングだけでは、リンギングを十分に低減することができない場合がある。また、主方向に沿っていない画素にフィルタタップを使用することも望ましい場合がある。ぼやけのリスクを低減するために、これらの余分なタップはより控えめに扱われる。このため、CDEFは一次タップおよび二次タップを定義する。完全な2次元CDEFフィルタは、以下のように表現することができる。
ここで、Dは減衰パラメータ、S(p)およびS(s)はそれぞれ一次タップおよび二次タップの強度、round(・)はゼロから離れてタイを丸め、wkはフィルタの重み、f(d、S、D)はフィルタリングされた画素と隣接する各画素との間の差に作用する制約関数である。差が小さい場合、f(d、S、D)=dとなり、フィルタは線形フィルタのように挙動する。差が大きい場合、f(d、S、D)=0となり、フィルタタップを効果的に無視する。
ループ復元
一般にノイズを除去しエッジの品質を向上させるために、従来のデブロッキング動作以外に、デブロッキング後のビデオコーディングで使用するためのインループ復元方式のセットが提案されている。これらの方式は、適切なサイズタイルごとにフレーム内で切り替え可能である。説明した特定の方式は、分離可能な対称ウィーナーフィルタ、および部分空間投影を用いたデュアル自己ガイド(dual self-guided)フィルタに基づいている。コンテンツ統計はフレーム内で実質的に変化し得るので、これらのツールは、フレームの異なる領域において異なるツールがトリガされ得る切り替え可能なフレームワーク内に統合される。
復元ツールとして使用される分離可能な対称ウィーナーフィルタが存在し得る。劣化したフレームのすべての画素は、その周りのw×wウィンドウ内の画素の非因果フィルタリングバージョンとして再構築することができ、ここでw=2r+1は整数rに対して奇数である。2次元フィルタタップが列ベクトル化形態のw2×1要素ベクトルFによって表される場合、直接的なLMMSE最適化によって、F=H-1Mによって与えられるフィルタパラメータが導かれる。ここで、H=E[XXT]はxの自己共分散であり、画素の周りのw×wのウィンドウ中のw2のサンプルの列方向にベクトル化したバージョンであり、M=E[YXT]は、推定されるべき、xとスカラソースサンプルyの相互相関である。エンコーダは、デブロッキングされたフレームとソースとの実現からHおよびMを推定し、得られたフィルタFをデコーダに送信することができる。しかしながら、そうすると、w2個のタップを送信する際にかなりのビットレートコストを招くだけでなく、分離不可能なフィルタリングよってデコーディングが法外に複雑になる。したがって、Fの性質にいくつかの追加の制約が課される。第一に、Fは分離可能であるように制約され、フィルタリングは分離可能な水平方向および垂直方向のwタップ畳み込みとして実施することができる。第二に、水平フィルタおよび垂直フィルタの各々は対称になるように制約される。第三に、水平フィルタ係数と垂直フィルタ係数の両方の和が1になると仮定する。
画像フィルタリングのための部分空間投影を用いたデュアル自己ガイドフィルタリングが存在してもよく、ここでローカル線形モデルは以下である。
y=Fx+G (15)
上式は、フィルタリングされていないサンプルxから、フィルタリングされた出力yを計算するために使用される。ここで、FおよびGは、劣化した画像およびフィルタリングされた画素の近傍のガイダンス画像の統計に基づいて決定される。ガイド画像が劣化した画像と同じである場合、得られたいわゆる自己ガイドフィルタリングは、エッジ維持平滑化の効果を有する。発明者らが提案した自己ガイドフィルタリングの特定の形態は、2つのパラメータ、半径rおよびノイズパラメータeに依存し、以下のように列挙される。
1.すべての画素の周りの(2r+1)×(2r+1)ウィンドウで画素の平均μおよび分散σ2を取得する。これは、積分イメージングに基づくボックスフィルタリングで効率的に実装可能である。
2.すべての画素について計算する:f=σ2/(σ2+e);g=(1-f)μ
3.すべての画素のFおよびGを、使用する画素の周りの3×3ウィンドウ内のfおよびgの値の平均として計算する。
フィルタリングはrおよびeで制御することができ、rが大きいほど空間分散が大きくなり、eが大きいほど範囲分散が大きくなる。
図28は、部分空間投影の一例を示す。部分空間投影の原理は、図28に図式的に示されている。安価な復元X1、X2のいずれもソースYに接近していないが、適切な乗算器{α、β}は、それらがいくらか正しい方向に移動している限り、それらをソースにはるかに接近させることができる。
交差成分サンプルオフセット(CCSO)
ループフィルタリング手法は、再構築されたサンプルの歪みを低減するために交差成分サンプルオフセット(CCSO)を含むことができる。CCSOでは、第1の色成分の処理された入力再構築サンプルが与えられると、非線形マッピングが出力オフセットを導出するために使用され、出力オフセットは、提案されたCCSOのフィルタリングプロセスにおいて別の色成分の再構築サンプルに追加される。
図29は、フィルタ支持エリアの一例を示す。入力再構築サンプルは、フィルタ支持エリアに位置する第1の色成分からのものである。図29に示すように、フィルタ支持エリアは、4つの再構築されたサンプル:p0、p1、p2、p3を含む。4つの入力再構築サンプルは、垂直方向および水平方向に十字形に従う。第1の色成分の中心サンプル(cによって表される)および第2の色成分のフィルタリングされるサンプルは、コロケートされる。入力再構築サンプルを処理するとき、以下のステップが適用される。
・ステップ1:p0~p3とcとの間のデルタ値が最初に計算され、m0、m1、m2、およびm3として表される。
・ステップ2:デルタ値m0~m3がさらに量子化され、量子化値はd0、d1、d2、d3として表される。量子化値は、以下の量子化プロセスに基づいて-1、0、1とすることができる。
a.m<-Nの場合、d=-1、(16)
b.-N<=m<=Nの場合、d=0、(17)
c.m>Nの場合、d=1(18)であり、
Nは、量子化ステップサイズと呼ばれ、Nの例示的な値は、4、8、12、16である。
変数d0~d3を使用して、非線形マッピングの1つの組み合わせを識別することができる。この例では、CCSOは4つのフィルタタップd0~d3を有し、各フィルタタップは3つの量子化値のうちの1つを有することができるので、合計3^4=81の組み合わせがある。表4(以下)は、81の例示的な組み合わせを示し、最後の列は、各組み合わせの出力オフセット値を表す。例示的なオフセット値は、0、1、-1、3、-3、5、-5、-7などの整数である。
CCSOの最終フィルタリングプロセスは、以下のように適用される。
f’=クリップ(f+s)、 (19)
ここで、fはフィルタリングされる再構築されたサンプルであり、sは表4から取得された出力オフセット値であり、フィルタリングされたサンプル値f’はビット深度に関連する範囲にさらにクリップされる。
ローカルサンプルオフセット(LSO)は、別の例示的なオフセットの実施形態である。LSOでは、CCSOにおける同様のフィルタリング手法が適用されるが、再構築されたサンプルがフィルタリングプロセスへの入力として使用される同じ色成分である色成分に出力オフセットが適用される。
代替の実施形態では、単純化されたCCSO設計が、AV2の参照ソフトウェア、すなわち、CWG-B022用のAVMに採用されてもよい。
図30は、例示的なループフィルタパイプラインを示す。CCSOは、ループフィルタパイプラインにおいてCDEFと並列に実施されるループフィルタプロセスであり、すなわち、入力はCDEFと同じであり、出力は、図30に示されるようにCDEFフィルタリングされたサンプルに適用される。CCSOは、クロマ色成分にのみ適用されてもよいことに留意されたい。
図31は、交差成分サンプルオフセット(CCSO)の例示的な入力を示す。CCSOフィルタは、rcとして表されるクロマ再構築サンプルに適用される。rcのコロケートされたルマ再構築サンプルは、rlとして表される。CCSOフィルタの一例を図31に示す。CCSOでは、3タップフィルタのセットが使用される。3つのフィルタタップに位置する入力ルマ再構築サンプルは、中心のrlと、2つの隣接するサンプルp0およびp1とを含む。
piおよびrl(i=0、1)が与えられると、入力サンプルを処理するために以下のステップが適用される。
-piとrlとの間のデルタ値が最初に計算され、miとして表される。
-デルタ値miは、以下の量子化プロセスを使用してdiとして量子化される:
-mが-QCCSO未満である場合、diは-1に等しく設定される。
-mが-QCCSO~QCCSOの間(両端を含む)にある場合、diは0に等しく設定される。
-mがQCCSOよりも大きい場合、diは1に等しく設定される。
上記のステップでは、QCCSOは量子化ステップサイズと呼ばれ、QCCSOは8、16、32、64とすることができる。
d0およびd1が計算された後、CCSOのルックアップテーブル(LUT)を使用してオフセット値(sとして表される)が導出される。CCSOのLUTを表5に示す。d0とd1の各組み合わせは、オフセット値を取得するLUT内の行を識別するために使用される。オフセット値は、0、1、-1、3、-3、5、-5、および-7を含む整数である。
最後に、CCSOの導出されたオフセットは、以下のようにクロマ色成分に適用される。
rc’=クリップ(rc+s)、 (20)
ここで、rcはCCSOによってフィルタリングされる再構築されたサンプルであり、sはLUTから取得された導出されたオフセット値であり、フィルタリングされたサンプル値rc’はビット深度によって指定された範囲にさらにクリップされる。
図32は、交差成分サンプルオフセット(CCSO)における例示的なフィルタ形状を示す。CCSOには、図32に示すように、fi、i=1...6として表される6つの任意選択のフィルタ形状がある。これらの6つのフィルタ形状は、フレームレベルで切り替え可能であり、選択は、3ビットの固定長コードを使用する構文ext_filter_supportによってシグナリングされる。
交差成分サンプルオフセット(CCSO)のシグナリングは、フレームレベルとブロックレベルの両方で実施され得る。フレームレベルでは、信号は、以下を含むことができる。
・CCSOが適用されるかどうかを示す1ビットフラグ
・CCSOフィルタ形状の選択を示す3ビット構文ext_filter_support
・量子化ステップサイズの選択を示す2ビットインデックス
・LUTで使用される9つの3ビットオフセット値
128×128のクロマブロックレベルでは、CCSOフィルタが有効であるかどうかを示すためにフラグがシグナリングされる。
サンプル適応オフセット(SAO)
HEVCでは、スライスヘッダで与えられるオフセット値を使用して、デブロッキングフィルタ後の再構築信号にサンプル適応オフセット(SAO)が適用される。ルマサンプルの場合、エンコーダは、SAOが現在のスライスに適用されるかどうかを決定する。SAOが有効にされている場合、現在のピクチャは4つのサブ領域に再帰的に分割することを可能にし、各領域は、表6に示すように6つのSAOタイプのうちの1つを選択することができる。SAOは、再構築された画素をカテゴリに分類し、現在の領域内の各カテゴリの画素にオフセットを加えることによって歪みを低減する。エッジ性質は、SAOタイプ1~4における画素分類に使用され、画素強度は、SAOタイプ5~6における画素分類に使用される。
バンドオフセット(BO)は、領域のすべての画素を複数のバンドに分類し、各バンドは同じ強度間隔の画素を含む。強度範囲は、0から最大強度値(例えば、8ビット画素の場合は255)までの32個の間隔に等しく分割され、各間隔はオフセットを有する。次に、32個のバンドは2つのグループに分割される。一方のグループは中心の16個のバンドから構成され、他方のグループは残りの16個のバンドから構成される。一方のグループのオフセットのみが送信される。BOにおける画素分類動作に関して、各画素の最上位5ビットをバンドインデックスとして直接使用することができる。
図33は、例示的な画素パターンを示す。エッジオフセット(EO)は、図33に示すように、エッジ方向情報を考慮した画素分類のための4つの1次元3画素パターンを使用する。ピクチャの各領域は、各画素をその2つの隣接する画素と比較することによって、画素を複数のカテゴリに分類するために1つのパターンを選択することができる。選択は、サイド情報としてビットストリームで送られる。表7は、EOの画素分類規則を示す。
デコーダ側のSAOは、ラインバッファを節約することができるようにLCU独立に動作させることができる。これを達成するために、各LCU内の最上行および最下行の画素は、90度、135度、および45度の分類パターンが選択されたときにSAO処理されなくてもよい。各LCU内の左端列および右端列の画素は、0度、135度、および45度のパターンが選択されたときにSAO処理されなくてもよい。
以下の表8は、パラメータが隣接するCTUからマージされない場合、CTUに対してシグナリングされる必要があり得る例示的な構文を示している。
交差成分サンプルオフセット(CCSO)およびローカルサンプルオフセット(LSO)は、1つの色成分上のオフセット値を選択するためにフィルタリングされる画素の値を利用することができる。しかしながら、オフセット選択のためにこれらの入力をさらに拡張することは、CCSOおよびLSOのシグナリングのオーバーヘッドを著しく増加させる可能性があり、これは、特により小さい解像度シーケンスの場合、コーディング性能を限定/低減する場合がある。
上述したように、CCSOは、入力(例えば、YまたはCbまたはCr)として第1の色成分の再構築されたサンプルを使用するフィルタリングプロセスとして定義され、出力は、第1の色成分の異なる色成分である第2の色成分に適用される。CCSOの例示的なフィルタ形状を図29に示す。LSOは、入力(例えば、YまたはCbまたはCr)として第1の色成分の再構築されたサンプルを使用するフィルタリングプロセスであり、出力は、同じ第1の色成分に適用される。したがって、LSOとCCSOとの間の差は異なる入力である。
以下に説明し、図34に示されるように、CCSOおよびLSOの一般化された設計は、CCSOおよびLSOで考慮されるように、コロケートされた(または現在の)サンプルの隣接するサンプル間のデルタ値を考慮するだけでなく、コロケートされた(または現在の)サンプル自体のレベル値も考慮することによって提示される。
図34は、本開示の例示的な実施形態による方法のフローチャートを示す。ブロック3402において、コーディングされたビデオビットストリームから現在のピクチャ内の現在の成分の再構築されたサンプルについてのコーディングされた情報がデコーディングされる。コーディングされた情報は、再構築されたサンプルに適用されるサンプルオフセットフィルタを示す。サンプルオフセットフィルタは、一例では勾配オフセット(GO)およびバンドオフセット(BO)の2つのタイプのオフセット値を含むことができる。ブロック3404において、オフセットタイプは、サンプルオフセットフィルタと共に使用されるように選択される。ブロック3406において、サンプルオフセットフィルタの出力値が、第1の再構築されたサンプルおよび選択されたオフセットタイプに基づいて決定される。ブロック3408において、現在の成分の再構築されたサンプルのフィルタリングされたサンプル値が、再構築されたサンプルおよびサンプルオフセットフィルタの出力値に基づいて決定される。さらなる実施形態を以下に説明する。
一般化サンプルオフセット(GSO)方法は、勾配オフセット(GO)およびバンドオフセット(BO)を含む、CCSOおよびLSOの2つのタイプのオフセット値を含むことができる。オフセットタイプの選択は、シグナリングされるかまたは暗黙的に導出することができる。
一実施形態では、勾配オフセットは、隣接するサンプルと異なる色成分のコロケートされたサンプルとの間のデルタ値(CCSOの場合)、または隣接するサンプルとフィルタリングされる現在のサンプルとの間のデルタ値(CCSOまたはLSOの場合)を使用して導出されたオフセットであってもよい。
一実施形態では、バンドオフセットは、異なる色成分のコロケートされたサンプルまたはフィルタリングされる現在のサンプルの値を使用して導出されたオフセットであってもよい。バンドは、オフセット値を決定するために使用され得る。一例では、異なる色成分のコロケートされたサンプルまたはフィルタリングされる現在のサンプルの値は、変数vとして表されてもよく、BO値は、v>>sを使用して導出され、>>は右シフト演算を示し、sは、同じバンドオフセットを使用するサンプル値の間隔を指定する事前定義された値である。一例では、sの値は、異なる色成分に対して変化し得る。別の例では、異なる色成分のコロケートされたサンプルまたはフィルタリングされる現在のサンプルの値は、変数vとして表され、バンドインデックスbiは、事前定義されたルックアップテーブルを使用して導出され、ルックアップテーブルの入力はvであり、出力値はバンドインデックスbiであり、BO値はバンドインデックスbiを使用して導出される。
一実施形態では、GOとBOの組み合わせが適用されると(例えば、同時に使用されると)、オフセットは、1)隣接するサンプルと異なる色成分のコロケートされたサンプルとの間のデルタ値(CCSOの場合)、または隣接するサンプルとフィルタリングされる現在のサンプルとの間のデルタ値(CCSOまたはLSOの場合)と、2)異なる色成分のコロケートされたサンプルまたはフィルタリングされる現在のサンプルの値の両方を使用して導出される。
一実施形態では、GOまたはBOの適用がシグナリングされる。このシグナリングは、高レベル構文で適用され得る。いくつかの例として、シグナリングは、VPS、PPS、SPS、スライスヘッダ、ピクチャヘッダ、フレームヘッダ、スーパーブロックヘッダ、CTUヘッダ、タイルヘッダを含むことができる。
別の実施形態では、GOまたはBOがブロックレベルでシグナリングされるかどうかにかかわらず、前記ブロックレベルは、コーディングユニット(ブロック)レベル、予測ブロックレベル、変換ブロックレベル、またはフィルタリングユニットレベルを含むが、それらに限定されない。この例は、GOまたはBOを識別するためのブロックレベルでのシグナリングを含む。
別の実施形態では、GOまたはBOは、フラグを使用してシグナリングされる。LSOおよび/またはCCSOが1つまたは複数の色成分に適用されるかどうかを示すためにフラグが最初にシグナリングされ、次にGOまたはBOが適用されるかどうかを示すために別のフラグがシグナリングされる。例えば、LSOおよび/またはCCSOが1つまたは複数の色成分に適用されるかどうかを示すためにフラグが最初にシグナリングされ、次にGOがBOと一緒に適用されるかどうかを示すために別のフラグがシグナリングされ、BOは、GOが適用されるかどうかにかかわらず常に適用される。別の例では、LSOおよび/またはCCSOが1つまたは複数の色成分に適用されるかどうかを示すためにフラグが最初にシグナリングされ、次にBOがGOと一緒に適用されるかどうかを示すために別のフラグがシグナリングされ、GOは、BOが適用されるかどうかにかかわらず常に適用される。
いくつかの実施形態では、GOもしくはBOまたはそれらの組み合わせを使用するかどうかを決定するために信号を導出することができる。信号は、現在の色成分および/または異なる色成分の再構築されたサンプル、現在のブロックがイントラまたはインターコーディングされているかどうか、現在のピクチャがキー(またはイントラ)ピクチャであるかどうか、現在のサンプル(またはブロック)が特定の予測モード(特定のイントラまたはインター予測モード、変換選択モード、量子化パラメータなど)によってコーディングされているかどうかを含むがそれらに限定されない、コーディングされた情報を使用して暗黙的に導出され得る。
上述したように、LSOはCCSOと同様であり得るが、出力オフセットは、再構築されたサンプルがフィルタリングプロセスへの入力として使用される色成分と同じ色成分に適用される。GSOは、コロケートされたサンプルまたは現在のサンプルの隣接するサンプル間のデルタ値を考慮する勾配オフセット(GO)、および現在のサンプル自体のレベル値を考慮するバンドオフセット(BO)を含む2つのタイプのオフセット値を考慮する一般化された設計である。
加えて、シグナリング態様CCSO、LSO、およびGSOは、フレームレベルおよびブロックレベルに分類され得る。フレームレベルでは、CCSO、LSO、および/またはGSOの有効化が(例えば、1ビットフラグを使用して)シグナリングされ得、および/または、LUTのオフセット値が(例えば、各々3ビットを使用して)シグナリングされ得る。ブロックレベルでは、M×Nブロックの場合、現在のブロックのCCSO、LSO、および/またはGSOの有効化を示すためにフラグがシグナリングされる。様々な実施形態において、MおよびNの値は各々、16、32、64、128、または256を含むことができるが、それらに限定されない。本明細書で使用される場合、ブロックという用語は、フレームの領域を指す。
以下では、GSOの適応的適用について説明する。
上述したように、CCSOは、入力(例えば、YまたはCbまたはCr)として第1の色成分の再構築されたサンプルを使用するフィルタリングプロセスとして定義され、出力は、第1の色成分とは異なる色成分である第2の色成分に適用される。CCSOの例示的なフィルタ形状を図29に示す。加えて、LSOは、入力(例えば、YまたはCbまたはCr)として第1の色成分の再構築されたサンプルを使用するフィルタリングプロセスであり、出力は、同じ第1の色成分に適用される。GSOは、CCSOおよびLSOの一般化された設計と考えることができ、CCSOおよびLSOのようにコロケートされた(または現在の)サンプルの隣接するサンプル間のデルタ値を利用し、現在のサンプルのレベル値も考慮するフィルタリングプロセスである。GSOでは、2つのタイプのオフセット値、すなわち、コロケートされたサンプルまたは現在のサンプルの隣接するサンプル間のデルタ値に対応する勾配オフセット(GO)、および現在のサンプル自体のレベル値に対応するバンドオフセット(BO)が使用される。
図35は、本開示の例示的な実施形態による方法3500のフローチャートを示す。例示的な方法3500は、上述したビデオデコーダ(510)またはビデオデコーダ(810)など、ビデオストリームをデコーディングするように構成された装置によって実施されてもよい。図35の方法におけるアクションの少なくともいくつかは、図5のループフィルタ(556)などのループフィルタによって実施されてもよい。
ブロック3502において、コーディングされたビデオストリーム(例えば、ビットストリーム)が受信される。コーディングされたビデオストリームは、サンプルオフセットフィルタリングプロセスがブロックレベルでコーディングされたビデオストリーム内のフレームに適用されるかどうかを示す構文要素を含む。ブロック3504において、GSO、LSO、またはCCSOのうちの少なくとも1つが、構文要素が事前定義された値であることに基づいて、ブロックレベルでフレームに対して有効にされていると決定される。事前定義された値は、複数の事前定義された値のうちの1つであってもよい。複数の事前定義された値の各々は、特定のサンプルオフセットプロセス(GSO、LSO、またはCCSO)、または2つ以上のサンプルオフセットプロセスの特定の組み合わせ(GSO、LSO、CCSOの2つ以上)が有効にされるかどうかを示すことができる。したがって、いくつかの実施形態では、ブロック3504において、少なくともGSOが有効にされていると決定される。加えて、または代替として、少なくともLSOが有効にされていると決定される。加えて、または代替として、少なくともCCSOが有効にされていると決定される。ブロック3506において、コーディングされたビデオストリームは、ブロックレベルでGSO、LSO、またはCCSOのうちの少なくとも1つを適用することによってデコーディングされ得る。例えば、ブロック3506において適用されるGSO、LSO、またはCCSOのうちの少なくとも1つは、ブロック3504において有効にされていると決定されたGSO、LSO、および/またはCCSOに対応するか、またはそれに基づくことができる。すなわち、ブロック3504においてGSOが有効にされていると決定された場合、ブロック3506においてGSOが適用され得、ブロック3504においてLSOが有効にされていると決定された場合、ブロック3506においてLSOが適用され得、ブロック3504においてCCSOが有効にされていると決定された場合、ブロック3506においてCCSOが適用され得る。方法3500の少なくともいくつかの実施形態では、コーディングされたビデオストリーム内のフレームのブロックサイズは、対応するフレーム内のルマ成分およびクロマ成分に対して異なる。
いくつかの実施形態では、ブロック3506においてGSO、LSO、またはCCSOのうちの少なくとも1つを適用することは、GSOを適用するステップを含み、ルマ成分の第1のブロックサイズは、クロマ成分の第2のブロックサイズと同じまたはそれよりも小さい。例えば、GSOの適用の粒度は、クロマ成分と比較してルマ成分に対してより細かい。一例として、ルマGSOに使用されるM×Nは、クロマが128×128である場合、128×128以下である。MおよびNの値は、16、32、64、128、または256を含み得るが、それらに限定されない。
いくつかの実施形態では、方法3500は、第2のブロックサイズを有するクロマ成分のための第2のブロックレベルフラグがシグナリングされるとき、クロマ成分の第2のブロックサイズと同じまたはそれよりも小さい第1のブロックサイズを有するルマ成分のための第1のブロックレベルフラグを示す信号を受信するステップをさらに含むことができる。例えば、ブロックレベルフラグをシグナリングする粒度は、クロマ成分と比較してルマ成分の方が細かい。一例として、ブロックレベルフラグは、クロマ成分が128×128サイズのブロックについてシグナリングされるときに128×128以下のブロックサイズについてシグナリングされる。
いくつかの実施形態では、ブロックへの適用などのために、CCSO、LSO、またはGSOのうちの1つが有効または無効にされているかどうかを示すブロックレベルフラグはまた、CCSO、LSO、またはGSOのうちの別のものがブロックに対して有効または無効にされているかどうかを示すことができる。例えば、ブロックのクロマ成分に対してCCSOが有効にされていることを示すブロックレベルフラグはまた、ブロックのルマ成分に対してLSOが有効にされていることを示すことができる。同様に、ブロックのルマ成分に対してLSOが有効にされていることを示すブロックレベルフラグはまた、ブロックのクロマ成分に対してCCSOが有効にされていることを示すことができる。一例として、ブロックに対してCCSOが有効であるか適用されるかを示すブロックレベルフラグは、ブロックに対してLSOが有効であるか適用されるかを示すブロックレベルフラグに依存してもよく、および/またはブロックに対してLSOが適用されるかどうかを示すブロックレベルフラグは、ブロックに対してCCSOが適用されるかどうかを示すブロックレベルフラグに依存してもよい。加えて、または代替として、ブロックに対してCCSOまたはLSOが適用されるかどうかを示すブロックレベルフラグを、ブロックに対してLSOまたはCCSOがそれぞれ適用されるかどうかを示すブロックレベルフラグをシグナリングするためのコンテキストとして使用することができる。
いくつかの実施形態では、方法3500は、高レベル構文において、GSOを適用するためのクロマ成分またはルマ成分のうちの少なくとも1つの粒度を示す信号を受信するステップであって、高レベル構文は、ビデオパラメータセット(VPS)、ピクチャパラメータセット(PPS)、シーケンスパラメータ設定(SPS)、適応パラメータセット(APS)、フレームヘッダ、スライスヘッダ、ピクチャヘッダ、タイルヘッダ、スーパーブロックヘッダ、またはコーディングツリーユニット(CTU)ヘッダを含むステップをさらに含むことができる。例えば、ルマ成分および/またはクロマ成分のためのGSOの適用の粒度は、VPS、PPS、SPS、APS、フレームヘッダ、スライスヘッダ、ピクチャヘッダ、タイルヘッダ、スーパーブロックヘッダ、および/またはCTUヘッダを含むがそれらに限定されない高レベル構文でシグナリングすることができる。
いくつかの実施形態では、構文要素は、高レベル構文であるか、または高レベル構文を含み、GSOは、高レベル構文によって有効にされ、方法3500は、バンドオフセットに使用されるバンドの最大数を示す追加の高レベル構文を含む信号を受信するステップをさらに含むことができる。例えば、GSOが高レベル構文によって有効にされる場合、BOに使用されるバンドの最大数を示すために追加の高レベル構文がシグナリングされる。これらの実施形態のいくつかについて、高レベル構文は、VPS、PPS、SPS、APS、フレームヘッダ、スライスヘッダ、ピクチャヘッダ、タイルヘッダ、スーパーブロックヘッダ、および/またはCTUヘッダを含むが、それらに限定されない。
いくつかの実施形態では、ブロックレベルフラグが、ブロックに対してGSOを有効にし、方法3500は、ブロック内のバンドオフセット(BO)に使用されるバンドの数を示す追加の高レベル構文を含む信号を受信するステップをさらに含むことができる。例えば、ブロックレベルフラグがブロックに対してGSOを有効にするとき、そのブロック内のBOに使用されるバンドの数を示すために追加のブロックレベル構文がシグナリングされる。これらの実施形態のいくつかでは、ブロック内のバンドオフセットに対するバンドの数は、フレームレベルでシグナリングされるバンドの数よりも少ない。例えば、ブロックレベルでBOに使用されるバンドの数は、常に、フレームレベルでシグナリングされたバンドの最大数以下である。加えて、または代替として、構文要素は、高レベル構文であるか、または高レベル構文を含み、方法3500は、高レベル構文で指定された単一のバンドまたはバンドの最大数が現在のブロックに適用されるかどうかを示すフラグを含む信号を受信するステップをさらに含むことができる。例えば、高レベル構文で指定された単一のバンドまたはバンドの最大数が現在のブロックに適用されるかどうかを示すためにフラグがシグナリングされる。
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、方法(または実施形態)、エンコーダ、およびデコーダの各々は、処理回路(例えば、1つまたは複数のプロセッサまたは1つまたは複数の集積回路)によって実装されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。ブロックという用語は、予測ブロック、コーディングブロック、またはコーディングユニット、すなわちCUを含み得る。本開示の実施形態は、ルマブロックまたはクロマブロックに適用されてもよい。
上述された技法は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶することができる。例えば、図36は、開示された主題の特定の実施形態を実装するのに適したコンピュータシステム(3600)を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンクなどのメカニズムを受けることができる任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされ、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによって直接、または解釈、マイクロコード実行などを介して、実行され得る命令を含むコードを作成することができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはコンピュータの構成要素上で実行することができる。
コンピュータシステム(3600)に関して図36に示す構成要素は、本質的に例示であり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図していない。構成要素の構成は、コンピュータシステム(3600)の例示的な実施形態に示されている構成要素のいずれかまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(3600)は、特定のヒューマンインターフェース入力デバイスを含むことができる。そのようなヒューマンインターフェース入力デバイスは、例えば、触知入力(例えば、キーストローク、スワイプ、データグローブの動き)、オーディオ入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した1人または複数の人間のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、写真画像は静止画像カメラから取得など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体を取り込むためにも使用され得る。
入力ヒューマンインターフェースデバイスには、キーボード(3601)、マウス(3602)、トラックパッド(3603)、タッチスクリーン(3610)、データグローブ(図示せず)、ジョイスティック(3605)、マイク(3606)、スキャナ(3607)、カメラ(3608)のうちの1つまたは複数(それぞれ1つのみが描かれる)が含まれることがある。
コンピュータシステム(3600)はまた、特定のヒューマンインターフェース出力デバイスを含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触知出力、音、光、および匂い/味によって1人または複数の人間のユーザの感覚を刺激することができる。そのようなヒューマンインターフェース出力デバイスは、触知出力デバイス(例えば、タッチスクリーン(3610)、データグローブ(図示せず)、またはジョイスティック(3605)による触知フィードバックであるが、入力デバイスとして機能しない触知フィードバックデバイスも存在し得る)、オーディオ出力デバイス(例えば、スピーカ(3609)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(3610)などであって、それぞれがタッチスクリーン入力機能を有するかまたは有さず、それぞれが触知フィードバック機能を有するかまたは有さず、その一部は、ステレオ出力などの手段を介して2次元視覚出力または3次元を超える出力を出力することができてもよいスクリーン、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ、および発煙剤タンク(図示せず))、およびプリンタ(図示せず)を含むことができる。
コンピュータシステム(3600)はまた、CD/DVDなどの媒体(3621)を有するCD/DVD ROM/RW(3620)を含む光媒体、サムドライブ(3622)、取り外し可能ハードドライブまたはソリッドステートドライブ(3623)、テープおよびフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず)など、人間がアクセス可能な記憶デバイスおよびそれらの関連媒体を含み得る。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
コンピュータシステム(3600)はまた、1つまたは複数の通信ネットワーク(3655)へのインターフェース(3654)を含むことができる。ネットワークは、例えば、無線、有線、光であることができる。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両用および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例には、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビ、および地上波放送テレビを含むテレビ有線または無線ワイドエリアデジタルネットワーク、CAN busを含む車両用および産業用などが含まれる。特定のネットワークは、通常、(例えば、コンピュータシステム(3600)のUSBポートなどの)特定の汎用データポートまたは周辺バス(3649)に取り付けられた外部ネットワークインターフェースアダプタを必要とし、他のネットワークは、通常、以下で説明するようなシステムバスに取り付けることによってコンピュータシステム(3600)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェース、またはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(3600)は、他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたはワイドエリアデジタルネットワークを使用して、他のコンピュータシステムに対して、単方向、受信のみ(例えば、放送テレビ)、単方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースの各々で使用され得る。
前述のヒューマンインターフェースデバイス、ヒューマンアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピュータシステム(3600)のコア(3640)に取り付けることができる。
コア(3640)は、1つまたは複数の中央処理装置(CPU)(3641)、グラフィックス処理装置(GPU)(3642)、フィールドプログラマブルゲートエリア(FPGA)(3643)の形式の専用のプログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(3644)、グラフィックスアダプタ(3650)などを含み得る。これらのデバイスは、読み出し専用メモリ(ROM)(3645)、ランダムアクセスメモリ(3646)、ユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量ストレージ(3647)と共に、システムバス(3648)を介して接続され得る。いくつかのコンピュータシステムでは、システムバス(3648)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形式でアクセス可能であり得る。周辺デバイスは、コアのシステムバス(3648)に直接取り付けることも、周辺バス(3649)を介して取り付けることもできる。一例では、スクリーン(3610)をグラフィックスアダプタ(3650)に接続することができる。周辺バス用のアーキテクチャには、PCI、USBなどが含まれる。
CPU(3641)、GPU(3642)、FPGA(3643)、およびアクセラレータ(3644)は、組み合わせて上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(3645)またはRAM(3646)に記憶することができる。移行データもRAM(3646)に記憶することができるが、永続データは、例えば、内部大容量ストレージ(3647)に記憶することができる。メモリデバイスのいずれかへの高速記憶および取得は、1つまたは複数のCPU(3641)、GPU(3642)、大容量ストレージ(3647)、ROM(3645)、RAM(3646)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実施するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
非限定的な例として、アーキテクチャを有するコンピュータシステム(3600)、具体的にはコア(3640)は、(CPU、GPU、FPGA、アクセラレータなどを含む)プロセッサが1つまたは複数の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行する結果としての機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(3647)またはROM(3645)などの非一時的な性質のコア(3640)の特定のストレージに関連付けられた媒体とすることができる。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに記憶され、コア(3640)によって実行することができる。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(3640)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(3646)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、回路(例えば、アクセラレータ(3644))にハードワイヤードまたは他の方法で具現化された論理の結果としての機能を提供することができ、これは、本明細書で説明される特定のプロセスまたは特定のプロセスの特定の部分を実行するためにソフトウェアの代わりに、またはソフトウェアと共に動作し得る。ソフトウェアへの言及は、必要に応じて、論理を包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
本開示はいくつかの例示的な実施形態を記載しているが、本開示の範囲内に入る変更、置換、および様々な代替の均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。
付記A:頭字語
ALF:適応ループフィルタ
AMVP:高度動きベクトル予測
APS:適応パラメータセット
ASIC:特定用途向け集積回路
AV1:AOMedia Video 1
AV2:AOMedia Video 2
BCW:CUレベル重みによる双予測
BM:バイラテラルマッチング
BMS:ベンチマークセット
CANBus:コントローラエリアネットワークバス
CC-ALF:交差成分適応ループフィルタ
CCSO:交差成分サンプルオフセット
CD:コンパクトディスク
CDEF:制約方向性強調フィルタ
CDF:累積密度関数
CfL:ルマからのクロマ
CIIP:結合されたイントラ-インター予測
CPU:中央処理装置
CRT:陰極線管
CTB:コーディングツリーブロック
CTB:コーディングツリーブロック
CTU:コーディングツリーユニット
CTU:コーディングツリーユニット
CU:コーディングユニット
DMVR:デコーダ側動きベクトル改良
DPB:デコーディングされたピクチャバッファ
DPS:デコーディングパラメータセット
DVD:デジタルビデオディスク
FPGA:フィールドプログラマブルゲートエリア
GBI:一般化双予測
GOP:ピクチャグループ
GPU:グラフィックス処理装置
GSM:グローバル移動体通信システム
HDR:ハイダイナミックレンジ
HEVC:高効率ビデオコーディング
HRD:仮想参照デコーダ
IBC(またはIntraBC):イントラブロックコピー
IC:集積回路
ISP:イントラサブパーティション
JEM:共同探索モデル
JVET:共同ビデオ探索チーム
LAN:ローカルエリアネットワーク
LCD:液晶ディスプレイ
LCU:最大コーディングユニット
LR:ループ復元フィルタ
LSO:ローカルサンプルオフセット
LTE:ロングタームエボリューション
MMVD:動きベクトル差を伴うマージモード
MPM:最確モード
MV:動きベクトル
MV:動きベクトル
MVD:動きベクトル差
MVD:動きベクトル差
MVP:動きベクトル予測子
OLED:有機発光ダイオード
PB:予測ブロック
PCI:周辺構成要素相互接続
PDPC:位置依存予測組み合わせ
PLD:プログラマブル論理デバイス
POC:ピクチャ順序カウント
PPS:ピクチャパラメータセット
PU:予測ユニット
PU:予測ユニット
RAM:ランダムアクセスメモリ
ROM:読み出し専用メモリ
RPS:参照ピクチャセット
SAD:差分絶対和
SAO:サンプル適応オフセット
SB:スーパーブロック
SCC:スクリーンコンテンツコーディング
SDP:半分離分割
SDR:標準ダイナミックレンジ
SDT:半分離ツリー
SEI:補足拡張情報
SNR:信号対雑音比
SPS:シーケンスパラメータ設定
SSD:ソリッドステートドライブ
SST:半分離ツリー
TM:テンプレートマッチング
TU:変換ユニット
TU:変換ユニット
USB:ユニバーサルシリアルバス
VPS:ビデオパラメータセット
VUI:ビデオユーザビリティ情報
VVC:多用途ビデオコーディング
WAIP:広角イントラ予測