JPWO2011108089A1 - データ圧縮装置及びデータ圧縮方法及びプログラム - Google Patents

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

Info

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
Application number
JP2012502928A
Other languages
English (en)
Other versions
JP5095033B2 (ja
Inventor
加藤 守
守 加藤
光則 郡
光則 郡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5095033B2 publication Critical patent/JP5095033B2/ja
Publication of JPWO2011108089A1 publication Critical patent/JPWO2011108089A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3002Conversion to or from differential modulation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion 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/48Conversion 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6041Compression optimized for errors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/607Selection between different types of compressors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6094Selection strategies according to reasons other than compression rate or data type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/417Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/419Systems 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3071Prediction

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

予測誤差算出部111が、入力データごとに予測誤差を算出し、予測誤差符号化部112が予測誤差の値を符号化して予測誤差符号を生成し、ランレングス計数部121が予測誤差のランレングスを計数し、ランレングス符号化部122が、予測誤差の値が変化した際に、計数されたランレングスを符号化してランレングス符号を生成し、符号結合部131が、ランレングス符号を対応する予測誤差の予測誤差符号に結合して結合符号を生成し、予測誤差判定部141が、予測誤差の値が特定の値である場合に当該予測誤差に対する結合符号を出力符号として選択し、他の値である場合に当該予測誤差に対する予測誤差符号を出力符号として選択し、符号出力部151が選択された出力符号を出力する。

Description

本発明は、データ圧縮技術に関する。
従来より、データの可逆圧縮には様々な手法が用いられている。
例えば、予測符号化を利用し、予測誤差を出現頻度に応じた可変長符号化と組み合わせる方法が一般的に用いられている。
また、データの変化が無い領域においては、ランレングス符号化を用いる手法が一般的に用いられている。
特許文献1では、画像の符号化処理を行う際に、入力データの過去の履歴において、所定の複数のデータが一致しない場合には予測符号化と可変長符号化を行い、一致した場合に、ランレングス符号化モードに移行して、ランレングス符号化を行う技術が開示されている。
復号時にも、復号済みデータの履歴において、所定の複数のデータが一致する場合にランレングス符号化モードに移行することにより、復号可能であることが示されている。
特開2008−109194号公報
特許文献1においては、入力データの変化が無い領域についてのみランレングス符号化を行うため、一定の傾きで増減するデータなどの予測モデルに適合した変化を続けるデータについてはランレングス符号化されず、圧縮効率に課題がある。
また、ランレングス符号化モードの判定を複数のデータの比較処理により行わなければならないため、モード判定のための計算量が増え、実行速度が低下するという課題がある。
この発明は上記のような課題を解決することを主な目的とし、温度や電力量などのセンサデータなどの時系列データの圧縮において、一定の傾きで増減するデータなどの予測モデルに適合した変化を続けるデータに対しても効率よく圧縮が可能であり、かつ計算量を減らしてより圧縮伸張の実行速度を高めることができるデータ圧縮技術を提供することを主な目的とする。
本発明に係るデータ圧縮装置は、
データを順次入力するデータ圧縮装置であって、
データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出する予測誤差算出部と、
前記予測誤差算出部により予測誤差が算出される度に、算出された予測誤差の値を符号化して予測誤差符号を生成する予測誤差符号化部と、
前記予測誤差算出部により算出された予測誤差のランレングスを計数するランレングス計数部と、
予測誤差の値が変化した際に、前記ランレングス計数部により計数されたランレングスを符号化してランレングス符号を生成するランレングス符号化部と、
前記ランレングス符号化部によりランレングス符号が生成される度に、生成されたランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成する符号結合部と、
前記予測誤差算出部により算出された予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択する符号選択部とを有することを特徴とする。
本発明によれば、入力データに対して予測誤差を算出し、予測誤差のランレングスを計数するので、一定の傾きで増減するデータについても効率的にランレングス符号化を行うことができる。
また、本発明では、予測誤差の値に応じて予測誤差符号及び結合符号のいずれかを出力符号として選択するため、データ値の変動特性に対応させて、結合符号が選択される予測誤差を適切に決定することにより、圧縮効率を高めることができる。
実施の形態1に係るデータ圧縮装置の構成例を示す図。 実施の形態1に係るデータ圧縮装置の動作例を示すフローチャート図。 実施の形態1に係るデータ圧縮装置の動作例を示すフローチャート図。 実施の形態2に係るデータ圧縮装置の構成例を示す図。 実施の形態2に係るデータ圧縮装置の動作例を示すフローチャート図。 実施の形態2に係るデータ圧縮装置の動作例を示すフローチャート図。 実施の形態2に係るデータ圧縮装置の動作例を示すフローチャート図。 実施の形態1に係る入力データ値、予測誤差、ランレングス等の例を示す図。 実施の形態1及び2に係るデータ圧縮装置のハードウェア構成例を示す図。 実施の形態1に係るデータ伸張装置の構成例を示す図。 実施の形態1に係るデータ伸張装置の動作例を示すフローチャート図。
実施の形態1.
図1は、本実施の形態に係るデータ圧縮装置100の機能ブロックの構成の一例を示す図である。
データ圧縮装置100は、圧縮の対象となるデータ(入力データ)を順次入力し、圧縮を行って出力データを出力する。
入力データは、例えば電力量や温度などを含むセンサデータのような、時系列データであり、データが時間の経過順に並んでいる場合が特に好適である。
入力データの処理単位は例えば8ビット、16ビット、32ビット、64ビットなどのCPU(Central Processing Unit)による処理に適した固定長であり、対象データは固定小数点または整数化された数値とすることで、高速な演算が可能となる。
例えば温度データを小数点以下1桁まで扱う場合には元データを10倍して32ビット整数として扱うことができる。
出力データは、可変長符号化された上で処理単位にパックされて出力される。
以下の説明では処理単位を32ビットとする。
データ圧縮装置100は、予測誤差算出部111、予測誤差符号化部112、ランレングス計数部121、ランレングス符号化部122、符号結合部131、予測誤差判定部141、出力符号切換え部142、符号出力部151を含む。
予測誤差算出部111は、入力データを一定の処理単位ごとに入力し、過去に入力したデータの履歴を用いて現在処理中のデータを予測した予測値と実際の現在処理中のデータとの差分を取ることにより予測誤差Eを算出する。
つまり、予測誤差算出部111は、データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差Eとして算出する。
例えば、予測誤差算出部111では、現在処理中のデータの直前に入力されたデータの値を予測値とすることができる。
つまり、予測誤差算出部111は、次に入力するデータの1つ前に入力したデータの値を次に入力するデータの予測値とする。
センサデータなどの時系列データにおいては、センサのサンプリング間隔が測定対象の変化に対して短い場合に、変化幅の小さい時系列信号となり、直前のデータとの差分(予測誤差E)が0または絶対値の小さい値に集約され、圧縮率を高めることができる。
例えば室内温度を1分間隔で小数点以下1桁まで計測したデータなどのような場合がこのケースに当てはまる。
直前のデータとの差分を取る方法(以下、差分法)により、最小の演算量で予測誤差算出が可能となり、高速な圧縮処理が可能となる。
また別の例では、予測誤差算出部111は、直前のN(N≧2)個のデータから線形予測を行ってもよい。
つまり、予測誤差算出部111は、次に入力するデータに先行して入力している2つ以上のデータを用いた線形演算を行って、次に入力するデータの予測値を算出するようにしてもよい。
より具体的には、計測時間をxとし、データをyとし、N組のデータ(x,y),(x,y),...,(x,y)から以下の一次方程式のパラメータa、bを最小二乗法により求める。
y=ax+b
なお、最小二乗法は、以下の式による。
Figure 2011108089
例えば、直前の3点のデータを用いて予測する場合、サンプリング間隔を等間隔と仮定すれば、以下の式により予測値y’を求めることができる。
Figure 2011108089
予想値y’を四捨五入などにより整数化し、その後実際に入力したデータyとの予測誤差E=y’−yを算出する。
これにより、積算電力量計による電力量などのセンサデータのようにほぼ一定の割合で増加(あるいは減少)するデータの場合に予測誤差Eが0または絶対値の小さい値に集約され、圧縮率を高めることができる。
予測誤差符号化部112は、予測誤差算出部111により予測誤差Eが算出される度に、算出された予測誤差Eを可変長符号化し、予測誤差符号Ceを出力する。
可変長符号化の方法としてはガンマ符号あるいはデルタ符号を用いることができる。
ガンマ符号やデルタ符号は絶対値の小さい値を少ない符号長にて符号化する方式であり、既に述べたとおり、本実施の形態では予測誤差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)
対象データのビット数が5ビット以下であれば、ガンマ符号の方が短い符号を生成できるため、予測誤差Eの分布が0付近に集中するようなデータではガンマ符号により高い圧縮率を実現できる。
予測誤差Eの分布が0から外れる頻度が多くなる場合、例えば変動が大きいセンサデータなどでは、デルタ符号を用いることでより高い圧縮率を実現できる。
以下の説明ではガンマ符号を例に説明するが、デルタ符号でも同様である。
ガンマ符号あるいはデルタ符号は正の整数の符号化を行う方式であるので、0や負の値を含む予測誤差Eを符号化するために、予測誤差符号化部112は、ガンマ符号化あるいはデルタ符号化の前に次に示す変換を行う。
Figure 2011108089
つまり、予測誤差E=0のときは、値を1にし、予測誤差E>0のときは、左シフトを行い、予測誤差E<0のときは、左シフトを行い、LSB(Least Significant Bit)を1にする。
この変換によれば、絶対値が小さい値を絶対値が小さい値として変換できるため、ガンマ符号化あるいはデルタ符号化により高い圧縮率を期待できる。
変換式M1においては、予測誤差Eが処理単位(例えば32ビット)を符号付き整数と考えたときの最小値(10進数表示で−2147483648、−231)の場合に、左シフトにより桁あふれが発生する。
そこで、予測誤差符号化部112は、予測誤差Eが処理単位の最小値Emin(処理単位が32ビットの場合の10進数表示での−2147483648、−231)である場合には、M1による変換を行わずにEminに対応する固定符号を出力する。
このようにすることで、桁あふれを考慮して処理単位を拡大する必要がなくなり、処理を高速化できる。
例えば、Emin=0x80000000(16進)であり、M1(Emin)=0x100000001(16進)となって33ビットとなる。
そこでE=Eminである場合にはそれに対応する符号を直接出力する。
例えば、ガンマ符号であれば、以下に示す65ビットの符号を変換式M1による変換を行わずに出力する。
Figure 2011108089
あるいは、M1(E)が33ビットとなるケースはE=Eminの1ケースのみであるから、ガンマ符号においてEのビット数が33であることだけ分かれば復号可能である。
従って、以下のような33ビットに符号化することで圧縮率を更に高めることができる。
Figure 2011108089
データの特性として、予測誤差Eが0以上の整数となる場合が多い場合には、以下の変換式を用いることもできる。
Figure 2011108089
例えば、積算電力量計の電力量データの場合は通常は増加のみであり、有効桁数を超えたときに0に戻るため、負の予測誤差が出現する頻度は極端に低いと考えられる。
従って、変換式M1よりも正の値のビット数が少ない変換式M2によって、より高い圧縮率を期待できる。
変換式M2においても、M1と同様に桁あふれが発生するため、M1の場合と同様な固定符号を使用することで、桁あふれを考慮して処理単位を拡大する必要がなくなり、処理を高速化できる。
ランレングス計数部121は、予測誤差Eが同じ値を続ける回数をカウントする。
ランレングス計数部121は、前回の予測誤差Epを保持し、現在処理中の予測誤差EcがEpに等しい場合には、変数ランレングスRに1を加算する。
EcがEpと異なる場合には、ランレングス計数部121は、ランレングスRの値をランレングス符号化部122に出力し、ランレングス符号化部122がランレングスを符号化する。
また、ランレングス計数部121は、ランレングスRを1にリセットする。
EcがEpに等しい場合でも、ランレングスR+1が指定の最大値を超える場合には、ランレングス計数部121は、ランレングスRをランレングス符号化部122に出力し、ランレングスRを1にリセットするようにしてもよい。
ランレングス符号化部122は、ランレングス計数部121にて計数されたランレングスRの値を可変長符号化し、ランレングス符号Crを出力する。
可変長符号化の方法としてはガンマ符号あるいはデルタ符号を用いることができる。
電力量や温度などのセンサデータに関しては、ランレングスの出現頻度分布は、1が最大(1が最頻)で値が大きくなるほど頻度が小さくなる傾向があるため、既に述べたように、ガンマ符号やデルタ符号で高い圧縮効果が期待できる。
また、ガンマ符号やデルタ符号により計算量を削減して高速な処理が可能となるのも既に述べた通りである。
ランレングスの場合には必ず1以上の整数となるため、予測誤差の符号化に関して述べたような特別の変換は不要であり、直接符号化する。
符号結合部131は、ランレングス符号化部122によりランレングス符号が生成される度に、予測誤差符号化部112による予測誤差符号Ceとランレングス符号化部122によるランレングス符号Crを繋げて1つの結合符号Cerとする。
順序は予測誤差符号化部112による予測誤差符号Ceが先になるようにする。
すなわち、結合符号Cerは、以下のようになる。
Cer=Ce+Cr (+は結合の意味)
予測誤差判定部141は、予測誤差Eの値により出力符号切換え部142を制御し、符号CeとCerのいずれを出力符号とするかを選択する。
予測誤差判定部141は、符号選択部の例である。
比較的変動やノイズが少ないセンサデータでは、予測誤差E=0が連続する頻度が大きいため、E=0のときに結合符号Cerを出力符号としそれ以外は予測誤差符号Ceを出力符号とすることにより、圧縮率を高めることが可能である。
あるいは、一定の割合で緩やかに増減するセンサデータにおいて、前述の差分法により予測誤差Eを算出した場合には、+1や−1が連続する頻度が大きくなる。
したがって、E=1または−1の場合に結合符号Cerを出力符号とし、それ以外は予測誤差符号Ceを出力符号とすることにより、圧縮率を高めることが可能である。
更に傾きの大きな増減を行うセンサデータにおいては、予測誤差Eがより大きい値(例えば、予測誤差Eが5)のときでも予測誤差符号Cerを出力符号とすることで圧縮率を高めることができる場合がある。
一般には予測誤差Eの絶対値が大きいほどそれが連続する確率は下がるため、予測誤差Eの絶対値が指定の閾値以下であれば結合符号Cerを出力し、閾値を超える場合には予測誤差符号Ceを出力するように判定を行うのが合理的である。
一方、全ての予測誤差に対してランレングスが小さい場合には全くランレングス符号化を行わないほうが圧縮率を高めることができる場合もある。
そのような場合には、予測誤差Eの値によらず予測誤差符号Ceを出力符号として選択するという動作が有効となる。
以上のようにして、予測誤差Eの値に応じて予測誤差符号Ceを出力符号とするか予測誤差符号とランレングス符号を結合した符号Cerを出力符号とするかを切換えることにより、従来あったように一定値が連続する部分のみランレングス符号化を行うのではなく、電力量や温度などのセンサデータにて一定の割合で増減する場合などにもランレングス符号を適応的に付加可能とすることで圧縮率を高めることができる。
また、従来例ではランレングスモードに切換えるために複数の過去のデータの履歴を符号化時および復号時に常に照合する必要があり計算量が多くなるという課題があったが、本実施の形態によれば符号化時、復号時共に予測誤差の判定のみ行うことでランレングス符号の有無を判断できるため、計算量を削減して高速化を実現できる。
符号出力部151は、出力符号切換え部142にて選択された可変ビット数を持つ符号を処理単位(例えば32ビット)に詰め込み、出力データとして出力する。
これまでに述べた符号化方法によれば、符号を1ビット単位で順に見ていくことにより復号可能であるため、詰め込みは処理単位のレジスタに対してMSB(Most Significant Bit)からLSBに向かってビット単位で符号を隙間なく詰めていくのみであり、符号の境目やランレングス符号の有無を示すビットなどは不要である。
これらの処理はシフト処理とOR処理により実現可能である。
符号は複数の処理単位にまたがってもよく、その場合には一つ前の処理単位のLSBにその次の処理単位のMSBが繋がるようにすればよい。
最終的には処理単位に詰め込まれた出力データ、出力データの処理単位の数、および出力データに含まれる符号数が出力される。
符号出力部151は、予測誤差符号Ceを出力とする場合には、1入力データの入力毎に1符号を出力することも可能であるが、より好ましい例としては、ランレングスRの符号化時に出力するように構成する。
すなわち、ランレングス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、ハフマン符号、シャノン符号や、その他の固定テーブルを用いた符号化方法などであってもよい。
次に、データ圧縮装置100の動作について説明する。
図2は、本実施の形態に係るデータ圧縮装置100の圧縮処理の流れの一例を示すフローチャートである。
圧縮工程S101において、予測誤差算出部111が、入力データと過去の履歴データを用いて予測誤差Ecを算出する。
次に、圧縮工程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が生成され、その後、圧縮工程が終了する。
一方、圧縮工程S103において、予測誤差Ecが前回の予測誤差Epと一致しない場合には、圧縮工程S105にて、ランレングス計数部121がランレングスRをランレングス符号化部122に出力し、ランレングス符号化部122が、ガンマ符号またはデルタ符号によりランレングス符号Crを生成する。
また、圧縮工程S106において、ランレングス計数部121は、ランレングスを1にリセットする。
次に、圧縮工程S107において、符号結合部131が、予測誤差符号化部112による予測誤差符号Ceとランレングス符号化部122によるランレングス符号Crを結合して、結合符号Cerを生成する。
ランレングス符号Crと結合する予測誤差符号は予測誤差符号化部112のバッファに滞留していた1つ前の入力データについての予測誤差符号Ceである。
そして、圧縮工程S108にて、入力データが終了したかどうかの判定が行われ、入力データが終了していない場合には、圧縮工程S101に戻り、入力データが終了している場合は、圧縮工程が終了する。
なお、圧縮工程S102と、圧縮工程S103及びS104又は圧縮工程S103、S105及びS106は並行して実施することができる。
図3は、本実施の形態に係るデータ圧縮装置100の符号出力の流れの一例を示すフローチャートである。
符号出力工程S201において、予測誤差判定部141が、図2の圧縮工程S101で予測誤差算出部111により算出された予測誤差Ecを入力する。
次に、符号出力工程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に示す具体的なデータ値を用いて、本実施の形態に係るデータ圧縮装置100の動作例を説明する。
図8の例では、予測値を1つ前の入力データの値としている。
図8では、n回目に入力された入力データのデータ値が8であるとする。
また、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回目では、データ値が10の入力データを入力する。
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回目では、データ値が10の入力データを入力する。
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回目では、データ値が10の入力データを入力する。
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回目では、データ値が11の入力データを入力する。
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回目では、データ値が13の入力データを入力する。
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を出力符号とすることにより、圧縮率を高めることが可能である。
なお、上記の説明では、全ての予測誤差に対してランレングス計数部121でランレングスを計数しているが、特定の値の予測誤差に対してのみランレングスを計数するようにしてもよい。
つまり、予測誤差判定部141が、予測誤差算出部111により算出された予測誤差の値が特定の値(図3のS202で判断対象としている特定の値)である場合に、ランレングス計数部121に当該予測誤差のランレングスの計数の開始を指示する。
そして、ランレングス計数部121は、予測誤差算出部111より指示のあった予測誤差のランレングスの計数を開始する。
このようにすることで、ランレングス計数部121及びランレングス符号化部122の処理を効率化することができる。
図10は、本実施の形態に係るデータ伸張装置300の機能ブロックの構成の一例を示す図である。
データ伸張装置300は、データ圧縮装置100により圧縮された圧縮後データを順次入力し、伸張を行って、圧縮前の状態に復元したデータを出力する。データ圧縮装置100により圧縮された圧縮後データは、データ圧縮装置100の出力データ(符号化データ)、出力データの処理単位の数、および出力データに含まれる符号数を含む。さらに、データ圧縮装置100の予測誤差判定部141にて使用された特定の値をエンコードしたデータを含んでもよい。その場合、圧縮後データは、出力データの処理単位の数、出力データに含まれる符号数、特定の値をエンコードしたデータを含むヘッダを有し、そのヘッダの直後から圧縮による出力データを有する構造とする。一方、特定の値については、圧縮後データに含めず、データ圧縮装置100とデータ伸張装置300で共通の値を固定的に持つか、共通の値を予め設定するとしても良い。
データ伸張装置300は、予測誤差復号部311、データ復号部312、ランレングス復号部321、データ複製部331、復号予測誤差判定部341、出力データ切換え部342、データ入力部351を含む。
データ入力部351は、入力データを一定の処理単位(例えば32ビットなど)ごとに入力し、処理単位内に含まれる符号を取り出す。符号が処理単位より小さい場合には一つの処理単位から複数の符号を順に取り出し、また、符号が処理単位より大きい場合や符号が複数の処理単位にまたがる場合には、順次入力データを入力して符号を取り出す。すなわち、データ圧縮装置100における符号出力部151の逆の操作を行う。符号のビット長はガンマ符号、デルタ符号、その他の可変長符号化方法により、符号ビットをMSBから順に見ていくことで一意に定まるため、このような符号の取り出しを行うことができる。
出力データに含まれる符号数をヘッダから予め入力し、取り出された符号の数を計数し、計数された符号数が出力データに含まれる符号数に一致したときに、それが最終データであることを知ることができ、データの入力を終了することができる。
また、出力データに含まれる処理単位の数をヘッダから予め入力し、符号化データの入力処理単位数を計数し、データの入力終了時にこれらの処理単位数が一致することを確認することで、データの整合性を確認することができる。
予測誤差復号部311は、データ入力部351により取り出された符号から予測誤差Eを復号しする。復号には、データ圧縮装置100の予測誤差符号化部112に対応する復号方法を用いる。すなわち、予測誤差符号化部112がガンマ符号を用いるのであれば、予測誤差復号部311もガンマ符号を用いる。さらに、正の整数へのマッピングの逆変換を行うことにより、予測誤差Eを復号できる。
データ復号部312は、過去に復号されたデータの履歴を用いて現在のデータを予測した予測値と、予測誤差Eの差分を算出することにより元のデータを復号する。予測値の算出方法は予測誤差算出部111と同一とする。
復号予測誤差判定部341は、予測誤差Eの値により出力データ切換え部342を制御し、予測誤差符号Ceと結合符号Cerのいずれを復号したデータを対応する出力符号とするかを選択する。復号予測誤差判定部341は、予めヘッダから特定の値をエンコードしたものを入力し特定の値をデコードしておくか、固定の特定の値、あるいは設定された特定の値と予測誤差Eとを比較し、予測誤差Eが特定の値ではない場合には入力された符号はCeであると判断して、データ復号部312により復号されたデータを出力データとして出力データ切換え部342から出力させる。
予測誤差Eが特定の値である場合には、入力された符号は結合符号Cerに含まれる予測誤差符号であると判断する。その場合、さらにランレングス復号部321がデータ入力部351により取り出された次の符号を入力し、ランレングスを復号する。復号には、データ圧縮装置100のランレングス符号化部122に対応する復号方法を用いる。すなわち、ランレングス符号化部122がガンマ符号を用いるのであれば、ランレングス復号部321もガンマ符号を用いる。
予測誤差Eが特定の値である場合には、さらにデータ複製部331が、データ復号部312により復号されたデータをランレングス分繰返し出力することによりデータを複製する。そのとき、復号予測誤差判定部341は、出力データ切換え部342にデータ複製部331の出力を出力データとして出力させる。
次に、データ伸張装置300の動作について説明する。
図11は、本実施の形態に係るデータ伸張装置300の伸張処理の流れの一例を示すフローチャートである。
伸張工程S601において、データ入力部351が、入力データを一定の処理単位ごとに入力し、処理単位内に含まれる符号を取り出す。データ入力部では入力した処理単位数と取り出された符号数を計数する。
次に、伸張工程S602にて予測誤差復号部311が、取り出された符号をガンマ符号またはデルタ符号またはその他の符号により復号し、予測誤差Eを生成する。
次に、伸張工程S603にてデータ復号部312が、予測誤差Eと過去に復号された履歴データを用いて現在のデータを復号する。
そして、伸張工程S604にて、復号予測誤差判定部341が、予測誤差Eが特定の値であるかどうかを判定する。
伸張工程S604において、予測誤差Eが特定の値に一致しない場合には、伸張工程S605にて復号予測誤差判定部341は出力データ切換え部342に復号された現在のデータを出力するよう選択させる。
一方、伸張工程S604において、次に、予測誤差Eが特定の値に一致した場合には、伸張工程S606にて、データ入力部351が次の符号を取り出す。データ入力部では入力した処理単位数と取り出された符号数を計数する。
次に、伸張工程S607にて、ランレングス復号部321が取り出された符号をガンマ符号またはデルタ符号またはその他の符号により復号し、ランレングスRを生成する。
次に、伸張工程S608にて、データ複製部331が、データ復号部312により復号された現在のデータをランレングスR回分繰返し出力する。このとき、復号予測誤差判定部341は出力データ切換え部342にデータ複製部331の出力データを出力するよう選択させる。
そして、伸張工程S609において、データ入力部351が計数した符号数が圧縮後データのヘッダから入力した符号数に等しい場合にはデータの伸張を終了し、そうでない場合には伸張工程S601に戻る。
以上述べたように、復号された予測誤差の値によりその次の符号が次の予測誤差符号であるか、結合符号のランレングス符号であるかを判定することにより、本実施の形態による圧縮後データの伸張が可能である。
以上、本実施の形態では、
入力データ列を圧縮するデータ圧縮装置であって、
少なくとも1つ以上の入力データの履歴を用いて算出した予測値と、着目するデータとの差分である予測誤差を算出する手段と、
前記予測誤差を可変長符号により符号化して予測誤差符号を生成する手段と、
前記予測誤差のランレングスをカウントする手段と、
前記ランレングスを可変長符号により符号化してランレングス符号を生成する手段と、
前記予測誤差符号および前記ランレングス符号から出力符号を生成する手段とを含み、
前記出力符号を生成する手段は、前記予測誤差の値に応じて、予測誤差符号を出力符号とするか、予測誤差符号とランレングス符号を結合して出力符号とするかを選択するデータ圧縮装置を説明した。
また、本実施の形態では、
前記出力符号を生成する手段は、
前記予測誤差の絶対値が閾値より大きい場合には予測誤差符号を出力符号とし、
前記予測誤差の絶対値が閾値以下である場合には予測誤差符号とランレングス符号を結合して出力符号とすることを説明した。
また、本実施の形態では、
前記予測誤差を可変長符号により符号化して予測誤差符号を生成する手段は、
前記予測誤差を最も近い固定ビット数の整数に変換する手段と、
変換された整数値が前記固定ビット数で表される最小値である場合には、対応する固定ビット列を出力符号として符号化する手段と、
変換された整数値が前記最小値でない場合には、正の整数にマッピングし、可変長符号化する手段を含むことを説明した。
また、本実施の形態では、
前記可変長符号化する手段は、
アルファ符号またはガンマ符号またはデルタ符号またはオメガ符号またはゴロム符号により符号化することを説明した。
また、本実施の形態では、
前記ランレングスを可変長符号により符号化してランレングス符号を生成する手段は、
前記ランレングスをアルファ符号またはガンマ符号またはデルタ符号またはオメガ符号またはゴロム符号により符号化することを説明した。
また、本実施の形態では、
前記予測値は、着目するデータの直前のデータであることを説明した。
また、本実施の形態では、
前記予測値は、直前の少なくとも2つ以上のデータを用いた固定パラメータの線形演算であることを説明した。
実施の形態2.
図4は、本実施の形態に係るデータ圧縮装置200の機能ブロックの構成の一例を示す図である。
データ圧縮装置200は、圧縮前処理部101、圧縮処理部102、制御部103に大別される。
圧縮処理部102は、実施の形態1で説明したデータ圧縮装置100と実質的に同じ構成であり、予測誤差判定部141が符号選択基準143を記憶している点が実施の形態1と異なる。
圧縮前処理部101は、先行予測誤差算出部211、先行ランレングス計数部221、符号長算出部171、172、173、符号長算出基準181、182、183、基準選択部191を有する。
圧縮前処理部101の内部構成の詳細は後述する。
本実施の形態に係るデータ圧縮装置200は、入力データを2パス処理することにより、符号選択のための基準の最適化を行う。
制御部103は、圧縮処理のパス管理を行い、1パス目から入力データを圧縮前処理部101に入力させ、圧縮前処理部101に複数の基準に基づく圧縮後の符号長を算出させ、もっとも符号長が短い基準を選択させる。
圧縮前処理部101は、複数の符号選択基準のうち圧縮後の符号長が最も短い符号選択基準を選択するため、時間の経過により入力データの特性が変化する場合は、入力データの特性の変化に伴って、選択する符号選択基準が変化する場合がある。
なお、選択された基準に基づく圧縮後の符号長が目標とする圧縮ブロックサイズに満たない場合には、制御部103は、追加の入力データを圧縮前処理部101に入力して圧縮後の符号長を更新させる。
圧縮後の符号長が目標とする圧縮ブロックサイズを超えた場合には、制御部103は、2パス目として最後の入力データ追加の前までの入力データを圧縮処理部102に入力して圧縮処理を実行させる。
圧縮前処理部101について詳細に説明する。
圧縮前処理部101の先行予測誤差算出部211および先行ランレングス計数部221は、機能としては、実施の形態1で説明した予測誤差算出部111及びランレングス計数部121と同じであるが、以下の点が異なる。
本実施の形態では、先行予測誤差算出部211は、圧縮処理部102の予測誤差算出部111のデータ入力に先立ち、予測誤差算出部111が入力する予定のデータ(入力予定データともいう)を入力し、予測誤差算出部111と同じ方式によりデータ値を予測し、入力予定データごとに予測誤差を算出する。
先行ランレングス計数部221は、先行予測誤差算出部211により算出された予測誤差のランレングスを計数する。
符号長算出部171、172、173は予測誤差EおよびランレングスRを可変長符号化したときの符号長を算出する。
図4の例では符号長算出部を3つ有する場合の例を示したが、符号長算出部の数は任意でよい。
符号長算出部171、172、173は、例えばガンマ符号化では、予測誤差Eを変換式M1またはM2で変換後に2進数で表したときのビット数Neに対して、符号長Geを以下のように算出することができる。
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 …予測誤差符号のみを出力符号とするとき
ガンマ符号のような固定的な符号化方法を用いることにより、算術符号化やハフマン符号化などのエントロピー符号にて必要となるシンボル出現頻度テーブルの作成が不要となり、計算量を削減して高速な処理が可能となるのは実施の形態1にて説明した通りである。
更には、前述の通り、圧縮ブロックサイズを調整するために、入力データの追加処理により少しずつ入力データを増やして圧縮後の符号長を算出する場合、シンボル出現頻度テーブルを必要とする符号化方法では、テーブルの内容が変化するために、それまでに計算済みの符号長についても再計算が必要となるが、本実施の形態では固定的に符号長を算出できるため、追加したデータの符号長だけを計算すればよく、計算量を削減して高速化が可能である。
但し、本実施の形態で用いる符号化方式は、はガンマ符号あるいはデルタ符号でなくとも、その他の整数の符号化方式であるアルファ符号、オメガ符号、ゴロム符号、ライス符号であってもよい。
また、算術符号、Range Coder、ハフマン符号、シャノン符号や、その他の固定テーブルを用いた符号化方法などであってもよい。
符号長算出部171、172、173は、符号長算出基準181、182、183に基づいて符号長の算出を行う。
例えば、符号長算出基準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の各々には、結合符号の符号長を算出する結合符号長算出値として所定の値が設定されている。
そして、符号長算出部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は、それぞれの符号長算出部で算出した合計符号長を比較し、最も符号長が小さくなる符号長算出基準を選択して、符号長算出基準を示す基準コードと合計符号長を出力する。
つまり、基準選択部191は、最小の合計符号長という条件を満たす符号長算出部の結合符号長算出値(E=0、|E|≦1等)を符号長算出基準として選定し、符号長算出基準として選定した値の予測誤差に対する出力符号として結合符号を選択するよう予測誤差判定部141(符号選択部)に指示する。
基準選択部191は、選定指示部の例である。
そして、基準選択部191により選定された符号長算出基準を示す基準コードは制御部103により2パス目の入力データと共に圧縮処理部102に入力され、予測誤差判定部141で基準コードがデコードされ、予測誤差判定部141が選択された符号長算出基準を符号選択基準143として保持する。
そして、予測誤差判定部141は、符号選択基準143に基づき、対象となる予測誤差に対しては結合符号を選択してデータ圧縮を実行する。
基準コードを前述の出力データの処理単位の数、および出力データに含まれる符号数などと共に圧縮ブロックのヘッダとして保存することにより、伸張時に同じ基準を用いて復号することが可能である。
以上述べたように、本実施の形態によれば、予測誤差に応じて予測誤差符号とランレングス符号を適応的に組合せる方法において、組合せの際の基準を入力データに応じて圧縮ブロック単位で最適化することができ、圧縮効率をさらに上げることができる。
次に、データ圧縮装置200の動作について説明する。
図5は、本実施の形態に係るデータ圧縮装置200の圧縮処理の流れの一例を示すフローチャートである。
圧縮工程S301において、制御部103が、一定のサイズの入力予定データについて圧縮パス1を実行し、圧縮工程S302にて合計符号長がブロックサイズ未満である場合、入力予定データを追加してS301の圧縮パス1を再実行する。
合計符号長がブロックサイズ以上である場合には、制御部103は、圧縮工程S303にて合計符号長がブロックサイズ以下となる入力データサイズを決定し、圧縮工程S304にて圧縮パス2を実行する。
図6は、本実施の形態に係るデータ圧縮装置200の圧縮パス1処理の流れの一例を示すフローチャートである。
圧縮パス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が、符号長算出基準ごとに算出した合計符号長を比較し、合計符号長が最小である符号長算出基準を選択して基準コードと合計符号長を出力する。
図7は、本実施の形態に係るデータ圧縮装置200の符号長加算処理の流れの一例を示すフローチャートである。
符号長加算工程S501において、各符号長算出部は、予測誤差の符号長を算出し、符号長加算工程S502において、ランレングスの符号長を算出し、符号長加算工程S503において、それぞれの符号長算出基準ごとに符号長を算出して、合計符号長にそれぞれ加算する。
本実施の形態に係るデータ圧縮装置200の圧縮パス2処理については、図3のS202において予測誤差が特定値かどうかの判定を圧縮パス1処理にて選択された基準に基づいて実行する以外は、図2、図3に示した通りである。
このように、本実施の形態では、入力データの特性に応じて、圧縮ブロック単位で最適な符号長算出基準を選択することができ、圧縮効率をさらに上げることができる。
以上、本実施の形態では、
データ圧縮装置は、さらに、
予測誤差符号の符号長を算出する手段と、
ランレングス符号の符号長を算出する手段と、
予測誤差の値に応じた複数の基準に基づき、予測誤差符号の符号長または、予測誤差符号とランレングス符号を結合した符号の符号長から選択して、複数の基準にそれぞれ対応した複数の出力符号列の符号長を算出する手段と、
入力データブロックに対して複数の出力符号列の符号長を算出して、符号長が最小となる基準を該入力データブロックの基準として選択する手段と、
入力データブロックに入力データが追加されたときに、追加された入力データの複数の符号長を算出して追加前に算出された符号長に加算し、符号長が最小となる基準を再選択する手段と、
選択された基準にて該入力データブロックの出力符号列を生成する手段、
を含むことを説明した。
また、本実施の形態では、
前記複数の基準は、
前記予測誤差によらず予測誤差符号を出力符号とする基準、
前記予測誤差が0の場合に予測誤差符号とランレングス符号を結合して出力符号とし、それ以外は予測誤差符号を出力符号とする基準、
前記予測誤差の絶対値が1以下の場合に予測誤差符号とランレングス符号を結合して出力符号とし、それ以外は予測誤差符号を出力符号とする基準、
のいずれか1つ以上を含むことを説明した。
最後に、実施の形態1及び2に示したデータ圧縮装置100、200のハードウェア構成例について説明する。
図9は、実施の形態1及び2に示すデータ圧縮装置100、200のハードウェア資源の一例を示す図である。
なお、図9の構成は、あくまでもデータ圧縮装置100、200のハードウェア構成の一例を示すものであり、データ圧縮装置100、200のハードウェア構成は図9に記載の構成に限らず、他の構成であってもよい。
図9において、データ圧縮装置100、200は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
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などは、出力装置の一例である。
通信ボード915は、例えば、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
データ圧縮装置100、200の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1及び2の説明において「〜部」、「〜手段」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1及び2の説明において、「〜の判断」、「〜の判定」、「〜の符号化」、「〜の生成」、「〜の計数」、「〜の比較」、「〜の評価」、「〜の設定」、「〜の選択」、「〜の選定」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1及び2の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1及び2で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「データ圧縮方法」を実現することができる。
また、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1及び2の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1及び2に示すデータ圧縮装置100、200は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
100 データ圧縮装置、101 圧縮前処理部、102 圧縮処理部、103 制御部、111 予測誤差算出部、112 予測誤差符号化部、121 ランレングス計数部、122 ランレングス符号化部、131 符号結合部、141 予測誤差判定部、142 出力符号切換え部、143 符号選択基準、151 符号出力部、171 符号長算出部、172 符号長算出部、173 符号長算出部、181 符号長算出基準、182 符号長算出基準、183 符号長算出基準、191 基準選択部、200 データ圧縮装置、211 先行予測誤差算出部、221 先行ランレングス計数部、300 データ伸張装置、311 予測誤差復号部、312 データ復号部、321 ランレングス復号部、331 データ複製部、341 復号予測誤差判定部、342 出力データ切換え部、351 データ入力部。

Claims (15)

  1. データを順次入力するデータ圧縮装置であって、
    データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出する予測誤差算出部と、
    前記予測誤差算出部により予測誤差が算出される度に、算出された予測誤差の値を符号化して予測誤差符号を生成する予測誤差符号化部と、
    前記予測誤差算出部により算出された予測誤差のランレングスを計数するランレングス計数部と、
    予測誤差の値が変化した際に、前記ランレングス計数部により計数されたランレングスを符号化してランレングス符号を生成するランレングス符号化部と、
    前記ランレングス符号化部によりランレングス符号が生成される度に、生成されたランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成する符号結合部と、
    前記予測誤差算出部により算出された予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択する符号選択部とを有することを特徴とするデータ圧縮装置。
  2. 前記符号選択部は、
    前記予測誤差算出部により算出された予測誤差の値が特定の値である場合に当該予測誤差に対する結合符号を選択し、前記予測誤差算出部により算出された予測誤差の値が他の値である場合に当該予測誤差に対する予測誤差符号を選択することを特徴とする請求項1に記載のデータ圧縮装置。
  3. 前記符号選択部は、
    前記予測誤差算出部により算出された予測誤差の値が特定の値である場合に、前記ランレングス計数部に当該予測誤差のランレングスの計数の開始を指示し、
    前記ランレングス計数部は、
    前記符号選択部により指示のあった予測誤差のランレングスの計数を開始することを特徴とする請求項2に記載のデータ圧縮装置。
  4. 前記データ圧縮装置は、更に、
    前記予測誤差算出部のデータ入力に先立ち、前記予測誤差算出部が入力することになる複数の入力予定データに対して特定の値を選定し、選定した値の予測誤差に対する出力符号として結合符号を選択するよう前記符号選択部に指示する選定指示部を有し、
    前記符号選択部は、
    前記予測誤差算出部により算出された予測誤差の値が前記選定指示部から指示された値である場合に出力符号として当該予測誤差に対する結合符号を選択し、前記予測誤差算出部により算出された予測誤差の値が他の値である場合に出力符号として当該予測誤差に対する予測誤差符号を選択することを特徴とする請求項1〜3のいずれかに記載のデータ圧縮装置。
  5. 前記データ圧縮装置は、更に、
    前記予測誤差算出部のデータ入力に先立ち、入力予定データごとに前記予測誤差算出部の予測方式と同じ方式によりデータ値を予測し、入力予定データごとに予測誤差を算出する先行予測誤差算出部と、
    前記先行予測誤差算出部により算出された予測誤差のランレングスを計数する先行ランレングス計数部と、
    結合符号の符号長を算出する結合符号長算出値として所定の値が設定されており、前記先行予測誤差算出部により算出された予測誤差の値が前記結合符号長算出値と一致する場合に当該予測誤差の値と前記先行ランレングス計数部によるランレングスとに基づき結合符号の符号長を算出し、前記先行予測誤差算出部により算出された予測誤差の値が前記結合符号長算出値に一致しない場合に当該予測誤差の値に基づき予測誤差符号の符号長を算出して、前記複数の入力予定データでの合計符号長を算出する符号長算出部とを有し、
    前記選定指示部は、
    前記符号長算出部により算出された合計符号長が所定の条件を満たす場合に、前記結合符号長算出値を前記符号選択部において結合符号を選択させる値として選定することを特徴とする請求項4に記載のデータ圧縮装置。
  6. 前記データ圧縮装置は、
    結合符号長算出値としてそれぞれに異なる値が設定されており、それぞれの結合符号長算出値に基づいて予測誤差ごとに結合符号の符号長及び予測誤差符号の符号長のいずれかを算出して、前記複数の入力予定データでの合計符号長を算出する複数の符号長算出部を有し、
    前記選定指示部は、
    最小の合計符号長の符号長算出部の結合符号長算出値を前記符号選択部において結合符号を選択させる値として選定することを特徴とする請求項5に記載のデータ圧縮装置。
  7. 前記データ圧縮装置は、更に、
    結合符号長算出値として値0が設定されており、前記先行予測誤差算出部により算出された予測誤差の値が0である場合に結合符号の符号長を算出し、前記先行予測誤差算出部により算出された予測誤差の値が0でない場合に予測誤差符号の符号長を算出する符号長算出部と、
    結合符号長算出値として絶対値1以下が設定されており、前記先行予測誤差算出部により算出された予測誤差の絶対値が1以下である場合に結合符号の符号長を算出し、前記先行予測誤差算出部により算出された予測誤差の絶対値が1以下でない場合に予測誤差符号の符号長を算出する符号長算出部との少なくともいずれかを有することを特徴とする請求項6に記載のデータ圧縮装置。
  8. 前記データ圧縮装置は、
    結合符号長算出値が設定されておらず、前記先行予測誤差算出部により算出された予測誤差に対して予測誤差符号の符号長のみを算出して、前記複数の入力予定データでの合計符号長を算出する特例符号長算出部を有し、
    前記選定指示部は、
    前記符号長算出部により算出された合計符号長が前記特例符号長算出部により算出された合計符号長よりも小さい場合に、前記符号長算出部の結合符号長算出値を前記符号選択部において結合符号を選択させる値として選定し、
    前記符号長算出部により算出された合計符号長が前記特例符号長算出部により算出された合計符号長以上である場合に、前記符号選択部に対して予測誤差の値にかかわらず出力符号として予測誤差符号のみを選択するよう指示することを特徴とする請求項5に記載のデータ圧縮装置。
  9. 前記予測誤差符号化部は、
    予測誤差の値を可変長符号により符号化して予測誤差符号を生成し、
    前記ランレングス符号化部は、
    ランレングスを可変長符号により符号化してランレングス符号を生成することを特徴とする請求項1に記載のデータ圧縮装置。
  10. 前記予測誤差符号化部は、
    前記予測誤差算出部により予測誤差が算出される度に、算出された予測誤差の値が所定の固定ビット数で表される整数値のうちの最小値に該当するか否かを判断し、前記予測誤差の値が前記最小値に該当する場合に前記予測誤差の値を前記固定ビット数により符号化して予測誤差符号を生成し、前記予測誤差の値が前記最小値に該当しない場合に前記予測誤差の値を正の整数にマッピングし、マッピングした正の整数を可変長符号により符号化して予測誤差符号を生成することを特徴とする請求項9に記載のデータ圧縮装置。
  11. 前記予測誤差符号化部は、
    アルファ符号、ガンマ符号、デルタ符号、オメガ符号及びゴロム符号のいずれかにより予測誤差符号を生成し、
    前記ランレングス符号化部は、
    アルファ符号、ガンマ符号、デルタ符号、オメガ符号及びゴロム符号のいずれかによりランレングス符号を生成することを特徴とする請求項1に記載のデータ圧縮装置。
  12. 前記予測誤差符号化部は、
    次に入力するデータの1つ前に入力したデータの値を次に入力するデータの予測値とすることを特徴とする請求項1に記載のデータ圧縮装置。
  13. 前記予測誤差符号化部は、
    次に入力するデータに先行して入力している2つ以上のデータを用いた線形演算を行って、次に入力するデータの予測値を算出することを特徴とする請求項1に記載のデータ圧縮装置。
  14. データを順次入力するコンピュータが行うデータ圧縮方法であって、
    前記コンピュータが、データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出し、
    予測誤差を算出する度に、前記コンピュータが、算出した予測誤差の値を符号化して予測誤差符号を生成し、
    前記コンピュータが、算出した予測誤差のランレングスを計数し、
    予測誤差の値が変化した際に、前記コンピュータが、計数したランレングスを符号化してランレングス符号を生成し、
    ランレングス符号を生成する度に、前記コンピュータが、生成したランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成し、
    前記コンピュータが、算出した予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択することを特徴とするデータ圧縮方法。
  15. データを順次入力するコンピュータに、
    データの入力前にデータの値を予測し、データを入力する度に、入力した入力データの値と当該入力データに対して予測した予測値との差を予測誤差として算出する予測誤差算出処理と、
    前記予測誤差算出処理により予測誤差が算出される度に、算出された予測誤差の値を符号化して予測誤差符号を生成する予測誤差符号化処理と、
    前記予測誤差算出処理により算出された予測誤差のランレングスを計数するランレングス計数処理と、
    予測誤差の値が変化した際に、前記ランレングス計数処理により計数されたランレングスを符号化してランレングス符号を生成するランレングス符号化処理と、
    前記ランレングス符号化処理によりランレングス符号が生成される度に、生成されたランレングス符号を当該ランレングス符号に対応する予測誤差の予測誤差符号に結合して結合符号を生成する符号結合処理と、
    前記予測誤差算出処理により算出された予測誤差の値に応じて、当該予測誤差に対する予測誤差符号及び結合符号のいずれかを出力符号として選択する符号選択処理とを実行させることを特徴とするプログラム。
JP2012502928A 2010-03-03 2010-03-03 データ圧縮装置及びデータ圧縮方法及びプログラム Active JP5095033B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 日本電気株式会社 目標符号量算出装置、目標符号量算出方法および目標符号量算出プログラム

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