JPH06202844A - データ圧縮復元処理装置 - Google Patents

データ圧縮復元処理装置

Info

Publication number
JPH06202844A
JPH06202844A JP5000138A JP13893A JPH06202844A JP H06202844 A JPH06202844 A JP H06202844A JP 5000138 A JP5000138 A JP 5000138A JP 13893 A JP13893 A JP 13893A JP H06202844 A JPH06202844 A JP H06202844A
Authority
JP
Japan
Prior art keywords
dictionary
block
statistic
dictionaries
character string
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.)
Pending
Application number
JP5000138A
Other languages
English (en)
Inventor
Shigeru Yoshida
茂 吉田
Yoshiyuki Okada
佳之 岡田
Yasuhiko Nakano
泰彦 中野
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 JP5000138A priority Critical patent/JPH06202844A/ja
Publication of JPH06202844A publication Critical patent/JPH06202844A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

(57)【要約】 【目的】 データの圧縮/復元処理に関し、異なる種類
の部分列群が繰り返し現れる場合等にも、適当な圧縮率
を容易に維持できる、LZW 符号等のデータ圧縮復元処理
装置を目的とする。 【構成】 複数の該辞書20と、辞書選択部21と、符号化
部22とを有し、各辞書20は、所定の辞書番号で識別さ
れ、辞書別統計量を有し、辞書選択部21は、該入力文字
列を順次所定長のブロックに分割して入力し、入力順に
各該ブロックについて、所定の統計量を採取し、該統計
量と各辞書20の該辞書別統計量との所定の差異値を求め
て、最小の該差異値に対応する辞書20の一つを選定し、
符号化部21は、各該ブロックについて、当該ブロックに
ついて辞書選択部20が選定した辞書を使用して、該符号
化処理を実行し、使用した辞書20の該辞書番号を示す符
号と、該符号化処理の結果とを、当該ブロックの符号化
データとして出力するように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データの記憶容量を縮
減する等のためにデータを圧縮し、又圧縮したデータを
元の状態に復元するためのデータ圧縮復元処理装置に関
する。
【0002】
【従来の技術】公知のように、多様な各種のデータを、
一様な処理方式で圧縮し、復元するものとして、ユニバ
ーサル符号化と呼ばれる方式が考えられている。
【0003】ユニバーサル符号化の代表的な方式とし
て、ジブ−レンペル(Ziv-Lempel)符号が知られている
(例えば宗像:「Ziv-Lempelのデータ圧縮法」,情報処
理,Vol.26,No.1,1985 参照) 。
【0004】Ziv-Lempel符号の符号/復号化アルゴリズ
ムには、ユニットバーサル型と増分分解(Incremental p
arsing) 型があり、さらにそれぞれを改良したアルゴリ
ズムがある。
【0005】例えば増分分解型の改良であるLZW(Lempel
-Ziv-Welch)符号(T.A.Welch,"A Technique for High-Pe
rformance Data Compression",Computer,June 1984参
照) は、次に説明するようにして符号/復号化を行うも
のである。
【0006】なお、以下においてデータの最小単位を文
字、任意の文字の並びを文字列と言い、従ってデータは
文字列からなるものとして述べるが、文字とは日本語文
字、英語のアルファベット等の日常のいわゆる文字 (を
表すコード) であってもよいし、又いわゆるバイナリデ
ータを構成する0と1等であってもよい。
【0007】図6はLZW 符号の符号化処理の流れの一例
を示す図であり、処理ステップ1で、符号化対象の入力
文字列について、未処理の文字列の先頭の文字位置を指
示するカーソルを入力文字列の先頭を指示するように1
に初期設定する。
【0008】符号化/復号化のために、1文字又は複数
文字からなる文字列(以下において部分列)を登録した
辞書を設けるものとし、処理ステップ2で初期状態とし
て、辞書Dに使用する文字のアルファベットに属するす
べての単一文字を登録し、各々に1からAまでの番号を
つける。ここでAはアルファベットの大きさである。
又、辞書へ登録した部分列の個数nの値をAとする。
【0009】以上の初期設定の後、入力文字列の符号化
を開始するものとし、処理ステップ3で、入力文字列の
カーソルの位置から始まる文字列と一致する、辞書中の
部分列で、最も長い部分列を検索する(最初の辞書は単
一文字のみであるが、後述のようにして、辞書には順次
長い部分列が追加登録される)。この条件の部分列を部
分列Sとする。
【0010】処理ステップ4で部分列Sの番号を、[log
2n]ビットの2進数で表すことにより符号化し、これを
入力文字列の部分列Sと一致した部分の符号化結果とし
て出力する。なお、[X]はX以上の大きさで最小の整数
値を示すものとする。
【0011】次に辞書の更新処理に入り、先ず処理ステ
ップ5で、カーソルを部分列Sと一致した部分の次の文
字位置 (次の符号化対象部分の先頭) に移動し、後で参
照するために、この移動したカーソルの指す位置の文字
を変数Cに入れておく。
【0012】処理ステップ6で識別して入力文字列の最
後まで処理を終わってなければ、処理ステップ7でnが
定数NMAXより小さいか識別し、小さければ処理ステップ
8で、登録部分列数nを+1し、部分列SにCをつない
だ部分列SCを新たに作り、新しいnの値を部分列SC
の番号として、部分列SCを辞書に追加登録した後、処
理ステップ3に戻って次の文字列の処理に入る。
【0013】定数NMAXは辞書に登録可能な部分列の最大
個数として、辞書の容量から定められる。従って、処理
ステップ7でnが定数NMAXより小さくない(即ち前記の
処理でnがNMAXに達している)場合には、更に部分列を
追加することはできないので、処理ステップ9で圧縮率
が悪化しているか識別し、圧縮率が悪化していなけれ
ば、そのままの状態で辞書を使用しつづけてもよいもの
として、処理ステップ3に戻る。
【0014】又、圧縮率が悪化していれば、辞書を初期
状態から作りなおす必要があるものとして、処理ステッ
プ10で予め定める辞書初期化符号を[log2n]ビットの2
進数符号で出力した後、処理ステップ2に戻り、辞書を
初期化して、残りの文字列を処理する。
【0015】圧縮率の悪化の判定は、例えば入力文字列
の符号化済の最後の文字までの、例えば256文字のブロ
ックと、更にその直前の256文字ブロックとの各符号化
出力の長さを比較し、後の方が長ければ圧縮率が悪化し
たと判定する。
【0016】図7は、以上の符号化出力を入力として、
もとの文字列を復元する復号化処理の流れの一例を示す
図であり、先ず処理ステップ11で復元文字列の次に復号
する部分列をつなぐ先頭文字位置を示すカーソルを1に
初期設定する。
【0017】復号化においても前記と同一構成の辞書を
使用し、処理ステップ12で辞書を前記処理ステップ2と
同様の初期化処理により、全単一文字を登録し、登録部
分列数nをAとする。
【0018】処理ステップ13で、符号化出力の先頭から
[log2n]ビットを符号として取り出し、処理ステップ14
でそれが前記の辞書初期化符号化か識別し、辞書初期化
符号であれば、処理ステップ12に戻る。
【0019】辞書初期化符号でなければ、処理ステップ
15でその符号を辞書に登録した部分列の番号として、辞
書から該当の部分列Sを取り出し、Sをカーソルの位置
から並べて復元文字列を構成していく。
【0020】処理ステップ16でカーソルの位置の文字
(最後に復元した部分列の先頭の文字)を変数Cに入れ
ておき、カーソルをSの直後に進める。処理ステップ17
で識別して符号化出力の最後まで処理を終わっていなけ
れば、処理ステップ18でnが前記と同一の定数NMAXより
小さいか識別し、小さければ処理ステップ19で、直前に
復号した部分列S'が空でなければ、その部分列S'にCを
つないだ部分列S'Cを作り、そのときのnの値を部分列
S'Cの番号として、部分列S'Cを辞書に追加登録する。
【0021】その後現に復号したSを新たなS'として記
憶し、又登録部分列数nを+1して、処理ステップ13に
戻り、次の符号の処理に入る。nが定数NMAXより小さく
ない場合には、処理ステップ18から直ちに処理ステップ
13に戻る。
【0022】
【発明が解決しようとする課題】LZW 符号等の符号化処
理では、前記のように辞書を入力文字列に含まれる部分
列に対応するように登録内容の学習が行われることによ
り、圧縮率が高められることを期待し、入力文字列に出
現する部分列群が変化すれば、辞書の容量を越えること
により、辞書を初期化して再学習することにより部分列
群の変化に対応することができる。
【0023】しかしこのために、異なる種類の部分列群
が繰り返し現れる場合等には、両者において十分に圧縮
率を高められないような状況が起こり易い。本発明は、
異なる種類の部分列群が繰り返し現れる場合等にも、適
当な圧縮率を容易に維持できる、LZW 符号等のデータ圧
縮復元処理装置を目的とする。
【0024】
【課題を解決するための手段】図1は、本発明の構成を
示すブロック図である。図はデータ圧縮復元処理装置の
構成であって、文字列を構成する、1以上の文字からな
る部分列を、各該部分列を識別する番号を付して保持す
る辞書を設け、所与の入力文字列を先頭から順次、最長
の一致する該部分列を示す番号に置換する符号化処理に
よって、該入力文字列の圧縮を行い、又圧縮出力された
符号化データを、該符号化データを構成する前記番号
を、前記辞書の対応する前記部分列に置換する復元処理
によって、前記文字列に復元する装置である。
【0025】図1(a)に示す第1の発明では、装置は複
数の該辞書20と、辞書選択部21と、符号化部22とを有す
る。各辞書20は、所定の辞書番号で識別され、辞書別統
計量を有する。
【0026】辞書選択部21は、該入力文字列を順次所定
長のブロックに分割して入力し、入力順に各該ブロック
について、所定の統計量を採取し、該統計量と各辞書20
の該辞書別統計量との所定の差異値を求めて、最小の該
差異値に対応する辞書20の一つを選定する。
【0027】符号化部21は、各該ブロックについて、当
該ブロックについて辞書選択部20が選定した辞書を使用
して、該符号化処理を実行し、使用した辞書20の該辞書
番号を示す符号と、該符号化処理の結果とを、当該ブロ
ックの符号化データとして出力する。
【0028】図1(b)に示す第2の発明は、前記第1の
発明の装置による符号化データを復元する装置であり、
復号化部23と、第1の発明と同じ複数の辞書20とを有す
る。復号化部23は、前記所定長のブロックに復元する処
理ごとに、該ブロックの該符号化データの所定位置の符
号から前記辞書番号を識別して、該辞書番号によって定
まる辞書20を使用して、当該ブロックへの該復元処理を
行う。
【0029】図1(c)に示す第3の発明では、装置は複
数の辞書24と、辞書選択部25と、符号化部26とを有す
る。各辞書24は、所定の辞書番号で識別され、辞書別統
計量を有する。
【0030】辞書選択部25は、該入力文字列を順次所定
長のブロックに分割して入力し、最初の該ブロックのた
めに特定の該辞書を選定し、入力順に各該ブロックにつ
いて、所定の統計量を採取し、該統計量と各辞書24の該
辞書別統計量との所定の差異値を求めて、最小の該差異
値に対応する該辞書の一つを、直後の該ブロックのため
の辞書として選定する。
【0031】符号化部26は、各該ブロックについて、当
該ブロックの直前のブロックについて辞書選択部25が選
定した辞書を使用して、該符号化処理を実行し、該符号
化処理の結果を当該ブロックの符号化データとして出力
する。
【0032】図1(d)に示す第4の発明は、前記第3の
発明の装置による符号化データを復元する装置であり、
復号化部27と、辞書選択部28と、第3の発明と同じ複数
の辞書24とを有する。
【0033】復号化部27は、前記所定長のブロックを復
元するとき、最初の該ブロックについては前記所定の辞
書番号の辞書24を使用し、第2以後の該ブロックについ
は直前の該ブロックについて辞書選択部28が選定した辞
書を使用して、当該ブロックの該復元処理を実行する。
【0034】辞書選択部28は、復号化部27が復元した該
ブロックについて、所定の統計量を採取し、該統計量と
各該辞書の前記辞書別統計量との所定の差異値を求め
て、最小の該差異値に対応する辞書24の一つを選定す
る。
【0035】第5の発明では、前記第1、第3又は第4
の発明において、各辞書20、24は、所定の部分列群から
なる初期内容を有し、符号化部22、26又は復号化部27
は、辞書20、24を使用して、前記符号化処理で1の前記
最長一致部分列を決定し、又は前記復元処理で1の番号
に対応して該部分列を決定するごとに、所定の処理で生
成する該部分列を当該辞書に追加する。
【0036】辞書選択部25、28は、使用した該辞書に対
応する前記差異値のすべてが、所定の閾値を越えている
場合に、未使用の該辞書の一つを選定する。第6の発明
では、前記第1、第3、第4又は第5の発明において、
前記統計量に前記ブロック内の文字の出現頻度分布を用
いる。
【0037】第7の発明では、前記第6の発明におい
て、前記差異値に、前記辞書別統計量である辞書別出現
頻度分布と、前記ブロックについて求める前記出現頻度
分布との、対応する文字の出現頻度の差の2乗の、全文
字についての総和を用いる。
【0038】第8の発明では、前記第1又は第3〜第7
の発明において、前記辞書20、24の辞書別統計量を、各
当該辞書について、前記選定に使用した前記ブロックに
ついて求めた前記統計量の所定の関数とする。
【0039】
【作用】本発明のデータ圧縮復元処理装置により、複数
の辞書が設けられ、符号化において入力文字列を分割し
たブロックごとに、各ブロックを構成する部分列群を表
す指標として、そのいブロックの適当な統計量、例えば
文字の出現頻度分布を用い、統計量の類似するブロック
が同じ辞書を使用するように制御する。
【0040】従って、異なる種類のブロックが交互に出
現しても、各種の辞書には多種のブロックに影響される
こと無く、統計量で分類される同種ブロック群に有効な
部分列が集積され、各種ごとに高い圧縮率を維持するこ
とができる。
【0041】
【実施例】本実施例では前記LZW 符号を使用するものと
して説明する。図2は、第1の発明の処理の流れの一例
を示す図であり、図1(a)の辞書選択部21は、先ず図2
の処理ステップ30で初期設定処理として、各辞書Dk(k=
1,2,..,N)に前記従来のようにA個の異なる単一文字を
部分列として登録し、各辞書の登録部分列数nk=Aとし、
使用辞書個数を示す変数KMを0に初期設定する。
【0042】処理ステップ31で、各ブロックごとの初期
処理として、一定長の1ブロック分の入力文字列を入力
し、各文字種ごとの出現数カウンタciをすべて0にす
る。処理ステップ32で、入力ブロックの文字出現回数を
各出現数カウンタc1〜cAに計数する。
【0043】処理ステップ33で、使用した各辞書20につ
いて各差異値ykを求める。差異値は例えば yk=Σ(cki-c
i)2として求めるものとし、ckiは各辞書Dkの辞書別統計
量のi番の文字に関する値を示し、後述のようにして設
定及び更新される値である。
【0044】即ち、各文字についての辞書別統計量と出
現数カウンタciとの差の2乗を全文字について求めて、
それらの総和を取る。この計算を辞書D1〜DKM について
それぞれ計算する。その結果のy1〜yKMの最小の値をy
min とし、yminに対応する辞書のうち例えば最も若い辞
書番号をpとする。
【0045】なお、以上から明らかなように、最初はKM
=0に設定されているので、以上の処理は行われない。処
理ステップ34で、Tを閾値として、KM=0であるか、又は
KM<N且つymin>Tであれば処理ステップ35に進み、KMを+
1し、p=KMとする。即ち、最初であればここで1番の辞
書を使用することが決まり、既に何れかの辞書を使用し
ていた場合で、差異値がある閾値より大きく且つ未使用
の辞書がある場合には、新しい辞書が割り当てられる。
【0046】そこで、処理ステップ36で、割り当てられ
た辞書Dpの辞書別統計量の各文字の値cpi=ciとし、この
辞書の使用回数を示す変数mpを1にする。処理ステップ
34で、KM<Nでないか、ymin>Tでない場合には、処理ステ
ップ37で、今割り当てられ、他のブロックのために既に
使用されたことのある辞書Dpの辞書別統計量を、例えば
cpi=(mpcpi+ci)/(mp+1)によって更新し、次にmp を+1
しておく。
【0047】辞書選択部21が以上の処理を終わると、符
号化部22が処理ステップ38で、辞書番号pを、[log2KM]
ビットの符号にして出力し、以後処理ステップ39以下で
辞書Dpを使用して、入力ブロックの符号化を行う。
【0048】先ず処理ステップ39で入力ブロックの未処
理の文字列の先頭の文字位置を指示するカーソルを、入
力ブロックの先頭を指示するように1に設定し、以下前
記従来のLZW符号化と同様の処理に入る。
【0049】即ち、処理ステップ40で、入力ブロックの
カーソルの位置から始まる文字列と一致する辞書中の部
分列で、最も長い部分列を検索する。この条件の部分列
を部分列Sとする。
【0050】処理ステップ41で部分列Sの番号を、[log
2np]ビットの符号にして出力する。処理ステップ42で、
カーソルを部分列Sと一致した部分の次の文字位置に移
動し、後で参照するために、この移動したカーソルの指
す位置の文字を変数Cに入れておく。
【0051】処理ステップ43でnpが定数NMAXより小さい
か識別し、小さければ処理ステップ44で、登録部分列数
npを+1し、部分列SにCをつないだ部分列SCを新た
に作り、新しいnpの値を部分列SCの番号として、部分
列SCを辞書Dpに追加登録する。
【0052】定数NMAXは、前記と同様に辞書に登録可能
な部分列の最大個数であり、従って処理ステップ43でnp
が定数NMAXより小さくない場合には、追加登録を行わな
いが、本発明では辞書をブロックに合わせて複数設けて
いるので、前記従来のように辞書を再初期化することは
しない。
【0053】処理ステップ45で識別して、入力ブロック
に未処理の文字列があれば、処理ステップ40に戻って後
の文字列について以上の符号化処理を繰り返し、ブロッ
クの末尾まで処理を終われば、処理ステップ46で後続の
入力ブロックがあるか識別し、入力ブロックがあれば処
理ステップ31に戻る。
【0054】図8は、前記の差異値の計算による、文字
出現頻度分布と辞書別統計量との比較を説明する図であ
り、前記では図の縦線部分の2乗和を差異値とし、これ
はA次元空間の辞書別統計量に対応する点とブロックの
統計量に対応する点との距離の2乗を求めているもので
ある。しかし、差異値としては、縦線部分の絶対値の和
等を用いることもできる。
【0055】又、前記例では辞書別統計量として、処理
ステップ36及び37の説明から明らかなように、その辞書
を使用したブロックの統計量の平均を設定することとし
ている。しかし、各辞書にそれぞれ異なる代表的統計量
を予め設定しておいたり、又は各辞書を最後に使用した
ブロックの統計量を設定したりすることもできる。
【0056】図3は、第2の発明の処理の流れの一例を
示す図であり、前記図2によって説明した符号化処理に
より出力された符号化データを復元する処理を示す。図
1(b)の復号化部23は、図3の処理ステップ50で初期設
定処理として、各辞書Dkに前記と同様にA個の異なる単
一文字を部分列として登録し、各辞書の登録部分列数nk
=Aとし、使用辞書個数を示す変数KMを1に初期設定す
る。
【0057】処理ステップ51で、ブロックの符号化デー
タの先頭を[log2KM]ビットの辞書番号符号として処理
し、使用する辞書20の番号pを決定する。処理ステップ
52でカーソルを1にし、処理ステップ53で入力符号化デ
ータの次の[log2np]ビットを部分列の番号の符号として
取り出す。
【0058】処理ステップ54で、取り出した番号の部分
列を辞書Dpから部分列Sとして読み出し、カーソルの位
置から並べて復元文字列を構成していく。処理ステップ
55で、カーソルの位置の文を変数Cに入れておき、カー
ソルをSの直後に進める。
【0059】処理ステップ56でnpが定数NMAXより小さい
か識別し、小さければ処理ステップ57で、直前に復号し
た部分列S'が空でなければ、その部分列S'にCをつない
だ部分列S'Cを作り、そのときのnの値を部分列S'Cの
番号として、部分列S'Cを辞書に追加登録し、その後現
に復号したSを新たなS'として記憶し、又登録部分列数
npを+1する。
【0060】処理ステップ58で、復元文字列の長さによ
り1ブロックの処理を終わったか識別し、残りがあれば
処理ステップ53に戻り、次の符号の処理に入る。1ブロ
ックの復元処理を終われば、処理ステップ59で後続の符
号化データがあるか識別し、符号化データがあれば処理
ステップ51に戻る。
【0061】図4は、第3の発明の処理の流れの一例を
示す図であり、図1(c)の辞書選択部25は、先ず図4の
処理ステップ60で初期設定処理として、各辞書Dkに前記
と同様にA個の異なる単一文字を部分列として登録し、
各辞書の登録部分列数nk=Aとする。
【0062】又、使用辞書個数を示す変数KMを1に、使
用辞書番号pを1に、辞書D1の辞書使用回数m1を1に初
期設定して、符号化部26に制御を渡す。符号化部26は、
辞書Dpを使用して、入力ブロックの符号化を行うものと
し、先ず処理ステップ61で、一定長の1ブロック分の入
力文字列を入力し、各文字種ごとの出現数カウンタci
すべて0にし、入力ブロックの未処理の文字列の先頭の
文字位置を指示するカーソルを1に設定する。
【0063】処理ステップ62で、入力ブロックのカーソ
ルの位置から始まる文字列と一致する辞書中の部分列
で、最も長い部分列を検索する。この条件の部分列を部
分列Sとし、処理ステップ63で部分列Sの番号を、[log
2np]ビットの符号にして出力する。
【0064】処理ステップ64で、部分列Sの中の各文字
の出現回数を出現数カウンタciに計数する。この計数結
果は後述のように辞書選択部25が使用する。処理ステッ
プ65で、カーソルを部分列Sと一致した部分の次の文字
位置に移動し、移動先のカーソルの指す位置の文字を変
数Cに複写しておく。
【0065】処理ステップ66でnpが定数NMAXより小さい
か識別し、小さければ処理ステップ67で、登録部分列数
npを+1し、部分列SCを新たに作り、新しいnpの値を
部分列SCの番号として、部分列SCを辞書Dpに追加登
録する。
【0066】処理ステップ68で識別して、入力ブロック
に未処理の文字列があれば、処理ステップ62に戻って後
の文字列について以上の符号化処理を繰り返し、ブロッ
クの末尾まで処理を終われば、処理ステップ69で後続の
入力ブロックがあるか識別し、後続ブロックが無ければ
処理を終わる。
【0067】後続ブロックがあれば、前記で処理したブ
ロックについて、前記のように出現数カウンタc1〜cA
計数した文字の出現頻度分布を使用して、辞書選択部25
が以下のようにして、次入力ブロックで使用する辞書24
を決定する。
【0068】辞書選択部25は、処理ステップ70で、使用
した各辞書24について各差異値ykを、例えば前記図2の
説明と同様に求め、その結果のy1〜yKMの最小の値をy
min とし、yminに対応する辞書のうち例えば最も若い辞
書番号をpとする。
【0069】処理ステップ71で、Tを閾値として識別し
て、KM<N且つymin>Tであれば処理ステップ72に進み、KM
を+1し、p=KMとする。即ち、差異値がある閾値より大
きく且つ未使用の辞書がある場合には、新しい辞書が割
り当てられる。
【0070】処理ステップ73で、割り当てられた辞書Dp
の辞書別統計量を各文字の値cpi=ciとして設定し、この
辞書の使用回数を示す変数mpを1にする。処理ステップ
71で、KM<Nでないか、ymin>Tでない場合には、処理ステ
ップ74で、今割り当てられ、他のブロックのために既に
使用されたことのある辞書Dpの辞書別統計量を、図2の
説明と同様の計算で更新し、次にmp を+1しておく。
【0071】辞書選択部25が以上の処理を終わると処理
ステップ61に戻り、符号化部26が次のブロックの処理
を、新たに指定された辞書24を使用して開始する。図5
は、第4の発明の処理の流れの一例を示す図であり、前
記図4によって説明した符号化処理により出力された符
号化データを復元する処理を示す。
【0072】図1(d)の辞書選択部28は、図5の処理ス
テップ80で初期設定処理として、各辞書Dkに前記と同様
にA個の異なる単一文字を部分列として登録し、各辞書
の登録部分列数nk=Aとし、使用辞書個数を示す変数KMを
1に初期設定する。
【0073】復元処理部27は、処理ステップ81で出現数
カウンタciをすべて0にし、入力ブロックの未処理の文
字列の先頭の文字位置を指示するカーソルを1に設定す
る。処理ステップ82で入力符号化データの次の[log2np]
ビットを部分列の番号の符号として取り出す。
【0074】処理ステップ83で、取り出した番号の部分
列を辞書Dpから部分列Sとして読み出し、カーソルの位
置から並べて復元文字列を構成していく。処理ステップ
84で、部分列Sの中の各文字の出現回数を出現数カウン
タciに計数する。
【0075】処理ステップ85で、カーソルの位置の文を
変数Cに入れておき、カーソルをSの直後に進める。処
理ステップ86でnpが定数NMAXより小さいか識別し、小さ
ければ処理ステップ87で、直前に復号した部分列S'が空
でなければ、その部分列S'にCをつないだ部分列S'Cを
作り、そのときのnの値を部分列S'Cの番号として、部
分列S'Cを辞書に追加登録し、その後現に復号したSを
新たなS'として記憶し、又登録部分列数npを+1する。
【0076】処理ステップ88で、復元文字列の長さによ
り1ブロックの処理を終わったか識別し、残りがあれば
処理ステップ82に戻り、次の符号の処理に入る。1ブロ
ックの復元処理を終われば、処理ステップ89で後続の符
号化データがあるか識別し、符号化データが無ければ処
理を終了する。
【0077】後続の符号化データがあれば、辞書選択部
28が処理ステップ90〜94で、前記図4の符号化処理にお
いて、辞書選択部25が処理ステップ70〜74により行った
と同様の処理により、次のブロック復元に使用する辞書
24を選定して、処理ステップ81に戻り、復号化部27が指
定の辞書を使用して次のブロックの復元処理を開始す
る。
【0078】以上の実施例の説明では、ブロック長を符
号化/復号化側で既知の一定長としたが、ブロック長を
可変長することもできる。ブロックを可変長にする場合
には、前記のように辞書別統計量をブロックの統計量と
比較する場合に、例えば標準データ長をLd、ブロックの
データ長をLcとした場合に、各出現数カウンタの計数値
ciを、cdi=ci×Ld/Lcとして正規化した後に比較すれば
よい。
【0079】又、この場合に符号化側でブロック長を随
時変更できるようにした場合には、例えば各ブロックの
符号化データごとに、そのブロックの長さを適当に符号
化した長さ符号を先行させるようにする。
【0080】
【発明の効果】以上の説明から明らかなように本発明に
よれば、LZW 符号等によるデータの圧縮/復元処理に関
し、異なる種類の部分列群が繰り返し現れる場合等に
も、適当な圧縮率を容易に維持できるという著しい工業
的効果がある。
【図面の簡単な説明】
【図1】 本発明の構成を示すブロック図
【図2】 本発明の第1の実施例の処理の流れ図
【図3】 本発明の第2の実施例の処理の流れ図
【図4】 本発明の第3の実施例の処理の流れ図
【図5】 本発明の第4の実施例の処理の流れ図
【図6】 LZW符号化処理の流れ図
【図7】 LZW復号化処理の流れ図
【図8】 文字出現頻度分布を説明する図
【符号の説明】
1〜19、30〜46、50〜59、60〜74、80〜94 処理ステッ
プ 20、24 辞書 21、25、28 辞書選択部 22、26 符号化部 23、27 復号化部

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 文字列を構成する、1以上の文字からな
    る部分列を、各該部分列を識別する番号を付して保持す
    る辞書を設け、所与の入力文字列を先頭から順次、最長
    の一致する該部分列を示す番号に置換する符号化処理に
    よって、該入力文字列の圧縮を行う装置であって、 複数の該辞書(20)と、辞書選択部(21)と、符号化部(22)
    とを有し、 各該辞書(20)は、所定の辞書番号で識別され、辞書別統
    計量を有し、 該辞書選択部(21)は、該入力文字列を順次所定長のブロ
    ックに分割して入力し、入力順に各該ブロックについ
    て、所定の統計量を採取し、該統計量と各該辞書(20)の
    該辞書別統計量との所定の差異値を求めて、最小の該差
    異値に対応する該辞書の一つを選定し、 該符号化部(22)は、各該ブロックについて、当該ブロッ
    クについて該辞書選択部(21)が選定した辞書(20)を使用
    して、該符号化処理を実行し、使用した該辞書の該辞書
    番号を示す符号と、該符号化処理の結果とを、当該ブロ
    ックの符号化データとして出力するように構成されてい
    ることを特徴とするデータ圧縮復元処理装置。
  2. 【請求項2】 請求項1記載のデータ圧縮復元処理装置
    によって出力された符号化データを、該符号化データを
    構成する前記番号を、前記辞書の対応する前記部分列に
    置換する復元処理によって、前記文字列に復元する装置
    であって、 復号化部(23)と、複数の辞書(20)とを有し、 該復号化部(23)は、前記所定長のブロックに復元する処
    理ごとに、該ブロックの該符号化データの所定位置の符
    号から前記辞書番号を識別して、該辞書番号によって定
    まる該辞書(20)を使用して、当該ブロックへの該復元処
    理を行うように構成されていることを特徴とするデータ
    圧縮復元処理装置。
  3. 【請求項3】 文字列を構成する、1以上の文字からな
    る部分列を、各該部分列を識別する番号を付して保持す
    る辞書を設け、所与の入力文字列を先頭から順次、最長
    の一致する該部分列を示す番号に置換する符号化処理に
    よって、該入力文字列の圧縮を行う装置であって、 複数の該辞書(24)と、辞書選択部(25)と、符号化部(26)
    とを有し、 各該辞書(24)は、所定の辞書番号で識別され、辞書別統
    計量を有し、 該辞書選択部(25)は、該入力文字列を順次所定長のブロ
    ックに分割して入力し、最初の該ブロックのために特定
    の該辞書を選定し、入力順に各該ブロックについて、所
    定の統計量を採取し、該統計量と各該辞書の該辞書別統
    計量との所定の差異値を求めて、最小の該差異値に対応
    する該辞書の一つを、直後の該ブロックのための辞書と
    して選定し、 該符号化部(26)は、各該ブロックについて、当該ブロッ
    クについて該辞書選択部(25)が選定した辞書(24)を使用
    して、該符号化処理を実行し、該符号化処理の結果を当
    該ブロックの符号化データとして出力するように構成さ
    れていることを特徴とするデータ圧縮復元処理装置。
  4. 【請求項4】 請求項3記載のデータ圧縮復元処理装置
    によって出力された符号化データを、該符号化データを
    構成する前記番号を、前記辞書の対応する前記部分列に
    置換する復元処理によって、前記文字列に復元する装置
    であって、 復号化部(27)と、辞書選択部(28)と、複数の辞書(24)と
    を有し、 該復号化部(27)は、前記所定長のブロックを復元すると
    き、最初の該ブロックについては前記特定の辞書番号の
    該辞書(24)を使用し、第2以後の該ブロックについは直
    前の該ブロックについて該辞書選択部(28)が選定した辞
    書を使用して、当該ブロックの該復元処理を実行し、 該辞書選択部(28)は、該復号化部(27)が復元した該ブロ
    ックについて、所定の統計量を採取し、該統計量と各該
    辞書の前記辞書別統計量との所定の差異値を求めて、最
    小の該差異値に対応する該辞書の一つを選定するように
    構成されていることを特徴とするデータ圧縮復元処理装
    置。
  5. 【請求項5】 各前記辞書(20、24) は、所定の部分列群
    からなる初期内容を有し、 前記符号化部(22、26) 又は前記復号化部(27)は、該辞書
    を使用して、前記符号化処理で1の前記最長一致部分列
    を決定し、又は前記復元処理で1の番号に対応して該部
    分列を決定するごとに、所定の処理で生成する該部分列
    を当該辞書に追加し、 前記辞書選択部(21、25、28)は、使用した該辞書に対応す
    る前記差異値のすべてが、所定の閾値を越えている場合
    に、未使用の該辞書の一つを選定する、請求項1、請求
    項3記載又は請求項4記載のデータ圧縮復元処理装置。
  6. 【請求項6】 前記統計量は前記ブロック内の文字の出
    現頻度分布である、請求項1、請求項3、請求項4又は
    請求項5記載のデータ圧縮復元処理装置。
  7. 【請求項7】 前記差異値は、前記辞書別統計量である
    辞書別出現頻度分布と、前記ブロックについて求める前
    記出現頻度分布との、対応する文字の出現頻度の差の2
    乗の、全文字についての総和である、請求項6記載のデ
    ータ圧縮復元処理装置。
  8. 【請求項8】 前記辞書(20、24) の辞書別統計量は、各
    当該辞書について、前記選定に使用した前記ブロックに
    ついて求めた前記統計量の所定の関数である、請求項
    1、請求項3、請求項4、請求項5、請求項6又は請求
    項7記載のデータ圧縮復元処理装置。
JP5000138A 1993-01-05 1993-01-05 データ圧縮復元処理装置 Pending JPH06202844A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5000138A JPH06202844A (ja) 1993-01-05 1993-01-05 データ圧縮復元処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5000138A JPH06202844A (ja) 1993-01-05 1993-01-05 データ圧縮復元処理装置

Publications (1)

Publication Number Publication Date
JPH06202844A true JPH06202844A (ja) 1994-07-22

Family

ID=11465672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5000138A Pending JPH06202844A (ja) 1993-01-05 1993-01-05 データ圧縮復元処理装置

Country Status (1)

Country Link
JP (1) JPH06202844A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529912B2 (en) 1997-12-03 2003-03-04 Fujitsu Limited Data compressing apparatus and a data decompressing apparatus, a data compressing method and a data decompressing method, and a data compressing or decompressing dictionary creating apparatus and a computer readable recording medium storing a data compressing program or a data decompressing program
JP2014204358A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 文字列圧縮における階層型サンプル文字列辞書作成方法及び装置
JP2014204357A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 サンプル文字列辞書作成方法及び装置
WO2018159167A1 (ja) * 2017-03-03 2018-09-07 富士通株式会社 情報処理装置,情報処理プログラムおよび情報処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529912B2 (en) 1997-12-03 2003-03-04 Fujitsu Limited Data compressing apparatus and a data decompressing apparatus, a data compressing method and a data decompressing method, and a data compressing or decompressing dictionary creating apparatus and a computer readable recording medium storing a data compressing program or a data decompressing program
JP2014204358A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 文字列圧縮における階層型サンプル文字列辞書作成方法及び装置
JP2014204357A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 サンプル文字列辞書作成方法及び装置
WO2018159167A1 (ja) * 2017-03-03 2018-09-07 富士通株式会社 情報処理装置,情報処理プログラムおよび情報処理方法
JP2018147143A (ja) * 2017-03-03 2018-09-20 富士通株式会社 情報処理装置,情報処理プログラムおよび情報処理方法

Similar Documents

Publication Publication Date Title
EP0695040B1 (en) Data compressing method and data decompressing method
US7365658B2 (en) Method and apparatus for lossless run-length data encoding
JP3273119B2 (ja) データ圧縮・伸長装置
JP3258552B2 (ja) データ圧縮装置及びデータ復元装置
US6128412A (en) Statistical data compression/decompression method
JPH08293800A (ja) データ圧縮方法及びデータ圧縮装置、並びにデータ復元方法及びデータ復元装置
JP3241788B2 (ja) データ圧縮方式
JPH08167852A (ja) データ圧縮方法及び装置
KR101023536B1 (ko) 데이터 무손실 압축 방법
JPH06168096A (ja) データ符号化方式及びデータ復元方式
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
JPH06202844A (ja) データ圧縮復元処理装置
GB2310345A (en) Data coder/decoder for compression
JP3241787B2 (ja) データ圧縮方式
Ghuge Map and Trie based Compression Algorithm for Data Transmission
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JPH05241775A (ja) データ圧縮方式
JP3130324B2 (ja) データ圧縮方式
Hoang et al. Dictionary selection using partial matching
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JPH05152971A (ja) データ圧縮・復元方法
JPH0527943A (ja) データ圧縮方式
JP3100206B2 (ja) データ圧縮方法
JP3088740B2 (ja) データ圧縮及び復元方式
JPH04280517A (ja) データ圧縮および復元方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20030415