以下、本発明の実施の形態について、図1から図24を用いて説明する。
図1は本発明の実施形態による動画像予測符号化装置100を示すブロック図である。図1に示すように、動画像予測符号化装置100は、入力端子101、ブロック分割器102、予測信号生成器103、フレームメモリ(またはバッファ、DPBともいう)104、減算器105、変換器106、量子化器107、逆量子化器108、逆変換器109、加算器110、エントロピー符号化器111、出力端子112、およびバッファ管理器114を備える。減算器105、変換器106と量子化器107は、特許請求の範囲に記載された「符号化手段」に対応する。また、逆量子化器108、逆変換器109と加算器110は、特許請求の範囲に記載された「復元手段」に対応する。
以上のように構成された動画像予測符号化装置100について、以下その動作を述べる。複数枚の画像からなる動画像の信号は入力端子101に入力される。符号化の対象となる画像はブロック分割器102にて、複数の領域に分割される。本発明による実施形態では、8x8の画素からなるブロックに分割されるが、それ以外のブロックの大きさまたは形に分割してもよい。次に符号化処理の対象となる領域(以下対象ブロックとよぶ)に対して、予測信号を生成する。本発明による実施形態では、画面間予測と画面内予測の2種類の予測方法を用いる。
画面間予測では、過去に符号化されたのちに復元された再生画像を参照画像として、この参照画像から対象ブロックに対する誤差の最も小さい予測信号を与える動き情報を求める。また場合に応じて、対象ブロックを再分割し、再分割された小領域に対し画面間予測方法を決定してもよい。この場合、各種の分割方法の中から、対象ブロック全体に対し最も効率のよい分割方法及びそれぞれの動き情報を決定する。本発明による実施形態では、予測信号生成器103にて行われ、対象ブロックはラインL102、参照画像はL104経由で入力される。参照画像としては、過去に符号化され復元された複数枚の画像を参照画像として用いる。詳細は従来の技術であるH.264の方法と同じである。このように決定された動き情報及び小領域の分割方法はラインL112経由でエントロピー符号化器111に送られ符号化した上で出力端子112から送出される。また複数の参照画像の中で、予測信号がどの参照画像から取得するかに関する情報(リファレンスインデックス)もラインL112経由でエントロピー符号化器111に送られる。なお、本発明による実施形態では、3枚ないし6枚の再生画像をフレームメモリ104に格納し、参照画像として用いる。予測信号生成器103では、小領域の分割方法及びそれぞれの小領域に対応する、参照画像と動き情報をもとにフレームメモリ104から参照画像信号を取得し、予測信号を生成する。このように生成された画面間予測信号はラインL103経由で減算器105に送られる。
画面内予測では、対象ブロックに空間的に隣接する既再生の画素値を用いて画面内予測信号を生成する。具体的には予測信号生成器103では、フレームメモリ104から同じ画面内にある既再生の画素信号を取得し、これらの信号を外挿することによって画面内予測信号を生成する。外挿の方法に関する情報はラインL112経由でエントロピー符号化器111に送られ符号化した上で出力端子112から送出される。このように生成された画面内予測信号は減算器105に送られる。予測信号生成器103における画面内の予測信号生成方法は、従来の技術であるH.264の方法と同じである。上述のように求められた画面間予測信号と画面内予測信号に対し、誤差の最も小さいものが選択され、減算器105に送られる。
減算器105にて対象ブロックの信号(ラインL102経由)から予測信号(ラインL103経由)を引き算し、残差信号を生成する。この残差信号は変換器106にて離散コサイン変換され、各変換係数は量子化器107にて量子化される。最後にエントロピー符号化器111にて量子化された変換係数を符号化して、予測方法に関する情報とともに出力端子112より送出される。
後続の対象ブロックに対する画面内予測もしくは画面間予測を行うために、圧縮された対象ブロックの信号は逆処理し復元される。すなわち、量子化された変換係数は逆量子化器108にて逆量子化されたのちに逆変換器109にて逆離散コサイン変換され、残差信号を復元する。加算器110にて復元された残差信号とラインL103から送られた予測信号とを加算し、対象ブロックの信号を再生し、フレームメモリ104に格納する。本実施の形態では変換器106と逆変換器109を用いているが、これらの変換器に代わるほかの変換処理を用いてもよい。場合によって、変換器106と逆変換器109がなくてもよい。
フレームメモリ104は有限なものであり、すべての再生画像を格納することは不可能である。後続の画像の符号化に用いられる再生画像のみフレームメモリ104に格納される。このフレームメモリ104を制御するのがバッファ管理器114である。入力端子113より各画像の出力順序を示す情報(POC、picture output count)や他の画像を予測符号化する際に当該画像に対する依存度を示すD_IDk,jに関する依存度情報(dependency ID)、当該画像を符号化するタイプ(画面内予測符号化、画面間予測符号化)が入力され、この情報に基づいてバッファ管理器114が動作する。バッファ管理器114によって生成されたバッファ記述情報や各画像のPOC情報はラインL114経由でエントロピー符号化器111に送られ、符号化した上で圧縮された画像データとともに出力される。本発明によるバッファ管理器114の処理方法については後述する。
次に、本発明による動画像予測復号方法について説明する。図2は本発明の実施形態による動画像予測復号装置200のブロック図を示す。図2に示すように、動画像予測復号装置200は、入力端子201、データ解析器202、逆量子化器203、逆変換器204、加算器205、予測信号生成器208、フレームメモリ207、出力端子206、およびバッファ管理器209を備える。逆量子化器203と逆変換器204は、特許請求の範囲に記載された「復元手段」に対応する。復元手段としては上記以外のものを用いてもよい。また逆変換器204がなくてもよい。
以上のように構成された動画像予測復号装置200について、以下その動作を述べる。上述した方法で圧縮符号化された圧縮データは入力端子201から入力される。この圧縮データには、画像を複数のブロックに分割された対象ブロックを予測し符号化された残差信号及び予測信号の生成に関連する情報が含まれている。予測信号の生成に関連する情報として、画面間予測の場合はブロック分割に関する情報(ブロックのサイズ)や、動き情報と上述のPOC情報が含まれ、画面内予測の場合は周辺の既再生の画素から外挿方法に関する情報が含まれている。また、圧縮データにはフレームメモリ207を制御するためのバッファ記述情報も含まれている。
データ解析器202は、圧縮データから対象ブロックの残差信号、予測信号の生成に関連する情報、量子化パラメータ、画像のPOC情報を抽出する。対象ブロックの残差信号は逆量子化器203にて量子化パラメータ(ラインL202経由)をもとに逆量子化される。その結果は逆変換器204にて逆離散コサイン変換される。
次に、ラインL206b経由で予測信号の生成に関連する情報が予測信号生成器208に送られる。予測信号生成器208では、予測信号の生成に関連する情報に基づいて、フレームメモリ207にアクセスし、複数の参照画像の中から参照信号を取得し予測信号を生成する。この予測信号はラインL208経由で加算器205に送られ、復元された残差信号に加算され、対象ブロック信号を再生し、ラインL205経由で出力すると同時にフレームメモリ207に格納される。
フレームメモリ207には、後続の画像の復号・再生に用いられる再生画像が格納されている。バッファ管理器209はフレームメモリ207を制御する。バッファ管理器209は、ラインL206a経由で送られるバッファ記述情報と画像の符号化タイプに関する情報に基づいて動作する。本発明によるバッファ管理器209の制御方法については後述する。
次に、図3と図4を用いて、バッファ管理器(図1の114と図2の209)の動作を説明する。本発明の実施形態によるバッファ管理器は、フレームメモリ(104、207)に格納される参照画像を次のように管理する。すなわち、符号化側では、複数枚の対象画像のそれぞれに対するバッファ記述情報をまとめて生成し、共通に適用する復号処理のパラメータを運ぶPPS(picture parameter set)情報の一部として送る。復号側ではPPS情報からまとめて送られてくるバッファ記述情報を抽出し、各対象画像の圧縮データに指定された一つのバッファ記述情報に基づいて、フレームメモリ内にある参照画像を用意した上で復号・再生処理を行う。バッファ記述情報に記載されていない参照画像はフレームメモリから消され、それ以降参照画像として用いることができない。
図3には、本発明の実施形態による動画像予測符号化装置100のバッファ管理器114におけるバッファ記述情報の符号化方法を示し、複数枚の対象画像のそれぞれに対するバッファ記述情報をまとめて符号化する方法を示す。ここでは、バッファ記述をBD(buffer description)で表し、BD[k]は、k番目のBDに関する情報を示す。本発明の実施形態によって生成されるPPSの中に記載のバッファ記述情報の模式図は図8に示される。
図3のステップ310にてカウンタkをゼロにセットする。ステップ320ではPPS情報に記載する全てのBDの総数を符号化する。これは図8の811に該当する。ステップ330では最初のBDであるBD[0]に関する情報を符号化する。図8の820はBD[0]の情報を示す。#ΔPOC0(830)はBD[0]の成分の個数、すなわち必要とする参照画像の枚数を示す。ここでは、対象画像の符号化・復号に必要とする参照画像だけではなくて、対象画像に参照されないが、それより先の画像の符号化・復号処理に参照される参照画像もBD[0]の情報に入れておくため、このような参照画像の枚数も#ΔPOC0にカウントされる。
続いて、使われる参照画像に関する情報(831、832、…)が記載される。本実施の形態では参照画像に関する情報として{ΔPOC0,i,D_ID0,i}を記載する。iはBD[0]のi番目の成分を示す。ΔPOC0,iはi番目の参照画像のPOC番号とBD[0]を使用する対象画像のPOC番号の差分値であり、D_ID0,iはi番目の参照画像の依存度情報である。
BD[0]以外のBD[k]に関する情報は、それより前に出現したバッファ情報BD[m]を参照して予測符号化する(ステップ360)。本実施の形態では、m=k−1を用いるが、m<kであれば、どのBD[m]を参照してもよい。k>0のBD[k]に含まれる情報は図8の822、824に例示されている。その中身として、BD[k]の成分の個数(すなわち対象画像及びそれ以降の画像に必要とする参照画像の枚数に相当)#ΔPOCk(833、839)、ΔBDk(834、840)、Δidxk,i(835、836、837、841、842、843、844)、もしくは{Δidxk,i,D_IDk,i}(838)が記載される。これらの送信データ(シンタックス)の詳細については後述する。全てのBD[k]が符号化された後に、それをPPS情報の一部として他の圧縮データと合わせて送出する。各画像を符号化する際に、図1の入力端子113より指定された一つのバッファ記述情報BD[k]に基づいて、バッファ管理器114がフレームメモリ104内にある参照画像を用意した上で符号化処理を行う。受信側で、各画像の圧縮データのヘッダに付加されるバッファ記述の識別子kに基づいてバッファ管理器209がフレームメモリ207内にある参照画像を用意した上で復号処理を行う。
図4は本発明の実施形態による動画像予測復号装置200のバッファ管理器209におけるバッファ記述情報の復号方法を示す流れ図である。データ解析器202は、PPS情報の中からバッファ記述情報に関するデータを抽出し、バッファ管理器209に入力する。ステップ420ではまずBDの個数を復号する。ステップ430では最初のBDであるBD[0]に関する情報を復号する。k>0のBD[k]に関する情報は、それより前に出現したバッファ記述BD[m]を参照に予測復号する(ステップ460)。上述したように、ここではm=k−1として用いる。全てのBD[k]が復号されたバッファ記述情報はバッファ管理器209に格納される。各画像を復号する際に、その圧縮データに指定された一つのバッファ記述情報BD[k]に基づいて、バッファ管理器209がフレームメモリ207内にある参照画像を用意した上で復号・再生処理を行う。
図8に示されているバッファ記述(BD[k]、k>0)の送り方は最も効率的である。本実施形態によれば、対象となるBD[k]とその予測に用いられるBD[m]は次のような関係にある。
(a)BD[k]に記載されている参照画像は、少なくとも一部が既にBD[m]に記載されているものである。
(b)上記(a)に加えて新たに符号化・復号されたN枚の画像が「追加参照画像」としてBD[k]に記載されている。ここにNは0以上の整数である。
さらに、もっと好ましい形態として、
(c)m=(k-1)、すなわちバッファ記述情報の中に1つ前のBDを予測に用いる。
(d)上記(b)に記載の追加参照画像は1枚のみ(N=1)である。また、この1枚の追加参照画像はBD[m]を用いた場合に生成された画像であることが望ましい。
図16を用いて上述した関係を説明する。図16の欄1601は符号化・復号処理の対象となる対象画像のPOC番号を示す。上から順番に、符号化・復号処理の順に並べられている。すなわちPOC=32の画像を符号化・復号した後に、POC=28の画像が符号化・復号される。また各対象画像の符号化・復号処理を行うときに用いられる参照画像(複数)のPOC番号は欄1602の下にある各升目に書かれている。
POC=32の対象画像(1610)を符号化・復号/再生するために用いられる参照画像に関する情報は、BD[0]として図8の820のシンタックスを用いて符号化される。この場合、#ΔPOC0=4で、POC番号18,20,22,24の参照画像はΔPOC0,iとして符号化する。ΔPOC0,iの値は図17の行1710にあるi=0〜3の値であり、参照画像のPOC番号と対象画像のPOC番号との差から求められる。
図16の行1611〜1617に記載されている参照画像に関する情報は、BD[k]、k>0として、図8の822、824のシンタックスを用いて符号化される。行1611はk=1に対応し、POC=28の対象画像に用いられる参照画像のPOC番号に関する情報を示す。これからのPOC番号(22,24,32)は、一旦ΔPOC1,iに換算される。その値は図17の行1711にあるi=0〜2の値に与えられる。本発明による実施形態では、これらのΔPOC1,iの値はΔPOC0,i(行1710にあるi=0〜3の値)を参照して予測符号化する。
本発明によるバッファ記述情報の予測符号化方法を説明する。対象となるバッファ記述情報をBD[k]として、BD[k]を予測するためのバッファ記述情報をBD[m]とする。BD[k]の情報を利用する対象画像のPOC番号をPOCcurrentとし、BD[m]の情報を利用する対象画像のPOC番号をPOCpreviousとする。またBD[k]のi番目の参照画像のPOC番号をPOCk,i、BD[m]のj番目の参照画像のPOC番号をPOCm,jとする。この場合ΔPOCk,i、ΔPOCm,jは次のように与えられる。
ΔPOCk,i=POCk,i−POCcurrent (1)
ΔPOCm,j=POCm,j−POCprevious (2)
ΔPOCk,iはΔPOCm,jを予測値として符号化される。すなわち、
ΔPOCk,i−ΔPOCm,j=(POCk,i−POCcurrent)−(POCm,j−POCprevious)
=(POCk,i−POCm,j)+(POCprevious−POCcurrent)
=(POCk,i−POCm,j)+ΔBDk (3)
ここで、前述した(a)の条件が満たされている場合はPOCm,jはBD[m]にあるため、(POCk,i−POCm,j)がゼロとなるΔPOCm,jへの識別子(またはインデックス)を符号化する。本実施の形態では、次に定義される識別子Δidxk,iを用いる。
Δidxk,i=offsetk,i−offsetk,i-1 (4)
ここではoffsetk,i=j−i、offsetk,-1=0である。また、上記式(3)に定義されているΔBDkは、(i,j)の値に関わらず、一定であるため、
ΔBDk=POCprevious−POCcurrent (5)
はBD[k]に一回のみ記載すればよい。
一方、(POCk,i−POCm,j)がゼロとなるΔPOCm,jがBD[m]に存在しない場合がある。例として、図16の成分POC1,2=32(升目1620)は行1610の参照画像として現れていない。この場合、ΔPOCk,iの値をそのまま符号化してもよいが、前述した(d)の条件を利用するとΔPOCk,i=ΔBDkとなり、この値はすでにBD[k]に記載されるため改めて符号化する必要がない。BD[m]に同じPOC番号がないことを示すためには、jの値としてBD[m]の成分の個数の値(すなわち、#ΔPOCm)またはそれ以上の値を設定する。後復号する際にjの値を用いてΔPOCk,iの復号方法については後述する。
各参照画像がもつ依存度情報D_IDk,iについては、当該参照画像が予測に用いられるBD[m]に存在する場合、依存度情報D_IDk,iはD_IDm,jに等しいので符号化する必要がない。一方、当該参照画像が予測に用いられるBD[m]に存在しない場合は、依存度情報D_IDk,iを符号化する。
以上の考え方に基づいて、図8の822、824の中身(シンタックス)が構成される、次に、この考え方に基づいて図3のブロック360と図4のブロック460の処理を説明する。
図6は、本発明の実施形態による動画像予測符号化装置100におけるバッファ記述情報の符号化処理(図3のブロック360の処理)を示す流れ図である。これは、図8におけるk>0の場合のBD[k]の符号化処理に当たる。ステップ610では、BD[k]の成分の個数、すなわち記述される参照画像の枚数#ΔPOCkを符号化する。次にΔBDkを算出(ステップ620)した上で、それを符号化(ステップ630)する。次にBD[k]の各成分について下記の処理を行う。ステップ640では、BD[m](m=k-1)の中からΔPOCk,iと同じ参照画像を共有するΔPOCm,j(すなわちPOCm,j=POCk,i)が存在するかどうかを検出する。ステップ645で存在すると判定した場合は、ステップ650に進み、上記式(4)に従いΔidxk,iの値を求めた上でそれを符号化する。ステップ645で存在しないと判定した場合は、ステップ655に進む。ステップ655では値jにBD[m]の成分の個数(#ΔPOCm)の値を設定する。それより大きい値でもよい。ステップ660では上記式(4)に従いΔidxk,iの値を求めた上でそれを符号化する。ステップ670では当該参照画像の依存度情報D_IDk,iを符号化する。上述した各値は、2値符号に変換した上で算術符号化を施して符号化するが、そのほかのエントロピー符号化方法を用いてもよい。上記の処理はBD[k]の最後の成分まで繰り返す。
図17に示す従来技術によるバッファ記述情報を、上述した本発明による方法で処理した結果は図5に示す。欄501は各BD[k]の識別子を示し、本実施の形態では、明示的に符号化しない。欄502は各BD[k]の成分の個数、504はBD[k]の参照画像を記述するためのデータを示す。行510はBD[0]に相当し、ΔPOCk,iの値で符号化する。行511以降は、Δidxk,iの値を示している。欄505は予測に用いるBD[m]の識別子を示すが、本実施の形態では、m=k-1にしているため、符号化する必要がない。欄506はΔBDkを示す。また、升目520〜523の各成分については、予測に用いるBD[m]に同じ参照画像がない場合に該当し、Δidxk,iに加えて、D_IDk,iを符号化する必要があるが、図5には省略されている。図5の504の下にある各升目の示す値はほとんど”0”で、図17の従来技術の情報と比べて値が小さく、ダイナミックレンジが小さいため、効率的に符号化できる効果がある。また、従来技術では全て成分のD_IDk,iを符号化するが、本発明による方法では、限られた成分のみに対してD_IDk,iを符号化するので、さらに符号量を削減することができる。
図7は、本発明の実施形態による動画像予測復号装置200におけるバッファ記述情報の復号処理(図4のブロック460の処理)示す流れ図である。これは、図8におけるk>0の場合のBD[k]の復号処理に当たる。ステップ710ではBD[k]の成分の個数、すなわち記述する参照画像の枚数#ΔPOCkを復号する。ステップ730ではΔBDkを復号する。次にBD[k]の各成分について下記の復号処理を行う。ステップ740ではΔidxk,i を復号した上で、次の式を用いてインデックスjの値を求める(ステップ745)。
j=i+Δidxk,i+offsetk,i-1 但しoffsetk,-1=0 (6)
このインデックスjを用いて、ステップ750にて復号の対象となるΔPOCk,iの参照値となるΔPOCm,jがBD[m]に存在するかどうかを判定する。ここでは、j<BD[m]の成分の個数(#ΔPOCm)であればΔPOCm,jが存在し、j≧(#ΔPOCm)であれば、ΔPOCm,jは存在しない。ステップ750にて存在すると判定した場合はステップ760に進み、ΔPOCk,iの値を求める。依存度情報D_IDk,iはΔPOCm,jがもつものをそのままコピーするだけである。依存度情報D_IDk,iを符号化する必要がないことに注意されたい。ステップ750にて存在しないと判定した場合はステップ765に進む。ここでは、依存度情報D_IDk,iを復号し、ステップ770にてΔPOCk,iの値としてΔBDkを代入する。上記の処理はBD[k]の最後の成分まで繰り返す。
このようにして、本発明によるバッファ記述情報の符号化・復号方法では、参照画像が繰り返して利用される性質を利用して、異なる画像に用いられるバッファ記述情報BD[k]の間の相関を利用して、冗長となる情報をコンパクトにすることにより、効率よくバッファ記述情報を符号化することができる。
図16に示されているように、バッファに関する情報は対象画像の符号化・復号の順番に整理されている。そのために、前述した(a)〜(d)の関係が成立し、上述した実施形態によって最も効率のよい方法でバッファ記述情報を符号化することができる。一方、バッファ記述の順番は任意に並べてもよく、図16に示した順番と異なる順序で各BD[k]を記載してもかまわない。この場合に対応した本発明によるもっと汎用性のある実施形態を説明する。
図9は図16と若干異なる順序でバッファの情報が記載されている。図16と異なる点は、POC=25(913)に関するバッファ情報はPOC=30(914)より先に記述されている。但し、利用されている参照画像は図16の場合と同じである。ここでは、POC=25(913)の対象画像は、POC=22、24、32、28、26、30の参照画像を利用するが、その1つ上にあるPOC=26(912)の対象画像はPOC=22、24、32、28を利用する。行913のバッファ記述情報BD[k]を予測するために、行912のバッファ記述情報BD[m]を用いると、BD[k]に属するPOC=30の成分(963)はBD[m]に現れていないし、BD[m]の利用により生成されるものではない。すなわち、前述した(c)の条件(m=k-1)を用いると、前述した(d)が満たされていないことになる。
この課題を解決するために、前述した(c)の条件を緩和させて、BD[m]を自由に選択できるようにし、その代わりに予測に用いるBD[m]を識別するためのインデックスmを符号化する。そうすると、行913のバッファ記述情報BD[k]を予測するために、行914のバッファ記述情報をBD[m]として用いると、(インデックスmの符号化と復号を追加することを前提に)図6と図7をそのまま適用することができる。
また別の方法として、予測に用いられるBD[m]にない追加参照画像については、前述した式(1)におけるPOC番号ΔPOCk,iをそのまま符号化してもよいし、または、ΔPOCk,iからΔBDkを差し引いた値をIBDRk,iとして符号化してもよい。
IBDRk,i=ΔPOCk,i−ΔBDk (7)
上記式(7)を展開すれば(POCk,i−POCprevious)に等しい。上述した本発明によるもっと汎用性のある実施形態によって生成されるPPSの中に記載のバッファ記述情報の模式図は図12に示されている。図12の1211は図8の811、1220は820と同じである。k>0のBD[k]は、1222や1224に示されているシンタックスで伝送される。この場合のシンタックスは、BD[k]の成分の個数(すなわち対象画像及びそれ以降の画像に必要とする参照画像の枚数に相当)#ΔPOCk(1233、1240)、予測に用いるバッファ記述情報の識別子mk(1234、1241)、ΔBDk(1235、1242)、Δidxk,i(1236、1237、1243、1244)、もしくは{Δidxk,i,D_IDk,i,IBDRk,i}(1238、1239、1245、1246)から構成されている。
図12に示すバッファ記述情報は次のように符号化・復号される。図10は、本発明の実施形態による動画像予測符号化装置100における、より汎用性のあるバッファ記述情報の符号化処理(図3のブロック360の処理)を示す流れ図である。これは、図12におけるk>0の場合のBD[k]の符号化処理に当たる。ステップ1010では、BD[k]の成分の個数、すなわち記述する参照画像の枚数#ΔPOCkを符号化する。次に予測に用いる参照用のバッファ記述情報BD[m]を決定し、その識別子mkを特定すると同時にΔBDkを算出(ステップ1020)する。ステップ1030では、mkとΔBDkを符号化する。次にBD[k]の各成分について下記の処理を行う。ステップ1040では、BD[mk]の中からΔPOCk,iと同じ参照画像を共有するΔPOCm,j(すなわちPOCm,j=POCk,i)が存在するかどうかを検出する。ステップ1045にて存在すると判定した場合は、ステップ1050に進み、前述した式(4)に従いΔidxk,iの値を求めた上でそれを符号化する。ステップ1045で存在しないと判定した場合は、ステップ1055に進む。ステップ1055では、インデックスjにBD[m]の成分の個数(#ΔPOCm)の値以上の値を設定する。この場合(BD[m]にない)追加参照画像は1枚以上ある可能性に対応するため、まだ設定に使用されていない値をインデックスjの値として設定する。ステップ1060では、前述した式(4)に従いΔidxk,iの値を求めた上でそれを符号化する。ステップ1070では、上記式(7)に従いIBDRk,iの値を求めた上で当該参照画像の依存度情報D_IDk,iとともに符号化する。上述した各値は、2値符号に変換した上で算出符号化を施して符号化するが、そのほかのエントロピー符号化方法を用いてもよい。上記の処理はBD[k]の最後の成分まで繰り返す。
図9のバッファ記述情報を、図20に示すΔPOCk,iに一旦換算した上で、上述した汎用性のある方法で処理した結果は図21に示す。欄941は各BD[k]の識別子を示す。欄942は各BD[k]の成分の個数、欄944はBD[k]の参照画像を記述するためのデータを示す。行950はBD[0]に相当し、ΔPOCk,iの値で符号化する。行951以降は、Δidxk,iもしくは{Δidxk,i,D_IDk,i,IBDRk,i}で符号化する(図21ではD_IDk,iを省略)。欄945は予測に用いるBD[m]の識別子mkを示す。欄946はΔBDkを示す。また、升目980〜983の各成分については、予測に用いるBD[m]に同じ参照画像がない場合に該当し、{Δidxk,i,D_IDk,i,IBDRk,i}を符号化する場合に相当する。図21の944の下にある各升目の示す値はほとんど”0”で、図20の従来技術の情報と比べて値が小さく、ダイナミックレンジが小さいため、効率的に符号化できる効果がある。
図11は、本発明の実施形態による動画像予測復号装置200における、より汎用性のあるバッファ記述情報の復号処理(図4のブロック460の処理)示す流れ図である。これは、図12におけるk>0の場合のBD[k]の復号処理に当たる。ステップ1110ではBD[k]の成分の個数、すなわち記述する参照画像の枚数#ΔPOCkを復号する。ステップ1130ではmkとΔBDkを復号する。次にBD[k]の各成分について下記の復号処理を行う。ステップ1140ではΔidxk,iを復号した上で、上記式(6)を用いてインデックスjの値を求める(ステップ1145)。
このインデックスjを用いて、ステップ1150にて復号の対象となるΔPOCk,iの参照値となるΔPOCm,jがBD[m]に存在するかどうかを判定する。ここでは、j<BD[m]の成分の個数(#ΔPOCm)であればΔPOCm,jが存在し、j≧(#ΔPOCm)であれば、ΔPOCm,jは存在しない。ステップ1150にて存在すると判定した場合はステップ1160に進み、ΔPOCk,iの値を求める。依存度情報D_IDk,iはΔPOCm,jがもつものをそのままコピーするだけでよい。ステップ1150にて存在しないと判定した場合はステップ1165に進む。ここでは、IBDRk,iと依存度情報D_IDk,iを復号し、ステップ1170にてΔPOCk,iの値を算出する。上記の処理はBD[k]の最後の成分まで繰り返す。
このようにして、本発明によるバッファ記述情報の符号化・復号方法では、参照画像が繰り返して利用される性質を利用して、異なる画像に用いられるバッファ記述情報BD[k]の間の相関を利用して、冗長となる情報をコンパクトにすることにより、効率よくバッファ記述情報を符号化することができる。加えて、バッファ記述情報の相互参照が自由に行われる場合にも効率的に符号化できる効果がある。
図6と図10の符号化処理や、図7と図11の復号処理は、別々に説明したが、この二つの実施形態を組み合わせて用いてもよい。復号処理では、図7のステップ765、770と図11のステップ1165、1170とが異なるが、組み合わせて用いる場合は、これらの処理を識別するための情報(1ビット)を追加して符号化すればよい。
また、図5の行512,513,514,517に見られるように、Δidxk,iの値は全てゼロの値であることから、それらの値を個別に符号化する代わりに、ひとつの信号(フラグ)で表すこともできる。
また、上記の実施形態では、バッファ記述情報に記載されている参照画像のPOC番号は、一旦ΔPOCk,iに換算した上で、本発明によるバッファ記述情報を符号化・復号されるが、本発明による方法はPOC番号自体に施してもよい。すなわち、対象となるバッファ記述情報BD[k]にあるPOC番号が、予測に用いるBD[m]にある場合は、そのPOC番号を指すΔidxk,iを符号化する。所望のPOC番号がBD[m]にない場合は、前述した式(1)で求められるΔPOCk,iをIBDRk,iとして符号化する。前述した式(1)の代わりに式(7)を用いてもよい。この場合図3のブロック360の処理は、図18に示されており、図4のブロック460の処理は、図19に示されている。図18は図10と、図19は図11と、それぞれほぼ同じ処理が行われており、図18、図19では、対応する図10、図11の処理ステップのステップ番号に「S」を付したステップ番号を用いている。但し、ΔPOCの代わりにPOCに対し処理が施されている。また、この場合ΔBDkはゼロとなるのでそれを符号化・復号する必要がない。そして、m=(k-1)と固定した場合(すなわち直前のBD[m]から予測する場合)は、mkも符号化・復号する必要がない。
なお、上記の実施形態において、対象となるバッファ記述BD[k]のi成分をbdk,iとし、予測に用いるBD[m]の成分をbdm,jとすると、Δidxk,iは、bdk,iから見たbdm,jの相対的な位置(インデックス、アドレス)と考えられる。すなわち、bdk,iおよびbdm,jを情報格納庫と考えると、当該情報格納庫中にPOC番号を入れてもよいし、ΔPOCの値を入れてもよい。この場合、Δidxk,iは情報格納庫間(それらの中身には共通に使われているPOC番号があることが条件)の相対的な位置との扱いになる。言い換えると、本発明によるバッファ記述は、対象画像のバッファ情報を格納する情報格納庫と対象画像の参照となるバッファ情報を格納する情報格納庫との位置関係を記述するものであり、指されている情報格納庫の位置(j)と中身が存在している情報格納庫の個数(#ΔPOCmまたは#POCm)とを比較することで、bdk,iの中身の再生方法を切り替える方法を提供する。
本発明によるバッファ記述情報の符号化・復号方法については、次のような実施形態もある。本実施形態は、図6と図7に示す実施形態と同じく、前述した条件(c)と(d)を前提としている。すなわち、対象となるバッファ記述情報BD[k]を予測するために用いられるバッファ記述情報をBD[m]として、その1つ前にあるBDを用いる。すなわちm=(k-1)である。また、BD[k]にある追加参照画像は1枚のみで、この1枚の追加参照画像はBD[m]を用いた場合に生成されたものである。
これらの条件のもとで、本実施形態は、対象となるバッファ記述BD[k]の情報を符号化する際に、予測に用いられるBD[m]の中に、BD[k]の成分であるΔPOCk,iと同じ参照画像を共有するΔPOCm,j(すなわちPOCm,j=POCk,i)が「存在するかどうか」を識別するものである。しかるに、前述した実施形態では「相対的な位置Δidxk,i」を用いていたが、本実施形態では、単に「あるかどうか」を示すフラグを用いる。このフラグとして、ここではibd_flagk,jと記載する。フラグibd_flagk,jが「ある」を示す場合は、既にバッファに格納されているj番目の画像は引き続き参照画像として用いられる。一方、フラグibd_flagk,jが「ない」を示す場合は、指定された別の画像が新たな参照画像(追加参照画像)としてバッファに格納される。
また、条件(c)と(d)のもとでは、BD[k]の個数は、多くてもBD[m]の個数より1つ多いので、すなわち常に#ΔPOCk=#ΔPOCm+1となるため、#ΔPOCkを送る必要がない。そのため、本実施形態では、さらに符号量の削減ができる。
上記の考え方に基づいた本実施形態によるバッファ記述情報の符号化処理は図22に示されている。これは、図3のステップ360の処理になる。ステップ2210では、ΔPOCkの個数とΔPOCmの個数に関する情報を取得し、後続の判定のために用いる。ステップ2220では、式(5)で与えられたΔBDkを求め、ΔBDkを符号化する。すなわち、ΔBDkは、BD[k]の情報を利用する対象画像のPOC番号POCcurrentと、BD[k]の予測に用いられるBD[m]の情報を利用する画像のPOC番号POCpreviousとの差として求められる。ステップ2230では、BD[k]のカウンタiと、BD[m]のカウンタjをゼロに初期化する。
次にステップ2240から2265にかけて、ΔPOCmの個数分のBD[m]の成分を調べる。具体的には、ステップ2245の条件が満たされた場合はステップ2250に、そうでない場合はステップ2260に進む。しかるにステップ2245の条件は式(3)によって与えられ、(POCk,i=POCm,j)の場合に当たる。ステップ2250では、当該条件が満たされることを示すためibd_flagk,jを1として符号化する。同時にBD[k]のカウンタiを増分する。一方、ステップ2260では、当該条件が満たされていないことを示すためibd_flagk,jを0として符号化する。ステップ2265では、次のBD[m]を調べるためカウントjを増分する。
ステップ2240の条件が満たされない場合、すなわちBD[m]の全成分を調べ終えた場合は、ステップ2270に進む。ここでは、対象となるバッファ記述情報BD[k]のカウンタiとΔPOCkの個数とを比較する。BD[k]のカウンタiは0から勘定するので、その最大値は(ΔPOCkの個数−1)となる。ステップ2270で(i=ΔPOCkの個数)との条件を満たせば、カウンタiはBD[k]の成分の個数を超えることになり、ibd_flagk,jを0として符号化し、処理を終了する。一方、ステップ2270で(i=ΔPOCkの個数)との条件が満たされていない場合は、BD[m]にない追加参照画像をバッファに格納することを意味する。それに関する情報を符号化するため、ステップ2290ではibd_flagk,jを1として符号化し、ステップ2295では、当該追加参照画像の依存度情報D_IDk,iを符号化する。なお、図6で説明したように当該追加参照画像のΔPOCk,iの値はΔBDkであるため、符号化する必要がない。
このように生成されたPPSの中に記載するバッファ記述情報のデータ配列は図24に示されている。図24は図8とほとんど同じである。2411で示されている「BDの個数」は図8の811と同じで、最初のBDであるBD[0]に関する情報2420は図8の820と同じであり、それぞれ図3のステップ320と330にて生成される。
k>0のBD[k]に含まれる情報は図24の2422、2424に例示されている。その中身として、ΔBDk(2434、2440)、ibd_flagk,j(2435、2436、2437、2441、2442、2443、2444)、もしくは{ibd_flagk,j,D_IDk,i}(2438)が記載されている。このデータ構造(シンタックス)は図8に似ており、k>0のBD[k]の個数である#ΔPOCk(833、839)は不必要であることに注意されたい。ibd_flagk,jは1もしくは0の値をとることになる。BD[k]の個数に関する情報を符号化する必要がないため、より少ないビット数でバッファ記述情報を表すことができる効果がある。
図23には本実施形態によるバッファ記述情報の復号処理の別の実施方法を示す。ステップ2310では、予測に用いられるBD[m]の成分であるΔPOCmの個数(#ΔPOCm)を取得する。BD[m]を復元しながら、その成分の個数をカウントすることにより、ΔPOCmの個数(#ΔPOCm)が得られる。ステップ2320では、BD[k]のカウンタであるiと、BD[m]のカウンタであるjをゼロに初期化する。ステップ2330にてバッファ情報に記載されているΔBDkの値を復号する。続いて、(#ΔPOCm+1)個分のibd_flagk,jを復号する(ステップ2345によって制御)。復号されたibd_flagk,jの値に基づいてステップ2345以降の処理を行う。
ステップ2345では、BD[m]のカウンタjを判定する。カウンタjがΔPOCmの個数に達するまでは、ibd_flagk,jの値(1または0)をもとに、ΔPOCm,jを用いてΔPOCk,iを復元するか否かを判定する(ステップ2350)。ibd_flagk,jの値が1の場合はステップ2355にてΔBDkとΔPOCm,jとを加算してΔPOCk,iを生成する。この場合、ΔPOCk,iとΔPOCm,jとは同じ参照画像を共有する(POCm,j=POCk,iである)ため、依存度情報D_IDk,iはΔPOCm,jに関連付けられる依存度情報D_IDm,jをそのままコピーすればよい。次にBD[k]のカウンタiを増分した上で、BD[m]の次の成分に対する判断を行う。
BD[m]の成分を最後までチェックしたのち(ステップ2345にてNOとなった場合に相当)、最後のibd_flagk,jの値を判定する(ステップ2370)。ibd_flagk,j=0の場合は、追加参照画像がないことを意味し、何も処理を行わず、後述のステップ2390へ進む。一方、ibd_flagk,j=1の場合は、(BD[m]にない)追加参照画像があることを意味し、ステップ2375にて依存度情報D_IDk,iを復元する。ステップ2380では、当該追加参照画像のPOC番号としてΔBDkを用いる(条件(d)を利用しているため)。また、BD[k]のカウンタiを増分する。そして最後に、カウンタiで勘定した値をBD[k]の個数として格納する(ステップ2390)。このBD[k]の個数は、BD[k+1]の各成分を生成するために用いられる(ステップ2310にて)。
図22と図23の処理方法では、BD[k]にある追加参照画像が1枚のみの場合の実施方法であるが、追加参照画像がN枚の場合は、このNの値をBD[k]の情報の一部として送受信すればよい。この場合、追加参照画像に関するPOC番号はIBDRk,iを用いて符号化・復号される。具体的には、図22のステップ2295は図10のステップ1070と同じ処理を、図23のステップ2375は図11のステップ1165と同じ処理を、図23のステップ2380は図11のステップ1170と同じ処理を、それぞれ実行すればよい。
また、上記ではibd_flagk,jの値を1ビット(1または0)で表しているが、1ビット以上で表してもよい。この場合、追加したビットを用いて、他の情報(D_IDk,i、IBDRk,iまたはそれ以外の情報)が明示的に符号化されているかどうかを識別してもよい。
さらに、当該追加したビットを用いて、ΔPOCk,iに関わる参照画像(すなわち、POC番号が式(1)に与えられたPOCk,iをもつ参照画像)の適用範囲を示してもよい。具体的には、ibd_flagk,jが「1」の場合は、ΔPOCm,jを用いてΔPOCk,iを復元すると同時に、ΔPOCk,iに関わる参照画像は、現在処理の対象となる画像(カレント画像)及びそれに続く将来の画像(フューチャー画像、複数でもよい)に適用する。また、ibd_flagk,jが「01」の場合は、ΔPOCm,jを用いてΔPOCk,iを復元すると同時に、ΔPOCk,iに関わる参照画像は、現在処理の対象となる画像(カレント画像)に適用せず、それに続く将来の画像(フューチャー画像、複数でもよい)のみに適用する。さらに、ibd_flagk,jが「00」の場合は、ΔPOCm,jをΔPOCk,iの復元に用いない。
上記の実施形態では、バッファ記述情報に記載されたΔPOCk,iに対し処理を施しているが、各参照画像が所有するPOC番号自体に対し処理を施してもよい。
なお、上記の全ての実施形態において、バッファ記述情報について述べた。バッファ記述情報は、対象画像を符号化・復号するために用いられる複数参照画像に関する記述でもあるため、上記の実施形態は、参照画像リストの管理方法としても用いられる。
また、上記の実施形態ではバッファ記述情報をまとめてPPS情報の一部として符号化する場合を説明したが、バッファ記述情報を個々の対象画像のヘッダに記載される場合でも適用できる。すなわち、図5の行510の情報をPOC=32の画像の圧縮データの先頭(ヘッダ)に、また行511の情報をPOC=28の画像の圧縮データの先頭(ヘッダ)に記載された場合にも適用できる。この場合、対象画像kに属するバッファ記述情報BD[k]は、先行して処理された画像mに属するバッファ記述情報BD[m]を参照にして、図6,7,10,11,18,19の処理で符号化・復号することができる。但し、予測の構造によって対象画像mは参照画像として全く用いられない場合があり(依存度情報D_IDの値が大きい)、その場合画像mに属するBD[m]を予測に用いない。なぜなら、参照画像として全く用いられない画像mは、データ量を制御したり復号処理を軽減したりするために捨てられることがあるからである。
コンピュータを上記の動画像予測符号化装置100として機能させるための動画像予測符号化プログラムは、記録媒体に格納されて提供可能とされている。同様に、コンピュータを上記の動画像予測復号装置200として機能させるための動画像予測復号プログラムは、記録媒体に格納されて提供可能とされている。記録媒体としては、フレキシブルディスク、CD−ROM、DVD、あるいはROM等の記録媒体、又は半導体メモリ等が例示される。
図13は、記録媒体に記録されたプログラムを実行するためのコンピュータ30のハードウェア構成を示す図であり、図14は、記録媒体に記憶されたプログラムを実行するためのコンピュータ30の斜視図である。ここでのコンピュータ30は、CPUを具備しソフトウエアによる情報処理や制御を行うDVDプレーヤ、セットトップボックス、携帯電話などを広く含む。
図13に示すように、コンピュータ30は、フレキシブルディスクドライブ装置、CD−ROMドライブ装置、DVDドライブ装置等の読み取り装置12と、オペレーティングシステムを常駐させた作業用メモリ(RAM)14と、記録媒体10に記憶されたプログラムを記憶するメモリ16と、ディスプレイといった表示装置18と、入力装置であるマウス20及びキーボード22と、データ等の送受を行うための通信装置24と、プログラムの実行を制御するCPU26とを備えている。記録媒体10が読み取り装置12に挿入されると、コンピュータ30は、読み取り装置12から記録媒体10に格納された動画像予測符号化プログラムにアクセス可能になり、当該動画像予測符号化プログラムによって上記の動画像予測符号化装置100として動作することが可能になる。同様に、記録媒体10が読み取り装置12に挿入されると、コンピュータ30は、読み取り装置12から記録媒体10に格納された動画像予測復号プログラムにアクセス可能になり、当該動画像予測復号プログラムによって上記の動画像予測復号装置200として動作することが可能になる。