本発明に関する理解を助けるために詳細な説明の一部に含まれる添付図面は、本発明に対する実施形態を提供し、詳細な説明と共に本発明の技術的特徴を説明する。
以下、本発明に係る好適な実施形態を添付の図面を参照して、詳細に説明する。添付された図面と一緒に以下に開示される詳細な説明は、本発明の例示的な実施形態を説明しようとするものであり、本発明が実施されることができる唯一の実施形態を示したいのではない。以下の詳細な説明は、本発明の完全な理解を提供するために具体的な細部事項を含む。しかしながら、当業者は、本発明がこのような具体的な詳細事項がなくても実施できることが分かる。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造および装置は省略されるか、各構造および装置の中核機能を中心としたブロック図の形式で示されることができる。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造および装置は省略されるか、各構造および装置の中核機能を中心としたブロック図の形式で示されることができる。
以下の説明で用いられる特定の用語は、本発明の理解を助けるために提供されたものであり、このような特定の用語の使用は、本発明の技術的思想を逸脱しない範囲で他の形態に変更されることができる。例えば、信号、データ、サンプル、ピクチャ、フレーム、ブロックなどの場合、各コーディングの過程で適切に代替されて解釈されることがある。
以下、本明細書において「処理ユニット」は、予測、変換、および/または量子化などのエンコード/デコードの処理過程が実行される単位を意味する。また、処理ユニットは、輝度(luma)成分の単位と色差(chroma)成分の単位とを含む意味で解釈されることができる。例えば、処理ユニットは、ブロック(block)、コーディングユニット(Coding Unit、CU)、予測ユニット(Prediction Unit、PU)、または変換ブロック(Transform Unit、TU)に該当することができる。
また、処理ユニットは、輝度成分の単位または色差成分の単位として解釈されることができる。例えば、処理ユニットは、輝度成分のCTB、CB、PU、またはTBに該当することができる。あるいは、処理ユニットは、色差成分のCTB、CB、PU、またはTBに該当することができる。また、これに限定されるものではなく、処理ユニットは、輝度成分の単位および色差成分の単位を含む意味で解釈されることもある。
また、処理ユニットは、必ずしも正方形のブロックに限定されるものではなく、3つ以上の頂点を有する多角形の形で構成されることもある。
また、以下、本明細書において、ピクセル、画素、または係数(変換係数または一次変換を経た変換係数)などをサンプルとして総称(通称)する。そして、サンプルを用いるということは、ピクセル値、画素値、または係数(変換係数または一次変換を経た変換係数)などを利用することを意味する。
以下、静止画または動画のエンコード/デコード方法に関し、最悪の場合(worst case)の計算複雑度を考慮した縮小された二次変換(Reduced Secondary Transform:RST)の設計および適用方法について説明する。
本発明の実施形態は、画像およびビデオ圧縮方法および装置を提供する。圧縮されたデータは、ビットストリームの形態を有し、ビットストリームは、様々な形態のストレージ(storage)に記憶(格納)されることもでき、ネットワークを介してストリーミングされてデコーダを有する端末機に伝達されることもできる。端末機においては、ディスプレイ装置を装着した場合、ディスプレイ装置で復号された画像を表示してもよく、単にビットストリームデータを記憶してもよい。本発明の実施形態において提案される方法および装置は、エンコーダおよびデコーダの両方に適用されることができ、ビットストリームを生成する装置またはビットストリームを受信する装置に全て適用されることができ、端末機においてディスプレイ装置を介して出力するか否かに関係なく適用されることができる。
画像圧縮装置は、予測部、変換および量子化部、エントロピコーディング部から構成され、エンコード装置およびデコード装置の概略ブロック図は、図1および図2の通りである。そのうち、変換および量子化部においては、オリジナル(原本)信号から予測信号を減算して残差信号をDCT(Discrete Cosine Transform)-2のような変換により周波数領域(ドメイン)信号に変換した後、量子化を適用して0でない信号の数を大幅に減らして画像圧縮を可能とする。
図1は、本発明が適用される実施形態であって、ビデオ/イメージ信号のエンコードが行われるエンコード装置の概略ブロック図を示す。
画像分割部110は、エンコード装置100に入力された入力画像(または、ピクチャ、フレーム)を1つまたは複数の処理ユニット(processing unit)に分割する。一例として、上記処理ユニットは、コーディングユニット(CU)と呼ばれてもよい。この場合、コーディングユニットは、コーディングツリーユニット(Coding Tree Unit:CTU)または最大コーディングユニット(Largest Coding Unit:LCU)からQTBT(Quad-Tree Binary-Tree)構造によって再帰的に(recursively)分割される。例えば、1つのコーディングユニットは、四分木(クアッドツリー)構造および/または二分木(バイナリツリー)構造をベースに下位デプスの(deeper)複数のコーディングユニットに分割される。この場合、例えば、四分木構造が先に適用され、二分木構造が後で適用されてもよい。あるいは、二分木構造が先に適用されてもよい。これ以上分割されない最終コーディングユニットをベースに本発明によるコーディング手順が行われる。この場合、画像特性によるコーディング効率などに基づいて最大コーディングユニットが直ちに最終コーディングユニットとして使用されてもよく、または、必要に応じてコーディングユニットは再帰的に(recursively)より下位デプスのコーディングユニットに分割されて最適なサイズのコーディングユニットが最終コーディングユニットとして使用されてもよい。ここで、コーディング手順とは、後述する予測、変換、および復元などの手順を含む。他の例として、上記処理ユニットは、予測ユニット(PU)または変換ユニット(TU)をさらに含んでもよい。この場合、上記予測ユニットおよび上記変換ユニットは、それぞれ前述した最終コーディングユニットから分割またはパーティショニングされる。上記予測ユニットは、サンプル予測の単位であり、上記変換ユニットは、変換係数を導出(誘導)する単位および/または変換係数から残差(レジデュアル)信号(residual signal)を導出する単位であり得る。
ユニットは、場合によって、ブロック(block)または領域(area)などの用語と混用されてもよい。一般的な場合、M×Nブロックは、M個の列およびN個の行からなるサンプルまたは変換係数(transform coefficient)の集合を示す。サンプルは、一般的にピクセルまたはピクセルの値を示し、輝度(luma)成分のピクセル/ピクセルの値のみを示してもよく、彩度(chroma)成分のピクセル/ピクセルの値のみを示してもよい。サンプルは、1つのピクチャ(または、画像)をピクセル(pixel)またはペル(pel)に対応する用語として使用することができる。
エンコード装置100は、入力画像信号(オリジナル(原本)ブロック、オリジナルサンプルアレイ)から、インター予測部180またはイントラ予測部185から出力された予測信号(予測されたブロック、予測サンプルアレイ)を減算して、残差信号(residual signal、残差(残余)ブロック、残差サンプルアレイ)を生成し、生成された残差信号は、変換部120に送信される。この場合、図示されているようにエンコーダ100内で入力画像信号(オリジナルブロック、オリジナルサンプルアレイ)から予測信号(予測ブロック、予測サンプルアレイ)を減算するユニットは、減算部115と呼ばれてもよい。予測部は、処理対象ブロック(以下、現ブロックという)に対する予測を行い、現ブロックに対する予測サンプルを含む予測されたブロック(predicted block)を生成する。予測部は、現ブロックまたはCU単位で、イントラ予測が適用されるかまたはインター予測が適用されるかを決定することができる。予測部は、各予測モードに関する説明において後述するように予測モード情報などの予測に関する様々な情報を生成してエントロピエンコード部190に伝達する。予測に関する情報は、エントロピエンコード部190においてエンコードされてビットストリームの形態で出力される。
イントラ予測部185は、現ピクチャ内のサンプルを参照して現ブロックを予測する。参照されるサンプルは、予測モードによって上記現ブロックの周辺(neighbor)に位置するか、または離れて位置する。イントラ予測において予測モードは、複数の非方向性モードと複数の方向性モードとを含む。非方向性モードは、例えば、DCモードおよび平面(プランナー)モード(Planar mode)を含む。方向性モードは、予測方向の細密程度に応じて、例えば、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、DST(Discrete Sine Transform)、KLT(Karhunen-Loeve Transform)、GBT(Graph-Based Transform)、またはCNT(Conditionally Non-linear Transform)の少なくとも1つを含む。ここで、GBTは、ピクセル間の関係情報をグラフで表現するとき、このグラフから得られた変換を意味する。CNTは、以前に復元された全てのピクセル(all previously reconstructed pixel)を利用して予測信号を生成し、それに基づいて取得される変換を意味する。また、変換過程は、正方形の同一サイズを有するピクセルブロックに適用されてもよく、正方形ではない可変サイズのブロックに適用されてもよい。
量子化部130は、変換係数を量子化してエントロピエンコード部190に送信し、エントロピエンコード部190は、量子化された信号(量子化された変換係数に関する情報)をエンコードしてビットストリームに出力する。量子化された変換係数に関する情報は、残差情報と呼ばれてもよい。量子化部130は、係数スキャン順序(scan order)に基づいてブロック形態の量子化された変換係数を一次元ベクトル形態で再整列し、一次元ベクトル形態の量子化された変換係数に基づいて上記量子化された変換係数に関する情報を生成することもできる。エントロピエンコード部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、ブルーレイ、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は、これにより、インター予測が適用される場合、エンコード装置100とデコード装置とにおける予測ミスマッチを避けることができ、符号化効率も向上させることができる。
復号ピクチャバッファ170は、修正された復元ピクチャをインター予測部180における参照ピクチャとして使用するために記憶できる。
図2は、本発明が適用される実施形態であって、画像信号のデコードが行われるデコード装置の概略ブロック図を示す。
図2に示すように、デコード装置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は、実施形態によって1つのハードウェアコンポーネント(例えば、デコーダまたはプロセッサ)により構成される。また、復号ピクチャバッファ250は、実施形態によって1つのハードウェアコンポーネント(例えば、メモリまたはデジタル記憶媒体)により構成される。
ビデオ/イメージ情報を含むビットストリームが入力されると、デコード装置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 coefficients)を取得する。
逆変換部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において説明された実施形態は、それぞれデコード装置200のフィルタリング部240、インター予測部260およびイントラ予測部265にも同一にまたは対応するように適用される。
図3は、本発明が適用されることができる実施形態であって、図3AはQT(QuadTree:QT)、図3BはBT(Binary Tree:BT)、図3CはTT(Ternary Tree:TT)、図3DはAT(Asymmetric Tree:AT)によるブロック分割構造を説明する図である。
ビデオコーディングにおいて、1つのブロックは、QTベースで分割されることができる。また、QTにより分割された1つのサブブロック(subblock)は、QTを使用して再帰的にさらに分割されてもよい。これ以上QT分割されないリーフブロック(leaf block)は、BT、TTまたはATのうちの少なくとも1つの方式により分割される。BTは、水平(horizontal)BT(2N×N、2N×N)および垂直(vertical)BT(N×2N、N×2N)の2つの形態の分割を有することができる。TTは、水平TT(2N×1/2N、2N×N、2N×1/2N)および垂直TT(1/2N×2N、N×2N、1/2N×2N)の2つの形態の分割を有することができる。ATは、水平-上側(horizontal-up)AT(2N×1/2N、2N×3/2N)、水平-下側(horizontal-down)AT(2N×3/2N、2N×1/2N)、垂直-左側(vertical-left)AT(1/2N×2N、3/2N×2N)、垂直-右側(vertical-right)AT(3/2N×2N、1/2N×2N)の4つの形態の分割を有することができる。それぞれの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は、垂直BT(C0、C1)または水平BT(D0、D1)に分割される。ブロックC0のように、それぞれのサブブロックは、水平BT(E0、E1)または垂直BT(F0、F1)の形態のように再帰的にさらに分割される。
図3Cは、TT分割の例を示す。QTによりこれ以上分割されないブロックB3は、垂直TT(C0、C1、C2)または水平TT(D0、D1、D2)に分割される。ブロックC1のように、それぞれのサブブロックは、水平TT(E0、E1、E2)または垂直TT(F0、F1、F2)の形態のように再帰的にさらに分割される。
図3Dは、AT分割の例を示す。QTによりこれ以上分割されないブロックB3は、垂直AT(C0、C1)または水平AT(D0、D1)に分割される。ブロックC1のように、それぞれのサブブロックは、水平AT(E0、E1)または垂直TT(F0、F1)の形態のように再帰的にさらに分割されることができる。
一方、BT、TT、AT分割は、共に使用されてもよい。例えば、BTにより分割されたサブブロックは、TTまたはATによる分割が可能である。また、TTにより分割されたサブブロックは、BTまたはATによる分割が可能である。ATにより分割されたサブブロックは、BTまたはTTによる分割が可能である。例えば、水平BT分割の後、それぞれのサブブロックが垂直BTに分割されることができ、または、垂直BT分割の後、それぞれのサブブロックが水平BTに分割されることもできる。この場合、分割順序は異なるが、最終的に分割される形状は同一である。
また、ブロックが分割されると、ブロックを探索する順序を多様に定義することができる。一般に、左から右へ、上端から下端へ探索が行われ、ブロックを探索するということは、各分割されたサブブロックの追加的なブロック分割が可能か否かを決定する順序を意味するか、ブロックがこれ以上分割されない場合は、各サブブロックの符号化順序を意味するか、または、サブブロックにおいて他の隣接ブロックの情報を参照するときの探索順序を意味する。
図3Aないし図3Dのような分割構造により分割された処理ユニット(または、変換ブロック)別に変換が行われることができ、特に、行(row)方向および列(column)方向別に分割されて変換行列が適用されることができる。本発明の実施形態によれば、処理ユニット(または、変換ブロック)の行方向または列方向の長さに応じて異なる変換タイプが使用されることができる。
図4および図5は、本発明が適用される実施形態であって、図4は、図1のエンコード装置100内の変換および量子化部120/130、逆量子化および逆変換部140/150の概略ブロック図を示し、図5は、デコード装置200内の逆量子化および逆変換部220/230の概略ブロック図を示す。
図4に示すように、変換および量子化部120/130は、一次変換部(primary transform unit)121、二次変換部(secondary transform unit)122および量子化部130を含む。逆量子化および逆変換部140/150は、逆量子化部140、逆二次変換部(inverse secondary transform unit)151および逆一次変換部(inverse primary transform unit)152を含む。
図5に示すように、逆量子化および逆変換部220/230は、逆量子化部220、逆二次変換部(inverse secondary transform unit)231および逆一次変換部(inverse primary transform unit)232を含む。
本発明において、変換を行うときは、複数の段階を経て変換を行う。例えば、図4に示すように、一次変換(primary transform)、二次変換(secondary transform)の2段階を適用することができ、また、アルゴリズムによってそれ以上の変換段階が用いられることもできる。ここで、一次変換は、コア変換(core transform)と称されてもよい。
一次変換部121は、残差信号に対して一次変換を適用し、ここで、一次変換は、エンコーダおよび/またはデコーダにおいてテーブルとして既に(予め)定義されることができる。
二次変換部122は、一次変換された信号に対して二次変換を適用し、ここで、二次変換は、エンコーダおよび/またはデコーダにおいてテーブルとして既に定義されることができる。
一実施形態において、二次変換として非分離二次変換(non-separable secondary transform)(NSST)が条件的に適用されることができる。例えば、NSSTは、画面内の予測ブロックである場合にのみ適用され、予測モードグループごとに適用可能な変換セットを有することができる。
ここで、予測モードグループは、予測方向に対する対称性に基づいて設定される。例えば、予測モード52と予測モード16とは、予測モード34(対角方向)を基準に対称であるので、1つのグループを形成して同一の変換セット(transform set)が適用されることができる。ここで、予測モード52に対する変換を適用するとき、入力データを転置(transpose)した後に適用し、これは、予測モード16と変換セットが同一であるためである。
一方、平面モード(Planar mode)およびDCモード(DC mode)の場合、方向に対する対称性が存在しないので、各自の変換セットを有し、当該変換セットは、2つの変換で構成されることができる。残りの方向性モードに対しては、変換セットごとに3つの変換で構成されることができる。
量子化部130は、二次変換された信号に対して量子化を行う。
逆量子化および逆変換部140/150は、前述した説明の過程を逆に行い、重複する説明は省略する。
図5は、デコード装置200内の逆量子化および逆変換部220/230の概略ブロック図を示す。
図5に示すように、逆量子化および逆変換部220/230は、逆量子化部220、逆二次変換部(inverse secondary transform unit)231および逆一次変換部(inverse primary transform unit)232を含む。
逆量子化部220は、量子化ステップサイズ情報を用いてエントロピデコードされた信号から変換係数を取得する。
逆二次変換部231においては、変換係数に対して逆二次変換を行う。ここで、逆二次変換は、図4で説明した二次変換の逆変換を示す。
逆一次変換部232は、逆二次変換された信号(または、ブロック)に対して逆一次変換を行い、残差信号(residual signal)を取得する。ここで、逆一次変換は、図4で説明した上記一次変換(primary transform)の逆変換を示す。
図6は、本発明が適用される実施形態であって、一次変換および二次変換によりビデオ信号をエンコードするフローチャートを示す。図6に示す各動作は、エンコード装置100の変換部120により行われる。
エンコード装置100は、現ブロックの予測モード、ブロック形状および/またはブロックサイズの少なくとも1つに基づいて、順方向二次変換を決定(または、選択)する(S610)。
エンコード装置100は、RD最適化(rate-distortion optimization)により最適な順方向二次変換を決定することができる。最適な順方向二次変換は、複数の変換組合せのうちの1つに対応し、複数の変換組合せは、変換インデックスにより定義される。例えば、RD最適化のために、エンコード装置100は、各候補に対して順方向二次変換、量子化、残差コーディングなどを全て行った結果を比較することができる。
エンコード装置100は、最適な順方向二次変換に対応する二次変換インデックスをシグナリングする(S620)。ここで、2次変換インデックスは、本明細書で説明した他の実施形態が適用されることができる。
一方、エンコード装置100は、現ブロック(残差ブロック)に対して順方向一次変換を行う(S630)。
エンコード装置100は、最適な順方向二次変換を用いて現ブロックに対して順方向二次変換を行う(S640)。一方、順方向二次変換は、以下に説明されるRSTであり得る。RSTは、N個の残差データ(N×1残差ベクトル)が入力されてR個(R<N)の変換係数データ(R×1変換係数ベクトル)が出力される変換を意味する。
一実施形態として、RSTは、現ブロックの特定領域に適用されることができる。例えば、現ブロックがN×Nであるとき、特定領域は、左上側のN/2×N/2領域を意味し得る。しかしながら、本発明はこれに限定されず、予測モード、ブロック形状、またはブロックサイズのうちの少なくとも1つによって異なるように設定される。例えば、現ブロックがN×Nであるとき、特定領域は、左上側のM×M領域(M≦N)を意味し得る。
一方、エンコード装置100は、現ブロックに対して量子化を行うことにより、変換係数ブロックを生成する(S650)。
エンコード装置100は、変換係数ブロックに対してエントロピエンコードを行って、ビットストリームを生成することができる。
図7は、本発明が適用される実施形態であって、二次逆変換および一次逆変換によりビデオ信号をデコードするフローチャートを示す。図7に示す各動作は、デコード装置200の逆変換部230により行われる。
デコード装置200は、ビットストリームから二次変換インデックスを取得する(S710)。
デコード装置200は、二次変換インデックスに対応する二次変換を導出する(S720)。
ただし、ステップS710およびS720は、一実施形態であり、本発明はこれに限定されない。例えば、デコード装置200は、二次変換インデックスを取得せずに、現ブロックの予測モード、ブロック形状および/またはブロックサイズのうちの少なくとも1つに基づいて二次変換を導出することができる。
一方、デコーダ200は、ビットストリームをエントロピデコードして変換係数ブロックを取得し、上記変換係数ブロックに対して逆量子化を行う(S730)。
デコーダ200は、逆量子化された変換係数ブロックに対して逆方向二次変換を行う(S740)。例えば、逆方向二次変換は、逆方向RSTであり得る。逆方向RSTは、図6で説明されたRSTの転置(transpose)行列であって、R個の変換係数データ(Rx1変換係数ベクトル)が入力され、N個の残差データ(Nx1残差ベクトル)が出力される変換を意味する。
一実施形態として、縮小された二次変換は、現ブロックの特定の領域に適用されることができる。例えば、現ブロックがN×Nであるとき、特定領域は、左上側のN/2×N/2領域を意味し得る。しかしながら、本発明はこれに限定されず、予測モード、ブロック形状、またはブロックサイズのうちの少なくとも1つによって異なるように設定される。例えば、現ブロックがN×Nであるとき、特定領域は、左上側のM×M領域(M≦N)またはM×L(M≦N、L≦N)を意味し得る。
そして、デコーダ200は、逆方向二次変換された結果に対して逆方向一次変換を行う(S750)。
デコーダ200は、ステップS750により残差ブロックを生成し、残差ブロックと予測ブロックとを加算することにより復元ブロックを生成する。
図8は、本発明の実施形態によるAMT(Adaptive Multiple Transform)が適用される変換設定グループ(transform configuration group)の例を示す。
図8によれば、変換設定グループは、予測モードに基づいて決定され、グループの個数は、計6個(G0~G5)であり得る。そして、G0~G4は、イントラ予測が適用される場合に該当し、G5は、インター予測により生成された残差(residual)ブロックに適用される変換組合せ(または、変換セット、変換組合せセット)を示す。
1つの変換組合せは、該当の二次元ブロックの行(row)に適用される水平変換(horizontal transform)(または、行変換(row transform))と列(column)に適用される垂直変換(vertical transform)(または、列変換(column transform))とで構成される。
ここで、全ての変換設定グループのそれぞれは、4つの変換組合せ候補を含む。4つの変換組合せ候補は、0~3の変換組合せインデックスにより選択または決定され、エンコード装置100からデコード装置200に変換組合せインデックスがエンコード手順により送信される。
一実施形態として、イントラ予測により取得された残差データ(または、残差信号)は、イントラ予測モードに応じて統計的特性がそれぞれ異なる。したがって、図8のようにイントラ予測モード別に一般的なコサイン変換ではない他の変換が適用されることができる。本文書において、変換タイプは、例えば、DCT-Type 2、DCT-II、DCT-2のように表現されてもよい。
図8に示すように、35個のイントラ予測モードが使用される場合と、67個のイントラ予測モードが使用される場合と、に対する変換集合構成がそれぞれ図示される。イントラ予測モード列において区分される変換設定グループ別に、複数の変換組合せが適用されることができる。例えば、複数の変換組合せ(行方向変換、列方向変換)は、4つの組み合わせで構成される。より具体的には、グループ0において行(水平)方向および列(垂直)方向の全てにDST-7およびDCT-5が適用されることができるので、4つの組み合わせが可能である。
各イントラ予測モードに対して計4つの変換カーネルの組み合わせが適用されることができるので、そのうちの1つを選択するための変換組合せインデックスが、変換単位(transform unit)ごとに送信される。本文書において、変換組合せインデックスは、AMTインデックス(AMT index)と称され、amt_idxと表現されてもよい。
また、図8に示す変換カーネル以外にも、残差信号(residual signal)の特性上、行方向および列方向の両方に対してDCT-2が最適である場合がある。したがって、コーディングユニット(coding unit)ごとにAMTフラグを定義することにより適応的に変換を行うことができる。ここで、AMTフラグが0である場合、行方向および列方向の両方に対してDCT-2を適用し、AMTフラグが1である場合、AMTインデックスにより4つの組み合わせのうちの1つを選択または決定することができる。
一実施形態として、AMTフラグが0である場合、1つの変換単位に対して変換係数の個数が3より小さい場合、図8の変換カーネルが適用されずに、行方向および列方向に対して全てDST-7が適用される。
一実施形態として、変換係数の値を先にパージングして変換係数の個数が3より小さい場合、AMTインデックスをパージングせずにDST-7を適用することにより付加情報の送信量を減少させることができる。
一実施形態として、AMTは、変換単位の幅および高さが全て32以下である場合にのみ適用されることができる。
一実施形態として、図8は、オフライントレーニング(off-line training)により事前に設定されてもよい。
一実施形態として、AMTインデックスは、水平変換と垂直変換との組み合わせを同時に指示できる1つのインデックスにより定義されることができる。あるいは、AMTインデックスは、水平変換インデックスおよび垂直変換インデックスにより別途に定義されることができる。
前述したAMTのように複数の変換カーネル(例えば、DCT-2、DST-7、DCT-8)のうちの選択された変換を適用する技法は、MTS(Multiple Transform Selection)またはEMT(Enhanced Multiple Transform)と称されてもよく、AMTインデックスは、MTインデックスと称されてもよい。
図9は、本発明の実施形態によるAMTが適用されるエンコードのフローチャートの例を示す。図9に示された動作は、エンコード装置100の変換部120により行われる。
本文書は、基本的に水平方向と垂直方向とに対して分離して変換を適用する実施形態を説明するが、変換組合せは、非分離変換(non-separable transform)で構成されることもできる。
また、可分離変換と非分離変換との混合で構成されることもできる。この場合、非分離変換が利用されると、行/列(row/column)別の変換選択や水平/垂直(horizontal/vertical)方向別の選択は不要となり、可分離変換(分離可能な変換)が選択される場合にのみ上記図8の変換組合せが利用される。
また、本明細書で提案する方式は、一次変換や二次変換に関係なく適用することができる。すなわち、両方のうちのいずれか一方にのみ適用されなければならないという制約はなく、両方に適用できる。ここで、一次変換は、残差ブロックを1番目に変換するための変換を意味し、二次変換は、上記一次変換の結果として生成されたブロックに対して変換を適用するための変換を意味し得る。
まず、エンコード装置100は、現ブロックに対応する変換設定グループを決定する(S910)。ここで、変換設定グループは、図8のような組み合わせで構成されることもできる。
エンコード装置100は、変換設定グループ内で利用可能な候補変換の組み合わせに対して変換を行う(S920)。
変換実行の結果、エンコード装置100は、RD(Rate Distortion)コストが最も小さい変換組合せを決定または選択する(S930)。
エンコード装置100は、選択された変換組合せに対応する変換組合せインデックスをエンコードする(S940)。
図10は、本発明の実施形態によるAMTが適用されるデコードのフローチャートの例を示す。図10に示す動作は、デコード装置200の逆変換部230により行われる。
まず、デコード装置200は、現ブロックのための変換設定グループを決定する(S1010)。デコード装置200は、ビデオ信号から変換組合せインデックスをパージング(または、取得)し、ここで、変換組合せインデックスは、変換設定グループ内の複数の変換組合せのいずれか1つに対応する(S1020)。例えば、変換設定グループは、DCT-2、DST-7またはDCT-8を含む。
デコード装置200は、変換組合せインデックスに対応する変換組合せを導出する(S1030)。ここで、変換組合せは、水平変換と垂直変換とで構成され、DCT-2、DST-7またはDCT-8の少なくとも1つを含む。また、変換組合せは、図8で説明された変換組合せを使用してもよい。
デコード装置200は、導出された変換組合せに基づいて現ブロックに対して逆変換を行う(S1040)。変換組合せが行(水平)変換と列(垂直)変換とで構成される場合、行(水平)変換を先に適用した後、列(垂直)変換を適用することができる。ただし、本発明はこれに限定されず、逆に適用されるか、または非分離変換で構成される場合は、直ちに非分離変換が適用されることができる。
一実施形態において、垂直変換または水平変換がDST-7またはDCT-8である場合、DST-7の逆変換またはDCT-8の逆変換を列ごとに適用した後、行ごとに適用する。また、垂直変換または水平変換は、各行ごとにおよび/または各列ごとに異なる変換が適用される。
一実施形態において、変換組合せインデックスは、AMTが行われるか否かを示すAMTフラグに基づいて取得できる。すなわち、変換組合せインデックスは、AMTフラグによってAMTが行われる場合に限って取得できる。また、デコード装置200は、0ではない変換係数(non-zero coefficient)の個数が、閾値より大きいか否かを確認する。ここで、変換組合せインデックスは、0でない変換係数の個数が閾値より大きい場合に限ってパージングできる。
一実施形態において、AMTフラグまたはAMTインデックスは、シーケンス(sequence)、ピクチャ(picture)、スライス(slice)、ブロック(block)、コーディングユニット(coding unit)、変換ユニット(transform unit)、または予測ユニット(prediction)の少なくとも1つのレベルに定義される。
一方、他の実施形態として、変換設定グループを決定する過程と変換組合せインデックスをパージングする過程とは、同時に行われることができる。あるいは、ステップS1010は、エンコード装置100および/またはデコード装置200において既に設定されて省略できる。
図11は、本発明の実施形態によるAMTフラグおよびAMTインデックスをエンコードするフローチャートの例を示す。図11の動作は、エンコード装置100の変換部120により行われる。
エンコード装置100は、現ブロックに対してAMTが適用されるか否かを決定する(S1110)。
AMTが適用される場合、エンコード装置100は、AMTフラグ=1でエンコードする(S1120)。
そして、エンコード装置100は、現ブロックの予測モード、水平変換、垂直変換の少なくとも1つに基づいてAMTインデックスを決定する(S1130)。ここで、AMTインデックスは、各イントラ予測モードに対して複数の変換組合せのいずれかを指すインデックスを示し、AMTインデックスは、変換単位ごとに送信される。
AMTインデックスが決定されると、エンコード装置100は、AMTインデックスをエンコードする(S1140)。
一方、AMTが適用されない場合、エンコード装置100は、AMTフラグ=0でエンコードする(S1150)。
図12は、AMTフラグおよびAMTインデックスに基づいた変換を行うためのデコードのフローチャートの例を示す。
デコード装置200は、ビットストリームからAMTフラグをパージングする(S1210)。ここで、AMTフラグは、現ブロックに対してAMTが適用されるか否かを示す。
デコード装置200は、AMTフラグに基づいて現ブロックに対してAMTが適用されるか否かを確認する(S1220)。例えば、AMTフラグが1であるか否かを確認する。
AMTフラグが1である場合、デコード装置200は、AMTインデックスをパージングする(S1230)。ここで、AMTインデックスは、各イントラ予測モードに対して複数の変換組合せのうちのいずれか1つを指すインデックスを意味し、AMTインデックスは、変換単位ごとに送信できる。あるいは、AMTインデックスは、既に設定された変換組合せテーブルに定義されたいずれか1つの変換組合せを指すインデックスを意味し、ここで、既に設定された変換組合せテーブルを図8は意味し得るが、本発明はこれに限定されない。
デコード装置200は、AMTインデックスまたは予測モードのうちの少なくとも1つに基づいて水平変換および垂直変換を導出または決定する(S1240)。
あるいは、デコード装置200は、AMTインデックスに対応する変換組合せを導出する。例えば、デコード装置200は、AMTインデックスに対応する水平変換および垂直変換を導出または決定する。
一方、AMTフラグが0である場合、デコード装置200は、既に設定された垂直逆変換を列ごとに適用する(S1250)。例えば、垂直逆変換は、DCT-2の逆変換であり得る。
そして、デコード装置200は、既に設定された水平逆変換を行ごとに適用する(S1260)。例えば、水平逆変換は、DCT-2の逆変換であり得る。すなわち、AMTフラグが0である場合、エンコード装置100またはデコード装置200において既に設定された変換カーネルが用いられる。例えば、図8のような変換組合せテーブルにおいて定義されるのではなく、多く用いられる変換カーネルが用いられてもよい。
NSST(Non-Separable Secondary Transform)
二次変換は、一次変換が適用された結果を入力としてもう一度変換カーネルを適用することをいう。一次変換は、HEVCにおけるDCT-2、DST-7や前述したAMTなどを含む。非分離変換(non-separable transform)は、行方向および列方向に対して順次N×N変換カーネルを適用するのではなく、N×N2次元残差ブロックをN2×1ベクトルとみなした後、このベクトルに対してN2×N2変換カーネルを1度だけ適用することをいう。
すなわち、NSSTは、変換ブロックの係数から構成されたベクトルに適用される非分離正方形行列を称する。また、本文書の実施形態は、ブロックのサイズによって決定される左上側の領域(低周波数領域)に適用される非分離変換の例としてNSSTを中心に説明するが、本発明の実施形態は、NSSTの用語に限定されるものではなく、どのようなタイプの非分離変換でも本発明の実施形態に適用できる。例えば、ブロックのサイズによって決定される左上側の領域(低周波数領域)に適用される非分離変換は、LFNST(Low Frequency Non-Separable Transform)と称される。本文書において、M×N変換(または、変換行列)は、M個の行およびN個の列で構成された行列を意味する。
NSSTにおいて、一次変換を適用することにより取得された二次元ブロックデータをM×Mブロックに分割した後、各M×Mブロックに対してM2×M2非分離変換を適用する。Mの値は、4または8であり得る。一次変換により取得した2次元ブロックの全ての領域に対してNSSTを適用するのではなく、一部の領域に対してのみ適用することも可能であるが、例えば、左上端(top-left)の8×8ブロックに対してのみNSSTを適用することができる。また、一次変換により取得された2次元ブロックの幅および高さが両方とも8以上である場合のみ、左上端の8×8領域に対して64×64非分離変換を適用することができ、残りの場合に対しては、4×4ブロックに分けてそれぞれに当該16×16非分離変換を適用することができる。
M2×M2非分離変換は、行列積の形態で適用することもできるが、計算量およびメモリ要求量の低減のために、ギブンス回転レイヤ(Givens rotation layer)と置換レイヤ(permutation layer)との組み合わせで近似できる。図13は、1つのギブンス回転を示す。図13のように1つのギブンス回転の1つの角度により説明できる。
図13および図14は、本発明が適用される実施形態であって、図13は、ギブンス回転(Givens rotation)を説明するためのダイアグラムを示し、図14は、ギブンス回転レイヤおよび置換(permutation)からなる4×4NSSTにおける1ラウンド(round)の構成を示す。
8×8NSSTおよび4×4NSSTの両方とも、ギブンス回転の階層的組み合わせで構成されることができる。1つのギブンス回転に該当する行列は、数式1のようであり、行列積をダイアグラムで表現すると、図13のようになる。
<数式2>
図13のように、1つのギブンス回転は2つのデータを回転させるので、64個のデータ(8×8NSSTの場合)または16個のデータ(4×4NSSTの場合)の処理のために、それぞれ32個または8個のギブンス回転が必要である。したがって、32個または8個のギブンス回転の束がギブンス回転レイヤ(Givens rotation layer)を形成することができる。図15のように、1つのギブンス回転レイヤに対する出力データが置換(シャッフリング)により次のギブンス回転レイヤに対する入力データとして伝達される。図15のように置換されるパターンは規則的に定義され、4×4NSSTの場合、4つのギブンス回転レイヤおよび対応する置換が1つのラウンドを形成する。4×4NSSTは、2回のラウンドにより行われ、8×8NSSTは、4回のラウンドにより行われる。相異なるラウンドは、同一の置換パターンを使うが、適用されるギブンス回転角度は、それぞれ異なる。したがって、各変換を構成する全てのギブンス回転に対する角度データの記憶が必要である。
最後の段階として、ギブンス回転レイヤを経て出力されたデータに対して、最終的に1回の置換がさらに行われ、当該置換に関する情報は、変換ごとに別途記憶される。順方向(forward)NSSTの最後に当該置換が行われ、逆方向(inverse)NSSTは、最初に当該逆方向置換が適用される。
逆方向NSSTは、順方向NSSTにおいて適用されたギブンス回転レイヤと置換とを逆順に行い、各ギブンス回転の角度に対してもマイナス(-)の値を取ることにより回転させる。
図15は、本発明の実施形態によるイントラ予測モード別の非分離変換集合の構成の例を示す。
同じNSSTまたはNSST集合が適用されるイントラ予測モードが、グループを形成することができる。図15は、67個のイントラ予測モードを35個のグループに分類しているが、例えば、20番モードおよび48番モードは、両方とも20番グループ(以下、モードグループ)に属する。
各モードグループ別に、1つのNSSTではない複数のNSSTを集合として構成することができる。各集合は、NSSTを適用しない場合を含む。例えば、1つのモードグループに対して3つの異なるNSSTを適用できる場合、NSSTを適用しない場合を含んで4つの場合のうちの1つを選択するように構成されることができる。ここで、4つの場合のうちの1つを区分するためにインデックスをTU単位で送信する。モードグループごとにNSSTの個数を異なるように構成することもできるが、例えば、0番および1番モードグループは、NSSTを適用しない場合を含んでそれぞれ3つの場合のうちの1つを選択するようにシグナリングする。
実施形態1:4×4ブロックに適用できるRST
1つの4×4ブロックに適用できる非分離変換(non-separable transform)は、16×16変換である。すなわち、当該4×4ブロックを構成するデータ要素が行-優先(row-first)または列-優先(column-first)の順で一列に整列されると、16×1ベクトルとなり、16×1ベクトルに対して当該非分離変換が適用されることができる。順方向16×16変換は、16個の行方向変換基底ベクトル(transform basis vector)で構成され、上記16×1ベクトルと各変換基底ベクトルとに対して内積(inner product)を取ると、当該変換基底ベクトルに対する変換係数が取得される。16個の変換基底ベクトルに対して全て当該変換係数を得る過程は、16×16非分離変換行列と入力16×1ベクトルとを乗算することのようである。行列積で得られる変換係数は、16×1ベクトルの形態を有するが、変換係数別に統計的特性が異なることがある。例えば、16×1変換係数ベクトルが0番目の要素から15番目の要素で構成されたとすると、0番目の要素の分散は、15番目の要素の分散より大きいことがある。すなわち、前に位置する要素であるほど、当該分散値が大きくて大きなエネルギ値を有することができる。
16×1変換係数に逆方向16×16非分離変換を適用すると、(量子化や整数化計算などの効果を無視したとき)元の4×4ブロック信号を復元することができる。順方向16×16非分離変換が直交正規変換(orthonormal transform)であれば、当該逆方向16×16変換は、順方向16×16変換に対する行列の転置を取って求めることができる。簡単には、逆方向16×16非分離変換行列を16×1変換係数ベクトルに乗算すると、16×1ベクトル形態のデータが得られ、最初に適用した行-優先または列-優先の順に配列すると、4×4ブロック信号を復元することができる。
前述したように、16×1変換係数ベクトルをなす要素は、それぞれ統計的特性が異なる場合がある。前述の例のように、前方に配置された(0番目の要素に近い)変換係数がより大きなエネルギを有する場合、全ての変換係数を使用せずに先に登場する一部の変換係数に逆方向変換を適用しても元の信号にかなり近い信号を復元することができる。例えば、逆方向16×16非分離変換が16個の列基底ベクトルで構成されるとすると、L個の列基底ベクトルのみを残して16×L行列を構成し、変換係数の中からもより重要なL個の変換係数のみを残した後(L×1ベクトル、前述の例のように先に登場することができる)、16×L行列とL×1ベクトルとを乗算すると、元の入力16×1ベクトルデータとの誤差が大きくない16×1ベクトルを復元することができる。結果として、L個の係数のみがデータ復元に介入するので、変換係数を得るときにも16×1変換係数ベクトルではないL×1変換係数ベクトルを求めればよい。すなわち、順方向16×16非分離変換行列において、L個の当該行方向変換ベクトルを選んでL×16変換を構成した後、16×1入力ベクトルと乗算するとL個の重要変換係数を得ることができる。
実施形態2:4×4RSTの適用領域設定および変換係数の配置
4×4RSTは、二次変換として適用されることができ、このとき、DCT-type2などの一次変換が適用されたブロックに対して二次的に適用されることができる。一次変換が適用されたブロックのサイズをN×Nにしたとき、通常は4×4より大きくなる。したがって、4×4RSTをN×Nブロックに適用するときには、次のような2つの方法が考えられる。
1)N×N領域に対して全て4×4RSTを適用するのではなく、一部の領域にのみ適用できる。例えば、左上側(top-left)のM×M領域に対してのみ適用できる(M<=N)。
2)二次変換が適用される領域を4×4ブロックに分割した後、各分割されたブロックに対して4×4RSTが適用されることができる。
上記方法1)と2)とを混合して適用できる。例えば、左上側のM×M領域に対してのみ4×4ブロックに分割した後、4×4RSTを適用することができる。
具体的な実施形態として、左上側8×8領域に対してのみ二次変換を適用し、N×Nブロックが8×8より大きいか等しい場合は、8×8RSTを適用し、N×Nブロックが8×8より小さい場合は(4×4、8×4、4×8)、上記2)のように4×4ブロックに分けた後、それぞれ4×4RSTを適用できる。
4×4RSTを適用した後、L個の変換係数(1<=L<16)が生成されたとしたとき、L個の変換係数をどのように配置するかに関する自由度が生じる。しかしながら、残差コーディング(residual coding)パートにおいて変換係数を読み込んで処理するとき、定められた順序が存在することから、上記L個の変換係数を2次元(2-dimensional)ブロックにどのように配置するかによってコーディング性能が変わる可能性がある。HEVC(High Efficiency Video Coding)規格における残差コーディングは、DC位置において最も遠く離れた位置からコーディングを開始するが、これは、DC位置から遠く離れるほど量子化を経た係数の値が0であるか0に近いということを利用してコーディング性能を高めるためである。したがって、L個の変換係数に対しても高いエネルギを有するとともに、より重要な係数を残差コーディングの順序上、後でコーディングされるように配置することがコーディング性能の面で有利であり得る。
図16は、HEVC標準において適用された変換係数または変換係数ブロックに対する3つの順方向スキャン順序であって、(a)は対角スキャン(diagonal scan)、(b)は水平スキャン(horizontal scan)、(c)は垂直スキャン(vertical scan)を示す。
図16は、HEVC標準において適用される変換係数または変換係数ブロック(4×4ブロック、Coefficient Group(CG))に対する3つの順方向スキャン順序を図示し、残差コーディングは、(a)、(b)、または(c)のスキャン順序の逆順により行われる(すなわち、16から1の順にコーディングされる)。(a)、(b)、および(c)に示した3つのスキャン順序は、イントラ予測(intra-prediction)モードに応じて選択されるので、上記L個の変換係数に対しても同様にイントラ予測モードに応じてスキャン順序を決定するように構成することができる。
L値は、1<=L<16の範囲を有し、一般的には、16個の変換基底ベクトルのうち任意の方法でL個を選択できるが、符号化および復号の観点からは、上記に提示した例のように信号のエネルギの側面で重要度が高い変換基底ベクトルを選択することが符号化効率の観点から有利であり得る。
図17および図18は、本発明が適用される実施形態であって、図17は、4×8ブロックに対する4×4RSTの適用時の順方向対角スキャンが適用される場合の変換係数の位置を示し、図18は、2つの4×4ブロックの有効な変換係数を1つのブロックにマージする場合の例を示す。
(a)の対角スキャン順序に従って左上側4×8ブロックを4×4ブロックにそれぞれ分割して4×4RSTを適用するとき、L値が8である(すなわち、16個のうちの8個の変換係数のみを残す)場合、図17のように変換係数が位置するが、各4×4ブロックの半分のみが変換係数を有することができ、Xが表示されている位置にデフォルト(default)として0の値が充填(パディング)される。したがって、(a)において提示されたスキャン順に従ってL個の変換係数を各4×4ブロックに対して配置させ、各4×4ブロックの残りの(16-L)個の位置に対しては0で充填されると仮定して、当該残差コーディング(例えば、HEVCにおける残差コーディング)を適用することができる。
また、図18のように、2つの4×4ブロックで配置されたL個の変換係数を1つのブロックで構成することができる。特に、L値が8である場合、2つの4×4ブロックの変換係数が1つの4×4ブロックを完全に充填するので、他のブロックに変換係数は残らない。したがって、変換係数が空になった4×4ブロックに対しては、残差コーディングが不要であるので、HEVCの場合、当該ブロックの残差コーディングの適用が可能か否かを示すフラグ(coded_sub_block_flag)が0にコーディングされる。2つの4×4ブロックの変換係数の位置に対する組み合わせ方式は多様である。例えば、任意の順序に従って位置が組み合わせられるが、以下のような方法も適用されることがある。
1)2つの4×4ブロックの変換係数をスキャン順に交互に組み合わせる。すなわち、図8A、図8B、図8Cにおいて、上位ブロック(upper block)に対する変換係数を
とし、下位ブロック(lower block)の変換係数を
とするとき、
のように1つずつ交互に組み合わせることができる。また、
と
との順序を変えることができる
。
2)1番目の4×4ブロックに対する変換係数を先に配置し、その後、2番目の4×4ブロックに対する変換係数を配置することができる。すなわち、
のように連結して配置することができる。当然、
のように順序を変えることもできる。
実施形態3:4×4RSTに対するNSST(Non-Separable Secondary Transform)インデックスをコーディングする方法
図17のように4×4RSTが適用されると、各4×4ブロックに対する変換係数スキャン順序に従って、L+1番目の位置から16番目の位置までは0の値が充填される。したがって、2つの4×4ブロックのうちの1つでもL+1番目の位置から16番目の位置までのうちに0でない値が存在すると、4×4RSTが適用されない場合であることが導出される。4×4RSTがJEM(Joint Experiment Model)NSSTのように用意された変換集合(transform set)のうちの選択された変換を適用する構造を有する場合、どのような変換を適用するかに対するインデックス(以下、NSSTインデックスと呼ばれる)がシグナリングされる。
あるデコーダにおいて、NSSTインデックスは、ビットストリームパージング(bit stream parsing)により分かり、ビットストリームパージングは、残差コーディング後に行われることができる。この場合、残差デコーディングによりL+1番目の位置から16番目の位置までの間に0でない変換係数が存在すると、当該デコーダは、4×4RSTが適用されないことが確実であるので、NSSTインデックスをパージングしない。したがって、必要な場合にのみNSSTインデックスを選択的にパージングすることにより、シグナリングコストが減少する。
図17のように特定領域内の複数の4×4ブロックに対して4×4RSTが適用されると(このとき、全て同一の4×4RSTが適用されてもよく、それぞれ異なる4×4RSTが適用されてもよい)、1つのNSSTインデックスにより全ての4×4ブロックに適用される(同一のもしくは相異なる)4×4RSTが指定される。1つのNSSTインデックスにより全ての4×4ブロックに対する4×4RSTおよび4×4RSTの適用が可能か否かが決定されるので、全ての4×4ブロックに対してL+1番目から16番目までの位置において0でない変換係数が存在するか否かを残差デコード過程中に調査した結果、4×4ブロックにおいて許容されない位置に(L+1番目の位置から16番目の位置までに)0でない変換係数が存在すると、エンコード装置100は、NSSTインデックスをコーディングしないように設定されることができる。
エンコード装置100は、輝度(luminance)ブロックおよび色差(chrominance)ブロックに対してそれぞれのNSSTインデックスを別途にシグナリングすることもでき、色差ブロックの場合、Cb成分とCr成分とに対してそれぞれ別途のNSSTインデックスをシグナリングすることもでき、1つの共通するNSSTインデックスを使用することもできる。1つのNSSTインデックスが使用される場合、NSSTインデックスのシグナリングも1回だけ行われる。Cb成分とCr成分とに対して1つのNSSTインデックスが共有される場合、同一のNSSTインデックスが指示する4×4RSTが適用され、この場合、Cb成分とCr成分とに対する4×4RST自体が同一であってもよく、NSSTインデックスは同じであるが、Cb成分とCr成分とに対して個別の4×4RSTが設定されてもよい。Cb成分とCr成分とに対して共有されるNSSTインデックスが使用される場合、前述した条件的シグナリングのためにCb成分およびCr成分に対する全ての4×4ブロックに対してL+1番目の位置から16番目の位置までに0でない変換係数が存在するか否かをチェックし、L+1番目の位置から16番目の位置までにおいて0でない変換係数が発見されると、NSSTインデックスに対するシグナリングが省略されてもよい。
図18のように、2つの4×4ブロックに対する変換係数が1つの4×4ブロックにマージされる場合にも、エンコード装置100は、4×4RSTが適用されたとき、有効な変換係数が存在しない位置に0でない変換係数が登場するか否かをチェックした後、NSSTインデックスに対するシグナリングが可能か否かを決定することができる。特に、図18のようにL値が8であるので、4×4RST適用時に1つの4×4ブロックに有効な変換係数が存在しない場合(図18の(b)においてXと表示されたブロック)、当該ブロックの残差コーディングが可能か否かに関するフラグ(coded_sub_block_flag)をチェックし、1である場合、NSSTインデックスがシグナリングされないように設定されることができる。前述したように、以下の説明では、非分離変換の例としてNSSTを中心に説明するが、非分離変換に対して他の知られている用語(例えば、LFNST)が使用されてもよい。例えば、NSST集合(NSST Set)、NSSTインデックスは、LFNST集合、LFNSTインデックスに代替されて使用されてもよい。また、本文書において説明されるRSTは、変換ブロックの少なくとも一部の領域(左上側4×4、8×8領域または8×8ブロックにおいて右下側の4×4領域を除いた残りの領域)に適用される正方形非分離変換行列において、縮小された入力長および/または縮小された出力長を有する非正方形(定方形)の変換行列を使用する非分離変換(例えば、LFNST)の例として、RSTもLFNSTに代替されて使用されることができる。
実施形態4:4×4インデックスに対するコーディングを残差コーディング以前に行う場合に対する最適化方法
NSSTインデックスに対するコーディングが残差コーディング以前に行われる場合、4×4RSTの適用が可能か否かが予め決定されるので、変換係数が0で充填される位置に対する残差コーディングが省略されてもよい。ここで、4×4RSTの適用が可能か否かは、NSSTインデックス値により決定されるように(例えば、NSSTインデックスが0である場合、4×4RSTを適用しないように)構成することもでき、あるいは、別途のシンタックス要素(syntax element)(例えば、NSSTフラグ)により4×4RSTの適用が可能か否かがシグナリングされることもできる。例えば、別途のシンタックス要素がNSSTフラグであるとすると、デコード装置200は、NSSTフラグを先にパージングすることにより、4×4RST適用が可能か否かを決定した後、NSSTフラグ値が1である場合、前述したように有効な変換係数が存在できない位置に対して、残差コーディング(デコーディング)を省略することができる。
HEVCの場合、残差コーディングの実行時、1番目にTUにおける最後の0でない係数(last non-zero coefficient)の位置においてコーディングが行われる。NSSTインデックスに対するコーディングは、最後の0でない係数の位置に対するコーディング以後に行われ、最後の0でない係数の位置が4×4RSTの適用を仮定したとき、0でない係数が存在できない位置であれば、デコード装置200は、NSSTインデックスをコーディングせずに4×4RSTを適用しないように設定することができる。例えば、図17においてXと表示された位置の場合、4×4RSTが適用されたとき、有効な変換係数が位置しないので(0の値が充填されることができる)、Xと表示された領域に最後の0でない係数が位置すると、デコード装置200は、NSSTインデックスに対するコーディングを省略することができる。Xと表示された領域に最後の0でない係数が位置しない場合、デコード装置200は、NSSTインデックスに対するコーディングを行うことができる。
0でない係数の位置に対するコーディング以後に条件的にNSSTインデックスをコーディングすることにより、4×4RSTの適用が可能か否かが分かった場合、以下、残りの残差コーディングが行われる部分は、以下のような2つの方式で処理されることができる。
1)4×4RSTが適用されない場合、一般的な残差コーディングが行われる。すなわち、最後の0でない係数の位置からDCまでのいずれの位置にも0でない変換係数が存在し得るという仮定下でコーディングが行われる。
2)4×4RSTが適用される場合、特定の位置または特定4×4ブロック(例えば、図17のX位置)に対して当該変換係数が存在しないので(デフォルトとして0で充填される)、当該位置またはブロックに対しては残差コーディングが省略されてもよい。例えば、図17においてスキャンの順序に従ってスキャンしながらXと表示された位置に到達する場合、HEVC標準において当該位置に0でない係数が存在するか否かに関するフラグ(sig_coeff_flag)に対するコーディングは省略されることができ、図18のように2つのブロックの変換係数が1つのブロックにマージされる場合、0で充填された4×4ブロックの残差コーディングが可能か否かを示すフラグ(例えば、HEVC標準のcode_sub_block_flag)に対するコーディングが省略され、該当値は、0として導出することができ、該当4×4ブロックに対しては別途のコーディングなしで全て0値で充填(充電)されることができる。
最後の0でない係数の位置に対するコーディング以後にNSSTインデックスをコーディングする場合、最後の0でない係数のx位置(Px)およびy位置(Py)がそれぞれTx、Tyより小さい場合、NSSTインデックスのコーディングが省略され、4×4RSTが適用されないように設定されることができる。例えば、Tx=1、Ty=1であり、最後の0でない係数がDCの位置に存在する場合、NSSTインデックスコーディングは省略される。このような閾値との比較のためにNSSTインデックスコーディングが可能か否かを決定する方式は、輝度成分と色差成分とにそれぞれ異なるように適用されることができるが、例えば、輝度成分と色差成分とに対してそれぞれ異なるTx、Tyが適用されることもあり、輝度成分には閾値が適用され、色差成分には閾値が適用されないこともある。逆に、色差成分には閾値が適用され、輝度成分には閾値が適用されないこともあり得る。
前述した2つの方法(最後の0でない係数が有効な変換係数が存在しない領域に位置する場合、NSSTインデックスコーディングを省略、最後の0でない係数に対するX座標およびY座標がそれぞれ閾値より小さいとき、NSSTインデックスコーディングを省略)が、同時に適用されることもある。例えば、最後の0でない係数の位置座標に対する閾値の確認を先に行った後、最後の0でない係数が有効な変換係数が存在しない領域に位置するか否かをチェックすることができ、2つの方法の順序は、変更されることができる。
実施形態4)において提示された方法は、8×8RSTに対しても適用されることができる。すなわち、最後の0でない係数が左上側8×8領域内で左上側4×4でない領域に位置することになると、NSSTインデックスに対するコーディングは省略されることができ、そうでない場合、NSSTインデックスに対するコーディングが行われることができる。また、最後の0でない係数の位置に対するX、Y座標の値が全てある閾値未満である場合、NSSTインデックスに対するコーディングは省略できる。2つの方法は、同時に適用されることもできる。
実施形態5:RST適用時、輝度成分と色差成分とに対してそれぞれ異なるNSSTインデックスコーディングおよび残差コーディング方式を適用
実施形態3および実施形態4において説明された方式は、輝度成分と色差成分とに対してそれぞれ異なるように適用されることができる。すなわち、NSSTインデックスコーディングおよび残差コーディング方式が、輝度成分と色差成分とに対して異なるように適用されることができる。例えば、輝度成分に対して実施形態4において説明された方式が適用され、色差成分に対して実施形態3において説明された方式が適用されることができる。また、輝度成分に対して実施形態3または実施形態4において提案される条件的NSSTインデックスコーディングが適用され、輝度成分に対して条件的NSSTインデックスコーディングが適用されないこともあり、逆(色差成分には条件的NSSTインデックスコーディングを適用、輝度成分には適用しない)も可能である。
実施形態6
本発明の一実施形態では、NSSTを適用する過程で様々なNSST条件を適用するための混合されたNSST変換集合(mixed NSST transform set:MNTS)および該当MNTSの構成方法を提供する。
JEMによると、予め選択された下位ブロックのサイズによって、4×4NSST集合は、4×4カーネル(kernel)のみを含み、8×8NSST集合は、8×8カーネルのみを含む。本発明の実施形態は、以下のように混合されたNSST集合の構成方法を追加的に提案する。
-NSST集合において利用可能なNSSTカーネルのサイズが固定されず、1つまたは複数の可変的なサイズを有するNSSTカーネルがNSST集合に含まれることができる(例えば、1つのNSST集合に4×4NSSTカーネルおよび8×8NSSTカーネルの両方ともが含まれる)。
-NSST集合内に利用可能なNSSTカーネルの数は、固定されずに可変的であり得る(例えば、第1集合は3つのカーネル、第2集合は4つのカーネルを含む)。
-NSSTカーネルの順序が固定されずにNSST集合によって順序が異なるように定義されることがある(例えば、第1集合においてNSSTカーネル1、2、3がNSSTインデックス1、2、3にそれぞれマッピングされるが、第2集合においてNSSTカーネル3、2、1がNSSTインデックス1、2、3にそれぞれマッピングされる)。
より詳細には、混合されたNSST変換集合構成方法の例は、以下の通りである。
-NSST変換集合において使用可能なNSSTカーネルの優先順位は、NSSTカーネルのサイズ(例えば、4×4NSSTおよび8×8NSST)によって決定されることができる。
例えば、ブロックが大きい場合、8×8NSSTカーネルが4×4NSSTカーネルより重要であり得るので、8×8NSSTカーネルに低い値を有するNSSTインデックスを割り当てる。
-NSST変換集合において使用可能なNSSTカーネルの優先順位は、NSSTカーネルの順序によって決定されることができる。
例えば、与えられた4×4NSST第1カーネルは、4×4NSST第2カーネルより優先することがある。
NSSTインデックスが符号化して送信されるので、よく発生するNSSTカーネルにさらに高い優先権(より小さいインデックス)を割り当てることにより、さらに少ないビット数でNSSTインデックスをシグナリングすることができる。
以下の表1および表2は、本実施形態において提案する混合されたNSST集合の例を示す。
実施形態7
本発明の一実施形態では、二次変換集合を決定する過程において、イントラ予測モードおよびブロックのサイズを考慮してNSST集合を決定する方法を提案する。
本実施形態において提案される方法は、実施形態6と連係してイントラ予測モードに適合した変換集合を構成して様々なサイズのカーネルを構成してブロックに適用できるようにする。
図19は、本発明が適用される実施形態であって、イントラ予測モード別に混合されたNSST集合の構成方法の例を示す。
図19は、実施形態2において提案する方法を実施形態6と連係して適用する方法によるテーブルの例である。すなわち、図19に示すように、各イントラ予測モードごとに既存のNSST集合構成方法に従うか、あるいは他の方法のNSST集合構成方法に従うかを示すインデックス(「Mixed Type」)が定義される。
より具体的には、図19においてインデックス(「Mixed Type」)が「1」と定義されたイントラ予測モードの場合、JEMのNSST集合構成方法によらず、システムにおいて定義されたNSST集合構成方法を使用してNSST集合が構成される。ここで、システムにおいて定義されたNSST集合構成方法は、実施形態6において提案された混合されたNSST集合を意味する。
さらに他の実施形態として、図19のテーブルは、イントラ予測モードに関連する混合されたタイプ(mixed type)情報(フラグ)に基づいた2種類の変換集合構成方法(JEMベースのNSST集合構成、本発明の実施形態で提案する混合されたタイプNSST集合構成方法)が説明されるが、混合されたタイプNSST構成方法は1つまたは複数であり、ここで、混合されたタイプ情報は、N(N>2)種類の様々な値として表現されることができる。
さらに他の実施形態として、イントラ予測モードおよび変換ブロックのサイズをともに考慮して現ブロックに適した変換集合を混合されたタイプで構成するか否かを決定することができる。例えば、イントラ予測モードに該当するモードタイプが0である場合、JEMのNSST集合設定に従い、そうでない場合、(Mode Type=1)変換ブロックのサイズによって様々な混合されたタイプのNSST集合が決定されることができる。
図20は、本発明が適用される実施形態であって、イントラ予測モードおよび変換ブロックのサイズを考慮してNSST集合(または、カーネル)を選択する方法の例を示す。
デコード装置200は、変換集合が決定されると、NSSTインデックス情報を利用して使用されたNSSTカーネルを決定できる。
実施形態8
本発明の一実施形態では、二次変換を適用する過程でイントラ予測モードおよびブロックのサイズを考慮して変換集合を構成する場合、エンコード後に送信されるNSSTインデックス値の統計的分布の変化を考慮することにより、NSSTインデックスを効率的にエンコードするための方法を提供する。本発明の実施形態は、カーネルサイズを示すシンタックスを使用して適用されるカーネルの選択方法を提供する。
また、本発明の実施形態では、変換集合ごとに使用可能なNSSTカーネルの数が相異なるので、効率的な二進化の方法のために、当該集合別に使用可能な最大NSSTインデックス値に応じて以下の表3のようにトランケートされた(切削型)単項(truncated unary)二進化の方法を提供する。
表3は、NSSTインデックス値の二進化方法を示し、各変換集合ごとに利用可能なNSSTカーネルの数が相異なるため、NSSTインデックスは、最大NSSTインデックス値によって二進化されることができる。
実施形態9:縮小された変換(Reduced Transform)
変換における複雑度の論点(complexity issues)により(例えば、大きなブロック変換または非分離変換)、コア変換(例えば、DCT、DSTなど)および二次変換(例えば、NSST)に適用できる縮小された変換を提供する。
縮小された変換の主要なアイデアは、N次元ベクトルを他の空間からR次元ベクトルにマッピングすることであり、ここで、R/N(R<N)が縮小因子(reduction factor)である。縮小された変換は、下記の数式3のようなR×N行列である。
数式1において変換のR個の行は、新規N次元空間のR個のベースである。したがって、縮小された変換と呼ばれる理由は、変換により出力されるベクトルのエレメントの個数が入力されるベクトルのエレメントの個数より小さいためである(R<N)。縮小された変換に対する逆方向変換行列(inverse transform matrix)は、順方向変換の転置である。順方向および逆方向に縮小された変換について、図13Aおよび図13Bを参照して説明する。
図21Aおよび図21Bは、本発明が適用される実施形態であって、順方向および逆方向縮小された変換を示す。
縮小された変換のエレメントの数は、完全な行列(N×N)のサイズよりR/Nの分だけ小さいRxN個であり、これは、要求されるメモリが完全な行列のR/Nであることを意味する。
また、要求される乗算の個数も、元のN×NよりR/Nの分だけ少ないR×Nである。
XがNレベルのベクトルである場合、縮小された変換を適用した後にR個の係数が取得されるが、これは、元のN個の係数の代わりにR個の値のみを伝達すればよいことを意味する。
図22は、本発明の実施形態による縮小された変換を使用したデコードのフローチャートの例を示す。
提案された縮小された変換(デコーダで逆変換)は、図21に示されたように、係数(逆量子化された係数)に適用されることができる。予め決定された縮小因子(R、またはR/N)および変換を行うための変換カーネルが要求されることがある。ここで、変換カーネルは、ブロックサイズ(幅、高さ)、イントラ予測モード、Cidxのような使用可能な情報に基づいて決定できる。現在コーディングブロックがルマブロックである場合、CIdxは0である。そうでない場合(CbまたはCrブロック)、CIdxは、1などのように、0でない値となる。
以下、本文書で使用される演算子は、以下の表4および表5に示すように定義される
図23は、本発明の実施形態による条件的に縮小された変換の適用のフローチャートの例を示す。図23の動作は、デコード装置200の逆量子化部140および逆変換部150により行われる。
一実施形態において、縮小された変換は、特定条件を満たす場合に使用されることができる。例えば、縮小された変換は、以下のように、一定サイズより大きいブロックに対して適用されることができる。
- Width > TH && Height > HT(ここで、THは、事前に定義された値(例えば、4))
または
- Width * Height > K && MIN(Width, Height) > TH(KおよびTHは、予め定義された値)
すなわち、上記条件のように現ブロックの幅(width)が事前に定義された値(TH)より大きく、現ブロックの高さ(height)が事前に定義された値(TH)より大きい場合に、縮小された変換が適用されることができる。あるいは、現ブロックの幅と高さとの積が事前に定義された値(K)より大きく、現ブロックの幅および高さのうちの小さい値が事前に定義された値(TH)より大きい場合、縮小された変換が適用されることができる。
縮小された変換は、下記のように事前に決定されたブロックのグループに対して適用されることができる。
- Width == TH && Height == TH
または
- Width == Height
すなわち、現ブロックの幅および高さがそれぞれ事前に決定された値(TH)と同一であるか、現ブロックの幅と高さとが同一である場合(現ブロックが正方形ブロックである場合)、縮小された変換が適用されることができる。
縮小された変換の使用のための条件を満足しない場合、通常の(regular)変換が適用される。通常の変換は、ビデオコーディングシステムにおいて予め定義され使用可能な変換であり得る。通常の変換の例は、下記の通りである。
-DCT-2、DCT-4、DCT-5、DCT-7、DCT-8
または
-DST-1、DST-4、DST-7
または
-非分離変換
または
-JEM-NSST(HyGT)
図23に示すように、縮小された変換条件は、どの変換(例えば、DCT-4、DST-1)が使用されるかまたはどのカーネルが適用されるか(複数のカーネルが利用可能であるとき)を示すインデックス(Transform_idx)に依存する。特に、Transform_idxは、2回送信できる。1つは、水平変換を示すインデックスであり(Transform_idx_h)、他の1つは、垂直変換を示すインデックスである(Transform_idx_v)。
より具体的には、図23を参照すると、デコード装置200は、入力されたビットストリームに対する逆量子化を行う(S2305)。その後、デコード装置200は、変換を適用するか否かを決定する(S2310)。デコード装置200は、変換をスキップするか否かを示すフラグにより変換を適用するか否かを決定する。
変換が適用される場合、デコード装置200は、適用される変換を示す変換インデックス(Transform_idx)をパージングする(S2315)。また、デコード装置200は、変換カーネルを選択する(S2330)。例えば、デコード装置200は、変換インデックス(Transform_idx)に対応する変換カーネルを選択する。また、デコード装置200は、ブロックサイズ(幅、高さ)、イントラ予測モード、CIdx(ルマ、クロマ)を考慮して変換カーネルを選択する。
デコード装置200は、縮小された変換の適用のための条件を満たすか否かを決定する(S2320)。縮小された変換の適用のための条件は、前述したような条件を含む。縮小された変換が適用されない場合、デコード装置200は、通常の逆変換を適用する(S2325)。例えば、デコード装置200は、ステップS2330で選択した変換カーネルから逆変換行列を決定し、決定した逆変換行列を変換係数を含む現ブロックに適用する。
縮小された変換が適用される場合、デコード装置200は、縮小された逆変換を適用する(S2335)。例えば、デコード装置200は、ステップS2330で選択した変換カーネルから縮小因子を考慮して縮小された逆変換行列を決定し、縮小された逆変換行列を変換係数を含む現ブロックに適用する。
図24は、本発明の実施形態による条件的に縮小された変換が適用される二次逆変換のためのデコードのフローチャートの例を示す。図24の動作は、デコード装置200の逆変換部230により行われる。
一実施形態において、縮小された変換は、図24のように二次変換に適用できる。NSSTインデックスがパージングされると、縮小された逆変換が適用されることができる。
図24を参照すると、デコード装置200は、逆量子化を行う(S2405)。逆量子化により生成された変換係数に対して、デコード装置200は、NSSTを適用するか否かを決定する(S2410)。すなわち、デコード装置200は、NSSTを適用するか否かによって、NSSTインデックス(NSST_idx)のパージングが必要であるか否かを決定する。
NSSTが適用される場合、デコード装置200は、NSSTインデックスをパージングし(S2415)、NSSTインデックスが0より大きいか否かを決定する(S2420)。NSSTインデックスは、エントロピデコード部210によりCABACのような技法により復元される。NSSTインデックスが0である場合、デコード装置200は、二次逆変換を省略し、コア逆変換または一次逆変換を適用する(S2445)。
また、NSSTが適用される場合、デコード装置200は、二次逆変換のための変換カーネルを選択する(S2435)。例えば、デコード装置200は、NSSTインデックス(NSST_idx)に対応する変換カーネルを選択する。また、デコード装置200は、ブロックサイズ(幅、高さ)、イントラ予測モード、CIdx(ルマ、クロマ)を考慮して、変換カーネルを選択する。
NSSTインデックスが0より大きい場合、デコード装置200は、縮小された変換の適用のための条件が満足されるか否かを決定する(S2425)。縮小された変換の適用のための条件は、前述したような条件を含む。縮小された変換が適用されない場合、デコード装置200は、通常の二次逆変換を適用する(S2430)。例えば、デコード装置200は、ステップS2435で選択した変換カーネルから二次逆変換行列を決定し、決定した二次逆変換行列を変換係数を含む現ブロックに適用する。
縮小された変換が適用される場合、デコード装置200は、縮小された二次逆変換を適用する(S2440)。例えば、デコード装置200は、ステップS2335で選択した変換カーネルから縮小因子を考慮して縮小された逆変換行列を決定し、縮小された逆変換行列を変換係数を含む現ブロックに適用することができる。以後、デコード装置200は、コア逆変換または一次逆変換を適用する(S2445)。
実施形態10:相異なるブロックサイズに対する二次変換としての縮小された変換(Reduced Transform as a Secondary Transform with Different Block Size)
図25A、図25B、図26A、および図26Bは、本発明の実施形態による縮小された変換および縮小された逆変換の例を示す。
本発明の一実施形態において、4×4、8×8、16×16などの相異なるブロックサイズに対するビデオコーデックにおいて、縮小された変換が二次変換および二次逆変換として使用できる。8×8ブロックサイズおよび縮小因子R=16に関する例として、2次変換および2次逆変換は、図25Aおよび図25Bのように設定されることができる。
縮小された変換および縮小された逆変換の疑似コード(pseudocode)は、図26のように設定される。
実施形態11:非正方形の二次変換として縮小された変換(Reduced Transform as a Secondary Transform with Non-Rectangular Shape)
図27は、本発明の実施形態による縮小された二次変換が適用される領域の例を示す。
前述したように、二次変換における複雑度の論点により、二次変換は、4×4および8×8コーナに適用されることができる。縮小された変換は、非正方形にも適用できる。
図27に示すように、RSTは、ブロックの一部領域(斜め領域)にのみ適用できる。図27において、各四角形は、4×4領域を示し、10個の4×4ピクセル(すなわち、160個のピクセル)にRSTが適用される。縮小因子R=16である場合、全体のRST行列は16×16行列であり、これは、受容可能な計算量であり得る。
実施形態12:縮小因子(Reduction Factor)
図28は、本発明の実施形態による縮小因子による縮小された変換を示す。
縮小因子の変更は、メモリおよび乗算複雑度を変更することができる。前述したように、縮小因子変更により因子(factor)R/Nの分だけのメモリおよび乗算複雑度が減少する。例えば、8×8NSSTに対して、R=16である場合、メモリおよび乗算複雑度は、1/4の分だけ減少する。
実施形態13:上位レベルシンタックス(High Level Syntax)
下記のシンタックスエレメントが、ビデオコーディングにおいてRSTを処理するために使用される。縮小された変換に関連するセマンティクス(semantics)は、SPS(Sequence Parameter Set)またはスライスヘッダ(slice header)に存在する。
Reduced_transform_enabled_flagが1であることは、縮小された変換が可能で、適用されることを示す。Reduced_transform_enabled_flagが0であることは、縮小された変換が可能でないことを示す。Reduced_transform_enabled_flagが存在しない場合、0であると推論される(Reduced_transform_enabled_flag equals to 1 specifies that reduced transform is enabled and applied. Reduced_transform_enabled_flag equal to 0 specifies that reduced transform is not enabled. When Reduced_transform_enabled_flag is not present, it is inferred to be equal to 0)。
Reduced_transform_factorは、縮小された変換のために維持する縮小された次元の個数を示す。Reduced_transform_factorが存在しない場合、Rと同一であると推論される(Reduced_transform_factor specifies that the number of reduced dimensions to keep for reduced transform. When Reduced_transform_factor is not present, it is inferred to be equal to R)。
min_reduced_transform_sizeは、縮小された変換を適用するための最小の変換サイズを示す。min_reduced_transform_sizeが存在しない場合、0であると推論される(min_reduced_transform_size specifies that the minimum transform size to apply reduced transform. When min_reduced_transform_size is not present, it is inferred to be equal to 0)。
max_reduced_transform_sizeは、縮小された変換を適用するための最大の変換サイズを示す。max_reduced_transform_sizeが存在しない場合、0であると推論される。
reduced_transform_sizeは、縮小された変換のために維持する縮小された次元の個数を示す。reduced_transform_sizeが存在しない場合、0であると推論される(reduced_transform_size specifies that the number of reduced dimensions to keep for reduced transform. When Reduced_transform_factor is not present, it is inferred to be equal to 0.)。
実施形態14:最悪の場合のハンドリング(Worst case handling)のための4×4RSTの条件的適用
4×4ブロックに適用できる非分離二次変換(4×4NSST)は、16×16変換である。4×4NSSTは、DCT-2、DST-7、またはDCT-8などの一次変換が適用されたブロックに対して二次的に適用される。一次変換が適用されたブロックのサイズをN×Mとすると、4×4NSSTをN×Mブロックに適用するとき、以下のような方法が考えられる。
1)N×M領域に対して4×4NSSTを適用するための条件は、下記のa)、b)の通りである。
a)N >= 4
b)M >= 4
2)N×M領域に対して全て4×4NSSTが適用されるのではなく、一部の領域にのみ適用される。例えば、左上側のK×J領域に対してのみ4×4NSSTが適用されることができる。この場合のための条件は、下記のa)、b)の通りである。
a)K > = 4
b)J > = 4
3)二次変換が適用される領域を4×4ブロックに分割した後、各分割されたブロックに対して4×4NSSTが適用されることができる。
4×4NSSTの計算複雑度は、エンコーダおよびデコーダの非常に重要な考慮すべき要素であるので、これについて詳細に分析する。特に、乗算数を基準に4×4NSSTの計算複雑度を分析する。順方向NSSTの場合、16×16二次変換は、16個の行方向変換基底ベクトルで構成され、16×1ベクトルと各変換基底ベクトルとに対して内積を取ると、当該変換基底ベクトルに対する変換係数が取得される。16個の変換基底ベクトルに対する全ての変換係数を得る過程は、16×16非分離変換行列と入力16×1ベクトルとを乗算することのようである。したがって、4×4順方向NSSTに要求される総乗算数は、256である。
デコーダにおいて、16×1変換係数に対して逆方向16×16非分離変換適用すると(量子化や整数化計算などの効果を無視したとき)、元の4×4一次変換ブロックの係数が復元されることができる。言い換えると、逆方向16×16非分離変換行列を16×1変換係数ベクトルに乗算すると、16×1ベクトルの形態のデータが取得され、最初に適用した行-優先または列-優先順序に従ってデータを配列すると、4×4ブロック信号(一次変換係数)が復元されることができる。したがって、4×4逆方向NSSTに要求される総乗算数は、256である。
前述したように4×4NSSTが適用される場合、サンプル単位で要求される乗算個数は、16である。これは、4×4NSST実行過程である16×1ベクトルと各変換基底ベクトルとの内積過程で取得される乗算の総数256から総サンプルの個数16で除したときに得られる数である。順方向4×4NSSTおよび逆方向4×4NSSTの場合に対して全て同一に要求される乗算数は、16である。
8×8ブロックの場合、4×4NSSTを適用したときに要求されるサンプル当たりの乗算の個数は、4×4NSSTを適用した領域によって以下のように決定される。
1.4×4NSSTを左上側4×4領域にのみ適用した場合:256(4×4NSST過程で必要な乗算数)/64(8×8ブロック内の総サンプルの数)=4乗算数/サンプル
2.4×4NSSTを左上側4×4領域および右上側4×4領域に適用した場合:512(2つの4×4NSST過程で必要な乗算数)/64(8×8ブロック内の総サンプルの個数)=8乗算数/サンプル
3.4×4NSSTを8×8ブロックの全ての4×4領域に適用した場合:1024(4つの4×4NSST過程で必要な乗算数)/64(8×8ブロック内の総サンプルの個数)=16乗算数/サンプル
前述したように、ブロックのサイズが大きい場合、各サンプルが要求される最悪の場合の乗算の数を減少させるために4×4NSSTを適用する範囲を減少させることができる。
したがって、4×4NSSTを使用する場合、TUのサイズが4×4である場合、最悪の場合となる。この場合、最悪の場合の複雑度(worst case complexity)を減少させるための方法は、以下の通りである。
方法1.小さいTU(すなわち、4×4TU)に対して4×4NSSTを適用しない。
方法2.4×4ブロック(4×4TU)の場合、4×4NSSTの代わりに4×4RSTを適用する。
方法1の場合、4×4NSSTを適用しないことにより符号化性能に多くの低下が発生することが実験により観察された。方法2の場合、16×1変換係数ベクトルを構成する要素の統計的特性によって、全ての変換係数を使用しなくても前側に位置する一部の変換係数に対する逆変換を適用することにより、元の信号にかなり近い信号を復元することができ、大部分の符号化性能を維持できることが明らかになった。
具体的には、4×4RSTの場合、逆方向(または、順方向)16×16非分離変換が16個の列基底ベクトル(column basis vector)で構成されるとすると、L個の列基底ベクトルのみが残されて16×L行列が構成される。変換係数のうちのより重要なL個の変換係数のみを残すことにより、16×L行列とL×1ベクトルとを乗算すると、元の16×1ベクトルデータとの誤差が大きくない16×1ベクトルが復元できる。
結果として、L個の係数のみがデータ復元に介入するので、変換係数を取得するために16×1変換係数ベクトルではなく、L×1変換係数ベクトルを求めればよい。すなわち、順方向16×16非分離変換行列においてL個の行方向変換ベクトルを選択することによりL×16変換行列が構成され、L×16変換行列と16×1入力ベクトルとを乗算すると、L個の変換係数が取得される。
L値は、1<=L<16の範囲を有し、一般的には、16個の変換基底ベクトルのうち任意の方法でL個が選択できるが、前述したように、符号化および復号の側面から信号のエネルギ重要度の高い変換基底ベクトルを選択することが符号化効率の観点から有利であり得る。L値の変換による4×4ブロックにおけるサンプル当たりの最悪の場合の乗算数は、下記の表9の通りである。
前述したように、最悪の場合の乗算複雑度の減少のために、下記の表10のように4×4NSSTと4×4RSTとを複合的に使用することができる(ただし、以下の例は、4×4NSSTを適用するための条件(すなわち、現ブロックの幅および高さが全て4より大きいか等しい場合)下で4×4NSSTおよび4×4RSTを適用する条件を説明する)。
前述したように、4×4ブロックに対する4×4NSSTは、16個のデータが入力されて16個のデータを出力する正方形(16x16)変換行列であり、4×4RSTは、エンコーダ側を基準に16個のデータが入力されて16より小さいR個(例えば、8つ)のデータを出力する非正方形(8×16)変換行列を意味する。デコーダ側を基準に4×4RSTは、16より小さいR個(例えば、8つ)のデータが入力されて16個のデータを出力する非正方形(16×8)変換行列を意味する。
表10を参照すると、現ブロックの幅および高さがそれぞれ4である場合、現ブロックに対して8×16行列に基づいた4×4RSTが適用され、そうでない場合(現ブロックの幅または高さのいずれか1つが4でない場合)、現ブロックの左上側の4×4領域に対して4×4NSSTが適用されることができる。より具体的には、現ブロックのサイズが4×4である場合、16の入力長および8の出力長を有する非分離変換が適用されることができる。逆方向非分離変換の場合、逆に8の入力長および16の出力長を有する非分離変換が適用されることができる。
前述したように、最悪の場合の乗算複雑度の減少のために、下記の表11のように4×4NSSTと4×4RSTとを組み合わせて使用することができる(ただし、以下の例は、4×4NSSTを適用するための条件(すなわち、現ブロックの幅および高さが全て4より大きいか等しい場合)下で4×4NSSTおよび4×4RSTを適用する条件を説明する)。
表11を参照すると、現ブロックの幅および高さがそれぞれ4である場合、8×16行列に基づいた4×4RSTが適用され、現ブロックの幅と高さとの積が閾値(TH)より小さい場合、4×4NSSTが現ブロックの左上側の4×4領域に適用され、現ブロックの幅が高さより大きいか等しい場合、4×4NSSTが現ブロックの左上側の4×4領域および左上側の4×4領域の右側に位置する4×4領域に適用され、残りの場合(現ブロックの高さより小さい場合)、4×4NSSTが現ブロックの左上側の4×4領域および左上側の4×4領域の下に位置する4×4領域に適用される。
結論として、最悪の場合の乗算の計算複雑度の減少のために、4×4ブロックに対して4×4NSSTの代わりに4×4RST(例えば、8×16行列)が適用されることができる。
実施形態15:最悪の場合のハンドリング(Worst case handling)のための8×8RSTの条件的適用
8×8ブロックに適用できる非分離二次変換(8×8NSST)は、64×64変換である。8×8NSSTは、DCT-2、DST-7、またはDCT-8などの一次変換が適用されたブロックに対して二次的に適用される。一次変換が適用されたブロックのサイズをN×Mとすると、8×8NSSTをN×Mブロックに適用するとき、以下のような方法が考慮される。
1)N×M領域に対して8×8NSSTを適用するための条件は、下記のc)、d)の通りである。
c)N >= 8
d)M >= 8
2)N×M領域に対して全て8×8NSSTが適用されるのではなく、一部の領域にのみ適用されることがある。例えば、左上側のK×J領域に対してのみ8×8NSSTが適用される。この場合のための条件は、下記のc)、d)の通りである。
c)K >= 8
d)J >= 8
3)二次変換が適用される領域を8×8ブロックに分割した後、各分割されたブロックに対して8×8NSSTが適用されることができる。
8×8NSSTの計算複雑度は、エンコーダおよびデコーダの非常に重要な考慮すべき要素であるので、これについて詳細に分析する。特に、乗算数を基準に8×8NSSTの計算複雑度を分析する。順方向NSSTの場合、64×64非分離二次変換は、64個の行方向変換基底ベクトルで構成され、64×1ベクトルと各変換基底ベクトルとに対して内積を取ると、当該変換基底ベクトルに対する変換係数が取得される。64個の変換基底ベクトルに対する全ての変換係数を得る過程は、64×64非分離変換行列と入力64×1ベクトルとを乗算することのようである。したがって、8×8順方向NSSTに要求される総乗算数は、4096である。
デコーダにおいて、64×1変換係数に対して逆方向64×64非分離変換を適用すると(量子化や整数化計算などの効果を無視したとき)、元の8×8一次変換ブロックの係数が復元されることができる。言い換えると、逆方向64×64非分離変換行列を64×1変換係数ベクトルに乗算すると、64×1ベクトル形態のデータが取得され、最初に適用した行-優先または列-優先順序に従ってデータを配列すると、8×8ブロック信号(一次変換係数)が復元されることができる。したがって、8×8逆方向NSSTに要求される総乗算数は、4096である。
前述したように、8×8NSSTが適用される場合、サンプル単位で要求される乗算個数は、64である。これは、8×8NSST実行過程である64×1ベクトルと各変換基底ベクトルとの内積過程で取得される乗算の総数4096から総サンプルの個数64で除したときに得られる数である。順方向8×8NSSTと逆方向8×8NSSTとの場合に対して全て同一に要求される乗算数は、64である。
16×16ブロックの場合、8×8NSSTを適用したときに要求されるサンプル当たりの乗算の個数は、8×8NSSTを適用した領域によって以下のように決定される。
1.8×8NSSTを左上側の8×8領域にのみ適用した場合:4096(8×8NSST過程で必要な乗算数)/256(16×16ブロック内の総サンプルの数)=16乗算数/サンプル
2.8×8NSSTを左上側の8×8領域および右上側の8×8領域に適用した場合:8192(2つの8×8NSST過程で必要な乗算数)/256(16×16ブロック内の総サンプルの個数)=32乗算数/サンプル
3.8×8NSSTを16×16ブロックの全ての8×8領域に適用した場合:16384(4つの8×8NSST過程で必要な乗算数)/256(16×16ブロック内の総サンプルの個数)=64乗算数/サンプル
前述したように、ブロックのサイズが大きい場合、各サンプル当たり要求される最悪の場合の乗算の数を減少させるために8×8NSSTを適用する範囲を減少させることができる。
8×8NSSTが適用される場合、8×8ブロックが8×8NSSTが適用されることができる最小のTUであるので、サンプル当たり要求される乗算数の観点から、TUのサイズが8×8である場合が最悪の場合に該当する。この場合、最悪の場合の複雑度(worst case complexity)を減少させるための方法は、以下の通りである。
方法1.小さいTU(すなわち、8×8TU)に対して8×8NSSTを適用しない。
方法2.8×8ブロック(8×8TU)の場合、8×8NSSTの代わりに8×8RSTを適用する。
方法1の場合、8×8NSSTを適用しないことにより符号化性能に多くの低下が発生することが実験により観察された。方法2の場合、64×1変換係数ベクトルを構成する要素の統計的特性によって、全ての変換係数を使用しなくても前側に位置する一部の変換係数に対する逆変換を適用することにより元の信号とかなり近い信号を復元でき、大部分の符号化性能を維持できることが明らかになった。
具体的には、8×8RSTの場合、逆方向(または、順方向)64×64非分離変換が16個の列基底ベクトル(column basis vector)で構成されるとすると、L個の列基底ベクトルのみが残されて64×L行列が構成される。変換係数のうちのより重要なL個の変換係数のみを残すことにより64×L行列とL×1ベクトルとを乗算すると、元の64×1ベクトルデータとの誤差が大きくない64×1ベクトルが復元できる。
結果として、L個の係数のみがデータ復元に介入するので、変換係数を取得するために、64×1変換係数ベクトルではなく、L×1変換係数ベクトルを求めればよい。すなわち、順方向64×64非分離変換行列においてL個の行方向変換ベクトルを選択することによりL×64変換行列が構成され、L×64変換行列と64×1入力ベクトルとを乗算すると、L個の変換係数が取得される。
L値は、1<=L<64の範囲を有し、一般的には、64個の変換基底ベクトルのうち任意の方法でL個が選択されるが、前述したように符号化および復号の側面から信号のエネルギ重要度が高い変換基底ベクトルを選択することが符号化効率の観点から有利であり得る。L値の変換による8×8ブロックにおけるサンプル当たりの最悪の場合の乗算数は、以下の表12の通りである。
前述したように、最悪の場合の乗算複雑度の減少のために、以下の表13のように相異なるL値を有する8×8RSTを複合的に使用することができる(ただし、以下の例は、8×8NSSTを適用するための条件(すなわち、現ブロックの幅および高さが全て8より大きいか等しい場合)下で8×8RSTを適用する条件を説明する)。
表13を参照すると、現ブロックの幅および高さがそれぞれ8である場合、現ブロックに対して8×64行列に基づいた8×8RSTが適用され、そうでない場合(現ブロックの幅または高さのいずれか1つが8でない場合)、現ブロックに対して16×64行列に基づいた8×8RSTが適用されることができる。より具体的には、現ブロックのサイズが8×8である場合、64の入力長および8の出力長を有する非分離変換が適用され、そうでない場合、64の入力長および16の出力長を有する非分離変換が適用される。逆方向非分離変換の場合、現ブロックが8×8である場合、8の入力長および64の出力長を有する非分離変換が適用され、そうでない場合、16の入力長および64の出力長を有する非分離変換が適用される。
表14は、8×8NSSTを適用するための条件(すなわち、現ブロックの幅および高さが8より大きい場合)下で、様々な8×8RSTの適用に関する例である。
表14を参照すると、現ブロックの幅および高さがそれぞれ8である場合、8×64行列に基づいた8×8RSTが適用され、現ブロックの幅と高さとの積が閾値(TH)より小さい場合、16×64行列に基づいた8×8RSTが現ブロックの左上側の8×8領域に適用され、現ブロックの幅が高さより大きいか等しい場合、32×64行列に基づいた8RSTが現ブロックの左上側の8×8領域に位置する4×4領域に適用され、残りの場合(現ブロックの幅と高さとの積が閾値より大きいか等しく、現ブロックの幅が高さより小さい場合)、32×64行列に基づいた8×8RSTが現ブロックの左上側の8×8領域に適用される。
図29は、本発明の実施形態による変換が適用されるデコードのフローチャートの例を示す。図29の動作は、デコード装置200の逆変換部230により行われる。
ステップS2905で、デコード装置200は、現ブロックの高さおよび幅に基づいて非分離変換の入力長および出力長を決定する。ここで、現ブロックの高さおよび幅がそれぞれ4である場合、非分離変換の入力長は8、出力長は16に決定される。すなわち、8×16行列に基づいた4×4RSTの逆変換(16×8行列に基づいた逆方向4×4RST)が適用される。現ブロックの高さおよび幅がそれぞれ4である場合に該当しない場合、非分離変換の入力長および出力長は、それぞれ16に決定される。
ステップS2910で、デコード装置200は、非分離変換の入力長および出力長に対応する非分離変換行列を決定する。例えば、非分離変換の入力長が8であり、出力長が16である場合(現ブロックのサイズが4×4である場合)、変換カーネルから導出された16×8行列が非分離変換ブロックとして決定され、非分離変換の入力長が16であり、出力長が16である場合(例えば、現ブロックが8×8より小さいとともに4×4でない場合)、16×16変換カーネルが非分離変換として決定できる。
本発明の実施形態によれば、デコード装置200は、現ブロックのイントラ予測モードに基づいて非分離変換集合インデックス(例えば、NSSTインデックス)を決定し、非分離変換集合インデックスに含まれる非分離変換集合内で非分離変換インデックスに対応する非分離変換カーネルを決定し、ステップS2905で決定された入力長および出力長に基づいて非分離変換カーネルから非分離変換行列を決定できる。
ステップS2915で、デコード装置200は、現ブロックで決定された非分離変換行列を上記現ブロックに適用する。例えば、非分離変換の入力長が8であり、出力長が16である場合、変換カーネルから導出された8×16行列を現ブロックに適用し、非分離変換の入力長が16であり、出力長が16である場合、変換カーネルから導出された16×16行列を現ブロックの左上側の4×4領域の係数に適用できる。
また、現ブロックの高さおよび幅がそれぞれ4である場合に該当しない場合に対して、デコード装置200は、現ブロックの幅と高さとの積が閾値より小さい場合、非分離変換行列を現ブロックの左上側の4×4領域に適用し、現ブロックの幅が高さより大きいか等しい場合、現ブロックの左上側の4×4領域および上記左上側の4×4領域の右側に位置する4×4領域に適用し、現ブロックの幅と高さとの積が閾値より大きいか等しく、現ブロックの幅が高さより小さい場合、上記非分離変換行列を上記現ブロックの左上側の4×4領域および上記左上側の4×4領域の下に位置する4×4領域に適用する。
図30は、本発明が適用される実施形態であって、ビデオ信号を処理するための装置のブロック図の例を示す。図30の画像処理装置3000は、図1のエンコード装置100または図2のデコード装置200に該当し得る。
画像信号を処理する画像処理装置3000は、画像信号を記憶するメモリ3020と、上記メモリと結合しながら画像信号を処理するプロセッサ3010と、を含む。
本発明の実施形態によるプロセッサ3010は、画像信号の処理のための少なくとも1つの処理(プロセッシング)回路で構成され、画像信号をエンコードまたはデコードするための命令語を実行することにより画像信号を処理することができる。すなわち、プロセッサ3010は、前述のエンコードまたはデコードの方法を実行することにより、オリジナル画像データをエンコードするか、エンコードされた画像信号をデコードする。
図31は、本発明が適用される実施形態であって、画像コーディングシステムの例を示す。
画像コーディングシステムは、ソースデバイスおよび受信デバイスを含む。ソースデバイスは、エンコードされたビデオ/画像情報またはデータをファイルまたはストリーミングの形態でデジタル記憶媒体またはネットワークを介して受信デバイスに伝達する。
ソースデバイスは、ビデオソース、エンコード装置、送信器を含む。受信デバイスは、受信器、デコード装置およびレンダラを含む。エンコード装置は、ビデオ/画像エンコード装置と呼ばれてもよく、デコード装置は、ビデオ/画像デコード装置と呼ばれてもよい。送信器は、エンコード装置に含まれてもよい。受信器は、デコード装置に含まれてもよい。レンダラは、ディスプレイ部を含んでもよく、ディスプレイ部は、別個のデバイスまたは外部コンポーネントで構成されてもよい。
ビデオソースは、ビデオ/画像のキャプチャ、合成または生成過程などによりビデオ/画像を取得する。ビデオソースは、ビデオ/画像キャプチャデバイスおよび/またはビデオ/画像生成デバイスを含む。ビデオ/画像キャプチャデバイスは、例えば、1つまたは複数のカメラ、以前にキャプチャされたビデオ/画像を含むビデオ/画像アーカイブなどを含む。ビデオ/画像生成デバイスは、例えばコンピュータ、タブレットおよびスマートフォンなどを含み、(電子的に)ビデオ/画像を生成することができる。例えば、コンピュータなどにより仮想のビデオ/画像が生成されることができ、この場合、関連データが生成される過程は、ビデオ/画像キャプチャの過程と代わることができる。
エンコード装置は、入力ビデオ/画像をエンコードする。エンコード装置は、圧縮およびコーディング効率のために予測、変換、量子化など一連の手順を行うことができる。エンコードされたデータ(エンコードされたビデオ/画像情報)は、ビットストリーム形式で出力される。
送信部は、ビットストリーム形態で出力されたエンコードされたビデオ/画像情報またはデータをファイルまたはストリーミング形態でデジタル記憶媒体またはネットワークを介して受信デバイスの受信部に伝達する。デジタル記憶媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの多様な記憶媒体を含む。送信部は、予め決められたファイルフォーマットによりメディアファイルを生成するためのエレメントを含み、放送/通信ネットワークを介した送信のためのエレメントを含む。受信器は、ビットストリームを抽出してデコード装置に伝達する。
デコード装置は、エンコード装置の動作に対応する逆量子化、逆変換、予測などの一連の手順を行ってビデオ/画像をデコードする。
レンダラは、デコードされたビデオ/画像をレンダリングする。レンダリングされたビデオ/画像は、ディスプレイ部を介して表示される。
図32は、本発明が適用される実施形態であって、コンテンツストリーミングシステムの構造図である。
本発明が適用されるコンテンツストリーミングシステムは、エンコードサーバ、ストリーミングサーバ、ウェブサーバ、メディア記憶装置(格納所)、ユーザ装置およびマルチメディア入力装置を含む。
エンコードサーバは、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これをストリーミングサーバに送信する役割を果たす。他の例として、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置がビットストリームを直接生成する場合、エンコードサーバは省略されてもよい。
ビットストリームは、本発明が適用されるエンコード方法またはビットストリーム生成方法により生成され、ストリーミングサーバは、ビットストリームを送信または受信する過程で一時的にビットストリームを記憶することができる。
ストリーミングサーバは、ウェブサーバを介したユーザ要求に基づいてマルチメディアデータをユーザ装置に送信し、上記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒介体としての役割を果たす。ユーザがウェブサーバに希望のサービスを要求すると、ウェブサーバは、これをストリーミングサーバに伝達し、ストリーミングサーバは、ユーザにマルチメディアデータを送信する。ここで、コンテンツストリーミングシステムは、別途の制御サーバを含んでもよく、この場合、制御サーバは、コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割を果たす。
ストリーミングサーバは、メディア記憶装置および/またはエンコードサーバからコンテンツを受信する。例えば、エンコードサーバからコンテンツを受信する場合、コンテンツをリアルタイムに受信できる。この場合、円滑なストリーミングサービスを提供するために、ストリーミングサーバは、ビットストリームを一定時間記憶することができる。
ユーザ装置の例としては、携帯電話、スマートフォン(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、デスクトップコンピュータ、デジタルサイネージなどを有することができる。
コンテンツストリーミングシステム内の各サーバは、分散サーバとして運用でき、この場合、各サーバで受信するデータは、分散処理されることができる。
また、本発明が適用される処理方法は、コンピュータで実行されるプログラムの形で生産されることができ、コンピュータが読み取り可能な記憶媒体に記憶することができる。本発明に係るデータ構造を有するマルチメディアデータもまた、コンピュータが読み出しできる記録媒体に記憶することができる。上記コンピュータが読み取り可能な記録媒体は、コンピュータで読み取り可能なデータが記憶されるあらゆる種類のストレージデバイスおよび分散ストレージデバイスを含む。上記コンピュータが読み取り可能な記録媒体は、例えば、ブルーレイディスク(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 Recorder)などを含むことができる。
また、本発明が適用される処理方法は、コンピュータで実行されるプログラムの形で生産されることができ、コンピュータが読み取り可能な記憶媒体に記憶されることができる。本発明に係るデータ構造を有するマルチメディアデータもまた、コンピュータが読み出し可能な記憶媒体に記憶されることができる。上記コンピュータが読み取り(判読)可能な記録媒体は、コンピュータが読み取り可能なデータが記憶されるあらゆる種類のストレージデバイスおよび分散ストレージデバイスを含む。上記コンピュータが読み取り可能な記録媒体は、例えば、ブルー例ディスク(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)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどにより実現されることができる。
ファームウェアやソフトウェアによる実現の場合、本発明の一実施形態は、以上で説明した機能または動作を実行するモジュール、プロシージャ、関数などの形態で実現されることができる。ソフトウェアコードは、メモリに記憶されてプロセッサによって駆動されることができる。上記メモリは、上記プロセッサの内部または外部に位置して、既に公知の多様な手段により、上記プロセッサとデータを送受信することができる。
本発明は、本発明の必須的特徴を逸脱しない範囲で他の特定の形態で具体化されることができることは、当業者に自明である。したがって、前述した詳細な説明は、すべての面で制限的に解釈してはならず、例示的なものとみなされるべきである。本発明の範囲は、添付された請求項の合理的解釈によって決定されるべきであり、本発明の等価的範囲内におけるすべての変更は、本発明の範囲に含まれる。