以下、本発明に係る好ましい実施形態を添付された図面を参照して詳細に説明する。添付された図面とともに以下に開示される詳細な説明は、本発明の例示的な実施形態を説明しようとするものであり、本発明が実施され得る唯一の実施形態を表そうとするものではない。以下の詳細な説明は、本発明の完全な理解を提供するために具体的な細部事項を含む。しかしながら、当業者は、本発明がこのような具体的な細部事項がなくとも実施され得ることが分かる。
いくつかの場合、本発明の概念が曖昧になることを避けるために、公知の構造及び装置は省略されるか、各構造及び装置の核心機能を中心としたブロック図形式で図示されることができる。
合わせて、本発明で使用される用語は、なるべく現在広く使用される一般的な用語を選択したが、特定の場合は、出願人が任意に選定した用語を使用して説明する。そのような場合には、当該部分の詳細説明でその意味を明確に記載するので、本発明の説明で使用された用語の名称だけで単純に解釈されてはならず、その当該用語の意味まで把握して解釈されなければならないことを明かしておく。
以下の説明で使用される特定用語等は、本発明の理解を助けるために提供されたものであって、このような特定用語の使用は、本発明の技術的思想を逸脱しない範囲で他の形態に変更されることができる。例えば、信号、データ、サンプル、ピクチャー、フレーム、ブロックなどの場合、各コーディング過程で適宜代替されて解釈され得るであろう。
以下、本明細書において「ブロック」または「ユニット」は、予測、変換及び/又は量子化などのようなエンコード/デコードの過程が行われる単位を意味し、サンプル(または、画素、ピクセル)の多次元配列で構成されることができる。
「ブロック」または「ユニット」は、輝度(luma)成分に対するサンプルの多次元配列を意味することができ、色差(chroma)成分に対するサンプルの多次元配列を意味することもできる。また、輝度(luma)成分に対するサンプルの多次元配列と色差(chroma)成分に対するサンプルの多次元配列とを全て含むものを総称することもできる。
例えば、「ブロック」または「ユニット」は、エンコード/デコードの実行対象になるサンプルの配列を意味するコーディングブロック(CB:Coding Block)、複数のコーディングブロックで構成されるコーディングツリーブロック(CTB:Coding Tree Block)、同じ予測が適用されるサンプルの配列を意味する予測ブロック(PB:Prediction Block)(または、予測ユニット(PU:Prediction Unit))、同じ変換が適用されるサンプルの配列を意味する変換ブロック(TB:Transform Block)(または、変換ユニット(TU:Transform Unit))を全て含む意味と解釈されることができる。
また、本明細書で別の言及がない限り、「ブロック」または「ユニット」は、輝度(luma)成分及び/又は色差(chroma)成分に対するサンプルの配列をエンコード/デコードする過程で利用されるシンタックス構造(syntax structure)を含む意味と解釈されることができる。ここで、シンタックス構造は、特定の順序でビットストリーム内に存在する0またはそれ以上のシンタックス要素(syntax element)を意味し、シンタックス要素は、ビットストリーム内で表現されるデータの要素を意味する。
例えば、「ブロック」または「ユニット」は、コーディングブロックCBと当該コーディングブロックCBのエンコードのために利用されるシンタックス構造を含むコーディングユニット(CU:Coding Unit)、複数のコーディングユニットで構成されるコーディングツリーユニット(CU:Coding Tree Unit)、予測ブロックPBと当該予測ブロックPBの予測のために利用されるシンタックス構造を含む予測ユニット(PU:Prediction Unit)、変換ブロックTBと当該変換ブロックTBの変換のために利用されるシンタックス構造を含む変換ユニット(TU:Transform Unit)を全て含む意味と解釈されることができる。
また、本明細書で「ブロック」または「ユニット」は、必ず正方形または長方形の形態のサンプル(または、画素、ピクセル)の配列に限定されるものではなく、3個以上の頂点を有する多角形の形態のサンプル(または、画素、ピクセル)の配列を意味することもできる。この場合、ポリゴン(Polygon)ブロックまたはポリゴンユニットと呼ばれることもできる。
また、以下、本明細書において、ピクセル又は画素などをサンプルと総称する。そして、サンプルを用いるというのは、ピクセル値又は画素値等を用いるということを意味し得る。
また、以下、本明細書で提案する技術が適用される現在ブロックは、別途の言及がない限り、非正方形のブロックを示す。
図1は、本発明が適用される実施形態であって、静止画または動画信号のエンコードが行われるエンコーダの概略的なブロック図を示す。
図1に示すように、エンコーダ100は、画像分割部110、減算器115、変換部120、量子化部130、逆量子化部140、逆変換部150、フィルタリング部160、復号ピクチャーバッファ(DPB:Decoded Picture Buffer)170、予測部180、及びエントロピーエンコード部190を備えて構成されることができる。そして、予測部180は、インター予測部181、イントラ予測部182を備えて構成されることができる。
画像分割部110は、エンコーダ100に入力された入力画像信号(Input video signal)(又は、ピクチャー、フレーム)を一つ以上の処理ユニットに分割する。
減算器115は、入力画像信号で予測部180(即ち、インター予測部181又はイントラ予測部182)から出力された予測信号(prediction signal)(又は予測ブロック)を減算し、差分信号(residual signal)(又は差分ブロック)を生成する。生成された差分信号(又は差分ブロック)は変換部120に送信される。
変換部120は、差分信号(又は差分ブロック)に変換技法(例えば、DCT(Discrete Cosine Transform)、DST(Discrete Sine Transform)、GBT(Graph−Based Transform)、KLT(Karhunen−Loeve transform)等)を適用し、変換係数(transform coefficient)を生成する。このとき、変換部120は、差分ブロックに適用された予測モードと差分ブロックの大きさによって決定された変換技法を用いて変換を行うことによって、変換係数を生成することができる。
量子化部130は変換係数を量子化してエントロピーエンコーディング部190に送信し、エントロピーエンコーディング部190は、量子化された信号(quantized signal)をエントロピーコーディングし、ビットストリームで出力する。
一方、量子化部130から出力された量子化された信号(quantized signal)は、予測信号を生成するために用いられることができる。例えば、量子化された信号(quantized signal)は、ループ内の逆量子化部140及び逆変換部150を介して逆量子化及び逆変換を適用することによって差分信号を復元することができる。復元された差分信号をインター予測部181またはイントラ予測部182から出力された予測信号(prediction signal)に足すことにより、復元信号(reconstructed signal)(または、復元ブロック)が生成され得る。
一方、上記のような圧縮過程で隣接したブロックが互いに異なる量子化パラメータにより量子化されることで、ブロック境界が見える劣化が発生し得る。このような現象をブロッキング劣化(blocking artifacts)といい、これは、画質を評価する重要な要素のうちの1つである。このような劣化を減らすために、フィルタリング過程を行うことができる。このようなフィルタリング過程を介してブロッキング劣化を除去するとともに、現在ピクチャーに対する誤差を減らすことにより、画質を向上させることができるようになる。
フィルタリング部160は、復元信号にフィルタリングを適用して、これを再生装置に出力するか、復号ピクチャーバッファ170に送信する。復号ピクチャーバッファ170に送信されたフィルタリングされた信号は、インター予測部181で参照ピクチャーとして使用されることができる。このように、フィルタリングされたピクチャーを画面間予測モードで参照ピクチャーとして用いることにより、画質だけでなく、符号化効率も向上させることができる。
復号ピクチャーバッファ170は、フィルタリングされたピクチャーをインター予測部181での参照ピクチャーとして使用するために格納することができる。
インター予測部181は、復元ピクチャー(reconstructed picture)を参照して時間的重複性及び/又は空間的重複性を除去するために、時間的予測及び/又は空間的予測を行う。
ここで、予測を行うために用いられる参照ピクチャーは、以前の時間に符号化/復号の際、ブロック単位に量子化と逆量子化を経て変換された信号であるから、ブロッキングアーティファクト(blocking artifact)やリンギングアーティファクト(ringing artifact)が存在し得る。
補間フィルタは、復元ピクチャー(reconstructed picture)に適用され、予測の精密度を向上させることができる。例えば、インター予測部181は、整数ピクセルに補間フィルタを適用して補間ピクセルを生成し、補間ピクセル(interpolated pixels)で構成された補間ブロック(interpolated block)を予測ブロック(prediction block)として用いて予測を行うことができる。
イントラ予測部182は、現在符号化を進行しようとするブロックの周辺にあるサンプルを参照して現在ブロックを予測する。イントラ予測部182は、イントラ予測を行うために次のような過程を行い得る。まず、予測信号を生成するために必要な参照サンプルを準備し得る。そして、準備された参照サンプルを用いて予測信号を生成し得る。また、予測モードを符号化することになる。このとき、参照サンプルは、参照サンプルのパディング及び/又は参照サンプルのフィルタリングを通じて準備され得る。参照サンプルは、予測及び復元の過程を経たため、量子化エラーが存在し得る。従って、このようなエラーを減らすために、イントラ予測に用いられる各予測モードに対して参照サンプルのフィルタリング過程が行われ得る。
インター予測部181又は前記イントラ予測部182を介して生成された予測信号(prediction signal)(又は予測ブロック)は、復元信号(又は復元ブロック)を生成するために用いられてもよく、差分信号(又は差分ブロック)を生成するために用いられてもよい。
図2は、本発明が適用される実施形態であって、静止画または動画信号のエンコードが行われるデコーダの概略的なブロック図を示す。
図2に示すように、デコーダ200は、エントロピーデコード部210、逆量子化部220、逆変換部230、加算器235、フィルタリング部240、復号ピクチャーバッファ(DPB:Decoded Picture Buffer Unit)250、予測部260を備えて構成されることができる。そして、予測部260は、インター予測部261及びイントラ予測部262を備えて構成されることができる。
そして、デコーダ200を介して出力された復元画像信号(reconstructed video signal)は、再生装置を介して再生されることができる。
デコーダ200は、図1のエンコーダ100から出力された信号(すなわち、ビットストリーム)を受信し、受信された信号は、エントロピーデコード部210を介してエントロピーデコードされる。
逆量子化部220では、量子化ステップサイズ情報を利用してエントロピーデコードされた信号から変換係数(transform coefficient)を取得する。
逆変換部230では、逆変換技法を適用して変換係数を逆変換して差分信号(residual signal)(または、差分ブロック)を取得するようになる。
加算器235は、獲得された差分信号(又は差分ブロック)を予測部260(即ち、インター予測部261又はイントラ予測部262)から出力された予測信号(prediction signal)(又は予測ブロック)に足すことによって、復元信号(reconstructed signal)(又は復元ブロック)が生成される。
フィルタリング部240は、復元信号(reconstructed signal)(または、復元ブロック)にフィルタリングを適用して、これを再生装置に出力するか、復号ピクチャーバッファ部250に送信する。復号ピクチャーバッファ部250に送信されたフィルタリングされた信号は、インター予測部261で参照ピクチャーとして使用されることができる。
本明細書において、エンコーダ100のフィルタリング部160、インター予測部181、及びイントラ予測部182で説明された実施形態は、各々デコーダのフィルタリング部240、インター予測部261、及びイントラ予測部262にも同様に適用されることができる。
一般に、静止画または動画圧縮技術(例えば、HEVC)では、ブロック基盤の画像圧縮方法を利用する。ブロック基盤の画像圧縮方法は、画像を特定ブロック単位に分けて処理する方法であって、メモリ使用と演算量を減少させることができる。
図3は、本発明に適用され得るコーディングユニットの分割構造を説明するための図である。
エンコーダは、1つの画像(または、ピクチャー)を四角形の形態のコーディングツリーユニット(CTU:Coding Tree Unit)単位に分割する。そして、ラスタースキャン順序(raster scanorder)にしたがって1つのCTUずつ順次エンコードする。
HEVCでCTUのサイズは、64×64、32×32、16×16のうち、いずれか1つに決められることができる。エンコーダは、入力された画像の解像度または入力された画像の特性などによってCTUのサイズを選択して使用することができる。CTUは、輝度(luma)成分に対するコーディングツリーブロック(CTB:Coding Tree Block)と、これに対応する2つの色差(chroma)成分に対するCTBを含む。
1つのCTUは、クアッドツリー(Quad−tree)構造に分割されることができる。すなわち、1つのCTUは、正方形の形態を有しながら半分の水平サイズ(half horizontal size)及び半分の垂直サイズ(half vertical size)を有する4個のユニットに分割されて、コーディングユニット(CU:Coding Unit)が生成され得る。このようなクアッドツリー構造の分割は、再帰的に行われることができる。すなわち、CUは、1つのCTUからクアッドツリー構造で階層的に分割される。
CUは、入力画像の処理過程、例えば、イントラ(intra)/インター(inter)予測が行われるコーディングの基本単位を意味する。CUは、輝度(luma)成分に対するコーディングブロック(CB:Coding Block)と、これに対応する2つの色差(chroma)成分に対するCBを含む。HEVCでCUのサイズは、64×64、32×32、16×16、8×8のうち、いずれか1つに決められることができる。
図3に示すように、クアッドツリーのルートノード(root node)は、CTUと関連する。クアッドツリーは、リーフノード(leaf node)に到達するまで分割され、リーフノードは、CUに該当する。
より具体的に説明すれば、CTUは、ルートノード(root node)に該当し、最も小さい深さ(depth)(すなわち、depth=0)値を有する。入力画像の特性に応じてCTUが分割されないことがあり、この場合、CTUは、CUに該当する。
CTUは、クアッドツリー形態に分割されることができ、その結果、深さ1(depth=1)である下位ノードが生成される。そして、1の深さを有する下位ノードでそれ以上分割されないノード(すなわち、リーフノード)は、CUに該当する。例えば、図3(b)においてノードa、b及びjに対応するCU(a)、CU(b)、CU(j)は、CTUで1回分割され、1の深さを有する。
1の深さを有するノードのうち、少なくともいずれか1つは、再度クアッドツリー形態に分割されることができ、その結果、深さ2(すなわち、depth=2)である下位ノードが生成される。そして、2の深さを有する下位ノードでそれ以上分割されないノード(すなわち、リーフノード)は、CUに該当する。例えば、図3(b)においてノードc、h、及びiに対応するCU(c)、CU(h)、CU(i)は、CTUで2回分割され、2の深さを有する。
また、2の深さを有するノードのうち、少なくともいずれか1つは、再度クアッドツリー形態に分割されることができ、その結果、深さ3(すなわち、depth=3)である下位ノードが生成される。そして、3の深さを有する下位ノードでそれ以上分割されないノード(すなわち、リーフノード)は、CUに該当する。例えば、図3(b)においてノードd、e、f、gに対応するCU(d)、CU(e)、CU(f)、CU(g)は、CTUで3回分割され、3の深さを有する。
エンコーダでは、ビデオ画像の特性(例えば、解像度)に応じて、あるいは符号化の効率を考慮してCUの最大サイズまたは最小サイズを決定できる。そして、これに関する情報またはこれを導くことができる情報がビットストリームに含まれ得る。最大サイズを有するCUを最大コーディングユニット(LCU:Largest Coding Unit)と呼び、最小サイズを有するCUを最小コーディングユニットSCU:Smallest Coding Unit)と呼ぶことができる。
また、ツリー構造を有するCUは、予め決められた最大深さ情報(または、最大レベル情報)を有して階層的に分割されることができる。そして、それぞれの分割されたCUは、深さ情報を有することができる。深さ情報は、CUの分割された回数及び/又は程度を表すので、CUのサイズに関する情報を含むこともできる。
LCUがクアッドツリー形態に分割されるので、LCUのサイズ及び最大深さ情報を利用すれば、SCUのサイズを求めることができる。または逆に、SCUのサイズ及びツリーの最大深さ情報を利用すれば、LCUのサイズを求めることができる。
1つのCUに対して、当該CUが分割されるか否かを表す情報(例えば、分割CUフラグ(split_cu_flag))がデコーダに伝達され得る。この分割モードは、SCUを除いた全てのCUに含まれている。例えば、分割可否を表すフラグの値が「1」であれば、当該CUはさらに4個のCUに分けられ、分割可否を表すフラグの値が「0」であれば、当該CUはそれ以上分けられず、当該CUに対する処理過程が行われ得る。
上述のように、CUは、イントラ予測またはインター予測が行われるコーディングの基本単位である。HEVCは、入力画像をより効果的にコーディングするために、CUを予測ユニット(PU:Prediction Unit)単位に分割する。
PUは、予測ブロックを生成する基本単位であって、1つのCU内でもPU単位に互いに異なるように予測ブロックを生成できる。ただし、1つのCU内に属したPUなどは、イントラ予測とインター予測とが混合されて使用されず、1つのCU内に属したPUなどは、同じ予測方法(すなわち、イントラ予測あるいはインター予測)によりコーディングされる。
PUは、クアッドツリー構造に分割されず、1つのCUで予め決められた形態で1回分割される。これについて、下記の図面を参照して説明する。
図4は、本発明に適用され得る予測ユニットを説明するための図である。
PUは、PUが属するCUのコーディングモードとしてイントラ予測モードが使用されるか、インター予測モードが使用されるかによって異なるように分割される。
図4(a)は、イントラ予測モードが使用される場合のPUを例示し、図4(b)は、インター予測モードが使用される場合のPUを例示する。
図4(a)に示すように、1つのCUのサイズが2N×2N(N=4、8、16、32)である場合を仮定すれば、1つのCUは、2つのタイプ(すなわち、2N×2NまたはN×N)に分割されることができる。
ここで、2N×2N形態のPUに分割される場合、1つのCU内に1つのPUだけが存在することを意味する。
それに対し、N×N形態のPUに分割される場合、1つのCUは、4個のPUに分割され、各PU単位別に互いに異なる予測ブロックが生成される。ただし、このようなPUの分割は、CUの輝度成分に対するCBのサイズが最小サイズである場合(すなわち、CUがSCUである場合)にのみ行われることができる。
図4(b)に示すように、1つのCUのサイズが2N×2N(N=4、8、16、32)である場合を仮定すれば、1つのCUは、8つのPUタイプ(すなわち、2N×2N、N×N、2N×N、N×2N、nL×2N、nR×2N、2N×nU、2N×nD)に分類されることができる。
イントラ予測と同様に、N×N形態のPU分割は、CUの輝度成分に対するCBのサイズが最小サイズである場合(すなわち、CUがSCUである場合)にのみ行われることができる。
インター予測では、横方向に分割される2N×N形態及び縦方向に分割されるN×2N形態のPU分割を支援する。
また、非対称動き分割(AMP:Asymmetric Motion Partition)形態であるnL×2N、nR×2N、2N×nU、2N×nD形態のPU分割を支援する。ここで、「n」は、2Nの1/4の値を意味する。ただし、AMPは、PUが属したCUが最小サイズのCUである場合、使用されることができない。
1つのCTU内の入力画像を効率的に符号化するために、コーディングユニットCU、予測ユニットPU、変換ユニットTUの最適な分割構造は、下記のような実行過程を経て最小レート歪み(Rate−Distortion)値に基づいて決定されることができる。例えば、64×64CTU内の最適なCU分割過程を説明すれば、64×64サイズのCUから8×8サイズのCUまでの分割過程を経ながら、レート歪み費用を計算できる。具体的な過程は、次のとおりである。
1)64×64サイズのCUに対してインター/イントラ予測、変換/量子化、逆量子化/逆変換、及びエントロピーエンコード実行を介して最小のレート歪み値を発生させる最適なPUとTUの分割構造を決定する。
2)64×64CUを32×32サイズのCU4個に分割し、各32×32CUに対して最小のレート歪み値を発生させる最適なPUとTUの分割構造を決定する。
3)32×32CUを16×16サイズのCU4個に再度分割し、各16×16CUに対して最小のレート歪み値を発生させる最適なPUとTUの分割構造を決定する。
4)16×16CUを8×8サイズのCU4個に再度分割し、各8×8CUに対して最小のレート歪み値を発生させる最適なPUとTUの分割構造を決定する。
5)上記の3)の過程で算出した16×16CUのレート歪み値と、上記の4)の過程で算出した4個8×8CUのレート歪み値との合計を比較して、16×16ブロック内で最適なCUの分割構造を決定する。この過程を残りの3個の16×16CUなどに対しても同様に行う。
6)上記の2)の過程で計算された32×32CUのレート歪み値と、上記の5)の過程で取得した4個の16×16CUのレート歪み値との合計を比較して、32×32ブロック内で最適なCUの分割構造を決定する。この過程を残りの3個の32×32CUなどに対しても同様に行う。
7)最後に、上記の1)の過程で計算された64×64CUのレート歪み値と、上記の6)の過程で取得した4個の32×32CUのレート歪み値との合計を比較して、64×64ブロック内で最適なCUの分割構造を決定する。
イントラ予測モードにおいて、PU単位に予測モードが選択され、選択された予測モードに対して実際TU単位に予測と再構成が行われる。
TUは、実際予測と再構成が行われる基本単位を意味する。TUは、輝度(luma)成分に対する変換ブロック(TB:Transform Block)と、これに対応する2つの色差(chroma)成分に対するTBを含む。
前述した図3の例示において1つのCTUがクアッドツリー構造に分割されてCUが生成されるように、TUは、コーディングしようとする1つのCUからクアッドツリー構造に階層的に分割される。
TUは、クアッドツリー構造に分割されるので、CUから分割されたTUは再度より小さい下位TUに分割されることができる。HEVCでは、TUのサイズは、32×32、16×16、8×8、4×4のうち、いずれか1つに決められることができる。
さらに、図3に示すように、クアッドツリーのルートノード(root node)は、CUと関連すると仮定する。クアッドツリーは、リーフノード(leaf node)に到達するまで分割され、リーフノードは、TUに該当する。
より具体的に説明すれば、CUは、ルートノード(root node)に該当し、最も小さい深さ(depth)(すなわち、depth=0)値を有する。入力画像の特性に応じてCUが分割されないこともあり、この場合、CUは、TUに該当する。
CUは、クアッドツリー形態に分割されることができ、その結果、深さ1(depth=1)である下位ノードが生成される。そして、1の深さを有する下位ノードでそれ以上分割されなかったノード(すなわち、リーフノード)は、TUに該当する。例えば、図3(b)においてノードa、b、及びjに対応するTU(a)、TU(b)、TU(j)は、CUで1回分割され、1の深さを有する。
1の深さを有するノードのうち、少なくともいずれか1つは、再度クアッドツリー形態に分割されることができ、その結果、深さ2(すなわち、depth=2)である下位ノードが生成される。そして、2の深さを有する下位ノードでそれ以上分割されなかったノード(すなわち、リーフノード)は、TUに該当する。例えば、図3(b)においてノードc、h、及びiに対応するTU(c)、TU(h)、TU(i)は、CUで2回分割され、2の深さを有する。
また、2の深さを有するノードのうち、少なくともいずれか1つは、再度クアッドツリー形態に分割されることができ、その結果、深さ3(すなわち、depth=3)である下位ノードが生成される。そして、3の深さを有する下位ノードでそれ以上分割されなかったノード(すなわち、リーフノード)は、CUに該当する。例えば、図3(b)においてノードd、e、f、gに対応するTU(d)、TU(e)、TU(f)、TU(g)は、CUで3回分割され、3の深さを有する。
ツリー構造を有するTUは、予め決められた最大深さ情報(または、最大レベル情報)を有して階層的に分割されることができる。そして、それぞれの分割されたTUは、深さ情報を有することができる。深さ情報は、TUの分割された回数及び/又は程度を表すので、TUのサイズに関する情報を含むこともできる。
1つのTUに対して、当該TUが分割されるか否かを表す情報(例えば、分割TUフラグ(split_transform_flag))がデコーダに伝達され得る。この分割情報は、最小サイズのTUを除いた全てのTUに含まれている。例えば、分割可否を表すフラグの値が「1」であれば、当該TUは、さらに4個のTUに分けられ、分割可否を表すフラグの値が「0」であれば、当該TUは、それ以上分けられない。
予測(prediction)
デコーディングが実行される現在処理ユニットを復元するために、現在処理ユニットが含まれた現在ピクチャー又は他のピクチャーのデコーディングされた部分を用いることができる。
復元に現在ピクチャーのみを用いる、即ち、画面内予測のみを行うピクチャー(スライス)をイントラピクチャー又はIピクチャー(スライス)、各ユニットを予測するために最大の一つの動きベクトル及び参照インデックスを用いるピクチャー(スライス)を予測ピクチャー(predictive picture)又はPピクチャー(スライス)、最大の二つの動きベクトル及び参照インデックスを用いるピクチャー(スライス)を対予測ピクチャー(Bi−predictive picture)又はBピクチャー(スライス)と称し得る。
イントラ予測は、同一のデコーディングされたピクチャー(又はスライス)のデータ要素(例えば、サンプル値等)から現在処理ブロックを導出する予測方法を意味する。即ち、現在ピクチャー内の復元された領域を参照し、現在処理ブロックのピクセル値を予測する方法を意味する。
インター予測は、現在ピクチャー以外のピクチャーのデータ要素(例えば、サンプル値又は動きベクトル等)に基づいて、現在処理ブロックを導出する予測方法を意味する。即ち、現在ピクチャー以外の復元された他のピクチャー内の復元された領域を参照し、現在処理ブロックのピクセル値を予測する方法を意味する。
以下、イントラ予測についてより詳細に見る。
イントラ予測(Intra prediction)(又は画面内予測)
図5は、本発明が適用される実施例であって、イントラ予測方法を例示する図である。
図5を参照すると、デコーダは現在処理ブロックのイントラ予測モードを導出(derivation)する(S501)。
イントラ予測においては、予測モードに応じて、予測に用いられる参照サンプルの位置に対する予測方向を有し得る。予測方向を有するイントラ予測モードをイントラ方向性予測モード(Intra_Angular prediction mode)と称する。反面、予測方向を有さないイントラ予測モードとして、イントラプラナー(INTRA_PLANAR)予測モード、イントラDC(INTRA_DC)予測モードがある。
下記の表1は、イントラ予測モードと関連する名称について例示する。
イントラ予測においては、導出される予測モードに基づき、現在処理ブロックに対する予測を行う。予測モードに応じて、予測に用いられる参照サンプルと具体的な予測方法が変わるので、現在ブロックがイントラ予測モードでエンコーディングされた場合、デコーダは予測を行うために現在ブロックの予測モードを導出する。
デコーダは、現在処理ブロックの周辺サンプル(neighboring samples)が予測に用いられ得るか確認し、予測に用いるべき参照サンプルを構成する(S502)。
イントラ予測において、現在処理ブロックの周辺サンプルは、nS×nSサイズの現在処理ブロックの左側(left)境界に隣接したサンプル及び左下側(bottom−left)に隣接する合計2×nS個のサンプル、現在処理ブロックの上側(top)境界に隣接したサンプル及び右上側(top−right)に隣接する合計2×nS個のサンプル及び現在処理ブロックの左上側(top−left)に隣接する1個のサンプルを意味する。
しかし、現在処理ブロックの周辺サンプルのうち一部はまだデコーディングされていないか、又は利用可能でないことがある。この場合、デコーダは利用可能なサンプルで利用可能ではないサンプルを代替(substitution)し、予測に用いるべき参照サンプルを構成し得る。
デコーダはイントラ予測モードに基づいて参照サンプルのフィルタリングを実行することができる(S503)。
参照サンプルのフィルタリングの実行可否は、現在処理ブロックのサイズに基づいて決定され得る。また、参照サンプルのフィルタリング方法は、エンコーダから伝達されるフィルタリングフラグによって決定され得る。
デコーダはイントラ予測モードと参照サンプルに基づいて、現在処理ブロックに対する予測ブロックを生成する(S504)。即ち、デコーダは、イントラ予測モード導出段階(S501)で導出されたイントラ予測モードと参照サンプル構成段階(S502)と参照サンプルのフィルタリング段階(S503)を通じて獲得した参照サンプルに基づいて、現在処理ブロックに対する予測ブロックを生成(即ち、現在処理ブロック内の予測サンプルを生成)する。
現在処理ブロックがINTRA_DCモードでエンコーディングされた場合、処理ブロック間の境界の不連続性(discontinuity)を最小化するために、S504の段階で予測ブロックの左側(left)境界サンプル(即ち、左側境界に隣接した予測ブロック内のサンプル)と上側(top)境界サンプル(即ち、上側境界に隣接した予測ブロック内のサンプル)をフィルタリングすることができる。
また、S504の段階において、イントラ方向性予測モードのうち、垂直方向モード(vertical mode)及び水平方向モード(horizontal mode)に対しても、INTRA_DCモードと同様に左側境界サンプル又は上側境界サンプルにフィルタリングを適用することができる。
より具体的に見ると、現在処理ブロックが垂直方向モード(vertical mode)又は水平方向モード(horizontal mode)でエンコーディングされた場合、予測方向に位置する参照サンプルに基づいて予測サンプルの値を導出することができる。このとき、予測ブロックの左側境界サンプル又は上側境界サンプルのうち、予測方向に位置していない境界サンプルが予測に用いられない参照サンプルと隣接し得る。即ち、予測に用いられる参照サンプルとの距離よりも、予測に用いられない参照サンプルとの距離が遥かに近いことがある。
従って、デコーダは、イントラ予測方向が垂直方向なのか水平方向なのかに応じて、適応的に左側境界サンプル又は上側境界サンプルにフィルタリングを適用し得る。即ち、イントラ予測方向が垂直方向である場合、左側境界サンプルにフィルタリングを適用し、イントラ予測方向が水平方向である場合、上側境界サンプルにフィルタリングを適用し得る。
図6は、イントラ予測モードに係る予測方向を例示する。
前記で説明したように、HEVCは画面内予測のために33個の方向性予測方法と2個の無方向性予測方法、合計35個の予測方法を用いて、現在ブロックの予測ブロックが生成される。
33個の方向性予測モードの場合、参照サンプルから予測サンプルを計算するとき、各々の方向性を考慮し、参照サンプルの値が該当予測サンプルに複写される。
反面、2個の無方向性予測方法であるDCモードとプラナー(Planar)モードの場合、各々周辺の隣接する参照サンプルの平均値と加重の和で予測サンプルが計算される。
図7は、本発明が適用され得る実施例であって、QTBT(QuadTree BinaryTree、以下‘QTBT’という)ブロックの分割構造を説明するための図である。
クアッドツリーとバイナリツリー(QTBT:Quad−Tree Binary−Tree)
QTBTは、クアッドツリー(quadtree)構造とバイナリツリー(binarytree)構造とが結合されたコーディングブロックの構造を言う。具体的に、QTBTブロックの分割構造では、画像をCTU単位でコーディングし、CTUはクアッドツリー(quadtree)の形態で分割され、クアッドツリーのリーフノード(leaf node)はさらにバイナリツリー(binarytree)の形態で分割される。
以下では、図7を参照して、QTBT構造とこれを支援する分割フラグ(split flag)のシンタックスについて説明する。
前記図7を参照すると、現在ブロックはQTBT構造に分割され得る。即ち、CTUは、まず、クアッドツリーの形態で階層的に分割され得る。そして、クアッドツリーの形態でこれ以上分割されないクアッドツリーのリーフノード(leaf node)は、バイナリツリーの形態で階層的に分割され得る。
エンコーダは、QTBT構造でクアッドツリーの分割可否の決定のために分割フラグをシグナリングし得る。このとき、クアッドツリーの分割は、MinQTLumaISlice、MinQTChromaISlice又はMinQTNonISliceの値に応じて調整(又は制限)され得る。ここで、MinQTLumaISliceは、I−スライスでルマ(輝度、luma)成分のクアッドツリーのリーフノードの最小サイズを示し、MinQTLumaChromaISliceは、I−スライスでクロマ(彩度、chroma)成分のクアッドツリーのリーフノードの最小サイズを示し、MinQTNonISliceは、非I−スライス(non I−slice)でクアッドツリーのリーフノードの最小サイズを示す。
QTBTのクアッドツリー構造では、I−スライスでルマ成分とクロマ成分が互いに独立した分割構造を有し得る。例えば、QTBT構造でI−スライスの場合、ルマ成分とクロマ成分の分割構造は互いに異なって決定され得る。このような分割構造を支援するために、MinQTLumaISliceとMinQTChromaISliceは互いに異なる値を有し得る。
他の例として、QTBTの非I−スライスでクアッドツリー構造はルマ成分とクロマ成分の分割構造が同じように決定され得る。例えば、非I−スライスの場合、ルマ成分とクロマ成分のクアッドツリーの分割構造は、MinQTNonISliceの値に応じて調整され得る。
QTBT構造でクアッドツリーのリーフノードは、バイナリツリーの形態で分割され得る。このとき、バイナリツリーの分割は、MaxBTDepth、MaxBTDepthISliceL及びMaxBTDepthISliceCに応じて調整(又は制限)され得る。ここで、MaxBTDepthは、非I−スライスでクアッドツリーのリーフノードを基準にバイナリツリー分割の最大の深さ(depth)を示し、MaxBTDepthISliceLは、I−スライスでルマ成分のバイナリツリー分割の最大の深さを示し、MaxBTDepthISliceCは、I−スライスでクロマ成分のバイナリツリー分割の最大の深さを示す。
また、QTBTのI−スライスでルマ成分とクロマ成分が互いに異なる構造を有し得るため、I−スライスでMaxBTDepthISliceLとMaxBTDepthISliceCは互いに異なる値を有し得る。
QTBTの分割構造の場合、クアッドツリー構造とバイナリツリー構造を共に用いてもよく、この場合、次のような規則が適用され得る。
第一に、MaxBTSizeはMaxQTSizeよりも小さいか同じである。ここで、MaxBTSizeはバイナリツリー分割の最大サイズを示し、MaxQTSizeはクアッドツリー分割の最大サイズを示す。
第二に、QTのリーフノード(Leaf node)がBTのルート(root)になる。
第三に、一度BTに分割されると、再度QTに分割されることができない。
第四に、BTは垂直分割(Vertical Split)及び水平分割(Horizontal Split)を定義する。
第五に、MaxQTDepth、MaxBTDepthを予め定義する。ここで、MaxQTDepthはクアッドツリー分割の最大深さ(depth)を示し、MaxBTDepthはバイナリツリー分割の最大深さ(depth)を示す。
第六に、MaxBTSize、MinQTSizeはスライスのタイプ(slice type)に応じて変わり得る。
図8は、本発明の一実施例に係る、現在処理ブロックが正方形のブロックである場合、前記現在処理ブロックと現在処理ブロックの予測ブロックを生成するための参照サンプルを示す。
前述した図7を参照すると、QTBT分割構造において、現在処理ブロック(コーディングブロック)は正方形のブロック又は非正方形のブロックに該当し得る。正方形のブロックは、横の長さと縦の長さが同一である正四角形のブロックであり、非正方形のブロックは、横の長さと縦の長さが異なる長方形のブロックである。以下、現在処理ブロックが正方形のブロックである場合をまず見る。
図8において、現在処理ブロック(以下、便宜のために現在ブロックと称する、8010)は、N×Nサイズの正方形のブロックである。一例として、図8に図示されたブロックの場合、Nは4に該当する。
画面内予測を行う際に参照し得る参照サンプル8020は、現在ブロック8010の隣接サンプルで構成される。図8を参照すると、現在ブロック8010のサイズがN×Nであるとき、参照サンプル8020は、現在ブロック8010の上段の2N個、左側の2N個及び左上段の1個のサンプルを含み得る。即ち、参照サンプル8020は、最大4N+1個のサンプルを含み得る。場合によっては、周辺参照サンプル8020が全て存在しない場合、表現可能なピクセル値の範囲の中間値で全ての参照サンプル8020が満たされ得る。また、周辺の参照サンプル8020のうち一部のみが使用可能である場合、使用可能ではないサンプルを使用可能なサンプルに代替するパディングが行われ得る。
画面内予測において、参照サンプル8020は既に量子化が行われた後に復元されることによって、再構成されたサンプルに該当する。従って、参照サンプル8020は量子化エラーを含む。量子化エラーによる予測誤差を減らすために、参照サンプルのフィルタリング(又は、イントラスムージング)が行われ得る。参照サンプルのフィルタリングはサンプル間の差により派生する予測ブロックの潜在的な自覚的アーティファクト(visual artifact)を事前に防止することができ、このために低域通過フィルタ(Low pass filter)が用いられることができる。
フィルタリングを実行する前、参照サンプル8020は現在ブロック8010のサイズ、予測モード及びピクセル値に応じて予測を行う前にフィルタリングの可否が先に決定される。下記の表2はエンコーダ/デコーダで現在ブロック8010(又は予測ブロック)のサイズとイントラ予測モードによるフィルタリングの実行(適用)可否を示す。下記の表2は、エンコーダ/デコーダに予め定義され得る。
表2において、縦軸の数字0から34は、イントラ予測モードを示し、横軸の4×4、8×8、16×16及び32×32は、現在ブロック8010のサイズを示す。
表2を参照すると、DCモード(モード11)、水平方向モード(horizontal mode、モード10)及び垂直方向モード(vertical mode、モード26)では、現在ブロック8010のサイズに関係なく、フィルタリングが常に実行されない。DCモードの場合、フィルタリングにより参照サンプルの値が歪曲されることを防止するために、参照サンプル8020がフィルタリングされない。
サイズの小さいブロック(一例として、4×4又は8×8)は、ごく一部の予測モードでのみフィルタリングが実行される。ブロックのサイズが大きくなるほど、フィルタリングに対する制限が緩和される。ブロックのサイズが充分に大きい場合(一例として、32×32)には、DCモード、水平方向モード(モード10)及び垂直方向モード(モード26)を除く全てのモードでフィルタリングが実行され得る。また、予測ブロックのサイズ、予測モード及び参照サンプル8020の値等に基づいて、フィルタの種類が決定され得る。
現在ブロック8010の予測ブロックは、現在ブロック8010の参照サンプル8020を用いることによって生成される。以降、デコーダは予測ブロックと送信された残差信号とを結合することによって、現在ブロック8010を復元する。
図9は、本発明の一実施例に係る、現在処理ブロックが非正方形のブロックである場合、前記現在処理ブロックと現在処理ブロックの予測ブロックを生成するための参照サンプルを示す。
図9において、現在ブロックは非正方形のブロック9010である。前述した図7及び図8に関する説明で言及した通り、QTBT分割構造における現在処理ブロックは、非正方形のブロックに該当し得る。一例として、非正方形のブロック9010は、2N×N又は2N×hN(h=half)のサイズ等を有し得る。また、前述した図8に関する説明で見た通り、正方形のブロックは、参照サンプルのフィルタリング可否が現在ブロックのサイズ(即ち、一辺の長さN)に基づいて表2の基準に応じて決定される。しかし、非正方形のブロック9010は、ブロックの横の長さと縦の長さが異なる。従って、非正方形のブロック9010の場合、正方形のブロックと異なり、両辺の長さが異なるので、どの辺の長さを基準に表2によってフィルタリングの実行可否を決定するか曖昧である。
まず、非正方形のブロック9010の参照サンプルを説明する。参照サンプルは、上段(上側)参照サンプル9020及び左側参照サンプル9030を含む。上段参照サンプル9020は、上側境界サンプルとも称してもよく、左側参照サンプル9030は左側境界サンプルとも称してもよい。
上段参照サンプル9020は、現在ブロックの上段に隣接した参照サンプルである。上段参照サンプル9020は、現在ブロックの上段水平エッジ(即ち、上方の横辺)の上側(上方)及び右上側に位置するサンプルを含む。一例として、左上段サンプル(Top−left sample、9040)の位置が[X][Y]=[−1][−1]であるとき、上段参照サンプル9020は、[X][−1]の位置を有する。即ち、上段参照サンプル9020は、現在ブロックの上方に隣接し、参照サンプルが横に配列される。
左側参照サンプル9030は、現在ブロックの左側に隣接した参照サンプルである。左側参照サンプル9030は、現在ブロックの左側垂直エッジ(即ち、左側の縦辺)の左側及び左下段に位置したサンプルを含む。一例として、左上段サンプル9040の位置が[X][Y]=[−1][−1]であるとき、左側参照サンプル9030は[−1][y]の位置を有する。即ち、左側参照サンプル9030は現在ブロックの左側に隣接し、参照サンプルが縦に配列される。
上段参照サンプル9020と左側参照サンプル9030の長さは、現在ブロックと周辺ブロックに基づいて適正な長さに決定され得る。一例として、現在ブロックが2N×Nのサイズを有するとき、上段/左側参照サンプルの最大の長さは、長い辺の長さの2倍である4Nの長さを有し得る。また、上段参照サンプル9020と左側参照サンプル9030の長さは異なり得る。
このとき、左上段サンプル9040は、上段参照サンプル9020又は左側参照サンプル9030のうち一つに含まれて処理され得る。一例として、図9は、左上段サンプル9040が左側参照サンプル9030に含まれていることを示す。左上段サンプル9040は、上段参照サンプル9020に含まれて処理されることもある。
前述した図5に関する説明を参照すると、参照サンプルを用いることによって予測ブロックが生成され、生成された予測ブロックを用いることによって画像を復元するイントラ予測はイントラ予測部によって行われ得る。具体的に、イントラ予測部は現在ブロックのイントラ予測モードを獲得することができ(S501参照)、現在ブロックの隣接サンプルを用いて、現在ブロックの予測ブロックを生成するための参照サンプルを獲得することができる(S502参照)。以降、イントラ予測部は、参照サンプルにフィルタリングを実行するか否かを決定し、フィルタリングを実行するように決定されると参照サンプルをフィルタリングすることができる(S503参照)。以降、イントラ予測部はフィルタリングされない参照サンプル又はフィルタリングされた参照サンプルを用いて、予測ブロックを生成することができる(S504参照)。
以下では、非正方形のブロック9010の参照サンプルのフィルタリング可否及びフィルタの種類を決定する基準を説明する。フィルタリングの可否/フィルタの種類を決定する方式以外のフィルタリング手続は、既存のHEVCフィルタリング方法と同様に行われ得る。デコーダ(画像復号装置)において、イントラ予測モードは因子(factor)としてエンコーダから送信され得る。
以下の実施例は、イントラ予測部がフィルタリングの実行可否を決定する過程及びフィルタの種類を決定する過程で、イントラ予測モードと共に、現在ブロックのパラメータ及び/又は周辺ブロックのパラメータが用いられる。現在ブロックのパラメータとは、現在ブロックと関連したパラメータであり、周辺ブロックのパラメータは、現在ブロックの周辺ブロックと関連したパラメータである。
現在ブロックのパラメータは、(i)現在ブロックの辺(水平エッジ又は垂直エッジ)の長さ、(ii)現在ブロックのサンプル(ピクセル)の数、(iii)現在ブロックの量子化率(QP)及び/又は(4)予測サンプルと参照サンプルとの距離情報等を含む。
周辺ブロックのパラメータは、(i)周辺ブロックの量子化率(QP)、(ii)周辺ブロックの残差係数に関する情報、(iii)周辺ブロックの境界/エッジに関する情報、及び/又は(iv)周辺ブロックの分割情報等を含む。
以下の実施例を用いることによって、非正方形のブロック9010の参照サンプルのフィルタリング可否及び/又はフィルタの種類が決定され得る。
実施例1:現在ブロックの辺の長さを利用
実施例1は、イントラ予測部がフィルタリングの実行可否及び/又はフィルタの種類を決定する過程で、現在ブロックのパラメータを用いる。前記現在ブロックのパラメータは、現在ブロックの辺の長さを含む。また、実施例1は、フィルタリング可否の判断過程で、別途の表(テーブル)を定義せず、正方形のブロックと関連した表に該当する前述した表2を用いる。
現在ブロックのパラメータは、現在ブロックの横辺の長さ(即ち、水平エッジ長)及び/又は縦辺の長さ(即ち、垂直エッジ長)を含み得る。即ち、イントラ予測部は、現在ブロックの辺の長さのうちより長い辺(即ち、より大きな値を有するエッジの長さ)又はより小さい辺(即ち、より小さな値を有するエッジの長さ)に基づいて参照サンプルのフィルタリング可否を決定し得る。現在ブロックの辺の長さは、現在ブロックの一辺に含まれたサンプル(ピクセル又は画素)の個数と対応する。
辺の長さを用いる第一の方法として、イントラ予測部は横辺と縦辺の長さのうちより長い長さを基準にフィルタリング可否を決定し得る。一例として、横辺の長さが8であり、縦辺の長さが16であり、予測モードが14である場合、より長い長さは16であるので、フィルタリング可否は、表2の16×16ブロックの場合と同じ基準で決定される。即ち、表2によって、16×16ブロックは予測モード14で参照サンプルのフィルタリングが実行されるので、8×16ブロックの参照サンプルにフィルタリングが実行される。他の例として、横辺の長さが32、縦辺の長さが8及び予測モードが10である場合、表2の32×32ブロックの基準に応じて32×8ブロックの参照サンプルのフィルタリングは実行されない。フィルタリングを実行するように決定された場合、スムージング(smoothing)フィルタは1次元二項フィルタ(1−Dimensional binomial filter)等が用いられ得る。前記1次元二項フィルタは、1−2−1フィルタ(1−2−1 filter)又は1−4−6−4−1フィルタ(1−4−6−4−1 filter)等を含み得る。
表2を参照すると、予測ブロックのサイズが大きいほどフィルタリングが実行される可能性が増加する。従って、大きい辺の長さを基準にフィルタリングの実行可否を決定する場合、ブロックのサイズが増加するほどスムージングを許可する規則によって参照サンプルがさらにスムージングされ得る。また、現在ブロックがノイズ(noisy)ブロックであるか、予測サンプルにアーティファクト(artifact)が混在している場合、誤差伝播(error propagation)が減少し得る。
辺の長さを用いる第二の方法として、イントラ予測部は横辺と縦辺の長さのうちより短い長さを基準にフィルタリング可否を決定し得る。一例として、横辺の長さが8であり、縦辺の長さが16であり、予測モードが14である場合、より短い長さは8であるので、フィルタリング可否は表2の8×8ブロックと同じ基準で決定される。即ち、表2によって、8×8ブロックは全ての予測モードで参照サンプルのフィルタリングを実行しないので、8×16ブロックの参照サンプルにフィルタリングが実行されない。他の例として、横辺の長さが32、縦辺の長さが8であり、予測モードが2である場合、表2の8×8ブロックによって32×8ブロックの参照サンプルにフィルタリングが実行される。フィルタリングを実行するように決定された場合、スムージング(smoothing)フィルタは1次元二項フィルタ(1−Dimensional binomial filter)等が用いられ得る。前記1次元二項フィルタは、1−2−1フィルタ(1−2−1 filter)又は1−4−6−4−1フィルタ(1−4−6−4−1 filter)等を含み得る。
表2を参照すると、予測ブロックのサイズが小さいほどフィルタリングが実行される可能性が減少する。従って、小さい辺を基準にフィルタリングを適用する否かを決定する場合、サイズが小さいブロックであるほどフィルタリングの適用を制限する規則によってスムージングの効果が遮断され得る。また、参照サンプルの複雑な特性がそのまま予測ブロックに適用されなければならない場合、フィルタリングの可能性を下げることによって、さらに正確な予測サンプルが生成され得る。
前述した実施例1は、フィルタリング可否の判断過程で別途の表(テーブル)を定義せず、正方形のブロックに関する表2を用いる。非正方形のブロック9010の参照サンプルのフィルタリング可否に対する別途のテーブルを定義する場合、これを格納するために追加的なメモリが消費される。実施例1は、非正方形のブロック9010に対する別途の追加的なテーブルを定義せず、非正方形のブロック9010の参照サンプルのフィルタリング可否を決定する過程で正方形のブロックの表を用いることによって、エンコーダとデコーダのメモリを節約することができる。
実施例2:現在ブロックのサンプルの数を利用
実施例2は、イントラ予測部がフィルタリングの実行可否及び/又はフィルタの種類を決定する過程で、現在ブロックのパラメータを用いる。前記現在ブロックのパラメータは、現在ブロックのサンプル(ピクセル)の数を含む。実施例2も実施例1と同様に、フィルタリングの実行可否を判断する過程で表2が用いられる。
現在ブロックに含まれたサンプルの数と同じサンプルの数を有する正方形のブロックが存在する場合、前記正方形のブロックと同じ基準を適用し、フィルタリングの実行可否が決定される。
もし、現在ブロックのサンプルの数と同じサンプルの数を有する正方形のブロックが存在しない場合、現在ブロックのサンプルの数よりも少ないサンプルの数を有する正方形のブロックのうち、最もサイズが大きいブロックを基準にフィルタリングの実行可否が決定される。即ち、異なる方式で説明すると、現在ブロックのサンプルの数と同じサンプルの数を有する正方形のブロックが存在しない場合、現在ブロックの小さい辺の長さを基準に(即ち、小さい辺の長さに対応する正方形のブロックと同じ基準で)フィルタリングの実行可否が決定される。
一例として、現在ブロックの上辺の長さが8であり、左辺の長さが32である場合(即ち、現在ブロックが8×32のブロック)、現在ブロックに含まれたサンプルの数は16×16ブロックに含まれたサンプルの数と同じである。従って、この場合、現在ブロックは16×16ブロックと同じ基準が適用される。もし、予測モードがモード14である場合、表2によって16×16のブロックは参照サンプルのフィルタリングが実行されるので、現在ブロックである32×8のブロックにも参照サンプルのフィルタリングが実行される。
他の例として、現在ブロックの上辺の長さが16であり、左辺の長さが8である場合(即ち、現在ブロックが16×8ブロック)、現在ブロックのサンプルの数と同じサンプルの数を有する正方形のブロックが存在しない。16×8ブロックのピクセルの数は16×16のロックのピクセルの数よりは少なく、8×8ブロックのピクセルの数よりは多い。従って、この場合、現在ブロックの参照サンプルのフィルタリング可否は、8×8ブロックの基準に応じて決定される。表2を参照すると、予測モードが14である場合、8×8ブロックの参照サンプルのフィルタリングが実行されない。従って、現在ブロック(16×8ブロック)の参照サンプルのフィルタリングも実行されない。
フィルタリングを実行するように決定された場合、スムージング(smoothing)フィルタは1次元二項フィルタ(1−Dimensional binomial filter)等が用いられ得る。前記1次元二項フィルタは、1−2−1フィルタ(1−2−1 filter)又は1−4−6−4−1フィルタ(1−4−6−4−1 filter)等を含み得る。
実施例3:現在ブロック/周辺ブロックの量子化パラメータを利用
実施例3は、イントラ予測部がフィルタリングの実行可否及び/又はフィルタの種類を決定する過程で現在ブロック又は周辺ブロックのパラメータを用いる。前記現在/周辺ブロックのパラメータは、現在/周辺ブロックの量子化パラメータを含む。
量子化は、入力データに対して特定範囲の入力値を一つの代表値としてマッピングするものである。一例として、エンコーダで現在ブロックの差分ブロックが周波数領域の信号に変換されることによって、変換ブロックが獲得されてもよく、変換ブロックの係数(変換係数)が量子化されてもよい。
量子化パラメータ(quantization parameter、QP)は、コーディングブロックの量子化率(QP_step)と関連する。量子化率は量子化区間(quantization range)でも表され得る。量子化率が大きくなるほどデータを表現する代表値の数が少なくなり、量子化率を変化させることによって、データの圧縮率が調節され得る。量子化率は実数値であるので、計算の便宜のために、量子化率の代わりに整数値である量子化パラメータが用いられてもよい。一例として、量子化パラメータは0から51までの整数値を有してもよく、これに基づいて現在ブロックまたは周辺ブロックの変換係数が量子化されてもよい。各コーディングブロックの量子化パラメータは、エンコーダからデコーダへ送信され得る。即ち、デコーダは各コーディングブロックの量子化パラメータをパーシングし得る。
実施例3は、現在ブロックの量子化パラメータ(以下、現在ブロックのQP)又は周辺ブロックの量子化パラメータ(以下、周辺ブロックのQP)を基準に、現在ブロックの参照サンプルのフィルタリングの実行可否を決定する。以下で別途の言及がない限り、QPは現在ブロックのQP及び周辺ブロックのQPを全て含む。以下の方法は、現在ブロックのQP又は周辺ブロックのQPに全て適用され得る。
具体的に、現在ブロック又は周辺ブロックのQPが臨界値(QP threshold)より大きい場合(或いは大きいまたは同じである場合)、イントラ予測部は現在ブロックの参照サンプルのフィルタリングを実行するように決定し得る。また、イントラ予測部は、フィルタリングを実行するように決定した場合、フィルタリングの強度の強いフィルタである強いスムージングフィルタ(strong smoothing filter)を適用し得る。
現在ブロック又は周辺ブロックのQPが臨界値よりも小さい(或いは小さいまたは同じである)場合、イントラ予測部は現在ブロックの参照サンプルのフィルタリングを実行しないように決定し得る。但し、イントラ予測部は、QPが臨界値よりも小さい場合にも参照サンプルのフィルタリングを実行するように決定でき、この場合、フィルタリングの強度の弱いフィルタである弱いスムージングフィルタ(weak smoothing filter)を適用し得る。
弱いスムージングフィルタは1次元二項フィルタ(1−Dimensional binomial filter)等が用いられ得る。前記1次元二項フィルタは1−2−1フィルタ(1−2−1 filter)又は1−4−6−4−1フィルタ(1−4−6−4−1 filter)等を含み得る。強いスムージングフィルタとして、平均フィルタ(Average filter)又は異なる種類の線形/非線形加重フィルタ(linear/non−linear−weighting filter)等が用いられ得る。
QP臨界値はエンコーダとデコーダとの間に予め約束する値で定められ得る。また、前記臨界値は、VPS、SPS、PPS、スライスヘッダー又はブロックヘッダーに含まれて、エンコーダからデコーダへ送信され得る。デコーダは送信された臨界値に基づいて参照サンプルのフィルタリング可否及びフィルタの種類を決定し得る。
QPが小さいほどデータを表現する代表値の数が多くなるため、画像の細部的な特性がよりうまく格納される。従って、細密であったり精巧な(即ち、ブロック内サンプル値の変化が大きい)画像にはフィルタリングを弱く適用することによって、予測ブロックの正確度を向上させることができる。また、QPが大きいほど代表値の数が少なくなるので、blocky artifact等のエラーが多く発生する。従って、この場合には、強いフィルタリングを適用することによって、予測ブロックの正確度を向上させることができる。
実施例4:周辺ブロックの残差係数に関する情報を利用
実施例4は、フィルタリングの実行可否及び/又はフィルタの種類を決定する過程で、周辺ブロックのパラメータを用いる。前記周辺ブロックのパラメータは周辺ブロックの残差係数に関する情報を含み、前記残差係数に関する情報は、周辺ブロックの残差係数(residual coefficient)の個数及び/又は周辺ブロックに残差係数が存在するかを示すフラグ(coded block flag、Cbf)を含む。
参照サンプルは現在ブロックの周辺の既に符号化を経て復号されたサンプルで構成される。従って、再構成された参照サンプルが含まれた周辺ブロックは、各々Cbfと残差係数を含む。Cbf及び残差係数の情報は、エンコーダからデコーダへ送信される。
残差係数は残差ブロックが周波数領域に変換された変換ブロックが量子化された以降の係数を示す。残差ブロックは、エンコーダが原本のコーディングブロックから予測ブロックを減算したブロックである。Cbfは周辺ブロックに残差係数が存在するかを示すフラグである。即ち、Cbfは周辺ブロックの変換ブロックが量子化された後に、ブロックに一つ以上の係数(即ち、残差係数)が存在するかを示す。一例として、Cbfが1であると、残差係数が存在するということを意味し得る。
イントラ予測部は周辺ブロックのCbfが、残差係数が存在するということを示すと、参照サンプルのフィルタリングを実行するように決定でき、残差係数が存在しないということを示すと、フィルタリングを実行しないように決定し得る。即ち、残差係数が存在するということは、予測に活用される参照サンプルが複雑であるか、又はノイズが混在し得るということを意味する。従って、この場合、予測の正確度を向上させるために参照サンプルのフィルタリングが実行され得る。参照サンプルのフィルタリングを実行するように決定された場合、強いフィルタリング(強いスムージングフィルタ)が適用され得る。
イントラ予測部は、残差係数の数が臨界値よりも大きいと(或いは大きいまたは同じであると)、参照サンプルのフィルタリングを実行するように決定し得る。残差係数の数が多いということは、画像の複雑度が高いということを示すためである。この場合、強いフィルタリングが適用され得る。また、イントラ予測部は、残差係数の数が臨界値よりも小さいと(或いは小さいまたは同じであると)、フィルタリングを実行しないように決定されるか、又はフィルタリングを適用するように決定し、弱いフィルタリング(弱いスムージングフィルタ)を適用し得る。
弱いスムージングフィルタは、1次元二項フィルタ(1−Dimensional binomial filter)等が用いられ得る。前記1次元二項フィルタは1−2−1フィルタ(1−2−1 filter)または1−4−6−4−1フィルタ(1−4−6−4−1 filter)等を含み得る。強いスムージングフィルタとして、平均フィルタ(Average filter)又は異なる種類の線形/非線形加重フィルタ(linear/non−linear−weighting filter)等が用いられ得る。
残差係数の数の臨界値は、エンコーダとデコーダとの間に予め約束する値で定められ得る。また、前記臨界値は、VPS、SPS、PPS、スライスヘッダーまたはブロックヘッダーに含まれ、エンコーダからデコーダへ送信され得る。デコーダは、送信された臨界値に基づいて、参照サンプルのフィルタリング可否及びフィルタの種類を決定し得る。
周辺ブロックの残差が小さいほど(即ち、残差係数の数が少ないほど)、周辺ブロックの予測ブロックと原本ブロックが同種性(homogeneous)が高いということを示す。この場合、イントラ予測部は弱いスムージングフィルタのみを用いても、比較的正確な予測ブロック(予測値)を生成し得る。しかし、周辺ブロックの残差が大きいほど(即ち、残差係数の数が多いほど)、周辺ブロックの画像は詳細な画像であるか、ノイズ(noise)やアーティファクト(artifact)等のエラーを多く含み得る。従って、イントラ予測部は、この場合、強いスムージングフィルタを用いることによって、予測ブロックの正確度を向上させることができる。
実施例5:周辺ブロックの境界/エッジに関する情報を利用
実施例5は、フィルタリングの実行可否及び/又はフィルタの種類を決定する過程で周辺ブロックのパラメータを用いる。前記周辺ブロックのパラメータは周辺ブロックの境界(boundary)又はエッジ(edge)に関する情報を示す。
参照サンプルは複数のサンプルを含み、前記複数のサンプルは現在ブロックに隣接した互いに異なる周辺ブロックに属し得る。前記境界に関する情報は、参照サンプル内に周辺ブロックの境界又はエッジが含まれているか否かを示すパラメータ(以下、境界パラメータ又はエッジパラメータと称する)又は参照サンプル内にブロックの境界が含まれた互いに異なる周辺ブロックの数(以下、境界サンプルの数)を含む。
イントラ予測部はエッジパラメータに基づいて参照サンプルのフィルタリング可否及び/又はフィルタの種類を決定し得る。エッジパラメータは、参照サンプル内に周辺ブロックの境界が含まれているか否かを示す。即ち、具体的に、エッジパラメータは、上段参照サンプル9020または左側参照サンプル9030のうち少なくとも一つが互いに異なる周辺ブロックに属するサンプルで構成されているかを示す。一例として、エッジパラメータが1である場合、参照サンプル内に周辺ブロックの境界が含まれていることを示し得る。
イントラ予測部は、エッジパラメータが上段参照サンプル9020又は左側参照サンプル9030のうち少なくとも一つが互いに異なる周辺ブロックに属するサンプルで構成されていることを示す場合、参照サンプルのフィルタリングを実行するように決定し得る。この場合、強いスムージングフィルタが用いられ得る。そうでなければ、イントラ予測部は参照サンプルのフィルタリングを実行しないか、又は参照サンプルのフィルタリングを実行し、弱いスムージングフィルタを用いるように決定し得る。
また、イントラ予測部は境界サンプルの数に基づいて、前記境界サンプルの数が臨界値よりも大きい場合(或いは大きいまたは同じである場合)、参照サンプルのフィルタリングを実行するように決定し得る。そうでなければ、イントラ予測部は参照サンプルのフィルタリングを実行しないか、又は参照サンプルのフィルタリングを実行し、弱いスムージングフィルタを用いるように決定し得る。
境界サンプルの数の臨界値は、エンコーダとデコーダとの間に予め約束する値で定められ得る。前記臨界値は、VPS、SPS、PPS、スライスヘッダー又はブロックヘッダーに含まれ、エンコーダからデコーダへ送信され得る。デコーダは、送信された臨界値に基づいて、参照サンプルのフィルタリング可否及びフィルタの種類を決定し得る。
弱いスムージングフィルタは、1次元二項フィルタ(1−Dimensional binomial filter)等が用いられ得る。前記1次元二項フィルタは、1−2−1フィルタ(1−2−1 filter)又は1−4−6−4−1フィルタ(1−4−6−4−1 filter)等を含み得る。強いスムージングフィルタとして、平均フィルタ(Average filter)又は異なる種類の線形/非線形加重フィルタ(linear/non−linear−weighting filter)等が用いられ得る。
現在ブロックの周辺ブロックのサイズが小さいほど、参照サンプルに含まれた周辺ブロックの境界の数が増加し、ブロック境界の数が増加するほど、アーティファクト(artifact)等のエラーが発生する確率が増加する。従って、参照サンプルに周辺ブロックの境界が含まれるか、又は境界が含まれた周辺ブロックの数が臨界値よりも大きい場合、イントラ予測部は強いスムージングフィルタを用いて参照サンプルをフィルタリングすることによって、予測ブロックの正確度を向上させることができる。
実施例6:現在ブロックの予測サンプルと参照サンプルとの間の距離情報を利用
実施例6は、フィルタリングの実行可否及び/又はフィルタの種類を決定する過程で、現在ブロックのパラメータを用いる。前記現在ブロックのパラメータは、予測サンプルと参照サンプルとの間の距離情報を含む。具体的に、距離情報は、予測ブロック内で予測しようとする現在サンプル(以下、予測サンプル)と上段参照サンプル9020との間の垂直距離(以下、垂直距離)及び/又は予測サンプルと左側参照サンプル9030との間の水平距離(以下、水平距離)を含む。
イントラ予測部は、現在ブロック内の予測サンプルの位置を基準に、適応的に参照サンプルのフィルタリング可否及び/又はフィルタのタイプを決定し得る。一例として、現在ブロックの一辺の長さがNであるとき、イントラ予測部は予測サンプルのx座標又はy座標のうち少なくともいずれかの座標がN/2よりも大きい場合、前記予測サンプルの予測値生成過程で参照サンプルのフィルタリングを実行するように決定し得る。この場合、イントラ予測部は強いスムージングフィルタを用い得る。
即ち、イントラ予測部は、各予測サンプル別に参照サンプルのフィルタリングの実行可否を決定し得る。イントラ予測部は、各予測サンプルの水平距離又は垂直距離のうち少なくとも一つが臨界値(又は臨界距離)よりも大きい場合、該当予測サンプルの予測値生成過程で参照サンプルのフィルタリングを実行するように決定でき、この場合、強いスムージングフィルタを用い得る。そうでなければ、イントラ予測部は、該当予測サンプルの予測値生成過程で参照サンプルのフィルタリングを実行しないように決定するか、又はフィルタリングを実行するように決定し、弱いスムージングフィルタを用い得る。
垂直距離及び/又は水平距離の各々の臨界値は、エンコーダとデコーダとの間に予め約束する値で定められ得る。前記臨界値は、VPS、SPS、PPS、スライスヘッダー又はブロックヘッダーに含まれ、エンコーダからデコーダへ送信され得る。デコーダは、送信された臨界値に基づいて、参照サンプルのフィルタリング可否及びフィルタの種類を決定し得る。
弱いスムージングフィルタは、1次元二項フィルタ(1−Dimensional binomial filter)等が用いられ得る。前記1次元二項フィルタは、1−2−1フィルタ(1−2−1 filter)又は1−4−6−4−1フィルタ(1−4−6−4−1 filter)等を含み得る。強いスムージングフィルタとして、平均フィルタ(Average filter)又は異なる種類の線形/非線形加重フィルタ(linear/non−linear−weighting filter)等が用いられ得る。
予測の正確度は、予測サンプルと参照サンプルとの距離が離れるほど減少する。また、距離が離れるほどノイズ等の不要な情報が伝播(propagation)される可能性が増加する。従って、参照サンプルとの距離が離れている予測サンプルには、強いスムージングフィルタを用いることによって、予測の正確度が向上し得る。
実施例7:前述した実施例1乃至6の組み合わせを利用
前述した実施例1乃至実施例6の基準のうち、一つ以上の基準を組み合わせて、参照サンプルのフィルタリング可否及び/又はフィルタのタイプが決定され得る。
一例として、現在ブロックの長い辺の長さ(実施例1)及び周辺ブロックの境界情報(実施例5)が組み合わせられた新たな基準が定義され得る。他の例として、現在ブロックの小さい辺の長さ(実施例1)、現在ブロックのサンプルの数(実施例2)、及び現在/周辺ブロックの量子化パラメータ(実施例3)が組み合わせられた新たな基準が定義され得る。前述した実施例を組み合わせることによって、予測の正確性がさらに向上し得る。
実施例8:上段参照サンプル及び左側参照サンプルを各々独立してフィルタリング可否及び/又はフィルタの種類を決定
実施例8は実施例1に基づく。実施例8において、イントラ予測部は現在ブロックの各辺の長さに応じて、上段参照サンプル9020及び左側参照サンプル9030のフィルタリング可否及び/又はフィルタの種類を各々決定する。実施例8も、前述した表2を用いる。
具体的に再度図9を参照すると、現在ブロックの水平エッジ長(横辺の長さ)に応じて、上段参照サンプル9020のフィルタリング可否及び/又は種類が決定され、垂直エッジ長(縦辺の長さ)に応じて、左側参照サンプル9030のフィルタリング可否及び/又は種類が決定される。即ち、左側参照サンプル9030には左辺(又は縦辺)の長さに応じる基準が適用され、上段参照サンプル9020には上辺(又は横辺)の長さに応じる基準が各々適用される。図9に図示されたように、結果的に左側参照サンプル9030は参照サンプルのフィルタリングが適用されることがあり、上段参照サンプル9020には参照サンプルのフィルタリングが適用されないことがある。これによって、二つの参照サンプルを独立してフィルタリングし得る。
一例として、縦辺の長さが16であり、予測モードが8である場合、左側参照サンプル9030は、表2の16×16ブロックによってフィルタリングを実行するように決定され得る。横辺の長さが8であり、予測モードが8である場合、上段参照サンプル9020は、表2の8×8ブロックによってフィルタリングを実行しないように決定され得る。
実施例1と同様に、左上段サンプル(Top−left sample、9040)の場合、左側参照サンプル9030及び上段参照サンプル9020のうち何れかに含まれ得る。図9は、左上段サンプルが左側参照サンプル9030に含まれて処理されることを示す。
左側参照サンプル9030及び上段参照サンプル9020を各々別途にフィルタリングの適用可否を判断すること以外の内容(フィルタタイプ等)は、前述した実施例1に説明した内容と同様に適用され得る。一例として、左側参照サンプル9030にのみ強いスムージングフィルタ(平均フィルタ又は異なる種類の線形/非線形加重フィルタ等)を適用し得る。
実施例9:参照サンプルの参照可否を先に判断
実施例9は、前述した実施例1乃至8に先だって、各参照サンプルが参照可能であるか(予測ブロックの生成に用いられ得るか)否かを優先的に決定する。この実施例は、参照サンプルのフィルタリングに先だって、参照サンプルを獲得/生成する過程に適用され得る。
画面内予測(intra mode)方法は、場合によって予測ブロックを生成する過程で参照サンプルを用いることができないことがある。例えば、参照サンプルが用いられ得ない場合としては、現在ブロックが画像の縁に位置した場合、又は隣接ブロックが画面間の予測モード(inter mode)で復号された場合(これは一部の場合に限る)等がある。
従って、実施例9におけるイントラ予測部は、上段参照サンプル9020及び左側参照サンプル9030が各々参照可能であるか否かを先に判断する。
具体的に、1)イントラ予測部は、左側参照サンプル9030及び上段参照サンプル9020のうち、左側参照サンプル9030のみ参照可能である場合は、左辺(縦辺)の長さを基準に参照サンプルのフィルタリング可否を決定し、上段参照サンプル9020のみ参照可能である場合は、上辺(横辺)の長さを基準に決定する。このとき、フィルタリングの実行可否は、参照可能な左辺又は上辺の長さを基準に決定されるが、フィルタリングを実行するように決定された後のフィルタリングの適用は、左側参照サンプル9030及び上段参照サンプル9020の全てに適用される。辺の長さを基準にフィルタリングの実行可否を判断する具体的な方法は、前述した実施例7又は実施例1の説明を参照する。
2)左側参照サンプルと上段参照サンプルが全て参照可能な場合、又はすべて参照可能ではない場合、イントラ予測部は前述した実施例1乃至8の基準に応じて、参照サンプルのフィルタリング可否及び/又はフィルタの種類を決定し得る。また、他の例として、左側/上段参照サンプル9020が全て参照可能ではない場合、イントラ予測部は全ての参照サンプルをデフォルト(default)値(1<<(bitDepth−1))で満たした後、予測ブロックの生成に用いられ得る。一例として、参照サンプルは8−bit画像の場合は128、10−bit画像の場合は512値で満たされ得る。
前述した実施例1乃至9の方法は、エンコーダ又はデコーダのイントラ予測部で全て行われ得る。
図10は、本発明の一実施例に係る、イントラ予測部のブロック図を示す。
イントラ予測部10010は、イントラ予測モードに基づいて現在ブロックの予測ブロックを生成する。イントラ予測部10010は、エンコーダ(画像符号化装置)及び/又はデコーダ(画像復号装置)に含まれる。
イントラ予測部10010は、イントラ予測モード獲得部10020、参照サンプル獲得部10030、参照サンプルフィルタリング部10040、及び予測ブロック生成部10050を含む。
イントラ予測モード獲得部10020は、現在ブロックのイントラ予測モードを獲得する。イントラ予測モード獲得部10020は、前述した図5のS501の手続を行い得る。
イントラ予測モードが獲得された後、参照サンプル獲得部10030は予測ブロックを生成するための参照サンプルを獲得する。参照サンプル獲得部10030は、前述した図5のS502の手続を行い得る。
参照サンプルが獲得された後、参照サンプルフィルタリング部10040は、参照サンプルにフィルタリングを実行するか否かを決定し、フィルタリングを実行するように決定されると、参照サンプルをフィルタリングする。参照サンプルフィルタリング部10040は、参照サンプルにフィルタリングを実行しないように決定すると、参照サンプルをフィルタリングしない。
イントラ予測部10010で処理される現在ブロックは、正方形のブロック又は非正方形のブロックに該当し得る。参照サンプルフィルタリング部10040は、現在ブロックが非正方形のブロックである場合、前記イントラ予測モードと共に、現在ブロックのパラメータ及び/又は周辺ブロックのパラメータに基づいて、フィルタリング可否を決定する。現在ブロックのパラメータ及び周辺ブロックのパラメータに関する具体的な事項は、前述した図9に関する説明を参照する。即ち、現在ブロックが非正方形のブロックである場合、参照サンプルフィルタリング部10040は、前述した実施例1乃至8の基準に応じて参照サンプルのフィルタリング可否及び/又はフィルタのタイプを決定し得る。
予測ブロック生成部10050は、フィルタリングされない参照サンプル又はフィルタリングされた参照サンプルを用いて、現在ブロックの予測ブロックを生成する。予測ブロック生成部10050は、前述した図5のS504の手続を行い得る。
図11は、本発明の一実施例に係る、画像復号方法のフローチャートを示す。
画像復号装置(デコーダ)により画像復号が行われる。
画像復号装置は、現在ブロックのイントラ予測モードを獲得する(S11010)。この手続は、前述した図5のS501の手続と同一又は類似に行われ得るので、詳しい説明を省略する。
現在ブロックの隣接サンプルを用いて、前記現在ブロックの予測ブロックを生成するための参照サンプルを獲得する(S11020)。この手続は、前述した図5のS502の手続と同一又は類似に行われ得るので、詳しい説明は省略する。また、この段階で前述した図9の実施例9の方法が行われ得る。
以降、画像復号装置は参照サンプルにフィルタリングを実行するか否かを決定し(S11030)、フィルタリングを実行するように決定された場合、参照サンプルをフィルタリングする(S11040)。
フィルタリングの実行可否を決定する段階(S11030)において、画像復号装置は、イントラ予測モードと共に、現在ブロックと関連したパラメータである現在ブロックのパラメータ及び/又は現在ブロックの周辺ブロックと関連したパラメータである周辺ブロックのパラメータに基づいて決定される。現在ブロックのパラメータ及び周辺ブロックのパラメータに関する具体的な事項は、前述した図9に関する説明を参照する。
以降、画像復号装置は、イントラ予測モードに基づいて参照サンプル又はフィルタリングされた参照サンプルを用いて予測ブロックを生成する(S11050)。この手続は、前述した図5のS504の手続と同一又は類似に行われ得るので、詳しい説明を省略する。
以上で説明された実施例は、本発明の構成要素と特徴が所定の形態で結合されたものである。各構成要素または特徴は、別の明示的な言及がない限り、選択的なものと考慮されなければならない。各構成要素または特徴は、他の構成要素や特徴と結合されていない形態で実施され得る。また、一部の構成要素及び/又は特徴を結合して、本発明の実施例を構成することも可能である。本発明の実施例で説明される動作の順序は変更され得る。ある実施例の一部構成や特徴は、他の実施例に含まれてもよく、または他の実施例の対応する構成または特徴と交換してもよい。特許請求範囲で明示的な引用関係がない請求項を結合して実施例を構成したり、出願後の補正により新たな請求項に含ませることができることは自明である。
本発明に係る実施例は、様々な手段、例えば、ハードウェア、ファームウェア(firmware)、ソフトウェアまたはそれらの結合などにより実装できる。ハードウェアによる実装の場合、本発明の一実施例は、一つまたはそれ以上のASICs(application specific integrated circuits)、DSPs(digital signal processors)、DSPDs(digital signal processing devices)、PLDs(programmable logic devices)、FPGAs(field programmable gate arrays)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどにより実装できる。
ファームウェアやソフトウェアによる実装の場合、本発明の一実施例は、以上で説明された機能または動作を行うモジュール、手続、関数などの形態で実装できる。ソフトウェアのコードは、メモリに格納され、プロセッサによって駆動されることができる。前記メモリは、前記プロセッサの内部または外部に位置し、既に公知となった多様な手段により、前記プロセッサとデータをやり取りすることができる。
本発明は、本発明の必須の特徴を外れない範囲で他の特定の形態で具体化されることができることは当業者にとって自明である。したがって、前述した詳細な説明は、全ての面で制限的に解釈されてはならず、例示的なものと考慮されるべきである。本発明の範囲は、添付された請求項の合理的解釈によって決定されるべきであり、本発明の等価的範囲内での全ての変更は、本発明の範囲に含まれる。