JP3058711B2 - データ圧縮及び復元方法 - Google Patents

データ圧縮及び復元方法

Info

Publication number
JP3058711B2
JP3058711B2 JP9633791A JP9633791A JP3058711B2 JP 3058711 B2 JP3058711 B2 JP 3058711B2 JP 9633791 A JP9633791 A JP 9633791A JP 9633791 A JP9633791 A JP 9633791A JP 3058711 B2 JP3058711 B2 JP 3058711B2
Authority
JP
Japan
Prior art keywords
dictionary
data
encoded
character string
predetermined number
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 - Lifetime
Application number
JP9633791A
Other languages
English (en)
Other versions
JPH04306019A (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 JP9633791A priority Critical patent/JP3058711B2/ja
Publication of JPH04306019A publication Critical patent/JPH04306019A/ja
Application granted granted Critical
Publication of JP3058711B2 publication Critical patent/JP3058711B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】(目次) 産業上の利用分野 従来の技術(図9、図10) 発明が解決しようとする課題 課題を解決するための手段(図1) 作用 実施例 (a)第1の実施例の説明(図2乃至図7) (b)第2の実施例の説明(図8) (c)他の実施例の説明 発明の効果
【0002】
【産業上の利用分野】本発明は、符号化済データを相異
なる部分列に分けて辞書に登録しておき、入力データを
辞書中の部分列の内、最長一致するものの参照番号で指
定して符号化するデータ圧縮及び復元方法に関する。
【0003】近年、文字コード、ベクトル情報、画像な
ど様々な種類のデータが、コンピュータで扱われるよう
になり、扱われるデータ量も急速に増加してきている。
【0004】大量のデータを扱う時は、データ中の冗長
な部分を省いて、データ量を圧縮することで、記憶容量
を減らしたり、速く伝送したりできるようになる。
【0005】この様々なデータを1つの方式でデータ圧
縮できる方法として、ユニバーサル符号化が提案されて
いる。
【0006】ここで、本発明の分野は、文字コードの圧
縮に限らず、様々なデータに適用できるが、以下では、
情報理論で用いられている呼称を踏襲し、データの1wo
rd単位を文字と呼び、データが任意wordつながったもの
を文字列と呼ぶことにする。
【0007】ユニバーサル符号の代表的な方法として、
ジプーレンペル(Ziv −Lempel)符号がある(例えば、
宗像「Ziv −Lempelのデータ圧縮法」、情報処理、Vol.
26、No.1、1985年参照の事)。
【0008】ジプーレンペル符号では、ユニバーサル型
と、増分分解型(Incremental parsing)の2つのアルゴ
リズムが提案されている。
【0009】更に、ユニバーサル型アルゴリズムの改良
として、LZSS符号がある(例えば、T.C.Bell、「Be
tter OPM/L Text Compression 」、IEEE Trans,on Com
mun., Vol.COM-34,No.12, Dec.1986参照の事)。
【0010】又、増分分解型アルゴリズムの改良として
は、LZW(Lempel−Ziv −Welch)符号がある(T.A.We
lch,「A Technique for High-Performance Data Compre
ssionn」,Computer, June 1984参照の事)。
【0011】これらの符号の内、高速処理ができること
と、アルゴリズムの簡単さからLZW符号が、記憶装置
のファイル圧縮などで使われるようになっている。
【0012】
【従来の技術】図9、図10は従来技術の説明図であ
り、図9(A)はLZW符号化処理フロー、図9(B)
はLZW復号化処理フロー、図10(A)はLZW符号
化説明図、図10(B)は辞書の説明図、図10(C)
はLZW復号化説明図である。
【0013】LZW符号化は、書き換え可能な辞書を持
ち、入力文字コード・データ中を相異なる文字列に分
け、この文字列を出現した順に番号を付けて、辞書に登
録するとともに、現在入力している文字列を辞書に登録
してある最長一致文字列の番号だけで表して、符号化す
るものであり、例えば、特開昭59−231683号公
報や米国特許第4558302号明細書に開示されてい
る。
【0014】先ず、LZW符号化について、図9
(A)、図10(A)、図10(B)により、説明す
る。
【0015】S1)予め全文字につき、一文字からなる
文字列を初期値として、辞書Dに登録し、辞書の登録数
Nを文字種数Aと置き、カーソルをデータの先頭の位置
に置く。
【0016】S2)辞書Dを参照し、カーソルの位置か
らの文字列に一致する辞書登録の最長文字列Sを見つけ
る。
【0017】S3)文字列Sの識別番号を「LOG2
ビット」(整数)で表して出力し、辞書登録数nを1つ
インクリメントする。ただし、「X」はX以上の最小の
整数を表す。
【0018】S4)文字列Sに、カーソルの次の文字C
を付加した文字列SCを辞書Dに登録し、識別番号nを
与え、カーソルを文字列Sの後ろの文字に移動させ、ス
テップS2に戻る。
【0019】この符号化を図10(A)、(B)によ
り、具体的に説明する。ここで、説明の簡単のため、a
bcの3文字の組み合わせからなるデータを圧縮する場
合について説明するものとし、図10(A)の入力デー
タinput は、左から右へ読み込む。
【0020】最初の文字aを入力したとき、辞書Dに
は、aの他に一致する文字列がないので、辞書番号1を
符号語として出力する。そして、拡張した文字列abに
辞書番号4を付けて辞書Dに登録する。実際の登録は、
文字列(1b)の形となる。
【0021】続いて、2番目のbが文字列の先頭にな
る。辞書Dには、bの他に一致する文字列がないので、
辞書番号2を符号語として出力し、拡張した文字列ba
を、実際には2aの形で、辞書番号5を付けて辞書Dに
登録する。
【0022】3番目のaが次の文字列の先頭になり、辞
書Dには、abまで一致する文字列があるので、abの
辞書番号4を符号語として出力し、拡張した文字列ab
cを、実際には、4cの形で、辞書番号6を付けて辞書
Dに登録する。以下、同様にこの処理を続ける。
【0023】このようにして、辞書内の最長一致の文字
列の辞書番号で符号化し、この文字列に次の一文字を追
加した文字列を、辞書に登録する。
【0024】次に、LZW復号化について、図9
(B)、図10(B)、図10(C)により、説明す
る。
【0025】S1)予め全文字につき、一文字からなる
文字列を初期値として、辞書Dに登録し、辞書の登録数
nを文字種数Aと置き、カーソルをデータの先頭の位置
に置く。
【0026】S1)「log2 n」ビットで表された符
号を読み込んで、辞書番号を復号し、辞書登録数nを1
つインクリメントする。
【0027】S2)辞書Dを参照し、カーソルの位置か
らの文字列に一致する辞書登録の最長文字列Sを見つけ
る。S3)復号した辞書番号に対応する文字列Sを、辞
書Dから読み出して、カーソルの位置から並べる。
【0028】S4)直前に復号した文字列S′の後ろ
に、カーソルの最初の文字Cを追加した文字列S′C
を、辞書Dに付け加え、それに辞書番号nを与え、カー
ソルを復元した文字列Sの後ろに移動させ、ステップS
2に戻る。この複号化を、図10(B)、(C)によ
り、具体的に説明する。
【0029】先ず、最初の入力文字は1であり、一文字
a、b、cについては、既に参照番号1、2、3とし
て、図10(B)に示すように、辞書Dに登録されてい
るため、辞書Dの参照により、符号1に一致する参照番
号の文字列aに置き代えて出力する。
【0030】次の符号2についても、同様にして文字b
に置き代えて出力する。この時、前回処理した符号と、
今回復号した最初の一文字bとを組み合わせた(1b)
に、新たな参照番号4を付加して、辞書Dに登録する。
【0031】3番目の符号4は、辞書Dの探索により、
1bからabと置き代えて、文字列abを出力する。同
時に、前回処理した符号2と、今回復号した文字列の1
番目の文字aとを組み合わせた文字列2a(=ba)
を、新たな参照番号5を付加して辞書Dに登録する。
【0032】以下、同様にこの処理を繰り返す。このよ
うにして、入力符号を辞書内の登録文字列に置き代え
て、復号化し、前回処理した符号と今回復号した文字列
の1番目の文字とを組み合わせた文字列を、辞書に登録
する。
【0033】
【発明が解決しようとする課題】従来のLZW符号で
は、入力文字コード・データ中を相異なる文字列に分け
て符号化するとき、現在符号化中の各文字列とは独立に
出現するとして符号化する形式を取っている。
【0034】この方法は、無記憶情報源の符号化には、
問題がないが、実際の文章等の多くのデータは、記憶情
報源と見なされ、従来のLZW符号では、文字列が出現
する履歴を十分利用できておらず、データ圧縮後も、文
字列の出現の従属性については、冗長性が残り、文字列
間の相関を十分利用できず、圧縮率が向上しないという
問題があった。
【0035】従って、本発明は、文字列間の相関を削減
して、圧縮率を向上することができるデータ圧縮及び復
元方法を提供することを目的とする。
【0036】
【課題を解決するための手段】図1は本発明の原理図で
ある。本発明の請求項1は、符号化データを相違なる部
分列に分けて、辞書10に番号を付して登録しておき、
入力データの符号化部分列を該辞書10中の部分列の最
長一致するものの番号で指定して符号化するデータ圧縮
方法において、該部分列に対し順次、番号を割り付けた
第一の辞書11と、該部分列に対し、所定数の先頭デー
タ単位で順次、番号を割り付けた第二の辞書12、13
とを設け、該第2の辞書12、13の該符号化部分列の
直前の所定数のデータを先頭とする部分列の登録個数に
応じて、該符号化部分列を該第一の辞書11を使用し
て、又は該符号化部分列に所定数の直前のデータを付加
した部分列を該第二の辞書12、13を使用して、選択
的に符号化することを特徴とする。
【0037】本発明の請求項2は、請求項1において、
前記第二の辞書12、13を、前記先頭データの個数単
位に複数設け、前記先頭データの個数毎に閾値を定めて
おき、前記符号化部分列の直前の所定数のデータを先頭
とする部分列の登録個数が、当該所定数の先頭データの
閾値より大きく、該所定数より1つ大きい数のデータを
先頭とする部分列の登録個数が、当該個数の先頭データ
の閾値より小さい場合には、前記先頭データが所定数の
前記第二の辞書12、13を使用して、符号化すること
を特徴とする。
【0038】本発明の請求項3は、請求項2において、
前記使用する第二の辞書12、13に、対応する部分列
が登録されていない場合には、前記所定数より小さい数
の前記第二の辞書12又は前記第一の辞書11を用い
て、符号化することを特徴とする。
【0039】本発明の請求項4は、請求項1により符号
化されたデータを復元するデータ復元方法において、前
記部分列に対し順次、番号を割り付けた第一の辞書11
と、前記部分列に対し、所定数の先頭データ単位で順
次、番号を割り付けた第二の辞書12、13とを設け、
該第二の辞書12、13の該符号化部分列の直前の所定
数のデータを先頭とする部分列の登録個数に応じて、該
符号化データを該第一の辞書11を使用して、又は該符
号化部分列に所定数の直前のデータを付加した部分列を
該第二の辞書12、13を使用して、選択的に復元する
ことを特徴とする。
【0040】本発明の請求項5は、請求項4において、
前記第二の辞書12、13を、前記先頭データの個数単
位に複数設け、前記先頭データの個数毎に閾値を定めて
おき、前記符号化部分列の直前の所定数のデータを先頭
とする部分列の登録個数が、当該所定数の先頭データの
閾値より大きく、該所定数より1つ大きい数のデータを
先頭とする部分列の登録個数が、当該個数の先頭データ
の閾値より小さい場合には、前記先頭データが所定数の
前記第二の辞書12、13を使用して、復元することを
特徴とする。
【0041】本発明の請求項6は、請求項5において、
前記使用する第二の辞書12、13に、対応する部分列
が登録されていない場合には、前記所定数より小さい数
の前記第二の辞書12又は前記第一の辞書11を用い
て、復元することを特徴とする。
【0042】
【作用】本発明の請求項1では、第一の辞書11が部分
列に対して、順次、番号を割り当てるため、番号のビッ
ト数が学習度合いに応じて、次第に大きくなる。これに
対し、部分列に対し、所定数の先頭データ単位で順次、
番号を割り付ければ、同一部分列の番号ビット数を減少
できる。そこで、かかる第二の辞書12、13を設け
て、第一の辞書11に比べ、同一部分列の番号のビット
数を減少できるようにした。
【0043】そして、第二の辞書12、13の符号化部
分列の直前の所定数のデータを先頭とする部分列の登録
個数に応じて、符号化部分列を第一の辞書11を使用し
て、又は符号化部分列に所定数の直前のデータを付加し
た部分列を第二の辞書12、13を使用して、選択的に
符号化するようにして、各文字列の出現頻度、即ち各文
字列の辞書への学習度合いによって、辞書を切り換え
て、符号化するようにして、文字列間の相関を十分利用
した符号化ができ、圧縮率を向上できるようにした。
【0044】本発明の請求項2では、第二の辞書12、
13を、先頭データの個数単位に複数設けても、先頭デ
ータの個数毎に閾値を定めているので、符号化部分列の
直前の所定数のデータを先頭とする部分列の登録個数に
応じた最適の辞書を用いた符号化ができる。
【0045】本発明の請求項3では、使用する第二の辞
書12、13に、対応する部分列が登録されていない場
合には、所定数より小さい数の第二の辞書12又は第一
の辞書11を用いて、符号化するので、閾値で選択して
も、符号化されない事態を防ぐことができる。
【0046】本発明の請求項4では、請求項1の圧縮デ
ータを効率良く復元できる。本発明の請求項5では、請
求項2の圧縮データを最適辞書を用いて、復元できる。
【0047】本発明の請求項6では、請求項3の圧縮デ
ータが復元されない事態を防止することができる。
【0048】
【実施例】(a)第1の実施例の説明 図2は本発明の一実施例のためのブロック図、図3は図
2の履歴をもつ辞書の説明図、図4は図2の辞書の構成
図、図5は辞書による符号化説明図である。
【0049】図中、1はCPUであり、制御手段を構成
し、データメモリ2とプログラムメモリ3とが接続され
る。
【0050】プログラムメモリ3には、全体の制御を行
うコントロールプログラム15と、辞書10に初期値を
設定する初期値設定プログラム16と、データメモリ2
のデータバッファ14から一定量の文字を取り込み、デ
ータバッファ14から一文字ずつ取り出す符号化プログ
ラム17と、0重辞書11、1重辞書12、2重辞書1
3の登録数を調べ、0重、1重、2重のどの履歴で符号
化すべきかを判定する検索選択判定プログラム18と、
0重辞書11を用いて入力した文字列と最長一致する文
字列を検出する0重最長一致検索プログラム19と、1
重辞書12を用いて入力した文字列と最長一致する文字
列を検出する1重最長一致検索プログラム20と、2重
辞書13を用いて入力した文字列と最長一致する文字列
を検出する2重最長一致検索プログラム21と、各辞書
11〜13に符号化済文字列を登録する辞書登録プログ
ラム22とを備える。
【0051】データメモリ2は、0重辞書11と、1重
辞書12と、2重辞書13とを有する辞書10と、外部
から符号化すべきデータを格納するデータバッファ14
とを備える。
【0052】0重辞書11は、図3(A)の0重履歴の
辞書の木に示すように、履歴を考慮しない辞書であり。
root(木の根)を起点とし、一文字づつ階層的に葉を形
成した木構造を有し、各節点に番号を付けたものであ
る。
【0053】この例では、a、b、cの3文字の組合わ
せからなるアルファベットを示し、各節点の番号は、親
の番号がその子供の番号より小さい番号を持つと言う規
則性の他は、番号の並び方は順不同になるが、ここで
は、便宜上に各節点は階層毎に順に番号を付けた。
【0054】辞書に木構造を用いることで、入力した文
字列と対応する辞書中の最長文字列の探索は、入力文字
列を一文字ずつ順に、辞書の木の根(root)から葉(le
af)へと照合を取ることで行うことができる。
【0055】具体的には、図4に示すように、一文字か
ら始まる各部分列に対し、順次、番号を割りつけたもの
である。
【0056】一方、1重辞書12は、図3(B)の1重
履歴の辞書の木に示すように、0重履歴辞書11の第1
階層から始まるサブセットとなっており、図4に示すよ
うに、先頭一文字毎の単位で、順次、番号を割りつけた
もので、例えば、2文字目が同じaでも、先頭文字が異
なれば、aa、baのように、同一の番号「1」が割り
つけられる。
【0057】更に、2重辞書13は、図3(C)の2重
履歴の辞書の木に示すように、0重履歴辞書11の第2
階層から始まるサブセットとなっており、図4に示すよ
うに、先頭二文字毎の単位で、順次、番号を割りつけた
もので、例えば、3文字目が同じaでも、先頭文字が異
なれば、aaa、abaのように、同一の番号「1」が
割りつけれられる。
【0058】図4に示すように、a、b、cの3文字の
組合わせからなるアルファベットに対し、文字列a〜b
babの例では、0重辞書11では、aから順に番号を
割りつけ、0重節点数n0 は、「33」となり、1重辞
書12では、a、b、cをカットし、aaから順に番号
を割りつけ、1重節点数は、先頭をaとするn1 (a)
が「12」、先頭をbとするn1 (b)が「13」、先
頭をcとするn1 (C)が「5」となる。
【0059】2重辞書13では、a〜caをカットし、
aaaから順に番号を割りつけ、2重節点数は、先頭を
aaとするn2 (aa)が「5」、先頭をabとするn
2 (ab)が「4」、先頭をacとするn2 (ac)が
「0」、先頭をbaとするn2 (ba)が「6」、先頭
をbbとするn2 (bb)が「4」、先頭をbcとする
2 (bc)が「0」、先頭をcaとするn2 (ca)
が「2」、先頭をcbとするn2 (cb)が「1」、先
頭をccとするn2 (cc)が「0」となる。
【0060】このような辞書を用いると、図5に示すよ
うに、注目文字列「baa」を符号化するのに、0重履
歴辞書11では、5ビットの番号「17」が割り当てら
れるが、1重履歴辞書12では、前の文字「a」を加
え、「abaa」として符号化され、4ビットの番号
「11」が割り当てられる。
【0061】このため、同じ文字列を符号化するのに、
1ビット少なくて済み、文字間の相関が大きい場合に
は、高次の履歴をとることにより、文字列は少ないビッ
ト数の番号で表される。
【0062】ここで、前の文字を加えた文字列とするの
は、例えば、1重辞書12では、番号「11」に相当す
る文字列が、図4に示すように、2つあり、これらを復
元時に区別するため、前の文字を加え、前の文字から2
つの文字列を区別するためである。
【0063】図6は本発明の第1の実施例処理フロー図
である。S1)予め全文字につき、一文字からなる文字
列を初期値として、辞書10に登録し、0重辞書11の
登録数n0 を文字種数Aと、1重辞書12の登録数n1
(i)を0、2重辞書13の登録数n2 (i,j)を0
と置き、カーソルをデータの先頭の位置に置く。
【0064】S2)注目文字列の1つ前の文字pの1重
辞書12の登録数n1 (p)が所定の閾値T1未満かを
調べる。n1 (p)がT1未満なら、学習が進んでいな
い初期の状態であり、1重辞書12を利用しても、対応
する文字列が登録されている可能性が少なく、n
1 (p)がT1以上なら、学習が進んでおり、1重辞書
12に、対応する文字列が登録されている可能性が大き
い。
【0065】S3)n1 (p)がT1未満なら、0重辞
書11を参照し、カーソルの位置からの文字列に一致す
る辞書登録の最長文字列S0を見つけ、文字列S0の識
別番号を「log2 nビット」(整数)で表して出力す
る。
【0066】S4)文字列S0に、カーソルの次の文字
Cを付加した文字列S0Cを辞書11〜13に登録し、
各々識別番号n0 、n1 (i)、n2 (i,j)を与
え、登録数n0 、n1 (i)、n2 (i,j)をインク
リメントし、カーソルを文字列S0の後ろの文字に移動
させ、ステップS2に戻る。
【0067】S5)一方、n1 (p)がT1以上なら、
注目文字列の2つ前の2文字pqの2重辞書13の登録
数n2 (q,p)が所定の閾値T2未満かを調べる。n
2 (q,p)がT2未満なら、学習が進んでいない初期
の状態であり、2重辞書13を利用しても、対応する文
字列が登録されている可能性が少なく、n2 (q,p)
がT2以上なら、学習が進んでおり、2重辞書13に、
対応する文字列が登録されている可能性が大きい。
【0068】S6)n2 (q,p)がT2未満なら、1
重辞書12を参照し、カーソルの1つ手前位置からの文
字列に一致する辞書登録の最長文字列S1を見つける。
【0069】S7)最長文字列S1を検出したかを調
べ、検出しないと、1重辞書12には、登録されていな
いため、「log2 1 (p)」ビットで番号0を出力
し、ステップS3の0重辞書11の探索に進む。この番
号0は、辞書の切り換え符号の意味をもつ。
【0070】S8)一方、最長文字列S1を検出する
と、1重辞書12のS1に関する番号を「log2 1
(p)」ビットで出力する。
【0071】文字列S1に、カーソルの次の文字Cを付
加した文字列S1Cを辞書11〜13に登録し、各々識
別番号n0 、n1 (i)、n2 (i,j)を与え、登録
数n0 、n1 (i)、n2 (i,j)をインクリメント
し、カーソルを文字列S1の後ろの文字に移動させ、ス
テップS2に戻る。
【0072】S9)n2 (q,p)がT2以上なら、2
重辞書13を参照し、カーソルの1つ手前位置からの文
字列に一致する辞書登録の最長文字列S2を見つける。
【0073】S10)最長文字列S2を検出したかを調
べ、検出しないと、2重辞書13には、登録されていな
いため、「log2 2 (q,p)」ビットで番号0を
出力し、ステップS3の0重辞書11の探索に進む。こ
の番号0は、辞書の切り換え符号の意味を持つ。
【0074】S11)一方、最長文字列S2を検出する
と、2重辞書13のS2に関する番号を「log2 2
(q,p)」ビットで出力する。
【0075】文字列S2に、カーソルの次の文字Cを付
加した文字列S2Cを辞書11〜13に登録し、各々識
別番号n0 、n1 (i)、n2 (i,j)を与え、登録
数n0 、n1 (i)、n2 (i,j)をインクリメント
し、カーソルを文字列S2の後ろの文字に移動させ、ス
テップS2に戻る。
【0076】図7は本発明の第1の実施例動作説明図で
ある。図では、「ababaabcab」の10個の文
字を入力し、図4の辞書10にて、0重、1重、2重履
歴の辞書11〜13を用いて符号化した例を示す。
【0077】0重履歴辞書11を用いると、各辞書番号
の符号語は6ビットで表され、入力データは3個の文字
列に分解され、符号語は合計18ビットとなる。
【0078】これに対し、1重履歴辞書12を用いる
と、辞書番号の符号語は4ビット又は3ビットで表さ
れ、入力データは4個の文字列に分解されるが、符号語
は合計15ビットで済み、1重履歴を用いた時、0重履
歴より少ないビット数で符号化され、圧縮率が向上する
ことになる。
【0079】更に、2重履歴辞書13を用いると、符号
語は2ビット又は3ビットで表されるが、図の例では、
9文字目以降のbcで始まる文字列が2重履歴辞書13
に登録されていないため、0重履歴辞書11に戻って表
している。
【0080】このように、履歴の次数が高い辞書では、
辞書登録数が十分大きくないと、表せない文字列が生じ
るため、本発明では、辞書登録数が増えるにつれて、高
次の履歴の辞書を用いるように、切り換えているのであ
る。
【0081】1重履歴の場合は、8文字目までを符号語
12ビットで表すが、2重履歴では、9ビットで表すこ
とができ、この例からも高次履歴になる程、短いビット
数で効率良く符号化することができることが判る。
【0082】(b)第2の実施例の説明 図8は本発明の第2の実施例処理フロー図であり、0重
履歴と1重履歴の辞書で符号化する例を示している。
【0083】図のステップS1〜S8は、図6のS1〜
S8と同様であり、説明を省略する。
【0084】この例では、2重辞書まで使用したものに
比し、圧縮率は落ちるが、比較的短い文章等では、符号
化時間を短縮できる。
【0085】(c)他の実施例の説明 上述の実施例では、圧縮方法について説明したが、辞書
の番号で文字列は一意に指定されているので、復元は圧
縮の逆の操作を行えば、元の文字を復元できる。
【0086】即ち、部分例に対し順次、番号を割り付け
たしてンダクタンス、前記部分列に対し、所定数の先頭
データ単位で順次、番号を割り付けた第二の辞書12、
13とを設け、第二の辞書12、13の符号化部分列を
直前の所定数のデータを先頭とする部分列の登録個数に
応じて、該符号化データを第一の辞書11を使用して、
又は符号化部分列に所定数の直前のデータを付加した部
分列を該第二の辞書12、13を使用して、選択的に復
元すればよい。
【0087】又、この場合、第二の辞書12、13を、
先頭データの個数単位に複数設け、先頭データの個数毎
に閾値を定めておき、符号化部分列の直前の所定数のデ
ータを先頭とする部分列の登録個数が、当該所定数の先
頭データの閾値より大きく、所定数より1つ大きい数の
データを先頭とする部分列の登録個数が、当該個数の先
頭データの閾値より小さい場合には、先頭データが所定
数の第二の辞書12、13を使用して、復元すればよ
く、使用する第二の辞書12、13に、対応する部分列
が登録されていない場合には、所定数より小さい数の第
二の辞書12又は第一の辞書11を用いて、復元すれば
よい。
【0088】上述の実施例の他に、本発明は、次のよう
な変形が可能である。2重履歴まで使用する例で説明
したが、同様に3重以上の履歴を用いるこも可能であ
る。
【0089】2重履歴で符号化出来ない場合に、0重
履歴で符号化するようにしているが、1重履歴で符号化
するようにし、更に1重履歴で符号化出来ない場合に、
0重履歴で符号化するようにしてもよい。
【0090】辞書に登録する新たな文字列として、従
来のLZW符号と同様に符号化文字列を1文字分伸ばし
た文字列を用いたが、符号化済データから作られる所定
の長さL以下の全ての文字列を用いても良い。また、新
たな文字列の登録は公知の他の方法を用いてもよい。辞
書登録法は、例えば文献“Data Compression methodand
theory" J.A.Storer著 Computer Science Press 1988
年出版で種々の方法が知られており、いずれの方法でも
よい。
【0091】以上、本発明を実施例により説明したが、
本発明の主旨の範囲内で種々の変形が可能であり、これ
らを本発明の範囲から排除するものではない。
【0092】
【発明の効果】以上説明したように、本発明によれば、
次の効果を奏する。部分列に対して、順次、番号を割
り当てるため、番号のビット数が学習度合いに応じて、
次第に大きくなる第一の辞書11に対し、部分列に対
し、所定数の先頭データ単位で順次、番号を割り付け
て、同一部分列の番号のビット数を減少できる第二の辞
書12、13を設けて、第一の辞書11に比べ、同一部
分例の番号のビット数を減少できる。
【0093】そして、第二の辞書12、13の符号化
部分列の直前の所定数のデータを先頭とする部分列の登
録個数に応じて、符号化部分列を第一の辞書11を使用
して、又は符号化部分列に所定数の直前のデータを付加
した部分例を第二の辞書12、13を使用して、選択的
に符号化するようにして、各文字列の出現頻度、即ち各
文字列の辞書への学習度合いによって、辞書を切り換え
て、符号化するようにして、文字列間の相関を十分利用
した符号化ができ、圧縮率を向上できる。
【図面の簡単な説明】
【図1】本発明の原理図である。
【図2】本発明の第1の実施例のためのブロック図であ
る。
【図3】本発明の第1の実施例履歴をもつ辞書の木説明
図である。
【図4】本発明の第1の実施例辞書の構成図である。
【図5】本発明の第1の実施例辞書を用いた符号化説明
図である。
【図6】本発明の第1の実施例処理フロー図である。
【図7】本発明の第1の実施例動作説明図である。
【図8】本発明の第2の実施例処理フロー図である。
【図9】従来技術の説明図である。
【図10】従来技術の説明図である。
【符号の説明】
10 辞書 11 0重辞書 12 1重辞書 13 2重辞書
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平3−270417(JP,A) 特開 平4−256192(JP,A) (58)調査した分野(Int.Cl.7,DB名) H03M 7/40

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】 符号化データを相異なる部分列に分け
    て、辞書(10)に番号を付して登録しておき、入力デ
    ータの符号化部分列を該辞書(10)中の部分列の最長
    一致するものの番号で指定して符号化するデータ圧縮方
    法において、該部分列に対し順次、番号を割りつけた第
    一の辞書(11)と、該部分列に対し、所定数の先頭デ
    ータ単位で順次、番号を割り付けた第二の辞書(12、
    13)とを設け、該第二の辞書(12、13)の該符号
    化部分列の直前の所定数のデータを先頭とする部分列の
    登録個数に応じて、該符号化部分列を該第一の辞書(1
    1)を使用して、又は該符号化部分列に所定数の直前の
    データを付加した部分列を該第二の辞書(12、13)
    を使用して、選択的に符号化することを特徴とするデー
    タ圧縮方法。
  2. 【請求項2】 前記第二の辞書(12、13)を、前記
    先頭データの個数単位に複数設け、前記先頭データの個
    数毎に閾値を定めておき、前記符号化部分列の直前の所
    定数のデータを先頭とする部分列の登録個数が、当該所
    定数の先頭データの閾値より大きく、該所定数より1つ
    大きい数のデータを先頭とする部分列の登録個数が、当
    該個数の先頭データの閾値より小さい場合には、前記先
    頭データが所定数の前記第二の辞書(12)を使用し
    て、符号化することを特徴とする請求項1のデータ圧縮
    方法。
  3. 【請求項3】 前記使用する第二の辞書(12、13)
    に、対応する部分列が登録されていない場合には、前記
    所定数より小さい数の前記第二の辞書(12)又は前記
    第一の辞書(11)を用いて、符号化することを特徴と
    する請求項2のデータ圧縮方法。
  4. 【請求項4】 請求項1により符号化されたデータを復
    元するデータ復元方法において、前記部分列に対し順
    次、番号を割り付けた第一の辞書(11)と、前記部分
    列に対し、所定数の先頭データ単位で順次、番号を割り
    付けた第二の辞書(12、13)とを設け、該第二の辞
    書(12、13)の該符号化部分列の直前の所定数のデ
    ータを先頭とする部分列の登録個数に応じて、該符号化
    データを該第一の辞書(11)を使用して、又は該符号
    化部分列に所定数の直前のデータを付加した部分列を該
    第二の辞書(12、13)を使用して、選択的に復元す
    ることを特徴とするデータ復元方法。
  5. 【請求項5】 前記第二の辞書(12、13)を、前記
    先頭データの個数単位に複数設け、前記先頭データの個
    数毎に閾値を定めておき、前記符号化部分列の直前の所
    定数のデータを先頭とする部分列の登録個数が、当該所
    定数の先頭データの閾値より大きく、該所定数より1つ
    大きい数のデータを先頭とする部分列の登録個数が、当
    該個数の先頭データの閾値より小さい場合には、前記先
    頭データが所定数の前記第二の辞書(12、13)を使
    用して、復元することを特徴とする請求項4のデータ復
    元方法。
  6. 【請求項6】 前記使用する第二の辞書(12、13)
    に、対応する部分列が登録されていない場合には、前記
    所定数より小さい数の前記第二の辞書(12)又は前記
    第一の辞書(11)を用いて、復元することを特徴とす
    る請求項5のデータ復元方法。
JP9633791A 1991-04-02 1991-04-02 データ圧縮及び復元方法 Expired - Lifetime JP3058711B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9633791A JP3058711B2 (ja) 1991-04-02 1991-04-02 データ圧縮及び復元方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9633791A JP3058711B2 (ja) 1991-04-02 1991-04-02 データ圧縮及び復元方法

Publications (2)

Publication Number Publication Date
JPH04306019A JPH04306019A (ja) 1992-10-28
JP3058711B2 true JP3058711B2 (ja) 2000-07-04

Family

ID=14162204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9633791A Expired - Lifetime JP3058711B2 (ja) 1991-04-02 1991-04-02 データ圧縮及び復元方法

Country Status (1)

Country Link
JP (1) JP3058711B2 (ja)

Also Published As

Publication number Publication date
JPH04306019A (ja) 1992-10-28

Similar Documents

Publication Publication Date Title
JP3241788B2 (ja) データ圧縮方式
JPH06168096A (ja) データ符号化方式及びデータ復元方式
JP3038223B2 (ja) データ圧縮方式
JP3058711B2 (ja) データ圧縮及び復元方法
JP3241787B2 (ja) データ圧縮方式
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JPH05152971A (ja) データ圧縮・復元方法
JPH05241775A (ja) データ圧縮方式
Stauffer et al. Dictionary Compression on the PRAM
JP3038233B2 (ja) データ圧縮及び復元装置
JP3130324B2 (ja) データ圧縮方式
JP2954749B2 (ja) データ圧縮方式
JP3012677B2 (ja) Zl符号化方法
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
JP2825960B2 (ja) データ圧縮方法及び復元方法
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JP3038234B2 (ja) データ圧縮装置の辞書検索方式
US20240106459A1 (en) Compression device and compression method
JP3053656B2 (ja) データ圧縮における辞書登録方式
JP2952067B2 (ja) データ圧縮方式
JP3088740B2 (ja) データ圧縮及び復元方式
JP3100206B2 (ja) データ圧縮方法
JP3115066B2 (ja) 辞書検索方法
JP3388768B2 (ja) データ圧縮及び復元方式
JP2535655B2 (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: 20000404