JPH05241778A - データ圧縮及び復元方式 - Google Patents

データ圧縮及び復元方式

Info

Publication number
JPH05241778A
JPH05241778A JP4516992A JP4516992A JPH05241778A JP H05241778 A JPH05241778 A JP H05241778A JP 4516992 A JP4516992 A JP 4516992A JP 4516992 A JP4516992 A JP 4516992A JP H05241778 A JPH05241778 A JP H05241778A
Authority
JP
Japan
Prior art keywords
data
dictionary
unit
compression
character
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
JP4516992A
Other languages
English (en)
Inventor
Hirotaka Chiba
広隆 千葉
Yoshiyuki Okada
佳之 岡田
Yasuhiko Nakano
泰彦 中野
Shigeru Yoshida
茂 吉田
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 JP4516992A priority Critical patent/JPH05241778A/ja
Publication of JPH05241778A publication Critical patent/JPH05241778A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)

Abstract

(57)【要約】 【目的】 本発明は、データ圧縮及び復元方式に関し、
圧縮/復元時の処理データが、正規のデータなのか誤っ
たデータなのかを判断できるようにすることを目的とす
る。 【構成】 図1のAにおいて、圧縮部2は、外部ハッシ
ュ法により辞書部3を検索して入力データを圧縮する、
この時、復元部5は、圧縮部2の出力データを受け取
り、外部ハッシュ法で辞書部3を検索して復元し、復元
済データ保持部8に保持する。比較部では、復元済デー
タ保持部8のデータと、入力データ保持部6のデータを
比較して、エラーを検出する。図1のBにおいて、復元
部5は入力データを復元する、圧縮部2は復元部5の出
力データを受け取って圧縮する。比較部7は前記圧縮し
たデータと入力データを比較してエラーを検出する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、各種のデータを圧縮、
あるいは復元する際に利用されるデータ圧縮及び復元方
式に関する。
【0002】(技術の背景)近年、文字コード、ベクト
ル情報、画像など様々な種類のデータがコンピュータで
扱われるようになっており、扱われるデータ量も急速に
増加してきている。大量のデータを扱うときは、データ
の中の冗長な部分を省いてデータ量を圧縮することで、
記憶容量を減らしたり、速く伝送したりできるようにな
る。
【0003】様々なデータを1つの方式でデータ圧縮で
きる方法としてユニバーサル符号化が提案されている。
ここで、本発明の分野は、文字コードの圧縮に限らず、
様々なデータに適用できるが、以下では、情報論理で用
いられている呼称を踏襲し、データの1word単位を文字
と呼び、データが任意wordつながったものを文字列と呼
ぶことにする。
【0004】ユニバーサル符号の代表的な方法として、
Ziv-Lempel(ジブーレンペル)符号がある(詳しくは、
例えば、宗像「Ziv-Lempelのデータ圧縮法」、情報処
理、Vol.26、No.1、1985年を参照のこと)。Ziv-Lempel
符号では、ユニバーサル型と、増分分解型(Incrementa
l parsing )の2つのアルゴリズムが提案されている。
【0005】更に、ユニバーサル型アルゴリズムの改良
として、LZSS符号がある(T.C.Bell 、"Better OPM
/L Text Compression" 、IEEE Ttans.on Commun.、Vo
l.COM-34、No.12 、Dec.1986参照)。また、増分分解型
アルゴリズムの改良としては、LZW(Lempel-Ziv-Wel
ch)符号がある(T.A.Welch 、"A Technique for High-
Performance Data Compression" 、Computer、June 198
4 参照)。
【0006】これらの符号の内、高速処理ができること
と、アルゴリズムの簡単さからLZW符号が記憶装置の
ファイル圧縮などで使われるようになっている。
【0007】
【従来の技術】図13〜図24は従来例を示した図であ
り、図13は、圧縮/復元装置のブロック図、図14は
LZW符号化処理フローチャート、図15はLZW復号
化処理フローチャート、図16のAはLZW符号化の具
体的説明図、図16のBは辞書構成例の説明図、図17
はLZW復号化の具体例説明図である。
【0008】また、図18は外部ハッシュ法のリスト構
造説明図、図19は辞書メモリの構成例(符号化時)、
図20は辞書の説明図(復号化時)、図21は外部ハッ
シュ法によるLZW符号化処理フローチャート、図22
は辞書メモリの構成例(復元時)、図23は辞書の説明
図(復元時)、図24は外部ハッシュ法によるLZW復
合化処理フローチャートである。
【0009】図中、1は圧縮装置(データ圧縮装置)、
2は圧縮部、3は辞書部、4は復元装置、5は復元部を
示す。 (1) 従来のデータ圧縮/復元処理で用いる装置の説明・
・・図13参照 以下に説明する符号化/復号化によるデータ圧縮/復元
処理に用いるデータ圧縮/復元装置の例を図13に示
す。
【0010】図示のように、Aに示した圧縮装置1に
は、符号化によりデータ圧縮処理を行う圧縮部2と、符
号化の際に使用する辞書部3とを設ける。また、Bに示
した復元装置4には、復号化によりデータ復元処理を行
う復元部5と、復号化の際に使用する辞書部3とを設け
る。
【0011】(2) LZW符号による符号化/復号化処理
の説明・・・図14〜図17参照 まずLZW符号化処理は、書き替え可能な辞書を持ち、
入力文字列の中を相異なる文字列(部分列)に分け、こ
の文字列を出現した順に参照番号を付けて辞書に登録す
ると共に、現在入力している文字列を、辞書に登録して
ある最長一致文字列の参照番号で表して符号化するもの
である。
【0012】図16AにLZW符号化の説明図を示すと
共に図17にLZW復号化の説明図を示し、更に図16
Bに符号化及び復号化時に作成される辞書構成例を示
す。尚、図16、17にあっては説明を簡単にするた
め、abcの3文字の組合せからなるデータを圧縮、復
元する場合の例を取り上げている。
【0013】図14のLZW符号化処理では、まずステ
ップS1で予め辞書に全文字につき一文字からなる文字
列を初期値として登録してから符号化を始める。ステッ
プS1の符号化は入力した最初の文字Kにより辞書を検
索して参照番号ωを求め、これを語頭文字列とする。
【0014】次にステップS2で入力データの次の文字
Kを読込み、ステップS3で文字入力が終了したか否か
チェックした後、ステップS4に進んでステップS1で
求めた語頭文字列ωにステップS2で読込んだ文字Kを
加えた拡張文字列(ωK)が辞書にあるか否か探す。
【0015】ステップS4で文字列(ωK)が辞書にな
ければ、ステップS6に進んでステップS1で求めた文
字Kの参照番号ωを符号語code(ω)として出力し、ま
た文字列(ωK)に新たな参照番号を付加して辞書に登
録し、更にステップS2の入力文字列Kを参照番号ωに
置き換えると共に辞書アドレスnをインクリメントして
ステップS2に戻って次の文字Kを読み込む。
【0016】一方、ステップS4で文字列(ωK)が辞
書にあればステップS5で文字列(ωK)を参照番号ω
に置き換え、再びステップS2に戻ってステップS4で
文字列(ωK)が辞書から探せなくなるまで最大一致長
の検索を続ける。
【0017】図16を参照してLZW符号化を具体的に
説明すると次のようになる。まず図16Aの入力データ
input は左から右へと読む。最初の文字aを入力した
時、辞書には文字aの他に一致する文字列がないので、
OUTPUT CODE 1 (参照番号ω)を符号語して出力する。
そして文字aを語頭文字列ωとする。
【0018】次に2番目の文字bを入力したとすると、
この入力文字を語頭文字列ωに加えた拡張文字列ωK=
abは辞書にないことから、文字bのOUTPUT CODE 2 を
符号語として出力する。そして、拡張文字列ωK=ab
に参照番号4を付けて辞書に登録する。実際の辞書登録
は図16Bの右側に示すように文字列1bとして登録さ
れる。そして文字bが語頭文字列ωとなる。
【0019】続いて3番目の文字aを入力したとする
と、文字bに語頭文字列ωを加えた拡張文字列ωK=b
a=2aは辞書にないことから、文字のaのOUTPUT COD
E 1 を符号語として出力した後、拡張文字列ωK=ba
を2aで表し、参照番号5を付けて辞書に登録する。そ
して文字aが新たな語頭文字列ωとなる。
【0020】4番目の入力文字bについては拡張文字列
ωK=abは1bの符号語4として既に辞書に登録され
ているので、文字列ωKを新たな語頭文字列ωとし、5
番目の文字cを入力して拡張文字列ωK=4c=abc
を作る。この拡張文字列ωK=abcは辞書に登録され
ていないことから、文字列ab=1bのOUTPUT CODE4
を符号語として出力し、拡張文字列ωK=abcを辞書
に4cの形で符号語6として登録する。以下同様に、こ
の処理を続ける。
【0021】図15の復号化処理は図14の符号化の逆
の操作を行う。図15のLZW復号化では、符号化時と
同様に予め辞書に全文字につき一文字からなる文字列を
初期値として登録してから復号化を始める。
【0022】まずステップS1で最初の符号(参照番
号)を読込み、現在のCODEをOLDcodeとし、最初の符号
は既に辞書に登録された一文字の参照番号いずれかに該
当することから、入力符号CODEに一致するcode(K)を
探し出し、文字Kを出力する。
【0023】尚、出力した文字Kは後の例外処理のため
FINchar にセットしておく。次にステップS2に進んで
次の符号を読込んでCODEにINcodeとしてセットする。ス
テップS3で新たな符号があるか否か、即ち符号入力の
終了の有無をチェックしてステップS4に進み、ステッ
プS3で入力された符号CODEが辞書に定義(登録)され
ているか否かチェックする。
【0024】通常、入力した符号語は前回までの処理で
辞書に登録されているため、ステップS5に進んで符号
CODEに対応する文字列code(ωK)を辞書から読出し、
ステップS6で文字Kを一時的にスタックし、参照番号
CODE(ω)を新たな符号CODEとして再度ステップS5に
戻り、このステップS5、ステップS6の手順を再帰的
に参照番号ωが一文字Kに至るまで繰り返し、最後にス
テップS7に進んでステップS6でスタックした文字を
LIFO(Last In Fast Out)形式でポップアップして
出力する。
【0025】同時にステップS7において、前回使った
符号ωと今回復元した文字列の最初の1文字Kを組(ω
K)と表した文字列に、新たな参照番号を付加して辞書
に登録する。
【0026】図15を参照してLZW復号化処理を具体
的に説明すると次のようになる。まず図15の最初の入
力符号語(INPUT CODE)は1であり、一文字a、b、c
については既に参照番号1、2、3として図16Bに示
すように辞書に登録されているため、辞書の参照によ
り、符号語1に一致する参照番号の文字列aに置き換え
て出力する。
【0027】次の符号語2についても同様にして文字b
に置き換えて出力する。このとき前回処理した符号語1
と今回復号した文字列の1番目の文字bとを組合わせた
文字列ωK=1bに新たな参照番号4を付加して辞書に
登録する。
【0028】3番目の符号語4は辞書の検索により求め
た文字列1bから文字列abと置き換えて文字列abを
出力する。同時に前回処理した符号語2と今回復号した
文字列の1番目の文字aとの組合せた文字列ωK=2a
(=ba)に新たな参照番号5を付加して辞書に登録す
る。
【0029】以下同様に、この処理を繰り返す。図17
の復号化では次の例外処理がある。この例外処理は、第
6番目の入力符号8の復号で生ずる。符号8は復号時に
辞書に定義されておらず、復号できない。この場合に
は、前回処理した符号5に前回復号した文字列baの最
初の一文字bを文字列5bを求め、更に2ab、bab
と置き換えられて出力される。
【0030】そして、文字列の出力語に前回の符号語5
に今回復号した文字列の文字bを加えた文字列5bに参
照番号8を付加して辞書に登録する。この例外処理は図
15の復号化処理フローのS4、S8の処理を通じて行
われ、最終的にS7で文字列の出力と新たな文字列に参
照番号を付加した辞書への登録S7で行われる。
【0031】なお、図14、15の符号化/復号化処理
は、同じ辞書を作り出しながら行う。図14の流れ図に
示す手順で符号化すると、1つの文字列を辞書検索する
たびに最悪、辞書全体をサーチしなければならないため
に時間がかかった。そこで、従来は辞書検索に外部ハッ
シュ法(open hashing、または、chaining)を用いて処
理速度を上げていた(例えば、オーム社刊、情報処理学
会編、情報処理ハンドブック、を参照のこと)。次に、
外部ハッシュ法について説明する。
【0032】(3) 外部ハッシュ法の説明・・・図18〜
図24参照 文字列からなる集合Sを考えたとき、Sの文字列xのあ
る位置を、文字列xからxの格納位置のアドレスが直接
計算できる仕組みになっていると高速の探索ができる。
これを実現するのがハッシュ法である。
【0033】記憶場所(ハッシュ表)に0からm−1ま
でのアドレスが付されているとすると、ハッシュ法で
は、 関数 h:S→〔0、1、・・・、m−1〕 を一つ定めて、Sの文字列xのアドレスをh(x)で求
める。関数hをハッシュ関数、値h(x)をxのハッシ
ュ・アドレスといっている。
【0034】ハッシュ法は、通常、Sの大きさがmに比
べてはるかに大きい場合に用いられる。そこで、hをど
のように選んだとしても、Sの相異なる文字列x1、x
2に対して、h(x1 )=h(x2)となる場合が起こ
り得る。これを衝突と呼び、衝突する対策の一つとして
外部ハッシュ法(open hashing、または、chaining)が
用いられる。
【0035】以下辞書検索に、外部ハッシュ法を用いた
LZW符号の圧縮/復元処理の概要を説明するが、その
詳細については、例えば「AP−Labo著、ハードデ
ィスククックブック、翔泳社発行、1987」を参照の
こと。
【0036】外部ハッシュ法は、図18に示したよう
に、索引(ディレクトリ)で示されるハッシュアドレス
i毎に連結リストを用意し、衝突を起こしたハッシュア
ドレスh(x)=i文字列xは、連結リストの先頭から
順番に格納する。
【0037】同じハッシュアドレスh(x)をもつ、そ
れぞれの連結リストはバケット(Bucket)と呼ばれてい
る。 外部ハッシュ法による符号化処理の説明・・・図19
〜図21参照 この外部ハッシュ法においては、図18に示すように、
索引部をハッシュアドレスで検索することにより、該当
するリストが示されるようになっている。また、各リス
トには、各要素に対応する識別情報と次の要素の格納場
所を示すポインタとが格納されている。このようにし
て、索引とリストとによって、同じハッシュアドレスを
有する要素が連結されており、順次に探索できるように
なっている。
【0038】例えば、上述した参照番号ωをハッシュア
ドレスとし、このハッシュアドレスに、参照番号号ωに
対応する部分列に1文字を付加した部分列を格納するリ
ストの先頭アドレスを格納する。また、該当するリスト
に、上述した参照番号ωに対応する節点の『子』に相当
する節点に対応する部分列を順次に格納すればよい。こ
のようにして、参照番号ωと1文字Kとの組合せで表さ
れる候補要素の連結関係を示せばよい。また、この場合
は、各要素の拡張文字Kを対応する識別情報としてリス
トに格納すればよい。
【0039】外部ハッシュ法により符号化を行う際に使
用する辞書は、図19、図20のように構成されてい
る。この辞書には、「first 」、「next」、「ext 」
(extention )の各項目(配列)がある。前記first 及
びnextは、図18の索引部に相当し、ext は図18のリ
ストに相当している。
【0040】この辞書は、図20のように表現できる。
即ちext (拡張文字を表している)を中心として、その
左上にはアドレス、左下にはfirst 、右下にはnextを表
示する(説明の都合上、このように表示する)。
【0041】そして、図20に示したように、例えば、
#1、#2、#3、#4・・・の各階層(文字列の順番
に従った階層)で表現され、全体として「木構造」とな
っている。
【0042】この辞書において、拡張文字の格納アドレ
スは、「アドレス」に示してあり、次の文字の先頭アド
レスは「first 」に示してある。また、同一階層のアド
レスは「next」に示してある。従って、これらの情報を
用いて辞書を使用する。
【0043】次に、図21に基づいて、外部ハッシュ法
を用いた符号化処理の概要を説明する。図21のLZW
符号化処理を、説明を簡単にするため文字A、B、Cの
3文字を対象とした場合を例にとって説明すると次のよ
うになる。
【0044】まずステップS1で次の〜の初期化処
理を行う。 第1番目の文字を含むように辞書を初期化する。ここ
でアルファベットA、B、Cの3文字を対象としている
ことから、A、B、Cの文字コードをそのままハッシュ
アドレスとして図19の辞書メモリのアドレス1、2、
3に登録する。
【0045】辞書への現在文字登録数nを前記登録し
た文字数にセットする。アルファベット3文字の場合に
は、n=3となる。 入力した最初の文字Kを語頭文字列iとする。この場
合、最初の入力文字は「A」であることから語頭文字列
i=1とする。
【0046】辞書検索用配列を0に初期化する。即
ち、ファースト、ネクスト及び拡張文字の検索用配列は
first[1,Nmax],next[1,Nmax]、EXT[1,Nmax] で表わされ
るので、これを0に初期化する。
【0047】以上のステップS1の初期化処理が済んだ
ならば、ステップS2移行の処理に進み、その結果、現
在図19及び図20に示す辞書が作成された段階にある
ものとする。
【0048】この状態でいま文字列「AAAA」を入力
して符号化する場合の処理を説明する。ステップS1の
初期化は済んでいるので、最初の入力文字「A」を語頭
文字列ω=1とし、ステップS1で最初の入力文字
「A」を語頭文字列ω=1とし、ステップS2で2番目
の入力文字「A」を読む。続いてステップS3で未処理
文字があることが判別されてステップS5〜ステップS
9に示す辞書検索ステップに進む。
【0049】辞書検索ステップでは、まずステップS5
で語頭文字列ω=1を変数iにi=1としてセットし、
且つ変数jをj=1にセットする。ここで変数iは配列
first の格納値で指定される辞書メモリのアドレス値で
あり、また変数jはnextの格納値で指定される辞書メモ
リのアドレス値である。
【0050】次にステップS6で変数iで指定された図
19の辞書メモリのアドレス1の内容を読み、ext から
シンボル(smbol )として「A」を読出し、またfirst
から次のアドレス「4」を読出して変数i=4にセット
する。
【0051】続いてステップS7に進み、辞書登録ステ
ップに移行するか否か判断するためにi=0か否かチェ
ックし、このときi=4であることからステップS8に
進み、ステップS6のアドレス1のext を参照して得た
シンボル「A」と、1番目の入力文字「A」との一致を
判別する。この場合、両者は一致していることからステ
ップS2に戻り、3番目の入力文字「A」を読込む。
【0052】続いてステップS3を介してステップS5
に進み、辞書メモリのアドレスωにそのときの変数iの
値i=4をセットし、辞書メモリのアドレス4を参照す
る。次にステップS6で辞書メモリのアドレス4の内容
を読み、ext に格納したシンボル(smbol )として、
「B」を読出し、また、first から次のアドレス「6」
を読出して変数i=6にセットする。
【0053】続いてステップS7に進み、i=0か否か
チェックし、このときi=6であることからステップS
8に進み、ステップS6のアドレス4のext から得たシ
ンボル「B」と、ステップS2で得ている入力文字
「A」との一致を判別する。この場合、両者は不一致で
あることからステップS9に進む。
【0054】ステップS9では、まず変数iに辞書メモ
リのアドレス4の参照でnextから得たj=10の値をセ
ットしてi=10とする。この変数iと変数jの置き換
えは、ステップS7の判断を変数iについてのみ行って
いることから、これを変数jについてもできるようにす
るためである。
【0055】続いて置き換えが済んだ変数iで指定され
る辞書メモリのアドレス10を参照し、アドレス10の
ext に格納したシンボル「A」を読出し、更に、アドレ
ス10のfirst に格納している次のアドレス値11を変
数iにセットする。
【0056】次にステップS7に戻り、このときi=1
1であることからステップS9で得られたアドレス10
のシンボル「A」と入力文字「A」とを比較し、一致し
ていることからステップS2に進み、3番目の文字の処
理に進む。
【0057】3番目及び4番目の入力文字「A」につい
ては1番目の入力文字と同様の処理が行われ、辞書メモ
リのアドレス10から11、更にアドレス11から12
に進み、アドレス12の処理が済むとステップS3で処
理対象となる文字がなくなることからステップS16に
進んで最終アドレスω=12を符号{code(ω)}とし
て出力して一連の処理を終える。
【0058】次にステップS11〜ステップS15の辞
書登録ステップの処理を説明する。辞書登録は辞書検索
ステップのfirst 又はnextの検索でi=0となった時に
行われる。
【0059】即ち、ステップS7でi=0が判別される
と、もはや辞書検索はできないのでステップS10でそ
のときの辞書アドレスωを符号{code(ω)}として出
力して辞書登録ステップに入る。
【0060】辞書登録ステップでは、まずステップS1
1でその時点での辞書メモリの現在登録文字数nを変数
iにセットし、更にnを1つインクリメントする。続い
てステップS12でj=0か否かチェックし、j=0で
なければi=0であるのでステップS13に進んでfirs
t の登録処理を行う。j=0であれば、ステップS14
に進んでnextの登録処理を行う。
【0061】ステップS13のfirst の登録処理は、 iカウンタで指定されるメモリアドレスnのfirst に
次の登録先を示す(n+1)の値を格納し、 次のメモリアドレス(n+1)のext に入力文字Kを
シンボルとして登録する。
【0062】具体的に図19、図20でアドレス11に
続いて入力文字「A」を登録する場合を例にとると、変
数iで指定されるメモリアドレス11のfirst 中に、次
の登録先を示すアドレス値12を格納し、次のメモリア
ドレス12のext に入力文字「A」をシンボルとして登
録する。
【0063】一方、ステップS14のnextの登録処理
は、変数iで指定されるメモリアドレスのnext中に、次
の登録先を示す(n+1)の値を格納し、次のメモリア
ドレス(n+1)のext に入力文字Kをシンボルとして
登録する。
【0064】具体的に図19、図20でアドレス10で
入力文字「A」を登録する場合を例にとると、まず変数
iで指定されるメモリアドレス4のnext中に、次のnext
の登録先を示すアドレス値10を格納し、メモリアドレ
ス10のext に入力文字「A」をシンボルとして登録す
る。
【0065】以上の登録処理が済むと、登録が済んだ文
字Kを変数iにセットして、ステップS2から辞書検索
ステップに戻る。 外部ハッシュ法による復号化処理の説明・・・図22
〜図24参照 外部ハッシュ法による復号化処理では、図22、図23
に示した辞書を用いる。この辞書では「before」と「ex
t 」の項目(配列)を用いる。
【0066】「before」は1つ前の階層のアドレス(fi
rst の逆)を示しており、このbeforeを使って辞書を検
索する。この辞書は、図23のように表示される。図示
のように、ext (拡張文字)の左上にアドレスを示し、
左下にbeforeを示している。
【0067】次に、図24の処理フローチャートに基づ
いて、外部ハッシュ法による復号化処理を説明する。図
24において、ステップS1−1、S1−2の初期化
は、辞書検索用配列として、beforeとext を初期化する
以外は、図15の処理S1と同じである。
【0068】更に、ステップS2〜S8の辞書検索によ
る復元処理も図15の処理と基本的には同じである。例
えば、図22、図23に示した辞書で、符号語コード1
2を復元する場合は、次のようにする。先ずコード=1
2で指定される辞書メモリのアドレス12を参照してex
t のシンボル「A」を読み出してスタックする。
【0069】次に、beforeから次のアドレス11を読み
出す(図23の矢印方向に読み出す)。以下同様な処理
を繰り返すことで、アドレス11、10、1のext のシ
ンボル「AAA」が読み出されてスタックされ、アドレ
ス1で、次のメモリアドレスが0となって最小値NM1
N以下となるので、それまでスタックしていたシンボル
列「AAA」を復元した文字列として出力する。
【0070】このような辞書検索に加えて、ステップS
7で辞書登録が行われる。この辞書登録は、シンボルの
復元に対し、1ステップ遅れて行われ、復元した文字列
を出力した後、次の符号語を復元して得た最初の文字
を、現在登録文字数nのメモリアドレスのbeforeに登録
し、かつext に文字をシンボル登録する。
【0071】
【発明が解決しようとする課題】上記のような従来のも
のにおいては、次のような課題があった。 (1) 従来のデータ圧縮/復元方式は、処理中に、ハード
的なエラーが発生しない前提のもとで考えられたもので
ある。
【0072】従って、例えば通信路中にエラーが発生す
ると、処理対象のデータに影響を及ぼし、正常な処理が
できなくなる。 (2) 従来ののLZW符号によるデータ圧縮/復号処理
は、メモリ上に確保した領域上の辞書を作成しながら、
その辞書を使用して処理を行っている。
【0073】この場合、辞書の内容は、連結リストで構
成され、辞書検索時にはこれらのリストをたどる。しか
し、データの圧縮/復元装置として構成した場合、辞書
メモリが破壊されたり、あるいはデータが化けるといっ
た障害も発生する。
【0074】この場合、従来のLZW符号による符号化
/復元化処理では、誤ったデータが読み出され、使用さ
れていても、それが正規のデータなのか、誤ったデータ
なのかを判断することはできなかった。
【0075】本発明は、このような従来の課題を解決
し、データ圧縮/復元処理に使用されるデータが、正規
のデータなのか、誤ったデータなのかを、判断できるよ
うにして、処理の信頼性を高めることを目的とする。
【0076】
【課題を解決するための手段】図1は本発明の原理図で
あり、図1のAはデータ圧縮装置の原理ブロック図、図
1のBはデータ復元装置の原理ブロック図である。
【0077】図中、図13と同符号は同一のものを示
す。また、6は入力データ保持部、7は比較部、8は復
元済データ保持部、9は圧縮済データ保持部を示す。本
発明は上記の課題を解決するため、次のように構成し
た。
【0078】(1) データの圧縮部2と、辞書部3とを具
備し、辞書部3には、符号化済データを、相異なる部分
列に分け、各部分列毎に異なる参照番号ωを付加して登
録しておき、圧縮部2では、辞書部3の検索に外部ハッ
シュ法を使用し、入力データを、辞書部3に登録した部
分列の内、最大長一致するものの参照番号ωで指定して
符号化を行うデータ圧縮方式において、外部ハッシュ法
を用いて、辞書部3を検索することにより、圧縮部2の
符号化処理で検索済の参照番号ωから、部分列のデータ
を復元する復元部5と、該復元部5で復元したデータ
を、圧縮部2の入力データと比較する比較部7とを設
け、該比較部7の比較結果に基づいて、符号化処理に、
誤ったデータが使用されたか否かを検出可能にした。
【0079】(2) 構成(1)の比較部7で比較するデー
タとして、部分列のデータを用いた。 (3) 構成(1)の比較部7で構成するデータとして、参
照番号ωのデータを用いた。
【0080】(4) データの復元部5と、辞書部3とを具
備し、辞書部3には、符号化済データを、相異なる部分
列に分け、各部分列毎に異なる参照番号ωを付加して登
録しておき、復元部5では、所定のデータを、辞書部3
に登録した部分列の内、最大長一致するものの参照番号
ωで指定して符号化した符号語を入力データとし、該入
力データをもとに、外部ハッシュ法を使用して辞書部3
を検索することにより、元の部分列のデータを復元する
データ復元方式において、外部ハッシュ法で辞書部3を
検索して、データ圧縮を行うことにより、前記復元部5
で復元された部分列のデータから、元の参照番号のデー
タを得る圧縮部7と、該圧縮部7で得られたデータを、
前記復元部5の入力データと比較する比較部7とを具備
し、該比較部7の比較結果に基づいて、復元処理に、誤
ったデータが使用されたか否かを検出可能にした。
【0081】(5) 構成(4)の比較部7において比較す
るデータを、部分列のデータとした。 (6) 構成(4)の比較部7において比較するデータを、
参照番号ωのデータとした。
【0082】(7) 構成(4)の復元部5において、復元
対象の符号語を、辞書部3に登録する際、辞書部3を検
索して、登録の有無を検索することにより、前記符号語
の有効/無効を判定するようにした。
【0083】(8) 構成(7)辞書部3の或る部分列以降
のハッシュアドレスが全て登録済の場合には、その旨の
付加情報を、記部分列を示す参照番号に付加しておき、
記付加情報を参照することで、上記登録の有無を検索す
るようにした。
【0084】
【作用】上記構成に基づく本発明の作用を、図1を参照
しながら説明する。 (1) データ圧縮方式の作用・・・図1Aの圧縮装置参照 圧縮装置1の入力データは、圧縮部2に入力すると同時
に、入力データ保持部6に入力して保持される。
【0085】圧縮部2では、外部ハッシュ法により辞書
部3を検索して、入力データの圧縮処理(符号化処理)
を行い、符号化データを出力する。この時、復元部5で
は、圧縮部2の出力データを受け取り、外部ハッシュ法
により辞書部3を検索して復元処理を行い、復元したデ
ータを復元済データ保持部8に格納する。
【0086】その後、比較部7では、復元済データ保持
部8のデータと、入力データ保持部6のデータとを比較
する。その結果、両者が等しければ、正規のデータで圧
縮処理が行われていると判断し、両者が異なっていた場
合には、誤ったデータを使用して圧縮処理が行われたと
判断して、エラー信号を出力し、圧縮処理を停止させ
る。
【0087】(2) データ復元方式の作用・・・図1Bの
復元装置参照 復元装置4の入力データ(既に圧縮処理された符号化デ
ータ)は、復元部5に入力すると共に、入力データ保持
部6に入力して保持される。
【0088】復元部5では、外部ハッシュ法により、辞
書部3を検索して、入力データの復元処理を行い、復元
したデータ(原データ)を出力する。この時、圧縮部2
では、復元部5の出力データを受け取り、外部ハッシュ
法により辞書部3を検索して圧縮処理を行い、圧縮した
データ(符号化データ)を、圧縮済データ保持部9に格
納する。
【0089】その後、比較部7では、圧縮済データ保持
部9のデータと、入力データ保持部6のデータとを比較
する。その結果、両者が等しければ、正規のデータで復
元処理が行われていると判断し、両者が異なっていれ
ば、誤ったデータを使用して復元処理がなされていると
判断し、エラー信号を出力して、復元処理を停止させ
る。
【0090】以上のようにして、データ圧縮及び復元処
理を行うが、上記比較部7で比較するデータとしては、
部分列のデータ、あるいは参照番号を用いる。本発明に
よれば、符号化時には、符号化された参照番号が正しく
その入力データを表現しているかを再度検索する。復元
時には復元されたデータを再度検索対象として検索して
同一な参照番号を得ることができるかを確認すること
で、復元時の辞書の構造を確認することが出来る。
【0091】また、復元時に復元対象の参照番号の辞書
への登録時に、登録データがすでに辞書に登録されてい
ないことを確認することで、伝送もしくは蓄積された参
照番号(符号語)の誤りを検出することができる。
【0092】以上により信頼性の高い圧縮復元装置が実
現できる。
【0093】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。図2〜図12は、本発明の実施例を示した図であ
り、図2はデータ圧縮/復元装置のブロック図、図3は
辞書メモリの構成例(実登録)、図4は辞書の説明図、
図5、図6は圧縮処理フローチャート、図7、8は、圧
縮時におけるエラー監視処理フローチャート、図9、1
0は復元処理フローチャート、図11、12は復元時に
おけるエラー監視処理フローチャートである。
【0094】図2〜12中、図1と同一符号のものは同
一のものを示す。また、10は復元/圧縮済データ保持
部、11はDMA(Direct Memory Access) 制御回路、
12はMPU(マイクロプロセッサ)、13は辞書検索
回路、14は誤り検出用辞書検索回路、15は入出力ポ
ート、16は連続アドレス回路、17は複数文字読み込
み回路、18は連結検出回路、19は一致検査回路、2
0はパイプライン制御回路、3Aは辞書メモリを示す。
【0095】(1) データ圧縮/復元装置の説明・・・図
2参照 図2に示した装置は、図1に示したデータ圧縮装置1
と、データ復元装置4とを同一装置で実現した例であ
る。
【0096】この装置は、MPU12、DMA制御回路
11、辞書メモリ3A、辞書検索回路13、誤り検出用
辞書検索回路14、入出力ポート15、比較部7、入力
データ保持部6、復元/圧縮済データ保持部10等で構
成されている。
【0097】そして、辞書検索回路13と誤り検出用辞
書検索回路14には、それぞれ、連続アドレス回路1
6、連続文字読み込み回路17、連結検出回路18、一
致検査回路19、パイプライン制御回路20等を設け
る。
【0098】なお、復元/圧縮済データ保持部10は図
1の復元済データ保持部8と圧縮済データ保持部9に対
応し、辞書メモリ3Aは、図1の辞書部3に対応する。
以下、上記装置の動作の概要を説明する。
【0099】図2において、処理対象となる原データ
(文字データあるいは符号語データ)はDMA(Direct
Memory Access) 制御回路11を介して入力される。M
PU12は入力された原データを、1文字といままでの
文字列の参照番号を辞書検索回路13の複数文字読み込
み回路17にセットした後、辞書検索回路13を起動す
る。
【0100】辞書検索回路13は以後、辞書メモリ3A
より1文字伸ばした文字列の候補文字を読み込み、一致
検索回路19で入力文字と候補文字との一致検査を行
い、連結検出回路18で候補文字の有無の検出を行う。
パイプライン制御回路20は、一致検査回路19による
入力文字と候補文字の照合と連結検出回路18による入
力文字と候補文字の有無とに並行して辞書メモリ3Aに
次の候補文字の読み出しをかける。このように、パイプ
ライン制御回路20でパイプライン処理を行うことで、
候補文字の複数個ごとの検索と照合処理が辞書メモリ3
Aのサイクルタイムで実行できる。
【0101】更に辞書検索回路13には連続アドレス回
路16が設けられ、連続アドレスを発生、複数文字読み
込み回路17に辞書メモリ3Aの連続アドレスに登録さ
れているハッシュアドレス及び候補文字を読み出すよう
にする。このとき、圧縮に使用した原データは入力デー
タ保持部6により保存する。
【0102】LZW符号化では、辞書メモリ3A中の最
大長一致する文字列を求める。従って、入力文字を付加
して文字列を逐次1文字ずつ伸ばしていき、候補文字が
なくなったところで最大一致長の文字列であることが分
かる。このとき、最大一致長文字列まではアドレスωを
使用した参照番号で表されており、MPU12は、その
参照番号ωを入出力ポート15から外部に圧縮された符
号として出力する。また、参照番号ωと最終入力文字の
組を辞書に登録する。
【0103】誤り検出辞書検索回路14は、辞書を参照
番号ωにより原データを復元して復元/圧縮済データ保
持部10に保存する。比較部7では入力データ保持部6
と復元/圧縮済データ保持部10のデータを比較して不
一致の場合はMPU12に知らせる。この場合、辞書の
構造が矛盾を起こしたことを意味し、処理を中断する。
【0104】一方、Lzw符号の復元は、入力コードで
辞書メモリ3Aをアクセスして連結リストを前にたどり
ながら1文字ずつ復元し、参照番号が0になったとき
に、既に復元した複数の文字列を文字列データとして出
力する。圧縮と同様に、復元したデータを再度符号化し
て同じ圧縮データが得られるかを比較する。
【0105】また、復元時においては辞書に新規にデー
タを登録するとき、登録と同じレベルのハッシュアドレ
スに登録しようとする文字がすでに登録されていないか
をチェックすることで、復元対象の参照番号の謝りが確
認することができる。さらに、同じレベルのハッシュア
ドレスが全て登録済の場合には、対象とするノードに登
録済のマークを付加することで登録時の検索を省略する
ことができる。
【0106】(2) 辞書の説明・・・図3、図4参照 本実施例では、データ圧縮時にはデータの復元を行って
エラーを監視し、データの復元時にはデータの圧縮を行
ってエラーを監視している。
【0107】このため、図3に示した辞書メモリには、
「before」「first 」「next」「ext 」の各配列データ
が格納できるようになっており、データ圧縮時と復元時
で同じ辞書を用いる。
【0108】前記辞書メモリの辞書は、図4に示したよ
うに表現される。なお、この辞書の構成は、従来例の圧
縮時に使用する辞書と、復元時に使用されていた辞書を
一緒にしたものなので、説明は省略する。
【0109】(3) データ圧縮時の処理説明・・・図5〜
図8参照 データ圧縮時には、入力データを、外部ハッシュ法によ
り、符号化データに変換して出力するが、処理の途中
で、誤ったデータが使用されたか否かを監視するため、
一度符号化されたデータを、復号化し、入力データと比
較する。
【0110】前記処理の内、外部ハッシュ法による符号
化処理を図5、図6に示し、エラー監視処理を図7、図
8に示す。またこの処理で用いる辞書は図3、図4に示
したものを用いる。
【0111】先ず、図5、図6の処理フローチャート
に基づいて、データ圧縮時の符号化処理(圧縮部の処
理)を説明する。なお、図5、図6の各処理番号は、カ
ッコ内に示す。また、説明の都合上、処理対象文字を
A、B、Cの3文字とする。
【0112】処理の開始時に、第1番目の文字を含むよ
うに辞書を初期化する(S1)。この例ではA、B、C
3文字を対象としているから、A、B、C3文字の文字
コードをそのままハッシュアドレスとして図3の辞書メ
モリのアドレス1、2、3に登録する(文字コードiを
辞書アドレスiに登録)。
【0113】また、辞書への現登録文字列nに、次に登
録される部分列に与えられる参照番号をセットする。例
えば、文字A、B、Cに与えられた参照番号「1」、
「2」、「3」をハッシュアドレスとして辞書に格納
し、現登録文字列nに数値を設定すればよい(n→NM
IN)。
【0114】ここで、辞書に登録できる部分列の最大値
をNMAXとし、それぞれNMAX個の成分から成る配
列first 、配列next、配列ext 、配列before(図3、図
4参照)を定義し、これらの配列の全ての成分に初期値
0を設定する。
【0115】この場合、配列first は索引部に相当し、
配列next、配列ext はリストに相当している。従って、
配列first のi番目の成分first (i)には、参照番号
iの節点に対応するリストの先頭となる配列nextの成分
を示す番号が設定されている。
【0116】また、配列ext のi番目の成分ext (i)
には、参照番号iで示される辞書の要素の拡張文字Kが
設定されており、配列nextのi番目の成分next(i)に
は、参照番号iの要素の横階層(図11参照)の要素を
示すポインタが設定されている。
【0117】更に、配列beforeのi番目の成分before
(i)には、参照番号iの節点に対応するリストの後側
となる配列nextの成分を示す番号が設定されている。ま
た、辞書検索用配列は、それぞれ、first 〔1.NMA
X〕、next〔1.NMAX〕、ext 〔1.NMAX〕、
before〔1.NMAX〕で表される。
【0118】次に、最初の文字Kを読み込んで、この文
字Kに対応する参照番号を変数iに設定して、符号化処
理を開始する。先ず、拡張文字をKとして、入力文字列
の次の文字を読み込んで(S2)、その次に読み込むべ
き文字が有れば(S3)、辞書の検索処理(S5〜S
9)を行う。
【0119】この場合、変数iを、別の変数ωにし(i
→ω)、変数jを初期値0に設定(0→j)してから
(S5)、変数iに対応する成分first (i)の値で示
される配列nextの成分の番号を、変数iに設定する(S
6)。
【0120】その後、変数iが数値0でないと判定され
た場合(S7)は、該当するリストに格納された要素を
候補要素として、このリストにおける検索処理を行う。
この場合、該当する候補要素の拡張文字を示す成分ext
(i)と拡張文字Kとを比較し(S8)、両者が等しく
なければ、成分next(i)に設定された次の候補要素の
ポインタを、新しい変数iとして(S9)、処理S7に
戻る。
【0121】このようにして、S7、S8、S9の処理
を繰り返して行い、該当するリストを検索する。また、
前記処理S8において、成分ext (t)=symbol=Kと
なった場合は、入力された文字列と一致する部分列が辞
書に登録されていると判断し、処理S2に戻って、次の
文字を読み込み、この文字を付加した文字列の符号化を
行う。
【0122】一方、変数iに対応する成分first
(i)、あるいはnext(i)の値が0であった場合は、
i=0となる(S7)。この場合は、参照番号iの部分
列に連結する他の候補要素が辞書に登録されていないと
判断し、次の処理を行う。
【0123】ここで、上述したように、辞書から該当す
る部分列が検索される毎に、処理S5において、検索さ
れた部分列に対応する参照番号が変数ωに退避されてい
る。従って、この変数ωに退避された参照番号は、入力
文字列に最も長く一致する登録された部分列を示してお
り、この参照番号ωに対応する符号{code(ω)}を出
力する(S10)。
【0124】そして、前記参照番号ωと、入力文字列を
復元部に渡し、エラー監視処理(この処理は後述する)
を行う(S11)。続いて、新しい部分列の登録処理
(S12〜S16)を行う。この登録処理では、先ず、
変数nの値を変数iに設定(n→i)すると共に、変数
nをインクリメント(n+1→n)する(S12)。
【0125】次に変数jがj=0か否かを判断し(S1
3)、j=0であれば、first (ω)に変数iを設定
し、ext (ω)に拡張文字Kを設定し(S14)、参照
番号ωに対応するリストを定義する。
【0126】一方、j=0でなければ(S13)、next
(ω)に変数iを設定し、ext (ω)に拡張文字Kを設
定する(S16)。このようにして、登録処理が終了し
た後に、拡張文字Kに対応する参照番号を変数iとして
(S15)処理S2に戻り、上述した処理を繰り返す。
【0127】その後、読み込むべき文字がなくなると
(S3)、その時の変数ωに対応する符号{code
(ω)}を出力して(S4)、処理を終了する。 次に、符号化したデータを、再び復号化してエラーを
監視する処理(復元部、比較部等の処理)を、図7、8
の処理フローチャートに基づいて説明する。なお、図
7、8の各処理番号は、カッコ内に示す。
【0128】この処理では、一度圧縮部により符号化し
たデータを受け取り、この符号化データを復号化して、
原データ(入力データ)と比較することでエラーの監視
をする。
【0129】先ず、圧縮部(図6の処理11)より、ω
と文字列を受け取り(S20)、1回目であれば(S2
1)、最初の符号(参照番号)を読み込み、現在のコー
ドをオールドコードとする(CODE→OLDcode)。
【0130】また、最初の符号(参照番号)は、既に辞
書に登録された1文字の参照番号のいずれかに該当する
ことから、入力符号コード(code)に一致する文字Kの
コードを検索し、文字Kを出力する(S22)。
【0131】なお、出力した文字Kは、後の処理のため
に、「FINchar 」(最終文字列)にセットしておく(K
→FINchar )。続いて、次の符号を読み込んで、コード
にインコードして(code→INcode) セットし(S2
3)、新たな符号が有るか否か、即ち、符号入力の終了
の有無をチェックする(S24)。
【0132】もし、新たな符号が有れば、入力された符
号コードが辞書に定義(登録)されているか否かをチェ
ックする(S27)。前記処理で、もしコードが定義さ
れていれば、「FINchar 」の文字Kを一時的にスタック
し、(FINchar →stack)、参照番号コードを新たな符号
コード(OLDcode →Code) とする(S29)。
【0133】そして、符号コードが現登録文字列nの最
小値NMIN(アドレスの最小値)まで(S28)、辞
書のbeforeコードから次のアドレスのデータを読み出す
(S30)。
【0134】このようにして、符号コードが現登録文字
列nの最小値(最小アドレス)になると、文字Kを出力
し、辞書登録をする(S31)。なお、S31の処理
は、図24のS7の処理と同じなので、説明を省略す
る。以後、上記処理S24からの処理を繰り返して行
う。
【0135】上記の処理(S24)で、新たな符号が無
くなると、圧縮部からの文字列(入力データ)と、復元
した文字列(一度符号化したものを復元したデータ)が
同じか否かを比較して判断する(S25)。
【0136】この判断で、もし両者が異なっていた場合
には、エラー信号を出力して、圧縮処理を中止させる
(S27)。即ち、前記比較により、両者が異なってい
た場合には、誤ったデータを使用して圧縮処理をしてい
るので、前記のように処理を行う。
【0137】しかし、前記比較で、両者が一致すれば、
処理データは正規のデータであるから、圧縮部26へ戻
って符号化処理を続ける(S26)。 (4) データ復元時の処理説明・・・図9〜図12参照 データ復元時には、入力データ(符号化データ)を、外
部ハッシュ法により、復号化データに変換して出力する
が、この場合にも、処理の途中で誤ったデータが使用さ
れたか否かを監視するため、一度復号化したデータを符
号化し、入力データと比較する。
【0138】前記処理の内、外部ハッシュ法による復号
化処理を図9、図10に示し、エラー監視処理を図1
1、図12に示す。また、辞書は、図3、図4に示した
ものを用いる。
【0139】先ず、図9図、10の処理フローチャー
トに基づいて、データ復元時の復号化処理(復元部の処
理)を説明する。なお、図9、図10の各処理番号はカ
ッコ内に示す。
【0140】復号化処理では、符号化時と同様に、予め
辞書に、全文字につき、1文字から成る文字列を初期値
として登録してから復号化を始める。最初に初期化(S
51)を行うが、この処理は図5の処理と同じである。
【0141】次に、最初の符号(参照番号)を読み込
み、現在のコード(code) をオールドコード(OLDcode)
とし、入力符号コードに一致する文字Kのコードを検索
し、文字を出力する(S52)。
【0142】なお、出力した文字Kは後の処理のために
「FINchar 」にセットしておく(K→FINchar )。ま
た、圧縮用に、文字Kを語頭文字列(plifix string)ω
に設定する(S53)。
【0143】その後、次の符号を読んで、コードにイン
コードとしてセット(CODE→INcode) する(S54)。
続いて、新たな符号があるか否か、即ち、符号入力の終
了の有無をチェックして(S55)、次の処理に進む。
【0144】もし、新たな符号が有れば、入力された符
号コードが辞書に定義(登録)されているか否かをチェ
ックし(S56)、定義されていれば、「FIN char」の
文字Kを一時的にスタックし(FINchar→stack)、参照番
号コードを新たな符号コード(OLDcode →Code) とする
(S57)。
【0145】そして符号コードが、現登録文字列nの最
小値NMIN(アドレスの最小値)になるまで(S5
9)、辞書のbeforeコードから次のアドレスのデータを
読み出す(S58)。
【0146】このようにして文字Kを出力し、辞書登録
を行う(S60)。なお、図10のS56〜S60の処
理は、図8のS27〜S31の処理、及び図24のS4
〜S8の処理と同じなので、詳細な説明は省略する。
【0147】前記の処理が終了すると、圧縮部にオール
ドコード(OLDcode )と、復元文字列を渡し、確認(エ
ラー監視処理)を行う(S61)。そして、上記S55
の処理に戻り、次の処理を行う。
【0148】次に、復号化したデータを、再び符号化
して、エラーを監視する処理(圧縮部、比較部等の処
理)を、図11、図12に基づいて説明する。なお、図
11、図12の各処理番号はカッコ内に示す。
【0149】この処理では、復元部より、一度復号化し
たデータを受け取り、このデータを符号化して原データ
(入力データ)と比較することでエラーの監視をする。
先ず、復元部より、コードと文字列を受け取る(S6
2)。
【0150】そして、次の入力文字Kを読み込んで(S
63)、その次に読み込むべき文字があれば(S6
4)、辞書を検索する。この場合、変数iを、別の変数
ωにし(i→ω)、変数jを初期値0に設定(0→j)
してから(S66)、変数iに対応する成分first(i)
の値で示される配列nextの成分の番号を、変数iに設定
する(S67)。
【0151】次に、変数iが数値0(i=0)でないと
判定された場合(S69)、該当するリストに格納され
た要素を候補要素として、このリストにおける検索処理
を行う。
【0152】この場合、該当する候補要素の拡張文字を
示す成分ext (i)と拡張文字Kとを比較し(S7
0)、両者が等しくなければ、成分next(i)に設定さ
れた次の候補要素のポインタを、新しい変数iとして
(S68)、処理S69に戻る。
【0153】このようにして、S68、S9、S70の
処理を繰り返して行い、該当するリストを検索する。一
方・変数iに対応する成分first(i)、あるいはnext
(i)の値が0であった場合には、i=0となる(S6
9)。
【0154】この場合は、参照番号iの部分列に連結す
る他の候補要素が辞書に登録されていないと判断し、図
4のS10の処理と同様にしてコード{code( ω)}を
出力する(S71)。
【0155】そして、復元時のコードと、参照番号ωが
同じか否かを判断し(S72)、もし異なっていればエ
ラー信号を出力し、復元処理を中止させる(S73)。
しかし、復元時のコードとωが同じならば(S72)、
正規のデータで処理されていると判断し、次の辞書登録
処理(S74〜S79)を行う。
【0156】なお、前記の辞書登録処理は、図6の処理
S12〜S16と同じ処理なので、説明を省略する。 (他の実施例)以上実施例について説明したが、本発明
は次のようにしても実施可能である。
【0157】(1) データ圧縮時及び復元時の比較処理
(エラー監視処理)において、部分列を比較してもよ
く、また参照番号を比較してもよい。 (2) データ復元方式においては、ある部分列以降のハッ
シュアドレスが全て使用中であった場合には、その旨を
示す付加情報を、参照番号に付加しておくことで、登録
済みの検索を簡素化することができる。
【0158】
【発明の効果】以上説明したように、本発明によれば次
のような効果がある。 (1) データの圧縮/復元処理において、処理しているデ
ータが、正規のデータなのか、誤ったデータなのかを検
出することができる。従って、データの圧縮/復元処理
の信頼性が向上する。
【0159】(2) 符号化時には、符号化された参照番号
が正しくその入力データを表現しているかを再度検索す
る。復元時には復元されたデータを再度検索対象として
検索して同一な参照番号を得ることができるかを確認す
ることで、復元時の辞書の構造を確認することが出来
る。また、復元時に復元対象の参照番号の辞書への登録
時に、登録データがすでに辞書に登録されていないこと
を確認することで、伝送もしくは蓄積された参照番号
(符号語)の誤りを検出することができる。以上により
信頼性の高い圧縮復元装置が実現できる。
【図面の簡単な説明】
【図1】本発明の原理図である。
【図2】本発明の実施例におけるデータ圧縮/復元装置
のブロック図である。
【図3】辞書メモリの構成例(実登録)である。
【図4】辞書の説明図である。
【図5】圧縮処理フローチャート(その1)である。
【図6】圧縮処理フローチャート(その2)である。
【図7】圧縮時におけるエラー監視処理フローチャート
(その1)である。
【図8】圧縮時におけるエラー監視処理フローチャート
(その2)である。
【図9】復元処理フローチャート(その1)である。
【図10】復元処理フローチャート(その2)である。
【図11】復元時におけるエラー監視処理フローチャー
ト(その1)である。
【図12】復元時におけるエラー監視処理フローチャー
ト(その2)である。
【図13】従来の圧縮/復元装置のブロック図である。
【図14】従来のLZW符号化処理フローチャートであ
る。
【図15】従来のLZW復号化処理フローチャートであ
る。
【図16】Aは従来のLZW符号化の具体例説明図、B
は辞書構成例の説明図である。
【図17】従来のLZW復号化の具体例説明図である。
【図18】外部ハッシュ法のリスト構造説明図である。
【図19】辞書メモリの構成例(符号化時)である。
【図20】辞書の説明図(符号化時)である。
【図21】従来の外部ハッシュ法によるLZW符号化処
理フローチャートである。
【図22】辞書メモリの構成例(復元時)である。
【図23】辞書の説明図(復元時)である。
【図24】従来の外部ハッシュ法によるLZW復号化処
理フローチャートである。
【符号の説明】
1 圧縮装置 2 圧縮部 3 辞書部 4 復元装置 5 復元部 6 入力データ保持部 7 比較部 8 復元済データ保持部 9 圧縮済データ保持部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 吉田 茂 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 データの圧縮部(2)と、辞書部(3)
    とを具備し、 辞書部(3)には、符号化済データを、相異なる部分列
    に分け、各部分列毎に異なる参照番号(ω)を付加して
    登録しておき、 圧縮部(2)では、辞書部(3)の検索に外部ハッシュ
    法を使用し、 入力データを、辞書部(3)に登録した部分列の内、最
    大長一致するものの参照番号(ω)で指定して符号化を
    行うデータ圧縮方式において、 外部ハッシュ法を用いて、辞書部(3)を検索すること
    により、 圧縮部(2)の符号化処理で検索済の参照番号(ω)か
    ら、部分列のデータを復元する復元部(5)と、 該復元部(5)で復元したデータを、圧縮部(2)の入
    力データと比較する比較部(7)とを設け、 該比較部(7)の比較結果に基づいて、符号化処理に、
    誤ったデータが使用されたか否かを検出可能にしたこと
    を特徴とするデータ圧縮方式。
  2. 【請求項2】 上記比較部(7)において比較するデー
    タが、部分列のデータであることを特徴とする請求項1
    記載のデータ圧縮方式。
  3. 【請求項3】 上記比較部(7)において比較するデー
    タが、参照番号(ω)のデータであることを特徴とする
    請求項1記載のデータ圧縮方式。
  4. 【請求項4】 データの復元部(5)と、辞書部(3)
    とを具備し、 辞書部(3)には、符号化済データを、相異なる部分列
    に分け、各部分毎に異なる参照番号(ω)を付加して登
    録しておき、 復元部(5)では、 所定のデータを、辞書部(3)に登録した部分列の内、
    最大長一致するものの参照番号(ω)で指定して符号化
    した符号語を入力データとし、 該入力データをもとに、外部ハッシュ法を使用して辞書
    部(3)を検索することにより、元の部分列のデータを
    復元するデータ復元方式において、 外部ハッシュ法で辞書部(3)を検索して、データ圧縮
    を行うことにより、 前記復元部(5)で復元された部分列のデータから、元
    の参照番号のデータを得る圧縮部(7)と、 該圧縮部(7)で得られたデータを、前記復元部(5)
    の入力データと比較する比較部(7)とを具備し、 該比較部(7)の比較結果に基づいて、復元処理に、誤
    ったデータが使用されたか否かを検出可能にしたことを
    特徴とするデータ復元方式。
  5. 【請求項5】 上記比較部(7)において比較するデー
    タが、部分列のデータであることを特徴とする請求項4
    記載のデータ復元方式。
  6. 【請求項6】 上記比較部(7)において比較するデー
    タが、参照番号(ω)のデータであることを特徴とする
    請求項4記載のデータ復元方式。
  7. 【請求項7】 上記復元部(5)において、復元対象の
    符号語を、辞書部(3)に登録する際、 辞書部(3)を検索して、登録の有無を検索することに
    より、前記符号語の有効/無効を判定することを特徴と
    した請求項4記載のデータ復元方式。
  8. 【請求項8】 上記辞書部(3)の或る部分列以降のハ
    ッシュアドレスが全て登録済の場合には、 その旨の付加情報を、上記部分列を示す参照番号に付加
    しておき、 上記付加情報を参照することで、上記登録の有無を検索
    することを特徴とした請求項7記載のデータ復元方式。
JP4516992A 1992-03-03 1992-03-03 データ圧縮及び復元方式 Withdrawn JPH05241778A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4516992A JPH05241778A (ja) 1992-03-03 1992-03-03 データ圧縮及び復元方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4516992A JPH05241778A (ja) 1992-03-03 1992-03-03 データ圧縮及び復元方式

Publications (1)

Publication Number Publication Date
JPH05241778A true JPH05241778A (ja) 1993-09-21

Family

ID=12711767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4516992A Withdrawn JPH05241778A (ja) 1992-03-03 1992-03-03 データ圧縮及び復元方式

Country Status (1)

Country Link
JP (1) JPH05241778A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007124561A (ja) * 2005-10-31 2007-05-17 Fujitsu Ltd データ圧縮方法及び圧縮データ送信方法
JP2007129683A (ja) * 2006-03-13 2007-05-24 Fujitsu Ltd 圧縮データ送信方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007124561A (ja) * 2005-10-31 2007-05-17 Fujitsu Ltd データ圧縮方法及び圧縮データ送信方法
JP2007129683A (ja) * 2006-03-13 2007-05-24 Fujitsu Ltd 圧縮データ送信方法

Similar Documents

Publication Publication Date Title
JP2000124810A (ja) 符号化装置及び復号化装置
EP0688104A2 (en) Data compression method and apparatus
Anisimov et al. Variable-length prefix codes with multiple delimiters
JPH05241778A (ja) データ圧縮及び復元方式
JP3038223B2 (ja) データ圧縮方式
JP2952068B2 (ja) データ圧縮及び復元方式
JP3038233B2 (ja) データ圧縮及び復元装置
JP2952067B2 (ja) データ圧縮方式
JP3350118B2 (ja) データ符号化方式及びデータ復元方式
JPH05252049A (ja) データ圧縮処理方式及びデータ復元処理方式
JPH05298061A (ja) データ圧縮および復元方式ならびにその装置
JPH05250137A (ja) データ圧縮及び復元方式
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3038234B2 (ja) データ圧縮装置の辞書検索方式
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
JP2957801B2 (ja) データ圧縮方式およびその復元方式
JP3058931B2 (ja) データ圧縮・復元における辞書登録方式
JPH05152971A (ja) データ圧縮・復元方法
JP3117760B2 (ja) データ復元方式
JPH06161705A (ja) データ符号化方式及びデータ復元方式
JP3053656B2 (ja) データ圧縮における辞書登録方式
JP3083550B2 (ja) データ圧縮及び復元方法
JP2825960B2 (ja) データ圧縮方法及び復元方法
JPH09232967A (ja) データ圧縮装置及び復元装置
JP3115066B2 (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: 19990518