JPH11136135A - データ圧縮方法、その装置、データ復元方法、及びその装置、記録媒体 - Google Patents

データ圧縮方法、その装置、データ復元方法、及びその装置、記録媒体

Info

Publication number
JPH11136135A
JPH11136135A JP7873898A JP7873898A JPH11136135A JP H11136135 A JPH11136135 A JP H11136135A JP 7873898 A JP7873898 A JP 7873898A JP 7873898 A JP7873898 A JP 7873898A JP H11136135 A JPH11136135 A JP H11136135A
Authority
JP
Japan
Prior art keywords
symbol
data
bitmap
compressed
bit
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.)
Withdrawn
Application number
JP7873898A
Other languages
English (en)
Inventor
Fujio Ikegami
冨士雄 池上
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP7873898A priority Critical patent/JPH11136135A/ja
Publication of JPH11136135A publication Critical patent/JPH11136135A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 データ量に依存しないデータ圧縮方法及び装
置を提供する。 【解決手段】 記号列からなる入力データ20列を圧縮
する場合には、入力データ20の記号列の中に出てくる
各記号に対し、記号列の中での配列位置に対応するビッ
トを“1”とし、その他の位置に対応するビットを
“0”とするビットマップとして表現する。また、復元
するときに、圧縮データ25内での配列順序に従って、
記号が順番に復元されることを利用して、先に復元され
る記号の位置をビットマップから省略することにより、
ビットマップを短くして、より圧縮率を高める。このた
めビットマップは可変となるので、復元する際、可変長
のビットマップから正しく符号を復元するための情報と
して、ビットマップに含まれる(“1”のビット数−
2)をオンカウントとして圧縮データ25に加える。ま
た、ビットマップを有するデータとビットマップを有し
ないデータとを区別するため、ビットマップの存否を示
すフラグを圧縮データ25に含める。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データの圧縮方法
及びその装置に関する。
【0002】
【従来の技術】今日、コンピュータが一般に普及し、通
信分野でもマルチメディアと関連してデータ通信が関心
を呼んでいる。しかしながら、このようにコンピュータ
が一般に普及すると、コンピュータが扱うデータやコン
ピュータ上で動作するアプリケーション・ソフト等に対
する要求が多くなり、扱われるデータの量も増大する傾
向にある。
【0003】例えば、インターネット等においては遠隔
地のサーバから個人のコンピュータにアプリケーション
・ソフトが格納されているファイルをダウンロードし、
インストールして使用するようなアプリケーション・ソ
フトの流布形態も多くなっている。このような場合、ユ
ーザはアプリケーション・ソフトをダウンロードするた
めに、例えば電話回線などを接続したままにしておかな
ければならない。一方、アプリケーション・ソフトの備
える機能の増大によってアプリケーション・ソフトが格
納されているファイルの容量が非常に大きくなってお
り、ダウンロードに何時間もかかることも珍しくない。
このような場合、通信コストが高く付いてしまう。
【0004】また、上記のようなファイルのダウンロー
ドに限らず、コンピュータを使って処理するデータの増
大に伴って、フロッピーディスクやハードディスク等の
記録媒体等に記録させておくデータの量も増大の傾向に
ある。
【0005】以上のような、コンピュータが取り扱うデ
ータ量の増大に伴って、これを記録する記録媒体資源の
有効利用やデータの転送時間の短縮等が問題となってく
る。従来から、このような問題を解決するためにデータ
を特別な方法で圧縮して転送及び保管し、このデータを
使用する場合には、データの圧縮方法に対応した所定の
復元方法を用いてデータを元の形に戻して使用する方法
が取られている。
【0006】データの圧縮方法には何種類かあるが代表
的なデータ圧縮方法として、ハフマン符号化法と、レン
ペル・ジブ(Lempel-Ziv)法がある。いずれの方法もデ
ータファイルを記号の集合と見て、この記号を効率よく
表現し直すということを目指したものである。すなわ
ち、“0”と“1”の2値データからなるデータファイ
ルは、例えば、1バイトごとに1つの文字記号に対応さ
せることにより、これら文字記号の並びとして表現する
ことができる。
【0007】ハフマン符号化法は、最初に入力データを
全て読み、該入力データ内での各記号の出現確率を求め
る。次に、求められた各記号の出現確率から各記号の出
現確率を示す出現確率表を作る。続いて、この出現確率
表を基にハフマンツリー等の予め定められた方法により
各記号にその記号を特定するための符号を与える。すな
わち、出現確率の大きい記号にはビット長の短い符号を
割り振り、出現確率の小さい記号にはビット長の長い符
号を割り振る。そして、再度、入力されたデータを読
み、上記出現確率表から上記予め定められた方法(例え
ば、ハフマンツリー法)に基づいて、入力データ内の各
記号を上記割り振られた符号に置き換えていく。ハフマ
ン符号化法によって圧縮されたデータの先頭には各記号
がどの位の頻度で出現したかを示す出現確率表が出力さ
れる。従って、復元する場合には、圧縮データの先頭に
付加された出現確率表を参照しながら、圧縮時に使用さ
れた方法と同じ方法を用いて各符号を記号に置き換え
る。
【0008】通常のデータでは、1つの記号は固定され
たビット数で表されるため、入力データの量は、(記号
を表すビット数)×(データに含まれる記号の数)とな
る。ハフマン符号化法によれば、出現確率の大きい記号
ほど少ないビット数の符号が割り振られるので、その分
データの量を圧縮することができる。
【0009】レンペル・ジブ法は、入力データ中に出て
くる記号列を辞書に登録し、その記号列を辞書のインデ
ックスで置き換えるというものである。辞書は、入力デ
ータを読み込みながら作成され、新しい文字列が出てき
たら辞書に登録してインデックスに置き換えるようにす
る。辞書の作成方法によってLZ77法とLZ78法と
がある。
【0010】LZ77法は、現在読み込んでいる入力デ
ータの内、過去、所定Kbit(キロビット)の範囲に
出てきた記号を辞書に登録してやり、辞書への登録イン
デックスで入力データの記号を置き換えてやるものであ
る。読み込んだ入力データ内の記号が辞書に登録されて
いなかった場合には、辞書に登録されていなかったこと
を表す記号をつけて、そのまま出力する。
【0011】一方、LZ78は、現在読み込んでいる入
力データの内、過去に出てきた全ての記号あるいは記号
列を辞書に登録し、入力データの記号あるいは記号列を
辞書のインデックスと置き換えてやるものである。
【0012】
【発明が解決しようとする課題】ハフマン符号化法では
圧縮データ内の符号を元の記号に復元するための出現確
率表を先頭に出力する必要があるので、データ量が少な
い場合にはデータの圧縮効果を打ち消してしまう。
【0013】レンペル・ジブ法では、辞書にある程度記
号列が登録されてからでないと圧縮効果が現れない。す
なわち、いずれの圧縮方法でもデータ量が少ないと圧縮
効果が無く、逆にデータ長が伸長することになる。
【0014】本発明の課題は、データ量に依存しないデ
ータ圧縮方法及び装置を提供することである。
【0015】
【課題を解決するための手段】本発明のデータ圧縮方法
は、圧縮すべきデータを読み込むステップと、読み込ん
だデータに含まれる記号を取得するステップと、該取得
した記号の該読み込んだデータ内での存在位置を表すビ
ットマップを生成するステップと、前記取得した記号と
前記ビットマップとを組み合わせて、圧縮データとして
出力するステップを備えることを特徴とする。
【0016】また、本発明のデータ圧縮装置は、圧縮す
べきデータを読み込み、読み込んだデータに含まれる記
号を取得する入力データ取得手段と、前記取得した記号
の読み込んだデータ内での存在位置を表すビットマップ
を生成するビットマップ生成手段と、前記取得した記号
と前記ビットマップとを組み合わせて、圧縮データとし
て出力する出力手段とを備えることを特徴とする。
【0017】本発明のデータ復元方法は、圧縮されたデ
ータを読み込むステップと、読み込んだデータに含まれ
る記号を取得するステップと、該取得した記号の該読み
込んだデータ内での存在位置を表すビットマップを生成
するステップと、前記取得した記号と前記ビットマップ
とを組み合わせて、圧縮データとして出力するステップ
を備えるデータ圧縮方法によって生成された圧縮データ
を読み込み、前記圧縮されたデータから前記記号と前記
記号に対応する前記ビットマップを読み取るステップ
と、前記ビットマップで指定される位置に前記記号を出
力するステップを備える。
【0018】本発明のデータ復元装置は、圧縮されたデ
ータを読み込み、読み込んだデータに含まれる記号を取
得する入力データ取得手段と、前記取得した記号の読み
込んだデータ内での存在位置を表すビットマップを生成
するビットマップ生成手段と、前記取得した記号と前記
ビットマップとを組み合わせて、圧縮データとして出力
する出力手段とを備えるデータ圧縮装置によって生成さ
れた圧縮データを読み込む読み込み手段と、前記圧縮デ
ータから前記記号と前記記号に対応する前記ビットマッ
プを読み取り、前記ビットマップで指定される位置に前
記記号を出力する復元データ出力手段を備える。
【0019】このようにビットマップを使用して元のデ
ータを圧縮することにより、圧縮データの先頭に出現確
率表を出力する必要が無く、また、辞書を使用する場合
のようにある程度データ量が多くならないと圧縮方法が
有効にならないということも無いので、データ量の大小
に関係なく有効なデータ圧縮ができる。
【0020】また、本発明のデータ復元方法あるいは復
元装置を用いれば、圧縮データに記録されている記号と
該記号に対応するビットマップを読み込んで、該ビット
マップで示される位置に該記号を配置し、これを圧縮デ
ータに含まれるデータ(記号と該記号に対応するビット
マップ)全てについて行うことによって、本発明のデー
タ圧縮方法あるいはデータ圧縮装置によって圧縮された
データを元通りに復元することができる。
【0021】また、データ圧縮において、ビットマップ
を前記取得した記号の存在位置が前記読み込んだデータ
の先頭から後尾に向かう順番で表される様に構成し、該
ビットマップの内、前記取得した記号が存在することを
示す最後尾のビットから該ビットマップの最後尾まで連
続する前記取得した記号が存在しないことを示すビット
を該ビットマップから削除し、該削除により得られたビ
ットマップを圧縮データとして出力する方法も冗長なビ
ットを削除することができるのでデータ圧縮の際に有効
である。このとき、“0”と“1”のビットから構成さ
れるビットマップが可変長となるので、該ビットマップ
のビット数を表すカウンタ値を、該ビットマップと組み
合わせて圧縮データとして出力するようにする。
【0022】また、読み込んだデータの先頭から出現順
に各記号の圧縮処理を順次行うことによって、読み込ん
だデータを圧縮する際に、先立って圧縮処理された記号
が前記読み込んだデータ内に占める位置を示すビット
を、後に圧縮処理される記号に対応するビットマップか
ら削除することが可能である。このようにすれば、復元
に不必要なビットをビットマップから削除することが出
来るのでデータ圧縮に有効である。この場合には、ビッ
トマップの先頭のビットが必ず記号が存在することを示
すビットとなるので該ビットマップから、これを省略す
ることが出来る。
【0023】また、同一の記号が元のデータ内で離れて
存在してる場合には、該記号に対応するビットマップ上
で上記2つの記号が存在することを示す2つのビット間
に、上記記号が存在しないことを示すビットが多く並ぶ
ことになる。この場合には、同じ記号であっても互いに
異なる記号として処理することにより、全体としてビッ
トマップのビット長を短くすることができる。
【0024】以上のように、ビットマップを短くしてく
ると、中にはビットマップもカウンタ値も必要なくなる
記号が出現する。従って、記号に対応してビットマップ
やカウンタ値が存在するか否かを示すフラグを圧縮デー
タの中に設けることによって、必要のないビットマップ
やカウンタ値を圧縮データの中から省略することが出
来、実際のデータを圧縮する際に効果的である。
【0025】
【発明の実施の形態】図1は、本発明の原理構成図であ
る。本発明においては、入力データを受け取り、入力デ
ータ中に含まれる記号6を取得する入力データ取得手段
3と、取得した記号6が入力データ中に存在する位置を
表すビットマップ7を生成するビットマップ生成手段4
と、上記入力データ取得手段によって取得された記号6
とビットマップ生成手段によって生成されたビットマッ
プ7とを組み合わせて出力する出力手段5とからなる。
【0026】入力データは、一般に“0”と“1”とか
らなる記号列で表されるが、例えば、1バイト(8ビッ
ト)を1つの記号に対応させることによって、アルファ
ベット等の記号列として捉えることが出来る。入力デー
タ取得手段3は、入力データを読み込むとともに、入力
データに含まれる記号6(図1の場合は「a」あるいは
「b」、「c」・・・となっている)を取得する。
【0027】次に、ビットマップ生成手段4が、入力デ
ータ中の記号6のある位置を表すビットマップ7を生成
する。図1に示されているビットマップ7は、記号
「a」の入力データ中の位置を表している。すなわち、
記号「a」に対するビットマップ7は、“110010
0100000000000000100”となってい
るが、これは、記号「a」が入力データ中の先頭から
1、2、5、8、23番目に現れることを示している。
すなわち、ビットマップ7中の“1”が立っている位置
が該当する記号が入力データの中で配置されている位置
を示している。
【0028】このようにして、入力データ中に現れる記
号6(すなわち、「a」、「b」、「c」・・・・)全
てについて、記号6とビットマップ7とを組にして出力
することにより、入力データを圧縮することが可能とな
る。更に、ビットマップ7の冗長なビットを削除するこ
とによって、ビットマップの短縮化を図れば、入力デー
タに対する出力データの圧縮率を高めることができる。
この冗長なビットを削除する具体的な方法は後述する。
【0029】図2は、本発明の一実施形態のデータ圧縮
/復元処理を行うためのコンピュータ1のハードウェア
構成の一例を示す図である。図2に示すコンピュータ1
は、本発明の一実施形態のデータ圧縮/復元処理方法を
プログラム(データ圧縮・復元処理プログラム)を実行
することによって実現するCPU12と、上記プログラ
ムが、CPU12が実行可能な状態でロードされるRA
M10を備えている。これらは、バス18を介してデー
タの授受等を行い、上記方法によるデータ圧縮及び復元
処理を実現する。ROM11には、入出力装置13、記
録媒体読み取り装置14、及び通信インタフェース16
の動作を制御するための基本的な処理を行うシステムプ
ログラム(例えば、OSやデバイスドライバ等のシステ
ム・ソフトやBIOS等)が記憶され、コンピュータ1
の装置本体に電源が入れられると、該システムプログラ
ムはCPU12によってROM11からRAM10上に
読み出され、CPU12により実行される。尚、ROM
11に、上記本実施形態のデータ圧縮・復元処理プログ
ラムを予め記憶させておき、これをROM11からRA
M10上にロードしてCPU12に実行させるようにし
てもよい。
【0030】入出力装置13は、ディスプレイ装置、キ
ーボード、マウス、スピーカ等を含み、ユーザとコンピ
ュータ1とのインタフェースを実現するものである。入
出力装置13は、圧縮すべき、あるいは復元すべきデー
タファイルをコマンド入力により指定するキーボード
と、コマンドの入力やデータファイルの圧縮・復元状況
を表示するディスプレイ装置とを少なくとも含む。尚、
圧縮または復元すべきデータファイルの指定は、GUI
画面上でそれらのファイルのアイコンをマウスによりク
リックすることにより行うようにしてもよい。
【0031】記録媒体15はコンピュータ1が読み取り
可能な形式でプログラムあるいはデータを記録しておく
ものである。記録媒体15に本実施形態のデータ圧縮・
復元処理プログラムを記録させておき、このプログラム
を記録媒体読み取り装置14によって記憶媒体15から
読み込むことによって、CPU12にこのプログラムを
実行させることが可能である。CPU12の制御によっ
て、記録媒体読取装置14によって記憶媒体15から読
み込まれた上記データ圧縮・復元処理プログラムはRA
M10上にロードされ、実行可能状態とされてCPU1
2によって実行される。また、圧縮・復元されるべきデ
ータファイルを記録媒体15に記録しておき、これを読
み込んで圧縮・復元してもよい。記録媒体15は、例え
ば、フロッピーディスクやCD−ROM等の可搬記録媒
体であり、コンピュータ1が読み取り可能な形式で上記
データ圧縮・復元処理プログラムを記録するものであ
る。
【0032】更に、バス18には上記の構成要素のほか
に通信インタフェース16が設けられており、他のコン
ピュータとデータの授受を行うことができるように構成
されている。例えば、通信インタフェース16及びそれ
に接続された不図示のモデム等のDCE(Data C
ircuit terminating Equipm
ent)により、ネットワーク19を介してプログラム
提供者が提供するデータベース17にアクセスし、該デ
ータベース17に格納されている本実施形態のデータ圧
縮・復元処理プログラムをコンピュータ1にダウンロー
ドして、このプログラムをCPU12で実行するように
してもよい。
【0033】通信インタフェース16はこの他に、上記
DCEにより、圧縮したデータを他のコンピュータに対
してネットワーク19を介して送信したり、他のコンピ
ュータから圧縮されたデータをネットワーク19を介し
て受信する。これにより該受信した圧縮データを、本実
施形態のデータ圧縮・復元プログラムにより復元して、
該復元データをコンピュータ1で利用することも可能で
ある。
【0034】尚、上記データ圧縮・復元プログラムは、
イントラネット等のLANで、アプリケーションサーバ
からコンピュータ1にダウンロードする利用形態も可能
である。
【0035】次に、本実施形態のデータ圧縮方法を説明
する。図3(a)は、本実施形態のデータ圧縮方法の基
本となる考え方を説明する図である。
【0036】図3(a)の記号列は圧縮しようとするデ
ータであって、アルファベットの記号列として表されて
いる。本実施形態では、この記号列に含まれる1つの種
類の記号に対し、記号列の中の位置をビットマップとし
て表す。例えば、記号列の先頭に「a」という記号が来
ているが、これは記号列の中では、1、2、5、8、2
3番目に出てきている。これに対応して、記号「a」の
ビットマップには、1、2、5、8、23番目のビット
に“1”を立て、その他のビットは“0”とする。この
ようにすることによって、記号「a」が記号列のどの場
所にあるかを示すことが出来る。
【0037】その他の記号に対しても同様であって、記
号「b」は記号列の3、9、13番目に出てきているの
で、第3、9、13のビットに“1”を立て、その他の
ビットは“0”となるようにビットマップを作る。この
ようにして、記号列内に出てくる記号「a」から「f」
までに対して同様のビットマップを生成し、元の記号列
と置き換えてやる。このとき、各ビットマップがどの記
号のビットマップかを示すため、ビットマップの先頭に
は記号(「a」や「b」等)を出力するようにする。
【0038】ここで、上記方法の圧縮率を求める。圧縮
率には様々な定義の仕方があるが、以下のような圧縮率
の定義を用いる。 圧縮率=(Σ(記号の表現に必要なビット数+ビットマップ、その他の長さの 合計))/(記号の表現に必要なビット数×入力記号列の長さ)・・・・(1) ここで、分子の和は元のデータの記号列に含まれる全て
の記号の種類に対して行う。
【0039】コンピュータ処理においては、通常、アル
ファベットは8ビットで表現されるので、上記方法の圧
縮率を求める際には、記号の表現に必要なビット数を8
ビットとする。
【0040】図3(a)の上段に記載されている元の記
号列は各文字が8ビットで、該記号列に含まれる記号の
数が25個であるので、元の記号列全体のビットの長さ
は、8×25=200ビットとなる。これが式(1)の
分母にあたる。一方、本実施形態の方法によって圧縮さ
れたデータのビット長は図3の右に記載されているよう
に、各記号に対しては、記号を表現する8ビットとビッ
トマップの長さ25ビットとを足しあわせた33ビット
となる。そして、記号が「a」から「f」までの6種類
あるので、全体のビット数は6×33ビットで、198
ビットとなる。これが式(1)の分子である。従って、
圧縮率=198/200=0.99となる。ここで、圧
縮の効果があるためには圧縮率<1である必要がある
が、そのためには上記方法の場合記号の種別が8よりも
小さい必要がある(ただし、これは圧縮すべきデータ長
が非常に長い場合を想定している)。このような制限
は、上記本実施形態の基本的考え方のみを適用した場合
に導かれるものであるが、更に、以下に述べるようにビ
ットマップ表現を効率化することにより、上記制限が無
くても有効な圧縮を行う方法を提供することができる。
【0041】図3(b)は、図3(a)の本実施形態の
ビットマップ表現を更に効率化したものである。図3
(a)のビットマップ表現を見ると、ビットマップの右
側に“0”が多く並んだ部分があることが分かる。これ
は、記号列の後ろの方に対応する記号が存在しないこと
を示している。従って、記号列を先頭から復元していく
ことを考えたときビットマップの後ろの方にある“0”
の連続した部分は記号列の復元には必要ないことにな
る。すなわち、“0”の連続の後に“1”がある場合に
は“0”の連続は次の“1”が出てくるまで対応する記
号が出てこないことを意味するので、ビットマップに記
録しておくべきである。しかし、ビットマップの最後ま
で続く“0”は必要ないので、ビットマップから消去す
ることができる。
【0042】ただし、図3(a)の場合には、全てのビ
ットマップの長さが25ビットと固定長になっているの
で、復元するときビットマップの終わりを認識すること
ができるが、図3(b)のようにビットマップ長を可変
にすることによりビットマップの終わりがどこになるか
認識できなくなる。
【0043】そこで、対応するビットマップによって復
元されるべき(記号の数−1)を示す値をビットマップ
の長さを示す指標として、ビットマップの先頭に出力す
るようにする。そして、これをオンカウントと定義す
る。図3(b)の場合にはオンカウントを3ビットで表
すこととしている。これにより、ビットマップ長を可変
とすることができるので、図3(a)と比べて更に圧縮
率を高めることが出来る。図3(b)の右側にはデータ
長が記載されている。それぞれの記号に対するデータ長
は、記号を表す8ビットとオンカウントの3ビットに加
え、可変となったビットマップのビット長を加えたもの
となる。これらを記号「a」から「f」まで加えること
により、全データ長が得られる。図3(b)の場合に
は、182ビットとなる。これを、元の記号列のビット
長である200ビットで割ることにより、圧縮率が得ら
れ、0.91となる。
【0044】このように、図3(b)の場合には、可変
長ビットマップの導入のためにオンカウントの分ビット
長は増えるが、ビットマップで後半の最後まで連続する
“0”のビット列が省かれるので全体としてはデータ量
は減る。
【0045】図4(a)は、図3(b)のビットマップ
に含まれる不要な“0”のビットを削除して、更に、圧
縮率を高める方法を説明する図である。図3(b)にお
いて、2番目の記号「b」に着目するとビットマップは
“001”で始まっているが、記号「a」のビットマッ
プを見ると、「b」のビットマップの最初の“00”は
記号「a」が占める位置である。圧縮したデータを復元
する時に、元の記号列での出現順序に従って、記号
「a」、「b」・・・「f」の順に復元していくとする
と、先に復元された記号に重ねて次の記号を配置するこ
とはない。従って、後から復元する記号に対しては先頭
から連続している“0”や、“1”と“1”との間にあ
る“0”であって、先に復元される記号が配置される位
置に対応する“0”は省略することができる。
【0046】図4(a)は、上記で説明した方法によ
り、図3(b)のビットマップから不要な“0”を省略
した結果、得られる圧縮データを示す図である。この場
合、元の記号列での出現順序に従って、記号「a」から
「f」に向かって順に記号が復元されることとしてい
る。図3(b)と図4(a)とを比較すると、余分な
“0”のビットが省略されたため、ビットマップのビッ
ト長が短くなり更に圧縮率が向上していることが分か
る。実際に、圧縮率を計算してみると、圧縮データのデ
ータ長の合計は121ビットであり、元のデータのデー
タ長は200ビットであるので、0.61となる。
【0047】なお、図4(a)の場合、元の記号列での
出現順序に従って、記号「a」から「f」の順に復元す
ることを念頭にしたが、復元する記号の順番は特には限
定されない。すなわち、記号「f」から「a」に向かっ
て復元するように構成してもよいし、「a」から「f」
の記号をランダムに復元するようにしてもよい。ただ
し、その場合には、ビットマップは復元される記号の順
番にあったビットマップを作成するようにする。
【0048】図4(a)を見ると最初に復元される記号
「a」のビットマップのみが非常に長くなっている。次
に、更にビットマップのビット長を短くする方法を説明
する。
【0049】図4(b)は、記号「a」のビットマップ
を分割する方法を説明する図である。この場合には、記
号「a」から「f」の順番で復元する、すなわち、元の
記号列に現れる出現順に記号を圧縮し、復元する場合を
想定する。
【0050】図4(b)の記号「a」のビットマップ
は、図4(a)のビットマップにおける左から4番目の
“1”のビットの後に長く続く“0”のビット列があ
り、この“0”の列の後にある記号「a」を別の記号と
して扱ったものである。すなわち、上記記号「a」を記
号「e」の後に先頭の記号「a」とは別記号のように配
置するようにしている。
【0051】このようにした場合でも、元の記号列に現
れる出現順に各記号のビットマップを作っておく。逆に
復元する場合に先頭の記号「a」から順番に復元してい
くことにより、下の方にある記号「a」も正しい位置に
復元することができる。このとき、下の方にある記号
「a」の位置はビットマップを上から復元していったと
きに元の記号列の構成における、正しい位置に復元され
るような記号の後に挿入されるように配置する。
【0052】図4(b)の方法では、右側に記載されて
いるデータ長の合計が118ビットで元の記号列のビッ
ト長が200ビットであるので、圧縮率は0.59とな
り、圧縮率が更に向上している。
【0053】なお、図3(b)や図4(a)、(b)で
は、オンカウントのビット長を3ビットとしている。こ
の場合、1つのビットマップに登録することの出来る
“1”のビット数は8個である。したがって、3ビット
長のオンカウントでは元の記号列に8個以上現れる記号
に対しては対応できない。しかし、図4(b)のよう
に、長いビットマップを有する記号を分割して、圧縮デ
ータを作成することにより、元の記号列において予め決
められたビット長のオンカウントの最大値よりも多く出
現する記号が含まれる場合にも対応することができる。
もちろん、図3(b)や図4(a)、(b)においてオ
ンカウントのビット長を長くすることにより対応するこ
とも可能である。
【0054】図5(a)は、図4(b)のビットマップ
においてビットマップの先頭の“1”を省略したもので
ある。すなわち、図4(b)においては、全ての記号の
ビットマップの先頭が“1”となっている。これは、対
応する記号が最初に現れる位置を示しているが、記号が
出力されている限り、その出力される記号は元の記号列
の中に必ず1つ存在することになるので、図4(b)の
各記号のビットマップから先頭の“1”を省略しても問
題は生じない。従って、図5(a)では、これらの
“1”を省略している。なお、先頭の“1”を削除した
が、オンカウント値は変更していない。
【0055】図5(a)場合には、図4(b)に比べて
各記号のビットマップのビット長がそれぞれ1づつ減っ
て、トータルのビット長は111ビットになる。一方、
元の記号列のビット長は200ビットであるので、圧縮
率は0.56となる。
【0056】図5(b)は、オンカウントに加え、ビッ
トマップがあることを示すフラグを設けた方法を説明す
る図である。図5(a)では、下の方の「a」のビット
マップがなくなっている。従って、実際復元する場合に
は、下の方の「a」にはオンカウントも必要なく、記号
「a」だけがあればよい。また、元の記号列の中に点在
する記号が多いと分割により、上記図5(a)の下の方
の「a」のような、ビットマップを有しない記号が多く
発生することになる。
【0057】図5(a)の場合、記号8ビットとオンカ
ウントの3ビットを合わせて、1つの記号を表すのに最
低11ビット必要となっている。従って、下の方の
「a」のような場合を考えれば、データの伸長となって
いる。そこで、図5(b)に表すように、記号に対応す
るオンカウント及びビットマップの存在を表すフラグを
設けるようにする。そして、例えば、記号に対応するオ
ンカウントとビットマップがある場合には、上記フラグ
を“1”とし、下の方の「a」のように、オンカウント
及びビットマップが存在しない場合には、フラグを
“0”に設定する。
【0058】フラグを設けることにより、不要なオンカ
ウントとビットマップを省略することができる。図5
(b)の場合、データ長の合計は114ビットで、元の
記号列のビット長が200ビットであるので、圧縮率は
0.57となる。図5(b)の例ではオンカウント及び
ビットマップの存否を区別するフラグを導入したことで
圧縮率は図5(a)の場合に比べて若干低下したが、実
際のデータでは効果は大きい。
【0059】なお、図5(b)でオンカウントの値は、
図4(b)のビットマップにおける先頭の1ビットを省
略したことにより、図5(a)のときより1小さい値に
している。これは、同じビット数のオンカウントでもで
きるだけ多くの記号数を表現できるようにすることを考
慮したものである。
【0060】なお、図3から図5に説明した方法におい
ては、最後の記号である「f」のオンカウント及びビッ
トマップも出力するようにしているが、記号をビットマ
ップに従って順番に復元していく場合には、最後の記号
に対するビットマップは不要である。すなわち、最後の
記号は、オンカウントの情報のみを用いて、それまでに
復元された記号列の空いたところ、または復元済記号列
の後方に配置すればよいからである。
【0061】また、最後の記号が記号列の後尾に存在し
ないか、存在したとしても1個のみであればオンカウン
トも不要となる。図6は、本発明の一実施形態のデータ
圧縮/復元処理の概念を説明する図である。
【0062】上記説明では、圧縮すべきデータ全てを読
み込んでから処理することを前提にしていたが、実際に
は圧縮すべきデータは非常に長くなることが考えられ現
実的ではない。そこで、入力データ20から所定数の記
号列を読み込むことの出来る記号バッファ21と、(記
号バッファ長)/(記号を表現するビット数)のビット
長を有する共通マップ22及び出力マップ23を用意
し、記号バッファ21を移動窓として入力データ20に
沿って移動しながら圧縮を行う。
【0063】記号バッファ21に読み込まれた記号列の
中から記号24が取り出されて、圧縮データ25として
出力される他、共通マップ22には既に圧縮処理を行っ
た記号が記号バッファ21の中のどの位置にあるかを示
すビットが記録される。出力マップ23には、共通マッ
プ22を参照して既に圧縮処理された記号が配置されて
いる位置を除いた、圧縮処理をしている記号の記号バッ
ファ21内の位置を示すビットマップが作成されてい
く。出力マップ23内で完成された各記号のビットマッ
プは“1”のビット数が2個以上の場合のときのみ、先
頭の“1”のビットを除いて、圧縮データ25における
該記号のビットマップとして出力される。
【0064】圧縮データ25を復元する場合には、圧縮
データ25から記号26を読み込むと共に、不図示のフ
ラグの値を参照してビットマップがある場合にはビット
マップ読み込み変数27にビットマップを1ビットずつ
読み込む。ビットマップ読み込み変数27に読み込まれ
たビットマップの各ビットが“1”の場合、共通マップ
28に記号26が配置されるべき位置を登録する。読み
込んだ記号26の配置されるべき位置の共通マップ28
への登録が終わると、共通マップ28で示される記号バ
ッファ29内の位置に読み込んだ記号26を配置する。
そして、共通マップ28を参照して、記号バッファ29
内に配置された記号列が先頭位置から順に復元データ3
0として出力される。
【0065】以下の説明においては、記号を表現するビ
ット数を8ビットとする。図7〜図9は、CPU12が
前記データ圧縮・復元処理プログラムを実行することに
より実現される本実施形態のデータ圧縮方法を説明する
処理のフローチャートである。
【0066】図7〜図9のデータ圧縮処理を図10の入
力データ20の例を用いて説明をする。なお、図7〜図
9のデータ圧縮方法は図5(b)の方法を行うことに対
応する。
【0067】ステップS1で、圧縮すべきデータファイ
ルから記号バッファ21の長さだけ入力データ20を記
号バッファ21へ読み込む。ステップS2で、記号バッ
ファ21へ読み込んだ記号数を変数lenに設定する。
ステップS3で共通マップ22をクリアする。そして、
ステップS4で上記圧縮すべきデータファイルの終わり
を示す変数eofを0に設定する。これは、最初、該デ
ータファイルの終わりに来ていないことを設定するもの
である。データファイルの終わりの位置は、該データフ
ァイルからのデータ読み出し命令実行後に、本発明のデ
ータ圧縮プログラム、あるいは後に説明するデータ復元
プログラムが動作するOSのファイル管理システムから
返されるステイタス情報を元に取得される。次に、オン
カウントのビット幅を出力する(ステップS5)。
【0068】ステップS6で、出力マップ23をクリア
し、その先頭ビットを“1”にする。次に、ビットマッ
プを作るべき記号を保持する変数(記号(変数))に記
号バッファ21の0番目の記号を設定し、変数i、j、
oncntをそれぞれ“0”に設定する(ステップS
7)。
【0069】今、ステップS1で記号バッファ21に読
み込まれた入力データ20が図10に示す入力データ2
0「AAABCAD」であるとする。ステップS8で、
共通マップ22のi番目は既に1か否かが判断される。
ここでは、ステップS3で共通マップ22がクリアさ
れ、ステップS7でiが“0”に設定されているので、
“1”になっていないことになる。従って、ステップS
9へ進み、記号(変数)に保持されている記号と記号バ
ッファ21のi番目の記号が等しいか否かが判断され
る。ここで、記号(変数)に保持されている記号はステ
ップS7で記号バッファ21の0番目の記号であり、i
が0であるので、ステップS9でYESとなり、図8の
ステップS11に進む。
【0070】ステップS11で、出力マップ23上のi
−j番目の位置のビットに“1”を立て、共通マップ2
2上のi番目の位置のビットに“1”を立て、oncn
t=oncnt+1とする。今の場合、出力マップ23
の0番目の位置と共通マップ22の0番目の位置のビッ
トに“1”が立てられる。また、oncntは“1”と
なる。ステップS12でiを“1”インクリメントし
(i=1)、ステップS13でiがlen以上か否か
(記号バッファ21内を最後まで調べたか否か)を判断
する。
【0071】今の場合、ステップS13の判断はNOと
なるので、ステップS14でoncntの値がoncn
tの最大値より小さいか否かを判断する。oncntの
最大値は、ステップS5で出力されたオンカウントのビ
ット幅から得られる。ここでは、オンカウント数より多
い記号が含まれていた場合に、別文字としてビットマッ
プを分割するための判断をしている。
【0072】oncntはまだ“1”なのでステップS
8に戻る。ステップS8では、共通マップ22のi(こ
の場合、i=1)番目が“1”となっているかどうか判
断する。まだ、共通バッファの0番目のビットに“1”
を立てただけなので、“1”とはなっていない。従っ
て、ステップS9で記号(変数)の記号と記号バッファ
21の1番目の記号が等しいか否か判断する。ステップ
S9での判断がYESとなるので、ステップS11で、
出力マップ23上の1番目のビットと、共通マップ22
上の1番目のビットとに“1”を立て、さらにoncn
tを1つインクリメントし(oncnt=2)、ステッ
プS12でiをインクリメント(+1)する(i=
2)。ステップS13でiがlen以上かが判断される
(記号バッファ21内の全ての記号を調べたかが判断さ
れる)。まだ、記号バッファ21内の全ての記号を調べ
ていないのでステップS14へ進む。ステップS14
で、oncntがoncntの最大値より小さいか否か
が判断され、まだ、2つの記号しか処理していないので
ステップS8に戻る。
【0073】ステップS8では、共通マップ22のi
(=2)番目が既に“1”か否か判断されるが、“1”
ではないので、ステップS9で記号(変数)の内容(記
号「A」)と記号バッファ21のi(=2)番目の記号
は等しいか否かが判断され、記号バッファ21の3番目
(i=2の位置)も「A」なので、ステップS11へ進
み、出力マップ23のi−j番目(2番目)の位置のビ
ットに“1”を立てる。また、共通マップ22上のi番
目(2番目)の位置のビットに“1”を立てる。そし
て、oncntを1だけインクリメントし(oncnt
=3)、ステップS12へ進む。ステップS12でiを
1つインクリメントし(i=3)、ステップS13でi
がlen以上であるか否かが判断される。まだ、記号バ
ッファ21に読み込んだ記号数“7”よりも小さいの
で、ステップS14に進んで、oncntがoncnt
の最大値(=7)より小さいか否かが判断され、onc
ntが“3”なので、ステップS8へ戻る。
【0074】ステップS8で、共通マップ22のi(=
3)番目は既に“1”か否かが判断され、“1”ではな
いので、ステップS9に進む。ステップS9では、記号
(変数)の記号(「A」)と記号バッファ21のi(=
3)番目の記号(「B」)が等しいか判断される。この
場合、NOとなるので、ステップS12でiが1つイン
クリメントされ(i=4)、ステップS13でi(=
4)がlen(=7)以上かが判断される。ステップS
13ではNOであるので、ステップS14でoncnt
(=3)がoncntの最大値(=7)より小さいか否
かが判断される。ステップS14での判断の結果はYE
Sなので、ステップS8に戻る。
【0075】ステップS8で、共通マップ22のi(=
4)番目が既に“1”か否かが判断され、結果はNOで
ある。ステップS9に進んで、記号(変数)の記号
(「A」)と記号バッファ21のi(=4)番目の記号
(「C」)が等しいか否かが判断されるが、等しくない
ので、ステップS12でiを1つインクリメントし(i
=5)、ステップS13でiがlen(=7)以上か判
断される。ステップS13での判断の結果は、NOであ
るので、ステップS14でoncntがoncntの最
大値より小さいか否かが判断されるが、oncntの値
は“3”なので、YESとなり、ステップS8へ戻る。
【0076】ステップS8では、共通マップ22のi
(=5)番目が既に“1”か否かが判断されるが、判断
はNOとなる。ステップS9では、記号(変数)の記号
(「A」)と記号バッファ21のi(=5)番目の記号
(「A」)が等しいか否かが判断され、等しいので、ス
テップS11へ進む。ステップS11で出力マップ23
上のi−j番目(5番目)の位置のビットに“1”を立
てる。また、共通マップ22上のi(=5)番目の位置
のビットに“1”を立てる。そして、oncntを1つ
インクリメントする(oncnt=4)。ステップS1
2に進み、iを1つインクリメントする(i=6)。ス
テップS13でiがlen(=7)以上か否かが判断さ
れ、NOなので、ステップS14でoncntがonc
ntの最大値(=7)より小さいか否かが判断される。
ステップS14では、まだNOなのでステップS8へ進
む。
【0077】ステップS8で共通マップ22のi(=
6)番目が既に“1”か否かが判断され、NOとなる。
ステップS9で記号(変数)の記号(「A」)と記号バ
ッファ21のi(=6)番目の記号(「D」)が等しい
か否かが判断される。今の場合、等しくないので、ステ
ップS12でiを1つインクリメントし(i=7)、ス
テップS13でiがlen(=7)以上か否かが判断さ
れる。この場合には、記号バッファ21内の全ての記号
について処理をしたので、iはlen以上となってお
り、ステップS15に進む。
【0078】ステップS15では、oncntが“0”
か否かを判断する。記号「A」の場合には、oncnt
が“0”でないので、ステップS16で記号(変数)内
の記号「A」を出力し、ステップS17で、oncnt
が“1”か否かを判断する。記号「A」の場合には、こ
れに該当しないので、ステップS18でフラグを“1”
で出力し、更に、(oncnt−2)の値(=2)をオ
ンカウントの値として出力する(この時点での共通マッ
プ22、及び出力マップ23は図10の第1記号(A)
の行に記載されているものとなる)。
【0079】ステップS19でlenが“1”か否かを
判断し、lenは“7”であるので、次に、ステップS
24で出力マップ23の先頭ビットを除き、最後に
“1”が立っている場所まで出力マップ23を出力する
(ビットマップは“11001”となる)。以上の処理
により、図10に示す入力データ「AAABCAD」内
の記号「A」については、図10に示すように記号
「A」、「1」のフラグ、“010”のオンカウント、
及び“11001”のビットマップに圧縮されて出力さ
れる。ステップS25で、共通マップ22を1ビット左
へシフトし、最後のビットに“0”を設定し、記号バッ
ファ21の内容を1記号分だけ左へシフトして、次に処
理すべき記号の準備をする。
【0080】ステップS26で、フラグeofが“1”
か否かを判断し、フラグeofが“1”でなければ、ス
テップS27でデータファイルの次の記号を1個読む。
次に、ステップS28でデータファイルの終わりか否か
をOSからのステイタス情報を元に判断し、データファ
イルの終わりでない場合には、ステップS29で読み込
んだ記号を記号バッファ21の最終位置へ格納し、ステ
ップS6に戻って処理を繰り返す。
【0081】図10の場合、入力データ20はこれだけ
なので、ステップS28でデータファイルの終わりと判
断される。そこで、ステップS30に進み、eofを
“1”に設定し、ステップS31でlenの値を1つ減
らす(len=6)。
【0082】そして、ステップS6に戻り、図10の入
力データ20を左に1記号分シフトしたものに対し処理
を行うために、出力マップ23をクリアし、その先頭ビ
ットを“1”にする。ステップS7で記号(変数)に記
号バッファ21の0番目(「A」)を設定し、変数i、
j、oncntをそれぞれ“0”にする。
【0083】ステップS8で、上記ステップS25で左
にシフトされた後の共通マップ22の0番目が既に
“1”であるのでステップS10に進む。ステップS1
0でjを1つインクリメントし、ステップS12でiを
1つインクリメントし(i=1)、ステップS13でi
(=1)がlen(=6)以上か否かが判断される。判
断はNOとなるので、ステップS14でoncnt(=
0)がoncntの最大値(=7)より小さいか否かを
判断する。
【0084】再び、ステップS8で共通マップ22のi
(=1)番目が既に“1”であることが判断されるの
で、上記と同じ処理を行い、次のステップS8で共通マ
ップ22のi(=2)番目が既に“1”か否かを判断
し、“1”ではないので、ステップS9の処理を行う。
ステップS9で記号(変数)の記号(「A」)と記号バ
ッファ21のi(=2)番目の記号(「B」)が等しい
か否かを判断し、等しくないので、ステップS12へ飛
ぶ。ステップS12でiを1つインクリメントし(i=
3)、ステップS13、14を行う。この処理を繰り返
すことにより、記号バッファ21の先頭の記号「A」に
対しては、ステップS11の処理が行われないので、ス
テップS15でoncntが“0”と判断され、ステッ
プS25、S26、S31と進み、何も出力されずに次
の記号に行く(この時の上記ステップS25直前までの
共通マップ22、及び出力マップ23は図10の第2記
号(A)の行に示されたようになる)。
【0085】次の記号も「A」であるので、同様の処理
により、何も出力されない(この時のステップS25直
前までの共通マップ22、及び出力マップ23は図10
の第3記号(A)の行に示されたようになる)。
【0086】上記ステップS25で、図10の入力デー
タ20の「B」が記号バッファ21の先頭位置に来て、
共通マップ22が“0010000”になると、ステッ
プS26、S27、S31を経て、lenに「4」を設
定した後、ステップS6で出力マップ23をクリアし、
その先頭ビットを“1”とする。ステップS7で記号
(変数)に「B」が設定される。ステップS8で共通マ
ップ22のi(=0)番目が既に“1”か否か判断され
る。判断はNOとなるので、ステップS9で記号(変
数)の記号(「B」)と記号バッファ21のi(=0)
番目の記号(「B」)が等しいか否かが判断される。判
断はYESなので、ステップS11で出力マップ23上
のi−j番目(0番目)の位置のビットに“1”を立て
ると共に、共通マップ22のi(=0)番目のビットに
“1”を立て、oncntを「1」に設定する。この結
果、共通マップ22は“1010000”、出力マップ
23は“1000000”となる。ステップS12でi
を1つインクリメントし(i=1)、ステップS13で
i(=1)がlen(=4)以上か否かが判断される。
判断はNOなのでステップS14でoncntがonc
ntの最大値より小さいか否かを判断する。今、onc
ntは“1”なので、ステップS8に戻る。
【0087】ステップS8では、共通マップ22のi
(=1)番目が既に“1”か否かの判断がされ、判断が
NOとなってステップS9に進む。ステップS9では、
記号(変数)の記号(「B」)と記号バッファ21のi
(=1)番目の記号(「C」)とが比較される。判断は
NOなのでステップS12でiを1つインクリメントし
(i=2)、ステップS13でiがlen(=4)以上
か否かが判断される。判断はNOとなり、oncnt
(=1)がoncntの最大値よりも小さいか否かが判
断される。判断はYESとなり、ステップS8に戻る。
【0088】ステップS8で共通マップ22のi(=
2)番目には既に“1”が立っているか否かが判断され
るが、記号バッファ21のi(=2)番目は「A」なの
で、既に共通マップ22に“1”が立てられている。従
ってステップS10でjが1つインクリメントされ(j
=1)、ステップS12でiが1つインクリメントされ
(i=3)、ステップS13でi(=3)がlen(=
4)以上か否か判断される。判断はNOなので、ステッ
プS14でoncnt(=1)がoncntの最大値
(=7)より小さいか判断される。判断はYESでステ
ップS8に戻る。
【0089】ステップS8で共通マップ22のi(=
3)番目が既に“1”か判断されるが、判断の結果はN
Oとなる。ステップS9で記号(変数)の記号である
「B」と記号バッファ21のi(=3)番目の記号
(「D」)とが同じか否か判断され、判断はNOとな
る。ステップS12でiが1つインクリメントされ(i
=4)、ステップS13でiがlen(=4)以上とな
り、ステップS15でoncntが“0”か否かを判断
する。図10の入力データ20の中には「B」という記
号は1つしかないので、上述したように記号「B」に対
してはステップS11の処理は1回のみ行われ、onc
ntが1となっており、ステップS15の判断はNOと
なる。そこで、記号「B」がステップS16で出力され
る。
【0090】次に、ステップS17でoncntが
“1”か否かを判断するが、今の場合、これに相当する
のでステップS20以降の処理が行われる。従って、ス
テップS20でフラグを“0”で出力する。ステップS
21では、今処理した記号がデータファイル内の最後の
記号か否か(lenが1か否か)が判断されるが、記号
「B」の処理の時点では最後の記号ではないので(le
n=4であるので)、ステップS25、S26、S31
の処理を順次行い、ステップS6に戻って次の記号を処
理する(上記ステップS25直前の共通マップ22、及
び出力マップ23は図10の第4記号(B)の行に示さ
れたようになる)。また、上記ステップS25により、
共通マップ22は“0100000”となり、記号バッ
ファ21の先頭には「C」が来る。
【0091】このように、図10に示す入力データの場
合、記号「B」については図10に示すように、記号
「B」と「0」のフラグのみが出力される。ステップS
6で出力マップ23をクリアし、先頭ビットを“1”に
する。ステップS7で記号(変数)に記号バッファ21
の0番目を設定し(今の場合、記号「C」)、変数i、
j、oncntをそれぞれ“0”に設定する。記号
「C」の場合には、上記ステップS30でlenの値が
“3”になり、上記の記号「B」と同様に共通マップ2
2上で“1”が立てられるビットがi(=0)番目のビ
ットとなる(この時の共通マップ22、及び出力マップ
23は図10の第5記号(C)の行に記載されたように
なる)。そして、ステップS6に戻って次の記号の処理
をする。この結果、ステップS16で記号「C」が出力
され、ステップS20で“0”のフラグが出力される。
従って、図10に示す入力データ20の場合、記号
「C」については、図10に示すように、上記記号
「B」と同様に、記号「C」と「0」のフラグのみが出
力される。
【0092】ステップS6で、出力マップ23をクリア
し、その先頭ビットを“1”にする。そして、ステップ
S7で記号(変数)の記号に記号バッファ21の0番目
の記号(今度の場合には記号「A」)が設定され、変数
i、j、oncntそれぞれを“0”に設定する。
【0093】今度の記号「A」の場合には、既に、前述
したようにビットマップの作成が行われており、上記ス
テップS6の前のステップS25で、出力マップ23が
“1000000”に設定され、ステップS31でle
nに“2”が設定される。このように、共通マップ22
のi(=0)番目が既に“1”に設定されているので、
ステップS8で判断がYESとなる。そして、ステップ
S12で、iが1つインクリメントされ(i=1)、ス
テップS13でi(=1)がlen(=2)以上か否か
が判断される。判断はNOとなり、oncnt(=0)
がoncntの最大値より小さいか否かが判断されて、
ステップS8に戻る。ステップS8ではi(=1)番目
が既に“1”か否かが判断されるが、判断はNOとな
り、ステップS9へ進む。記号(変数)の記号
(「A」)と記号バッファ21のi(=1)番目の記号
(「D」)とが等しいか判断され、判断はNOとなる。
ステップS12でiが1つインクリメントされ(i=
2)、ステップS13でlen(=2)以上か判断され
る。ステップS13で記号(変数)の記号(「A」)に
ついて記号バッファ21内の記号を調べおわった(iが
len以上)ことが判断されると、ステップS15へ進
み、oncntが“0”のままなのでステップS15で
判断がYESとなる。そして、以下のステップS25、
S26、S31の処理を行い、何も出力しないでステッ
プS6へ進み、次の記号である「D」の処理へと進む
(上記ステップS25直前の共通マップ22、及び出力
マップ23は図10の第6記号(A)の行に示されたよ
うになる)。
【0094】ステップS6で出力マップ23をクリア
し、先頭のビットを“1”とする。ステップS7で記号
(変数)の記号として記号バッファ21の0番目の記号
「D」が設定され、変数i、j、oncntがそれぞれ
“0”に設定される。ステップS8で共通マップ22の
i(=0)番目が既に“1”か否か判断されるが、この
時点で、共通マップ22は“0000000”となって
おり、“1”ではないのでステップS9に進む。記号
(変数)の記号(「D」)と記号バッファ21のi(=
0)番目の記号(「D」)が等しいか否か判断される
が、等しいのでステップS11に進む。ステップS11
では、出力マップ23上にi−j番目(0番目)の位置
へビットを立て、共通マップ22上のi(=0)番目の
位置へビットを立てる。そして、oncntを1つイン
クリメントし(oncnt=1)、ステップS12でi
を1つインクリメントし(i=1)、ステップS13に
進む。この場合には、入力データ20の最後の記号であ
るので、lenは1となっており、iも“1”なので、
ステップS15へ進む。以下、ステップS16、S1
7、S20、S21と進む(この時の共通マップ22、
及び出力マップ23は図10の第7記号(D)の行に示
されたようになる)。この結果、ステップS16で、記
号「D」が出力され、ステップS20で“0”のフラグ
が出力される。そして、ステップS21で、lenが
“1”なので、入力データ20の圧縮処理が終了したも
のと判断して、データ圧縮処理を終了する。
【0095】また、ステップS17でoncntが
“1”でない場合にも、ステップS19でlenが1の
場合には、入力データ20の圧縮処理が終了したことを
示すので、処理は終了となる。
【0096】図10には、入力データ20の第1記号か
ら第7記号までの各記号を処理している時の共通マップ
22と出力マップ23及び、圧縮データ25のそれぞれ
の最終結果がどのようになるかが示されている。このよ
うに、共通マップ22で既に処理された記号の入力デー
タ20内での位置を保持しておき、出力マップ23内で
圧縮データとしてのビットマップを生成して、oncn
tの値に応じて、{記号、フラグ、オンカウント、ビッ
トマップ}(oncnt≧2の場合)、または{記号、
フラグ}(oncnt=1の場合)を出力することによ
り、記号列からなる入力データ20の圧縮を行うことが
出来る。図10では、共通マップ22は第1記号から次
第に処理が進むにつれて、左にシフトしていくと共に、
記号バッファ21内の処理した記号が存在する位置に対
応する位置のビットに“1”が立てられている。出力マ
ップ23は各記号のビットマップを作成するための作業
バッファであり、共通マップ22で既に“1”が立って
いる部分のビットを省略するために、共通マップ22を
参照して作成される。すなわち、第2、3記号の「A」
に対しては、第2、3記号がある位置に既に、共通マッ
プ22内で“1”が立っているので、これら第2、3記
号については出力マップ23内にビットマップが作成さ
れていない(全てのビットが“0”になっている)。
【0097】なお、図10の圧縮データ例には、オンカ
ウントのビット数(ビット幅)を示すデータが記載され
ていないが、実際には圧縮データ25の先頭に3ビット
のビット幅を示すデータが出力される。図11及び図1
2は、図7〜図9の方法で圧縮されたデータを復元する
処理のフローチャートである。
【0098】図13は、図10の入力データ20の圧縮
データ25を復元する際の共通マップ28等の様子を示
す図である。以下、図11、12のフローチャートを図
13を参照しながら説明する。なお、図13の圧縮デー
タ25の例においては、オンカウントビット幅を示すデ
ータが省略されているが、実際には、圧縮データ25の
先頭にオンカウントのビット幅が3ビットであることを
示すデータがある。
【0099】復元処理を始めるとステップS40で、圧
縮データ25ファイルから圧縮データ25の先頭にある
オンカウントのビット幅を取得し(3ビット)、フラグ
eofを“0”に設定し、共通マップ28をクリアす
る。ステップS41で圧縮データ25ファイルから圧縮
データ25内の記号(今の場合、先頭の記号)を読み、
ステップS42で圧縮データファイルの終わりか否かが
判断される。今の場合は圧縮データファイルの終わりで
はないので、ステップS43に進む。ステップS43で
は、変数i、jを0に、bを“1”に設定し、記号の次
にあるフラグを読む。ここで、iは共通マップ28のビ
ット位置を表し、jは出力された記号数を計数するため
のカウンタであり、bは圧縮データ25内のビットマッ
プの各ビットの値が設定されるものである。
【0100】なお、bを“1”に初期設定するのは、圧
縮データ25におけるビットマップが、元のビットマッ
プの先頭の“1”のビットが削除されたものであるから
であり、この削除された“1”のビットい対応する記号
は、後述するステップS48で復元され、その後、後述
するステップS53で圧縮データ25の各記号のビット
マップを先頭から順次1ビットづつ読み出す処理が開始
される。この事により、後述するステップS45で設定
されるoncntの値に等しい個数だけ、各記号が復元
される。
【0101】ステップS44で上記フラグが“0”か否
かを判断し(すなわち、オンカウントとビットマップが
後ろに続いているかを判断し)、フラグが“0”の場合
には、ステップS46でoncntを“1”に設定し、
フラグが“0”でない場合には、ステップS45でon
cntを(オンカウント値+2)とする。記号「A」の
場合には、図13の記号「A」とフラグの後ろの3ビッ
トのオンカウント値が“010”であるので、oncn
tは“4”となる。
【0102】ステップS47で、bが“0”か否かが判
断される。今の場合、ステップS43でb=“1”とさ
れているので、判断はNOとなる。ステップS48で、
共通マップ28のi番目(今の場合、0番目)のビット
以降で最初の“0”のビット位置にiの値を変える。現
在では共通マップ28はクリアされたばかりなので、i
は“0”に設定される(図13の第1記号(A)の上段
の共通マップ28“0000000”を参照)。更に、
共通マップ28のi番目(今の場合、0番目)のビット
に“1”を設定し、記号バッファ29のi記号目に先に
読み込んだ記号を格納する。そして、jを1だけインク
リメントする。これにより、記号バッファ29の0番目
に「A」という記号が格納される。
【0103】次に、ステップS50で、iを1つインク
リメントし(i=1)、ステップS51でj(=1)が
oncnt(=4)の値に等しいか否かを判断する。図
13の圧縮データ25の内、記号「A」に関しては、o
ncntが“4”であるのでステップS51においては
判断は、NOとなる。続いて、ステップS52でeof
が“1”か否かを判断するが、現在の場合はeofは
“0”に設定された状態なので判断はNOとなる。
【0104】次に、ステップS53で、圧縮データファ
イルからビットマップの1ビットを読み込み、ステップ
S54でOSから返されるステイタス情報により、圧縮
データファイルの終わりか否かを判断する。圧縮データ
ファイルの終わりでない場合には、bに、上記読んだビ
ットマップの1ビットの値を設定する。このとき読み込
まれるビットマップのビットは図13の記号「A」のビ
ットマップの1番目(最初のビット)であるので、
“1”である。
【0105】そして、ステップS47に戻って、bが
“0”か否かを判断する。記号「A」の場合、ビットマ
ップには先頭から2個の“1”が並んでいるので、bは
“0”ではない。従って、ステップS48で、共通マッ
プ28のi(=1)番目以降のビットで最初の“0”の
ビット位置(i=1の位置)にiの値を変える。ここで
は、iは“1”のままである。次に、共通マップ28の
i(=1)番目のビットに“1”を立てる。そして、記
号バッファ29のi(=1)記号目に先に読んだ記号
(「A」)を格納する。そして、jを1つインクリメン
トし(j=2)、ステップS50に進む。ステップS5
0では、iを1つインクリメントし(i=2)、ステッ
プS51でj(=2)がoncnt(=4)に等しいか
否か判断される。判断はNOであるので、ステップS5
2で、eofが“1”か否かが判断され、判断はNOと
なる。ステップS53で、上記ビットマップの次の1ビ
ットを読み込み、ステップS54でOSから返されるス
テイタス情報により、ファイルの終わりか否かを判断す
る。まだ、ファイルの終わりではないので、ステップS
55で読んだビットマップの1ビットをbに設定し、ス
テップS47に戻る。このときステップS53で読み込
まれるビットマップのビットは、図13の記号「A」の
ビットマップの2番目のビットであるので“1”であ
る。
【0106】すると、ステップS47でbが“0”であ
るか否かを判断するが、b=1であるので、判断はNO
となる。ステップS48で、共通マップ28のi(=
2)番目以降のビットで最初の“0”のビット位置(i
=2の位置)にiの値を変える。そして、共通マップ2
8のi(=2)番目の位置のビットに“1”を設定す
る。また、記号バッファ29のi(=2)記号目に先に
読み込んだ記号(「A」)を格納し、jを1つインクリ
メントする(j=3)。次にステップS50でiを1つ
インクリメントし(i=3)、ステップS51でj(=
3)がoncnt(=4)に等しいか否か判断する。判
断はNOであるので、ステップS52でeofが“1”
か否か判断する。eofは“1”でないので、ステップ
S53で圧縮データファイルから上記ビットマップの次
の1ビットを読む。ステップS54で、OSから返され
るステイタス情報により、圧縮データファイルの終わり
か判断されるが、圧縮データファイルの終わりではない
ので、ステップS55に進んで、上記読んだビットマッ
プの1ビットをbに設定する。この時、読み込まれるビ
ットは図13の記号「A」のビットマップの第3番目の
ビットであるので、b=0となる。そして、ステップS
47に戻る。
【0107】ステップS47でbが“0”か否か判断さ
れるが、b=0であるので、ステップS49に進む。ス
テップS49で、共通マップ28のi(=3)番目以降
のビットで最初の“0”のビット位置にiの値を変える
(i=3)。ステップS51でiが1つインクリメント
され(i=4)、j(=3)とoncnt(=4)とが
等しいか判断される(ステップS49)。jとoncn
tは等しくないので、ステップS52でeofが“1”
か否かを判断し、eof=0なのでステップS53に進
む。ステップS53で圧縮データファイルから上記ビッ
トマップの次の1ビット(図13の記号「A」のビット
マップの4番目のビット)を読む。ステップS54で、
OSから返されるステイタス情報により、圧縮データフ
ァイルの終わりか否かが判断され、終わりでないので、
上記読み込んだビットマップの1ビット(“0”)がb
に設定され、ステップS47に戻る。
【0108】ステップS47でb=0が判断されるの
で、ステップS49で共通マップ28のi(=4)番目
以降のビットで最初の“0”のビット位置(4番目の位
置)にiの値を変える(i=4)。ステップS50でi
が1つインクリメントされ(i=5)、ステップS51
でj(=3)とoncnt(=4)とが等しいかが判断
される。判断はNOなので、ステップS52でeofが
“1”か否かが判断される。判断はNOなので、圧縮デ
ータファイルから上記ビットマップの次の1ビットを読
み込む。図13では、記号「A」のビットマップの5番
目のビットを読み込む。ステップS54で圧縮データフ
ァイルの終わりでないので、ステップS55で、上記読
み込んだビットマップの1ビットをbに設定する(b=
1)。そして、ステップS47に戻る。
【0109】ステップS47でbは“0”でないことが
分かるので、ステップS48に進む。ステップS48で
は、共通マップ28のi(=5)番目以降のビットで最
初の“0”のビット位置にiの値を変える(今の場合、
i=5)。また、共通マップ28のi(=5)番目の位
置のビットに“1”を立てる。更に、記号バッファ29
のi(=5)記号目に先に読み込んだ記号(「A」)を
格納し、jを1つインクリメントする(j=4)。ステ
ップS50でiを1つインクリメントし(i=6)、ス
テップS51でj(=4)とoncnt(=4)とが等
しいか判断される。今度の場合には、互いに等しいので
判断はYESとなり、ステップS58に進む。ステップ
S58で、共通マップ28の先頭から連続して“1”が
立っているビットの個数をn(今の場合3)として、記
号バッファ29の先頭から記号(=「A」)をn個(3
個)出力する(図13の第1記号(A)の共通マップ2
8の中段“1110010”を参照)。また、共通マッ
プ28を左へn(=3)ビットシフトし、右端のn(=
3)ビットを“0”にする(図13の第1記号の共通マ
ップ28の下段“0010000”を参照)。更に、記
号バッファ29をn(=3)記号分左へシフトする。ス
テップS59で、eofは“1”か否か判断されるが、
eofは“1”ではないのでステップS41に戻る。
【0110】ステップS41では、圧縮データファイル
から次の記号を読み(図13の圧縮データ25の記号
「B」)、ステップS42で、OSから返されるステイ
タス情報により、圧縮データファイルの終わりか否かが
判断されるが、圧縮データファイルの終わりではないの
でステップS43に進む。ステップS43では、変数
i、jをそれぞれ“0”とし、bを“1”とする。そし
て、圧縮データファイルからフラグを読み込む。この場
合、フラグは“0”である。従って、ステップS46に
進み、oncntに“1”が設定される。ステップS4
7でbが“0”か否か判断されるが、ステップS43で
b=“1”とされているので、判断はNOとなる。次
に、ステップS48に進んで、共通マップ28のi(=
0)番目以降のビットで、最初の“0”のビット位置に
iの値を変える。共通マップ28は前述のステップS5
8でn(=3)ビットシフトされているので、i(=
0)番目以降のビットで、最初の“0”のビット位置は
0番目で、iは“0”となる(図13の第2記号(B)
の共通マップ28の上段“0010000”を参照)。
そして、共通マップ28のi(=0)番目のビットに
“1”が設定され(図13の第2記号の共通マップ28
の中段“1010000”を参照)、記号バッファ29
のi(=0)記号目に先に読み込んだ記号(「B」)を
格納し、jを1つインクリメントする(j=1)。ステ
ップS50でiを1つインクリメントし(i=1)、ス
テップS51でj(=1)がoncnt(=1)に等し
いか否かが判断される。jとoncntが等しいので、
ステップS58に進み、共通マップ28の先頭から連続
して“1”が立っているビットの個数をn(=1)とし
たとき、記号バッファ29の先頭から記号(=「B」)
をn(=1)個出力する。また、共通マップ28を左へ
n(=1)ビットシフトし、右端n(=1)ビットは
“0”とする(図13の第2記号の下段の共通マップ2
8“0100000”を参照)。更に、記号バッファ2
9をn(=1)記号分左へシフトする。そして、ステッ
プS59に進む。ステップS59では、eofが“1”
か否かが判断され、“1”ではないので、ステップS4
1に戻る。
【0111】ステップS41では、圧縮データファイル
から図13の圧縮データ25の次の記号「C」が読み込
まれる。ステップS42で、OSから返されるステイタ
ス情報により、圧縮データファイルの終わりか否かが判
断されるが、まだ終わりではないのでステップS43に
進む。ステップS43で変数i、jを“0”に設定し、
b=“1”として、圧縮データファイルから次のフラグ
を読む。該フラグは図13に示されているように“0”
である。ステップS44でフラグの値が“0”か否かが
判断され、今の場合YESなのでステップS46でon
cntを“1”に設定する。ステップS47でb=0か
否かが判断されるが、b=1であるので、ステップS4
8に進む。ステップS48で、共通マップ28のi(=
0)番目以降のビットで最初の“0”のビット位置にi
の値を変える(i=0;図13の第3記号(C)の上段
の共通マップ28“0100000”を参照)。共通マ
ップ28のi(=0)番目に“1”が設定され(図13
の第3記号の中段の共通マップ28“1100000”
を参照)、記号バッファ29のi(=0)記号目に先に
読んだ記号(「C」)を格納する。そして、jを1つイ
ンクリメントする(j=1)。ステップS50で、iを
1つインクリメントし(i=1)、ステップS51でj
(=1)とoncnt(=1)とが等しいか否かが判断
され、等しいのでステップS58に進む。ステップS5
8で、共通マップ28の先頭から連続して“1”が立っ
ているビットの個数をnとしたとき、記号バッファ29
の先頭から記号をn個出力する。今の場合、図13の第
3記号の中段の共通マップ28に示されているように、
“1”が2個続いている。これは、記号バッファ29内
で記号「C」と第1記号である記号「A」とが隣り合っ
て配列されていることを示している。従って、nは
“2”となり、記号バッファ29の先頭から記号を2個
(記号「C」と記号「A」)出力する(図13の第3記
号の中段の共通マップ28“1100000”を参
照)。また、共通マップ28の左へn(=2)ビットシ
フトし、右端n(=2)ビットを“0”にする(図13
の第3文字の下段の共通マップ28“0000000”
を参照)。更に、記号バッファ29をn(=2)記号分
左へシフトする。ステップS59に進み、eofが
“1”か否か判断されるが、eofは“0”なのでステ
ップS41に戻る。
【0112】ステップS41で、圧縮データファイルか
ら次の記号(図13では「D」)を読み込み、ステップ
S42で、OSから返されるステイタス情報より、圧縮
データファイルの終わりか否かが判断される。圧縮デー
タファイルの終わりではないので、ステップS43で、
i=0、j=0、b=“1”とし、圧縮データファイル
からフラグ(図13の記号「D」の場合、“0”)を読
む。ステップS44で、上記フラグの値が“0”である
か否かが判断されるが、上記フラグの値は“0”である
ので、ステップS46に進む。ステップS46ではon
cntが“1”に設定され、ステップS47でbが
“0”か否かが判断される。b=“1”なので、ステッ
プS48で共通マップ28のi(=0)番目以降で最初
の“0”の位置にiの値を変える(i=0;図13の第
4記号(D)の上段の共通マップ28“000000
0”を参照)。共通マップ28のi(=0)番目に
“1”を立て(図13の第4記号の下段の共通マップ2
8“1000000”を参照)、記号バッファ29のi
(=0)記号目に先に読んだ記号(「D」)を格納す
る。更にjを1つインクリメントする(j=1)。ステ
ップS50でiを1つインクリメントし(i=1)、ス
テップS51でj(=1)とoncnt(=1)とが等
しいか否かが判断されて、ステップS58に進む。ステ
ップS58で共通マップ28の先頭から連続して“1”
が立っているビットの個数をnとしたとき(図13の第
4記号の下段の共通マップ28“1000000”を参
照)、記号バッファ29の先頭から記号をn(今の場
合、n=1)個出力する(記号「D」が出力される)。
共通マップ28を左へn(=1)ビットシフトし、右端
n(=1)ビットを“0”にする。更に、記号バッファ
29をn(=1)記号分左へシフトする。図13で言え
ば、第4記号の下段の共通マップ28に従って、記号
「D」が1個が出力されることになる。次に、ステップ
S59に進み、eofが“1”か否かが判断され、
“1”ではないので、ステップS41に戻る。
【0113】ステップS41で圧縮データファイルから
次の記号が読まれるが、次の記号は無いので、ステップ
S42でファイルの終わりであることが判断され処理は
終了する。
【0114】図13の場合には、圧縮データ25の最後
がビットマップを有しない記号であったが、ビットマッ
プを有する記号であった場合には、ステップS54で、
OSから返されるステイタス情報より、圧縮データファ
イルの終わりか否かを判断し、終わりであれば、ステッ
プS56でeofを“1”に設定すると共に、ステップ
S57でbに“1”を設定する。ここで、bに“1”を
設定するのは、図5(b)のデータ圧縮方法において圧
縮率の向上のために削除された元のビットマップ(図4
参照)の“1”のビットを復元するためである。そし
て、ステップS47、S48、S50、S51、及びS
58を経て、ステップS59に処理が至ったときに、処
理を終了する。
【0115】図13の共通マップ28は、第1、2、3
記号に対応するものは、上段が最初のステップS48の
前の状態、中段がステップS58の前の状態、下段がス
テップS58の後の状態である。また、第4記号「D」
に対応するものは、上段がステップS48の前の状態、
下段がステップS48の後の状態である。
【0116】このように、共通マップ28という作業バ
ッファを設け、先に配置された記号の位置を記録してお
くことにより、順次圧縮データ25を読んで記号バッフ
ァ29内の共通マップ28内の“1”が立っていないビ
ットに対応する部分に、後から読み込んだ記号を配置す
るように処理することにより、ビットマップ形式で圧縮
されたデータを復元することができる。
【0117】上記の説明においては、特定の実施形態を
例に説明したが、本発明はこれら具体的な実施の形態に
のみ限定されるべきではなく、本発明の要旨から離れる
ことの無い範囲で当業者により変形その他による実施が
可能であるが、これらの変形例も本発明の範囲と考えら
れるべきである。
【0118】
【発明の効果】本発明によれば、圧縮すべきデータの量
が少なくても効果的なデータ圧縮方法を提供することが
出来る。
【0119】また、本発明のデータ圧縮方法によれば、
如何なるデータ量のデータファイルも効果的に圧縮でき
るので、データを記録する記録媒体の記憶領域を有効に
使用することができる。
【0120】更に、データ通信を行う場合においても、
データを効率的に圧縮して送受信することができるの
で、通信コストを下げることができる。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明のデータ圧縮処理を行うための装置構成
の一例である。
【図3】本発明のデータ圧縮方法を説明する図(その
1)である。
【図4】本発明のデータ圧縮方法を説明する図(その
2)である。
【図5】本発明のデータ圧縮方法を説明する図(その
3)である。
【図6】本発明の一実施形態のデータ圧縮/復元処理の
概念を説明する図である。
【図7】本発明の一実施形態であるデータ圧縮処理を説
明するフローチャートの一例(その1)である。
【図8】本発明の一実施形態であるデータ圧縮処理を説
明するフローチャートの一例(その2)である。
【図9】本発明の一実施形態であるデータ圧縮処理を説
明するフローチャートの一例(その3)である。
【図10】本発明の一実施形態であるデータ圧縮処理を
説明するためのデータのサンプルを示す図である。
【図11】本発明の一実施形態であるデータ復元処理を
説明するフローチャートの一例(その1)である。
【図12】本発明の一実施形態であるデータ復元処理を
説明するフローチャートの一例(その2)である。
【図13】本発明の一実施形態であるデータ復元処理を
説明するためのデータのサンプルを示す図である。
【符号の説明】
3 入力データ取得手段 4 ビットマップ生成手段 5 出力手段 10 RAM 11 ROM 12 CPU 13 入出力装置 14 記録媒体読み取り装置 15 記録媒体 16 通信インタフェース 17 データベース(記録媒体;プログラム提供
者) 18 バス 19 ネットワーク 20 入力データ 21 記号バッファ 22 共通マップ 23 出力マップ 24 記号 25 圧縮データ 26 記号 27 ビットマップ読み込み変数 28 共通マップ 29 記号バッファ 30 復元データ

Claims (31)

    【特許請求の範囲】
  1. 【請求項1】(a)圧縮すべきデータを読み込むステッ
    プと、 (b)読み込んだデータに含まれる記号を取得するステ
    ップと、 (c)該取得した記号の該読み込んだデータ内での存在
    する位置を表すビットマップを生成するステップと、 (d)前記取得した記号と前記ビットマップとを組み合
    わせて、圧縮データとして出力するステップを、 備えることを特徴とするデータ圧縮方法。
  2. 【請求項2】前記ステップ(c)において、前記ビット
    マップは前記取得した記号の前記存在位置を前記読み込
    んだデータの先頭から後尾に向かう順番で表すことを特
    徴とする請求項1に記載のデータ圧縮方法。
  3. 【請求項3】前記ステップ(c)に続いて実行される
    (e)前記ビットマップの内、前記取得した記号が存在
    することを示す最後尾のビットから前記ビットマップの
    最後尾まで連続する前記取得した記号が存在しないこと
    を示すビットを前記ビットマップから削除するステップ
    と、 (f)前記削除により得られた新たなビットマップのビ
    ット長を表すカウンタ値を算出するステップを更に備
    え、 前記ステップ(d)においては、前記取得した記号と、
    前記ステップ(f)において作成されたビットマップ
    と、前記カウント値とを組み合わせて、圧縮データとし
    て出力することを特徴とする請求項2に記載のデータ圧
    縮方法。
  4. 【請求項4】前記読み込んだデータの先頭から出現順に
    各記号を取得し、該各記号に対して、前記ステップ
    (c)、(e)、(f)、(d)からなる圧縮処理を順
    に実行することによって読み込んだデータを圧縮するこ
    とを特徴とする請求項3に記載のデータ圧縮方法。
  5. 【請求項5】前記ステップ(e)、前記ステップ(f)
    の間で実行される(g)先立って圧縮処理された記号が
    前記読み込んだデータ内に占める位置を、後に圧縮処理
    される記号に対応するビットマップから削除するステッ
    プを更に備えることを特徴とする請求項4に記載のデー
    タ圧縮方法。
  6. 【請求項6】前記ステップ(g)と前記ステップ(f)
    の間で実行される(h)前記ビットマップの先頭に存在
    する、該ビットマップに対応する記号が存在することを
    示すビットを削除するステップを更に備えることを特徴
    とする請求項5に記載のデータ圧縮方法。
  7. 【請求項7】前記取得した同一の記号が前記読み込んだ
    データ内で離れて配置されている場合に、前記同一の記
    号それぞれに対し別個に圧縮処理を行うことを特徴とす
    る請求項6に記載のデータ圧縮方法。
  8. 【請求項8】(i)ある記号に対応する前記カウンタ値
    と前記ビットマップとが圧縮データとして記録されてい
    るか否かを示すフラグを、該記号と組み合わせて圧縮デ
    ータとして出力するステップを更に備えることを特徴と
    する請求項7に記載のデータ圧縮方法。
  9. 【請求項9】所定の数の記号を格納する記号バッファに
    圧縮すべきデータの一部を読み込み、前記記号バッファ
    内に前記圧縮すべきデータをスライド入力させることに
    よって、順次圧縮すべきデータに対し圧縮処理を行うこ
    とを特徴とする請求項1〜8のいずれか1つに記載のデ
    ータ圧縮方法。
  10. 【請求項10】前記カウンタ値は、前記ビットマップに
    よって復元されるべき前記取得した記号の数を表すこと
    を特徴とする請求項3〜9のいずれか1つに記載のデー
    タ圧縮方法。
  11. 【請求項11】圧縮すべきデータを読み込み、読み込ん
    だデータに含まれる記号を取得する入力データ取得手段
    と、 前記取得した記号の読み込んだデータ内での存在位置を
    表すビットマップを生成するビットマップ生成手段と、 前記取得した記号と前記ビットマップとを組み合わせ
    て、圧縮データとして出力する出力手段とを備えること
    を特徴とするデータ圧縮装置。
  12. 【請求項12】前記ビットマップは前記取得した記号の
    前記存在位置を前記読み込んだデータの先頭から後尾に
    向かう順番で表すことを特徴とする請求項11に記載の
    データ圧縮装置。
  13. 【請求項13】前記ビットマップの内、前記取得した記
    号が存在することを示す最後尾のビットから前記ビット
    マップの最後尾まで連続する前記取得した記号が存在し
    ないことを示すビットを前記ビットマップから削除する
    削除手段と、 該削除によって得られた新たなビットマップのビット長
    を表すカウンタ値を算出するカウンタ値算出手段を更に
    備え、前記出力手段は、前記取得した記号と前記カウン
    タ値と前記削除手段によって得られたビットマップとを
    組み合わせて、圧縮データとして出力することを特徴と
    する請求項12に記載のデータ圧縮装置。
  14. 【請求項14】前記カウンタ値は、前記ビットマップに
    おける前記取得した記号が存在することを示すビットの
    数から2を引いた数を表すことを特徴とする請求項13
    に記載のデータ圧縮装置。
  15. 【請求項15】前記読み込んだデータの先頭から出現順
    に各記号を取得し、該各記号に対して、前記ビットマッ
    プ生成手段と、前記出力手段と、前記削除手段と、カウ
    ンタ値算出手段とによって実行される圧縮処理を順に実
    行することによって読み込んだデータを圧縮することを
    特徴とする請求項13に記載のデータ圧縮装置。
  16. 【請求項16】先立って圧縮処理された記号が前記読み
    込んだデータ内に占める位置を、後に圧縮処理される記
    号に対応するビットマップから削除する冗長ビット削除
    手段を更に備え、 前記出力手段は、該冗長ビット削除手段によって得られ
    たビットマップを圧縮データとして出力することを特徴
    とする請求項15に記載のデータ圧縮装置。
  17. 【請求項17】前記ビットマップの先頭に存在する、該
    ビットマップに対応する記号が存在することを示すビッ
    トを削除する先頭ビット削除手段を更に備え、 前記出力手段は、該先頭ビット削除手段によって得られ
    たビットマップを圧縮データとして出力することを特徴
    とする請求項16に記載のデータ圧縮装置。
  18. 【請求項18】前記取得した同一記号が前記読み込んだ
    データ内で離れて配置されている場合に、前記同一記号
    それぞれに対し別個に圧縮処理を行うことを特徴とする
    請求項17に記載のデータ圧縮装置。
  19. 【請求項19】ある記号に対応して前記カウンタ値と前
    記ビットマップとが圧縮データとして記録されているか
    否かを示すフラグを、該記号と組み合わせて圧縮データ
    として出力するフラグ出力手段を更に備えることを特徴
    とする請求項18に記載のデータ圧縮装置。
  20. 【請求項20】コンピュータに所定の機能を実現させる
    ためのプログラムを記録したコンピュータ読み取り可能
    な記録媒体であって、 コンピュータに、 圧縮すべきデータを読み込ませる機能と、 読み込んだデータに含まれる記号を取得させる機能と、 該取得した記号の読み込んだデータ内に存在する位置を
    ビットマップで表させる機能と、 取得した記号と前記ビットマップとを組み合わせて、圧
    縮データとして出力させる機能を実現させるためのプロ
    グラムを記録したコンピュータ読み取り可能な記録媒
    体。
  21. 【請求項21】前記ビットマップの生成機能が、前記取
    得した記号の前記存在位置を前記読み込んだデータの先
    頭から後尾に向かう順番で表すビットマップを生成させ
    る機能であるプログラムを記録した請求項20に記載の
    コンピュータ読み取り可能な記録媒体。
  22. 【請求項22】前記コンピュータに、前記ビットマップ
    の内、前記取得した記号が存在することを示す最後尾の
    ビットから前記ビットマップの最後尾まで連続する前記
    取得した記号が存在しないことを示すビットをビットマ
    ップから削除させる機能と、 前記削除機能によって得られたビットマップのビット長
    を表すカウンタ値を作成する機能と、 前記カウンタ値を前記取得した記号と組み合わせて圧縮
    データとして出力させる機能を更に実現させるためのプ
    ログラムを記録した請求項21に記載のコンピュータ読
    み取り可能な記録媒体。
  23. 【請求項23】前記カウンタ値の作成機能が、前記削除
    機能によって得られたビットマップにおける前記取得し
    た記号が存在することを示すビットの数から1を引いた
    数を表すカウンタ値を作成させる機能であるプログラム
    を記録する請求項22に記載のコンピュータ読み取り可
    能な記録媒体。
  24. 【請求項24】前記コンピュータに、前記読み込んだデ
    ータの先頭から出現順に記号を取得させる機能と、 該取得順に、前記各記号に対して、上記各機能から成る
    圧縮処理を施すことによって前記読み込んだデータを圧
    縮させる機能を更に実現させるためのプログラムを記録
    した請求項22に記載のコンピュータ読み取り可能な記
    録媒体。
  25. 【請求項25】前記コンピュータに、先立って圧縮処理
    された記号が前記読み込んだデータ内に占める位置を、
    後に圧縮処理される記号に対応するビットマップから削
    除させる機能を更に実現させるためのプログラムを記録
    した請求項24に記載のコンピュータ読み取り可能な記
    録媒体。
  26. 【請求項26】前記コンピュータに、前記ビットマップ
    の先頭に存在する、該ビットマップに対応する記号が存
    在することを示すビットを削除させる機能を更に実現さ
    せるためのプログラムを記録した請求項25に記載のコ
    ンピュータ読み取り可能な記録媒体。
  27. 【請求項27】前記コンピュータに、前記取得した同一
    記号が前記読み込んだデータ内で離れて配置されている
    場合に、前記同一記号それぞれに対し別個に圧縮処理を
    行わせる機能を更に実現させるためのプログラムを記録
    する請求項26に記載のコンピュータ読み取り可能な記
    録媒体。
  28. 【請求項28】前記コンピュータに、ある記号に対応す
    る前記カウンタ値と前記ビットマップとが圧縮データと
    して記録されているか否かを示すフラグを前記取得した
    記号と組み合わせて圧縮データとして出力させる機能を
    更に実現させるためのプログラムを記録する請求項27
    に記載のコンピュータ読み取り可能な記録媒体。
  29. 【請求項29】(a)圧縮すべきデータを読み込むステ
    ップと、(b)読み込んだデータに含まれる記号を取得
    するステップと、(c)該取得した記号の該読み込んだ
    データ内での存在位置を表すビットマップを生成するス
    テップと、(d)前記取得した記号と前記ビットマップ
    とを組み合わせて、圧縮データとして出力するステップ
    を備えるデータ圧縮方法によって生成された圧縮データ
    を読み込むステップと、 前記圧縮データから前記記号と前記記号に対応する前記
    ビットマップを読み取るステップと、前記ビットマップ
    で指定される位置に前記記号を出力するステップを備え
    るデータ復元方法。
  30. 【請求項30】圧縮すべきデータを読み込み、読み込ん
    だデータに含まれる記号を取得する入力データ取得手段
    と、前記取得した記号の読み込んだデータ内での存在位
    置を表すビットマップを生成するビットマップ生成手段
    と、前記取得した記号と前記ビットマップとを組み合わ
    せて、圧縮データとして出力する出力手段とを備えるデ
    ータ圧縮装置によって生成された圧縮データを読み込む
    読み込み手段と、 前記圧縮データから前記記号と前記記号に対応する前記
    ビットマップを読み取り、前記ビットマップで指定され
    る位置に前記記号を出力する復元データ出力手段を備え
    ることを特徴とするデータ復元装置。
  31. 【請求項31】コンピュータに所定の機能を実行させる
    ためのプログラムを記録したコンピュータ読み取り可能
    な記録媒体であって、該コンピュータに、 圧縮すべきデータを読み込ませる機能と、読み込んだデ
    ータに含まれる記号を取得させる機能と、該取得した記
    号の読み込んだデータ内での存在位置を表すビットマッ
    プを生成させる機能と、前記取得した記号と前記ビット
    マップとを組み合わせて、圧縮データとして出力させる
    機能を備えるプログラムによって生成された圧縮データ
    を読み込ませる機能と、 前記圧縮データから前記記号と前記記号に対応する前記
    ビットマップを読み取らせ、前記ビットマップで指定さ
    れる位置に前記記号を出力させることによって前記圧縮
    データを復元させる機能を実現させるためのプログラム
    を記録したコンピュータ読み取り可能な記録媒体。
JP7873898A 1997-08-25 1998-03-26 データ圧縮方法、その装置、データ復元方法、及びその装置、記録媒体 Withdrawn JPH11136135A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7873898A JPH11136135A (ja) 1997-08-25 1998-03-26 データ圧縮方法、その装置、データ復元方法、及びその装置、記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP22834197 1997-08-25
JP9-228341 1997-08-25
JP7873898A JPH11136135A (ja) 1997-08-25 1998-03-26 データ圧縮方法、その装置、データ復元方法、及びその装置、記録媒体

Publications (1)

Publication Number Publication Date
JPH11136135A true JPH11136135A (ja) 1999-05-21

Family

ID=26419802

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7873898A Withdrawn JPH11136135A (ja) 1997-08-25 1998-03-26 データ圧縮方法、その装置、データ復元方法、及びその装置、記録媒体

Country Status (1)

Country Link
JP (1) JPH11136135A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019185145A (ja) * 2018-04-02 2019-10-24 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019185145A (ja) * 2018-04-02 2019-10-24 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置

Similar Documents

Publication Publication Date Title
JP3337633B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3009727B2 (ja) 改良形データ圧縮装置
JP3278297B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US5999949A (en) Text file compression system utilizing word terminators
US20050219075A1 (en) In-place differential compression
JPH06508456A (ja) 多重レベルを利用するデータ圧縮
US6304676B1 (en) Apparatus and method for successively refined competitive compression with redundant decompression
Shanmugasundaram et al. Automatic reassembly of document fragments via context based statistical models
WO2008080741A1 (en) Automatically collecting and compressing style attributes within a web document
US10911066B2 (en) Method and system of content based dynamic data compression
US20200294629A1 (en) Gene sequencing data compression method and decompression method, system and computer-readable medium
Al-Okaily et al. Toward a better compression for DNA sequences using Huffman encoding
JP5656593B2 (ja) 符号化データを復号する装置及び方法
JP4261299B2 (ja) データ圧縮装置、データ復元装置およびデータ管理装置
US6112208A (en) Data compressing method and apparatus to generate bit maps in accordance with extracted data symbols
US7379940B1 (en) Focal point compression method and apparatus
US11017155B2 (en) Method and system for compressing data
JP2011090526A (ja) 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置
CN108829872B (zh) 无损压缩文件的快速处理方法、设备、系统及存储介质
US20220358290A1 (en) Encoding and storing text using dna sequences
US8463759B2 (en) Method and system for compressing data
JPH10261969A (ja) データ圧縮方法および装置
JPH11136135A (ja) データ圧縮方法、その装置、データ復元方法、及びその装置、記録媒体
JP2016170750A (ja) データ管理プログラム、情報処理装置およびデータ管理方法
US8244677B2 (en) Focal point compression method and apparatus

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20050607