JP2004120251A - データ圧縮方法 - Google Patents
データ圧縮方法 Download PDFInfo
- Publication number
- JP2004120251A JP2004120251A JP2002279832A JP2002279832A JP2004120251A JP 2004120251 A JP2004120251 A JP 2004120251A JP 2002279832 A JP2002279832 A JP 2002279832A JP 2002279832 A JP2002279832 A JP 2002279832A JP 2004120251 A JP2004120251 A JP 2004120251A
- Authority
- JP
- Japan
- Prior art keywords
- data
- compressed
- stored
- encoding
- matching
- 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.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】参照部に格納する圧縮対象のデータ量を増やすことなく、圧縮処理した後のデータの圧縮率を向上させることができるデータ圧縮方法を提供する。
【解決手段】参照部に格納された圧縮対象のデータとこのデータを所定の配列に並べ替えたデータを用いて符号化部に格納された圧縮対象のデータを符号化し、符号化が終了した後のデータとして、一致するデータが存在しない場合には、一致するデータが存在しないことを示すビットと、一致するデータが存在しない、符号化部に格納された圧縮対象のデータとを含むデータを生成し、一致するデータが存在する場合には、一致するデータが存在することを示すビットと、符号化部に格納された圧縮対象のデータを符号化した際の、参照部に格納された圧縮対象のデータの配列を規定するビットと、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットとを含むデータを生成する。
【選択図】図1
【解決手段】参照部に格納された圧縮対象のデータとこのデータを所定の配列に並べ替えたデータを用いて符号化部に格納された圧縮対象のデータを符号化し、符号化が終了した後のデータとして、一致するデータが存在しない場合には、一致するデータが存在しないことを示すビットと、一致するデータが存在しない、符号化部に格納された圧縮対象のデータとを含むデータを生成し、一致するデータが存在する場合には、一致するデータが存在することを示すビットと、符号化部に格納された圧縮対象のデータを符号化した際の、参照部に格納された圧縮対象のデータの配列を規定するビットと、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットとを含むデータを生成する。
【選択図】図1
Description
【0001】
【発明の属する技術分野】
本発明は、LZスライド辞書法を改良し、より高い圧縮率を得ることができるデータ圧縮方法に関するものである。
【0002】
【従来の技術】
LZスライド辞書法は、下記非特許文献1によって提案された方式であり、LZ77方式とも呼ばれている。以下、図2を参照して、LZ77方式について説明する。
【0003】
LZ77方式において、圧縮対象のデータ列は一列に配列される。図2に示す例の場合、一部図示を省略しているが、…abc…abcd…dcba…abcde…の順に一列に配列されている。
【0004】
参照部は、圧縮対象のデータ列のうち、符号化が終了した後の圧縮対象のデータが格納される部分である。参照部には、符号化が終了した後の圧縮対象のデータのうち、最後に符号化が終了した圧縮対象のデータ(図中参照部の右端のデータ)から、図中左側へ向かって、それ以前に符号化が終了した所定数の圧縮対象のデータが格納される。図示例の場合、参照部内の圧縮対象のデータは、…abc…abcd…dcba…の順に格納されている。
【0005】
一方、符号化部は、圧縮対象のデータ列のうち、これから符号化しようとする圧縮対象のデータが格納される部分である。符号化部には、これから符号化しようとする圧縮対象のデータのうち、次に符号化する圧縮対象のデータ(図中符号化部の左端のデータ)から、図中右側へ向かって、これ以後順次符号化する所定数の圧縮対象のデータが格納される。図示例の場合、符号化部内の圧縮対象のデータは、abcde…の順に格納されている。
【0006】
図中圧縮対象のデータ列の上に引かれた線は、参照部に格納された圧縮対象のデータのうち、符号化部に格納された次に符号化する圧縮対象のデータに一致するデータを示す。また、図中、参照部に格納された圧縮対象のデータの上に示されている数字は、参照部の図中左端の圧縮対象のデータからの順番(バイト数)を示す。
【0007】
例えば、参照部の図中左端の圧縮対象のデータから10〜13番目の3バイトのデータabcは、符号化部に格納された次に符号化する圧縮対象のデータabcde…のうち、最初の3バイトのデータabcと一致する。また、参照部の図中左端の圧縮対象のデータから20〜24番目の4バイトのデータabcdは、同じく次に符号化する圧縮対象のデータabcde…のうち、最初の4バイトのデータabcdと一致する。
【0008】
符号化部に格納された圧縮対象のデータは、符号化が終了した後、順次符号化部側から参照部側へシフト出力される。また、符号化部には、圧縮対象のデータ列の中から、新たな圧縮対象のデータ(図中符号化部の右端のデータよりも右側に存在する圧縮対象のデータ)が順次シフト入力される。すなわち、参照部および符号化部は、圧縮対象のデータ列に対して順次右側へスライドされる。このため、これらの参照部と符号化部を併せてスライド部という。
【0009】
圧縮対象のデータ列の圧縮処理、すなわち各圧縮対象のデータの符号化は、符号化部に格納された次に符号化する圧縮対象のデータ、すなわち図中符号化部の左端の圧縮対象のデータから順次行われる。
【0010】
符号化を行う場合、参照部に格納された圧縮対象のデータの中から、符号化部に格納された次に符号化する圧縮対象のデータに最長一致するデータを検出する。そして、この検出結果に基づき、符号化が終了した後のデータとして、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットと、一致するデータが存在しない、符号化部に格納された圧縮対象のデータ(不一致データ)とを含むデータを生成する。
【0011】
すなわち、LZ77方式の場合、符号化された後のデータは、[一致箇所、長さ、不一致データ]の形式で符号化される。
【0012】
符号化が終了した後、前述のように、符号化部に格納された圧縮対象のデータが順次符号化部側から参照部側へシフト出力されると共に、符号化部には、圧縮対象のデータ列の中から、新たな圧縮対象のデータが順次シフト入力される。以後同様にして、符号化部に格納された圧縮対象のデータのうち、次に符号化する圧縮対象のデータに対して前述の動作が繰り返し行われ、最終的に圧縮対象のデータ列が圧縮処理される。
【0013】
ところで、LZ77方式の場合、参照部に格納された圧縮対象のデータの中に、符号化部に格納された圧縮対象のデータに一致する圧縮対象のデータが存在しない場合、符号化された後のデータが符号化される前のデータよりも大きくなるという問題がある。
【0014】
この問題を解決するために提案されたのが、下記非特許文献2において提案されたLZSS方式である。LZSS方式は、LZ77方式において、符号化された後のデータの中に一致の有無を示す情報を入れて、一致しなかったときの冗長性を減らすようにしたものである。
【0015】
LZSS方式では、符号化が終了した後のデータとして、一致するデータが存在しない場合には、一致するデータが存在しないことを示すビットと、一致するデータが存在しない、符号化部に格納された圧縮対象のデータとを含むデータを生成し、一致するデータが存在する場合には、一致するデータが存在することを示すビットと、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットとを含むデータを生成する。
【0016】
すなわち、LZSS方式の場合、符号化された後のデータは、一致するデータが存在しない場合には、例えば[‘0’、不一致データ]の形式で符号化される。これに対し、一致するデータが存在する場合には、符号化された後のデータは、例えば[‘1’、一致箇所、長さ]の形式で符号化される。この例の場合、一致するデータが存在しないことを示すビットとして‘0’、一致するデータが存在することを示すビットとして‘1’を使用した。
【0017】
LZ77方式に限らず、LZSS方式においても同様に、参照部に格納する圧縮対象のデータ量が多くなるほど、参照部の中に、符号化部に格納された圧縮対象のデータと一致する圧縮対象のデータが存在する可能性は高くなる。しかし、LZスライド辞書法を採用した圧縮回路を構成する場合、参照部に格納するデータ量が多くなるほど、データを保持するための大容量のバッファが必要になり、回路規模が大きくなるという問題点があった。
【0018】
【非特許文献1】
論文「A Universal Algorithm for Sequential Data Compression 」、IEEE Transaction on Information Theory、1977年
【非特許文献2】
論文「Better OPM/L Text Compression 」、IEEE Transaction Commun.Vol.COM−34, No.12 、1986年12月
【0019】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点を解消し、参照部に格納する圧縮対象のデータ量を増やすことなく、圧縮処理した後のデータの圧縮率を向上させることができるデータ圧縮方法を提供することにある。
【0020】
【課題を解決するための手段】
上記目的を達成するために、本発明は、LZスライド辞書法に基づいて、圧縮対象のデータ列を、符号化が終了した後の圧縮対象のデータが格納された参照部と、これから符号化しようとする圧縮対象のデータが格納された符号化部とに分け、前記参照部に格納された圧縮対象のデータの中から、前記符号化部に格納された圧縮対象のデータに最長一致するデータを検出し、その検出結果に基づいて、前記符号化部に格納された圧縮対象のデータを符号化し、この符号化が終了した後の圧縮対象のデータを前記符号化部から前記参照部へシフトすることを繰り返し行って、前記圧縮対象のデータ列を圧縮処理するデータ圧縮方法であって、前記参照部に格納された圧縮対象のデータと当該参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを用いて、前記符号化部に格納された圧縮対象のデータを符号化し、
前記符号化が終了した後のデータとして、一致するデータが存在しない場合には、前記一致するデータが存在しないことを示すビットと、前記一致するデータが存在しない、前記符号化部に格納された圧縮対象のデータとを含むデータを生成し、
前記一致するデータが存在する場合には、前記一致するデータが存在することを示すビットと、前記符号化部に格納された圧縮対象のデータを符号化した際の、前記参照部に格納された圧縮対象のデータの配列を規定するビットと、前記参照部における一致箇所を示すビットと、前記一致するデータの長さを示すビットとを含むデータを生成することを特徴とするデータ圧縮方法を提供するものである。
【0021】
ここで、前記参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを2種類以上用いて前記符号化を行うのが好ましい。
【0022】
また、前記圧縮対象のデータ列を圧縮処理した後のデータは、ヘッダ情報として、前記符号化部に格納された圧縮対象のデータを符号化した際の、前記参照部に格納された圧縮対象のデータの配列を規定するビットと、前記参照部に格納された圧縮対象のデータを前記符号化の時にどのような配列に並べ替えたのかというデータの配列方式の情報と、の間の対応関係を示す情報を含むのが好ましい。
【0023】
【発明の実施の形態】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のデータ圧縮方法を詳細に説明する。
【0024】
図1は、本発明のデータ圧縮方法を説明する一実施形態の概念図である。
図1(a)および(b)は、それぞれ参照部に格納された圧縮対象のデータを順方向に並べた場合、および逆方向に並べた場合を示す。同図において、参照部、符号化部、スライド部、図中圧縮対象のデータ列の上に引かれた線、および参照部に格納された圧縮対象のデータの上に示されている数字は、従来技術の説明の欄で説明した通りである。
【0025】
すなわち、参照部には、符号化が終了した後の圧縮対象のデータのうち、最後に符号化が終了した圧縮対象のデータ(図中参照部の右端のデータ)から、図中左側へ向かって、それ以前に符号化が終了した所定数の圧縮対象のデータが格納される。また、符号化部には、これから符号化しようとする圧縮対象のデータのうち、次に符号化する圧縮対象のデータ(図中符号化部の左端のデータ)から、図中右側へ向かって、これ以後順次符号化する所定数の圧縮対象のデータが格納される。
【0026】
図中圧縮対象のデータ列の上に引かれた線は、参照部に格納された圧縮対象のデータのうち、符号化部に格納された次に符号化する圧縮対象のデータに一致するデータを示す。また、図中、参照部に格納された圧縮対象のデータの上に示されている数字は、参照部の図中左端の圧縮対象のデータからの順番(バイト数)を示す。
【0027】
本発明のデータ圧縮方法では、LZスライド辞書法に基づいて、圧縮対象のデータ列を圧縮処理する。
【0028】
すなわち、圧縮対象のデータ列を参照部と符号化部とに分け、参照部に格納された圧縮対象のデータの中から、符号化部に格納された次に符号化する圧縮対象のデータに最長一致するデータを検出する。そして、その検出結果に基づいて、符号化部に格納された圧縮対象のデータを符号化し、この符号化が終了した後の圧縮対象のデータを符号化部から参照部へシフトすることを繰り返し行って、圧縮対象のデータ列を圧縮処理する。
【0029】
なお、LZスライド辞書法については、従来技術の説明の欄でも述べた通りであり、また、上記非特許文献1,2において詳細に説明されているので、ここでは、その詳細な説明は省略する。
【0030】
本発明のデータ圧縮方法の最大の特徴は符号化の方式にあり、これ以外の部分は、従来公知のLZスライド辞書法と基本的に同一である。従って、以下、本発明に係わる符号化の方式について詳細に説明する。
【0031】
符号化する場合、参照部に格納された圧縮対象のデータとこの参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを用いて、符号化部に格納された圧縮対象のデータを符号化する。本実施形態では、参照部に格納された圧縮対象のデータを順方向に並べたデータ(従来通りの配列のデータ)と圧縮対象のデータを逆方向に並べ替えたデータ(1バイト単位で配列を反転させたデータ)を用いて、符号化部に格納された圧縮対象のデータを符号化する。
【0032】
図1(a)に示す例では、参照部に格納された圧縮対象のデータが順方向に並べられている。この場合、参照部に格納された圧縮対象のデータは、例えば…dcba…の順に配列されており、符号化部に格納された圧縮対象のデータabcde…に一致するデータは存在しない。
【0033】
これに対し、図1(b)に示す例は、同図(a)に示す例に対して、参照部に格納された圧縮対象のデータを逆方向に並べ替えたものである。この場合、参照部に格納された圧縮対象のデータは、…abcd…の順に配列される。したがって、参照部に格納された圧縮対象のデータの中には、符号化部に格納された圧縮対象のデータabcde…のうち、先頭からの4バイトのデータabcdに一致するデータが存在する。
【0034】
上記のようにして、参照部に格納された圧縮対象のデータを順方向に並べたデータと、この参照部に格納された圧縮対象のデータを逆方向に並べたデータと、の両方について、参照部に格納された圧縮対象のデータの中から、符号化部に格納された次に符号化する圧縮対象のデータに最長一致するデータを検出する。そして、その検出結果に基づいて、符号化部に格納された圧縮対象のデータを符号化する。
【0035】
符号化が終了した後のデータとしては、符号化部に格納された次に符号化する圧縮対象のデータと一致するデータが参照部に存在しない場合には、一致するデータが存在しないことを示すビットと、一致するデータが存在しない、符号化部に格納された次に符号化する圧縮対象のデータとを含むデータを生成する。すなわち、一致するデータが存在しない場合、符号化された後のデータは、例えば[‘0’、不一致データ]の形式で符号化される。
【0036】
一致するデータが存在する場合には、最長一致するデータについて、一致するデータが存在することを示すビットと、符号化部に格納された圧縮対象のデータを符号化した際の、参照部に格納された圧縮対象のデータの配列を規定するビットと、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットとを含むデータを生成する。すなわち、一致するデータが存在する場合、符号化された後のデータは、例えば[‘1’、データ配列、一致箇所、長さ]の形式で符号化される。
【0037】
このように、符号化する場合に、参照部に格納された圧縮対象のデータを所定の配列に順次並べ替えたデータを使用することによって、参照部のデータ容量を増加させることなく、符号化部に格納された圧縮対象のデータに一致するデータが参照部に存在する確率を向上させることができる。すなわち、参照部を実現するためのバッファ等の回路規模を増加させることなく、圧縮対象のデータ列の圧縮率を向上させることができる。
【0038】
なお、上記例では、一致するデータが存在しないことを示すビットとして‘0’、一致するデータが存在することを示すビットとして‘1’を使用したが、‘0’と‘1’を逆に使用し、一致するデータが存在しないことを示すビットとして‘1’、一致するデータが存在することを示すビットとして‘0’を使用してもよい。
【0039】
また、上記実施形態では、符号化部に格納された圧縮対象のデータを符号化する際に、参照部に格納された圧縮対象のデータを順方向に並べたデータ(従来通りの配列のデータ)と、圧縮対象のデータを逆方向に並べたデータ(1バイト単位で配列を反転させたデータ)と、を用いる例を示した。このように、参照部に格納された圧縮対象のデータの配列方式が2つだけの場合、データ配列を規定するビットは1ビットで済む。
【0040】
これに対し、データの配列方式を3つ以上使用し、すなわち参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを2種類以上用い、これらの2種類以上の配列方式を適宜組み合わせて使用するようにしてもよい。この場合、データ配列を規定するビットは複数ビット必要である。
【0041】
データの配列方式としては、上記実施形態のように、1バイト単位でデータを反転させる方式の他、例えば2バイト単位、4バイト単位というように、任意のバイト数を単位としてデータを入れ替える方式も利用可能である。また、例えばRGB(赤緑青)の3色のデータの繰り返しで構成される画像データRGBRGBRGB…に対し、RRR…GGG…BBB…というように、データを入れ替えてもよい。あるいは他のどのような配列方式を採用してもよい。
【0042】
圧縮処理した後のデータを伸張処理する場合、符号化が終了した後のデータに含まれるデータ配列の情報と、参照部に格納された圧縮対象のデータを符号化の時にどのような配列に並べ替えたのかというデータの配列方式の情報との間の対応関係を表す情報が必要になる。上記実施形態の場合、例えばデータ配列の情報が‘0’の場合にはデータの配列方式は順方向であり、‘1’の場合には逆方向であるという情報が必要である。
【0043】
例えば、あらかじめ圧縮処理を行う側と伸張処理を行う側の両方で、データ配列の情報とデータの配列方式の情報との間の対応関係を取り決めておくおくことにより、問題なく伸張処理を行うことができる。例えば、上記の通り、データ配列の情報とデータの配列方式の情報との間の対応関係を定義しておけば、伸張処理を行う側は、データ配列の情報が‘0’の場合にはデータの配列方式は順方向であり、‘1’の場合には逆方向であるということを理解できる。
【0044】
あるいは、圧縮処理した後のデータの中に、ヘッダ情報として、データ配列の情報とデータの配列方式の情報との間の対応関係を表す情報を含めるようにしてもよい。この場合、伸張処理を行う側は、このヘッダ情報に含まれる、データ配列の情報とデータの配列方式の情報との間の対応関係を表す情報に基づいて、両者の対応関係を理解することができるので、この対応関係に基づいて問題なく伸張処理を行うことができる。
【0045】
本発明のデータ圧縮方法は、基本的に以上のようなものである。
以上、本発明のデータ圧縮方法について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【0046】
【発明の効果】
以上詳細に説明した様に、本発明のデータ圧縮方法は、参照部に格納された圧縮対象のデータとこのデータを所定の配列に並べ替えたデータを用いて、符号化部に格納された圧縮対象のデータを符号化し、一致するデータが存在する場合、符号化が終了した後のデータとして、符号化部に格納された圧縮対象のデータを符号化した際の、参照部に格納された圧縮対象のデータの配列を規定するビットを含むデータを生成するようにしたものである。
これにより、本発明のデータ圧縮方法によれば、参照部を実現するためのバッファ等の回路規模を増加させることなく、見かけ上のデータ量を増加させることができるため、符号化部に格納された圧縮対象のデータに一致するデータが参照部に存在する確率を向上させることができ、圧縮対象のデータ列の圧縮率を向上させることができる。
【図面の簡単な説明】
【図1】(a)および(b)は、本発明のデータ圧縮方法を説明する一実施形態の概念図である。
【図2】従来のデータ圧縮方法を説明する一例の概念図である。
【発明の属する技術分野】
本発明は、LZスライド辞書法を改良し、より高い圧縮率を得ることができるデータ圧縮方法に関するものである。
【0002】
【従来の技術】
LZスライド辞書法は、下記非特許文献1によって提案された方式であり、LZ77方式とも呼ばれている。以下、図2を参照して、LZ77方式について説明する。
【0003】
LZ77方式において、圧縮対象のデータ列は一列に配列される。図2に示す例の場合、一部図示を省略しているが、…abc…abcd…dcba…abcde…の順に一列に配列されている。
【0004】
参照部は、圧縮対象のデータ列のうち、符号化が終了した後の圧縮対象のデータが格納される部分である。参照部には、符号化が終了した後の圧縮対象のデータのうち、最後に符号化が終了した圧縮対象のデータ(図中参照部の右端のデータ)から、図中左側へ向かって、それ以前に符号化が終了した所定数の圧縮対象のデータが格納される。図示例の場合、参照部内の圧縮対象のデータは、…abc…abcd…dcba…の順に格納されている。
【0005】
一方、符号化部は、圧縮対象のデータ列のうち、これから符号化しようとする圧縮対象のデータが格納される部分である。符号化部には、これから符号化しようとする圧縮対象のデータのうち、次に符号化する圧縮対象のデータ(図中符号化部の左端のデータ)から、図中右側へ向かって、これ以後順次符号化する所定数の圧縮対象のデータが格納される。図示例の場合、符号化部内の圧縮対象のデータは、abcde…の順に格納されている。
【0006】
図中圧縮対象のデータ列の上に引かれた線は、参照部に格納された圧縮対象のデータのうち、符号化部に格納された次に符号化する圧縮対象のデータに一致するデータを示す。また、図中、参照部に格納された圧縮対象のデータの上に示されている数字は、参照部の図中左端の圧縮対象のデータからの順番(バイト数)を示す。
【0007】
例えば、参照部の図中左端の圧縮対象のデータから10〜13番目の3バイトのデータabcは、符号化部に格納された次に符号化する圧縮対象のデータabcde…のうち、最初の3バイトのデータabcと一致する。また、参照部の図中左端の圧縮対象のデータから20〜24番目の4バイトのデータabcdは、同じく次に符号化する圧縮対象のデータabcde…のうち、最初の4バイトのデータabcdと一致する。
【0008】
符号化部に格納された圧縮対象のデータは、符号化が終了した後、順次符号化部側から参照部側へシフト出力される。また、符号化部には、圧縮対象のデータ列の中から、新たな圧縮対象のデータ(図中符号化部の右端のデータよりも右側に存在する圧縮対象のデータ)が順次シフト入力される。すなわち、参照部および符号化部は、圧縮対象のデータ列に対して順次右側へスライドされる。このため、これらの参照部と符号化部を併せてスライド部という。
【0009】
圧縮対象のデータ列の圧縮処理、すなわち各圧縮対象のデータの符号化は、符号化部に格納された次に符号化する圧縮対象のデータ、すなわち図中符号化部の左端の圧縮対象のデータから順次行われる。
【0010】
符号化を行う場合、参照部に格納された圧縮対象のデータの中から、符号化部に格納された次に符号化する圧縮対象のデータに最長一致するデータを検出する。そして、この検出結果に基づき、符号化が終了した後のデータとして、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットと、一致するデータが存在しない、符号化部に格納された圧縮対象のデータ(不一致データ)とを含むデータを生成する。
【0011】
すなわち、LZ77方式の場合、符号化された後のデータは、[一致箇所、長さ、不一致データ]の形式で符号化される。
【0012】
符号化が終了した後、前述のように、符号化部に格納された圧縮対象のデータが順次符号化部側から参照部側へシフト出力されると共に、符号化部には、圧縮対象のデータ列の中から、新たな圧縮対象のデータが順次シフト入力される。以後同様にして、符号化部に格納された圧縮対象のデータのうち、次に符号化する圧縮対象のデータに対して前述の動作が繰り返し行われ、最終的に圧縮対象のデータ列が圧縮処理される。
【0013】
ところで、LZ77方式の場合、参照部に格納された圧縮対象のデータの中に、符号化部に格納された圧縮対象のデータに一致する圧縮対象のデータが存在しない場合、符号化された後のデータが符号化される前のデータよりも大きくなるという問題がある。
【0014】
この問題を解決するために提案されたのが、下記非特許文献2において提案されたLZSS方式である。LZSS方式は、LZ77方式において、符号化された後のデータの中に一致の有無を示す情報を入れて、一致しなかったときの冗長性を減らすようにしたものである。
【0015】
LZSS方式では、符号化が終了した後のデータとして、一致するデータが存在しない場合には、一致するデータが存在しないことを示すビットと、一致するデータが存在しない、符号化部に格納された圧縮対象のデータとを含むデータを生成し、一致するデータが存在する場合には、一致するデータが存在することを示すビットと、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットとを含むデータを生成する。
【0016】
すなわち、LZSS方式の場合、符号化された後のデータは、一致するデータが存在しない場合には、例えば[‘0’、不一致データ]の形式で符号化される。これに対し、一致するデータが存在する場合には、符号化された後のデータは、例えば[‘1’、一致箇所、長さ]の形式で符号化される。この例の場合、一致するデータが存在しないことを示すビットとして‘0’、一致するデータが存在することを示すビットとして‘1’を使用した。
【0017】
LZ77方式に限らず、LZSS方式においても同様に、参照部に格納する圧縮対象のデータ量が多くなるほど、参照部の中に、符号化部に格納された圧縮対象のデータと一致する圧縮対象のデータが存在する可能性は高くなる。しかし、LZスライド辞書法を採用した圧縮回路を構成する場合、参照部に格納するデータ量が多くなるほど、データを保持するための大容量のバッファが必要になり、回路規模が大きくなるという問題点があった。
【0018】
【非特許文献1】
論文「A Universal Algorithm for Sequential Data Compression 」、IEEE Transaction on Information Theory、1977年
【非特許文献2】
論文「Better OPM/L Text Compression 」、IEEE Transaction Commun.Vol.COM−34, No.12 、1986年12月
【0019】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点を解消し、参照部に格納する圧縮対象のデータ量を増やすことなく、圧縮処理した後のデータの圧縮率を向上させることができるデータ圧縮方法を提供することにある。
【0020】
【課題を解決するための手段】
上記目的を達成するために、本発明は、LZスライド辞書法に基づいて、圧縮対象のデータ列を、符号化が終了した後の圧縮対象のデータが格納された参照部と、これから符号化しようとする圧縮対象のデータが格納された符号化部とに分け、前記参照部に格納された圧縮対象のデータの中から、前記符号化部に格納された圧縮対象のデータに最長一致するデータを検出し、その検出結果に基づいて、前記符号化部に格納された圧縮対象のデータを符号化し、この符号化が終了した後の圧縮対象のデータを前記符号化部から前記参照部へシフトすることを繰り返し行って、前記圧縮対象のデータ列を圧縮処理するデータ圧縮方法であって、前記参照部に格納された圧縮対象のデータと当該参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを用いて、前記符号化部に格納された圧縮対象のデータを符号化し、
前記符号化が終了した後のデータとして、一致するデータが存在しない場合には、前記一致するデータが存在しないことを示すビットと、前記一致するデータが存在しない、前記符号化部に格納された圧縮対象のデータとを含むデータを生成し、
前記一致するデータが存在する場合には、前記一致するデータが存在することを示すビットと、前記符号化部に格納された圧縮対象のデータを符号化した際の、前記参照部に格納された圧縮対象のデータの配列を規定するビットと、前記参照部における一致箇所を示すビットと、前記一致するデータの長さを示すビットとを含むデータを生成することを特徴とするデータ圧縮方法を提供するものである。
【0021】
ここで、前記参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを2種類以上用いて前記符号化を行うのが好ましい。
【0022】
また、前記圧縮対象のデータ列を圧縮処理した後のデータは、ヘッダ情報として、前記符号化部に格納された圧縮対象のデータを符号化した際の、前記参照部に格納された圧縮対象のデータの配列を規定するビットと、前記参照部に格納された圧縮対象のデータを前記符号化の時にどのような配列に並べ替えたのかというデータの配列方式の情報と、の間の対応関係を示す情報を含むのが好ましい。
【0023】
【発明の実施の形態】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のデータ圧縮方法を詳細に説明する。
【0024】
図1は、本発明のデータ圧縮方法を説明する一実施形態の概念図である。
図1(a)および(b)は、それぞれ参照部に格納された圧縮対象のデータを順方向に並べた場合、および逆方向に並べた場合を示す。同図において、参照部、符号化部、スライド部、図中圧縮対象のデータ列の上に引かれた線、および参照部に格納された圧縮対象のデータの上に示されている数字は、従来技術の説明の欄で説明した通りである。
【0025】
すなわち、参照部には、符号化が終了した後の圧縮対象のデータのうち、最後に符号化が終了した圧縮対象のデータ(図中参照部の右端のデータ)から、図中左側へ向かって、それ以前に符号化が終了した所定数の圧縮対象のデータが格納される。また、符号化部には、これから符号化しようとする圧縮対象のデータのうち、次に符号化する圧縮対象のデータ(図中符号化部の左端のデータ)から、図中右側へ向かって、これ以後順次符号化する所定数の圧縮対象のデータが格納される。
【0026】
図中圧縮対象のデータ列の上に引かれた線は、参照部に格納された圧縮対象のデータのうち、符号化部に格納された次に符号化する圧縮対象のデータに一致するデータを示す。また、図中、参照部に格納された圧縮対象のデータの上に示されている数字は、参照部の図中左端の圧縮対象のデータからの順番(バイト数)を示す。
【0027】
本発明のデータ圧縮方法では、LZスライド辞書法に基づいて、圧縮対象のデータ列を圧縮処理する。
【0028】
すなわち、圧縮対象のデータ列を参照部と符号化部とに分け、参照部に格納された圧縮対象のデータの中から、符号化部に格納された次に符号化する圧縮対象のデータに最長一致するデータを検出する。そして、その検出結果に基づいて、符号化部に格納された圧縮対象のデータを符号化し、この符号化が終了した後の圧縮対象のデータを符号化部から参照部へシフトすることを繰り返し行って、圧縮対象のデータ列を圧縮処理する。
【0029】
なお、LZスライド辞書法については、従来技術の説明の欄でも述べた通りであり、また、上記非特許文献1,2において詳細に説明されているので、ここでは、その詳細な説明は省略する。
【0030】
本発明のデータ圧縮方法の最大の特徴は符号化の方式にあり、これ以外の部分は、従来公知のLZスライド辞書法と基本的に同一である。従って、以下、本発明に係わる符号化の方式について詳細に説明する。
【0031】
符号化する場合、参照部に格納された圧縮対象のデータとこの参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを用いて、符号化部に格納された圧縮対象のデータを符号化する。本実施形態では、参照部に格納された圧縮対象のデータを順方向に並べたデータ(従来通りの配列のデータ)と圧縮対象のデータを逆方向に並べ替えたデータ(1バイト単位で配列を反転させたデータ)を用いて、符号化部に格納された圧縮対象のデータを符号化する。
【0032】
図1(a)に示す例では、参照部に格納された圧縮対象のデータが順方向に並べられている。この場合、参照部に格納された圧縮対象のデータは、例えば…dcba…の順に配列されており、符号化部に格納された圧縮対象のデータabcde…に一致するデータは存在しない。
【0033】
これに対し、図1(b)に示す例は、同図(a)に示す例に対して、参照部に格納された圧縮対象のデータを逆方向に並べ替えたものである。この場合、参照部に格納された圧縮対象のデータは、…abcd…の順に配列される。したがって、参照部に格納された圧縮対象のデータの中には、符号化部に格納された圧縮対象のデータabcde…のうち、先頭からの4バイトのデータabcdに一致するデータが存在する。
【0034】
上記のようにして、参照部に格納された圧縮対象のデータを順方向に並べたデータと、この参照部に格納された圧縮対象のデータを逆方向に並べたデータと、の両方について、参照部に格納された圧縮対象のデータの中から、符号化部に格納された次に符号化する圧縮対象のデータに最長一致するデータを検出する。そして、その検出結果に基づいて、符号化部に格納された圧縮対象のデータを符号化する。
【0035】
符号化が終了した後のデータとしては、符号化部に格納された次に符号化する圧縮対象のデータと一致するデータが参照部に存在しない場合には、一致するデータが存在しないことを示すビットと、一致するデータが存在しない、符号化部に格納された次に符号化する圧縮対象のデータとを含むデータを生成する。すなわち、一致するデータが存在しない場合、符号化された後のデータは、例えば[‘0’、不一致データ]の形式で符号化される。
【0036】
一致するデータが存在する場合には、最長一致するデータについて、一致するデータが存在することを示すビットと、符号化部に格納された圧縮対象のデータを符号化した際の、参照部に格納された圧縮対象のデータの配列を規定するビットと、参照部における一致箇所を示すビットと、一致するデータの長さを示すビットとを含むデータを生成する。すなわち、一致するデータが存在する場合、符号化された後のデータは、例えば[‘1’、データ配列、一致箇所、長さ]の形式で符号化される。
【0037】
このように、符号化する場合に、参照部に格納された圧縮対象のデータを所定の配列に順次並べ替えたデータを使用することによって、参照部のデータ容量を増加させることなく、符号化部に格納された圧縮対象のデータに一致するデータが参照部に存在する確率を向上させることができる。すなわち、参照部を実現するためのバッファ等の回路規模を増加させることなく、圧縮対象のデータ列の圧縮率を向上させることができる。
【0038】
なお、上記例では、一致するデータが存在しないことを示すビットとして‘0’、一致するデータが存在することを示すビットとして‘1’を使用したが、‘0’と‘1’を逆に使用し、一致するデータが存在しないことを示すビットとして‘1’、一致するデータが存在することを示すビットとして‘0’を使用してもよい。
【0039】
また、上記実施形態では、符号化部に格納された圧縮対象のデータを符号化する際に、参照部に格納された圧縮対象のデータを順方向に並べたデータ(従来通りの配列のデータ)と、圧縮対象のデータを逆方向に並べたデータ(1バイト単位で配列を反転させたデータ)と、を用いる例を示した。このように、参照部に格納された圧縮対象のデータの配列方式が2つだけの場合、データ配列を規定するビットは1ビットで済む。
【0040】
これに対し、データの配列方式を3つ以上使用し、すなわち参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを2種類以上用い、これらの2種類以上の配列方式を適宜組み合わせて使用するようにしてもよい。この場合、データ配列を規定するビットは複数ビット必要である。
【0041】
データの配列方式としては、上記実施形態のように、1バイト単位でデータを反転させる方式の他、例えば2バイト単位、4バイト単位というように、任意のバイト数を単位としてデータを入れ替える方式も利用可能である。また、例えばRGB(赤緑青)の3色のデータの繰り返しで構成される画像データRGBRGBRGB…に対し、RRR…GGG…BBB…というように、データを入れ替えてもよい。あるいは他のどのような配列方式を採用してもよい。
【0042】
圧縮処理した後のデータを伸張処理する場合、符号化が終了した後のデータに含まれるデータ配列の情報と、参照部に格納された圧縮対象のデータを符号化の時にどのような配列に並べ替えたのかというデータの配列方式の情報との間の対応関係を表す情報が必要になる。上記実施形態の場合、例えばデータ配列の情報が‘0’の場合にはデータの配列方式は順方向であり、‘1’の場合には逆方向であるという情報が必要である。
【0043】
例えば、あらかじめ圧縮処理を行う側と伸張処理を行う側の両方で、データ配列の情報とデータの配列方式の情報との間の対応関係を取り決めておくおくことにより、問題なく伸張処理を行うことができる。例えば、上記の通り、データ配列の情報とデータの配列方式の情報との間の対応関係を定義しておけば、伸張処理を行う側は、データ配列の情報が‘0’の場合にはデータの配列方式は順方向であり、‘1’の場合には逆方向であるということを理解できる。
【0044】
あるいは、圧縮処理した後のデータの中に、ヘッダ情報として、データ配列の情報とデータの配列方式の情報との間の対応関係を表す情報を含めるようにしてもよい。この場合、伸張処理を行う側は、このヘッダ情報に含まれる、データ配列の情報とデータの配列方式の情報との間の対応関係を表す情報に基づいて、両者の対応関係を理解することができるので、この対応関係に基づいて問題なく伸張処理を行うことができる。
【0045】
本発明のデータ圧縮方法は、基本的に以上のようなものである。
以上、本発明のデータ圧縮方法について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【0046】
【発明の効果】
以上詳細に説明した様に、本発明のデータ圧縮方法は、参照部に格納された圧縮対象のデータとこのデータを所定の配列に並べ替えたデータを用いて、符号化部に格納された圧縮対象のデータを符号化し、一致するデータが存在する場合、符号化が終了した後のデータとして、符号化部に格納された圧縮対象のデータを符号化した際の、参照部に格納された圧縮対象のデータの配列を規定するビットを含むデータを生成するようにしたものである。
これにより、本発明のデータ圧縮方法によれば、参照部を実現するためのバッファ等の回路規模を増加させることなく、見かけ上のデータ量を増加させることができるため、符号化部に格納された圧縮対象のデータに一致するデータが参照部に存在する確率を向上させることができ、圧縮対象のデータ列の圧縮率を向上させることができる。
【図面の簡単な説明】
【図1】(a)および(b)は、本発明のデータ圧縮方法を説明する一実施形態の概念図である。
【図2】従来のデータ圧縮方法を説明する一例の概念図である。
Claims (3)
- LZスライド辞書法に基づいて、圧縮対象のデータ列を、符号化が終了した後の圧縮対象のデータが格納された参照部と、これから符号化しようとする圧縮対象のデータが格納された符号化部とに分け、前記参照部に格納された圧縮対象のデータの中から、前記符号化部に格納された圧縮対象のデータに最長一致するデータを検出し、その検出結果に基づいて、前記符号化部に格納された圧縮対象のデータを符号化し、この符号化が終了した後の圧縮対象のデータを前記符号化部から前記参照部へシフトすることを繰り返し行って、前記圧縮対象のデータ列を圧縮処理するデータ圧縮方法であって、
前記参照部に格納された圧縮対象のデータと当該参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを用いて、前記符号化部に格納された圧縮対象のデータを符号化し、
前記符号化が終了した後のデータとして、一致するデータが存在しない場合には、前記一致するデータが存在しないことを示すビットと、前記一致するデータが存在しない、前記符号化部に格納された圧縮対象のデータとを含むデータを生成し、
前記一致するデータが存在する場合には、前記一致するデータが存在することを示すビットと、前記符号化部に格納された圧縮対象のデータを符号化した際の、前記参照部に格納された圧縮対象のデータの配列を規定するビットと、前記参照部における一致箇所を示すビットと、前記一致するデータの長さを示すビットとを含むデータを生成することを特徴とするデータ圧縮方法。 - 前記参照部に格納された圧縮対象のデータを所定の配列に並べ替えたデータを2種類以上用いて前記符号化を行う請求項1に記載のデータ圧縮方法。
- 前記圧縮対象のデータ列を圧縮処理した後のデータは、ヘッダ情報として、前記符号化部に格納された圧縮対象のデータを符号化した際の、前記参照部に格納された圧縮対象のデータの配列を規定するビットと、前記参照部に格納された圧縮対象のデータを前記符号化の時にどのような配列に並べ替えたのかというデータの配列方式の情報と、の間の対応関係を示す情報を含む請求項1または2に記載のデータ圧縮方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002279832A JP2004120251A (ja) | 2002-09-25 | 2002-09-25 | データ圧縮方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002279832A JP2004120251A (ja) | 2002-09-25 | 2002-09-25 | データ圧縮方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004120251A true JP2004120251A (ja) | 2004-04-15 |
Family
ID=32274722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002279832A Pending JP2004120251A (ja) | 2002-09-25 | 2002-09-25 | データ圧縮方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004120251A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006295853A (ja) * | 2005-04-14 | 2006-10-26 | Sony Corp | 符号化装置、復号装置、および、符号化方法ならびに復号方法 |
-
2002
- 2002-09-25 JP JP2002279832A patent/JP2004120251A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006295853A (ja) * | 2005-04-14 | 2006-10-26 | Sony Corp | 符号化装置、復号装置、および、符号化方法ならびに復号方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5608396A (en) | Efficient Ziv-Lempel LZI data compression system using variable code fields | |
WO2019153700A1 (zh) | 编解码方法、装置及编解码设备 | |
US10831655B2 (en) | Methods, devices and systems for compressing and decompressing data | |
Alakuijala et al. | Brotli compressed data format | |
US7616138B2 (en) | Data compression using a stream selector with edit-in-place capability for compressed data | |
JP7031828B2 (ja) | 意味論的値のデータ圧縮及び解凍のための方法、装置、及びシステム | |
JP4479530B2 (ja) | データ圧縮装置、及びデータ復元装置 | |
US5877711A (en) | Method and apparatus for performing adaptive data compression | |
US8456332B2 (en) | Systems and methods for compression of logical data objects for storage | |
US8125357B1 (en) | Deflate decompressor | |
US7872598B2 (en) | Accelerated decompression | |
US7764202B2 (en) | Lossless data compression with separated index values and literal values in output stream | |
US5874908A (en) | Method and apparatus for encoding Lempel-Ziv 1 variants | |
JPH1065551A (ja) | データ圧縮方法 | |
JP2003524983A (ja) | 複数コーダを用いる最適化ロスレス圧縮のための方法及び装置 | |
JP5913748B2 (ja) | セキュアで損失のないデータ圧縮 | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
JP2004120251A (ja) | データ圧縮方法 | |
JP2940948B2 (ja) | データ圧縮方式 | |
US6819272B2 (en) | System, method and computer readable medium for compressing a data sequence for partial decompressing | |
US20080001790A1 (en) | Method and system for enhancing data compression | |
US6501395B1 (en) | System, method and computer readable medium for compressing a data sequence | |
US7750826B2 (en) | Data structure management for lossless data compression | |
US11967975B1 (en) | Method and apparatus for recursive data compression using seed bits | |
Alakuijala et al. | RFC 7932: Brotli Compressed Data Format |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20050427 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060627 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061031 |