(57)【特許請求の範囲】
【請求項１】
データを圧縮する方法において、
連続したｎ（ｎは正の整数）個のデータを受け取る段階と、
前記データのうち隣接した二つのデータ各々の差を計算する段階と、
前記差が全部基準値より小さいか否かを判別する段階と、
前記差が全部基準値より小さい時に、
前記各々の差に対応するデルタ値を連結したデルタデータを生成し、生成されたデータを貯蔵し、
前記連続したｎ個のデータに引き続いてｎ個のデータを受け取り、
前記差の計算段階にリターンする段階と、
前記差が全部基準値より小さく、少なくとも一つの前記デルタデータが貯蔵された時に、前記差に基づいた圧縮動作が遂行されることを示すコマンドと、前記貯蔵されたデルタデータの個数と、前記貯蔵されたデルタデータとを圧縮データとして出力する段階とを含むことを特徴とするデータ圧縮方法。
【請求項２】
前記デルタデータを生成する段階は、
前記隣接した二つのデータ各々の前記差を対応するデルタ値に変換する段階と、
前記デルタ値を直列に連結して前記デルタデータを生成する段階とを含むことを特徴とする請求項１に記載のデータ圧縮方法。
【請求項３】
データを圧縮する方法において、
現在のデータを受け取る段階と、
前記現在のデータを以前のデータに置換する段階と、
前記以前のデータに引き続いた新しい現在のデータを受け取る段階と、
前記以前のデータと前記現在のデータとの差を計算して貯蔵する段階と、
前記以前のデータと前記現在のデータとの差が０より大きく、基準値より小さいか否かを判別する段階と、
前記以前のデータと前記現在のデータとの差が０より大きく、基準値より小さい時に、
第１カウンタの値を増加させ、
その第１カウンタの値がｋ（ｋは正の整数）より小さい時に、前記置換段階にリターンし、
前記第１カウンタの値がｋである時に、ｋ個の前記差に対応するデルタ値を連結したデルタデータを生成する段階と、
前記以前のデータと前記現在のデータとの差が０、または基準値より大きく、前記デルタデータが少なくとも一つ生成された時に、コマンドと、前記デルタデータの個数と、前記デルタデータとを圧縮データとして出力する段階とを含むことを特徴とするデータ圧縮方法。
【請求項４】
前記デルタデータを生成する段階は、
前記差の各々を対応するデルタ値に変換する段階と、
前記デルタ値を直列に連結して前記デルタデータを生成する段階とを含むことを特徴とする請求項３に記載のデータ圧縮方法。
【請求項５】
前記以前のデータと前記現在のデータとの差が０である時に、変形ＲＬＣ方法で圧縮を遂行する段階をさらに含むことを特徴とする請求項３に記載のデータ圧縮方法。
【請求項６】
前記第１カウンタの値がｋ（ｋは正の整数）より小さい時に、前記置換段階にリターンする段階を遂行する前に、前記以前のデータを貯蔵手段に貯蔵する段階をさらに含むことを特徴とする請求項５に記載のデータ圧縮方法。
【請求項７】
前記変形ＲＬＣ圧縮段階は、
前記第１カウンタの値が１より大きいか否かを判別する段階と、
前記第１カウンタの値が１より大きい時に、
前記貯蔵手段に貯蔵された前記データの個数に対応する不一致コマンドを出力し、
前記貯蔵手段に貯蔵されたデータを全部出力し、
一致カウンタの値を増加させる段階と、
前記一致カウンタの値が最大値、または前記現在のデータが最後のデータである時に、前記一致カウンタの値に対応する一致コマンド、前記現在のデータを出力する段階と、
前記一致カウンタの値が前記最大値ではなく、そして現在のデータが最後のデータではない時に、前記置換段階にリターンする段階とを含むことを特徴とする請求項６に記載のデータ圧縮方法。
【請求項８】
前記以前のデータと前記現在のデータとの差が前記基準値より大きい時に、変形ＲＬＣ方法により圧縮を実行する段階をさらに含むことを特徴とする請求項３に記載のデータ圧縮方法。
【請求項９】
前記第１カウンタの値がｋ（ｋは正の整数）より小さい時に、前記置換段階にリターンする段階を実行する前に、前記以前のデータを貯蔵手段に貯蔵する段階をさらに含むことを特徴とする請求項８に記載のデータ圧縮方法。
【請求項１０】
前記変形ＲＬＣ圧縮段階は、
前記第１カウンタの値が１より大きいか否かを判別する段階と、
前記第１カウンタの値が１より大きい時に、
不一致カウンタの値を前記貯蔵手段に貯蔵された前記以前のデータの個数と設定し、
前記不一致カウンタの値を増加させ、
前記現在のデータを貯蔵手段に貯蔵する段階と、
前記不一致カウンタの値が最大値、または前記現在のデータが最後のデータである時に、前記不一致カウンタの値に対応する不一致コマンド、前記現在のデータを出力する段階と、
前記不一致カウンタの値が前記最大値ではなく、そして前記現在のデータが最後のデータではない時に、前記置換段階にリターンする段階とを含むことを特徴とする請求項９に記載のデータ圧縮方法。
【請求項１１】
連続したｎ（ｎは正の整数）個のデータのうち隣接した二つのデータが互いに同一でなく、しかも隣接した二つのデータの各々の差が基準値より小さい時に、前記各々の差に対応するデルタ値を連結したデルタデータを含む圧縮されたデータを復元する方法において、
コマンドを受け取る段階と、
前記コマンドが前記差に基づいた圧縮を示すコマンドであるか否かを判別する段階と、
前記コマンドが前記差に基づいた圧縮を示すコマンドである時に、
圧縮されたデータの個数、第１データ、及び前記デルタデータを受け取り、
前記第１及びデルタデータから元のｎ個のデータを復元し、
カウンタの値を増加させる段階と、
前記圧縮されたデータの個数と前記カウンタの値が一致するか否かを判別する段階と、
前記圧縮されたデータの個数と前記カウンタの値とが一致しなければ、前記第１及びデルタデータの受信段階にリターンする段階とを含むことを特徴とするデータ復元方法。
【請求項１２】
前記データ復元段階は、
前記デルタデータを分割し、前記ｎ個のデータのうち隣接した二つのデータ各々に対応するｎ−１個のデルタ値を生成する段階と、
前記隣接した二つのデータの前記デルタ値を対応する差の値に変換する段階と、
前記第１データと前記隣接した二つのデータの差から前記ｎ個の元のデータを復元する段階とを含むことを特徴とする請求項１１に記載のデータ復元方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ圧縮方法に関するものであり、さらに詳細には、連続したデータの変化量が小さい時に圧縮効率を高めることができるデータ圧縮方法に関するものである。さらに、本発明は、データ復元方法に関するものである。
【０００２】
【従来の技術】
２進（ｂｉｎａｒｙ）映像データを圧縮するための技法のうち代表的な方法としてＲＬＣ（ｒｕｎ  ｌｅｎｇｔｈ  ｃｏｄｉｎｇ）がある。この圧縮方法は連続的に繰り返されるデータを繰り返し回数とデータ対に代替するものであって、繰り返されるデータのサイズが大きい時に、または頻繁に現れる時に圧縮効率が高い。特に、映像データにおいて、同一の色を表現するためのデータは同一であるので、ＲＬＣ方法による圧縮はかなり効率的である。ＲＬＣの一番大きい長所は圧縮方法が簡単なので、実現することが容易であることである。このようなＲＬＣ圧縮技法は映像及び音声のようなマルチメディアデータの圧縮だけではなく、システム間のデータ伝送でも用いられる。
【０００３】
次の例を通じてＲＬＣ方法を説明する。
データ列１
０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３，０ｘ０４，…０ｘｆｃ，０ｘｆｄ，０ｘｆｅ，０ｘｆｆ
データ列２
０ｘ２０，０ｘ２２，０ｘ２８，０ｘ２５，０ｘ２１，…０ｘ２３，０ｘ２１，０ｘ２５，０ｘ２７
データ列３
０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，…，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，
データ列４
０ｘ０５，０ｘ１１，０ｘ３ｆ，０ｘ２ｅ，０ｘ９１，…，０ｘ０ａ，０ｘａｂ，０ｘ７ｆ，０ｘ１９
【０００４】
データ列１は１６進数で表現された１バイト（すなわち、８ビット）データが２５６個である２５６バイトのデータ列である。データ列２は１６進数で表現された１バイトデータが２５６個である２５６バイトのデータ列である。データ列３は１６進数で表現された１バイトデータ‘０ａ’が２５６個である２５６バイトのデータ列である。そしてデータ列４は１６進数で表現された１バイトのデータが一定の規則なしに羅列された２５６バイトのデータ列である。
【０００５】
ＲＬＣ技法によってデータ列１乃至３を圧縮すれば、次の通りである。
データ列１−１
（０ｘ００：０ｘ００），（０ｘ００：０ｘ０１），（０ｘ００：０ｘ０２），（０ｘ００：０ｘ０３），（０ｘ００：０ｘ０４），…，（０ｘ００：０ｘｆｃ），（０ｘ００：０ｘｆｄ），（０ｘ００：０ｘｆｅ），（０ｘ００：０ｘｆｆ）
データ列２−１
（０ｘ００：０ｘ２０），（０ｘ００：０ｘ２２），（０ｘ００：０ｘ２８），（０ｘ００：０ｘ２５），（０ｘ００：０ｘ２１），…，（０ｘ００：０ｘ２３），（０ｘ００：０ｘ２１），（０ｘ００：０ｘ２５），（０ｘ００：０ｘ２７）
データ列３−１
（０ｘｆｆ：０ｘ０ａ）
データ列４−１
（０ｘ００：０ｘ０５），（０ｘ００：０ｘ１１），（０ｘ００：０ｘ３ｆ），（０ｘ００：０ｘ２ｅ）），（０ｘ００：０ｘ９１），…，（０ｘ００：０ｘ０ａ），（０ｘ００：０ｘａｂ），（０ｘ００：０ｘ７ｆ），（０ｘ００：０ｘ１９）
【０００６】
ＲＬＣのデータ表示形式は（繰り返されるデータ個数：データ）である。例えば、データ列１で、１６進数データ‘００’は１回繰り返されるので、（００ｘ００：００ｘ００）に変換される。他の例として、データ列３で、１６進数データ‘０ａ’は２５６回繰り返されるので、（０ｘｆｆ：０ｘ０ａ）に変換される。
【０００７】
このようなＲＬＣ方法によると、データ列１に含まれた２５６バイトのデータは２５６＊（１＋１）すなわち、５１２バイトデータに変換され、データ列２に含まれた２５６バイトデータは２５６＊（１＋１）すなわち、５１２バイトのデータに変換され、データ列３に含まれた２５６バイトのデータは１＊（１＋１）すなわち、２バイトのデータに変換され、そしてデータ列３に含まれた２５６バイトのデータは２５６＊（１＋１）すなわち、５１２バイトのデータに変換される。
【０００８】
整理すると、データ列１乃至４に含まれた７６８バイトのデータはＲＬＣ方法により５１２＋５１２＋２＋５１２＝１５３８バイトのデータに変換される。これは、元のデータ列１乃至４のサイズ（２５６＋２５６＋２５６＋２５６＝１０２４バイト）に比べて１．５倍増加したことになる。隣接した一連のデータが互いに異なる値を有する場合が頻繁である時に、むしろ、ＲＬＣ圧縮はデータ容量を増大させる結果を招来する。
【０００９】
このような問題を解決するために、変形（ｍｏｄｉｆｉｅｄ）ＲＬＣが提案された。変形ＲＬＣでは、元のデータを（コマンド：データ［，データ，データ，…，データ］）形式に変換する。コマンドは連続的に同一のデータの個数、または連続的に異なるデータの個数を示し、コマンドとコマンド各々の意味が表１に整理されている。
【表１】
0004064782.tif 000002
【００１０】
表１に示したように、変形ＲＬＣは最大１２８個のデータが連続的に同一である場合と、最大１２８個のデータが連続的に異なる場合まで表現できる。変形ＲＬＣを用いてデータ列１乃至３を圧縮した結果が次のデータ列１−２乃至４−２である。
データ列１−２
（０ｘ８０：０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３，…，０ｘ７ｄ，０ｘ７ｅ，０ｘ７ｆ）
（０ｘ８０：０ｘ８０，０ｘ８１，０ｘ８２，…，０ｘｆｄ，０ｘｆｅ，０ｘｆｆ）
データ列２−２
（０ｘ８０：０ｘ２０，０ｘ２２，０ｘ２８，…，０ｘ２３，０ｘ２１，０ｘ２２）
（０ｘ８０：０ｘ２５，０ｘ２１，０ｘ２７，…，０ｘ２１，０ｘ２５，０ｘ２７）
データ列３−２
（０ｘ７ｆ：０ｘ０ａ）
（０ｘ７ｆ：０ｘ０ａ）
データ列４−２
（０ｘ８０：０ｘ０５，０ｘ１１，０ｘ３ｆ，…，０ｘ５ｃ，０ｘ００，０ｘ３９）
（０ｘ８０：０ｘ１１，０ｘ８１，０ｘ３ｆ，…，０ｘａｂ，０ｘ７ｆ，０ｘ１９）
【００１１】
データ列１で、２５６個のデータが互いに異なるので、変形ＲＬＣによると、データ列１−２は１２８個ずつ２グループに分けられ、データ列２でも２５６個のデータが互いに異なるので、データ列２−２は１２８個ずつ２グループに分けられる。
【００１２】
２５６バイトであるデータ列１を変形ＲＬＣで圧縮した時に、データ列１−２は（１＋１２８）＊２＝２５８バイトになり、２５６バイトであるデータ列２を変形ＲＬＣで圧縮した時に、データ列２−２は（１＋１２８）＊２＝２５８バイトになり、２５６バイトであるデータ列３を変形ＲＬＣで圧縮した時に、データ列３−２は（１＋１）＊２＝４バイトになり、そして２５６バイトであるデータ列４を変形ＲＬＣで圧縮した時に、データ列４−２は（１＋１２８）＊２＝２５８バイトになる。すなわち、全体の１０２４バイトは２５８＋２５８＋４＋２５８＝７７８バイトに圧縮されて０．７５倍の圧縮効果が得られる。しかし、データ列１、２及び４のように連続する一連のデータが頻繁に変更される場合には、依然として圧縮効率が低くなる。
【００１３】
【発明が解決しようとする課題】
一般的に、マルチメディアデータ特に、映像データで連続する一連のデータは漸進的に変化する傾向がある。例えば、人の顔をカメラで撮影し、映像データに変換する時に、映像データの大部分は皮膚の色に対応するデータであるが、光の方向に従って皮膚の色が少しずつ異なるので、映像データも少しずつ異なる値を有する。ＲＬＣだけではなく、変形ＲＬＣも上述したように、明暗を表示するために、隣接したデータが少しずつ異なる値を有する時に、圧縮率は非常に低くなるだけではなく、むしろ圧縮されたデータのサイズの方が大きくなる問題があった。
【００１４】
本発明は上述のような問題点を解決するために提案されたものであって、その目的は、隣接したデータの変化量が小さい時に圧縮効果を高めることができるデータ圧縮方法を提供することにある。
【００１５】
さらに、本発明は、隣接したデータの変化量が小さい時に圧縮効率を高めることができるデータ圧縮方法により圧縮されたデータを元のデータに復元するデータ復元方法を提供することを他の目的とする。
【００１６】
【課題を解決するための手段】
本発明の一特徴によるデータ圧縮器において、データを圧縮する方法は次の通りである。先ず、データ圧縮器は連続したｎ（ｎは正の整数）個のデータを受け取り、前記データのうち隣接した二つのデータ各々の差を計算する。前記差が全部基準値より小さい時に、前記データ圧縮器は前記差に基づいてデルタデータを生成し、前記連続したｎ個のデータに引き続いたｎ個のデータを受け取った後に、前記差の計算段階にリターンする。前記差が全部基準値より小さく、そして前記デルタデータが少なくとも一つ生成された時に、前記データ圧縮器は前記差に基づいて圧縮されたことを示すコマンド、前記デルタデータの個数、及び前記デルタデータを出力する。
【００１７】
この圧縮方法において、前記デルタデータを生成する方法は、前記隣接した二つのデータ各々の前記差を対応するデルタ値に変換し、そのデルタ値を直列に連結して前記デルタデータを生成する。
【００１８】
本発明の他の特徴によるデータ圧縮器のデータ圧縮方法は次の通りである。先ず、前記データ圧縮器は現在のデータを受け取る。次に、前記データ圧縮器は前記現在のデータを以前のデータに置換する。前記データ圧縮器は前記以前のデータに引き続いた新しいデータを受け取る。前記データ圧縮器は前記以前のデータと前記現在のデータの差を計算して貯蔵する。前記データ圧縮器は以前のデータと前記現在のデータとの差が０より大きく、基準値より小さい時に、第１カウンタの値を増加させ、その第１カウンタの値がｋ（ｋは正の整数）より小さい時に、前記置換段階にリターンし、そして前記第１カウンタの値がｋである時に、前記差に基づいてデルタデータを生成する。前記以前のデータと前記現在のデータとの差が０、または基準値より大きく、そして前記デルタデータが少なくとも一つ生成された時に、前記データ圧縮器はコマンド、前記デルタデータの個数、及び前記デルタデータを出力する。
【００１９】
本発明の他の特徴によるデータ復元器のデータ復元動作は次の通りである。先ず、データ復元器はコマンドを受け取る。そのコマンドが前記差に基づいた圧縮を示すコマンドである時に、前記データ復元器は圧縮されたデータの個数、第１データ及び第２データを受け取った後に、前記第１及び第２データから元のｎ個のデータを復元し、カウンタの値を増加させる。前記動作は前記圧縮されたデータの個数と前記カウンタの値が一致する時まで、繰り返し実行される。
【００２０】
本発明のデータ圧縮方法は、連続したｎ（ｎは正の整数）個のデータのうち隣接した二つのデータの差が全部基準値より小さい時に、前記差に基づいてデルタデータを生成する。このような本発明の圧縮方法は従来のＲＬＣ圧縮方法または変形ＲＬＣ圧縮方法に比べて圧縮効率が高い。
【００２１】
【発明の実施の形態】
以下、添付した図を参照して、本発明の望ましい実施形態を詳細に説明する。
【００２２】
図１は本発明の望ましい実施形態によるデータ圧縮／復元システムの構成を示すブロック図である。図１を参照すると、データ圧縮／復元システム２はデータ圧縮器１０、アドレス発生器２０、バッファ３０、及びデータ復元器４０を含む。データ圧縮器１０はデータプロセシングシステム１から提供されるデータＤｉを受け取って本発明のデルタＲＬＣ圧縮プロセス、または一般的な変形ＲＬＣ圧縮プロセスを実行する。データ圧縮器１０が圧縮動作を実行する間生成される中間データはバッファ３０に貯蔵され、圧縮動作が完了すれば、コマンドＣＭＤと圧縮されたデータＲＬＣ−ＤＡＴＡはデータプロセシングシステム１に伝達される。前記データ圧縮器１０は後述する圧縮動作で必要なレジスタ１１〜１５とカウンタ１６〜１９を含む。アドレス発生器２０はデータ圧縮器１０からの制御信号ＣＴＲＬに応答して、データ圧縮器１０から出力されるデータが貯蔵されるバッファ３０の位置を示すインデックスアドレスを発生する。図１に示したデータ圧縮／復元システム２の具体的な圧縮／復元動作を以下詳細に説明する。
【００２３】
本発明の望ましい実施形態において、データ圧縮／復元システム２は連続した４個のデータＤ１，Ｄ２，Ｄ３及びＤ４をデルタＲＬＣ圧縮技法を用いて次の数１のように圧縮する。
【数１】
（Ｄ１，Ｄ２，Ｄ３，Ｄ４）
＝（Ｆｉｒｓｔ  Ｄａｔａ：Ｃｏｎｃａｔｅｎａｔｉｏｎ｛Ｄｅｌｔａ（Ｄ１，Ｄ２），Ｄｅｌｔａ（Ｄ２，Ｄ３），Ｄｅｌｔａ（Ｄ３，Ｄ４）｝）
＝（Ｆｉｒｓｔ  Ｄａｔａ：Ｄｅｌｔａ  Ｄａｔａ）
【００２４】
表２は第２データＤ２と第１データＤ１との差の絶対値または第２データＤ２と第１データＤ１との差に対応するデルタ値を示す。
【表２】
0004064782.tif 000003
さらに、次の表３は第３データＤ３と第２データＤ２との差の絶対値（または第４データＤ４と第３データとの差の絶対値）または第３データＤ３と第２データＤ２との差（または第４データＤ４と第３データとの差）に対応するデルタ値を示している。
【表３】
0004064782.tif 000004
【００２５】
本発明の望ましい実施形態によるデータ圧縮／復元システム２の動作を容易に説明するために、先に羅列されたデータ列１乃至４を圧縮する過程を例として説明する。
【００２６】
データ列１の連続した４個のデータ（０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３）で、隣接した二つのデータの差は全部‘１’である。この時に第１データ‘０ｘ００’と第２データ‘０ｘ０１’のデルタ値ＤｅｌｔａＤ１，Ｄ２は表２より‘００’であり、第２データ‘０ｘ０１’と第３データ‘０ｘ０２’のデルタ値ＤｅｌｔａＤ２，Ｄ３は表３より‘０００’であり、第３データ‘０ｘ０２’と第４データ‘０ｘ０３’のデルタ値ＤｅｌｔａＤ３，Ｄ４は同じく表３より‘０００’である。第１データから第４データの間の隣接した二つのデータのデルタ値‘００’，‘０００’及び‘０００’を直列に連結すれば、２進数‘００００  ００００’になる。これを１６ビットで表現すれば、‘０ｘ００’になる。
【００２７】
整理すると、次の数２の通りである。
【数２】
（０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３）
＝（０ｘ００：Ｃｏｎｃａｔｅｎａｔｉｏｎ０ｂ００，０ｂ００，０ｂ０００）
＝（０ｘ００：０ｘ００）
【００２８】
数２の結果中、先の‘０ｘ００’はデルタＲＬＣ圧縮が実行された第１データＤ１であり、後の‘０ｘ００’はデルタ値‘００’‘０００’及び‘０００’を直列に連結したデルタデータである。
【００２９】
また他の例として、データ列２の連続した４個のデータ（０ｘ２０，０ｘ２２，０ｘ２８，０ｘ２５）をデルタＲＬＣ圧縮すれば、次の数３の通りである。
【数３】
（０ｘ２０，０ｘ２２，０ｘ２８，０ｘ２５）
＝（０ｘ２０：Ｃｏｎｃａｔｅｎａｔｉｏｎ｛０ｂ０１，０ｂ１０１，０ｂ０１０｝）
＝（０ｘ２０：０ｘ６Ａ）
【００３０】
連続した４個のデータＤ１，Ｄ２，Ｄ３及びＤ４を圧縮する時に、第２データＤ２と第１データＤ１の差によるデルタ値を２進数の２ビットで表示しなければならないので、第１データＤ１と第２データＤ２の差の絶対値は４と同一、または４より小さくなければならない。一方、第３データＤ３と第２データＤ２との差によるデルタ値、そして第４データＤ４と第３データＤ３の差によるデルタ値を２進数の３ビットで表示しなければならないので、第３データＤ３と第２データＤ２との差の絶対値、そして第４データと第３データＤ３との差の絶対値は各々８と同一、または８より小さくなければならない。以後、これに対して説明する。
【００３１】
続いて、添付した図２乃至図５を参照して図１に示したデータ圧縮／復元システム２の具体的な動作を説明する。
【００３２】
図２乃至図５は図１に示したデータ圧縮／復元システム２で本発明の望ましい実施形態によるデルタＲＬＣ方式が実行される制御手順を示すフローチャートである。
【００３３】
先ず、図２を参照すると、段階Ｓ１００で、データ圧縮器１０はデータプロセシングシステム１からデータＤｉを受け取り、これをレジスタ１１に貯蔵する。レジスタ１１に貯蔵されたデータＤｉは後述するデルタＲＬＣ動作で圧縮が始まる第１データである。
【００３４】
次の段階Ｓ１０１で、データ圧縮器１０はレジスタ１１に貯蔵されたデータＤｉを以前のデータＤｉ−１と見なし、データプロセシングシステム１から次のデータを受け取ってレジスタ１２に貯蔵する。レジスタ１２に貯蔵されたデータは現在のデータになる。段階Ｓ１０２で、データ圧縮器１０はレジスタ１１に貯蔵された以前のデータＤｉ−１とレジスタ１２に貯蔵された現在のデータＤｉとの差を計算する。
【００３５】
段階Ｓ１０３で、データ圧縮器１０は以前のデータＤｉ−１と現在のデータＤ１が一致するか否かを判別する。判別の結果、以前のデータＤｉ−１と現在のデータＤが一致すれば、その制御は段階Ｓ１０４に進行し、一致データ圧縮プロセスを実行し、以前のデータＤｉ−１と現在のデータＤｉが一致しなければ、その制御は段階Ｓ１０５に進行する。
【００３６】
段階Ｓ１０５は以前及び現在のデータＤｉ−１，Ｄｉの差の絶対値が基準値ＲＥＦ１またはＲＥＦ２と同一、またはそれより小さいか否かを判別し、本発明のデルタＲＬＣで圧縮可能であるか否かを判別する。以前及び現在のデータＤｉ−１，Ｄｉの差が基準値ＲＥＦ１またはＲＥＦ２と同一、またはそれより小さい場合に、データ圧縮器１０は以前及び現在のデータＤｉ−１，Ｄｉを本発明のデルタＲＬＣで圧縮が可能なことと判別し、その制御は段階Ｓ１０６に進行する。以前及び現在のデータＤｉ−１，Ｄｉの差が基準値ＲＥＦ１またはＲＥＦ２より大きければ、データ圧縮器１０は以前及び現在のデータＤｉ−１，Ｄｉを本発明のデルタＲＬＣで圧縮が不可能なことと判別し、その制御は段階Ｓ１０７に進行する。段階Ｓ１０７で、データ圧縮器１０は不一致データ圧縮プロセスを実行する。
【００３７】
連続した４個のデータＤ１，Ｄ２，Ｄ３及びＤ４を圧縮する時に、第２データＤ２と第１データＤ１Ｔの差によるデルタ値を２進数の２ビットで表示しなければならないので、第２データＤ２と第１データＤ１との差の絶対値は４と同一、または４より小さくなければならない。だから、段階Ｓ１０５で、基準値は４（＝ＲＥＦ１）でなければならない。一方、第３データＤ３と第２データＤ２との差によるデルタ値、そして第４データＤ４と第３データＤ３との差によるデルタ値を２進数の３ビットで表示しなければならないので、第３データＤ３と第２データＤ２との差の絶対値、及び第４データＤ４と第３データＤ３との差の絶対値は８と同一、または８より小さくなければならない。だから、段階Ｓ１０５で、基準値は８（＝ＲＥＦ２）でなければならない。
【００３８】
以下、段階Ｓ１０４の一致データ圧縮プロセス、段階Ｓ１０６のデルタＲＬＣ圧縮プロセス、及び段階Ｓ１０７の不一致データ圧縮プロセスに対する詳細な説明を続ける。
【００３９】
再び、図１を参照すると、ＥＱＣＮＴカウンタ１６はデータプロセシングシステム１からの現在のデータＤｉと以前に入力された複数のデータが連続的に一致する個数をカウントする。ＮＥＱＣＮＴカウンタ１７はデータプロセシングシステム１から入力されたデータＤｉと以前に入力されたデータが不一致する時にカウントする。ＲＬＣＣＮＴカウンタ１８はデルタＲＬＣ圧縮プロセスＳ１０６が実行される個数をカウントし、カウント値が４になると、クリアになる。そして、ＧＣＮＴカウンタ１９はＲＬＣＣＮＴカウンタ１８が４になる時に、カウントアップする。このようなカウンタ１６〜１９の基本動作を参照してデルタＲＬＣ圧縮プロセス、一致データ圧縮プロセス、及び不一致データ圧縮プロセスを各々説明する。
【００４０】
先ず、図３は図１に示したデータ圧縮／復元システム２で、デルタＲＬＣ圧縮プロセスＳ１０６を実行する手順を示すフローチャートである。デルタＲＬＣ圧縮プロセスＳ１０６に対する理解のために、先に例を挙げたデータ列１“０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３，０ｘ０４，…，０ｘｆｃ，０ｘｆｄ，０ｘｆｅ，０ｘｆｆ”がデータ圧縮／復元システム２に入力される場合を説明する。段階Ｓ１０３及びＳ１０５で、以前のデータＤｉ−１＝Ｄ１＝０ｘ００と現在のデータＤｉ＝Ｄ２＝０ｘ０１は一致せず、現在のデータＤｉ＝Ｄ２＝０ｘ０１と以前のデータＤｉ−１＝Ｄ１＝０ｘ００との差の絶対値は基準値ＲＥＦ１＝４＝０ｂ１００より小さいのでデルタＲＬＣ圧縮プロセスＳ１０６が実行される。
【００４１】
図３を参照すると、段階Ｓ１１１で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値が１と同一、または１より大きいかを判別する。ＥＱＣＮＴカウンタ１６の値が１と同一、または１より大きければ、制御は段階Ｓ１１２に進行する。段階Ｓ１１２で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値に対応するコマンドを出力し、以前のデータＤｉ−１を一致データとして出力する。ＥＱＣＮＴカウンタ１６の値が１より小さければ、その制御は段階Ｓ１１３に進行する。段階Ｓ１１２の詳細な動作は以後、説明する。
【００４２】
段階Ｓ１１３で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値が１と同一、または１より大きいかを判別する。ＮＥＱＣＮＴカウンタ１７の値が‘１’と同一、または１より大きければ、その制御は段階Ｓ１１４に進行する。段階Ｓ１１４で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値に対応するコマンドを出力する。段階Ｓ１１５でデータ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値に対応する個数の不一致データを出力する。段階Ｓ１１４及びＳ１１５の詳細な動作は以後、説明する。
【００４３】
段階Ｓ１１６で、データ圧縮器１０は以前のデータＤｉ−１＝Ｄ１＝０ｘ００と現在のデータＤｉ＝Ｄ２＝０ｘ０１との差０ｂ０１によるデルタ値０ｂ００をレジスタ１５に貯蔵する。段階Ｓ１１７で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値を１ほど増加させる。
【００４４】
段階Ｓ１１８で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値が３であるか否かを判別する。判別の結果、ＲＬＣＣＮＴカウンタ１８の値が３であれば、その制御は段階Ｓ１１９に進行し、ＲＬＣＣＮＴカウンタ１８の値が３でなければ、その制御は図２に示した段階Ｓ１０１に進行して新しいデータＤｉを受け取る。ＲＬＣＣＮＴカウンタ１８の値は１であるので、その制御は段階Ｓ１０１に進行する。
【００４５】
再び、図２を参照すると、段階Ｓ１０１で、データ圧縮器１０はレジスタ１２に貯蔵されたデータＤ２を以前のデータＤｉ−１と見なし、データプロセシングシステム１から新しいデータＤｉ＝Ｄ３を受け取ってレジスタ１３に貯蔵する。レジスタ１２に貯蔵された以前のデータＤｉ−１＝Ｄ２＝０ｘ０１とレジスタ１３に貯蔵された現在のデータＤｉ＝Ｄ３＝０ｘ０２との差０ｂ００１は基準値ＲＥＦ２＝８＝０ｂ１０００より小さいので、再びデルタＲＬＣ圧縮プロセスＳ１０６が実行される。
【００４６】
図３を参照すると、ＥＱＣＮＴカウンタ１６とＮＥＱＣＮＴカウンタ１７の値は依然として全部０であるので、その制御は段階Ｓ１１６に進行する。段階Ｓ１１６で、以前のデータＤ２＝０ｘ０１と現在のデータＤ３＝０ｘ０２との差０ｂ００１によるデルタ値０ｂ０００はレジスタ１５に貯蔵される。段階Ｓ１１７で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値を１ほど増加させる。したがって、ＲＬＣＣＮＴカウンタ１８の値は２になる。ＲＬＣＣＮＴカウンタ１８の値が３ではないので、その制御は図２の段階Ｓ１０１に進行する。
【００４７】
再び図２を参照すると、段階Ｓ１０１で、データ圧縮器１０はレジスタ１３に貯蔵されたデータＤ３を以前のデータＤｉ−１と見なし、データプロセシングシステム１から新しいデータＤｉ＝Ｄ４を受け取ってレジスタ１４に貯蔵する。レジスタ１３に貯蔵された以前のデータＤｉ−１＝Ｄ３＝０ｘ０２とレジスタ１４に貯蔵された現在のデータＤｉ＝Ｄ４＝０ｘ０３との差０ｂ００１は基準値ＲＥＦ２＝０ｂ１０００より小さいので、デルタＲＬＣ圧縮プロセスＳ１０６が実行される。
【００４８】
図３を参照すると、ＥＱＣＮＴカウンタ１６とＮＥＱＣＮＴカウンタ１７の値は依然として全部０であるので、その制御は段階Ｓ１１６に進行する。段階Ｓ１１６で、以前のデータＤ３＝０ｘ０２と現在のデータＤ４＝０ｘ０３との差０ｂ００１によるデルタ値０ｂ０００はレジスタ１５に貯蔵される。段階Ｓ１１７で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値を１ほど増加させる。ＲＬＣＣＮＴカウンタ１８の値は３になる。
【００４９】
段階Ｓ１１８で、ＲＬＣＣＮＴカウンタ１８の値が３であると判別されることによって、その制御は段階Ｓ１１９に進行する。段階Ｓ１１９で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値を０にクリアさせる。段階Ｓ１２０で、データ圧縮器１０はＧＣＮＴカウンタ１９の値を１ほど増加させる。
【００５０】
段階Ｓ１２１で、データ圧縮器１０はレジスタ１１に貯蔵された第１データＤ１＝０ｘ００をバッファ３０に貯蔵し、レジスタ１５に貯蔵されたデルタ値０ｂ００，０ｂ０００，０ｂ０００を直列に連結してデルタデータＤ＿ＤＡＴＡ＝０ｂ００００００００＝０ｘ００を生成し、これをバッファ３０に貯蔵する。データ圧縮器１０はバッファ３０に貯蔵されるデータを出力する度に制御信号ＣＴＲＬを出力し、アドレス発生器２０はデータ圧縮器１０からの制御信号ＣＴＲＬに応答してバッファ３０の所定の位置を示すインデックスアドレスＩＮＤＥＸを出力する。例えば、インデックスアドレスＩＮＤＥＸは順次に増加する。したがって、バッファ３０には圧縮スタートデータＤ１＝０ｘ００とデルタデータＤ＿ＤＡＴＡ＝０ｘ００が貯蔵される。
【００５１】
段階Ｓ１２２で、データ圧縮器１０は現在受信されたデータＤｉが最後のデータであるか否かを判別する。判別の結果、現在受信されたデータＤｉが最後のデータであれば、その制御は段階Ｓ１２３に進行し、現在受信されたデータＤｉが最後のデータでなければ、その制御は図２に示した段階Ｓ１００にリターンする。
【００５２】
段階Ｓ１２３で、データ圧縮器１０はデルタＲＬＣ圧縮を示すコマンドＣＭＤ＝７ｆとＧＣＮＴカウンタ１９の値、そしてバッファ３０に貯蔵されたデルタデータＤ＿ＤＡＴＡを読み出してデータプロセシングシステム１に伝送する。
【００５３】
上述のような方法によりデータ列を圧縮すれば、バッファ３０には圧縮スタートデータとデルタデータ対が全部で６４個貯蔵される。すなわち、ＧＣＮＴカウンタ１９のカウント値は６４である。データ圧縮器１０は最後のデータ０ｘｆｆまで圧縮を実行した後に、バッファ３０に貯蔵された圧縮スタートデータとデルタデータ対を読み出してデータプロセシングシステム１に伝送する。この時に、データ圧縮器１０はデルタＲＬＣ圧縮されることを示すコマンドＣＭＤ＝７ｆを先にデータプロセシングシステム１に伝送し、その後、圧縮スタートデータとデルタデータ対を圧縮されたデータＲＬＣ＿ＤＡＴＡとしてデータプロセシングシステム１に伝送する。データ列１に対するデルタＲＬＣ圧縮結果は、次の数４の通りである。
【数４】
0004064782.tif 000005
【００５４】
上述のような方法によりデータ圧縮／復元システム２がデータ列２を圧縮する時に、その結果は次の通りである。
（０ｘ７ｆ：０ｘ４０：０ｘ２０，０ｘ６Ａ，…，０ｘ２３，０ｘ５９）
【００５５】
次の表４は本発明の望ましい実施形態によるデータ圧縮／復元システム２から出力されるコマンドＣＭＤｓとコマンド各々の意味を整理して示している。
【表４】
0004064782.tif 000006
【００５６】
続いて、図２に示した段階Ｓ１０３で、以前のデータＤｉ−１と現在のデータＤｉが一致する時に遂行される一致データ圧縮プロセス（段階Ｓ１０４）は次の通りである。図４は隣接した二つのデータＤｉ−１，Ｄｉが一致する時に遂行される一致データ圧縮プロセスを示すフローチャートである。
【００５７】
段階Ｓ１３１で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値が１と同一、または１より大きいかを判別する。ＮＥＱＣＮＴカウンタ１７の値が１と同一、または１より大きければ、その制御は段階Ｓ１３２に進行する。段階Ｓ１３２で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値に対応するコマンドを出力し、バッファ３０に貯蔵されたＮＥＱＣＮＴカウンタ１７の値に対応する個数の不一致データを出力する。段階Ｓ１３２の具体的な動作は以後説明する。
【００５８】
段階Ｓ１３３で、データ圧縮器１０はＧＣＮＴカウンタ１９の値が１と同一、または１より大きいか否かを判別する。ＧＣＮＴカウンタ１９の値が１と同一、または１より大きければ、その制御は段階Ｓ１３４に進行し、ＧＣＮＴカウンタ１９の値が１より小さければ、その制御は段階Ｓ１３５に進行する。
【００５９】
ＧＣＮＴカウンタ１９は先に説明したように、連続した４個のデータが本発明のデルタＲＬＣ圧縮プロセスにより圧縮された時に１ずつ増加するカウンタである。例えば、データ０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３，０ｘ０３，…がデータ圧縮器１０に順次に入力される時に、４個のデータ０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３はデルタＲＬＣ圧縮プロセスＳ１０６により圧縮され、圧縮された結果０ｘ００：０ｘ００はバッファ３０に貯蔵され、この時に、ＧＣＮＴカウンタ１９の値は１になる。続いて、以前のデータＤｉ−１が０ｘ０３であり、現在のデータＤｉが０ｘ０３である時に、一致データ圧縮プロセスＳ１０４が遂行される。この時に、段階Ｓ１３３で、ＧＣＮＴカウンタ１９の値が１であるので、その制御は段階Ｓ１３４に進行する。段階Ｓ１３４で、データ圧縮器１０はデルタＲＬＣ圧縮コマンド７ｆ、ＧＣＮＴカウンタ１９の値（すなわち、１）、及びデルタデータ０ｘ００：０ｘ００をデータプロセシングシステム１に伝送し、その制御は段階Ｓ１３５に進行する。
【００６０】
段階Ｓ１３５で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値が１と同一、または１より大きいか否かを判別する。ＲＬＣＣＮＴカウンタ１８の値が１と同一、または１より大きければ、その制御は段階Ｓ１３６に進行し、ＲＬＣＣＮＴカウンタ１８の値が１より小さければ、その制御は段階Ｓ１４０に進行する。
【００６１】
ＲＬＣＣＮＴカウンタ１８は先に説明したように、以前のデータＤｉ−１と現在のデータＤｉとの差が基準値より小さくて、デルタＲＬＣ圧縮プロセスＳ１０４が遂行される時に、１ずつ増加するカウンタである。だから、ＲＬＣＣＮＴカウンタ１８の値が１と同一、または１より大きいということは、現在受信されたデータＤｉの以前に受信されたデータＤｉ−１がデルタＲＬＣ圧縮プロセスＳ１０４により圧縮動作が実行されたことを示す。例えば、連続した４個のデータ０ｘ００，０ｘ０２，０ｘ０２，０ｘ０２が順次に入力される時に、第１データ０ｘ００と第２データ０ｘ０２は一致せず、第２データ０ｘ０２と第１データ０ｘ００との差０ｂ１０は基準値０ｂ１００より小さいので、デルタＲＬＣ圧縮プロセスが実行され、ＲＬＣＣＮＴカウンタ１８の値は‘１’になる。しかし、第３データ０ｘ２０と第２データ０ｘ０２は同一であるので、図４に示した一致データ圧縮プロセスＳ１０４が実行される。この時に、ＲＬＣＣＮＴカウンタ１８の値は‘１’であるので、その制御は段階Ｓ１３６に進行する。
【００６２】
段階Ｓ１３６で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値をＮＥＱＣＮＴカウンタ１７に置換する。段階Ｓ１３７で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値に対応するコマンドを伝送する。先の例で、ＲＬＣＣＮＴカウンタ１８の値は１であるので、コマンドは００になる。
【００６３】
段階Ｓ１３８で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値が１であるか否かを判別する。判別の結果、ＮＥＱＣＮＴカウンタ１７の値が１であれば、その制御は段階Ｓ１３９に進行し、レジスタ１１に貯蔵されたデータＤ１をデータプロセシングシステム１に伝送する。判別の結果、ＮＥＱＣＮＴカウンタ１７の値が１でなければ、その制御は段階Ｓ１４０に進行する。先の例で、ＮＥＱＣＮＴカウンタ１７の値は１であるので、レジスタ１１に貯蔵されたデータ０ｘ００がデータプロセシングシステム１に伝送される。
【００６４】
段階Ｓ１４０で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値が２であるか否かを判別する。判別の結果、ＮＥＱＣＮＴカウンタ１７の値が２であれば、その制御は段階Ｓ１４１に進行し、レジスタ１１及び１２に貯蔵されたデータＤ１及びＤ２をデータプロセシングシステム１に伝送する。判別の結果、ＮＥＱＣＮＴカウンタ１７の値が２でなければ、その制御は段階Ｓ１４２に進行する。
【００６５】
段階Ｓ１４２で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値を１ほど増加させる。
【００６６】
段階Ｓ１４３で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値が１２７、またはデータプロセシングシステム１から伝送された現在のデータＤｉが最後のデータであれば、段階Ｓ１４４に進行し、ＥＱＣＮＴカウンタ１６の値が１２７ではなく、そして現在のデータＤｉが最後のデータでなければ、その制御は図２に示した段階Ｓ１０１に進行する。
【００６７】
段階Ｓ１４４で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値に対応するコマンド及び現在のデータＤｉを一致データとして出力する。段階Ｓ１４５で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値をクリアする。
【００６８】
段階Ｓ１４６で、データ圧縮器１０は現在のデータＤｉが最後のデータであるか否かを判別する。判別の結果、現在のデータＤｉが最後のデータであれば、制御を終了し、現在のデータＤｉが最後のデータでなければ、図２に示した段階Ｓ１０１に進行する。
【００６９】
例えば、前記データ列３のように、同一のデータ０ｘ０ａが２５６個繰り返してデータ圧縮器１０に入力される時に、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値が１２７である時に（０ｘ７ｅ：０ｘ０ａ）を出力し、ＥＱＣＮＴカウンタ１６の値が再び１２７である時に（０ｘ７ｅ：０ｘ０ａ）を出力し、残りの二つのデータに対する圧縮データ（０ｘ０１：０ｘ０ａ）を出力する。つまり、下記の通りである。
０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ…，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ，０ｘ０ａ
＝（０ｘ７ｅ：０ｘ０ａ），（０ｘ７ｅ：０ｘ０ａ），（０ｘ０１：０ｘ０ａ）
【００７０】
続いて、図２に示した段階Ｓ１０５で、以前のデータＤｉ−１と現在のデータＤｉとの差が基準値ＲＥＦ１またはＲＥＦ２より大きい時に実行される不一致データ圧縮プロセス（段階Ｓ１０７）は、次の通りである。図５は隣接した二つのデータＤｉ−１，Ｄｉの差が基準値ＲＥＦより大きい時に実行される不一致データ圧縮プロセスを示すフローチャートである。
【００７１】
段階Ｓ１５１で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値が１と同一、または１より大きいか否かを判別する。ＥＱＣＮＴカウンタ１６の値が１と同一、または１より大きければ、その制御は段階Ｓ１５２に進行する。段階Ｓ１５２で、データ圧縮器１０はＥＱＣＮＴカウンタ１６の値に対応するコマンドを出力し、以前のデータＤｉ−１を一致データとして出力する。
【００７２】
段階Ｓ１５３で、データ圧縮器１０はＧＣＮＴカウンタ１９の値が１と同一、または１より大きいか否かを判別する。ＧＣＮＴカウンタ１９の値が１と同一、または１より大きければ、その制御は段階Ｓ１５４に進行し、ＧＣＮＴカウンタ１９の値が１より小さければ、その制御は段階Ｓ１５５に進行する。
【００７３】
ＧＣＮＴカウンタ１９は先に説明したように、連続した４個のデータが本発明のデルタＲＬＣ圧縮プロセスにより圧縮された時に、１ずつ増加するカウンタである。例えば、データ０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３，０ｘ５ｄ，…，がデータ圧縮器１０に順次に入力される時に、４個のデータ０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３はデルタＲＬＣ圧縮プロセスＳ１０６により圧縮され、圧縮された結果０ｘ００：０ｘ００はバッファ３０に貯蔵され、この時に、ＧＣＮＴカウンタ１９の値は１になる。以前のデータＤｉ−１が０ｘ０３である時に、現在のデータＤ１が０ｘ５ｄであれば、不一致データ圧縮プロセスＳ１０７が実行される。ここで、ＧＣＮＴカウンタ１９の値が１であるので、その制御は段階Ｓ１５４に進行する。段階Ｓ１５４で、データ圧縮器１０はデルタＲＬＣ圧縮コマンド７ｆ、ＧＣＮＴカウンタ１９の値（すなわち、１）、及びデルタデータ０ｘ００：０ｘ００をデータプロセシングシステム１に伝送し、その制御は段階Ｓ１５５に進行する。
【００７４】
段階Ｓ１５５で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値が１と同一、または１より大きいか否かを判別する。ＲＬＣＣＮＴカウンタ１８の値が１と同一、または１より大きければ、その制御は段階Ｓ１５６に進行し、ＲＬＣＣＮＴカウンタ１８の値が１より小さければ、その制御は段階Ｓ１６１に進行する。
【００７５】
ＲＬＣＣＮＴカウンタ１８は、先に説明したように、以前のデータＤｉ−１と現在のデータＤｉとの差が基準値より小さくて、デルタＲＬＣ圧縮プロセスＳ１０４が実行される時に１ずつ増加するカウンタである。だから、ＲＬＣＣＮＴカウンタ１８の値が１と同一、または１より大きいということは、現在受信されたデータＤｉの以前に受信されたデータＤｉ−１がデルタＲＬＣ圧縮プロセスＳ１０４により圧縮動作が実行されたことを示す。例えば、連続した４個のデータ０ｘ００，０ｘ０２，０ｘ３ｃ，０ｘ６９が順次に入力される時に、第１データ０ｘ００と第２データ０ｘ０２は一致せず、第２データ０ｘ０２と第１データ０ｘ００との差０ｂ１０は基準値０ｂ１００より小さいので、デルタＲＬＣ圧縮プロセスが実行され、ＲＬＣＣＮＴカウンタ１８の値は‘１’になる。しかし、第３データ０ｘ３ｃと第２データ０ｘ０２との差０ｂ１１１０１０は基準値０ｂ１０００より大きいので、図５に示した不一致データ圧縮プロセスＳ１０７が実行される。段階Ｓ１５５の判別の結果、ＲＬＣＣＮＴカウンタ１８の値は‘１’であるので、その制御は段階Ｓ１５６に進行する。
【００７６】
段階Ｓ１５６で、データ圧縮器１０はＲＬＣＣＮＴカウンタ１８の値をＮＥＱＣＮＴカウンタ１７に置換する。段階Ｓ１５７で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値が１であるか否かを判別する。判別の結果、ＮＥＱＣＮＴカウンタ１７の値が１であれば、その制御は段階Ｓ１５８に進行し、レジスタ１１，１２に貯蔵されたデータＤ１，Ｄ２をバッファ３０に貯蔵する。先の例で、ＮＥＱＣＮＴカウンタ１７の値は１であるので、レジスタ１１，１２に貯蔵されたデータ０ｘ００，０ｘ０２をバッファ３０に貯蔵する。段階Ｓ１５７の判別の結果、ＮＥＱＣＮＴカウンタ１７の値が１でなければ、その制御は段階Ｓ１５９に進行する。
【００７７】
段階Ｓ１５９で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値が２であるか否かを判別する。判別の結果、ＮＥＱＣＮＴカウンタ１７の値が２であれば、その制御は段階Ｓ１６０に進行してレジスタ１１，１２及び１３に貯蔵されたデータＤ１，Ｄ２及びＤ３をデータプロセシングシステム１に伝送する。判別の結果、ＮＥＱＣＮＴカウンタ１７の値が２でなければ、その制御は段階Ｓ１６１に進行する。
【００７８】
段階Ｓ１６１で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値を１ほど増加させる。段階Ｓ１６２で、データ圧縮器１０は現在のデータＤｉをバッファ３０に貯蔵する。
【００７９】
段階Ｓ１６３で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値が１２８、またはデータプロセシングシステム１から伝送された現在のデータＤｉが最後のデータであれば、段階Ｓ１６４に進行し、ＮＥＱＣＮＴカウンタ１７の値が１２８ではなく、そして現在のデータＤｉが最後のデータでなければ、その制御は図２に示した段階Ｓ１０１に進行する。
【００８０】
段階Ｓ１６４で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値に対応するコマンド及び現在のデータＤｉを不一致データとして出力する。段階Ｓ１６４で、データ圧縮器１０はＮＥＱＣＮＴカウンタ１７の値をクリアする。
【００８１】
段階Ｓ１６６で、データ圧縮器１０は現在のデータＤｉが最後のデータであるか否かを判別する。判別の結果、現在のデータＤｉが最後のデータであれば、制御を終了し、現在のデータＤｉが最後のデータでなければ、図２に示した段階Ｓ１０１に進行する。
【００８２】
上述のような方法によると、例えば、前記データ列４のような２５６個のデータで、隣接した二つのデータの差が基準値より大きい時に、次のような圧縮データＲＬＣ＿ＤＡＴＡをデータプロセシングシステム１に伝送する。
０ｘ０５，０ｘ１１，０ｘ３ｆ，０ｘ２ｅ，０ｘ９１，…，０ｘ０ａ，０ｘａｂ，０ｘ７ｆ，０ｘ１９
＝（０ｘ８０：０ｘ０５，０ｘ１１，０ｘ３ｆ，…），（０ｘ８０：…，０ｘａｂ，０ｘ７ｆ，０ｘ１９）
【００８３】
前記一致データ圧縮プロセスＳ１０４及び不一致データ圧縮プロセスＳ１０７は従来の変形ＲＬＣ圧縮プロセスと同一である。但し、従来の変形ＲＬＣ圧縮プロセスでは、最大１２８個の同一のデータを一つの圧縮データに変換できるが、本発明では、デルタＲＬＣ圧縮コマンドを提供するために、最大１２７個の同一のデータを一つの圧縮データに変換できる点が異なる。
【００８４】
続いて、図１及び図６乃至図９を参照して、本発明のデータ圧縮／復元システム２のデータ復元動作を説明する。
【００８５】
図６乃至図９は図１に示したデータ圧縮／復元システム２のデータ復元動作を示すフローチャートである。
【００８６】
先ず、図６を参照すると、段階Ｓ２００で、データ復元器４０はデータプロセシングシステム１からのコマンドＣＭＤを受け取る。データ復元器４０はデータプロセシングシステム１から受信されたコマンドＣＭＤがデルタＲＬＣ圧縮コマンド（すなわち、０ｘ７ｆ）であるか否かを段階Ｓ２０１で判別する。判別の結果、データプロセシングシステム１から受信されたコマンドＣＭＤがデルタＲＬＣ圧縮コマンド（すなわち、０ｘ７ｆ）であれば、その制御は段階Ｓ２０２に進行し、デルタＲＬＣ復元プロセスを実行する。データプロセシングシステム１から受信されたコマンドＣＭＤがデルタＲＬＣ圧縮コマンド（すなわち、０ｘ７ｆ）でなければ、その制御は段階Ｓ２０３に進行する。
【００８７】
段階Ｓ２０３で、データ復元器４０はデータプロセシングシステム１から受信されたコマンドＣＭＤが一致データ圧縮コマンド（すなわち、０ｘ０１，０ｘ０２，０ｘ０３，…，０ｘ７ｄまたは０ｘ７ｅ）であるか否かを判別する。判別の結果、データプロセシングシステム１から受信されたコマンドＣＭＤが一致データ圧縮コマンドであれば、その制御は段階Ｓ２０４に進行し、一致データ復元プロセスを実行する。データプロセシングシステム１から受信されたコマンドＣＭＤが一致データ圧縮コマンドでなければ、その制御は段階Ｓ２０５に進行する。
【００８８】
段階Ｓ２０５で、データ復元器４０は受信されたコマンドＣＭＤが不一致データ圧縮コマンド（すなわち、０ｘ００，０ｘ８０，０ｘ８１，…０ｘＦｅまたは０ｘＦｆ）であるか否かを判別する。判別の結果、データプロセシングシステム１から受信されたコマンドＣＭＤが不一致データ圧縮コマンドであれば、その制御は段階Ｓ２０６に進行し、不一致データ復元プロセスを実行する。データプロセシングシステム１から受信されたコマンドＣＭＤが不一致データ圧縮コマンドでなければ、その制御は終了される。
【００８９】
図７は図６に示したデルタＲＬＣ復元プロセスを具体的に示すフローチャートである。
【００９０】
段階Ｓ２１１で、データ復元器４０はデータラインＲＬＣ＿ＤＡＴＡを通じてデータプロセシングシステム１からＧＣＮＴ値を受け取る。段階Ｓ２１２で、データ復元器４０はデータラインＲＬＣ＿ＤＡＴＡを通じてデータプロセシングシステム１から第１データとデルタデータを受け取る。段階Ｓ２１３で、データ復元器４０は受信された第１データとデルタデータに基づいて４個の元のデータ（ｏｒｉｇｉｎａｌ  ｄａｔａ）を復元し、復元されたデータＤｉ（ｉ＝１，２，３及び４）をデータプロセシングシステム１に伝送する。段階Ｓ２１５で、データ復元器４０の内部で備えられたカウンタ４１の値を１ほど増加させる。
【００９１】
段階Ｓ２１５で、データ復元器４０はデータプロセシングシステム１から受信されたＧＣＮＴ値とカウンタ４１のカウンタ値が一致するか否かを判別する。判別の結果、データプロセシングシステム１から受信されたＧＣＮＴ値とカウンタ４１のカウンタ値が一致すれば、その制御は段階Ｓ２１６に進行し、一致しなければ、その制御は段階Ｓ２１２に進行し、上述した動作を繰り返し実行する。
【００９２】
例えば、データプロセシングシステム１からデータ列１のデルタＲＬＣ圧縮されたデータ（０ｘ７ｆ：０ｘ４０：０ｘ００，０ｘ００，０ｘ００，０ｘ００，…，０ｘ００，０ｘ００）がデータ復元器４０に入力される時に、データ復元器４０はカウンタ４１の値が０ｘ４０になるまで、上述の動作を繰り返し実行する。前記段階Ｓ２１３で、データ復元動作は先に説明したデータ圧縮動作から容易に類推することができる。
【００９３】
例えば、圧縮スタートデータが０ｘ００であり、デルタデータが０ｘ００である時に、先ず、デルタデータからデルタ値（Ｄｅｌｔａ（Ｄ１，Ｄ２）＝０ｂ００，Ｄｅｌｔａ（Ｄ２，Ｄ３）＝０ｂ０００，Ｄｅｌｔａ（Ｄ３，Ｄ４）＝０ｂ０００）を求める。次に、圧縮スタートデータとデルタ値から元のデータを復元する。圧縮スタートデータが０ｘ００であるので、４個の元のデータＤｉ（ｉ＝１，２，３及び４）は０ｘ００，０ｘ０１，０ｘ０２及び０ｘ０３である。復元された元のデータＤｉ（ｉ＝１，２，３及び４）はデータプロセシングシステム１に伝送される。
【００９４】
段階Ｓ２１６で、データ復元器４０はデータプロセシングシステム１から受信されたデータが最後のデータであるか否かを判別する。判別の結果、データプロセシングシステム１から受信されたデータが最後のデータでなければ、その制御は図６に示した段階Ｓ２００にリターンし、最後のデータであれば、その制御は終了される。
【００９５】
図８は図６に示した一致データ復元プロセスの具体的な手順を示すフローチャートである。
【００９６】
段階Ｓ２２１で、データ復元器４０はデータプロセシングシステム１から一致データを受信する。段階Ｓ２２２で、データ復元器４０はデータプロセシングシステム１から受信された一致データを復元データＤｉとしてデータプロセシングシステム１に伝送する。段階Ｓ２２３で、データ復元器４０は内部カウンタ４１の値を１ほど増加させる。段階Ｓ２２４で、データ復元器４０は、カウンタ４１の値が、受信されたコマンドが示す一致データの個数と一致するか否かを判別する。判別の結果、カウンタ４１の値が、受信されたコマンドが示す一致データの個数と一致すれば、その制御は段階Ｓ２２５に進行し、一致しなければ、その制御は段階Ｓ２２２にリターンする。
【００９７】
先に説明したように、Ｎ個の同一のデータは（Ｎ個のデータ一致に対応するコマンド：一致データ）形式で圧縮されるので、元のデータに復元するためには、一致データをＮ回データプロセシングシステム１に伝送すべきである。例えば、前記データ列３を圧縮すれば、（０ｘ７ｅ：０ｘ０ａ），（０ｘ７ｅ：０ｘ０ａ），（０ｘ０１：０ｘ０ａ）である。コマンド０ｘ７ｅは連続した１２７個のデータが同一であることを示すので、一致データ０ｘ０ａは１２７回データプロセシングシステム１に伝送すべきである。だから、カウンタ４１の値が１２７になるまで、段階Ｓ２２２から段階Ｓ２２４まで繰り返し実行される。
【００９８】
段階Ｓ２２５は現在の入力されたデータが最後のデータであるか否かを判別する。判別の結果、現在の入力されたデータが最後のデータでなければ、その制御は図６に示した段階Ｓ２００にリターンし、最後のデータであれば、その制御は終了される。
【００９９】
図９は図６に示した不一致データ復元プロセスの具体的な手順を示すフローチャートである。
【０１００】
段階Ｓ２３１で、データ復元器４０はデータプロセシングシステム１から不一致データを受信する。段階Ｓ２３２で、データ復元器４０はデータプロセシングシステム１から受信された不一致データを復元データＤｉとして出力する。段階Ｓ２３３で、データ復元器４０はカウンタ４１の値を１ほど増加させる。段階Ｓ２３４で、データ復元器４０は、カウンタ４１の値が、受信されたコマンドが示す不一致データの個数と一致するか否かを判別する。判別の結果、カウンタ４１の値が、受信されたコマンドが示す不一致データの個数と一致すれば、その制御は段階Ｓ２３５に進行し、一致しなければ、その制御は段階Ｓ２３１にリターンする。
【０１０１】
上述のように、Ｎ個の連続した互いに異なるデータは（Ｎ個のデータ不一致に対応するコマンド：不一致データ１，不一致データ２，…，不一致データＮ）形式で圧縮されるので、元のデータに復元するためには、データプロセシングシステム１から受信されたデータを復元されたデータＤｉとしてデータプロセシングシステム１に提供すべきである。例えば、前記データ列４を圧縮すれば、（０ｘ８０：０ｘ０５，０ｘ１１，０ｘ３ｆ，…），（０ｘ８０：…，０ｘａｂ，０ｘ７ｆ，０ｘ１９）である。コマンド０ｘ８０は連続した１２８個のデータが異なることを示すので、データプロセシングシステム１から順次に入力されるデータ０ｘ０５，０ｘ１１，０ｘ３ｆ，…はそのままに復元されたデータＤｉとして出力される。
【０１０２】
結論的に、本発明のデータ圧縮／復元システム２によると、連続した一連のデータが一致、または連続する一連のデータの差が大きくて、本発明のデルタＲＬＣ圧縮プロセスでは圧縮が不可能である場合に、従来の変形ＲＬＣとほとんど同一の圧縮効率を得る。しかし、隣接したデータの変化が小さい場合には、本発明のデルタＲＬＣ圧縮プロセスは、ＲＬＣ圧縮だけでなく、変形ＲＬＣ圧縮に比べて高い圧縮効率が得られる。
【０１０３】
例えば、４個のデータＤ１，Ｄ２，Ｄ３及びＤ４が０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３である時に、従来のＲＬＣ方式で変換されたデータは（０ｘ００：０ｘ００），（０ｘ００：０ｘ０１），（０ｘ００：０ｘ０２），（０ｘ００：０ｘ０３）であり、従来の変形ＲＬＣ方式で変換されたデータは（０ｘＦｅ：０ｘ００，０ｘ０１，０ｘ０２，０ｘ０３）であり、元のデータより全部大きさが増加する。しかし、本発明のデルタＲＬＣ方式によると、前記データＤ１，Ｄ２，Ｄ３及びＤ４は（０ｘ００：０ｘ００）に圧縮される。本発明のデルタＲＬＣ方式は隣接した二つのデータの変化が小さいデータ列で、データ列の大きさが大きければ大きいほど圧縮効率が高くなる。例えば、先の例の２５６バイトのデータ列１を本発明のデルタＲＬＣ方式で圧縮すれば、圧縮されたデータは１＋１＋（１＋１）＊６４＝１３０バイトになるので、変形ＲＬＣの２５８バイトに比べて非常に優れた圧縮効率が得られる。
【０１０４】
一方、この実施形態では、連続した４個のデータをデルタＲＬＣ方式により（スタートデータ：デルタデータ）形式で圧縮する方法を図示して説明したが、圧縮されるデータの個数は多様に変更させることができる。例えば、連続した５個のデータＤ１，Ｄ２，Ｄ３，Ｄ４及びＤ５をデルタＲＬＣ方式で圧縮しようとする場合に、デルタ値（Ｄｅｌｔａ（Ｄ１，Ｄ２），Ｄｅｌｔａ（Ｄ２，Ｄ３），Ｄｅｌｔａ（Ｄ３，Ｄ４）及びＤｅｌｔａ（Ｄ４，Ｄ５））は全部２進数の２ビットで表現される。だから、先に説明した図２の段階Ｓ１０５で、基準値ＲＥＦは０ｂ１１になる。隣接したデータの変化が小さい時には、一つのデルタデータで圧縮されるデータの個数を増加させることが圧縮効率を高めることができる方法になることができる。
【０１０５】
【発明の効果】
以上のように本発明によると、隣接したデータの変化量が小さい時に、従来のＲＬＣ圧縮方法または変形ＲＬＣ圧縮方法に比べて圧縮効率が向上する。
【図面の簡単な説明】
【図１】本発明の望ましい実施形態によるデータ圧縮／復元システムの構成を示すブロック図。
【図２】図１に示したデータ圧縮／復元システム２で本発明の望ましい実施形態によるデルタＲＬＣ方式が実行される制御手順を示すフローチャート。
【図３】図１に示したデータ圧縮／復元システム２で本発明の望ましい実施形態によるデルタＲＬＣ方式が実行される制御手順を示すフローチャート。
【図４】図１に示したデータ圧縮／復元システム２で本発明の望ましい実施形態によるデルタＲＬＣ方式が実行される制御手順を示すフローチャート。
【図５】図１に示したデータ圧縮／復元システム２で本発明の望ましい実施形態によるデルタＲＬＣ方式が実行される制御手順を示すフローチャート。
【図６】図１に示したデータ圧縮／復元システム２のデータ復元動作を示すフローチャート。
【図７】図１に示したデータ圧縮／復元システム２のデータ復元動作を示すフローチャート。
【図８】図１に示したデータ圧縮／復元システム２のデータ復元動作を示すフローチャート。
【図９】図１に示したデータ圧縮／復元システム２のデータ復元動作を示すフローチャート。
【符号の説明】
１  データプロセシングシステム
２  データ圧縮／復元システム
１０  データ圧縮器
２０  アドレス発生器
３０  バッファ
４０  データ復元器
【図１】
0004064782.tif 000007
【図２】
0004064782.tif 000008
【図３】
0004064782.tif 000009
【図４】
0004064782.tif 000010
【図５】
0004064782.tif 000011
【図６】
0004064782.tif 000012
【図７】
0004064782.tif 000013
【図８】
0004064782.tif 000014
【図９】
0004064782.tif 000015