JPH10190476A - データ圧縮方法及びその装置 - Google Patents
データ圧縮方法及びその装置Info
- Publication number
- JPH10190476A JPH10190476A JP35121196A JP35121196A JPH10190476A JP H10190476 A JPH10190476 A JP H10190476A JP 35121196 A JP35121196 A JP 35121196A JP 35121196 A JP35121196 A JP 35121196A JP H10190476 A JPH10190476 A JP H10190476A
- Authority
- JP
- Japan
- Prior art keywords
- data
- buffer
- compressed
- dictionary
- stored
- 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
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【課題】 比較的ランダムに近い2値画像を高い圧縮率
で圧縮でき、辞書のくいちがいを蓄積させないことによ
り、許容範囲をこえた誤差が発生しないデータ圧縮方法
及びその装置を提供する。 【解決手段】 辞書ベースでデータを圧縮するデータ圧
縮方法であって、圧縮するデータと既に圧縮された生デ
ータとの違いが所定の許容範囲内である場合に、一致と
見なして符号化を行う(S14)。更に、一致と判定さ
れた圧縮されたデータを既に圧縮された生データに置き
換える(S5)。
で圧縮でき、辞書のくいちがいを蓄積させないことによ
り、許容範囲をこえた誤差が発生しないデータ圧縮方法
及びその装置を提供する。 【解決手段】 辞書ベースでデータを圧縮するデータ圧
縮方法であって、圧縮するデータと既に圧縮された生デ
ータとの違いが所定の許容範囲内である場合に、一致と
見なして符号化を行う(S14)。更に、一致と判定さ
れた圧縮されたデータを既に圧縮された生データに置き
換える(S5)。
Description
【0001】
【発明の属する技術分野】本発明はデータ圧縮方法及び
その装置、特に辞書ベースのデータ圧縮方法及びその装
置に関するものである。辞書ベースの圧縮方法は、“Th
e Data Compression Book Featuring fast, efficient
data compression techniques in C”(Mark Nelson,M&
T Publishing,1992,邦題「データ圧縮ハンドブック,C
プログラマのための圧縮技法紹介」トッパン)の第7章
から第9章に示されるように、圧縮するデータに基づい
て辞書を作成し、圧縮するデータが辞書にあれば、辞書
のインデックスを符号化することにより圧縮を行う。復
元時は、圧縮時と同様に復元したデータに基づいて辞書
を作成し、その辞書を参照することにより復元を行う。
その装置、特に辞書ベースのデータ圧縮方法及びその装
置に関するものである。辞書ベースの圧縮方法は、“Th
e Data Compression Book Featuring fast, efficient
data compression techniques in C”(Mark Nelson,M&
T Publishing,1992,邦題「データ圧縮ハンドブック,C
プログラマのための圧縮技法紹介」トッパン)の第7章
から第9章に示されるように、圧縮するデータに基づい
て辞書を作成し、圧縮するデータが辞書にあれば、辞書
のインデックスを符号化することにより圧縮を行う。復
元時は、圧縮時と同様に復元したデータに基づいて辞書
を作成し、その辞書を参照することにより復元を行う。
【0002】
【発明が解決しようとする課題】しかしながら、上記従
来例では、例えば予め多値画像を誤差拡散法により2値
化した2値画像のように比較的ランダムに近いデータを
圧縮する場合、ほとんど圧縮できないという欠点があっ
た。この欠点を補うために、データの誤りを許容するい
わゆる損失のある圧縮を行うことが考えられるが、損失
のある圧縮を行った場合に、圧縮側と復元側とのデータ
が異なるため、辞書のくいちがいが蓄積してしまい、誤
差がより大きくなってしまうという問題がある。
来例では、例えば予め多値画像を誤差拡散法により2値
化した2値画像のように比較的ランダムに近いデータを
圧縮する場合、ほとんど圧縮できないという欠点があっ
た。この欠点を補うために、データの誤りを許容するい
わゆる損失のある圧縮を行うことが考えられるが、損失
のある圧縮を行った場合に、圧縮側と復元側とのデータ
が異なるため、辞書のくいちがいが蓄積してしまい、誤
差がより大きくなってしまうという問題がある。
【0003】本発明の目的は、比較的ランダムに近い2
値画像を高い圧縮率で圧縮できるデータ圧縮方法及びそ
の装置を提供することにある。本発明の別の目的は、辞
書のくいちがいを蓄積させないことにより、許容範囲を
こえた誤差が発生しないデータ圧縮方法及びその装置を
提供することにある。
値画像を高い圧縮率で圧縮できるデータ圧縮方法及びそ
の装置を提供することにある。本発明の別の目的は、辞
書のくいちがいを蓄積させないことにより、許容範囲を
こえた誤差が発生しないデータ圧縮方法及びその装置を
提供することにある。
【0004】
【課題を解決するための手段】上記目的を達成するため
に、本発明のデータ圧縮方法は、辞書ベースでデータを
圧縮するデータ圧縮方法であって、圧縮するデータと既
に圧縮された生データとの違いが所定の許容範囲内であ
る場合に、一致と見なして符号化を行うことを特徴とす
る。
に、本発明のデータ圧縮方法は、辞書ベースでデータを
圧縮するデータ圧縮方法であって、圧縮するデータと既
に圧縮された生データとの違いが所定の許容範囲内であ
る場合に、一致と見なして符号化を行うことを特徴とす
る。
【0005】更に、一致と判定された圧縮されたデータ
を既に圧縮された生データに置き換えることを特徴とす
る。ここで、前記置き換えは、前記違いがある場合に実
行される。又、本発明のデータ圧縮装置は、辞書ベース
でデータを圧縮するデータ圧縮装置であって、圧縮する
データと既に圧縮された生データとの違いの許容範囲を
記憶する記憶手段と、違いが前記許容範囲内である場合
に、一致と見なして符号化を行う符号化手段とを備える
ことを特徴とする。
を既に圧縮された生データに置き換えることを特徴とす
る。ここで、前記置き換えは、前記違いがある場合に実
行される。又、本発明のデータ圧縮装置は、辞書ベース
でデータを圧縮するデータ圧縮装置であって、圧縮する
データと既に圧縮された生データとの違いの許容範囲を
記憶する記憶手段と、違いが前記許容範囲内である場合
に、一致と見なして符号化を行う符号化手段とを備える
ことを特徴とする。
【0006】更に、一致と判定された圧縮されたデータ
を既に圧縮された生データに置き換える置換手段を備え
ることを特徴とする。ここで、前記置換手段は、前記違
いがある場合に置き換えを行う。又、本発明のデータ圧
縮装置は、圧縮するデータの全部または一部を格納する
バッファと、圧縮のために参照されるデータを格納する
辞書と、前記バッファに格納された圧縮するデータによ
り前記辞書を検索する辞書検索手段であって、所定の誤
差を許容する前記辞書検索手段と、前記バッファに格納
された圧縮するデータに相当するデータが、前記辞書に
格納されていないときには、前記バッファに格納された
圧縮するデータを符号化し、前記バッファに格納された
圧縮するデータに相当するデータが、前記辞書に格納さ
れているときには、少なくとも、前記辞書検索手段によ
り検索された、前記バッファに格納されたデータに相当
するデータが格納されている前記辞書のインデックスを
符号化する符号化手段と、前記バッファに格納された圧
縮するデータの全部または一部を前記辞書に登録する辞
書登録手段とを備えることを特徴とする。
を既に圧縮された生データに置き換える置換手段を備え
ることを特徴とする。ここで、前記置換手段は、前記違
いがある場合に置き換えを行う。又、本発明のデータ圧
縮装置は、圧縮するデータの全部または一部を格納する
バッファと、圧縮のために参照されるデータを格納する
辞書と、前記バッファに格納された圧縮するデータによ
り前記辞書を検索する辞書検索手段であって、所定の誤
差を許容する前記辞書検索手段と、前記バッファに格納
された圧縮するデータに相当するデータが、前記辞書に
格納されていないときには、前記バッファに格納された
圧縮するデータを符号化し、前記バッファに格納された
圧縮するデータに相当するデータが、前記辞書に格納さ
れているときには、少なくとも、前記辞書検索手段によ
り検索された、前記バッファに格納されたデータに相当
するデータが格納されている前記辞書のインデックスを
符号化する符号化手段と、前記バッファに格納された圧
縮するデータの全部または一部を前記辞書に登録する辞
書登録手段とを備えることを特徴とする。
【0007】ここで、前記辞書登録手段は、前記符号化
手段により符号化された前記辞書のインデックスに対応
する前記辞書に格納されたデータと前記バッファに格納
された圧縮するデータとの間に誤差があった場合に、前
記バッファに格納された圧縮するデータのかわりに、前
記符号化手段により符号化された前記辞書のインデック
スに対応する前記辞書に格納されたデータに基づいて前
記辞書に登録する。
手段により符号化された前記辞書のインデックスに対応
する前記辞書に格納されたデータと前記バッファに格納
された圧縮するデータとの間に誤差があった場合に、前
記バッファに格納された圧縮するデータのかわりに、前
記符号化手段により符号化された前記辞書のインデック
スに対応する前記辞書に格納されたデータに基づいて前
記辞書に登録する。
【0008】又、本発明のコンピュータ可読メモリは、
辞書ベースでデータを圧縮するコンピュータ可読のプロ
グラムを記憶するコンピュータ可読メモリであって、少
なくとも、圧縮するデータと既に圧縮された生データと
の違いが所定の許容範囲内であるか否かを判定する判定
モジュールと、所定の許容範囲内である場合に一致と見
なして、一致と判定された圧縮されたデータを既に圧縮
された生データに置き換えて符号化する符号化モジュー
ルとを含むことを特徴とする。
辞書ベースでデータを圧縮するコンピュータ可読のプロ
グラムを記憶するコンピュータ可読メモリであって、少
なくとも、圧縮するデータと既に圧縮された生データと
の違いが所定の許容範囲内であるか否かを判定する判定
モジュールと、所定の許容範囲内である場合に一致と見
なして、一致と判定された圧縮されたデータを既に圧縮
された生データに置き換えて符号化する符号化モジュー
ルとを含むことを特徴とする。
【0009】
【発明の実施の形態】次に、本発明の実施の形態につい
て図面を参照して詳細に説明する。 <LZSS圧縮法>まず、本発明の基礎となっている辞
書ベース圧縮方法の1つであるLZSS圧縮法の原理を
説明する。
て図面を参照して詳細に説明する。 <LZSS圧縮法>まず、本発明の基礎となっている辞
書ベース圧縮方法の1つであるLZSS圧縮法の原理を
説明する。
【0010】(原理の説明)図2はLZSS圧縮法の原
理を示す説明図であり、圧縮処理途中の状態例を示して
いる。図中、11は窓バッファであり、すでに圧縮符号
化された生データのうちの最後の15バイトを格納して
いる。12は先読みバッファであり、まだ圧縮符号化さ
れていない生データのうちの先頭の8バイトを格納して
いる。辞書は、窓バッファ11と先読みバッファ12と
により構成される。辞書には、窓バッファ11の位置1
から位置15まで15個のデータが登録されている。圧
縮符号化される各データの長さは、先読みバッファ12
の大きさである“8”である。先読みバッファ12内の
データは、辞書の先頭データとなることはないが、それ
以降のデータとなることがある。例えば、位置1のデー
タは“FABCDEFG”であり、後の7バイトは先読
みバッファ12の中にある。
理を示す説明図であり、圧縮処理途中の状態例を示して
いる。図中、11は窓バッファであり、すでに圧縮符号
化された生データのうちの最後の15バイトを格納して
いる。12は先読みバッファであり、まだ圧縮符号化さ
れていない生データのうちの先頭の8バイトを格納して
いる。辞書は、窓バッファ11と先読みバッファ12と
により構成される。辞書には、窓バッファ11の位置1
から位置15まで15個のデータが登録されている。圧
縮符号化される各データの長さは、先読みバッファ12
の大きさである“8”である。先読みバッファ12内の
データは、辞書の先頭データとなることはないが、それ
以降のデータとなることがある。例えば、位置1のデー
タは“FABCDEFG”であり、後の7バイトは先読
みバッファ12の中にある。
【0011】図3は、図2のデータをLZSS法で符号
化した場合の符号の例を示す図である。図中、13は識
別フィールドであり、符号が生データであるか、最長一
致したデータの窓バッファ11における位置および一致
長の組からなる符号化データであるかを識別する。本例
では、“1”の場合が符号化データ、“0”の場合は生
データとする。14は位置フィールドであり、最長一致
したデータの窓バッファ11における位置を示す。15
は長さフィールドであり、最長一致したデータの一致長
を示す。16は生データフィールドであり、生データを
示す。
化した場合の符号の例を示す図である。図中、13は識
別フィールドであり、符号が生データであるか、最長一
致したデータの窓バッファ11における位置および一致
長の組からなる符号化データであるかを識別する。本例
では、“1”の場合が符号化データ、“0”の場合は生
データとする。14は位置フィールドであり、最長一致
したデータの窓バッファ11における位置を示す。15
は長さフィールドであり、最長一致したデータの一致長
を示す。16は生データフィールドであり、生データを
示す。
【0012】(符号化の具体例の説明)符号化は次のよ
うに行われる。図2の(a)において、窓バッファ11
には“AAAAAAABCDFFFFF”が格納され、
先読みバッファ12には“ABCDEFGH”が格納さ
れている。まず、先読みバッファ12に格納されている
データと窓バッファ11に格納されているデータとの最
長の一致を検索し、見つかった場合は、最長一致したデ
ータの窓バッファ11における位置および一致長によっ
て符号化をする。図2の(a)においては、最長一致す
るデータは“ABCD”なので、窓バッファ11におけ
る位置は“9”、一致長は“4”となる。
うに行われる。図2の(a)において、窓バッファ11
には“AAAAAAABCDFFFFF”が格納され、
先読みバッファ12には“ABCDEFGH”が格納さ
れている。まず、先読みバッファ12に格納されている
データと窓バッファ11に格納されているデータとの最
長の一致を検索し、見つかった場合は、最長一致したデ
ータの窓バッファ11における位置および一致長によっ
て符号化をする。図2の(a)においては、最長一致す
るデータは“ABCD”なので、窓バッファ11におけ
る位置は“9”、一致長は“4”となる。
【0013】図2の(a)の場合には、図3の(a)に
示す如く、識別フィールド13には、符号が最長一致し
たデータの窓バッファ11における位置および一致長の
組であることを示す“1”がセットされる。また、位置
フィールド14には、最長一致したデータの窓バッファ
11における位置である“9”(2進表記では100
1)がセットされる。また、長さフィールド15には、
最長一致したデータの一致長“4”から“1”を引いた
値である“3”(2進表記では011)がセットされ
る。ここで、“1”を引くのは、一致長の範囲が“1”
から“8”であるのに対し、長さフィールドで表現でき
る値が“0”(2進表記で000)から“7”(2進表
記で111)までであり、この違いを調整するためであ
る。
示す如く、識別フィールド13には、符号が最長一致し
たデータの窓バッファ11における位置および一致長の
組であることを示す“1”がセットされる。また、位置
フィールド14には、最長一致したデータの窓バッファ
11における位置である“9”(2進表記では100
1)がセットされる。また、長さフィールド15には、
最長一致したデータの一致長“4”から“1”を引いた
値である“3”(2進表記では011)がセットされ
る。ここで、“1”を引くのは、一致長の範囲が“1”
から“8”であるのに対し、長さフィールドで表現でき
る値が“0”(2進表記で000)から“7”(2進表
記で111)までであり、この違いを調整するためであ
る。
【0014】次に、窓バッファ11および先読みバッフ
ァ12に格納されたデータを、符号化したバイト数、即
ち一致長だけ左へシフトする。先読みバッファ12から
あふれたデータ(図2の(a)においては、“ABC
D”)は、窓バッファ11に右側から格納される。さら
に、まだ先読みバッファ12に格納されていない生デー
タを先頭から符号化したバイト数だけ、先読みバッファ
12に右側から格納する(図2の(b))。
ァ12に格納されたデータを、符号化したバイト数、即
ち一致長だけ左へシフトする。先読みバッファ12から
あふれたデータ(図2の(a)においては、“ABC
D”)は、窓バッファ11に右側から格納される。さら
に、まだ先読みバッファ12に格納されていない生デー
タを先頭から符号化したバイト数だけ、先読みバッファ
12に右側から格納する(図2の(b))。
【0015】最長一致が見つからない場合は、生データ
をそのまま符号とする。図2の(b)において、先読み
バッファ12の先頭のデータ“E”は窓バッファ11の
中に存在しないので、最長一致が見つからない。この場
合は、先読みバッファ12の先頭のデータ“E”をその
まま符号とし、窓バッファ11および先読みバッファ1
2に格納されたデータを、符号化されたバイト数、即ち
1だけ左へシフトする。
をそのまま符号とする。図2の(b)において、先読み
バッファ12の先頭のデータ“E”は窓バッファ11の
中に存在しないので、最長一致が見つからない。この場
合は、先読みバッファ12の先頭のデータ“E”をその
まま符号とし、窓バッファ11および先読みバッファ1
2に格納されたデータを、符号化されたバイト数、即ち
1だけ左へシフトする。
【0016】図2の(b)の場合には、図3の(b)に
示す如く、識別フィールド13には、符号が生データで
あることを示す“0”が、生データフィールドには生デ
ータ“E”(2進表記で0100 0101)がセット
される。以上の方法によれば、最長一致が見つかった場
合には、生データよりも少ないビット数に符号化される
ため、データが圧縮される。上述の例では、“ABC
D”の4バイト(32ビット)が、1つの符号(8ビッ
ト)に圧縮される。
示す如く、識別フィールド13には、符号が生データで
あることを示す“0”が、生データフィールドには生デ
ータ“E”(2進表記で0100 0101)がセット
される。以上の方法によれば、最長一致が見つかった場
合には、生データよりも少ないビット数に符号化される
ため、データが圧縮される。上述の例では、“ABC
D”の4バイト(32ビット)が、1つの符号(8ビッ
ト)に圧縮される。
【0017】なお、シフトする際に、実際にはデータの
移動を行わず、窓バッファ11および先読みバッファ1
2の位置を移動する(アドレス制御する)方法が普通で
ある。 (復号の具体例の説明)次に復元方法について説明す
る。復元時には、圧縮時と同様に窓バッファ11を使用
するが、先読みバッファ12は使用しない。窓バッファ
11には、すでに復元された生データのうち最後の15
バイトを格納する。
移動を行わず、窓バッファ11および先読みバッファ1
2の位置を移動する(アドレス制御する)方法が普通で
ある。 (復号の具体例の説明)次に復元方法について説明す
る。復元時には、圧縮時と同様に窓バッファ11を使用
するが、先読みバッファ12は使用しない。窓バッファ
11には、すでに復元された生データのうち最後の15
バイトを格納する。
【0018】図2の(a)において、図3の(a)に示
す符号が入力されると、まず識別フィールド13を調べ
る。識別フィールド13には、符号が最長一致したデー
タの窓バッファ11における位置および一致長の組であ
ることを示す、“1”がセットされているので、位置フ
ィールド14から、最長一致したデータの窓バッファ1
1における位置を示す“9”を得、長さフィールド15
から“3”を取り出し、これに圧縮時に引いた値“1”
を加えて一致長として“4”を得る。ここで得た、最長
一致したデータの窓バッファ11における位置“9”と
一致長“4”とを用いて、窓バッファ11を参照し、復
元された生データとして“ABCD”を得る。次に、窓
バッファ11に格納されたデータを、復元したバイト
数、即ち一致長だけを左へシフトする。さらに復元した
データを窓バッファ11に右側から格納する(図2の
(b)のようになる)。
す符号が入力されると、まず識別フィールド13を調べ
る。識別フィールド13には、符号が最長一致したデー
タの窓バッファ11における位置および一致長の組であ
ることを示す、“1”がセットされているので、位置フ
ィールド14から、最長一致したデータの窓バッファ1
1における位置を示す“9”を得、長さフィールド15
から“3”を取り出し、これに圧縮時に引いた値“1”
を加えて一致長として“4”を得る。ここで得た、最長
一致したデータの窓バッファ11における位置“9”と
一致長“4”とを用いて、窓バッファ11を参照し、復
元された生データとして“ABCD”を得る。次に、窓
バッファ11に格納されたデータを、復元したバイト
数、即ち一致長だけを左へシフトする。さらに復元した
データを窓バッファ11に右側から格納する(図2の
(b)のようになる)。
【0019】図2の(b)において、図3の(b)に示
す符号が入力されると、まず識別フィールド13を調べ
る。識別フィールド13には、符号が生データであるこ
とを示す“0”がセットされているので、生データフィ
ールドから生データ“E”(2進表記で0100010
1)を取り出す。次に、窓バッファ11に格納されたデ
ータを、復元したバイト数即ち“1”だけ左へシフトす
る。さらに復元したデータを窓バッファ11に右側から
格納する。
す符号が入力されると、まず識別フィールド13を調べ
る。識別フィールド13には、符号が生データであるこ
とを示す“0”がセットされているので、生データフィ
ールドから生データ“E”(2進表記で0100010
1)を取り出す。次に、窓バッファ11に格納されたデ
ータを、復元したバイト数即ち“1”だけ左へシフトす
る。さらに復元したデータを窓バッファ11に右側から
格納する。
【0020】<データ圧縮装置の機能構成例>図1は、
本実施の形態に係るデータ圧縮装置の機能構成を示すブ
ロック図である。図中、1は入力ファイルであり、圧縮
するデータが格納されている。2はデータバッファであ
り、圧縮するデータを格納する。12は先読みバッファ
であり、まだ圧縮されていないデータのうちの先頭のデ
ータを格納する。11は窓バッファであり、すでに圧縮
されたデータのうちの最後のデータを生データの形式で
格納する。窓バッファ11は、先読みバッファ12とと
もに辞書を構成する。
本実施の形態に係るデータ圧縮装置の機能構成を示すブ
ロック図である。図中、1は入力ファイルであり、圧縮
するデータが格納されている。2はデータバッファであ
り、圧縮するデータを格納する。12は先読みバッファ
であり、まだ圧縮されていないデータのうちの先頭のデ
ータを格納する。11は窓バッファであり、すでに圧縮
されたデータのうちの最後のデータを生データの形式で
格納する。窓バッファ11は、先読みバッファ12とと
もに辞書を構成する。
【0021】5は検索部であり、先読みバッファ12に
格納されているデータと最長一致する窓バッファ11の
位置を検索する。検索部5は、1バイトのデータの中に
1ビットの違いがあった場合にも、一致したものと判定
する。このようにすることにより、比較的ランダムに近
いデータを圧縮することができる。尚、違いの許容範囲
は、圧縮されるデータに対応して変更可能である。検索
部5は、最長一致した窓バッファ11の位置と一致長と
を出力する。
格納されているデータと最長一致する窓バッファ11の
位置を検索する。検索部5は、1バイトのデータの中に
1ビットの違いがあった場合にも、一致したものと判定
する。このようにすることにより、比較的ランダムに近
いデータを圧縮することができる。尚、違いの許容範囲
は、圧縮されるデータに対応して変更可能である。検索
部5は、最長一致した窓バッファ11の位置と一致長と
を出力する。
【0022】6は符号化部であり、検索部5により最長
一致が検索されたときは、圧縮符号として、検索部5が
出力した窓バッファ11の位置と一致長とを符号化デー
タとして出力する。尚、本実施の形態では、位置と一致
長とをそのまま符号化データとするが、位置と一致長と
が更に符号化されてもよい。符号化部6はまた、検索部
5により最長一致が検索されなかったときは、生データ
符号として、先読みバッファ12の先頭データを出力す
る。この生データも更に符号化されてもよい。
一致が検索されたときは、圧縮符号として、検索部5が
出力した窓バッファ11の位置と一致長とを符号化デー
タとして出力する。尚、本実施の形態では、位置と一致
長とをそのまま符号化データとするが、位置と一致長と
が更に符号化されてもよい。符号化部6はまた、検索部
5により最長一致が検索されなかったときは、生データ
符号として、先読みバッファ12の先頭データを出力す
る。この生データも更に符号化されてもよい。
【0023】7は出力ファイルであり、符号化部6が出
力した符号を格納する。8は登録部であり、先読みバッ
ファ12および窓バッファ11のメモリ上の位置を変更
することにより、先読みバッファ12に格納されている
データを窓バッファ11に登録する。登録部8はまた、
符号化部6により圧縮符号が符号化されたときに、参照
された窓バッファ11のデータを先読みバッファ12に
コピーすることにより、辞書に格納されたデータに基づ
いて辞書登録を行う。このコピー処理により、検索部5
での一致の許容範囲の設定による誤りの蓄積を無くす。
力した符号を格納する。8は登録部であり、先読みバッ
ファ12および窓バッファ11のメモリ上の位置を変更
することにより、先読みバッファ12に格納されている
データを窓バッファ11に登録する。登録部8はまた、
符号化部6により圧縮符号が符号化されたときに、参照
された窓バッファ11のデータを先読みバッファ12に
コピーすることにより、辞書に格納されたデータに基づ
いて辞書登録を行う。このコピー処理により、検索部5
での一致の許容範囲の設定による誤りの蓄積を無くす。
【0024】図4は、本実施の形態のデータ圧縮装置の
具体的構成を示すブロック図である。図中、21はCP
Uであり、ROM24に記憶されたプログラムに従い、
データ圧縮装置の制御を行う。22は磁気ディスクであ
り、入力ファイル1や出力ファイル7を含む。23はR
AMであり、データバッファ2と先読みバッファ12と
窓バッファ11とを含む。24はROMであり、検索部
5,符号化部6及び登録部8をCPU21により制御す
るプログラムを記憶する。尚、CPU21の実行する制
御プログラムは、図示しないフロッピーディスク,C
D,DVD等からRAM23にロードされて実行されて
も、外部のホストコンピュータ等からダウンロードされ
てもよい。
具体的構成を示すブロック図である。図中、21はCP
Uであり、ROM24に記憶されたプログラムに従い、
データ圧縮装置の制御を行う。22は磁気ディスクであ
り、入力ファイル1や出力ファイル7を含む。23はR
AMであり、データバッファ2と先読みバッファ12と
窓バッファ11とを含む。24はROMであり、検索部
5,符号化部6及び登録部8をCPU21により制御す
るプログラムを記憶する。尚、CPU21の実行する制
御プログラムは、図示しないフロッピーディスク,C
D,DVD等からRAM23にロードされて実行されて
も、外部のホストコンピュータ等からダウンロードされ
てもよい。
【0025】図5は、本実施の形態のデータバッファ
2,窓バッファ11及び先読みバッファ12の構成を示
す説明図である。窓バッファ11はデータバッファ2の
中に形成され、窓サイズレジスタWSにより大きさが決
められる。窓バッファ11の位置は、カレントポインタ
レジスタCPと窓サイズレジスタWSとにより決められ
る。即ち、窓バッファ11の先頭位置のインデックスは
(CP−WS)であり、最終位置のインデックスは(C
P−1)で示される。
2,窓バッファ11及び先読みバッファ12の構成を示
す説明図である。窓バッファ11はデータバッファ2の
中に形成され、窓サイズレジスタWSにより大きさが決
められる。窓バッファ11の位置は、カレントポインタ
レジスタCPと窓サイズレジスタWSとにより決められ
る。即ち、窓バッファ11の先頭位置のインデックスは
(CP−WS)であり、最終位置のインデックスは(C
P−1)で示される。
【0026】先読みバッファ12もデータバッファ2の
中に形成され、先読みバッファサイズレジスタLSによ
り大きさが決められる。先読みバッファ12の位置は、
カレントポインタレジスタCPにより決められる。即
ち、先読みバッファ12の先頭位置のインデックスはC
Pであり、最終位置のインデックスは(CP+LS−
1)で示される。
中に形成され、先読みバッファサイズレジスタLSによ
り大きさが決められる。先読みバッファ12の位置は、
カレントポインタレジスタCPにより決められる。即
ち、先読みバッファ12の先頭位置のインデックスはC
Pであり、最終位置のインデックスは(CP+LS−
1)で示される。
【0027】カレントポインタCP,窓サイズWS及び
先読みバッファサイズLSは、圧縮処理の過程で変化す
るため、窓バッファ11及び先読みバッファ12の位置
および大きさもまた圧縮処理の過程で変化する。 <データ圧縮方法の手順例>次に、フローチャートを参
照し、ROM24に格納されているプログラムを詳細に
説明する。なお、本実施の形態では、圧縮符号の位置フ
ィールド14は12ビット、長さフィールドは4ビット
で構成されており、窓バッファ11の大きさは1023
バイト、先読みバッファ12の大きさは17バイト、符
号化できる一致長の範囲は“2”から“17”までの1
6通りで、位置長が“1”の場合は生データ符号として
符号化される。また、圧縮符号の位置フィールド14が
“0”の場合は、データの終了を示す終了符号とする。
先読みバッファサイズLSは、圧縮処理の過程で変化す
るため、窓バッファ11及び先読みバッファ12の位置
および大きさもまた圧縮処理の過程で変化する。 <データ圧縮方法の手順例>次に、フローチャートを参
照し、ROM24に格納されているプログラムを詳細に
説明する。なお、本実施の形態では、圧縮符号の位置フ
ィールド14は12ビット、長さフィールドは4ビット
で構成されており、窓バッファ11の大きさは1023
バイト、先読みバッファ12の大きさは17バイト、符
号化できる一致長の範囲は“2”から“17”までの1
6通りで、位置長が“1”の場合は生データ符号として
符号化される。また、圧縮符号の位置フィールド14が
“0”の場合は、データの終了を示す終了符号とする。
【0028】また、以下の説明で、データバッファBU
F、カレントポインタCP、バッファサイズBS、窓サ
イズWS、先読みバッファサイズLS、一致長レジスタ
LEN、一致位置レジスタIND、長さレジスタL、位
置レジスタL、データレジスタDの各レジスタが、RA
M23上に構成されている。また、データバッファBU
Fは配列であり、先頭のインデックスは“0”である。
また、インデックスをINDEXとすると、格納されて
いるデータはBUF[INDEX]と表現される。
F、カレントポインタCP、バッファサイズBS、窓サ
イズWS、先読みバッファサイズLS、一致長レジスタ
LEN、一致位置レジスタIND、長さレジスタL、位
置レジスタL、データレジスタDの各レジスタが、RA
M23上に構成されている。また、データバッファBU
Fは配列であり、先頭のインデックスは“0”である。
また、インデックスをINDEXとすると、格納されて
いるデータはBUF[INDEX]と表現される。
【0029】(圧縮処理例)図6はROM24に格納さ
れた圧縮プログラムのフローチャートである。圧縮処理
が起動されると、ステップS1にて初期化処理を行う。
具体的には入力ファイルおよび出力ファイルをオープン
し、入力データを全てデータバッファBUFに読み込
み、データサイズをバッファサイズBSにセットする。
また、先読みバッファサイズLSに、一致長の上限であ
る“17”をセットする。カレントポインタCP、窓サ
イズWS、一致長レジスタLENは全て“0”にセット
される。
れた圧縮プログラムのフローチャートである。圧縮処理
が起動されると、ステップS1にて初期化処理を行う。
具体的には入力ファイルおよび出力ファイルをオープン
し、入力データを全てデータバッファBUFに読み込
み、データサイズをバッファサイズBSにセットする。
また、先読みバッファサイズLSに、一致長の上限であ
る“17”をセットする。カレントポインタCP、窓サ
イズWS、一致長レジスタLENは全て“0”にセット
される。
【0030】次に、ステップS2にてバッファサイズB
Sを“0”と比較する。バッファサイズBSが“0”の
場合はデータが全くないので、ステップS15の終了符
号出力処理に進む。バッファサイズBSが“0”でない
場合はステップS3に進み、一致長レジスタLENを一
致長の下限である“2”と比較する。一致長レジスタL
ENが“2”より小さいのは生データ符号を出力する場
合なので、ステップS6に進む。最初のときは、ステッ
プS1の初期化処理にて一致長レジスタLENに“0”
がセットされているので、必ずステップS6に進む。
Sを“0”と比較する。バッファサイズBSが“0”の
場合はデータが全くないので、ステップS15の終了符
号出力処理に進む。バッファサイズBSが“0”でない
場合はステップS3に進み、一致長レジスタLENを一
致長の下限である“2”と比較する。一致長レジスタL
ENが“2”より小さいのは生データ符号を出力する場
合なので、ステップS6に進む。最初のときは、ステッ
プS1の初期化処理にて一致長レジスタLENに“0”
がセットされているので、必ずステップS6に進む。
【0031】ステップS6では、一致長レジスタLEN
に符号化される生データサイズである“1”をセットす
る。次にステップS7にて生データ符号を出力する。具
体的には、識別フラグ13として1ビットの“0”を出
力する。次に、生データフィールド15として、先読み
バッファ12の先頭データであるBUF[CP]を出力
する。なお、出力は、バイト単位で出力ファイルに書き
込まれるので、1バイト(8ビット)に満たないデータ
は、一時的にRAM23上の領域に格納しておく。
に符号化される生データサイズである“1”をセットす
る。次にステップS7にて生データ符号を出力する。具
体的には、識別フラグ13として1ビットの“0”を出
力する。次に、生データフィールド15として、先読み
バッファ12の先頭データであるBUF[CP]を出力
する。なお、出力は、バイト単位で出力ファイルに書き
込まれるので、1バイト(8ビット)に満たないデータ
は、一時的にRAM23上の領域に格納しておく。
【0032】次にステップS8にて、カレントポインタ
CPに一致長レジスタLENを加える。次にステップS
9にて、カレントポインタCPと先読みバッファLSの
和、即ち先読みバッファ12の最後が、バッファサイズ
BS、即ちデータバッファBUFの最後を超えているか
どうか判定する。(CP+LS)>BSであれば、先読
みバッファ12の最後がデータバッファBUFの最後を
超えているので、ステップS10に進み、バッファサイ
ズBSとカレントポインタCPの差、即ち未処理のデー
タサイズを先読みバッファサイズLSにセットする。次
にステップS11にて、先読みバッファサイズLSと
“0”を比較する。先読みバッファサイズLSが“0”
であれば、全てのデータの処理が終了しているので、ス
テップS15に進む。先読みバッファサイズLSが
“0”でなければ、ステップS12に進む。また、ステ
ップS9にて、(CP+LS)≦BS、即ち先読みバッ
ファ12の最後がデータバッファBUFの最後を超えて
いない場合は、直接ステップS12に進む。
CPに一致長レジスタLENを加える。次にステップS
9にて、カレントポインタCPと先読みバッファLSの
和、即ち先読みバッファ12の最後が、バッファサイズ
BS、即ちデータバッファBUFの最後を超えているか
どうか判定する。(CP+LS)>BSであれば、先読
みバッファ12の最後がデータバッファBUFの最後を
超えているので、ステップS10に進み、バッファサイ
ズBSとカレントポインタCPの差、即ち未処理のデー
タサイズを先読みバッファサイズLSにセットする。次
にステップS11にて、先読みバッファサイズLSと
“0”を比較する。先読みバッファサイズLSが“0”
であれば、全てのデータの処理が終了しているので、ス
テップS15に進む。先読みバッファサイズLSが
“0”でなければ、ステップS12に進む。また、ステ
ップS9にて、(CP+LS)≦BS、即ち先読みバッ
ファ12の最後がデータバッファBUFの最後を超えて
いない場合は、直接ステップS12に進む。
【0033】ステップS12では、カレントポインタC
Pと窓バッファ11のサイズの上限である“1023”
とを比較する。カレントポインタCPが“1023”よ
り大きくない場合は、窓サイズWSにカレントポインタ
CPをセットし、ステップS14に進む。カレントポイ
ンタCPが“1023”より大きい場合は、直接ステッ
プS14に進む。
Pと窓バッファ11のサイズの上限である“1023”
とを比較する。カレントポインタCPが“1023”よ
り大きくない場合は、窓サイズWSにカレントポインタ
CPをセットし、ステップS14に進む。カレントポイ
ンタCPが“1023”より大きい場合は、直接ステッ
プS14に進む。
【0034】次にステップS14にて窓バッファ11を
検索し、先読みバッファ12のデータと最長一致するデ
ータの位置を一致位置レジスタINDに、一致長を一致
長レジスタLENにセットし、ステップS3に戻る。ス
テップS3にて、一致長レジスタLENが“2”より小
さくない場合は、圧縮符号を出力する場合なので、ステ
ップS4に進み圧縮符号を出力する。具体的には、識別
フラグ13として1ビットの“1”を出力する。次に、
位置フィールド14として、一致位置レジスタINDの
下位12ビットを出力する。次に、長さフィールド15
として、一致長レジスタLENから一致長の下限値であ
る“2”を引いた値の下位4ビットを出力する。
検索し、先読みバッファ12のデータと最長一致するデ
ータの位置を一致位置レジスタINDに、一致長を一致
長レジスタLENにセットし、ステップS3に戻る。ス
テップS3にて、一致長レジスタLENが“2”より小
さくない場合は、圧縮符号を出力する場合なので、ステ
ップS4に進み圧縮符号を出力する。具体的には、識別
フラグ13として1ビットの“1”を出力する。次に、
位置フィールド14として、一致位置レジスタINDの
下位12ビットを出力する。次に、長さフィールド15
として、一致長レジスタLENから一致長の下限値であ
る“2”を引いた値の下位4ビットを出力する。
【0035】次にステップS5に進み、窓バッファ11
の最長一致したデータを、先読みバッファにコピーす
る。具体的には、BUF[CP−IND]からLENバ
イトのデータをBUF[CP]からLENバイトの領域
にコピーする。コピー先の領域とコピー元の領域とが重
なる場合があるが、この場合でも先頭のデータからコピ
ーする。
の最長一致したデータを、先読みバッファにコピーす
る。具体的には、BUF[CP−IND]からLENバ
イトのデータをBUF[CP]からLENバイトの領域
にコピーする。コピー先の領域とコピー元の領域とが重
なる場合があるが、この場合でも先頭のデータからコピ
ーする。
【0036】全てのデータの処理が終了すると、ステッ
プS2またはステップS11からステップS15に進
む、終了符号を出力する。具体的には、1ビットの
“1”を出力し、次に16ビットの“0”を出力する。
次にステップS16に進み、終了処理を行う。具体的に
は、まず、1バイトに満たないために出力ファイルに書
き込まれていないデータがあれば、1バイトに達するま
で“0”を出力することにより、残っているデータを出
力ファイルに書き込む。次に入力ファイルおよび出力フ
ァイルをクローズし、圧縮処理を終了する。
プS2またはステップS11からステップS15に進
む、終了符号を出力する。具体的には、1ビットの
“1”を出力し、次に16ビットの“0”を出力する。
次にステップS16に進み、終了処理を行う。具体的に
は、まず、1バイトに満たないために出力ファイルに書
き込まれていないデータがあれば、1バイトに達するま
で“0”を出力することにより、残っているデータを出
力ファイルに書き込む。次に入力ファイルおよび出力フ
ァイルをクローズし、圧縮処理を終了する。
【0037】(最長一致検索処理例)図7は、図6のス
テップS14の最長一致検索処理の詳細を記述したフロ
ーチャートである。まず、ステップS21にて、一致長
レジスタLENに“0”をセットする。次に、位置レジ
スタIに、窓バッファ11の最後の領域に相当する位置
であるカレントポインタCPから“1”を引いた値をセ
ットする。次にステップS23にて、長さレジスタLに
“0”をセットする。
テップS14の最長一致検索処理の詳細を記述したフロ
ーチャートである。まず、ステップS21にて、一致長
レジスタLENに“0”をセットする。次に、位置レジ
スタIに、窓バッファ11の最後の領域に相当する位置
であるカレントポインタCPから“1”を引いた値をセ
ットする。次にステップS23にて、長さレジスタLに
“0”をセットする。
【0038】次にステップS24にて、BUF[I+
L]、即ち窓バッファ11の現在注目しているL番目の
データと、BUF[CP+L]、即ち先読みバッファ1
2のL番目のデータとの排他的論理和を、データレジス
タDに格納する。次に、ステップS25にて、データレ
ジスタDの中の“1”の数と“1”とを比較する。デー
タレジスタDの中の“1”の数は、BUF[I+L]と
BUF[CP+L]との違いがあるビット数を示し、予
め計算された表を引くことにより高速に求めることがで
きる。
L]、即ち窓バッファ11の現在注目しているL番目の
データと、BUF[CP+L]、即ち先読みバッファ1
2のL番目のデータとの排他的論理和を、データレジス
タDに格納する。次に、ステップS25にて、データレ
ジスタDの中の“1”の数と“1”とを比較する。デー
タレジスタDの中の“1”の数は、BUF[I+L]と
BUF[CP+L]との違いがあるビット数を示し、予
め計算された表を引くことにより高速に求めることがで
きる。
【0039】データレジスタDの中の“1”の数が
“1”より大きい場合は、2ビット以上の相違があるの
で、ステップS28に進む。データレジスタDの中の
“1”の数が“1”より大きくない場合は、1ビット以
下の相違しかないので、ステップS26に進み、長さレ
ジスタLに“1”を加算する。次にステップS27に進
み、位置レジスタLと先読みバッファサイズLSとを比
較する。L<LSの場合は、先読みバッファ12の終わ
りに達していないので、ステップS24に戻る。L=L
Sの場合は、先読みバッファ12の終わりに達している
ので、ステップS28に進む。
“1”より大きい場合は、2ビット以上の相違があるの
で、ステップS28に進む。データレジスタDの中の
“1”の数が“1”より大きくない場合は、1ビット以
下の相違しかないので、ステップS26に進み、長さレ
ジスタLに“1”を加算する。次にステップS27に進
み、位置レジスタLと先読みバッファサイズLSとを比
較する。L<LSの場合は、先読みバッファ12の終わ
りに達していないので、ステップS24に戻る。L=L
Sの場合は、先読みバッファ12の終わりに達している
ので、ステップS28に進む。
【0040】ステップS28では、長さレジスタLと一
致長レジスタLENとを比較する。L≦LENの場合
は、長い一致が見つかっているので、ステップS31に
進む。L>LENの場合は、より長い一致が見つかった
ので、ステップS29に進み、一致長レジスタLENに
長さレジスタLをセットし、一致位置レジスタINDに
位置レジスタIをセットし、ステップS30に進む。ス
テップS30では、一致長レジスタLENと一致長の最
大値である“17”を比較する。LEN=17であれ
ば、最長一致が得られているので処理を終了する。LE
N<17であれば、ステップS31に進む。ステップS
31では、位置レジスタIから“1”を減算し、次にス
テップS32にてカレントポインタCPと位置レジスタ
Iの差と、窓サイズWSとを比較する。(CP−I)≦
WSの場合は、窓バッファ11の先頭を超えているの
で、ステップS23に戻る。(CP−I)>WSの場合
は、窓バッファ11の先頭を超えたので処理を終了す
る。
致長レジスタLENとを比較する。L≦LENの場合
は、長い一致が見つかっているので、ステップS31に
進む。L>LENの場合は、より長い一致が見つかった
ので、ステップS29に進み、一致長レジスタLENに
長さレジスタLをセットし、一致位置レジスタINDに
位置レジスタIをセットし、ステップS30に進む。ス
テップS30では、一致長レジスタLENと一致長の最
大値である“17”を比較する。LEN=17であれ
ば、最長一致が得られているので処理を終了する。LE
N<17であれば、ステップS31に進む。ステップS
31では、位置レジスタIから“1”を減算し、次にス
テップS32にてカレントポインタCPと位置レジスタ
Iの差と、窓サイズWSとを比較する。(CP−I)≦
WSの場合は、窓バッファ11の先頭を超えているの
で、ステップS23に戻る。(CP−I)>WSの場合
は、窓バッファ11の先頭を超えたので処理を終了す
る。
【0041】<圧縮/伸長結果例>図8は本実施の形態
の動作例を示す説明図である。図8の(a)は入力ファ
イル1に格納されているデータである。なお、本実施の
形態の目的は2値画像を圧縮することにあるが、説明の
都合上、同じコードをもつ文字データを用いて説明す
る。
の動作例を示す説明図である。図8の(a)は入力ファ
イル1に格納されているデータである。なお、本実施の
形態の目的は2値画像を圧縮することにあるが、説明の
都合上、同じコードをもつ文字データを用いて説明す
る。
【0042】まず、“ABD”の3バイトは互いに2ビ
ット以上異なっているので、生データ符号として出力さ
れる。次に、“abd”の3バイトは、窓バッファ11
にある“ABD”の3バイトと、各バイトが1ビットず
つしか異なっていないので、“ABD”を参照する圧縮
符号が出力される。ここで、図7のステップS5のコピ
ー処理を行わないと、窓バッファ11及び先読みバッフ
ァ12の状態は図8の(b)のようになっている。次の
“ijl”の3バイトは、“abd”の3バイトと各バ
イトが1ビットずつしか異なっていないので、“ab
d”を参照する圧縮符号が出力される。
ット以上異なっているので、生データ符号として出力さ
れる。次に、“abd”の3バイトは、窓バッファ11
にある“ABD”の3バイトと、各バイトが1ビットず
つしか異なっていないので、“ABD”を参照する圧縮
符号が出力される。ここで、図7のステップS5のコピ
ー処理を行わないと、窓バッファ11及び先読みバッフ
ァ12の状態は図8の(b)のようになっている。次の
“ijl”の3バイトは、“abd”の3バイトと各バ
イトが1ビットずつしか異なっていないので、“ab
d”を参照する圧縮符号が出力される。
【0043】ところが、復元側では、“abd”に対応
する符号は“ABD”を参照しているので、“ABD”
として復元されている。このため、“ijl”に対応す
る符号もまた、“ABD”として復元され、結果として
図8の(e)のデータが復元データとなる。元データ
“ABDabdijl”と、復元データ“ABDABD
ABD”を比較すると、最後の3バイトは許容されない
はずの2ビットの異なりを持ってしまう。
する符号は“ABD”を参照しているので、“ABD”
として復元されている。このため、“ijl”に対応す
る符号もまた、“ABD”として復元され、結果として
図8の(e)のデータが復元データとなる。元データ
“ABDabdijl”と、復元データ“ABDABD
ABD”を比較すると、最後の3バイトは許容されない
はずの2ビットの異なりを持ってしまう。
【0044】図7のステップS5のコピー処理を行った
場合には、窓バッファ11にあった“ABD”が“ab
d”の上にコピーされ、図8の(c)の状態になる。こ
の場合、“ABD”と“ijl”とは各バイトが2ビッ
トの異なるがあるので、一致と見なされず、結果的に生
データ符号が出力される。この結果、図8の(d)に示
すように、“ABDABDijl”のデータが復元され
る。この復元されたデータは元データの“ABDabd
ijl”と、各バイトが1ビット以下の異なりを保存し
ている。
場合には、窓バッファ11にあった“ABD”が“ab
d”の上にコピーされ、図8の(c)の状態になる。こ
の場合、“ABD”と“ijl”とは各バイトが2ビッ
トの異なるがあるので、一致と見なされず、結果的に生
データ符号が出力される。この結果、図8の(d)に示
すように、“ABDABDijl”のデータが復元され
る。この復元されたデータは元データの“ABDabd
ijl”と、各バイトが1ビット以下の異なりを保存し
ている。
【0045】一方、図8の(a)のデータ“ABDab
dijl”は、全てのデータが異なっているので、一致
の許容範囲を認めない従来の辞書ベース圧縮法では全く
圧縮できないが、本実施の形態では、“abd”が圧縮
符号として出力されるため、圧縮が可能となる。なお、
本実施の形態では、圧縮符号化された場合に全てコピー
を行うようにしたが、違いがなく一致している場合はコ
ピーしないような手順としてもよい。
dijl”は、全てのデータが異なっているので、一致
の許容範囲を認めない従来の辞書ベース圧縮法では全く
圧縮できないが、本実施の形態では、“abd”が圧縮
符号として出力されるため、圧縮が可能となる。なお、
本実施の形態では、圧縮符号化された場合に全てコピー
を行うようにしたが、違いがなく一致している場合はコ
ピーしないような手順としてもよい。
【0046】また、上述の実施の形態では、圧縮方式と
してLZSS圧縮方を使用したが、これに代えて他の辞
書ベース圧縮方式、例えばLZ77,LZ78,LZW
等を使用することができる。また、入力データを一度全
て読み込んでバッファに格納していたが、これに代え
て、固定サイズのバッファを用いて、そのバッファをリ
ングメモリとして使用し、データが必要になる度に必要
なだけよんでくるようにしてもよい。
してLZSS圧縮方を使用したが、これに代えて他の辞
書ベース圧縮方式、例えばLZ77,LZ78,LZW
等を使用することができる。また、入力データを一度全
て読み込んでバッファに格納していたが、これに代え
て、固定サイズのバッファを用いて、そのバッファをリ
ングメモリとして使用し、データが必要になる度に必要
なだけよんでくるようにしてもよい。
【0047】また、入力ファイルと出力ファイルとを使
用していたが、これに代えて任意のデバイス、例えばシ
リアルインタフェースまたはパラレルインタフェースに
接続されたプリンタ、モデム等のデバイスとしてもよ
い。あるいは、デバイスを全く使用せず、単にメモリ上
に格納するようにしてもよい。例えば、パラレルインタ
フェースを経て入力されたデータを圧縮してメモリに格
納しておき、必要になったときに復元して使用するよう
にしてもよい。
用していたが、これに代えて任意のデバイス、例えばシ
リアルインタフェースまたはパラレルインタフェースに
接続されたプリンタ、モデム等のデバイスとしてもよ
い。あるいは、デバイスを全く使用せず、単にメモリ上
に格納するようにしてもよい。例えば、パラレルインタ
フェースを経て入力されたデータを圧縮してメモリに格
納しておき、必要になったときに復元して使用するよう
にしてもよい。
【0048】なお、本発明は、複数の機器(例えばホス
トコンピュータ,インタフェイス機器,リーダ,プリン
タなど)から構成されるシステムに適用しても、一つの
機器からなる装置(例えば、複写機,ファクシミリ装置
など)に適用してもよい。また、本発明の目的は、前述
した実施形態の機能を実現するソフトウェアのプログラ
ムコードを記録した記憶媒体を、システムあるいは装置
に供給し、そのシステムあるいは装置のコンピュータ
(またはCPUやMPU)が記憶媒体に格納されたプロ
グラムコードを読出し実行することによっても、達成さ
れることは言うまでもない。
トコンピュータ,インタフェイス機器,リーダ,プリン
タなど)から構成されるシステムに適用しても、一つの
機器からなる装置(例えば、複写機,ファクシミリ装置
など)に適用してもよい。また、本発明の目的は、前述
した実施形態の機能を実現するソフトウェアのプログラ
ムコードを記録した記憶媒体を、システムあるいは装置
に供給し、そのシステムあるいは装置のコンピュータ
(またはCPUやMPU)が記憶媒体に格納されたプロ
グラムコードを読出し実行することによっても、達成さ
れることは言うまでもない。
【0049】この場合、記憶媒体から読出されたプログ
ラムコード自体が前述した実施形態の機能を実現するこ
とになり、そのプログラムコードを記憶した記憶媒体は
本発明を構成することになる。プログラムコードを供給
するための記憶媒体としては、例えば、フロッピディス
ク,ハードディスク,光ディスク,光磁気ディスク,C
D−ROM,CD−R,磁気テープ,不揮発性のメモリ
カード,ROMなどを用いることができる。
ラムコード自体が前述した実施形態の機能を実現するこ
とになり、そのプログラムコードを記憶した記憶媒体は
本発明を構成することになる。プログラムコードを供給
するための記憶媒体としては、例えば、フロッピディス
ク,ハードディスク,光ディスク,光磁気ディスク,C
D−ROM,CD−R,磁気テープ,不揮発性のメモリ
カード,ROMなどを用いることができる。
【0050】また、コンピュータが読出したプログラム
コードを実行することにより、前述した実施形態の機能
が実現されるだけでなく、そのプログラムコードの指示
に基づき、コンピュータ上で稼働しているOS(オペレ
ーティングシステム)などが実際の処理の一部または全
部を行い、その処理によって前述した実施形態の機能が
実現される場合も含まれることは言うまでもない。
コードを実行することにより、前述した実施形態の機能
が実現されるだけでなく、そのプログラムコードの指示
に基づき、コンピュータ上で稼働しているOS(オペレ
ーティングシステム)などが実際の処理の一部または全
部を行い、その処理によって前述した実施形態の機能が
実現される場合も含まれることは言うまでもない。
【0051】さらに、記憶媒体から読出されたプログラ
ムコードが、コンピュータに挿入された機能拡張ボード
やコンピュータに接続された機能拡張ユニットに備わる
メモリに書込まれた後、そのプログラムコードの指示に
基づき、その機能拡張ボードや機能拡張ユニットに備わ
るCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれることは言うまでもない。
ムコードが、コンピュータに挿入された機能拡張ボード
やコンピュータに接続された機能拡張ユニットに備わる
メモリに書込まれた後、そのプログラムコードの指示に
基づき、その機能拡張ボードや機能拡張ユニットに備わ
るCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれることは言うまでもない。
【0052】本発明を上記記憶媒体に適用する場合、そ
の記憶媒体には、先に説明したフローチャートに対応す
るプログラムコードを格納することになり、例えば、少
なくとも圧縮するデータと既に圧縮された生データとの
違いが所定の許容範囲内であるか否かを判定する判定モ
ジュール、及び所定の許容範囲内である場合に一致と見
なして、一致と判定された圧縮されたデータを既に圧縮
された生データに置き換えて、符号化する符号化モジュ
ールの各モジュールのプログラムコードを記憶媒体に格
納すればよい。
の記憶媒体には、先に説明したフローチャートに対応す
るプログラムコードを格納することになり、例えば、少
なくとも圧縮するデータと既に圧縮された生データとの
違いが所定の許容範囲内であるか否かを判定する判定モ
ジュール、及び所定の許容範囲内である場合に一致と見
なして、一致と判定された圧縮されたデータを既に圧縮
された生データに置き換えて、符号化する符号化モジュ
ールの各モジュールのプログラムコードを記憶媒体に格
納すればよい。
【0053】
【発明の効果】以上説明したように、本発明によれば、
比較的ランダムに近い2値画像を高い圧縮率で圧縮する
ことができる。また、許容範囲を超えた誤差が発生しな
いように圧縮することができる。
比較的ランダムに近い2値画像を高い圧縮率で圧縮する
ことができる。また、許容範囲を超えた誤差が発生しな
いように圧縮することができる。
【図1】本実施の形態に係るデータ圧縮装置の機能構成
を示すブロック図である。
を示すブロック図である。
【図2】LZSS圧縮方法の原理を説明する説明図であ
る。
る。
【図3】LZSS圧縮方法の原理を説明する説明図であ
る。
る。
【図4】本実施の形態のデータ圧縮装置の具体的構成を
示すブロック図である。
示すブロック図である。
【図5】本実施の形態のデータ圧縮装置のバッファ構成
を示す説明図である。
を示す説明図である。
【図6】本実施の形態のデータ圧縮装置の処理手順を説
明するフローチャートである。
明するフローチャートである。
【図7】本実施の形態のデータ圧縮装置の処理手順を説
明するフローチャートである。
明するフローチャートである。
【図8】本実施の形態のデータ圧縮装置の動作結果例を
示す説明図である。
示す説明図である。
1 入力ファイル 2 データバッファ 5 検索部 6 符号化部 7 出力ファイル 8 登録部 11 先読みバッファ 12 窓バッファ 13 識別フィールド 14 位置フィールド 15 長さフィールド 16 生データフィールド 21 CPU 22 磁気ディスク 23 RAM 24 ROM
Claims (9)
- 【請求項1】 辞書ベースでデータを圧縮するデータ圧
縮方法であって、 圧縮するデータと既に圧縮された生データとの違いが所
定の許容範囲内である場合に、一致と見なして符号化を
行うことを特徴とするデータ圧縮方法。 - 【請求項2】 更に、一致と判定された圧縮されたデー
タを既に圧縮された生データに置き換えることを特徴と
する請求項1記載のデータ圧縮方法。 - 【請求項3】 前記置き換えは、前記違いがある場合に
実行されることを特徴とする請求項2記載のデータ圧縮
方法。 - 【請求項4】 辞書ベースでデータを圧縮するデータ圧
縮装置であって、 圧縮するデータと既に圧縮された生データとの違いの許
容範囲を記憶する記憶手段と、 違いが前記許容範囲内である場合に、一致と見なして符
号化を行う符号化手段とを備えることを特徴とするデー
タ圧縮装置。 - 【請求項5】 更に、一致と判定された圧縮されたデー
タを既に圧縮された生データに置き換える置換手段を備
えることを特徴とする請求項4記載のデータ圧縮装置。 - 【請求項6】 前記置換手段は、前記違いがある場合に
置き換えを行うことを特徴とする請求項5記載のデータ
圧縮装置。 - 【請求項7】 圧縮するデータの全部または一部を格納
するバッファと、 圧縮のために参照されるデータを格納する辞書と、 前記バッファに格納された圧縮するデータにより前記辞
書を検索する辞書検索手段であって、所定の誤差を許容
する前記辞書検索手段と、 前記バッファに格納された圧縮するデータに相当するデ
ータが、前記辞書に格納されていないときには、前記バ
ッファに格納された圧縮するデータを符号化し、前記バ
ッファに格納された圧縮するデータに相当するデータ
が、前記辞書に格納されているときには、少なくとも、
前記辞書検索手段により検索された、前記バッファに格
納されたデータに相当するデータが格納されている前記
辞書のインデックスを符号化する符号化手段と、 前記バッファに格納された圧縮するデータの全部または
一部を前記辞書に登録する辞書登録手段とを備えること
を特徴とするデータ圧縮装置。 - 【請求項8】 前記辞書登録手段は、前記符号化手段に
より符号化された前記辞書のインデックスに対応する前
記辞書に格納されたデータと前記バッファに格納された
圧縮するデータとの間に誤差があった場合に、前記バッ
ファに格納された圧縮するデータのかわりに、前記符号
化手段により符号化された前記辞書のインデックスに対
応する前記辞書に格納されたデータに基づいて前記辞書
に登録することを特徴とする請求項7記載のデータ圧縮
装置。 - 【請求項9】 辞書ベースでデータを圧縮するコンピュ
ータ可読のプログラムを記憶するコンピュータ可読メモ
リであって、少なくとも、 圧縮するデータと既に圧縮された生データとの違いが所
定の許容範囲内であるか否かを判定する判定モジュール
と、 所定の許容範囲内である場合に一致と見なして、一致と
判定された圧縮されたデータを既に圧縮された生データ
に置き換えて符号化する符号化モジュールとを含むこと
を特徴とするコンピュータ可読メモリ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35121196A JPH10190476A (ja) | 1996-12-27 | 1996-12-27 | データ圧縮方法及びその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35121196A JPH10190476A (ja) | 1996-12-27 | 1996-12-27 | データ圧縮方法及びその装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10190476A true JPH10190476A (ja) | 1998-07-21 |
Family
ID=18415807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35121196A Withdrawn JPH10190476A (ja) | 1996-12-27 | 1996-12-27 | データ圧縮方法及びその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH10190476A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006062142A1 (ja) * | 2004-12-07 | 2006-06-15 | Nippon Telegraph And Telephone Corporation | 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 |
JP2009065675A (ja) * | 2007-09-07 | 2009-03-26 | Samsung Electronics Co Ltd | データ圧縮及び復元装置、並びに方法 |
JP2009065674A (ja) * | 2007-09-07 | 2009-03-26 | Samsung Electronics Co Ltd | データ圧縮装置および方法 |
JP2012054835A (ja) * | 2010-09-02 | 2012-03-15 | Fujitsu Ltd | 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置 |
JP2013504911A (ja) * | 2009-09-14 | 2013-02-07 | トムソン ライセンシング | 浮動小数点データを符号化する方法、浮動小数点データを復号化する方法並びに関連する符号器及び復号器 |
JP2013150041A (ja) * | 2012-01-17 | 2013-08-01 | Fujitsu Ltd | プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体 |
CN110868222A (zh) * | 2019-11-29 | 2020-03-06 | 中国人民解放军战略支援部队信息工程大学 | Lzss压缩数据误码检测方法及装置 |
-
1996
- 1996-12-27 JP JP35121196A patent/JPH10190476A/ja not_active Withdrawn
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006062142A1 (ja) * | 2004-12-07 | 2006-06-15 | Nippon Telegraph And Telephone Corporation | 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 |
US7667630B2 (en) | 2004-12-07 | 2010-02-23 | Nippon Telegraph And Telephone Corporation | Information compression-encoding device, its decoding device, method thereof, program thereof, and recording medium storing the program |
JP2009065675A (ja) * | 2007-09-07 | 2009-03-26 | Samsung Electronics Co Ltd | データ圧縮及び復元装置、並びに方法 |
JP2009065674A (ja) * | 2007-09-07 | 2009-03-26 | Samsung Electronics Co Ltd | データ圧縮装置および方法 |
JP2011250431A (ja) * | 2007-09-07 | 2011-12-08 | Samsung Electronics Co Ltd | データ圧縮装置および方法 |
JP2013504911A (ja) * | 2009-09-14 | 2013-02-07 | トムソン ライセンシング | 浮動小数点データを符号化する方法、浮動小数点データを復号化する方法並びに関連する符号器及び復号器 |
US8990275B2 (en) | 2009-09-14 | 2015-03-24 | Thomson Licensing | Method for encoding floating-point data, method for decoding floating-point data, and corresponding encoder and decoder |
JP2012054835A (ja) * | 2010-09-02 | 2012-03-15 | Fujitsu Ltd | 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置 |
JP2013150041A (ja) * | 2012-01-17 | 2013-08-01 | Fujitsu Ltd | プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体 |
CN110868222A (zh) * | 2019-11-29 | 2020-03-06 | 中国人民解放军战略支援部队信息工程大学 | Lzss压缩数据误码检测方法及装置 |
CN110868222B (zh) * | 2019-11-29 | 2023-12-15 | 中国人民解放军战略支援部队信息工程大学 | Lzss压缩数据误码检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5870036A (en) | Adaptive multiple dictionary data compression | |
KR100602394B1 (ko) | 동작 코드용 듀얼 모드 데이터 압축 방법 | |
US8456332B2 (en) | Systems and methods for compression of logical data objects for storage | |
US5874908A (en) | Method and apparatus for encoding Lempel-Ziv 1 variants | |
JP2000315954A (ja) | 入力データストリームの圧縮方法とその装置 | |
US20140289208A1 (en) | Data compression apparatus, data compression method, data decompression apparatus, and data decompression method | |
JPH10190476A (ja) | データ圧縮方法及びその装置 | |
JP3342788B2 (ja) | 圧縮データの伸張方法 | |
US6130631A (en) | Method and apparatus utilizing a simplified content-addressable memory for JPEG decoding | |
US6850648B2 (en) | System for decoding packed coded image data while depacking same | |
US5142282A (en) | Data compression dictionary access minimization | |
JP2003526986A (ja) | 算術的に符号化された情報信号の算術復号化 | |
JP2002026737A (ja) | データ復号化装置とその方法 | |
US6653949B1 (en) | Data compression apparatus and method utilizing tandem coupled matrices | |
JP2001092627A (ja) | データ圧縮方法 | |
JP3105330B2 (ja) | 画像データの圧縮復元方式 | |
JPH0264770A (ja) | 辞書を用いたデータ圧縮復元方式 | |
KR100487411B1 (ko) | 가변 길이 디코더 | |
JP3673630B2 (ja) | 符号化方法 | |
JPH06152988A (ja) | 可変長符号の復号化装置 | |
JP3143029B2 (ja) | データ圧縮方法及びその装置並びにデータ伸長方法及びその装置 | |
JP4862894B2 (ja) | 符号化装置と方法及びプロセッサ | |
JPH04167821A (ja) | データ符号化及び復号化方法 | |
US6756923B1 (en) | Data compressor utilizing switched input coincidence elements arranged in virtual levels | |
JPH0683573A (ja) | データ圧縮方式 |
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: 20040302 |