JP3541930B2 - 符号化装置及び復号化装置 - Google Patents

符号化装置及び復号化装置 Download PDF

Info

Publication number
JP3541930B2
JP3541930B2 JP05050099A JP5050099A JP3541930B2 JP 3541930 B2 JP3541930 B2 JP 3541930B2 JP 05050099 A JP05050099 A JP 05050099A JP 5050099 A JP5050099 A JP 5050099A JP 3541930 B2 JP3541930 B2 JP 3541930B2
Authority
JP
Japan
Prior art keywords
character
buffer
character string
string
length
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
Application number
JP05050099A
Other languages
English (en)
Other versions
JP2000124810A (ja
Inventor
宣子 佐藤
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 JP05050099A priority Critical patent/JP3541930B2/ja
Priority to US09/372,040 priority patent/US6320522B1/en
Publication of JP2000124810A publication Critical patent/JP2000124810A/ja
Priority to US09/950,783 priority patent/US6549148B2/en
Priority to US10/226,291 priority patent/US6563438B2/en
Priority to US10/226,187 priority patent/US6906644B2/en
Priority to US10/226,292 priority patent/US6778103B2/en
Priority to US10/342,300 priority patent/US20030102989A1/en
Application granted granted Critical
Publication of JP3541930B2 publication Critical patent/JP3541930B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; 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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、符号化装置及び復号化装置に関し、CADデータ、文書データ等幅広いデータの圧縮や復元に適用して好適なものである。
【0002】
【従来の技術】
近年、文字コード、画像データ等の様々な種類のデータがコンピュータで扱われるようになってきており、取り扱われるデータ量も増大している。このような大量のデータを記憶したり、遠隔地へ伝送したりする場合、記憶容量を減らしたり、伝送速度を向上させたりするために、データ中の冗長な部分を省いて圧縮することが一般的に行われている。
【0003】
データ圧縮方式には、データ系列の類似性を利用した辞書型符号化方式と、データ列の出現頻度を利用した確率統計型符号化方式がある。
辞書型符号化方式の代表的な例として、LZ77方式とLZ78方式とがある。
【0004】
LZ77方式は、一定のバッファを設け、このバッファ内の過去の入力データから最長一致する過去のデータの位置を検索し、一致した位置とその一致長の2つを符号として用いる方式である。
【0005】
図26は、従来のLZ77方式の符号化方法を説明する図である。
図26において、被圧縮データとして、‘ababcdefabcdefgh・・・’という文字列が入力されたものとし、被圧縮データの各文字には、出現位置を示す入力番号が付されているものとする。
【0006】
まず、入力番号1の‘a’が入力された場合、それ以前には文字がないので、文字‘a’がそのまま符号化される。次に、入力番号2の文字‘b’が入力された場合、それ以前に入力された文字と比較されるが、文字‘b’と一致する文字はないので、文字‘b’がそのまま符号化される。さらに、入力番号3,4の文字列‘ab’が入力された場合、それ以前に入力された文字列と比較される。この結果、この文字列は入力番号1,2の文字列‘ab’と一致するので、入力番号3,4の文字列‘ab’を一致位置及び一致長で符号化する。ここで、一致位置は入力番号1の文字‘a’の位置、一致長は2となるので、入力番号3,4の文字列‘ab’の符号として、(1、2)が符号化される。
【0007】
次に、入力番号5の文字‘c’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘c’がそのまま符号化され、入力番号6の文字‘d’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘d’がそのまま符号化され、入力番号7の文字‘e’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘e’がそのまま符号化され、入力番号8の文字‘f’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘f’がそのまま符号化される。
【0008】
次に、入力番号9〜14の文字列‘abcdef’が入力された場合、この文字列は入力番号3〜8の文字列‘abcdef’と一致するので、入力番号9〜14の文字列‘abcdef’を一致位置及び一致長で符号化する。ここで、一致位置は入力番号3の文字‘a’の位置、一致長は6となるので、入力番号9〜14の文字列‘abcdef’の符号として、(3、6)が符号化される。
【0009】
次に、入力番号15の文字‘g’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘g’がそのまま符号化され、入力番号16の文字‘h’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘h’がそのまま符号化される。
【0010】
一方、LZ78方式は、過去に出現した文字列を辞書に登録し、登録入力番号を符号化する方式である。
LZ77方式の方がLZ78方式に比べ、長い文字列の繰り返しがあるデータで高い圧縮性能を持ち、LZ78方式の方がLZ77方式に比べ、比較的短い文字列の繰り返しがあるデータで高い圧縮率を得ることができる。なお、LZ77方式とLZ78方式は、例えば、文献“文書データ圧縮アルゴリズム入門”植松友彦著、CQ出版社に記載されている。
【0011】
確率統計型符号化方式の代表的な方式として、算術符号化やハフマン符号化方式がある。算術符号化もハフマン符号も、各文字の統計的な出現頻度に従い、出現確率の高い文字に対して短い符号長を割り振ることによって、圧縮効果を得る方式である。
【0012】
なお、算術符号化は、例えば、文献“Arithmetic coding
revisited“ Alister Moffat 他著1995 IEEE Data Compression Conferance, p202−211に記載されている。また、ハフマン符号化方式は、例えば、文献“文書データ圧縮アルゴリズム入門”植松友彦著、CQ出版社に記載されている。
【0013】
また、一層の圧縮効果を得るために、一文字の出現確率(P(Xt))ではなく、入力文字と直前の文字との依存関係(以下、文脈と称する)を取り入れた条件付き出現確率(P[Xt|Xt−1])に基づいて可変長符号化する方法が提案されている。なお、この方法は、例えば、文献“Unbounded Length Contexts for PPM ”John G.Cleary
他著1995 IEEE Data Compression Conferance, p52−61に記載されている。
【0014】
確率統計型符号化方式はLZ78方式と同様、比較的短い文字列の繰り返しがあるデータで高い圧縮率を得ることができる。一般的に、LZ78の方が確率統計型方式より早い処理速度が得られ、確率統計型方式の方がLZ78方式より高い圧縮率が得られる。
【0015】
【発明が解決しようとする課題】
しかしながら、LZ78方式及び確率統計型符号化方式では、比較的短い文字列の繰り返しがあるデータで高い圧縮率を得ることができるが、長い文字列の繰り返しがあるデータではあまりよい圧縮率を得ることができなかった。
【0016】
一方、LZ77方式では、長い文字列の繰り返しがあるデータでは高い圧縮率を得ることができるが、比較的短い文字列の繰り返しがあるデータではあまりよい圧縮率を得ることができなかった。
【0017】
このため、従来の圧縮方式では、様々なデータを圧縮対象とした場合に、長い文字列及び比較的短い文字列の双方が繰り返し出るデータに対しては、高い圧縮率を達成することが困難であった。
【0018】
そこで、本発明の目的は、長い文字列及び短い文字列の双方に対して、効率よく圧縮することが可能なデータ符号化装置を提供することである。
【0019】
【課題を解決するための手段】
上述した課題を解決するために、本発明によれば、入力された記号列の中から所定の長さの第1の記号列に一致する第2の記号列を検出する記号列検出手段と、前記第1の記号列に続く第3の記号列と前記第2の記号列に続く第4の記号列との一致長を検出する一致長検出手段と、前記記号列検出手段で検出された記号列及び前記一致長検出手段で検出された一致長に基づいて、前記入力された記号列の符号化を行う符号化手段とを備えている。
【0020】
このことにより、長い記号列が繰り返し出る入力データに対しては、一致する記号列の一部を一致長で符号化することが可能となることから、長い記号列が繰り返し出る入力データを効率よく圧縮することが可能となる。さらに、一致位置を検出するための符号として一致する記号列の残りの一部が用いられるため、一致位置を検出するための符号を新たに挿入することなく一致位置を検出することが可能となることから、短い記号列が繰り返し出る入力データを一致長で符号化する場合においても、一致位置を検出するための新たな符号が多数挿入されて、圧縮効率が悪化することを防止することが可能となる。
【0021】
また、本発明の一態様によれば、所定の長さの第2の記号列と一致する第1の記号列が出現した場合、前記第1の記号列に続く第3の記号列を、第2の記号列に続く第4の記号列との一致長で符号化し、一致長で符号化されない部分については、直前の記号列を文脈とした時の次に出現する記号の符号を用いて符号化するようにしている。
【0022】
このことにより、長い記号列が繰り返し出る入力データに対しては、一致する記号列を一致長で符号化することが可能となるとともに、短い記号列が繰り返し出る入力データに対しては、出現確率の高い記号列に短い符号長を割り振ることによって符号化を行うことが可能となり、長い記号列が繰り返し出るデータに対しても、短い記号列が繰り返し出るデータに対しても、高い圧縮率を達成することが可能となる。
【0023】
また、本発明の一態様によれば、所定の長さの第2の記号列と一致する第1の記号列が出現した場合、前記第1の記号列に続く第3の記号列を、第2の記号列に続く第4の記号列との一致長で符号化し、一致長で符号化されない部分については、過去に出現した記号列を符号語に対応させて登録した辞書から、現在の記号列に対応する符号語を検索することにより、符号化を行うようにしている。
【0024】
このことにより、長い記号列が繰り返し出る入力データに対しては、一致する記号列を一致長で符号化することが可能となるとともに、短い記号列が繰り返し出る入力データに対しては、LZ78方式によって符号化を行うことが可能となり、長い記号列が繰り返し出るデータに対しても、短い記号列が繰り返し出るデータに対しても、高い圧縮率を達成することが可能となる。
【0025】
また、本発明の一態様によれば、所定の長さの第2の記号列と一致する第1の記号列が出現した場合、前記第1の記号列に続く第3の記号列を、第2の記号列に続く第4の記号列との一致長で符号化し、その一致長で符号化されたデータに対し、直前の記号列を文脈とした時の次に出現する記号の符号を用いてさらに符号化を行うようにしている。
【0026】
このことにより、長い記号列が繰り返し出る入力データに対しては、一致する記号列を一致長で符号化することが可能となることから、長い記号列が繰り返し出るデータを効率よく圧縮することが可能となるとともに、一致長で符号化された圧縮データに短い記号列が繰り返し出現する場合、出現確率の高い記号列に短い符号長を割り振ることにより、一致長で符号化された圧縮データをさらに圧縮することが可能となり、高い圧縮率を達成することが可能となる。
【0027】
また、本発明の一態様によれば、所定の長さの第2の記号列と一致する第1の記号列が出現した場合、前記第1の記号列に続く第3の記号列を、第2の記号列に続く第4の記号列との一致長で符号化し、その一致長で符号化されたデータに対し、過去に出現した記号列を符号語に対応させて登録した辞書から、現在の記号列に対応する符号語を検索することにより、さらに符号化を行うようにしている。
【0028】
このことにより、長い記号列が繰り返し出る入力データに対しては、一致する記号列を一致長で符号化することが可能となることから、長い記号列が繰り返し出るデータを効率よく圧縮することが可能となるとともに、一致長で符号化された圧縮データをLZ78方式によってさらに圧縮することが可能となり、長い記号列が繰り返し出るデータに対しても、短い記号列が繰り返し出るデータに対しても、高い圧縮率を達成することが可能となる。
【0029】
また、本発明の一態様によれば、過去に出現した記号列の出現位置を所定のコードに対応させて記憶しておき、一致長で符号化する記号列の直前の記号列に対応するコードが記憶されているかどうかを調べることにより、一致長で符号化する際の比較対象となる過去の記号列の出現位置を調べるようにしている。
【0030】
このことにより、一致長の比較対象となる過去の記号列の出現位置を調べる場合、一致長で符号化する記号列の直前の記号列一致する記号列が見つかるまで過去の記号列を1つ1つさかのぼって調べる必要がなくなり、処理を高速化することが可能となる。
【0031】
また、本発明の一態様によれば、一致長の長さが所定値以下の場合、その記号列については一致長による符号化を行わないようにしている。
このことにより、一致長の長さが短い場合には、一致長を示す符号が余分に付加され、圧縮率が却って低下することを防止することが可能となり、一致長による符号化の圧縮率を改善することが可能となる。
【0032】
【発明の実施の形態】
以下、本発明の実施例に係わる符号化装置について図面を参照しながら説明する。
【0033】
図1は、本発明の第1実施例に係わる符号化装置の構成を示すブロック図である。
図1において、記号列検出手段1は、入力された記号列の中から所定の長さnの第1の記号列に一致する第2の記号列を検出する。一致長検出手段2は、第1の記号列に続く第3の記号列と前記第2の記号列に続く第4の記号列との一致長kを検出する。符号化手段3は、記号列検出手段1で検出された記号列及び一致長検出手段2で検出された一致長kに基づいて、入力された記号列の符号化を行う。
【0034】
このことにより、第3の記号列を一致長kで符号化する場合、第3の記号列に対応する第4の記号列の出現位置を第1の記号列を用いて見つけることが可能となり、第4の記号列の出現位置を示すための符号を余分に挿入する必要がなくなることから、長い記号列の繰り返し対する高い圧縮率を維持しつつ、短い記号列の繰り返しに対する圧縮率を劣化を防止することが可能となる。
【0035】
図2は、本発明の第1実施例に係わる符号化方法及び復号化方法を示す図である。
図2において、入力データとして、長さnの第2の記号列が入力され、この第2の記号列が入力された後に、長さnの第1の記号列が入力されたものとする。ここで、第1の記号列と第2の記号列とが一致するものとすると、第1の記号列と過去に入力された記号列とを順次比較し、第1の記号列と第2の記号列との一致を検出することにより、第2の記号列の出現位置を特定することができる。
【0036】
第2の記号列の出現位置が特定されると、第1の記号列に連続する第3の記号列と第2の記号列に連続する第4の記号列との一致長kを調べ、第3の記号列をこの一致長kで符号化する。
【0037】
この結果、符号化データとして、入力データの第1の記号列に対応する符号、入力データの第3の記号列に対応する符号、入力データの第2の記号列に対応する符号及び一致長kの符号を生成することができる。
【0038】
この符号化データを復号する場合、第2の記号列に対応する符号、第4の記号列に対応する符号及び第1の記号列に対応する符号を復号する。そして、第1の記号列に一致する記号列を復号結果から検索し、第1の記号列に一致する記号列として第2の記号列が見つかると、第1の記号列の符号に続く一致長kの符号を復号して一致長kを求める。一致長kが求まると、第2の記号列に連続する一致長kの長さの第4の記号列を、第3の記号列の復号結果として出力する。
【0039】
このように、第1の記号列と第2の記号列とが一致する場合、第3の記号列を一致長kで符号化することにより、長い記号列が繰り返して出現する場合に、この長い記号列の繰り返し部分を一致長kで符号化することが可能となることから、データを効率よく圧縮することが可能となる。また、第1の記号列をその記号列で符号化することにより、一致長kで符号化された第3の記号列を復元する際に必要となる第4の記号列を、第1の記号列を用いて見つけることが可能となることから、第4の記号列を見つけるための識別記号を符号化データに挿入する必要がなくなり、短い記号列が繰り返して出現する場合においても、データを効率よく圧縮することが可能となる。
【0040】
図3は、本発明の第2実施例に係わるデータ圧縮方法を示す図である。この第2実施例では、過去の入力データの中からn文字列を検索し、n+1文字目から一致した部分との一致長kで現在の入力データを符号化する。なお、以下の実施例では、文字列が入力された場合を例にとって説明するが、本発明は文字コードの圧縮に限らず、様々なデータに適用でき、情報論理に基づき、データの1WORD単位を文字(アルファベット)といい、データが任意WORD繋がったものを文字列と呼ぶ。
【0041】
図3において、被圧縮データとして、‘ababcdefabcdefgh・・・’という文字列が入力されたものとし、被圧縮データの各文字には、出現位置を示す入力番号が付されているものとする。また、n=3とし、過去の入力データの中から3文字列を検索し、4文字目から一致した部分の一致長kで現在の入力データを符号化するものとする。
【0042】
まず、入力番号1の‘a’が入力された場合、それ以前には文字がないので、文字‘a’がそのまま符号化される。次に、入力番号2の文字‘b’が入力された場合、それ以前に入力された文字と比較されるが、文字‘b’と一致する文字はないので、文字‘b’がそのまま符号化される。さらに、入力番号3,4の文字列‘ab’が入力された場合、それ以前に入力された文字列と比較される。この結果、入力番号1,2の文字列‘ab’と一致するが、文字列‘ab’の長さは2で、n=3に満たないので、入力番号3,4の文字列‘ab’はそのまま符号化される。
【0043】
次に、入力番号5の文字‘c’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘c’がそのまま符号化され、入力番号6の文字‘d’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘d’がそのまま符号化され、入力番号7の文字‘e’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘e’がそのまま符号化され、入力番号8の文字‘f’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘f’がそのまま符号化される。
【0044】
次に、入力番号9〜11の文字列‘abc’が入力された場合、入力番号3〜5の文字列‘abc’と一致し、n=3となるので、入力番号9〜11の文字列‘abc’をそのまま符号化し、入力番号12以降の文字列を入力番号6以降の文字列との一致長kで符号化する。ここで、入力番号6〜8の文字列‘def’と入力番号12〜14の文字列‘def’とが一致し、一致長k=3となるため、入力番号12〜14の文字列‘def’を一致長3で符号化する。
【0045】
次に、入力番号15の文字‘g’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘g’がそのまま符号化され、入力番号16の文字‘h’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、文字‘h’がそのまま符号化される。
【0046】
この結果、‘ababcdefabcdefgh・・・’という被圧縮データに対し、‘ababcdefabc3gh・・・’という符号化データが得られる。
【0047】
このように、入力番号9〜11の文字列‘abc’については、入力番号3〜5の文字列‘abc’と一致する場合においても、入力番号9〜11の文字列‘abc’については、一致長で符号化することなく、文字列‘abc’の符号化を行い、入力番号9〜11の文字列‘abc’に続く入力番号12〜14の文字列‘def’を一致長で符号化する。
【0048】
次に、‘ababcdefabc3gh・・・’という符号化データを復号する場合、まず、‘ababcdef’という文字列が復号される。そして、‘ababcdef’という文字列に続いて、一致長3の符号の直前の‘abc’という文字列が復号される。そして、この‘abc’という文字列に続く一致長3の符号を復号する時に、この‘abc’という文字列と一致する過去の文字列を、それ以前に復号された‘ababcdef’という文字列の中から検索する。‘ababcdef’という文字列の中から‘abc’という過去の文字列が見つかると、次の符号が一致長を現すことが分かり、この‘abc’という過去の文字列に続く3つの文字列‘def’という文字列が求まり、‘abc’という文字列に続く一致長3の符号を復号結果として、‘def’という文字列を出力する。
【0049】
このように、図3の実施例では、LZ77方式と違い、一致長のみを符号として用いるため、一致位置の符号が不要となり、短い文字列が繰り返し出現する場合においても、データ圧縮を効率的に行うことが可能となる。
【0050】
図4は、本発明の第2実施例に係わるデータ圧縮装置の構成を示すブロック図である。
図4(a)において、入力バッファ11には、図4(b)の被圧縮データの既に圧縮済みの部分を格納するLempelバッファ18と、被圧縮データのこれから圧縮する部分を格納するZivバッファ19とが設けられ、出現位置保持手段13は、Lempelバッファ18内にある長さnの文字列(以下、n文字列という)の出現位置の一部もしくは全てを保持する。
【0051】
出現有無調査手段14は、Zivバッファ19の直前のn文字列と同じ過去のn文字列の出現位置が出現位置保持手段13に保持されているかどうかを調査し、その調査結果を切り替え手段12に伝える。切り替え手段12は、Zivバッファ19の直前のn文字列と同じ過去のn文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファ19の直前のn文字列と同じ過去のn文字列の出現位置を出現位置取得手段15に取得させる。
【0052】
出現位置取得手段15がZivバッファ19の直前のn文字列と同じ過去のn文字列の出現位置を取得すると、一致長取得手段16は、Lempelバッファ18内の過去のn文字列の出現位置以降の文字列とZivバッファ19の先頭以降の文字列との一致長kを求める。一致長kが求まると、一致長符号化手段17は、Zivバッファ19の先頭以降の文字列のうち、Lempelバッファ18内の過去のn文字列の出現位置以降の文字列と一致する部分を一致長kで符号化する。
【0053】
一方、切り替え手段12は、Zivバッファ19の直前のn文字列と同じ過去のn文字列の出現位置が保持されていないという通知を受け取った場合、Zivバッファ19の先頭以降の文字列をそのまま符号化して出力バッファに出力する。
【0054】
なお、出現位置保持手段13は、Lempelバッファ18内にある同じn文字列のうち、最も最近出現した出現位置のみを保持するようにしてもよい。
図5は、本発明の第2実施例に係わるデータ復元装置の構成を示すブロック図である。
【0055】
図5(a)において、出力バッファ27には、図5(b)の圧縮データの既に復元済みの部分を格納するLempelバッファ28と、圧縮データのこれから復元する部分を格納するZivバッファ29とが設けられ、出現位置保持手段23は、Lempelバッファ28内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0056】
出現有無調査手段22は、Zivバッファ29の直前のn文字列と同じ過去のn文字列の出現位置が出現位置保持手段23に保持されているかどうかを調査し、その調査結果を切り替え手段21に伝える。切り替え手段21は、Zivバッファ29の直前のn文字列と同じ過去のn文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファ29の直前のn文字列と同じ過去のn文字列の出現位置を出現位置取得手段24に取得させる。
【0057】
出現位置取得手段24がZivバッファ29の直前のn文字列と同じ過去のn文字列の出現位置を取得すると、一致長復元手段25は、Zivバッファ29の直前のn文字列の次の符号から一致長kを復元する。一致長kが復元されると、コピー手段26は、Lempelバッファ28内にある過去のn文字列に続くその一致長k分の文字列をコピーし、このコピー結果をZivバッファ29の直前のn文字列の次の符号の復元結果として出力バッファに出力する。
【0058】
一方、切り替え手段21は、Zivバッファ29の直前のn文字列と同じ過去のn文字列の出現位置が保持されていないという通知を受け取った場合、入力される符号化データをそのまま出力バッファに出力する。
【0059】
図6は、本発明の第3実施例に係わるデータ圧縮方法を示す図である。この第3実施例では、被圧縮データを図3の方法で符号化するとともに、一致長で置き換えない部分については、文脈を利用した確率統計型方式で符号化するようにしたものである。
【0060】
図6において、被圧縮データとして、‘ababcdefabcdefgh・・・’という文字列が入力されたものとし、被圧縮データの各文字には、出現位置を示す入力番号が付されているものとする。また、n=3とし、過去の入力データの中から3文字列を検索し、4文字目から一致した部分との一致長で現在の入力データを符号化するものとする。
【0061】
また、文字の符号表31、文脈aに続いて出現する文字の符号表32、文脈bに続いて出現する文字の符号表33、文脈cに続いて出現する文字の符号表34及び文脈abに続いて出現する文字の符号表35が設けられているものとする。ここで、符号表31では、文字‘a’に対して符号‘111’が割り当てられ、文字‘b’に対して符号‘110’が割り当てられ、文字‘c’に対して符号‘101’が割り当てられ、文字‘d’に対して符号‘100’が割り当てられ、文字‘e’に対して符号‘011’が割り当てられ、文字‘f’に対して符号‘010’が割り当てられ、文字‘g’に対して符号‘001’が割り当てられ、文字‘h’に対して符号‘000’が割り当てられているものとする。
【0062】
また、符号表32では、文脈aに続いて文字‘b’が出現した時に、符号‘1’が割り当てられ、文脈aに続いて文字‘b’以外の文字が出現した時に、符号‘0’が割り当てられ、符号表33では、文脈bに続いて文字‘a’が出現した時に、符号‘11’が割り当てられ、文脈bに続いて文字‘c’が出現した時に、符号‘10’が割り当てられ、文脈bに続いて文字‘a’または‘c’以外の文字が出現した時に、符号‘01’が割り当てられ、符号表34では、文脈cに続いて文字‘d’が出現した時に、符号‘1’が割り当てられ、文脈cに続いて文字‘d’以外の文字が出現した時に、符号‘0’が割り当てられ、符号表35では、文脈abに続いて文字‘a’が出現した時に、符号‘11’が割り当てられ、文脈abに続いて文字‘c’が出現した時に、符号‘10’が割り当てられ、文脈abに続いて文字‘a’または‘c’以外の文字が出現した時に、符号‘01’が割り当てられているものとする。
【0063】
まず、入力番号1の文字‘a’が入力された場合、符号表31を参照することにより、文字‘a’に対応する符号として‘111’を出力する。次に、入力番号2の文字‘b’が入力された場合、入力番号2の文字‘b’の直前の文字‘a’を文脈として符号表32を参照し、入力番号2の文字‘b’に対応する符号として‘1’を出力する。次に、入力番号3の文字‘a’が入力された場合、入力番号3の文字‘a’の直前の文字‘b’を文脈として符号表33を参照し、入力番号3の文字‘a’に対応する符号として‘11’を出力する。次に、入力番号4の文字‘b’が入力された場合、入力番号4の文字‘b’の直前の文字‘a’を文脈として符号表32を参照し、入力番号4の文字‘b’に対応する符号として‘1’を出力する。次に、入力番号5の文字‘c’が入力された場合、入力番号5の文字‘c’の直前の文字列‘ab’を文脈として符号表35を参照し、入力番号5の文字‘c’に対応する符号として‘10’を出力する。次に、入力番号6の文字‘d’が入力された場合、入力番号6の文字‘d’の直前の文字‘c’を文脈として符号表34を参照し、入力番号6の文字‘d’に対応する符号として‘1’を出力する。
【0064】
次に、入力番号7の文字‘e’が入力された場合、符号表31を参照することにより、文字‘e’に対応する符号として‘011’を出力する。次に、入力番号8の文字‘f’が入力された場合、符号表31を参照することにより、文字‘f’に対応する符号として‘010’を出力する。次に、入力番号9の文字‘a’が入力された場合、符号表31を参照することにより、文字‘a’に対応する符号として‘111’を出力する。次に、入力番号10の文字‘b’が入力された場合、入力番号10の文字‘b’の直前の文字‘a’を文脈として符号表32を参照し、入力番号2の文字‘b’に対応する符号として‘1’を出力する。次に、入力番号11の文字‘c’が入力された場合、入力番号11の文字‘c’の直前の文字列‘ab’を文脈として符号表35を参照し、入力番号11の文字‘c’に対応する符号として‘10’を出力する。
【0065】
ここで、入力番号9〜11の文字列‘abc’は、入力番号3〜5の文字列‘abc’と一致し、n=3となるので、入力番号12以降の文字列を入力番号6以降の文字列との一致長で符号化する。ここで、入力番号6〜8の文字列‘def’と入力番号12〜14の文字列‘def’とが一致し、一致長が3となるため、入力番号12〜14の文字列‘def’を一致長3で符号化し、一致長3に対応する符号として‘0011’を出力する。
【0066】
次に、入力番号15の文字‘g’が入力された場合、符号表31を参照することにより、文字‘g’に対応する符号として‘001’を出力する。次に、入力番号16の文字‘h’が入力された場合、符号表31を参照することにより、文字‘h’に対応する符号として‘000’を出力する。
【0067】
なお、上述した実施例では、一致長符号を4ビットで表したが、何ビットで表現してもよく、また、一致長のために符号表を準備し、符号表に従って一致長を符号化してもよい。
【0068】
図7は、本発明の第3実施例に係わるデータ圧縮装置の構成を示すブロック図である。
図7において、入力バッファ41には、被圧縮データの既に圧縮済みの部分を格納するLempelバッファと、被圧縮データのこれから圧縮する部分を格納するZivバッファとが設けられ、出現位置保持手段43は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0069】
出現有無調査手段44は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段43に保持されているかどうかを調査し、その調査結果を切り替え手段42に伝える。切り替え手段42は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段45に取得させる。
【0070】
出現位置取得手段45がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長取得手段46は、Lempelバッファ内のその出現位置以降の文字列とZivバッファの先頭以降の文字列との一致長kを求める。一致長kが求まると、一致長符号化手段47は、Zivバッファの先頭以降の文字列のうち、その出現位置以降の文字列と一致する部分を一致長kで符号化する。
【0071】
一方、切り替え手段42は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、文脈付文字検索手段48に対し、直前の0〜(m−1)文字列を文脈として、次に続く文字を被圧縮データから受け取り、文脈付文字符号保持手段49から検索させる。文脈付文字符号保持手段49には、直前の0〜(m−1)(m≧1)文字列を文脈として、次に出現する各種文字に対応する符号が保持され、文脈付文字検索手段48が文脈付き文字を検索すると、文脈付文字符号化手段50は、その文脈付き文字に対応する符号を文脈付文字符号保持手段49から取得する。
【0072】
なお、長さがn−1の文脈と次に続く文字とを合わせたn文字列を、出現位置保持手段43におけるn文字列の出現位置とリンクさせ、文脈付文字検索手段48が調べた文脈の長さがn−1の場合、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていることを、出現有無調査手段44に通知するようにしてもよい。
【0073】
図8は、本発明の第3実施例に係わるデータ復元装置の構成を示すブロック図である。
図8において、出力バッファ70には、圧縮データの既に復元済みの部分を格納するLempelバッファと、圧縮データのこれから復元する部分を格納するZivバッファとが設けられ、出現位置保持手段63は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0074】
出現有無調査手段62は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段63に保持されているかどうかを調査し、その調査結果を切り替え手段61に伝える。切り替え手段61は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段64に取得させる。
【0075】
出現位置取得手段64がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長復元手段65は、入力された符号から一致長kを復元する。一致長kが復元されると、コピー手段66は、Lempelバッファ内にあるn文字列に続くその一致長k分の文字列をコピーし、このコピー結果をZivバッファの直前のn文字列の次の符号の復元結果として出力バッファに出力する。
【0076】
一方、切り替え手段61は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、文脈検索手段67に対し、直前の0〜(m−1)文字列を文脈とする符号を、文脈付文字符号保持手段68から検索させる。文脈付文字符号保持手段68には、直前の0〜(m−1)文字列を文脈として、次に出現する文字の符号が保持され、文脈付文字復元手段69は、文脈検索手段67で検索された符号から文字を復元する。
【0077】
図9は、本発明の第4実施例に係わるデータ圧縮方法を示す図である。この第4実施例は、被圧縮データを図3の方法で符号化するとともに、一致長で置き換えない部分については、LZ78方式で符号化するようにしたものである。
【0078】
図9において、被圧縮データとして、‘ababcdefabcdefgh・・・’という文字列が入力されたものとし、被圧縮データの各文字には、出現位置を示す入力番号が付されているものとする。また、n=3とし、過去の入力データの中から3文字列を検索し、4文字目から一致した部分との一致長で現在の入力データを符号化するものとする。
【0079】
また、文字‘a’〜‘h’を登録した辞書81が設けられ、各文字‘a’〜‘h’にはそれぞれ参照番号1〜8が付されているものとする。
まず、入力番号1の文字‘a’が入力された場合、辞書81を参照することにより、入力番号1の文字‘a’に対応する符号として、参照番号1を出力する。次に、入力番号2の文字‘b’が入力された場合、辞書81を参照し、入力番号2の文字‘b’に対応する符号として、参照番号2を出力する。ここで、入力番号1、2の文字列‘ab’が辞書81に登録され、辞書81が辞書82に更新される。そして、文字列‘ab’の参照番号として9が登録される。
【0080】
次に、入力番号3,4の文字列‘ab’が入力されると、辞書82を参照し、入力番号3、4の文字列‘ab’に対応する符号として、参照番号9を出力する。
【0081】
次に、入力番号5の文字‘c’が入力された場合、辞書82を参照し、入力番号5の文字‘c’に対応する符号として、参照番号3を出力する。ここで、入力番号3〜5の文字列‘abc’が辞書83に登録され、文字列‘abc’の参照番号として10が登録される。
【0082】
次に、入力番号6の文字‘d’が入力された場合、辞書82を参照し、入力番号6の文字‘d’に対応する符号として、参照番号4を出力する。次に、入力番号7の文字‘e’が入力された場合、辞書82を参照し、入力番号7の文字‘e’に対応する符号として、参照番号5を出力する。ここで、文字列‘de’が辞書83に登録され、参照番号として11が登録される。次に、入力番号8の文字‘f’が入力された場合、辞書82を参照し、入力番号8の文字‘f’に対応する符号として、参照番号6を出力する。ここで、文字列‘ef’が辞書83に登録され、参照番号として12が登録される。
【0083】
次に、入力番号9〜11の文字列‘abc’が入力された場合、入力番号9〜11の文字列‘abc’を、辞書83に登録されている参照番号10で符号化する。また、入力番号9〜11の文字列‘abc’は過去の入力番号3〜5の文字列‘abc’と一致し、n=3となるので、入力番号12以降の文字列を入力番号6以降の文字列との一致長で符号化する。この結果、入力番号6〜8の文字列‘def’と入力番号12〜14の文字列‘def’とが一致し、一致長k=3となるため、入力番号12〜14の文字列‘def’を一致長3で符号化する。
【0084】
次に、入力番号15の文字‘g’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、辞書83を参照し、入力番号15の文字‘g’に対応する符号として、参照番号7を出力する。次に、入力番号16の文字‘h’が入力された場合、それ以前に入力された文字のいずれとも一致しないので、辞書83を参照し、入力番号16の文字‘h’に対応する符号として、参照番号8を出力する。
【0085】
このように、初期的な辞書として出現可能な文字全てに符号を割り振ったものを持ち、順次符号化しながら辞書に登録していき、辞書に登録された文字/文字列で最長一致したものに割り振られた符号を出力する(LZ78符号)。また、過去に出現したn文字列と同じ文字列が出現したら(ポイント3)、n+1文字列以降の一致長を符号化して出力し、次はまた、LZ78符号に戻る。この一致した頭の部分をその文字列のまま扱って、LZ78方式または確率統計型方式で符号化することにより、次の符号が一致長符号であるか否かを示す符号を必要とせず、長い文字列の繰り返しには、一致長符号を用いた高い圧縮率を達成することが可能となるとともに、短い文字列の繰り返しには、LZ78方式や確率統計型方式の高い圧縮率をそのまま生かすことが可能となる。
【0086】
図10は、本発明の第4実施例に係わるデータ圧縮装置の構成を示すブロック図である。
図10において、入力バッファ91には、被圧縮データの既に圧縮済みの部分を格納するLempelバッファと、被圧縮データのこれから圧縮する部分を格納するZivバッファとが設けられ、出現位置保持手段93は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0087】
出現有無調査手段94は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段93に保持されているかどうかを調査し、その調査結果を切り替え手段92に伝える。切り替え手段92は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段95に取得させる。
【0088】
出現位置取得手段95がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長取得手段96は、Lempelバッファ内のその出現位置以降の文字列とZivバッファの先頭以降の文字列との一致長kを求める。一致長kが求まると、一致長符号化手段97は、Zivバッファの先頭以降の文字列のうち、その出現位置以降の文字列と一致する部分を一致長kで符号化する。
【0089】
一方、文字/文字列符号保持手段99には、長さ1〜mの文字または文字列に対応する符号が保持され、切り替え手段92が、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、文字/文字列検索手段98において、被圧縮データと最長一致する文字または文字列を文字/文字列符号保持手段99に保持されている文字または文字列から検索させる。そして、文字/文字列符号化手段100は、文字/文字列検索手段98で検索された文字または文字列を、文字/文字列符号保持手段99に保持されている符号に従って符号化する。
【0090】
なお、文字/文字列符号保持手段99に保持されている長さnの文字列を、出現位置保持手段93におけるn文字列の出現位置とリンクさせ、文字/文字列符号化手段100において符号化した文字または文字列の長さがnの場合、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていることを、出現有無調査手段94に通知するようにしてもよい。
【0091】
図11は、本発明の第4実施例に係わるデータ復元装置の構成を示すブロック図である。
図11において、出力バッファ111には、圧縮データの既に復元済みの部分を格納するLempelバッファと、圧縮データのこれから復元する部分を格納するZivバッファとが設けられ、出現位置保持手段113は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0092】
出現有無調査手段112は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段113に保持されているかどうかを調査し、その調査結果を切り替え手段111に伝える。切り替え手段111は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段114に取得させる。
【0093】
出現位置取得手段114がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長復元手段115は、入力符号から一致長kを復元する。一致長kが復元されると、コピー手段116は、Lempelバッファ内にあるn文字列に続くその一致長k分の文字列をコピーし、このコピー結果をZivバッファの直前のn文字列の次の符号の復元結果として出力バッファに出力する。
【0094】
一方、文字/文字列符号保持手段117には、長さ1〜mの文字または文字列に対応する符号が保持され、切り替え手段111が、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、文字/文字列復元手段118に対し、文字/文字列符号保持手段117に保持されている符号に従って、文字または文字列を復元させる。
【0095】
このように、直前n文字列が出現位置保持手段において保持されていない場合、そのまま出力するのではなく、確率統計型方式、またはLZ78方式で符号化することにより、被圧縮データ列中の短い文字列の繰り返しに対しては、LZ78方式、または確率統計型方式の高い圧縮率を得ることができ、長い文字列に対しても、一致長符号を用いた高い圧縮率を得ることができる。
【0096】
図12(a)は、本発明の第5実施例に係わる符号化方法を示す図である。
図12(a)において、入力データに対し、第1の符号化121を行った後、第2の符号化122を行うことにより、入力データの2段階の符号化を行う。
【0097】
ここで、第1の符号化121として、互いに一致する記号列の一部を一致長で符号化し、第2の符号化122として、第1の符号化121で符号化された記号列を確率統計型符号化方式でさらに符号化することができる。なお、確率統計型符号として、シャノン・ファノ符号、ハフマン符号、算術符号、Jones符号、適応型ハフマン符号、適応型算術符号、または文脈モデルを用いた上記符号などを用いることができる。
【0098】
また、第1の符号化121として、互いに一致する記号列の一部を一致長で符号化し、第2の符号化122として、第1の符号化121で符号化された記号列を辞書型符号化方式でさらに符号化することができる。なお、辞書型符号として、LZ78符号、LZW符号、LZC符号、LZY符号、LZT符号、またはLZFG符号などを用いることができる。
【0099】
図12(b)は、本発明の第5実施例に係わる復号化方法を示す図である。
図12(b)において、符号化データに対し、第1の復号化123を行った後、第2の復号化124を行うことにより、符号化データの2段階の復号を行う。図13は、本発明の第6実施例に係わるデータ圧縮装置の構成を示すブロック図である。この第6実施例は、被圧縮データを図3の方法で符号化し、この図3の方法で符号化されたデータをさらに文脈を利用した確率統計型方式で符号化するようにしたものである。
【0100】
図13において、入力バッファ131には、被圧縮データの既に圧縮済みの部分を格納するLempelバッファと、被圧縮データのこれから圧縮する部分を格納するZivバッファとが設けられ、出現位置保持手段133は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0101】
そして、出現有無調査手段134は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段133に保持されているかどうかを調査し、その調査結果を切り替え手段132に伝える。切り替え手段132は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段135に取得させる。
【0102】
出現位置取得手段135がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長取得手段136は、Lempelバッファ内のその出現位置以降の文字列とZivバッファの先頭以降の文字列との一致長kを求める。一致長kが求まると、一致長符号化手段137は、Zivバッファの先頭以降の文字列のうち、その出現位置以降の文字列と一致する部分を一致長kで符号化して、中間バッファ138に出力する。。
【0103】
一方、切り替え手段132は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、Zivバッファの先頭以降の文字列をそのまま中間バッファ138に出力する。
【0104】
中間バッファ138は、一致長符号化手段137から送られてきた一致長を表す符号を保持するとともに、切り替え手段132から送られてきた被圧縮データをそのまま保持する。
【0105】
文脈付文字符号保持手段139には、直前の0〜(m−1)文字列を文脈として、次に出現する文字の符号が保持され、文脈付文字検索手段140は、直前の0〜(m−1)文字列を文脈として、次に続く文字を文脈付文字符号保持手段139から検索する。文脈付文字符号化手段141は、文脈付文字検索手段140で文脈付き文字が検索されると、文脈付文字符号保持手段139に保持されている符号に従って、文脈付き文字を符号化する。
【0106】
図14は、本発明の第6実施例に係わるデータ復元装置の構成を示すブロック図である。
図14において、文脈付文字符号保持手段151には、直前の0〜(m−1)文字列を文脈として、次に出現する文字の符号が保持され、文脈検索手段152は、直前の0〜(m−1)文字列を文脈とする符号を文脈付文字符号保持手段151から検索する。文脈付文字復元手段153は、文脈付文字符号保持手段151から検索された符号から文字を復元する。
【0107】
中間バッファ154は、文脈付文字復元手段153で復元されたデータを保持する。出力バッファ161には、中間バッファ154に保持されているデータを入力データとした時の既に復元済みの部分を格納するLempelバッファと、中間バッファ154に保持されているデータを入力データとした時のこれから復元する部分を格納するZivバッファとが設けられ、出現位置保持手段157は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0108】
出現有無調査手段156は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段157に保持されているかどうかを調査し、その調査結果を切り替え手段155に伝える。切り替え手段155は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段158に取得させる。
【0109】
出現位置取得手段158がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長復元手段159は、中間バッファに保持された符号から一致長kを復元する。一致長kが復元されると、コピー手段160は、Lempelバッファ内にあるn文字列に続くその一致長k分の文字列をコピーし、このコピー結果をZivバッファの直前のn文字列の次の符号の復元結果として出力バッファに出力する。
【0110】
一方、切り替え手段155は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、中間バッファの文字列をそのまま出力する。
【0111】
図15は、本発明の第7実施例に係わるデータ圧縮装置の構成を示すブロック図である。この第7実施例は、被圧縮データを図3の方法で符号化し、この図3の方法で符号化されたデータをさらにLZ78方式で符号化するようにしたものである。
【0112】
図15において、入力バッファ171には、被圧縮データの既に圧縮済みの部分を格納するLempelバッファと、被圧縮データのこれから圧縮する部分を格納するZivバッファとが設けられ、出現位置保持手段173は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0113】
出現有無調査手段174は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段173に保持されているかどうかを調査し、その調査結果を切り替え手段172に伝える。切り替え手段172は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段175に取得させる。
【0114】
出現位置取得手段175がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長取得手段176は、Lempelバッファ内のその出現位置以降の文字列とZivバッファの先頭以降の文字列との一致長kを求める。一致長kが求まると、一致長符号化手段177は、Zivバッファの先頭以降の文字列のうち、その出現位置以降の文字列と一致する部分を一致長kで符号化して、中間バッファ178に出力する。
【0115】
一方、切り替え手段172が、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、Zivバッファの先頭以降の文字列をそのまま中間バッファ178に出力する。
【0116】
中間バッファ178は、一致長符号化手段177から出力された一致長を表す符号を保持するとともに、切り替え手段172から出力された被圧縮データをそのまま保持する。
【0117】
文字/文字列符号保持手段179は、長さ1〜mの文字または文字列と対応する符号を保持し、文字/文字列検索手段180は、中間バッファ178に保持されているデータと最長一致する文字または文字列を文字/文字列符号保持手段179に保持されている文字または文字列から検索する。
【0118】
文字/文字列符号化手段181は、文字/文字列検索手段180で検索された文字または文字列を、文字/文字列符号保持手段179に保持されている符号に従って符号化する。
【0119】
図16は、本発明の第7実施例に係わるデータ復元装置の構成を示すブロック図である。
図16において、文字/文字列符号保持手段191には、長さ1〜mの文字または文字列に対応する符号が保持され、文字/文字列復元手段192は、文字/文字列符号保持手段191に保持されている符号に従って、文字または文字列を復元する。中間バッファ193は、文字/文字列復元手段192で復元されたデータを保持する。
【0120】
出力バッファ200には、中間バッファ193に保持されているデータを入力データとした時の既に復元済みの部分を格納するLempelバッファと、中間バッファ193に保持されているデータを入力データとした時のこれから復元する部分を格納するZivバッファとが設けられ、出現位置保持手段196は、Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する。
【0121】
出現有無調査手段195は、Zivバッファの直前のn文字列と同じ文字列の出現位置が出現位置保持手段196に保持されているかどうかを調査し、その調査結果を切り替え手段194に伝える。切り替え手段194は、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されているという通知を受け取った場合、Zivバッファの直前のn文字列と同じ文字列の出現位置を出現位置取得手段197に取得させる。
【0122】
出現位置取得手段197がZivバッファの直前のn文字列と同じ文字列の出現位置を取得すると、一致長復元手段198は、中間バッファの符号から一致長kを復元する。一致長kが復元されると、コピー手段199は、Lempelバッファ内にあるn文字列に続くその一致長k分の文字列をコピーし、このコピー結果をZivバッファの直前のn文字列の次の符号の復元結果として出力バッファに出力する。
【0123】
一方、切り替え手段194が、Zivバッファの直前のn文字列と同じ文字列の出現位置が保持されていないという通知を受け取った場合、中間バッファの文字列をそのまま出力する。
【0124】
このように、直前n文字列が出現位置保持手段において保持されている場合、一致長で符号化したデータを一旦中間バッファに保持し、確率統計型方式、またはLZ78方式によってさらに符号化することにより、既存の圧縮アプリケーションをそのまま利用して、長い文字列に効果的に符号を割り当てることができる。
【0125】
なお、確率統計型方式、またはLZ78方式に使用する符号は、予め定めた符号を最初から最後まで使用する静的符号化でもいいし、また符号化したデータに従って順次符号を更新する動的符号化でもどちらでもよい。
【0126】
以上説明したように、上述した実施例では、次の符号が一致長符号であるか否かを示す符号を不要とすることができる。また、LZ78方式及び確率統計型符号化方式をベースに、長い文字列が繰り返された場合のみLZ77方式と同様に過去の文字列との一致長を符号として出力することができるので、長い文字列の繰り返しの場合には一致長符号による高い圧縮率を達成することが可能となるとともに、短い文字列の繰り返しにはLZ78方式または確率統計型方式による高い圧縮率を達成することが可能となり、短い文字列及び長い文字列の双方に対して高い圧縮率を得ることが可能となる。
【0127】
図17は、本発明の第8実施例に係わる符号化装置の構成を示すブロック図である。図2の実施例では、直前の長さnの記号列をキーに、過去に同じ記号列が出現した場合に、続く記号列を一致長符号で符号化している。この場合、長さnの記号列の過去の出現位置の検索の時間が符号化処理の大半を占める。そこで、この第8実施例では、長さnの過去の記号列の出現位置をコード化して記憶しておき、この記憶結果から長さnの過去の記号列の出現位置を求めるようにしている。このことにより、長さnの記号列の過去の出現位置の検索の時間を短縮することができる。
【0128】
図17において、出現位置記憶手段211は、入力された記号列の出現位置をコード化して記憶する。出現位置検索手段212は、所定の長さnの第1の記号列に対応するコードが出現位置記憶手段211に記憶されているかどうかを調べ、そのコードが記憶されている場合、そのコードに関連づけられた第2の記号列の出現位置を取得する。ここで、第1の記号列と第2の記号列とは必ずしも一致している必要はなく、第1の記号列から第2の記号列の出現位置を特定できれば、第1の記号列と第2の記号列とは異なっていてもよい。ただし、第1の記号列と第2の記号列とが一致している方が、圧縮率を高くすることができる。これは、第1の記号列と第2の記号列とが一致している場合、第1の記号列に続く第3の記号列と第2の記号列に続く第4の記号列との一致長kがより長くなる確率が高くなるからである。
【0129】
第2の記号列の出現位置が見つかると、一致長検出手段213は、第2の記号列に続く第4の記号列を第1の記号列に続く第3の記号列と比較することにより、第4の記号列と第3の記号列との一致長kを検出する。一致長kが検出されると、一致長符号化手段214は第3の記号列を一致長kで符号化する。
【0130】
図18は、本発明の第8実施例に係わる符号化方法を示す図である。
図18において、入力データが入力されると、長さnの記号列に対してハッシュコードを割り当て、記号列の出現位置を記憶部215に記憶しておく。ここで、過去に出現した長さnの第2の記号列に対してハッシュコードBが割り当てられ、そのハッシュコードBに対応して第2の記号列の出現位置Aが記憶部215に記憶されているものとする。
【0131】
次に、長さnの第1の記号列が入力されると、第1の記号列に対応するハッシュコードを生成し、第1の記号列に対応するハッシュコードが記憶部215に記憶されているかどうか調べる。ここで、第1の記号列に対してハッシュコードBが割り当てられているものとすると、ハッシュコードBに対応して記憶されている出現位置Aを記憶部215から読み出す。出現位置Aが求まると、第1の記号列以降の第3の記号列と出現位置A以降の第4の記号列との一致長kを求め、第3の記号列を一致長kで符号化する。
【0132】
ここで、第1の記号列及び第2の記号列は、第3の記号列を一致長kで符号化するために用いる第4の記号列の位置を特定するために用いられており、第1の記号列及び第2の記号列を用いて、第3の記号列を一致長kで符号化するために用いる第4の記号列の位置を特定できればよく、第1の記号列と第2の記号列とは必ずしも一致している必要はない。
【0133】
図19は、本発明の第9実施例に係わるデータ圧縮方法を示す図である。この第9実施例では、これから符号化する文字列の直前の3文字からハッシュコードを生成し、得られたハッシュコードから比較に用いる過去の文字列の出現位置を求めるようにしている。
【0134】
図19において、被圧縮データとして、‘abcdefabqaabcdaabdeabcdaaaq・・・’という文字列が入力されたものとし、‘abcdefabqaabcdaabdeabc’の部分が既に符号化されているものとする。この場合、符号化済みの文字列のうちウインドウ221内の3文字からハッシュコードを生成し、符号化済みの3文字ごとの出現位置を格納部226に記憶しておく。例えば、‘abc’という文字列222に対応して、ハッシュコードBがハッシュコード生成部224で生成され、ハッシュコードBに対応して出現位置Aが格納部226に格納されているものとする。
【0135】
次に、符号化済みの文字列以降の文字列‘daaaq・・・’を符号化するため、これから符号化する文字列‘daaaq・・・’の直前の‘abc’という3文字223に注目し、‘abc’という3文字223のハッシュコードを求める。ここで、‘abc’という3文字にはハッシュコードBが割り当てられているので、‘abc’という3文字223のハッシュコードとしてハッシュコードBが生成される。
【0136】
次に、ハッシュコードBが格納部226に格納されているかどうかを調べ、ハッシュコードBが格納部226に格納されている場合、そのハッシュコードBに対応した出現位置を求める。ここでは、ハッシュコードBは既に格納部226に格納されているので、‘abc’という3文字223に対応する過去の3文字222の出現位置として出現位置Aが求まる。出現位置Aが求まると、これから符号化する文字列‘daaaq・・・’と出現位置A以降の文字列‘daabdeabc’とを比較し、これらの文字列の一致長を求める。ここでは、‘daa’という3文字分が一致しているので、一致長は3となる。一致長3が求まると、これから符号化する文字列‘daa’の部分を一致長3で符号化する。
【0137】
このように、過去の文字列222の出現位置をハッシュコードBと関連づけて記憶しておき、ハッシュ検索により文字列223に対応する過去の文字列222の出現位置を求めることにより、過去の文字列222の出現位置の探索時間を短縮することが可能となる。
【0138】
なお、ハッシュ検索では、同じハッシュコードが生成される文字列が複数ある。つまり、ハッシュコードと関連づけられた過去の出現位置の文字列と、ハッシュコードを生成した元の文字列と、異なる場合がある(異なる文字列から同じハッシュコードが生成されることを衝突という)。このため、通常、ハッシュ検索を使用するときは、元のキーと一致するかどうか確認を行う。しかし、この実施例では、ハッシュ検索は次の文字列を一致長符号で符号化するか否かのキーとして使用しており、ハッシュ検索に用いた文字列は一致長の符号の中に含まれないため、元のキーと一致しなくてもよい。このため、ハッシュ検索による処理速度の向上に加え、一致確認の処理を省くことによるさらなる処理速度の改善を行うことができる。
【0139】
ただし、元のキーと完全に一致していた方が圧縮率は高い。このため、直前m文字の一致確認を取るようにしてもよい。例えば、ハッシュコードの生成に使用する直前文字列の長さnを3文字、ハッシュでの衝突のための一致確認に使用する直前文字列の長さmを2文字とすることができる。
【0140】
また、異なる文字列には異なるハッシュコードを割り当てるようにして、衝突が起こることを防止するようにしてもよい。
図20は、本発明の第10実施例に係わるデータ圧縮方法を示すフローチャートである。この第10実施例では、一致長で符号化する文字列に対応する過去の文字列の出現位置をハッシュ検索で求め、ハッシュ検索に失敗した場合は、その文字列を統計型符号またはLZ78符号で符号化するものである。
【0141】
図20において、過去のn文字列の出現位置をハッシュコード化して記憶する配列アドレスを初期化する(ステップS1)。次に、これから符号化しようとする文字列の直前のn文字列のハッシュコードを生成し(ステップS2)、そのハッシュコードに対応した出現位置が配列アドレスに格納されているかどうかを調べる(ステップS3)。ここで、そのハッシュコードに対応した出現位置が配列アドレスに格納されている場合、これから符号化しようとする文字列の直前のn文字列に対応する過去のn文字列の出現位置を、配列アドレスから得る。そして、それらのn文字列以降の文字列の一致長を調べ、これから符号化しようとする文字列をその一致長で符号化する(ステップS4)。
【0142】
一方、そのハッシュコードに対応した出現位置が配列アドレスに格納されていない場合、これから符号化しようとする文字または文字列を統計型符号またはLZ78符号で符号化する(ステップS5)。
【0143】
次に、符号化した文字列の直前のn文字列のハッシュコードに対応させて、そのn文字列の出現位置を配列アドレスに格納する(ステップS6)。次に、入力データの最後まで符号化処理が終了したかどうかを判断し(ステップS7)、符号化処理が終了していない場合、ステップS2に戻って、以上の処理を繰り返す。
【0144】
このように、一致長で符号化する文字列に対応する過去の文字列の出現位置をハッシュ検索で求めることにより、文字列検索時間を短縮することができ、実用レベルの処理速度を実現することができる。
【0145】
図21は、本発明の第11実施例に係わるデータ圧縮方法を示すフローチャートである。図20の実施例では、これから符号化しようとする文字列の直前のn文字列と、そのn文字列に対応する過去のn文字列との一致を確認することなく、一致長による符号化を行う場合について示したが、図21の実施例では、直前p文字の一致確認を取る場合を示す。なお、図21の実施例のステップS1〜S7の処理は、図20の実施例と同様の処理を行うので説明は省略し、図20の実施例と異なる部分についてのみ説明する。
【0146】
図21において、これから符号化しようとする文字列の直前のn文字列のハッシュコードが配列アドレスに格納されている場合(ステップS3)、これから符号化しようとする文字列の直前のp文字列と、ハッシュ検索により検索された出現位置の過去のp文字列とが一致するかどうかを調べる(ステップS11)。そして、これから符号化しようとする文字列の直前のm文字列と、ハッシュ検索により検索された出現位置の過去のp文字列とが一致する場合、これから符号化しようとする文字列を一致長で符号化する(ステップS4)。一方、これから符号化しようとする文字列の直前のp文字列と、ハッシュ検索により検索された出現位置の過去のp文字列とが一致しない場合、これから符号化しようとする文字または文字列を統計型符号またはLZ78符号で符号化する(ステップS5)。
【0147】
このように、一致長で符号化する文字列を探索するための文字列と過去の文字列との一致を確認することにより、一致長のより長い過去の文字列を探索することが可能となり、圧縮率を向上させることが可能となる。
【0148】
なお、n=3、p=2に設定することが望ましく、このような値に設定することにより、探索時間が長くなることを抑制しながら、圧縮率を向上させることが可能となる。
【0149】
図22は、本発明の第12実施例に係わるデータ圧縮方法を示すフローチャートである。上述した実施例では、これから符号化しようとする文字列の直前のn文字列を用いることにより過去の文字列を探索し、過去の文字列と一致する部分を一致長で符号化する場合について説明した。しかし、繰り返される文字列の長さが丁度nのものが多い場合、一致長0を示す符号が多く付加され、圧縮率が低下する。そこで、図22の実施例では、過去の文字列の検索に用いるn文字列に続く文字列が、過去の文字列と全く一致しなかった場合(この場合、一致長=0)、次にその文字列が出現しても、その文字列を一致長で符号化しないようにする。このことにより、一致長0を示す符号が付加されることを防止することが可能となり、圧縮率が低下することを防止することが可能となる。
【0150】
図22において、過去のn文字列の出現位置をハッシュコード化して記憶する配列アドレスを初期化し(ステップS21)、これから符号化しようとする文字列の直前のn文字列のハッシュコードを生成する(ステップS22)。次に、そのハッシュコードで特定される配列アドレスの内容が‘NOT_LEN’かどうかを調べ、配列アドレスの内容が‘NOT_LEN’の場合、これから符号化しようとする文字または文字列を統計型符号またはLZ78符号で符号化する(ステップS24)。一方、配列アドレスの内容が‘NOT_LEN’でない場合、そのハッシュコードに対応した出現位置が配列アドレスに格納されているかどうかを調べる(ステップS25)。ここで、そのハッシュコードに対応した出現位置が配列アドレスに格納されている場合、これから符号化しようとする文字列の直前のn文字列に対応する過去のn文字列の出現位置を、配列アドレスから得る。そして、それらのn文字列以降の文字列の一致長を調べ、これから符号化しようとする文字列をその一致長で符号化する(ステップS26)。
【0151】
一方、そのハッシュコードに対応した出現位置が配列アドレスに格納されていない場合、これから符号化しようとする文字または文字列を統計型符号またはLZ78符号で符号化する(ステップS27)。
【0152】
次に、ステップS26で算出された一致長が0かどうかを調べ(ステップS28)、一致長が0の場合、そのハッシュコードで特定される配列アドレスに‘NOT_LEN’を格納する(ステップS29)。一方、一致長が0でない場合、そのハッシュコードで特定される配列アドレスにn文字列の出現位置を格納する(ステップS30)。次に、入力データの最後まで符号化処理が終了したかどうかを判断し(ステップS31)、符号化処理が終了していない場合、ステップS22に戻って、以上の処理を繰り返す。
【0153】
なお、上述した実施例では、一致長が0の場合にのみ一致長による符号化を行わないようにしたが、一致長は0以外の値でもよい。
また、現在の文字列と過去の文字列との一致長が所定の値以上かどうかを判別し、現在の文字列と過去の文字列との一致長が長い場合には、LZ77符号で符号化を行い、現在の文字列と過去の文字列との一致長が短い場合には、LZ78符号または確率統計型符号で符号化を行うようにしてもよい。
【0154】
図23は、本発明の第13実施例に係わるデータ圧縮方法を示すフローチャートである。図22の実施例では、n文字列以降の一致長が0の場合、次にそのn文字列が出現しても、それ以降の文字列を一致長で符号化しない場合について説明した。しかし、同じ文字の繰返し(例えば、‘0000’や‘FFFF’など)が長く続く可能性が高いデータには、一致長による符号化に制限を加えない方がよい。そこで、図23の実施例では、直前文字列が同じ文字の繰り返しからなっている場合には、一致長符号への切替えを制限しない場合を示す。このことにより、同じ文字の繰り返しが長く続く可能性の高いデータに対して圧縮率を向上させることが可能となる。なお、図23の実施例のステップS21〜S31の処理は、図22の実施例と同様の処理を行うので説明は省略し、図22の実施例と異なる部分についてのみ説明する。
【0155】
図23において、ステップS28で一致長が0と判断された場合、これから符号化しようとする文字列の直前文字と直々前文字とが一致するかどうかを調べる(ステップS41)。そして、直前文字と直々前文字とが不一致の場合、その文字列のハッシュコードで特定される配列アドレスに‘NOT_LEN’を格納する(ステップS29)。一方、直前文字と直々前文字とが一致する場合、その文字列のハッシュコードで特定される配列アドレスにn文字列の出現位置を格納する(ステップS30)。
【0156】
なお、図23の実施例では、これから符号化しようとする文字列の直前の長さ2の文字列の文字が同じ時に一致長符号への切替えを制限しない場合について説明したが、直前の文字列の長さは2以上でもよい。
【0157】
図24は、本発明の第14実施例に係わるデータ圧縮装置の構成を示すブロック図である。通常、確率統計型符号化方式を用いてデータ圧縮を行う場合、長さ5の文字列を最大文脈(5次文脈と呼ぶ)とすると最も圧縮率がよい(例えば、上記文献“Unbounded Length Contexts for PPM”を参照)。しかし、5次文脈を取ると処理速度が遅い。そこで、図24の実施例では、一致長符号と固定1次文脈の確率統計型符号化方式を組合せて符号化を行う。一致長符号と固定1次文脈の確率統計型符号化方式とを組合せることにより、確率統計型符号化方式の圧縮対象を2文字列〜3文字列と短い文字列に絞って処理を簡略しても、高い圧縮率を得ることが可能となるとともに、5次文脈のみを用いて符号化を行う場合に比べて、処理速度を改善することが可能となる。
【0158】
図24において、統計型符号化部231と一致長符号化部237とが設けられている。統計型符号化部231は固定1次文脈を用いて符号化を行うもので、直前文字に対応した256個の符号テーブル233〜235が符号テーブル保持部232に保持されている。
【0159】
元データは、統計型符号化部231及び一致長符号化部237に入力される。ここで、統計型符号化部231は、元データが入力されると、入力された文字列の直前文字に対応した符号テーブル233〜235を選択する。そして、符号化部236は、選択された符号テーブル233〜235に登録されている符号でその文字列を符号化して出力する。また、一致長符号化部237は、元データが入力されると、入力された文字列を一致長で符号化して出力する。
【0160】
なお、図24の例では、符号テーブル233〜235が1バイト256種類全ての文字に対応して設けられているが、直前文字から抜き出した特徴に対応させて符号テーブルを設けることにより、符号テーブルの数を減らしてもよい。例えば、文字データの最上位ビットを除き、文字データの残り7ビットに対応させて符号テーブルを設けるようにしてもよい。
【0161】
図25は、本発明の一実施例に係わる符号化装置及び復号化装置(またはデータ圧縮装置及びデータ復元装置)のシステム構成を示すブロック図である。
図25おいて、241は全体的な処理を行う中央演算処理ユニット(CPU)、242はリードオンリメモリ(ROM)、243はランダムアクセスメモリ(RAM)、244は通信インターフェイス、245は通信ネットワーク、246は入出力インターフェイス、247は文書データなどを表示するディスプレイ、248は文書データなどを印刷するプリンタ、249はスキャナ250により読み取られた文書データなどを一時的に格納するメモリ、250は入力画像などを読み取るスキャナ、251はキーボード、252はマウスなどのポインティングデバイス、253は記憶媒体を駆動するドライバ、254はハードディスク、255はICメモリカード、256は磁気テープ、257はフロッピーディスク、258はCD−ROMやDVD−ROMなどの光ディスク、259はバスである。
【0162】
データ圧縮を行うプログラム、データ復元を行うプログラム、被圧縮データ及び圧縮データなどは、ハードディスク254、ICメモリカード255、磁気テープ256、フロッピーディスク257、光ディスク258などの記憶媒体に格納される。そして、データ圧縮を行うプログラム及び被圧縮データを、これらの記憶媒体からRAM243に読み出すことにより、データ圧縮を行うことができる。また、データ復元を行うプログラム及び圧縮データを、これらの記憶媒体からRAM243に読み出すことにより、データ復元を行うことができる。また、データ圧縮を行うプログラム及びデータ復元を行うプログラムなどを、ROM242に格納しておくこともできる。
【0163】
さらに、データ圧縮を行うプログラム、データ復元を行うプログラム、被圧縮データ及び圧縮データなどを、通信インターフェイス244を介して通信ネットワーク245から取り出すこともできる。通信インターフェイス244に接続される通信ネットワーク245として、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、アナログ電話網、デジタル電話網(ISDN:Integral Service Digital Network)、PHS(パーソナルハンディシステム)や衛星通信などの無線通信網を用いることができる。
【0164】
CPU241は、データ圧縮を行うプログラムが起動されると、ハードディスク254などの記憶媒体、または通信ネットワーク245などから被圧縮データを取得する。そして、取得した被圧縮データを図3、図6、図9、図19〜図23などに示した方法で圧縮し、この圧縮されたデータをハードディスク254などの記憶媒体に格納したり、通信ネットワーク245を介して送信したりする。
【0165】
ここで、データ圧縮を行うことにより、ハードディスク254などの記憶媒体にデータを格納する際の記憶容量を低減したり、通信ネットワーク245を介してデータを送信する際の送信時間を低減したりすることが可能となる。
【0166】
また、過去に出現した記号列をハッシュコード化してRAM243に記憶しておき、一致長による符号化を行う際に参照する過去の記号列の探索をハッシュ検索により行うことにより、圧縮時間を短縮することが可能となる。
【0167】
また、CPU241は、データ復元を行うプログラムが起動されると、ハードディスク254などの記憶媒体、または通信ネットワーク245などから圧縮データを取得する。そして、取得した圧縮データを復元し、この復元したデータをハードディスク254などの記憶媒体に格納したり、通信ネットワーク245を介して送信したり、ディスプレイ247に表示させたり、プリンタ248で印刷させたりする。
【0168】
【発明の効果】
以上説明したように、本発明によれば、一致する記号列の一部を一致長で符号化することにより、長い記号列が繰り返し出る入力データを効率よく圧縮することが可能となるとともに、一致する記号列の残りの部分を用いて一致位置を検出することが可能となり、一致位置を検出するための符号を新たに挿入する必要がなくなることから、短い記号列が繰り返し出る入力データを一致長で符号化する場合においても、一致位置を検出するための符号が多数挿入されて、圧縮効率が悪化することを防止することが可能となる。
【0169】
また、本発明の一態様によれば、一致する記号列の一部を一致長で符号化し、一致長で符号化されない部分については、直前の記号列を文脈とした時の次に出現する記号の符号を用いて符号化することにより、長い記号列が繰り返し出る入力データに対しては、一致する部分を一致長で符号化することが可能となるとともに、短い記号列が繰り返し出る入力データに対しては、出現確率の高い記号に短い符号長を割り振ることによって符号化を行うことが可能となり、長い記号列が繰り返し出るデータに対しても、短い記号列が繰り返し出るデータに対しても、高い圧縮率を達成することが可能となる。
【0170】
また、本発明の一態様によれば、一致する記号列の一部を一致長で符号化し、一致長で符号化されない部分については、過去に出現した記号列を符号語に対応させて登録した辞書から、現在の記号列に対応する符号語を検索することにより、符号化を行うことにより、長い記号列が繰り返し出る入力データに対しては、一致する部分を一致長で符号化することが可能となるとともに、短い記号列が繰り返し出る入力データに対しては、LZ78方式によって符号化を行うことが可能となり、長い記号列が繰り返し出るデータに対しても、短い記号列が繰り返し出るデータに対しても、高い圧縮率を達成することが可能となる。
【0171】
また、本発明の一態様によれば、一致する記号列の一部を一致長で符号化し、その符号化されたデータに対し、直前の記号列を文脈とした時の次に出現する記号の符号を用いてさらに符号化を行うことにより、長い記号列が繰り返し出る入力データに対しては、一致する部分を一致長で符号化することが可能となることから、長い記号列が繰り返し出るデータを効率よく圧縮することが可能となるとともに、その圧縮データに短い記号列が繰り返し出現する場合、出現確率の高い記号に短い符号長を割り振ることによってその圧縮データをさらに圧縮することが可能となり、高い圧縮率を達成することが可能となる。
【0172】
また、本発明の一態様によれば、一致する記号列の一部を一致長で符号化し、その符号化されたデータに対し、過去に出現した記号列を符号語に対応させて登録した辞書から、現在の記号列に対応する符号語を検索することにより、さらに符号化を行うことにより、長い記号列が繰り返し出る入力データに対しては、一致する部分を一致長で符号化することが可能となることから、長い記号列が繰り返し出るデータを効率よく圧縮することが可能となるとともに、その圧縮データをLZ78方式によってさらに圧縮することが可能となり、長い記号列が繰り返し出るデータに対しても、短い記号列が繰り返し出るデータに対しても、高い圧縮率を達成することが可能となる。
【0173】
また、本発明の一態様によれば、一致長の比較対象となる過去の記号列の出現位置を調べるための検索に使用する記号列の出現位置を記憶しておくことにより、一致する記号列が見つかるまで過去の記号列を1つ1つさかのぼることなく、一致長の比較対象となる過去の記号列を見つけることが可能となり、一致長による符号化処理及び復号化処理を高速化することが可能となる。
【0174】
また、本発明の一態様によれば、一致長の長さが所定値以下の記号列の一致長による符号化を行わないようにすることにより、一致長の長さが短い場合には、一致長による符号化を行うことによって、却って圧縮率が低下することを防止することが可能となり、一致長による符号化の圧縮率を改善することが可能となる。
【図面の簡単な説明】
【図1】本発明の第1実施例に係わる符号化装置の構成を示すブロック図である。
【図2】本発明の第1実施例に係わる符号化方法及び復号化方法を示す図である。
【図3】本発明の第2実施例に係わるデータ圧縮方法を示す図である。
【図4】本発明の第2実施例に係わるデータ圧縮装置の構成を示すブロック図である。
【図5】本発明の第2実施例に係わるデータ復元装置の構成を示すブロック図である。
【図6】本発明の第3実施例に係わるデータ圧縮方法を示す図である。
【図7】本発明の第3実施例に係わるデータ圧縮装置の構成を示すブロック図である。
【図8】本発明の第3実施例に係わるデータ復元装置の構成を示すブロック図である。
【図9】本発明の第4実施例に係わるデータ圧縮方法を示す図である。
【図10】本発明の第4実施例に係わるデータ圧縮装置の構成を示すブロック図である。
【図11】本発明の第4実施例に係わるデータ復元装置の構成を示すブロック図である。
【図12】本発明の第5実施例に係わる符号化方法及び復号化方法を示す図である。
【図13】本発明の第6実施例に係わるデータ圧縮装置の構成を示すブロック図である。
【図14】本発明の第6実施例に係わるデータ復元装置の構成を示すブロック図である。
【図15】本発明の第7実施例に係わるデータ圧縮装置の構成を示すブロック図である。
【図16】本発明の第7実施例に係わるデータ復元装置の構成を示すブロック図である。
【図17】本発明の第8実施例に係わる符号化装置の構成を示すブロック図である。
【図18】本発明の第8実施例に係わる符号化方法を示す図である。
【図19】本発明の第9実施例に係わるデータ圧縮方法を示す図である。
【図20】本発明の第10実施例に係わるデータ圧縮方法を示すフローチャートである。
【図21】本発明の第11実施例に係わるデータ圧縮方法を示すフローチャートである。
【図22】本発明の第12実施例に係わるデータ圧縮方法を示すフローチャートである。
【図23】本発明の第13実施例に係わるデータ圧縮方法を示すフローチャートである。
【図24】本発明の第14実施例に係わるデータ圧縮装置の構成を示すブロック図である。
【図25】本発明の一実施例に係わる符号化装置及び復号化装置のシステム構成を示すブロック図である。
【図26】従来のLZ77符号を用いた符号化方法を示す図である。
【符号の説明】
1 記号列検出手段
2 一致長検出手段
3 符号化手段
11、41、91、131、171 入力バッファ
12、21、42、61、92、111、132、155、172 切り替え手段
13、23、43、63、93、113、133、157、173、196
出現位置保持手段
14、22、44、62、94、112、134、156、174、195
出現有無調査手段
15、24、45、64、95、114、135、158、175、197
出現位置取得手段
16、46、96、136、176 一致長取得手段
17、47、97、137、177 一致長符号化手段
18、28 Lempelバッファ
19、29 Zivバッファ
25、65、115、159、198 一致長復元手段
26、66、116、160、199 コピー手段
27、70、119、161、200 出力バッファ
48、140 文脈付文字符号検索手段
49、68、139、151 文脈付文字符号保持手段
50、141 文脈付文字符号化手段
67、152 文脈検索手段
69、153 文脈付文字復元化手段
98、180 文字/文字列検索手段
99、117、179、191 文字/文字列符号保持手段
100、181 文字/文字列符号化手段
118、192 文字/文字列復元化手段
121 第1の符号化
122 第2の符号化
123 第1の復号化
124 第2の復号化
138、154、178、193 中間バッファ
211 出現位置記憶手段
212 出現位置検索手段
213 一致長検出手段
214 一致長符号化手段
241 CPU
242 ROM
243 RAM
244 通信インターフェイス
245 通信ネットワーク
246 入出力インターフェイス
247 ディスプレイ
248 プリンタ
249 メモリ
250 スキャナ
251 キーボード
252 ポインティングデバイス
253 ドライバ
254 ハードディスク
255 ICメモリカード
256 磁気テープ
257 フロッピーディスク
258 光ディスク
259 バス

Claims (32)

  1. 記号列の中から所定の長さの第1の記号列に一致する第2の記号列を検出する記号列検出手段と、
    前記第1の記号列に続く第3の記号列と前記第2の記号列に続く第4の記号列との一致長を検出する一致長検出手段と、
    前記第1と第2の記号列の対応関係に基づき、第3の記号列の符号語として第4の記号列との一致長を用いることで、前記入力された記号列の符号化を行う符号化手段とを備えることを特徴とする符号化装置。
  2. 記号列の出現位置を所定のコードに関連付けて記憶する出現位置記憶手段と、
    第1の記号列に対応するコードに関連づけられた第2の記号列の出現位置を前記出現位置記憶手段から検索する出現位置検索手段と、
    前記第1の記号列に続く第3の記号列と前記第2の記号列に続く第4の記号列との一致長を検出する一致長検出手段と、
    前記第4の記号列は、第2の記号列の出現位置に第2の記号列の長さを足した位置から、(前記一致長・1)だけ移動した範囲に相当することにより、
    前記一致長検出手段で検出された一致長を符号化することにより、前記第3の記号列の符号化を行う一致長符号化手段とを備えることを特徴とする符号化装置。
  3. 前記一致長の長さが所定値以下の場合、その記号列については一致長による符号化を行わないようにすることを特徴とする請求項1または2に記載の符号化装置。
  4. 所定の長さの第1の記号列に続く第3の記号列の一致長に基づいて符号化された符号化データを取得する符号化データ取得手段と、
    前記第1の記号列と一致する第2の記号列を検出する記号列検出手段と、
    前記第1の記号列を示す符号に続く符号から一致長を求め、前記第2の記号列に続く前記一致長分の第4の記号列を前記第3の記号列として復号する復号手段とを備えることを特徴とする復号化装置。
  5. 所定の長さの第1の記号列に続く第3の記号列の一致長に基づいて符号化された符号化データを取得する符号化データ取得手段と、
    復号化された記号列の出現位置を所定のコードに関連づけて記憶する出現位置記憶手段と、
    前記第1の記号列に対応するコードに関連づけられた第2の記号列の出現位置を前記出現位置記憶手段から検索する出現位置検索手段と、
    前記第1の記号列を示す符号に続く符号から一致長を求め、前記第2の記号列に続く前記一致長分の第4の記号列を前記第3の記号列として復号する復号手段とを備えることを特徴とする復号化装置。
  6. 記号列を入力する入力手段と、
    入力された記号列の中から所定の長さの第1の記号列に一致する第2の記号列を検出する第1の記号列検出手段と、
    前記第1の記号列に続く第3の記号列と前記第2の記号列に続く第4の記号列との一致長を検出する一致長検出手段と、
    前記記号列検出手段で検出された記号列及び前記一致長検出手段で検出された一致長に基づいて、前記入力された記号列の符号化を行う符号化手段と、
    前記符号化手段で符号化された符号化データを送信する符号化データ送信手段と、
    前記第1の記号列及び前記第3の記号列の一致長に基づいて符号化された符号化データを受信する符号化データ受信手段と、
    前記第1の記号列と一致する前記第2の記号列を前記符号化データの復号結果から検出する第2の記号列検出手段と、
    前記第2の記号列に続く前記第4の記号列を、前記第3の記号列として復号する復号手段とを備えることを特徴とするデータ伝送装置。
  7. 被圧縮データ列を保持する入力バッファを持ち、前記入力バッファにおいて既に圧縮済みの部分をLempelバッファ、前記入力バッファのこれから圧縮する部分を格納している部分をZivバッファとしたときに、
    前記Lempelバッファ内にあるn(n≧1)文字列の出現位置の一部もしくは全てを保持する出現位置保持手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の出現位置が前記出現位置保持手段に保持されているかどうか調査する出現有無調査手段と、
    前記出現位置保持手段に前記出現位置が保持されている場合、前記Zivバッファの直前のn文字列と同じ文字列の出現位置を前記出現位置保持手段から取得する出現位置取得手段と、
    前記出現位置以降の文字列とZivバッファの先頭以降の文字列との一致長を検出する一致長検出手段と、
    前記出現有無調査手段において、前記Zivバッファの直前n文字列の出現位置の保持が確認された場合、前記出現位置以降の文字列と一致する部分を前記一致長で符号化する一致長符号化手段とを備えることを特徴とするデータ圧縮装置。
  8. 直前の0〜(m−1)(m≧1)文字列を文脈として、次に出現する文字の符号を保持する文脈付文字符号保持手段と、
    直前の0〜(m−1)文字列を文脈として、次に続く文字を前記文脈付文字符号保持手段から検索する文脈付文字検索手段と、
    前記文脈付文字検索手段で検索された文字を、前記文脈付文字符号保持手段に保持されている符号に従って符号化する文脈付文字符号化手段と、
    前記一致長符号化手段による符号化と前記文脈付文字符号化手段による符号化とを切り替える切り替え手段とを備えることを特徴とする請求項7に記載のデータ圧縮装置。
  9. 長さがn−1の文脈と次に続く文字とを合わせたn文字列を、前記出現位置保持手段におけるn文字列の出現位置とリンクさせるリンク手段と、
    前記文脈付文字符号化手段において符号化した文字の文脈の長さがn−1かどうかを調査する文脈長調査手段と、
    前記文脈の長さがn−1の場合、前記出現位置保持手段に前記出現位置が保持されていることを、前記出現有無調査手段に通知する通知手段とを備えることを特徴とする請求項8に記載のデータ圧縮装置。
  10. 長さ1〜mの文字または文字列に対応する符号を保持する文字/文字列符号保持手段と、
    前記被圧縮データと最長一致する文字または文字列を前記文字/文字列符号保持手段に保持されている文字または文字列から検索する文字/文字列検索手段と、
    前記文字/文字列検索手段で検索された文字または文字列を、前記文字/文字列符号保持手段に保持されている符号に従って符号化する文字/文字列符号化手段と、
    前記一致長符号化手段による符号化と前記文字/文字列符号化手段による符号化とを切り替える切り替え手段とを備えることを特徴とする請求項7に記載のデータ圧縮装置。
  11. 前記文字/文字列符号保持手段に保持されているn文字列を、前記出現位置保持手段におけるn文字列の出現位置とリンクさせるリンク手段と、
    前記文字/文字列符号化手段において符号化した文字または文字列の長さがnかどうかを調査する文脈長調査手段と、
    前記文字または文字列の長さがnの場合、前記出現位置保持手段に前記出現位置が保持されていることを、前記出現有無調査手段に通知する通知手段とを備えることを特徴とする請求項10に記載のデータ圧縮装置。
  12. 前記n文字列と同じ文字列のLempelバッファ内での出現位置以降の一致部分をその一致長を表す符号に置き換えて保持し、他の部分は被圧縮データをそのまま保持する中間バッファと、
    直前の0〜(m−1)文字列を文脈として、次に出現する文字の符号を保持する文脈付文字符号保持手段と、
    直前の0〜(m−1)文字列を文脈として、次に続く文字を前記文脈付文字符号保持手段から検索する文脈付文字検索手段と、
    前記文脈付文字検索手段で検索された文脈付文字を、前記文脈付文字符号保持手段に保持されている符号に従って符号化する文脈付文字符号化手段とを備えることを特徴とする請求項7に記載のデータ圧縮装置。
  13. 直前n文字列と同じ文字列のLempelバッファ内での出現位置以降の一致部分をその一致長を表す符号に置き換えて保持し、他の部分は被圧縮データをそのまま保持する中間バッファと、
    長さ1〜mの文字または文字列と対応する符号を保持する文字/文字列符号保持手段と、
    前記中間バッファに保持されているデータと最長一致する文字または文字列を、前記文字/文字列符号保持手段に保持されている文字または文字列から検索する文字/文字列検索手段と、
    前記文字/文字列検索手段で検索された文字または文字列を、前記文字/文字列符号保持手段に保持されている符号に従って符号化する文字/文字列符号化手段とを備えることを特徴とする請求項7に記載のデータ圧縮装置。
  14. 被圧縮データを保持する入力バッファを持ち、前記入力バッファにおいて既に圧縮済みの部分をLempelバッファ、これから圧縮する部分をZivバッファとした時に、
    長さnの文字列からハッシュコードを生成するハッシュコード生成手段と、
    前記Lempelバッファ内にあるn文字列から生成されたハッシュコードに関連づけて、前記Lempelバッファ内での前記n文字列の出現位置を保持する出現位置保持手段と、
    前記Zivバッファの直前にある長さnの文字列から生成したハッシュコードを前記出現位置保持手段から検索することにより、前記ハッシュコードに関連づけられた出現位置を前記出現位置保持手段から取得する出現位置取得手段と、
    上記出現位置以降の文字列とZivバッファの先頭以降の文字列の一致を比較し、その一致長を求める一致長取得手段と、
    前記Zivバッファの先頭以降の文字列を前記一致長で符号化する一致長符号化手段とを備えることを特徴とするデータ圧縮装置。
  15. 前記出現位置取得手段により特定されたLempelバッファ内の文字列と、前記Zivバッファの直前にある長さpの文字列とを比較するハッシュ衝突確認手段を備え、
    前記一致長符号化手段は、前記p個の文字が全て一致している時にのみ、前記Zivバッファの先頭以降の文字列を前記一致長で符号化することを特徴とする請求項14に記載のデータ圧縮装置。
  16. n=3、かつ、p=0または2であることを特徴するとする請求項15に記載のデータ圧縮装置。
  17. 被圧縮データを保持する入力バッファを持ち、前記入力バッファにおいて既に圧縮済みの部分をLempelバッファ、これから圧縮する部分をZivバッファとした時に、
    前記Lempelバッファ内の長さnの文字列の出現位置の一部もしくは全てを保持する出願位置保持手段と、
    前記Zivバッファの直前にある長さnの文字列と同じ文字列のLempelバッファ内での出現位置を保持しているかどうかを調査する出現有無調査手段と、
    前記Zivバッファの直前のn文字列と同じ文字列のLempelバッファ内での出現位置を取得する出現位置取得手段と、
    上記出現位置以降の文字列と前記Zivバッファの先頭以降の文字列との一致を比較し、その一致長を求める一致長取得手段と、
    前記一致長を符号化する一致長符号化手段と、
    前記一致長取得手段により求めた一致長が0の場合、不一致情報を前記n文字列と関連づけて保持する不一致情報保持手段と、
    前記Zivバッファの直前の長さnの文字列に前記不一致情報が関連づけられてない場合、前記Zivバッファの先頭以降の文字列を前記一致長で符号化する一致長符号化手段とを備えることを特徴とするデータ圧縮装置。
  18. 前記Zivバッファの直前の長さqの文字列の各文字全てが同じ文字であるかどうかを求める同文字連続確認手段を備え、
    前記不一致情報保持手段は、直前の長さqの文字列が全て同じ文字の場合、前記一致長が0の場合でも、前記n文字列に前記不一致情報を与えないようにすることを特徴とする請求項17に記載のデータ圧縮装置。
  19. q=2であることを特徴とする請求項18に記載のデータ圧縮装置。
  20. 被圧縮データを保持する入力バッファを持ち、前記入力バッファにおいて既に圧縮済みの部分をLempelバッファ、これから圧縮する部分をZivバッファとした時に、
    前記Lempelバッファ内の長さnの文字列の出現位置の一部もしくは全てを保持する出現位置保持手段と、
    前記Zivバッファの直前にある長さnの文字列と同じ文字列の前記Lempelバッファ内での出現位置を保持しているかどうかを調査する出現有無調査手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の前記Lempelバッファ内での出現位置を取得する出現位置取得手段と、
    前記出現位置以降の文字列と前記Zivバッファの先頭以降の文字列の一致を比較し、その一致長を求める一致長取得手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の前記Lempelバッファ内での出現位置が前記出現位置取得手段に保持されている場合、前記Zivバッファの先頭以降の文字列を前記一致長で符号化する一致長符号化手段と、
    直前1文字または直前1文字から特徴を抜き出したものを文脈として、次に出現する文字の符号を保持する文脈付文字符号保持手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の前記Lempelバッファ内での出現位置が前記出現位置取得手段に保持されていない場合、前記符号に従って文字を符号化する文脈付文字符号化手段とを備えることを特徴とするデータ圧縮装置。
  21. 圧縮データを復元した元の被圧縮データを保持する出力バッファを持ち、前記出力バッファにおいて、既に復元済みデータを格納する部分をLempelバッファ、これから復元したデータを格納する部分をZivバッファとしたときに、
    前記Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する出現位置保持手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の出現位置が前記出現位置保持手段に保持されているかどうか調査する出現有無調査手段と、
    前記出現位置保持手段に前記出現位置が保持されている場合、前記Zivバッファの直前のn文字列と同じ文字列の出現位置を前記出現位置保持手段から取得する出現位置取得手段と、
    圧縮データから一致長を復元する一致長復元手段と、
    前記Lempelバッファ内にあるn文字列に続く前記一致長分の文字列を、前記Zivバッファの直前のn文字列の次の復元結果とする文字列復元手段とを備えることを特徴とするデータ復元装置。
  22. 直前の0〜(m−1)文字列を文脈として、次に出現する文字の符号を保持する文脈付文字符号保持手段と、
    直前の0〜(m−1)文字列を文脈とする符号を、前記文脈付文字符号保持手段から検索する文脈検索手段と、
    前記文脈検索手段で検索された符号から文字を復元する文脈付文字復元手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の出現位置が前記出現位置保持手段に保持されていない場合、前記文脈付文字復元手段に文字を復元させる切り替え手段とを備えることを特徴とする請求項21に記載のデータ復元装置。
  23. 長さ1〜mの文字または文字列に対応する符号を保持する文字/文字列符号保持手段と、
    前記文字/文字列符号保持手段に保持されている符号に従って、文字または文字列を復元する文字/文字列復元手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の出現位置が前記出現位置保持手段に保持されていない場合、前記文字/文字列復元手段に文字または文字列を復元させる切り替え手段とを備えることを特徴とする請求項21に記載のデータ復元装置。
  24. 直前の0〜(m−1)文字列を文脈として、次に出現する文字の符号を保持する文脈付文字符号保持手段と、
    直前の0〜(m−1)文字列を文脈とする符号を検索する文脈検索手段と、
    前記文脈付文字符号保持手段に保持されている符号に従って、圧縮データから文字を復元する文脈付文字復元手段と、
    前記文脈付文字復元手段で復元されたデータを保持する中間コードバッファと、
    前記中間コードバッファに保持されているデータを入力データとした時の復元したデータを格納する出力バッファを持ち、前記出力バッファにおいて、既に復元済みのデータを格納する部分をLempelバッファ、これから復元するデータを格納する部分をZivバッファとしたときに、
    前記Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する出現位置保持手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の出現位置が前記出現位置保持手段に保持されているかどうか調査する出現有無調査手段と、
    前記出現位置保持手段に前記出現位置が保持されている場合、前記Zivバッファの直前のn文字列と同じ文字列の出現位置を前記出現位置保持手段から取得する出現位置取得手段と、
    中間コードから一致長を復元する一致長復元手段と、
    前記Lempelバッファ内にあるn文字列に続く前記一致長分の文字列を、
    前記Zivバッファの直前のn文字列の次の復元結果とする文字列復元手段と、
    前記出現位置保持手段に前記出現位置が保持されていない場合、前記中間コードを復元結果としてそのまま出力する出力手段とを備えることを特徴とするデータ復元装置。
  25. 長さ1〜mの文字または文字列に対応する符号を保持する文字/文字列符号保持手段と、
    前記文字/文字列符号保持手段に保持されている符号に従って、文字または文字列を復元する文字/文字列復元手段と、
    前記文字/文字列復元手段で復元されたデータを保持する中間コードバッファと、
    前記中間コードバッファに保持されているデータを入力データとした時の復元したデータを格納する出力バッファを持ち、前記出力バッファにおいて、既に復元済みのデータを格納する部分をLempelバッファ、これから復元するデータを格納する部分をZivバッファとしたときに、
    前記Lempelバッファ内にあるn文字列の出現位置の一部もしくは全てを保持する出現位置保持手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の出現位置が前記出現位置保持手段に保持されているかどうか調査する出現有無調査手段と、
    前記出現位置保持手段に前記出現位置が保持されている場合、前記Zivバッファの直前のn文字列と同じ文字列の出現位置を前記出現位置保持手段から取得する出現位置取得手段と、
    中間コードから一致長を復元する一致長復元手段と、
    前記Lempelバッファ内にあるn文字列に続く前記一致長分の文字列を、
    前記Zivバッファの直前のn文字列の次の復元結果とする文字列復元手段と、
    前記出現位置保持手段に前記出現位置が保持されていない場合、前記中間コードを復元結果としてそのまま出力する出力手段とを備えることを特徴とするデータ復元装置。
  26. 復元された元の被圧縮データを保持する出力バッファを持ち、前記出力バッファにおいて、既に復元済みの部分をLempelバッファ、これから復元する部分をZivバッファとした時に、
    長さnの文字列からハッシュコードを生成するハッシュコード生成手段と、
    前記Lempelバッファ内にあるn文字列から生成されたハッシュコードに関連づけて、前記Lempelバッファ内での前記n文字列の出現位置を保持する出現位置保持手段と、
    前記Zivバッファの直前にある長さnの文字列から生成したハッシュコードと関連づけられた出現位置を取得する出現位置取得手段と、
    前記Zivバッファ内の先頭の符号から一致長を復元する一致長復元手段と、
    前記Lempelバッファ内での前記出現位置以降の前記一致長分の長さの文字列を、前記Zivバッファ内の先頭の符号の復元結果とする文字復元手段とを備えることを特徴とするデータ復元装置。
  27. 前記出現位置取得手段により特定された前記Lempelバッファ内の文字列と、前記Zivバッファの直前にある長さpの文字列とを比較するハッシュ衝突確認手段を備え、
    前記文字復元手段は、前記p個の文字全てが一致している場合にのみ、前記Lempelバッファ内での前記出現位置以降の前記一致長分の長さの文字列を、前記Zivバッファ内の先頭の符号の復元結果とすることを特徴とする請求項26に記載のデータ復元装置。
  28. 復元された元の被圧縮データを保持する出力バッファを持ち、前記出力バッファにおいて、既に復元済みの部分をLempelバッファ、これから復元する部分をZivバッファとした時に、
    前記Lempelバッファ内の長さnの文字列の出現位置の一部もしくは全てを保持する出現位置保持手段と、
    前記Zivバッファの直前にある長さnの文字列と同じ文字列の前記Lempelバッファ内での出現位置を保持しているかどうかを調査する出現有無調査手段と、
    前記Zivバッファの直前にある長さnの文字列と同じ文字列の前記Lempelバッファ内での出現位置を取得する出現位置取得手段と、
    前記Zivバッファ内の先頭の符号から一致長を復元する一致長復元手段と、
    前記一致長取得手段により求めた一致長が0の場合、不一致情報を前記n文字列と関連づけて保持する不一致情報保持手段と、
    前記Zivバッファの直前の長さnの文字列に前記不一致情報が関連づけられてない場合、前記Lempelバッファ内での前記出現位置以降の前記一致長分の長さの文字列を、前記Zivバッファ内の先頭の符号の復元結果とする文字復元手段とを備えることを特徴とするデータ復元装置。
  29. 復元された元の被圧縮データを保持する出力バッファを持ち、前記出力バッファにおいて、既に復元済みの部分をLempelバッファ、これから復元する部分をZivバッファとした時に、
    前記Lempelバッファ内の長さnの文字列の出現位置の一部もしくは全てを保持する出現位置保持手段と、
    前記Zivバッファの直前にある長さnの文字列と同じ文字列の前記Lempelバッファ内での出現位置を保持しているかどうかを調査する出現有無調査手段と、
    前記Zivバッファの直前にある長さnの文字列と同じ文字列の前記Lempelバッファ内での出現位置を取得する出現位置取得手段と、
    前記Zivバッファ内の先頭の符号から一致長を復元する一致長復元手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の前記Lempelバッファ内での出現位置が前記出現位置取得手段に保持されている場合、前記Lempelバッファ内での前記出現位置以降の前記一致長分の長さの文字列を、前記Zivバッファ内の先頭の符号の復元結果とする文字復元手段と、
    直前1文字または、直前1文字から特徴を抜き出したものを文脈として、次に出現する文字の符号を保持する文脈付文字符号保持手段と、
    前記Zivバッファの直前のn文字列と同じ文字列の前記Lempelバッファ内での出現位置が前記出現位置取得手段に保持されていない場合、前記符号に従って文字を復元する文脈付文字符号復元手段とを備えることを特徴とするデータ復元装置。
  30. 過去に出現した第2の文字列の出現位置を記憶しておくステップと、
    第3の文字列の直前の第1の文字列を検出するステップと、
    前記第1の文字列と各文字が一致する前記第2の文字列の出現位置を前記記憶結果から取得するステップと、
    前記第2の文字列に続く第4の文字列と前記第3の文字列との一致長を検出するステップと、
    前記第4の記号列は、第2の記号列の出現位置に第2の記号列の長さを足した位置から、(前記一致長・1)だけ移動した範囲に相当することにより、
    前記第3の文字列を前記一致長で符号化するステップとを備えることを特徴とするデータ圧縮方法。
  31. 所定の長さの第2の記号列と一致する第1の記号列を符号化したデータ構造と、
    前記第1の記号列に続く第3の記号列を、前記第2の記号列に続く第4の記号列との一致長で符号化したデータ構造とを備え、
    前記第4の記号列は、第2の記号列の出現位置に第2の記号列の長さを足した位置から、(前記一致長・1)だけ移動した範囲に相当する
    ことを特徴とするコンピュータ読み取り可能な記憶媒体。
  32. 記号列の中から所定の長さの第1の記号列に一致する第2の記号列を検出する機能と、
    前記第1の記号列に続く第3の記号列と前記第2の記号列に続く第4の記号列との一致長を検出する機能と、
    前記第4の記号列は、第2の記号列の出現位置に第2の記号列の長さを足した位置から、 (前記一致長・1)だけ移動した範囲に相当することにより、
    前記第3の記号列と前記第4の記号列の一致長に基づいて、前記第3の記号列の符号化を行う機能とを少なくともコンピュータで実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体。
JP05050099A 1998-08-13 1999-02-26 符号化装置及び復号化装置 Expired - Lifetime JP3541930B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP05050099A JP3541930B2 (ja) 1998-08-13 1999-02-26 符号化装置及び復号化装置
US09/372,040 US6320522B1 (en) 1998-08-13 1999-08-11 Encoding and decoding apparatus with matching length detection means for symbol strings
US09/950,783 US6549148B2 (en) 1998-08-13 2001-09-13 Encoding and decoding apparatus using context
US10/226,291 US6563438B2 (en) 1998-08-13 2002-08-23 Encoding and decoding apparatus with matching length means for symbol strings
US10/226,187 US6906644B2 (en) 1998-08-13 2002-08-23 Encoding and decoding apparatus with matching length means for symbol strings
US10/226,292 US6778103B2 (en) 1998-08-13 2002-08-23 Encoding and decoding apparatus using context
US10/342,300 US20030102989A1 (en) 1998-08-13 2003-01-15 Coding apparatus and decoding apparatus

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP22909498 1998-08-13
JP10-229094 1998-08-13
JP05050099A JP3541930B2 (ja) 1998-08-13 1999-02-26 符号化装置及び復号化装置

Publications (2)

Publication Number Publication Date
JP2000124810A JP2000124810A (ja) 2000-04-28
JP3541930B2 true JP3541930B2 (ja) 2004-07-14

Family

ID=26390975

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05050099A Expired - Lifetime JP3541930B2 (ja) 1998-08-13 1999-02-26 符号化装置及び復号化装置

Country Status (2)

Country Link
US (6) US6320522B1 (ja)
JP (1) JP3541930B2 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7239755B1 (en) * 1997-07-30 2007-07-03 Lg Electronics Inc. Method of reducing a blocking artifact when coding moving picture
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置
AU2001270575A1 (en) * 2000-09-28 2002-04-08 Roke Manor Research Limited. Improved huffman data compression method
US7103906B1 (en) 2000-09-29 2006-09-05 International Business Machines Corporation User controlled multi-device media-on-demand system
CN100579203C (zh) 2000-10-11 2010-01-06 联合视频制品公司 提供数据存储到点播媒体传递***中服务器上的***和方法
US6359574B1 (en) * 2001-01-22 2002-03-19 Proxell Systems Ltd. Method for identifying longest common substrings
WO2003003584A1 (en) * 2001-06-29 2003-01-09 Netcontinuum, Inc. System and method for data compression using a hybrid coding scheme
US7366910B2 (en) * 2001-07-17 2008-04-29 The Boeing Company System and method for string filtering
US6961011B2 (en) * 2001-08-27 2005-11-01 Freescale Semiconductor, Inc. Data compression system
US6650261B2 (en) * 2001-09-06 2003-11-18 Xerox Corporation Sliding window compression method utilizing defined match locations
US6696992B1 (en) * 2001-10-02 2004-02-24 Allan Chu Efficient data encoding and decoding processes
US6501395B1 (en) * 2002-04-10 2002-12-31 Hewlett-Packard Company System, method and computer readable medium for compressing a data sequence
US20040054413A1 (en) * 2002-09-16 2004-03-18 Howmedica Osteonics Corp. Radiovisible hydrogel intervertebral disc nucleus
US6927710B2 (en) * 2002-10-30 2005-08-09 Lsi Logic Corporation Context based adaptive binary arithmetic CODEC architecture for high quality video compression and decompression
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US6919826B1 (en) * 2003-12-19 2005-07-19 Sun Microsystems, Inc. Systems and methods for efficient and compact encoding
TWI318058B (en) * 2005-01-26 2009-12-01 Qisda Corp Message compression method, system and machine-readable storage medium
JP2006295853A (ja) * 2005-04-14 2006-10-26 Sony Corp 符号化装置、復号装置、および、符号化方法ならびに復号方法
US7215259B2 (en) * 2005-06-03 2007-05-08 Quantum Corporation Data compression with selective encoding of short matches
JP4456554B2 (ja) * 2005-10-31 2010-04-28 富士通株式会社 データ圧縮方法及び圧縮データ送信方法
US7307552B2 (en) * 2005-11-16 2007-12-11 Cisco Technology, Inc. Method and apparatus for efficient hardware based deflate
US9681105B2 (en) 2005-12-29 2017-06-13 Rovi Guides, Inc. Interactive media guidance system having multiple devices
US7656381B2 (en) * 2006-01-11 2010-02-02 Tpo Displays Corp. Systems for providing dual resolution control of display panels
US8674855B2 (en) * 2006-01-13 2014-03-18 Essex Pa, L.L.C. Identification of text
US7683878B2 (en) * 2006-01-23 2010-03-23 Tpo Displays Corp. Systems for providing dual resolution control of display panels
EP2011237A1 (en) * 2006-04-21 2009-01-07 Kabushiki Kaisha Toshiba Method and apparatus for entropy coding and decoding
US7586424B2 (en) * 2006-06-05 2009-09-08 Donald Martin Monro Data coding using an exponent and a residual
US7770091B2 (en) * 2006-06-19 2010-08-03 Monro Donald M Data compression for use in communication systems
US7417570B2 (en) * 2006-07-31 2008-08-26 Sap Ag Lossless comparative compression and transmission method and system
US7844581B2 (en) * 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
US7439887B2 (en) * 2007-02-13 2008-10-21 Seiko Epson Corporation Method and apparatus for GIF decompression using fixed-size codeword table
US20090019492A1 (en) 2007-07-11 2009-01-15 United Video Properties, Inc. Systems and methods for mirroring and transcoding media content
US7737869B2 (en) * 2007-07-12 2010-06-15 Monro Donald M Symbol based data compression
US7511639B2 (en) * 2007-07-12 2009-03-31 Monro Donald M Data compression for communication between two or more components in a system
US8144037B2 (en) * 2007-07-12 2012-03-27 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
US8055085B2 (en) * 2007-07-12 2011-11-08 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
US7511638B2 (en) * 2007-07-12 2009-03-31 Monro Donald M Data compression for communication between two or more components in a system
US7990289B2 (en) * 2007-07-12 2011-08-02 Intellectual Ventures Fund 44 Llc Combinatorial coding/decoding for electrical computers and digital data processing systems
US8463759B2 (en) * 2007-09-24 2013-06-11 Ca, Inc. Method and system for compressing data
US7623047B2 (en) * 2007-10-30 2009-11-24 Hewlett-Packard Development Company, L.P. Data sequence compression
WO2010032934A2 (ko) * 2008-09-16 2010-03-25 에스케이텔레콤 주식회사 B-변환을 위한 부호화 방법 및 장치와 그를 위한 부호화 데이터
US7786907B2 (en) * 2008-10-06 2010-08-31 Donald Martin Monro Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US7864086B2 (en) * 2008-10-06 2011-01-04 Donald Martin Monro Mode switched adaptive combinatorial coding/decoding for electrical computers and digital data processing systems
US7786903B2 (en) * 2008-10-06 2010-08-31 Donald Martin Monro Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US7791513B2 (en) * 2008-10-06 2010-09-07 Donald Martin Monro Adaptive combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US8122353B2 (en) * 2008-11-07 2012-02-21 Yahoo! Inc. Composing a message in an online textbox using a non-latin script
KR101049699B1 (ko) * 2009-07-17 2011-07-15 (주)이스트소프트 데이터의 압축방법
US8013762B2 (en) * 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
JP5895545B2 (ja) * 2012-01-17 2016-03-30 富士通株式会社 プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体
US20140006536A1 (en) * 2012-06-29 2014-01-02 Intel Corporation Techniques to accelerate lossless compression
JP5677401B2 (ja) * 2012-11-16 2015-02-25 京セラドキュメントソリューションズ株式会社 表示装置及びこれを備えた画像形成装置
KR101992274B1 (ko) * 2013-01-02 2019-09-30 삼성전자주식회사 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들
US9223765B1 (en) * 2013-10-09 2015-12-29 Google Inc. Encoding and decoding data using context model grouping
US10070145B2 (en) * 2014-02-07 2018-09-04 Mediatek Singapore Pte. Ltd. Method of coding based on string matching for video compression
JP6609404B2 (ja) * 2014-07-22 2019-11-20 富士通株式会社 圧縮プログラム、圧縮方法および圧縮装置
US9602130B2 (en) * 2014-08-06 2017-03-21 Ngd Systems, Inc. System and method for matching a regular expression or combination of characters
JP6540308B2 (ja) 2015-07-13 2019-07-10 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US9584155B1 (en) * 2015-09-24 2017-02-28 Intel Corporation Look-ahead hash chain matching for data compression
JP6781373B2 (ja) * 2016-10-05 2020-11-04 富士通株式会社 検索プログラム、検索方法、および検索装置
JP7059516B2 (ja) 2017-03-29 2022-04-26 富士通株式会社 符号化プログラム、符号化装置および符号化方法
US10224957B1 (en) 2017-11-27 2019-03-05 Intel Corporation Hash-based data matching enhanced with backward matching for data compression
JP7024578B2 (ja) 2018-04-24 2022-02-24 富士通株式会社 通信装置、通信制御方法、および通信制御プログラム
US11509328B2 (en) * 2018-05-31 2022-11-22 Microsoft Technology Licensing, Llc Computer data compression utilizing multiple symbol alphabets and dynamic binding of symbol alphabets
CN114065704A (zh) * 2020-07-31 2022-02-18 伊姆西Ip控股有限责任公司 数据压缩方法、电子设备和计算机程序产品
US11652495B2 (en) * 2021-09-14 2023-05-16 Mastercard International Incorporated Pattern-based string compression
CN116610265B (zh) * 2023-07-14 2023-09-29 济南玖通志恒信息技术有限公司 一种商务信息咨询***的数据存储方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5001478A (en) 1989-12-28 1991-03-19 International Business Machines Corporation Method of encoding compressed data
US5473326A (en) * 1990-12-14 1995-12-05 Ceram Incorporated High speed lossless data compression method and apparatus using side-by-side sliding window dictionary and byte-matching adaptive dictionary
US5406278A (en) * 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
JP3241787B2 (ja) 1992-02-28 2001-12-25 富士通株式会社 データ圧縮方式
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5424732A (en) * 1992-12-04 1995-06-13 International Business Machines Corporation Transmission compatibility using custom compression method and hardware
JP3397431B2 (ja) 1994-03-16 2003-04-14 富士通株式会社 データ圧縮方法および装置ならびにデータ復元方法および装置
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
JPH0865172A (ja) 1994-08-22 1996-03-08 Fujitsu Ltd データ圧縮装置
JP3240495B2 (ja) * 1994-09-14 2001-12-17 エー・アイ・ソフト株式会社 データの可逆符号化方法および装置、並びに、伸長装置
US5883588A (en) * 1994-10-04 1999-03-16 Nec Corporation Data compression system and data compression device for improving data compression rate and coding speed
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
US5774588A (en) * 1995-06-07 1998-06-30 United Parcel Service Of America, Inc. Method and system for comparing strings with entries of a lexicon
US5621403A (en) * 1995-06-20 1997-04-15 Programmed Logic Corporation Data compression system with expanding window
US5838963A (en) * 1995-10-25 1998-11-17 Microsoft Corporation Apparatus and method for compressing a data file based on a dictionary file which matches segment lengths
JP3256121B2 (ja) * 1996-02-13 2002-02-12 富士通株式会社 データ符号化装置およびデータ復号装置およびその方法
JP3267504B2 (ja) * 1996-03-26 2002-03-18 富士通株式会社 データ圧縮装置およびデータ復元装置
US5861827A (en) * 1996-07-24 1999-01-19 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
US6226628B1 (en) * 1998-06-24 2001-05-01 Microsoft Corporation Cross-file pattern-matching compression
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置
US6262675B1 (en) * 1999-12-21 2001-07-17 International Business Machines Corporation Method of compressing data with an alphabet
US6515598B2 (en) 2000-12-22 2003-02-04 Cilys 53, Inc. System and method for compressing and decompressing data in real time
US6624762B1 (en) * 2002-04-11 2003-09-23 Unisys Corporation Hardware-based, LZW data compression co-processor

Also Published As

Publication number Publication date
US20030001759A1 (en) 2003-01-02
US6906644B2 (en) 2005-06-14
US6549148B2 (en) 2003-04-15
JP2000124810A (ja) 2000-04-28
US20020005792A1 (en) 2002-01-17
US20030020639A1 (en) 2003-01-30
US20020190877A1 (en) 2002-12-19
US6320522B1 (en) 2001-11-20
US6778103B2 (en) 2004-08-17
US6563438B2 (en) 2003-05-13
US20030102989A1 (en) 2003-06-05

Similar Documents

Publication Publication Date Title
JP3541930B2 (ja) 符号化装置及び復号化装置
CN108880556B (zh) 基于lz77的无损数据压缩方法、误码修复方法及编码器和解码器
CN108768403B (zh) 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器
US5229768A (en) Adaptive data compression system
US5389922A (en) Compression using small dictionaries with applications to network packets
JP3258552B2 (ja) データ圧縮装置及びデータ復元装置
EP0903866B1 (en) Method and apparatus for data compression
JP2003179501A (ja) データ圧縮方法
US5392036A (en) Efficient optimal data recopression method and apparatus
KR100906041B1 (ko) 폰트 압축 및 검색 방법 및 장치
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
KR100359118B1 (ko) 균일 엔트로피 데이터에 대한 비손실 압축방법
Ghuge Map and Trie based Compression Algorithm for Data Transmission
JP3242795B2 (ja) データ処理装置及びデータ処理方法
US20080001790A1 (en) Method and system for enhancing data compression
JP3266419B2 (ja) データ圧縮・伸長方式
JPH05152971A (ja) データ圧縮・復元方法
JPH05241776A (ja) データ圧縮方式
JP3051501B2 (ja) データ圧縮方法
JPH0644038A (ja) データ圧縮方法、データ復元方法、データ圧縮/復元方法
KR100462603B1 (ko) 영상 데이타 압축 및 복원 방법 및 장치
JPH0629861A (ja) データ圧縮方法
JPH05181641A (ja) データ圧縮・復元装置
JP2999587B2 (ja) データ圧縮及び復元方式
JPH06149537A (ja) データ圧縮方法及び復元方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20031216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040216

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040226

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: 20040323

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040324

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080409

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100409

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110409

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110409

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120409

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 10

EXPY Cancellation because of completion of term