JPH0628149A - 複数種類データのデータ圧縮方法 - Google Patents

複数種類データのデータ圧縮方法

Info

Publication number
JPH0628149A
JPH0628149A JP18328892A JP18328892A JPH0628149A JP H0628149 A JPH0628149 A JP H0628149A JP 18328892 A JP18328892 A JP 18328892A JP 18328892 A JP18328892 A JP 18328892A JP H0628149 A JPH0628149 A JP H0628149A
Authority
JP
Japan
Prior art keywords
data
dictionary
group
character string
substring
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
JP18328892A
Other languages
English (en)
Inventor
Shigeru Yoshida
茂 吉田
Yoshiyuki Okada
佳之 岡田
Yasuhiko Nakano
泰彦 中野
Hirotaka Chiba
広隆 千葉
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 JP18328892A priority Critical patent/JPH0628149A/ja
Publication of JPH0628149A publication Critical patent/JPH0628149A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】LZW符号等の動的辞書型アルゴリズムを用い
て入力データを圧縮符号化する複数種類データのデータ
圧縮方法に関し、複数種類のデータを対象に調べた高頻
度に出現する文字列を初期登録した符号化における辞書
探索を一本化し、処理時間を増加させることなく高い圧
縮率が得られるようにする。 【構成】サンプルデータ1,2のLZW符号化で検出し
た出現頻度が、複数種類のデータで共通に高頻度となる
部分列を共通部分列群S00として抽出して辞書領域A0
に初期登録する。また複数種類のデータ毎に高頻度とな
る部分列を固有部分列群S10,S20として抽出して辞書
領域A1 ,A2 に初期登録する。データ1,2が混在す
る入力文字列を符号化する際には、入力文字列に最長一
致する登録済み部分列を辞書から検索し、検索した部分
列の属する部分列群の群番号jと部分列群内での検索文
字列の登録番号iとを用いて入力文字列を符号化する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、LZW符号等の動的辞
書型アルゴリズムを用いて入力データを圧縮符号化する
複数種類データのデータ圧縮方法に関する。近年、文字
コード,ベクトル情報,画像など様々な種類のデータが
コンピュータで扱われるようになっており、扱われるデ
ータ量も急速に増加してきている。
【0002】大量のデータを扱うときは、データの中の
冗長な部分を省いてデータ量を圧縮することで、記憶容
量を減らしたり、速く伝送したりできるようになる。様
々なデータを1つの方式でデータ圧縮できる方法として
ユニバーサル符号化が提案されている。ここで、本発明
の分野は、文字コードの圧縮に限らず、様々なデータに
適用できるが、以下では、情報理論で用いられている呼
称を踏襲し、データの1ワード単位を文字と呼び、デー
タが任意ワードつながったものを文字列と呼ぶことにす
る。
【0003】ユニバーサル符号の代表的な方法として、
ジブ−レンペル(Ziv-Lempel)符号がある(詳しくは、
例えば、宗像『Ziv-Lempelのデータ圧縮法』、情報処
理、Vol.26,No.1,1985年を参照のこと)。 ジブ−レンペル符号では ユニバーサル型(スライド辞書型)と、 増分分解型(Incremental parsing ;動的辞書型) の2つのアルゴリズムが提案されている。
【0004】さらに、ユニバーサル型アルゴリズムの改
良として、LZSS符号、(T.C. Bell,“Better OPM/L
Text Compression ”,IEEE Trans. on Commun.,Vol.CO
M-34,No.12 Dec.1986 参照)。また、増分分解型アルゴ
リズムの改良としては、LZW(Lempel-Ziv-Welch)符
号がある(T.A.Welch,“A Technique for High-Perform
ance Data Compression ”,Computer,June 1984 参
照)。
【0005】これらの符号の内、高速処理ができること
と、アルゴリズムの簡単さからLZW符号が記憶装置の
ファイル圧縮などで使われるようになっている。
【0006】
【従来の技術】従来のLZW符号の符号化アルゴリズム
を図15のフローチャートに示す。LZW符号化は、書
き替え可能な辞書をもち、入力文字列を相異なる部分列
に分け、この部分列を出現した順に参照番号を付けて辞
書に登録するとともに、現在入力している文字列を辞書
に登録してある最長一致する部分文字列の参照番号だけ
で表して、符号化するものである。
【0007】尚、増分分解型符号およびLZW符号の技
術は、特開昭59−231683号、米国特許第4,5
58,302号,米国特許第4,814,746号で開
示されている。図15の符号化処理は次のようになる。 ステップS1;予め全文字につき一文字からなる文字列
を初期値として登録してから符号化を始める。辞書の登
録数nを文字種数Aと置く。
【0008】カーソルをデータの先頭の位置に置く。 ステップS2;カーソルの位置からの文字列に一致する
辞書登録の最長文字列Sを見つける。 ステップS3;文字列Sの識別番号を[log2 n]ビ
ットで表して出力する。但し、[x]はx以上の最小の
整数である。辞書登録数nを一つインクリメントする。
【0009】ステップS4;文字列Sにカーソルの最初
の文字Cを付加した文字列SCを辞書に登録する。カー
ソルはSの後の文字に移動させる。 ステップS5;入力データの終了をチェックし、終了す
るまでステップS2〜S4の処理を繰り返す。 図16は従来のLZW復号化のアルゴリズムを示したフ
ローチャートであり、図15の符号化アルゴリズムと逆
の操作を行って入力符号から文字列を復元し、同時に辞
書を作成する。
【0010】このような従来のLZW符号では、複数の
異なる性質をもつ複数種類のデータが混在するデータを
符号化すると、複数種のデータに合わせた辞書が作成さ
れて符号化が行なわれる。複数種が混在するデータとし
ては、例えば、文字コードと画像が混在するデータが挙
げられる。辞書のサイズが十分大きいときは、出現した
全てのデータ種を含む辞書が作られるため、個々のデー
タ種単独で圧縮した場合に比べて圧縮率が悪化するとい
う問題がある。
【0011】また、辞書のサイズが小さいために1種類
のデータ分しか登録できないようなきは、各データの種
類が著しく異なれば、辞書をクリアして再学習するた
め、個々のデータ種に合わせた辞書が作られ、圧縮率は
低下しない。しかし、データ中に同じデータ種が交互に
出現するときは、そのつど学習し直すため、圧縮率が高
められないという問題点があった。
【0012】この問題点を解決するため、本願発明者ら
は、データの種類ごとに辞書を分けて作成することで高
い圧縮率を得るようにした方法を提案している。図17
にデータの種類毎に辞書を作成して符号化するLZW符
号化アルゴリズムを示す。図17のLZW符号化は次の
ようになる。
【0013】ステップS1;データの種類ごとに高頻度
で出現する文字列を求め、辞書の初期値とする。 ステップS2;データの種類ごとに初期値を分割辞書に
設定する。カーソルを1とし、辞書アドレスnj をデー
タjの初期値の個数Ajとし、直前辞書番号をpp=0
とする。
【0014】ステップS3;カーソルをセットした位置
からの入力文字列に一致する各辞書j中の最長の文字列
Sj=S1,S2,・・・,Skを見つける。 ステップS4;ステップS3で見つけた文字列Sjの中
から最長の文字列Spを求める。
【0015】ステップS5;現在辞書番号pと直前辞書
番号ppが一致するかどうか判定する。 ステップS6;辞書番号が不一致の場合は、[log2
pp]ビットを用いて辞書が変ったことを示す識別番号
0を表わし、また[log2K]ビットを用いて変った
辞書番号pを表わして出力する。
【0016】ステップS7;ステップS6の出力が済み
またはステップS5で辞書番号が一致した場合に、ステ
ップS4で検索した文字部分列Spの番号を[log2
p ]ビットを用いて表わし、出力する。辞書アドレス
p を1つインクリメントする。 ステップS8;文字列Sの次の文字をCにセットする。
符号化済み文字列Spに文字Cを加えた文字列SpC
を、辞書アドレスnp で辞書に登録する。現在辞書番号
pを直前辞書番号ppに置き替える。
【0017】カーソルを文字列Sの位置の文字に移動さ
せる。 ステップS9;データ終了の有無を判別し、終了してい
なければステップS3に戻り、終了していれば一連の処
理を終る。 図18は図17のLZW符号化アルゴリズムの変形を示
したもので、図16のステップS5,S6で行っている
参照辞書が変化を示す情報の符号化出力を除いており、
他の点は同じになる。
【0018】この図17,図18に示す複数種類データ
のデータ圧縮方法では、データの種類ごとに高頻度で出
現する文字列を調べて、データの種類ごとの辞書Diに
予め設定しておき、複数個の辞書Diから検索した最長
一致文字列の中から最も一致長が長い文字列の辞書を選
んで符号化するものである。このため高頻度の初期値を
元にデータの種類が分類され、データ種に適する辞書D
iが選ばれるため、高圧縮率を得ることができる。
【0019】
【発明が解決しようとする課題】しかしながら、複数種
類のデータが混在するデータを図17,図18の方法で
符号化する場合、高圧縮率は得られるものの、複数個の
辞書について最長一致する文字列を検索しなければなら
ず、辞書検索に時間がかかるという問題がある。この辞
書検索の問題は、ハードウェアで並列処理を行うように
すれば単一辞書を用いた従来のLZW符号化と同等の処
理速度が得られるが、ソフトウェアによるシーケンシャ
ル処理では辞書の複数の個数分の検索時間がかかり、処
理速度が低下する問題があった。
【0020】本発明は、このような問題点に鑑みてなさ
れたもので、複数種類のデータを対象に調べた高頻度に
出現する文字列を初期登録した場合の符号化における辞
書探索を一本化し、処理時間を増加させることなく高い
圧縮率が得られるようにした複数種類データのデータ圧
縮方法を提供することを目的とする。
【0021】
【課題を解決するための手段】図1は本発明の原理説明
図である。まず本発明は、複数種類のデータが混在する
入力データを符号化して圧縮する複数種類データのデー
タ圧縮方法として、次のようにする。 [第1過程]複数種類のデータをLZW符号化し、この
符号化における辞書に登録した文字列の出現頻度を検出
する。
【0022】[第2過程]第1過程のLZW符号化で検
出した出現頻度が、複数種類のデータで共通に高頻度と
なる部分列を共通部分列群S00として抽出し、共通部分
列群S00に特定の群番号j=0を付けて辞書領域A0
確保し、この辞書領域A0 に共通部分列群S00に属する
各部分列を初期登録する。
【0023】また第1過程のLZW符号化で検出した出
現頻度が、複数種類のデータ毎に高頻度となる部分列を
固有部分列群S10,S20として抽出し、各固有部分列群
10,S20毎に特定の群番号j=1,j=2を付けて辞
書領域A1 ,A2 を確保し、辞書領域A1 ,A2 に該当
する固有部分列群S10,S20に属する各部分列を初期登
録する。
【0024】[第3過程]複数種類のデータが混在する
入力文字列を符号化する際に、入力文字列に最長一致す
る登録済み部分列を辞書10から検索し、検索した部分
列の属する部分列群の群番号jと該部分列群内での検索
文字列の登録番号iとを用いて入力文字列を符号化す
る。
【0025】また本発明の他の複数種類データのデータ
圧縮方法としては、辞書領域を各データに共通な領域を
各データに固有な領域と一緒にしてもよい。この場合の
処理は、次のようになる。 [第1過程]複数種類のデータをLZW符号化し、この
符号化における辞書に登録した文字列の出現頻度を検出
する。
【0026】[第2過程]第1過程のLZW符号化で検
出した出現頻度が複数種類のデータで共通に高頻度とな
る共通部分列群S00と各データ毎に高頻度となる部分列
群S10,S20とを合わせた固有部分列群(S00+S10
00+S20)を抽出し、各固有部分列群(S00+S10
00+S20)毎に特定の群番号j=1,2を付けて辞書
領域A1,A2 を確保し、該辞書領域に各固有部分列群
に属する各部分列を初期登録する。
【0027】[第3過程]複数種類のデータが混在する
入力文字列を符号化する際に、入力文字列に最長一致す
る部分列を辞書から検索し、検索した部分列が共通部分
列群S00に属するときは共通部分列群内の登録番号nを
用いて符号化し、一方、固有部分列群S10,S20に属す
るときは、固有部分列群の群番号j=1,2と該群内の
登録番号n j とを用いて符号化する。
【0028】
【作用】このような本発明の複数種類データのデータ圧
縮方法にあっては、予め出現するデータ種が例えば2種
類の場合を例にとると、辞書に初期登録する文字列を2
種類のデータについて高頻度で共通に現れる文字列と、
各種類のデータだけに高頻度で現れる文字列との3つの
集合S00,S10,S20(文字列群)に分けて辞書に格納
しておき、符号化時に入力データと最長一致する辞書中
の文字列を、対応する集合ごとの参照番号j=0,1,
2を付けて符号化する。
【0029】これにより複数種類のデータ毎に調べた高
頻度の文字列を単一の辞書に初期登録して複数種類のデ
ータが混在するデータの符号化を行うことができ、ソフ
トウェアによる符号化であっても辞書検索を通常のLZ
Wと同等の処理速度で行って高い圧縮率を得ることがで
きる。
【0030】
【実施例】図2は複数種類のデータが混在したデータを
符号化する本発明の複数種類データのデータ圧縮方法を
実現する装置構成の一実施例を示した実施例構成図であ
る。図2において、16はCPUであり、CPU16に
対してはプログラムメモリ18とデータメモリ30が接
続される。プログラムメモリ18にはコントロールソフ
ト20,符号化ソフト22,初期値作成手段としての機
能を備えた辞書作成ソフト14,出現頻度カウントテー
ブル26及び出現頻度格納テーブル28が設けられる。
【0031】符号化ソフト22は入力文字列に最長一致
する辞書中の文字列を検索して辞書の参照番号を符号デ
ータとして出力する、例えばLZW符号化アルゴリズム
を基本的に備える。また、復号化ソフト24は符号化ソ
フト22により符号化された入力符号列で辞書中の参照
番号を検索し、対応する文字列を複号する例えばLZW
復号化アルゴリズムを行う。
【0032】辞書作成ソフト14は符号化あるいは復号
化に先立って行う初期値作成処理と符号化及び復号化の
処理中に新たな文字列を辞書に登録する処理の2つを行
う。この辞書作成ソフト14における初期値作成機能は
データメモリ30に格納された複数種類のデータを代表
するサンプルデータ、例えば2種類のサンプルデータ
1,2を対象に符号化ソフト22に従った符号化を行
い、この符号化時に辞書から文字を検索して符号データ
として出力する毎に、符号データとして検索された辞書
中の文字列の参照番号の使用回数を出現頻度カウントテ
ーブル26を使用してカウントアップし、文字列の出現
頻度を検出する。
【0033】サンプルデータの符号化が終了したならば
出現頻度カウントテーブル26の中のサンプルデータ
1,2毎の出現頻度を参照し、2種類のデータ1,2に
共通する高頻度の文字列の集合を初期値S00として登録
し、またデータ1,2のそれぞれで独立に高頻度に生ず
る文字列の集合を初期値S10,S20として登録する。一
方、データメモリ30には辞書10とデータバッファ3
2の各メモリ領域が確保される。
【0034】初期値作成時にはデータバッファ32には
初期値作成の対象となる複数種類のサンプルデータ、例
えばサンプルデータ1,2が格納され、また辞書10に
は初期値作成のための符号化時に辞書作成ソフト14で
作成された文字列が参照番号と共に登録される。初期値
作成が済むと、辞書10には辞書作成ソフト14で作成
された複数種類、例えば2種類のデータ1,2の共通の
初期値S00、各データ1,2毎の初期値S10,S20がそ
れぞれに割り当てられた領域A0 ,A1 ,A2 毎に初期
登録が行われる。そしてデータバッファ32には新たに
符号化しようとするデータ1,2が混在した文字列ある
いは復号化しようとする符号列が格納され、符号化ソフ
ト22による文字列の復号化あるいは復号化ソフト24
による文字列の復元が行われる。
【0035】図3は本発明において2種類のサンプルデ
ータ1,2を対象に辞書に登録する初期値の作成処理を
示したフローチャートである。図3の初期値作成処理に
あっては、まずステップS1で2種類のデータ1,2を
対象にLZW符号化を行い、データ1,2に共通な高頻
度の初期値S00を作成する。
【0036】続いてステップS2で共通の初期値S00
辞書のA00領域に格納してデータ1のみをLZW符号化
し、データ1に特有の高頻度の初期値S10を作成する。
続いてステップS3で共通の初期値S00を辞書のA00
域に格納してデータ2のみをLZW符号化し、データ2
に特有の高頻度の初期値S20を作成する。具体的には、
図4に示すようにサンプルデータ1,2を対象にLZW
符号化を行って辞書に符号化済み文字列の部分列を参照
番号と共に登録し、サンプルデータ1の符号化における
出現頻度f1 とサンプルデータ2の符号化における出現
頻度f2 のそれぞれを計数する。
【0037】図5はサンプルデータ1,2の符号化で得
られた出現頻度を縦軸にとり辞書の要素番号(参照番
号)を横軸にとって示した説明図である。図5におい
て、サンプルデータ1,2中の要素(文字列)の出現頻
度をそれぞれf1 ,f2 とし、また共通初期値S00の閾
値をT0 、各サンプルデータ1,2特有の閾値をT1
2 とすると、初期値S00,S10,S20の集合は次のよ
うになる。 初期値S00:f1 >T0 かつ f2 >T0 の要素の集
合 初期値S10:f1 ≧T0 かつ f2 ≦T0 かつ f
1 >T1 の要素の集合 初期値S20:f1 ≦T0 かつ f2 ≧T0 かつ f
2 >T2 の要素の集合 このようにデータ1,2が混在した場合の符号化で作成
される辞書要素の全体をデータ1,2に共通の集合S00
とデータ1,2に固有の集合S10,S20に分類して辞書
に初期登録しておけば、この初期登録した辞書を用いた
符号化で符号化中のデータが最長一致する辞書の参照番
号がどの集合に属するかを調べることでデータ1,2の
変移区間S00なのか特定データ1,2の区間S10または
20にあるかを判別することができ、単一の辞書を用い
てデータの種類に対応した効率の良い符号化を行うこと
ができる。
【0038】図6は図3のステップS1に示したデータ
1,2に共通の初期値S00を作成する初期値作成処理を
詳細に示したフローチャートである。図6において、ま
ずステップS1にデータ1,2のそれぞれにおける全て
の単一文字を初期値として登録してから符号化を始め
る。また辞書の登録数nを文字種数Aと置き、カーソル
をデータの先頭位置にセットし、更に出現頻度を計数す
るカウンタf1 を変移要素N個分準備して0に初期化す
る。
【0039】次にステップS2でサンプルデータ1の入
力を開始し、ステップS3でデータ入力の終了をチェッ
クした後、ステップS4に進んでカーソル位置からの文
字列に一致する辞書中の最長の文字列Sを見付ける。続
いてステップS5で見付けた最長一致の文字列に含まれ
る全てのセット文字列について出現頻度f1 を1つイン
クリメントする。
【0040】次にステップS6で辞書アドレスnを1つ
インクリメントし、符号化した最長一致文字列Sの次の
文字をCとし、この次の1文字を文字列Sに加えた文字
列SCを参照番号nを付けて辞書に登録する。そして、
カーソルを文字列Sの次の文字に移動させ、ステップS
2で次のサンプルデータ1を入力する。ステップS2〜
S6の処理の繰返しにより、ステップS3でサンプルデ
ータ1の入力終了が判別されるとステップS7に進み、
再びカーソルを1にセットし、サンプルデータにおける
出現頻度計数のため、サンプルデータ2の全要素分N個
のカウンタf2 を0にリセットし、ステップS8でサン
プルデータ2の入力を開始する。
【0041】続いてステップS9を介してステップS1
0に進み、サンプルデータ2のカーソル位置からの文字
列に一致する辞書中の最長一致する文字列Sを見付け、
ステップS11で見付けた最長一致の文字列に含まれる
全てのセット文字列について出現頻度f2 を1つインク
リメントする。続いてステップS12で辞書番号nを1
つインクリメントし、検索した最長一致文字列Sの次の
1文字をCとし、最長一致文字列S1 に次の1文字Cを
加えた文字列SCを参照番号nを付けて辞書に登録し、
カーソルを文字列Sの次の文字に移動させ、再びステッ
プS8に戻る。
【0042】ステップS9でサンプルデータ2の入力終
了が判別されるとステップS13に進み、サンプルデー
タ1の出現頻度f1 及びサンプルデータ2の出現頻度f
2 が共に閾値T0 となる辞書中の文字列を取り出して初
期値S00とする。図7は図3の初期値作成処理における
ステップS2及びS3の詳細を示したフローチャートで
ある。
【0043】図7にあっては、まずステップS1で図6
で作成したサンプルデータ1,2に共通な高頻度の初期
値S00を辞書Dに格納し、カーソルを1に合わせ、辞書
アドレスをn0 及びn1 にセットし、出現頻度を計数す
るカウンタfを0にリセットする。続いてステップS2
でまずサンプルデータ1を入力し、ステップS3を介し
てステップS4で辞書中の最長一致する文字列Sを見つ
け、ステップS4で最長一致文字列に含まれる全てのセ
ット文字列について出現頻度fを1つインクリメントす
る。
【0044】続いてステップS6で辞書アドレスnを1
つインクリメントし、最長一致文字列Sの次の1文字を
Cとし、この1文字を最長一致文字列Sに加えた文字列
SCに参照番号nを付けて辞書に登録する。続いてカー
ソルを文字列Sの後ろの1文字に移動させ、ステップS
2に戻って次のサンプルデータ1を入力する。以上のス
テップS2〜S6の処理の繰返しによりサンプルデータ
1の符号化が済むとサンプルデータ2の符号化に切り替
わり、同様な処理を繰返す。
【0045】ステップS3でデータ入力の終了が判別さ
れるとステップS7に進み、サンプルデータ1,2毎に
計数されている出現頻度f1 ,f2 に付き、閾値T1
2以上となる辞書中の文字列を取り出してサンプルデ
ータ1,2に特有な初期値S 10,S20とする。図8はサ
ンプルデータ1,2から作成された初期値S00,S10
20を用いた本発明によるLZW符号化アルゴリズムを
示したフローチャートである。
【0046】図8において、まずステップS1において
予めサンプルデータ1,2から作成した初期値S00,S
10,S20をそれぞれ辞書の領域A00,A10,A20に格納
する。また、各領域における既存の辞書登録の要素数n
0 ,n1 ,n2 を設定する。図9は図8のLZW符号化
で使用される辞書構成を示した説明図である。図9にお
いて、各符号は次の内容を示す。 A0 ,A1 ,A2 :共通部分、データ種1,データ種2
の格納領域 N0max,N1max,N2max:格納領域A0 ,A1 ,A2
各格納領域の最大要数 S00,S10,S20:共通部分,データ種1,データ種2
の初期値 A00,A10,A20:共通部分,データ種1,データ種2
の初期値の格納領域 n00,n10,n20:共通部分,データ種1,データ種2
の初期値の要素数 A01,A11,A21:共通部分,データ種1,データ種2
の既登録要素の格納領域 n0 ,n1 ,n2 :共通部分,データ種1,データ種2
の既登録要素数 A02,A12,A22:共通部分,データ種1,データ種2
の空き領域 例えば、データ1,2に共通な高頻度をもつ初期値S00
を登録した辞書領域A 0 についてみると、初期格納領域
00に初期要素数n00の初期値S00を登録している。こ
の領域A00に続いて初期値S00を用いた符号化で新たに
登録された要素を含む既登録要素領域A01が設けられ、
ここまでの既存の登録要素数をn0 としている。また領
域A0 ,A1 ,A2 については最大要素数をN0max,N
1max及びN2maxと予め定めている。
【0047】再び図8を参照するに、辞書に対する初期
登録が済むとステップS2で入力データと最長一致する
辞書中の文字列(要素)を探索し、参照番号iを求め
る。続いて参照番号iが含まれる辞書領域Aj より辞書
領域番号jを求める。この実施例ではデータは2種類で
はあることから辞書領域jは図9に示すようにA0,A1
,A2 の3つであり、辞書領域番号jはj=0,1,
2のいずれかとなる。
【0048】次にステップS4で前回の辞書領域番号と
今回求めた辞書領域番号jとが等しいか否かチェック
し、等しければステップS6に進み、参照番号iを辞書
領域A j に対応する番号ij に変換して符号化出力す
る。一方、前回の辞書領域番号が今回求めた辞書領域番
号jに一致しなかった場合にはステップS5で新たな辞
書領域番号jを符号化してからステップS6で参照番号
iの符号化出力を行う。
【0049】続いてステップS7で辞書領域Aj に空き
があれば、その辞書領域の辞書アドレスnj を1つイン
クリメントし、最長一致した文字列に次の1文字を付加
した文字列を辞書領域Aに参照番号nj を付けて追加登
録する。ステップS8ではデータ終了の有無をチェック
しており、データが終了しなければステップS2に戻っ
て同様な処理を繰り返し、データが終了すれば一連の符
号化処理を終わる。
【0050】図8のステップS6における参照番号iを
辞書領域Aj に対応する参照番号i j に変換する処理は
次のモード1〜3に従って行う。 [モード1] 0≦i<N0max;辞書領域番号=0 辞書領域の対応番号i0 =i+Np [モード2] N0max≦i<N1max;辞書領域番号=1 辞書領域の対応番号i1 =i−N0max+Np [モード3] N1max≦i;辞書領域番号=2 辞書領域に対応番号i2 =i−(N0max+N1max)+N
p ここで、Npは予約語の数であり、この実施例では例え
ばNp=5の予約語を辞書領域の先頭に設けている。例
えば、図10に示すように、辞書の先頭アドレス0〜4
を予約語領域とし、この辞書アドレス即ち参照番号0〜
4を各予約領域に示した意味をもつ情報として使用す
る。
【0051】即ち、参照番号0は辞書領域番号A0 を示
し、参照番号1は辞書領域A1 を示し、また参照番号2
は辞書領域番号A2 を示す。また、参照番号3は辞書の
初期化を指令する制御コマンドとしての意味をもつ。更
に参照番号4は符号化データの終了を示すEOF等に用
いる。このため、実際の辞書領域は予約語領域に続くア
ドレス5、即ち参照番号5から開始され、モード1〜3
に示すように検索した参照番号iに予約語数Npを加え
ることで実アドレスが求まる。
【0052】またモード1〜3における辞書領域に対応
した参照番号i0 ,i1 ,i2 は図9に示した辞書領域
0 ,A1 ,A2 における領域内での相対位置を示して
いる。このため、絶対位置を示す参照番号iに対し各領
域A0 〜A2 内での相対位置を示す参照番号i0 ,i
1 ,i2 に変換することで、より少ない数値の参照番号
とでき、符号化データのビット長を短縮して圧縮率を高
めることができる。
【0053】また、前記モード1〜3に示すようにして
求めた各領域の対応番号ij =i0,i1 ,i2 は各領
域の要素数nj =n0 ,n1 ,n2 を用いて表現し得る
最小ビット数である [log2 (nj +Np)]ビット で符号化する。但し、[X]はX以上の最小の整数を示
している。
【0054】更に図8のステップS5における辞書領域
番号jの符号化にあっては、辞書領域番号jを [log2 (nk +Np)]ビット で符号化することになる。図11は図8のLZW符号化
で得られた符号化データの説明図であり、図11にあっ
ては符号化に使用する辞書領域が領域A1 ,A0 ,A2
と変移していったときの符号化データを示す。
【0055】即ち、最初は辞書領域j=1にあることか
ら辞書領域番号j=1を符号化し、続いて領域A1 に属
する文字列の符号化データを出力する。符号化データを
3つ出力すると4番目の符号化データは領域A0 に属し
ていることから、ここで領域j=0を符号データとした
後に文字列の符号データを出力する。更に、符号化デー
タが領域A2 に属すると領域j=2を符号化して出力し
た後に領域A2 に属する文字列の参照番号の符号データ
を出力する。
【0056】図12は図8のLZW符号化アルゴリズム
で得られた符号データから元の文字列を復元するLZW
復号化アルゴリズムを示したフローチャートである。図
12において、まずステップS1で図8の符号化と同
様、初期値S00,S10,S20をそれぞれ辞書の対応領域
00,A10,A20に格納する。続いてステップS2で符
号を入力し、ステップS3で辞書領域番号の符号入力の
有無をチェックし、辞書領域番号があればステップS5
で現在の辞書領域番号を更新してステップS2で本来の
符号を入力する。
【0057】続いてステップS4で現在の辞書領域に対
応する番号ij である符号を、前述したモード1〜3の
対応番号を求める関係式を使用して辞書の参照番号iに
戻す。次にステップS5で辞書を参照し、参照番号iに
対応する文字列を復元する。ステップS6で前回の辞書
領域Ak に空き領域があれば辞書アドレスnk を1つイ
ンクリメントし、前回の復元した文字列に今回復元した
文字列の先頭文字を付加した文字列を辞書領域Ak に辞
書アドレスnk を付けて登録する。
【0058】以上の処理をステップS7で全ての符号デ
ータの入力が済むまで繰り返し、符号データの入力がな
くなれば処理を終了する。図13は本発明の第2実施例
で使用する辞書構成を示した説明図である。即ち、図9
に示す辞書構成の実施例にあっては、辞書をデータ1,
2に共通の領域A0 とデータ1,2に特有な領域A1
2 に分けていたが、図13の実施例にあっては、デー
タ1,2に共通な領域の各々とデータ1,2に特有な領
域を一緒にして1つの辞書領域としたことを特徴とす
る。
【0059】即ち、図13の辞書構成にあっては、デー
タ1,2に共通な高頻度の初期値S 00を登録した領域に
ついては、データ1,2に固有な領域A1 またはA2
一部に含ませており、この共通の初期値S00にデータ
1,2に特有な領域A1 ,A2のそれぞれを加えた領域
が実際の符号化に使用するデータ1,2に固有な辞書領
域となる。
【0060】図13のように共通領域を各データに固有
の領域と一緒にした場合の辞書構成におけるLZW符号
化アルゴリズムは図8と同じになるが、図8のステップ
S6における最長一致した辞書の参照番号iを辞書領域
に対応する番号ij に変換するモード1〜3の処理が異
なる。図13の第2実施例における参照番号iを各領域
の対応番号ij に直す処理は次のモード1〜3のように
なる。 [モード1] 0≦i<N0max;辞書領域番号=1または2 辞書領域の対応番号i0 =i+Np [モード2] N0max≦i<N1max;辞書番号=1 辞書領域の対応番号i1 =n0 +i−N0max+Np [モード3] N1max≦i;辞書番号=2 辞書領域に対応番号i2 =n0 +i−(N0max
1max)+Np この第2実施例におけるモード1〜3における対応番号
0 〜i2 への変換は、モード1の共通領域A0 につい
ては最初の実施例と同じであるが、モード2,3につい
ては共通領域S00の既登録要素数n0 分だけ領域A1
2 を拡張するように対応番号を求める。
【0061】図14は辞書参照番号iが領域A1 に属し
た場合の対応番号i1 への変換を示したもので、想像線
で示す実際の辞書番号iに対する対応番号ij を求める
と、領域A1 の一部である共通領域A0 の既登録要素数
0 分だけ領域A1 を拡張した参照番号に変換すること
を意味する。これによって、領域A1 は共通領域A0
含む1つの領域として扱われることになる。
【0062】その結果、入力データと最長一致する文字
列が領域A1 またはA2 の一部である共通領域A0 に属
するときは辞書領域番号j=1,2の指定は不要とな
る。この共通領域A00を各データ特有の領域A10,A20
と一緒にした辞書構成による符号化は、結局は2つの辞
書を切り換えて使用していることと同じになる。また、
上記の実施例におけるLZW符号化にあっては、入力す
る混在データの統計的性質の変動も考慮し、共通初期値
00の登録領域A00,A10,A20に続いて空き領域
02,A12,A22を設け、実際のLZW符号化で得られ
た新たな文字列を登録する学習領域とし、学習によって
混在データの統計的性質の変動を吸収している。
【0063】しかしながら、入力データの統計的性質が
データの種類ごとに予め分かっていれば辞書の初期値登
録領域に続く空き領域A02,A12,A22は設けず、初期
値だけで符号化を行っても良い。このように初期値
00,S10,S20のみでLZW符号化を行った場合には
辞書への登録操作が省略できるため、更に処理速度を向
上させることができる。
【0064】更に、上記の実施例にあっては2種類のデ
ータの符号化に適用した場合を例にとるものであった
が、本発明はこれに限定されず、2種類以上のデータに
ついても全く同様に適用することができ、この場合には
データの種類毎に高頻度の共通部分と各データ固有の高
頻度の部分とに分けて集合を作り、各集合毎に参照番号
を割り振って符号化すれば良い。
【0065】
【発明の効果】以上説明したように本発明によれば、複
数種類のデータについて調べた高頻度の出現文字列の初
期値を1つの辞書に登録して複数種類の混在データの符
号化及び復号化を行うことができ、単一辞書であること
からソフトウエアによるシーケンシャル処理であっても
データの種類毎に分割辞書を用いた方法に比べ、より高
速の処理を行って高圧縮率を得ることができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の複数種類データのデータ圧縮方法を実
施する装置構成の実施例構成図
【図3】本発明の初期値作成処理の概略を示したフロー
チャート
【図4】本発明における初期値作成処理の内容を示した
説明図
【図5】本発明の初期値作成における符号化で得られた
サンプルデータ1,2の出現頻度を示した説明図
【図6】図3の共通部分S00の初期値作成アルゴリズム
を示したフローチャート
【図7】図3の固有部分S10,S20の初期値作成アルゴ
リズムを示したフローチャート
【図8】本発明の第1実施例におけるLZW符号化アル
ゴリズムを示したフローチャート
【図9】図9の符号化で使用される辞書構成の説明図
【図10】図8の領域内の番号に変換する際に使用する
予約語数Npの辞書内容を示した説明図
【図11】図8の符号化で得られる符号データの説明図
【図12】本発明の第2実施例におけるLZW符号化ア
ルゴリズムを示したフローチャート
【図13】図12のLZW符号化で使用される辞書構成
の説明図
【図14】図13における領域内の対応番号が意味する
辞書領域の説明図
【図15】従来のLZW符号化アルゴリズムを示したフ
ローチャート
【図16】従来のLZW復号化アルゴリズムを示したフ
ローチャート
【図17】データの種類毎に調べて高頻度の文字列を分
割辞書に初期登録して行うLZW符号化アルゴリズムを
示したフローチャート
【図18】図17の変形を示したフローチャート
【符号の説明】
10:辞書 16:CPU 18:プログラムメモリ 20:コントロールソフト 22:符号化ソフト 24:復号化ソフト 26:出現頻度カウントテーブル 28:頻度閾値格納テーブル 30:データメモリ 32:データバッファ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】複数種類のデータが混在する入力データを
    符号化して圧縮する複数種類データのデータ圧縮方法に
    於いて、 複数種類の各データを相異なる部分列に分けて辞書に登
    録し、各データ毎に入力文字列に最長一致する辞書に登
    録済みの部分列を検索し、検索した部分列の登録番号で
    表わして入力文字列を圧縮符号化し、該符号化における
    部分列の出現頻度を検出する第1過程と、 前記第1過程で検出した出現頻度が、複数種類のデータ
    で共通に高頻度となる部分列を共通部分列群(S00)と
    して抽出し、該共通部分列群(S00)に特定の群番号
    (j=0)を付けて辞書領域(A0 )を確保し、該辞書
    領域(A0 )に該共通部分列群(S00)に属する各部分
    列を初期登録し、また前記第1過程で検出した出現頻度
    が、複数種類のデータ毎に高頻度となる部分列を固有部
    分列群(S 10,S20)として抽出し、各固有部分列群
    (S10,S20)毎に特定の群番号(j=1,2)を付け
    て辞書領域(A1 ,A2 )を確保し、該辞書領域(A
    1 ,A2)に該当する固有部分列群(S10,S20)に属
    する各部分列を初期登録する第2過程と、 複数種類のデータが混在する入力文字列を符号化する際
    に、入力文字列に最長一致する登録済み部分列を前記辞
    書から検索し、検索した部分列の属する部分列群
    (S00,S10,S20)の群番号(j=0,1,2)と該
    部分列群内での検索文字列の登録番号(ij )とを用い
    て入力文字列を符号化する第3過程と、を備えたことを
    特徴とする複数種類データのデータ圧縮方法。
  2. 【請求項2】複数種類のデータが混在する入力データを
    符号化して圧縮する複数種類データのデータ圧縮方法に
    於いて、 複数種類の各データを相異なる部分列に分けて辞書に登
    録し、各データ毎に入力文字列に最長一致する辞書に登
    録済みの部分列を検索し、検索した部分列の登録番号で
    表わして入力文字列を圧縮符号化し、該符号化における
    部分列の出現頻度を検出する第1過程と、 前記第1過程で検出した出現頻度が複数種類のデータで
    共通に高頻度となる共通部分列群(S00)と各データ毎
    に高頻度となる部分列群とを合わせた固有部分列群(S
    10,S20)を抽出し、各固有部分列群(S10,S20)毎
    に特定の群番号(j=1,2)を付けて辞書領域(A
    1 ,A2 )を確保し、該辞書領域(A1 ,A2 )に前記
    共通部分列群(S00)を合せた各固有部分列群(S10
    20)に属する各部分列を初期登録する第2過程と、 複数種類のデータが混在する入力文字列を符号化する際
    に、入力文字列に最長一致する部分列を前記辞書から検
    索し、検索した部分列が前記共通部分列群(S 00)に属
    するときは該共通部分列群(S00)内の登録番号(i)
    を用いて符号化し、一方、固有部分列群(S10,S20
    に属するときは、該固有部分列群の群番号(A1 ,A
    2 )と該群内の登録番号(ij )とを用いて符号化する
    第3過程と、を備えたことを特徴とする複数種類データ
    のデータ圧縮方法。
  3. 【請求項3】請求項1,2記載の複数種類データのデー
    タ圧縮方法に於いて、前記第3過程では、符号化すべき
    入力文字列に最長一致する部分列が、前回符号化で最長
    一致した部分列と同じ部分列群に属しているときは、該
    群内の登録番号のみを用いて符号化し、前回符号化で最
    長一致した部分列と異なる部分列群に属しているとき
    は、該群番号と該群内の登録番号を用いて符号化するこ
    とを特徴とする複数種類データのデータ圧縮方法。
  4. 【請求項4】請求項1,2記載の複数種類データのデー
    タ圧縮方法に於いて、前記第1過程では、出現する全種
    類のデータのサンプルごとに符号化を行って相異なる部
    分列の出現頻度を計数することを特徴とする複数種類デ
    ータのデータ圧縮方法。
  5. 【請求項5】請求項1,2記載の複数種類データのデー
    タ圧縮方法に於いて、前記第3過程にあっては、入力文
    字列を辞書の最長一致する部分列の検索で符号化した際
    に、該符号化済み文字に次の入力一文字を加えた文字列
    を、符号化文字列が属する部分列群に新たな参照番号を
    付けて登録することを特徴とする複数種類データのデー
    タ圧縮方法。
  6. 【請求項6】請求項1,2記載の複数種類データのデー
    タ圧縮方法に於いて、前記第2過程にあっては、各部分
    列群ごとに最大登録個数を予め定めて該部分列群を登録
    するメモリ領域を割り当てておき、前各群に属する部分
    列の登録番号を各メモリ領域の先頭からの位置で表すこ
    とを特徴とする複数種類データのデータ圧縮方法。
JP18328892A 1992-07-10 1992-07-10 複数種類データのデータ圧縮方法 Withdrawn JPH0628149A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18328892A JPH0628149A (ja) 1992-07-10 1992-07-10 複数種類データのデータ圧縮方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18328892A JPH0628149A (ja) 1992-07-10 1992-07-10 複数種類データのデータ圧縮方法

Publications (1)

Publication Number Publication Date
JPH0628149A true JPH0628149A (ja) 1994-02-04

Family

ID=16133034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18328892A Withdrawn JPH0628149A (ja) 1992-07-10 1992-07-10 複数種類データのデータ圧縮方法

Country Status (1)

Country Link
JP (1) JPH0628149A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE41152E1 (en) 1996-08-06 2010-02-23 Pinpoint Incorporated Lempel-Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
JP2014204356A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 文字列圧縮方法及び装置
US9391636B2 (en) 2012-12-19 2016-07-12 Fujitsu Limited Method and system
US9496895B2 (en) 2012-12-19 2016-11-15 Fujitsu Limited Compression method and decompression method
JP2017169117A (ja) * 2016-03-17 2017-09-21 株式会社東芝 データ圧縮システム及び方法
CN116827351A (zh) * 2023-08-31 2023-09-29 浙江中骏石墨烯科技有限公司 一种石墨烯发热墙面温度智能监测系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE41152E1 (en) 1996-08-06 2010-02-23 Pinpoint Incorporated Lempel-Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US9391636B2 (en) 2012-12-19 2016-07-12 Fujitsu Limited Method and system
US9496895B2 (en) 2012-12-19 2016-11-15 Fujitsu Limited Compression method and decompression method
US9577666B2 (en) 2012-12-19 2017-02-21 Fujitsu Limited Method and system
JP2014204356A (ja) * 2013-04-08 2014-10-27 日本電信電話株式会社 文字列圧縮方法及び装置
JP2017169117A (ja) * 2016-03-17 2017-09-21 株式会社東芝 データ圧縮システム及び方法
CN116827351A (zh) * 2023-08-31 2023-09-29 浙江中骏石墨烯科技有限公司 一种石墨烯发热墙面温度智能监测系统
CN116827351B (zh) * 2023-08-31 2023-11-17 浙江中骏石墨烯科技有限公司 一种石墨烯发热墙面温度智能监测系统

Similar Documents

Publication Publication Date Title
US20010051941A1 (en) Searching method of block sorting lossless compressed data, and encoding method suitable for searching data in block sorting lossless compressed data
JPH0830432A (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
JP3241788B2 (ja) データ圧縮方式
JP3231105B2 (ja) データ符号化方式及びデータ復元方式
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3038223B2 (ja) データ圧縮方式
JP3241787B2 (ja) データ圧縮方式
JP3127016B2 (ja) データ圧縮及び復元方法
JPH05152971A (ja) データ圧縮・復元方法
JP3130324B2 (ja) データ圧縮方式
Bharathi et al. A plain-text incremental compression (pic) technique with fast lookup ability
JP3088740B2 (ja) データ圧縮及び復元方式
JP3100206B2 (ja) データ圧縮方法
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JPH06161705A (ja) データ符号化方式及びデータ復元方式
JPH06202844A (ja) データ圧縮復元処理装置
JP3012677B2 (ja) Zl符号化方法
JPH06274311A (ja) データ圧縮装置及びデータ復元装置
JP3038234B2 (ja) データ圧縮装置の辞書検索方式
Pannirselvam et al. A Comparative Analysis on Different Techniques in Text Compression
JP3058711B2 (ja) データ圧縮及び復元方法
JP2825960B2 (ja) データ圧縮方法及び復元方法
JPH0527943A (ja) データ圧縮方式
JPH04123619A (ja) データ圧縮及び復元装置
JPH05341953A (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: 19991005