Traitement en cours

Veuillez attendre...

Paramétrages

Paramétrages

Aller à Demande

1. WO2004062110 - PROCEDE, PROGRAMME ET DISPOSITIF DE COMPRESSION DE DONNEES

Note: Texte fondé sur des processus automatiques de reconnaissance optique de caractères. Seule la version PDF a une valeur juridique

[ JA ]
明 細書

データ圧縮方法、プログラム及び装置

技術分野

本発明は、被圧縮データ列から圧縮データを生成するデータ圧縮方法、プログ ラム及び装置に関し、特に、被圧縮データ列から生成される辞書を用いて、その データ列を圧縮するデータ圧縮方法、プログラム及び装置に関する。

背景技術

近年、文字コード、画像データ等の様々な種類のデータがコンピュータで扱わ れるようになるのに伴い、取り扱われるデ一夕量も増大している。そのような大 量のデータを扱う場合、デ一夕中の冗長な部分を省いて圧縮することにより、必 要な記憶容量を減らしたり、遠隔地へ高速に伝送したりすることができる。 ここで本発明は、文字コードの圧縮に限らず、.様々なデータの圧縮に適用でき るが、以下の説明では情報理論に基づき、デ一夕列をワード単位に分割し、 1ヮ 一ドのデ一夕を文字と呼び、任意のヮ一ド数のデータ列を文字列と呼ぶことにす る。

従来のデ一夕圧縮技術には、デー夕系列の類似性を利用した辞書型符号化と、 データ列の出現頻度を利用した確率統計型符号化とがある。このうち、前者の辞 書型符号化の代表的な方法として、 L Z 7 7符号化と L Z 7 8符号化が知られて いる (植松友彦箸、「文書データ圧縮アルゴリズム入門」、 C Q出版、 p p . 1 3 1 - 2 0 8 , 1 9 9 5年)。

L Z 7 7符号化と L Z 7 8符号化では、 L Z 7 7符号化の方が、簡単な処理で 充分な圧縮率が得られることから、実際の使用では主流となっている。 L Z 7 7 符号化では、図 1に示すように、一定サイズのスライドバッファ 1 0 0を設け、 このバッファ 1 0 0内で入力文字列と最長一致する文字列を検索し、その位置と 長さを用いて入力文字列を符号化する。符号化が進むにつれてバッファ 1 0 0を スライドさせていくことから、この符号化方法は、スライド辞書法とも呼ばれる 図 1では、バッファ 200の右隣の入力文字列 " a b c d a a a Q. . . " が符 号化されるとき、バッファ 200内で一致する文字列のうち最長のものは "ab c d" である。そこで、この最長一致文字列の先頭位置と入力文字列の先頭位置 の相対アドレス "5 (バイト) " を一致位置とし、最長一致文字列の長さ "4 (バイト) " を一致長として、(一致位置,一致長) = (5, 4) のような符号 を生成する。これにより、入力文字列の先頭の "a b e d" が(5, 4) に置き 換えられる。同様にして、次の文字列 "a a a" は、符号(1 3, 3) に置き換 えられる。し力 ^し、実際に用いられるスライドバッファはもつと長く、最長一致 する文字列を発見するためにバッファ内の文字列を順に検索していくと、膨大な 時間を要する。このため、実際には、バッファ内のすべての文字列と照合するの ではなく、文字列の接頭部(2〜4文字程度)の出現位置を随時テ一ブルに登録 し、テ一ブルに保持されている位置の文字列のみと照合している。このような検 索に使用されるテーブルとしては、ルックアップテーブル(L o ok Up T a b 1 e, LUT) とハッシュテーブル(Ha s h Ta b l e)とがある。

図 2は、 LUTを用いた文字列検索を示している。 LUT 202は、バッファ 200内の文字列の接頭部をァドレスとして、その文字列のバッファ 200内に おける出現位置(アドレスまたはポインタ)を格納している。そして、検索時に は、入力文字列の接頭部をアドレスとして、 LUT202の領域にアクセスし、 対応する文字列の位置を取得する。同じ接頭部の文字列がバッファ 1 00内に複 数存在する場合は、図 3のように、リンクドリスト 204の形式で複数の出現位 置が保持される。したがって、 LUT 202に 1回アクセスするだけで、バッフ ァ 200内のすべての対応する文字列の位置を取得することができる。ここでは、 2文字分の接頭部が用いられており、入力文字列の接頭部 "a b" に対応する L UT 202の領域は、リンクドリスト 104を利用して 2つの出現位置を保持し ている。

このように、 LUTは、検索する接頭部をテーブルの領域に 1対 1に対応させ、 1回のテーブル引きのみで必要な情報を取得できるため、非常に高速な検索を行 うことができる。しかし、長い文字列を検索する場合、テーブルに必要な領域の 数は出現可能な文字の数の巾乗で増えるため、必要な領域が膨大になる。例えば、 出現可能な文字の数を 8ビット、 2 5 6個とすると、 n文字の接頭部に対して 2 5 6の n乗個の領域が必要となる。ところが、検索する接頭部を長くすると、用 意された領域のうち実際に使用される(登録される)部分は一部分のみに止まり、 テ一ブル内はまばらな状態になる。したがって、検索する接頭部を長くすると、 'メモリの使用効率が悪化する。そこで、ハッシュテーブルでは、検索文字列をァ' ドレスとして用いる際に、一定の数値以下に縮退させて、複数の文字列が 1つの 領域を共有するようにしている。このため、テーブル引きの後で、得られた文字 列が実際に検索している文字列かどうかをチェックする必要があるが、 L U Tに 比べて、同等のテーブル領域でより長い文字列を検索することができる。

図 4は、ハッシュテーブルを用いた文字列検索を示している。ハッシュコード 生成部 2 0 6は、入力文字列の接頭部 " a b c " からハッシュコード 2 0 8を生 成し、それをアドレスとしてハッシュテーブル 2 1 0にアクセスする。ハッシュ ブーブル 2 1 0には、ハッシュコード 2 0 8に対応するバッファ 2 0 0内の位置 が格納されており、その位置にある文字列 " a b c d e " と入力文字列を照合す ることで、両者の接頭部が一致するかどうかがチェックされる。そして、それら がー致すれば、入力文字列と一致する文字列がバッファ 2 0 0内に存在すると判 断される。ハッシュテーブルの場合も、 L UTの場合と同様に、バッファ内の同 じ接頭部を持つ複数の文字列に対しては、リンクドリストの形式で複数の出現位 置が保持される。いずれの場合も、リンクドリストは、最長一致文字列を検索す るために用いられる。

しかしながら、このような従来のデータ圧縮技術には、次のような問題がある。 まず L U Tを用いて長い文字列を検索する場合、膨大な領域を持つテーブルを用 意しても、その一部分のみしか使用されないので、テ一ブル内はまばらな状態に なる。ハッシュテーブルでは、 L U Tと比べるとテーブルサイズが小さくなるが、 入力データが少なければ、同じようにテーブル内がまばらな状態になる。したが つて、メモリが必ずしも有効に利用されないという問題がある。また、最長一致 文字列を検索する際、リンクドリストに保持された複数の出現位置を一つ一つ迪 らなければならず、同じ接頭部を持つ文字列が多くなると、検索処理に時間がか かるという問題もある。

この問題を解決するため本願発明者等にあっては、入力データ量に比例した少 ないメモリ量で検索できるデータ圧縮方法を提案している(日本国特許出願:特 願 2000 - 98834) 。この方法は、従来のように符号化を進めながら順次、 検索テーブルに登録して行くのではなく、入力バッファを設け、入力バッファ用 の検索テーブルを一度で作り上げる方法である。検索には、入力バッファ中の各 アドレスを起点とした文字列を、文字列の内容に従って並びかえた順位リストを 利用する。中でも、順位リストから最近一致位置リストを生成し、最近一致位置 リストから同じ数字が続く箇所を検出して一致を見つける方法が最も少ないメモ リ量で実装することが出来る。

図 5は、本願発明者が提案している方法で使用される入力バッファ、順位リス ト及び最近一致位置リストの具体例である。この方法は次の手順で処理される。

(データ入力とリスト生成)

図 5 (A) 入力バッファ 212にバッファサイズのデ一夕を入力し、符号化対 象位置アドレス tを t = 1に初期化し、図 5 (B) の順位リスト 2 14と図 5 (C) の最近一致位置リスト 216を作成する。ここで、順位リスト 214は、 入力バッファ 212の各アドレスを始点とする 3文字列を数値順にソートして作 成する。また最近一致位置リスト 216は、最も最近に出現したアドレスの相対 位置を格納する。例えばアドレス 15からの文字列「c om」が最も最近に出現 したのはアドレス 1、相対位置 14であることから、最近一致位置リスト 216 のァドレス 1 5に相対位置 14を格納する。なお、特願 2000 - 98834号 ではアドレスそのものを最近一致位置リストに格納して.おり、この場合、最近一 致位置リスト 216のアドレス 15にはァドレス 1を格納する。

(一致文字列の検出と符号化)

最近一致位置リスト 216の中の同じ数字が連続する部分をから一致文字列を 検出して符号化する。図 5 (D) の最近一致位置リスト 216について見ると、 アドレス 15〜 20に数字 14が連続し、アドレス 24〜 29に数字 9が連続し、 アドレス 30〜31に数字 23が連続している。まずアドレス 15〜20に連続 する数字 14は、アドレス 15— 14=1からの文字列と一致し、一致長は 6 + 2 = 8で一致位置が 14となり、(一致長,位置) = (8, 14) が符号として 生成される。またアドレス 2 4〜2 9 , 3 0〜3 2に連続する数字 9, 2 3は、 アドレス 2 4— 2 3 = 1からの文字列と一致し、一致長は 9 + 2 = 1 1で一致位 置が 2 3となり、(一致長,位置) = ( 1 1 , 2 3 ) が符号として生成される。 しかしながら、図 5に示したデータ圧縮方法は、最近一致位置リストから同じ 数字が連続する箇所を検出することによって一致文字列を検出しているが、図 6 (A) の入力バッファ 1 1 2のように、長い文字列の繰返しの間に、長い文字列 を形成している短い文字列の繰返し出現するようなデ一夕では、最長一致を検 出することができない。即ち、図 6 (A) の入力バッファ 2 1 2にあっては、ァ ドレス 1, 1 6からの長い文字列「a b c d e f」の間に、アドレス 7 , 1 0 , 1 3からの短い文字列「a b c」、「c d e」が繰り返されているが、入力バッ ファ 2 1 2のデータから生成された図 6 ( B ) の最近一致位置リスト 2 1 6には 同じ数字が連続した個所がなく、文字列「a b c d e f」の繰返しが検出できな いという問題がある。

発明の開示

本発明は、最近一致位置リストに同じ数字の連続がなくとも一致文字列の繰返 しを検出して符号化できるデータ圧縮方法、プログラム及び装置を提供すること を目的とする。

本発明は、最近一致位置リストを過去に出現した一致文字列の候補の絞り込み に用い、候補となった入力バッファ中の文字列を比較することで一致文字列を検 出して符号化することを基本とする。

(方法)

本発明は、被圧縮デ一夕列から圧縮データを生成するデータ圧縮方法を提供す る。このデータ圧縮方法は、

入力部により、入力バッファに被圧縮データ列を入力して保持する入カステツ プと、

最近一致位置リスト生成部により、入力バッファ中の各ァドレスを起点とする 所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを 生成して保持するリス卜生成ステツプと、

候補取得部により、最近一致位置リストを用いて符号化位置の文字列が過去に 出現した位置の繰返し候補を取得する候補取得ステツプと、

一致検出部により、取得した繰返し候補の位置を起点にする文字列と符号化位 置を起点にする文字列を比較し、繰返し候補の位置からの一致した文字列を検出 する一致検出ステップと、

符号生成部により、検出した一致文字列を符号化する符号生成ステツプと、 を備えたことを特徴とする。

ここで候補取得ステツプは、符号化位置をァドレスとして最近一致位置リスト から取得した格納値を文字列の繰返し位置の第 1候補とし、一致検出ステップは、 第 1候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、 一致した文字列を取得して符号化させる。

このような本発明のデータ圧縮方法によれば、最近一致位置リストに同じ数字 の連続がなくとも、最近一致位置リストで候補を絞り込むことで、一致文字列の 繰返しを検出して符号化する処理を高速で実現できる。また入力バッファ中の文 字列の比較で一致検出することで、より長い文字列の一致検出ができる。更に、 検索テ一ブルとして使用するのは、入力バッファと最近一致位置リストのみであ るため、少ないメモリ量で実装できる。

本発明のデータ圧縮方法における候補取得ステップの第 1形態は、更に、 第 1候補を評価値とする第 1ステツプと、

符号化位置に後続する各位置をァドレスとして最近一致位置リストから取得し た格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に、 符号化位置からの距離が小さい順に第 1候補に続く 1又は複数の後続候補とする

を備え、

一致検出ステツプは、第 1候補及び後続候補を起点にする文字列と符号化位置 を起点にする文字列を比較し、一致長の最も長い文字列を取得して符号化させる ことを特徴とする。

ここで、候補取得ステップは、後続候補を取得した際に、取得した後続候補の 値を次に後続する候補を取得するための評価値としても良い。

また本発明のデータ圧縮方法における候補取得ステップの第 2形態は、更に、 第 1候補をァドレスとして最近一致位置リストから取得した値を評価値とする 第 1ステップと、

符号化位置に後続する各位置をァドレスとして最近一致位置リストから取得し た格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に, 符号化位置からの距離が小さい順に第 1候補に続く 1又は複数の後続候補とする

を備え、

一致検出ステップは、第 1候補及び後続候補を起点にする文字列と符号化位置 を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させる ことを特徴とする。

この場合にも、候補取得ステップは、後続候補を取得した際に、取得した後続 候補の値をァドレスとして最近一致位置リストから取得した値を次に後続する候 補を取得するための評価値としても良い。

また本発明のデ一夕圧縮方法における候補取得ステップの第 3形態は、更に、 第 1候補に続く 1又は複数の後続候補として、先行する候補をアドレスとして最 近一致位置リストから取得した格納値を後続候補とし、一致検出ステップは、第 1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較 し、一致長の最も長い文字列を取得して符号化させることを特徴とする。

更に本発明のデ一夕圧縮方法における候補取得ステップの第 4形態は、更に、 第 1候補を評価値とし、符号化位置に後続する各位置をァドレスとして最近一 致位置リストから取得した格納値と評価値を比較し、取得した格納値が評価値よ り過去の値である場合に、符号化位置からの距離が小さい順に第 1候補に続く 1 又は複数の後続候補とし、第 1候補及び後続候補を起点にする文字列と符号化位 置を起点にする文字列を比較し、符号化位置の文字列との一致長の最も長い文字 列を改定第 1候補とする第 1ステップと、

改定第 1候補に続く 1又は複数の改定後続候補として、先行する候補をァドレ スとして前記最近一致位置リストから取得した格納値を改定後続候補とする第 2 を備え、

一致検出ステップは、改定第 1候補及び改定後続候補を起点にする文字列と符 号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して号化 させることを特徴する。

本発明のデータ圧縮方法における符号生成ステップは、符号化位置からの文字 列を、検出された一致文字列の相対位置と一致長で符号化することを特徴とする。

(プログラム)

本発明は、被圧縮デ一夕列から圧縮デー夕を生成するプログラムを提供する。 このプログラムは、コンピュータに、

入力バッファに被圧縮データ列を入力して保持する入力ステップと、

入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現し た相対位置を格納した最近一致位置リストを生成して保持するリスト生成ステツ プと、

最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返 し候補を取得する候補取得ステツプと、

取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字 列を比較し、繰返し候補の位置からの一致した文字列を取得する一致検出ステツ プと、

検出した一致文字列を符号化する符号生成ステツプと、 '

を実行させることを特徴とする。なお、このプログラムの詳細はデータ圧縮方法 と基本的に同じになる。

本発明は、被圧縮データ列から圧縮デ一夕を生成するデータ圧縮装置を提供す る。この装置は、

入力バッファに被圧縮データ列を入力して保持する入力バッファと、

入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現し た相対位置を格納した最近一致位置リストを生成して保持する最近一致位置リス 卜生成部と、

最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返 し候補を取得する候補取得部と、

取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字 列を比較し、繰返し候補の位置からの一致した文字列を検出する一致検出部と、 検出した一致文字列を符号化する符号生成部と、

を備えたことを特徴とする。なお、このデ一夕圧縮装置の詳細はデータ圧縮方法 と基本的に同じになる。

図面の簡単な説明

図 1は従来の L Z 7 7 よるデータ圧縮処理の説明図;

図 2は L Z 7 7における L U Tを用いた処理の説明図;

図 3は L Z 7 7におけるリンクドリストを用いた処理の説明図;

図 4は L Z 7 7におけるハッシュテーブルを用いた処理の説明図;

図 5は本願発明者等が提案している最近一致位置リストを用いた一致文字列検索 の説明図;

図 6は入カバッファで文字列の繰返しがあつても最近一致位置リストで同じ数字 が連続しない例の説明図;

図 7は本発明の機能構成のブロック図;

図 8は本発明の実施形態が適用されるコンピュータのハードウェア環境の説明 図;

図 9は本発明の第 1実施形態によるデータ圧縮処理の説明図;

図 1 0は図 9の第 1実施形態によるデータ圧縮処理のフローチャート; 図 1 1は図 1 0に続くデータ圧縮処理のフローチャート;

図 1 2は本発明の第 2実施形態によるデータ圧縮処理の説明図;

図 1 3は図 1 2の第 2実施形態によるデータ圧縮処理のフローチャート; 図 1 4は図 1 3に続くデータ圧縮処理のフローチャート;

図 1 5は本発明の第 3実施形態によるデータ圧縮処理の説明図;

図 1 6は図 1 5の第 3実施形態によるデータ圧縮処理のフロ一チャート; 図 1 7は図 1 6に続くデータ圧縮処理のフローチャート;

図 1 8は本発明の第 4実施形態によるデ一夕圧縮処理の説明図;

図 1 9は図 1 8の第 4実施形態によるデータ圧縮処理のフローチャート; 図 2 0は図 1 9に続くデータ圧縮処理のフローチャート;

発明を実施するための最良の形態

図 7は、本発明によるデータ圧縮装置の機能構成のブロック図である。図 7に おいて、本発明のデータ圧縮装置は、入力ファイル 1 0、入力部 1 1、入力バッ ファ 1 2、最近一致位置リスト生成部 1 4、繰返し候補取得部 1 6、一致検出部 1 8、符号生成部 2 0及び出力ファイル 2 2で構成される。入力ファイル 1 0に はデー夕圧縮を行う被圧縮デー夕が格納されている。この入カフアイルの被圧縮 データは、入力部 1 Iにより入力バッファ 1 2のバッファサイズ分切り出され、 入力バッファ 1 2に入力されて保持される。最近一致位置リスト生成部 1 4は、 入力バッファ 1 2に保持された被圧縮データ列における入力バッファ中の各アド レスを起点とする所定長の各文字列、例えば 3文字の各文字列が、最も最近に出 現した相対位置を格納した最近一致位置リスト 2 4を生成して保持する。一致検 出部 1 8は、最近一致位置リスト 2 4を用いて符号化位置の文字列が過去に出現 した位置の繰返し候補を取得する。即ち一致検出部 1 8は、最近一致位置リスト 2 4を過去に出現した一致文字列の候補の絞り込みに使用している。符号生成部 2 0は、一致検出部 1 8により取得した繰返し候補の位置を起点とする文字列と 符号化位置を起点とする文字列を比較し、一致長の最も長い文字列を検出する。 更に符号生成部 2 0は、一致検出部 1 8で檢出した一致文字列を符号化する。こ の符号化は、検出した一致文字列の(相対位置,一致長)で符号化を行う。符号 生成部 2 0で生成された符号は出力ファイル 2 2に圧縮データとして格納され、 必要に応じてフアイル転送やフアイル格納が行われることになる。このような本 発明のデータ圧縮装置において、繰返し候補取得部 1 6による最近一致位置リス ト 2 4を用いた繰返し文字列の候補の絞り込み方法として、本発明にあっては、 後の第 1,第 2 , 第 3及び第 4実施形態で明らかにする 4つの方法がある。 図 7における本発明のデ一夕圧縮装置は,例えば図 8のようなコンピュータの ハードウェア資源により実現される。図 8のコンピュータにおいて、 C P U 1 0 0のバス 1 0 1には R AM I 0 2、ハードディスドコント口一ラ(ソフト) 1 0 4、フロッピィディスクドライバ(ソフト) 1 10、 CD— ROMドライバ(ソ フト) 1 14、マウスコントローラ 1 18、キ一ボードコント口一ラ 122、デ イスプレイコントローラ 126、通信用ボード 130が接続される。ハードディ スクコントローラ 104はハードディスクドライブ 106を接続し、本発明のデ —タ圧縮処理を実行するアプリケーションプログラムを口一ディングしており、 コンピュータの起動時にハ一ドディスクドライブ 106から必要なプログラムを 呼び出して、 RAMI 02上に展開し、 CPU 100により実行する。フロッピ ィディスクドライバ 1 10にはフロッピィディスクドライブひ、一ド) 1 12が 接続され、フロッピィディスク(R) に対する読み書きができる。 CD— ROM ドライバ 1 14に対しては、 CDドライブ(ハード) 1 16が接続され、 CDに 記憶されたデータやプログラムを読み込むことができる。マウスコントローラ 1

18はマウス 120の入力操作を CPU 100に伝える。キーポ一ドコント口一 ラ 122はキーボード 124の入力操作を CPU 100に伝える。ディスプレイ コントローラ 126は表示部 128に対して表示を行う。通信用ボード 130は 通信回線 1 32を使用し、インターネット等のネットワークを介して他のコンビ ユー夕やサーバとの間で通信を行う。

図 9は、本発明によるデータ圧縮方法の第 1実施形態の説明図である。この第 1実施形態において、図 7の繰返し候補取得部 16は、次の処理を行う。

(1) 符号化位置をアドレスとして、最近一致位置リスト 24から取得した位 置を文字列の繰返し位置の第 1候補とする。

(2) 第 1候補を評価値とする。

(3) 符号化位置に後続する各位置、即ち符号化位置に + 1, +2, + 3, … + Nとした各位置をァドレスとして、最近一致位置リスト 24から取得し た格納値と評価値を比較し、取得した格納値が評価値より過去の値である 場合、具体的には取得した格納値が評価値より大きい場合に、符号化位置 からの距離が小さい順に、第 1候補に続く 1または複数の後続候補、即ち 第 2候補、第 3候補…とする。

このような繰返し候補取得部 16により第 1候補及び第 2候補以降の後続する 候補が取得されたならば、図 7の一致検出部 18は、第 1候補及び後続候補のァ ドレスを起点とする文字列と符号化位置を起点とする文字列を比較し、一致長の 最も長い文字列を取得して符号生成部 2 0により符号化させる。この第 1実施形 態の処理を、図 9 (A) の入力バッファ 1 2に格納された文字列と、この入力パ ッファ 1 2の文字列から生成された図 9 (B ) の最近一致位置リスト 2 4を参照 して具体的に説明すると次のようになる。

図 9 (A) の入力バッファ 1 2に保持された被圧縮データとしての文字列に対 し、入力バッファ 1 2中の各アドレスを起点として所定長例えば 3文字の各文字 列が最も最近に出現した相対位置を!^内した最近一致位置リスト 2 4が生成され る。この最近一致位置リスト 2 4の生成は、例えば入力バッファ 1 2のアドレス 1からの文字列「a b c」については、最も最近に出現した文字列がないことか ら、最近一致位置リスト 2 4のアドレス 1には一致文字列が存在しないことを示 す値 「0」を保持する。入力バッファ 1 2のアドレス 2〜 6についても、それぞ れ最も最近に出現した文字列がないことから、最近一致位置リスト 2 4のァドレ ス 2〜6に 0を保持する。続いて入力バッファ 1 2のアドレス 7からの文字列 「a b c」については、最も最近に出現した文字列としてアドレス 1からの文字 列 「a b c」があることから、 7— 1 = 6となる相対位置を示す値を最近一致位 置リスト 2 4のアドレス 7に保持する。以下同様にして、入力バッファ 1 2に基 づき、最近一致位置リスト 2 4の各ァドレスに最近出現した文字列がない場合は 0を、文字列がある場合は相対位置を示す値を格納する。このようにして最近一 致位置リスト 2 4が生成できたならば、生成した最近一致位置リスト 2 4を用い て、図 7の繰返し候補取得部 1 6が繰返し文字列の候補の絞り込みを行う。いま、 図 9において、入力バッファ 1 2のアドレス 1 9が符号化位置 2 6であったとし て説明すると次のようになる。まず入力バッファ 1 2の符号化位置 2 6のァドレ ス 1 9により最近一致位置リスト 2 4を参照し、アドレス 1 9の格納値を文字列 の繰返し位置の第 1候補とする。この第 1候補の位置は、アドレス 1 9とその格 納値 6から 1 9一 6 = 1 3となり、矢印 3 6のようにアドレス 1 3の位置を示し、 これは入力バッファ 1 2におけるアドレス 1 3からの繰返し文字列を第 1候補 2 8とすることを意味する。続いて、符号化位置 2 6に対し + 1 , + 2 , + Nを アドレスとして最近一致位置リスト 2 4を参照し、各アドレスの格納値として 1 0, 5 , 1 8を取得する。このように符号化位置 2 6に後続する各位置のァドレ' スから取得した格納値について、第 1候補位置の格納値で与えられる評価値 6と 比較し、評価値より大きいものを後続する候補とする。この後続する候補の順位 は、符号化位置 2 6からの距離の小さい順に第 1候補、第 2候補、…とする。こ の符号化位置 2 6に続く各位置の格納値は、アドレス 2 0の格納値 1 0、ァドレ ス 2 1の格納値 5及びァドレス 2 2の格納値 1 8の 3つである。このうち評価値 6より大きいのは格納値 1 0と格納値 1 8である。そのうち符号化位置 2 6から の距離が小さい方のアドレス 2 0の格納値 1 0を繰返し位置の第 2候補とする。 この第 2候補の位置は矢印 3 8に示すように 1 9一 1 0 = 9からアドレス 9の位 置であり、入力バッファ 1 2におけるアドレス 9からの文字列が繰返し文字列の 第 2候補 3 0となる。更に、最近一致位置リスト 2 4のアドレス 2 2の格納値 1 8による繰返し位置が第 3候補となり、この第 3候補の位置は矢印 4 2に示すよ うに 1 9— 1 8 = 1となるァドレス 1の位置であり、これに対応した入力バッフ ァ 1 2のアドレス 1からの文字列が第 3候補 3 2となる。このようにして文字列 繰返し位置の第 1候補、第 2候補及び第 3候補が取得されたならば、各候補のァ ドレス 1 3からの第 1候補 2 8の文字列、アドレス 9からの第 2候補 3 0の文字 列、及びァドレス 1の第 3候補 3 2からの文字列のそれぞれにっき、符号化位置 2 6からの文字列との一致比較 3 4を行い、一致長の最も長い文字列を取得して 符号化する。この場合、第 3候補 3 2からの文字列が最も長く符号化位置 2 6か らの文字列に一致し、一致文字列は「a b c d e f」となり、したがって(相対 位置,一致長) = ' ( 1 8 , 6 ) で符号化を行う。なお図 9の実施形態にあっては、 第 3候補を求める際の評価値に第 1候補を用いたが、第 1候補と第 2候補のうち、 より長く一致したほうを用いてもよい。ただし、図 9にあっては、第 2候補の一 致長は 0であることから、必然的に第 1候補が第 3候補を取得するための評価値 に使用されている。

図 1 0及び図 1 1は、本発明の第 1実施形態のデ一タ圧縮処理のフローチヤ一 トであり、次の処理手順となる。

ステップ S 1 :入力バッファにバッファサイズのデータを入力し、符号化対象 位置ァドレス tを t == 1に初期化し、順位リストと最近一致位置

リストを作成する。

2 最近一致位置リストのァドレス tから相対位置 R iを取得する。 ステップ S 3 取得した相対位置 R iの値が文字一致を示す 0以外の値か否か チェックし、そうであればステップ S 4に進み、そうでなければ ステップ S 1 3に進む。

ステップ S 4 相対位置 R iの値を第 1候補および評価値に設定する。

ステップ S 5 符号化位置ァドレス tからアドレス t = t + 1の相対位置相対 位置 Rを取得する。

ステップ S 6 取得した相対位置 Rの値が文字一致を示す 0以外の値か否か チェックし、そうであればステップ S 7に進み、そうでなけ ればステップ S 9に進む。

ステップ S 7 :取得した相対位置 Rの値が評価値より大きいかどうかチ

エックし、大きければステップ S 8に進み、そうでなければステ ップ S 9に進む。

ステップ S 8 :相対位置 Rを次の候補に設定してステップ S 5に戻る。

ステップ S 9 :取得した相対位置の値が文字一致でないことを示す 0の場合で あり、各候補位置を起点とする文字列と符号化対象位置を起点と する文字列の一致を比較し、一致長 sを検出する。

ステップ S 1 0 :最長一致の候補文字列の相対位置 Rと一致長 sを符号化した 後に、 t = t + sに設定する。

ステップ S 1 1 :符号化位置アドレス tがバッファサイズより大きくなつたら ステップ S 1 2に進み、そうでなければステップ S 2に戻る。 ステップ S 1 2 :圧縮するデータの終了をチェックし、終了であれば処理を終 わり、そうでなければステップ S 1に戻る。

ステップ S 1 3 : ステップ S 3で文字一致を示す値でなかった場合であり、ァ ドレス tの文字をそのまま符号として出力し、 t = t + lとして ステップ S 1 1に進む。

図 1 2は、本発明の第 2実施形態によるデータ圧縮処理の説明図である。この 第 2実施形態にあっては、図 7の繰返し候補取得部 1 6は次の処理を行う。 ( 1 ) 符号化位置 26をアドレスとして最近一致位置リスト 24から取得した 格納値 6を文字列の繰返し位置の第 1候補とする。

(2) 第 1候補 6は、符号化位置 26からの相対位置なので、アドレス 19一 6 = 13として、最近一致位置リスト 24のアドレス 13から取得した値 6を符号化位置 26からの相対位置に換算した値、即ち 6 + 6 = 12を評 価値とする。

(3) 符号化位置 26に後続する + 1, +2, + Νの各位置をアドレス 19, 20, 21, 22として、最近一致位置リスト 24から取得した格納値 1 0, 5, 18と評価値 12を比較し、取得した格納値が評価値より大きい 場合、符号化位置 26からの距離が小さい順に、第 1候補に続く 1または 複数の後続候補、この例ではアドレス 22の格納値 18を第 2候補とする。 このようにして繰返し候補取得部 16により第 1候補及び第 2候補が取得され たならば、図 7の一致検出部 18が第 1候補のアドレス 19— 6 = 13となる入 力バッファ 12のアドレス 13からの第 1候補 28の文字列、第 2候補のァドレ ス 19一 18 = 1となる入力バッファ 12のアドレス 1からの第 2候補 44の文 字列を、符号化位置 26からの文字列と一致比較 34を行い、最長一致した文字 列、この場合にはアドレス 1からの第 2候補 44との一致比較による文字「ab c d e f」を検出し、符号生成部 20が(相対位置,一致長) = (18, 6) で 符号化を行う。

図 13及び図 14は、本発明の第 2実施形態のデ一夕圧縮処理のフローチヤ一 トであり、次の処理手順となる。

ステップ S 1 :入力バッファにバッファサイズのデ一夕を入力し、符号化対象 位置ァドレス tを t = 1に初期化し、順位リストと最近一致位置 リストを作成する。

ステップ S 2 :最近一致位置リストのアドレス tから相対位置 R 1を取得する。 ステップ S 3 :取得した相対位置 R 1の値が文字一致を示す 0以外の値か否か チェックし、そうであればステップ S 4に進み、そうでなければ ステップ S 13に進む。

ステップ S 4 :相対位置 R 1の値を第 1候補とし、第 1候補のアドレスの相対 位置 2を評価値に設定(符号化位置 tからの相対位置は R 1 + R 2 ) する。

ステップ S 5 符号化位置ァドレス tからアドレス t = t + 1の相対位置相対 位置 Rを取得する。

ステップ S 6 取得した相対位置 Rの値が文字一致を示す 0以外の値か否か チェックし、そうであればステップ S 7に進み、そうでなけ ればステップ S 9に進む。

ステップ S 7 取得した相対位置 Rの値が評価値より大きいかどうかチエツク し、大きければステップ S 8に進み、そうでなければステ ップ S 9に進む。

ステップ S 8 相対位置 Rを次の候補に ·設¾Η定^ ΐ , フ、" 。 ς 5に戻る, ステップ S 9 取得した相対位置の値が文字一致でないことを示す 0の場合で あり、各候補位置を起点とする文字列と符号化対象位置を起点と する文字列の一致を比較し、一致長 sを検出する。

0 :最長一致の候補文字列の相対位置 Rと一致長 sを符号化した 後に、 t = t + sに設定する。

ステップ S 1 1 :符号化位置アドレス tがバッファサイズより大きくなつたら ステップ S 1 2に進み、そうでなければ ° ステップ S 2に戻る。 ステップ S 1 2 :. 圧縮するデータの終了をチェックし、終了であれば処理を終 わり、そうでなければステップ S 1に戻る。

ステップ S 1 3 :ステップ S 3で文字一致を示す値でなかった場合であり、ァ ドレス tの文字をそのまま符号として出力し、 t = t + lとして ステップ S 1 1に進む。

なお図 1 2の第 2実施形態にあっては、第 3候補以降の候補を求める際の評価 値にも第 1候補を用いるが、第 1候補と第 2候補のうち、より長く一致したほう を用いてもよい。ただし、このケースでは第 3候補は存在していない。

図 1 5は、本発明の第 3実施形態によるデータ圧縮処理の説明図である。この 第 3実施形態にあっては、図 7の繰返し候補取得部 1 6が次の処理を行う。

( 1 ) 入力バッファ 1 2の符号化位置 2 6をアドレス 1 9として、最近一致位 置リスト 24から取得した格納値 6を文字列の繰返し位置の第 1候補とす る。

(2) 第 1候補に続く後続候補として、先行する候補をアドレスとして最近一 致位置リスト 24から取得した格納値を後続候補とする。即ち、第 1候補 をアドレス 19— 6 = 13として、最近一致位置リスト 24のアドレス 1

3から取得した格納値 6を第 2候補とする。また、第 2候補のアドレス 1 3— 6 = 7として、最近一致位置リスト 24のアドレス 7から取得した格 納値 6を第 3候補とする。更に、第 3候補をアドレス 7— 6 =1とした最 近一致位置リスト 24のアドレス 1から取得した格納値を第 3候補とする。 このようにして繰返し文字列の位置の候補、即ち第 1候補、第 2候補、第 3候 補が取得されたならば、図 7の一致検出部 18が入力バッファ 12における第 1 候補 28、第 2候補 46、第 3候補 48の各アドレス 13, 7, 1を起点とする 文字列と符号化位置 26のアドレス 19を起点とする文字列と一致比較 34を行 レ、一致長の最も長い候補の文字列を取得して符号生成部 20により符号化させ る。この例では、第 3候補 48からの文字列が符号化位置 26からの文字列に最 も長く一致する文字列「ab c d e f」であることから、第 3候補 48の相対位 置 19一 1=18と一致長 6を求め、(相対位置,一致長) = (18, 6) で符 号化を行う。

図 16及び図 17は、本発明の第 3実施形態によるデータ圧縮処理のフローチ ャ一トであり、次の処理手順となる。

ステップ S 1 :入力バッファにバッファサイズのデータを入力し、符号化対象 位置ァドレス tを t = 1に初期化し、順位リストと最近一致位置 リストを作成する。

ステップ S 2 :最近一致位置リストのアドレス tから相対位置 R iを取得する c ステップ S 3 :取得した相対位置 Rの値が文字一致を示す 0以外の値か否か チェックし、そうであれぱステップ S 4に進み、そうでなければ ステップ S 12に進む。

ステップ S 4 :相対位置 R 1の値を第 1候補に設定する。

ステップ S 5 :符号化位置アドレス(t一 R1) からの相対位置 R2を取得 する <

ステップ S 6 :取得した相対位置 Rの値が文字一致を示す 0以外の値か否か チェックし、そうであればステップ S 7に進み、そうでなけ ればステップ S 8に進む。

ステップ S 7 : 相対位置 R 2を次の候補 R 1に設定する(符号化位置からの 位置は R 1 + R 2のため、 R 1 = R 1 + R 2 ) 。

ステップ S 8 :取得した相対位置の値が文字一致でないことを示す 0の場合で あり、各候補位置を起点とする文字列と符号化対象位置を起点と ' する文字列の一致を比較し、一致長 sを検出する。

ステップ S 9 :最長一致の候補文字列の相対位置 Rと一致長 sを符号化した後 に、 t = t + sに設定する。

ステップ S 1 0 :符号化位置ァドレス tがバッファサイズより大きくなつたら ステップ S 1 1に進み、そうでなければステップ S 2に戻る。 ステップ S 1 1 :圧縮するデータの終了をチェックし、終了であれば処理を終 わり、そうでなければステップ S 1に戻る。

ステップ S 1 2 :ステップ S 3で文字一致を示す値でなかった場合であり、ァ ドレス tの文字をそのまま符号として出力し、 t = t + 1として ステップ S 1 0に進む。

図 1 8は、本発明の第 4実施形態によるデータ圧縮処理の説明図である。この 第 4実施形態にあっては、図 9の第 1実施形態によって最長一致の文字列を取得 した後、この取得した文字列の候補を改めて第 1候補いわゆる改定第 1候補とし て、図 1 5の第 3実施形態の処理を適用するようにしたことを特徴とする。即ち、 図 9の第 1実施形態は最近の一致部分を見つけることのできる処理であるが、そ れ以上、過去に延ばすことができないことから、これに過去の一致部分に候補を 延ばすことのできる図 1 5の第 3実施形態の処理を組み合わせたものである。 図 1 8の第 4実施形態について、図 7の繰返し候補取得部 1 6による処理は、 図 9の第 1実施形態の処理である第 1処理と、図 1 5の第 3実施形態の処理であ る第 2処理とに分かれる。

(第 1処理)

(1) 符号化位置 50をアドレス 1 1として、最近一致位置リスト 24から取 得した格納値 4を文字列繰返し位置の第 1候補とする。

(2) 第 1候補の格納値を評価値 4とする。

(3) 符号化位置 50に後続する + 1, +2, …十 Nの各位置をアドレス 12 〜17として、最近一致位置リスト 24から取得した格納値 7, 7, 3,

3, 3, 3を評価値 4と比較し、評価値 4より大きい場合に符号化位置 5 0からの距離の小さい順に、第 1候補に続く後続候補とする。この場合、 アドレス 12, 13の格納値が 7となって、評価値 4より大きいことから、 第 2候補となる。ここでアドレス 12, 13の格納値は共に 7であること から、第 2候補のアドレスは 1 1一 7=4となる。それ以外のアドレス 1

4〜17については、評価値 4より小さいことから候補外である。

このようにして第 1候補及び第 2候補が取得されたならば、図 7の一致検出部 18によりアドレス 7の第 1候補 52及びアドレス 4の第 2候補 54を起点とし た文字列と、符号化位置 50のアドレス 1 1を起点とした文字列の一致比較 60 を行い、一致長の最も長い文字列、この場合にはアドレス 4からの第 2候補 54 の文字列「ab c ab c」を、次の第 2処理のための改定第 1候補 56とする。 (第 2処理)

第 2処理は、改定第 1候補 56のアドレス 4一 3 =1として、最近一致位置リ スト 24から取得した格納値を改定第 2候補 58とする。そして図 7の符号生成 部 20により、改定第 1候補 56のアドレス 4及び改定第 2候補のアドレス 1を 起点とする文字列と、符号化位置 50のアドレス 1 1を起点とする文字列を比較 する一致比較 60を行い、最も長く一致する候補の文字列を検出する。この塲合 には第 2改定候補 58の文字列が、文字列「ab c ab c ab c」となって最も 長く一致し、改定第 2候補の相対位置 1 1— 1 = 10で一致長が 9であることか ら、 (相対位置,一致長) = (10, 9) で符号化を行う。

図 19及び図 20は、本発明の第 4実施形態のデータ圧縮処理のフローチヤ一 トであり、次の処理手順となる。

ステップ S 1 :入力バッファにバッファサイズのデータを入力し、符号化対象 位置ァドレス tを t = 1に初期化し、順位リストと最近一致位置 リストを作成する。

ステップ S 2 :最近一致位置リストのアドレス tから相対位置 R 1を取得する。 ステップ S 3 :取得した相対位置 R 1の値が文字一致を示す 0以外の値か否か チェックし、そうであればステップ S 4に進み、そうでなければ ステップ S 1 8に進む。

ステップ S 4 :相対位置 R 1の値を第 1候補及び評価値に設定する。

ステップ S 5 :符号化位置ァドレス tからアドレス t = t + 1の相対位置相対 位置 Rを取得する。

ステップ S 6 :取得した相対位置 R 1の値が文字一致を示す 0以外の値か

否かチェックし、そうであればステップ S 7に進み、そうでなけ ればステップ S 9に進む。

ステップ S 7 :取得した相対位置 R 1の値が評価値より大きいかどうかチ

エックし、大きければステップ S 8に進み、そうでなければステ ップ S 9に進む。

ステップ S 8 :相対位置 R 1を次の候補に設定してステップ S 5に戻る。

ステップ S 9 :取得した相対位置の値が文字一致でないことを示す 0の場合で あり、各候補位置を起点とする文字列と符号化対象位置を起点と する文字列の一致を比較し、一致長 sを検出する。

ステップ S 0 :最長一致の候補を選択し、改定第 1候補とする。

ステップ S 1 :改定第 1候補の相対位置を R 1とすると、最近一致位置リス トのアドレス(t— R 1 ) の相対位置 R 2を取得する。

ステップ S 2 :取得した相対位置 Rの値が文字一致を示す 0以外の値か否か チェックし、そうであればステップ S 1 3に進み、そうで なければステップ S 1 4に進む。

ステップ S 3 :相対位置 R 2を次の改定候補 R 1に設定してステップ S 1 1 に戻る。

ステップ S 4 :ステップ S 1 2で取得した相対位置の値が文字一致でないこ とを示す場合であり、各候補位置を起点とする文字列と符号化対 象位置を起点とする文字列の一致を比較し、一致長 sを検出する。 ステップ S 1 5 :最長一致の候補文字列の相対位置 Rと一致長 sを符号化した 後に、 t = t + sに設定する。

ステップ S 1 6 :符号化位置ァドレス tがバッフアサイズょり大きくなつたら ステップ S 1 7に進み、そうでなければステップ S 2に戻る。 ステップ S 1 7 : 圧縮するデータの終了をチェックし、終了であれば処理を終 わり、そうでなければステップ S 1に戻る。

ステップ S 1 8 :ステップ S 3で文字一致を示す値でなかった場合であり、ァ ドレス tの文字をそのまま符号として出力し、 t = t + lとして ステップ S 1 6に進む。

なお、本発明は上記の実施形態に限定されず、その目的と利点を損なうことの ない適宜の変形を含む。更に本発明は、上記の実施形態に示した数値による限定 は受けない。

産業上の利用の可能性

以上説明してきたように本発明によれば、入力バッファ中の各アドレスを起点 とする所定長の各文字列が、最も最近出現した相対値を格納した最近一致位置リ ストで一致文字列の候補を絞り込み、絞り込んだ候補について符号化位置との文 字列の一致検出で最も長い文字列を検出して符号化することができ、最近一致位 置リストに同じ数字が連続せずに一致位置が不明となる被圧縮データの文字列で あっても、最長一致文字列を検出して高速に符号化することができる。

また、最長一致文字列の検出による符号化に使用する検索テーブルとして使用 するのは入カバッファと最近一致位置リストのみで済むため、少ないメモリ量で データ圧縮機能を実装することができる。