図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に、開示の主題の用途の一例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示の主題は、例えば、ビデオ会議、デジタルテレビ、CD、DVD、メモリスティックなどを含むデジタルメディア上の圧縮ビデオの格納を含む、他のビデオ対応用途に等しく適用することができる。
ストリーミングシステムは、ビデオソース(401)、例えば、圧縮されていないビデオピクチャのストリーム(402)を作成する、例えばデジタルカメラを含むことができる取り込みサブシステム(413)を含み得る。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮影されたサンプルを含む。ビデオピクチャのストリーム(402)は、符号化されたビデオデータ(404)(またはコーディングされたビデオビットストリーム)と比較した場合の高データ量を強調するために太線で示されており、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子装置(420)によって処理することができる。ビデオエンコーダ(403)は、以下でより詳細に説明されるように開示の主題の態様を可能にし、または実装するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。符号化されたビデオデータ(404)(または符号化されたビデオビットストリーム(404))は、ビデオピクチャのストリーム(402)と比較した場合の低データ量を強調するために細線で示されており、将来の使用のためにストリーミングサーバ(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)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用することができる。
受信機(531)は、ビデオデコーダ(510)によって復号されるべき1つまたは複数のコーディングされたビデオシーケンスを受信することができ、同じまたは別の実施形態では、一度に1つのコーディングされたビデオシーケンスが復号され、各コーディングされたビデオシーケンスの復号は、他のコーディングされたビデオシーケンスから独立している。コーディングされたビデオシーケンスは、符号化されたビデオデータを格納する記憶装置へのハードウェア/ソフトウェアリンクであってもよいチャネル(501)から受信され得る。受信機(531)は、符号化されたビデオデータを、それぞれの使用エンティティ(図示せず)に転送され得る他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリームと共に受信し得る。受信機(531)は、コーディングされたビデオシーケンスを他のデータから分離し得る。ネットワークジッタに対抗するために、バッファメモリ(515)が、受信機(531)とエントロピーデコーダ/パーサ(520)(これ以降は「パーサ(520)」)との間に結合されてもよい。特定の用途では、バッファメモリ(515)は、ビデオデコーダ(510)の一部である。他の場合には、ビデオデコーダ(510)の外部にあり得る(図示せず)。さらに他の場合には、例えばネットワークジッタに対抗するためにビデオデコーダ(510)の外部にバッファメモリ(図示せず)があり、さらに、例えば再生タイミングを処理するためにビデオデコーダ(510)の内部に別のバッファメモリ(515)があり得る。受信機(531)が十分な帯域幅および可制御性の記憶/転送装置から、またはアイソシンクロナス(isosynchronous)ネットワークからデータを受信しているときには、バッファメモリ(515)は不要であり得るか、または小さくすることができる。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)が必要とされることがあり、比較的大きくすることができ、有利には適応サイズとすることができ、ビデオデコーダ(510)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装され得る。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含み得る。それらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、潜在的に、図5に示すように、電子装置(530)の不可欠な部分ではないが電子装置(530)に結合することができるレンダリング装置(512)(例えば、表示画面)などのレンダリング装置を制御するための情報とを含む。(1つまたは複数の)レンダリング装置のための制御情報は、補足拡張情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形であり得る。パーサ(520)は、受信されるコーディングされたビデオシーケンスをパース/エントロピー復号し得る。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に従ったものとすることができ、可変長コーディング、ハフマンコーディング、文脈依存性ありまたはなしの算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、コーディングされたビデオシーケンスから、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内の画素のサブグループのうちの少なくとも1つのサブグループパラメータのセットを抽出し得る。サブグループには、グループオブピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含めることができる。パーサ(520)はまた、コーディングされたビデオシーケンスから、変換係数、量子化パラメータ値、動きベクトルなどの情報も抽出し得る。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリ(515)から受け取られたビデオシーケンスに対してエントロピー復号/パース操作を実行し得る。
シンボル(521)の再構成は、コーディングされたビデオピクチャまたはその一部のタイプ(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)、ならびに他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットがどのように含まれるかは、パーサ(520)によってコーディングされたビデオシーケンスからパースされたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために図示されていない。
すでに述べた機能ブロックを超えて、ビデオデコーダ(510)を、以下で説明するように、いくつかの機能ユニットに概念的に細分することができる。商業的制約の下で動作する実際の実装形態では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に、互いに統合することができる。しかしながら、開示の主題を説明するためには、以下の機能ユニットへの概念的細分が適切である。
第1のユニットはスケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化変換係数、ならびにどの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を、パーサ(520)から(1つまたは複数の)シンボル(521)として受け取る。スケーラ/逆変換ユニット(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などの、規格の所定のビデオ圧縮技術に従って復号動作を実行し得る。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されたプロファイルの両方に忠実であるという意味において、使用されているビデオ圧縮技術または規格によって指定された構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格で利用可能なすべてのツールの中から、そのプロファイルの下でのみ使用に供されるツールとして特定のツールを選択することができる。また、コンプライアンスに必要なのは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義される範囲内にあることでもあり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒のメガサンプル数で測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)仕様およびコーディングされたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、符号化されたビデオと共に追加の(冗長な)データを受信し得る。追加のデータは、(1つまたは複数の)コーディングされたビデオシーケンスの一部として含まれ得る。追加のデータは、ビデオデコーダ(510)によって、そのデータを適切に復号するため、および/または元のビデオデータをより正確に再構成するために使用され得る。追加のデータは、例えば、時間、空間、または信号対雑音比(SNR)増強層、冗長スライス、冗長ピクチャ、誤り訂正コードなどの形であり得る。
図6に、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子装置(620)に含まれる。電子装置(620)は、送信機(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるべき(1つまたは複数の)ビデオ画像を取り込み得るビデオソース(601)(図6の例では電子装置(620)の一部ではない)からビデオサンプルを受信し得る。別の例では、ビデオソース(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)(例えば、コーディングされるべき入力ピクチャと、(1つまたは複数の)参照ピクチャとに基づいて、シンボルストリームなどのシンボルを作成する役割を担う)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、シンボルを再構成して、(リモート)デコーダも作成することになるのと同様の方法でサンプルデータを作成する(開示の主題で考慮されるビデオ圧縮技術では、シンボルとコーディングされたビデオビットストリームとの間の任意の圧縮が可逆であるため)。再構成サンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームの復号により、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクトな結果が得られるため、参照ピクチャメモリ(634)内の内容もまたローカルエンコーダとリモートエンコーダとの間でビットイグザクトになる。言い換えると、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」ことになるのとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、例えばチャネル誤差が原因で同期性を維持することができない場合には、結果として生じるドリフト)のこの基本原理は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(633)の動作は、図5に関連して上記で詳細に説明した、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。図5も簡単に参照すると、しかしながら、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコーディングされたビデオシーケンスへのシンボルの符号化/復号が可逆であり得るため、バッファメモリ(515)およびパーサ(520)を含むビデオデコーダ(510)のエントロピー復号部分は、ローカルデコーダ(633)においては完全に実装されない場合がある。
この時点で言えることは、デコーダ内に存在するパース/エントロピー復号を除く任意のデコーダ技術もまた必然的に、対応するエンコーダにおいて、実質的に同一の機能形態で存在する必要があるということである。このため、開示の主題は、デコーダ動作に焦点を合わせている。エンコーダ技術の説明は、包括的に説明されているデコーダ技術の逆であるので、省略することができる。特定のエリアにおいてのみ、より詳細な説明が必要であり、以下に示す。
動作中、いくつかの例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする、動き補償予測コーディングを実行する場合がある。このようにして、コーディングエンジン(632)は、入力ピクチャの画素ブロックと、入力ピクチャへの(1つまたは複数の)予測参照として選択され得る(1つまたは複数の)参照ピクチャの画素ブロックとの間の差分をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータを復号し得る。コーディングエンジン(632)の動作は、有利には、非可逆プロセスであり得る。コーディングされたビデオデータがビデオデコーダ(図6には示されていない)で復号され得る場合、再構成されたビデオシーケンスは、通常、多少の誤差を伴うソースビデオシーケンスの複製であり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得る復号プロセスを複製し、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に格納させ得る。このようにして、ビデオエンコーダ(603)は、遠端ビデオデコーダによって取得される再構成された参照ピクチャと共通の内容を有する再構成された参照ピクチャのコピーをローカルに格納し得る(伝送誤差なしで)。
予測器(635)は、コーディングエンジン(632)のための予測探索を実行し得る。すなわち、コーディングされるべき新しいピクチャについて、予測器(635)は、(候補参照画素ブロックとしての)サンプルデータまたは新しいピクチャの適切な予測参照として役立ち得る参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを求めて、参照ピクチャメモリ(634)を探索し得る。予測器(635)は、適切な予測参照を見つけるために、サンプルブロックごと画素ブロックごと動作し得る。場合によっては、予測器(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に格納された複数の参照ピクチャから引き出された予測参照を有し得る。
コントローラ(650)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でエントロピーコーディングされ得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどといった技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成された(1つまたは複数の)コーディングされたビデオシーケンスを、符号化されたビデオデータを格納することになる記憶装置へのハードウェア/ソフトウェアリンクであり得る、通信チャネル(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 Rec.H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的冗長性および空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実行し得る。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術または規格によって指定された構文に準拠し得る。
一実施形態では、送信機(640)は、符号化されたビデオと共に追加のデータを送信し得る。ソースコーダ(630)は、そのようなデータをコーディングされたビデオシーケンスの一部として含めてもよい。追加のデータは、時間/空間/SNR増強層、冗長なピクチャやスライスなどの他の形の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含み得る。
ビデオは、複数のソースピクチャ(ビデオピクチャ)として時系列で取り込まれ得る。イントラピクチャ予測(しばしばイントラ予測と略される)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間またはその他の)相関を利用する。一例では、現在のピクチャと呼ばれる、符号化/復号中の特定のピクチャがブロックに分割される。現在のピクチャ内のブロックがビデオ内の以前にコーディングされたまだバッファされている参照ピクチャ内の参照ブロックに類似している場合、現在のピクチャ内のブロックを、動きベクトルと呼ばれるベクトルによってコーディングすることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し示し、複数の参照ピクチャが使用されている場合には、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、インターピクチャ予測において双予測技術を使用することができる。双予測技術によれば、両方とも復号順序でビデオ内の現在のピクチャより前にある(ただし、表示順序では、それぞれ過去と未来とにあり得る)第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指し示す第1の動きベクトルと、第2の参照ピクチャ内の第2の参照ブロックを指し示す第2の動きベクトルとによってコーディングすることができる。ブロックは、第1の参照ブロックと第2の参照ブロックの組み合わせによって予測することができる。
さらに、インターピクチャ予測において、コーディング効率を改善するために、マージモード技術を使用することができる。
本開示のいくつかの実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、または16×16画素などの同じサイズを有する。一般に、CTUは、3つのコーディングツリーブロック(CTB)を含み、これらは1つのルマCTBおよび2つのクロマCTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割することができる。例えば、64×64画素のCTUは、64×64画素の1つのCU、または32×32画素の4つのCU、または16×16画素の16個のCUに分割することができる。一例では、各CUは、インター予測タイプやイントラ予測タイプなどのCUの予測タイプを決定するために分析される。CUは、時間的予測可能性および/または空間的予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つのルマ予測ブロック(PB)と、2つのクロマPBとを含む。一実施形態では、コーディング(符号化/復号)における予測動作は、予測ブロック単位で実行される。予測ブロックの例としてルマ予測ブロックを使用すると、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などといった画素の値(例えば、ルマ値)の行列を含む。
図7に、本開示の別の実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオピクチャのシーケンスにおける現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受け取り、処理ブロックを、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャに符号化するように構成される。一例では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロックのサンプル値の行列を受け取る。ビデオエンコーダ(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)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受け取り、コーディングされたピクチャを復号して再構成されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示すように互いに結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャを構成する構文要素を表す特定のシンボルを再構成するように構成することができる。そのようなシンボルは、例えば、ブロックがコーディングされているモード(例えば、イントラモード、インターモード、双予測モード、後の2つは、マージサブモードまたは別のサブモードで)、イントラデコーダ(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組のビデオコーディング技術を含む。例えば、サンプルオフセットフィルタのための低複雑度のフィルタ形状が開示される。
ビデオコーディングフォーマットは、任意の適切なビデオコーディングフォーマット、例えば、ビデオコーディングフォーマットAlliance for Open Media(AOMedia)Video 1(AV1)やAV1を超える次世代AOMedia Videoフォーマットなどの、インターネット上のビデオ伝送用に設計されたオープンビデオコーディングフォーマットを含むことができる。ビデオコーディング規格には、高効率ビデオコーディング(High Efficiency Video Coding(HEVC))規格、HEVCを超える次世代ビデオコーディング(例えば、多用途ビデオコーディング(Versatile Video Coding(VVC)))などが含まれ得る。
アーチファクトを低減するために、エンコーダ/デコーダによって、ブロックベースのフィルタ適応を用いる適応ループフィルタ(ALF)を適用することができる。ルマ成分については、例えば、局所勾配の方向およびアクティビティに基づいて、4×4ルマブロックに対して複数のフィルタ(例えば、25個のフィルタ)のうちの1つを選択することができる。
ALFは、任意の適切な形状およびサイズを有することができる。図9を参照すると、ALF(910)~ALF(911)は、ALF(910)の5×5の菱形形状およびALF(911)の7×7の菱形形状などの菱形形状を有する。ALF(910)では、要素(920)~要素(932)がフィルタリングプロセスで使用され、菱形形状を形成することができる。要素(920)~要素(932)には、7つの値(例えば、C0~C6)を使用することができる。ALF(911)では、要素(940)~要素(964)がフィルタリングプロセスで使用され、菱形形状を形成することができる。要素(940)~要素(964)には、13個の値(例えば、C0~C12)を使用することができる。
図9を参照すると、いくつかの例では、菱形フィルタ形状を有する2つのALF(910)~(911)が使用される。5×5の菱形形状のフィルタ(910)は、クロマ成分(例えば、クロマブロック、クロマCB)に適用することができ、7×7の菱形形状のフィルタ(911)は、ルマ成分(例えば、ルマブロック、ルマCB)に適用することができる。他の適切な(1つまたは複数の)形状および(1つまたは複数の)サイズをALFにおいて使用することができる。例えば、9×9の菱形形状のフィルタを使用することができる。
値(例えば、(910)のC0~C6または(920)のC0~C12)によって示される位置におけるフィルタ係数は、非ゼロであり得る。さらに、ALFがクリッピング関数を含む場合、それらの位置におけるクリップ値は非ゼロであり得る。
ルマ成分のブロック分類について、4×4ブロック(またはルマブロック、ルマCB)を、複数(例えば、25)のクラスのうちの1つとして類別または分類することができる。式(1)を使用して、方向性パラメータDとアクティビティ値Aの量子化値
とに基づいて分類インデックスCを導出することができる。
方向性パラメータDおよび量子化値
を計算するために、垂直方向、水平方向、および2つの対角方向(例えば、d1およびd2)の勾配gv、gh、gd1、およびgd2を、それぞれ、以下のように1次元ラプラシアンを使用して計算することができる。
式中、インデックスiおよびインデックスjは、4×4ブロック内の左上サンプルの座標を指し、R(k,l)は、座標(k,l)における再構成サンプルを示す。方向(例えば、d1およびd2)は、2つの対角方向を指すことができる。
上述したブロック分類の複雑さを低減するために、サブサンプリングされた1次元ラプラシアン計算を適用することができる。図10A~図10Dに、垂直方向(図10A)、水平方向(図10B)、ならびに2つの対角方向d1(図10C)およびd2(図10D)の勾配gv、gh、gd1、およびgd2をそれぞれ計算するために使用されるサブサンプリングされた位置の例を示す。同じサブサンプリングされた位置を、異なる方向の勾配計算に使用することができる。図10Aにおいて、ラベル「V」は、垂直勾配gvを計算するためのサブサンプリングされた位置を示す。図10Bにおいて、ラベル「H」は、水平勾配ghを計算するためのサブサンプリングされた位置を示す。図10Cにおいて、ラベル「D1」は、d1対角勾配gd1を計算するためのサブサンプリングされた位置を示す。図10Dにおいて、ラベル「D2」は、d2対角勾配gd2を計算するためのサブサンプリングされた位置を示す。
水平方向の勾配gvおよび垂直方向の勾配ghの最大値
および最小値
を、以下のように設定することができる。
2つの対角方向の勾配gd1およびgd2の最大値
および最小値
を、以下のように設定することができる。
方向性パラメータDは、上記の値と2つの閾値t1,t2とに基づいて以下のように導出することができる。
ステップ1.(1)
および(2)
が真である場合、Dは0に設定される。
ステップ2.
の場合、ステップ3に進み、そうでない場合、ステップ4に進む。
ステップ3.
の場合、Dは2に設定され、そうでない場合、Dは1に設定される。
ステップ4.
の場合、Dは4に設定され、そうでない場合、Dは3に設定される。
アクティビティ値Aを、以下のように計算することができる。
Aを、包括的に0~4の範囲にさらに量子化することができ、量子化値は
として表される。
ピクチャ内のクロマ成分については、ブロック分類は適用されず、よって、各クロマ成分に対して単一のALF係数のセットを適用することができる。
フィルタ係数および対応するフィルタクリップ値(クリップ値とも呼ばれる)に幾何学的変換を適用することができる。ブロック(例えば、4×4ルマブロック)をフィルタリングする前に、例えば、ブロックについて計算された勾配値(例えば、gv、gh、gd1および/またはgd2)に応じて、フィルタ係数f(k,l)および対応するフィルタクリップ値c(k,l)に回転または対角や垂直反転などの幾何学的変換を適用することができる。フィルタ係数f(k,l)および対応するフィルタクリップ値c(k,l)に適用される幾何学的変換は、フィルタによってサポートされる領域内のサンプルに幾何学的変換を適用することと等価であり得る。幾何学的変換は、それぞれの方向性を整列させることによって、ALFが適用される異なるブロックをより類似させることができる。
対角反転、垂直反転、および回転を含む3つの幾何学的変換を、それぞれ、式(9)~式(11)に記載されるように実行することができる。
fD(k,l)=f(l,k)、cD(k,l)=c(l,k) 式(9)
fV(k,l)=f(k,K-l-1)、cV(k,l)=c(k,K-l-1) 式(10)
fR(k,l)=f(K-l-1,k)、cR(k,l)=c(K-l-1,k) 式(11)
式中、Kは、ALFまたはフィルタのサイズであり、0≦k、l≦K-1は、係数の座標である。例えば、フィルタfまたはクリップ値行列(もしくはクリップ行列)cの左上隅に位置(0,0)があり、右下隅に位置(K-1、K-1)がある。変換は、ブロックに対して計算された勾配値に応じて、フィルタ係数f(k,l)およびクリップ値c(k,l)に適用することができる。変換と4つの勾配との関係の一例を表1に要約する。
VVCなどのいくつかの実施形態では、ALFフィルタパラメータが、ピクチャの適応パラメータセット(APS)でシグナリングされる。APSでは、ルマフィルタ係数およびクリップ値インデックスの1つまたは複数のセット(例えば、最大25セット)をシグナリングすることができる。一例では、1つまたは複数のセットのうちの1セットは、ルマフィルタ係数および1つまたは複数のクリップ値インデックスを含むことができる。クロマフィルタ係数およびクリップ値インデックスの1つまたは複数のセット(例えば、最大8セットまで)をシグナリングすることができる。シグナリングオーバーヘッドを低減するために、ルマ成分の異なる(例えば、異なる分類インデックスを有する)分類のフィルタ係数をマージすることができる。スライスヘッダでは、現在のスライスに使用されるAPSのインデックスをシグナリングすることができる。VVCなどの例では、ALFのシグナリングはCTUベースである。
一実施形態では、クリップ値インデックス(クリッピングインデックスとも呼ばれる)をAPSから復号することができる。クリップ値インデックスは、例えば、クリップ値インデックスと対応するクリップ値との関係に基づいて、対応するクリップ値を判定するために使用することができる。この関係を事前定義し、デコーダに格納することができる。一例では、この関係は、ルマ成分についてのクリップ値インデックスおよび対応するクリップ値の(例えば、ルマCBに使用される)テーブルや、クロマ成分についてのクリップ値インデックスおよび対応するクリップ値の(例えば、クロマCBに使用される)テーブルなどのテーブルによって記述される。クリップ値はビット深度Bに依存し得る。ビット深度Bは、内部ビット深度、フィルタリングされるべきCB内の再構成サンプルのビット深度などを指すことができる。いくつかの例では、(例えば、ルマおよび/またはクロマの)クリップ値のテーブルが、式(12)を使用して取得される。
AlfClip={n∈[0 .. N-1]についてround(2B-α*n)} 式(12)
式中、AlfClipは、クリップ値であり、Bは、ビット深度(例えば、bitDepth)であり、N(例えば、N=4)は、許容されるクリップ値の数であり、αは、事前定義された定数値である。一例では、αは2.35に等しい。nはクリップ値インデックス(クリッピングインデックスまたはclipIdxとも呼ばれる)である。表2に、N=4として式(12)を使用して得られたテーブルの一例を示す。クリッピングインデックスnは、表2では0、1、2、および3とすることができる。表2は、ルマブロックまたはクロマブロックに使用することができる。
現在のスライスのスライスヘッダでは、現在のスライスに使用できるルマフィルタセットを指定するために、1つまたは複数のAPSインデックス(例えば、最大7個までのAPSインデックス)をシグナリングすることができる。フィルタリングプロセスを、ピクチャレベル、スライスレベル、CTBレベルなどといった、1つまたは複数の適切なレベルで制御することができる。一実施形態では、フィルタリングプロセスを、CTBレベルでさらに制御することができる。ALFがルマCTBに適用されるかどうかを示すためにフラグをシグナリングすることができる。ルマCTBは、APSでシグナリングされる複数の固定フィルタセット(例えば、16個の固定フィルタセット)および((1つまたは複数の)シグナリングされたフィルタセットとも呼ばれる)(1つまたは複数の)フィルタセットの中からフィルタセットを選択することができる。適用されるべきフィルタセット(例えば、複数の固定フィルタセットおよび(1つまたは複数の)シグナリングされたフィルタセットの中からのフィルタセット)を示すために、ルマCTBに対してフィルタセットインデックスをシグナリングすることができる。複数の固定フィルタセットは、エンコーダおよびデコーダにおいて事前定義し、ハードコーディングすることができ、事前定義フィルタセットと呼ぶことができる。
クロマ成分について、現在のスライスに使用されるべきクロマフィルタセットを示すためにスライスヘッダでAPSインデックスをシグナリングすることができる。CTBレベルでは、APSに2つ以上のクロマフィルタセットがある場合、クロマCTBごとにフィルタセットインデックスをシグナリングすることができる。
フィルタ係数は、128に等しいノルムで量子化することができる。乗算の複雑さを低減するために、非中央位置の係数値が-27~27-1の範囲内になるようにビットストリーム適合性を適用することができる。一例では、中央位置係数は、ビットストリームでシグナリングされず、128に等しいとみなすことができる。
いくつかの実施形態では、クリッピングインデックスおよびクリップ値の構文および意味は以下のように定義される。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以下の範囲内とすることを含むことができる。
要素AlfClipL[ adaptation_parameter_set_id ][ filtIdx ][ j ]を有し、filtIdx=0~NumAlfFilters-1およびj=0~11である、ルマフィルタクリップ値AlfClipL[adaptation_parameter_set_id]を、BitDepthYに等しく設定されたbitDepthおよびalf_luma_clip_idx[ alf_luma_coeff_delta_idx[ filtIdx ] ][ j ]に等しく設定されたclipIdxに応じて表2で指定されるように導出することができる。
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 ]を有し、altIdx=0~alf_chroma_num_alt_filters_minus1、j=0~5である、クロマフィルタフィルタクリップ値AlfClipC[ adaptation_parameter_set_id ][ altIdx ]を、BitDepthCに等しく設定されたbitDepthおよびalf_chroma_clip_idx[ altIdx ][ j ]に等しく設定されたclipIdxに応じて表2で指定されるように導出することができる。
一実施形態では、フィルタリングプロセスを以下のように説明することができる。デコーダ側では、ALFがCTBに対して有効になると、CU(またはCB)内のサンプルR(i,j)をフィルタリングすることができ、以下で式を使用して示すように、フィルタリングされたサンプル値R’(i,j)が得られる。(13)。一例では、CU内の各サンプルがフィルタリングされる。
式中、f(k,l)は、復号されたフィルタ係数を表し、K(x,y)は、クリッピング関数であり、c(k,l)は、復号されたクリッピングパラメータ(またはクリップ値)を表す。変数kおよび変数lは、-L/2~L/2で変化することができ、Lは、フィルタ長を表す。クリッピング関数K(x,y)=min(y,max(-y,x))は、クリッピング関数Clip3(-y,y,x)に対応する。クリッピング関数K(x,y)を組み込むことにより、ループフィルタリング方法(例えば、ALF)は非線形プロセスとなり、非線形ALFと呼ぶことができる。
選択されたクリップ値を、以下のように「alf_data」構文要素においてコーディングすることができる。すなわち、適切な符号化方式(例えば、ゴロム符号化方式)を使用して、表2に示されるような選択されたクリップ値に対応するクリッピングインデックスを符号化することができる。符号化方式は、フィルタセットインデックスを符号化するために使用されるのと同じ符号化方式とすることができる。
一実施形態では、仮想境界フィルタリングプロセスを使用して、ALFのラインバッファ要件を低減することができる。したがって、CTU境界(例えば、水平CTU境界)付近のサンプルに対して修正されたブロック分類およびフィルタリングを採用することができる。仮想境界(1130)は、図11Aに示すように、水平CTU境界(1120)を「Nsamples」サンプルだけシフトさせることによって線として定義することができ、Nsamplesは正の整数とすることができる。一例では、Nsamplesは、ルマ成分については4に等しく、Nsamplesは、クロマ成分については2に等しい。
図11Aを参照すると、修正されたブロック分類をルマ成分に適用することができる。一例では、仮想境界(1130)の上方の4×4ブロック(1110)の1次元ラプラシアン勾配計算には、仮想境界(1130)の上方のサンプルのみが使用される。同様に、図11Bを参照すると、CTU境界(1121)からシフトされた仮想境界(1131)の下方の4×4ブロック(1111)の1次元ラプラシアン勾配計算には、仮想境界(1131)の下方のサンプルのみが使用される。したがって、1次元ラプラシアン勾配計算で使用されたサンプル数の減少を考慮に入れることによってアクティビティ値Aの量子化をスケーリングすることができる。
フィルタリングプロセスのために、仮想境界における対称パディング操作をルマ成分とクロマ成分の両方に使用することができる。図12A~図12Fに、仮想境界におけるルマ成分のためのそのような修正されたALFフィルタリングの例を示す。フィルタリングされているサンプルが仮想境界の下方に位置する場合、仮想境界の上方に位置する隣接サンプルをパディングすることができる。フィルタリングされているサンプルが仮想境界の上方に位置する場合、仮想境界の下方に位置する隣接サンプルをパディングすることができる。図12Aを参照すると、隣接サンプルC0を、仮想境界(1210)の下方に位置するサンプルC2でパディングすることができる。図12Bを参照すると、隣接サンプルC0を、仮想境界(1220)の上方に位置するサンプルC2でパディングすることができる。図12Cを参照すると、隣接サンプルC1~C3を、それぞれ、仮想境界(1230)の下方に位置するサンプルC5~C7でパディングすることができる。図12Dを参照すると、隣接サンプルC1~C3を、それぞれ、仮想境界(1240)の上方に位置するサンプルC5~C7でパディングすることができる。図12Eを参照すると、隣接サンプルC4~C8を、それぞれ、仮想境界(1250)の下方に位置するサンプルC10、C11、C12、C11、およびC10でパディングすることができる。図12Fを参照すると、隣接サンプルC4~C8を、それぞれ、仮想境界(1260)の上方に位置するサンプルC10、C11、C12、C11、およびC10でパディングすることができる。
いくつかの例では、サンプルおよび隣接サンプルが仮想境界の左(または右)および右(または左)に位置する場合、上記の説明を適切に適応させることができる。
最大コーディングユニット(LCU)整列ピクチャ四分木分割を使用することができる。コーディング効率を高めるために、コーディングユニット同期ピクチャ四分木ベースの適応ループフィルタをビデオコーディングに使用することができる。一例では、ルマピクチャが複数のマルチレベル四分木パーティションに分割され、各パーティション境界が最大コーディングユニット(LCU)の境界に整列される。各パーティションは、フィルタリングプロセスを有することができ、よって、フィルタユニットまたはフィルタリングユニット(FU)と呼ぶことができる。
2パス符号化フローは以下ように説明される。第1のパスでは、各FUの四分木分割パターンおよび最善のフィルタ(または最適なフィルタ)を決定することができる。決定プロセスの間に高速フィルタリング歪み推定(FFDE)によってフィルタリング歪みを推定することができる。FU(例えばすべてのFU)の決定された四分木分割パターンと選択されたフィルタとに従って、再構成されたピクチャをフィルタリングすることができる。第2のパスでは、CU同期ALFのオン/オフ制御を実行することができる。ALFのオン/オフ結果に従って、最初にフィルタリングされたピクチャが再構成されたピクチャによって部分的に復元される。
トップダウン分割戦略を採用して、レート歪み基準を使用することによってピクチャをマルチレベル四分木パーティションに分割することができる。各パーティションを、FUと呼ぶことができる。分割プロセスは、図13に示すように、四分木パーティションをLCUの境界と整列させることができる。図13に、本開示の一実施形態によるLCU整列ピクチャ四分木分割を示す。一例では、FUの符号化順序はz走査順序に従う。例えば、図13を参照すると、ピクチャは、10個のFU(例えば、FU0~FU9)に分割され、符号化順序は、FU0からFU9へ、例えば、FU0、FU1、FU2、FU3、FU4、FU5、FU6、FU7、FU8、およびFU9である。
ピクチャ四分木分割パターンを示すために、分割フラグを符号化し、z走査順序で送ることができる。図14に、本開示の一実施形態による、図13に対応する四分木分割パターンを示す。図14の例に示すように、四分木分割フラグはz走査順序で符号化される。
各FUのフィルタを、レート歪み基準に基づいて、2つのフィルタセットから選択することができる。第1のセットは、現在のFUのために新たに導出された1/2対称の正方形形状および菱形形状のフィルタを有することができる。第2のセットは、時間遅延フィルタバッファからのものとすることができる。時間遅延フィルタバッファは、以前のピクチャ内のFUについて以前に導出されたフィルタを格納することができる。2つのフィルタセットのうちの最小レート歪みコストを有するフィルタを現在のFUに選択することができる。同様に、現在のFUが最小のFUではなく、4つの子FUにさらに分割できる場合、それら4つの子FUのレート歪みコストを計算することができる。分割と分割なしの場合のレート歪みコストを再帰的に比較することにより、ピクチャ四分木分割パターンを決定することができる。
いくつかの例では、最大四分木分割レベルが2で、よってFUの最大数は16である。四分木分割決定時に、最低四分木レベルの16個のFU(最小FU)のウィーナー係数を導出するための相関値を再利用することができる。残りのFUは、最低四分木レベルの16個のFUの相関から残りのFUのウィーナーフィルタを導出することができる。したがって、一例では、すべてのFUのフィルタ係数を導出するためのフレームバッファアクセスは1回だけである。
四分木分割パターンが決定された後、フィルタリング歪みをさらに低減するために、CU同期ALFのオン/オフ制御を実行することができる。フィルタリング歪みと非フィルタリング歪みとを比較することにより、リーフCUは対応するローカル領域でALFのオン/オフを明示的に切り替えることができる。ALFのオン/オフ結果に従ってフィルタ係数を再設計することによって、コーディング効率がさらに改善され得る。一例では、再設計プロセスは、追加のフレームバッファアクセスを必要とする。よって、コーディングユニット同期ピクチャ四分木ベースの適応ループフィルタ(CS-PQALF)エンコーダ設計などのいくつかの例では、フレームバッファアクセスの回数を最小限に抑えるために、CU同期ALFのオン/オフ決定後に再設計は不要である。
交差成分フィルタリングプロセスは、交差成分適応ループフィルタ(CC-ALF)などの交差成分フィルタを適用することができる。交差成分フィルタは、ルマ成分(例えば、ルマCB)のルマサンプル値を使用して、クロマ成分(例えば、ルマCBに対応するクロマCB)を精緻化することができる。一例では、ルマCBおよびクロマCBはCUに含まれる。
図15に、本開示の一実施形態による、クロマ成分を生成するために使用される交差成分フィルタ(例えば、CC-ALF)を示す。いくつかの例では、図15は、第1のクロマ成分(例えば、第1のクロマCB)、第2のクロマ成分(例えば、第2のクロマCB)、およびルマ成分(例えば、ルマCB)のためのフィルタリングプロセスを示す。ルマ成分を、サンプル適応オフセット(SAO)フィルタ(1510)によってフィルタリングして、SAOフィルタリングされたルマ成分(1541)を生成することができる。SAOフィルタリングされたルマ成分(1541)は、ALFルマフィルタ(1516)によってさらにフィルタリングされて、フィルタリングされたルマCB(1561)(例えば、「Y」)になることができる。
第1のクロマ成分を、SAOフィルタ(1512)およびALFクロマフィルタ(1518)によってフィルタリングして、第1の中間成分(1552)を生成することができる。さらに、SAOフィルタリングされたルマ成分(1541)を、第1のクロマ成分のための交差成分フィルタ(例えば、CC-ALF)(1521)によってフィルタリングして、第2の中間成分(1542)を生成することができる。続いて、第2の中間成分(1542)および第1の中間成分(1552)の少なくとも一方に基づいて、フィルタリングされた第1のクロマ成分(1562)(例えば、「Cb」)を生成することができる。一例では、加算器(1522)用いて第2の中間成分(1542)と第1の中間成分(1552)とを結合することによって、フィルタリングされた第1のクロマ成分(1562)(例えば、「Cb」)を生成することができる。第1のクロマ成分のための交差成分適応ループフィルタリングプロセスは、CC-ALF(1521)によって実行されるステップと、例えば加算器(1522)によって実行されるステップとを含むことができる。
上記の説明は、第2のクロマ成分に適応させることができる。第2のクロマ成分を、SAOフィルタ(1514)およびALFクロマフィルタ(1518)によってフィルタリングして、第3の中間成分(1553)を生成することができる。さらに、SAOフィルタリングされたルマ成分(1541)を、第2のクロマ成分のための交差成分フィルタ(例えば、CC-ALF)(1531)によってフィルタリングして、第4の中間成分(1543)を生成することができる。続いて、第4の中間成分(1543)および第3の中間成分(1553)の少なくとも一方に基づいて、フィルタリングされた第2のクロマ成分(1563)(例えば、「Cr」)を生成することができる。一例では、加算器(1532)を用いて第4の中間成分(1543)と第3の中間成分(1553)とを結合することによって、フィルタリングされた第2のクロマ成分(1563)(例えば、「Cr」)を生成することができる。一例では、第2のクロマ成分のための交差成分適応ループフィルタリングプロセスは、CC-ALF(1531)によって実行されるステップと、例えば加算器(1532)によって実行されるステップとを含むことができる。
交差成分フィルタ(例えば、CC-ALF(1521)、CC-ALF(1531))は、任意の適切なフィルタ形状を有する線形フィルタをルマ成分(またはルマチャネル)に適用して各クロマ成分(例えば、第1のクロマ成分、第2のクロマ成分)を精緻化することによって動作することができる。
図16に、本開示の一実施形態によるフィルタ(1600)の一例を示す。フィルタ(1600)は、非ゼロフィルタ係数およびゼロフィルタ係数を含むことができる。フィルタ(1600)は、フィルタ係数(1610)(黒塗りの円で示す)によって形成された菱形形状(1620)を有する。一例では、フィルタ(1600)内の非ゼロフィルタ係数はフィルタ係数(1610)に含まれ、フィルタ係数(1610)に含まれないフィルタ係数はゼロである。よって、フィルタ(1600)内の非ゼロフィルタ係数は、菱形形状(1620)に含まれ、菱形形状(1620)に含まれないフィルタ係数はゼロである。一例では、フィルタ(1600)のフィルタ係数の数は、フィルタ係数(1610)の数に等しく、図14に示す例では18である。
CC-ALFは、任意の適切なフィルタ係数(CC-ALFフィルタ係数とも呼ばれる)を含むことができる。図15に戻って、CC-ALF(1521)とCC-ALF(1531)とは、図14に示す菱形形状(1620)などの同じフィルタ形状、および同数のフィルタ係数を有することができる。一例では、CC-ALF(1521)内のフィルタ係数の値は、CC-ALF(1531)内のフィルタ係数の値とは異なる。
一般に、CC-ALF内のフィルタ係数(例えば、非ゼロフィルタ係数)は、例えば、APSで送ることができる。一例では、フィルタ係数を倍数(例えば、210)でスケーリングすることができ、固定小数点表示のために丸めることができる。CC-ALFの適用を、可変ブロックサイズで制御し、サンプルのブロックごとに受け取られるコンテキストコーディングされたフラグ(例えば、CC-ALF有効化フラグ)によってシグナリングすることができる。CC-ALF有効化フラグなどのコンテキストコーディングされたフラグは、ブロックレベルなどの任意の適切なレベルでシグナリングすることができる。ブロックサイズをCC-ALF有効化フラグと一緒に、クロマ成分ごとにスライスレベルで受け取ることができる。いくつかの例では、(クロマサンプル単位の)ブロックサイズ16×16、32×32、および64×64をサポートすることができる。
一例では、CC-ALFの構文変化が以下の表3に記載される。
CC-ALF関連構文の意味は、以下で説明することができる。
0に等しいalf_ctb_cross_component_cb_idc [xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]は、交差成分Cbフィルタがルマ位置(xCtb,yCtb)のCb色成分サンプルのブロックに適用されないことを示し得る。
0に等しくないalf_cross_component_cb_idc[ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY]は、alf_cross_component_cb_idc[ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]番目の交差成分Cbフィルタが、ルマ位置(xCtb,yCtb)のCb色成分サンプルのブロックに適用されることを示し得る。
0に等しいalf_ctb_cross_component_cr_idc[ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]は、交差成分Crフィルタがルマ位置(xCtb,yCtb)のCr色成分サンプルのブロックに適用されないことを示し得る。
0に等しくないalf_cross_component_cr_idc[ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY]は、alf_cross_component_cr_idc[ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]番目の交差成分Crフィルタがルマ位置(xCtb,yCtb)のCr色成分サンプルのブロックに適用されることを示し得る。
以下でクロマサンプリングフォーマットの例について説明する。一般に、ルマブロックは、2つのクロマブロックなどの(1つまたは複数の)クロマブロックに対応し得る。(1つまたは複数の)クロマブロックの各々のサンプル数は、ルマブロック内のサンプル数より少なくすることができる。クロマサブサンプリングフォーマット(クロマサブサンプリングフォーマットとも呼ばれ、例えば、chroma_format_idcによって指定される)は、(1つまたは複数の)クロマブロックの各々と対応するルマブロックとの間のクロマ水平サブサンプリング因子(例えば、SubWidthC)およびクロマ垂直サブサンプリング因子(例えば、SubHeightC)を示すことができる。一例では、クロマサブサンプリングフォーマットは4:2:0であり、よって、図15A~図15Bに示すように、クロマ水平サブサンプリング因子(例えば、SubWidthC)およびクロマ垂直サブサンプリング因子(例えば、SubHeightC)は2である。一例では、クロマサブサンプリングフォーマットは4:2:2であり、よって、クロマ水平サブサンプリング因子(例えば、SubWidthC)は2であり、クロマ垂直サブサンプリング因子(例えば、SubHeightC)は1である。一例では、クロマサブサンプリングフォーマットは4:4:4であり、よって、クロマ水平サブサンプリング因子(例えば、SubWidthC)およびクロマ垂直サブサンプリング因子(例えば、SubHeightC)は1である。クロマサンプルタイプ(クロマサンプル位置とも呼ばれる)は、ルマブロック内の少なくとも1つの対応するルマサンプルに対するクロマブロック内のクロマサンプルの相対位置を示すことができる。
図17A~図17Bに、本開示の実施形態による、ルマサンプルに対するクロマサンプルの例示的な位置を示す。図17Aを参照すると、ルマサンプル(1701)は、行(1711)~(1718)に配置されている。図17Aに示すルマサンプル(1701)は、ピクチャの一部分を表すことができる。一例では、ルマブロック(例えば、ルマCB)はルマサンプル(1701)を含む。ルマブロックは、4:2:0のクロマサブサンプリングフォーマットを有する2つのクロマブロックに対応し得る。一例では、各クロマブロックは、クロマサンプル(1703)を含む。各クロマサンプル(例えば、クロマサンプル(1703(1))は、4つのルマサンプル(例えば、ルマサンプル(1701(1))~(1701(4)))に対応する。一例では、4つのルマサンプルは、左上サンプル(1701(1))、右上サンプル(1701(2))、左下サンプル(1701(3))、および右下サンプル(1701(4))である。クロマサンプル(例えば、(1703(1)))は、左上サンプル(1701(1))と左下サンプル(1701(3))との間の左中央位置に位置し、クロマサンプル(1703)を有するクロマブロックのクロマサンプルタイプをクロマサンプルタイプ0と呼ぶことができる。クロマサンプルタイプ0は、左上サンプル(1701(1))と左下サンプル(1701(3))との中間の左中央位置に対応する相対位置0を示す。4つのルマサンプル(例えば、(1701(1))~(1701(4)))を、クロマサンプル(1703)(1)の隣接ルマサンプルと呼ぶことができる。
一例では、各クロマブロックは、クロマサンプル(1704)を含む。クロマサンプル(1703)に関する上記の説明は、クロマサンプル(1704)に適応させることができ、よって、簡潔にするために詳細な説明を省略することができる。クロマサンプル(1704)の各々は、4つの対応するルマサンプルの中央位置に配置することができ、クロマサンプル(1704)を有するクロマブロックのクロマサンプルタイプをクロマサンプルタイプ1と呼ぶことができる。クロマサンプルタイプ1は、4つのルマサンプル(例えば、(1701(1))~(1701(4)))の中央位置に対応する相対位置1を示す。例えば、クロマサンプル(1704)のうちの1つは、ルマサンプル(1701(1))~(1701(4))の中央部分に配置することができる。
一例では、各クロマブロックは、クロマサンプル(1705)を含む。クロマサンプル(1705)の各々は、4つの対応するルマサンプル(1701)の左上サンプルと同じ場所に位置する左上位置に配置することができ、クロマサンプル(1705)を有するクロマブロックのクロマサンプルタイプをクロマサンプルタイプ2と呼ぶことができる。したがって、クロマサンプル(1705)の各々は、それぞれのクロマサンプルに対応する4つのルマサンプル(1701)の左上サンプルと同じ場所に位置する。クロマサンプルタイプ2は、4つのルマサンプル(1701)の左上位置に対応する相対位置2を示す。例えば、クロマサンプル(1705)のうちの1つを、ルマサンプル(1701(1))~(1701(4))の左上位置に配置することができる。
一例では、各クロマブロックは、クロマサンプル(1706)を含む。クロマサンプル(1706)の各々は、対応する左上サンプルと対応する右上サンプルとの間の上中央位置に配置することができ、クロマサンプル(1706)を有するクロマブロックのクロマサンプルタイプをクロマサンプルタイプ3と呼ぶことができる。クロマサンプルタイプ3は、左上サンプル(と右上サンプルの間の上中央位置に対応する相対位置3を示す。例えば、クロマサンプル(1706)のうちの1つを、ルマサンプル(1701(1))~(1701(4))の上中央位置に配置することができる。
一例では、各クロマブロックは、クロマサンプル(1707)を含む。クロマサンプル(1707)の各々は、4つの対応するルマサンプル(1701)の左下サンプルと同じ場所に位置する左下位置に配置することができ、クロマサンプル(1707)を有するクロマブロックのクロマサンプルタイプをクロマサンプルタイプ4と呼ぶことができる。したがって、クロマサンプル(1707)の各々は、それぞれのクロマサンプルに対応する4つのルマサンプル(1701)の左下サンプルと同じ場所に位置する。クロマサンプルタイプ4は、4つのルマサンプル(1701)の左下位置に対応する相対位置4を示す。例えば、クロマサンプル(1707)のうちの1つを、ルマサンプル(1701(1))~(1701(4))の左下位置に配置することができる。
一例では、各クロマブロックは、クロマサンプル(1708)を含む。クロマサンプル(1708)の各々は、左下サンプルと右下サンプルとの間の下中央位置に位置し、クロマサンプル(1708)を有するクロマブロックのクロマサンプルタイプをクロマサンプルタイプ5と呼ぶことができる。クロマサンプルタイプ5は、4つのルマサンプル(1701)の左下サンプルと右下サンプルとの間の下中央位置に対応する相対位置5を示す。例えば、クロマサンプル(1708)のうちの1つを、ルマサンプル(1701(1))~(1701(4))の左下サンプルと右下サンプルとの間に配置することができる。
一般に、クロマサブサンプリングフォーマットには任意の適切なクロマサンプルタイプを使用することができる。クロマサンプルタイプ0~5は、クロマサブサンプリングフォーマット4:2:0で記述される例示的なクロマサンプルタイプである。クロマサブサンプリングフォーマット4:2:0にはさらなるクロマサンプルタイプが使用され得る。さらに、他のクロマサンプルタイプおよび/またはクロマサンプルタイプ0~5のバリエーションを、4:2:2、4:4:4などの他のクロマサブサンプリングフォーマットに使用することができる。一例では、クロマサンプル(1705)とクロマサンプル(1707)とを組み合わせたクロマサンプルタイプがクロマサブサンプリングフォーマット4:2:2に使用される。
一例では、ルマブロックは、4つのルマサンプル(例えば、(1701(1))~(1701(4)))のうちの上2つのサンプル(例えば、(1701(1))~(1701)(2))と、4つのルマサンプル(例えば、(1701(1)~(1701(4)))のうちの下2つのサンプル(例えば、(1701(3))~(1701(4)))とをそれぞれ含む行(1711)~(1712)などの交互の行を有するとみなされる。したがって、行(1711)、(1713)、(1715)、および(1717)を、現在の行と呼ぶことができ(上部フィールドとも呼ぶことができ)、行(1712)、(1714)、(1716)、および(1718)を、次の行と呼ぶことができる(下部フィールドとも呼ぶことができる)。4つのルマサンプル(例えば、(1701(1))~(1701(4)))は、現在の行(例えば、(1711))および次の行(例えば、(1712))に位置する。相対位置2~3は現在の行に位置し、相対位置0~1は各現在の行とそれぞれの次の行との間に位置し、相対位置4~5は次の行に位置する。
クロマサンプル(1703)、(1704)、(1705)、(1706)、(1707)、または(1708)は、各クロマブロック内の行(1751)~(1754)に位置する。行(1751)~(1754)の特定の位置は、クロマサンプルのクロマサンプルタイプに依存し得る。例えば、それぞれのクロマサンプルタイプ0~1を有するクロマサンプル(1703)~(1704)について、行(1751)は、行(1711)と行(1712)との間に位置する。それぞれのクロマサンプルタイプ2~3を有するクロマサンプル(1705)~(1706)について、行(1751)は、現在の行(1711)と同じ場所に位置する。それぞれのクロマサンプルタイプ4~5を有するクロマサンプル(1707)~(1708)について、行(1751)は、次の行(1712)と同じ場所に位置する。上記の説明は、行(1752)~(1754)に適切に適応させることができ、簡潔にするために詳細な説明は省略する。
図17Aで上述したルマブロックおよび対応する(1つまたは複数の)クロマブロックを表示、格納、および/または送信するために、任意の適切な走査方法を使用することができる。一例では、順次走査が使用される。
図17Bに示すように、飛び越し走査を使用することができる。上述したように、クロマサブサンプリングフォーマットは4:2:0である(例えば、chroma_format_idcは1に等しい)。一例では、可変クロマ位置タイプ(例えば、ChromaLocType)は、現在の行(例えば、ChromaLocTypeは、chroma_sample_loc_type_top_fieldである)または次の行(例えば、ChromaLocTypeは、chroma_sample_loc_type_bottom_fieldである)を示す。現在の行(1711)、(1713)、(1715)、および(1717)と次の行(1712)、(1714)、(1716)、および(1718)とを別々に走査することができ、例えば、現在の行(1711)、(1713)、(1715)、および(1717)を最初に走査し、続いて次の行(1712)、(1714)、(1716)、および(1718)を走査することができる。現在の行はルマサンプル(1701)を含むことができ、次の行はルマサンプル(1702)を含むことができる。
同様に、対応するクロマブロックを飛び越し走査することができる。塗りつぶしがないクロマサンプル(1703)、(1704)、(1705)、(1706)、(1707)、または(1708)を含む行(1751)および行(1753)を、現在の行(または現在のクロマ行)と呼ぶことができ、グレーの塗りつぶしがあるクロマサンプル(1703)、(1704)、(1705)、(1706)、(1707)、または(1708)を含む行(1752)および行(1754)を、次の行(または次のクロマ行)と呼ぶことができる。一例では、飛び越し走査時に、行(1751)および行(1753)が最初に走査され、続いて行(1752)および行(1754)が走査される。
制約付き方向性強化フィルタ(CDEF)をビデオコーディングに使用することができる。インループCDEFを使用して、画像の詳細を保持しながらコーディングアーチファクトを除去することができる。HEVCなどのいくつかの例では、サンプル適応オフセット(SAO)アルゴリズムが異なるクラスの画素の信号オフセットを定義することによって、同様の目的を達成する。SAOとは異なり、CDEFは非線形空間フィルタである。いくつかの例では、フィルタの設計は、容易にベクトル化可能である(例えば、単一命令複数データ(SIMD)演算で実装可能である)ように制約されており、これはメジアンフィルタや双方向フィルタなどの他の非線形フィルタには当てはまらない。
一例では、CDEFの設計は、以下の所見から考案される。いくつかの例では、コーディングされた画像のリンギングアーチファクトの量は、量子化ステップサイズにほぼ比例し得る。詳細の量は、入力画像の特性である。しかしながら、量子化画像に保持される最小の詳細は、量子化ステップサイズに比例し得る。所与の量子化ステップサイズについて、リンギングアーチファクトの大きさは詳細の大きさよりも小さくなり得る。
CDEFは、各ブロックの方向を識別することができる。CDEFはその場合、識別された方向に沿って、識別された方向から45°回転された方向に沿ったより小さい角度まで適応的にフィルタリングすることができる。フィルタ強度を明示的にシグナリングすることができ、ぼやけに対する高度な制御が可能である。フィルタ強度に対して効率的なエンコーダ探索を設計することができる。CDEFは、2つのインループフィルタに基づくものとすることができ、結合されたフィルタを、AV1コーデックなどにおいて、ビデオコーディングに使用することができる。
方向探索は、例えばデブロッキングフィルタの後に再構成された画素(またはサンプル)に対して動作することができる。再構成された画素はデコーダから利用可能であるため、方向はシグナリングを必要としない場合がある。探索は、量子化画像に適用される場合に、非直線エッジを適切に処理するのに十分なほど小さく、方向を確実に推定するのに十分なほど大きい適切なサイズを有するブロック(例えば、8×8ブロック)に対して動作することができる。8×8領域にわたって一定の方向を有することにより、フィルタのベクトル化が容易になる。ブロックごとに、量子化ブロックおよび完全方向性ブロック(1830)の各々の、差分二乗の和(SSD)、RMS誤差などの差分尺度を最小化することによって、ブロック内のパターンに最も一致する方向を決定することができる。一例では、完全方向性ブロック(例えば(1830)のうちの1つ)とは、ある方向の線に沿ったすべての画素が同じ値を有するブロックである。図18に、本開示の一実施形態による8×8ブロック(1810)の方向探索の一例を示す。図18に示す例では、45度方向(1823)が誤差を最小化できるため、1組の方向(1820)のうちの45度方向(1823)が選択されている。例えば、45度方向の誤差は12であり、行(1840)で示される12から87までの範囲の誤差の中で最も小さい。
以下で非線形ローパス方向性フィルタについて説明する。方向を識別することは、方向性エッジまたはパターンを保存しながら、リンギングアーチファクトを低減するために識別された方向に沿ってフィルタタップを整列させるのに役立ち得る。しかしながら、いくつかの例では、方向性フィルタリングだけでは、リンギングアーチファクトを十分に低減することができない。主方向(例えば、識別された方向)に沿って存在しない画素に対して追加のフィルタタップを使用することが望ましい。ぼやけのリスクを低減するために、これら追加のフィルタタップをより控えめに扱うことができる。したがって、CDEFは、1次タップおよび2次タップを定義することができる。一例では、完全な2次元(2D)CDEFフィルタが、以下のように表される。
式(14)において、Dは、減衰パラメータであり、S(p)およびS(s)は、それぞれ、1次タップおよび2次タップの強度であり、関数round(・)は、値をゼロから離れる方に丸めることができ、
および
は、フィルタ重みであり、f(d,S,D)は、フィルタリングされた画素(例えば、x(i,j))と隣接画素の各々(例えば、x(m,n))との間の差分d(例えば、d=x(m,n)-x(i,j))に対して動作する制約関数である。差分が小さい場合、f(d,S,D)が差分dに等しいとすることができる(例えば、f(d,S,D)=d)ので、フィルタは線形フィルタとして動作し得る。差分が大きい場合、f(d,S,D)=0(例えば、f(d,S,D)=0)とすることができ、フィルタタップを実質的に無視する。
AV1など、デブロッキング後のビデオコーディングでは、デブロッキング操作を超えてエッジの品質を全般的にノイズ除去し、向上させるために、インループ復元方式のセットを使用することができる。インループ復元方式のセットは、適切なサイズのタイルごとにフレーム(またはピクチャ)内で切り替え可能とすることができる。インループ復元方式のいくつかの例を、分離可能な対称ウィーナーフィルタおよび部分空間投影を用いたデュアル自己誘導フィルタ(dual self-guided filter)に基づいて説明する。コンテンツ統計がフレーム内で大幅に変化し得るので、これらのツールを、フレームの異なる領域で異なるツールをトリガすることができる切り替え可能なフレームワークに統合することができる。
分離可能な対称ウィーナーフィルタについて以下で説明することができる。1つの復元ツールはウィーナーフィルタとすることができる。劣化したフレーム内のすべての画素(またはサンプル)を、その画素の周りのw×wウィンドウ内の画素の非因果的なフィルタリングバージョンとして再構成することができ、w=2r+1であり、整数rについて奇数である。2次元フィルタタップを、w2×1個の要素を有する列ベクトル化形式のベクトルFで表すことができ、単純な線形最小平均二乗誤差(LMMSE)最適化により、F=H-1Mによって与えられるフィルタパラメータを得ることができ、式中、Hは、E[XXT]に等しく、xの自己共分散、画素の周りのw×wウィンドウ内のw2個のサンプルの列ベクトル化バージョンであり、E[YXT]に等しいMは、xと推定されるべきスカラーソースサンプルyとの相互相関である。エンコーダは、デブロッキングされたフレームおよびソースにおける実現値からHおよびMを推定し、得られたフィルタFをデコーダに送ることができる。しかしながら、いくつかの例では、w2個のタップを送る際にかなりのビットレートコストが発生する可能性がある。さらに、分離不可能なフィルタリングが、復号をきわめて複雑にする可能性がある。したがって、Fの性質に対して複数の追加の制約を課すことができる。例えば、フィルタリングを別々の水平および垂直のwタップ畳み込みとして実装できるように、Fは分離可能に制約される。一例では、水平フィルタおよび垂直フィルタの各々が対称になるように制約される。さらに、一例では、水平フィルタ係数と垂直フィルタ係数の和が1になると仮定することができる。
以下で、部分空間投影を用いたデュアル自己誘導フィルタリングを説明することができる。いくつかの例では、フィルタリングされていないサンプルxからフィルタされた出力を算出するために局所線形モデルが使用される画像フィルタリングにおいて誘導フィルタリングを使用することができる。局所線形モデルは、以下として記述することができ、
y=Fx+G 式(15)
式中、FおよびGは、劣化した画像と、フィルタリングされた画素の近傍の(ガイド画像とも呼ばれる)誘導画像とに基づいて決定することができる。ガイド画像が劣化した画像と同一である場合、得られる自己誘導フィルタリングは、エッジ保存平滑化の効果を有し得る。本開示のいくつかの態様によれば、特定の形態の自己誘導フィルタリングは、2つのパラメータ、すなわち、半径rおよびノイズパラメータeに依存することができ、以下のように列挙することができる。
1.各画素の周りの(2r+1)×(2r+1)ウィンドウ内の画素の平均値μおよび分散σ2を取得する。画素の平均値μおよび分散σ2の取得は、インテグラルイメージングに基づくボックスフィルタリングによって効率的に実施することができる。
2.式(16)に基づいて画素ごとにパラメータfおよびパラメータgを計算する。
f=σ2/(σ2+e);g=(1-f)μ 式(16)
3.画素ごとのFおよびGを、使用する画素の周りの3×3ウィンドウ内のパラメータfおよびパラメータgの値の平均値として計算する。
フィルタリングは、半径rおよびノイズパラメータeによって制御することができ、より大きい半径rは空間的分散がより高いことを意味し、より高いノイズパラメータeはレンジ分散がより大きいことを意味し得る。
図19に、本開示の一実施形態による部分空間投影の一例を示す。図19に示す例では、部分空間投影は、利用が容易な復元値X1およびX2を使用して、ソースYにより近い最終復元値Xfを生成することができる。利用が容易な復元値X1およびX2がソースYに近くない場合でも、利用が容易な復元値X1およびX2が正しい方向に移動する場合には適切な乗算器{α,β}が、利用が容易な復元値X1およびX2をソースYにかなり近づけることができる。一例では、最終復元値Xfは、式以下の(17)に基づいて得られる。
Xf=X+α(X1-X)+β(X2-X) 式(17)
交差成分サンプルオフセット(CCSO)フィルタまたはCCSOと呼ばれるループフィルタリング方法を使用して、再構成されたサンプル(再構成サンプルともいう)の歪みを低減することができる。CCSOフィルタリングプロセスでは、非線形マッピングを使用して、第1の色成分の処理された入力再構成サンプルに基づいて出力オフセットを決定することができる。出力オフセットは、CCSOのフィルタリングプロセスにおいて第2の色成分の再構成サンプルに追加することができる。
入力再構成サンプルは、図20に示すように、フィルタサポートエリアに位置する第1の色成分からのものとすることができる。図20に、本開示の一実施形態によるCCSOフィルタにおけるフィルタサポートエリアの一例を示す。フィルタサポートエリアは、4つの再構成サンプル、すなわち、p0、p1、p2、およびp3を含むことができる。4つの入力再構成サンプルは、垂直方向と水平方向の十字形状をなぞることができる。一例では、第1の色成分内の(cで表す)中央サンプルと第2の色成分内の(fで表す)フィルタリングされるべきサンプルとは同じ場所に位置する。入力再構成サンプルを処理するとき、以下のステップを適用することができる。
ステップ1:4つの再構成サンプル、すなわち、p0、p1、p2、およびp3と中央サンプルcとの間のデルタ値(例えば、差分)が算出され、それぞれm0、m1、m2、およびm3として表される。例えば、p0とcとの間のデルタ値はm0である。
ステップ2:デルタ値m0~m3をさらに量子化することができる。量子化値をd0、d1、d2、およびd3と表すことができる。一例では、量子化値は、以下の量子化プロセスに基づいて-1、0、または1である。
mi<-Nの場合、di=-1 式(18)
-N≦mi≦Nの場合、di=0 式(19)
mi>Nの場合、di=1 式(20)
式中、Nは、量子化ステップサイズであり、Nの値の例は4、8、12、16などであり、diおよびmiは、それぞれの量子化値およびデルタ値を指し、iは0、1、2、または3である。
量子化値d0~d3を使用して、非線形マッピングの組み合わせを識別することができる。図20に示す例では、CCSOフィルタは4つのフィルタ入力d0~d3を有し、各フィルタ入力は3つの量子化値(例えば、-1、0、および1)のうちの1つを有することができ、よって組み合わせの総数は81(例えば、34)である。図21A~図21Cに、本開示の一実施形態による81通りの組み合わせの一例を示す。最後の列は、各組み合わせの出力オフセット値を表し得る。出力オフセット値は、0、1、-1、3、-3、5、-5、-7などの整数とすることができる。
CCSOフィルタの最終フィルタリングプロセスを、以下のように適用することができる。
f’=clip(f+s) 式(21)
式中、fは、フィルタリングされるべき再構成サンプルであり、sは、例えば図21A~図21Cの表から取り出された出力オフセット値である。式(21)に示す例では、フィルタリングされるべき再構成サンプルfのフィルタリングされたサンプル値f’を、ビット深度と関連付けられた範囲にさらにクリップすることができる。
ローカルサンプルオフセット(LSO)法またはLSOフィルタリングプロセスをビデオコーディングに使用することができる。LSOでは、CCSOで使用されるのと同様のフィルタリング手法を適用することができる。しかしながら、出力オフセット値を、フィルタリングプロセスで使用された入力再構成サンプルがあるのと同じ色成分である色成分に対して適用することができる。したがって、LSOでは、フィルタリングプロセスで使用される入力再構成サンプル(例えば、p0~p3およびc)とフィルタリングされるべき再構成サンプル(例えば、f)とは、同じ成分、例えば、ルマ成分、クロマ成分、または任意の適切な成分などにある。LSOは、CCSOと同様または同一の(例えば図20に示すような)フィルタ形状とすることができる。
より複雑度の低い3タップCCSO設計をビデオコーディングに使用することができる。図22に、本開示の一実施形態によるCCSOの例示的な実装形態を示す。8つの異なるフィルタ形状を定義することができる。フィルタ形状の各々は、第1の成分(第1の色成分とも呼ばれる)における3つの再構成サンプル(3つのタップとも呼ばれる)の位置を定義することができる。3つの再構成サンプルは、(cとして表す)中央サンプルを含むことができる。一例では、フィルタリングされるべき第2の色成分内の再構成サンプルは、中央サンプルcと同じ場所に位置する。明確にするために、フィルタリングされるべき第2の色成分内の再構成サンプルは、図22には示されていない。
SAOフィルタをビデオコーディングに使用することができる。HEVCなどの例では、SAOフィルタまたはSAOフィルタリングプロセスを、例えばスライスヘッダ内のオフセット値を使用することによって、デブロッキングフィルタ後の再構成信号に適用することができる。ルマサンプルの場合、エンコーダは、SAOフィルタが現在のスライスに適用されるかどうかを判定することができる。SAOフィルタが有効である場合、表4に示すように、現在のピクチャを4つのサブ領域に再帰的に分割することができ、6つのSAOタイプ(例えば、SAOタイプ1~6)のうちの1つを各サブ領域に対して選択することができる。SAOフィルタは、再構成された画素を複数のカテゴリに分類し、現在のサブ領域内の各カテゴリの画素にオフセットを付加することによって歪みを低減することができる。SAOタイプ1~4における画素分類にエッジ特性を使用することができ、SAOタイプ5~6における画素分類に画素強度を使用することができる。
バンドオフセット(BO)を使用して、サブ領域の画素(例えば、すべての画素)を、各バンドが同じ強度間隔の画素を含み得る複数のバンドに分類することができる。強度範囲を、最小強度値(例えば、0)から最大強度値(例えば、8ビット画素の場合は255)までの複数の間隔(例えば、32間隔)に均等に分割することができ、各間隔はオフセットを有し得る。続いて、複数の間隔またはバンド(例えば、32バンド)を2つのグループに分割することができる。一方のグループは16個の中心バンドを含むことができ、他方のグループは16個の残りのバンドを含むことができる。一例では、一方のグループのオフセットのみが送られる。BOにおける画素分類操作に関して、各画素の最上位5ビットをバンドインデックスとして直接使用することができる。
エッジオフセット(EO)は、図23に示すように、エッジ方向情報を考慮した画素分類のための4つの1次元3画素パターンを使用することができる。図23に、EOにおける画素分類のための4つの1次元3画素パターンの例を示す。4つの1次元3画素パターンは、左から右に、それぞれ、1次元0度パターン(2310)、1次元90度パターン(2320)、1次元135度パターン(2330)、および1次元45度パターン(2340)である。ピクチャ(例えば、現在のピクチャ)のサブ領域ごとに、4つのパターンのうちの1つを選択して、各画素をその画素の2つの隣接画素と比較することによって画素を複数のカテゴリに分類することができる。選択は、サイド情報としてビットストリームで送ることができる。表5に、EOの画素分類規則を示す。
一例では、ラインバッファを節約できるようにデコーダ側のSAOがLCU独立に動作することが望ましい。SAOをLCU独立に動作させるために、一例では、90度、135度、および45度の分類パターンが選択されたときに各LCU内の最上行および最下行の画素はSAO処理されず、0度、135度、および45度のパターンが選択されたときに各LCU内の左端列および右端列の画素はSAO処理されない。
以下の表6に、パラメータが隣接するCTUからマージされない場合にCTUに対してシグナリングされ得る構文を記述する。
CCSOフィルタリングプロセスで使用されるフィルタまたはフィルタ形状などの特定のフィルタまたはフィルタ形状は、フィルタリングされるべき再構成サンプルと同じ場所に位置する中央サンプルから比較的遠く離れている可能性がある(1つまたは複数の)隣接サンプルにアクセスする必要がある(例えば、中央サンプルの4行上にある(1つまたは複数の)隣接サンプルにアクセスする必要がある、図22に示すフィルタ形状5、7および8)。いくつかの例では、中央サンプルから比較的遠く離れた(1つまたは複数の)隣接サンプルにアクセスすることは、ハードウェアでCCSOフィルタを実装するにはコストがかかりすぎる場合がある。したがって、図24~図28に示すように、中央サンプルに比較的近いサンプルを使用するサンプルオフセットフィルタ(例えば、CCSOやLSO)を使用することができる。いくつかの例では、中央サンプルの下方にあり、中央サンプルから比較的遠く離れた行にアクセスすることは、中央サンプルの上方にあり、中央サンプルから比較的遠く離れた行にアクセスすることほど大幅には実装コストを増加させない。したがって、いくつかの例では、中央サンプルの上方の限られた数の行にアクセスするために制約が適用され、図29に示すようなサンプルオフセットフィルタを使用することができる。
本開示の態様によれば、サンプルオフセットフィルタ(またはサンプルオフセットフィルタリングプロセス)は、第1の成分(第1の色成分とも呼ばれる)の再構成サンプルがサンプルオフセットフィルタ(またはサンプルオフセットフィルタリングプロセス)への入力として使用されるフィルタまたはフィルタリングプロセスを指すことができ、サンプルオフセットフィルタ(またはサンプルオフセットフィルタリングプロセス)の出力を、第2の成分(または第2の色成分)の(フィルタリングされるべき)再構成サンプルに適用することができる。式(21)に示すように、第2の成分の再構成サンプルを、サンプルオフセットフィルタの出力に基づいてフィルタリングすることができる。サンプルオフセットフィルタは、第2の成分の詳細を保持しながらコーディングアーチファクトを除去するためのオフセットとして出力(出力値とも呼ばれる)が再構成サンプルに適用されるインループフィルタとすることができる。サンプルオフセットフィルタは、LSO、CCSO、および適応サンプルオフセットフィルタ(ASO)のうちの1つを含むことができる。
第1の成分、第2の成分などの成分は、ルマ成分、クロマ成分、Y成分、Cb成分、Cr成分、R成分、G成分、B成分など、ビデオコーディングに使用される色空間(例えば、YCrCB、RGBなど)における任意の適切な成分とすることができる。フィルタリングされるべき再構成サンプルはエンコーダおよび/またはデコーダによって処理されることになるため、第2の成分を現在の成分と呼ぶこともできる。
一実施形態では、第1の成分(または第1の色成分)は第2の成分(または第2の色成分)とは異なり、サンプルオフセットフィルタはCCSOフィルタと呼ばれる。より具体的には、CCSOは、第1の成分の再構成サンプルがCCSOフィルタ(またはCCSOフィルタリングプロセス)への入力として使用されるフィルタまたはフィルタリングプロセスを指すことができ、CCSOフィルタ(またはCCSOフィルタリングプロセス)の出力を、第2の成分(または第2の色成分)の(フィルタリングされるべき)再構成サンプルに適用することができる。式(21)に示すように、第2の成分の再構成サンプルを、CCSOフィルタの出力に基づいてフィルタリングすることができる。一例では、CCSOの場合、第1の成分はルマ成分であり、第2の成分はクロマ成分である。一例では、CCSOの場合、第1の成分と第2の成分とは2つの異なるクロマ成分である。
一実施形態では、サンプルオフセットフィルタの第1の成分はサンプルオフセットフィルタの第2の成分であり、サンプルオフセットフィルタをLSOフィルタと呼ぶことができる。LSOフィルタは、第1の成分(または第1の色成分)(例えば、Y、Cb、またはCr)の再構成サンプルが入力として使用されるフィルタまたはフィルタリングプロセスとすることができ、出力を、例えば、第1の成分の再構成サンプルをフィルタリングするために、同じ第1の成分に適用することができる。
サンプルオフセットフィルタが現在のピクチャ内の現在の成分(または現在の色成分)の(フィルタリングされるべき)再構成サンプルに適用される場合、サンプルオフセットフィルタのフィルタ形状は、複数のフィルタ形状(または複数のフィルタ)のうちの1つとすることができる。複数のフィルタ形状の各々は、現在のピクチャ内の第1の成分(または第1の色成分)の第1の再構成サンプルを含むことができる。本開示の態様によれば、複数のフィルタ形状の各々について、第1の再構成サンプルの最上部サンプルは、現在の成分の(フィルタリングされるべき)再構成サンプルと同じ場所に位置する第1の成分の中央サンプル(中央再構成サンプルとも呼ばれる)からN行(またはライン)以内に位置する。フィルタリングされるべき再構成サンプルは、現在の成分にある。
いくつかの実施形態では、第1の成分の中央サンプルは、現在の成分の(フィルタリングされるべき)再構成サンプルと同じ位置にある。一例では、第1の成分はルマ成分であり、現在の成分はクロマ成分である。図17Aを参照すると、中央サンプルはルマサンプル(1701(1))であり、フィルタリングされるべき再構成サンプルはクロマサンプル1705であり、中央サンプル(例えば、(1701(1)))とフィルタリングされるべき再構成サンプル(例えば、(1705))とは同じ位置にある。
いくつかの実施形態では、第1の成分の中央サンプルは、現在の成分の(フィルタリングされるべき)再構成サンプルの位置とはわずかに異なる位置にある。図17Aを参照すると、中央サンプルはルマサンプル(1701(1))であり、フィルタリングされるべき再構成サンプルはクロマサンプル(1703(1))であり、中央サンプル(例えば、(1701(1)))とフィルタリングされるべき再構成サンプル(例えば、(1703(1)))とは、わずかに異なる位置に位置する(例えば、垂直方向に沿った差分は1行より小さい)。例えば、図17Aを参照すると、現在のピクチャにおける垂直方向に沿ったオフセットは0.5行である。中央サンプル(例えば、(1701(1)))とフィルタリングされるべき再構成サンプル(例えば、(1703(1)))とは、同じ場所に位置する。
いくつかの実施形態では、複数のフィルタ形状の各々について、第1の再構成サンプルの最上部サンプルは、フィルタリングされるべき再構成サンプルからN行(またはライン)以内に位置する。Nは、1~1024の範囲などの任意の適切な正の整数とすることができる。例えば、サンプルオフセットフィルタ(例えば、CCSO、LSO)のハードウェア実装コストを削減するために、Nを比較的小さい整数に制約することができる。いくつかの例では、Nが比較的小さい整数に制約される場合、中央サンプルから制約された行数またはライン数以内にある隣接サンプルのみが使用される。一例では、Nは3以下である。
一例では、複数のフィルタ形状の各々における第1の再構成サンプルの数は5より小さい。
一例では、複数のフィルタ形状の各々が、第1の成分の同数M個の第1の再構成サンプルを有する。Mは正の整数である。数M個の第1の再構成サンプルを有するフィルタまたはフィルタ形状を、MタップフィルタまたはMタップを有するフィルタと呼ぶことができる。
一例では、Nは1である。一例では、Nが1である場合、複数のフィルタ形状の各々における第1の再構成サンプルの数は3である。
一実施形態では、複数のフィルタ形状の各々は、現在の成分の(フィルタリングされるべき)再構成サンプルと同じ場所に位置する中央サンプルを含む。第1の再構成サンプルは、中央サンプルを含む。第1の再構成サンプルの最上部サンプルは、中央サンプルからN行(またはライン)以内に位置する。上述のように、Nは3以下とすることができる。一例では、Nは1である。
続いて、フィルタ形状内の第1の再構成サンプルに基づいてサンプルオフセットフィルタの出力値を決定することができる。さらに、式(21)に示すように、再構成サンプルおよびサンプルオフセットフィルタの出力値に基づいて現在の成分の再構成サンプルのフィルタリングされたサンプル値を決定することができる。
一実施形態では、複数のフィルタ形状の各々は、現在の成分の再構成サンプルと同じ場所に位置する中央サンプルを含み、複数のフィルタ形状の各々における第1の再構成サンプルの数は3である。複数のフィルタ形状の各々における(中央サンプルとは異なる)残りの第1の再構成サンプルは、中央サンプルに対して対称または非対称に配置することができる。さらに、一例では、複数のフィルタ形状の各々における第1の再構成サンプルは、中央サンプルと、中央サンプルに対して対称である2つのサンプルとを含む。一例では、Nは1である。
一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図24に示すように、以下の7つの異なる3タップフィルタ形状のうちの1つまたは複数を含む。図24に、本開示の一実施形態によるサンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)の一例を示す。複数のフィルタ形状は、フィルタ形状(または複数のフィルタ)1~7を含む。複数のフィルタ形状の各々は、(cとして表す)中央サンプルと、中央サンプルに対して対称である2つのサンプルとを含む3つの第1の再構成サンプルを含むことができる。Nは1である。例えば、フィルタ形状1、2、4、6、および7の場合、第1の再構成サンプルの最上部サンプル(例えば、サンプル(2401)~(2405)の各々)は、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、1行上)に位置する。例えば、フィルタ形状3および5の場合、第1の再構成サンプルの最上部サンプルは、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、同じ行)に位置する。
より具体的には、図24を参照すると、現在のピクチャの第1の成分内の中央サンプルcの位置は(i,j)であり、iおよびjは整数である。複数のフィルタ形状は、7つのフィルタ形状1~7を含む。7つのフィルタ形状のうちの第1のフィルタ形状における2つのサンプルの位置は、(i-1,j)および(i+1,j)である。7つのフィルタ形状のうちの第2のフィルタ形状における2つのサンプルの位置は、(i-1,j-1)および(i+1,j+1)である。7つのフィルタ形状のうちの第3のフィルタ形状における2つのサンプルの位置は、(i,j-1)および(i,j+1)である。7つのフィルタ形状のうちの第4のフィルタ形状における2つのサンプルの位置は、(i+1,j-1)および(i-1,j+1)である。7つのフィルタ形状のうちの第5のフィルタ形状における2つのサンプルの位置は、(i,j-4)および(i,j+4)である。7つのフィルタ形状のうちの第6のフィルタ形状における2つのサンプルの位置は、(i-1,j-7)および(i+1,j+7)である。7つのフィルタ形状のうちの第7のフィルタ形状における2つのサンプルの位置は、(i+1、j-7)および(i-1,j+7)である。図24のフィルタ形状のサブセットは、他の実施形態で使用することができる。一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図24のフィルタ形状1~7のうちの1つまたは複数を含む。
一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図25に示すように、以下の6つの異なる3タップフィルタ形状のうちの1つまたは複数を含む。図25に、本開示の一実施形態によるサンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)の一例を示す。複数のフィルタ形状は、フィルタ形状(または複数のフィルタ)1~6を含む。複数のフィルタ形状の各々は、(cとして表す)中央サンプルと、中央サンプルに対して対称である2つのサンプルとを含む3つの第1の再構成サンプルを含むことができる。Nは1である。例えば、フィルタ形状1、2、および4の場合、第1の再構成サンプルの最上部サンプル(例えば、サンプル(2501)~(2503)の各々)は、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、1行上)に位置する。例えば、フィルタ形状3、5、および6の場合、第1の再構成サンプルの最上部サンプルは、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、同じ行)に位置する。
より具体的には、図25を参照すると、現在のピクチャの第1の成分内の中央サンプルcの位置は(i,j)であり、iおよびjは整数である。複数のフィルタ形状は、7つのフィルタ形状1~6を含む。6つのフィルタ形状のうちの第1のフィルタ形状における2つのサンプルの位置は、(i-1,j)および(i+1,j)である。6つのフィルタ形状のうちの第2のフィルタ形状における2つのサンプルの位置は、(i-1,j-1)および(i+1,j+1)である。6つのフィルタ形状のうちの第3のフィルタ形状における2つのサンプルの位置は、(i,j-1)および(i,j+1)である。6つのフィルタ形状のうちの第4のフィルタ形状における2つのサンプルの位置は、(i+1,j-1)および(i-1,j+1)である。6つのフィルタ形状のうちの第5のフィルタ形状における2つのサンプルの位置は、(i,j-4)および(i,j+4)である。6つのフィルタ形状のうちの第6のフィルタ形状における2つのサンプルの位置は、(i,j-7)および(i,j+7)である。これらのフィルタ形状のサブセットは、他の実施形態で使用することができる。一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図25のフィルタ形状1~6のうちの1つまたは複数を含む。
一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図26に示すように、以下の7つの異なる3タップフィルタ形状のうちの1つまたは複数を含む。図26に、本開示の一実施形態によるサンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)の一例を示す。複数のフィルタ形状は、フィルタ形状(または複数のフィルタ)1~7を含む。複数のフィルタ形状の各々は、(cとして表す)中央サンプルと、中央サンプルに対して対称である2つのサンプルとを含む3つの第1の再構成サンプルを含むことができる。Nは1である。例えば、フィルタ形状1、2、および4~7の場合、第1の再構成サンプルの最上部サンプル(例えば、サンプル(2601)~(2606)の各々)は、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、1行上)に位置する。例えば、フィルタ形状3の場合、第1の再構成サンプルの最上部サンプルは、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、同じ行)に位置する。
より具体的には、図26を参照すると、現在のピクチャの第1の成分内の中央サンプルcの位置は(i,j)であり、iおよびjは整数である。複数のフィルタ形状は、7つのフィルタ形状1~7を含む。7つのフィルタ形状のうちの第1のフィルタ形状における2つのサンプルの位置は、(i-1,j)および(i+1,j)である。7つのフィルタ形状のうちの第2のフィルタ形状における2つのサンプルの位置は、(i-1,j-1)および(i+1,j+1)である。7つのフィルタ形状のうちの第3のフィルタ形状における2つのサンプルの位置は、(i,j-1)および(i,j+1)である。7つのフィルタ形状のうちの第4のフィルタ形状における2つのサンプルの位置は、(i+1,j-1)および(i-1,j+1)である。7つのフィルタ形状のうちの第5のフィルタ形状における2つのサンプルの位置は、(i-1,j-3)および(i+1,j+3)である。7つのフィルタ形状のうちの第6のフィルタ形状における2つのサンプルの位置は、(i+1,j-5)および(i-1,j+5)である。7つのフィルタ形状のうちの第7のフィルタ形状における2つのサンプルの位置は、(i-1,j-7)および(i+1、j+7)である。これらのフィルタ形状のサブセットは、他の実施形態で使用することができる。一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図26のフィルタ形状1~7のうちの1つまたは複数を含む。
一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図27に示すように、以下の7つの異なる3タップフィルタ形状のうちの1つまたは複数を含む。図27に、本開示の一実施形態によるサンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)の一例を示す。複数のフィルタ形状は、フィルタ形状(または複数のフィルタ)1~7を含む。複数のフィルタ形状の各々は、(cとして表す)中央サンプルと、中央サンプルに対して対称である2つのサンプルとを含む3つの第1の再構成サンプルを含むことができる。Nは1である。例えば、フィルタ形状1、2、および4~7の場合、第1の再構成サンプルの最上部サンプル(例えば、サンプル(2701)~(2706)の各々)は、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、1行上)に位置する。例えば、フィルタ形状3の場合、第1の再構成サンプルの最上部サンプルは、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、同じ行)に位置する。
より具体的には、図27を参照すると、現在のピクチャの第1の成分内の中央サンプルcの位置は(i,j)であり、iおよびjは整数である。複数のフィルタ形状は、7つのフィルタ形状1~7を含む。7つのフィルタ形状のうちの第1のフィルタ形状における2つのサンプルの位置は、(i-1,j)および(i+1,j)である。7つのフィルタ形状のうちの第2のフィルタ形状における2つのサンプルの位置は、(i-1,j-1)および(i+1,j+1)である。7つのフィルタ形状のうちの第3のフィルタ形状における2つのサンプルの位置は、(i,j-1)および(i,j+1)である。7つのフィルタ形状のうちの第4のフィルタ形状における2つのサンプルの位置は、(i+1,j-1)および(i-1,j+1)である。7つのフィルタ形状のうちの第5のフィルタ形状における2つのサンプルの位置は、(i+1,j-3)および(i-1,j+3)である。7つのフィルタ形状のうちの6番目の2つのサンプルの位置は、(i-1,j-5)および(i+1,j+5)である。7つのフィルタ形状のうちの第7のフィルタ形状における2つのサンプルの位置は、(i+1、j-7)および(i-1,j+7)である。これらのフィルタ形状のサブセットは、他の実施形態で使用することができる。一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図27のフィルタ形状1~7のうちの1つまたは複数を含む。
一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図28に示すように、以下の7つの異なる3タップフィルタ形状(フィルタ形状またはフィルタ1~7)のうちの1つまたは複数を含む。図28に、本開示の一実施形態によるサンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)の一例を示す。フィルタ形状1~7の各々は、(cとして表す)中央サンプルと、中央サンプルに対して対称である2つのサンプルとを含む3つの第1の再構成サンプルを含むことができる。Nは1である。例えば、フィルタ形状1、2、および4の場合、第1の再構成サンプルの最上部サンプル(例えば、サンプル(2801)~(2803)の各々)は、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、1行上)に位置する。例えば、フィルタ形状3および5~7の場合、第1の再構成サンプルの最上部サンプルは、(中央サンプルcと同じ場所に位置する)フィルタリングされるべき再構成サンプルから1行以内(例えば、同じ行)に位置する。
より具体的には、図28を参照すると、現在のピクチャの第1の成分内の中央サンプルcの位置は(i,j)であり、iおよびjは整数である。7つのフィルタ形状のうちの第1のフィルタ形状における2つのサンプルの位置は、(i-1,j)および(i+1,j)である。7つのフィルタ形状のうちの第2のフィルタ形状における2つのサンプルの位置は、(i-1,j-1)および(i+1,j+1)である。7つのフィルタ形状のうちの第3のフィルタ形状における2つのサンプルの位置は、(i,j-1)および(i,j+1)である。7つのフィルタ形状のうちの第4のフィルタ形状における2つのサンプルの位置は、(i+1,j-1)および(i-1,j+1)である。7つのフィルタ形状のうちの第5のフィルタ形状における2つのサンプルの位置は、(i,j-3)および(i,j+3)である。7つのフィルタ形状のうちの第6のフィルタ形状における2つのサンプルの位置は、(i,j-5)および(i,j+5)である。7つのフィルタ形状のうちの第7のフィルタ形状における2つのサンプルの位置は、(i,j-7)および(i,j+7)である。一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される複数のフィルタ形状(または複数のフィルタ)は、図28のフィルタ形状1~7のうちの1つまたは複数を含む。一実施形態によれば、複数のフィルタ形状は、図28のフィルタ1~6を含む。
サンプルオフセットフィルタ(例えば、CCSOやLSO)に使用されるフィルタまたはフィルタ形状は対称でない場合もある。一例では、サンプルオフセットフィルタ(例えば、CCSOやLSO)への入力として使用される(1つまたは複数の)最上行(例えば、フィルタリングされるべき再構成サンプルと同じ場所に位置する第1の成分の中央サンプルの上方にある(1つまたは複数の)行)の最大数と、最下行(例えば、フィルタリングされるべき再構成サンプルと同じ場所にある中央サンプルの下方にある(1つまたは複数の)行)の最大数とは、異なる。図29に、本開示の一実施形態によるフィルタ形状(またはフィルタ)1~4および6~8の一例を示す。フィルタ形状(またはフィルタ)1~4および6~8の各々は、第1の成分の中央サンプルcおよび他の2つのサンプルを含む3タップフィルタである。フィルタ形状1~4および6は対称であり、中央サンプルcに対して他の2つのサンプルは対称に位置している。フィルタ形状7および8は非対称であり、中央サンプルcに対して他の2つのサンプルは対称に配置されていない。一例では、非対称フィルタ(例えば、図29のフィルタ7やフィルタ8)がサンプルオフセットフィルタ(例えば、CCSOやLSO)に使用される場合、最上部サンプルの最大行(またはライン)数は、フィルタリングされるべき現在のサンプル(例えば、現在の成分内の現在の再構成サンプル)に対してNに制限される。一例では、現在のサンプルは、第1の成分の中央サンプルcと同じ場所に位置する。上述のように、Nは任意の適切な正の整数とすることができる。Nの値の例には、1~1024が含まれ得るが、これらに限定されない。一例では、Nは3以下である。一例では、Nは1である。
本開示のいくつかの態様によれば、フィルタ(例えば、フィルタ内のフィルタタップの(1つもしくは複数の)位置)またはサンプルオフセットフィルタ(例えば、CCSOやLSO)に使用されるフィルタ形状は、FU(例えば、128×128クロマブロック)内のフィルタリングされるべき再構成サンプル(現在のサンプルとも呼ばれる)の相対位置に依存し得る。
一実施形態では、フィルタリングユニット内の現在の成分の再構成サンプルについてのコーディングされた情報を、コーディングされたビデオビットストリームから復号することができる。コーディングされた情報は、フィルタリングされるべき再構成サンプルに適用されるべきサンプルオフセットフィルタを示すことができる。サンプルオフセットフィルタのフィルタ形状は、現在のピクチャ内の第1の成分の第1の再構成サンプルを含むことができる。FUは、現在のピクチャ内にある。上述したように、フィルタ形状は、FUにおける再構成サンプルの位置(または相対位置)に基づいて決定することができる。再構成サンプルは、フィルタ形状の中央サンプルと同じ場所に位置し得る。続いて、フィルタ形状内の第1の再構成サンプルに基づいてサンプルオフセットフィルタの出力値を決定することができる。次いで、再構成サンプルおよびサンプルオフセットフィルタの出力値に基づいて、現在の成分の再構成サンプルのフィルタリングされたサンプル値を決定することができる。
一実施形態では、現在の成分は、現在のピクチャ内のフィルタリングユニット内にある。サンプルオフセットフィルタのフィルタ形状を、フィルタリングユニット内の再構成サンプルの位置に基づいて決定することができる。
一実施形態では、サンプルオフセットフィルタ(例えば、CCSOやLSO)を適用するとき、サンプルオフセットフィルタが、フィルタリングされるべき現在のサンプル(または現在のサンプルと同じ場所に位置する中央サンプル)に対して上部K行を越えて到達する1つまたは複数のフィルタタップを有する場合には、サンプルオフセットフィルタは許容されない。一例では、サンプルオフセットフィルタは、フィルタリングされるべき現在のサンプルに対して上部K行以内のフィルタタップを有する別のサンプルオフセットフィルタで置き換えられる。Kは正の整数とすることができる。一例では、KはNに等しい。
一実施形態では、サンプルオフセットフィルタ(例えば、CCSOやLSO)を適用するとき、サンプルオフセットフィルタが、フィルタリングされるべき現在のFU(またはCTU)に対して上部L行を越えて到達する1つまたは複数のフィルタタップを有する場合には、それら1つまたは複数のフィルタタップを、同じ列内にあるが、フィルタリングされるかまたは他の方法でパディングされるべき現在のFU(またはCTU)に対して上部L行以内に位置する最近傍のサンプルに移動させることができる。最上部L行は、現在のFU(またはCTU)内のサンプルに対してであり得る。一例では、最上部L行は、現在のFU(またはCTU)の最上部境界に対してである。例えば、サンプルオフセットフィルタが、フィルタリングされるべき現在のFU(またはCTU)の最上部境界に対して上部L行を越えて到達する1つまたは複数のフィルタタップを有する場合には、それら1つまたは複数のフィルタタップを、同じ列内にあるが、フィルタリングされるかまたは他の方法でパディングされるべき現在のFU(またはCTU)の最上部境界に対して上部L行以内に位置する最近傍のサンプルに移動させることができる。Lは整数とすることができる。一例では、LはNに等しい。
図30に、本開示の一実施形態による、1つまたは複数のフィルタタップ(例えば、フィルタタップ7および8)が移動される一例を示す。図30は、7つのフィルタ(またはフィルタ形状)1~4および6~8を示している。フィルタタップ1~4および6は、現在のFUの最上部境界など、現在のFU(またはCTU)の上部4行以内に位置しており、((3001)~(3002)で示す)2つのフィルタタップ7~8は、現在のFU(またはCTU)から上部4行を越えて位置している。次いで、フィルタタップ7~8は、(3003)~(3004)で示す新しい位置に移動される。フィルタタップ7~8の新しい位置は、現在のFU(またはCTU)の上部1行以内など、現在のFUから上部4行以内に配置することができる。
図20、図22、および図24~図30に示すフィルタなどのフィルタの例は、フィルタリングされるべき再構成サンプル(または現在のサンプル)と同じ場所に位置する中央サンプルcを含む。一般に、サンプルオフセットフィルタは、中央サンプルを含むか、または中央サンプルを除外することができる。
図31に、本開示の一実施形態によるプロセス(3100)の概要を示すフローチャートを示す。プロセス(3100)は、現在のピクチャのFU内の(1つまたは複数の)サンプルなどの、現在のピクチャ内の(1つまたは複数の)サンプルをフィルタリングする際に使用することができる。様々な実施形態において、プロセス(3100)は、端末装置(310)、(330)、および(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などといった処理回路によって実行される。いくつかの実施形態では、プロセス(3100)はソフトウェア命令で実装され、よって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(3100)を実行する。プロセスは(S3101)から開始し、(S3110)に進む
(S3110)で、現在のピクチャ内の現在の成分の再構成サンプルについてのコーディングされた情報を、コーディングされたビデオビットストリームから復号することができる。コーディングされた情報は、再構成サンプルに適用されるべきサンプルオフセットフィルタを示すことができる。サンプルオフセットフィルタのフィルタ形状は、複数のフィルタ形状のうちの1つとすることができる。複数のフィルタ形状の各々は、現在のピクチャ内の第1の成分の第1の再構成サンプルを含むことができる。一実施形態では、複数のフィルタ形状の各々について、第1の再構成サンプルの最上部サンプルは、現在の成分の再構成サンプルと同じ場所に位置する第1の成分内の中央再構成サンプル(中央サンプルとも呼ばれる)からN行(またはライン)以内に位置することができる。Nは3以下とすることができる。
一例では、複数のフィルタ形状の各々における第1の再構成サンプルの数は5より小さい。
一例では、複数のフィルタ形状の各々が、現在の成分の再構成サンプルと同じ場所に位置する中央再構成サンプルを含み、複数のフィルタ形状の各々における第1の再構成サンプルの数は3である。複数のフィルタ形状の各々における第1の再構成サンプルは、中央再構成サンプルと、中央再構成サンプルに対して対称である2つのサンプルとを含むことができる。
一例では、Nは1である。
一例では、現在のピクチャの第1の成分内の中央再構成サンプルの位置は(i,j)であり、iおよびjは整数であり、複数のフィルタ形状は、6つのフィルタ形状を含む。6つのフィルタ形状のうちの第1のフィルタ形状における2つのサンプルの位置は、(i-1,j)および(i+1,j)である。6つのフィルタ形状のうちの第2のフィルタ形状における2つのサンプルの位置は、(i-1,j-1)および(i+1,j+1)である。6つのフィルタ形状のうちの第3のフィルタ形状における2つのサンプルの位置は、(i,j-1)および(i,j+1)である。6つのフィルタ形状のうちの第4のフィルタ形状における2つのサンプルの位置は、(i+1,j-1)および(i-1,j+1)である。6つのフィルタ形状のうちの第5のフィルタ形状における2つのサンプルの位置は、(i,j-4)および(i,j+4)である。6つのフィルタ形状のうちの第6のフィルタ形状における2つのサンプルの位置は、(i,j-7)および(i,j+7)である。
一例では、現在のピクチャの第1の成分内の中央再構成サンプルの位置は(i,j)であり、iおよびjは整数であり、複数のフィルタ形状は、6つの異なるフィルタ形状を含む。第1のフィルタ形状における2つのサンプルの位置は、(i-1,j)および(i+1,j)である。第2のフィルタ形状における2つのサンプルの位置は、(i-1,j-1)および(i+1,j+1)である。第3のフィルタ形状における2つのサンプルの位置は、(i,j-1)および(i,j+1)である。第4のフィルタ形状における2つのサンプルの位置は、(i+1,j-1)および(i-1,j+1)である。第5のフィルタ形状における2つのサンプルの位置は、(i,j-3)および(i,j+3)である。第6のフィルタ形状における2つのサンプルの位置は、(i,j-5)および(i,j+5)である。
サンプルオフセットフィルタは、CCSOフィルタまたはLSOフィルタとすることができる。
一例では、第1の成分は第2の成分である。一例では、第1の成分は第2の成分とは異なる。第1の成分をルマ成分とすることができ、現在の成分をクロマ成分とすることができる。
一例では、サンプルオフセットフィルタはLSOフィルタであり、第1の成分は現在の成分であり、現在の成分内の再構成サンプルは中央再構成サンプルである。
(S3120)で、フィルタ形状内の第1の再構成サンプルに基づいてサンプルオフセットフィルタの出力値を決定することができる。
(S3130)で、再構成サンプルおよびサンプルオフセットフィルタの出力値に基づいて、現在の成分の再構成サンプルのフィルタリングされたサンプル値を決定することができる。様々な例において、サンプルオフセットフィルタは、現在のピクチャ内の現在の成分の詳細を保持しながらコーディングアーチファクトを除去するためのオフセットとして出力値が再構成サンプルに適用されるインループフィルタである。サンプルオフセットフィルタは、LSO、CCSO、および適応サンプルオフセットフィルタ(ASO)のうちの1つを含むことができる。プロセス(3100)は、(S3199)に進み、終了する。
プロセス(3100)は、適切に適応させることができる。プロセス(3100)の(1つまたは複数の)ステップを、修正および/または省略することができる。(1つまたは複数の)追加のステップを追加することができる。任意の適切な実施順序を使用することができる。一例では、現在の成分は、現在のピクチャ内のフィルタリングユニット内にある。サンプルオフセットフィルタのフィルタ形状を、フィルタリングユニット内の再構成サンプルの位置に基づいて決定することができる。サンプルオフセットフィルタはCCSOフィルタであり、フィルタリングユニットは128×128クロマサンプルを有するクロマブロックである。
図32に、本開示の一実施形態によるプロセス(3200)の概要を示すフローチャートを示す。プロセス(3200)は、現在のピクチャのFU内の(1つまたは複数の)サンプルなどの、現在のピクチャ内の(1つまたは複数の)サンプルをフィルタリングする際に使用することができる。様々な実施形態において、プロセス(3200)は、端末装置(310)、(330)、および(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路などといった処理回路によって実行される。いくつかの実施形態では、プロセス(3200)はソフトウェア命令で実装され、よって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(3200)を実行する。プロセスは(S3201)から開始し、(S3210)に進む
(S3210)で、フィルタリングユニット内の現在の成分の再構成サンプルについてのコーディングされた情報を、コーディングされたビデオビットストリームから復号することができる。コーディングされた情報は、再構成サンプルに適用されるべきサンプルオフセットフィルタを示すことができる。サンプルオフセットフィルタのフィルタ形状は、現在のピクチャ内の第1の成分の第1の再構成サンプルを含むことができ、フィルタリングユニットは現在のピクチャ内にある。
一例では、フィルタリングユニットは、128×128クロマサンプルを有するクロマブロックである。
一例では、サンプルオフセットフィルタは、交差成分サンプルオフセット(CCSO)フィルタである。
一例では、サンプルオフセットフィルタは、ローカルサンプルオフセット(LSO)フィルタである。
(S3220)で、図30を参照して説明したように、フィルタリングユニット内の再構成サンプルの位置に基づいて、フィルタ形状(例えば、(1つまたは複数の)それぞれのフィルタタップの(1つまたは複数の)位置)を決定することができる。
(S3230)で、フィルタ形状内の第1の再構成サンプルに基づいてサンプルオフセットフィルタの出力値を決定することができる。
(S3240)で、再構成サンプルおよびサンプルオフセットフィルタの出力値に基づいて、現在の成分の再構成サンプルのフィルタリングされたサンプル値を決定することができる。プロセス(3200)は、(S3299)に進み、終了する。
プロセス(3200)は、適切に適応させることができる。プロセス(3200)の(1つまたは複数の)ステップは、修正および/または省略することができる。(1つまたは複数の)追加のステップを追加することができる。任意の適切な実施順序を使用することができる。
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、方法(または実施形態)、エンコーダ、およびデコーダの各々が、処理回路(例えば、1つまたは複数のプロセッサや1つまたは複数の集積回路)によって実装されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に格納されたプログラムを実行する。本開示の実施形態は、ルマブロックまたはクロマブロックに適用されてもよい。
前述した技術は、コンピュータ可読命令を使用する、1つまたは複数のコンピュータ可読媒体に物理的に格納されたコンピュータソフトウェアとして実装することができる。例えば、図33に、開示の主題の特定の実施形態を実装するのに適したコンピュータシステム(3300)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)などによって直接、または解釈、マイクロコード実行などを介して、実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどの機構を施される得る任意の適切な機械コードまたはコンピュータ言語を使用してコーディングすることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはその構成要素上で実行することができる。
コンピュータシステム(3300)について図33に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(3300)の例示的な実施形態に示されている構成要素のいずれか1つまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(3300)は、特定のヒューマンインターフェース入力装置を含み得るそのようなヒューマンインターフェース入力装置は、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、オーディオ入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した、1人または複数の人間のユーザによる入力に応答し得る。ヒューマンインターフェース装置はまた、オーディオ(例えば、音声、音楽、周囲音)、画像(例えば、走査画像、写真画像は静止画像カメラから取得)、ビデオ(例えば、二次元映像、立体映像を含む三次元映像)などの、必ずしも人間による意識的な入力に直接関連しない特定のメディアを取り込むために使用することもできる。
入力ヒューマンインターフェース装置は、キーボード(3301)、マウス(3302)、トラックパッド(3303)、タッチスクリーン(3310)、データグローブ(図示せず)、ジョイスティック(3305)、マイクロフォン(3306)、スキャナ(3307)、カメラ(3308)のうちの1つまたは複数(図示された各々のうちの1つのみ)を含み得る。
コンピュータシステム(3300)はまた、特定のヒューマンインターフェース出力装置も含み得る。そのようなヒューマンインターフェース出力装置は、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間ユーザの感覚を刺激し得る。そのようなヒューマンインターフェース出力装置は、触覚出力装置(例えば、タッチスクリーン(3310)、データグローブ(図示せず)、またはジョイスティック(3305)による触覚フィードバック、ただし、入力装置として機能しない触覚フィードバック装置もあり得る)、オーディオ出力装置(例えば、スピーカ(3309)、ヘッドホン(図示せず))、視覚出力装置(例えば、各々タッチスクリーン入力機能ありまたはなしの、各々触覚フィードバック機能ありまたはなしの、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(3310)など、それらの一部は、二次元視覚出力、または立体画像出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段による四次元以上の出力が可能であり得る)、ならびにプリンタ(図示せず)を含み得る。
コンピュータシステム(3300)はまた、人間がアクセス可能な記憶装置およびそれらの関連媒体、例えば、CD/DVDなどの媒体(3321)を有するCD/DVD ROM/RW(3320)を含む光学媒体、サムドライブ(3322)、リムーバブルハードドライブまたはソリッドステートドライブ(3323)、テープやフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず)なども含むことができる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことも理解するはずである。
コンピュータシステム(3300)はまた、1つまたは複数の通信ネットワーク(3355)へのインターフェース(3354)も含むことができる。ネットワークは、例えば、無線、有線、光とすることができる。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業、リアルタイム、遅延耐性などとすることができるネットワークの例には、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビ、および地上波放送テレビを含むテレビ有線または無線広域デジタルネットワーク、CANbusを含む車両および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(3349)(例えば、コンピュータシステム(3300)のUSBポートなど)に取り付けられた外部ネットワークインターフェースアダプタを必要とする。他のネットワークは、一般に、後述するようなシステムバスへの取り付けによってコンピュータシステム(3300)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースやスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(3300)は他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたはワイドエリアデジタルネットワークを使用する他のコンピュータシステムに対して、一方向の受信のみ(例えば、テレビ放送)、一方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向とすることができる。上述のようなネットワークおよびネットワークインターフェースの各々で特定のプロトコルおよびプロトコルスタックを使用することができる。
前述のヒューマンインターフェース装置、人間がアクセス可能な記憶装置、およびネットワークインターフェースは、コンピュータシステム(3300)のコア(3340)に取り付けることができる。
コア(3340)は、1つまたは複数の中央処理装置(CPU)(3341)、グラフィックスプロセッシングユニット(GPU)(3342)、フィールドプログラマブルゲートエリア(FPGA)(3343)の形の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(3344)、グラフィックスアダプタ(3350)などを含むことができる。これらのデバイスは、リードオンリメモリ(ROM)(3345)、ランダムアクセスメモリ(3346)、内部ユーザアクセス可能でないハードドライブ、SSDなどの内部大容量ストレージ(3347)と共に、システムバス(3348)を介して接続され得る。一部のコンピュータシステムでは、システムバス(3348)を、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形でアクセス可能とすることができる。周辺装置は、コアのシステムバス(3348)に直接、または周辺バス(3349)を介して取り付けることができる。一例では、スクリーン(3310)をグラフィックスアダプタ(3350)に接続することができる。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
CPU(3341)、GPU(3342)、FPGA(3343)、およびアクセラレータ(3344)は、組み合わせて前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードを、ROM(3345)またはRAM(3346)に格納することができる。また移行データをRAM(3346)に格納することもでき、永続データは、例えば内部大容量ストレージ(3347)に格納することができる。メモリデバイスのいずれかへの高速記憶および取得を、1つまたは複数のCPU(3341)、GPU(3342)、大容量ストレージ(3347)、ROM(3345)、RAM(3346)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有し得る。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものとすることもでき、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものとすることもできる。
限定ではなく例として、アーキテクチャを有するコンピュータシステム(3300)、特にコア(3340)は、(CPU、GPU、FPGA、アクセラレータなどを含む)(1つまたは複数の)プロセッサが、1つまたは複数の有形のコンピュータ可読媒体において具現化されたソフトウェアを実行した結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(3347)やROM(3345)などの非一時的な性質のものであるコア(3340)の特定のストレージと関連付けられた媒体とすることができる。本開示の様々な実施形態を実装するソフトウェアを、そのようなデバイスに格納し、コア(3340)によって実行することができる。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(3340)、具体的にはその中の(CPU、GPU、FPGAなどを含む)プロセッサに、RAM(3346)に格納されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することを含む、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行することができる、回路(例えば、アクセラレータ(3344))における結線接続された、または他の方法で具現化された論理の結果として機能を提供することもできる。ソフトウェアと言う場合、それは、適切な場合には、論理を含むことができ、逆もまた同様である。コンピュータ可読媒体と言う場合、それは、適切な場合には、実行のためのソフトウェアを格納する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を含むことができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM:共同探索モデル
VVC:多用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
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:周辺機器相互接続
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
HDR:ハイダイナミックレンジ
SDR:標準ダイナミックレンジ
JVET:共同ビデオ探索チーム
MPM:最確モード
WAIP:広角イントラ予測
CU:コーディングユニット
PU:予測ユニット
TU:変換ユニット
CTU:コーディングツリーユニット
PDPC:位置依存予測組み合わせ
ISP:イントラサブパーティション
SPS:シーケンスパラメータ設定
PPS:ピクチャパラメータセット
APS:適応パラメータセット
VPS:ビデオパラメータセット
DPS:復号パラメータセット
ALF:適応ループフィルタ
SAO:サンプル適応オフセット
CC-ALF:交差成分適応ループフィルタ
CDEF:制約付き方向性強化フィルタ
CCSO:交差成分サンプルオフセット
LSO:ローカルサンプルオフセット
LR:ループ復元フィルタ
AV1:AOMedia Video 1
AV2:AOMedia Video 2
本開示ではいくつかの例示的な実施形態を説明したが、本開示の範囲内に入る修正形態、置換形態、および様々な代替等価物がある。よって、当業者であれば、本明細書には明示的に図示または説明されていないが、本開示の原理を具現化し、よって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。