最初に、1つまたは複数の実施形態の例示的な実装を以下に与えるが、開示するシステムおよび/または方法が、現在知られているのかまたは存在するのかにかかわらず、任意の数の技法を使用して実装され得ることを理解されたい。本開示は、いかなる場合も本明細書で図示および説明する例示的な設計および実装を含む以下に示す例示的な実装、図面、および技法に限定されるべきではないが、それらの全範囲の等価物とともに添付の特許請求の範囲内で変更され得る。
ビデオコーディングは、インター予測(フレーム間の予測)とイントラ予測(フレーム内の予測)とによる圧縮の組合せに関与する。これは、予測ブロックと残差ブロックとの作成を生じる。予測ブロックは、ビデオフレーム中のピクセルのブロックを再構成するために採用され得る予測情報のブロックである。予測ブロックは、参照ブロックとして働くピクセルの他のブロックに対する関係を示すことによって生成される。残差ブロックは、予測ブロックによって参照される参照ブロックと圧縮されているピクセルの元のブロックとの間の差を記憶する。残差ブロックはまたさらに圧縮され得る。たとえば、対応する残差データを変換係数に変える変換が残差データに適用され得る。変換は、本質的に信号/パターンである。係数は、パターンをデータに一致させるパターンに対する変更を記述する。そのような係数は、残差ブロック中の基礎をなす残差データよりも少ない空間を占有し得る。
しかしながら、場合によっては、残差ブロックは、データの不均等な分散を含む。たとえば、残差ブロックのかなりの部分はデータとしてゼロ値を含み得る。そのようなエリアに変換を適用することは、データのサイズを実際に増加させ得る。したがって、SVTが採用され得る。SVTは、残差ブロック中の残差データの一部分のみに変換ブロックを適用し、他のデータを未変換のままにする処理である。非ゼロ残差データは残差ブロックにわたって不均等に分散され得、そのような分散は、ブロックごとに変化し得る。SVTにより、圧縮を最適化するために変換ブロックを残差ブロックに対して異なるロケーションに配置することが可能になる。一例では、SVTは、残差ブロックのサイズの1/4である変換ブロックを採用する。この例における変換ブロックのうちのいくつかは、残差ブロックの高さよりも低い高さと残差ブロックの幅よりも小さい幅とを有する。これは、そのような変換が候補位置として知られる多数のロケーション(一例では、たとえば、81個の可能な候補位置)に位置決めされ得ることを意味する。したがって、SVTが使用されるとき、位置がシグナリングされ得、そのような位置情報のシグナリングオーバーヘッドは、多数の可能な候補位置が利用可能であるときに有意になり得る。これは、位置が候補変換位置の総グループから選定された変換位置を一意に示すために必要ないくつかのビットによってシグナリングされ得るからである。残差ブロックが大きくなるにつれて、候補位置の数が増加し、これは、さらに、シグナリングオーバーヘッドを増加させ、圧縮効率を低減する。さらに、実際には、SVT変換の1/4のサイズは、多くの場合、残差ブロック中の大部分の非ゼロデータをカバーするには不十分であり得、したがって、変換圧縮とシグナリングオーバーヘッドとの間での準最適なトレードオフであり得る。また、エンコーダは、フレームごとにすべての可能な符号化オプションをチェックすることと、圧縮およびビデオ品質劣化について考えることと、フレームのために最良のコーディング技法を選択することとを含むレートひずみ最適化(RDO)処理を採用する。より多数の候補変換位置は、チェックすべきより多くの潜在的な符号化オプションを作成することによってRDO処理の複雑性を増加させ、したがって、候補変換位置の数が望ましくないことがある。
本明細書では、増加された圧縮および/またはより低いシグナリングオーバーヘッドを生じる改善されたSVT方式を開示する。開示するSVTブロックは、残差ブロックのサイズの1/2になるように選択される。具体的には、垂直SVTブロックおよび/または水平SVTブロックが採用される。垂直SVTブロックは、残差ブロックと同じ高さを含み、残差ブロックの半分の幅を含む。水平SVTブロックは、残差ブロックと同じ幅を含み、残差ブロックの半分の高さを含む。この手法は、候補位置の数を著しく低減し、したがって、SVTシグナリングオーバーヘッドを著しく低減する。また、増加されたSVTブロックサイズは、残差データのより大きい部分を変換する。たとえば、2つのSVTブロックしか採用されないので、採用されるべきSVTブロックタイプはシングルビットでシグナリングされ得る。また、SVTブロック位置は、候補位置ステップサイズおよび/または位置インデックスによってシグナリングされ得る。これらの値は、(たとえば、高さ座標と幅座標との両方を採用する代わりに)残差ブロックに対するSVTブロック位置を決定するために採用されるオフセットを決定するためにデコーダによって採用され得る。いくつかの例では、候補位置ステップサイズは、シグナリングオーバーヘッドをさらに低減するためにあらかじめ定義され得る。他の例では、エンコーダは、シグナリング目的のために残差係数のうちのいくつかを改変することができる。デコーダは、次いで、残差係数に基づいてSVTブロックタイプ、SVTブロック候補位置ステップサイズ、および/またはSVTブロック位置インデックスを決定することができる。
図1は、ビデオ信号をコーディングする例示的な方法100のフローチャートである。具体的には、ビデオ信号は、エンコーダにおいて符号化される。符号化プロセスは、ビデオファイルサイズを低減するために様々な機構を採用することによってビデオ信号を圧縮する。より小さいファイルサイズにより、関連する帯域幅オーバーヘッドを低減しながら圧縮ビデオファイルをユーザに送信することが可能になる。デコーダは、次いで、エンドユーザへの表示のために元のビデオ信号を再構成するために圧縮ビデオファイルを復号する。復号プロセスは、概して、デコーダがビデオ信号を一貫して再構成することを可能にするために符号化プロセスをミラーリングする。
ステップ101において、ビデオ信号がエンコーダに入力される。たとえば、ビデオ信号は、メモリ中に記憶された圧縮されていないビデオファイルであり得る。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによってキャプチャされ、ビデオのライブストリーミングをサポートするために符号化され得る。ビデオファイルは、オーディオ成分とビデオ成分との両方を含み得る。ビデオ成分は、シーケンス中で閲覧されるときに動きの視覚的印象を与える一連の画像フレームを含んでいる。フレームは、本明細書ではルーマ成分と呼ぶ光とクロマ成分と呼ばれる色とに関して表されるピクセルを含んでいる。いくつかの例では、フレームはまた、3次元視をサポートするために深度値を含み得る。
ステップ103において、ビデオは、ブロックに区分される。区分は、圧縮のために各フレーム中のピクセルを正方形および/または矩形ブロックに再分割することを含む。たとえば、コーディングツリーは、ブロックを分割し、次いで、さらなる符号化をサポートする構成が達成されるまで再帰的に再分割するために採用され得る。したがって、ブロックは、(H.265およびMotion Picture Experts Group(MPEG)-H Part 2としても知られる)高効率ビデオコーディング(HEVC)ではコーディングツリーユニットと呼ばれることがある。たとえば、フレームのルーマ成分は、個々のブロックが比較的均質の照明値を含むまで再分割され得る。さらに、フレームのクロマ成分は、個々のブロックが比較的均質の色値を含むまで再分割され得る。したがって、区分機構は、ビデオフレームのコンテンツに応じて変化する。
ステップ105において、様々な圧縮機構が、ステップ103において区分された画像ブロックを圧縮するために採用される。たとえば、インター予測および/またはイントラ予測が採用され得る。インター予測は、共通のシーン中のオブジェクトが連続フレーム中に現れる傾向があることを利用するように設計される。したがって、参照フレーム中のオブジェクトを示すブロックを隣接するフレーム中で繰り返し記述する必要はない。具体的には、表などのオブジェクトは、複数のフレームにわたって一定の位置に残り得る。したがって、表は1回記述され、隣接するフレームは参照フレームを参照して戻ることができる。パターンマッチング機構は、複数のフレームにわたってオブジェクトに一致するために採用され得る。さらに、移動物体は、たとえば、オブジェクトの移動またはカメラの移動により複数のフレームにわたって表され得る。特定の例として、ビデオは、複数のフレームにわたってスクリーンを横切って移動する自動車を示し得る。動きベクトルは、そのような移動(または、それの欠如)を記述するために採用され得る。動きベクトルは、フレーム中のオブジェクトの座標から参照フレーム中のオブジェクトの座標までのオフセットを与える2次元ベクトルである。したがって、インター予測は、参照フレーム中の対応するブロックからのオフセットを示す動きベクトルのセットとして現在のフレーム中の画像ブロックを符号化することができる。
イントラ予測は、共通のフレーム中のブロックを符号化する。イントラ予測は、ルーマ成分とクロマ成分とがフレーム中でクラスタ化する傾向があることを利用する。たとえば、ツリーの一部分中の緑色のパッチは、緑色の同様のパッチに隣接して位置決めされる傾向がある。イントラ予測は、複数の指向性予測モード(たとえば、HEVCでは33個)、平面モード、および直流(DC)モードを採用する。指向性モードは、現在のブロックが対応する方向でネイバーブロックのサンプルと同様/同じであることを示す。平面モードは、行/列(たとえば、平面)に沿った一連のブロックが行の端にあるネイバーブロックに基づいて補間され得ることを示す。平面モードは、事実上、値を変更する際に比較的一定の傾斜を採用することによって行/列にわたる光/色の滑らかな遷移を示す。DCモードは、境界の平滑化のために採用され、ブロックが指向性予測モードの角方向に関連するすべてのネイバーブロックのサンプルに関連する平均値と同様/同じであることを示す。したがって、イントラ予測ブロックは、実際の値の代わりに様々な関係のある予測モード値として画像ブロックを表すことができる。さらに、インター予測ブロックは、実際の値の代わりに動きベクトル値として画像ブロックを表すことができる。いずれの場合も、予測ブロックは、場合によっては、画像ブロックを正確に表さないことがある。あらゆる差が残差ブロック中に記憶される。変換は、ファイルをさらに圧縮するために残差ブロックに適用され得る。
ステップ107において、様々なフィルタ処理技法が適用され得る。HEVCでは、フィルタは、インループフィルタ処理方式に従って適用される。上記で説明したブロックベースの予測は、デコーダにおけるブロック状の画像の作成を生じ得る。さらに、ブロックベースの予測方式は、ブロックを符号化し、次いで、参照ブロックとして後で使用するために符号化されたブロックを再構成し得る。インループフィルタ処理方式は、ブロック/フレームに雑音抑圧フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびサンプル適応オフセット(SAO)フィルタを反復的に適用する。これらのフィルタは、そのようなブロッキングアーティファクトを緩和し、したがって、符号化ファイルが正確に再構成され得る。さらに、これらのフィルタは、再構成された参照ブロック中のアーティファクトを緩和し、したがって、アーティファクトは、再構成された参照ブロックに基づいて符号化される後続のブロック中で追加のアーティファクトを作成する可能性が低い。
ビデオ信号が区分され、圧縮され、フィルタ処理されると、得られたデータは、ステップ109においてビットストリーム中に符号化される。ビットストリームは、上記で説明したデータならびにデコーダにおける適切なビデオ信号再構成をサポートするために望まれる任意のシグナリングデータを含む。たとえば、そのようなデータは、区分データと、予測データと、残差ブロックと、デコーダにコーディング命令を与える様々なフラグとを含み得る。ビットストリームは、要求時におけるデコーダへの送信のためにメモリ中に記憶され得る。ビットストリームはまた、複数のデコーダにブロードキャストおよび/またはマルチキャストされ得る。ビットストリームの作成は、反復処理である。したがって、ステップ101、103、105、107、および109は、多くのフレームおよびブロックにわたって連続的におよび/または同時に行われ得る。図1に示した順序は、明快さのため、および説明を容易にするために提示され、特定の順序にビデオコーディングプロセスを限定するものではない。さらに、ステップ111、113、115、および117における復号は、多くのフレームおよびブロックにわたって連続的におよび/または同時に行われ得、したがって、復号のために示した順序は同じく限定するものであると見なすべきでない。
デコーダは、ビットストリームを受信し、ステップ111において復号プロセスを始める。具体的には、デコーダは、ビットストリームを対応するシンタックスおよびビデオデータに変換するためにエントロピー復号方式を採用する。デコーダは、ステップ111においてフレームのための区分を決定するためにビットストリームからのシンタックスデータを採用する。区分は、ステップ103においてブロック区分の結果に一致しなければならない。次に、ステップ111において採用されるエントロピー符号化/復号について説明する。エンコーダは、入力画像中の値の空間測位に基づいていくつかの可能な選択肢からブロック区分方式を選択するなど、圧縮プロセス中に多くの選択を行う。正確な選択肢をシグナリングすることは多数のビンを採用し得る。本明細書で使用するビンは、変数として扱われる2進値(たとえば、コンテキストに応じて異なり得るビット値)である。エントロピーコーディングにより、エンコーダは、特定の場合に明らかに実行可能でないあらゆるオプションを破棄し、許容できるオプション(たとえば、候補)のセットを残すことが可能になる。許容できる各オプションには、次いで、コードワードが割り当てられる。コードワードの長さは、許容できるオプションの数(たとえば、2つのオプションでは1つのビン、3から4つのオプションでは2つのビンなど)に基づく。エンコーダは、次いで、選択されたオプションのためのコードワードを符号化する。コードワードが、すべての可能なオプションの潜在的に大きいセットからの選択を一意に示すのとは反対に許容できるオプションの小さいサブセットからの選択を一意に示すために望まれる大きさと同じ大きさであるので、この方式はコードワードのサイズを低減する。デコーダは、次いで、エンコーダと同様の方法で許容できるオプションのセットを決定することによって選択を復号する。許容できるオプションのセットを決定することによって、デコーダは、コードワードを読み取り、エンコーダによって行われる選択を決定することができる。
ステップ113において、デコーダは、ブロック復号を実行する。具体的には、デコーダは、残差ブロックを生成するために逆変換を採用する。次いで、デコーダは、区分に従って画像ブロックを再構成するために残差ブロックと対応する予測ブロックとを採用する。予測ブロックは、ステップ105においてエンコーダにおいて生成されたイントラ予測ブロックとインター予測ブロックとの両方を含み得る。再構成された画像ブロックは、次いで、ステップ111において決定された区分データに従って再構成されたビデオ信号のフレームに位置決めされる。ステップ113についてのシンタックスはまた、上記で説明したようにエントロピーコーディングを介してビットストリーム中でシグナリングされ得る。
ステップ115において、フィルタ処理が、エンコーダにおいてステップ107と同様の方法で再構成されたビデオ信号のフレームに対して実行される。たとえば、雑音抑圧フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびSAOフィルタが、ブロッキングアーティファクトを除去するためにフレームに適用され得る。フレームがフィルタ処理されると、ビデオ信号は、エンドユーザによる閲覧のためにステップ117においてディスプレイに出力され得る。
本開示は、SVTを改善するための変更に関する。具体的には、本開示は、残差ブロックに適用される変換として使用するために改善されたSVTブロックをもたらす。改善されたSVTブロックは、レガシーSVTブロックよりも大きい。したがって、改善されたSVTブロックは、より少数の候補位置を有し、低減されたシグナリングオーバーヘッドを生じる。さらに、SVTブロックタイプおよび位置のための改善されたシグナリング機構を開示する。したがって、改善されたSVTブロックおよび以下の図において説明するシグナリング機構は、ステップ105におけるブロック圧縮、ステップ109におけるビットストリームの符号化、デコーダにおけるビットストリームの受信、およびステップ113におけるブロック復号を改善する。
図2は、ビデオコーディングのための例示的なコーディングおよび復号(コーデック)システム200の概略図である。具体的には、コーデックシステム200は、方法100の実装をサポートするために機能を与える。コーデックシステム200をエンコーダとデコーダとの両方において採用される構成要素を示すために一般化した。コーデックシステム200は、方法100中のステップ101および103に関して説明したようにビデオ信号を受信し、区分し、区分されたビデオ信号201を生じる。コーデックシステム200は、次いで、方法100中のステップ105、107、および109に関して説明したようにエンコーダとして働くときにコーディングされたビットストリームに区分されたビデオ信号201を圧縮する。デコーダとして働くときに、コーデックシステム200は、方法100中のステップ111、113、115、および117に関して説明したように、ビットストリームから出力ビデオ信号を生成する。コーデックシステム200は、一般コーダ制御構成要素211と、変換スケーリングおよび量子化構成要素213と、イントラピクチャ推定構成要素215と、イントラピクチャ予測構成要素217と、動き補償構成要素219と、動き推定構成要素221と、スケーリングおよび逆変換構成要素229と、フィルタ制御分析構成要素227と、ループ内フィルタ構成要素225と、復号ピクチャバッファ構成要素223と、ヘッダフォーマット化およびコンテキスト適応型バイナリ算術コーディング(CABAC)構成要素231とを含む。そのような構成要素は、図示のように結合される。図2では、黒線は、符号化/復号されるべきデータの移動を示し、一方、破線は、他の構成要素の動作を制御する制御データの移動を示す。コーデックシステム200の構成要素はすべて、エンコーダ中に存在し得る。デコーダは、コーデックシステム200の構成要素のサブセットを含み得る。たとえば、デコーダは、イントラピクチャ予測構成要素217と、動き補償構成要素219と、スケーリングおよび逆変換構成要素229と、ループ内フィルタ構成要素225と、復号ピクチャバッファ構成要素223とを含み得る。次に、これらの構成要素について説明する。
区分されたビデオ信号201は、コーディングツリーによってピクセルのブロックに区分されているキャプチャされたビデオシーケンスである。コーディングツリーは、ピクセルのブロックをピクセルのより小さいブロックに再分割するために様々な分割モードを採用する。これらのブロックは、次いで、より小さいブロックにさらに再分割され得る。ブロックは、コーディングツリー上のノードと呼ばれることがある。より大きい親ノードは、より小さい子ノードに分割される。ノードが再分割される回数は、ノード/コーディングツリーの深度と呼ばれる。分割されたブロックは、場合によっては、コーディングユニット(CU)と呼ばれる。分割モードは、採用される分割モードに応じてノードを様々な形のそれぞれ2つ、3つ、または4つの子ノードに区分するために採用されるバイナリツリー(BT)、トリプルツリー(TT)、およびクアッドツリー(QT)を含み得る。区分されたビデオ信号201は、圧縮のために一般コーダ制御構成要素211、変換スケーリングおよび量子化構成要素213、イントラピクチャ推定構成要素215、フィルタ制御分析構成要素227、および動き推定構成要素221に転送される。
一般コーダ制御構成要素211は、アプリケーション制約によるビットストリームへのビデオシーケンスの画像のコーディングに関係する判断を行うように構成される。たとえば、一般コーダ制御構成要素211は、ビットレート/ビットストリームサイズ対再構成品質の最適化を管理する。そのような判断は、ストレージ空間/帯域幅の利用可能性および画像解像度要求に基づいて行われ得る。一般コーダ制御構成要素211はまた、バッファアンダーランおよびオーバーラン問題を緩和するために送信速度に照らしてバッファ利用を管理する。これらの問題を管理するために、一般コーダ制御構成要素211は、他の構成要素によって区分、予測、およびフィルタ処理を管理する。たとえば、一般コーダ制御構成要素211は、動的に、解像度を増加させ、帯域幅使用を増加させるために圧縮複雑性を増加させるか、または解像度および帯域幅使用を減少させるために圧縮複雑性を減少させ得る。したがって、一般コーダ制御構成要素211は、ビットレート問題(たとえば、レートひずみ最適化)とビデオ信号再構成品質とのバランスをとるためにコーデックシステム200の他の構成要素を制御する。一般コーダ制御構成要素211は、他の構成要素の動作を制御する制御データを作成する。制御データはまた、デコーダにおいて復号するためのパラメータをシグナリングするためにビットストリーム中に符号化されるためにヘッダフォーマット化およびCABAC構成要素231に転送される。
区分されたビデオ信号201はまた、インター予測のために動き推定構成要素221と動き補償構成要素219とに送られる。区分されたビデオ信号201のフレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定構成要素221と動き補償構成要素219とは、時間的予測を与えるために1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行する。コーデックシステム200は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために複数の符号化パスを実行し得る。
動き推定構成要素221と動き補償構成要素219とは高度に統合され得るが、概念的な目的のために別々に示してある。動き推定構成要素221によって実行される動き推定は、動きベクトルを生成する処理であり、これは、ビデオブロックの動きを推定する。動きベクトルは、たとえば、予測ブロックに対するコーディングされたオブジェクトの変位を示し得る。予測ブロックは、ピクセル差分に関してコーディングされるべきブロックに厳密に一致することがわかるブロックである。予測ブロックは、参照ブロックと呼ばれることもある。そのようなピクセル差分は、絶対値差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得る。HEVCは、コーディングツリーユニット(CTU)、コーディングツリーブロック(CTB)、およびCUを含むいくつかのコーディングされたオブジェクトを採用する。たとえば、CTUは、CTBに分割され得、これは、次いで、CUに分割され得、これは、必要に応じてさらに再分割され得る。CUは、予測データを含んでいる予測ユニット(PU)および/またはCUのための変換された残差データを含んでいる変換ユニット(TU)として符号化され得る。動き推定構成要素221は、レートひずみ分析を使用することによって動きベクトル、PU、およびTUを生成する。たとえば、動き推定構成要素221は、現在のブロック/フレームのための複数の参照ブロック、複数の動きベクトルなどを決定し得、最良のレートひずみ特性を有する参照ブロック、動きベクトルなどを選択し得る。最良のレートひずみ特性は、コーディング効率(たとえば、最終的な符号化のサイズ)とビデオ再構成の品質(たとえば、圧縮によるデータ損失の量)との両方のバランスをとる。
いくつかの例では、コーデックシステム200は、復号ピクチャバッファ構成要素223中に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオコーデックシステム200は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定構成要素221は、完全ピクセル位置および分数ピクセル位置に対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。動き推定構成要素221は、参照ピクチャの予測ブロックの位置とPUの位置を比較することによってインターコーディングされたスライス中のビデオブロックのPUのための動きベクトルを計算する。動き推定構成要素221は、計算された動きベクトルを符号化のためにヘッダフォーマット化およびCABAC構成要素231に動きデータとして出力し、動き補償構成要素219に動きとして出力する。
動き補償構成要素219によって実行される動き補償は、動き推定構成要素221によって決定された動きベクトルに基づいて予測ブロックをフェッチするかまたは生成することを伴い得る。この場合も、動き推定構成要素221と動き補償構成要素219とは、いくつかの例では、機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償構成要素219は、動きベクトルが指す予測ブロックの位置を特定し得る。残差ビデオブロックは、次いで、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算することによって形成され、ピクセル差分値を形成する。概して、動き推定構成要素221は、ルーマ成分に対して動き推定を実行し、動き補償構成要素219は、クロマ成分とルーマ成分との両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。予測ブロックと残差ブロックとは、変換スケーリングおよび量子化構成要素213に転送される。
区分されたビデオ信号201はまた、イントラピクチャ推定構成要素215とイントラピクチャ予測構成要素217とに送られる。動き推定構成要素221および動き補償構成要素219の場合と同様に、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は、高度に統合され得るが、概念的な目的のために別々に示してある。イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217は、上記で説明したようにフレーム間で動き推定構成要素221および動き補償構成要素219によって実行されるインター予測の代替として、現在のフレーム中のブロックに対して現在のブロックをイントラ予測する。特に、イントラピクチャ推定構成要素215は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定する。いくつかの例では、イントラピクチャ推定構成要素215は、複数のテストされたイントラ予測モードから現在のブロックを符号化するのに適切なイントラ予測モードを選択する。選択されたイントラ予測モードは、次いで、符号化のためにヘッダフォーマット化およびCABAC構成要素231に転送される。
たとえば、イントラピクチャ推定構成要素215は、様々なテストされたイントラ予測モードのためにレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードのうちで最良のレートひずみ特性を有するイントラ予測モードを選択する。レートひずみ分析は、概して、符号化されたブロックと符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみの量(またはエラー)、ならびに符号化されたブロックを生成するために使用されるビットレート(たとえば、ビットの数)を決定する。イントラピクチャ推定構成要素215は、どのイントラ予測モードがブロックの最良のレートひずみ値を示すのかを決定するために様々な符号化されたブロックのひずみとレートとから比を計算する。さらに、イントラピクチャ推定構成要素215は、レートひずみ最適化(RDO)に基づいて深度モデリングモード(DMM)を使用して深度マップの深度ブロックをコーディングするように構成され得る。
イントラピクチャ予測構成要素217は、エンコーダ上に実装されるとイントラピクチャ推定構成要素215によって決定された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成するか、またはデコーダ上に実装されるとビットストリームから残差ブロックを読み取り得る。残差ブロックは、行列として表される予測ブロックと元のブロックとの間の値の差を含む。残差ブロックは、次いで、変換スケーリングおよび量子化構成要素213に転送される。イントラピクチャ推定構成要素215とイントラピクチャ予測構成要素217とは、ルーマ成分とクロマ成分の両方に対して動作し得る。
変換スケーリングおよび量子化構成要素213は、残差ブロックを圧縮するようにさらに構成される。変換スケーリングおよび量子化構成要素213は、残差ブロックに離散コサイン変換(DCT)、離散サイン変換(DST)、または概念的に同様の変換などの変換を適用し、残差変換係数値を備えるビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用され得る。変換は、ピクセル値領域から周波数領域などの変換領域に残差情報を変換し得る。変換スケーリングおよび量子化構成要素213はまた、たとえば、周波数に基づいて変換された残差情報をスケーリングするように構成される。そのようなスケーリングは、残差情報にスケールファクタを適用することに関与し、したがって、異なる周波数情報は、異なる粒度で量子化され、これは、再構成されたビデオの最終的な視覚的品質に影響を及ぼし得る。変換スケーリングおよび量子化構成要素213はまた、ビットレートをさらに低減するために変換係数を量子化するように構成される。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、変換スケーリングおよび量子化構成要素213は、次いで、量子化変換係数を含む行列の走査を実行し得る。量子化変換係数は、ビットストリーム中に符号化されるためにヘッダフォーマット化およびCABAC構成要素231に転送される。
スケーリングおよび逆変換構成要素229は、動き推定をサポートするために変換スケーリングおよび量子化構成要素213の逆動作を適用する。スケーリングおよび逆変換構成要素229は、たとえば、別の現在のブロックのための予測ブロックになり得る参照ブロックとして後で使用するためにピクセル領域中で残差ブロックを再構成するために逆スケーリング、変換、および/または量子化を適用する。動き推定構成要素221および/または動き補償構成要素219は、後のブロック/フレームの動き推定における使用のための対応する予測ブロックに残差ブロックを加算して戻すことによって参照ブロックを計算し得る。フィルタは、スケーリング、量子化、および変換中に作成されるアーティファクトを緩和するために再構成された参照ブロックに適用される。そのようなアーティファクトは、場合によっては、後続のブロックが予測されるときに不正確な予測を生じ(、追加のアーティファクトを作成す)る可能性がある。
フィルタ制御分析構成要素227およびループ内フィルタ構成要素225は、残差ブロックにおよび/または再構成された画像ブロックにフィルタを適用する。たとえば、スケーリングおよび逆変換構成要素229からの変換された残差ブロックは、元の画像ブロックを再構成するためにイントラピクチャ予測構成要素217および/または動き補償構成要素219からの対応する予測ブロックと組み合わされ得る。フィルタは、次いで、再構成された画像ブロックに適用され得る。いくつかの例では、フィルタは、代わりに、残差ブロックに適用され得る。図2の他の構成要素の場合と同様に、フィルタ制御分析構成要素227およびループ内フィルタ構成要素225は高度に統合され、一緒に実装され得るが、概念的な目的のために別々に示されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタがどのように適用されるのかを調整するために複数のパラメータを含む。フィルタ制御分析構成要素227は、そのようなフィルタがどこに適用されなければならないのかについて決定するために再構成された参照ブロックを分析し、対応するパラメータを設定する。そのようなデータは、符号化のためにフィルタ制御データとしてヘッダフォーマット化およびCABAC構成要素231に転送される。ループ内フィルタ構成要素225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタと、雑音抑圧フィルタと、SAOフィルタと、適応ループフィルタとを含み得る。そのようなフィルタは、例に応じて、空間/ピクセル領域中に(たとえば、再構成されたピクセルブロック上に)または周波数領域中に適用され得る。
エンコーダとして動作するとき、フィルタ処理された再構成された画像ブロック、残差ブロック、および/または予測ブロックは、上記で説明したように動き推定において後で使用するために復号ピクチャバッファ構成要素223中に記憶される。デコーダとして動作するとき、復号ピクチャバッファ構成要素223は、再構成されたフィルタ処理されたブロックを記憶し、それを出力ビデオ信号の一部としてディスプレイに転送する。復号ピクチャバッファ構成要素223は、予測ブロック、残差ブロック、および/または再構成された画像ブロックを記憶することが可能な任意のメモリデバイスであり得る。
ヘッダフォーマット化およびCABAC構成要素231は、コーデックシステム200の様々な構成要素からデータを受信し、デコーダへの送信のためにコーディングされたビットストリームにそのようなデータを符号化する。具体的には、ヘッダフォーマット化およびCABAC構成要素231は、一般的な制御データおよびフィルタ制御データなどの制御データを符号化するために様々なヘッダを生成する。さらに、イントラ予測および動きデータを含む予測データならびに量子化変換係数データの形態での残差データはすべて、ビットストリーム中に符号化される。最終的なビットストリームは、元の区分されたビデオ信号201を再構成するためにデコーダによって望まれるすべての情報を含む。そのような情報はまた、(コードワードマッピングテーブルとも呼ばれる)イントラ予測モードインデックステーブル、様々なブロックのためのコンテキストを符号化することの定義、最も可能性が高いイントラ予測モードのインジケーション、区分情報のインジケーションなどを含み得る。そのようなデータは、符号化され得、エントロピーコーディングを採用していることがある。たとえば、情報は、コンテキスト適応型可変長コーディング(CAVLC)、CABAC、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を採用することによって符号化され得る。エントロピーコーディングに続いて、コーディングされたビットストリームが、別のデバイス(たとえば、ビデオデコーダ)に送信されるか、または後の送信もしくは検索のためにアーカイブされ得る。
本開示は、SVTを改善するための変更に関する。具体的には、本開示は、残差ブロックに適用される変換として使用するために改善されたSVTブロックをもたらす。改善されたSVTブロックは、レガシーSVTブロックよりも大きい。したがって、改善されたSVTブロックは、より少数の候補位置を有し、低減されたシグナリングオーバーヘッドを生じる。さらに、SVTブロックタイプおよび位置のための改善されたシグナリング機構を開示する。したがって、以下の図で説明する改善されたSVTブロックおよびシグナリング機構は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、ヘッダフォーマット化およびCABAC構成要素231および/または一般コーダ制御構成要素211の動作を改善する。
図3は、SVTを実装し得る例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200の符号化機能を実装するならびに/または方法100のステップ101、103、105、107および/もしくは109を実装するために採用され得る。エンコーダ300は、入力ビデオ信号を区分し、区分されたビデオ信号301を生じ、これは、区分されたビデオ信号201と実質的に同様である。区分されたビデオ信号301は、次いで、圧縮され、エンコーダ300の構成要素によってビットストリームに符号化される。
具体的には、区分されたビデオ信号301は、イントラ予測のためにイントラピクチャ予測構成要素317に転送される。イントラピクチャ予測構成要素317は、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217と実質的に同様であり得る。区分されたビデオ信号301はまた、復号ピクチャバッファ構成要素323中の参照ブロックに基づいてインター予測のために動き補償構成要素321に転送される。動き補償構成要素321は、動き推定構成要素221および動き補償構成要素219と実質的に同様であり得る。イントラピクチャ予測構成要素317および動き補償構成要素321からの予測ブロックおよび残差ブロックは、残差ブロックの変換および量子化のために変換および量子化構成要素313に転送される。変換および量子化構成要素313は、変換スケーリングおよび量子化構成要素213と実質的に同様であり得る。(関連する制御データとともに)変換された量子化された残差ブロックおよび対応する予測ブロックは、ビットストリームへのコーディングのためにエントロピーコーディング構成要素331に転送される。エントロピーコーディング構成要素331は、ヘッダフォーマット化およびCABAC構成要素231と実質的に同様であり得る。
変換された量子化された残差ブロックおよび/または対応する予測ブロックはまた、動き補償構成要素321が使用するための参照ブロックへの再構成のために変換および量子化構成要素313から逆変換および量子化構成要素329に転送される。逆変換および量子化構成要素329は、スケーリングおよび逆変換構成要素229と実質的に同様であり得る。ループ内フィルタ構成要素325中のループ内フィルタはまた、再構成された参照ブロックに適用される。ループ内フィルタ構成要素325は、フィルタ制御分析構成要素227およびループ内フィルタ構成要素225と実質的に同様であり得る。ループ内フィルタ構成要素325は、ループ内フィルタ構成要素225に関して説明したように複数のフィルタを含み得る。フィルタ処理されたブロックは、次いで、動き補償構成要素321が参照ブロックとして使用するために復号ピクチャバッファ構成要素323中に記憶される。復号ピクチャバッファ構成要素323は、復号ピクチャバッファ構成要素223と実質的に同様であり得る。
本開示は、SVTを改善するための変更に関する。具体的には、本開示は、残差ブロックに適用される変換として使用するために改善されたSVTブロックをもたらす。改善されたSVTブロックは、レガシーSVTブロックよりも大きい。したがって、改善されたSVTブロックは、より少数の候補位置を有し、低減されたシグナリングオーバーヘッドを生じる。さらに、SVTブロックタイプおよび位置のための改善されたシグナリング機構を開示する。たとえば、SVTタイプおよび/または位置は、パラメータセット中のパラメータとしてシグナリングされ得る。別の例では、エンコーダ300は、SVTタイプおよび/または位置をシグナリングするために変換された残差ブロック中の係数を改変することができる。したがって、以下の図で説明する改善されたSVTブロックおよびシグナリング機構は、エンコーダ300中の変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/またはエントロピーコーディング構成要素331の動作を改善する。
図4は、SVTを実装し得る例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200の復号機能を実装するならびに/または方法100のステップ111、113、115、および/もしくは117を実装するために採用され得る。デコーダ400は、たとえば、エンコーダ300からビットストリームを受信し、エンドユーザへの表示のためにビットストリームに基づいて再構成された出力ビデオ信号を生成する。
ビットストリームは、エントロピー復号構成要素433によって受信される。エントロピー復号構成要素433は、CAVLC、CABAC、SBAC、PIPEコーディング、または他のエントロピーコーディング技法などのエントロピー復号方式を実装するように構成される。たとえば、エントロピー復号構成要素433は、ビットストリーム中にコードワードとして符号化された追加のデータを解釈するためにコンテキストを与えるためにヘッダ情報を採用し得る。復号された情報は、一般制御データ、フィルタ制御データ、区分情報、動きデータ、予測データ、および残差ブロックからの量子化された変換係数などのビデオ信号を復号するために任意の所望の情報を含む。量子化された変換係数は、残差ブロックへの再構成のために逆変換および量子化構成要素429に転送される。逆変換および量子化構成要素429は、逆変換および量子化構成要素329と同様であり得る。
再構成された残差ブロックおよび/または予測ブロックは、イントラ予測動作に基づく画像ブロックへの再構成のためにイントラピクチャ予測構成要素417に転送される。イントラピクチャ予測構成要素417は、イントラピクチャ推定構成要素215およびイントラピクチャ予測構成要素217と同様であり得る。具体的には、イントラピクチャ予測構成要素417は、フレーム中の参照ブロックの位置を特定するために予測モードを採用し、イントラ予測された画像ブロックを再構成するために結果に残差ブロックを適用する。再構成されたイントラ予測された画像ブロックならびに/または残差ブロックおよび対応するインター予測データは、ループ内フィルタ構成要素425を介して復号ピクチャバッファ構成要素423に転送され、これは、それぞれ、復号ピクチャバッファ構成要素223およびループ内フィルタ構成要素225と実質的に同様であり得る。ループ内フィルタ構成要素425は、再構成された画像ブロック、残差ブロックおよび/または予測ブロックをフィルタ処理し、そのような情報は、復号ピクチャバッファ構成要素423中に記憶される。復号ピクチャバッファ構成要素423からの再構成された画像ブロックは、インター予測のために動き補償構成要素421に転送される。動き補償構成要素421は、動き推定構成要素221および/または動き補償構成要素219と実質的に同様であり得る。具体的には、動き補償構成要素421は、予測ブロックを生成するために参照ブロックからの動きベクトルを採用し、画像ブロックを再構成するために結果に残差ブロックを適用する。得られた再構成されたブロックはまた、復号ピクチャバッファ構成要素423にループ内フィルタ構成要素425を介して転送され得る。復号ピクチャバッファ構成要素423は、追加の再構成された画像ブロックを記憶し続け、これは、区分情報を介してフレームに再構成され得る。そのようなフレームはまた、シーケンスで配置され得る。シーケンスは、再構成された出力ビデオ信号としてディスプレイに出力される。
本開示は、SVTを改善するための変更に関する。具体的には、本開示は、残差ブロックに適用される変換として使用するために改善されたSVTブロックをもたらす。改善されたSVTブロックは、レガシーSVTブロックよりも大きい。したがって、改善されたSVTブロックは、より少数の候補位置を有し、低減されたシグナリングオーバーヘッドを生じる。さらに、SVTブロックタイプおよび位置のための改善されたシグナリング機構を開示する。たとえば、SVTタイプおよび/または位置は、パラメータセット中のパラメータとしてシグナリングされ得る。別の例では、エンコーダ300は、SVTタイプおよび/または位置をシグナリングするために変換された残差ブロック中の係数を改変することができる。したがって、以下の図で説明する改善されたSVTブロックおよびシグナリング機構は、デコーダ400中のエントロピー復号構成要素433ならびに逆変換および量子化構成要素429の動作を改善する。
次に、方法100、コーデックシステム200、エンコーダ300、および/またはデコーダ400に対する改善について、概して、以下の図に関して与えるさらなる例示的な実装詳細を用いて説明する。上記で説明したように、エンコーダ(たとえば、エンコーダ300)は、ピクセルのブロックを予測情報に変換することによってそのようなブロックを符号化し、これは、予測ブロックと呼ばれることもある。予測ブロックは、対応する参照ブロックを参照してピクセルブロックを符号化する。よく一致した参照ブロックでさえ、符号化されているピクセルブロックとはやや異なり得る。したがって、予測ブロックは単独で、デコーダ(たとえば、デコーダ400)においてピクセルブロックを再構成するのに十分な情報を与えないことがある。ピクセルブロックと予測ブロックによって参照される参照ブロックとの間の差は、残差ブロック中で符号化される。したがって、デコーダは、予測ブロック、残差ブロック、および対応する参照ブロックを採用することによってピクセルブロックを復号することができる。残差ブロックは、残差ブロック中に含まれている値に変換を適用することによってさらに圧縮され得る。これは、変換領域(たとえば、周波数領域)中で残差ブロック値を係数に変換する。残差ブロック全体を変換することは、特に、残差ブロックがゼロ値の有意なグループを含んでいるとき(これは、ピクセルブロックと参照ブロックとの間での良好な一致の場合に発生する)、変換計算機構に関係する理由のために最適な圧縮を提供しないことがある。
したがって、SVT処理は、エンコーダにおいて残差ブロック上に変換ブロックを配置する。変換ブロックは、残差ブロックの対応する部分を変換係数に変換し、残差ブロックの他の部分を未変換のままにする。残差ブロックは、次いで、変換係数と(もしあれば)非ゼロ値との組合せとしてビットストリーム中に符号化され得る。残差ブロックを復号するために、デコーダは、(あらかじめ定義され得る)使用される変換と、変換ブロックのサイズと、残差ブロックに対する変換ブロックの位置とを知っていなければならない。デコーダは、次いで、さらなる復号のために残差ブロック値を再構成するために残差ブロックに対応する逆変換ブロックを適用することができる。逆変換は、変換の反対の数学関数であり、変換によって生じた計算を逆行するために採用され得る。したがって、変換は、データ値を係数に変換し、逆変換は、係数に基づいて元のデータ値を回復することができる。説明の明快さを増加するために、本明細書では、変換/変換ブロックが符号化するときの変換と復号するときの対応する逆変換とを言及するために使用されることに留意されたい。
デコーダに変換ブロックを配置するのをサポートするためにSVT情報をシグナリングすることは、全体的な圧縮/コーディング効率を低減し得る。本開示は、変換ブロックを選択するときにエンコーダにおいてシグナリングオーバーヘッドを低減し、コーディング効率を増加させ、および/またはRDO処理の複雑性を低減するSVT改善を含む。本開示では、エンコーダは、それぞれ図5および図6に示すように垂直SVTまたは水平SVTを選択することに限定される。2つのオプションしか利用可能でないので、シグナリングオーバーヘッドが低減される。たとえば、変換ブロックサイズおよび形状は、どのSVTブロックタイプ、垂直または水平が採用されるのかを決定することによってデコーダにおいて決定され得る。垂直SVTと水平SVTとは、残差ブロックのサイズの半分をカバーし、したがって、(残差ブロックのサイズの1/4しかカバーしない)他のSVT方式よりも多くの残差ブロックを変換する。さらに、垂直SVTは、残差ブロックの高さであり、水平SVTは、残差ブロックの幅である。これは、変換ブロックの位置を対応する垂直SVT候補位置または水平候補位置の小さいグループに限定し、これらの例を、それぞれ、図7および図8に示す。変換ブロックの位置は、どの候補位置が選択されるのかを符号化することによってシグナリングされ得る。具体的には、デコーダは、SVTブロックタイプ、候補位置ステップサイズ、および位置インデックスを決定することによってSVTブロックのための選択された候補位置を決定することができる。SVTブロックタイプおよび位置インデックスがシグナリングされ得、候補位置ステップサイズは、例に応じてあらかじめ定義されるかまたはシグナリングされ得る。本明細書では、SVTブロックタイプ、候補位置ステップサイズ、および/または位置インデックスをSVT情報と呼ぶ。
本開示はまた、SVT情報をシグナリングするための改善されたシグナリング機構を含む。いくつかの例では、SVT情報は、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダなどのパラメータセット中でシグナリングされる。いくつかの例では、SVT情報の一部または全部が、シグナリングオーバーヘッドを低減するために残差ブロック中の係数によってシグナリングされ得る。たとえば、エンコーダは、著しく影響を及ぼされた全体的な画質を伴わずに、残差値/変換係数を調整することができる。したがって、エンコーダは、SVT情報またはそれの部分を示すためにいくつかのあらかじめ定義された位置にある残差値/変換係数を調整することができる。デコーダは、次いで、SVT情報を決定するためにあらかじめ定義された位置にある残差値/変換係数のグループを検討することができる。そのような係数グループの一例を図9に示す。特定の例として、デコーダは、単独でまたはパラメータセット中でシグナリングするのと組み合わせてSVT情報を決定するためにあらかじめ定義されたグループに加算またはモジュロ演算などの計算関数を適用することができる。次に、前の改善の詳細について対応する図に関して以下で説明する。
SVTは、いくつかの例では、インター予測ベースの予測ブロックに対する使用に制限され得ることに留意されたい。他の例では、SVTはまた、イントラ予測ベースの予測ブロックのために使用され得る。いくつかの例では、SVTは、特定のインター予測機構(たとえば、並進モデルベースの動き補償)を使用する予測ブロックに採用されるが、他のインター予測機構(たとえば、アフィンモデルベースの動き補償)を使用する予測ブロックに採用されないことがある。
図5は、例示的な垂直SVT543を示す概略図500である。垂直SVT543は、位置オフセット545に基づいて残差ブロック541上に位置決めされ得るSVTブロック(たとえば、垂直SVTブロック)である。たとえば、垂直SVT543は、方法100のステップ105および/または113において採用される残差ブロック541を変換することができる。さらに、垂直SVT543は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/または逆変換および量子化構成要素429によって採用され得る。垂直SVT543は、それぞれ、ピクセル領域から周波数/変換領域に、その逆も同様に、残差ブロック541中のデータ値を変換するために、例に応じて変換または逆変換を含んでいるブロックである。
残差ブロック541は、予測ブロックと1つまたは複数の対応する参照ブロックとの間の差を表す値の行列を含んでいる。したがって、残差ブロック541と対応する予測ブロックとは、デコーダにおいて画像ブロックを再構成するために採用され得る。エンコーダにおいて、残差ブロック541は、最初に、値の様々な分散を含んでいる。予測ブロックと参照ブロックとの間の一致がより近接するほど、残差ブロック541中に含まれる非ゼロ値がより少なくなる。したがって、異なる残差ブロック541は、様々な位置において様々な数のゼロ値と様々な数の非ゼロ値とを含むことができる。非ゼロ値の位置が変動するので、垂直SVT543は、非ゼロ値の可能な最大数をカバーし、したがって、変換するためにいくつかの候補位置のうちの1つに位置決めされ得る。
エンコーダにおいて、斜めの陰影をもつボックスによって示される垂直SVT543は、残差ブロック541値の一部分を変換係数に変換することによって残差ブロック541を圧縮するために適用され得る。垂直SVT543は、DCT、DST、または他の変換(たとえば、フーリエ関連の変換)などの変換を含む。変換は、異なる周波数および振幅をもつ正弦曲線で表され得る関数/信号である。エンコーダにおいて、変換は、変換によってカバーされる残差ブロック541の値を、変換関数と垂直SVT543によってカバーされた残差ブロック541中の値によって作成される信号との間の差を示す変換係数に変換する。したがって、エンコーダは、値と変換係数との組合せとしてビットストリーム中に残差ブロック541を符号化することができる。具体的には、変換された残差ブロック541は、変換によって生成された係数を含み得、また、変換ブロックによってカバーされる残差ブロック541のエリアの外部に位置決めされた未変換の値を含み得る。デコーダにおいて、残差ブロック541は、値と変換係数との組合せとして受信される。デコーダにおいて、垂直SVT543は、エンコーダにおいて採用される変換に対する逆変換を含んでいる。逆変換は、数値しか含んでいない残差ブロック541を再構成するために変換係数に適用され得る。残差ブロック541は、次いで、ビデオシーケンスにおいて使用するためのピクセルブロックを再構成するために予測ブロックと参照ブロックと併せて採用され得る。
垂直SVT543は、残差ブロック541のエリアの半分をカバーする。これは、(残差ブロックのエリアの1/4をカバーするSVTブロックを採用する)他のSVT方式に対して垂直SVT543によって変換され得る残差ブロック541中の値の数を増加させる。具体的には、残差ブロック541は、幅(w)541aと高さ(h)541bとを含む。垂直SVT543は、変換の幅(w_t)543aと変換の高さ(h_t)543bとを含む。垂直SVT543の変換の高さ543bは、残差ブロック541の高さ541bに等しくなる。垂直SVT543の変換の幅543aは、残差ブロック541の幅541aの1/2である。これにより、垂直SVT543を残差ブロック541に対して異なる候補位置に水平方向にシフトすることが可能になるが、垂直SVT543は、残差ブロック541に対して垂直方向にシフトされないことがある。したがって、垂直SVT543のための候補位置の数は、残差ブロック541の高さ541bではなく残差ブロック541の幅541aと相関している。これは、他のSVT方式に対して垂直SVT543のための可能な候補位置の数を低減する。
また、垂直SVT543は、垂直の観点から1つのロケーションにしか位置決めされ得ないので、垂直座標は、垂直SVT543を位置決めするためにシグナリングされない。具体的には、垂直SVT543は、位置オフセット545によって残差ブロックに対して位置決めされ得る。垂直SVT543のための位置オフセット545は、垂直SVT543の開始位置と残差ブロック541の左側との間の水平距離を示す。
たとえば、垂直SVT543のための候補位置は、候補位置ステップサイズ(CPSS)に従って決定され得る。CPSSを採用すると、候補位置は、CPSSによって指定されたもので(たとえば、垂直SVT543の水平方向で)等しい空間で分離される。候補位置の数は、いくつかの例では、5つ以下に低減され得る。これは、位置情報のオーバーヘッドシグナリングをさらに緩和する。これはまた、RDO処理における最良の変換ブロック位置を決定するときにエンコーダにおける判断複雑性を低減することができる。
候補位置ステップサイズは、残差ブロック541に対する2つの隣接する候補位置間の距離を示す値である。候補位置ステップサイズは、SVTブロックのための可能な候補位置のセットを決定するために採用され得る。位置インデックスは、候補位置のセットから選択されたSVT位置を示すデータ値である。CPSSは、以下でより詳細に説明するように垂直SVT543が採用されるのかまたは水平SVTが採用されるのかに応じて残差ブロック541の幅541aまたは高さ541bに基づいて計算され得る。たとえば、垂直SVT543のためのCPSSは、以下の式1に従って決定され得る。
CPSS=w/M1, 式1
ここで、wは、幅541aであり、M1は、2から8の範囲内にあり得るあらかじめ定義されたステップサイズを表す整数である。より大きいM1値では、より多くの候補位置が可能になる。一例では、M1は8として設定され、これにより、0から4の位置インデックスが可能になる。この例を図7に示す。別の例として、垂直SVT543のためのCPSSは、以下の式2に従って決定され得る。
CPSS=max(w/M1,Th1), 式2
ここで、wは、幅541aであり、M1は、あらかじめ定義されたステップサイズを表す整数であり、Th1は、最大ステップサイズのしきい値を示すあらかじめ定義された整数であり、max()は、含まれた値のうちで最大値を選択する関数である。したがって、垂直SVT543のためのCPSSは、ステップサイズのしきい値最大数を用いた残差ブロック541の幅541aと相関していることがある。特定の例では、M1は、2から8の間の整数(たとえば、8、4、または、2)であり得る。Th1は、2以上の整数であり得る。M1および/もしくはTh1は、エンコーダ/デコーダに知られている固定値であり得、ならびに/またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダなどのビットストリーム中の高レベルシンタックス構造から導出され得る。
CPSSを採用することによって、位置オフセット545は、たとえば、インデックスを採用することによって決定され得る。そのような場合、インデックスは、どの候補位置がエンコーダによって選択されるのかを示すためにシグナリングされ得る。デコーダは、次いで、位置オフセット545を決定するためにインデックスとCPSSとを採用し、適切なロケーションにおいて残差ブロック541に垂直SVT543を適用することができる。
本開示はまた、SVT情報のコーディングのための改善されたシグナリング機構を含む。SVT情報は、SVTタイプを含み得、この場合、垂直SVT543と残差ブロック541に対する変換ブロックの位置とを含み得る。いくつかの例では、そのようなデータの一部または全部は、残差ブロック541中の変換係数を検査することによってデコーダにおいて決定され得る。たとえば、残差ブロック541中の変換係数値中の小さい変化は、最終的な画質に著しく影響を及ぼさないことがある。したがって、エンコーダは、SVT情報をシグナリングするために残差ブロック541中の変換係数値を改変することができる。デコーダは、次いで、SVT情報を決定するために残差ブロック541中の変換係数値を検査することができる。たとえば、位置インデックスおよび/またはCPSSなどの垂直SVT543の位置情報は、残差ブロック541中の変換係数レベルの和から導出され得る。別の例では、SVTタイプ情報は、変換係数の第1のグループ(たとえば、走査順で最初の16個の係数)の和から導出され得、位置情報は、変換係数の第2のグループ(たとえば、残差ブロック541中の残りの係数)の和から導出される。さらに別の例では、候補位置の数は、変換係数情報に従って決定され得、位置情報は、候補位置の数に基づいて復号され得る。
図6は、例示的な水平SVT643を示す概略図600である。水平SVT643は、位置オフセット645に基づいて残差ブロック641上に位置決めされ得るSVTブロック(たとえば、水平SVTブロック)である。たとえば、水平SVT643は、方法100のステップ105および/または113において採用される残差ブロック641を変換することができる。さらに、水平SVT643は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/または逆変換および量子化構成要素429によって採用され得る。水平SVT643は、それぞれ、ピクセル領域から周波数/変換領域に、その逆も同様に、残差ブロック641中のデータ値を変換するために、例に応じて変換または逆変換を含んでいるブロックである。
斜めの陰影をもつボックスによって示される水平SVT643は、垂直SVT543と実質的に同様であるが、異なる次元を含んでいる。たとえば、エンコーダは、非ゼロ値の分散に応じて残差ブロック541/641を変換するために水平SVT643または垂直SVT543を選択することができる。具体的には、残差ブロック641は、幅641aと高さ641bとを含み、そのようなアイテムは、それぞれ、残差ブロック541の幅541aと高さ541bと実質的に同様であり得る。水平SVT643はまた、残差ブロック641のエリアの1/2をカバーする。水平SVT643は、変換の幅(w_t)643aと変換の高さ(h_t)643bとを含む。水平SVT643の変換の高さ643bは、残差ブロック641の高さ641bの1/2である。水平SVT643の変換の幅643aは、残差ブロック641の幅641aに等しくなる。これにより、垂直SVTの水平SVT643は、(垂直SVT543の水平シフトとは対照的に)残差ブロック641に対して異なる候補位置に垂直方向にシフトすることが可能になる。水平SVT643は、残差ブロック641に対して水平方向にシフトされないことがある。したがって、水平SVT643のための候補位置の数は、残差ブロック641の幅641aではなく残差ブロック641の高さ641bと相関している。これは、他のSVT方式に対して水平SVT643のための可能な候補位置の数を低減する。
水平SVT643の場合、位置オフセット645は、水平SVT643の開始位置と残差ブロック641の上面との間の垂直距離を示す。水平SVT643が単一の水平位置にしか位置決めされ得ないので、位置オフセット645は、残差ブロック641に対して水平SVT643を位置決めするのに十分な情報を含んでいる。垂直SVT543と同様に、水平SVT643は、CPSSに基づいて位置決めされ得る。しかしながら、水平SVT643を採用するとき、CPSSは、CPSSによって指定されたように垂直方向に等しい空間で分離される候補位置を示す。CPSSの決定および対応するシグナリングは、垂直SVT543のためのCPSS決定/シグナリングと実質的に同様であり得る。しかしながら、水平SVT643のためのCPSSは、残差ブロック641の高さ641bに応じて決定され得る。
たとえば、水平SVT643のためのCPSSは、以下の式3に従って決定され得る。
CPSS=h/M2, 式3
ここで、hは、高さ541bであり、M2は、2から8の範囲内にあり得るあらかじめ定義されたステップサイズを表す整数である。より大きいM3値では、より多くの候補位置が可能になる。一例では、M3は8として設定され、これにより、0から4の位置インデックスが可能になる。この例を図8に示す。別の例として、水平SVT643のためのCPSSは、以下の式4に従って決定され得る。
CPSS=max(h/M2,Th2), 式4
ここで、hは、高さ541bであり、M2は、あらかじめ定義されたステップサイズを表す整数であり、Th2は、最大ステップサイズのしきい値を示すあらかじめ定義された整数であり、max()は、含まれた値のうちで最大値を選択する関数である。したがって、水平SVT643のためのCPSSは、ステップサイズのしきい値最大数を用いた残差ブロック641の高さ641bと相関していることがある。特定の例では、M2は、2から8の間の整数(たとえば、8、4、または、2)であり得る。Th2は、2以上の整数であり得る。M2および/もしくはTh2は、エンコーダ/デコーダに知られている固定値であり得、ならびに/またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダなどのビットストリーム中の高レベルシンタックス構造から導出され得る。さらに、水平SVT643についてのSVT情報は、垂直SVT543と同様の方法で変換係数によってシグナリングされ得る。
図7A~図7Eは、例示的な垂直SVT候補位置700を示す概略図である。たとえば、垂直SVT候補位置700は、垂直SVT543を実装し得る垂直SVT743によって採用され得る。したがって、候補位置700は、方法100のステップ105および/または113において採用され得る。さらに、候補位置700は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/または逆変換および量子化構成要素429によって採用され得る。
候補位置700は、垂直SVT743が位置オフセット745の変化に基づいて残差ブロック741に対して占有することができる異なる可能な位置を含み、これらは、それぞれ、残差ブロック541および位置オフセット545と同様であり得る。図示の例では、CPSSの計算は、5つの可能な候補位置700を生じる。具体的には、図7Aに、位置オフセット745が0である第1の候補位置(たとえば、位置インデックス1)を示し、図7Bに、位置オフセット745が残差ブロック741の幅の1/8である第2の候補位置(たとえば、位置インデックス2)を示し、図7Cに、位置オフセット745が残差ブロック741の幅の1/4である第3の候補位置(たとえば、位置インデックス3)を示し、図7Dに、位置オフセット745が残差ブロック741の幅の3/8である第4の候補位置(たとえば、位置インデックス4)を示し、図7Eに、位置オフセット745が残差ブロック741の幅の1/2である第5の候補位置(たとえば、位置インデックス5)を示す。したがって、垂直SVT743は、垂直SVT743が(たとえば、水平SVTの代わりに)採用されると決定することと、(たとえば、この例では、5つの候補位置700を生じる)CPSSを決定することと、候補位置700のうちのどれが採用されるのかを示すために位置インデックスを決定することとを行うことによって特定の残差ブロック741上で位置決めされ得る。採用されるSVTブロックの識別情報、CPSS/候補の位置、および/または位置インデックスは、SVT情報としてエンコーダとデコーダとの間でシグナリングされ得る。SVT情報は、パラメータセット中でシグナリングされるか、または残差ブロック741の係数中に符号化され得る。シグナリング機構について、以下でさらに詳細に説明する。
図8A~図8Eは、例示的な水平SVT候補位置800を示す概略図である。たとえば、水平SVT候補位置800は、水平SVT643を実装し得る水平SVT843によって採用され得る。したがって、候補位置800は、方法100のステップ105および/または113において採用され得る。さらに、候補位置800は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/または逆変換および量子化構成要素429によって採用され得る。
候補位置800は、水平SVT843が位置オフセット845の変化に基づいて残差ブロック841に対して占有することができる異なる可能な位置を含み、これらは、それぞれ、残差ブロック641および位置オフセット645と同様であり得る。図示の例では、CPSSの計算は、5つの可能な候補位置800を生じる。具体的には、図8Aに、位置オフセット845が0である第1の候補位置(たとえば、位置インデックス1)を示し、図8Bに、位置オフセット845が残差ブロック841の幅の1/8である第2の候補位置(たとえば、位置インデックス2)を示し、図8Cに、位置オフセット845が残差ブロック841の幅の1/4である第3の候補位置(たとえば、位置インデックス3)を示し、図8Dに、位置オフセット845が残差ブロック841の幅の3/8である第4の候補位置(たとえば、位置インデックス4)を示し、図8Eに、位置オフセット845が残差ブロック841の幅の1/2である第5の候補位置(たとえば、位置インデックス5)を示す。したがって、水平SVT843は、水平SVT843が(たとえば、垂直SVTの代わりに)採用されると決定することと、(たとえば、この例では、5つの候補位置800を生じる)CPSSを決定することと、候補位置800のうちのどれが採用されるのかを示すために位置インデックスを決定することとを行うことによって特定の残差ブロック841上で位置決めされ得る。採用されるSVTブロックの識別情報、CPSS/候補の位置、および/または位置インデックスは、SVT情報としてエンコーダとデコーダとの間でシグナリングされ得る。SVT情報は、パラメータセット中でシグナリングされるか、または残差ブロック841の係数中に符号化され得る。シグナリング機構について、以下でさらに詳細に説明する。
図9は、例示的な変換係数グループ900を示す概略図である。たとえば、変換係数グループ900は、それぞれ、垂直SVT543または水平SVT643を実装し得る垂直SVT743または水平SVT843についてのSVT情報をシグナリングするために採用され得る。したがって、変換係数グループ900は、ステップ105に応答して生成され得、方法100のステップ113において使用するためのSVT情報をシグナリングすることができる。さらに、変換係数グループ900は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/または逆変換および量子化構成要素429が使用するためのSVT情報を示すために採用され得る。
変換係数グループ900は、例に応じて垂直SVT543、垂直SVT743、水平SVT643、および/または水平SVT843などの変換ブロック943によって変換されている変換係数を残差ブロック中に含む。変換係数グループ900は、水平の陰影をもつボックスによって示される第1の変換係数グループ947と垂直の陰影をもつボックスによって示される第2の変換係数グループ949とを含む。第1の変換係数グループ947は、あらかじめ定義され得る第1の変換グループの幅(w_t1)と第1の変換グループの高さ(h_t1)とを含む。第2の変換係数グループ949は、同じくあらかじめ定義され得る第2の変換グループの幅(w_t2)と第2の変換グループの高さ(h_t2)とを含む。そのような幅と高さとは、例に応じて変動することができる。さらに、いくつかの例は、SVT情報をシグナリングするために第1の変換係数グループ947と第2の変換係数グループ949との両方を採用するが、いくつかの例は、SVT情報をシグナリングするために単一の変換係数グループ947または949を採用する。また、いくつかのコーディング方式では、ビデオフレームは、Y成分として知られるルーマ成分とU成分およびV成分として知られるクロマ成分とに分割されることに留意されたい。したがって、別個の残差ブロックがあり得、したがって、Y成分、U成分、および/またはV成分のために変換係数の異なるグループがあり得る。
一例では、SVT情報のうちの少なくともいくつかは、Y成分のみの変換ブロック943中の変換係数の和を決定することによって決定され得る。一例では、SVT情報のうちの少なくともいくつかは、Y成分、U成分、およびV成分の対応する変換ブロック943中の変換係数の和を決定することによって決定され得る。別の例では、SVT情報のうちの少なくともいくつかは、係数走査順で(たとえば、ジグザグ走査を使用して)Y成分の変換ブロック943中の最初のN個の変換係数の和を決定することによって決定され得、ここで、Nは、16または32などの整数であり得る。
別の例では、SVT情報のうちの少なくともいくつかは、変換ブロック943の左上の部分にサイズw_t1×h_t1の領域をもつ第1の変換係数グループ947中の係数の和を決定することによって決定され得る。この位置は、より低い周波数変換係数に対応し得る。一例では、w_t1とh_t1とは共に4として設定される。別の例では、w_t1とh_t1とは、以下の式5~6に従って設定される。
w_t1=max(w/8,4), 式5
h_t1=max(h/8,4), 式6
ここで、w_t1とh_t1とは、第1の変換係数グループ947のそれぞれ幅および高さであり、hとwとは、残差ブロックのそれぞれ高さおよび幅であり、max()は、含まれた値のうちで最大値を選択する関数である。たとえば、第1の変換係数グループ947の偶数和は、垂直SVTが採用されることを示すことができ、第1の変換係数グループ947の奇数和は、水平SVTが採用されることを示すことができ、またその逆も同様である。
別の例では、SVT情報のうちの少なくともいくつかは、第2の変換係数グループ949の和を決定することによって決定され得る。たとえば、位置インデックスは、第2の変換係数グループ949中の変換係数の和に基づいて導出され得る。第2の変換係数グループ949は、第1の変換係数グループ947を含まない、残差ブロック941の左上隅のサイズw_t2×h_t2の領域中にあり得る。一例では、w_t2=w_tであり、h_t2=h_tであり、したがって、すべての係数は、第1の変換係数グループ947以外は第2の変換係数グループ949に属する。別の例では、w_t2とh_t2とは、以下の式7~8に従って決定される。
w_t2=max(w_t/2,w_t1), 式7
h_t2=max(h_t/2,h_t1), 式8
ここで、w_t2とh_t2とは、第2の変換係数グループ949のそれぞれ幅および高さであり、w_t1とh_t1とは、第1の変換係数グループ947のそれぞれ幅および高さであり、w_tとh_tとは、変換ブロック943のそれぞれ幅および高さである。
一例では、第1の変換係数グループ947は、SVT位置インデックスを決定するために採用され得る。別の例では、第1の変換係数グループ947は、SVTタイプを決定するために採用され得、第2の変換係数グループ949は、SVT位置インデックスを決定するために採用され得、またその逆も同様である。係数走査順は、変換ブロック943の幅と高さとに基づいて導出され得る。さらに、SVT位置のための変換係数をパースするとき、第1の変換係数グループ947によってカバーされる位置の係数は、スキップされ、したがって、第2の変換係数グループ947に割り当てられ得る。
たとえば、SVTブロックのための位置インデックスは、変換係数グループ947または949中の変換係数の和とSVTブロックに関連する候補位置の数とに基づいて決定され得る。この例では、SVTブロックタイプは、パラメータセット中でシグナリングされ得、候補位置の数は、あらかじめ定義されているか、またはパラメータセット中でシグナリングされ得るCPSSに基づいて決定され得る。位置インデックスは、以下の式9に従って決定され得る。
P=St%Nt, 式9
ここで、Pは、位置インデックスであり、Stは、変換係数グループ947または949中の変換係数の和であり、Ntは、SVTブロックのための候補位置の数であり、%は、NtでのStの除算の後に余りを戻すモジュロ演算を示す。
特定の例として、式1~4のパラメータM1およびM2は、4として設定され得、これは、水平SVTまたは垂直SVTのための3つの候補位置を生じる。これは、式9からのNtを水平SVTまたは垂直SVTのための3に設定する。位置インデックスは、次いで、Stを3で除算したものの余りとして計算される。別の例では、パラメータM1およびM2は、2として設定され、これは、水平SVTまたは垂直SVTのための2つの候補位置を生じる。これは、式9からのNtを水平SVTまたは垂直SVTのための2に設定する。位置インデックスは、次いで、Stを2で除算したものの余りとして計算される。
別の例では、位置インデックスは、変換係数グループ947または949からの変換係数の和によって部分的に決定され得る。パラメータM1およびM2は、8に設定され得、SVTの5つの候補位置を生じる。Stモジュロ3が0に等しくなるとき、位置インデックスは、0であると決定され、Stモジュロ3が1に等しくなるとき、位置インデックスは、4であると決定される。場合によっては、位置インデックス値は、1から3の間にあるが、未決定である。次いで、3つの可能な値を有するシンタックス要素は、位置インデックスが1に等しくなるのか、2に等しくなるのか、または3に等しくなるのかを決定するためにパラメータセットからパースされる(たとえば、シンタックス要素値が、それぞれ、0、1、または2である場合、Pは1、2、または3として設定される)。
いくつかの例では、デコーダは、SVT情報のいずれかが係数の和中に隠されているのかを決定するために条件検査を採用し得る。たとえば、変換係数の数がしきい値(たとえば、4または6)よりも小さいか、または第1の係数と最後の係数との間の距離がしきい値(たとえば、5または6)よりも小さいとき、位置インデックスは係数の和に依拠しない。この場合、位置インデックスは、明示的にシグナリングされ、デコーダは、SVT情報について変換係数グループ947または949を調べない。
図10は、SVTサイズおよび位置を決定する例示的な方法1000のフローチャートである。たとえば、方法1000は、SVT情報をシグナリングするために変換係数グループ900を採用し得る。さらに、方法1000は、残差ブロックを変換するために垂直SVT543および/もしくは743または水平SVT643および/もしくは843を採用し得る。したがって、方法1000は、方法100のステップ105および/または113の一部として採用され得る。さらに、方法1000は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/または逆変換および量子化構成要素429によって採用され得る。
ステップ1001において、ビットストリームは、デコーダ400などのデコーダにおいて受信される。ビットストリームは、復号のためのビデオデータの少なくとも1つのピクチャ/フレームを含んでいる。ピクチャ/フレームは、複数の矩形画像領域に分割される。各領域は、CTUに対応する。CTUは、ビットストリーム中に含まれているブロック区分情報に従ってHEVCにおけるコーディングユニットなどの複数のブロックに区分される。ブロックのコーディング情報は、コーディング情報に基づくブロックのピクセルの再構成のためにビットストリームからパースされる。一例では、ブロックは、コーディングユニットを指すことがあり、ここで、コーディングユニットは、1つの予測ブロックと1つの残差ブロックとを含み得る。予測ブロックは、コーディングユニットの予測サンプルを含み得る。残差ブロックは、コーディングユニットの残差サンプルを含み得る。予測ブロックは、残差ブロックと同じサイズであり得る。別の例では、コーディングユニットは、2つの予測ブロックと1つの残差ブロックとを含み得る。この場合、各予測ブロックは、コーディングユニットの予測サンプルの一部分を含み得、一方、残差ブロックは、コーディングユニットのための残差サンプルを含んでいる。別の例では、コーディングユニットは、2つの予測ブロックと4つの残差ブロックとを含み得る。HEVCにおける残差クアッドツリー(RQT)などのコーディングユニット中の残差ブロックの区分パターンはビットストリーム中でシグナリングされ得る。いくつかの例では、ブロックは、画像サンプル(またはピクセル)のルーマ/Y成分のみを含み得る。他の例では、ブロックは、画像サンプル/ピクセルのルーマおよびクロマ成分(Y成分、U成分、およびV成分)を含み得る。したがって、ビットストリームは、符号化されたピクセルブロックを表す予測ブロックを含む。ビットストリームはまた、SVTによって変換された係数を伴う残差ブロックを含む。
ステップ1003において、デコーダは、他の変換機構とは反対にSVTが使用されるかのどうかを決定する。たとえば、デコーダは、シンタックス要素に従ってSVTの使用を決定し得る。SVTを使用することが許可された残差ブロックの場合、フラグ(すなわち、SVTフラグ(svt_flag))がビットストリームからパースされ得る。フラグは、残差ブロックが残差ブロックと同じサイズの変換ブロックを使用してコーディングされるのかどうかを示すか(たとえば、svt_flag=0)、または残差ブロックが残差ブロックよりも小さいサイズの変換ブロックを用いてコーディングされるのかどうかを示す(たとえば、svt_flag=1)。この検査は、残差ブロックがルーマ成分(または、いくつかの例では、クロマ成分)の非ゼロの変換係数を有するときに採用される。たとえば、ルーマ/クロマ成分に対応するコード化ブロックフラグ(cbf)は、ブロックが対応する成分の非ゼロの変換係数を有するのかどうかを示すために採用され得る。さらに、ルートコード化ブロックフラグ(ルートcbf)は、ブロックが任意の色成分の非ゼロの変換係数を有するのかどうかを示すために採用され得る。一例では、残差ブロックは、対応するブロックがインター予測を使用して予測され、ブロックの幅またはブロックの高さのいずれかが事前に決定された範囲[a1,a2]に入るときにSVTを使用することが許可され、ここで、a1=16およびa2=64であるか、a1=8およびa2=64であるか、またはa1=16およびa2=128である。a1およびa2の値は、固定値であり得る。値はまた、SPS、PPS、またはスライスヘッダから導出され得る。ブロックがSVTを使用しない場合、変換ブロックサイズは、残差ブロックと同じサイズとして設定される。そうでない場合、方法1000は、ステップ1005に進む。
SVTが採用されると方法1000が決定すると、ステップ1005において、残差ブロック中の係数を変換するために採用されるSVTブロックのタイプが決定される。上記のように、使用されるSVTブロックのタイプを決定するために、多くの異なる機構が採用され得る。SVTブロックのタイプは、垂直SVTと水平SVTとからなるグループから選択される。垂直SVTは、残差ブロックの高さに等しい高さと、残差ブロックの幅の1/2に等しい幅とを含む。水平SVTは、残差ブロックの高さの1/2に等しい高さを含み、残差ブロックの幅に等しい幅を含む。
一例では、SVTブロックのタイプは、シンタックス要素(たとえば、パラメータセット中のパラメータ)に従って決定され得る。変換ブロックサイズが、次いで、SVTタイプに従って導出され得る。たとえば、残差ブロックのための許可されたSVTタイプは、残差ブロックの幅と高さとに基づいて決定され得る。垂直SVTは、残差ブロックの幅が範囲[a1,a2]中にあるときに許可され得、ここで、a1とa2とは、あらかじめ定義された整数である。水平SVTは、残差ブロックの幅が範囲[a1,a2]]中にあるときに許可され得、ここで、a1とa2とは、あらかじめ定義された整数である。いくつかの例では、SVTは、Y成分のためにのみ使用され得る。他の例では、SVTは、すべての3つの成分のために使用され得る。SVTがY成分のためにのみ使用されるとき、Y成分の残差ブロックは、SVTによって変換され、U成分とV成分との残差ブロックは、対応する残差ブロックのサイズに従って変換される。垂直SVTと水平SVTとの両方が許可されるとき、SVTタイプフラグ(svt_type_flag)は、ビットストリームからパースされ得る。SVTタイプフラグは、残差ブロックのために垂直SVTが使用されるのか(たとえば、svt_type_flag=0)、または水平SVTが使用されるのか(たとえば、svt_type_flag=1)を示し得る。変換ブロックサイズは、次いで、シグナリングされたSVTタイプに従って設定される。たとえば、垂直SVTについては、変換の幅は、残差ブロックの幅の半分に設定され、変換の高さは、残差ブロックの高さに設定され、水平SVTについては、変換の幅は、残差ブロックの幅に設定され、変換の高さは、残差ブロックの高さの半分に設定される。垂直SVTのみが許可されるか、または水平SVTのみが許可されるとき、svt_type_flagはビットストリームからパースされないことがあり、変換ブロックサイズは、許可されたSVTタイプに従って設定される。
別の例では、SVTブロックのタイプは、図9に関して説明したように係数の第1のグループに基づいて決定され得る。たとえば、SVTブロックのタイプは、(Y成分、またはY成分と、U成分と、V成分とについて)残差ブロック中の係数に対して算術演算を適用することによって決定され得る。そのような算術演算は、加算演算、モジュロ演算、除算演算、またはそれらの組合せを含み得る。算術演算は、いくつかの例では、残差ブロック中の係数のすべてに適用され得る。他の例では、算術演算は、残差ブロック中の最初のX個の係数に適用され得、ここで、Xは、あらかじめ定義された整数である。さらに他の例では、算術演算は、(たとえば、残差ブロックの左上隅中の)残差ブロックのあらかじめ定義されたエリア内の係数に適用され得る。採用される機構にかかわらず、方法1000は、SVTブロックタイプおよび対応するサイズを決定するとステップ1007に進む。
SVTブロックのタイプが決定されると、残差ブロックに対するSVTブロックの位置がステップ1007において決定される。SVTブロックの位置は、候補位置ステップサイズ/候補位置の数とSVTブロックのための位置インデックスとを決定することによって決定され得る。これは、いくつかの機構によって達成され得る。
一例では、位置インデックス(P)は、ビットストリームからパースされる。位置インデックスPは、切り捨てられた単項コードを使用して1つまたは複数のビンに2値化され得る。たとえば、P値が0から4の範囲内にあるとき、P値0、4、2、3および1は、それぞれ、0、01、001、0001および0000として2値化される。P値が0から1の範囲内にあるとき、P値0および1は、それぞれ、0および1として2値化される。残差ブロックの左上隅に対する変換ブロックの左上隅の位置オフセット(Z)は、以下の式10に従って決定され得る。
Z=s×P, 式10
ここで、sは、CPSSであり、Pは、位置インデックスであり、Zは位置オフセットである。Pの値は、垂直SVTについては、
の範囲内の値であり得る。Pの値は、水平SVTについては、
の範囲内の値であり得る。具体的には、(0,0)が残差ブロックの左上隅の座標を表すとき、変換ブロックの左上隅の座標は垂直SVTについては(Z,0)であるか、または水平SVTについては(0,Z)である。
CPSSは、上記の式1~4のいずれかに従って計算され得る。たとえば、そのような式中では、Th1とTh2とは、4として設定され、M1とM2とは8として設定され得、これは、SVTタイプと残差ブロックの幅および高さとに応じて候補位置700および800を生じる。したがって、異なる残差ブロックサイズは、異なる数の候補位置を有し得る。たとえば、残差ブロックの幅が垂直SVTについて8であるとき、垂直SVTについて(たとえば、図7Aおよび図7Eに示すように)2つの候補位置700が利用可能である。さらに、残差ブロックの幅が垂直SVTについて16であるとき、(たとえば、図7A、図7C、および図7Eに示すように)3つの候補位置700が利用可能である。さらに、残差ブロックの幅が垂直SVTについて16よりも大きいとき、5つの候補位置700が利用可能である。残差ブロックの高さを変化させるときに、同じ手法が水平SVTに適用される。
この機構のさらなる特定の例として、式1および3が採用され得、ここで、M1とM2とは、4に設定され、これは、3つの許容可能な候補位置を生じる。したがって、候補位置ステップサイズは、残差ブロックの幅を所定の整数M1で除算することによって垂直SVTタイプについて決定されるか、または残差ブロックの高さを所定の整数M2で除算することによって水平SVTタイプについて決定され得る。特定の例として、M1とM2とは、2に設定され得、これは、2つの許容可能な候補位置を生じる。
別の例では、式2および4が採用され得る。したがって、候補位置ステップサイズは、最小ステップサイズTh1と残差ブロックの幅をM1で除算した結果とのうちで最大値を選択することによって垂直SVTについて決定され得る。さらに、候補位置ステップサイズは、最小ステップサイズTh2と残差ブロックの高さをM2で除算した結果とのうちで最大値を選択することによって水平SVTについて決定され得る。場合によっては、所定の整数M1および/またはM2は、残差ブロックの幅および/または高さに基づいて設定され得る。特定の例として、Th1とTh2とは、2に設定され得、M1は、残差ブロックの幅が残差ブロックの高さ以上である場合は8として設定され得るか、または残差ブロックの幅が残差ブロックの高さよりも小さい場合は4として設定される。また、M2は、残差ブロックの高さが残差ブロックの幅以上である場合は8として設定されるか、または残差ブロックの高さが残差ブロックの幅よりも小さい場合は4として設定され得る。この場合、垂直SVTまたは水平SVTのための候補位置の数は、残差ブロックのアスペクト比にさらに依存し得る。別の例では、CPSSは、式2および4に従って計算され、ここで、M1、M2、Th1およびTh2の値は、SPS、PPS、スライスヘッダなどのビットストリーム中の高レベルシンタックス構造から導出される。M1とM2とは、シンタックス要素からパースされた同じ値を共有し得、Th1とTh2とは、別のシンタックス要素からパースされた同じ値を共有し得る。したがって、CPSSは、ビットストリームを介してあらかじめ定義されるかまたはシグナリングされ得る。SVTブロックの位置は、次いで、候補位置ステップサイズと位置インデックスとを乗算することによって決定される。また、位置インデックスがシンタックスパラメータによってシグナリングされるとき、位置インデックスは、最大の可能な値が候補位置の数から1を減じたものである状態で候補位置の数に基づいて切り捨てられた単項コードを用いて復号され得ることに留意されたい。
別の例では、SVTの位置インデックスは、変換係数の分散に基づいて導出される。たとえば、位置インデックスは、残差ブロック中の係数に対して算術演算を適用することによって決定され得る。そのような算術演算は、加算演算、モジュロ演算、除算演算、またはそれらの組合せを含むことができる。たとえば、位置インデックスは、図9に関して説明したように変換グループ900のうちの1つなどの変換係数グループに演算を適用することによって決定され得る。位置インデックスは、残差ブロック中のすべての係数、第1の変換グループ中の係数、および/または第2の変換グループ中の係数について考えることによって決定され得、ここで、第1の変換グループは、SVTタイプを示す。別の例では、SVTを使用する残差ブロックのための候補位置の数は、変換係数の分散に基づいて(たとえば、上記の位置インデックスを決定することに関して説明したように係数グループに算術演算を適用することによって)導出される。
上記の機構の様々な組合せも採用され得る。たとえば、位置インデックスは、係数の数がしきい値以下であるときにビットストリームから取得され得、位置インデックスは、係数の数がしきい値よりも大きいときに係数に算術演算を適用することによって決定され得る。別の例として、候補位置ステップサイズは、非ゼロ係数の数または位置に基づいて決定される。たとえば、非ゼロの変換係数の数(Nnz)は、候補位置の数を決定するために使用され得る。Nnzがしきい値(たとえば、4、5、または8)よりも小さい場合、候補位置ステップサイズは、垂直SVTについては残差ブロックの幅を4で除算したものとして設定され、水平SVTについては残差ブロックの高さを4で除算したものとして設定され得、これは、3つの候補位置を生じ得る。そうでない場合、候補位置ステップサイズは、垂直SVTについては残差ブロックの幅を8で除算したものとして設定され、水平SVTについては残差ブロックの高さを8で除算したものとして設定され得、これは、5つの候補位置を生じ得る。別の例では、最後の非ゼロの変換係数が変換ブロック中の左上の4×4のエリア内にある場合、候補位置ステップサイズは、垂直SVTについては残差ブロックの幅を4で除算したものとして設定され、水平SVTについては、残差ブロックの高さを4で除算したものとして設定され得る。これは、3つの候補位置を生じる。そうでない場合、候補位置ステップサイズは、垂直SVTについては残差ブロックの幅を8で除算したものとして設定され、水平SVTについては残差ブロックの高さを8で除算したものとして設定され得る。これは、5つの候補位置を生じる。
SVTタイプとSVT位置とを決定するために採用される機構にかかわらず、方法1000は、ステップ1009に進む。ステップ1009において、残差ブロックからの係数は、たとえば、SVTブロックタイプに基づいてパースされる。パーシング処理は、MPEG-4 Part 10、アドバンストビデオコーディング(MPEG-4 AVC)としても知られるHEVCまたは標準H.264に記載されている変換係数のパーシングを採用し得る。変換係数は、ランレングスコーディングを使用してコーディングされ得る。変換係数はまた、変換グループのセットとしてコーディングされ得る。ステップ1009のパースすることは、係数および残差ブロックからの他のデータ(ならびに予測ブロックからのデータおよび/または他の関連データ)を読み取ることと、さらなる処理のためにメモリ中にそのようなデータを記憶することとを含む。ステップ1009のパースすることが、例に応じてステップ1003、1005、および/または1007より前に行われ得ることに留意されたい。
ステップ1011において、逆変換は、再構成された残差ブロックを作成するためにSVTブロックタイプおよび位置に基づいて係数に適用される。逆変換は、デコーダによって知られていることがあり、および/またはビットストリーム中でシグナリングされ得る。SVTブロックタイプおよび位置は、残差ブロック中の情報に対する変換を位置決めするのに十分な情報を与える。たとえば、サイズの逆量子化および逆変換w_t×h_tは、残差サンプルを回復するために変換係数に適用される。(たとえば、エンコーダによってSVTの外部に位置決めされた残差サンプルを含まない)回復された残差サンプルのサイズは、w_t×h_tであり得、これは、変換ブロックサイズと同じサイズである。逆変換は、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)であり得る。残差サンプルは、変換ブロック位置に従って残差ブロック内の対応する領域に割り当てられる。いくつかの例では、残差ブロック内の残りのサンプルは、0になるように設定され得る。たとえば、垂直SVTが使用され、候補位置の数が5であり、位置インデックスが4である場合、再構成された残差サンプルは、図7E中の影つき領域に割り当てられ得、影つき領域の外部のサイズ(w/2)×hの領域は、場合によっては、残差情報を含まないことがある。
ステップ1013において、再構成された残差ブロックは、コーディングユニット中に再構成されたサンプルを生成するために予測ブロックを用いて構成され得る。デブロッキングフィルタおよび/またはSAOフィルタなどのフィルタ処理はまた、再構成されたサンプルに対して適用され得る。したがって、再構成された残差ブロックは、ビデオブロックを再構成するために予測ブロックに適用される。再構成されたビデオブロックは、フレーム/ピクチャを作成するために他の再構成されたビデオブロックを用いて位置決めされる。フレーム/ピクチャは、表示のためにビデオシーケンスを再構成するためにシーケンス中に配置される。したがって、ビデオシーケンスは、再構成されたビデオブロックを含むビデオフレームを含む。
前の機構の結果として、SVTブロックのための候補位置が、残差ブロックの幅と高さとに関係するステップサイズによって決定され得る。候補位置は、いくつかの例では、5つ以下の位置に限定され得、これは、他のSVT方式と比較して変換ブロック情報を低減する。これは、シグナリングオーバーヘッドと残差コーディング効率との間のより良いバランスを達成する。さらに、SVT情報は、他のSVT機構とは別様にコーディングされる。たとえば、SVTコーディング情報は、SVT使用情報、SVTタイプ情報、およびSVT位置情報として編成され、これは、それぞれ、SVTが使用されるのかどうか、使用されるSVTのタイプ、およびSVTブロックの位置を示す。さらに、SVT位置情報は、残差ブロックの複数の変換係数の和に基づいて導出され得る。また、SVTタイプ情報は、残差ブロックの複数の変換係数の和に基づいて導出され得る。
図11は、本開示の一実施形態による例示的なビデオコーディングデバイス1100の概略図である。ビデオコーディングデバイス1100は、本明細書で説明する開示する例/実施形態を実装するのに好適である。ビデオコーディングデバイス1100は、ダウンストリームポート1120、アップストリームポート1150、ならびに/またはネットワークを介してアップストリームおよび/もしくはダウンストリームにデータを通信するための送信機および/もしくは受信機を含むトランシーバユニット(Tx/Rx)1110を備える。ビデオコーディングデバイス1100はまた、データを処理するために論理ユニットおよび/または中央処理ユニット(CPU)を含むプロセッサ1130とデータを格納するためのメモリ1132とを含む。ビデオコーディングデバイス1100はまた、光またはワイヤレス通信ネットワークを介したデータの通信のためのアップストリームポート1150および/またはダウンストリームポート1120に結合された光/電気(OE)構成要素、電気/光(EO)構成要素、および/またはワイヤレス通信構成要素を備え得る。ビデオコーディングデバイス1100はまた、ユーザとの間でデータを通信するための入力および/または出力(I/O)デバイス1160を含み得る。I/Oデバイス1160は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカなどの出力デバイスを含み得る。I/Oデバイス1160はまた、キーボード、マウス、トラックボールなどの入力デバイス、および/または、そのような出力デバイスと対話するための対応するインターフェースを含み得る。
プロセッサ1130は、ハードウェアおよびソフトウェアによって実装される。プロセッサ1130は、1つまたは複数のCPUチップ、(たとえば、マルチコアプロセッサとしての)コア、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実装され得る。プロセッサ1130は、ダウンストリームポート1120、Tx/Rx1110、アップストリームポート1150、およびメモリ1132と通信している。プロセッサ1130は、コーディングモジュール1114を備える。コーディングモジュール1114は、図600の垂直SVT候補位置における垂直SVT543、水平SVT候補位置700における水平SVT643、変換係数グループ900、ならびに本明細書で説明する任意の他の方法/機構などの改善されたSVTを採用する方法100および/または1000などの上記で説明した開示する実施形態を実装する。さらに、コーディングモジュール1114は、コーデックシステム200、エンコーダ300、および/またはデコーダ400を実装し得る。したがって、コーディングモジュール1114は、SVTタイプ、候補位置ステップサイズ、およびSVTブロックのための位置インデックスを決定および/またはシグナリングするために採用され得る。そのような情報は、パラメータセット中で、および/または残差ブロック中の1つもしくは複数の変換係数グループに対して演算を実行することによって決定/シグナリングされ得る。コーディングモジュール1114は、次いで、SVTタイプと、候補位置ステップサイズと、位置インデックスとを採用し、残差ブロック上のSVTブロックを位置決めし、逆変換を適用し、再構成された残差ブロックを作成し、残差ブロックと予測ブロックとからピクセルブロックを再構成し、再構成されたピクセルブロックに基づいて表示のためのフレームを生成することができる。したがって、コーディングモジュール1114の包含は、SVTブロックのための候補位置の数を低減すること、したがって、SVTに関連する対応するシグナリングオーバーヘッドとRDOの計算複雑性を低減することによってビデオコーディングデバイス1100の機能に実質的な改善を与える。さらに、コーディングモジュール1114は、ビデオコーディングデバイス1100の異なる状態への変換をもたらす。あるいは、コーディングモジュール1114は、メモリ1132中に記憶され、プロセッサ1130によって実行される命令として(たとえば、非一時的媒体上に記憶されたコンピュータプログラム製品として)実装され得る。
メモリ1132は、ディスク、テープドライブ、ソリッドステートドライブ、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、3値連想メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの1つまたは複数のメモリタイプを備える。メモリ1132は、そのようなプログラムが実行のために選択されたときにプログラムを記憶することと、プログラムの実行中に読み取られる命令とデータとを記憶することとを行うためにオーバーフローデータストレージデバイスとして使用され得る。
図12は、SVTサイズおよび位置を決定するためのデバイス1200の一実施形態である。たとえば、デバイス1200は、方法1000を実行するために採用され得、したがって、SVT情報をシグナリングするために変換係数グループ900を採用し得る。さらに、デバイス1200は、残差ブロックを変換するために垂直SVT543および/もしくは743または水平SVT643および/もしくは843を採用し得る。したがって、デバイス1200は、方法100のステップ105および/または113の一部を実行するために採用され得る。さらに、デバイス1200は、変換スケーリングおよび量子化構成要素213、スケーリングおよび逆変換構成要素229、変換および量子化構成要素313、逆変換および量子化構成要素329、ならびに/または逆変換および量子化構成要素429によって採用され得る。
デバイス1200は、予測ブロックと、SVTによって変換された係数を伴う残差ブロックとを含むビットストリームを受信するように構成された受信機1201を含む。デバイス1200は、さらに、残差ブロック中の係数を変換するために採用されるSVTブロックのタイプを決定するように構成されたタイプ決定モジュール1203を備える。デバイス1200は、さらに、候補位置ステップサイズとSVTブロックのための位置インデックスとを決定することによって残差ブロックに対するSVTブロックの位置を決定するように構成された位置決定モジュール1205を備える。デバイス1200は、さらに、SVTブロックタイプおよび位置に基づいて係数に逆変換を適用して、再構成された残差ブロックを作成するように構成された逆変換適用モジュール1207を備える。デバイス1200は、さらに、予測ブロックに再構成された残差ブロックを適用して、ビデオブロックを再構成するように構成された残差適用モジュール1207を備える。デバイス1200は、さらに、表示のためにビデオシーケンスを再構成することであって、ビデオシーケンスは、再構成されたビデオブロックを含むビデオフレームを含む、再構成することを行うように構成された再構成モジュール1211を備える。
第1の構成要素は、第1の構成要素と第2の構成要素との間に線、トレース、または別の媒体を除いて介在する構成要素がないときに第2の構成要素に直接結合される。第1の構成要素は、第1の構成要素と第2の構成要素との間に線、トレース、または別の媒体以外の介在する構成要素があるときに第2の構成要素に間接的に結合される。「結合される」という用語およびそれの変形形態は、直接結合されることと間接的に結合されることとの両方を含む。「約」という用語の使用は、特に明記しない限り後続の数の±10%を含む範囲を意味する。
いくつかの実施形態が本開示において与えられているが、開示するシステムおよび方法が、本開示の範囲または趣旨から逸脱することなく多くの他の特定の形態で実施されることがあることが理解され得る。本例は限定ではなく例と見なすべきであり、本明細書において与えた詳細に限定するものではない。たとえば、様々な要素または構成要素が、別のシステムと組み合わされ得るかもしくは統合され得、またはいくつかの特徴は、省略され得るか、もしくは実装されないことがある。
さらに、様々な実施形態で説明し、図示した技法、システム、サブシステム、および方法は別々にまたは別個に、本開示の範囲から逸脱することなく他のシステム、構成要素、技法、または方法と組み合わされ得るか、または統合され得る。変更、置換、および改変の他の例が、当業者によって確認可能であり、本明細書で開示する趣旨および範囲から逸脱することなく行われ得る。