JPWO2011108089A1 - データ圧縮装置及びデータ圧縮方法及びプログラム - Google Patents
データ圧縮装置及びデータ圧縮方法及びプログラム Download PDFInfo
- Publication number
- JPWO2011108089A1 JPWO2011108089A1 JP2012502928A JP2012502928A JPWO2011108089A1 JP WO2011108089 A1 JPWO2011108089 A1 JP WO2011108089A1 JP 2012502928 A JP2012502928 A JP 2012502928A JP 2012502928 A JP2012502928 A JP 2012502928A JP WO2011108089 A1 JPWO2011108089 A1 JP WO2011108089A1
- Authority
- JP
- Japan
- Prior art keywords
- code
- prediction error
- length
- value
- data
- 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.)
- Granted
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/3002—Conversion to or from differential modulation
-
- 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/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- 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/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
- H03M7/48—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
-
- 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/6041—Compression optimized for errors
-
- 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/6064—Selection of Compressor
- H03M7/607—Selection between different types of compressors
-
- 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/6064—Selection of Compressor
- H03M7/6082—Selection strategies
- H03M7/6094—Selection strategies according to reasons other than compression rate or data type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/41—Bandwidth or redundancy reduction
- H04N1/411—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
- H04N1/413—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
- H04N1/417—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/41—Bandwidth or redundancy reduction
- H04N1/411—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
- H04N1/413—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
- H04N1/419—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information in which encoding of the length of a succession of picture-elements of the same value along a scanning line is the only encoding step
-
- 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/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3071—Prediction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
Description
例えば、予測符号化を利用し、予測誤差を出現頻度に応じた可変長符号化と組み合わせる方法が一般的に用いられている。
また、データの変化が無い領域においては、ランレングス符号化を用いる手法が一般的に用いられている。
特許文献1では、画像の符号化処理を行う際に、入力データの過去の履歴において、所定の複数のデータが一致しない場合には予測符号化と可変長符号化を行い、一致した場合に、ランレングス符号化モードに移行して、ランレングス符号化を行う技術が開示されている。
復号時にも、復号済みデータの履歴において、所定の複数のデータが一致する場合にランレングス符号化モードに移行することにより、復号可能であることが示されている。
また、ランレングス符号化モードの判定を複数のデータの比較処理により行わなければならないため、モード判定のための計算量が増え、実行速度が低下するという課題がある。
データを順次入力するデータ圧縮装置であって、
データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出する予測誤差算出部と、
前記予測誤差算出部により予測誤差が算出される度に、算出された予測誤差の値を符号化して予測誤差符号を生成する予測誤差符号化部と、
前記予測誤差算出部により算出された予測誤差のランレングスを計数するランレングス計数部と、
予測誤差の値が変化した際に、前記ランレングス計数部により計数されたランレングスを符号化してランレングス符号を生成するランレングス符号化部と、
前記ランレングス符号化部によりランレングス符号が生成される度に、生成されたランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成する符号結合部と、
前記予測誤差算出部により算出された予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択する符号選択部とを有することを特徴とする。
また、本発明では、予測誤差の値に応じて予測誤差符号及び結合符号のいずれかを出力符号として選択するため、データ値の変動特性に対応させて、結合符号が選択される予測誤差を適切に決定することにより、圧縮効率を高めることができる。
図1は、本実施の形態に係るデータ圧縮装置100の機能ブロックの構成の一例を示す図である。
入力データは、例えば電力量や温度などを含むセンサデータのような、時系列データであり、データが時間の経過順に並んでいる場合が特に好適である。
入力データの処理単位は例えば8ビット、16ビット、32ビット、64ビットなどのCPU(Central Processing Unit)による処理に適した固定長であり、対象データは固定小数点または整数化された数値とすることで、高速な演算が可能となる。
例えば温度データを小数点以下1桁まで扱う場合には元データを10倍して32ビット整数として扱うことができる。
出力データは、可変長符号化された上で処理単位にパックされて出力される。
以下の説明では処理単位を32ビットとする。
つまり、予測誤差算出部111は、データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差Eとして算出する。
つまり、予測誤差算出部111は、次に入力するデータの1つ前に入力したデータの値を次に入力するデータの予測値とする。
センサデータなどの時系列データにおいては、センサのサンプリング間隔が測定対象の変化に対して短い場合に、変化幅の小さい時系列信号となり、直前のデータとの差分(予測誤差E)が0または絶対値の小さい値に集約され、圧縮率を高めることができる。
例えば室内温度を1分間隔で小数点以下1桁まで計測したデータなどのような場合がこのケースに当てはまる。
直前のデータとの差分を取る方法(以下、差分法)により、最小の演算量で予測誤差算出が可能となり、高速な圧縮処理が可能となる。
つまり、予測誤差算出部111は、次に入力するデータに先行して入力している2つ以上のデータを用いた線形演算を行って、次に入力するデータの予測値を算出するようにしてもよい。
より具体的には、計測時間をxとし、データをyとし、N組のデータ(x1,y1),(x2,y2),...,(xN,yN)から以下の一次方程式のパラメータa、bを最小二乗法により求める。
y=ax+b
なお、最小二乗法は、以下の式による。
これにより、積算電力量計による電力量などのセンサデータのようにほぼ一定の割合で増加(あるいは減少)するデータの場合に予測誤差Eが0または絶対値の小さい値に集約され、圧縮率を高めることができる。
可変長符号化の方法としてはガンマ符号あるいはデルタ符号を用いることができる。
ガンマ符号やデルタ符号は絶対値の小さい値を少ない符号長にて符号化する方式であり、既に述べたとおり、本実施の形態では予測誤差Eは0または絶対値の小さい値になっているため、高い圧縮効果が期待できる。
また、ガンマ符号やデルタ符号は固定的な符号化を行うため、算術符号化やハフマン符号化などのエントロピー符号にて必要となるシンボル出現頻度テーブルの作成が不要となり、計算量を削減して高速な処理が可能となる。
符号化対象データを2進数で表したときのビット数−1個の0(2進)に続けて、符号化対象データを2進数で出力する。
例えば、以下のようになる(以下は、すべて2進数)。
1 → 1((1ビット−1)個の0と、1)
10 → 010((2ビット−1)個の0と、10)
100 →00100((3ビット−1)個の0と、100)
予測誤差Eの分布が0から外れる頻度が多くなる場合、例えば変動が大きいセンサデータなどでは、デルタ符号を用いることでより高い圧縮率を実現できる。
以下の説明ではガンマ符号を例に説明するが、デルタ符号でも同様である。
この変換によれば、絶対値が小さい値を絶対値が小さい値として変換できるため、ガンマ符号化あるいはデルタ符号化により高い圧縮率を期待できる。
そこで、予測誤差符号化部112は、予測誤差Eが処理単位の最小値Emin(処理単位が32ビットの場合の10進数表示での−2147483648、−231)である場合には、M1による変換を行わずにEminに対応する固定符号を出力する。
このようにすることで、桁あふれを考慮して処理単位を拡大する必要がなくなり、処理を高速化できる。
例えば、Emin=0x80000000(16進)であり、M1(Emin)=0x100000001(16進)となって33ビットとなる。
そこでE=Eminである場合にはそれに対応する符号を直接出力する。
例えば、ガンマ符号であれば、以下に示す65ビットの符号を変換式M1による変換を行わずに出力する。
従って、以下のような33ビットに符号化することで圧縮率を更に高めることができる。
従って、変換式M1よりも正の値のビット数が少ない変換式M2によって、より高い圧縮率を期待できる。
ランレングス計数部121は、前回の予測誤差Epを保持し、現在処理中の予測誤差EcがEpに等しい場合には、変数ランレングスRに1を加算する。
EcがEpと異なる場合には、ランレングス計数部121は、ランレングスRの値をランレングス符号化部122に出力し、ランレングス符号化部122がランレングスを符号化する。
また、ランレングス計数部121は、ランレングスRを1にリセットする。
EcがEpに等しい場合でも、ランレングスR+1が指定の最大値を超える場合には、ランレングス計数部121は、ランレングスRをランレングス符号化部122に出力し、ランレングスRを1にリセットするようにしてもよい。
可変長符号化の方法としてはガンマ符号あるいはデルタ符号を用いることができる。
電力量や温度などのセンサデータに関しては、ランレングスの出現頻度分布は、1が最大(1が最頻)で値が大きくなるほど頻度が小さくなる傾向があるため、既に述べたように、ガンマ符号やデルタ符号で高い圧縮効果が期待できる。
また、ガンマ符号やデルタ符号により計算量を削減して高速な処理が可能となるのも既に述べた通りである。
ランレングスの場合には必ず1以上の整数となるため、予測誤差の符号化に関して述べたような特別の変換は不要であり、直接符号化する。
順序は予測誤差符号化部112による予測誤差符号Ceが先になるようにする。
すなわち、結合符号Cerは、以下のようになる。
Cer=Ce+Cr (+は結合の意味)
予測誤差判定部141は、符号選択部の例である。
あるいは、一定の割合で緩やかに増減するセンサデータにおいて、前述の差分法により予測誤差Eを算出した場合には、+1や−1が連続する頻度が大きくなる。
したがって、E=1または−1の場合に結合符号Cerを出力符号とし、それ以外は予測誤差符号Ceを出力符号とすることにより、圧縮率を高めることが可能である。
更に傾きの大きな増減を行うセンサデータにおいては、予測誤差Eがより大きい値(例えば、予測誤差Eが5)のときでも予測誤差符号Cerを出力符号とすることで圧縮率を高めることができる場合がある。
一般には予測誤差Eの絶対値が大きいほどそれが連続する確率は下がるため、予測誤差Eの絶対値が指定の閾値以下であれば結合符号Cerを出力し、閾値を超える場合には予測誤差符号Ceを出力するように判定を行うのが合理的である。
一方、全ての予測誤差に対してランレングスが小さい場合には全くランレングス符号化を行わないほうが圧縮率を高めることができる場合もある。
そのような場合には、予測誤差Eの値によらず予測誤差符号Ceを出力符号として選択するという動作が有効となる。
これまでに述べた符号化方法によれば、符号を1ビット単位で順に見ていくことにより復号可能であるため、詰め込みは処理単位のレジスタに対してMSB(Most Significant Bit)からLSBに向かってビット単位で符号を隙間なく詰めていくのみであり、符号の境目やランレングス符号の有無を示すビットなどは不要である。
これらの処理はシフト処理とOR処理により実現可能である。
符号は複数の処理単位にまたがってもよく、その場合には一つ前の処理単位のLSBにその次の処理単位のMSBが繋がるようにすればよい。
最終的には処理単位に詰め込まれた出力データ、出力データの処理単位の数、および出力データに含まれる符号数が出力される。
すなわち、ランレングスRの符号化時に、結合符号Cerが出力符号として選択される場合には結合符号Cerを出力し、予測誤差符号Ceが出力符号として選択される場合には、予測誤差符号CeをR回出力する。
そのとき、出現頻度の高い符号については、k個をまとめて出力する。
前述のように予測誤差やランレングスは0や絶対値の小さい値の出現頻度が高くなるため、E=0、1、−1などの頻度が高い。
例えば、E=0、R=4の場合、Ce=1(2進)であるから、出力符号C=1111(2進)とすることで、1回の処理単位への詰め込み処理で4回分の出力が可能となる。
詰め込み処理はビット操作により実現されるため、符号長が短く頻度が高い場合にはCPUによる計算量が増えるという課題があったが、上記のようにすることで計算量を削減することができ、高速化が実現できる。
また、算術符号、Range Coder、ハフマン符号、シャノン符号や、その他の固定テーブルを用いた符号化方法などであってもよい。
次に、圧縮工程S102にて、予測誤差符号化部112が、ガンマ符号またはデルタ符号により、予測誤差Ecの予測誤差符号Ceを生成する。なお、予測誤差符号化部112は、今回生成した予測誤差符号Ceは次回の予測誤差符号の生成までバッファに滞留させておき、次回の予測誤差符号の生成時にバッファ内の予測誤差符号Ceを出力符号切換え部142及び符号結合部131に出力する。
また、圧縮工程S103にて、ランレングス計数部121が、予測誤差Ecが前回の予測誤差Epと一致するか判定し、一致した場合には圧縮工程S104にて、ランレングス計数部121が、ランレングスRに1を加算する。
そして、圧縮工程S109にて、入力データが終了したかどうかの判定が行われ、入力データが終了していない場合には、圧縮工程S101に戻る。
入力データが終了している場合は、圧縮工程S109において、ランレングス計数部121で計数されたランレングスRに対してランレングス符号化部122でランレングス符号Crが生成され、符号結合部131で予測誤差符号Ceとランレングス符号Crが結合されて、結合符号Cerが生成され、その後、圧縮工程が終了する。
また、圧縮工程S106において、ランレングス計数部121は、ランレングスを1にリセットする。
次に、圧縮工程S107において、符号結合部131が、予測誤差符号化部112による予測誤差符号Ceとランレングス符号化部122によるランレングス符号Crを結合して、結合符号Cerを生成する。
ランレングス符号Crと結合する予測誤差符号は予測誤差符号化部112のバッファに滞留していた1つ前の入力データについての予測誤差符号Ceである。
そして、圧縮工程S108にて、入力データが終了したかどうかの判定が行われ、入力データが終了していない場合には、圧縮工程S101に戻り、入力データが終了している場合は、圧縮工程が終了する。
次に、符号出力工程S202にて、予測誤差判定部141が、予測誤差Ecが特定の値(例えば、0)であるかどうかの判定を行う。
予測誤差Ecが特定の値である場合には、符号出力工程S203において、予測誤差判定部141は、出力符号として結合符号Cerを選択し、出力符号切換え部142を操作して、結合符号Cerを出力させるようにする。
この結果、図2の圧縮工程S107で結合符号Cerが生成されると、結合符号Cerが符号出力部151に出力される。
一方、符号出力工程S202において予測誤差Ecが特定の値でない場合は、符号出力工程S204において、予測誤差判定部141は、出力符号として予測誤差符号Ceを選択し、出力符号切換え部142を操作して、予測誤差符号Ceを出力させるようにする。
この結果、図2の圧縮工程S102で生成された予測誤差符号Ceが符号出力部151に出力される。
図8の例では、予測値を1つ前の入力データの値としている。
また、n回目の入力データの予測誤差Eを算出すると1となり、これにより、n回目のデータ入力時点では予測誤差E=1のランレングスRは1となる。この時点では、予測誤差E=1のランレングスRはまだ確定していない。
予測誤差符号化部112は、予測誤差符号Ce(=1)を生成し、予測誤差符号化部112内のバッファに滞留させておく、
また、予測誤差判定部141により、予測誤差E=1が特定の値に一致するかどうかが判定される(図3の符号出力工程S202)。
特定の値を0としている場合(E=0)は、予測誤差E=1は特定の値でないため、予測誤差判定部141により予測誤差符号Ce(=1)が出力符号として選択され、次回(n+1回目)においてバッファ内の予測誤差符号Ce(=1)が出力符号として出力される。
一方、特定の値を+1及び−1としている場合(|E|=1)は、予測誤差E=1は特定の値であるため、予測誤差判定部141により結合符号Cerが出力符号として選択され、次回(n+1回目)以降に結合符号Cerが出力符号として出力される。結合符号Cerは、この時点では、まだ生成されていない。
n+1回目における予測誤差Eは2(10−8=2)であり、n回目の予測誤差E=1と異なるため、予測誤差E=1のランレングスRは1で確定する。
予測誤差符号化部112は、予測誤差符号Ce(=2)を生成し、予測誤差符号化部112内のバッファに滞留させておく。
また、予測誤差判定部141により、予測誤差E=2が特定の値に一致するかどうかが判定される(図3の符号出力工程S202)。
特定の値を0としている場合(E=0)は、予測誤差E=2は特定の値でないため、予測誤差符号化部112により予測誤差符号Ce(=2)が出力符号として選択され、次回(n+2回目)においてバッファ内の予測誤差符号Ce(=2)が出力符号として出力される。
また、特定の値を+1及び−1としている場合(|E|=1)も、予測誤差E=2は特定の値でないため、予測誤差符号化部112により予測誤差符号Ce(=2)が出力符号として選択され、次回(n+2回目)においてバッファ内の予測誤差符号Ce(=2)が出力符号として出力される。
予測誤差E=1のランレングスRが1で確定したため、ランレングス計数部121からランレングス符号化部122にランレングスR=1が出力され、ランレングス符号Crが生成される。
更に、予測誤差符号化部112内のバッファから前回の予測誤差符号Ce(=1)が出力され、符号結合部131において、ランレングス符号Cr(=1)と結合されて、結合符号Cer(=(1+1))が生成される。
一方、新たな予測誤差E=2のランレングスRが1となる。新たな予測誤差E=2のランレングスRは、この時点では、まだ確定していない。
特定の値が0の場合(E=0)は、n回目の予測誤差E=1に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として予測誤差符号Ce(=1)が選択されており、予測誤差符号Ce(=1)が出力符号として出力される。
一方、特定の値を+1及び−1としている場合(|E|=1)は、n回目の予測誤差E=1に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として結合符号Cerが選択されており、n+1回目において生成された結合符号Cer(=(1+1))が出力符号として出力される。
n+2回目における予測誤差Eは0(10−10=0)であり、n+1回目の予測誤差E=2と異なるため、予測誤差E=2のランレングスRは1で確定する。
予測誤差符号化部112は、予測誤差符号Ce(=0)を生成し、予測誤差符号化部112内のバッファに滞留させておく。
また、予測誤差判定部141により、予測誤差E=0が特定の値に一致するかどうかが判定される(図3の符号出力工程S202)。
特定の値を0としている場合(E=0)は、予測誤差E=0は特定の値であるため、予測誤差判定部141により結合符号Cerが出力符号として選択され、次回(n+3回目)以降に結合符号Cerが出力符号として出力される。結合符号Cerは、この時点では、まだ生成されていない。
一方、特定の値を+1及び−1としている場合(|E|=1)は、予測誤差E=0は特定の値でないため、予測誤差符号化部112により予測誤差符号Ce(=0)が出力符号として選択され、次回(n+3回目)においてバッファ内の予測誤差符号Ce(=0)が出力符号として出力される。
予測誤差E=2のランレングスRが1で確定したため、ランレングス計数部121からランレングス符号化部122にランレングスR=1が出力され、ランレングス符号Crが生成される。
更に、予測誤差符号化部112内のバッファから前回の予測誤差符号Ce(=2)が出力され、符号結合部131において、ランレングス符号Cr(=1)と結合されて、結合符号Cer(=(2+1))が生成される。
一方、新たな予測誤差E=0のランレングスRが1となる。新たな予測誤差E=0のランレングスRは、この時点では、まだ確定していない。
特定の値が0の場合(E=0)は、n+1回目の予測誤差E=2に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として予測誤差符号Ce(=2)が選択されており、n+1回目に生成された予測誤差符号Ce(=2)が出力符号として出力される。
また、特定の値を+1及び−1としている場合(|E|=1)も、n+1回目の予測誤差E=2に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として予測誤差符号Ce(=2)が選択されており、n+1回目に生成された予測誤差符号Ce(=2)が出力符号として出力される。
n+3回目における予測誤差Eは0(10−10=0)であり、n+2回目の予測誤差E=0と同じであるため、予測誤差E=0のランレングスRは2になる。この時点では、予測誤差E=0のランレングスRはまだ確定していない。
予測誤差符号化部112は、予測誤差符号Ce(=0)を生成し、予測誤差符号化部112内のバッファに滞留させておく。
また、予測誤差判定部141により、予測誤差E=0が特定の値に一致するかどうかが判定される(図3の符号出力工程S202)。
特定の値を0としている場合(E=0)は、予測誤差E=0は特定の値であるため、予測誤差判定部141により結合符号Cerが出力符号として選択され、次回(n+4回目)以降に結合符号Cerが出力符号として出力される。結合符号Cerは、この時点では、まだ生成されていない。
一方、特定の値を+1及び−1としている場合(|E|=1)は、予測誤差E=0は特定の値でないため、予測誤差符号化部112により予測誤差符号Ce(=0)が出力符号として選択され、次回(n+4回目)においてバッファ内の予測誤差符号Ce(=0)が出力符号として出力される。
予測誤差E=0のランレングスRが未確定のため、ランレングス計数部121からランレングスRは出力されず、ランレングス符号Crも生成されない。
この結果、結合符号Cerも生成されない。
特定の値が0の場合(E=0)は、n+2回目の予測誤差E=0に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として結合符号Cerが選択されているが、結合符号Cerは、この時点では、まだ生成されていないので、符号は出力されない。
一方、特定の値を+1及び−1としている場合(|E|=1)は、n+2回目の予測誤差E=0に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として予測誤差符号Ce(=0)が選択されており、n+2回目に生成された予測誤差符号Ce(=0)が出力符号として出力される。
n+4回目における予測誤差Eは1(11−10=1)であり、n+3回目の予測誤差E=0と異なるため、予測誤差E=0のランレングスRは2で確定する。
予測誤差符号化部112は、予測誤差符号Ce(=1)を生成し、予測誤差符号化部112内のバッファに滞留させておく。
また、予測誤差判定部141により、予測誤差E=1が特定の値に一致するかどうかが判定される(図3の符号出力工程S202)。
特定の値を0としている場合(E=0)は、予測誤差E=1は特定の値でないため、予測誤差判定部141により予測誤差符号Ce(=1)が出力符号として選択され、次回(n+5回目)においてバッファ内の予測誤差符号Ce(=1)が出力符号として出力される。
一方、特定の値を+1及び−1としている場合(|E|=1)は、予測誤差E=1は特定の値であるため、予測誤差判定部141により結合符号Cerが出力符号として選択され、次回(n+5回目)以降に結合符号Cerが出力符号として出力される。結合符号Cerは、この時点では、まだ生成されていない。
予測誤差E=0のランレングスRが2で確定したため、ランレングス計数部121からランレングス符号化部122にランレングスR=2が出力され、ランレングス符号Crが生成される。
更に、予測誤差符号化部112内のバッファから前回の予測誤差符号Ce(=0)が出力され、符号結合部131において、ランレングス符号Cr(=2)と結合されて、結合符号Cer(=(0+2))が生成される。
一方、新たな予測誤差E=1のランレングスRが1となる。新たな予測誤差E=1のランレングスRは、この時点では、まだ確定していない。
特定の値が0の場合(E=0)は、n+3回目の予測誤差E=0に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として結合符号Cerが選択されており、n+4回目において生成された結合符号Cer(=(0+2))が出力符号として出力される。
一方、特定の値を+1及び−1としている場合(|E|=1)は、n+3回目の予測誤差E=0に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として予測誤差符号Ce(=0)が選択されており、n+3回目に生成された予測誤差符号Ce(=0)が出力符号として出力される。
n+5回目における予測誤差Eは2(13−11=2)であり、n+4回目の予測誤差E=1と異なるため、予測誤差E=1のランレングスRは1で確定する。
予測誤差符号化部112は、予測誤差符号Ce(=2)を生成し、予測誤差符号化部112内のバッファに滞留させておく。
また、予測誤差判定部141により、予測誤差E=2が特定の値に一致するかどうかが判定される(図3の符号出力工程S202)。
特定の値を0としている場合(E=0)は、予測誤差E=2は特定の値でないため、予測誤差符号化部112により予測誤差符号Ce(=2)が出力符号として選択され、次回(n+6回目)においてバッファ内の予測誤差符号Ce(=2)が出力符号として出力される。
また、特定の値を+1及び−1としている場合(|E|=1)も、予測誤差E=2は特定の値でないため、予測誤差符号化部112により予測誤差符号Ce(=2)が出力符号として選択され、次回(n+6回目)においてバッファ内の予測誤差符号Ce(=2)が出力符号として出力される。
予測誤差E=1のランレングスRが1で確定したため、ランレングス計数部121からランレングス符号化部122にランレングスR=1が出力され、ランレングス符号Crが生成される。
更に、予測誤差符号化部112内のバッファから前回の予測誤差符号Ce(=1)が出力され、符号結合部131において、ランレングス符号Cr(=1)と結合されて、結合符号Cer(=(1+1))が生成される。
一方、新たな予測誤差E=2のランレングスRが1となる。新たな予測誤差E=2のランレングスRは、この時点では、まだ確定していない。
特定の値が0の場合(E=0)は、n+4回目の予測誤差E=1に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として予測誤差符号Ce(=1)が選択されており、n+4回目において生成された予測誤差符号Ce(=1)が出力符号として出力される。
一方、特定の値を+1及び−1としている場合(|E|=1)は、n+4回目の予測誤差E=1に対する予測誤差判定部141の判定(符号出力工程S202)の結果、出力符号として結合符号Cerが選択されており、n+5回目において生成された結合符号Cer(=(1+1))が出力符号として出力される。
また、本実施の形態では、予測誤差の値に応じて予測誤差符号及び結合符号のいずれかを出力符号として選択するため、データ値の変動特性に対応させて、結合符号が選択される予測誤差を適切に決定することにより、圧縮効率を高めることができる。
例えば、入力データ間でデータ値の変動があまりなく、予測誤差E=0が連続する頻度が高い場合には、予測誤差E=0のときに結合符号Cerを出力符号とし、それ以外は予測誤差符号Ceを出力符号とすることにより、圧縮率を高めることが可能である。
また、一定の割合で緩やかに増減するデータの場合は、予測誤差|E|=1が連続する頻度が高いため、予測誤差|E|=1のときに結合符号Cerを出力符号とし、それ以外は予測誤差符号Ceを出力符号とすることにより、圧縮率を高めることが可能である。
つまり、予測誤差判定部141が、予測誤差算出部111により算出された予測誤差の値が特定の値(図3のS202で判断対象としている特定の値)である場合に、ランレングス計数部121に当該予測誤差のランレングスの計数の開始を指示する。
そして、ランレングス計数部121は、予測誤差算出部111より指示のあった予測誤差のランレングスの計数を開始する。
このようにすることで、ランレングス計数部121及びランレングス符号化部122の処理を効率化することができる。
出力データに含まれる符号数をヘッダから予め入力し、取り出された符号の数を計数し、計数された符号数が出力データに含まれる符号数に一致したときに、それが最終データであることを知ることができ、データの入力を終了することができる。
また、出力データに含まれる処理単位の数をヘッダから予め入力し、符号化データの入力処理単位数を計数し、データの入力終了時にこれらの処理単位数が一致することを確認することで、データの整合性を確認することができる。
次に、伸張工程S602にて予測誤差復号部311が、取り出された符号をガンマ符号またはデルタ符号またはその他の符号により復号し、予測誤差Eを生成する。
次に、伸張工程S603にてデータ復号部312が、予測誤差Eと過去に復号された履歴データを用いて現在のデータを復号する。
そして、伸張工程S604にて、復号予測誤差判定部341が、予測誤差Eが特定の値であるかどうかを判定する。
次に、伸張工程S607にて、ランレングス復号部321が取り出された符号をガンマ符号またはデルタ符号またはその他の符号により復号し、ランレングスRを生成する。
次に、伸張工程S608にて、データ複製部331が、データ復号部312により復号された現在のデータをランレングスR回分繰返し出力する。このとき、復号予測誤差判定部341は出力データ切換え部342にデータ複製部331の出力データを出力するよう選択させる。
入力データ列を圧縮するデータ圧縮装置であって、
少なくとも1つ以上の入力データの履歴を用いて算出した予測値と、着目するデータとの差分である予測誤差を算出する手段と、
前記予測誤差を可変長符号により符号化して予測誤差符号を生成する手段と、
前記予測誤差のランレングスをカウントする手段と、
前記ランレングスを可変長符号により符号化してランレングス符号を生成する手段と、
前記予測誤差符号および前記ランレングス符号から出力符号を生成する手段とを含み、
前記出力符号を生成する手段は、前記予測誤差の値に応じて、予測誤差符号を出力符号とするか、予測誤差符号とランレングス符号を結合して出力符号とするかを選択するデータ圧縮装置を説明した。
前記出力符号を生成する手段は、
前記予測誤差の絶対値が閾値より大きい場合には予測誤差符号を出力符号とし、
前記予測誤差の絶対値が閾値以下である場合には予測誤差符号とランレングス符号を結合して出力符号とすることを説明した。
前記予測誤差を可変長符号により符号化して予測誤差符号を生成する手段は、
前記予測誤差を最も近い固定ビット数の整数に変換する手段と、
変換された整数値が前記固定ビット数で表される最小値である場合には、対応する固定ビット列を出力符号として符号化する手段と、
変換された整数値が前記最小値でない場合には、正の整数にマッピングし、可変長符号化する手段を含むことを説明した。
前記可変長符号化する手段は、
アルファ符号またはガンマ符号またはデルタ符号またはオメガ符号またはゴロム符号により符号化することを説明した。
前記ランレングスを可変長符号により符号化してランレングス符号を生成する手段は、
前記ランレングスをアルファ符号またはガンマ符号またはデルタ符号またはオメガ符号またはゴロム符号により符号化することを説明した。
前記予測値は、着目するデータの直前のデータであることを説明した。
前記予測値は、直前の少なくとも2つ以上のデータを用いた固定パラメータの線形演算であることを説明した。
図4は、本実施の形態に係るデータ圧縮装置200の機能ブロックの構成の一例を示す図である。
データ圧縮装置200は、圧縮前処理部101、圧縮処理部102、制御部103に大別される。
圧縮処理部102は、実施の形態1で説明したデータ圧縮装置100と実質的に同じ構成であり、予測誤差判定部141が符号選択基準143を記憶している点が実施の形態1と異なる。
圧縮前処理部101は、先行予測誤差算出部211、先行ランレングス計数部221、符号長算出部171、172、173、符号長算出基準181、182、183、基準選択部191を有する。
圧縮前処理部101の内部構成の詳細は後述する。
制御部103は、圧縮処理のパス管理を行い、1パス目から入力データを圧縮前処理部101に入力させ、圧縮前処理部101に複数の基準に基づく圧縮後の符号長を算出させ、もっとも符号長が短い基準を選択させる。
圧縮前処理部101は、複数の符号選択基準のうち圧縮後の符号長が最も短い符号選択基準を選択するため、時間の経過により入力データの特性が変化する場合は、入力データの特性の変化に伴って、選択する符号選択基準が変化する場合がある。
なお、選択された基準に基づく圧縮後の符号長が目標とする圧縮ブロックサイズに満たない場合には、制御部103は、追加の入力データを圧縮前処理部101に入力して圧縮後の符号長を更新させる。
圧縮後の符号長が目標とする圧縮ブロックサイズを超えた場合には、制御部103は、2パス目として最後の入力データ追加の前までの入力データを圧縮処理部102に入力して圧縮処理を実行させる。
圧縮前処理部101の先行予測誤差算出部211および先行ランレングス計数部221は、機能としては、実施の形態1で説明した予測誤差算出部111及びランレングス計数部121と同じであるが、以下の点が異なる。
本実施の形態では、先行予測誤差算出部211は、圧縮処理部102の予測誤差算出部111のデータ入力に先立ち、予測誤差算出部111が入力する予定のデータ(入力予定データともいう)を入力し、予測誤差算出部111と同じ方式によりデータ値を予測し、入力予定データごとに予測誤差を算出する。
先行ランレングス計数部221は、先行予測誤差算出部211により算出された予測誤差のランレングスを計数する。
図4の例では符号長算出部を3つ有する場合の例を示したが、符号長算出部の数は任意でよい。
Ge=2Ne−1
予測誤差EがE=Eminを満たす場合にはGeはEminに対応する符号の長さとすればよい。
また、符号長算出部171、172、173は、ランレングスRを2進数で表したときのビット数Nrに対して符号長Grを以下のように算出することができる。
Gr=2Nr−1
また、符号長算出部171、172、173は、予測誤差EおよびランレングスRとしたときの符号長Gは、以下のように算出することができる。
G=Ge+Gr …予測誤差符号とランレングス符号の結合を出力符号とするとき
G=Ge×R …予測誤差符号のみを出力符号とするとき
更には、前述の通り、圧縮ブロックサイズを調整するために、入力データの追加処理により少しずつ入力データを増やして圧縮後の符号長を算出する場合、シンボル出現頻度テーブルを必要とする符号化方法では、テーブルの内容が変化するために、それまでに計算済みの符号長についても再計算が必要となるが、本実施の形態では固定的に符号長を算出できるため、追加したデータの符号長だけを計算すればよく、計算量を削減して高速化が可能である。
また、算術符号、Range Coder、ハフマン符号、シャノン符号や、その他の固定テーブルを用いた符号化方法などであってもよい。
例えば、符号長算出基準181を、
基準1=ランレングス符号化なし(予測誤差の値に関わらず常に予測誤差符号の符号長を算出)
とすると、符号長算出部171は符号長G1を以下の式により算出する。
G1=Ge×R
また、符号長算出基準182を、
基準2=予測誤差Eが0の場合のみランレングス符号化あり
とすると、符号長算出部172は符号長G2を以下の式により算出する。
G2=Ge+Gr …E=0のとき
G2=Ge×R …E≠0のとき
さらに、符号長算出基準183を、
基準3=予測誤差Eの絶対値が1以下の場合のみランレングス符号化あり
とすると、符号長算出部173は符号長G3を以下の式により算出する。
G3=Ge+Gr …|E|≦1のとき
G3=Ge×R …|E|>1のとき
以上、符号長算出部の算出例を示したが、ここに示した以外の基準を用いることが可能であることも当業者には明らかである。
追加入力予定データの場合には、前回の合計符号長を入力あるいは内部保存し、追加入力予定データの符号長を加算する。
そして、符号長算出部171、172、173の各々は、先行予測誤差算出部211により算出された予測誤差の値が結合符号長算出値と一致する場合に当該予測誤差の値と先行ランレングス計数部221によるランレングスとに基づき結合符号の符号長を算出し、先行予測誤差算出部211により算出された予測誤差の値が結合符号長算出値に一致しない場合に当該予測誤差の値に基づき予測誤差符号の符号長を算出して、複数の入力予定データでの合計符号長を算出する。
つまり、符号長算出部172には結合符号長算出値として予測誤差E=0が設定されており、予測誤差E=0のときに結合符号の符号長を算出し、予測誤差E=0以外のときは予測誤差符号の符号長を算出する。そして、符号長算出部172は、算出した結合符号の符号長及び予測誤差符号の符号長の合計符号長を算出する。
また、符号長算出部173には結合符号長算出値として予測誤差|E|≦1が設定されており、予測誤差|E|≦1のときに結合符号の符号長を算出し、予測誤差|E|>1のときは予測誤差符号の符号長を算出する。そして、符号長算出部172は、算出した結合符号の符号長及び予測誤差符号の符号長の合計符号長を算出する。
また、符号長算出部173は、特例符号長算出部として機能し、結合符号長算出値が設定されておらず、先行予測誤差算出部211により算出された予測誤差に対して予測誤差符号の符号長のみを算出して、複数の入力予定データでの合計符号長を算出する。
つまり、基準選択部191は、最小の合計符号長という条件を満たす符号長算出部の結合符号長算出値(E=0、|E|≦1等)を符号長算出基準として選定し、符号長算出基準として選定した値の予測誤差に対する出力符号として結合符号を選択するよう予測誤差判定部141(符号選択部)に指示する。
基準選択部191は、選定指示部の例である。
そして、基準選択部191により選定された符号長算出基準を示す基準コードは制御部103により2パス目の入力データと共に圧縮処理部102に入力され、予測誤差判定部141で基準コードがデコードされ、予測誤差判定部141が選択された符号長算出基準を符号選択基準143として保持する。
そして、予測誤差判定部141は、符号選択基準143に基づき、対象となる予測誤差に対しては結合符号を選択してデータ圧縮を実行する。
基準コードを前述の出力データの処理単位の数、および出力データに含まれる符号数などと共に圧縮ブロックのヘッダとして保存することにより、伸張時に同じ基準を用いて復号することが可能である。
圧縮工程S301において、制御部103が、一定のサイズの入力予定データについて圧縮パス1を実行し、圧縮工程S302にて合計符号長がブロックサイズ未満である場合、入力予定データを追加してS301の圧縮パス1を再実行する。
合計符号長がブロックサイズ以上である場合には、制御部103は、圧縮工程S303にて合計符号長がブロックサイズ以下となる入力データサイズを決定し、圧縮工程S304にて圧縮パス2を実行する。
圧縮パス1工程S401において、先行予測誤差算出部211が、入力データと過去の履歴データを用いて予測誤差Ecを算出する。
圧縮パス1工程S402にて、先行予測誤差算出部211が、予測誤差Ecが前回の予測誤差Epと一致するか判定し、一致した場合には、先行ランレングス計数部221が、圧縮パス1工程S403にてランレングスRに1を加算する。
一致しない場合には、圧縮パス1工程S404にて、各符号長算出部は、予測誤差EpとランレングスRを元に符号長加算を行い、圧縮パス1工程S405にて、先行ランレングス計数部221が、ランレングスを1にリセットする。
圧縮パス1工程S406にて入力データが終了したかどうかを判定し、終了していない場合には圧縮パス1工程S401に戻る。
終了した場合は圧縮パス1工程S407にて、各符号長算出部は、予測誤差EcとランレングスRを元に最後の符号長加算を行う。
圧縮パス1工程S408にて、基準選択部191が、符号長算出基準ごとに算出した合計符号長を比較し、合計符号長が最小である符号長算出基準を選択して基準コードと合計符号長を出力する。
符号長加算工程S501において、各符号長算出部は、予測誤差の符号長を算出し、符号長加算工程S502において、ランレングスの符号長を算出し、符号長加算工程S503において、それぞれの符号長算出基準ごとに符号長を算出して、合計符号長にそれぞれ加算する。
データ圧縮装置は、さらに、
予測誤差符号の符号長を算出する手段と、
ランレングス符号の符号長を算出する手段と、
予測誤差の値に応じた複数の基準に基づき、予測誤差符号の符号長または、予測誤差符号とランレングス符号を結合した符号の符号長から選択して、複数の基準にそれぞれ対応した複数の出力符号列の符号長を算出する手段と、
入力データブロックに対して複数の出力符号列の符号長を算出して、符号長が最小となる基準を該入力データブロックの基準として選択する手段と、
入力データブロックに入力データが追加されたときに、追加された入力データの複数の符号長を算出して追加前に算出された符号長に加算し、符号長が最小となる基準を再選択する手段と、
選択された基準にて該入力データブロックの出力符号列を生成する手段、
を含むことを説明した。
前記複数の基準は、
前記予測誤差によらず予測誤差符号を出力符号とする基準、
前記予測誤差が0の場合に予測誤差符号とランレングス符号を結合して出力符号とし、それ以外は予測誤差符号を出力符号とする基準、
前記予測誤差の絶対値が1以下の場合に予測誤差符号とランレングス符号を結合して出力符号とし、それ以外は予測誤差符号を出力符号とする基準、
のいずれか1つ以上を含むことを説明した。
図9は、実施の形態1及び2に示すデータ圧縮装置100、200のハードウェア資源の一例を示す図である。
なお、図9の構成は、あくまでもデータ圧縮装置100、200のハードウェア構成の一例を示すものであり、データ圧縮装置100、200のハードウェア構成は図9に記載の構成に限らず、他の構成であってもよい。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
データ圧縮装置100、200の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
すなわち、実施の形態1及び2で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「データ圧縮方法」を実現することができる。
また、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1及び2の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
Claims (15)
- データを順次入力するデータ圧縮装置であって、
データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出する予測誤差算出部と、
前記予測誤差算出部により予測誤差が算出される度に、算出された予測誤差の値を符号化して予測誤差符号を生成する予測誤差符号化部と、
前記予測誤差算出部により算出された予測誤差のランレングスを計数するランレングス計数部と、
予測誤差の値が変化した際に、前記ランレングス計数部により計数されたランレングスを符号化してランレングス符号を生成するランレングス符号化部と、
前記ランレングス符号化部によりランレングス符号が生成される度に、生成されたランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成する符号結合部と、
前記予測誤差算出部により算出された予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択する符号選択部とを有することを特徴とするデータ圧縮装置。 - 前記符号選択部は、
前記予測誤差算出部により算出された予測誤差の値が特定の値である場合に当該予測誤差に対する結合符号を選択し、前記予測誤差算出部により算出された予測誤差の値が他の値である場合に当該予測誤差に対する予測誤差符号を選択することを特徴とする請求項1に記載のデータ圧縮装置。 - 前記符号選択部は、
前記予測誤差算出部により算出された予測誤差の値が特定の値である場合に、前記ランレングス計数部に当該予測誤差のランレングスの計数の開始を指示し、
前記ランレングス計数部は、
前記符号選択部により指示のあった予測誤差のランレングスの計数を開始することを特徴とする請求項2に記載のデータ圧縮装置。 - 前記データ圧縮装置は、更に、
前記予測誤差算出部のデータ入力に先立ち、前記予測誤差算出部が入力することになる複数の入力予定データに対して特定の値を選定し、選定した値の予測誤差に対する出力符号として結合符号を選択するよう前記符号選択部に指示する選定指示部を有し、
前記符号選択部は、
前記予測誤差算出部により算出された予測誤差の値が前記選定指示部から指示された値である場合に出力符号として当該予測誤差に対する結合符号を選択し、前記予測誤差算出部により算出された予測誤差の値が他の値である場合に出力符号として当該予測誤差に対する予測誤差符号を選択することを特徴とする請求項1〜3のいずれかに記載のデータ圧縮装置。 - 前記データ圧縮装置は、更に、
前記予測誤差算出部のデータ入力に先立ち、入力予定データごとに前記予測誤差算出部の予測方式と同じ方式によりデータ値を予測し、入力予定データごとに予測誤差を算出する先行予測誤差算出部と、
前記先行予測誤差算出部により算出された予測誤差のランレングスを計数する先行ランレングス計数部と、
結合符号の符号長を算出する結合符号長算出値として所定の値が設定されており、前記先行予測誤差算出部により算出された予測誤差の値が前記結合符号長算出値と一致する場合に当該予測誤差の値と前記先行ランレングス計数部によるランレングスとに基づき結合符号の符号長を算出し、前記先行予測誤差算出部により算出された予測誤差の値が前記結合符号長算出値に一致しない場合に当該予測誤差の値に基づき予測誤差符号の符号長を算出して、前記複数の入力予定データでの合計符号長を算出する符号長算出部とを有し、
前記選定指示部は、
前記符号長算出部により算出された合計符号長が所定の条件を満たす場合に、前記結合符号長算出値を前記符号選択部において結合符号を選択させる値として選定することを特徴とする請求項4に記載のデータ圧縮装置。 - 前記データ圧縮装置は、
結合符号長算出値としてそれぞれに異なる値が設定されており、それぞれの結合符号長算出値に基づいて予測誤差ごとに結合符号の符号長及び予測誤差符号の符号長のいずれかを算出して、前記複数の入力予定データでの合計符号長を算出する複数の符号長算出部を有し、
前記選定指示部は、
最小の合計符号長の符号長算出部の結合符号長算出値を前記符号選択部において結合符号を選択させる値として選定することを特徴とする請求項5に記載のデータ圧縮装置。 - 前記データ圧縮装置は、更に、
結合符号長算出値として値0が設定されており、前記先行予測誤差算出部により算出された予測誤差の値が0である場合に結合符号の符号長を算出し、前記先行予測誤差算出部により算出された予測誤差の値が0でない場合に予測誤差符号の符号長を算出する符号長算出部と、
結合符号長算出値として絶対値1以下が設定されており、前記先行予測誤差算出部により算出された予測誤差の絶対値が1以下である場合に結合符号の符号長を算出し、前記先行予測誤差算出部により算出された予測誤差の絶対値が1以下でない場合に予測誤差符号の符号長を算出する符号長算出部との少なくともいずれかを有することを特徴とする請求項6に記載のデータ圧縮装置。 - 前記データ圧縮装置は、
結合符号長算出値が設定されておらず、前記先行予測誤差算出部により算出された予測誤差に対して予測誤差符号の符号長のみを算出して、前記複数の入力予定データでの合計符号長を算出する特例符号長算出部を有し、
前記選定指示部は、
前記符号長算出部により算出された合計符号長が前記特例符号長算出部により算出された合計符号長よりも小さい場合に、前記符号長算出部の結合符号長算出値を前記符号選択部において結合符号を選択させる値として選定し、
前記符号長算出部により算出された合計符号長が前記特例符号長算出部により算出された合計符号長以上である場合に、前記符号選択部に対して予測誤差の値にかかわらず出力符号として予測誤差符号のみを選択するよう指示することを特徴とする請求項5に記載のデータ圧縮装置。 - 前記予測誤差符号化部は、
予測誤差の値を可変長符号により符号化して予測誤差符号を生成し、
前記ランレングス符号化部は、
ランレングスを可変長符号により符号化してランレングス符号を生成することを特徴とする請求項1に記載のデータ圧縮装置。 - 前記予測誤差符号化部は、
前記予測誤差算出部により予測誤差が算出される度に、算出された予測誤差の値が所定の固定ビット数で表される整数値のうちの最小値に該当するか否かを判断し、前記予測誤差の値が前記最小値に該当する場合に前記予測誤差の値を前記固定ビット数により符号化して予測誤差符号を生成し、前記予測誤差の値が前記最小値に該当しない場合に前記予測誤差の値を正の整数にマッピングし、マッピングした正の整数を可変長符号により符号化して予測誤差符号を生成することを特徴とする請求項9に記載のデータ圧縮装置。 - 前記予測誤差符号化部は、
アルファ符号、ガンマ符号、デルタ符号、オメガ符号及びゴロム符号のいずれかにより予測誤差符号を生成し、
前記ランレングス符号化部は、
アルファ符号、ガンマ符号、デルタ符号、オメガ符号及びゴロム符号のいずれかによりランレングス符号を生成することを特徴とする請求項1に記載のデータ圧縮装置。 - 前記予測誤差符号化部は、
次に入力するデータの1つ前に入力したデータの値を次に入力するデータの予測値とすることを特徴とする請求項1に記載のデータ圧縮装置。 - 前記予測誤差符号化部は、
次に入力するデータに先行して入力している2つ以上のデータを用いた線形演算を行って、次に入力するデータの予測値を算出することを特徴とする請求項1に記載のデータ圧縮装置。 - データを順次入力するコンピュータが行うデータ圧縮方法であって、
前記コンピュータが、データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出し、
予測誤差を算出する度に、前記コンピュータが、算出した予測誤差の値を符号化して予測誤差符号を生成し、
前記コンピュータが、算出した予測誤差のランレングスを計数し、
予測誤差の値が変化した際に、前記コンピュータが、計数したランレングスを符号化してランレングス符号を生成し、
ランレングス符号を生成する度に、前記コンピュータが、生成したランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成し、
前記コンピュータが、算出した予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択することを特徴とするデータ圧縮方法。 - データを順次入力するコンピュータに、
データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出する予測誤差算出処理と、
前記予測誤差算出処理により予測誤差が算出される度に、算出された予測誤差の値を符号化して予測誤差符号を生成する予測誤差符号化処理と、
前記予測誤差算出処理により算出された予測誤差のランレングスを計数するランレングス計数処理と、
予測誤差の値が変化した際に、前記ランレングス計数処理により計数されたランレングスを符号化してランレングス符号を生成するランレングス符号化処理と、
前記ランレングス符号化処理によりランレングス符号が生成される度に、生成されたランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成する符号結合処理と、
前記予測誤差算出処理により算出された予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択する符号選択処理とを実行させることを特徴とするプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/053423 WO2011108089A1 (ja) | 2010-03-03 | 2010-03-03 | データ圧縮装置及びデータ圧縮方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5095033B2 JP5095033B2 (ja) | 2012-12-12 |
JPWO2011108089A1 true JPWO2011108089A1 (ja) | 2013-06-20 |
Family
ID=44541774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012502928A Active JP5095033B2 (ja) | 2010-03-03 | 2010-03-03 | データ圧縮装置及びデータ圧縮方法及びプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US8638243B2 (ja) |
JP (1) | JP5095033B2 (ja) |
KR (1) | KR101318574B1 (ja) |
CN (1) | CN102783037B (ja) |
WO (1) | WO2011108089A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484476B (zh) * | 2014-12-31 | 2019-04-12 | 中国石油天然气股份有限公司 | 一种抽油机示功图数据压缩存储方法及装置 |
US10827039B1 (en) | 2015-10-19 | 2020-11-03 | Quest Software Inc. | Systems and methods for dynamic compression of time-series data |
CN113037300B (zh) * | 2021-03-04 | 2023-05-23 | 中国能源建设集团广东省电力设计研究院有限公司 | 电力传感器在线监测数据压缩方法、解压方法及监测系统 |
US20230334022A1 (en) * | 2022-04-14 | 2023-10-19 | The Hospital For Sick Children | System and method for processing and storage of a time-series data stream |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS54116822A (en) * | 1978-03-02 | 1979-09-11 | Nec Corp | Picture coder |
US4633325A (en) * | 1983-09-01 | 1986-12-30 | Nec Corporation | Adaptive predictive encoding and/or decoding apparatus |
JP2983228B2 (ja) | 1989-07-25 | 1999-11-29 | ダイセル化学工業株式会社 | 時系列観測データの圧縮装置 |
JP3128016B2 (ja) | 1992-04-14 | 2001-01-29 | 富士ゼロックス株式会社 | 画像圧縮装置 |
JP2842045B2 (ja) | 1992-05-14 | 1998-12-24 | 富士ゼロックス株式会社 | データ圧縮装置 |
JP3124887B2 (ja) | 1994-04-28 | 2001-01-15 | 京セラ株式会社 | データ圧縮・復号方式 |
US5883976A (en) | 1994-12-28 | 1999-03-16 | Canon Kabushiki Kaisha | Selectively utilizing multiple encoding methods |
JP3495800B2 (ja) | 1994-12-28 | 2004-02-09 | キヤノン株式会社 | 符号化装置及び方法 |
JPH10105372A (ja) | 1996-10-02 | 1998-04-24 | Oki Data:Kk | データ列の圧縮装置及び圧縮方法 |
US6621934B1 (en) * | 1996-12-17 | 2003-09-16 | Thomson Licensing S.A. | Memory efficient compression apparatus in an image processing system |
JPH1169165A (ja) | 1997-08-21 | 1999-03-09 | Victor Co Of Japan Ltd | 文字画像符号化方法及び装置 |
JPH1169615A (ja) * | 1997-08-27 | 1999-03-09 | Nissin Electric Co Ltd | 中性点接地装置 |
US6556624B1 (en) * | 1999-07-27 | 2003-04-29 | At&T Corp. | Method and apparatus for accomplishing multiple description coding for video |
US6795583B1 (en) * | 1999-11-24 | 2004-09-21 | General Electric Company | Image data compression employing embedded compression and decompression codes |
JP2002112040A (ja) | 2000-10-03 | 2002-04-12 | Ricoh Co Ltd | 画像データ圧縮処理方式 |
JP3857534B2 (ja) * | 2001-03-21 | 2006-12-13 | 株式会社リコー | 画像圧縮処理装置 |
US6832005B2 (en) * | 2001-03-23 | 2004-12-14 | Microsoft Corporation | Adaptive encoding and decoding of bi-level images |
CN100553338C (zh) * | 2002-07-15 | 2009-10-21 | 株式会社日立制作所 | 动态图像编码方法 |
JP4319895B2 (ja) | 2003-11-17 | 2009-08-26 | 大日本印刷株式会社 | 時系列信号の符号化装置 |
US7650039B2 (en) * | 2005-03-03 | 2010-01-19 | Canon Kabushiki Kaisha | Image encoding apparatus, image decoding apparatus, control method therefor, computer program, and computer-readable storage medium |
JP4613771B2 (ja) | 2005-09-21 | 2011-01-19 | 富士ゼロックス株式会社 | 符号化装置、符号化方法及びそのプログラム |
JP2008109194A (ja) | 2006-10-23 | 2008-05-08 | Canon Inc | 画像符号化装置及び画像復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体 |
EP2145479B1 (en) * | 2007-04-20 | 2014-07-02 | Thomson Licensing | Method and apparatus for selecting a scan path for the elements of a block in spatial domain picture encoding and decoding |
DE102007020292A1 (de) * | 2007-04-30 | 2008-11-13 | Siemens Ag | Verfahren zur Komprimierung von Daten unter Verwendung einer Lauflängen-Kodierung insbesondere für medizinische Bilddaten |
US7991237B2 (en) * | 2007-06-28 | 2011-08-02 | Mitsubishi Electric Corporation | Image encoding device, image decoding device, image encoding method and image decoding method |
JP5157490B2 (ja) | 2008-01-31 | 2013-03-06 | 日本電気株式会社 | 目標符号量算出装置、目標符号量算出方法および目標符号量算出プログラム |
-
2010
- 2010-03-03 CN CN201080065101.7A patent/CN102783037B/zh active Active
- 2010-03-03 KR KR1020127017658A patent/KR101318574B1/ko active IP Right Grant
- 2010-03-03 US US13/520,590 patent/US8638243B2/en active Active
- 2010-03-03 JP JP2012502928A patent/JP5095033B2/ja active Active
- 2010-03-03 WO PCT/JP2010/053423 patent/WO2011108089A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR20120101530A (ko) | 2012-09-13 |
US8638243B2 (en) | 2014-01-28 |
CN102783037B (zh) | 2015-05-13 |
CN102783037A (zh) | 2012-11-14 |
WO2011108089A1 (ja) | 2011-09-09 |
KR101318574B1 (ko) | 2013-10-16 |
JP5095033B2 (ja) | 2012-12-12 |
US20120280838A1 (en) | 2012-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5095033B2 (ja) | データ圧縮装置及びデータ圧縮方法及びプログラム | |
JP2012113657A (ja) | データ圧縮装置及びデータ復元装置及びデータ処理システム及びコンピュータプログラム及びデータ圧縮方法及びデータ復元方法 | |
CN113366765A (zh) | 减少锁存器计数以节省用于动态霍夫曼表生成的硬件面积 | |
WO2019080670A1 (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
JP5570409B2 (ja) | データ圧縮装置及びデータ圧縮方法及びデータ圧縮プログラム | |
JP5619326B2 (ja) | 符号化装置、復号装置、符号化方法、符号化プログラム、復号方法および復号プログラム | |
JP6227186B2 (ja) | データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム | |
JP4547503B2 (ja) | 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体 | |
JP6835285B1 (ja) | データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ伸長方法、データ伸長装置およびデータ伸長プログラム | |
CN112449191B (zh) | 压缩多个图像的方法、解压缩图像的方法和装置 | |
Sano et al. | Segment-parallel predictor for FPGA-based hardware compressor and decompressor of floating-point data streams to enhance memory I/O bandwidth | |
US11899934B2 (en) | Compression device, compression and decompression device, and memory system | |
JP2020053820A (ja) | 量子化及び符号化器作成方法、圧縮器作成方法、圧縮器作成装置及びプログラム | |
JP2023064241A (ja) | ストレージシステム及びストレージシステムにおけるデータ処理方法 | |
JP2018072566A (ja) | ピッチ抽出装置及びピッチ抽出方法 | |
JP2007336056A (ja) | 符号化装置、符号化方法及びプログラム | |
JP5848620B2 (ja) | 画像符号化装置、方法、及びプログラム | |
JP6266193B2 (ja) | データ圧縮装置、データ伸長装置、データ圧縮プログラム、データ伸長プログラム、データ圧縮方法及びデータ伸長方法 | |
Cayoglu et al. | Data Encoding in Lossless Prediction-Based Compression Algorithms | |
JP2003174365A (ja) | 復号化装置及びその方法 | |
US11914443B2 (en) | Power-aware transmission of quantum control signals | |
JP3018990B2 (ja) | 算術符号化装置 | |
JP7345831B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
US20220188077A1 (en) | Arithmetic processing device, arithmetic processing method, and storage medium | |
JP2022127884A (ja) | 演算装置、圧縮方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20120821 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120918 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5095033 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150928 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |