JP2019036810A - データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法 - Google Patents
データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法 Download PDFInfo
- Publication number
- JP2019036810A JP2019036810A JP2017156328A JP2017156328A JP2019036810A JP 2019036810 A JP2019036810 A JP 2019036810A JP 2017156328 A JP2017156328 A JP 2017156328A JP 2017156328 A JP2017156328 A JP 2017156328A JP 2019036810 A JP2019036810 A JP 2019036810A
- Authority
- JP
- Japan
- Prior art keywords
- code
- data
- relative position
- matching
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】復元速度を落とさずに符号量を減らす。【解決手段】データ圧縮装置は、一致検出部と一位置保持部と符号形式選択部と符号化部とを備える。一致検出部は、入力されたデータにおける先行の部分列と一致する一致列と、部分列の一致列からの相対位置と、一致列の長さである一致長と、を検出する。一位置保持部は、一つ前に符号化された相対位置を保持する。符号形式選択部は、相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、一致検出部により検出された相対位置の近さに基づいて、1つを選択する。符号化部は、バイト単位に符号を配置すると共に、一致検出部により検出された相対位置が、一位置保持部に保持されている一つ前に符号化された相対位置と同一の場合に、選択された符号形式に基づき、一致検出部により検出された相対位置を省略して符号化する。【選択図】図2
Description
本発明は、データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法に関する。
データの圧縮技術であるロスレスデータ圧縮技術の性能は、圧縮率(圧縮率=(圧縮後のデータサイズ)/(元のデータサイズ))、圧縮速度、復元速度で測られる。従来のロスレスデータ圧縮方式としては、例えばLZ77方式やLZ4方式が知られる。
LZ77方式は、データ圧縮装置に入力されたデータにおいて、先行の部分列(前部分列とも記載する)と一致する部分列(一致列とも記載する)がある場合、一致列を、一致長と一致位置に置き換え、データ量を削減する方式である。なお、一致長とは、一致列の長さであり、一致位置とは、一致列と一致する前部分列の当該一致列からの相対位置である。またこの方式では、入力されるデータにおいて一致する前部分列が存在しない非一致列がある場合に、圧縮データに、その非一致列と、その長さである非一致長とを含ませる。
LZ4方式は、LZ77方式に属する方式であり、一致長、一致位置、非一致長の各々に予め定めた固定長のビットを割当てて符号化する方式である。なお、この固定長のビットはバイト単位に配置されるものである。この圧縮方式において非一致列は、そのまま圧縮データの一部とされる。このLZ4方式を用いた場合の復元速度は、LZ77方式において最も高速な復元速度の方式の一つとなる。
データの読み出しの速度の向上のためには、高い復元速度が求められると同時に、復元対象となるデータ量(符号量)がより少ないことが求められる。復元速度としては、例えば圧縮を行わない場合の読出速度の2、3倍程度の復元速度が求められることがある。
LZ4方式においては、一致位置に固定サイズである2バイトを割当て符号化する。この場合、圧縮できない非一致列を除き、符号の大半を一致位置に割り当てられたビットが占めてしまい、これにより圧縮率が低下する。
一方、ハフマン符号等により、一致位置の符号化において符号を可変長とすると、圧縮率は向上するが、復元速度が記憶媒体等の読出速度より遅くなる問題が発生し得る。
本発明の一つの側面に係る目的は、復元速度を落とさずに符号量を減らすことである。
本発明の一つの態様に係るデータ圧縮装置は、一致検出部と一位置保持部と符号形式選択部と符号化部とを備える。一致検出部は、入力されたデータにおける先行の部分列と一致する一致列と、部分列の一致列からの相対位置と、一致列の長さである一致長と、を検出する。一位置保持部は、一つ前に符号化された相対位置を保持する。符号形式選択部は、相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、一致検出部により検出された相対位置の近さに基づいて、1つを選択する。符号化部は、バイト単位に符号を配置すると共に、一致検出部により検出された相対位置が、一位置保持部に保持されている一つ前に符号化された相対位置と同一の場合に、選択された符号形式に基づき、一致検出部により検出された相対位置を省略して符号化する。
復元速度を落とさずに符号量を減らすことができる。
(第1の実施形態)
本実施形態に係るデータ圧縮方法は、LZ77方式に基づく圧縮方法であり、更に以下の点に着目されたものである。まず第1に、表形式データ等のデータでは、同じ部分列が繰返し用いられる傾向がある。第2に、このようなデータにおいては、一致列毎の一致位置が連続して同一となりやすい性質がある。また第3に、このようなデータにおいては、同一の部分列が近接して繰り返される場合が少なくないため、非一致長や、非一致列、又は一致位置などを短いビットで表現できる場合が少なくない。このため本実施形態では、圧縮の際に一致位置に係る情報に割り当てるバイトやビットの数を少なくし、これにより圧縮データのデータ量を減らし圧縮率を向上させる。また本実施形態においては、高速な復元速度の維持のため、符号化する部分列に割り当てるビットの長さを予め定めた固有のものとし、当該ビットをバイト単位に配置する。
本実施形態に係るデータ圧縮方法は、LZ77方式に基づく圧縮方法であり、更に以下の点に着目されたものである。まず第1に、表形式データ等のデータでは、同じ部分列が繰返し用いられる傾向がある。第2に、このようなデータにおいては、一致列毎の一致位置が連続して同一となりやすい性質がある。また第3に、このようなデータにおいては、同一の部分列が近接して繰り返される場合が少なくないため、非一致長や、非一致列、又は一致位置などを短いビットで表現できる場合が少なくない。このため本実施形態では、圧縮の際に一致位置に係る情報に割り当てるバイトやビットの数を少なくし、これにより圧縮データのデータ量を減らし圧縮率を向上させる。また本実施形態においては、高速な復元速度の維持のため、符号化する部分列に割り当てるビットの長さを予め定めた固有のものとし、当該ビットをバイト単位に配置する。
本実施形態に係るデータ圧縮装置は、一致位置の情報(当該情報も一致位置と記載する)を保持する。そしてデータ圧縮装置は、入力されたデータにおいて新たな一致列を検出した場合で、当該一致列の一致位置が先に保持されていた一致位置と連続して同一である場合に、当該一致列の一致位置を省略して符号化する。またデータ圧縮装置は、一致位置が近接する場合と遠い場合とで、符号を切り替える。この具体的な説明を以下に述べる。
データ圧縮装置は、一致位置に対し割当てるビット(バイト)の長さがそれぞれ異なる複数の符号形式のいずれかを選択し、選択した符号形式に基づき、データの圧縮処理を行う。本実施形態においては、この符号形式は4種類存在するとする。データ圧縮装置は、入力されたデータにおいて、一致列を検出したときに、その一致列の最後までのデータを一塊として符号化する。当該一塊のデータをサブデータとも記載する。データ圧縮装置は、サブデータに含まれる一致列の一致位置が遠いか近いかにより、符号形式の1つを選択して、これに基づき当該サブデータの符号化を行う。
データ圧縮装置は、サブデータがどの符号形式に基づいて符号化されたかを識別するための情報(符号形式情報とも記載する)を割り当てたビット(識別ビットとも記載する)を、圧縮後の当該サブデータに付与する。より具体的には、本実施形態に係るデータ圧縮装置は、4つの連続するサブデータの符号化において、当該4つのサブデータを一まとめにしたデータの先頭に、これらの各サブデータの識別ビットを、4つのサブデータの順番に従って付与する。この識別ビットは、本実施形態においては、1つのサブデータに対し2ビットである。そのため、4つのサブデータの先頭には、これらに対応する4つの識別ビットを合わせた1バイトが付与されることになる。なお、識別ビットを合わせたものがバイト単位になれば、上述した態様に限定されない。例えば、2つのサブデータを一まとまりとし、これらの各識別ビットを4ビットとし、当該2つのサブデータの先頭にこれらの2つの識別ビットを付与してもよい。
図1および2を用いて具体的に説明する。図1は圧縮対象となる元データとLZ77方式による圧縮データの各一例を示す図である。圧縮対象となる元のデータは、図1に示されるように、「20160401,001,20160402,002,20160405,」である。これらの各数字には1バイトが割り当てられている。まず、このデータのうちの最初の一致列は、その4アドレス前のアドレス7から9までの部分列「01,」と一致する、アドレス11からアドレス13までの部分列「01,」である。このため、最初のサブデータは、アドレス1から13までとなる。
なお、本実施形態においては、一致長が2バイト以下の一致列を一致列として扱わないこととする。なぜなら、一致長が2バイト以下の一致列の場合、これを一致長、又は一致長と一致列に置き換えて符号化しても、符号量が減らない場合が多いと考えられるからである。
ここで図1を参照し、LZ77方式により、アドレス1から13までのサブデータである「20160401,001,」を圧縮した場合について説明する。このとき圧縮されたデータには、一致列であるアドレス11から13までの部分列に代わり、アドレス11から13までの一致長の3が含まれる。そして、当該一致列の先頭のアドレス11からの、前部分列「01,」の先頭のアドレス7の相対位置である4が、一致位置として圧縮データに含まれることになる。また当該サブデータ「20160401,001,」において、非一致列であるアドレス1から10までの「20160401,0」と、この場合の非一致長である10が、圧縮データに含まれることになる。
アドレス14から20までのサブデータ「2016040」は、13アドレス前の部分列と同一であるため、圧縮データには、一致位置として13が含まれることになり、また当該一致列「2016040」の一致長の7が含まれることになる。当該サブデータには非一致列は存在しないため、当該サブデータを圧縮したデータにおいては、非一致長は「0」であり、非一致列の部分は存在しない。なお、以下では圧縮されたサブデータを、圧縮サブデータ又は符号とも記載する。ただし符号には、圧縮されたサブデータ以外に、圧縮された任意のデータの意味が含まれるとする。
図2は、本実施形態に係るデータ圧縮方法を説明するための図である。ここでも元データとして図1に示したものを用いる。図2の左下の四角内において、本実施形態における符号形式が示される。本実施形態では、4つの符号形式(符号形式A、B、C、D)が存在する。サブデータ毎に、これらの符号形式のうちの1つが選択され、これに基づき圧縮サブデータが生成される。本実施形態においては、上述のように4つの圧縮サブデータは一まとめにされる。そしてこの4つの圧縮サブデータの先頭には、これらの各圧縮サブデータの生成の際に選択された符号形式を示す識別ビットが、4つの圧縮サブデータの順番に従って、まとめられて付与される。
図2の左下において、各符号の先頭の1バイトには非一致長と一致長が割り当てられる。ここでは非一致長に割り当てるビットを一致長に割り当てるビットの前に配置しているが、これは一例であり、この順番に限定されない。ここでは、非一致長と一致長とに対し、それぞれ4ビット割り当てられる。ここでは、非一致長のビット表現における最大値を「1110」とする。このため非一致長に割り当てられるビットが「1111」の場合には、これは非一致長をビット表現したものとはならない。代わりに、当該「1111」は、新たに非一致長に割り当てるための1バイトが追加されたことを示すものである。当該1バイトは、非一致長と一致長が割り当てられる1バイトのすぐ後ろに追加される。この追加された1バイトと、元の4ビットにより、非一致長はビット表現される。
同様に、サブデータの一致長のビット表現における最大値は「1110」であり、「1111」のビットの場合、これは、更に一致長に割り当てられるための1バイトを追加したことを示すものである。この追加される1バイトは、非一致長と一致長に割り当てられる1バイト、又は非一致長に更に割り当てられる1バイトのすぐ後ろに追加される。
また本実施形態に係るデータ圧縮装置1は、上述したように、元データにおいて一致長が3バイト以上の一致列を、一致長、又は一致長と一致位置に置き換え符号化する。このため、符号化された一致長は、「実際の一致長−3」をビット表現したものとなる。また一致長が2バイト以下の一致列は、一致列として、後述する検出の対象とはならない。
各符号には、次に非一致列が割り当てられる。なおこの非一致列が割り当てられるビットやバイトの数は非一致長に応じて任意である。
次に符号形式について詳細に説明する。符号形式Aは、一致位置が、前の符号における一致位置と等しい場合に選択される符号形式である。例えば、図2の上の四角内に示されたLZ77方式による圧縮データにおいて、左から2番目、3番目、4番目の各括弧において示される圧縮サブデータ内の一致位置の値は互いに等しく13である。このとき、元データにおける3番目と4番目の各サブデータの圧縮のため、符号形式Aが選択される。符号形式Aにおいては、一致位置に割り当てるビットの長さは0ビットであり、一致位置は符号中に含まれない。符号形式Aの場合の識別ビットは、図2に示す一例では「00」となる。
符号形式Bは、一致位置が、前の符号の一致位置と異なり、且つ1バイトで表現可能な数(28−1=255以下の整数)の場合に選択される符号形式である。この符号形式では、一致位置に対し1バイトが割り当てられる。符号形式Bの場合の識別ビットは、図2に示す一例では「01」となる。
符号形式Cは、一致位置が、前の符号の一致位置と異なり、且つ、1バイトでは表現できず、2バイトで表現可能な数(216−1以下の整数)の場合に選択される符号形式である。この符号形式では、一致位置に対し2バイトが割り当てられる。符号形式Cの場合の識別ビットは、図2に示す一例では「10」となる。
符号形式Dは、一致位置が、前の符号の一致位置と異なり、且つ、2バイトでは表現できず、3バイトで表現可能な数(224−1以下の整数)の場合に選択される符号形式である。この符号形式では、一致位置に対し3バイトが割り当てられる。符号形式Cの場合の識別ビットは、図2に示す一例では「11」となる。
各符号形式における、非一致列が割り当てられるビットを除く、識別ビットの2ビットを含めた符号のビットの総数は、例えば符号形式Aの場合には10(2(識別ビット)+4(非一致長)+4(一致長)+0(一致位置)=10)となる。同様に、符号形式Bでは18、符号形式Cでは26、符号形式Dでは34となる。
本実施形態に係るデータ圧縮装置により、図1に示す元データを圧縮して得られるデータは、図2の右下に示される。ここでは、図2の上のLZ77方式による圧縮データを用いて、図2の右下のデータを説明する。まず、LZ77方式による圧縮データのうちの左から1番目の圧縮サブデータを参照すると、非一致長は10、一致長は3である。このため、図2の右下の1番目の符号(符号1)において先頭は、「10」をビット表現したものと、3を差し引かれた「3」をビット表現したものとをこの順番で組み合わせたものとなる。
また当該符号1では、非一致列である「20160401,0」に10バイトが割り当てられている。また、このとき一致位置は4であり、これは1バイトで表される数であるため、符号形式Bが選択されている。このため符号1の識別ビットは「01」となる。
同様に、LZ77方式による圧縮データのうちの左から4番目の圧縮サブデータを参照すると、一致位置は13である。これは、当該圧縮データにおいて、直前の、左から3番目の圧縮サブデータにおける一致位置の13と等しい。このため、図2の右下における4番目の符号(符号4)の生成において符号形式Aが選択されることがわかる。そして、これにより符号4の生成において、一致位置には0バイトが割り当てられることがわかる。
図3は、本実施形態に係るデータ圧縮装置1の機能ブロック図である。データ圧縮装置1は、入力バッファ保持部10、一致検出部11、一位置保持部12、位置比較部13、保持位置更新部14、および符号形式選択部15等を備える。また更にデータ圧縮装置1は、符号形式情報出力部16、一致長/一致位置出力部17、非一致長/非一致列出力部18、符号構成部19、および出力バッファ保持部19’等を備える。ここで符号形式情報出力部16と一致長/一致位置出力部17と符号構成部19との組み合わせ、又は、符号形式情報出力部16と一致長/一致位置出力部17と非一致長/非一致列出力部18と符号構成部19との組み合わせを符号化部とも記載する。
入力バッファ保持部10、一致検出部11、および非一致長/非一致列出力部18は、互いに接続されている。一致検出部11、位置比較部13、および符号形式選択部15は、互いに接続されている。一位置保持部12、位置比較部13、および保持位置更新部14は、互いに接続されている。符号形式選択部15は、符号形式情報出力部16および一致長/一致位置出力部17に接続されている。符号形式情報出力部16、一致長/一致位置出力部17、および非一致長/非一致列出力部18は、符号構成部19に接続されている。符号構成部19は、出力バッファ保持部19に接続されている。なお、ここに示した接続関係は一例であり、これ以外の接続関係があってもよい。
データ圧縮装置1は、入力バッファ保持部10を介し被圧縮データを入力される。入力バッファ保持部10は、入力された被圧縮データを保持する。
一致検出部11は、被圧縮データから、一致列を検出すると共に、当該一致列の一致位置、および一致長を検出する。当該検出は、被圧縮データを最初から順次読み取って行われる。一致検出部11は、被圧縮データにおいて一致列が検出される毎に、当該一致列を含むサブデータを生成する。なお、一致検出部11は、被圧縮データをまとめて取得し、1以上のサブデータへと分割し、これらのサブデータに逐次的に処理を行ってもよい。
一位置保持部12は、1つ前のサブデータの符号化において用いられた一致位置(1つ前の一致位置、直前の一致位置、又は前回の一致位置とも記載する)を保持する。
位置比較部13は、現時点の符号化(復元)の処理対象のサブデータ(今回のサブデータとも記載する)における一致列の一致位置(今回の一致位置とも記載する)と、一位置保持部12に保持されている一致位置とを比較する。
保持位置更新部14は、位置比較部13により互いに比較された2つの一致位置が異なる場合に、一位置保持部12が保持する一致位置を、今回の一致位置に更新する。また保持位置更新部14は、今回の一致位置が前回の一致位置と同一である場合には、一位置保持部12が保持する一致位置を更新しない。ただしこれに限定されず、保持位置更新部14は、今回の一致位置が前回の一致位置と同一である場合には、一位置保持部12が保持する一致位置を同じ値に更新してもよい。
符号形式選択部15は、一致検出部11より一致長と一致位置等を取得する。また符号形式選択部15は、位置比較部13による処理結果を取得し、今回の一致位置が、位置比較部13に保持されていた一致位置と同一の場合には符号形式Aを選択する。それ以外の場合には符号形式選択部15は、今回の一致位置が近いか遠いかに応じ、符号形式B、C、Dのいずれかを選択する。符号形式選択部15は、選択した符号形式に対応する符号形式情報を符号形式情報出力部16に出力する。なお符号形式選択部15は、位置比較部13から一致長と一致位置等を取得してもよい。
符号形式情報出力部16は、符号形式選択部15からの符号形式情報を符号化し、これを符号構成部19に出力する。符号形式情報出力部16は、1つの符号形式情報を符号化するたびに、これを符号構成部19に出力する。ただしこれに限定されず、符号形式情報出力部16は、例えば4つの符号化情報の符号化毎に、これらをまとめたものを符号構成部19へ出力してもよい。
一致長/一致位置出力部17は、符号形式選択部15より今回のサブデータにおける一致列の一致長と符号形式情報、又は一致長と一致列と符号形式情報を取得する。また一致長/一致位置出力部17は、符号形式に応じて今回の一致位置を符号化すると共に、今回のサブデータにおける一致列の一致長を符号化し、これらの符号化したデータを符号構成部19に出力する。
非一致長/非一致列出力部18は、一致検出部11から順次1つずつ、サブデータおよび当該サブデータ中の一致列等を取得する。そして非一致長/非一致列出力部18は、サブデータと一致列から非一致列を生成する。あるいは、非一致長/非一致列出力部18は、入力バッファ保持部10から被圧縮データ、一致検出部11から一致列等を取得してもよい。そして非一致長/非一致列出力部18は、被圧縮データにおける一致列毎にサブデータを生成し、サブデータから一致列を省いた非一致列を生成してもよい。
非一致長/非一致列出力部18は、生成した非一致列の非一致長を導出する。当該非一致長の導出は、非一致長/非一致列出力部18が、生成した非一致列を順次カウントアップして行われる。ただし、これに限定されない。例えば、非一致長/非一致列出力部18は、入力バッファ保持部10から被圧縮データ、一致検出部11から一致列等を取得し、一致検出部11と非一致長/非一致列出力部18が同期を取りながら、バイト単位で被圧縮データを取得する場合が考えられる。そしてこの場合、非一致長/非一致列出力部18は、一致検出部11が一致列を検出した場合、通知を受けるとする。この通知までの間、非一致長/非一致列出力部18は、入力バッファ保持部10からの被圧縮データをカウントし、非一致長を導出してもよい。あるいはまた、一致検出部11が、一致列を検出するまでの間、非一致長をカウントしていき、一致列が検出されたときに、当該非一致長を非一致長/非一致列出力部18に出力してもよい。非一致長/非一致列出力部18は、非一致列と非一致長とを符号化し、これらを符号構成部19へ出力する。
符号構成部19は、符号形式情報出力部16と一致長/一致位置出力部17と非一致長/非一致列出力部18からの各符号を図2の下に示すように並べ替え、一まとめにしたものを、圧縮データを出力する。この並べ替えは、例えば以下のように行われる。符号構成部19は、符号形式情報出力部16と一致長/一致位置出力部17と非一致長/非一致列出力部18から、互いに同一の1つのサブデータに対応する各符号を取得する。そして、符号構成部19は、非一致長/非一致列出力部18からの符号を一致長/一致位置出力部17の前に配置する。そして、符号構成部19は、一致長/一致位置出力部17と非一致長/非一致列出力部18からの次のサブデータに対応する符号にも同様の処理をする。そして、符号構成部19は、当該処理後の符号を前の処理に係る符号(一致長/一致位置出力部17と非一致長/非一致列出力部18からの各符号を処理したもの)の後に配置する。本実施形態における符号構成部19は、符号形式情報出力部16からの符号(識別ビットの情報)を、入力される順番に配置する。また本実施形態における符号構成部19は、4つのサブデータに係る符号が入力されるまで、上記処理を繰り返す。そして本実施形態における符号構成部19は、4つの識別ビットの組み合わせを、上記一致長/一致位置出力部17と非一致長/非一致列出力部18からの各符号の配置処理をしたものの4つの組合せの前に付与する。
なおこれ以外にも符号構成部19は、圧縮サブデータ毎に、上記各部からの符号を、符号形式情報出力部16からの符号、非一致長/非一致列出力部18からの符号、一致長/一致位置出力部17からの符号の順に配置していってもよい。
出力バッファ保持部19’は、符号構成部19から出力された圧縮サブデータを保持し、出力する。
図4は、本実施形態に係るデータ圧縮装置による処理のフローと従来のデータ圧縮処理のフローを示す図である。図4の左側には、従来のデータ圧縮処理のフローが示され、右側には、本実施形態に係るデータ圧縮装置による処理のフローが示される。
まず、本実施形態における圧縮処理との比較のために、従来のデータ圧縮処理について端的に説明する。従来のデータ圧縮装置は、被圧縮データが入力されると、当該データにおける先行する任意の部分列と一致する一致列が存在するか探索する(ステップS100)。一致列が検出されなかった場合には(ステップS101:NO)、従来のデータ圧縮装置は非一致長をカウントアップし(ステップS102)、更に一致列の探索を行う(ステップS100)。一致列が検出された場合には(ステップS101:YES)、従来のデータ圧縮装置は、非一致長と非一致列とを符号化し(ステップS103)、一致長と一致位置とを符号化する(ステップS104)。従来のデータ圧縮装置は、被圧縮データの終了部分まで符号化が行われた場合には(ステップS105:YES)、処理を終了し、そうでない場合には(ステップS105:NO)、符号化を未だ行っていない被圧縮データにおいて一致列の探索を行う(ステップS100)。
次に、図4の右側に示されたフローチャートを用いて、本実施形態に係るデータ圧縮装置1による処理について説明する。まず初期化として、一位置保持部12は、直前の一致位置に対応するパラメータIに0を格納し、これを保持する(ステップS200)。Iへの0の格納処理は、ここでは保持位置更新部14により行われるとするが、一位置保持部12により行われてもよい。
次に、一致検出部11は、入力バッファ保持部10により入力された被圧縮データにおいて、先行する任意の部分列を一致する一致列を探索する(ステップS201)。
一致列が検出されない間(ステップS202:NO)、一致検出部11又は非一致長/非一致列出力部18は、非一致長をカウントアップする(ステップS203)。なお、非一致長の初期値は0である。
一致列が検出された場合(ステップS202:YES)、非一致長/非一致列出力部18は、非一致長と非一致列とを符号化する(ステップS203)。
位置比較部13は、一致検出部11から取得した一致位置と、一位置保持部12に保持されているIの値とを比較する(ステップS204)。
今回の一致位置とIの値とが異なる場合(ステップS204:NO)、位置比較部13は当該結果と今回の一致位置を保持位置更新部14へ出力する。保持位置更新部14は、一位置保持部12が保持するIの値を、位置比較部13から取得した今回の一致位置に更新する(ステップS205)。
今回の一致位置とIの値とが同一の場合(ステップS204:YES)、位置比較部13は当該結果を保持位置更新部14へ出力する。保持位置更新部14は、これを受けて一位置保持部12の保持するIの値を更新しない。ただしこれに限定されず、今回の一致位置とIの値とが同一の場合には、位置比較部13は当該結果を保持位置更新部14へ出力しないこととしてもよく、これにより保持位置更新部14からのIの更新処理は行われないものとしてもよい。あるいは、今回の一致位置とIの値とが同一の場合、位置比較部13は当該結果と今回の結果とを保持位置更新部14へ出力し、これに応じて保持位置更新部14はIを更新しなくとも、若しくは同一の値に更新してもよい。
符号形式選択部15は、位置比較部13からの比較結果、又は位置比較部13からの比較結果と一致検出部11からの一致位置に基づいて、符号形式を選択する(ステップS206)。符号形式選択部15は、選択した符号形式に対応する符号形式情報を符号形式情報出力部16に出力する。
符号形式情報出力部16は、符号形式情報を符号化する(ステップS207)。
一致長/一致位置出力部17は、符号形式選択部15からの符号形式情報に基づき、符号形式選択部15を介して一致検出部21から取得した一致長と一致位置とを符号化する。なお、符号形式選択部15からの符号形式情報が、上述した符号形式Aに対応するものであれば、一致長/一致位置出力部17は、当該符号形式情報と一致長とを符号形式選択部15から取得し、一致位置を取得しなくともよい。
一致長/一致位置出力部17は、符号形式選択部15からの符号形式情報に基づき、符号形式選択部15を介して一致検出部21から取得した一致長と一致位置とを符号化する。なお、符号形式選択部15からの符号形式情報が、上述した符号形式Aに対応するものであれば、一致長/一致位置出力部17は、当該符号形式情報と一致長とを符号形式選択部15から取得し、一致位置を取得しなくともよい。
一致検出部11が被圧縮データの最後まで探索を行った場合など、被圧縮データの符号化が終了した場合(ステップS209:YES)、本実施形態に係るデータ圧縮装置1による処理は終了する。一方、被圧縮データの符号化が終了していない場合(ステップS209:NO)、一致検出部11による一致列の探索が行われる(ステップS201)。
本実施形態に係るデータ圧縮装置1による処理のフローにおいて、ステップS204は、ステップS207の処理の前後や、ステップS205とステップS206の処理と並行して行われてもよい。またステップS207とステップS208の処理は逆の順序で行われても、並行して行われてもよい。またステップS204の処理がステップS207の処理の前後に実行される場合には、当該ステップS204の処理は、ステップS207又はステップS208と並列して行われても、ステップS207又はステップS208と順序を入れ替えて行われてもよい。
本実施形態に係るデータ圧縮装置1による処理は、従来の処理に比べ、ステップS200、およびステップS205からステップ208の処理が加わっている。また、ステップS209における符号化には、符号形式情報が用いられており、この点も従来の場合と異なる。
次に、上記データ圧縮装置1により圧縮された圧縮データを復元するデータ復元装置について説明する。図5は、本実施形態に係るデータ復元装置2の機能ブロック図である。データ復元装置2は、入力バッファ保持部20、符号形式情報取得部21、一位置保持部22、保持位置更新部23、一致長/一致位置取得部24、および非一致長取得部25等を備える。更にまたデータ復元装置2は、非一致列出力部26、一致列出力部27、および出力バッファ保持部28等を備える。入力バッファ保持部20、符号形式情報取得部21、および一致長/一致位置取得部24は、互いに接続されている。入力バッファ保持部20、非一致長取得部25、および非一致列出力部26は、互いに接続されている。符号形式情報取得部21は、保持位置更新部23および非一致長取得部25に接続されている。一位置保持部22は、保持位置更新部23および一致長/一致位置取得部24に接続されている。一致長/一致位置取得部24は、一致列出力部27に接続されている。非一致列出力部26および一致列出力部27は、出力バッファ保持部28に接続されている。なお、接続関係は上記に限定されない。
入力バッファ保持部20は、圧縮データの入力を受け付け、これを保持する。
符号形式情報取得部21は、入力バッファ保持部20が保持する圧縮データの符号形式情報(ビット表現された符号形式情報であり、これも以下では符号形式情報と記載する場合もあるとする)等を取得する。ここでは符号形式情報取得部21は、4つの圧縮サブデータの先頭に付与された1バイトからの符号形式情報と、これに対応する圧縮サブデータの一致位置を、圧縮サブデータ毎に順番に取得する。ただしこれに限定されず、符号形式情報取得部21は、4つの圧縮サブデータの1セットにおける符号形式情報と一致位置の組を取得してもよい。また、入力バッファ保持部20に保持された圧縮データが、圧縮サブデータ毎に、その先頭に、これに対応する1つの符号形式情報が付与されたものである場合、符号形式情報取得部21は、逐次的に、当該圧縮サブデータと符号識別情報との組を取得してもよい。また符号形式情報取得部21は、一致位置以外に一致長等を取得してもよい。
符号形式情報取得部21は、入力バッファ保持部20が保持する圧縮データの符号形式情報(ビット表現された符号形式情報であり、これも以下では符号形式情報と記載する場合もあるとする)等を取得する。ここでは符号形式情報取得部21は、4つの圧縮サブデータの先頭に付与された1バイトからの符号形式情報と、これに対応する圧縮サブデータの一致位置を、圧縮サブデータ毎に順番に取得する。ただしこれに限定されず、符号形式情報取得部21は、4つの圧縮サブデータの1セットにおける符号形式情報と一致位置の組を取得してもよい。また、入力バッファ保持部20に保持された圧縮データが、圧縮サブデータ毎に、その先頭に、これに対応する1つの符号形式情報が付与されたものである場合、符号形式情報取得部21は、逐次的に、当該圧縮サブデータと符号識別情報との組を取得してもよい。また符号形式情報取得部21は、一致位置以外に一致長等を取得してもよい。
一位置保持部22は、一致位置を保持する。
保持位置更新部23は、符号形式情報取得部21より取得した符号形式情報に従って一位置保持部22が保持する一致位置を更新する。ここでは、符号形式情報がビット表現で「01」、「10」、又は「11」のときに、保持位置更新部23は、一位置保持部22が保持する一致位置を更新する。一方、符号形式情報がビット表現で「00」の場合、保持位置更新部23は、一位置保持部22が保持する一致位置を更新しない。ただしこれに限定されず、符号形式情報がビット表現で「00」の場合、保持位置更新部23は、一位置保持部22が保持する一致位置を同一の値に更新してもよい。また、一位置保持部22に保持される一致位置が更新されない場合、すなわち符号形式情報がビット表現で「00」のときは、符号形式情報取得部21から保持位置更新部23への出力はなくともよい。
保持位置更新部23は、符号形式情報取得部21より取得した符号形式情報に従って一位置保持部22が保持する一致位置を更新する。ここでは、符号形式情報がビット表現で「01」、「10」、又は「11」のときに、保持位置更新部23は、一位置保持部22が保持する一致位置を更新する。一方、符号形式情報がビット表現で「00」の場合、保持位置更新部23は、一位置保持部22が保持する一致位置を更新しない。ただしこれに限定されず、符号形式情報がビット表現で「00」の場合、保持位置更新部23は、一位置保持部22が保持する一致位置を同一の値に更新してもよい。また、一位置保持部22に保持される一致位置が更新されない場合、すなわち符号形式情報がビット表現で「00」のときは、符号形式情報取得部21から保持位置更新部23への出力はなくともよい。
保持位置更新部23は、符号形式情報取得部21から順次、符号形式情報と、これに対応する圧縮サブデータにおける一致位置を取得する。
保持位置更新部23は、今回の符号形式情報がビット表現で「01」、「10」、又は「11」のときに、一位置保持部22の保持する一致位置を、符号形式情報取得部21から取得した今回の一致位置に更新する。
一致長/一致位置取得部24は、入力バッファ保持部20又は符号形式情報取得部21から符号形式情報を取得する。また一致長/一致位置取得部24は、当該符号形式情報に基づき、今回の圧縮サブデータの一致位置と一致長を入力バッファ保持部20(若しくは符号形式情報取得部21)、又は一位置保持部22から取得する。一致長/一致位置取得部24は、今回の符号形式情報が「00」以外の場合には、入力バッファ保持部20(又は符号形式情報取得部21)から今回の圧縮サブデータの一致位置を取得する。一方、今回の符号形式情報が「00」の場合には、一致長/一致位置取得部24は、一位置保持部22から一致位置を取得する。一致長/一致位置取得部24は、入力バッファ保持部20(又は符号形式情報取得部21)から今回の圧縮サブデータの一致長を取得する。
ここで符号形式情報取得部21と一致長/一致位置取得部24等が取り扱う情報を同じ圧縮サブデータのものとするため、符号形式情報取得部21は、一致長/一致位置取得部24へ、入力バッファ保持部20からデータを読み込む毎に通知を行ってもよい。そしてこれに基づき、一致長/一致位置取得部24は、入力バッファ保持部20から順番に1つずつ圧縮サブデータの一致長と一致位置の組み合わせを取得してもよい。あるいは、符号形式情報取得部21が、入力バッファ保持部21から一致長と一致位置(符号形式情報のビットが「00」以外のとき)を取得し、圧縮サブデータ毎に、一致長/一致位置取得部24に出力してもよい。
非一致長取得部25は、今回の圧縮サブデータにおける非一致長を、入力バッファ保持部20(又は符号形式情報取得部21)から取得する。非一致長取得部25は、入力バッファ保持部20(又は符号形式情報取得部21)から非一致列を取得してもよい。非一致長取得部25が処理する対象を、今回の圧縮サブデータに対応するものとするため、上記一致長/一致位置取得部24における場合と同様に、符号形式情報取得部21から通知等がされてもよい。非一致長取得部25は、取得した非一致長を復元する。
非一致列出力部26は、非一致長取得部25から非一致長を取得し、当該非一致長分の非一致列を非一致列出力部26又は入力バッファ保持部20から取得する。そして非一致列出力部26は、取得した非一致列をコピーして出力バッファ保持部28へ出力する。なお、ここで非一致列出力部26が入力バッファ保持部20から非一致列を取得する場合には、当該非一致列を含む圧縮サブデータを今回の圧縮サブデータと一致させるため、非一致長取得部25から通知等がされてもよい。
一致列出力部27は、一致長/一致位置取得部24から今回の圧縮サブデータの一致長と一致位置を取得し、一致位置における一致長分の一致列を復元する。このときに一致列出力部27は、出力バッファ保持部28から、先に復元されたデータにおいて、取得した一致位置に存在する一致長分の一致列を取得(コピー)する。そして一致列出力部27は、コピーした一致列を出力バッファ保持部28へ出力する。なお、この出力は、非一致列出力部26からの出力バッファ保持部28への出力の後毎に行われてもよい。
出力バッファ保持部28は、非一致列出力部26と一致列出力部28からの各出力内容を保持し、これらの組み合わせを元データとして出力する。
図6は、本実施形態に係るデータ復元装置による処理のフローと従来のデータ復元処理のフローを示す図である。まず、本実施形態に係るデータ復元処理が従来のものとどのように異なるかを示すため、従来のデータ復元処理について端的に説明する。
従来のデータ復元装置においては、非一致長が復元され(ステップS300)、圧縮データから当該復元された非一致長分の非一致列がコピーされ、これが出力バッファに出力される(ステップS301)。また圧縮データからの一致長と一致位置が復元され(ステップS302)、当該一致長分の一致列が出力バッファから読み込まれてコピーされ、これにより復元された一致列が出力バッファへ出力される。圧縮データは、順次このように復元されるが、圧縮データの最後の部分の復元処理が終わらない間は(ステップS304:NO)、上記処理は繰り返され、圧縮データの最後の部分の復元処理が終わった場合(ステップS304:YES)、処理は終了する。
次に本実施形態に係るデータ復元装置2による処理のフローについて説明する。データ復元装置2の保持位置更新部23は、入力バッファ保持部20への新たな圧縮データの入力に先立ち、あるいは当該入力に伴い、一位置保持部22が保持する一致位置を初期化する。このときに保持位置更新部23は、一致位置のパラメータIに0を格納する(ステップS400)。Iは、順次処理される圧縮サブデータにおいて、直前の一致位置を指し示すパラメータである。
非一致長取得部25は、今回の圧縮サブデータの非一致長を入力バッファ保持部20(又は符号形式情報取得部21)から取得し、これを復元する(ステップS401)。非一致列出力部26は、当該非一致長分の非一致列を、入力バッファ保持部20又は非一致長取得部25から取得し、これをコピーしたものを出力バッファ保持部28へ出力する。
符号形式情報取得部21は、入力バッファ保持部20より、今回の圧縮サブデータの、符号形式情報を取得して復元する(ステップS403)。
符号形式情報取得部21は、復元した符号形式情報を保持位置更新部23へ出力する。符号形式情報取得部21は、符号形式情報のビット表現が「00」以外の場合、今回の圧縮サブデータの一致位置を保持位置更新部23へ出力する。なお、符号形式情報取得部21は、符号形式情報のビット表現が「00」の場合、今回の圧縮サブデータの一致位置を保持位置更新部23へ出力してもよいし、しなくともよい。
保持位置更新部23は、符号形式情報から、保持されている直前の一致位置が今回の一致位置と同一かどうかを判断する(ステップS404)。直前の一致位置と今回の一致位置が異なる場合には(ステップS404:NO)、保持位置更新部23は、一位置保持部22におけるIを今回の一致位置に更新する(ステップS405)。直前の一致位置と今回の一致位置が同一の場合には(ステップS404:YES)、Iの更新はされない。
一致長/一致位置取得部24は、符号形式に基づき、入力バッファ保持部20(若しくは符号形式情報取得部21)、又は一位置保持部22から一致位置を取得する。また一致長/一致位置取得部24は、入力バッファ保持部20(若しくは符号形式情報取得部21)から一致長を取得して、一致位置と一致長とを復元する(ステップS406)。一致列出力部27は、一致長/一致位置取得部24から一致位置と一致長を取得し、出力バッファ保持部28から当該一致位置に存在する当該一致長分の一致列を取得して、これをコピーしたものを出力バッファ保持部28へ出力する(ステップS407)。
符号形式情報取得部21等が、入力バッファ保持部20に保持された圧縮データの最後のデータを取得し終えていないと判定等した場合には(ステップS408:NO)、データ復元装置2による処理は、ステップS401に戻る。圧縮データの最後のデータについて処理が行われた場合と判定等される場合には(ステップS408:YES)、データ復元装置2は処理を終了する。
図7は、本実施形態に係るデータ圧縮装置1とデータ復元装置2の各ハードウェア構成を例示する図である。ここでは、データ圧縮装置1およびデータ復元装置2は、一般的なコンピュータとしてハードウェアを有し、これらの装置による各処理は、以下に示すハードウェア3を具体的に利用することにより実行される。ハードウェア3は、互いにバス34によって接続されたプロセッサ30、記憶装置31、入力インタフェース32、および出力インタフェース33等を備える。
プロセッサ30は、例えばシングルコア、デュアルコア、またはマルチコアのプロセッサである。
記憶装置31は、例えばROM(Read Only Memory)、RAM(Random Access Memory)、半導体メモリ等のメモリである。また記憶装置31には、例えばハードディスクドライブ、光ディスク装置等が含まれていてもよい。当該記憶装置31により、上述した一位置保持部12、22の各機能が実現されることができる。
プロセッサ30が、記憶装置31に記憶された情報を用いることにより、一致検出部11、位置比較部13、保持位置更新部14、23、符号形式選択部15、および符号形式情報取得部21等の各機能が実現されることができる。同様に、プロセッサ30と記憶装置31により、符号形式情報出力部16、一致長/一致位置出力部17、非一致長/非一致列出力部18、符号構成部19、一致長/一致位置取得部24、および非一致長取得部25等の各機能が実現されることができる。また同様に、プロセッサ30と記憶装置31により、非一致列出力部26および一致列出力部27等の各機能が実現されることができる。
入力インタフェース回路32は、外部からの情報の入力を受け付けるための回路である。入力インタフェース回路32と記憶装置31により、入力バッファ保持部10、20の各機能が実現されることができる。
出力インタフェース回路33は、外部に情報を出力するための回路である。出力インタフェース回路33と記憶装置31により、出力バッファ保持部19、28の各機能が実現されることができる。
なお、上述した場合以外にも、図3又は5に示す機能ブロックの全て、又はその一部の機能は、適宜、専用のハードウェアにより実現されてもよい。
本実施形態に係るデータ圧縮装置1によれば、一致位置に基づき符号形式を選択し、直前の一致位置と同一の今回の一致位置を省略して符号化し、かつ符号をバイト単位に配置することによって、復元速度を落とさずに符号量を減らすことができる。
より具体的に説明すると、本実施形態に係るデータ圧縮方法を用いてバイト単位に符号が配置されることで、ハフマン符号などの復元の際に行われるようなビット処理が省略可能になる。HDD(Hard Disk Drive)等の記憶装置からの読出速度が600メガバイト/秒程度に対し、LZ77方式とハフマン符号とを用いた場合では、復元速度は300メガバイト/秒程度となり、これにより元のデータを読み出す速度が低下する。本実施形態における圧縮/復元方式を用いた場合、2,000メガバイト/秒程度の復元速度となり、これはHDD等の読出速度の3倍程度であり、充分な速度を得ることができる。また符号量についても、従来のLZ4方式のように符号中の一致位置に常に数バイトを割り当てなくて済み、一致位置の値により割り当てるバイト数を臨機応変に変動させる分、少なくて済むようになる。例えば、図2の右下に示される、本実施形態に係るデータ圧縮方法を用いて符号化された図1の元データにおける4番目までのサブデータ(識別ビットを含む)は、その長さが19バイトであるが、同じデータをLZ4方式により符号化すると、その長さは24バイトになる。このように本実施形態に係るデータ圧縮方法によれば、符号量を減らすことができ、これにより、例えばコンピュータの記憶領域等に余裕を持たせることができる。
(第2の実施形態)
図8は、第2の実施形態に係るデータ圧縮方法を説明するための図である。本実施形態に係るデータ圧縮装置とデータ復元装置の各機能ブロックは、図3、5に示したものと同様であり、これらの各機能ブロックの処理内容は第1の実施形態の場合と同様である。このため、これらに同様の符号を付与する。また本実施形態に係るデータ圧縮装置とデータ復元装置による各処理のフローも、図4、6に示したものと同様である。本実施形態においては、第1の実施形態における符号形式(図2)に代わり、図8の中央の四角に囲まれた部分に示される符号形式E、F、G、Hが用いられる。図8の上の四角に囲まれた部分には、理解容易のための、元データと共にLZ77方式による圧縮データが示されている。ここにおける圧縮データの一致位置等の内容は、図2で説明したものと同様である。
図8は、第2の実施形態に係るデータ圧縮方法を説明するための図である。本実施形態に係るデータ圧縮装置とデータ復元装置の各機能ブロックは、図3、5に示したものと同様であり、これらの各機能ブロックの処理内容は第1の実施形態の場合と同様である。このため、これらに同様の符号を付与する。また本実施形態に係るデータ圧縮装置とデータ復元装置による各処理のフローも、図4、6に示したものと同様である。本実施形態においては、第1の実施形態における符号形式(図2)に代わり、図8の中央の四角に囲まれた部分に示される符号形式E、F、G、Hが用いられる。図8の上の四角に囲まれた部分には、理解容易のための、元データと共にLZ77方式による圧縮データが示されている。ここにおける圧縮データの一致位置等の内容は、図2で説明したものと同様である。
図8の中央の四角に示されるように、本実施形態における符号形式には、符号形式E、F、G、Hの4種類がある。本実施形態における識別ビットは、長さが2ビットであり、非一致長および一致長のそれぞれが割り当てられるビットとまとめられ、先頭の1バイトに納められる。
ここで非一致長には2ビット、一致長には4ビットが割り当てられる。ここでサブデータの非一致長がビット表現で「10」より大きい場合、更に非一致長に割り当てられるための1バイトが、非一致長と一致長に割り当てられる1バイトのすぐ後ろに追加される。なお、非一致長に割り当てられる上記2ビットが「11」の場合、これは、1バイトが更に追加されることを示すものである。同様に、一致長に割り当てられるビットが、「1111」の場合も同様とする。
また元データにおいて一致長が3バイト以上の一致列についても上記第1の実施形態と同様とする。
また符号形式E、F、G、Hにおいて一致位置に割り当てられるバイトの数は、それぞれ符号形式A、B、C、Dの各バイト数と等しい。例えば、今回のサブデータの一致位置が直前のサブデータの一致位置と等しい場合には、一致位置に0バイトを割り当てる符号形式Eが選択される。またサブデータの一致位置が、28以上で216未満の場合には、一致位置に2バイトを割り当てる符号形式Gが選択される。この場合、圧縮サブデータ毎の、非一致列が割り当てられるビットを除く、識別ビットを含めたビットの総数は、例えば、符号形式Eでは8(2(識別ビット)+2(非一致長)+4(一致長)+0(一致位置)=8)となる。同様に、符号形式Fでは16、符号形式Gでは24、符号形式Hでは32となる。
図8の下には、同図の上に示された元データを、本実施形態における符号形式を用いて符号化した圧縮データの一例が示される。図8においてn番目のサブデータを符号化したものに識別ビットを付与したものを、n番目の符号とする。まず左から当該データを参照すると、1番目のサブデータにおいて一致位置は5であり1バイトで表せることと、先行するサブデータがなく直前の一致位置がないことから、当該サブデータの圧縮には符号形式Fが選択されることがわかる。このため、図8の下の圧縮データの最初の部分の識別ビットは「01」となる。また1番目のサブデータにおいて非一致長は5であるため、これは2ビットで表すと「11」以上であるため、図8の下のデータにおける矢印で示されるように、先頭の1バイトの後に1バイト追加される。このとき非一致長は、2ビットの最大値である「10」と追加された1バイトで示される各数の和として表現される。
1番目のサブデータの一致長は3であるため、一致長に割り当てられる4ビットは「0000」となることがわかる。また1番目のサブデータの非一致列は“0101,”で5文字であるため、1文字に1バイト割り当てられるとすると、1番目の符号において当該非一致列に5バイト割り当てられていることがわかる。また、1番目のサブデータにおける一致位置は「5」であるため、これは1バイトで表現できるので、1番目の符号において当該一致位置に1バイトが割り当てられていることがわかる。2番目以降のサブデータと符号についても同様である。
本実施形態における符号化によれば、上記第1の実施形態の場合のように、4つの圧縮サブデータの各符号形式情報の符号化を待ち、これらを一まとめにする処理がない分、処理負荷が低減されると共にデータの圧縮時間が短縮される。また一致長に割り当てられるビットの数が、上記第1の実施形態と比較して多いため、頻繁に同じ部分列が繰り返されるデータの符号化において、符号量を減らすことができる。
(第3の実施形態)
図9は、第3の実施形態に係るデータ圧縮方法を説明するための図である。本実施形態に係るデータ圧縮装置とデータ復元装置の各機能ブロックは、図3、5に示したものと同様であり、これらの各機能ブロックの処理内容は第1、2の実施形態の場合と同様である。このため、これらに同様の符号を付与する。また本実施形態に係るデータ圧縮装置とデータ復元装置による各処理のフローも、図4、6に示したものと同様である。本実施形態においては、第1、2の実施形態における符号形式(図2、8)に代わり、図9の中央の四角に囲まれた部分に示される符号形式J、K、L、Mが用いられる。図9の上の四角に囲まれた部分には、理解容易のための、元データと共にLZ77方式による圧縮データが示されている。ここにおける圧縮データの一致位置等の内容は、図2で説明したものと同様である。
図9は、第3の実施形態に係るデータ圧縮方法を説明するための図である。本実施形態に係るデータ圧縮装置とデータ復元装置の各機能ブロックは、図3、5に示したものと同様であり、これらの各機能ブロックの処理内容は第1、2の実施形態の場合と同様である。このため、これらに同様の符号を付与する。また本実施形態に係るデータ圧縮装置とデータ復元装置による各処理のフローも、図4、6に示したものと同様である。本実施形態においては、第1、2の実施形態における符号形式(図2、8)に代わり、図9の中央の四角に囲まれた部分に示される符号形式J、K、L、Mが用いられる。図9の上の四角に囲まれた部分には、理解容易のための、元データと共にLZ77方式による圧縮データが示されている。ここにおける圧縮データの一致位置等の内容は、図2で説明したものと同様である。
図9の中央の四角に示されるように、本実施形態における符号形式には、符号形式J、K、L、Mの4種類がある。本実施形態における識別ビットと非一致長に割り当てられるビットは、それぞれ長さが2ビットであり、これらが1つにまとめられた4ビットが、符号の先頭に付与される。ここでサブデータの非一致長がビット表現で「11」以上となる場合、更に非一致長に割り当てられるための1バイトが、非一致長に割り当てられた2ビットを配置したバイトのすぐ後ろに追加される。
符号形式Jは、一致位置が、0から26−1までの数で、6ビットで表されるときに選択される形式である。ここでは一致長に2ビットが割り当てられ、一致長と一致位置のそれぞれに割り当てたビットが1バイトにまとめられる。一致長は、上記実施形態の場合と同様、3を最低の長さとし、一致長の値から3を引いた数をビット表現したものを、ビット表現された一致長とする。一致長が2ビットの「10」以下で表現できない場合には、更に一致長を割り当てるための1バイトが追加され、当該1バイトは一致位置の最後のビットの後ろに付与される。上記一致長に割り当てられる2ビットが「11」のとき、これは1バイトの追加を示すものとなる。符号形式Jにおいて、非一致列に割り当てるためのビットを除いた、ビットの総数は、12(2(識別ビット)+2(非一致長)+2(一致長)+6(一致位置)=12)となる。
符号形式Kは、一致位置が、26から213−1までの数で、13ビットで表されるときに選択される形式である。ここでは一致長に3ビットが割り当てられ、一致長と一致位置のそれぞれに割り当てたビットが2バイトにまとめられる。上記同様、一致長の値から3を引いた数をビット表現したものを、ビット表現された一致長とする。一致長が3ビットで表現できない場合には、上記同様、更に一致長を割り当てるための1バイトが追加され、当該1バイトは一致位置の最後のビットの後ろに付与される。符号形式Kにおいて、非一致列を割り当てるためのビットを除いた、ビットの総数は、20(2(識別ビット)+2(非一致長)+3(一致長)+13(一致位置)=20)となる。
符号形式Lは、一致位置が直前の一致位置と同一となるサブデータの符号化において選択される形式である。上記実施形態同様、一致位置は省略されて符号化される。ここでは、一致長に割り当てるビットの長さを4ビットとし、これを上述した非一致列に割り当てるビットのすぐ後ろ(図9でαにより示される位置)、又は先行する「識別ビットおよび非一致長」の4ビットのすぐ後ろ(図9でα’により示される位置)に配置する。一致長が4ビットで表現できない場合には、上記同様、更に一致長を割り当てるための1バイトがその後ろに追加される。また当該符号形式においては、上記実施形態同様、一致列に割り当てられるバイト数は0となる。符号形式Lにおいて、非一致列を割り当てるためのビットを除いた、ビットの総数は、8(2(識別ビット)+2(非一致長)+4(一致長)+0(一致位置)=8)となる。
符号形式Mは、一致位置が、213から216−1までの数で、16ビットで表されるときに選択される形式である。ここでは一致位置に2バイト割り当てられる。またここでは、符号形式Lと同様に、一致長に割り当てるビットの長さを4ビットとし、これを一致位置に割り当てる2バイトの後ろ(図9でβにより示される位置)、又は先行する「識別ビットおよび非一致長」の4ビットのすぐ後ろ(図9でβ’により示される位置)に配置する。一致長が4ビットで表現できない場合は、上記符号形式Lと同様となる。符号形式Mにおいて、非一致列を割り当てられるためのビットを除いた、ビットの総数は、24(2(識別ビット)+2(非一致長)+4(一致長)+16(一致位置)=24)となる。
図9の下には、同図の上に示された元データを、本実施形態における符号形式を用いて符号化した圧縮データの一例が示される。ここでは、上記第2の実施形態同様、元データのn番目のサブデータを符号化したものに識別ビットを付したものをn番目の符号と記載する。ただし本実施形態における符号化では、1つのサブデータを1つの符号にしようとすれば、当該符号がバイト単位に配置できなくなる場合が存在する。これに対処するため本実施形態に係るデータ圧縮装置1は、2つ以上のサブデータの各一致長や非一致列等を符号化したものを互いにまとめた符号を生成する場合もある。図9の下に示される「第1、2の符号」がこれにあたる。第1、2の符号について、説明する。
まず、図9の上の元データにおいて1番目のサブデータの一致位置は5であることから、1番目のサブデータの符号化には符号形式Jが選択されることがわかる。すると図9下の圧縮データにおいて、1番目のサブデータの符号形式を示すビットは、最初の2ビット「00」となる。次に当該サブデータの非一致長である5は、ビット表現で「10」以上となるため、更に1バイトが追加される。これにより非一致長は、2ビット「10」(=2)と1バイト「00000011」(=3)の和により示される。非一致長に当初から割り当てられている2ビットに追加される1バイトは、図9において、上記第2の実施形態同様、当該2ビットを始点とする矢印の終点で示される。
ここで図9の下の圧縮データにおいて、1番目の非一致長に割り当てられる2ビットと、更に追加された1バイトの間に4ビットが含まれている。1番目のサブデータの符号化に係る識別ビットと、当該サブデータの非一致長に割り当てられる2ビットを合わせたものは4ビットとなるが、これはバイト単位のものではない。このため本実施形態においては、当該4ビットの後に2番目のサブデータに係る識別ビットと、当該サブデータの非一致長に割り当てられる2ビットを合わせた4ビットを付与する。
2番目のサブデータにおいて、一致位置は5であり、これは1番目のサブデータの一致位置と等しい。このため、2番目のサブデータの符号化には符号形式Lが選択される。これに伴い、2番目のサブデータに係る識別ビットは「10」となる。また2番目のサブデータにおける非一致長は1であるため、非一致長に割り当てられる2ビットは「01」となる。
このとき、1番目のサブデータの非一致列は、2番目のサブデータの非一致長に割り当てられる2ビットの後ろに配置される。1番目のサブデータの非一致列は「0101,」であり、これは5つの数字列であるため、非一致列には5バイトが割り当てられる。続いて、1番目のサブデータの一致長は3であるため、符号形式Jにおける一致長を割り当てるための2ビットは、「00」となる。符号形式Jにおいては、一致位置と一致列とが1バイトでまとめられるため、一致長を表現する2ビットの後ろの6ビットは、1番目の一致位置の5をビット表現した「000101」となる。
次に続くビットは、1番目のサブデータが割り当てられたビットと当該サブデータに係る識別ビットと2番目のサブデータの非一致長と当該サブデータに係る識別ビットが先にあるため、2番目のサブデータの非一致列の2に割り当てられるビットとなる。また符号形式Lでは、一致位置を省略して符号化し、更に一致長のビット表現を非一致列のビット表現の後続とする。2番目のサブデータにおいて一致長は4であるため、1(=4−3)を4ビットで表した「0001」が、非一致列に割り当てられたビットの後ろに示される。
ここで、符号化されたデータをバイト単位にするため、2番目の一致長を表した4ビット「0001」の後ろに、3番目のサブデータに係る識別ビットと、当該サブデータの非一致長に係るビットを合わせた4ビットを付与する。3番目のサブデータの一致列は、2番目のサブデータの一致列と等しいため、当該3番目のサブデータの符号化には符号形式Lが選択される。このため識別ビットは「10」となる。また3番目のサブデータの非一致長は1であるため、非一致長のビット表現は「01」となる。この非一致長に割り当てられるビットの後には、非一致列の3に割り当てられるバイトが続く。当該バイトに続き、3番目のサブデータの一致長である4を割り当てるビット「0001」が配置される。
以下の圧縮データについても同様である。
本実施形態に係るデータ圧縮方法は、実際のデータにおいては一致位置が2バイト以下で表現できることが多い点に着目されたものである。これに応じて、本実施形態においては、一致位置に割り当てるバイトの長さを2バイト以下としている。そしてこれに応じて臨機応変に、且つバイト単位となるようにビットが配置される。これにより、本実施形態における符号量は、上記実施形態における符号量よりも少なくなる。
本実施形態に係るデータ圧縮方法は、実際のデータにおいては一致位置が2バイト以下で表現できることが多い点に着目されたものである。これに応じて、本実施形態においては、一致位置に割り当てるバイトの長さを2バイト以下としている。そしてこれに応じて臨機応変に、且つバイト単位となるようにビットが配置される。これにより、本実施形態における符号量は、上記実施形態における符号量よりも少なくなる。
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態および変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。特許請求の範囲内およびそれと同等の発明の意義の範囲内で施される様々な変形も、本発明の範囲内とみなされる。
上述の実施形態1〜nを含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出する一致検出部と、
一つ前に符号化された前記相対位置を保持する一位置保持部と、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、前記一致検出部により検出された前記相対位置の近さに基づいて、1つを選択する符号形式選択部と、
バイト単位に符号を配置すると共に、前記一致検出部により検出された前記相対位置が、前記一位置保持部に保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記一致検出部により検出された相対位置を省略して符号化する符号化部と、
を備えることを特徴とするデータ圧縮装置。
(付記2)
前記符号形式における前記相対位置に割り当てるためのビットの長さは、前記相対位置が近いほど短いことを特徴とする付記1に記載のデータ圧縮装置。
(付記3)
前記選択された符号形式を識別するために符号形式情報を用いることを特徴とする付記1又は2に記載のデータ圧縮装置。
(付記4)
前記符号化部は、
前記符号形式情報を、前記複数の符号形式において固定長のビットで符号化し、
前記符号化された符号形式情報を、符号化された1以上の前記一致長を含むデータの先頭に配置する
ことを特徴とする付記3に記載のデータ圧縮装置。
(付記5)
前記符号化部は、
前記符号形式情報を、前記複数の符号形式において2ビットで符号化し、
4つのデータの圧縮において用いられた、それぞれの前記符号形式に対応する前記符号形式情報を一まとめにし、圧縮された前記4つのデータの先頭に付与する、
ことを特徴とする付記3又は4に記載のデータ圧縮装置。
(付記6)
前記符号化部は、
前記符号形式情報を、前記複数の符号形式において固定長のビットで符号化し、
前記一致長を1つ含むデータの符号化の度に、該符号化において用いられた前記符号形式に対応する前記符号形式情報を符号化したものを、符号化された前記一致長を1つ含むデータの先頭に付与する、
ことを特徴とする付記3又は4に記載のデータ圧縮装置。
(付記7)
前記入力されたデータにおいて、一致する先行の部分列が存在しない非一致列の長さである非一致長の符号化には、短い長さのビットが割り当てられることを特徴とする付記1から6のいずれか1つに記載のデータ圧縮装置。
(付記8)
前記相対位置が省略されずに符号化される場合に、前記相対位置に割り当てるバイトの長さを2バイト以下とすることを特徴とする付記1から7のいずれか1つに記載のデータ圧縮装置。
(付記9)
先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するデータ復元装置であって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得する符号形式情報取得部と、
一つ前に復元された前記相対位置を保持する一位置保持部と、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、前記一位置保持部に保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる一致位置取得部と、
を備えることを特徴とするデータ復元装置。
(付記10)
入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出し、
一つ前に符号化された前記相対位置を保持し、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、検出された前記相対位置の近さに基づいて、1つを選択し、
バイト単位に符号を配置すると共に、検出された前記相対位置が、保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記検出された相対位置を省略して符号化する、
処理をデータ圧縮装置に実行させるデータ圧縮プログラム。
(付記11)
先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するためのデータ復元プログラムであって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得し、
一つ前に復元された前記相対位置を保持し、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる、
処理をデータ復元装置に実行させることを特徴とするデータ復元プログラム。
(付記12)
入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出し、
一つ前に符号化された前記相対位置を保持し、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、検出された前記相対位置の近さに基づいて、1つを選択し、
バイト単位に符号を配置すると共に、検出された前記相対位置が、保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記検出された相対位置を省略して符号化する、
処理をデータ圧縮装置が実行することを特徴とするデータ圧縮方法。
(付記13)
先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するデータ復元方法であって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得し、
一つ前に復元された前記相対位置を保持し、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる、
処理をデータ復元装置が実行することを特徴とするデータ復元方法。
(付記1)
入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出する一致検出部と、
一つ前に符号化された前記相対位置を保持する一位置保持部と、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、前記一致検出部により検出された前記相対位置の近さに基づいて、1つを選択する符号形式選択部と、
バイト単位に符号を配置すると共に、前記一致検出部により検出された前記相対位置が、前記一位置保持部に保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記一致検出部により検出された相対位置を省略して符号化する符号化部と、
を備えることを特徴とするデータ圧縮装置。
(付記2)
前記符号形式における前記相対位置に割り当てるためのビットの長さは、前記相対位置が近いほど短いことを特徴とする付記1に記載のデータ圧縮装置。
(付記3)
前記選択された符号形式を識別するために符号形式情報を用いることを特徴とする付記1又は2に記載のデータ圧縮装置。
(付記4)
前記符号化部は、
前記符号形式情報を、前記複数の符号形式において固定長のビットで符号化し、
前記符号化された符号形式情報を、符号化された1以上の前記一致長を含むデータの先頭に配置する
ことを特徴とする付記3に記載のデータ圧縮装置。
(付記5)
前記符号化部は、
前記符号形式情報を、前記複数の符号形式において2ビットで符号化し、
4つのデータの圧縮において用いられた、それぞれの前記符号形式に対応する前記符号形式情報を一まとめにし、圧縮された前記4つのデータの先頭に付与する、
ことを特徴とする付記3又は4に記載のデータ圧縮装置。
(付記6)
前記符号化部は、
前記符号形式情報を、前記複数の符号形式において固定長のビットで符号化し、
前記一致長を1つ含むデータの符号化の度に、該符号化において用いられた前記符号形式に対応する前記符号形式情報を符号化したものを、符号化された前記一致長を1つ含むデータの先頭に付与する、
ことを特徴とする付記3又は4に記載のデータ圧縮装置。
(付記7)
前記入力されたデータにおいて、一致する先行の部分列が存在しない非一致列の長さである非一致長の符号化には、短い長さのビットが割り当てられることを特徴とする付記1から6のいずれか1つに記載のデータ圧縮装置。
(付記8)
前記相対位置が省略されずに符号化される場合に、前記相対位置に割り当てるバイトの長さを2バイト以下とすることを特徴とする付記1から7のいずれか1つに記載のデータ圧縮装置。
(付記9)
先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するデータ復元装置であって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得する符号形式情報取得部と、
一つ前に復元された前記相対位置を保持する一位置保持部と、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、前記一位置保持部に保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる一致位置取得部と、
を備えることを特徴とするデータ復元装置。
(付記10)
入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出し、
一つ前に符号化された前記相対位置を保持し、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、検出された前記相対位置の近さに基づいて、1つを選択し、
バイト単位に符号を配置すると共に、検出された前記相対位置が、保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記検出された相対位置を省略して符号化する、
処理をデータ圧縮装置に実行させるデータ圧縮プログラム。
(付記11)
先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するためのデータ復元プログラムであって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得し、
一つ前に復元された前記相対位置を保持し、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる、
処理をデータ復元装置に実行させることを特徴とするデータ復元プログラム。
(付記12)
入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出し、
一つ前に符号化された前記相対位置を保持し、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、検出された前記相対位置の近さに基づいて、1つを選択し、
バイト単位に符号を配置すると共に、検出された前記相対位置が、保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記検出された相対位置を省略して符号化する、
処理をデータ圧縮装置が実行することを特徴とするデータ圧縮方法。
(付記13)
先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するデータ復元方法であって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得し、
一つ前に復元された前記相対位置を保持し、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる、
処理をデータ復元装置が実行することを特徴とするデータ復元方法。
1 データ圧縮装置
2 データ復元装置
10、20 入力バッファ保持部
11 一致検出部
12、22 一位置保持部
13 位置比較部
14、23 保持位置更新部
15 符号形式選択部
16 符号形式情報出力部
17 一致長/一致位置出力部
18 非一致長/非一致列出力部
19 符号構成部
19’、28 出力バッファ保持部
21 符号形式情報取得部
24 一致長/一致位置取得部
25 非一致長取得部
26 非一致列出力部
27 一致列出力部
2 データ復元装置
10、20 入力バッファ保持部
11 一致検出部
12、22 一位置保持部
13 位置比較部
14、23 保持位置更新部
15 符号形式選択部
16 符号形式情報出力部
17 一致長/一致位置出力部
18 非一致長/非一致列出力部
19 符号構成部
19’、28 出力バッファ保持部
21 符号形式情報取得部
24 一致長/一致位置取得部
25 非一致長取得部
26 非一致列出力部
27 一致列出力部
Claims (13)
- 入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出する一致検出部と、
一つ前に符号化された前記相対位置を保持する一位置保持部と、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、前記一致検出部により検出された前記相対位置の近さに基づいて、1つを選択する符号形式選択部と、
バイト単位に符号を配置すると共に、前記一致検出部により検出された前記相対位置が、前記一位置保持部に保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記一致検出部により検出された相対位置を省略して符号化する符号化部と、
を備えることを特徴とするデータ圧縮装置。 - 前記符号形式における前記相対位置に割り当てるためのビットの長さは、前記相対位置が近いほど短いことを特徴とする請求項1に記載のデータ圧縮装置。
- 前記選択された符号形式を識別するために符号形式情報を用いることを特徴とする請求項1又は2に記載のデータ圧縮装置。
- 前記符号化部は、
前記符号形式情報を、前記複数の符号形式において固定長のビットで符号化し、
前記符号化された符号形式情報を、符号化された1以上の前記一致長を含むデータの先頭に配置する
ことを特徴とする請求項3に記載のデータ圧縮装置。 - 前記符号化部は、
前記符号形式情報を、前記複数の符号形式において2ビットで符号化し、
4つのデータの圧縮において用いられた、それぞれの前記符号形式に対応する前記符号形式情報を一まとめにし、圧縮された前記4つのデータの先頭に付与する、
ことを特徴とする請求項3又は4に記載のデータ圧縮装置。 - 前記符号化部は、
前記符号形式情報を、前記複数の符号形式において固定長のビットで符号化し、
前記一致長を1つ含むデータの符号化の度に、該符号化において用いられた前記符号形式に対応する前記符号形式情報を符号化したものを、符号化された前記一致長を1つ含むデータの先頭に付与する、
ことを特徴とする請求項3又は4に記載のデータ圧縮装置。 - 前記入力されたデータにおいて、一致する先行の部分列が存在しない非一致列の長さである非一致長の符号化には、短い長さのビットが割り当てられることを特徴とする請求項1から6のいずれか1項に記載のデータ圧縮装置。
- 前記相対位置が省略されずに符号化される場合に、前記相対位置に割り当てるバイトの長さを2バイト以下とすることを特徴とする請求項1から7のいずれか1項に記載のデータ圧縮装置。
- 先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するデータ復元装置であって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得する符号形式情報取得部と、
一つ前に復元された前記相対位置を保持する一位置保持部と、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、前記一位置保持部に保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる一致位置取得部と、
を備えることを特徴とするデータ復元装置。 - 入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出し、
一つ前に符号化された前記相対位置を保持し、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、検出された前記相対位置の近さに基づいて、1つを選択し、
バイト単位に符号を配置すると共に、検出された前記相対位置が、保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記検出された相対位置を省略して符号化する、
処理をデータ圧縮装置に実行させるデータ圧縮プログラム。 - 先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するためのデータ復元プログラムであって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得し、
一つ前に復元された前記相対位置を保持し、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる、
処理をデータ復元装置に実行させることを特徴とするデータ復元プログラム。 - 入力されたデータにおける先行の部分列と一致する一致列と、前記部分列の前記一致列からの相対位置と、前記一致列の長さである一致長と、を検出し、
一つ前に符号化された前記相対位置を保持し、
前記相対位置に割り当てるビットの長さが互いに異なるように設定された複数の符号形式の中から、検出された前記相対位置の近さに基づいて、1つを選択し、
バイト単位に符号を配置すると共に、検出された前記相対位置が、保持されている前記一つ前に符号化された相対位置と同一の場合に、選択された前記符号形式に基づき、前記検出された相対位置を省略して符号化する、
処理をデータ圧縮装置が実行することを特徴とするデータ圧縮方法。 - 先行の部分列と一致する一致列からの前記部分列の相対位置の近さに応じて選択された符号形式に基づき符号化されている符号、又は、一つ前に符号化された前記相対位置と同一の相対位置が省略され符号化されている符号を復元するデータ復元方法であって、
入力された符号から、該符号が生成された際に用いられた符号形式を識別するための符号形式情報を取得し、
一つ前に復元された前記相対位置を保持し、
前記符号形式情報に基づき、符号化の際に前記相対位置が省略された符号の復元に、保持されている前記一つ前に復元された相対位置を用いると共に、符号化の際に前記相対位置が省略されなかった符号の復元に、該符号に含まれる符号化された前記相対位置を用いる、
処理をデータ復元装置が実行することを特徴とするデータ復元方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017156328A JP2019036810A (ja) | 2017-08-14 | 2017-08-14 | データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法 |
EP18187694.7A EP3444952A1 (en) | 2017-08-14 | 2018-08-07 | Data compression apparatus, data decompression apparatus, data compression program, data decompression program, data compression method, and data decompression method |
US16/059,170 US20190052284A1 (en) | 2017-08-14 | 2018-08-09 | Data compression apparatus, data decompression apparatus, data compression program, data decompression program, data compression method, and data decompression method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017156328A JP2019036810A (ja) | 2017-08-14 | 2017-08-14 | データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019036810A true JP2019036810A (ja) | 2019-03-07 |
Family
ID=63254524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017156328A Pending JP2019036810A (ja) | 2017-08-14 | 2017-08-14 | データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190052284A1 (ja) |
EP (1) | EP3444952A1 (ja) |
JP (1) | JP2019036810A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7358279B2 (ja) | 2020-03-18 | 2023-10-10 | キオクシア株式会社 | メモリシステム |
US11488328B2 (en) * | 2020-09-25 | 2022-11-01 | Advanced Micro Devices, Inc. | Automatic data format detection |
CN116055008B (zh) * | 2023-03-31 | 2023-06-02 | 深圳市网联天下科技有限公司 | 一种用于云端服务器连接的路由器数据处理方法 |
CN116938256B (zh) * | 2023-09-18 | 2023-11-28 | 苏州科尔珀恩机械科技有限公司 | 基于大数据的回转炉运行参数智能管理方法 |
CN117498873B (zh) * | 2023-11-07 | 2024-03-29 | 东莞市杜氏诚发精密弹簧有限公司 | 一种血管栓塞弹簧组件智能加工系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0582907A3 (en) * | 1992-08-10 | 1995-05-10 | Stac Electronics Inc | Device and method for data compression using search by comparison of strings and Huffman coding. |
JP4093200B2 (ja) | 2004-03-26 | 2008-06-04 | セイコーエプソン株式会社 | データ圧縮方法及びプログラムならびにデータ復元方法及び装置 |
US9160362B1 (en) * | 2014-05-08 | 2015-10-13 | Qualcomm Incorporated | Lempel-Ziv (LZ)-based data compression employing implicit variable-length distance coding |
US9524169B2 (en) * | 2014-09-24 | 2016-12-20 | Intel Corporation | Technologies for efficient LZ77-based data decompression |
CN107395209B (zh) * | 2017-07-03 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 数据压缩方法、数据解压缩方法及其设备 |
-
2017
- 2017-08-14 JP JP2017156328A patent/JP2019036810A/ja active Pending
-
2018
- 2018-08-07 EP EP18187694.7A patent/EP3444952A1/en not_active Withdrawn
- 2018-08-09 US US16/059,170 patent/US20190052284A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP3444952A1 (en) | 2019-02-20 |
US20190052284A1 (en) | 2019-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019036810A (ja) | データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法 | |
JP3778087B2 (ja) | データ符号化装置及びデータ復号装置 | |
US9397695B2 (en) | Generating a code alphabet of symbols to generate codewords for words used with a program | |
US20170185712A1 (en) | A method of storing/reconstructing a multitude of sequences in/from a data storage structure | |
CN112615628A (zh) | 硬件友好地数据压缩 | |
JP2017194762A (ja) | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 | |
JP6540308B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
KR101866151B1 (ko) | 적응형 레이트 압축 해시 프로세싱 디바이스 | |
JP2017073615A (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
JP6662169B2 (ja) | 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置 | |
WO2014030180A1 (ja) | 格納プログラム、格納方法、格納装置、伸張プログラム、伸張方法及び伸張装置 | |
JPWO2014097359A1 (ja) | 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置 | |
US8976048B2 (en) | Efficient processing of Huffman encoded data | |
JPWO2014030189A1 (ja) | 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム | |
JP2016052046A (ja) | 圧縮装置、伸長装置およびストレージ装置 | |
JP2019534602A (ja) | エントロピー・エンコーディングのシステム・レベル・テスト | |
US11909423B2 (en) | Compression circuit, storage system, and compression method | |
JP5928201B2 (ja) | 復元プログラム、圧縮プログラム、復元装置、圧縮装置、復元方法、および圧縮方法 | |
JP2017195628A (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置 | |
US20240204796A1 (en) | Code table generation device, memory system, and code table generation method | |
US12108064B2 (en) | Memory system | |
US20240106459A1 (en) | Compression device and compression method | |
JP2023127253A (ja) | 符号表生成装置、メモリシステム、および符号表生成方法 | |
JP2023039698A (ja) | データ圧縮装置およびメモリシステム | |
JP2023174202A (ja) | 辞書式圧縮器、データ圧縮装置、およびメモリシステム |