図3は、本開示の実施形態に従う通信システム(300)の略ブロック図を表す。通信システム(300)は、例えば、ネットワーク(350)を介して、互いと通信することができる複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続されている端末デバイス(310)及び(320)の第1対を含む。図3の例では、端末デバイス(310)及び(320)の第1対は、データの一方向伝送を実行する。例えば、端末デバイス(310)は、ネットワーク(350)を介した他の端末デバイス(320)への伝送のためにビデオデータ(例えば、端末デバイス(310)によって捕捉されるビデオデータのストリーム)をコーディングしてよい。エンコーディングされたビデオデータは、1つ以上のコーディングされたビデオビットストリームの形で伝送可能である。端末デバイス(320)は、コーディングされたビデオデータをネットワーク(350)から受信し、コーディングされたビデオデータをデコーディングしてビデオピクチャを回復し、回復されたビデオデータに従ってビデオピクチャを表示してよい。一方向データ伝送は、メディアサービングアプリケーションなどにおいて一般的であり得る。
他の例では、通信システム(300)は、例えば、ビデオ会議中に、現れ得るコーディングされたビデオデータの双方向伝送を実行する端末デバイス(330)及び(340)の第2対を含む。データの双方向伝送のために、例において、端末デバイス(330)及び(340)の各端末デバイスは、ネットワーク(350)を介した端末デバイス(330)及び(340)のうちの他方の端末デバイスへの伝送のためにビデオデータ(例えば、その端末デバイスによって捕捉されるビデオピクチャのストリーム)をコーディングしてよい。端末デバイス(330)及び(340)の各端末デバイスはまた、端末デバイス(330)及び(340)のうちの他方の端末デバイスによって送信されたコーディングされたビデオデータを受信してよく、コーディングされたビデオデータをデコーディングしてビデオピクチャを回復してよく、回復されたビデオデータに従って、アクセス可能な表示デバイスでビデオピクチャを表示してよい。
図3の例では、端末デバイス(310)、(320)、(330)及び(340)は、サーバ、パーソナルコンピュータ、及びスマートフォンとして表され得るが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレイヤー、及び/又は専用のビデオ会議装置により用途を見出す。ネットワーク(350)は、例えば、ワイヤライン(有線)及び/又はワイヤレス通信ネットワークを含む、端末デバイス(310)、(320)、(330)及び(340)の間でコーディングされたビデオデータを伝達する任意数のネットワークに相当する。通信ネットワーク(350)は、回路交換及び/又はパケット交換チャネルにおいてデータを交換してもよい。代表的なネットワークには、電気通信網、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はインターネットがある。本議論のために、ネットワーク(350)のアーキテクチャ及びトポロジは、本明細書において以降で説明されない限りは、本開示の動作に無関係であってよい。
図4は、開示されている対象の応用例として、ストリーミング環境におけるビデオエンコーダ及びビデオデコーダの配置を表す。開示されている対象は、例えば、ビデオ会議と、デジタルTVと、CD、DVD、メモリスティックなどを含むデジタル媒体上での圧縮されたビデオの記憶と、などを含む他のビデオ対応用途に同様に適用可能であることができる。
ストリーミングシステムは、例えば、圧縮されていないビデオピクチャのストリーム(402)を生成するビデオソース(401)、例えば、デジタルカメラ、を含むことができる捕捉サブシステム(413)を含んでよい。例において、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮影されるサンプルを含む。ビデオピクチャのストリーム(402)は、エンコーディングされたビデオデータ(404)(又はコーディングされたビデオビットストリーム)と比較して高いデータボリュームを強調するために太線で表されており、ビデオソース(401)へ結合されたビデオエンコーダ(403)を含む電子機器(420)によって処理され得る。ビデオエンコーダ(403)は、以下で更に詳細に記載されるように、開示されている対象の態様を可能にするか又は実装するためのハードウェア、ソフトウェア、又はそれらの組み合わせを含むことができる。エンコーディングされたビデオデータ(404)(又はエンコーディングされたビデオビットストリーム(404))は、ビデオピクチャのストリーム(402)と比較してより低いデータボリュームを強調するために細線で表されており、将来の使用のためにストリーミングサーバ(405)に記憶され得る。図4のクライアントサブシステム(406)及び(408)などの1つ以上のストリーミングクライアントサブシステムは、エンコーディングされたビデオデータ(404)のコピー(407)及び(409)を読み出すためにストリーミングサーバ(405)にアクセスすることができる。クライアントサブシステム(406)は、例えば、電子機器(430)において、ビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコーディングされたビデオデータの入来するコピー(407)をデコーディングし、ディスプレイ(412)(例えば、表示スクリーン)又は他のレンダリングデバイス(図示せず。)でレンダリングされ得るビデオピクチャの送出ストリーム(411)を生成する。いくつかのストリーミングシステムにおいて、エンコーディングされたビデオデータ(404)、(407)、及び(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコーディングされ得る。そのような規格の例には、ITU-T推奨H.265がある。例において、開発中のビデオコーディング規格は、Versatile Video Coding(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)内のもう1つのバッファメモリ(515)とが存在することができる。受信器(531)が十分なバンド幅及び可制御性の記憶/転送デバイスから、又はアイソシンクロナス(isosynchronous)ネットワークからデータを受信しているときに、バッファメモリ(515)は必要とされなくてもよく、あるいは、小さくてよい。インターネットなどのベストエフォートのパケットネットワークでの使用のために、バッファメモリ(515)は必要とされる場合があり、比較的に大きく、かつ、有利なことには、適応サイズであることができ、ビデオデコーダ(510)の外のオペレーティングシステム又は同様の要素(図示せず。)に少なくとも部分的に実装され得る。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含んでよい。それらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報と、潜在的に、電子機器(530)の必須部分でないが、図5に示されたように、電子機器(530)へ結合され得るレンダーデバイス(512)(例えば、表示スクリーン)などのレンダリングデバイスを制御するための情報とを含む。レンダリングデバイスのための制御情報は、Supplemental Enhancement Information(SEI)メッセージ又はVideo Usability Information(VUI)パラメータセットフラグメント(図示せず。)の形をとってよい。パーサ(520)は、受信されるコーディングされたビデオシーケンスをパース/エントロピデコーディングしてよい。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術又は標準規格に従うことができ、可変長コーディング、ハフマンコーディング、文脈依存による又はよらない算術コーディング、などを含む様々な原理に従うことができる。パーサ(520)は、コーディングされたビデオシーケンスから、ビデオデコーダにおけるピクセルのサブグループのうちの少なくとも1つについてのサブグループパラメータの組を、そのグループに対応する少なくとも1つのパラメータに基づいて抽出し得る。サブグループは、グループ・オブ・ピクチャ(Group of Picture,GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(Coding Unit,CU)、ブロック、変換ユニット(Transform Unit,TU)、予測ユニット(Prediction Unit,PU)、などを含むことができる。パーサ(520)はまた、コーディングされたビデオシーケンスから、変換係数、量子化パラメータ値、動きベクトル、などの情報も抽出し得る。
パーサ(520)は、シンボル(521)を生成するために、バッファメモリ(515)から受信されたビデオシーケンスに対してエントロピデコーディング/パーシング動作を実行してよい。
シンボル(521)の再構成は、コーディングされたビデオピクチャ又はその部分(例えば、インター及びイントラピクチャ、インター及びイントラブロック)のタイプ及び他の因子に応じて多数の異なるユニットを有することができる。どのユニットがどのように含まれるかは、コーディングされたビデオシーケンスからパーサ(520)によってパースされたサブグループ制御情報によって制御され得る。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報のフローは、明りょうさのために表されていない。
既に述べられた機能ブロックを超えて、ビデオデコーダ(510)は、概念的に、以下で説明される多数の機能ユニットに細分され得る。商業上の制約の下で動作する実際の実施では、それらのユニットの多くが互いに密に相互作用し、少なくとも部分的に互いに組み込まれ得る。しかし、開示されている対象を説明することを目的として、以下での機能ユニットへの概念的細分は適切である。
第1ユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、パーサ(520)からシンボル(521)として、量子化された変換係数とともに、どの変換を使用すべきか、ブロックサイズ、量子化係数、量子化スケーリングマトリクスなどを含む制御情報を受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)へ入力することができるサンプル値を含むブロックを出力することができる。
いくつかの場合に、スケーラ/逆変換器(551)の出力サンプルは、イントラコーディングされたブロック、すなわち、前に再構成されたピクチャからの予測情報を使用しておらず、現在ピクチャの前に再構成された部分からの予測情報を使用することができるブロック、に関係することができる。かような予測情報は、イントラピクチャ予測ユニット(552)によって供給され得る。いくつかの場合に、イントラピクチャ予測ユニット(552)は、現在ピクチャバッファ(558)からフェッチされた周囲の既に再構成された情報を用いて、再構成中のブロックと同じサイズ及び形状のブロックを生成する。現在ピクチャバッファ(558)は、例えば、部分的に再構成された現在ピクチャ及び/又は完全に再構成された現在ピクチャをバッファリングする。アグリゲータ(555)は、いくつかの場合に、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって供給される出力サンプル情報に加える。
他の場合では、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされた、そして潜在的に、動き補償されたブロックに関係することができる。かような場合に、動き補償予測ユニット(553)は、予測のために使用されるサンプルをフェッチするよう参照ピクチャメモリ(557)にアクセスすることができる。ブロックに関係するシンボル(521)に従って、フェッチされたサンプルを動き補償した後に、それらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によって、スケーラ/逆変換ユニット(551)の出力(この場合に、残差サンプル又は残差信号と呼ばれる。)に加えられ得る。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y及び参照ピクチャコンポーネントを有することができるシンボル(521)の形で動き補償予測ユニット(553)が利用することができる動きベクトルによって制御され得る。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされるサンプル値の補間や、動きベクトル予測メカニズムなどを含むこともできる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技術を受けることができる。ビデオ圧縮技術は、インループフィルタ技術を含むことができる。この技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる。)に含まれており、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能にされたパラメータによって制御されるが、コーディングされたピクチャ又はコーディングされたビデオシーケンスの(デコーディング順序において)前の部分のデコーディング中に得られたメタ情報にも応答することができ、更には、前に構成されたループフィルタ処理されたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、レンダーデバイス(512)へ出力され、更には、将来のインターピクチャ予測における使用のために参照ピクチャメモリ(557)に記憶され得るサンプルストリームであることができる。
特定のコーディングされたピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用され得る。例えば、現在ピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが(例えば、パーサ(520)によって)参照ピクチャとして識別されると、現在ピクチャバッファ(558)は、参照ピクチャメモリ(557)の部分になることができ、未使用の現在ピクチャバッファが、後続のコーディングされたピクチャの再構成を開始する前に再割り当てされ得る。
ビデオデコーダ(510)は、ITU-T推奨H.265などの標準規格における所定のビデオ圧縮技術に従ってデコーディング動作を実行してよい。コーディングされたビデオシーケンスは、そのコーディングされたビデオシーケンスが、ビデオ圧縮技術又は標準規格のシンタックス及びビデオ圧縮技術又は標準規格において文書化されているプロファイルの両方に従うという意味で、使用中のビデオ圧縮技術又は標準規格によって規定されたシンタックスに従い得る。具体的には、プロファイルは、ビデオ圧縮技術又は標準規格で利用可能な全てのツールからそのプロファイルの下での使用のために利用可能な唯一のツールとして特定のツールを選択することができる。また、コーディングされたビデオシーケンスの複雑さは、ビデオ圧縮技術又は標準規格のレベルによって定義された境界内にあることが、順守のために必要である。いくつかの場合に、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、メガサンプル/秒で測定される。)、最大参照ピクチャサイズ、などを制限する。レベルによって設定された制限は、いくつかの場合に、Hypothetical Reference Decoder(HRD)仕様と、コーディングされたビデオシーケンスにおいて通知されるHRDバッファ管理のためのメタデータとを通じて更に制限され得る。
実施形態において、受信器(531)は、エンコーディングされたビデオとともに、追加の(冗長な)データを受信してもよい。追加のデータは、コーディングされたビデオシーケンスの部分として含まれてもよい。追加のデータは、ビデオデコーダ(510)によって、データを適切にデコーディングするために及び/又は原ビデオデータをより正確に再構成するために使用されてよい。追加のデータは、例えば、時間、空間、又は信号対雑音比(SNR)エンハンスメントレイヤ、冗長スライス、冗長ピクチャ、前方誤り訂正符号、などの形をとることができる。
図6は、本開示の実施形態に従うビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、電子機器(620)に含まれている。電子機器(620)は、送信器(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用され得る。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるべきビデオ画像を捕捉し得るビデオソース(601)(図6の例では電子機器(560)の部分ではない。)からビデオサンプルを受信してよい。他の例では、ビデオソース(601)は、電子機器(620)の部分である。
ビデオソース(601)は、任意の適切なビットデプス(例えば、8ビット、10ビット、12ビットなど)、任意の色空間(例えば、BT.601 YCrCB、RGBなど)、及び任意の適切なサンプリング構造(例えば、YCrCb 4:2:0、YCrCb 4:4:4)であることができるデジタルビデオサンプルストリームの形で、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを供給してよい。メディアサービングシステムでは、ビデオソース(601)は、前に準備されたビデオを記憶している記憶デバイスであってよい。ビデオ会議システムでは、ビデオソース(601)は、ローカル画像情報をビデオシーケンスとして捕捉するカメラであってよい。ビデオデータは、順に見られる場合に動きを授ける複数の個別ピクチャとして供給されてもよい。ピクチャ自体は、ピクセルの空間アレイとして編成されてよく、各ピクセルは、使用中のサンプリング構造、色空間、などに依存する1つ以上のサンプルを有することができる。当業者であれば、ピクセルとサンプルとの間の関係を容易に理解することができる。本明細書は、以下、サンプルに焦点を当てる。
実施形態に従って、ビデオエンコーダ(603)は、実時間において、又は用途によって必要とされる任意の他の時間制約の下で、ソースビデオシーケンスのピクチャを、コーディングされたビデオシーケンス(643)へとコーディング及び圧縮してよい。適切なコーディング速度を強いることは、コントローラ(650)の一機能である。いくつかの実施形態において、コントローラ(650)は、以下で記載されるような他の機能ユニットを制御し、他の機能ユニットへ機能的に結合される。結合は明りょうさのために表されていない。コントローラ(650)によってセットされるパラメータには、レート制御に関連したパラメータ(ピクチャスキップ、量子化器、レートひずみ最適化技術のラムダ値、など)、ピクチャサイズ、グループ・オブ・ピクチャ(GOP)レイアウト、最大動きベクトル探索範囲、などが含まれ得る。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関係する他の適切な機能を有するよう構成され得る。
いくつかの実施形態において、ビデオエンコーダ(603)は、コーディングループで動作するよう構成される。過度に単純化された記載として、例において、コーディングループは、ソースコーダ(630)(例えば、コーディングされるべき入力ピクチャと、参照ピクチャとに基づいて、シンボルストリームなどのシンボルを生成することに関与する。)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(シンボルとコーディングされたビデオストリームとの間の如何なる圧縮も、開示されている対象で考えられているビデオ圧縮技術において可逆であるということで)(遠隔の)デコーダも生成することになるのと同様の方法でサンプルデータを生成するようにシンボルを再構成する。その再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)へ入力される。シンボルストリームのデコーディングは、デコーダの場所(ローカル又は遠隔)に依存しないビットパーフェクト(bit-exact)な結果をもたらすので、参照ピクチャメモリ(634)内のコンテンツも、ローカルのエンコーダと遠隔のエンコーダとの間でビットパーフェクトである。すなわち、エンコーダの予測部分は、デコーダがデコーディング中に予測を使用するときに“見る”ことになるのとまさに同じサンプル値を参照ピクチャサンプルとして“見る”。参照ピクチャのシンクロニシティ(及び、例えば、チャネルエラーのために、シンクロニシティが維持され得ない場合に、結果として生じるドリフト)のこの基本原理は、いくつかの関連技術でも使用されている。
“ローカル”のデコーダ(633)の動作は、図5とともに先に詳細に既に説明されている、ビデオデコーダ(510)などの“遠隔”のデコーダと同じであることができる。一時的に図5も参照すると、しかしながら、シンボルが利用可能であり、エントロピコーダ(645)及びパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングが可逆であることができるということで、バッファメモリ(515)及びパーサ(520)を含むビデオデコーダ(510)のエントロピデコーディング部分は、ローカルのデコーダ(633)において完全には実装されなくてもよい。
この時点で行われ得る観察は、デコーダに存在するパーシング/エントロピデコーディングを除く如何なるデコーダ技術も、対応するエンコーダにおいて、実質的に同じ機能形態で、必然的に存在する必要があるということである。この理由により、開示されている対象は、デコーダの動作に焦点を当てる。エンコーダ技術の説明は、それらが、包括的に記載されるデコーダ技術の逆であるということで、省略され得る。特定の範囲においてのみ、より詳細な説明が必要とされ、以下で与えられている。
動作中、いくつかの例では、ソースコーダ(630)は、動き補償された予測コーディングを実行してよい。これは、「参照ピクチャ」として指定されたビデオシーケンスからの1つ以上の前にコーディングされたピクチャを参照して予測的に入力ピクチャをコーディングする。このようにして、コーディングエンジン(632)は、入力ピクチャに対する予測参照として選択され得る参照ピクチャのピクセルブロックと入力ピクチャのピクセルブロックとの間の差をコーディングする。
ローカルのビデオデコーダ(633)は、ソースコーダ(630)によって生成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコーディングしてよい。コーディングエンジン(632)の動作は、有利なことに、不可逆プロセスであってよい。コーディングされたビデオデータがビデオデコーダ(図6には図示せず。)でデコーディングされ得るとき、再構成されたビデオシーケンスは、通常は、いくらかのエラーを伴ったソースビデオシーケンスの複製であり得る。ローカルのビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得るデコーディングプロセスを再現し、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に格納されるようにしてよい。このように、ビデオエンコーダ(603)は、(伝送エラーなしで)遠端のビデオデコーダによって取得されることになる再構成された参照ピクチャと共通の内容を有している再構成された参照ピクチャのコピーをローカルで記憶し得る。
予測器(635)は、コーディングエンジン(632)のための予測探索を実行してよい。すなわち、新しいピクチャがコーディングされるために、予測器(635)は、その新しいピクチャのための適切な予測基準となり得る参照ピクチャ動きベクトル、ブロック形状、などの特定のメタデータ又は(候補参照ピクセルブロックとしての)サンプルデータを参照ピクチャメモリ(634)から探してよい。予測器(635)は、適切な予測基準を見つけるためにサンプルブロック・バイ・ピクセルブロックベース(sample block-by-pixel block basis)で動作してよい。いくつかの場合に、予測器(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶されている複数の参照ピクチャから引き出された予測基準を有してよい。
コントローラ(650)は、例えば、ビデオデータをエンコーディングするために使用されるパラメータ及びサブグループパラメータの設定を含め、ソースコーダ(630)のコーディング動作を管理してよい。
上記の全ての機能ユニットの出力は、エントロピコーダ(645)においてエントロピコーディングを受けてよい。エントロピコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することによって、様々な機能ユニットによって生成されたシンボルを、コーディングされたビデオシーケンスへと変換する。
送信器(640)は、エントロピコーダ(645)によって生成されたコーディングされたビデオシーケンスを、通信チャネル(660)を介した伝送のために準備するようにバッファリングしてよい。通信チャネル(660)は、エンコーディングされたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであってよい。送信器(640)は、ビデオコーダ(603)からのコーディングされたビデオデータを、送信されるべき他のデータ、例えば、コーディングされたオーディオデータ及び/又は補助的なデータストリーム(ソースは図示せず)とマージしてもよい。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理してよい。コーディング中、コントローラ(650)は、各々のピクチャに適用され得るコーディング技術に影響を及ぼす可能性がある特定のコーディングされたピクチャタイプを夫々のコーディングされたピクチャに割り当ててよい。例えば、ピクチャはしばしば、次のピクチャタイプのうちの1つとして割り当てられてよい。
イントラピクチャ(Intra Picture)(Iピクチャ)は、予測のソースとしてシーケンス内の如何なる他のピクチャも使用せずにコーディング及びデコーディングされ得るピクチャであってよい。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(Independent Decoder Refresh,IDR)ピクチャを含む種々のタイプのイントラピクチャを許容する。当業者であれば、Iピクチャのそのような変形並びにそれらの各々の応用及び特徴を知っている。
予測ピクチャ(Predictive Picture)(Pピクチャ)は、各ブロックのサンプル値を予測するために多くても1つの動きベクトル及び参照インデックスを用いてイントラ予測又はインター予測によりコーディング及びデコーディングされ得るピクチャであってよい。
双方向予測ピクチャ(Bi-directionally Predictive Picture)(Bピクチャ)は、各ブロックのサンプル値を予測するために多くても2つの動きベクトル及び参照インデックスを用いてイントラ予測又はインター予測によりコーディング及びデコーディングされ得るピクチャであってよい。同様に、多重予測ピクチャ(multiple-predictive picture(s))は、単一のブロックの再構成のために2つよりも多い参照ピクチャ及び関連するメタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、夫々、4×4、8×8、4×8、又は16×16のサンプルのブロック)に空間的に細分され、ブロックごとにコーディングされてよい。ブロックは、ブロックの各々のピクチャに適用されているコーディング割り当てによって決定される他の(既にコーディングされた)ブロックを参照して予測的にコーディングされてよい。例えば、Iピクチャのブロックは、非予測的にコーディングされてよく、あるいは、それらは、同じピクチャの既にコーディングされたブロックを参照して予測的にコーディングされてもよい(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは、1つの前にコーディングされた参照ピクチャを参照して空間予測により又は時間予測により、予測的にコーディングされてよい。Bピクチャのブロックは、1つ又は2つの前にコーディングされた参照ピクチャを参照して空間予測により又は時間予測により、予測的にコーディングされてよい。
ビデオエンコーダ(603)は、ITU-T推奨H.265のような所定のビデオコーディング技術又は標準規格に従ってコーディング動作を実行してよい。その動作中に、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間及び空間冗長性を利用する予測コーディング動作を含む様々な圧縮動作を実行してよい。従って、コーディングされたビデオデータは、使用されているビデオコーディング技術又は標準規格によって定められているシンタックスに従い得る。
実施形態において、送信器(640)は、エンコーディングされたビデオとともに追加のデータを送信してもよい。ソースコーダ(630)は、コーディングされたビデオシーケンスの部分としてそのようなデータを含めてよい。追加のデータは、時間/空間/SNRエンハンスメントレイヤ、冗長ピクチャ及びスライスなどの他の形式の冗長データ、SEIメッセージ又はVUIパラメータセットフラグメント、などを有してよい。
ビデオは、時間シーケンスにおいて複数のソースピクチャ(ビデオピクチャ)として捕捉されてよい。イントラピクチャ予測(しばしばイントラ予測と省略される。)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間又は他の)相関を利用する。例において、現在ピクチャ(current picture)と呼ばれる、エンコーディング/デコーディング中の特定のピクチャは、ブロックにパーティション化される。現在ピクチャ内のあるブロックが、ビデオの前にコーディングされて依然としてバッファリングされている参照ピクチャ内の参照ブロックと類似している場合に、現在ピクチャ内のそのブロックは、動きベクトル(motion vector)と呼ばれるベクトルによってコーディングされ得る。動きベクトルは、参照ピクチャ内の参照ブロックを指し示し、複数の参照ピクチャが使用されている場合には、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態において、双予測技術がインターピクチャ予測において使用され得る。双予測技術に従って、2つの参照ピクチャ、例えば、ビデオ内で現在ピクチャに対してデコーディング順序において両方とも先行する(しかし、表示順序では、夫々、過去及び将来にあってよい。)第1参照ピクチャ及び第2参照ピクチャが、使用される。現在ピクチャ内のあるブロックは、第1参照ピクチャ内の第1参照ブロックを指し示す第1動きベクトルと、第2参照ピクチャ内の第2参照ブロックを指し示す第2動きベクトルとによって、コーディングされ得る。そのブロックは、第1参照ブロック及び第2参照ブロックの組み合わせによって予測可能である。
更に、マージモード技術が、コーディング効率を改善するためにインターピクチャ予測において使用され得る。
本開示のいくつかの実施形態に従って、インターピクチャ予測及びイントラピクチャ予測などの予測は、ブロックのユニットにおいて実行される。例えば、HEVC標準規格に従って、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(Coding Tree Unit,CTU)にパーティション化され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、又は16×16ピクセルといった同じサイズを有する。一般に、CTUは、1つのルーマCTB及び2つのクロマCTBである3つのコーディングツリーブロック(Coding Tree Block,CTB)を含む。各CTUは、1つ又は複数のコーディングユニット(Coding Unit,CU)に再帰的に四分木分割され得る。例えば、64×64ピクセルのCTUは、64×64ピクセルの1つのCU、又は32×32ピクセルの4つのCU、又は16×16ピクセルの16個のCUに分割可能である。例において、各CUは、インター予測タイプ又はイントラ予測タイプなどの、CUに対する予測タイプを決定するよう解析される。CUは、時間及び/又は空間予測可能性に応じて1つ以上の予測ユニット(Prediction Unit,PU)に分割される。一般に、各PUは、1つのルーマ予測ブロック(Prediction Block,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)は、残差計算部(723)による使用のためにイントラモード結果を選択するようスイッチ(726)を制御し、そして、イントラ予測情報を選択し、イントラ予測情報をビットストリームに含めるようエントロピエンコーダ(725)を制御する。モードがインターモードである場合には、汎用コントローラ(721)は、残差計算部(723)による使用のためにインター予測結果を選択するようスイッチ(726)を制御し、そして、インター予測情報を選択し、インター予測情報をビットストリームに含めるようエントロピエンコーダ(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)は、コーディングされたピクチャから、シンタックス要素を表す特定のシンボルを再構成するよう構成され得、それらから、コーディングされたピクチャは構成されている。かようなシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラモード、又はマージサブモード若しくは他のサブモードにおけるインターモード若しくは双予測モード)、イントラデコーダ(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)及び(703)並びにビデオデコーダ(410)、(510)及び(810)は、ソフトウェア命令を実行する1つ以上のプロセッサを用いて実装可能である。
2次変換セットの効率的な適用のような、2次変換の効率的な適用に関係があるビデオコーディング技術が、開示される。2次変換の効率的な適用は、如何なる適切なビデオコーディングフォーマット又は標準規格でも適用可能であることができる。ビデオコーディングフォーマットは、AOMedia Video 1(AV1)又はAV1を超える次世代のAOMedia Videoフォーマットのような、インターネット上のビデオ伝送のために設計されたオープンビデオコーディングフォーマットを含むことができる。ビデオコーディング標準規格は、高効率ビデオコーディング(High Efficiency Video Coding,HEVC)標準規格、HEVCを超える次世代のビデオコーディング(例えば、バーサタイルビデオコーディング(Versatile Video Coding,VVC))などを含むことができる。
様々なイントラ予測モードがイントラ予測において、例えば、AV1、VVC、及び/又は他において使用され得る。実施形態において、AV1でのように、指向性イントラ予測が使用される。例において、オープンビデオコーディングフォーマットVP9でのように、45°から207°までの8つの各に対応する8つの指向性モードが使用される。指向性テクスチャでより多くの空間冗長性を利用するために、例えば、AV1では、指向性モード(指向性イントラモード、指向性イントラ予測モード、角度モードとも呼ばれる。)は、図9に示されるように、より細かい粒度による角度セットに拡張され得る。
図9は、開示の実施形態に従う、コーディングブロック(CB)(910)に対するノミナル(nominal)モードの例を示す。特定の角度(ノミナル角度と呼ばれる。)は、ノミナルモードに対応することができる。例において、8つのノミナル角度(又はノミナルイントラ角度)(901)~(908)は、8つのノミナルモード(例えば、V_RED、H_PRED、D45_PRED、D135_PRED、D113_PRED、D157_PRED、D203_PRED、及びD67_PRED)に夫々対応する。8つのノミナル角度(901)~(908)及び8つのノミナルモードは、V_RED、H_PRED、D45_PRED、D135_PRED、D113_PRED、D157_PRED、D203_PRED、及びD67_PREDと夫々呼ばれ得る。更に、各ノミナル角度は、複数のより細かい角度に対応することができるので、56個の角度(若しくは予測角度)又は56個の指向性モード(若しくは角度モード、指向性イントラ予測モード)が、例えば、AV1では使用され得る。各予測角度は、ノミナル角度及び角度オフセット(又は角度デルタ)によって示され得る。角度オフセットは、オフセット整数I(例えば、-3、-2、-1、0、1、2、又は3)にステップサイズ(例えば、3°)を乗じることによって求められ得る。例において、予測角度は、ノミナル角度と角度オフセットとの和に等しい。例において、AV1でのように、ノミナルモード(例えば、8つのノミナルモード(901)~(908))は、特定の非角度平滑モード(non-angular smooth modes)(例えば、後述されるDCモード、PAETHモード、SMOOTHモード、垂直SMOOTHモード、及び水平SMOOTHモードのような、5つの非角度平滑モード)とともに、通知され得る。その後に、現在の予測モードが指向性モード(又は角度モード)である場合には、ノミナル角度に対応する角度オフセット(例えば、オフセット整数I)を示すために、インデックスが更に通知され得る。例において、一般的な方法により指向性予測モードを実装するために、AV1で使用されているもののような56個の指向性モードは、各ピクセルを参照サブピクセル位置に投影し、参照ピクセルを2-タップ双線形フィルタによって補間することができる統一された方向予測子で実装される。
非指向性平滑イントラ予測子(非指向性平滑イントラ予測モード、非指向性平滑モード、非角度平滑モードとも呼ばれる。)は、CBのようなブロックのためのイントラ予測で使用され得る。いくつかの例において(例えば、AV1において)、5つの非指向性平滑イントラ予測モードは、DCモード又はDC予測子(例えば、DC)、PAETHモード又はPAETH予測子(例えば、PAETH)、SMOOTHモード又はSMOOTH予測子(例えば、SMOOTH)、垂直SMOOTHモード(SMOOTH_Vモード、SMOOTH_V予測子、SMOOTH_Vと呼ばれる。)、及び水平SMOOTHモード(SMOOTH_Hモード、SMOOTH_H予測子、又はSMOOTH_Hと呼ばれる。)を含む。
図10は、開示の実施形態に従う、非指向性平滑イントラ予測モード(例えば、DCモード、PAETHモード、SMOOTHモード、SMOOTH_Vモード、及びSMOOTH_Hモード)の例を示す。DC予測子に基づきCB(1000)内のサンプル(1001)を予測するために、左隣接サンプル(1012)の第1値と、上隣接サンプル(又は上部の隣接サンプル)(1011)の第2値との平均が、予測子として使用され得る。
PAETH予測子に基づきサンプル(1001)を予測するために、左隣接サンプル(1012)の第1値、上隣接サンプル(1011)の第2値、及び左上隣接サンプル(1013)の第3値が取得され得る。次いで、式1を用いて、参照値が求められる:
参照値=第1値+第2値-第3値 (式1)
参照値に最も近い、第1値、第2値、及び第3値のうちの1つが、サンプル(1001)のための予測子としてセットされ得る。
SMOOTH_Vモード、SMOOTH_Hモード、及びSMOOTHモードは、垂直方向、水平方向、及び垂直方向と水平方向との平均での二次補間(quadratic interpolation)を夫々用いてCB(1000)を予測することができる。SMOOTH予測子に基づきサンプル(1001)を予測するために、第1値と、第2値と、右サンプル(1014)の値と、下サンプル(1016)の値との平均(例えば、加重結合)が、使用され得る。様々な例において、右サンプル(1014)及び下サンプル(1016)は、再構成されておらず、よって、右上隣接サンプル(1015)の値及び左下隣接サンプル(1017)の値が、右サンプル(1014)及び下サンプル(1016)の値を夫々置換することができる。従って、第1値と、第2値と、右上隣接サンプル(1015)の値と、左下隣接サンプル(1017)の値との平均(例えば、加重結合)が、SMOOTH予測子として使用され得る。SMOOTH_V予測子に基づきサンプル(1001)を予測するために、上隣接サンプル(1011)の第2値と、左下隣接サンプル(1017)の値との平均(例えば、加重平均)が、使用され得る。SMOOTH_H予測子に基づきサンプル(1001)を予測するために、左隣接サンプル(1012)の第1値と、右上隣接サンプル(1015)の値との平均(例えば、加重結合)が、使用され得る。
図11は、開示の実施形態に従う、再帰フィルタリングに基づいたイントラ予測子(フィルタイントラモード、又は再帰フィルタリングモードとも呼ばれる。)の例を示す。エッジ上の参照との減衰する空間相関をキャプチャするために、フィルタイントラモードが、CB(1100)のようなブロックのために使用され得る。例において、CB(1100)はルーマブロックである。ルーマブロック(1100)は、複数のパッチ(例えば、8つの4×2パッチB0~B7)に分割され得る。パッチB0~B7の夫々は、複数の隣接するサンプルを有する可能性がある。例えば、パッチB0は、4つの上隣接サンプルR01~R04、2つの左隣接サンプルR05~R06、及び左上隣接サンプルR00を含む7つの隣接サンプル(又は7つのネイバー)R00~R06を有する。同様に、パッチB7は、4つの上隣接サンプルR71~R74、2つの左隣接サンプルR75~R76、及び左上隣接サンプルR70を含む7つの隣接サンプルR70~R76を有する。
いくつかの例において、複数(例えば、5つ)のフィルタイントラモード(又は複数の再帰フィルタリングモード)が、例えば、AV1のために、予め定義される。各フィルタイントラモードは、対応する4×2パッチ(例えば、B0)内のサンプル(又はピクセル)と、4×2パッチB0に隣接している7つのネイバー(例えば、R00~R06)との間の相関を反映する8つの7-タップフィルタの組によって、表され得る。7-タップフィルタの重み係数は位置依存であることができる。パッチB0~B7の夫々について、7つのネイバー(例えば、B0の場合はR00~R06、B7の場合はR70~R76)が、対応するパッチ内のサンプルを予測するために使用され得る。例において、ネイバーR00~R06は、パッチB0内のサンプルを予測するために使用される。例において、ネイバーR70~R76は、パッチB7内のサンプルを予測するために使用される。パッチB0のような、CB(1100)内の特定のパッチについて、7つ全てのネイバー(例えば、R00~R06)は既に再構成されている。CB(1100)内の他のパッチについては、7つのネイバーのうちの少なくとも1つが再構成されておらず、よって、相隣の予測された値(又は相隣の予測サンプル)が参照として使用され得る。例えば、パッチB7の7つのネイバーR70~R76は再構成されておらず、故に、相隣の予測サンプルが使用され得る。
クロマサンプルは、ルーマサンプルから予測され得る。実施形態において、クロマ・フロム・ルーマ(Chroma from Luma)モード(例えば、CfLモード、CfL予測子)は、同時に起こる再構成されたルーマサンプル(又はピクセル)の線形関数としてクロマサンプル(又はピクセル)をモデル化することができる。例えば、CfL予測は、以下のように式2を用いて表され得る:
CfL(α)=αLA+D (式2)
ここで、LAは、ルーマ成分のAC寄与を表し、αは、線形モデルのスケーリングパラメータを表し、Dは、クロマ成分のDC寄与を表す。例において、再構成されたルーマピクセルは、クロマ分解能に基づきサブサンプリングされ、平均値は、AC寄与(例えば、LA)を形成するよう減じられる。AC寄与からクロマAC成分を近似するために、デコーダにスケーリングパラメータαを計算することを求める代わりに、いくつかの例では、AV1でのように、CfLモードは、原クロマピクセルに基づきスケーリングパラメータαを決定し、スケーリングパラメータαをビットストリームでシグナリングし、そのようにしてデコーダ複雑性を低減しかつより正確な予測をもたらす。クロマ成分のDC寄与は、イントラDCモードを用いて計算され得る。イントラDCモードは、ほとんどのクロマコンテンツにとって十分であり、成熟した高速な実装を有することができる。
マルチラインイントラ予測は、イントラ予測のために、より多くの参照ラインを使用することができる。参照ラインは、ピクチャ内の複数のサンプルを含むことができる。例において、参照ラインは、行におけるサンプル及び列におけるサンプルを含む。例において、エンコーダは、イントラ予測子を生成するために使用される参照ラインを決定し通知することができる。参照ラインを示すインデックス(参照ラインインデックスとも呼ばれる。)は、イントラ予測モードの前にシグナリングされ得る。例において、非ゼロの参照ラインインデックスがシグナリングされる場合に、MPMのみが許可される。図12は、CB(1210)のための4つの参照ラインの例を示す。図12を参照すると、参照ラインは、最大6つのセグメント、例えば、セグメントA~Fと、左上参照サンプルとを含むことができる。例えば、参照ライン0は、セグメントB及びEと、左上参照サンプルとを含む。例えば、参照ライン3は、セグメントA~Fと、左上参照サンプルとを含む。セグメントA及びFは、夫々、セグメントB及びEからの最も近いサンプルでパディングされ得る。いくつかの例において、HEVCでのように、ただ1つの参照ライン(例えば、CB(120)に隣接している参照ライン0)がイントラ予測のために使用される。いくつかの例において、VVCでのように、複数の参照ライン(例えば、参照ライン0、1及び3)がイントラ予測のために使用される。
一般に、ブロックは、図9~12を参照して上述されたもののような、様々なイントラ予測モードのうちの1つ又は適切な組み合わせを用いて予測され得る。
変換ブロックパーティション(変換パーティション、変換ユニットパーティションとも呼ばれる。)は、ブロックを複数の変換ユニットにパーティション化するよう実装され得る。図13~14は、開示の実施形態に従う例示的な変換ブロックパーティションを示す。いくつかの例において、AV1でのように、イントラコーディングされたブロック及びインターコーディングされたブロックは両方とも、最大複数個のレベル(例えば、2レベル)のパーティショニングデプスで複数の変換ユニットに更にパーティション化され得る。
イントラコーディングされたブロックについて、変換パーティションは、イントラコーディングされたブロックに関連した変換ブロックが同じサイズを有するように実行可能であり、変換ブロックは、ラスタスキャン順序でコーディングされ得る。図13を参照すると、変換ブロックパーティションがブロック(例えば、イントラコーディングされたブロック)(1300)に対して実行され得る。ブロック(1300)は、4つの変換ユニット(例えば、TB)(1301)~(1304)のような、変換ユニットにパーティション化され得、パーティショニングデプスは1である。4つの変換ユニット(例えば、TB)(1301)~(1304)は同じサイズを有することができ、変換ユニット(1301)から変換ユニット(1304)までラスタスキャン順序(1310)でコーディングされ得る。例において、4つの変換ユニット(TB)(1301)~(1304)は、例えば、異なる変換カーネルを用いて、別々に変換される。いくつかの例において、4つの変換ユニット(例えば、TB)(1301)~(1304)の夫々は更に、4つの変換ユニットにパーティション化される。例えば、変換ユニット(1301)は、変換ユニット(1321)、(1322)、(1325)及び(1326)にパーティション化され、変換ユニット(1302)は、変換ユニット(1323)、(1324)、(1327)及び(1328)にパーティション化され、変換ユニット(1303)は、変換ユニット(1329)、(1330)、(1333)及び(1334)にパーティション化され、変換ユニット(1304)は変換ユニット(1331)、(1332)、(1335)及び(1336)にパーティション化される。パーティショニングデプスは2である。変換ユニット(例えば、TB)(1321)~(1336)は、同じサイズを有することができ、変換ユニット(1321)から変換ユニット(1336)までラスタスキャン順序(1320)でコーディングされ得る。
インターコーディングされたブロックについて、変換パーティションは、最大複数個のレベル(例えば、2レベル)のパーティショニングデプスで再帰的にパーティション化され得る。変換パーティションは、任意の適切な変換ユニットサイズ及び形状をサポートすることができる。変換ユニット形状は、正方形と、任意の適切なアスペクト比を有する非正方形(例えば、非正方の長方形)とを含むことができる。変換ユニットサイズは、4×4から64×64の範囲に及ぶことができる。変換ユニットのアスペクト比(例えば、変換ユニットの高さに対する変換ユニットの幅の比)は1:1(正方)、1:2、2:1、1:4、4:1、などであることができる。変換パーティションは、4×4から64×64の範囲に及ぶ1:1(正方)、1:2、2:1、1:4、及び/又は4:1変換ユニットサイズをサポートすることができる。図14を参照すると、変換ブロックパーティションは、ブロック(例えば、インターコーディングされたブロック)に対して再帰的に実行され得る。例えば、ブロック(1400)は、変換ユニット(1401)~(1407)にパーティション化される。変換ユニット(例えば、TB)(1401)~(1407)は、異なるサイズを有することができ、変換ユニット(1401)から変換ユニット(1407)までラスタスキャン順序(1410)でコーディングされ得る。例において、変換ユニット(1401)、(1406)及び(1407)のパーティショニングデプスは1であり、変換ユニット(1402)~(1405)のパーティショニングデプスは2である。
例において、コーディングブロックが64×64よりも小さいか又はそれと等しい場合に、変換パーティションは、ルーマ成分にのみ適用され得る。例において、コーディングブロックはCTBを参照する。
コーディングブロック幅W又はコーディングブロック高さHが64よりも大きい場合に、コーディングブロックは、暗黙的に、複数のTBに分けられ得る。このとき、コーディングブロックはルーマコーディングブロックである。複数のTBのうちの1つの幅は、W及び64のうちの最小であることができ、複数のTBのうちの1つの高さは、H及び64のうちの最小であることができる。
コーディングブロック幅W又はコーディングブロック高さHが64よりも大きい場合に、コーディングブロックは、暗黙的に、複数のTBに分けられ得る。このとき、コーディングブロックはクロマコーディングブロックである。複数のTBのうちの1つの幅は、W及び32のうちの最小であることができ、複数のTBのうちの1つの高さは、H及び32のうちの最小であることができる。
AOMedia Video 1(AV1)で使用されるもののような、1次変換(primary transforms)の実施形態が以下で記載される。開示において記載されているような、拡張されたコーディングブロックパーティションをサポートするために、複数の変換サイズ(例えば、次元ごとに4-ポイントから64-ポイントに及ぶ。)及び変換形状(例えば、正方形、2:1、1:2、4:1又は1:4の高さに対する幅の比を有する長方形)が、AV1でのように、使用され得る。
2D変換プロセスは、コーディングされた残差ブロックの次元ごとに異なる1D変換を含むことができるハイブリッド変換カーネルを使用することができる。1次1D変換は、(a)4-ポイント、8-ポイント、16-ポイント、32-ポイント、64-ポイントDCT-2、(b)4-ポイント、8-ポイント、16-ポイント非対称(Asymmetric)DST(ADST)(例えば、DST-4、DST-7)及び対応するフリップバージョン(例えば、ADSTのフリップバージョン、つまり、FlipADSTは、逆の順序でADSTを適用することができる。)、及び/又は(c)4-ポイント、8-ポイント、16-ポイント、32-ポイント恒等変換(identity transform)(IDTX)を含むことができる。図15は、開示の実施形態に従う1次変換基底関数(primary transform basis functions)の例を示す。図15の例における1次変換基底関数は、N-ポイント入力を有するDCT-2及び非対称DST(DST-4及びDST-7)の基底関数を含む。図15に示される1次変換基底関数は、AV1で使用され得る。
ハイブリッド変換カーネルの利用可能性は、変換ブロックサイズ及び予測モードに依存することができる。図16Aは、変換ブロックサイズ(例えば、3列目に示されているサイズ)及び予測モード(例えば、3列目に示されているイントラ予測及びインター予測)に基づいた様々な変換カーネル(例えば、1列目に示されており、2列目で説明されている変換タイプ)の利用可能性の例示的な依存性を示す。例示的なハイブリッド変換カーネルと、予測モード及び変換ブロックサイズに基づいた利用可能性とは、AV1で使用され得る。図16を参照すると、「→」及び「↓」の符号は、夫々、水平次元(水平法とも呼ばれる。)及び垂直次元(垂直方向とも呼ばれる。)を表す。チェックマーク及び「x」の符号は、対応するブロックサイズ及び予測モードに対する変換カーネルの利用可能性を表す。例えば、チェックマークは、変換カーネルが利用可能であることを表し、シンボル「x」の符号は、変換カーネルが利用不可能であることを表す。
例において、変換タイプ(1610)は、図16Aの1列目に示されているように、ADST_DCTによって表される。変換タイプ(1610)は、図16Aの2列目に示されるように、垂直方向でのADST及び水平方向でのDSTを含む。図16Aの3列目によれば、変換タイプ(1610)は、ブロックサイズが16×16(例えば、16×16サンプル、16×16ルーマサンプル)よりも小さいか又はそれと等しい場合に、イントラ予測及びインター予測のために利用可能である。
例において、変換タイプ(1620)は、図16Aの1列目に示されているように、V_ADSTによって表される。変換タイプ(1620)は、図16Aの2列目に示されているように、垂直方向でのADST及び水平方向でのIDTX(すなわち、単位行列)を含む。よって、変換タイプ(1620)(例えば、V_ADST)は、垂直方向で実行され、水平方向では実行されない。図16Aの3列目によれば、変換タイプ(1620)は、ブロックサイズにかかわらずイントラ予測のために利用可能でない。変換タイプ(16220)は、ブロックサイズが16×16(例えば、16×16サンプル、16×16ルーマサンプル)よりも小さい場合に、インター予測のために利用可能である。
例において、図16Aは、ルーマ成分に適用可能である。クロマ成分については、変換タイプ(又は変換カーネル)選択は、暗黙的に実行され得る。例において、イントラ予測残差については、変換タイプは、図16Bに示されるように、イントラ予測モードに従って選択され得る。例において、図16Bに示される変換タイプ選択は、クロマ成分に適用可能である。インター予測残差については、変換タイプは、同一位置の(co-located)ルーマブロックの変換タイプ選択に従って選択され得る。従って、例において、クロマ成分に対する変換タイプは、ビットストリームで通知されない。
折れ線グラフ変換(Line Graph Transforms,LGT)は、例えば、AOMedia Video 2(AV2)で、1次変換のような変換において使用され得る。8ビット/10ビット変換コアがAV2で使用され得る。例において、LGTは、以下で記載されるように、様々なDCT、離散サイン変換(DST)を含む。LGTは、32-ポイント及び64-ポイント1次元(1D)DSTを含むことができる。
グラフは、関心のあるオブジェクト間のアフィニティ関係をモデル化するために使用され得る頂点及びエッジの組を含む一般的な数学構造である。重みの組がエッジに、及び任意に、頂点に割り当てられている重み付きグラフは、信号/データのロバストなモデリングのためのスパース表現を提供することができる。LGTは、多様なブロック統計のためのより良い適応をもたらすことでコーディング効率を改善することができる。分離可能なLGTは、データから折れ線グラフを学習して、ブロックの残差信号の基礎となる行及び列ごとの統計をモデル化することで、設計及び最適化され得、関連する一般化されたグラフラプラシアン(Generalized Graph Laplacian,GGL)行列は、LGTを導出するために使用され得る。
図16Cは、開示の実施形態に従う、自己ループ重み(例えば、vc1、vc2)及びエッジ重みwcによって特徴付けられた一般的なLGTの例を示す。重み付きグラフG(W,V)を考えると、GGL行列は、以下のように定義され得る:
Lc=D-W+V (式3)
ここで、Wは、非負のエッジ重みwcを含む隣接行列であることができ、Dは、対角次数行列であることができ、Vは、自己ループ重みvc1及びvc2を表す対角行列であることができる。図16Dは、行列Lcの例を示す。
LGTは、以下のように、GGL行列Lcの固有値分解によって導出され得る:
Lc=UΦUT (式4)
ここで、直交行列Uの列は、LGTの基底ベクトルであることができ、Φは、対角固有値行列であることができる。
様々な例において、特定のDCT及びDST(例えば、DCT-2、DCT-8、及びDST-7)は、特定の形式のGGLから得られたLGTの組のサブセットである。DCT-2は、vc1を0にセットすること(例えば、vc1=0)によって導出され得る。DST-7は、vc1をwcにセットすること(例えば、vc1=wc)によって導出され得る。DCT-8は、vc2をwcにセットすること(例えば、vc2=wc)によって導出され得る。DST-4は、vc1を2wcにセットすること(例えば、vc1=2wc)によって導出され得る。DCT-4は、vc2を2wcにセットすること(例えば、vc2=2wc)によって導出され得る。
いくつかの例において、AV2でのように、LGTは行列乗算として実装され得る。4-ポイント(4p)LGTコアは、Lcにおいてvc1を2wcにセットすることによって導出され得るので、4p LGTコアはDST-4である。8-ポイント(8p)LGTコアは、Lcにおいてvc1を1.5wcにセットすることによって導出され得る。例において、16-ポイント(16p)LGTコア、32-ポイント(32p)LGTコア、又は64-ポイント(64p)LGTコアのようなLGTコアは、vc1をwcであるようかつvc2を0であるようセットすることによって導出され得、LGTコアはDST-7wになることができる。
1次変換、2次変換のような変換は、CBのようなブロックに適用され得る。例において、変換は、1次変換と2次変換との組み合わせを含む。変換は、非分離可能変換、分離可能変換、又は非分離可能変換と分離可能変換との組み合わせを含む。
2次変換は、VVCでのように、実行される。いくつかの例において、VVCでのように、低周波数非分離可能変換(Low-Frequency Non-Separable Transform,LFNST)は、削減2次変換(Reduced Secondary Transform,RST)としても知られており、1次変換係数を更に非相関にするために、図17及び図18で示されるように、エンコーダ側では順方向1次変換と量子化との間で、デコーダ側では逆量子化と逆方向1次変換との間で適用され得る。
LFNSTで使用され得る非分離可能変換の適用は、一例として4×4入力ブロック(又は入力行列)を用いて以下のように記載される(式5に示される。)。4×4非分離可能変換の適用(例えば、LFNST)を適用するために、4×4入力ブロックXは、式5及び式6で示されるように、
(外1)
によって表され得る:
非分離可能変換は、次のように計算され得る:
ここで、
(外2)
は、変換係数ベクトルを示し、Tは、16×16変換行列である。
(外3)
は、その後に、4×4入力ブロックの走査順序(例えば、水平走査順序、垂直走査順序、ジグザグ走査順序、又は対角走査順序)を用いて、4×4出力ブロック(又は出力行列、係数ブロック)に再編成され得る。より小さいインデックスを有する変換係数は、4×4係数ブロックにおいて、より小さい走査インデックスで置換され得る。
非分離可能2次変換はブロック(例えば、CB)に適用され得る。いくつかの例において、VVCでのように、LFNSTは、図17及び図8で示されるように、順方向1次変換と量子化との間(例えば、エンコーダ側で)及び逆量子化と逆方向1次変換との間で適用される。
図17及び図18は、16×64変換(又は、変換が順方向若しくは逆方向2次変換であるかどうかに応じて、64×16変換)及び16×48変換(又は、変換が順方向若しくは逆方向2次変換であるかどうかに応じて、48×16変換)を夫々使用する2つの変換コーディングプロセス(1700)及び(1800)の例を示す。図17を参照すると、プロセス(1700)で、エンコーダ側では、順方向1次変換(1710)が最初にブロック(例えば、残差ブロック)に対して実行され得、係数ブロック(1713)が取得される。その後に、順方向2次変換(又は順方向LFNST)(1712)が、係数ブロック(1713)に適用され得る。順方向2次変換(1712)において、係数ブロック(1713)の左上隅にある4×4サブブロックA~Dの64個の係数は、64長さベクトルによって表され得、64長さベクトルは、64×16(すなわち、64の幅及び16の高さ)の変換行列を乗じられ得、その結果、16長さベクトルが得られる。16長さベクトルの要素は、係数ブロック(1713)の左上4×4サブブロックに埋め戻される。サブブロックB~Dの係数はゼロであることができる。順方向2次変換(1712)の後に得られた係数は、次いで、量子化ステップ(1714)で量子化され、そして、エントロピコーディングされて、ビットストリーム(1716)内のコーディングされたビットが生成される。
コーディングされたビットは、デコーダ側で受け取られ、エントロピデコーディングされ、逆量子化ステップ(1724)が後に続くことができ、係数ブロック(1723)が生成される。逆方向RST8×8のような逆方向2次変換(又は逆方向LFNST)(1722)が、例えば、左上4×4サブブロックEにある16個の係数から、64個の係数を取得するために、実行され得る。64個の係数は、4×4サブブロックE~Hに埋め戻され得る。更に、逆方向2次変換の後の係数ブロック(1723)内の係数は、回復された残差ブロックを取得するために、逆方向1次変換(1720)により処理され得る。
図18の例のプロセス(1800)は、順方向2次変換(1712)の間に処理される係数がより少ない(すなわち、48個)点を除いて、プロセス(1700)と類似している。具体的に、サブブロックA~C内の48個の係数は、48×16のサイズのより小さい変換行列により処理される。48×16のより小さい変換行列を使用することは、変換行列を格納するメモリサイズ及び計算(例えば、乗算、加算、減算、及び/又は同様の計算)の回数を減らすことができるので、計算複雑性を低減することができる。
例において、4×4非分離可能変換(例えば、4×4LFNST)又は8×8非分離可能変換(例えば、8×8LFNST)は、ブロック(例えば、CB)のブロックサイズに応じて適用される。ブロックのブロックサイズは、幅、高さ、などを含むことができる。例えば、4×4LFNSTは、幅及び高さのうちの最小が閾値、例えば、8よりも小さいブロックに対して適用される(例えば、min(幅,高さ)<8)。例えば、8×8LFNSTは、幅及び高さのうちの最小が閾値、例えば、4よりも大きいブロックに対して適用される(例えば、min(幅,高さ)>4)。
非分離可能変換(例えば、LFNST)は、直接行列乗算アプローチに基づくことができるので、繰り返しなしのシングルパスで実装され得る。非分離可能変換行列次元を削減するために、かつ、計算複雑性及び変換係数を格納するためのメモリ空間を最小限にするために、削減非分離可能変換方法(又はRST)がLFNSTで使用され得る。従って、削減非分離可能変換では、N(例えば、Nは、8×8非分離可能2次変換(Non-Separable Secondary Transform,NSST)については64である。)次元ベクトルは、異なる空間におけるR次元ベクトルにマッピングされ得る。ここで、N/R(R<N)は削減係数である。従って、N×N行列の代わりに、RST行列は、式7に示されるようなR×N行列である:
式7中、R×N変換行列のR行は、N次元空間のR個の基底である。逆変換行列は、順方向変換で使用される変換行列(例えば、TR×N)の転置であることができる。8×8LFNSTについては、4の削減係数が適用され得、8×8非分離可能変換で使用される64×64直接行列(direct matrix)は、図17に示されるように、16×64直接行列に削減され得る。代替的に、4よりも大きい削減係数が適用され得、8×8非分離可能変換で使用される64×64直接行列は、図18に示されるように、16×48直接行列に削減され得る。従って、48×16逆RST行列が、8×8左上領域内のコア(1次)変換係数を生成するためにデコーダ側で使用され得る。
図18を参照すると、16×48行列が、16×64行列の代わりに、同じ変換セット構成で適用される場合に、16×48行列への入力は、右下4×4ブロックDを除く左上8×8ブロック内の3つの4×4ブロックA、B及びCからの48個の入力データを含む。次元の削減により、LFNST行列を格納するためのメモリ使用量は、最低限の性能低下で、例えば、10KBから8KBまで、低減され得る。
複雑性を低減するために、LFNSTは、第1係数サブグループの外側の係数が有意でない場合に適用可能であるよう制限され得る。例において、LFNSTは、第1係数サブグループの外側の全ての係数が有意でない場合にのみ適用可能であるよう制限され得る。図17及び図18を参照すると、第1係数サブグループは左上ブロックEに対応するので、ブロックEの外側にある係数は有意でない。
例において、LFNSTが適用される場合に、1次のみ(primary-only)変換係数は有意でない(例えば、ゼロ)。例において、LFNSTが適用される場合に、全ての1次のみ変換係数はゼロである。1次のみ変換係数は、2次変換によらずに1次変換から取得される変換係数を指すことができる。従って、LFNSTインデックスのシグナリングは、最後の有意味な位置(last-significant position)を条件とされ得るので、LFNSTにおける余分の係数走査は回避される。いくつかの例では、余分の係数走査は、特定の位置にある有意味な変換係数をチェックするために使用される。例において、例えば、ピクセルごとの乗算に関して、LFNSTの最悪の場合の処理は、4×4ブロック及び8×8ブロックの非分離可能変換を夫々、8×16変換及び8×47変換に制限する。上記の場合に、最後の有意味な走査位置は、LFNSTが適用される場合に8よりも小さくなる。他のサイズについては、最後の有意味な走査位置は、LFNSTが適用される場合に16よりも小さくなる。4×N及びN×4のCBであり、Nが8よりも大きい場合に、制限は、LFNSTがCBの左上4×4領域に適用されることを暗示することができる。例において、制限は、LFNSTがCBの左上4×4領域にのみ一度だけ適用されることを暗示する。例において、全ての1次のみ係数は、LFNSTが適用される場合に有意でなく(例えば、ゼロ)、1次変換のための動作の数は低減される。エンコーダの視点からは、変換係数の量子化は、LFNST変換がテストされる場合に、有意に簡略化され得る。レート歪みを最適化された量子化は、最大で、例えば、走査順序において、最初の16個の係数に対して実行可能であり、残りの係数はゼロにセットされ得る。
LFNST変換(例えば、変換カーネル、変換コア、又は変換行列)は、以下で記載されるように選択され得る。実施形態において、複数の変換セットが使用可能であり、1つ以上の非分離可能変換行列(又はカーネル)が、LFNSTにおける複数の変換セットの夫々に含まれ得る。開示の態様に従って、変換セットは、複数の変換セットから選択可能であり、非分離可能変換行列は、変換セット内の1つ以上の非分離可能変換行列から選択可能である。
表1は、開示の実施形態に従う、イントラ予測モードから複数の変換セットへの例示的なマッピングを示す。マッピングは、イントラ予測モードと複数の変換セットとの間の関係を示す。表1に示されるような関係は、予め定義されてよく、エンコーダ及びデコーダで記憶され得る:
表1を参照すると、複数の変換セットは、4つの変換セット、例えば、0から3までの変換セットインデックス(例えば、Tr.set index)によって夫々表される変換セット0から3、を含む。インデックス(例えば、IntraPredMode)は、イントラ予測モードを示すことができ、そのインデックス及び表1に基づき、変換セットインデックスは取得され得る。従って、変換セットは、イントラ予測モードに基づき決定され得る。例において、3つの交差成分線形モデル(Cross Component Linear Model,CCLM)モード(例えば、INTRA_LT_CCLM、INTRA_T_CCLM又はINTRA_L_CCLM)のうちの1つがCB(例えば、81<=IntraPredMode<=83)のために使用される場合に、変換セット0がそのCBに対して選択される。
上述されたように、各変換セットは、1つ以上の非分離可能変換行列を含むことができる。1つ以上の非分離可能変換行列のうちの1つは、例えば、明示的にシグナリングされるLFNSTインデックスによって選択され得る。LFNSTインデックスは、例えば、変換係数のシグナリング後に、イントラコーディングされたCU(例えば、CB)ごとに1回、ビットストリームでシグナリングされ得る。実施形態において、各変換セットは、2つの非分離可能変換行列(カーネル)を含み、選択された非分離可能2次変換候補は、2つの非分離可能変換行列のうちの1つであることができる。いくつかの例において、LFNSTは、CB(例えば、変換スキップモードでコーディングされたCB、又は非ゼロ係数の数が閾値に満たないCB)に適用されない。例において、LFNSTインデックスは、LFNSTがCBに適用されるべきでない場合には、そのCBについてはシグナリングされない。LFNSTインデックスのデフォルト値はゼロであり、シグナリングされなくてもよく、これは、LFNSTがCBに適用されないことを示す。
実施形態において、LFNSTは、第1係数サブグループの外側の全ての係数が有意でない場合にのみ適用可能であるよう制限され、LFNSTインデックスのコーディングは、最後の有意味な係数の位置に依存することができる。LFNSTインデックスはコンテキストコーディングされ得る。例において、LFNSTインデックスのコンテキストコーディングはイントラ予測モードに依存せず、第1ビンのみがコンテキストコーディングされる。LFNSTは、ルーマ及びクロマの両成分について、イントラスライス内又はインタースライス内のイントラコーディングされたCUに適用され得る。デュアルツリー(dual tree)が有効である場合に、ルーマ成分及びクロマ成分のLFNSTインデックスは、別々にシグナリングされ得る。インタースライスについては(例えば、デュアルツリーは無効である。)、単一のLFNSTインデックスが、ルーマ及びクロマの両成分についてシグナリング及び使用され得る。
イントラサブパーティション(Intra Sub-Partition,ISP)コーディングモードが使用され得る。ISPコーディングモードでは、ルーマイントラ予測されたブロックは、ブロックサイズに応じて、垂直方向又は水平方向で2又は4つのサブパーティションに分割され得る。いくつかの例において、実現可能な全てのサブパーティションにRSTが適用される場合に、性能向上はわずかである。よって、いくつかの例において、ISPモードが選択される場合に、LSNSTは無効にされ、LFNSTインデックス(又はRSTインデックス)はシグナリングされない。ISP予測された残差に対してRST又はLFNSTを無効にすることは、コーディング複雑性を低減することができる。いくつかの例において、行列ベースのイントラ予測モード(Matrix-based Intra Prediction mode,MIP)が選択される場合に、LFNSTは無効にされ、LFNSTインデックスはシグナリングされない。
いくつかの例において、64×64よりも大きいCUは、最大変換サイズ制限(例えば、64×64)により暗黙的に分割され(TUタイリング)、LFNSTインデックス探索は、特定の数のデコードパイプライン段についてデータバッファリングを4倍大きくすること可能性がある。従って、LFNSTが許される最大サイズは、64×64に制限され得る。例において、LFNSTは、離散コサイン変換(DCT)タイプ2(DCT-2)変換のみで有効にされる。
いくつかの例において、分離可能変換スキームは、指向性テクスチャパターン(例えば、45°又は135°方向に沿ったエッジ)を捕捉するには効率的でない場合がある。非分離可能変換スキームは、例えば、上記のシナリオにおいて、コーディング効率を改善し得る。計算複雑性及びメモリ使用量を低減するために、非分離可能変換スキームは、1次変換から取得される低周波数変換係数に適用される2次変換として使用され得る。2次変換は、ブロックに適用可能であり、2次変換を示す情報は、予測モード情報、1次変換タイプ、隣接する再構成されたサンプル、及び/又は同様のものに基づき、そのブロックについてシグナリングされ得る。更に、変換ブロックパーティション情報(変換ブロックパーティショニング情報、変換パーティショニング情報、又は変換パーティション情報とも呼ばれる。)、コーディングされたブロックのサイズ、及びコーディングされたブロックの形状は、2次変換の効率的な適用及び/又はシグナリングのための追加情報を提供することができる。
開示の態様に従って、ブロックのコーディング情報は、コーディングされたビデオビットストリームからデコーディングされ得る。コーディング情報は、ブロックに対するイントラ予測モードと、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせとを示すことができる。
変換パーティショニング情報は、ブロックが複数のTB又はTUに更にパーティション化され得るかどうか及び/又はどのようにパーティション化され得るかを示すことができる。ブロックは、例えば、図13及び図14を参照して記載されるように、ブロックについての変換パーティショニング情報に基づき複数のTU又はTBにパーティション化され得る。例において、変換パーティショニング情報は、コーディングされたビデオビットストリームにおいてシグナリングされる。ブロックについての変換パーティショニング情報は、ブロックに対するパーティショニングデプスを示すことができる。
開示において、ブロックという用語は、予測ブロック(Prediction Block,PB)、コーディングブロック(Coding Block,CB)、コーディングされたブロック(coded block)、コーディングユニット(Coding Unit,CU)、変換ブロック(Transform Block,TB)、変換ユニット(Transform Unit,TU)、ルーマブロック(例えば、ルーマCB)、クロマブロック(例えば、クロマCB)、などを指し得る。
ブロックのサイズは、ブロックの幅、ブロックの高さ、ブロックのアスペクト比(例えば、ブロックの高さに対するブロックの幅の比、若しくはブロックの幅に対するブロックの高さの比)、ブロックエリアサイズ若しくはブロック面積(例えば、ブロックの幅×ブロックの高さ)、ブロックの幅及びブロックの高さのうちの最小、ブロックの幅及びブロックの高さのうちの最大、及び/又は同様のものを指すことができる。ブロックの形状は、ブロックの任意の適切な形状を指すことができる。ブロックの形状は、長方形形状のような非正方形形状、正方形形状、などを指すことができるが、これらに限られない。ブロックの形状は、ブロックのアスペクト比を指すことができる。
例において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、コーディングされたビデオビットストリームにおいてシグナリングされる。例において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、コーディングされたビデオビットストリーム内の他の情報に基づき決定される。
2次変換がブロックに対して無効にされるかどうかは、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに基づき決定され得る。例において、2次変換に関連した情報(例えば、2次変換インデックス)を、例えば、コーディングされたビデオビットストリームにおいて、シグナリングすべきかどうかは、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに基づき決定される。
更に、ブロックは、2次変換がブロックに対して無効にされるかどうかの決定に基づき、再構成され得る。2次変換がブロックに対して無効にされると決定される場合には、ブロックは、2次変換によらず、1次変換(例えば、逆方向1次変換)のみで再構成され得る。例において、2次変換に関連した情報(例えば、2次変換インデックス)は、コーディングされたビデオビットストリームにおいてシグナリングされないと決定される。2次変換がブロックに対して無効にされないと決定される(例えば、2次変換がブロックに対して有効にされると決定される)場合には、ブロックは、1次変換(例えば、逆方向1次変換)及び2次変換(例えば、逆方向2次変換)により再構成され得る。例えば、2次変換がブロックに対して無効にされないと決定され、更には、ブロックに適用されると決定される場合には、ブロックは、1次変換及び2次変換により再構成される。
2次変換に関連した情報(例えば、2次変換インデックス)は、ブロックに適用されるべきである2次変換(例えば、2次変換カーネル、2次変換コア、又は2次変換行列)を示すことができる。例において、2次変換はLFNST、RSTなどである。上述されたように、実施形態において、複数の変換セットが使用可能であり、1つ以上の2次変換行列(又はカーネル)が、複数の変換セットの夫々に含まれ得る。開示の態様に従って、変換セットは、表1を参照して記載されたものを含むがこれに限られない任意の適切な方法を用いて、複数の変換セットから選択され得、ブロックに適用されるべきである2次変換(例えば、2次変換行列)は、2次変換に関連した情報(例えば、2次変換インデックス)によってセットされた変換における1つ以上の2次変換行列から選択され得る。
情報(例えば、2次変換インデックス)は、例えば、コーディングされたビデオビットストリームにおいて、暗黙的にシグナリングされ得る。例において、2次変換インデックスは、上記のLFNSTインデックスを指す。いくつかの例において、2次変換は、ブロック(例えば、変換スキップモードでコーディングされたCB、又は非ゼロ係数の数閾値に満たないCB)適用されない。例において、2次変換インデックス(例えば、LFNSTインデックス)は、2次変換がブロックに適用されるべきではない場合に、そのブロックについてシグナリングされない。2次変換インデックスのデフォルト値はゼロであり、シグナリングされなくてもよく、これは、2次変換がブロックに適用されないことを示す。
実施形態において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックについての変換パーティショニング情報を含むことができる。変換パーティショニング情報は、コーディングされたビデオビットストリームにおいてシグナリングされ得る。ブロックについての変換パーティショニング情報は、ブロックに対するパーティショニングデプスを示すことができる。ブロックは、例えば、図13を参照して記載されるように、ブロックについての変換パーティショニング情報に基づき複数のTU又はTBにパーティション化され得る。従って、2次変換がブロックに対して無効にされるかどうかは、パーティショニングデプスに基づき決定され得る。例において、パーティショニングデプスが閾値nよりも大きい場合に、2次変換は、ブロックに対して無効にされると決定され、2次変換インデックスは、シグナリングされないと決定される。閾値nは、如何なる適切な整数であることもできる。閾値nは0又は正の整数であることができる。閾値nの例示的な値は、0、1、2、などを含むが、これらに限られない。例において、閾値nは0である。2次変換インデックス(例えば、LFNSTインデックス)は、ブロックに適用される2次変換カーネルを示すことができる。
開示の態様に従って、ブロック(例えば、CB)についての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックに対する2次変換の適用及び/又はシグナリングのために使用され得る。例において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックに対する複数の2次変換の適用及び/又はシグナリングのために使用され得る。ブロックに対して2次変換を無効又は有効にすべきかどうかは、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに基づき決定され得る。ブロックに2次変換を適用すべきかどうは、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに基づき決定され得る。ブロックに対する2次変換の適用をシグナリングすべきかどうかは、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに基づき決定され得る。
実施形態において、ブロックについての変換パーティショニング情報がシグナリングされ得、ブロックは複数のTU又はTBにパーティション化され得る。ブロックに対して2次変換を無効にすべきかどうかは、ブロックについての変換パーティショニング情報に依存することができる。ブロックについての変換パーティショニング情報は、ブロックに対するパーティショニングデプスを示すことができる。例において、ブロックに対して2次変換を無効にすべきかどうかは、ブロックに対するパーティショニングデプスに依存する。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックス)をシグナリングすべきか否かは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックス)をシグナリングすべきか否かは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。例において、2次変換インデックスは、stIdxと表記される。例において、パーティショニングデプス及び閾値に基づき、例えば、パーティショニングデプスが閾値nよりも大きい場合に、2次変換は無効にされると決定され、2次変換インデックスはシグナリングされないと決定される。閾値nは如何なる適切な整数であることもできる。例において、閾値nは0である。例において、閾値nは正の整数である。閾値nの例示的な値は、0、1、2などを含むが、これらに限られない。例において、ブロックが複数のTU又はTBに分割される場合に、2次変換がブロックに対して無効にされるかどうか及び/又は2次変換インデックスがシグナリングされていないかどうかは、パーティショニングデプス及び/又は閾値nに依存することができる。
実施形態において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックについての変換パーティショニング情報及びブロックの形状を含むことができる。変換パーティショニング情報は、コーディングされたビデオビットストリームにおいてシグナリングされ得る。変換パーティショニング情報は、ブロックに対するパーティショニングデプスを示すことができる。ブロックの形状は、非正方の長方形であることができる。ブロックは、複数のTU又はTBにパーティション化され得る。2次変換がブロックに対して無効にされるかどうかは、パーティショニングデプスに基づき決定され得る。例において、パーティショニングデプスが、0又は正の整数であることができる閾値よりも大きい場合に、2次変換は、ブロックに対して無効にされると決定される。
実施形態において、ブロックについての変換パーティショニング情報は、シグナリングされ得、ブロックは、非正方の長方形形状を有することができ(すなわち、ブロックの形状は、非正方の長方形である。)、ブロックは、複数のTU又はTBに更にパーティション化される。ブロックに対して2次変換を無効にすべきかどうかは、ブロックについての変換パーティショニング情報に依存することができる。ブロックについての変換パーティショニング情報は、ブロックに対するパーティショニングデプスを示すことができる。例において、ブロックに対して2次変換を無効にすべきかどうかは、ブロックに対するパーティショニングデプスに依存する。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックスstIdx)をシグナリングすべきか否かは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。例において、パーティショニングデプスが閾値nよりも大きい場合のように、閾値に基づいて、2次変換は、無効にされると決定され、2次変換インデックスは、シグナリングされないと決定される。上述されたように、閾値nは、0又は正の整数のような、如何なる適切な整数であることもできる。閾値nの例示的な値は、0、1、2、などを含むが、これらに限られない。例において、ブロックが複数のTUに分割される場合に、2次変換がブロックに対して無効にされるかどうか、及び/又は2次変換インデックスがシグナリングされないかどうかは、パーティショニングデプス及び閾値nに依存することができる。
実施形態において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックのアスペクト比によって示されるブロックの形状を含むことができる。従って、2次変換がブロックに対して無効にされるかどうかは、ブロックのアスペクト比に基づき決定され得る。
実施形態において、ブロックに対して2次変換を無効にすべきかどうかは、ブロックの形状(例えば、ブロックのアスペクト比)に依存することができる。ブロックに2次変換を適用すべきかどうかは、ブロックの形状(例えば、ブロックのアスペクト比)に依存することができる。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックスstIdx)をシグナリングすべきかどうかは、ブロックの形状(例えば、ブロックのアスペクト比)に依存する。ブロックのアスペクト比は、ブロックの第2ディメンションに対するブロックの第1ディメンションの比であることができ、ブロックの第1ディメンションは、第2ディメンションよりも大きいか又はそれと等しい。ブロックのアスペクト比が閾値L(例えば、1、2、4、8、など)よりも大きい場合に、2次変換は、ブロックに対して無効にされると決定され得る。例において、閾値Lは、2mであり、mは、0又は正の整数である。
例において、ブロックのアスペクト比(例えば、ブロックの高さに対するブロックの幅の比)が閾値L(例えば、1、2、4、8、など)よりも大きい場合に、2次変換インデックスはシグナリングされず、かつ/あるいは、2次変換は適用されない。
例において、ブロックのアスペクト比(例えば、ブロックの高さに対するブロックの幅の比)が閾値J(例えば、1、1/2、1/4、1/8、など)よりも小さい場合に、2次変換インデックスはシグナリングされず、かつ/あるいは、2次変換は適用されない。例において、閾値Jは、2-mであり、mは、0又は正の整数である。
実施形態において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、変換パーティショニング情報及びブロックの形状を含むことができる。変換パーティショニング情報は、ブロックに対するパーティショニングデプスを示すことができる。ブロックの形状は、正方形であることができる。ブロックは、複数のTU又はTBにパーティション化され得る。2次変換がブロックに対して無効にされるかどうかは、パーティショニングデプスに基づき決定され得る。例において、パーティショニングデプスが、0又は正の整数であることができる閾値よりも大きい場合に、2次変換は、ブロックに対して無効にされると決定される。
実施形態において、ブロックは、複数のTU又はTBにパーティション化され得る。更に、ブロックの形状は、正方形であることができる(例えば、ブロックのアスペクト比は1である。)。従って、2次変換がブロックに対して無効にされるかどうかは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存することができる。例において、ブロックについての変換パーティショニング情報はシグナリングされる。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックスstIdx)をシグナリングすべきか否かは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。
例において、パーティショニングデプスが閾値nよりも大きい場合のように、パーティショニングデプスに基づいて、2次変換は、無効にされると決定され、2次変換インデックスは、シグナリングされないと決定される。閾値nは、0又は正の整数(1、2、など)のような、如何なる適切な整数であることもできる。例において、ブロックが複数のTUに分割される場合に、2次変換がブロックに対して無効にされるかどうか、及び/又は2次変換インデックスがシグナリングされないかどうかは、パーティショニングデプス及び閾値nに依存することができる。
実施形態において、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックについての変換パーティショニング情報及びブロックのサイズを含むことができる。変換パーティショニング情報は、ブロックに対するパーティショニングデプスを示すことができる。ブロックのサイズは、閾サイズよりも大きいブロックの幅(又はブロック幅)及びブロックの高さ(又はブロック高さ)を示すことができる。例えば、ブロック幅及びブロック高さは、閾サイズよりも大きい。ブロックは、複数のTU又はTBにパーティション化され得る。2次変換がブロックに対して無効にされるかどうかは、ブロックについての変換パーティショニング情報(例えば、パーティショニングデプス)に基づき決定され得る。例において、パーティショニングデプスが、0又は正の整数であることができる閾値よりも大きい場合に、2次変換は、ブロックに対して無効にされると決定される。
実施形態において、ブロックのサイズ(例えば、ブロック幅及びブロック高さのうちの最小)は、閾サイズを上回ることができる。閾サイズは、如何なる適切なサイズであることもできる。例において、ブロックのサイズは、ブロック幅及びブロック高さのうちの最小を指し、閾サイズは、64、128、256、などである。ブロックは、複数のTU又はTBにパーティション化され得る。例において、ブロックについての変換パーティショニング情報も、シグナリングされる。従って、ブロックに対して2次変換を無効にすべきかどうかは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存することができる。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックス)は、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。
例において、パーティショニングデプスが閾値nよりも大きい場合のように、パーティショニングデプスに基づいて、2次変換は、無効にされると決定され、かつ/あるいは、2次変換に関連した情報(例えば、2次変換インデックス)は、シグナリングされないと決定される。閾値nは、0又は正の整数(1、2、など)のような、如何なる適切な整数であることもできる。例において、ブロックが複数のTU又はTBに分割される場合に、2次変換がブロックに対して無効にされるかどうか、及び/又は2次変換インデックスがシグナリングされないかどうかは、パーティショニングデプス及び閾値nに依存することができる。
例において、閾サイズの例示的な値は、256×256、256×128、128×256、128×128、128×64、64×128、64×64、及び/又は同様のものを含むが、これらに限られない。
実施形態において、他のブロックの幅W’及び他のブロックの高さH’は、最大変換サイズTよりも大きい場合があり、他のブロックは、ブロックを含む複数のサブブロックに暗黙的に分割され得る。最大変換サイズTは、例えば、デコーダ及び/又はエンコーダが入手可能である予め定義されたパラメータであることができる。例において、最大変換サイズTはシグナリングされない。ブロック(例えば、複数のサブブロックのうちの1つ)の幅Wは、W’及びTのうちの最小であることができ、ブロックの高さHは、H’及びTのうちの最小であることができる。ブロック(例えば、複数のサブブロックのうちの1つ)に対するパーティショニングデプスが閾値よりも大きい場合に、2次変換は、適用されないと決定され、かつ/あるいは、2次変換に関連した情報(例えば、2次変換インデックス)は、シグナリングされないと決定される。パーティショニングデプスはシグナリングされ得る。閾値の例示的な値は、0、1、2、及び3を含むが、これらに限られない。複数のサブブロックは、W×Hのサイズを有する他のサブブロックを更に含むことができる。
実施形態において、他のブロックの幅W’及び他のブロックの高さH’のうちの一方は、最大変換サイズTよりも大きく、他のブロックは、ブロックを含む複数のサブブロックに分割され得る。ブロックの幅Wは、W’及びTのうちの最小であることができ、ブロックの高さHは、H’及びTのうちの最小であることができる。ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックに対するパーティショニングデプスを示すブロックについての変換パーティショニング情報を含むことができる。ブロックに対するパーティショニングデプスが閾値よりも大きい場合に、2次変換は、ブロックに対して無効にされると決定され得る。閾値の例示的な値は、0、1、2、及び3を含むが、これらに限られない。
実施形態において、他のブロックの幅W’及び/又は他のブロックの高さH’は、予め定義された定数Kよりも大きい、他のブロックは、複数のサブブロックに暗黙的に分割され得る。Kの例示的な値は、16、32、64、128及び256を含むことができるが、これらに限られない。複数のサブブロックのうちの1つ以上が、W’及びKのうちの最小である幅Wと、H’及びKのうちの最小である高さHとを有する場合に、2次変換は、複数のサブブロックのうちのそれら1つ以上にのみ適用され、かつ/あるいは、2次変換に関連した情報(例えば、1つ以上の2次変換インデックス)は、複数のサブブロックのうちのそれら1つ以上についてのみシグナリングされる。複数のサブブロックのうちのそれら1つ以上には、上記のブロックが含まれる。
実施形態において、他のブロックの幅W’及び他のブロックの高さH’のうちの一方は、予め定義された定数Kより大きい。他のブロックは、ブロックを含む複数のサブブロックに分割され得る。ブロックの幅Wは、W’及びKのうちの最小であることができ、ブロックの高さHは、H’及びKのうちの最小であることができる。ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、W及びHを有するブロックのサイズを含むことができる。2次変換は、ブロックのサイズがW及びHであるブロックに対して有効にされると決定され得る。例において、2次変換は、ブロックのサイズがW及びHであるブロックに適用されると決定される。
図19は、開示の実施形態に従うプロセス(1900)を説明するフローチャートを示す。プロセス(1900)は、CB、TB、ルーマCB、ルーマTB、クロマCB、クロマTB、などのようなブロックの再構成において使用され得る。様々な実施形態において、プロセス(1900)は、端末デバイス(310)、(320)、(330)及び(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路、などのような処理回路によって実行される。いくつかの例において、プロセス(1900)はソフトウェア命令で実装されるので、処理回路がソフトウェア命令を実行する場合に、処理回路はプロセス(1900)を実行する。プロセスは、(S1901)から始まり、(S1910)へ進む。
(S1910)で、ブロック(例えば、CB、ルーマCB、クロマCB、イントラコーディングされたCB、TB、など)のコーディング情報が、コーディングされたビデオビットストリームからデコーディングされ得る。コーディング情報は、ブロックに対するイントラ予測モードと、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせとを示すことができる。ブロックについての変換パーティショニング情報は、ブロックに対するパーティショニングデプスを含むことができる。
(1920)で、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに基づいて、2次変換がブロックに対して無効にされるかどうかが決定され得る。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックス)をシグナリングすべきか否かは、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに依存する。
例において、ブロックに対して2次変換を無効にすべきかどうかは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。例において、パーティショニングデプスが閾値n(例えば、0又は正の整数)よりも大きい場合に、2次変換は、無効にされると決定され、2次変換インデックスは、シグナリングされないと決定される。例において、閾値nは0である。
例において、ブロックについての変換パーティショニング情報は、シグナリングされ得、ブロックは、正方の長方形形状を有することができ、ブロックは、複数のTU又はTBに更にパーティション化される。従って、ブロックに対して2次変換を無効にすべきかどうかは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存することができる。
ブロックに対して2次変換を適用すべきかどうかは、ブロックの形状(例えば、ブロックのアスペクト比)に依存することができる。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックスstIdx)をシグナリングすべきどうかは、ブロックの形状(例えば、ブロックのアスペクト比)に依存する。
実施形態において、ブロックは、複数のTU又はTBにパーティション化され得る。ブロックの形状は、正方形であることができる。従って、ブロックに対して2次変換を無効にすべきかどうかは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存することができる。例において、ブロックについての変換パーティショニング情報はシグナリングされる。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックス)をシグナリングすべきか否かは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。
実施形態において、ブロックのサイズ(例えば、ブロック幅及びブロック高さのうちの最小)は、閾サイズ(例えば、64、128、256、など)を上回ることができる。ブロックは、複数のTU又はTBにパーティション化され得る。例において、ブロックについての変換パーティショニング情報もシグナリングされる。従って、ブロックに対して2次変換を無効にすべきかどうかは、ブロックについての変換パーティショニング情報(ブロックに対するパーティショニングデプス)に依存することができる。いくつかの例において、2次変換に関連した情報(例えば、2次変換インデックス)をシグナリングすべきか否かは、ブロックについての変換パーティショニング情報(例えば、ブロックに対するパーティショニングデプス)に依存する。
(S1930)で、ブロックは、2次変換がブロックに対して無効にされるかどうかの決定に基づき、再構成され得る。例において、2次変換は、(S1920)で、ブロックに対して無効にされると決定されるので、ブロックは、2次変換によらずに、1次変換のみで再構成され得る。
例において、2次変換は、(S1920)で、ブロックに対して有効にされると決定されるので、ブロックは、2次変換がブロックに適用されると決定される場合に、1次変換及び2次変換により再構成され得る。ブロックに対するパーティショニングデプスが閾値n(nは0又は正の整数である。)よりも大きく、ブロックが複数のTU(又はTB)にパーティション化される場合に、異なる2次変換が複数のTU(又はTB)に夫々適用され得る。どの2次変換(例えば、どの2次変換カーネル)が各TU(又はTB)に適用されるべきかは、対応する2次変換インデックスを用いて更に示され得る(例えば、コーディングされたビデオビットストリームにおいてシグナリングされる。)。プロセス(1900)は(S1999)へ進み、終了する。
プロセス(1900)は、適切に適応され得る。プロセス(1900)のステップは、変更及び/又は削除され得る。追加のステップが加えられ得る。如何なる実施順序も使用され得る。実施形態において、他のブロックの幅W’及び他のブロックの高さH’は、最大変換サイズTよりも大きく、他のブロックは、ブロックを含む複数のサブブロックに暗黙的に分割され得る。ブロックの幅Wは、W’及びTのうちの最小であることができ、ブロックの高さHは、H’及びTのうちの最小であることができる。ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、ブロックに対するパーティショニングデプスを示すブロックについての変換パーティショニング情報を含むことができる。ブロックに対するパーティショニングデプスが閾値よりも大きい場合に、2次変換は、ブロックに対して無効にされると決定され得る。パーティショニングデプスは、シグナリングされ得る。閾値の例示的な値は、0、1、2、及び3を含むが、これらに限られない。
実施形態において、他のブロックの幅W’及び他のブロックの高さH’は、予め定義された定数Kより大きい。他のブロックは、ブロックを含む複数のサブブロックに分割され得る。ブロックの幅Wは、W’及びKのうちの最小であることができ、ブロックの高さHは、H’及びKのうちの最小であることができる。ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせは、W及びHを有するブロックのサイズを含むことができる。2次変換は、ブロックのサイズがW及びHであるブロックにのみ適用されると決定される。
2次変換がブロックに対して無効にされるかどうか、及び/又は2次変換に関連した情報(例えば、2次変換インデックス)がシグナリングされるかどうかの決定に関する上記の説明は、複数の変換がブロックに適用されるべきである場合に適切に適応され得る。例において、ブロックは複数のTBにパーティション化され、複数のTBは、複数の変換を用いることによって夫々変換され得る。複数の変換は、複数の1次変換を含むことができる。複数の変換は、複数の2次変換を含むことができる。複数の2次変換に関連した情報は、複数の2次変換を夫々示す複数の2次変換インデックスを含むことができる。複数の2次変換がブロックに対して無効にされるかどうか、及び/又は複数の2次変換に関連した情報(例えば、複数の2次変換インデックス)がシグナリングされるかどうかは、上述されたように、ブロックについての変換パーティショニング情報、ブロックのサイズ、及びブロックの形状のうちの1つ又は組み合わせに基づき決定され得る。
例において、複数の2次変換がブロックに対して無効にされるかどうか、及び/又は複数の2次変換に関連した複数の2次変換インデックスがシグナリングされるかどうかは、ブロックについての変換パーティショニング情報(例えば、パーティショニングデプス)に基づき決定され得る。例えば、パーティショニングデプスが閾値n(例えば、0又は正の整数)よりも大きい場合に、複数の2次変換は、ブロックに対して無効にされると決定され、複数の2次変換インデックスは、シグナリングされない。例において、複数の2次変換がブロックに対して無効にされるかどうか、及び/又は複数の2次変換に関連した複数の2次変換インデックスがシグナリングされるかどうかは、ブロックの形状(例えば、アスペクト比)に基づき決定され得る。
開示の実施形態は、別々に使用されても、あるいは、如何なる順序で組み合わされてもよい。更に、方法(又は実施形態)、エンコーダ、及びデコーダの夫々は、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実装されてよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ可読媒体に記憶されているプログラムを実行する。開示の実施形態は、ルーマブロック又はクロマブロックに適用されてよい。
上記の技術は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つ以上のコンピュータ可読媒体に物理的に記憶され得る。例えば、図20は、開示される対象の特定の実施形態を実装するのに適したコンピュータシステム(2000)を示す。
コンピュータソフトウェアは、1つ以上のコンピュータ中央演算処理装置(CPU)、グラフィクス処理ユニット(GPU)などによって、直接に、又は解釈、マイクロコード実行などを通じて、実行され得る命令を含むコードを生成するように、アセンブリ、コンパイル、リンキングなどのメカニズムに従い得る如何なる適切な機械コード又はコンピュータ言語によってもコーディング可能である。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、インターネット・オブ・シングス(Internet of Things)デバイス、などを含む様々なタイプのコンピュータ又はその構成要素で実行可能である。
コンピュータシステム(2000)に関して図20に示される構成要素は、本質的に例示であり、本開示の実施形態を実装するコンピュータソフトウェアの使用又は機能の範囲に関して如何なる限定も示唆することを意図しない。構成要素の構成は、コンピュータシステム(2000)の例示的な実施形態において説明される構成要素のうちのいずれか1つ又は組み合わせに関して何らかの依存又は要件を有するものとして解釈されるべきではない。
コンピュータシステム(2000)は、特定のヒューマンインターフェース入力デバイスを含んでよい。かようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーボード、スワイプ、データグロープ動作)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず。)を通じた一人以上のユーザによる入力に反応してよい。ヒューマンインターフェースデバイスはまた、音声(例えば、発話、音楽、周囲音)、画像(例えば、スキャンされた画像、静止画カメラから取得された写真画像)、映像(例えば、二次元映像、立体視映像を含む三次元映像)などの、人による意識的な入力に必ずしも直接には関係しない特定のメディアを捕捉するためにも使用され得る。
入力ヒューマンインターフェースデバイスは、キーボード(2001)、マウス(2002)、トラックパッド(2003)、タッチスクリーン(2010)、データグローブ(図示せず。)、ジョイスティック(2005)、マイク(2006)、スキャナ(2007)、カメラ(2008)(各1つしか表されていない。)のうちの1つ以上を含んでよい。
コンピュータシステム(2000)は、特定のヒューマンインターフェース出力デバイスも含んでよい。かようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音響、光、及び匂い/味を通じて一人以上のユーザの感覚を刺激し得る。かようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(2010)、データグローブ(図示せず。)、又はジョイスティック(2005)による触覚フィードバック、しかし、入力デバイスとして機能しない触覚フィードバックデバイスも存在し得る。)、音声出力デバイス(例えば、スピーカ(2009)、ヘッドホン(図示せず。))、視覚出力デバイス(例えば、夫々タッチスクリーン入力機能の有無によらず、夫々触覚フィードバック機能の有無によらず、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含み、それらのうちのいくつかは、立体視出力、仮想現実メガネ(図示せず。)、ホログラフィックディスプレイ及びスモークタンク(図示せず。)などの手段により二次元視覚出力又は三次元よりも多い次元の出力を出力可能なスクリーン(2010))、及びプリンタ(図示せず。)を含んでよい。
コンピュータシステム(2000)は、人がアクセス可能な記憶デバイス及びそれらの関連する媒体、例えば、CD/DVD又は同様の媒体(2021)によるCD/DVD ROM/RW(2020)、サムドライブ(2022)、リムーバブルハードディスク又はソリッドステートドライブ(2023)、レガシー磁気媒体、例えば、テープ及びフロッピー(登録商標)ディスク(図示せず。)、専用のROM/ASIC/PLDベースデバイス、例えば、セキュリティドングル(図示せず。)、なども含むことができる。
当業者であれば、目下開示されている対象に関連して使用されている「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、又は他の一時的な信号を含まないことも理解するはずである。
コンピュータシステム(2000)は、1つ以上の通信ネットワーク(2055)へのインターフェース(2054)も含むことができる。ネットワークは、例えば、ワイヤレス、ワイヤライン、光であることができる。ネットワークは更に、ローカル、ワイドエリア、メトロポリタン、車両及び工業、実時間、遅延耐性、などであることができる。ネットワークの例には、イーサネット(登録商標)などのローカルエリアネットワーク、ワイヤレスLAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、及び地上放送TVを含むTVワイヤライン又はワイヤレス広域デジタルネットワーク、CANバスを含む車両及び工場ネットワーク、などがある。特定のネットワークは、一般に、特定の汎用デジタルポート又はペリフェラルバス(2049)(例えば、コンピュータシステム(2000)のUSBポートなど)に取り付けられた外付けネットワークインターフェースアダプタを必要とする。他は、一般に、後述されるようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットネットワーク、又はスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)によってコンピュータシステム(2000)のコアに組み込まれる。これらのネットワークのいずれかを使用して、コンピュータシステム(2000)は他のエンティティと通信することができる。そのような通信は、単方向の受信専用(例えば、ブロードキャストTV)又は単方向の送信専用(例えば、特定のCANバスデバイスへのCANバス)であることができ、あるいは、例えば、ローカル若しくは広域デジタルネットワークを使用して他のコンピュータシステムに対して双方向であることができる。特定のプロトコル又はプロトコルスタックが、上述されたようなネットワーク及びネットワークインターフェースの夫々で使用可能である。
上記のヒューマンインターフェースデバイス、人がアクセス可能な記憶デバイス、及びネットワークインターフェースは、コンピュータシステム(2000)のコア(2040)へ取り付けられ得る。
コア(2040)は、1つ以上の中央演算処理装置(CPU)(2041)、グラフィクス処理ユニット(GPU)(2042)、フィールドプログラマブルゲートエリア(FPGA)(2043)の形をとる専用のプログラム可能処理ユニット、特定のタスクのためのハードウェアアクセラレータ(2044)、グラフィクスアダプタ(2050)などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM)(2045)、ランダムアクセスメモリ(RAM)(2046)、内部のユーザアクセス不能ハードドライブなどの内蔵大容量記憶装置、SSD、など(2047)とともに、システムバス(2048)を通じて接続されてよい。いくつかのコンピュータシステムでは、システムバス(2048)は、追加のCPU、GPUなどによる拡張を可能にするように、1つ以上の物理プラグの形でアクセス可能であることができる。コアのシステムバス(2048)へ直接に又はペリフェラルバス(2049)を通じて、周辺機器が取り付けられ得る。例において、ディスプレイ(2010)は、グラフィクスアダプタ(2050)へ接続され得る。ペリフェラルバスのためのアーキテクチャには、PCI、USBなどがある。
CPU(2041)、GPU(2042)、FPGA(2043)、及びアクセラレータ(2044)は、組み合わせて上記のコンピュータコードを構成することができる特定の命令を実行可能である。そのコンピュータコードは、ROM(2045)又はRAM(2046)に記憶され得る。一時データもRAM(2046)に記憶可能であり、一方、永続性データは、例えば、内蔵大容量記憶装置(2047)に記憶可能である。メモリデバイスのいずれかへの高速な格納及び読み出しは、キャッシュメモリの使用により可能にされ得る。キャッシュメモリは、1つ以上のCPU(2041)、GPU(2042)、大容量記憶装置(2047)、ROM(2045)、RAM(2046)などと密接に関連し得る。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構成されたものであることができ、あるいは、それらは、コンピュータソフトウェア技術で通常の知識を有する者によく知られており利用可能である種類のものであることができる。
例として、限定としてではなく、アーキテクチャ(2000)、具体的にはコア(2040)を有するコンピュータシステムは、1つ以上の有形なコンピュータ可読媒体において具現されているソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータ、などを含む。)の結果として機能を提供することができる。かようなコンピュータ可読媒体は、コア内蔵大容量記憶装置(2047)又はROM(2045)などの、非一時的な性質であるコア(2040)の特定の記憶装置に加えて、先に紹介されたユーザアクセス可能な大容量記憶装置に関連した媒体であることができる。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶され、コア(2040)によって実行可能である。コンピュータ可読媒体には、特定のニーズに応じて、1つ以上のメモリデバイス又はチップが含まれ得る。ソフトウェアは、コア(2040)、及び、具体的には、その中のプロセッサ(CPU、GPU、FPGAなどを含む。)に、RAM(2046)に記憶されているデータ構造を定義することと、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することとを含め、本明細書で説明されている特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。追加的に、又は代替案として、コンピュータシステムは、本明細書で説明されている特定のプロセス又は特定のプロセスの特定の部分を実行するようにソフトウェアの代わりに又はそれとともに動作することができる、回路内でハードワイヤード又は別なふうに具現されたロジック(例えば、アクセラレータ(2044))の結果として、機能を提供することができる。ソフトウェアへの言及は、必要に応じて、ロジックを包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶している回路(例えば、集積回路(IC))、実行のためのロジックを具現する回路、又は両方を包含することができる。本開示は、ハードウェア及びソフトウェアの如何なる適切な組み合わせも包含する。
付録A:頭字語
JEM:Joint Exploration Model
VVC:Versatile Video Coding
BMS:Benchmark Set
MV:Motion Vector
HEVC:High Efficiency Video Coding
SEI:Supplementary Enhancement Information
VUI:Video Usability Information
GOP:Group of Picture(s)
TU:Transform Unit(s)
PU:Prediction Unit(s)
CTU:Coding Tree Unit(s)
CTB:Coding Tree Block(s)
PB:Prediction Block(s)
HRD:Hypothetical Reference Decoder
SNR:Signal Noise Ratio
CPU:Central Processing Unit(s)
GPU:Graphics Processing Unit(s)
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 Area(s)
SSD:Solid-State Drive
IC:Integrated Circuit
CU:Coding Unit
本開示は、いくつかの例示的な実施形態について記載してきたが、本開示の範囲内にある代替、交換、及び様々な置換均等物が存在する。よって、明らかなように、当業者であれば、たとえ本明細書で明示的に図示又は説明されていないとしても、本開示の原理を具現し、よって、その精神及び範囲の中にある多数のシステム及び方法に想到可能である。