(57)【要約】【課題】  単階層の中間テーブルを用いて可変長符号の復号を行う従来装置では、可変長符号の最長ビット長に応じてメモリサイズが極めて増大する。多階層の中間テーブルを用いて可変長符号を行う場合は、複数のテーブル参照が必要で処理効率が悪い。【解決手段】  動画像の可変長符号をコンテキスト毎に中間テーブルを切り替えて復号する際に、コンテキストから求めた可変長符号の最長ビット長が設定値未満のときには単階層の中間テーブルを使用して条件分岐を行わずに復号値を求め、最長ビット長が設定値以上のときには多階層の中間テーブルを使用して小さいテーブルサイズで復号値を求める。また、各コンテキスト別に、エラー出現の有無や、単階層か多階層の中間テーブルかを選択する復号関数のタイプを定め、コンテキスト切り替えの度に復号関数のタイプを選択して復号を行う。これにより、中間テーブルサイズの最適化と効率の良い復号を両立させる。【選択図】            図６
2006148729.tif 000002
【特許請求の範囲】
【請求項１】
動画像信号を予め定めた画像領域単位で可変長符号化するに際し、前記動画像信号のコンテキストに応じて、複数種類の可変長符号テーブルの中から選択した可変長符号テーブルを使用して可変長符号化して得た動画像符号化データを、中間テーブルを用いて元の動画像信号に復元する動画像復号装置であって、
可変長符号の最長ビット長に応じた数の要素を持ち、該可変長符号の復号値を格納した単階層型の第１の中間テーブルを記憶する第１の記憶手段と、
前記可変長符号の最長ビット長よりも短い読み込むべきビット長と、次に参照するテーブルの有無の情報と、次に参照するテーブルがあるときには次に参照するテーブルの番号、又は次に参照するテーブルが無いときには該可変長符号の復号値を格納した複数のテーブルからなる多階層型の第２の中間テーブルを記憶する第２の記憶手段と、
前記動画像符号化データのコンテキストに基づき、該動画像符号化データの可変長符号の最長ビット長を判断し、その最長ビット長が予め定めた値未満であるときは、前記第１の中間テーブルを用いて前記動画像符号化データの可変長符号の復号値を取得し、前記最長ビット長が前記予め定めた値以上であるときには、前記第２の中間テーブルを用いて前記動画像符号化データの可変長符号の復号値を取得する復号手段と
を有することを特徴とする動画像復号装置。
【請求項２】
前記第２の記憶手段は、復号値が規格上存在しない前記可変長符号の復号時にエラー発生を示すエラーフラグとエラーコードが、前記復号値に替えて格納された前記第２の中間テーブルを記憶していることを特徴とする請求項１記載の動画像復号装置。
【請求項３】
前記次に参照するテーブルの有無と、前記エラーフラグの有無と、前記復号値が１つか複数であるかの情報と、前記動画像符号化データの可変長符号の最長ビット長が、予め定めた値未満であるか否かの組み合わせに応じて複数のタイプの復号関数を定めると共に、該複数のタイプの復号関数のうち前記動画像符号化データの可変長符号の最長ビット長が、前記予め定めた値未満である復号関数と前記第１の中間テーブルのテーブル名とを対応させ、かつ、該複数のタイプの復号関数のうち前記動画像符号化データの可変長符号の最長ビット長が、前記予め定めた値以上である復号関数と前記第２の中間テーブルのテーブル名とを対応させて記憶した第３の記憶手段を有し、
前記復号手段は、前記動画像符号化データのコンテキストに基づき、該動画像符号化データの可変長符号の最長ビット長を判断し、その最長ビット長が、前記予め定めた値未満であるか否かに応じて、前記第３の記憶手段に記憶されている複数のタイプの前記復号関数の中から一のタイプの復号関数を選択し、その選択した復号関数が示すテーブル名の前記第１又は第２の中間テーブルを用いて前記動画像符号化データの可変長符号の復号値を取得することを特徴とする請求項２記載の動画像復号装置。
【請求項４】
動画像信号を予め定めた画像領域単位で可変長符号化するに際し、前記動画像信号のコンテキストに応じて、複数種類の可変長符号テーブルの中から選択した可変長符号テーブルを使用して可変長符号化して得た動画像符号化データを、中間テーブルを用いて元の動画像信号に復元する動画像復号機能をコンピュータにより実現させる動画像復号プログラムであって、
前記コンピュータを、
可変長符号の最長ビット長に応じた数の要素を持ち、該可変長符号の復号値を格納した単階層型の第１の中間テーブルを記憶する第１の記憶手段と、
前記可変長符号の最長ビット長よりも短い読み込むべきビット長と、次に参照するテーブルの有無の情報と、次に参照するテーブルがあるときには次に参照するテーブルの番号、又は次に参照するテーブルが無いときには該可変長符号の復号値を格納した複数のテーブルからなる多階層型の第２の中間テーブルを記憶する第２の記憶手段と、
前記動画像符号化データのコンテキストに基づき、該動画像符号化データの可変長符号の最長ビット長を判断し、その最長ビット長が予め定めた値未満であるときは、前記第１の中間テーブルを用いて前記動画像符号化データの可変長符号の復号値を取得し、前記最長ビット長が前記予め定めた値以上であるときには、前記第２の中間テーブルを用いて前記動画像符号化データの可変長符号の復号値を取得する復号手段と
して機能させることを特徴とする動画像復号プログラム。
【請求項５】
前記第２の記憶手段が、復号値が規格上存在しない前記可変長符号の復号時にエラー発生を示すエラーフラグとエラーコードが、前記復号値に替えて格納された前記第２の中間テーブルを記憶しているように機能させることを特徴とする請求項４記載の動画像復号プログラム。
【請求項６】
前記コンピュータを、前記次に参照するテーブルの有無と、前記エラーフラグの有無と、前記復号値が１つか複数であるかの情報と、前記動画像符号化データの可変長符号の最長ビット長が、予め定めた値未満であるか否かの組み合わせに応じて複数のタイプの復号関数を定めると共に、該複数のタイプの復号関数のうち前記動画像符号化データの可変長符号の最長ビット長が、前記予め定めた値未満である復号関数と前記第１の中間テーブルのテーブル名とを対応させ、かつ、該複数のタイプの復号関数のうち前記動画像符号化データの可変長符号の最長ビット長が、前記予め定めた値以上である復号関数と前記第２の中間テーブルのテーブル名とを対応させて記憶した第３の記憶手段として更に機能させると共に、
前記復号手段は、前記動画像符号化データのコンテキストに基づき、該動画像符号化データの可変長符号の最長ビット長を判断し、その最長ビット長が、前記予め定めた値未満であるか否かに応じて、前記第３の記憶手段に記憶されている複数のタイプの前記復号関数の中から一のタイプの復号関数を選択し、その選択した復号関数が示すテーブル名の前記第１又は第２の中間テーブルを用いて前記動画像符号化データの可変長符号の復号値を取得するように機能させることを特徴とする請求項５記載の動画像復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は動画像復号装置及び動画像復号プログラムに係り、特に動画像を効率的に伝送するために、コンテキストに応じて可変長符号テーブルを切り換えて符号化された動画像信号を復号する動画像復号装置及び動画像復号プログラムに関する。
【背景技術】
【０００２】
図１１は従来の動画像復号装置の一例のブロック図を示す。同図において、ビットストリーム（符号化情報）１は、バッファ（図示せず）に蓄えられた後エントロピー復号器２に入力される。このビットストリーム１は、符号化規格に従って解釈され、フレーム内又はフレーム間の動画像信号が符号化された符号化データ列であり、フレーム内画像符号化（以下、イントラ符号化と記す）データと、フレーム間画像予測符号化（以下、インター符号化と記す）データとが時系列的に合成されている。イントラ符号化ではフレーム内の画像信号のみが独立して符号化され、インター符号化では他のフレームを参照フレームとする予測信号が生成され、予測誤差が符号化される。
【０００３】
エントロピー復号器２は、イントラ符号化データに対しては符号化側で直交変換して得られた係数とイントラ予測モードを復号し、復号して得た係数を逆量子化器３に供給して逆量子化させると共に、復号したイントラ予測モード４を予測値作成器７に供給する。逆量子化器３から出力された信号は、逆変換器６により逆変換された後加算器１０に供給され、ここで、スイッチ９の端子９ａを介して供給される予測値作成器６で作成された予測値と加算される。
【０００４】
これにより、加算器１０から復号された動画像信号が取り出され、ループフィルタ１１を経てデコード・ピクチャ・バッファ（ＤＰＢ）１２に蓄積された後、復号画像信号１４として出力される一方、参照画像として用いるためにフレームメモリ１３に蓄積される。
【０００５】
また、エントロピー復号器２は、インター符号化データに対しては、イントラ符号化データ復号時と同様に係数を復号すると共に、イントラ符号化データ復号時とは異なり、動きベクトル情報を復号し、復号して得た係数を逆量子化器３に供給して逆量子化させると共に、復号した動きベクトル情報５を動き補償回路８に供給してフレームメモリ１３からの参照画像信号を用いて動き補償した画像信号を復号する。
【０００６】
逆量子化器３から出力された信号は、逆変換器６により逆変換された後加算器１０に供給され、ここでスイッチ９の端子９ｂを介して供給される動き補償回路８で動き補償された画像信号と加算されることにより、復号された同画像信号が出力され、更にループフィルタ１１を経てデコード・ピクチャ・バッファ（ＤＰＢ）１２に蓄積された後、復号画像信号１４として出力される。
【０００７】
ここで、エントロピー復号器２では、予め設定されている可変長符号テーブルを参照して、ビットストリーム１から順次ビットデータを読み出して復号する。可変長符号テーブルは出現頻度の高い符号により短いビット長が割り当てられており、これにより、符号ビット数を減少させて符号化効率を高めている。従来、ＭＰＥＧ（Moving Picture Experts Group）などの画像や音声の符号化方式では、可変長符号テーブルが定義され、復号装置においてはこの可変長符号テーブルを参照し、ビットストリームからビットを読み出して一致するビット列とそのビット列によって定義される復号値を取得する。
【０００８】
通常、この可変長符号の復号をパーソナルコンピュータ上のプログラムや、ディジタル・シグナル・プロセッサ（ＤＳＰ）等のハードウェアで動作させるにあたっては、復号のための中間テーブルを作成して実装する方法が一段的である。一例としてこの中間テーブルの構造としてインデックス参照によるものが多く使われている（例えば、特許文献１参照）。
【０００９】
この特許文献１記載の従来の動画像復号装置においては、可変長符号テーブルの最長ビット数分の中間テーブルを用意して復号値とビット長を格納し、ビットストリームから最長ビット数のビット列を読み出して、その値をインデックスとして前記可変長符号テーブルを参照して復号値とビット長を取得する。すなわち、各可変長符号テーブルは復号値に対するビット列とビット長で定義されている。例を図１２（ａ）に示す。
【００１０】
この例では復号値「０」〜「１４」に対してビット長３〜６ビットのビット列が定義されている。この可変長符号データを用いて符号化した符号化データを復号する際には、ビットストリームのビット列が、可変長符号テーブルの各ビット列と一致するかを調べて、一致したビット列の復号値とビット長を取得する。しかし、定義されたビット列とビット長毎にビットストリームとのマッチングを行っていたのでは処理時間がかかるために、通常は中間テーブルを使用して復号を行う。
【００１１】
図１２（ｂ）に中間テーブルとこれを使用した復号処理の例を示す。この例では最長ビット長が６ビットであるため、６ビットの値がとり得る０〜６３の６４個の要素を持つ中間テーブルを定義する。ビットストリームから最長ビット長である６ビットを読み出して、その値０〜６３をインデックスとしてこの中間テーブルを参照して、復号値とビット長を得る。ビットストリームは得られたビット長だけ先に進める。例えば、読み出した６ビットのビット列が「０００１００」であれば、インデックス４の可変長符号テーブルを参照して復号値「１０」とビット長「５」を得る。このような中間テーブルを用いることにより、テーブルを１回参照するのみで復号値とビット長が確定する。
【００１２】
また、従来、読出しビット数を幾つかに分割して読出して複数のテーブルを参照し、そのテーブルに格納した値から復号値とビット長を演算する動画像復号装置も提案されている（例えば、特許文献２参照）。
【００１３】
更に、中間テーブルを階層型とした構成の従来の動画像復号装置も知られている。このものは、読み出すビット数を最長ビットに合わせるのではなく、最長ビット数より少ないビット数に分割して、そのインデックス値により、さらに次のビット数を読むべきかを判定して、復号値が確定するまでこれを繰り返す。
【００１４】
図１３は中間テーブルを階層型とした構成の従来の復号装置における最初に読み出すビット数を４ビットとした場合の中間テーブルと復号処理の一例を示す。図１３（ａ）、（ｂ）及び（ｃ）は、テーブル＃１、＃２、＃３の計３つの中間テーブルを示す。各中間テーブルは復号値とビット長、次のテーブルの有無、次のテーブルがある場合には、そのテーブル番号から構成される。
【００１５】
この中間テーブルを用いた復号処理では、まず、ビットストリームから４ビットを読み出し、その値をインデックスとしてテーブル＃１を参照して復号値とビット長を得る。例えば、読み出した４ビットのビット列が「１１１１」であれば、テーブル＃１のインデックス１５を参照し、復号値が「０」、ビット長が「３」となる。この場合には次のテーブルは「なし」なので、４ビットで確定する。
【００１６】
しかし、読み出した４ビットのビット列が「００００」の場合には、テーブル＃１のインデックス０を参照するので、次のテーブルが「あり」となり、次のテーブル番号が＃２であるので、さらに２ビットを読み出してテーブル＃２を参照する。次に、読み出した２ビットのビット列が「０１」であれば、テーブル＃２のインデックス１を参照して復号値「１３」、ビット長「６」を得る。次のテーブルは「なし」なので、ここで値が確定する。
【００１７】
また、最初に読み出した４ビットのビット列が「０００１」の場合は、テーブル＃１を参照すると、インデックス１で、次のテーブルが「あり」となり、次のテーブル番号が＃３であるので、さらに１ビット読み出してテーブル＃３を参照する。次に、読み出した１ビットが「０」であれば、テーブル＃３のインデックス０を参照して復号値「１０」、ビット長「５」を得、上記の読み出した１ビットが「１」であれば、テーブル＃３のインデックス１を参照して復号値「９」、ビット長「５」を得、いずれも次のテーブルは「なし」なので、ここで値が確定する。
【００１８】
このように、階層的に中間テーブルを定義することにより、最長６ビットの復号のためのテーブルのサイズを小さくすることができる。すなわち、図１２（ｂ）の方法では６ビットに対して６４個のテーブル要素が必要であったが、図１３の方法では２２（＝１６＋４＋２）個のテーブル要素が必要であり、テーブルサイズを小さくできる。
【００１９】
【特許文献１】特開平８−２０４５７８号公報
【特許文献２】特開２０００−３０７４３３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかるに、特許文献１記載の従来の動画像復号装置では、必ず１回のテーブル参照のみで復号値が確定するために処理量を削減できるが、最長ビット数分の中間テーブルが必要なために多くのメモリを必要とする。しかし、この特許文献１記載の従来の動画像復号装置では、最長ビット長のとり得る値の分の要素が必要なため、最長ビット長に応じて中間テーブルの大きさが大きくなる。例えば、最長ビット長が１６ビットになると、０〜６５５３５の計６５５３６個の要素が必要となり、特にメモリリソースが限られたハードウェア実装は現実的でない。
【００２１】
一方、特許文献２記載の従来の動画像復号装置や図１３に示した階層型中間テーブルを使用する従来の動画像復号装置では、特に最長ビット長が長い可変長符号テーブルにおいて中間テーブルの大きさを削減することができるが、ビット数読出しの分割を行った分の複数のテーブル参照を行う必要があり、テーブル参照の負荷が多くなるという問題がある。
【００２２】
すなわち、処理効率について説明すると、図１２に示した単階層の中間テーブルを用いる特許文献１記載の従来の動画像復号装置では、図１４（ａ）のフローチャートに示すように、入力されたビットストリームの最長ビット数分を読出し（ステップＳ１１）、続いて図１２（ｂ）に示したテーブルを参照して復号値とビット長を取得し（ステップＳ１２）、復号値とビット長を確定する（ステップＳ１３）。従って、条件分岐が不要である。
【００２３】
これに対し、特許文献２記載の従来の動画像復号装置や図１３に示した多階層の中間テーブルを用いる従来の動画像復号装置では、図１４（ｂ）のフローチャートに示すように、入力された指定のビット数分を読出し（ステップＳ２１）、まず図１３（ａ）に示したような中間テーブルを参照して次のフラグ、復号値、ビット長を取得し（ステップＳ２２）、次のフラグが次の中間テーブルが有ることを示していないときには、先に取得した復号値、ビット長を確定するが（ステップＳ２４）、次の中間テーブルが有ることを示しているときには、ステップＳ２１に戻り、次の中間テーブルで指定されたビット数分を読み出した後、ステップＳ２２、Ｓ２３の処理を順次に行うことを次の中間テーブルが無くなるまで繰り返す。
【００２４】
従って、特に図１３に示した多階層の中間テーブルを用いる従来の動画像復号装置では、必ず条件分岐が入るため、処理効率が悪くなる。特にＤＳＰ等で条件判定や分岐の負荷を極力減らしたい場合には向かない。一般に、可変長符号化ではビット長の短い符号の出現頻度が高いので、最初のテーブルで値が確定する確率が高い。
【００２５】
本発明は以上の点に鑑みなされたもので、コンテキストに応じて可変長符号テーブルを切り換えて符号化された動画像信号を復号して再生するに際し、最長ビット数に応じて単階層の中間テーブルと多階層の中間テーブルとを切り換えることにより、可変長符号の最長ビット数やエラー有無の状況に応じて、少ないメモリ量で効率的に復号を行い得る動画像復号装置及び動画像復号プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
上記の目的を達成するため、第１の発明の動画像復号装置は、動画像信号を予め定めた画像領域単位で可変長符号化するに際し、動画像信号のコンテキストに応じて、複数種類の可変長符号テーブルの中から選択した可変長符号テーブルを使用して可変長符号化して得た動画像符号化データを、中間テーブルを用いて元の動画像信号に復元する動画像復号装置であって、
可変長符号の最長ビット長に応じた数の要素を持ち、可変長符号の復号値を格納した単階層型の第１の中間テーブルを記憶する第１の記憶手段と、可変長符号の最長ビット長よりも短い読み込むべきビット長と、次に参照するテーブルの有無の情報と、次に参照するテーブルがあるときには次に参照するテーブルの番号、又は次に参照するテーブルが無いときには可変長符号の復号値を格納した複数のテーブルからなる多階層型の第２の中間テーブルを記憶する第２の記憶手段と、動画像符号化データのコンテキストに基づき、動画像符号化データの可変長符号の最長ビット長を判断し、その最長ビット長が、予め定めた値未満であるときは、第１の中間テーブルを用いて動画像符号化データの可変長符号の復号値を取得し、動画像符号化データの可変長符号の最長ビット長が予め定めた値以上であるときには、第２の中間テーブルを用いて動画像符号化データの可変長符号の復号値を取得する復号手段とを有することを特徴とする。
【００２７】
この発明では、動画像符号化データのコンテキストに基づき判断した動画像符号化データの可変長符号の最長ビット長が、予め定めた値未満であるときは、単階層型の第１の中間テーブルを用いて動画像符号化データの可変長符号の復号値を取得するようにしたため、小さなテーブルサイズで条件分岐のない復号ができ、また、動画像符号化データのコンテキストに基づき判断した動画像符号化データの可変長符号の最長ビット長が、予め定めた値以上であるときには、多階層型の第２の中間テーブルを用いて動画像符号化データの可変長符号の復号値を取得するようにしたため、小さなテーブルサイズで最長ビット長の長い可変長符号の復号ができる。
【００２８】
従って、この発明では、第１の中間テーブルにより、例えば最長ビット数の短いコンテキストでは１回のテーブル参照で復号ができ、逆に最長ビット数の長いコンテキストでは第２の中間テーブルにより、階層的にビット読み出しを行いながら復号ができる。
【００２９】
また、上記の目的を達成するため、第２の発明の動画像復号装置は、第１の発明における第２の記憶手段を、復号値が規格上存在しない可変長符号の復号時にエラー発生を示すエラーフラグとエラーコードが、復号値に替えて格納された第２の中間テーブルを記憶するようにしたことを特徴とする。
【００３０】
この発明では、復号値が規格上存在しない可変長符号の復号時には、エラーコードを復号結果として出力することができるため、エラー処理ができる。すなわち、この発明では、該当の復号値が存在しないビット列が出現し得るコンテキストの場合には、第２の中間テーブルをエラーフラグを加えたテーブル構造としてエラーチェックができるようにし、エラービット列が出現し得ないコンテキストではエラーフラグを持たず、エラーチェックを行わないことにより、必要な場合のみエラーチェックができるように、コンテキスト毎に中間テーブルを選択する。
【００３１】
更に、上記の目的を達成するため、第３の発明の動画像復号装置は、次に参照するテーブルの有無と、エラーフラグの有無と、復号値が１つか複数であるかの情報と、動画像符号化データの可変長符号の最長ビット長が、予め定めた値未満であるか否かの組み合わせに応じて複数のタイプの復号関数を定めると共に、複数のタイプの復号関数のうち動画像符号化データのコンテキストの値が、予め定めた値未満である復号関数と第１の中間テーブルのテーブル名とを対応させ、かつ、複数のタイプの復号関数のうち動画像符号化データのコンテキストの値が、予め定めた値以上である復号関数と第２の中間テーブルのテーブル名とを対応させて記憶した第３の記憶手段を有し、復号手段は、動画像符号化データのコンテキストに基づき、動画像符号化データの可変長符号の最長ビット長を判断し、その最長ビット長が、予め定めた値未満であるか否かに応じて、第３の記憶手段に記憶されている複数のタイプの復号関数の中から一のタイプの復号関数を選択し、その選択した復号関数が示すテーブル名の第１又は第２の中間テーブルを用いて動画像符号化データの可変長符号の復号値を取得することを特徴とする。
【００３２】
この発明では、動画像符号化データのコンテキストに基づき判断した動画像符号化データの可変長符号の最長ビット長が、予め定めた値未満であるか否かに応じて、複数のタイプの復号関数の中から一のタイプの復号関数を選択し、その選択した復号関数が示すテーブル名の第１又は第２の中間テーブルを用いて動画像符号化データの可変長符号の復号値を取得するようにしたため、動画像符号化データのコンテキストに応じて選択される復号関数に基づき動画像符号化データの復号ができる。
【００３３】
また、上記の目的を達成するため、第４、第５、第６の発明の動画像復号プログラムは、第１、第２、第３の発明の動画像復号装置の機能をコンピュータにより実現させることができる。
【発明の効果】
【００３４】
第１、第４の発明によれば、動画像符号化データのコンテキストに応じて判断した可変長符号の最長ビット長が、予め定めた値未満であるときは、単階層型の第１の中間テーブルを用いて小さなテーブルサイズで条件分岐のない復号を行い、予め定めた値以上であるときには多階層型の第２の中間テーブルを用いて小さなテーブルサイズで復号を行うようにしたため、ＤＳＰ等でメモリサイズに制限があり、処理能力が十分でないプロセッサで可変長符号の復号を行う場合でも、少ないメモリ量で処理効率良く復号を行うことができる。
【００３５】
また、第２、第５の発明によれば、復号値が規格上存在しない可変長符号の復号時には、エラーコードを復号結果として出力することにより、エラー発生の可能性のある可変長符号の復号時にのみ、効率良くエラー処理ができる。
【００３６】
更に、第３、第６の発明によれば、動画像符号化データのコンテキストの切り替えの度に、コンテキストに応じて複数のタイプの復号関数の中から一のタイプの復号関数を選択し、その選択した復号関数が示すテーブル名の第１又は第２の中間テーブルを用いて動画像符号化データの可変長符号の復号値を取得することにより、コンテキスト毎に中間テーブルサイズの最適化が可能で、条件分岐を極力削減して効率良く復号値を求めることができる。
【発明を実施するための最良の形態】
【００３７】
次に、本発明の実施の形態について図面と共に説明する。図１は本発明になる動画像復号装置の一実施の形態のブロック図を示す。同図中、図１１と同一構成部分には同一符号を付し、その説明を省略する。本実施の形態は、複数種類の可変長符号テーブルを選択使用して可変長符号化されたビットストリーム１を復号するエントロピー復号器２０の構成に特徴がある。
【００３８】
エントロピー復号器２０は、図１２（ｂ）に示した単階層テーブル方式（以下、第１方式という）と、図１３に示した多階層テーブル方式（以下、第２方式という）の両方の処理が可能なデータ構造の中間テーブルを定義し、各可変長符号テーブルで適応的に第１方式と第２方式のどちらの処理を行うかを選択することにより、テーブルサイズを抑えて、かつ、処理効率の良い復号を行うようにしたものである。具体的には、最長ビット長の短い可変長符号については第１方式、最長ビット長の長い可変長符号については第２方式で復号する。
【００３９】
ところで、一般的に、可変長符号化では出現頻度の多いものに短いビット長の符号を割り当てる。更に、符号化対象のデータの種類により、可変長符号テーブルが複数定義されている。例えば、Ｈ.２６４に規定されているコンテキスト適応型可変長符号化方式（ＣＡＶＬＣ：Context Adaptive Variable Length Coding）では、動画像信号（イントラ符号化では、１フレームの動画像信号と予測モード信号；インター符号化ではフレーム間の動画像信号の差分信号と動きベクトル情報）を離散コサイン変換（ＤＣＴ）して得られた変換係数（ＤＣＴ係数）をジグザグスキャンして一次元のベクトルとした後、係数値や連続する”０”の長さ（ラン）などの復号に必要な情報を符号化する。この符号化の際に、ランとレベルそれぞれの可変長符号テーブルを用いてスキャンの逆順方向から別々に符号化し、復号側ではそれらを組み合わせることで係数値の復号を行う。
【００４０】
また、上記の動画像符号化において可変長符号化される変換係数については、符号化効率を上げるために周囲のブロックの変換係数の状況に応じて、複数の可変長符号テーブルを使用している。既に符号化された周囲のブロックの変換係数の出現数が多ければ、符号化するブロックも係数が多い場合に効率の良い可変長符号テーブルを使用し、周囲のブロックの変換係数の出現数が少なければ，符号化するブロックも係数が少ない場合に効率の良い可変長符号テーブルを使用する。このように周囲のブロックの変換係数の状況をコンテキストと呼ぶ。復号の際にはコンテキストに応じて可変長符号テーブルを切り替えて復号を行う必要がある。
【００４１】
次に、本実施の形態の復号動作について、Ｈ.２６４で規定されたＣＡＶＬＣ符号化方式で可変長符号化された動画像信号を例にとって詳細に説明する。Ｈ.２６４に規定されている可変長符号化方式では、変換係数（以下、単に「係数」ともいう）の符号化を行う際に、コンテキスト依存の可変長符号テーブルを使用する。この可変長符号テーブルは、ランの総和（すなわち、最後の非０係数以前の０係数の個数で、これを「total_zeros」という）や、ラン（すなわち、係数値の前の０の連続個数で、これを「run_before」という）等について、周囲の係数の状況（コンテキスト）に応じてタイプ分けされており、また、コンテキストのタイプと可変長符号化信号の最長ビット数との間には図２（ａ）に示すような関係がある。最長ビット長は１〜１６ビットである。
【００４２】
本実施の形態では、このような可変長符号テーブルにおいて、図２（ｂ）に示すように、例えば最長ビット長が１〜６ビットのコンテキストについては前記第１方式（丸１で示す）の中間テーブルを選択し、最長ビット長が７〜１６ビットのコンテキストでは前記第２方式（丸２で示す）の中間テーブルを選択する。つまり、入力ビットストリームのコンテキストのタイプから、入力ビットストリームの可変長符号の最長ビット長を判断して、それに対応して第１方式又は第２方式の中間テーブルを選択して復号を行う。
【００４３】
次に、中間テーブルの詳細について説明する。第１方式では、図１２（ｂ）に示したように、中間テーブルの各要素の項目として復号値とビット長を定義し、最長ビット数分のテーブル要素が必要である。図３（ａ）はこの第１方式の中間テーブルのフォーマットの一例を示す。この中間テーブルは、ビット幅が１６の場合は、図３（ａ）にIで示すように、第０ビット目から第３ビット目までの４ビットによりビット長を示し、第４ビット目から第１５ビット目までの１２ビットにより復号値を示す。また、ビット幅が８の場合は、図３（ａ）にIIで示すように、第０ビット目から第３ビット目までの４ビットによりビット長を示し、第４ビット目から第７ビット目までの４ビットにより復号値を示す。
【００４４】
また、第２方式では、中間テーブルの各要素の項目として、次に参照するテーブルの有無（１ビット）、次に参照するテーブル番号、次に読み出すビット数が必要で、また復号値とビット長を定義する。第２方式では階層に応じた複数の中間テーブルが必要であるが、実装上は１つの配列を分割して使用してもよい。中間テーブルの要素の数はどのように階層を組むか、それぞれの階層で何ビット読み出すかによって変わる。
【００４５】
図３（ｂ）は第２方式の中間テーブルのフォーマットの一例を示す。この第２方式の中間テーブルは、ビット幅が１６で固定であるが、最上位の第１５ビット目が、次に参照する中間テーブルがあるか否かを示す次のテーブルの有無を示すフラグに割り当てられており、次に参照する中間テーブルがあるときには、このフラグが「１」であるときには、図３（ｂ）にIIIで示すように、第０ビット目から第４ビット目までの５ビットにより次に読むビット長を示し、第５ビット目から第１４ビット目までの１０ビットにより次に参照する中間テーブルの番号を示す。
【００４６】
また、次に参照する中間テーブルが無いときには、最上位のフラグが「０」とされ、このときは図３（ｂ）にIVで示すように、第０ビット目から第４ビット目までの５ビットによりビット長を示し、第５ビット目から第１４ビット目までの１０ビットにより復号値を示す。なお、要素のビット幅やビット配分は可変長符号テーブルの定義によって変えることが可能であり、例えば８ビット幅にしたり、１６ビット幅にするなど、必要なビット数を設定すればよい。
【００４７】
本実施の形態によるエントロピー復号器２０での復号処理では、符号化対象のブロック（現ブロック）と現ブロックの周辺のブロックのコンテキストのタイプをそれぞれ検出する。この場合のコンテキストは、これから復号化する情報が何であるかにより変わり、例えば、図４に示すように、これから復号する現ブロック４０に対して復号済みの左隣のブロック４１のＤＣＴ係数の個数ｎＡと、復号済みの上隣のブロック４２のＤＣＴ係数の個数ｎＢとの平均値や、現ブロックの非０係数の個数（total_zeros）や、現ブロックのラン数（run_before）などがある。
【００４８】
すなわち、符号化時には符号化対象の現ブロックの符号化済みの周辺ブロックのＤＣＴ係数の数からこれから符号化するＤＣＴ係数が多く出るのか、少なく出るのか、また、今符号化している現ブロックのＤＣＴ係数の出方（ＤＣＴ係数がいくつあるのか、ＤＣＴ係数のゼロがいくつ残っているのか）などの情報に基づいて、予め定めた規則に従って使用するコンテキストを決め、決定したコンテキストに応じて中間テーブルを選択使用して可変長符号化を行うようにしている。
【００４９】
このため、エントロピー復号器２０は、このようにして得られた動画像符号化データ系列であるビットストリームに対して、上記のコンテキストを検出して、検出したコンテキストのタイプに応じて図２（ｂ）に示したように、第１方式又は第２方式の中間テーブルを選択し、第１方式の中間テーブルを選択したときには図１４（ａ）に示したフローチャートに従って復号値とビット長を得、また第２方式の中間テーブルを選択したときには図１４（ｂ）に示したフローチャートに従って復号値とビット長を得る。復号値は復号されたＤＣＴ係数の値であり、これは図１の逆量子化器３へ出力される。
【００５０】
次に、本発明の他の実施の形態について説明する。上記の実施の形態では、復号値は１つであるものとして説明したが、コンテキストのタイプによっては復号値を２つ以上持つものがある。後述の図５の例ではコンテキストのタイプＧ、Ｈ、Ｉがそれにあたる。そこで、この場合には、中間テーブルの各要素の復号値の部分を更にビット分割して定義する。
【００５１】
これにより、１回の中間テーブル参照で複数の復号値をビットシフト演算のみで同時に得ることができる。この実施の形態では中間テーブルの構造を複数種類定義して、それぞれに応じた復号関数を別途作成し、各コンテキストにはその関数を識別するためのスイッチを持たせることにより、条件分岐を最小限にして復号することが可能である。
【００５２】
次に、更に別の実施の形態について説明する。コンテキストのタイプによっては、復号値が定義されていないものがある。例えば、最長ビット長９の可変長符号データの場合、Ｈ.２６４の規格では、ビット列「０００００００００」は出現しないように規定されている。このため、最長ビット長９の可変長符号データの復号値は定義されていない。従って、ビットストリームにこのようなビット列が出現した場合には、エラーと判定しなければならない。そこで、本実施の形態では、中間テーブルの構造としてこのエラーフラグを持たせるようにしたものである。
【００５３】
図３（ｃ）はエラーフラグを持たせた場合の中間テーブルのフォーマットの一例を示す。このエラーフラグを持たせた場合の中間テーブルも第２方式の中間テーブルで、最上位の第１５ビット目が、次に参照する中間テーブルがあるか否かを示す次のテーブルの有無を示すフラグに割り当てられている。また、上位２ビット目の第１４ビット目が図３（ｃ）にVI、あるいはVIIで示すように、エラーフラグに割り当てられており、エラーフラグが「１」のときにはエラー有り、「０」のときにはエラー無しを示す。
【００５４】
また、エラー無しのときの中間テーブルは、図３（ｃ）にVIで示すように、第０ビット目から第４ビット目までの５ビットによりビット長を示し、第５ビット目から第１３ビット目までの９ビットにより復号値を示す。また、エラー有りのときの中間テーブルは、図３（ｃ）にVIIで示すように、第０ビット目から第４ビット目までの５ビットによりビット長を示し、第５ビット目から第１３ビット目までの９ビットによりエラーコードを示す。
【００５５】
しかし、すべてのコンテキストでこのようなエラービット列が出現する訳ではない。エラービット列が出現し得ないコンテキストの復号ではエラーフラグやエラーチェック処理は不要である。そこで、エラーが出現する可能性のあるコンテキストのみ、エラービットを持ち、エラーチェックを行うようにする。
【００５６】
エラーが出現する可能性のないコンテキストにより選択される中間テーブルは、図３（ｃ）にVで示すように、エラーフラグに割り当てられるビットを持たず、図３（ｂ）に示した中間フラグと同様のフォーマットとされ、処理フローチャートにエラーチェックを含めない。
【００５７】
以上、Ｈ.２６４の各コンテキストのタイプ別に特徴をまとめたのが図５である。上記の例ではコンテキストのタイプＤ、タイプＧでエラービット列が出現する可能性があるために、これらのコンテキストについてはエラービットのある中間テーブルとエラーチェックを行う復号関数を選択する。
【００５８】
復号関数は、「次のテーブルフラグのチェックあり／なし」、「エラーチェックあり／なし」、「復号値１つ／２つ」別に作成する必要がある。
【００５９】
この場合は次のタイプ１〜５の復号関数が必要となる。復号関数のタイプ１は「次のテーブルフラグのチェックなし」、「エラーチェックなし」、「復号値１つ」であり、復号関数のタイプ２は「次のテーブルフラグのチェックあり」、「エラーチェックあり」、「復号値１つ」であり、復号関数のタイプ３は「次のテーブルフラグのチェックあり」、「エラーチェックあり」、「復号値２つ」である。
【００６０】
また、復号関数のタイプ４は「次のテーブルフラグのチェックなし」、「エラーチェックなし」、「復号値２つ」であり、復号関数のタイプ５は「次のテーブルフラグのチェックあり」、「エラーチェックなし」、「復号値２つ」である。これ以外の組合せについては対応するコンテキストが存在しないため、関数は作成しない。なお、上記の「次のテーブルフラグのチェックなし」は第１方式の中間テーブルが選択され、「次のテーブルフラグのチェックあり」は第２方式の中間テーブルが選択される。
【００６１】
次に、図５に示した５つのタイプの復号関数を備えて中間テーブルを使用して復号化動作を行う実施の形態の動作について図６及び図７のフローチャートと共に詳細に説明する。まず、エントロピー復号器２０は、入力ビットストリームの復号すべきデータの種類、コンテキストのタイプに応じて、予め内蔵のメモリに登録されている中間テーブル３１と選択用テーブル３２の中から使用する中間テーブル名と選択関数名（選択関数のタイプ）を得る（図６のステップＳ１０１）。
【００６２】
次に、エントロピー復号器２０は、ステップＳ１０１で取得した選択関数名に応じてステップＳ１０２〜Ｓ１０６のいずれかに分岐して復号処理を行う。この分岐は関数名による呼び出しのために条件判定を必要としない。
【００６３】
図６のステップＳ１０１で取得した選択関数名が図５に示したタイプ１のときにはステップＳ１０２に進んで、ステップＳ１０１で取得した中間テーブル名の第１方式の中間テーブルを用いて、図７（ａ）に示すフローチャートに従った復号処理を行う。すなわち、復号対象のブロックの可変長符号化データの指定のビット数分を読み出し（図７（ａ）のステップＳ１０２１）、第１方式の中間テーブルを参照して復号値（value）とビット長（length）とを取得し（図７（ａ）のステップＳ１０２２）、復号値とビット長とを確定する（図７（ａ）のステップＳ１０２３）。
【００６４】
また、図６のステップＳ１０１で取得した選択関数名が図５に示したタイプ２のときには図６のステップＳ１０３に進んで、ステップＳ１０１で取得した中間テーブル名の第２方式の中間テーブルを用いて、図７（ｂ）に示すフローチャートに従った復号処理を行う。すなわち、復号対象のブロックの可変長符号化データの指定のビット数分を読み出し（図７（ｂ）のステップＳ１０３１）、第２方式の中間テーブルを参照して復号値（value）とビット長（length）とを取得し（図７（ｂ）のステップＳ１０３２）、更にその中間テーブルから次に参照するテーブルがあるかどうか判定し（図７（ｂ）のステップＳ１０３３）、ある場合はエラーフラグが「１」であるかどうか判定する（図７（ｂ）のステップＳ１０３４）。
【００６５】
エラーフラグが「１」であるときは、エラー結果を出力し（図７（ｂ）のステップＳ１０３６）、エラーフラグが「０」であるときは、再びステップＳ１０３１に戻り次の指定のビット数分の読出しを行い、その読出し値に基づいて中間テーブルを参照して次の復号値（value）とビット長（length）とを取得する（図７（ｂ）のステップＳ１０３２）。ステップＳ１０３３で次に参照するテーブルがないと判定された時には、ステップＳ１０３２で取得した復号値とビット長とを確定する（図７（ｂ）のステップＳ１０３５）。
【００６６】
また、図６のステップＳ１０１で取得した選択関数名が図５に示したタイプ３のときには図６のステップＳ１０４に進んで、ステップＳ１０１で取得した中間テーブル名の第２方式の中間テーブルを用いて、図７（ｃ）に示すフローチャートに従った復号処理を行う。すなわち、復号対象のブロックの可変長符号化データの指定のビット数分を読み出し（図７（ｃ）のステップＳ１０４１）、第２方式の中間テーブルを参照して２つの復号値（value1,value2）とビット長（length）とを取得し（図７（ｃ）のステップＳ１０４２）、更にその中間テーブルから次に参照するテーブルがあるかどうか判定し（図７（ｃ）のステップＳ１０４３）、ある場合はエラーフラグが「１」であるかどうか判定する（図７（ｃ）のステップＳ１０４４）。
【００６７】
エラーフラグが「１」であるときは、エラー結果を出力し（図７（ｃ）のステップＳ１０４６）、エラーフラグが「０」であるときは、再びステップＳ１０４１に戻り次の指定のビット数分の読出しを行い、その読出し値に基づいて中間テーブルを参照して次の２つの復号値とビット長とを取得する（図７（ｃ）のステップＳ１０４２）。ステップＳ１０４３で次に参照するテーブルがないと判定された時には、ステップＳ１０４２で取得した２つの復号値とビット長とを確定する（図７（ｃ）のステップＳ１０４５）。
【００６８】
また、図６のステップＳ１０１で取得した選択関数名が図５に示したタイプ４のときにはステップＳ１０５に進んで、ステップＳ１０１で取得した中間テーブル名の第１方式の中間テーブルを用いて、図７（ｄ）に示すフローチャートに従った復号処理を行う。すなわち、復号対象のブロックの可変長符号化データの指定のビット数分を読み出し（図７（ｄ）のステップＳ１０５１）、第１方式の中間テーブルを参照して復号値（value）とビット長（length）とを取得し（図７（ｄ）のステップＳ１０５２）、復号値とビット長とを確定する（図７（ｄ）のステップＳ１０５３）。
【００６９】
更に、図６のステップＳ１０１で取得した選択関数名が図５に示したタイプ５のときにはステップＳ１０６に進んで、ステップＳ１０１で取得した中間テーブル名の第２方式の中間テーブルを用いて、図７（ｅ）に示すフローチャートに従った復号処理を行う。すなわち、復号対象のブロックの可変長符号化データの指定のビット数分を読み出し（図７（ｅ）のステップＳ１０６１）、第２方式の中間テーブルを参照して２つの復号値（value1,value2）とビット長（length）とを取得し（図７（ｅ）のステップＳ１０６２）、更にその中間テーブルから次に参照するテーブルがあるかどうか判定する（図７（ｅ）のステップＳ１０６３）。
【００７０】
次に参照するテーブルがあるときは、再びステップＳ１０６１に戻り次の指定のビット数分の読出しを行い、その読出し値に基づいて中間テーブルを参照して次の２つの復号値とビット長とを取得する（図７（ｅ）のステップＳ１０６２）。ステップＳ１０６３で次に参照するテーブルがないと判定された時には、ステップＳ１０６２で取得した２つの復号値とビット長とを確定する（図７（ｅ）のステップＳ１０６４）。
【００７１】
上記のステップＳ１０２〜Ｓ１０６の復号処理のうち、ステップＳ１０３のタイプ２の復号関数による復号処理と、ステップＳ１０４のタイプ３の復号関数による復号処理については、エラーが出現する可能性があるために、これらの復号処理においてエラー結果が出力されたかどうかのエラーチェックを行い（図６のステップＳ１０７）、エラー結果が出力された場合は、エラー処理を行う（図６のステップＳ１１１）。このエラー処理としては、例えば、エラーのあるブロックの復号処理を中断して次に復号化すべきブロックを検索する処理を行う。なお、エラーが発生した場合については、ステップＳ１０３、Ｓ１０４内の復号処理で直ちにエラー処理へジャンプしても構わない。
【００７２】
ステップＳ１０２、Ｓ１０５又はＳ１０６の復号処理が行われた場合、あるいはステップＳ１０７でエラー結果が出力されない（エラーが発生していない）と判定された場合は、上記のステップＳ１０２〜Ｓ１０６のいずれかの復号処理にて得られた復号値とビット長が確定する（図６のステップＳ１０８）。これにより、入力ビットストリームの現位置をビット長分更新して（図６のステップＳ１０９）、次のコンテキストの復号に進む（図６のステップＳ１１０）。
【００７３】
以上述べた通り、本実施の形態ではコンテキストに応じて最適な復号関数と中間テーブルを構成することが可能で、実装におけるメモリの削減と条件分岐の削減による処理効率の向上を実現できる。更に、エラー処理についても必要な場合のみ行うように復号関数及び中間テーブルを定義できるために、無駄なエラーチェックを省くことができ、処理効率を犠牲にすることなく、エラーチェックが可能となる。
【実施例】
【００７４】
次に、本発明の実施例について説明する。本発明の実施例はＨ.２６４のＣＡＶＬＣに適用した例であり、図８は本発明のコンテキストによる復号方式一覧の一実施例を示す。すなわち、コンテキストは、現ブロックの前述したrun_before、total_zerosのそれぞれと、周辺ブロックの連続する絶対値１の係数の個数（TrailingOnes）及び非０係数の個数（TotalCoeff）とがあり、それぞれのコンテキストのタイプに応じて、復号関数のタイプと、中間テーブルとが定められている。なお、図８において、ｎＣは図４と共に説明した周辺ブロック４１、４２のＤＣＴ係数の個数の平均値を示す。また、ｎＣ＝−１は、色差信号のＤＣ値の復号化時のみに用いられる特別なテーブルである。
【００７５】
図９はコンテキストにより復号関数タイプ３で最長ビット長が「１６」のときに使用する、多階層テーブル方式の中間テーブルＮｃｔｏ０を示す。なお、図９において、テーブル＃１（ＴＡＢＬＥ１）は、要素が０〜２５５の計２５６あるが、図示の便宜上、６１〜２５５の要素の図示は省略してある。この図９に示す中間テーブルは、図３（ｃ）に示したフォーマットとほぼ同じフォーマットである。
【００７６】
図１０は、コンテキストにより復号関数タイプ４で最長ビット長が「６」のときに使用する、単階層テーブル方式の中間テーブルＮｃｔｏ３を示す。同図において、この中間テーブルＮｃｔｏ３のフォーマットは、上位ビット側から５ビット、２ビット、３ビットの計１０ビット（テーブルには８ビットの倍数の１６ビットで格納してもよい）で、第１の復号値、第２の復号値、読み込むビット長が配置された構成となっている。
【００７７】
なお、本発明は、上記した動画像復号装置の各機能をコンピュータに実現させるためのプログラムを含むものである。このプログラムは、記録媒体から読み取られてコンピュータに取り込まれてもよいし、通信ネットワークを介して伝送されてコンピュータに取り込まれてもよい。
【図面の簡単な説明】
【００７８】
【図１】本発明の動画像復号装置の一実施の形態のブロック図である。
【図２】本発明装置の一実施の形態におけるコンテキストのタイプと中間テーブルとの対応関係の一例を示す図である。
【図３】本発明装置の一実施の形態における中間テーブルのフォーマットの各例を示す図である。
【図４】コンテキストの生成の一例を説明する図である。
【図５】本発明装置の一実施の形態におけるコンテキストのタイプ、中間テーブルの方式、復号関数のタイプ、復号値の数、最長ビット長、エラービット列の有無などの関係の一例を示す図である。
【図６】本発明装置の一実施の形態における処理説明用フローチャートである。
【図７】図６中の要部の各復号処理の説明用フローチャートである。
【図８】本発明のコンテキストによる復号方式一覧の一実施例を示す図である。
【図９】図８中の中間テーブルＮｃｔｏ０の一実施例を示す図である。
【図１０】図８中の中間テーブルＮｃｔｏ３の一実施例を示す図である。
【図１１】一般的な動画像復号装置の一例のブロック図である。
【図１２】可変長符号テーブルと中間テーブルの一例を示す図である。
【図１３】階層型中間テーブルの一例を示す図である。
【図１４】図１２の単階層の中間テーブルを用いる復号処理と、図１３の多階層（階層型）の中間テーブルを用いる復号処理を説明するフローチャートである。
【符号の説明】
【００７９】
１  ビットストリーム
２、２０  エントロピー復号器
３  逆量子化器
６  逆変換器
７  予測値作成器
８  動き補償器
９  ループフィルタ
１２  デコード・ピクチャ・バッファ（ＤＰＢ）
【図１】
2006148729.tif 000003
【図２】
2006148729.tif 000004
【図３】
2006148729.tif 000005
【図４】
2006148729.tif 000006
【図５】
2006148729.tif 000007
【図６】
2006148729.tif 000008
【図７】
2006148729.tif 000009
【図８】
2006148729.tif 000010
【図９】
2006148729.tif 000011
【図１０】
2006148729.tif 000012
【図１１】
2006148729.tif 000013
【図１２】
2006148729.tif 000014
【図１３】
2006148729.tif 000015
【図１４】
2006148729.tif 000016