(57)【要約】【課題】ＱＭ−Ｃｏｄｅｒにおいては良好な性能を示す従来の算術復号装置は、ＬＰＳ幅の算出には、直前の領域幅Ｒａｎｇｅを使用するという点と、復号処理により状態が変化するという点より、ＣＡＢＡＣ復号装置に適用することは不可能である。【解決手段】２ビット領域分割部１１２と領域分割部１１３とからなる復号手段は２ビットの一括復号を行う。領域分割部１１１と領域分割部１１３とからなる復号手段は１ビット毎の逐次復号を行う。領域選択部１０４、コンテキストテーブル１０６、２ビットＬＰＳ幅テーブル１０８、境界テーブル１０９及び状態更新テーブル１１５からなる文脈計算手段は、ある時点の復号に使用する文脈から２ビット先の文脈を算出する。この算出した文脈により２ビット復号判定部１１０は一括復号又は逐次復号に切り替える。これにより、ＣＡＢＡＣにおいて、復号ビット系列の２ビット一括復号を可能にする。【選択図】図１
2008311803.tif 000002
【特許請求の範囲】
【請求項１】
入力される復号すべきビット系列の文脈に応じ、符号化された二値のシンボルの発生確率の高い方の優勢シンボルと前記発生確率の低い方の劣勢シンボルとのうち、前記劣勢シンボルの領域幅を随時変動させて復号を行うマルチコンテキスト型の算術復号方法において、
前記復号すべきビット系列のある時点の復号に使用する文脈から、複数ビット先の文脈を算出する第１のステップと、
前記第１のステップにより算出した前記複数ビット先の文脈により、前記復号すべきビット系列の複数ビットの一括復号と、前記復号すべきビット系列の１ビット毎の逐次復号とのうち一方の復号を選択する第２のステップと、
前記第２のステップにより選択された前記一括復号又は逐次復号で復号したビット数を外部に伝送する第３のステップと
を含むことを特徴とする算術復号方法。
【請求項２】
前記第１のステップは、予め作成された第１及び第２のテーブルを参照して前記複数ビット先の文脈を算出するステップであり、
前記第１のテーブルは、前記復号すべきビット系列のある時点の復号に使用する文脈から算出したシンボルの発生確率を示す状態変数と、復号装置の内部状態を示す領域幅から算出した領域幅インデックスとをインデックスとして参照されることにより、複数ビット先の前記劣勢シンボルの領域幅のすべての可能性を算出するための複数ビットＬＰＳ幅テーブルであり、
前記第２のテーブルは、前記状態変数と前記領域幅インデックスとをインデックスとして参照されることにより、前記複数ビットＬＰＳ幅テーブルが示す複数ビット先の前記劣勢シンボルの領域幅のうち正しい領域幅を算出するために、前記劣勢シンボルの領域幅と前記優勢シンボルの領域幅との境界値を算出するための境界テーブルであることを特徴とする請求項１記載の算術復号方法。
【請求項３】
前記一括復号中に、前記劣勢シンボルの領域幅又は前記優勢シンボルの領域幅を所定値と比較し、前記所定値を下回ったことを示す比較結果が得られたときに、その比較結果に応じたビット数分の正規化処理を行わせる正規化要求を発生する第４のステップと、
前記第４のステップによる前記正規化要求を受信したときは、前記第４のステップで取得した復号後の領域幅を、前記正規化要求で示されたビット数分左シフト操作する正規化処理を行い、その正規化後の領域幅を前記復号を行うために出力する第５のステップと
を更に含むことを特徴とする請求項１又は２記載の算術復号方法。
【請求項４】
入力される復号すべきビット系列の文脈に応じ、符号化された二値のシンボルの発生確率の高い方の優勢シンボルと前記発生確率の低い方の劣勢シンボルとのうち、前記劣勢シンボルの領域幅を随時変動させて復号を行うマルチコンテキスト型の算術復号装置において、
前記復号すべきビット系列の複数ビットの一括復号を行う第１の復号手段と、
前記復号すべきビット系列の１ビット毎の逐次復号を行う第２の復号手段と、
前記復号すべきビット系列のある時点の復号に使用する文脈から、複数ビット先の文脈を算出する文脈計算手段と、
前記文脈計算手段により算出した前記複数ビット先の文脈により、前記第１の復号手段と前記第２の復号手段の一方の出力信号を選択するように切り替える復号手段切替手段と、
前記復号手段切替手段により選択された前記第１又は第２の復号手段が復号したビット数を外部に伝送するための復号ビット数伝送手段と
を有することを特徴とする算術復号装置。
【請求項５】
前記文脈計算手段は、予め作成された第１及び第２のテーブルを参照して前記複数ビット先の文脈を算出する手段であり、
前記第１のテーブルは、前記復号すべきビット系列のある時点の復号に使用する文脈から算出したシンボルの発生確率を示す状態変数と、復号装置の内部状態を示す領域幅から算出した領域幅インデックスとをインデックスとして参照されることにより、複数ビット先の前記劣勢シンボルの領域幅のすべての可能性を算出するための複数ビットＬＰＳ幅テーブルであり、
前記第２のテーブルは、前記状態変数と前記領域幅インデックスとをインデックスとして参照されることにより、前記複数ビットＬＰＳ幅テーブルが示す複数ビット先の前記劣勢シンボルの領域幅のうち正しい領域幅を算出するために、前記劣勢シンボルの領域幅と前記優勢シンボルの領域幅との境界値を算出するための境界テーブルであることを特徴とする請求項４記載の算術復号装置。
【請求項６】
前記第１の復号手段による前記一括復号中に、前記劣勢シンボルの領域幅又は前記優勢シンボルの領域幅を所定値と比較し、前記所定値を下回ったことを示す比較結果が得られたときに、その比較結果に応じたビット数分の正規化処理を行わせる正規化要求を発生する正規化要求発生手段と、
前記正規化要求発生手段より前記正規化要求を受信したときは、前記正規化要求発生手段より取得した復号後の領域幅を、前記正規化要求で示されたビット数分左シフト操作する正規化処理を行い、その正規化後の領域幅を前記第１及び第２の復号手段へ出力する正規化手段と
を更に有することを特徴とする請求項４又は５記載の算術復号装置。
【請求項７】
入力される復号すべきビット系列の文脈に応じ、符号化された二値のシンボルの発生確率の高い方の優勢シンボルと前記発生確率の低い方の劣勢シンボルとのうち、前記劣勢シンボルの領域幅を随時変動させてマルチコンテキスト型の算術復号をコンピュータに行わせる算術復号プログラムであって、
前記コンピュータを、
前記復号すべきビット系列の複数ビットの一括復号を行う第１の復号手段と、
前記復号すべきビット系列の１ビット毎の逐次復号を行う第２の復号手段と、
前記復号すべきビット系列のある時点の復号に使用する文脈から、複数ビット先の文脈を算出する文脈計算手段と、
前記文脈計算手段により算出した前記複数ビット先の文脈により、前記第１の復号手段と前記第２の復号手段の一方の出力信号を選択するように切り替える復号手段切替手段と、
前記復号手段切替手段により選択された前記第１又は第２の復号手段が復号したビット数を外部に伝送するための復号ビット数伝送手段と
して機能させることを特徴とする算術復号プログラム。
【請求項８】
前記文脈計算手段は、予め作成された第１及び第２のテーブルを参照して前記複数ビット先の文脈を算出する手段であり、
前記第１のテーブルは、前記復号すべきビット系列のある時点の復号に使用する文脈から算出したシンボルの発生確率を示す状態変数と、復号装置の内部状態を示す領域幅から算出した領域幅インデックスとをインデックスとして参照されることにより、複数ビット先の前記劣勢シンボルの領域幅のすべての可能性を算出するための複数ビットＬＰＳ幅テーブルであり、
前記第２のテーブルは、前記状態変数と前記領域幅インデックスとをインデックスとして参照されることにより、前記複数ビットＬＰＳ幅テーブルが示す複数ビット先の前記劣勢シンボルの領域幅のうち正しい領域幅を算出するために、前記劣勢シンボルの領域幅と前記優勢シンボルの領域幅との境界値を算出するための境界テーブルであることを特徴とする請求項７記載の算術復号プログラム。
【請求項９】
前記第１の復号手段による前記一括復号中に、前記劣勢シンボルの領域幅又は前記優勢シンボルの領域幅を所定値と比較し、前記所定値を下回ったことを示す比較結果が得られたときに、その比較結果に応じたビット数分の正規化処理を行わせる正規化要求を発生する正規化要求発生手段と、
前記正規化要求発生手段より前記正規化要求を受信したときは、前記正規化要求発生手段より取得した復号後の領域幅を、前記正規化要求で示されたビット数分左シフト操作する正規化処理を行い、その正規化後の領域幅を前記第１及び第２の復号手段へ出力する正規化手段と
を更に有することを特徴とする請求項７又は８記載の算術復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は算術復号方法、算術復号装置及び算術復号プログラムに係り、特に動画像符号化信号の復号時の文脈に応じ、随時シンボルの発生確率を変動させるマルチコンテキスト型二値算術復号方法、算術復号装置及び算術復号プログラムに関する。
【背景技術】
【０００２】
算術符号化は、エントロピー符号化の一つであり、効率的な符号化が可能であるということが知られている。算術符号化は、符号化を行うシンボル系列を０以上１未満の値をもつ符号化系列に対応させることにより符号化する手法である。一方、算術復号では符号化系列の値を辿ることにより復号化を行う。発生確率の高いシンボル系列や短いシンボル系列に対する符号化系列を表現するためのビット数は少なくてよいが、発生確率の低いシンボル系列や長いシンボル系列に対しては、符号化系列を表現するビット数は大きくなる。
【０００３】
算術符号化は、画像圧縮や音声圧縮等に用いられており、符号化すべきシンボル系列が特徴の異なる複数のシンボル系列の列からなる場合がある。このような場合、予め複数の確率モデルを用意しておき、今符号化する系列の特徴に合う確率モデルを順次切り替えることにより、符号化効率を高めることができるということが知られている。
【０００４】
ここで、予め用意しておく確率モデル群をコンテキストとよぶ。一般にコンテキストは、優勢シンボル（ＭＰＳ:Most Probable Symbol）と、ＭＰＳの発生確率を求めるために必要となる状態変数とから構成される。複数のコンテキストを予め用意しておき、符号化するシンボル、復号化するビットによりコンテキストを切り替えるような算術符号化をマルチコンテキスト型算術符号化と呼ぶ。
【０００５】
ところで、動画像符号化標準の一つであるＭＰＥＧ−４ ＡＶＣ／Ｈ.２６４では、エントロピー符号化として、ＣＡＢＡＣ（Context-based Adaptive Binary Arithmetic Coding:コンテキスト適応型２値算術符号化）とＣＡＶＬＣ（Context-based Adaptive Variable Length Coding:コンテキスト適応型可変長符号化）という２種類のエントロピー符号化が用意されている。ＣＡＢＡＣはマルチコンテキスト型算術符号化であり、ＣＡＶＬＣはハフマン符号化である。ＣＡＢＡＣはＣＡＶＬＣに比べ、符号化・復号に要する演算量、または回路規模が増大するが、符号化効率が１０％程度向上するという大きな優位性があることが知られている。
【０００６】
ここで、マルチコンテキスト型２値算術符号化法であるＣＡＢＡＣの復号処理について図５、図６、図７と共に説明する。図５は、ＣＡＢＡＣ復号装置の一例の構成図を示す。図６は、図５のＣＡＢＡＣ復号装置の動作を説明するためのフローチャートである。また、図７は、ＣＡＢＡＣ復号動作の処理過程を説明するための図である。図５に示すように、ＣＡＢＡＣ復号装置は、ビットストリーム入力端子２０１、コンテキストインデックス入力端子２０２、復号ビット系列バッファ２０３、領域選択部２０４、復号ビット系列更新／正規化部２０５、領域幅正規化部２０６、領域格納部２０７、ＬＰＳ幅テーブル２０８、領域分割部２０９、コンテキストテーブル２１０、状態更新テーブル２１１、復号ビット出力端子２１２から構成される。
【０００７】
ビットストリーム入力端子２０１は復号すべきビット系列（以下、復号ビット系列ともいう）を入力する端子である。コンテキストインデックス入力端子２０２は復号に使用するコンテキストインデックスｃｔｘＩｄｘを入力する端子である。復号ビット出力端子２１２は、復号したビットを出力する端子である。
【０００８】
復号ビット系列バッファ２０３は、領域選択部２０４と接続し、復号ビット系列ｃｏｄＩＯｆｆｓｅｔを格納すると共に、それを領域選択部２０４へ出力する機能を有する。また、復号ビット系列バッファ２０３は、復号ビット系列更新／正規化部２０５と接続している。ＭＰＥＧ−４ ＡＶＣ／Ｈ.２６４規格では復号ビット系列は、９ビットレジスタが規定されており、入力ビットストリーム入力端子２０１から受信したビット系列を９ビット分格納する。
【０００９】
領域選択部２０４は、復号ビットがＭＰＳ（Most Probably Symbol;優勢シンボル）であるか、ＬＰＳ（Least Probably Symbol;劣勢シンボル）であるかを決定し、復号ビット出力端子２１２を通し、外部へ出力する機能を有する。ＭＰＳは出現確率が高い方のシンボルであり、ＬＰＳは出現確率が低い方のシンボルである。また、領域選択部２０４は、復号ビット系列バッファ２０３から、復号ビット系列ｃｏｄＩＯｆｆｓｅｔを取得する。また、領域分割部２０９から、ＭＰＳ幅ｃｏｄＩＲａｎｇｅＭＰＳとｃｏｄＩＲａｎｇｅＬＰＳとを取得する。また、領域選択部２０４は、状態更新テーブル２１１に、状態更新要求信号を出力する。また、コンテキストテーブル２１０よりｖａｌＭＰＳを取得する。
【００１０】
領域選択部２０４は、復号ビット系列バッファ２０３より取得した復号ビット系列ｃｏｄＩＯｆｆｓｅｔと、領域分割部２０９より取得したｃｏｄＩＲａｎｇｅＭＰＳとの大きさを比較する。その比較結果がｃｏｄＩＲａｎｇｅＭＰＳ≧ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＭＰＳであると判断し、コンテキストテーブル２１０より受信したｖａｌＭＰＳを選択して復号ビット出力端子２１２へ送る。また、領域選択部２０４は、ｃｏｄＩＲａｎｇｅＭＰＳを領域幅正規化部２０６に出力すると共に、状態更新テーブル２１１にＭＰＳ復号信号を出力する。
【００１１】
一方、上記の比較結果がｃｏｄＩＲａｎｇｅＭＰＳ＜ｃｏｄＩＯｆｆｓｅｔのときは、領域選択部２０４は、復号ビットはＬＰＳであると判断し、コンテキストテーブル２１０より取得したｖａｌＭＰＳを反転し、復号ビット出力端子２１２へ送る。また、領域選択部２０４は、ｃｏｄＩＲａｎｇｅＬＰＳを領域幅正規化部２０６に出力すると共に、状態更新テーブル２１１にＬＰＳ復号信号を出力する。更に、領域選択部２０４は、復号ビット系列更新／正規化部２０５に復号ビット系列更新要求とｃｏｄＩＲａｎｇｅＭＰＳを出力する。上記のＭＰＳ復号信号、ＬＰＳ復号信号は、コンテキストテーブルの更新を行うための信号である。
【００１２】
また、領域選択部２０４は、復号ビット系列更新／正規化部２０５と接続し、復号ビット系列更新要求と正規化要求を出力し、領域幅正規化部２０６と接続し、正規化要求を出力する機能を有する。正規化は、領域選択部２０４で選択された領域幅（ｃｏｄＩＲａｎｇｅＭＰＳもしくはｃｏｄＩＲａｎｇｅＬＰＳ）が、所定値２５６（＝０ｘ１００）を下回った場合に発生する。これは、領域幅ｑＣｏｄＩＲａｎｇｅが所定値０ｘ１００以上を常に確保することを保証する処理であり、ｑＣｏｄＩＲａｎｇｅが所定値０ｘ１００以上になるまで左シフトを繰り返すという操作である。上記の領域幅ｑＣｏｄＩＲａｎｇｅと所定値０ｘ１００とを比較し、左シフトするビット数を算出し、これを正規化要求とする。上記の領域幅ｑＣｏｄＩＲａｎｇｅが所定値０ｘ１００以上である場合は、正規化要求は０となる。
【００１３】
復号ビット系列更新／正規化部２０５は、復号ビット系列バッファ２０３の更新および正規化を行う機能を有する。また、復号ビット系列更新／正規化部２０５は、領域選択部２０４から更新要求を受信したときに更新処理を行う。この更新処理では、復号ビット系列ｃｏｄＩＯｆｆｓｅｔから、更新要求とともに受信したｑＣｏｄＩＲａｎｇｅＭＰＳを減算し、新たなｃｏｄＩＯｆｆｓｅｔとする。
【００１４】
また、復号ビット系列更新／正規化部２０５は、領域選択部２０４から正規化要求を受信したとき復号ビット系列ｃｏｄＩＯｆｆｓｅｔの正規化処理を行う。この正規化処理では、正規化要求で示されたビット分、復号ビット系列ｃｏｄＩＯｆｆｓｅｔの左シフト操作を行うと共に、シフトしたビットだけ入力ビットストリーム入力端子２０１よりビットを読み出した後、それらを足し合わせるという操作を行う。左シフトによりレジスタから溢れたビットは捨てられる。
【００１５】
領域幅正規化部２０６は、領域選択部２０４より、正規化要求を受信したときに正規化処理を行う。この正規化処理では、領域選択部２０４より取得した、復号後の領域幅ｑＣｏｄＩＲａｎｇｅを正規化要求で示されたビット数分、左シフトする。正規化後のｑＣｏｄＩＲａｎｇｅは領域格納部２０７へ出力される。
【００１６】
領域格納部２０７は、領域分割部２０９からＣＡＢＡＣ復号装置の内部状態を示す復号後の領域幅ｑＣｏｄＩＲａｎｇｅを取得して格納する機能と、ＬＰＳ幅テーブル２０８に対し、格納したｑＣｏｄＩＲａｎｇｅに出力する機能とを有する。ＣＡＢＡＣでは、上記の復号後の領域幅ｑＣｏｄＩＲａｎｇｅは、９ビットレジスタで構成され、０（＝０ｘ０００）から５１０（＝０ｘ１ＦＥ）までの値をとりうる。初期状態は５１０（＝０ｘ１ＦＥ）である。ここで、０ｘｑｑｑは１６進表現を表す。
【００１７】
ＬＰＳ幅テーブル２０８は、ＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳを求めるためのテーブルである。ＬＰＳ幅テーブル２０８の一部を図８に示す。図８に示すテーブルは、ＭＰＥＧ−４ ＡＶＣ／Ｈ.２６４規格として標準化されたテーブルである。ＬＰＳ幅テーブル２０８は、領域格納部２０７から取得した領域幅ｑＣｏｄＩＲａｎｇｅと、コンテキストテーブル２１０から取得したｐＳｔａｔｅＩｄｘとに基づいて、ＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳを決定する。このｃｏｄＩＲａｎｇｅＬＰＳは図８で示したテーブルにおいて、９ビットのｑＣｏｄＩＲａｎｇｅの上位２ビット目と３ビット目の２ビットで算出されるインデックスｑＣｏｄＩＲａｎｇｅＩｄｘと、コンテキストインデックスｐＳｔａｔｅＩｄｘとにより、ｃｏｄＩＲａｎｇｅＬＰＳを得る。
【００１８】
領域分割部２０９は、現在の領域を、領域幅ｃｏｄＩＲａｎｇｅＭＰＳを持つＭＰＳ領域と、領域幅ｃｏｄＩＲａｎｇｅＬＰＳを持つＬＰＳ領域とに分割する機能を有する。すなわち、領域分割部２０９は、ＬＰＳ幅テーブル２０８からＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得すると共に、領域格納部２０７から現在の領域幅ｃｏｄＩＲａｎｇｅを取得し、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｃｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
により、ＭＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＭＰＳを算出する。そして、領域分割部２０９は、ｃｏｄＩＲａｎｇｅＭＰＳとｃｏｄＩＲａｎｇｅＬＰＳとを領域選択部２０４へ出力する。
【００１９】
コンテキストテーブル２１０は、復号に使用するコンテキストを取得するためのテーブルである。コンテキストテーブル２１０の一部を図９に示す。このコンテキストテーブル２１０の各コンテキストは状態変数ｐＳｔａｔｅＩｄｘとＭＰＳ値ｖａｌＭＰＳとからなる。
【００２０】
上記の状態変数ｐＳｔａｔｅＩｄｘは、ＬＰＳ幅テーブル２０８からＬＰＳ幅ｃｏｄｌＲａｎｇｅを取得するためのインデックスである。ＭＰＥＧ−４ ＡＶＣ／Ｈ.２６４では、状態変数ｐＳｔａｔｅＩｄｘは”０”から”６３”までの値をとる。状態変数ｐＳｔａｔｅＩｄｘの大きさが大まかなＭＰＳとＬＰＳの発生頻度を表すものであり、ｐＳｔａｔｅＩｄｘが大きいときはＭＰＳの発生頻度が大きいことを表し、ｐＳｔａｔｅＩｄｘが小さいときはＬＰＳの発生頻度が大きい（＝ＭＰＳとＬＰＳの発生頻度が殆ど変わらない）ことを表す。
【００２１】
また、上記のＭＰＳ値ｖａｌＭＰＳは、ＭＰＳの値を記憶する変数であり、”０”もしくは”１”のどちらかを取る。このＭＰＳ値ｖａｌＭＰＳは、コンテキストテーブル２１０から領域選択部２０４に供給され、復号ビットの決定に使用される。領域選択部２０４では、復号ビットがＭＰＳであるか、ＬＰＳであるかの判定を行い、ＭＰＳであればｖａｌＭＰＳを、ＬＰＳであればｖａｌＭＰＳの反転値をそれぞれ復号ビットとする。
【００２２】
また、コンテキストテーブル２１０は、コンテキストインデックス入力端子２０２より、コンテキストインデックスｃｔｘＩｄｘを取得すると、図９に示したテーブルから対応するｐＳｔａｔｅＩｄｘとｖａｌＭＰＳを参照し、ｐＳｔａｔｅＩｄｘをＬＰＳ幅テーブル２０８へ出力し、ｖａｌＭＰＳを領域選択部２０４へ出力する。上記のコンテキストインデックスｃｔｘＩｄｘはＭＰＥＧ−４ ＡＶＣ／Ｈ.２６４の構文要素、周辺情報により特定されるインデックスである。コンテキストテーブル２１０の内容は、復号結果により更新される。領域選択部２０４において、復号ビットがＭＰＳであった場合は、状態更新テーブル２１１にＭＰＳ復号信号が、復号ビットがＬＰＳであった場合は、ＬＰＳ復号信号が出力される。
【００２３】
状態更新テーブル２１１は、入力された信号に応じて、状態変数ｐＳｔａｔｅＩｄｘの更新値を参照し、コンテキストテーブル２１０のコンテキストインデックスｃｔｘＩｄｘで示された内容を更新する。コンテキストテーブル２１０は状態更新テーブル２１１で決定した更新値ｎｅｘｔＳｔａｔｅＩｄｘを取得し、ｐＳｔａｔｅＩｄｘ［ｃｔｘＩｄｘ］＝ｎｅｘｔＳｔａｔｅＩｄｘとして更新する。
【００２４】
状態更新テーブル２１１は、コンテキストテーブル２１０の内容を更新するためのテーブルである。状態更新テーブル２１１を図１０に示す。図１０に示す状態更新テーブル２１１はＭＰＥＧ−４ ＡＶＣ／Ｈ.２６４規格として標準化されたテーブルである。この状態更新テーブル２１１は、領域選択部２０４よりＭＰＳ復号信号、もしくはＬＰＳ復号信号どちらかを取得すると共に、コンテキストテーブル２０８より状態変数ｐＳｔａｔｅＩｄｘを取得する。そして、取得したＭＰＳ／ＬＰＳ復号信号、ｐＳｔａｔｅＩｄｘより、次の状態であるｎｅｘｔＳｔｅＩｄｘを参照する。ＭＰＳ復号信号を取得した場合の次の状態ｎｅｘｔＳｔａｔｅＩｄｘは、図１０にてｔｒａｎｓＩｄｘＭＰＳで与えられるものである。ＬＰＳ復号信号を取得した場合の次の状態ｎｅｘｔＳｔａｔｅＩｄｘは、図１０で、ｔｒａｎｓＩｄｘＬＰＳで与えられるものである。状態更新テーブル２１１は、ｎｅｘｔＳｔａｔｅＩｄｘを決定すると、コンテキストテーブル２１０にｎｅｘｔＳｔａｔｅＩｄｘを出力する。以上が図５の算術復号装置の構成の説明である。
【００２５】
次に、図５の算術復号装置の動作を図６のフローチャートを用いて説明する。コンテキストインデックス入力端子２０２より、コンテキストインデックスｃｔｘＩｄｘがコンテキストテーブル２１０に送られる。コンテキストテーブル２１０では、入力したｃｔｘＩｄｘから図９に示したテーブルから対応するｐＳｔａｔｅＩｄｘとｖａｌＭＰＳを参照し、ｐＳｔａｔｅＩｄｘをＬＰＳ幅テーブル２０８へ出力し、ｖａｌＭＰＳを領域選択部２０４へ出力する。
【００２６】
ＬＰＳ幅テーブル２０８では、領域格納部２０７より領域幅ｑＣｏｄＩＲａｎｇｅを取得し、
ｑＣｏｄＩＲａｐｇｅＩｄｘ＝（ｑＣｏｄＩＲａｎｇｅ＞＞６）＆０ｘ０３
という計算により、ｑＣｏｄＩＲａｎｇｅＩｄｘを算出する。続いて、ＬＰＳ幅テーブル２０８は、コンテキストテーブル２１０より取得したｐＳｔａｔｅＩｄｘと、算出した上記のｑＣｏｄＩＲａｎｇｅＩｄｘとより、図８に示したＬＰＳ幅テーブルを参照し、ＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳを取得し、その取得したｃｏｄＩＲａｎｇｅＬＰＳを領域分割部２０９へ送る。
【００２７】
領域分割部２０９は、ＬＰＳ幅テーブル２０８から取得したＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳと、領域格納部２０７から取得したｑＣｏｄＩＲａｎｇｅとより、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｑＣｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
により、ＭＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＭＰＳを算出する。続いて、領域分割部２０９は、算出したｃｏｄＩＲａｎｇｅＭＰＳと、取得したｃｏｄＩＲａｎｇｅＬＰＳとを領域選択部２０４に送る（以上、ステップＳ２１）。
【００２８】
領域選択部２０４は、領域分割部２０９より取得したＭＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＭＰＳと、復号ビット系列バッファ２０３より取得した復号ビット系列ｃｏｄＩＯｆｆｓｅｔとを比較し、その比較結果がｃｏｄＩＲａｎｇｅＭＰＳ≧ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＭＰＳであると判断し、その比較結果がｃｏｄＩＲａｎｇｅＭＰＳ＜ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＬＰＳと判断する（ステップＳ２２）。
【００２９】
領域選択部２０４は復号ビットがＭＰＳである（ＬＰＳでない）と判断したときは、コンテキストテーブル２１０より取得したｖａｌＭＰＳを復号ビットに設定してＭＰＳ値として復号ビット出力端子２１２へ出力する（ステップＳ２４）。また、このとき領域選択部２０４は、ｃｏｄＩＲａｎｇｅ＝ｃｏｄＩＲａｎｇｅＭＰＳと設定した後、ｃｏｄＩＲａｎｇｅと所定値０ｘ１００を比較し、正規化要求信号を算出して、ｃｏｄＩＲａｎｇｅと正規化要求信号を領域幅正規化部２０６へ出力する。また、領域選択部２０４は正規化要求信号を復号ビット系列更新／正規化部２０５に供給する一方、状態更新テーブル２１１へＭＰＳ復号信号を供給して、ステップＳ２５へ進む。
【００３０】
一方、領域選択部２０４は復号ビットがＬＰＳであると判断したときは、コンテキストテーブル２１０より取得したｖａｌＭＰＳを反転し、その値をＬＰＳ値に設定し、復号ビット出力端子２１２へ出力する（ステップＳ２３）。また、このとき領域選択部２０４は、ｃｏｄＩＲａｎｇｅ＝ｃｏｄＩＲａｎｇｅＬＰＳと設定すると共に、ｃｏｄＩＯｆｆｓｅｔ＝ｃｏｄＩＯｆｆｓｅｔ−ｃｏｄＩＲａｎｇｅと設定する。更に、領域選択部２０４は、ｃｏｄＩＲａｎｇｅと所定値０ｘ１００を比較し、正規化要求信号を算出した後、ｃｏｄＩＲａｎｇｅと算出した正規化要求信号とを領域幅正規化部２０６へ出力すると共に、更新信号と共にｃｏｄＩＯｆｆｓｅｔと正規化要求信号とを復号ビット系列更新／正規化部２０５に出力する。また、領域選択部２０４は、状態更新テーブル２１１へＬＰＳ復号信号を送り、ステップＳ２５へ進む。
【００３１】
ステップＳ２５では、図１０に示す状態更新テーブル２１１が、領域選択部２０４からのＭＰＳ復号信号又はＬＰＳ復号信号と、コンテキストテーブル２０８からの状態変数ｐＳｔａｔｅＩｄｘとより、ｎｅｘｔＳｔａｔｅＩｄｘ＝ｔｒａｎｓＩｄｘＬＰＳ／ＭＰＳ［ｐＳｔａｔｅＩｄｘ］により次のコンテキスト状態ｎｅｘｔＳｔｅＩｄｘを参照する。参照して得られた次のコンテキスト状態ｎｅｘｔＳｔａｔｅＩｄｘはｐＳｔａｔｅＩｄｘとして、コンテキストテーブル２１０へ送られる。また、復号ビットがＬＰＳであった場合、すなわち復号ビット系列更新／正規化部２０５に更新信号、ｃｏｄＩＯｆｆｓｅｔが送られた場合は、復号ビット系列更新／正規化部２０５のｃｏｄＩＯｆｆｓｅｔを復号ビット系列バッファ２０３へ送り、復号ビット系列の更新を行う（ステップＳ２５）。
【００３２】
続いて、正規化処理が行われる（ステップＳ２６）。このステップＳ２６では、領域幅正規化部２０６に正規化要求とｃｏｄＩＲａｎｇｅとが供給され、ｑＣｏｄＩＲａｎｇｅを正規化要求で示されたビット分だけ左シフトを行う正規化処理がなされ、得られた正規化後のｑＣｏｄＩＲａｎｇｅが領域格納部２０７へ出力されて、領域幅の更新を行う。また、復号ビット系列更新／正規化部２０５に正規化要求が送られ、復号ビット系列バッファ２０３の正規化を行う。この正規化処理は正規化要求で示されたビット分、復号ビット系列の左シフト操作を行うと共に、シフトしたビットだけビットストリーム入力端子２０１よりビットストリームを読み出した後、それらを足し合わせる。左シフトによりレジスタから溢れたビットは捨てられる。以上が図５の算術復号装置の動作の説明である。
【００３３】
ここまでの処理過程を改めて説明する。図７はＣＡＢＡＣ復号動作の処理過程を説明するための図である。図７（ａ）は初期状態を示す。この初期状態ではｑＣｏｄＩＲａｎｇｅの幅を持つ領域１００２は、正規化判定のための所定値１００１(0x100)に対して図示の関係にあるものとする。なお、１００３は復号ビット系列ｃｏｄＩＯｆｆｓｅｔである。
【００３４】
図７（ｂ）は領域分割を行ったところを示す。図６のフローチャートのステップＳ２１に対応する。初期領域１００２を、ＬＰＳに対応する領域１００４とＭＰＳに対応する領域１００５とに分割する。ＬＰＳ領域１００４はｃｏｄＩＲａｎｇｅＬＰＳの領域幅を持ち、ＭＰＳ領域１００５はＣｏｄＩＲａｎｇｅＭＰＳの領域幅を持つ。
【００３５】
図７（ｃ）は領域の選択を行った部分を示す。図６のフローチャートのステップＳ２２に対応する。ＭＰＳ領域１００５の領域幅ｃｏｄＩＲａｎｇｅＭＰＳと、１００３で示す復号ビット系列ｃｏｄＩＯｆｆｓｅｔとを比較すると、ｃｏｄＩＲａｎｇｅＭＰＳ≧ｃｏｄＩＯｆｆｓｅｔであるため、復号ビットはＭＰＳであることが確定する。新しいＭＰＳ領域をｑＣｏｄＩＲａｎｇｅ＝ｃｏｄＩＲａｎｇｅＭＰＳとする。ここで新しいＭＰＳ領域ｑＣｏｄＩＲａｎｇｅは正規化判定のための所定値１００１より小であるため、正規化を行う。
【００３６】
図７（ｄ）は正規化を行ったところである。図６のフローチャートのステップＳ２６に対応する。まず、新しいＭＰＳ領域１００５に対し左シフト操作を行い、正規化後領域１００７を生成する。そして、同じビット数分だけ復号ビット系列１００３に対しても左シフト操作を行い、かつ、同ビット数分のビットの取得を行い、復号ビット系列１００６を生成する。次のビットの復号は、領域１００７と復号ビット系列１００６に対し同様の操作を行うことにより、復号処理とする。
【００３７】
上記のＣＡＢＡＣは２値算術符号化・復号方式であるため、多値信号を扱う場合は、２値表現に変換して符号化・復号するという手続きをとる（例えば、特許文献１参照）。この特許文献１では、ＣＡＢＡＣの量子化係数レベル、ＭＶＤの２値化を示している。これらは、ビットストリームの中でも特に多くの情報を占めるものである。図１１は量子化係数レベルの２値化を示したものである。量子化係数レベルは単項部分とＥｘｐ−Ｇｏｌｏｍｂ（指数ゴロム）成分の２段階に分けられ、レベルが１４までは単項部分のみを使用し、それ以上の場合はＥｘｐ−Ｇｏｌｏｍｂ成分を追加するという形態をとる。前半の単項部分は同一コンテキストインデックスを使用する。
【００３８】
ところで、算術復号装置としては、２値画像符号化の国際標準ＪＢＩＧ（Joint Bi-level Image Experts Group;ＩＴＵ勧告Ｔ.８２）で採用されているＱＭ−Ｃｏｄｅｒと呼ばれるものも存在する。図１２はＱＭ−Ｃｏｄｅｒの算術復号装置の一例の構成図を示す。ＱＭ−Ｃｏｄｅｒの算術復号装置は、図１２に示すように、ビットストリーム入力端子３０１、コンテキストインデックス入力端子３０２、復号ビット系列バッファ３０３、領域選択部３０４、復号ビット系列更新／正規化部３０５、領域幅正規化部３０６、領域格納部３０７、領域分割部３０８、ＬＰＳ幅テーブル３０９、コンテキストテーブル３１０、復号ビット出力端子３１１より構成される。
【００３９】
図１２のＱＭ−Ｃｏｄｅｒの算術復号装置は、図５のＣＡＢＡＣ復号装置とほぼ同様の構成であるが、状態更新テーブル２１１に対応するブロックがない点、ＬＰＳ幅テーブル３０９への入力に領域格納部３０７からの入力がない点が大きく異なる。これは、ＱＭ−Ｃｏｄｅｒは、同じコンテキストインデックスを用いている限り、ｑＳｔａｔｅＩｄｘが変化しないこと、ｃｏｄＩＲａｎｇｅＬＰＳの算出に関しては、ｑＳｔａｔｅＩｄｘ、もしくはｃｔｘＩｄｘのみを使用することを意味する。
【００４０】
以下図１２のＱＭ−Ｃｏｄｅｒ復号装置の構成要素について説明する。復号ビット系列バッファ３０３は、入力端子３０１からの復号ビット系列ｃｏｄＩＯｆｆｓｅｔを格納する機能と、格納した復号ビット系列ｃｏｄＩＯｆｆｓｅｔを領域選択部３０４に出力する機能とを有する。また、復号ビット系列バッファ３０３は、復号ビット系列更新／正規化部３０５と接続している。
【００４１】
領域選択部３０４は、復号ビットがＭＰＳであるか、ＬＰＳであるかを決定し、復号ビット出力端子３０９を通し、外部へ出力する機能を有する。領域選択部３０４は、復号ビット系列バッファ３０３から、復号ビット系列ｃｏｄＩＯｆｆｓｅｔを取得し、領域分割部３０８から、ＭＰＳ幅ｃｏｄＩＲａｎｇｅＭＰＳ、ＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得すると共に、コンテキストテーブル３１０よりｖａｌＭＰＳを取得する。
【００４２】
領域選択部３０４は、復号ビット系列バッファ３０３より入力されるｃｏｄＩＯｆｆｓｅｔと、領域分割部３０８より入力されるｃｏｄＩＲａｎｇｅＭＰＳとの大きさを比較し、その比較結果がｃｏｄＩＲａｎｇｅＭＰＳ≧ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＭＰＳであると判断し、コンテキストテーブル３１０より取得したｖａｌＭＰＳを復号ビット出力端子３１１へ出力する。そして、ｃｏｄＩＲａｎｇｅＭＰＳを領域正規化部３０６に供給する。
【００４３】
一方、領域選択部３０４は、上記の比較結果がｃｏｄＩＲａｎｇｅＭＰＳ＜ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＬＰＳであると判断し、コンテキストテーブル３１０より取得したｖａｌＭＰＳを反転した値を復号ビット出力端子３１１へ出力する。そして、ｃｏｄＩＲａｎｇｅＬＰＳを領域幅正規化部３０６に供給する。そして、復号ビット系列更新／正規化部３０５に復号ビット系列更新要求とｃｏｄＩＲａｎｇｅＭＰＳを供給する。
【００４４】
また、領域選択部３０４は、復号ビット系列更新／正規化部３０５に対し、更新要求と正規化要求を供給し、領域幅正規化部３０６に対し、正規化要求を供給する機能を有する。正規化は、領域選択部３０４で選択された領域幅（ｃｏｄＩＲａｎｇｅＭＰＳもしくはｃｏｄＩＲａｎｇｅＬＰＳ）が、所定値を下回った場合に発生する。この正規化は領域幅ｑＣｏｄＩＲａｎｇｅが所定値以上を常に確保することを保証する処理であり、ｑＣｏｄＩＲａｎｇｅが所定値以上になるまで左シフトを繰り返すという操作である。ｑＣｏｄＩＲａｎｇｅと所定値とを比較し、左シフトするビット数を算出し、これを正規化要求とする。ｑＣｏｄＩＲａｎｇｅが所定値以上である場合は、正規化要求は０となる。
【００４５】
復号ビット系列更新／正規化部３０５は、復号ビット系列バッファ３０３の更新および正規化を行う機能を有する。復号ビット系列正規化部３０５は、領域選択部３０４より更新要求を受信したときに更新処理を行う。この更新処理は、ｃｏｄＩＯｆｆｓｅｔから、更新要求と共に受信したｑＣｏｄＩＲａｎｇｅＭＰＳを減算し、新たなｃｏｄＩＯｆｆｓｅｔとする処理である。また復号ビット系列正規化部３０５は、領域選択部３０４から正規化要求を受信したときに、ｃｏｄＩＯｆｆｓｅｔの正規化を行う。この正規化処理は、正規化要求で示されたビット分、左シフト操作を行い、シフトしたビットだけ入力ビットストリーム入力端子３０１よりビットを読み出し、足し合わせるという操作を行う。左シフトによりレジスタから溢れたビットは捨てられる。
【００４６】
領域幅正規化部３０６は、領域選択部３０４より、正規化要求を受信したときに正規化処理を行う。この正規化処理では復号後の領域幅ｑＣｏｄＩＲａｎｇｅと、正規化要求で示されたビット数分の左シフト操作を行う。そして正規化後のｑＣｏｄＩＲａｎｇｅを領域格納部３０７へ送信する。
【００４７】
領域格納部３０７は、ＱＭ−Ｃｏｄｅｒ復号装置の内部状態ｑＣｏｄＩＲａｎｇｅを格納する機能を有する。領域格納部３０７は、領域分割部３０８と接続し、ｑＣｏｄＩＲａｎｇｅの送受信を行う機能を有する。
【００４８】
領域分割部３０８は、現在の領域を、領域幅ｃｏｄＩＲａｎｇｅＭＰＳを持つＭＰＳ領域と、領域幅ｃｏｄＩＲａｎｇｅＬＰＳを持つＬＰＳ領域に分割する機能を有する。領域分割部３０８は、ＬＰＳ幅テーブル３０９からＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得し、また、領域格納部３０７から現在の領域ｃｏｄＩＲａｎｇｅを取得する。
【００４９】
領域分割部３０８は、ｃｏｄＩＲａｎｇｅとｃｏｄＩＲａｎｇｅＬＰＳを取得すると、
次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｃｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
により、ＭＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＭＰＳを算出する。そして、領域分割部３０８は、ｃｏｄＩＲａｎｇｅＭＰＳとｃｏｄＩＲａｎｇｅＬＰＳを領域選択部３０４へ出力する。
【００５０】
ＬＰＳ幅テーブル３０９は、ＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳを求めるためのテーブルである。テーブルはＪＢＩＧ（ＩＴＵ勧告Ｔ.８２）で採用されているものである。ＬＰＳ幅テーブル３０９は、コンテキストテーブル３１０から、ｐＳｔａｔｅＩｄｘを受信し、テーブル参照によりｃｏｄＩＲａｎｇｅＬＰＳを決定する。
【００５１】
コンテキストテーブル３１０は、復号に使用するコンテキストを取得するためのテーブルである。テーブルはＪＢＩＧ（ＩＴＵ勧告Ｔ.８２）で採用されているものである。ｐＳｔａｔｅＩｄｘは、ＬＰＳ幅テーブル３０９からＬＰＳ幅ｃｏｄＩＲａｎｇｅを取得するためのインデックスである。ｖａｌＭＰＳは、ＭＰＳの値を記憶する変数であり、０もしくは１のどちらかを取る。ｖａｌＭＰＳは、領域選択部３０４に出力され、復号ビットの決定に使用される。領域選択部３０４では、復号ビットがＭＰＳであるか、ＬＰＳであるかの判定を行い、ＭＰＳであればｖａｌＭＰＳを、ＬＰＳであればｖａｌＭＰＳの反転値をそれぞれ復号ビットとする。
【００５２】
コンテキストテーブル３１０は、コンテキストインデックス入力端子３０２より、コンテキストインデックスｃｔｘＩｄｘが入力されると、対応するｐＳｔａｔｅＩｄｘとｖａｌＭＰＳを参照し、ｐＳｔａｔｅＩｄｘをＬＰＳ幅テーブル３０９へ送信し、ｖａｌＭＰＳを領域選択部３０４へ送信する。コンテキストテーブル３１０の内容は固定値である。ここが図５と大きく違う点の一つである。以上が図１２の算術復号装置の構成の説明である。
【００５３】
次に、図１２の算術復号装置の動作を、図６のフローチャートを用いて説明する。コンテキストインデックス入力端子３０２より、コンテキストインデックスｃｔｘＩｄｘがコンテキストテーブル３１０に供給される。コンテキストテーブル３１０では、入力したｃｔｘＩｄｘからｐＳｔａｔｅＩｄｘ＝ｐＳｔａｔｅＩｄｘ［ｃｔｘＩｄｘ］と、ｖａｌＭＰＳｖａｌＭＰＳ［ｃｔｘＩｄｘ］を取得し、取得したｐＳｔａｔｅＩｄｘをＬＰＳ幅テーブル３０９へ、取得したｖａｌＭＰＳを領域選択部３０３へそれぞれ出力する。
【００５４】
ＬＰＳ幅テーブル３０９では、コンテキストテーブル３１０より取得したｐＳｔａｔｅＩｄｘによりＬＰＳ幅テーブル３０９を参照し、ｃｏｄＩＲａｎｇｅＬＰＳを取得して、そのｃｏｄＩＲａｎｇｅＬＰＳを領域分割部３０８へ送る。領域分割部３０８は、ＬＰＳ幅テーブル３０９から取得したｃｏｄＩＲａｎｇｅＬＰＳと、領域格納部３０７より取得したｑＣｏｄＩＲａｎｇｅとより、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｑＣｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
により、ｃｏｄＩＲａｎｇｅＭＰＳを算出する。領域分割部３０８は、算出したｃｏｄＩＲａｎｇｅＭＰＳと、ｃｏｄＩＲａｎｇｅＬＰＳとを領域選択部３０４に送る（以上、ステップＳ２１）。
【００５５】
次に、領域選択部３０４は、領域分割部３０８よりのｃｏｄＩＲａｎｇｅＭＰＳと、復号ビット系列バッファ３０３よりの復号ビット系列ｃｏｄＩＯｆｆｓｅｔとを比較し、その比較結果がｃｏｄＩＲａｎｇｅＭＰＳ≧ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＭＰＳであると判断し、その比較結果がｃｏｄＩＲａｎｇｅＭＰＳ＜ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＬＰＳと判断する（ステップＳ２２）。
【００５６】
領域選択部３０４は復号ビットがＭＰＳである（ＬＰＳでない）と判断したときは、コンテキストテーブル３１０より取得したｖａｌＭＰＳを復号ビットに設定してＭＰＳ値として復号ビット出力端子３１１へ出力する（ステップＳ２４）。また、このとき領域選択部３０４は、ｃｏｄＩＲａｎｇｅ＝ｃｏｄＩＲａｎｇｅＭＰＳと設定した後、ｃｏｄＩＲａｎｇｅと所定値０ｘ１００を比較し、正規化要求信号を算出して、ｃｏｄＩＲａｎｇｅと正規化要求信号を領域幅正規化部３０６へ出力する。また、領域選択部３０４は正規化要求信号を復号ビット系列更新／正規化部３０５に供給して、ステップＳ２５へ進む。
【００５７】
一方、領域選択部３０４は復号ビットがＬＰＳであると判断したときは、コンテキストテーブル３１０より取得したｖａｌＭＰＳを反転し、その値をＬＰＳ値に設定し、復号ビット出力端子３１１へ出力する（ステップＳ２３）。また、このとき領域選択部３０４は、ｃｏｄＩＲａｎｇｅ＝ｃｏｄＩＲａｎｇｅＬＰＳと設定すると共に、ｃｏｄＩＯｆｆｓｅｔ＝ｃｏｄＩＯｆｆｓｅｔ−ｃｏｄＩＲａｎｇｅと設定する。更に、領域選択部３０４は、ｃｏｄＩＲａｎｇｅと所定値０ｘ１００を比較し、正規化要求信号を算出した後、ｃｏｄＩＲａｎｇｅと算出した正規化要求信号とを領域幅正規化部３０６へ出力すると共に、更新信号と共にｃｏｄＩＯｆｆｓｅｔと正規化要求信号とを復号ビット系列更新／正規化部３０５に出力して、ステップＳ２５へ進む。
【００５８】
ステップＳ２５では、復号ビットがＬＰＳであった場合、すなわち復号ビット系列更新／正規化部３０５に更新信号、ｃｏｄＩＯｆｆｓｅｔが送られた場合は、復号ビット系列更新／正規化部３０５のｃｏｄＩＯｆｆｓｅｔを復号ビット系列バッファ３０３へ送り、復号ビット系列の更新を行う（ステップＳ２５）。
【００５９】
続いて、正規化処理が行われる（ステップＳ２６）。このステップＳ２６では、領域幅正規化部３０６に正規化要求とｃｏｄＩＲａｎｇｅとが供給され、ｑＣｏｄＩＲａｎｇｅを正規化要求で示されたビット分だけ左シフトを行う正規化処理がなされ、得られた正規化後のｑＣｏｄＩＲａｎｇｅが領域格納部３０７へ出力されて、領域幅の更新を行う。また、復号ビット系列更新／正規化部３０５に正規化要求が送られ、復号ビット系列バッファ３０３の正規化を行う。この正規化処理は正規化要求で示されたビット分、左シフト操作を行い、シフトしたビットだけビットストリーム入力端子３０１よりビットストリームを読み出し、足し合わせる。左シフトによりレジスタから溢れたビットは捨てられる。以上が図１２の算術復号装置の動作の説明である。
【００６０】
図１２の算術復号装置に対して、処理の高速化を実現する方法が従来知られている（例えば、特許文献２参照）。図１３は、特許文献２により開示された算術復号装置の２ビット一括復号を備えた装置の一例の構成図を示す。同図中、図１２と同一構成部分には同一符号を付し、その説明を省略する。図１３に示す算術復号装置は、図１２に示した算術符号装置に、２ビット復号判定部４０１、領域分割部４０２、ＬＰＳ幅シフト部４０３、２ビット領域分割部４０４、復号ビット数出力端子４０５を追加すると共に、領域分割部３０８を削除した構成である。
【００６１】
以下図１３の構成要素について説明する。２ビット復号判定部４０１は、２ビットの一括復号が可能であるかどうかを判定する機能を有する。２ビット復号判定部４０１は領域格納部３０７、ＬＰＳ幅テーブル３０９、復号ビット系列バッファ３０３からそれぞれ、ｑＣｏｄＩＲａｎｇｅ、ｃｏｄＩＲａｎｇｅＬＰＳ、ｃｏｄＩＯｆｆｓｅｔを取得する。そして、次の不等式
qCodIRange−２・codIRangeLPS≧ｍａｘ（codIOffset，正規化所定値）
が成立した場合は２ビット復号可能、そうでない場合は２ビット復号不可能と判定する。２ビット復号可能であると判定した場合は、２ビット復号判定部４０１は、ＬＰＳ幅シフト部４０３に分割要求とＣｏｄＩＲａｎｇｅＬＰＳとを供給する。２ビット復号不可能であると判定した場合は、２ビット復号判定部４０１は、領域分割部４０２に分割要求とＣｏｄＩＲａｎｇｅＬＰＳとを供給する。そして、復号ビット数を復号ビット数出力端子４０５に出力する。
【００６２】
領域分割部４０２は、現在の領域を、領域幅ｃｏｄＩＲａｎｇｅＭＰＳを持つＭＰＳ領域と、領域幅ｃｏｄＩＲａｎｇｅＬＰＳを持つＬＰＳ領域とに分割する機能を有する。また、領域分割部４０２は、２ビット復号判定部４０１から分割要求とＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得し、また、領域格納部３０７から現在の領域幅ｃｏｄＩＲａｎｇｅを取得する。領域分割部４０２は、分割要求とともにｃｏｄＩＲａｎｇｅとｃｏｄＩＲａｎｇｅＬＰＳを取得すると、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｃｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
に基づいて、ＭＰＳ領域ｃｏｄＩＲａｎｇｅＭＰＳを算出する。そして、領域分割部４０２は、算出したｃｏｄＩＲａｎｇｅＭＰＳと取得したｃｏｄＩＲａｎｇｅＬＰＳとを領域選択部３０４へ出力する。領域分割部４０２は、１ビットの復号処理に対応するブロックである。
【００６３】
ＬＰＳ幅シフト部４０３は、２ビット分のＬＰＳ幅を算出する機能を有する。ＬＰＳ幅シフト部４０３は、２ビット復号判定部４０１より、分割要求とＣｏｄＩＲａｎｇｅＬＰＳを取得すると、ＣｏｄＩＲａｎｇｅＬＰＳに対して１ビットの左シフト処理を行い、２ビット分のＬＰＳ幅を算出する。そして算出後のｃｏｄＩＲａｎｇｅＬＰＳを２ビット領域分割部４０４に送る。
【００６４】
２ビット領域分割部４０４は、現在の領域を、領域幅ｃｏｄＩＲａｎｇｅＭＰＳを持つＭＰＳ領域と、２ビット分のＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを持つ２ビットＬＰＳ領域とに分割する機能を有する。領域分割部４０４は、ＬＰＳ幅シフト部４０３から１ビット分のＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得し、また、領域格納部３０７から現在の領域幅ｃｏｄＩＲａｎｇｅを取得する。２ビット領域分割部４０４は、分割要求と共にｃｏｄＩＲａｎｇｅとｃｏｄＩＲａｎｇｅＬＰＳを取得すると、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｃｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
に基づいて、ＭＰＳ領域ｃｏｄＩＲａｎｇｅＭＰＳを算出する。そして、算出したｃｏｄＩＲａｎｇｅＭＰＳを領域選択部３０４へ出力する。この領域分割部４０４は、２ビットの復号処理に対応するブロックである。
【００６５】
領域選択部３０４は、復号ビットがＭＰＳであるか、ＬＰＳであるかを決定し、復号ビット出力端子３１１を通し、外部へ出力する機能を有する。領域選択部３０４は、復号ビット系列バッファ３０３から、復号ビット系列ｃｏｄＩＯｆｆｓｅｔを取得し、また、領域分割部４０２、もしくは２ビット領域分割部４０４から、ＭＰＳ幅ｃｏｄＩＲａｎｇｅＭＰＳ、ｃｏｄＩＲａｎｇｅＬＰＳを取得する。また、コンテキストテーブル３１０よりｖａｌＭＰＳを受信する。
【００６６】
領域選択部３０４は、復号ビット系列バッファ３０３より取得したｃｏｄＩＯｆｆｓｅｔと、領域分割部４０２より取得したｃｏｄＩＲａｎｇｅＭＰＳのそれぞれの大きさを比較し、その比較結果が、ｃｏｄＩＲａｎｇｅＭＰＳ≧ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＭＰＳであると判断し、コンテキストテーブル３１０より取得したｖａｌＭＰＳを復号ビット出力端子３１１へ送る。そして、ｃｏｄＩＲａｎｇｅＭＰＳを領域幅正規化部３０６に供給する。
【００６７】
一方、上記の比較結果がｃｏｄＩＲａｎｇｅＭＰＳ＜ｃｏｄＩＯｆｆＳｅｔのときは、領域選択部３０４は復号ビットはＬＰＳであると判断し、コンテキストテーブル３１０より受信したｖａｌＭＰＳを反転した値を、復号ビット出力端子３１１へ出力する。そして、ｃｏｄＩＲａｎｇｅＬＰＳを領域幅正規化部３０６に供給する。そして、復号ビット系列更新／正規化部３０５に復号ビット系列更新要求とｃｏｄＩＲａｎｇｅＭＰＳを送る。
【００６８】
また、領域選択部３０４は、復号ビット系列バッファ３０３より取得した復号ビット系列ｃｏｄＩＯｆｆｓｅｔと、２ビット領域分割部４０４より取得したｃｏｄＩＲａｎｇｅＭＰＳとを用いて、２ビット分ＭＰＳを復号して、コンテキストテーブル３１０より取得したｖａｌＭＰＳを２ビット分、復号ビット出力端子３１１へ出力する。そして、ｃｏｄＩＲａｎｇｅＭＰＳを領域幅正規化部３０６に供給する。以上が図１３の算術復号装置の構成の説明である。
【００６９】
次に、図１３の算術復号装置の動作を、図１４のフローチャートを用いて説明する。コンテキストテーブル３１０は、コンテキストインデックス入力端子３０２より入力したコンテキストインデックスｃｔｘＩｄｘからコンテキストテーブルを参照してｐＳｔａｔｅＩｄｘ＝ｐＳｔａｔｅＩｄｘ［ｃｔｘＩｄｘ］と、ｖａｌＭＰＳ＝ｖａｌＭＰＳ［ｃｔｘＩｄｘ］を取得する。ｐＳｔａｔｅＩｄｘはＬＰＳ幅テーブル３０９へ供給され、ｖａｌＭＰＳは領域選択部３０４へ供給される。ＬＰＳ幅テーブル３０９では、コンテキストテーブル３１０より取得したｐＳｔａｔｅＩｄｘによりテーブルを参照してｃｏｄＩＲａｎｇｅＬＰＳを取得し、取得したｃｏｄＩＲａｎｇｅＬＰＳを２ビット復号判定部４０１へ供給する。
【００７０】
２ビット復号判定部４０１は、領域格納部３０７、ＬＰＳ幅テーブル３０９、復号ビット系列バッファ３０３からそれぞれ取得したｑＣｏｄＩＲａｎｇｅ、ｃｏｄＩＲａｎｇｅＬＰＳ、ｃｏｄＩＯｆｆｓｅｔより、次の不等式
qCodIRange−２・codIRangeLPS≧ｍａｘ（codIOffset，正規化所定値）
が成立するかどうか判定し、成立する場合は２ビット復号可能、成立しない場合は２ビット復号不可能と判定する（図１４のステップＳ３１）。
【００７１】
２ビット復号判定部４０１は、２ビット復号可能であると判定した場合は、ＬＰＳ幅シフト部４０３に分割要求とｃｏｄＩＲａｎｇｅＬＰＳを供給すると共に、復号ビット数出力端子４０５へ復号ビット数２を出力する。ＬＰＳ幅シフト部４０３は、２ビット復号判定部４０１より供給された分割要求とｃｏｄＩＲａｎｇｅＬＰＳとに基づき、ｃｏｄＩＲａｎｇｅＬＰＳに対し、１ビットの左シフト操作を行い、２ビット分のＬＰＳ幅を算出する（図１４のステップＳ３２）。算出した２ビット分のＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳは２ビット領域分割部４０４に供給される。
【００７２】
２ビット領域分割部４０４は、ＬＰＳ幅シフト部４０３から取得したｃｏｄＩＲａｎｇｅＬＰＳと、領域格納部３０７より取得したｑＣｏｄＩＲａｎｇｅとより、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｑＣｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
に基づいて、ｃｏｄＩＲａｎｇｅＭＰＳを算出し、算出したｃｏｄＩＲａｎｇｅＭＰＳを領域選択部３０４に供給する。
【００７３】
領域選択部３０４は、２ビット領域分割部４０４よりｃｏｄＩＲａｎｇｅＭＰＳを取得する。そしてコンテキストテーブル３１０より取得したｖａｌＭＰＳを復号ビットとして出力端子３１１へ出力する（図１４のステップＳ３３）。復号ビットは２ビットであり、ｖａｌＭＰＳが連続した形となる。
【００７４】
また、ステップＳ３３では以下の正規化処理も行われる。領域選択部３０４は、ｃｏｄＩＲａｎｇｅ＝ｃｏｄＩＲａｎｇｅＭＰＳと設定し、更に、ｃｏｄＩＲａｎｇｅと所定値０ｘ１００を比較し、正規化要求信号を算出する。そして、ｃｏｄＩＲａｎｇｅと正規化要求信号を領域幅正規化部３０６へ供給する。また、正規化要求信号を復号ビット系列更新／正規化部３０５に供給する。
【００７５】
領域幅正規化部３０６は正規化要求とｃｏｄＩＲａｎｇｅとを入力として受けると、ｑＣｏｄＩＲａｎｇｅを正規化要求で示されたビット分だけ左シフトを行う正規化処理を行う。正規化後のｑＣｏｄＩＲａｎｇｅを領域格納部３０７へ送り、領域幅の更新を行う。また、復号ビット系列更新／正規化部３０５に正規化要求が送られ、復号ビット系列バッファ３０３の正規化を行う。この正規化処理は、正規化要求で示されたビット分、左シフト操作を行い、シフトしたビットだけ入力ビットストリーム入力端子３０１よりビットを読み出し、足し合わせる。左シフトによりレジスタからあふれたビットは捨てられ処理を終了する。
【００７６】
一方、２ビット復号判定部４０１は、ステップＳ３１で２ビット復号可能であると判定した場合は、領域分割部４０２に分割要求とｃｏｄＩＲａｎｇｅＬＰＳとを供給し、復号ビット数１を復号ビット数出力端子４０５へ供給し、ステップＳ３４へ進む。ステップＳ３４では、領域分割部４０２は、２ビット復号判定部４０１より、分割要求とｃｏｄＩＲａｎｇｅＬＰＳを取得した後、図６のステップＳ２２以下と同様の処理を行う。以上が図１３の算術復号装置の動作の説明である。
【００７７】
【特許文献１】特開２００５−２３７００４号公報
【特許文献２】特許第３３５０４８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００７８】
特許文献２に開示されている方式は算術復号装置の一括ビット復号方式に関するものであり、同一コンテキストが連続し、途中で正規化が発生しないことを条件に、予めＭＰＳが連続するビット数を計算し、複数ビット分を一括して領域分割することにより、復号にかかる演算量を削減し、処理の高速化をする方法である。すなわち、一括復号開始時の領域幅がＲａｎｇｅ、ＬＰＳ幅がＲａｎｇｅＬＰＳであった場合、
Ｒａｎｇｅ−ｎ・ＲａｎｇｅＬＰＳ≧所定値
という条件より、一括復号ビット数を算出するというものである。
【００７９】
しかしながら、特許文献２に開示されている方式はＱＭ−Ｃｏｄｅｒにおいては良好な性能を示すが、ＬＰＳ幅の算出には、直前の領域幅Ｒａｎｇｅを使用するという点と、復号処理により状態が変化するという点より、上記の従来の方式をＣＡＢＡＣ復号装置に適用することは不可能である。
【００８０】
本発明は上記の点に鑑みなされたもので、復号途中で、現在の領域幅に応じてＬＰＳ幅が随時切り替わるＣＡＢＡＣにおいて、複数ビット一括復号を可能にし、高速な復号処理を行い得る算術復号方法、算術復号装置及び算術復号プログラムを提供することを目的とする。
【課題を解決するための手段】
【００８１】
上記の目的を達成するため、本発明の算術復号方法は、入力される復号すべきビット系列の文脈に応じ、符号化された二値のシンボルの発生確率の高い方の優勢シンボルと発生確率の低い方の劣勢シンボルとのうち、劣勢シンボルの領域幅を随時変動させて復号を行うマルチコンテキスト型の算術復号方法において、復号すべきビット系列のある時点の復号に使用する文脈から、複数ビット先の文脈を算出する第１のステップと、第１のステップにより算出した複数ビット先の文脈により、復号すべきビット系列の複数ビットの一括復号と、復号すべきビット系列の１ビット毎の逐次復号とのうち一方の復号を選択する第２のステップと、第２のステップにより選択された一括復号又は逐次復号で復号したビット数を外部に伝送する第３のステップとを含むことを特徴とする。
【００８２】
また、上記の目的を達成するため、本発明の算術復号装置は、入力される復号すべきビット系列の文脈に応じ、符号化された二値のシンボルの発生確率の高い方の優勢シンボルと発生確率の低い方の劣勢シンボルとのうち、劣勢シンボルの領域幅を随時変動させて復号を行うマルチコンテキスト型の算術復号装置において、復号すべきビット系列の複数ビットの一括復号を行う第１の復号手段と、復号すべきビット系列の１ビット毎の逐次復号を行う第２の復号手段と、復号すべきビット系列のある時点の復号に使用する文脈から、複数ビット先の文脈を算出する文脈計算手段と、文脈計算手段により算出した複数ビット先の文脈により、第１の復号手段と第２の復号手段の一方の出力信号を選択するように切り替える復号手段切替手段と、復号手段切替手段により選択された第１又は第２の復号手段が復号したビット数を外部に伝送するための復号ビット数伝送手段とを有することを特徴とする。
【００８３】
更に、上記の目的を達成するため、本発明の算術復号プログラムは、入力される復号すべきビット系列の文脈に応じ、符号化された二値のシンボルの発生確率の高い方の優勢シンボルと発生確率の低い方の劣勢シンボルとのうち、劣勢シンボルの領域幅を随時変動させてマルチコンテキスト型の算術復号をコンピュータに行わせる算術復号プログラムであって、上記コンピュータを、
復号すべきビット系列の複数ビットの一括復号を行う第１の復号手段と、復号すべきビット系列の１ビット毎の逐次復号を行う第２の復号手段と、復号すべきビット系列のある時点の復号に使用する文脈から、複数ビット先の文脈を算出する文脈計算手段と、文脈計算手段により算出した複数ビット先の文脈により、第１の復号手段と第２の復号手段の一方の出力信号を選択するように切り替える復号手段切替手段と、復号手段切替手段により選択された第１又は第２の復号手段が復号したビット数を外部に伝送するための復号ビット数伝送手段として機能させることを特徴とする。
【００８４】
また、本発明は、復号すべきビット系列のある時点の復号に使用する文脈から算出したシンボルの発生確率を示す状態変数と、復号装置の内部状態を示す領域幅から算出した領域幅インデックスとをインデックスとして参照されることにより、複数ビット先の劣勢シンボルの領域幅のすべての可能性を算出するための、予め作成された複数ビットＬＰＳ幅テーブルと、
状態変数と領域幅インデックスとをインデックスとして参照されることにより、複数ビットＬＰＳ幅テーブルが示す複数ビット先の劣勢シンボルの領域幅のうち正しい領域幅を算出するために、劣勢シンボルの領域幅と優勢シンボルの領域幅との境界値を算出するための境界テーブルとを参照して複数ビット先の文脈を算出することを特徴とする。
【発明の効果】
【００８５】
本発明によれば、復号途中で、現在の領域幅に応じてＬＰＳ幅が随時切り替わる（復号時の文脈に応じて随時シンボルの発生確率が変動する）マルチコンテキスト型の算術復号（ＣＡＢＡＣ）において、復号ビット系列の複数ビット一括復号を可能にし、復号処理の演算量削減と高速な復号処理とを実現できる。
【発明を実施するための最良の形態】
【００８６】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。図１は本発明になる算術復号装置の一実施例のブロック図を示す。同図に示すように、この算術復号装置は、ビットストリーム入力端子１０１、コンテキストインデックス入力端子１０２、復号ビット系列バッファ１０３、領域選択部１０４、復号ビット系列更新／正規化部１０５、コンテキストテーブル１０６、ＬＰＳ幅テーブル１０７、２ビットＬＰＳ幅テーブル１０８、境界テーブル１０９、２ビット復号判定部１１０、領域分割部１１１、２ビット領域分割部１１２、領域格納部１１３、領域幅正規化部１１４、状態更新テーブル１１５、復号ビット出力端子１１６及び復号ビット数出力端子１１７より構成される。
【００８７】
以下、図１の構成要素について説明する。復号ビット系列バッファ１０３は、ビットストリーム入力端子１０１から入力された復号すべきビット系列（以下、復号ビット系列ともいう）ｃｏｄＩＯｆｆｓｅｔを格納する機能と、格納した復号ビット系列ｃｏｄＩＯｆｆｓｅｔを読み出して領域選択部１０４へ出力する機能とを有する。また、復号ビット系列バッファ１０３は、復号ビット系列更新／正規化部１０５と接続している。
【００８８】
領域選択部１０４は、復号ビットがＭＰＳであるか、ＬＰＳであるかを決定し、復号ビット出力端子１１６を通し、外部へ復号ビットを出力する機能を有する。また、領域選択部１０４は、復号ビット系列バッファ１０３から、復号ビット系列ｃｏｄＩＯｆｆｓｅｔを取得し、領域分割部１１１、もしくは２ビット領域分割部１１２から、ＭＰＳ領域の領域幅（以下、ＭＰＳ幅ともいう）ｃｏｄＩＲａｎｇｅＭＰＳと、ＬＰＳ領域の領域幅（以下、ＬＰＳ幅ともいう）ｃｏｄＩＲａｎｇｅＬＰＳとを取得し、また、コンテキストテーブル１０６より変数ｖａｌＭＰＳを取得する。
【００８９】
そして、領域選択部１０４は、復号ビット系列バッファ１０３より取得した復号ビット系列ｃｏｄＩＯｆｆｓｅｔと、領域分割部１１１より取得したｃｏｄＩＲａｎｇｅＭＰＳのそれぞれの大きさを比較し、その比較結果がｃｏｄＩＲａｎｇｅＭＰＳ≧ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＭＰＳであると判断してコンテキストテーブル１０６より取得した変数ｖａｌＭＰＳを復号ビット出力端子１１６へ出力し、また、ＭＰＳ復号信号を状態更新テーブル１１５に出力し、更にｃｏｄＩＲａｎｇｅＭＰＳを領域幅正規化部１１４に出力する。
【００９０】
また、領域選択部１０４は、上記の比較結果がｃｏｄＩＲａｎｇｅＭＰＳ＜ｃｏｄＩＯｆｆｓｅｔのときは、復号ビットはＬＰＳであると判断してコンテキストテーブル１０６より取得した変数ｖａｌＭＰＳを反転して、その反転した値を復号ビット出力端子１１６へ出力し、また、ｃｏｄＩＲａｎｇｅＬＰＳを領域幅正規化部１１４に供給すると共に、ＬＰＳ復号信号を状態更新テーブル１１５に出力する。更に、領域選択部１０４は、復号ビット系列更新／正規化部１０５に復号ビット系列更新要求とｃｏｄＩＲａｎｇｅＭＰＳを供給する。
【００９１】
また、領域選択部１０４は、復号ビット系列バッファ１０３より復号ビット系列ｃｏｄＩＯｆｆｓｅｔを取得し、２ビット領域分割部１１２よりｃｏｄＩＲａｎｇｅＭＰＳを取得して２ビット分ＭＰＳを復号し、その２ビットＭＰＳ復号信号を状態更新テーブル１１５へ出力すると共に、コンテキストテーブル１０６より取得した変数ｖａｌＭＰＳを２ビット分、復号ビット出力端子１１６へ出力する。また、領域選択部１０４は、２ビット領域分割部１１２より取得したｃｏｄＩＲａｎｇｅＭＰＳを領域幅正規化部１１４に供給する。
【００９２】
更に、領域選択部１０４は、復号ビット系列更新／正規化部１０５に対し、更新要求と正規化要求を供給し、領域幅正規化部１１４に対し、正規化要求を供給する。上記の正規化要求は、領域選択部１０４で選択された領域幅（ｃｏｄＩＲａｎｇｅＭＰＳもしくはｃｏｄＩＲａｎｇｅＬＰＳ）が、所定値を下回った場合に発生する。正規化は領域幅ｑＣｏｄｌＲａｎｇｅが所定値以上を常に確保することを保証する処理であり、ｑＣｏｄＩＲａｎｇｅが所定値以上になるまで左シフトを繰り返すという操作である。ｑＣｏｄＩＲａｎｇｅと所定値とを比較し、左シフトするビット数を算出し、これを正規化要求とする。ｑＣｏｄＩＲａｎｇｅが所定値以上である場合は、正規化要求は０となる。
【００９３】
復号ビット系列更新／正規化部１０５は、復号ビット系列バッファ１０３の更新および正規化を行う機能を有する。復号ビット系列更新／正規化部１０５は、領域選択部１０４より更新要求を取得したときに更新処理を行う。更新要求を取得すると、復号ビット系列更新／正規化部１０５は、復号ビット系列ｃｏｄＩＯｆｆｓｅｔから、更新要求と共に取得したｑｃｏｄＩＲａｎｇｅＭＰＳを減算し、新たなｃｏｄＩＯｆｆｓｅｔとする。また、領域選択部１０４から正規化要求を取得したときに復号ビット系列ｃｏｄＩＯｆｆｓｅｔの正規化を行う。
【００９４】
上記の正規化処理は、正規化要求で示されたビット分、復号ビット系列更新／正規化部１０５を構成する所定ビット数のシフトレジスタにより復号ビット系列ｃｏｄＩＯｆｆｓｅｔの左シフト操作を行った後、その左シフトしたビットだけ入力ビットストリーム入力端子１０１よりビットを読み出した後、そのビットを左シフトによって０となっているｃｏｄＩＯｆｆｓｅｔのＬＳＢを含むシフト後のビット位置に足し合わせるという操作で実現する。なお、左シフトにより上記のシフトレジスタから溢れた復号ビット系列ｃｏｄＩＯｆｆｓｅｔのＭＳＢ側のビットは捨てられる。
【００９５】
コンテキストテーブル１０６は、復号に使用するコンテキストを取得するための図９のようなテーブルである。コンテキストテーブル１０６は、コンテキストインデックス入力端子１０２より、コンテキストインデックスｃｔｘＩｄｘが入力されると、対応する状態変数ｐＳｔａｔｅＩｄｘと変数ｖａｌＭＰＳとを参照し、状態変数ｐＳｔａｔｅＩｄｘをＬＰＳ幅テーブル１０７と、２ビットＬＰＳ幅テーブル１０８と、境界テーブル１０９へ出力し、変数ｖａｌＭＰＳを領域選択部１０４へ出力する。
【００９６】
上記の状態変数ｐＳｔａｔｅＩｄｘは、ＬＰＳ幅テーブル１０７からＬＰＳ幅ｃｏｄＩＲａｎｇｅを取得するためのインデックスである。また、上記の変数ｖａｌＭＰＳは、ＭＰＳの値を記憶する変数であり、”０”もしくは”１”のどちらかの値をとる。この変数ｖａｌＭＰＳは、領域選択部１０４において復号ビットの決定に使用される。領域選択部１０４では、復号ビットがＭＰＳであるか、ＬＰＳであるかの判定を行い、ＭＰＳであればｖａｌＭＰＳを、ＬＰＳであればｖａｌＭＰＳの反転値をそれぞれ復号ビットとする。
【００９７】
コンテキストテーブル１０６の内容は、復号結果により更新される。領域選択部１０４において、復号ビットが１ビットのＭＰＳであった場合はＭＰＳ復号信号が、復号ビットが１ビットＬＰＳであった場合はＬＰＳ復号信号が、状態更新テーブル１１５に供給される。また、復号ビットが２ビットのＭＰＳであった場合は、２ビットＭＰＳ復号信号が状態更新テーブル１１５に供給される。
【００９８】
状態更新テーブル１１５は、受信した信号に応じ、状態変数ｐＳｔａｔｅＩｄｘの更新値を参照し、コンテキストテーブル１０６のコンテキストインデックスｃｔｘＩｄｘで示された内容を更新する。コンテキストテーブル１０６は状態更新テーブル１１５で決定した更新値ｎｅｘｔＳｔａｔｅＩｄｘを取得し、ｐＳｔａｔｅＩｄｘ［ｃｔｘＩｄｘ］＝ｎｅｘｔＳｔａｔｅＩｄｘとして更新する。
【００９９】
ＬＰＳ幅テーブル１０７は、ＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを求めるためのテーブルである。ＬＰＳ幅テーブル１０７は、領域格納部１１３から領域幅ｑＣｏｄＩＲａｎｇｅを取得し、また、コンテキストテーブル１０６から、状態変数ｐＳｔａｔｅＩｄｘを取得し、これらからｃｏｄＩＲａｎｇｅＬＰＳを決定する。すなわち、ＬＰＳ幅テーブル１０７は、図８で示したテーブルにおいて、９ビットのｑＣｏｄＩＲａｎｇｅの上位２ビット目と上位３ビット目の計２ビットで算出される領域幅インデックス（ｑＣｏｄＩＲａｎｇｅＩｄｘ）と、取得した状態変数ｐＳｔａｔｅＩｄｘとにより、ｃｏｄＩＲａｎｇｅＬＰＳを得る。そして、生成したｃｏｄＩＲａｎｇｅＬＰＳを領域分割部１１１に出力する。
【０１００】
２ビットＬＰＳ幅テーブル１０８は、２ビット分のＬＰＳ幅を算出するためのテーブルであり、ある時点の復号に使用する文脈から算出したシンボルの発生確率を示す状態変数（ｐＳｔａｔｅＩｄｘ）と、復号装置の内部状態である領域幅から算出した領域幅インデックス（ｑＣｏｄＩＲａｎｇｅＩｄｘ）とをインデックスとして２ビット先の劣勢シンボルの領域幅（ＬＰＳ幅）のすべての可能性を算出するための、図２に示すテーブルである。
【０１０１】
次に、この２ビットＬＰＳ幅テーブル１０８の内容及び構成法について図２と共に説明する。今、ある状態変数ｐＳｔａｔｅＩｄｘと、領域幅ｑＣｏｄＩＲａｎｇｅとが与えられたとする。これらより、規格上で定められている図８のＬＰＳ幅テーブルを前述した方法により参照してＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳが算出される。そして、算出したｃｏｄＩＲａｎｇｅＬＰＳと上記の領域幅ｑＣｏｄＩＲａｎｇｅとから次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｑＣｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
により、ＭＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＭＰＳが算出される。ここで、復号ビット系列がＭＰＳである場合、次のビットを復号するための領域幅ｑＣｏｄＩｒａｎｇｅは
ｑＣｏｄＩＲａｎｇｅ＝ｃｏｄＩＲａｎｇｅＭＰＳ
となる。また、次のビットを復号するための状態変数ｐＳｔａｔｅＩｄｘは、状態更新テーブル１１５で一回だけｔｒａｎｓＩｄｘＭＰＳで更新された値である。これらが次のビットを復号するために必要なものである。
【０１０２】
さて、状態変数ｐＳｔａｔｅＩｄｘに関しては、ＭＰＳが発生した結果は常にｔｒａｎｓＩｄｘＭＰＳを１回行ったもので、次の状態が確定する。それに対し、領域幅ｑＣｏｄＩＲａｎｇｅの値により、次の領域幅インデックスｑＣｏｄＩＲａｎｇｅＩｄｘの値が変わり、次のＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳはｑＣｏｄＩＲａｎｇｅとｐＳｔａｔｅＩｄｘとからは一意には定まらない。
【０１０３】
そこで、本実施例では、現在の状態変数ｐＳｔａｔｅＩｄｘと領域幅インデックスｑＣｏｄＩＲａｎｇｅＩｄｘとから２ビット分のＬＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＬＰＳを全て列挙した図２の２ビットＬＰＳ幅テーブル１０８を予め用意する。この図２に示す２ビットＬＰＳ幅テーブル１０８は、テーブル中の同じ値のｑＣｏｄＩＲａｎｇｅＩｄｘに２つの値が記述されているが、そのうち左側の値をｃｏｄＩＲａｎｇｅＬＰＳ１として、右側の値をｃｏｄＩＲａｎｇｅＬＰＳ２として、２ビット復号判定部１１０へ出力する。例えば、ｐＳｔａｔｅＩｄｘ＝４０、ｑＣｏｄＩＲａｎｇｅＩｄｘ＝３のときは、２ビット分のＬＰＳ幅は、”５５”もしくは”５８”のどちらかの値をとり、”５５” をｃｏｄＩＲａｎｇｅＬＰＳ１として、”５８”をｃｏｄＩＲａｎｇｅＬＰＳ２として、２ビット復号判定部１１０へそれぞれ出力する。なお、図２の２ビットＬＰＳ幅テーブル中、”０”が入っているところは１ビット復号後に正規化処理が入るため、２ビットのＭＰＳ復号ができない場合である。
【０１０４】
境界テーブル１０９は、２ビット分のＬＰＳ幅を確定するためのＬＰＳ幅とＭＰＳ幅との境界値を取得するためのテーブルで、２ビットＬＰＳ幅テーブル１０８から正しいＬＰＳ幅を算出するためのテーブルである。境界テーブル１０９で取得した境界値は、２ビット復号判定部１１０へ送られる。図３は境界テーブル１０９の内容を示す。図３に示すように境界テーブル１０９は、状態変数ｐＳｔａｔｅＩｄｘと領域幅インデックスｑＣｏｄＩＲａｎｇｅＩｄｘとに対応付けられて境界値が格納されたテーブルである。なお、この境界テーブル１０９において、”０”が入っているところは、１ビット復号後に正規化処理が入るため、２ビットのＭＰＳ復号ができない場合である。
【０１０５】
２ビット復号判定部１１０は、２ビットの一括復号が可能であるかどうかを判定する機能を有する。２ビット復号判定部１１０は、復号ビット系列バッファ１０３から復号ビット系列ｃｏｄＩＯｆｆｓｅｔを、コンテキストテーブル１０６から状態変数ｐＳｔａｔｅＩｄｘを、２ビットＬＰＳ幅テーブル１０８からｃｏｄＩＲａｎｇｅＬＰＳ１とｃｏｄＩＲａｎｇｅＬＰＳ２を、境界テーブル１０９から境界値を、領域格納部１１３から領域幅ｑＣｏｄＩＲａｎｇｅをそれぞれ取得する。
【０１０６】
そして、２ビット復号判定部１１０は、ｑＣｏｄＩＲａｎｇｅ＜境界値の場合、ｃｏｄＩＲａｎｇｅＬＰＳ＝ｃｏｄＩＲａｎｇｅＬＰＳ１とする。そうでない場合、ｃｏｄＩＲａｎｇｅＬＰＳ＝ｃｏｄＩＲａｎｇｅＬＰＳ２とする。また、境界値＞０、かつ、ｃｏｄＩＲａｎｇｅＬＰＳ＞０のときは、２ビット復号可能と判定し、２ビット領域分割部１１２に分割要求とｃｏｄＩＲａｎｇｅＬＰＳを送る一方、復号ビット数出力端子１１７へ復号ビット数２を出力する。また、２ビット復号判定部１１０は、境界値＞０、かつ、ｃｏｄＩＲａｎｇｅＬＰＳ＞０でないときは、２ビット復号不可能と判定して、領域分割部１１１に分割要求を送る一方、復号ビット数出力端子１１７へ復号ビット数１を出力する。
【０１０７】
領域分割部１１１は、現在の領域を、領域幅ｃｏｄＩＲａｎｇｅＭＰＳを持つＭＰＳ領域と、領域幅ｃｏｄＩＲａｎｇｅＬＰＳを持つＬＰＳ領域に分割する機能を有する。領域分割部１１１は、２ビット復号判定部１１０から分割要求を取得し、領域格納部１１３から現在の領域幅ｃｏｄＩＲａｎｇｅを取得し、ＬＰＳ幅テーブル１０７から１ビットのＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得する。
【０１０８】
領域分割部１１１は、上記の分割要求とｃｏｄＩＲａｎｇｅとｃｏｄＩＲａｎｇｅＬＰＳとを取得すると、次式
ｃｏｄＩＲａｄｇｅＭＰＳ＝ｃｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
に基づいて、ＭＰＳ領域の領域幅ｃｏｄＩＲａｎｇｅＭＰＳを算出する。そして、領域分割部１１１は、上式により算出したｃｏｄＩＲａｎｇｅＭＰＳと、取得したｃｏｄＩＲａｎｇｅＬＰＳとを領域選択部１０４へ出力する。この領域分割部１１１は、１ビットの復号処理に対応するブロックである。
【０１０９】
２ビット領域分割部１１２は、現在の領域を、領域幅ｃｏｄＩＲａｎｇｅＭＰＳを持つＭＰＳ領域と、２ビット分のＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを持つ２ビットＬＰＳ領域とに分割する機能を有する。２ビット領域分割部１１２は、２ビット復号判定部１１０から分割要求と２ビット分のＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳとを取得し、また、領域格納部１１３から現在の領域ｃｏｄＩＲａｎｇｅを取得する。
【０１１０】
そして、２ビット領域分割部１１２は、分割要求と共に上記のｃｏｄＩＲａｎｇｅと２ビット分のＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得すると、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｃｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
に基づいて、ＭＰＳ領域ｃｏｄＩＲａｎｇｅＭＰＳを算出する。そして、２ビット領域分割部１１２は、上式により算出したｃｏｄＩＲａｎｇｅＭＰＳを領域選択部１０４へ供給する。この２ビット領域分割部１１２は、２ビットの復号処理に対応するブロックである。
【０１１１】
領域格納部１１３は、ＣＡＢＡＣ復号装置の内部状態である領域幅ｑＣｏｄＩＲａｎｇｅを格納する機能を有する。また、領域格納部１１３は、領域分割部１１１、２ビット領域分割部１１２と接続し、領域幅ｑＣｏｄＩＲａｎｇｅの送受信を行う機能を有する。
【０１１２】
領域幅正規化部１１４は、領域選択部１０４より、正規化要求を受信したときに正規化処理を行う。この正規化処理は、領域選択部１０４より取得した、復号後の領域幅ｑＣｏｄＩＲａｎｇｅを、正規化要求で示されたビット数分の左シフト操作する処理である。領域幅正規化部１１４は、正規化後の領域幅ｑＣｏｄＩＲａｎｇｅを領域格納部１１３へ出力する。
【０１１３】
状態更新テーブル１１５は、領域選択部１０４よりＭＰＳ復号信号、もしくはＬＰＳ復号信号、もしくは２ビットＭＰＳ復号信号のどれかを取得し、更にコンテキストテーブル１０６より状態変数ｐＳｔａｔｅＩｄｘを取得する。そして、状態更新テーブル１１５は、取得したＭＰＳ／ＬＰＳ復号信号または２ビットＭＰＳ復号信号、状態変数ｐＳｔａｔｅＩｄｘより、次の状態変数ｎｅｘｔＳｔａｔｅＩｄｘを決定する。
【０１１４】
ＭＰＳ復号信号を取得した場合の次の状態変数ｎｅｘｔＳｔａｔｅＩｄｘは、図１０において、ｔｒａｎｓＩｄｘＭＰＳで与えられるものである。ＬＰＳ復号信号を取得した場合の次の状態変数ｎｅｘｔＳｔａｔｅＩｄｘは、図１０において、ｔｒａｎｓＩｄｘＬＰＳで与えられるものである。２ビットＭＰＳ復号信号を取得した場合の次の状態変数ｎｅｘｔＳｔａｔｅＩｄｘは、ｎｅｘｔＳｔａｔｅＩｄｘ＝ｍｉｎ（ｐＳｔａｔｅＩｄｘ，６２）で与えられる。状態更新テーブル１１５は、次の状態変数ｎｅｘｔＳｔａｔｅＩｄｘを決定すると、そのｎｅｘｔＳｔａｔｅＩｄｘをコンテキストテーブル１０６に供給する。
【０１１５】
このようにして復号したビットは領域選択部１０４から復号ビット出力端子１１６を介して外部へ出力される。また、その際の復号ビット数は、２ビット復号判定部１１０から復号ビット数出力端子１１７を介して外部へ出力される。以上が図１の算術復号装置の構成の説明である。
【０１１６】
次に、図１の算術復号装置の動作を、図４のフローチャートを用いて説明する。まず、コンテキストテーブル１０６は、コンテキストインデックス入力端子１０２より入力したコンテキストインデックスｃｔｘＩｄｘから図９のコンテキストテーブルを参照してｐＳｔａｔｅＩｄｘ＝ｐＳｔａｔｅＩｄｘ［ｃｔｘＩｄｘ］と、ｖａｌＭＰＳ＝ｖａｌＭＰＳ［ｃｔｘＩｄｘ］を取得する。取得された状態変数ｐＳｔａｔｅＩｄｘはＬＰＳ幅テーブル１０７と２ビットＬＰＳ幅テーブル１０８と境界テーブル１０９とにそれぞれ供給され、取得された変数ＶａｌＭＰＳは領域選択部１０４に供給される。
【０１１７】
ＬＰＳ幅テーブル１０７では、コンテキストテーブル１０６より取得した状態変数ｐＳｔａｔｅＩｄｘにより、ＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得する。取得したｃｏｄＩＲａｎｇｅＬＰＳは領域分割部１１１へ供給される。図３の構成の境界テーブル１０９は、領域格納部１１３より取得した領域幅ｑＣｏｄＩＲａｎｇｅと、コンテキストテーブル１０６より取得した状態変数ｐＳｔａｔｅＩｄｘとより境界値を取得し、２ビット復号判定部１１０へ供給する。
【０１１８】
図２の構成の２ビットＬＰＳ幅テーブル１０８は、領域格納部１１３より取得した領域幅ｑＣｏｄＩＲａｎｇｅと、コンテキストテーブル１０６より取得した状態変数ｐＳｔａｔｅＩｄｘとよりＬＰＳ幅ＣｏｄＩＲａｎｇｅＬＰＳ１とｃｏｄＩＲａｎｇｅＬＰＳ２とを取得し、２ビット復号判定部１１０へ供給する。
【０１１９】
２ビット復号判定部１１０は、復号ビット系列バッファ１０３から復号ビット系列ｃｏｄＩＯｆｆｓｅｔを、コンテキストテーブル１０６から状態変数ｐＳｔａｔｅＩｄｘを、２ビットＬＰＳ幅テーブル１０８からｃｏｄＩＲａｎｇｅＬＰＳ１とｃｏｄＩＲａｎｇｅＬＰＳ２を、境界テーブル１０９から境界値を、領域格納部１１３から領域幅ｑＣｏｄＩＲａｎｇｅをそれぞれ取得して、これらに基づいて２ビット復号可能かどうか判定する（図４のステップＳ１１）。
【０１２０】
すなわち、ステップＳ１１では、２ビット復号判定部１１０は、ｑＣｏｄＩＲａｎｇｅ＜境界値の場合、ｃｏｄＩＲａｎｇｅＬＰＳ＝ｃｏｄＩＲａｎｇｅＬＰＳ１とする。そうでない場合、ｃｏｄＩＲａｎｇｅＬＰＳ＝ｃｏｄＩＲａｎｇｅＬＰＳ２とする。また、境界値＞０、かつ、ｃｏｄＩＲａｎｇｅＬＰＳ＞０のときは、２ビット復号可能と判定し、２ビット領域分割部１１２に分割要求とｃｏｄＩＲａｎｇｅＬＰＳを送る一方、復号ビット数出力端子１１７へ復号ビット数２を出力する。
【０１２１】
２ビット復号判定部１１０が、２ビット復号可能と判定した場合（ステップＳ１１のＹｅｓ）は、２ビット領域分割部１１２が、現在の領域を、領域幅ｃｏｄＩＲａｎｇｅＭＰＳを持つＭＰＳ領域と２ビット分のＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを持つ２ビットＬＰＳ領域とに分割するため、領域格納部１１３より取得した領域ｑＣｏｄＩＲａｎｇｅを用いて、次式
ｃｏｄＩＲａｎｇｅＭＰＳ＝ｑＣｏｄＩＲａｎｇｅ−ｃｏｄＩＲａｎｇｅＬＰＳ
に基づいて、ＭＰＳ幅ｃｏｄＩＲａｎｇｅＭＰＳを算出し、そのｃｏｄＩＲａｎｇｅＭＰＳを領域選択部１０４へ供給する。
【０１２２】
領域選択部１０４は、２ビット領域分割部１１２よりｃｏｄＩＲａｎｇｅＭＰＳを取得すると、コンテキストテーブル１０６より取得した変数ｖａｌＭＰＳを復号ビットとして出力端子１１６へ出力する（ステップＳ１２）。復号ビットは２ビットであり、変数ｖａｌＭＰＳが連続した形となる。
【０１２３】
また、ステップＳ１２では以下の正規化処理も行われる。領域選択部１０４は、２ビット領域分割部１１２より取得したｃｏｄＩＲａｎｇｅＭＰＳを領域幅ｃｏｄＩＲａｎｇｅとして設定した後、この設定したｃｏｄＩＲａｎｇｅと所定値０ｘ１００とを比較し、正規化要求信号を算出する。そして、領域選択部１０４は、上記の設定したｃｏｄＩＲａｎｇｅと算出した正規化要求信号とを領域幅正規化部１１４へ供給する一方、算出した正規化要求信号を復号ビット系列更新／正規化部１０５にも供給する。
【０１２４】
領域幅正規化部１１４は正規化要求信号と領域幅ｃｏｄＩＲａｎｇｅとが入力されると、入力されたｑＣｏｄＩＲａｎｇｅを正規化要求信号で示されたビット分だけ左シフトする正規化処理を行う。そして、正規化処理された後の領域幅ｑＣｏｄＩＲａｎｇｅは領域格納部１１３へ供給されて、領域幅の更新を行う。
【０１２５】
また、復号ビット系列更新／正規化部１０５は正規化要求信号が入力されると、復号ビット系列バッファ１０３の正規化を行う。この正規化処理は、正規化要求信号で示されたビット分、復号ビット系列ｃｏｄＩＯｆｆｓｅｔの左シフト操作を行うと共に、その左シフトしたビット分だけビットストリーム入力端子１０１より入力ビットストリームのビットを読み出して左シフトした後の復号ビット系列ｃｏｄＩＯｆｆｓｅｔに足し合わせることで行われる。この左シフトにより所定のビット数のレジスタから溢れた復号ビット系列ｃｏｄＩＯｆｆｓｅｔのビットは捨てられ処理を終了する。
【０１２６】
他方、図４のステップＳ１１において、２ビット復号判定部１１０は、境界値＞０、かつ、ｃｏｄＩＲａｎｇｅＬＰＳ＞０でないときは、２ビット復号不可能と判定して（ステップＳ１１のＮｏ）、領域分割部１１１に分割要求を出力する一方、復号ビット数出力端子１１７へ復号ビット数１を出力する。また、ＬＰＳ幅テーブル１０７より領域分割部１１１へＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳが供給される。
【０１２７】
上記の２ビット復号不可能判定により領域分割部１１１は、２ビット復号判定部１１０から分割要求を取得し、ＬＰＳ幅テーブル１０７よりＬＰＳ幅ｃｏｄＩＲａｎｇｅＬＰＳを取得すると、前記図６のステップＳ２２以下と同様の処理を行う。図６のステップＳ２２以下の処理は既に説明したため、説明は省略する。以上が図１の算術復号装置の動作の説明である。
【０１２８】
このように、本実施例では、２ビット領域分割部１１２と領域分割部１１３とからなる第１の復号手段で２ビットの一括復号を行い、領域分割部１１１と領域分割部１１３とからなる第２の復号手段で１ビット毎の逐次復号を行い、領域選択部１０４、コンテキストテーブル１０６、２ビットＬＰＳ幅テーブル１０８、境界テーブル１０９及び状態更新テーブル１１５からなる文脈計算手段により、ある時点の復号に使用する文脈から、２ビット先の文脈を算出し、この算出した文脈により第１及び第２の復号手段を２ビット復号判定部１１０による切替手段により切り替え、復号したビット数を出力端子１１７から外部へ出力する構成としたため、復号途中で、現在の領域幅に応じてＬＰＳ幅が随時切り替わる（復号時の文脈に応じて随時シンボルの発生確率が変動する）ＣＡＢＡＣにおいて、復号ビット系列の２ビット一括復号を可能にし、復号処理の演算量削減と高速な復号処理とを実現できる。
【０１２９】
また、本実施例によれば、ＣＡＢＡＣに対しても２ビットの一括復号が可能となるため、ＭＰＥＧ−４ ＡＶＣ／Ｈ.２６４において、特に復号処理の演算量が大きい量子化係数レベルや、ＭＶＤ（動きベクトルの差分値）の復号に適応でき、解像度が大きく、高画質なビットストリームのリアルタイム復号に大きな威力を発揮する。
【０１３０】
なお、本発明は上記の実施例に限定されるものではなく、例えば上記と同様の構成により、３ビット以上の一括復号装置を構成することも可能である。また、上記の実施例は、１ビット復号後に正規化処理が入らないという条件の下で、２ビットの一括復号を行うものであるが、１ビット復号後に正規化処理が入っても一括復号を行う構成をとることも可能である。この場合は、
（１）２ビットＬＰＳ幅テーブル１０８の”０”が入っている部分に、１ビット正規化を考慮した２ビットＬＰＳ幅を入れること
（２）２ビットＬＰＳ幅テーブル１０８で２通りある２ビットＬＰＳ幅の候補を３通りに増やすこと、
（３）境界テーブルの更新＋サイズ拡張
（４）１ビット後正規化発生有無を算出するための手段を追加すること
が必要となる。
【０１３１】
更に、本発明は図１の構成をコンピュータのソフトウェアにより実現する算術復号プログラムも包含するものである。この算術復号プログラムは、記録媒体に記録されてコンピュータに取り込まれてもよいし、ネットワークを介してコンピュータに取り込まれてもよく、更にはファームウェアとしてコンピュータに組み込まれていてもよい。
【図面の簡単な説明】
【０１３２】
【図１】本発明の算術復号装置の一実施例の構成を示すブロック図である。
【図２】図１の算術復号装置で使用する２ビットＬＰＳ幅テーブルの一例の内容を示す図である。
【図３】図１の算術復号装置で使用する境界テーブルの一例の内容を示す図である。
【図４】本発明の算術復号方法の一実施例のフローチャートである。
【図５】一般的なＣＡＢＡＣ算術復号装置の一例の構成図である。
【図６】図５の算術復号装置の動作を説明するためのフローチャートである。
【図７】図５の算術復号処理の動作の処理過程を説明するためのフローチャートである。
【図８】ＣＡＢＡＣのＬＰＳ幅を決定するためのＬＰＳ幅参照テーブルの一例の内容を示す図である。
【図９】ＣＡＢＡＣのコンテキストテーブルの一例の内容を示す図である。
【図１０】ＣＡＢＡＣの状態更新テーブルの一例の内容を示す図である。
【図１１】ＣＡＢＡＣの量子化係数の二値化テーブルの一例を示す図である。
【図１２】従来の算術復号装置一例の構成を示すブロック図である。
【図１３】従来の算術復号装置の他の例の構成を示すブロック図である。
【図１４】図１３の算術復号装置の動作を説明するためのフローチャートである。
【符号の説明】
【０１３３】
１０１  ビットストリーム入力端子
１０２  コンテキストインデックス入力端子
１０３  復号ビット系列バッファ
１０４  領域選択部
１０５  復号ビット系列更新／正規化部
１０６  コンテキストテーブル
１０７  ＬＰＳ幅テーブル
１０８  ２ビットＬＰＳ幅テーブル
１０９  境界テーブル
１１０  ２ビット復号判定部
１１１  領域分割部
１１２  ２ビット領域分割部
１１３  領域格納部
１１４  領域幅正規化部
１１５  状態更新テーブル
１１６  復号ビット出力端子
１１７  復号ビット数出力端子
１００１  正規化閾値
１００２  領域
１００３  復号ビット系列
１００４  ＬＰＳ領域
１００５  ＭＰＳ領域
１００６  復号ビット系列
１００７  新領域
１００８  復号ビット系列
１００９  正規化後領域
１０１０  正規化後復号系列
【図１】
2008311803.tif 000003
【図２】
2008311803.tif 000004
【図３】
2008311803.tif 000005
【図４】
2008311803.tif 000006
【図５】
2008311803.tif 000007
【図６】
2008311803.tif 000008
【図７】
2008311803.tif 000009
【図８】
2008311803.tif 000010
【図９】
2008311803.tif 000011
【図１０】
2008311803.tif 000012
【図１１】
2008311803.tif 000013
【図１２】
2008311803.tif 000014
【図１３】
2008311803.tif 000015
【図１４】
2008311803.tif 000016