本発明は、様々な変更を加えることができ、様々な実施形態を有することができるので、特定の実施形態を図面に例示し、詳細な説明に詳細に説明する。ところが、これは、本発明を特定の実施形態について限定するものではなく、本発明の思想及び技術範囲に含まれるすべての変更、均等物ないし代替物を含むものと理解されるべきである。図面において類似する参照符号は、様々な側面にわたって同一又は類似の機能を指し示す。図面における要素の形状及び大きさなどは、より明確な説明のために誇張することがある。後述する例示的な実施形態についての詳細な説明は、特定の実施形態を例示として示す添付図面を参照する。これらの実施形態は、当業者が実施形態を実施し得る程度に十分に詳細に説明される。様々な実施形態は、互いに異なるが、相互に排他的である必要はないことが理解されるべきである。例えば、ここに記載されている特定の形状、構造及び特性は、一実施形態に関連して本発明の精神及び範囲を逸脱することなく、様々な実施形態に実現できる。また、それぞれの開示された実施形態内の個別構成要素の位置又は配置は、実施形態の精神及び範囲を逸脱することなく変更可能であることが理解されるべきである。したがって、後述する詳細な説明は、限定的な意味として取るものではなく、例示的な実施形態の範囲は、適切に説明されるならば、それらの請求項が主張するのと均等なすべての範囲及び添付の請求項によってのみ限定される。
本発明において、用語「第1」、「第2」などは多様な構成要素の説明に使用できるが、これらの構成要素は上記の用語によって限定されてはならない。これらの用語は、一つの構成要素を他の構成要素から区別する目的にのみ使われる。例えば、本発明の権利範囲を外れない限り、第1構成要素は第2構成要素と命名することができ、同様に、第2構成要素も第1構成要素と命名することができる。用語「及び/又は」は、複数の関連した記載項目の組み合わせ又は複数の関連した記載項目のいずれかを含む。
本発明のある構成要素が他の構成要素に「連結されて」いる或いは「接続されて」いるとした場合には、その他の構成要素に直接連結されている或いは接続されていることもあるが、それらの間に別の構成要素が介在することもあると理解されるべきである。これに対し、ある構成要素が他の構成要素に「直接連結されて」いる或いは「直接接続されて」いるとした場合には、それらの間に別の構成要素が介在しないと理解されるべきである。
本発明の実施形態に示される構成部は、互いに異なる特徴的な機能を示すために独立に図示されるもので、各構成部が分離されたハードウェア又は一つのソフトウェア構成単位からなることを意味しない。すなわち、各構成部は、説明の便宜上、それぞれの構成部に羅列して含むもので、各構成部のうちの少なくとも2つの構成部が合わせられて一つの構成部をなすか、或いは一つの各構成部が複数の構成部に分けられて機能を行うことができ、このような各構成部の統合された実施形態及び分離された実施形態も、本発明の本質から外れない限り、本発明の権利範囲に含まれる。
本発明で使用した用語は、単に特定の実施形態を説明するために使われたものであり、本発明を限定するものではない。単数の表現は、文脈上明白に異なる意味ではない限り、複数の表現を含む。本発明において、「含む」又は「有する」などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品又はこれらの組み合わせが存在することを指定するものであり、一つ又はそれ以上の他の特徴、数字、ステップ、動作、構成要素、部品又はこれらの組み合わせの存在又は付加可能性を予め排除しないと理解されるべきである。つまり、本発明において、特定の構成を「含む」と記述する内容は、該当構成以外の構成を排除するものではなく、追加の構成が本発明の実施又は本発明の技術的思想の範囲に含まれ得ることを意味する。
本発明の一部の構成要素は、本発明において本質的な機能を行う不可欠の構成要素ではなく、単に性能を向上させるための選択的構成要素であり得る。本発明は、単に性能向上のために使用される構成要素を除く、本発明の本質の実現に必要不可欠な構成部のみを含んで実現でき、単に性能向上のために使用される選択的構成要素を除く必須構成要素のみを含む構造も本発明の権利範囲に含まれる。
以下、図面を参照して、本発明の実施形態について具体的に説明する。本明細書の実施形態を説明するにあたり、関連した公知の構成又は機能についての具体的な説明が本明細書の要旨を曖昧にするおそれがあると判断された場合、その詳細な説明は省略し、図面上の同一の構成要素については同一の参照符号を使用し、同一の構成要素についての重複説明は省略する。
以下において、画像は、動画像(video)を構成する1つのピクチャ(picture)を意味することもあり、動画像自体を意味することもある。例えば、「画像の符号化及び/又は復号化」は、「動画像の符号化及び/又は復号化」を意味することもあり、「動画像を構成する画像のうちのいずれかの画像の符号化及び/又は復号化」を意味することもある。
以下において、用語「動画像」及び「ビデオ」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。
以下において、対象画像は、符号化の対象である符号化対象画像、及び/又は復号化の対象である復号化対象画像であり得る。また、対象画像は、符号化装置に入力された入力画像であってもよく、復号化装置に入力された入力画像であってもよい。ここで、対象画像は、現在の画像と同じ意味を持つことができる。
以下において、用語「画像」、「ピクチャ」、「フレーム(frame)」及び「スクリーン(screen)」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。
以下において、対象ブロックは、符号化の対象である符号化対象ブロック、及び/又は復号化の対象である復号化対象ブロックであり得る。また、対象ブロックは、現在符号化及び/又は復号化の対象である現在ブロックであってもよい。例えば、用語「対象ブロック」及び「現在ブロック」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。
以下において、用語「ブロック」及び「ユニット」は、同じ意味で使用されることもあり、入れ替わって使用されることもある。又は、「ブロック」は特定のユニットを示すことができる。
以下において、用語「領域(region)」及び「セグメント(segment)」は、入れ替わって使用されることもある。
以下において、特定の信号は、特定のブロックを示す信号であり得る。例えば、原(original)信号は、対象ブロックを示す信号であり得る。予測(prediction)信号は、予測ブロックを示す信号であり得る。残余(residual)信号は、残余ブロック(residual block)を示す信号であり得る。
実施形態において、特定の情報、データ、フラグ(flag)、インデックス(index)及び要素(element)、属性(attribute)などのそれぞれは、値を持つことができる。情報、データ、フラグ、インデックス及び要素、属性などの値「0」は、論理偽(logical false)又は第1の予め定義された(predefined)値を示すことができる。いわば、値「0」、偽、論理偽及び第1の予め定義された値は、入れ替わって使用されることもある。情報、データ、フラグ、インデックス及び要素、属性などの値「1」は、論理真(logical true)又は第2の予め定義された値を示すことができる。いわば、値「1」、真、論理真及び第2の予め定義された値は、入れ替わって使用されることもある。
行、列、又はインデックス(index)を示すためにi又はjなどの変数が使用されるとき、iの値は0以上の整数であってもよく、1以上の整数であってもよい。いわば、実施形態において、行、列、及びインデックスは0からカウントされることもあり、1からカウントされることもある。
<用語説明>
符号化器(Encoder):符号化(Encoding)を行う装置を意味する。すなわち、符号化装置を意味することができる。
復号化器(Decoder):復号化(Decodng)を行う装置を意味する。すなわち、復号化装置を意味することができる。
ブロック(Block):サンプル(Sample)のM×N配列である。ここで、MとNは正の整数値を意味することができ、ブロックは一般に2次元形状のサンプル配列を意味することができる。ブロックはユニットを意味することができる。現在ブロックは、符号化時に符号化の対象となる符号化対象ブロック、復号化時に復号化の対象となる復号化対象ブロックを意味することができる。また、現在ブロックは符号化ブロック、予測ブロック、残予ブロック及び変換ブロックのうちの少なくとも一つであり得る。
サンプル(Sample):ブロックを構成する基本単位である。ビット深度(bit depth、Bd)に応じて0から2Bd-1までの値で表現できる。本発明において、サンプルは画素又はピクセルと同じ意味で使用できる。すなわち、サンプル、画素、ピクセルは互いに同じ意味を持つことができる。
ユニット(Unit):画像符号化及び復号化の単位を意味することができる。画像の符号化及び復号化において、ユニットは、一つの画像を分割した領域であり得る。また、ユニットは、一つの画像を細分化されたユニットに分割して符号化或いは復号化するとき、その分割された単位を意味することができる。すなわち、一つの画像は複数のユニットに分割できる。画像の符号化及び復号化において、ユニット別に、予め定義された処理が行われ得る。一つのユニットは、ユニットに比べてより小さい大きさを持つサブユニットにさらに分割できる。機能に応じて、ユニットは、ブロック(Block)、マクロブロック(Macroblock)、符号化ツリーユニット(Coding Tree Unit)、符号化ツリーブロック(Coding Tree Block)、符号化ユニット(Coding Unit)、符号化ブロック(Coding Block)、予測ユニット(Prediction Unit)、予測ブロック(Prediction Block)、残予ユニット(Residual Unit)、残予ブロック(Residual Block)、変換ユニット(Transform Unit)、変換ブロック(Transform Block)などを意味することができる。また、ユニットは、ブロックと区分して指し示すために、輝度(Luma)成分ブロック、それに対応する色差(Chroma)成分ブロック、及び各ブロックに対する構文要素を含むことを意味することができる。ユニットは、様々なサイズと形状を持つことができ、特に、ユニットの形状は、正方形だけでなく、長方形、台形、三角形、五角形など、2次元的に表現できる幾何学的図形を含むことができる。また、ユニット情報は、符号化ユニット、予測ユニット、残予ユニット、変換ユニットなどを指し示すユニットのタイプ、ユニットの大きさ、ユニットの深さ、ユニットの符号化及び復号化順序などのうちの少なくとも一つを含むことができる。
符号化ツリーユニット(Coding Tree Unit):一つの輝度成分(Y)符号化ツリーブロックに関連した2つの色差成分(Cb,Cr)符号化ツリーブロックから構成される。また、前記ブロックと各ブロックに対する構文要素を含むことを意味することもできる。各符号化ツリーユニットは、符号化ユニット、予測ユニット、変換ユニットなどのサブユニットを構成するために、四分木(quad tree)、二分木(binary tree)、三分木(ternary tree)などの一つ以上の分割方式を用いて分割できる。入力画像の分割の如く画像の復号化/符号化過程で処理単位となるサンプルブロックを指し示すための用語として使用できる。ここで、四分木は、4分割ツリー(quarternary tree)を意味することができる。
符号化ツリーブロック(Coding Tree Block):Y符号化ツリーブロック、Cb符号化ツリーブロック及びCr符号化ツリーブロックのうちのいずれかを示すための用語として使用できる。
周辺ブロック(Neighbor block):現在ブロックに隣接するブロックを意味することができる。現在ブロックに隣接するブロックは、現在ブロックと境界が接しているブロック、又は現在ブロックから所定の距離内に位置するブロックを意味することができる。周辺ブロックは、現在ブロックの頂点に隣接するブロックを意味することができる。ここで、現在ブロックの頂点に隣接するブロックとは、現在ブロックの横に隣接する隣接ブロックと縦に隣接するブロック、又は現在ブロックの縦に隣接する隣接ブロックと横に隣接するブロックであり得る。周辺ブロックは、復元された周辺ブロックを意味することもある。
復元された周辺ブロック(Reconstructed Neighbor Block):現在ブロックの周辺に空間的(Spatial)/時間的(Temporal)に既に符号化或いは復号化された周辺ブロックを意味することができる。このとき、復元された周辺ブロックは、復元された周辺ユニットを意味することができる。復元された空間的周辺ブロックは、現在ピクチャ内のブロックでありながら符号化及び/又は復号化を介して既に復元されたブロックであり得る。復元された時間的周辺ブロックは、参照画像内で現在ピクチャの現在ブロックと対応する位置の復元されたブロック又はその周辺ブロックであり得る。
ユニット深さ(Depth):ユニットが分割された程度を意味することができる。ツリー構造(Tree Structure)における最上位ノード(Root Node)は、分割されていない最初のユニットに対応することができる。最上位ノードは、ルートノードと呼ばれることもある。また、最上位ノードは、最小の深さ値を持つことができる。このとき、最上位ノードは、レベル(Level)0の深さを持つことができる。レベル1の深さを持つノードは、最初のユニットが一度分割されることにより生成されたユニットを示すことができる。レベル2の深さを持つノードは、最初のユニットが二回分割されることにより生成されたユニットを示すことができる。レベルnの深さを持つノードは、最初のユニットがn回分割されることにより生成されたユニットを示すことができる。リーフノード(Leaf Node)は、最下位ノードであり、それ以上分割できないノードであり得る。リーフノードの深さは最大レベルであり得る。例えば、最大レベルの予め定義された値は3であり得る。ルートノードは深さが最も浅く、リーフノードは深さが最も深いといえる。また、ユニットをツリー構造で表現したとき、ユニットが存在するレベルがユニット深さを意味することができる。
ビットストリーム(Bitstream):符号化された画像情報を含むビットの列を意味することができる。
パラメータセット(Parameter Set):ビットストリーム内の構造のうちのヘッダー(header)情報に該当する。ビデオパラメータセット(video parameter set)、シーケンスパラメータセット(sequence parameter set)、ピクチャパラメータセット(picture parameter set)及び適応パラメータセット(adaptation parameter set)のうちの少なくとも一つがパラメータセットに含まれ得る。また、パラメータセットはスライス(slice)ヘッダー及びタイル(tile)ヘッダー情報を含むこともできる。
パーシング(Parsing):ビットストリームをエントロピー復号化して構文要素(Syntax Element)の値を決定することを意味するか、或いはエントロピー復号化自体を意味することができる。
シンボル(Symbol):符号化/復号化対象ユニットの構文要素、符号化パラメータ(coding parameter)、変換係数(Transform Coefficient)の値などのうちの少なくとも一つを意味することができる。また、シンボルは、エントロピー符号化の対象或いはエントロピー復号化の結果を意味することができる。
予測モード(Prediction Mode):画面内予測で符号化/復号化されるモード、又は画面間予測で符号化/復号化されるモードを指し示す情報であり得る。
予測ユニット(Prediction Unit):画面間予測、画面内予測、画面間補償、画面内補償、動き補償など、予測を行うときの基本単位を意味することができる。一つの予測ユニットは、より小さいサイズを有する複数のパーティション(Partition)又は複数のサブ予測ユニットに分割されてもよい。複数のパーティションも予測又は補償の実行における基本単位であり得る。予測ユニットの分割によって生成されたパーティションも予測ユニットであり得る。
予測ユニットパーティション(Prediction Unit Partition):予測ユニットが分割された形態を意味することができる。
参照画像リスト(Reference Picture List):画面間予測或いは動き補償に使用される一つ以上の参照画像を含むリストを意味することができる。参照画像リストの種類は、LC(List Combined)、L0(List 0)、L1(List 1)、L2(List 2)、L3(List 3)などが挙げられる。画面間予測には、一つ以上の参照画像リストが使用できる。
画面間予測インジケータ(Inter Prediction Indicator):現在ブロックの画面間予測方向(一方向予測、双方向予測など)を意味することができる。又は、現在ブロックの予測ブロックを生成するときに使用される参照画像の個数を意味することができる。又は、現在ブロックに対して画面間予測或いは動き補償を行うときに使用される予測ブロックの個数を意味することができる。
予測リスト活用フラグ(prediction list utilization flag):特定の参照画像リスト内の少なくとも一つの参照画像を用いて予測ブロックを生成するか否かを示す。予測リスト活用フラグを用いて画面間予測インジケータを導出することができ、逆に画面間予測インジケータを用いて予測リスト活用フラグを導出することができる。例えば、予測リスト活用フラグが第1の値「0」を指示する場合には、当該参照画像リスト内の参照画像を用いて予測ブロックを生成しないことを示すことができ、第2の値「1」を指示する場合には、当該参照画像リストを用いて予測ブロックを生成することができることを示すことができる。
参照画像インデックス(Reference Picture Index):参照画像リストにおいて特定の参照画像を指し示すインデックスを意味することができる。
参照画像(Reference Picture):画面間予測或いは動き補償のために特定のブロックが参照する画像を意味することができる。又は、参照画像は、画面間予測又は動き補償のために現在ブロックが参照する参照ブロックを含む画像であり得る。以下、用語「参照ピクチャ」及び「参照画像」は、同一の意味で使用されることもあり、入れ替わって使用されることもある。
動きベクトル(Motion Vector):画面間予測或いは動き補償に使用される2次元ベクトルであり得る。動きベクトルは、符号化/復号化対象ブロックと参照ブロックとの間のオフセットを意味することができる。例えば、(mvX,mvY)は動きベクトルを示すことができる。mvXは水平(horizontal)成分、mvYは垂直(vertical)成分を示すことができる。
探索領域(Search Range):探索領域は、画面間予測のうち、動きベクトルに対する探索が行われる2次元の領域であり得る。例えば、探索領域のサイズはMxNであり得る。M及びNはそれぞれ正の整数であり得る。
動きベクトル候補(Motion Vector Candidate):動きベクトルを予測するときに予測候補となるブロック、或いはそのブロックの動きベクトルを意味することができる。また、動きベクトル候補は、動きベクトル候補リストに含まれてもよい。
動きベクトル候補リスト(Motion Vector Candidate List):一つ以上の動きベクトル候補を用いて構成されたリストを意味することができる。
動きベクトル候補インデックス(Motion Vector Candidate Index):動きベクトル候補リスト内の動きベクトル候補を示すインジケータを意味することができる。動きベクトル予測器(Motion Vector Predictor)のインデックス(index)であってもよい。
動き情報(Motion Information):動きベクトル、参照画像インデックス、画面間予測インジケータだけでなく、予測リスト活用フラグ、参照画像リスト情報、参照画像、動きベクトル候補、動きベクトル候補インデックス、マージ候補、マージンインデックスなどのうちの少なくとも一つを含む情報を意味することができる。
マージ候補リスト(Merge Candidate List):一つ以上のマージ候補を用いて構成されたリストを意味することができる。
マージ候補(Merge Candidate):空間マージ候補、時間マージ候補、組み合わせマージ候補、組み合わせ双予測マージ候補、ゼロマージ候補などを意味することができる。マージ候補は、画面間予測インジケータ、各リストに対する参照画像インデックス、動きベクトル、予測リスト活用フラグ、画面間予測インジケータなどの動き情報を含むことができる。
マージインデックス(Merge Index):マージ候補リスト内のマージ候補を指し示すインジケータを意味することができる。また、マージインデックスは、空間的/時間的に現在ブロックと隣接するように復元されたブロックのうち、マージ候補を誘導したブロックを示すことができる。また、マージインデックスは、マージ候補が持つ動き情報のうちの少なくとも一つを示すことができる。
変換ユニット(Transform Unit):変換、逆変換、量子化、逆量子化、変換係数符号化/復号化のように残余信号(residual signal)符号化/復号化を行うときの基本単位を意味することができる。一つの変換ユニットは、分割されてサイズがさらに小さい複数のサブ変換ユニットに分割できる。ここで、変換/逆変換は、1次変換/逆変換及び2次変換/逆変換のうちの少なくとも一つを含むことができる。
スケーリング(Scaling):量子化されたレベルに因数を掛ける過程を意味することができる。量子化されたレベルに対するスケーリングの結果として変換係数を生成することができる。スケーリングを逆量子化(dequantization)とも呼ぶことができる。
量子化パラメータ(Quantization Parameter):量子化において変換係数を用いて量子化されたレベル(quantized level)を生成するときに使用する値を意味することができる。又は、逆量子化において量子化されたレベルをスケーリング(scaling)して変換係数を生成するときに使用する値を意味することもできる。量子化パラメータは、量子化ステップサイズ(step size)にマッピングされた値であり得る。
デルタ量子化パラメータ(Delta Quantization Parameter):予測された量子化パラメータと符号化/復号化対象ユニットの量子化パラメータとの差分(difference)値を意味することができる。
スキャン(Scan):ユニット、ブロック或いは行列内係数の順序をソートする方法を意味することができる。例えば、2次元配列を1次元配列にソートすることをスキャンという。又は、1次元配列を2次元配列にソートすることもスキャン或いは逆スキャン(Inverse Scan)と呼ぶことができる。
変換係数(Transform Coefficient):符号化器で変換を行ってから生成された係数値を意味することができる。復号化器でエントロピー復号化及び逆量子化のうちの少なくとも一つを行ってから生成された係数値を意味することもできる。変換係数又は残予信号に量子化を適用した量子化レベル又は量子化変換係数レベルも変換係数の意味に含まれ得る。
量子化レベル(Quantized Level):符号化器で変換係数又は残余信号に量子化を行って生成された値を意味することができる。又は、復号化器で逆量子化を行う前に逆量子化の対象となる値を意味することもできる。同様に、変換及び量子化の結果である量子化変換係数レベルも量子化レベルの意味に含まれ得る。
ノンゼロ変換係数(Non-zero Transform Coefficient):値の大きさが0ではない変換係数、或いは値の大きさが0ではない変換係数レベル、或いは量子化されたレベルを意味することができる。
量子化行列(Quantization Matrix):画像の主観的画質或いは客観的画質を向上させるために量子化或いは逆量子化過程で用いる行列を意味することができる。量子化行列をスケーリングリスト(scaling list)とも呼ぶことができる。
量子化行列係数(Quantization Matrix Coefficient):量子化行列内の各元素(element)を意味することができる。量子化行列係数を行列係数(matrix coefficient)とも呼ぶことができる。
基本行列(Default Matrix):符号化器と復号化器で予め定義されている所定の量子化行列を意味することができる。
非基本行列(Non-default Matrix):符号化器と復号化器で予め定義されず、ユーザによってシグナリングされる量子化行列を意味することができる。
統計値(statistic value):演算可能な特定の値を有する変数、符号化パラメータ、定数などの少なくとも一つに対する統計値は、当該特定値の平均値、重み付け平均値、重み付け和値、最小値、最大値、最頻値、中央値及び補間値のうちの少なくとも一つであり得る。
図1は本発明が適用される符号化装置の一実施形態による構成を示すブロック図である。
符号化装置100は、エンコーダ、ビデオ符号化装置又は画像符号化装置であり得る。ビデオは、一つ以上の画像を含むことができる。符号化装置100は、一つ以上の画像を順次符号化することができる。
図1を参照すると、符号化装置100は、動き予測部111、動き補償部112、イントラ予測部120、スイッチ115、減算器125、変換部130、量子化部140、エントロピー符号化部150、逆量子化部160、逆変換部170、加算器175、フィルタ部180、及び参照ピクチャバッファ190を含むことができる。
符号化装置100は、入力画像に対してイントラモード及び/又はインターモードで符号化を行うことができる。また、符号化装置100は、入力画像に対する符号化を介して符号化された情報を含むビットストリームを生成することができ、生成されたビットストリームを出力することができる。生成されたビットストリームは、コンピュータ可読記録媒体に保存できるか、或いは有線/無線伝送媒体を介してストリミングできる。予測モードとしてイントラモードが使用される場合、スイッチ115はイントラに転換でき、予測モードとしてインターモードが使用される場合、スイッチ115はインターに転換できる。ここで、イントラモードは画面内予測モードを意味することができ、インターモードは画面間予測モードを意味することができる。符号化装置100は、入力画像の入力ブロックに対する予測ブロックを生成することができる。また、符号化装置100は、予測ブロックが生成された後、入力ブロック及び予測ブロックの差分(residual)を用いて残余ブロックを符号化することができる。入力画像は、現在符号化の対象である現在画像と称されることもある。入力ブロックは、現在符号化の対象である現在ブロック或いは符号化対象ブロックと称されることもある。
予測モードがイントラモードである場合、イントラ予測部120は、現在ブロックの周辺に既に符号化/復号化されたブロックのサンプルを参照サンプルとしても用いることができる。イントラ予測部120は、参照サンプルを用いて現在ブロックに対する空間的予測を行うことができ、空間的予測を介して入力ブロックに対する予測サンプルを生成することができる。ここで、イントラ予測は画面内予測を意味することができる。
予測モードがインターモードである場合には、動き予測部111は、動き予測過程で参照画像から入力ブロックと最もよくマッチする領域を検索することができ、検索された領域を用いて動きベクトルを導出することができる。この際、前記領域として探索領域を使用することができる。参照画像は、参照ピクチャバッファ190に保存できる。ここで、参照画像に対する符号化/復号化が処理されたとき、参照ピクチャバッファ190に保存できる。
動き補償部112は、動きベクトルを用いる動き補償を行うことにより、現在ブロックに対する予測ブロックを生成することができる。ここで、インター予測は画面間予測或いは動き補償を意味することができる。
前記動き予測部111と動き補償部112は、動きベクトルの値が整数値を持たない場合に参照画像内の一部の領域に対して補間フィルタ(Interpolation Filter)を適用して予測ブロックを生成することができる。画面間予測或いは動き補償を行うために、符号化ユニットを基準に、該当符号化ユニットに含まれている予測ユニットの動き予測及び動き補償方法がスキップモード(Skip Mode)、マージモード(Merge mode)、向上した動きベクトル予測(Advanced Motion Vector Prediction、AMVP)モード、及び現在ピクチャ参照モードのうちのいずれの方法であるかを判断することができ、各モードに応じて、画面間予測或いは動き補償を行うことができる。
減算器125は、入力ブロック及び予測ブロックの差分を用いて残余ブロックを生成することができる。残余ブロックは残余信号とも称される。残余信号は、原信号と予測信号との差(difference)を意味することができる。又は、残余信号は、原信号と予測信号との差を変換(transform)するか、量子化するか、又は変換及び量子化することにより生成された信号であり得る。残余ブロックはブロック単位の残余信号であり得る。
変換部130は、残余ブロックに対して変換(transform)を行って変換係数(transform coefficient)を生成することができ、生成された変換係数を出力することができる。ここで、変換係数は、残余ブロックに対する変換を行うことにより生成された係数値であり得る。変換省略(transform skip)モードが適用される場合、変換部130は残余ブロックに対する変換を省略することもできる。
変換係数又は残余信号に量子化を適用することにより、量子化レベル(quantized level)が生成できる。以下、実施形態では、量子化レベルも変換係数と称されることがある。
量子化部140は、変換係数又は残余信号を量子化パラメータに基づいて量子化することにより量子化レベルを生成することができ、生成された量子化レベルを出力することができる。このとき、量子化部140では、量子化行列を用いて変換係数を量子化することができる。
エントロピー符号化部150は、量子化部140で算出された値、又は符号化過程で算出された符号化パラメータ(Coding Parameter)値などに対して確率分布によるエントロピー符号化を行うことにより、ビットストリーム(bitstream)を生成することができ、ビットストリームを出力することができる。エントロピー符号化部150は、画像のサンプルに関する情報及び画像の復号化のための情報に対するエントロピー符号化を行うことができる。例えば、画像の復号化のための情報は構文要素(syntax element)などを含むことができる。
エントロピー符号化が適用される場合、高い発生確率を有するシンボル(symbol)に少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多い数のビットが割り当てられてシンボルが表現されることにより、符号化対象シンボルに対するビット列のサイズが減少できる。エントロピー符号化部150は、エントロピー符号化のために指数ゴロム(exponential Golomb)、CAVLC(Context-Adaptive Variable Length Coding)、CABAC(Context-Adaptive Binary Arithmetic Coding)などの符号化方法を使用することができる。例えば、エントロピー符号化部150は、可変長符号化(Variable Length Coding/Code;VLC)テーブルを用いてエントロピー符号化を行うことができる。また、エントロピー符号化部150は、対象シンボルの2値化(binarization)方法及び対象シンボル/ビン(bin)の確率モデル(probability model)を導出した後、導出された2値化方法、確率モデル、コンテキストモデル(Context Model)を用いて算術符号化を行うこともできる。
エントロピー符号化部150は、変換係数レベル(量子化レベル)を符号化するために、変換係数スキャニング(Transform Coefficient Scanning)方法を介して2次元のブロック形状(form)係数を1次元のベクトルに変更することができる。
符号化パラメータ(Coding Parameter)は、構文要素のように符号化器で符号化されて復号化器へシグナリングされる情報(フラグ、インデックスなど)だけでなく、符号化過程或いは復号化過程で誘導される情報を含むことができ、画像を符号化又は復号化するときに必要な情報を意味することができる。例えば、ユニット/ブロックサイズ、ユニット/ブロック深さ、ユニット/ブロック分割情報、ユニット/ブロック形態、ユニット/ブロック分割構造、四分木分割か否か、二分木分割か否か、二分木分割の方向(横方向或いは縦方向)、二分木分割の形態(対称分割或いは非対称分割)、三分木分割か否か、三分木分割の方向(横方向或いは縦方向)、三分木分割の形態(対称分割或いは非対称分割)、複合型ツリー分割か否か、複合型ツリー分割の方向(横方向或いは縦方向)、複合型ツリー分割の形態(対称分割或いは非対称分割)、複合型ツリーの分割ツリー(二分木或いは三分木)、予測モード(画面内予測又は画面間予測)、画面内輝度予測モード/方向、画面内色差予測モード/方向、画面内分割情報、画面間分割情報、符号化ブロック分割フラグ、予測ブロック分割フラグ、変換ブロック分割フラグ、参照サンプルフィルタリング方法、参照サンプルフィルタタップ、参照サンプルフィルタ係数、予測ブロックフィルタリング方法、予測ブロックフィルタタップ、予測ブロックフィルタ係数、予測ブロック境界フィルタリング方法、予測ブロック境界フィルタタップ、予測ブロック境界フィルタ係数、画面内予測モード、画面間予測モード、動き情報、動きベクトル、動きベクトル差分、参照画像インデックス、画面間予測方向、画面間予測インジケータ、予測リスト活用フラグ、参照画像リスト、参照画像、動きベクトル予測インデックス、動きベクトル予測候補、動きベクトル候補リスト、マージモードの使用有無、マージインデックス、マージ候補、マージ候補リスト、スキップ(skip)モードの使用有無、補間フィルタの類型、補間フィルタタップ、補間フィルタ係数、動きベクトルのサイズ、動きベクトルの表現精度、変換種類、変換サイズ、1次変換の使用有無情報、2次変換の使用有無情報、1次変換インデックス、2次変換インデックス、残予信号有無情報、符号化ブロックパターン(Coded Block Pattern)、符号化ブロックフラグ(Coded Block Flag)、量子化パラメータ、残余量子化パラメータ、量子化行列、画面内ループフィルタの適用か否か、画面内ループフィルタ係数、画面内ループフィルタタップ、画面内ループフィルタの形状/形態、デブロッキングフィルタの適用か否か、デブロッキングフィルタ係数、デブロッキングフィルタタップ、デブロッキングフィルタの強度、デブロッキングフィルタの形状/形態、適応的サンプルオフセットの適用か否か、適応的サンプルオフセット値、適応的サンプルオフセットのカテゴリー、適応的サンプルオフセットの種類、適応的ループフィルタの適用か否か、適応的ループフィルタ係数、適応的ループフィルタタップ、適応的ループフィルタの形状/形態、二値化/逆二値化方法、コンテキストモデル決定方法、コンテキストモデルアップデート方法、レギュラーモードの実行有無、バイパスモードの実行有無、コンテキストビン、バイパスビン、重要係数、フラグ、最後の重要係数フラグ、係数グループ単位符号化フラグ、最後の重要係数位置、係数値が1よりも大きいかに対するフラグ、係数値が2よりも大きいかに対するフラグ、係数値が3よりも大きいかに対するフラグ、残りの係数値情報、符号(sign)情報、復元された輝度サンプル、復元された色差サンプル、残余輝度サンプル、残余色差サンプル、輝度変換係数、色差変換係数、輝度量子化レベル、色差量子化レベル、変換係数レベルスキャニング方法、復号化器側面動きベクトル探索領域の大きさ、復号化器側面動きベクトル探索領域の形態、復号化器側面動きベクトル探索回数、CTUのサイズ情報、最小ブロックのサイズ情報、最大ブロックのサイズ情報、最大ブロックの深さ情報、最小ブロックの深さ情報、画像ディスプレイ/出力順序、スライス識別情報、スライスタイプ、スライス分割情報、タイル識別情報、タイルタイプ、タイル分割情報、ピクチャタイプ、入力サンプルビット深度、復元サンプルビット深度、残余サンプルビット深度、変換係数ビット深度、量子化レベルビット深度、輝度信号に対する情報、色差信号に対する情報のうちの少なくとも一つの値又は組み合わせ形態が符号化パラメータに含まれ得る。
ここで、フラグ或いはインデックスをシグナリング(signaling)するというのは、エンコーダでは該当フラグ或いはインデックスをエントロピー符号化(Entropy Encoding)してビットストリーム(Bitstream)に含むことを意味することができ、デコーダではビットストリームから当該フラグ或いはインデックスをエントロピー復号化(Entropy Decoding)することを意味することができる。
符号化装置100がインター予測を用いた符号化を行う場合、符号化された現在画像は、後で処理される他の画像に対する参照画像として使用できる。よって、符号化装置100は、符号化された現在画像をさらに復元又は復号化することができ、復元又は復号化された画像を参照画像として参照ピクチャバッファ190に保存することができる。
量子化レベルは、逆量子化部160で逆量子化(dequantization)でき、逆変換部170で逆変換(inverse transform)できる。逆量子化及び/又は逆変換された係数は、加算器175を介して予測ブロックと合わせられ得る。逆量子化及び/又は逆変換された係数と予測ブロックとを合わせることにより、復元ブロック(reconstructed block)が生成できる。ここで、逆量子化及び/又は逆変換された係数は、逆量子化及び逆変換のうちの少なくとも一つが行われた係数を意味し、復元された残余ブロックを意味することができる。
復元ブロックはフィルタ部180を経ることができる。フィルタ部180は、デブロッキングフィルタ(deblocking filter)、サンプル適応的オフセット(Sample Adaptive Offset;SAO)、適応的ループフィルタ(Adaptive Loop Filter;ALF)などの少なくとも一つを復元サンプル、復元ブロック又は復元画像に適用することができる。フィルタ部180はループ内フィルタ(in-loop filter)とも称される。
デブロッキングフィルタは、ブロック間の境界から生じたブロック歪みを除去することができる。デブロッキングフィルタを行うか否かを判断するために、ブロックに含まれている幾つかの列又は行に含まれているサンプルに基づいて、現在ブロックにデブロッキングフィルタを適用するか否かを判断することができる。ブロックにデブロッキングフィルタを適用する場合、必要なデブロッキングフィルタリング強度に応じて、互いに異なるフィルタを適用することができる。
サンプル適応的オフセットを用いて符号化エラーを補償するために、サンプル値に適正オフセット(offset)値を加えることができる。サンプル適応的オフセットは、デブロッキングを行った画像に対してサンプル単位で原本画像とのオフセットを補正することができる。画像に含まれているサンプルを一定数の領域に区分した後、オフセットを行うべき領域を決定し、該当領域にオフセットを適用する方法、又は各サンプルのエッジ情報を考慮してオフセットを適用する方法を使用することができる。
適応的ループフィルタは、復元画像と原画像とを比較した値に基づいてフィルタリングを行うことができる。画像に含まれているサンプルを所定のグループに分けた後、当該グループに適用されるべきフィルタを決定してグループごとに差別的にフィルタリングを行うことができる。適応的ループフィルタを適用するか否かに関連した情報は、符号化ユニット(Coding Unit、CU)別にシグナリングでき、それぞれのブロックに応じて、適用される適応的ループフィルタの形状及びフィルタ係数は異なり得る。
フィルタ部180を経た復元ブロック又は復元画像は、参照ピクチャバッファ190に保存できる。フィルタ部180を経た復元ブロックは、参照画像の一部であり得る。いわば、参照画像は、フィルタ180を経た復元ブロックからなる復元画像であり得る。保存された参照画像は、以後、画面間予測或いは動き補償に使用できる。
図2は本発明が適用される復号化装置の一実施形態による構成を示すブロック図である。
復号化装置200はデコーダ、ビデオ復号化装置又は画像復号化装置であり得る。
図2を参照すると、復号化装置200は、エントロピー復号化部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、加算器255、フィルタ部260、及び参照ピクチャバッファ270を含むことができる。
復号化装置200は、符号化装置100から出力されたビットストリームを受信することができる。復号化装置200は、コンピュータ可読記録媒体に保存されたビットストリームを受信するか、或いは有線/無線伝送媒体を介してストリミングされるビットストリームを受信することができる。復号化装置200は、ビットストリームに対してイントラモード又はインターモードで復号化を行うことができる。また、復号化装置200は、復号化を介して復元された画像又は復号化された画像を生成することができ、復元された画像又は復号化された画像を出力することができる。
復号化に使用される予測モードがイントラモードである場合、スイッチがイントラに転換できる。復号化に使用される予測モードがインターモードである場合、スイッチがインターに転換できる。
復号化装置200は、入力されたビットストリームを復号化し、復元された残余ブロック(reconstructed residual block)を取得することができ、予測ブロックを生成することができる。復元された残余ブロック及び予測ブロックが取得されると、復号化装置200は、復元された残余ブロックと予測ブロックとを加算することにより、復号化の対象となる復元ブロックを生成することができる。復号化対象ブロックは現在ブロックと称されることもある。
エントロピー復号化部210は、ビットストリームに対する確率分布に基づくエントロピー復号化を行うことにより、シンボルを生成することができる。生成されたシンボルは、量子化レベル形態のシンボルを含むことができる。ここで、エントロピー復号化方法は、上述したエントロピー符号化方法の逆過程であり得る。
エントロピー復号化部210は、変換係数レベル(量子化レベル)を復号化するために、変換係数のスキャニング方法によって1次元のベクトル形態係数を2次元のブロック形態に変更することができる。
量子化レベルは、逆量子化部220で逆量子化でき、逆変換部230で逆変換できる。量子化レベルは、逆量子化及び/又は逆変換が行われた結果であって、復元された残余ブロックとして生成できる。このとき、逆量子化部220は、量子化レベルに量子化行列を適用することができる。
イントラモードが使用される場合、イントラ予測部240は、復号化対象ブロック周辺の、既に復号化されたブロックのサンプル値を用いる空間的予測を現在ブロックに対して行うことにより、予測ブロックを生成することができる。
インターモードが使用される場合、動き補償部250は、動きベクトル及び参照ピクチャバッファ270に保存されている参照画像を用いる動き補償を現在ブロックに対して行うことにより、予測ブロックを生成することができる。前記動き補償部250は、動きベクトルの値が整数値を持たない場合に参照画像内の一部の領域に対して補間フィルタを適用して予測ブロックを生成することができる。動き補償を行うために、符号化ユニットを基準に、該当符号化ユニットに含まれている予測ユニットの動き補償方法がスキップモード、マージモード、AMVPモード及び現在ピクチャ参照モードのうちのいずれの方法であるかを判断することができ、各モードに応じて動き補償を行うことができる。
加算器225は、復元された残余ブロック及び予測ブロックを加算して復元ブロックを生成することができる。フィルタ部260は、デブロッキングフィルタ、サンプル適応的オフセット及び適応的ループフィルタのうちの少なくとも一つを復元ブロック又は復元画像に適用することができる。フィルタ部260は復元画像を出力することができる。復元ブロック又は復元画像は、参照ピクチャバッファ270に保存されてインター予測に使用できる。フィルタ部260を経た復元ブロックは、参照画像の一部であり得る。いわば、参照画像は、フィルタ部260を経た復元ブロックからなる復元画像であり得る。保存された参照画像は、以後、画面間予測或いは動き補償に使用できる。
図3は画像を符号化及び復号化するときの画像の分割構造を示す概略図である。図3は一つのユニットが複数のサブユニットに分割される実施形態を概略的に示す。
画像を効率よく分割するために、符号化及び復号化において、符号化ユニット(Coding Unit;CU)が使用できる。画像符号化/復号化の基本単位として符号化ユニットが使用できる。また、画像符号化/復号化の際に、画面内予測モード及び画面間予測モードが区分される単位で符号化ユニットを使用することができる。符号化ユニットは、予測、変換、量子化、逆変換、逆量子化、又は変換係数の符号化/復号化の過程のために使用される基本単位であり得る。
図3を参照すると、画像300は、最大符号化ユニット(Largest Coding Unit;LCU)単位で順次分割され、LCU単位で分割構造が決定される。ここで、LCUは、符号化ツリーユニット(Coding Tree Unit;CTU)と同一の意味で使用できる。ユニットの分割は、ユニットに該当するブロックの分割を意味することができる。ブロック分割情報には、ユニットの深さ(depth)に関する情報が含まれ得る。深さ情報は、ユニットが分割される回数及び/又は程度を示すことができる。一つのユニットは、ツリー構造(tree structure)に基づいて深さ情報をもって階層的に複数のサブユニットに分割できる。いわば、ユニット及び該ユニットの分割によって生成されたサブユニットは、ノード及び該ノードの子ノードにそれぞれ対応することができる。それぞれの分割されたサブユニットは、深さ情報を持つことができる。深さ情報は、CUの大きさを示す情報であり、CUごとに保存できる。ユニット深さは、ユニットが分割された回数及び/又は程度を示すので、サブユニットの分割情報は、サブユニットの大きさに関する情報を含むこともできる。
分割構造は、CTU310内での符号化ユニット(Coding Unit;CU)の分布を意味することができる。このような分布は、一つのCUを複数(2、4、8、16などを含む2以上の正の整数)のCUに分割するか否かによって決定することができる。分割により生成されたCUの横幅と縦幅は、それぞれ分割前のCUの横幅の半分及び縦幅の半分であるか、分割された個数に応じて分割前のCUの横幅よりも小さいサイズ及び縦幅よりも小さいサイズを持つことができる。CUは複数のCUに再帰的に分割できる。再帰的分割によって、分割されたCUの横幅及び縦幅のうちの少なくとも一つのサイズが分割前のCUの横幅及び縦幅のうちの少なくとも一つに比べて減少できる。CUの分割は、予め定義された深さ又は予め定義されたサイズまで再帰的に行われ得る。例えば、CTUの深さは0であり、最小符号化ユニット(Smallest Coding Unit;SCU)の深さは予め定義された最大深さであり得る。ここで、CTUは、上述したように、最大の符号化ユニットサイズを持つ符号化ユニットであり、SCUは、最小の符号化ユニットのサイズを持つ符号化ユニットであり得る。CTU310から分割が始まり、分割によってCUの横幅及び/又は縦幅が減少するたびに、CUの深さは1ずつ増加する。例えば、それぞれの深さ別に、分割されないCUは2N×2Nサイズを有することができる。また、分割されるCUの場合、2N×2NサイズのCUが、N×Nサイズを有する4つのCUに分割できる。Nのサイズは深さが1ずつ増加するたびに半分に減少することができる。
また、CUが分割されるか否かに対する情報は、CUの分割情報を介して表現できる。分割情報は1ビットの情報であり得る。SCUを除いた全てのCUは、分割情報を含むことができる。例えば、分割情報の値が第1の値であれば、CUが分割されなくてもよく、分割情報の値が第2の値であれば、CUが分割されてもよい。
図3を参照すると、深さ0のCTUは64x64ブロックであり得る。0は最小深さであり得る。深さ3のSCUは8x8ブロックであり得る。3は最大深さであり得る。32x32ブロック及び16x16ブロックのCUはそれぞれ深さ1及び深さ2で表現できる。
例えば、一つの符号化ユニットが4つの符号化ユニットに分割される場合、分割された4つの符号化ユニットの横幅及び縦幅は、分割される前の符号化ユニットの横幅及び縦幅と比較してそれぞれの半分のサイズを持つことができる。一例として、32x32サイズの符号化ユニットが4つの符号化ユニットに分割される場合、分割された4つの符号化ユニットはそれぞれ16x16のサイズを持つことができる。一つの符号化ユニットが4つの符号化ユニットに分割される場合、符号化ユニットは四分木(quad-tree)状に分割(四分木分割、quad-tree partition)されたといえる。
例えば、一つの符号化ユニットが2つの符号化ユニットに分割される場合、分割された2つの符号化ユニットの横幅或いは縦幅は、分割される前の符号化ユニットの横幅或いは縦幅と比較して半分のサイズを持つことができる。一例として、32x32サイズの符号化ユニットが2つの符号化ユニットに縦分割される場合、分割された2つの符号化ユニットは、それぞれ16x32のサイズを有することができる。一例として、8x32サイズの符号化ユニットが2つの符号化ユニットに横分割される場合、分割された2つの符号化ユニットは、それぞれ8x16のサイズを有することができる。一つの符号化ユニットが2つの符号化ユニットに分割される場合、符号化ユニットは二分木(binary-tree)状に分割(二分木分割、binary-tree partition)されたといえる。
例えば、一つの符号化ユニットが3つの符号化ユニットに分割される場合、分割される前に符号化ユニットの横幅或いは縦幅を1:2:1の比率で分割することにより、3つの符号化ユニットに分割することができる。一例として、16x32サイズの符号化ユニットが3つの符号化ユニットに横分割される場合、分割された3つの符号化ユニットは、上側からそれぞれ16x8、16x16及び16x8のサイズを有することができる。一例として、32x32サイズの符号化ユニットが3つの符号化ユニットに縦分割される場合、分割された3つの符号化ユニットは、左側からそれぞれ8x32、16x32及び8x32のサイズを有することができる。一つの符号化ユニットが3つの符号化ユニットに分割される場合、符号化ユニットは、三分木(ternary-tree)状に分割(三分木分割、ternary-tree partition)されたといえる。
図3のCTU320は、四分木分割、二分木分割及び三分木分割がすべて適用されたLCUの一例である。
前述したように、CTUを分割するために、四分木分割、二分木分割及び三分木分割のうちの少なくとも一つが適用できる。それぞれの分割は、所定の優先順位に基づいて適用できる。例えば、CTUに対して四分木分割が優先的に適用できる。それ以上四分木分割できない符号化ユニットは、四分木のリーフノードに該当することができる。四分木のリーフノードに該当する符号化ユニットは、二分木及び/又は三分木のルートノードになることができる。つまり、四分木のリーフノードに該当する符号化ユニットは、二分木分割されるか、三分木分割されるか、或いはそれ以上分割できない。このとき、四分木のリーフノードに該当する符号化ユニットを二分木分割又は三分木分割して生成された符号化ユニットに対しては、再び四分木分割が行われないようにすることにより、ブロックの分割及び/又は分割情報のシグナリングを効果的に行うことができる。
四分木の各ノードに該当する符号化ユニットの分割は、クワッド分割情報を用いてシグナリングできる。第1の値(例えば、「1」)を有するクワッド分割情報は、該当符号化ユニットが四分木分割されることを指示することができる。第2の値(例えば、「0」)を有するクワッド分割情報は、当該符号化ユニットが四分木分割されないことを指示することができる。クワッド分割情報は、所定の長さ(例えば、1ビット)を有するフラグであり得る。
二分木分割と三分木分割との間には、優先順位が存在しないこともある。つまり、四分木のリーフノードに該当する符号化ユニットは、二分木分割又は三分木分割できる。また、二分木分割又は三分木分割により生成された符号化ユニットは、再び二分木分割又は三分木分割されるか、或いはそれ以上分割できない。
二分木分割と三分木分割との間に優先順位が存在しない場合の分割は、複合型ツリー分割(multi-type tree partition)と呼ぶことがある。すなわち、四分木のリーフノードに該当する符号化ユニットは、複合型ツリー(multi-type tree)のルートノードになることができる。複合型ツリーの各ノードに該当する符号化ユニットの分割は、複合型ツリーの分割か否かの情報、分割方向情報及び分割ツリー情報のうちの少なくとも一つを用いてシグナリングできる。前記複合型ツリーの各ノードに該当する符号化ユニットの分割のために、分割か否かの情報、分割方向情報及び分割ツリー情報が順次シグナリングされてもよい。
第1の値(例えば、「1」)を有する複合型ツリーの分割か否かの情報は、当該符号化ユニットが複合型ツリー分割されることを指示することができる。第2の値(例えば、「0」)を有する複合型ツリーの分割か否かの情報は、該当符号化ユニットが複合型ツリー分割されないことを指示することができる。
複合型ツリーの各ノードに該当する符号化ユニットが複合型ツリー分割される場合、当該符号化ユニットは、分割方向情報をさらに含むことができる。分割方向情報は、複合型ツリー分割の分割方向を指示することができる。第1の値(例えば、「1」)を有する分割方向情報は、当該符号化ユニットが縦方向に分割されることを指示することができる。第2の値(例えば、「0」)を有する分割方向情報は、当該符号化ユニットが横方向に分割されることを指示することができる。
複合型ツリーの各ノードに該当する符号化ユニットが複合型ツリー分割される場合、当該符号化ユニットは、分割ツリー情報をさらに含むことができる。分割ツリー情報は、複合型ツリー分割のために使用されたツリーを指示することができる。第1の値(例えば、「1」)を有する分割ツリー情報は、当該符号化ユニットが二分木分割されることを指示することができる。第2の値(例えば、「0」)を有する分割ツリー情報は、当該符号化ユニットが三分木分割されることを指示することができる。
分割か否かの情報、分割ツリー情報及び分割方向情報は、それぞれ所定の長さ(例えば、1ビット)を有するフラグであり得る。
クワッド分割情報、複合型ツリーの分割か否かの情報、分割方向情報及び分割ツリー情報のうちの少なくとも一つは、エントロピー符号化/復号化できる。前記情報のエントロピー符号化/復号化のために、現在符号化ユニットに隣接する周辺符号化ユニットの情報が利用できる。例えば、左側符号化ユニット及び/又は上側符号化ユニットの分割形態(分割か否か、分割ツリー及び/又は分割方向)は、現在符号化ユニットの分割形態に類似する確率が高い。よって、周辺符号化ユニットの情報に基づいて、現在符号化ユニットの情報のエントロピー符号化/復号化のためのコンテキスト情報を誘導することができる。このとき、周辺符号化ユニットの情報には、当該符号化ユニットのクワッド分割情報、複合型ツリーの分割か否かの情報、分割方向情報及び分割ツリー情報のうちの少なくとも一つが含まれ得る。
他の実施形態として、二分木分割と三分木分割のうち、二分木分割が優先的に実行できる。すなち、二分木分割が先に適用され、二分木のリーフノードに該当する符号化ユニットを三分木のルートノードとして設定することもできる。この場合、三分割木のノードに該当する符号化ユニットに対しては、四分木分割及び二分木分割が行われないことがある。
四分木分割、二分木分割及び/又は三分木分割によってそれ以上分割されない符号化ユニットは、符号化、予測及び/又は変換の単位になることができる。すなわち、予測及び/又は変換のために符号化ユニットがそれ以上分割されないことがある。したがって、符号化ユニットを予測ユニット及び/又は変換ユニットに分割するための分割構造、分割情報などがビットストリームに存在しないことがある。
ただし、分割の単位となる符号化ユニットのサイズが最大変換ブロックのサイズよりも大きい場合、該当符号化ユニットは、最大変換ブロックのサイズと同じか或いは小さいサイズになるまで再帰的に分割できる。例えば、符号化ユニットのサイズが64x64であり、最大変換ブロックのサイズが32x32である場合、前記符号化ユニットは、変換のために、4つの32x32ブロックに分割できる。例えば、符号化ユニットのサイズが32x64であり、最大変換ブロックのサイズが32x32である場合、前記符号化ユニットは、変換のために、2つの32x32ブロックに分割できる。この場合には、変換のための符号化ユニットの分割か否かは、別にシグナリングされず、前記符号化ユニットの横又は縦と最大変換ブロックの横又は縦との比較によって決定できる。例えば、符号化ユニットの横が最大変換ブロックの横よりも大きい場合、符号化ユニットは、縦に2等分できる。また、符号化ユニットの縦が最大変換ブロックの縦よりも大きい場合、符号化ユニットは横方向に2等分できる。
符号化ユニットの最大及び/又は最小サイズに関する情報、変換ブロックの最大及び/又は最小サイズに関する情報は、符号化ユニットの上位レベルでシグナリング又は決定できる。前記上位レベルは、例えば、シーケンスレベル、ピクチャレベル、スライスレベルなどであってもよい。例えば、符号化ユニットの最小サイズは4x4と決定されてもよい。例えば、変換ブロックの最大サイズは64x64と決定されてもよい。例えば、変換ブロックの最小サイズは4x4と決定されてもよい。
四分木のリーフノードに該当する符号化ユニットの最小サイズ(四分木の最小サイズ)に関する情報、及び/又は複合型ツリーのルートノードからリーフノードに至る最大深さ(複合型ツリーの最大深さ)に関する情報は、符号化ユニットの上位レベルでシグナリング又は決定できる。前記上位レベルは、例えば、シーケンスレベル、ピクチャレベル、スライスレベルなどであってもよい。前記四分木の最小サイズに関する情報、及び/又は前記複合型ツリーの最大深さに関する情報は、画面内スライスと画面間スライスのそれぞれに対してシグナリング又は決定できる。
CTUのサイズと変換ブロックの最大サイズに関する差分情報は、符号化ユニットの上位レベルでシグナリング又は決定できる。前記上位レベルは、例えば、シーケンスレベル、ピクチャレベル、スライスレベルなどであってもよい。二分木の各ノードに該当する符号化ユニットの最大サイズ(二分木の最大サイズ)に関する情報は、符号化ツリーユニットの大きさと前記差分情報に基づいて決定できる。三分木の各ノードに該当する符号化ユニットの最大サイズ(三分木の最大サイズ)は、スライスのタイプによって異なる値を持つことができる。例えば、画面内スライスである場合には、三分木の最大サイズは32x32であってもよい。また、例えば、画面間スライスである場合には、三分木の最大サイズは128x128であってもよい。例えば、二分木の各ノードに該当する符号化ユニットの最小サイズ(二分木の最小サイズ)及び/又は三分木の各ノードに該当する符号化ユニットの最小サイズ(三分木の最小サイズ)は、符号化ブロックの最小サイズとして設定できる。
別の例として、二分木の最大サイズ及び/又は三分木の最大サイズは、スライスレベルでシグナリング又は決定できる。また、二分木の最小サイズ及び/又は三分木の最小サイズは、スライスレベルでシグナリング又は決定できる。
前述した様々なブロックのサイズ及び深さ情報に基づいて、クワッド分割情報、複合型ツリーの分割か否かの情報、分割ツリー情報及び/又は分割方向情報などがビットストリームに存在しても存在しなくてもよい。
例えば、符号化ユニットのサイズが四分木の最小サイズよりも大きくなければ、前記符号化ユニットはクワッド分割情報を含まず、当該クワッド分割情報は第2の値に推論できる。
例えば、複合型ツリーのノードに該当する符号化ユニットのサイズ(横及び縦)が二分木の最大サイズ(横及び縦)、及び/又は三分木の最大サイズ(横及び縦)よりも大きい場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットのサイズ(横及び縦)が二分木の最小サイズ(横及び縦)と同じであるか、或いは符号化ユニットのサイズ(横及び縦)が三分木の最小サイズ(横及び縦)の二倍と同じである場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。なぜなら、前記符号化ユニットを二分木分割及び/又は三分木分割する場合は、二分木の最小サイズ及び/又は三分木の最小サイズよりも小さい符号化ユニットが生成されるためである。
又は、複合型ツリーのノードに該当する符号化ユニットの複合型ツリー内の深さが複合型ツリーの最大深さと同じである場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットに対して垂直方向の二分木分割、水平方向の二分木分割、垂直方向の三分木分割及び水平方向の三分木分割のうちの少なくとも一つが可能である場合にのみ、前記複合型ツリーの分割か否かの情報をシグナリングすることができる。そうでない場合、前記符号化ユニットは、二分木分割及び/又は三分木分割されないことがある。それにより、前記複合型ツリーの分割か否かの情報は、シグナリングされず、第2の値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットに対して垂直方向の二分木分割と水平方向の二分木分割がすべて可能であるか、或いは垂直方向の三分木分割と水平方向の三分木分割がすべて可能である場合にのみ、前記分割方向の情報をシグナリングすることができる。そうでない場合、前記分割方向情報は、シグナリングされず、分割が可能な方向を指示する値に推論できる。
又は、複合型ツリーのノードに該当する符号化ユニットに対して垂直方向の二分木分割と垂直方向の三分木分割がすべて可能であるか、或いは水平方向の二分木分割と水平方向の三分木分割がすべて可能である場合にのみ、前記分割ツリー情報をシグナリングすることができる。そうでない場合、前記分割ツリー情報は、シグナリングされず、分割が可能なツリーを指示する値に推論できる。
上述した内容に基づいて、本発明による画像符号化/復号化方法について詳細に考察する。
次に、本発明に係る変換及び量子化の過程を説明する。
画面内または画面間予測後に生成された残余信号に変換および/または量子化過程を行うことにより、量子化されたレベルが生成できる。前記残余信号は、原本ブロックと予測ブロック(画面内予測ブロック或いは画面間予測ブロック)間の差分により生成できる。ここで、予測ブロックは、画面内予測または画面間予測によって生成されたブロックであり得る。また、前記予測ブロックは、画面内予測及び画面間予測のうちの少なくとも一つ、或いは少なくとも一つの組み合わせによって生成されたブロックであり得る。ここで、変換は、1次変換及び2次変換のうちの少なくとも一つを含むことができる。残余信号に対して1次変換を行うと、変換係数が生成でき、変換係数に2次変換を行って2次変換係数を生成することができる。
一方、残余信号は、量子化過程の一環として変換過程を介して周波数ドメインに変換することができる。この際、行う1次変換は、DCT type2(DCT-II)の他に、さまざまなDCT、DSTカーネルを使用することができ、これらの変換カーネルは、残余信号に対して水平および/または垂直方向に対して1次元変換(1D transform)をそれぞれ行う分離変換(separable transform)で変換が行われてもよく、または2次元非分離変換(2D Non-separable transform)で変換が行われてもよい。
一例として、変換に使用されるDCT、DST typeは、下記表に示すようにDCT-IIの他にDCT-V、DCT-VIII、DST-I、DST-VIIなどのDCTベース変換及びDSTベース変換のうちの少なくとも一つを1D変換の際に適応的に使用することができ、例えば、表1及び表2の例のように変換セット(Transform set)を構成して、変換に使用されたDCTまたはDSTタイプを誘導することができる。
例えば、図4に示すように、画面内予測モードに応じて、水平又は垂直方向に対して互いに異なる変換セット(Transform set)を定義した後、符号化器/復号化器において、現在符号化/復号化対象ブロックの画面内予測モード及びこれに対応する変換セットに含まれている変換を用いて変換及び/又は逆変換を行うことができる。
この場合、変換セットは、エントロピー符号化/復号化されるのではなく、符号化器/復号化器で同一のルールに基づいて定義できる。この場合、当該変換セットに属する変換のうちのどの変換が使用されたかを指し示す情報がエントロピー符号化/復号化できる。
例えば、ブロックのサイズが32x32以下である場合、画面内予測モードに応じて、表2の例のように合計3つの変換セットを構成し、水平方向の変換と垂直方向の変換としてそれぞれ3つの変換を用いて合計9つの多重変換方法を組み合わせて行った後、最適の変換方法で残余信号を符号化/復号化することにより、符号化効率を向上させることができる。このとき、一つの変換セットに属する3つの変換のうちどの変換が使用されたかについての情報をエントロピー符号化/復号化するために、切り捨てられた単項(Truncated Unary)2値化(Binarization)を使用することもできる。このとき、垂直変換及び水平変換のうちの少なくとも一つに対して、変換セットに属する変換のうちのどの変換が使用されたかを指し示す情報がエントロピー符号化/復号化できる。
符号化器では、前述した1次変換が完了した後、図5の例のように変換係数(Transformed coefficients)に対するエネルギー集中度を高めるために2次変換(Secondary transform)を行うことができる。2次変換も水平及び/又は垂直方向に対して1次元変換をそれぞれ実行する分離変換を行うこともでき、又は2次元非分離変換を行うこともでき、使用された変換情報がシグナリングされるか或いは現在及び周辺符号化情報に応じて符号化器/復号化器で暗黙的に誘導され得る。例えば、1次変換のように2次変換に対する変換セットを定義することができ、変換セットは、エントロピー符号化/復号化されるのではなく、符号化器/復号化器で同一のルールに基づいて定義できる。この場合、当該変換セットに属する変換のうちのどの変換が使用されたかを指し示す情報がシグナリングでき、画面内又は画面間予測による残余信号のうちの少なくとも一つに適用できる。
変換セット別に変換候補(transform candidates)の個数又は種類のうちの少なくとも一つは異なり、変換候補の個数又は種類のうちの少なくとも一つはブロック(CU、PU、TUなど)の位置、大きさ、形状、予測モード(intra/inter mode)、又は画面内予測モードの方向性/非方向性のうちの少なくとも一つを考慮して可変的に決定されることも可能である。
復号化器では、2次逆変換を行うか否かに応じて2次逆変換を行うことができ、2次逆変換の実行結果に、1次逆変換を行うか否かに応じて1次逆変換を行うことができる。
前述した1次変換及び2次変換は輝度/色差成分のうちの少なくとも一つの信号成分に適用されるか、或いは任意の符号化ブロックのサイズ/形状に応じて適用でき、任意の符号化ブロックでの使用有無、及び使用された1次変換/2次変換を指し示すインデックスをエントロピー符号化/復号化するか、又は現在/周辺符号化情報のうちの少なくとも一つに基づいて符号化器/復号化器で暗黙的に誘導することができる。
1次変換及び/又は2次変換が行われた結果または残余信号に量子化を行うことにより、量子化されたレベルを生成することができる。量子化されたレベルは、画面内予測モード又はブロックサイズ/形状のうちの少なくとも一つを基準に、右上側対角スキャニング、垂直スキャニング及び水平スキャニングのうちの少なくとも一つに基づいてスキャンできる。例えば、右上側(up-right)対角スキャニングを用いてブロックの係数をスキャンすることにより、1次元ベクトル或いは配列形態に変更することができる。変換ブロックのサイズ及び/又は画面内予測モードに応じて右上側対角スキャニングの代わりに、2次元のブロック形状係数を列方向にスキャンする垂直スキャニング、2次元のブロック形状係数を行方向にスキャンする水平スキャニングが使用されてもよい。スキャンされた量子化レベルは、エントロピー符号化されてビットストリームに含まれ得る。
復号化器では、ビットストリームをエントロピー復号化して量子化レベルを生成することができる。1次元ベクトル或いは配列形態の量子化レベルは、逆スキャン(Inverse Scanning)されて2次元のブロック形状に整列できる。この際、逆スキャニングの方法として右上側対角スキャニング、垂直スキャニング及び水平スキャニングのうちの少なくとも一つが行われ得る。
量子化レベルに逆量子化を行うことができ、2次逆変換を行うか否かに応じて2次逆変換を行うことができ、2次逆変換が行われた結果に、1次逆変換を行うか否かに応じて1次逆変換を行うことにより、復元された残余信号が生成できる。
一例として、現在符号化ブロックのサイズが8x8であるとき、8x8ブロックに対する残余信号は、1次変換、2次変換及び量子化後、4つの4x4サブブロック別に、図6に示された3つのスキャニング順序(Scanning order)方法のうちの少なくとも一つに基づいて、量子化された変換係数をスキャンしながら、エントロピー符号化することができる。また、量子化された変換係数を逆スキャンしながら、エントロピー復号化することができる。逆スキャンされた量子化変換係数は、逆量子化後の変換係数になり、2次逆変換又は1次逆変換のうちの少なくとも一つが行われ、復元された残余信号が生成できる。
以下、図7乃至図18を参照して、本発明の一実施形態に係る変換係数のスキャニング方法について詳細に説明する。
符号化器では、現在ブロックの残余信号に対する1次変換の結果として生成される変換係数、1次変換結果に2次変換をさらに行うことにより生成される変換係数、又は量子化を行うことにより生成される係数のうちの一つ以上をスキャニング単位及びスキャニング順序に基づいてスキャン(Scan)することができる。
本明細書では、1次変換の出力、2次変換の出力、量子化の出力、1次及び2次変換の出力、1次変換及び量子化の出力、1次及び2次変換及び量子化の出力を変換係数と通称することができる。ここで、変換なしに量子化のみ行われた結果である係数に対しても、便宜上、変換係数と総称する。
復号化器では、エントロピー復号化された変換係数を逆変換の実行前に一つ以上のスキャニング単位及びスキャニング順序に基づいて逆スキャン(Inverse Scan)することができる。ここで、変換係数は、エントロピー復号化及び/又は逆量子化された変換係数であり得る。
以下、符号化器を基準に変換係数のスキャニング単位及びスキャニング順序について説明するが、復号化器でも符号化器と同様の方法で変換係数の逆スキャニング単位及び逆スキャニング順序が説明できる。
符号化器における変換係数は量子化されてスキャンできる。このとき、スキャンされた変換係数は、符号化器でエントロピー符号化することができる。
復号化器では、エントロピー復号化された変換係数を逆スキャン(Inverse Scan)してブロック形状に整列することができる。ブロック形状に整列された変換係数には、逆量子化、2次逆変換、2次逆変換後の1次逆変換、又は1次逆変換を行うことができる。この際、ブロック形状に整列された変換係数は、逆量子化された後、逆変換(2次逆変換及び/又は1次逆変換)が行われ得る。逆変換された変換係数は、現在ブロックの復元された残余信号になることができる。
本明細書では、逆量子化の入力、2次逆変換の入力、1次逆変換の入力、1次及び2次逆変換の入力、逆量子化及び1次逆変換の入力、逆量子化及び1次及び2次逆変換の入力を変換係数と総称することができる。ここで、変換なしに逆量子化の入力である係数に対しても、便宜上、変換係数と総称する。
以下、スキャン(scan)又はスキャニング(scanning)は、符号化器/復号化器でスキャン或いは逆スキャンすることを意味する場合がある。また、復号化器での逆スキャンをスキャンと表現することもできる。そして、スキャニング順序は、スキャニング方法を意味する場合もある。このとき、スキャニング順序は、対角スキャニング、垂直スキャニング及び水平スキャニングのうちの少なくとも一つのスキャニングを指示することができる。また、スキャニング順序は、前記スキャニングに限定されるものではなく、一番目の列を他の列よりも優先的にスキャンする第1垂直優先スキャニング、一番目の列と二番目の列を他の列よりも優先的にスキャンする第2垂直優先スキャニング、一番目の行を他の行よりも優先的にスキャンする第1水平優先スキャニング、一番目の行と二番目の行を他の行よりも優先的にスキャンする第2水平優先スキャニング、右上側(up-right)対角スキャニング、及び左下側(down-left)対角スキャニングなどのうちの少なくとも一つを含むことができる。
また、個別係数は、変換係数それぞれを意味することができる。
また、本明細書において、第1垂直優先スキャニング、第2垂直優先スキャニング、第1水平優先スキャニング、第2水平優先スキャニングはそれぞれ、第1垂直優先スキャニング順序、第2垂直優先スキャニング順序、第1水平優先スキャニング順序、及び第2水平優先スキャニング順序を意味することができる。
また、前記第1(又は第2)垂直優先スキャニングは、一番目の列(又は一番目の列と二番目の列)を優先的にスキャンすることに限定されず、選択された一つ(又は二つの)の列を優先的にスキャンすることができる。
また、前記第1(又は第2)水平優先スキャニングは、一番目の行(又は一番目の行と二番目の行)を優先的にスキャンすることに限定されず、選択された一つ(又は二つの)の行を優先的にスキャンすることができる。ここで、優先的にスキャンされる列又は行の選択は、ビットストリームによってシグナリングされる情報、符号化器/復号化器で予め定められた情報、符号化パラメータ及びルックアップテーブルのうちの少なくとも一つに基づいて行われ得る。又は、選択された任意のN個の行又は列を他の行又は列に優先してスキャンするか、或いは他の行又は列の後順位でスキャンすることもできる。
本発明の一実施形態に係るスキャニング順序の開始位置及び終了位置はそれぞれブロックの左上側及び右下側と定義することができる。又は、その逆に、スキャニング順序の開始位置及び終了位置はそれぞれブロックの右下側及び左上側と定義することもできる。例えば、符号化器と復号化器でブロック内における左上側位置を開始位置とし、右下側位置を終了位置とするスキャニング順序を定義するが、変換係数のエントロピー符号化/復号化の際には、当該スキャニング順序の逆順にスキャニングを行うことができる。これと同様に、例えば、符号化器と復号化器でブロック内における右下側位置を開始位置とし、左上側位置を終了位置とするスキャニング順序を定義するが、変換係数のエントロピー符号化/復号化の際には、当該スキャニング順序の逆順にスキャニングを行うことができる。
一方、本発明に係るスキャニング順序の開始位置及び終了位置は、上記の例に限定されず、ブロック内の任意の2つのピクセルの位置をスキャニング順序の開始位置及び終了位置として決定することもできる。一例として、前記任意の二つのピクセルのうちの少なくとも一つは、コーナーピクセルであり得る。
現在ブロック内の固定されたサイズ(例えば、4x4の正方形サブブロック)に属する係数は、一つの係数グループ(Coefficient Group、CG)として決定できる。すなわち、変換係数をエントロピー符号化/復号化するために、現在ブロック内のN個の係数を1つのグループとする係数グループを定義することができる。このとき、Nは0以上の正の整数であり得る。例えば、Nは16であり得る。また、前記係数グループのサイズはJxKのサイズを持つことができ、合計JxK個の係数が一つの係数グループに含まれ得る。ここで、J及びKは正の整数であり、互いに異なる値を持ってもよく、同じ値を持ってもよい。また、前記J及びKのうちの少なくとも一つは、符号化器から復号化器へシグナリングされる情報であるか、或いは符号化器/復号化器で予め設定された値であり得る。
一方、変換係数をエントロピー符号化/復号化するためのフラグ(Flag)、及び/又は構文要素(Syntax element)が係数グループ単位又は個別係数単位ごとに決定できる。すなわち、変換係数に対するフラグ及び/又は構文要素のうちの少なくとも一つは、係数グループ単位又は個別係数単位でエントロピー符号化/復号化できる。
ここで、フラグ及び/又は構文要素は、coded_sub_block_flag(以下、CSBF)、sig_coeff_flag、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_abs_level_greater3_flag、coeff_abs_level_greater4_flag、coeff_abs_level_greater5_flag、coeff_sign_flag、coeff_abs_level_remaining_valueのうちの少なくとも一つを含むことができる。
coded_sub_block_flagは、各CGに0ではない変換係数が一つでも存在するかについて指示する構文要素であり得る。
sig_coeff_flagは、変換係数が0であるか否かを指示する構文要素であり得る。
coeff_abs_level_greater1_flagは、変換係数の絶対値が1よりも大きいか否かを指示する構文要素であり得る。
coeff_abs_level_greater2_flagは、変換係数の絶対値が2よりも大きいか否かを指示する構文要素であり得る。
coeff_abs_level_greater3_flagは、変換係数の絶対値が3よりも大きいか否かを指示する構文要素であり得る。
coeff_abs_level_greater4_flagは、変換係数の絶対値が4よりも大きいか否かを指示する構文要素であり得る。
coeff_abs_level_greater5_flagは、変換係数の絶対値が5よりも大きいか否かを指示する構文要素であり得る。
coeff_sign_flagは、変換係数の符号(sign)を指示する構文要素であり得る。
coeff_abs_level_remaining_valueは、変換係数の絶対値がNよりも大きい場合、変換係数の絶対値からNを減算した値を指示する構文要素であり得る。ここで、Nは正の整数であり得る。
例えば、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flagがエントロピー符号化/復号化される場合の前記coeff_abs_level_remaining_valueは、変換係数の絶対値が3よりも大きい場合の変換係数の絶対値から3を減算した値を指示する構文要素であり得る。
別の例として、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_abs_level_greater3_flag、coeff_abs_level_greater4_flag、coeff_abs_level_greater5_flagがエントロピー符号化/復号化される場合の前記coeff_abs_level_remaining_valueは、変換係数の絶対値が6よりも大きい場合の変換係数の絶対値から6を減算した値を指示する構文要素であり得る。
一方、以下で説明するスキャニング順序を用いて現在ブロック内の変換係数をスキャンしながら変換係数をエントロピー符号化/復号化するためのフラグ及び構文要素のうちの少なくとも一つがエントロピー符号化/復号化できる。
そして、変換係数をエントロピー符号化/復号化するためのフラグ及び構文要素のうちの少なくとも一つは、互いに異なるスキャニング順序に基づいてスキャンされてエントロピー符号化されるか、或いはエントロピー復号化されてスキャンされることも可能である。この際、変換係数をエントロピー符号化/復号化するためのフラグ及び構文要素のうちの少なくとも一つのスキャニング順序は、現在ブロックの符号化パラメータに基づいて決定できる。
一方、スキャニングの対象となる変換係数は、量子化された変換係数レベル(Quantized Transformed Coefficient Level)、変換係数(Transform Coefficient)、量子化されたレベル(Quantized Level)、及び残余信号係数のうちの少なくとも一つを意味することができる。
また、変換係数に対するスキャニング順序のうちの少なくとも一つを用いて、量子化行列(Quantization Matrix或いはScaling List)に対してもスキャニングを行うことができる。この場合、変換係数に適用されるスキャニング順序と量子化行列に適用されるスキャニング順序は、互いに対応することができる。すなわち、前記二つのスキャニング順序のうちのいずれか一方は、もう一方に基づいて誘導できる。例えば、両者は同一であってもよく、所定の方法によって誘導されることにより互いに異なってもよい。
また、以下、便宜上、符号化器でスキャンを行う方法について説明するが、これに限定されるものではなく、復号化器でも、符号化器でスキャンを行う方法に基づいて逆スキャンを行うことができる。
次に、スキャニング単位について説明する。
変換係数は、一つ以上のスキャニング単位でスキャンできる。本発明の一実施形態に係る変換係数のスキャニング単位は、領域単位、係数グループ単位、個別係数単位、及び混合単位のうちのいずれかであり得る。ここで、領域単位でスキャニングが行われることは、現在ブロックを含むブロックのうちの少なくとも一つが含まれている領域内の変換係数それぞれに対してスキャニングが行われることを意味することができる。このとき、領域のサイズは、現在ブロックのサイズと同じかそれより大きい。このとき、領域単位でスキャニングを行うときに領域内で係数グループ単位に区分した後、各係数グループ間でスキャニングが行われてもよく、各係数グループ内に存在する変換係数に対して行われてもよい。係数グループ単位でスキャニングが行われることは、現在ブロックを少なくとも一つの係数グループに区分した後、各係数グループ間でスキャニングが行われ、各係数グループ内に存在する変換係数に対してスキャニングが行われることを意味する。すなわち、係数グループ単位スキャニングは、係数グループ間でスキャニングを行うことができ、係数グループ内の変換係数に対してスキャニングを行うことができることを意味する。そして、個別係数単位でスキャニングが行われることは、係数グループを使用せずに、現在ブロック内の変換係数それぞれに対してスキャニングが行われることを意味することができる。
一例として、現在ブロック内の変換係数は、2Nx2N、2NxN、Nx2N、3NxN、Nx3N、3Nx2N、2Nx3N、4NxN、Nx4N、4Nx3N、3Nx4N、8NxN、Nx8N、8Nx7N、7Nx8N(Nは1以上の整数)のサイズまたは形状のうちの一つ以上の係数グループ単位でスキャンされるか、或いは個別係数単位でスキャンされ得る。ここで、形態は、ブロックの形状が正方形、非正方形、縦方向に長さが長い非正方形、及び横方向に長さが長い非正方形のうちの少なくとも一つを意味することができる。
スキャニング単位は、現在ブロックのサイズに基づいて決定できる。
具体的には、スキャニング単位は、現在ブロックのサイズと所定のしきい値との比較に基づいて決定できる。ここで、所定のしきい値は、スキャニング単位を決定する基準サイズを意味することができ、最小値又は最大値のうちの少なくとも一つで表現できる。
一方、所定のしきい値は、符号化器/復号化器に予め定められた固定値であってもよく、現在ブロックの符号化/復号化関連パラメータ(例えば、予測モード(画面間予測又は画面内予測など)、画面内予測モード、1次変換及び2次変換のうちの少なくとも一つを行うか否か、変換タイプ、スキャニング順序など)に基づいて可変的に誘導されてもよく、ビットストリーム(例えば、シーケンス、ピクチャ、スライス、タイル、CTU、ブロックレベルなど)を介してシグナリングされてもよい。
一例として、横長さと縦長さとの積がN(例えば、N=256)以上であるブロックは、係数グループ単位でスキャンし、そうでないブロックは、個別係数単位でスキャンすることができる。
他の例として、横長さ及び縦長さのうちの最小の長さがM(例えば、M=8)以上であるブロックは、係数グループ単位でスキャンし、そうでないブロックは、個別係数単位でスキャンすることができる。しかし、上記の例に限定されず、例えば、前記しきい値(N又はM)以下のブロックを係数グループ単位でスキャンし、そうでないブロックは個別係数単位でスキャンすることもできる。
一方、スキャニング単位は、現在ブロックの形状に基づいて決定できる。
一例として、現在ブロックが長方形の形状であるとき、個別係数単位でスキャンすることができる。
他の例として、現在ブロックが正方形の形状であるとき、係数グループ単位でスキャンすることができる。しかし、上記の例に限定されず、例えば、長方形の現在ブロックを係数グループ単位でスキャンし、正方形の現在ブロックを個別係数単位でスキャンすることもできる。
一方、スキャニング単位の決定は、現在ブロックの画面内予測モードに基づいて決定できる。このとき、画面内予測モードの値自体が考慮されてもよく、画面内予測モードが非方向性モード(DCモード或いはPlanarモード)であるか否か又は画面内予測モードの方向性(例えば、垂直方向或いは水平方向)が考慮されてもよい。
一例として、現在ブロックの画面内予測モードがDCモード及びPlanarモードのうちの少なくとも一つである場合には、係数グループ単位でスキャンすることができる。
他の例として、現在ブロックの画面内予測モードが垂直モードである場合、個別係数単位でスキャンすることができる。
別の例として、現在ブロックの画面内予測モードが水平モードである場合は、個別係数単位でスキャンすることができる。しかし、上記の例に限定されず、例えば、非方向性モードの場合には個別係数単位でスキャンし、垂直モード又は水平モードの場合には係数グループ単位でスキャンすることもできる。
一方、スキャニング単位に関する情報は、符号化器から復号化器へシグナリングできる。これにより、復号化器は、シグナリングされたスキャニング単位に関する情報を用いて現在ブロックのスキャニング単位を決定することもできる。
図7乃至図9は本発明の一実施形態に係るスキャニング単位を説明するための図である。
スキャニング単位は、現在ブロックのサイズ及び/又は形状に応じて、予め定義された固定サイズの係数グループ単位或いは個別係数単位で決定されてもよい。例えば、現在ブロックと同じ横:縦の比率を有する単一係数グループが使用できる。
係数グループ単位の大きさは、現在ブロックの横:縦の比率に基づいて決定できる。そして、現在ブロック内の変換係数は同じ係数グループ単位でスキャンできる。ここで、同じ係数グループ単位とは、係数グループ単位のサイズ及び係数グループ単位の形状のうちの少なくとも一つが同一であることを意味することができる。
一例として、サイズ16x16の現在ブロック内の変換係数を8x8の同じ係数グループ単位でスキャンすることができる。
一例として、サイズ8x16の現在ブロック内の変換係数を4x8の同じ係数グループ単位でスキャンすることができる。
一例として、サイズ16x8の現在ブロック内の変換係数を8x4の同じ係数グループ単位でスキャンすることができる。
一例として、図7の(a)に示すように、サイズ16x16の現在ブロック内の変換係数を4x4の同じ係数グループ単位でスキャンすることができる。
一例として、図7の(b)に示すように、サイズ8x16の現在ブロック内の変換係数を2x4の同じ係数グループ単位でスキャンすることができる。
一例として、図7の(c)に示すように、サイズ16x8の現在ブロック内の変換係数を4x2の同じ係数グループ単位でスキャンすることができる。
一方、現在ブロック内の変換係数は、互いに異なる係数グループ単位でもスキャンできる。ここで、互いに異なる係数グループ単位とは、係数グループ単位のサイズ及び係数グループ単位の形状のうちの少なくとも一つが互いに異なることを意味することができる。
一例として、図8に示すようにサイズ8x16の現在ブロック内の変換係数を一つの8x8係数グループ、2つの4x4係数グループ、8つの2x2係数グループに分割してスキャンすることができる。
一方、係数グループ単位のサイズ情報は、符号化器から復号化器へシグナリングできる。これにより、復号化器は、シグナリングされた係数グループ単位のサイズ情報を用いて現在ブロックのスキャニング単位を決定することもできる。
一方、現在ブロック内の変換係数は、個別係数単位でスキャンできる。ここで、個別係数単位でスキャンされるというのは、現在ブロックを係数グループに分割せずに、現在ブロック全体に対する変換係数をスキャンすることを意味することができる。
一例として、図9の(a)に示すように、サイズ16x8の現在ブロック内の変換係数をすべて個別係数単位でスキャンすることができる。
一方、現在ブロック内の変換係数は混合単位でスキャンできる。ここで、混合単位でスキャンされるというのは、現在ブロック内の変換係数のうち、一部の領域に属する係数は係数グループ単位でスキャンされ、残りの領域に属する係数は個別係数単位でスキャンされることを意味することができる。
一例として、図9の(b)に示すようにサイズ16x8の現在ブロック内の変換係数のうち、左上側の4x4領域に属する変換係数を4x4係数グループ単位でスキャンし、残りの領域に属する変換係数を個別係数単位でスキャンすることができる。
しかし、上記の例に限定されず、一部の領域のサイズ及び/又は形状は、現在ブロックのサイズ及び/又は形状に基づいて誘導されることも可能である。一例として、現在ブロックが16x8ブロックである場合には、前記一部の領域は8x4のブロックであり得る。
又は、一部の領域の横長さ及び縦長さのうちの少なくとも一つが、現在ブロックの横長さ及び縦長さのうちの少なくとも一つに基づいて誘導できる。
又は、一部の領域のサイズ及び/又は形状を指示する情報がエントロピー符号化/復号化できる。
又は、一部の領域のサイズ及び/又は形状は、現在ブロック及び/又は少なくとも一つの周辺ブロックの情報から誘導できる。
また、一部の領域の位置は、現在ブロックの左上側に限定されず、現在ブロックの任意の位置であり得る。一例として、一部の領域は現在ブロックの左下側、右上側又は右下側などのコーナーに位置することができる。
一方、一部の領域の位置は、現在ブロックのサイズ、形状、深さ、予測モード、画面内予測モードなどを含む符号化パラメータのうちの少なくとも一つに基づいて誘導できる。又は、一部の領域の位置に関する情報は、符号化器から復号化器へシグナリングされるか、或いは現在ブロック及び/又は少なくとも一つの周辺ブロックの情報から誘導され得る。
次に、スキャニング順序について説明する。
変換係数は、一つ以上のスキャニング順序に従ってスキャンできる。変換係数グループ単位及び/又は個別係数単位のスキャニングの際に、少なくとも一つのスキャニング順序に従って現在ブロック内の変換係数に対して係数グループ間のスキャニング及び/又は係数グループ内のスキャニングを行うことができる。この際、現在ブロック内の変換係数の全部又は一部に対してスキャニングを行うことができる。
本発明の一実施形態に係る変換係数のスキャニング順序(Scaning order)は、図6に示した対角(diagonal)スキャニング順序、水平(horizontal)スキャニング順序、垂直(vertical)スキャニング順序、及び図10に示した第1混合対角スキャニング順序、第2混合対角スキャニング順序、左下側対角スキャニング順序、第1垂直優先スキャニング順序、第2垂直優先スキャニング順序、第1水平優先スキャニング順序及び第2水平優先スキャニング順序のうちの1つ以上のスキャニング順序を用いて、個別係数及び/又は変換係数グループ単位で変換係数をスキャンすることができる。ここで、図6に示した対角スキャニング順序は右上側対角スキャニング順序を意味することができる。
スキャニング順序は、現在ブロックの形状(正方形又は非正方形)に基づいて決定できる。ここで、現在ブロックの形状は、現在ブロックの横:縦の比率で表現できる。すなわち、現在ブロックの横長さと縦長さとの比較に基づいてスキャニング順序を決定することができる。この際、現在ブロック内の変換係数の全部又は一部に対してスキャニングを行うことができる。
一例として、現在ブロックが正方形の形状である場合には、右上側対角スキャニング順序又は左下側対角スキャニング順序のうちのいずれかでスキャンし、横長さよりも縦長さが大きいブロックである場合には、垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のいずれかでスキャンし、横長さよりも縦長さが小さいブロックである場合には、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれかでスキャンすることができる。
別の例として、現在ブロックが正方形の形状である場合には、右上側対角スキャニング順序又は左下側対角スキャニング順序のうちのいずれかでスキャンし、横長さよりも縦長さが大きいブロックである場合には、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のいずれかでスキャンし、横長さよりも縦長さが小さいブロックである場合には、垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のいずれかでスキャンすることができる。一方、上記の例に限定されず、例えば、現在ブロックが非正方形(長方形)である場合の利用可能なスキャニング順序と、現在ブロックが正方形(正方形)である場合の利用可能なスキャニング順序は、上記の例とは逆になるか、或いは上記の例とは異なり得る。
別の例として、現在ブロックが長方形(非正方形)の形状である場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちの少なくとも一つに基づいてスキャンできる。
別の例として、現在ブロックが正方形(正方形)の形状である場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちの少なくとも一つに基づいてスキャンできる。しかし、上記の例に限定されず、例えば、現在ブロックが長方形の形状である場合の利用可能なスキャニング順序と、現在ブロックが正方形の形状である場合の利用可能なスキャニング順序は、上記の例とは逆になるか、或いは上記の例とは異なり得る。
図11乃至図13は係数グループ単位のスキャニング時における、係数グループ内のスキャニングと係数グループ間のスキャニングとの関係を説明するための図である。係数グループ単位のスキャニング時における、係数グループ内のスキャニングと係数グループ間のスキャニングに同じスキャニング順序を用いてスキャンすることができる。
一例として、図11に示すように、サイズ16x16の現在ブロック内の変換係数を4x4の係数グループ単位でスキャンする場合、右上側対角スキャニング順序に従って係数グループ内の係数と係数グループ単位のスキャニングを行うことができる。
他の例として、図12に示すように、サイズ8x16の現在ブロック内の変換係数を2x4の係数グループ単位でスキャンする場合、垂直スキャニング順序に従って係数グループ内の係数と係数グループ単位のスキャニングを行うことができる。
別の例として、図13に示すように、サイズ16x8の現在ブロック内の変換係数を4x2の係数グループ単位でスキャンする場合、水平スキャニング順序に従って係数グループ内の係数と係数グループ単位のスキャニングを行うことができる。
別の例として、サイズ8x8の現在ブロック内の変換係数を4x4の係数グループ単位でスキャンする場合、左下側対角スキャニング順序に従って係数グループ内の係数と係数グループ単位のスキャニングを行うことができる。
別の例として、サイズ4x8の現在ブロック内の変換係数を4x4の係数グループ単位でスキャンする場合、第1垂直優先スキャニング順序に従って係数グループ内の係数と係数グループ単位のスキャニングを行うことができる。
別の例として、サイズ8x4の現在ブロック内の変換係数を4x2の係数グループ単位でスキャンする場合、第1水平優先スキャニング順序に従って係数グループ内の係数と係数グループ単位間のスキャニングを行うことができる。
上記とは逆に、係数グループ単位のスキャニング時における、係数グループ内のスキャニングと係数グループ間のスキャニングに互いに異なる種類のスキャニング順序を用いてスキャンすることもできる。
一例として、サイズ16x16の現在ブロック内の変換係数を4x4の係数グループ単位でスキャンする場合、右上側対角スキャニング順序に従って係数グループ内の係数をスキャンし、水平又は垂直スキャニング順序に従って係数グループ単位をスキャンすることができる。
他の例として、サイズ8x16の現在ブロック内の変換係数を2x4の係数グループ単位でスキャンする場合、垂直スキャニング順序に従って係数グループ内の係数をスキャンし、右上側対角又は水平スキャニング順序に従って係数グループ単位をスキャンすることができる。
別の例として、サイズ16x8の現在ブロック内の変換係数を4x2の係数グループ単位でスキャンする場合、水平スキャニング順序に従って係数グループ内の係数をスキャンし、右上側対角又は垂直スキャニング順序に従って係数グループ単位をスキャンすることができる。
別の例として、サイズ8x8の現在ブロック内の変換係数を4x4の係数グループ単位でスキャンする場合、左下側対角スキャニング順序に従って係数グループ内の係数をスキャンし、右上側対角スキャニング順序に従って係数グループ単位をスキャンすることができる。
別の例として、サイズ4x8の現在ブロック内の変換係数を4x4の係数グループ単位でスキャンする場合、第1垂直優先スキャニング又は第2垂直優先スキャニング順序に従って係数グループ内の係数をスキャンし、右上側対角又は左下側対角スキャニング順序に従って係数グループ単位をスキャンすることができる。
別の例として、サイズ8x4の現在ブロック内の変換係数を4x4の係数グループ単位でスキャンする場合、第1水平優先スキャニング又は第2水平優先スキャニング順序に従って係数グループ内の係数をスキャンし、右上側対角又は左下側対角スキャニング順序に従って係数グループ単位をスキャンすることができる。
一方、係数グループスキャニング時における係数グループ内のスキャニングと係数グループ間のスキャニングに互いに異なるスキャニング順序が使用できるか否かを指示する情報は、上位レベルの単位で符号化器から復号化器へシグナリングできる。ここで、上位レベルの単位は、例えば、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)タイル、スライス、タイル及びCTUのうちの一つ以上であり得る。また、コーティングツリーユニット、コーディングユニット、予測ユニット、変換ユニットなどのブロック単位で互いに異なる種類のスキャニング順序が使用されたか否かについての情報をエントロピー符号化/復号化することができる。一例として、係数グループスキャニング時における、係数グループ内のスキャニングと係数グループ間のスキャニングに互いに異なるスキャニング順序が使用できるか否かを指示する情報は、フラグ形式で表示できる。
一方、個別係数単位スキャニングの際に1つのスキャニング順序に従って現在ブロック内の変換係数の全部又は一部がスキャンできる。
個別係数単位スキャニングの際にも、スキャニング順序は、現在ブロックの形状に基づいて決定できる。ここで、現在ブロックの形状は、現在ブロックの横:縦の比率で表現できる。すなわち、現在ブロックの横長さと縦長さとの比較に基づいてスキャニング順序を決定することができる。
他の例として、図14の(a)に示すようにサイズ8x8の現在ブロック内の変換係数を右上側対角スキャニング順序又は左下側対角スキャニング順序のうちのいずれかを用いて個別係数単位でスキャンし、図14の(b)に示すようにサイズ4x8の現在ブロック内の変換係数を垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のうちのいずれかを用いて個別係数単位でスキャンし、図14(c)に示すようにサイズ8x4の現在ブロック内の変換係数を水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれかを用いて個別係数単位でスキャンすることができる。
また、図14では示していないが、現在ブロックが正方形の形状である場合、現在ブロック内の変換係数を右上側対角スキャニング順序又は左下側対角スキャニング順序のうちのいずれかを用いて個別係数単位でスキャンし、現在ブロックの横長さよりも縦長さが大きい非正方形の形状である場合、現在ブロック内の変換係数を水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれかを用いて個別係数単位でスキャンし、現在ブロックの横長さよりも縦長さが小さい非正方形の形状である場合、現在ブロック内の変換係数を垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のうちのいずれかを用いて個別係数単位でスキャンすることができる。
一方、変換係数スキャニングの際に、現在ブロックのサイズ及び/又は形状に応じてマッピングされたスキャニング順序が用いられてもよい。ここで、形状は正方形であるか否か、横方向に長さが長い非正方形、或いは縦方向に長さが長い非正方形であるか否かなどを意味することができる。
一方、スキャニング順序は、現在ブロックのサイズに基づいて決定できる。
具体的には、スキャニング順序は、現在ブロックのサイズと所定のしきい値との比較に基づいて決定できる。ここで、所定のしきい値は、スキャニング単位を決定する基準サイズを意味することができ、最小値又は最大値のうちの少なくとも一つで表現できる。
一方、所定のしきい値は、符号化器/復号化器に予め定められた固定値であってもよく、現在ブロックの符号化/復号化関連パラメータ(例えば、予測モード、画面内予測モード、変換タイプ、スキャニング順序など)に基づいて可変的に誘導されてもよく、ビットストリーム(例えば、シーケンス、ピクチャ、スライス、タイル、CTU、ブロックレベルなど)を介してシグナリングされてもよい。この際、現在ブロック内の変換係数の全部又は一部に対してスキャニングを行うことができる。
一例として、横長さと縦長さとの積が256以上であるブロックの場合には、変換係数グループ又は個別係数は、右上側対角スキャニング順序又は左下側対角スキャニング順序のうちのいずれかに従ってスキャンされ、そうでないブロックの場合には、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれか、或いは垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のうちのいずれかでスキャンできる。一方、横長さと縦長さの積と比較されるしきい値は256に限定されない。ここで、しきい値は、例えば任意の正の整数であり得る。又はN(Nは正の整数)個のしきい値が存在することができる。N個のしきい値が存在する場合には、N+1個の区間のうち、現在ブロックの属する区間に対応するスキャニング順序が現在ブロックに適用できる。
他の例として、横長さと縦長さのうちの最小の長さが8以下であるブロックの場合には、変換係数グループ又は個別係数は、右上側対角スキャニング順序又は左下側対角スキャニング順序のうちのいずれかに従ってスキャンされ、そうでないブロックの場合には、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれか、或いは垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のいずれかでスキャンできる。一方、横長さと縦長さのうちの最小の長さと比較されるしきい値は8に限定されない。前記しきい値は、例えば任意の正の整数であり得る。又は、N(Nは正の整数)個のしきい値が存在することができる。N個のしきい値が存在する場合には、N+1個の区間のうち、現在ブロックの属する区間に対応するスキャニング順序が現在ブロックに適用できる。
別の例として、現在ブロックのサイズがもはや分割できない最小ブロックサイズである場合には、所定のスキャニング順序が適用できる。前記所定のスキャニング順序は、例えば、右上側対角スキャニング或いは左下側対角スキャニング順序であり得る。前記最小ブロックサイズに関する情報は、例えば、VPS、SPS、PPS、スライス、タイル、CTU及びブロックのうちの少なくとも一つの単位でシグナリングできる。
一方、現在ブロックの深さに基づいてスキャニング順序が決定できる。
スキャニング順序は、現在ブロックの深さと所定のしきい値との比較に基づいて決定できる。所定のしきい値は、スキャニング順序を決定する基準サイズまたは深さを意味する。これは、最小値及び最大値のうちの少なくとも一つで表現できる。所定のしきい値は、符号化器/復号化器に予め定められた固定値であってもよく、現在ブロックの符号化/復号化パラメータ(例えば、予測モード、画面内予測モード、変換タイプ、スキャニング順序など)に基づいて可変的に誘導されてもよく、ビットストリーム(例えば、シーケンス、ピクチャ、スライス、タイル、CTU、ブロックレベルなど)を介してシグナリングされてもよい。この際、現在ブロック内の変換係数の全部又は一部に対してスキャニングを行うことができる。
一例として、現在ブロックの深さが0である場合には、変換係数グループ又は個別係数は、右上側対角スキャニング順序又は左下側対角スキャニング順序に従ってスキャンされ、現在ブロックの深さが0ではない場合には、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちの少なくとも一つでスキャンできる。
他の例として、現在ブロックの深さが1と同じかそれより小さい場合には、変換係数グループ又は個別係数は、右上側対角スキャニング順序又は左下側対角スキャニング順序に従ってスキャンされ、現在ブロックの深さが1よりも大きい場合には、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちのいずれかでスキャンできる。一方、現在ブロックの深さと比較されるしきい値は、前記0又は1に限定されない。ここで、しきい値は、例えば、0以上の正の整数であり得る。又は、N(Nは正の整数)個のしきい値が存在することができる。N個のしきい値が存在する場合、N+1個の区間のうち、現在ブロックの属する区間に対応するスキャニング順序が現在ブロックに適用できる。
別の例として、現在ブロックの深さがもはや分割できない最大分割深さである場合には、所定のスキャニング順序が適用できる。ここで、所定のスキャニング順序は、例えば、対角スキャニング順序であり得る。そして、最大分割深さに関する情報は、例えば、VPS、SPS、PPS、スライス、タイル、CTU及びブロックのうちの少なくとも一つの単位でシグナリングできる。
一方、スキャニング順序は、現在ブロックの画面内予測モードに基づいて決定できる。このとき、画面内予測モードの値そのものを考慮してもよく、画面内予測モードが非方向性モードであるか否か又は画面内予測モードの方向性(例えば、垂直方向或いは水平方向)を考慮してもよい。この際、現在ブロック内の変換係数の全部又は一部に対してスキャニングを行うことができる。
一例として、現在ブロックの画面内予測モードがDCモード及びPlanarモードのうちの少なくとも一つである場合には、変換係数グループ又は個別係数は、右上側対角スキャニング順序又は左下側対角スキャニング順序のいずれかに従ってスキャンできる。
他の例として、現在ブロックの画面内予測モードが垂直モードである場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちのいずれかに従ってスキャンできる。
別の例として、現在ブロックの画面内予測モードが水平モードである場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちのいずれかに従ってスキャンできる。
別の例として、現在ブロックの画面内予測モードが垂直モード又は水平モードである場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちの少なくとも一つに従ってスキャンできる。
別の例として、現在ブロックの画面内予測モードが垂直モード又は水平モードに隣接するK個のモードに含まれる場合、変換係数グループ又は個別係数は、水平スキャニング順序及び左下側対角スキャニング順序のうちの少なくとも一に従ってスキャンできる。ここで、Kは1以上の正数であり得る。この場合、垂直モード又は水平モードに隣接するK個のモードは、垂直モード或いは水平モードが指示する特定の画面内予測モードの値に-K/2乃至K/2の値を加えた値に該当する画面内予測モードであり得る。
別の例として、現在ブロックの画面内予測モードが垂直モード又は水平モードに隣接するK個のモードに含まれる場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちの一つ以上に従ってスキャンできる。ここで、Kは1以上の正数であり得る。この場合、垂直モード又は水平モードに隣接するK個のモードは、垂直モード或いは水平モードが指示する特定の画面内予測モードの値に-K/2乃至K/2の値を加えた値に該当する画面内予測モードであり得る。
別の例として、現在ブロックの画面内予測モードが偶数である場合には、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちの一つ以上に従ってスキャンできる。そして、現在ブロックの画面内予測モードが奇数である場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、第2垂直優先スキャニング順序、及び左下側対角スキャニング順序のうちのいずれかに従ってスキャンできる。
別の例として、現在ブロックの画面内予測モードが奇数である場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちのいずれかに従ってスキャンできる。そして、現在ブロックの画面内予測モードが偶数である場合には、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、第2垂直優先スキャニング順序及び左下側対角スキャニング順序のうちのいずれかに従ってスキャンできる。
別の例として、現在ブロックの画面内予測モードに関係なく、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちのいずれかに従ってスキャンできる。
別の例として、現在ブロックの画面内予測モード値であるIPMに対してモデューロ(modulo、MOD、%)演算を行った結果に基づいて、右上側対角スキャニング順序、左下側対角スキャニング順序、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、第2垂直優先スキャニング順序のうちのいずれかを変換係数グループ又は個別係数に対するスキャニング順序で決定することができる。ここで、モデューロ演算は、除算の剰余を計算する数学演算を意味することができる。すなわち、(IPM MOD M)の値に基づいて前記スキャニング順序のうちの少なくとも一つを決定することができる。以下で、IPMが0であれば、Planarモード(planar mode)を指示し、IPMが1であれば、DCモードを指示することを意味することができる。
例えば、(IPM-2)MOD2)が0である場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序に従ってスキャンできる。また、(IPM-2)MOD2)が1である場合、変換係数グループ又は個別係数は、左下側対角スキャニング順序に従ってスキャンできる。
例えば、(IPM-2)MOD4)が0である場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序に従ってスキャンできる。また、(IPM-2)MOD4)が1である場合、変換係数グループ又は個別係数は、左下側対角スキャニング順序に従ってスキャンできる。また、(IPM-2)MOD4)が2である場合、変換係数グループ又は個別係数は、垂直スキャニング順序に従ってスキャンできる。また、(IPM-2)MOD4)が3である場合、変換係数グループ又は個別係数は、水平スキャニング順序に従ってスキャンできる。
また、所定数の方向性予測モードを1つのグループにグループ化し、現在ブロックの画面内予測モードがどのグループに属するかに基づいて、当該グループに対応するスキャニング順序を、現在ブロックのスキャニング順序として決定することができる。このとき、前記グループに含まれている方向性予測モードの数は、他のグループに含まれている方向性予測モードの数と同一であってもよく異なってもよい。ここで、グループ化は、方向性予測モードの角度または方向の類似度に基づいて行われ得る。
一例として、第1モードに隣接する所定数のモードは、第1モードグループに分類され、第1モードグループに含まれている画面内予測モードを有する現在ブロックに対して、第1モードグループに対応するスキャニング順序が適用できる。例えば、前記第1モードは垂直モード、水平モード、対角モードなどであり得る。
一方、グループ化は、方向性予測モードを指示する値のデューロ演算に基づいて行われ得る。ここで、モデューロ演算に使用される除数(divisor)は、現在ブロックのサイズ、形状又は深さなどに基づいて決定できる。現在ブロックのサイズが大きいほど、大きい除数(又は小さい除数)が使用できる。除数が大きいほど、モデューロ演算によるグループは個数が多くなるので、より細かいスキャニング順序の決定が可能になる。
また、現在ブロックの画面内予測モード(方向)に基づいて複数個(例えば、N個、Nは2以上の正数)のスキャニング順序が決定できる。ここで、N個のスキャニング順序は、符号化器/復号化器で画面内予測モードに応じて予め設定された複数のスキャニング順序であり得る。画面内予測モードに応じて、互いに異なるN個のスキャニング順序が決定できる。ここで、N個のスキャニング順序は、対角スキャニング、垂直スキャニング、水平スキャニング、右上側対角スキャニング、左下側対角スキャニング、第1垂直優先スキャニング、第2垂直優先スキャニング、第1水平優先スキャニング、及び第2水平優先スキャニングのうちの少なくとも一つのスキャニングを含むことができる。
一例として、現在ブロックの画面内予測モードがDCモード及びPlanarモードのうちの少なくとも一つである場合には、変換係数グループ又は個別係数は、2つのスキャニング順序(右上側対角スキャニング順序と左下側対角スキャニング順序)のうちのスキャニング順序に対する情報に基づいてスキャンできる。
他の例として、現在ブロックの画面内予測モードが垂直モードである場合、変換係数グループ又は個別係数は、2つのスキャニング順序(水平スキャニング順序と左下側対角スキャニング順序)のうちのスキャニング順序に対する情報に基づいてスキャンできる。
別の例として、現在ブロックの画面内予測モードが、垂直モードに隣接するK個のモードに含まれる場合、変換係数グループ又は個別係数は、2つのスキャニング順序(水平スキャニング順序と左下側対角スキャニング順序)のうちのスキャニング順序に対する情報に基づいてスキャンできる。ここで、Kは1以上の正数であり得る。
別の例として、現在ブロックの画面内予測モードが、垂直モードに隣接するK個のモードに含まれる場合、変換係数グループ又は個別係数は、3つのスキャニング順序(水平スキャニング順序、左下側対角スキャニング順序、及び第1水平優先スキャニング順序)のうちのスキャニング順序に対する情報に基づいてスキャンできる。ここで、Kは1以上の正数であり得る。
別の例として、現在ブロックの画面内予測モードが水平モードである場合、変換係数グループ又は個別係数は、2つのスキャニング順序(垂直スキャニング順序と右上側対角スキャニング順序)のうちのスキャニング順序に対する情報に基づいてスキャンできる。
別の例として、現在ブロックの画面内予測モードが、水平モードに隣接するK個のモードに含まれる場合、変換係数グループ又は個別係数は、2つのスキャニング順序(垂直スキャニング順序と右上側対角スキャニング順序)のうちのスキャニング順序に対する情報に応じてスキャンできる。ここで、Kは1以上の正数であり得る。
別の例として、現在ブロックの画面内予測モードが、水平モードに隣接するK個のモードに含まれる場合、変換係数グループ又は個別係数は、3つのスキャニング順序(垂直スキャニング順序、右上側対角スキャニング順序、及び第1垂直優先スキャニング順序)のうちのスキャニング順序に対する情報に基づいてスキャンできる。ここで、Kは1以上の正数であり得る。
別の例として、前記垂直モード或いは水平モードが特定の画面内予測モード値を持つ場合には、前記垂直モード又は水平モードに隣接するK個のモードは、前記垂直モード或いは水平モードが指示する特定の画面内予測モード値に-K/2~K/2の値を加えた値に該当する画面内予測モードであり得る。
一方、スキャニング順序に関する情報は、符号化器から復号化器へシグナリングできる。これにより、復号化器は、シグナリングされたスキャニング順序に関する情報を用いて現在ブロックのスキャニング順序を決定することもできる。一例として、スキャニング順序に関する情報は、対角スキャニング順序、垂直スキャニング順序、水平スキャニング順序、第1混合対角スキャニング順序、第2混合対角スキャニング順序、右上側対角スキャニング順序、左下側対角スキャニング順序、第1垂直優先スキャニング順序、第2垂直優先スキャニング順序、第1水平優先スキャニング順序及び第2水平優先スキャニング順序などを指示する情報であり得る。この場合、スキャニング順序に対する情報は、フラグ又はインデックスの形でエントロピー符号化/復号化できる。
一方、現在ブロックのスキャニング順序は、現在ブロックに隣接する周辺ブロックで使用したスキャニング順序、又は現在ブロックの符号化パラメータに基づいて決定できる。
例えば、現在ブロックに隣接する左側ブロック、右側ブロック、上側ブロック及び下側ブロックのうちの少なくとも一つで使用したスキャニング順序と同じスキャニング順序で、現在ブロック内の変換係数をスキャンすることができる。この際、周辺ブロックの一つ以上のスキャニング順序を含むリストを構成し、前記リストに対するインデックスを用いて現在ブロックのスキャニング順序を誘導することができる。前記インデックスはエントロピー符号化/復号化できる。
又は、周辺ブロックで使用された一つ以上のスキャニング順序の統計値が用いられてもよい。例えば、スキャニング順序を指示する値の平均値、加重平均値、最小値、最大値、最頻値及び中央値のうちの少なくとも一つの値に該当するスキャニング順序を、現在ブロックのスキャニング順序として決定することができる。
一方、係数グループ単位でスキャニングが行われる場合、現在ブロック内の現在係数グループ内の変換係数スキャニング順序は、現在係数グループに隣接する周辺係数グループで使用したスキャニング順序に基づいて決定できる。例えば、現在係数グループに隣接する左側係数グループ、右側係数グループ、上側係数グループ及び下側係数グループのうちの少なくとも一つで使用した係数グループ内のスキャニング順序と同様の方法で、現在係数グループ内の変換係数をスキャンすることができる。
また、スキャニング順序に対する情報は、係数グループ間のスキャニング順序と係数グループ内のスキャニング順序のうちの少なくとも一つに対する情報であって、エントロピー符号化/復号化できる。つまり、係数グループ間のスキャニング順序情報と係数グループ内のスキャニング順序情報をそれぞれエントロピー符号化/復号化することができる。又は、係数グループ間のスキャニング順序情報と係数グループ内のスキャニング順序情報を一つの情報としてエントロピー符号化/復号化することもできる。
又は、現在ブロックの画面内予測モードと同じ予測モードが適用された周辺ブロックのスキャニング順序を選択的に用いることもできる。現在ブロックの画面内予測モードと同じ予測モードが適用された周辺ブロックが複数である場合には、前述したように、リストの構成及びインデックスの適用を行うことにより、現在ブロックのスキャニング順序を決定することができる。
前述した変換係数のスキャニング単位及びスキャニング順序のうちの少なくとも一つは、現在ブロックに適用される変換の種類、変換の位置、変換が適用される領域、変換を行うか否か、1次変換を行うか否か、2次変換を行うか否か、ブロックのサイズ、ブロックの形状及び画面内予測モード(又は方向)のうちの少なくとも一つに基づいて決定できる。ここで、前記スキャニング単位及びスキャニング順序のうちの少なくとも一つはエントロピー符号化/復号化できる。
ここで、変換の位置は、特定の変換が垂直変換(vertical transform)に使用されたか、或いは特定の変換が水平変換(horizontal transform)に使用されたかを指示する情報であり得る。そして、変換を行うか否かは、1次変換及び2次変換のうちの少なくとも一つを行うか否かを示すことを意味することができる。そして、変換の種類は、DCT-II、DCT-V、DCT-VIII、DST-I、DST-VI、DST-VIIなどのDCTベース変換及びDSTベース変換のうちの少なくとも一つの三角関数ベース変換の種類だけでなく、KLT(Karhunen-Loeve Transform)、方向性変換(Directional Transform)などのうちの少なくとも一つを指示することができる。
1次変換として恒等変換(identity transform)を行うことができる。このとき、恒等変換は、水平変換及び垂直変換のうちの少なくとも一つに適用できる。
例えば、現在ブロックに対して恒等変換が垂直変換と水平変換の両方に適用される場合、現在ブロックは、変換が行われないのと同一であり得る。
例えば、現在ブロックに対して恒等変換が垂直変換に使用される場合、現在ブロックは、1次元水平変換のみ行われたのと同一であり、現在ブロックに対して恒等変換が水平変換に使用される場合、現在ブロックは、1次元垂直変換のみ行われたのと同一であり得る。
また、現在ブロックに対して1次変換として恒等変換を使用し、2次変換を行うことができる。このような場合、現在ブロックに対して2次変換のみ行ったのと同一であり得る。
水平変換及び垂直変換として恒等変換を使用するか否かは、現在ブロックの予測モード、画面内予測モード(方向)、ブロックサイズ、ブロック形状などの符号化パラメータのうちの少なくとも一つに基づいて決定できる。
また、恒等変換が行われたブロックには、デブロッキングフィルタリングが行われなくてもよい。
1次変換として恒等変換(identity transform)と別の変換とを組み合わせて変換を行う場合、恒等変換が使用された変換位置によってスキャニング順序が決定できる。ここで、恒等変換は、下記数式1のn×n行列であるI
nのように主対角線(左上から右下への対角線)がすべて1であり、残りの元素は0を値として有する行列であり得る。
一例として、水平変換(horizontal transform)に恒等変換を使用し、垂直変換(vertical transform)にDCT-II、DCT-V、DCT-VIII、DST-I、DST-VI、DST-VIIなどのDCTベース変換及びDSTベース変換のうちの少なくとも一つを用いて変換を行った場合、変換係数グループ又は個別係数は、垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のうちのいずれかに基づいてスキャンできる。
他の例として、水平変換にDCT-II、DCT-V、DCT-VIII、DST-I、DST-VI、DST-VIIなどのDCTベース変換及びDSTベース変換のうちの少なくとも一つの変換を用い、垂直変換に恒等変換を用いて変換を行った場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれかに基づいてスキャンできる。
別の例として、水平変換に恒等変換を用い、垂直変換にDCT-II、DCT-V、DCT-VIII、DST-I、DST-VI、DST-VIIなどのDCTベース変換及びDSTベース変換のうちの少なくとも一つの変換を用いて変換を行った場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれかに従ってスキャンできる。
別の例として、水平変換にDCT-II、DCT-V、DCT-VIII、DST-I、DST-VI、DST-VIIなどのDCTベース変換及びDSTベース変換のうちの少なくとも一つの変換を用い、垂直変換恒等変換を用いて変換を行った場合、変換係数グループ又は個別係数は、垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のうちのいずれかに従ってスキャンできる。
別の例として、水平変換及び垂直変換の少なくとも一つに恒等変換を行った場合、変換係数グループ又は個別係数は、右上側対角スキャニング及び左下側対角スキャニングのうちのいずれかに基づいてスキャンできる。
また、恒等変換を行うか否かに基づいて、スキャニング順序を決定することもできる。
一方、1次変換として変換ブロックにDCTベース変換又はDSTベース変換を行う場合、DCTベース変換又はDSTベース変換のうちのどの変換が垂直変換或いは水平変換として使用されたかに基づいてスキャニング順序が決定できる。ここで、DCTベース変換は、DCT-II、DCT-V、DCT-VIIIなどのDCT変換のうちの少なくとも一つを意味することができる。また、DSTベース変換は、DST-I、DST-VI、DST-VIIなどのDST変換のうちの少なくとも一つを意味することができる。ここで、DCTベース変換及びDSTベース変換は、それぞれDCT変換及びDST変換を意味することができる。
一例として、水平変換にDCT変換を用い、垂直変換にDST変換を用いて変換を行った場合、変換係数グループ又は個別係数は、垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のうちのいずれか一つに基づいてスキャンできる。
他の例として、水平変換にDST変換を用い、垂直変換にDCT変換を用いて変換を行った場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順のうちのいずれかに基づいてスキャンできる。
別の例として、水平変換にDCT変換を用い、垂直変換にDST変換を用いて変換を行った場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序又は第2水平優先スキャニング順序のうちのいずれか一つに基づいてスキャンできる。
別の例として、水平変換にDST変換を用い、垂直変換にDCT変換を用いて変換を行った場合、変換係数グループ又は個別係数は、垂直スキャニング順序、第1垂直優先スキャニング順序又は第2垂直優先スキャニング順序のうちのいずれかに基づいてスキャンできる。
別の例として、1次変換として変換ブロックにDCT或いはDST変換を行った場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちのいずれかに基づいてスキャンできる。
別の例として、1次変換として水平変換にDCT或いはDST変換を用い、垂直変換にDCT或いはDST変換を用いた場合、変換係数グループ又は個別係数は、右上側対角スキャニング及び左下側対角スキャニングのうちのいずれかに基づいてスキャンできる。
また、DCT変換及びDST変換のうちの少なくとも一つを指示するフラグ又はインデックスなどの情報に基づいてスキャニング順序が決定できる。そして、DCT変換及びDST変換のうちの少なくとも一つを使用するか否かを指示するフラグまたはインデックスなどの情報に基づいてスキャニング順序が決定できる。又は、1次変換としてDCT或いはDST変換を行うか否かに基づいて、スキャニング順序が決定できる。
一方、1次変換として変換ブロックにDST変換を行う場合、残余信号が再整列された形態に基づいてスキャニング順序が決定できる。このとき、残余信号が再整列された形態は、残余信号がフリップ(flipping)されていない形態、横方向にフリップされた形態、縦方向にフリッピングされた形態、横及び縦方向にフリップされた形態などを意味することができる。
一例として、残余信号がフリップされていない場合、変換係数グループ又は個別係数は、右上側対角スキャニング及び左下側対角スキャニングのうちのいずれかに基づいてスキャンできる。
他の例として、残余信号が横方向にフリップされた形態である場合、変換係数グループ又は個別係数は、右上側対角スキャニングによってスキャンできる。
別の例として、残余信号が縦方向にフリップされた形態である場合、変換係数グループ又は個別係数は、左下側対角スキャニングによってスキャンできる。
別の例として、残余信号が横及び縦方向にフリップされた形態である場合、変換係数グループ又は個別係数は、右上側対角スキャニング及び左下側対角スキャニングのうちのいずれかに基づいてスキャンできる。
別の例として、1次変換として変換ブロックにDST変換を行った場合、変換係数グループ又は個別係数は、右上側対角スキャニング及び左下側対角スキャニングのうちのいずれかによってスキャンできる。
別の例として、1次変換として変換ブロックにDST変換を行っていない場合、変換係数グループ又は個別係数は、右上側対角スキャニング及び左下側対角スキャニングのうちのいずれかによってスキャンできる。
また、1次変換としてDST変換を行うか否かに基づいてスキャニング順序が決定できる。
一方、2次変換として回転変換(rotational transform)を用いて変換を行った場合には、回転角度に応じてスキャニング順序が決定できる。また、前記回転角度を指示するインデックスなどの情報に基づいてスキャニング順序が決定できる。
一例として、回転角度が0度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのうちのいずれかを使用することができる。回転角度が90度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。回転角度が180度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのうちのいずれかを使用することができる。回転角度が270度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。
他の例として、回転角度が0度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。回転角度が90度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのうちのいずれかを使用することができる。回転角度が180度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。回転角度が270度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのうちのいずれかを使用することができる。
一例として、2次変換として回転変換を用いて変換を行った場合、右上側対角スキャニング及び左下側対角スキャニングのうちの少なくとも一つによってスキャンできる。
他の例として、2次変換を行った場合、右上側対角スキャニング及び左下側対角スキャニングのうちの少なくとも一つによってスキャンできる。
別の例として、1次変換として前記DCT変換或いはDST変換を行い、2次変換を行った場合、右上側対角スキャニング及び左下側対角スキャニングのうちの少なくとも一つによってスキャンできる。
又は、2次変換を行うか否か、2次変換として回転変換を行うか否か、1次変換後に2次変換を行うか否かに基づいて、スキャニング順序が決定できる。
一方、2次変換としてギブンス変換(Givens transform)又はハイパー-ギブンス変換(Hyper-Givens transform)を用いて変換を行った場合、回転角θ(Theta)に応じてスキャニング順序が決定できる。また、前記回転角度を指示するインデックスなどの情報に基づいてスキャニング順序が決定できる。ここで、ギブンス変換又はハイパー-ギブンス変換行列G(m、n、θ)は、下記数式2に示す代表的な定義に基づいて定義されたものであり得る。
一例として、回転角θ(Theta)が0度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのうちのいずれかを使用することができる。回転角θ(Theta)が90度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。回転角θ(Theta)が180度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのうちのいずれかを使用することができる。回転角θ(Theta)が270度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。
他の例として、回転角θ(Theta)が0度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。回転角θ(Theta)が90度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのいずれかを使用することができる。そして、回転角θ(Theta)が180度である場合、係数グループ単位或いは個別係数単位に水平スキャニング、第1水平優先スキャニング又は第2水平優先スキャニングのうちのいずれかを使用することができる。そして、回転角θ(Theta)が270度である場合、係数グループ単位或いは個別係数単位に垂直スキャニング、第1垂直優先スキャニング又は第2垂直優先スキャニングのうちのいずれかを使用することができる。
別の例として、2次変換としてギブンス変換又はハイパー-ギブンス変換を用いて変換を行った場合、右上側対角スキャニング及び左下側対角スキャニングのうちのいずれかに基づいてスキャンできる。
又は、2次変換としてギブンス変換又はハイパー-ギブンス変換を行うか否かに基づいて、スキャニング順序が決定できる。
現在ブロックは、変換スキップされた領域(変換を行うなく量子化のみを行う)、1次変換のみ行われた領域又は1次及び2次変換の全てが行われた領域のうちの少なくとも一つを含むことができる。この場合、各領域に応じて所定のスキャニング順序でスキャンできる。現在ブロックの1次変換結果中の一部の領域にのみ2次変換をさらに行う場合、変換係数は、各変換の適用有無によって領域を区分してスキャンできる。この際、現在ブロック内の変換係数の全部又は一部に対してスキャニングを行うことができる。
一例として、現在ブロックが変換スキップされたブロック又は領域である場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちのいずれかに基づいてスキャンできる。そして、現在ブロックが変換スキップされたブロック又は領域ではない場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちのいずれかに基づいてスキャンできる。
他の例として、現在ブロックが変換スキップされたブロック又は領域である場合、変換係数グループ又は個別係数は、水平スキャニング順序、第1水平優先スキャニング順序、第2水平優先スキャニング順序、垂直スキャニング順序、第1垂直優先スキャニング順序、及び第2垂直優先スキャニング順序のうちのいずれかに基づいてスキャンできる。そして、現在ブロックが変換スキップされたブロック又は領域ではない場合、変換係数グループ又は個別係数は、右上側対角スキャニング順序及び左下側対角スキャニング順序のうちのいずれかに基づいてスキャンできる。一方、現在ブロックが変換スキップされたブロックであるかに基づいて決定されるスキャニング順序は、上記の例に限定されず、本開示による様々なスキャニング順序の中から選択された任意のスキャニング順序で決定できる。
図15は8x8の現在ブロックに1次変換を行った後、一部の領域(例えば、左上側の4x4領域(灰色領域))に対してのみ2次変換を行った場合を示している。この場合、1次変換のみ行われた領域と1次変換及び2次変換が行われた領域を、それぞれ領域Aと領域Bに区分して変換係数をスキャンすることができる。領域Aと領域Bには、同じか或いは互いに異なるサイズの係数グループ単位が使用でき、領域間に同じか或いは互いに異なるスキャニング順序が使用できる。
一例として、領域Aと領域Bに同じく4x4の係数グループ単位スキャニングを用い、すべての領域に右上側対角スキャニング順序又は左下側対角スキャニング順序を用いることができる。
他の例として、領域Aは4x4の係数グループ単位スキャニングを用い、領域Bは2x2の係数グループ単位スキャニングを用い、領域A内の係数単位は垂直スキャニング順序或いは水平スキャニング順序を用い、領域B内の係数単位は右上側対角スキャニング又は左下側対角スキャニング順序を用いることができる。
別の例として、領域Aは4x4の係数グループ単位スキャニングを用い、領域Bは2x2の係数グループ単位スキャニングを用い、すべての領域に右上側対角スキャニング又は左下側対角スキャニング順序を用いることができる。
別の例として、図16に示すように、領域Aと領域Bに同じく4x4の係数グループ単位スキャニングを用い、領域A内の係数グループ単位は右上側対角スキャニング順序又は左下側対角スキャニング順序を用い、領域Bは垂直スキャニング順序を用いることができる。
図17は16x16の現在ブロックに1次変換を行った後、一部の領域(例えば、左上側の8x8領域(灰色領域))に対してのみ2次変換を行った場合を示している。この場合、1次変換のみ行われた領域と、1次変換及び2次変換が行われた領域をそれぞれ領域Aと領域Bに区分して、変換係数をスキャンすることができる。領域Aと領域Bには、同じか或いは互いに異なるサイズの係数グループ単位が使用でき、領域同士の間には、同じか或いは互いに異なるスキャニング順序が使用できる。
一例として、領域Aと領域Bに同じく4x4の係数グループ単位スキャニングを用い、すべての領域に右上側対角スキャニング順序又は左下側対角スキャニング順序を用いることができる。
他の例として、領域Aは8x8の係数グループ単位スキャニングを用い、領域Bは4x4の係数グループ単位スキャニングを用い、領域A内の係数単位は垂直スキャニング順序或いは水平スキャニング順序を用い、領域B内の係数単位は右上側対角スキャニング又は左下側対角スキャニング順序を用いることができる。
別の例として、領域Aと領域Bに同じく8x8の係数グループ単位スキャニングを用い、すべての領域に右上側対角スキャニング又は左下側対角スキャニング順序を用いることができる。
別の例として、図18に示すように、領域Aと領域Bに同じく4x4の係数グループ単位スキャニングを用い、領域A内の係数グループ単位は垂直スキャニング順序を用い、領域Bは右上側対角スキャニング順序を用いることができる。
別の例として、領域Aと領域Bにそれぞれ4x4及び8x8の係数単位スキャニングを用い、領域A内の係数単位は垂直スキャニング順序を用い、領域Bは右上側対角スキャニング順序を用いることができる。
一方、1次変換のみ行われた領域のスキャニング順序は、現在ブロックの画面内予測モード及び現在ブロックのサイズに基づいて決定できる。
そして、1次変換及び2次変換が行われた領域のスキャニング順序は、現在ブロックの形状に基づいて決定されるか、或いは予め定義されたスキャニング順序が適用され得る。ここで、予め定義されたスキャニング順序は、符号化器/復号化器に共通に設定されたスキャニング順序であり得る。一方、1次変換及び2次変換が行われた領域の予め定義されたスキャニング順序に関する情報は、符号化器から復号化器へシグナリングできる。
一方、上述したスキャニング順序のうちの少なくとも一つは、特定のブロックサイズに対応するスキャニング順序で符号化器/復号化器に予め設定或いは保存されていてもよい。ここで、特定のブロックサイズ未満のブロックでスキャニング順序を決定するときは、特定のブロックサイズに対するスキャニング順序をサブサンプリング(subsampling)或いはアップサンプリング(upsampling)して誘導することができる。
一例として、符号化器/復号化器に32x32のブロックサイズに対して右上側スキャニング順序で保存されている場合、16x16のブロックサイズのブロックに対するスキャニング順序誘導のために、サイズ32x32の右上側スキャニング順序においてサイズ16x16の右上側スキャニング順序に対応する位置のスキャニング順序値のみを抽出(又はサブサンプリング)して16x16のブロックサイズに対するスキャニング順序を誘導することができる。
別の例として、符号化器/復号化器に8x8のブロックサイズに対して左下側スキャニング順序で保存されている場合、16x16のブロックサイズのブロックに対するスキャニング順序誘導のために、サイズ8x8の左下側スキャニング順序における、サイズ16x16の右上側スキャニング順序に対応する位置のスキャニング順序値をアップサンプリング(或いは補間)して16x16のブロックサイズに対するスキャニング順序を誘導することができる。
一方、現在ブロックが非正方形の形状を有する場合、現在ブロック内の係数グループを正方形に並べ替えた後、並べ替えられた係数グループ内の変換係数をスキャンしてエントロピー符号化/復号化することができる。この際、並べ替え方法として、本発明のスキャニング順序に対する実施形態のうちの少なくとも一つを用いることができる。
例えば、現在ブロックが非正方形である32x8サイズの場合、前記係数グループ間のスキャニング順序のうちの少なくとも一つのスキャニング順序を用いて、正方形であるサイズ16x16のブロックに係数グループを並べ替えた後、並べ替えられた係数グループ内の変換係数をスキャンすることができる。
色差信号に対するスキャニング順序は、輝度信号で使用したスキャニング順序と同様に決定できる。このとき、色差信号に対するスキャニング順序は、本発明のスキャニング順序に対する実施形態のうちの少なくとも一つを用いることができる。又は、輝度信号に対するスキャニング順序に対応する色差信号に対するスキャニング順序が予め定義できる。
一例として、符号化器/復号化器は、予め定義されたルックアップテーブルを参照して、輝度信号に対するスキャニング順序から色差信号に対するスキャニング順序を誘導することができる。又は、輝度信号に対するスキャニング順序を決定する本発明に係る様々な方法のうちの少なくとも一つを用いて色差信号に対するスキャニング順序を決定することができる。
一方、変換係数の値がビットプレーン(bit plane)の形で表現される場合、ビットプレーンごとに、本発明のスキャニング順序に対する実施形態のうちの少なくとも一つを用いてスキャンしてエントロピー符号化/復号化することができる。
一方、2次変換は、本発明のスキャニング順序に対する実施形態のうちの少なくとも一つのスキャニング順序を用いて行われ得る。すなわち、1次変換後に生成された変換係数に対してスキャニングを行って2次変換を代替することができる。2次変換をスキャニングで代替することにより、変換係数を並べ替えて符号化効率を向上させることができる。
図19は本発明の一実施形態による画像復号化方法を示すフローチャートである。
図19を参照すると、復号化器は、ビットストリームから現在ブロックの変換係数を取得することができる(S1910)。
そして、復号化器は、現在ブロックのスキャニング単位及びスキャニング順序を決定することができる(S1920)。
ここで、現在ブロックの変換係数は、逆量子化の入力、2次逆変換の入力又は1次逆変換の入力のうちのいずれかであり得る。
一方、スキャニング順序は、垂直スキャニング順序、水平スキャニング順序、一番目の列を他の列よりも優先的にスキャンする第1垂直優先スキャニング順序、一番目の列と二番目の列を他の列よりも優先的にスキャンする第2垂直優先スキャニング順序、一番目の行を他の行よりも優先的にスキャンする第1水平優先スキャニング順序、一番目の行と二番目の行を他の行よりも優先的にスキャンする第2水平優先スキャニング順序、右上側対角スキャニング及び左下側対角スキャニング順序のうちの少なくとも一つを含むことができる。
一方、スキャニング単位は、係数グループ単位、個別係数単位及び混合単位のうちのいずれかに決定できる。
一方、現在ブロックのスキャニング単位及びスキャニング順序を決定するステップ(S1920)は、現在ブロックの周辺ブロックのスキャニング単位及びスキャニング順序のうちの少なくとも一つに基づいて前記現在ブロックのスキャニング単位及びスキャニング順序を決定することができる。
一方、現在ブロックのスキャニング単位が係数グループ単位に決定された場合、係数グループ単位内の変換係数スキャニング順序は、現在係数グループに隣接する周辺係数グループのスキャニング順序に基づいて決定できる。
一方、現在ブロックのスキャニング順序は、現在ブロックの深さに基づいて決定できる。
一方、現在ブロックの色差成分のスキャニング単位及びスキャニング順序は、現在ブロックの輝度成分のスキャニング単位及びスキャニング順序に基づいて決定できる。
一方、決定されたスキャニング順序に基づいて前記現在ブロックの量子化行列のスキャニング順序が誘導できる。
そして、復号化器は、決定されたスキャニング単位及びスキャニング順序に基づいて前記現在ブロックの変換係数をスキャンして整列することができる(S1930)。
そして、復号化器は、前記整列された変換係数に逆量子化、2次逆変換又は1次逆変換のうちの少なくとも一つを行うことができる。
図20は本発明の一実施形態による画像符号化方法を示すフローチャートである。
図20を参照すると、符号化器は、現在ブロックの残差ブロックから現在ブロックの変換係数を取得することができる(S2010)。
次に、符号化器は、現在ブロックのスキャニング単位及びスキャニング順序を決定することができる(S2020)。
ここで、前記現在ブロックの変換係数は、1次変換の出力、2次変換の出力又は量子化の出力のうちのいずれかであり得る。
一方、スキャニング順序は、垂直スキャニング順序、水平スキャニング順序、一番目の列を他の列よりも優先的にスキャンする第1垂直優先スキャニング順序、一番目の列と二番目の列を他の列よりも優先的にスキャンする第2垂直優先スキャニング順序、一番目の行を他の行よりも優先的にスキャンする第1水平優先スキャニング順序、一番目の行と二番目の行を他の行よりも優先的にスキャンする第2水平優先スキャニング順序、右上側対角スキャニング及び左下側対角スキャニング順序のうちの少なくとも一つを含むことができる。
一方、スキャニング単位は、係数グループ単位、個別係数単位及び混合単位のうちのいずれかに決定できる。
一方、現在ブロックのスキャニング単位及びスキャニング順序を決定するステップ(S2020)は、現在ブロックの周辺ブロックのスキャニング単位及びスキャニング順序のうちの少なくとも一つに基づいて前記現在ブロックのスキャニング単位及びスキャニング順序を決定することができる。
一方、現在ブロックのスキャニング単位が係数グループ単位に決定された場合、係数グループ単位内の変換係数スキャニング順序は、現在係数グループに隣接する周辺係数グループのスキャニング順序に基づいて決定できる。
一方、現在ブロックのスキャニング順序は、現在ブロックの深さに基づいて決定できる。
一方、現在ブロックの色差成分のスキャニング単位及びスキャニング順序は、現在ブロックの輝度成分のスキャニング単位及びスキャニング順序に基づいて決定できる。
一方、決定されたスキャニング順序に基づいて前記現在ブロックの量子化行列のスキャニング順序が誘導できる。
そして、符号化器は、決定されたスキャニング単位及びスキャニング順序に基づいて、現在ブロックの変換係数をスキャンしてエントロピー符号化することができる(S2030)。
これらの実施形態は、符号化器及び復号化器で同様の方法で行われ得る。
前記実施形態を適用する順序は、符号化器と復号化器で互いに異なってもよく、符号化器と復号化器で互いに同じであってもよい。
輝度及び色差信号それぞれに対して前記実施形態を行うことができ、輝度及び色差信号に対する前記実施形態を同様に行うことができる。
本発明の実施形態が適用されるブロックの形状は、正方形(square)或いは非正方形(non-square)の形状を有することができる。
本発明の前記実施形態は、符号化ブロック、予測ブロック、変換ブロック、ブロック、現在ブロック、符号化ユニット、予測ユニット、変換ユニット、ユニット及び現在ユニットのうちの少なくとも一つのサイズに応じて適用できる。ここでのサイズは、前記実施形態が適用されるために、最小サイズ及び/又は最大サイズに定義されてもよく、前記実施形態が適用される固定サイズに定義されてもよい。また、前記実施形態は、第1サイズでは第1実施形態が適用されてもよく、第2サイズでは第2実施形態が適用されてもよい。すなわち、前記実施形態は、サイズに応じて複合的に適用できる。また、本発明の前記実施形態は、最小サイズ以上及び最大サイズ以下の場合にのみ適用されてもよい。すなわち、前記実施形態は、ブロックサイズが一定の範囲内に含まれる場合にのみ適用されてもよい。
例えば、現在ブロックのサイズが8x8以上である場合にのみ、前記実施形態が適用できる。例えば、現在ブロックのサイズが4x4である場合にのみ、前記実施形態が適用できる。例えば、現在ブロックのサイズが16x16以下である場合にのみ、前記実施形態が適用できる。例えば、現在ブロックのサイズが16x16以上64x64以下である場合にのみ、前記実施形態が適用できる。
本発明の実施形態は、時間的階層(temporal layer)に応じて適用できる。前記実施形態が適用可能な時間的階層を識別するために、別途の識別子(identifier)がシグナリングされ、当該識別子によって特定された時間的階層に対して前記実施形態が適用できる。ここでの識別子は、前記実施形態が適用可能な最下位階層及び/又は最上位階層と定義されてもよく、前記実施形態が適用される特定の階層を指示するものと定義されてもよい。また、前記実施形態が適用される固定された時間的階層が定義されてもよい。
例えば、現在画像の時間的階層が最下位階層である場合にのみ、前記実施形態が適用できる。例えば、現在画像の時間的階層識別子が1以上である場合にのみ、前記実施形態が適用できる。例えば、現在画像の時間的階層が最上位階層である場合にのみ、前記実施形態が適用できる。
本発明の実施形態が適用されるスライスタイプ(slice type)が定義され、当該スライスタイプに応じて本発明の前記実施形態が適用できる。
前記符号化器でエントロピー符号化され且つ復号化器でエントロピー復号化されるフラグ及びインデックスのうちの少なくとも一つは、次の2値化(binarization)方法の少なくとも一つを用いることができる。
切り捨てられたライス(Truncated Rice)2値化方法
K次数指数-ゴロム(K-th order Exp_Golomb)2値化方法
限られたK次数指数-ゴロム(K-th order Exp_Golomb)2値化方法
固定長(Fixed-length)2値化方法
単項(Unary)2値化方法
切り捨てられた単項(Truncated Unary)2値化方法
これらの実施形態のうちのいずれかに限定されて現在ブロックの符号化/復号化過程に適用されず、特定の実施形態或いはこれらの実施形態の少なくとも一つの組み合わせが現在ブロックの符号化/復号化過程に適用され得る。
上述した実施形態において、これらの方法は、一連のステップ又はユニットであって、フローチャートに基づいて説明されているが、本発明は、これらのステップの順序に限定されるものではなく、あるステップは、上述したのとは異なるステップと異なる順序で又は同時に発生することができる。また、当該技術分野における通常の知識を有する者であれば、フローチャートに示されたステップが排他的ではなく、他のステップが含まれるか、フローチャートの一つ又はそれ以上のステップが本発明の範囲に影響することなく削除できることを理解することができるだろう。
上述した実施形態は、様々な態様の例示を含む。様々な態様を示すためのすべての可能な組み合わせを記述することはできないが、当該技術分野における通常の知識を有する者は、他の組み合わせが可能であることを認識することができるだろう。よって、本発明は、以下の特許請求の範囲内に属するすべての様々な交替、修正及び変更を含むといえる。
以上説明した本発明に係る実施形態は、様々なコンピュータ構成要素を介して実行できるプログラム命令の形で実現され、コンピュータ可読記録媒体に記録できる。前記コンピュータ可読記録媒体は、プログラム命令、データファイル、データ構造などを単独で又は組み合わせて含むことができる。前記コンピュータ可読記録媒体に記録されるプログラム命令は、本発明のために特別に設計及び構成されたもの、又はコンピュータソフトウェア分野の当業者に公知されて使用可能なものである。コンピュータ可読記録媒体の例には、ハードディスク、フロッピーディスク及び磁気テープなどの磁気媒体、CD-ROM、DVDなどの光記録媒体、フロプティカルディスク(floptical disk)などの磁気-光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリなどのプログラム命令を保存し実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られる機械語コードだけでなく、インタプリターなどを用いてコンピュータによって実行できる高級言語コードも含まれる。前記ハードウェア装置は、本発明に係る処理を行うために一つ以上のソフトウェアモジュールとして作動するように構成でき、その逆も同様である。
以上で、本発明が、具体的な構成要素などの特定の事項、限定された実施形態及び図面によって説明されたが、これは本発明のより全般的な理解を助けるために提供されたものに過ぎず、本発明は前記実施形態に限定されるものではない。本発明の属する技術分野における通常の知識を有する者であれば、このような記載から多様な修正及び変形を図ることができる。
よって、本発明の思想は、上述した実施形態に限定されて定められてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等に又は等価的に変形したすべてのものは本発明の思想の範疇に属するというべきである。