本明細書で使用される用語は本発明における機能を考慮しながらできるだけ現在広く使用されている一般的な用語を選択したが、これは当分野に携わる技術者の意図、慣例または新たな技術の出現などによって異なり得る。また、特定の場合は出願人が任意に選定した用語もあるが、この場合、該当する発明を実施する形態の部分にその意味を記載する。よって、本明細書で使用される用語は、単なる用語の名称ではなく、その用語の有する実質的な意味と本明細書全般にわたる内容に基づいて解釈すべきであることを明らかにする。
本明細書において、一部の用語は以下のように解釈される。コーディングは、場合によってはエンコーディングまたはでコーディングと解釈される。本明細書において、ビデオ信号のエンコーディング(符号化)を行ってビデオ信号のビットストリームを生成する装置はエンコーディング装置またはエンコーダと称され、ビデオ信号ビットストリームのデコーディング(復号化)を行ってビデオ信号を復元する装置はデコーディング装置またはデコーダと称される。また、本明細書において、ビデオ信号処理装置はエンコーダ及びデコーダをいずれも含む概念の用語として使用される。情報(information)は値(values)、パラメータ(parameter)、係数(coefficients)、成分(elements)などをいずれも含む用語であって、場合によっては意味が異なるように解釈されることがあるため、本発明はこれに限らない。「ユニット」は映像処理の基本単位またはピクチャの特定位置を指す意味で移用され、ルマ(luma)成分とクロマ(chroma)成分をいずれも含むイメージ領域を指す。また、「ブロック」はルマ成分及びクロマ成分(つまり、Cb及びCr)のうち特定成分を含むイメージ領域を指す。但し、実施例によって「ユニット」、「ブロック」、「パーティション」、及び「領域」などの用語は互いに混合して使用されてもよい。また、本明細書において、ユニットはコーディングユニット、予測ユニット、変換ユニットをいずれも含む概念として使用される。ピクチャはフィールドまたはフレームを指し、実施例よっては前記用語は互いに混用して使用される。
図1は、本発明の一実施例によるビデオ信号エンコーディング装置の概略的なブロック図である。図1を参照すると、本明細書のエンコーディング装置100は、変換部110、量子化部115、逆量子化部120、逆変換部125、フィルタリング部130、予測部150、及びエントロピーコーディング部160を含む。
変換部110は、入力されたビデオ信号と予測部150で生成された予測信号の差であるレジデュアル信号を変換して変換係数値を獲得する。例えば、離散コサイン変換(Discrete Cosine Transform、DCT)、離散サイン変換(Discrete Sine Transform、DST)、またはウェーブレット変換(Wavelet Transform)などが使用される。離散コサイン変換及び離散サイン変換は、入力されたピクチャ信号をブロックの形態に分けて変換を行うようになる。変換において、変換領域内の分布と特性によってコーディング効率が異なり得る。量子化部115は、変換部110で出力された変換係数の値を量子化する。
コーディング効率を上げるために、ピクチャ信号をそのままコーディングするのではなく、予測部150を介して予めコーディングされた領域を利用してピクチャを予測し、予測されたピクチャに原本ピクチャと予測ピクチャ間のレジデュアル値を足して復元ピクチャを獲得する方法が使用される。エンコーダとデコーダでミスマッチが発生しないように、エンコーダで予測を行う際にはデコーダでも使用可能な情報を使用すべきである。そのために、エンコーダでは符号化した現在ブロックを更に復元する過程を行う。逆量子化部120では変換係数値を逆量子化し、逆変換部125では逆量子化された変換係数値を利用してレジデュアル値を復元する。一方、フィルタリング部130は、復元されたピクチャの品質改善及び符号化効率の向上のためのフィルタリング演算を行う。例えば、デブロッキングフィルタ、サンプル適応的オフセット(Sample Adpative Offset、SAO)、及び適応的ループフィルタなどが含まれる。フィルタリングを経たピクチャは、出力されるか参照ピクチャとして利用するために複合ピクチャバッファ(Decoded Picture Buffer、DPB)156に貯蔵される。
予測部150は、イントラ予測部152とインター予測部154を含む。イントラ予測部152は現在ピクチャ内でイントラ(intra)予測を行い、インター予測部154は複合ピクチャバッファ156に貯蔵された参照バッファを利用して現在ピクチャを予測するインター(inter)予測を行う。イントラ予測部152は、現在ピクチャ内の復元されたサンプルからイントラ予測を行い、イントラ符号化情報をエントロピーコーディング部160に伝達する。イントラ符号化情報は、イントラ予測モード、MPM(Most Probable Mode)フラッグ、MPMインデックスのうち少なくとも一つを含む。インター予測部154は、モーション推定部154a及びモーション補償部154bを含んで構成される。モーション推定部154aは、復元された参照信号ピクチャの特定領域を参照して現在領域のモーションベクトル値を獲得する。モーション推定部154aは、参照領域に対するモーション情報(参照ピクチャインデックス、モーションベクトル情報)をエントロピーコーディング部160に伝達する。モーション補償部154bは、モーション補償部154aから伝達されたモーションベクトル値を利用してモーション補償を行う。インター予測部154は、参照領域に対するモーション情報を含むインター符号化情報をエントロピーコーディング部160に伝達する。
上述したピクチャ予測が行われれば、変換部110は原本ピクチャと予測ピクチャ間のレジデュアル値を変換して変換係数値を獲得する。この際、変換はピクチャ内で特定ブロック単位で行われるが、特定ブロックの大きさは予め設定された範囲内で可変する。量子化部115は、変換部110で生成された変換係数の値を量子化してエントロピーコーディング部160に伝達する。
エントロピーコーディング部160は、量子化された変換係数、イントラ符号化情報、及びインター符号化情報などをエントロピーコーディングしてビデオ信号ビットストリームを生成する。エントロピーコーディング部160では、可変長コーディング(Variable Length Codeing、VLC)方式と算術コーディング(arithmetic coding)方式などが使用される。可変長コーディング(VLC)方式は入力されるシンボルを連続したコードワードに変換するが、コードワードの長さは可変的である。例えば、よく発生するシンボルは短いコードワードで、よく発生しないシンボルは長いコードワードで表す。可変長コーディング方式として、コンテキスト基盤の適応型可変長コーディング(Context-based Adaptive Variable Length Coding、CAVLC)方式が使用される。算術コーディングは連続したデータシンボルを一つの素数に変換するが、算術コーディングは各シンボルを表すために必要な最適の素数ビットを得る。算術コーディングとして、コンテキスト基盤の適応型算術符号化(Context-based Adaptive Binary Arithmetic Coding、CABAC)方式が利用される。
前記生成されたビットストリームは、NAL(Network Abstraction Layer)ユニットを基本単位にカプセル化される。NALユニットは、符号化された整数個のコーディングツリーユニット(coding tree unit)を含む。ビデオデコーダでビットストリームを復号化するためには、まずビットストリームをNALユニット単位に分離した後、分離されたそれぞれのNALユニットを復号化すべきである。一方、ビデオ信号ビットストリームの復号化のために必要な情報は、ピクチャパラメータセット(Picture Parameter Set、PPS)、シーケンスパラメータセット(Sequence Parameter Set、SPS)、ビデオパラメータセット(Video Parameter Set、VPS)などのような上位レベルセットのRBSP(Raw Byte Sequence Payload)を介して伝送される。
一方、図1のブロック図は本発明の一実施例によるエンコーディング装置100を示し、分離して示したブロックはエンコーディング装置100のエレメントを論理的に区別して示している。よって、上述したエンコーディング装置100のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップで取り付けられる。一実施例によると、上述したエンコーディング装置100の各エレメントの動作はプロセッサ(図示せず)によって行われる。
図2は、本発明の実施例によるビデオ信号デコーディング装置の200概略的なブロック図である。図2を参照すると、本明細書のデコーディング装置200は、エントロピーデコーディング部210、逆量子化部220、逆変換部225、フィルタリング部230、予測部250を含む。
エントロピーデコーディング部210は、ビデオ信号ビットストリームをエントロピーコーディングし、各領域に対する変換係数、イントラ符号化情報、インター符号化情報などを抽出する。逆量子化部220はエントロピーデコーディングされた変換係数を逆量子化し、逆変換部225は逆量子化された変換係数を利用してレジデュアル値を復元する。ビデオ信号処理装置200は、逆変換部225から獲得されたレジデュアル値を予測部250から獲得された予測値と合算して元の画素値を復元する。
一方、フィルタリング部230は、ピクチャに対するフィルタリングを行って画質を向上させる。ここには、ブロック歪曲現象を減少させるためのデブロッキングフィルタ及び/またはピクチャ全体の歪曲を除去するための適応的ループフィルタが含まれる。フィルタリングを経たピクチャは出力されるか、次のピクチャに対する参照ピクチャとして利用するために複合ピクチャバッファ(DPB)256に貯蔵される。
予測部250は、イントラ予測部252とインター予測部254を含む。予測部250は、上述したエントロピーデコーディング部210を介して復号化された符号化タイプ、各領域に対する変換係数、イントラ/インター符号化情報などを活用して予測ピクチャを生成する。復号化が行われる現在ブロックを復元するために、現在ブロックが含まれた現在ピクチャまたは他のピクチャの復号化された領域が利用される。復元に現在ピクチャのみを利用する、つまり、イントラ予測のみを行うピクチャ(または、タイル/スライス)をイントラピクチャまたはIピクチャ(または、タイル/スライス)、イントラ予測とインター予測をいずれも行うピクチャ(または、タイル/スライス)をインターピクチャ(または、タイル/スライス)という。インターピクチャ(または、タイル/スライス)のうち各ブロックのサンプル値を予測するために最大一つのモーションベクトル及び参照ピクチャインデックスを利用するピクチャ(または、タイル/スライス)を予測ピクチャ(predictive picture)またはPピクチャ(または、タイル/スライス)と言い、最大2つのモーションベクトル及び参照ピクチャインデックスを利用するピクチャ(または、タイル/スライス)を双予測ピクチャ(Bi-predictive picture)またはBピクチャ(または、タイル/スライス)という。つまり、Pピクチャ(または、タイル/スライス)は各ブロックを予測するために最大一つのモーション情報セットを利用し、Bピクチャ(または、タイル/スライス)は各ブロックを予測するために最大2つのモーション情報セットを利用する。ここで、モーション情報セットは一つ以上のモーションベクトルと一つの参照ピクチャインデックスを含む。
イントラ予測部252は、イントラ符号化情報及び現在ピクチャ内の復元されたサンプルを利用して予測ブロックを生成する。上述したように、イントラ符号化情報は、イントラ予測モード、MPMフラッグ、MPMインデックスのうち少なくとも一つを含む。イントラ予測部252は、現在ブロックの左側及び/または上側に位置する復元されたピクセルを参照ピクセルとして利用して、現在ブロックのピクセル値を予測する。一実施例によると、参照ピクセルは現在ブロックの左側境界に隣接したピクセル及び/または上側境界に隣接したピクセルである。他の実施例によると、参照ピクセルは現在ブロックの周辺ブロックのピクセルのうち、現在ブロックの左側境界から予め設定された距離以内に隣接したピクセル、及び/または現在ブロックの上側境界から予め設定された距離以内に隣接したピクセルである。この際、現在ブロックの周辺ブロックは、現在ブロックに隣接した左側(L)ブロック、上側(A)ブロック、下左側(Below Left、BL)ブロック、上右側(Above Right、AR)ブロック、または上左側(Above Left、AL)ブロックのうち少なくとも一つを含む。
インター予測部254は、複合ピクチャバッファ256に貯蔵された参照ピクチャ及びインター符号化情報を利用して予測ブロックを生成する。インター符号化情報は、参照ブロックに対する現在ブロックのモーション情報(参照ピクチャインデックス、モーションベクトルなど)を含む。インター予測には、L0予測、L1予測、及び双予測(Bi-prediction)がある。L0予測はL0ピクチャリストに含まれた一つの参照ピクチャを利用した予測であり、L1予測はL1ピクチャリストに含まれた一つの参照ピクチャを利用した予測を意味する。そのためには、1セットのモーション情報(例えば、モーションベクトル及び参照ピクチャインデックス)が必要である。双予測方式では最大2つの参照領域を利用するが、この2つの参照領域は同じ参照ピクチャに存在してもよく、互いに異なるピクチャにそれぞれ存在してもよい。つまり、双予測方式では最大2セットのモーション情報(例えば、モーションベクトル及び参照ピクチャインデックス)が利用されるが、2つのモーションベクトルが同じ参照ピクチャインデックスに対応してもよく、互いに異なる参照ピクチャインデックスに対応してもよい。この際、参照ピクチャは時間的に現在ピクチャの以前や以降のいずれにも表示(または出力)される。
インター予測部254は、モーションベクトル及び参照ピクチャインデックスを利用して現在の参照ブロックを獲得する。前記参照ブロックは、参照ピクチャインデックスに対応する参照ピクチャ内に存在する。また、モーションベクトルによって特定されたブロックのピクセル値またはこれの補間(interpolation)された値が現在ブロックの予測値(predictor)として利用される。サブペル(sub-pel)単位のピクセル正確度を有するモーション予測のために、例えば、ルマ信号に対して8-タブ補間フィルタが、クロマ信号に対して4-タブ補間フィルタが使用される。但し、サブペル単位のモーション予測のための補間フィルタはこれに限らない。このように、インター予測部254は、以前復元されたピクチャから現在ユニットのテクスチャをモーション情報を利用して予測するモーション補償(motion compensation)を行う。
前記イントラ予測部252またはインター予測部254から出力された予測値、及び逆変換部225から出力されたレジデュアル値が足されて復元されたビデオピクチャが生成される。つまり、ビデオ信号デコーディング装置200は、初速部250から生成された予測ブロックと逆変換部225から獲得されたレジデュアルを利用して現在ブロックを復元する。
一方、図2のブロック図は本発明の一実施例によるデコーディング装置200を示し、分離して示したブロックはデコーディング装置200のエレメントを論理的に区別して示している。よって、上述したデコーディング装置200のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップで取り付けられる。一実施例によると、上述したデコーディング装置200の各エレメントの動作はプロセッサ(図示せず)によって行われる。
図3は、ピクチャ内でコーディングツリーユニット(Coding Tree Unit、CTU)がコーディングユニット(Coding Units、CUs)に分割される実施例を示している。ビデオ信号のコーディング過程において、ピクチャはコーディングツリーユニット(CTU)のシーケンスに分割される。コーディングツリーユニットは、ルマサンプルのNXNブロックと、それに対応するクロマサンプルの2つのブロックからなる。コーディングツリーユニットは、複数のコーディングユニットに分割される。コーディングユニットは上述したビデオ信号の処理過程、つまり、イントラ/インター予測、変換、量子化及び/またはエントロピーコーディングなどの過程でピクチャを処理するための基本単位を指す。一つのピクチャ内において、コーディングユニットの大きさ及び形状は一定ではない。コーディングユニットは正方形または長方形の形状を有する。長方形コーディングユニット(または、長方形ブロック)は垂直コーディングユニット(または、垂直ブロック)と水平コーディングユニット(または、水平ブロック)を含む。本明細書において、垂直ブロックは高さが幅より大きいブロックであり、水平ブロックは幅が高さより大きいブロックである。また、本明細書において、正方形ではない(non-square)ブロックは長方形ブロックを指すが、本発明はこれに限らない。
図3を参照すると、コーディングツリーユニットは、まずクォードツリー(Quad Tree、QT)構造に分割される。つまり、クォードツリー構造において、2NX2Nの大きさを有する一つのノードはNXNの大きさを有する4つのノードに分割される。本明細書において、クォードツリーは4進(quaternary)ツリーとも称される。クォードツリー分割は再帰的に行われ、全てのノードが同じ深さに分割される必要はない。
一方、上述したクォードツリーのリーフノード(leaf node)は、マルチ-タイプツリー(Multi-Type Tree、MTT)構造に更に分割される。本発明の実施例によると、マルチタイプツリー構造では一つのノードが水平または垂直分割の2進(binary、バイナリー)または3進(ternary、ターナリー)ツリー構造に分割される。つまり、マルチ-タイプツリー構造には、垂直バイナリー分割、水平バイナリー分割、垂直ターナリー分割、及び水平ターナリーの4つの分割構造が存在する。本発明の実施例によると、前記各ツリー構造において、ノードの幅及び高さはいずれも2の累乗値を有する。例えば、バイナリーツリー(Binary Tree、BT)構造において、2NX2Nの大きさのノードは垂直バイナリー分割によって2つのNX2Nノードに分割され、水平バイナリー分割によって2つの2NXNノードに分割される。また、ターナリーツリー(Ternary Tree、TT)構造において、2NX2Nの大きさのノードは垂直ターナリー分割によって(N/2)X2N、NX2N、及び(N/2)X2Nのノードに分割され、水平バイナリー分割によって2NX(N/2)、2NXN及び、2NX(N/2)のノードに分割される。このようなマルチ-タイプツリー分割は再帰的に行われる。
マルチ-タイプツリーのリーフノードはコーディングユニットになり得る。コーディングユニットが最大変換長に比べ過度に大きくなければ、該当コーディングユニットはそれ以上分割されずに予測及び変換の単位として使用される。一方、上述したクォードツリー及びマルチ-タイプツリーにおいて、次のパラメータのうち少なくとも一つが事前に定義されるか、PPS、SPS、VPSなどのような上位レベルセットのRBSPを介して伝送される。1)CTUの大きさ:クォードツリーのルートノード(root node)の大きさ、2)最小QTの大きさ(MinQtSize):許容された最小QTリーフノードの大きさ、3)最大BTの大きさ(MaxBtSize):許容された最大BTルートノードの大きさ、4)最大TTの大きさ(MaxTtSize):許容された最大TTルートノードの大きさ、5)最大MTTの深さ(MaxMttDepth):QTのリーフノードからのMTT分割の最大許容深さ、6)最大BTの大きさ(MinBtSize):許容された最大BTリーフノードの大きさ、7)最小TTの大きさ(MinTtSize):許容された最小TTリーフノードの大きさ。
図4は、クォードツリー及びマルチ-タイプツリーの分割をシグナリングする方法の一実施例を示す図である。上述したクォードツリー及びマルチ-タイプツリーの分割をシグナリングするために、予め設定されたフラッグが使用される。図4を参照すると、クォードツリーノードの分割可否を指示するフラッグ「qt_split_flag」、マルチ-タイプツリーノードの分割可否を指示するフラッグ「mtt_split_flag」、マルチ-タイプツリーノードの分割方向を指示するフラッグ「mtt_split_vertical_flag」、またはマルチ-タイプツリーノードの分割形状を指示するフラッグ「mtt_split_binary_flag」のうち少なくとも一つが使用される。
本発明の実施例によると、コーディングツリーユニットはクォードツリーのルートノードであり、クォードツリー構造に優先的に分割される。クォードツリー構造ではそれぞれのノード「QT_node」別に「qt_split_flag」がシグナリングされる。「qt_split_flag」の値が1であれば、該当ノードは4つの正方形ノードに分割され、「qt_split_flag」の値が0であれば、該当ノードはクォードツリーのリーフノード「QT_leaf_node」となる。
それぞれのクォードツリーリーフノード「QT_leaf_node」は、マルチ-タイプツリー構造に更に分割される。マルチ-タイプツリー構造ではそれぞれのノード「MTT_node」別に「mtt_split_flag」がシグナリングされる。「mtt_split_flag」の値が1であれば、該当ノードは複数の長方形ノードに分割され、「mtt_split_flag」の値が0であれば、該当ノードはマルチ-タイプツリーのリーフノード「MTT_leaf_node」となる。マルチ-タイプツリーノード「MTT_node」が複数の長方形ノードに分割されれば(つまり、「mtt_split_flag」の値が1であれば)、ノード「MTT_node」のための「mtt_split_vertical_flag」及び「mtt_split_binary_flag」が更にシグナリングされる。「mtt_split_vertical_flag」の値が1であれば、ノード「MTT_node」の垂直分割が指示され、「mtt_split_vertical_flag」の値が0であれば、ノード「MTT_node」の水平分割が指示される。また、「mtt_split_binary_flag」の値が1であれば、ノード「MTT_node」は2つの長方形ノードに分割され、「mtt_split_binary_flag」の値が0であれば、ノード「MTT_node」は3つの長方形ノードに分割される。
図5及び図6は、本発明の実施例によるイントラ予測方法をより詳しく示す図である。上述したように、イントラ予測部は、現在ブロックの左側及び/または上側に位置する復元されたピクセルを参照ピクセルとして利用して、現在ブロックのピクセル値を予測する。
まず、図5はイントラ予測モードで現在ブロックを予測するために使用される参照サンプルの一実施例を示す。一実施例によると、参照ピクセルは現在ブロックの左側境界に隣接したピクセル及び/または上側境界に隣接したピクセルである。図5に示したように、現在ブロックの大きさがWXHで現在ブロックに隣接した単一参照ライン(line)のピクセルがイントラ予測に使用されれば、現在ブロックの左側及び/または上側に位置した最大2W+2H+1個の隣接したピクセルを使用して参照ピクセルが設定される。一方、本発明の更なる実施例によると、現在ブロックのイントラ予測のために多重参照ラインのピクセルが使用される。多重参照ラインは、現在ブロックから予め設定された範囲以内に位置するn個のラインからなる。一実施例によると、イントラ予測のために多重参照ラインのピクセルが使用されれば、参照ピクセルに設定されるラインを指示する別途のインデックス情報がシグナリングされる。参照ピクセルとして使用される少なくとも一部の隣接ピクセルがまだ復元されていなければ、イントラ予測部は予め設定された規則による参照サンプルパッディング過程を行って参照ピクセルを獲得する。また、イントラ予測部は、イントラ予測の誤差を減らすために参照サンプルフィルタリング過程を行う。つまり、隣接ピクセル及び/または参照サンプルパッディング過程によって獲得されたピクセルにフィルタリングを行って参照ピクセルを獲得する。イントラ予測部は、このように獲得された参照ピクセルを利用して現在ブロックのピクセルを予測する。
次に、図6はイントラ予測に使用される予測モードの一実施例を示す図である。イントラ予測のために、イントラ予測方向を指示するイントラ予測モード情報がシグナリングされる。イントラ予測モードは、イントラ予測モードセットを構成する複数のイントラ予測モードのうちいずれか一つを指示する。現在ブロックがイントラ予測ブロックであれば、デコーダはビットストリームから現在ブロックのイントラ予測モード情報を受信する。デコーダのイントラ予測部は、抽出されたイントラ予測モード情報に基づいて現在ブロックに対するイントラ予測を行う。
本発明の実施例によると、イントラ予測モードセットは、イントラ予測に使用される全てのイントラ予測モード(例えば、総67個のイントラ予測モード)を含む。より詳しくは、イントラ予測モードセットは、平面モード、DCモード、及び複数の(例えば、65個の)角度モード(つまり、方向モード)を含む。それぞれのイントラ予測モードは、予め設定されたインデックス(つまり、イントラ予測モードインデックス)を介して指示される。例えば、図6に示したように、イントラ予測モードインデックス0は平面モードを指示し、イントラ予測モードインデックス1はDCモードを指示する。また、イントラ予測モードインデックス2乃至66は、互いに異なる角度モードをそれぞれ指示する。角度モードは、予め設定された角度範囲以内の互いに異なる角度をそれぞれ指示する。例えば、角度モードは時計回りに45度から-135度の間の角度範囲(つまり、第1角度範囲)以内の角度を指示する。この際、前記角度モードは12時方向を基準に定義される。この際、イントラ予測モードインデックス2は水平対角(Horizontal Diagonal、HDIA)モードを指示し、イントラ予測モードインデックス18は水平(Horizontal、HOR)モードを指示し、イントラ予測モードインデックス34は対角(Diagonal、DIA)モードを指示し、イントラ予測モードインデックス50は水直(Vertical、VER)モードを指示し、イントラ予測モードインデックス66は垂直対角(Vertical Diagonal、VDIA)モードを指示する。
一方、予め設定された角度範囲は現在ブロックの形状に応じて互いに異なるように設定される。例えば、現在ブロックが長方形ブロックであれば、時計回りに45度を超過するか-135度未満の角度を指示する広角モードが更に使用される。現在ブロックが水平ブロックであれば、角度モードは時計回りに(45+offset1)度から(-135+offset1)度の間の角度範囲(つまり、第2角度範囲)以内の角度を指示する。この際、第1角度範囲を逸脱する角度モード67乃至76が更に使用される。また、現在ブロックが水直ブロックであれば、角度モードは時計回りに(45-offset2)度から(-135-offset2)度の間の角度範囲(つまり、第3角度範囲)以内の角度を指示する。この際、第1角度範囲を逸脱する角度モード-10乃至-1が更に使用される。本発明の実施例によると、offset1及びoffset2の値は、長方形ブロックの幅と高さとの間の割合によって互いに異なるように決定される。また、offset1及びoffset2は正数である。
本発明の追加的な実施例によると、イントラ予測モードセットを構成する複数の角度モードは、基本角度モードと拡張角度モードを含む。この際、拡張角度モードは基本角度モードに基づいて決定される。
一実施例によると、基本角度モードは従来のHEVC(High Efficiency Video Coding)標準のイントラ予測で使用される角度に対応するモードであり、拡張角度モードは次世代ビデオコーデック標準のイントラ予測で新たに追加される角度に対応するモードである。より詳しくは、基本角度モードはイントラ予測モード{2、4、6、…、66}のうちいずれか一つに対応する角度モードであり、拡張角度モードはイントラ予測モード{3、5、6、…、65}のうちいずれか一つに対応する角度モードである。つまり、拡張角度モードは、第1角度範囲内で基本角度モードの間の角度モードである。よって、拡張角度モードが指示する角度は基本角度モードが指示する角度に基づいて決定される。
他の実施例によると、基本角度モードは予め設定された第1角度範囲以内の角度に対応するモードであり、拡張角度モードは前記第1角度範囲を逸脱する広角モードである。つまり、基本角度モードはイントラ予測モード{2、3、4、…、66}のうちいずれか一つに対応する角度モードであり、拡張角度モードはイントラ予測モード{-10、-9、…、-1}及び{67、68、…、76}のうちいずれか一つに対応する角度モードである。拡張角度モードが指示する角度は、対応する基本角度モードが指示する角度の反対側の角度に決定される。よって、拡張角度モードが指示する角度は基本角度モードが指示する角度に基づいて決定される。一方、拡張角度モードの個数はこれに限らず、現在ブロックの大きさ及び/または形状によって更なる拡張角度が定義される。例えば、拡張角度モードはイントラ予測モード{-14、-13、…、-1}及び{67、68、…、80}のうちいずれか一つに対応する角度モードに定義されてもよい。一方、イントラ予測モードセットに含まれるイントラ予測モードの総個数は、上述した基本角度モードと拡張角度モードの構成によって可変する。
前記実施例において、拡張角度モード間の間隔は、対応する基本角度モード間の間隔に基づいて設定される。例えば、拡張角度モード{3、5、7、…、65}間の間隔は、対応する基本角度モード{2、4、6、…、66}間の間隔に基づいて決定される。また、拡張角度モード{-10、-9、…、-1}間の間隔は、対応する反対側の基本角度モード{56、57、…、65}間の間隔に基づいて決定され、拡張角度モード{67、68、…、76}間の間隔は、対応する反対側の基本角度モード{3、4、…、12}間の間隔に基づいて決定される。拡張角度モード間の角度間隔は、対応する基本角度モード間の角度間隔と同じように設定される。また、イントラ予測モードセットにおいて、拡張角度モードの個数は基本角度モードの個数以下に設定される。
本発明の実施例によると、拡張角度モードは基本角度モードに基づいてシグナリングされる。例えば、広角モード(つまり、拡張角度モード)は第1角度範囲以内の少なくとも一つの角度モード(つまり、基本角度モード)を代替する。代替される基本角度モードは、広角モードの反対側に対応する角度モードである。つまり、代替される基本角度モードは広角モードが指示する角度の反対方向の角度に対応するか、または前記反対方向の角度から予め設定されたオフセットインデックスだけ差がある角度に対応する角度モードである。本発明の実施例によると、予め設定されたオフセットインデックスは1である。代替される基本角度モードに対応するイントラ予測モードインデックスは広角モードに更にマッピングされて、該当広角モードをシグナリングする。例えば、広角モード{-10、-9、…、-1}はイントラ予測モードインデックス{57、58、…、66}によってそれぞれシグナリングされ、広角モード{67、68、…、76}はイントラ予測モードインデックス{2、3、…、11}によってそれぞれシグナリングされる。このように基本角度モードのためのイントラ予測モードインデックスが拡張角度モードをシグナリングするようにすることで、各ブロックのイントラ予測に使用される角度モードの構成が互いに異なっても、同じセットのイントラ予測モードインデックスがイントラ予測モードのシグナリングに使用される。よって、イントラ予測モードの構成の変化によるシグナリングオーバーヘッドが最小化される。
一方、拡張角度モードの使用可否は、現在ブロックの形状及び大きさのうち少なくとも一つに基づいて決定される。一実施例によると、現在ブロックの大きさが予め設定された大きさより大きければ、拡張角度モードが現在ブロックのイントラ予測のために使用され、そうでなければ基本角度モードのみ現在ブロックのイントラ予測のために使用される。他の実施例によると、現在ブロックが正方形ではないブロックであれば、拡張角度モードが現在ブロックのイントラ予測のために使用され、現在ブロックが正方形ブロックであれば、基本角度モードのみ現在ブロックのイントラ予測のために使用される。
イントラ予測部は現在ブロックのイントラ予測モード情報に基づいて、現在ブロックのイントラ予測に使用される参照ピクセル及び/または補間された参照ピクセルを決定する。イントラ予測モードインデックスが特定角度モードを指示すれば、現在ブロックの現在ピクセルから前記特定角度に対応する参照ピクセルまたは補間された参照ピクセルが現在ピクセルの予測に使用される。よって、イントラ予測モードに応じて互いに異なるセットの参照ピクセル及び/または補間された参照ピクセルがイントラ予測に使用される。参照ピクセル及びイントラ予測モード情報を利用して現在ブロックのイントラ予測が行われた後、デコーダは逆変換部から獲得された現在ブロックの残差信号を現在ブロックのイントラ予測値と足して、現在ブロックのピクセル値を復元する。
図7は、エンコーダによって選択されたイントラ予測モードをデコーダにシグナリングする方法の一実施例を示す図である。イントラ予測モードセットに含まれたイントラ予測モードの総個数をT(例えば、67)とすると、T個のモードを単に二進法で表現してシグナリングする方法は、各モードが選択される確率及び該当ブロック及び周辺ブロックのコンテキストを考慮しないため非効率的である。よって、全体モードのうち現在ブロックに使用されている確率が高い一部モードのリストを別途に管理すれば、効率的なシグナリングが行われる。
本発明の実施例によると、現在ブロックのイントラ予測のために、全体のイントラ予測モードのうち一部モードからなる少なくとも一つの予測モードリストが管理される。イントラ予測のための第1予測モードリストは、MPMリストである。MPMリストに含まれるイントラ予測モードはMPMモードであって、前記MPMリストに含まれていないイントラ予測モードは非-MPMモードと称される。エンコーダは、現在ブロックに使用されているイントラ予測モードがMPMモードであるのかまたは非-MPMモードであるのかを区分するMPMフラッグをシグナリングする。デコーダは、現在ブロックに使用されているイントラ予測モードがMPMモードであるのかまたは非-MPMモードであるのかを、受信されたMPMフラッグを介して識別する。
一実施例によると、MPMモードのために別途の符号化方法を使用することで、より少ないビットで効率的なシグナリングを行うことができる。MPMリストに含まれるMPMモードの個数をmとすると、非-MPMモードの個数はT-mである。MPMモードの個数mが非-MPMモードの個数T-mより小さければ、MPMモードは切り捨て単項(truncated unary)二進化でコーディングされ、非-MPMモードは切り捨て二項(truncated binary)二進化でコーディングされる。
MPMリストは、以下のように多様なコンテキストを段階別に考慮して構成される。第一、MPMリストは、現在ブロックの周辺ブロックで使用されたイントラ予測モード及び平面/DCモードからなる(コンテキストM0)。復元が完了された周辺ブロックのうちイントラ予測モードで符号化されたブロックが存在すれば、ピクチャの地域的類似性のため、現在ブロックは該当ブロックと同じイントラ予測モードを使用している可能性がある。よって、MPMリストは、周辺ブロックのイントラ予測モードを含んで構成される。一実施例によると、現在ブロックの周辺ブロックは、現在ブロックに隣接した左側(L)ブロック、上側(A)ブロック、下左側(BL)ブロック、上右側(AR)ブロック、または上左側(AL)ブロックのうち少なくとも一つを含む。例えば、現在ブロックの周辺ブロックは現在ブロックに隣接した左側(L)ブロック及び上側(A)ブロックを含む。左側(L)ブロックは現在ブロックの左側境界に隣接した最下端のブロックであり、上側(A)ブロックは現在ブロックの上側境界に隣接した最右側のブロックである。MPMリストを構成するための周辺ブロックの具体的な実施例は、図8を参照して更に説明する。現在ブロックの周辺ブロックで選択されたイントラ予測モード、平面モード、及びDCモードが予め設定された順に沿ってMPMリストに追加される。例えば、{ブロックLのモード、ブロックAのモード、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、ブロックALのモード}の順にMPMリストが構成される。
第二、前記方法でMPMモードの個数mを埋めることができなければ、更なるコンテキスト条件(例えば、コンテキストM1、コンテキストM2,…)を適用してMPMリストを埋める。更なるコンテキスト条件を適用する際、MPMモードに既に含まれているイントラ予測モードは新たに追加されない。
一方、全体T個のイントラ予測モードのうち、MPMリストに含まれていない残りのT-m個の非-MPMモードは切り捨て二項二進化でコーディングされる。切り捨て二項二進化が使用されれば、2^(k-1)<T-m<2^(k)と仮定すると、初期2^(k)-(T-m)個のインデックスはK-1個のビット(またはビン)を使用してシグナリングされ、残りのインデックスはk個のビット(またはビン)を使用してシグナリングされる。よって、非-MPMモードに対しても更なるコンテキスト条件(つまり、コンテキストN)を適用し、該当ブロックで選択される可能性が相対的に高いモードをk-1個のビットで構成されたインデックスでシグナリングしてシグナリングオーバーヘッドを最小化することができる。
本発明の更なる実施例によると、非-MPMモードのうち一部モードからなる第2予測モードリストが管理される。より詳しくは、非-MPMモードは更に選択(selected、s)モードと非-選択(non-selected、ns)モードに区分され、選択モードからなる第2予測モードリスト(つまり、選択モードリスト)が管理される。選択リストに含まれるイントラ予測モードは選択モードと、前記選択モードリストに含まれていないイントラ予測モードは非-選択モードと称される。エンコーダは、現在ブロックに使用されているイントラ予測モードが選択モードであるのかまたは非-選択モードであるのかを区分する選択モードフラッグをシグナリングする。デコーダは、現在ブロックに使用されているイントラ予測モードが選択モードであるのかまたは非-選択モードであるのかを、受信された選択モードフラッグを介して識別する。
上述したように、非-MPMモードを更に区分する場合、選択モードは固定長でコーディングされる。この際、選択モードに更なるコンテキスト条件(例えば、コンテキストS)を適用して、該当ブロックで選択される可能性が高いモードを優先して配置する。この際、s個(この際、sは2の累乗値)の選択モードは固定長でコーディングされ、残りのns個の非-選択モードは切り捨て二項二進化でコーディングされる。ns個の非-選択モードは、任意のl-1個のビット(またはビン)、またはl個のビット(またはビン)を使用してシグナリングされる。この際、非-選択モードに対して更なるコンテキスト条件(つまり、コンテキストNS)を適用し、該当ブロックで選択される可能性が相対的に高いモードをl-1個のビットからなるインデックスでシグナリングしてシグナリングオーバーヘッドを最小化することができる。
前記コンテキスト条件の具体的な実施例は、図面を参照して後述する。以下の実施例で追加に定義されるコンテキスト条件は、前記コンテキスト条件{M0、M1、M2、N、S、NS}が適用される多様な構成に個別にまたは重複して適用される。例えば、基本角度モードを拡張角度モードより優先してシグナリングするコンテキスト条件が更に使用されてもよい。また、MPMモードの最初のコンテキスト条件(例えば、コンテキストM0)を介して導出されたブロックの角度モードに任意のオフセット(例えば、-1、+1)を足した角度モードを予測モードリストに優先的に追加するコンテキスト条件が使用されてもよい。このようなコンテキスト条件は、MPMモード、非-MPMモード、選択モード、または非-選択モードのうち一つ以上に対するコンテキスト条件として適用される。
本発明の更なる実施例によると、上述したイントラ予測方法は、周辺ブロックのイントラ予測モードの個数及び/またはイントラ予測モード情報に基づいて決定される。例えば、前記MPMモード、非-MPMモード、選択モード、及び非-選択モードの区分可否、各モード別にシグナリングされるイントラ予測モードの個数(つまり、m、T-m、s、及びns)、及び各モードが符号化される方法(つまり、切り捨て単項二進化、切り捨て二項二進化、固定長符号化)などは、周辺ブロックのイントラ予測モードの個数またはその値に応じて可変的に構成される。この際、周辺ブロックはMPMリストを構成するために参照する予め設定されたブロックである。
第一、MPMリストを構成するために現在ブロックの周辺ブロックのイントラ予測モードを検討した後、予測モードの総個数に基づいて前記可変構成が適用される。現在ブロックがBフレームまたはPフレームのブロックであれば、周辺ブロックのうちからイントラ予測が行われたブロックの個数及び/または予測モードの個数に応じて前記MPMリストを構成する方法が変更される。これを更に拡張すると、MPMリストを構成するためにIフレームとB/Pフレームとの間に互いに異なる方法が使用される。Iフレームでは周辺の全てのブロックがイントラ予測で構成されているため、上述した第一方法を適用せずに次の第二方法または類似した方法が適用される。
第二、周辺ブロックで使用された互いに異なるイントラ予測モードの個数に基づいて前記可変構成が適用される。例えば、周辺ブロックで使用されたイントラ予測モードがいずれも同じであるのかまたは互いに異なるのかによって、前記MPMリストを構成する方法が変更される。または、周辺ブロックで使用されたイントラ予測モードの異なる程度によって、前記MPMリストを構成する方法が変更される。周辺ブロックで使用されたイントラ予測モードの異なる程度は、周辺ブロックで使用されたイントラ予測モードの個数が予め設定された値以上であるのか否かに基づいて決定される。また、周辺ブロックで使用されたイントラ予測モードの異なる程度は、周辺ブロックで使用されたイントラ予測モードのモード値の差に基づいて決定される。周辺ブロックで使用されたイントラ予測モードの異なる程度が予め設定された基準を満足すれば、第一方法に基づいてMPMリストが構成される。しかし、周辺ブロックで使用されたイントラ予測モードの異なる程度が予め設定された基準を満足しなければ、第一方法とは異なる第二方法に基づいてMPMリストが構成される。一方、上述した可変的なMPMリストを生成するために検討する現在ブロックの周辺ブロックは、基本的に設定された位置以外に更なる位置のブロックを含む。それに関する具体的な実施例は、図8を参照して説明する。
図8は、イントラ予測モードをシグナリングする方法の詳細実施例を示す図である。図8(a)及び図8(b)は、予測モードリストを構成するために参照する周辺ブロックの実施例を示す図である。図8(c)は、上述したイントラ予測モードをシグナリングする方法の一実施例を示す図である。また、図8(d)は、非-選択モードを切り捨て二項二進化でシグナリングする一実施例を示す図である。
まず、図8(a)はMPMリストを構成するために参照する周辺ブロックの相対的な位置の一実施例を示す図である。図8(a)を参照すると、周辺ブロックは現在ブロックに隣接した左側(L)ブロック、上側(A)ブロック、下左側(BL)ブロック、上右側(AR)ブロック、または上左側(AL)の順に参照される。この際、前記周辺ブロックから選択されたイントラ予測モード、平面モード、及びDCモードが予め設定された順に沿ってMPMリストに追加される。但し、本発明の実施例において、MPMリストを構成するために参照する周辺ブロックはこれに限らない。例えば、現在ブロックの周辺ブロックは現在ブロックの左側(L)ブロック及び上側(A)ブロックを含む。左側(L)ブロックは現在ブロックの左側境界に隣接した最下端のブロックであり、上側(A)ブロックは現在ブロックの上側境界に隣接した最右側ブロックである。
次に、図8(b)はMPMリストを構成するために参照する周辺ブロックの相対的な位置の他の実施例を示す図である。現在ブロックの周辺ブロックは現在ブロックより小さい大きさに分割され、現在ブロックの左側または上側境界に隣接した複数のブロックが存在する。この際、現在ブロックの左側または上側境界に隣接した複数のブロックのイントラ予測モードがMPMリストを構成するために参照される。図8(b)の実施例では、現在ブロックの左側境界に隣接した複数のブロックを下から上にL0、L1とし、現在ブロックの上側境界に隣接した複数のブロックを右側から左側にA0、A1とする。
第一実施例によると、{ブロックL0のLモード、ブロックA0のモード、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、及びブロックALのモード}の順にMPMリストが構成される。第二実施例によると、{ブロックL0のLモード、ブロックL1のモード、ブロックA0のモード、ブロックA1のモード、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、及びブロックALのモード}の順にMPMリストが構成される。この際、更に参照される周辺ブロックの位置及び個数は可変する。また、現在ブロックに隣接した下左側ブロック(BL)、上右側(AR)ブロック、及び上左側(AL)でも追加のブロックが参照される。第三実施例によると、{ブロックL0のLモード、ブロックA0のモード、平面モード、DCモード、ブロックL1のモード、ブロックA1のモード、ブロックBLのモード、ブロックARのモード、及びブロックALのモード}の順にMPMリストが構成される。つまり、選択される確率が高い平面モード及びDCモードがMPMリストに選択される順序をブロックL1のモード及びブロックA1のモードより優先することで、シグナリングオーバーヘッドを減らすことができる。第四実施例によると、{ブロックL0のLモード、ブロックA0のモード、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、ブロックALのモード、ブロックL1のモード、及びブロックA1のモード}の順にMPMリストが構成される。つまり、上述した第一実施例によるMPMリスト構成の順序以降、ブロックL1及びブロックA1が参照される。
本発明の更なる実施例によると、MPMリストを構成する順序は現在ブロックの形状に基づいて決定される。より詳しくは、現在ブロックが正方形ではないブロックであれば、現在ブロックが垂直ブロックであるのかまたは水平ブロックであるのかによって周辺ブロックの参照順序が異なるように決定される。例えば、現在ブロックが垂直ブロックであれば左側ブロックが上側ブロックより優先的に参照され、現在ブロックが水平ブロックであれば上側ブロックが左側ブロックより優先的に参照される。他の実施例によると、MPMリストを構成する順序は現在ブロックの形状と周辺ブロックの形状を比べて決定される。例えば、現在ブロックが垂直ブロックであれば、予め設定された周辺ブロックのうちから垂直ブロックに使用されたイントラ予測モードがMPMリストに優先的に含まれる。
本発明のまた他の実施例によると、MPMリストを構成する順序は現在ブロックの形状と周辺ブロックで使用された角度モードとの間の連関性を考慮して決定される。例えば、現在ブロックが垂直ブロックであれば、予め設定された周辺ブロックで使用された角度モードのうち垂直(VER)モード50から予め設定された範囲にあるか、対角(DIA)モード34と垂直対角(VDIA)モード66との間にある角度モードがMPMリストに優先的に含まれる。更なる実施例によると、周辺ブロックのMPMリストに含まれたイントラ予測モードが現在ブロックのMPMリストに含まれる。この際、周辺ブロックに使用されたイントラ予測モードで現在ブロックのMPMリストが埋まられなければ、前記周辺ブロックのMPMリストに含まれたイントラ予測モードが現在ブロックのMPMリストに追加される。
図8(c)は、上述したイントラ予測モードをシグナリングする方法の一実施例を示す図である。全体T個のイントラ予測モードのうちm個のモードはMPMモードに区分され、切り捨て単項二進化でシグナリングされる。一実施例によると、Tは67でmは6である。切り捨て単項二進化ではシグナリングインデックスが大きくなるほど使用されるビット(またはビン)の個数が増加するため、該当ブロックで選択される可能性が相対的に高いモードを低い値のインデックスにマッチングしてシグナリング効率を上げる。このために、エンコードとデコーダが同じコンテキスト条件でMPMリストを構成し、導出されたモード値は前記コンテキスト条件に基づいて再配列してシグナリングされる。例えば、選択されたモードをDC/平面モードのような非-角度モード、垂直モード、平面角度モードの順に分類してCABAC基板の符号化が行われる。次に、任意のコンテキスト条件によって決定されたs個の選択モードは固定長ビットでシグナリングされ、残りのns個の非-選択モードは切り捨て二項二進化でシグナリングされる。一実施例によると、nは16でnsは45である。
図8(d)は、非-選択モードを切り捨て二項二進化でシグナリングする一実施例を示す図である。前記実施例によると、非-選択モードの個数nsは45である。切り捨て二項二進化が使用されれば、2^5<45<2^6であるため、初期2^6-45=19個のインデックスは5個のビット(またはビン)を使用してシグナリングされ、残りの26個のインデックスは6個のビット(またはビン)を使用してシグナリングされる。よって、非-選択モードにも予め設定されたコンテキスト条件を適用し、該当ブロックで選択される可能性が相対的に高いモードを5個のビット(またはビン)でシグナリングされる低い値のインデックスにマッチングする。予め設定されたコンテキスト条件の具体的な実施例は、以下の図面を参照して説明する。
図9はイントラ予測モードに適用されるコンテキスト条件の一実施例であって、角度モードに予め設定されたオフセットを適用する方法を示す図である。本発明の一実施例によると、特定優先順位を有する角度モードに予め設定されたオフセットを足すか引いた角度モードに新たな優先順位が与えられる。例えば、第1優先順位を有する角度モードに予め設定されたオフセットを足すか引いた角度モードに第1優先順位または第2優先順位が与えられる。一実施例によると、全体のイントラ予測モードのうち第1優先順位を有するモードは残りのモードより優先的に選択される。また、前記残りのモードは第2優先順位を有するモードと第3優先順位を有するモードに区分されるが、第2優先順位を有するモードは第3優先順位を有するモードより優先的に選択される。ここで、優先的に選択されるモードは、より少ない数のビットでシグナリングされる低い値のインデックスにマッチングされる。
より詳しくイントラ予測モードインデックスa、b、及びcが第1優先順位を有するとすると、イントラ予測モードインデックスa-offset、a+offset、b-offset、b+offset、c-offset、及びc+offset(ここで、offsetは0ではない整数)のモードに第1優先順位または第2優先順位が与えられる。例えば、MPMリストの構成過程で周辺ブロックから選択されたモードに第1優先順位が与えられ、周辺ブロックから選択されたモードのうち角度モードに-1または+1を足した角度モードに第1優先順位または第2優先順位が与えられる。最優先順位のモードに予め設定されたオフセットを足すか引いたモードに同じまたは次の優先順位を与えることで、最優先順位と類似性を有するモードに高い優先順位が与えられる。
しかし、図9を参照すると、角度モードが予め設定された角度範囲以内に限定されている際、特定角度モードにオフセットを足すか引いた角度モードは予め設定された範囲を逸脱する可能性がある。例えば、イントラ予測モードセットの角度モードがイントラ予測モード2から66までに限定され、予め設定されたオフセットが1であれば、イントラ予測モード2から前記オフセットを引いたイントラ予測モード1や、イントラ予測モード66に前記オフセットを足したイントラ予測モード67は予め設定された角度範囲を逸脱するようになる。つまり、イントラ予測モードkから誘導されたイントラ予測モードk-offsetまたはk+offsetが予め設定された角度範囲を逸脱する。よって、このような問題点を解決するための方法が必要である。
本発明の一実施例によると、特定角度モードにオフセットを足すか引いた角度モードが設定された角度範囲を逸脱すれば、該当範囲の角度モードセットから循環的に決定された角度モードが選択される。つまり、特定角度モードにオフセットを足すか引いた角度モードが予め設定された角度範囲を逸脱すれば、該当範囲の角度モードセットのうちから前記特定角度モードの反対側に位置する角度モードが選択される。例えば、予め設定された角度範囲の角度モードセットがイントラ予測モードインデックスの昇順でモード{a、b、c、d、e、f}からなれば、モードfにオフセット1を足すとモードaが選択され、モードfにオフセット2を足すとモードbが選択される。同じく、モードaからオフセット1を引くとモードfが選択され、モードaからオフセット2を引くとモードeが選択される。図9を参照すると、垂直対角モードVDIAにオフセットを足すと、水平対角モードHDIAまたはその近くの角度モードが選択される。つまり、VDIA+1はHDIAにマッチングされ、VDIA+2はHDIA+1にマッチングされる。また、HDIA-1はVDIAにマッチングされ、HDIA-2はVDIA-1にマッチングされる。
本発明の他の実施例によると、特定角度モードにオフセットを足すか引いた角度モードが設定された角度範囲を逸脱すれば、前記オフセットを足すか引いた角度モードは無視される。特定角度モードに予め設定されたオフセットを足すか引くと、特定角度モードと類似した角度モードが選択される。しかし、以前の実施例のように循環的に決定された角度モードを選択すると、特定角度モードの反対側に位置する角度モードが選択されて選択された角度モード間の類似性が落ちる可能性がある。よって、オフセットを足すか引いた角度モードが予め設定された角度範囲を逸脱すれば、該当角度は選択されない。例えば、予め選択されたモード{a、b、c}にオフセットを足すか引いたモードa-offset、a+offset、b-offset、b+offset、c-offset、及びc+offsetのうちからモードc+offsetが予め設定された角度範囲を逸脱すれば、モードc+offsetを除いた残りのモードa-offset、a+offset、b-offset、b+offset、及びc-offsetが選択される。
本発明のまた他の実施例によると、特定角度モードに第1オフセットを足すか引いた角度モードが設定された角度範囲を逸脱すれば、前記特定角度モードに第2オフセットを引くか足した角度モードが選択される。または、特定角度モードに第1オフセットを足すか引いた角度モードが設定された角度範囲を逸脱すれば、前記第2オフセットを更に足すか引いた角度モードが選択される。この際、第2オフセットは第1オフセットとは異なる値を有する。例えば、モードa+offset1が予め設定された角度範囲を逸脱すれば、モードa-offset2またはモードa+offset1-offset2が選択される。図9を参照すると、予め選択された垂直対角モードVDIAに第1オフセット1を足した角度モードVDIA+1が予め設定された角度範囲から逸脱している。この際、角度モードVDIAから第2オフセット2を引いた角度モードVDIA-2が選択される。もし第2オフセットを適用して選択された角度モードが予め選択された角度モードがと重複すれば、第2オフセットとは異なる第3オフセットが上述した方法と類似して使用される。
本発明の更に他の実施例によると、特定角度モードに第1オフセットを足すか引いた角度モードが設定された角度範囲を逸脱すれば、前記特定角度モードに第2オフセットを足すか引いた角度モードが選択される。この際、第2オフセットの絶対値は第1オフセットの絶対値より小さい。例えば、モードa+offset1が予め設定された角度範囲を逸脱すれば、モードa+offset2が選択される。より詳しくは、予め選択された角度モードがVDIAとHDIAであれば、VDIA+offset1は予め設定された角度範囲を逸脱する可能性がある。よって、予め選択された角度モードがVDIAとHDIAであれば、VDIA+offset2が選択される。また、図9を参照すると、予め選択された垂直対角モードVDIA-1に第1オフセット2を足した角度モードVDIA-1+2は予め設定された角度範囲から逸脱している。この際、角度モードVDIA-1に第2オフセット1を足した角度モードVDIA-1+1が選択される。もし第2オフセットを適用して選択された角度モードが予め選択された角度モードがと重複すれば、第2オフセットとは異なる第3オフセットが上述した方法と類似して使用される。
図10はイントラ予測モードに適用されるコンテキスト条件の他の実施例であって、予測モードリストに予め選択された角度モードの角度またはインデックスの最小値及び最大値を考慮した予測モードリストの構成方法を示す図である。本発明の実施例において、予測モードリストはMPMリスト及び選択モードリストを含むが、本発明はこれに限らない。
イントラ予測において、現在ブロックのイントラ予測モードは周辺ブロックのイントラ予測モードと類似している。例えば、現在ブロックの角度モードは周辺ブロックの角度モードのうちいずれか一つと同じであるか類似している。よって、現在ブロックのために予め構成された第1予測モードリストがあれば、第1予測モードリストのエレメントを考慮して第2予測モードリストが構成される。一実施例によると、第1予測モードリストに含まれる角度モードの角度またはインデックス(つまり、イントラ予測モードインデックス)の最小値及び/または最大値に基づいて第2予測モードリストが構成される。第2予測モードリストのイントラ予測モードには、第1及び第2予測モードリスト以外のイントラ予測モードより高い優先順位が与えられる。
より詳しくは、第1予測モードリストに含まれる角度モードの角度またはインデックスの最小値及び最大値をそれぞれ「min」及び「max」とすると、第2予測モードリストに含まれる角度モードは「min」以上「max」以下の範囲、または「min」超過「max」未満の範囲以内で選択される。一実施例によると、第1予測モードリストに基づいて決定された前記最小値及び最大値の間で均一に分布された(つまり、一定のインデックス差を有するか一定の角度差を有する)角度モードが第2予測モードリストに含まれる。このように、第2予測モードリストに含まれる角度モードは第1または第2予測モードリストに含まれていない角度モードより高い優先順位を有する。
他の実施例によると、第2予測モードリストに含まれる角度モードは「min-offset1」以上「min+offset2」以下の範囲、または「min-offset1」超過「min+offset2」未満の範囲以内で選択される。ここで、offset1及びoffset2は予め設定されたオフセットであって、負ではない整数である。また、offset1及びoffset2は互いに同じ値を有してもよく、互いに異なる値を有してもよい。一実施例によると、offset1とoffset2は同じ値に設定されるが、図9の実施例のように、オフセットに基づいて設定された範囲が予め設定された角度範囲を逸脱すれば、offset1とoffset2は互いに異なる値に設定される。他の実施例によると、第1予測モードリストに含まれる角度モードの分布に基づいて、offset1及びoffset2が互いに同じ値または互いに異なる値に設定される。例えば、第1予測モードリストに含まれる角度モードが均一に分布していなければ、offset1及びoffset2は互いに異なる値に設定される。第1予測モードリストに基づいて決定された前記「min-offset1」及び「min+offset2」の間で均一に分布された(つまり、一定のインデックス差を有するか一定の角度差を有する)角度モードが第2予測モードリストに含まれる。例えば、第2予測モードリストに選択されるモードの個数がnであれば、m=floor(((max-offset2)-(min-offset1))/(n+1))と設定され、第2予測モードリストにはインデックスまたは角度「min-offset1+m」、「min-offset1+2m」、…、「min-offset1+nm」に対応する角度モードが含まれる。このように、第2予測モードリストに含まれる角度モードは第1または第2予測モードリストに含まれていない角度モードより高い優先順位を有する。
図10を参照すると、第1予測モードリストはMPMリストである。また、予め設定された規則に従って構成されたMPMリストに含まれた角度モードのインデックスの最小値及び最大値をそれぞれ「MPM_min」及び「MPM_max」と称する。この際、上述した実施例のように、現在ブロックと周辺ブロックの類似性を考慮して前記MPMリストに基づいて第2予測モードリストが構成される。例えば、「MPM_min」及び「MPM_max」に基づいて第2予測モードリストが構成される。より詳しくは、「MPM_min-offset」及び「MPM_min+offset」の間で均一に分布された(つまり、一定のインデックス差を有するか一定の角度差を有する)角度モードが第2予測モードリストに含まれる。ここで、offsetは負ではない整数である。
上述した実施例のように、第1予測モードリストに基づいて第2予測モードリストが構成されれば、第1及び第2予測モードリストを利用したイントラ予測が行われる。一実施例によると、第2予測モードリストは選択モードリストに使用される。他の実施例によると、第2予測モードリストはk-1個またはk個のビットを使用してシグナリングされる非-MPMモードのうちからk-1個のビットからなるインデックスでシグナリングされるイントラ予測モードを指示する。また、第1予測モードリスト及び第2予測モードリストは、同じ予測モードリストの第1セット及び第2セットを指す。つまり、上述した図10の実施例において、第1予測モードリスト及び第2予測モードリストは、予測モードリストの第1セット及び予測モードリストの第2セットにそれぞれ置換される。ここで、予測モードリストはMPMリストまたは選択モードリストである。
図11は、イントラ予測モードに適用されるコンテキスト条件の他の実施例であって、基本角度モードを考慮した予測モードリストの構成方法を示す図である。上述したように、イントラ予測モードセットを構成する複数の角度モードは、基本角度モードと拡張角度モードを含む。
本発明の一実施例によると、予測モードリストは基本角度モードを優先的に考慮して構成される。予測モードリストに含まれる角度モードは、リストに含まれていない角度モードより高い優先順位を有する。一実施例によると、基本角度モードを優先的に考慮して予測モードリストを構成する方法は、周辺ブロックが基本角度モードを使用する条件下で適用される。また、基本角度モードを優先的に考慮して予測モードリストを構成する方法は、基本角度モードを使用する周辺ブロックの個数が臨界値以上の条件下で適用される。
エンコーダの予測モード決定ステップにおいて、選択可能な(定義した)全ての角度モードに対する率-歪曲コスト(RD-cost)の計算を行うことは複雑度に負担がある恐れがある。よって、イントラ予測モード決定ステップで複雑度を減らすために、エンコーダは予め設定された角度モードを、例えば、基本角度モードに対してのみ率-歪曲コストの計算を先に行ってイントラ予測モードを選択する。次に、エンコーダは選択された基本角度モードの周辺角度モードに対する率-歪曲コストの計算を更に行ってイントラ予測モードを選択する。
現在ブロックと周辺ブロックとの間の類似性及び前記説明したエンコーダの具現実施例を考慮すると、現在ブロックが基本角度モードを使用する可能性が高い。よって、優先順位を有する予測モードリストを基本角度モードに基づいて構成する。まず、構成しようとする予測モードリストのエレメントの個数が基本角度モードの全体個数より少なければ、基本角度モードのうち一部を選択して予測モードリストを構成する。例えば、基本角度モードの個数が33で構成しようとする予測モードリストのエレメントの個数が16であれば、全体の基本角度モードのうちいずれか一つの基本角度モードから始まって一つ置きに基本角度モードが選択される。つまり、図13の実施例において、角度モード4、8、12、16、…、60、及び64が選択される。一実施例によると、このように選択されたイントラ予測モードからなる予測モードリストは選択モードリストに使用される。本発明の他の実施例として、構成しようとする予測モードリストのエレメントの個数は基本角度モードの個数に基づいて定義される。例えば、基本角度モードの個数が33であれば、構成しようとする予測モードリストのエレメントの個数は33または32(=33-1)などで定義される。
上述したように、拡張角度モードは基本角度モードに基づいてシグナリングされる。基本角度モードのためのイントラ予測モードインデックスを利用して、拡張角度モードがシグナリングされる。例えば、基本角度モードに基づいた予測モードリストが構成される際、前記リストを参照してオフセットまたはオン/オフフラッグを介して拡張角度がシグナリングされる。より詳しくは、基本角度モード{a、b、c、d}に基づいて予測モードリストが構成されれば、それぞれの角度モードに対応するオフセット{offset1、offset2、offset3、offset4}がシグナリングされる。シグナリングされたオフセットに基づいて、角度モード{a+offset1、b+offset2、c+offset3、d+offset4}が指示される。他の実施例によると、基本角度モードに対応するオフセットの使用可否を指示するフラッグが別途に伝送される。例えば、基本角度モードaに対応するフラッグが伝送されるが、前記フラッグの値が1であれば角度モードa+offset1が指示され、前記フラッグの値が0であれば角度モードaが指示される。
図12は、現在ブロックのイントラ予測のために周辺ブロックを参照する一実施例を示す図である。図12において、現在ブロックの左側または上側境界に隣接し周辺ブロックが存在すると仮定する。以下、現在ブロックの周辺ブロックを参照して、現在ブロックのための予測モードリストを構成する方法が説明される。予測モードリストはMPMリスト、選択モード、及び非-選択モードリスト自体、またはその一部のセットを含むが、本発明はこれに限らない。
1)MPMリストの構成方法(第1方法)。本発明の実施例によると、現在ブロックに対するMPMリストは以下のような方法で構成される。現在ブロックの左側または上側境界に隣接した複数の周辺ブロックが存在すれば、該当ブロックで使用されたイントラ予測モードの情報が総合的に考慮される。この際、現在ブロックの左側または上側境界に隣接した周辺ブロックは、現在ブロックの高さ「Cur_block_height」の高さを有する左側面、または現在ブロックの幅「Cur_block_width」の長さを有する上側面に隣接しているブロックを指す。
例えば、図12でのように、現在ブロックの左側境界にブロックL0及びL1が隣接しており、上側境界にブロックA0、A1、及びA2が隣接していれば、該当ブロックで使用されたイントラ予測モードを参照してMPMリストを構成する。この際、現在ブロックに隣接した周辺ブロックを参照する順序は以下のような実施例で構成される。
第一実施例によると、MPMリストは{ブロックL0のLモード、ブロックL1のモード、…、ブロックA0のモード、ブロックA1のモード、…、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、ブロックALのモード}の順に構成される。つまり、現在ブロックの左側境界に隣接したブロックと上側境界に隣接したブロックをそれぞれ順序通りに参照してMPMリストを構成する。第二実施例によると、MPMリストは{ブロックL0のLモード、ブロックA0のモード、ブロックL1のモード、ブロックA1のモード、ブロックL_xのモード、ブロックA_xのモード、ブロックL_x+1のモード、ブロックA_x+1のモード、…、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、ブロックALのモード}の順に構成される。つまり、現在ブロックの左側境界に隣接した代表ブロックL0と現在ブロックの上側境界に隣接した代表ブロックA0を先に参照し、現在ブロックの左側境界に隣接した残りのブロックと現在ブロックの上側境界に隣接した残りのブロックを順序通りに交互に参照してMPMリストを構成する。第三実施例によると、MPMリストは{ブロックL0のモード、ブロックA0のモード、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、ブロックALのモード、ブロックL1のモード、…、ブロックA1のモード、…}の順に構成される。つまり、現在ブロックの左側境界に隣接した代表ブロックL0と現在ブロックの上側境界に隣接した代表ブロックA0を先に参照し、平面モード及びDCモードを追加した後、現在ブロックの左側境界に隣接した残りのブロックと現在ブロックの上側境界に隣接した残りのブロックを順序通りに交互に参照してMPMリストを構成する。他の実施例によると、現在ブロックの左側または上側境界に隣接したブロックのイントラ予測モードに基づいた平均値または代表値を抽出し、それを利用してMPMリストが構成される。一方、上述した実施例において、現在ブロックの左側/上側境界に隣接した代表ブロックはL0及びA0ではない位置のブロックと設定される。例えば、現在ブロックの左側面の中間地点と上側面の中間地点にそれぞれ最も近いブロックが代表ブロックとして設定されてもよい。
一方、図12では現在ブロックの左側または上側境界に隣接した周辺ブロックの個数がそれぞれ2個、3個である例を示したが、上述した実施例は周辺ブロックの個数が増えても拡張して適用される。また、前記実施例には現在ブロックの左側と上側の周辺ブロックに基づいて述べられたが、現在ブロックの下左側(BL)、上右側(AR)、及び上左側(AL)に位置する周辺ブロックにも類似して適用される。それに関する具体的な実施例は、図13を参照して説明する。もし上述した方法でMPMリストを埋めることができなければ、MPMリストに予め選択された角度モードに予め設定されたオフセットを適用してMPMリストを追加する。つまり、MPMリストに予め選択された角度モードに予め設定されたオフセットを足すか引いた角度モードがMPMリストに追加される。この際、予め設定されたオフセットは0ではない整数である。
2)選択モードリストの構成方法(第2方法)。選択モードリストは、現在ブロックの周辺ブロックで使用されたイントラ予測モードに基づいて構成される。また、前記第1方法で述べた周辺ブロックを参照する優先順位の多様な実施例が選択モードリストを構成する際にも適用される。もし上述した方法で選択モードリストを埋めることができなければ、選択モードリストに予め選択された角度モードに予め設定されたオフセットを適用して選択モードリストを追加する。つまり、選択モードリストに予め選択された角度モードに予め設定されたオフセットを足すか引いた角度モードが選択モードリストに追加される。この際、予め設定されたオフセットは0ではない整数である。
本発明の他の実施例によると、前記第1方法を適用する際、周辺ブロックのイントラ予測モードのうちMPMリストに含まれていない下位モードが優先的に選択モードリストに含まれる。もしこのような方法で選択モードリストを埋めることができなければ、選択モードリストに予め選択された角度モードに予め設定されたオフセットを適用して選択モードリストを追加する。また他の実施例によると、周辺ブロックの角度モードに予め設定されたオフセット(つまり、offset1)を適用して選択モードリストが構成される。例えば、前記第1方法のうちいずれか一つの実施例から平面モード及びDCモードを除いた残りの角度モードに基づいて、以下のような選択モードリストが構成される。{ブロックL0のモード+/-offset1、ブロックL1のモード+/-offset1、…、ブロックA0のモード+/-offset1、ブロックA1のモード+/-offset1、…、ブロックBLのモード+/-offset1、ブロックARのモード+/-offset1、ブロックALのモード+/-offset1}。この際、予め設定されたオフセットは多様な方法で決定される。例えば、オフセットは正の整数であって、その値が1から始まって1ずつ増加するように設定される。また、オフセットは正の整数であって、その値が1から始まって2の倍数に増加するように設定されてもよい。また、オフセットは初期値が1より大きい整数から始まって増加してもよく、増加されるスケールは2の倍数または3の倍数などに拡張されてもよい。また、オフセットは予め設定された初期値(例えば、10)から始まって次第に小さくなるように設定されてもよい。
3)非-選択モードリストの構成方法(第3方法)。非-選択モードリストを構成する際にも、上述した第1方法と類似して現在ブロックの周辺ブロックで使用されたイントラ予測モードが使用される。例えば、非-選択モードリストが45個のイントラ予測モードからなり、切り捨て二項二進化でシグナリングされれば、上位19個のモードは20番目以降のモードより一つ少ないビットでシグナリングされる。つまり、非-選択モードリストのイントラ予測モードは、l-1個のビットからなるインデックスでシグナリングされる第1セットと、l個のビットからなるインデックスからなるインデックでグナリングされる第2セットに区分される。この際、上述した第1方法による周辺ブロックを参照する優先順位に基づいて選択された角度モードは前記第1セットに含まれる。もしこのような方法で第1セットを埋めることができなければ、第1セットに予め選択された角度モードに予め設定されたオフセットを適用して獲得された角度モードが第1セットに追加される。
本発明の他の実施例によると、周辺ブロックのイントラ予測モードのうちMPMリスト及び/または選択モードリストに含まれていない下位モードが優先的に第1セットに含まれる。もしこのような方法で第1セットを埋めることができなければ、第1セットに予め選択された角度モードに予め設定されたオフセットを適用して獲得された角度モードが第1セットに追加される。また他の実施例によると、前記第2方法と類似して周辺ブロックの角度モードに基づいて以下のように第1セットが構成される。{ブロックL0のモード+/-offset2、ブロックL1のモード+/-offset2、…、ブロックA0のモード+/-offset2、ブロックA1のモード+/-offset2、…、ブロックBLのモード+/-offset2、ブロックARのモード+/-offset2、ブロックALのモード+/-offset2}。この際、第1セットを構成するために使用される予め設定されたオフセット(つまり、offset2)は、MPMリストの構成に使用されたオフセット及び選択モードリストの構成に使用されたオフセット(つまり、offset1)とは異なる値に設定される。
図13は、現在ブロックのイントラ予測のために周辺ブロックを参照する他の実施例を示す図である。複数の周辺ブロックを参照して現在ブロックのイントラ予測を行う図12の実施例は、現在ブロックの左側(L)及び上側(A)だけでなく、現在ブロックの下左側(BL)、上右側(AR)、及び上左側(AL)に位置する周辺ブロックにも拡張して適用される。
現在ブロックの左側または上側に位置する周辺ブロックの定義は、図12の実施例と同じである。更に、現在ブロックの下左側(BL)、上右側(AR)、及び上左側(AL)に位置する周辺ブロックが定義される。まず、現在ブロックの下左側(BL)に位置する周辺ブロックは、現在ブロックの左側面から長さ「BL_block_height」だけ下に延長された面に隣接したブロックを指す。また、現在ブロックの上右側(AR)に位置する周辺ブロックは、現在ブロックの上側面から長さ「AR_block_width」だけ右側に延長された面に隣接したブロックを指す。同じく、現在ブロックの上左側(AL)に位置する周辺ブロックは、現在ブロックの上側面から長さ「AL_block_width」だけ下側に延長された面に隣接したブロックを指す。一実施例によると、「BL_block_height」の長さは「Cur_block_height」の長さと同じく設定されるか、「Cur_block_height」の長さの整数倍に設定される。また、「AR_block_width」及び「AL_block_height」の長さは「Cur_block_width」の長さと同じく設定されるか、「Cur_block_width」の長さの整数倍に設定される。この際、該当位置のブロックのうち利用可能な全てのブロックが現在ブロックのイントラ予測のために参照される。また、参照可能なブロックの大きさを予め定義し、該当大きさより小さいか大きい大きさのブロックのみ現在ブロックのイントラ予測のために参照される。また、現在ブロック正方形ではないブロックであれば、現在ブロックの大きさに応じて参照される周辺ブロックの形状が異なり得る。
例えば、図13のように、現在ブロックの下左側(BL)に位置する周辺ブロックがBL0、BL1、及びBL2で、現在ブロックの上右側(AR)に位置する周辺ブロックがAR0及びAR1で、現在ブロックの上左側(AL)に位置する周辺ブロックがAL0、AL1、及びAL2であれば、以下のような順に予測モードリストが構成される。{ブロックL0のモード、ブロックL1のモード、…、ブロックA0のモード、ブロックA1のモード、…、平面モード、DCモード、ブロックBL0のモード、ブロックBL1のモード、ブロックBL2のモード、…、ブロックAL0のモード、ブロックAL1のモード、…、ブロックAR0のモード、ブロックAR1のモード、…}。本発明の実施例によると、このような予測モードリストの構成順序に基づいてMPMリストが構成される。また、前記予測モードリストにおいて、角度モードのみを利用して選択モードリストが構成されてもよく、選択モードリストを埋められなければ、選択モードリストに予め選択された角度モードに予め設定されたオフセットを適用して選択モードを追加する。また、前記予測モードリストにおいて、角度モードのみを利用して非-選択モードリストの第1セットが構成されてもよく、同じく第1セットを埋められなければ、第1セットに予め選択された角度モードに予め設定されたオフセットを適用して獲得された角度モードが第1セットに追加される。図12を参照して説明された周辺ブロックを考慮した予測モードリスト構成の実施例は、図13による拡張された周辺ブロックにも同じく適用される。
図14は、現在ブロックのイントラ予測のために周辺ブロックのMPMリストを参照する一実施例を示す図である。現在ブロックに対するMPMリストを構成する際、周辺ブロックのイントラ予測モードだけでなく、該当ブロックのMPMリストが更に参照される。より詳しくは、現在ブロックのイントラ予測のために周辺ブロックのイントラ予測モード、周辺ブロックのMPMリストに含まれたイントラ予測モード、周辺ブロックの周辺ブロックのイントラ予測モード、周辺ブロックの周辺ブロックのMPMリストに含まれたイントラ予測モードなどが参照される。つまり、現在ブロックの第1ステップ(1st tier)の周辺ブロックに限らず、第2ステップ(2nd tier)の周辺ブロック、第3ステップ(3rd tier)の周辺ブロックなど、より広い範囲の周辺ブロックのイントラ予測情報を利用して現在ブロックのイントラ予測モードがシグナリングされる。ここで、ブロックのイントラ予測情報は、前記ブロックのイントラ予測モード及びMPMリスト情報のうち少なくとも一つを含む。
図14を参照すると、現在ブロックの左側周辺ブロック(つまり、Neighbor block1)がイントラ予測モードでコーディングされれば、該当周辺ブロックのMPMリストに含まれたイントラ予測モードが現在ブロックのイントラ予測モードシグナリングに優先的に考慮される。つまり、現在ブロックのイントラ予測モードをシグナリングするために以下のような順序のモードが参照される。{ブロックLのモード、ブロックAのモード、平面モード、DCモード、ブロックBLのモード、ブロックARのモード、NB1_MPM0モード、NB1_MPM1モード、NB1_MPM2モード、…、NB2_MPM0モード、NB2_MPM1モード、NB2_MPM2モード、…}。ここで、NBx_MPMyモードは現在ブロックのx番目の周辺ブロックのイントラ予測情報を指す。つまり、NBx_MPMyモードは、前記x番目の周辺ブロックのイントラ予測モード情報、または該当ブロックのMPMリストのy番目のイントラ予測モード情報を指す。この際、y番目のモードが平面モードやDCモードのような非-角度モードであれば、現在ブロックで考慮されなくてもよい。
本発明の実施例によると、周辺ブロックの周辺ブロックに対するイントラ予測モード情報を多様に変形及び組み合わせて、現在ブロックのためのイントラ予測に使用する。例えば、現在ブロックの形状(つまり、正方形ブロック、長方形ブロック)及び周辺ブロックの形状に基づいて実施例が変形及び拡張されてもよく、その順序対も多様な組み合わせに拡張して適用されてもよい。周辺ブロックのMPMリストに含まれたイントラ予測モードを現在ブロックのイントラ予測モードシグナリングに活用する実施例は、上述した実施例と組み合わせられる。つまり、現在ブロックのMPMリスト、非-MPMモードのうちk-1個のビットからなるインデックスでシグナリングされる上位モードのセット、選択モードリスト、及び非-選択モードのうちl-1個のビットからなるインデックスでシグナリングされる上位モードのセットのうち少なくとも一つを構成する際、周辺ブロックのMPMリストに含まれたモードが参照される。また、それぞれのケースで該当リストまたはセットを埋めることができなければ、該当リストまたはセットに予め選択された角度モードに予め設定されたオフセットを適用して獲得された角度モードが該当リストまたはセットに追加される。
図15は、現在ブロックのイントラ予測のために現在ブロック及び周辺ブロックの形状及び/または大きさを考慮する一実施例を示す図である。現在ブロックのMPMを構成する際、周辺ブロックのうち現在ブロックと形状及び/または大きさが類似したブロックのイントラ予測情報が優先的に参照される。ここで、イントラ予測情報はイントラ予測モード及びMPMリスト情報のうち少なくとも一つを含む。現在ブロックと周辺ブロックの形状が類似しているのか否かは、両ブロックが正方形ブロックであるのか否か、両ブロックが垂直ブロックであるのか否か、両ブロックが水平ブロックであるのか否かなどに基づいて決定される。両ブロックが共に垂直ブロックであるか共に水平ブロックであれば、各ブロックの幅と高さとの間の割合が更に考慮される。また、本発明の実施例において、ブロックの形状は上述したケースに限らず、非-均等長方形ブロック、斜線形ブロックなどに拡張されてもよい。
より詳しくは、現在ブロックが垂直ブロックであれば、周辺ブロックのうち垂直ブロック(つまり、NB_l、NB_a)に使用されたイントラ予測情報が現在ブロックのMPMリストを構成する際に優先的に参照される。また、現在ブロックの大きさが16×32であれば、周辺ブロックのうち同じ大きさのブロック(つまり、NB_l)に使用されたイントラ予測情報が現在ブロックのMPMリストを構成する際に優先的に参照される。現在ブロック及び周辺ブロックの形状及び/または大きさを考慮して現在ブロックのイントラ予測モードをシグナリングする実施例は、上述した実施例と組み合わせられる。つまり、現在ブロックのMPMリスト、非-MPMモードのうちk-1個のビットからなるインデックスでシグナリングされる上位モードのセット、選択モードリスト、及び非-選択モードのうちl-1個のビットからなるインデックスでシグナリングされる上位モードのセットのうち少なくとも一つを構成する際、周辺ブロックうち現在ブロックと形状及び/または大きさが類似したブロックのイントラ予測情報が優先的に参照される。また、それぞれのケースで該当リストまたはセットを埋めることができなければ、該当リストまたはセットに予め選択された角度モードに予め設定されたオフセットを適用して獲得された角度モードが該当リストまたはセットに追加される。
図16乃至図18は、周辺ブロックの予測情報を参照して現在ブロックの予測情報を獲得する拡張された実施例を示す図である。本発明の実施例によると、現在ブロックの予測情報をシグナリングするのに参照されるブロックは、現在ブロックに隣接した周辺ブロックだけでなく、現在ブロックに隣接していない周辺ブロックに拡張される。それぞれの図面を参照して、周辺ブロックのイントラ予測情報を参照して現在ブロックのイントラ予測情報を獲得する実施例が説明される。一実施例によると、周辺ブロックのイントラ予測情報を参照しながら現在ブロックのMPMリストが構成される。但し、本発明はこれに限らず、それぞれの実施例は周辺ブロックのインター予測情報を参照して現在ブロックのインター予測情報を獲得する際にも類似して適用される。ここで、インター予測情報はモーションベクトル、参照ピクチャインデックスなどを含む。
まず、図16は現在ブロックの予測情報を獲得するために参照される拡張された周辺ブロックの一実施例を示す図である。上述したように、ピクチャの地域的類似性を反映して、周辺ブロックのイントラ予測モードを利用して現在ブロックのMPMリストを構成する。この際、現在ブロックの境界に隣接した周辺ブロックL(1)、A(1)、BL(1)、AR(1)、及びAL(1)を第1ステップ(1st tier)の周辺ブロックと定義し、それぞれの第1ステップの周辺ブロックの境界に隣接した周辺ブロックL(2)、A(2)、BL(2)、AR(2)、及びAL(2)を第2ステップ(2nd tier)の周辺ブロックと定義する。例えば、現在ブロックの左側境界に隣接した最下端ブロックL(1)は第1ステップの周辺ブロックであり、ブロックL(1)の左側または上側境界に隣接したブロックL(2)、A(2)、BL(2)、AR(2)、及びAL(2)は第2ステップの周辺ブロックである。この際、第1ステップの周辺ブロックに隣接したブロックのうち現在ブロックと重畳するブロックは、第2ステップの周辺ブロックから除外される。つまり、ブロックL(1)の上右側ブロックAR(1)は現在ブロックと重畳するため、現在ブロックのMPMリストを構成する際に参照されない。同じく、ブロックA(1)に隣接したブロックBL(2)、ブロックBL(1)に隣接したブロックAR(2)、ブロックAR(1)に隣接したブロックBL(2)も現在ブロックと重畳するため、MPMリストを構成する際に参照されない。
図16では現在ブロックの左側または上側に位置する5個の第1ステップの周辺ブロックに対して最大25個の第2ステップの周辺ブロックに拡張される実施例が示されているが、本発明はこれに限らない。つまり、本発明の実施例は現在ブロックの左側または上側に位置するN個の第1ステップの周辺ブロックに対し、最大N^2個の第2ステップの周辺ブロックに拡張される。この場合、現在ブロックから予め設定された範囲以内の最大N^2+N個の周辺ブロックのイントラ予測モードを参照して、現在ブロックのMPMリストが構成される。よって、N個の第1ステップの周辺ブロックのイントラ予測モードのみを参照してMPMリストを構成する際より、ピクチャの地域的な特性を更に反映することができる。また、現在ブロックの最適なイントラ予測モードがMPMリスト内に存在する確率を上げるため、イントラ予測モードコーディングに必要なビット量の減少が期待される。
現在ブロックの第2ステップの周辺ブロックの正確な位置を決定するためには、第1ステップの周辺ブロックの大きさと該当ブロックの左上側、右上側、左下側、及び右下側の頂点などのうち少なくとも一つの位置情報が必要である。エンコーダとデコーダに前記情報が貯蔵されていなければ、第1ステップの周辺ブロックの基準座標にオフセットを足してそれぞれの第2ステップの周辺ブロックの座標を求める。例えば、ブロックAL(1)の右下側の基準座標が(x0、y0)であれば、ブロックL(2)、A(2)、BL(2)、AR(2)、及びAL(2)の基準位置は、それぞれ(x0-offset-1、y0-1)、(x0-1、y0-offset-1)、(x0-offset-1、y0+1)、(x0+1、y0-offset-1)、及び(x0-offset-1、y0-offset-1)に決定する。ここで、offsetは0より大きい整数であり、x軸方向のoffsetとy軸方向のoffsetは互いに同じ値または互いに異なる値に設定される。他の実施例によると、offsetは現在ブロックの大きさに基づいて決定される。つまり、offsetは現在ブロックの大きさに比例するように設定される。例えば、現在ブロックの幅と高さがそれぞれ{64、32}であれば、x軸方向のoffset及びy軸方向のoffsetは、それぞれ前記幅と高さを整数で割った{64、32}、{32、16}、{16、8}、{8、4}などに設定される。エンコーダとデコーダは予め定義された規則に従って同じoffsetを使用するため、エンコーダとデコーダがいずれも同じ位置の第2ステップの周辺ブロックのインター予測モードを参照する。
本発明の他の実施例によると、現在ブロックの第1ステップの周辺ブロックL(1)、A(1)、BL(1)、AR(1)、またはAL(1)のMPMリストが構成されれば、エンコーダとデコーダは第2ステップの周辺ブロックを探索する過程なしに、第1ステップの周辺ブロックのMPMリストに含まれたイントラ予測モードを参照して現在ブロックのMPMリストを構成する。第1ステップの周辺ブロックのMPMリストが構成される際、現在ブロックの第2ステップの周辺ブロックの予測モードを参照するため、第1ステップの周辺ブロックのMPMリストには第2ステップの周辺ブロックの予測モードが含まれる。よって、第2ステップの周辺ブロックを探索し並びに位置を計算する過程なしに、第1ステップの周辺ブロックのMPMリスト参照することで第2ステップの周辺ブロックの予測モードを参照することができる。一方、第1ステップの周辺ブロックのMPMリスト情報を全て貯蔵することはメモリに負担をかける恐れがある。よって、本発明また他の実施例によると、エンコーダとデコーダは第1ステップの周辺ブロックのMPMリストに含まれた上位M個のイントラ予測モードのみを貯蔵し参照して、現在ブロックのMPMリストを構成する。例えば、MPMリストの大きさが6で上位3個のMPMインデックス(つまり、index=0、1、2)のイントラ予測モードが参照されれば、現在ブロックのMPMリストは第1ステップの周辺ブロックL(1)、A(1)、BL(1)、AR(1)、及びAL(1)のイントラ予測モードと、各ブロックのMPMリストの上位3個のMPMインデックスが指示するイントラ予測モードを参照して構成される。一実施例によると、平面モード及びDCモードは上述した上位M個のイントラ予測モードから除外される。
図17は、現在ブロックの予測情報を獲得するために参照される拡張された周辺ブロックの他の実施例を示す図である。本発明の他の実施例によると、現在ブロックの予測情報を獲得するために、現在ブロックを基準とする予め設定された探索範囲が使用される。
図17を参照すると、第1ステップの周辺ブロックの左上側、左下側、右上側の頂点の座標を基準に第2ステップの周辺ブロックL(2)、A(2)、BL(2)、AR(2)、及びAL(2)を探すために、長方形状の探索範囲が定義される。この際、探索範囲内でx軸及び/またはy軸方向に決められたステップだけ移動しながら、第2ステップの周辺ブロックが探索される。例えば、現在ブロックの第1ステップの周辺ブロックであるAL(1)に対する第2ステップの周辺ブロックL(2)を探索するために、ブロックAL(1)の左下側の座標基準点からx軸方向に決められたステップの大きさだけ移動しながら、ブロックL(2)が探索される。この際、決められた探索範囲内でブロックAL(1)の予測情報とは異なる予測情報を有するブロックが発見されるまで探索が行われる。また、現在ブロックの第1ステップの周辺ブロックであるAL(1)に対する第2ステップの周辺ブロックA(2)を探索するために、ブロックAL(1)の右上側の座標基準点からy軸方向に決められたステップの大きさだけ移動しながら、ブロックA(2)が探索される。同じく、第2ステップの周辺ブロックAL(2)、AR(2)、及びBL(2)ブロックを探索するために、それぞれブロックAL(1)の左上側、右上側、及び左下側の座標基準点からy軸及び/またはy軸方向に決められたステップの大きさだけ移動しながら、第2ステップの周辺ブロックが探索される。
本発明の実施例によると、探索範囲は16×16、32×32、64×64などの固定された大きさに設定されてもよく、現在ブロックの大きさに応じて設定されてもよい。つまり、探索範囲は現在ブロックの幅及び/または高さに比例するように設定される。例えば、現在ブロックの大きさが128×128であれば、探索範囲は前記ブロックの大きさを整数で割った128×128、64×64、32×32、16×16、8×8などに設定される。探索範囲内で探索のためのステップの大きさは、ブロックの最小の大きさより大きいか同じであり、探索範囲より小さい値に設定される。例えば、64×64の探索範囲でブロックの最小の大きさが4×4であれば、前記ステップの大きさは4、6、16、または32に設定される。本発明の実施例によると、探索範囲内で予測情報の探索は、予め設定された予測モードリストが全部埋められるまで行われる。つまり、探索範囲内で第1ステップの大きさで探索された予想情報が予測モードリストに含まれ、予測モードリスト埋められなければ、前記探索範囲内で第2ステップの大きさで探索された予測情報が予測モードリストに追加される。エンコーダとデコーダは、予測モードリストが全部埋められるまで探索のためのステップの大きさを大きくしながら探索を行う。一方、それぞれの探索範囲とステップの大きさは自然数であり、エンコーダとデコーダで予め定義された同じ値で使用されるため、エンコーダとデコーダはいずれも同じ第2ステップの周辺ブロックの予測モードを参照することができる。
図18は、現在ブロックの予測情報を獲得するために参照される拡張された周辺ブロックのまた他の実施例を示す図である。エンコーダとデコーダが現在ブロックの周辺ブロックの構造、つまり、ブロックの大きさの左上側の座標を知っていれば、現在ブロックに対する第2ステップの周辺ブロックの位置を決定する。図18に示したサブブロックにおいて、左上側の数字は符号化または復号化の順序を明示したものであり、現在ブロックは15番目に符号かまたは復号化処理されることを意味する。
現在ブロック(つまり、15番目のブロック)の第2ステップの周辺ブロックの位置を決定するために、第1ステップの周辺ブロックそれぞれの左上側、右上側、左下側、右下側の4つの基準点のうち少なくとも一つの座標と、該当ブロックの幅及び高さ情報が活用される。例えば、現在ブロックの第1ステップの周辺ブロックAL(1)に対する第2ステップの周辺ブロックのL(2)、A(2)、BL(2)、AR(2)、及びAL(2)の基準位置は、それぞれ(x0-1、y0+h-1)、(x0+w-1、y0-1)、(x0-1、y0+h+1)、(x0+w+1、y0-1)、及び(x0-1、y0-1)に計算される。この際、(x0、y0)は現在ブロックの第1ステップの周辺ブロックである5番目のブロック左上側の座標であり、wとhはそれぞれブロックの幅と高さである。残りの第1ステップの周辺ブロックL(1)、A(1)、BL(1)、及びAR(1)に対してもそれぞれの第2ステップの周辺ブロックの位置を同じ方式で計算し、第2ステップの周辺ブロックのイントラ予測モードを参照して現在ブロックのMPMリストを構成する。
本発明の更なる実施例によると、現在ブロックの予測情報を獲得する際、周辺ブロックにおける予測モードの発生頻度数が考慮される。つまり、周辺ブロックにおける発生頻度数が高い予測モードが、周辺ブロックにおける発生頻度数が低い予測モードに比べ高い優先順位で現在ブロックの予測のために参照される。一実施例によると、第1ステップの周辺ブロックの予測モードと第2ステップの周辺ブロックの予測モードに対するそれぞれの発生頻度数を考慮して、現在ブロックのMPMリストに含まれている予測モード間の優先順位が決定される。それに関する具体的な実施例は、図19を参照して説明する。
図19は、周辺ブロックのイントラ予測モードの発生頻度数に基づいてイントラ予測モードの優先順位を設定する一実施例を示す図である。まず、現在ブロックの第1ステップの周辺ブロックであるL(1)、A(1)、BL(1)、AR(1)、及びAL(1)と、第2ステップの周辺ブロックであるL(2)、A(2)、BL(2)、AR(2)、及びAL(2)の予測モードに対する発生頻度数が算出される。第1ステップの周辺ブロックの予測モードの発生頻度数と第2ステップの周辺ブロックの予測モードの発生頻度数は、互いに異なるリスト(つまり、第1リスト及び第2リスト)に貯蔵され、該当ステップの周辺ブロックに対する予測モードが確認されたら1ずつ増加する。例えば、ブロックL(1)のイントラ予測モードがモード50であれば、第2リストの50番モードの発生頻度数が1ずつ増加し、第2リストの50番モードの発生頻度数は増加しない。第1ステップの周辺ブロックと第2ステップの周辺ブロックの予測モードの発生頻度数の算出が完了されれば、前記発生頻度数の加重値の合計を介して各予測モードに対する最終発生頻度数が算出される。より詳しくは、特定モードiの最終発生頻度数FMiは、下記数式1のように算出される。
ここで、FMi
(1)は第1ステップの周辺ブロックにおけるモードiの発生頻度数、FMi
(2)は第2ステップの周辺ブロックにおけるモードiの発生頻度数、W1及びW2は加重値。
例えば、図19を参照すると、イントラ予測モード50に対する第1ステップの周辺ブロック及び第2ステップの周辺ブロックにおける発生頻度数がそれぞれ2及び3であれば、イントラ予測モード50の最終発生頻度数はw1*3+w2*3に算出される。この際、加重値W1及びW2によってスケールが増加されたことを補償するために、ビットソフト演算が更に適用される。また、加重値W1及びW2は実数かけ算演算を避けるために0より大きい整数に設定されて加重値合計のスケジュールを増加させるが、前記スケールはビットシフト演算によって補正される。
本発明の実施例によると、加重値W1及びW2は多様な実施例に基づいて決定される。一実施例によると、第1ステップの周辺ブロックが第2ステップの周辺ブロックに比べ現在ブロックとより近いため、W1がW2より大きい値に設定される。例えば、W1及びW2はそれぞれ5と3に設定されてもよい。他の実施例によると、加重値W1及びW2は対応する予測モードに応じて可変的に設定される。つまり、W1及びW2は同じリストの全ての予測モードに対して同じく設定されるのではなく、予測モードに応じて可変的に設定されて、特定予測モードの発生がより重要に考慮される。例えば、発生確率が高い{平面モード、DCモード、VERモード、HORモード、HDIAモード、DIAモード、VDIAモード}などにより大きい加重値が与えられる。また、拡張角度モードに比べ基本角度モードにより大きい加重値が与えられる。他の実施例によると、加重値W1及びW2は現在ブロックの形状に応じて可変的に設定されて、特定角度モードの優先順位を更に上げる。例えば、現在ブロックが垂直ブロックであれば、VERモード及びVERモード近くの角度モードに対してより大きい加重値が設定され、現在ブロックが水平ブロックであれば、HORモード及びHORモード近くの角度モードに対してより大きい加重値が設定される。また他の実施例によると、加重値W1及びW2は対応する周辺ブロック位置に応じて可変的に設定される。例えば、周辺ブロック間の優先順位が{ブロックL、ブロックA、ブロックBL、ブロックAR、ブロックAL}の順に設定されれば、この順に応じて高い加重値が与えられる。例えば、ブロックL(2)とブロックAL(2)の予測モードが34番であれば、ブロックL(2)により大きい加重値がかけられて発生頻度数に合算される。
加重値W1及びW2が可変的に設定されれば、各リスト内の特定予測モードが発生する際、頻度数はそれぞれW1及びW2ずつ増加する。一実施例によると、加重値W1及びW2は予め設定される。この際、エンコーダとデコーダがいずれも同じ加重値W1及びW2を使用するため、更なるシグナリングなしにエンコーダとデコーダがいずれも同じ発生頻度数の計算を行うことができる。他の実施例によると、加重値W1及びW2に関する情報はPPS、VPS、またはSPSなどのRBSPを介してシグナリングされる。
上述した実施例によって算出された最終発生頻度数に基づいて、現在ブロックのMPMリストが構成される。周辺ブロックで発生頻度数が高いイントラ予測モードは、現在ブロックいで選択される確率が高い。よって、周辺ブロックで算出された最終発生頻度数が高いイントラ予測モードが現在ブロックのMPMリストに含まれる。例えば、MPMリストの大きさがmであれば、MPMリストは平面モード、DCモード、及び最終発生頻度数が高い上位m-2個の角度モードからなる。また、MPMリストでインデックスが低いほどより少ない数のビットで表すことができるため、最終発生頻度数が高い予測モードがMPMリストのより小さいMPMインデックスにマッチングされる。
一方、最終発生頻度数が0ではない同じ値を有する複数の角度モードが存在すれば、第1ステップの周辺ブロックにおける該当角度モードの発生頻度数が優先的に考慮される。例えば、イントラ予測モード18とイントラ予測モード50の最終発生頻度数が8で同じであれば、第1ステップの周辺ブロックにおける発生頻度数がより高いイントラ予測モードにより高い優先順位が割り当てられる。他の実施例によると、最終発生頻度数が0ではない同じ値を有する複数の角度モードが存在すれば、現在ブロックの形状に応じて該当角度モード間の優先順位が決定される。例えば、現在ブロックが垂直ブロックであれば、第1ステップの周辺ブロックのうちブロックA(1)、ブロックAR(1)、及びブロックAL(1)の角度モードにより高い優先順位が与えられるか、垂直モードに近い角度モードにより高い優先順位が与えられる。
一実施例によると、MPMリスト内で平面モードとDCモードのMPMインデックスは、第1ステップの周辺ブロックのイントラ予測モードに応じて異なるように設定される。例えば、第1ステップの周辺ブロックのイントラ予測モードのうち平面モード、DCモードの発生頻度が臨界値以上であれば、平面モードとDCモードがMPMインデックス0及び1にマッチングされる。また、第1ステップの周辺ブロックのイントラ予測モードのうち角度モードの発生頻度数が臨界値以上であれば、角度モードのMPMインデックスが平面モード及びDCモードのMPMインデックスより小さい値に設定される。
上述した実施例において、0ではない最終発生頻度数を有する角度モードがm-2個より小さければ、{VERモード、HORモード、HDIAモード、VDIAモード}のうち一つ以上を使用してMPMリストが構成される。また、非-MPMモードを符号化するのにかかるシグナリングオーバーヘッドを最小化するために、最終発生頻度数が高い予測モードが使用される。例えば、最終発生頻度数が高い予測モードは選択モードリストに含まれるか、非-選択モードのうちより少ない数のビットでシグナリングされる低い値のインデックスにマッチングされる。他の実施例によると、MPMリストに含まれた最終発生頻度数が高い角度モードに予め設定されたオフセットを足すか引いた角度モードを利用して選択モードリストを構成する。また、MPMリストに含まれていない0ではない最終発生頻度数を有する角度モード、及び該当モードに予め設定されたオフセットを足すか引いた角度モードが、非-選択モードのうちより少ない数のビットでシグナリングされる低い値のインデックスにマッチングされる。
以下、周辺ブロックのイントラ予測モードの発生頻度数に基づいて現在ブロックのイントラ予測モードを符号化するエンコーダの動作を説明する。まず、現在ブロックに対するイントラ予測モードを符号化するために、エンコーダは現在ブロックの周辺ブロックが存在するのかを確認し、該当周辺ブロックのイントラ予測モードの発生頻度数を計算する。次に、エンコーダは周辺ブロックのイントラ予測モードの発生頻度数に基づいてMPMリスト、選択モードリスト、または非-選択モードのうち少なくとも一つを構成する。この際、発生頻度数が高い予測モードが高い優先順位を有するように構成される。次に、エンコーダは現在ブロックのイントラ予測モードが現在ブロックのMPMリスト内に存在するのか否かを示すMPMフラッグを符号化する。もし現在ブロックのイントラ予測モードが現在ブロックのMPMリスト内に存在しなければ、前記イントラ予測モードが選択モードのうちいずれか一つと一致するのか否かを示す選択モードフラッグを符号化する。一方、現在ブロックのイントラ予測モードが現在ブロックのMPMリスト内に存在すれば(つまり、MPMフラッグの値が1であれば)、エンコーダはMPMリスト内に現在ブロックのイントラ予測モードに対応するMPMインデックスを符号化する。また、現在ブロックのイントラ予測モードが現在ブロックの選択モードリスト内に存在すれば(つまり、MPMフラッグの値が0で、選択モードフラッグの値が1であれば)、エンコーダは選択モードリスト内に現在ブロックのイントラ予測モードに対応する選択モードインデックスを符号化する。その他の場合、現在ブロックのイントラ予測モードに対応する非-選択モードインデックスを符号化する。
また、周辺ブロックのイントラ予測モードの発生頻度数に基づいて現在ブロックのイントラ予測モードを復号化するデコーダの動作は以下のようである。まず、現在ブロックのシンボルをパーシング(parsing)する過程で現在ブロックのMPMフラッグがパーシングされ、MPMフラッグが0であれば更に選択モードフラッグがパーシングされる。符号化過程と同じく、デコーダは、現在ブロックの周辺ブロックが存在するのかを確認し、該当周辺ブロックのイントラ予測モードの発生頻度数を計算する。次に、デコーダは周辺ブロックのイントラ予測モードの発生頻度数に基づいてMPMリスト、選択モードリスト、または非-選択モードのうち少なくとも一つを構成する。デコーダにおけるMPMリスト、選択モードリスト、及び非-選択モードの構成方法は、上述したエンコーダにおける方法と同じである。MPMフラッグが1であれば、デコーダはMPMインデックスを復号化する。MPMフラッグが0で選択モードフラッグが1であれば、デコーダは選択モードインデックスを復号化する。その他の場合、デコーダは非-選択モードインデックスを復号化して現在ブロックのイントラ予測モードを決定する。デコーダは、決定されたイントラ予測モードを使用してイントラ予測を行い、予測ブロックを生成する。
図20及び図21は、イントラ予測モードを複数のサブセットに分類する実施例を示す図である。イントラ予測モードの個数が増加するにつれ、現在ブロックのイントラ予測モードがMPMリストに含まれる確率が落ち、それによってイントラ予測モードの符号化に必要なビット量が多くなる。これを解決するために、イントラ予測モードを複数のサブセットに分類し、現在ブロックの周辺コンテキストによる予測モードセットを使用してイントラ予測が行われる。
まず、図20はイントラ予測モードを複数のサブセットに分類する一実施例を示す図である。図20に実施例によると、イントラ予測モードセットのN個のイントラ予測モードは、排他的イントラ予測モードからなるM個のサブセット(S0、S1、…、SM-1)に分類される。図20において、mi、jはi番目のサブセットに属するj番目のイントラ予測モードを指す。それぞれのサブセットSiはKi個の排他的イントラ予測モードからなり、以下の数式2を満足する。
この際、それぞれのイントラ予測モードサブセットを構成するイントラ予測モードの個数Kiは、サブセット別にそれぞれ異なり得る。
例えば、イントラ予測モードセットが総67個のイントラ予測モードを含む場合、イントラ予測モードは水平モードセット{平面モード、モード2、モード3、…、モード34}と垂直モードセット{DCモード、モード35、モード36、…、モード66}に区分される。他の実施例によると、イントラ予測モードは水平モードセット{水平モード、モード10、モード11、…、モード26}、垂直モードセット{DCモード、モード42、モード43、…、モード58}、DIAモードセット{モード27、モード28、…、モード41}、HDIAモードセット{モード2、モード3、…、モード9}、及びVDIAモードセット{モード59、モード60、…、モード66}に区分される。また他の実施例によると、イントラ予測モードは第1サブセット{平面モード、DCモード、基本角度モード}と第2サブセット{拡張角度モード}に区分される。
次に、図21はイントラ予測モードを複数のサブセットに分類する他の実施例を示す図である。図21に実施例によると、イントラ予測モードセットのN個のイントラ予測モードは、排他的イントラ予測モードと重複する(または、共用)イントラ予測モードを含むM個のサブセット(S0、S1、…、SM-1)に分類される。一実施例によると、共用イントラ予測モードは、インター予測において統計的に選択される確率が高い上位L個のイントラ予測モードで設定される。図21において、cmkは各サブセットに属するk番目の共用イントラ予測モードを指し、mi、jはi番目のサブセットに属するj番目の排他的イントラ予測モードを指す。それぞれのサブセットSiはL個の共用イントラ予測モードとLi個の排他的イントラ予測モードからなり、以下の数式3を満足する。
この際、それぞれのイントラ予測モードサブセットに含まれた排他的イントラ予測モードの個数Liは、サブセット別にそれぞれ異なり得る。
例えば、イントラ予測モードセットが総67個のイントラ予測モードを含む場合、共用イントラ予測モードは{平面モード、DCモード、HDIAモード、HORモード、DIAモード、VERモード、VDIAモード}のうち一つ以上に設定される。これを活用して、イントラ予測モードは第1サブセット{平面モード、DCモード、基本角度モード}と第2サブセット{平面モード、DCモード、HDIAモード、HORモード、DIAモード、VERモード、VDIAモード、拡張角度モード}に区分される。他の実施例によると、イントラ予測モードは第1サブセット{平面モード、DCモード、HDIAモード、モード3、モード4、…、モード33、DIAモード、VERモード、VDIAモード}と第2サブセット{平面モード、DCモード、HDIAモード、HORモード、DIAモード、モード35、モード36、…、モード65、VDIAモード}に区分される。
図22は、分類されたイントラ予測モードのサブセットを利用して現在ブロックのイントラ予測モードをシグナリングする実施例を示す図である。本発明の実施例によると、現在ブロックの周辺ブロックで使用されたイントラ予測モードサブセットを利用し、現在ブロックのイントラ予測モードサブセットを決定する。
図20の実施例によってそれぞれのイントラ予測モードサブセットが排他的イントラ予測モードからなれば、周辺ブロックのイントラ予測モードが含まれているイントラ予測モードサブセット情報を確認し、該当情報を利用して現在ブロックのイントラ予測モードサブセットが決定される。つまり、周辺ブロックで最も多く使用されるイントラ予測モードサブセットが現在ブロックのイントラ予測モードサブセットに割り当てられる。この際、現在ブロックの予測情報を獲得するために拡張された周辺ブロックを参照する図16乃至図18の実施例が更に適用される。
図22を参照すると、まず、現在ブロックの第1ステップの周辺ブロックL(1)、A(1)、BL(1)、AR(1)、及びAL(1)のイントラ予測モードサブセット情報を参照し、次に、現在ブロックの第2ステップの周辺ブロックL(2)、A(2)、BL(2)、AR(2)、及びAL(2)のイントラ予測モードサブセット情報を参照して、現在ブロックのイントラ予測モードサブセットが決定される。一実施例によると、図19を参照して述べられた発生頻度数算出方法に基づいて、第1ステップの周辺ブロックのイントラ予測モードサブセットの頻度数と、第2ステップの周辺ブロックのイントラ予測モードサブセットの頻度数にそれぞれ加重値w1及びw2を適用して、イントラ予測モードサブセットの最終発生頻度数が算出される。この際、最も大きい発生頻度数を有するイントラ予測モードサブセットを現在ブロックのイントラ予測モードサブセットに割り当てる。
一方、最終発生頻度数が0ではない同じ値を有する複数のイントラ予測モードサブセットが存在すれば、図19を参照して説明された実施例と類似して第1ステップの周辺ブロックにおける発生頻度数を優先的に考慮するか、現在ブロックの形状に基づいていずれか一つのイントラ予測モードサブセットが選択される。
次に、図21の実施例によってそれぞれのイントラ予測モードサブセットが共用イントラ予測モードを含む場合、共用イントラ予測モードのため周辺ブロックのイントラ予測モード情報のみでイントラ予測モードサブセットを識別することができない場合が発生する。つまり、周辺ブロックのイントラ予測モードが共用イントラ予測モードのうち一つであれば、周辺ブロックのイントラ予測モードサブセットを導出することができなくなる。よって、現在ブロックのイントラ予測モードサブセットのインデックスが別途にシグナリングされるべきであり、現在ブロックのイントラ予測モードサブセット情報が貯蔵されるべきである。
前記のような状況において、一実施例によると、現在ブロックのイントラ予測モードサブセットのインデックスを別途にシグナリングしなくてもよい。イントラ予測モードサブセットの個数が増加するほどイントラ予測モードサブセットのインデックス情報を表すのに必要な別途の個数が増加するため、予め設定された規則に従って共用イントラ予測モードを有する周辺ブロックのイントラ予測モードサブセット情報が決定される。例えば、周辺ブロックに共用イントラ予測モードが使用されていれば、基本サブセットが該当周辺ブロックのイントラ予測モードサブセットに決定される。または、該当ブロックの共用イントラ予測モードの種類に応じてイントラ予測モードサブセットが決定される。例えば、周辺ブロックに使用された共用イントラ予測モードが垂直モードであれば、垂直モード近くの角度モードを多く含むサブセットが該当周辺ブロックのイントラ予測モードサブセットに決定される。また、周辺ブロックに使用された共用イントラ予測モードが水平モードであれば、水平モード近くの予測モードを多く含むサブセットが該当周辺ブロックのイントラ予測モードサブセットに決定される。
現在ブロックのイントラ予測モードサブセットが決定されたら、イントラ予測モードサブセット内で優先的に考慮して、現在ブロックのMPMリスト及び非-MPMモードが構成される。
一実施例によると、予め設定された優先順位の周辺ブロックの位置及び/または予め設定された優先順位のイントラ予測モードに基づいてMPMリストが構成される。現在ブロックと同じイントラ予測モードサブセットを有する周辺ブロックの予測モードを左側ブロック、上側ブロック、下左側ブロック、上右側ブロック、及び上左側ブロックの順にMPMリストに追加する。また、現在ブロックのイントラ予測モードサブセットに平面モードとDCモードが含まれていれば、該当イントラ予測モードは角度モードより優先的に考慮される。但し、イントラ予測モードサブセットに共用イントラ予測モードが含まれていれば、現在ブロックと互いに異なるイントラ予測モードサブセットを有する周辺ブロックのイントラ予測モードが共用イントラ予測モードのうち一つであれば、該当周辺ブロックのイントラ予測モードを予め設定された優先順位に従って現在ブロックのMPMリストに追加する。例えば、共用イントラ予測モードが{平面モード、DCモード、HDIAモード、HORモード、DIAモード、VERモード、VDIAモード}で、左側ブロックのイントラ予測モードサブセットが現在ブロックとは異なっても、左側ブロックのイントラ予測モードが共用イントラ予測モードのうち一つであれば、該当イントラ予測モードは現在ブロックのMPMリストに含まれる。
他の実施例によると、現在ブロックの形状及び周辺ブロックの形状に基づいてMPMリストが構成される。現在ブロックが垂直ブロックであれば、上側ブロック、上右側ブロック、及び上左側ブロックのうち現在ブロックと同じイントラ予測モードサブセットを有するブロックのイントラ予測モードに高い優先順位が与えられ、現在イントラ予測モードサブセット内の垂直モードまたは垂直モードに近い角度モードが優先的にMPMリストに追加される。また他の実施例によると、図19を参照して述べられた発生頻度数算出方法に基づいて、現在ブロックの第1ステップの周辺ブロックの予測モードと第2ステップの周辺ブロックの予測モードのうち、現在ブロックのイントラ予測モードサブセットに含まれる予測モードの頻度数を考慮してMPMリスト、選択モードリスト、または非-選択モードのうち少なくとも一つが構成される。
このように、N個の予測モードをM個のイントラ予測モードサブセットに分け、周辺ブロックのイントラ予測モードサブセット情報を活用して現在ブロックのイントラ予測モードサブセットを決定すれば、現在ブロックに不必要なイントラ予測モードが除去された最適の予測モードリストが構成される。よって、現在ブロックのイントラ予測モードがMPMリスト内のイントラ予測モードと一致する確率が高くなり、イントラ予測モードシグナリングに必要なビット量が減少される。
図23は、分類されたイントラ予測モードのサブセットを利用して現在ブロックのイントラ予測モードをシグナリングする詳細実施例を示す図である。図23の実施例では、イントラ予測モードサブセットが排他的イントラ予測モードで構成されていると仮定する。より詳しくは、イントラ予測モードサブセットの67個のイントラ予測モードが排他的イントラ予測モードからなる2個のサブセットに分類される。2個のイントラ予測モードサブセットは、それぞれ排他的な35個のイントラ予測モード及び32個のイントラ予測モードからなる。例えば、第1サブセットは{平面モード、DCモード、33個の基本角度モード}からなり、第2サブセットは{32個の拡張角度モード}からなる。または、イントラ予測モードは水平モードセット{平面モード、DCモード、モード2、モード3、…、モード34}及び垂直モードセット{モード35、モード36、…、モード66}に区分される。
イントラ予測モードが2個のサブセットに分類されれば、シグナリングされるMPMモード、選択モード、及び非-選択モードの個数は調整される。つまり、現在ブロックのイントラ予測をシグナリングするために4個のMPMモード、8個の選択モード、及び23個(または20個)の非-選択モードが使用される。図23(a)は現在ブロックのイントラ予測のためのそれぞれのフラッグ及びインデックスをシグナリングする実施例を示し、図23(b)は切り捨て二項二進化にシグナリングされる非-選択モードインデックスの実施例を示す。
もし現在ブロックのイントラ予測モードがMPMリスト内に存在すれば、MPMフラッグとMPMインデックスがシグナリングされる。この際、MPMフラッグは1ビットでシグナリングされ、MPMインデックスは切り捨て二項二進化でコーディングされて1ビット乃至3ビットでシグナリングされる。二進化されたMPMインデックスは、CABACを介して符号化される。一方、現在ブロックのイントラ予測モードがMPMリスト内に存在しない際にはMPMフラッグが0に設定され、選択モードと非-選択モードを活用してイントラ予測モードが符号化される。イントラ予測モードが8個の選択モードのうち一つと一致すれば、MPMフラッグ、選択モードフラッグ、及び選択モードインデックスがシグナリングされる。この際、MPMフラッグ及び選択モードフラッグは1ビットでシグナリングされ、選択モードインデックスは固定された3ビットでシグナリングされる。
残りの非-選択モードの場合、MPMフラッグ、選択モードフラッグ、及び非-選択モードインデックスがシグナリングされる。この際、非-選択モードインデックスは切り捨て二項二進化でコーディングされてシグナリングされる。現在ブロックに対して35個のイントラ予測モードを含む第1サブセットが使用されれば、該当サブセットで非-選択モードの個数は23個である。2^4<23<2^5を満足するため、非-選択モードの上位9個のモードのインデックスは4ビットでシグナリングされ、下位14個のモードのインデックスは5ビットでシグナリングされる。しかし、現在ブロックに対して32個のイントラ予測モードを含む第2サブセットが使用されれば、該当サブセットで非-選択モードの個数は20個である。2^4<20<2^5を満足するため非-選択モードの上位12個のモードのインデックスは4ビットでシグナリングされ、下位8個のモードのインデックスは5ビットでシグナリングされる。
図24は、周辺ブロックの予測情報に基づいて現在ブロックのイントラ予測モードを動的にシグナリングする実施例を示す図である。より詳しくは、図24の実施例によると、多様な条件によってMPMモードの構成が変更される。図24(a)は、現在ブロックが属するピクチャの種類に応じてMPM構成を変更する方法を示す。図24(b)及び図24(c)は、周辺ブロックで使用されたイントラ予測モードに応じてMPMモードを可変的に構成する方法を示す。
まず、図24(a)は、本発明の一実施例によって現在ブロックが属するピクチャの種類に応じてMPM構成を変更する方法を示す。従来のMPMモード、非-MPMモード、非-選択モードなどの構成は、該当ブロックが属するピクチャのタイプ(つまり、Iピクチャ、Pピクチャ、またはPピクチャ)を区分せずに同じく適用されている。しかし、本発明の一実施例によると、図24(a)に示すように、周辺ブロックがインター予測とイントラ予測を自由に行い得るPピクチャ及びBピクチャにおけるMPM構成方法を、周辺ブロックがイントラ予測のみを行うIピクチャにおけるMPM構成方法とは異なるように適用してもよい。例えば、Pピクチャ及びBピクチャにおけるMPMモードの個数は、IピクチャにおけるMPMモードの個数とは異なるように設定される。つまり、Pピクチャ及びBピクチャにおけるMPMモードの個数は、IピクチャにおけるMPMモードの個数より小さい値に設定される。
次に、図24(b)は、周辺ブロックで使用されたイントラ予測モードに応じてMPMモードを可変的に構成する本発明の一実施例を示す。現在タイル(または、スライス)がPタイル(または、スライス)またはBタイル(または、スライス)であれば、デコーダは周辺ブロックの位置で使用された予測モードを探索する。この際、周辺ブロックの全ての探索位置(例えば、L、A、BL、AR、及びAL)のうちからイントラ予測ブロックと確認された位置の個数をm1と指示する。また、周辺ブロックが全ての探索位置でイントラ予測に使用された互いに異なるイントラ予測モードの個数をm2と指示する。例えば、周辺ブロックの探索位置がいずれもイントラ予測ブロックと確認されればm1は大きい値を有するが、もし各位置で使用されたイントラ予測モードがいずれも同じであればm2は1と設定される。本発明の一実施例によると、前記m1及び/またはm2の値に基づいて以下のような可変的なMPMモードシグナリング方法が適用される。それぞれの実施例において、Th1、Th2、及びTh3はそれぞれ第1臨界値、第2臨界値、及び第3臨界値を示す。この際、Th1<Th2<Th3を満足する。
1)m1の値がTh1以下であれば、第1MPMモードシグナリング方法が適用される。周辺ブロックの位置でイントラ予測ブロックの個数がTh1以下であれば、周辺ブロックの位置で使用されたイントラ予測モードまたはこれから派生された(例えば、角度モードに予め設定されたオフセットに適用された)モードのコンテキストが現在ブロックとは関係がない可能性がある。つまり、周辺ブロックが大部分インター予測ブロックである可能性が高いため、現在ブロックのイントラ予測は周辺ブロックとの連関性が低い可能性がある。この場合、MPMモードは多数のコンテキストで抽出されたm個のイントラ予測モードを均等なオーバーヘッドでシグナリングすることが適切である。よって、MPMモードに固定長符号化が適用される。
2)m1の値がTh1より大きいがTh2以下であれば、第2MPMモードシグナリング方法が適用される。周辺ブロックの位置でイントラ予測ブロックの個数がTh1より大きければ、周辺ブロックの位置で使用されたイントラ予測モードまたはこれから派生されたモードのコンテキストが差等的に考慮される必要がある。つまり、イントラ予測が行われた周辺ブロックが存在するため、現在ブロックのイントラ予測モードのシグナリングは周辺のイントラ予測ブロックに基づいて構成するが、それらの位置を考慮した差等的シグナリングが必要である。この場合、MPMモードは周辺ブロックで使用されたイントラ予測モードとこれから派生されたモードを順次に考慮するコンテキストで抽出されたm個のイントラ予測モードを差等的なオーバーヘッドでシグナリングすることが適切である。よって、MPMモードは切り捨て単項二進化でシグナリングされる。
3)m1の値がTh2より大きいがm2の値がTh3より小さければ、第3MPMモードシグナリング方法が適用される。周辺ブロックの位置でイントラ予測ブロックの個数がTh2より大きいが使用されたイントラ予測モードの多様性が大きくない場合であるため、周辺ブロックのイントラ予測モードまたはこれから派生されたモードのコンテキストが差等的に考慮する必要がある。この場合、MPMモードのシグナリング方法は前記第2方法と同じである。
4)m1の値がTh2より大きくm2の値もTh3より大きければ、第4MPMモードシグナリング方法が適用される。周辺ブロックの位置でイントラ予測ブロックの個数がTh2より大きければ、使用されたイントラ予測モードの多様性が大きい場合であるため、周辺ブロックのイントラ予測モードまたはこれから派生されたモードのコンテキストを均等に考慮し、最大その値をMPMモードを介してシグナリングする必要がある。つまり、イントラ予測が行われた周辺ブロックが多いが、該当ブロックで大部分異なるイントラ予測モードが使用されているため、現在ブロックのイントラ予測は周辺のイントラ予測ブロックをいずれも考慮した非差等的シグナリングが必要である。この場合、MPMモードは周辺ブロックで使用されたイントラ予測モードとこれから派生されたモードを考慮するコンテキストで抽出されたm個のイントラ予測モードを均等なオーバーヘッドでシグナリングすることが適切である。よって、MPMモードに固定長符号化が適用される。
前記方法において、MPMモードでシグナリングされるモードの個数mは、導出されたm1及びm2の値に基づいて決定される。また、決定されたmの値に基づいて選択モードの個数s、非-選択モードの個数ns、及びこれらの符号化方法が決定される。一実施例によると、選択モードには固定長符号化が適用され、MPMモードの個数mに基づいて設定された後続するs個のイントラ予測モードのシグナリングを担当することが適切である。
図24(c)は、周辺ブロックで使用されたイントラ予測モードに応じてMPMモードを可変的に構成する本発明の他の実施例を示す。図24(b)の実施例で上述したように、周辺ブロックが全ての探索位置でイントラ予測に使用された互いに異なるイントラ予測モードの個数をm2と指示する。本発明の他の実施例によると、前記m2の値に基づいて以下のような可変的なMPMモードシグナリング方法が適用される。
5)m2の値がTh1以下であれば、第5MPMモードシグナリング方法が適用される。周辺ブロックの位置でイントラ予測ブロックの個数がTh1以下であれば、周辺ブロックの位置で使用されたイントラ予測モードまたはこれから派生されたモードのコンテキストを適切に反映してmを少ない数に設定する。周辺ブロックの互いに異なるイントラ予測モードの個数が少なければ、これを拡張してMPMモードの個数を埋めるとしても、前記派生されたモードが現在ブロックの予測モードとは異なる可能性が高いためである。この場合、単一または少数のコンテキストで抽出された少ない個数のm個のMPMモードが使用されるが、前記MPMモードを均等なオーバーヘッドでシグナリングすることが適切である。よって、MPMモードに固定長符号化が適用される。
6)m2の値がTh1より大きいがTh2以下であれば、第6MPMモードシグナリング方法が適用される。周辺ブロックの位置でイントラ予測ブロックの個数が一定個数より大きければ、周辺ブロックの位置で使用されたイントラ予測モードまたはこれから派生されたモードのコンテキストが差等的に考慮される必要がある。第6MPMモードシグナリング方法の具体的な実施例は、上述した第2MPMモードシグナリング方法と同じである。
7)m2の値がTh2より大きければ、第7MPMモードシグナリング方法が適用される。周辺ブロックの位置でイントラ予測ブロックの個数がTh2より大きければ、使用されたイントラ予測モードの多様性が大きい場合であるため、周辺ブロックのイントラ予測モードまたはこれから派生されたモードのコンテキストを均等に考慮し、最大その値をMPMモードを介してシグナリングする必要がある。第7MPMモードシグナリング方法の具体的な実施例は、上述した第4MPMモードシグナリング方法と同じである。
前記方法において、MPMモードでシグナリングされるモードの個数mは、導出されたm2の値に基づいて決定される。また、決定されたmの値に基づいて選択モードの個数s、非-選択モードの個数ns、及びこれらの符号化方法が決定される。一実施例によると、選択モードには固定長符号化が適用され、MPMモードの個数mに基づいて設定された後続するs個のイントラ予測モードのシグナリングを担当することが適切である。
図25は、MPMモードの個数を可変的に調整し、それに基づいて現在ブロックのイントラ予測モードをシグナリングする実施例を示す図である。図24で述べたように、MPMモードシグナリング方法によって少ない個数のMPMモードが使用される。
図25(a)を参照すると、MPMモードの個数は固定されておらず、周辺ブロックのイントラ予測モード情報に基づいて可変する。総67個のイントラ予測モードのうち2個のモードがMPMモードと設定され、固定長符号化でシグナリングされる。固定長符号化方式は、シグナリングするモード間に均等な優先順位を与える。次に、選択モードの個数sは16または9に決定され、選択モードは固定長符号化でシグナリングされる。この際、相対的に少ない個数のMPMモードがシグナリングされるため、図25(a)の実施例によると、選択モードの個数(つまり、16個)を大きくしてMPMモードでシグナリングされないイントラ予測モードが選択モードにシグナリングされる確率を上げる。しかし、選択モードでシグナリング行われれば、従来の固定された個数のMPMモードを使用する方法とシグナリングオーバーヘッドが同じであるため、図25(b)の実施例によると、選択モードの個数(つまり、9個)を減らして全体のオーバーヘッドを減らすことができる。
しかし、選択モードの個数を減らした実施例において、非-選択モードがシグナリングされれば、シグナリングオーバーヘッドが増加する。選択モードの個数が9の図25(b)の実施例では、選択モードの個数が16個の図25(a)の実施例より多い56個の非-選択モードを切り捨て二項二進化でシグナリングすべきである。この際、2^5<56<2^6であるため、非-選択モードの初期2^6-56=8個のインデックスは5個のビットのみを使用してシグナリングされ、残りの48個のインデックスは6個のビットを使用してシグナリングされる。よって、15個のインデックスを5個のビットを使用してシグナリングし、34個のインデックスを6個のビットでシグナリングする図25(a)の非-選択モードに比べれば、図25(b)の非-選択モードのシグナリングオーバーヘッドが増加したことが分かる。
前記実施例において、MPMモードでシグナリングされるイントラ予測モードの個数mは、図24を参照して上述した方法に基づいて決定される。また、決定されたmの値に基づいて選択モードの個数sが決定される。また、選択モードの個数sは以下のような更なる条件に基づいて決定される。
まず、選択モードの個数はMPMモードで決定されたイントラ予測モードの値及びコンテキストに基づいて決定される。もしMPMモードを決定する際に周辺ブロックのイントラ予測モードが反映されていれば、MPMモードまたはこれから派生された選択モードを介して現在ブロックのイントラ予測モードがシグナリングされる可能性が高い。よって、MPMモードから派生された更なるイントラ予測モードを獲得し、前記更なるイントラ予測モードを相対的に少ない個数の選択モードで構成してシグナリングする。このように、選択モードの個数を制限することでシグナリングオーバーヘッドを減らすことができる。しかし、MPMモードを決定する際、周辺ブロックのイントラ予測モードが反映されずに平面モード、DCモード、VERモード、HORモードなど基本角度モードでMPMリストが構成されれば、相対的に多い個数の選択モードを構成してシグナリングする。MPMリストが周辺ブロックとは関係のないコンテキストからなっているため、選択モードの個数を最大限増やして現在ブロックのイントラ予測モードが選択モードに含まれる可能性を上げる。一方、非-選択モードの個数nsは、イントラ予測モードの総個数TからMPMモードの個数m及び選択モードの個数sを引いた値に決定される。
上述した本発明の実施例は多様な手段を介して具現される。例えば、本発明の実施例は、ハードウェア、ファームウェア(firmware)、ソフトフェアまたはそれらの組み合わせによって具現される。
ハードウェアによる具現の場合、本発明の実施例による方法は、一つまたはそれ以上のASICs(Application Specific Integrated Circuits)、DSPs(Digital Signal Processors)、DSDPs(Digital Signal Processing Devices)、PDLs(Programmable Logic Devices)、FPGAs(Field Programmable Gate Arrays)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどによって具現される。
ファームフェアやソフトウェアによる具現の場合、本発明の実施例による方法は、上述した機能または動作を行うモジュール、手順または関数などの形態で具現される。ソフトウェアコードは、メモリに貯蔵されてプロセッサによって具現される。前記メモリはプロセッサの内部または外部に位置し、既に公知の多様な手段によってプロセッサとデータを交換する。
上述した本発明の説明は例示のためのものであって、本発明が属する技術分野における通常の知識を有する者は、本発明の技術的思想や必須的特徴を変更せずに他の具体的な形態に容易に変更可能であることを理解できるはずである。よって、上述した実施例は全ての面で例示的なものであり、限定的なものではないと理解すべきである。例えば、単一型として説明されている各構成要素は分散されて実施されてもよく、同じく分散されていると説明されている構成要素も結合された形態で実施されてもよい。
本発明の範囲は、上述した詳細な説明よりは後述する特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、そしてその均等概念から導き出される全ての変更または変形された形態が本発明の範囲に含まれると解釈すべきである。