以下、添付された図面を参照して、本発明の実施形態の構成とその作用を説明し、図面によって説明される本発明の構成と作用は、一つの実施形態として説明されるものであり、これによって、本発明の技術的思想とその核心構成及び作用が制限されることはない。
さらに、本発明で使用される用語は、できる限り、現在広く使用される一般的な用語を選択したが、特定の場合には、出願人が任意に選定した用語を使用して説明する。そのような場合には、該当部分の詳細な説明で、その意味を明確に記載するため、本発明の説明で使用された用語の名称のみで単純に解釈されてはならないものであり、その対応する用語の意味まで把握して解釈されるべきであることを明らかにしておく。
また、本発明で使用される用語は、発明を説明するために選択された一般的な用語であるが、同様の意味を有する他の用語がある場合、より適切な解釈のために代替可能である。例えば、信号、データ、サンプル、ピクチャ、フレーム、ブロックなどの場合、各コーディングの過程で適切に代替されて解釈されることができる。また、パーティショニング(partitioning)、分解(decomposition)、スプリーツ加工(splitting)及び分割(division)などの場合にも、各コーディングの過程で適切に代替されて解釈されることができる。
本文書でMTS(Multiple Transform Selection、以下「MTS」と称する)とは、少なくとも2つ以上の変換タイプを用いて変換を実行する方法を意味することができる。これはAMT(Adaptive Multiple Transform)またはEMT(Explicit Multiple Transform)にも表現することができ、同様に、Mts_idx もAMT_idx、EMT_idx、tu_Mts_idx 、AMT_TU_idx、EMT_TU_idx、変換インデックスまたは変換の組み合わせのインデックスなどのように表現することができ、本発明は、このような表現に限定されない。
図1は、本発明が適用される実施形態として、ビデオ信号のエンコーディングが行われるエンコーダの概略的なブロック図を示す。
図1を参照すると、エンコーダ100は、映像分割部110、変換部120、量子化部130、逆量子化部140、逆変換部150、フィルタリング部160、復号ピクチャバッファ(DPB:Decoded Picture Buffer)170、インター予測部180、イントラ予測部185及びエントロピーエンコーディング部190を含みから構成されることができる。
映像分割部110は、エンコーダ100に入力された入力画像(Input image)(または、ピクチャ、フレーム)を1つ以上の処理ユニットに分割することができる。例えば、前記処理ユニットは、コーディングツリーユニット(CTU:Coding Tree Unit)、コーディングユニット(CU:Coding Unit)、予測ユニット(PU:Prediction Unit)または変換ユニット(TU:Transform Unit)で有り得る。
ただし、前記用語は、本発明の説明の便宜のために用いるだけであり、本発明は、当該用語の定義に限定されない。また、本明細書においては、説明の便宜のために、ビデオ信号をエンコードまたはデコードする過程で用いられる単位としてコーディングユニットという用語を使用するが、本発明は、それに限定されず発明の内容に応じて適切に解釈可能である。
エンコーダ100は、入力映像信号からインター予測部180またはイントラ予測部185から出力された予測信号(prediction signal)を減算して残りの信号(residual signal)を生成することができ、生成された残りの信号は、変換部120に転送される。
変換部120は、残りの信号に変換手法を適用して変換係数(transform coefficient)を生成することができる。変換プロセスは、クワッドツリー(quadtree)構造の正方形ブロック、バイナリツリー(binarytree)構造、三進ツリー(ternary)構造または非対称ツリー(asymmetric)構造によって分割されたブロック(正方形または長方形)に適用することができる。
前記変換部120は、複数個の変換(または変換の組み合わせ)に基づいて変換を実行することができ、このような変換方式をMTS(Multiple Transform Selection)と呼ぶことができる。前記MTSはAMT(Adaptive Multiple Transform)またはEMT(Enhanced Multiple Transform)と呼ぶこともできる。
前記(MTSまたはAMT、EMT)は、複数個の変換(または変換の組み合わせ)から適応的に選択される変換(または変換の組み合わせ)に基づいて実行される変換方式を意味することができる。
前記複数個の変換(または変換の組み合わせ)は、本明細書の図6で説明する変換(または変換の組み合わせ)を含むことができる。本明細書において、前記の変換または変換タイプは、例えば、DCT-Type 2、DCT-II、DCT2、DCT2のように表記することができる。
前記変換部120は次の実施形態を実行することができる。
本発明は、4x4ブロックに適用することができるRSTの設計方法を提供する。
本発明は、4x4 RSTを適用する領域の構成、4x4 RST適用後生成された変換係数の配置方法、配置された変換係数のスキャン順、ブロックごとに生成された変換係数を整列して合わせる方法などを提供する。
本発明は、4x4 RSTを指定する変換インデックスをコーディングする方法を提供する。
本発明は、4x4 RSTを適用したとき許容されない領域に0でない変換係数が存在することを確認して対応する変換インデックスを条件付きでコーディングする方法を提供する。
本発明は、最後の0でない変換係数の位置をコーディングした後に、その変換インデックスを条件付きでコーディングした後、許容されない位置に対しては、関連するレジデュアルコーディングを省略する方法を提供する。
本発明は、4x4 RST適用時ルマブロックとクロマブロックに別々異なる変換インデックスのコーディングとレジデュアルコーディングを適用する方法を提供する。
これに対する具体的な実施形態は、本明細書でさらに詳細に説明する。
量子化部130は、変換係数を量子化してエントロピーエンコーディング部190に転送し、エントロピーエンコーディング部190は、量子化された信号(quantized signal)をエントロピーコーディングしてビットストリームに出力することができる。
前記変換部120と、前記量子化部130は、別個の機能ユニットで説明されるが、本発明はこれに限定されず、一つの機能ユニットに結合することができる。前記逆量子化部140と、前記逆変換部150の場合にも、同様に一つの機能ユニットに結合することができる。
量子化部130から出力された量子化された信号(quantized signal)は、予測信号を生成するために用いることができる。例えば、量子化された信号(quantized signal)は、ループ内の逆量子化部140及び逆変換部150を介して逆量子化及び逆変換を適用することにより、残りの信号を復元することができる。復元された残りの信号をインター予測部180またはイントラ予測部185から出力された予測信号(prediction signal)に加えることで復元信号(reconstructed signal)が生成されることができる。
一方、前記のような圧縮過程で発生した量子化エラーによってブロック境界が見える劣化が発生することができる。このような現象をブロッキング劣化(blocking artifacts)と呼ばれ、これは画質を評価する重要な要素の一つです。このような劣化を低減するためにフィルタ過程を行うことができる。このようなフィルタ処理を介してブロッキング劣化を除去するとともに、現在ピクチャの誤差を減らすことによって、画質を向上させることになる。
フィルタリング部160は、復元信号にフィルタリングを適用して、これを再生装置に出力したり、復号ピクチャバッファ170に転送する。復号ピクチャバッファ170に転送されたフィルタリングされた信号は、インター予測部180から参照ピクチャとして用いられる。このように、フィルタリングされたピクチャを画面間予測モードで参照ピクチャとして用いることにより、画質だけでなく、符号化]効率も向上させることができる。
復号ピクチャバッファ170は、フィルタ処理されたピクチャをインター予測部180からの参照ピクチャとして使用するために格納することができる。
インター予測部180は、復元ピクチャ(reconstructed picture)を参照して、時間的重複性及び/または空間的重複性を除去するために時間的予測、及び/または空間的予測を行う。ここで、予測を実行するために用いる参照ピクチャは、以前の時間に符号化/復号化時のブロック単位で量子化と逆量子化を経て変換された信号であるので、ブロッキングアーティファクト(blocking artifact)やリンギングアーティファクト(ringing artifact)が存在することができる。
したがって、インター予測部180は、このような信号の不連続や量子化による性能低下を解決するために、ローパスフィルタ(lowpass filter)を適用することにより、ピクセル間の信号をサブピクセル単位で補間することができる。ここで、サブピクセルは、補間フィルタを適用して生成された仮想のピクセルを意味し、整数ピクセルは、復元されたピクチャに存在する実際のピクセルを意味する。補間方法としては、線形補間、バイリニア補間(bi-linear interpolation)、ウィーナーフィルタ(wiener filter)などが適用されることができる。
補間フィルタは、復元ピクチャ(reconstructed picture)に適用され、予測の精密度を向上させることができる。例えば、インター予測部180は、整数ピクセルに補間フィルタを適用して補間ピクセルを生成し、補間ピクセル(interpolated pixels)で構成された補間ブロック(interpolated block)を予測ブロック(prediction block)として使用して予測を行うことができる。
一方、イントラ予測部185は、現在符号化を進行しようとするブロックの周辺にあるサンプルを参照して、現在のブロックを予測することができる。前記イントラ予測部185は、イントラ予測を実行するために、次のような過程を実行することができる。まず、予測信号を生成するために必要な参照サンプルを準備することができる。そして、準備されたサンプルを用いて予測信号を生成することができる。以後、予測モードを符号化することになる。このとき、参照サンプルは、参照サンプルパディング及び/または参照サンプルのフィルタリングを介して準備することができる。参照サンプルは、予測及び復元過程を経たため、量子化誤差が存在することができる。したがって、このようなエラーを減らすためにイントラ予測に用いられる各予測モードに対して参照サンプルのフィルタリング過程が実行されることができる。
前記インター予測部180または前記イントラ予測部185を介して生成された予測信号(prediction signal)は、復元信号を生成するために用いられるか、または残りの信号を生成するために用いられる。
図2は、本発明が適用される実施形態として、ビデオ信号のデコードが行われるデコーダの概略的なブロック図を示す。
図2を参照すると、デコーダ200は、解析部(図示せず)、エントロピーデコード部210、逆量子化部220、逆変換部230、フィルタリング部240、復号ピクチャバッファ(DPB: Decoded Picture Buffer Unit)250、インター予測部260及びイントラ予測部265を含んで構成されることができる。
そして、デコーダ200を介して出力された復元映像信号(reconstructed video signal)は、再生装置を介して再生することができる。
デコーダ200は、図1のエンコーダ100から出力された信号を受信することができ、受信された信号は、エントロピーデコード部210を介して、エントロピーデコードすることができる。
逆量子化部220においては、量子化ステップサイズ情報を用いて、エントロピーデコードされた信号から変換係数(transform coefficient)を獲得する。
逆変換部230においては、変換係数を逆変換して残りの信号(residual signal)を獲得することになる。
ここで、本発明は、予測モード、ブロックサイズまたはブロック状(block shape)の内、少なくとも1つによって区分される変換設定のグループ(transform configuration group)別に変換の組み合わせ(transform combination)を構成する方法を提供し、前記逆変換部230は、本発明によって構成された変換の組み合わせに基づいて逆変換を行うことができる。また、本明細書で説明した実施形態が適用されることができる。
前記逆変換部230は次の実施形態を実行することができる。
本発明は、縮小された2次変換に基づいて、ビデオ信号を復元する方法を提供する。
前記逆変換部230は、2次変換インデックスに対応する2次変換(secondary transform)を誘導し、前記2次変換を用いて、変換係数のブロックに対して逆方向2次変換を実行し、前記逆方向2次変換が行われたブロックの逆方向1次変換を実行することができる。ここで、前記2次変換は、縮小された2次変換を意味し、前記縮小された2次変換は、N個のレジデュアルデータ(Nx1レジデュアルベクトル)が入力されてL個(L <N)の変換係数データ(Lx1変換係数ベクトル)が出力される変換を示す。
本発明において、前記縮小された2次変換は、前記現在のブロックの特定領域に適用され、前記特定領域は、前記現在のブロック内の左上側MxM(M≦N)領域であることを特徴とする。
本発明において、前記逆方向2次変換が実行されるとき、前記現在のブロック内の分割された4x4ブロックのそれぞれについて、4x4縮小された2次変換が適用されることを特徴とする。
本発明において、前記2次変換インデックスを獲得するかどうかは、前記変換係数ブロック内の最後の0でない変換係数の位置に基づいて決定されることを特徴とする。
本発明において、前記最後の0でない変換係数が、特定領域に位置しない場合に前記2次変換インデックスは獲得され、前記特定領域は、前記縮小された2次変換が適用される場合、スキャン順序によって変換係数を配置したとき、0でない変換係数が存在することができる位置を除外した残りの領域を表すことを特徴とする。
前記逆変換部230は、1次変換インデックスに対応する変換の組み合わせを誘導し、前記変換の組み合わせを用いて、逆方向1次変換を実行することができる。ここで前記1次変換インデックスは、DST7及び/またはDCT8の組み合わせで構成された複数個の変換の組み合わせの内、いずれか1つに対応し、前記変換の組み合わせは、水平変換及び垂直変換で構成される。この時、前記水平変換及び前記垂直変換は、前記DST7または前記DCT8の内、いずれかに1つに対応する。
前記逆量子化部220と、前記逆変換部230は、別個の機能ユニットで説明されるが、本発明はこれに限定されず、一つの機能ユニットとして結合することができる。
獲得された残りの信号をインター予測部260またはイントラ予測部265から出力された予測信号(prediction signal)に加えることで復元信号(reconstructed signal)が生成される。
フィルタリング部240は、復元信号(reconstructed signal)にフィルタリングを適用して、これを再生装置に出力したり、復号ピクチャバッファ部250に転送する。復号ピクチャバッファ部250に転送され、フィルタリングされた信号は、インター予測部260から参照ピクチャとして用いられる。
本明細書において、エンコーダ100の変換部120及び各機能ユニットで説明された実施形態は、それぞれデコーダの逆変換部230及び対応する機能ユニットにも同様に適用することができる。
図3は、本発明が適用されることができる実施形態として、図3Aは、QT(QuadTree、以下「QT」とする)、図3Bは、BT(Binary Tree、以下「BT」という)、図3Cは、TT(Ternary Tree、以下「TT」という)図3DはAT(Asymmetric Tree、以下「AT」という)によるブロック分割構造を説明するための図である。
ビデオコーディングの1つのブロックは、QT(QuadTree)に基づいて分割されることができる。また、QTによって分割された一つのサブブロック(sub block)は、QTを使用して再帰的にさらに分割されることができる。もはやQT分割されないリーフブロック(leaf block)は、BT(Binary Tree)、TT(Ternary Tree)またはAT(Asymmetric Tree)の内、少なくとも一つの方式によって分割されることができる。 BTはhorizontal BT(2NxN、2NxN)とvertical BT(Nx2N、Nx2N)の二つの形態の分割を有することができる。 TTはhorizontal TT(2Nx1/2N、2NxN、2Nx1/2N)とvertical TT(1/2Nx2N、Nx2N、1/2Nx2N)の二つの形態の分割を有することができる。 ATはhorizontal-up AT(2Nx1/2N、2Nx3/2N)、horizontal-down AT(2Nx3/ 2N、2Nx1/2N)、vertical-left AT(1/2Nx2N、3/2Nx2N)、vertical-right AT(3/2Nx2N、1/2Nx2N)の四つの形態の分割を有することができる。それぞれのBT、TT、ATはBT、TT、ATを使用して再帰的にさらに分割されることができる。
前記図3Aは、QT分割の例を示す。ブロックAは、QTによって4つのサブブロック(A0、A1、A2、A3)に分割されることができる。サブブロックA1は、再びQTによって4つのサブブロック(B0、B1、B2、B3)に分割されることができる。
前記図3Bは、BT分割の例を示す。 QTによってもはや分割されないブロックB3は、vertical BT(C0、C1)またはhorizontal BT(D0、D1)に分割されることができる。ブロックC0のように、それぞれのサブブロックは、horizontal BT(E0、E1)またはvertical BT(F0、F1)の形態のように再帰的にさらに分割されることができる。
前記3Cは TT分割の例を示す。QTによってもはや分割されないブロックB3は、vertical TT(C0、C1、C2)またはhorizontal TT(D0、D1、D2)に分割されることができる。ブロックC1のように、それぞれのサブブロックは、horizontal TT(E0、E1、E2)またはvertical TT(F0、F1、F2)の形態のように再帰的にさらに分割されることができる。
前記3DはAT分割の例を示す。QTによってもはや分割されないブロックB3は、vertical AT(C0、C1)またはhorizontal AT(D0、D1)に分割されることができる。ブロックC1のように、それぞれのサブブロックは、horizontal AT(E0、E1)またはvertical TT(F0、F1)の形態のように再帰的にさらに分割されることができる。
一方、BT、TT、AT分割は一緒に使用して分割が可能である。たとえば、BTによって分割されたサブブロックは、TTまたはATによる分割が可能である。また、TTによって分割されたサブブロックは、BTまたはATによる分割が可能である。ATによって分割されたサブブロックは、BTまたはTTによる分割が可能である。たとえば、horizontal BT分割以後、それぞれのサブブロックがvertical BTに分割されることができ、またはvertical BT分割以後、それぞれのサブブロックがhorizontal BTに分割されることもできる。前記二種類の分割方法は、分割手順は異なるが、最終的に分割される形は同じである。
また、ブロックが分割されると、ブロックを探索する順序を多様に定義することができる。一般的に、左側から右側に、上端から下端に探索を行い、ブロックを探索するということは、各分割されたサブブロックの追加的なブロックが分割するかどうかを決定する順序を意味するか、ブロックがもはや分割されない場合、各サブブロックの符号化順序を意味するか、またはサブブロックで他の隣接ブロックの情報を参照するときの探索順序を意味することができる。
図4及び図5は、本発明が適用される実施形態として、図4は、エンコーダ内の変換及び量子化部(120/130)、逆量子化及び逆変換部(140/150)の概略的なブロック図を示し、図5デコーダ内の逆量子化及び逆変換部(220/230)の概略的なブロック図を示す。
前記図4を注意深く見ると、変換、及び量子化部(120/130)は、1次変換部(primary transform unit)121、2次変換部(secondary transform unit)122及び量子化部130を含むことがことができる。逆量子化及び逆変換部(140/150)は、逆量子化部140、逆方向2次変換部(inverse secondary transform unit)151及び逆1次変換部(inverse primary transform unit)152を含むことがことができる。
前記図5を注意深く見ると、逆量子化及び逆変換部(220/230)は、逆量子化部220、逆2次変換部(inverse secondary transform unit)231と逆1次変換部(inverse primary transform unit) 232を含むことができる。
本発明において、変換を実行するときに、複数の段階を経て変換を実行することができる。例えば、図4のように、1次変換(primary transform)、2次変換(secondary transform)の2段階を適用することができ、またはアルゴリズムに基づいて、それ以上の変換ステップが用いられる。ここで、前記1次変換(primary transform)は、主要な変換(core transform)と呼ぶこともできる。
前記1次変換部(primary transform unit121は、残りの信号に対して1次変換(primary transform)を適用することができ、ここで前記1次変換(primary transform)は、エンコーダ及び/またはデコーダでテーブルに予め定義することができる。
前記1次変換(primary transform)の場合、Discrete Cosine Transform type 2(以下、「DCT2」という)が適用されることができる。
または、特定の場合に限定してDiscrete Sine Transform-type 7(以下、「DST7」という)が適用されることもある。例えば、イントラ予測モードで4x4ブロックに対してDST7が適用されることができる。
また、前記1次変換(primary transform)の場合、MTS(Multiple Transform Selection)の多くの変換(DST 7、DCT 8、DST 1、DCT 5)の組み合わせが適用されることもある。例えば、図6が適用されることがある。
前記2次変換部(secondary transform unit)122は、1次変換された信号に対して2次変換(secondary transform)を適用することができ、ここで前記2次変換(secondary transform)は、エンコーダ及び/またはデコーダでテーブルに予め定義することができる。
一実施形態として、前記2次変換(secondary transform)は、Non-Separable Secondary Transform(以下、「NSST」という)を条件付きで適用することができる。例えば、前記NSSTはイントラ予測ブロックの場合にのみ適用され、予測モードグループごとに適用可能な変換セットを有することができる。
ここで、前記予測モードグループは、予測方向の対称性に基づいて設定されることができる。例えば、予測モード52と予測モード16は、予測モード34(対角方向)に基づいて対称なので、1つのグループを形成して、同じ変換セット(transform set)が適用されることができる。この時、前記予測モード52の変換を適用するときに入力データをトランスポーズ(transpose)した後に適用し、これは予測モード16と変換セットが同じであるからである。
一方、プランナーモード(Planar mode)とDCモード(DC mode)の場合、方向の対称性が存在しないため、それぞれの変換セットを有し、該変換セットは、2つの変換で構成されることができる。残りの方向性モードにたいしては、変換セットごとに3つの変換で構成されることができる。
他の実施形態として、前記2次変換(secondary transform)の場合、MTS(Multiple Transform Selection)の多くの変換(DST 7、DCT 8、DST 1、DCT 5)の組み合わせが適用されることもできる。例えば、図6が適用されることができる。
他の実施形態として、DST7が2次変換(secondary transform)で適用されることもできる。
他の実施形態として、 前記2次変換は、1次変換されたブロック全体に適用されるものではなく左上側(top-left)の特定領域にのみ適用されることができる。例えば、ブロックのサイズが8x8以上の場合は、8x8 NSSTが適用され、8x8未満の場合は、4x4の2次変換が適用されることができる。この際、4x4ブロックに割った後、それぞれ4x4 2次変換が適用されることができる。
他の実施形態として、4xN/Nx4(N> = 16)である場合にも、4x4の2次変換が適用されることができる。
前記2次変換(例えば、NSST)、4x4の2次変換と8x8の2次変換については、以下で図12~15及び明細書の内の他の実施形態を介してより詳細に説明する。
前記量子化部130は、2次変換された信号に対して量子化を行うことができる。
前記逆量子化及び逆変換部(140/150)は、先に説明した過程を逆に実行し、重複する説明は省略する。
図5は、デコーダ内の逆量子化及び逆変換部(220/230)の概略的なブロック図を示す。
前記図5を注意深く見ると、逆量子化及び逆変換部(220/230)は、逆量子化部220、逆2次変換部(inverse secondary transform unit)231及び逆1次変換部(inverse primary transform unit)232を含むことができる。
前記逆量子化部220においては、量子化ステップサイズ情報を用いて、エントロピーデコードされた信号から変換係数(transform coefficient)を獲得する。
前記逆2次変換部(inverse secondary transform unit)231においては、前記変換係数に対して逆2次変換を実行する。ここで、前記逆2次変換は、前記図4で説明した前記2次変換(secondary transform)の逆変換を示す。
他の実施形態として、前記2次変換の場合には、MTS(Multiple Transform Selection)の多くの変換(DST 7、DCT 8、DST 1、DCT 5)の組み合わせが適用されることもできる。例えば、図6が適用されることができる。
前記逆1次変換部(inverse primary transform unit)232は、逆2次変換された信号(またはブロック)について逆1次変換を実行し、残りの信号(residualsignal)を獲得することになる。ここで、前記逆1次変換は、前記図4で説明した前記1次変換(primary transform)の逆変換を示す。
一実施形態で、前記1次変換(primary transform)の場合、MTS(Multiple Transform Selection)の多くの変換(DST 7、DCT 8、DST 1、DCT 5)の組み合わせが適用されることもできる。例えば、図6が適用されることができる。
本発明の一実施形態として、DST7が1次変換(primary transform)で適用されることもできる。
本発明の一実施形態として、DCT8が1次変換(primary transform)に適用されることもできる。
本発明は、予測モード、ブロックサイズまたはブロック状(block shape)の内、少なくとも1つによって区分される変換設定のグループ(transform configuration group)別に変換の組み合わせ(transform combination)を構成する方法を提供し、前記逆1次変換部(inverse primary transform unit)232は、本発明によって構成された変換の組み合わせに基づいて逆変換を行うことができる。また、本明細書で説明した実施形態が適用されることができる。
図6は、本発明が適用される実施形態として、MTS、(Multiple Transform Selection)が適用される変換設定のグループ(transform configuration group)を示す表である。
MTS(Multiple Transform Selection)が適用される変換設定のグループ
本明細書においては、変換設定のグループGiのj番目の変換の組み合わせの候補を次の数式(1)のようなペア(対)で表示する。
[数1]
(H(Gi、j)、V(Gi、j))
ここで、 H(Gi、j)は、j番目の候補の水平変換(horizontal transform)を指し、V(Gi、j)は、j番目の候補の垂直変換(vertical transform)を指す。例えば、図6でH(G3、2)= DST7、V(G3、2)= DCT8のように表記することができる。文脈に応じてH(Gi、j)またはV(Gi、j)に割り当てられる値は、前記の例示のように変換を区分するための表示上の値(nominal value)で有り得、該変換を指すインデックス値で有り得、該変換の2D行列(2 Dimensional matrix)で有り得る。
また、本明細書において、DCTとDSTの2D行列の値を次の数式2~3のように表記することができる。
[数2]
DCT type 2:、DCT type 8:
[数3]
DST type 7:、DST type 4:
ここで、DSTまたはDCTであるかどうかは、SまたはCで表し、type数字はローマ数字の形で上添字表記し、下部添字のNはNxN変換であることを示す。また、前記
と
のような2D行列は、列ベクトル(column vector)が変換基底(transform basis)をなすことを仮定する。
前記図6を注意深く見ると、変換設定のグループ(transform configuration group)は、予測モードに基づいて決定され、グループの数は、総6個(G0~G5)で有り得る。そして、G0~G4は、イントラ予測が適用される場合に該当しG5はインター予測によって生成された残差(residual)ブロックに適用される変換の組み合わせ(または変換セット、変換の組み合わせセット)を示す。
一つの変換の組み合わせは、該2Dブロックの行(row)に適用される水平変換(horizontal transform)(または行変換(rowtransform))と列(column)に適用される垂直変換(vertical transform)(または列変換(column transform))で行うことができる。
ここで、すべての変換設定のグループは、各4つの変換の組み合わせ候補を有することができる。前記4つの変換の組み合わせ候補は0~3の変換の組み合わせのインデックスを介して選択または決定することができ、エンコーダからデコーダに前記変換の組み合わせのインデックスをエンコードして転送することができる。
一実施形態として、イントラ予測を介して獲得された残差データ(または残差信号)は、イントラ予測モードに応じて、その統計的特性がそれぞれ異なることができる。したがって、前記図6に示すように、イントラ予測モードごとに、一般的なコサイン変換ではなく、別の変換を適用することができる。
前記図6を注意深く見ると、35個のイントラ予測モードを用いる場合と67個のイントラ予測モードを用いる場合を示す。各イントラ予測モードの列で区分された変換設定グループごとに複数個の変換の組み合わせが適用されることができる。例えば、前記複数個の変換の組み合わせは、4つの(行方向の変換、列方向変換)組み合わせで構成されることができる。具体例として、グループ0では、行(水平)方向と列(垂直)方向の全てDST-7とDCT-5が適用されることができ、総4つの組み合わせが可能である。
各イントラ予測モードに対して、総4つの変換カーネルの組み合わせが適用されることがあるので、それらの内、いずれか1つを選択するための変換の組み合わせのインデックスが変換ユニット(transform unit)ごとに転送されることができる。本明細書において、前記変換の組み合わせのインデックスは、MTSインデックス(MTS index)と呼ぶことができ、Mts_idx で表現されることができる。
また、前記図6に提示した変換カーネル以外にも、残差信号(residual signal)の特性上、行方向と列方向全てに対してDCT2が最適な場合が発生することができる。したがって、コーディングユニット(Coding Unit)毎にMTSフラグを定義することにより、適応的に変換を実行することができる。ここで、MTSフラグが0であれば、行方向と列方向の全てに対してDCT2を適用し、MTSフラグが1であれば、MTSインデックスを介して、4つの組み合わせの内、いずれか1つを選択または決定することができる。
一実施形態として、MTSフラグが1である場合、1つの変換ユニットに対して0ではない変換係数の数がしきい値より大きくなければ、前記図6の変換カーネルを適用せずに行方向と列方向の全てにDST- 7を適用することができる。例えば、前記しきい値は2で設定されることができ、これはブロックサイズまたは変換ユニットのサイズに基づいて、異なるように設定することができる。これは明細書の他の実施形態でおいても適用可能である。
一実施形態として、変換係数の値を先に解析して、0でない変換係数の数がしきい値より大きくなければ、MTS、インデックスを解析せずにDST-7を適用することにより、付加情報転送量を削減することができる。
一実施形態として、MTSフラグが1である場合、1つの変換ユニットに対して0ではない変換係数の数がしきい値より大きいとMTSインデックスを解析して、MTSインデックスに基づいて、水平変換と垂直変換を決定することができる。
一実施形態として、MTSは変換ユニットの幅と高さが全て32以下の場合にのみ、適用することができる。
一実施形態として、前記図6は、オフライントレーニング(off-line training)を介して既設定されることができる。
一実施形態として、前記MTSインデックスは、水平変換と垂直変換の組み合わせを同時に指すことができる1つのインデックスとして定義することができる。または、前記MTSインデックスは、水平変換のインデックスと垂直変換インデックスを別々に定義することもできる。
一実施形態として、前記MTSフラグまたは前記MTSインデックスは、シーケンス、ピクチャ、スライス、ブロック、コーディングユニット、変換ユニット、または予測ユニットの内、少なくとも一つのレベルで定義することができる。例えば、前記MTSフラグまたは前記MTSインデックスはSPS(Sequence Parameter Set)、コーディングユニットまたは変換ユニットの内、少なくとも一つのレベルで定義することができる。また、一例として、MTSのenable / disableのための構文フラグはSPS(Sequence Parameter Set)、PPS(Picture parameter set)またはスライスヘッダ(slice header)の内、少なくとも一つのレベルで定義することができる。
他の実施形態として、変換インデックスに対応する変換の組み合わせ(水平変換、垂直変換)は、MTSフラグ、予測モード及び/またはブロックの形とに依存せず構成することができる。例えば、前記の変換の組み合わせは、DCT2、DST7及び/またはDCT8の内、少なくとも一つで構成されることができる。具体例として、変換インデックスが0、1、2、3、4であれば、それぞれ前記変換の組み合わせは、(DCT2、DCT2)、(DST7、DST7)、(DCT8、DST7)、(DST7、DCT8)、(DCT8、DCT8 )で有り得る。
図7は、本発明が適用される実施形態として、MTS(Multiple Transform Selection)が行われるエンコード過程を示すすフローチャートである。
本明細書においては、基本的に、水平方向と垂直方向に対し分離して変換を適用する実施形態を説明しているが、変換の組み合わせは、非分離変換(non-separable transform)にも構成が可能である。
または、分離可能な変換(separable transform)と非分離変換(non-separable transform)の混合でも構成することができる。この場合、非分離変換(non-separable transform)がもちいられると、行/列(row / column)別の変換選択や水平/垂直(horizontal / vertical)方向別の選択は不要になり、分離可能な変換(separable transform)が選択される場合にのみ、前記図6の変換の組み合わせが用いられる。
また、本明細書で提案する方式は、1次変換(primary transform)や2次変換(secondary transform)に関係なく適用することができる。即ち、二つの内、とちらか一方にのみ適用されなければならないという制約がなく、両方とも適用することができる。ここで、前記1次変換(primary transform)は、残差(residual)ブロックを最初に変換するための変換を意味することができ、前記2次変換(secondary transform)は、前記1次変換の結果として生成されたブロックにについての変換を適用するための変換を意味することができる。
まず、エンコーダは、現在のブロックに対応する変換設定のグループを決定することができる(S710)。ここで、前記変換設定のグループは、前記図6の変換設定のグループを意味することができるが、本発明はこれに限定されず、他の変換の組み合わせで構成されることもできる。
前記エンコーダは、前記変換設定グループ内の利用可能な候補変換の組み合わせに対して変換を実行することができる(S720)。
前記変換実行結果、前記エンコーダは、RD(Rate Distortion)コストが最小の変換の組み合わせを決定または選択することができる(S730)。
前記エンコーダは、前記選択された変換の組み合わせに対応する変換の組み合わせのインデックスをエンコードすることができる(S740)。
図8は、本発明が適用される実施形態として、MTS(Multiple Transform Selection)が行われるデコード過程を示すフローチャートである。
まず、デコーダは、現在のブロックのための変換設定のグループを決定することができる(S810)。
前記デコーダは、ビデオ信号から変換の組み合わせのインデックスを解析(または獲得)することができ、ここで前記変換の組み合わせのインデックスは、前記変換設定グループ内の複数個の変換の組み合わせの内、いずれか1つに対応することができる(S820)。例えば、前記変換設定のグループは、DST7(Discrete Sine Transform type 7)及びDCT8(Discrete Cosine Transform type 8)を含むことができる。前記変換の組み合わせのインデックスは、MTSインデックスと呼ぶことができる。
一実施形態として、前記変換設定のグループは、現在のブロックの予測モード、ブロックサイズまたはブロック状の内、少なくとも一つに基づいて設定されることができる。
前記デコーダは、前記変換の組み合わせのインデックスに対応する変換の組み合わせを誘導することができる(S830)。ここで、前記変換の組み合わせは、水平変換及び垂直変換で構成され、前記DST-7またはDCT-8の内、少なくとも一つを含むことができる。
また、前記変換の組み合わせは、前記図6で説明した変換の組み合わせを意味することができるが、本発明はこれに限定されない。すなわち、本明細書の内、他の実施形態に係る他の変換の組み合わせによる構成も可能である。
前記デコーダは、前記変換の組み合わせに基づいて前記現在のブロックの逆変換を行うことができる(S840)。前記変換の組み合わせが行(水平)変換と列(垂直)変換で構成された場合、行(水平)変換を先に適用した後、列(垂直)変換を適用することができる。ただし、本発明はこれに限定されず、逆に適用されるか、または非分離変換で構成された場合には、すぐに非分離変換が適用されることができる。
実施形態として、前記垂直変換または前記水平変換が、前記DST-7またはDCT-8である場合、前記DST-7の逆変換またはDCT-8の逆変換を列ごとに適用した後、行ごとに適用することができる。
一実施形態として、前記垂直変換または前記水平変換は、各行ごとに、及び/または各列(ごと)に別の変換が適用されることができる。
一実施形態として、前記変換の組み合わせのインデックスは、MTSが実行されるかどうかを示すMTSフラグに基づいて獲得することができる。すなわち、前記変換の組み合わせのインデックスは、前記MTSフラグに基づいてMTSが実行される場合に獲得することができる。
一実施形態として、前記デコーダは、0でない変換係数の数がしきい値より大きいかどうかを確認することができる。この際、前記変換の組み合わせのインデックスは、前記0でない変換係数の数がしきい値より大きい場合に獲得することができる。
一実施形態として、前記MTSフラグまたは前記MTSインデックスは、シーケンス、ピクチャ、スライス、ブロック、コーディングユニット、変換ユニット、または予測ユニットの内、少なくとも一つのレベルで定義することができる。
一実施形態として、前記逆変換は、変換ユニットの幅と高さの全てが32以下の場合にのみ、適用することができる。
一方、他の一実施形態として、変換設定のグループを決定する過程と変換の組み合わせのインデックスを解析(parsing)する過程は、同時に実行することができる。または前記S810のステップは、エンコーダ及び/またはデコーダで既設定されて省略されることができる。
図9は、本発明が適用される実施形態として、MTSフラグ及びMTSインデックスをエンコードする過程を説明するためのフローチャートである。
エンコーダは、現在のブロックのMTS(Multiple Transform Selection)が適用されるかどうかを決定することができる(S910)。
もし、MTS(Multiple Transform Selection)が適用される場合、前記エンコーダは、MTSフラグ= 1でエンコードすることができる(S920)。
そして、前記エンコーダは、前記現在のブロックの予測モード、水平変換、垂直変換の内、少なくとも一つに基づいて、MTSインデックスを決定することができる(S930)。ここで、MTSインデックスは、各イントラ予測モードに対して複数個の変換の組み合わせの内、いずれか1つを指すインデックスを意味し、前記MTSインデックスは、変換ユニット(transform unit)ごとに転送されることができる。
前記MTSインデックスが決定されると、前記エンコーダは、前記MTSインデックスをエンコードすることができる(S940)。
一方、 前記MTS Multiple Transform Selection)が適用されない場合、前記エンコーダは、MTSフラグ= 0にエンコードすることができる(S950)。
図10は、本発明が適用される実施形態として、MTS、フラグとMTSインデックスに基づいて、水平変換または垂直変換を行または列に適用するデコード過程を説明するためのフローチャートである。
デコーダは、ビットストリームからMTSフラグを解析することができる(S1010)。ここで、MTSフラグは、現在のブロックのMTS(Multiple Transform Selection)が適用されるかどうかを示すことができる。
前記デコーダは、前記MTSフラグに基づいて、現在のブロックのMTS(Multiple Transform Selection)が適用されるかどうかを確認することができる(S1020)。例えば、前記のMTSフラグが1かであるかうかを確認することができる。
もし、前記MTSフラグが1である場合、前記デコーダは、0でない変換係数の数がしきい値よりも大きいか(またはそれ以上であるか)かどうかを確認することができる(S1030)。例えば、前記しきい値は2に設定されることができ、これはブロックサイズまたは変換ユニットのサイズに基づいて、異なるように設定することができる。
前記0でない変換係数の数がしきい値より大きい場合、前記デコーダはMTS、インデックスを解析することができる(S1040)。ここで、前記MTSインデックスは、各イントラ予測モードまたはインター予測モードについて複数個の変換の組み合わせの内、いずれか1つを指すインデックスを意味し、前記MTSインデックスは、変換ユニット(transform unit)ごとに転送されることができる。または、前記MTSインデックスは既設定され変換の組み合わせテーブルに定義されたいずれか1つの変換の組み合わせを指すインデックスを意味することができ、ここで前記既設定された変換の組み合わせのテーブルは、前記図6を意味することができるが、本発明はこれに限定されない。
前記デコーダは、前記MTSインデックスまたは予測モードの内、少なくとも一つに基づいて、水平変換及び垂直変換を誘導または決定することができる(S1050)。
または、前記デコーダは、前記MTSインデックスに対応する変換の組み合わせを誘導することができる。例えば、前記デコーダは、前記MTSインデックスに対応される水平変換及び垂直変換を誘導または決定することができる。
一方、前記0でない変換係数の数がしきい値より大きくない場合、前記デコーダは既設定された垂直逆変換を列ごとに適用することができる(S1060)。例えば、前記垂直逆変換は、DST7の逆変換で有り得る。
そして、前記デコーダは既設定された水平逆変換を行ごとに適用することができる(S1070)。例えば、前記水平逆変換は、DST7の逆変換で有り得る。すなわち、前記0でない変換係数の数がしきい値より大きくない場合には、エンコーダまたはデコーダで既設定された変換カーネルが用いられることができる。例えば、前記図6のような変換の組み合わせテーブルで定義されたものではなく、多く用いられる変換カーネル(例えば、DCT-2、DST-7、DCT-8)が用いられる。
一方、前記MTSフラグが0である場合、前記デコーダは既設定された垂直逆変換を列ごとに適用することができる(S1080)。例えば、前記垂直逆変換は、DCT2の逆変換で有り得る。
そして、前記デコーダは、既設定された水平逆変換を行ごとに適用することができる(S1090)。例えば、前記水平逆変換は、DCT2の逆変換で有り得る。つまり、MTSフラグが0である場合には、エンコーダまたはデコーダで既設定された変換カーネルが用いられる。例えば、前記図6のような変換の組み合わせテーブルで定義されたものではなく、多く用いられる変換カーネルが利用されることができる。
図11は、本発明が適用される実施形態として、変換関連パラメータに基づいて逆変換を実行するフローチャートを示す。
本発明が適用されるデコーダは、sps_mts_intra_enabled_flagまたはsps_mts_inter_enabled_flagを獲得することができる(S1110)。ここで、sps_mts_intra_enabled_flagはtu_mts_flagがイントラコーディングユニットのレジデュアルコーディング構文に存在するかどうかを示す。たとえば、sps_mts _intra_enabled_flag = 0であれば、tu_mts_flagがイントラコーディングユニットのレジデュアルコーディング構文に存在せず、sps_mts_intra_enabled_flag = 0であれば、tu_mts_flagがイントラコーディングユニットのレジデュアルコーディング構文に存在する。そして、sps_mts_inter_enabled_flagはtu_mts flagがインターコーディングユニットのレジデュアルコーディング構文に存在するかどうかを示す。たとえば、sps_mts_inter_enabled_flag = 0であれば、tu_mts_flagがインターコーディングユニットのレジデュアルコーディング構文に存在せず、sps_mts_inter_enabled_flag = 0であれば、tu_mts_flagがインターコーディングユニットのレジデュアルコーディング構文に存在する。
前記デコーダは、sps_mts_intra_enabled_flagまたはsps_mts_inter_enabled_flagに基づいてtu_mts_flagを獲得することができる(S1120)。たとえば、 sps_mts_intra_enabled_flag=1またはsps_mts_inter_enabled_flag=1の時、前記デコーダはtu_mts_flagを獲得することがある。ここで、tu_mts_flagは多変換の選択(multiple transform selection、以下「MTS」という)がルマ変換ブロックのレジデュアルサンプルに適用されるかどうかを示す。たとえば、tu_mts_flag = 0の場合、MTSがルマ変換ブロックのレジデュアルサンプルに適用されず、tu_mts_flag = 1であればMTSがルマ変換ブロックのレジデュアルサンプルに適用される。
他の例として、前記tu_mts_flagについて本文書の実施形態の内、少なくとも1つが適用されることができる。
前記デコーダはtu_mts_flagに基づいて mts_idxを獲得することができる(S1130)。たとえば、tu_mts_flag = 1のとき、前記デコーダはmts_idxを獲得することができる。ここで、mts_idxはどの変換カーネルが現在の変換ブロックの水平及び/または垂直方向に沿ったルマレジデュアルサンプルに適用されるかを示す。
例えば、mts_idxについて、本文書の実施形態の内、少なくとも1つが適用されることができる。具体例として、前記図6の実施形態の内、少なくとも1つが適用されることができる。
前記デコーダはmts_idxに対応する変換カーネルを誘導することができる(S1140)。例えば、前記mts_idx に対応する変換カーネルは、水平変換及び垂直変換に区分されて定義することができる。
他の例として、前記水平変換及び垂直変換は、互いに異なる変換カーネルが適用されることができる。ただし、本発明はこれに限定されず、前記水平変換及び垂直変換は、同じ変換カーネルが適用されることもある。
一実施形態で、mts _idxは、以下の表1に示すように定義することができる。
そして、前記デコーダは、前記変換カーネルに基づいて逆変換を行うことができる(S1150)。
前記図11では、MTSが適用するかどうかを決定するためにtu_mts_flagを獲得し、以後獲得られたtu_mts_flag値に基づいてmts_idxを獲得して、変換カーネルを決定する実施形態を中心に説明したが、本発明はこれに限定されない。一例として、デコーダは、tu_mts_flag解析せずにmts_idxをすぐ直接に解析して変換カーネルを決定することができる。この場合、前述した表1が用いられる。つまり、mts_idx値が0を指示する場合、水平/垂直方向にDCT-2を適用し、 mts_idx値が0以外の値を指示する場合、mts_idx値に基づいてDST-7及び/またはDCT-8を適用することができる。
本発明の他の実施形態として、変換過程を実行するデコード過程を説明する。
デコーダは、変換サイズ(nTbS)を確認することができる(S10)。ここで、前記変換サイズ(nTbS)は、スケールされた変換係数の水平方向のサンプルサイズを表す変数で有り得る。
前記デコーダは、変換カーネルタイプ(trType)を確認することができる(S20)。ここで、前記変換カーネルタイプ(trType)は変換カーネルのタイプを表す変数で有り得、本文書の様々な実施形態が適用されることができる。前記変換カーネルタイプ(trType)は、水平変換カーネルタイプ(trTypeHor)と垂直変換カーネルタイプ(trTypeVer)を含むことができる。
前記表1を参照すれば、前記変換カーネルタイプ(trType)が0であうと、DCT2を示し、1であるとDST7を示し、2であるとDCT8を示すことができる。
前記デコーダは、変換サイズ(nTbS)または変換カーネルタイプの内、少なくとも一つに基づいて、変換行列の乗算を行うことができる(S30)。
他の例として、変換カーネルタイプが1であり、変換サイズが4であれば、変換行列の乗算を実行する際既決定された変換行列1が適用されることができる。
他の例として、変換カーネルタイプが1であり、変換サイズが8であれば、変換行列の乗算の実行際既決定された変換行列2が適用されることができる。
他の例として、変換カーネルタイプが1であり、変換サイズが16であれば、変換行列の乗算の実行際既決定された変換行列3が適用されることができる。
他の例として、変換カーネルタイプが1であり、変換サイズが32であれば、既定議された変換行列4が適用されることができる。
同様に、変換カーネルタイプが2であり、変換サイズが4、8、16、または32であれば、それぞれ既定議された変換行列(5)、(6)、(7)、(8)が適用されることができる。
ここで、前記既定議された変換行列(1)~(8)は、それぞれ、様々なタイプの変換行列の内、いずれか1つに対応することができる。一例として、前記図6に例示されたタイプの変換行列が適用されることができる。
前記デコーダは、変換行列の乗算に基づいて変換サンプル(または変換係数)を誘導することができる(S40)。
前記実施形態は、それぞれ用いられるが、本発明はこれに限定されず、前記実施形態及び本明細書の他の実施形態と組み合わせて用いられる。
図12は、本発明が適用される実施形態として、NSSTでイントラ予測モードごとに変換セット(transform set)を割り当てることを示すテーブルである。
Non-Separable Secondary Transform(NSST)
2次変換部(secondary transform unitは、1次変換された信号に対して2次変換(secondary transform)を適用することができ、ここで前記2次変換(secondary transform)は、エンコーダ及び/またはデコーダでテーブルに既定儀されることができる。
一実施形態として、前記2次変換(secondary transform)は、Non-Separable SecondaryTransform(以下、「NSST」という)を条件付きで適用することができる。例えば、前記NSSTはイントラ予測ブロックの場合にのみ適用され、予測モードグループごとに適用可能な変換セットを有することができる。
ここで、前記予測モードグループは、予測方向の対称性に基づいて設定されることができる。例えば、予測モード52と予測モード16は、予測モード34(対角方向)に基づいて対称なので、1つのグループを形成して、同じ変換セット(transform set)が適用されることができる。この時、前記予測モード52の変換を適用するときに入力データをトランスポーズ(transpose)した後に適用し、これは予測モード16と変換セットが同じだからである。
一方、プランナーモード(Planar mode)とDCモード(DC mode)の場合、方向の対称性が存在しないため、それぞれの変換セットを有し、該変換セットは、2つの変換で構成されることができる。残りの方向性モードに対しては、変換セットごとに3つの変換で構成されることができる。ただし、本発明はこれに限定されず、各変換セットは、複数個の変換で構成されることができる。
一実施形態において、図12に示されるところと他の変換セットテーブルが定義されることができる。たとえば、次の表2のように、イントラ予測モード(またはイントラ予測モードグループ)に基づいて、予め定義されたテーブルからの変換セットを決定することができる。イントラ予測モードに応じて決定された変換セット内で特定の変換を指示する構文がエンコーダからデコーダにシグナリングすることができる。
表2を参照すると、グループ化されたイントラ予測モード(またはイントラ予測モードグループ)に予め定義された変換セット(transform set)を割り当てることができる。ここで、IntraPredMode値はWAIP(Wide Angle Intra Prediction)を考慮して、変換されたモード値で有り得る。
図13は、本発明が適用される実施形態であって、ギボンズ回転(Givens rotation)の計算フロー図を示す。
他の実施形態として、前記NSSTは1次変換されたブロック全体に適用されるものではなく左上側(top-left)8x8領域にのみ適用されることができる。例えば、ブロックのサイズが8x8以上の場合は、8x8 NSSTが適用され、8x8未満の場合は、4x4 NSSTが適用されるが、この時、4x4ブロックに分けた後、それぞれ4x4 NSSTが適用される。
他の実施形態として、4xN / Nx4(N> = 16)である場合にも、4x4 NSSTが適用されることができる。
8x8 NSSTと4x4 NSSTすべて本文書で説明する変換の組み合わせの構成にしたがって、非分離変換(non-separable transform)であるため、8x8 NSSTは64個のデータの入力を受け、64個のデータを出力し、4x4 NSSTは、16個の入力と16個の出力を有する。
8x8 NSSTと4x4 NSSTすべてギボンズ回転(Givens rotation)の階層的な組み合わせで構成される。一つのギボンズ回転(Givens rotation)に対応する行列は次の数式(4)と同じであり、行列の積は次数式5の通りである。
前記図13のように、一つのギボンズ回転(Givens rotation)は、2つのデータを回転させるので、64個(8x8 NSSTの場合)または16個の(4x4 NSSTの場合)のデータを処理するためには、それぞれ総32個または8つのギボンズ回転(Givens rotation)が必要である。
したがって、32個または8個を束にしてギボンズ回転層(Givens rotation layer)を形成する。一つのギボンズ回転層の出力データが決まった置換(permutation)を次のギボンズ回転層の入力データとして転達される。
図14は、本発明が適用される実施形態であって、ギボンズ回転層(Givens rotation layer)と置換(permutation)で構成された4x4 NSSTでの1ラウンド構成を示す。
前記図14を注意深く見ると、4x4 NSSTの場合について、4つのギボンズ回転層が順次処理される様子を示している。前記図14のようにしたギボンズ回転層の出力データが決まった置換(i.e. shuffling)を経て、次のギボンズ回転層の入力データとして転達される。
前記図14のように置換されるパターンは、規則的に決まっており、4x4 NSSTの場合は、4つのギボンズ回転層と該置換を合わせて一つのラウンド(round)をなす。
8x8 NSSTの場合は、6つのギボンズ回転層と該置換が一つのラウンドを形成する。4x4 NSSTは2回のラウンドを経され、8x8 NSSTは4回のラウンドを経ることになる。互いに異なるラウンド同士は同じ置換パターンを使用するが適用されるギボンズ回転角度は、それぞれ異なる。したがって、各変換を構成するすべてのギボンズ回転の角度データを格納しなければならない。
最後のステップでギボンズ回転層を経て出力されたデータに対して、最終的に一度の置換をさらに行うようになり、該置換情報は、変換ごとに別に格納されている。順方向NSSTにおいては最後に該置換が行われ、逆方向NSSTでは逆に、最初に、該逆置換が適用される。
逆方向NSSTの場合は、順方向NSSTで適用されたギボンズ回転層と置換を逆の順序で実行すると、され、各ギボンズ回転の角度にたいしても(-)の値をとって回転させる。
図15は、本発明が適用される実施形態として、順方向縮小変換(forward reduced transform)及び逆方向縮小変換(forward reduced transform)の動作を説明するためのブロック図である。
Reduced Secondary Transform(RST)
一変換を表す直交行列がNxNの形態を有するとしたとき、縮小された変換(Reduced Transform、以下「RT」という)は、N個の変換基底ベクトルの中R個だけ残すものである(R <N)。変換係数を生成する順方向RTの行列は、以下の数式(6)のように与えられる。
逆方向RTの行列は、順方向RT行列の転置行列(transpose matrix)となるので、順方向RTと逆方向RTの適用を図示すると、前記図15と同じである。ここで、Reduction factorは、R / N(R <N)で定義される。
縮小された変換の要素数は、R * Nとして、全体行列のサイズ(N * N)より小さい。つまり、必要な行列は、全体行列のR/Nである。また、必要な乗算の数はRxNであり、元のNxNよりR/Nだけ低い。縮小された変換を適用すると、R個の係数を有するため、N係数の代わりにR個の係数の値だけ転送することができる。
1次変換を経た変換ブロックの左上端8x8ブロックのRTを適用する場合を仮定すると、前記RTを8x8縮小2次変換(8x8 RST)と命名することができる。
前記数式6でのR値を16とするとき、順方向8x8 RSTは16x64行列の形を有し、逆方向8x8 RSTは64x16行列の形を有する。
また、8x8 RSTに対しても、前記図12と同じ変換のセットの構成を適用することができる。すなわち、前記図12での変換セットに基づいて対応する8x8 RSTが適用されることができる。
一実施形態であり、前記図12において1つの変換セットがイントラ予測モードに応じて、2つまたは3つの変換で構成されているときに、2次変換を適用しない場合を含め、最大4つの変換の内、一つを選択するように構成されることができる。ここで、1つの変換は、恒等行列と見ることができる。
前記4つの変換に対して、それぞれ0、1、2、3のインデックスを付与するとき、NSSTインデックスと呼ばれる構文要素(syntax element)を変換ブロックごとにシグナリングして対応する変換を指定することができる。つまり、NSSTインデックスを介して8x8左上端ブロックについて、NSSTの場合は8x8 NSSTを指定することができ、RSTの構成では8x8 RSTを指定することができる。また、このとき、0番インデックスを恒等行列、すなわち2次変換を適用しない場合に割り当てることができる。
前記数式6のような順方向8x8 RSTを適用するようにすると、16個の有効な変換係数が生成されるので、8x8の領域を構成する64個の入力データが16個の出力データに縮小されると見ることができる。 2次元領域の観点から見ると、1/4ほどの領域のみ有効な変換係数が満たされるようになる。したがって、順方向8x8 RSTを適用して得られた16個の出力データを図16での4x4左上端領域に満たすことができる。
図16は、本発明が適用される実施形態として、逆方向スキャン順に基づいて64番目から17番目までの逆方向スキャンを実行する過程を示す図である。
前記図16は、順方向スキャン順序が1から始まるとするとき、(順方向スキャン順上)17番目の係数から64番目の係数のスキャンを実行することを示す。ただし、前記図16においては、逆方向スキャンを示しているところ、これは64番目から17番目までの逆方向スキャンを実行することを示す。
前記図16を注意深く見ると、左上端4x4の領域が有効な変換係数が割り当てられる関心領域(Region Of Interest、ROI)であり、残りの領域は空になるようになる。すなわち、前記残りの領域には、0の値がデフォルトで割り当てられることができる。
もし、前記図16のROI領域以外0でない有効な変換係数が存在すると8x8 RSTが適用されないことを意味するので、この場合、それに対応するNSSTインデックスコーディングを省略することができる。
逆に、前記図16のROI領域以外で0でないの変換係数が存在しない場合(8x8 RSTが適用される場合、ROI以外の領域にたいしては、0に割り当てられるとき)8x8 RSTが適用された可能性があるので、NSSTインデックスをコーディングすることができる。
このように、条件付きNSSTインデックスコーディングはゼロではなく、変換係数の存在の有無を確認しなければなのでレジデュアルコーディングプロセスの以後に実行されることができる。
本発明は、RST構造から4x4ブロックに適用することができるRSTの設計及び関連最適化の方法を扱っている。本明細書に記載された実施形態は、4x4 RSTだけでなく、8x8 RSTまたは他の形態の変換にも適用することができる。
図17は、本発明が適用される実施形態として、変換係数のブロック(変換ブロック)の3つの順方向スキャンの順序を示す。
実施形態1:4x4ブロックに適用することができるRST
一つの4x4ブロックに適用することができる非分離変換(non-separable transform)は16x16変換である。つまり、4x4ブロックを構成するデータ要素を行優先(row-first)または列優先(column-first)の一列で並べ配置されると、16x1のベクトルになって非分離変換を適用することができる。
順方向16x16変換は、16個の行(row)方向変換基底ベクトルで構成され、前記16x1ベクトルと各変換基底ベクトルに対して内積(inner product)を適用すると、変換基底ベクトルの変換係数を得ることになる。16個の変換基底ベクトルに対してすべて対応する変換係数を獲得するプロセスは、16x16非分離変換行列と前記入力16x1ベクトルを乗算することと同じである。
行列積に得られる変換係数は、16x1のベクトルの形を有するが、変換係数ごとに統計的特性が異なることがある。たとえば、16x1変換係数ベクトルが0番目の要素から15番目の要素で構成されたとしたとき、0番目の要素の分散は、15番目の要素の分散より大きくなることができる。つまり、前に位置した要素ほど当該分散値が大きく、大きなエネルギーの値を有することができる。
16x1変換係数から逆16x16非分離変換を適用するようにすると、元の4x4ブロックの信号を復元することができる。順方向16x16非分離変換が正規直交変換(orthonormal transform)であれば、当該逆方向16x16変換は順方向16x16変換の転置行列を介して獲得することができる。
逆方向16x16非分離変換行列を16x1変換係数ベクトルに積と、16x1ベクトル形態のデータを獲得し、最初に適用した行優先(row-first)または列優先(column-first)の順序で配列してくれれば4x4ブロック信号を復元することができる。
前述したように、16x1変換係数ベクトルをなす要素は、それぞれ統計的特性が異なることがある。
前方に配置された(0番目の要素と近い)変換係数がさらに大きなエネルギーを有すると、すべての変換係数を使用せずに、先に登場する一部の変換係数に逆方向変換を適用しても、元の信号とかなり近い信号を復元することができる。例えば、逆方向16x16非分離変換が16個の列基底ベクトル(column basis vector)で構成されるとしたとき、L個の列基底ベクトルだけを残し16xL行列を構成することができる。また、変換係数の内、重要なL個の変換係数だけを残した後、(Lx1ベクトル)、16xL行列とLx1ベクトルを乗算すると、元の入力16x1ベクトルデータとの誤差が大きくない16x1ベクトルを復元することができる。
結果的に、L個の係数だけがデータの復元に用いられるので、変換係数を得るときも16x1変換係数ベクトルではなく、Lx1変換係数ベクトルを求めるとよい。つまり、順方向16x16非分離変換行列でL個の当該行(row)方向変換ベクトルを選んでLx16変換を構成した後16x1入力ベクトルを乗算すると、重要なL個の変換係数を得ることができる。
L値は、1≦L<16の範囲を有するようになり、一般的には、16個の変換基底ベクトルの中、任意の方法でL個を選択することができるが、コーディング(符号化)と復号化の観点では、信号のエネルギー側面で重要度が高い変換基底ベクトルを選択することがコーディング効率の観点から有利で有り得る。
実施形態2:4x4 RSTの適用領域の設定と変換係数の配置
4x4 RSTは2次変換に適用されることができ、この時、Dct-type 2などの1次変換(primary transform)が適用されたブロックに対して2次的に適用することができる。1次変換が適用されたブロックのサイズをNxNとするとき、一般的に1次変換が適用されたブロックのサイズは、4x4より大きい。したがって、4x4 RSTを前記NxNブロックに適用するときは、次の2つの方法が有り得る。
実施形態2-1)NxN領域の全て4x4 RSTを適用するのではなく、一部の領域にのみ適用することができる。例えば、左上側MxM領域にのみ適用することができる(M≦N)。
実施形態2-2)、2次変換が適用される領域を4x4ブロックに分割した後、各分割されたブロックの4x4 RSTを適用することができる。
一実施形態として、前記実施形態2-1)と2-2)を混合して適用することもできる。例えば、左上側MxM領域についてのみ4x4ブロックに分割した後、4x4 RSTを適用することができる。
一実施形態として、左上側8x8の領域にのみ2次変換を適用し、NxNブロックが8x8より同じか大きい場合には、8x8 RSTを適用し、NxNブロックが8x8より小さい場合(4x4、8x4、4x8)には、前記実施形態2-2)番のように4x4ブロックに分けた後、それぞれ4x4 RSTを適用することができる。また、4xN / Nx4(N> = 16)である場合にも、4x4 RSTが適用されることができる。
4x4 RSTを適用した後、L個(1≦L<16)の変換係数が生成されたとき、前記L個の変換係数をどのように配置するかの自由度が生じる。しかし、レジデュアルコーディング(residual coding)段階で変換係数を処理する際に決まった順序が存在するので、前記L個の変換係数を2次元ブロックにどのように配置するかに応じて、コーディング性能が変わることがあります。
例えば、HEVCのレジデュアルコーディングの場合DCの位置から最も遠い位置からコーディングを開始する。これはDC位置から遠く離れるほど量子化を経た係数の値が0または0に近いという事実を用いて、コーディング性能を向上させるためである。
したがって、前記L個の変換係数に対しても高いエネルギーを有するさらに、重要な係数をレジデュアルコーディングの順上後でコーディングされるように配置することがコーディング性能面で有利で有り得る。
図17は、HEVCで適用されている4x4変換ブロック(Coefficient Group(CG))単位の3つの順方向スキャンの順序を示す。レジデュアルコーディングでは、前記図17のスキャン順序の逆順に従う(つまり、16から1の順でコーディングする)。
前記図17で提示する3つのスキャン順序はイントラ予測モードに応じて選択されるので、本発明は、前記L個の変換係数に対しても同様にイントラ予測モードに応じてスキャン順序を決定するように構成することができる。
図18は、本発明が適用される実施形態として、左上側4x8ブロックで対角スキャン(diagonal scan)が適用され4x4 RSTが適用されたとき、有効な変換係数の位置と4x4ブロック別順方向スキャンの順序を示す。
前記図17での対角スキャン(diagonal scan)の順序にしたがって左上側4x8ブロックを4x4ブロックに分割して、それぞれ4x4 RSTを適用するときに、Lの値が8であれば(つまり、16個中8個の変換係数だけを残した場合)、前記図18のように変換係数が位置することができる。
各4x4ブロックの半分だけが変換係数を有することができ、Xが表示された位置にたいしては、デフォルトで0の値を割り当てることができる。
したがって、前記図17で提示したスキャン順にしたがってL個の変換係数を各4x4ブロックに配置させ、各4x4ブロックの残り(16 - L)個の位置に対しては0に満たされることを仮定してレジデュアルコーディングを適用することができる。
図19は、本発明が適用される実施形態として、左上側4x8ブロックで対角スキャン(diagonal scan)が適用され4x4 RSTが適用されたときに2 4x4ブロックの有効な変換係数を一つの4x4ブロックにまとめる場合を示す。
前記図19を注意深く見ると、2つの4x4ブロックに配置させたL個の変換係数を一つに結合することができる。特にLの値が8である場合、2つの4x4ブロックの変換係数が一つの4x4ブロックを完全に満たしながら合わせられるので、他の一つの4x4ブロックにはどのような変換係数も残っていないことになる。
したがって、このように空になった4x4ブロックについては、ほとんどのレジデュアルコーディングが不要になるので、対応するcoded_sub_block_flagを0にコーディングすることができる。
また、本発明の一実施形態として、2つの4x4ブロックの変換係数をどのように混在させるかについても様々な方式が適用されることができる。任意の順序に沿って合わせることもできるが、本発明は、次のような方法を提供することができる。
1)2つの4x4ブロックの変換係数をスキャン順に交互に混ぜる。すなわち、前記図18で上側ブロックの変換係数を
とし、下側ブロックの変換係数を
とするとき
のように一つずつ交互に混ぜることができる。または、
と
の順序を変えることもできる。つまり、
が先に出るように設定することができる。
2)最初の4x4ブロックの変換係数を先に配置させ、続いて第2の4x4ブロックの変換係数を配置させることができる。つまり、
のように接続して配置することができる。または、
のように順序を変更することもできる。
実施形態3:4x4 RSTのNSSTインデックスをコーディングする方法
前記図18のように4x4 RSTが適用されると、各4x4ブロックの変換係数のスキャン順序によって、L + 1番目から16番目まで0値が満たすことができる。
したがって、もし2つの4x4ブロックの内、いずれか1つでも、L + 1番目から16番目の位置の中、0でない値が発生すると、4x4 RSTが適用されない場合と分かるようになる。
4x4 RSTもNSSTのように用意された変換セットの内、いずれか1つを選択して適用する構造を有すると、どのような変換を適用するかの変換インデックス(本実施形態においては、NSSTインデックスと命名することができる)をシグナリングすることができる。
もし、あるデコーダでNSSTインデックスを、ビットストリーム解析を通じて知ることができるとして、このような解析をレジデュアルデコーディングの後に実行するとする。
もし、レジデュアルデコーディングが行われ、L + 1番目から16番目の間に0でない変換係数が一つでも存在することが確認されれば、4x4 RSTは適用されないので、NSSTインデックスを解析しないように設定することができる。
したがって、必要な場合にのみNSSTインデックスを選択的に解析するようになってシグナリングコストを削減することができる。
前記図18のように、特定領域内で複数個の4x4ブロックの4x4 RSTが適用されるとすれば(例えば、すべて同じ4x4 RSTが適用されることもでき、それぞれ異なる4x4 RSTが適用されることもできる)、1つのNSSTインデックスを介して前記すべての4x4ブロックに適用される4x4 RSTが指定されることができる。この場合、同じ4x4 RSTが指定されることもあり、またはすべての4x4ブロックのそれぞれに適用される4x4 RSTが指定されることができる。
一つのNSSTインデックスにより前記すべての4x4ブロックの4x4 RST及び適用するかどうかが決定されるので、前記すべての4x4ブロックに対して、L + 1番目から16番目までの位置で、0でない変換係数が存在するかどうかをレジデュアルデコード過程中に確認することができる。確認の結果、1つの4x4ブロックでも許容されない位置に(L + 1番目から16番目までの位置)、0でない変換係数が存在することになるとNSSTインデックスをコーディングしないように構成することができる。
NSSTインデックスはルマブロックとクロマブロックについて別々にシグナリングすることもあり、クロマブロックの場合CbとCrに対してそれぞれ別々のNSSTインデックスをシグナリングすることもでき、一つのNSSTインデックスを共有することもできる。
CbとCrの1つのNSSTインデックスを共有する場合、同じNSSTインデックスが指定する4x4 RSTが適用されることができる。この場合、CbとCrの4x4 RST自体が同じで有り得、NSSTインデックスは同じであるが、個々の4x4 RSTを有することもできる。
共有NSSTインデックスに対して、前述した条件付きシグナリングを適用するには、CbとCrのすべての4x4ブロックに対して、L + 1番目から16番目まで0でない変換係数が存在することを確認して、もし0でない変換係数が存在するとNSSTインデックスのシグナリングしないように構成することができる。
前記図19のように、2つの4x4ブロックの変換係数を合わせる場合に対しても、4x4 RSTが適用されたとき、有効な変換係数が存在しない位置に0でない変換係数が存在するかどうか確認した後NSSTインデックスがシグナリングするかどうかを決定することができる。
例えば、前記図19(b)に示すようにL値が8であり4x4 RST適用時1つの4x4ブロックに対しては、有効な変換係数が存在しない場合(Xで表示されたブロック)、有効変換係数が存在しないブロックのcoded_sub_block_flagを確認することができる。このとき、coded_sub_block_flagが1の場合、NSSTインデックスをシグナリングしないように設定することができる。
実施形態4:NSSTインデックスのコーディングをレジデュアルコーディングの前に実行する場合の最適化方法
NSST インデックスのコーディングをレジデュアルコーディングの前に実行する場合、4x4 RSTを適用するかどうかが予め決定されるため、変換係数が0に割り当てられる位置に対しては、レジデュアルコーディングを省略することができるようになる。
ここで、4x4 RSTを適用するかどうかは、NSSTインデックスを通じて分かるように構成することができる。たとえば、NSSTインデックスが0であると、4x4 RSTを適用しない。
または別の構文要素(e.g. NSST flag)を介してシグナリングすることもできる。たとえば、別の構文要素がNSST flagといえばNSST flagをまず解析して4x4 RSTを適用するかどうかを把握した後、もしNSST flagの値が1であるとすると、有効な変換係数が存在することができない位置に対しては、レジデュアルコーディングを省略することができる。
一実施形態として、レジデュアルコーディングを実行する際、TU上での最後の0ではない変換係数の位置を(最も)最初にコーディングすることになる。もし、NSSTインデックスのコーディングを最後0でない変換係数の位置(last non-zero transform coefficient)のコーディングの後に実行し、最後の0でない変換係数の位置が4x4 RSTの適用を仮定したとき、0でない変換係数(non-zero transform coefficient)が発生することができない位置で判明された場合、NSSTインデックスをコーディングせずに4x4 RSTを適用しないように構成することができる。
例えば、前記図18のXで表示された位置の場合4x4 RSTが適用されたとき、有効な変換係数が位置しないので、(eg 0の値などが満たすことができる)、Xで表示された領域に最後の0でない変換係数が位置するようになると、NSSTインデックスのコーディングを省略することができる。もしXで表示された領域に最後の0でない変換係数が位置しなければ、NSSTインデックスのコーディングを行うことができる。
一実施形態で、最後の0でない変換係数の位置のコーディングの後に条件付きでNSSTインデックスをコーディングして4x4 RSTの適用をするかどうかを確認する場合、残りのレジデュアルコーディング部分は、以下の2つの方式を用いて、処理されることができる。
4x4 RSTを適用しない場合に対しては、一般的なレジデュアルコーディングをそのまま維持する。つまり、最後の0でない変換係数の位置からDCまでのどの位置でも0でない変換係数が存在することができるという仮定の下でコーディングを行う。
4x4 RSTを適用する場合、特定位置または特定4x4ブロックに対しては、変換係数が存在しないため(eg、前記図18のX位置、デフォルトで0に満たすことができる)、対応する位置またはブロックに対しては、レジデュアルコーディングをしないことがある。
例えば、前記図18のXで表示された位置に到達する場合はsig_coeff_flagのコーディングを省略することができる。ここで、sig_coeff_flagは対応する位置に0でない変換係数が存在するかどうかのフラグを意味する。
前記図19に示すように、2つのブロックの変換係数を合わせる場合、0に割り当てられた4x4ブロックについては、coded_sub_block_flagのコーディングを省略し対応する値を0に誘導することができ、対応する4x4ブロックについては、別途コーディングなく、すべて0の値に誘導することができる。
最後の0でない変換係数の位置のコーディングの後にNSSTインデックスをコーディングする場合、最後の0でない変換係数のx位置(Px)とyの位置(Py)がそれぞれTx、Tyよりも小さいときNSSTインデックスコーディングを省略し4x4 RSTを適用しないように構成することができる。
例えば、Tx = 1、Ty = 1の場合は、最後の0でない変換係数がDC位置に存在する場合には、NSSTインデックスコーディングを省略することを意味する。
このようなしきい値との比較を通じて、NSSTインデックスコーディングをするかどうかを決定する方式は、ルマとクロマにそれぞれ違って適用することができる。例えば、ルマとクロマに対しそれぞれ異なるTx、Tyを適用することもあり、ルマには、しきい値を適用してクロマには適用しないこともある。またはその逆の場合も可能である。
前述した2つの方法、すなわち、第一、最後の0でない変換係数が有効な変換係数が存在しない領域に位置する場合、NSSTインデックスコーディングを省略する方法、第二、最後0でない変換係数のX座標とY座標がそれぞれどんなしきい値より小さいときNSSTインデックスコーディングを省略する方法を一緒に適用することもできる。
たとえば、最後の0でない変換係数の位置座標のしきい値を先に確認した後、最後の0でない変換係数が有効な変換係数が存在しない領域に位置するかどうかを確認することができる。または順序を変更することもある。
本実施形態4において提示する方法は、8x8 RSTにも適用することができる。つまり、最後の0でない変換係数が左上側8x8領域内で左上側4x4ではない、領域に位置するようになればNSSTインデックスのコーディングを省略することができ、そうでない場合はNSSTインデックスコーディングを行うことができる。
また、最後の0でない変換係数の位置のX、Y座標の値がすべてしきい値未満の場合NSSTインデックスのコーディングを省略することができる。または、2つの方法を一緒に適用することもできる。
実施形態5:RST適用時ルマとクロマに対しそれぞれ異なるNSSTインデックスコーディング及びレジデュアルコーディング方式を適用
前記実施形態3と実施形態4に記述された方式をルマとクロマにそれぞれ異なるように適用することができる。つまり、ルマとクロマに対するNSSTインデックスコーディング及びレジデュアルコーディング方式が異なるように適用することができる。
例えば、ルマは前記実施形態4の方式を適用し、クロマは前記実施形態3の方式を適用することができる。またはルマは、前記実施形態3または実施形態4に提示された条件付きNSSTインデックスコーディングを適用し、クロマは条件付きNSSTインデックスコーディングを適用しないことができる。またはその逆も可能である。
図20は、本発明が適用される実施形態として、縮小された2次変換(Reduced Secondary Transform、RST)に基づいて、ビデオ信号をエンコードするフローチャートを示す。
エンコーダは、現在のブロックの予測モード、ブロックの形状及び/またはブロックサイズの内、少なくとも一つに基づいて、順方向の2次変換を決定(または選択)することができる(S2010)。この時、前記順方向2次変換の候補は、前記図6及び/または図12の実施形態の内、少なくとも一つを含むことができる。
前記エンコーダは、RD最適化(Rate Distortion optimization)を介して、最適の順方向2次変換を決定することができる。前記最適の順方向2次変換は、複数個の変換の組み合わせの内、いずれか1つに対応することができ、前記複数個の変換の組み合わせは、変換インデックスによって定義することができる。たとえば、RD最適化のために、各候補の順方向2次変換、量子化、レジデュアルコーディングなどをすべて実行した結果を比較することができる。このとき、cost = rate +λ・distortionまたはcost = distortion +λ・rateなどの数式を用いることができるが、本発明はこれに限定されない。
前記エンコーダは、前記最適の順方向2次変換に対応する2次変換インデックスをシグナリングすることができる(S2020)。ここで、前記2次変換インデックスは、本明細書で説明した他の実施形態を適用されることができる。
例えば、前記2次変換インデックスは、前記図12の変換セットの構成を適用することができる。一つの変換のセットは、イントラ予測モードに応じて、2つまたは3つの変換で構成されているので、2次変換を適用しない場合まで含めて、最大4つの変換のいずれか1つを選択するように構成されることができる。4つの変換に対して、それぞれ0、1、2、3のインデックスを付与するとしたとき、前記2次変換インデックスを変換係数のブロックごとにシグナリングして適用される変換を指定することができる。このとき、0番インデックスを恒等行列、すなわち2次変換を適用しない場合に割り当てることができる。
他の一実施形態として、前記2次変換インデックスのシグナリングは、1)レジデュアルコーディング前、2)レジデュアルコーディング中間(最後0でない変換係数の位置コーディング後の)、または3)レジデュアルコーディング後の内、いずれかの段階で実行されることができる。前記実施形態を具体的に説明すると、次の通りである。
レジデュアルコーディング以前に2次変換インデックスをシグナリングする方法
エンコーダは、順方向の2次変換を決定することができる。
前記エンコーダは、前記順方向2次変換に対応する2次変換インデックスをコーディングすることができる。
前記エンコーダは、最後の0でない変換係数の位置をコーディングすることができる。
前記エンコーダは、最後の0でない変換係数の位置以外の構文要素のレジデュアルコーディングを行うことができる。
(2)レジデュアルコーディング中間に2次変換インデックスをシグナリングする方法
エンコーダは、順方向2次変換を決定することができる。
前記エンコーダは、最後の0でない変換係数の位置をコーディングすることができる。
前記最後の0でない変換係数が、特定領域に位置しない場合に、前記エンコーダは、前記順方向2次変換に対応する2次変換インデックスをコーディングすることができる。ここで、前記特定領域は縮小された2次変換が適用される場合、スキャン順序によって変換係数を配置したとき、0でない変換係数が存在することができる位置を除外した残りの領域を示す。ただし、本発明はこれに限定されない。
前記エンコーダは、前記最後の0でない変換係数の位置以外の構文要素のレジデュアルコーディングを行うことができる。
レジデュアルコーディングの後に2次変換インデックスをシグナリングする方法
エンコーダは、順方向2次変換を決定することができる。
前記エンコーダは、最後の0でない変換係数の位置をコーディングすることができる。
前記最後の0でない変換係数が特定領域に位置しない場合に、前記エンコーダは、前記最後の0でない変換係数の位置以外の構文要素のレジデュアルコーディングを行うことができる。ここで、前記特定領域は縮小された2次変換が適用される場合、スキャン順序によって変換係数を配置したとき、0でない変換係数が存在することができる位置を除外した残りの領域を示す。ただし、本発明はこれに限定されない。
前記エンコーダは、前記順方向2次変換に対応する2次変換インデックスをコーディングすることができる。
一方、前記エンコーダは、現在のブロック(レジデュアルブロック)について順方向1次変換を実行することができる(S2030)。ここで、前記順方向1次変換は、前記S2010段階及び/またはS2020段階が類似に適用することができる。
前記エンコーダは、前記最適の順方向二次変換を用いて前記現在のブロックの順方向2次変換を実行することができる(S2040)。例えば、前記最適の順方向2次変換は、縮小された2次変換で有り得る。前記縮小された2次変換は、N個のレジデュアルデータ(Nx1レジデュアルベクトル)が入力されてL個(L <N)の変換係数データ(Lx1変換係数ベクトル)が出力される変換を意味する。
一実施形態として、前記縮小された2次変換は、前記現在のブロックの特定領域に適用することができる。例えば、前記現在のブロックがNxNの時、前記特定領域は、左上側N/2xN/2の領域を意味することができる。しかし、本発明はこれに限定されず、予測モード、ブロックの形状、またはブロックサイズの内、少なくとも一つに基づいて異なるように設定することができる。例えば、前記現在のブロックがNxNの時、前記特定領域は、左上側MxM領域(M≦N)を意味することができる。
一方、前記エンコーダは、前記現在のブロックの量子化を行うことにより、変換係数のブロックを生成することができる(S2050)。
前記エンコーダは、前記変換係数のブロックに対してエントロピーエンコーディングを行い、ビットストリームを生成することができる。
図21は、本発明が適用される実施形態として、縮小された2次変換(Reduced Secondary Transform、RST)に基づいて、ビデオ信号をデコードするフローチャートを示す。
デコーダは、ビットストリームから2次変換インデックスを獲得することができる(S2110)。ここで、前記2次変換インデックスは、本明細書で説明した他の実施形態が適用されることができる。例えば、前記2次変換インデックスは、前記図6及び/または図12の実施形態の内、少なくとも一つを含むことができる。
他の一実施形態として、前記2次変換インデックスの獲得段階は、1)レジデュアルデコーディング以前、2)レジデュアルデコーディング中(最後の0でない変換係数の位置をデコード以後)、または3)レジデュアルデコーディングの以後の内、いずれか一つの段階で実行されることができる。
前記デコーダは、前記2次変換インデックスに対応する2次変換を誘導することができる(S2120)。この時、前記2次変換の候補は、前記図6及び/または図12の実施形態の内、少なくとも一つを含むことができる。
ただし、前記S2110及びS2120ステップは、一実施形態であり、本発明はこれに限定されない。例えば、前記デコーダは、前記2次変換インデックスを獲得せずに、現在のブロックの予測モードでは、ブロックの形状及び/またはブロックサイズの内、少なくとも一つに基づいて、2次変換を誘導することができる。
一方、前記デコーダは、前記ビットストリームをエントロピーデコードして変換係数のブロックを獲得し、前記変換係数のブロックに対して逆量子化を行うことができる(S2130)。
前記デコーダは、前記逆量子化された変換係数のブロックに対して逆方向2次変換を実行することができる(S2140)。例えば、前記逆方向2次変換は、縮小された2次変換で有り得る。前記縮小された2次変換は、N個のレジデュアルデータ(Nx1レジデュアルベクトル)が入力されてL個(L <N)の変換係数データ(Lx1変換係数ベクトル)が出力される変換を意味する。
一実施形態として、前記縮小された2次変換は、現在のブロックの特定領域に適用することができる。例えば、前記現在のブロックがNxNの時、前記特定領域は、左上側N/2xN/2の領域を意味することができる。しかし、本発明はこれに限定されず、予測モード、ブロックの形状、またはブロックサイズの内、少なくとも一つに基づいて違うように設定することができる。例えば、前記現在のブロックがNxNの時、前記特定領域は、左上側MxM領域(M≦N)またはMxL(M≦N、L≦N)を意味することができる。
そして、前記デコーダは、前記逆方向2次変換された結果の逆方向1次変換を実行することができる(S2150)。
前記デコーダは、S2150段階を経てレジデュアルブロックを生成し、前記レジデュアルブロックと予測ブロックが加わり、復元ブロックが生成される。
実施形態6:縮小された(Reduced)MTS(Multiple Transform Selection)
本発明の実施形態においては、予め定義された領域にのみ一次変換(primary transform)を適用することにより、複雑度を改善する方法を提案する。MTSのような様々な複数の変換(または変換カーネル)(例えば、DCT2、DST7、DCT8、DST1、Dct5など)の組み合わせが選択的に一次変換に適用される場合の複雑度が増加することができる。特に、コーディングブロック(または変換ブロック)のサイズが大きくなるほど多様な複数の変換を考慮しなければならないことにより、著しく複雑度が増加することができる。
したがって、本発明においては、複雑度の減少のために、すべての領域に対して変換を実行する(または適用する)のではなく、特定の条件に応じて、予め定義された領域にのみ変換を実行する方法を提案する。
実施形態として、先の図15~21で説明した縮小された変換(RT:Reduced transform)の方法に基づいて、エンコーダ/デコーダは、MxMサイズのピクセルブロック(luma block)に対して一次変換(Primary transform)を適用してMxMサイズの変換ブロックを獲得する代わりに、RxR(M> = R)のサイズの領域にのみ変換を実行することにより、RxRサイズの変換ブロックを獲得することができる。一例として、RxR領域は、現在のブロック(コーディングブロック、変換ブロック)内の左上側(top-left)RxR領域で有り得る。
結果的に、RxR領域にのみ有効な係数(non-zero coefficients)が存在することができる。一例として、この場合、エンコーダ/デコーダは、RxR領域以外の領域内に存在する係数については、計算を実行せずに値を0と見なす(zero-out)ことができる。
また、エンコーダ/デコーダは、コーディングブロック(または変換ブロック)のサイズ及び/または変換(または変換カーネル)の種類に応じて決定される予め定義された領域にのみ一次変換を適用することができる。次の表3は、変換のサイズ(または変換ブロックのサイズ)に応じて、予め定義されたR値を使用するReduced Adaptive Multiple Transform(RAMT)を例示する。本発明において、ブロックサイズに応じて適応的に決定される縮小された変換を示すReduced Adaptive Multiple Transform(RAMT)はReduced MTS(Multiple Transform Selection)、Reduced explicit multiple transform、Reduced primary transformなどで指称されることができる。
表3を参照すると、変換のサイズ(または変換ブロックのサイズ)に応じて、少なくとも一つ以上の縮小された変換が定義されることができる。一実施形態において、表3に例示された縮小された変換の内、いずれの縮小された変換が利用されるかは、現在のブロック(コーディングブロックまたは変換ブロック)に適用される変換(または変換カーネル)に基づいて決定することができる。前記表3では、3つの縮小された変換が利用される場合を仮定するが、本発明がこれに限定されるものではなく、変換のサイズに応じて1つ以上の様々な多くの数の縮小された変換が予め定義されることができる。
また、本発明の実施形態において、前述したreduced adaptive multiple transformを適用することにおいて、reduced transform factor(R)が一次変換に基づいて依存的に決定することができる。例えば、一次変換がDCT2である場合、他の一次変換(例えば、DST7及び/またはDCT8の組み合わせ)に比べて計算量が比較的簡単であるのでサイズが小さいブロックには、縮小された変換を使用しないか、相対的に大きなR値を使用することにより、コーディング性能の低下を最小化することができる。次の表4は、変換のサイズ(または変換ブロックのサイズ)及び変換カーネルに基づいて予め定義されたR値を使用するReduced Adaptive Multiple Transform(RAMT)を例示する。
表4を参照すると、一次変換に適用される変換がDCT2の場合及びその他の変換(例えば、DST7及び/またはDCT8の組み合わせ)である場合、互いに異なるReduced transform factorを用いられる。
図22は、本発明が適用される実施形態として、縮小された変換(Reduced transform)を用いて、ビデオ信号をエンコードする方法を例示する図である。
図22を参照すると、まず、エンコーダは、現在のブロックに変換を適用するかどうかを決定する(S2201)。エンコーダは、決定された結果に基づいて変換スキップフラグ(transform skip flag)をエンコードすることができる。この場合には、変換スキップフラグをエンコードするステップがS2201段階に含めることができる。
エンコーダは、現在のブロックに変換が適用される場合、現在のブロックの一次変換(primary transform)に適用される変換カーネルを決定する(S2202)。エンコーダは、決定された変換カーネルを指示する変換インデックス(transform index)をエンコードすることができ、この場合、変換インデックス(transform index)をエンコードするステップがS2202段階に含めることができる。
エンコーダは、現在のブロックの一次変換に適用される変換カーネル及び現在のブロックのサイズに基づいて、現在のブロックに一次変換(primary transform)が適用される領域を決定する(S2203)。
一実施形態として、エンコーダは、現在のブロック内において、一次変換が適用される領域以外の残りの領域の係数を0とみなすことができる。
また、一実施形態として、エンコーダは、変換インデックスによって指示される変換カーネルが予め定義された変換であり、現在のブロックの幅(width)、及び/または高さ(height)が予め定義されたサイズより大きい場合、前記予め定義サイズの幅及び/または高さを有する領域を前記一次変換が適用される領域に決定することができる。
例えば、前記予め定義された変換は、DST7及び/またはDCT8の組み合わせで構成された複数の変換の組み合わせの内、いずれか1つで有り得、前記予め定義されたサイズは、16で有り得る。または、前記予め定義された変換は、DCT2を除外した残りの変換で有り得る。また、一例として、エンコーダは、前記変換インデックスによって指示される変換カーネルがDCT2であり、前記現在のブロックの幅及び/または高さが32より大きい場合、幅及び/または高さが32である領域を、前記一次変換が適用される領域に決定することができる。
また、一実施形態として、エンコーダは、前記変換インデックスによって指示される変換カーネルが第1変換グループに属する場合、現在のブロックの幅(width)と第1しきい値の内、小さい方の値を前記一次変換が適用される領域の幅で決定し、現在のブロックの高さ(height)及び、第1しきい値の内、小さい方の値を前記一次変換が適用される領域の高さに決定することができる。一例として、第1しきい値は32で有り得るが、本発明がこれに制限されるものではなく、前述した表3または表4のように4、8、16でも有り得る。
そして、エンコーダは、前記変換インデックスによって指示される変換カーネルが第2変換グループに属する場合、現在のブロックの幅と第2しきい値の内、小さい方の値を一次変換が適用される領域の幅に決定し、現在のブロックの高さ及び第2しきい値の内、小さい方の値を一次変換が適用される領域の高さに決定することができる。一例として、第2しきい値は16で有り得るが、本発明がこれに制限されるものではなく、前述した表3または表のように、4、6、8、12、32でも有り得る。
一実施形態として、前記第1変換グループは、DCT2を含み、前記第2変換グループはDST7及び/またはDCT8の組み合わせで構成された複数の変換の組み合わせを含むことができる。
エンコーダは、一次変換が適用される領域に対し、現在のブロックの一次変換に適用される変換カーネルを用いて、順方向一次変換(forward primary transform)を実行する(S2204)。エンコーダは、順方向一次変換を実行することにより、一次変換された変換係数を獲得することができる。一実施形態として、エンコーダは、一次変換された変換係数に二次変換(secondary transform)を適用することができ、この場合、先の図4~図20で説明した方法が適用されることができる。
図23は、本発明が適用される実施形態として、縮小された変換(Reduced transform)を用いて、ビデオ信号のデコード方法を例示する図である。
デコーダは、現在のブロックに変換スキップ(transform skip)が適用されるかどうかを確認する(S2301)。
デコーダは、現在のブロックに変換スキップが適用されない場合、ビデオ信号から現在ブロックに適用される変換カーネル(transform kernel)を指示する変換インデックス(transform index)を獲得する(S2302)。
デコーダは、変換インデックスによって指示される変換カーネル及び、現在のブロックのサイズ(つまり、幅及び/または高さ)に基づいて、現在のブロックの一次変換(primary transform)が適用される領域を決定する(S2303)。
一実施形態として、デコーダは、現在のブロック内において、一次変換が適用される領域以外の残りの領域の係数を0とみなすことができる。
また、一実施形態として、デコーダは、変換インデックスによって指示される変換カーネルが予め定義された変換であり、現在のブロックの幅(width)、及び/または高さ(height)が予め定義されたサイズより大きい場合、前記予め定義されたサイズの幅及び/または高さを有する領域を前記一次変換が適用される領域に決定することができる。
例えば、前記予め定義された変換は、DST7及び/またはDCT8の組み合わせで構成された複数の変換の組み合わせの内、いずれか1つで有り得、前記予め定義されたサイズは、16で有り得る。または、前記予め定義された変換は、DCT2を除外した残りの変換で有り得る。また、一例として、デコーダは、前記変換インデックスによって指示される変換カーネルがDCT2であり、前記現在のブロックの幅及び/または高さが32より大きい場合、幅及び/または高さが32である領域を、前記一次変換が適用される領域に決定することができる。
また、一実施形態として、デコーダは、前記変換インデックスによって指示される変換カーネルが第1変換グループに属する場合、現在のブロックの幅(width)と第1しきい値の内、小さい方の値を前記一次変換が適用される領域の幅に決定し、現在のブロックの高さ(height)及び、第1しきい値の内、小さい方の値を前記一次変換が適用される領域の高さに決定することができる。一例として、第1しきい値は32で有り得るが、本発明がこれに制限されるものではなく、前述した表3または表4のように4、8、16で有り得る。
そして、デコーダは、前記変換インデックスによって指示される変換カーネルが第2変換グループに属する場合、現在のブロックの幅及び第2しきい値の内、小さい方の値を一次変換が適用される領域の幅を決定し、現在のブロックの高さ及び第2しきい値の内、小さい方の値を一次変換が適用される領域の高さに決定することができる。一例として、第2しきい値は16で有り得るが、本発明がこれに制限されるものではなく、前述した表3または表4のように、4、6、8、12、32で有り得る。
一実施形態でとして、前記第1変換グループは、DCT2を含み、前記第2変換グループはDST7及び/またはDCT8の組み合わせで構成された複数の変換の組み合わせを含むことができる。
デコーダは、一次変換が適用される領域に対し、変換インデックスによって指示される変換カーネルを用いて、逆方向一次変換(inverse primary transform)を実行する(S2304)。デコーダは、逆方向一次変換を実行することにより、一次逆変換された変換係数を獲得することができる。一実施形態として、デコーダは、一次変換を実行する前に、逆量子化された変換係数に二次変換(secondary transform)を適用することができ、この場合、先の図4~図20で説明した方法が適用されることができる。
本発明の実施形態に係ると、特定の条件に応じて、予め定義された領域にのみ変換を実行することにより、worst case複雑度を顕著に減少させることができる。
実施形態7:縮小された変換(Reduced Transform)
本発明の実施形態においては、変換の複雑性の問題を改善するために先の図15乃至図23で提案された縮小された変換の様々な実施形態を説明する。前述したように、本発明で提案する縮小された変換は、1次変換(primary transform)(例えば、Dct、DST)や2次変換(secondary transform)(例えば、NSST、LFNST(Low-Frequency Non-Separable Transform ))に関係なく適用することができる。
図24は、本発明が適用されることができる実施形態として、縮小された因子(reduced factor)に基づいた縮小された変換構造を例示する図である。
図24を参照すると、説明の便宜のためにデコーダを中心に説明するが、本実施形態で提案する縮小された変換は、エンコーダでも同じように適用することができる。
デコーダは、逆方向の縮小された変換は、逆量子化された変換係数に適用することができる。このとき、縮小された変換を実行するためにデコーダは、予め決定された(または予め定義された)縮小された因子(例えば、RまたはR/N)及び/または変換カーネルが用いられる。
一実施形態において、変換カーネルは、現在のブロック(コーディングブロックまたは変換ブロック)のサイズ(例えば、幅/高さ)、イントラ/インター予測モード、CIdxなどのような利用可能な情報に基づいて選択することができる。現在のコーディングブロックがルマブロックである場合、CIdxは0の値を有することができる。そうでなければ(つまり、現在のコーディングブロックがCbまたはCrブロックの場合)CIdxは1のような0でない値を有することができる。
図25は、本発明が適用されることができる実施形態として、縮小された変換を適応的に適用してデコードを実行する方法を例示する図である。
図25を参照すると、説明の便宜のためにデコーダを中心に説明するが、本実施形態で提案する縮小された変換を用いて変換を実行する方法は、エンコーダでも同じように適用することができる。
デコーダは、現在のブロックに逆量子化を行う(S2501)。
デコーダは、現在のブロックに変換が適用され(または使用され)るかどうかを確認する(S2502)。もし、現在のブロックに変換が適用されない場合、デコーダは、変換プロセスを終了する。
デコーダは、現在のブロックに変換が適用される場合、ビデオ信号から現在ブロックに適用される変換カーネル(transform kernel)を指示する変換インデックス(transform index)を解析する(S2503)。
デコーダは、縮小された逆変換条件を満たすか確認する(S2504)。もし、縮小された逆変換条件を満たしていない場合、デコーダは、現在のブロックに正規逆変換を実行する(S2505)。もし、縮小された逆変換条件を満たす場合、デコーダは、現在のブロックに縮小された逆変換を実行する(S2507)。このとき、デコーダは、S2503段階で解析した変換インデックスに基づいて、現在のブロックに適用される変換カーネルを選択することができる(S2506)。実施形態として、変換カーネルは、現在のブロック(コーディングブロックまたは変換ブロック)のサイズ(例えば、幅/高さ)、イントラ/インター予測モード、CIdxなどのような利用可能な情報に基づいて選択することができる。また、現在のブロックに縮小された逆変換が適用される場合、S2506のステップはreduced factorを選択するステップを含むことができる。
一実施形態において、縮小された逆変換条件は、前述した6の条件(例えば、表3、4)を適用することができる。つまり、現在のブロック(コーディングブロックまたは変換ブロック)のサイズ及び変換タイプ(または変換カーネル)に基づいて縮小された逆変換を適用するかどうかを決定することができる。
一例として、縮小された変換は、次の特定の条件が満たされるときに用いられる。つまり、次の特定条件を満たす一定のサイズ以上の(または一定のサイズより大きい)ブロックに適用することができる。
- Width> TH && Height> TH(ここで、THは、予め定義された値(例えば、4)に、特定のしきい値を示す)
Or
- Width * Height> K && MIN(width、height)> TH(ここで、K、THは、予め定義された値であり、特定のしきい値を示す)
他の一例として、縮小された変換は、次の特定の条件が満たされるときに用いられる。つまり、次の特定の条件を満たす一定のサイズ以下の(または一定サイズより小さい)ブロックに適用することができる。
- Width <= TH && Height <= TH(ここで、THは、予め定義された値(例えば、8)で、特定しきい値を示す)
or
- Width * Height <= K && MIN(width、height)<= TH(ここで、K、THは、予め定義された値であり、特定しきい値を示す)
他の一例として、縮小された変換は、次のように予め決定されたブロックのグループのみに適用することができる。
- Width == TH && Height == TH
Or
- Width == Height
実施形態として、縮小された変換の使用条件が満たされなければ、正規変換が適用されることができる。具体的に、正規変換はエンコーダ/デコーダに予め定義され、使用可能で有り得る。以下は、正規変換の例を示す。
- Dct2、Dct4、Dct5、Dct7、Dct8
Or
- DST1、DST4、DST7、
or
- Non separable transform
or
- NSST(HyGT)
or
- LFNST(Low-Frequency Non-Separable Transform)
前述した条件は、次の表5のような論理演算子に基づいて解釈されることができる。
また、図25に示すように、縮小された変換条件は、現在のブロックに適用される変換を示す変換インデックス(Transform_idx)に依存することができる。一例として、前記Transform_idxは2回、エンコーダからデコーダに転送されることができる。一つは、横方向の変換インデックス(Transform_idx_h)であり、他の一つは、縦方向の変換インデックス(Transform_idx_v)で有り得る。
図26は、本発明が適用されることができる実施形態として、縮小された変換を適応的に適用してデコードを実行する方法を例示する図である。
図26を参照すると、説明の便宜のためにデコーダを中心に説明するが、本実施形態において提案する縮小された変換を用いて変換を実行する方法は、エンコーダにおいても同じように適用することができる。
本発明の一実施形態において、前述した縮小変換は、二次変換に用いられる。関連して、先の図25で説明した方法と重複する説明は省略する。
1)デコーダは、現在のブロックに逆量子化を実行した後、現在のブロックにNSST活性化するかどうかを確認する。デコーダはNSSTインデックスを解析する必要があるか、予め定義された条件を使用して決定することができる。
NSSTが活性化された場合、デコーダはNSSTインデックスを解析し、縮小された二次逆変換が適用するかどうかを確認する。
3)デコーダは縮小された二次逆変条件を満たすか確認する。
4)もし、縮小された逆変換条件を満たしていない場合、デコーダは、現在のブロックに正規の二次逆変換を実行する。
5)もし、縮小された二次逆変換条件を満たす場合、デコーダは、現在のブロックに縮小された二次逆変換を実行する。
6)このとき、デコーダはNSSTインデックスに基づいて、現在のブロックに適用される変換カーネルを選択することができる。実施形態として、変換カーネルは、現在のブロック(コーディングブロックまたは変換ブロック)のサイズ(例えば、幅/高さ)、イントラ/インター予測モード、CIdxなどのような利用可能な情報に基づいて選択することができる。また、現在のブロックに縮小された二次逆変換が適用される場合、デコーダはreduced factor(縮小因子)を選択することができる。
一実施形態において、縮小された二次逆変換条件は、前述した6の条件(例えば、表3、4)が適用されることができる。つまり、現在のブロック(コーディングブロックまたは変換ブロック)のサイズ及び変換タイプ(または変換カーネル)に基づいて縮小された逆変換を適用するかどうかが決定されることができる。
実施形態8:Reduced Transform as a Secondary Transform with Different Block Size
本発明の一実施形態において、二次変換/二次逆変換に用いられる様々なブロックサイズを考慮した縮小された変換を提案する。一例として、二次変換/二次逆変換に用いられる4x4、8x8、16x16の異なるブロックサイズの縮小された変換が定義されることができる。
図27及び図28は、本発明が適用される実施形態として、順方向縮小された二次変換(forward reduced secondary transform)及び逆方向縮小された二次変換(forward reduced secondary transform)の一例及びこれを誘導するための擬似コードを例示する図である。
図27及び図28を参照すると、二次変換が適用されるブロックが8x8ブロックであり、減少係数R = 16の場合の縮小された二次変換及び縮小された二次逆変換を示す。図27に示すような縮小された二次変換及び縮小された二次逆変換は、図28に示された擬似コードを用いて誘導することができる。
実施形態9:Reduced Transform as a Secondary Transform with Non-Rectangular Shape
前述したように、非分離変換が適用される二次変換の複雑度の問題により、従来の映像圧縮技術においては、コーディングブロック(または変換ブロック)の左上側4x4または8x8領域に二次変換が適用される。
本発明の実施形態においては、4x4または8x8の正方形領域のほか、非正方形の様々な多くの図形に対して縮小された二次変換を適用する方法を提案する。
図29は、本発明が適用される実施形態として、正方形でない領域に縮小された二次変換を適用する方法を例示する図である。
図29を参照すると、一実施形態において、縮小された二次変換は、図29に示すように、ブロックの一部のみ適用されることができる。
図29において、各正方形は、4x4の領域を示す。したがって、エンコーダ/デコーダは10x4ピクセル、すなわち160ピクセルの領域に対して縮小された二次変換を適用することができる。この場合、減少係数R = 16に該当し、全体のRST行列は16x160行列に該当し、これにより、二次変換を適用することによる計算の複雑度を減らすことができる。
実施形態10:Reduced Factor
図30は、本発明が適用される実施形態として、縮小因子によって制御される縮小された変換を例示する図である。
図30を参照すると、前述したように、本発明の実施形態に係る縮小変換は、図30に示すように、縮小因子によって制御されることができる。
具体的には、縮小因子を修正すると、メモリの複雑度及び乗算演算の数が修正されることができる。先の図15及び数学式6で縮小因子をR/Nで言及したように縮小因子修正を介して、メモリと乗算が減少することができる。例えば、R = 16である8x8 NSSTの場合、メモリと乗算は1/4ずつ減少することができる。
実施形態11:High Level Syntax
本発明の実施形態においては、縮小された変換を上位レベルで制御するための上位レベルの構文構造を提案する。
一実施形態において、次の表6の例示のように、SPS(sequence parameter set)を介して縮小された変換が許容するかどうか、サイズ、及び/または縮小因子に関する情報が転送されることができる。ただし、本発明がこれに限定されるものではなく、前述した構文はPPS(picture parameter set)、スライスヘッダ(slice header)などを介してシグナリングされることもできる。
表6を参照すると、Reduced_transform_enabled_flagが1であれば縮小された変換が使用可能であり、適用することができる。 Reduced_transform_enabled_flagが0であれば、縮小された変換を使用することができないことを示す。もし、Reduced_transform_enabled_flagが存在しない場合、その値は0と同じであると推定することができる。
Reduced_transform_factorは縮小された変換のための縮小された次元の数を指定する構文要素を示す。
min_reduced_transform_sizeは縮小された変換を適用する最小変換サイズを指定する構文要素を示す。min_reduced_transform_sizeが存在しない場合、その値は0と同じであると推定することができる。
max_reduced_transform_sizeは縮小された変換を適用する最大の変換サイズを指定する構文要素を示す。max_reduced_transform_sizeがなければ0と同じであると推定することができる。
reduced_transform_size縮小された変換のための縮小された次元の数を指定する構文要素を示す。Reduced_transform_factorがなければ0と同じであると推定 することができる。
実施形態12:secondary transform kernels
本発明の実施形態においては、様々な二次変換カーネルを提案する。
一実施形態において、DCモードのための4x4 NSSTカーネルは次の表7のように定義することができる。
また、一実施形態において、プランナー(planar)モードのための4x4 NSSTカーネルは次の表8のように定義することができる。
また、一実施形態において、DCモードのための8x8 NSSTカーネルは次の表9のように定義することができる。
また、一実施形態において、プランナー(planar)モードのための8x8 NSSTカーネルは次の表10のように定義することができる。
先に注意深く見た表7~10の変換カーネルは、縮小された変換のために、さらに小さなサイズの変換カーネルに定義することができる。
たとえば、DCモードでありR=8である4x4 NSSTの場合、メモリ及び乗算は1/2に減少することができる。したがって、縮小された変換カーネルは、先に表7の変換カーネルの上側半分だけの係数(8x16行列)だけ維持することにより、次の表11のように、さらに小さなサイズで定義することができる。
別の例において、DCモードでありR=16である8x8 NSSTの場合、メモリ及び乗算は1/4に減少することができる。したがって、縮小された変換カーネルは、先の表9の変換カーネルの上側1/4だけの係数(16x64行列)を維持することにより、次の表12のように、さらに小さなサイズで定義することができる。
前述した例において、それぞれの変換係数は、9ビット(すなわち、1ビット:符号、8ビット:0~255の絶対値)で表現される。本発明の一実施形態において、様々な精密度(precision)が変換係数を示すために用いられる。例えば、9ビットの代わりに8ビットが各係数を表すために用いられる。この場合、符号ビットは変更されないが、絶対値の範囲は変更されることができる。
以上で説明した本発明の実施形態は、説明の便宜上、それぞれの実施形態を区分して説明したが、本発明がこれに限定されるものではない。つまり、先に説明した実施形態1~12で説明した実施形態は、それぞれ独立に実行されることもあり、1つ以上の多くの実施形態が組み合わされて実行されることもある。
図31は、本発明が適用される実施形態に係る逆変換部例示する図である。
図31においてはは、説明の便宜のために逆変換部を一つのブロックで図示したが、インター予測部はエンコーダ及び/またはデコーダに含まれる構成で実現されることができる。
図31を参照すると、逆変換部は先の図4~図30で提案された機能、プロセス及び/または方法を実現する。具体的に、逆変換部は変換スキップ確認部3101、変換インデックス獲得部3102と一次逆変換部3103を含みから構成されることができる。
変換スキップ確認部3101は、現在のブロックに変換スキップ(transform skip)が適用されるかどうかを確認する。
変換インデックス獲得部3102は、現在のブロックに変換スキップが適用されない場合、ビデオ信号から現在ブロックに適用される変換カーネル(transform kernel)を指示する変換インデックス(transform index)を獲得する。
一次逆変換部3103は、変換インデックスによって指示される変換カーネル及び、現在のブロックのサイズ(つまり、幅及び/または高さ)に基づいて、現在のブロックの一次変換(primary transform)が適用される領域を決定する。
一実施形態として、一次逆変換部3103は、現在のブロック内で、一次変換が適用される領域以外の残りの領域の係数を0と見なすことができる。
また、一実施形態として、一次逆変換部3103は、変換インデックスによって指示される変換カーネルが予め定義された変換であり、現在のブロックの幅(width)、及び/または高さ(height)が予め定義されたサイズより大きい場合、前記予め定義されたサイズの幅及び/または高さを有する領域を前記一次変換が適用される領域に決定することができる。
例えば、前記の予め定義された変換は、DST7及び/またはDCT8の組み合わせで構成された複数の変換の組み合わせの内、いずれか1つで有り得、前記予め定義されたサイズは、16で有り得る。または、前記予め定義された変換は、DCT2を除外した残りの変換で有り得る。また、一例として、一次逆変換部3103は、前記変換インデックスによって指示される変換カーネルがDCT2であり、前記現在のブロックの幅及び/または高さが32より大きい場合、幅及び/または高さが32である領域を前記一次変換が適用される領域に決定することができる。
また、一実施形態として、一次逆変換部3103は、前記変換インデックスによって指示される変換カーネルが第1変換グループに属する場合、現在ブロックの幅(width)及び第1しきい値の内、小さい方の値を前記一次変換が適用される領域の幅で決定し、現在のブロックの高さ(height)及び、第1しきい値の内、小さい方の値を前記一次変換が適用される領域の高さに決定することができる。一例として、前記第1しきい値は32で有り得るが、本発明がこれに限定されるものではなく、前述した表3または表4のように4、8、16であることもある。
そして、デコーダは、前記変換インデックスによって指示される変換カーネルが第2変換グループに属する場合、現在のブロックの幅と第2しきい値の内、小さい方の値を一次変換が適用される領域の幅で決定し、現在のブロックの高さ及び第2しきい値の内、小さい方の値を一次変換が適用される領域の高さに決定することができる。一例として、前記第2しきい値は16で有り得るが、本発明がこれに限定されるものではなく、前述した表3または表4のように、4、6、8、12、32で有り得る。
一実施形態として、前記第1変換グループは、DCT2を含み、前記第2変換グループはDST7及び/またはDCT8の組み合わせで構成された複数の変換の組み合わせを含むことができる。
一次逆変換部3103は、一次変換が適用される領域に対し、変換インデックスによって指示される変換カーネルを用いて、逆方向一次変換(inverse primary transform)を実行する。一次逆変換部3103は、逆方向一次変換を実行することにより、一次逆変換された変換係数を獲得することができる。一実施形態として、デコーダは、一次変換を実行する前に、逆量子化された変換係数に二次変換(secondary transform)を適用することができ、この場合、先に図4~図20で説明した方法が適用されることができる。
図32は、本発明が適用されるビデオコーディングシステムを示す。
ビデオコーディングシステムは、ソースデバイス(source device)及び受信デバイス(receiving device)を含むことができる。ソースデバイスは、エンコードされたビデオ/映像情報やデータを、ファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信デバイスに伝達することができる。
前記ソースデバイスは、ビデオソース(videosource)、エンコード装置(encoding apparatus)、転送部(transmitter)を含むことができる。前記受信デバイスは、受信部(receiver)、デコード装置(decoding apparatus)及びレンダラー(renderer)を含むことができる。前記エンコード装置は、ビデオ/映像エンコード装置と呼ばれることができ、前記デコード装置は、ビデオ/映像デコード装置と呼ばれることができる。送信機は、エンコード装置に含まれることができる。受信機は、デコード装置に含まれることができる。レンダラーは、ディスプレイ部を含むこともでき、ディスプレイ部は別個のデバイスまたは外部のコンポーネントで構成されることもある。
ビデオソースはビデオ/映像のキャプチャ、合成または生成過程などを通じてビデオ/映像を獲得することができる。ビデオソースはビデオ/映像キャプチャデバイス及び/またはビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャデバイスは、例えば、1つ以上のカメラ、以前にキャプチャされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えばコンピュータ、タブレット及びスマートフォンなどを含むことができ、(電子的に)ビデオ/画像を生成することができる。たとえば、コンピュータなどを通じて、仮想のビデオ/映像が生成されることができ、この場合、関連するデータが生成される過程で、ビデオ/映像キャプチャプロセスが代えることができる。
エンコード装置は、入力ビデオ/映像をエンコードすることができる。エンコード装置は、圧縮及びコーディング効率のために予測、変換、量子化などの一連の手順を実行することができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bitstream)の形で出力されることができる。
転送部は ビットストリームの形で出力され、エンコードされたビデオ/映像情報またはデータを、ファイルまたはストリーミング形態でデジタル格納媒体またはネットワークを介して受信デバイスの受信部に伝達することができる。デジタル格納媒体は、USB、SD、CD、DVD、Blu-ray、HDD、SSDなど、様々な格納媒体を含むことができる。伝送部は、予め決まれたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介して転送ための要素を含むことができる。受信部は、前記ビットストリームを抽出してデコード装置に伝達することができる。
デコード装置は、エンコード装置の動作に対応する逆量子化、逆変換、予測などの一連の手順を実行して、ビデオ/映像をデコードすることができる。
レンダラーは、デコードされたビデオ/映像をレンダリングすることができる。レンダリングされたビデオ/映像は、ディスプレイ部を介してディスプレイされることができる。
図33は、本発明が適用される実施形態として、コンテンツストリーミングシステム構造図を示す。
図33に示すように、本発明が適用されるコンテンツストリーミングシステムは、大きくエンコードサーバ、ストリーミングサーバ、ウェブサーバ、メディア格納所、ユーザ装置及びマルチメディア入力装置を含む。
前記エンコードサーバは、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これを前記ストリーミングサーバに送信する役割を果たす。他の例として、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置がビットストリームを直接生成する場合、前記エンコードサーバは省略されてもよい。
前記ビットストリームは、本発明が適用されるエンコード方法又はビットストリーム生成方法により生成され、前記ストリーミングサーバは、前記ビットストリームを送信又は受信する過程で一時的に前記ビットストリームを格納することができる。
前記ストリーミングサーバは、ウェブサーバに介するユーザ要求に基づいてマルチメディアデータをユーザ装置に送信し、前記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒介の役割を果たす。ユーザが前記ウェブサーバにご希望のサービスを要求すると、前記ウェブサーバはこれをストリーミングサーバに伝達し、前記ストリーミングサーバはユーザにマルチメディアデータを送信する。ここで、前記コンテンツストリーミングシステムは別途の制御サーバを含んでもよく、この場合、前記制御サーバは、前記コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割を果たす。
前記ストリーミングサーバは、メディア格納所及び/又はエンコードサーバからコンテンツを受信する。例えば、前記エンコードサーバからコンテンツを受信する場合、前記コンテンツをリアルタイムに受信できる。この場合、円滑なストリーミングサービスを提供するために、前記ストリーミングサーバは前記ビットストリームを一定時間格納することができる。
前記ユーザ装置の例としては、携帯電話、スマートフォン(smart phone)、ノートブックコンピュータ(laptop computer)、デジタル放送用端末、PDA(personal digital assistants)、PMP(portable multimedia player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)、ウェアラブルデバイス(wearable device、例えば、スマートウォッチ(smartwatch)、スマートグラス(smart glass)、HMD(head mounted display))、デジタルTV、デスクトップコンピュータ、デジタルサイネージなどを有することができる。
前記コンテンツストリーミングシステム内の各サーバは、分散サーバとして運営でき、この場合、各サーバで受信するデータは分散処理されることができる。
前述したように、本発明で説明した実施形態は、プロセッサ、マイクロプロセッサ、コントローラ又はチップ上で実現されて行われることができる。例えば、各図面に示す機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラまたはチップ上で実現されて行われることができる。
また、本発明が適用されるデコーダ及びエンコーダは、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ会話装置、ビデオ通信などのリアルタイム通信装置、モバイルストリーミング装置、格納媒体、カムコーダ、注文型ビデオ(VoD)サービス提供装置、OTT(Over the top video)装置、インターネットストリーミングサービス提供装置、3次元(3D)ビデオ装置、画像電話ビデオ装置、及び医療用ビデオ装置などに含まれることができ、ビデオ信号及びデータ信号を処理するために使用できる。例えば、OTTビデオ(Over the top video)装置としては、ゲームコンソール、ブルーレイプレーヤー、インターネット接続TV、ホームシアターシステム、スマートフォン、タブレットPC、DVR(Digital Video Recoder)などが含まれる。
また、本発明が適用される処理方法は、コンピュータにより実行されるプログラムの形態で生産されることができ、コンピュータにより読み取りできる格納媒体に格納できる。本発明によるデータ構造を有するマルチメディアデータもまたコンピュータにより読み取りできる格納媒体に格納できる。前記コンピュータにより読み取りできる格納媒体は、コンピュータにより読み取りできるデータが格納される全ての種類の格納装置及び分散格納装置を含む。前記コンピュータにより読み取りできる格納媒体は、例えば、ブルーレイディスク(BD)、汎用直列バス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピ(登録商標)ディスク、及び光学データ格納装置を含むことができる。また、前記コンピュータにより読み取りできる格納媒体は、搬送波(例えば、インターネットを介する送信)の形態で実現されたメディアを含む。また、エンコード方法により生成されたビットストリームがコンピュータにより読み取りできる格納媒体に格納されるか、有無線通信ネットワークを介して送信できる。
また、本発明の実施形態は、プログラムコードによるコンピュータプログラム製品として実現することができ、前記プログラムコードは、本発明の実施形態により、コンピュータ上で実行することができる。前記プログラムコードは、コンピュータによって読み取り可能なキャリア上に格納することができる。
以上で説明した実施形態は、本発明の構成要素と特徴が所定形態で結合されたものである。各構成要素または特徴は、別の明示的な言及がない限り選択的なもので検討されるべきである。各構成要素または特徴は、他の構成要素や特徴と結合されない形態で実施されることができる。また、一部の構成要素及び/または特徴を結合して、本発明の実施形態を構成することも可能である。本発明の実施形態で説明される動作の順序は変更されることができる。いずれの実施形態の一部の構成や特徴は、他の実施形態に含まれることができ、または他の実施形態に対応する構成または特徴と交替することができる。特許請求の範囲で明示的な引用関係がない請求項を結合して実施形態を構成したり、出願後の補正により新しい請求項として含めることができることは自明である。
本発明に係る実施形態は、様々な手段、例えば、ハードウェア、ファームウェア(firmware)、ソフトウェアまたはそれらの組み合わせなどにより実現されることができる。ハードウェアによる実現の場合、本発明の一実施形態は、一つまたはそれ以上のASICs(application specific integrated circuits)、DSPS(digital signal processors)、DSPDs(digital signal processing devices)、PLDs(programmable logic devices)、FPGAs( field programmable gate arrays)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどにより実現されることができる。
ファームウェアやソフトウェアによる実現の場合、本発明の一実施形態は、以上で説明した機能または動作を実行するモジュール、プロシージャ、関数などの形態で具現されることができる。ソフトウェアコードは、メモリに格納されてプロセッサによって駆動されることができる。前記メモリは、前記プロセッサの内部または外部に位置して、既に公知された多様な手段により、前記プロセッサとデータを送受信することができる。
本発明は、本発明の必須の特徴を逸脱しない範囲で他の特定の形態で具体化されることは、当業者に自明である。したがって、前述した詳細な説明は、すべての面で制限的に解釈してはならないされ、例示的なものとみなされるべきである。本発明の範囲は、添付された請求項の合理的解釈によって決定されるべきであり、本発明の等価的範囲内でのすべての変更は、本発明の範囲に含まれる。