JPH06168097A - データ符号化方式及びデータ復元方式 - Google Patents
データ符号化方式及びデータ復元方式Info
- Publication number
- JPH06168097A JPH06168097A JP4319580A JP31958092A JPH06168097A JP H06168097 A JPH06168097 A JP H06168097A JP 4319580 A JP4319580 A JP 4319580A JP 31958092 A JP31958092 A JP 31958092A JP H06168097 A JPH06168097 A JP H06168097A
- Authority
- JP
- Japan
- Prior art keywords
- dictionary
- data
- initial
- learning
- 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.)
- Granted
Links
Landscapes
- Image Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
(57)【要約】 (修正有)
【目的】ジブ・レンペル符号により、複数種類のデータ
が混在するファイルを高い圧縮率で符号化する。 【構成】入力されたデータの種類に対応する初期辞書が
複数の初期辞書32−1、32−2及び32−3の中か
ら選択されて学習用辞書33−2にロードされる。符号
化部33は、その学習用辞書33−2に基づいて原デー
タ30を一定区間毎に符号化してデータ圧縮を行う。そ
の後、上記符号化処理による学習により更新された学習
用辞書33−2の内容を処理し、ロードされた元の初期
辞書の内容と入れ換える。復元側は圧縮データに付加さ
れた辞書情報とサイズ情報とに基づいて上記同様の4種
類の辞書を用いて復元を行う。
が混在するファイルを高い圧縮率で符号化する。 【構成】入力されたデータの種類に対応する初期辞書が
複数の初期辞書32−1、32−2及び32−3の中か
ら選択されて学習用辞書33−2にロードされる。符号
化部33は、その学習用辞書33−2に基づいて原デー
タ30を一定区間毎に符号化してデータ圧縮を行う。そ
の後、上記符号化処理による学習により更新された学習
用辞書33−2の内容を処理し、ロードされた元の初期
辞書の内容と入れ換える。復元側は圧縮データに付加さ
れた辞書情報とサイズ情報とに基づいて上記同様の4種
類の辞書を用いて復元を行う。
Description
【0001】
【産業上の利用分野】本発明は、ジブ・レンペル符号に
よりデータを圧縮するデータ符号化方式、及びデータ復
元方式に関する。
よりデータを圧縮するデータ符号化方式、及びデータ復
元方式に関する。
【0002】
【従来の技術】近年、OA(オフィシャル・オートメー
ション)の発達に伴い、一文書中に文字、図形、画像な
ど様々のメディアを混在して取り込めるようになってき
ている。そして、文字コードや白黒2値画像等の混在情
報が、それらのレイアウト情報とともに、文書データと
してG4ファクシミリや光ディスクファイル・システム
などで扱われるようになってきており、それらの情報の
データ量も急速に増加してきている。これらのマルチメ
ディアから成る文書情報をディジタルデータとして利用
するとき、一般に、画像情報のデータ量は文字コードの
データ量に比較して10倍〜数10倍と多くなる。この
ため、データ蓄積やデータ伝送等で、画像情報を扱うと
きは、それらの処理を効率良く行うために、データの中
の冗長な部分を省いてデータ量を圧縮することにより、
記憶容量の削減や伝送の効率化を図っている。
ション)の発達に伴い、一文書中に文字、図形、画像な
ど様々のメディアを混在して取り込めるようになってき
ている。そして、文字コードや白黒2値画像等の混在情
報が、それらのレイアウト情報とともに、文書データと
してG4ファクシミリや光ディスクファイル・システム
などで扱われるようになってきており、それらの情報の
データ量も急速に増加してきている。これらのマルチメ
ディアから成る文書情報をディジタルデータとして利用
するとき、一般に、画像情報のデータ量は文字コードの
データ量に比較して10倍〜数10倍と多くなる。この
ため、データ蓄積やデータ伝送等で、画像情報を扱うと
きは、それらの処理を効率良く行うために、データの中
の冗長な部分を省いてデータ量を圧縮することにより、
記憶容量の削減や伝送の効率化を図っている。
【0003】しかしながら、大容量のファイルシステム
や文書データベースでは、文書データ中の文字コード情
報も全体として大きなものとなるため、画像情報のみな
らず文字コード情報の圧縮も必要となってくる。
や文書データベースでは、文書データ中の文字コード情
報も全体として大きなものとなるため、画像情報のみな
らず文字コード情報の圧縮も必要となってくる。
【0004】文字コードや画像データなどの様々のデー
タを一つの方式でデータ圧縮できる方法として、ユニバ
ーサル符号化方式が知られており、その代表的な方法と
してジブ・レンペル符号(宗像清治、「Ziv-Lempelのデ
ータ圧縮法」、情報処理、Vol.26,No.1,Jan.1985年参
照)がある。
タを一つの方式でデータ圧縮できる方法として、ユニバ
ーサル符号化方式が知られており、その代表的な方法と
してジブ・レンペル符号(宗像清治、「Ziv-Lempelのデ
ータ圧縮法」、情報処理、Vol.26,No.1,Jan.1985年参
照)がある。
【0005】このジブ・レンペル符号には、 ユニバーサル型と 増分分解型(Incremental Paring) の2つのアルゴリズムがある。
【0006】さらに、ユバーサル型アルゴリズムの改良
として、LZSS符号がある(T.C.Bell,"Better OPM/L
Text Compression",IEEE Trans. on Commun., Vol.COM-
34,No.12,Dec.1986参照)。
として、LZSS符号がある(T.C.Bell,"Better OPM/L
Text Compression",IEEE Trans. on Commun., Vol.COM-
34,No.12,Dec.1986参照)。
【0007】また、増分分解型アルゴリズムにも、その
改良型として、LZW(Lempel-Ziv-Welch )符号がある
(T.A. Welch,"A Technique for High-Performance Data
Compression",Computer,June 1984 参照)。
改良型として、LZW(Lempel-Ziv-Welch )符号がある
(T.A. Welch,"A Technique for High-Performance Data
Compression",Computer,June 1984 参照)。
【0008】これらの符号化方式の内、高速処理ができ
ることと、アルゴリズムが簡単であることから、最近
は、LZW符号が、記憶装置に格納するファイルの圧縮
などに使用されるようになってきている。
ることと、アルゴリズムが簡単であることから、最近
は、LZW符号が、記憶装置に格納するファイルの圧縮
などに使用されるようになってきている。
【0009】ここで、上記ユニバーサル符号化な代表的
な方法であるジブ・レンペル符号のユニバーサル型及び
増分分解型の2つのアルゴリズムについて説明する。 1.ユニバーサル型のアルゴリズム このアルゴリズムは、演算量が多いが、高い圧縮率が得
られるものであり、符号化するデータを、過去のデータ
系列の任意の位置から一致する最大長の系列(部分列)
に区切り、過去の系列の複製として符号化する方法であ
る。
な方法であるジブ・レンペル符号のユニバーサル型及び
増分分解型の2つのアルゴリズムについて説明する。 1.ユニバーサル型のアルゴリズム このアルゴリズムは、演算量が多いが、高い圧縮率が得
られるものであり、符号化するデータを、過去のデータ
系列の任意の位置から一致する最大長の系列(部分列)
に区切り、過去の系列の複製として符号化する方法であ
る。
【0010】このようなユニバーサル型ジブ・レンペル
符号の符号化の基本概念を図11(a) に示す。同図(a)
に示すPバッファには過去のデータ系列である既に符号
化済みの入力データ「・・・abc・・・」が格納され
ている。一方、Qバッファにはこれから符号化するデー
タ(文字列)「abcdef」が入力・格納されてい
る。
符号の符号化の基本概念を図11(a) に示す。同図(a)
に示すPバッファには過去のデータ系列である既に符号
化済みの入力データ「・・・abc・・・」が格納され
ている。一方、Qバッファにはこれから符号化するデー
タ(文字列)「abcdef」が入力・格納されてい
る。
【0011】このような状態において、Qバッファ内の
データを符号化する際には、Qバッファのデータ系列を
キーとしてPバッファ内のデータ系列を走査し、Pバッ
ファ内でQバッファ内のデータ系列に一致する最大長の
部分列(同図(a) の例では「abc」)を求める。そし
て、Pバッファ中のこの最大長の部分列を指定するため
に、同図(b) に示す形式の情報の組を符号化する。この
情報の組は、「Pバッファ中における最大一致系列の開
始位置」(同図(a) の例では「a」のアドレス)、「一
致する長さ」(同図(a) の例では「3」)、及び「次の
シンボル」(同図(a) の例では「d」)の3個の情報か
らなる。
データを符号化する際には、Qバッファのデータ系列を
キーとしてPバッファ内のデータ系列を走査し、Pバッ
ファ内でQバッファ内のデータ系列に一致する最大長の
部分列(同図(a) の例では「abc」)を求める。そし
て、Pバッファ中のこの最大長の部分列を指定するため
に、同図(b) に示す形式の情報の組を符号化する。この
情報の組は、「Pバッファ中における最大一致系列の開
始位置」(同図(a) の例では「a」のアドレス)、「一
致する長さ」(同図(a) の例では「3」)、及び「次の
シンボル」(同図(a) の例では「d」)の3個の情報か
らなる。
【0012】続いて、このQバッファ内の符号化した系
列(この場合、「abc」)をPバッファ内に移動・格
納して新たな過去のデータ系列を得る。以下、Qバッフ
ァ内の残りのデータ系列「def」についても、同様の
操作を繰り返し、Qバッファ内の残りのデータ系列をP
バッファ内に既に格納されている部分列に分解し、上述
のようにして符号化すると共に、Pバッファ内のデータ
系列を更新する。
列(この場合、「abc」)をPバッファ内に移動・格
納して新たな過去のデータ系列を得る。以下、Qバッフ
ァ内の残りのデータ系列「def」についても、同様の
操作を繰り返し、Qバッファ内の残りのデータ系列をP
バッファ内に既に格納されている部分列に分解し、上述
のようにして符号化すると共に、Pバッファ内のデータ
系列を更新する。
【0013】2.増分分解型のアルゴリズム このアルゴリズムは、圧縮率はユニバーサル型より劣る
が、アルゴリズムが簡単であり、計算も容易であること
から高速処理ができる。
が、アルゴリズムが簡単であり、計算も容易であること
から高速処理ができる。
【0014】このアルゴリズムの代表的な方法であるL
ZW符号化の方法を、図12に示すフローチャート、図
13に示す辞書(学習辞書)、及び図14に示すデータ
変換の模式図を用いて説明する。
ZW符号化の方法を、図12に示すフローチャート、図
13に示す辞書(学習辞書)、及び図14に示すデータ
変換の模式図を用いて説明する。
【0015】LZW符号化は、書き替え可能な辞書(学
習用辞書)を1個持ち、入力文字列を相異なる文字列
(部分列)に分け、これらの文字列を出現した順に参照
番号を付けて上記辞書に登録すると共に、現在入力して
いる文字列を、上記辞書に既に登録されている最大長の
一致する文字列に割り当てられた参照番号で表わすこと
により符号化するものである。尚、以後の説明では、情
報理論で用いられる呼称を踏襲し、データの1ワード単
位を文字と呼び、データが任意ワードつながったものを
文字列と呼ぶ。
習用辞書)を1個持ち、入力文字列を相異なる文字列
(部分列)に分け、これらの文字列を出現した順に参照
番号を付けて上記辞書に登録すると共に、現在入力して
いる文字列を、上記辞書に既に登録されている最大長の
一致する文字列に割り当てられた参照番号で表わすこと
により符号化するものである。尚、以後の説明では、情
報理論で用いられる呼称を踏襲し、データの1ワード単
位を文字と呼び、データが任意ワードつながったものを
文字列と呼ぶ。
【0016】LZW符号化処理では、まず、ステップS
1で、予め辞書DC に、全文字につき一文字から成る文
字列を登録する初期化を行う。即ち、例えば、一文字を
8ビットコードで符号化する場合には、最大256種類
の全文字につき一文字からなる文字列を、辞書DC のア
ドレス0〜255番地に初期登録する。これにより、例
えば図17に示すように、辞書DC のアドレス0、1、
2、・・・、255に、アルファベット「a」、
「b」、「c」、・・・や、ひらがな、カタカナ、数字
等が登録される。尚、図13(a) の左側に示す文字列テ
ーブルB1は説明を容易なものとするために、補助的に
示したものである。
1で、予め辞書DC に、全文字につき一文字から成る文
字列を登録する初期化を行う。即ち、例えば、一文字を
8ビットコードで符号化する場合には、最大256種類
の全文字につき一文字からなる文字列を、辞書DC のア
ドレス0〜255番地に初期登録する。これにより、例
えば図17に示すように、辞書DC のアドレス0、1、
2、・・・、255に、アルファベット「a」、
「b」、「c」、・・・や、ひらがな、カタカナ、数字
等が登録される。尚、図13(a) の左側に示す文字列テ
ーブルB1は説明を容易なものとするために、補助的に
示したものである。
【0017】以下の説明では、説明を分かり易くするた
めに、図14に示すような入力文字列が入力された場合
の例を取り上げて説明する。まず、ステップS1で、辞
書DC の書込用先頭アドレスnに、上記初期登録された
最後の文字列の格納アドレスの次のアドレスである「2
56」を、新たに登録する文字列の辞書DC への格納ア
ドレスとして設定する。
めに、図14に示すような入力文字列が入力された場合
の例を取り上げて説明する。まず、ステップS1で、辞
書DC の書込用先頭アドレスnに、上記初期登録された
最後の文字列の格納アドレスの次のアドレスである「2
56」を、新たに登録する文字列の辞書DC への格納ア
ドレスとして設定する。
【0018】続いて、同じくステップS1で、入力され
た最初の文字Kをキーデータ(インデックス)として辞
書Dc を検索し、参照番号ω(辞書DC に登録されてい
る文字Kの参照番号)を求め、これを語頭文字列(prefi
x string) とする。これにより、入力文字列が、例え
ば、図14に示すような「ababcbababaaa
aaaa」であれば、最初の文字Kである「a」をイン
デックスとして辞書DCが検索され、「a」の参照番号
「0」が参照番号ωとして求められ、この参照番号
「0」が語頭文字列となる(図14の出力コードの欄を
参照)。
た最初の文字Kをキーデータ(インデックス)として辞
書Dc を検索し、参照番号ω(辞書DC に登録されてい
る文字Kの参照番号)を求め、これを語頭文字列(prefi
x string) とする。これにより、入力文字列が、例え
ば、図14に示すような「ababcbababaaa
aaaa」であれば、最初の文字Kである「a」をイン
デックスとして辞書DCが検索され、「a」の参照番号
「0」が参照番号ωとして求められ、この参照番号
「0」が語頭文字列となる(図14の出力コードの欄を
参照)。
【0019】次に、ステップS2で、入力文字列の次の
文字Kを読む。これにより、上記最初の入力文字の
「a」の次の文字「b」が読み込まれる。続いて、ステ
ップS3で、文字Kがあるか否かを判別する。これは、
入力文字列がまだ終了していないか否かを判別する処理
である。
文字Kを読む。これにより、上記最初の入力文字の
「a」の次の文字「b」が読み込まれる。続いて、ステ
ップS3で、文字Kがあるか否かを判別する。これは、
入力文字列がまだ終了していないか否かを判別する処理
である。
【0020】図14に示す入力文字列の場合は、上記ス
テップS2で、「a」の次の文字「b」が読み込まれる
ので文字列がまだ終了しておらず、したがって、ステッ
プS3ではYesと判断し、次にステップS4で、文字
列「ωK」が辞書DC に登録されてあるか否か検索す
る。
テップS2で、「a」の次の文字「b」が読み込まれる
ので文字列がまだ終了しておらず、したがって、ステッ
プS3ではYesと判断し、次にステップS4で、文字
列「ωK」が辞書DC に登録されてあるか否か検索す
る。
【0021】これにより、ステップS1で求められた語
頭文字列ω(ここでは参照番号「0」)に、ステップS
2で読み込んだ文字K(ここでは「b」)を加えた文字
列「0b」が、辞書DC 内に登録されているか否かが調
べられる。
頭文字列ω(ここでは参照番号「0」)に、ステップS
2で読み込んだ文字K(ここでは「b」)を加えた文字
列「0b」が、辞書DC 内に登録されているか否かが調
べられる。
【0022】そして、この検索で、Noであれば、ステ
ップS6に進み、ステップS1で得られている文字Kの
参照番号ωの符号「code(ω)」を出力し、また文字列
「ωK」に新たな参照番号nを付与して辞書DC のアド
レスnに登録する。
ップS6に進み、ステップS1で得られている文字Kの
参照番号ωの符号「code(ω)」を出力し、また文字列
「ωK」に新たな参照番号nを付与して辞書DC のアド
レスnに登録する。
【0023】これにより、図14に示す入力文字列の場
合、まず、「a」の参照番号ωである「0」の符号が出
力され、さらに、検出されなかった文字列「0b」が参
照番号「256」が付与されて、辞書DC のアドレス2
56に登録される。
合、まず、「a」の参照番号ωである「0」の符号が出
力され、さらに、検出されなかった文字列「0b」が参
照番号「256」が付与されて、辞書DC のアドレス2
56に登録される。
【0024】続いて、同じくステップS6で、上記ステ
ップS2で読み込んだ入力文字Kを参照番号ωに置き換
えると共に、辞書DC のアドレスnを「1」インクリメ
ントして、ステップS2に戻り次の文字Kを読み込む。
ップS2で読み込んだ入力文字Kを参照番号ωに置き換
えると共に、辞書DC のアドレスnを「1」インクリメ
ントして、ステップS2に戻り次の文字Kを読み込む。
【0025】これにより、図14の入力文字列の例であ
れば、参照番号ωが「b」の参照番号である「1」に置
き換えられ、次回新たに登録される文字列の辞書DC 内
での登録アドレスnがインクリメントされて「257」
に変わる。
れば、参照番号ωが「b」の参照番号である「1」に置
き換えられ、次回新たに登録される文字列の辞書DC 内
での登録アドレスnがインクリメントされて「257」
に変わる。
【0026】一方、ステップS4で文字列「ωK」が辞
書DC に登録されていれば、この場合は、ステップS5
に進んで、その文字列「ωK」を参照番号ωに置き換
え、再びステップS2に戻ってステップS4で文字列
「ωK」が辞書DC から探せなくなるまでステップS2
〜S5を繰り返し、最大一致長の文字列の検索を続け
る。
書DC に登録されていれば、この場合は、ステップS5
に進んで、その文字列「ωK」を参照番号ωに置き換
え、再びステップS2に戻ってステップS4で文字列
「ωK」が辞書DC から探せなくなるまでステップS2
〜S5を繰り返し、最大一致長の文字列の検索を続け
る。
【0027】このような方法で行われるLZW符号化の
処理を、図14に示す入力文字列「ababcbaba
baaaaaaa」を取り上げて具体的に説明すると、
まず、最初の文字「a」を入力したとき、辞書DC には
「a」の他に一致する文字列がないので、「a」に付与
された参照番号「0」の符号code(0)を出力する。そ
して、拡張した文字列「ab」に参照番号「256」を
付与して辞書DC に登録する。実際の辞書登録は図13
の右側に示すように文字列「0b」の形で登録される。
処理を、図14に示す入力文字列「ababcbaba
baaaaaaa」を取り上げて具体的に説明すると、
まず、最初の文字「a」を入力したとき、辞書DC には
「a」の他に一致する文字列がないので、「a」に付与
された参照番号「0」の符号code(0)を出力する。そ
して、拡張した文字列「ab」に参照番号「256」を
付与して辞書DC に登録する。実際の辞書登録は図13
の右側に示すように文字列「0b」の形で登録される。
【0028】続いて、2番目の文字「b」が新たな検索
文字列の先頭になる。この場合、辞書DC には文字
「b」の他に一致する文字がないので文字「b」に付さ
れている「1」の参照番号の符号code(1)を出力し、
同時に拡張した文字列「ba」もまだ辞書DC に登録さ
れていないので、文字列「ba」を「1a」で表わし、
参照番号「257」を付与して辞書DC に登録する。そ
して、次は、3番目の文字「a」が次の検索文字列「ω
K」の先頭になる。以下同様に、このような処理を続け
ていくことにより、図14に示す入力文字列「abab
cbababaaaaaaa」が、同図の出力コード欄
に示す「0、1、256、2、257、260、0、2
62、263」の符号列に変換・出力され、この結果と
して、入力文字列が圧縮される。
文字列の先頭になる。この場合、辞書DC には文字
「b」の他に一致する文字がないので文字「b」に付さ
れている「1」の参照番号の符号code(1)を出力し、
同時に拡張した文字列「ba」もまだ辞書DC に登録さ
れていないので、文字列「ba」を「1a」で表わし、
参照番号「257」を付与して辞書DC に登録する。そ
して、次は、3番目の文字「a」が次の検索文字列「ω
K」の先頭になる。以下同様に、このような処理を続け
ていくことにより、図14に示す入力文字列「abab
cbababaaaaaaa」が、同図の出力コード欄
に示す「0、1、256、2、257、260、0、2
62、263」の符号列に変換・出力され、この結果と
して、入力文字列が圧縮される。
【0029】次に、上述の如くLZW符号化された符号
データを復元するアルゴリズムを、図15のフローチャ
ートを用いて説明する。また、この復元の具体例とし
て、図14に示すLZW符号化された出力符号列「0、
1、256、2、257、260、0、262、26
3」を、入力符号列として図16(a) に再掲して説明の
補助とする。
データを復元するアルゴリズムを、図15のフローチャ
ートを用いて説明する。また、この復元の具体例とし
て、図14に示すLZW符号化された出力符号列「0、
1、256、2、257、260、0、262、26
3」を、入力符号列として図16(a) に再掲して説明の
補助とする。
【0030】先ず、ステップS11では、この場合も上
記LZW符号化のときと同様に、辞書Dd に全文字につ
き一文字から成る文字列を初期登録する。これから説明
する上記具体例では、各一文字「a」,「b」,
「c」、・・・を、それぞれ参照番号「0」、「1」、
「2」、・・・を付与して辞書Dd に登録し、また、辞
書Dd の書込用先頭アドレスnに、上記初期登録された
最後の文字列の格納アドレスの次のアドレスである「2
56」を、新たに登録する文字列の辞書Dd への格納ア
ドレスnとして設定する。
記LZW符号化のときと同様に、辞書Dd に全文字につ
き一文字から成る文字列を初期登録する。これから説明
する上記具体例では、各一文字「a」,「b」,
「c」、・・・を、それぞれ参照番号「0」、「1」、
「2」、・・・を付与して辞書Dd に登録し、また、辞
書Dd の書込用先頭アドレスnに、上記初期登録された
最後の文字列の格納アドレスの次のアドレスである「2
56」を、新たに登録する文字列の辞書Dd への格納ア
ドレスnとして設定する。
【0031】次に、同じくステップS11で、最初の符
号CODEを読み込み、この符号CODEに対応する参
照番号をOLDωにセットする。これにより、図16
(a) 示す入力符号列の例では最初の入力符号である参照
番号「0」の符号code(0)が読み込まれて、参照番号
「0」に変換された後、OLDωにセットされる。
号CODEを読み込み、この符号CODEに対応する参
照番号をOLDωにセットする。これにより、図16
(a) 示す入力符号列の例では最初の入力符号である参照
番号「0」の符号code(0)が読み込まれて、参照番号
「0」に変換された後、OLDωにセットされる。
【0032】続いて、同じくステップS11で、参照番
号「OLDω」に対応する文字Kを復元する。この処理
では、最初の入力符号CODEは上述のようにして辞書
Ddに初期登録された一文字の参照番号のいずれかに該
当することから、その入力符号CODEに一致する符号
code(K)を辞書Dd から探し出し、該当文字「K」を
出力する。尚、この出力した文字「K」は後に必要に応
じて行われる例外処理に備えてFINcharにもセットし
ておく。
号「OLDω」に対応する文字Kを復元する。この処理
では、最初の入力符号CODEは上述のようにして辞書
Ddに初期登録された一文字の参照番号のいずれかに該
当することから、その入力符号CODEに一致する符号
code(K)を辞書Dd から探し出し、該当文字「K」を
出力する。尚、この出力した文字「K」は後に必要に応
じて行われる例外処理に備えてFINcharにもセットし
ておく。
【0033】これにより、図16(a) に示す入力符号列
の例では、最初に参照番号「0」に対応する文字「a」
が、復元・出力されると共に、FINcharにもセットさ
れる。
の例では、最初に参照番号「0」に対応する文字「a」
が、復元・出力されると共に、FINcharにもセットさ
れる。
【0034】続いて、ステップS12で、次の入力符号
CODEを読み込む。すなわち、図20(a) に示す入力
符号列の例では、「1」の符号code(1)が読み込まれ
る。そして、ステップS13で、新たに読み込まれた符
号CODEが有るか否か、すなわち符号入力の終了の有
無を判別する。図16(a) に示す入力符号列の例では、
ステップS12で参照番号「1」の符号code(1)が新
たな入力符号CODEとして読み込まれる。
CODEを読み込む。すなわち、図20(a) に示す入力
符号列の例では、「1」の符号code(1)が読み込まれ
る。そして、ステップS13で、新たに読み込まれた符
号CODEが有るか否か、すなわち符号入力の終了の有
無を判別する。図16(a) に示す入力符号列の例では、
ステップS12で参照番号「1」の符号code(1)が新
たな入力符号CODEとして読み込まれる。
【0035】このように、新たな入力符号CODEがあ
れば、ステップS14に進んで、この入力符号CODE
に対応する参照番号「ω」をINωにセットする。これ
により、図16(a) に示す入力符号の例では、参照番号
「1」がINωにセットされる。
れば、ステップS14に進んで、この入力符号CODE
に対応する参照番号「ω」をINωにセットする。これ
により、図16(a) に示す入力符号の例では、参照番号
「1」がINωにセットされる。
【0036】つぎに、ステップS15で、上記参照番号
「ω」が辞書Dd に既に登録されているか否か(ω≧
n)を判別する。この処理では、通常、読み込んだ符号
CODEは前回までの処理で、辞書Dd に既に登録され
ているから、ω<nであり、ステップS16に進んで、
辞書Dd を検索して、上記参照番号「ω」に対応する文
字列ω′Kを辞書Dd から読み出し、参照番号「ω」に
対応する文字列が二文字の文字列「ω′K」であるか否
か判別する。そして二文字の文字列「ω′K」であった
場合には、ステップS17で文字「K」を一時的にスタ
ックし、参照番号「ω′」を新たな参照番号ωとして再
度ステップS16に戻り、このステップS16、S17
の手順を再帰的に参照番号ωに対応する文字列が一文字
「K」に成るまで繰り返し、最後ステップS18に進ん
で、まず上記最後に復元した文字Kを出力した後、ステ
ップS17でスタックした全ての文字をLIFO(Last
In First Out) 形式でポップアップして出力する(上記
ステップS12で読み込んだ符号CODEの復元・出
力)。さらに、ステップS18において、上記復元文字
列の第一文字KをFINcharにセットした後、前回復元
処理した参照番号OLDωと今回復元した文字列の最初
の一文字Kとから組(OLDω、K)で表わされる文字
列を、新たな参照番号「n」を付与して辞書Dd のアド
レスnに登録する。続いて、アドレスnを「1」インク
リメントして、その「n+1」を次に辞書Dd に登録す
る文字列の登録アドレスnとして設定し、さらにINω
にセットされていた今回復元された符号CODEに対応
する参照番号「ω」をOLDωに代入して、ステップS
12に戻る。
「ω」が辞書Dd に既に登録されているか否か(ω≧
n)を判別する。この処理では、通常、読み込んだ符号
CODEは前回までの処理で、辞書Dd に既に登録され
ているから、ω<nであり、ステップS16に進んで、
辞書Dd を検索して、上記参照番号「ω」に対応する文
字列ω′Kを辞書Dd から読み出し、参照番号「ω」に
対応する文字列が二文字の文字列「ω′K」であるか否
か判別する。そして二文字の文字列「ω′K」であった
場合には、ステップS17で文字「K」を一時的にスタ
ックし、参照番号「ω′」を新たな参照番号ωとして再
度ステップS16に戻り、このステップS16、S17
の手順を再帰的に参照番号ωに対応する文字列が一文字
「K」に成るまで繰り返し、最後ステップS18に進ん
で、まず上記最後に復元した文字Kを出力した後、ステ
ップS17でスタックした全ての文字をLIFO(Last
In First Out) 形式でポップアップして出力する(上記
ステップS12で読み込んだ符号CODEの復元・出
力)。さらに、ステップS18において、上記復元文字
列の第一文字KをFINcharにセットした後、前回復元
処理した参照番号OLDωと今回復元した文字列の最初
の一文字Kとから組(OLDω、K)で表わされる文字
列を、新たな参照番号「n」を付与して辞書Dd のアド
レスnに登録する。続いて、アドレスnを「1」インク
リメントして、その「n+1」を次に辞書Dd に登録す
る文字列の登録アドレスnとして設定し、さらにINω
にセットされていた今回復元された符号CODEに対応
する参照番号「ω」をOLDωに代入して、ステップS
12に戻る。
【0037】これにより、図16(a) に示す入力符号の
場合には、同(b) に示すように、2番目に読み込まれた
参照番号「1」の符号CODE(=code(1))から文
字「b」が復元・出力され、この文字「b」がFINch
arにセットされると共に、前回復元処理した符号COD
E(=code(0))に対応する参照番号「0」と今回復
元した一文字「b」との連なりから成る文字列「0b」
が新たな参照番号「256」が付与されて辞書Dd に登
録される。
場合には、同(b) に示すように、2番目に読み込まれた
参照番号「1」の符号CODE(=code(1))から文
字「b」が復元・出力され、この文字「b」がFINch
arにセットされると共に、前回復元処理した符号COD
E(=code(0))に対応する参照番号「0」と今回復
元した一文字「b」との連なりから成る文字列「0b」
が新たな参照番号「256」が付与されて辞書Dd に登
録される。
【0038】そして、辞書Dd の登録アドレスnが「2
57」に更新された後、OLDωには今回、復元された
符号CODE(=code(1))に対応する参照番号
「1」がセットされ、ステップS12で3番目の符号co
de(856)が読み込まれる。
57」に更新された後、OLDωには今回、復元された
符号CODE(=code(1))に対応する参照番号
「1」がセットされ、ステップS12で3番目の符号co
de(856)が読み込まれる。
【0039】そして、辞書Dd の検索により求められた
文字列「0b」から文字列「ab」への置き換えが行わ
れて、文字列「ab」が出力される。同時に、前回復元
処理した符号code(1)に対応する参照番号「1」と今
回復元した文字列の第一文字「a」とを組み合わせた文
字列「1a」(=「ba」)が、新たな参照番号「25
7」が付与されて辞書Dd のアドレス「257」に登録
される。
文字列「0b」から文字列「ab」への置き換えが行わ
れて、文字列「ab」が出力される。同時に、前回復元
処理した符号code(1)に対応する参照番号「1」と今
回復元した文字列の第一文字「a」とを組み合わせた文
字列「1a」(=「ba」)が、新たな参照番号「25
7」が付与されて辞書Dd のアドレス「257」に登録
される。
【0040】一方、上記のステップS15の判別で、読
み込んだ符号code(ω)が前回までの処理で辞書Dd に
登録されていない場合(ω≧n)は、ステップS19に
進んで例外処理を行う。この例外処理では、まず、前回
復元した文字列の第一文字「FINchar」を出力した
後、前回復元処理した符号CODEに対応する参照番号
「OLDω」を参照番号ωとしてセットした後に、上記
前回復元した文字列の第一文字「FINchar」を加えた
文字列「OLDω、FINchar」を求め、この新たな文
字列に対応する参照番号をINωにセットしてからステ
ップS16に進む。
み込んだ符号code(ω)が前回までの処理で辞書Dd に
登録されていない場合(ω≧n)は、ステップS19に
進んで例外処理を行う。この例外処理では、まず、前回
復元した文字列の第一文字「FINchar」を出力した
後、前回復元処理した符号CODEに対応する参照番号
「OLDω」を参照番号ωとしてセットした後に、上記
前回復元した文字列の第一文字「FINchar」を加えた
文字列「OLDω、FINchar」を求め、この新たな文
字列に対応する参照番号をINωにセットしてからステ
ップS16に進む。
【0041】このことにより、例えば、図16(a) に示
す入力符号列の場合では、6番目に入力する「260」
の符号code(260)に対応する参照番号「260」
は、この時点では辞書Dd に定義されていない。この場
合は、まず、ステップS19で、前回復元された符号co
de(257)に対応する文字列「bab」の第一文字
(FINchar)が出力された後、上記前回復元処理した
符号code(257)に対応する参照番号「257」に前
回復元した文字列「ba」の最初の一文字「b」を加え
た文字列「257b」を求め、この文字列に対し参照番
号「260」を付与し、この参照番号をINωにセット
する。そして、次に、ステップS16→S17の処理を
繰り返すことにより、「a」、「b」の順に1文字づつ
スタックする。そしてステップS18で、ポップアップ
操作により文字列「ab」を出力して、最終的に符号co
de(280)を「bab」の文字列に復元・出力すると
共に、上記文字列「257b」を参照番号「260」を
付与して辞書Dd に登録する(同図(b) 〜(e) 参照)。
す入力符号列の場合では、6番目に入力する「260」
の符号code(260)に対応する参照番号「260」
は、この時点では辞書Dd に定義されていない。この場
合は、まず、ステップS19で、前回復元された符号co
de(257)に対応する文字列「bab」の第一文字
(FINchar)が出力された後、上記前回復元処理した
符号code(257)に対応する参照番号「257」に前
回復元した文字列「ba」の最初の一文字「b」を加え
た文字列「257b」を求め、この文字列に対し参照番
号「260」を付与し、この参照番号をINωにセット
する。そして、次に、ステップS16→S17の処理を
繰り返すことにより、「a」、「b」の順に1文字づつ
スタックする。そしてステップS18で、ポップアップ
操作により文字列「ab」を出力して、最終的に符号co
de(280)を「bab」の文字列に復元・出力すると
共に、上記文字列「257b」を参照番号「260」を
付与して辞書Dd に登録する(同図(b) 〜(e) 参照)。
【0042】以下、同様な処理を順次繰り返すことによ
り、図16(a) に示す入力符号列が同図(e) に示す文字
列に復元される。
り、図16(a) に示す入力符号列が同図(e) に示す文字
列に復元される。
【0043】
【発明が解決しようとする課題】上述したLZW符号化
によるデータ圧縮は、他の方式に見られるような対象デ
ータの統計的な性質や定常性を予め仮定して圧縮を行う
方法でなく、符号すると元の情報に完全に復元されると
いう情報保存型のデータ圧縮方法であることから、例え
ば文字コードや、プログラムのソースコードもしくはブ
ジェクトコードのように、完全な復元が要求されるデー
タの圧縮に適している。
によるデータ圧縮は、他の方式に見られるような対象デ
ータの統計的な性質や定常性を予め仮定して圧縮を行う
方法でなく、符号すると元の情報に完全に復元されると
いう情報保存型のデータ圧縮方法であることから、例え
ば文字コードや、プログラムのソースコードもしくはブ
ジェクトコードのように、完全な復元が要求されるデー
タの圧縮に適している。
【0044】また、LZW符号は、任意の記号列に直接
適用できるので、画像データを、一定量のデータに分割
して、そのデータを文字コード同様に扱えば、画像デー
タもLZW符号化によって圧縮することができる。した
がって、例えば文字コードと画像データのように性質が
異なる複数種類のデータが混在する情報をLZW符号化
により圧縮することは可能である。
適用できるので、画像データを、一定量のデータに分割
して、そのデータを文字コード同様に扱えば、画像デー
タもLZW符号化によって圧縮することができる。した
がって、例えば文字コードと画像データのように性質が
異なる複数種類のデータが混在する情報をLZW符号化
により圧縮することは可能である。
【0045】しかし、従来のジブ・レンペル(Ziv-Lemp
el)符号化は、1個の書き換え可能な辞書のみを用いて
行っており、この辞書を入力データにより更新してい
き、辞書の容量が一杯になると(空容量が無くなると)
直ちにクリアするか、または容量が一杯になった後、圧
縮率が悪化してきた場合クリアして、再び辞書の登録を
最初から始めるという方法でデータを符号化している。
このため、初期又はクリア後の辞書のデータ登録数が少
ない時点では、入力データの性質を十分に学習すること
ができず高い圧縮率を得ることが難しかった。
el)符号化は、1個の書き換え可能な辞書のみを用いて
行っており、この辞書を入力データにより更新してい
き、辞書の容量が一杯になると(空容量が無くなると)
直ちにクリアするか、または容量が一杯になった後、圧
縮率が悪化してきた場合クリアして、再び辞書の登録を
最初から始めるという方法でデータを符号化している。
このため、初期又はクリア後の辞書のデータ登録数が少
ない時点では、入力データの性質を十分に学習すること
ができず高い圧縮率を得ることが難しかった。
【0046】また、辞書データの登録数が増加しても、
入力データの性質の変化が大きいときは、辞書には平均
的な性質を反映する内容のみが登録されてるため、辞書
の効率的な利用ができない、すなわちデータの圧縮率が
低いという欠点があった。
入力データの性質の変化が大きいときは、辞書には平均
的な性質を反映する内容のみが登録されてるため、辞書
の効率的な利用ができない、すなわちデータの圧縮率が
低いという欠点があった。
【0047】本発明は、かかる実情に鑑みてなされたも
のであって、入力データの性質が予め分かっている場合
は、その入力データの性質に合った初期辞書を学習用辞
書にロードして圧縮を行い、入力データの性質が変った
時点で学習用辞書で学習した内容を初期辞書に反映させ
る処理を行った後、性質の変った入力データに合った初
期辞書を学習用辞書にロードするようにして、常に新し
い性質を取り込んだ初期辞書を作成することにより、常
に高い効率の圧縮データが得られるデータ符号化方式及
びデータ復元方式を実現することを目的とする。
のであって、入力データの性質が予め分かっている場合
は、その入力データの性質に合った初期辞書を学習用辞
書にロードして圧縮を行い、入力データの性質が変った
時点で学習用辞書で学習した内容を初期辞書に反映させ
る処理を行った後、性質の変った入力データに合った初
期辞書を学習用辞書にロードするようにして、常に新し
い性質を取り込んだ初期辞書を作成することにより、常
に高い効率の圧縮データが得られるデータ符号化方式及
びデータ復元方式を実現することを目的とする。
【0048】
【課題を解決するための手段】本発明は、ジブ・レンペ
ル符号によるユニバーサル符号化方式によりデータ圧縮
を行うデータ符号化方式、及びその符号を復元するデー
タ復元方式に適用される。
ル符号によるユニバーサル符号化方式によりデータ圧縮
を行うデータ符号化方式、及びその符号を復元するデー
タ復元方式に適用される。
【0049】請求項1記載の発明のデータ符号化方式は
(図1参照)、書き換え可能な学習用辞書1と、性質の
異なる入力データに対応する複数の初期辞書2−1、2
−2、・・・、2−nと、学習用辞書1に基づいて入力
データを一定区間毎に符号化してデータ圧縮を行う符号
化手段3と、上記入力データの一定区間毎に、初期辞書
2−1、2−2、・・・、2−nの中の上記入力データ
の性質に対応する初期辞書2−i(i=1,2,・・
・,n)を、学習用辞書1にロードして、符号化手段3
による一定区間のデータ圧縮が終了したとき、学習用辞
書1の内容を基に初期辞書2−iの内容を変更する辞書
変更手段4とで構成される。
(図1参照)、書き換え可能な学習用辞書1と、性質の
異なる入力データに対応する複数の初期辞書2−1、2
−2、・・・、2−nと、学習用辞書1に基づいて入力
データを一定区間毎に符号化してデータ圧縮を行う符号
化手段3と、上記入力データの一定区間毎に、初期辞書
2−1、2−2、・・・、2−nの中の上記入力データ
の性質に対応する初期辞書2−i(i=1,2,・・
・,n)を、学習用辞書1にロードして、符号化手段3
による一定区間のデータ圧縮が終了したとき、学習用辞
書1の内容を基に初期辞書2−iの内容を変更する辞書
変更手段4とで構成される。
【0050】上記辞書変更手段4は、例えば請求項2記
載のように、初期辞書2−iからロードされた学習用辞
書1の辞書の文字列の上記一定区間内における参照回数
を計数し、この計数して得られた参照頻度に基づいて、
学習用辞書1の内容を削減し、この削減後の内容を新た
な初期辞書2−iとする。また、例えば請求項3記載の
ように、上記一定区間内において、学習用辞書1にロー
ドされた初期辞書2−iに登録されていた文字列の参照
回数と登録されていなかった文字列の参照回数とをそれ
ぞれ計数し、それらの計数値とそれらの計数値にそれぞ
れ対応する閾値とに基づいて、上記参照された登録され
ていた文字列からなる文字列群及び参照された登録され
ていなかった文字列からなる文字列群をそれぞれ削減し
た後、それら削減後の文字列群を併合して新たな初期辞
書2−iとする。
載のように、初期辞書2−iからロードされた学習用辞
書1の辞書の文字列の上記一定区間内における参照回数
を計数し、この計数して得られた参照頻度に基づいて、
学習用辞書1の内容を削減し、この削減後の内容を新た
な初期辞書2−iとする。また、例えば請求項3記載の
ように、上記一定区間内において、学習用辞書1にロー
ドされた初期辞書2−iに登録されていた文字列の参照
回数と登録されていなかった文字列の参照回数とをそれ
ぞれ計数し、それらの計数値とそれらの計数値にそれぞ
れ対応する閾値とに基づいて、上記参照された登録され
ていた文字列からなる文字列群及び参照された登録され
ていなかった文字列からなる文字列群をそれぞれ削減し
た後、それら削減後の文字列群を併合して新たな初期辞
書2−iとする。
【0051】請求項4記載の発明のデータ復元方式は
(図2参照)、書き換え可能な学習用辞書11と、性質
の異なる入力符号に対応する複数の初期辞書12−1、
12−2、・・・、12−nと、学習用辞書11に基づ
いて、入力される符号を一定区間毎に復元する復元手段
13と、上記入力符号の一定区間毎に、初期辞書12−
1、12−2、・・・、12−nの中の上記入力符号の
性質に対応する初期辞書12−iを、学習用辞書11に
ロードして、復元手段13による一定区間の入力符号の
復元が終了したとき、初期辞書12−iを学習用辞書1
1の内容に変更する辞書変更手段14とで構成される。
(図2参照)、書き換え可能な学習用辞書11と、性質
の異なる入力符号に対応する複数の初期辞書12−1、
12−2、・・・、12−nと、学習用辞書11に基づ
いて、入力される符号を一定区間毎に復元する復元手段
13と、上記入力符号の一定区間毎に、初期辞書12−
1、12−2、・・・、12−nの中の上記入力符号の
性質に対応する初期辞書12−iを、学習用辞書11に
ロードして、復元手段13による一定区間の入力符号の
復元が終了したとき、初期辞書12−iを学習用辞書1
1の内容に変更する辞書変更手段14とで構成される。
【0052】上記辞書変更手段14は、例えば請求項5
記載のように、初期辞書12−iからロードされた学習
用辞書11の辞書の文字列の上記一定区間内における参
照回数を計数し、この計数して得られた参照頻度に基づ
いて、学習用辞書11の内容を削減し、この削減後の内
容を新たな初期辞書12−iとする。また、例えば請求
項6記載のように、上記一定区間内において、学習用辞
書11にロードされた初期辞書12−iに登録されてい
た文字列の参照回数と登録されていなかった文字列の参
照回数とをそれぞれ計数し、それらの計数値とそれらの
計数値にそれぞれ対応する閾値とに基づいて、上記参照
された登録されていた文字列からなる文字列群及び参照
された登録されていなかった文字列からなる文字列群を
それぞれ削減した後、それら削減後の文字列群を併合し
て新たな初期辞書2−iとする。
記載のように、初期辞書12−iからロードされた学習
用辞書11の辞書の文字列の上記一定区間内における参
照回数を計数し、この計数して得られた参照頻度に基づ
いて、学習用辞書11の内容を削減し、この削減後の内
容を新たな初期辞書12−iとする。また、例えば請求
項6記載のように、上記一定区間内において、学習用辞
書11にロードされた初期辞書12−iに登録されてい
た文字列の参照回数と登録されていなかった文字列の参
照回数とをそれぞれ計数し、それらの計数値とそれらの
計数値にそれぞれ対応する閾値とに基づいて、上記参照
された登録されていた文字列からなる文字列群及び参照
された登録されていなかった文字列からなる文字列群を
それぞれ削減した後、それら削減後の文字列群を併合し
て新たな初期辞書2−iとする。
【0053】
【作用】先ず、データ符号化方式では、通常の書き換え
可能な学習用辞書の他に、性質の異なる入力データに対
応する複数の初期辞書が用いられる。そして、入力デー
タの一定区間毎に、その入力データの性質に対応する初
期辞書が選択されて学習用辞書にロードされ、そのロー
ドにより学習用辞書化された初期辞書により、上記一定
区間の入力データが符号化される。この後、元の初期辞
書は、上記符号化の過程で学習・更新された学習用辞書
の内容に書き換えられる。
可能な学習用辞書の他に、性質の異なる入力データに対
応する複数の初期辞書が用いられる。そして、入力デー
タの一定区間毎に、その入力データの性質に対応する初
期辞書が選択されて学習用辞書にロードされ、そのロー
ドにより学習用辞書化された初期辞書により、上記一定
区間の入力データが符号化される。この後、元の初期辞
書は、上記符号化の過程で学習・更新された学習用辞書
の内容に書き換えられる。
【0054】このとき、符号化の際の文字列の参照頻度
に基づいて学習・更新された学習用辞書の内容が削減さ
れて辞書サイズが縮小された後、上記元の初期辞書が書
き換えられる。
に基づいて学習・更新された学習用辞書の内容が削減さ
れて辞書サイズが縮小された後、上記元の初期辞書が書
き換えられる。
【0055】あるいは、学習用辞書化された初期辞書
に、登録されていた文字列及び登録されていなかった文
字列それぞれの参照頻度と、それぞれの参照頻度に対応
する閾値とに基づいて、それぞれ参照された文字列から
なる文字列群が削減された後、それら削減後の文字列群
が併合されて新たな辞書が作成されて、上記元の初期辞
書が書き換えられる。
に、登録されていた文字列及び登録されていなかった文
字列それぞれの参照頻度と、それぞれの参照頻度に対応
する閾値とに基づいて、それぞれ参照された文字列から
なる文字列群が削減された後、それら削減後の文字列群
が併合されて新たな辞書が作成されて、上記元の初期辞
書が書き換えられる。
【0056】これにより、それぞれ性質の異なるデータ
が混在する入力データに対しても高い圧縮率の符号化が
実現できる。次に、上記符号化されたデータに対するデ
ータ復元方式では、同様に通常の書き換え可能な学習用
辞書と性質の異なる入力符号に対応する複数の初期辞書
が用いられる。そして、入力符号の一定区間毎に、入力
符号の性質に対応する初期辞書が選択されて学習用辞書
にロードされ、その学習用辞書化された初期辞書により
入力符号か復元される。
が混在する入力データに対しても高い圧縮率の符号化が
実現できる。次に、上記符号化されたデータに対するデ
ータ復元方式では、同様に通常の書き換え可能な学習用
辞書と性質の異なる入力符号に対応する複数の初期辞書
が用いられる。そして、入力符号の一定区間毎に、入力
符号の性質に対応する初期辞書が選択されて学習用辞書
にロードされ、その学習用辞書化された初期辞書により
入力符号か復元される。
【0057】このとき、復元の際の参照頻度に基づいて
学習・更新された学習用辞書の内容が削減されて辞書サ
イズが縮小された後、上記元の初期辞書が書き換えられ
る。あるいは、学習用辞書化された初期辞書に、登録さ
れていた文字列及び登録されていなかった文字列それぞ
れの参照頻度と、それぞれの参照頻度に対応する閾値と
に基づいて、それぞれ参照された文字列からなる文字列
群が削減された後、それら削減後の文字列群が併合され
て新たな辞書が作成されて、上記元の初期辞書が書き換
えられる。
学習・更新された学習用辞書の内容が削減されて辞書サ
イズが縮小された後、上記元の初期辞書が書き換えられ
る。あるいは、学習用辞書化された初期辞書に、登録さ
れていた文字列及び登録されていなかった文字列それぞ
れの参照頻度と、それぞれの参照頻度に対応する閾値と
に基づいて、それぞれ参照された文字列からなる文字列
群が削減された後、それら削減後の文字列群が併合され
て新たな辞書が作成されて、上記元の初期辞書が書き換
えられる。
【0058】これにより、上記の符号化方式で符号化さ
れたデータが復元される。
れたデータが復元される。
【0059】
【実施例】以下、図面を参照しながら本発明の実施例に
つき詳細に説明する。図3は、本実施例のデータ符号化
方式の基本概念を説明する図である。
つき詳細に説明する。図3は、本実施例のデータ符号化
方式の基本概念を説明する図である。
【0060】このデータ符号化方式では、LZW符号化
で用いる通常の書き換え可能な学習用辞書33−2の他
に、オブジェクトコードの符号化に用いるオブジェクト
コード用初期辞書32−1、ソースコードの符号化に用
いるソースコード用初期辞書32−2、及び画像データ
の符号化に用いる画像用初期辞書32−3の3種類の専
用の初期辞書を用意し、原データ30の性質が予め分か
っていれば、これら3種類の初期辞書を学習用辞書33
−2にロードしてから、原データ30のLZW符号化に
よるデータ圧縮を行う。
で用いる通常の書き換え可能な学習用辞書33−2の他
に、オブジェクトコードの符号化に用いるオブジェクト
コード用初期辞書32−1、ソースコードの符号化に用
いるソースコード用初期辞書32−2、及び画像データ
の符号化に用いる画像用初期辞書32−3の3種類の専
用の初期辞書を用意し、原データ30の性質が予め分か
っていれば、これら3種類の初期辞書を学習用辞書33
−2にロードしてから、原データ30のLZW符号化に
よるデータ圧縮を行う。
【0061】原データ30は、オブジェクトコード、ソ
ースコード、又は画像データ等のデータの種類を示すデ
ータ種類情報と、そのデータ種類情報により示されるデ
ータの長さ(サイズ)を示すサイズ情報から成る入力デ
ータ情報と共に制御部31に入力する。制御部31は、
符号化によるデータ圧縮を開始する前に、上記原データ
30と共に入力される入力データ情報のデータ種類情報
を参照し、オブジェクトコード、ソースコード、又は画
像データの内いずれであるか、その入力データの性質が
判明している場合は、その性質に合った初期辞書を上記
オブジェクトコード用初期辞書32−1、ソースコード
用初期辞書32−2、及び画像用初期辞書32−3の中
から選択して符号化部33の学習用辞書33−2にロー
ドする。
ースコード、又は画像データ等のデータの種類を示すデ
ータ種類情報と、そのデータ種類情報により示されるデ
ータの長さ(サイズ)を示すサイズ情報から成る入力デ
ータ情報と共に制御部31に入力する。制御部31は、
符号化によるデータ圧縮を開始する前に、上記原データ
30と共に入力される入力データ情報のデータ種類情報
を参照し、オブジェクトコード、ソースコード、又は画
像データの内いずれであるか、その入力データの性質が
判明している場合は、その性質に合った初期辞書を上記
オブジェクトコード用初期辞書32−1、ソースコード
用初期辞書32−2、及び画像用初期辞書32−3の中
から選択して符号化部33の学習用辞書33−2にロー
ドする。
【0062】また、入力データの種類(性質)が上記初
期辞書32−1、32−2又は32−3のいずれにも対
応していない場合、または、入力データの性質が不明な
場合は、学習用辞書33−2には、いずれの初期辞書も
ロードせず、学習用辞書33−2を通常の学習用辞書と
して使用する。
期辞書32−1、32−2又は32−3のいずれにも対
応していない場合、または、入力データの性質が不明な
場合は、学習用辞書33−2には、いずれの初期辞書も
ロードせず、学習用辞書33−2を通常の学習用辞書と
して使用する。
【0063】符号化部33は、学習用辞書33−2にロ
ードされた上記選択された初期辞書32−1(又は32
−2、32−3)に基づいて、LZW符号器33−1に
より、上記入力データ情報のサイズ情報によって示され
るデータ長を1ブロックとして入力データを符号化して
圧縮し、図4に示す構成の圧縮データ系列を出力する。
ードされた上記選択された初期辞書32−1(又は32
−2、32−3)に基づいて、LZW符号器33−1に
より、上記入力データ情報のサイズ情報によって示され
るデータ長を1ブロックとして入力データを符号化して
圧縮し、図4に示す構成の圧縮データ系列を出力する。
【0064】その後、上記符号化処理により学習・更新
された学習用辞書33−2の内容は、上記符号化処理前
に選択されて学習辞書33−2にロードされた初期辞書
32−1(又は32−2、32−3)にフィードバック
され、その初期辞書の内容が更新される。
された学習用辞書33−2の内容は、上記符号化処理前
に選択されて学習辞書33−2にロードされた初期辞書
32−1(又は32−2、32−3)にフィードバック
され、その初期辞書の内容が更新される。
【0065】このように、入力データは、符号化の初期
の段階から、その入力データの種類(性質)に適した初
期辞書によって符号化されるため、通常の学習辞書の登
録個数が少ない圧縮初期の場合のように圧縮率が低下す
るということがなく、高率なデータ圧縮がなされる。さ
らに、その初期辞書自身も学習・更新された学習用辞書
の内容を基に更新されて、より入力データの性質に適し
た初期辞書が得られるため、全体として圧縮率を高める
ことが可能になる。
の段階から、その入力データの種類(性質)に適した初
期辞書によって符号化されるため、通常の学習辞書の登
録個数が少ない圧縮初期の場合のように圧縮率が低下す
るということがなく、高率なデータ圧縮がなされる。さ
らに、その初期辞書自身も学習・更新された学習用辞書
の内容を基に更新されて、より入力データの性質に適し
た初期辞書が得られるため、全体として圧縮率を高める
ことが可能になる。
【0066】上記圧縮データ系列は、図4に示すよう
に、LZW符号化された圧縮データ42と、この圧縮デ
ータ42の先頭に付加され、この圧縮データ42がいず
れの辞書を用いてLZW符号化されたものであるかを示
す辞書フラグと、この圧縮データ42に符号化された元
のデータの長さ(符号化ブロックのサイズ)を示すサイ
ズ情報とからなる入力データ情報41とから成る複数の
組で構成されたデータ列となっている。上記入力データ
情報41は圧縮データ42を復元する際に、どの辞書を
用いればよいかということと、復元されるデータのサイ
ズがどのくらいであるかをデータ復元側に知らせるため
のものである。このように、圧縮データ系列は、符号化
ブロック単位に現れる[入力データ情報41(辞書フラ
グと元データサイズ情報)、圧縮データ42]の組の複
数の連なりから成る。
に、LZW符号化された圧縮データ42と、この圧縮デ
ータ42の先頭に付加され、この圧縮データ42がいず
れの辞書を用いてLZW符号化されたものであるかを示
す辞書フラグと、この圧縮データ42に符号化された元
のデータの長さ(符号化ブロックのサイズ)を示すサイ
ズ情報とからなる入力データ情報41とから成る複数の
組で構成されたデータ列となっている。上記入力データ
情報41は圧縮データ42を復元する際に、どの辞書を
用いればよいかということと、復元されるデータのサイ
ズがどのくらいであるかをデータ復元側に知らせるため
のものである。このように、圧縮データ系列は、符号化
ブロック単位に現れる[入力データ情報41(辞書フラ
グと元データサイズ情報)、圧縮データ42]の組の複
数の連なりから成る。
【0067】図5は、上記オブジェクトコード用初期辞
書の作成方法の一例を示したものである。同図に示すよ
うに、オブジェクトコード用初期辞書32−1の作成
は、まず、通常の学習用辞書52を用意し、あるオブジ
ェクトコード51をLZW符号化部53によってLZW
符号化して圧縮データ54を作成する過程において行わ
れる。すなわち、LZW符号化部53は、オブジェクト
コード51を逐次LZW符号化しながら、新規のLZW
符号とその対応するオブジェクトコード列を学習用辞書
52に登録していく。そして全てのオブジェクトコード
51について、LZW符号化が完了した時点で、学習用
辞書52はオブジェクトコード51の性質を反映した辞
書となっている。従って、この学習用辞書52をオブジ
ェクトコード用初期辞書32−1として使用する。
書の作成方法の一例を示したものである。同図に示すよ
うに、オブジェクトコード用初期辞書32−1の作成
は、まず、通常の学習用辞書52を用意し、あるオブジ
ェクトコード51をLZW符号化部53によってLZW
符号化して圧縮データ54を作成する過程において行わ
れる。すなわち、LZW符号化部53は、オブジェクト
コード51を逐次LZW符号化しながら、新規のLZW
符号とその対応するオブジェクトコード列を学習用辞書
52に登録していく。そして全てのオブジェクトコード
51について、LZW符号化が完了した時点で、学習用
辞書52はオブジェクトコード51の性質を反映した辞
書となっている。従って、この学習用辞書52をオブジ
ェクトコード用初期辞書32−1として使用する。
【0068】本実施例では、必要に応じて性質の異なる
他の入力データに対しても初期辞書を逐次作成する。図
6は、画像データのLZW符号化に使用する画像データ
用初期辞書32−3の作成方法を示したものである。画
像データ用初期辞書32−3の作成も、上記オブジェク
トコード用初期辞書32−1の作成と同様にして、LZ
W符号化部63が所定の画像データ61をLZW符号化
する過程で学習用辞書62の参照・登録を行い、全ての
画像データ61のLZW符号化が終了した時点で、画像
データ61の性質を反映した辞書となっている学習用辞
書62を、画像データ用初期辞書32−3として使用す
る。
他の入力データに対しても初期辞書を逐次作成する。図
6は、画像データのLZW符号化に使用する画像データ
用初期辞書32−3の作成方法を示したものである。画
像データ用初期辞書32−3の作成も、上記オブジェク
トコード用初期辞書32−1の作成と同様にして、LZ
W符号化部63が所定の画像データ61をLZW符号化
する過程で学習用辞書62の参照・登録を行い、全ての
画像データ61のLZW符号化が終了した時点で、画像
データ61の性質を反映した辞書となっている学習用辞
書62を、画像データ用初期辞書32−3として使用す
る。
【0069】同様にして、ソースコードのLZW符号化
用のソースコード用初期辞書32−2を作成する。本実
施例では、このようにして作成した初期辞書を用いて、
図3に示すLZW符号化によるデータ圧縮を行う。その
場合、学習により更新された学習用辞書33−2の内容
を、元の初期辞書32−1、32−2又は32−3にロ
ードする場合、学習・更新によりサイズが増大した辞書
内容をそのままロードするのではなく、適度のサイズ、
例えば元の初期辞書のサイズに縮小してからロードす
る。
用のソースコード用初期辞書32−2を作成する。本実
施例では、このようにして作成した初期辞書を用いて、
図3に示すLZW符号化によるデータ圧縮を行う。その
場合、学習により更新された学習用辞書33−2の内容
を、元の初期辞書32−1、32−2又は32−3にロ
ードする場合、学習・更新によりサイズが増大した辞書
内容をそのままロードするのではなく、適度のサイズ、
例えば元の初期辞書のサイズに縮小してからロードす
る。
【0070】図7に、上記元の初期辞書のサイズに縮小
してからロードする方法の模式図を示す。学習用辞書3
3−2は、学習しながら新規のデータを登録していく必
要があるため、予め大きなサイズに設定する(同図(a)
)。この学習用辞書33−2に該当する初期辞書32
−1(または32−2、32−3)をロードして、学習
用辞書33−2を作成する(同図(b) )。入力データの
LZW符号化による圧縮が進むにしたがって、学習用辞
書33−2が逐次更新され、学習用辞書33−2の辞書
データが増加する(同図(c) )。LZW符号化が終了す
ると、辞書の各文字列毎に参照頻度を計数し、使用頻度
の大きい文字列のみからなる初期辞書32−i(i=
1、2、3)を同じサイズまで縮小した学習用辞書33
−2を作成する(同図(d) )。そして、この学習用辞書
33−2を今回使用した初期辞書32−1(または32
−2、32−3)と入れ換える。これによって、初期辞
書32−1(または32−2、32−3)には、常に最
新の入力データに対応した内容が格納される。
してからロードする方法の模式図を示す。学習用辞書3
3−2は、学習しながら新規のデータを登録していく必
要があるため、予め大きなサイズに設定する(同図(a)
)。この学習用辞書33−2に該当する初期辞書32
−1(または32−2、32−3)をロードして、学習
用辞書33−2を作成する(同図(b) )。入力データの
LZW符号化による圧縮が進むにしたがって、学習用辞
書33−2が逐次更新され、学習用辞書33−2の辞書
データが増加する(同図(c) )。LZW符号化が終了す
ると、辞書の各文字列毎に参照頻度を計数し、使用頻度
の大きい文字列のみからなる初期辞書32−i(i=
1、2、3)を同じサイズまで縮小した学習用辞書33
−2を作成する(同図(d) )。そして、この学習用辞書
33−2を今回使用した初期辞書32−1(または32
−2、32−3)と入れ換える。これによって、初期辞
書32−1(または32−2、32−3)には、常に最
新の入力データに対応した内容が格納される。
【0071】尚、上記学習用辞書33−2の辞書データ
は、文字列の既成分と成分複製とで順次連なって、また
あるところでは分岐して形成される分解成分の木を形成
している(詳しくは、前述の宗像清治、「Ziv-Lempelの
データ圧縮法」、情報処理、Vol.26,No.1,Jan.1985年参
照)。上記学習用辞書33−2のサイズの縮小には、上
記参照頻度による方法の代りに、辞書データとして形成
されている文字列の分解成分の木の子節を削除する枝刈
りを行っても同様な辞書縮小の結果が得られる。
は、文字列の既成分と成分複製とで順次連なって、また
あるところでは分岐して形成される分解成分の木を形成
している(詳しくは、前述の宗像清治、「Ziv-Lempelの
データ圧縮法」、情報処理、Vol.26,No.1,Jan.1985年参
照)。上記学習用辞書33−2のサイズの縮小には、上
記参照頻度による方法の代りに、辞書データとして形成
されている文字列の分解成分の木の子節を削除する枝刈
りを行っても同様な辞書縮小の結果が得られる。
【0072】上記図7に示す方法では、学習の結果得ら
れた学習用辞書33−2の内容を、元の初期辞書32−
1(または32−2、32−3)と完全に置き換えてい
るが、元の初期辞書32−1(または32−2、32−
3)にも該当する入力データのの性質に対応した文字列
が登録されている。したがって、このように元の初期辞
書32−1(または32−2、32−3)を全て入れ換
えてしまうのは適切でない場合もあり得る。
れた学習用辞書33−2の内容を、元の初期辞書32−
1(または32−2、32−3)と完全に置き換えてい
るが、元の初期辞書32−1(または32−2、32−
3)にも該当する入力データのの性質に対応した文字列
が登録されている。したがって、このように元の初期辞
書32−1(または32−2、32−3)を全て入れ換
えてしまうのは適切でない場合もあり得る。
【0073】このような考察に基づき、初期辞書32−
1(または32−2、32−3)を部分的に入れ換える
方法を、図8に示す。同図において、LZW符号化によ
るデータ圧縮を行う前に、空の学習用辞書33−2に
(同図(a) )、初期辞書32−1(または32−2、3
2−3)をロードして学習用辞書33−2を作成し(同
図(b) )、この学習用辞書33−2を用いて入力データ
のLZW符号化を行い、上記図7に示す方法と同様にし
て学習辞書33−2を作成する(同図(c) )。
1(または32−2、32−3)を部分的に入れ換える
方法を、図8に示す。同図において、LZW符号化によ
るデータ圧縮を行う前に、空の学習用辞書33−2に
(同図(a) )、初期辞書32−1(または32−2、3
2−3)をロードして学習用辞書33−2を作成し(同
図(b) )、この学習用辞書33−2を用いて入力データ
のLZW符号化を行い、上記図7に示す方法と同様にし
て学習辞書33−2を作成する(同図(c) )。
【0074】そして、 上記LZW符号化の終了後、上
記学習用辞書33−2のサイズを参照頻度または上記枝
刈りにより縮小し、初期辞書の半分サイズの学習用辞書
33−2を作成する(同図(d) )。一方、また、初期辞
書32−1(または32−2、32−3)も同様ににし
て、参照頻度または枝刈りにより、サイズを1/2に縮
小変更する(同図(f) )。次に、この初期辞書32−1
(または32−2、32−3)と上記縮小した学習用辞
書33−2をマージ(併合)して新たな初期辞書32−
1を作成する(同図(g) )。
記学習用辞書33−2のサイズを参照頻度または上記枝
刈りにより縮小し、初期辞書の半分サイズの学習用辞書
33−2を作成する(同図(d) )。一方、また、初期辞
書32−1(または32−2、32−3)も同様ににし
て、参照頻度または枝刈りにより、サイズを1/2に縮
小変更する(同図(f) )。次に、この初期辞書32−1
(または32−2、32−3)と上記縮小した学習用辞
書33−2をマージ(併合)して新たな初期辞書32−
1を作成する(同図(g) )。
【0075】図9は、上述した符号化方式のアルゴリズ
ムを示すフローチャートである。なお、この処理では、
入力される原データを1ワード毎に計数する入力カウン
タCTを用いる。また、上記初期辞書32−1、32−
2、及び32−3を用意する。
ムを示すフローチャートである。なお、この処理では、
入力される原データを1ワード毎に計数する入力カウン
タCTを用いる。また、上記初期辞書32−1、32−
2、及び32−3を用意する。
【0076】同図において、まず、1ブロックサイズの
入力データ(原データ)に対応する入力カウント初期値
を入力カウンタCTに設定する(ステップS1)。ここ
で設定される入力データのブロックサイズは、 例え
ば、「100kバイトのオブジェクトコード」の如く、
同じ性質のデータ(オブジェクトコード)と、そのデー
タが連続する長さであるサイズ(100kバイト)とを
示す情報に基づいて決定される。
入力データ(原データ)に対応する入力カウント初期値
を入力カウンタCTに設定する(ステップS1)。ここ
で設定される入力データのブロックサイズは、 例え
ば、「100kバイトのオブジェクトコード」の如く、
同じ性質のデータ(オブジェクトコード)と、そのデー
タが連続する長さであるサイズ(100kバイト)とを
示す情報に基づいて決定される。
【0077】次に、入力データの性質に対応する初期辞
書をロードする(ステップS2)。これにより、例えば
入力データがオブジェクトコードであれば、オブジェク
トコード用初期辞書32−1が学習用辞書33−2にロ
ードされる。尚、入力データの性質が不明のときは、通
常の(空の)学習用辞書33−2が使用される。
書をロードする(ステップS2)。これにより、例えば
入力データがオブジェクトコードであれば、オブジェク
トコード用初期辞書32−1が学習用辞書33−2にロ
ードされる。尚、入力データの性質が不明のときは、通
常の(空の)学習用辞書33−2が使用される。
【0078】続いて、上記使用する初期辞書を表すコー
ド(辞書フラグ)と、符号化される入力データのサイズ
を出力する(ステップS3)。これにより、図4に示し
た圧縮データ系列の入力データ情報41が出力される。
例えば、100kバイトのオブジェクトコードの場合で
あれば、オブジェクトコード用初期辞書32−1を表す
辞書フラグと100kバイトを表すコードが出力され
る。
ド(辞書フラグ)と、符号化される入力データのサイズ
を出力する(ステップS3)。これにより、図4に示し
た圧縮データ系列の入力データ情報41が出力される。
例えば、100kバイトのオブジェクトコードの場合で
あれば、オブジェクトコード用初期辞書32−1を表す
辞書フラグと100kバイトを表すコードが出力され
る。
【0079】次に、一文字分のデータを入力する(ステ
ップS4)。そして、入力データが「EOF」(終了)
であるか否か判別し(ステップS5)、「EOF」であ
れば入力データのファイルが終了していると判別して直
ちに処理を終了するが、入力データが「EOF」でない
場合は、入力カウンタCTをデクリメントし(ステップ
S6)、このデクリメントした入力カウンタCTの値が
入力データの1ブロック終了を示している(CT=0)
か否か判別する(ステップS7)。
ップS4)。そして、入力データが「EOF」(終了)
であるか否か判別し(ステップS5)、「EOF」であ
れば入力データのファイルが終了していると判別して直
ちに処理を終了するが、入力データが「EOF」でない
場合は、入力カウンタCTをデクリメントし(ステップ
S6)、このデクリメントした入力カウンタCTの値が
入力データの1ブロック終了を示している(CT=0)
か否か判別する(ステップS7)。
【0080】そして、1ブロックのデータ処理がまだ終
了していない場合は(ステップS7で、CT≠0)、上
記ステップS2で選択・ロードした辞書を用いて入力デ
ータの符号化、辞書の学習・更新の処理を行い(ステッ
プS8)、参照の際一致した文字列の参照回数をカウン
トする(ステップS9)。
了していない場合は(ステップS7で、CT≠0)、上
記ステップS2で選択・ロードした辞書を用いて入力デ
ータの符号化、辞書の学習・更新の処理を行い(ステッ
プS8)、参照の際一致した文字列の参照回数をカウン
トする(ステップS9)。
【0081】さらに、選択・ロードした辞書の元の初期
辞書の参照のみを行い(再びステップS8)、一致した
文字列の参照回数をカウントし(再びステップS9)、
そして、ステップS4に戻る。
辞書の参照のみを行い(再びステップS8)、一致した
文字列の参照回数をカウントし(再びステップS9)、
そして、ステップS4に戻る。
【0082】上記ステップS4〜S9を繰り返し、1ブ
ロックの入力データの符号化を最終まで進めることによ
り、ステップS7で入力カウンタCT=0になったこと
を確認して、ステップS10に移行する。
ロックの入力データの符号化を最終まで進めることによ
り、ステップS7で入力カウンタCT=0になったこと
を確認して、ステップS10に移行する。
【0083】ステップS10では、参照頻度による初期
辞書の圧縮(縮小)を行い、さらにステップS11で、
参照頻度による学習用辞書の圧縮(縮小)を行い、ステ
ップS12で、上記それぞれ縮小した初期辞書と学習用
辞書とをマージして、このマージによって得られた辞書
を元の初期辞書と置き換えることにより元の初期辞書の
更新を行って、ステップS1に戻る。
辞書の圧縮(縮小)を行い、さらにステップS11で、
参照頻度による学習用辞書の圧縮(縮小)を行い、ステ
ップS12で、上記それぞれ縮小した初期辞書と学習用
辞書とをマージして、このマージによって得られた辞書
を元の初期辞書と置き換えることにより元の初期辞書の
更新を行って、ステップS1に戻る。
【0084】このようにして、入力データがブロック単
位で同一初期辞書により符号化されて符号化ブロックと
なり、その先頭に符号化に使用された辞書を示す辞書フ
ラグと原データのサイズを示すデータが付加されたブロ
ック単位の圧縮データ(図4参照)となって出力され
る。
位で同一初期辞書により符号化されて符号化ブロックと
なり、その先頭に符号化に使用された辞書を示す辞書フ
ラグと原データのサイズを示すデータが付加されたブロ
ック単位の圧縮データ(図4参照)となって出力され
る。
【0085】このとき、オブジェクトコード、ソースコ
ード、及び画像データ等の入力データは、それらに対応
する初期辞書により処理の立ち上がりから効率よく符号
化され高率にデータ圧縮される。そして、そして使用さ
れた初期辞書が上記マージ後の置き換えにより、より入
力データの性質に対応する初期辞書となる。これによ
り、次回の同一種類の入力データに対しては圧縮率がさ
らに向上する。
ード、及び画像データ等の入力データは、それらに対応
する初期辞書により処理の立ち上がりから効率よく符号
化され高率にデータ圧縮される。そして、そして使用さ
れた初期辞書が上記マージ後の置き換えにより、より入
力データの性質に対応する初期辞書となる。これによ
り、次回の同一種類の入力データに対しては圧縮率がさ
らに向上する。
【0086】尚、上記学習用辞書及び初期辞書を圧縮す
る際、それぞれの参照頻度に閾値を設定して圧縮を行
う。その場合、初期辞書の参照頻度の閾値をILとし、
学習用辞書の参照頻度の閾値をLLとしたとき、IL<
<LLとすれば、入力データに対して応答速度の速い初
期辞書の更新が実現できる。一方、IL>>LLとすれ
ば、最初の初期辞書の内容が変更されにくい構成とする
ことができる。
る際、それぞれの参照頻度に閾値を設定して圧縮を行
う。その場合、初期辞書の参照頻度の閾値をILとし、
学習用辞書の参照頻度の閾値をLLとしたとき、IL<
<LLとすれば、入力データに対して応答速度の速い初
期辞書の更新が実現できる。一方、IL>>LLとすれ
ば、最初の初期辞書の内容が変更されにくい構成とする
ことができる。
【0087】次に、上記符号化された圧縮データの復元
について、図10のフローチャートを用いて説明する。
この復元処理においても、入力カウンタCT、初期辞書
32−1、32−2、及び32−3が使用される。入力
データは、図4に示す圧縮データ系列であり、既述した
ように、1ブロックが、辞書フラグ、データサイズから
成る入力データ情報41と、続く圧縮データブロック4
2から成る。
について、図10のフローチャートを用いて説明する。
この復元処理においても、入力カウンタCT、初期辞書
32−1、32−2、及び32−3が使用される。入力
データは、図4に示す圧縮データ系列であり、既述した
ように、1ブロックが、辞書フラグ、データサイズから
成る入力データ情報41と、続く圧縮データブロック4
2から成る。
【0088】まず、入力される1ブロックの圧縮データ
の第1入力データである辞書フラグを読み込んで、その
圧縮データの符号化の際に用いられた辞書の種類を設定
する(ステップS21)。
の第1入力データである辞書フラグを読み込んで、その
圧縮データの符号化の際に用いられた辞書の種類を設定
する(ステップS21)。
【0089】続いて、上記圧縮データの第2入力データ
である1ブロックのサイズを読み込み、これを初期値と
して入力カウンタCTに設定する(ステップS22)。
これにより、入力データ(圧縮データ)から復元される
原データ数が設定される。
である1ブロックのサイズを読み込み、これを初期値と
して入力カウンタCTに設定する(ステップS22)。
これにより、入力データ(圧縮データ)から復元される
原データ数が設定される。
【0090】次に、上記ステップS21で設定された初
期辞書を、学習用辞書としてロードする(ステップS2
3)。これにより、入力データ(圧縮データ)が符号化
されたとき使用された学習用辞書が設定される。
期辞書を、学習用辞書としてロードする(ステップS2
3)。これにより、入力データ(圧縮データ)が符号化
されたとき使用された学習用辞書が設定される。
【0091】続いて、圧縮データを入力し(ステップS
24)、その入力したデータがファイルの終了を示す
「EOF」でなければ(ステップS25)、その圧縮デ
ータを、学習用辞書により復号(復元)して出力する
(ステップS26)。この処理において、学習用辞書は
逐次学習し辞書データが登録される。
24)、その入力したデータがファイルの終了を示す
「EOF」でなければ(ステップS25)、その圧縮デ
ータを、学習用辞書により復号(復元)して出力する
(ステップS26)。この処理において、学習用辞書は
逐次学習し辞書データが登録される。
【0092】上記に続いて、復元の際、一致した学習用
辞書の文字列の参照回数を計数する(ステップS2
7)。この場合も、符号化の場合と同様に、ロードした
元の初期辞書も参照し(再びステップS26)、一致し
た文字列の参照回数も計数する(再びステップS2
7)。
辞書の文字列の参照回数を計数する(ステップS2
7)。この場合も、符号化の場合と同様に、ロードした
元の初期辞書も参照し(再びステップS26)、一致し
た文字列の参照回数も計数する(再びステップS2
7)。
【0093】そして、復元したワード数だけ入力カウン
タCTをデクリメントし(ステップS28)、つぎに、
そのデクリメントした入力カウンタCTの値を参照し
て、1ブロック分の圧縮データの復元が終了した(CT
=0)か否か判別する(ステップS29)。
タCTをデクリメントし(ステップS28)、つぎに、
そのデクリメントした入力カウンタCTの値を参照し
て、1ブロック分の圧縮データの復元が終了した(CT
=0)か否か判別する(ステップS29)。
【0094】そして、まだ1ブロック分の圧縮データが
全て復元されていない場合(CT≠0)は、上記ステッ
プS24に戻って次に続く圧縮データを入力する。上記
ステップS24〜S29を繰り返し、1ブロックの圧縮
データの復元を終了して、ステップS29で、CT=0
となったならば、ステップS30に移行する。
全て復元されていない場合(CT≠0)は、上記ステッ
プS24に戻って次に続く圧縮データを入力する。上記
ステップS24〜S29を繰り返し、1ブロックの圧縮
データの復元を終了して、ステップS29で、CT=0
となったならば、ステップS30に移行する。
【0095】ステップS30では、参照頻度による初期
辞書の圧縮(縮小)を行い、さらにステップS31で、
参照頻度による学習用辞書の圧縮(縮小)を行い、ステ
ップS32で、上記それぞれ縮小した初期辞書と学習用
辞書とをマージし、このマージによって得られた辞書を
元の初期辞書と置き換えることにより元の初期辞書の更
新を行って、ステップS21に戻る。
辞書の圧縮(縮小)を行い、さらにステップS31で、
参照頻度による学習用辞書の圧縮(縮小)を行い、ステ
ップS32で、上記それぞれ縮小した初期辞書と学習用
辞書とをマージし、このマージによって得られた辞書を
元の初期辞書と置き換えることにより元の初期辞書の更
新を行って、ステップS21に戻る。
【0096】このように、符号化の場合と同様に、1ブ
ロック毎に初期辞書の更新が行われながら圧縮データの
復元が進行する。上記ステップS25で、入力データが
「EOF」であったときは直ちに処理を終了する。
ロック毎に初期辞書の更新が行われながら圧縮データの
復元が進行する。上記ステップS25で、入力データが
「EOF」であったときは直ちに処理を終了する。
【0097】
【発明の効果】本発明によれば、予め、それぞれ異なる
種類の入力データの性質を取り込んだ複数の初期辞書を
用意し、入力データの性質に対応した辞書を用いて入力
データを符号化するので、圧縮開始初期の学習データの
登録個数が少ない時期における圧縮率の低下を防止で
き、符号化の初期から高率の圧縮を実現できる。また、
実際の入力データに合わせて初期辞書の内容を更新する
ので、常に入力データの性質によく適合した辞書による
符号化が行われ、入力データの種類に係わらず高率の圧
縮が実現できる。
種類の入力データの性質を取り込んだ複数の初期辞書を
用意し、入力データの性質に対応した辞書を用いて入力
データを符号化するので、圧縮開始初期の学習データの
登録個数が少ない時期における圧縮率の低下を防止で
き、符号化の初期から高率の圧縮を実現できる。また、
実際の入力データに合わせて初期辞書の内容を更新する
ので、常に入力データの性質によく適合した辞書による
符号化が行われ、入力データの種類に係わらず高率の圧
縮が実現できる。
【0098】したがって、ジブ・レンペル型のユニバー
サル符号方式を用いて、異なる種類のデータが混在する
入力データに対しても高い圧縮率を得ることが可能とな
る。
サル符号方式を用いて、異なる種類のデータが混在する
入力データに対しても高い圧縮率を得ることが可能とな
る。
【図1】本発明のデータ符号化方式の原理図である。
【図2】本発明のデータ復元方式の原理図である。
【図3】一実施例の符号化方式における基本構成の概念
図である。
図である。
【図4】一実施例の圧縮データ系列の構造を説明する図
である。
である。
【図5】最初の初期辞書の作成方法の例を示す図(その
1)である。
1)である。
【図6】初期の初期辞書の作成方法の例を示す図(その
2)である。
2)である。
【図7】学習用辞書を初期辞書にフィードバックする方
法を説明する模式図(その1)である。
法を説明する模式図(その1)である。
【図8】学習用辞書を初期辞書にフィードバックする方
法を説明する模式図(その2)である。
法を説明する模式図(その2)である。
【図9】一実施例のデータ圧縮のアルゴリズムを説明す
るフローチャートである。
るフローチャートである。
【図10】一実施例の圧縮データを復元するアルゴリズ
ムを説明するフローチャートである。
ムを説明するフローチャートである。
【図11】(a),(b) はユニバーサル型ジブ・レンペル符
号の符号化の基本概念を説明する図である。
号の符号化の基本概念を説明する図である。
【図12】LZW符号化のアルゴリズムを説明するフロ
ーチャートである。
ーチャートである。
【図13】LZW符号化に用いられる辞書の構成を説明
する図である。
する図である。
【図14】LZW符号化方法を説明する模式図である。
1、11 学習用辞書 2−1、2−2、・・・、2−n 初期辞書 12−1、12−2、・・・、12−n 初期辞書 3 符号化手段 4、14 辞書変更手段 13 復元手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 森 雅博 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内
Claims (6)
- 【請求項1】 ジブ・レンペル符号によるユニバーサル
符号化方式によりデータ圧縮を行うデータ符号化方式に
おいて、 書き換え可能な学習用辞書(1)と、 性質の異なる入力データに対応する複数の初期辞書(2
−1)、(2−2)、・・・、(2−n)と、 前記学習用辞書(1)に基づいて入力データを一定区間
毎に符号化してデータ圧縮を行う符号化手段(3)と、 前記入力データの一定区間毎に、前記初期辞書(2−
1)、(2−2)、・・・、(2−n)の中の前記入力
データの性質に対応する初期辞書(2−i;i=1,
2,・・・,n)を、前記学習用辞書(1)にロードし
て、前記符号化手段(3)による一定区間のデータ圧縮
が終了したとき、前記学習用辞書(1)の内容を基に前
記初期辞書(2−i)の内容を変更する辞書変更手段
(4)と、 を有することを特徴とするデータ符号化方式。 - 【請求項2】 前記辞書変更手段(4)は、前記初期辞
書(2−i)からロードされた前記学習用辞書(1)の
辞書の文字列の前記一定区間内における参照回数を計数
し、この計数して得られた参照頻度に基づいて、前記学
習用辞書(1)の内容を削減し、この削減後の内容を新
たな初期辞書(2−i)とすることを特徴とする請求項
1記載のデータ符号化方式。 - 【請求項3】 前記辞書書換手段(4)は、前記一定区
間内において、前記学習用辞書(1)にロードされた前
記初期辞書(2−i)に登録されていた文字列の参照回
数と登録されていなかった文字列の参照回数とをそれぞ
れ計数し、それらの計数値とそれらの計数値にそれぞれ
対応する閾値とに基づいて、前記参照された登録されて
いた文字列からなる文字列群及び参照された登録されて
いなかった文字列からなる文字列群をそれぞれ削減した
後、それら削減後の文字列群を併合して新たな初期辞書
(2−i)とすることを特徴とする請求項1記載のデー
タ符号化方式。 - 【請求項4】 請求項1記載のデータ符号化方式により
符号化された圧縮データを復元するデータ復元方式であ
って、 書き換え可能な学習用辞書(11)と、 性質の異なる入力符号に対応する複数の初期辞書(12
−1)、(12−2)、・・・、(12−n)と、 前記学習用辞書(11)に基づいて、入力される符号を
一定区間毎に復元する復元手段(13)と、 前記入力符号の一定区間毎に、前記初期辞書(12−
1)、(12−2)、・・・、(12−n)の中の前記
入力符号の性質に対応する初期辞書(12−i)を、前
記学習用辞書(11)にロードして、前記復元手段(1
3)による一定区間の入力符号の復元が終了したとき、
前記初期辞書(12−i)を前記学習用辞書(11)の
内容に変更する辞書変更手段(14)と、 を有することを特徴とするデータ復元方式。 - 【請求項5】 請求項2記載のデータ符号化方式により
符号化された圧縮データを復元するデータ復元方式であ
って、 前記辞書変更手段(14)は、前記初期辞書(12−
i)からロードされた前記学習用辞書(11)の辞書の
文字列の前記一定区間内における参照回数を計数し、こ
の計数して得られた参照頻度に基づいて、前記学習用辞
書(11)の内容を削減し、この削減後の内容を新たな
初期辞書(12−i)とすることを特徴とする請求項4
記載のデータ復元方式。 - 【請求項6】 請求項3記載のデータ符号化方式により
符号化された圧縮データを復元するデータ復元方式であ
って、 前記辞書変更手段(14)は、前記一定区間内におい
て、前記学習用辞書(11)にロードされた前記初期辞
書(12−i)に登録されていた文字列の参照回数と登
録されていなかった文字列の参照回数とをそれぞれ計数
し、それらの計数値とそれらの計数値にそれぞれ対応す
る閾値とに基づいて、前記参照された登録されていた文
字列からなる文字列群及び参照された登録されていなか
った文字列からなる文字列群をそれぞれ削減した後、そ
れら削減後の文字列群を併合して新たな初期辞書(2−
i)とすることを特徴とする請求項4記載のデータ復元
方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31958092A JP3350118B2 (ja) | 1992-11-30 | 1992-11-30 | データ符号化方式及びデータ復元方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31958092A JP3350118B2 (ja) | 1992-11-30 | 1992-11-30 | データ符号化方式及びデータ復元方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06168097A true JPH06168097A (ja) | 1994-06-14 |
JP3350118B2 JP3350118B2 (ja) | 2002-11-25 |
Family
ID=18111856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31958092A Expired - Fee Related JP3350118B2 (ja) | 1992-11-30 | 1992-11-30 | データ符号化方式及びデータ復元方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3350118B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003333341A (ja) * | 2002-04-25 | 2003-11-21 | Microsoft Corp | インククラスタの明示的な表現を用いた2レベルイメージの圧縮 |
JP2008092582A (ja) * | 2001-02-13 | 2008-04-17 | Mosaid Technologies Inc | 適応データ圧縮のための方法および装置 |
US20090324110A1 (en) * | 2008-06-30 | 2009-12-31 | Mitsue Fujinuki | Screen transfer apparatus and method thereof and program storage medium |
WO2014097353A1 (ja) * | 2012-12-19 | 2014-06-26 | 富士通株式会社 | 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム |
CN116975312A (zh) * | 2023-09-22 | 2023-10-31 | 山东五棵松电气科技有限公司 | 一种智慧校园教育数据管理*** |
-
1992
- 1992-11-30 JP JP31958092A patent/JP3350118B2/ja not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008092582A (ja) * | 2001-02-13 | 2008-04-17 | Mosaid Technologies Inc | 適応データ圧縮のための方法および装置 |
JP2003333341A (ja) * | 2002-04-25 | 2003-11-21 | Microsoft Corp | インククラスタの明示的な表現を用いた2レベルイメージの圧縮 |
US20090324110A1 (en) * | 2008-06-30 | 2009-12-31 | Mitsue Fujinuki | Screen transfer apparatus and method thereof and program storage medium |
JP2010011301A (ja) * | 2008-06-30 | 2010-01-14 | Toshiba Corp | 画面転送装置およびその方法ならびに画面転送のためのプログラム |
US8576237B2 (en) | 2008-06-30 | 2013-11-05 | Kabushiki Kaisha Toshiba | Screen transfer apparatus and method thereof and program storage medium |
WO2014097353A1 (ja) * | 2012-12-19 | 2014-06-26 | 富士通株式会社 | 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム |
JPWO2014097353A1 (ja) * | 2012-12-19 | 2017-01-12 | 富士通株式会社 | 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム |
CN116975312A (zh) * | 2023-09-22 | 2023-10-31 | 山东五棵松电气科技有限公司 | 一种智慧校园教育数据管理*** |
CN116975312B (zh) * | 2023-09-22 | 2023-12-19 | 山东五棵松电气科技有限公司 | 一种智慧校园教育数据管理*** |
Also Published As
Publication number | Publication date |
---|---|
JP3350118B2 (ja) | 2002-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3273119B2 (ja) | データ圧縮・伸長装置 | |
Bell | Better OPM/L text compression | |
JP3421700B2 (ja) | データ圧縮装置及び復元装置並びにその方法 | |
JPH09214353A (ja) | データ圧縮装置及びデータ復元装置 | |
JP3231105B2 (ja) | データ符号化方式及びデータ復元方式 | |
JP3241788B2 (ja) | データ圧縮方式 | |
JP3350118B2 (ja) | データ符号化方式及びデータ復元方式 | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
JP3038223B2 (ja) | データ圧縮方式 | |
JP3241787B2 (ja) | データ圧縮方式 | |
JPH06161705A (ja) | データ符号化方式及びデータ復元方式 | |
JP3105598B2 (ja) | ユニバーサル符号を用いたデータ圧縮方式 | |
JP3242795B2 (ja) | データ処理装置及びデータ処理方法 | |
JP3130324B2 (ja) | データ圧縮方式 | |
JPH0628149A (ja) | 複数種類データのデータ圧縮方法 | |
JPH05152971A (ja) | データ圧縮・復元方法 | |
JP2825960B2 (ja) | データ圧縮方法及び復元方法 | |
JP2823917B2 (ja) | データ圧縮方式 | |
JP2774350B2 (ja) | データ圧縮方法および圧縮データのデータ復元方法 | |
JP3083329B2 (ja) | データ圧縮復元方式 | |
JP2799228B2 (ja) | 辞書初期化方式 | |
JP3051501B2 (ja) | データ圧縮方法 | |
JP3100206B2 (ja) | データ圧縮方法 | |
JP3053656B2 (ja) | データ圧縮における辞書登録方式 | |
JP3015483B2 (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: 20020903 |
|
LAPS | Cancellation because of no payment of annual fees |