図3は、本開示の一実施形態による通信システム(300)の簡略化したブロック図を示す。通信システム(300)は、例えば、ネットワーク(350)を介して互いに通信できる複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1の対の端末デバイス(310)及び(320)を含む。図3の例では、第1の対の端末デバイス(310)及び(320)は、データの一方向伝送を実行してもよい。例えば、端末デバイス(310)は、ネットワーク(350)を介して他の端末デバイス(320)に送信するために、(例えば、端末デバイス(310)によってキャプチャされたビデオピクチャのストリームの)ビデオデータをコーディングしてもよい。符号化されたビデオデータは、1つ以上のコーディングされたビデオビットストリームの形式で送信されてもよい。端末デバイス(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータを復号して、ビデオピクチャを復元して復元されたビデオデータに従ってビデオピクチャを表示してもよい。一方向データ伝送は、メディア提供アプリケーション等において実装されてもよい。
他の例では、通信システム(300)は、例えば、テレビ会議アプリケーション中に実施され得るコーディングされたビデオデータの双方向伝送を実行する第2の対の端末デバイス(330)及び(340)を含む。データの双方向伝送のために、一例では、端末デバイス(330)及び(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)及び(340)の他方の端末デバイスに送信するために、(例えば、端末デバイスによってキャプチャされたビデオピクチャのストリームの)ビデオデータをコーディングしてもよい。また、端末デバイス(330)及び(340)の各端末デバイスは、端末デバイス(330)及び(340)の他方の端末デバイスによって送信されたコーディングされたビデオデータを受信してもよく、コーディングされたビデオデータを復号してビデオピクチャを復元してもよく、復元されたビデオデータに従って、アクセス可能な表示デバイスにビデオピクチャを表示してもよい。
図3の例では、端末デバイス(310)、(320)、(330)及び(340)は、サーバ、パーソナルコンピュータ及びスマートフォンとして示されることがあるが、本開示の基礎の原理の適用可能正はこれらに限定されない。本開示の実施形態は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、メディアプレイヤ、ウェアラブルコンピュータ、専用のテレビ会議機器等に実装されてもよい。ネットワーク(350)は、例えば、有線(配線接続)及び/又は無線通信ネットワークを含む、端末デバイス(310)、(320)、(330)及び(340)の間でコーディングされたビデオデータを伝達するいずれかの数又はタイプのネットワークを表す。通信ネットワーク(350)は、回線交換、パケット交換又は他のタイプのチャネルにおいてデータを交換してもよい。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、広域ネットワーク及び/又はインターネットを含む。本説明の目的では、ネットワーク(350)のアーキテクチャ及びトポロジは、本明細書において明示的に説明しない限り、本開示の動作には重要ではない。
図4は、開示の対象物のアプリケーションの例として、ビデオストリーミング環境におけるビデオエンコーダ及びビデオデコーダの配置を示す。開示の対象物は、例えば、テレビ会議、デジタルTV放送、ゲーム、仮想現実、デジタルメディア(CD、DVD、メモリスティック等を含む)上の圧縮ビデオの記憶等を含む、他のビデオ可能なアプリケーションにも同様に適用可能である。
ビデオストリーミングシステムはビデオキャプチャサブシステム(413)を含んでもよく、当該ビデオキャプチャサブシステム(413)は、例えば、非圧縮のビデオピクチャ又は画像のストリーム(402)を生成するビデオソース(401)(例えば、デジタルカメラ)を含んでもよい。一例では、ビデオピクチャのストリーム(402)は、ビデオソース(401)のデジタルカメラによって記録されたサンプルを含む。符号化ビデオデータ(404)(又はコーディングされたビデオビットストリーム)と比較したときに高いデータ量であることを強調する太線として描かれるビデオピクチャのストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理されてもよい。ビデオエンコーダ(403)は、以下により詳細に説明するように、開示の対象物の態様を可能にするため或いは実装するために、ハードウェア、ソフトウェア又はこれらの組み合わせを含んでもよい。非圧縮のビデオピクチャのストリーム(402)と比較したときにより低いデータ量であることを強調するために細線として描かれる符号化ビデオデータ(404)(又は符号化ビデオビットストリーム(404))は、将来の使用のためにストリーミングサーバ(405)に記憶されてもよく、或いは、ダウンストリームのビデオデバイス(図示せず)に直接記憶されてもよい。図4におけるクライアントサブシステム(406)及び(408)のような1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして符号化ビデオデータ(404)のコピー(407)及び(409)を取得してもよい。クライアントサブシステム(406)は、例えば、電子デバイス(430)内にビデオデコーダ(410)を含んでもよい。ビデオデコーダ(410)は、符号化ビデオデータの入力コピー(407)を復号し、ディスプレイ(412)(例えば、表示画面)又は他のレンダリングデバイス(図示せず)上にレンダリングできる非圧縮のビデオピクチャの出力ストリーム(411)を生成する。ビデオデコーダ(410)は、本開示に記載の様々な機能の一部又は全部を実行するように構成されてもよい。
いくつかのストリーミングシステムでは、符号化ビデオデータ(404)、(407)及び(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮標準に従って符号化されてもよい。これらの標準の例は、ITU-T勧告H.265を含む。一例では、開発中のビデオコーディング標準は、VVC(Versatile Video Coding)として非公式に知られている。開示の対象物は、VVC及び他のビデオコーディング標準の背景において使用されてもよい。
電子デバイス(420)及び(430)は、他の構成要素(図示せず)を含んでもよい点に留意すべきである。例えば、電子デバイス(420)は、ビデオデコーダ(図示せず)を含んでもよく、また、電子デバイス(430)は、ビデオエンコーダ(図示せず)を含んでもよい。
図5は、以下の本開示のいずれかの実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(430)に含まれてもよい。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含んでもよい。図4の例におけるビデオデコーダ(410)の代わりにビデオデコーダ(510)が使用されてもよい。
受信機(531)は、ビデオデコーダ(510)によって復号されるべき1つ以上のコーディングされたビデオシーケンスを受信してもよい。同一又は他の実施形態では、一度に1つのコーディングされたビデオシーケンスが復号されてもよく、それぞれのコーディングされたビデオシーケンスの復号は、他のコーディングされたビデオシーケンスとは独立している。各ビデオシーケンスは複数のビデオフレーム又は画像に関連してもよい。コーディングされたビデオシーケンスは、チャネル(501)から受信されてもよく、当該チャネルは、符号化ビデオデータを記憶する記憶デバイス又は符号化ビデオデータを送信するストリーミングソースへのハードウェア/ソフトウェアリンクでもよい。受信機(531)は、符号化ビデオデータを、他のデータ(コーディングされたオーディオデータ及び/又は補助データストリーム等)と共に受信してもよく、これらは、それぞれの処理回路(図示せず)に転送されてもよい。受信機(531)は、コーディングされたビデオシーケンスを他のデータから分離してもよい。ネットワークジッタを防止するために、バッファメモリ(515)は、受信機(531)とエントロピーデコーダ/パーサ(520)(以下、「パーサ(520)」という)との間に配置されてもよい。特定のアプリケーションでは、バッファメモリ(515)はビデオデコーダ(510)の一部として実装されてもよい。他のアプリケーションでは、ビデオデコーダ(510)の外側にあり分離されてもよい(図示せず)。更に他のアプリケーションでは、例えば、ネットワークジッタを防止する目的で、ビデオデコーダ(510)の外側にバッファメモリ(図示せず)が存在してもよく、例えば、再生タイミングに対処するために、ビデオデコーダ(510)の内側に他の更なるバッファメモリ(515)が存在してもよい。受信機(531)が、十分な帯域幅及び制御可能性を有する記憶/転送デバイスから、或いは、アイソクロナスネットワークからデータを受信している場合、バッファメモリ(515)は必要なくてもよく或いは小さくすることができる。インターネットのようなベストエフォート型パケットネットワークでの使用については、十分なサイズのバッファメモリ(515)が必要とされてもよく、そのサイズは比較的大きくすることができる。このようなバッファメモリは適応的なサイズで実装されてもよく、ビデオデコーダ(510)の外側のオペレーティングシステム又は同様の要素(図示せず)に少なくとも部分的に実装されてもよい。
ビデオデコーダ(510)は、符号化ビデオシーケンスからシンボル(521)を復元するためのパーサ(520)を含んでもよい。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報を含み、デバイス(512)(例えば、表示画面)のようなレンダリングデバイスを制御するための情報を潜在的に含む。当該デバイス(512)は、図5に示されているように、電子デバイス(530)の一体的な部分でもよく或いは一体的な部分でなくてもよく、電子デバイス(530)に結合されてもよい。レンダリングデバイスの制御情報は、補足エンハンスメント情報(SEI, Supplemental Enhancement Information)(SEIメッセージ)又はビデオユーザビリティ情報(VUI, Video Usability Information)パラメータセットフラグメント(図示せず)の形式でもよい。パーサ(520)は、パーサ(520)によって受信されたコーディングされたビデオシーケンスを解析/エントロピー復号してもよい。コーディングされたビデオシーケンスのエントロピーコーディングは、ビデオコーディング技術又は標準に従ってもよく、可変長コーディング、ハフマンコーディング、コンテキスト感度を伴う或いは伴わない算術コーディング等を含む様々な原理に従ってもよい。パーサ(520)は、サブグループに対応する少なくとも1つのパラメータに基づいて、コーディングビデオシーケンスから、ビデオデコーダ内の画素のサブグループのうち少なくとも1つについてのサブグループパラメータのセットを抽出してもよい。サブグループは、グループオブピクチャ(GOP, Group of Picture)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU, Coding Unit)、ブロック、変換ユニット(TU, Transformation Unit)、予測ユニット(PU, Prediction Unit)等を含んでもよい。また、パーサ(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)に利用可能な、動き補償予測ユニット(553)が予測サンプルを取り出す参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y成分(シフト)及び参照ピクチャ成分(時間)を有することができるシンボル(521)の形式で、動きベクトルによって制御されてもよい。また、動き補償は、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)から取り出されるサンプル値の補間を含んでもよく、動きベクトル予測メカニズム等に関連してもよい。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)内の様々なループフィルタリング技術を受けてもよい。ビデオ圧縮技術はループ内フィルタ技術を含んでもよく、当該ループ内フィルタ技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からシンボル(521)としてループフィルタユニット(556)に利用可能にされるが、コーディングされたピクチャ又はコーディングされたビデオシーケンスの(復号順に)前の部分の復号の間に取得されたメタ情報に応答すると共に、前に復元されてループフィルタリングされたサンプル値にも応答してもよい。以下に更に説明するように、いくつかのタイプのループフィルタが様々な順序でループフィルタユニット(556)の一部として含まれてもよい。
ループフィルタユニット(556)の出力はサンプルストリームでもよく、当該サンプルストリームは、レンダリングデバイス(512)に出力されると共に、将来のインターピクチャ予測に使用するために参照ピクチャメモリ(557)に記憶されてもよい。
特定のコーディングされたピクチャは、完全に復元されると、将来のインターピクチャ予測のための参照ピクチャとして使用されてもよい。例えば、カレントピクチャに対応するコーディングされたピクチャが完全に復元され、コーディングされたピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、カレントピクチャバッファ(558)は参照ピクチャメモリ(557)の一部となってもよく、新たなカレントピクチャバッファが、後続の符号化ピクチャの復元を開始する前に再割り当てされてもよい。
ビデオデコーダ(510)は、ITU-T Rec. H.265のような標準で採用されている所定のビデオ圧縮技術に従って復号動作を実行してもよい。コーディングされたビデオシーケンスがビデオ圧縮技術又は標準のシンタックス及びビデオ圧縮技術又は標準に文書化されているプロファイルの双方に従うという意味で、コーディングされたビデオシーケンスは、使用されているビデオ圧縮技術又は標準によって指定されたシンタックスに適合してもよい。具体的には、プロファイルは、ビデオ圧縮技術又は標準で利用可能な全てのツールから特定のツールを、そのプロファイルで使用するのに利用可能な唯一のツールとして選択してもよい。また、標準に準拠するために、コーディングされたビデオシーケンスの複雑さは、ビデオ圧縮技術又は標準のレベルによって定義される範囲内にあってもよい。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大復元サンプルレート(例えば、毎秒当たりのメガサンプル単位で測定される)、最大参照ピクチャサイズ等を制限する。場合によっては、レベルによって設定される制限は、仮想参照デコーダ(HRD, Hypothetical Reference Decoder)仕様及びコーディングされたビデオシーケンスで伝達されるHRDバッファ管理についてのメタデータを通じて更に制限されてもよい。
いくつかの例示的な実施形態では、受信機(531)は、符号化ビデオと共に更なる(冗長な)データを受信してもよい。更なるデータは、コーディングされたビデオシーケンスの一部として含まれてもよい。更なるデータは、データを適切に復号するために、及び/又は元のビデオデータをより正確に復元するために、ビデオデコーダ(510)によって使用されてもよい。更なるデータは、例えば、時間、空間又は信号雑音比(SNR, signal noise ratio)エンハンスメント層、冗長スライス、冗長ピクチャ、前方誤り訂正コード等の形式でもよい。
図6は、本開示の例示的な実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子デバイス(620)に含まれてもよい。電子デバイス(620)は、送信機(640)(例えば、送信回路)を更に含んでもよい。図4の例におけるビデオエンコーダ(403)の代わりにビデオエンコーダ(603)が使用されてもよい。
ビデオエンコーダ(603)は、ビデオソース(601)(図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信してもよく、当該ビデオソース(601)は、ビデオエンコーダ(603)によって符号化されるべきビデオ画像をキャプチャしてもよい。他の例では、ビデオソース(601)は電子デバイス(620)の一部として実装されてもよい。
ビデオソース(601)は、デジタルビデオサンプルストリームの形式でビデオエンコーダ(603)によって符号化されるべきソースビデオシーケンスを提供してもよく、当該デジタルビデオサンプルストリームは、いずれかの適切なビット深度(例えば、8ビット、10ビット、12ビット等)、いずれかの色空間(例えば、BT.601 YCrCB、RGB、XYZ等)及びいずれかの適切なサンプリング構造(例えば、YCrCb 4:2:0、YCrCb 4:4:4)でもよい。メディア提供システムにおいて、ビデオソース(601)は、事前に準備されたビデオを記憶できる記憶デバイスでもよい。テレビ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラでもよい。ビデオデータは、順に見たときに動きを伝える複数の個々のピクチャ又は画像として提供されてもよい。ピクチャ自体は、画素の空間配列として構成されてもよく、各画素は、使用中のサンプリング構造、色空間等に依存して、1つ以上のサンプルを含んでもよい。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てる。
いくつかの例示的な実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで或いはアプリケーションによって要求されるいずれかの他の時間制約下で、ソースビデオシーケンスのピクチャを、コーディングされたビデオシーケンス(643)にコーディング及び圧縮してもよい。適切なコーディング速度を実現することは、コントローラ(650)の1つの機能を構成する。いくつかの実施形態では、コントローラ(650)は、以下に説明するように、他の機能ユニットに機能的に結合されて他の機能ユニットを制御してもよい。結合は、簡潔にするために図示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化技術のラムダ値等)、ピクチャサイズ、グループオブピクチャ(GOP)のレイアウト、最大動きベクトル探索範囲等を含んでもよい。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関連する他の適切な機能を有するように構成されてもよい。
いくつかの例示的な実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成されてもよい。非常に簡略化した説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングされるべき入力ピクチャ及び参照ピクチャに基づいて、シンボルストリームのようなシンボルを生成することを担う)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)とを含んでもよい。デコーダ(633)は、埋め込まれデコーダ(633)がエントロピーコーディングなしにソースコーダ630によるコーディングされたビデオストリームを処理するとしても、(リモート)デコーダが生成するのと同様に(エントロピーコーディングにおけるシンボルと符号化ビデオビットストリームとの間のいずれかの圧縮が、開示の対象物において検討されるビデオ圧縮技術において可逆になり得るように)、サンプルデータを生成するようにシンボルを復元する。復元されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームの復号は、デコーダの位置(ローカル又はリモート)と独立したビット単位の正確な結果をもたらすので、参照ピクチャメモリ(634)内の内容も、ローカルエンコーダとリモートエンコーダとの間でビット単位で正確である。言い換えると、エンコーダの予測部分は、デコーダが復号中に予測を使用するときに「見る」のと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期(例えば、チャネルエラーの理由で同期が維持できない場合の結果として生じるドリフトを含む)のこの基本原理は、コーディング品質を改善するために使用される。
「ローカル」デコーダ(633)の動作は、ビデオデコーダ(510)のような「リモート」デコーダと同じでもよく、これは、図5に関連して上記において既に詳細に説明した。しかし、図5を簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)及びパーサ(620)による符号化ビデオシーケンスへのシンボルの符号化/復号が可逆になり得るので、バッファメモリ(615)及びパーサ(620)を含むビデオデコーダ(510)のエントロピー復号部分は、エンコーダ内のローカルデコーダ(633)に完全には実装されなくてもよい。
この時点で行うことができる考察は、デコーダ内のみに存在し得る解析/エントロピー復号を除く如何なるデコーダ技術も、必然的に対応するエンコーダ内に実質的に同一の機能形式で存在する必要があってもよいことである。このため、開示の対象物はデコーダ動作に場合によって焦点を当てることがあるが、これはエンコーダの復号部分にも当てはまる。したがって、エンコーダ技術の説明は、包括的に記載されるデコーダ技術の逆であるので、省略できる。特定の領域又は態様においてのみ、エンコーダのより詳細な説明が以下に提供される。
いくつかの例示的な実装では、動作中に、ソースコーダ(630)は、動き補償予測コーディングを実行してもよく、当該動き補償予測コーディングは、「参照ピクチャ」として指定されたビデオシーケンスからの1つ以上の前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする。このように、コーディングエンジン(632)は、入力ピクチャの画素ブロックと、入力ピクチャに対する予測参照として選択され得る参照ピクチャの画素ブロックとの間のカラーチャネルにおける差(又は残差)をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって生成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータを復号してもよい。コーディングエンジン(632)の動作は、有利には、不可逆処理でもよい。コーディングされたビデオデータがビデオデコーダ(図6に図示せず)で復号され得る場合、復元されたビデオシーケンスは、典型的には、いくつかのエラーを伴うソースビデオシーケンスのレプリカになり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得る復号処理を複製し、復元された参照ピクチャを参照ピクチャキャッシュ(634)に記憶させてもよい。このように、ビデオエンコーダ(603)は、遠端(リモート)のビデオデコーダによって取得される(送信エラーのない)復元された参照ピクチャとして、共通の内容を有する復元された参照ピクチャのコピーをローカルに記憶してもよい。
予測器(635)は、コーディングエンジン(632)のための予測探索を実行してもよい。すなわち、コーディングされるべき新たなピクチャについて、予測器(635)は、(候補参照画素ブロックとしての)サンプルデータ又は特定のメタデータ(参照ピクチャ動きベクトル、ブロック形状等)を求めて参照ピクチャメモリ(634)を検索してもよい。これらは、新たなピクチャについての適切な予測参照として機能してもよい。予測器(635)は、適切な予測参照を検出するために、サンプルブロック毎画素ブロック毎(sample block-by-pixel block)に動作してもよい。場合によっては、予測器(635)によって取得された検索結果によって決定された入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有してもよい。
コントローラ(650)は、例えば、ビデオデータを符号化するために使用されるパラメータ及びサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理してもよい。
全ての上記の機能ユニットの出力は、エントロピーコーダ(645)におけるエントロピー符号化を受けてもよい。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディング等のような技術に従って、シンボルを可逆圧縮することによって、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって生成されたコーディングされたビデオシーケンスをバッファして、通信チャネル(660)を介した送信の準備をしてもよく、当該通信チャネル(660)は、符号化ビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクでもよい。送信機(640)は、ビデオコーダ(603)からのコーディングされたビデオデータを、送信されるべき他のデータ(例えば、コーディングされたオーディオデータ及び/又は補助データストリーム(図示せず))とマージしてもよい。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理してもよい。コーディング中に、コントローラ(650)は、それぞれのコーディングされたピクチャに、特定のコーディングピクチャタイプを割り当ててもよい。当該符号化ピクチャタイプは、各ピクチャに適用され得るコーディング技術に影響を与えてもよい。例えば、ピクチャは、しばしば、以下のピクチャタイプのうち1つとして割り当てられてもよい。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のピクチャを使用せずに、符号化及び復号され得るものでもよい。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(IDR, Independent Decoder Refresh)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャのこれらの変形例と、それぞれの用途及び特徴を認識する。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトル及び参照インデックスを使用して、イントラ予測又はインター予測を使用して符号化及び復号され得るものでもよい。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトル及び参照インデックスを使用して、イントラ予測又はインター予測を使用して符号化及び復号され得るものでもよい。同様に、複数の予測ピクチャは、単一のブロックの復元のために、2つより多くの参照ピクチャ及び関連するメタデータを使用してもよい。
一般的に、ソースピクチャは、空間的に複数のサンプルコーディングブロック(例えば、それぞれ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の参照ブロックとの組み合わせによって一緒に予測されてもよい。
さらに、コーディング効率を改善するために、インターピクチャ予測においてマージモード技術が使用されてもよい。
本開示のいくつかの例示的な実施形態によれば、インターピクチャ予測及びイントラピクチャ予測のような予測は、ブロックの単位で実行される。例えば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU, coding tree unit)に分割され、ピクチャ内のCTUは、64×64の画素、32×32の画素又は16×16の画素のように、同じサイズを有してもよい。一般的に、CTUは、1つの輝度CTBと2つの色差CTBである3つの並列のコーディングツリーブロック(CTB, coding tree block)を含んでもよい。各CTUは、1つ又は複数のコーディングユニット(CU, coding unit)に再帰的に四分木分割されてもよい。例えば、64×64の画素のCTUは、64×64の画素の1つのCU、32×32の画素の4つのCU又は16×16の画素の16個のCUに分割できる。1つ以上の32×32のブロックのそれぞれは、16×16の画素の4つのCUに更に分割されてもよい。いくつかの例示的な実施形態では、各CUは、符号化中にインター予測タイプ又はイントラ予測タイプのような様々な予測タイプの中からCUの予測タイプを決定するために分析される。CUは、時間的及び/又は空間的予測可能性に依存して1つ以上の予測ユニット(PU, prediction unit)に分割されてもよい。一般的に、各PUは、輝度予測ブロック(PB, prediction block)と2つの色差PBとを含む。一実施形態では、コーディング(符号化/復号)における予測動作は、予測ブロックの単位で実行される。PU(又は異なるカラーチャネルのPB)へのCUの分割は様々な空間パターンで実行されてもよい。例えば、輝度又は色差PBは、8×8の画素、16×16の画素、8×16の画素、16×8のサンプル等のように、サンプルの値(例えば、輝度値)の行列を含んでもよい。
図7は、本開示の他の例示的な実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオピクチャのシーケンス内のカレントビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを符号化ビデオシーケンスの一部である符号化ピクチャに符号化するように構成される。例示的なビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用されてもよい。
例えば、ビデオエンコーダ(703)は、8×8のサンプルの予測ブロック等のような処理ブロックのサンプル値の行列を受信する。次いで、ビデオエンコーダ(703)は、処理ブロックが、例えば、レート歪み最適化(RDO, rate distortion optimization)を使用して、イントラモードを使用して最も良くコーディングされるか、インターモードを使用して最も良くコーディングされるか、双方向予測モードを使用して最も良くコーディングされるかを決定する。処理ブロックがイントラモードでコーディングされると決定された場合、ビデオエンコーダ(703)は、処理ブロックをコーディングされたピクチャに符号化するためにイントラ予測技術を使用してもよい。処理ブロックがインターモード又は双方向予測モードでコーディングされると決定された場合、ビデオエンコーダ(703)は、処理ブロックをコーディングされたピクチャに符号化するために、それぞれインター予測技術又は双方向予測技術を使用してもよい。いくつかの例示的な実施形態では、マージモード(merge mode)は、動きベクトル予測子以外のコーディングされた動きベクトル成分の恩恵を受けずに、動きベクトルが1つ以上の動きベクトル予測子から導出されるインターピクチャ予測のサブモードとして使用されてもよい。いくつかの他の例示的な実施形態では、対象のブロックに適用可能な動きベクトル成分が存在してもよい。したがって、ビデオエンコーダ(703)は、処理ブロックの予測モードを決定するためのモード決定モジュールのような、図7に明示的に図示しない構成要素を含んでもよい。
図7の例では、ビデオエンコーダ(703)は、図7における例示的な構成に示されるように共に結合されたインターエンコーダ(730)と、イントラエンコーダ(722)と、残差計算器(723)と、スイッチ(726)と、残差エンコーダ(724)と、全体コントローラ(721)と、エントロピーエンコーダ(725)とを含む。
インターエンコーダ(730)は、カレントブロック(例えば、処理ブロック)のサンプルを受信し、当該ブロックを参照ピクチャ内の1つ以上の参照ブロック(例えば、表示順で前のピクチャ及び後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インター符号化技術による冗長情報の記述、動きベクトル、マージモード情報)を生成し、いずれかの適切な技術を使用して、インター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照ピクチャは、図6の例示的なエンコーダ(620)に埋め込まれた復号ユニット(633)(以下に更に詳細に説明するように、図7の残差デコーダ(728)として示されている)を使用して、符号化ビデオ情報に基づいて復号された復号参照ピクチャである。
イントラエンコーダ(722)は、カレントブロック(例えば、処理ブロック)のサンプルを受信し、当該ブロックを、同じピクチャ内で既にコーディングされたブロックと比較し、変換後に量子化係数を生成し、場合によっては、イントラ予測情報(例えば、1つ以上のイントラ符号化技術によるイントラ予測方向情報)も生成するように構成される。イントラエンコーダ(722)は、同じピクチャ内のイントラ予測情報及び参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算してもよい。
全体コントローラ(721)は、全体制御データを決定し、全体制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成されてもよい。一例では、全体コントローラ(721)は、ブロックの予測モードを決定し、予測モードに基づいて制御信号をスイッチ(726)に提供する。例えば、予測モードがイントラモードである場合、全体コントローラ(721)は、残差計算器(723)によって使用されるイントラモード結果を選択するようにスイッチ(726)を制御し、イントラ予測情報を選択してイントラ予測情報をビットストリームに含めるようにエントロピーエンコーダ(725)を制御する。ブロックの予測モードがインターモードである場合、全体コントローラ(721)は、残差計算器(723)によって使用されるインター予測結果を選択するようにスイッチ(726)を制御し、インター予測情報を選択してインター予測情報をビットストリームに含めるようにエントロピーエンコーダ(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, Quantizer Parameter)を含む)を利用してもよく、当該制御情報は、エントロピーデコーダ(871)によって提供されてもよい(これは低データ量の制御情報のみである可能性があるので、データ経路は図示されていない)。
復元モジュール(874)は、空間ドメインにおいて、残差デコーダ(873)によって出力された残差と、予測結果(場合によっては、インター予測モジュール又はイントラ予測モジュールによって出力されたもの)とを結合して、復元ビデオの一部として復元ピクチャの一部を形成する復元ブロックを形成するように構成されてもよい。視覚品質を改善するために、デブロッキング動作のような他の適切な動作が実行されてもよい点に留意すべきである。
ビデオエンコーダ(403)、(603)及び(703)並びにビデオデコーダ(510)、(510)及び(810)は、いずれかの適切な技術を使用して実装されてもよい点に留意すべきである。いくつかの例示的な実施形態では、ビデオエンコーダ(403)、(603)及び(703)並びにビデオデコーダ(410)、(510)及び(810)は、1つ以上の集積回路を使用して実装されてもよい。他の実施形態では、ビデオエンコーダ(403)、(603)及び(703)並びにビデオデコーダ(410)、(510)及び(810)は、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実装されてもよい。
いくつかの例示的な実装では、符号化アーチファクトを低減し、復号ピクチャの品質を改善するために、ループフィルタがエンコーダ及びデコーダに含まれてもよい。例えば、ループフィルタ555は、図5のデコーダ530の一部として含まれてもよい。他の例では、ループフィルタは、図6のエンコーダ620内の埋め込みデコーダユニット633の一部でもよい。これらのフィルタは、デコーダ又はエンコーダにおいてビデオブロックのための復号ループに含まれるので、ループフィルタと呼ばれる。各ループフィルタは、1つ以上のフィルタリングパラメータに関連してもよい。このようなフィルタリングパラメータは予め定義されてもよく、或いは、符号化プロセス中にエンコーダによって導出されてもよい。これらのフィルタリングパラメータ(エンコーダによって導出される場合)又はそれらのインデックス(予め定義される場合)は、符号化形式で最終的なビットストリームに含まれてもよい。次いで、デコーダは、ビットストリームからこれらのフィルタリングパラメータを解析し、復号中に解析されたフィルタリングパラメータに基づいてループフィルタリングを実行してもよい。
様々な態様においてコーディングアーチファクトを低減し、復号ビデオ品質を改善するために、様々なループフィルタが使用されてもよい。このようなループフィルタは、1つ以上のデブロッキングフィルタ、適応ループフィルタ(ALF, Adaptive Loop Filter)、クロスコンポーネント適応ループフィルタ(CC-ALF, Cross-Component Adaptive Loop Filter)、制約方向強調フィルタ(CDEF, Constrained Directional Enhancement Filter)、サンプル適応オフセット(SAO, Sample Adaptive Offset)フィルタ、クロスコンポーネントサンプルオフセット(CCSO, Cross-Component Sample Offset)フィルタ及びローカルサンプルオフセット(LSO, Local Sample Offset)フィルタを含んでもよいが、これらに限定されない。これらのフィルタは、相互依存性があってもよく或いは相互依存性がなくてもよい。これらは、これらの相互依存性と互換性のあるいずれか適切な順序で(存在する場合)、デコーダ又はエンコーダの復号ループ内に配置されてもよい。これらの様々なループフィルタについて、以下の開示においてより詳細に説明する。
ブロックベースのフィルタ適応を有する適応ループフィルタ(ALF, Adaptive Loop Filter)は、アーチファクトを低減するためにエンコーダ/デコーダによって適用されてもよい。ALFは、フィルタリング係数/パラメータ又はこれらのインデックスがビットストリームで伝達されるという意味で適応的であり、復元ピクチャの画像内容及び歪みに基づいて設計されてもよい。ALFは、符号化プロセスによって導入される歪みを低減し、復元画像品質を改善するために適用されてもよい。
輝度成分については、複数のフィルタ(例えば、25個のフィルタ)のうち1つが、例えば、局所勾配の方向及び作用に基づいて、輝度ブロック(例えば、4×4の輝度ブロック)について選択されてもよい。これらのフィルタのフィルタ係数は、符号化プロセス中にエンコーダによって導出され、ビットストリームでデコーダに伝達されてもよい。
ALFはいずれか適切な形状及びサイズをしてもよい。図9の例を参照すると、ALF(910)についての5×5のダイヤモンド形状及びALF(911)についての7×7のダイヤモンド形状のように、ALF(910)~(911)はダイヤモンド形状を有してもよい。ALF(910)では、13個の要素(920)~(932)がフィルタリングプロセスにおいて使用されてもよく、ダイヤモンド形状を形成してもよい。7つの値(例えば、C0~C6)が使用されてもよく、13個の要素(920)~(932)について図示の例示的な方式で配置されてもよい。ALF(911)では、25個の要素(940)~(964)がフィルタリングプロセスにおいて使用されてもよく、ダイヤモンド形状を形成してもよい。13個の値(例えば、C0~C12)が、25個の要素(940)~(964)について図示の例示的な方式で使用されてもよい。
図9を参照すると、いくつかの例では、輝度又は色差ブロックを処理するために、2つのダイヤモンド形状(910)~(911)のうち1つのALFフィルタが選択されてもよい。例えば、5×5のダイヤモンド形状のフィルタ(910)は色差成分(例えば、色差ブロック、色差CB)に適用されてもよく、7×7のダイヤモンド形状のフィルタ(911)は輝度成分(例えば、輝度ブロック、輝度CB)に適用されてもよい。他の適切な形状及びサイズがALFにおいて使用されてもよい。例えば、9×9のダイヤモンド形状のフィルタが使用されてもよい。
値(例えば、(910)におけるC0~C6又は(920)におけるC0~C12)によって示される位置におけるフィルタ係数は非ゼロでもよい。さらに、ALFがクリッピング機能を含む場合、当該位置におけるクリッピング値は非ゼロでもよい。クリッピング機能は、輝度ブロック又は色差ブロック内のフィルタ値の上限を制限するために使用されてもよい。
いくつかの実装では、輝度成分の特定のブロックに適用される特定のALFは、輝度ブロックの分類に基づいてもよい。輝度成分のブロック分類について、4×4のブロック(又は輝度ブロック、輝度CB)は、例えば25個の異なるALF(例えば、異なるフィルタ係数を有する7×7のALFのうち25個)に対応する複数(例えば、25個)のクラスのうち1つとしてカテゴリ化又は分類されてもよい。分類インデックスCは、式(1)を使用して方向パラメータD及び活性値Aの量子化値
を計算するために、垂直方向、水平方向及び2つの対角方向(例えば、d1及びd2)のそれぞれの勾配g
v、g
h、g
d1及びg
d2は、1-Dラプラシアンを使用して以下のように計算されてもよい。
ここで、インデックスi及びjは4×4のブロック内の左上サンプルの座標を示し、R(k,l)は座標(k,l)における復元サンプルを示す。方向(例えば、d1及びd2)は2つの対角方向を表す。
上記のブロック分類の複雑さを低減するために、サブサンプリング1-Dラプラシアン計算が適用されてもよい。図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を計算するためのサブサンプリング位置を示す。図10A及び10Bは、異なる方向の勾配計算に同じサブサンプリング位置が使用されてもよいことを示す。いくつかの他の実装では、全ての方向について異なるサブサンプリング方式が使用されてもよい。さらにいくつかの他の実装では、異なるサブサンプリング方式が異なる方向に使用されてもよい。
水平方向及び垂直方向の勾配の最大値gh,v
max及び最小値gh,v
minは以下のように設定されてもよい。
2つの対角方向g
d1及びg
d2の勾配の最大値g
d1,d2
max及び最小値g
d1,d2
minは以下のように設定されてもよい。
方向パラメータDは、上記の値並びに2つの閾値t
1及びt
2に基づいて、以下のように導出されてもよい。
手順1.(1)g
h,v
max≦t
1・g
h,vmin且つ(2)g
d1,d2
max≦t
1・g
d1,d2
minが真である場合、Dは0に設定される。
手順2.g
h,v
max/g
h,v
min>g
d1,d2
max/g
d1,d2
minである場合、手順3に進み、そうでない場合、手順4に進む。
手順3.g
h,v
max>t
2・g
h,v
minである場合、Dは2に設定され、そうでない場合、Dは1に設定される。
手順3.g
d1,d2
max>t
2・g
d1,d2
minである場合、Dは4に設定され、そうでない場合、Dは3に設定される。
言い換えると、方向パラメータDは、いくつかの離散レベルによって示され、図10Eに示すように、水平方向と垂直方向の間、且つ、2つの対角方向の間の輝度ブロックについての勾配値スプレッドに基づいて決定される。
活性値Aは以下のように計算されてもよい。
したがって、活性値Aは水平及び垂直の1-Dラプラシアンの複合尺度を表す。輝度ブロックについての活性値Aは、例えば0以上4以下の範囲に更に量子化されてもよく、量子化された値は
次いで、輝度成分について、上記で計算された分類インデックスCが、ダイヤモンド形状のAFLフィルタの複数のクラス(例えば、25個のクラス)のうち1つを選択するために使用されてもよい。いくつかの実装では、ピクチャ内の色差成分について、ブロック分類は適用されなくてもよく、したがって、単一のALF係数のセットが各色差成分に適用されてもよい。このような実装では、色差成分に利用可能な複数のALF係数セットが存在してもよく、ALF係数の決定は色差ブロックの如何なる分類にも依存しなくてもよい。
幾何学変換が、フィルタ係数及び対応するフィルタクリッピング値(クリッピング値とも呼ばれる)に適用されてもよい。ブロック(例えば、4×4の輝度ブロック)をフィルタリングする前に、回転又は対角反転及び垂直反転のような幾何学変換が、例えば、ブロックについて計算された勾配値(例えば、gv、gh、gd1及び/又はgd2)に依存して、フィルタ係数f(k,l)及び対応するフィルタクリッピング値c(k,l)に適用されてもよい。フィルタ係数f(k,l)及び対応するフィルタクリッピング値c(k,l)に適用される幾何学変換は、フィルタによってサポートされる領域内のサンプルに幾何学変換を適用することと等価でもよい。幾何学変換は、それぞれの方向を整合させることにより、ALFが適用される異なるブロックをより類似させることができる。
対角反転、垂直反転及び回転を含む3つの幾何学変換オプションは、それぞれ式(9)~(11)で記述されるように実行されてもよい。
ここで、ALF又はフィルタのサイズを表し、0≦k,l≦K-1は係数の座標である。例えば、位置(0,0)は左上角にあり、位置(K-1,K-1)はフィルタf又はクリッピング値行列(又はクリッピング行列)cの右下角にある。変換は、ブロックについて計算された勾配値に依存して、フィルタ係数f(k,l)及びクリッピング値c(k,l)に適用されてもよい。変換と4つの勾配との間の関係は表1にまとめられている。
いくつかの実施形態では、エンコーダによって導出されたALFフィルタパラメータは、ピクチャについての適応パラメータセット(APS, Adaptation Parameter Set)で伝達されてもよい。APSでは、輝度フィルタ係数及びクリッピング値インデックスの1つ以上のセット(例えば、25個のセットまで)が伝達されてもよい。これらは、APSにおいてインデックス化されてもよい。一例では、1つ以上のセットのうち1つのセットは輝度フィルタ係数及び1つ以上のクリッピング値インデックスを含んでもよい。色差フィルタ係数及びクリッピング値インデックスの1つ以上のセット(例えば、8つのセットまで)は、エンコーダによって導出されて伝達されてもよい。信号伝達オーバーヘッドを低減するために、輝度成分について異なる分類(例えば、異なる分類インデックスを有する)のフィルタ係数はマージされてもよい。スライスヘッダにおいて、現在のスライスに使用されているAPSのインデックスが伝達されてもよい。他の例では、ALFの伝達はCTUに基づいてもよい。
一実施形態では、クリッピング値インデックス(クリッピングインデックスとも呼ばれる)は、APSから復号されてもよい。クリッピング値インデックスは、例えば、クリッピング値インデックスと対応するクリッピング値との間の関係に基づいて、対応するクリッピング値を決定するために使用されてもよい。当該関係は、予め定義され、デコーダに記憶されてもよい。一例では、当該関係は、輝度成分についてのクリッピング値インデックスの及び対応するクリッピング値のテーブル(例えば、輝度CBに使用される)、及び色差成分についてのクリッピング値インデックス及びクリッピング値のテーブル(例えば、色差CBに使用される)のように、1つ以上のテーブルによって記述される。クリッピング値は、ビット深度Bに依存してもよい。ビット深度Bは、内部ビット深度、フィルタリングされるCB内の復元サンプルのビット深度等を示してもよい。いくつかの例では、クリッピング値のテーブル(例えば、輝度及び/又は色差についてのもの)は、式(12)を使用して取得されてもよい。
ここで、AlfClipはクリッピング値であり、Bはビット深度(例えば、bitDepth)であり、N(例えばN=4)は許容されるクリッピング値の数であり、αは所定の定数値である。一例では、αは2.35に等しい。nはクリッピング値インデックス(クリッピングインデックス又はclipIdxとも呼ばれる)である。表2は、N=4で式(12)を使用して取得された表の例を示す。表2においてクリッピングインデックスnは、0、1、2、3(N-1まで)でもよい。表2は輝度ブロック又は色差ブロックに使用されてもよい。
現在のスライスのスライスヘッダにおいて、現在のスライスに使用できる輝度フィルタセットを指定するために、1つ以上のAPSインデックス(例えば、7つのAPSインデックスまで)が伝達されてもよい。フィルタリングプロセスは、ピクチャレベル、スライスレベル、CTBレベル等のような1つ以上の適切なレベルで制御されてもよい。例示的な実施形態では、フィルタリングプロセスは、CTBレベルで更に制御されてもよい。ALFが輝度CTBに適用されるか否かを示すフラグが伝達されてもよい。輝度CTBは、複数の固定フィルタセット(例えば、16個の固定フィルタセット)と、APSで伝達されるフィルタセット(例えば、伝達フィルタセットとも呼ばれ、上記のように、エンコーダによって導出される25個までのフィルタ)との中でフィルタセットを選択してもよい。フィルタセットインデックスは、輝度CTBについて、適用されるフィルタセット(例えば、複数の固定フィルタセット及び伝達フィルタセットの中のフィルタセット)を示すために伝達されてもよい。複数の固定フィルタセットは、エンコーダ及びデコーダ内で予め定義され、ハードコーディングされてもよく、所定のフィルタセットと呼ばれてもよい。したがって、所定のフィルタ係数は伝達される必要はない。
色差成分について、APSインデックスは、現在のスライスに使用される色差フィルタセットを示すために、スライスヘッダで伝達されてもよい。CTBレベルでは、APSにおいて1つよりも多くの色差フィルタセットが存在する場合、色差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以下の範囲にあるものとすることを含んでもよい。
filtIdx=0~NumAlfFilters-1且つj=0~11での要素AlfClipL[adapation_parameter_set_id][filtIdx][j]を有する輝度フィルタクリッピング値AlfClipL[adapation_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以下の範囲にあるものとすることを含んでもよい。
altIdx=0~alf_chroma_num_alt_filters_minus1、j=0~5での要素AlfClipC[adaptation_parameter_set_id][altIdx][j]を有する色差フィルタクリッピング値AlfClipC[adapdation_parameter_set_id][altIdx]は、BitDepthCに等しく設定されたbitDepth及びalf_chroma_clip_idx[altIdx][j]に等しく設定されたclipIdxに依存して、表2で指定されるように導出されてもよい。
一実施形態では、フィルタリングプロセスは、以下のように記述されてもよい。デコーダ側では、ALFがCTBについて有効である場合、CTBのCU(又はCB)内のサンプルR(i,j)がフィルタリングされてもよく、その結果、式(13)を使用して以下に示すようにフィルタリングされたサンプル値R'(i,j)が得られる。一例では、CU内の各サンプルがフィルタリングされる。
ここで、f(k,l)は復号されたフィルタ係数であり、K(x,y)はクリッピング関数であり、c(k,l)は復号されたクリッピングパラメータ(又はクリッピング値)を表す。変数k及びlは、-L/2とL/2との間で変化してもよく、Lはフィルタ長を示す(例えば、輝度成分及び色差成分のそれぞれについて、図9の例示的なダイヤモンドフィルタ910及び911の場合、例えば、L=5及び7である)。クリッピング関数K(x,y)=min(y,max(-y,x))は、クリッピング関数Clip3(-y,y,x)に対応する。クリッピング関数K(x,y)を組み込むことにより、ループフィルタリング方法(例えば、ALF)は非線形プロセスとなり、非線形ALFと呼ばれてもよい。
選択されたクリッピング値は、以下のように「alf_data」シンタックスエレメントにコーディングされてもよい。適切な符号化方式(例えば、Golomb符号化方式)が、表2に示すような選択されたクリッピング値に対応するクリッピングインデックスを符号化するために使用されてもよい。符号化方式は、フィルタセットインデックスを符号化するために使用されるものと同じ符号化方式でもよい。
一実施形態では、仮想境界フィルタリングプロセスが、ALFのラインバッファ要件を低減するために使用されてもよい。したがって、修正ブロック分類及びフィルタリングが、CTU境界(例えば、水平CTU境界)の近くのサンプルに使用されてもよい。図11Aに示すように、仮想境界(1130)は、水平CTU境界(1120)を「Nsamples」個のサンプルだけシフトすることによるラインとして定義されてもよい。ここで、Nsamplesは正の整数でもよい。一例では、Nsamplesは輝度成分について4に等しく、Nsamplesは色差成分について2に等しい。
図11Aを参照すると、輝度成分について修正ブロック分類が適用されてもよい。一例では、仮想境界(1130)の上の4×4のブロック(1110)の1-Dラプラシアン勾配計算のために、仮想境界(1130)の上のサンプルのみが使用される。同様に、図11Bを参照すると、CTU境界(1121)からシフトされた仮想境界(1131)の下の4×4のブロック(1111)の1-Dラプラシアン勾配計算のために、仮想境界(1131)の下のサンプルのみが使用される。したがって、1-Dラプラシアン勾配計算に使用される減少したサンプル数を考慮することによって、活性値Aの量子化が相応にスケーリングされてもよい。
フィルタリング処理について、仮想境界においける対称パディング動作が輝度成分及び色差成分の双方に使用されてもよい。図12A~12Fは、仮想境界における輝度成分についてのこのような修正ALFフィルタリングの例を示す。フィルタリングされているサンプルが仮想境界の下に位置する場合、仮想境界の上に位置する隣接サンプルがパディングされてもよい。フィルタリングされているサンプルが仮想境界の上に位置する場合、仮想境界の下に位置する隣接サンプルがパディングされてもよい。図12Aを参照すると、隣接サンプルC0は、仮想境界(1210)の下に位置するサンプルC2でパディングされてもよい。図12Bを参照すると、隣接サンプルC0は、仮想境界(1220)の上に位置するサンプルC2でパディングされてもよい。図12Cを参照すると、隣接サンプルC1~C3は、仮想境界(1230)の下に位置するサンプルC5~C7でそれぞれパディングされてもよい。サンプルC0はサンプルC6でパディングされてもよい。図12Dを参照すると、隣接サンプルC1~C3は、仮想境界(1240)の上に位置するサンプルC5~C7でそれぞれパディングされてもよい。サンプルC0はサンプルC6でパディングされてもよい。図12Eを参照すると、隣接サンプルC4~C8は、仮想境界(1250)の下に位置するサンプルC10、C11、C12、C11及びC10でそれぞれパディングされてもよい。サンプルC1~C3はサンプルC11、C12及びC11でパディングされてもよい。サンプルC0はサンプルC12でパディングされてもよい。図12Fを参照すると、隣接サンプルC4~C8は、仮想境界(1260)の上に位置するサンプルC10、C11、C12、C11及びC10でそれぞれパディングされてもよい。サンプルC1~C3はサンプルC11、C12及びC11でパディングされてもよい。サンプルC0はサンプルC12でパディングされてもよい。
いくつかの例では、サンプル及び隣接サンプルが仮想境界の左(又は右)及び右(又は左)に位置する場合、上記の説明が適切に適合されてもよい。
最大コーディングユニット(LCU, largest coding unit)で整合したピクチャの四分木分割が使用されてもよい。コーディング効率を高めるために、コーディングユニット同期ピクチャ四分木ベースの適応ループフィルタがビデオコーディングにおいて使用されてもよい。一例では、輝度ピクチャは複数のマルチレベル四分木パーティションに分割されてもよく、各パーティション境界は最大コーディングユニット(LCU, largest coding unit)の境界に整合する。各パーティションは、フィルタリングプロセスを有してもよく、したがって、フィルタユニット又はフィルタリングユニット(FU, filtering unit)と呼ばれてもよい。
例示的な2パス符号化フローについて、以下に説明する。第1のパスにおいて、各FUの四分木分割パターン及び最良のフィルタ(又は最適なフィルタ)が決定されてもよい。フィルタリング歪みは、決定プロセスの中の高速フィルタリング歪み推定(FFDE, fast filtering distortion estimation)によって推定されてもよい。FU(例えば、全てのFU)の決定された四分木分割パターン及び選択されたフィルタに従って、復元ピクチャがフィルタリングされてもよい。第2のパスにおいて、CU同期ALFオン/オフ制御が実行されてもよい。ALFオン/オフの結果に従って、最初にフィルタリングされたピクチャは、復元ピクチャによって部分的に復元される。
レート歪み基準を使用することによってピクチャをマルチレベルの四分木分割に分割するために、トップダウン分割方策が採用されてもよい。各パーティションはFUと呼ばれてもよい。図13に示すように、分割プロセスは、LCU境界に四分木分割を整合させてもよい。図13は、本開示の実施形態による、LCUで整合したピクチャの四分木分割の例を示す。一例では、FUの符号化順序はzスキャン順序に従う。例えば、図13を参照すると、ピクチャは10個のFU(例えば、2の分割深度のFU0~FU9、ここで、FU0、FU1及びFU9は第1レベルのFUであり、FUs、FU7及びFU8は第2レベルのFUであり、FU3~FU6は第3レベルのFUである)に分割され、符号化順序は、FU0からFU9、例えば、FU0、FU1、FU2、FU3、FU4、FU5、FU6、FU7、FU8及びFU9である。
ピクチャ四分木分割パターンを示すために、分割フラグ(四分木分割を表す「1」、四分木分割を表さない「0」)がzスキャン順序で符号化されて送信されてもよい。図14は、本開示の実施形態による、図13に対応する四分木分割パターンを示す。図14の例に示すように、四分木分割フラグはzスキャン順序で符号化される。
各FUのフィルタは、レート歪み基準に基づいて2つのフィルタセットから選択されてもよい。第1のセットは、現在のFUについて新たに導出された1/2対称の正方形及び菱形のフィルタを有してもよい。第2のセットは、時間遅延フィルタバッファからのものでもよい。時間遅延フィルタバッファは、以前のピクチャ内のFUについて導出されたフィルタを記憶してもよい。2つのフィルタセットの最小レート歪みコストを有するフィルタが、現在のFUについて選択されてもよい。同様に、現在のFUが最小のFUではなく、4つの子FUに更に分割できる場合、4つの子FUのレート歪みコストが計算されてもよい。分割の場合及び非分割の場合のレート歪みコストを再帰的に比較することによって、ピクチャ四分木分割パターン(言い換えると、現在のFUの四分木分割が停止されるべきか否か)が決定されてもよい。
いくつかの例では、最大四分木分割レベル又は深度は、所定の数に制限されてもよい。例えば、最大四分木分割レベル又は深度は2でもよく、したがって、FUの最大数は16(又は、深度の最大数のべき乗に対する4)でもよい。四分木分割の決定の間に、下位の四分木レベル(最小のFU)における16個のFUのWiener係数を導出するための相関値が再利用されてもよい。残りのFUは、下位の四分木レベルにおける16個のFUの相関から残りのFUのWienerフィルタを導出してもよい。したがって、一例では、全てのFUのフィルタ係数を導出するために1つのフレームバッファアクセスのみが存在する。
四分木分割パターンが決定された後に、フィルタリング歪みを更に低減するために、CU同期ALFオン/オフ制御が実行されてもよい。フィルタリング歪みと非フィルタリング歪みとを比較することにより、リーフCUは、対応するローカル領域においてALFオン/オフを明示的に切り替えてもよい。コーディング効率は、ALFオン/オフの結果に従ってフィルタ係数を再設計することによって更に改善され得る。一例では、再設計プロセスは更なるフレームバッファアクセスを必要とする。したがって、コーディングユニット同期ピクチャ四分木ベースの適応ループフィルタ(CS-PQALF, coding unit synchronous picture quadtree-based adaptive loop filter)エンコーダ設計のようないくつかの例では、フレームバッファアクセスの数を最小化するために、CU同期ALFオン/オフ決定の後に再設計プロセスは必要とされない。
クロスコンポーネントフィルタリングプロセスは、クロスコンポーネント適応ループフィルタ(CC-ALF, component adaptive loop filter)のようなクロスコンポーネントフィルタを適用してもよい。クロスコンポーネントフィルタは、色差成分(輝度CBに対応する色差CB等)を洗練するために輝度成分(輝度CB等)の輝度サンプル値を使用してもよい。一例では、輝度CB及び色差CBがCUに含まれる。
図15は、本開示の例示的な実施形態による、色差成分を生成するために使用されるクロスコンポーネントフィルタ(例えば、CC-ALF)を示す。例えば、図15は、第1の色差成分(例えば、第1の色差CB)、第2の色差成分(例えば、第2の色差CB)及び輝度成分(例えば、輝度CB)のフィルタリングプロセスを示す。輝度成分は、サンプル適応オフセット(SAO, sample adaptive offset)フィルタ(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)を生成してもよい。続いて、フィルタリングされた第1の色差成分(1562)(例えば、「Cb」)は、第2の中間成分(1542)及び第1の中間成分(1552)のうち少なくとも1つに基づいて生成されてもよい。一例では、フィルタリングされた第1の色差成分(1562)(例えば、「Cb」)は、加算器(1522)で第2の中間成分(1542)及び第1の中間成分(1552)を組み合わせることによって生成されてもよい。したがって、第1の色差成分についての例示的なクロスコンポーネント適応ループフィルタリングプロセスは、CC-ALF(1521)によって実行されるステップと、例えば、加算器(1522)によって実行されるステップとを含んでもよい。
上記の説明は、第2の色差成分に適合されてもよい。第2の色差成分は、SAOフィルタ(1514)及びALF色差フィルタ(1518)によってフィルタリングされ、第3の中間成分(1553)を生成してもよい。さらに、SAOフィルタリングされた輝度成分(1541)は、第2の色差成分を求めてクロスコンポーネントフィルタ(例えば、CC-ALF)(1531)によってフィルタリングされ、第4の中間成分(1543)を生成してもよい。続いて、フィルタリングされた第2の色差成分(1563)(例えば、「Cr」)は、第4の中間成分(1543)及び第3の中間成分(1553)のうち少なくとも1つに基づいて生成されてもよい。一例では、フィルタリングされた第2の色差成分(1563)(例えば、「Cr」)は、加算器(1532)で第4の中間成分(1543)及び第3の中間成分(1553)を組み合わせることによって生成されてもよい。したがって、一例では、第2の色差成分についてのクロスコンポーネント適応ループフィルタリングプロセスは、CC-ALF(1531)によって実行されるステップと、例えば、加算器(1532)によって実行されるステップとを含んでもよい。
クロスコンポーネントフィルタ(例えば、CC-ALF(1521)、CC-ALF(1531))は、各色差成分(例えば、第1の色差成分、第2の色差成分)を洗練するために、いずれか適切なフィルタ形状を有する線形フィルタを輝度成分(又は輝度チャネル)に適用することによって動作してもよい。CC-ALFは、他の色成分からのサンプルに基づいて、或る色成分におけるコーディング歪みを低減するために、色成分の間の相関を利用する。
図16は、本開示の実施形態によるCC-ALFフィルタ(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)は、図16に示すダイヤモンド形状(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_ctb_cross_component_cb_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]は、第alf_ctb_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_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]は、第alf_ctb_cross_component_cr_idc[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]のクロスコンポーネントCrフィルタが輝度位置(xCtb,yCtb)においてCr色成分サンプルのブロックに適用されることを示してもよい。
色差サンプリングフォーマットの例について以下に説明する。一般的に、輝度ブロックは、2つの色差ブロックのような1つ以上の色差ブロックに対応してもよい。色差ブロックのそれぞれにおけるサンプル数は、輝度ブロックにおけるサンプル数よりも小さくてもよい。色差サブサンプリングフォーマット(色差サブサンプリングフォーマットとも呼ばれ、例えば、chroma_format_idcで指定される)は、色差ブロックのそれぞれと対応する輝度ブロックとの間の色差水平サブサンプリング係数(例えば、SubWidthC)及び色差垂直サブサンプリング係数(例えば、SubHeightC)を示してもよい。色差サブサンプリング方式は、名目上の4(水平)×4(垂直)のブロックについて4:x:yフォーマットとして指定されてもよく、xは水平色差サブサンプリング係数(ブロックの最初の行に保持される色差サンプルの数)であり、yはブロックの2番目の行に保持される色差サンプルの数である。一例では、色差サブサンプリングフォーマットは4:2:0でもよく、図17A~17Bに示すように、色差水平サブサンプリング係数(例えば、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)))と下の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において上記に説明した輝度ブロック及び対応する色差ブロックを表示、記憶及び/又は送信するために使用されてもよい。いくつかの例示的な実装では、プログレッシブスキャンが使用されてもよい。
或いは、図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)がスキャンされてもよい。
上記のALFの他に、制約方向強調フィルタ(CDEF, constrained directional enhancement filter)もビデオコーディングにおけるループフィルタリングに使用されてもよい。ループ内CDEFは、画像の細部を保持しつつ、量子化リンギングアーチファクトのようなコーディングアーチファクトを除去するために使用されてもよい。いくつかのコーディング技術では、サンプル適応オフセット(SAO, sample adaptive offset)アルゴリズムは、異なるクラスの画素につての信号オフセットを定義することによって、同様の目的を達成するために使用されてもよい。SAOとは異なり、CDEFは非線形空間フィルタである。いくつかの例では、CDEFフィルタの設計は、容易にベクトル化可能(例えば、単一命令多重データ(SIMD, single instruction, multiple data)動作で実装可能)であるように制約され、これは、中央値フィルタ及びバイラテラルフィルタのような他の非線形フィルタには当てはまらなかったものである。
CDEF設計は、以下の考察から生じる。いくつかの状況では、コーディングされた画像内のリンギングアーチファクトの量は、量子化ステップサイズにほぼ比例し得る。量子化された画像に保持される最小の細部も、量子化ステップサイズに比例する。したがって、画像の細部を保持することは、より小さい量子化ステップサイズを必要とし、これはより高い望ましくない量子化リンギングアーチファクトを生じる。好都合なことに、所与の量子化ステップサイズについて、リンギングアーチファクトの大きさは、細部の大きさより小さくすることができ、それによって、十分な細部を維持しつつリンギングアーチファクトを除去するようにバランスを取ったCDEFを設計するための機会を与える。
CDEFは最初に各ブロックの方向を識別してもよい。次いで、CDEFは、識別された方向に沿って、識別された方向から45°回転した方向に沿ってより小さい程度まで適応的にフィルタリングしてもよい。フィルタ強度は明示的に伝達されてもよく、細部のぼやけに対する高度な制御を可能にする。フィルタ強度について効率的なエンコーダ探索が設計されてもよい。CDEFは、2つのループ内フィルタに基づいてもよく、組み合わされたフィルタがビデオコーディングに使用されてもよい。いくつかの例示的な実装では、CDEFフィルタは、ループ内フィルタリングのためにデブロッキングフィルタに続いてもよい。
図18に示すように、方向探索は、例えばデブロッキングフィルタの後に、復元画素(又はサンプル)に対して動作してもよい。復元画素はデコーダに利用可能であるので、方向は信号伝達を必要としない。方向探索は、直線でないエッジを適切に取り扱うのに十分小さく(それにより、エッジがフィルタリングブロック内で十分に直線に見えるように)、量子化された画像に適用されたときに方向を確実に推定するのに十分に大きい、適切なサイズ(例えば、8×8ブロック)を有するブロックに対して動作してもよい。8×8の領域にわたって一定の方向を有することは、フィルタのベクトル化を容易にし得る。ブロック毎に、ブロック内のパターンに最も良く一致する方向は、量子化ブロックと完全な方向のブロックのそれぞれとの間の差分尺度(例えば、差分二乗和(SSD, sum of squared difference)、RMS誤差等)を最小化することによって決定されてもよい。一例では、完全な方向のブロック(例えば、図18の(1820)の1つ)は、1つの方向の線に沿った全ての画素が同じ値を有するブロックを示す。図18は、本開示の例示的な実施形態による、8×8のブロック(1810)についての方向探索の一例を示す。図18に示す例では、45度方向(1823)が誤差(1840)を最小化できるので、方向のセット(1820)のうち45度方向(1823)が選択される。例えば、45度方向の誤差は12であり、行(1840)で示す12~87の範囲の誤差の中で最小である。
例示的な非線形ローパス方向フィルタについて、以下に更に詳細に説明する。方向を特定することは、フィルタのタップを特定された方向に沿って位置合わせするのに役立ち、方向のエッジ又はパターンを保持しつつリンギングアーチファクトを低減し得る。しかし、いくつかの例では、方向フィルタリングのみでは、リンギングアーチファクトを十分に低減することができない。主方向(例えば、特定された方向)に沿っていない画素に対して更なるフィルタタップを使用することが望ましい。ぼやけのリスクを低減するために、更なるフィルタタップは、より保守的に扱われてもよい。したがって、CDEFは、プライマリタップ及びセカンダリタップを定義してもよい。いくつかの例示的な実装では、完全な二次元(2-D, two-dimensional)CDEFフィルタは、以下のように表されてもよい。
式(14)において、Dは減衰パラメータを表し、S
(p)及びS
(s)はそれぞれプライマリタップ及びセカンダリタップの強度を表し、関数round(・)は四捨五入(round ties away from zero)を表してもよく、w
d,m,n
(p)及びw
d,m,n
(s)はフィルタ重みを表し、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)、これはフィルタタップを事実上無視する。
一般にノイズを除去し、デブロッキング動作を越えてエッジの品質を高めるために、他のループ内処理コンポーネントとして、ループ内復元方式のセットがビデオコーディングのポストデブロッキングにおいて使用されてもよい。ループ内復元方式のセットは、適切なサイズのタイル毎にフレーム(又はピクチャ)内で切り替え可能でもよい。ループ内復元方式のいくつかの例について、分離可能な対称Wienerフィルタ(separable symmetric Wiener filter)及び部分空間投影を有する二重自己誘導フィルタ(dual self-guided filter with subspace projection)に基づいて以下に説明する。コンテンツの統計はフレーム内で実質的に変化し得るので、フィルタは切り替え可能な枠組みで統合されてもよく、異なるフレームがフレームの異なる領域でトリガされてもよい。
例示的な分離可能な対称Wienerフィルタについて以下に説明する。Wienerフィルタは、切り替え可能フィルタの1つとして使用されてもよい。劣化フレーム内の各画素(又はサンプル)は、画素の周囲のw×wのウィンドウ内の画素の非因果的なフィルタリングされたバージョンとして復元されてもよく、ここでw=2r+1であり、整数rに関して奇数である。2-Dフィルタタップは、w2×1個の要素を有する列ベクトル化された形式のベクトルFによって示されてもよく、直接的な線形最小二乗平均誤差(LMMSE, linear minimum mean square error)最適化は、F=H-1Mによって与えられるフィルタパラメータをもたらしてもよく、ここで、Hは、E[XXT]に等しく、画素の周辺のw×wのウィンドウ内のw2個のサンプルの列ベクトル化されたバージョンであるxの自己共分散であり、ここで、Mは、推定されるべきスカラーソースサンプルyとのxの相互相関を表すE[YXT]に等しい。エンコーダは、デブロッキングされたフレーム及びソース内の実現値からH及びMを推定し、結果としてのフィルタFをデコーダに送信するように構成されてもよい。しかし、いくつかの例示的な実装では、w2個のタップを送信する際に実質的なビットレートコストが発生する可能性がある。さらに、分離不可能なフィルタリングは、復号を法外に複雑にする可能性がある。したがって、複数の更なる制約がFの性質に課されてもよい。例えば、Fは分離可能であるように制約されてもよく、それにより、フィルタリングは、分離可能な水平及び垂直のwタップの畳み込みとして実装されてもよい。一例では、水平及び垂直フィルタのそれぞれは、対称であるように制約される。さらに、いくつかの例示的な実装では、水平フィルタ係数と垂直フィルタ係数との和が1になると仮定されてもよい。
部分空間投影を有する自己誘導フィルタリングもまた、ループ内復元のための切り替え可能フィルタの1つとして使用されてもよく、以下に説明する。いくつかの例示的な実装では、誘導フィルタリングは、画像フィルタリングにおいて使用されてもよく、フィルタリングされていないサンプルxからフィルタリングされた出力yを計算するために局所線形モデルが使用される。局所線形モデルは以下のように記述されてもよい。
ここで、F及びGは、フィルタリングされた画素の近くにおける劣化画像及び誘導画像(ガイド画像とも呼ばれる)の統計に基づいて決定されてもよい。ガイド画像が劣化画像と同じである場合、結果の自己誘導フィルタリングは、エッジ保存平滑化の効果を有してもよい。本開示のいくつかの態様によれば、自己誘導フィルタリングの特定の形式は、半径r及びノイズパラメータeの2つのパラメータに依存してもよく、以下のように記載される。
1.各画素の周辺の(2r+1)×(2r+1)のウィンドウ内の画素の平均μ及び分散σ2を取得する。例えば、画素の平均μ及び分散σ2を取得することは、インテグラルイメージングに基づくボックスフィルタリングによって効率的に実装されてもよい。
2.式(16)に基づいて、各画素のパラメータf及びgを計算する。
3.使用する画素の周囲の3×3のウィンドウ内のパラメータf及びgの値の平均として、各画素のF及びGを計算する。
二重自己誘導フィルタリングは、半径r及びノイズパラメータeによって制御されてもよく、より大きい半径rはより高い空間分散を意味してもよく、より高いノイズパラメータeはより高い範囲分散を意味してもよい。
図19は、本開示の実施形態による部分空間投影の一例を示す。図19に示す例では、部分空間投影は、ソースYに近い最終的な復元Xfを生成するために、安価な復元X1及びX2を使用してもよい。安価な復元X1及びX2がソースYに近くなくても、安価な復元X1及びX2が正しい方向に移動する場合、適切な乗数{α、β}は、安価な復元X1及びX2をソースYに近いものとすることができる。例えば、最終的な復元Xfは、下記の式(17)に基づいて取得されてもよい。
上記のデブロッキングフィルタ、ALF、CDEF及びループ復元に加えて、クロスコンポーネントサンプルオフセット(CCSO, Cross-Component Sample Offset)フィルタ又はCCSOと呼ばれるループフィルタリング方法も、復元されたサンプル(復元サンプルとも呼ばれる)の歪みを低減するためにループフィルタリングプロセスにおいて実施されてもよい。CCSOフィルタは、ループフィルタリング段階内のいずれかの位置に配置されてもよい。CCSOフィルタリングプロセスでは、第1の色成分の処理された入力復元サンプルに基づいて出力オフセットを決定するために、非線形マッピングが使用されてもよい。出力オフセットは、CCSOのフィルタリングプロセスにおいて第2の色成分の復元サンプルに加えられてもよい。
図20に示すように、入力復元サンプルは、フィルタサポート領域に位置する第1の色成分のものでもよい。具体的には、図20は、本開示の実施形態による、CCSOフィルタ内のフィルタサポート領域の一例を示す。フィルタサポート領域は、p0、p1、p2及びp3の4つの復元サンプルを含んでもよい。図20の例における4つの入力復元サンプルは、垂直方向及び水平方向の十字形状に従う。一例では、第1の色成分の中心サンプル(cで示す)及び第2の色成分におけるフィルタリングされるべきサンプル(fで示す)は、同一位置にある。入力復元サンプルを処理する場合、以下のステップが適用されてもよい。
ステップ1:p0、p1、p2及びp3の4つの復元サンプルと中心サンプルcとの間のデルタ値(例えば、差)が計算され、それぞれm0、m1、m2及びm3として示される。例えば、p0とcの間のデルタ値はm0である。
ステップ2:デルタ値m0~m3は、複数の(例えば、4つの)離散値に更に量子化されてもよい。例えば、量子化値は、それぞれm0、m1、m2及びm3についてd0、d1、d2及びd3として示されてもよい。一例では、d0、d1、d2及びd3のそれぞれについての量子化値は、以下の量子化プロセスに基づいて、-1、0又は1となってもよい。
ここで、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等のような整数でもよい。最初の列は、量子化されたd0、d1、d2及びd3のこれらの組み合わせに割り当てられたインデックスを表す。中央の列は、量子化されたd0、d1、d2及びd3の全ての可能な組み合わせを表す。
CCSOフィルタの最終的なフィルタリングプロセスは、以下のように適用されてもよい。
ここで、fはフィルタリングされるべき復元サンプルであり、sは、例えば図21A~21Cから取得される出力オフセット値である。式(21)に示す例において、フィルタリングされるべき復元サンプルfのフィルタリングされたサンプル値f'は、ビット深度に関連する範囲に更にクリッピングされてもよい。
ローカルサンプルオフセット(LSO, Local Sample Offset)方法又はLSOフィルタリングプロセスがビデオコーディングにおいて使用されてもよい。LSOでは、CCSOで使用されるのと同様のフィルタリング手法が適用されてもよい。しかし、出力オフセット値は、フィルタリングプロセスで使用される入力復元サンプルがあるのと同じ色成分である色成分に適用されてもよい。したがって、LSOでは、フィルタリングプロセスにおいて使用される入力復元サンプル(例えば、p0~p3及びc)及びフィルタリングされるべき復元サンプル(例えば、f)は、輝度成分、色差成分又はいずれか適切な成分のような同じ成分にある。LSOは、CCSOのものと同様又は同一のフィルタ形状(例えば、図20に示す)を有してもよい。
図20に示すように、第1の色のp0、p1、p2及びp1を有する第1の色のサンプルcに対応してフィルタリングされるべき第2の色の復元サンプルfの例示的なCCSOフィルタリングは、5タップCCSOフィルタ設計と呼ばれてもよい。或いは、異なる数のフィルタタブを有する他のCCSO設計が使用されてもよい。例えば、より複雑性の低い3タップCCSO設計がビデオコーディングにおいて使用されてもよい。図22は、本開示の実施形態によるCCSOの例示的な実装を示す。3タップCCSO実装について、8つの異なる例示的なフィルタ形状のいずれかが定義されてもよい。フィルタ形状のそれぞれは、第1の成分(第1の色成分とも呼ばれる)における3つの復元サンプル(3タップとも呼ばれる)の位置を定義してもよい。3つの復元サンプルは、中心サンプル(cとして示す)と、図22において同じ数(1~8のうち1つ)で示す、2つの対称的に配置されたサンプルとを含んでもよい。一例では、フィルタリングされるべき第2の色成分における復元サンプルは、中心サンプルcと同一位置にある。明確にするために、フィルタリングされるべき第2の色成分における復元サンプルは、図22に示されていない。
サンプル適応オフセット(SAO, Sample Adaptive Offset)フィルタがビデオコーディングにおいて使用されてもよい。いくつかの例示的な実装では、SAOフィルタ又はSAOフィルタリングプロセスは、例えばスライスヘッダ内のオフセット値を使用することによって、デブロッキングフィルタの後の復元信号に適用されてもよい。輝度サンプルについて、エンコーダは、SAOフィルタが現在のスライスに適用されるか否かを決定してもよい。SAOフィルタが有効である場合、表4に示すように、カレントピクチャは再帰的に4つのサブ領域に分割されてもよく、6つのSAOタイプ(SAOタイプ1~6)のうち1つがサブ領域毎に選択されてもよい。SAOフィルタは、復元画素を複数のカテゴリに分類し、オフセットを現在のサブ領域における各カテゴリの画素に加えることによって歪みを低減してもよい。エッジ特性はSAOタイプ1~4の画素分類に使用されてもよく、画素強度はSAOタイプ5~6の画素分類に使用されてもよい。
バンドオフセット(BO, band offset)は、サブ領域の画素(例えば、全ての画素)を複数のバンドに分類するために使用されてもよく、各バンドは同じ強度間隔での画素を含んでもよい。強度範囲は、最小強度値(例えば、ゼロ)から最大強度値(例えば、8ビット画素について255)までの複数の間隔(例えば、32個の間隔)に等しく分割されてもよく、各間隔はオフセットを有してもよい。続いて、複数の間隔又はバンド(例えば、32個のバンド)は2つのグループに分割されてもよい。一方のグループは16個の中心帯域を含んでもよく、他方のグループは16個の残りのバンドを含んでもよい。一例では、1つのグループ内のオフセットのみが送信される。BOにおける画素分類動作に関して、各画素の5つの最上位ビットがバンドインデックスとして直接使用されてもよい。
エッジオフセット(EO, edge offset)は、図23に示すように、エッジ方向情報を考慮して、画素分類のために4つの1-D 3画素パターンを使用してもよい。図23は、EOにおける画素分類のための4つの1-D 3画素パターンの例を示す。左から右に向かって、4つの1D 3画素パターンは、それぞれ1D 0°パターン(2310)、1D 90°パターン(2320)、1D 135°パターン(2330)及び1D 45°パターン(2340)に対応する。ピクチャ(例えば、カレントピクチャ)のサブ領域毎に、4つのパターンのうち1つが、各画素を当該画素の2つの隣接画素と比較することによって、画素を複数のカテゴリに分類するために選択されてもよい。選択は、サイド情報としてビットストリームで送信されてもよい。表5はEOの画素分類ルールを示す。
一例では、ラインバッファが保存できるように、デコーダ側のSAOがLCUに依存せずに動作することが望ましい。SAOをLCUに依存せずに動作させるために、一例では、各LCU内の上下の行の画素は、90°、135°及び45°の分類パターンが選択された場合にはSAO処理されず、各LCU内の左端及び右端の列の画素は、0°、135°及び45°のパターンが選択された場合にはSAO処理されない。
以下の表6は、パラメータが隣接CTUからマージされない場合に、CTUについて伝達され得るシンタックスを記述している。
上記のCCSOループフィルタリングプロセスについてのいくつかの実装では、図21A~21Cにおいて5タップCCSOフィルタリングについて例示的に示されているように、量子化デルタ値(又はこれらのインデックス)の組み合わせと、クロスコンポーネントサンプルオフセット値との間の対応関係は、CCSOルックアップテーブル(LUT, lookup table)と呼ばれてもよい。ビデオ符号化又は復号中にCCSOフィルタリングプロセスにおいて、1つ以上のLUTが潜在的に使用されてもよい。CCSOフィルタリングのために複数のLUTが提供される場合、様々なレベル(例えば、ピクチャレベル、スライスレベル、CTBレベル、CBレベル、FUレベル等)でのループフィルタリングプロセスの間に、エンコーダ又はデコーダによって、複数のLUTからの選択が行われてもよい。
これらのLUTのそれぞれは、いずれか適切な数のタップ(例えば、5タップ若しくは3タップ、又はいずれかの他の数のタップ)及びデルタ量子化レベル(例えば、上記の3レベルのデルタ量子化、又はいずれかの他の数のデルタ量子化レベル)に基づいてもよい。したがって、LUTは異なるサイズ(例えば、上記のように、5タップ及び3つの量子化レベルのCCSOについて(5-1)3=81個の量子化デルタの組み合わせ及びオフセットの対応関係、又は3タップ及び3つの量子化レベルのCCSOについて(3-1)3=8個の量子化デルタの組み合わせ及びオフセットの対応関係)になってもよい。
上記のように、これらのLUTのいくつかは予め定義されてもよい。例えば、これらの所定のCCSO LUTは、CCSOフィルタリングプロセスによって一般的に使用される訓練画像データを使用してオフラインで予め訓練されてもよい。このような所定のLUTは、定数(様々な所定の量子化デルタ値の組み合わせについて固定数のオフセット)でもよく、したがって、これらの所定のLUTの内容は、エンコーダからデコーダへのビデオビットストリームにおいて伝達される必要がなくてもよい。代わりに、これらのLUTは、予め記憶されてもよく、或いは、ビデオエンコーダ又はビデオデコーダにおいてCCSOフィルタリングプロセスによって使用されるために配線又はハードコードされてもよい。
上記に更に説明したように、CCSOフィルタリングプロセスの間に使用される所定のLUT/予め訓練されたLUT以外のCCSO LUTのいくつかは、オフラインで訓練されるのではなく、符号化プロセスの間にエンコーダによって導出されてもよい。これらのCCSO LUTは予め定義されないので、これらの内容はビットストリームで明示的に伝達される必要がある。これらのエンコーダによって導出されたLUTの伝達は、特に大きいLUTの場合には、フレーム当たり相当なオーバーヘッドを含み、それによって、相当な望ましくない全体のビットレートロスを潜在的に引き起こすので、通常では高コストである。したがって、これらのLUTを編成し、符号化し、ビットストリームで伝達するための効率的な方式を考案することが望まれ得る。
いくつかの例示的な実装では、所定のLUTのみが、ビデオを符号化又は復号するときのCCSOフィルタリングプロセスにおいて使用されてもよい。いくつかの他の例示的な実装では、エンコーダによって導出されたLUTのみが、ビデオを符号化又は復号するときのCCSOフィルタリングプロセスにおいて使用されてもよい。更にいくつかの他の例示的な実装では、所定のLUTとエンコーダによって導出されたLUTとの双方が、ビデオを符号化又は復号するときのCCSOフィルタリングプロセスにおいて使用されてもよく、特定のFUのCCSOフィルタリングは所定のLUT及びエンコーダによって導出されたLUTから選択されたいずれかのLUTを使用してもよい。
上記に詳細に説明したように、CCSOプロセスは、入力として第1の色成分(言い換えると、例えば、色差成分だけに限定されない輝度成分を含むY又はCb又はCr)の復元サンプルを使用するフィルタリングプロセスを示し、出力は、特定のCCSO LUTに従って第1の色成分の異なる色成分である第2の色成分に適用される。CCSOフィルタの例示的な5タップフィルタ形状が図20に示されており、対応する例示的なLUTが図21A~21Cに示されている。
第1の色成分及び第2の色成分が異なるフィルタリングプロセスはCCSOと呼ばれるが、上記のように、ローカルサンプルオフセット(LSO, Local Sample Offset)と呼ばれるイントラカラーオフセットプロセスも実装されてもよい。LSOフィルタプロセスは、入力として第1の色成分(例えば、Y又はCb又はCr)の復元サンプルを使用してもよく、出力は特定のLSO LUTに従って同じ第1の色成分に対して適用される。特定のLSO LUTは、LSOについて1つ以上のLUTから選択されてもよく、CCSOプロセスにおけるクロスコンポーネントサンプルオフセットの決定と同様に、ローカルサンプルオフセットを決定するために使用されてもよい。CCSO LUTと同様に、このようなLSO LUTは、例えば、固定数のLUTとして予め定義されてもよく(オフラインで訓練されてもよく)、或いは、符号化プロセスの間にエンコーダによって導出されてもよい。エンコーダによって導出されたLSO LUTはビットストリームで伝達される必要があるが、所定/固定/定数/オフライン訓練のLSO LUTは、エンコーダ又はデコーダに予め記憶されてもよく、配線されてもよく或いはハードコードされてもよく、上記の所定のCCSO LUTと同様に伝達される必要はない。用語「サンプルオフセットフィルタ」は、本明細書に記載のCCSO又はLSOフィルタリングプロセスを含むが、これらに限定されない、式(21)の一般的な基礎原理に基づくサンプルレベルフィルタリングプロセスの一般的な用語として使用される。
以下の開示は、所定のLUT及び/又はエンコーダによって導出されたLUTの構築及び伝達の様々な例示的な実装について更に説明する。これらの実装及びその基礎原理は、CCSOフィルタリングだけでなく、LSOフィルタリングにも適用可能である。説明の便宜上、いくつかの状況においてCCSOが具体的に言及されることがある。しかし、以下の開示はCCSOに限定されず、LSOにも同様に適用可能である。
いくつかの例示的な実装では、1つ以上の所定のルックアップテーブル(LUT, lookup table)がCCSO及び/又はLSOについて定義されてもよく、これらのルックアップテーブルは、例えば式(21)に従って、CCSO又はLSOフィルタリングされたサンプル値を計算するように、特定の色成分の復元サンプル値に加えられるオフセット値を導出するために使用されてもよい。これらの所定のCCSO及び/又はLSO LUTは、事前にエンコーダ及びデコーダの間で共有されており知られている。したがって、これらのLUTは、エンコーダ又はデコーダデバイスのいずれかに記憶、配線又はハードコードされてもよい。
所定のLUTが使用されるべきであることを示すために、いくつかの例示的な実施形態では、所定のLUT又はオフライン訓練されたLUTの1つ以上がCCSO又はLSOで使用されるか否かは、ビットストリームに埋め込まれたフラグで伝達される。いくつかの実装では、フラグは、CCSO又はLSOフィルタプロセスの一方又は双方が所定のLUTを使用するか否かを示すように実装されてもよい。
このようなフラグは、様々な符号化/復号レベルで伝達されてもよい。例えば、フラグは、ビデオパラメータセット(VPS, video parameter set)、シーケンスパラメータセット(SPS, sequence parameter set)、ピクチャパラメータセット(PPS, picture parameter set)、適応パラメータセット(APS, adaptation parameter set)、フレームヘッダ、スライスヘッダ、タイルヘッダ等で伝達されてもよい。フラグの伝達は、符号化/復号の対応するレベルで、所定のCCSO及び/又はLSO LUTを使用するか否かを制御してもよい。
いくつかの例示的な実施形態では、特定の伝達レベルについてオフラインで訓練されたLUTがCCSO又はLSOに使用されないことを示す値でフラグが伝達される場合、その伝達レベルにおいてCCSO又はLSOで使用されるLUTは、符号化及び処理中に導出され、ビットストリームで伝達される。
いくつかの例示的な実施形態では、1つよりも多くの所定のLUTが存在する場合、複数のLUTの中のLUTの選択は、LUTインデックスを使用してビットストリームで伝達されてもよい。いくつかの実装では、所定のLUTがグループ化されてもよい。各グループは1つ以上のLUTを含んでもよい。これらの実装では、どのLUTを使用すべきかの伝達は、どのグループを使用すべきかの指示とグループ内のLUTインデックスとの双方を含んでもよい。
いくつかの実施形態では、LUT及び/又はLUTグループへの上記のインデックスは、様々な符号化/復号レベル又は範囲で伝達されてもよい。例えば、これらは、VPS、SPS、PPS、APS、フレームヘッダ、スライスヘッダ、タイルヘッダ等で伝達されてもよい。インデックスの伝達は、どの所定のLUTを符号化/復号の対応するレベル又は範囲で使用すべきかを制御してもよい。
いくつかの例示的な実施形態では、所定のLUTがCCSO及び/又はLSOで使用される場合、所定のLUT内のオフセット値はビットストリームで伝達される必要はないが、フラグのないLUTインデックス(組み合わせフラグ/インデックスとも呼ばれる)は、LUTの1つ以上のうちどれがCCSO及び/又はLSOでの符号化/復号に実際に使用されるかを示すために伝達されてもよい。言い換えると、LUTインデックスは、所定のLUTのうちどれが使用されるべきかを示し、また、エンコーダによって導出されたLUTではなく所定のLUTが使用されることも暗示的に伝達する。いくつかの実装では、所定のLUTが使用されないことを示すために、特別なインデックス、例えばヌルインデックスがこれらの実施形態において使用されてもよい(エンコーダによって導出されてビットストリームで伝達されたLUTが代わりに使用される)。
上記の例示的な実施形態では、LUTの1つ以上のうちどれがCCSOでの符号化/復号に実際に使用されるかを示すために伝達される組み合わせフラグ/インデックスは、様々な符号化/復号レベル/範囲で伝達されてもよい。例えば、これはVPS、SPS、PPS、APS、フレームヘッダ、スライスヘッダ、タイルヘッダ等で伝達されてもよい。これらのインデックスの伝達は、どの所定のCCSO及び/又はLSO LUTが、組み合わせフラグ/インデックスが伝達されるレベルに対応する符号化/復号範囲又はレベルで使用されるかを制御してもよい。
図20及び22に関して上記に説明したように、CCSO又はLSOについてのLUTは、フィルタリングされるべきサンプルに対する様々な数のフィルタタップ及びタップ場所(フィルタタップ数及びタップ場所はCCSO又はLSO LUTについてのフィルタサポート又はフィルタサポートパラメータと呼ばれる)に関連してもよい。用語「タップ場所」は、代わりに「タップ位置」と呼ばれる。
フィルタサポートパラメータは、例えば、デコーダが、上記のLUTインデックスによって伝達され得る所定のLUT内のオフセット値を調べる前に、量子化デルタ値を正確に計算するために伝達されてもよい。
いくつかの例示的な実施形態では、同じタイプのサンプルオフセットフィルタ(所定のサンプルオフセットフィルタタイプ又はエンコーダによって導出されたサンプルオフセットフィルタタイプのいずれか)は、フィルタサポートパラメータの少なくとも1つを共有してもよい。いくつかの例示的な実施形態では、これらは、全てのフィルタサポートパラメータを共有してもよい。いくつかの他の例示的な実施形態では、異なるタイプのサンプルフィルタは、フィルタサポートパラメータの少なくとも1つを共有してもよい。いくつかの例示的な実施形態では、全てのフィルタサポートパラメータは、異なるタイプのサンプルフィルタの間で共有されてもよい。
いくつかの例示的な実施形態では、所定のLUTがCCSOで使用される場合、フィルタサポートパラメータは、オフラインの所定のLUTが使用されないときにCCSOで使用されるフィルタサポートパラメータ(例えば、エンコーダによって導出されたサンプルオフセットフィルタのためのフィルタサポートパラメータ)と比較して、異なってもよい。パラメータのいずれか1つが異なる場合、フィルタパラメータは異なると考えられてもよい。いくつかの例示的な実施形態では、フィルタサポートパラメータの全てが、異なるタイプのフィルタパラメータの間で異なってもよい。
いくつかの例示的な実施形態では、CCSO又はLSOについての所定のLUTのフィルタタップ数は、導出されてビットストリームで伝達されたLUTのフィルタタップ数よりも少なくてもよい。所定のLUTのフィルタタップ数の例示的な値は、1から1024の間の整数を含むが、これらに限定されない。所定のLUTのフィルタタップ数の他の例は、2のべき乗の値のみを含む。所定のLUTのフィルタタップ数の更に他の例は、例えば1024を境界とする2のべき乗の値のみを含む。
いくつかの例示的な実施形態では、所定のLUTのフィルタタップ数は、導出されてビットストリームで伝達されたLUTのフィルタタップ数よりも大きくてもよい。所定のLUTのフィルタタップ数の例示的な値は、ftと1024との間のいずれかの整数を含むが、これらに限定されない。ここで、ftは、エンコーダによって導出されたLUTのフィルタタップ数よりも大きい。所定のLUTのフィルタタップ数の他の例は、2のべき乗の値のみを含む。所定のLUTのフィルタタップ数の更に他の例は、ftと上限(例えば1024)との間を境界とする2のべき乗の値のみを含む。
いくつかの例示的な実施形態では、フィルタサポートパラメータの少なくとも1つは、サンプルオフセットフィルタの1つのタイプの中で異なってもよい。例えば、フィルタタップ数は、CCSO又はLSOについての所定のLUT内のフィルタについて異なってもよい。すなわち、所定のLUTのフィルタタップ数は、必ずしも同じ値ではない。他の例として、フィルタタップ場所のセットは、CCSO又はLSOについての所定のLUT内のフィルタについて異なってもよい。
いくつかの例示的な実施形態では、所定のLUTの入力サンプル又はタップの相対位置は、エンコーダによって導出されて伝達されるLUTの入力サンプル/タップの全ての相対位置を包含する位置又はタップのセットを含んでもよい。一例が図24に示されており、ここで、破線の円は、5タップフィルタを表す所定のLUTに使用される入力サンプル位置又はタップを示し、実線の円は、3タップフィルタであるエンコーダによって導出されて伝達されるLUTに使用されるサンプル位置又はタップを示す。このような例示的な実施形態では、3タップフィルタの各タップのサンプル位置は、5タップフィルタのものに(或いはサブセットとして)包含される。
いくつかの実施形態では、所定のLUTの入力サンプルの相対位置は、同じ構成を共有してもよい。他の代替実施形態では、所定のLUTの入力サンプルの相対位置は、所定のLUTのグループのLUTの間で異なってもよい。例えば、LUTのいくつかは同じタップ構成を共有してもよいが、少なくともいくつかのLUTは同じタップ数であっても異なるタップ構成を有してもよい。
いくつかの例示的な実施形態では、上記のように、フィルタサポートパラメータは、タップデルタの量子化に使用されるデルタ量子化ステップを更に含んでもよい。いくつかの例示的な実施形態では、所定のLUTがCCSO又はLSOにおいて使用される場合、オフセット値を取得するためのLUTにインデックス化するために入力量子化デルタレベル値の組み合わせを生成するために入力復元サンプルに適用されるデルタ量子化ステップサイズは、オフラインの所定のLUTが使用されないときにCCSO又はLSOで使用されるデルタ量子化ステップサイズ(又はエンコーダによって導出されたLUTで使用される量子化ステップサイズ)と比較して異なってもよい。
いくつかの他の例示的な実施形態では、所定のLUTがCCSO又はLSOで使用される場合、所定のLUTへの潜在的な入力デルタ値の数(又は量子化レベルの数)は、所定のLUTが使用されないときにCCSO又はLSOで使用される潜在的な入力デルタ値の数と比較して、異なってもよい。潜在的な入力デルタ値は、入力復元サンプルを量子化することによって導出され、次いでLUTからオフセット値を取得するための入力として使用される適用可能なデルタ値を示す。
いくつかの特別な例では、オフラインで訓練された所定のLUTが使用されない場合、LUTへの例示的な3つの潜在的な入力デルタ値(又は量子化レベル)は、-1、0、1でもよい。所定のLUTが使用される場合、異なる数の量子化レベル(例えば、5)が使用されてもよく、潜在的な入力デルタ値は、例えば-2、-1、0、1、2でもよい。例えば、所定のLUTは、より多くの量子化デルタ値(又は量子化レベルの数)をサポートしてもよく、したがって、同じタップ数についてデルタ値のより多くの組み合わせをサポートしてもよい。
本開示において使用されるとき、CCSO又はLSOフィルタに関する用語「ループフィルタリングパラメータ」は、LUTのタイプ(例えば、所定のもの又はエンコーダによって導出されたもののいずれか)を示すフラグ、LUTへのインデックス、LUT内のデルタレベルの数、デルタの量子化ステップ、各フィルタについてのタップ数、各フィルタについてのフィルタリングされたサンプル位置に対するタップ場所等を含むが、これらに限定されない、CCSO又はLSOフィルタの様々な特性を示す、ビットストリームにおいて伝達されるパラメータを示す。
提案される方法及び実施形態は、別々に或いはいずれかの順序で組み合わせて使用されてもよい。さらに、方法(又は実施形態)のそれぞれは、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実施されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読み取り可能媒体に記憶されたプログラムを実行する。
図25は、クロスサンプルオフセットフィルタリング又はローカルサンプルオフセットフィルタリングのための、上記の実施形態の基礎となる原理に従った例示的な方法のフローチャート2500を示す。例示的な方法のフローは2501において始まる。S2510において、コーディングされたビデオビットストリームから復元されたカレントピクチャ内の第1の色成分の復元サンプルについて、コーディングされたビデオビットストリームから少なくとも1つのループフィルタリングパラメータが抽出される。少なくとも1つのループフィルタリングパラメータはフラグを含んでもよい。S2520において、フラグに基づいて、サンプルオフセットフィルタのタイプが決定される。サンプルオフセットフィルタは、第1の色成分の復元サンプルに適用される。サンプルオフセットフィルタのタイプは所定のサンプルオフセットフィルタタイプ又はエンコーダによって導出されたサンプルオフセットフィルタタイプのいずれかでもよい。S2530において、決定されたサンプルオフセットフィルタのタイプに少なくとも基づいて、第1の色成分の復元サンプルに適用されるターゲットサンプルオフセットフィルタが特定される。S2540において、ターゲットサンプルオフセットフィルタ及び第2の色成分の複数の復元参照サンプルに基づいて、第1の色成分の復元サンプルがフィルタリングされ、第1の色成分のフィルタリングされた復元サンプルを生成する。例示的な方法のフローはS2599で終了する。
本開示の実施形態は、別々に或いはいずれかの順序で組み合わせて使用されてもよい。さらに、方法(又は実施形態)、エンコーダ及びデコーダのそれぞれは、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実装されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読み取り可能媒体に記憶されたプログラムを実行する。本開示の実施形態は、輝度ブロック又は色差ブロックに適用されてもよい。
上記の技術は、コンピュータ読み取り可能命令を使用してコンピュータソフトウェアとして実装され、1つ以上のコンピュータ読み取り可能媒体に物理的に記憶されてもよい。例えば、図26は、開示の対象物の特定の実施形態を実装するのに適したコンピュータシステム(2600)を示す。
コンピュータソフトウェアは、いずれかの適切な機械コード又はコンピュータ言語を使用してコーディングされてもよく、当該機械コード又はコンピュータ言語は、命令を含むコードを生成するために、アセンブリ、コンパイル、リンク又は類似のメカニズムを受けてもよく、当該命令は、1つ以上のコンピュータ中央処理装置(CPU, central processing unit)、グラフィックス処理ユニット(GPU, Graphics Processing Unit)等によって、直接的に或いはインタープリタ、マイクロコード実行等を通じて実行されてもよい。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットのデバイス等を含む様々なタイプのコンピュータ又はその構成要素上で実行されてもよい。
コンピュータシステム(2600)について図26に示される構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲又は機能に関する如何なる限定も示唆することを意図するものではない。また、構成要素の構成も、コンピュータシステム(2600)の例示的な実施形態に示される構成要素のいずれか1つ又は組み合わせに関する如何なる依存性又は要件も有するものとして解釈されるべきではない。
コンピュータシステム(2600)は、特定のヒューマンインタフェース入力デバイスを含んでもよい。このようなヒューマンインタフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動き等)、オーディオ入力(音声、拍手等)、視覚入力(ジェスチャ等)、嗅覚入力(図示せず)を通じて、1人以上の人間のユーザによる入力に応答してもよい。また、ヒューマンインタフェースデバイスは、オーディオ(例えば、会話、音楽、周辺音)、画像(スキャンされた画像、静止画カメラから取得された写真画像等)、ビデオ(2次元ビデオ、立体ピクチャを含む3次元ビデオ等)のような、人間による意識的入力に必ずしも直接関連しない特定のメディアをキャプチャするために使用されてもよい。
入力ヒューマンインタフェースデバイスは、キーボード(2601)、マウス(2602)、トラックパッド(2603)、タッチ画面(2610)、データグローブ(図示せず)、ジョイスティック(2605)、マイクロフォン(2606)、スキャナ(2607)及びカメラ(2608)のうち1つ以上を含んでもよい。
また、コンピュータシステム(2600)は、特定のヒューマンインタフェース出力デバイスを含んでもよい。このようなヒューマンインタフェース出力デバイスは、例えば、触覚出力、音、光及び嗅覚/味覚を通じて、1人以上の人間のユーザの感覚を刺激してもよい。このようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチ画面(2610)、データグローブ(図示せず)又はジョイスティック(2605)による触覚フィードバック、ただし、入力デバイスとして機能しない触覚フィードバックデバイスが存在してもよい)と、オーディオ出力デバイス(スピーカ(2609)、ヘッドフォン(図示せず)等)と、視覚出力デバイス(それぞれがタッチ画面入力機能を有しても有さなくてもよく、それぞれが触覚フィードバック機能を有しても有さなくてもよく、いくつかが2次元視覚出力又は立体出力のような手段を通じた3次元以上の出力を出力可能でもよいCRT画面、LCD画面、プラズマ画面、OLED画面を含む画面(2610)、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず))と、プリンタ(図示せず)とを含んでもよい。
また、コンピュータシステム(2600)は、CD/DVD又は同様の媒体(2621)を有するCD/DVD ROM/RW(2620)を含む光媒体のような人間がアクセス可能な記憶デバイス及び関連する媒体、サムドライブ(2622)、取り外し可能ハードドライブ又はソリッドステートドライブ(2623)、テープ及びフロッピーディスク(図示せず)のようなレガシー磁気媒体、セキュリティドングル(図示せず)のような特殊なROM/ASIC/PLDに基づくデバイス等を含んでもよい。
また、当業者は、ここに開示の対象物に関連して使用される用語「コンピュータ読み取り可能媒体」が伝送媒体、搬送波又は他の非一時的な信号を含まないことを理解すべきである。
また、コンピュータシステム(2600)は、1つ以上の通信ネットワーク(2655)へのインタフェース(2654)を含んでもよい。ネットワークは、例えば、無線、有線、光でもよい。ネットワークは、ローカル、広域、メトロポリタン、車両及び産業、リアルタイム、遅延耐性等でもよい。1つ以上の通信ネットワーク(2655)の例は、イーサネット、無線LAN、セルラネットワーク(GSM、3G、4G、5G、LTE等を含む)、TV有線又は無線広域デジタルネットワーク(ケーブルTV、衛星TV、及び地上放送TVを含む)、車両及び産業(CANBusを含む)等を含む。特定のネットワークは、一般的に、特定の汎用データポート又は周辺バス(2649)に取り付けられる外部ネットワークインタフェースアダプタ(例えば、コンピュータシステム(2600)のUSBポート等)を必要とし、他のネットワークインタフェースアダプタは、一般的に、以下に説明するシステムバス(例えば、PCコンピュータシステムへのイーサネットインタフェース又はスマートフォンコンピュータシステムへのセルラネットワーク)に取り付けられることによって、コンピュータシステム(2600)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(2600)は、他のエンティティと通信することができる。このような通信は、一方向の受信のみ(例えば、放送TV)、一方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)でもよく、或いは、例えば、ローカル又は広域デジタルネットワークを使用する他のコンピュータシステムへの双方向でもよい。特定のプロトコル及びプロトコルスタックは、上記のようなネットワーク及びネットワークインタフェースのそれぞれにおいて使用されてもよい。
上記のヒューマンインタフェースデバイス、人間がアクセス可能な記憶デバイス及びネットワークインタフェースは、コンピュータシステム(2600)のコア(2640)に取り付けられてもよい。
コア(2640)は、1つ以上の中央処理装置(CPU)(2641)、グラフィックス処理ユニット(GPU)(2642)、フィールドプログラマブルゲートアレイ(FPGA, Field Programmable Gate Area)(2643)の形式の特殊なプログラム可能処理ユニット、特定のタスク用のハードウェアアクセラレータ(2674)、グラフィックスアダプタ(2650)等を含んでもよい。これらのデバイスは、読み取り専用メモリ(ROM)(2645)、ランダムアクセスメモリ(2646)、内部大容量記憶装置(2647)(内部のユーザアクセス不可能なハードドライブ、SSD等)と共に、システムバス(2648)を通じて接続されてもよい。いくつかのコンピュータシステムでは、システムバス(2648)は、更なるCPU、GPU等による拡張を可能にするために、1つ以上の物理プラグの形式でアクセス可能でもよい。周辺デバイスは、コアのシステムバス(2648)に直接取り付けられてもよく、或いは、周辺バス(2649)を通じて取り付けられてもよい。一例では、画面(2610)はグラフィックスアダプタ(2650)に取り付けられてもよい。周辺バスのアーキテクチャは、PCI、USB等を含む。
CPU(2641)、GPU(2642)、FPGA(2643)及びアクセラレータ(2644)は特定の命令を実行してもよく、当該特定の命令は、組み合わせによって上記のコンピュータコードを構成してもよい。当該コンピュータコードは、ROM(2645)又はRAM(2646)に記憶されてもよい。また、一時的なデータは、RAM(2646)に記憶されてもよいが、永続的なデータは、例えば、内部大容量記憶装置(2647)に記憶されてもよい。1つ以上のCPU(2641)、GPU(2642)、大容量記憶装置(2647)、ROM(2645)、RAM(2646)等と密接に関連してもよいキャッシュメモリを使用することによって、メモリデバイスのいずれかへの高速記憶及び検索が可能になってもよい。
コンピュータ読み取り可能媒体は、様々なコンピュータに実装された動作を実行するためのコンピュータコードを有してもよい。媒体及びコンピュータコードは、本開示の目的のために特に設計及び構築されたものでよく、或いは、コンピュータソフトウェア分野における当業者に周知で入手可能なようなものでもよい。
非限定的な例として、アーキテクチャ(2600)、具体的には、コア(2640)を有するコンピュータシステムは、1つ以上の有形のコンピュータ読み取り可能媒体に具現されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として機能を提供できる。このようなコンピュータ読み取り可能媒体は、コア内部の大容量記憶装置(2647)又はROM(2645)のような非一時的な性質のコア(2640)の特定の記憶装置と同様に、上記のようなユーザがアクセス可能な大容量記憶装置に関連する媒体でもよい。本開示の様々な実施形態を実装するソフトウェアは、このようなデバイスに記憶されてコア(2640)によって実行されてもよい。コンピュータ読み取り可能媒体は、特定のニーズに従って、1つ以上のメモリデバイス又はチップを含んでもよい。ソフトウェアは、コア(2640)、具体的には、その中のプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(2646)に記憶されたデータ構造を定義し、ソフトウェアによって定義された処理に従ってこのようなデータ構造を修正することを含む、本明細書に記載の特定の処理又は特定の処理の特定の部分を実行させてもよい。さらに或いは代替として、コンピュータシステムは、回路(例えば、アクセラレータ(2644))内に配線されたロジック又は他の方法で具現されたロジックの結果として、機能を提供してもよく、当該回路は、本明細書に記載の特定の処理又は特定の処理の特定の部分を実行するために、ソフトウェアの代わりに或いはソフトウェアと共に動作してもよい。ソフトウェアへの言及は、ロジックを含み、必要に応じて、その逆も可能である。コンピュータ読み取り可能媒体への言及は、必要に応じて、実行するためのソフトウェアを記憶する回路(集積回路(IC)等)、実行するためのロジックを具現する回路又はこれらの双方を含んでもよい。本開示は、ハードウェア及びソフトウェアのいずれかの適切な組み合わせを含む。
本開示は、いくつかの例示的な実施形態を記載しているが、本開示の範囲内に入る変更、置換及び様々な代替の等価物が存在する。上記に記載の実装及び実施形態において、プロセスの動作は必要に応じていずれかの量又は順序で結合又は配置されてもよい。さらに、上記のプロセスの動作のうち2つ以上は並列で実行されてもよい。したがって、当業者は、本明細書に明示的に図示又は記載されていないが、本開示の原理を具現し、したがって、本開示の真意及び範囲内にある多数のシステム及び方法を考案することができることが認識される。
[付録A:略語]
JEM: joint exploration model
VVC: versatile video coding
BMS: benchmark set
MV: Motion Vector
HEVC: High Efficiency Video Coding
SEI: Supplementary Enhancement Information
VUI: Video Usability Information
GOPs: Groups of Pictures
TUs: Transform Units,
PUs: Prediction Units
CTUs: Coding Tree Units
CTBs: Coding Tree Blocks
PBs: Prediction Blocks
HRD: Hypothetical Reference Decoder
SNR: Signal Noise Ratio
CPUs: Central Processing Units
GPUs: Graphics Processing Units
CRT: Cathode Ray Tube
LCD: Liquid-Crystal Display
OLED: Organic Light-Emitting Diode
CD: Compact Disc
DVD: Digital Video Disc
ROM: Read-Only Memory
RAM: Random Access Memory
ASIC: Application-Specific Integrated Circuit
PLD: Programmable Logic Device
LAN: Local Area Network
GSM: Global System for Mobile communications
LTE: Long-Term Evolution
CANBus: Controller Area Network Bus
USB: Universal Serial Bus
PCI: Peripheral Component Interconnect
FPGA: Field Programmable Gate Areas
SSD: solid-state drive
IC: Integrated Circuit
HDR: high dynamic range
SDR: standard dynamic range
JVET: Joint Video Exploration Team
MPM: most probable mode
WAIP: Wide-Angle Intra Prediction
CU: Coding Unit
PU: Prediction Unit
TU: Transform Unit
CTU: Coding Tree Unit
PDPC: Position Dependent Prediction Combination
ISP: Intra Sub-Partitions
SPS: Sequence Parameter Setting
PPS: Picture Parameter Set
APS: Adaptation Parameter Set
VPS: Video Parameter Set
DPS: Decoding Parameter Set
ALF: Adaptive Loop Filter
SAO: Sample Adaptive Offset
CC-ALF: Cross-Component Adaptive Loop Filter
CDEF: Constrained Directional Enhancement Filter
CCSO: Cross-Component Sample Offset
LSO: Local Sample Offset
LR: Loop Restoration Filter
AV1: AOMedia Video 1
AV2: AOMedia Video 2