以下、本発明に係る好適な実施の形態を添付の図面を参照して、詳細に説明する。添付された図面と一緒に以下に開示される詳細な説明は、本発明の例示的な実施形態を説明しようとするものであり、本発明が実施されることができる唯一の実施形態を示したいのではない。以下の詳細な説明は、本発明の完全な理解を提供するために具体的な細部事項を含む。しかし、当業者は、本発明がこのような具体的な詳細事項がなくても実施できることが分かる。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造及び装置は省略されるか、各構造及び装置の核心機能を中心としたブロック図の形式で示されることができる。
さらに、本発明で用いられる用語は、可能な限り、現在広く用いられる一般的な用語を選択したが、特定の場合には、出願人が任意に選定した用語を使用して説明する。そのような場合には、当該部分の詳細説明で、その意味を明確に記載するため、本発明の説明で使用された用語の名称のみで単純に解釈されてはならないものであり、その当該用語の意味まで把握して解釈されるべきであることを明らかにしておく。
以下の説明で用いられる特定の用語は、本発明の理解を助けるために提供されたものであり、このような特定の用語の使用は、本発明の技術的思想を逸脱しない範囲で他の形態に変更されることができる。例えば、信号、データ、サンプル、ピクチャ、フレーム、ブロックなどの場合、各コーディングの過程で適切に代替されて解釈されることがある。
以下、本明細書において「処理ユニット」は、予測、変換、及び/または量子化などのようなエンコード/デコードの処理過程が実行される単位を意味する。また、処理ユニットは、輝度(luma)成分の単位と色差(chroma)成分の単位を含む意味で解釈されることができる。例えば、処理ユニットは、ブロック(block)、コーディングユニット(coding unit、CU)、予測ユニット(prediction unit、PU)、または変換ブロック(transform unit、TU)に該当することができる。
また、処理ユニットは、輝度成分の単位または色差成分の単位として解釈されることができる。例えば、処理ユニットは、輝度成分のCTB、CB、PU、またはTBに当該することができる。または、処理ユニットは、色差成分のCTB、CB、PU、またはTBに当該することができる。また、これに限定されるものではなく処理ユニットは、輝度成分の単位と色差成分の単位を含む意味で解釈されることもある。
また、処理ユニットは、必ず正方形のブロックに限定されるものではなく、3つ以上の頂点を有する多角形の形で構成されることもある。
なお、以下、本明細書でピクセルまたは画素などをサンプルとして通称する。そして、サンプルを用いるとすることは、ピクセル値または画素値などを用いることを意味することができる。
図1は、本発明が適用される実施形態として、映像コーディングシステムの例を示す。
映像コーディングシステムは、ソースデバイ10及び受信デバイス20を含むことができる。ソースデバイ10は、エンコードされたビデオ/映像情報またはデータを、ファイルまたはストリーミング形態でデジタル貯蔵媒体またはネットワークを介して受信デバイス20に転達することができる。
ソースデバイ10は、ビデオソース11、エンコード装置12、送信機13を含むことができる。受信デバイス20は、受信機21、デコード装置22及びレンダラー23を含むことができる。エンコード装置10は、ビデオ/映像エンコード装置と呼ばれることができ、デコード装置20は、ビデオ/映像デコード装置と呼ばれることができる。送信機13は、エンコード装置12に含まれることができる。受信機21は、デコード装置22に含まれることができる。レンダラー23は、ディスプレイ部を含むこともでき、ディスプレイ部の別のデバイスまたは外部のコンポーネントで構成されることもある。
ビデオソースはビデオ/映像のキャプチャ、合成または生成過程などを通じてビデオ/映像を獲得することができる。ビデオソースはビデオ/映像キャプチャデバイス及び/またはビデオ/映像生成デバイスを含むことができる。ビデオ/映像キャプチャデバイスは、例えば、一つ以上のカメラ、以前にキャプチャされたビデオ/映像を含むビデオ/映像アーカイブなどを含むことができる。ビデオ/映像生成デバイスは、例えばコンピュータ、タブレット及びスマートフォンなどを含むことができ、(電子的に)ビデオ/映像を生成することができる。たとえば、コンピュータなどを通じて、仮想のビデオ/映像が生成されることができ、この場合、関連するデータが生成される過程で、ビデオ/映像キャプチャプロセスが代えることができる。
エンコード装置12は、入力ビデオ/映像をエンコードすることができる。エンコード装置12は、圧縮およびコーディング効率のために予測、変換、量子化などの一連の手順を実行することができる。エンコードされたデータ(エンコードされたビデオ/映像情報)は、ビットストリーム(bitstream)の形で出力されることができる。
転送部13は、ビットストリームの形態で出力されたエンコードされたビデオ/映像情報またはデータを、ファイルまたはストリーミング形態でデジタル貯蔵媒体またはネットワークを介して受信デバイスの受信部に転達することができる。デジタル貯蔵媒体は、USB、SD、CD、DVD、Blu-ray、HDD、SSDなど、様々な貯蔵媒体を含むことができる。転送部13は、予め決まれたファイルフォーマットを介してメディアファイルを生成するためのエレメントを含むことができ、放送/通信ネットワークを介した転送のためのエレメントを含むことができる。受信機21は、ビットストリームを抽出してデコード装置22に転達することができる。
デコード装置22は、エンコード装置12の動作に対応する逆量子化、逆変換、予測など一連の手順を実行して、ビデオ/映像をデコードすることができる。
レンダラー(renderer)23は、デコードされたビデオ/映像をレンダリングすることができる。レンダリングされたビデオ/映像は、ディスプレイ部を介してディスプレイされることができる。
図2は、本発明が適用される実施形態として、ビデオ/映像信号のエンコーディングが行われるエンコード装置の概略的なブロック図を示す。図2のエンコード装置100は、図1のエンコード装置12に対応することができる。
映像分割部110は、エンコード装置100に入力された入力画像(または、ピクチャ、フレーム)を一つ以上の処理ユニット(processing unit)に分割することができる。一例として、前記処理ユニットは、コーディングユニット(CU)と呼ばれることができる。この場合、コーディングユニットは、コーディングツリーユニット(coding tree unit、CTU)または最大コーディングユニット(largest coding unit、LCU)からQTBT(Quad-tree binary-tree)構造に基づいて再帰的に(recursively)に分割されることができる。例えば、一つのコーディングユニットは、クワッドツリー構造及び/またはバイナリツリー構造に基づいて、下位(deeper)デプスの複数のコーディングユニットに分割されることができる。この場合、例えば、クワッドツリー構造が先適用され、バイナリツリー構造が、後で適用されることができる。またはバイナリツリー構造が先に適用されることもある。これ以上分割されない最終コーディングユニットをベースに、本発明に係るコーディング手順が実行されることができる。この場合、映像の特性に応じたコーディング効率などに基づいて、最大コーディングユニットがすぐに最終的なコーディングユニットとして用いることができ、または必要に応じてコーディングユニットは、再帰的に(recursively)より下位デプスのコーディングユニットに分割され、最適のサイズのコーディングユニットが最終コーディングユニットとして用いられる。ここでコーディング手順とは、後述する予測、変換、及び復元などの手続きを含むことができる。他の例として、前記処理ユニットは、予測ユニット(PU:Prediction Unit)または変換ユニット(TU:Transform Unit)をさらに含むことができる。この場合、前記予測ユニット及び前記変換ユニットは、それぞれ前述した最終コーディングユニットから分割またはパーティショニングすることができる。前記予測ユニットは、サンプル予測の単位で有り得、前記の変換ユニットは、変換係数を誘導する単位、及び/または変換係数からレジデュアル信号(residual signal)を誘導する単位で有り得る。
ユニットは、場合によって ブロック(block)または領域(area)などの用語と混用して用いられる。一般的な場合、MxNブロックはM個の列とN個の行からなるサンプル又は変換係数(transform coefficient)の集合を示すことができる。サンプルは、一般的に、ピクセルまたはピクセルの値を示すこともあり、輝度(luma)成分のピクセル/ピクセル値のみを示すこともあり、彩度(chroma)成分のピクセル/ピクセル値のみを示すこともできる。サンプルは、一つのピクチャ(または映像)をピクセル(pixel)またはペル(pel)に対応する用語として用いられる。
エンコード装置100は、入力映像信号(原本ブロック、原本サンプルアレイ)でインター予測部180またはイントラ予測部185から出力された予測信号(予測されたブロック、予測サンプルアレイ)を減算してレジデュアル信号(residual signal、残りのブロック、残りのサンプルアレイ)を生成することができ、生成されたレジデュアル信号は、変換部120に転送される。この場合、図示のように、エンコーダ100内で入力映像信号(原本ブロック、原本サンプルアレイ)で予測信号(予測ブロック、予測サンプルアレイ)を減算するユニットは減算部115と呼ばれることができる。予測部は処理対象ブロック(以下、現在ブロックと称する)の予測を行い、現在ブロックの予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部は現在ブロックまたはCU単位でイントラ予測が適用されるか、またはインター予測が適用されるかを決定することができる。予測部は各予測モードの説明で後述するように、予測モード情報など予測に関する様々な情報を生成し、エントロピーエンコーディング部190に転達することができる。予測に関する情報は、エントロピーエンコーディング部190でエンコードされてビットストリーム形態で出力することができる。
イントラ予測部185は、現在のピクチャ内のサンプルを参照して、現在ブロックを予測することができる。参照されるサンプルは、予測モードに応じて前記現在ブロックの周辺(neighbor)に位置することができ、または離れて位置することもできる。イントラ予測で予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。非方向性モードは、例えば、DCモード及びプランナーモード(Planarモード)を含むことができる。方向性モードでは、予測方向の細かい程度に応じて、例えば、33個の方向性予測モードまたは65個の方向性予測モードを含むことができる。ただし、これは例示として設定によってはそれ以上、またはそれ以下の数の方向性予測モードが用いられることができる。イントラ予測部185は、周辺ブロックに適用される予測モードを用いて、現在ブロックに適用される予測モードを決定することもできる。
インター予測部180は、参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックの予測されたブロックを誘導することができる。このとき、インター予測モードで転送される動き情報の量を減らすために周囲のブロックと現在ブロックの間の動き情報の相関性に基づいて動き情報をブロック、サブブロック、またはサンプル単位で予測することができる。動き情報は、動きベクトル及び参照ピクチャインデックスを含むことができる。動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)の情報をさらに含むことができる。インター予測の場合、周辺ブロックは、現在のピクチャ内に存在する空間的周りのブロック(spatial neighboring block)と参照ピクチャに存在する時間的周辺ブロック(temporal neighboring block)を含むことができる。参照ブロックを含む参照ピクチャと時間的周辺ブロックを含む参照ピクチャは同じであることもあり、異なることもある。前記時間的周辺ブロックは、同じ位置参照ブロック(collocated reference block)、同じ位置(CU colCU)などの名で呼ばれることができ、時間的周辺ブロックを含む参照ピクチャは、同じ位置ピクチャ(collocated picture、colPic)と呼ばれることもある。例えば、インター予測部180は、周辺ブロックに基づいて動き情報候補リストを構成し、前記現在ブロックの動きベクトル及び/または参照ピクチャインデックスを導出するためにどの候補が用いられるかを指示する情報を生成することができる。様々な予測モードに基づいて、インター予測が行われることができ、例えば、スキップモードとマージモードの場合に、インター予測部180は、周辺ブロックの動き情報を現在ブロックの動き情報として用いることができる。スキップモードの場合、マージモードとは異なり、レジデュアル信号が転送されないことがある。動き情報予測(motion vector prediction、MVP)モードの場合、周辺ブロックの動きベクトルを動きベクトル予測子(motion vector predictor)で用いて、動きベクトル差分(motion vector difference)をシグナリングすることによって、現在ブロックの動きベクトルを指示することができる。
インター予測部180またはイントラ予測部185を介して生成された予測信号は、復元信号を生成するために用いられるか、またはレジデュアル信号を生成するために用いられる。
変換部120は、レジデュアル信号に変換手法を適用して変換係数(transform coefficients)を生成することができる。たとえば、変換技法は、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)、KLT(Karhunen-Loeve Transform)、GBT(Graph-Based Transform)、またはCNT(Conditionally Non-linear Transform)の内、少なくとも一つを含むことができる。ここで、GBTは、ピクセル間の関係情報をグラフで表現するとしたときに、このグラフから得られた変換を意味する。 CNTは、以前に復元されたすべてのピクセル(all previously reconstructed pixel)を用いて予測信号を生成し、それに基づいて獲得される変換を意味する。また、変換プロセスは、正方形の同じ大きさを有するピクセルブロックに適用されることもあり、非正方形可変サイズのブロックにも適用することができる。
量子化部130は、変換係数を量子化してエントロピーエンコーディング部190に転送され、エントロピーエンコーディング部190は、量子化された信号(量子化された変換係数に関する情報)をエンコードして、ビットストリームとして出力することができる。量子化された変換係数に関する情報は、レジデュアル情報と呼ばれることができる。量子化部130は、係数スキャン順(scan order)に基づいて、ブロックの形の量子化された変換係数を1次元ベクトルの形で再整列することができ、1次元ベクトルの形の量子化された変換係数に基づいて、前記量子化された変換係数に関する情報を生成することもできる。エントロピーエンコーディング部190は、例えば指数ゴロム(exponential Golomb)、CAVLC(context-adaptive variable length coding)、CABAC(context-adaptive binary arithmetic coding)などのようなさまざまなエンコード方法を実行することができる。エントロピーエンコーディング部190は、量子化された変換係数のほか、ビデオ/映像復元に必要な情報(例えば構文要素(syntax elements)の値など)を一緒に、または別々にエンコードすることもできる。エンコードされた情報(例えば、ビデオ/映像情報)は、ビットストリームの形でNAL(network abstraction layer)ユニット単位で転送または貯蔵することができる。前記ビットストリームは、ネットワークを介して転送されることができ、またはデジタル貯蔵媒体に貯蔵することができる。ここで、ネットワークは、放送網、及び/またはネットワークなどを含むことができ、デジタル貯蔵媒体は、USB、SD、CD、DVD、Blu-ray、HDD、SSDなど、様々な貯蔵媒体を含むことができる。エントロピーエンコーディング部190から出力された信号は、伝送する伝送部(図示せず)及び/または貯蔵する貯蔵部(図示せず)が、エンコード装置100の内/外のエレメントとして構成されることができ、または転送部はエントロピーエンコーディング部190の構成要素で有り得る。
量子化部130から出力された量子化された変換係数は、予測信号を生成するために用いることができる。例えば、量子化された変換係数は、ループ内の逆量子化部140及び逆変換部150を介して逆量子化及び逆変換を適用することにより、レジデュアル信号を復元することができる。加算部155は、復元されたレジデュアル信号をインター予測部180またはイントラ予測部185から出力された予測信号に加えることで復元(reconstructed)信号(復元ピクチャ、復元ブロック、復元サンプルアレイ)が生成されることができる。スキップモードが適用された場合と同様に処理対象ブロックのレジデュアルがない場合、予測されたブロックが復元ブロックとして用いられる。加算部155は、復元部または復元ブロック生成部と呼ばれることができる。生成された復元信号は、現在のピクチャ内の次の処理対象ブロックのイントラ予測のために用いられ、後述するようにフィルタリングを経て、次のピクチャのインター予測のために用いることもある。
フィルタリング部160は、復元信号にフィルタリングを適用して主観的/客観的画質を向上させることができる。例えば、フィルタリング部160は、復元ピクチャに様々なフィルタリング方法を適用して修正された(modified)復元ピクチャを生成することができ、修正された(復元ピクチャを復号ピクチャバッファ170に転送することができる。様々なフィルタリングの方法は、例えば、ジブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset)、適応的ループフィルタ(adaptive loop filter)、両方向フィルタ(bilateral filter)などを含むことができる。フィルタリング部160は、各フィルタリング方法の説明で後述するようにフィルタリングに関するさまざまな情報を生成し、エントロピーエンコーディング部190に転達することができる。フィルタリングに関する情報は、エントロピーエンコーディング部190でエンコードされてビットストリーム形態で出力することができる。
復号ピクチャバッファ170に 転送された修正された復元ピクチャは、インター予測部180から参照ピクチャとして用いられる。エンコード装置は、これにより、インター予測が適用される場合、エンコード装置100とデコード装置での予測ミスマッチを回避することができ、エンコーディング効率も向上させることができる。
復号ピクチャバッファ170は、修正された復元ピクチャをインター予測部180からの参照ピクチャとして用いるために貯蔵することができる。
図3は、本発明が適用される実施形態として、映像信号のデコードが行われるデコード装置の概略的なブロック図を示す。図3のデコード装置200は、図1のデコード装置22に対応することができる。
図3を参照すると、デコード装置200は、エントロピーデコード部210、逆量子化部220、逆変換部230、加算部235、フィルタリング部240、復号ピクチャバッファ(DPB)250、インター予測部260及びイントラ予測部265を含みから構成されることができる。インター予測部260及びイントラ予測部265を合わせて予測部と呼ばれることができる。つまり、予測部はインター予測部180及びイントラ予測部185を含むことができる。逆量子化部220、逆変換部230を合わせてレジデュアル処理部と呼ばれることができる。つまり、レジデュアル処理部は、逆量子化部220、逆変換部230を含むことができる。前述したエントロピーデコード部210、逆量子化部220、逆変換部230、加算部235、フィルタリング部240、インター予測部260及びイントラ予測部265は、実施形態に応じて一つのハードウェアコンポーネント(例えば、デコーダまたはプロセッサ)によって構成されることができる。また、復号ピクチャバッファ250は、実施形態に応じて一つのハードウェアコンポーネント(例えば、メモリまたはデジタル貯蔵媒体)によって実施されることができる。
ビデオ/映像情報を含むビットストリームが入力されると、デコード装置200は、図2のエンコード装置100からのビデオ/映像情報が処理されたプロセスに対応して映像を復元することができる。例えば、デコード装置200は、エンコード装置100で適用された処理ユニットを用いてデコードを行うことができる。したがってデコードの処理ユニットは、例えば、コーディングユニットで有り得、コーディングユニットは、コーディングツリーユニットまたは最大コーディングユニットからクワッドツリー構造及び/またはバイナリツリー構造に沿って分けることができる。そして、デコード装置200を介してデコード及び出力された復元映像信号は、再生装置を通じて再生することができる。
デコード装置200は、図2のエンコード装置100から出力された信号をビットストリーム形態で受信することができ、受信された信号は、エントロピーデコード部210を介してデコードすることができる。例えば、エントロピーデコード部210は、ビットストリームを ファージング(解析)して映像復元(またはピクチャ復元)に必要な情報(例えば、ビデオ/映像情報)を導出することができる。例えば、エントロピーデコード部210は、指数ゴロム符号化、CAVLCまたはCABACなどのコーディング方法に基づいてビットストリーム内の情報をデコードして、映像復元に必要な構文要素の値、レジデュアルに関する変換係数の量子化された値を出力することができる。さらに詳細に、CABACエントロピーデコード方法は、ビットストリームから各構文要素に当該するビンを受信し、デコード対象構文要素の情報と周辺及びデコード対象ブロックのデコード情報、または前の段階でデコードされたシンボル/ビンの情報を用いてコンテキスト(context)モデルを決定し、決定されたコンテキストモデルに基づいてビン(bin)の発生確率を予測して、ビンの算術デコード(arithmetic decoding)を実行して、各構文要素の値に当該するシンボルを生成することができる。このとき、CABACエントロピーデコード方法は、コンテキストモデルを決定した後、次のシンボル/ビンの文脈モデルのためにデコードされたシンボル/ビンの情報を用いて、コンテキストモデルを更新することができる。エントロピーデコード部210でデコードされた情報の内、予測に関する情報は、予測部(インター予測部260及びイントラ予測部265)で提供され、エントロピーデコード部210からエントロピーデコードが行われたレジデュアル値、すなわち量子化された変換係数及び関連パラメータ情報は、逆量子化部220に入力されることができる。また、エントロピーデコード部210でデコードされた情報の内、フィルタリングに関する情報は、フィルタリング部240に提供されることができる。一方、エンコード装置100から出力された信号を受信する受信部(図示せず)がデコード装置200の内/外部エレメントとしてさらに構成されることがあり、または受信部は、エントロピーデコード部210の構成要素有り得る。
逆量子化部220では、量子化された変換係数を逆量子化して変換係数を出力することができる。逆量子化部220は、量子化された変換係数を2次元のブロックの形態に再整列することができる。この場合、エンコード装置100で実行された係数スキャン順序に基づいて再整列が実行されることができる。逆量子化部220は、量子化パラメータ(例えば、量子化段階サイズ情報)を用いて、量子化された変換係数の逆量子化を行い、変換係数(transform coefficient)を獲得することができる。
逆変換部230は、変換係数を逆変換してレジデュアル信号(レジデュアルブロック、レジデュアルサンプルアレイ)を獲得することになる。
予測部は現在ブロックの予測を行い、前記現在ブロックの予測サンプルを含む予測されたブロック(predicted block)を生成することができる。予測部はエントロピーデコード部210から出力された前記予測に関する情報に基づいて、前記現在ブロックにイントラ予測が適用されるか、またはインター予測が適用されるかを決定することができ、具的なイントラ/インター予測モードを決定することができる。
イントラ予測部265は、現在ピクチャ内のサンプルを参照して、現在ブロックを予測することができる。参照されるサンプルは、予測モードに応じて、現在ブロックの周辺(neighbor)に位置することができ、または離隔して位置することもできる。イントラ予測で予測モードは、複数の非方向性モードと複数の方向性モードを含むことができる。イントラ予測部265は、周辺ブロックに適用される予測モードを用いて、現在ブロックに適用される予測モードを決定することもできる。
インター予測部260は、参照ピクチャ上で動きベクトルによって特定される参照ブロック(参照サンプルアレイ)に基づいて、現在ブロックの予測されたブロックを誘導することができる。このとき、インター予測モードで転送される動き情報の量を減らすために周囲のブロックと現在ブロックの間の動き情報の相関性に基づいて動き情報をブロック、サブブロック、またはサンプル単位で予測することができる。動き情報は、動きベクトルと参照ピクチャインデックスを含むことができる。動き情報は、インター予測方向(L0予測、L1予測、Bi予測など)の情報をさらに含むことができる。インター予測の場合、周辺ブロックは、現在のピクチャ内に存在する空間的周りのブロック(spatial neighboring block)と参照ピクチャに存在する時間的周辺ブロック(temporal neighboring block)を含むことができる。例えば、インター予測部260は、周辺ブロックに基づいて動き情報候補リストを構成し、受信した候補選択情報に基づいて、現在ブロックの動きベクトル及び/または参照ピクチャインデックスを導出することができる。様々な予測モードに基づいて、インター予測が行われることができ、予測に関する情報は、現在ブロックのインター予測のモードを指示する情報を含むことができる。
加算部235は、獲得されたレジデュアル信号をインター予測部260またはイントラ予測部265から出力された予測信号(予測されたブロック、予測サンプルアレイ)に加えることで復元信号(復元ピクチャ、復元ブロック、復元、サンプルアレイ)を生成することができる。スキップモードが適用された場合と同様に処理対象ブロックのレジデュアルがない場合は、予測されたブロックが復元ブロックとして用いられる。
加算部235は、復元部または復元ブロック生成部と呼ばれることができる。生成された復元信号は、現在のピクチャ内の次の処理対象ブロックのイントラ予測のために用いられ、後述するようにフィルタリングを経て、次のピクチャのインター予測のために用いられることもできる。
フィルタリング部240は、復元信号にフィルタリングを適用することにより、主観的/客観的画質を向上させることができる。例えば、フィルタリング部240は、復元ピクチャに様々なフィルタリング方法を適用して修正された(modified)復元ピクチャを生成することができ、修正された復元ピクチャを復号ピクチャバッファ250に転送することができる。様々なフィルタリングの方法は、例えば、ジブロッキングフィルタリング、サンプル適応的オフセット(sample adaptive offset、SAO)、適応的ループフィルタ(adaptive loop filter、ALF)、両方向フィルタ(bilateral filter)などを含むことができる。
復号ピクチャバッファ250に転送された修正された復元ピクチャは、インター予測部260によって参照ピクチャとして用いられる。
本明細書において、エンコード装置100のフィルタリング部160、インター予測部180及びイントラ予測部185で説明された実施形態は、それぞれのデコード装置のフィルタリング部240、インター予測部260及びイントラ予測部265にも同一または対応するように適用することができる。
図4は、本発明が適用される実施形態でとして、コンテンツストリーミングシステムの構造図である。
本発明が適用される コンテンツストリーミングシステムは、大きくエンコードサーバ410、ストリーミングサーバ420、Webサーバ430、メディアストレージ440、ユーザ装置450及びマルチメディア入力デバイス460を含むことができる。
エンコードサーバ410は、スマートフォン、カメラ、キャムコーダなどのようなマルチメディア入力デバイスから入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これをストリーミングサーバ420に転送する役割をする。他の例として、スマートフォン、カメラ、キャムコーダなどのようなマルチメディア入力装置460がビットストリームを直接生成する場合、エンコードサーバ410は、省略することができる。
ビットストリームは、本発明が適用されるエンコード方法またはビットストリームを生成する方法によって生成されることができ、ストリーミングサーバ420は、ビットストリームを転送または受信する過程で一時的にビットストリームを貯蔵することができる。
ストリーミングサーバ420は、Webサーバ430を介したユーザの要請に基づいて、マルチメディアデータをユーザ装置450に転送し、Webサーバ430は、ユーザにどのようなサービスがあるかを知らせる媒介の役割をする。ユーザがWebサーバ430に所望するサービスを要請すると、Webサーバ430は、これをストリーミングサーバ420に伝達し、ストリーミングサーバ420は、ユーザにマルチメディアデータを転送する。このとき、コンテンツストリーミングシステムは、別の制御サーバを含むことができ、この場合、制御サーバは、コンテンツストリーミングシステム内の各デバイス間のコマンド/応答を制御する役割をする。
ストリーミングサーバ420は、メディアストレージ440及び/またはエンコーディングサーバ410からコンテンツを受信することができる。たとえば、エンコードサーバ410からコンテンツを受信することになる場合、コンテンツをリアルタイムで受信することができる。この場合、円滑なストリーミングサービスを提供するために、ストリーミングサーバ420は、ビットストリームを一定時間の間貯蔵することができる。
ユーザデバイス450の例としては、携帯電話、スマートフォン(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 、デスクトップコンピュータ、デジタルサイネージなどを有することができる。
コンテンツストリーミングシステム内の各サーバは、分散サーバで運営されることができ、この場合、各サーバで受信するデータは、分散処理することができる。
図5は、本発明が適用されることができる実施形態として、図5aは、QT(QuadTree、QT)、図5bは、BT(Binary Tree、BT)、図5cは、TT(Ternary Tree、TT)図5dは、AT(Asymmetric Tree、AT)によるブロック分割構造を説明するための図である。
ビデオコーディングにおいて1つのブロックは、QTに基づいて分割されることができる。また、QTによって分割された一つのサブブロック(subblock)はQTを用いて再帰的にさらに分割されることができる。もはやQT分割されないリーフブロック(leaf block)はBT、TTまたはATの内の少なくとも一つの方式によって分割されることができる。 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を用いて再帰的にさらに分割されることができる。
図5aは、QT分割の例を示す。ブロックAは、QTによって4つのサブブロック(A0、A1、A2、A3)に分割されることができる。サブブロックA1は、再びQTによって4つのサブブロック(B0、B1、B2、B3)に分割されることができる。
図5bはBT分割の例を示す。 QTによってもはや分割されないブロックB3は、vertical BT(C0、C1)またはhorizontal BT(D0、D1)に分割されることができる。ブロックC0のように、それぞれのサブブロックは、horizontal BT(E0、E1)またはvertical BT(F0、F1)の形態のように再帰的にさらに分割されることができる。
図5cはTT分割の例を示す。 QTによってもはや分割されないブロックB3は、vertical TT(C0、C1、C2)またはhorizontal TT(D0、D1、D2)に分割されることができる。ブロックC1のように、それぞれのサブブロックは、horizontal TT(E0、E1、E2)またはvertical TT(F0、F1、F2)の形態のように再帰的にさらに分割されることができる。
図5dは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に分割されることもできる。この場合、分割順番は異なるが、最終的に分割される形は同じである。
また、ブロックが分割されると、ブロックを探索する順序を多様に定義することができる。一般的に、左側から右側に、上端から下端に探索を行い、ブロックを探索するということは、各分割されたサブブロックの追加のブロックを分割するかどうかを決定する順序を意味するか、ブロックがもはや分割されない場合、各サブブロックの符号化順序を意味するか、またはサブブロックで他の隣接ブロックの情報を参照するときの探索順序を意味することができる。
図5a乃至5dのような分割構造によって分割された処理ユニット(または、変換ブロック)ごとに変換が実行されることができ、特に、行(row)方向と列(column)方向別に分割され、変換行列が適用されることができる。本発明の実施形態に係ると、処理ユニット(または変換ブロック)の行方向または列方向の長さに応じて、他の変換タイプが用いられる。
変換は、レジデュアルブロックに適用されるが、これは最大限レジデュアルブロックを無相関化(decorrelate)し、低周波数に係数を集中させ、ブロックの先端に0の尾(zero tail)を作成するためである。JEMソフトウェアで変換パーツは2つの主要な機能(コア変換(core transform)、2次変換(secondary transform))を含む。コア変換は、レジデュアルブロックのすべての行と列に適用されるDCT(discrete cosine transform)及びDST(discrete sine transform)変換ファミリーで構成される。以後2次変換がコア変換の出力の左上側コーナー(top left corner)に追加的に適用することができる。類似に2次逆変換とコア逆変換の順序の逆変換が適用されることができる。まず、2次逆変換が係数ブロックの左上側コーナーに適用することができる。以後コア逆変換が2次逆変換の出力の行及び列に適用される。コア変換または逆変換は、1次変換または逆変換と指称されることができる。
図6及び図7は、本発明が適用される実施形態として、図6は、図2のエンコード装置100内の変換及び量子化部(120/130)、逆量子化及び逆変換部(140/150)の概略的なブロック図を示し、図7は、デコード装置200内の逆量子化及び逆変換部(220/230)の概略的なブロック図を示す。
図6を注意深く見ると、変換、及び量子化部(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を含むことができる。
図7を 注意深く見ると、逆量子化及び逆変換部(220/230)は、逆量子化部220、逆2次変換部(inverse secondary transform unit)231と逆1次変換部(inverse primary transform unit)232を含むことができる。
本発明において、変換を実行するとき、複数の段階を経て変換を実行することができる。例えば、図6に示すように、1次変換(primary transform)、2次変換(secondary transform)の2段階を適用することができ、またはアルゴリズムに基づいて、それ以上の変換段階が用いられる。ここで、1次変換は、コア変換(core transform)と指称されることができる。
1次変換部121は、レジデュアル信号に対して1次変換を適用することができ、ここで、1次変換はエンコーダ及び/またはデコーダからテーブルに既定儀されることができる。
2次変換部122は、1次変換された信号に対して2次変換を適用することができ、ここで、2次変換はエンコーダ及び/またはデコーダからテーブルに既定儀されることができる。
一実施形態において、2次変換として非分離2次変換(non-separable secondary transform)(NSST)が条件的に適用することができる。例えば、NSSTは画面内予測ブロックの場合にのみ適用され、予測モードグループごとに適用可能な変換セットを有することができる。
ここで、予測モードグループは、予測方向の対称性に基づいて設定されることができる。例えば、予測モード52と予測モード16は、予測モード34(対角方向)に基づいて対称であるので、1つのグループを形成して、同じ変換セット(transform set)が適用されることができる。このとき、予測モード52の変換を適用するとき、入力データを転置(transpose)した後に適用し、これは予測モード16と変換セットが同じであるからである。
一方、プランナーモード(Planar mode)とDCモード(DC mode)の場合、方向の対称性が存在しないため、それぞれの変換セットを有し、該変換セットは、2つの変換で構成されることができる。残りの方向性モードに対しては、変換セットごとに3つの変換で構成されることができる。
量子化部130は、2次変換された信号に対して量子化を行うことができる。
逆量子化及び逆変換部(140/150)は、先に説明した過程を逆に実行し、重複する説明は省略する。
図7は、デコード装置200内の逆量子化及び逆変換部(220/230)の概略的なブロック図を示す。
図7を参照すると、逆量子化及び逆変換部(220/230)は、逆量子化部220、逆2次変換部(inverse secondary transform unit231及び逆1次変換部(inverse primary transform unit) 232を含むことができる。
逆量子化部220は、量子化段階サイズ情報を用いて、エントロピーデコード(復号化)された信号から変換係数を獲得する。
逆2次変換部231においては、変換係数に対して逆2次変換を実行する。ここで、逆2次変換は、図6で説明した2次変換の逆変換を示す。
逆1次変換部232は、逆2次変換された信号(またはブロック)について逆1次変換を行い、残差信号(residual signal)を獲得することになる。ここで、逆1次変換は、図6で説明した前記1次変換(primary transform)の逆変換を示す。
HEVCに適用されるDCT-2と4x4 DST-4に加えて、適応的(または明示的)多重変換(adaptive multiple transformまたはexplicit multiple transform)(AMTまたはEMT)技法がインター及びイントラエンコーディングされたブロックのレジデュアルコーディングのために用いられる。 HEVCでの変換、その他のDCT/DSTファミリーからの多数の選択された変換が用いられる。 JEMから新しく紹介された変換行列は、DST-7、DCT-8、DST-1、及びDCT-5である。下の表1は、選択されたDST/DCTの基底関数を示す。
EMTは64より小さいか同じ幅と高さを有するCUに適用されることができ、EMTが適用されるかどうかは、CUレベルフラグによって制御することができる。CUレベルフラグが0であれば、DCT-2が残差(residue)をエンコーディングするために、CUに適用される。EMTが適用されるCU内ルマコーディングブロックに対し、2つの追加のフラグが用いられる水平及び垂直変換を識別するためにシグナリングされる。HEVCのように、JEMのブロックのレジデュアルは変換スキップモードでコーディングされることができる。イントラレジデュアルコーディングのために、他のイントラ予測モードの他のレジデュアル統計により、モード‐依存的変換候補の選択プロセスが用いられる。3つの変換サブセットが、以下の表2のように定義されており、変換サブセットは、表3に示すようにイントラ予測モードに基づいて変換サブセットが選択される。
サブセットコンセプトと一緒に、変換のサブセットは、CU-レベルEMT_CU_flagが1であるCUのイントラ予測モードを用いることにより、表2に基づいて、最初に確認される。以降、水平(EMT_TU_horizontal_flag)と垂直(EMT_TU_vertical_flag)変換のそれぞれについて、確認された変換のサブセット内の2つの変換候補の内から一つが、表3に基づいて、フラグを使用した明示的なシグナリングに基づいて選択される。
表4は、本発明が適用される実施形態として、AMT(adaptive multiple transform)が適用される変換設定グループ(transform configuration group)を示す。
表4を注意深く見ると、変換設定グループ(transform configuration group)は、予測モードに基づいて決定され、グループの数は、総6個(G0~G5)で有り得る。そして、G0~G4は、イントラ予測が適用される場合に当該し、G5は、インター予測によって生成された残差ブロックに適用される変換の組み合わせ(または変換セット、変換組み合わせセット)を示す。
一つの変換の組み合わせは、当該2Dブロックの行(row)に適用される水平変換(horizontal transform)(または行変換(row transform))と列(column)に適用される垂直変換(vertical transform)(または列変換(column transform))で行うことができる。
ここで、すべての変換設定のグループは、各4つの変換組み合わせの候補を有することができる。4つの変換の組み合わせ候補は0~3の変換組み合わせのインデックスを介して選択または決定することができ、エンコーダからデコーダへの変換組み合わせのインデックスをエンコードして転送することができる。
一実施形態で、イントラ予測を介して獲得された残差データ(または残差信号)は、イントラ予測モードに応じて、その統計的特性がそれぞれ異なることができる。したがって、表4のようにイントラ予測別に一般的なコサイン変換ではなく、別の変換が適用されることができる。本明細書において、変換タイプは、例えば、DCT-Type 2、DCT-II、DCT-2のように表記することができる。
表4注意深く見ると、35個のイントラ予測モードを用いる場合と67個のイントラ予測モードを用いる場合が現れる。各イントラ予測モードの列で区分された変換設定グループごとに複数の変換の組み合わせが適用されることができる。例えば、複数の変換の組み合わせは、4つの(行方向変換、列方向変換)の組み合わせで構成されることができる。具体例として、グループ0においては、行(水平)方向と列(縦)方向のすべてDST-7とDCT-5が適用されることができ、総4つの組み合わせが可能である。
各イントラ予測モードに対して、総4つの変換カーネルの組み合わせが適用されることができるので、その内、一つを選択するための変換組み合わせのインデックスが変換ユニット(transform unit)ごとに転送されることができる。本明細書において、変換組み合わせのインデックスは、AMTインデックス(AMT index)と呼ばれることができ、amt_idxで表現されることができる。
また、表4で提示された変換カーネル以外にも、残差信号の特性上、行方向と列方向の全てにDCT-2が最適な場合が発生することができる。したがって、コーディングユニット毎にAMTフラグを定義することにより、適応的に変換が適用されることができる。ここで、AMTフラグが0の場合、行方向と列方向の全てにDCT-2が適用され、AMTフラグが1の場合、AMTのインデックスを使用して、4つの組み合わせのいずれかが選択または決定することができる。
一実施形態で、AMTフラグが0の場合、1つの変換ユニットの変換係数の数が3より小さいと、表4の変換カーネルが適用されず、行方向と列方向の全てDST-7が適用されることができる。
一実施形態として、変換係数の値を先にパーシング(解析)して、変換係数の数が3より小さければ、AMTインデックスが解析されず、DST-7が適用されることにより付加情報転送量が減少することができる。
一実施形態として、AMTは、変換ユニットの幅と高さの全てが32以下の場合にのみ、適用することができる。
一実施形態で、表4は、オフライントレーニング(off-line training)を介して基に設定されることができる。
一実施形態でAMTインデックスは、水平変換と垂直変換の組み合わせを同時に指すことができる、1つのインデックスとして定義することができる。または、AMTインデックスは、別の水平変換インデックスと垂直変換インデックスで定義することができる。
図8は、AMT(adaptive multiple transform)が実行される過程を示すフローチャートである。
本明細書において、水平方向と垂直方向に対して分離して、変換が適用される分離 可能な変換(separable transform)の実施形態が、基本的に説明されるが、変換の組み合わせは、非分離変換(non-separable transform)にも構成することができる。
または、分離可能な変換と非分離変換の混合にも変換の組み合わせが構成されることができる。この場合、非分離変換が用いられると、行/列別変換選択や水平/垂直方向別の選択は不要になり、分離可能な変換が選択される場合にのみ、表4の変換の組み合わせが用いられることができる。
また、本明細書で提案される方法は、1次変換や2次変換に関係なく適用することができる。つまり、2つの内、何れか一方にのみ適用されなければならないという制約がなく、両方に適用することができる。ここで、1次変換は残差ブロックを最初に変換するための変換を意味することができ、2次変換は、1次変換の結果として生成されたブロックに対し変換を適用するための変換を意味することができる。
まず、エンコード装置100は、現在ブロックに対応する変換グループを決定することができる(S805)。ここで、変換グループは、表4の変換グループを意味することができるが、本発明はこれに限定されず、他の変換の組み合わせで構成されることができる。
エンコード装置100は、変換グループ内の用いられる候補変換の組み合わせに対して変換を実行することができる(S810)。変換実行結果、エンコード装置100は、RD(rate distortion)コストが最小の変換の組み合わせを決定または選択することができる(S815)。エンコード装置100は、選択された変換の組み合わせに対応する変換組み合わせのインデックスをエンコードすることができる(S820)。
図9は、AMTが実行されるデコード過程を示すフローチャートである。
まず、デコード装置200は、現在ブロックのための変換グループを決定することができる(S905)。デコード装置200は、変換組み合わせのインデックスを解析することができ、ここで変換組み合わせのインデックスは、変換グループ内の複数の変換組み合わせの内、いずれか一つに対応することができる(S910)。デコード装置200は、変換組み合わせのインデックスに対応する変換組み合わせを誘導することができる(S915)。ここで、変換組み合わせは、表4で説明された変換組み合わせを意味することができるが、本発明はこれに限定されない。つまり、他の変換の組み合わせによる構成も可能である。
デコード装置200は、変換組み合わせに基づいて、現在ブロックに対して逆変換を行うことができる(S920)。変換組み合わせが行変換と列変換で構成される場合、行変換を先に適用した後、列変換を適用することができる。ただし、本発明はこれに限定されず、逆に適用されるか、または非分離変換で構成された場合には、直接非分離変換が適用されることができる。
一方、他の一実施形態として、変換グループを決定する過程と変換組み合わせのインデックスを解析する過程は、同時に実行することができる。
本発明の実施形態に係ると、前述した用語「AMT」は「MTS(multiple transform setまたはmultiple transform selection)」として再定義することができる。以下説明されるMTS関連シンタックス(syntax)とセマンティックス(semantics)はVVC(versatile video coding)標準文書JVET-K1001-v4で定義される。
本発明の実施形態において下記のように方向性モードについて2つのMTS候補と非方向性モードについて4つのMTS候補が用いられる。
A)非方向性モード(DC、プランナー)
MTSインデックスが0の時、DST-7が水平及び垂直変換に用いられる。
MTSインデックスが1のとき、DST-7が垂直変換に、DCT-8が水平変換に用いられる。
MTSインデックスが2のとき、DCT-8が垂直変換に、DST-7が水平変換に用いられる。
MTSインデックスが3の時、DCT-8が水平及び垂直変換に用いられる
B)水平グループモードに属するモード
MTSインデックスが0の時、DST-7が水平及び垂直変換に用いられる。
MTSインデックスが1のとき、DCT-8が垂直変換に、DST-7が水平変換に用いられる。
C)垂直グループモードに属するモード
MTSインデックスが0の時、DST-7が水平及び垂直変換に用いられる
MTSインデックスが1のとき、DST-7が垂直変換に、DCT-8が水平変換に用いられる。
ここで(67個のモードが用いられるVTM 2.0で)、水平グループモードは2から34番イントラ予測モードを含み、垂直モードは35番から66番イントラ予測モードを含む。
本発明の他の実施形態において、すべての イントラ予測モードに対して3つのMTS候補を用いる。
MTSインデックスが0の時、DST-7が水平及び垂直変換に用いられる
MTSインデックスが1のとき、DST-7が垂直変換に、DCT-8が水平変換に用いられる。
MTSインデックスが2のとき、DCT-8が垂直変換に、DST-7が水平変換に用いられる。
本発明の他の実施形態において、方向性予測モードに対して2つのMTS候補を、非方向性予測モードに対して3つのMTS候補を用いる。
A)非方向性モード(DC、プランナー)
MTSインデックスが0の時、DST-7が水平及び垂直変換に用いられる
MTSインデックスが1のとき、DST-7が垂直変換に、DCT-8が水平変換に用いられる
MTSインデックスが2のとき、DCT-8が垂直変換に、DST-7が水平変換に用いられる
B)水平グループモードに当該する予測モード
MTSインデックスが0の時、DST-7が水平及び垂直変換に用いられる
MTSインデックスが1のとき、DCT-8が垂直変換に、DST-7が水平変換に用いられる
C)垂直グループモードに当該する予測モード
MTSインデックスが0の時、DST-7が水平及び垂直変換に用いられる
MTSインデックスが1のとき、DST-7が垂直変換に、DCT-8が水平変換に用いられる
本発明の他の実施形態において、一つのMTS候補(例えば、DST-7)をすべてのイントラモードに対して用いられる。この場合、マイナーなコーディング損失と共にエンコード時間が40%まで減少することができる。さらに、一つのフラグがDCT-2とDST-7の間で指示するために用いられる。
図10は、本発明の実施形態に基づいてMTSに基づいて逆変換過程を示すフローチャートである。
本発明が適用されるデコード装置200は、sps_mts_intra_enabled_flagまたはsps_mts_inter_enabled_flagを獲得することができる(S1005)。ここで、sps_mts_intra_enabled_flagはcu_mts_flagがイントラコーディングユニットのレジデュアルコーディング構文に存在するかどうかを示す。たとえば、sps_mts_intra_enabled_flag = 0であれば、cu_mts_flagがイントラコーディングユニットのレジデュアルコーディング構文に存在せず、sps_mts_intra_enabled_flag = 1であれば、cu_mts_flagがイントラコーディングユニットのレジデュアルコーディング構文に存在する。そして、sps_mts_inter_enabled_flagはcu_mts_flagがインターコーディングユニットのレジデュアルコーディング構文に存在するかどうかを示す。たとえば、sps_mts_inter_enabled_flag = 0であれば、cu_mts_flagがインターコーディングユニットのレジデュアルコーディング構文に存在せず、sps_mts_inter_enabled_flag = 1であれば、cu_mts_flagがインターコーディングユニットのレジデュアルコーディング構文に存在する。
デコード装置200は、sps_mts_intra_enabled_flagまたはsps_mts_inter_enabled_flagに基づいてcu_mts_flagを獲得することができる(S1010)。たとえば、sps_mts_intra_enabled_flag = 1またはsps_mts_inter_enabled_flag = 1のとき、デコード装置200は、cu_mts_flagを獲得することができる。ここで、cu_mts_flagは、MTSがルマ変換ブロックのレジデュアルサンプルに適用されるかどうかを示す。たとえば、cu_mts_flag = 0であると、MTSがルマ変換ブロックのレジデュアルサンプルに適用されず、cu_mts_flag = 1であればMTSがルマ変換ブロックのレジデュアルサンプルに適用される。
デコード装置200は、cu_mts_flagに基づいてmts_idxを獲得することができる(S1015)。たとえば、cu_mts_flag = 1のとき、デコード装置200は、mts_idxを獲得することができる。ここで、mts_idxはどの変換カーネルが現在変換ブロックの水平及び/または垂直方向に沿ったルマレジデュアルサンプルに適用されるかを示す。
たとえば、mts_idxについて、本明細書で説明される実施形態の内、少なくとも1つが適用されることができる。
デコード装置200は、mts_idxに対応する変換カーネルを誘導することができる(S1020)。たとえば、mts_idxに対応する変換カーネルは、水平変換及び垂直変換に区分されて定義することができる。
一例として、現在ブロックにMTSが適用される場合(つまり、cu_mts_flag = 1)、デコード装置200は、現在ブロックのイントラ予測モードに基づいてMTS候補を構成することができる。この場合、図10のデコードフローチャートにMTS候補を構成する段階がさらに含まれることができる。そして、デコード装置200は、構成されたMTS候補の内からmts_idxを用いて、現在ブロックに適用されるMTS候補を決定することができる。
他の一例として、水平変換および垂直変換は、互いに異なる変換カーネルが適用されることができる。ただし、本発明はこれに限定されず、前記水平変換及び垂直変換は、同じ変換カーネルが適用されることもある。
そして、デコード装置200は、変換カーネルに基づいて逆変換を行うことができる(S1025)。
また、本文書でMTSは、AMTまたはEMTとも表現することができ、同様に、mts_idx図AMT_idx、EMT_idx、AMT_TU_idx EMT_TU_idxなどのような表現することができ、本発明は、このような表現に限定されない。
図11は、本発明の実施形態に基づいてMTSに基づいてデコードを実行する装置のブロック図である。
本発明が適用されるデコード装置200は、シーケンスパラメータ獲得部1105、MTSフラグ獲得部1110、MTSインデックス獲得部1115、及び変換カーネル誘導部1120を含むことができる。
シーケンスパラメータ獲得部1105は、sps_mts_intra_enabled_flagまたはsps_mts_inter_enabled_flagを獲得することができる。ここで、sps_mts_intra_enabled_flagはcu_mts_flagがイントラコーディングユニットのレジデュアルコーディング構文に存在するかどうかを示し、sps_mts_inter_enabled_flagはcu_mts_flagがインターコーディングユニットのレジデュアルコーディング構文に存在するかどうかを示す。具体的な例は、図10に関連する説明が適用されることができる。
MTSフラグ獲得部1110は、sps_mts_intra_enabled_flagまたはsps_mts_inter_enabled_flagに基づいてcu_mts_flagを獲得することができる。たとえば、sps_mts_intra_enabled_flag = 1またはsps_mts_inter_enabled_flag = 1のとき、MTSフラグ獲得部1110は、cu_mts_flagを獲得することができる。ここで、cu_mts_flagは、MTSがルマ変換ブロックのレジデュアルサンプルに適用されるかどうかを示す。具体的な例は、前記図10に関連する説明が適用されることができる。
MTSインデックス獲得部1115は、cu_mts_flagに基づいてmts_idxを獲得することができる。たとえば、cu_mts_flag = 1のとき、MTSインデックス獲得部1115は、mts_idxを獲得することができる。ここで、mts_idxはどの変換カーネルが現在の変換ブロックの水平及び/または垂直方向に沿ったルマレジデュアルサンプルに適用されるかを示す。具体的な例は、前記図10の説明が適用されることができる。
変換カーネル誘導部1120は、mts_idxに対応する変換カーネルを誘導することができる。そして、デコード装置200は、誘導された変換カーネルに基づいて逆変換を行うことができる。
モード‐依存的非分離2次変換(mode-dependent non-separable secondary transform、MDNSST)が紹介される。低複雑度を維持するために、MDNSSTは、1次変換後の後低周波数の係数にのみ適用される。また、主に低周波の係数に対し適用される非分離変換はLFNST(low frequency non-separable transform)と呼ばれることができる。変換係数ブロックの幅(width、W)と高さ(height、H)の全てが8以上であれば、8x8非分離2次変換が変換係数ブロックの左上側8x8の領域に適用される。そうでなければ、幅または高さが8より小さい場合、4x4非分離2次変換が適用され、4x4非分離2次変換は、変換係数ブロックの左上側min(8、W)x min(8、H)に実行ことができる。ここで、min(A、B)はAとBの内、さらに小さい値を出力する関数である。また、WxHはブロックのサイズとして、Wは幅(width)、Hは高さ(height)を示す。
1次変換が適用された変換係数のブロックの左上端8x8ブロックに適用されるRTは8x8 RSTと呼ばれることができる。数学式3で、Rの値を16に置いたとき、順方向8x8 RSTは16x64行列の形を有し、逆方向8x8 RSTは64x16の形態を有する。また、8x8 RSTに対しても、表5のような変換セットの構成が適用されることができる。つまり、表5のようにイントラ予測モードに応じた変換セットに基づいて8x8 RSTが決定することができる。一つの変換セットは、イントラ予測モードに応じて、2つまたは3つの変換で構成されるので、2次変換を適用しない場合まで含めて、最大4つの変換の内、いずれかが1つが選択されることができる(一つの変換は、恒等行列に該当することができる)。 4つの変換に対して、それぞれ0、1、2、3のインデックスが付与されたとき、NSSTインデックスに該当するシンタックス要素(syntax element)が変換係数のブロックごとにシグナリングされることで適用される変換が指定されることができる。例えば、0番インデックスは恒等行列、すなわち、2次変換が適用されない場合に割り当てることができる。結論として、NSSTインデックスを介して8x8左上端ブロックについて、JEM NSSTによると、8x8 NSSTが指定されることがあり、RST構成によれば、8x8 RSTが指定されることができる。
変換セットの内、変換カーネルを指示するために、NSSTインデックス(NSST idx)がコーディングされることができる。 NSSTが適用されない場合、0の値を有するNSSTインデックスがシグナリングされることができる。
図12及び図13は、本発明が適用される実施形態として、2次変換が適用されるエンコード/デコードフローチャートである。
JEMにおいて、2次変換(MDNSST)は、変換スキップモードでコーディングされたブロックに適用されない。 MDNSSTインデックスがCUに対しシグナリングされ、0でなければ、MDNSSTはCU内で変換スキップモードでコーディングされた成分のブロックに対し用いられない。係数エンコーディングとNSSTインデックスコーディングを含む全体的なコーディング構造が、図12及び図13に示される。 CBF(coded block flag)が係数エンコーディング及びNSSTコーディングするかどうかを決定するためにエンコードされる。図12及び図13において、CBFフラグはルマブロックcbfフラグ(cbf_luma flag)またはクロマブロックcbfフラグ(cbf_cb flagまたはcbf_cr flag)を示すことができる。 CBFフラグが1のときの変換係数がコーディングされる。
図12を参照すると、エンコード装置100は、CBFが1かどうかを確認する(S1205)。 CBFが0である場合、エンコード装置100は、変換係数のエンコード及びNSSTインデックスのエンコーディングを実行しない。 CBFが1である場合、エンコード装置100は、変換係数のエンコーディングを行う(S1210)。以後、エンコード装置100は、NSSTインデックスコーディングするかどうかを決定し、(S1215)、NSSTインデックスコーディングを行う(S1220)。 NSSTインデックスコーディングが適用されない場合、エンコード装置100は、NSSTを適用していない状態に変換手順を終了し、その後の段階(例えば、量子化)を実行することができる。
図13を参照すると、デコード装置200は、CBFが1かどうかを確認する(S1305)。 CBFが0である場合、デコード装置200は、変換係数のデコード及びNSSTインデックスデコードを実行していない。 CBFが1である場合、デコード装置200は、変換係数のデコードを行う(S1310)。以後、デコード装置200は、NSSTインデックスコーディングするかどうかを決定し、(S1315)、NSSTインデックスを解析する(S1320)。
NSSTは、1次変換が適用されたブロック(HEVCの場合TU)全体に対して適用されるものではなく左上側8x8領域または4x4の領域に対して適用することができる。一例として、ブロックのサイズ我8x8以上の場合、8x8 NSSTが適用され、8x8未満の場合、4x4 NSSTが適用されることができる。また、8x8 NSSTが適用される場合、4x4ブロックごとに4x4 NSSTが適用されることができる。 8x8 NSSTと4x4 NSSTすべて前述した変換セットの構成に応じて決定されることができ、非分離変換であるだけ8x8 NSSTは、64個の入力データと64個の出力データを有し、4x4 NSSTは16個の入力と16個の出力を有することができる。
図14及び図15は、本発明が適用される実施形態として、図14は、ギブンス回転(Givens rotation)を説明するための図を示し、図15は、ギブンス回転層と置換(permutation)で構成された4x4 NSSTでの一ラウンド(round)の構成を示す。
8x8 NSSTと4x4 NSSTすべてギブンス回転の階層的組み合わせで構成されることができる。一つのギブンス回転に当該する行列は、数学式1と同じであり、行列積を図で表現すると、図14と同じである。
図14において、ギブンス回転によって出力されるtmとtnは、数学式2のように計算することができる。
図14のように一つのギブンス回転は、2つのデータを回転させるので、64個のデータ(8x8 NSSTの場合)または16個のデータ(4x4 NSSTの場合)の処理のために、それぞれ32個、または8個のギブンスの回転が必要である。したがって、32個または8個のギブンス回転の束がギブンス回転層(Given rotation layer)を形成することができる。図15に示すように、一つのギブンス回転層の出力データが置換(シャッフル)を介して次のギブンス回転層の入力データへ伝達される。図15に示すように 置換されるパターンは、規則的に定義され、4x4 NSSTの場合、4つのギブンス回転層及び対応する置換が一つのラウンドを形成する。4x4 NSSTは2回のラウンドで行われ、8x8 NSSTは4回のラウンドで実行される。互いに別のラウンドは、同じ置換パターンを用いるが適用されるギブンス回転角度は、それぞれ異なる。したがって、各変換を構成するすべてのギブンス回転の角度データの貯蔵が必要である。
最後の段階でギブンス回転層を経て出力されたデータに対して、最終的に一回の置換がさらに実行され、当該置換の情報は、変換ごとに別に貯蔵される。順方向(forward)NSSTの最後に、当該置換が行われ、逆方向(inverse)NSSTは、最初に当該逆方向置換が適用される。
逆方向NSSTは順方向NSSTで適用されたギブンス回転層と置換を逆の順序で行い、各ギブンス回転の角度に対してもマイナス(‐)の値をとることにより、回転させる。
RST(Reduced secondary transform)
図16は、本発明が適用される実施形態として、RSTの動作を示す
一変換を示す直交(orthogonal)行列がNxNの形態を有するとしたとき、RT(reduced transform)は、N個の変換基底ベクトルの内からR個だけ残す(R <N)。変換係数を生成する順方向RTの行列は、数学式3のように定義することができる。
逆方向RTの行列は、順方向RT行列の転置(transpose)行列となるので、順方向RTと逆方向RTの適用を図示すれば、図14a及び図14bと同じであることができる。
1次変換が適用された変換係数のブロックの左上端8x8ブロックに適用されるRTは8x8 RSTと呼ばれることができる。数学式3で、Rの値を16に置いたとき、順方向8x8 RSTは16x64行列の形を有し、逆方向8x8 RSTは64x16の形態を有する。また、8x8 RSTに対しても、表5のような変換セットの構成が適用されることができる。つまり、表5のようにイントラ予測モードに応じた変換セットに基づいて8x8 RSTが決定することができる。一つの変換セットは、イントラ予測モードに応じて、2つまたは3つの変換で構成されるので、2次変換を適用しない場合まで含めて、最大4つの変換の内、いずれかが1つが選択されることができる(一つの変換は、恒等行列に該当することができる)。 4つの変換に対して、それぞれ0、1、2、3のインデックスが付与されたとき、NSSTインデックスに該当するシンタックス要素(syntax element)が変換係数のブロックごとにシグナリングされることで適用される変換が指定されることができる。例えば、0番インデックスは恒等行列、すなわち、2次変換が適用されない場合に割り当てることができる。結論として、NSSTインデックスを介して8x8左上端ブロックについて、JEM NSSTによると、8x8 NSSTが指定されることがあり、RST構成によれば、8x8 RSTが指定されることができる。
図17は、本発明が適用される実施形態として、逆方向スキャン順に基づいて64番目から17番目までの逆方向スキャンを実行する過程を示す図である。
数学式3のような順方向8x8 RSTが適用されると、16個の有効な変換係数が生成されるため、8x8の領域を構成する64個の入力データが16個の出力データに縮小され、2次元領域の観点によれば、1/4ほどの領域のみ有効な変換係数が満たされる。したがって、順方向8x8 RSTを適用することにより、獲得された16個の出力データが、図17の左上端の領域に満たされる。
図17で左上端4x4の領域が有効な変換係数が満たされるROI(region of interest)領域となり、残りの領域は空になる。空けられる領域には、0の値がデフォルトで満たすことができる。もし、図17のROI領域のほか、0でない有効な変換係数が見つかったら、8x8 RSTが適用されないことが確実であるので、該NSSTインデックスに該当コーディングが省略されることがある。逆に、図17のROI領域以外で0ではない変換係数が発見されないと(8x8 RSTが適用される場合、ROI以外の領域が0に満たされたとき)、8x8 RSTが適用されたこともあるので、NSSTインデックスがコーディングされることができる。このような条件的NSSTインデックスコーディングは0ではない、変換係数の存在の有無のチェックが必要であるのでレジデュアルコーディングプロセスの後に実行されることができる。
図18は、本発明が適用される実施形態として、単一変換指示子(single transform indicator)を用いたエンコードフローチャートの例を示す。
本発明の実施形態において、単一変換指示子(single transform indicator、STI)が紹介される。 2つの変換(1次変換及び2次変換)を順次用いる代わりに、単一変換指示子が活性化されたとき(STI coding == 1)単一変換(single transform)が適用されることができる。ここで、単一変換は、どの種類の変換でもすることができる。例えば、単一変換は分離変換または非分離変換で有り得る。単一変換は、非分離変換から近似された変換で有り得る。単一変換インデックス(図18のST_idx)は、単一変換指示子が活性化されたときシグナリングされることができる。ここで、単一変換インデックスは使用可能な変換候補の内から適用される変換に該当する変換を指示することができる。
図18を参照すると、エンコード装置100は、CBFが1かどうかを決定する(S1805)。 CBFが1である場合、エンコード装置100は、STIコーディングが適用されるかどうかを決定する(S1810)。STIコーディングが適用される場合、エンコード装置100は、STIインデックス(STI_Idx)をエンコードし(S1845)、変換係数のコーディングを行う(S1850)。 STIコーディングが適用されない場合、エンコード装置100は、CUレベルでEMT(またはMTS)が適用されるかどうかを示すフラグ(EMT_CU_Flag)をエンコードする(S1815)。以後、エンコード装置100は、変換係数のコーディングを行う(S1820)。以後、エンコード装置100変換ユニット(TU)にEMTが適用されるかどうかを決定する(S1825)。TUにEMTが適用される場合、エンコード装置100は、TUに適用される1次変換のインデックス(EMT_TU Idx)をエンコードする(S1830)。以後、エンコード装置100は、NSSTが適用されるかどうかを決定する(S1835)。 NSSTが適用される場合、エンコード装置100は、適用されるNSSTを指示するインデックス(NSST_Idx)をエンコードする(S1840)。
一例において、単一変換コーディングの条件が充足/活性化(例えば、STI_coding == 1)されると、単一変換インデックス(ST_Idx)がシグナリングされず、暗黙的に(implicitly)誘導されることができる。 ST_idxはブロックサイズとイントラ予測モードに基づいて、暗黙的に決定されることができる。ここで、ST_idxは現在の変換ブロックに適用される変換(または変換カーネル)を指示することができる。
単一変換指示子は、以下の条件の内、1つまたは複数の条件が満足されると、活性化することができる(STI_coding == 1)。
ブロックサイズが4または8のように、あらかじめ決められた値に相当する。
ブロックの幅==ブロックの高さ(正方形ブロック)
DCまたはプランナーのように予め決定されたモードの内、いずれか一つのイントラ予測モードである。
別の例において、STIコーディングフラグは、単一変換が適用されるか否かを示すためにシグナリングすることができる。 STIコーディングフラグはSTIコーディング値及びCBFに基づいてシグナリングされることができる。例えば、STIコーディングフラグはCBFが1であり、STIコーディングが活性化になるときシグナリングすることができる。さらにSTIコーディングフラグは、ブロックサイズ、ブロックの形(正方形ブロックまたは非正方形ブロック)、またはイントラ予測モードを考慮して、条件的にシグナリングされることができる。
係数コーディングの内、獲得された情報が用いられるために係数コーディングの後にST_idxが決定することができる。一例でST_idxは、ブロックサイズ、イントラ予測モード、及び0ではない係数(non-zero coefficient)の数に基づいて暗黙的に決定することができる。別の例において、ST_idxはブロックサイズ及び/またはブロックの形及び/またはイントラ予測モード、及び/または0ではない係数の数に基づいて、条件的にエンコード/デコードすることができる。別の例において、ST_idxシグナリングは、0ではない係数の分布(すなわち、0でない係数の位置)に依存して省略することができる。特に、0でない係数が左上側4x4領域でない領域で発見されると、ST_idxのシグナリングが省略されることができる。
図19は、本発明が適用される実施形態でとして、統一された変換指示子(unified transform indicator、UTI)を用いたエンコードフローチャートの例を示す。
本発明の実施形態において、統一された変換指示子が紹介される。UTIは、1次変換指示子と2次変換指示子を包括する。
図19を参照すると、エンコード装置100は、CBFが1かどうかを決定する(S1905)。 CBFが1である場合、エンコード装置100は、UTIコーディングが適用されるかどうかを決定する(S1910)。 UTIコーディングが適用される場合、エンコード装置100は、UTIインデックス(UTI_Idx)をエンコードし(S1945)、変換係数のコーディングを行う(S1950)。 UTIコーディングが適用されない場合、エンコード装置100は、CUレベルでEMT(またはMTS)が適用されるかどうかを示すフラグ(EMT_CU_Flag)をエンコードする(S1915)。以後、エンコード装置100は、変換係数のエンコーディングを行う(S1920)。以後、エンコード装置100変換ユニット(TU)にEMTが適用されるかどうかを決定する(S1925)。 TUにEMTが適用される場合、エンコード装置100は、TUに適用される1次変換のインデックス(EMT_TU Idx)をエンコードする(S1930)。以後、エンコード装置100は、NSSTが適用されるかどうかを決定する(S1935)。 NSSTが適用される場合、エンコード装置100は、適用されるNSSTを指示するインデックス(NSST_Idx)をエンコードする(S1940)。
UTIは、それぞれの予め決まれたユニット(CTUまたはCU)ごとにエンコーディングされることができる。
UTIコーディングモードは下の条件に依存することができる。
ブロックサイズ
ブロックの形態
イントラ予測モード
どのようにUTIからコア変換インデックスを誘導/抽出するかが予め定義される。どのようにUTIから2次変換インデックスを誘導/抽出するかが予め定義される。
UTIの構文構造は、選択的に用いられる。 UTIは、CU(またはTU)サイズに依存することができる。例えば、さらに小さなCU(TU)が相対的に狭い範囲のUTIインデックスを有することができる。一例で、予め定義された条件(例えば、ブロックサイズが予め定義されたしきい値より小さい)が満足されると、UTIは、コア変換インデックスだけを指示することができる。
別の例で、2次変換が用いられることを指示されない場合(例えば、2次変換インデックス== 0または2次変換が既に決定された場合)UTIインデックスは、コア変換インデックスとして扱うことができる。同じように、コア変換インデックスが知られればUTIインデックスは2次変換インデックスとして扱われることができる。特に、イントラ予測モードとブロックサイズを考慮して、あらかじめ決定されたコアの変換が用いられることができる。
図20a及び図20bは、本発明が適用される実施形態でとして、UTIを使ったエンコードフローチャートの他の例を示す。
別の例において、変換エンコーディング構造は、図20a及び図20bに示すようにUTIインデックスコーディングが用いられる。ここで、UTIインデックスは係数エンコーディング前にエンコーディングされたり係数エンコーディングの後にコーディングされることができる。
図20aを参照すると、エンコード装置100は、CBFが1かどうかを確認する(S2005)。 CBFが1であれば、エンコード装置100は、UTIインデックス(UTI_Idx)をコーディングし(S2010)、変換係数のコーディングを行う(S2015)。
図20bを参照すると、エンコード装置100は、CBFが1かどうかを確認する(S2055)。 CBFが1であれば、エンコード装置100は、変換係数のコーディングを実行し、(S2060)、UTIインデックス(UTI_Idx)をコーディングする(S2065)。
本発明の他の実施形態において、変換指示子のデータ隠し(data hiding)及び暗黙的コーディング方法(implicit coding methods)が紹介される。ここで変換指示子はST_idx、UTI_idx、EMT_CU_Flag、EMT_TU_Flag、NSST_idxと変換カーネルを指示するために用いられる変換に関連するインデックスを含む。前述した変換指示子は、シグナリングされず、該情報が係数エンコーディングプロセスに挿入することができる(係数コーディングプロセスの内、抽出されることができる)。係数エンコーディングプロセスは次の部分を含むことができる。
- 最後のx位置(Last_position_x)、最後のy位置(Last_position_y)
- グループフラグ(Group flag)
- 意味マップ(significance map)
- 1より大きいかどうかを指示するフラグ(Greater_than_1_flag)
- 2より大きいかどうかを指示するフラグ(Greater_than_2_flag)
- 残りのレベルのコーディング(Remaining level coding)
- サインコーディング(Sign coding)
たとえば、変換指示子情報が、前述した係数コーディングプロセスの一つまたはそれ以上の者に挿入することができる。変換指示子情報を挿入するために一緒に考慮することできるものは以下の通りである。
- サインコーディングのパターン(Pattern of Sign coding)
- 残りレベルの絶対値(The absolute value of remaining level)
-1より大きいかどうかを指示するフラグの数(The number of Greater_than_1_flag)
- 最後のx位置及び最後のy位置の値(The value of Last_position_X and Last_position_Y)
前述したデータ隠し方法は、条件的に考慮することができる。たとえば、データ隠し方法は、0ではない係数の数に依存てきで有り得る。
また別の例において、NSST_idxとEMT_idxは依存的で有り得る。たとえば、EMT_CU_flagが0(または1)のとき、NSST_idxは0ではないことがある。この場合、NSST_idx-1がNSST_idxの代わりにシグナリングすることができる。
本発明の他の実施形態において、イントラ予測モードに基づいたNSST変換セットのマッピングが、以下の表7のように紹介される。前述したように、以下の説明では、非分離変換の例としてNSSTを中心に説明するが、非分離変換についての他の知られている用語(例えば、LFNST)が用いられることができる。例えば、NSSTセット(NSST Set)、NSSTインデックスはLFNSTセット、LFNSTインデックスに置き換えて用いられる。また、本文書に説明されるRSTは、変換ブロックの少なくとも一部の領域(左上側4x4、8x8の領域または8x8ブロックで右‐下側4x4の領域を除外した残りの領域)に適用される正方形非分離変換行列で縮小された入力の長さ及び/または縮小された出力の長さを有する非正方形の変換行列を用いる非分離変換(例えば、LFNST)の例として、RSTまたLFNSTに置き換えて用いられる。
NSSTセットナンバーは、表8のように0から3の間で再配列されることができる。
NSST変換セットでは、要求されるメモリ空間を低減させるために(35の代わりに)、4つの変換セットが用いられる。
さらに、各変換セットごとに、さまざまな数の変換カーネルが以下のように用いられる。
ケースA:各変換セットごとに2つの使用可能な変換カーネルが用いられ、NSSTインデックス範囲は0~2である。たとえば、NSSTインデックスが0である場合、2次変換(デコーダに基づいて2次逆変換)が適用されないことがある。NSSTインデックスが1または2である場合、2次変換が適用されることができる。変換セットは、2つの変換カーネルを含むことができ、前記2つの変換カーネルに1または2のインデックスがマッピングされることができる。
表9を参照すると、0番から3番非分離変換(NSSTまたはLFNST)セットごとに2つの変換カーネルが用いられる。
ケースB:0番変換セットに対し2つの使用可能な変換カーネルを使用し、残りの変換セットに対し各々一つの変換カーネルを用いる。0番変換セット(DC、プランナー)に対し使用可能なNSSTインデックスは0~2である。しかし、他のモード(1、2、3番の変換セット)のNSSTインデックスは0~1である。
表10を参照すると、0番インデックスに対応する非分離変換(NSST)セットに対して2つの非分離変換カーネルが設定され、1、2、3番インデックスに対応する非分離変換(NSST)セットのそれぞれについて、1つの非分離変換カーネルが設定される。
ケースC:各変換セットごとに一つの変換カーネルを使用し、NSSTインデックス範囲は0~1である。
図21は、本発明が適用される実施形態として、変換を実行するエンコードフローチャートの例を示す。
エンコード装置100は、レジデュアルブロックについて1次変換を実行する(S2105)。 1次変換は、コア変換に呼ばれることができる。実施形態として、エンコード装置100は、前述したMTSを用いて、1次変換を実行することができる。また、エンコード装置100は、MTSの候補の内から、特定MTSを指示するMTSインデックスをデコード装置200に転送することができる。このとき、MTS候補は、現在ブロックのイントラ予測モードに基づいて構成されることができる。
エンコード装置100は、2次変換の適用をするかどうかを決定する(S2110)。一例として、エンコード装置100は、1次変換されたレジデュアル変換係数に基づいて、2次変換の適用をするかどうかを決定することができる。たとえば、2次変換はNSSTまたはRSTで有り得る。
エンコード装置100は、2次変換を決定する(S2115)。このとき、エンコード装置100は、イントラ予測モードに応じて指定されたNSST(またはRST)変換セットに基づいて、2次変換を決定することができる。
また、一例として、エンコード装置100は、S2115段階に先立って、現在ブロックの大きさに基づいて、2次変換が適用される領域を決定することができる。
エンコード装置100は、S2115段階で決定された2次変換を用いて、2次変換を実行する(S2120)。
図22は、本発明が適用される実施形態として、変換を実行するデコードフローチャートの例を示す。
デコード装置200は、2次逆変換の適用をするかどうかを決定する(S2205)。たとえば、2次逆変換はNSSTまたはRSTで有り得る。一例として、デコード装置200は、エンコード装置100から受信された2次変換フラグに基づいて、2次逆変換の適用をするかどうかを決定することができる。
デコード装置200は、2次逆変換を決定する(S2210)。このとき、デコード装置200は、前述したイントラ予測モードに応じて指定されたNSST(またはRST)変換セットに基づいて、現在ブロックに適用される2次逆変換を決定することができる。
また、一例として、デコード装置200は、S2210段階に先立って、現在ブロックの大きさに基づいて、2次逆変換が適用される領域を決定することができる。
デコード装置200は、S2210段階で決定された2次逆変換を用いて、逆量子化されたレジデュアルブロックについて2次逆変換を実行する(S2215)。
デコード装置200は、2次逆変換されたレジデュアルブロックについて1次逆変換を実行する(S2220)。1次逆変換はコア逆変換と呼びことができる。実施形態として、デコード装置200は、前述したMTSを用いて、1次逆変換を行うことができる。また、一例として、デコード装置200は、S2220段階に先立って、現在ブロックにMTSが適用されるかどうかを決定することができる。この場合、図22のデコードフローチャートにMTSが適用されるかどうかを決定する段階がさらに含まれることができる。
一例として、現在ブロックにMTSが適用される場合(つまり、cu_mts_flag = 1)、デコード装置200は、現在ブロックのイントラ予測モードに基づいてMTS候補を構成することができる。この場合、図22のデコードフローチャートにMTS候補を構成する段階がさらに含まれることができる。そして、デコード装置200は、構成されたMTSの候補の内、特定のMTSを指示するmts_idxを用いて、現在ブロックに適用される1次逆変換を決定することができる。
図23は、本発明が適用される実施形態として、エンコード装置100内の変換部120の詳細ブロック図の例を示す。
本発明の実施形態が適用されるエンコード装置100は、1次変換部2310、2次変換適用可否決定部2320、2次変換決定部2330、2次変換部2340を含むことができる。
1次変換部2310は、レジデュアルブロックについて1次変換を実行することができる。 1次変換は、コア変換に呼ばれることができる。実施形態として、1次変換部2310は、前述したMTSを用いて、1次変換を実行することができる。また、1次変換部2310は、MTSの候補の内から、特定MTSを指示するMTSインデックスをデコード装置200に転送することができる。このとき、MTS候補は、現在ブロックのイントラ予測モードに基づいて構成されることができる。
2次変換適用可否決定部2320は、2次変換を適用するかどうかを決定することができる。一例として、2次変換適用可否決定部2320は、1次変換されたレジデュアルブロックの変換係数に基づいて、2次変換の適用をするかどうかを決定することができる。たとえば、2次変換はNSSTまたはRSTで有り得る。
2次変換決定部2330は、2次変換を決定する。このとき、2次変換決定部2330は、前述したように、イントラ予測モードに応じて指定されたNSST(またはRST)変換セットに基づいて、2次変換を決定することができる。
また、一例として、2次変換決定部2330は、現在ブロックの大きさに基づいて、2次変換が適用される領域を決定することもできる。
2次変換部2340は、決定された2次変換を用いて、2次変換を実行することができる。
図24は、本発明が適用される実施形態として、デコード装置200内の逆変換部230の詳細ブロック図の例を示す。
本発明が適用されるデコード装置200は、2次逆変換適用可否決定部2410、2次逆変換決定部2420、2次逆変換部2430、1次逆変換部2440を含む。
2次逆変換適用可否決定部2410は、2次逆変換の適用をするかどうかを決定することができる。たとえば、2次逆変換はNSSTまたはRSTで有り得る。一例として、2次逆変換適用可否決定部2410は、エンコード装置100から受信された2次変換フラグに基づいて、2次逆変換の適用をするかどうかを決定することができる。他の一例として、2次逆変換適用可否決定部2410は、レジデュアルブロックの変換係数に基づいて、2次逆変換の適用をするかどうかを決定することもできる。
2次逆変換決定部2420は、2次逆変換を決定することができる。このとき、2次逆変換決定部2420は、イントラ予測モードに応じて指定されたNSST(またはRST)変換セットに基づいて、現在ブロックに適用される2次逆変換を決定することができる。
また、一例として、2次逆変換決定部2420は、現在ブロックの大きさに基づいて、2次逆変換が適用される領域を決定することができる。
また、一例として、2次逆変換部2430は、決定された2次逆変換を用いて、逆量子化されたレジデュアルブロックについて2次逆変換を行うことができる。
1次逆変換部2440は、2次逆変換されたレジデュアルブロックについて1次逆変換を行うことができる。実施形態として、1次逆変換部2440は、前述したMTSを用いて、1次変換を実行することができる。また、一例として、1次逆変換部2440は、現在ブロックにMTSが適用されるかどうかを決定することができる。
一例として、現在ブロックにMTSが適用される場合(つまり、cu_mts_flag = 1)、1次逆変換部2440は、現在ブロックのイントラ予測モードに基づいてMTS候補を構成することができる。そして、1次逆変換部2440は、構成されたMTSの候補の内から、特定のMTSを指示するmts_idxを用いて、現在ブロックに適用される1次変換を決定することができる。
図25は、本発明が適用される実施形態として、ビデオ信号を処理するためのフローチャートを示す。図25のフローチャートは、デコード装置200または逆変換部230によって実行されることができる。
まず、デコード装置200は、非分離変換インデックス及び現在ブロックの幅と高さに基づいて、現在ブロックの逆非分離変換の適用をするかどうかを決定することができる。例えば、デコード装置200は、非分離変換インデックスが0ではなく、現在ブロックの幅と高さがそれぞれ4以上の場合、前記非分離変換を適用するように決定することができる。もし非分離変換インデックスが0であるか、現在ブロックの幅または高さが4より小さい場合、デコード装置200は、逆方向の非分離変換を省略し、逆方向1次変換を実行することができる。
S2505段階において、デコード装置200は、現在ブロックのイントラ予測モードに基づいて、予め定義された非分離変換セットの内から、現在ブロックの非分離変換に用いられる非分離変換セットを指示する非分離変換セットインデックスを決定する。非分離変換セットインデックスは、表7または表8のように、イントラ予測モードの範囲に応じて設定される4つの変換セットにそれぞれ割り当てられるように設定されることができる。つまり、表7または表8のように、イントラ予測モードが0~1である場合、非分離変換セットインデックスは、第1インデックス値に決定され、イントラ予測モードが2~12または56~66であれば、非分離変換セットインデックスは、第2インデックス値に決定され、イントラ予測モードが13~23または45~55であれば、非分離変換セットインデックスは、第3インデックス値に決定され、イントラ予測モードが24~44であれば、非分離変換セットインデックスは、第4インデックス値に決定することができる。
ここで、予め定義された非分離変換セットは、表9のように、それぞれ2つの変換カーネルを含むことができる。また、予め定義された非分離変換セットは、表10または表11のように1つまたは2つの変換カーネルを含むこともできる。
S2510段階において、デコード装置200は、非分離変換セットインデックスによって指示される非分離変換セットに含まれた変換カーネルの内、現在ブロックの非分離変換インデックスによって指示される変換カーネルを非分離変換行列で決定する。たとえば、非分離変換セットインデックスのインデックス値のそれぞれについて、2つの非分離変換カーネルが設定されることができ、デコード装置200は、非分離変換セットインデックスに対応する2つの変換行列カーネルの内、非分離変換インデックスによって指示される変換カーネルに基づいて非分離変換行列を決定することができる。
S2515段階で、デコード装置200は、現在ブロックの幅及び高さに応じて決定される現在ブロックの左上側領域に対し非分離変換行列を適用する。たとえば、現在ブロックの幅と高さのすべてが8以上の場合、現在ブロックの左上側8x8の領域に対して非分離変換が適用され、現在ブロックの幅または高さが8より小さい場合、現在ブロックの4x4領域にについて、非分離変換が適用されることができる。非分離変換のサイズもまた非分離変換が適用される領域に対応して8x8または4x4に設定されることができる。
また、デコード装置200は、非分離変換が適用された現在ブロックに対して水平方向の変換と垂直方向の変換を適用することができる。ここで、水平方向の変換と垂直方向の変換は、現在ブロックに適用された予測モード及び変換行列の選択のためのMTSインデックスに基づいて決定することができる。
図26は、本発明が適用される実施形態として、ビデオ信号を処理するための装置のブロック図の例を示す。図26のビデオ信号処理装置は、図1のエンコード装置又は図2のデコード装置に該当することができる。
映像信号を処理する映像処理装置2600は、映像信号を貯蔵するメモリ2620と、前記メモリと結合されながら、映像信号を処理するプロセッサ2610を含む。
本発明の実施形態に係るプロセッサ2610は、映像信号の処理のための少なくとも一つのプロセッシング回路で構成されることができ、映像信号をエンコードまたはデコードするためのコマンドを実行することにより、映像信号を処理することができる。つまり、プロセッサ2610は、前述したエンコードまたはデコード方法を実行することにより、元の映像データをエンコードしたり、エンコードされた映像信号をデコードすることができる。
また、本発明が適用される処理方法は、コンピュータで実行されるプログラムの形で生産されることができ、コンピュータが読み取り可能な貯蔵媒体に貯蔵することができる。本発明に係るデータ構造を有するマルチメディアデータもまた、コンピュータが読み出しできる記録媒体に貯蔵することができる。前記コンピュータが判読可能な記録媒体は、コンピュータで読み取り可能なデータが貯蔵されるあらゆる種類のストレージデバイス及び分散ストレージデバイスを含む。前記コンピュータが判読可能な記録媒体は、例えば、ブルーレイディスク(BD)、ユニバー去るシリアルバス(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、及び光学的データ貯蔵装置を含むことができる。 また、前記コンピュータが読み取り可能な記録媒体は、搬送波(例えば、インターネットを通じた伝送)の形で実現されたメディアを含む。また、エンコード方法で生成されたビットストリームが、コンピュータが読み取り可能な記録媒体に貯蔵したり、有無線通信ネットワークを介して転送されることができる。
また、本発明の実施形態は、プログラムコードによるコンピュータプログラム製品として実現されることができ、前記プログラムコードは、本発明の実施形態により、コンピュータ上で実行することができる。前記プログラムコードは、コンピュータによって読み取り可能なキャリア上に貯蔵することができる。
前記記述されたように、本発明で説明した実施形態は、プロセッサ、マイクロプロセッサ、コントローラ、またはチップ上で実現されて実行されることができる。例えば、各図で示した機能ユニットは、コンピュータ、プロセッサ、マイクロプロセッサ、コントローラ、またはチップ上で実現されて実行されることができる。
また、本発明が適用されるデコーダとエンコーダは、マルチメディア放送送受信装置、モバイル通信端末、ホームシネマビデオ装置、デジタルシネマビデオ装置、監視用カメラ、ビデオ対話装置、ビデオ通信などのようなリアルタイム通信装置、モバイルストリーミング装置、貯蔵媒体、キャムコーダ、ビデオオンデマンド(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)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどにより実現されることができる。
ファームウェアやソフトウェアによる実現の場合、本発明の一実施形態は、以上で説明した機能または動作を実行するモジュール、プロシージャ、関数などの形態で実現されることができる。ソフトウェアコードは、メモリに貯蔵されてプロセッサによって駆動されることができる。前記メモリは、前記プロセッサの内部または外部に位置して、既に公知された多様な手段により、前記プロセッサとデータを送受信することができる。
本発明は、本発明の必須的特徴を逸脱しない範囲で他の特定の形態で具体化されることができることは、当業者に自明である。したがって、前述した詳細な説明は、すべての面で制限的に解釈してはならなく、例示的なものとみなされるべきである。本発明の範囲は、添付された請求項の合理的解釈によって決定されるべきであり、本発明の等価的範囲内でのすべての変更は、本発明の範囲に含まれる。