(57)【要約】      （修正有）【課題】文字データや画像データ等の各種のデータの圧縮装置、及び、復元装置に関し、高速で且つ圧縮効率の高いデータ圧縮、及び復元装置を提供する。【解決手段】出現頻度の多い順に文字を異なるビット数で表すとともに、区別したテーブルに登録して特定しやすくする事により、高速に且つ高効率に圧縮復元することを可能とした、出現頻度に応じて可変長符号化する確率統計型符号化データの圧縮装置及び復元装置を提供する。【選択図】図１
2010136417.tif 000002
【特許請求の範囲】
【請求項１】
出現頻度に応じて可変長符号化する確率統計型符号化のデータ圧縮装置において、
出現頻度が最も多いデータの抽出を行う情報を第1のテーブルと第2のテーブルに2ビットで記録し、次に多い2個のデータの抽出を行う情報を第1乃至第3のテーブル及び第5のテーブルに4ビットで記録し、更に次に多い4個のデータの抽出を行う情報を第1乃至第4のテーブル及び第6のテーブルに6ビットで記録し、更に次に多い16個のデータの抽出を行う情報を第1乃至第4のテーブル及び第7のテーブルに8ビットで記録し、その他のデータを第1及び第8のテーブルに9ビットで記録する手段と、
前記出現頻度の順位に対応するデータコードをコードテーブルに記録する手段と、
を有することを特徴とするデータ圧縮装置。
【請求項２】
出現頻度が最も多いデータとその他のデータのみである場合、圧縮データであるか否か
の情報を前記第1のテーブルに記録し、前記コードテーブルには前記出現頻度が最も多い
データのコードが記録されていることを特徴とする請求項1記載のデータ圧縮装置。
【請求項３】
出現頻度に応じて可変長符号化された確率統計型符号化データの復元装置において、
第1のテーブルを参照して圧縮データであるか否かの情報を取得し、圧縮データではない場合第8のテーブルに記録されたコードデータを読み出し、圧縮データであれば第2の
テーブルを参照して出現頻度が最も多いデータであるか否かの情報を取得し、出現頻度が
最も多いデータであれば、コードテーブルから対応する出現頻度のコードデータを読み出
す手段と、
前記出現頻度が最も多いデータではない場合、更に第3のテーブルを参照し、出現頻度
が次に多い2個のデータであるか否かの情報を取得し、出現頻度が次に多い2個のデータ
であれば、更に第5のテーブルを参照し、出現頻度が2番目に多いデータであるか3番目
に多いデータであるかの情報を取得し、前記コードテーブルから対応する出現頻度のコー
ドデータを読み出す手段と、
前記出現頻度が次に多い2個のデータではない場合、更に第4のテーブルを参照し、出
現頻度が次に多い4個のデータであるか否かの情報を取得し、出現頻度が次に多い4個の
データであれば、更に第6のテーブルを参照し、出現頻度が4番目乃至7番目に多いデー
タであるかの情報を取得し、前記コードテーブルから対応する出現頻度のコードデータを
読み出す手段と、
前記出現頻度が次に多い4個のデータではない場合、更に第7のテーブルを参照し、出
現頻度が次に多い16個のデータの情報を取得し、前記コードテーブルから対応する出現
頻度のコードデータを読み出す手段と、
を有することを特徴とするデータ復元装置。
【請求項４】
出現頻度が最も多いデータとその他のデータのみである場合、前記第1のテーブルを参
照して圧縮データであるか否かの情報を取得し、圧縮データではない場合コードテーブル
から対応するコードデータを読み出すことを特徴とする請求項3記載のデータ復元装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文字データや画像データ等の各種のデータの圧縮装置、及び、復元装置に関する。
【背景技術】
【０００２】
今日のコンピュータの急速な進歩に伴い、文字情報や、ベクトル情報、画像情報など、様々な情報がコンピュータで扱われ、扱われるデータ量も急速に増加している。このような現状において、伝送時間の短縮や記憶装置の記憶容量を効率的に利用するため、データに含まれる冗長な部分を省いてデータ量を圧縮するデータ圧縮方法、及びその復元方法が提案されている。
【０００３】
また、データを圧縮する際に使用される符号化方法として、文字情報、ベクトル情報、画像情報などの様々なデータに適用可能なユニバーサル符号化の手法が採用されている。さらに、ユニバーサル符号化には、文字列の類似性を利用する辞書型符号化方式と、文字の出現頻度を利用する確率統計型符号化方式がある。
【０００４】
辞書型符号化方式の代表的な例としてＬｅｍｐｅｌ−Ｚｉｖ符号化があり、この符号化では、更にスライド辞書型（ユニバーサル型）と、動的辞書型（増分分解型）の２つのアルゴリズムが提案されている。スライド辞書型アルゴリズムの改良として、ＬＺＳＳ符号化や１／４インチ・カートリッジ磁気テープの標準圧縮方式であるQICー１２２符号化等が知られている。一方、動的辞書型アルゴリズムの改良としては、ＬＺＷ(Lempel-Ziv-Welch）符号化等が知られている。
【０００５】
また、確率統計型圧縮方式は、統計的な各文字の出現頻度（出現確率）に従い、出現確率の高い文字に対して短い符号長を割り振ることによって圧縮効果を図る方式である。この確率統計型符号化方式の代表的なものとして、例えば算術符号化方式や、ハフマン符号化方式が知られている。ハフマン符号化方式では、各文字に対する符号として、その文字の出現頻度に逆比例した符号長を有する符号（ハフマン符号）が使用される。
【０００６】
一方、上記辞書型符号化方式と確率統計型圧縮方式を併せ持つ複合型のデータ圧縮方法もあり、例えば前述のLZSS法で圧縮したデータをハフマン法で圧縮するLZH法等の方法である。LZSS法が文字列を単位として圧縮する方法であり、ハフマン法は１文字単位の圧縮であるため、互いに補完し合うことが期待できる方法である。
【０００７】
ここで、従来のスライド辞書型アルゴリズム（ＬＺ１）を説明する。このアルゴリズムは、演算量は多いが、高圧縮率が得られる方法である。すなわち、符号化データを過去のデータ系列の任意の位置から一致する最長の系列に区切り（部分列）、過去の文字列の複製として符号化する。図２７はこの原理を説明する図である。
【０００８】
同図に示すＰバッファには符号化済みの入力データが格納されており、Ｑバッファには符号化前のデータが入力する。この状態で、Ｑバッファに入力した文字列は、順次Ｐバッファに格納された文字列と照合され、Ｐバッファの中に一致する最長の文字列を求め、Ｐバッファの中に対応する最長文字列が存在すると、符号化処理を行う。例えば、同図に示すように、Ｐバッファに一致する文字列が存在する場合、［Ｐバッファの中の最長一致系列（部分文字列）の開始位置ｐ１］、［Ｑバッファ内の一致する最大の長さｑ１］として、圧縮データを生成する。尚、この符号化処理により、例えば文字コードの文書情報は１／２程度に圧縮可能である。また、上記スライド辞書型アルゴリズムを用いた発明として、特許文献１がある。
【０００９】
次に、確率統計型符号化について説明する。確率統計型符号化方法は、図２８に示すように入力バッファ、統計モデル部、頻度テーブル、及びエントロピー符号化部で構成され、統計モデル部は最初に全文字列を走査して各文字の出現頻度を算出し、エントロピー符号化部は統計モデル部で求められた出現確率に基づき作成した符号を各文字に割り当てる。
【００１０】
統計モデル部において求める出現頻度は、予め各文字の生起確率が求まる静的符号化方式と、最初に全文字列を走査して各文字の生起確率を得る準適応型符号化方式、及び各文字が出現する毎に頻度を取り生起確率を再計算する適応型符号化方式に分類される。尚、上記確率統計型符号化方式を使用した発明として特許文献２が開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第３２４１７８８号公報
【特許文献２】特許第３２７６８６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記圧縮方法では以下の問題がある。
先ず、辞書型符号化方式では、前述のように符号化済みの文字列の中から符号化対象の文字列に最大長に一致する文字部分列を検索し、その文字部分列を複製として符号化を実行する方式であり、高いデータ圧縮率が実現できる。この様なアルゴリズムを実装するには、データの圧縮率をより高めていく構成を採用する必要があると共に、符号化されたデータを利用し易い形式とする必要がある。
【００１３】
例えば、前述の例でデータ圧縮率を高めるためには、Ｐバッファの格納文字数や、Ｑバッファの格納文字数も増加する必要がある。しかし、ＰバッファやＱバッファの格納文字数を増加すると、符号化データが８ビットの倍数でなくなる。この場合、データを転送する際にビット詰め等の面倒な処理が必要となり、極めて処理効率の悪いデータ圧縮方法となる。
【００１４】
また、ハードウエアで実現する場合、より大きなウィンドウサイズとなり、圧縮及び復元回路が単一の集積回路上に配置される場合問題となる。すなわち、回路が膨大になり、必要なハードウエアのコストが非常に高くなる。また、ウィンドウサイズを大きくすると、比較演算量が膨大になり、性能劣化を引き起す。
【００１５】
一方、確率統計型符号化方式では、１文字を符号化すると、整数ビットからなる符号が生成される。これに対し、算術符号化では一文字に対して端数ビットを割り当てることができる。算術符号化では、０以上、１未満の区間が、符号化すべきデータを構成する各文字の出現頻度に応じて順次狭められる。そして、全ての文字に対する処理が終了したとき、狭められた区間内の１点を表す数値が符号として出力される。
【００１６】
したがって、確率統計型符号化では、統計モデル部とエントロピー符号化部の２パスで符号化するため、処理速度が低速となる。また、可変長符号化のため、ソフトウエア的には、ビット操作を行う必要があり、この処理に時間を要する。
【００１７】
そこで、本発明は確率統計型符号化のデータ圧縮装置によって、より高速で且つ圧縮効率の高い、データ圧縮、及び復元装置、を提供するものである。
【課題を解決するための手段】
【００１８】
上記課題は本発明によれば、出現頻度に応じて可変長符号化する確率統計型符号化のデータ圧縮装置において、出現頻度が最も多いデータの抽出を行う情報を第１のテーブルと第２のテーブルに２ビットで記録し、次に多い２個のデータの抽出を行う情報を第１乃至第３のテーブル及び第５のテーブルに４ビットで記録し、更に次に多い４個のデータの抽出を行う情報を第１乃至第４のテーブル及び第６のテーブルに６ビットで記録し、更に次に多い１６個のデータの抽出を行う情報を第１乃至第４のテーブル及び第７のテーブルに８ビットで記録し、その他のデータを第８のテーブルに９ビットで記録する手段と、前記出現頻度の順位に対応するデータコードをコードテーブルに記録する手段とを有するデータ圧縮装置を提供することによって達成できる。
【００１９】
このように構成することにより、確率統計型符号化のデータ圧縮装置によってもデータ圧縮処理を行うことができる。
尚、出現頻度が最も多いデータとその他のデータのみである場合、圧縮データであるか否かの情報を前記第１のテーブルに記録し、前記コードテーブルには前記出現頻度が最も多いデータのコードが記録される。
【００２０】
また、上記課題は本発明によれば、出現頻度に応じて可変長符号化された確率統計型符号化データの復元装置において、第１のテーブルを参照して圧縮データであるか否かの情報を取得し、圧縮データではない場合第８のテーブルに記録されたコードデータを読み出し、圧縮データであれば第２のテーブルを参照して出現頻度が最も多いデータであるか否かの情報を取得し、出現頻度が最も多いデータであれば、コードテーブルから対応する出現頻度のコードデータを読み出す手段と、前記出現頻度が最も多いデータでない場合、更に第３のテーブルを参照し、出現頻度が次に多い２個のデータであるか否かの情報を取得し、出現頻度が次に多い２個のデータであれば、更に第５のテーブルを参照し、出現頻度が２番目に多いデータであるか３番目に多いデータであるかの情報を取得し、前記コードテーブルから対応する出現頻度のコードデータを読み出す手段と、前記出現頻度が次に多い２個のデータでない場合、更に第４のテーブルを参照し、出現頻度が次に多い４個のデータであるか否かの情報を取得し、出現頻度が次に多い４個のデータであれば、更に第６のテーブルを参照し、出現頻度が４番目乃至７番目に多いデータであるかの情報を取得し、前記コードテーブルから対応する出現頻度のコードデータを読み出す手段と、前記出現頻度が次に多い４個のデータでない場合、更に第７のテーブルを参照し、出現頻度が次に多い１６個のデータの情報を取得し、前記コードテーブルから対応する出現頻度のコードデータを読み出す手段とを有するデータ復元装置を提供することによって達成できる。
【００２１】
このように構成することにより、確率統計型符号化データの復元装置を実現することができる。
尚、出現頻度が最も多いデータとその他のデータのみである場合、前記第１のテーブルを参照して圧縮データであるか否かの情報を取得し、圧縮データではない場合コードテーブルから対応するコードデータを読み出す構成である。
【発明の効果】
【００２２】
本発明によれば、確率統計型符号化のデータ圧縮装置によって、より高速で且つ圧縮効率の高い、データ圧縮、及び復元装置を提供することができる。
【００２３】
また、確率統計型符号化のデータ圧縮装置により圧縮されたデータの復元を高速且つ高効率に行うことができる。
【図面の簡単な説明】
【００２４】
【図１】実施形態１のデータ圧縮装置のシステム構成図である。
【図２】（ａ）は、入力データの構成を説明する図であり、（ｂ）は、圧縮データの具体的な構成を示す図であり、（ｃ）及び（ｄ）は、フラグデータの構成を説明する図であり、(ｅ）は、非圧縮データの構成を説明する図であり、（ｆ）は、圧縮データの構成を説明する図である。
【図３】実施形態２の構成を説明する図である。
【図４】実施形態３の圧縮処理を説明する図である。
【図５】識別データの例を示す図である。
【図６】実施形態４の圧縮処理を説明する図である。
【図７】識別データの例を示す図である。
【図８】実施形態５の圧縮処理を説明する図である。
【図９】準備処理部の構成を説明する図である。
【図１０】準備処理部が行う処理を説明するフローチャートである。
【図１１】圧縮フォーマットの例を示す図である。
【図１２】エントロピー符号化処理部が行う処理を説明するフローチャートである。
【図１３】実施形態６の圧縮処理を説明する図である
【図１４】判定パターンの例を示す図である。
【図１５】圧縮効率判定部が計算結果から判定して出力する圧縮フォーマットの出力形式を示す図である。
【図１６】圧縮フォーマットの構成を示す図である。
【図１７】エントロピー符号化処理部が行う処理を示すフローチャートである。
【図１８】実施形態８を説明する図である。
【図１９】（ａ）は、圧縮データの構成を説明する図であり、（ｃ）及び（ｄ）は、フラグデータの構成を説明する図であり、（ｅ）は、非圧縮データの構成を説明する図であり、（ｆ）は、圧縮データの構成を説明する図であり、（ｇ）は、連長圧縮の識別情報を説明する図である。
【図２０】実施形態９を説明する図である。
【図２１】実施形態１０を説明する図である。
【図２２】実施形態１１のデータ復元装置を説明する図である。
【図２３】実施形態１２のデータ復元装置を説明する図である。
【図２４】実施形態１３のデータ復元装置を説明するフローチャートである。
【図２５】実施形態１４のデータ復元処理を説明する図である。
【図２６】実施形態１５のデータ復元処理を説明する図である。
【図２７】従来例のデータ圧縮処理を説明する図である。
【図２８】従来例のデータ圧縮処理を説明する図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態を図面を参照しながら説明する。
（実施形態１）
図１は、本実施形態のデータ圧縮装置のシステム構成図である。
【００２６】
同図において、圧縮手段１は適応型の辞書型符号化方法(Lempel-Ziv法）を用いた第１の圧縮手段であり、圧縮手段２は準適応型(semi-adaptive)確率統計型符号化方法を用いた第２の圧縮手段である。入力データ列は、圧縮手段１に入力し、圧縮手段１によって符号化処理を行う。圧縮手段１によって符号化されたデータは中間データバッファ（ＲＡＭ）１３に供給され、更に後述する圧縮手段２によって圧縮処理が行われる。
【００２７】
圧縮手段１に入力するデータ列は、例えば文字データ、ベクトルデータ、画像データ等のデータであり、圧縮手段１は入力データを符号化済データの部分列のうち、最長一致するものを検索して符号化する、適応型の辞書型符号化方法であって、その識別フラグを除く符号データを１バイトデータとして出力し、また識別フラグ（１ビット）は８個まとめて１バイトデータとして出力することにより、全てバイト単位の出力とする。
【００２８】
図２は上記構成を具体的に説明する図である。先ず、同図（ａ）に示すように、入力データバッファ３はＰバッファ４とＱバッファ５で構成され、Ｐバッファ４は履歴バッファであり、３２バイトで構成されている。また、Ｑバッファ５には入力文字列が供給され、９バイトで構成されている。また、同図に示す太枠Ａはスライディング・ウィンドウであり、同図に示す矢印ｃ方向にスライド可能に構成されている。
【００２９】
入力文字列は、前述のように文字データ、ベクトルデータ、画像データ等のデータであり、具体的にはスライディング・ウィンドウＡを矢印ｃ方向にスライドすることによって、Ｑバッファ５への入力データの取り込みを行う。
【００３０】
図２（ｂ）は、圧縮データの具体的な構成を示す図である。最初の１バイトはフラグデータであり、フラグデータの後に８個の圧縮データ（及び非圧縮データ）が記録されている。フラグデータは同図（ｃ）に示すように、１バイト８ビットのデータであり、データ“０”が非圧縮データを示し、データ“１”が圧縮データを示す。また、同図（ｃ）に示す＃１〜＃８は、フラグデータに続く圧縮データ（及び非圧縮データ）に付された＃１〜＃８に対応する。
【００３１】
例えば、最初のフラグデータ（＃１）がフラグ“１”である場合、８個の圧縮データ及び非圧縮データの最初の（＃１）のデータは、１バイト（８ビット）の圧縮データである。同図（ｆ）に示すデータ構成は、上記圧縮データの例を示し、上位５ビットが一致開始位置のデータを記録し、下位３ビットが一致文字列の長さデータを記録する。したがって、Ｐバッファ４は５ビットで表せる容量を有するバッファであり、また９バイトの文字列のデータの一致検索を行うことができる。
【００３２】
一方、最初のフラグデータ（＃１）がフラグ“０”である場合、８個の圧縮データ（及び非圧縮データ）の最初の（＃１）のデータは、１バイト（８ビット）の非圧縮データである。同図（e）に示すデータ構成は、この非圧縮データの例を示し、原データのまま記述される。
【００３３】
尚、＃２以降の圧縮データ（及び非圧縮データ）についても同様であり、フラグデータに記録されたフラグの状態に対応した圧縮データ、又は非圧縮データが記録されている。尚、上記８個の圧縮データ（及び非圧縮データ）に続くフラグデータは、同図（ｄ）に示すように、次の＃９〜＃１６の圧縮データ（及び非圧縮データ）の情報が記録されている。
【００３４】
本例では、スライド辞書のＰバッファ（履歴バッファ）とＱバッファを小さくし、その文字列参照の符号化データ（その識別フラグを除く）を１バイトデータとして全てバイト単位の出力としている。
【００３５】
したがって、本例によれば、第１の圧縮手段のスライド辞書を小さくしたことにより、圧縮効果はやや低下するが、処理の高速化を図ることができる。また、ハード構成においても、履歴アレイやシフトレジスタの「スライド辞書のＰバッファ」と、比較器等が非常に少なくすることができ、回路規模を小さくすることもできる。
【００３６】
また、第２の圧縮手段を備えたことにより、圧縮効率が低下した分、第２の圧縮処理によりカバーでき、高圧縮、高効率の圧縮装置を実現できる。
また、第１の圧縮手段を全てバイトデータで取り扱うことにより、第１、第２の圧縮手段共に、全てバイト単位で扱うことができ、ビット操作を極力少なくでき、高速化を図ることができる。
（実施形態２）
次に、本発明の実施形態２について説明する。
【００３７】
図３は、本実施形態の圧縮装置を説明するシステム構成図である。同図も前述の図１と同様、圧縮手段１１は適応型の辞書型符号化方法(Lempel-Ziv法）を用いた第１の圧縮手段であり、圧縮手段１２は準適応型(semi-adaptive)確率統計型符号化方法を用いた第２の圧縮手段である。但し、本例の圧縮手段１１は圧縮手段１２で使用する出現頻度の計数処理も同時に行う構成である。以下、具体的に説明する。
【００３８】
本例においても、前述の実施形態例と同様、入力データは圧縮手段１に入力し、符号化処理が行われる。圧縮手段１に入力するデータ列は、例えば文字データ等であり、圧縮手段１は入力データを辞書内の符号化済データの部分列のうち、最長一致するものを検索して符号化する。この符号化されたデータは、ＲＡＭで構成される中間データバッファ１３に供給され、所定量の符号化データが入力すると、圧縮手段１２に出力する。
【００３９】
一方、圧縮手段１１は圧縮手段１２で行う圧縮処理に必要な出現頻度の計数処理を行い、計数結果を頻度テーブル１４に出力する。すなわち、圧縮手段１２で使用する頻度テーブルを生成し、圧縮手段１２が行う確率統計型符号化方法を用いた圧縮処理を効率よく行えるように構成する。
【００４０】
このように、本例によれば第１の圧縮手段である圧縮手段１１により符号データを生成する際、出現頻度の計数も同時に行うことにより、第２の圧縮手段である圧縮手段１２は頻度テーブルのデータを使用して圧縮処理を行うことができ、圧縮処理の高速化を図ることができる。
（実施形態３）
次に、本発明の実施形態３について説明する。
【００４１】
図４は、本実施形態の圧縮処理を説明する図である。同図において、入力バッファ２０には前述の文字データ等の入力データ列が供給され、この入力データは入力バッファ２０から更に第１の圧縮手段である圧縮手段２１に供給される。圧縮手段２１は前述と同様、適応型の辞書型符号化方法を用いた圧縮手段であり、出現頻度の計数処理も行う。
【００４２】
圧縮手段２１では、入力データの符号化を行い、中間データバッファ２３に出力すると共に、上記のように第１のデータ圧縮手段の出力データのサイズの計数、及び符号化データを生成する際の出現頻度の計数も同時に行う。
【００４３】
頻度テーブル２４は、上記出現頻度を記録するテーブルであり、上記圧縮手段２１から出力される計数データをカウンタアップし、例えば文字コード毎に出現頻度のデータを記録する。サイズ算出・判定手段２５は、第２の圧縮手段である圧縮手段２２が圧縮処理を行った場合の圧縮データサイズ（圧縮率）を計算し、第１の圧縮後のサイズよりも出力データ量が増加するか判定する。
【００４４】
そして、出力データ量が増加すると判定する場合には、識別データとしてマジックナンバー１を出力する。一方、出力データ量が増加しないと判定する場合には、識別データとしてマジックナンバー２を出力する。
【００４５】
また、サイズ算出・判定手段２５は、出力データ量が増加すると判定する場合、第２の圧縮処理を行うことなく、元データ出力手段２６に対して中間データバッファ２３に記録された第１の圧縮結果を出力データバッファ２７に出力するよう指示する。一方、出力データ量が増加しないと判定する場合、第２の圧縮手段である圧縮手段２２に対し、中間データバッファ２３に記録された第１の圧縮結果のデータ列を入力し、第２の圧縮処理を行うよう指示する。
【００４６】
図５は上記識別データの例を示す図であり、マジックナンバーを２つ用意し、同図（ａ）に示すマジックナンバー１は第１の圧縮方法で圧縮処理し、第２の圧縮方法での処理を行わなかった場合の識別データを示す。一方、図（ｂ）に示すマジックナンバー２は第１の圧縮方法で圧縮処理し、更に第２の圧縮方法で圧縮処理を実施したことを示す。尚、上記識別データについては、２つのマジックナンバーに代えて、本圧縮方法で圧縮したことを示すマジックナンバーと、第２の圧縮を行ったか／行わなかったかを示すフラグで構成してもよい。
【００４７】
上記処理により、出力データバッファ２７には、識別データに対応する出力が供給され、出力データバッファ２７から圧縮処理されたデータが出力される。
以上のように、本例によれば第１の圧縮処理を行った後、第２の圧縮処理を行った場合の圧縮データサイズ（圧縮率）を計算し、第１の圧縮処理後の出力データサイズよりデータ量が増加する場合第２の圧縮を行うことなく、第１の圧縮処理の結果よりサイズが増大する圧縮処理を行うことを回避できる。また、無駄な第２の圧縮処理を行わずに済み、効率のよい圧縮処理が可能となる。
（実施形態４）
次に、本発明の実施形態４について説明する。
【００４８】
図６は、本実施形態の圧縮処理を説明する図である。本例は前述の実施形態３に対して、更にもう１つ出現頻度テーブルを設け、より効率のよい圧縮処理を可能とする構成である。以下、具体的に説明する。尚、前述の図４と同じ構成部分には同じ番号を使用して説明する。
【００４９】
前述と同様、入力データバッファ２０には文字データ等の入力データ列が供給され、更に入力データバッファ２０に供給された入力データは、第１の圧縮手段である圧縮手段２１に供給される。圧縮手段２１は適応型の辞書型符号化方法を用いた圧縮手段であり、入力データの圧縮処理を行い、中間データバッファ２３に符号化データを出力する。また、前述と同様、入力データ列及び第１圧縮後の符号化データ列の各サイズの計数と各データ列のデータの出現頻度の計数も同時に行う。
【００５０】
本例において、頻度テーブルは２４ａ、２４ｂの２つの頻度テーブルを有し、頻度テーブル２４ａ、２４ｂは前述と同様、例えば文字コード毎に出現頻度のデータを記録する。また、サイズ算出・判定手段２５は、第２の圧縮手段である圧縮手段２２が圧縮処理を行った場合の圧縮データサイズ（圧縮率）を計算し、第１の圧縮後のサイズよりも出力データ量が増加するか判定する。
【００５１】
サイズ算出・判定手段２５は、以下（１）〜（４）のサイズを知り、以下の処理を行う。すなわち、（１）入力（原）データ列のサイズ、（２）第１の圧縮手段の出力サイズ、（３）入力（原）データ列を第２の圧縮手段のみで圧縮した場合の出力サイズ、（４）第１の圧縮手段の出力データ列を第２の圧縮手段で更に圧縮した場合の出力サイズ。
【００５２】
先ず、上記（１）が最小となる場合、入力データをそのまま出力する。すなわち、サイズ算出・判定手段２５は、識別データとしてマジックナンバー１を出力し、元データ出力手段２６に対して、入力データバッファ２０に入力したデータ列を出力するように指示する。したがって、第１の圧縮処理、及び第２の圧縮処理を行うことなく、入力バッファ２０に供給された入力データを元データ出力手段２６に出力し、更に元データ出力手段２６から出力データバッファ２７介して出力を行う。
【００５３】
次に、上記（２）が最小となる場合、第１の圧縮処理を行い、第２の圧縮処理を行うことなく、データ列の出力を行う。すなわち、この場合、サイズ算出・判定手段２５は、識別データとしてマジックナンバー２を出力し、元データ出力手段２６に対し、中間データバッファ２３に記録されたデータ列の出力を行うように指示する。したがって、この場合、中間データバッファ２３に格納された符号化データは元データ出力手段２６、出力データバッファ２７を介して出力される。
【００５４】
次に、上記（３）が最小となる場合、入力データを第２の圧縮処理のみを行い出力する。すなわち、この場合、サイズ算出・判定手段２５は識別データとしてマジックナンバー３を出力し、第２の圧縮手段２２に対し、入力データバッファ２０からデータ列の入力を行わせ、第２の圧縮処理を施すよう指示する。したがって、この指示に基づき、第２の圧縮手段２２は、入力データバッファ２０のデータ列を入力し、第２の圧縮処理を施し、出力データバッファ２７にデータ出力を行う。
【００５５】
次に、上記（４）が最小となる場合、入力データに対して第１、第２の圧縮処理を行い出力する。すなわち、この場合、サイズ算出・判定手段２５は識別データとしてマジックナンバー４を出力し、第２の圧縮手段２２に対し、圧縮処理を指示する。したがって、この指示に基づき、圧縮手段２２は、中間データバッファ２３に記録された符号化データに対して、更に圧縮処理を施し、出力データバッファ２７を介して圧縮データの出力を行う。
【００５６】
尚、識別データの各マジックナンバーの意味は図７（ａ）に示す通りであり、マジックナンバーを４つ用意し、マジックナンバー１は本圧縮方法で圧縮したことと第１、第２の圧縮共に未実施を示し、マジックナンバー２は本圧縮方法で圧縮したことと第１の圧縮は実施、第２の圧縮は未実施を示し、マジックナンバー３は本圧縮方法で圧縮したことと第１の圧縮は未実施、第２の圧縮は実施したことを示し、マジックナンバー４は本圧縮方法で圧縮したことと第２の圧縮共に実施した意味を持つ。
【００５７】
また、識別データについては、同図（ｂ）に示すように、４つのマジックナンバーの代わりに、本圧縮方法で圧縮したことを示すマジックナンバーと、第１の圧縮を行ったか／行わなかったかを示すフラグ、及び第２の圧縮を行ったか／行わなかったかを示すフラグで構成される構成としてもよい。
【００５８】
以上のように、本例によれば、第１及び第２の圧縮の２つの手段を組み合わせ、最も圧縮効率のよい圧縮結果を提供でき、かつ最悪の場合でも入力データサイズより増大することを防止できる。
（実施形態５）
次に、本発明の実施形態５について説明する。
【００５９】
図８は、本実施形態の圧縮処理を説明する図である。本例は前述の実施形態１乃至４と異なり、準適応型の確率統計型符号化による圧縮処理を説明するものであり、本例の圧縮手段３１は統計モデル処理手段３２とエントロピー符号化手段３４とで構成される。以下、具体的に説明する。
【００６０】
先ず、入力データバッファ３０には、前述の文字データ等の入力データが供給され、例えば前述の第１の圧縮手段によって圧縮処理された圧縮データが供給される。入力データバッファ３０に供給された入力データは、統計モデル処理手段３２に供給される。統計モデル処理手段３２は、各バイトデータの出現頻度を計数する。この出現頻度の計数結果は頻度テーブル３３に供給され、頻度テーブル３３に出現頻度の計数結果を記憶する。
【００６１】
エントロピー符号化手段３４は、準備処理部３５、エントロピー符号化処理部３６、出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）、及び符号データ出力処理手段３７で構成されている。
【００６２】
準備処理部３５は圧縮データサイズの計算を行い、出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）の割当て処理、及び後述するベストモード１〜２３のコード等をヘッダ部に出力する処理を行う。また、エントロピー符号化処理部３６は、上記準備処理部３５によって作成されたベストモードの情報に基づいて圧縮フォーマットを生成する。
【００６３】
先ず、準備処理部３５の処理について説明する。尚、図９は準備処理部３５の構成及び処理概要を説明する図であり、同図のａは、前述の頻度テーブル３３である。頻度テーブル３３は文字コード（バイトデータ（００〜ＦＦ））に対応するカウンタ値（頻度）が格納されており、準備処理部３５は、このカウンタ値（頻度）をもとに、ベスト（以下、Ｂｅｓｔで示す）２３より頻度の多いコードと、該コードの頻度（カウンタ）を格納する記憶エリアｂを作成する。
【００６４】
図１０は、準備処理部３５が行う処理を説明するフローチャートである。先ず、記憶エリアａ、及びｂに記憶されたコードテーブルや頻度テーブルの初期化を行い、総頻度数を０クリアする（ステップ（以下、ＳＴで示す）１）。次に、頻度テーブルのデータが０であるか判断し（ＳＴ２）、頻度テーブル３３にデータが存在することを確認して（ＳＴ２がＮＯ）、頻度テーブル３３からデータを取り出す（ＳＴ３）。
【００６５】
次に、取り出した頻度データを総頻度数に累計する（ＳＴ４）。そして、Ｂｅｓｔ２３のコードの頻度が０であるか判断する（ＳＴ５）。ここで、Ｂｅｓｔ２３のコードの頻度が０でない場合（ＳＴ５がＮＯ）、Ｂｅｓｔ２３のコードの頻度と比較し（ＳＴ６）、Ｂｅｓｔ２３の頻度より少ない場合、頻繁に出現する文字コードではないものと判断し、判断（ＳＴ２）に戻る。一方、Ｂｅｓｔ２３の頻度より多い場合、処理（ＳＴ７）に移行する。
【００６６】
また、Ｂｅｓｔ２３のコードと頻度が一致する場合、Ｂｅｓｔ２３のコードより大きいか判断する（ＳＴ８）。すなわち、同じ出現頻度であっても、文字コードのコード番号が若いコードを採用するため、Ｂｅｓｔ２３のコード番号よりが大きい場合、判断（ＳＴ２）に戻る。一方、Ｂｅｓｔ２３のコード番号より小さい（若い）場合、処理（ＳＴ７）に移行する。
【００６７】
処理（ＳＴ７）では、取り出した頻度とコードをＢｅｓｔ１〜２３の頻度テーブルとコードテーブルに頻度の昇順に挿入する。この処理によって、図９のａの記憶エリアに格納されたデータは、頻度順に並べ替えられ、同図のｂに示すＢｅｓｔ１〜２３の頻度カウンタ及びコードに格納される。
【００６８】
次に、頻度テーブルのデータが全て読み出され、エンドになると（ＳＴ２がＹＥＳ）、更にＢｅｓｔ８〜２３のコードを昇順に並べ替える（ＳＴ９）。さらに、出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）のサイズ計算を行う（ＳＴ１０）。
【００６９】
例えば、各テーブルのサイズは以下の計算に基づいて計算される。すなわち、
F１テーブルサイズ＝(入力データ数＋７）／８バイト
F２テーブルサイズ＝(Ｂｅｓｔ１〜２３の頻度の和＋７）／８バイト
F３テーブルサイズ＝(Ｂｅｓｔ２〜２３の頻度の和＋７）／８バイト
F４テーブルサイズ＝(Ｂｅｓｔ４〜２３の頻度の和＋７）／８バイト
F５テーブルサイズ＝(Ｂｅｓｔ２〜３の頻度の和＋７）／８バイト
F６テーブルサイズ＝(Ｂｅｓｔ４〜７の頻度の和＋３）／４バイト
F７テーブルサイズ＝(Ｂｅｓｔ８〜２３の頻度の和＋１）／２バイト
F８テーブルサイズ＝入力データ数−Ｂｅｓｔ１〜２３の頻度の和
次に、上記計算結果から出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）を圧縮フォーマットに割り当てる（ＳＴ１１）。また、Ｂｅｓｔ１〜２３のコード情報を含むデータを圧縮フォーマットのヘッダ部に出力する（ＳＴ１２、ＳＴ１３）。
【００７０】
図１１は、圧縮フォーマットの例である。この圧縮フォーマットは、ヘッダ部とＦ１〜Ｆ８テーブルで構成され、ヘッダ部は圧縮総容量、Ｆ１〜Ｆ７テーブルのビット数、生データのバイト数、及びＢｅｓｔ１〜２３のコードテーブルで構成される。
【００７１】
エントロピー符号化処理部３６は、上記準備処理部３５から供給されるデータをもとに、以下の図１２に示すフローチャートに従って上記圧縮フォーマットに具体的数値を設定する。
【００７２】
先ず、入力バッファ３０に供給される入力データを１バイト読み出し（ステップ（以下、ＳＴＰで示す）１）、データエンドであるか判断する（ＳＴＰ２）。ここで、入力データが存在すれば（ＳＴＰ２がＹＥＳ）、読み出したデータの出現頻度の情報を取り出す（ＳＴＰ３）。
【００７３】
次に、読み出した１バイトデータがＢｅｓｔ１コードであるか判断する（ＳＴＰ４）。ここで、読み出した１バイトデータがＢｅｓｔ１コードである場合（ＳＴＰ４がＹＥＳ）、Ｂｅｓｔ１コードの処理を行う（ＳＴＰ５）。すなわち、出力データバッファ１（Ｆ１テーブル）のビットをオンし、出力データバッファ２（Ｆ２テーブル）のビットをオフする。
【００７４】
また、読み出した１バイトデータがＢｅｓｔ１コードではない場合（ＳＴＰ４がＮＯ）、Ｂｅｓｔ２のコードと一致するか判断する（ＳＴＰ６）。ここで、Ｂｅｓｔ２のコードと一致する時、Ｂｅｓｔ２のコード処理を行い、出力データバッファ５（Ｆ５テーブル）のビットをオフする（ＳＴＰ７）。また、出力データバッファ１（Ｆ１テーブル）のビットをオンし、出力データバッファ２（Ｆ２テーブル）のビットをオンし、更に出力データバッファ３（Ｆ３テーブル）のビットをオフする（ＳＴＰ８）。
【００７５】
以下、同図に示すフローチャートに従って、順位Ｂｅｓｔ３、Ｂｅｓｔ４、Ｂｅｓｔ５、Ｂｅｓｔ６、Ｂｅｓｔ７のコードとの一致を判断し、同じコードであれば対応する処理（ＳＴＰ９〜ＳＴＰ１９）を実行する。
【００７６】
次に、Ｂｅｓｔ２３のコードの頻度と読み出したコードの頻度を比較し（ＳＴＰ２０）、Ｂｅｓｔ２３の頻度より少ない場合、頻繁に出現する文字コードではないものと判断し、非圧縮データ処理を行う（ＳＴＰ２１）。すなわち、出力データバッファ１（Ｆ１テーブル）のビットをオフし、出力データバッファ８（Ｆ８テーブル）に読み出したコードデータをセットする。
【００７７】
一方、Ｂｅｓｔ２３のコードの頻度より多い場合、Ｂｅｓｔ８〜２２のコードテーブルを２分検索し、一致したコードのテーブルＮo．を出力データバッファ７（Ｆ７テーブル）にセットする（ＳＴＰ２２）。
【００７８】
また、Ｂｅｓｔ２３のコードの頻度と一致する場合、Ｂｅｓｔ２３のコードとコードの比較を行い（ＳＴＰ２３）、一致すればＢｅｓｔ２３のコード番号を出力データバッファ７（Ｆ７テーブル）にセットする（ＳＴＰ２４）。
【００７９】
次に、Ｂｅｓｔ８〜２３のコード処理を行う（ＳＴＰ２５）。すなわち、出力データバッファ１（Ｆ１テーブル）のビットをオンし、出力データバッファ２（Ｆ２テーブル）のビットをオンし、出力データバッファ３（Ｆ３テーブル）のビットをオンし、出力データバッファ４（Ｆ４テーブル）のビットをオンする。
【００８０】
以上の処理を入力データがエンドになるまで繰り返し、最後に符号データの出力処理手段３７は、出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）を順次出力する。
【００８１】
以上のように処理することによって、出力形式をＢｅｓｔ１コードが２ｂｉｔ、Ｂｅｓｔ２〜３コードが４ｂｉｔ、Ｂｅｓｔ４〜７コードが６ｂｉｔ、Ｂｅｓｔ８〜２３コードが８ｂｉｔ、非圧縮データ９ｂｉｔの可変長符号化とし、かつ出力データ領域を出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）の８つの領域に分離し、可変長符号でありながら、符号化および復号化のためのメモリアクセスが１ｂｉｔ単位と２ｂｉｔ単位と４ｂｉｔ単位のビットアクセスと、１バイトデータのバイトアクセスで可能となり、非常に高速な圧縮処理を行うことができる。
（実施形態６）
次に、本発明の実施形態６について説明する。
【００８２】
図１３は、本実施形態の圧縮処理を説明する図である。尚、本例は上記実施形態５において確率統計型符号化による圧縮処理を説明したが、本例では各出力形式ごとの圧縮サイズを計算で求め、圧縮効率の最も優れた場合を判定する圧縮効率判定部を備えた点が特徴である。以下、具体的に説明する。
【００８３】
図１３は本例を説明する図であり、前述の図８と同じ構成部分には同じ番号を付して説明する。先ず、入力データバッファ３０には、前述の文字データ等の入力データが供給され、更に入力データバッファ３０に供給された入力データは、統計モデル処理手段３２に供給される。統計モデル処理手段３２は、各バイトデータの出現頻度を計数する。この出現頻度の計数結果は頻度テーブル３３に供給され、頻度テーブル３３に出現頻度の計数結果を記憶する。
【００８４】
エントロピー符号化手段３４は、準備処理部３５、エントロピー符号化処理部３６、圧縮効率判定部３９、出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）、及び符号データ出力処理手段３７で構成されている。
【００８５】
準備処理部３５は圧縮データサイズの計算を行い、出力データバッファ１（Ｆ１テーブル）〜出力データバッファ８（Ｆ８テーブル）の割当て処理、後述するベストモード１〜２３のコード等をヘッダ部に出力する処理を行う。また、エントロピー符号化処理部３６は、上記準備処理部３５によって作成されたベストモードの情報に基づいて入力データを各データ毎に後述する処理を行う。
【００８６】
圧縮効率判定部３９は頻度テーブル３３から供給されるデータに基づいて各圧縮形式毎の圧縮データサイズを計算し、最小のサイズとなる出力形式を判別する。尚、準備処理部３５が行う準備処理は、前述の図１１に示すフローチャートに従って実行される。また、圧縮効率判定部３９はエントロピー符号化処理部３６が行う処理と同様の処理を行い、各圧縮形式毎の圧縮データサイズを計算し、最小のサイズとなる出力形式を判別する。
【００８７】
図１４は判定パターンの例を示す図であり、
（１）Ｂｅｓｔ１コードとそれ以外のコードの場合、Ｂｅｓｔ１は１ｂｉｔで、他は９ｂｉｔで符号化され、
（２）Ｂｅｓｔ１と次のＢｅｓｔ２とそれ以外のコードの場合、Ｂｅｓｔ１は２ｂｉｔで、Ｂｅｓｔ２は３ｂｉｔで、他は９ｂｉｔで符号化され、
（３）Ｂｅｓｔ１と次のＢｅｓｔ４とそれ以外のコードの場合、Ｂｅｓｔ１は２ｂｉｔで、Ｂｅｓｔ４は４ｂｉｔで、他は９ｂｉｔで符号化され、
（４）Ｂｅｓｔ１と次のＢｅｓｔ１６とそれ以外のコードの場合、Ｂｅｓｔ１は２ｂｉｔで、Ｂｅｓｔ１６は６ｂｉｔで、他は９ｂｉｔで符号化され、
（５）Ｂｅｓｔ１と次のＢｅｓｔ２と次のＢｅｓｔ４とそれ以外のコードの場合、Ｂｅｓｔ１は２ｂｉｔで、Ｂｅｓｔ２は４ｂｉｔで、Ｂｅｓｔ４は５ｂｉｔで、他は９ｂｉｔで符号化される。
【００８８】
（６）Ｂｅｓｔ１と次のＢｅｓｔ２と次のＢｅｓｔ１６とそれ以外のコードの場合、Ｂｅｓｔ１は２ｂｉｔで、Ｂｅｓｔ２は４ｂｉｔで、Ｂｅｓｔ１６は７ｂｉｔで、他は９ｂｉｔで符号化され、
（７）Ｂｅｓｔ１と次のＢｅｓｔ４と次のＢｅｓｔ１６とそれ以外のコードの場合、Ｂｅｓｔ１は２ｂｉｔで、Ｂｅｓｔ４は５ｂｉｔで、Ｂｅｓｔ１６は７ｂｉｔで、他は９ｂｉｔで符号化され、
（８）Ｂｅｓｔ１と次のＢｅｓｔ２と次のＢｅｓｔ４と次のＢｅｓｔ１６とそれ以外のコードの場合、Ｂｅｓｔ１は２ｂｉｔで、Ｂｅｓｔ２は４ｂｉｔで、Ｂｅｓｔ４は６ｂｉｔで、Ｂｅｓｔ１６は８ｂｉｔで、他は９ｂｉｔで符号化される。
【００８９】
尚、具体的なビット内容は、それぞれ同図に示すデータ及びコードであり、例えば、（１）Ｂｅｓｔ１コードとそれ以外の場合、Ｂｅｓｔ１コードと一致するバイトデータは出力データバッファ１（Ｆ１テーブル）の１ｂｉｔの記憶エリアにＢｅｓｔ１コードを示すフラグとして記憶し、１ｂｉｔで符号化する。Ｂｅｓｔ１コード以外の他のデータは、出力データバッファ１（Ｆ１テーブル）の１ｂｉｔの記憶エリアに非圧縮データを示すフラグとして記憶し、かつ出力データバッファ８（Ｆ８テーブル）の生データの記憶エリアにそのデータ（８ｂｉｔ）を記憶し、合計９ｂｉｔで符号化する。以下、（２）Ｂｅｓｔ１と次のＢｅｓｔ２とそれ以外のコードの場合等についても同図に示す通りである。
【００９０】
図１５は圧縮効率判定部３９が計算結果から判定して出力する圧縮フォーマットの出力形式を示す。上記計算結果から、例えば「（１）Ｂｅｓｔ１コードとそれ以外のコードの場合」の出力形式が判定され、選択された場合には最もサイズの小さい圧縮フォーマットを使用することができる。例えば、同じ色の画像情報等の場合であり、極めて入力データの特性に合わせた圧縮フォーマットの選択を行うことができる。
【００９１】
したがって、本例によれば入力データに対応した圧縮効率の最も優れた出力形式を選択して圧縮処理を行うことができ、圧縮処理時間や圧縮データの転送時間を短縮することができ、極めて効率のよい出力圧縮処理を行うことができる。
（実施形態７）
次に、本発明の実施形態７について説明する。尚、本例は上記圧縮効率判定部３９によって判定された出力形式４（つまり、（４）Ｂｅｓｔ１と次のＢｅｓｔ１６とそれ以外の場合）を使用したものである。準備処理部３５によってＢｅｓｔ１〜Ｂｅｓｔ１７までの頻度データを作成した場合の例であり、圧縮フォーマットは図１６に示す構成である。したがって、前述の実施形態６における出力データバッファ（Ｆテーブル）に対して、本例においてテーブル番号は一致しない。
【００９２】
図１７は、本例におけるエントロピー符号化処理部３６が行う処理を示すフローチャートである。先ず、入力データバッファ３０に供給される入力データを１バイト読み出し（ステップ（以下、Ｗで示す）１）、データエンドであるか判断する（Ｗ２）。この最初の処理では、入力データは充分存在し（Ｗ２がＹＥＳ）、読み出したデータの出現頻度の情報を取り出す（Ｗ３）。すなわち、本例の出力データバッファ１（Ｆ１テーブル）を検索し、読み出した１バイトデータがＢｅｓｔ１コードであるか判断する（Ｗ４）。
【００９３】
ここで、読み出した１バイトデータがＢｅｓｔ１コードである場合（Ｗ４がＹＥＳ）、Ｂｅｓｔ１コード処理を行う（Ｗ５）。すなわち、本例の出力データバッファ１（Ｆ１テーブル）のビットをオンし、出力データバッファ２（Ｆ２テーブル）のビットをオフする。
【００９４】
また、読み出した１バイトデータがＢｅｓｔ１コードではない場合（Ｗ４がＮＯ）、Ｂｅｓｔ１７のコードと比較処理を行う（Ｗ６）。ここで、Ｂｅｓｔ１７のコードの頻度より少ない場合、非圧縮データ処理を行い、本例の出力データバッファ１（Ｆ１テーブル）のビットをオフし、出力データバッファ４（Ｆ４テーブル）に読み出したデータをセットする（Ｗ７）。一方、Ｂｅｓｔ１７のコードの頻度より多い場合、Ｂｅｓｔ１２〜１６のコードテーブルを２分検索し、一致したコードのテーブルナンバーを出力データバッファ３（Ｆ３テーブル）にセットする（Ｗ８）。
【００９５】
また、Ｂｅｓｔ１７のコードの頻度と一致する場合、Ｂｅｓｔ１７のコードとコードの比較を行い（Ｗ９）、一致すればＢｅｓｔ１７のコードの値を出力データバッファ３（Ｆ３テーブル）にセットする（Ｗ１０）。そして、Ｂｅｓｔ１２〜１７のコード処理を行う。すなわち、出力データバッファ１（Ｆ１テーブル）にビットオンし、出力データバッファ２（Ｆ２テーブル）のビットをオンする。
【００９６】
以上のように、本例によれば入力データに対応した圧縮効率の最も優れた出力形式を選択して圧縮処理を行うことができ、圧縮処理時間や圧縮データの転送時間を短縮することができる。尚、本例は文字コードの出現頻度をＢｅｓｔ１〜１７までの例で説明したが、出現頻度は前述の実施形態６に示すようにＢｅｓｔ１〜２３までとしてもよく、更に他の数の例で説明してもよい。
（実施形態８）
次に、本発明の実施形態８について説明する。
【００９７】
図１８は、本実施形態を説明する図であり、前述の最長一致の文字列の探索の前に、直前の文字と同一の文字の連続であるか否かを判断し、同一の文字の連続である場合、連長文字圧縮の処理を実行する。例えば、同図（ａ）は、連続する文字“ａ”が８個連続する場合であり、この場合、フラグ＋長さの圧縮データを使用する。また、フラグは最長一致の文字列参照と兼用し、図１９（ｇ）に示すように、文字列参照の符号コードの「一致開始位置」の部分に連長圧縮の識別情報を入れる。尚、１８図（ｂ）は、前述の図２（ａ）と同じであり、説明を省略する。また、図１９（ｂ）〜（ｆ）の構成は、前述の図２（ｂ）〜（ｆ）の構成と同じであり、説明を省略する。
【００９８】
例えば、画像データに白の部分が多い場合、この部分は同じ値の連続である。したがって、このような入力データに対し、本例の連長文字圧縮を付加することにより、圧縮効率を向上することができる。
（実施形態９）
次に、本発明の実施形態９について説明する。
【００９９】
図２０は、本実施形態を説明する図である。本例は膨大な入力データの対応として、入力データ列を分割制御する原データ分割・入力手段４０を備え、入力ファイル４１に記憶された入力データを原データ分割・入力手段４０によって分割して入力データバッファ４３に出力する構成である。
【０１００】
このように構成することにより、膨大な入力データに対してもデータを分割して入力データバッファ４３に供給することによって容易に対応することができるものである。
尚、同図に示す他の構成は、前述の図６の構成と同じであり、説明を省略する。そして、出力データバッファ２７に格納された圧縮データは、圧縮結果データ出力手段４４によって、出力ファイルに順次出力される。
（実施形態１０）
次に、本発明の実施形態１０について説明する。
【０１０１】
上記実施形態１〜９は入力データの圧縮処理について説明したが、以下の実施形態は、前述の圧縮処理によって圧縮されたデータの復元処理について説明する。以下、具体的に説明する。
【０１０２】
図２１において、第１の復元手段５１は準適応型(semi-adaptive)確率統計型符号化データの復号処理を行い、第２の復元手段５２は適応型の辞書型符号化データ(Lempel-Ziv法）の復号処理を行う。すなわち、前述の実施形態１乃至９で行われた圧縮データの復元処理を行う構成である。
【０１０３】
したがって、前述の実施形態１乃至９で行われた圧縮データは、入力データ列として第１の復元手段５１に入力し、前述の第２の圧縮手段の確率統計型符号化方法で圧縮されたデータ列を復号する。また、第２の復元手段５２は前述の第１の圧縮手段の適応型の辞書型符号化方法（Lempel-Ziv法）で圧縮されたデータ列を復号する。
【０１０４】
このように構成することにより、可逆的に（無損失）復号化が行われ、圧縮処理に対応する複合処理を行うことができる。
（実施形態１１）
次に、本発明の実施形態１１について説明する。
【０１０５】
本実施形態もデータの復元処理について説明するものである。以下、具体的に説明する。
図２２は本例のデータ復元装置を説明する図である。同図において、第１の復元手段５１は、前述と同様準適応型(semi-adaptive)確率統計型符号化データの復号処理を行い、第２の復元手段５２は適応型の辞書型符号化データ(Lempel-Ziv法）の復号処理を行う。また、同図において、入力切換手段５３は前述の実施形態３の処理によって符号化された（圧縮処理された）データ列を入力し、識別データ判定手段５４、又は第１の復号手段５１、又は第２の復号手段５２のいずれかにデータを受け渡す入力データの切り換え手段である。尚、入力切換手段５３は初期状態において、識別データ判定手段５４に入力データを受け渡す設定が行われている。
【０１０６】
ここで、本例で使用する識別データは前述の実施形態３で説明したマジックナンバーであり、識別データ判定手段５４は、受け取った入力データを前述の識別データとして判別する。すなわち、前述のマジックナンバー１又は２と比較し、以下の判定を行う。
【０１０７】
例えば、マジックナンバー１であれば、入力切換手段５３を切り換えて、切換手段５５を介して第２の復号手段５２に入力データを供給する。また、この時第２の復号手段５２に対して復号処理の開始を指示する。
【０１０８】
また、マジックナンバー２ならば、入力切換手段５３を切り換え、入力データを第１の復号手段５１に供給し、更に切換手段５５を切り換え、第１の復号手段５１の出力データが第２の復号手段５２に供給されるように制御する。そして、第１の復号手段５１に対して復号処理の開始を指示する。また、第２の復号手段５２に対しても復号処理の開始を指示する。
【０１０９】
したがって、本例によれば圧縮時に設定されたマジックナンバーに基づいて復号処理を行うことができ、圧縮方式に対応する復号方式を使用して効率よく圧縮データの復号処理を行うことができる。
（実施形態１２）
次に、本発明の実施形態１２について説明する。
【０１１０】
本実施形態もデータの復元処理について説明するものである。以下、具体的に説明する。
図２３は本例のデータ復元装置を説明する図である。同図において、第１の復元手段５１は、前述と同様準適応型(semi-adaptive)確率統計型符号化データの復号処理を行い、第２の復元手段５２は適応型の辞書型符号化データ(Lempel-Ziv法）の復号処理を行う。また、同図において、入力切換手段５３、識別データ判定手段５４は前述の同じ構成であるが、識別データ判定手段５４は後述する４種類のマジックナンバーの識別を行う。すなわち、本例は前述の実施形態４の圧縮装置による圧縮データを復元する構成であり、識別データは前述の４種類のマジックナンバー１〜４の判断を行う。
【０１１１】
また、本例においては２つの切換手段５５ａ、５５ｂが使用され、更に出力切換手段５８も設けられている。
上記構成において、先ず識別データ判定手段５４に入力する識別データがマジックナンバー１である場合、識別データ判定手段５４は、判定した識別データを除いて、そのまま受け渡されたデータ列をデータエンドまで出力する。
【０１１２】
また、マジックナンバー２であれば、識別データ判定手段５４は入力データを第２の復号手段５２に供給するよう、入力切換手段５３に指示し、入力切換手段５３と切換手段５５ａを切換える。また、第２の復号手段５２からのデータ列を出力切換手段５８に出力するよう指示する。したがって、この処理により、入力データは第２の復号手段５２によって復号処理が行われ、出力切換手段５８を介して復号データが出力される。
【０１１３】
また、マジックナンバー３である場合、識別データ判定手段５４は、入力切換手段５３を切り換え、第１の復号手段５１に入力データを供給するよう指示する。また、切換手段５５ｂと出力切換手段５８を切り換え、第１の復号手段５１に対して復号開始の指示を行う。したがって、このように制御することにより、第１の復号手段５１は復号処理を開始し、切換手段５５ｂ、出力切換手段５８を介して復号データが出力される。
【０１１４】
さらに、マジックナンバー４であれば、識別データ判定手段５４は、第１の復号手段５１によって復号したデータ列を、更に第２の復号手段５２で復号するように入力切換手段５３、切換手段５５ａ、５５ｂ、及び出力切換手段５８を切り換える。そして、第１の復号手段５１と第２の復号手段５２に対して復号開始の指示を行う。したがって、この指示に基づき、第１の復号手段５１及び第２の復号手段５２は復号処理を開始し、両復号手段５１及び５２によって復号処理された復号データは出力切換手段５８を介して出力される。
【０１１５】
尚、マジックナンバー１〜４ではない場合、識別データ判定手段５３は、判定した識別データも含めて、そのまま入力データ列を出力する。但し、この場合、エラー応答する構成としてもよい。
【０１１６】
以上のように処理することによって、圧縮時に設定されたマジックナンバー１〜４に基づいて復号処理を行うことができ、圧縮方式に対応する適切な復号方式を選択して効率よい復号処理を行うことができる。
（実施形態１３）
次に、本発明の実施形態１３について説明する。
【０１１７】
本実施形態もデータの復元処理について説明するものである。尚、本例は前述の実施形態５乃至７による確率統計型符号化方法で圧縮されたデータ列を復元するものである。以下、具体的に説明する。
【０１１８】
図２４は本例の復号アルゴリズムを示すフローチャートである。符号化データ列は、前述の圧縮フォーマットに含まれるＦ１〜Ｆ８テーブル、フラグとデータを８つのエリア（又は４つのエリア）に分けて出力する。
【０１１９】
先ず、Ｆ１〜Ｆ８テーブルからデータを取り出す準備を行う（ステップ（以下、Ｖで示す）１）。次に、Ｆ１テーブルのデータエンドを判断し（Ｖ２）、データが存在すればＦ１テーブルから１ビットのデータを取り出し（Ｖ３）、非圧縮データであるか、又は圧縮データであるか判断する（Ｖ４）。
【０１２０】
ここで、非圧縮データであれば、Ｆ８テーブルから1バイトのデータを取り出し、出力する（Ｖ５）。一方、圧縮データである場合には（Ｖ４がＹＥＳ）、Ｆ２テーブルから１ビットのデータを取り出し、出現頻度が最も多いデータであるか判断する（Ｖ７）。そして、出現頻度が最も多いデータである場合、Ｂｅｓｔ１のコードを参照し、Ｂｅｓｔ１コードを出力する（Ｖ８）。
【０１２１】
また、Ｂｅｓｔ１コードではない場合、Ｆ３テーブルをビット単位に参照し、出現頻度がその次に多いＢｅｓｔ２〜３のコードであるか判断する（Ｖ１０）。ここで、出現頻度が次に多いＢｅｓｔ２〜３のコードである場合（Ｖ１０がＹＥＳ）、Ｆ５テーブルをビット単位に参照し、Ｂｅｓｔ２のコードか、又はＢｅｓｔ３のコードか判断する（Ｖ１２）。そして、Ｂｅｓｔ２のコードであれば、コード表を参照しＢｅｓｔ２のコードを出力し（Ｖ１２がＹＥＳ、Ｖ１３）、Ｂｅｓｔ３のコードであればコード表を参照し、Ｂｅｓｔ３のコードを出力する（Ｖ１２がＮＯ、Ｖ１４）。
【０１２２】
一方、Ｆ３テーブルの判断において、出現頻度がＢｅｓｔ２〜３のコードではない場合、Ｆ４テーブルをビット単位に参照し、出現頻度がその次に多いＢｅｓｔ４〜７のコードの判断を行う（Ｖ１５、Ｖ１６）。そして、Ｂｅｓｔ４〜７のコードである場合、Ｆ６テーブルを２ビット単位にアクセスし、その２ビットが示すＢｅｓｔ４〜７のコード表の該当データを出力する（Ｖ１６がＹＥＳ、Ｖ１７）。一方、Ｂｅｓｔ４〜７のコードではない場合、Ｆ７テーブルを４ビット単位にアクセスし、その４ビットが示すＢｅｓｔ８〜２３のコード表の該当データを出力する（Ｖ１６がＮＯ、Ｖ１８）。
【０１２３】
以上のようにデータの復元処理を行うことによって、確率統計型符号化方法によって圧縮されたデータ列を復元することができ、圧縮処理に対応したデータの復元処理を行うことができる。
（実施形態１４）
次に、本発明の実施形態１４について説明する。
【０１２４】
本実施形態もデータの復元処理について説明するものである。尚、本例は前述の実施形態９に対応するものである。
図２５は本実施形態を説明する図である。本例は膨大な入力データを分割して圧縮処理した圧縮データを復元する処理を説明するものである。同図において、原データ分割・入力手段６０は、入力ファイル６１に記憶された入力データを分割して入力データバッファ６３に出力する。このように構成することにより、圧縮データは分割され入力データバッファ６３に供給され、以後識別データを識別データ判定手段６５によって識別し、第１の復号手段６６、第２の復号手段６７、又は元データ出力手段６８を選択して圧縮データの復号処理を行うことができる。
【０１２５】
また、本例の復号処理によって復号されたデータは、出力データバッファ６９を介して出力され、この出力処理の際、復号データは復号結果データ出力手段７０によって、出力されるファイル７１に順次出力されて記憶される。
【０１２６】
以上のようにデータの復元処理を行うことによって、膨大な大きさのデータについても、圧縮時と同じ長さに分割された状態で復元出力を得ることができる。
（実施形態１５）
次に、本発明の実施形態１５について説明する。
【０１２７】
本実施形態は前述の実施形態１０の復号処理の変形例であり、図２６に本例の構成を示す。同図において、第１の復元手段７１は準適応型(semi-adaptive)確率統計型符号化データの復号処理を行い、第２の復元手段７２は適応型の辞書型符号化データ(Lempel-Ziv法）の復号処理を行う。さらに、本例においては、ＦＩＦＯ（first-in first-out）メモリ７３が実装され、第１の復元手段７１によって１バイトの圧縮データを復号すると、ＦＩＦＯメモリ７３に１バイトの復号データが入力し、この１バイトのデータはＦＩＦＯメモリ７３から第２の復元手段７２に出力され、復号処理される。
【０１２８】
したがって、本例によれば、第１の復元処理と第２の復元処理を並行動作させることができ、データの復元（復号化）の高速化が図れる。
【符号の説明】
【０１２９】
１、２・・・圧縮手段
３・・・入力データバッファ
４・・・Ｐバッファ
５・・・Ｑバッファ
１１、１２・・・圧縮手段
１３・・・中間データバッファ
１４・・・頻度テーブル
２０・・・入力バッファ
２１、２２・・・圧縮手段
２３・・・中間データバッファ
２４、２４ａ、２４ｂ・・・頻度テーブル
２５・・・サイズ算出・判定手段
２６・・・元データ出力手段
２７・・・出力データバッファ
３０・・・入力バッファ
３１・・・圧縮手段
３２・・・統計モデル処理手段
３３・・・頻度テーブル
３４・・・エントロピー符号化手段
３５・・・準備処理部
３６・・・エントロピー符号化処理部
３７・・・出力処理手段
３９・・・圧縮効率判定部
４０・・・原データ分割・入力手段
４１・・・入力ファイル
４３・・・入力データバッファ
４４・・・圧縮結果データ出力手段
５１、５２・・・復元手段
５３・・・入力切換手段
５４・・・識別データ判定手段
５５、５５ａ、５５ｂ・・・切換手段
５６・・・切換手段、
５８・・・出力切換手段
６０・・・原データ分割・入力手段
６３・・・入力データバッファ
６５・・・識別データ判定手段
６６、６７・・・復号手段
６８・・・元データ出力手段
６９・・・出力データバッファ
７０・・・復号結果データ出力手段
７１、７２・・・復元手段
７３・・・ＦＩＦＯメモリ
７４・・・出力ファイル
【図１】
2010136417.tif 000003
【図３】
2010136417.tif 000004
【図４】
2010136417.tif 000005
【図５】
2010136417.tif 000006
【図６】
2010136417.tif 000007
【図７】
2010136417.tif 000008
【図８】
2010136417.tif 000009
【図９】
2010136417.tif 000010
【図１０】
2010136417.tif 000011
【図１１】
2010136417.tif 000012
【図１２】
2010136417.tif 000013
【図１３】
2010136417.tif 000014
【図１４】
2010136417.tif 000015
【図１５】
2010136417.tif 000016
【図１６】
2010136417.tif 000017
【図１７】
2010136417.tif 000018
【図１８】
2010136417.tif 000019
【図２０】
2010136417.tif 000020
【図２１】
2010136417.tif 000021
【図２２】
2010136417.tif 000022
【図２３】
2010136417.tif 000023
【図２４】
2010136417.tif 000024
【図２５】
2010136417.tif 000025
【図２６】
2010136417.tif 000026
【図２８】
2010136417.tif 000027
【図２】
2010136417.tif 000028
【図１９】
2010136417.tif 000029
【図２７】
2010136417.tif 000030