JP3634711B2 - 入力データストリームの圧縮方法とその装置 - Google Patents
入力データストリームの圧縮方法とその装置 Download PDFInfo
- Publication number
- JP3634711B2 JP3634711B2 JP2000078069A JP2000078069A JP3634711B2 JP 3634711 B2 JP3634711 B2 JP 3634711B2 JP 2000078069 A JP2000078069 A JP 2000078069A JP 2000078069 A JP2000078069 A JP 2000078069A JP 3634711 B2 JP3634711 B2 JP 3634711B2
- Authority
- JP
- Japan
- Prior art keywords
- data stream
- input data
- fingerprint
- block
- blocks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
本発明は、データ記憶および通信システムに関し、特に、それらシステムの容量および利用を改善することに関する。
【0002】
【従来の技術】
従来のデータ圧縮技術およびシステムはデジタルデータストリームを圧縮コードストリームへと符号化し、圧縮コードストリームを対応する元のデータストリームへとデコードして戻す。ここでコードストリームを「圧縮」としているが、それは、コードストリームが通常、元のデータストリームに含まれる符号の数よりも少ない数のコードであるからである。このような小さいコードは元のデータよりも少ない量のメモリーに記憶することができる。
【0003】
また、圧縮コードストリームは、圧縮されていない元のデータよりも短い時間で通信システム(例えば、有線、無線、光ファイバ通信システム)にて送信することができる。今日の通信ネットワークにおいて、コンテンツ交換の量が相当に増大しており、データ送信および記憶容量の必要性が今までかつてないほど増えている。このように、データ圧縮は現代の送信プロトコルおよび通信ネットワークにおいて重要な役割を担っている。
【0004】
データ圧縮に有用な2つのクラスの圧縮技術は、周知のように、いわゆる特殊用途圧縮と汎用圧縮である。特殊用途圧縮技術は特殊な種類のデータを圧縮するために設計され、実装するのに比較的低コストであることが多い。例えば、周知な特殊用途圧縮技術として、ランレングス符号化、ゼロサプレッション符号化、ヌル圧縮符号化、パターン置き換えの技術がある。
【0005】
これら技術により、一般に、比較的小さな圧縮比となる。なぜなら、一般的な特性および冗長性を有するデータを通常圧縮するからである。圧縮比とは、元のデータの長さに対しての圧縮コードの長さの測定値である。しかし、特殊用途圧縮技術はより一般的性質のデータ(共通な性質を多く有さないようなデータ等)を圧縮するのにあまり有効でないことが多い。
【0006】
対照的に、汎用圧縮技術は一種類のデータを特別に圧縮するのに設計されてはおらず、実際の圧縮プロセスの際に異なる種類のデータに適合することが多い。最も有名で有用な汎用圧縮技術は、Lempel−Zivコーディングとして知られる。J.ZivとA.Lempelによって開発された一連のアルゴリズムから派生している。これについて、文献、Ziv et al.,”A Universal Algorithms for Sequential Data Compression”, IEEE Transactions on Information Theory, IT−23(3):337−343, May 1977(LZ1アルゴリズムを記載している)、Ziv et al.,”Compression of Individual Sequences Via Variable−Rate Coding”, IEEE Transactions on Information Technology,IT−24(5):530−536, September 1978(LZ2アルゴリズムを記載している)に記載されている。これらLZ1、LZ2データ圧縮方式は周知であり詳細には説明しない。
【0007】
LZ1(LZ77とも呼ばれる)データ圧縮プロセスは繰り返された文字シーケンス(本明細書において、文字(character)とはビット群をいい言語としての文字を意味するのではない)は、そのシーケンス(マッチングシーケンス)の前の出現を参照することによって置き換えることができるという原理に基づいている。この参照(例えば、ポインタ)は通常、前の出現の位置(例えば、繰り返しシーケンスの開始からのオフセットバイト)、および繰り返す文字の数(マッチドレングス)を示す情報を含む。この参照は通常、伝統的なLZ1コーディングに従うと「<Offset, length>」として表されている。
【0008】
対照的に、LZ2(LZ78としても知られる)圧縮は、圧縮の際に作られるルックアップテーブルないし辞書を適応的に成長させることに基づいて、入力データ文字のストリームを符号化値へとパースする(parse)。すなわち、LZ2は、LZ1コーディングのようにバイト境界や長さにおいて一致性を見つけたりはせず、辞書のワードがソースストリング(文字列)と一致すれば、新しいワードが辞書に加えられる。この辞書はその一致したワードとその後のソースストリングバイトからなる。LZ2コーディングに従うと、一致は辞書内のワードへのポインタないしインデックスとして符号化される。
【0009】
上述のように、LZ1およびLZ2アルゴリズムが用いる基本的な原理から派生した圧縮方式は多い。例えば、Terry A.WelchはLZ2コーディングを改善して周知のLempel−Ziv−Welch(LZW)圧縮プロセスを作った。これについて、文献、T.A.Welch,”A Technique for High performance Data Compression”,IEEE Computer,pp.8−19,June 1984および米国特許第4558302明細書(1985年12月10日発行)を参照するとよい。
【0010】
これらLZ2およびLZWの両方の圧縮技術は入力文字のストリングを固定長コードへとマッピングするいわゆるストリングテーブルを生成し利用する。具体的には、これら圧縮技術は文字ストリームを順に検索しテーブル(辞書)に前に記憶した最長のストリングとマッチ(合致)する遭遇したシンボルのシーケンスに基づいてコードを生成することにより、データ文字のストリームを圧縮されたコードストリームへと圧縮する。各マッチがなされコードシンボルが生成されるに従い、このプロセスは辞書に新しいストリングエントリーをも記憶する。これは、データストリームにおけるマッチしたシーケンスに加えて、データストリームにおいて遭遇する次の文字シンボルからなる。
【0011】
上述のように、Lempel−Zivコーディングの要点は、元のデータストリーム(例えば、送信されるドキュメント)において繰り返されるストリングやサブストリングを見つけることである。圧縮されるドキュメントにおける繰り返されたフレーズは元のデータストリームにおいて前に出現した場所へのポインタによって置き換えられる。従って、この方法で圧縮されるデータ(例えば、テキスト)をデコードすることには、ポインタが指すすでにデコードしたテキストでポインタを置き換えることを必要とする。
【0012】
周知のように、Lempel−Zivコーディングを用いる際に設計上主に考慮することとして、ポインタがどれくらい戻るか制限を設定し、その制限をどのようにするか決めることがある。別の設計上に考慮することとして所望の制限内のどのサブストリングがポインタのターゲットとするかということがある。すなわち、前のテキストへのポインタのリーチの制限がなくなったり、いわゆるグローイングウィンドウ(growing window)、あるいは前の「N」文字の固定サイズのウィンドウに制限される。ここで、Nは通常、数千文字(例えば、3キロバイト)の範囲である。
【0013】
このコーディングに従うと、ストリングの繰り返しは、両方のストリングがウィンドウに出現した場合にのみ発見され圧縮される。このようなLempel−Zivコーディングの設計時には、速さ、メモリー条件、圧縮比の間で妥協して決められる。ウィンドウをスライドすることには少なくとも1つの欠点がある。ウィンドウをスライドさせる方式は、入力テキストにおいて遠くに出現するストリング(例えば、10000文字分)を見つけることはできない。
【0014】
【発明が解決しようとする課題】
上述のようなLZ1、LZ2、LZW圧縮方式のような従来の圧縮方式は有効なデータ圧縮を提供しているが、記憶装置の条件や伝送時間を減らすために更に大きく圧縮する方式が望まれている。
【0015】
【課題を解決するための手段】
本発明は、比較的低い圧縮比を実現する方法および装置を提供する。これは、圧縮プロセス(例えば、いずれかのLempel−Ziv圧縮方式)を適用する前に入力データの初期評価として入力データストリームのより長い履歴およびより長いコモンストリングを用いることを我々が認識したことに基づいている。すなわち、通常の圧縮プロセスが所望の圧縮を行うために比較的短い(最も最近の数キロバイト)入力データの履歴を用いるが、より長いコモンストリングシーケンスを用いることとより長い履歴を用いることとが組み合わさって、圧縮効率を増加できることを我々は認識した。これは特に、繰り返す長いストリングを多く有する長い入力ストリームを圧縮する際に有効である。
【0016】
本発明に従うと、摘出した長コモンストリングに対してストリングマッチングを適用することになり入力データをプリプロセス(前処理)する。好ましい実施例に従うと、入力データは、個々のブロックが均等なサイズ(線文字長)を有するように一連のブロックへと分割される。また、好ましい実施例に従うと、各ブロックに対していわゆるフィンガプリント(指紋)が計算され記憶される。フィンガプリントは、大きいテキストストリングの比較的小さいシグネチャーである。例えば、千文字のストリングが32ビット長のフィンガプリントへとマッピングされる。従って、同一のストリングは常に同じフィンガプリントを有する。また、等しくないストリングはほとんど常に等しくないフィンガプリントを有する(特定の確率ファクタ内で)。
【0017】
本発明に従うと、入力データストリームが検索(traverse)され、入力ストリームの特定の文字セットから計算した(文字毎ベースで)中間フィンガプリントと、前に計算し記憶したフィンガプリントとの間で比較がなされる。好ましい実施例に従うと、入力ストリームは、均等なブロックサイズを有するスライドウィンドウの関数として検索され、中間フィンガプリントは現在の文字ウィンドウから計算され、前に記憶したフィンガプリントと比較される。
【0018】
好ましい実施例に従い、フィンガプリントの間にマッチを検出すると、入力ストリームは、検出したマッチの関数として決められた識別子とともに符号化される。符号化された識別子は、元の入力ストリームにおけるマッチングストリングの開始位置およびストリング長を含む。その後に、好ましい実施例に従うと、前処理され符号化された入力ストリームに対し更にLempel−Ziv圧縮を用いて圧縮がなされる。
【0019】
本発明に従うと、全体の記憶容量の条件を余り大きくせずに、長いコモンストリングを識別し、入力データの大きな履歴を調べることができる。本発明に従って、様々な圧縮方法によって大きな圧縮比を実現することができる。すなわち、本発明の原理はいずれの特定の圧縮方式には依存せず、広い範囲の圧縮方式において本発明の様々な原理を用いる利点を発揮することができる。
【0020】
ストリングマッチングメカニズムとしてフィンガプリントを用いることは新しくはない。テキスト処理システムにおけるストリングマッチングに対してフィンガプリントは用いられている。具体的には、テキストファイルにおいて長いコモンストリングを検索する際に用いられている。例えば、文献、R.M.Karp and M.O.Rabin,”Efficient Randomized Pattern−Matching Algorithms”,IBMJ.Res.Develop.,Vol.31,No.2,pp.249−260, March 1987は、ストリング検索の際にフィンガプリントを用いることを記載している。しかし、我々はフィンガプリントを優雅な圧縮ツールとして導入できることを認識した。これにより、全体の記憶容量条件を余り大きくせずに、繰り返す長いストリングを多数有する。大きい入力データストリームに対してデータ圧縮を改善することができる。
【0021】
【発明の実施の形態】
圧縮プロセス(例えば、Lempel−Ziv圧縮方式のいずれか)を適用する前に入力データの初期評価として入力データストリームのより長い履歴およびより長いコモンストリングを用いることの認識に基づいて、本発明は比較的圧縮比を実現する方法および装置を提供する。通常の圧縮プロセスが所望の圧縮をするために入力データの比較的短い履歴(最も最近のバイト群)を用いるが我々はより長いコモンストリングシーケンスと共により長い履歴を用いることにより、特に、繰り返す長いストリングを多数有するより長い入力ストリーム(例えば、大規模データベース)を圧縮する際に、圧縮効率を増加することができることを認識した。
【0022】
本発明は、これら方法を実践する方法および装置の形態で実現することができる。また本発明は、FD(floppy diskette)、CD−ROM、ハードディスクドライブ、機械が読み取り可能な記憶媒体のような実体的な媒体に実装されるプログラムコードの形態にて実現することもできる。この場合、プログラムコードが機械(例えば、コンピュータ)へとロードされ機械によって実行されると、その機械が本発明を実行する装置となる。また、本発明はプログラムコードの形態にて実装することができ、例えば、機械へとロードされおよび/または機械によって実行され、あるいは電線、ケーブリング、光ファイバ、電磁放射のような何らかの伝送媒体にて送信されるようなプログラムコードの形態にて実装される。プログラムコード汎用プロセッサに実装された場合に、プログラムコードセグメントがプロセッサと組合わさって、特定のロジック回路と類似するように動作するユニークなデバイスを与える。
【0023】
図1は、本発明に従ってデータを圧縮したり脱圧縮したりするためのシステム100のブロック図である。システム100は、ほんの少しだけ名前を揚げるのに伝送媒体(例えば、有線、無線、光ファイバ等)上に情報を送信するのに用いられる。また、システム100は、例えば、コンピュータのディスクドライブのような磁気媒体、CD−ROMのような光学的に読み取り可能な媒体、インターネット上の媒体へと情報を記録し、またはそれらから情報を読み取るのにも有用である。
【0024】
従って、本発明に従って圧縮されたデータを磁気ディスクドライブのような磁気媒体、CD−ROMのような光記録可能な媒体上に記録することができる。図1において、入力データストリーム105(例えば、テスト)が入力データエンコーダ110に供給される。下で詳細に述べるように、本発明に従う入力データエンコーダ110は、抽出する長いコモンストリングに対してストリングマッチング技術を適用することにより本発明に従って入力データストリームをプリプロセスおよび符号化する。この符号化プロセスに関連する本発明の多くの原理は下で図2に示した例を特に参照してより広く説明する。
【0025】
図1に戻ると、本発明に従って作られた符号化入力データストリーム115はコンプレッサ120に渡される。好ましい実施例に従うコンプレッサ120は、符号化入力データストリーム115を圧縮データ125に圧縮するのにLempel−Ziv圧縮を、具体的には、LZ77コーディングを適用する。ここで、上述のように本発明に従って符号化入力データストリーム115を圧縮するのにいずれのLempel−Zivタイプの圧縮をも有効に用いて本発明の原理の利点を実現することができることに留意されたい。
【0026】
次に圧縮データ125はチャネルエンコーダ130により符号化されチャネル符号化された情報135を作る。チャネル符号化により圧縮された情報に対し情報を加え、エラー検出やデータ読み取りプロセスにおける訂正を可能にする。伝統的なチャネル符号化技術としては、各シンボルが1もしくは複数のデータビットで表されるシンボルのシーケンスを符号化する周知のReed−Solomon符号化がある。次にこれらシンボルは変調エンコーダ140により変調符号化され、変調されたデータストリーム145を作る。これは、伝送チャネルを通って送信されるかあるいは媒体150上に記録されるチャネルシーケンスを定める。
【0027】
ノイズや干渉は多くの場合、データストリームの伝送や記録時にチャネル/媒体150にて投入される。従って、変調デコーダ155、チャネルデコーダ160はノイズとともに変調データストリーム145を受信し、周知な方法で、チャネルエンコーダ130、変調エンコーダ140の符号化プロセスをそれぞれ逆にたどる。チャネルデコーダ160からのデータストリームはコンプレッサ120が生成する圧縮データ125に対応する。図7、11に関連して詳細に説明するように本発明に従って、このデータストリームはデコンプレッサ165により脱圧縮され、データデコーダ170によりデコードされ、出力データストリーム175を作る。
【0028】
本発明の多くの原理は、圧縮による相当な削減や伝送効率を実現することに関連している。図2は、本発明に従ってデータを圧縮する動作を示す流れ図であり、図1のシステムにて有用である。入力データストリーム(例えば、テキストファイル)が受信される(210)。特定の圧縮ブロックサイズ「b」が選択される(220)。このbは特定の文字の数である。好ましい実施例に従って、bは20〜1000文字の範囲で選択される。入力データストリームはサイズbのブロック群に分割される(230)。その後に、本発明に従って、ブロック群の各ブロックに対しフィンガプリントが計算され格納される(240)。
【0029】
好ましい実施例に従って、文献、Karp et al., supra. に記載された技術に従ってフィンガプリントが計算される。カープらはストリング検索を支援するのにフィンガプリントを元々用いた。すなわち、長さnのストリングが長さmのサーチパターンを含むかどうかである。カープらはサーチパターンのmの文字をポリノミアルモジュロ(多項式法処理)した大きな素数として解釈した。従って、得られるフィンガプリントは、例えば、32ビットワードとして格納することができる。カープの技術は入力ストリングを走査し、長さmのn−m+1のサブストリングのそれぞれに対し同じフィンガプリントを計算する。もしこれらフィンガプリントがマッチしなければ、そのサブストリングはパターンにマッチしないという結論を出す。もしそれらフィンガプリントがマッチすれば、そのサブストリングは実際にはパターンにマッチするかどうかの更なるチェックを行う。
【0030】
カープらの技術は以下のようなフィンガプリントの幾つかの有用な特性を証明した。すなわち、
(1)フィンガプリントを迅速に計算することができること。すなわち、フィンガプリントをO(m)の時間で初期化することができ、O(1)の時間である位置をスライドすることにより更新することができること。
(2)フィンガプリントは偽のマッチを得ること。すなわち、等しくないストリングは等しくないフィンガプリントを持つことが非常に確かであること。(2つの等しくないストリングが同じ32ビットフィンガプリントを有する確率は約2−32である。)
(3)大きな素数をランダムで選ぶことができ、テキストストリング検索においてランダム化したアルゴリスムを得ることができること。
【0031】
我々は、繰り返しストリングを有する非常に大きな入力データストリームに対し増強したデータ圧縮を行うようなエレガントな圧縮ツールを導入することによってフィンガプリントを用いることを認識した。本発明に従うと、全体の記憶容量の必要条件の余り増加させないで長いコモンストリングを識別して入力データの大きな履歴を調べることができる。すなわち、本発明に従って、異なるストリングの間の相関を認識するデータ圧縮構成を用いる。具体的には、特定のテキストストリングの第2出現を繰り返しとして認識し、この第2出現を符号化した第1ストリングへの参照によって置き換える。従って、本発明に従うと、多くの圧縮方法に対し大きな圧縮比を実現することができる。
【0032】
特定の圧縮方式におけるストリング繰り返しの認識は知られている。例えば、文献、J. G. Cleary et al., ”Unbounded length contexts for PPM”, Computer Journal 40,2/3, pp. 67−75, 1997、 C. G. Neville−Manning et al., ”A space−economical suffix tree construction algorithm”, Journal of Artificial Intelligence Research, pp. 67−82, September 1997にはストリング繰り返しを認識している特定の圧縮方式を記載している。しかし、本発明とは対照的にこれらの従来の方式は大きな量のメモリーを必要とする。すなわち、フィンガプリントを用いない方法において、n文字のファイルを処理をするのに約nのワードを主メモリーに必要とする。下で議論するように、記憶条件の必要条件を激的に増加せずに本発明に従うと大きな圧縮比を実現することができる。
【0033】
図2において、好ましい実施例に従うと、各ブロックに対し計算したフィンガプリントを格納する(240)。入力ストリームの各ブロック境界にてフィンガプリントが記録される。また、プライマリデータ構造がbバイトの重なり合わないブロックのそれぞれのフィンガプリントを記憶する。すなわち、好ましい実施例に従うと、各バイト1...b、b+1...2b、2b+1...3b等々のようにフィンガプリントが記憶される。
【0034】
好ましい実施例に従うと、約n/bのフィンガプリントが記憶される。このnは上述のストリングの長さである。本発明に従うと、元の入力ストリームの少ない割合のみが記憶され、従って、記憶装置の必要条件を低く押さえることができる。また、好ましい実施例に従うと、入力データストリームにおけるそのシーケンスの位置を表す正数と共にお互いをハッシュテーブル(周知なデータ構造)にてフィンガプリントを記憶し表現する。
【0035】
図3は、図2の動作によって計算されたフィンガプリントを記憶するデータ構造300を示す。データ構造300は入力ストリームの各ブロックを記憶する。例えば、ブロック1〜mはブロック305〜325として示した。それに加え、各ブロックに対し、計算したフィンガプリントを記憶する。例えば、図3においてFP1〜FPmをフィンガプリント330〜350として示した。更に、下で述べるように、入力データストリーム(データ構成300)を検索するのにスライディングウィンドウ355を用い、上述のマッチを検出するのに現在の文字のウィンドウを記憶されたフィンガプリントと比較する。
【0036】
より詳細には、図2において、入力データストリームを検索し、入力文字と記憶されたフィンガプリントの間に比較を行い(250)、マッチを検出する(260)。すなわち、入力データストリームを検索するのにスライディングウィンドウ(例えば、スライディングウィンドウ355)を用い、現在の文字のウィンドウに対していわゆる「中間(interim)」フィンガプリントを計算する。これは図においては現在の文字のウィンドウで文字毎のベースで行われている。
【0037】
これら現在の文字のウィンドウにわたって計算される中間フィンガプリントはマッチを検出するために格納フィンガプリントと比較される。具体的には、入力テキストを走査するに従って、コモンフィンガプリントを見つけるためにハッシュテーブルが用いられ、コモンストリングの位置を判断する。もしマッチが出現すれば、シーケンス「<start, length>」を用いてそのマッチを符号化する(270)。ここで、startは初期位置であり、lengthはコモンシーケンスのサイズである。
【0038】
例えば、以下の入力データストリームを考えてみる。
The Constitution of the United States, PREAMBLE We, the people of the United States, in order to form a more perfect union...
上述のような本発明の原理を適用すると、以下の符号化データストリームの結果を得ることができる。
The Constitution of the United States, PREAMBLE We, the people <16,21>, in order to form a more perfect union...
この符号化データストリームから、繰り返しストリングは”the people of the United States”は上述のように本発明の”<start, length>”シーケンスフォーマットを用いる識別子で符号化されていることがわかる。
【0039】
好ましい実施例に従うと、マッチするフィンガプリントを有するブロックがいわゆる偽マッチではないことを確実にするため、可能な限りであるが長さがb−1文字よりも長くない範囲で、(入力データストリームにわたって)逆方向および順方向でマッチの拡張を行う。もし幾つかのブロックが現フィンガプリントとマッチすれば、そのようなブロックの中での最大のマッチが本発明に従って符号化される。
【0040】
フィンガプリントに対しての入力文字(中間フィンガプリント)の比較は入力ストリームの終わりに到達するまで継続する(280)。その後に、符号化データストリーム(本発明に従って符号化された元の入力データストリーム)が周知の圧縮アルゴリズムのいずれか(例えば、Lempel−Ziv圧縮)を圧縮される(290)。
【0041】
以下の準コードは、上述のような本発明の原理に従うフィンガプリントの比較および符号化を記したものである。変数fpは、フィンガプリントを表し、関数checkformatchはハッシュテーブルにおけるフィンガプリントをルックアップし、マッチを見つければそのマッチを符号化する。
【0042】
上の準コードは、本発明を実装するプロセッサにおける実行をするために、多くのプログラム(例えば、C言語プログラム)にて開発するのに用いることができる。例えば、図9〜10は、本発明に従ってデータ圧縮するC言語ソースプログラム900を示す。ソースプログラム900は、このソースコードプログラム900全体で用いる特定のデータ型、変数、データ構造を規定するプログラム命令を含むプログラムソースコード部分910を含む。
【0043】
プログラムソースコード部分920は、上述のように本発明に従ってストリングマッチング動作を実装するプログラム命令を含む。プログラムソースコード部分930は、上述のように本発明に従って計算されたフィンガプリントを格納するのに用いるハッシュテーブルデータ構造を定め構築するのを支援するプログラム命令である。プログラムソースコード部分940、950(図10)は、上述のように本発明に従って符号化データファイルを作るために圧縮を完成させるプログラム命令を含む。
【0044】
C言語ソースプログラム900は、生来的に例示的であり本発明を理解するのを支援するために表現してある。本発明を具現化する他のプログラムを本発明の範囲から外れずに開発することは当業者であればできるであろう。
【0045】
上述の本発明の多くの原理を更に説明するため、図4は、一連の短い非圧縮入力データストリーム400を、本発明に従って符号化された対応する一連の符号化出力データストリーム410と共に示してある。図4を調べることにより、入力データストリーム420〜450はそれぞれ、符号化出力460〜490それぞれに示すようにマッチングストリングの符号化された表現によって処理されている。
【0046】
また、図5、6には本発明を更に説明するために、大きな入力データファイル、具体的には、アメリカ合衆国の憲法に対する本発明の原理の適用を示している。図5は、憲法の選択部分からなる入力データファイル500を示している。本発明に従う憲法のテキストの圧縮は、同じ長いストリングが頻繁に現れることを考えると特に本発明の利点を発揮できる。例えば、入力データファイル500のテキスト部分510、520、530は幾つかの長い繰り返すストリングを含む。
【0047】
従って、上述の本発明の多くの原理を適用すると、図6に示した符号化データファイル600を得る。600は符号化部分610、620、630を有し、これらそれぞれは入力データファイル500のテキスト部分510、520、530に対応する。符号化部分610、620、630はそれぞれ、エンコーディング(例えば、エンコーディング635−690)を含む。これらは、本発明に従って導かれ、ブロックサイズ=20を用い、更に圧縮比を増しデータ伝送レートをより効率的にするために更に圧縮させることができる。
【0048】
例えば、エンコーディング635は、文字位置391に始まる47文字のマッチングシーケンス(すなわち、マッチングストリング)が検出され符号化されたことを示す。同様に、例えば、エンコーディング675は、文字位置2439に始まる103文字のマッチングシーケンスが検出され符号化されたことを示す。
【0049】
圧縮プロセスを適用する前に入力データの初期評価(プリプロセス)においてフィンガプリントを用いることを認識することにより、入力データストリームの長い履歴および長いコモンストリングを用いることに基づいて比較的低い圧縮比を実現することができる。重要なことに、本発明は記憶装置の必要条件を余り増加させず、いずれの特定の圧縮技術にも依存しない。すなわち、本発明は、相当な圧縮比を実現する多様な周知の圧縮アルゴリズムを用い、記憶装置の必要条件や転送時間を減らすことができる。
【0050】
圧縮テスト結果を記す前に、本発明を用いて得られる符号化データファイルの脱圧縮を議論する。図7は、本発明の更なる原理に従ってデータを脱圧縮する動作700の流れ図である。本発明による符号化データファイル(例えば、符号化データファイル600)から、この態様では文字毎のベースで個々の文字「c」を取り出す(710)。
【0051】
特定の文字cがシンボル「<」とマッチするかどうかの判断を行う(720)。マッチしなければ、脱圧縮プロセスに従って出力ファイルへと文字cが書き込まれ(730)、符号化データファイルから次の文字が取り出される。マッチすれば、符号化データファイルから次の文字が取り出される(740)。再び、特定の文字cがシンボル「<」とマッチするかどうかの判断をする(750)。マッチすれば、出力ファイルにシンボル「<」が書き込まれ(760)、次の文字が取り出される。マッチしなければ、上で詳細に示した「<start, length>」エンコーディングが符号化ファイルから読み取られる(770)。
【0052】
この態様に従うと、<start, length>情報を用いて、「start」位置から始まり「length」情報と等しい長さを有する符号化ファイルから出力ファイルへとストリングがコピーされる(780)。すなわち、本発明に従って前に符号化されたマッチングストリングがそれ全体で脱圧縮され出力ファイルへと書き込まれる。文字が残っていれば(790)、脱圧縮プロセスは継続する。残っていなければ、脱圧縮プロセスは完了し出力ファイルを完成させる。
【0053】
本発明の脱圧縮プロセスは、コンピュータ、プロセッサ、DSP等で実行させることができる。図11は、図7に示した本発明に従うデータを脱圧縮する動作を実装するC言語ソースコードプログラム1100を示す。ソースコードプログラム部分1100は符号化データファイルおよびそこに含まれる個々の文字を操作する配列を定める。部分1120は文字を処理するプログラムの主要部分を実行し、符号化ファイルを脱圧縮して出力ファイルを作る。
【0054】
C言語ソースコードプログラム1100は生来的に例示的であり、本発明の理解を深めるために記した。本発明の原理を実装する他のプログラムを本発明の範囲を外れずに当業者は容易に作ることができるであろう。
【0055】
本発明の多くの原理および利点を説明するため、非常に大きなファイルに関連して本発明を適用し、そのファイルの圧縮の多くの結果を比較した。サンプルとしては、周知のCD−ROMで”Project Gutenberg Compact Disc”, Walnut Creek CDROM, Walnut Creek, CA に含まれる全てのテキストファイルを連結させて用いた。このCD−ROMには1994の文書が含まれている。この試験のため、我々は周知のUNIXの「cat」コマンドを用いて全てのテキストファイルを連結した。具体的なUNIXコマンド文字列は、「cat */*.txt > gut94all.txt」であった。このように連結することにより、66122MBytesの入力ファイルを得て、これに本発明の原理を適用した。
【0056】
図8は、連結した当該テキストファイルを圧縮した結果の比較800を示す。ファイルサイズはMByteで示してあり、圧縮による元ファイルと割合をパーセントで示した。ブロックサイズb(810)を変化させた効果を比較した。「com b」の見出しを有する列820は、本発明を適用した効果を示してあり、入力テキストファイルのサイズの変化を示してある。「com %」の見出しを有する列830は、ブロックサイズを変化させて調べた圧縮パーセンテージを示す。
【0057】
「com b|gzip」の見出しを有する列840および「com|gzip %」の見出しを有する列850は、本発明の原理と組み合わせて周知の「gzip」圧縮アルゴリズム(周知のGNUによるLZ77の実装であるgzip)を適用した結果を示す。「com|gzip %」(850)は、列820のサイズに対する列840の割合を示す。例えば、線のブロックサイズを用い本発明と組み合わせてgzipを適用すると、元のファイルパーセントを19.7%の割合で減らすことができた。図よりブロックサイズbが減ると、最適でない点(効率的な圧縮にはブロックサイズが小さすぎる)に到達するまで圧縮の度合いは増えている。また、「total %」の見出しを有する列860は、元のファイルと比較した列840の割合を示してあり、bの最適な選択は、comがgzipのファイルサイズの減少量を超えて22.5%のファイルサイズの減少量となっているところの31MByteである。
【0058】
本明細書における説明は単に本発明の原理の例を示したのみである。当業者は、本発明の範囲を外れずに多くの構成を変えずに本明細書が開示することに基づいて多くの構成を考えることができるであろう。特許請求範囲の記載において特定の機能を実行する手段として表現したいずれの要素も、その機能を実行するいずれの機能をも表すように意図してある。例えば、(a)その機能を実行する回路要素の組み合わせ、あるいは(b)その機能を実行するためソフトウェアを実行する適切な回路と組合わさるいずれの形態におけるソフトウェア(従って、ファームウェア、オブジェクトコード、マイクロコード等をも含む。)を含む。
【図面の簡単な説明】
【図1】本発明に従ってデータを圧縮し展開するシステム。
【図2】本発明に従ってデータを圧縮する動作の流れ図。これは図1のシステムにて有用である。
【図3】図2の動作に従って計算された入力データストリームやフィンガプリントを記憶するデータ構造の例。
【図4】本発明に従って符号化された一連の符号化データストリームとともに一連の非圧縮データストリームを示す。
【図5】入力データファイルの選択部分。
【図6】本発明の原理に従って図5の入力データファイルから符号化された符号化データファイルの選択部分。
【図7】本発明に従い展開する動作の流れ図。
【図8】本発明に従ってテキストファイルを圧縮した圧縮結果。
【図9】図2に示すように本発明に従ってデータを圧縮するC言語ソースコードプログラム。
【図10】図9と同様。
【図11】図7に示すように本発明に従ってデータを展開するC言語プログラム。
【符号の説明】
105 入力データストリーム
110 入力データエンコーダ
115 符号化入力データストリーム
120 コンプレッサ
125 圧縮データ
130 チャネルエンコーダ
135 チャネル符号化された情報
140 変調エンコーダ
145 変調データストリーム
150 媒体
155 変調デコーダ
160 チャネルデコーダ
165 デコンプレッサ
170 データデコーダ
175 出力データストリーム
210 入力データストリームを受信
220 圧縮ブロックサイズ「b」を選択
230 入力データストリームをサイズ「b」ブロック群に分割
240 各ブロックに対しフィンガプリントを計算し格納する
250 入力データストリームを横断し、キャラクタベースでフィンガプリントを計算し格納されたフィンガプリントと比較
260 マッチするか?
270 マッチを符号化
280 入力データストリームの終わりか?
290 符号化された入力データストリームに圧縮を適用
391、2439 文字位置
410 符号化出力データストリーム
400、420〜450 入力データストリーム
460〜490 符号化出力
500 入力データファイル
510、520、530 テキスト部分
600 符号化データファイル
610、620、630 符号化部分
635 エンコーディング
710 符号化データファイルから文字「c」を取り出す
730 出力ファイルに文字「c」を書き込む
740 次の文字に進む。
「c=次の文字」
760 出力ファイルに「<」を書き込む
770 符号化データファイルから<start,length>エンコーディングを読み取る
780 start位置からlengthの長さのストリングを出力ファイルにコピーする
790 まだ「c」はあるか?
900 ソースプログラム
910、920、930、940、950 プログラムソースコード部分
1100 ソースコードプログラム部分
1120 部分
Claims (22)
- 入力データストリームを圧縮する方法であって、
入力データストリームを複数のデータブロックへと分割するステップと、
複数のフィンガプリントを計算するステップとを有し、前記複数のフィンガプリントの各フィンガプリントは、前記複数のデータブロックの異なる1つのデータブロックに対応するものであり、前記方法はさらに、
入力データストリームを前記複数のフィンガプリントと比較するステップと、特定のフィンガプリントと入力データストリームの間に合致が生じたときには入力データストリーム内のその合致を符号化するステップと、
符号化した入力データストリームを圧縮データストリームへと圧縮するステップとを有することを特徴とする方法。 - 前記入力データストリームは一連の文字からなることを特徴とする請求項1に記載の方法。
- 前記入力データストリームを比較するステップの動作は、一連の文字の個々の文字の関数として入力データストリームを順に検索し、その個々の文字のそれぞれの関数として中間フィンガプリントを計算することを特徴とする請求項2に記載の方法。
- 前記複数のフィンガプリントと共に前記複数のデータブロックをデータ構造に記憶するステップを更に有することを特徴とする請求項2に記載の方法。
- 前記入力データストリームを比較するステップの動作は、
特定のフィンガプリントに合致する一連の文字から最も長い合致シーケンスを識別するステップをさらに有することを特徴とする請求項3に記載の方法。 - 前記入力データストリームを比較するステップの動作は、中間フィンガプリントを特定のフィンガプリントと比較することを特徴とする請求項3に記載の方法。
- 前記合致を符号化するステップは、最も長い合致シーケンスの入力データストリームにおける開始位置と最も長い合致シーケンスの長さを符号化することを特徴とする請求項5に記載の方法。
- 複数の文字を含む入力データストリームを圧縮コードストリームへと処理する方法であって、
入力データストリームを複数のブロックに分割するステップを有し、各ブロックは複数の文字のうち特定の数の文字を含み、前記方法はさらに、
複数のフィンガプリントを計算するステップを有し、前記複数のフィンガプリントの各フィンガプリントは、前記複数のデータブロックの異なる1つのデータブロックに対応するものであり、前記方法はさらに、
特定のフィンガープリントと特定のブロックのいずれかの部分との間に合致が生じたかを判断するために、複数のブロックを複数のフィンガプリントと比較するステップと、
前記合致のそれぞれに対し、入力データストリームにて識別子を符号化するステップとを有し、前記識別子は、少なくとも特定のブロックの合致部分の入力データストリームにおける開始位置と合致部分の長さとを含み、前記方法はさらに、
符号化された入力データストリームを圧縮コードストリームへと圧縮するステップとを有することを特徴とする方法。 - 符号化された入力データストリームの圧縮がLempel-Zivコーディング技術に従って行われることを特徴とする請求項1又は8に記載の方法。
- 前記比較するステップの動作が、
ウインドウサイズを選択するステップと、
ウインドウサイズの関数として複数のブロックを検索するステップとを有することを特徴とする請求項8に記載の方法。 - 前記ウインドウサイズは特定の数の文字であることを特徴とする請求項10に記載の方法。
- 前記複数のブロックを比較するステップの動作は、
ブロックに含まれる特定の数の文字それぞれにおけるブロックに対する中間フィンガプリントを計算するステップと、
中間フィンガプリントを特定のフィンガプリントと比較するステップとを有することを特徴とする請求項11に記載の方法。 - 前記複数のブロックの各ブロックはブロックサイズが等しいことを特徴とする請求項11に記載の方法。
- 前記ブロックサイズは10〜1000文字の範囲であることを特徴とする請求項13に記載の方法。
- 前記複数のブロックの検索が、ブロックに含まれる特定の数の文字を順に行われることを特徴とする請求項12に記載の方法。
- 前記複数のフィンガプリントと共に前記複数のデータブロックをデータ構造に記憶するステップをさらに有し、前記データ構造は、各フィンガプリントをその異なる1つの対応するブロックと共に記憶することを特徴とする請求項8に記載の方法。
- 前記開始位置は入力データストリームにおける文字の位置であり、合致した部分の長さは文字の数であることを特徴とする請求項16記載の方法。
- データ圧縮装置であって、
入力データストリームを受信し複数のブロックへと分割する受信器を有し、各ブロックは入力データストリームからの複数の文字の特定の数の文字を含んでおり、さらに、
複数のフィンガプリントを計算するエンコーダを有し、各フィンガプリントは前記複数のブロックの異なる1つのブロックに対応するものであり、前記エンコーダは、複数のブロックを複数のフィンガプリントと比較し、特定のフィンガプリントと特定のブロックのいずれかの部分の間で合致が生じたかを判断し、そして前記合致のそれぞれに対し、入力データストリームにおける識別子を符号化するものであり、前記装置はさらに、
符号化された入力データストリームを圧縮コードストリームへと圧縮するコンプレッサを有することを特徴とするデータ圧縮装置。 - デジタルデータストリームを圧縮データ形式で記憶するデータ記憶システムであって、
デジタルデートストリームを複数のデータブロックへと分割する手段を有し、各ブロックは複数の文字を有するものであり、前記システムはさらに、
複数のフィンガプリントを計算する手段を有し、各フィンガプリントは、前記複数のデータブロックの異なる1つのデータブロックに対応するものであり、前記システムはさらに、
複数のブロックを検索する手段と、
ブロックの複数の文字の各文字における各ブロックに対する中間フィンガプリントを計算する手段と、
中間フィンガプリントを複数のフィンガプリントの特定のフィンガプリントと比較する手段と、
特定のフィンガプリントと中間フィンガプリントの間で合致が生じたときには前記合致をデジタルデータストレームにおいて符号化する手段と、
符号化されたデジタルデータストリームを圧縮データ形式に圧縮する手段とを有することを特徴とするデータ記録システム。 - 圧縮デジタル信号を処理する装置であって、前記圧縮デジタル信号は、入力デジタルデータストリームを複数のデータブロックへと分割し、それぞれが複数のデータブロックの異なる1つのデータブロックに対応する複数のフィンガプリントを計算し、入力デジタルデータストリームを複数のフィンガプリントと比較し、特定のフィンガプリントと入力デジタルデータストリームの間で合致が生じたときには入力デジタルデータストリームにおいて前記合致を符号化し、符号化された入力デジタルデータストリームを圧縮デジタル信号に圧縮し、そして前記圧縮デジタル信号を通信チャネルへ供給することにより生成されたものであり、前記装置は、
通信チャネルから圧縮デジタル信号を受信する受信器と、
受信した圧縮デジタル信号を脱圧縮し、その脱圧縮したデジタル信号から入力デジタルデータストリームを回復するデコンプレッサとを有することを特徴とする圧縮デジタル信号を処理する装置。 - 入力データストリームを圧縮コードストリームへと処理するステップを有し、前記入力データストリームは複数の文字を含み、さらに、
入力データストリームを複数のブロックへと分割するステップとを有し、各ブロックは複数の文字の特定の数の文字を含み、さらに、
複数のフィンガプリントを計算するステップを有し、各フィンガプリントは、前記複数のブロックの異なる1つのブロックに対応し、さらに、
複数のブロックを複数のフィンガプリントと比較するステップと、
特定のフィンガプリントと特定のブロックのいずれかの部分の間に合致が生じるかどうかを判断するステップと、
前記合致のそれぞれに対し、入力データストリームにおけるその合致の識別子を符号化するステップとを有し、前記識別子は、特定のブロックの合致した部分の入力データストリームにおける開始位置と合致した部分の長さとを含み、そして、
符号化された入力データストリームを圧縮コードストリームへと圧縮するステップとを有する方法をコンピュータに実行させるプログラムを記録した、コンピュータが読み取り可能な媒体。 - それぞれが複数の文字からなる複数のブロックへと入力データストリームを分割するステップと、
それぞれが前記複数のブロックの異なる1つのブロックに対応する複数のフィンガプリントを計算するステップと、
ブロックの複数の文字の各文字の関数として入力ストリームを検索するステップと、
ブロックの各文字におけるブロックに対する中間フィンガプリントを計算するステップと、
中間フィンガプリントを複数のフィンガプリントと比較するステップと、
複数のフィンガプリントの特定のフィンガプリントと中間フィンガプリントの間で合致が生じたかを判断するステップと、
前記合致のぞれぞれ対し、ブロックの合致した部分の入力データストリームの開始位置と合致した部分の長さとを含む、入力データストリーム内の識別子を符号化するステップ と、
符号化された入力データストリームを圧縮コードストリームへと圧縮して記録信号を得るステップとを有する処理に従って生成された前記記録信号を記録した記録媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/273840 | 1999-03-22 | ||
US09/273,840 US6611213B1 (en) | 1999-03-22 | 1999-03-22 | Method and apparatus for data compression using fingerprinting |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000315954A JP2000315954A (ja) | 2000-11-14 |
JP3634711B2 true JP3634711B2 (ja) | 2005-03-30 |
Family
ID=23045627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000078069A Expired - Lifetime JP3634711B2 (ja) | 1999-03-22 | 2000-03-21 | 入力データストリームの圧縮方法とその装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6611213B1 (ja) |
EP (1) | EP1039645B1 (ja) |
JP (1) | JP3634711B2 (ja) |
CA (1) | CA2299902C (ja) |
DE (1) | DE60000380T2 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3434756B2 (ja) * | 1999-12-07 | 2003-08-11 | エヌイーシ−カスタムテクニカ株式会社 | 指紋認証方法及び装置 |
US7509420B2 (en) * | 2000-02-18 | 2009-03-24 | Emc Corporation | System and method for intelligent, globally distributed network storage |
US8121843B2 (en) | 2000-05-02 | 2012-02-21 | Digimarc Corporation | Fingerprint methods and systems for media signals |
US6810398B2 (en) * | 2000-11-06 | 2004-10-26 | Avamar Technologies, Inc. | System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences |
US7164369B2 (en) * | 2001-06-19 | 2007-01-16 | Sharp Laboratories Of America, Inc. | System for improving storage efficiency of digital files |
US7071854B1 (en) * | 2002-05-13 | 2006-07-04 | Unisys Corporation | Hardware-implemented LZW data decompression |
JP3584032B2 (ja) | 2003-02-24 | 2004-11-04 | 沖電気工業株式会社 | データ圧縮装置及びデータ展開装置 |
US7320009B1 (en) | 2003-03-28 | 2008-01-15 | Novell, Inc. | Methods and systems for file replication utilizing differences between versions of files |
US8135683B2 (en) * | 2003-12-16 | 2012-03-13 | International Business Machines Corporation | Method and apparatus for data redundancy elimination at the block level |
US7019674B2 (en) * | 2004-02-05 | 2006-03-28 | Nec Laboratories America, Inc. | Content-based information retrieval architecture |
US7747635B1 (en) | 2004-12-21 | 2010-06-29 | Oracle America, Inc. | Automatically generating efficient string matching code |
US7592935B2 (en) * | 2005-03-10 | 2009-09-22 | Nec Laboratories America, Inc. | Information retrieval architecture for packet classification |
US7098815B1 (en) * | 2005-03-25 | 2006-08-29 | Orbital Data Corporation | Method and apparatus for efficient compression |
US7095342B1 (en) * | 2005-03-31 | 2006-08-22 | Intel Corporation | Compressing microcode |
US7102552B1 (en) * | 2005-06-07 | 2006-09-05 | Windspring, Inc. | Data compression with edit-in-place capability for compressed data |
US7882084B1 (en) | 2005-12-30 | 2011-02-01 | F5 Networks, Inc. | Compression of data transmitted over a network |
US20070220026A1 (en) * | 2006-03-17 | 2007-09-20 | Microsoft Corporation | Efficient caching for large scale distributed computations |
US9772981B2 (en) * | 2006-03-29 | 2017-09-26 | EMC IP Holding Company LLC | Combined content indexing and data reduction |
US8175875B1 (en) | 2006-05-19 | 2012-05-08 | Google Inc. | Efficient indexing of documents with similar content |
US7747078B2 (en) * | 2006-07-06 | 2010-06-29 | Intel Corporation | Substring detection system and method |
US8532415B2 (en) | 2007-10-30 | 2013-09-10 | Nec Corporation | Data compression method |
US8032757B1 (en) * | 2008-05-16 | 2011-10-04 | Trend Micro Incorporated | Methods and apparatus for content fingerprinting for information leakage prevention |
EP2366156B1 (en) * | 2008-12-16 | 2013-03-20 | Telefonaktiebolaget LM Ericsson (publ) | String matching method and apparatus |
KR101049699B1 (ko) * | 2009-07-17 | 2011-07-15 | (주)이스트소프트 | 데이터의 압축방법 |
JP6048251B2 (ja) * | 2013-03-21 | 2016-12-21 | 富士通株式会社 | データ圧縮装置、データ圧縮方法、およびデータ圧縮プログラム、並びにデータ復元装置、データ復元方法、およびデータ復元プログラム |
US9648144B2 (en) * | 2014-01-24 | 2017-05-09 | Mediatek Inc. | Data compression method and decompression method |
CN104216666A (zh) * | 2014-09-03 | 2014-12-17 | 浪潮(北京)电子信息产业有限公司 | 一种管理磁盘数据写入的方法及装置 |
US10840943B1 (en) * | 2019-10-15 | 2020-11-17 | EMC IP Holding Company LLC | System and method of data compression between backup server and storage |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4464650A (en) | 1981-08-10 | 1984-08-07 | Sperry Corporation | Apparatus and method for compressing data signals and restoring the compressed data signals |
US4558302A (en) | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
US5146221A (en) | 1989-01-13 | 1992-09-08 | Stac, Inc. | Data compression apparatus and method |
FR2646575A1 (fr) * | 1989-04-26 | 1990-11-02 | Labo Electronique Physique | Procede et structure pour la compression de donnees |
US5045852A (en) * | 1990-03-30 | 1991-09-03 | International Business Machines Corporation | Dynamic model selection during data compression |
US5373290A (en) * | 1991-09-25 | 1994-12-13 | Hewlett-Packard Corporation | Apparatus and method for managing multiple dictionaries in content addressable memory based data compression |
US5371499A (en) * | 1992-02-28 | 1994-12-06 | Intersecting Concepts, Inc. | Data compression using hashing |
US5442350A (en) | 1992-10-29 | 1995-08-15 | International Business Machines Corporation | Method and means providing static dictionary structures for compressing character data and expanding compressed data |
US5550540A (en) | 1992-11-12 | 1996-08-27 | Internatioal Business Machines Corporation | Distributed coding and prediction by use of contexts |
US5408234A (en) * | 1993-04-30 | 1995-04-18 | Apple Computer, Inc. | Multi-codebook coding process |
US5369605A (en) | 1993-07-07 | 1994-11-29 | Dell Usa, L.P. | Incremental search content addressable memory for increased data compression efficiency |
JP3397431B2 (ja) | 1994-03-16 | 2003-04-14 | 富士通株式会社 | データ圧縮方法および装置ならびにデータ復元方法および装置 |
US5701125A (en) | 1994-06-15 | 1997-12-23 | The United States Of America As Represented By The United States Department Of Energy | Method for compression of data using single pass LZSS and run-length encoding |
US5572206A (en) | 1994-07-06 | 1996-11-05 | Microsoft Corporation | Data compression method and system |
US5572209A (en) | 1994-08-16 | 1996-11-05 | International Business Machines Corporation | Method and apparatus for compressing and decompressing data |
EP0718980A1 (en) | 1994-12-20 | 1996-06-26 | International Business Machines Corporation | Data compression method of individual sequences of strings of a data stream based on a dictionary and device for performing the same |
US5608396A (en) | 1995-02-28 | 1997-03-04 | International Business Machines Corporation | Efficient Ziv-Lempel LZI data compression system using variable code fields |
US5663721A (en) | 1995-03-20 | 1997-09-02 | Compaq Computer Corporation | Method and apparatus using code values and length fields for compressing computer data |
US5729223A (en) * | 1996-03-20 | 1998-03-17 | Motorola Inc. | Method and apparatus for data compression and restoration |
GB9606465D0 (en) | 1996-03-27 | 1996-06-05 | Memory Corp Plc | Data conversion device |
US5703581A (en) | 1996-06-14 | 1997-12-30 | Lucent Technologies Inc. | Method and apparatus for data compression and decompression |
US6084229A (en) | 1998-03-16 | 2000-07-04 | Photon Vision Systems, Llc | Complimentary metal oxide semiconductor imaging device |
-
1999
- 1999-03-22 US US09/273,840 patent/US6611213B1/en not_active Expired - Lifetime
-
2000
- 2000-02-29 CA CA002299902A patent/CA2299902C/en not_active Expired - Fee Related
- 2000-03-14 EP EP00302040A patent/EP1039645B1/en not_active Expired - Lifetime
- 2000-03-14 DE DE60000380T patent/DE60000380T2/de not_active Expired - Lifetime
- 2000-03-21 JP JP2000078069A patent/JP3634711B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1039645A1 (en) | 2000-09-27 |
US6611213B1 (en) | 2003-08-26 |
DE60000380D1 (de) | 2002-10-10 |
EP1039645B1 (en) | 2002-09-04 |
JP2000315954A (ja) | 2000-11-14 |
DE60000380T2 (de) | 2003-05-15 |
CA2299902A1 (en) | 2000-09-22 |
CA2299902C (en) | 2004-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3634711B2 (ja) | 入力データストリームの圧縮方法とその装置 | |
CN108880556B (zh) | 基于lz77的无损数据压缩方法、误码修复方法及编码器和解码器 | |
US6597812B1 (en) | System and method for lossless data compression and decompression | |
US7403136B2 (en) | Block data compression system, comprising a compression device and a decompression device and method for rapid block data compression with multi-byte search | |
CN108768403B (zh) | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 | |
US5861827A (en) | Data compression and decompression system with immediate dictionary updating interleaved with string search | |
US5870036A (en) | Adaptive multiple dictionary data compression | |
KR100602394B1 (ko) | 동작 코드용 듀얼 모드 데이터 압축 방법 | |
US5841376A (en) | Data compression and decompression scheme using a search tree in which each entry is stored with an infinite-length character string | |
US5956724A (en) | Method for compressing a data file using a separate dictionary file | |
US4988998A (en) | Data compression system for successively applying at least two data compression methods to an input data stream | |
US7616138B2 (en) | Data compression using a stream selector with edit-in-place capability for compressed data | |
US5229768A (en) | Adaptive data compression system | |
KR100353171B1 (ko) | 적응형데이터압축을수행하는방법및장치 | |
EP0903865A1 (en) | Method and apparatus for compressing data | |
WO2013095615A1 (en) | Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes | |
JPH1065551A (ja) | データ圧縮方法 | |
US7379940B1 (en) | Focal point compression method and apparatus | |
US6188333B1 (en) | LZW data compression apparatus and method using look-ahead mathematical run processing | |
EP0435802B1 (en) | Method of decompressing compressed data | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
JPH0779265B2 (ja) | 圧縮データの復号方法 | |
US8244677B2 (en) | Focal point compression method and apparatus | |
JP3242795B2 (ja) | データ処理装置及びデータ処理方法 | |
EP0871294B1 (en) | Method and apparatus for compression and decompression of data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040726 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041015 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041201 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041224 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3634711 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080107 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090107 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100107 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110107 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110107 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120107 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130107 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |