JP3241788B2 - データ圧縮方式 - Google Patents

データ圧縮方式

Info

Publication number
JP3241788B2
JP3241788B2 JP04257892A JP4257892A JP3241788B2 JP 3241788 B2 JP3241788 B2 JP 3241788B2 JP 04257892 A JP04257892 A JP 04257892A JP 4257892 A JP4257892 A JP 4257892A JP 3241788 B2 JP3241788 B2 JP 3241788B2
Authority
JP
Japan
Prior art keywords
dictionary
data
character string
initial value
encoded
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 - Fee Related
Application number
JP04257892A
Other languages
English (en)
Other versions
JPH05241777A (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.)
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 JP04257892A priority Critical patent/JP3241788B2/ja
Publication of JPH05241777A publication Critical patent/JPH05241777A/ja
Application granted granted Critical
Publication of JP3241788B2 publication Critical patent/JP3241788B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Document Processing Apparatus (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、スライド辞書を用いた
ジブ−レンペル符号化によるデータ圧縮方式に関し、特
にスライド辞書を用いた符号化に動的辞書を用いた符号
化を利用したデータ圧縮方式に関する。近年、文字コー
ド、ベクトル情報,画像など様々な種類のデータがコン
ピュータで扱われるようになっており、扱われるデータ
量も急速に増加してきている。
【0002】大量のデータを扱うときは、データの中の
冗長な部分を省いてデータ量を圧縮することで、記憶容
量を減らしたり、速く伝送したりできるようになる。様
々なデータを1つの方式でデータ圧縮できる方法として
ユニバーサル符号化が提案されている。ここで、本発明
の分野は、文字コードの圧縮に限らず、様々なデータに
適用できるが、以下では、情報理論で用いられている呼
称を踏襲し、データの1ワード単位を文字と呼び、デー
タが任意ワードつながったものを文字列と呼ぶことにす
る。
【0003】ユニバーサル符号の代表的な方法として、
ジブ−レンペル(Ziv−Lempel)符号がある
(詳しくは、例えば、宗像「Ziv−Lempelのデ
ータ圧縮法」,情報処理,Vol.26,No.1,1
985年を参照のこと)。ジブ−レンペル符号では スライド辞書型(ユニバーサル型ともいう)と、 動的辞書型(増分分解型ともいう) の2つのアルゴリズムが提案されている。これらの方式
の実用向きの改良方法が発表され、補助記憶装置のファ
イル圧縮や、パソコン通信でのデータ伝送に利用される
ようになっている。
【0004】
【従来の技術】まず従来のスライド辞書型のアルゴリズ
ムと動的辞書型のアルゴリズムについて説明する。 (1)スライド辞書型アルゴリズム このアルゴリズムは、演算量は多いが、高圧縮率が得ら
れる方法である。即ち、符号化データを、過去のデータ
系列の任意の位置から一致する最大長の系列に区切り
(部分列)、過去の文字列の複製として符号化する方法
である。 [ジブ−レンペル符号]図10にスライド辞書型である
ジブ−レンペル符号の符号器の原理図を示す。
【0005】図10において、辞書バッファとしてのP
バッファ12には符号化済みの入力データが格納されて
おり、入力バッファとしてのQバッファ10にはこれか
ら符号化するデータが入力されている。Qバッファ10
の文字列をPバッファ12の文字列と照合し、Pバッフ
ァ12の中で一致する最大長の文字部分列を求める。そ
して、Pバッファ12中でこの最大長文字列を指定する
ため次の情報の組を符号化する。
【0006】
【表1】
【0007】次にQバッファ10内の符号化した文字列
をPバッファ12に移して、新たなデータを得る。以
下、同様の操作を繰り返し、データを部分列に分解して
符号化する。すなわちジブ−レンペル符号では、現在の
文字コードの系列を、符号化済の過去の系列からの複製
として符号化するものである。ジブ−レンペル符号を用
いた場合、文字コードの文書情報は1/2程度に圧縮で
きる。
【0008】更にスライド辞書型アルゴリズムの改良と
して、LZSS符号がある(T.C.Bell,"Better OPM/L T
ext Compression",IEEE Trans.on Commun.,Vol.COM-34,
No.12,Dec.1986参照)。LZSS符号では、[Pバッフ
ァ中の最大一致系列の開始位置]と[一致する長さ]の
組と、[次のシンボル]とをフラグ区別して、符号量の
少ない方で符号化する。
【0009】更にスライド辞書型アルゴリズムの改良と
して、1/4インチ・カートリッジ磁気テープの標準圧
縮方式であるQIC−122符号がある。LZSS符号
について次に説明する。 〔LZSS符号〕LZSS符号による符号化の処理フロ
ーを図11に示し、その原理図を図12及び図13に示
すに示す。
【0010】LZSS符号による符号化は、図12
(b)に示すように例えば4ビットのインデックス情報
をもって、これから符号化する文字列を格納する例えば
4ビットのインデックス情報に対応して16個の文字数
を格納できるQバッファ10と、図12(a)に示すよ
うに、例えば12ビットのインデックス情報をもって4
096個の符号化済の文字列を格納するPバッファ12
とを備えるようにして構成する。
【0011】符号化処理は図11のフローチャートに示
すように、ステップS1でPバッファ12を空にしてQ
バッファ10に入力データを詰めた後に、ステップS2
でQバッファ10の文字列とPバッファ12の文字列と
を照合し最長一致する文字部分列を求め、ステップS3
で2文字以上であることを条件にステップS5に進ん
で、求められた文字部分列を指定するために [文字列Sの出現位置] [一致長]の組で符号化する。
【0012】続いてステップS6でQバッファ10内の
符号化した文字列をPバッファ12に移して、Qバッフ
ァ10内に符号化した文字列分の新たな文字列を入力し
ていくことで符号化を実行する。尚、最長一致文字部分
列が1バイトのときは生データで符号化した方が有利で
あるので、ステップS4で [生データ1バイト]をそのまま出力する。
【0013】更に、図13に示すように、8個の符号化
データもしくは生データを1組のデータとしてまとめる
と共に、まとめられた各8個のデータが符号化データな
のか生データなのかを示すステップS4,S5で得られ
たフラグビットでなる8ビット識別データを先頭に付加
し、1組のデータとして出力する。 (2)動的分解型(増分分解)アルゴリズム このアルゴリズムは、圧縮率はユニバーサル型より劣る
が、シンプルで、計算も容易であることが知られてい
る。
【0014】増分分解型ジブーレンペル符号では、入力
シンボルの系列を X=aabababaa・・・ とすると、成分系列X=X012 ・・・への増分分
解は次のようにする。まずX1 を既成分の右端のシンボ
ルを取り除いた最長の列とし、 X=a・ab・aba・b・aa・・・・ となる。従って、 X0 =λ(空列) X1 =X0 a X2 =X1 b X3 =X2 a X4 =X0 b X5 =X1 a・・・ と分解できる。増分分解した各成分系列は既成分系列を
用いて次のような組で符号化する。
【0015】
【表2】
【0016】すなわち、増分分解型アルゴリズムは、符
号化パターンについて、過去に分解した部分列の内、最
大長一致するものを求め、過去に分解した部分列の複製
として符号化するものである。動的辞書型アルゴリズム
の改良としては、 LZW(Lempel-Ziv-Welch) 符号(T.A.Welch,"A Tech
nique for High-Performance Data Compression",ComPu
ter,June 1984 参照) LZJ符号(M.Jakobsson,"Comperssion of Character
Strings by An Adaptive Dictionar,BIT,25号,198
5年,593−603頁参照のこと) とがある。次にLZW符号について説明する。 〔LZW符号〕LZW符号の符号化の処理のフローを図
14に示す。即ちLZW符号化は、書き替え可能な辞書
をもち、入力文字コードのデータ中を相異なる文字列に
分け、この文字列を出現した順に番号を付けて辞書に登
録すると共に、現在入力している文字列を辞書に登録し
てある最長一致文字列の番号だけで表して、符号化する
ものである。尚、動的辞書型符号およびLZW符号の技
術は、特開昭59−231683,米国特許4,55
8,302で開示されている。図14の符号化処理は次
のようになる。
【0017】S1:予め全文字につき一文字からなる文
字列を初期値として登録してから符号化を始める。辞書
の登録数nを文字種数Aと置く。カーソルをデータの先
頭の位置に置く。 S2:カーソルの位置からの文字列に一致する辞書登録
の最長文字列Sを見つける。
【0018】S3:文字列Sの辞書番号を〔log2
n〕ビットで表して出力する。ただし、〔log2 n〕
はlog2 n以上の最小の整数である。辞書登録数nを
一つインクリメントする。 S4:文字列Sにカーソルの最初の文字Cを付加した文
字列SCを辞書に登録する。カーソルは文字列Sの後の
文字に移動させる。S2に戻る。
【0019】図15はLZW符号の復号化を示したフロ
ーチャートであり、符号化の逆の処理となる。動的辞書
型アルゴリズムは、辞書内の系列は過去に符号化した
(サンプリングした)系列の中だけから選ぶため、処理
速度が速い。しかし、過去に現れたデータの一部の系列
しか含めないため圧縮率が高く取れない欠点がある。
【0020】動的辞書型アルゴリズムの改良版として、
辞書への学習量を増やしインデックスのみで符号化でき
るようにしたLZJ符号がある。 〔LZJ符号〕LZJ符号の符号化の処理フローを図1
6に示し、また復号化の処理フローを図17に示す。
【0021】ここで、辞書と文字列の表記法を次のよう
に定義する。文字種の集合をAとし、集合Aの文字を組
み合わせてできる文字列をSで表す。文字列Sのi番目
の文字をS(i)する。更に複数の部分文字列S
(i),S(i+1),・・・,S(j)をS(i,
j)とする。辞書をDh (S)で表わし、辞書の木(t
ree)の根(root)から葉(leaf)へのパス
として文字列S中の一定の長さhの全ての部分文字列を
登録する。
【0022】図16のLZJ符号化処理は次のようにな
る。 S1:辞書に全文字種の一文字を初期値として登録して
から符号化を始める。辞書の登録数nを文字種数Aとお
く。カーソルk=0とおく。 S2〜S5:k番目の入力文字まで符号化が終了したと
して文字列S(1,k)の全ての部分文字列がすでに辞
書Dh (S(1,k))に登録してある。S(k+
1),・・・の文字列から符号化する。
【0023】詳細に説明すると、次のようになる。 S2:S(k+1),・・から辞書Dh (S(1,
k)) の登録文字列に最長一致する部分文字列S(k+
1,k+z)を見つける。 S3:部分文字列S(k+1,K+z)の辞書番号ax
を[log2 n]ビットで表して出力する。ただし、n
は辞書の現在の登録数であり、[log2 n]はlog
2 n以上の最小の整数である。ここで、符号語ax は部
分文字列S(ix ,jx )を表す。各々のax は辞書D
h (S(1,jx-1 )),(ix ≦jx ≦ix +h,i
x =jx-1 +1)の辞書番号である。
【0024】S4:部分文字列S(k−h+2,k+
1),・・・,S(k+z−h+1,k+z)にnをイ
ンクリメントしながら辞書番号を付けて辞書に追加し、
辞書Dh (S(1,k+z))を構成する。 S5:カーソルk=k+zとおく。 S6:全文字を処理するまでS1〜S5を繰り返す。
【0025】ここでステップS4の文字列の辞書登録を
図示すると図18に示すようになる。次に図17のLZ
J復号化処理は次のようになる。 S1:図16のS1と同様に辞書に全文字種の一文字を
初期値として登録する。辞書の登録数nを文字種数Aと
おく。カーソルk=0とおく。
【0026】S2〜S4:辞書番号aw が復号化され、
文字列S(1,jw )まで利用することができ、辞書D
h (S(1,jw ))が再構成されている。次に符号語
w+ 1 を復号する。詳細に説明すると次のようになる。 S2:符号語aw+1 を復号した辞書番号より辞書Dh
(S(1,jw ))内の部分列S(iw+1 ,jw+1 )を
復元する。部分列S(iw+1 ,jw+1 )は辞書内で根
(root)からアドレスaw+1 の節点で表わされる文
字列である。
【0027】S3:文字列S(1,jw+1 )を復号した
後、辞書Dh (S(1,jw+1 ))を図16のS4と同
様に構成する。 S4:カーソルk=jw+1 とおく。 S5:全符号を処理するまでS1〜S4を繰り返す。
【0028】
【発明が解決しようとする課題】しかしながら、従来の
スライド辞書型アルゴリズムのLZSS符号および動的
辞書型アルゴリズムのLZW符号は完全なユニバーサル
性を前提にしており、辞書が空白の状態から符号化を始
めるようにしている。このため、従来の符号化方式で
は、入力データの始めの方で、学習量が少ない(辞書内
容が少ない)とき、圧縮率が低いという欠点があった。
【0029】LZW符号ではユニバーサル性も重要であ
るが、入力データに特定の種類のデータだけ特に多く現
れるときは、辞書は必ずしも空白の状態から符号化する
必要はない。この観点から本願発明者等は、動的辞書型
アルゴリズムにおいて図19に示すように、高い頻度で
出現する文字列のみ保持した辞書を用いて高圧縮率を得
る方法を提案している。
【0030】図19にあっては、サンプルデータを対象
にLZW符号化を行って辞書を作成し、辞書には使用頻
度を同時に計数しておく。サンプルデータの符号化が済
んだ場合には、辞書の中から出現頻度が閾値T以上の文
字列を抽出して実際の符号化に使用する辞書に初期値と
して登録してから符号化又は復号化を行う。しかし動的
辞書型アルゴリズムは符号化、復号化の処理速度はバラ
ンスしている。一方、スライド辞書型アルゴリズムにあ
っては、符号化は遅いものの復号化の処理が格段に速い
ため、データベースなどのように復元の処理が主になる
用途においては有利となる。
【0031】本発明は、このような状況に鑑みてなされ
たもので、動的辞書型アルゴリズムを利用した初期値の
登録でスライド辞書型アルゴリズムによる符号化を効率
よくできるようにしたデータ圧縮方式を提供することを
目的とする。
【0032】
【課題を解決するための手段】図1は本発明の原理説明
図である。まず本発明は、入力バッファ(Qバッファ)
10中の入力データを辞書バッファ(Pバッファ)12
中の符号化済データの部分列の内、最長一致するものの
格納位置と一致長で指定して符号化し、符号化済みの入
力データは辞書バッファ12に移して新たな符号化済み
データとして次の入力データを符号化するスライド辞書
型アルゴリズムに従ってデータ圧縮方式を対象とする。
【0033】このようなデータ圧縮方式につき本発明に
あっては、代表的なサンプルデータを相異なる部分列に
分けたとき、所定閾値T以上の出現頻度をもつ部分列を
抽出し、この抽出した部分列を一列に並べて初期値文字
列を予め作成する初期値作成手段14と、初期値作成手
段14で作成した初期値文字列を、符号化又は復号化に
先立って最初に辞書バッファ12に固定的に設定して符
号化済又は復号化済データと見做し、初期値文字列およ
び新たに設定した符号化済又は復号化済データの中から
入力バッファ10の入力データと最長一致する部分列を
検索して格納位置と一致長で指定して符号化又は復号化
する符号化復号化手段16とを備えたことを特徴とす
る。
【0034】また本発明は、初期値作成手段14で作成
した初期値文字列を、符号化に先立って最初に辞書バッ
ファ12に固定的に設定して符号化済又は復号化済デー
タと見做し、初期値文字列の中からのみ入力バッファ1
0の入力データと最長一致する部分列を検索して格納位
置と一致長で指定して符号化し、辞書バッファ12に対
する新たな入力データの登録は行わないようにしてもよ
い。
【0035】ここで、初期値作成手段14は動的辞書型
アルゴリズムであるLZW符号の符号化処理に従って初
期値文字列を作成する。即ち、符号化済み文字列を参照
番号を付して登録する辞書を有し、代表的なサンプルデ
ータの文字列に最長一致する辞書中の符号化済み部分列
を検索して参照番号で指定して符号化し、この符号化後
に参照番号に次のサンプル文字を付加した部分列を新た
な参照番号を付して辞書に登録し、更に辞書に登録され
た符号化済み文字列の検索する毎に使用頻度を計数し、
前記サンプルデータの符号化終了した際に前記使用頻度
が所定閾値以上となる文字列を抽出し、抽出した文字列
を出現順に並べて初期値文字列を予め作成する。
【0036】また初期値作成手段14は動的辞書型アル
ゴリズムであるLZJ符号の符号化処理に従って初期値
文字列を作成してもよい。即ち、初期値作成手段14は
符号化済み文字列を参照番号を付して登録する辞書を有
し、代表的なサンプルデータの文字列に最長一致する辞
書中の符号化済み部分列を検索して参照番号で指定して
符号化する。この符号化後に符号化した入力文字列の各
文字を順次接頭部分列とし、この接頭部分列に辞書中の
部分列を加えて一定長の部分列を複数作成して全て辞書
に登録し、更に辞書に登録された符号化済み部分列の検
索する毎に使用頻度を計数し、サンプルデータの符号化
終了した際に使用頻度が所定閾値以上となる部分列を抽
出し、この抽出した部分列を出現順に並べて初期値文字
列を予め作成する。
【0037】更に初期値作成手段(14)は、サンプル
データをスライド辞書型アルゴリズムで符号化して符号
列を求め、この符号列に動的辞書型アルゴリズムである
LAW符号化やLZJ符号化を適用して使用頻度の高い
初期値文字列を生成してもよい。即ち、入力バッファ中
の代表的なサンプルデータの文字列を辞書バッファ中の
符号化済データの部分列の内、最長一致するものの格納
位置と一致長で指定して符号化し、この符号化データを
相異なる部分列に分けたとき、所定閾値以上の出現頻度
をもつ部分列を抽出し、抽出した部分列を出現順に並べ
て初期値文字列を予め作成する。
【0038】学習により作成した使用頻度の高い初期値
文字列の辞書バッファ12への登録は、辞書バッファ1
2を読出専用の第1メモリ(ROM)と、読出及び書込
可能な第2メモリ(RAM)で構成し、初期値作成手段
14で作成した初期値文字列を第1メモリ(ROM)に
固定的に記憶し、入力バッファ10の符号化済み入力デ
ータは第2メモリ(RAM)に移して記憶する。
【0039】また辞書バッファ12を書替え禁止領域を
設定した読出及び書込可能なメモリ(RAM)で構成
し、符号化開始時に初期値作成手段14で作成した初期
値文字列を辞書バッファ12の書替え禁止領域にロード
した後に符号化を開始するようにしてもよい。
【0040】
【作用】このような構成を備えた本発明のデータ圧縮方
式によれば、次の作用が得られる。まず圧縮符号化しよ
うとするデータの種類に応じたサンプルデータを対象に
動的辞書型アルゴリズム、即ちLZW符号やLZJ符号
のアルゴリズムに従った符号化を行うと共に、この符号
化に使用する辞書にカウンタを設け、参照番号が符号化
に使われた回数を使用頻度として計数する。
【0041】サンプルデータの符号化が済んだならば、
辞書の登録済み文字列の気構造の接点に設けた使用頻度
を示すカウンタ計数値の小さい文字列は辞書から削除
し、高頻度で出現する文字列のみを残した辞書を求め、
この文字列から一列に並べて初期値文字列を生成する。
学習により生成された初期値文字列を用いたスライド辞
書型アルゴリズムによる符号化は、次のようにする。
【0042】符号化時に、予め記憶装置に取り出して
おいた高頻度の初期値文字列を初期値として辞書にロー
ドした後、符号化する。 予め作成した高頻度の文字列を初期値として辞書の先
頭に書き替えをしない固定部分として設定しておき、符
号化する。スライド辞書型アルゴリズム、例えばLZS
S符号による符号化であっても、使用頻度の高い文字列
が予め辞書バッファにと初期値として登録されているた
め、最初から長い入力データの文字列に最長一致する辞
書の文字列を検索することができ、スライド辞書型の符
号化をより高速で行うことができる。
【0043】
【実施例】図2は本発明の一実施例を示した実施例構成
図である。図2において、14は初期値作成部であり、
代表的なサンプルデータを対象に動的辞書型アルゴリズ
ムに従った符号化を行い、この符号化で作成される辞書
に登録された文字列(部分列)を示す参照番号の符号化
時に使われた回数を出現頻度としてカウンタで計数し、
サンプルデータの符号化が終了した時点で所定閾値T以
上の出現頻度をもつ辞書24の登録文字列(部分列)を
取り出し、一列に並べて初期化文字列を作成する。
【0044】具体的には、初期値作成部14はサンプル
データ記憶部20,動的辞書型符号化部22,辞書24
及び初期値文字列生成部26で構成される。サンプルデ
ータ記憶部20にはデータ圧縮の対象となるデータの種
類に応じた代表的なサンプルデータが学習対象として記
憶される。動的辞書型符号化部22は動的辞書型アルゴ
リズムに従ってサンプルデータ記憶部20のサンプルデ
ータを対象に辞書24を作成しながら符号化を行う。
【0045】この動的辞書型アルゴリズムとしては、例
えば図13に示したLZW符号化アルゴリズム、あるい
は図15に示したLZJ符号化アルゴリズムを用いるこ
とができる。辞書24は参照番号に対応して符号化済み
文字列としての部分列を登録しており、更に符号化済み
部分列の参照番号が符号化時に使われた回数を計数する
カウンタを設け、出現頻度として計数するようにしてい
る。初期値文字列生成部26は動的辞書型符号化部22
によるサンプルデータの符号化処理が終了した段階で辞
書24の中から所定の閾値T、例えばT=2以上となる
出現頻度をもつ部分列を取り出し、この部分列を一列に
並べて使用頻度の高い初期値文字列を生成する。
【0046】初期値作成部14で作成された初期値文字
列はデータ圧縮復元部30におけるスライド辞書を用い
たデータ圧縮に用いられる。データ圧縮復元部30は入
力バッファとしてのQバッファ10、辞書バッファとし
てのPバッファ12及びスライド辞書型符号化復号化部
16で構成される。Pバッファ12には符号化及び復号
化に先立って初期値作成部14で予め作成された初期値
文字列が登録され、この初期値の登録領域はQバッファ
10から入力文字列をシフトして格納しても廃棄され
ず、固定的に保持される。即ち、Pバッファ12に登録
した初期値文字列を符号化済みデータと見做してスライ
ド辞書型アルゴリズムに従った符号化及び復号化を行
う。
【0047】スライド辞書型符号化復号化部16はスラ
イド辞書型アルゴリズムに従った符号化または復号化を
行うもので、具体的には、ジブ−レンペル符号化アルゴ
リズムや図10に示したLZSS符号化アルゴリズムを
実行する。図3は図2の初期値作成部14の処理を示し
たフローチャートである。図3における初期値作成処理
は次のようになる。
【0048】S1:入力データとして多く出現するデー
タサンプルを入力し、LZW符号またはLZJ符号等の
動的辞書型アルゴリズムに従ってサンプルデータの符号
化を行う。この符号化において、木構造の辞書が作成さ
れる。同時に符号化により作成される辞書の木構造にお
ける各節点が文字列を表すことになるが、各節点にカウ
ンタを付加して符号化時に最長一致する文字列を検索し
たときに通過した各節点でカウンタを1つインクリメン
トして使用回数を計数する。
【0049】即ち、最長一致の文字列を検索した場合に
は、検索した文字列に含まれる節点のカウンタの全てが
カウントアップされることになる。 S2:サンプルデータの符号化が終了した時点で辞書の
各節点の連鎖で構成される文字列の中から節点に設けた
カウンタの計数値が所定の閾値T以上の高頻度で使用さ
れた文字列を取り出す。
【0050】S3:S2で取り出した文字列を一列の文
字列の形に並べ、初期値文字列を生成する。このとき既
に並べた文字列の中に新たに取り出した文字列と同じ文
字列があるか否かを検索し、もし同じ文字列があれば重
複するので、初期値の文字列には含めないようにする。
以上のS1〜S3の処理を経て作成された初期値文字列
はスライド辞書型アルゴリズムに従った符号化及び復号
化に使用するため、外部の補助記憶装置等に取り出して
おくことが望ましい。
【0051】図4は図3の初期化処理のステップS1に
おける動的辞書型アルゴリズムに従ったサンプルデータ
の符号化の際に作成される辞書の木構造とその節点に設
けたカウンタによる使用頻度の計数を示した説明図であ
る。図4にあっては、まず辞書に例えばabcdの各文
字を参照番号〜に示すように初期登録した後にサン
プルデータの符号化を開始しており、図示の状態にあっ
ては更に参照番号〜までの文字列の登録が済んだ状
態での木構造を示している。
【0052】例えば、入力データabcの符号化は参照
番号〜で示す文字列の登録が済んだ段階で行われて
おり、文字列abは辞書24の検索により参照番号で
示す文字列に一致していることから、出力符合は「
c」として出力し、続いて参照番号に次の1文字cを
加えた文字列を新たに参照番号を付して辞書24に登
録している。
【0053】次の文字列abdについても、辞書24の
検索で参照番号の文字列に最長一致し、従って出力符
合は「d」として出力され、辞書24に対しては参照
番号に次の1文字dを加えた文字列に新たな参照番号
を加えて登録している。この文字列abcと文字列a
bdの符号化後の登録にあっては、同じ文字列abが2
回使用されているため、参照番号の節点及び参照番号
の節点の各カウンタが2回カウントアップされ、それ
ぞれ5,3となる。
【0054】このような木構造を備えた辞書24におけ
る各節点の計数値は、その節点の子供の計数値の和に1
を加えた値となる。例えば、参照番号の文字aの節点
の計数値はその節点の子供となる参照番号との計数
値の和1+3=4に1を加えた値として5となる。図5
は図3のステップS2及びS3に示したサンプルデータ
の符号化で得られた辞書から閾値T以上の高頻度で使用
された文字列を取り出して、初期値として使用する文字
列の形に変換する処理を示した説明図である。
【0055】図5(a)はサンプルデータの符号化が終
了した状態で得られた辞書の木構造を示したもので、各
文字の節点に設けたカウンタ内の計数値が使用頻度を示
している。この図5(a)の辞書の木構造に対し、閾値
T=2以上の計数値をもつ文字列を取り出すと、図5
(b)に示すようになる。この閾値2以上の計数値をも
つ文字列は、図5(c)に示すように、例えば左側の文
字列から順番に1本の文字列にまとめるように並べ替え
られ、スライド辞書型アルゴリズムのPバッファに初期
値として登録される初期値文字列が作られる。
【0056】図6は図2のデータ圧縮復元部30におけ
るスライド辞書を用いた符号化処理を示したフローチャ
ートであり、次のようになる。 S1:図3の初期値作成処理で作られた初期値文字列
(N文字)をPバッファの前半に格納する。 S2:通常のスライド辞書型アルゴリズムと同様に、入
力したQバッファ10の文字列を初期値文字列と符号化
済み文字列を格納したPバッファ12から最長一致する
文字列を検索して、開始位置と一致長の組で符号化す
る。この場合、符号化文字列は2文字一致するか否かに
よって次の2つのモードで符号化される。
【0057】符号化モード[識別ビット0][最長一致
文字列の位置][一致長] 生データモード[識別ビット1][1文字] S3:辞書の削除及び登録処理として初期値文字列を除
くPバッファ10内の部分をスライドさせる。即ち、P
バッファ10内の初期値文字列を示す0〜n−1の位置
の文字はそのままにしておき、文字位置nから符号化が
済んだQバッファ10の文字数だけ文字を左にシフトし
て削除し、新たにQバッファの符号化済み文字列をPバ
ッファ12の左側から右側にシフトして追加する。
【0058】以上の辞書削除及び登録処理が済んだなら
ばQバッファ10に符号化が済んだ文字分を左にシフト
し、新たな文字列を入力する。以下同様に、ステップS
2,S3の処理を繰り返して入力文字列を符号化する。
図7は図6のスライド辞書型アルゴリズムを用いた符号
化におけるPバッファの構成を示した説明図である。
【0059】図7(a)はPバッファ12として書替え
可能なメモリ、例えばRAMを使用した場合であり、P
バッファ12の前半の斜線部で示す0〜n−1の領域に
初期値文字列ロード領域を設け、ここに予め作成した初
期値文字列を格納し、残りを符号化済み文字列の登録領
域としている。この初期値文字列ロード領域0〜n−1
についてはその後の書替えを禁止し、新たなPバッファ
12に対する登録に際しては、nの位置から、右から左
に登録文字数分だけのシフトに伴って、登録していた文
字を処理済み文字列として排出して削除する。
【0060】図7(b)はPバッファ12の他の構成を
示したもので、この実施例にあっては、初期値文字列を
登録する領域として固定記憶を実現するため、ROMを
用いたROM領域としており、残りの領域を書替え可能
なRAMを用いたRAM領域を設けている。Pバッファ
12のRAM領域はQバッファ10における入力文字列
の符号化が1つ加わる毎に符号化済み文字数分の文字が
RAM領域の左端から捨てられ、Qバッファ10の符号
化済み文字列がRAM領域の右端よりシフトして格納さ
れる。
【0061】図8は図2のデータ圧縮復元部30による
復号化処理を示したフローチャートであり、次のように
して行われる。 S1:図6のステップS1と同様、Pバッファ12の前
半に予め作成された初期値文字列(n文字)を格納す
る。 S2:符号語を入力し、複製モードのときはPバッファ
12を参照して文字列を復元する。
【0062】S3:図6のステップS3と同様に、Pバ
ッファ12の削除と登録の処理を行う。以下同様に、ス
テップS2,S3の処理を繰り返して、符号化した文字
列を復元する。図9は本発明の初期値文字列の作成処理
の他の実施例を示した説明図である。図9の初期値文字
列の作成処理にあっては、まずスライド辞書型アルゴリ
ズムに従ってサンプルデータを符号化し、サンプルデー
タから得られた符号列を対象に動的辞書型アルゴリズム
に従った符号化を行い、この符号化の際に作成される辞
書の木構造における節点にカウンタを設けて使用頻度を
計数し、符号化が終了したならば所定の閾値T以上の使
用頻度をもつ文字列を取り出し、1列に並べて初期値文
字列を作成する。
【0063】即ち、まずサンプルデータをQバッファ1
0aに入力し、Pバッファ12bの登録済み文字列を検
索して最長一致する文字列を求め、開始位置piと一致
長qiで符号化する。勿論、この符号化は2文字以上の
場合に行われ、1文字の場合は生データを出力する。こ
のようなスライド辞書型アルゴリズムによる符号化で出
力符号列S1,S2,・・・Si,・・・が得られたな
らば、この符号列S1,S2,・・・Si,・・・を対
象に動的辞書型アルゴリズムに従った木構造の辞書24
を作成する。
【0064】辞書24にあっては、符号列Siの設定毎
にカウンタが設けられ、文字列の符号化に使用された回
数が計数されている。符号列S1,S2,・・・のLZ
W符号化が済んだならば、辞書24の中の例えば閾値T
=2以上の符号列を取り出し、1列の符号列に並べ替え
て初期値符号列として例えばS1,S2,S3,・・・
を生成する。ここで、初期値符号列S1,S2,S3,
・・・の各文字列は最初の符号化の際に予め判っている
ことから、元の文字列に復元することで初期値文字列を
生成する。
【0065】このように最初にスライド辞書型アルゴリ
ズムを用いてサンプルデータから符号列を作り、この符
号列を対象に初期化作成を行うようにした場合には、L
ZW符号化アルゴリズムのみで辞書を作成した場合に比
べ、辞書に登録される文字列の最大長に制約があるかど
うかの違いだけであり、基本的にはLZJ符号化で作成
した辞書に基づく初期値文字列の作成と略同じものが得
られる。
【0066】更に本発明の他の実施例としては、データ
圧縮を行おうとする入力データの種類が予め判っている
ときには、スライド型辞書としてのPバッファ12を初
期値作成部14で作成された初期値文字列のみとしても
よい。このように、Pバッファ12の登録を初期値文字
列のみとした場合には、圧縮率はやや劣るものの復号化
の処理が簡単になり、従来のスライド辞書型アルゴリズ
ムにおいて復号化に時間がかかるという問題を解決し、
従来方式に比べ非常に高速な処理を実現することができ
る。
【0067】更に本発明の他の実施例として、出現する
データの種類が予めだいたい予想できるような場合に
は、初期値文字列をデータの種類によって何種類か準備
しておき、初期値文字列の部分を取り替えることによっ
て、予想した特定種類のデータに強い圧縮効果が得られ
る方式を実現することができる。
【0068】
【発明の効果】以上説明してきたように本発明によれ
ば、出現頻度の高い特性種類のデータでなる初期値文字
列を辞書に登録することによって、LZSS符号等のス
ライド辞書型アルゴリズムの簡便さをほとんど変えるこ
となしに圧縮率を高めることができる。
【0069】また、初期値文字列にない出現頻度の少な
い種類のデータについては、初期値文字列を設定した後
の辞書空きスペースに符号化進む毎に新たな文字列を登
録することによって出現頻度の低いデータについてもユ
ニバーサル性を損うことなく圧縮できる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の実施例構成図
【図3】本発明の初期値作成処理を示したフローチャー
【図4】本発明のサンプルデータを対象とした動的辞書
型符号化と辞書の文字列使用回数の計数を示した説明図
【図5】本発明の符号化辞書の使用頻度に基づく初期値
文字列の生成を示した説明図
【図6】本発明の初期値文字列を用いたスライド辞書型
符号化のフローチャート
【図7】本発明のスライド辞書型符号化で使用するPバ
ッファの構成を示した説明図
【図8】本発明のスライド辞書型復号化のフローチャー
【図9】サンプルデータをスライド辞書型符号化で符号
列に変換した後に木構造の動的辞書を作成して初期値文
字列を生成する本発明の他の実施例を示した説明図
【図10】スライド辞書型符号化の原理図
【図11】従来のLZSS符号化アルゴリズムを示した
フローチャート
【図12】LZSS符号化に用いるバッファ構成図
【図13】LZSS符号化の符号化データの出力形式説
明図
【図14】従来のLZW符号化アルゴリズムを示したフ
ローチャート
【図15】従来のLZW復号化アルゴリズムを示したフ
ローチャート
【図16】従来のLZJ符号化アルゴリズムを示したフ
ローチャート
【図17】従来のLZJ復号化アルゴリズムを示したフ
ローチャート
【図18】LZJ符号化における文字列の登録を示した
説明図
【図19】本願発明者が既に提案しているLZW符号を
用いたデータ圧縮における辞書の初期登録の説明図
【符号の説明】
10:入力バッファ(Qバッファ) 12:辞書バッファ(Pバッファ) 14:初期値作成手段(初期値作成部) 16:符号化復号化手段(スライド辞書型符号化復号化
部) 20:サンプルデータ記憶部 22:動的辞書型符号化部 24:辞書 26:初期値文字列生成部 30:データ圧縮復元部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平3−247167(JP,A) 特開 平3−247168(JP,A) 特開 平3−78322(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 G06F 17/21 H03M 7/30 - 7/46

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】入力バッファ(10)中の入力データを辞
    書バッファ(12)中の符号化済データの部分列の内、
    最長一致するものの格納位置と一致長で指定して符号化
    し、符号化済みの入力データは辞書バッファ(12)に
    移して新たな符号化済みデータとして次の入力データを
    符号化するデータ圧縮方式に於いて、 代表的なサンプルデータを相異なる部分列に分けたと
    き、所定閾値以上の出現頻度をもつ部分列を抽出し、該
    抽出した部分列を一列に並べて初期値文字列を予め作成
    する初期値作成手段(14)と、 該初期値作成手段(14)で作成した初期値文字列を、
    符号化又は復号化に先立って最初に前記辞書バッファ
    (12)に固定的に設定して符号化済又は復号化済デー
    タと見做し、該初期値文字列および新たに設定したび符
    号化済又は復号化済データの中から前記入力バッファ
    (10)の入力データと最長一致する部分列を検索して
    格納位置と一致長で指定して符号化又は復号化する符号
    化復号化手段(16)と、を備えたことを特徴とするデ
    ータ圧縮方式。
  2. 【請求項2】入力バッファ(10)中の入力データを辞
    書バッファ(12)中の符号化済データの部分列の内、
    最長一致するものの格納位置と一致長で指定して符号化
    し、符号化済みの入力データは辞書バッファ(12)に
    移して新たな符号化済みデータとして次の入力データを
    符号化するデータ圧縮方式に於いて、 代表的なサンプルデータを相異なる部分列に分けたと
    き、所定閾値以上の出現頻度をもつ部分列を抽出し、該
    抽出した部分列を一列に並べて初期値文字列を予め作成
    する初期値作成手段(14)と、 該初期値作成手段(14)で作成した初期値文字列を、
    符号化に先立って最初に前記辞書バッファ(12)に固
    定的に設定して符号化済データと見做し、該初期値文字
    列の中からのみ前記入力バッファ(10)の入力データ
    と最長一致する部分列を検索して格納位置と一致長で指
    定して符号化又は復号化する符号化復号化手段(16)
    と、 を備えたことを特徴とするデータ圧縮方式。
  3. 【請求項3】請求項1,2記載のデータ圧縮方式に於い
    て、前記初期値作成手段(14)は符号化済み文字列を
    参照番号を付して登録する辞書を有し、代表的なサンプ
    ルデータの文字列に最長一致する前記辞書中の符号化済
    み部分列を検索して参照番号で指定して符号化し、該符
    号化後に該参照番号に次のサンプル文字を付加した部分
    列を新たな参照番号を付して前記辞書に登録し、更に辞
    書に登録された符号化済み文字列の検索する毎に使用回
    数を計数し、前記サンプルデータの符号化終了した際に
    前記使用回数が所定閾値以上となる文字列を抽出し、該
    抽出した文字列を出現順に並べて初期値文字列を予め作
    成することを特徴とするデータ圧縮方式。
  4. 【請求項4】請求項1,2記載のデータ圧縮方式に於い
    て、前記初期値作成手段(14)は符号化済み文字列を
    参照番号を付して登録する辞書を有し、代表的なサンプ
    ルデータの文字列に最長一致する前記辞書中の符号化済
    み部分列を検索して参照番号で指定して符号化し、該符
    号化後に符号化した入力文字列の各文字を順次接頭部分
    列とし、該接頭部分列に辞書中の部分列を加えた一定長
    の部分列を複数作成して全て辞書に登録し、更に辞書に
    登録された符号化済み部分列の検索する毎に使用回数を
    計数し、前記サンプルデータの符号化終了した際に前記
    使用回数が所定閾値以上となる部分列を抽出し、該抽出
    した部分列を出現順に並べて初期値文字列を予め作成す
    ることを特徴とするデータ圧縮方式。
  5. 【請求項5】請求項1,2記載のデータ圧縮方式に於い
    て、前記初期値作成手段(14)は入力バッファ中の代
    表的なサンプルデータを辞書バッファ中の符号化済デー
    タの部分列の内、最長一致するものの格納位置と一致長
    で指定して符号化し、該符号化データを相異なる部分列
    に分けたとき、所定閾値以上の出現頻度をもつ部分列を
    抽出し、該抽出した部分列を出現順に並べて初期値文字
    列を予め作成することを特徴とするデータ圧縮方式。
  6. 【請求項6】請求項1,2記載のデータ圧縮方式に於い
    て、前記辞書バッファ(12)を読出専用の第1メモリ
    と、読出及び書込可能な第2メモリで構成し、前記初期
    値作成手段(14)で作成した初期値文字列を前記第1
    メモリに固定行に記憶し、前記入力バッファ(10)の
    符号化済み入力データは第2メモリに移して記憶するこ
    とを特徴とするデータ圧縮方式。
  7. 【請求項7】請求項1,2記載のデータ圧縮方式に於い
    て、前記辞書バッファ(12)を書替え禁止領域を設定
    した読出及び書込可能なメモリで構成し、符号化開始時
    に前記初期値作成手段(14)で作成した初期値文字列
    を前記辞書バッファ(12)の書替え禁止領域にロード
    した後に符号化を開始することを特徴とするデータ圧縮
    方式。
JP04257892A 1992-02-28 1992-02-28 データ圧縮方式 Expired - Fee Related JP3241788B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP04257892A JP3241788B2 (ja) 1992-02-28 1992-02-28 データ圧縮方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP04257892A JP3241788B2 (ja) 1992-02-28 1992-02-28 データ圧縮方式

Publications (2)

Publication Number Publication Date
JPH05241777A JPH05241777A (ja) 1993-09-21
JP3241788B2 true JP3241788B2 (ja) 2001-12-25

Family

ID=12639955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04257892A Expired - Fee Related JP3241788B2 (ja) 1992-02-28 1992-02-28 データ圧縮方式

Country Status (1)

Country Link
JP (1) JP3241788B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233266B2 (en) 2004-12-28 2007-06-19 Casio Electronics Manufacturing Co., Ltd. Data compression/decompression device and data compression/decompression method

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951623A (en) 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US7277585B2 (en) 2001-05-25 2007-10-02 Ricoh Company, Ltd. Image encoding method, image encoding apparatus and storage medium
JP3584032B2 (ja) 2003-02-24 2004-11-04 沖電気工業株式会社 データ圧縮装置及びデータ展開装置
JP4456554B2 (ja) * 2005-10-31 2010-04-28 富士通株式会社 データ圧縮方法及び圧縮データ送信方法
JP4456574B2 (ja) * 2006-03-13 2010-04-28 富士通株式会社 圧縮データ送信方法
JP6065914B2 (ja) 2012-09-21 2017-01-25 富士通株式会社 制御プログラム、制御方法および制御装置
JP6003995B2 (ja) 2012-09-21 2016-10-05 富士通株式会社 圧縮プログラム、圧縮方法及び圧縮装置
WO2014097359A1 (ja) 2012-12-19 2014-06-26 富士通株式会社 圧縮プログラム、圧縮方法、圧縮装置およびシステム
JP6032291B2 (ja) 2012-12-19 2016-11-24 富士通株式会社 圧縮プログラム、圧縮装置、伸張プログラム、伸張装置およびシステム
WO2014147672A1 (ja) 2013-03-22 2014-09-25 富士通株式会社 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム
JP5808361B2 (ja) * 2013-04-08 2015-11-10 日本電信電話株式会社 文字列圧縮及び復元システム並びに方法
JP5808360B2 (ja) * 2013-04-08 2015-11-10 日本電信電話株式会社 文字列圧縮及び復元システム並びに方法
JP6609404B2 (ja) 2014-07-22 2019-11-20 富士通株式会社 圧縮プログラム、圧縮方法および圧縮装置
CN116827351B (zh) * 2023-08-31 2023-11-17 浙江中骏石墨烯科技有限公司 一种石墨烯发热墙面温度智能监测系统
CN118381580A (zh) * 2024-06-21 2024-07-23 辽宁吉左网络科技有限公司 一种机房运维数据管理方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233266B2 (en) 2004-12-28 2007-06-19 Casio Electronics Manufacturing Co., Ltd. Data compression/decompression device and data compression/decompression method

Also Published As

Publication number Publication date
JPH05241777A (ja) 1993-09-21

Similar Documents

Publication Publication Date Title
JP3273119B2 (ja) データ圧縮・伸長装置
JP3241788B2 (ja) データ圧縮方式
JP3231105B2 (ja) データ符号化方式及びデータ復元方式
JP3038223B2 (ja) データ圧縮方式
JP3241787B2 (ja) データ圧縮方式
JP3127016B2 (ja) データ圧縮及び復元方法
JP3105598B2 (ja) ユニバーサル符号を用いたデータ圧縮方式
Ghuge Map and Trie based Compression Algorithm for Data Transmission
JPH05152971A (ja) データ圧縮・復元方法
JPH05241775A (ja) データ圧縮方式
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3012677B2 (ja) Zl符号化方法
JP3199292B2 (ja) ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
JP3038233B2 (ja) データ圧縮及び復元装置
JP3051501B2 (ja) データ圧縮方法
JP3078601B2 (ja) データ圧縮方法
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JP3100206B2 (ja) データ圧縮方法
JPH06168097A (ja) データ符号化方式及びデータ復元方式
JP3088740B2 (ja) データ圧縮及び復元方式
JPH06161705A (ja) データ符号化方式及びデータ復元方式
JP3083329B2 (ja) データ圧縮復元方式
JP2825960B2 (ja) データ圧縮方法及び復元方法
Kumar A plain-text compression technique with fast lookup ability
JP3058711B2 (ja) データ圧縮及び復元方法

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: 20010911

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

Free format text: PAYMENT UNTIL: 20071019

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20081019

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20081019

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20091019

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20091019

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20101019

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees