(57)【特許請求の範囲】
【請求項１】
“０”および“１”からなる２値のビット列を入力する際、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する予測設定工程と、入力された上記予測ビット数からなる注目系列について予測が当たったときに符号語として“０”または“１”のいずれか一方の信号を予測当たり信号として出力かつ符号化し、次のｎ個のビット列を符号化する作業に移り、はずれたときに符号語として“０”または“１”のいずれか他方の信号を予測はずれ信号として出力すると共に、上記ｎ個の予測ビット数より小さい数の区切りビット数で上記入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化する予測結果符号化工程とを備え、予測が所定回数はずれたときに上記予測ビット数をｎ個より少ない新減少予測ビット数として同様の予測設定工程と予測結果符号化工程とを再帰的に繰り返すことを特徴とするデータ符号化方法。
【請求項２】
“０”および“１”からなる２値のビット列を入力する際、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する予測設定工程と、入力されたｎ個のビット列からなる注目系列について予測が当たったときに符号語として“０”または“１”のいずれか一方の信号を予測当たり信号として出力かつ符号化し、次のｎ個のビット列を符号化する作業に移り、はずれたときに符号語として“０”または“１”のいずれか他方の信号を予測はずれ信号として出力すると共に、上記ｎ個の予測ビット数より小さい数の区切りビット数で上記入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化する予測結果符号化工程とを備え、予測が規定回数当たったときに、上記予測ビット数をｎ個より多い新増加予測ビット数として同様の予測設定工程と予測結果符号化工程とを繰り返し行うことを特徴とするデータ符号化方法。
【請求項３】
前記予測が規定回数当たったときに、前記予測ビット数をｎ個より多い新増加予測ビット数とすることを特徴とする請求項１記載のデータ符号化方法。
【請求項４】
前記規定回数を２回とし、前記新増加予測ビット数を前記予測ビット数の２倍としたことを特徴とする請求項２または３記載のデータ符号化方法。
【請求項５】
前記新減少予測ビット数が１となり、かつそのビットが劣勢シンボルのとき、以降の符号化において従来の劣勢シンボルを優勢シンボルとし、従来の優勢シンボルを劣勢シンボルとして符号化するようにしたことを特徴とする請求項１記載のデータ符号化方法。
【請求項６】
前記区切りビット数を固定の所定値ｐとし、ｎ≦ｐのときは、まとめて符号化するビット数をｎ個としたことを特徴とする請求項１、２、３、４または５記載のデータ符号化方法。
【請求項７】
前記所定値ｐを４としたことを特徴とする請求項６記載のデータ符号化方法。
【請求項８】
“０”および“１”からなる２値のビット列を入力する際、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する予測設定工程と、入力された上記予測ビット数からなる注目系列について予測が当たったときに符号語として“０”または“１”のいずれか一方の信号を予測当たり信号として出力かつ符号化し、次のｎ個のビット列を符号化する作業に移り、はずれたときに符号語として“０”または“１”のいずれか他方の信号を予測はずれ信号として出力し符号化する予測結果符号化工程とを備え、この符号化工程において、符号化されるビットのパターンに対応した符号化データが予め記憶された符号化テーブルに基づいて符号化処理すると共に、予測が所定回数はずれたときに上記予測ビット数をｎ個より少ない新減少予測ビット数として同様の予測設定工程と予測結果符号化工程とを再帰的に繰り返すことを特徴とするデータ符号化方法。
【請求項９】
前記符号化テーブルには、８ビット以下のパターンに対応した符号化データが書き込まれ、８ビットを超える符号化対応ビットに対しては前記符号化テーブルを用いずに符号化することを特徴とする請求項８記載のデータ符号化方法。
【請求項１０】
“０”および“１”からなる２値の入力ビット列を圧縮して符号化するデータ符号化装置において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共にその優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する符号化制御部と、上記入力ビット列を一時記憶すると共に符号化すべきビット数とパターンを出力するビット列分解部と、上記入力ビット列のパターンに対応する符号化データを記憶した符号化テーブルを内蔵し、上記符号化制御部から入力する選択すべき上記符号化テーブルを示す信号ならびに上記ビット列分解部から入力する符号化すべきビット数およびパターンから所定の圧縮ビット列とそのビット長とを出力する符号化テーブル部と、上記圧縮ビット列を一旦バッファリングして固定のビット長にならして出力するストリーム生成部とを備え、上記予測が所定回数はずれたときに、上記予測ビット数をｎ個より少ない新減少予測ビット数として上記符号化制御部で設定し、上記予測が規定回数当たったときに、上記予測ビット数をｎ個より多い新増加予測ビット数として上記符号化制御部で設定することを特徴とするデータ符号化装置。
【請求項１１】
前記ｎ個の予測ビット数より小さい数の区切りビット数で前記入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化することを特徴とする請求項１０記載のデータ符号化装置。
【請求項１２】
“０”および“１”からなる２値の入力ビット列を圧縮して符号化するデータ符号化装置において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共にその優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する符号化制御部と、上記入力ビット列を一時記憶すると共に、上記ｎ個の予測ビット数より小さい数の区切りビット数で上記入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化する符号化部とを有することを特徴とするデータ符号化装置。
【請求項１３】
符号化されたデータを入力し、“０”および“１”からなる２値のビット列に復号化するデータ復号化方法において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個（ｎは１以上の整数）連続すると予測したその予測結果が“０”および“１”からなる２値のビット列で表わされた符号語を入力する入力工程と、その符号語を復号する復号工程とを有し、上記入力工程では、上記ｎ個の予測ビットより小さい区切りビット数で区切られて符号化されたデータを入力し、上記復号工程では、入力された符号語が予測当たりの値のとき上記優勢シンボルをｎ個連続して復号すると共に、予測はずれのときは、上記区切られた中に劣勢シンボルが含まれていたら、その区切られた部分を含むそれまで続いた優勢シンボルの部分をまとめて復号し、予測当たりが所定回数連続したときは上記ｎ個より多い数の優勢シンボルが連続すると新たに予測するようにしたことを特徴とするデータ復号化方法。
【請求項１４】
符号化されたデータを入力し、“０”および“１”からなる２値のビット列に復号化するデータ復号化方法において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個（ｎは１以上の整数）連続すると予測したその予測結果が“０”および“１”からなる２値のビット列で表わされた符号語を入力する入力工程と、その符号語を復号する復号工程とを有し、上記入力工程では、所定の数で区切られて符号化されたデータを入力し、上記復号工程では、入力された符号語と予測ビットの数とから復号されるビットパターンが指定される復号テーブルに基づいて復号し、予測当たりが所定回数連続したときは、上記ｎ個より多い数の優勢シンボルが連続すると新たに予測したその予測結果を入力し、予測はずれが規程回数連続したときは、上記ｎ個より少ない数の優勢シンボルが連続すると新たに予測したその予測結果を入力するようにしたことを特徴とするデータ復号化方法。
【請求項１５】
前記入力工程では、上記ｎ個の予測ビットより小さい区切りビット数で区切られて符号化されたデータを入力し、前記復号工程では、予測はずれのとき、上記区切られた中に劣勢シンボルが含まれていたら、その区切られた部分を含むそれまで続いた優勢シンボルの部分をまとめて復号することを特徴とする請求項１４記載のデータ復号化方法。
【請求項１６】
符号化されたデータとなる符号ビットを入力し、“０”および“１”からなる２値のビット列からなる復号ビットに復号するデータ復号化装置において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとしたとき、上記符号ビットの優勢シンボルと予測ビット長ｎ個を設定する復号制御部と、入力される符号語に対応する復号パターンを各予測ビット長毎に表化した復号テーブルを有する復号テーブル部と、この復号テーブル部からの復号パターンと復号するビット数を入力し記憶すると共に所定ビット数毎に出力するデコードバッファ部とを備え、入力された符号ビットが予測当たり信号の場合、優勢シンボルを復号すると共に、上記予測当たり信号が所定回数連続したときは上記予測ビット長をｎ個より多い数に変更することを特徴とするデータ復号化装置。
【請求項１７】
“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルすると共にそのシンボルがｎ個（ｎは１以上の整数）連続すると予測したその予測結果が“０”および“１”からなる２値のビット列で表された符号ビットを復号する復号化装置において、上記符号ビットの予測ビット長と上記優勢シンボルを設定する復号制御部と、上記符号ビットを入力し、その符号ビットの値に応じて復号ビットを出力する復号化部と、上記復号ビットを入力し、一時保持すると共に復号ビットとして出力するデコードバッファ部とを備え、上記復号化部での復号を上記予測ビット長より少ない数の区切りビット数で行い、上記デコードバッファ部の容量を小さなものにすると共に、上記予測結果が所定回数連続して当たったとき、上記予測ビット長をｎ個より大きな数に変更し、上記予測結果が規程回数連続して外れたとき、上記予測ビット長をｎ個より小さい数に変更し、その予測ビット長が所定値となったとき、優勢シンボルと劣勢シンボルを逆転させるようにしたことを特徴とするデータ復号化装置。
【請求項１８】
前記復号化部に、入力される符号語に対応する復号パターンを各予測ビット長毎に表化した復号テーブルを有する復号テーブル部を設けたことを特徴とする請求項１７記載のデータ復号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２値の情報をそのまま２値のビット列にし、圧縮したり、２値以上の多値情報源を２値のビット列に変換し、その２値のビット列を圧縮するデータ符号化方法およびデータ符号化装置ならびに圧縮された２値のデータを伸長するデータ復号化方法およびデータ復号化装置に関する。
【０００２】
【従来の技術】
従来、“０”と“１”からなる２値信号を扱う情報理論の世界では、算術符号化方式と呼ばれるものが知られている。この算術符号化方式は、エントロピー符号化方式であり、本質的に可逆符号化（ロスレス）の性質を持つものである。そして、その原理は、エライアスの符号化として知られている無記憶情報源に対する理想的符号化方式を実用可能な形に再編成したものとなっている。すなわち、算術符号とは、“０”と“１”の直線上の対応区間を各シンボルの生起確率に応じて不等長に分割していき、対象シンボル系列を対応する部分区間に割り当て、再帰的に分割を繰り返していくことにより得られた区間内に含まれる点の座標を、少なくとも他の区間と区別できる２進小数で表現してそのまま符号とするものである。
【０００３】
この算術符号化方式は、有限個の情報源シンボルに特定の符号語を対応させるブロック符号に比べ、符号器の規模、例えば必要メモリ量などのハードウェアが小さくて済むこと、高い効率を期待できることおよび適応符号化が容易なこと等の利点がある。このこと等から、２値信号を扱う情報理論の世界では、この算術符号化方式がその情報の持つエントロピーに最も近いレベルに圧縮できるとされ、最も効率の良い符号化方式と言われている。なお、この算術符号化方式は、特に、マルコア情報源の符号化に適するものとなっている。
【０００４】
この算術符号化方式として、Ｑコーダ、算術符号型ＭＥＬコード、Ｍｉｎｉ−Ｍａｘコーダ等が提案されている。そして、これらの算術符号を改善したものとして、ＱＭコーダと呼ばれている方式が知られている。このＱＭコーダは、カラー静止画符号化標準（ＪＰＥＧ）および２値画像符号化標準（ＪＢＩＧ）の両標準において、共通に使用されている。なお、このＱＭコーダは、２値情報源用の符号であり、ＪＰＥＧのような多値情報源の符号化にあたっては、その多値情報源を２値化するための前処理を必要としている。このような場合、符号化すべき２値シンボル数は増大するが、多値情報源としての情報量を増大させることなしに２値系列に変換することが可能となっている。
【０００５】
このＱＭコーダは、ＪＰＥＧおよびＪＢＩＧの規定の中にその仕組みについて詳細に述べられているが、ここでは後述する本発明との比較のために、その概要を図２１に基づき簡単に説明する。なお、算術復号型のエントロピー復号器の構成は、エントロピー符号器の構成と実質的に同一であるので、ここではその説明は省略する。
【０００６】
この算術符号型のエントロピー符号器となるＱＭコーダ１０１は、算術演算部１０２と、状態記憶器として機能する発生確率生成手段１０３とを含んで構成される。この発生確率生成手段１０３内には、符号化に必要なシンボル発数確率を決定するために必要な状態パラメータテーブルが書き込まれている。上記の状態パラメータは、入力される状態信号１０６によって特定される。そして、この状態信号１０６によって特定された状態パラメータのテーブルに対し、発生確率生成手段１０３の発生確率演算パラメータが算術演算部１０４へ向けて出力される。
【０００７】
算術演算部１０２は、このようにして入力される発生確率に基づき、エントロピー符号化を行い、入力されるデータ１０４を符号化データ１０５に圧縮し、符号化して出力する。そして、入力されるデータ１０４の値により、状態信号に対する発生確率を再計算し、演算パラメータ更新値として、発生確率生成手段１０３へ入力する。この更新結果が次のデータの発生確率としてテーブルに記憶されることで、ＱＭコーダ１０１の圧縮効率が向上することとなる。なお、発生確率生成手段１０３には、状態信号１０６が入力される。これは例えば、マルコフモデルと呼ばれるような手法等により求められる参照画素データ等であり、圧縮率を高めるために利用される信号である。
【０００８】
このように構成されるＱＭコーダの動作について、図２２のフローチャートに基づき説明する。まず、ＱＭコーダ１０１内のレジスタＡに０ｘＦＦＦＦを、レジスタＣに０ｘ００００を代入する。また、確率推定のためのインデックスＳＴを初期化する（ステップＳ１００）。次に、符号化対象のシンボル（１ビット）を取り込む（ステップＳ１０１）。そして、取り込んだシンボルが、優勢シンボルか劣勢シンボルかを判定する（ステップＳ１０２）。優勢シンボルの時はステップＳ１０３に進み、劣勢シンボルの時はステップＳ１０６に進む。
【０００９】
インデックスＳＴによって確率推定テーブルＬＳＺを参照し、劣勢シンボルの生起確率を求め、さらに、それをレジスタＡから減じることにより優勢シンボルの生起確率を求め、その値をレジスタＡに代入する（ステップＳ１０３）。その後、レジスタＡの最上位ビットが“１”かどうか調べる（ステップＳ１０４）。“１”ならステップＳ１０５に進み、“０”ならステップＳ１１４に進む。そして、“１”のときは、インデックスＳＴによって確率推定テーブルＮＭＰＳを参照し、次のシンボルの符号化のためのインデックスＳＴを求めておく（ステップＳ１０５）。
【００１０】
ステップＳ１０２において、劣勢シンボルのときは、インデックスＳＴによって確率推定テーブルＬＳＺを参照し、劣勢シンボルの生起確率を求め、それをレジスタＡに代入する（ステップＳ１０６）。その後、レジスタＣにレジスタＡの値を加える（ステップＳ１０７）。そして、インデックスＳＴによって確率推定テーブルＳＷＩＴＣＨを参照し（ステップＳ１０８）、これが“１”のときはステップＳ１０９に進み、優勢シンボルを変更する。
【００１１】
一方、ステップＳ１１０では、インデックスＳＴによって確率推定テーブルＮＬＰＳを参照し、次のシンボルの符号化のためのインデックスＳＴを求めておく。そして、ステップＳ１１１ではレジスタＡ，レジスタＣを共に１ビット左シフトする。この左シフトにより、レジスタＣから溢れた最上位ビットを符号語として出力する（ステップＳ１１２）。そして、ステップＳ１１３において、レジスタＡの最上位ビットが“１”かどうか調べ、“１”のときは、ステップＳ１１１に戻ってシフトを繰り返す。最上位ビットが“０”のときはステップＳ１１４にいき、符号化したシンボルが最後のシンボルなら終了する。そうでなければステップＳ１０１に戻る。
【００１２】
このようにして、ＱＭコーダ１０１は、確率推定テーブルＬＳＺ，ＮＭＰＳ，ＮＬＰＳを利用して入力されてくる２値のビット列を圧縮して符号化する。
【００１３】
【発明が解決しようとする課題】
しかしながら、このＱＭコーダ１０１等の算術符号化方式は、符号化効率は良いものの図２２に示すフローチャートに示されるように、１ビットずつ符号化するため符号化速度が遅いものとなっている。このため、実用面では、レンベル・ジブ系（＝ＬＺ系）の符号化方式が優勢となっている。しかし、このＬＺ系の符号化方式は、符号化効率が算術符号化方式にくらべ、かなり落ちるものとなっている。このように、従来の技術には、符号化効率が算術符号化方式程度に良く、しかも符号加速度がＬＺ系程度に速いものが存在していない状況である。また、画像符号化やユニバーサル符号化等多くの符号化の対象は、多値情報源であり、多値情報源の効率の良い圧縮、伸長が要望されている。
【００１４】
本発明は、算術符号化方式とほぼ同程度の符号化および復号化効率を達成すると共に符号化および復号化速度を大幅に向上させ、ＬＺ系の速度に近づけた新しいデータ符号化方法およびデータ符号化装置ならびにデータ復号化方法およびデータ復号化装置を提供することを目的とする。
【００１５】
【課題を解決するための手段】
かかる目的を達成するため、請求項１記載のデータ符号化方法では、“０”および“１”からなる２値のビット列を入力する際、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する予測設定工程と、入力された予測ビット数からなる注目系列について予測が当たったときに符号語として“０”または“１”のいずれか一方の信号を予測当たり信号として出力かつ符号化し、次のｎ個のビット列を符号化する作業に移り、はずれたときに符号語として“０”または“１”のいずれか他方の信号を予測はずれ信号として出力すると共に、ｎ個の予測ビット数より小さい数の区切りビット数で入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化する予測結果符号化工程とを備え、予測が所定回数はずれたときに予測ビット数をｎ個より少ない新減少予測ビット数として同様の予測設定工程と予測結果符号化工程とを再帰的に繰り返している。
【００１６】
このように、優勢シンボルがｎ個連続することを予測し、予測が当たったときには、ｎ個のビットが１つの予測当たり信号等で表示されることとなり、圧縮効率が高まると共に符号化速度が速くなる。しかも、予測がはずれると、予測ビット数を減少させ、次の予測を行うようにしたので、予測がはずれても圧縮効率や符号化速度はそれ程減少しない。加えて、予測ビット数より少ない区切りビット数で、段階的に符号化するので、符号化時のバッファを小さくすることができる。
【００１７】
また、請求項２記載の発明では、“０”および“１”からなる２値のビット列を入力する際、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する予測設定工程と、入力されたｎ個のビット列からなる注目系列について予測が当たったときに符号語として“０”または“１”のいずれか一方の信号を予測当たり信号として出力かつ符号化し、次のｎ個のビット列を符号化する作業に移り、はずれたときに符号語として“０”または“１”のいずれか他方の信号を予測はずれ信号として出力すると共に、ｎ個の予測ビット数より小さい数の区切りビット数で入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化する予測結果符号化工程とを備え、予測が規定回数当たったときに、予測ビット数をｎ個より多い新増加予測ビット数として同様の予測設定工程と予測結果符号化工程とを繰り返している。
【００１８】
このように、優勢シンボルがｎ個連続することを予測し、予測が当たったときには、ｎ個のビットが１つの予測当たり信号等で表示されることとなり、圧縮効率が高まると共に符号化速度が速くなる。しかも、予測が当たれば当たる程、データの圧縮効率が一層高まると共に符号化速度が一層早くなる。加えて、予測ビット数より少ない区切りビット数で、段階的に符号化するので、符号化時のバッファを小さくすることができる。
【００１９】
また、請求項３記載の発明では、請求項１記載のデータ符号化方法において、予測が規定回数当たったときに、予測ビット数をｎ個より多い新増加予測ビット数としている。このため、予測が当たれば当たる程、圧縮効率が高まりかつ符号化速度が速くなる。
【００２０】
さらに、請求項４記載の発明では、請求項２または３記載のデータ符号化方法において、規定回数を２回とし、新増加予測ビット数を予測ビット数の２倍としている。このため、予測の当たりが続くこと、すなわち、一定の傾向が出始めてから予測ビット数を変えているので、データの圧縮効率を高めることができる。しかもその値を従前の２倍としているので、当たりによって連続した優勢シンボルのビット数と同一となり、次の予測も当たる確率が高くなる。この結果、圧縮効率を高めることができると共に符号化速度を速くすることができる。
【００２１】
さらに、請求項５記載の発明では、請求項１記載のデータ符号化方法において、新減少予測ビット数が１となり、かつそのビットが劣勢シンボルのとき、以降の符号化において従来の劣勢シンボルを優勢シンボルとし、従来の優勢シンボルを劣勢シンボルとして符号化するようにしている。その結果、入力データの実態に合わせ、適切な予測ができることとなり、高い符号化速度や効率を維持できることとなる。
【００２２】
さらに、請求項６記載の発明では、請求項１、２、３、４または５記載のデータ符号化方法において、区切りビット数を固定の所定値ｐとし、ｎ≦ｐのときは、まとめて符号化するビット数をｎ個としている。この結果、固定の所定値ｐより大きな予測ビット数の場合、段階的に符号化が可能となり、符号化時のバッファを小さくすることができる。
【００２３】
加えて、請求項７記載の発明では、請求項６記載のデータ符号化方法において、所定値を４としている。このため、符号化速度をそれ程落とすことなく、符号化時のバッファを小さくできると共に、このシステムに対応する復号化システムにおけるバッファを小さくでき、しかも復号速度を速くすることができる。
【００２４】
加えて、請求項８記載の発明では、“０”および“１”からなる２値のビット列を入力する際、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する予測設定工程と、入力された予測ビット数からなる注目系列について予測が当たったときに符号語として“０”または“１”のいずれか一方の信号を予測当たり信号として出力かつ符号化し、次のｎ個のビット列を符号化する作業に移り、はずれたときに符号語として“０”または“１”のいずれか他方の信号を予測はずれ信号として出力し符号化する予測結果符号化工程とを備え、この符号化工程において、符号化されるビットのパターンに対応した符号化データが予め記憶された符号化テーブルに基づいて符号化処理すると共に、予測が所定回数はずれたときに予測ビット数をｎ個より少ない新減少予測ビット数として同様の予測設定工程と予測結果符号化工程とを再帰的に繰り返している。
【００２５】
このように、優勢シンボルがｎ個連続することを予測し、予測が当たったときには、ｎ個のビットが１つの予測当たり信号等で表示されることとなり、圧縮効率が高まると共に符号化速度が速くなる。しかも、予測がはずれると、予測ビット数を減少させ、次の予測を行うようにしたので、予測がはずれても圧縮効率や符号化速度はそれ程減少しない。加えて、符号化処理を予め用意されたテーブルによって行っているので、符号化処理の速度が向上する。
【００２６】
また、請求項９記載の発明では、請求項８記載のデータ符号化方法において、符号化テーブルには、８ビット以下のパターンに対応した符号化データが書き込まれ、８ビットを超える符号化対応ビットに対しては符号化テーブルを用いずに符号化している。このように、８ビット以下の小さいパターンに対して符号化テーブルを用意しているので、そのテーブル用のメモリをそれ程増加させずに符号化速度を大幅に向上させることができる。
【００２７】
また、請求項１０記載の発明では、“０”および“１”からなる２値の入力ビット列を圧縮して符号化するデータ符号化装置において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共にその優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する符号化制御部と、入力ビット列を一時記憶すると共に符号化すべきビット数とパターンを出力するビット列分解部と、入力ビット列のパターンに対応する符号化データを記憶した符号化テーブルを内蔵し、符号化制御部から入力する選択すべき上記符号化テーブルを示す信号ならびにビット列分解部から入力する符号化すべきビット数およびパターンから所定の圧縮ビット列とそのビット長とを出力する符号化テーブル部と、圧縮ビット列を一旦バッファリングして固定のビット長にならして出力するストリーム生成部とを備え、予測が所定回数はずれたときに、予測ビット数をｎ個より少ない新減少予測ビット数として符号化制御部で設定し、予測が規定回数当たったときに、予測ビット数をｎ個より多い新増加予測ビット数として符号化制御部で設定している。
【００２８】
この結果、予測が当たればｎ個のビットが１つの予測当たり信号等で表示されることとなり、圧縮効率が高まると共に符号化速度が速くなる。しかも、予測が当たれば当たる程、予測ビット数を多くしているので、一層圧縮効率が高まることとなる。加えて、予測がはずれると、予測ビット数を減少させているので、予測がはずれても圧縮効率や符号化速度はそれ程減少することはない。さらに、入力してきたパターンに対応する符号化データを記憶した符号化テーブルを用意して処理するため、符号化速度が向上する。
【００２９】
さらに、請求項１１記載のデータ符号化装置では、請求項１０記載のデータ符号化装置において、ｎ個の予測ビット数より小さい数の区切りビット数で入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化している。このため、予測ビット数より小さい区切りビット数で、段階的に符号化することとなるので、符号化時のバッファを小さくすることができる。
【００３０】
また、請求項１２記載の発明では、“０”および“１”からなる２値の入力ビット列を圧縮して符号化するデータ符号化装置において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共にその優勢シンボルがｎ個連続すると予測し、そのｎ個を予測ビット数として設定する符号化制御部と、入力ビット列を一時記憶すると共に、ｎ個の予測ビット数より小さい数の区切りビット数で入力ビット列を区切り、その区切られたパターンに劣勢シンボルが含まれていたら、そのパターンを含むそれまでに続いた優勢シンボルのパターンをまとめて符号化する符号化部とを有している。
【００３１】
この結果、予測が当たればｎ個のビットが１つの予測当たり信号等で表示されることとなり、圧縮効率が高まると共に符号化速度が速くなる。さらに、予測ビット数より小さい区切りで、段階的に符号化するので符号化時のバッファを小さいものとすることができる。
【００３２】
また、請求項１３記載のデータ復号化方法では、符号化されたデータを入力し、“０”および“１”からなる２値のビット列に復号化するデータ復号化方法において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個（ｎは１以上の整数）連続すると予測したその予測結果が“０”および“１”からなる２値のビット列で表わされた符号語を入力する入力工程と、その符号語を復号する復号工程とを有し、入力工程では、ｎ個の予測ビットより小さい区切りビット数で区切られて符号化されたデータを入力し、復号工程では、入力された符号語が予測当たりの値のとき優勢シンボルをｎ個連続して復号すると共に、予測はずれのときは、区切られた中に劣勢シンボルが含まれていたら、その区切られた部分を含むそれまで続いた優勢シンボルの部分をまとめて復号し、予測当たりが所定回数連続したときはｎ個より多い数の優勢シンボルが連続すると新たに予測するようにしている。
【００３３】
この結果、予測が当たっている場合、１つの符号語でｎ個の優勢シンボルを復号できるので、伸長効率が高くなり、復号速度が速くなる。しかも予測が当たっていればいる程、１つの符号語で復号できる優勢シンボルの数を多くできるので一層伸長効率が高くなると共に、復号速度が速くなる。さらに、予測はずれのときは、予測ビット数より小さな区切りで復号することになるので、復号速度は一層高まる。
【００３４】
さらに、請求項１４記載のデータ復号化方法では、符号化されたデータを入力し、“０”および“１”からなる２値のビット列に復号化するデータ復号化方法において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとすると共に、その優勢シンボルがｎ個（ｎは１以上の整数）連続すると予測したその予測結果が“０”および“１”からなる２値のビット列で表わされた符号語を入力する入力工程と、その符号語を復号する復号工程とを有し、入力工程では、所定の数で区切られて符号化されたデータを入力し、復号工程では、入力された符号語と予測ビットの数とから復号されるビットパターンが指定される復号テーブルに基づいて復号し、予測当たりが所定回数連続したときは、ｎ個より多い数の優勢シンボルが連続すると新たに予測したその予測結果を入力し、予測はずれが規程回数連続したときは、ｎ個より少ない数の優勢シンボルが連続すると新たに予測したその予測結果を入力するようにしている。
【００３５】
この結果、予測が当たっている場合、１つの符号語でｎ個の優勢シンボルを復号できるので、伸長効率が高くなり、復号速度が速くなる。しかも予測が当たっていればいる程、１つの符号語で復号できる優勢シンボルの数を多くできるので一層伸長効率が高くなると共に、復号速度が速くなる。また、予測が外れると、予測ビット数が減少していくので、予測が外れても復号効率はそれ程落ちない。しかも、復号ビットが、予め記憶された復号テーブルに基づいて復号されるので、復号速度を高めることができる。
【００３６】
また、請求項１５記載の発明では、請求項１４記載のデータ復号化方法において、入力工程では、ｎ個の予測ビットより小さい区切りビット数で区切られて符号化されたデータを入力し、復号工程では、予測はずれのとき、区切られた中に劣勢シンボルが含まれていたら、その区切られた部分を含むそれまで続いた優勢シンボルの部分をまとめて復号している。
【００３７】
この結果、予測ビット数より小さいビット数で復号されていくことになるので、使用するバッファを小さくできると共に復号速度を速くすることができる。
【００３８】
さらに、請求項１６記載の発明では、符号化されたデータとなる符号ビットを入力し、“０”および“１”からなる２値のビット列からなる復号ビットに復号化するデータ復号化装置において、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルとしたとき、符号ビットの優勢シンボルと予測ビット長ｎ個を設定する復号制御部と、入力される符号語に対応する復号パターンを各予測ビット長毎に表化した復号テーブルを有する復号テーブル部と、この復号テーブル部からの復号パターンと復合するビット数を入力し記憶すると共に所定ビット数毎に出力するデコードバッファ部とを備え、入力された符号ビットが予測当たり信号の場合、優勢シンボルを復号すると共に、予測当たり信号が所定回数連続したときは予測ビット長をｎ個より多い数に変更している。このため、予測が当たっている場合、１つの符号語でｎ個の優勢シンボルを復号できるので、伸長効率が高くなり、復号速度が速くなる。しかも予測が当たっていればいる程、１つの符号語で復号できる優勢シンボルの数を多くできるので一層伸長効率が高くなると共に、復号速度が速くなる。加えて、入力される符号語に対応する復号パターンを予め表化したテーブルに基づいて復号処理を行っているので、復号速度が一層速くなる。
【００３９】
また、請求項１７記載の発明では、“０”または“１”のいずれか一方を優勢シンボルとし、いずれか他方を劣勢シンボルすると共にそのシンボルがｎ個（ｎは１以上の整数）連続すると予測したその予測結果が“０”および“１”からなる２値のビット列で表された符号ビットを復号する復号化装置において、符号ビットの予測ビット長と優勢シンボルを設定する復号制御部と、符号ビットを入力し、その符号ビットの値に応じて復号ビットを出力する復号化部と、復号ビットを入力し、一時保持すると共に復号ビットとして出力するデコードバッファ部とを備え、復号化部での復号を予測ビット長より少ない数の区切りビット数で行い、デコードバッファ部の容量を小さなものにすると共に、予測結果が所定回数連続して当たったとき、予測ビット長をｎ個より大きな数に変更し、予測結果が規程回数連続して外れたとき、予測ビット長をｎ個より小さい数に変更し、その予測ビット長が所定値となったとき、優勢シンボルと劣勢シンボルを逆転させるようにしている。
【００４０】
このため、予測が当たっている場合、１つの符号語でｎ個の優勢シンボルを復号できるので、伸長効率が高くなり、復号速度が速くなる。しかも予測が当たっていればいる程、１つの符号語で復号できる優勢シンボルの数を多くできるので一層伸長効率が高くなると共に、復号速度が速くなる。加えて、予測が外れると、予測ビット長を短くしていき、所定の長さになると優勢シンボルと劣勢シンボルを逆転させているので、予測が外れ続けることを防止でき、復号効率を高く維持できると共に復号速度の一層の向上を図ることができる。
【００４１】
さらに、請求項１８記載の発明では、請求項１７記載のデータ復号化装置において、復号化部に、入力される符号語に対応する復号パターンを各予測ビット長毎に表化した復号テーブルを有する復号テーブル部を設けている。このため、入力される符号語に対応する復号パターンを予め表化したテーブルに基づいて復号処理を行っているので、復号速度が一層速くなる。
【００４２】
本発明のデータ符号化方法およびデータ符号化装置では、２値のビット列を入力する際、“０”か“１”を優勢シンボルと定め、その優勢シンボルがｎ個連続すると予測する。この予測が当たったときは、符号語として“０”または“１”のいずれか一方を出力し、符号化を完了する。はずれた場合は、“０”または“１”のいずれか他方を出力すると共に、その注目系列を分割し、それぞれの分割された系列の信号状態を上述と同様な方法で確認し符号化していく。そして、予測が当たるか分割が所定値のビット数となるまで、同様の分割と予測を繰り返し符号化する。
【００４３】
このような原理に基づく符号化に当たり、本発明では、予測ビット長ｎで定まるビット列を一度に符号化せず、何段階にも分けて符号化をしている。このため、予測ビット長ｎが大きくなっても、デコードバッファ部の容量を大きくする必要がなくなる。また、本発明では、符号化を行うに当たり、入力される信号に対する出力信号を予め表化した符号化テーブルを設けている。この結果、符号化の速度が向上する。
【００４４】
また、本発明のデータ復号化方法およびデータ復号化装置では、先に示したデータ符号化方法およびデータ符号化装置とは、逆のアルゴリズムを使用して復号している。このため、復号速度を速くできると共にデコードバッファ部の容量を小さくできるものとなる。
【００４５】
【発明の実施の形態】
以下、本発明の実施の形態の例を図１から図２０に基づき説明する。なお、本発明の前提となるアルゴリズムの概要について、図１から図３に基づいて説明すると共に、本発明の基礎となる基本的な符号化方法等を図４から図６に基づいて説明する。
【００４６】
この発明のアルゴリズムは、ＱＭコーダと同様、２値のビット列を圧縮の対象としている。まず初期値として、“０”か“１”のいずれかを優勢シンボルと定め、そのシンボルが連続すると予測する個数ｒｕｎを設定する。入力系列の出現確率が不明の場合は、ｒｕｎを１に設定するのが良い。その上で、以下に示すようなルールに従い符号化を進める。なお、個数ｒｕｎが予測ビット数に相当する。
【００４７】
図１に示すように、ｒｕｎで示される注目系列がすべて優勢シンボルであると予測し、予測が当たったとき、符号語として“０”を出力し、この系列の符号化を完了する。はずれた場合は“１”を出力し、次の分割符号化工程を実行する。
予測がはずれた場合は、図２に示すように注目系列を前半部系列と後半部系列の２つに分け、前半部がすべて優勢シンボルのときは符号語として“０”を出力して、前半部系列の符号化を完了する。前半部系列に劣勢シンボルが存在するときは、符号語として“１”を出力し、次の再分割の工程を実行する。前半部系列の符号化が完了したら注目系列を後半部に移し、前半部系列と同様に符号化する。劣勢シンボルが存在する系列は、可能な限り系列を分割して上述の分割符号化工程を繰り返す。
【００４８】
なお、分割は必ずしも２つの均等分割とする必要はなく、不均等な分割としたり３つ以上の分割としても良い。また、予測が当たったとき“０”ではなく、優勢シンボルを出力し、はずれた場合“１”ではなく、劣勢シンボルを出力するようにしたり、予測当たりで“１”を、予測はずれで“０”を出力するようにしても良い。
【００４９】
以上がこの発明の前提となるデータ符号化の基本アルゴリズムであるが、さらに、入力系列の出現確率の変化に追随し、符号化効率を向上させるため、以下の処理を加えるようにしても良い。
【００５０】
すなわち、ｒｕｎで予測した系列が続けて所定回数、例えば、２回当たったとき、ｒｕｎを２倍等に増加させる。なお、予測が的中し続けた場合、さらに予測範囲を拡大していくようにしても良い。また、ｒｕｎで予測した系列の後半部系列に劣勢シンボルが存在するとき、ｒｕｎを１／４等に減少させるようにしても良い。これは、後半部に劣勢シンボルが存在するときは、次に続く系列に劣勢シンボルが多く含まれると判断されているためである。このため、ｒｕｎで予測した系列の前半部系列のみに劣勢シンボルが存在するときは、後半部に劣勢シンボルが存在するときより多い値、例えばｒｕｎを１／２倍するようにしても良い。そして、ｒｕｎが１で、それが劣勢シンボルのときは、以降の入力系列を反転させる。すなわち、優勢シンボルを変更させる。
【００５１】
この発明の符号化プロセスは、次に説明する図４および図５の符号化プロセスを改良したものであり、まずその符号化プロセスについて説明する。改良前の符号化プロセスは、図４の符号化メインルーチンと図５の符号化サブルーチンにより構成される。なお、図５中の符号化サブルーチンは、サブルーチンから同じサブルーチンを呼び出すいわゆる関数の再帰読出しを行っている。
【００５２】
まず、図４の符号化メインルーチンの各ステップについて説明する。なお、符号化の対象は２値のビット列からなる入力系列となっている。最初に、予測の初期値ｒｕｎの設定と優勢シンボルの選択（“０”または“１”）を行う（ステップＳ０）。次に、ローカル変数ｏｆｓに０を、ｗｉｄｔｈにｒｕｎを代入する（ステップＳ１）。ここでｏｆｓは、符号化のために予め定義した配列Ａのポインタで、予測開始ビット位置を示す。したがって初期値は０となる。ｗｉｄｔｈはｏｆｓで示したビット位置から何ビットを予測の対象にするかを示す値で、ここでは、予測の初期値ｒｕｎが代入される。その後、予め定義した配列ＡのＡ〔ｏｆｓ〕からＡ〔ｗｉｄｔｈ−１〕までに入力ビットを書き込む（ステップＳ２）。そして、Ａ〔ｏｆｓ〕からＡ〔ｗｉｄｔｈ−１〕のすべての要素が優勢シンボルのときステップＳ４へ進み、ひとつでも劣勢シンボルが含まれているときは、ステップＳ５へ進む。
【００５３】
予測が的中した場合、符号語として予測当たり信号“０”を出力し、配列Ａに取り込んだ系列の符号化を完了する（ステップＳ４）。一方、予測はずれた場合、符号語として予測はずれ信号“１”を出力する（ステップＳ５）。そして、ｗｉｄｔｈが１以上か否かを検出する（ステップＳ６）。ｗｉｄｔｈが１以下ならこれ以上分割できないので、ステップＳ７の符号化サブルーチンへは移行せずステップＳ８へ移行する。一方、ｗｉｄｔｈが１を超えていると、図５の符号化サブルーチンを呼び出す（ステップＳ７）。
【００５４】
ステップＳ８では、予測ｒｕｎの再設定と必要ならば優勢シンボルの変更を行う。すなわち、このステップＳ８においては、基本的には予測が的中すれば、ｒｕｎを大きくし、はずれれば小さくする。そしてｒｕｎを小さくしても予測が所定回数はずれ続けるようなら、優勢シンボルの変更を行う。なお、予測の的中や予測のはずれをどのように評価するかについては、さまざまな方法を採用することができる。たとえば、予測がはずれた場合、直ちにｒｕｎを小さくしたり、２回以上連続してはずれたとき、初めてｒｕｎを小さくする等の方法を採用することができる。さらに、前半部系列もしくは後半部系列のみはずれた場合と、両方はずれた場合とでｒｕｎの縮小の度合いを異ならせる方法も採用できる。また、符号済みビット系列で所定の確率テーブルを引き、次の予測ｒｕｎを設定する等の方式も採用可能である。
【００５５】
符号化メインルーチンで１次予測がはずれた場合は、ステップＳ７で図５に示す符号化サブルーチンを呼び出す。符号化サブルーチンへ渡す引き数は、ｏｆｓとｗｉｄｔｈである。以下、符号化サブルーチンの各ステップについて説明する。
【００５６】
符号化サブルーチンでは、予測を前半部系列と後半部系列に分けて行うため、予測の範囲を半分にする（ステップＳ１０）。すなわち、親ルーチンから引き数として受け取ったｗｉｄｔｈを１／２にする。そして、次のステップＳ１１で、前半部系列（配列のＡ〔ｏｆｓ〕からＡ〔ｏｆｓ＋ｗｉｄｔｈ−１〕まで）がすべて優勢シンボルか否かをチェックする。すべて優勢シンボルならステップＳ１２へ進む。ひとつでも劣勢シンボルが存在したら、直ちにステップＳ１４へ進む。
【００５７】
前半部系列がすべて優勢シンボルなら、符号語として“０”を出力する（ステップＳ１２）。そして、前半部系列の先頭位置を示すポインタｏｆｓにｗｉｄｔｈを加え、後半部系列の先頭位置を示すように変更する。また、前半部系列がすべて優勢シンボルのときは、後半部系列に必ず劣勢シンボルが存在するので、後半部系列の予測がはずれたことを示す符号語“１”を出力する必要がない。したがって、後述するステップＳ２０はスキップし、ステップＳ２１に進む。
【００５８】
一方、前半部系列に劣勢シンボルが存在する場合、符号語として“１”を出力する（ステップＳ１４）。次に、ｗｉｄｔｈが１を超えているか否かをチェックする（ステップＳ１５）。１以下の場合、これ以上分割できないので、子の符号化サブルーチン（ステップＳ１６）の呼び出しをスキップし、ステップＳ１７へ移行する。なお、ｗｉｄｔｈが２以上なら、さらに系列を２つに分け、それぞれを符号化しなければならない。そのための子の符号化サブルーチンを呼び出す（ステップＳ１６）。子の符号化サブルーチンは、図５に示した符号化サブルーチンと全く同一となっている。つまり、ここでは、同一ルーチン（関数）の再帰呼び出しを行う。
【００５９】
符号化サブルーチンの再帰呼び出しによって前半部系列の符号化を終了すると、前半部系列の先頭位置を示すポインタｏｆｓにステップＳ１０で設定したｗｉｄｔｈを加え、後半部系列の先頭位置を示すように変更する（ステップＳ１７）。その後、後半部系列（配列のＡ〔ｏｆｓ〕からＡ〔ｏｆｓ＋ｗｉｄｔｈ−１〕まで）がすべて優勢シンボルか否かをチェックする（ステップＳ１８）。すべて優勢シンボルならステップＳ１９へ進む。ひとつでも劣勢シンボルが存在したら、直ちにステップＳ２０へ進む。そして、後半部系列がすべて優勢シンボルなら、符号語として“０”を出力する（ステップＳ１９）。
【００６０】
一方、前半部系列に劣勢シンボルが存在する場合、符号語として“１”を出力する（ステップＳ２０）。そして、次に、ｗｉｄｔｈが１を超えているか否かをチェックする（ステップＳ２１）。１以下の場合、これ以上分割できないので、子の符号化サブルーチンを実行するステップＳ２２をスキップし、次の注目系列の符号化工程へリターンする。なお、後半部系列についても、ｗｉｄｔｈが２以上なら、さらに系列を２つに分け、それぞれ符号化する。そのため図５に示す符号化サブルーチンと同一の子の符号化サブルーチンを呼び出す（ステップＳ２２）。この符号化サブルーチンの再帰呼び出しによって後半部系列の符号化を実行する。
【００６１】
以上のような符号化プロセスの具体例を次に説明する。すなわち、符号化の具体例として、予測の初期値ｒｕｎを８、優勢シンボルを“０”として、“００００１００１”として表される入力ビットを符号化する場合について説明する。
【００６２】
まず、図４の符号化メインルーチンのステップＳ２で、Ａ〔０〕からＡ〔７〕に、上記の入力ビットを入力する。ステップＳ３では、Ａ〔０〕からＡ〔７〕のすべてが“０”かどうか判定する。上の例の場合、ビット列に“１”が含まれているので、ステップＳ５に移行し、まず符号語として“１”を出力する。続いてステップＳ６では、ｗｉｄｔｈの大きさをチェックするが、ｗｉｄｔｈはこのとき８なので、符号化サブルーチン（ステップＳ７）に進む。
【００６３】
符号化サブルーチンでは、まずステップＳ１０で、ｗｉｄｔｈを１／２の４に設定する。そしてステップＳ１１で、入力ビットの前半部、つまりＡ〔０〕からＡ〔３〕がすべて０かどうかチェックする。この場合、すべて“０”なのでステップＳ１２に進み、符号語として“０”を出力する。以上で前半部系列の符号化が完了する。続いてステップＳ１３を実行し、後半部系列の符号化に移るが、前半部系列がすべて“０”の場合、後半部系列に“１”が含まれるのは明らかである。したがって、ステップＳ２１でｗｉｄｔｈが１以下でない限り後半部系列をさらに分割して符号化しなければならない。そこで、符号化サブルーチンを子プロセスとしてステップＳ２２で再び呼び出す。なお、そのための前処理として、上述したようにステップＳ１３では、ｏｆｓにｗｉｄｔｈを加え、ｏｆｓを後半部系列の先頭位置にセットする。
【００６４】
ステップＳ２２では、ｏｆｓとｗｉｄｔｈを引き数として子の符号化サブルーチンを呼び出す。子の符号化サブルーチンを実行するステップＳ２２では、まず、図５に示す符号化サブルーチンのステップＳ１０でｗｉｄｔｈをさらに半分にして２に変更する。次のステップＳ１１では、前半部系列、すなわちＡ〔４〕とＡ〔５〕が共に“０”であるか否かをチェックする。この場合、Ａ〔４〕が“１”なので、次のステップＳ１４に移行し、符号語として“１”を出力する。そしてステップＳ１５でｗｉｄｔｈが１を超えていると判断し、孫プロセスをステップＳ１６で呼び出す。孫の符号化サブルーチンでは、まずステップＳ１０においてｗｉｄｔｈが１となる。Ａ〔４〕は“１”なのでステップＳ１１からステップＳ１４へ処理が移り、符号語“１”を出力する。ステップＳ１５では、ｗｉｄｔｈが１以下なので、ステップＳ１６をスキップし、ステップＳ１７でｏｆｓを５に変更する。Ａ〔５〕は“０”なのでステップＳ１８からステップＳ１９に処理が移り、符号語“０”を出力する。
【００６５】
次に、この孫の符号化サブルーチンから抜けて、子の符号化サブルーチンのステップＳ１７に戻る。子の符号化サブルーチンのｏｆｓは４、ｗｉｄｔｈは２であるから、ステップＳ１７でｏｆｓは６に変更される。したがってステップＳ１８では、Ａ〔６〕とＡ〔７〕をチェックすることになる。この場合、Ａ〔７〕が“１”なのでステップＳ２０へ移行し、符号語“１”を出力する。そして、再び孫の符号化サブルーチンをステップＳ２２で呼び出す。孫の符号化サブルーチンでは、Ａ〔６〕が“０”なのでステップＳ１２で符号語“０”を出力する。そして、ｗｉｄｔｈが１なので、ステップＳ２２をスキップして子の符号化サブルーチンに復帰する。
【００６６】
子の符号化サブルーチンに復帰したプロセスは、さらに符号化メインルーチンに復帰し、ステップＳ８で予測ｒｕｎの再設定と、優勢シンボルの再設定を行う。この例の場合、１次予測ははずれたが、２次予測で前半部が的中したので、ｒｕｎを８から４に変更し、優勢シンボルは引き続き“０”とする処理を施す。なお、予測ｒｕｎの設定は、２回続けてはずれたときに変更する等の設定にしても良い。
【００６７】
このような符号化プロセスによって、入力ビットである“００００１００１”が“１０１１０１０”の符号化系列となる。したがってこの場合、８ビットの入力系列が７ビットに圧縮されたことになる。
【００６８】
以上のような符号化プロセスを実行した場合の圧縮率と符号化時間を、図６に示す。この図６は、４種類のファイルについてこの符号化プロセスを使用した場合の圧縮率と符号化時間を示すと共に参考として、従来のＱＭコーダの圧縮率と符号化時間も示すものとなっている。図６に示されるようにこの符号化方法は、圧縮率がＱＭコーダと同レベルであり、符号化時間は大幅に短縮されたものとなっている。
【００６９】
なお、復号化プロセスについては、符号化プロセスと逆のアルゴリズムによって、入力されてくる符号語を復号している。すなわち、復号化プロセスも、復号化メインルーチンと復号化サブルーチンにより構成され、符号化と逆のアルゴリズムによって復号している。
【００７０】
このように、図４および図５に示す符号化プロセスおよびその符号化プロセスと逆のアルゴリズムを使用して行う復号化プロセスでは、圧縮率が従来のＱＭコーダ１０１と同レベルであり、一方、符号化時間や復号化時間は大幅に短縮されたものとなっている。しかし、この符号化プロセスおよび復号化プロセスにおいては、予測ビット数であるｒｕｎで定まるビット列を一度に符号化しているため、圧縮率を高めるために、ｒｕｎの最大値を大きく設定すると、ｒｕｎの個数分のビットを保存しておくためのバッファが大きくなるという問題が生じる。
【００７１】
この問題は、図２１に示す状態信号１０８をマルコフモデル化から得るような場合、そのバッファが非常に大きくなり、さらに大きな問題となる。すなわち、仮にｒｕｎをｎとしたとき、バッファとしてはｎビット分必要となり、さらにｍ状態のマルコフモデル化を行うと、バッファは各状態毎に必要となるため、ｎ×ｍビットの容量になる。この容量は、ｒｕｎの値が大きくなると無視できなくなる大きさとなる。
【００７２】
また、図４および図５に示す符号化プロセスおよびその符号化プロセスと逆のアルゴリズムを使用する復号化プロセスでは、その各処理時間は、ＱＭコーダに比べ大幅に短縮されているものの、符号化や復号化のサブルーチンを再帰的に呼び出して符号化や復号化を行っており、このサブルーチンの再帰的呼び出しのプロセスで時間を有するものとなっている。
【００７３】
このため、本発明では、図１から図５に示す符号化プロセスおよび復号化プロセスを生かしつつ、デコード用のバッファを小さくしたり、符号化や復号化の時間をさらに減少できるデータ符号化方法等を提案している。以下、その提案である本発明の実施の形態を、図７から図２０に基づき説明する。
【００７４】
まず、改良された本発明の第１の実施の形態のデータ符号化装置１を、図７に基づき説明する。
【００７５】
このデータ符号化装置１は、エントロピー符号化装置となっており、符号化すべき２値ビット列を入力するビット列分解部２と、各予測ビット長ｒｕｎ毎に符号化テーブルを内蔵する符号化テーブル部３と、符号化テーブル部３から入力される可変長符号を一旦バッファリングして固定のビット幅にならして出力するストリーム生成部４と、後述する状態遷移表を内蔵し、予測ビット長ｒｕｎ等を設定する符号化制御部５とから主に構成される。ここで、符号化テーブル部３と符号化制御部５とで符号化部を構成している。
【００７６】
ビット列分解部２は、符号化制御部５から予測ビット長ｒｕｎを指示する信号ＲＵＮと、優勢シンボルを指示する信号ＳＷを入力する。ここで、信号ＲＵＮは、１からｎ（ｎは最大予測ビット長）の値を取る。また、信号ＳＷは、その値が「０」のとき、“０”を優勢シンボルとし、「１」のとき、“１”を優勢シンボルとするが、その逆でも構わない。
【００７７】
さらに、ビット列分解部２は、デコードすべきビット数の信号ＤＥＣＮＵＭと、デコードすべきビットのパターンとなる信号パターンＤＥＣＰＡＴＮを符号化テーブル部３に出力する。信号ＤＥＣＮＵＭは、入力ビット列に、劣勢シンボルを含む４ビットのパターンが現れたとき、その４ビットとそれまで続いた優勢シンボル個数の合計数となる。なお、信号ＲＵＮが「４」未満のときは、信号ＲＵＮと同じ値が出力される。これは、この実施の形態では、区切りビット数ｐを「４」としているためである。
【００７８】
このようにして、ビット列分解部２は、入力したビット列が信号ＲＵＮで指定されたビット数分、すべて信号ＳＷで指定された優勢シンボルが続いたとき、すなわち、予測が的中したとき、信号ＤＥＣＮＵＭとして信号ＲＵＮの値を、信号パターンＤＥＣＰＡＴＮとして“０”を出力する。
【００７９】
符号化テーブル部３は、図８から図１１に示すような符号化テーブルを内蔵しており、どのテーブルを用いるかは、符号化制御部５からのテーブル番号指示信号ＴＡＢＬＥにより選択される。そして、この符号化テーブル部３は、ビット列分解部２からの信号ＤＥＣＮＵＭと信号パターンＤＥＣＰＡＴＮにより所定のテーブル内を検索し、所定の圧縮ビット列ＤＥＣＢＩＴとそのビット長ＬＥＮＧＴＨおよび予測の当たり外れを示すＦＡＩＬを出力する。なお、信号ＴＡＢＬＥは、信号ＲＵＮと１対１の関係を有するものとなっている。
【００８０】
図８の符号化テーブルは、テーブル番号は「０」で、信号ＲＵＮの値が「１」、すなわちｒｕｎが「１」の場合を示している。図８に示されるように、ｒｕｎが「１」のときは、２種類の信号となっている。すなわち、デコードすべきビット数は１個であり、信号パターンは“０”と“１”の２種類となる。この２種類の入力信号に対して、圧縮ビット列ＤＥＣＢＩＴと、そのビット長ＬＥＮＧＴＨと、予測の列外れを示すフラグＦＡＩＬの組み合わせからなる２種類の信号が対応する。例えば、信号ＤＥＣＮＵＭが「１」で、信号パターンＤＥＣＰＡＴＮが“０”の場合は、予測当たりとなり、フラグＦＡＩＬは当たり信号の「０」となり、圧縮ビット列ＤＥＣＢＩＴは“０”となり、ビット長ＬＥＮＧＴＨは「１」となる。
【００８１】
図９の符号化テーブルは、テーブル番号が「１」で、ｒｕｎが２の場合を示している。なお、各符号化テーブルの信号パターンＤＥＣＰＡＴＮと圧縮ビット列ＤＥＣＢＩＴは、共に右側から左側に入力してくる信号を示している。この図９の場合、その信号形態は４種類となる。デコードすべきビット数はすべて２個であり、そのときの信号パターンＤＥＣＰＡＴＮは“００”“１０”“０１”“１１”の４種類となる。信号パターンＤＥＣＰＡＴＮが“００”のときは、２つとも優勢シンボルのため予測が当たったこととなり、フラグＦＡＩＬは当たり信号の「０」となると共に、そのときの圧縮ビット列ＤＥＣＢＩＴは“０”となり、ビット長ＬＥＮＧＴＨは「１」となる。一方、信号パターンＤＥＣＰＡＴＮが“１０”のときは、劣勢シンボル“１”が入っており、予測が外れたこととなる。この結果、フラグＦＡＩＬは、外れ信号の「１」となり、圧縮ビット列ＤＥＣＢＩＴは、最初に“１”がくる。次に、“１０”の前半部が“０”であるため、予測が当たり圧縮ビット列ＤＥＣＢＩＴの２番目は“０”となり、“０１”となる。ここで、最初に予測外れとなっているので、後半部に“１”があることとなる。このため、圧縮ビット列ＤＥＣＢＩＴは、この“０１”がそのまま採用される。
【００８２】
信号パターンＤＥＣＰＡＴＮが“０１”のときは、劣勢シンボル“１”が入っており、予測が外れたこととなる。この結果、フラグＦＡＩＬは外れ信号の「１」となり、圧縮ビット列ＤＥＣＢＩＴは最初に“１”がくる。次に、“０１”の前半部が“１”であるため、予測がまたも外れたこととなり、圧縮ビット列ＤＥＣＢＩＴの２番目は“１”となる。信号パターンＤＥＣＰＡＴＮ“０１”の後半部は“０”であるため、予測当たりとなり、圧縮ビット列ＤＥＣＢＩＴの３番目は“０”となる。すなわち、信号パターンＤＥＣＰＡＴＮ“０１”に対応する圧縮ビット列ＤＥＣＢＩＴは、“０１１”となる。そして、ビット長ＬＥＮＧＴＨは「３」となる。同様にして、信号パターンＤＥＣＰＡＴＮ“１１”に対する圧縮ビット列ＤＥＣＢＩＴは、“１１１”となる。以上の９種類の信号の対応表が図９となっている。
【００８３】
同様にして、テーブル番号が「２」で、ｒｕｎが「４」の１６種類の信号の対応関係が図１０に示され、テーブル番号「３」でｒｕｎが「８」の計３１種類の信号の対応関係が図１１に示されている。なお、図１０のｒｕｎが「４」の場合では、ｒｕｎの値が区切りビット数ｐと同じとなるので、図８および図９と全く同じ関係のみのものとなるが、図１１のｒｕｎが「８」の場合は、区切りビット数ｐ（この実施の形態ではｐ＝４）より大きくなるため、少し変更された表となる。
【００８４】
次に、他の表とは若干異なるこの図１１の符号化テーブルの内容を説明する。この符号化テーブルでは、デコードすべき信号のビット数ＤＥＣＮＵＭは、「８」のものと「４」のものが存在する。「８」のものは、前半部がすべて“００００”のものであり、「４」のものは、ｒｕｎが「８」で前半部に劣勢シンボル“１”がきた場合のものを示している。
デコードすべき信号のビット数ＤＥＣＮＵＭ（以下単にＤＥＣＮＵＭとして示す）が「８」で、信号パターンＤＥＣＰＡＴＮ（以下単にＤＥＣＰＡＴＮとして示す）が“００００”のときは“００００００００”であることを示し、予測が当たったこととなり、フラグＦＡＩＬ（以下単にＦＡＩＬとして示す）は当たり信号の「０」となる。そして、圧縮ビット列ＤＥＣＢＩＴ（以下単にＤＥＣＢＩＴとして示す）は“０”で、ビット長ＬＥＮＧＴＨ（以下単にＬＥＮＧＴＨとして示す）は「１」となる。ＤＥＣＮＵＭが「８」で、ＤＥＣＰＡＴＮが“１０００”のときは、“１０００００００”であることを示し、予測が外れたこととなり、ＦＡＩＬは外れ信号の「１」となる。そして、ＤＥＣＢＩＴの１番目には“１”がくる。次に、前半部“００００”は予測当たりとなり、ＤＥＣＢＩＴの２番目には“０”がくる。このとき、後半部“１０００”に劣勢シンボル“１”が当然くることとなるため、後半部の４つの信号に対するＤＥＣＢＩＴは、特に発生しない。
【００８５】
後半部“１０００”の中の前半部“００”は、予測当たりであり、３番目のＤＥＣＢＩＴは“０”となる。このとき、後半部“１０”に劣勢シンボル“１”が当然くることとなるため、後半部の２つの信号に対するＤＥＣＢＩＴは特に発生しない。そして、この後半部“１０”の前半部“０”は予測当たりとなり、４番目のＤＥＣＢＩＴは“０”となる。こうなると、最後尾に“１”があることが当然となり、特にＤＥＣＢＩＴは発生しない。よって、ＤＥＣＰＡＴＮ“１０００”に対応するＤＥＣＢＩＴは“０００１”となる。そして、ＬＥＮＧＴＨは「４」となる。これが、図１１のテーブル番号「３」の表の上から２番目の状態に対応する。
【００８６】
このような関係は、図１１の符号化テーブルの第３番目から第１６番目にも当てはまる。一方、図１１のテーブル番号「３」の上から第１７番目から第３１番目までは、ＤＥＣＮＵＭが「４」となり、図１０のテーブル番号「２」のものに近似する。すなわち、図１０の符号化テーブルの第２番目から第１６番目のものに、ｒｕｎが「８」として見たときの予測外れの“１”がすべて最初に付加されたものと、図１１のＤＥＣＮＵＭ「４」のものとは同一となる。なお、符号化テーブル部３より出力される符号は、ＬＥＮＧＴＨによって指定される可変長符号になっている。
【００８７】
ストリーム生成部４は、入力の可変長符号を一旦バッファリングして、出力の伝送路で定められた固定のビット幅にならして出力するものとなっている。
【００８８】
符号化制御部５の基本動作は、信号ＲＵＮ（以下単にＲＵＮという）によってビット列分解部２にビットの切り出し方法を指示し、同時に信号ＴＡＢＬＥ（以下単にＴＡＢＬＥという）により符号化テーブルの選択を行うものとなる。そして、符号化テーブル部３からフィードバックされるＦＡＩＬにより、次の符号化のためのＲＵＮとＴＡＢＬＥを設定する。なお、この実施の形態では、区切りビット数ｐを利用した段階的な符号化を導入したため、ある予測ビット長ｒｕｎで符号化した際、必要に応じて途中の段階であることをこの符号化制御部５は記憶する必要がある。
【００８９】
この符号化制御部５の具体的な動作は、図１２に示す状態遷移表に基づくものとなっている。この状態遷移表の動作について、予測当たりが続く場合を例にして説明する。ここで、初期状態は、ＳＳ１となっている。まず、状態ＳＳ１のとき、ｒｕｎが「１」で、ＴＡＢＬＥは「０」である。このため、図８に示すテーブル番号「０」の符号化テーブルが使用される。そして、予測が当たる場合は、優勢シンボルが“０”が続くことであるため、入力されるビット列入力からそのＤＥＣＮＵＭの数である「１」個分の“０”のみを符号化テーブル部３に送り、テーブル番号「０」のテーブル（＝図８の表）に基づいて、ＦＡＩＬ「０」と、ＤＥＣＢＩＴ“０”と、ＬＥＮＧＴＨ「１」とが出力される。そして、そのＦＡＩＬ「０」が符号化制御部５に伝えられる。
【００９０】
符号化制御部５は、図１２の状態遷移表に基づき、ＳＳ１中のＦＡＩＬ「０」となるものを見つけ、次の状態として状態ＳＳ０を選択する（図１２の状態遷移表の上から３番目）。このとき、信号ＳＷは“０”となるので、シンボルの逆転はなく、そのまま“０”が優勢シンボルとなる。状態ＳＳ０においても、同様な動作の結果、状態遷移表の第１番目が選択され、状態ＳＳ３が次の状態となる。これによって、２回予測が当たったこととなる。
【００９１】
この状態遷移表では、２回予測が当たると、ｒｕｎが２倍になる。すなわち、上から７番目および８番の状態ＳＳ３となり、ｒｕｎが「２」となる。このように予測が当たり続けると、すなわち、入力ビット列がこの場合であると“０”であり続けると、ｒｕｎが「２」「２」「４」「４」「８」「８」と増えていく。また、一方、予測が外れ続けるときは、２回毎、同一ｒｕｎで行い小さくなっていく。すなわち、ｒｕｎが「８」「８」「６」「６」「４」「４」「２」「２」と小さくなっていく。そして、ｒｕｎが「１」のときに、予測が外れると、信号ＳＷは反転する。
【００９２】
このような状態遷移表の動作のルールをまとめると、次のとおりとなる。
【００９３】
(1)同一の予測ビット長ｒｕｎでの予測が２回連続して的中したとき、予測ビット長ｒｕｎを２倍する。
【００９４】
(2)同一の予測ビット長ｒｕｎでの予測が２回連続して外れたとき、予測ビット長ｒｕｎを１／２倍する。
【００９５】
(3)予測ビット長ｒｕｎが４以下のときは、１回で符号化を実行する。
【００９６】
(4)予測ビット長ｒｕｎが８で、ＤＥＣＮＵＭ＝４のときは、２回に分けて符号化を実行する。
【００９７】
(5)このときは、状態ＳＳ５に遷移して、予測ビット長ｒｕｎを「４」で、後半のビットを符号化する。
【００９８】
なお、信号ＳＷの反転とは、この値が１のとき、信号ＳＷを反転させるという意味である。
【００９９】
なお、図１２で示す状態遷移表は、ｒｕｎが「８」までしか示していないが、この実施の形態では、ｒｕｎを最大「１６」としているので、ｒｕｎ「１６」のものも、図示していないが同様に作成されている。また、状態遷移表としては、ｒｕｎが「３２」以上のものにしても良い。さらに、当たりや外れが２回続いたらｒｕｎを増加させたり減少させたりするのではなく、１回毎に変えたり３回以上の数としたり、種々のパターンを採用することができる。また、このような符号化テーブルとしては、ビット数の少ないものだけを用意し、大きなビット数、例えば、１６ビット以上の場合は符号化テーブルを持たないようにすることもできる。
【０１００】
次に、以上のような構成を有するデータ符号化装置１の動作を具体例を使用して説明する。
【０１０１】
例えば、予測が当たり続けて、ｒｕｎ＝１６となった状態で、“０００００１００００１１１１００………」のような形で入力してきたビット列を符号化する場合、４ビットの区切りビット数ｐで区切り、まず、最初は“０００００１００”までを符号化することとなる。これは、劣勢シンボル“１”が第１番目の区切りビット数（＝最初の４ビット）部分にはなく、第２番目（＝次の４ビット）に出てくるためである。そして、次に“００１１”を、そして最後に“１１００”を符号化することとなる。
【０１０２】
このため、ビット列分解部２から出力されるＤＥＣＮＵＭは、「８」「４」「４」となる。一方、ＤＥＣＰＡＴＮは、“０１００”“００１１”“１１００”（ここでは、いずれのパターンも左の数値から入力されてくるとする）となる。このような条件において、ＤＥＣＢＩＴは、まず、ｒｕｎ＝１６としたときの予測外れの“１”がくる。次に、“０００００１００”は、ＲＵＮ「８」、ＴＡＢＬＥ「３」、ＤＥＣＮＵＭ「８」のため、図１１に示す上から５番目に相当するものであり（図１１に示す各数値の場合、それぞれ右端側から入力されてくることに注意）、ＤＥＣＢＩＴは“１０１００”となる。このため、先の“１”と合わせられた“１１０１００”（この数値は左端から順に出力）のＤＥＣＢＩＴとＬＥＮＧＴＨ「６」が符号化テーブル部３からストリーム生成部４に出力される。
【０１０３】
一方、符号化制御部５内の状態遷移表でいえば、状態ＳＳ６でＤＥＣＮＵＭ「８」のとき、ＦＡＩＬ「１」となったこととなり、次の状態は状態ＳＳ７となる。そして、次の“００１１”は、ｒｕｎ＝８でＤＥＣＮＵＭ「４」なので、テーブル番号「３」のテーブル（＝図１１の符号化テーブル）が採用され、その上から１９番目のものが該当し、“１１０１１”のＤＥＣＮＵＭとＬＥＮＧＴＨ「５」が符号テーブル３から出力される。
【０１０４】
最後の“１１００”については、前の状態が状態ＳＳ７のｒｕｎ「８」、ＤＥＣＮＵＭ「４」で、ＦＡＩＬ「１」となったため（図１２の１番下の状態）、状態ＳＳ５が採用される。このため、ｒｕｎ「４」、ＴＡＢＬＥ「２」となり、図１０に示すテーブル番号「２」の符号化テーブルが使用される。そして、このテーブル番号「２」のテーブルにおいて、下から４番目が該当し“１１１１０”のＤＥＣＢＩＴと、ＬＥＮＧＴＨ「５」が符号化テーブル３からストリーム生成部４に出力される。なお、状態ＳＳ５で、ＦＡＩＬは「１」となるので、次は状態ＳＳ２に移る。すなわち、次の入力ビット列に対しては、ｒｕｎ＝２である図９の符号化テーブルが使用されることとなる。
【０１０５】
以上をまとめると、入力ビット列“０００００１００００１１１１００”が“１１０１００”，“１１０１１”，“１１１１０”の３つの圧縮ビット列として符号化されたこととなる。なお、入力ビット列や３つの圧縮ビット列は、共に先頭側から入力され、出力されていくものとする。この点、図８から図１１の各符号化テーブルとは異なることに注意する必要がある。すなわち、各符号化テーブルでは、その表示の各値は、その表示の右端から順に入力し、出力するものとなっている。
【０１０６】
そして、ｒｕｎは、当初「１６」であったのが、この４ビットの区切りビットｐで段階的に符号化していく中で、ｒｕｎは「２」となり、次の入力ビット列に対しては、「２」の予測ビット長ｒｕｎで符号化されることとなる。
【０１０７】
一方、先に示した本発明の元となる基本的プロセスで、同じ入力ビット列“０００００１００００１１１１００”を符号化すると、まずｒｕｎ＝１６での予測外れの“１”、次に前半の８ビットを注目し、２番目に予測外れの“１”がきて、さらに前半の４ビット“００００”に注目し、予測当たりの“０”が３番目にくる。すると、後半部の４ビット“０１００”に劣勢シンボルがくるとは確実なので、すぐに２つに分割し、前半の２ビット“０１”に注目する。このため、予測外れの“１”が４番目にくる。次は、さらにこれを２分割し、前半の“０”に注目し、５番目に予測当たりの“０”がくる。すると、後半の“１”は劣勢シンボルが確実なので、すぐに後半の２ビット“００”に注目し、予測当たりの“０”が６番目にくる。
【０１０８】
以上の前半８ビットの符号化をまとめると、“１１０１００”となる。これは、本発明による符号化ビットと全く同じとなる。続く８ビットも同様な方法で進めていくと、これらも本発明による符号化ビットと同一となる。本発明の元となる基本的プロセスと本発明とが異なる点は、符号化されたビット自体ではなく、▲１▼符号化の区切り方、▲２▼予測ビット表の変更の仕方、▲３▼符号化テーブルの活用の３点にある。
【０１０９】
すなわち、改良した本発明では、入力ビット列に対しｒｕｎより小さい区切りビット数ｐ（この実施の形態ではｐ＝４）で区切り、劣勢シンボルが存在する区切り部分までで一旦符号化を区切るようにしている。先の例では、１６ビットの入力ビット列が３つに区切られて符号化されている。また、本発明では、次の入力ビット列に対し予測ビット長ｒｕｎは「２」となるのに対し、基本的プロセスの考え方では、予測外れは１回であり、ｒｕｎは「１６」のままとなる。さらに、本発明の基本的プロセスの考え方では、符号化サブルーチンを再帰的に呼び出して符号化しているが、改良した本発明では、符号化テーブル、具体的には予測ビット長ｒｕｎ毎に符号化テーブルを用いている。
【０１１０】
以上の３つの点は、それらが同時に利用されることによって大きな効果を生ずるが、それぞれ単独で使用されても十分効果を有する。例えば、第１の点の段階的に符号化する方法を採用すると、バッファ、例えば、ビット列分解部２やストリーム生成部４内の各バッファを小さくできるばかりか後述するマルコフモデル化によって圧縮ビット列を得ようとするときにそのバッファの容量を減少させることができる。
【０１１１】
第２の点の予測ビット長ｒｕｎの変更については、入力ビット列が途中からがらっとその性質が変わるような場合に特に有効となる。先の例では、予測が当たり続けてｒｕｎ＝１６となったのに対し、次に性質ががらっと変わったビット列、すなわち劣勢シンボルを多く含む“０００００１００００１１１１００”がきたとき、改良された本発明では、その性質に合わせｒｕｎは「２」となり、続く入力ビット列の性質に合う確率が高いものとなり、圧縮率が高くなる。しかし、本発明の基本的プロセスで処理した場合、ｒｕｎは「１６」のままであり、次の入力ビット列の性質にそぐわない確率の高いものとなる。なお、圧縮率の向上は、具体的には０．５％から数％程度であるが、各プログラムソフト等が大容量化している現在では、このようなわずかな数値の向上効果も無視し得ないものとなっている。
【０１１２】
第３の点の符号化テーブルについては、サブルーチンの再帰的呼び出しによる符号化に比べ、符号化テーブルのためのメモリ容量は若干増えるものの、符号化速度が極めて速くなる。
【０１１３】
次に、本発明の第１の実施の形態のデータ復号化装置１０について、図１３に基づき説明する。
【０１１４】
このデータ復号化装置１０は、符号化された信号のストリームを入力するストリーム切り出し部１１と、予測ビット長ｒｕｎに応じた複数の復号テーブルを内蔵する復号テーブル部１２と、復号されたビットをストアし、所定のシンボルを出力するデコードバッファ部１３と、データ符号化装置１の符号化制御部５内の状態遷移表と同じ状態遷移表を有する復号制御部１４とから主に構成されている。なお、復号テーブル部１２と復号制御部１４とで復号化部を構成している。
【０１１５】
ストリーム切り出し部１１は、復号テーブル部１２から、復号したビット数を後述するＬＥＮＧＴＨにより指示されるので、その値に基づき、復号済みビットを廃棄して、未復号ビットの先頭が、符号化されたデータとなる復号予定の符号語信号ＣＯＤＥ（以下単にＣＯＤＥという）の最下位ビット（または最上位）に来るようにストリームを切り出す。なお、ＬＥＮＧＴＨを評価して、復号済みビットを廃棄するのは、デコードバッファ部１３から廃棄指示ＤＥＣＲＥＱ（以下単にＤＥＣＲＥＱという）があったときのみである。また、ＣＯＤＥは８ビット単位で送信される。
【０１１６】
復号テーブル部１２は、図１４から図１７に示す各復号テーブルを内蔵し、復号制御部１４が出力するテーブル番号指示信号ＴＡＢＬＥ（以下単にＴＡＢＬＥという）によりそれらを切り替えて使用する。そして、復号テーブル部１２は、次の信号を出力する。
【０１１７】
(1)何ビット復号したかを示す信号ＬＥＮＧＴＨ（以下単にＬＥＮＧＴＨという）で、データ符号化装置１におけるＬＥＮＧＴＨに相当するもの
(2)予測の当たり外れを示す信号ＦＡＩＬ（以下単にＦＡＩＬという）で、データ符号化装置１におけるＦＡＩＬに相当するもの
(3)復号したビット・パターン信号ＤＥＣＰＡＴＮ（以下単にＤＥＣＰＡＴＮという）で、データ符号化装置１におけるＤＥＣＰＡＴＮに相当するもの
(4)復号結果が何ビットかを示す信号ＤＥＣＮＵＭ（以下単にＤＥＣＮＵＭという）で、データ符号化装置１におけるＤＥＣＮＵＭに相当するもの
図１４に示すｒｕｎ＝１の復号テーブルは、ＣＯＤＥが“０”“１”の２種類に対応する各出力が記載されている。この復号テーブルは、図８のｒｕｎ＝１の符号化テーブルに相当するもので、符号化テーブル中のＤＥＣＢＩＴに相当するものが、この復号テーブルではＣＯＤＥとなっている。図１５に示すｒｕｎ＝２の復号テーブルは、同様に図９のｒｕｎ＝２の符号化テーブルに相当するものとなっている。また、図１６に示すｒｕｎ＝４の復号テーブルでは、図１０のｒｕｎ＝４の符号化テーブルに相当し、図１７に示すｒｕｎ＝８の復号テーブルは、図１１のｒｕｎ＝８の符号化テーブルに相当している。なお、各復号テーブルにおける各数値も、符号化テーブルと同様に、各数値の右端側から入力し、出力する表示となっている。
【０１１８】
デコードバッファ部１３は、４ビット（この実施例の場合）以下のＤＥＣＰＡＴＮとＤＥＣＮＵＭを直接的にストアし、それぞれデコードバッファ部１３内のＰＡＴＮＲＥＧ（以下単にＰＡＴＮＲＥＧという）とナンバーレジスタＮＵＭＲＥＧ（以下単にＮＵＭＲＥＧという）にストアする。そして、デコードバッファ部１３の出力がｑビット幅の場合、デコードバッファ部１３は、１回デコード・データを出力する度にストアしたＮＵＭＲＥＧからｑを減じる。そして、ＮＵＭＲＥＧがｑより小さくなったら、ＤＥＣＲＥＱをアクティブにして、新たなデータのデコード要求を発する。また、ＮＵＭＲＥＧが５以上のときは、信号ＳＷで定まる優勢シンボルをデコード出力として出力する。一方、ＮＵＭＲＥＧが４以下になったら、ＰＡＴＲＥＧの値を出力する。
【０１１９】
例えば、図１７の上から５番目のＣＯＤＥ“００１０１”が復号テーブル部１２に入力された場合、ＤＥＣＮＵＭ＝８、ＤＥＣＰＡＴＮ＝“００１０”がデコードバッファ部１３に入力されてくる。このとき、信号ＳＷが「０」となっていたとし、出力を２ビット単位（これはｑ＝２に相当）で行うとした場合、最初の２回の出力は優勢シンボルを出力すればよい。この場合ＳＷ＝０なので、優勢シンボルは“０”である。したがって、“００００”を出力する。この４ビットを出力した時点で、ＮＵＭＲＥＧは４（＝８−４）になっている。そこで、次のサイクルは、ＰＡＴＮＲＥＧの値を、順に出力する。すなわち、“０１００”をこの表示の左端側から出力する。
【０１２０】
復号制御部１４は、符号化制御部５と同じ状態遷移表を保有している。そして、状態の初期値は、ＳＳ１であり、ＦＡＩＬとＤＥＣＮＵＭにより、次の遷移先が決定され、ＤＥＣＲＥＱがアクティブのとき、その遷移先へ遷移する。
【０１２１】
以上のように構成されるデータ復号化装置１０は、先に示したデータ符号化装置１と逆のアルゴリズムによって動作する。なお、このデータ復号化装置１０は、デコードバッファ部１３の出力状態によって制御されるものとなっている。すなわち、デコードバッファ部１３のＮＵＭＲＥＧが出力ビット幅ｑより小さくなると、ＤＥＣＲＥＱがストリーム切り出し部１１と復号制御部１４へ出力される。ストリーム切り出し部１１は、そのＤＥＣＲＥＱにより復号済みビットをそのＬＥＮＧＴＨ分廃棄する
先の例のｒｕｎ＝８でＣＯＤＥ“００１０１”の場合、ＮＵＭＲＥＧが「８」から「４」へ、「４」から「２」、「２」から「０」へと下がる。この「２」から「０」へ下がったときに、ＤＥＣＲＥＱが発生する。そして、ＬＥＮＧＴＨが「５」であるので、ＣＯＤＥから復号済みの５ビットを廃棄する。このため、ストリーム切り出し部１１内のＣＯＤＥには、未復号ビットが最下位または最上位にきて、次の復号に備える。一方、復号制御部１４では、ｒｕｎ＝８、ＤＥＣＮＵＭ＝８で、ＦＡＩＬ＝１なので、状態ＳＳ７へ遷移する。このため、ｒｕｎ＝８に相当するＴＡＢＬＥ＝３を復号テーブル部１２に向けて出力する。
【０１２２】
この結果、復号テーブル部１２は、図１７のテーブル番号「３」であるｒｕｎ＝８の復号テーブルを準備する。そして、入力してくるＣＯＤＥからＬＥＮＧＴＨ、ＤＥＣＮＵＭ、ＤＥＣＰＡＴＮおよびＦＡＩＬが確定し、出力される。例えば、そのＣＯＤＥの最初が“０”であれば、ＣＯＤＥ“０”であることが確定し、ＬＥＮＧＴＨ＝１、ＤＥＣＮＵＭ＝８、ＤＥＣＰＡＴＮ＝“００００”、ＦＡＩＬ＝「０」を出力する。一方、ＣＯＤＥが“０１０１１”の場合、ＣＯＤＥの最初が“１”であるので、まだ確定せず、次の“１”でも、３番目の“０”でも、４番目の“１”でも確定しない。しかし、５番目の“０”が入った段階で“０１０１１”であることが確定する。この確定によって、ＬＥＮＧＴＨ＝５、ＤＥＣＮＵＭ＝４、ＤＥＣＰＡＴＮ＝“０１００”、ＦＡＩＬ＝１がそれぞれ出力される。このようにして、順次、復号されていく。
【０１２３】
このデータ復号化装置１０は、データ符号化装置１と同様に、本発明の基本的プロセスに基づく復号に比べると、▲１▼段階的な復号によるバッファ容量の減少化▲２▼信号の性質にあった予測ビット長ｒｕｎの変更▲３▼復号テーブルによる復号速度の向上という各種の有利な効果を有するものとなる。
【０１２４】
次に、以上のようなデータ符号化装置１やデータ復号化装置１０をマルコフモデル化のような条件付き符号化や条件付き復号化を行う場合に適用した、本発明の第２の実施の形態について説明する。
【０１２５】
まず、条件付き符号化を行うためのデータ符号化装置を図１８に基づいて説明する。なお、説明に当たり、データ符号装置１と同一部材および同一信号には、同一符号および同一名称を付し、説明を省略または簡略化する。
【０１２６】
このデータ符号化装置２０は、ビット列分解部２と、符号化テーブル部３と、ストリーム生成部４と、データ符号化装置１の符号化制御部５内の状態遷移表と同じ表を有する状態遷移部２１と、マルコフモデル等により生成される符号化条件を入力し、その条件毎に現在の状態の信号を状態遷移部２１に与え、符号化後に次の状態の信号を入力し、その符号化条件の状態を記憶しておく状態記憶部２２とから主に構成される。すなわち、条件付き符号化を行うためには、データ符号化装置１の符号化制御部５の状態を条件毎に管理することになる。
【０１２７】
したがって、マルコフモデルのような条件付き符号化を行うときは、図１８に示す構成とし、条件をインデックスとして、状態記憶部２２から該当する状態を取り出し、その状態を図１２に示した状態遷移表により遷移させ、次の状態を再び状態記憶部２２の元の番地にストアしておけば、条件毎に、状態を管理できることとなる。したがって、予測ビット長ｒｕｎ等のパラメータも条件毎に個別に設定できることとなる。なお、マルコフモデル化する場合、ビット列分解部２には、各符号化条件毎に切り換えるバッファが複数必要となるが、この実施の形態では、予測ビット長ｒｕｎの数ではなく、より小さい固定の区切りビット数ｐで段階的に符号化しているので、そのバッファの容量はそれ程大きくならず、実用面で適したものとなっている。
【０１２８】
次に、条件付き復号化を行うためのデータ復号化装置３０を図１９に基づいて説明する。なお、説明に当たり、データ復号化装置１０と同一部材および同一信号には、同一符号および同一名称を付し、説明を省略または簡略化する。
【０１２９】
このデータ復号化装置３０は、ストーム切り出し部１１と、復号テーブル部１２と、デコードバッファ部１３と、データ復号化装置１０の復号制御部１４内の状態遷移表と同じ表を有する状態遷移部３１と、マルコフモデル等により生成される復号条件を入力し、その条件毎に現在の状態の信号を状態遷移部３１に与え、復号後に次の状態の信号を入力し、その復号条件の状態を記憶しておく状態記憶部３２とから主に構成される。
【０１３０】
なお、デコードバッファ部１３は、復号条件が入力し、その条件毎に個別に管理されるものとなっている。このため、マルコフモデルのような条件付き復号化の場合、バッファとして非常に大きなものが必要になる。しかし、本実施の形態のデータ復号化装置３０では、先に示したように段階的な復号を行うので、各バッファは小さいものでも十分対応でき、マルコフモデルのような条件付きの復号化でもデコードバッファ部１３はそれ程大きな容量を必要としなくなる。
【０１３１】
このデータ復号化装置３０においては、状態遷移を条件毎に個別に管理する点で、データ符号化装置２０と同様である。ただし、このデータ復号化装置３０の場合は、上述したようにさらにデコードバッファ部１３も個別に管理しなければならない。このため、デコードバッファ部１３は、ＮＵＭＲＥＧ、ＰＡＴＮＲＥＧに相当するレジスタを有り得る条件数分内蔵し、復号条件によって切り換えるものとなっている。
【０１３２】
以上のような、本発明の第２の実施の形態の、条件付き符号化および復号化を行うデータ符号化装置２０および符号化方法ならびにデータ復号化装置３０および復号化方法は、先に示した第１の実施の形態のデータ符号化装置１やデータ復号化装置１０の場合と同様な効果を有する。加えて、マルコフモデルのような条件付きの符号化や復号化が行え、圧縮率が高くなり、復号効率も良くなる。しかも、マルコフモデル化等の場合の大きな障害となるバッファ容量の大幅な増大という問題を防止でき、実用化に適したものとなる。
【０１３３】
なお、上述の各実施の形態は、本発明の好適な実施の形態の例であるが、これに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々変形実施可能である。例えば、予測が当たったときに出力する符号語としては“０”ではなく“１”とし、予測がはずれたときは“１”ではなく０”としたり、予測が当たったときは優勢シンボルを出力し、予測がはずれたときは劣勢シンボルを出力するようにしても良い。
【０１３４】
また、新減少予測ビット数を元の予測ビット数の１／２ではなく、１／３や１／４等にしたり、元の予測ビット数から所定数を差し引いた数等とすることができる。一方、新増加予測ビット数も元の予測ビット数の２倍ではなく、３倍や４倍等にしたり、元の予測ビット数に所定数を加えた数等とすることができる。なお、新増加予測ビット数を無制限とせず、所定の値、例えば２５６ビット等、２の倍数を最大値とするようにしても良い。また、新減少予測ビット数の最小値としては１ではなく、２や３等他の数値としても良い。
【０１３５】
また、データ符号化装置１，２０やデータ復号化装置１０，３０をハード構成ではなく、ソフトウェアで対応するようにしても良い。すなわち、本発明のデータ符号化方法やデータ復号化方法をすべてソフトウェアで対応したり、例えば、データ符号化方法はソフトウェアで対応し、データ復号化方法は、先に示したデータ復号化装置１０，３０等のハードで対応するようにしても良い。
【０１３６】
また、本発明はいわば予測ランレングス符号化方式とも言えるものであるが、この予測ランレングス符号化方式は、２値の系列データ以外に多値系列についても適用することができる。すなわち、多値系列のデータを工夫によって２値のビット列として扱うようにすれば本発明の予測ランレングス符号化方式および復号化方式を適用することができる。例えば、ビット・プレーンに分けて、各ビット・プレーンをこの予測ランレングス符号化方式で符号化するようにしても良い。また、最上位ビットからプレーン毎にこの予測ランレングス符号化方式にて符号化を行い、“１”が出現した時点で続く下位ビットを直接ストリームに出力するようにしても良い。
【０１３７】
また、この予測ランレングス符号化方式を多値系列に適用する方式としては、ビット・プレーンではなくレベル・プレーン、例えばシンボルが８ビットの場合、２５６のレベル・プレーンに分けて行う方法もある。例えば、入力シンボルをグループに分け、グループ番号をこの予測ランレングス符号化方式で符号化する方法が考えられる。具体的には、例えば、入力シンボルを図２０に示すように、グループ分けし、まず入力シンボルがグループ番号０か０以外かを示す判定ビットをこの予測ランレングス符号化方式で符号化する。もし入力シンボルが０ならこのシンボルの符号化を完了するが、そうでない場合はさらにグループ番号が１か１以外かを示す判定ビットをこの予測ランレングス符号化方式で符号化する。このようにして、グループ番号が確定するまで、判定ビットを予測ランレングス符号化方式で符号化し、確定したグループ番号が２以上の場合は、必要とする付加ビットを直接ストリームに出力する。この方法は、グループ番号が確定した時点で、上位の判定ビットの符号化を行わないので、処理速度が向上する。
【０１３８】
以上のような、多値系列への本発明の適用は、データ符号化の場合に限らず当然のことながら、データ復号化の場合にも同様なアルゴリズムによって適用することができる。
【０１３９】
【発明の効果】
以上説明したように、本発明のデータ符号化方法およびデータ符号化装置では、ＱＭコーダ並みの符号化効率が得られる一方、符号化速度がＱＭコーダに比べ非常に速いものとなる。このため、現在使用されている各種の２値ビット列圧縮方式の中で最も実用性の面で優れたものとなる。しかも、段階的な符号化を行う場合は、バッファの容量を減少させることができ、マルコフモデル化等へ条件付き符号化に際し特に有利となる。また、符号化テーブル使用の場合は、符号化の速度を向上させることができる。
【０１４０】
また、本発明のデータ復号化方法およびデータ復号化装置では、同様に、ＱＭコーダ並みの伸長効率が得られる一方、復号化速度がＱＭコーダに比べ非常に速いものとなる。このため、現在利用されている各種の２値ビット列復号方式の中で、実用上最も優れたものとなり、利便性が向上する。しかも、段階的な復号化を採用した場合は、バッファの容量を減少させることができ、マルコフモデル化等の条件付き復号化に際し特に有利となる。また、復号テーブル使用の場合は、復号化の速度を向上させることができる。
【図面の簡単な説明】
【図１】本発明の基本原理となるアルゴリズムの概要を説明するための図で、注目系列と予測ビット数ｒｕｎとの関係を示す図である。
【図２】本発明の基本原理となるアルゴリズムの概要を説明するための図で、図１の注目系列を分割した状態を示す図である。
【図３】本発明の基本原理となるアルゴリズムの概要を説明するための図で、図２の前半部注目系列をさらに分割した状態を示す図である。
【図４】本発明の前提となる基本的な符号化プロセスを説明するためのフローチャートで、符号化メインルーチンを示すフローチャートである。
【図５】本発明の前提となる基本的な符号化プロセスを説明するためのフローチャートで、符号化サブルーチンを示すフローチャートである。
【図６】本発明の前提となる基本的なデータ符号化方法による圧縮率と符号化時間を示す図である。
【図７】本発明のデータ符号化装置の第１の実施の形態の構成を示すブロック図である。
【図８】図７のデータ符号化装置の符号化テーブル部内の符号化テーブルを示す図で、予測ビット長が「１」の場合のテーブルを示す図である。
【図９】図７のデータ符号化装置の符号化テーブル部内の符号化テーブルを示す図で、予測ビット長が「２」の場合のテーブルを示す図である。
【図１０】図７のデータ符号化装置の符号化テーブル部内の符号化テーブルを示す図で、予測ビット長が「４」の場合のテーブルを示す図である。
【図１１】図７のデータ符号化装置の符号化テーブル部内の符号化テーブルを示す図で、予測ビット長が「８」の場合のテーブルを示す図である。
【図１２】図７のデータ符号化装置の符号化制御部内の状態遷移表を示す図である。
【図１３】本発明のデータ復号化装置の第１の実施の形態の構成を示すブロック図である。
【図１４】図１３のデータ復号化装置の復号テーブル部内の復号テーブルを示す図で、予測ビット長が「１」の場合のテーブルを示す図である。
【図１５】図１３のデータ復号化装置の復号テーブル部内の復号テーブルを示す図で、予測ビット長が「２」の場合のテーブルを示す図である。
【図１６】図１３のデータ復号化装置の復号テーブル部内の復号テーブルを示す図で、予測ビット長が「４」の場合のテーブルを示す図である。
【図１７】図１３のデータ復号化装置の復号テーブル部内の復号テーブルを示す図で、予測ビット長が「８」の場合のテーブルを示す図である。
【図１８】本発明のデータ符号化装置の第２の実施の形態の構成を示すブロック図である。
【図１９】本発明のデータ復号化装置の第２の実施の形態の構成を示すブロック図である。
【図２０】本発明のアルゴリズムを多値系列データに適用する場合の１列を説明するための図で、入力シンボルを複数のグループに分けた状態を示す図である。
【図２１】従来の算術符号型のエントロピー符号器であるＱＭコーダの構成を示す図である。
【図２２】図２１のＱＭコーダの動作を示すフローチャートである。
【符号の説明】
１  データ符号化装置
２  ビット列分解部
３  符号化テーブル部（符号化部の一部）
４  ストリーム生成部
５  符号化制御部（符号化部の一部）
１０  データ復号化装置
１１  ストリーム切り出し部
１２  復号テーブル部（復号化部の一部）
１３  デコードバッファ部
１４  復号制御部（復号化部の一部）
ＣＯＤＥ  復号予定の符号語信号（符号化されたデータ）
ＤＥＣＢＩＴ  圧縮ビット列を示す信号
ＤＥＣＮＵＭ  デコードすべきビット数を示す信号
ＤＥＣＰＡＴＮ  デコードすべきパターンを示す信号
ＦＡＩＬ  予測の当たり外れを示す信号（フラグ）
ＬＥＮＧＴＨ  圧縮ビット列のビット長および復号されたビット長を示す信号
ＲＵＮ  予測ビット長を指示する信号
ＳＷ  優勢シンボルを指示する信号
ＴＡＢＬＥ  符号化テーブルや復号テーブルのテーブル番号を指定する信号
【図１】
0003648944.tif 000002
【図２】
0003648944.tif 000003
【図３】
0003648944.tif 000004
【図４】
0003648944.tif 000005
【図５】
0003648944.tif 000006
【図６】
0003648944.tif 000007
【図７】
0003648944.tif 000008
【図８】
0003648944.tif 000009
【図９】
0003648944.tif 000010
【図１０】
0003648944.tif 000011
【図１１】
0003648944.tif 000012
【図１２】
0003648944.tif 000013
【図１３】
0003648944.tif 000014
【図１４】
0003648944.tif 000015
【図１５】
0003648944.tif 000016
【図１６】
0003648944.tif 000017
【図１７】
0003648944.tif 000018
【図１８】
0003648944.tif 000019
【図１９】
0003648944.tif 000020
【図２０】
0003648944.tif 000021
【図２１】
0003648944.tif 000022
【図２２】
0003648944.tif 000023