以下、図面を参照して本発明の実施の形態について詳しく説明する。本明細書で実施例を説明するにあって、関連した公知構成又は機能に関する具体的な説明が本明細書の要旨を曖昧にし得ると判断される場合にはその詳細な説明を省略するものとする。
ある構成要素が他の構成要素に“連結されている”又は“接続されている”と記載されている場合、両構成要素が直接連結又は接続されている場合も含み、両構成要素の間に更に他の構成要素が介在する場合も含むと理解すべきである。なお、本発明で特定構成を“含む”とした記載は、当該構成以外の構成を排除するという意味ではなく、更なる構成が本発明の実施又は本発明の技術的思想の範囲内で含まれてもよいということを意味する。
第1、第2などの用語を様々な構成要素を説明するために使うことができるが、これらの用語に構成要素が限定されるわけではない。これらの用語は一つの構成要素を他の構成要素から区別する目的でのみ使われる。例えば、本発明の権利範囲を逸脱しない範囲内で第1構成要素を第2構成要素と命名することができ、同様に、第2構成要素を第1構成要素と命名することもできる。
また、本発明の実施例に示す各構成部は、それぞれ異なる特徴的な機能を表すために独立して示されているものであり、分離したハードウェア又は一つのソフトウェアの構成単位からなるものを意味するわけではない。すなわち、説明の便宜上、各構成部が独立して含まれる例を示しているが、各構成部のうち少なくとも2つの構成部を組み合わせて一つの構成部としてもよく、一つの構成部が複数の構成部に区分されて機能を果たしてもよい。このような、各構成部を組み合わせた実施例及び分離させた実施例も、本発明の本質から逸脱しない限り、本発明の権利範囲に含まれる。
また、一部の構成要素は、本発明で本質的な機能を果たす必須の構成要素ではなく、単に性能を向上させるための選択的な構成要素であってもよい。本発明は、単に性能向上のために用いられる構成要素を除いて、本発明の本質を実現するために必須な構成部だけを含んで具現することもでき、単に性能向上のために用いられる選択的な構成要素を除いて必須構成要素だけを含む構造も、本発明の権利範囲に含まれる。
3次元ビデオは、ユーザに3次元立体ディスプレイ装置を用いて、まるで実の世界にいるかのような立体感を提供する。これと関連して、ISO/IECのMPEG(Moving Picture Experts Group)とITU-TのVCEG(Video Coding Experts Group)の共同標準化グループであるJCT-3V(The Joint Collaborative Team on 3D Video Coding Extension Development)では3次元ビデオ標準化を進行している。
図1は、3次元ビデオシステムの基本構造を概略的に示す図である。
図1を参照すると、3次元ビデオ(3D video;3DV)システムは、送信側(sender)及び受信側(receiver)を含むことができる。このとき、図1の3次元ビデオシステムとしては、3次元ビデオ標準で考慮している基本的な3次元ビデオシステムを用いることができる。3次元ビデオ標準は、実際映像、及び実際映像に対応する深さ情報マップを用いて、ステレオスコープの映像だけでなく、オートステレオスコープ(autostereoscopic)映像の再生を支援できる進歩したデータ形式及びそれに関連した技術に対する標準を含むことができる。
送信側は多視点(multi-view)の映像コンテンツを生成することができる。具体的に、送信側ではステレオカメラ及び多視点カメラを用いてビデオ情報を生成し、深さ情報カメラを用いて深さ情報マップ(depth map又はdepth view)を生成することができる。また、送信側では変換器を用いて2次元映像を3次元映像に変換することもできる。送信側では、生成されたビデオ情報及び深さ情報マップなどを用いて、N(N≧2)視点(view)(すなわち、多視点)の映像コンテンツを生成することができる。このとき、N視点の映像コンテンツには、N視点のビデオ情報及びその深さ情報マップ(Depth-map)情報とカメラ関連付加情報などを含めることができる。N視点の映像コンテンツは、3次元ビデオエンコーダで多視点ビデオ符号化方法を用いて圧縮することができ、圧縮した映像コンテンツ(ビットストリーム)をネットワークを介して受信側の端末に送信することができる。
受信側(receiver)は、送信側から受信した映像コンテンツを復号化して多視点(multi-view)の映像を提供することができる。具体的に、受信側ではビデオデコーダ(例えば、3次元ビデオデコーダ、ステレオビデオデコーダ、2次元ビデオデコーダなど)で多視点ビデオ復号化方法を用いて、受信したビットストリームを復号化することによって、N視点の映像を復元することができる。この時、復元されたN視点の映像と深さ情報マップベースのレンダリング(DIBR;Depth-Image-Based Rendering)過程を用いて、N視点以上の仮想視点映像を生成してもよい。生成されたN視点以上の仮想視点映像は様々な立体ディスプレイ装置(例えば、N-視点ディスプレイ、ステレオディスプレイ、2次元ディスプレイなど)に合うように再生され、ユーザに立体感ある映像を提供する。
図2は、“balloons”映像の実際映像と深さ情報マップ映像の一例を示す図である。
図2の(a)は、国際標準化機構であるMPEGの3次元ビデオ符号化標準で使用中である“balloons”映像を示している。図2の(b)は、図2の(a)に示す“balloons”映像に対する深さ情報マップ映像を示している。図2の(b)に示す深さ情報マップ映像は、画面に見える深さ情報を画素当たりに8ビットで表現したものである。
深さ情報マップ(depth map)は、仮想視点映像を生成するために用いられるものであり、実世界でカメラと実物(object)の間の距離(実写映像と同じ解像度で各画素に該当する深さ情報)を一定のビット数で表現したものである。このとき、深さ情報マップは、深さ情報マップカメラを用いたり、実際一般映像(Texture)を用いて取得することができる。
深さ情報マップカメラを用いて取得した深さ情報マップは主に、静止した客体又は場面で高信頼度の深さ情報を提供するが、一定の距離以内でのみ深さ情報マップカメラが作動するという問題点がある。このとき、深さ情報マップカメラは、レーザー(laser)又は構造化された光線(structured light)技法、又はTFL(Time-of-Flight of Light)に基づく深さ測定技法を用いることができる。
深さ情報マップは、実際一般映像(Texture)と変移ベクトル(Disparity Vector)を用いて生成することもできる。変移ベクトルは、2つの一般映像間の視差を示す情報を意味する。変移ベクトルは、現在視点における任意の一つの画素を他の視点における画素と比較して最も類似な画素を探したとき、現在視点における任意の一つの画素と他の視点における画素(現在視点における任意の一つの画素と最も類似な画素)の間の距離から取得することができる。
実際映像とその深さ情報マップは、一つのカメラだけでなく、複数のカメラから取得した映像であってもよい。複数のカメラから取得した映像は、独立して符号化することができ、一般的な2次元ビデオ符号化/復号化コーデックを用いて符号化/復号化してもよい。また、複数のカメラから取得された映像は視点間の相関性が存在するので、複数のカメラから取得された映像は、符号化効率を上げるために、別個の視点間の予測を用いて符号化してもよい。
図3は、映像を符号化及び復号化するとき、映像の分割構造を概略的に示す図である。
映像を効率的に分割するために符号化ユニット(Coding Unit:CU)別に符号化及び復号化を行うことができる。ユニットは、構文要素(syntax element)及び映像サンプルが含まれたブロックを併せて称する言葉である。ユニットが分割されるということは、ユニットに該当するブロックを分割するということを意味してもよい。
図3を参照すると、映像300を最大符号化ユニット(Largest Coding Unit;LCU)(以下、LCUという。)単位で順次に分割した後、LCUごとに分割構造を決定する。本明細書で、LCUはコーディングツリーユニット(Coding Tree Unit;CTU)と同じ意味で使われてもよい。分割構造は、LCU 310内で映像を効率的に符号化するための符号化ユニット(以下、CUという。)の分布を意味し、このような分布は、一つのCUを、その横及び縦のサイズを半分に減少した4個のCUに分割するか否かによって決定することができる。分割されたCUは、同じ方式で分割されたCUに対してその横及び縦のサイズが半分に減少した4個のCUに再帰的に分割されてもよい。
このとき、CUの分割は、あらかじめ定義された深さまで再帰的に行うことができる。深さ情報はCUのサイズを示す情報であり、各CUごとに記憶されてもよい。例えば、LCUの深さは0であり、SCU(Smallest Coding Unit)の深さは、あらかじめ定義された最大深さであってもよい。ここで、LCUは、上述したとおり、最大のサイズを有する符号化ユニットであり、SCU(Smallest Coding Unit)は、最小のサイズを有する符号化ユニットである。
LCU 310から横及び縦のサイズが半分となるように分割を行う度にCUの深さは1ずつ増加する。例えば、特定の深さLでCUのサイズが2N×2Nであれば、分割が行われない場合に、CUのサイズは依然として2N×2Nであり、分割が行われる場合に、CUのサイズはN×Nとなる。この時、N×NのCUの深さはL+1となる。すなわち、CUのサイズに対応するNのサイズは、深さが1増加する度に半分に減少する。
図3を参照すると、最小深さが0であるLCUのサイズは64×64画素であり、最大深さが3であるSCUのサイズは8×8画素であってもよい。このとき、64×64画素のCU(LCU)の深さは0、32×32画素のCUの深さは1、16×16画素のCUの深さは2、8×8画素のCU(SCU)の深さは3と表現することができる。
また、特定CUを分割するか否かに関する情報は、CUごとに1ビットの分割情報で表現することができる。この分割情報はSCUを除いた全CUに含まれてもよく、例えば、CUを分割しない場合には分割情報に0を記憶し、CUを分割する場合には分割情報に1を記憶することができる。
図4は、符号化ユニット(CU)を含み得る予測ユニット(PU)の形態を示す図である。
LCUから分割されたCUのうち、それ以上分割(split)されないCUは、一つ以上の予測ユニットに分割又はパーティション(partitioning)されてもよい。
予測ユニット(以下、PUという。)は、予測を行う基本単位であり、スキップ(skip)モード、インター(inter)モード、イントラ(intra)モードのうちいずれか一つで符号化及び復号化され、各モードによって様々な形態でパーティションされてもよい。
図4を参照すると、スキップモードの場合、CUのパーティション無しで、CUと同じサイズを有する2N×2Nモード410を支援することができる。
インターモードの場合、CUに対して8つのパーティションされた形態、例えば、2N×2Nモード410、2N×Nモード415、N×2Nモード420、N×Nモード425、2N×nUモード430、2N×nDモード435、nL×2Nモード440、nR×2Nモード445を支援することができる。
イントラモードの場合、CUに対して2N×2Nモード410、N×Nモード425を支援することができる。
図5は、3次元ビデオコーデック(codec)で視点間予測(inter view prediction)の構造を示す一例である。
視点1(View 1)と視点2(View 2)は視点0(View 0)を参照映像にして視点間予測を行うことができ、符号化順序は、視点1(View 1)と視点2(View 2)よりも視点0(View 0)が先に符号化されなければならない。
この時、視点0(View 0)は、他の視点とは無関係に独立して符号化できることから、独立的な視点(Independent View)という。一方、視点1(View 1)と視点2(View 2)は、視点0(View 0)を参照映像にして符号化することから、依存的な視点(Dependent View)という。独立的な視点映像は、一般の2次元ビデオコーデックを用いて符号化することができる。一方、依存的な視点映像は、視点間予測を行う必要があるため、視点間予測過程が含まれた3次元ビデオコーデックを用いて符号化することができる。
また、視点1(View 1)と視点2(View 2)の符号化効率を向上させるために、視点1(View 1)と視点2(View 2)を深さ情報マップを用いて符号化することができる。例えば、実際映像とその深さ情報マップを符号化するとき、実際映像と深さ情報マップを独立して符号化及び/又は復号化することができる。又は、実際映像と深さ情報マップを符号化するとき、実際映像と深さ情報マップを、図6のように互いに依存的に符号化及び/又は復号化することもできる。
図6は、3次元ビデオエンコーダ及び/又はデコーダで実際映像(texture view)及び深さ情報マップ(depth view)を符号化及び/又は復号化する手順を示す一例である。
図6を参照すると、3次元ビデオエンコーダは、実際映像(texture view)を符号化する実際映像エンコーダ(texture encoder)、及び深さ情報マップ(depth view)を符号化する深さ情報マップエンコーダ(depth encoder)を含むことができる。
このとき、実際映像エンコーダは、深さ情報マップエンコーダによって符号化された深さ情報マップを用いて実際映像を符号化することができる。一方、深さ情報マップエンコーダは、実際映像エンコーダによって符号化された実際映像を用いて深さ情報マップを符号化することができる。
3次元ビデオデコーダは、実際映像を復号化する実際映像デコーダ(texture decoder)、及び深さ情報マップを復号化する深さ情報マップデコーダ(depth decoder)を含むことができる。
このとき、実際映像デコーダは、深さ情報マップデコーダによって復号化された深さ情報マップを用いて実際映像を復号化することができる。一方、深さ情報マップデコーダは、実際映像デコーダによって復号化された実際映像を用いて深さ情報マップを復号化することができる。
図7は、ビデオエンコーダの一実施例に係る構成を示すブロック図である。
図7は、マルチビュー構造に対して適用可能なビデオエンコーダの一実施例を示し、マルチビュー構造に対するビデオエンコーダは、単一ビュー構造に対するビデオエンコーダを拡張(extension)して具現することができる。このとき、図7のビデオエンコーダは、図6の実際映像エンコーダ及び/又は深さ情報マップエンコーダに用いることができ、エンコーダは符号化装置を意味することができる。
図7を参照すると、ビデオエンコーダ700は、インター予測部710、イントラ予測部720、スイッチ715、減算器725、変換部730、量子化部740、エントロピー符号化部750、逆量子化部760、逆変換部770、加算器775、フィルタ部780、及び参照ピクチャバッファー790を含む。
ビデオエンコーダ700は、入力映像に対してイントラ(intra)モード又はインター(inter)モードで符号化を行い、ビットストリーム(bitstream)を出力することができる。
イントラ予測(intra prediction)は、画面内予測(intra picture prediction)を意味し、インター予測(inter prediction)は、画面間(inter picture)予測又はビュー間(inter-view)予測を意味する。イントラモードである場合、スイッチ715がイントラモードに切り替わり、インターモードである場合、スイッチ715がインターモードに切り替わる。
ビデオエンコーダ700は、入力ピクチャのブロック(現在ブロック)に対する予測ブロックを生成した後、現在ブロックと予測ブロックとの差分を符号化することができる。
イントラモードである場合、イントラ予測部720は、現在ブロックの周辺における既に符号化されたブロックの画素値を参照画素として用いることができる。イントラ予測部720は、参照画素を用いて現在ブロックに対する予測サンプルを生成することができる。
インターモードである場合、インター予測部710は、参照ピクチャバッファー790に記憶されている参照ピクチャから、入力ブロック(現在ブロック)に対応する参照ブロックを特定する動きベクトルを求めることができる。インター予測部710は、動きベクトル、及び参照ピクチャバッファー790に記憶されている参照ピクチャを用いて動き補償を行い、現在ブロックに対する予測ブロックを生成することができる。
マルチビュー構造において、インターモードで適用されるインター予測は、インタービュー予測を含むことができる。インター予測部710は、参照ビューのピクチャをサンプリングしてインタービュー参照ピクチャを構成することもできる。インター予測部710は、インタービュー参照ピクチャを含む参照ピクチャリストを用いてインタービュー予測を行うこともできる。ビュー間の参照関係は、ビュー間の依存性を特定する情報を用いてシグナルすることができる。
一方、現在ビューのピクチャと参照ビューのピクチャとが同一のサイズを有する場合、該参照ビューピクチャに適用されるサンプリングは、参照ビューピクチャからのサンプル複写又は補間による参照サンプルの生成を意味することができる。現在ビューピクチャと参照ビューピクチャの解像度が互いに異なる場合、上記参照ビューピクチャに適用されるサンプリングは、アップサンプリング又はダウンサンプリングを意味することができる。例えば、ビュー間解像度が異なる場合には、参照ビューの復元されたピクチャをアップサンプリングしてインタービュー参照ピクチャを構成してもよい。
どんなビューのピクチャを用いてインタービュー参照ピクチャを構成するかは、符号化費用(coding cost)などを考慮して決定することができる。エンコーダは、インタービュー参照ピクチャとして使われるピクチャの属するビュー(view)を特定する情報を復号化装置に送信することができる。
また、インタービュー予測において参照されるビュー、すなわち、参照ビュー内で現在ブロックの予測に用いられるピクチャは、現在ピクチャ(現在ビュー内予測対象ピクチャ)と同一のAU(Access Unit)のピクチャであってもよい。
減算器725は、現在ブロックと予測ブロックとの差分によってレジデュアルブロック(residual block)(レジデュアル信号)を生成することができる。
変換部730は、レジデュアルブロックに対して変換(transform)を行って変換係数(transform coefficient)を出力することができる。変換省略(transform skip)モードが適用される場合に、変換部730はレジデュアルブロックに対する変換を省略してもよい。
量子化部740は、変換係数を量子化パラメータによって量子化し、量子化された係数(quantized coefficient)を出力することができる。
エントロピー符号化部750は、量子化部740で算出された値又は符号化過程で算出された符号化パラメータ値などを確率分布によってエントロピー符号化し、ビットストリームを出力することができる。エントロピー符号化部750は、ビデオの画素情報の他、ビデオデコーディングのための情報(例えば、シンタクスエレメント(syntax element)など)をエントロピー符号化することもできる。
符号化パラメータは、符号化及び復号化に必要な情報であり、シンタクスエレメントのようにエンコーダで符号化されて復号化装置に伝達される情報だけでなく、符号化或いは復号化過程で類推され得る情報を含むこともできる。
レジデュアル信号は、原信号と予測信号との差を意味することができ、また、原信号と予測信号との差が変換(transform)された形態の信号、又は原信号と予測信号との差が変換されて量子化された形態の信号を意味することもできる。ブロック単位において、レジデュアル信号をレジデュアルブロックと呼ぶこともできる。
エントロピー符号化が適用される場合、高い発生確率を有するシンボルに少ない数のビットを割り当て、低い発生確率を有するシンボルに多い数のビットを割り当ててシンボルを表現することにより、符号化対象シンボルに対するビット列のサイズを減少させることができる。したがって、エントロピー符号化を用いて映像符号化の圧縮性能を高めることができる。
エントロピー符号化のために指数ゴロム(exponential Golomb)、CAVLC(Context-Adaptive Variable Length Coding)又はCABAC(Context-Adaptive Binary Arithmetic Coding)のような符号化方法を用いることができる。例えば、エントロピー符号化部750は、可変長符号化(VLC:Variable Lenghth Coding/Code)テーブルを用いてエントロピー符号化を行うことができる。また、エントロピー符号化部750は、対象シンボルの二進化(binarization)方法及び対象シンボル/ビン(bin)の確率モデル(probability model)を導出した後、導出された二進化方法又は確率モデルを用いてエントロピー符号化を行うことができる。
量子化された係数は、逆量子化部760で逆量子化し、逆変換部770で逆変換することができる。逆量子化、逆変換された係数は加算器775で予測ブロックに加算し、復元ブロックを生成することができる。
復元ブロックはフィルタ部780を通過するが、フィルタ部780は、デブロッキングフィルタ(deblocking filter)、SAO(Sample Adaptive Offset)、ALF(Adaptive Loop Filter)のうち少なくとも一つを復元ブロック又は復元ピクチャに適用することができる。フィルタ部780を経た復元ブロックを参照映像バッファー790に記憶することができる。
図8は、ビデオデコーダの一実施例に係る構成を示すブロック図である。
図8は、マルチビュー構造に対して適用可能なビデオデコーダの一実施例を示し、マルチビュー構造に対するビデオデコーダは、単一ビュー構造に対するビデオデコーダを拡張(extension)して具現することができる。
このとき、図8のビデオデコーダは、図6の実際映像デコーダ及び/又は深さ情報マップデコーダに用いることができる。説明の便宜のために、本明細書では、‘復号化’と‘デコード’を同じ意味で使い、‘復号化装置’と‘デコーダ’を同じ意味で使うことができる。
図8を参照すると、ビデオデコーダ800は、エントロピー復号化部810、逆量子化部820、逆変換部830、イントラ予測部840、インター予測部850、フィルタ部860、及び参照ピクチャバッファー870を含む。
ビデオデコーダ800は、エンコーダから出力されたビットストリームを受信してイントラモード又はインターモードで復号化を行い、再構成された映像、すなわち、復元映像を出力することができる。
イントラモードである場合、スイッチをイントラ予測のために切り替え、インターモードである場合、スイッチをインター予測のために切り替えることができる。
ビデオデコーダ800は、受信したビットストリームから復元されたレジデュアルブロック(residual block)を得、予測ブロックを生成した後、復元されたレジデュアルブロックと予測ブロックとを合算して、再構成されたブロック、すなわち、復元ブロックを生成することができる。
エントロピー復号化部810は、入力されたビットストリームを確率分布によってエントロピー復号化し、量子化された係数(quantized coefficient)及びシンタクスエレメントなどの情報を出力することができる。
量子化された係数は、逆量子化部820で逆量子化され、逆変換部830で逆変換される。量子化された係数を逆量子化/逆変換し、復元されたレジデュアルブロック(residual block)を生成することができる。
イントラモードである場合、イントラ予測部840は、現在ブロックの周辺における既に符号化されたブロックの画素値を用いて、現在ブロックに対する予測ブロックを生成することができる。
インターモードである場合、インター予測部850は、動きベクトル及び参照ピクチャバッファー870に記憶されている参照ピクチャを用いて動き補償を行うことによって、現在ブロックに対する予測ブロックを生成することができる。
マルチビュー構造の場合、インターモードで適用されるインター予測は、インタービュー予測を含むことができる。インター予測部850は、参照ビューのピクチャをサンプリングしてインタービュー参照ピクチャを構成することができる。インター予測部850は、インタービュー参照ピクチャを含む参照ピクチャリストを用いてインタービュー予測を行うことができる。ビュー間の参照関係は、ビュー間の依存性を特定する情報を用いてシグナルすることができる。
一方、現在ビューピクチャ(現在ピクチャ)と参照ビューピクチャとが同一のサイズを有する場合に、該参照ビューピクチャに適用されるサンプリングは、参照ビューピクチャからのサンプル複写又は補間による参照サンプルの生成を意味することができる。現在ビューピクチャと参照ビューピクチャの解像度が互いに異なる場合、上記参照ビューピクチャに適用されるサンプリングは、アップサンプリング又はダウンサンプリングを意味することができる。
例えば、ビュー間解像度が異なる場合に、ビュー間にインタービュー予測が適用されるとき、参照ビューが復元されたピクチャをアップサンプリングしてインタービュー参照ピクチャを構成することができる。
このとき、インタービュー参照ピクチャとして使われるピクチャの属するビューを特定する情報は、エンコーダからデコーダに送信されてもよい。
また、インタービュー予測において参照されるビュー、すなわち、参照ビュー内で現在ブロックの予測に用いられるピクチャは、現在ピクチャ(現在ビュー内予測対象ピクチャ)と同一なAU(Access Unit)のピクチャであってもよい。
復元されたレジデュアルブロックと予測ブロックとが加算器855で合算され、復元ブロックが生成される。言い換えると、レジデュアルサンプルと予測サンプルが加算され、復元されたサンプル又は復元されたピクチャが生成される。
復元されたピクチャは、フィルタ部860でフィルタリングされる。フィルタ部860は、デブロッキングフィルタ、SAO、ALFのうち少なくとも一つを復元ブロック又は復元ピクチャに適用することができる。フィルタ部860は、再構成された(modified)或いはフィルタリングされた(filtered)復元ピクチャ(reconstructed picture)を出力する。復元ピクチャは参照ピクチャバッファー870に記憶され、インター予測に用いられてもよい。
図7及び図8ではそれぞれのモジュールが別個の機能を果たすとしたが、本発明はこれに限定されず、一つのモジュールで2つ以上の機能を行ってもよい。例えば、図7及び図8で、イントラ予測部とインター予測部の動作は一つのモジュール(予測部)で行われてもよい。
一方、図7及び図8では、一つのエンコーダ/デコーダがマルチビューに対する符号化/復号化を全て処理するとしたが、これは説明の便宜のためのものであり、エンコーダ/デコーダはビュー別に構成されてもよい。
この場合、現在ビューのエンコーダ/デコーダは、他のビューの情報を用いて現在ビューの符号化/復号化を行うことができる。例えば、現在ビューの予測部(インター予測部)は、他のビューのピクセル情報又は復元されたピクチャ情報を用いて、現在ブロックに対するイントラ予測又はインター予測を行うこともできる。
ここでは、ビュー間の予測だけを取り上げて説明したが、エンコーダ/デコーダは、ビュー別に構成される場合にも、一つの装置がマルチビューを処理する場合にも、他のビューの情報を用いて現在レイヤに対する符号化/復号化を行うことができる。
本発明でビューに関する説明は、スケーラビリティを支援するレイヤ(layer)に対しても同一に適用することができる。例えば、本発明でビュー(view)はレイヤ(layer)であってもよい。
図9は、3次元ビデオコーデックに対する予測構造の一例を示す図である。説明の便宜上、図9では、3台のカメラから取得した実際映像と実際映像に対応する深さ情報マップを符号化するための予測構造を示す。
図9では、3台のカメラから取得された3個の実際映像は、視点(view)によってT0、T1、T2と表し、実際映像に対応する3個の深さ情報マップは、視点(view)によってそれぞれD0、D1、D2と表した。ここで、T0とD0は視点0(View 0)で取得した映像であり、T1とD1は視点1(View 1)で取得した映像であり、T2とD2は視点2(View 2)で取得した映像である。このとき、図9に示す四角形は、映像(ピクチャ)を表す。
各映像(ピクチャ)は、符号化/復号化タイプによってIピクチャ(Intra Picture)、Pピクチャ(Uni-prediction Picture)、Bピクチャ(Bi-prediction Picture)に区別される。これらの各ピクチャは、各ピクチャの符号化/復号化タイプによって符号化/復号化することができる。Iピクチャでは、インター予測無しで映像自体を符号化し、Pピクチャでは、単方向に存在する参照映像だけを用いてインター予測をし、Bピクチャでは、両方向に存在する参照映像を用いてインター予測を行うことができる。このとき、図9の矢印は、予測方向を示す。すなわち、予測方向によって実際映像とその深さ情報マップをお互い依存的に符号化/復号化することができる。
インター予測によって映像の符号化/復号化を行うためには、現在ブロックの動き情報が必要である。現在ブロックの動き情報を類推する方法には、現在ブロックと隣接したブロックの動き情報を利用する方法、同じ視点内で時間的相関性を利用する方法、又は隣接した視点で視点間相関性を利用する方法があり、上述したインター予測方法は一つのピクチャで混用されてもよい。ここで、現在ブロックは、予測が行われるブロックのことをいう。動き情報は、動きベクトル、参照映像番号及び/又は予測方向(例えば、単方向予測か又は両方向予測か、時間的相関性を利用するか又は視点間相関性を利用するかなど)を意味することもできる。
このとき、予測方向は、参照ピクチャ目録(Reference Picture List:RefPicList)の使用によって、単方向予測と両方向予測とに大別できる。単方向予測は、順方向参照ピクチャ目録(LIST 0;L0)を使用する順方向予測(Pred_L0:Prediction L0)と逆方向参照ピクチャ目録(LIST 1;L1)を使用する逆方向予測(Pred_L1:Prediction L1)とに区分される。また、両方向予測(Pred_BI:Prediction BI)は、順方向参照ピクチャ目録(LIST 0)と逆方向参照ピクチャ目録(LIST 1)を全て使用し、順方向予測及び逆方向予測の両方が存在することを意味することができる。順方向参照ピクチャ目録(LIST 0)を逆方向参照ピクチャ目録(LIST 1)に複写し、順方向予測が2つ存在する場合も両方向予測に含まれてもよい。
予測方向はpredFlagL0、predFlagL1を用いて定義することができる。このとき、predFlagL0は、順方向参照ピクチャ目録(List0)を使用するか否かを示す指示子であり、predFlagL1は、逆方向参照ピクチャ目録(List1)を使用するか否かを示す指示子に該当する。例えば、単方向予測であると共に順方向予測である場合には、predFlagL0が‘1’、predFlagL1は‘0’になり、単方向予測であると共に逆方向予測である場合には、predFlagL0が‘0’、predFlagL1が‘1’になり、両方向予測である場合には、predFlagL0が‘1’、predFlagL1が‘1’になってもよい。
図10は、現在ブロックに対するマージ候補リスト(merge candidate list)を構成するために用いられる周辺ブロックを例示する図である。
マージモード(merge mode)は、インター予測を行う方法の一つであり、マージモードでは現在ブロックの動き情報(例えば、動きベクトル、参照ピクチャリスト、参照ピクチャインデックスのうち少なくとも一つ)として現在ブロックの周辺ブロックの動き情報を用いることができる。このとき、周辺ブロックの動き情報を現在ブロックの動き情報として使用することを、マージング(merging)、動き併合(motion merging)又は併合動き(merging motion)という。
マージモードでは、符号化ユニット(Coding Unit;以下、‘CU’という。)単位の併合動き(merging)と予測ユニット(Prediction Unit;以下、‘PU’という。)単位の併合動きが可能である。
ブロック単位(例えば、CU又はPU)(以下、説明の便宜のために‘ブロック’という。)で併合動きを行う場合には、ブロックパーティション(partition)別に併合動きを行うか否かに関する情報、及び現在ブロックに隣接した周辺ブロックのうちでどのブロックと併合動きを行うかに関する情報が必要である。
併合動きを行うためにマージ候補リスト(merging candidate list)を構成することができる。
マージ候補リストは、動き情報のリストを意味し、マージモードが行われる前に生成することができる。ここで、マージ候補リストの動き情報は、現在ブロックに隣接した周辺ブロックの動き情報であってもよく、既にマージ候補リストに存在する動き情報を組み合わせて作った新しい動き情報であってもよい。周辺ブロックの動き情報(例えば、動きベクトル及び/又は参照ピクチャインデックス)は、周辺ブロックによって特定される或いは周辺ブロックに記憶された(周辺ブロックのデコーディングに用いられた)動き情報であってもよい。
このとき、周辺ブロックは、図10に示すように、現在ブロックと空間的(spatial)に隣接して位置している周辺ブロック(neighboring block)(A,B,C,D,E)と、現在ブロックと時間的(temporal)に対応する同一位置の候補ブロック(co-located block)(H或いはM)を含むことができる。同一位置の候補ブロックとは、現在ブロックを含む現在ピクチャと時間的に対応する同一位置のピクチャ(co-located picture)内対応位置のブロックを指す。同一位置のピクチャ内Hブロックが可用であれば、Hブロックを同一位置の候補ブロックと決定し、Hブロックが可用でなければ、同一位置のピクチャ内Mブロックを同一位置の候補ブロックと決定してもよい。
マージ候補リストを構成する時、周辺ブロック(A,B,C,D,E)及び同一位置の候補ブロック(H或いはM)の動き情報を、現在ブロックのマージ候補リストを構成するマージ候補(merge candidate)として利用可能か否かを判断する。すなわち、現在ブロックのインター予測に利用可能なブロックの動き情報がマージ候補としてマージ候補リストに追加されてもよい。
例えば、Xブロックに対するマージ候補リストを構成する方法として、1)まず、周辺ブロックAを使用できる場合、周辺ブロックAをマージ候補リストに含める。2)その後、周辺ブロックBの動き情報が周辺ブロックAの動き情報と同一でない場合にのみ、周辺ブロックBをマージ候補リストに含める。3)同一の方法で、周辺ブロックCの動き情報が周辺ブロックBの動き情報と異なる場合にのみ、周辺ブロックCをマージ候補リストに含め、4)周辺ブロックDの動き情報が周辺ブロックCの動き情報とは異なる場合にのみ、周辺ブロックDをマージ候補リストに含める。しかも、5)周辺ブロックEの動き情報が周辺ブロックDの動き情報と異なる場合にのみ、周辺ブロックEをマージ候補リストに含め、6)最後に、マージ候補リストには周辺ブロックH(或いはM)を含める。すなわち、それぞれの周辺ブロックを、A→B→C→D→E→H(或いはM)ブロックの順でマージ候補リストに追加することができる。ここで、同一動き情報は、同一動きベクトル、同一参照ピクチャ、及び同一予測方向(単方向、両方向)を使用することを意味することができる。
ここでは、周辺ブロックをマージ候補としてマージ候補リストに追加するという表現と周辺ブロックの動き情報をマージ候補としてマージ候補リストに追加するという表現を混用したが、これは、説明の便宜のためのものであり、両表現は実質的に同一である。例えば、マージ候補としての周辺ブロックは、当該ブロックの動き情報を意味しているといえる。
図11は、隣接した視点の動き情報を用いて、現在ブロックの動き情報を誘導する手順の一例を示す図である。
図11では、説明の便宜のために、一つの隣接した視点だけを用いて現在ブロックの動き情報を誘導する手順を示しているが、隣接した視点は2個以上であってもよい。
図11を参照すると、3次元ビデオシステムでは、動き情報を効率的に符号化/復号化するために、隣接した視点の動き情報を用いることができる。具体的に、図11の現在ブロック(現在位置Xに対するブロック)は、現在ブロックに関する動き情報を誘導するために、隣接した視点に位置している対象ブロック(参照位置XR)を探す。このとき、隣接した視点に位置している対象ブロックは、現在ブロックに対応するブロックを意味し、現在視点における現在ピクチャと参照視点における現在ピクチャは、カメラ位置の差があるだけであるため、上述したように、変移ベクトル(Disparity Vector;DV)を用いて、隣接した視点に位置している対象ブロックを誘導することができる。
図12は、一つの予測ユニット(Prediction Unit;PU)が複数のサブ予測ユニット(Sub-Prediction Unit)に分割される一例を示す図である。
図12では、64×64サイズを有する予測ユニット(PU)が8×8サイズのサブ予測ユニットに分割される一例を示す。図12では、説明の便宜のために、予測ユニットが64×64のサイズを有する例を説明するが、予測ユニットは64×64サイズの他、32×32、16×16、8×8、4x4などのサイズを有してもよい。3次元ビデオシステムでは、一つの予測ユニットを複数のサブ予測ユニットに分割することができる。このとき、変移ベクトルを用いた動き情報の誘導は、サブ予測ユニット単位で行われる。サブ予測ユニットは、既に設定されたサイズ(例えば、4x4、8×8、16×16など)を有することができ、サブ予測ユニットのサイズは、符号化時に指定されてもよい。サブ予測ユニットのサイズに関する情報は、ビデオパラメータセット拡張シンタクス(Video Parameter Set(VPS) Extension syntax)内に含まれてシグナルされてもよい。
図13は、参照ブロックを用いて現在ブロックの動き情報を誘導する手順の一例を示す図である。
現在ブロックに対する動き情報の誘導は、参照ブロックに存在する動き情報を現在ブロックの動き情報に設定することを意味する。しかし、3次元ビデオシステムでは動き情報を効率的に符号化/復号化するために、現在視点で現在ピクチャに位置している現在ブロック(X)に対してそれぞれのサブ予測ユニット単位で動き情報を誘導することができる。
すなわち、3次元ビデオシステムでは、参照ブロック(XR)のサブ予測ユニットに存在する動き情報を、現在ブロック(X)のサブ予測ユニットに関する動き情報として設定することができる。このとき、参照ブロック(XR)は、参照視点における現在ピクチャに位置している参照ブロック(XR)を意味することができ、具体的な動き情報誘導手順については後述する。
図14は、現在ブロックの動き情報を誘導するために用いられる参照ブロックの一例を示す図である。
図14によれば、参照ブロックはPUを意味することができ、一つの参照ブロックは総16個のサブ予測ユニットを含むことができる。このとき、現在ブロックのそれぞれのサブ予測ユニットは、参照ブロックのサブ予測ユニットに存在する動き情報を用いて、現在ブロックのサブユニットに関する動き情報を誘導することができる。
以下、図15A乃至図15E、及び図16A乃至図16Gを参照して、参照ブロックを用いて現在ブロックのサブ予測ユニットに関する動き情報を誘導する方法について具体的に説明する。
図15A乃至図15Eは、記憶空間に記憶された動き情報を用いて、動き情報を誘導する手順の一例を概略的に説明する図である。このとき、図15A乃至図15Eで用いられる参照ブロックは、図14の参照ブロックであってもよい。
現在ブロックのサブ予測ユニットが参照ブロックのサブ予測ユニットに関する動き情報を取り込む時、参照ブロックの全サブ予測ユニットが動き情報を有しているわけではない。すなわち、動き情報を取り込むことのできない参照ブロックのサブ予測ユニットも存在しうる。したがって、動き情報を取り込むことのできないサブ予測ユニットが存在する場合には、現在ブロックのサブ予測ユニットが動き情報を誘導できないことを補完するために、現在参照されているサブ予測ユニットの前又は後に存在するサブ予測ユニットの動き情報を用いることもできる。例えば、参照ブロック内で使用可能なサブ予測ユニットの動き情報をあらかじめ記憶しておき、動き情報誘導が不可能な参照ブロックのサブ予測ユニットがある場合には、あらかじめ記憶しておいた動き情報を現在ブロックのサブ予測ユニットに挿入し、現在ブロックに対する動き情報の誘導を行うことができる。
以下、上述した方法に関する円滑な理解を助けるために、参照ブロックの一番目のサブ予測ユニットは動き情報を有しており、参照ブロックの二番目のサブ予測ユニット以降に動き情報が存在しないサブ予測ユニットが発生する場合、現在ブロックのサブユニットに関する動き情報を誘導する方法の一例を、図面を参照して段階別に説明する。
図15Aは、現在ブロックのサブ予測ユニット、及び記憶空間の初期状態を示す図である。
図15Aを参照すると、Refは参照ブロックを意味し、Ref0,1,2,3は、参照ブロック内の各サブ予測ユニットを意味する。すなわち、Ref0は参照ブロックのサブ予測ユニット0(参照ブロックの一番目のサブ予測ユニット)、Ref1は参照ブロックのサブ予測ユニット1(参照ブロックの二番目のサブ予測ユニット)、Ref2は、参照ブロックのサブ予測ユニット2(参照ブロックの三番目のサブ予測ユニット)、Ref3は参照ブロックのサブ予測ユニット3(参照ブロックの四番目のサブ予測ユニット)を意味する。Curは、現在ブロックを意味し、Cur0,1,2,3は、現在ブロック内の各サブ予測ユニットを意味する。すなわち、Cur0は現在ブロックのサブ予測ユニット0(現在ブロックの一番目のサブ予測ユニット)、Cur1は現在ブロックのサブ予測ユニット1(現在ブロックの二番目のサブ予測ユニット)、Cur2は現在ブロックのサブ予測ユニット2(現在ブロックの三番目のサブ予測ユニット)、Cur3は現在ブロックのサブ予測ユニット3(現在ブロックの四番目のサブ予測ユニット)を意味する。
このとき、図15AのRef2内の‘X’は、参照ブロックのサブ予測ユニット2を用いては動き情報の誘導が不可能であるということを意味する。
図15Bは、参照ブロックのサブ予測ユニットから動き情報を誘導する第1段階を示す。
図15Bを参照すると、現在ブロックのサブ予測ユニット0は、参照ブロックのサブ予測ユニット0から動き情報を誘導する。この時、参照ブロックのサブ予測ユニット0から動き情報の誘導ができるため、参照ブロックのサブ予測ユニット0の動き情報を記憶空間に記憶する。このとき、記憶空間に記憶された動き情報を動き情報0と定義することができ、動き情報0は、動き情報の誘導が不可能な参照ブロックのサブ予測ユニットが発生する場合に用いられる。
図15Cは、参照ブロックのサブ予測ユニットから動き情報を誘導する第2段階を示す。
図15Cを参照すると、現在ブロックのサブ予測ユニット1は、参照ブロックのサブ予測ユニット1から動き情報を誘導する。この時、参照ブロックのサブ予測ユニット1から動き情報の誘導ができるため、参照ブロックのサブ予測ユニット1の動き情報を記憶空間に記憶する。このとき、記憶されるサブ予測ユニット1の動き情報を動き情報1と定義することができ、動き情報1を動き情報0の代わりに記憶空間に記憶することができる。動き情報1は、動き情報の誘導が不可能な参照ブロックのサブ予測ユニットが発生する場合に用いることができる。
図15Dは、参照ブロックのサブ予測ユニットから動き情報を誘導する第3段階を示す。
図15Dを参照すると、現在ブロックのサブ予測ユニット2は、参照ブロックのサブ予測ユニット2から動き情報の誘導を試みる。しかし、参照ブロックのサブ予測ユニット2は動き情報の誘導が不可能なサブ予測ユニットであるため、現在ブロックのサブ予測ユニット2は、記憶空間に記憶された動き情報を用いて、現在ブロックのサブ予測ユニット2の動き情報を誘導する。この時、記憶空間に記憶された動き情報は動き情報1であってもよい。
図15Eは、参照ブロックのサブ予測ユニットから動き情報を誘導する第4段階を示す。
図15Eを参照すると、現在ブロックのサブ予測ユニット3は参照ブロックのサブ予測ユニット3から動き情報を誘導する。この時、参照ブロックのサブ予測ユニット3から動き情報の誘導ができるため、参照ブロックのサブ予測ユニット3の動き情報を記憶空間に記憶する。このとき、記憶されるサブ予測ユニット3の動き情報を動き情報3と定義することができ、動き情報3を動き情報1の代わりに記憶空間に記憶することができる。動き情報3は、動き情報の誘導が不可能な参照ブロックのサブ予測ユニットが発生する場合に用いることができる。
図16A乃至図16Gは、記憶空間に記憶された動き情報を用いて、動き情報を誘導する手順の他の例を概略的に説明する図である。
図16A乃至図16Gでは、記憶された動き情報がない状態で、動き情報の誘導が不可能な参照ブロックのサブ予測ユニットが登場し、その後、動き情報誘導が可能な参照ブロックのサブ予測ユニットが登場する場合の動き情報誘導手順を例示する。
図16Aは、現在ブロックのサブ予測ユニット、及び記憶空間の初期状態を示す図である。
図16Aを参照すると、Refは参照ブロックを意味し、Ref0,1,2,3は、参照ブロック内の各サブ予測ユニットを意味する。すなわち、Ref0は参照ブロックのサブ予測ユニット0、Ref1は参照ブロックのサブ予測ユニット1、Ref2は参照ブロックのサブ予測ユニット2、Ref3は参照ブロックのサブ予測ユニット3を意味する。Curは現在ブロックを意味し、Cur0,1,2,3は、現在ブロック内の各サブ予測ユニットを意味する。すなわち、Cur0は現在ブロックのサブ予測ユニット0、Cur1は現在ブロックのサブ予測ユニット1、Cur2は現在ブロックのサブ予測ユニット2、Cur3は現在ブロックのサブ予測ユニット3を意味する。このとき、図16AのRef0及び1内の‘X’は、参照ブロックのサブ予測ユニット0及び参照ブロックのサブ予測ユニット1を用いては動き情報の誘導が不可能であるということを表す。
図16Bは、参照ブロックのサブ予測ユニットから動き情報を誘導する第1段階を示す。
図16Bを参照すると、現在ブロックのサブ予測ユニット0は参照ブロックのサブ予測ユニット0から動き情報の誘導を試みる。しかし、上述したように、参照ブロックのサブ予測ユニット0からは動き情報の誘導が不可能であり、記憶空間に記憶された動き情報もないため、第2段階に進む。
図16Cは、参照ブロックのサブ予測ユニットから動き情報を誘導する第2段階を示す。
図16Cを参照すると、現在ブロックのサブ予測ユニット1は参照ブロックのサブ予測ユニット1から動き情報の誘導を試みる。しかし、上述したように、参照ブロックのサブ予測ユニット1からも動き情報の誘導が不可能であり、記憶空間に記憶された動き情報もないため、第3段階に進む。
図16Dは、参照ブロックのサブ予測ユニットから動き情報を誘導する第3段階を示す。
図16Dを参照すると、現在ブロックのサブ予測ユニット2は、参照ブロックのサブ予測ユニット2から動き情報を誘導する。この時、参照ブロックのサブ予測ユニット2から動き情報の誘導ができるため、参照ブロックのサブ予測ユニット2の動き情報を記憶空間に記憶する。このとき、記憶空間に記憶された動き情報を動き情報2と定義することができ、動き情報2は、動き情報の誘導が不可能な参照ブロックのサブ予測ユニットが発生する場合に用いられる。
図16Eは、参照ブロックのサブ予測ユニットから動き情報を誘導する第4段階を示す。
図16Eを参照すると、現在ブロックのサブ予測ユニット0は、記憶空間に記憶された動き情報2を用いて、現在ブロックに対するサブ予測ユニット0の動き情報を誘導する。
図16Fは、参照ブロックのサブ予測ユニットから動き情報を誘導する第5段階を示す。
図16Fを参照すると、現在ブロックのサブ予測ユニット1は、記憶空間に記憶された動き情報2を用いて、現在ブロックに対するサブ予測ユニット0の動き情報を誘導する。
図16Gは、参照ブロックのサブ予測ユニットから動き情報を誘導する第6段階を示す。
図16Gを参照すると、現在ブロックのサブ予測ユニット3は、参照ブロックのサブ予測ユニット3から動き情報を誘導する。この時、参照ブロックのサブ予測ユニット3から動き情報の誘導ができるため、参照ブロックのサブ予測ユニット3の動き情報を記憶空間に記憶する。このとき、記憶されるサブ予測ユニット3の動き情報を動き情報3と定義することができ、動き情報3を動き情報2の代わりに記憶空間に記憶することができる。動き情報3は、動き情報の誘導が不可能な参照ブロックのサブ予測ユニットが発生する場合に用いることができる。
図17は、一例に係る、参照ブロックのサブ予測ユニットを用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する方法を示すフローチャートである。図17の手順における動作は、エンコーダ及び/又はデコーダで行われてもよく、エンコーダ及び/又はデコーダ内のインター予測部、例えば、図7のインター予測部720又は図8のインター予測部850で行われてもよい。
まず、参照ブロックのサブ予測ユニットに動き情報が存在する場合の手順を、図17を参照して説明すると、インター予測部は、参照ブロックのサブ予測ユニットに動き情報が存在するか否か判断する(S1700)。
インター予測部は、参照ブロックのサブ予測ユニットに動き情報が存在する場合、参照ブロックのサブ予測ユニットに存在する動き情報を、動き情報誘導対象である現在ブロックのサブ予測ユニットに挿入する(S1710)。
その後、インター予測部は、記憶空間に動き情報が記憶されているか否かを判断する(S1720)。記憶空間に記憶されている動き情報がある場合には、段階S1750を行う。このとき、記憶空間に関する具体的な説明は、上述したとおりであり、動き情報も上述のとおりである。
仮に、記憶空間に記憶されている動き情報がないと、インター予測部は、動き情報誘導対象である現在ブロックのサブ予測ユニットが現在ブロックの一番目のサブ予測ユニットであるか否か判断する(S1730)。動き情報誘導対象である現在ブロックのサブ予測ユニットが現在ブロックの一番目のサブ予測ユニットに該当する場合に、インター予測部は段階S1750を行う。
段階S1730で、現在ブロックのサブ予測ユニットが一番目のサブ予測ユニットでない場合、インター予測部は、現在ブロックの一番目のサブ予測ユニットから動き情報誘導対象である現在ブロックのサブ予測ユニットの直前までに存在するサブ予測ユニットに、参照ブロックのサブ予測ユニットに存在する動き情報を挿入する。例えば、動き情報誘導対象である現在ブロックのサブ予測ユニットが三番目のサブ予測ユニットであれば、インター予測部は、参照ブロックのサブ予測ユニットに関する動き情報を、現在ブロックの一番目のサブ予測ユニットから二番目のサブ予測ユニットまでに挿入する。
インター予測部は、記憶空間に、参照ブロックのサブ予測ユニットに関する動き情報を記憶し、更新する(S1750)。このとき、動き情報の記憶及び更新に関する具体的な内容は、上述したとおりである。
インター予測部は、動き情報誘導対象である参照ブロックのサブ予測ユニットが参照ブロックにおける最後のサブ予測ユニットであるか否か判断する(S1790)。動き情報誘導対象である参照ブロックのサブ予測ユニットが参照ブロックにおける最後のサブ予測ユニットである場合には、動き情報誘導手順を終了する。仮に、動き情報誘導対象である参照ブロックのサブ予測ユニットが参照ブロックにおける最後のサブ予測ユニットでないと、インター予測部は、参照ブロックの次のサブ予測ユニットに処理対象を移動する(S1780)。その後、インター予測部は段階S1700乃至S1790の手順を再び行う。
仮に、参照ブロックのサブ予測ユニットに動き情報が存在しない場合には、次のような手順を行う。
インター予測部は、参照ブロックのサブ予測ユニットに動き情報が存在するか否か判断する(S1700)。
仮に参照ブロックのサブ予測ユニットに動き情報が存在しないと、インター予測部は、記憶空間に記憶された動き情報があるか否か判断する(S1770)。仮に記憶空間に記憶された動き情報がないと、インター予測部は段階S1790を行う。
記憶空間に記憶された動き情報がある場合、インター予測部は、動き情報誘導対象であるサブ予測ユニットに、記憶空間に記憶された動き情報を挿入する(S1750)。
インター予測部は、上述した手順を行った後、動き情報誘導対象である参照ブロックのサブ予測ユニットが参照ブロックにおける最後のサブ予測ユニットであるか否か判断する(S1790)。動き情報誘導対象である参照ブロックのサブ予測ユニットが参照ブロックにおける最後のサブ予測ユニットである場合には、動き情報誘導手順を終了する。仮に、動き情報誘導対象である参照ブロックのサブ予測ユニットが参照ブロックにおける最後のサブ予測ユニットでないと、インター予測部は、参照ブロックの次のサブ予測ユニットに処理対象を移動する(S1780)。その後、インター予測部は、段階S1700乃至S1790の手順を行う。
その後、上述の手順によって誘導された現在ブロックに関する動き情報に基づいて、インター予測部は、現在ブロックに対する予測サンプルを誘導する。予測サンプルは、上述した予測信号を意味することができ、上述したように、予測信号は、原信号とレジデュアル信号との差を意味することができる。
上述した現在ブロックに対するサブ予測ユニットの動き情報を誘導する手順を3Dビデオに具体的に適用すると、下記の表1のとおりである。上述したように、表1の動作は、エンコーダ/デコーダ或いはエンコーダ/デコーダのインター予測部で行うことができる。
表1を具体的に説明すると、下記のとおりである。
表1を参照すると、インター予測部には、現在予測ブロックの左上端の位置、現在予測ブロックの幅、現在予測ブロックの高さ、参照視点インデックス、及び変移ベクトルが入力される。このとき、現在予測ブロックの左上端の位置は、(xPb,yPb)と表示することができ、‘xPb’は現在予測ブロックのx軸座標を、‘yPb’は現在予測ブロックのy軸座標を意味することができる。現在予測ブロックの幅は‘nPbW’と表示することができ、現在予測ブロックの高さは‘nPbH’と表示することができる。参照視点インデックスは‘refViewIdx’と表示することができ、変移ベクトルは‘mvDisp’と表示することができる。このとき、インター予測部は、上述したビデオエンコーダ/デコーダのインター予測部に相応してもよい。
また、図17を参照すると、参照ブロックのサブ予測ユニットを用いて、現在ブロックに対するサブ予測ユニットの動き情報を誘導する手順を終えた場合、インター予測部では、時間的視点間動き候補(temporal inter-view motion candidate)が利用可能か否かを判断するフラグと、時間的視点間動きベクトル候補(temporal inter-view motion vector candidate)、参照ピクチャリストに存在する参照ピクチャを指定する参照インデックスを出力する。このとき、時間的視点間動き候補が利用可能か否かを判断するフラグは、‘availableFlagLXInterView’と定義することができ、時間的視点間動きベクトル候補は‘mvLXInterView’と定義することができる。また、参照ピクチャリストは、‘RefPicListLX’と表示することができ、参照ピクチャリストに存在する参照ピクチャを指定する参照インデックスは、‘refIdxLXInterView’と定義することができる。‘availableFlagLXInterView’、‘mvLXInterView’、‘RefPicListLX’、及び‘refIdxLXInterView’に存在する‘LX’は、参照ピクチャリスト0(List 0;L0)又は参照ピクチャリスト1(List 1;L1)であってもよい。
以下、インター予測部で上述の入力から上述の出力を導出するための、参照ブロックのサブ予測ユニットを用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する方法を具体的に説明する。
まず、インター予測部は、参照ブロックのサブ予測ユニットを用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する前に、初期化を行う。このとき、availableFlagLXInterViewは0に設定され、mvLXInterViewは(0,0)に設定され、refIdxLXInterViewは-1に設定される。インター予測部で初期化を行う時、サブ予測ユニットの幅とサブ予測ユニットの高さも初期化される。このとき、サブ予測ユニットの幅は、‘nSbW’と表示することができ、サブ予測ユニットの高さは、‘nSbH’と表示することができる。変数nSbWとnSbHの具体的な初期化方法は、下記の式1のとおりである。
ここで、SubPbSizeは、VPS(video pareameter set)で指定したサブ予測ユニットの高さ、幅のサイズを意味し、nuh_layer_idは、レイヤを識別(例えば、どの参照視点であるかを識別)するインデックスを意味する。Min()は、入力される変数のうち、小さい値を有する変数を出力するためのものであり、下記の式2のように定義することができる。
インター予測部では、上述した変数の他、視点間参照ピクチャ内の(xRef,yRef)位置における輝度(luma)予測ブロックと現在ブロックのサブ予測ユニットを識別する情報、及び記憶空間に記憶された動き情報の使用が可能か否かを識別する情報も初期化されてもよい。
このとき、視点間参照ピクチャ(inter-view reference picture)内の(xRef,yRef)位置における輝度予測ブロックは、現在アクセスユニットにおいて参照ビューインデックスの値と同じビューインデックスを有するピクチャ内ブロックとして設定される。このとき、視点間参照ピクチャ内の(xRef,yRef)位置における輝度予測ブロックは‘ivRefPic’と定義され、アクセスユニットは、映像が符号化/復号化される単位を意味する。アクセスユニットは、同じ出力順序(Picture Order Count:POC)を有する別個の視点の映像を含む。例えば、視点が3個であれば、一つのアクセスユニットは、一番目の視点の一般映像及び/又は深さ情報映像、二番目の視点の一般映像及び/又は深さ情報映像、三番目の視点の一般映像及び/又は深さ情報映像を含むことができる。参照ビューインデックスは、‘refViewIdx’と定義し、ビューインデックスは、‘ViewIdx’と定義することができる。このとき、ViewIdxは現在ピクチャの視点を意味してもよい。
このとき、初期化のために現在ブロックのサブ予測ユニットを識別する情報は0に設定され、現在ブロックのサブ予測ユニットを識別する情報は‘curSubBlockIdx’と定義することができる。記憶空間に記憶された動き情報の使用が可能か否かを識別する情報も0に設定されて初期化され、記憶空間に記憶された動き情報の使用が可能か否かを識別する情報は‘lastAvalableFlag’に設定されてもよい。
上述した変数の初期化を行った後、インター予測部では0から(nPbH/nSbH-1)までの範囲を有するyBlkと、0から(nPbW/nSbW-1)までの範囲を有するxBlkに対しては下記のような手順を行う。このとき、xBlkはブロックのx座標を意味し、yBlkはブロックのy座標を意味する。
まず、インター予測部は、参照ブロックのサブ予測ユニットから動き情報が予測されるか否かを識別する情報、サブ予測ユニット予測フラグ、サブ予測ユニットの動きベクトル、及びサブ予測ユニットの参照インデックスを初期化する。具体的に、参照ブロックのサブ予測ユニットから動き情報が予測されるか否かを識別する情報は0に設定され、このとき、参照ブロックのサブ予測ユニットから動き情報が予測されるか否かを識別する情報は、‘curAvailableFlag’と定義することができる。また、サブ予測ユニット予測フラグは0に設定され、このとき、サブ予測ユニット予測フラグは、‘spPredFlagL1’と定義されてもよく、ブロックの座標を表現するために‘spPredFlagL1[xBlk][yBlk]’と定義されてもよい。サブ予測ユニットの動きベクトルは(0,0)に設定され、サブ予測ユニットの動きベクトルは‘spMvLX’と定義することができる。サブ予測ユニットの参照インデックスは-1に設定され、このとき、サブ予測ユニットの参照インデックスは、‘spRefIdxLX’と定義されてもよく、ブロックの座標を表現するために‘spRefIdxLX[xBlk][yBlk]’と定義されてもよい。
参照ブロックの位置(xRef,yRef)は、下記の式3のように設定することができる。
ここで、xRefは、参照ブロックの位置に対するx座標を意味し、yRefは、参照ブロックの位置に対するy座標を意味する。PicWidthInSamplesLは、現在ピクチャで幅を意味し、PicHeightInSamplesLは、現在ピクチャで高さを意味する。また、Clip3()は、下記の式4のように定義することができる。
視点間参照ブロックがイントラモードで符号化されていない場合、0から1までの範囲を有するXに対して下記の手順を行う。視点間参照ブロックは、ivRefPicが示す視点間参照ピクチャ内の(xRef,yRef)位置における輝度予測ブロックを表し、視点間参照ブロックは、‘ivRefPb’と定義することができる。すなわち、変数ivRefPbは、ivRefPicが示す視点間参照ピクチャ内の(xRef,yRef)位置における輝度予測ブロックを表し、ivRefPicは、視点間参照ピクチャを意味する。ivRefPbが示す参照ブロックの左上端の位置は(xIvRefPb,yIvRefPb)に設定されてもよい。
まず、Xが0であるか、又は現在スライスがBスライスである場合には、Y(YはXから(1-X)までの範囲を有する。)に対して次のようにそれぞれの変数を再設定する。refPicListLYIvRefは、ivRefPicが示すピクチャ内のRefPicListLYに設定され、このとき、RefPicListLYは参照ピクチャリストを意味する。predFlagLYIvRef[x][y]は、ivRefPicが示すピクチャ内のPredFlagLY[x][y]に設定され、このとき、PredFlagLYは、参照ピクチャリストを示す識別子を意味する。mvLYIvRef[x][y]は、ivRefPicが示すピクチャ内のMvLY[x][y]に設定され、このとき、MvLYは動きベクトルを意味する。同様に、refIdxLYIvRef[x][y]は、ivRefPicが示すピクチャ内のRefIdxLY[x][y]に設定され、このとき、RefIdxLYは参照インデックスを意味する。
ここで、predFlagLYIvRef[xIvRefPb][yIvRefPb]が1の値を有する場合、0からnum_ref_idx_lX_active_minus1(参照ピクチャリスト内に存在する参照ピクチャの個数)までの範囲を有するiに対しては下記の式5を適用することができる。
一方、表1を参照すると、curAvailableFlagが1である場合と0である場合とに区別してそれぞれ下記のような手順を適用する。
まず、curAvailableFlagが1であれば、インター予測部では下記のような手順を行う。
1.lastAvailableFlagが0であれば、0から1までの範囲を有するXに対して下記の式6を適用することができる。
lastAvailableFlagが0であり、curSubBlockIdxが0よりも大きいとき、0から(curSubBlockIdx-1)までの範囲を有するkに対して、変数iとjは、下記の式7が適用されてもよい。
このとき、0から1までの範囲を有するXに対しては下記の式8が適用される。
1.上述した過程の後、インター予測部では変数lastAvailableFlagに1を代入する。
3.その後、インター予測部では変数xLastAvailとyLastAvailにそれぞれxBlkとyBlkを記憶させる。
仮に、curAvailableFlagが1であり、lastAvailableFlagが1であれば、インター予測部では、0から1までの範囲を有するXに対して下記の式9を適用する。
最後に、上述の過程を完了すると、変数curSubBlockIdxはcurSubBlockIdx+1に設定される。
図17に示した、現在ブロックに対するサブ予測ユニットの動き情報を誘導する方法は、参照ブロック内のサブ予測ユニットから動き情報を誘導できない場合、以前(又は以降)に参照した参照ブロックのサブ予測ユニットに関する動き情報を用いる。したがって、図17の動き情報誘導方法では他の参照ブロックのサブ予測ユニットを必ず参照しなければならず、図17の動き情報誘導方法は依存性を有することになる。依存性を有する動き情報誘導方法は、並列的な設計に脆弱な構造を有する。依存性を有する動き情報誘導方法が並列的な設計に脆弱であるという点を、図18を用いて具体的に説明する。
図18には、参照ブロックのサブ予測ユニットを用いて現在ブロックのサブ予測ユニットの情報を並列的に誘導する手順の一例を示す。
図18を参照すると、Refは参照ブロックを意味し、このとき、Ref0,1,2,3,4,5,6,7はそれぞれ、参照ブロックのサブ予測ユニット0,1,2,3,4,5,6,7を意味する。Curは現在ブロックを意味し、このとき、Cur0,1,2,3,4,5,6,7はそれぞれ、現在ブロックのサブ予測ユニット0,1,2,3,4,5,6,7を意味する。Ref2,3,4,5内のXは、参照ブロックのサブ予測ユニット2,3,4,5のそれぞれを動き情報誘導時に用いることができないということを意味する。
図18に係る実施例として、インター予測部では、動き情報の誘導が不可能なサブ予測ユニットから動き情報を誘導するために、上述したように、動き情報誘導が可能なサブ予測ユニットを検出する。このため、インター予測部では現在ブロックに対するそれぞれのサブ予測ユニット別に、独立して動き情報を誘導することが不可能であり、上述した手順による動き情報誘導は並列化し難いという問題点がある。
図19には、参照ブロック内で使用可能なサブ予測ユニットが右下端に位置している場合、使用可能なサブ予測ユニットを探索する手順の一例を示す。
図19を参照すると、各四角形はサブ予測ユニットを意味し、太い実線で表した四角形は、動き情報誘導時に使用可能なサブ予測ユニットを意味し、細い実線で表した四角形は、動き情報誘導時に利用不可能なサブ予測ユニットを意味する。また、点線で表した矢印は、動き情報を探索する順序を示す。
図19に示すように、参照ブロック内で動き情報を誘導できるサブ予測ユニットが右下端にのみ位置している場合には、参照ブロック内の左上端から、点線の矢印に沿って順に、動き情報誘導が可能なサブ予測ユニットを探索しなければならない。普通の場合、どの参照ブロックのどのサブ予測ユニットが動き情報誘導に利用可能かを知っていないため、参照ブロックの一番目のサブ予測ユニットから順次に、サブ予測ユニットが動き情報誘導に利用可能か否かを探索するわけである。
しかし、図19に示す動き情報の誘導は、使用可能なサブ予測ユニットを探すために、参照ブロックに存在する全サブ予測ユニットを検査しているため、頻繁なメモリの接近を招く。このとき、参照ブロックのサブ予測ユニットのうち、動き情報を有するサブ予測ユニットが少ない場合には、無駄にサブ予測ユニットを探索することになってしまう。特に、参照ブロックの全サブ予測ユニットが動き情報誘導に利用不可能な場合には、使用可能な参照ブロックのサブ予測ユニットを探索する手順にはなんの利得もなく、不要なメモリ接近だけをきたす結果となる。ここで、動き情報がないということは、現在ブロックが隣接フレーム内の参照ブロックから類似の領域を探索できなかったということを意味する。
したがって、参照ブロック内に動き情報を有するサブ予測ユニットが少ないか、動き情報を有するサブ予測ユニットが全くない場合には、イントラ予測を用いて現在ブロックをより効率的に符号化/復号化することができる。すなわち、参照ブロック内に動き情報を有するサブ予測ユニットが少ないか、又は動き情報を有するサブ予測ユニットが全くない場合には、現在ブロックの周辺ピクセルから類似の領域を探して、現在ブロックの符号化/復号化を行うことがより一層効率的である。
図20は、サブ予測ユニット単位で動き情報を誘導するためにかかる時間を概略的に示す図である。
図20によれば、一つのサブ予測ユニット内の動き情報を誘導するためにかかる時間がTであり、参照ブロック内のサブ予測ユニットの個数がNであれば、参照ブロック内の全動き情報を誘導するためにかかる時間はN×Tとなる。上述した動き情報誘導方法は、データの依存性、及び頻繁なメモリ接近という問題を招く。データの依存性を有する動き情報誘導方法では各サブ予測ユニットの動き情報を独立して誘導することができず、よって、一つのサブ予測ユニットに関する動き情報を誘導するためには、他のサブ予測ユニットに関する動き情報が誘導されることを待たなければならない。このため、データの依存性を有する動き情報誘導方法では符号化/復号化遅延時間が発生する。
結果的に、上述した動き情報誘導方法では、同時に動き情報を誘導するデータ並列化の効果を得ることができなく、上述した動き情報誘導方法の設計構造上で発生する頻繁なメモリ接近によって、メモリ使用効率が低下するという問題点がある。
本発明では、上述した問題点を解決するために、動き情報誘導時に依存性を除去する装置及び方法を提案する。図21には、本発明が適用されるインター予測部の構造の一例を示し、図22乃至図26には、本発明が適用される動き情報誘導方法の実施例を具体的に示す。
図21は、本発明が適用されるインター予測部2100の構造を示すブロック図である。
図21を参照すると、インター予測部2100は、記憶部2110及び誘導部2120を含むことができる。ここで、インター予測部2100は、上述した3次元ビデオエンコーダにおけるインター予測部710又は3次元ビデオデコーダにおけるインター予測部850を意味することができる。また、図21のインター予測部2100は、上述した3次元ビデオ符号化/復号化手順に適用されてもよい。
記憶部2110は、任意の動き情報を指定して、任意の動き情報を記憶空間に記憶する。記憶部2110に記憶される任意の動き情報を求めるために、参照ブロックの任意の位置に存在する動き情報を用いることができる。この時、任意の位置は、参照ブロックの中央を意味してもよく、参照ブロックの中央を含む(サブ)予測ユニットを意味してもよい。また、記憶部2110に記憶された任意の動き情報は、任意の初期値に設定されてもよい。仮に、任意の動き情報を記憶空間に記憶させることができない場合には、サブ予測ユニット単位で動き情報を誘導する手順を省略してもよい。サブ予測ユニット単位で動き誘導を省略する場合には、上述したようにイントラ予測を行ってもよい。記憶部2110の具体的な実施例は、後述する。
誘導部2120は、現在ブロックのサブ予測ユニットで動き情報を誘導する手順を行う。この時、誘導部2120では基本的に、前述した動き誘導手順を行うことができる。ただし、本発明で提案する誘導部2120では、現在ブロックの一番目のサブ予測ユニットに対応する参照ブロックのサブ予測ユニットに動き情報が存在しない場合には、動き情報が存在する参照ブロックのサブ予測ユニットを見つけるまで検索を行った後、動き情報が存在する参照ブロックのサブ予測ユニットから現在ブロックの一番目のサブ予測ブロックの動き情報を誘導する代わりに、記憶部に記憶された動き情報から現在ブロックの一番目のサブ予測ブロックの動き情報を誘導することができる。誘導部2120の具体的な実施例は、後述する。
以下、本発明の具体的な実施例を、図面を参照して具体的に説明する。
実施例1
図22は、本発明の一実施例に係る、参照ブロックを用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する方法を概略的に説明するフローチャートである。
実施例1では、参照ブロックの中央位置に関する動き情報に基づいて、現在ブロックのサブ予測ユニット(現在サブユニット)に関する動き情報を誘導する。実施例1は、エンコーダ及びデコーダで行われてもよく、エンコーダ及びデコーダの予測部又はインター予測部で行われてもよい。ここでは、説明の便宜のために、図21のインター予測部2100が実施例1の動作を行うとして説明する。
図22を参照すると、インター予測部2100は、参照ブロック内中央位置を誘導することができる(S2200)。参照ブロック内中央位置は、式10のように誘導することができる。このとき、参照ブロックは、参照ピクチャ内で現在ブロックと同じ位置のブロックであって、現在ブロックと同じサイズを有することができる。
ここで、xPb、yPbは、現在PUの左上端の位置を表し、nPbWは、現在PUの幅、nPbHは現在PUの高さを意味する。
インター予測部2100は、参照ブロック内中央位置に動き情報が存在するか否かを判断することができる(S2210)。参照ブロック内中央位置は、上述のように特定することができる。
参照ブロック内中央位置に利用可能な(available)動き情報が存在しないと、インター予測部2100は動き情報誘導手順を終了することができる。例えば、参照ブロックの中央に利用可能な動き情報がないと、インター予測部2100は、現在ブロックに関する動き情報を誘導しなくてもよい。
参照ブロック内中央位置に動き情報が存在すると、インター予測部2100は、参照ブロックの中央位置に存在する動き情報を記憶空間に記憶することができる(S2220)。参照ブロックの中央に位置する動き情報は、参照ブロックの中央に最も隣接したフルサンプル(full sample)位置を含む予測ブロックに関する動き情報であってもよい。インター予測部2100で動き情報を記憶する具体的な手順は、上述したとおりである。インター予測部2100は、記憶された参照ブロックの動き情報に基づいて現在サブ予測ユニットの動き情報を誘導することができる。
インター予測部2100は、現在サブ予測ユニットに対応する参照ブロックのサブ予測ユニットに動き情報が存在するか否か判断することができる(S2240)。
参照ブロックのサブ予測ユニットに動き情報が存在する場合、インター予測部2100は、現在サブ予測ユニットに、参照ブロックのサブ予測ユニットに関する動き情報を挿入することができる(S2250)。すなわち、インター予測部2100は、参照ブロックのサブ予測ブロックに関する動き情報(例えば、動きベクトル、参照ピクチャインデックス)を、対応する現在サブ予測ユニットに関する動き情報として設定することができる。
参照ブロックのサブ予測ユニットに利用可能な動き情報が存在しない場合、インター予測部2100は、記憶空間に記憶された参照ブロックの動き情報を、現在サブ予測ユニットに挿入する(S2260)。すなわち、現在サブ予測ブロックに対応する参照ブロック内サブ予測ブロックの動き情報が利用可能でないと、インター予測部2100は、S2200段階で記憶した参照ブロックの中央に関する動き情報を、現在サブ予測ブロックに関する動き情報として設定することができる。
インター予測部2100は、現在サブ予測ユニットに対応する参照ブロック内サブ予測ブロックが参照ブロック内最後のサブ予測ユニットであるか(すなわち、現在サブ予測ブロックが現在ブロック内の最後のサブ予測ブロックであるか)否か判断することができる(S2270)。インター予測部2100は、参照ブロックのサブ予測ユニットが最後のサブ予測ユニットであると、動き情報誘導手順を終了することができる。
参照ブロックのサブ予測ユニットが最後のサブ予測ユニットでないと、インター予測部2100は、動き情報の誘導を繰返し行うために、現在ブロックの次のサブ予測ユニットに対して動き情報の誘導を行う(S2230)。
上述した実施例1の動き情報誘導手順を3Dビデオのデコーディングに適用すると、下記の表2のとおりである。
表2に基づいて実施例1を再び説明すると、下のとおりである。
表2を参照すると、インター予測部2100には、現在予測ブロックの左上端の位置、現在予測ブロックの幅、現在予測ブロックの高さ、参照視点インデックス、及び変移ベクトルが入力される。このとき、現在予測ブロックの左上端の位置は、(xPb,yPb)と定義することができる。現在予測ブロックの幅は‘nPbW’と定義することができ、現在予測ブロックの高さは、‘nPbH’と定義することができる。参照視点インデックスは、‘refViewIdx’と定義することができ、変移ベクトルは、‘mvDisp’と表示することができる。
参照ブロックのサブ予測ユニットを用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する手順を終えた場合、インター予測部2100では、視点間予測が可能か否かを判断するフラグと、視点間動きベクトル、参照ピクチャリストに存在する参照ピクチャを指定する参照インデックスを出力することができる。このとき、視点間動き候補が利用可能か否かを判断するフラグは、‘availableFlagLXInterView’と定義することができ、時間的視点間動きベクトル候補は、‘mvLXInterView’と定義することができる。また、参照ピクチャリストは、‘RefPicListLX’と定義することができ、参照ピクチャリストに存在する参照ピクチャを指定する参照インデックスは、‘refIdxLXInterView’と表示することができる。‘availableFlagLXInterView’、‘mvLXInterView’、‘RefPicListLX’、及び‘refIdxLXInterView’に存在する‘LX’は、参照ピクチャリスト0(List 0;L0)又は参照ピクチャリスト1(List 1;L1)であってもよい。
以下、上述の入力から上述の出力を導出して、現在ブロックのサブ予測ユニットに関する動き情報を誘導する方法を具体的に説明する。
まず、インター予測部2100は、参照ブロックのサブ予測ユニットを用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する前に、初期化を行う。このとき、availableFlagLXInterViewは0に設定され、mvLXInterViewは(0,0)に設定され、refIdxLXInterViewは-1に設定されてもよい。また、インター予測部2100で初期化を行うとき、サブ予測ユニットの幅とサブ予測ユニットの高さも初期化されてもよい。このとき、サブ予測ユニットの幅は、‘nSbW’と表示し、サブ予測ユニットの高さは‘nSbH’と表示することができる。式11は、変数nSbW及びnSbHの初期化方法の一例である。
このとき、SubPbSizeは、VPSで指定したサブ予測ユニットの高さ、幅のサイズを意味し、nuh_layer_idは、レイヤを識別(例えば、どの参照視点であるかなどを識別)するインデックスを意味する。Min()は、入力される変数のうち、小さい値を有する変数を出力する演算子である。
インター予測部2100では、上述した変数の他、視点間参照ピクチャ内の(xRef,yRef)位置における輝度(luma)予測ブロックと現在ブロックのサブ予測ユニットを識別する情報、及び記憶空間に記憶された動き情報の使用が可能か否かを識別する情報も初期化することができる。
このとき、視点間参照ピクチャは、現在アクセスユニットにおいて参照ビューインデックスの値と同じビューインデックスを有するピクチャに設定されてもよい。この時、視点間参照ピクチャは‘ivRefPic’と表示し、視点間参照ピクチャ内の(xRef,yRef)位置における輝度予測ブロックは、‘ivRefPb’と表示することができる。一つのアクセスユニットは、同じ出力順序(Picture Order Count:POC)を有する別個の視点の映像を含む。参照視点インデックスは‘refViewIdx’と定義することができ、視点インデックスは‘ViewIdx’と定義することができる。
参照位置は、実施例1に係る参照ブロックの中央を含む(cover)予測ブロックを特定する位置であってもよい。この時の参照位置に関する動き情報を、現在サブ予測ユニットに関する動き情報を誘導するために記憶することができる。式12は、参照位置(xRef,yRef)を誘導する方法の一例である。
ここで、xRefFull及びyRefFullは、参照ブロックの中央に近接したフルサンプルの位置を表す。すなわち、xRefFullとyRefFullは、整数位置のサンプルに対するx座標とy座標を表す。
ivRefPbは、(xRef,yRef)を含む(cover)予測ブロック又はサブ予測ユニットであってもよい。輝度サンプルの位置(xIvRefPb,yIvRefPb)がivRefPbの左上端を特定することができる。
仮にivRefPbがイントラモードで符号化/復号化されていないと、Xから(1-X)までの範囲を有するYに対して下記の(1)及び(2)の過程を適用することができる。
(1)refPicListLYIvRefは、視点間参照ピクチャivRefPic内のRefPicListLYに設定し、predFlagLYIvRef[x][y]は、視点間参照ピクチャivRefPic内のPredFlag[x][y]に設定し、refIdxLYIvRef[x][y]は、視点間参照ピクチャivRefPic内のRefIdxLY[x][y]に設定することができる。
(2)仮にpredFlagLYIvRef[xIvRefPb][yIvRefPb]の値が1であれば、0からnum_ref_idx_lX_active_minus1(参照ピクチャリストXに存在する参照ピクチャの個数)までの範囲を有するiに対して次の過程を適用する:仮にrefPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]]のPOC(Picture Order Count:ピクチャの出力順序)がRefPicListLX[i]と同一であり、availableFlagLXInterViewが0であれば、式13を適用することができる。
次に、availableFlagL0InterView又はavailableFlagL1InterViewが1であれば、インター予測部2100は、0から(nPbH/nSbH-1)までの範囲を有するyBlkと、0から(nPbW/nSbW-1)までの範囲を有するxBlkに対しては、下記のような手順を行う。このとき、xBlkはx座標を意味し、yBlkはy座標を意味する。言い換えると、参照ブロックの中央で可用の動き情報が誘導された場合に、インター予測部2100は、サブ予測ブロック単位で動き情報を誘導することができる。
まず、インター予測部2100は、参照ブロックのサブ予測ユニットから動き情報が予測されるか否かを識別する情報、サブ予測ユニット予測フラグ、サブ予測ユニットの動きベクトル、及びサブ予測ユニットの参照インデックスを初期化することができる。
このとき、参照ブロックのサブ予測ユニットから動き情報が予測されるか否かを識別する情報は‘curAvailableFlag’と、サブ予測ユニット予測フラグは‘spPredFlagLX1’と、サブ予測ユニットフラグは‘spPredFlagLX[xBlk][yBlk]’と、サブ予測ユニットの動きベクトルは‘spMvLX’と、サブ予測ユニットの参照インデックスは‘spRefIdxLX’と定義することができ、サブ予測ユニットの参照インデックスは、‘spRefIdxLX[xBlk][yBlk]’と定義することができる。
参照ブロックの位置(xRef,yRef)は、下記の式14のようにサブブロック単位で再設定される。
PicWidthInSamplesLは、現在ピクチャの幅を意味し、PicHeightInSamplesLは、現在ピクチャの高さを意味する。また、Clip3()は上述したとおりである。
その後、視点間参照ブロックがイントラモードで符号化されていない場合、0から1までの範囲を有するXに対して下記の手順を行う。
Xが0であるか、又は現在スライスがBスライスである場合には、Y(Yは、Xから(1-X)までの範囲を有する。)に対して次のようにそれぞれの変数を再設定する。refPicListLYIvRefを、ivRefPicによって特定されるピクチャ(すなわち、視点間参照ピクチャ)に対する参照ピクチャリストRefPicListLYに設定することができる。predFlagLYIvRef[x][y]はPredFlagLY[x][y]に設定される。PredFlagLY[x][y]は、ivRefPicが特定するピクチャ内(x,y)位置で適用される参照ピクチャリストを示す。mvLYIvRef[x][y]はMvLY[x][y]に設定される。MvLY[x][y]は、ivRefPicが特定するピクチャ内(x,y)における動きベクトルを意味する。refIdxLYIvRef[x][y]はRefIdxLY[x][y]に設定される。RefIdxLY[x][y]は、ivRefPicが示すピクチャ内(x,y)における参照ピクチャを表す。
predFlagLYIvRef[xIvRefPb][yIvRefPb]が1の値を有する場合、0からnum_ref_idx_lX_active_minus1(参照ピクチャリスト内に存在する参照ピクチャの個数)までの範囲を有するiに対して、refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]]のPOCがRefPicListLX[i]と同一であり、spPredFlagLX[xBlk][yBlk]が0であれば、下記の式15を適用することができる。
上述した過程を行った後にも、設定されたcurAvailableFlagが0である場合(すなわち、spRefIdxLX=iでなく(例えば、spRefIdxLx=-1)、spPredFlagLX=1でない(例えば、spPredFlagLX=-1である)場合)は、サブブロック単位で動き情報を誘導できない場合といえる。このため、インター予測部2100は、0から1までの範囲を有するXに対して式16を適用することができる。
すなわち、参照ブロックのサブ予測ユニットから動き情報の誘導が不可能な場合、インター予測部2100は、参照ブロックの中央位置に関する動き情報から現在ブロックのサブ予測ユニットに関する動き情報を誘導することができる。
最後に、以上の過程を完了すると、変数curSubBlockIdxはcurSubBlockIdx+1に設定され、仮にavailableFlagL0InterViewとavailableFlagL1InterViewが0であれば、本発明の実施例1による動き情報誘導過程は終了する。
実施例2
図23は、本発明の他の実施例によって、現在ブロックに対するサブ予測ユニットの動き情報を誘導する方法を概略的に説明するフローチャートである。図23の例では、参照ブロックの任意の位置に存在するサブ予測ユニットを用いて、現在ブロックに対するサブ予測ユニットの動き情報が誘導することができる。
実施例2では、参照ブロックの中央部分を含むサブ予測ユニットの動き情報に基づいて、現在ブロックのサブ予測ユニットに関する動き情報を誘導することができる。
図23の例は、エンコーダ及びデコーダで行われてもよく、エンコーダ及びデコーダの予測部又は図21のインター予測部2100で行われてもよい。ここでは、説明の便宜のために、インター予測部2100が図23の各段階を行うとして説明する。
図23を参照すると、インター予測部2100は、参照ブロック中央のサブ予測ユニット(中央サブ予測ユニット)の位置を導出することができる(S2300)。参照ブロック内に位置している中央サブ予測ユニットは、参照ブロックの中央部分に位置するサブ予測ユニットを意味し、参照ブロックの中央は、上述したとおりである。式17は、参照ブロック内中央サブ予測ユニットの位置を誘導する一例である。
ここで、(xPb,yPb)は、現在予測ユニットの左上端の位置を表し、nPbWは現在予測ユニットの幅、nPbHは現在予測ユニットの高さを意味する。
インター予測部2100は、参照ブロック内中央サブ予測ユニットに動き情報が存在するか否かを判断し(S2310)、参照ブロック内中央サブ予測ユニットの位置は上述したとおりである。仮に、参照ブロック内中央サブ予測ユニットの位置で動き情報が存在しない場合には、インター予測部2100は動き情報誘導手順を終了することができる。
参照ブロック内中央サブ予測ユニットに動き情報が存在する場合、インター予測部2100は、中央位置に存在する動き情報を記憶することができる(S2320)。インター予測部2100が動き情報を記憶する具体的な手順は、上述したとおりである。
インター予測部2100は、現在サブ予測ユニットの動き情報の誘導を行う。インター予測部2100は、現在サブ予測ユニットに対応する参照ブロックのサブ予測ユニットに動き情報が存在するか否かを判断することができる(S2340)。
参照ブロックのサブ予測ユニットに動き情報が存在する場合、インター予測部2100は、参照ブロックのサブ予測ユニットに存在する動き情報を現在サブ予測ユニットに挿入することができる(S2350)。仮に、参照ブロックのサブ予測ユニットに動き情報が存在しない場合、インター予測部2100は、S2320で記憶した動き情報を現在サブ予測ユニットに挿入することができる(S2360)。
インター予測部2100は、動き情報誘導の対象となる参照ブロックのサブ予測ユニットが最後のサブ予測ユニットであるか否か判断することができる(S2370)。参照ブロックのサブ予測ユニットが最後のサブ予測ユニットである場合に、インター予測部2100は、現在ブロックに関する動き情報誘導の手順を終了することができる。仮に、参照ブロックのサブ予測ユニットが最後のサブ予測ユニットでない場合には、動き情報の誘導を繰返し行うために、現在ブロック内の次のサブ予測ユニットに対象を移動する(S2330)。
上述した実施例2の動き情報誘導手順を3Dビデオに適用すると、表3のとおりである。
表3に基づいて実施例2を再び説明すると、下記のとおりである。
表3で用いる変数は、表2における説明と同一である。
インター予測部2100では、参照ブロックのサブ予測ユニットを用いて現在サブ予測ユニットの動き情報を誘導するに先立ち、初期化を行う。初期化の内容は、表2で説明したとおりである。
インター予測部は、参照ブロックの中央サブ予測ユニットの位置を特定することができる。この時に参照するブロックの位置は、参照位置に基づいて決定することができ、参照位置(xRef,yRef)は式18のように誘導される。
ivRefPicは、現在アクセスユニットでrefViewIdxと同じViewIdxを有するピクチャであり、ivRefPbは、ivRefPic内で式19によって誘導された(xRef,yRef)位置を含む予測ブロック又はサブ予測ユニットである。
(xIvRefPb,yIvRefPb)は、ivRefPbの左上端の位置を特定する。
仮にivRefPbがイントラモードで符号化/復号化されておらず、Xが0であるか、又は現在スライスがBスライスである場合には、Xから(1-X)までの範囲を有するYに対して下記のような手順を適用する。
表2で説明したとおり、refPicListLYIvRefはRefPicListLYに設定され、predFlagLYIvRef[x][y]はPredFlag[x][y]に設定され、refIdxLYIvRef[x][y]はRefIdxLY[x][y]に設定される。
仮にpredFlagLYIvRef[xIvRefPb][yIvRefPb]が1であれば、0からnum_ref_idx_lX_active_minus1(参照ピクチャリストXに存在する参照ピクチャの個数)までの範囲を有するiに対して、refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]]のPOC(Picture Order Count:ピクチャの出力順序)がRefPicListLX[i]と同一であり、availableFlagLXInterViewが0である場合に式19を適用する。
式19で、centerAvailableFlagは、参照ブロック内の中央サブ予測ユニットを利用可能か否かを示し、centerMvLXは、参照ブロック内の中央サブ予測ユニットに対する動きベクトルを意味する。また、centerRefIdxLXは、参照ブロック内の中央サブ予測ユニットに対する参照インデックスを示し、centerPredFlagLXは、中央サブ予測ユニットの参照ピクチャリストを示す。このとき、centerAvailableFlag、centerMvLX、centerRefIdxLX、及び/又はcenterPredFlagLXは、中央サブ予測ユニットの動き情報を意味する。すなわち、インター予測部2100は、式19によって設定した参照ブロックの中央サブ予測ユニットの動き情報を記憶空間に記憶することができる。
上述したように変数の値を設定した後、centerAvailableFlagが1である場合、インター予測部2100では、0から(nPbH/nSbH-1)までの範囲を有するyBlkと、0から(nPbW/nSbW-1)までの範囲を有するxBlkに対しては、下記のような手順を行う。このとき、xBlkはブロックのx座標を意味し、yBlkはブロックのy座標を意味する。言い換えると、参照ブロック中央のサブブロックで可用の動き情報が誘導された場合に、インター予測部2100はサブ予測ブロック単位で現在ブロックの動き情報を誘導することができる。
まず、インター予測部2100は、参照ブロックのサブ予測ユニットから動き情報が予測されるか否かを識別する情報、サブ予測ユニット予測フラグ、サブ予測ユニットの動きベクトル、及びサブ予測ユニットの参照インデックスを初期化する。具体的な内容は、表2で説明したとおりである。
参照ブロックの位置(xRef,yRef)は、サブ予測ブロック単位で式20のように再設定される。
ここで、xRefは、参照ブロックの位置に対するx座標を意味し、yRefは、参照ブロックの位置に対するy座標を意味する。PicWidthInSamplesLは、現在ピクチャの幅を意味し、PicHeightInSamplesLは、現在ピクチャの高さを意味する。Clip3()は、上述したとおりである。
視点間参照ブロックがイントラモードで符号化されていない場合、インター予測部2100は、0から1までの範囲を有するXに対して下記の手順を行う。
まず、Xが0であるか、又は現在スライスがBスライスであるときには、Y(Yは、Xから(1-X)までの範囲を有する。)に対して次のようにそれぞれの変数を再設定する。具体的な内容は、表2で説明したとおりである。
この時、predFlagLYIvRef[xIvRefPb][yIvRefPb]が1の値を有する場合、0からnum_ref_idx_lX_active_minus1(参照ピクチャリスト内に存在する参照ピクチャの個数)までの範囲を有するiに対して、refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]]のPOCがRefPicListLX[i]と同一であり、spPredFlagLX[xBlk][yBlk]が0であれば、下記の式21を適用することができる。
上述した手順を行った後にも、設定されたcurAvailableFlagが0である場合(すなわち、spRefIdxLX=iでなく(例えば、spRefIdxLx=-1)、spPredFlagLX=1でない(例えば、spPredFlagLX=-1である)場合)は、サブブロック単位で動き情報を誘導できない場合といえる。したがって、インター予測部2100は、0から1までの範囲を有するXに対して式22を適用することができる。
すなわち、参照ブロックのサブ予測ユニットから動き情報を誘導できない場合、インター予測部2100は、中央サブユニットの動き情報から現在ブロックのサブ予測ユニットに関する動き情報を誘導することができる。
最後に、上述した過程を全て行った場合、変数curSubBlockIdxはcurSubBlockIdx+1に設定され、仮にavailableFlagL0InterView及びavailableFlagL1InterViewが0であれば、本発明の実施例2による動き情報誘導手順は終了する。
図24は、任意の位置の動き情報を用いて、現在ブロックに対するサブ予測ユニットの動き情報を誘導する手順の一例を示す図である。
図24を参照すると、図24の上段に位置している各ブロックは、参照ブロックのサブ予測ユニットを意味し、図24の下段に位置している各ブロックは、現在ブロックのサブ予測ユニットを意味する。また、Xは任意の位置を意味し、Xの動き情報は、記憶空間に記憶される。このとき、図24の任意の位置の動き情報は、実施例1の参照ブロックの中間位置の動き情報を意味することができ、図24の任意の位置の動き情報は、実施例2の参照ブロックの中央サブ予測ユニットの動き情報を意味することができる。
任意の位置の動き情報を用いて、現在ブロックに対するサブ予測ユニットの動き情報を誘導する場合、参照ブロックのサブ予測ユニットはそれぞれ、任意の位置の動き情報を用いることができる。すなわち、現在ブロックの複数のサブ予測ユニットは同時に任意の位置の動き情報を用いて動き情報を誘導することができ、任意の位置の動き情報を用いた動き情報の誘導は、データ依存性を克服することができる。したがって、任意の位置の動き情報を用いる場合、インター予測部2100は、並列的な動き情報の誘導が可能になる。
上述したように、実施例1及び実施例2は、任意の位置に存在する動き情報を用いて動き情報を誘導する。したがって、実施例1及び実施例2による動き情報誘導方法は、参照ブロック内に存在する各サブ予測ユニットがそれぞれ独立して誘導されるようにする。すなわち、実施例1及び実施例2では、動き情報の誘導が可能なサブ予測ユニットを探すために、順次に動き情報の誘導可能なサブ予測ユニットを探索する必要がなく、参照ブロックの一番目のサブ予測ユニットを動き情報の誘導に利用不可能な場合には、実施例1及び実施例2では、既に設定された動き情報を用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する。これによって、実施例1及び実施例2による動き情報の誘導は、データ依存性を除去し、各サブ予測ユニットの動き情報を並列的に誘導することができるという利点がある。また、実施例1及び実施例2による動き情報の誘導は、既存の動き情報誘導に比べて追加のメモリ接近を防止し、メモリ接近の回数を軽減するという利点がある。
実施例3
図25は、本発明の更に他の実施例に係る、任意の動き情報値を用いて現在ブロックに対するサブ予測ユニットの動き情報を誘導する方法を示すフローチャートである。
図25を参照すると、実施例3は、初期(Default)動き情報を設定し、参照ブロックのサブ予測ユニットから動き情報の誘導が不可能な場合、設定された初期動き情報から現在サブ予測ユニットに関する動き情報を誘導する方法を提供する。このとき、設定された初期動き情報は、零ベクトルなどを意味することができる。実施例3による具体的な動き情報誘導方法は、下記のとおりである。
インター予測部2100は、初期動き情報を記憶空間に記憶することができる(S2500)。インター予測部2100が動き情報を記憶する具体的な手順は、上述したとおりである。
その後、インター予測部2100は、現在サブ予測ユニットの動き情報誘導を行うことができる。インター予測部2100は、現在サブ予測ユニットに対応する参照ブロックのサブ予測ユニットに動き情報が存在するか否かを判断することができる(S2520)。
参照ブロックのサブ予測ユニットに動き情報が存在する場合、インター予測部2100は、現在サブ予測ユニットに参照ブロックサブ予測ユニットの動き情報を挿入することができる(S2530)。参照ブロックのサブ予測ユニットに動き情報が存在しない場合、インター予測部2100は、記憶空間に記憶された動き情報を現在サブ予測ユニットに挿入することができる(S2540)。
インター予測部2100は、動き情報誘導の対象となる参照ブロックのサブ予測ユニットが、最後のサブ予測ユニットであるか判断することができる(S2550)。参照ブロックのサブ予測ユニットが最後のサブ予測ユニットであると、インター予測部2100は動き情報の誘導手順を終了する。参照ブロックのサブ予測ユニットが最後のサブ予測ユニットでないと、インター予測部2100は、動き情報の誘導を繰返し行うために、参照ブロックの次のサブ予測ユニットの動き情報を探索することができる(S2510)。
上述した実施例3の動き情報誘導手順を3D-HEVC Draft Text 2に適用すれば、下記の表4のとおりである。
表4に基づいて実施例3を再び説明すると、下記のとおりである。表3で用いる変数は、表2で説明したとおりである。
インター予測部2100では、参照ブロックのサブ予測ユニットを用いて現在サブ予測ユニットの動き情報を誘導するに先立ち、初期化を行う。初期化の内容は、表2で説明したとおりである。
また、変数availableFlagLXZero、mvLXZero、及びrefIdxLXZeroはそれぞれ、式23及び式24のように設定される。このとき、Xは、0又は1である。
ここで、availableFlagLXZeroは、初期動き情報を利用可能か否かを示す識別子を意味し、mvLXZeroは、初期動き情報を意味し、refIdxLXZeroは、初期動き情報の参照インデックスを意味する。
上述したように変数の値を設定した後、インター予測部2100では、0から(nPbH/nSbH-1)までの範囲を有するyBlk、及び0から(nPbW/nSbW-1)までの範囲を有するxBlkに対しては、下記のような手順を行う。このとき、xBlkはブロックのx座標を意味し、yBlkはブロックのy座標を意味する。
まず、インター予測部2100は、参照ブロックのサブ予測ユニットから動き情報が予測されるか否かを識別する情報、サブ予測ユニット予測フラグ、サブ予測ユニットの動きベクトル、及びサブ予測ユニットの参照インデックスを初期化する。具体的な内容は、表2で説明したとおりである。
参照ブロックの位置(xRef,yRef)は、サブ予測ブロック単位で式25のように再設定される。
視点間参照ブロックがイントラモードで符号化されていない場合、インター予測部2100は、0から1までの範囲を有するXに対して下記の手順を行うことができる。
まず、Xが0であるか、又は現在スライスがBスライスであるときには、Y(Yは、Xから(1-X)までの範囲を有する。)に対して、表2で説明したようにそれぞれの変数を再設定する。
predFlagLYIvRef[xIvRefPb][yIvRefPb]が1の値を有する場合、0からnum_ref_idx_lX_active_minus1(参照ピクチャリスト内に存在する参照ピクチャの個数)までの範囲を有するiに対しては、下記の式26を適用することができる。
上述した手順を行った後、curAvailableFlagが0であれば、インター予測部2100は、0から1までの範囲を有するXに対して式27を適用することができる。
すなわち、参照ブロックのサブ予測ユニットから動き情報の誘導が不可能な場合、インター予測部2100は、任意に設定された初期動き情報から現在ブロックのサブ予測ユニットに関する動き情報を誘導することができる。
最後に、上述した手順を全て行った場合、変数curSubBlockIdxはcurSubBlockIdx+1に設定され、仮にavailableFlagL0InterView及びavailableFlagL1InterViewが0であれば、本発明の実施例3による動き情報誘導手順は終了する。
図26は、任意の動き情報値を用いて、現在ブロックに対するサブ予測ユニットの動き情報を誘導する手順の一例を示す図である。
図26を参照すると、図26の上段に位置している各ブロックは、参照ブロックのサブ予測ユニットを意味し、図26の下段に位置している各ブロックは、現在ブロックのサブ予測ユニットを意味する。また、初期動き情報は記憶空間に記憶される。このとき、図26の初期動き情報は、実施例3の任意に設定された初期動き情報を意味することができる。
初期動き情報を用いて、現在ブロックに対するサブ予測ユニットの動き情報を誘導する場合、参照ブロックのサブ予測ユニットはそれぞれ、任意の値である初期動き情報を用いることができる。すなわち、現在ブロックの複数のサブ予測ユニットは任意の初期動き情報を用いて同時に動き情報の誘導を行うことができ、これによって、現在ブロックの複数のサブ予測ユニットはデータ依存性を克服することができる。したがって、任意の値を有する初期動き情報を用いる場合、インター予測部2100は並列的な動き情報の誘導が可能となる。
上述したように、実施例3では、インター予測部2100が、任意の値を有する初期動き情報を用いて動き情報を誘導する。したがって、実施例3による動き情報誘導方法は、参照ブロック内に存在する各サブ予測ユニットがそれぞれ独立して誘導されるようにする。すなわち、実施例3では、動き情報の誘導が可能なサブ予測ユニットを探すために、動き情報誘導が可能なサブ予測ユニットを順次に探索する必要がなく、参照ブロックの一番目のサブ予測ユニットが動き情報誘導に利用不可能な場合、実施例3では、既に設定された動き情報を用いて、現在ブロックに対するサブ予測ユニットの動き情報を誘導する。これによって、実施例3による動き情報の誘導は、データ依存性を除去し、各サブ予測ユニットの動き情報を並列的に誘導できるという利点がある。また、実施例3による動き情報の誘導は、既存の動き情報の誘導に比べて追加のメモリ接近を防止し、メモリ接近の回数を軽減するという利点がある。
図27は、本発明を適用して動き情報を誘導するためにかかる時間を概略的に示す図である。
図20によれば、一つのサブ予測ユニット内の動き情報を誘導するためにかかる時間がTであり、参照ブロック内のサブ予測ユニットの個数がNである場合には、参照ブロック内の全動き情報を誘導するためにかかる時間がN×Tとなる。しかし、本発明の実施例に係る動き情報の誘導では、動き情報誘導の並列化が可能であるため、動き情報誘導時間はTとなり、よって、3次元ビデオ符号化/復号化遅延時間が減少する。
上述した本発明の実施例は、ブロックサイズ、符号化ユニット(Coding Uint;CU)深さ、又は変換ユニット(Transform Unit;TU)深さなどによって適用範囲を別々にすることができる。適用範囲を決定する変数は、エンコーダ/デコーダであらかじめ定められた値を用いるように設定されてもよく、プロファイル又はレベルによって定められた値を用いるようにしてもよく、エンコーダが変数値をビットストリームに記載し、デコーダがビットストリームから変数値を求めて用いるようにしてもよい。
例えば、CU深さによって適用範囲を別々にする場合には、表5で例示するように、与えられた深さ以上の深さにのみ適用する方式(方法A)、与えられた深さ以下にのみ適用する方式(方法B)、又は与えられた深さにのみ適用する方式(方法C)を用いることができる。全ての深さに対して本発明の方法を適用しない場合には、任意の指示子(flag)で示すこともでき、本発明の方法を適用しない旨をCU深さ値で示すこともでき、このとき、CU深さ値は、CUが有し得る最大の深さ値よりも大きい値に設定することができる。
以上の実施例では、各方法を一連の段階又はユニットとしてフローチャートに基づいて説明しているが、本発明が段階の順序に限定されるわけではなく、ある段階は、上述とは異なる段階及び異なる順序で行われてもよく、又は同時に行われてもよい。また、当該技術の分野における通常の知識を有する者にとっては、フローチャートに表された段階が排他的でなく、他の段階が含まれてもよく、フローチャート中の1つ又はそれ以上の段階が、本発明の範囲に影響を与えない限度内で削除されてもよいことが理解できるであろう。
上述した実施例は様々な態様の例示を含む。様々な態様を示すためのあらゆる可能な組合せを記述することはできないが、当該技術の分野における通常の知識を有する者には他の組合せも可能であるといこうは明らかである。したがって、添付の特許請求の範囲に属する如何なる交替、修正及び変更も本発明に含まれるといえる。
上述した本発明に係る方法は、コンピュータで実行可能なプログラムとして製作し、コンピュータ読み取り可能な記録媒体に記憶させることができ、コンピュータ読み取り可能な記録媒体の例には、ROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光データ記憶装置などがあり、また、キャリアウェーブ(例えば、インターネットを介した送信)の形態で具現されるものも含む。
コンピュータ読み取り可能な記録媒体は、ネットワークで接続されているコンピュータシステムに分散され、分散方式でコンピュータ読み取り可能なコードが記憶されて実行されてもよい。そして、上記方法を具現するための機能的な(function)プログラム、コード及びコードセグメントは、本発明の属する技術分野におけるプログラマによって容易に推論されてもよい。
また、本発明の好適な実施例について図示及び説明してきたが、本発明は、上述した特定の実施例に限定されず、特許請求の範囲で請求する本発明の要旨を逸脱しない範囲で、当該発明の属する技術の分野における通常の知識を有する者によって様々な変形実施が可能であることは勿論であり、それらの変形実施を本発明の技術的思想又は展望から分離して理解してはならない。