JP3449338B2 - データ圧縮方法、データ復元方法及び情報処理装置 - Google Patents

データ圧縮方法、データ復元方法及び情報処理装置

Info

Publication number
JP3449338B2
JP3449338B2 JP2000166584A JP2000166584A JP3449338B2 JP 3449338 B2 JP3449338 B2 JP 3449338B2 JP 2000166584 A JP2000166584 A JP 2000166584A JP 2000166584 A JP2000166584 A JP 2000166584A JP 3449338 B2 JP3449338 B2 JP 3449338B2
Authority
JP
Japan
Prior art keywords
data
dictionary
compressed
string
data compression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2000166584A
Other languages
English (en)
Other versions
JP2001044850A (ja
Inventor
隆二 大本
彦之介 上井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2000166584A priority Critical patent/JP3449338B2/ja
Publication of JP2001044850A publication Critical patent/JP2001044850A/ja
Application granted granted Critical
Publication of JP3449338B2 publication Critical patent/JP3449338B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Record Information Processing For Printing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、登録番号に関連づ
けて登録データ列が登録される辞書を使用して行うデー
タ圧縮方法、圧縮データを復元するためデータ復元方法
及び情報処理装置に関する。
【0002】
【背景技術】プリンタ等の情報処理装置では最近、種々
の印字サイズのビットマップフォントやアウトラインフ
ォントを供給することで付加価値を高め、さらにどの印
字サイズにおいても高印字品質を維持しようとする要求
が高まっている。そこで、プリンタ等の分野では最近、
これらフォントデータからなる大量の情報を効率よく記
憶させるためのデータ圧縮技術が注目されるようになっ
ている。
【0003】大量の情報をできるだけ少ない容量で記憶
あるいは転送するためのデータ圧縮の従来技術として
は、ハフマン符号のように固定長ビットのデータを可変
長ビットのコードに変換する技術や、いわゆるLempel-Z
iv特許(米国特許第4464650 号明細書)やLZW特許
(米国特許第4558302 号明細書)のように過去に現れた
データ列とこれから圧縮しようとしているデータ列との
一致を利用して圧縮を行う技術等が知られている。
【0004】しかし、これらの従来技術は、いわゆる動
的辞書を使用して行うデータ圧縮方法である。即ち、圧
縮すべき対象データを解析し、出現頻度等を調べながら
データを辞書構造の形で登録し、この辞書を用いて同時
にデータを圧縮していく方法である。この場合、辞書は
リアルタイムでどんどん変わって行くのが特徴である。
この動的辞書によるデータ圧縮では、圧縮処理が行われ
た対象データだけが生成物として残るが、データを復元
する際は圧縮時の履歴データの特性を調べ、再び辞書を
作成し直しながら次のデータを復元して行かねばならな
い。従って、圧縮された対象データの最初から順に処理
を行って行かなければならないという問題がある。
【0005】さて、プリンタ等におけるフォントデータ
の圧縮では、圧縮されたフォントデータはプリンタある
いはホストコンピュータ側の記憶装置に格納される。そ
して、印字の際には、記憶装置の中から必要な圧縮され
たフォントデータを取り出し、この圧縮されたフォント
データを通常のデータに復元して印字データを形成す
る。従って、この様な条件においてデータ圧縮を用いる
場合、必要とされるのは記憶装置に格納されているデー
タを如何に早く復元し、印字データを形成するかであ
る。
【0006】また、プリンタ等においてフォントデータ
を圧縮する際に重要となるもう一つのポイントは、どの
ような印字データ(文字)をどの順番でも出力できると
いう自在性を持たせることである。つまり、プリンタ等
においては記憶されているデータに対してランダムにア
クセスし、ランダムに印字データを形成できることが要
求される。
【0007】
【発明が解決しようとする課題】ハフマン符号等の圧縮
方法よりも一般に圧縮率が高いとされるLempel-ZivやL
ZWなどのデータ圧縮方法は、今後の圧縮技術の主流に
なると思われる。しかし、その一方で、これらの圧縮技
術は動的辞書を用いたデータ圧縮であるためにデータを
復元する際も過去のデータ特性を調べ、更新していかね
ばならず、復元に時間がかかるという問題がある。
【0008】また、Lempel-ZivやLZWなどのデータ圧
縮方法は復元の際には、圧縮データの最初から順にデー
タを復元せねばならず、必要な印字データのみを必要な
ときに自由に取り出すことはできないという問題があ
る。
【0009】また、LZW等で用いられている増分分解
法と呼ばれるデータ圧縮方法では、辞書に登録できるデ
ータ列の個数を1ずつしか増やしてゆくことができない
ため、例えば同じデータ列が連続する場合には、データ
圧縮率をいまいち高めることができないという問題があ
った。
【0010】本発明は、以上のような課題を解決するた
めになされたものであり、その目的とするところは、Le
mpel-ZivやLZWのデータ圧縮方法のような高圧縮率を
維持しつつ、それでいて復元の処理を比較的短い時間で
済ませ、かつ必要なデータ列のみを自由に復元可能にす
るデータ圧縮方法、圧縮されたデータ列を復元できるデ
ータ復元方法及び情報処理装置を提供することにある。
【0011】また、本発明の他の目的は、増分分解法よ
りもさらに圧縮率の高い方法を創出することにより、圧
縮されたデータ列とその際に生成された辞書の格納のた
めに必要な記憶容量を少なくすることができるデータ圧
縮方法、圧縮されたデータ列を復元できるデータ復元方
法及び情報処理装置を提供することにある。
【0012】
【課題を解決するための手段】上記課題を解決するため
に、本発明は、登録番号に関連づけて登録データ列を登
録できる辞書を使用しデータ列の2以上の組み合わせを
該登録番号に置き換えることでデータ圧縮を行うデータ
圧縮方法であって、圧縮対象であるデータ列のデータ圧
縮に最適な辞書が生成されるまで辞書を更新し、最適な
辞書が生成された段階で該辞書を最終的な復元用の静的
辞書として出力するとともに、該静的辞書により圧縮対
象であるデータ列のデータ圧縮を行い、圧縮されたデー
タ列を最終的な復元用の圧縮データとして出力すること
を特徴とする。
【0013】本発明によれば、辞書には、登録番号に関
連づけて登録データ列が登録される。そして、データ列
の2以上の組み合わせを該登録番号に置き換えることで
データ圧縮が行われる。このようにデータ圧縮を行え
ば、復元の際に該登録番号により上記登録データ列を読
み出すことにより元のデータ列を復元することが可能と
なる。この場合、辞書は、圧縮対象であるデータ列のデ
ータ圧縮に最適な辞書が生成されるまで、更新される。
即ち、例えば圧縮データのデータ量、辞書のデータ量等
が最適になるまで辞書が更新されることになる。そし
て、最適な辞書が生成された段階で、該辞書が最終的な
復元用の静的辞書として出力される。また、該静的辞書
により圧縮対象であるデータ列のデータ圧縮が行われ、
圧縮されたデータ列が最終的な復元用の圧縮データとし
て出力される。そして、出力された最終的な静的辞書、
圧縮データは、例えば記憶装置、記憶媒体等に格納さ
れ、プリンタ、コンピュータ等の情報処理装置により復
元され、元のデータ列が復元されることになる。このよ
うに本発明によれば、最適な辞書が生成されるまで辞書
の更新が行われ、この最適な辞書を静的な辞書としてこ
の静的辞書によりデータ圧縮が行われる。従って、出力
される静的辞書と圧縮データのデータ量を最適なものと
することができる。更に、出力されるまでの辞書は静的
辞書である必要がないため、例えばデータ圧縮率の非常
に高い動的辞書を用いたデータ圧縮アルゴリズム等によ
り辞書の更新、データ圧縮を行うことが可能となる。こ
れにより、最終的な圧縮データのデータ圧縮率を非常に
高めることが可能となる。一方、出力された辞書は静的
辞書となるため、必要なデータ列をこの静的辞書を用い
て自在に復元することも可能となる。
【0014】また、本発明は、前記最適な辞書が生成さ
れるまでの前記辞書の更新が、組み合わせ個数の多いデ
ータ列の組み合わせを優先的に登録することにより生成
された辞書から使用頻度の低い登録データ列の登録を辞
書の登録数が所定数になるまで削除することにより行わ
れることを特徴とする。
【0015】本発明によれば、組み合わせ個数の多いデ
ータ列の組み合わせを優先的に登録することにより辞書
が生成される。このような辞書を生成させるための手法
としては、例えばスライド辞書と呼ばれる手法を利用す
ることができる。そして、このスライド辞書手法を利用
する場合には、スライド辞書手法により過去のデータ列
と対象となるデータ列との間の最長一致データ列を探し
出し、この最長一致データ列を辞書に登録することで辞
書を生成することになる。これにより、組み合わせ個数
の多いデータ列の組み合わせが優先的に登録された辞書
を生成することが可能となる。そして、このような辞書
を使用することにより、組み合わせ個数の多いデータ列
の組み合わせが優先的に辞書の登録番号に置き換えられ
ることになるため、データの圧縮率を最適なものとする
ことができる。一方、このようにして生成された辞書は
その登録数が非常に多くなる場合がある。そこで、この
生成された辞書から使用頻度の低い登録データ列の登録
を削除することで辞書の更新を行い、辞書の登録数が所
定数になった段階で更新を終了すれば、圧縮率が良い、
いいかえればデータ量の少ない最適な辞書を生成するこ
とが可能となる。
【0016】また、本発明は、前記最適な辞書が生成さ
れるまでの前記辞書の更新が、出現確率が高いデータ列
の組み合わせを優先的に登録することにより生成された
辞書から使用頻度の低い登録データ列の登録を辞書の登
録数が所定数になるまで削除することにより行われるこ
とを特徴とする。
【0017】本発明によれば、出現確率の高いデータ列
の組み合わせを優先的に登録することにより辞書が生成
される。このデータ列の組み合わせの出現確率は、例え
ば、圧縮対象となる全データ列の出現確率を調べ、この
出現確率から求めることができる。そして、このように
して生成された辞書を用いることにより、出現確率の高
いデータ列の組み合わせが優先的に登録番号に置き換え
られることになるため、データ圧縮率を最適なものとす
ることができる。そして、生成された辞書から使用頻度
の低い登録データ列の登録を削除することで辞書の更新
を行い、辞書の登録数が所定数になった段階で更新を終
了すれば、データ量の少ない最適な辞書を生成すること
が可能となる。
【0018】また、本発明は、前記最適な辞書が生成さ
れるまでの前記辞書の更新が、データ圧縮の際に辞書が
動的に変化するデータ圧縮アルゴリズムにより辞書を更
新しながら圧縮対象となる全てのデータ列に対するデー
タ圧縮の処理を行い、該処理により更新された辞書を用
いて再び前記データ圧縮アルゴリズムにより辞書を更新
しながら圧縮対象となる全てのデータ列に対するデータ
圧縮の処理を行い、データ圧縮率が最適になるまで前記
処理を繰り返すことにより行われることを特徴とする。
【0019】本発明によれば、データ圧縮の際に辞書が
動的に変化するデータ圧縮アルゴリズム、例えば増分分
解アルゴリズム、加増分解アルゴリズム等により辞書を
更新しながら全圧縮対象データ列に対するデータ圧縮の
処理が行われる。そして、次に、この処理により更新さ
れた辞書を用いて再び前記データ圧縮アルゴリズムによ
り辞書を更新しながら全圧縮対象データ列に対するデー
タ圧縮の処理が行われる。そして、この処理をデータ圧
縮が最適になるまで繰り返すことにより、最適な辞書が
生成されることになる。本発明によれば、データ圧縮率
の高い動的辞書を用いたデータ圧縮アルゴリズムにより
データ圧縮がなされ、しかもデータ圧縮率が最適な段階
で辞書の更新が終了するため、データ圧縮率を非常に高
めることが可能となる。一方、出力された辞書は静的辞
書となるため、必要なデータ列をこの静的辞書を用いて
自在に復元することも可能となる。
【0020】また本発明は、前記データ圧縮アルゴリズ
ムにより圧縮データを出力すべき時に増える圧縮データ
出力回数に基づいて、最適な辞書が生成されたか否かが
判断されることを特徴とする。
【0021】また本発明は、登録番号に関連づけて登録
データ列を登録できる辞書を使用しデータ列の2以上の
組み合わせを該登録番号に置き換えることでデータ圧縮
を行うデータ圧縮方法であって、(A)圧縮対象である
データ列から所定数のデータ列を取り出し所定数のバッ
ファを有する作業領域に格納する工程と、(B)前記作
業領域内の隣り合うバッファに格納されるデータ列の組
み合わせが辞書に登録されているか否かを解析し、辞書
に登録されている場合には、該データ列の組み合わせを
辞書における前記登録番号に置き換えるとともに置き換
えにより生じた空きバッファを埋めるようにデータ列を
作業領域内でシフトさせ、その結果作業領域の終端に生
じた空きバッファに続きのデータ列を取り込み、再び作
業領域内の隣り合うバッファに格納されるデータ列の組
み合わせが辞書に登録されているか否かを解析する工程
と、(C)上記工程(B)の解析により作業領域内の隣
り合うバッファに格納されるデータ列の組み合わせのい
ずれもが辞書に登録されていないと判断された場合に
は、作業領域内の先頭から1番目、2番目のバッファに
格納されるデータ列の組み合わせを辞書に登録するとと
もに1番目のデータ列を消去し、消去により生じた空き
バッファを埋めるようにデータ列を作業領域内でシフト
させ、その結果作業領域の終端に生じた空きバッファに
続きのデータ列を取り込む工程とを含み、圧縮の対象と
なる全てのデータ列が前記作業領域内に格納されるまで
前記工程(B)、(C)を繰り返すことを特徴とする。
【0022】本発明によれば、作業領域内の隣り合うバ
ッファに格納されるデータ列の組み合わせが辞書に登録
されているか否かが解析され、登録されている場合には
辞書の登録番号に置き換えられる。そして、その結果生
じた空きバッファに続きのデータ列を取り込み、再びデ
ータ列の組み合わせが辞書に登録されているか否かが解
析される。そして、データ列の組み合わせが辞書に登録
されていないと判断されると、先頭から1番目、2番目
のデータ列の組み合わせが登録され、その結果生じた空
きバッファに続きのデータ列が取り込まれる。そして、
これらの処理が、全てのデータ列が作業領域内に格納さ
れるまで繰り返されることでデータ圧縮が行われる。こ
のように本発明によれば、所定容量の作業用領域を設
け、注目しているデータ列と同じデータ列が作業用領域
に存在する場合は辞書を用いた置き換え処理が行われる
ようになっている。従って、特に同一のデータ列を圧縮
処理する場合に、辞書の登録数を従来の増分分解法と比
べて非常に少なくすることができるとともに、該辞書の
登録番号により置き換えられて圧縮が施された圧縮デー
タ自体も、従来の増分分解法に比べて非常に少ないデー
タ量とすることができる。
【0023】また、本発明は、圧縮の対象となる全ての
データ列に対して処理が行われるまでの前記工程
(B)、(C)の繰り返しを1回のパスとした場合に、
前回のパスで更新された辞書を用いて現在のパスにおけ
るデータ圧縮を行うデータ圧縮方法であって、現在のパ
スにおける前記工程(B)、(C)の繰り返し回数が前
回のパスにおける繰り返し回数以下の場合には次のパス
に移行し、現在のパスにおける前記工程(B)、(C)
の繰り返し回数が前回のパスにおける繰り返し回数より
も大きい場合には前回のパスで更新された辞書を最終的
な復元用の静的辞書として出力するとともに、該静的辞
書により1回のパスのデータ圧縮を行い、圧縮されたデ
ータ列を最終的な復元用の圧縮データとして出力するこ
とを特徴とする。
【0024】本発明によれば、現在のパスにおける処理
の繰り返し回数と前回のパスの処理の繰り返し回数を比
較することで、データ圧縮率が最適になったか否かが判
断される。そして、最適なデータ圧縮率になった段階で
該辞書を最終的な静的辞書とし、該静的辞書及び該静的
辞書により圧縮されたデータが出力される。従って、圧
縮率の非常に高い加増分解アルゴリズムによりデータ圧
縮が可能となりデータ圧縮率が非常に高められるととも
に、出力された辞書は静的辞書となるため、必要なデー
タ列をこの静的辞書を用いて自在に復元することも可能
となる。
【0025】また、本発明は、前記辞書には登録番号、
登録データ列と共に使用頻度情報が記憶され、使用頻度
の低い登録データ列を順次削除する工程を含むことを特
徴とする。
【0026】本発明によれば、使用頻度の低い登録デー
タ列の登録を順次削除する工程が含まれる。従って、辞
書の登録可能数に限界がある場合等に、辞書のデータ量
を最適なサイズとすることが可能となる。
【0027】また、本発明は、前記使用頻度の低い登録
データ列の削除が、辞書に登録されている登録データ列
の使用頻度数を順次減らしてゆき、初めに使用頻度数が
所定数以下になった登録データ列から優先して削除する
ことにより行われることを特徴とする。
【0028】本発明によれば、辞書に登録されている登
録データ列の使用頻度数を順次減らしてゆき、初めに使
用頻度数が所定数以下になった登録データ列から優先し
て削除される。これにより、辞書の登録可能数に限界が
ある場合等に、辞書のデータ量を最適なサイズとするこ
とが可能となる。しかも、初めに使用頻度が所定数以下
になった登録データ列が優先的に削除されるため、辞書
に使用頻度の高い登録データ列を残すことができ、最適
な辞書を生成できる。
【0029】また、本発明は、圧縮の対象となるデータ
列が文字の印字の際に必要なフォントデータであること
を特徴とする。
【0030】本発明によれば、文字印字の際に必要なフ
ォントデータが圧縮対象となる。このようなフォントデ
ータとしては、ビットマップフォントデータ、アウトラ
インフォントデータ等が考えられる。ビットマップフォ
ントデータを圧縮する場合には、例えば縦方向、横方向
に並んだ所定数単位(例えば1バイト単位、1ワード単
位)のドットデータを圧縮対象とすることができる。ま
た、アウトラインフォントデータを圧縮する場合には、
例えば文字の輪郭を構成する各点の属性情報、各点のベ
クトル座標を制御するための情報等を圧縮対象とするこ
とができる。
【0031】また、本発明は、前記フォントデータの中
の一部のみが前記圧縮の対象となるデータ列となり、他
の一部が他のデータ圧縮方法によりデータ圧縮されるこ
とを特徴とする。
【0032】本発明によれば、フォントデータを構成す
るデータの特性に応じて、一部のデータが静的辞書、増
分分解アルゴリズム、加増分解アルゴリズム等を利用し
たデータ圧縮方法で圧縮され、他の一部が他の圧縮方
法、例えばハフマン符号手法により圧縮される。このよ
うに、データの特性に応じて、適用する圧縮方法を換え
ることで、データの圧縮率を更に高めることが可能とな
る。
【0033】また本発明は、アウトラインフォントの各
点の属性を表す情報、文字の特性を表す情報が、前記圧
縮の対象となるデータ列になり、各点における打ち出し
方向のベクトル座標を表す情報が、他のデータ圧縮方法
によりデータ圧縮されることを特徴とするデータ圧縮方
法。
【0034】また、本発明は、共通の字体を有する前記
文字に対しては共通の前記辞書を用いてデータ圧縮が行
われることを特徴とする。
【0035】本発明によれば、共通の字体を有する文字
に対しては、共通の辞書を用いてデータ圧縮が行われ
る。例えば、明朝体の文字に対しては、全て明朝体専用
の辞書を用いて辞書の更新、データ圧縮を行い、最終的
な静的辞書、圧縮データを得る。また、ゴシックの文字
列に対しては、全てゴシック専用の辞書を用いて辞書の
更新、データ圧縮を行い、最終的な静的辞書、圧縮デー
タを得る。このように字体の各々について辞書を共通化
することで、データを効率よく圧縮することが可能とな
る。
【0036】また、本発明は、圧縮の対象となるデータ
列が文字列であることを特徴とする。
【0037】本発明によれば、文字列データが圧縮対象
となる。これにより、例えば文字の記憶に必要な容量等
を節約することができる。
【0038】また、本発明は、最終的に生成された辞書
に含まれる登録番号と登録データ列の情報とから、前記
登録データ列を復元専用のデータ形式に変換した復元専
用登録データ列と該復元専用登録データ列のデータ長と
該復元専用登録データ列の開始アドレスの情報とを含む
復元専用の辞書が生成されることを特徴とする。
【0039】本発明によれば、復元専用登録データ列
と、この復元専用登録データ列のデータ長と、この復元
専用登録データ列の開始アドレスの情報とを含む復元専
用の辞書が生成される。そして、復元の際には、この復
元専用辞書を用いてデータの復元が行われる。即ち、前
記開始アドレスで指定される位置から前記データ長で指
定される長さの前記復元専用登録データ列を読み出すこ
とで辞書からデータを読み出し、復元処理が行われる。
この場合、復元専用登録データ列は、復元専用のデータ
形式に変換されている。従って、通常の辞書を用いる場
合よりも、非常に速く復元処理を行うことが可能とな
る。
【0040】また、本発明は、上記のいずれかのデータ
圧縮方法により生成された圧縮データと最終的な辞書と
を用いて、該データ圧縮方法に応じた復元処理により圧
縮対象となったデータ列を復元することを特徴とする。
【0041】本発明によれば、上記データ圧縮方法によ
り生成された圧縮データと最終的な辞書とを用いて元の
データ列が復元される。これにより、この復元されたデ
ータ列を用いて所定の処理、例えば文字の印字等の処理
を行うことができる。
【0042】また、本発明は、上記のいずれかのデータ
圧縮方法により生成された圧縮データと最終的な辞書と
を用いて、該データ圧縮方法に応じた復元処理により圧
縮対象となったデータ列を復元する手段を含むことを特
徴とする。
【0043】本発明によれば、上記データ圧縮方法によ
り生成された圧縮データと最終的な辞書を用いて、復元
手段により元のデータ列が復元される。そして、この復
元手段は、例えば、コンピュータ、プリンタ等の情報処
理装置に内蔵させることができる。
【0044】
【発明の実施の形態】以下、本発明の最適な実施例につ
いて説明する。なお、以下の第1、第2の実施例では、
説明を簡単にするためにデータ列として主に文字列を圧
縮する場合を例にとり説明を行う。しかし、本発明にお
けるデータ列には、このような文字列のみならず例えば
フォントデータを構成するためのバイト列、ワード列等
のあらゆる種類のデータ列が含まれる。
【0045】1.第1の実施例 図1には、本実施例のデータ圧縮方法を説明するための
フローチャートが示される。本実施例のデータ圧縮方法
では、登録番号に関連づけて登録データ列を登録できる
辞書が使用される。そして、データ列の2以上の組み合
わせをこの登録番号に置き換えることでデータ圧縮が行
われることになる。まず、圧縮対象である全てのデータ
列(例えば文字列)から辞書が生成され(ステップA
1)、データ圧縮に最適な辞書が生成されるまで辞書の
更新が繰り返される(ステップA2、A3)。そして、
最適な辞書が生成された段階でこの辞書を最終的な復元
用の静的辞書とし、この静的辞書により圧縮対象である
データ列のデータ圧縮が行われる(ステップA4)。そ
して、これにより圧縮された最終的な復元用の圧縮デー
タ及び最終的な復元用の静的辞書が出力され、マスクR
OM、EEPROM等の記憶装置、記憶媒体に格納され
る。そして、この記憶装置等に格納された静的辞書及び
圧縮データを用いて、プリンタあるいはホストコンピュ
ータ等の情報処理装置内においてデータの復元処理が行
われることになる。
【0046】なお、辞書を生成・更新してゆき、どの段
階でデータ圧縮に最適な辞書とするかを決める手法とし
ては、後述するように種々の手法が考えられる。
【0047】図2には、本実施例のデータ圧縮方法が使
用されるデータ圧縮装置12の構成の一例が示される。
圧縮対象である全データ列11は、まず辞書生成・更新
手段13に入力され、これにより辞書の生成・更新が行
われる。そして、データ圧縮に最適な辞書が生成された
段階で、該辞書は静的辞書14として静的辞書保持手段
15に保持される。そして、この保持された最適の静的
辞書14は、静的辞書出力手段16により外部の記憶手
段(図示せず)へと出力される一方、データ圧縮手段1
7において全データ列11をデータ圧縮するのに利用さ
れる。このデータ圧縮は、データ列の2以上の組み合わ
せを辞書の登録番号に置き換えることで行われる。そし
て、この結果得られた圧縮データ19は、圧縮データ出
力手段18により外部の記憶手段へと出力されることに
なる。
【0048】次に、本実施例における辞書の構成につい
て説明する。例えば、 ”static_string_dictionar
y” というデータ列(文字列)を圧縮する場合を考える。こ
の場合に辞書に、 ”st”、”at”、”ic”、”_”、”st”、”
ring_d”、 ”ic”、”tionary” の様に8個のデータ列の組み合わせが登録されていたと
する。この場合には、これらのデータ列の組み合わせは
例えば下記に示すように登録番号に関連づけて登録され
ている。 0:st 1:at 2:ic 3:_ 4:ring_d 5:tionary すると、”static_string_dictio
nary”というデータ列は、これらの登録番号によ
り、 0、1、2、3、0、4、2、5 というように置き換えることが可能となり、これにより
データが圧縮されることになる。
【0049】次に、最適な辞書を生成するための種々の
手法について説明する。本実施例では、最終的には静的
辞書と圧縮データの2つが出力され、これらが記憶装置
に格納される。従って、記憶装置の使用容量を節約する
ためには、最終的な静的辞書、圧縮データのデータ量を
減らす必要があり、これらのデータ量を少なくできる辞
書を最適な辞書ということができる。即ち、最適な辞書
とするためには、辞書自体のデータ量を小さくできるこ
とが望ましく、あるいは、圧縮データのデータ量を小さ
くできることが望ましい。このために、本実施例では例
えば以下の第1〜第4の手法を用いている。なお、以下
ではデータ列として文字列を例に取り説明する。
【0050】(A)最適な辞書を得るための第1の手法 この手法では、スライド辞書と呼ぶ手法を利用し、組み
合わせ個数の多いデータ列の組み合わせを優先的に登録
することにより辞書を生成する。そして、生成された辞
書の登録数を使用頻度情報に基づいて順次削除してゆく
ことで最適な辞書を得る。
【0051】まず、スライド辞書と呼ぶ手法について図
3(A)〜(E)を用いて説明する。この手法では、圧
縮対象となる全文字列41を最初から順に対象文字列4
3として作業領域であるメモリ空間上に記憶させてゆ
く。そして、過去の文字列42(最初から対象文字列4
3の前まで)に該対象文字列43と同じ文字列がなかっ
たかを調べる。そして、過去に同じ文字列がなかったな
ら、該対象文字列43の最初の1文字を対象文字列43
から過去の文字列42へと移す(スライドする)。一
方、もし過去に同じ文字列があったなら、次の文字列も
一致するかを調べ、これを繰り返すことにより過去の文
字列42と対象文字列43との間の最長一致文字列(文
字列の組み合わせ個数の最も多いもの)を見つけ出す。
【0052】例えば、圧縮対象となる文字列がABCA
BCDEFであった場合を考える。この場合は、まずA
が対象文字列43となるが、過去に同じ文字列はないた
め、Aは過去の文字列42であるスライド辞書に移され
る(図3(B)参照)。そして、B、Cについても過去
に同じ文字列がないためスライド辞書に移される(図3
(C)参照)。そして、次にAが対象文字列43となる
が、この場合にはAはスライド辞書内にあるため、次の
Bが一致するか否かが調べられる(図3(D)参照)。
そして、この場合は一致するため、次にCが一致するか
否かが調べられる(図3(E)参照)。そして、次にD
が一致するか否かが調べられるが、Dはスライド辞書内
にない。そこで、この場合はABCが最長一致文字列と
される。
【0053】さて、スライド辞書と呼ばれる手法では、
このように最長一致文字列ABCを見つけ出すことによ
り、例えばABCABCDEFという文字列を「A]、
「B」、「C]、「3つ前と3文字同じ」、「D」、
「E」、「F]に圧縮する。具体的には、一致が無い場
合には、その文字列を「一致無しフラッグ=1及びその
文字コード」により表し、一致があった場合には、その
最長一致文字列を「一致無しフラッグ=0及び一致場所
及び一致長」で表すことによりデータ圧縮を行う。
【0054】しかし、本実施例においては、スライド辞
書の手法を、実際のデータ圧縮に利用するのではなく、
圧縮対象文字列の中の最長一致文字列を見つけ出すため
にのみ利用している。そして、本実施例では、最長一致
文字列が見つけ出されると、この最長一致文字列を登録
番号に関連づけて辞書に登録する。上記例では、ABC
が辞書に登録されることになる。このようにして、全て
の圧縮対象文字列の中で2回以上現れる最長一致文字が
見つけ出され、これらが辞書に登録されることになる。
これにより、組む合わせ個数の多い文字列が優先的に辞
書に登録されることになる。
【0055】なお、スライド辞書手法を用いる場合は過
去の文字列をメモリに記憶しておく必要がある。しか
し、図3(A)に示すようにメモリの容量は有限であり
メモリに記憶できる範囲は有限である。従って、この場
合には過去の文字列42の中においてメモリに記憶でき
る範囲内のものだけがスライド辞書になる。
【0056】図4には、スライド辞書手法を利用して最
適な辞書を得る手法を説明するためのフロチャートが示
される。図4に示すように、まず、スライド辞書手法を
用いて圧縮対象文字列の中で2回以上現れる最長一致文
字が見つけ出され、これらを辞書に登録することで辞書
が生成される(ステップB1)。次に、生成された辞書
を用いて、全ての圧縮対象文字列の中から辞書登録文字
列と最長に一致する文字列の組み合わせを見つけ出し、
見つけ出した時点でその登録文字列の使用頻度を1つず
つ増やす(ステップB2)。例えば圧縮対象文字列がA
BCDEFで、登録文字列がABとABCであった場合
は、登録文字列ABCの使用頻度が1つ増やされる。
【0057】このようにして使用頻度を計算した後、次
に、使用頻度の少ない登録文字列から順に例えば100
個程度の登録を削除する(ステップB3)。この場合、
例えば辞書への登録可能数が、4096−256=38
40個であった場合には、全登録数が3840個未満に
ならないように登録の削除を行う。具体的には、例えば
削除前の辞書への全登録数が3900個であった場合に
は60個のみを削除する。
【0058】次に、全登録数が、3840個(所定数)
以下か否かが判断され(ステップB4)、3840個よ
り多い場合には、ステップB2に戻り再度使用頻度が計
算され、ステップB3で100個程度の登録が削除され
る。このようにしてステップB2〜B4を繰り返し、辞
書の登録数を順次少しずつ減らしてゆく。そして、登録
数が3840個となった時点でステップB5に移行す
る。上記のように辞書には例えば3840個登録できる
ため、登録数が3840個となったところで、その辞書
は最適な辞書とされることになる。
【0059】最後に、この最適な辞書を静的な辞書と
し、この静的辞書により全圧縮対象文字列を圧縮し、最
終的な静的辞書と圧縮データを出力することになる(ス
テップB5、B6)。
【0060】(B)最適な辞書を得るための第2の手法 この手法では、出現確率の高い文字列の組み合わせを優
先的に登録することで辞書を生成する。そして、生成さ
れた辞書の登録数を使用頻度情報に基づいて順次削除し
てゆくことで最適な辞書を得る。
【0061】まず、圧縮対象となる全文字列を例えば1
回解析することで各文字列の出現確率を計算する。その
後、この出現確率に基づいて、文字列の組み合わせの出
現確率を求める。
【0062】例えば、上記の解析・計算により、a、
b、c、dの出現確率が、 a;50% b;20% c;10% d; 5% と求まったとする。すると、文字列の組み合わせaa等
の出現確率は、 aa;25% aaa;12.5% ab;10% ba;10% ac;5% ca;5% aab;5% aba;5% baa;5% ad;2.5% ‥‥‥ と計算される。但し、これは文字列間の出現確率に相関
関係が無いと仮定した場合の予想値となるものである。
【0063】このようにして、文字列の組み合わせの出
現確率を求めた後、この出現確率の高い文字列の組み合
わせから優先的に登録することで辞書を生成する。次
に、例えば図4のステップB2〜B4と同様の手法によ
り、使用頻度の少ない文字列の登録を、辞書の登録が所
定数例えば3840個になるまで削除し、最適な辞書を
生成する。そして、ステップB5、B6と同様の手法に
より、最終的な静的辞書とこれにより圧縮された圧縮デ
ータを出力することになる。以上の手法によれば、初め
の解析が1回の走査で完了できるという利点がある。
【0064】(C)最適な辞書を得るための第3の手法 この手法では、増分分解アルゴリズムを利用して最適な
辞書を得る。増分分解アルゴリズムの詳細については、
後述の第2の実施例において加増分解アルゴリズムの対
比において説明する。
【0065】図5には、増分分解アルゴリズムを利用し
て、最適な辞書を得る手法を説明するためのフローチャ
ートが示される。この手法では、まず、辞書の初期化を
行う(ステップC1)。これにより辞書の登録番号0〜
255にだけ登録文字列が登録された状態になる。具体
的には0〜255にはアスキーコードの文字が記憶され
る。次に、圧縮データの出力回数を表すNUM0がNU
M0=0に設定される(ステップC2)。その後、増分
分解アルゴリズムを用いて辞書を更新しながら全圧縮対
象文字列に対するデータ圧縮を行い、圧縮データを出力
すべき時に上記のNUM0の値を1ずつ増やす(ステッ
プC3)。この際、圧縮データ自体は外部に出力しな
い。ステップC3の処理は辞書の更新を目的とする処理
だからである。
【0066】次に、NUM1がNUM1=0に設定され
る(ステップC4)。その後、ステップC3で最終的に
得られた辞書を用いて、ステップC3と同様の処理を行
う。即ち、増分分解アルゴリズムを用いて辞書を更新し
ながら全圧縮対象文字列に対するデータ圧縮を行い、圧
縮データを出力すべき時に上記のNUM1の値を1ずつ
増やす(ステップC5)。そして、この際にも圧縮デー
タ自体は外部に出力しない。
【0067】次に、NUM1>NUM0か否かが判断さ
れる(ステップC6)。これによりステップC5の処理
によりデータ圧縮率が最適になったか否か、即ち最適な
辞書になったか否かが判断される。そして、NUM1≦
NUM0ならば、まだ最適な辞書ではないとして、NU
M0=NUM1とされ(ステップC7)、ステップC
4、C5の処理が繰り返される。NUM0、NUM1は
圧縮データの出力回数を表し、これが少ないということ
は圧縮データのデータ量も少ないことを意味する。従っ
て、NUM1≦NUM0ということは、ステップC5の
処理でデータ圧縮率が向上したことを意味する。このた
め、この場合には、更にステップC4、C5の処理が繰
り返されることになるわけである。そして、ステップC
6で、NUM1>NUM0となった場合に、データ圧縮
に最適な辞書になったと判断される。
【0068】次に、この最適な辞書を静的な辞書とし、
この静的辞書により全圧縮対象文字列が圧縮される(ス
テップC8)。但し、このデータ圧縮の際には、辞書の
更新は行われない。そして、最後に、最終的な静的辞書
と、これにより圧縮された圧縮データが出力されること
になる(ステップC9)。
【0069】図6には、以上の処理を視覚的に表したも
のが示される。全圧縮対象文字列21はまず1回目の解
析を受け、これにより暫定的な辞書22が作成される
(この辞書は動的な辞書である)。次に再び全圧縮対象
文字列21は2回目の解析を受け、更新版1の辞書23
が作成される。さらに同様にして更新版2の辞書24が
作成される。このようにして辞書の更新を繰り返し、デ
ータの圧縮率を判定し最適な辞書が得られた段階で、こ
れを決定版の静的辞書25とする。そして、この静的辞
書25により全圧縮対象文字列21の圧縮を再び行う。
但し、この際には、静的辞書25は静的なままであり、
辞書の更新は行わない。そして、この静的辞書25と圧
縮されたデータが外部に出力され、記憶装置に格納され
ることになる。
【0070】また、図5、図6に示す手法と、LZWと
の主な相違は以下の通りである。即ち、LZWでは、デ
ータ圧縮後に最終的には圧縮データだけが生成物として
出力され、辞書は動的な辞書であり出力されない。LZ
Wは、電話回線を通じたデータ通信に利用されるデータ
圧縮手法であり、送信側はLZWにより圧縮データを出
力し、受信側がこれを復元する。そして、この復元の際
には、圧縮データの特性を解析し、圧縮データから再び
動的辞書を作成し直しながらデータを復元してゆく必要
がある。従って、圧縮データの最初から順に処理を行っ
ていかなければならなく、復元速度が遅く、また必要な
データ列にランダムにアクセスし復元することはできな
い。従って、LZWにより圧縮されたデータをプリンタ
等のフォントデータに利用することは困難である。
【0071】これに対して、図5、図6に示す手法で
は、LZWと異なり、最終的には圧縮データ、静的辞書
の2つが出力される。従って、データの復元をする場合
も再度辞書を作成し直す必要が無いため復元速度が速
い。また、静的辞書を用いているため、圧縮データの中
の所望のデータ列にランダムにアクセスすることもでき
る。なお、このように、復元速度が速い、データ列にラ
ンダムにアクセスできるという利点は、この第3の手法
のみならず前述の第1、第2の手法及び後述の第4の手
法においても得ることができる利点である。
【0072】(D)最適な辞書を得るための第4の手法 この手法では、加増分解アルゴリズムを利用して最適な
辞書を得る。加増分解アルゴリズムについては第2の実
施例において詳述する。しかし、処理の流れ自体は、ス
テップC3、C5でのデータ圧縮が加増分解アルゴリズ
ムにより行われる他は、図5とほぼ同様である。
【0073】上記の第3の手法では、増分分解アルゴリ
ズムを用いてデータ圧縮が行われるため高圧縮率の圧縮
データを得ることができるが、1文字ずつ登録する工程
が存在するため、処理速度は決して早いとは言えず、ま
た、加増分解アルゴリズムと比べると圧縮率は高くな
い。従って、圧縮率を高くする場合には、この加増分解
アルゴリズムを利用する第4の手法を採用することが望
ましい。
【0074】なお、以上の第1〜第4の手法において、
圧縮データは固定ビット長のコードとして出力される。
このコードは、例えば12ビットであったり、16ビッ
トの1ワードであったりする。そして、16ビットの1
ワードとした場合には処理速度が改善されるというメリ
ットを持つ反面、圧縮率は12ビットの場合よりも落ち
るというデメリットを持つ。
【0075】以上のように、本実施例によれば、最適な
静的辞書を作成するために、使用頻度に基づいて辞書登
録を削除したり、圧縮時に複数回データを走査する必要
があり、処理時間は長くはなる。しかし、これはユーザ
にとっては全く問題とならない。つまり、圧縮処理を行
うのはデータを例えば書換不可能な記憶装置、記憶媒体
(ROMなど)に書き込む際に必要なものであり、これ
は圧縮後の復元時の処理時間には何ら影響するものでは
ないからである。具体的に言えば、ユーザが、該圧縮方
法により圧縮されたデータを格納した記憶媒体を搭載し
たプリンタを使って印字を行う場合、メーカ側が圧縮デ
ータを作成する時間は多くかかるが、ユーザが印字をさ
せたい場合に行われる復元処理の速度は特に遅くなるこ
とはないからである。
【0076】2.第2の実施例 (A)加増分解法 図7には、本第2の実施例で使用されるデータ圧縮方法
(以下、加増分解法あるいは加増分解アルゴリズムと呼
ぶ)を模式的に説明する図が示される。
【0077】圧縮対象である文字列データ1は、まず作
業用記憶手段である作業用バッファ2にデータの最初の
部分から格納されていく。次に、該作業用バッファ2中
の文字列で辞書3に登録されている文字列が存在しない
かどうかを比較し、存在すれば該辞書3の情報を更新す
ると共に該作業用バッファ2中の文字列を登録番号で置
き換え、該作業用バッファ2に次の対象文字列を追加す
る。一方、登録されている文字列が存在しなければ該作
業用バッファ2中の先頭の2文字を該辞書3に登録し、
先頭の1文字を圧縮データ4として出力する。そして、
該作業用バッファ2に次の対象文字列を追加し、再び該
作業用バッファ2中の文字列で辞書3に登録されている
文字列が存在しないかどうかを比較する。以上の処理を
繰り返すことでデータの圧縮を行う。
【0078】次に、加増分解法を用いて次に示す文字列
データを圧縮対象として処理し、静的辞書と圧縮データ
を得る場合について詳しく説明する。ここで、圧縮対象
となる文字列データは、 「ABCEBCHA、BBCCDBCH、ABCABE
HD、ABBCGABK‥‥」 である。ただし、ここでは書換可能な記憶素子で構成さ
れる辞書の0 〜255 番までには、アスキーコードの文字
データが登録されているとする。また、作業用記憶手段
には、16バイトの容量のバッファを用意したとする。
【0079】(1)最初に、圧縮対象である文字列デー
タの先頭から作業用バッファの容量分(16バイト)の
データを取り込む。すると、作業用バッファ中の文字列
は「ABCEBCHA、BBCCDBCH」になる。こ
こで、各文字はそれぞれ1バイトで表される数値データ
であり、これは前述のようにアスキーコード表に従う。
例えば、" A" は65、”B”は66、”C”は67である。
【0080】(2)次に、この作業用バッファ中に既に
辞書に登録されている2文字以上の文字列(文字列の組
み合わせ)が存在するかどうかを調べる。しかし、その
ような文字列は登録されていないので、辞書の例えば25
6 番目に先頭の2文字" AB" を、長さは2(文字
分)、データ欄には65+66 (" A" と" B" のアスキー
コード)として登録し、この"256" 番の使用頻度を1回
とする。更に、作業用バッファ中の先頭の1文字" A"
の登録番号”65”を圧縮データとして出力し、作業用バ
ッファ上では消去する。そして、これにより生じた作業
用バッファ上の空欄の1バイトを埋めるようにそれ以降
の文字列をすべて先頭方向にシフトさせ、その結果生じ
る作業用バッファの終端の空白の1バイトには対象の文
字列データの続きから1文字分" A" を取り込む。する
と、作業用バッファの文字列は「BCEBCHAB、B
CCDBCHA」になる。
【0081】(3)次に、再びこの作業用バッファ中に
既に辞書に登録されている2文字以上の文字列が存在す
るかどうかを調べる。すると、作業用バッファの7、8
文字目に" AB" の文字列が存在しているので、2バイ
ト分の該文字列" AB" を256 の文字に置き換え、辞書
の"256" 番の文字列の使用頻度を2回に更新する。この
置き換えにより作業用バッファには1バイトの空欄が生
じるので、これを埋めるようにそれ以降の文字列をすべ
て先頭方向にシフトさせ、その結果生じる作業用バッフ
ァの終端の空白の1バイトには対象の文字列データの続
きから1文字分" B" を取り込む。すると、作業用バッ
ファ中の文字列は「BCEBCH256 B、CCDBCH
AB」になる。
【0082】(4)再びこの作業用バッファ中に既に辞
書に登録されている2文字以上の文字列が存在するかど
うかを調べる。すると、作業用バッファの15、16文字目
に"AB" の文字列が存在しているので、2バイト分の
該文字列" AB" を256 の文字に置き換え、辞書の"25
6" 番の文字列の使用頻度を3回に更新する。この置き
換えにより作業用バッファには1バイトの空欄が生じる
ので、これを埋めるようにそれ以降の文字列をすべて先
頭方向にシフトさせ、その結果生じる作業用バッファの
終端の空白の1バイトには対象の文字列データの続きか
ら1文字分" C"を取り込む。すると、作業用バッファ
中の文字列は「BCEBCH256 B、CCDBCH256
C」になる。
【0083】(5)再びこの作業用バッファ中に既に辞
書に登録されている2文字以上の文字列が存在するかど
うかを調べる。しかし、そのような文字列は登録されて
いないので、辞書の例えば257 番目に先頭の2文字" B
C" を、長さは2(文字分)、データ欄には66+67 とし
て登録し、この"257" 番の使用頻度を1回とする。さら
に、作業用バッファ中の先頭の1文字" B" の登録番
号"66"を圧縮データとして出力し、作業用バッファ上で
は消去し、これにより生じた作業用バッファ上の空欄の
1バイトを埋めるようにそれ以降の文字列をすべて先頭
方向にシフトさせ、その結果生じる作業用バッファの終
端の空白の1バイトには対象の文字列データの続きから
1文字分" A" を取り込む。すると、作業用バッファの
文字列は「CEBCH256 BC、CDBCH256 CA」
になる。
【0084】(6)再びこの作業用バッファ中に既に辞
書に登録されている2文字以上の文字列が存在するかど
うかを調べる。すると、作業用バッファの3 、4 文字
目、7、8 文字目、および11、12文字目に" BC" の文
字列が存在しているので、合計6バイト分の該文字列"
BC" をそれぞれ257 の文字に置き換え、辞書の"257"
番の文字列の使用頻度を4回に更新する。この置き換え
により作業用バッファには3バイトの空欄が生じるの
で、これを埋めるようにそれ以降の文字列をすべて先頭
方向にシフトさせ、その結果生じる作業用バッファの終
端の空白の3バイトには対象の文字列データの続きから
3文字分" BEH" を取り込む。すると、作業用バッフ
ァ中の文字列は「CE257 H256257CD、257 H256 C
ABEH」になる。
【0085】(7)再びこの作業用バッファ中に既に辞
書に登録されている2文字以上の文字列が存在するかど
うかを調べる。すると、作業用バッファの13、14文字目
に"AB" の文字列が存在しているので、2バイト分の
該文字列" AB" を256 の文字に置き換え、辞書の"25
6" 番の文字列の使用頻度を4回に更新する。この置き
換えにより作業用バッファには1バイトの空欄が生じる
ので、これを埋めるようにそれ以降の文字列をすべて先
頭方向にシフトさせ、その結果生じる作業用バッファの
終端の空白の1バイトには対象の文字列データの続きか
ら1文字分" D"を取り込む。すると、作業用バッファ
中の文字列は「CE257 H256257CD、257 H256 C25
6 EHD」になる。
【0086】(8)再びこの作業用バッファ中に既に辞
書に登録されている2文字以上の文字列が存在するかど
うかを調べる。しかし、そのような文字列は登録されて
いないので、辞書の例えば258 番目に先頭の2文字" C
E" を、長さは2(文字分)、データ欄には67+69 とし
て登録し、この"258" 番の使用頻度を1回とする。さら
に、作業用バッファ中の先頭の1文字" C" の登録番
号"67"を圧縮データとして出力し、作業用バッファ上で
は消去し、これにより生じた作業用バッファ上の空欄の
1バイトを埋めるようにそれ以降の文字列をすべて先頭
方向にシフトさせ、その結果生じる作業用バッファの終
端の空白の1バイトには対象の文字列データの続きから
1文字分" A" を取り込む。すると、作業用バッファの
文字列は「E257 H256257CD257 、H256 C256 EH
DA」になる。
【0087】(9)再びこの作業用バッファ中に既に辞
書に登録されている2文字以上の文字列が存在するかど
うかを調べる。しかし、そのような文字列は登録されて
いないので、辞書の例えば259 番目に先頭の2文字" E
257"を、長さは2(文字分)、データ欄には69+257とし
て登録し、この"259" 番の使用頻度を1回とする。更
に、作業用バッファ中の先頭の1文字" E" の登録番
号"69"を圧縮データとして出力し、作業用バッファ上で
は消去し、これにより生じた作業用バッファ上の空欄の
1バイトを埋めるようにそれ以降の文字列をすべて先頭
方向にシフトさせ、その結果生じる作業用バッファの終
端の空白の1バイトには対象の文字列データの続きから
1文字分" B" を取り込む。すると、作業用バッファの
文字列は「257 H256257CD257 、H256 C256 EHD
AB」になる。
【0088】(10)再びこの作業用バッファ中に既に
辞書に登録されている2文字以上の文字列が存在するか
どうかを調べる。すると、作業用バッファの15、16文字
目に" AB" の文字列が存在しているので、2バイト分
の該文字列" AB" を256 の文字に置き換え、辞書の"2
56" 番の文字列の使用頻度を4回に更新する。この置き
換えにより作業用バッファには1バイトの空欄が生じる
ので、これを埋めるようにそれ以降の文字列をすべて先
頭方向にシフトさせ、その結果生じる作業用バッファの
終端の空白の1バイトには対象の文字列データの続きか
ら1文字分" B" を取り込む。すると、作業用バッファ
中の文字列は「257 H256257CD257 、H256 C256 E
HD256 B」になる。
【0089】(11)再びこの作業用バッファ中に既に
辞書に登録されている2文字以上の文字列が存在するか
どうかを調べる。しかし、そのような文字列は登録され
ていないので、辞書の例えば260 番目に先頭の2文字"2
57H" を、長さは2(文字分)、データ欄には257+72と
して登録し、この"260" 番の使用頻度を1回とする。更
に、作業用バッファ中の先頭の1文字"257" を圧縮デー
タとして出力し、作業用バッファ上では消去し、これに
より生じた作業用バッファ上の空欄の1バイトを埋める
ようにそれ以降の文字列をすべて先頭方向にシフトさ
せ、その結果生じる作業用バッファの終端の空白の1バ
イトには対象の文字列データの続きから1文字分" C"
を取り込む。すると、作業用バッファの文字列は「H25
6257CD257 H、256 C256 EHD256 BC」になる。
【0090】(12)再びこの作業用バッファ中に既に
辞書に登録されている2文字以上の文字列が存在するか
どうかを調べる。すると、作業用バッファの7 、8 文字
目に"257H" の文字列が、15、16文字目に" BC" の文
字列が、それぞれ存在しているので、合計4バイト分の
該文字列"257H" を260 に、該" BC" を257 に置き換
え、辞書の"260" の使用頻度を2 回に"257" の使用頻度
を5回に更新する。この置き換えにより作業用バッファ
には2バイトの空欄が生じるので、これを埋めるように
それ以降の文字列をすべて先頭方向にシフトさせ、その
結果生じる作業用バッファの終端の空白の2バイトには
対象の文字列データの続きから2文字分" GA" を取り
込む。すると、作業用バッファ中の文字列は「H256257
CD260256C、256 EHD256257GA」になる。
【0091】(13)再びこの作業用バッファ中に既に
辞書に登録されている2文字以上の文字列が存在するか
どうかを調べる。しかし、そのような文字列は登録され
ていないので、辞書の例えば261 番目に先頭の2文字"
H256"を、長さは3(文字分)、データ欄には72+256と
して登録し、この"261" 番の使用頻度を1回とする。更
に、作業用バッファ中の先頭の1文字" H" の登録番
号"72"を圧縮データとして出力し、作業用バッファ上で
は消去し、これにより生じた作業用バッファ上の空欄の
1バイトを埋めるようにそれ以降の文字列をすべて先頭
方向にシフトさせ、その結果生じる作業用バッファの終
端の空白の1バイトには対象の文字列データの続きから
1文字分" B" を取り込む。すると、作業用バッファの
文字列は「256257CD260256C256 、EHD256257GA
B」になる。
【0092】(14)再びこの作業用バッファ中に既に
辞書に登録されている2文字以上の文字列が存在するか
どうかを調べる。しかし、そのような文字列は登録され
ていないので、辞書の例えば262 番目に先頭の2文字"2
56257"を、長さは4(文字分)、データ欄には256+257
として登録し、この"262" 番の使用頻度を1回とする。
更に、作業用バッファ中の先頭の1文字"256" を圧縮デ
ータとして出力し、作業用バッファ上では消去し、これ
により生じた作業用バッファ上の空欄の1バイトを埋め
るようにそれ以降の文字列をすべて先頭方向にシフトさ
せ、その結果生じる作業用バッファの終端の空白の1バ
イトには対象の文字列データの続きから1文字分" K"
を取り込む。すると、作業用バッファの文字列は「257
CD260256C256 E、HD256257GABK」になる。
【0093】(15)再びこの作業用バッファ中に既に
辞書に登録されている2文字以上の文字列が存在するか
どうかを調べる。すると、作業用バッファの11、12文字
目に"256257"の文字列が存在しているので、該"256257"
を262 に置き換え、辞書の"262" の使用頻度を2 回に更
新する。この置き換えにより作業用バッファには1バイ
トの空欄が生じるので、これを埋めるようにそれ以降の
文字列をすべて先頭方向にシフトさせ、その結果生じる
作業用バッファの終端の空白の1バイトには対象の文字
列データの続きから1文字を取り込む。すると、作業用
バッファ中の文字列は「257 CD260256C256 E、HD
262 GABK・」になる。
【0094】このように本実施例の加増分解法によれ
ば、作業用バッファの文字列の長さを常に一定に保つよ
うに圧縮対象の文字列データから順次データを取り込む
ようになっている。そして、該作業用バッファ内の先頭
からの相隣り合う文字列の組み合わせが辞書に登録され
ていればこれを辞書の登録番号に置き換えることで圧縮
を実行する。更に、この文字列の組み合わせが作業用バ
ッファの中に含まれていればこれをも辞書の登録番号に
置き換えることでさらに圧縮を実行している。従って、
従来の増分分解法の場合よりも圧縮データのデータ量が
削減され、結果的に圧縮データを少ない記憶容量で格納
することが可能となる。なお、圧縮データは、作業用バ
ッファ内の先頭からの相隣り合う文字列の組み合わせが
辞書に登録されていない場合に、該文字列の組み合わせ
を辞書登録した後に、出力されることになる。
【0095】以上の処理をツリー構造を用いて模式的に
表すと図8(A)のようになる。図8(A)では、上記
の説明に用いた(1)〜(15)に合わせて番号を付し
ている。但し、(1)、(10)、(12)、(15)
については図8(A)には示していない。
【0096】例えば、”AB”を辞書登録し、”A”を
出力する上記(2)の工程は、図8(A)において以下
のように表現される。即ち、図8(A)において、上矢
印の先に”AB”とすることで辞書登録することを表現
する。また、下矢印の先に”A”とすることで該文字を
圧縮データとして出力することを表現する。更に、これ
らの上矢印、下矢印の近くに工程の番号”2”を付すこ
とで、当該処理が工程(2)の処理であることを表現す
る。
【0097】また、上記(3)の工程のように辞書に登
録されている文字”AB”を作業用バッファ中に見つ
け、これを登録番号で置き換える場合は、該置き換える
べき文字列の上を括り、そこに該処理が行われる工程の
番号”3”を付している。
【0098】因みに本実施例の場合、圧縮済みの出力デ
ータは以下のようになる。 「A、B、C、E、257 、H、256 、257 、C、・・
・」 また、辞書には結局次のような文字列が登録されること
になる。 0 〜255 アスキーコード 256 AB 257 BC 258 CE 259 E257 260 257 H 261 H256 262 256 257 ‥ ‥‥‥
【0099】(B)増分分解法 次に、前記の例と同じ以下の文字列データを従来の増分
分解法を用いた方法により処理し、辞書と圧縮データを
得る場合について説明する。ただし、ここでも辞書には
最初からアスキーコードの文字を0 〜255 番に登録して
いたとする。「ABCEBCHA、BBCCDBCH、
ABCABEHD、ABBCGABK‥‥」
【0100】(1)送られてくる文字列は上記に示した
加増分解法のように、一定のバイト分ずつ作業用バッフ
ァに一旦格納されることはなく、先頭部分の必要最低限
の文字列のみが作業用バッファに取り込まれる。そこ
で、この作業用バッファ中の1文字目" A" が辞書に登
録されているかどうかを調べる。すると、該" A" は辞
書の65番目に登録されているので、その使用頻度のカウ
ント数を1にする。
【0101】(2)次に、2文字目" B" を加え、この
作業用バッファ中の文字" AB" が辞書に登録されてい
るかどうかを調べる。しかし、2文字以上の文字列で辞
書にすでに登録されているものは見つからない。そこ
で、先頭の2文字" AB" を番号の256 番目に、長さは
2(文字分)、データ欄には65+66 として登録し、辞書
の"256" の使用頻度を1回と記す。次に、作業用バッフ
ァ中の先頭の該" A" を圧縮データとして出力し、次は
対象となる文字列データの2文字目" B" から注目す
る。
【0102】(3)新しい1文字目" B" が辞書に登録
されているかどうかを調べる。すると、該" B" は辞書
の66番目に登録されているので、その使用頻度のカウン
ト数を1にする。
【0103】(4)次に、新しい2文字目" C" を加
え、この作業用バッファ中の文字" BC" が辞書に登録
されているかどうかを調べる。しかし、また2文字以上
の文字列で辞書にすでに登録されている文字列は見つか
らない。そこで、先頭の2文字" BC" を番号の257 番
目に、長さは2(文字分)、データ欄には66+67 として
登録し、辞書の"257" の使用頻度を1回と記す。次に、
作業用バッファ中の先頭の該" B" を 圧縮データとし
て出力し、次は対象の文字列データの3文字目"C" か
ら注目する。
【0104】(5)これと同様の操作が最初から4文字
目のEまで続き、" EB" が登録されたあと、作業用バ
ッファ中の新しい1文字目" B" が辞書に登録されてい
るかどうかを調べる。しかし、該" B" は辞書の66番目
に登録されているので、その使用頻度のカウント数を今
度は2にする。
【0105】(6)次に、新しい2文字目" C" を加
え、この作業用バッファ中の文字列"BC" が辞書に登
録されているかどうかを調べる。すると今度は、辞書
の"257"番目に" BC" の文字が登録されているので、
その使用頻度を2回と記し、さらに新しい3文字目を加
えた文字列" BCH" が辞書に登録されているかどうか
を調べる。
【0106】(7)すると、これは登録されていないの
で、この2文字列" BCH" を番号の260 番目に、長さ
は3(文字分)、データ欄には257+72として登録し、辞
書の"260" の使用頻度を1回と記す。次に、先頭の" B
C" の登録番号"257" を圧縮データとして出力し、次は
対象の文字列データの7文字目" H" から注目する。
【0107】図9には、以上の増分分解法の動作を説明
するためのフロチャートを参考として示す。
【0108】このようにして増分分解法は行われてゆく
が、本実施例の加増分解法との大きな違いは処理対象の
文字列データを先頭から1文字ずつ取り込み、辞書との
一致を見て行くことである。
【0109】以上の処理を図8(A)の例と同様にツリ
ー構造を用いて模式的に表すと図8(B)のようにな
る。ただし、図中の1〜8の番号は上記の工程の説明で
用いられた番号には沿っていない。ここで、例えば、”
AB”を辞書登録し、”A”を出力する1の工程では、
上矢印の先に”AB”とすることで辞書登録を表すこと
とし、下矢印の先に”A”とすることで該文字を圧縮デ
ータとして出力することを表すこととする。
【0110】さて、図8(B)から理解されるように、
従来の増分分解法では、図8(A)の(3)の工程のよ
うに辞書に登録されている文字”AB”を作業用バッフ
ァ中の先頭以外の途中に見つけ、これを登録番号で置き
換える工程は有り得ない。有り得るのは、図8(B)の
5の工程のように、ただ辞書に登録してある文字列の右
側に新しい1文字を加え、その上を括ることで新しい文
字列を作り出すことのみである。
【0111】因みに、この増分分解法による圧縮済みの
出力データは以下のようになる。 「A、B、C、E、257 、H、256 、257 、C、D、25
7 、H、256 、・・・」 また、辞書には結局次のような文字列が登録されること
になる。 0 〜255 アスキーコード 256 AB 257 BC 258 CE 259 EB 260 257 H 261 HA 262 256 B 263 257 C 264 CD 265 DB 266 260 A ‥ ‥‥‥
【0112】図8(A)と図8(B)を比較した場合、
例に示す範囲においては出力される圧縮データは同じも
のとなるが、辞書に登録される文字列は確実に異なって
おり、注目する文字列が圧縮対象の文字列データの後に
行くほど違いがでてくる。
【0113】このように、従来の増分分解法では1文字
ずつしか増やしていけないために特に図10(A)、
(B)で示すような同じ文字列が連続する文字列データ
については、本実施例の加増分解法とは大きな違いが生
じ、加増分解法の方が少ない記憶容量で記憶することが
可能になる。
【0114】図10(A)には、本実施例の加増分解法
により連続する文字列を圧縮する場合が示され、図10
(B)には増分分解法により連続する文字列を圧縮する
場合が示される。図10(B)の増分分解法の場合、辞
書にはA,AA,AAA,AAAA,AAAAA,AA
AAAA,…の順で登録が行われていくため、Aの文字
16バイト分を圧縮処理するのに16回の出力と17回の辞書
登録を行わなければならない。一方、図10(A)の本
実施例の加増分解法の場合、辞書にはA,AA,AAA
A,AAAAAAAA,AAAAAAAAAAAAAA
AA,…の順で登録が行われていくため、Aの文字16バ
イト分を圧縮処理するのにわずか5回の出力と6回の辞
書登録を行うだけで済むことになる。
【0115】このように、同じ文字が連続する文字列デ
ータの場合は、本実施例の加増分解法の効果は明らかで
あり、その圧縮率は従来の増分分解法と比べて非常に高
くなる。これは言い替えれば、同じ量の文字列データを
処理するのに少ない出力回数で済むことを意味する。そ
して、出力時における文字列は必ず辞書の登録番号の固
定長バイトに置き換えられて出力されるため、少ない出
力回数は少ないバイト数を示し、圧縮データが少ないと
いうことを意味することになる。
【0116】(C)最適な辞書の生成 以上説明した加増分解法による処理は、前述の図6と同
様に、全圧縮対象文字列に対して複数回行われ、これに
より文字列データを最も効率よく圧縮できる最適な辞書
が生成される。以下、この辞書の最適化処理について図
11、図12を用いて説明する。
【0117】図11のフロチャートは、辞書を最適化す
るために加増分解法により行われる1回のパスの処理が
示される。ここで、1回のパスとは、全ての文字列が作
業バッファに格納され全ての文字列に対して処理が行わ
れるまでをいう。図11では、まず、NUM=0とされ
る(ステップE1)。次に、buf1、buf2(作業
バッファ内の1番目、2番目)に格納される文字列の組
み合わせ(即ちAB)が辞書に登録されているか否かが
調べられる(ステップE2)。登録されていると判断さ
れた場合には、このbuf1、buf2に格納される文
字列の組み合わせを辞書の登録番号に置き換え、この置
き換えにより空きが生じたbuf16に次の文字列(即
ちB)を格納する(ステップE3)。その後、ステップ
E2に戻り、再度buf1、buf2の文字列の組み合
わせが辞書に登録されていないか否かが調べられる。
【0118】一方、ステップE2で、buf1、buf
2の文字列の組み合わせが辞書に登録されていないと判
断された場合は、今度はbuf2、buf3の文字列の
組み合わせが辞書に登録されていないか否かが調べられ
る(ステップE4)。そして、登録されている場合はス
テップE5に移行し、その後、またステップE2に戻
る。登録されていない場合は、次のステップに移行す
る。
【0119】このようにしてbuf15、buf16の
文字列の組み合わせまで調べてゆき(ステップE8)、
この文字列の組み合わせが登録されていない場合は、今
回のパスが最終パスか否かが最終パスフラッグにより調
べられる(ステップE10)。そして、最終パスでない
場合には、ステップE11に移行し、buf1、buf
2の文字列の組み合わせを新たに辞書に登録する。そし
て、buf1に格納される文字列を消去するとともに作
業バッファ内の文字列を左にシフトし、これにより生じ
た空きを埋めるようにbuf16に次の文字列を格納す
る。更に、NUM=NUM+1とし、NUMの値を1つ
増やし、その後、ステップE2に戻る。一方、ステップ
E10で最終パスであると判断された場合には、buf
1の文字列を圧縮データとして外部に出力し、buf1
の文字列を消して1文字左にずらし、空いたbuf16
に次の文字列を入れることになる(ステップE12)。
【0120】なお、図11では、例えばステップE8、
E9の後、ステップE2に戻っているが、本発明では必
ずしもステップE2にまで戻る必要はない。即ち、この
場合には、置き換わる文字列はbuf15、buf16
に格納される文字列のみなので、これにより判断に影響
が出るステップE6にまで戻れば十分である。このこと
はステップE6等の他のステップでも同様である。
【0121】以上の処理を繰り返し、全圧縮対象文字列
が作業バッファに格納され1回目のパスが終わると、図
12に示すようにNUM2=NUMに設定される(ステ
ップF2)。ここで、NUMは、図11のステップE1
1を通る毎に1ずつ増やされるもので、圧縮データの出
力回数を表すものに相当する(実際には、ステップE1
1、E12に示すように、最終パスになるまでは圧縮デ
ータは外部に出力されない)。
【0122】次に、ステップF3に示すように、2回目
のパスが行われる。この2回目のパスでは、1回目のパ
スで更新された辞書が使用され、これにより辞書が成熟
化されてゆく。この2回目のパスは、1回目のパスと同
様に、図11に示す処理により全圧縮対象文字列に対し
て行われる。次に、ステップF4で、NUM>NUM2
か否かが判断される。NUM≦NUM2の場合は、ステ
ップF3における圧縮データ出力回数NUMの方がステ
ップF1における圧縮データ出力回数NUM2よりも小
さいことを意味し、データの圧縮率が向上したことを意
味する。従って、この場合には、ステップF2に戻り、
最適な辞書が得られるまで処理が繰り返されることにな
る。そして、NUM>NUM2となると、最適な辞書が
生成されたと判断され、最終パスフラッグ=1に設定さ
れ(ステップF5)、最終パスの圧縮動作が行われる
(ステップF6)。
【0123】最終パスの圧縮動作では、最終パスフラッ
グ=1となっているため、図11のステップE10の判
断は常にYESの方向になり、常にステップE12に移
行することになる。即ち、この場合にはステップE12
を通る毎に、buf1に格納されている文字列が圧縮デ
ータとして外部に出力されることになる。また、ステッ
プE12では、ステップE11のように辞書に新たな文
字列が登録がされることがなく、辞書は前回のパスにお
ける辞書のままで、更新されない。そして、この更新さ
れない辞書が、静的な辞書として圧縮データと共に外部
に出力され、記憶装置等に格納されることになる。
【0124】(D)使用頻度 さて、以上のようにして、最適な辞書を作成していく過
程において、辞書の登録数が限界に達し、新たに使用頻
度の高い文字列を辞書に登録しようとしても登録できな
い場合が生じる。この場合には、使用頻度の低い登録文
字列を消去し、消去により生じた空きの部分に登録した
い文字列を書き込むようにする。
【0125】図13(A)には、このような使用頻度の
情報を含む辞書の構造が示され、図13(B)には、こ
の使用頻度に基づく登録削除の処理のフローチャートが
示される。
【0126】ここで、Pは、新たに登録する辞書の登録
番号を表すものであり、Pの初期値は256である。そ
して、図13(A)に示すように、辞書の登録場所に
は、256〜4095の登録番号が割り振られている。
各登録番号の場所には、1文字目の番号を入れる場所
と、2文字目の番号を入れる場所と、使用頻度を入れる
場所とがある。使用頻度の初期値は全て”0”であり、
使用頻度=0は、その場所には登録文字列が何も登録さ
れていないことを示す。
【0127】新たに、1文字目+2文字目の組合わせか
らなる文字列を登録する場合には、図13(B)のステ
ップG1に示すように、辞書の中のPの場所(図13
(A)では258番の場所)に、1文字目、2文字目の
文字列を書き込む。次に、P=P+1とし(ステップG
2)、次の場所(259番の場所)を見る。この場合、
P=4096となった場合には、P=256に設定され
る(ステップG3、G4)。次に、Pの場所(259番
の場所)の使用頻度が調べられ(ステップG5)、使用
頻度>1ならばPの場所の使用頻度を1減らす(ステッ
プG7)。そして、またステップG2に戻り、P=P+
1として次の場所(260番の場所)を見る。
【0128】例えば、今、辞書の256〜4095の場
所に空きが1つもない場合を考える。この場合には、使
用頻度=0となる場所が生じるまで、ステップG2〜G
5の処理が繰り返される。そして、初めに使用頻度=0
となった場所の登録が削除される(ステップG6)。そ
して、新たに辞書登録を行う場合には、この削除された
場所に辞書登録することになる。
【0129】以上の処理により、登録番号256〜40
95の中で、最も使用頻度の低い登録文字列を削除する
ことが可能となり、この登録が削除された場所に、新た
に他の文字列を登録することが可能となる。これによ
り、使用頻度の高い登録文字列が優先的に登録された辞
書を生成することが可能となる。
【0130】(E)復元処理 本実施例により生成された辞書は以下のようにツリー構
造となっている。 (辞書) 256: 30+ 56 257: 80+ 16 258:256+257 259:256+257 260:259+257 従って、この辞書により例えば登録番号256〜260
に登録される登録文字列を復元すると、以下のようにな
る。 (文字列復元) 256=30+56 257=80+16 258=256+40 =30+56+40 (256=30+56より) 259=256+257 =30+56+257 (256=30+56より) =30+26+80+16(257=80+16より) 260=259+257 (259=256+257より) =256+257+257(256=30+56より) =30+56+257+257(257=80+16より =30+56+80+16+257 =30+56+80+16+80+16(257=80+16より)
【0131】このように本実施例により圧縮された文字
列を復元するのには、登録文字列を構成する全ての文字
列が256より小さくなるまで分解処理を行う必要があ
る。しかし、復元をする際に、上記のような分解処理を
行うと、文字列の復元速度が非常に遅くなるという問題
がある。そこで、この問題を解決するために、生成され
た辞書から以下に述べるような復元専用の辞書を生成
し、この復元専用の辞書をROM等の記憶媒体に格納
し、復元の際に使用することが望ましい。
【0132】図14(A)には、この復元専用辞書の構
造が示されている。復元専用辞書の先頭部分には、文字
列長(データ長)と、文字列開始アドレスの情報とが登
録番号256〜4095の順に並んで格納されている。
そして、その後ろに文字列のコア部分(文字列の羅列)
が格納されている。この文字列のコア部分は、上記のよ
うに、登録文字列を構成する全ての文字列が256より
小さくなるまで分解処理を行うことにより生成したもの
であり、これらの文字列は復元専用の登録文字列とな
る。
【0133】復元処理を行う際には、図14(B)に示
すように、登録番号256〜4095の位置に格納され
た文字列開始アドレスにより、文字列のコア部分の中の
対応する開始アドレスを指定する。そして、この開始ア
ドレスから、文字列長により指定される長さだけ文字列
(復元専用登録文字列)を取り出すことにより、データ
の復元が行われる。この場合、文字列のコア部分は、あ
らかじめ上記のように分解処理されているため、ツリー
構造の辞書よりも復元処理の速度を非常に早くすること
が可能となる。
【0134】図15には、この復元専用の辞書を用いた
場合の、復元処理のフローチャートが示される。まず、
ステップH2で、12ビットのコードを読み出し、コー
ドが終了記号であった場合には終了となり(ステップH
4)、終了記号でない場合は、ステップH5に移行す
る。そして、コードの番号にしたがって辞書から復元さ
れる文字列開始アドレスと文字列長の情報を得る。そし
て、得られた文字列開始アドレスから文字列長分の文字
列を復元バッファに書き込む(ステップH6)。以上の
処理を、終了記号が検出されるまで繰り返すことによ
り、データの復元が可能となる。
【0135】3.第3の実施例 第3の実施例は、以上の第1、第2の実施例で説明した
データ圧縮手法により、いわゆるフォントデータを圧縮
する実施例である。
【0136】(A)ビットマップフォントデータ まず、ビットマップフォントデータを圧縮する場合につ
いて説明する。ビットマップフォントのデータは通常ラ
スター方向に並んでいる。しかし、本実施例によりビッ
トマップフォントのデータを圧縮する場合、縦方向に圧
縮した方が圧縮率がかなり良くなる。そこで、図16
(A)に示すように、縦方向にデータ圧縮することにす
る。しかし、もちろん横方向にデータ圧縮してもかまわ
ない。
【0137】図16(A)に示すように、ビットマップ
フォントデータ(40ドット×40ドット)は、40バ
イト固定長のデータブロックを5個並べることで構成さ
れる。本実施例では、各データブロック毎に第1、第2
の実施例で示した圧縮手法により圧縮する。なお、通常
はこの様な形でデータ圧縮を行うが、圧縮率よりも復元
速度を優先する場合は、図16(A)のようなバイト列
単位ではなく、図16(B)に示すように横に並んだ2
バイトを1ワードとして、ワード列単位でデータ圧縮を
行うことも可能である。これにより、復元速度を上げる
ことが可能となるが、その反面、辞書に登録できる文字
列の数を32768程度にする必要があるという問題が
ある。
【0138】図17には、例えば「に」という文字を、
ビットマップイメージで示したものが示される。図17
において”1”が書き込まれている部分が黒となる。そ
して、他の部分には”0”が書き込まれており、この部
分は白となる。図17から明らかなように、0〜7、1
2、13、30〜39番のバイト列(データ列)は00
h(ヘクサ表示)となる。また、10、11、14〜1
6、27〜29番のバイト列は01hとなる。また、8
番のバイト列は02hとなり、9、17〜26番のバイ
ト列は03hとなる。このように、ビットマップフォン
トデータを、縦方向に圧縮してゆくと、同じ値のバイト
列が連続する。従って、第1、第2の実施例のデータ圧
縮手法により高効率に圧縮されることが理解される。
【0139】(B)アウトラインフォントデータ アウトラインフォントとは、文字の輪郭を、何個かの点
とそれを結ぶ直線、曲線により表そうとするものであ
る。通常の大きさの文字(例えば10ポイント)につい
ては、上記のビットマップフォントを用いて印字する
が、ユーザによっては32ポイントなどの大きなサイズ
で印字したい場合がある。このような場合に、各々のサ
イズのビットマップフォントデータをあらかじめ用意し
ておくことはデータ容量との関係で困難である。そこ
で、このような場合には、各々の文字について基本とな
るアウトラインフォントを持っておき、このアウトライ
ンフォントにより文字の輪郭を表し、これをスケーリン
グにより拡大し、これを図17に示すようなビットマッ
プイメージのデータに変換する。これにより所望のサイ
ズの文字を印字することが可能となる。
【0140】例えば、アウトラインフォントにより
「2」という文字の輪郭は、図18に示すように、点
A、B、C、D、E、F、G・・・・とこれを結ぶ直
線、曲線により表すことができる。そして、本実施例で
は、このアウトラインフォントのデータを、NSIフォ
ーマットと呼ぶデータ形式で記述する。
【0141】さて、本実施例では、このNSIフォーマ
ットで記述されたアウトラインフォントデータを、図1
9(A)に示すように3つの部分、即ちFLG部分、D
AT部分、VCT部分に分離して圧縮している。
【0142】ここで、VCT部分は各点における打ち出
し方向のベクトル座標を表す情報であり、各点のX、Y
ベクトル座標情報が含まれる。なお、これらのX、Yベ
クトル座標は、座標の絶対値を表すものではなく、1つ
前の点からの相対値を表すものである。
【0143】また、FLG部分は、各点の属性を表す情
報であり、例えば、「A点は始点である」、「A点とB
点は直線で結ばれる」、「B点とD点はC点を中間点と
する曲線(ベゼー曲線)で結ばれる」、「D点とE点は
直線で結ばれる」、「E点とG点はF点を中間点とする
曲線(ベゼー曲線)で結ばれる」等を表す情報が含まれ
る。更に、DAT部分は、文字の特性を表す情報であ
り、文字の大きさを表す情報、あるいは文字の線幅を表
す情報等が含まれる。本実施例においては、VCT部分
についてはハフマン符号法により圧縮する。これに対し
て、FLG部分、DAT部分については、同じデータが
続く等の、ある程度の規則性があるため、上記第1、第
2の実施例で説明したデータ圧縮方法により圧縮する。
このようにアウトラインフォントデータを構成する成分
を、成分毎に分離し圧縮することにより、圧縮率を大幅
に向上させることが可能となる。そして、圧縮後のデー
タの構造は、図19(B)に示すように、まずFLG部
分の圧縮データのみが並び、その次にDAT部分の圧縮
データのみが並び、その次にVCT部分の圧縮データの
みが並ぶという構造になる。また、FLG部分、DAT
部分、VCT部分の各々に対応した専用の復元用辞書が
用意されることになる。
【0144】この圧縮データを復元する際には、FLG
部分、DAT部分を復元し、その後、これに基づいてV
CT部分を復元することになる。図19(C)には、こ
の復元処理のフロチャートが示される。まず、ステップ
I2で、FLG部分をFLG用の静的辞書で復元し、こ
れをFLG用に設けられたバッファに一時的に書き込
む。次に、ステップI3で、DAT部分をDAT用の静
的辞書で復元し、これをDAT用に設けられたバッファ
に一時的に書き込む。この状態では、データ読み出し用
のポインタは、図19(B)に示すように圧縮されたV
CT部分の先頭を指し示すことになる。
【0145】次に、ステップI4に示すように、DAT
部分とFLG部分をNSIフォーマットの規則にしたが
って上記バッファから読み出し、出力した後、読み出さ
れたFLG部分のビット0〜ビット3(これらのビット
の詳細は後述する)にしたがって、VCT部分をハフマ
ン符号に復元する。これにより、NSIフォーマットの
順番に戻された元のアウトラインフォントデータを得る
ことが可能となる。
【0146】さて、本実施例では、データの圧縮率を更
に向上させるために、上記のFLG部分、VCT部分
を、下記の座標点制御部、座標点定義部で表せるフォー
マットに変更した後、圧縮を行っている。
【0147】ここで、座標点制御部のビット4〜ビット
7は、元のFLG部分のビット4〜7と同じであり、こ
れらのビット4〜ビット7により、各点の属性の指定、
即ち始点・中間点・終点のいずれなのか、移動補間、直
線補間、曲線補間のいずれなのか等が指定される。ま
た、座標点制御部のビット0〜ビット3は、座標点定義
部に定義されるベクトル座標の値が以下の意味になるこ
とを表す。即ち、ビット0はXベクトル座標が0でない
値であり存在することを表し、ビット1はYベクトル座
標が0でない値であり存在することを表す。また、ビッ
ト2はXベクトル座標が負の値であることを表す。更
に、ビット3はYベクトル座標が負の値であることを表
す。
【0148】座標点定義部には10ビットのコード(0
〜1023)が並ぶ。そして、これらのコードと、座標
点制御部のビット0〜ビット3の指定により、 −1024≦Xベクトル座標≦1024 −1024≦Yベクトル座標≦1024 の範囲のベクトル座標値を表すことができる。
【0149】例えば、ビット0=1の時は、座標点定義
部にはX−1のデータがあることが示される。また、ビ
ット1=1の時は、座標点定義部にはY−1のデータが
あることが示される。文字において縦棒、横棒等がある
場合には、Xベクトル座標=0であったり、Yベクトル
座標=0であったりする場合があり、この場合には、X
ベクトル座標、Yベクトル座標を圧縮データとして出力
する必要はない。従って、この場合には、座標点制御部
のビット0、1の制御により、座標点定義部でのXベク
トル座標、Yベクトル座標の有無を指定できれば、デー
タ圧縮率を更に向上することが可能となる。また、Xベ
クトル座標、Yベクトル座標の正負の指定も、上記のよ
うに座標点制御部のビット2、3により指定し、これに
よりデータ圧縮率を更に向上させることができる。
【0150】以上に説明したように、本実施例によれ
ば、ビットマップフォントデータ、アウトラインフォン
トデータを効果的に圧縮することができる。そして、こ
の圧縮の際には、第1、第2の実施例で説明した静的辞
書が用いられる。この場合、静的辞書は、共通の字体
(フォント)の文字に対しては共通の静的辞書とするこ
とが望ましい。例えば、明朝体の文字に対しては、全て
明朝体専用の辞書を用いて辞書の更新、データ圧縮を行
い、最終的な静的辞書、圧縮データを得る。また、ゴシ
ックの文字に対しては、全てゴシック専用の辞書を用い
て辞書の更新、データ圧縮を行い、最終的な静的辞書、
圧縮データを得る。このように字体の各々について辞書
を共通化することで、データを効率よく圧縮することが
可能となる。これは、字体が共通であると、例えば文字
の輪郭の変化の仕方(線の跳ね上がり方等)、輪郭の太
さ等が各文字の間で共通となるため、文字自体の特性情
報、各輪郭点の属性情報等が同じとなり、この共通の辞
書によりデータが圧縮されやすくなるからである。この
場合には、出力された静的辞書、圧縮データは、字体毎
に分類されて記憶装置に格納されることになる。
【0151】図20には、以上説明した本実施例のデー
タ圧縮方法の利用態様が示される。圧縮対象データ列
(フォントデータ)はデータ圧縮装置31に入力され、
本実施例のデータ圧縮方法によりデータ圧縮される。そ
して、これにより生成された静的辞書及び圧縮データは
データ復元手段32内の記憶装置(ROM等)に格納さ
れる。そして、このデータ復元手段32は、情報処理装
置、例えばプリンタ33やコンピュータ34等に内蔵さ
れることになる(復元手段を分割して2つの装置に分け
て内蔵させてもよい)。
【0152】従来のプリンタ等では、フォントデータ等
は、データ圧縮されないまま記憶装置に格納され、個々
の圧縮データの格納アドレスを管理することで随時必要
なフォントデータを出力し、文字の印字を行っていた。
これに対して本実施例によれば、静的辞書及び圧縮デー
タを記憶装置に格納し、個々の圧縮データの格納アドレ
スと静的文字列辞書を管理することで随時必要な文字を
出力することが可能となる。これにより、記憶装置に格
納されるデータ量を少なくすることができ、装置の低コ
スト化を図ることができる。このような長所は特に多く
の記憶容量を必要とする漢字文字やハングル文字等に有
効であるが、その他の言語の文字についてももちろん効
果は大きい。
【0153】なお、本発明は上記実施例に限定されるも
のではなく、本発明の要旨の範囲内で種々の変形実施が
可能である。
【0154】例えば、本実施例では文字列データを処理
することについて主に説明したが、その他の記号データ
等についても応用は可能である。
【0155】また、本発明により圧縮されるデータ列と
しては、文字列、バイト列、ワード列に限らず種々のデ
ータ列が含まれ、例えば2次元、3次元図形を構成する
ためのデータ列等も含めることができる。
【0156】また、本発明における登録番号には、この
登録番号と実質的に同一の機能を果たす情報も含まれ
る。
【0157】
【発明の効果】本発明によれば、最適な辞書を静的な辞
書として、この静的辞書によりデータ圧縮が行われるた
め、出力される静的辞書と圧縮データのデータ量を最適
なものとすることができる。これにより、この静的辞
書、圧縮データが格納される記憶装置、記憶媒体の容量
を小さくすることができ、コストの削減等を図ることが
できる。更に、例えばデータ圧縮率の高い動的辞書を用
いたデータ圧縮アルゴリズム等を利用することが可能と
なり、データ圧縮率を非常に高めることができる。ま
た、必要なデータ列をこの静的辞書を用いて自在に復元
することも可能となり、例えば、情報処理装置等により
この圧縮されたデータ列を復元する場合に所望のデータ
列を任意に取り出すことが可能となる。また、本発明に
よれば、辞書を最適にし、最終的な辞書、圧縮データを
得るまでの時間は長くなる可能性もあるが、復元処理速
度自体は特に遅くなることはないという効果もある。
【0158】また、本発明によれば、組み合わせ個数の
多いデータ列の組み合わせが優先的に辞書の登録番号に
置き換えられることになるため、データの圧縮率を最適
なものとすることができる。一方、使用頻度の低い登録
データ列の登録を削除し、登録数が所定数になった段階
で更新が終了するため、データ量の少ない最適な辞書を
生成することが可能となる。そして、スライド辞書と呼
ばれる手法により簡易に辞書を生成できるという利点も
ある。なお、この場合の所定数は、出力データのビット
数が例えば12ビットであった場合には、辞書の登録数
がこの12ビットの範囲で収まるような数とすることが
できる。
【0159】また、本発明によれば、出現確率の高いデ
ータ列の組み合わせが優先的に登録番号に置き換えられ
ることになるため、データ圧縮率を最適なものとするこ
とができる。一方、使用頻度の低い登録データ列の登録
を削除し、登録数が所定数になった段階で更新が終了す
るため、データ量の少ない最適な辞書を生成することが
可能となる。そして、初めの辞書の生成は1回の解析で
できるため、処理を非常に単純化できるという利点もあ
る。
【0160】また、本発明によれば、データ圧縮率の高
い動的辞書を用いたデータ圧縮アルゴリズムによりデー
タ圧縮がなされ、しかもデータ圧縮率が最適な段階で辞
書の更新が終了するため、データ圧縮率を非常に高める
ことが可能となる。一方、出力された辞書は静的辞書と
なるため、必要なデータ列をこの静的辞書を用いて自在
に復元することも可能となる。
【0161】また、本発明によれば、特に同一のデータ
列を圧縮処理する場合に、辞書の登録数を従来の増分分
解法と比べて非常に少なくすることができるとともに、
該辞書の登録番号により置き換えられて圧縮が施された
圧縮データ自体も、従来の増分分解法に比べて非常に少
ないデータ量とすることができる。
【0162】また、本発明によれば、データ圧縮率が非
常に高められるとともに、必要なデータ列をこの静的辞
書を用いて自在に復元することも可能となる。また、最
適な圧縮率になったか否かを、処理の繰り返し回数だけ
で判断することができるという利点もある。
【0163】また、本発明によれば、辞書の登録可能数
に限界がある場合等に、辞書のデータ量を非常に簡易な
方法で最適なサイズとすることが可能となる。
【0164】また、本発明によれば、辞書のデータ量を
最適なサイズとすることができるとともに、辞書に使用
頻度の高い登録データ列を残すことができ、最適な辞書
を生成できる。
【0165】また、本発明によれば、ビットマップフォ
ントデータ、アウトラインフォントデータの圧縮が可能
となり、これらのフォントデータが格納される記憶装
置、記憶媒体の容量を少なくすることができる。これに
より、該記憶装置、記憶媒体を内蔵するプリンタ、コン
ピュータ等のコストを削減することが可能となる。
【0166】また、本発明によれば、データの特性に応
じて、適用する圧縮方法を換えることができ、データの
圧縮率を更に高めることが可能となる。
【0167】また、本発明によれば、明朝体、ゴシック
等の字体の各々について辞書を共通化することができ
る。例えば文字の輪郭の変化の仕方、輪郭の太さ等は同
じ字体であれば共通となる場合が多いため、本発明によ
れば、データをより効率よく圧縮することが可能とな
る。
【0168】また、本発明によれば、文字の記憶に必要
な容量等を節約することができる。
【0169】また、本発明によれば、復元専用登録デー
タ列が、復元専用のデータ形式に変換されており、例え
ば増分分解法、加増分解法においてはツリー構造が無く
なるまで登録データ列が分解されている。従って、通常
の辞書を用いる場合よりも、非常に速く復元処理を行う
ことが可能となる。
【0170】また、本発明によれば、復元されたデータ
列を用いて所定の処理、例えば文字の印字等の処理を行
うことができる。
【0171】また、本発明によれば、復元手段により元
のデータ列が復元でき、この復元手段を、例えば、コン
ピュータ、プリンタ等の情報処理装置に内蔵させること
ができる。
【図面の簡単な説明】
【図1】第1の実施例のデータ圧縮方法を説明するため
のフローチャートである。
【図2】実施例のデータ圧縮方法が使用されるデータ圧
縮装置12の構成の一例を示すブロック図である。
【図3】図3(A)〜(E)は、スライド辞書の手法を
説明するための概略説明図である。
【図4】スライド辞書手法を利用して最適な辞書を得る
手法を説明するためのフロチャートである。
【図5】増分分解アルゴリズムを利用して最適な辞書を
得る手法を説明するためのフローチャートである。
【図6】静的辞書および圧縮データを作成する過程を視
覚的に表した図である。
【図7】第2の実施例で使用されるデータ圧縮方法を模
式的に説明するための概略説明図である。
【図8】図8(A)、(B)は、増分分解法と加増分解
法の処理の違いを模式的に示した図である。
【図9】増分分解法の動作を説明するためのフロチャー
トである。
【図10】図10(A)、(B)は、増分分解法と加増
分解法の処理の違いを模式的に示した図である。
【図11】加増分分解法による1回のパスの処理を説明
するためのフローチャートである。
【図12】辞書の最適化のための複数回のパスの処理を
説明するためのフローチャートである。
【図13】図13(A)は、使用頻度情報を含む辞書の
構造を示す図であり、図13(B)は、使用頻度に基づ
く登録削除の処理を表すフローチャートである。
【図14】図14(A)は、復元専用辞書の構造を示す
図であり、図14(B)は、文字開始アドレス及び文字
列長による文字列のコア部分の指定について説明する図
である。
【図15】復元専用の辞書を用いた場合の復元処理のフ
ローチャートである。
【図16】図16(A)、(B)は、ビットマップデー
タの圧縮について説明するための概略説明図である。
【図17】文字のビットマップイメージを説明するため
の概略説明図である。
【図18】アウトラインフォントを説明するための概略
説明図である。
【図19】図19(A)、(B)は、アウトラインフォ
ントデータの圧縮について説明するための概略説明図で
あり、図19(C)は、この圧縮データの復元処理のフ
ローチャートである。
【図20】実施例のデータ圧縮方法の利用態様である。
【符号の説明】
1 圧縮対象である文字列データ 2 作業用バッファ 3 辞書 4 圧縮データ 5 完成した辞書 11 圧縮対象である全データ列 12 データ圧縮装置 13 辞書生成手段 14 静的辞書 15 静的辞書保持手段 16 静的辞書出力手段 17 データ圧縮手段 18 圧縮データ出力手段 19 圧縮データ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平5−27943(JP,A) 特開 平4−289916(JP,A) 特開 平4−265020(JP,A) 特開 平5−113998(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 G06F 3/12 B41J 5/44 H03M 7/42

Claims (14)

    (57)【特許請求の範囲】
  1. 【請求項1】 登録番号に関連づけて登録データ列を登
    録できる辞書を使用しデータ列の2以上の組み合わせを
    該登録番号に置き換えることでデータ圧縮を行うデータ
    圧縮方法であって、圧縮対象であるデータ列のデータ圧
    縮に最適な辞書が生成されるまで辞書を更新し、最適な
    辞書が生成された段階で該辞書を最終的な復元用の静的
    辞書として出力するとともに、該静的辞書により圧縮対
    象であるデータ列のデータ圧縮を行い、圧縮されたデー
    タ列を最終的な復元用の圧縮データとして出力すること
    を特徴とするデータ圧縮方法。
  2. 【請求項2】 請求項1において、 前記最適な辞書が生成されるまでの前記辞書の更新が、
    組み合わせ個数の多いデータ列の組み合わせを優先的に
    登録することにより生成された辞書から使用頻度の低い
    登録データ列の登録を辞書の登録数が所定数になるまで
    削除することにより行われることを特徴とするデータ圧
    縮方法。
  3. 【請求項3】 請求項1において、 前記最適な辞書が生成されるまでの前記辞書の更新が、
    出現確率が高いデータ列の組み合わせを優先的に登録す
    ることにより生成された辞書から使用頻度の低い登録デ
    ータ列の登録を辞書の登録数が所定数になるまで削除す
    ることにより行われることを特徴とするデータ圧縮方
    法。
  4. 【請求項4】 請求項1において、 前記最適な辞書が生成されるまでの前記辞書の更新が、
    データ圧縮の際に辞書が動的に変化するデータ圧縮アル
    ゴリズムにより辞書を更新しながら圧縮対象となる全て
    のデータ列に対するデータ圧縮の処理を行い、該処理に
    より更新された辞書を用いて再び前記データ圧縮アルゴ
    リズムにより辞書を更新しながら圧縮対象となる全ての
    データ列に対するデータ圧縮の処理を行い、データ圧縮
    率が最適になるまで前記処理を繰り返すことにより行わ
    れることを特徴とするデータ圧縮方法。
  5. 【請求項5】 請求項4において、 前記データ圧縮アルゴリズムにより圧縮データを出力す
    べき時に増える圧縮データ出力回数に基づいて、最適な
    辞書が生成されたか否かが判断されることを特徴とする
    データ圧縮方法。
  6. 【請求項6】 請求項1乃至5のいずれかにおいて、 前記辞書には登録番号、登録データ列と共に使用頻度情
    報が記憶され、使用頻度の低い登録データ列を順次削除
    する工程を含むことを特徴とするデータ圧縮方法。
  7. 【請求項7】 請求項6において、 前記使用頻度の低い登録データ列の削除が、辞書に登録
    されている登録データ列の使用頻度数を順次減らしてゆ
    き、初めに使用頻度数が所定数以下になった登録データ
    列から優先して削除することにより行われることを特徴
    とするデータ圧縮方法。
  8. 【請求項8】 請求項1乃至7のいずれかにおいて、 圧縮の対象となるデータ列が文字の印字の際に必要なフ
    ォントデータであることを特徴とするデータ圧縮方法。
  9. 【請求項9】 請求項8において、 前記フォントデータの中の一部のみが前記圧縮の対象と
    なるデータ列となり、他の一部が他のデータ圧縮方法に
    よりデータ圧縮されることを特徴とするデータ圧縮方
    法。
  10. 【請求項10】 請求項9において、 アウトラインフォントの各点の属性を表す情報、文字の
    特性を表す情報が、前記圧縮の対象となるデータ列にな
    り、各点における打ち出し方向のベクトル座標を表す情
    報が、他のデータ圧縮方法によりデータ圧縮されること
    を特徴とするデータ圧縮方法。
  11. 【請求項11】 請求項8乃至10のいずれかにおい
    て、 共通の字体を有する前記文字に対しては共通の前記辞書
    を用いてデータ圧縮が行われることを特徴とするデータ
    圧縮方法。
  12. 【請求項12】 請求項1乃至7のいずれかにおいて、 圧縮の対象となるデータ列が文字列であることを特徴と
    するデータ圧縮方法。
  13. 【請求項13】 請求項1乃至12のいずれかのデータ
    圧縮方法により生成された圧縮データと最終的な辞書と
    を用いて、該データ圧縮方法に応じた復元処理により圧
    縮対象となったデータ列を復元することを特徴とするデ
    ータ復元方法。
  14. 【請求項14】 請求項1乃至12のいずれかのデータ
    圧縮方法により生成された圧縮データと最終的な辞書と
    を用いて、該データ圧縮方法に応じた復元処理により圧
    縮対象となったデータ列を復元する手段を含むことを特
    徴とする情報処理装置。
JP2000166584A 1993-06-22 2000-06-02 データ圧縮方法、データ復元方法及び情報処理装置 Expired - Lifetime JP3449338B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000166584A JP3449338B2 (ja) 1993-06-22 2000-06-02 データ圧縮方法、データ復元方法及び情報処理装置

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP15078993 1993-06-22
JP17040293 1993-07-09
JP5-170402 1993-07-09
JP5-150789 1993-07-09
JP2000166584A JP3449338B2 (ja) 1993-06-22 2000-06-02 データ圧縮方法、データ復元方法及び情報処理装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP15809994A Division JP3132293B2 (ja) 1993-06-22 1994-06-16 データ圧縮方法、データ復元方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2001044850A JP2001044850A (ja) 2001-02-16
JP3449338B2 true JP3449338B2 (ja) 2003-09-22

Family

ID=29254964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000166584A Expired - Lifetime JP3449338B2 (ja) 1993-06-22 2000-06-02 データ圧縮方法、データ復元方法及び情報処理装置

Country Status (1)

Country Link
JP (1) JP3449338B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5106768B2 (ja) 2005-09-29 2012-12-26 富士通株式会社 アウトラインフォント圧縮方法
NL2001597C2 (nl) * 2008-05-21 2009-11-24 Ipo Paulus Willem Marinus Boom Werkwijze en inrichting voor coderen en decoderen van data in unieke getalswaarden.
KR20120134916A (ko) 2011-06-03 2012-12-12 삼성전자주식회사 저장 장치 및 저장 장치를 위한 데이터 처리 장치
JP6053692B2 (ja) * 2011-12-20 2016-12-27 キヤノン株式会社 データ転送装置、データ転送方法およびチップ間通信システム
WO2014097359A1 (ja) 2012-12-19 2014-06-26 富士通株式会社 圧縮プログラム、圧縮方法、圧縮装置およびシステム
JP6032291B2 (ja) 2012-12-19 2016-11-24 富士通株式会社 圧縮プログラム、圧縮装置、伸張プログラム、伸張装置およびシステム
CN117874049A (zh) * 2024-03-08 2024-04-12 北京龙创悦动网络科技有限公司 一种手游数据更新方法及系统

Also Published As

Publication number Publication date
JP2001044850A (ja) 2001-02-16

Similar Documents

Publication Publication Date Title
KR100260827B1 (ko) 데이타 압축방법, 데이타 복원방법 및 정보처리 장치
US5229768A (en) Adaptive data compression system
JP3009727B2 (ja) 改良形データ圧縮装置
EP0813167B1 (en) Method and apparatus for font compression and decompression
US5933104A (en) Method and system for compression and decompression using variable-sized offset and length fields
US20160321282A1 (en) Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus
JP3935952B2 (ja) 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術
KR100252444B1 (ko) 정보 처리 장치
KR100490240B1 (ko) 데이타압축장치,데이타복원장치,데이타압축방법,데이타복원방법및프로그램기록매체
US7880648B2 (en) Information processing apparatus, information processing method, and computer product
KR20000068018A (ko) 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
JP3449338B2 (ja) データ圧縮方法、データ復元方法及び情報処理装置
JP3132293B2 (ja) データ圧縮方法、データ復元方法及び情報処理装置
US20070146173A1 (en) Coding apparatus, decoding apparatus, coding method, decoding method and program
US20130332433A1 (en) Computer product, generating apparatus, and generating method
US6834283B1 (en) Data compression/decompression apparatus using additional code and method thereof
JPH06344601A (ja) 出力装置および出力方法
JP4208326B2 (ja) 情報索引装置
JP5807592B2 (ja) 符号化方法、符号化装置及びコンピュータプログラム
US7612692B2 (en) Bidirectional context model for adaptive compression
JPH0554077A (ja) 単語辞書検索装置
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JPH0964753A (ja) データ圧縮装置、及びデータ伸長装置
JPH05127648A (ja) アウトラインフオントデータの圧縮装置
Ong et al. A data compression scheme for Chinese text files using Huffman coding and a two-level dictionary

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20030610

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080711

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090711

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100711

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110711

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110711

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120711

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120711

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130711

Year of fee payment: 10

EXPY Cancellation because of completion of term