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

データ圧縮方式

Info

Publication number
JP2952067B2
JP2952067B2 JP3056704A JP5670491A JP2952067B2 JP 2952067 B2 JP2952067 B2 JP 2952067B2 JP 3056704 A JP3056704 A JP 3056704A JP 5670491 A JP5670491 A JP 5670491A JP 2952067 B2 JP2952067 B2 JP 2952067B2
Authority
JP
Japan
Prior art keywords
character
dictionary
character string
memory
address
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
JP3056704A
Other languages
English (en)
Other versions
JPH0683573A (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 JP3056704A priority Critical patent/JP2952067B2/ja
Publication of JPH0683573A publication Critical patent/JPH0683573A/ja
Application granted granted Critical
Publication of JP2952067B2 publication Critical patent/JP2952067B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

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.
COM-34,No.12,DEC.1986 参照)。また、増分分解型アル
ゴリズムの改良としては、LZW(Lempel-Ziv-Welch)
符号がある(T.A.Welch,“A Technique for High-Perfo
rmance Data Compression ”,Computer,June 1984 参
照)。
【0005】これらの符号の内、高速処理ができること
と、アルゴリズムの簡単さからLZW符号が記憶装置の
ファイル圧縮などで使われるようになっている。
【0006】
【従来の技術】従来のLZW符号による符号化処理フロ
ーを図9に示し、復号化処理フローを図10に示す。ま
ずLZW符号化処理は、書き替え可能な辞書を持ち、入
力文字列の中を相異なる文字列(部分列)に分け、この
文字列を出現した順に参照番号を付けて辞書に登録する
と共に、現在入力している文字列を、辞書に登録してあ
る最長一致文字列の参照番号で表して符号化するもので
ある。
【0007】図11にLZW符号化の説明図を示すと共
に図13にLZW復号化の説明図を示し、更に図12に
符号化及び復号化時に作成される辞書構成例を示す。
尚、図11,12,13にあっては説明を簡単にするた
め、abcの3文字の組合せからなるデ―タを圧縮、復
元する場合の例を取り上げている。図9のLZW符号化
処理では、まずステップS1で予め辞書に全文字につき
一文字からなる文字列を初期値として登録してから符号
化を始める。
【0008】ステップS1の符号化は入力した最初の文
字Kにより辞書を検索して参照番号ωを求め、これを語
頭文字列とする。次にステップS2で入力データの次の
文字Kを読込み、ステップS3で文字入力が終了したか
否かチェックした後、ステップS4に進んでステップS
1で求めた語頭文字列ωにステップS2で読込んだ文字
Kを加えた拡張文字列(ωK)が辞書にあるか否か探
す。
【0009】ステップS4で文字列(ωK)が辞書にな
ければ、ステップS6に進んでステップS1で求めた文
字Kの参照番号ωを符号語code(ω)として出力し、ま
た文字列(ωK)に新たな参照番号を付加して辞書に登
録し、更にステップS2の入力文字Kを参照番号ωに置
き換えると共に辞書アドレスnをインクリメントしてス
テップS2に戻って次の文字Kを読み込む。
【0010】一方、ステップS4で文字列(ωK)が辞
書にあればステップS5で文字列(ωK)を参照番号ω
に置き換え、再びステップS2に戻ってステップS4で
文字列(ωK)が辞書から探せなくなるまで最大一致長
の検索を続ける。
【0011】図11,12を参照してLZW符号化を具
体的に説明すると次のようになる。まず図11の入力デ
ータinput は左から右へと読む。最初の文字aを入力し
た時、辞書には文字aの他に一致する文字列がないの
で、OUTPUT CODE 1(参照番号ω)を符号語して出力す
る。そして文字aを語頭文字列ωとする。
【0012】次に2番目の文字bを入力したとすると、
この入力文字を語頭文字列ωに加えた拡張文字列ωK=
abは辞書にないことから、文字bのOUTPUT CODE 2を
符号語として出力する。そして、拡張文字列ωK=ab
に参照番号4を付けて辞書に登録する。実際の辞書登録
は図12の右側に示すように文字列1bとして登録され
る。そして文字bが語頭文字列ωとなる。
【0013】続いて3番目の文字aを入力したとする
と、文字bに語頭文字列ωを加えた拡張文字列ωK=b
a=2aは辞書にないことから、文字aのOUTPUT CODE
1 を符号語として出力した後、拡張文字列ωK=baを
2aで表わし、参照番号5を付けて辞書に登録する。そ
して文字aが新たな語頭文字列ωとなる。4番目の入力
文字bについては拡張文字列ωK=abは1bの符号語
4として既に辞書に登録されているので、文字列ωKを
新たな語頭文字列ωとし、5番目の文字cを入力して拡
張文字列ωK=4c=abcを作る。この拡張文字列ω
K=abcは辞書に登録されていないことから、文字列
ab=1bのOUTPUT CODE4 を符号語として出力し、拡
張文字列ωK=abcを辞書に4cの形で符号語6とし
て登録する。以下同様に、この処理を続ける。
【0014】図10の復号化処理は図9の符号化の逆の
操作を行う。図10のLZW復号化では、符号化時と同
様に予め辞書に全文字につき一文字からなる文字列を初
期値として登録してから復号化を始める。まずステップ
S1で最初の符号(参照番号)を読込み、現在のCODEを
OLDcodeとし、最初の符号は既に辞書に登録された一文
字の参照番号いずれかに該当することから、入力符号CO
DEに一致する文字code(K) を探し出し、文字Kを出力す
る。
【0015】尚、出力した文字Kは後の例外処理のため
FINchar にセットしておく。次にステップS2に進んで
次の符号を読込んでCODEにINcodeとしてセットする。ス
テップS3で新たな符号があるか否か、即ち符号入力の
終了の有無をチェックしてステップS4に進み、ステッ
プS3で入力された符号CODEが辞書に定義(登録)され
ているか否かチェックする。通常、入力した符号語は前
回までの処理で辞書に登録されているため、ステップS
5に進んで符号CODEに対応する文字列code(ωK)を辞
書から読出し、ステップS6で文字Kを一時的にスタッ
クし、参照番号CODE(ω)を新な符号CODEとして再度ス
テップS5に戻り、このステップS5,ステップS6の
手順を再帰的に参照番号ωが一文字Kに至るまで繰り返
し、最後にステップS7に進んでステップS6でスタッ
クした文字をLIFO(Last In Fast Out) 形式でポッ
プアップして出力する。同時にステップS7において、
前回使った符号ωと今回復元した文字列の最初の1文字
Kを組(ωK)と表した文字列に、新たな参照番号を付
加して辞書に登録する。
【0016】図13を参照してLZW復号化処理を具体
的に説明すると次のようになる。まず図13で最初の入
力符号語(INPUT CODE)は1であり、一文字a,b,cに
ついては既に参照番号1,2,3として図12に示すよ
うに辞書に登録されているため、辞書の参照により符号
語1に一致する参照番号の文字列aに置き換えて出力す
る。
【0017】次の符号語2についても同様にして文字b
に置き換えて出力する。このとき前回処理した符号語1
と今回復号した文字列の1番目の文字bとを組合わせた
文字列ωK=1bに新たな参照番号4を付加して辞書に
登録する。3番目の符号語4は辞書の検索により求めた
文字列1bから文字列abと置き換えて文字列abを出
力する。同時に前回処理した符号語2と今回復号した文
字列の1番目の文字aとの組合せた文字列ωK=2a
(=ba)に新たな参照番号5を付加して辞書に登録す
る。
【0018】以下同様に、この処理を繰り返す。
【0019】図13のLZW復号化では次の例外処理が
ある。この例外処理は、第6番目の入力符号語8の復号
で生ずる。符号語8は復号時に辞書に定義されておら
ず、復号できない。この場合には、前回処理した符号語
5に前回復号した文字列baの最初の一文字bを加えた
文字列5bを求め、更に 5b=2ab=bab と置き換えて出力する例外処理を行う。そして、文字列
の出力後に前回の符号語5に今回復号した文字列の1番
目の文字bを加えた文字列5bに参照番号8を付加して
辞書に登録する。
【0020】この例外処理は、図10の復号化処理フロ
ーのステップS4,ステップS8の処理を通じて行わ
れ、最終的にステップS7で文字列の出力と新たな文字
列に参照番号を付加した辞書への登録がステップS7で
行われる。尚、図10,13のLZW復号化は、復号側
で符号を解読しながら辞書をリアルタイムで作り出す場
合を説明したが、符号化の際に作られた辞書をそのまま
復号化側にコピーとして使用することで符号化しても良
い。この場合に復号化側での例外処理は不要になる。
【0021】しかし、図9のフローチャートに示す手順
でLZW符号化を行うと、1つの文字列を辞書検索する
たびに、最悪、辞書全体をサ−チしなければならなら
ず、辞書検索に時間がかかる問題があった。そこで従来
の辞書検索方式にあっては、外部ハッシュ法(open has
hing 又はchaining)を用いて処理速度を上げている。
【0022】まず一般的なハッシュ法による辞書検索に
あっては、複数の文字列からなる集合Sを考えたとき、
集合Sの文字列xの格納位置を、文字列xそのものから
格納位置を示すアドレスを直接計算できる仕組みになっ
ており、高速の辞書検索ができる。文字列の記憶場所、
即ちハッシュ表に0からm-1 までのアドレスが付されて
いるとすると、ハッシュ法では、関数 h:S→〔0,1,・・・,m-1 〕 を一つ定めて、集合Sの文字列xのアドレスをh(x)
として求める。この関数hをハッシュ関数、値h(x)
を文字列xのハッシュアドレスという。
【0023】ハッシュ法は、通常、集合Sの大きさがア
ドレス数mに比べてはるかに大きい場合に用いられる。
しかしながら、ハッシュ関数hをどのように選んだとし
ても、集合Sの相異なる文字列x1,x2に対して h(x1)=h(x2) ハッシュアドレスが一致してしまう場合が起こり得る。
これを衝突と呼び、衝突に対する対策の一つとして外部
ハッシュ法(open hashing, またはchaining)が用いら
れる。
【0024】外部ハッシュ法は図14に示すように、索
引(ディレクトリ)で示されるハッシュアドレスi毎に
連結リストを用意し、衝突を起こしたハッシュアドレス
h(x)=iの文字列xは、連結リストの先頭から順番
に格納する。同じハッシュアドレスh(x)をもつそれ
ぞれの連結リストはバケット(bucket) と呼ばれる。
【0025】辞書検索に外部ハッシュ法のリスト構造を
利用したLZW符号化の処理フローを図15に示す。ま
た図16に従来の辞書の構成例を示し、この辞書構成に
対応して辞書メモリ上の配置を図17に示す。まず図1
7において、辞書メモリは、ファーストメモリ(fir
st)100、ネクストメモリ(next)200及び
拡張メモリ(extention;extと省略)30
0で構成される。ここでファーストメモリ100が図1
4に示した外部ハッシュ法の索引(ディレクトリ)に対
応し、ネクストメモリ200が図14の連結リストの
「next」に対応し、更に拡張メモリ300が図14の
「name」に対応する。
【0026】また図16の辞書構成にあっては、右下に
取出して示すように、1つのノードに次の情報を示して
いる。 (1)ノード内 ; 拡張メモリの登録シンボル (2)ノード左上; アドレス (3)ノード左下; 次のファーストメモリのアドレス (4)ノード右下; ネクストメモリのアドレス 尚、数値Oはメモリ内容が空であることを示す。
【0027】図15のLZW符号化処理を、説明を簡単
にするため文字A、B、Cの3文字を対象とした場合を
例にとって説明すると次のようになる。まずステップS
1で次の初期化処理を行う。 (1)第1番目の文字を含むように辞書を初期化する。
ここでアルファベットA、B、Cの3文字を対象として
いることから、A、B、Cの文字コードをそのままハッ
シュアドレスとして図16の辞書メモリのアドレス1,
2,3に登録する。
【0028】(2)辞書への現在文字登録数nを前記
(2)で登録した文字数にセットする。アルファベット
3文字の場合には、n=3となる。 (3)入力した最初の文字Kを語頭文字列iとする。こ
の場合、最初の入力文字は「A」であることから語頭文
字列i=1とする。 (4)辞書検索用配列を0に初期化する。即ち、ファー
スト、ネクスト及び拡張のメモリの検索用配列はfirst
[1,Nmax],next[1,Nmax]、EXT [1,Nmax]で表わされ
るので、これを0に初期化する。
【0029】以上のステップS1の初期化処理が済んだ
ならば、ステップS2移行の処理に進み、その結果、現
在図16及び図17に示す辞書が作成された段階にある
ものとする。この状態でいま文字列「AAAA」を入力
して符号化する場合の処理を説明する。
【0030】ステップS1の初期化は済んでいるので、
最初の入力文字「A」を語頭文字列ω=1とし、ステッ
プS1で最初の入力文字「A」を語頭文字列ω=1と
し、ステップS2で2番目の入力文字「A」を読む。続
いてステップS3で未処理文字があることが判別されて
ステップS5〜ステップS9に示す辞書検索ステップに
進む。
【0031】辞書検索ステップでは、まずステップS5
で語頭文字列ω=1をカウンタiにi=1としてセット
し、且つjカウンタをj=0にセットする。ここでカウ
ンタiはファーストメモリの格納値で指定される辞書メ
モリのアドレス値であり、またカンウタjはネクストメ
モリの格納値で指定される辞書メモリのアドレス値であ
る。
【0032】次にステップS6でiカウンタで指定され
た図17の辞書メモリのアドレス1の内容を読み、拡張
メモリ300からシンボル(smbol)として「A」
を読出し、またファーストメモリ100から次のファー
ストアドレス「4」を読出してiカウンタをi=4にセ
ットする。続いてステップS7に進み、辞書登録ステッ
プに移行するか否か判断するためにi=0か否かチェッ
クし、このときi=4であることからステップS8に進
み、ステップS6のアドレス1の拡張メモリ300を参
照して得たシンボル「A」と、1番目の入力文字「A」
との一致を判別する。この場合、両者は一致しているこ
とからステップS2に戻り、3番目の入力文字「A」を
読込む。
【0033】続いてステップS3を介してステップS5
に進み、辞書メモリのアドレスωにそのときのカウンタ
iの値i=4をセットし、辞書メモリのアドレス4を参
照する。次にステップS6で辞書メモリのアドレス4の
内容を読み、拡張メモリ300に格納したシンボル(s
mbol)として「B」を読出し、またファーストメモ
リ100から次のファーストアドレス「6」を読出して
iカウンタをi=6にセットする。
【0034】続いてステップS7に進み、i=0か否か
チェックし、このときi=6であることからステップS
8に進み、ステップS6のアドレス4の拡張メモリ30
0から得たシンボル「B」と、ステップS2で得ている
入力文字「A」との一致を判別する。この場合、両者は
不一致あることからステップS9に進む。ステップS9
では、まずiカウンタに辞書メモリのアドレス4の参照
でネクストメモリ200から得たj=10の値をセット
してi=10とする。このiカウンタとjカウンタの置
き換えは、ステップS7の判断をiカウンタについての
み行っていることから、これをjカウンタについてもで
きるようにするためである。
【0035】続いて置き換えが済んだiカウンタで指定
される辞書メモリのアドレス10を参照し、アドレス1
0の拡張メモリ300に格納したシンボル「A」を読出
し、更に、アドレス10のファーストメモリ100に格
納している次のファーストメモリのアドレス値11をi
カウンタにセットする。次にステップS7に戻り、この
ときi=11であることからステップS9で得られたア
ドレス10のシンボル「A」と入力文字「A」とを比較
し、一致していることからステップS2に進み、3番目
の文字の処理に進む。
【0036】3番目及び4番目の入力文字「A」につい
ては1番目の入力文字と同様の処理が行われ、辞書メモ
リのアドレス10から11、更にアドレス11から12
に進み、アドレス12の処理が済むとステップS3で処
理対象となる文字がなくなることからステップS16に
進んで最終アドレスω=12を符号語code(ω)と
して出力して一連の処理を終える。
【0037】次にステップS11〜ステップS15の辞
書登録ステップの処理を説明する。辞書登録は辞書検索
ステップのファーストメモリ100又はネクストメモリ
200の検索でi=0となった時に行われる。即ち、ス
テップS7でi=0が判別されると、もはや辞書検索は
できないのでステップS10でそのときの辞書アドレス
ωを符号語code(ω)として出力して辞書登録ステ
ップに入る。
【0038】辞書登録ステップでは、まずステップS1
1でその時点での辞書メモリの現在登録文字数nをiカ
ウンタにセットし、更にnを1つインクリメントする。
続いてステップS12でj=0か否かチェックし、j=
0でなければi=0であるのでステップS13に進んで
ファーストメモリ100の登録処理を行う。j=0であ
ればステップS14に進んでネクストメモリの登録処理
を行う。
【0039】ステップS13のファーストメモリ100
の登録処理は、 (1)iカウンタで指定されるメモリアドレスnのファ
ーストメモリ100に中に、次の登録先を示す(n+
1)の値を格納し、 (2)次のメモリアドレス(n+1)の拡張メモリ10
0に入力文字Kをシンボルとして登録する。具体的に図
16、図17でアドレス11に続いて入力文字「A」を
登録する場合を例にとると、iカウンタで指定されるメ
モリアドレス11のファーストメモリ100に中に、次
の登録先を示すアドレス値12を格納し、次のメモリア
ドレス12の拡張メモリ100に入力文字「A」をシン
ボルとして登録する。
【0040】一方、ステップS14のネクストメモリ2
00の登録処理は、 (1)iカウンタで指定されるメモリアドレスのネクス
トメモリ200に中に、次の登録先を示す(n+1)の
値を格納し、 (2)次のメモリアドレス(n+1)の拡張メモリ10
0に入力文字Kをシンボルとして登録する。
【0041】具体的に図16、図17でアドレス11に
続いて入力文字「A」を登録する場合を例にとると、i
カウンタで指定されるメモリアドレス11のネクストメ
モリ200の中に、次の登録先を示すアドレス値10を
格納し、次のメモリアドレス10の拡張メモリ100に
入力文字「A」をシンボルとして登録する。以上の登録
処理が済むと、登録が済んだ文字Kをiカウンタにセッ
トしてステップS2からの辞書検索ステップに戻る。
【0042】
【発明が解決しようとする課題】このような従来のLZ
W符号は、ソフトウェアで符号化すると辞書検索処理に
多くの時間を要することから、辞書検索に外部ハッシュ
法を用いて高速化している。しかし、外部ハッシュ法に
よる書検索では、入力文字と候補文字との照合をシーケ
ルシャルに行うため、辞書検索時間が全体時間の約80
%を占め、高速化が難しいという欠点があった。
【0043】一方、本願発明者等にあっては、辞書検索
をするとき既に符号化済みの入力文字の情報を用いて連
結リストを複数個に分割して探索することで高速化を可
能とした符号化方式を提案している。しかし、実際の符
号化にあっては、使用出来るメモリ容量は予め決まって
おり、入力データの大きさによっては辞書メモリを全て
使用しないで符号化が終わる場合がある。また、用途に
よっては圧縮率よりも処理時間を優先させて符号化を行
いたい場合もある。
【0044】しかしながら、従来の符号化方式では高速
化の要求と高圧縮の要求をうまく融合させて符号化する
ことが難しいという問題があった。本発明は、このよう
な従来の問題点に鑑みてなされたもので、高速化と高圧
縮の要求に適切に対応した符号化ができるデータ圧縮方
式を提供することを目的とする。
【0045】
【課題を解決するための手段】図1は本発明の原理説明
図である。まず本発明は、符号化済み文字列を相異なる
部分列に分けて各部分列毎に異なる参照番号を付加して
辞書1に登録しておき、入力文字列を辞書1の中の部分
列の内、最大長一致するものの参照番号で指定した符号
化によりデータ圧縮する符号化手段2と、部分列の検索
に外部ハッシュ法を使用し、辞書1に登録した部分列の
参照番号iに入力文字Kの要素から抽出した情報Kmを
加えたハッシュ・アドレスを生成することにより、付加
情報Kmのビット数に応じた分割数の連結リストを生成
して辞書1を検索する辞書検索手段3とを備えたデータ
圧縮方式を対象とする。
【0046】このようなデータ圧縮方式につき本発明に
あっては、部分列の参照番号iに加える入力文字Kの要
素から抽出される情報Kmのビット数を、適宜に変えて
連結リストの分割数を指定する分割数指定手段4を設け
たことを特徴とする。ここで分割数指定手段4は、部分
列の参照番号iに加える入力文字Kの要素から抽出され
る情報Kmのビット数を、高速処理に適合したビット数
(図3(b)参照)或いは高圧縮処理に適合したビット
数(図3(a)参照)に指定する。
【0047】具体的には、検索分割数判定手段5により
入力文字列データの先頭に付加された情報から判定され
た分割数に基づいてビット数を指定する。更に分割数指
定手段4は、入力文字Kの要素から抽出される情報Km
のビット数を、予め指定した分割滓に対応するビット数
を指定するようにしていもよい。
【0048】
【作用】このような構成を備えた本発明のデータ圧縮方
式によれば、次の作用が得られる。データ圧縮の処理条
件としては、時間はかかっても高圧縮率が求められる場
合と、圧縮率よりも処理時間を優先させて高速に処理し
たい場合もある。
【0049】このような高圧縮率と高速化は相反する処
理条件であるが、本発明にあっては外部ハッシャ法に使
用するハッシュ・アドレスとして、部分列の参照番号、
即ちアドレスiに入力文字Kの要素の情報Km、即ち入
力文字コードのあるビット数Kmを加えたハッシュ・ア
ドレスとすることで、付加情報のビット数Kmに応じて
分割し、この連結リストの分割数を決める付加情報とし
て使用する文字コードの有効ビット数Kmを任意に指定
することで、高圧縮率或いは高速処理の各々に適合した
ダイナミックなデータ圧縮処理を適切に行うことができ
る。
【0050】
【実施例】図2は本発明の辞書検索機能を備えたデータ
圧縮方式の一実施例を示した実施例構成図である。図2
において、処理対象となる原デ−タ(文字データ或いは
符号語データ)10はDMA(Direct Memory Access)
制御回路12を介して入力される。制御手段としてのM
PU14は入力された原デ−タ10を、1文字Kと、今
までの文字列の参照番号iに1文字Kの文字コードの要
素ビットKmを付加したハッシュ・アドレスを辞書検索
回路16の複数文字読込み回路18にセットした後、辞
書検索回路16を起動する。この1文字Kの文字コード
の要素ビットは、外部ハッシュ法における連結リストの
検索分割数を決めるもので、文字コードを8ビットとす
ると、要素ビットKmの有効ビット数を例えば上位から
選ぶことで、次の9種類の連結リストの検索分割数が得
られる。 このような連結リストの分割数において、処理対象とな
る256種の全文字種に一致する分割数256のときが
完全ハッシュとなり、辞書の検索は1回で済む。
【0051】本発明にあっては、この9通りの中の分割
数の中から指定された処理条件に適合する分割数を指定
して符号化を行う。具体的な分割数の指定は、既に符号
化した直前の文字列の参照番号(辞書アドレス)iに加
える次の1文字Kの要素ビットKmのビット数をいくつ
にするかで指定できる。このための図1の原理説明図に
示した分割数指定手段4としての機能はMPU14のプ
ログラム制御により実現される。図3は入力データのサ
イズ(大きさ)に対する連結リストの検索分割数を示し
たもので、図3(a)に高圧縮の処理条件に適合した特
性を示し、図3(b)に高速の処理条件に適合した特性
を示す。
【0052】即ち、時間はかかっても高圧縮率を得たい
場合には、図3(a)の入力データサイズに反比例する
分割数の指定を行う。この場合には、入力データサイズ
が大きい程、連結リストの分割数が少なくなり、辞書中
の一致する部分列の最大長を長くできるので、高圧縮率
が得られる。しかし、一致する部分列が長くなること
で、辞書の検索回数が増え、処理時間は長くなる。また
メモリ容量が一定の場合には、使用されないメモリを有
効に利用することができる。
【0053】一方、圧縮率は得られなくとも処理時間を
短縮したい場合には、図3(b)に示す入力データサイ
ズに比例した分割数を指定する。この場合には、入力デ
ータサイズに応じて分割数が増加し、最大分割数256
では完全ハッシュとなるため、1回の辞書検索で符号化
できる。またメモリ容量が一定の場合には、入力データ
サイズにかかわらず、圧縮率を犠牲にして全て一定時間
に処理できることを意味する。
【0054】図3(a)(b)に示すいずれかの条件に
適合した入力データサイズに基づく分割数の指定は、オ
ペレータが処理対象とするデータサイズを知ってMPU
14に対し分割数を直接指定してもよい。また入力デー
タの先頭にあるデータの大きさを示す値を予め設定して
おき、このデータの大きさをMPU14で読取って図3
(a)又は図3(b)に示す分割特性に従って自動的に
入力データの大きさに対する分最適な分割数に変換する
こともできる。このMPU14による入力データの大き
さを判別する機能が、図1の原理説明図に示した検索分
割数判定手段5としての機能である。
【0055】このための入力データ形式は図4(a)に
示すように、先頭に入力データの大きさを示す値があ
り、そのあとに本来のデータ系列が続く。更に符号化済
みのデータは図4(b)に示すように、先頭に符号化に
使用した辞書の大きさ、即ち使用辞書サイズ(分割数及
び各分割辞書の使用サイズ)があり、その後に符号化済
データが続く。
【0056】従って復元時には、先頭の辞書使用の大き
さから、復元に使用する最大の大きさの辞書を決めて復
元を行うことができる。再び図2を参照するに、辞書検
索路16は以後、辞書メモリ20より1文字伸ばした文
字列の候補文字を読込み、一致検査回路22で入力文字
と候補文字との一致検査(照合)を行ない、連結検出回
路24で候補文字の有無の検出を行なう。
【0057】パイプライン制御回路26は、一致検査回
路22による入力文字と候補文字の照合と連結検出回路
24による候補文字の有無の検出とに並行して辞書メモ
リ20に次の候補文字の読出しをかける。このようにパ
イプライン制御回路26でパイプライン処理を行なうこ
とで、候補文字の複数個ごとの探索と照合処理が辞書メ
モリ20のサイクル・タイムで実行することができる。
【0058】更に辞書検索回路16には連続アドレス回
路28が設けられ、連続アドレス回路28は連続アドレ
スを発生し、複数文字読込み回路18に辞書メモリ20
の連続アドレスに登録されているハッシュアドレス及び
候補文字を読出すようにする。LZW符号の符号化で
は、辞書メモリ20中の最大長一致する文字列を求め
る。従って、入力文字を付加して文字列を逐次一文字ず
つ伸ばしていき、候補文字がなくなったところで最大一
致長の文字列であることが分かる。このとき、最大一致
長文字列まではアドレスωを使用した参照番号で表わさ
れており、その参照番号ωを入出力ポ−ト30から外部
に圧縮された符号語code(ω)として出力する。図5は
図2の辞書探索回路16の詳細を示した実施例構成図で
ある。
【0059】図5において、MPU1は最初に文字列の
1番目の文字参照番号i及び2番目の文字Kの8ビット
文字コードの例えば最上位ビットKm の組(Km,i)
をアドレス・レジスタ18−1にセットすると共に、入
力した2番目の文字Kをレジスタ22−1にセットす
る。次にパイプライン制御回路26に辞書検索回路16
の起動を指令する。
【0060】パイプライン制御回路26は、まずFF2
8−1をKm=0にリセットしてから辞書メモリ20に
読出をかける。FF24−2は辞書メモリ20のアドレ
スの最上位ビット (MSB)であり、アドレス・レジスタ1
8−1の内容が下位アドレスとなって辞書メモリ20の
配列 Firstに対応する領域を読み出す。ここで、辞書メ
モリ20の構成の一例を図6に示し、また図6に対応し
た辞書メモリ20の配列を図7に示す。尚、図6、図7
は説明を簡単にするためa,b,cの3文字の符号化を
例にとっている。
【0061】このメモリ配列において、first0,
1は本来のハッシュアドレスiに加えた次の1文字の最
上位ビットKmで決まり、 Km=0でfirst1 Km=1でfirst1 が指定される。
【0062】従って、図5において第1番目の文字のア
ドレス(参照番号)iと2番目の文字の最上位ビットK
m をアドレスとして辞書メモリ20をアクセスすると、
このときFF28−1のリセットによりKm=0である
ことから、図7の辞書メモリの中の配列first0
(第1ファーストメモリ)及びextention(拡
張メモリ)に対応する領域を読み出す。辞書メモリ20
より読出した1ワードの内容の内、連結リスト・アドレ
スに対応する部分(first0)はアドレスレジスタ
18−1にセットし、候補文字K´に対応する部分(e
xtention)はレジスタ18−2にセットする。
【0063】これと同時に、アドレスレジスタ18−1
に既に格納されていた内容のうち文字Kの最上位ビット
Kmを除く部分iをレジスタ18−3に移す。また、F
F28−1の内容KmをFF24−2に移す。この辞書
メモリ20の読出と平行して、レジスタ22−1中の入
力文字とレジスタ18−2中の候補文字が一致比較回路
22−2で比較照合される。
【0064】比較照合により入力文字Kと候補文字K´
が一致すると、パイプライン制御回路26は、次の入力
文字をレジスタ22−1にセットし、このときFF28
−1はリセットによりのままであることから、Km=0
となってアドレスレジスタ18−1で指定されるアドレ
スの辞書メモリ20の配列first0及びexten
tionに対応する領域を読出し、辞書メモリ20より
読出した1ワードの内容の内、連結リスト・アドレスに
対応する部分(first0)はアドレスレジスタ18
−1にセットし、候補文字K´に対応する部分(ext
ention)はレジスタ18−2にセットし、比較照
合を行い、以下同様に繰り返す。
【0065】このような比較照合の際に、比較照合と同
時にNOR回路24−1で辞書メモリ20から読出して
格納したアドレスレジスタ18−1の内容がオール0で
あるか否か判別されており、もし、オール0の場合、候
補文字がなくなったことが検出される。候補文字がなく
なったときのNOR回路24−1の出力はがMPU14
及びパイプライン制御回路26に与えられ、MPU14
は最後に比較照合が一致したメモリアドレスの値を符号
語として出力し、次の入力文字の探索に移る。次の文字
の探索についても同様に、レジスタ18−3の内容(既
に符号化済みの直前の参照番号)i及び入力文字Kの最
上位ビットKm の組をアドレス・レジスタ18−1にセ
ットすると共に、入力文字をレジスタ22−1にセット
して2文字目以降の探索処理を行う。
【0066】一方、比較照合の結果が不一致であった場
合には、同じアドレスの配列nextの領域を読出して
アドレスレジスタ18−1にセットし、次の辞書メモリ
20の読出しを行い、一致する候補文字が得られるまで
配列nextの読出しを繰り返す。このような本発明の
辞書検索を図6、図7につき具体的に説明すると次のよ
うになる。
【0067】いま図6、図7に辞書が構成された状態で
文字列「aaaa」を符号化するものとする。ここで文
字「a,c」の最上位ビットをKm=0、文字「b」の
最上位ビットをKm=1とする。まず1番目の文字
「a」の参照番号はi=1であり、また2番目の文字
「a」の文字コードの最上位ビットMSBがKm=0で
あるから、図7の辞書メモリ1のアドレス1の中のKm
=0で指定されるfirst0の内容10と、exte
ntionの候補文字「a」が読出される。この場合、
入力文字「a」と候補文字「a」とは一致することか
ら、次にfirst0から得られたアドレス10により
次辞書メモリをアクセスして候補文字「a」を読出し、
更に3番目の文字「a」の最上位ビットKm=0で指定
される配列first0の内容11を読出す。この3番
目の文字「a」についても候補文字「a」との一致が得
られ、同様に4番目及び5番目の文字を処理し、最後の
5番目の文字「a」の配列first0の内容は0にな
っていることから、候補文字が無くなったことを判別
し、最終アドレス12を入力文字列「aaaa」の符号
語として出力する。
【0068】一方、文字列「abc」については、2番
目の文字の最上位ビットはKm=1であることから、ア
ドレス1の配列first1の内容4が読出され、候補
文字との一致を条件にアドレス5の候補文字を読出し、
最終的にアドレス6の候補文字との一致が得られ、入力
文字「abc」の符号語6を出力する。尚、候補文字と
の一致が得られなかった時のnextの検索は従来と同
じである。
【0069】図8は本発明による符号化アルゴリズムの
フローチャートを示したもので、基本的には図15の従
来方式と同じである。相違点は、(1)ステップS5で
メモリアドレスとして直前に符号化された文字列の参照
番号iと次の1文字Kの要素ビット、例えば最上位ビッ
トKmとの組でメモリアドレスlを作成している点、
(2)ステップS6でl=(Km,i)の組で決まる辞
書メモリfist[l]の読出しで次のメモリアドレス
iの中の分割されたfirstを求めている点、(3)
更にステップS13のアドレスiへの候補文字の登録時
に、1つ前のアドレスi−1のfirst0,1のどち
らにアドレスiを登録するかを候補文字の最上位ビット
Kmに応じて区別している点、である。
【0070】尚、上記の実施例では候補文字をそのまま
辞書メモリに格納し、比較する方法を述べたが、メモリ
容量を減らすため、候補文字はハッシュ・アドレスに付
加したビットKmを除いたビットだけをもたせても良
い。また、本発明の他の実施例としてハッシュ・アドレ
スに入力文字の特定のビットKmを付加するのでなく、
入力文字を加工して作り出した情報のビットを付加して
も同様に実現できることは明らかである。
【0071】
【発明の効果】以上説明したように本発明によれば、辞
書メモリの例えば入力データサイズに対する分割数の特
性を、高速化か高圧縮化かの処理条件に応じて選び、入
力データの大きさに応じて自動的に若しくは人為的に指
定することにより、符号化毎にダイナミックに決定して
符号化を行うようにすることで、高速化の要素と高圧縮
の要素をうまく融合させた符号化によるデータ圧縮を実
現できる。
【図面の簡単な説明】
【図1】本発明の圧縮方式の原理説明図
【図2】本発明の実施例構成図
【図3】本発明の入力データサイズに対する分割数を処
理条件に分けて示した特性図
【図4】本発明の入力データ形式及び符号化済みデータ
形式を示した説明図
【図5】図2の辞書検索回路の詳細を示した実施例構成
【図6】図2の符号化に使用する辞書メモリの構成を示
した説明図
【図7】図6に対応した辞書メモリの配置説明図
【図8】本発明の符号化アルゴリズムを示したフローチ
ャート
【図9】従来のLZW符号化アルゴリズムのフローチャ
ート
【図10】従来のLZW復号化アルゴリズムのフローチ
ャート
【図11】従来のLZW符号化の具体例説明図
【図12】辞書構成例の説明図
【図13】従来のLZW復号化の具体例説明図
【図14】外部ハッシュ法のリスト構造説明図
【図15】外部ハッシュ法を用いた従来のLZW符号の
符号化アルゴリズムを示したフローチャート
【図16】図15の符号化に使用する辞書メモリの構成
を示した説明図
【図17】図16に対応した辞書メモリの配置説明図
【符号の説明】
1:辞書 2:辞書検索手段 3:データ付加手段 4:判定手段 10:原データ 12:DMA制御回路 14:MPU 16:辞書検索手段(辞書検索回路) 18:複数文字読込み回路 18−1:アドレスレジスタ 18−2,18−3:レジスタ 20:辞書メモリ 22:一致検査回路 22−1:レジススタ 22−2:比較器 24:連結検出回路 24−1:NOR回路 24−2:FF 26:パイプライン制御回路 28−1:FF
フロントページの続き (72)発明者 中野 泰彦 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平6−83575(JP,A) 特開 平4−219818(JP,A) 特開 平4−156110(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 5/00 G06F 17/30 G06T 9/00 H03M 7/40 H04N 1/41

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】符号化済み文字列を相異なる部分列に分け
    て各部分列毎に異なる参照番号を付加して辞書(1)に
    登録しておき、入力文字列を前記辞書(1)の中の部分
    列の内、最大長一致するものの参照番号で指定して符号
    化することによりデータ圧縮する符号化手段(2)と、 前記部分列の検索に外部ハッシュ法を使用し、前記辞書
    (1)に登録した部分列の参照番号(i)に入力文字
    (K)の要素から抽出した情報(Km)を加えたハッシ
    ュ・アドレスを生成することにより、前記付加情報(K
    m)のビット数に応じた分割数の連結リストを生成して
    検索する辞書検索手段(3)とを備えたデータ圧縮方式
    に於いて、 前記部分列の参照番号(i)に加える入力文字(K)の
    要素から抽出される情報(Km)のビット数を、適宜に
    変えて連結リストの分割数を指定する分割数指定手段
    (4)を設けたことを特徴とするデータ圧縮方式。
  2. 【請求項2】請求項1記載のデータ圧縮方式に於いて、 前記分割数指定手段(4)は、前記部分列の参照番号
    (i)に加える入力文字(K)の要素から抽出される情
    報(Km)のビット数を、高速処理に適合したビット数
    或いは高圧縮処理に適合したビット数に指定することを
    特徴とするデータ圧縮方式。
  3. 【請求項3】請求項1記載のデータ圧縮方式に於いて、 前記分割数指定手段(4)は、前記部分列の参照番号
    (i)に加える入力文字(K)の要素から抽出される情
    報(Km)のビット数を、符号化対象とする文字列デー
    タの大きさを示す情報に基づいて指定することを特徴と
    するデータ圧縮方式。
  4. 【請求項4】請求項1記載のデータ圧縮方式に於いて、 文字列の先頭に付加された情報から分割数を判定する検
    索分割数判定手段(5)を設けたことを特徴とするデー
    タ圧縮方式。
  5. 【請求項5】請求項1記載のデータ圧縮方式に於いて、 前記分割数指定手段(4)は、前記部分列の参照番号
    (i)に加える入力文字(K)の要素から抽出される情
    報(Km)のビット数を、予め指定した分割数に対応し
    たビット数とすることを特徴とするデータ圧縮方式。
JP3056704A 1991-03-20 1991-03-20 データ圧縮方式 Expired - Fee Related JP2952067B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3056704A JP2952067B2 (ja) 1991-03-20 1991-03-20 データ圧縮方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3056704A JP2952067B2 (ja) 1991-03-20 1991-03-20 データ圧縮方式

Publications (2)

Publication Number Publication Date
JPH0683573A JPH0683573A (ja) 1994-03-25
JP2952067B2 true JP2952067B2 (ja) 1999-09-20

Family

ID=13034861

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3056704A Expired - Fee Related JP2952067B2 (ja) 1991-03-20 1991-03-20 データ圧縮方式

Country Status (1)

Country Link
JP (1) JP2952067B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022094108A (ja) * 2020-12-14 2022-06-24 キオクシア株式会社 圧縮装置および制御方法
CN116151740B (zh) * 2023-04-21 2023-08-01 北京明苑风华文化传媒有限公司 一种库存交易数据过程安全管理***及云平台

Also Published As

Publication number Publication date
JPH0683573A (ja) 1994-03-25

Similar Documents

Publication Publication Date Title
JP3231105B2 (ja) データ符号化方式及びデータ復元方式
JP2952067B2 (ja) データ圧縮方式
JP3038223B2 (ja) データ圧縮方式
JP3835489B2 (ja) データ圧縮装置及び復元装置の辞書検索登録方法
JP3038233B2 (ja) データ圧縮及び復元装置
JP3038234B2 (ja) データ圧縮装置の辞書検索方式
JP2952068B2 (ja) データ圧縮及び復元方式
JP3088740B2 (ja) データ圧縮及び復元方式
JP2825960B2 (ja) データ圧縮方法及び復元方法
JP3115066B2 (ja) 辞書検索方法
JPH06161705A (ja) データ符号化方式及びデータ復元方式
JP2999587B2 (ja) データ圧縮及び復元方式
JP3132774B2 (ja) データ圧縮・復元装置
JP3388768B2 (ja) データ圧縮及び復元方式
JPH05252049A (ja) データ圧縮処理方式及びデータ復元処理方式
JPH05152971A (ja) データ圧縮・復元方法
JP3053656B2 (ja) データ圧縮における辞書登録方式
JP2772124B2 (ja) 辞書検索方式
JP3058931B2 (ja) データ圧縮・復元における辞書登録方式
JP3056268B2 (ja) データ圧縮・復元における辞書登録方式
JP3103172B2 (ja) 辞書検索方法
JP2999561B2 (ja) データ圧縮及び復元装置
JP2772125B2 (ja) 辞書検索方式
JP3012679B2 (ja) データ圧縮方法
JP2957801B2 (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: 19990615

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

Free format text: PAYMENT UNTIL: 20080709

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090709

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees