以下、本発明に係る好適な実施の形態を添付の図面を参照して、詳細に説明する。添付された図面と一緒に以下に開示される詳細な説明は、本発明の例示的な実施形態を説明しようとするものであり、本発明が実施されることができる唯一の実施形態を示したいのではない。以下の詳細な説明は、本発明の完全な理解を提供するために具体的な細部事項を含む。しかし、当業者は、本発明がこのような具体的な詳細事項がなくても実施できることが分かる。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造及び装置は省略されるか、各構造及び装置の核心機能を中心としたブロック図の形式で示されることができる。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造及び装置は省略されるか、各構造及び装置の核心機能を中心としたブロック図の形式で示されることができる。
以下の説明で用いられる特定の用語は、本発明の理解を助けるために提供されたものであり、このような特定の用語の使用は、本発明の技術的思想を逸脱しない範囲で他の形態に変更されることができる。例えば、信号、データ、サンプル、ピクチャ、フレーム、ブロックなどの場合、各コーディングの過程で適切に代替されて解釈されることがある。
以下、本明細書において「処理ユニット」は、予測、変換、及び/または量子化などのようなエンコード/デコードの処理過程が実行される単位を意味する。また、処理ユニットは、輝度(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 uni)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のようになる。
図13において、ギブンス回転により出力されるtmとtnは数式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インデックスがビットストリームパーシング(bitstream 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コーナーに適用されることができる。縮小された変換は非定方形にも適用できる。
前述したように、二次変換における複雑度イシューにより、二次変換は4×4及び8×8コーナーに適用されることができる。縮小された変換は非定方形にも適用できる。
また他の例において、8×8ブロックに対してRSTが適用される場合、右下側(bottom-right)の4×4ブロックを除いた残りの左上側(top-left)、右上側(top-right)、右下側(bottom-left)の3つの4×4ブロック(計48個の変換係数)に対してのみ非分離変換(RST)が適用されることができる。
実施形態12:縮小因子(Reduction Factor)
図28は、本発明の実施形態による縮小因子による縮小された変換を示す。
縮小因子の変更はメモリと乗算複雑度を変更させることができる。前述したように、縮小因子変更により因子(factor)R/Nの分だけのメモリと乗算複雑度が減少する。例えば、8×8NSSTに対して、R=16である場合、メモリと乗算複雑度は1/4の分だけ減少する。
実施形態13:上位レベルシンタックス(High Level Syntax)
以下の表6のようなシンタックスエレメントがビデオコーディングにおいて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ブロックでのサンプル当たりの最悪の場合の乗算数は下記の表7のようである。
前述したように、最悪の場合の乗算複雑度の減少のために下記の表8のように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)変換行列を意味する。
表8を参照すると、現在ブロックの幅と高さがそれぞれ4である場合、現在ブロックに対して8×16行列に基づいた4×4RSTが適用され、そうでないと(現在ブロックの幅又は高さのいずれか1つが4でない場合)、現在ブロックの左上側の4×4領域に対して4×4NSSTが適用できる。より具体的に、現在ブロックのサイズが4×4である場合、16の入力長と8の出力長を有する非分離変換が適用できる。逆方向非分離変換の場合、逆に8の入力長と16の出力長を有する非分離変換が適用できる。
前述したように、最悪の場合の乗算複雑度の減少のために下記の表9のように4×4NSSTと4×4RSTを組み合わせて使用することができる(ただし、以下の例は、4×4NSSTを適用するための条件(すなわち、現在ブロックの幅と高さが全て4より大きいか等しい場合)下で4×4NSSTと4×4RSTを適用する条件を説明する)。
表9を参照すると、現在ブロックの幅と高さがそれぞれ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ベクトルが復元できる。
また、実施形態11において説明したように、8×8ブロックに含まれた64個の変換係数全体に対してRSTが適用されずに、一部の領域(例えば、8×8ブロックにおいて右下側の4×4領域を除いた残りの領域)にRSTが適用されることができる。
結果として、L個の係数のみがデータ復元に介入するので、変換係数を取得するために64×1変換係数ベクトルではなく、L×1変換係数ベクトルを求めればよい。すなわち、順方向64×64非分離変換行列においてL個の行方向変換ベクトルを選択することによりL×64変換行列が構成され、L×64変換行列と64×1入力ベクトルを乗算すると、L個の変換係数が取得される。
L値は1<=L<64の範囲を有し、一般的には、64個の変換基底ベクトルのうち任意の方法でL個が選択できるが、前述のように符号化と復号化の側面から信号のエネルギー重要度の高い変換基底ベクトルを選択することが符号化効率の観点から有利であり得る。L値の変化による8×8ブロックでのサンプル当たりの最悪の場合の乗算数は以下の表10のようである。
前述したように、最悪の場合の乗算複雑度の減少のために以下の表11のように異なるL値を有する8×8RSTを複合的に使用することができる(ただし、以下の例は、8×8NSSTを適用するための条件(すなわち、現在ブロックの幅と高さが全て8より大きいか等しい場合)下で8×8RSTを適用する条件を説明する)。
表11を参照すると、現在ブロックの幅と高さがそれぞれ8である場合、現在ブロックに対して8×64行列に基づいた8×8RSTが適用され、そうでないと(現在ブロックの幅又は高さのいずれか1つが8でない場合)、現在ブロックに対して16×64行列に基づいた8×8RSTが適用できる。より具体的に、現在ブロックのサイズが8×8である場合、64の入力長と8の出力長を有する非分離変換が適用され、そうでないと、64の入力長と16の出力長を有する非分離変換が適用される。逆方向非分離変換の場合、現在ブロックが8×8である場合と、8の入力長と64の出力長を有する非分離変換が適用され、そうでないと、16の入力長と64の出力長を有する非分離変換が適用される。
また、実施形態11において説明されたように、RSTは8×8ブロック全体に対して適用されずに一部の領域にのみ適用できるので、例えば、8×8ブロックの右下側の4×4領域を除いた残りの領域にRSTが適用される場合、8×48又は16×18行列に基づいた8×8RSTが適用されることができる。すなわち、現在ブロックの幅と高さがそれぞれ8に該当する場合、8×48行列に基づいた8×8RSTが適用され、そうでない場合(現在ブロックの幅又は高さが8でない場合)、16×48行列に基づいた8×8RSTが適用される。
順方向非分離変換の場合、現在ブロックが8×8であると、48の入力長と8の出力長を有する非分離変換が適用され、そうでないと、48の入力長と16の出力長を有する非分離変換が適用される。
逆方向非分離変換の場合、現在ブロックが8×8であると、8の入力長と48の出力長を有する非分離変換が適用され、そうでないと、16の入力長と48の出力長を有する非分離変換が適用される。
結論として、8×8より大きいブロックに対してRSTが適用される場合、エンコーダ側を基準に、ブロックの高さと幅がそれぞれ8に該当すると、64より小さいか等しい入力長(例えば、48又は64)と64より小さい出力長(例えば、8)とを有する非分離変換行列(8×48又は8×64行列)が適用され、ブロックの高さ又は幅が8に該当しないと、64より小さいか等しい入力長(例えば、48又は64)と64より小さい出力長(例えば、16)とを有する非分離変換行列(16×48又は16×64行列)が適用される。
また、デコーダ側を基準に8×8より大きいブロックに対してRSTが適用される場合、ブロックの高さと幅がそれぞれ8に該当すると、64より小さい入力長(例えば、8)と64より小さいか等しい出力長(例えば、48又は64)を有する非分離変換行列(48×8又は64×8行列)が適用され、ブロックの高さ又は幅が8に該当しないと、64より小さい入力長(例えば、16)と64より小さいか等しい出力長(例えば、48又は64)を有する非分離変換行列(48×16又は64×16行列)が適用される。
表12は、8×8NSSTを適用するための条件(すなわち、現在ブロックの幅と高さが8より大きいか等しい場合)下で、様々な8×8RSTの適用に関する例である。
表12を参照すると、現在ブロックの幅と高さがそれぞれ8である場合、8×64行列(又は、8×48行列)に基づいた8×8RSTが適用され、現在ブロックの幅と高さの積が臨界値(TH)より小さい場合、16×64行列(又は、16×48行列)に基づいた8×8RSTが現在ブロックの左上側の8×8領域に適用され、残りの場合(現在ブロックの幅又は高さが8ではなく、現在ブロックの幅と高さの積が臨界値より大きいか等しい場合)、32×64行列(又は、32×48行列)に基づいた8×8RSTが現在ブロックの左上側の8×8領域に適用される。
図29は、本発明が適用される実施形態であって、変換を行うエンコードフローチャートの例を示す。
エンコード装置100は、レジデュアルブロックに対して一次変換を行う(S2910)。一次変換は、コア変換と称されてもよい。実施形態として、エンコード装置100は、前述のMTSを用いて一次変換を行う。また、エンコード装置100は、MTS候補のうち特定MTSを示すMTSインデックスをデコード装置200に送信する。ここで、MTS候補は、現在ブロックのイントラ予測モードに基づいて構成される。
エンコード装置100は、二次変換を適用するか否かを決定する(S2920)。一例として、エンコード装置100は、一次変換されたレジデュアル変換係数に基づいて二次変換を適用するか否かを決定する。例えば、二次変換はNSST又はRSTであり得る。
エンコード装置100は二次変換を決定する(S2930)。このとき、エンコード装置100は、イントラ予測モードによって指定されたNSST(又は、RST)変換集合に基づいて二次変換を決定する。
また、一例として、エンコード装置100は、S2930ステップに先立って現在ブロックのサイズに基づいて二次変換が適用される領域を決定する。
エンコード装置100は、S2930ステップで決定された二次変換を用いて二次変換を行う(S2940)。
図30は、本発明が適用される実施形態であって、変換を行うデコードフローチャートの例を示す。
デコード装置200は、二次逆変換を適用するか否かを決定する(S3010)。例えば、二次逆変換は、NSST又はRSTであり得る。一例として、デコード装置200は、エンコード装置100から受信された二次変換フラグに基づいて二次逆変換を適用するか否かを決定する。
デコード装置200は二次逆変換を決定する(S3020)。ここで、デコード装置200は、前述のイントラ予測モードによって指定されたNSST(又は、RST)変換集合に基づいて現在ブロックに適用される二次逆変換を決定することができる。
また、一例として、デコード装置200は、S3020ステップに先立って現在ブロックのサイズに基づいて二次逆変換が適用される領域を決定する。
デコード装置200は、S3020ステップで決定された二次逆変換を利用して逆量子化されたレジデュアルブロックに対して二次逆変換を行う(S3030)。
デコード装置200は、二次逆変換されたレジデュアルブロックに対して一次逆変換を行う(S3040)。一次逆変換は、コア逆変換と称されてもよい。実施形態として、デコード装置200は、前述のMTSを用いて一次逆変換を行う。また、一例として、デコード装置200は、S3040ステップに先立って現在ブロックにMTSが適用されるか否かを決定できる。この場合、図30のデコードフローチャートにMTSが適用されるか否かを決定するステップがさらに含まれてもよい。
一例として、現在ブロックにMTSが適用される場合(すなわち、cu_mts_flag=1)、デコード装置200は、現在ブロックのイントラ予測モードに基づいてMTS候補を構成する。この場合、図30のデコードフローチャートにMTS候補を構成するステップがさらに含まれてもよい。そして、デコード装置200は、構成されたMTS候補のうち特定MTSを示すmts_idxを利用して現在ブロックに適用される一次逆変換を決定することができる。
図31は、本発明が適用される実施形態であって、エンコード装置100内の変換部120の細部ブロック図の例を示す。
本発明の実施形態が適用されるエンコード装置100は、一次変換部3110、二次変換適用可否決定部3120、二次変換決定部3130、二次変換部3140を含む。
一次変換部3110は、レジデュアルブロックに対して一次変換を行うことができる。一次変換はコア変換と称されてもよい。実施形態として、一次変換部3110は前述のMTSを用いて一次変換を行う。また、一次変換部3110は、MTS候補のうち特定MTSを示すMTSインデックスをデコード装置200に送信する。ここで、MTS候補は現在ブロックのイントラ予測モードに基づいて構成される。
二次変換適用可否決定部3120は、二次変換を適用するか否かを決定することができる。一例として、二次変換適用可否決定部3120は、一次変換されたレジデュアルブロックの変換係数に基づいて二次変換を適用するか否かを決定することができる。例えば、二次変換はNSST又はRSTであり得る。
二次変換決定部3130は二次変換を決定する。このとき、二次変換決定部3130は、前述のようにイントラ予測モードによって指定されたNSST(又は、RST)変換集合に基づいて二次変換を決定する。
また、一例として、二次変換決定部3130は、現在ブロックのサイズに基づいて二次変換が適用される領域を決定することもできる。
二次変換部3140は、決定された二次変換を用いて二次変換を行うことができる。
図32は、本発明が適用される実施形態であって、デコード装置200内の逆変換部230の細部ブロック図の例を示す。
本発明が適用されるデコード装置200は、二次逆変換適用可否決定部3210、二次逆変換決定部3220、二次逆変換部3230、一次逆変換部3240を含む。
二次逆変換適用可否決定部3210は、二次逆変換を適用するか否かを決定する。例えば、二次逆変換はNSST又はRSTであり得る。一例として、二次逆変換適用可否決定部3210は、エンコード装置100から受信された二次変換フラグに基づいて二次逆変換を適用するか否かを決定する。他の一例として、二次逆変換適用可否決定部3210は、レジデュアルブロックの変換係数に基づいて二次逆変換を適用するか否かを決定することもできる。
二次逆変換決定部3220は二次逆変換を決定する。このとき、二次逆変換決定部3220は、イントラ予測モードによって指定されたNSST(又は、RST)変換集合に基づいて現在ブロックに適用される二次逆変換を決定する。
また、一例として、二次逆変換決定部3220は、現在ブロックのサイズに基づいて二次逆変換が適用される領域を決定することができる。
また、一例として、二次逆変換部3230は、決定された二次逆変換を用いて逆量子化されたレジデュアルブロックに対して二次逆変換を行うことができる。
一次逆変換部3240は、二次逆変換されたレジデュアルブロックに対して一次逆変換を行う。実施形態として、一次逆変換部3240は、前述のMTSを用いて一次変換を行う。また、一例として、一次逆変換部3240は現在ブロックにMTSが適用されるか否かを決定することができる。
一例として、現在ブロックにMTSが適用される場合(すなわち、cu_mts_flag=1)、一次逆変換部3240は、現在ブロックのイントラ予測モードに基づいてMTS候補を構成する。そして、一次逆変換部3240は、構成されたMTS候補のうち特定MTSを示すmts_idxを利用して現在ブロックに適用される一次変換を決定する。
図33は、本発明の実施形態による変換が適用されるデコードフローチャートの例を示す。図33の動作は、デコード装置100の逆変換部230により行われる。
S3305ステップで、デコード装置200は、現在ブロックの高さと幅に基づいて非分離変換の入力長及び出力長を決定する。ここで、現在ブロックの高さと幅がそれぞれ8である場合、非分離変換の入力長は8、出力長は前記入力長より大きく64より小さいか等しい値(例えば、48又は64)と決定される。例えば、エンコーダ側において8×8ブロックの変換係数全体に対して非分離変換が適用された場合、出力長は64と決定され、8×8ブロックの変換係数の一部(例えば、8×8ブロックのうち右下端の4×4領域を除いた部分)に対して非分離変換が適用された場合、出力長は48と決定される。
S3310ステップで、デコード装置200は、非分離変換の入力長及び出力長に対応する非分離変換行列を決定する。例えば、非分離変換の入力長が8であり、出力長が48又は64である場合(現在ブロックのサイズが4×4である場合)、変換カーネルから導出された48×8又は64×8行列が非分離変換として決定され、非分離変換の入力長が16であり、出力長が48又は64である場合(例えば、現在ブロックが8×8より小さいとともに4×4でない場合)、48×16又は64×16変換カーネルが非分離として決定されることができる。
本発明の実施形態によれば、デコード装置200は、現在ブロックのイントラ予測モードに基づいて非分離変換集合インデックス(例えば、NSSTインデックス)を決定し、非分離変換集合インデックスに含まれた非分離変換集合内で非分離変換インデックスに対応する非分離変換カーネルを決定し、S3305ステップで決定された入力長及び出力長に基づいて非分離変換カーネルから非分離変換行列を決定することができる。
S3315ステップで、デコード装置200は、現在ブロックに決定された非分離変換行列を前記現在ブロックにおいて決定された入力長(8又は16)の分だけの係数に適用する。例えば、非分離変換の入力長が8であり、出力長が48又は64である場合、変換カーネルから導出された48×8又は64×8行列を現在ブロックに含まれた8つの係数に適用し、非分離変換の入力長が16であり、出力長が48又は64である場合、変換カーネルから導出された48×16又は64×16行列を現在ブロックの左上側の4×4領域16個の係数に適用できる。ここで、非分離変換が適用される係数は、現在ブロックのDC位置から定められたスキャン順序(例えば、図16の(a)、(b)、又は(c))によって入力長(例えば、8又は16)に該当する位置までの係数である。
また、現在ブロックの高さと幅がそれぞれ8である場合に該当しない場合に対して、デコード装置200は、現在ブロックの幅と高さの積が臨界値より小さいと、現在ブロックにおいて左上側の4×4領域の16個の係数を入力にして出力長(例えば、48又は64)の分だけの変換された係数を出力する非分離変換行列(48×16又は64×16行列)を適用し、現在ブロックの幅と高さの積が臨界値より大きいか等しいと、現在ブロックにおいて32個の係数を入力にして出力長(例えば、48又は64)の分だけの変換された係数を出力する非分離変換行列(48×32又は64×32行列)を適用する。
出力長が64である場合、非分離変換行列の適用により8×8ブロックに非分離変換が適用された64個の変換されたデータ(変換された係数)が配置され、出力長が48である場合、非分離変換行列の適用により8×8ブロックにおいて右下端の4×4領域を除いた残りの領域に非分離変換が適用された48個の変換されたデータ(変換された係数)が配置される。
図34は、本発明が適用される実施形態であって、ビデオ信号を処理するための装置のブロック図の例を示す。図34の画像処理装置3400は、図1のエンコード装置100又は図2のデコード装置200に該当し得る。
画像信号を処理する画像処理装置3400は、画像信号を格納するメモリ3420と、前記メモリと結合するとともに画像信号を処理するプロセッサ3410とを含む。
本発明の実施形態によるプロセッサ3410は、画像信号の処理のための少なくとも1つのプロセッシング回路で構成され、画像信号をエンコード又はデコードのための命令語を実行することにより画像信号を処理することができる。すなわち、プロセッサ3410は、前述のエンコード又はデコード方法を実行することにより、原本画像データをエンコードするか、エンコードされた画像信号をデコードすることができる。
図35は、本発明が適用される実施形態であって、画像コーディングシステムの例を示す。
画像コーディングシステムは、ソースデバイス及び受信デバイスを含む。ソースデバイスは、エンコードされたビデオ/画像情報又はデータをファイル又はストリーミングの形態でデジタル格納媒体又はネットワークを介して受信デバイスに伝達する。
ソースデバイスはビデオソース、エンコード装置、送信機を含む。受信デバイスは受信機、デコード装置及びレンダラーを含む。エンコード装置はビデオ/画像エンコード装置と呼ばれてもよく、デコード装置はビデオ/画像デコード装置と呼ばれてもよい。送信機はエンコード装置に含まれてもよい。受信機はデコード装置に含まれてもよい。レンダラーはディスプレイ部を含んでもよく、ディスプレイ部は別個のデバイス又は外部コンポーネントで構成されてもよい。
ビデオソースは、ビデオ/画像のキャプチャ、合成又は生成過程などによりビデオ/画像を取得する。ビデオソースは、ビデオ/画像キャプチャデバイス及び/又はビデオ/画像生成デバイスを含む。ビデオ/画像キャプチャデバイスは、例えば、1つ以上のカメラ、以前にキャプチャされたビデオ/画像を含むビデオ/画像アーカイブなどを含む。ビデオ/画像生成デバイスは、例えばコンピュータ、タブレット及びスマートフォンなどを含み、(電子的に)ビデオ/画像を生成することができる。例えば、コンピュータなどにより仮想のビデオ/画像が生成でき、この場合、関連データが生成される過程でビデオ/画像キャプチャの過程が代わることができる。
エンコード装置は入力ビデオ/画像をエンコードする。エンコード装置は、圧縮及びコーディング効率のために予測、変換、量子化など一連の手順を行うことができる。エンコードされたデータ(エンコードされたビデオ/画像情報)はビットストリーム形式で出力される。
送信部は、ビットストリーム形態で出力されたエンコードされたビデオ/画像情報又はデータをファイル又はストリーミング形態でデジタル格納媒体又はネットワークを介して受信デバイスの受信部に伝達する。デジタル格納媒体は、USB、SD、CD、DVD、ブルーレイ、HDD、SSDなどの多様な格納媒体を含む。送信部は、予め決められたファイルフォーマットによりメディアファイルを生成するためのエレメントを含み、放送/通信ネットワークを介する送信のためのエレメントを含む。受信機は、ビットストリームを抽出してデコード装置に伝達する。
デコード装置は、エンコード装置の動作に対応する逆量子化、逆変換、予測などの一連の手順を行ってビデオ/画像をデコードする。
レンダラーは、デコードされたビデオ/画像をレンダリングする。レンダリングされたビデオ/画像は、ディスプレイ部を介して表示される。
図36は、本発明が適用される実施形態であって、コンテンツストリーミングシステムの構造図である。
本発明が適用されるコンテンツストリーミングシステムは、エンコードサーバ、ストリーミングサーバ、ウェブサーバ、メディア格納所、ユーザ装置及びマルチメディア入力装置を含む。
エンコードサーバは、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置から入力されたコンテンツをデジタルデータに圧縮してビットストリームを生成し、これをストリーミングサーバに送信する役割を果たす。他の例として、スマートフォン、カメラ、カムコーダなどのマルチメディア入力装置がビットストリームを直接生成する場合、エンコードサーバは省略されてもよい。
ビットストリームは、本発明が適用されるエンコード方法又はビットストリーム生成方法により生成され、ストリーミングサーバは、ビットストリームを送信又は受信する過程で一時的にビットストリームを格納することができる。
ストリーミングサーバは、ウェブサーバを介するユーザ要求に基づいてマルチメディアデータをユーザ装置に送信し、前記ウェブサーバは、ユーザにどのようなサービスがあるかを知らせる媒体としての役割を果たす。ユーザがウェブサーバにご希望のサービスを要求すると、ウェブサーバはこれをストリーミングサーバに伝達し、ストリーミングサーバはユーザにマルチメディアデータを送信する。ここで、コンテンツストリーミングシステムは別途の制御サーバを含んでもよく、この場合、制御サーバは、コンテンツストリーミングシステム内の各装置間の命令/応答を制御する役割を果たす。
ストリーミングサーバは、メディア格納所及び/又はエンコードサーバからコンテンツを受信する。例えば、エンコードサーバからコンテンツを受信する場合、コンテンツをリアルタイムに受信できる。この場合、円滑なストリーミングサービスを提供するために、ストリーミングサーバはビットストリームを一定時間格納することができる。
ユーザ装置の例としては、携帯電話、スマートフォン(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 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)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどにより実現されることができる。
ファームウェアやソフトウェアによる実現の場合、本発明の一実施形態は、以上で説明した機能または動作を実行するモジュール、プロシージャ、関数などの形態で実現されることができる。ソフトウェアコードは、メモリに貯蔵されてプロセッサによって駆動されることができる。前記メモリは、前記プロセッサの内部または外部に位置して、既に公知の多様な手段により、前記プロセッサとデータを送受信することができる。
本発明は、本発明の必須的特徴を逸脱しない範囲で他の特定の形態で具体化されることができることは、当業者に自明である。したがって、前述した詳細な説明は、すべての面で制限的に解釈してはならなく、例示的なものとみなされるべきである。本発明の範囲は、添付された請求項の合理的解釈によって決定されるべきであり、本発明の等価的範囲内でのすべての変更は、本発明の範囲に含まれる。