本発明は、多様な変更を加えることができ、様々な実施例を有することができ、特定の実施例を図面に例示して詳細に説明する。しかし、これは本発明を特定の実施形態に限定するものではない。本明細書で使用する用語は、単に特定の実施例を説明するために使われたものであり、本発明の技術的思想を限定するために使われるものではない。単数の表現は、文脈上明白に異なる意味ではない限り、複数の表現を含む。本明細書で「含む」又は「有する」などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品又はこれらを組合せたものが存在することを指定するものであり、一つ又はそれ以上の他の特徴、数字、ステップ、動作、構成要素、部品又はこれらを組合せたものの存在又は付加の可能性を予め排除しないと理解しなければならない。
一方、本発明で説明される図面上の各構成は、映像符号化/復号化装置で互いに異なる特徴的な機能に関する説明の便宜のために独立的に図示したものであり、各構成が互いに別個のハードウェアや別個のソフトウェアで具現されるということを意味しない。例えば、各構成のうち二つ以上の構成が統合されて一つの構成になることもでき、一つの構成が複数の構成に分けられることもできる。各構成が統合及び/又は分離された実施例も本発明の本質から外れない限り本発明の権利範囲に含まれる。
以下、添付図面を参照して、本発明の好ましい実施例をさらに詳細に説明する。以下、図面上、同一の構成要素に対しては同一の参照符号を使用し、同一の構成要素に対して重複した説明は省略する。
図1は、本発明の一実施例に係る映像符号化装置(符号化器)を概略的に示すブロック図である。図1を参照すると、映像符号化装置100は、ピクチャ分割部105、予測部110、変換部115、量子化部120、再整列部125、エントロピー符号化部130、逆量子化部135、逆変換部140、フィルタ部145、及びメモリ150を具備する。
ピクチャ分割部105は、入力されたピクチャを少なくとも一つの処理単位に分割することができる。このとき、処理単位は、予測ユニット(Prediction Unit、以下、‘PU’という)であってもよく、変換ユニット(Transform Unit、以下、‘TU’という)であってもよく、コーディングユニット(Coding Unit、以下、‘CU’という)であってもよい。
予測部110は、後述するように、画面間予測を実行する画面間予測部と画面内予測を実行する画面内予測部とを含む。予測部110は、ピクチャ分割部105でピクチャの処理単位に対して予測を実行して予測ブロックを生成する。予測部110でピクチャの処理単位はCUであってもよく、TUであってもよく、PUであってもよい。また、該当処理単位に対して実施される予測が画面間予測または画面内予測のいずれかを決定し、各予測方法の具体的な内容(例えば、予測モード等)を定めることができる。このとき、予測が実行される処理単位と予測方法及び具体的な内容が決められる処理単位とは異なってもよい。例えば、予測の方法及び予測モードなどはPU単位で決定され、予測の実行はTU単位で実行されることもできる。
画面間予測によって、現在ピクチャの以前のピクチャ及び/又は以後のピクチャのうち少なくとも一つのピクチャの情報に基づいて、予測を実行して予測ブロックを生成することができる。また、画面内予測によって、現在ピクチャ内の画素情報に基づいて、予測を実行して予測ブロックを生成することができる。
画面間予測では、PUに対し、参照ピクチャを選択し、PUと同一の大きさの参照ブロックを整数画素サンプル単位で選択することができる。次に、現在PUとのレジデュアル(残差)(residual)信号が最小化され、動きベクトルの大きさも最小となる予測ブロックを生成する。画面内予測の方法として、スキップ(skip)モード、マージ(merge)モード、動きベクトル予測(Motion Vector Prediction;MVP)などを用いることができる。予測ブロックは、1/2画素サンプル単位及び1/4画素サンプル単位などの整数以下のサンプル単位で生成されることもできる。このとき、動きベクトルも整数画素以下の単位で表現されることができる。例えば、輝度画素に対しては1/4画素単位で、色差画素に対しては1/8画素単位で表現されることができる。
画面間予測によって選択された参照ピクチャのインデックス、動きベクトル(例えば、動きベクトルプレディクタ(Motion Vector Predictor))、レジデュアル信号などの情報は、エントロピー符号化され、復号化器に伝達される。
画面内予測を実行する場合には、PU単位で予測モードが決められ、PU単位で予測が実行されることができる。また、PU単位で予測モードが決められ、TU単位で画面内予測が実行されることもできる。
画面内予測で、予測モードは、33個の方向性予測モードと少なくとも2個以上の非方向性モードとを有することができる。非方向性モードは、DC予測モード及びプラナーモード(Planar mode)を含むことができる。
画面内予測では、予測モードによって参照画素に適応型画面内平滑化(Adaptive Intra Smoothing;AIS)フィルタを適用した後、予測ブロックを生成することができる。参照画素に適用されるAISフィルタの種類は異なってもよい。また、画面内予測では、現在ブロックの予測モードによって参照画素を1/8画素単位で補間して予測を実行することができる。
PUは、多様なサイズ/形態を有することができ、例えば、画面間予測の場合、PUは、2N×2N、2N×N、N×2N、又はN×Nなどの大きさを有することができる。画面内予測の場合、PUは、2N×2N又はN×N(Nは、整数)などの大きさを有することができる。このとき、N×Nの大きさのPUは、特定の場合にのみ適用するように設定することができる。例えば、大きさが最小のコーディングユニットに対してのみN×NのPUを用いるように定めたり、画面内予測に対してのみ用いるように定めたりすることもできる。また、前述した大きさのPU以外に、N×mN、mN×N、2N×mN又はmN×2N(m<1)などの大きさを有するPUをさらに定義して使用することもできる。
生成された予測ブロックとオリジナルブロックとの間のレジデュアル値(レジデュアルブロック又はレジデュアル信号)は、変換部115に入力される。また、予測のために使用した予測モード情報、動きベクトル情報などは、レジデュアル値と共にエントロピー符号化部130で符号化され、復号化器に伝達される。
変換部115は、変換単位でレジデュアルブロックに対する変換を実行し、変換係数を生成する。変換部115での変換単位は、TUであってもよく、クワッドツリー(四分木)(quad tree)構造を有することができる。このとき、変換単位の大きさは、所定の最大及び最小の大きさの範囲内で決められることができる。変換部115は、レジデュアルブロックを離散コサイン変換(Discrete Cosine Transform;DCT)及び/又は離散サイン変換(Discrete Sine Transform;DST)を用いて変換することができる。
量子化部120は、変換部115で変換されたレジデュアル値を量子化して量子化係数を生成することができる。量子化部120で算出された値は、逆量子化部135及び再整列部125に提供される。
再整列部125は、量子化部120から提供された量子化係数を再整列する。量子化係数を再整列することによってエントロピー符号化部130での符号化の効率を上げることができる。再整列部125は、係数スキャニング(Coefficient Scanning)方法によって2次元ブロック形態の量子化係数を1次元のベクトル形態に再整列することができる。
再整列部125では、量子化部で送信された係数の確率的な統計に基づいて係数スキャニングの順序を変更することによってエントロピー符号化部130でのエントロピー符号化効率を上げることもできる。
エントロピー符号化部130は、再整列部125により再整列された量子化係数に対するエントロピー符号化を実行することができる。エントロピー符号化には、例えば、指数ゴロム(Exponential Golomb)、コンテキストベース適応型可変長コーディング(Context-Adaptive Variable Length Coding;CAVLC)、コンテキストベース適応型2進算術コーディング(Context-Adaptive Binary Arithmetic Coding;CABAC)などの符号化方法を使用することができる。エントロピー符号化部130は、再整列部125及び予測部110から受け取った、CUの量子化係数情報及びブロックタイプ情報、予測モード情報、分割単位情報、PU情報及び送信単位情報、動きベクトル情報、参照ピクチャ情報、ブロックの補間情報、フィルタリング情報など、多様な情報を符号化することができる。
また、エントロピー符号化部130は、必要な場合、送信するパラメータセット又はシンタックスに一定の変更を加えることもできる。
逆量子化部135は、量子化部120で量子化された値を逆量子化し、逆変換部140は、逆量子化部135で逆量子化された値を逆変換する。逆量子化部135及び逆変換部140で生成されたレジデュアル値は、予測部110で予測された予測ブロックと合わせられて復元ブロック(Reconstructed Block)を生成することができる。
フィルタ部145は、ジブロッキングフィルタ、適応ループフィルタ(Adaptive Loop Filter;ALF)、サンプル適応オフセット(Sample Adaptive Offset;SAO)を復元されたピクチャに適用することができる。
ジブロッキングフィルタは、復元されたピクチャでブロック間の境界に発生したブロック歪曲を除去することができる。適応ループフィルタ(Adaptive Loop Filter;ALF)は、ジブロッキングフィルタによってブロックがフィルタリングされた後、復元された映像とオリジナル映像とを比較した値に基づいてフィルタリングを実行することができる。ALFは、高効率を適用する場合にのみ実行されることもできる。SAOは、ジブロッキングフィルタが適用されたレジデュアルブロックに対して、画素単位でオリジナル映像とのオフセット差を復元し、バンドオフセット(Band Offset)、エッジオフセット(Edge Offset)などの形態に適用される。
一方、画面間予測に使われる復元ブロックに対してフィルタ部145は、フィルタリングを適用しなくてもよい。
メモリ150は、フィルタ部145によって算出された復元ブロック又はピクチャを格納することができる。メモリ150に格納された復元ブロック又はピクチャは、画面間予測を実行する予測部110に提供されることができる。
図2は、本発明の一実施例に係る映像復号化器を概略的に示すブロック図である。図2を参照すると、映像復号化器200は、エントロピー復号化部210、再整列部215、逆量子化部220、逆変換部225、予測部230、フィルタ部235、メモリ240を含むことができる。
映像符号化器から映像ビットストリームが入力された場合、入力されたビットストリームは、映像符号化器で映像情報が処理された手順によって復号化されることができる。
例えば、映像符号化器でエントロピー符号化を実行するために、CAVLCなどの可変長コーディング(Variable Length Coding;VLC、以下、‘VLC’という)が使われた場合、エントロピー復号化部210も符号化器で使用したVLCテーブルと同一のVLCテーブルで具現してエントロピー復号化を実行することができる。また、映像符号化器でエントロピー符号化を実行するために、CABACを用いた場合、エントロピー復号化部210は、これに対応してCABACを用いたエントロピー復号化を実行することができる。
エントロピー復号化部210で復号化された情報のうち予測ブロックを生成するための情報は、予測部230に提供され、エントロピー復号化部でエントロピー復号化が実行されたレジデュアル値は、再整列部215に入力されることができる。
再整列部215は、エントロピー復号化部210でエントロピー復号化されたビットストリームを、映像符号化器で再整列した方法に基づいて再整列することができる。再整列部215は、1次元ベクトル形態で表現された係数を再び2次元のブロック形態の係数に復元して再整列することができる。再整列部215は、符号化器で実行された係数スキャニングに関連した情報の提供を受け、該当符号化部で実行されたスキャニング順序に基づいて逆にスキャニングする方法によって再整列を実行することができる。
逆量子化部220は、符号化器によって提供された量子化パラメータと再整列されたブロックの係数値とに基づいて逆量子化を実行することができる。
逆変換部225は、映像符号化器で実行された量子化結果に対し、符号化器の変換部が実行したDCT及びDSTに対して逆DCT及び/又は逆DSTを実行することができる。逆変換は、符号化器で決定された送信単位又は映像の分割単位に基づいて実行されることができる。符号化器の変換部でDCT及び/又はDSTは、予測方法、現在ブロックの大きさ及び予測方向など、複数の情報によって選択的に実行されることができ、復号化器の逆変換部225は、符号化器の変換部で実行された変換情報に基づいて逆変換を実行することができる。
予測部230は、エントロピー復号化部210で提供された予測ブロック生成関連情報とメモリ240で提供される以前に復号化されたブロック及び/又はピクチャ情報とに基づいて予測ブロックを生成することができる。復元ブロックは、予測部230で生成された予測ブロックと逆変換部225で提供されたレジデュアルブロックを用いて生成されることができる。現在PUに対する予測モードがイントラ予測(intra prediction)モード(画面内予測モード)である場合、現在ピクチャ内の画素情報に基づいて予測ブロックを生成する画面内予測を実行することができる。
現在PUに対する予測モードがインター予測(inter prediction)モード(画面間予測モード)である場合、現在ピクチャの以前のピクチャ又は以後のピクチャのうち少なくとも一つのピクチャに含まれている情報に基づいて現在PUに対する画面間予測を実行することができる。このとき、映像符号化器で提供された現在PUの画面間予測に必要な動き情報、例えば、動きベクトル、参照ピクチャインデックスなどに関する情報は、符号化器から受信したスキップフラグ又はマージフラグなどの情報を確認した後、この情報に対応して導出されることができる。
復元されたブロック及び/又はピクチャは、フィルタ部235に提供されることができる。フィルタ部235は、復元されたブロック及び/又はピクチャにジブロッキングフィルタリング、サンプル適応オフセット(Sample Adaptive Offset;SAO)及び/又は適応ループフィルタリングなどを適用する。
メモリ240が、復元されたピクチャ又はブロックを格納することによって、復元されたピクチャ又はブロックを参照ピクチャ又は参照ブロックとして使用するようにすることができ、また、復元されたピクチャを出力部に提供することができる。
一方、符号化器で予測が実行されると、予測に関する情報、例えば、予測モード及びパーティションに関する情報などが復号化器にシグナリングされる。予測に関する情報のシグナリングは、多様な方法で実行されることができる。例えば、予測に関する情報がシグナリングされる時、現在ブロックの予測に現在ブロックに隣接した周辺ブロック(以下、「現在ブロックに隣接した周辺ブロック」を説明の便宜のために「周辺(neighbor)ブロック」という)の動き情報を現在ブロックの動き情報として使用するモードに関する情報が先にシグナリングされるようにすることができる。
周辺ブロックの動き情報を現在ブロックの動き情報として用いる方法として、スキップモード、ダイレクトモード、マージモードを用いる方法がある。三つのモードは、周辺ブロックの動き情報を現在ブロックの動き情報として用いるため、動き情報を直接送信しない。ただし、スキップモードではレジデュアル情報を送信しないが、ダイレクトモード及びマージモードではレジデュアル情報を送信することができる。このとき、スキップモード及びマージモードでは、どの周辺ブロックの動き情報を現在ブロックの動き情報として用いるかを指示する情報を送信することができる。
現在ブロックの予測に周辺ブロックの情報を用いる他の方法として、(マージ)スキップモード及びマージモードを用いる方法を考慮することもできる。(マージ)スキップモードでは、現在ブロック周辺の候補ブロックの中から所定のブロックを選択し、選択されたブロックの動き情報を現在ブロックの動き情報として用い、レジデュアル信号も送信しない。マージモードでは、(マージ)スキップモードの場合と同様に、現在ブロック周辺の候補ブロックの中から所定のブロックを選択し、選択されたブロックの動き情報を現在ブロックの動き情報として用い、レジデュアル情報を送信する。このとき、レジデュアル情報は、選択されたブロックの動き情報が指示する参照ブロックに基づいて生成された予測ブロックと現在ブロックの画素値差に関する情報であってもよい。(マージ)スキップモード又はマージモードを適用する場合には現在ブロックがどの候補ブロックの動き情報を用いるかを指示する情報を送信することができる。
周辺ブロックの動き情報を現在ブロックの動き情報として使用しない場合にも、現在ブロックの動き情報を周辺ブロックの動き情報を用いて予測することができる。例えば、符号化器は、現在ブロックの動きベクトルと周辺ブロックの動きベクトルとの差を示す動きベクトル差情報を復号化器にシグナリングし、復号化器は、周辺ブロックの動き情報と前記動きベクトル差情報に基づいて現在ブロックの動き情報を予測するようにすることができる。
スキップモード、ダイレクトモード、マージモードを用いる時、前記三つのモードに該当しない場合、符号化器は、現在ブロックの予測モードと共にパーティション情報を復号化器にシグナリングする。マージモードにおいて、符号化ユニット単位でマージモードが実行される場合、符号化器は、現在ブロックの予測モード及びパーティション情報を復号化器にシグナリングしないが、予測ユニット単位でマージモードが実行される場合、符号化器は、現在ブロックの予測モード及びパーティション情報を復号化器に送信する。
(マージ)スキップモード又はマージモードを用いる場合にも、スキップモード、ダイレクトモード又はマージモードを用いる場合と同様に処理されることができる。例えば、(マージ)スキップモード及びマージモードに該当しない場合、符号化器は、現在ブロックの予測モードと共にパーティション情報を復号化器にシグナリングするようにすることができる。マージモードにおいても、符号化ユニット単位でマージモードが実行される場合、符号化器は、現在ブロックの予測モード及びパーティション情報を復号化器にシグナリングしないが、予測ユニット単位でマージモードが実行される場合、符号化器は、現在ブロックの予測モード及びパーティション情報を復号化器にシグナリングするようにすることができる。
したがって、符号化ユニット単位で周辺ブロックの動き情報を現在ブロックの動き情報として用いる場合でなければ、符号化器が現在ブロックに対する予測モード及びパーティション情報を復号化器にシグナリングするようにすることができる。
図3は、符号化ユニット単位でマージモードが実行される場合、予測に関する情報をシグナリングする方法の一例を概略的に示す図である。図3では、周辺ブロックの動き情報を現在ブロックの動き情報として使用するモードとして{スキップモード、ダイレクトモード、マージモード}を使用する場合を例示して説明する。
図3を参照すると、現在ブロックにスキップモードが適用されるか否かはskip_flagにより指示されることができ、マージモードが適用されるか否かはmerge_flagにより指示されることができる。また、現在ブロックにダイレクトモードが適用されるか否かはdirect_mode_signalingなどの情報によって指示されることができる。スキップモード、マージモード、ダイレクトモード以外の予測モードが適用される場合にはpred_mode_partition_signalingなどの情報によって予測モード及びパーティション情報が指示されるようにすることができる。
図3の例では、まず、スキップフラグ(skip_flag)により現在ブロックの予測モードがスキップモードか否かが決定される。例えば、skip_flagの値が1の場合、現在ブロックにスキップモードが適用されると決定することができる。skip_flagの値が0の場合、マージフラグ(merge_flag)によって現在ブロックの予測モードがマージモードか否かが決定される。例えば、merge_flagの値が1の場合、現在ブロックにマージモードが適用されると決定することができる。merge_flagの値が0の場合、ダイレクトモードか否かを指示するシグナリング(direct_mode_signaling)によって現在ブロックの予測モードがダイレクトモードか否かが決定されることができる。例えば、direct_mode_signalingの値が1の場合、現在ブロックにダイレクトモードが適用されると決定することができる。direct_mode_signalingの値が0の場合、現在ブロックの予測モードとパーティションを指示する情報(pred_mode_partition_signaling)とによって、現在ブロックの予測モード及びパーティションが決定されることができる。このとき、現在ブロックの予測モードとパーティションに関する情報(例えば、パーティションサイズ)とは、一度にジョイント符号化(joint coding)されてシグナリングされることができる。
予測モードとパーティションサイズなどの予測に関する情報、即ち、予測タイプは、前述したように、ジョイントコーディングされてシグナリングされることができる。予測モードは、イントラモード及びインターモードを含むことができる。パーティションサイズは、イントラ予測モードに対して、2N×2N、N×N(Nは、サンプルの個数)などがあり、インター予測モードに対しては、2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N、nR×2N(ここで、0<n<1であり、U、D、L、Rは、サンプルの個数を示す整数)などがある。
したがって、pred_mode_partition_signalingで表すことができる予測タイプ(prediction type)は、イントラ予測モードとして{2N×2N、N×N}のうちいずれか一つのパーティションを有する予測タイプ、又は、インター予測モードとして{2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N、nR×2N}のうちいずれか一つのパーティションを有する予測タイプを指示することができる。
一方、予測モードとパーティションに関する情報とを含む予測タイプに関する情報は、その他の情報のシグナリングと前後して送信されることができる。
例えば、予測タイプに関する情報は、現在ブロックのスライスタイプ(slice_type)がシグナリングされた後にシグナリングされることができる。現在ブロックの予測モードがイントラモードである場合、スライスタイプ情報は、Iスライスを指示することができ、現在ブロックの予測モードがインターモードである場合、スライスタイプ情報は、B又はPスライスを指示することができる。ここで、Iスライスは、イントラ予測のみを用いて復号化されるスライスを意味し、Bスライスは、最大で(at most)二つの動きベクトル及び参照インデックスを用いるインター予測又はイントラ予測を用いて復号化されるスライスを意味する。Pスライスは、最大で一つの動きベクトル及び参照インデックスを用いるインター予測又はイントラ予測を用いて復号化されるスライスを意味する。
また、予測タイプに関する情報は、現在ブロックの分割可否(IntraSplitFlag)がシグナリングされた後にシグナリングされることもできる。例えば、予測タイプに関する情報が符号化ユニットに対するパラメータとして送信される場合には、分割されなかったという情報(IntraSplitFlag=0)を送信したり、分割されたという情報(IntraSplitFlag=1)を送信したりし、その後に予測タイプに関する情報を送信することができる。
したがって、予測モード又はパーティションサイズのうち少なくとも一つが同一である予測タイプに対して同一のインデックス又はコードワードが割り当てられても、予め送信されたスライスタイプ及び/又は分割情報に基づいてどの予測タイプが指示されたかを特定することもできる。例えば、2N×2Nイントラモードと2N×2Nインターモードとに同一のインデックス又はコードワードが割り当てられても、イントラモードの場合にはスライスタイプがIスライスであるものが予めシグナリングされ、インターモードの場合にはスライスタイプがP又はBスライスであるものが予めシグナリングされるため、復号化器は、2N×2Nイントラモードが指示されたか、または、2N×2Nインターモードが指示されたかを判別することができる。
一方、前述したように、{スキップモード、ダイレクトモード、マージモード}又は{(マージ)スキップモード、マージモード}などのように、周辺ブロックの動き情報を現在ブロックの動き情報として使用する予測モードに関する情報を、他の予測タイプに関する情報とジョイントコーディングせずに別個にシグナリングすることができる。
さらに、周辺ブロックの動き情報を現在ブロックの動き情報として用いるモードのうちマージモードの場合には、発生頻度を考慮して発生頻度が高いマージに対してはマージ可否に関する情報を他の情報とジョイントコーディングし、発生頻度が低いマージに対しては他の情報とジョイントコーディングせずに別個にシグナリングするようにすることもできる。例えば、符号化ユニット単位でマージする場合(CUマージ)にのみ、マージ可否に関する情報をイントラ/インター予測可否及びパーティション情報などとジョイントコーディングしてシグナリングし、予測ユニット単位でマージする場合(PUマージ)には、マージ可否に関する情報をイントラ/インター予測可否及びパーティション情報などとジョイントコーディングせずに別個に送信されるようにすることもできる。以下、符号化ユニット単位でマージする場合と予測ユニット単位でマージする場合とを分けて説明する。
表1は、図3の例によって、現在ブロックの予測モード及びパーティション情報をジョイント符号化する一例を示す。表1では、前述した予測タイプのうち、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表1を参照すると、符号化器は、ジョイントコーディングによるコードワードによって、現在ブロックに適用される予測モードと、現在ブロックのパーティションサイズとを指示することができる。
一方、図3及び表1のように、所定のモードに関する情報を先にシグナリングし、その後、予測モードとパーティションサイズに関する情報とをシグナリングする場合、各予測タイプ別発生頻度を考慮してコードワードを割り当てるようにすることができる。
図4は、各予測タイプの発生頻度を概略的に示す図である。図4では、それぞれの環境、即ち、ランダムアクセス高効率(Random Access High Efficiency;RAHE)、低遅延高効率(Low Delay High Efficiency;LDHE)、ランダムアクセス低複雑度(Random Access Low Complexity;RALC)、低遅延低複雑度(Low Delay Low Complexity;LDLC)の場合、スキップモード、マージモード、ダイレクトモード、イントラモードの各パーティションサイズ、インターモードの各パーティションサイズに対する分布を示している。
図4を参照すると、スキップモード及びマージモードの発生頻度の分布が多く、ダイレクトモードの場合は2N×2Nインターモードより発生頻度が少ない。したがって、この場合には図3に示すシグナリングの順序において、ダイレクトモードが適用されるか否かを示す情報をシグナリングするより、2N×2Nインターモードが適用されるか否かを示す情報を先にシグナリングする方がさらに効率が高い。
図4の例では、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードとして{スキップモード、ダイレクトモード、マージモード}を使用し、パーティションサイズのうち2N×2N、2N×N、N×2N、N×Nの発生頻度を測定したが、{(マージ)スキップモード、マージモード}を使用する場合及び/又は全てのパーティションサイズを使用する場合にも同様に、各予測モード及びパーティションサイズの発生頻度を考慮することができ、これに基づいてシグナリングの順序を調整することができる。
図5は、本発明が適用されるシステムで符号化器がシグナリングする方法の一例を概略的に説明する図である。図5では、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードとして{スキップモード、ダイレクトモード、マージモード}を使用し、図3と同様に、マージモードが符号化ユニット単位で適用される場合を例示して説明する。したがって、符号化ユニットより小さい各パーティションサイズに関してマージモードの適用可否がシグナリングされない。
図4を参照すると、ダイレクトモードより高い選択比率(発生頻度)を有する予測モード/パーティションサイズが存在することができる。したがって、選択比率が高い他の予測モード(予測モード/パーティションサイズ)の適用可否が先に判断されるようにシグナリングすることが送信オーバーヘッドの側面で有利である。
例えば、ダイレクトモードより高い発生頻度を有する予測モード/パーティションサイズをモードAとするとき、ダイレクトモードの適用可否に関する情報よりモードAの適用可否に関する情報を先に送信するようにすることができる。
図5の例では、符号化器がモードAの適用可否に関する情報をダイレクトモードの適用可否に関する情報より先にシグナリングする。具体的には、符号化器は、現在ブロックにスキップモードが適用されるか否かを示す情報(skip_flag)を先にシグナリングし、スキップモードが適用されない場合にはマージモードが適用されるか否かを示す情報(merge_flag)をシグナリングし、マージモードが適用されない場合にはモードAが適用されるか否かを示す情報(modeA_flag)をシグナリングする。
モードAが適用されない場合、符号化器は、ダイレクトモードと共に残りの予測モード/パーティションサイズのうちいずれが現在ブロックに適用されるかを指示する情報をシグナリングする。即ち、符号化器は、スキップモード、マージモード、モードA以外にどの予測タイプが現在ブロックに適用されるかを指示する情報(pred_mode_partition_signaling)をシグナリングする。
表2は、図5の例に示すように、予測タイプ情報にコードワードを割り当てたジョイントコーディングテーブルの一例である。表2では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表2の例では、説明の便宜のために、モードAが2N×2Nインターモードと仮定する。したがって、2N×2Nインターモードは、ジョイントコーディングテーブルを用いずに先にシグナリングされ、ダイレクトモードの適用可否は、他の予測タイプと共にジョイントコーディングテーブルを用いてシグナリングされる。
このとき、図5の例のように、予測タイプの発生頻度を考慮して送信順序を変更することと別個に、予測タイプの発生頻度を考慮して予測タイプにコードワードを割り当てるようにすることもできる。
表3は、予測タイプ別発生頻度を考慮してコードワードを割り当てたジョイントコーディングテーブルの一例を示す。表3では、前述した予測タイプのうち、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表3の例では、説明の便宜のために、2N×NよりN×2Nの発生頻度が高いと仮定する。表1の場合と比較するとき、表3の場合には予測タイプの発生頻度を考慮して2N×NインターモードとN×2Nインターモードに割り当てられるコードワードを変更する。具体的には、2N×Nインターモードの発生頻度がN×2Nインターモードの発生頻度より低いと仮定するとき、より多くの発生頻度を見せるN×2Nインターモードの場合により短いコードワード(01)を割り当て、発生頻度がより低い2N×Nインターモードの場合により長いコードワード(001)を割り当てる。
このとき、予測タイプの発生頻度をシグナリング順序及びコードワード割当の両方に反映することもできる。
表4は、予測タイプの発生頻度を考慮してシグナリング順序を調整してコードワードを割り当てた場合におけるジョイントコーディングテーブルの一例である。表4では、前述した予測タイプのうち、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表4の例では、説明の便宜のために、ダイレクトモードより2N×2Nインターモードの発生頻度が高く、2N×NよりN×2Nの発生頻度が高いと仮定する。したがって、2N×2Nインターモードの適用可否は、ダイレクトモードの適用可否より先に別個のシグナリングによって伝達される。ダイレクトモードの適用可否は、他の予測タイプと共に表4のジョイントコーディングテーブルを用いてシグナリングされ、このとき、2N×Nインターモードより高い発生頻度を有するN×2Nインターモードに、2N×Nインターモードのコードワード(001)より小さいコードワード(01)が割り当てられる。
一方、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードのうち、所定の予測モードに対しては、その適用可否を先に別個にシグナリングし、その他の予測タイプの適用可否に関する情報は、ジョイントコーディングによってシグナリングされるようにすることもできる。したがって、スキップモードの適用可否を別個にシグナリングし、マージモード及びダイレクトモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることができる。又は、マージモードの適用可否を別個にシグナリングし、スキップモード及びダイレクトモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることもできる。同様に、ダイレクトモードの適用可否を別個にシグナリングし、スキップモード及びマージモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることもできる。
また、スキップモード及びマージモードの適用可否を別個にシグナリングし、ダイレクトモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることができる。スキップモード及びダイレクトモードの適用可否を別個にシグナリングし、マージモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることができる。又は、マージモード及びダイレクトモードの適用可否を別個にシグナリングし、スキップモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることができる。
{スキップモード、ダイレクトモード、マージモード}の代わりに{スキップマージモード、マージモード}を使用する場合にも、スキップマージモードの適用可否を別個にシグナリングし、マージモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることができる。又は、マージモードの適用可否を別個にシグナリングし、(マージ)スキップモードの適用可否を他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングすることができる。
表5は、周辺ブロックの動き情報を現在ブロックの動き情報として使用する予測モードのうち、所定の予測モードの適用可否と他の予測タイプの適用可否をシグナリングするときに用いられるジョイントコーディングテーブルの一例を示す。表5では、{スキップモード、ダイレクトモード、マージモード}を使用する場合として、ダイレクトモードの適用可否が他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングされる例を説明する。表5でも、前述した予測タイプのうち、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表5によると、符号化器は、現在ブロックに適用された予測タイプに対応するコードワードを送信することによって、現在ブロックに対する予測タイプを指示することができる。
このとき、符号化器は、各予測タイプの発生頻度によってコードワードを割り当てることもできる。
表6は、2N×2Nインターモードがダイレクトモードより発生頻度が高いと仮定するとき、発生頻度を考慮してコードワードを割り当てるジョイントコーディングテーブルの一例である。
表6を参照すると、発生頻度がより高い2N×2Nインターモードに、ダイレクトモードのコードワード(01)より小さいコードワード(1)が割り当てられる。
表7は、インターモードのうち、2N×Nインターモードの発生頻度がN×2Nインターモードの発生頻度より低いと仮定するとき、発生頻度を考慮してコードワードを割り当てる例を示す。
表7を参照すると、発生頻度がより高い2N×2Nインターモードに、ダイレクトモードのコードワード(01)より小さいコードワード(1)が割り当てられ、N×2Nインターモードには、2N×Nインターモードに対するコードワード(0001)より小さいコードワード(001)が割り当てられる。
図6は、本発明が適用されるシステムで符号化器がシグナリングする方法の他の例を概略的に説明する図である。図6では、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードとして、ダイレクトモードが適用されない場合、即ち、{(マージ)スキップモード、マージモード}を使用し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。したがって、符号化ユニットより小さい各パーティションサイズに対してマージモードの適用可否がシグナリングされない。
図6の実施例を図3又は図5の場合と比較すると、周辺ブロックの動き情報を現在ブロックの動き情報として使用する予測モードの適用可否に関する情報の数が一つ減るようになる。即ち、図3又は図5の場合において、ダイレクトモードがない場合と同じである。図3又は図5の場合において、ダイレクトモードを除外すると、以後にシグナリングされるインター/イントラモードに対するシグナリングオーバーヘッドが減少するようになる。したがって、図6の場合のように、(マージ)スキップモード及びマージモードを使用する場合には、図3又は図5の場合と比較するとき、シグナリングオーバーヘッドを減らすことができる。
{(マージ)スキップモード、マージモード}を使用する場合にも、{スキップモード、ダイレクトモード、マージモード}を使用する場合と同一の方式で予測タイプをシグナリングすることができる。例えば、図6の例でも、(マージ)スキップモード及びマージモード以外の予測タイプのうち、選択比率(発生頻度)が高い予測モード又は予測タイプをモードAとすると、モードAの適用可否に関する情報(modeA_flag)のシグナリングを他の予測タイプ(2N×2Nインターモード,…,N×Nイントラモード)の適用可否に関する情報より先にシグナリングすることができる。また、モードAが適用されない場合には他の予測タイプ(2N×2Nインターモード,…,N×Nイントラモード)の適用可否をジョイントコーディングによってシグナリングすることができる。
表8は、図6に示すように、予測タイプ情報にコードワードを割り当てたジョイントコーディングテーブルの一例である。表8では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表8の例では、説明の便宜のために、2N×2N、2N×N、N×2N、N×Nのパーティションサイズを有するインター予測モードのうち最も発生頻度が高い予測タイプ、即ち、モードAが2N×2Nインターモードと仮定する。したがって、2N×2Nインターモードの適用可否は、別個のシグナリングによって予め送信される。
このとき、図6の例のように、予測タイプの発生頻度を考慮して送信順序を定めることと別個に、発生頻度(選択比率)を考慮して予測タイプにコードワードを割り当てるようにすることもできる。
表9は、{(マージ)スキップモード、マージモード}を使用する場合であり、予測タイプ発生頻度を考慮してコードワードを割り当てた場合に対するジョイントコーディングテーブルの一例である。表9では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表9では、N×2Nインターモードの発生頻度が2N×Nインターモードの発生頻度より高い場合を仮定し、N×2Nインターモードにより短いコードワードを割り当てている。
また、{(マージ)スキップモード、マージモード}を使用する場合にも、予測タイプの発生頻度をシグナリング順序及びコードワード割当の両方に反映することができる。
表10は、{(マージ)スキップモード、マージモード}を使用する場合であり、予測タイプ発生頻度を考慮してシグナリング順序を調整してコードワードを割り当てた場合に対するジョイントコーディングテーブルの一例である。表10では、前述した予測タイプのうち、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表10の例では、説明の便宜のために、2N×2Nインターモードの発生頻度は、2N×2N、2N×N、N×2N、N×Nインターモードのうち最も高く、2N×Nインターモードは、N×2Nインターモードより発生頻度が高いと仮定する。したがって、(マージ)スキップモード、マージモード、2N×2Nインターモードの適用可否は先に別個のシグナリングによって伝達される。他の予測タイプの適用可否は、表10のジョイントコーディングテーブルを用いてシグナリングされ、このとき、2N×Nインターモードより高い発生頻度を有するN×2Nインターモードに2N×Nインターモードのコードワード(01)より小さいコードワード(1)が割り当てられる。
一方、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードとして{スキップモード、ダイレクトモード、マージモード}を使用する場合、ダイレクトモードとマージモードとを統合して用いることもできる。ダイレクトモード及びマージモードは、動き情報を周辺ブロックから導出した後、スキップモードと違ってレジデュアル情報を送信するという点で互いに類似する。ダイレクトモードとマージモードとを統合する場合には、ダイレクトモードとマージモードとを統合したモード(以下、説明の便宜のために、‘統合モード’という)の適用可否に関する情報をシグナリングした後にシグナリングされる、インター/イントラモードの適用可否に関する情報のシグナリングオーバーヘッドを減らすようになる。統合モードを適用する場合にも、シグナリング順序の調整、コードワード割当の調整などを前述と同様に実行することができる。
図7及び図8は、本発明が適用されるシステムで符号化器がシグナリングする方法の他の例を概略的に説明する図である。図7及び図8では、統合モードを使用し、マージモードは符号化ユニット単位で適用される場合を例示して説明する。したがって、符号化ユニットより小さい各パーティションサイズにマージモードの適用可否がシグナリングされない。
図7の例では、スキップモードの適用可否をシグナリングした後、スキップモードを適用しない場合には、残りの予測タイプのうち最も発生頻度が高い予測タイプの適用可否を優先的にシグナリングする。
図7では、モードAがスキップモードを除いた残りの予測タイプのうち最も高い発生頻度を有する予測タイプと仮定した場合を例示している。したがって、符号化器は、スキップモードを適用しない場合にはモードAの適用可否をシグナリングし、モードAを適用しない場合には残りの予測タイプ(予測モード/パーティションサイズを含む)のうち、どの予測タイプが適用されるかをジョイントコーディングを用いてシグナリング(pred_mode_partition_signaling)する。
表11は、図7の例に係るジョイントコーディングテーブルである。
図7及び表11の例では、スキップモードの適用可否がシグナリングされた後、スキップモードが適用されない場合には、最も高い発生頻度を有する予測タイプとして統合モードの適用可否をシグナリングする。統合モードが適用されない場合には、表11のように、残りの予測タイプの予測モードとパーティションなどに関する情報とをジョイントコーディングした結果を用いてどの予測タイプが適用されるかをシグナリングする。一方、図7及び表11の例では、スキップモードを除いた最も高い発生頻度を有する予測タイプが統合モードである場合を例示したが、これは説明の便宜のための例示に過ぎず、本発明はこれに限定されるものではない。例えば、2N×2Nインターモードの発生頻度が統合モードより高い場合には、2N×2NインターモードをモードAと決定し、2N×2Nインターモードの適用可否を別個に予めシグナリングした後、統合モードの適用可否を他の予測タイプの適用タイプと共にジョイントコーディングを用いてシグナリングするようにすることもできる。
図8では、図7と違って、スキップモードが適用されない場合、統合モードの適用可否を別個に予めシグナリング(merge_direct_flag)し、統合モードが適用されない場合、他の予測タイプのうち最も発生頻度が高い予測タイプ(モードA)の適用可否を別個に予めシグナリング(modeA_flag)する方法を例示している。モードAが適用されない場合、図7のように、他の予測モードのうち、どの予測モードが適用されるかをジョイントコーディングを用いてシグナリング(pred_mode_partition_signaling)する。
表12は、図8の例に係るジョイントコーディングテーブルである。
表12の例では、説明の便宜のために、2N×2NインターモードがモードAと仮定する。したがって、2N×2Nインターモードの適用可否は、別個に予めシグナリングされることができる。
一方、前述したように、シグナリング順序を調整することと別個にジョイントコーディングを実行する場合、予測タイプ別発生頻度(選択比率)を考慮してコードワードを割り当てることができる。
表13は、統合モードを使用する場合であり、予測タイプの発生頻度を考慮してコードワードを割り当てた場合に対するジョイントコーディングテーブルの一例である。表13では、前述した予測タイプのうち、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表13では、N×2Nインターモードの発生頻度が2N×Nインターモードの発生頻度より高い場合を例示して説明する。したがって、表13の例では、N×2Nインターモードに対して2N×Nインターモードに割り当てられたコードワード(001)より短いコードワード(01)を割り当てている。
さらに、予測タイプ別発生頻度を考慮し、図8のようにシグナリングの順序を調整し、表13のようにコードワードを割り当てることもできる。
表14は、統合モードを使用する場合であり、予測タイプの発生頻度を考慮してシグナリングの順序を調整してコードワードを割り当てる場合に対するジョイントコーディングテーブルの一例である。表14では、前述した予測タイプのうち、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。
表14の例では、説明の便宜のために、図8のモードAに該当する予測モードが2N×2Nインターモードであり、N×2Nインターモードの発生頻度が2N×Nインターモードの発生頻度より高いと仮定する。したがって、統合モードの適用可否に対するシグナリング後、統合モードが適用されない場合には、2N×2Nインターモードの適用可否は別個のシグナリングによってシグナリングされる。また、N×2Nインターモードには2N×Nインターモードに割り当てられたコードワード(01)より短いコードワード(1)が割り当てられる。
また、統合モードを使用する場合にも、スキップモード以外の予測タイプに対してはどの予測タイプが適用されるかをジョイントコーディングによって一度にシグナリング(pred_mode_partition_signaling)することもできる。即ち、統合モードを含む各予測タイプの各々に対してコードワードを割り当て、適用される予測タイプに対応するコードワードをシグナリングするようにすることができる。
表15は、統合モードを使用する場合であり、スキップモード以外の予測タイプの各々に対してコードワードを割り当て、現在ブロックに適用される予測タイプ(予測モード、パーティションサイズ等)の情報を送信するときに用いられるジョイントコーディングテーブルの一例を概略的に示す。
表15では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有し、マージモードが符号化ユニット単位で適用される場合を例示して説明する。表15を参照すると、符号化器は、各予測モード、即ち、統合モード(マージ/ダイレクトモード)、2N×2N、N×Nイントラモード、2N×2N、2N×N、N×2N、N×Nインターモードの各々にコードワードを割り当て、現在ブロックに適用される予測タイプのコードワードを送信することができる。
このとき、符号化器は、予測タイプ別発生頻度(選択比率)を考慮してコードワードを割り当てることもできる。
表16は、表15の例で予測タイプ別発生頻度を考慮してコードワードを割り当てる一例を示す。
表16の例では、説明の便宜のために、N×2Nインターモードの発生頻度が2N×Nインターモードの発生頻度より高いと仮定する。したがって、表16の例では、表15の例と比較するとき、N×2Nインターモードに対して2N×Nインターモードに対するコードワード(0001)より短いコードワード(001)を割り当てている。
以上、説明の便宜のために、インターモードに対して{2N×2N、2N×N、N×2N、N×N}のパーティションのみが適用される場合を例示して説明したが、インターモードに対する全体パーティションを考慮して、現在ブロックに対する予測タイプをシグナリングすることもできる。
表17は、2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N、nR×2Nのパーティションを全部考慮する場合、現在ブロックに対する予測ブロックのシグナリングに用いられることができるジョイントコーディングテーブルの一例を示す。
表17を参照すると、イントラモードの各パーティションサイズとインターモードの各パーティションサイズを予測タイプによって指示することができる。したがって、予測モード及びパーティションサイズをジョイントコーディングして現在ブロックに対する予測タイプを一度にシグナリングすることができる。このとき、前述したように、予測タイプ別に発生頻度を考慮してコードワードを割り当てることもできる。
一方、表17の例で、周辺ブロックの動き情報を現在ブロックの動き情報としてそのまま用いる予測モードの場合、例えば、{スキップモード、ダイレクトモード、マージモード}又は{(マージ)スキップモード、マージモード}の場合には該当モードの適用可否を他の条件により推定したり(infer)、予め別個のシグナリングによって適用可否を送信したりすることもできる。また、表17の例は、マージモードが前述した他の例のように符号化ユニット単位で適用される場合を仮定したものであり、各パーティション別に再びマージモードの適用可否をシグナリングしない。
また、各予測タイプのシグナリングに前述したような追加情報、例えば、スライスタイプ又は分割可否に関する情報がシグナリングされることもできる。この場合、これらの追加情報に基づいて予測タイプが区別されるようにすることもできる。例えば、Iスライスの場合、予測タイプが0の値を有すると、2N×2Nイントラモードを指示し、B又はPスライスの場合、予測タイプが0の値を有すると、2N×2Nインターモードを指示することもできる。
また、互いに異なる予測モード/パーティションを有する予測タイプに対して互いに異なるコードワードを割り当てることによって、各予測タイプを区別することもできる。
一方、以上ではマージモードが符号化ユニット単位で適用される場合を説明したが、マージモードは予測ユニット単位で適用されることもできる。例えば、前述した各例の場合において、インター予測モードの各パーティションに対してマージモードが適用されるか否かをシグナリングすることによって、予測ユニット単位でマージモードが実行される場合に対して前述した本発明の内容をそのまま適用することができる。
以下、予測ユニット単位でマージモードが実行される場合について本発明の適用方法を具体的に説明する。
図9は、予測ユニット単位でマージモードが実行される場合、予測に関する情報をシグナリングする方法の一例を概略的に示す図である。図9では、周辺ブロックの動き情報を現在ブロックの動き情報として使用するモードとして{スキップモード、ダイレクトモード、マージモード}を使用する場合を例示して説明する。
図9の例では、図3の例と違って、スキップモード及びダイレクトモードが適用されない場合、現在ブロックにどのインター予測モード及びパーティションが適用されるかを指示し、該当パーティションがマージされるか否かをシグナリングする。スキップモード及びダイレクトモードの適用可否は別個に予めシグナリングし、スキップモード及びダイレクトモードが適用されない場合、どの予測モード/パーティションが適用されるかは、予測モードの指示とパーティションサイズに関する情報をジョイントコーディングしてシグナリングする。インター予測のパーティション別にマージモードを適用するか否かはマージモードによって指示され、このとき、マージモードが適用されない場合に実行されるインター予測モードを、説明の便宜のために、ノーマルインターモード(normal inter mode)という。
表18は、図9の例によって、現在ブロックの予測モード及びパーティション情報をジョイント符号化する一例を示す。表18では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表18を参照すると、符号化器は、現在ブロックに適用される予測タイプをコードワードをシグナリングすることによって復号化器に指示することができる。
一方、図9及び表18のように、所定のモードに関する情報を先にシグナリングし、その後、予測モードとパーティションサイズに関する情報とをシグナリングする場合、各予測タイプ別発生頻度を考慮してコードワードを割り当てるようにすることができる。
図10は、予測ユニット単位でマージモードを適用する場合、各予測タイプの発生頻度を概略的に示す図である。図10では、RAHE、LDHE、RALC、LDLCの場合、スキップモード、マージモード、ダイレクトモード、イントラモードの各パーティションサイズ、インターモードの各パーティションサイズに対する分布を示している。
図10を参照すると、スキップモードの頻度分布が多く、ダイレクトモードの場合は2N×2Nインターモードより発生頻度が少ない。したがって、この場合には図9に示すシグナリングの順序において、ダイレクトモードが適用されるか否かを示す情報をシグナリングするより、2N×2Nインターモードが適用されるか否かを示す情報を先にシグナリングする方がさらに効率が高い。
図10の例では、{スキップモード、ダイレクトモード、マージモード}を使用し、パーティションサイズのうち2N×2N、2N×N、N×2N、N×Nの発生頻度を測定したが、{(マージ)スキップモード、マージモード}を使用する場合及び/又は全てのパーティションサイズを使用する場合にも同様に、各予測モード及びパーティションサイズの発生頻度を考慮することができ、これに基づいてシグナリングの順序を調整することができる。
図11は、本発明が適用されるシステムで符号化器がシグナリングする方法の一例を概略的に説明する図である。図11では、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードとして{スキップモード、ダイレクトモード、マージモード}を使用する。
図10を参照すると、ダイレクトモードより高い選択比率(発生頻度)を有する予測モード/パーティションサイズが存在することができる。したがって、選択比率が高い他の予測モード(予測モード/パーティションサイズ)の適用可否が先に判断されるようにシグナリングすることが送信オーバーヘッドの側面で有利である。
例えば、ダイレクトモードより高い発生頻度を有する予測モード/パーティションサイズをモードAとすると、ダイレクトモードの適用可否に関する情報よりモードAの適用可否に関する情報を先に送信するようにすることができる。
したがって、図11の例では、符号化器がモードAの適用可否に関する情報をダイレクトモードの適用可否に関する情報より先にシグナリングする。具体的に、符号化器は、現在ブロックにスキップモードが適用されるか否かを示す情報(skip_flag)を先にシグナリングし、スキップモードが適用されない場合にはモードAが適用されるか否かを示す情報(modeA_flag)をシグナリングする。
モードAが適用されない場合、符号化器は、ダイレクトモードと共に残りの予測モード/パーティションサイズのうちいずれが現在ブロックに適用されるかを指示する情報(pred_mode_partition_signaling)をシグナリングする。
表19は、図11に示すように、予測タイプ情報にコードワードを割り当てたジョイントコーディングテーブルの一例である。表19では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表19の例では、説明の便宜のために、モードAが2N×2Nインターモードと仮定する。したがって、2N×2Nインターモードは、ジョイントコーディングテーブルを用いずに先にシグナリングされ、ダイレクトモードの適用可否は、他の予測タイプと共にジョイントコーディングテーブルを用いてシグナリングされる。
一方、図11の例のように、予測タイプの発生頻度を考慮して送信順序を変更することと別個に、予測タイプの発生頻度を考慮して予測タイプにコードワードを割り当てるようにすることもできる。
表20は、予測タイプ別発生頻度を考慮してコードワードを割り当てたジョイントコーディングテーブルを示す。表20では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有すると仮定した場合を例示して説明する。
表20の例では、説明の便宜のために、2N×NよりN×2Nの発生頻度が高いと仮定する。表20の場合には予測タイプの発生頻度を考慮して2N×NインターモードとN×2Nインターモードとに割り当てられるコードワードを変更する。具体的に、2N×Nインターモードの発生頻度がN×2Nインターモードの発生頻度より低いと仮定するとき、より多くの発生頻度を示すN×2Nインターモードの場合にはより短いコードワード(01)を割り当て、発生頻度がより低い2N×Nインターモードの場合にはより長いコードワード(001)を割り当てることができる。
このとき、予測タイプの発生頻度をシグナリング順序及びコードワード割当の両方に反映することもできる。
表21は、予測タイプ発生頻度を考慮してシグナリング順序を調整してコードワードを割り当てた場合に対するジョイントコーディングテーブルの一例である。表21では、説明の便宜のために、インター予測モードで{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表21の例では、説明の便宜のために、ダイレクトモードより2N×2Nインターモードの発生頻度が高く、2N×NよりN×2Nの発生頻度が高いと仮定する。したがって、2N×2Nインターモードの適用可否は、ダイレクトモードの適用可否より先に別個のシグナリングによって伝達される。ダイレクトモードの適用可否は、他の予測タイプと共に表21のジョイントコーディングテーブルを用いてシグナリングされ、このとき、2N×Nインターモードより高い発生頻度を有するN×2Nインターモードに、2N×Nインターモードのコードワード(001)より小さいコードワード(01)が割り当てられる。
一方、前述したように、予測ユニット単位でマージモードを実行する場合にも、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードのうち、所定の予測モードに対しては、その適用可否を先に別個にシグナリングし、その他の予測タイプの適用可否に関する情報は、ジョイントコーディングによってシグナリングされるようにすることができる。例えば、{スキップモード、ダイレクトモード、マージモード}又は{(マージ)スキップモード、マージモード}のうち、スキップモードの適用可否を別個に予めシグナリングし、ダイレクトモード又はマージモードの適用可否は、残りの予測タイプの適用可否と共にジョイントコーディングを用いてシグナリングするようにすることができる。
表22は、{スキップモード、ダイレクトモード、マージモード}を使用する場合であり、ダイレクトモードの適用可否が他の予測タイプの適用可否と共にジョイントコーディングによってシグナリングされる例を説明する。具体的には、ダイレクトモードとインターモード/イントラモードとに対する予測タイプのうち、いずれか一つの適用可否をフラグによって先にシグナリングするのではなく、ダイレクトモードを含む予測タイプに割り当てられたコードワードによって一度に区別してシグナリングする。表22でも、説明の便宜のために、インター予測モードで{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表22によると、符号化器は、現在ブロックに適用された予測タイプに対応するコードワードを送信することによって、現在ブロックに対する予測タイプを指示することができる。
このとき、符号化器は、各予測タイプの発生頻度によってコードワードを割り当てることもできる。
表23は、2N×2Nインターモードがダイレクトモードより発生頻度が高いと仮定するとき、発生頻度を考慮してコードワードを割り当てるジョイントコーディングテーブルの一例である。
表23を参照すると、発生頻度がより高い2N×2Nインターモードにダイレクトモードのコードワード(01)より小さいコードワード(1)が割り当てられる。
また、表24は、インターモードのうち、2N×Nインターモードの発生頻度がN×2Nインターモードの発生頻度より低いと仮定するとき、発生頻度を考慮してコードワードを割り当てる例を示す。
表24を参照すると、発生頻度がより高い2N×2Nインターモードにダイレクトモードのコードワード(01)より小さいコードワード(1)が割り当てられ、N×2Nインターモードには2N×Nインターモードに対するコードワード(0001)より小さいコードワード(001)が割り当てられる。
前述した図11及び表19乃至表24の例で、マージモードが予測ユニット単位で適用されることができるため、モードAが適用されるものとしてシグナリングした後に現在ブロックにマージモードが適用されるか否かをシグナリング(merge_flag)することもできる。表19乃至表24によってダイレクトモードでないインター予測モードが指示された場合にも、現在ブロックにマージモードが適用されるか否かをシグナリングすることもできる。また、特定のマージモードの選択比率が高い場合にはモードA自体をマージモードに設定することもできる。
図12は、本発明が適用されるシステムで符号化器がシグナリングする方法の他の例を概略的に説明する図である。図12では、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードとして、ダイレクトモードが適用されない場合、即ち、{(マージ)スキップモード、マージモード}を使用し、マージモードが予測ユニット単位で適用される場合を例示して説明する。
図12の実施例を図9又は図11の場合と比較すると、周辺ブロックの動き情報を現在ブロックの動き情報として使用する予測モードの適用可否に関する情報の数が一つ減るようになる。このように図9又は図10の場合において、ダイレクトモードを除外すると、以後にインター/イントラモードに関する情報をシグナリングするとき、オーバーヘッドを減少させることができる。
{(マージ)スキップモード、マージモード}を使用する場合にも、{スキップモード、ダイレクトモード、マージモード}を使用する場合と同一の方式で予測タイプをシグナリングすることができる。例えば、図12の例でも、(マージ)スキップモード以外の予測タイプのうち、選択比率(発生頻度)が高い予測モード又は予測タイプをモードAとすると、モードAの適用可否に関する情報(modeA_flag)のシグナリングを他の予測タイプ(2N×2Nインターモード,…,N×Nイントラモード)の適用可否に関する情報より先にシグナリングすることができる。また、モードAが適用されない場合には他の予測タイプ(2N×2Nインターモード,…,N×Nイントラモード)の適用可否をジョイントコーディングによってシグナリングすることができる。
表25は、図12に示すように、予測タイプ情報にコードワードを割り当てたジョイントコーディングテーブルの一例である。表25では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表25の例では、説明の便宜のために、2N×2N、2N×N、N×2N、N×Nのパーティションサイズを有するインター予測モードのうち最も発生頻度が高い予測タイプ、即ち、モードAが2N×2Nインターモードと仮定する。したがって、2N×2Nインターモードの適用可否は、別個のシグナリングによって予め送信される。
このとき、図12の例のように、予測タイプの発生頻度を考慮して送信順序を定めることと別個に、発生頻度(選択比率)を考慮して予測タイプにコードワードを割り当てるようにすることもできる。
表26は、{(マージ)スキップモード、マージモード}を使用する場合であり、予測タイプ発生頻度を考慮してコードワードを割り当てた場合に対するジョイントコーディングテーブルの一例である。表26では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表26では、N×2Nインターモードの発生頻度が2N×Nインターモードの発生頻度より高いと仮定する。したがって、N×2Nインターモードに2N×Nインターモードに対するコードワード(001)より短いコードワード(01)を割り当てている。
また、{(マージ)スキップモード、マージモード}を使用する場合にも、予測タイプの発生頻度をシグナリング順序及びコードワード割当の両方に反映することができる。
表27は、{(マージ)スキップモード、マージモード}を使用する場合であり、予測タイプ発生頻度を考慮してシグナリング順序を調整してコードワードを割り当てた場合に対するジョイントコーディングテーブルの一例である。表27では、説明の便宜のために、インター予測モードが{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表27の例では、説明の便宜のために、2N×2Nインターモードの発生頻度は、2N×2N、2N×N、N×2N、N×Nインターモードのうち最も高く、2N×Nインターモードは、N×2Nインターモードより発生頻度が高いと仮定する。したがって、(マージ)スキップモード、マージモード、2N×2Nインターモードの適用可否は別個のシグナリングによって伝達されることができる。他の予測タイプの適用可否は、表27のジョイントコーディングテーブルを用いてシグナリングされ、このとき、2N×Nインターモードより高い発生頻度を有するN×2Nインターモードに2N×Nインターモードのコードワード(01)より小さいコードワード(1)が割り当てられる。
前述した図12及び表25乃至表27の例で、マージモードが予測ユニット単位で適用されることができるため、現在ブロックにマージモードが適用されるか否かを別個にシグナリング(merge_flag)することもできる。例えば、表25乃至表27によって現在ブロックにどのインター予測モード/パーティションが適用されるかがシグナリングされた後、現在ブロックにマージモードが適用されるか否かがシグナリングされることもできる。また、特定のマージモードの選択比率が高い場合にはモードA自体をマージモードに設定することもできる。
一方、予測ユニット単位でマージモードが適用される場合にも、{スキップモード、ダイレクトモード、マージモード}を使用する場合にダイレクトモードとマージモードとを統合し、前述したような統合モードを用いることができる。ダイレクトモード及びマージモードは、動き情報を周辺ブロックから導出した後、スキップモードと違ってレジデュアル情報を送信するという点で互いに類似する。統合モードを用いると、スキップモード及び統合モード以外のインター/イントラモードの適用可否に関する情報のシグナリングオーバーヘッドを減らすことができるようになる。統合モードを適用する場合にも、シグナリング順序の調整、コードワードの割当調整などを前述と同様に実行することができる。
図13は、本発明が適用されるシステムで符号化器がシグナリングする方法の他の例を概略的に説明する図である。図13では、統合モードを使用し、マージモードは予測ユニット単位で適用される場合を例示して説明する。
図13の例では、スキップモードの適用可否をシグナリングした後、スキップモードを適用しない場合には、残りの予測タイプのうち最も発生頻度が高い予測タイプの適用可否を優先的にシグナリングする。即ち、図13では、モードAがスキップモードを除いた残りの予測タイプのうち最も高い発生頻度を有する予測タイプと仮定する。このとき、モードAは統合モードであってもよい。
したがって、符号化器は、スキップモードを適用しない場合にはモードAの適用可否をシグナリングし、モードAを適用しない場合には残りの予測タイプのうち、どの予測タイプが適用されるかをジョイントコーディングを用いてシグナリング(pred_mode_partition_signaling)する。
表28は、図13の例に係るジョイントコーディングテーブルである。
図7及び表11の例では、スキップモードを除いた最も高い発生頻度を有する予測タイプが統合モードである場合を例示したが、これは説明の便宜のための例示に過ぎず、本発明はこれに限定されるものではない。例えば、2N×2Nインターモードの発生頻度が統合モードより高い場合には、2N×2NインターモードをモードAと決定し、2N×2Nインターモードの適用可否を別個に予めシグナリングした後、統合モードの適用可否を他の予測タイプの適用タイプと共にジョイントコーディングを用いてシグナリングするようにすることもできる。
一方、統合モードを用いる場合にも、シグナリング順序を調整することと別個に予測タイプ別発生頻度(選択比率)を考慮してコードワードを割り当てることができる。
表29は、統合モードを使用する場合であり、予測タイプの発生頻度を考慮してコードワードを割り当てた場合に対するジョイントコーディングテーブルの一例である。表29では、説明の便宜のために、インター予測モードで{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。
表29では、N×2Nインターモードの発生頻度が2N×Nインターモードの発生頻度より高い場合を例示して説明する。したがって、表29の例では、N×2Nインターモードに対して2N×Nインターモードに割り当てられたコードワード(001)より短いコードワード(01)を割り当てている。
統合モードを適用する場合にも、統合モードを含む各予測タイプの各々に対してコードワードを割り当て、適用される予測タイプに対応するコードワードをシグナリングするようにすることができる。
表30は、統合モードを使用する場合であり、スキップモード以外の予測タイプの各々に対してコードワードを割り当て、現在ブロックに適用される予測タイプ(予測モード、パーティションサイズ等)の情報を送信するときに用いられるジョイントコーディングテーブルの一例を概略的に示す。
表30では、説明の便宜のために、インター予測モードで{2N×2N、2N×N、N×2N、N×N}のパーティションを有する場合を例示して説明する。表30を参照すると、符号化器は、各予測モード、即ち、統合モード(マージ/ダイレクトモード)、2N×2N、N×Nイントラモード、2N×2N、2N×N、N×2N、N×Nインターモードの各々にコードワードを割り当て、現在ブロックに適用される予測タイプのコードワードを送信することができる。
このとき、符号化器は、予測タイプ別発生頻度(選択比率)を考慮してコードワードを割り当てることができる。表31は、表30の例で予測タイプ別発生頻度を考慮してコードワードを割り当てる一例を示す。
表31の例では、説明の便宜のために、N×2Nインターモードの発生頻度が2N×Nインターモードの発生頻度より高いと仮定する。したがって、表31の例では、表30の例と比較するとき、N×2Nインターモードに対して2N×Nインターモードに対するコードワード(0001)より短いコードワード(001)を割り当てている。
一方、表28乃至表31の場合には予測ユニット単位でマージモードが適用される。したがって、シグナリング順序を調整する場合(表28、表31)やマージモードを含む統合モードを他の予測タイプと同等に考慮する場合(表30)には、スキップモード及び統合モード以外にインター予測モード/パーティションサイズが現在ブロックに適用される場合に、別個にマージモードの適用可否がシグナリングされなくてもよい。一方、シグナリング順序の調整なく発生頻度を考慮してコードワード割当をする場合である表29によって予測タイプに関する情報がシグナリングされる場合には、インター予測モード/パーティションサイズのうちいずれか一つが現在ブロックに適用されることがシグナリングされた後、現在ブロックにマージモードが適用されるか否かに関する情報(merge_flag)がシグナリングされることができる。
以上、説明の便宜のために、インターモードに対して{2N×2N、2N×N、N×2N、N×N}のパーティションのみが適用される場合を例示して説明したが、インターモードに対する全てのパーティションを考慮して、現在ブロックに対する予測タイプをシグナリングすることもできる。
表32は、2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N、nR×2Nのパーティションを全部考慮する場合、現在ブロックに対する予測ブロックのシグナリングに用いられることができるジョイントコーディングテーブルの一例を示す。
表32を参照すると、イントラモードの各パーティションサイズとインターモードの各パーティションサイズを予測タイプによって指示することができる。したがって、予測モード及びパーティションサイズをジョイントコーディングして現在ブロックに対する予測タイプを一度にシグナリングすることができる。このとき、前述したように、予測タイプ別に発生頻度を考慮してコードワードを割り当てることもできる。
一方、表32の例で、周辺ブロックの動き情報を現在ブロックの動き情報としてそのまま用いる予測モードの場合、例えば、{スキップモード、ダイレクトモード、マージモード}又は{(マージ)スキップモード、マージモード}の場合には、該当モードの適用可否を他の条件により推定したり(infer)、予め別個のシグナリングによって適用可否を送信したりすることもできる。また、表32は、マージモードが前述した他の例のように予測ユニット単位で適用される場合を仮定したものであり、各パーティション別に再びマージモードの適用可否がシグナリングされることができる。
したがって、表17の場合と表32の場合とを共に適用し、符号化ユニット単位でマージ可否を別個のシグナリングで送信することもでき、符号化ユニット単位でマージモードが適用されない場合には、表32のように、現在ブロックに対する予測タイプをシグナリングする間、又はシグナリングした後にパーティション(予測ユニット)単位でマージモードの適用可否(merge_flag)をシグナリングすることができる。
各予測タイプのシグナリングに前述した追加情報、例えば、スライスタイプ又は分割可否に関する情報がシグナリングされることもできる。この場合、これらの追加情報に基づいて予測タイプが区別されるようにすることもできる。例えば、Iスライスの場合、予測タイプが0の値を有すると、2N×2Nイントラモードを指示し、B又はPスライスの場合、予測タイプが0の値を有すると、2N×2Nインターモードを指示するということもできる。
また、互いに異なる予測モード/パーティションを有する予測タイプに対して互いに異なるコードワードを割り当てることによって、各予測タイプを区別することもできる。
前述したように、インタースライスで予測モードに対するシグナリングスキーム(scheme)方法を修正して送信効率を上げることができる。例えば、インタースライスに対する予測モード及びパーティションタイプをユナリタイプ(unary-type)のコードワードでジョイントコーディングすることができる。このとき、前述したように、予測モード、パーティション(サイズ)などの予測に関する情報を予測タイプということができる。予測タイプは、予測モード、パーティション(サイズ)以外にも、分割可否及びスライスタイプなどに関する情報をさらに含むこともできる。
各予測モードのポーション(割合)(portion)、即ち、発生頻度(選択頻度)によって予測タイプを示すコードワードを再整列(rearrange)することもできる。
予測モード及びパーティションタイプ(パーティションサイズ)は、所定のシンタックス要素(syntax element)によって送信されることができる。例えば、前述したように、スキップモードの適用可否は、スキップフラグ(skip_flag)によってシグナリングすることができる。また、マージモードの適用可否は、マージフラグ(merge_flag)によってシグナリングされることができ、ダイレクトモードの適用可否は、ダイレクトモードフラグ(direct_flag)によってシグナリングされることができ、ダイレクトモードとマージモードとの統合モードの適用可否は、統合モードフラグ(merge_direct_flag)によって適用可否がシグナリングされることができる。
一方、特定のフラグなどでシグナリングされる予測モードが現在ブロックに適用されない場合には、現在ブロックの予測モードとパーティションサイズなどを別個にシグナリングすることができる。
表33は、符号化ユニットレベル(符号化ユニットパラメータセット)で予測モード及びパーティションタイプ(パーティションサイズ)をシグナリングする例を概略的に示す。
表33の例では、予測モード、パーティション情報などをジョイントコーディングし、対応するコードワードを送信する方式でシグナリングされることができる。このとき、表33の例のように、予測モード及びパーティションタイプ(サイズ)を別個のシンタックス要素を用いてシグナリングすることができる。表33で、予測モードは、pred_modeにより指示され、インターモードのパーティションサイズは、inter_partitioning_idcにより指示されることができる。
一方、前述したように、予測モード及びパーティション情報を含むシグナリングという意味でpred_mode_partition_signalingと呼ぶこともあり、予測モードと分割(パーティション)モードなどの情報を含む情報とを予測タイプと呼ぶように、シグナリングされるシンタックス要素を単にpred_typeと呼ぶこともある。pred_mode_partition_signalingやpred_typeの場合には、関連した情報(予測モード、パーティションサイズ等)がジョイントコーディングにより一つのコードワードで特定されてシグナリングされることができる。
表34は、前述したコードワードの一例を概略的に示す。
それぞれの予測モードに対するシグナリング方法として図3に示すシグナリング順序を用いる場合には、前述したように、スキップモード、マージモード、ダイレクトモードの適用可否が順にシグナリングされ、これらの予測モードが適用されない場合には、残りの予測タイプのうちどの予測タイプが適用されるかがジョイントコーディングを用いてシグナリングされる。これに対しては、図3で既に説明した通りである。
一方、表34を考慮すると、各予測モードに対するコードワードは、互いに異なる長さを有し、ソースコーディング理論によると、各コードワードの長さは発生確率のログ値の絶対値にほぼ比例する。したがって、符号化効率を上げるためには、最も頻繁なシンボルが最も短いコードワードを使用することがよい。
したがって、表34のコードワードを予測タイプによる発生頻度を考慮して再整列することによって、符号化/復号化を複雑にせずに符号化効率を上げることができる。
予測タイプ(予測モード)別発生確率を測定した例を図4で説明した。図4の例に対しては、前述したように、全ての予測タイプの発生回数に対して、2N×2Nインターモードがダイレクトモードよりポーション(割合)(portion)が大きく、N×2Nインターモードが2N×Nインターモードよりポーションが大きい。したがって、発生頻度、即ち、ポーションによって、2N×2Nインターモードに対するコードワードとダイレクトモードに対するコードワードとを互いにスイッチング(交換)し(switching)、N×2Nインターモードに対するコードワードと2N×Nインターモードに対するコードワードとを互いにスイッチングすることができる。
表35は、表34で各予測タイプに対するコードワードを詳述したように再整列したものである。
表34及び表35では、別個にシグナリングする予測タイプに対して0のコードワードを割り当てて優先的に区別する。その後、残りの予測タイプに対して再度コードワードを割り当てて一度にどの予測タイプが適用されるかを指示している。これに対して説明した内容は、図5乃至図8で説明した内容とあまり違いがない。
図3の例は、前述したように、符号化ユニット単位でマージモードが適用される例である。予測ユニット単位でマージモードが適用される例として、前述した図9がある。図9の例では、前述したように、インターモードのパーティション別にマージモード適用可否がシグナリングされることができる。
図10は、予測ユニット単位でマージモードが適用される場合、各予測タイプのポーション(発生頻度)を示すものであった。このように、予測ユニット単位でマージモードが適用される場合にも、発生頻度を考慮して予測タイプ別シグナリング順序を調整したり、コードワードを割り当てたりすることができ、これに対しては、図11乃至図13等で既に説明した通りである。
一方、図14は、復号化過程の一例を概略的に示す図である。図14を参照すると、予測データは、予測モード復号化過程と動き補償(Motion Compensation;MC)プレディクタ(predictor)生成過程を経るようになる。係数データ(coefficient data)は、係数データ復号化過程とレジデュアルデータ生成過程を経るようになる。その後、最終的に復号化されたイメージが生成される。
図15は、図14に示す予測モード復号化過程を説明する図である。図15では、周辺ブロックの動き情報を現在ブロックの動き情報として用いる予測モードとして{(マージ)スキップモード、マージモード}を適用する場合を例示して説明する。
インタースライスで予測と関連してモードに関する情報としてシグナリングされるものは、分割可否に関する情報、スキップモード適用可否に関する情報、マージモード適用可否に関する情報、インターモード/イントラモードの予測タイプのうちいずれが適用されるかに関する情報などがある。インターモード/イントラモードの予測タイプのうちいずれが適用されるかに関する情報は、インターモードの場合、パーティションサイズによって四つ(2N×2N、N×N、2N×N、N×2N)に分けることができ、イントラモードの場合、パーティションサイズによって二つ(2N×2N、N×N)に分けることができる。もちろん、インターモードの場合には、前述したように、2N×nU、2N×nD、nL×2N、nR×2Nのパーティションサイズをさらに有することができる。
予測モード復号化過程で、復号化器は、スプリットフラグ(split_flag)の指示によって符号化ユニットを分割し、その後、スキップフラグによってスキップモードを適用する。スキップモードが適用されない場合には、予測タイプを指示する情報(例えば、mode_and_partition)に基づいて現在ブロックに適用する予測タイプを決定する。このとき、インター予測モードが適用されると、マージフラグによって予測ユニット単位でマージモードの適用可否を決定することができる。また、N×Nパーティションサイズの場合は、インターモードかイントラモードかに関係なく現在符号化ユニットのサイズが最小(minimum)である場合にのみ存在するようにすることができる。
このとき、圧縮効率を上げるために、予測モードとパーティションに関する情報とを含む全ての予測タイプに対して、ジョイントコーディングを用いてシグナリングすることができる。
図16は、予測モード及びパーティション情報などをジョイントコーディングによってシグナリングする方法の一例を概略的に説明する図である。図16を参照すると、表36は、図16の例に係るジョイントコーディングテーブルの一例であり、ジョイントコーディング時に割り当てられる初期コードワードを示す。
表36のテーブルを初期状態(initial state)にし、シグナリング毎に該当ブロックに適用するよう選択されたモード(予測タイプ)を表36のテーブルで真上にあるモードとスイッチング(switching)(又はアダプティション(adaptation))することによって、特定のモード(予測タイプ)に対する選択比率が増加すると、これを反映して選択比率が増加するモードにより短いコードワードが割り当てられるようにすることができる。よく選択されるモードに短いコードワードが割り当てられることによって、圧縮効率を上げることができる。
このアダプティション(adaptation)は、各ブロックの深さ(depth)別に独立して行われることができる。即ち、符号化ユニットのサイズによって独立してアダプティションが実行されることができる。
このとき、ジョイントコーディングの範囲を変更して圧縮効果をさらに高めることができる。前述した内容で、ジョイントコーディングの対象は、分割(split)可否、スキップモード適用可否、2N×2Nマージモード適用可否、2N×2Nインターモード適用可否、2N×Nインターモード適用可否、N×2Nインターモード適用可否、N×Nインターモード適用可否、2N×2Nイントラモード適用可否、N×Nイントラモード適用可否などである。その他、2N×Nマージモード適用可否、N×2Nマージモード適用可否、N×Nマージモード適用可否なども、ジョイントコーディングの対象とすることができる。
図16によるシグナリング方法は、ジョイントコーディング後にコードワードアダプティション(又はスイッチング)によって圧縮効率を上げている。しかしながら、ジョイントコーディングをしない時は、固定的に少ない情報量のみでシグナリングされた要素(element)に対してアダプティション過程でコードワードがスイッチングされることで、より多くの情報量を送信しなければならない場合が発生することがある。例えば、分割可否に関する情報(split_flag)は、ジョイントコーディングをしない場合には、最初のステップでシグナリングされることで、1ビットの情報量で処理することができ、ジョイントコーディングを行う場合であっても、表36のように、初期(initial)値は、最も小さい情報量(最も短いコードワード)を使用することができる。しかしながら、コーディング過程でスキップモード又は2N×2Nマージモードなどが連続的に多く選択されると、分割可否を指示する情報(説明の便宜のために、分割モードを指示する情報という)の位置は後に移動してより長いコードワードが割り当てられる位置に置かれるようになる。したがって、以後に分割モードが選択されると、ビットの浪費が発生することがある。
図17は、このように分割モードに割り当てられるコードワードが長くなってビットの浪費が発生する場合の例を概略的に説明する図である。図17を参照すると、初期に分割(split)モードには1のコードワードが割り当てられるが、スキップモードが選択されると、スキップモードの位置と分割モードの位置とがスイッチングされる。また、2N×2Nマージモードが選択されると、分割モードの位置は2N×2Nマージモードの位置とスイッチングされる。このとき、現在ブロックに対して分割モードが選択されると、分割モードの位置に割り当てられたコードワードは‘001’であるため、分割モードの適用可否を指示する分割フラグ(split_flag)が3ビットの大きさでシグナリングされる。
したがって、ジョイントコーディングを適用するモードの範囲を修正して圧縮効率を上げる方法を考慮することができる。
ジョイントコーディングの範囲を変更
ジョイントコーディングの範囲を変更する多様な方法として、以下の方法を考慮することができる。
(1)分割可否は、フラグを用いてシグナリングし、残りのモードに対しては前述したようにジョイントコーディングを用いるようにすることができる。
(2)分割可否は、フラグを用いてシグナリングし、残りのモードに対しては情報又はモードを追加してジョイントコーディングを適用するようにすることができる。
(3)分割モード及びスキップモードに対してジョイントコーディングを適用し、残りのモードに対しては分割モード及びスキップモードとは別個にジョイントコーディングを適用するようにすることができる。
(4)分割モード、スキップモード及びマージモードに対してジョイントコーディングを適用し、残りのモードに対しては、分割モード、スキップモード及びマージモードとは別個にジョイントコーディングを適用するようにすることができる。このとき、ジョイントコーディングされるマージモードは、マージフラグ(merge_flag)であってもよく、2N×2Nマージモードのように特定のモードであってもよい。また、マージフラグがジョイントコーディングの対象となる場合、以後にインターモードが選択されると、マージフラグをマージモードの適用可否判断に用い、イントラモードが選択されると、マージフラグでMPM(Most Probable Mode)フラグ(mpm_flag)を推定してmpm値の適用可否判断に用いることができる。
一方、ジョイントコーディングの範囲の変更を適応的に適用することもできる。例えば、対象範囲を変更してジョイントコーディングを適用する前述した方法を、深さ(depth)/ブロック(block)/スライス(slice)/フレーム(frame)/GOP(Group of Picture)などの単位に対して適応的に適用することができる。ジョイントコーディングの範囲の変更を適応的に適用する方法の例として、以下の方法を考慮することができる。
(1)ジョイントコーディングの各適用単位別に追加情報をシグナリングするようにすることができる。
(2)周辺情報を用いて適用可否を決定するようにすることができる。
(3)統計的数値に基づいて適用可否を決定する。例えば、以前のスライス/フレームの情報を現在スライス/フレームに適用するようにすることができる。また、複数の以前のスライス/フレームに対する累積統計情報を現在スライス/フレームに適用するようにすることができる。同一のスライス/フレームで現在ブロックより前に復号化されたブロックのうち一部又は全部の累積統計情報を現在スライス/フレームに適用するようにすることができる。
(4)符号化ユニットサイズが最小の場合(CU size=minimum)とそうでない場合に対して互いに異なるジョイントコーディングの範囲を適用するようにすることができる。
また、各ジョイントコーディングに対してコードワードを変更することもできる。例えば、特定のジョイントコーディングの対象に対するコードワードを、深さ/ブロック/スライス/フレーム/GOPなどの単位に対して適応的に変更するようにすることができる。また、適応的に適用するために、各適用単位別に追加情報をシグナリングしたり、周辺情報を用いて適用可否を決定したり、統計的数値に基づいて適用可否を決定したりする等の方法を使用することもできる。
このとき、統計的数値に基づいて適用可否を決定する方法として、前述したように、以前のスライス/フレームの情報を現在スライス/プライムに適用したり、複数の以前のスライス/フレームに対する累積統計情報を現在スライス/フレームに適用したり、同一のスライス/フレームで現在ブロックより前に復号化されたブロックのうち一部又は全部の累積統計情報を現在スライス/フレームに適用したりする方法を使用することができる。
また、各ジョイントコーディングに対してコードワードを変更する場合にも、符号化ユニットサイズが最小の場合とそうでない場合に互いに異なるアダプティションを適用することができる。
ジョイントコーディング対象に対するアダプティションの初期化
前述したジョイントコーディングの範囲を変更する方法の代替として、ジョイントコーディングとその対象に対するアダプティションを進行する間に、特定の単位別にアダプティションを中止して初期化(リセット)する方法を考慮することができる。
このとき、ジョイントコーディングの要素(element)のうちいずれか一つを初期化の対象にすることもでき、ジョイントコーディングの要素全部を初期化の対象にすることもでき、ジョイントコーディングの要素のうち複数の一部要素のみを初期化の対象にすることもできる。
また、初期化の単位は、符号化ユニットであってもよく、最大符号化ユニット(Largest Coding Unit;LCU)であってもよい。また、スライス、フレーム、GOPなどを初期化の単位として用いることができる。
アダプティション初期化の一例として、初期化の対象となるジョイントコーディング要素を分割モード(split mode)にし、初期化の単位を最大符号化ユニットにする場合を考慮することができる。
このとき、最大符号化ユニット(Largest Coding Unit;LCU)は、符号化単位のうち最大サイズ(maximum size)であり、最大符号化ユニットの深さ(depth)を0に設定することができる。最大符号化ユニットが4等分されるたびに深さが増加するようになり、最大符号化ユニット内で複数個のサブ符号化ユニット(sub-CU)にリカーシブ(再帰)(recursive)するように、即ち、サブ符号化ユニットが再び複数個のサブ符号化ユニットに分けられる方式によって所定の深さまで分けていくことができる。
図18は、本発明が適用されるシステムで分割モードを初期化の対象にし、最大符号化ユニットを初期化単位とするアダプティション初期化の例を概略的に説明する図である。図18を参照すると、初期状態でアダプティションが引き続き進行される。例えば、1番目の対象ブロックに対し、スキップモードが選択されると、分割モードはスキップモードとスイッチングすることができる。次に、次の対象ブロックに対し、2N×2Nマージモードが選択されると、分割モードは再び2N×2Nマージモードとスイッチングされることができる。また、次の対象ブロックに対し、2N×2Nインターモードが選択されると、分割モードは2N×2Nインターモードとスイッチングされる。このように予測モードが選択されるブロックを移動する間に最大符号化ユニットの境界を超えると、分割モードを初期化する。したがって、分割モードの位置は最初の位置であるコードワード‘1’に対応する位置に移動し、他のモードの位置が一つずつ下に調整される。
アダプティション方法の変更
現在、ラスタースキャンオーダー(raster scan order)により予測モードに対するシグナリング毎にコードワードのアダプティションを実行している。これを修正して圧縮効果を高めることができる。
図19は、コードワードアダプティションの方法を概略的に説明する図である。図19(a)では現在の方式のようにラスタースキャンオーダーによってコードワードをアダプティションする方法を概略的に示している。図19(a)の例では、アダプティションの結果が累積され、その次のブロックの符号化に影響を及ぼす。
しかしながら、場合によって、引き続き累積された傾向よりも、周辺ブロックの傾向を参照することによって、現在ブロックの符号化性能をさらに高めることができる。本発明が適用されるシステムでは、図19(b)のように、ブロックDの符号化にブロックCまで累積された傾向よりむしろ周辺のブロックであるブロックAやブロックCの傾向を参照することができる。ブロックDが周辺ブロックであるブロックAやブロックCと類似の特性を有する確率が高いためである。
したがって、以下のようにアダプティション方法を変更することができる。
(1)アダプティションの結果を累積し、周辺ブロックを参照してアダプティション可否及びアダプティションの方法を決定するようにすることができる。
(2)アダプティションの結果を累積せず、周辺ブロックを参照してアダプティション可否及びアダプティションの方法を決定するようにすることができる。
(3)モードによって互いに異なる基準を有してアダプティションを実行するようにすることができる。例えば、分割モードに対しては結果を累積してアダプティションを実行し、他のモードに対しては周辺ブロックを参照してアダプティションを実行するようにすることができる。
(4)周辺ブロック及び現在ブロックの大きさ、モードの種類に対する同一性を基準にアダプティションを実行することができる。このとき、モードの種類が同一の周辺ブロックの数によってアダプティションの程度を変更するようにすることもできる。
図20は、本発明が適用されるシステムでアダプティションのための周辺参照ブロックの例を概略的に説明する図である。アダプティションのために参照する周辺のブロックは、図20の例のように設定することができる。
例えば、図7(a)のように、最大符号化ユニット(LCU;Largest Coding Unit)単位で周辺ブロックを選択的に参照するようにすることができる。また、図7(b)のように、符号化ユニット(CU)単位で周辺ブロックを選択的に参照するようにすることもできる。このとき、周辺ブロックは、空間周辺ブロック(A、B、C、D等)だけでなく、時間周辺ブロック(Col LCU、Col CU)を含むことができる。
また、符号化ユニットでさらに分割されたパーティション単位で周辺パーティションを参照するようにすることができる。
最大符号化ユニット(LCU)や符号化ユニット(CU)は、互いに異なる種類の複数のパーティションを含むことができる。したがって、周辺ブロックを参照するとき、同一の種類の符号化ユニットサイズやパーティションを有する場合のみ参照するようにしたり、同一の種類の符号化ユニットサイズやパーティションを有するか否かとは関係なく参照するようにしたりすることができる。
また、周辺ブロックを参照する時は、参照ブロックの位置によって優先順位や加重値をおくことができる。例えば、図20の場合、現在最大符号化ユニット又は現在符号化ユニットは、ブロックAを先に参照し、ブロックAが用いられることができない(not available)場合にはブロックBを参照する方式で周辺ブロックを参照するようにすることができる。
図21は、本発明が適用されるシステムでアダプティションを変更する方法の実施例を概略的に説明する図である。
図21(a)は、最大符号化ユニット単位でアダプティションを適用する実施例を概略的に示す図である。したがって、図21(a)の例では、最大符号化ユニットAとBに属する各予測パーティション(prediction partition)に対して初期コードワードをアダプティションすることができる。このとき、アダプティションされたコードワードマッピングテーブル(ジョイントコーディングテーブル)は、現在最大符号化ユニット(LCU)に属する各予測パーティションの符号化に用いられることができる。
図21(b)も最大符号化ユニット単位でアダプティションを適用する実施例を概略的に示す図である。図21(b)の例では、最大符号化ユニットA及びBに属する各予測パーティションに対して初期コードワードをアダプティションし、符号化ユニットサイズによって独立的にアダプティションを実行する。したがって、符号化ユニットサイズによって複数のコードワードマッピングテーブルを使用する。
図21(b)の例では、アダプティションされたコードワードを現在最大符号化ユニットに属する各予測パーティションの符号化に使用し、アダプティションを実行するとき、符号化ユニットサイズによって独立的に生成した複数のコードワードマッピングテーブルを使用する。したがって、現在最大符号化ユニットに属する符号化ユニットをコードワードマッピングテーブルを用いて符号化する場合には、符号化ユニットサイズ別に決められたコードワードマッピングテーブルを用いることができる。例えば、図21(b)の例で、a領域に対しては同一のサイズを有するc領域でアダプティションされたコードワードマッピングテーブルを用いることができ、b領域に対しては同一のサイズを有するd領域でアダプティションされたコードワードマッピングテーブルを用いることができる。
以上、インター予測モードを中心にシグナリングする方法に対して説明したが、前述したジョイントコーディングテーブルなどでも分かるように、予測が実行される場合にイントラモードに対してもシグナリングが実行される。
図22は、現在ブロックに対するイントラ予測方法の一例を概略的に説明する図である。図22を参照すると、現在ブロック2210に対するイントラ予測のために、左側ブロック2220及び上側ブロック2230のイントラモードを確認することができる。このとき、現在ブロックの最確モード(Most Probable Mode;MPM)を左側ブロック2220のモードと右側ブロック2230のモードとのうち小さいモードに決定することができる(MPM=min(上側イントラモード、左側イントラモード))。
次に、符号化器は、現在ブロックのイントラモードがMPMか否かを示すフラグをシグナリングすることができる。フラグが設定された場合、現在ブロックのイントラモードはMPMとなる。現在ブロックのイントラモードがMPMでない場合には、現在ブロックのイントラモードを示すモードBの情報をシグナリングすることができる。
モードB<MPMの場合、モードBをそのまま現在ブロックに対するイントラモードとして使用する。モードB≧MPMの場合、モードB+1のモードを現在ブロックに対するイントラモードとして使用する。その理由は、現在ブロックのイントラモードがMPMである場合、以前に既にシグナリングされているため、この場合には考慮しなくてもよいためである。
また、MPM候補中に有効でない(not valid)候補が含まれている場合、MPMをDC予測モードと推定(infer)することができる。しかしながら、この場合、単にMPMをDC予測モードと推定せずに、圧縮効率を上げることができるようにMPMを決定する方法を考慮することができる。
MPM候補中の一部が有効な(valid)場合のMPMの決定
前述したように、従来は、MPM候補(例えば、上側ブロック、左側ブロック等)中に有効でない候補が含まれている場合にはMPMをDCモードに決定する。しかしながら、場合によっては、MPM候補中の一部が有効であれば、有効な候補のイントラ予測モードを現在ブロックのMPMとして用いることができる。
図23は、本発明が適用されるシステムでMPM候補中の一部が有効な場合、MPMを決定する方法の一例を概略的に説明する図である。図23の例では、現在ブロックがフレーム2310の境界に位置する場合を説明する。
図23の例で、現在ブロックがA2320と仮定すると、現在ブロック2320の上側ブロック2330は有効でないが、左側ブロック2340は有効である。したがって、現在ブロック2320のMPMを左側ブロック2340のモードに設定することができる。
図23の例で、現在ブロックがB2350と仮定すると、現在ブロック2350の左側ブロック2370は有効でないが、上側ブロック2360は有効である。したがって、現在ブロック2350のMPMを上側ブロック2360のモードに設定することができる。
MPM決定方法の変更
前述したように、現在MPM=min(左側ブロックのイントラモード、上側ブロックのイントラモード)として決定している。しかしながら、候補中で最小モード(minimum mode)をMPMとして設定することは、シグナリングオーバーヘッドの側面では効果があるが、現在ブロックのイントラ予測モードを正確に反映しにくい。
したがって、現在ブロックのMPMを上側ブロックのイントラモードと左側ブロックのイントラモードとの平均に設定する方法を考慮することができる。MPMが整数の値として導出されてイントラ予測モードに対応しなければならないため、上側ブロックのイントラモードと左側ブロックのイントラモードとの平均が整数でない場合には、ラウンディング(rounding)を適用して小数点以下の値を切り上げたり切り捨てたりすることもできる。
例えば、上側ブロックのイントラモードが4であり、左側ブロックのイントラモードが8の場合を仮定すると、現在ブロックのMPMは(4+8)/2によりモード6になる。
また、上側ブロックのイントラモードが3であり、左側ブロックのイントラモードが6の場合を仮定すると、現在ブロックのMPMは(3+6)/2により4.5になり、ラウンディングにより切り上げて現在ブロックのMPMをモード5にすることもでき、ラウンディングにより切り捨てて現在ブロックのMPMをモード4にすることもできる。
このMPM決定方法の変更は、ブロック、スライス又はフレーム単位で適応的に適用することができる。
MPM候補の拡張
上記で説明したように、現在MPM候補として上側ブロックのイントラ予測モードと左側ブロックのイントラ予測モードとを用いている。これに対し、MPM候補をさらに拡張することによって、予測の精度を高めることができる。
図24は、本発明が適用されるシステムでMPM候補の拡張を概略的に説明する図である。図24を参照すると、現在ブロック2400に対するMPM符号を左上側(left-above)ブロックのイントラ予測モード、右上側(right-above)ブロックのイントラ予測モード、左下側(left-below)ブロックのイントラ予測モード、上側ブロック(above)のイントラ予測モード、左側ブロック(left)のイントラ予測モード、時間周辺ブロック(col)のイントラ予測モードに拡張することができる。
ここで、時間周辺ブロックは、現在フレーム又はスライスより時間的に以前に符号化されたフレーム又はスライスで現在ブロックと同一の位置にあるブロックを示す。
このMPM候補ブロックの拡張は、ブロック、スライス又はフレーム単位で適応的に適用することができる。
MPM候補の拡張及びMPM決定方法の変更
前述したように、MPM候補が拡張されると、MPMを決定する方法も多様に拡張することを考慮することができる。例えば、MPM決定方法として、以下の方法のうち少なくとも一つを用いることを考慮することができる。
(1)MPM=mim(MPM候補)。本方法によると、MPM候補中の最小モードを現在ブロックのMPMとして選択することができる。
(2)MPM=average(MPM候補)。本方法によると、MPM候補の平均を現在ブロックのMPMとして選択することができる。この場合、MPM候補の平均が整数でない場合、前述したように、ラウンディングを適用することができる。
(3)MPM=median(MPM候補)。本発明によると、MPM候補のメディアンを現在ブロックのMPMとして選択することができる。
(4)MPM=最頻値(MPM候補)。本発明によると、MPM候補のうち最も頻繁に選択されたり、発生されたりする候補を現在ブロックのMPMとして選択することができる。
このように拡張されたMPM候補に基づいてMPM決定方法を変更することは、ブロック、スライス又はフレーム単位で適応的に適用することができる。
図25は、本発明が適用されるシステムにおける符号化器の動作を概略的に説明するフローチャートである。
図25を参照すると、符号化器は、現在ブロックに対する予測を実行する(S2510)。符号化器は、現在ブロックに対してイントラ予測又はインター予測を適用することができる。予測は、現在ブロックのパーティションサイズ、スライスタイプなどを考慮して実行されることができる。
次に、符号化器は、現在ブロックの予測結果をエントロピー符号化する(S2520)。エントロピー符号化には、前述したように、CABAC、CAVLCなどの方法を用いることができ、各予測モード又は予測タイプの発生頻度を考慮してコードワードを割り当てることもできる。
符号化器は、エントロピー符号化された情報をシグナリングする(S2520)。予測モードに関する情報をシグナリングする方法として、特定の予測モード/予測タイプの適用可否を別個の情報、例えばフラグを用いてシグナリングする方法が用いられることもでき、予測タイプに含まれる各要素(element)を一度にジョイントコーディングし、多様な予測モードのうち、どの予測モードが適用されるかをシグナリングすることもできる。
予測タイプ/予測モードの発生頻度を考慮してコードワードを割り当てる方法と予測に関する情報をシグナリングする方法との具体的な内容は、前述の通りである。
図26は、本発明が適用されるシステムにおける復号化器の動作を概略的に説明する図である。
図26を参照すると、復号化器は、符号化器から情報を受信する(S2610)。符号化器から受信する情報は、ビットストリームに含まれて伝達されることができ、現在ブロックの予測に関する情報を含む。
次に、復号化器は、エントロピー復号化を実行して必要な情報を抽出することができる(S2620)。復号化器は、抽出したコードワードに基づいて、現在ブロックにどの予測タイプ/予測モードが適用されたかを決定することができる。抽出されたコードワードは、前述したように、予測タイプ/予測モードの発生頻度を考慮して割り当てられていてもよい。送信された情報のシグナリング順序も予測モード/予測タイプの発生頻度を考慮して決められていてもよい。また、予測モード/予測タイプに関する情報は、予測モード/予測タイプに関する情報を構成する各要素(elements)をジョイントコーディングしてコードワードを割り当て、そのうち現在ブロックに適用された予測モード/予測タイプに対応するコードワードが送信されたものであってもよい。具体的な内容は、前述の通りである。
復号化器は、現在ブロックに対する予測を実行する(S2630)。復号化器は、以前のステップで現在ブロックに適用されたと決定された予測モード/予測タイプによって予測を実行する。
復号化器は、予測された結果に基づいて現在ブロックの映像を復元する(S2640)。
前述した例示的なシステムにおいて、方法は一連のステップ又はブロックで順序図に基づいて説明されているが、本発明は、ステップの順序に限定されるものではなく、あるステップは前述と異なるステップと異なる順序で又は同時に発生することができる。また、前述した実施例は、多様な態様の例示を含む。したがって、本発明は、特許請求の範囲内に属する全ての交替、修正及び変更を含む。
以上、本発明に関する説明において、一構成要素が他の構成要素に「連結されて」いる、又は「接続されて」いると言及された時には、前記一構成要素が前記他の構成要素に直接連結されている、又は接続されていることもあるが、前記2つの構成要素間に他の構成要素が存在することもできると理解しなければならない。一方、一構成要素が他の構成要素に「直接連結されて」いる、又は「直接接続されて」いると言及された時には、2つの構成要素間に他の構成要素が存在しないと理解しなければならない。