説明

データ圧縮装置及びデータ復元装置及びデータ処理システム及びコンピュータプログラム及びデータ圧縮方法及びデータ復元方法

【課題】一連の値を効率よく圧縮する。
【解決手段】予測器10(予測部)は、入力データの先行する値から後続する符号化対象値の予測値を決定する。オフセット量決定部20(予測残差算出部・予測残差分類部・基準値算出部)は、予測値の予測誤差の分布に基づいて、予測誤差からの距離が最小となるような予測誤差代表値の集合を決定する。基準値生成部30は、予測値と予測誤差代表値の集合を元に、複数の残差基準値を決定する。最小残差選択部40(基準値選択部・符号化部)は、複数の残差基準値の中から、符号化対象値に最も近いものを選択して、該誤差基準値と符号化対象値の差を残差(基準残差)として出力するとともに、選択した残差基準値のインデックス(選択基準値符号)を圧縮データに出力する。残差符号化部50(符号化部)は、残差を符号語(基準残差符号)に変換して圧縮データに出力する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、データを圧縮するデータ圧縮装置に関する。
【背景技術】
【0002】
近年、センサの小型化や低価格化が進み、散在する装置群や大規模システムに大量のセンサを設置してその状態を連続的に取得・蓄積し、分析や監視に利用したいというニーズが高まっている。多数のセンサから連続的に到来するストリームデータは、そのまま蓄積すると膨大な量になってしまうため、圧縮率の良い圧縮方式が不可欠となる。
高変動な時系列データでは、線形予測を適用しても予測精度に限界があるため、高い圧縮率が得にくい。特許文献1には、複数の線形予測器を使って先行する値から符号化対象値に対する予測値を複数生成し、符号化対象値に最も近いものを選択して、その予測残差を符号化する方式が記載されている。その際、その予測値(予測器)を伸張時に識別するためのインデックスも合わせて符号化する。このように複数の予測値を用意することにより、予測値を1点だけ用いるよりも広範な領域をカバーすることが出来る。このため、インデックス符号を補助情報として保存する必要は生じるものの、予測残差は小さくなると期待出来る。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平11−109996号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
独立の線形予測器が推定した複数の予測値を単純に集めただけでは、n値の集合として誤差の期待値を最小化できない。このため、得られる予測値の集合は冗長なものであり、典型的には予測値が必要以上に集中してしまい、複数点をおいて広範な領域をカバーする効果が得られない。カバーされる領域を広げるため予測点の数を増やすと、予測点を指定するインデックス符号が長くなり、圧縮率が低下する。
この発明は、例えば上記のような課題を解決するためになされたものであり、センサデータ等の数値データ、特に値の変動が激しく予測が困難な時系列データを対象として、圧縮率の高い可逆圧縮方式を得ることを目的とする。
【課題を解決するための手段】
【0005】
この発明にかかるデータ圧縮装置は、データを処理する処理装置と、予測部と、予測残差算出部と、基準値算出部と、基準値選択部と、基準残差算出部と、符号化部とを有し、
上記予測部は、上記処理装置を用いて、一連の値のうち少なくともいずれかの値について、上記一連の値のうち上記値よりも前の値に基づいて上記値を予測することにより、上記値の予測値を算出し、
上記予測残差算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記値と上記予測部が算出した予測値との差を算出することにより、予測残差を算出し、
上記基準値算出部は、上記処理装置を用いて、上記予測残差算出部が算出した予測残差に基づいて、複数の残差基準値を算出し、
上記基準値選択部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記基準値算出部が算出した複数の残差基準値のなかから、上記予測残差算出部が算出した予測残差に最も近い残差基準値を選択し、
上記基準残差算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記予測残差算出部が算出した予測残差と上記基準値選択部が選択した残差基準値との差を算出することにより、基準残差を算出し、
上記符号化部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記値を表わす符号として、上記基準値選択部が上記複数の残差基準値のうちどの残差基準値を選択したかを表わす選択基準値符号と、上記基準残差算出部が算出した基準残差を表わす基準残差符号との組を生成することを特徴とする。
【発明の効果】
【0006】
この発明にかかるデータ圧縮装置によれば、一連の値を効率よく圧縮することができる。
【図面の簡単な説明】
【0007】
【図1】実施の形態1におけるデータ圧縮記憶システム800の全体構成の一例を示すシステム構成図。
【図2】実施の形態1におけるデータ圧縮装置100やデータ復元装置200の外観の一例を示す斜視図。
【図3】実施の形態1におけるデータ圧縮装置100やデータ復元装置200のハードウェア資源の一例を示す図。
【図4】実施の形態1におけるデータ圧縮装置100の機能ブロックの構成の一例を示すブロック構成図。
【図5】実施の形態1におけるデータ圧縮装置100の予測動作及び残差生成動作を説明するための図。
【図6】実施の形態1におけるデータ圧縮処理の流れの一例を示すフローチャート図。
【図7】実際の時系列データと、第一比較例において符号化される残差との関係を表わすグラフ図。
【図8】実際の時系列データと、第二比較例において符号化される残差との関係を表わすグラフ図。
【図9】実際の時系列データと、実施の形態1におけるデータ圧縮装置100において符号化される残差との関係を表わすグラフ図。
【図10】実施の形態1におけるデータ復元装置200の機能ブロックの構成の一例を示すブロック構成図。
【図11】実施の形態1におけるデータ伸長処理の流れの一例を示すフローチャート図。
【図12】実施の形態2におけるデータ圧縮装置100の機能ブロックの構成の一例を示すブロック構成図。
【図13】実施の形態2におけるデータ圧縮処理の流れの一例を示すフローチャート図。
【図14】実施の形態2におけるデータ復元装置200の機能ブロックの構成の一例を示すブロック構成図。
【図15】実施の形態2におけるデータ伸長処理の流れの一例を示すフローチャート図。
【図16】実施の形態3におけるオフセット量決定部20が算出する予測誤差代表値の一例を示す図。
【図17】実施の形態4におけるデータ圧縮装置100の機能ブロックの一例を示すブロック構成図。
【図18】実施の形態4におけるデータ復元装置200の機能ブロックの構成の一例を示すブロック構成図。
【図19】実施の形態4におけるデータ圧縮処理S610の流れの一例を示すフローチャート図。
【図20】実施の形態4におけるデータ復元処理S620の流れの一例を示すフローチャート図。
【発明を実施するための形態】
【0008】
実施の形態1.
実施の形態1について、図1〜図11を用いて説明する。
【0009】
図1は、この実施の形態におけるデータ圧縮記憶システム800の全体構成の一例を示すシステム構成図である。
データ圧縮記憶システム800(データ圧縮システム)は、観測したデータを圧縮して記憶しておき、必要に応じて復元して取り出すことができるシステムである。データ圧縮記憶システム800は、例えば、観測装置810と、データ圧縮装置100と、データ記憶装置820と、データ復元装置200とを有する。
観測装置810は、何らかの観測対象を観測して、観測した結果を表わす観測データを生成する。観測装置810は、観測対象を定期的もしくは不定期に繰り返し観測し、その都度、観測データを生成する。したがって、観測装置810は、時系列的な順序がある一連の観測データを生成する。
観測装置810が生成する観測データは、数値データであり、例えば0以上2のn乗未満の整数値をnビットの2進数で表わす。ここで、nは、2以上の整数であり、例えば、16や32である。
あるいは、観測データは、例えば0以上1未満の2のn乗分の1の倍数をnビットの固定小数点数形式の2進数で表わすものであってもよい。この場合、観測データは、観測した実際の数値を2のn乗倍した整数を表わすものとして取り扱うことができるから、0以上2のn乗未満の整数値をnビットの2進数で表わす場合と同様に扱うことができる。
または、観測データは、例えば所定の範囲内の実数値を、IEEE(電気電子学会)754形式のような浮動小数点数形式で表わすものであってもよい。浮動小数点数形式は、例えば、符号部・仮数部・指数部からなり、それぞれの部分は、整数値として取り扱うことができるから、この場合、観測データは、3つの整数値の組(あるいは、符号部を仮数部の一部として扱って、2つの整数値の組)として扱うことができる。
更に、観測データは、例えば複素数やベクトルなどのように、複数の整数値や実数値の組を表わすものであってもよい。
【0010】
データ圧縮装置100は、観測装置810が生成した一連の観測データを圧縮して、圧縮データを生成する。例えば、1つの観測データがnビットであり、それがk個ある場合、一連の観測データ全体のビット数は、k×nビットである。データ圧縮装置100は、これを圧縮して、k×nビットよりも少ないビット数で同じ情報を表わす圧縮データを生成する。すなわち、データ圧縮装置100が一連の観測データを圧縮する圧縮方式は、可逆圧縮であり、データ圧縮装置100が圧縮した圧縮データから、元の一連の観測データと全く同じデータを復元することができる。
【0011】
データ記憶装置820は、データ圧縮装置100が生成した圧縮データを蓄積して記憶する。データ記憶装置820は、例えば交換可能な記録媒体を用いて、圧縮データを記憶する。データ記憶装置820は、観測装置810が生成した一連の観測データよりもビット数が少ない圧縮データを記憶するので、観測装置810が生成した一連の観測データをそのまま記憶する場合と比べて、記録媒体の記憶容量が小さくて済む。
【0012】
データ復元装置200は、データ記憶装置820が記憶した圧縮データを伸長して、元の観測データと同じデータを復元する。データ復元装置200は、復元したデータを出力する。データ記憶装置820が記憶した圧縮データは、可逆圧縮方式によって圧縮されているので、元の観測データを完全な形で復元することができる。
【0013】
図2は、この実施の形態におけるデータ圧縮装置100やデータ復元装置200の外観の一例を示す斜視図である。
データ圧縮装置100及びデータ復元装置200は、それぞれ、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
【0014】
図3は、この実施の形態におけるデータ圧縮装置100やデータ復元装置200のハードウェア資源の一例を示す図である。
データ圧縮装置100及びデータ復元装置200は、それぞれ、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
【0015】
通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
【0016】
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0017】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0018】
なお、データ圧縮装置100とデータ復元装置200とは、物理的に異なる装置であってもよいし、物理的に一つの装置であってもよい。また、以下に説明するデータ圧縮装置100やデータ復元装置200の各ブロックを、物理的に異なる装置によって実現し、複数の装置が全体としてデータ圧縮装置100やデータ復元装置200として機能する構成であってもよい。
【0019】
図4は、この実施の形態におけるデータ圧縮装置100の機能ブロックの構成の一例を示すブロック構成図である。
データ圧縮装置100は、観測装置810が生成した一連の観測データを、入力データとして入力する。データ圧縮装置100は、圧縮データとして、ヘッダデータと、残差符号列データと、基準値インデックスデータとを生成する。
データ圧縮装置100は、予測器10と、オフセット量決定部20と、基準値生成部30と、最小残差選択部40と、残差符号化部50と、パラメータ記憶部70と、ヘッダ生成部80とを有する。
【0020】
予測器10(予測部)は、入力データの先行する値から後続する符号化対象値の予測値を決定する。
オフセット量決定部20(予測残差算出部・予測残差分類部・基準値算出部)は、予測値の予測誤差の分布に基づいて、予測誤差からの距離が最小となるような予測誤差代表値の集合を決定する。
基準値生成部30は、予測値と予測誤差代表値の集合を元に、複数の残差基準値を決定する。
最小残差選択部40(基準値選択部・符号化部)は、複数の残差基準値の中から、符号化対象値に最も近いものを選択して、該誤差基準値と符号化対象値の差を残差(基準残差)として出力するとともに、選択した残差基準値のインデックス(選択基準値符号)を圧縮データに出力する。
残差符号化部50(符号化部)は、残差を符号語(基準残差符号)に変換して圧縮データに出力する。
パラメータ記憶部70は、オフセット量決定部20や基準値生成部30が用いるパラメータをあらかじめ記憶している。
ヘッダ生成部80(符号化部)は、パラメータ記憶部70が記憶したパラメータなどに基づいて、ヘッダデータを生成する。
【0021】
図5は、この実施の形態におけるデータ圧縮装置100の予測動作及び残差生成動作を説明するための図である。
データ圧縮装置100の特徴は、予測符号化における予測方式(残差生成方式)にある。
【0022】
まず、データ圧縮装置100における予測処理の概要を説明する。
【0023】
黒丸(●)の点は、入力データの時系列を示している。予測処理は、時系列に沿って行う。この図は、入力データの先頭の値xから時刻t−1の値xt−1までの符号化が完了しており、これから時刻tの値xを符号化しようとしている状態を示している。
バツ印(×)で示す点は、予測器10による予測点である。この例において、予測器10は、直前の値xt−1をそのまま次の時刻の予測値pとして用いる。ただし、予測器10は、これに限定するものではなく、他の線形予測器であってもよいし、非線形予測器であってもよい。例えば、予測器10は、次の時刻の予測値pとして、直前のm個の値xt−m,…,xt−1の平均値を算出する構成であってもよい。あるいは、予測器10は、次の時刻の予測値pとして、直前の2つの値xt−2,xt−1の差を直前の値xt−1に加えた値を算出する構成であってもよい。または、予測器10は、直前のk個の値xt−k,…,xt−1を通る[k−1]次曲線を算出し、次の時刻の予測値pとして、算出した[k−1]次曲線上の点の座標を算出する構成であってもよい。あるいは、予測器10は、直前のm個の値xt−m,…,xt−1を近似する[k−1]次曲線を最小自乗法などにより算出し(ただし、m>k)、次の時刻の予測値pとして、算出した[k−1]次曲線上の点の座標を算出する構成であってもよい。また、観測対象の物理モデルがわかっている場合には、予測器10は、例えばカルマンフィルタなどの予測フィルタを用いて、次の時刻の予測値pを算出する構成であってもよい。
【0024】
図中「履歴」で囲った部分における上下の矢印は、時刻t−N,…,t−1における予測誤差et−N,…,et−1を表している。この予測誤差の履歴を図に示すように集めることで、現在符号化対象としている予測値pに対してどの程度の予測誤差eが発生するか(予測誤差の分布)を予測することができる。
【0025】
オフセット量決定部20は、予測誤差の分布に対し、k−means法(ケー平均法)によるクラスタリングを適用することにより、分布を代表するn個の代表値(セントロイド){e ̄|i=1,…,n}を得ることができる。これらの代表値{e ̄|i=1,…,n}は、k−means法のアルゴリズムから、各予測誤差から最近傍点への距離を最小にするようなn個の値のセットになっている。白抜き正方形(□)は、代表値の例を示す。この例において、代表値の数nは、4である。代表値の数nは、他の数であってもよいが、2の累乗(2,4,8,16,…)であれば、符号化の効率が良いので望ましい。
なお、各クラスタの代表値は、各クラスタに属する予測誤差の平均値のほか、例えば、各クラスタに属する予測誤差の中央値、最頻値などであってもよい。
また、クラスタリングの方式は、k−means法が望ましいが、他の非階層型クラスタリングであってもよいし、ウォード法など階層型クラスタリングであってもよい。なお、分割するクラスタ数をあらかじめ定めておくのではなく、予測誤差の分布に基づいて、クラスタ数を決定する方式であってもよい。
【0026】
基準値生成部30は、これら予測誤差の代表値をオフセットとして、時刻tの予測値pに加えることにより、n個の残差基準値を生成する。最小残差選択部40は、残差基準値の中から、符号化対象とする実測値xに最も近いものを選ぶ。残差符号化部50は、選択した残差基準値と実測値との差分を残差として符号化し、圧縮データに保存する。また、残差基準値のインデックスも同時に圧縮データに保存する。図では、上から2番目の残差基準値e ̄が最も実測値に近い。この残差基準値を用いた残差は、予測値そのものによる残差よりも小さくなっている。
【0027】
このようにして、予測誤差履歴の代表値n点に基づいて残差基準値として置くことにより、残差に対する期待値を小さくすることが出来る。
【0028】
図6は、この実施の形態におけるデータ圧縮処理の流れの一例を示すフローチャート図である。
【0029】
ステップS01において、ヘッダ生成部80は、入力データに基づいて、データサイズ(入力データの時系列の長さ)Tを算出する。ヘッダ生成部80は、算出したデータサイズTや、履歴の個数Nや代表値の数(残差基準値の数)nなどパラメータ記憶部70が記憶したパラメータに基づいて、ヘッダデータを生成する。ヘッダ生成部80が生成するヘッダデータは、データサイズTや履歴の個数Nや代表値の数nなどのパラメータを表わす。ヘッダ生成部80は、生成したヘッダデータを圧縮データの先頭に保存する。これらは、例えば固定長バイナリ形式で保存する。
ステップS10において、データ圧縮装置100は、すべての入力データ{x|t=1,…,T}に対し、処理が完了したかを判定する。処理が完了した場合、データ圧縮装置100は、データ圧縮処理を終了する。処理が完了していない場合、データ圧縮装置100は、S20へ進む。
ステップS20において、オフセット量決定部20は、次の時刻の予測値pに対応するn個の予測誤差代表値{e ̄|i=1,…,n}を決定する。この代表値は、時刻t−N,…,t−1におけるN個(N>n)の予測誤差の履歴{et−N,…,et−1}を対象にk−means法を適用して、n個のクラスタに分類したときのクラスタ重心として得ることができる。k−means法では、予測誤差の履歴に対し次の式で表わされる関数fの値を準最小化する代表値を得ることができる。
【数11】

なお、予測誤差eは、実測値xと予測値pとの差として、次の式により与えられる。
【0030】
=x−p
【0031】
ステップS30において、予測器10は、入力データの先行する値から後続する符号化対象値xの予測値pを決定する。ここでは、最も単純な予測の例として、次の式のように、時刻t−1の値xt−1を時刻tの値の予測値pとして用いる。
【0032】
=xt−1
【0033】
ステップS40において、基準値生成部30は、上記予測値pと上記予測誤差代表値の集合{e ̄|i=1,…,n}とを元に、複数の残差基準値を決定する。予測値をp、n個の予測誤差代表値を{e ̄|i=1,…,n}とすると、基準値生成部30は、残差基準値{x ̄t,i|i=1,…,n}を、両者の和として次の式により求める。
【数12】

【0034】
ステップS50において、最小残差選択部40は、残差基準値{x ̄t,i|i=1,…,n}の中から、符号化対象値xに最も近いものを選択して、選択した残差基準値x ̄t,iと符号化対象値xとの差を残差rとして出力するとともに、選択した残差基準値のインデックスiを圧縮データに出力する。
【数13】

なお、インデックスiは、次の式で表わされる、基準値の種類数nを表現可能な最小のビット数bで、固定長バイナリ形式により出力する。
【数14】

なお、代表値の数nが2の累乗でない場合、インデックスiを表わす符号のビット数を少しでも短くするため、例えばCBT(完全二分木)符号を用いてインデックスiを符号化する構成としてもよい。
【0035】
ステップS60において、残差符号化部50は、前記残差rを符号語に変換して圧縮データに出力する。
符号化対象値が整数値である場合、残差符号化部50は、例えば、残差rの正負符号1ビットと、|r|の値をガンマ符号やデルタ符号や指数ゴロム符号により符号化した符号とを出力する。例えば、r≧0の場合、残差符号化部50は、1ビットの正負符号「0」と、r+1をデルタ符号で符号化した符号とを出力する。r<0の場合、残差符号化部50は、1ビットの正負符号「1」と、|r|をデルタ符号で符号化した符号とを出力する。
あるいは、残差符号化部50は、ライス符号やゴロム符号など、符号化する値が小さいほど符号長が短くなる性質を有する他の符号化方式を用いる構成であってもよい。ライス符号(ゴロム−ライス符号)における次数kやゴロム符号における法mなどのパラメータは、あらかじめ定めた値を用いる構成であってもよいし、生成する符号のビット長が最も短くなるよう、残差符号化部50が決定する構成であってもよい。例えば、残差符号化部50は、マルチパス構成として、第一パスで全ての残差{p|t=1,…,N}を得る。第二パスにおいて、残差符号化部50は、次数kを0から元のバイナリビット数まで変化させ、それぞれの次数kによる符号化を試行する。残差符号化部50は、符号化の結果、最も符号長が短くなる次数kを選択し、符号化に用いるパラメータに決定する。残差符号化部50は、決定したパラメータを表わす符号を、圧縮データの一部として出力する。
【0036】
符号化対象値が浮動小数点数形式によって表わされる実数値である場合、残差符号化部50は、例えば、上述した残差rの代わりに、指数部・仮数部について残差を求め、それぞれを整数とみなして上記符号化を行う。
【0037】
次に、実際の時系列データに適用した例を用いて、この実施の形態におけるデータ圧縮装置100の効果を説明する。
【0038】
図7は、実際の時系列データと、第一比較例において符号化される残差との関係を表わすグラフ図である。
横軸は、時刻を表わす。縦軸は、時系列データの値を表わす。折れ線は、各時刻における符号化対象値を結んだ線である。バツ印(×)は、第一比較例における予測器が予測した予測値を示す。矢印は、符号化される残差を示す。
【0039】
第一比較例における予測器は、この実施の形態における予測器10と同様、時刻tにおける符号化対象値の予測値pとして、直前の時刻t−1における値xt−1を用いる。また、第一比較例における残差符号化部は、符号化対象値xと、予測器が予測した予測値pとの差(予測誤差)を、そのまま符号化する。
【0040】
第一比較例では、符号化される残差が大きいので、圧縮効率が低い。線形予測の次数を増やし、データに対し係数を最適に決定するなどしたとしても、このような予測誤差は発生する。特に、変動が大きなデータの場合は、予測誤差が相対的に大きくなる。
【0041】
図8は、実際の時系列データと、第二比較例において符号化される残差との関係を表わすグラフ図である。
横軸は、時刻を表わす。縦軸は、時系列データの値を表わす。折れ線は、各時刻における符号化対象値を結んだ線である。バツ印(×)は、第二比較例における複数の予測器がそれぞれ予測した予測値を示す。矢印は、符号化される残差を示す。
【0042】
第二比較例には、予測器が4つある。第一の予測器は、時刻tにおける符号化対象値の予測値pとして、直前の時刻t−1における値xt−1を用いる。第二の予測器は、時刻tにおける符号化対象値の予測値pとして、2つ前の時刻t−2における値xt−2を用いる。第三の予測器は、時刻tにおける符号化対象値の予測値pとして、3つ前の時刻t−3における値xt−3を用いる。第四の予測器は、時刻tにおける符号化対象値の予測値pとして、4つ前の時刻t−4における値xt−4を用いる。
第二比較例における残差符号化部は、4つの予測器が算出した4つの予測値pのうち、符号化対象値xに一番近い予測値pと、符号化対象値xとの差を、符号化する。
【0043】
予測値1点だけを使う第一比較例と比べると、残差が小さくなっていることがわかる。しかし、已然として、大きな残差が残っている。このように独立な予測値を複数持ってきても、典型的にはグラフの左側に見られるように必要以上に予測点が集中してしまい、予測値の変動領域を適切にカバーすることができない。
【0044】
図9は、実際の時系列データと、この実施の形態におけるデータ圧縮装置100において符号化される残差との関係を表わすグラフ図である。
横軸は、時刻を表わす。縦軸は、時系列データの値を表わす。折れ線は、各時刻における符号化対象値を結んだ線である。バツ印(×)は、第二比較例における複数の予測器がそれぞれ予測した予測値を示す。各時刻における符号化対象値から放射状に伸びる細線は、予測誤差の履歴を示す。白抜き正方形(□)は、基準値生成部30が生成した残差基準値を示す。矢印は、残差符号化部50が符号化する残差を示す。
【0045】
データ圧縮装置100は、第二比較例と同様、4つの値のなかから符号化対象値に最も近い値を選んで、符号化する残差を求める。しかし、第二比較例と異なり、その4つの値は、予測誤差の履歴から得られた代表値であるから、値の変動を適切にカバーできる。第二比較例よりも符号化対象値に近い予測点(残差基準値)が存在し、残差が小さくなるので、圧縮効率が高くなる。
【0046】
図10は、この実施の形態におけるデータ復元装置200の機能ブロックの構成の一例を示すブロック構成図である。
データ復元装置200は、データ圧縮装置100が生成した残差符号列データと、基準値インデックスデータと、ヘッダデータとを、圧縮データとして入力する。データ復元装置200は、入力した圧縮データを損失なく伸長して、データ圧縮装置100が入力した入力データと同じ出力データを復元する。
データ復元装置200は、予測器15と、オフセット量決定部25と、基準値生成部35と、選択部45と、残差復号部55と、値復元部65と、パラメータ記憶部75と、ヘッダ取得部85とを有する。
【0047】
ヘッダ取得部85は、圧縮データの先頭から、ヘッダデータを取得する。
パラメータ記憶部75は、ヘッダ取得部85が取得したヘッダデータが表わすデータサイズTや履歴の個数Nや代表値の数nなどのパラメータを記憶する。
予測器15(復元予測部)は、データ圧縮装置100の予測器10と同じ方式を用いて、値復元部65が生成した出力データの先行する値から後続する復号対象値の予測値を決定する。
オフセット量決定部25は、データ圧縮装置100のオフセット量決定部20と同じ方式を用いて、予測値の予測誤差の分布に基づいて、予測誤差からの距離が最小となるような予測誤差代表値の集合を決定する。
基準値生成部35は、予測値と予測誤差代表値の集合を元に、複数の残差基準値を決定する。
選択部45は、基準値インデックスデータのなかから、復号対象値についてのインデックスを取得する。選択部45は、複数の残差基準値の中から、取得したインデックスにより示される残差基準値を選択する。
残差復号部55は、残差符号列データのなかから、復号対象値についての符号語を取得する。残差復号部55は、取得した符号語を復号して、残差を算出する。
値復元部65は、選択部45が選択した残差基準値と、残差復号部55が算出した残差とを合計して、元の値を復元し、出力データに出力する。
【0048】
図11は、この実施の形態におけるデータ伸長処理の流れの一例を示すフローチャート図である。
【0049】
ステップS01aにおいて、ヘッダ取得部85は、圧縮データの先頭からヘッダデータを取得し、データサイズ(入力データの時系列の長さ)T、履歴の個数N、および代表値の数(残差基準値の数)nなどのパラメータを読み出す。これらは固定長バイナリ形式で保存されているため特段の伸張処理は不要である。パラメータ記憶部75は、ヘッダ取得部85が読み出したデータサイズT、履歴の個数N、代表値の数nなどのパラメータを記憶する。
【0050】
ステップ10aにおいて、データ復元装置200は、ループの終了判定処理をする。以降のステップの繰り返し回数がデータサイズTより少ない場合、データ復元装置200は、S20へ進む。繰り返し回数がデータサイズTに達した場合、データ復元装置200は、データ伸長処理を終了する。
【0051】
ステップS20において、オフセット量決定部25は、予測誤差のクラスタリング処理を行う。ステップS30において、予測器15は、伸張済みの値に基づく予測を行う。ステップS40において、基準値生成部35は、複数の残差基準値を決定する。これらの処理内容は、データ圧縮処理におけるステップS20〜ステップS40と同じなので、説明を省略する。
【0052】
ステップS50aにおいて、選択部45は、基準値インデックスデータ(圧縮データ)から、残差基準値のインデックスiを読み出す。残差復号部55は、残差符号列データ(圧縮データ)から、符号化した残差rを読み出す。インデックスがlognを超えない最小の整数をビット数とする固定長バイナリ形式で保存されている場合、特段の伸張処理は不要である。残差rは、例えば、前述のように正負符号1ビットと、絶対値を表わすデルタ符号とにより保存されている。デルタ符号は、可変長符号であるが、一意復号可能であり、瞬時復号可能であるから、データを先頭から読んで行くことで符号長を知ることができ、符号語を読み出すことができる。
【0053】
ステップS60aにおいて、残差復号部55は、残差rを復号する。
【0054】
ステップS70aにおいて、値復元部65は、上記得られた残差rを、上記インデックスで参照される残差基準値(値はステップS40で得られる)に加えることにより、元の値xを得る。
【0055】
以上のようにして、データ復元装置200は、データ圧縮装置100が圧縮したデータを損失なく伸張することができる。
【0056】
以上のように、この実施の形態におけるデータ圧縮装置100によれば、予測誤差の分布に基づいて残差の基準値を最小化するようなn値の集合を設定することができる。このため、インデックスビットの指定が必要なn値を用いる方式でありながら、n値間の冗長性を抑え、効果的に予測点(残差基準点)を増やすことが可能であり、その結果として、優れた圧縮率を得ることができる。
【0057】
なお、この実施の形態におけるデータ圧縮装置100は、オンライン処理でクラスタリングを行い、予測値オフセットを決める。オフセット量決定部20は、入力データに対する予測誤差の履歴より、予測誤差代表値の集合を逐次的に決定する。すなわち、符号化処理を1つずつ実行しながら逐次的に予測誤差履歴のクラスタリングを実行する。このように逐次更新される履歴を使うことにより、予測誤差履歴の局所的な分散を反映して残差基準点を置くことができる。このため、特に非定常な入力データに対し、優れた圧縮率を得ることができる。
【0058】
また、この実施の形態におけるデータ圧縮装置100は、予測誤差の代表値(オフセット)を得るためにk−meansクラスタリングを適用する。オフセット量決定部20は、k−means法によるクラスタリングを予測誤差の分布に適用して、予測誤差代表値の集合を決定する。これにより、予測誤差に対し分布を仮定せずに代表値を決定することができる。このため、本発明は離散値を取るようなセンサデータに対しても適用可能であり、汎用性の高い方式となっている。
【0059】
実施の形態2.
実施の形態2について、図12〜図15を用いて説明する。
なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。
【0060】
実施の形態1におけるデータ圧縮装置100は、履歴に対し逐次的に予測誤差代表値の生成処理(クラスタリング)を実施・更新するのに対し、この実施の形態におけるデータ圧縮装置100は、バッチ的に全入力データを対象に実行しておき、各時刻の予測点に対し、同じ予測誤差代表値(予測値に対するオフセット)を適用する。
【0061】
図12は、この実施の形態におけるデータ圧縮装置100の機能ブロックの構成の一例を示すブロック構成図である。
データ圧縮装置100は、実施の形態1で説明したブロックに加えて、更に、値記憶部11と、予測値記憶部12と、オフセット量記憶部21とを有する。
【0062】
値記憶部11は、データ圧縮装置100が入力した入力データ(観測データ)を記憶する。
予測値記憶部12は、予測器10が予測した予測値を記憶する。
オフセット量記憶部21は、オフセット量決定部20が決定した複数の代表値を記憶する。
【0063】
図13は、この実施の形態におけるデータ圧縮処理の流れの一例を示すフローチャート図である。
【0064】
ステップS301は、実施の形態1におけるステップS30に対応する。ステップS201は、実施の形態1におけるステップS20に対応する。実施の形態1におけるステップS20およびステップS30は、ループの中にあり、逐次的に実行するのに対し、ステップS301およびステップS201は、ループの外に出ている。なお、実施の形態1で説明したデータ圧縮処理のステップと同じ番号を付けたステップの処理は、実施の形態1と同じなので、説明を省略する。
【0065】
ステップS301において、予測器10は、値記憶部11が記憶した入力データの全ての値に対し線形予測を適用して、各値に対する予測値を得る。予測値記憶部12は、予測器10が予測した予測値を、RAM914などのメモリに記憶する。
【0066】
ステップS201において、オフセット量決定部20は、値記憶部11が記憶した入力データの各値を、予測値記憶部12が記憶した予測値と比較して、全予測誤差データを得る。オフセット量決定部20は、得られた全予測誤差データを実施の形態1と同様にクラスタリングして、n個の予測誤差代表値{e ̄|i=1,…,n}を得る。オフセット量記憶部21は、オフセット量決定部20が算出した予測誤差代表値を、RAM914などのメモリに記憶する。ヘッダ生成部80(符号化部)は、オフセット量記憶部21が記憶したn個の予測誤差代表値を、圧縮データ(ヘッダデータ)に補助情報(残差基準値符号)として保存する。これらは例えば固定長バイナリ形式で保存する。
【0067】
ステップS101において、データ圧縮装置100は、ループの判定処理をする。データ圧縮装置100は、入力データに対する全ての値に対し、符号化が完了しているかを判定する。符号化が完了している場合、データ圧縮装置100は、データ圧縮処理を終了する。符号化が完了していない場合、データ圧縮装置100は、ステップS40〜ステップS60の処理を実行する。
【0068】
ステップS40において、基準値生成部30は、ステップS201でオフセット量記憶部21が記憶した予測誤差代表値{e ̄|i=1,…,n}を使って、基準値を生成する。
実施の形態1では、予測誤差代表値{e ̄|i=1,…,n}の値が逐次変化するが、この実施の形態では、すべての入力データに対して同一の値を用いる。
【0069】
それ以外の処理は、実施の形態1と同様なので、説明を省略する。
【0070】
図14は、この実施の形態におけるデータ復元装置200の機能ブロックの構成の一例を示すブロック構成図である。
データ復元装置200は、データ圧縮装置100が生成した圧縮データから、元の入力データを損失なく伸張する。
データ復元装置200は、実施の形態1で説明した機能ブロックと同様の機能ブロックを有するが、オフセット量決定部25を有さない点が、実施の形態1のデータ復元装置200と異なる。
【0071】
ヘッダ取得部85がヘッダデータから取得するパラメータには、データ圧縮装置100のオフセット量決定部20が算出したn個の予測誤差代表値が含まれる。パラメータ記憶部75は、n個の予測誤差代表値を含むパラメータを記憶する。
基準値生成部35は、実施の形態1で説明したオフセット量決定部25が算出した予測誤差代表値の代わりに、パラメータ記憶部75が記憶した予測誤差代表値を使って、基準値を生成する。
【0072】
図15は、この実施の形態におけるデータ伸長処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明したステップと同じ番号を付与したステップの処理は、実施の形態1と同じであるため、説明を省略する。
【0073】
ステップS201aにおいて、ヘッダ取得部85は、ステップS01aで得た代表値の数nに基づいて、圧縮データより予測誤差代表値n個を読み出す。これらが固定長バイナリ形式で保存されている場合、特段の伸張処理は不要である。
【0074】
ステップS101aにおいて、データ復元装置200は、ループの終了判定処理をする。ステップS30〜S70aの繰り返し回数が、ステップS01aで得たデータサイズTの回数に達した場合、データ復元装置200は、データ伸長処理を終了する。繰り返し回数がデータサイズTに達していない場合、データ復元装置200は、ステップS30〜S70aの処理を実行する。
【0075】
ステップS40において、基準値生成部35は、予測器15が予測した予測値と、パラメータ記憶部75が記憶したn個の予測誤差代表値{e ̄|i=1,…,n}それぞれとの和を算出することにより、n個の基準値を生成する。
【0076】
それ以外のステップの処理は、実施の形態1と同様なので、説明を省略する。
【0077】
以上のようにして、本発明によるデータ圧縮装置で圧縮したデータを損失無く伸張することができる。
【0078】
データ圧縮装置100は、バッチ処理で事前にクラスタリング処理をする。オフセット量決定部20は、予測誤差代表値の集合を、入力データに対する予測誤差の分布から一括処理により決定し、決定した予測誤差代表値の集合を圧縮後データに保存する。
【0079】
このように、本実施の形態におけるデータ圧縮装置100は、入力データ全体における予測誤差の分布に基づいて残差の基準値を最小化するようなn値の集合を設定することが出来る。このため、インデックスビットの指定が必要なn値を用いる方式でありながら、n値間の冗長性を抑え、効果的に予測点(残差基準点)を増やすことができ、結果として、優れた圧縮率を得ることができる。
【0080】
特に、定常と見なすことが可能なデータにおいては、このような構成としても、実施の形態1と同様に残差を小さくする効果を得ることができる。
【0081】
また、実施の形態1では、各入力データごとに予測誤差代表値を算出したのに対し、この実施の形態では、すべての入力データに対して同一の予測誤差代表値を用いるので、予測誤差代表値の算出処理を1回だけ実行すればよい。計算量が少なくて済むので、データ圧縮処理を高速に実行することができる。
【0082】
実施の形態3.
実施の形態3について、図16〜図16を用いて説明する。
なお、実施の形態1及び実施の形態2と共通する部分については、同一の符号を付し、説明を省略する。
【0083】
この実施の形態では、予測誤差が正規分布に従って分布すると仮定できる場合について説明する。
【0084】
オフセット量決定部20は、あらかじめ、予測誤差代表値{e ̄|i=1,…,n}を算出するための係数a(jは1以上n/2以下の整数。)を記憶している。
オフセット量決定部20は、例えば、予測誤差の履歴{e,…,et−1}に基づいて、予測誤差の平均値m及び標準偏差σを算出する。なお、予測誤差の平均値mが0になると期待できる場合、オフセット量決定部20は、予測誤差の平均値m=0を仮定して、予測誤差の平均値mを算出せず、標準偏差σだけを算出する構成であってもよい。
オフセット量決定部20は、算出した予測誤差の平均値m及び標準偏差σに基づいて、予測誤差代表値{e ̄|i=1,…,n}を算出する。オフセット量決定部20は、例えば、次の式を用いて、予測誤差代表値を算出する。
【数15】

ただし、n’は、n/2より小さくない最小の整数である。mは、オフセット量決定部20が算出する予測誤差の平均値である。σは、オフセット量決定部20が算出する予測誤差の標準偏差である。
【0085】
図16は、この実施の形態におけるオフセット量決定部20が算出する予測誤差代表値の一例を示す図である。
横軸は、予測誤差を示す。縦軸は、予測誤差の確率分布を示す。
曲線300は、予測誤差の確率分布関数である。この例は、予測誤差の平均値mが0の場合を示す。
斜線で示した領域301〜304は、予測誤差の確率分布をn個に分割した領域である。オフセット量決定部20は、予測誤差代表値{e ̄|i=1,…,n}として、各領域301〜304の重心を算出する。
予測誤差の確率分布が正規分布にしたがうと仮定できる場合、各領域の重心と平均値mとの差が、標準偏差σの何倍にあたるかを、あらかじめ計算しておくことができる。例えばn=4の場合、予測誤差が下から25%以内である領域301の重心は(m−1.27σ)、予測誤差が平均値より下の25%以内である領域302の重心は(m−0.325σ)、予測誤差が平均値より上の25%以内である領域303の重心は(m+0.325σ)、予測誤差が上から25%以内である領域304の重心は(n+1.27σ)である。オフセット量決定部20は、あらかじめa=0.325、a=1.27を記憶しておく。オフセット量決定部20は、算出した標準偏差σに基づいて、各領域の重心を算出し、予測誤差代表値{e ̄|i=1,…,n}とする。
一般に、予測誤差が上からb%〜b%の間(0≦b<b≦100)にある領域の重心aは、
【数16】

【0086】
ただし、expはネイピア数を底とする指数関数である。erf−1は誤差関数erfの逆関数である。
【0087】
このように、正規分布を用いて、例えば、平均0で予測誤差履歴の分散を持つ正規分布の面積をn等分する各領域の重心に残差代表値を置き、そのような等分点がσの何倍に当たるかを予め装置に登録しておくことにより、データの分散に合わせて容易に代表値を決定することができる。
【0088】
なお、予測誤差が従うと仮定する分布は、正規分布に限らず、他の分布であってもよい。
【0089】
実施の形態4.
実施の形態4について、図17〜図20を用いて説明する。
なお、実施の形態1〜実施の形態3と共通する部分については、同一の符号を付し、説明を省略する。
【0090】
図17は、この実施の形態におけるデータ圧縮装置100の機能ブロックの一例を示すブロック構成図である。
データ圧縮装置100は、データ入力部110と、データ記憶部115と、予測部120と、予測残差算出部125と、予測残差記憶部140と、基準値算出部145と、パラメータ算出部150と、基準値選択部180と、基準残差算出部185と、符号化部190と、符号出力部195とを有する。
【0091】
データ入力部110は、CPU911(処理装置)を用いて、観測装置810が出力した観測データを入力する。データ入力部110が入力する観測データは、一連の観測値を表わす。
データ記憶部115は、磁気ディスク装置920(記憶装置)を用いて、データ入力部110が入力した観測データを記憶する。
【0092】
予測部120は、CPU911を用いて、データ記憶部115が記憶した観測データが表わす一連の観測値のうち最新の観測値について、その観測値の予測値を算出する。予測部120は、その観測値よりも前の観測値に基づいて、その観測値を予測する。例えば、予測部120は、ある観測値よりも前のすべての観測値を使って、その観測値を予測する。あるいは、予測部120は、ある観測値の直前のいくつかの観測値を使って、その観測値を予測する構成であってもよい。なお、一連の観測値のうち最初の観測値については、それよりも前の観測値が存在しないので、予測部120は、例えば、所定の値(例えば0)を、その観測値の予測値とする。
予測部120は、例えば線形予測や非線形予測、カルマンフィルタやその他フィルタを用いた予測などを用いて、観測値を予測する。予測部120は、観測値の順序を所定の方式で入れ替える構成であってもよい。例えば、2a番目の観測値と2a+1番目の観測値の順序を入れ替えて、2a+1番目の観測値を2a番目の観測値よりも先に予測する構成であってもよい。その場合、予測部120は、2a番目の観測値を使わず、2a−1番目以前の観測値だけを使って、2a+1番目の観測値を予測する。その代わり、予測部120は、2a番目の観測値の予測に、2a+1番目の観測値を使う。これにより、2a番目の観測値の予測精度を高めることができる。
このように、観測値の順序は、実際にその観測値を観測した順序と異なっていてもよい。ここでいう「観測値の順序」とは、観測値を符号化した符号の依存関係のことである。すなわち、ある観測値xを使って別の観測値xを予測し、その別の観測値xを使って観測値xを予測するという循環があると、どちらかの観測値がわからなければもう一方の観測値を予測できないから、符号化した符号を復号できない。したがって、このような循環が存在してはならない。このような循環が存在しなければ、復号時には、復号済の観測値を使ってまだ復号していない観測値を予測することができ、すべての観測値を復号できる。観測値の順序が実際の時系列順と異なる場合、復号後に観測値の順序を入れ替えて、実際にその観測値を観測した時系列順に戻せばよい。
【0093】
予測残差算出部125は、CPU911を用いて、データ記憶部115が記憶した観測データが表わす一連の観測値のうち、予測部120が予測値を算出した観測値について、その観測値の予測残差(予測誤差)を算出する。予測残差算出部125は、その観測値の予測残差として、予測部120が算出した予測値をその観測値から差し引いた差を計算する。
【0094】
なお、観測値が整数値や固定小数点形式で表現された実数値である場合、予測残差算出部125は、整数の引き算を使って、予測残差を算出する。
また、観測値が浮動小数点形式で表現された実数値である場合、例えば、予測残差算出部125は、指数部の予測残差として、予測値の指数部を観測値の指数部から差し引いた差を、整数の引き算を使って算出する。予測残差算出部125は、予測値を変換して、観測値の指数部に予測値の指数部を一致させる。例えば、予測値の指数部が観測値の指数部より小さい場合、予測残差算出部125は、指数部の差の分だけ、予測値の仮数部を右にシフトする。この際、アンダーフローするビットは、無視してよい。逆に、予測値の指数部が観測値の指数部より大きい場合、予測残差算出部125は、指数部の差の分だけ、予測値の仮数部を左にシフトする。この際、オーバーフローするビットも、無視してよい。予測残差算出部125は、仮数部の予測残差として、変換した予測値の仮数部を観測値の仮数部から差し引いた差を、整数の引き算を使って算出する。また、予測残差算出部125は、符号部の予測残差として、観測値の符号部と予測値の符号部とが同じか異なるかを算出する。予測残差算出部125は、指数部の予測残差と、仮数部の予測残差と、符号部の予測残差との組を、観測値の予測残差とする。なお、観測値の符号があらかじめわかっている場合、予測残差算出部125は、符号部の予測残差を算出しない構成であってもよい。
また、観測値が複数の整数値や実数値の組からなるベクトル値である場合、予測残差算出部125は、各成分ごとに予測残差を算出し、算出した予測残差の組を、観測値の予測残差とする。
【0095】
予測残差記憶部140は、磁気ディスク装置920を用いて、予測残差算出部125が算出した予測残差を表わすデータ(以下「予測残差データ」と呼ぶ。)を記憶する。予測残差データは、予測部120が予測値を算出した観測値それぞれについての予測残差を表わす。1つの予測残差は、例えば、1つの整数または複数の整数の組によって表わされる。
【0096】
基準値算出部145は、CPU911を用いて、予測部120が予測値を算出した観測値のそれぞれについて、予測残差記憶部140が記憶した予想残差データが表わす予測残差のうち、その観測値よりも前の観測値についての予測残差に基づいて、予測残差基準値(予測誤差代表値)を算出する。なお、ここでいう観測値の前後関係は、予測部120の場合と同様、必ずしも、実際にその観測値が観測された順序どおりでなくてもよく、予測部120が予測値を予測する順序(依存関係)にしたがう。
基準値算出部145は、その観測値よりも前の観測値についての予測残差すべてを使って、予測残差基準値を算出する構成でもよいし、その観測値の直前のいくつかの観測値についての予測残差を使って、予測残差基準値を算出する構成でもよい。その場合、基準値算出部145が使う予測残差の数は、予測部120が予測値の算出に使う観測値の数と異なっていてもよいし、同じであってもよい。
【0097】
基準値算出部145は、予測残差基準値(予測誤差代表値)を少なくとも1つ算出する。基準値算出部145は、予測残差基準値の算出に使う予測残差の分布に基づいて、予測残差が比較的密集している領域(以下「予測残差密集領域」と呼ぶ。)を算出する。基準値算出部145は、算出した予測残差密集領域に基づいて、予測残差基準値として、その予測残差密集領域を代表する値を算出する。例えば、基準値算出部145は、予測残差密集領域の中央値を予測残差基準値とする。あるいは、基準値算出部145は、予測残差密集領域内に入る予測残差の平均値を予測残差基準値とする。予測残差密集領域が複数ある場合、基準値算出部145は、複数の予測残差密集領域を算出し、原則として、それぞれの予測残差密集領域について、予測残差基準値を算出する。ただし、複数の予測残差密集領域が比較的近い領域にある場合、基準値算出部145は、近くに存在する複数の予測残差密集領域を1つの予測残差密集領域とみなす。基準値算出部145は、1つとみなした予測残差密集領域について1つの予測残差基準値を算出する。
基準値算出部145は、算出する予測残差基準値の数をあらかじめ定めず、予測残差の分布に基づいて、最適な数の予測誤差基準値を算出する。予測残差基準値の数を増やすと、符号化部190が符号化する整数(残差)が小さくなる分、符号長が短くなるが、どの予測残差基準値を選択したかを示すインデックスの符号長が長くなるので、全体としての符号長は、必ずしも短くなるとは限らない。そこで、基準値算出部145は、符号長の期待値が最小になる数の予測残差基準値を算出する。例えば、予測残差が比較的まばらなところに予測残差基準値を設けても、その予測残差基準値を使う確率が低いので、残差の符号長はあまり短くならない。また、1つの予測残差密集領域内に複数の予測残差基準値を設けても、どちらの予測残差基準値を使っても残差があまり変わらないので、やはり、残差の符号長はあまり短くならない。このため、符号長の期待値が最小になるのは、予測残差基準値の数が、予測残差密集領域の数と等しい場合である。基準値算出部145は、予測残差密集領域の数と同じ数の予測残差基準値を算出する。
【0098】
なお、予測残差が複数の整数の組によって表わされる場合、基準値算出部145は、各成分ごとに独立して予測残差基準値を算出する構成であってもよいし、各成分の予測残差基準値を組として扱う構成であってもよい。例えば、予測残差が2つの整数の組(x,y)によって表わされる場合、各成分ごとに独立して予測残差基準値を算出する構成であれば、基準値算出部145は、x成分の予測残差基準値として、a個の予測残差基準値x,x,…,xを算出し、y成分の予測残差基準値として、b個の予測残差基準値y,y,…,yを算出する。各成分の予測残差基準値を組として扱う構成であれば、基準値算出部145は、c個の予測残差基準値の組(x,y),(x,y),…,(x,y)を算出する。各成分の間に相関がなく独立している場合には、各成分ごとに独立して予測残差基準値を算出する構成のほうが好ましく、各成分の間に強い相関がある場合には、各成分の予測残差基準値を組として扱う構成のほうが好ましい。
【0099】
パラメータ算出部150は、CPU911を用いて、予測部120が予測値を算出した観測値のそれぞれについて、基準値算出部145が算出した予測残差基準値と、予測残差記憶部140が記憶した予想残差データが表わす予測残差のうち、その観測値よりも前の観測値についての予測残差とに基づいて、符号化に使うパラメータを算出する。パラメータ算出部150が算出するパラメータには、どの予測残差基準値を使って残差を算出したかを表わす基準値インデックスを符号化するためのインデックス符号化パラメータと、残差を符号化するための残差符号化パラメータとがある。
【0100】
例えば、パラメータ算出部150は、予測残差の分布に基づいて、基準値算出部145が算出した予測残差基準値それぞれを選択する確率を推定する。パラメータ算出部150は、推定した確率に基づいて、ハフマン符号などのエントロピー符号において基準値インデックスに対応する符号を算出し、インデックス符号化パラメータとする。
なお、予測残差が複数の整数の組で表わされ、基準値算出部145が各成分ごとに独立して予測残差を算出する構成である場合、パラメータ算出部150は、各成分ごとに独立して予測残差基準値を選択する確率を推定する構成であってもよいし、各成分の予測残差基準値の組について、その組を選択する確率を推定する構成であってもよい。
【0101】
また、パラメータ算出部150は、予測残差の分布と、基準値算出部145が算出した予測残差基準値の分布とに基づいて、残差を符号化する符号化方式や、符号化に用いるパラメータを選択する。パラメータ算出部150は、選択した符号化方式やパラメータを表わす残差符号化パラメータを生成する。例えば、基準値算出部145が算出した予測残差基準値のうち、最も小さい予測残差基準値よりも予測残差が小さい場合や、最も大きい予測残差基準値よりも予測残差が大きい場合は、符号化する残差の絶対値が比較的大きくなる可能性があるのに対し、予測残差が2つの予測残差基準値の間にある場合は、符号化する残差の絶対値がその2つの予測残差基準値の差より大きくなることはあり得ない。符号化する残差が大きい可能性がある場合は、例えばガンマ符号やデルタ符号など大きい整数を比較的短い符号に符号化する符号化方式が効率的である。また、符号化する残差の上限がわかっている場合は、例えばCBT符号など所定の範囲内の整数を符号化する符号化方式が効率的である。また、符号化する残差の出現確率によっても、最も効率がよい符号化方式が異なる。例えば、残差の絶対値が大きくなるにつれて出現確率が下がっていく場合は、デルタ符号などのユニバーサル符号のように絶対値が小さいほど符号長が短く、絶対値が大きいほど符号長が長くなる符号化方式のほうが効率がよい。逆に、残差の絶対値にかかわらず出現確率があまり変わらない場合は、CBT符号のように符号長があまり変わらない符号化方式のほうが効率がよい。また、ゴロム符号やライス符号を使う場合、絶対値の小さい残差の出現確率が高いほど、法mや次数kを小さくするほうが効率がよい。
パラメータ算出部150は、予測残差の分布に基づいて、それぞれの予測残差基準値を選択した場合における残差の確率分布を推定する。パラメータ算出部150は、推定した確率分布に基づいて、どの符号化方式が最適であるかを判定し、ライス符号のようにパラメータを持つ符号化方式が最適であると判定した場合は、更に、最適なパラメータの値を算出する。
なお、ある予測残差基準値に対して、予測残差のほうが大きい場合と、予測残差のほうが小さい場合とでは、符号化する残差の確率分布が異なる場合がある。このため、パラメータ算出部150は、同じ予測残差基準値を選択した場合でも、符号化する残差が正である場合と、符号化する残差が負である場合とで、異なる符号化方式やパラメータを算出する構成であってもよい。
また、予測残差が複数の整数の組によって表わされる場合、パラメータ算出部150は、各成分ごとに異なる符号化方式やパラメータを算出する構成であってもよい。また、基準値算出部145が各成分ごとに独立して予測誤差基準値を算出する構成である場合、パラメータ算出部150は、各成分に対して選択した予測誤差基準値の組に対して、それぞれ異なる符号化方式やパラメータを算出する構成であってもよい。例えば、予測残差が2つの整数の組(x,y)によって表わされ、基準値算出部145が各成分についてそれぞれ独立に予測誤差基準値を算出し、x成分についてa個、y成分についてb個の予測誤差基準値を算出した場合、予測誤差基準値の組合せは、a×b通りある。パラメータ算出部150は、a×b通りの組合せそれぞれについて、x成分の符号化方式やパラメータと、y成分の符号化方式やパラメータとの組を選択する。
【0102】
基準値選択部180は、CPU911を用いて、予測部120が予測値を算出した観測値のそれぞれについて、予測残差算出部125が算出した予測残差と、パラメータ算出部150が算出した符号化パラメータとに基づいて、基準値算出部145が算出した予測残差基準値のなかから、1つの予測残差基準値を選択する。基準値選択部180は、残差を符号化したときの符号長が最も短くなる予測残差基準値を選択する。例えば、基準値選択部180は、予測残差との差の絶対値が最も小さい予測残差基準値を選択する。ただし、予測残差基準値によって符号化の方式が異なる場合、必ずしも、予測残差との差の絶対値が最も小さい予測残差基準値が、残差を符号化したときの符号長を最も短くするとは限らない。また、選択した予測残差基準値を示す基準値インデックスを符号化した符号長が、選択した予測残差基準値によって異なる場合、基準値選択部180は、基準値インデックスを符号化した符号長も合わせた全体の符号長が最も短くなる予測残差基準値を選択する。例えば、基準値選択部180は、基準値算出部145が算出した予測残差基準値すべて、もしくは、そのなかから抽出したいくつかの候補について、符号長を算出し、算出した符号長が最も短い予測残差基準値を選択する。
【0103】
予測残差が複数の整数の組で表わされ、基準値算出部145が各成分ごとに独立して予測残差基準値を算出する構成である場合、基準値選択部180は、各成分ごとに、基準値算出部145が算出した予測残差基準値のなかから、1つの予測残差基準値を選択する。また、基準値算出部145が各成分の予測残差基準値を組として扱う構成である場合、基準値選択部180は、各成分の予測残差基準値の組のなかから、1つの組を選択する。
【0104】
基準残差算出部185は、CPU911を用いて、予測部120が予測値を算出した観測値のそれぞれについて、基準残差を算出する。基準残差算出部185は、基準残差として、予測残差算出部125が算出した予測残差から、基準値選択部180が選択した予測残差基準値を差し引いた差を、整数の引き算を使って計算する。
予測残差が複数の整数の組で表わされる場合、基準残差算出部185は、各成分ごとに、予測残差基準値を予測残差から差し引いた差を、整数の引き算を使って計算する。
【0105】
符号化部190は、CPU911を用いて、予測部120が予測値を算出した観測値のそれぞれについて、パラメータ算出部150が算出した符号化パラメータに基づいて、基準値選択部180が選択した予測残差基準値を示す基準値インデックスを符号化して、選択基準値符号を生成する。また、符号化部190は、CPU911を用いて、パラメータ算出部150が算出した符号化パラメータに基づいて、基準残差算出部185が算出した基準残差を符号化して、基準残差符号を生成する。
【0106】
なお、符号化部190は、基準残差が正であるか負であるかを、基準残差符号の一部として符号化する構成であってもよいし、選択基準値符号の一部として符号化する構成であってもよい。
基準残差の正負を選択基準値符号の一部として符号化する構成の場合、符号化部190は、例えば、基準残差算出部185が算出した基準残差が正であるか負であるかを判定する。なお、基準残差が0である場合は、正に含まれるものとして扱う構成であってもよいし、負に含まれるものとして扱う構成であってもよいし、符号長が短くなるほうに含まれるものとして扱う構成であってもよい。
基準残差が正であると判定した場合、符号化部190は、例えば、基準値選択部180が選択した基準値インデックスに、基準残差が正であることを示すビットを付加したものを符号化し、選択基準値符号を生成する。基準残差が0の場合を正として扱う場合において、符号化部190は、指数ゴロム符号のように0以上の整数を符号化できる符号化方式を使って、基準残差算出部185が算出した基準残差を符号化し、基準残差符号を生成する。なお、ガンマ符号のように1以上の整数を符号化できる符号化方式を使う場合、符号化部190は、例えば、基準残差算出部185が算出した基準残差に1を加えたものを符号化する。
基準残差が負であると判定した場合、符号化部190は、例えば、基準値選択部180が選択した基準値インデックスに、基準残差が負であることを示すビットを付加したものを符号化し、選択基準値符号を生成する。基準残差が0の場合を正として扱う場合において、符号化部190は、基準残差算出部185が算出した基準残差に−1を乗じて正負を反転し、ガンマ符号のように1以上の整数を符号化できる符号化方式により符号化する。なお、指数ゴロム符号のように0以上の整数を符号化できる符号化方式を使う場合は、符号化部190は、基準残差算出部185が算出した基準残差を−1から差し引いた差(あるいは基準残差の1の補数)を符号化する。
基準残差が正の場合と負の場合とで、基準残差の符号化方式が異なる場合、基準残差の正負を選択基準値符号の一部として符号化する方式が好ましい。また、選択基準値符号をハフマン符号などのエントロピー符号を用いて符号化する構成で、基準残差が正の場合の出現確率と負の場合の出現確率とが異なる場合、基準残差の正負を選択基準値符号の一部として符号化することにより、符号長を短くすることができる。
【0107】
予測残差が複数の整数の組で表わされ、基準値算出部145が各成分ごとに独立して予測残差基準値を算出する構成である場合、符号化部190は、各成分ごとに独立して、基準値選択部180が選択した予測残差基準値を示す基準値インデックスを符号化する構成であってもよいし、各成分について基準値選択部180が選択した予測残差基準値を示す基準値インデックスの組を符号化する構成であってもよい。ハフマン符号などのエントロピー符号を用いて符号化する場合、出現確率の低い基準値インデックスの組があれば、基準値インデックスの組を符号化する構成のほうが、出現確率の高い基準値インデックスの組を符号化した選択基準値符号の符号長が短くなるので好ましい。
なお、基準値インデックスを圧縮符号化せず、固定長バイナリ形式の符号を生成する構成であってもよい。
【0108】
また、予測残差が複数の整数の組で表わされる場合、符号化部190は、各成分ごとに、基準残差算出部185が算出した基準残差を符号化する。符号化部190は、すべての成分について生成した符号の組を、基準残差符号とする。
【0109】
符号出力部195は、CPU911を用いて、圧縮データを出力する。圧縮データは、データ入力部110が入力した観測データが表わす一連の観測値を表わす。圧縮データは、符号化部190が生成した選択基準値符号と基準残差符号との組を複数含む。1つの選択基準地符号と基準残差符号との組は、1つの観測値を表わす。
なお、符号出力部195は、符号化部190が生成した選択基準値符号と基準残差符号との組をそのまま圧縮データとするのではなく、更に、別の圧縮方式を用いて圧縮したものを圧縮データとして出力する構成であってもよい。
【0110】
図18は、この実施の形態におけるデータ復元装置200の機能ブロックの構成の一例を示すブロック構成図である。
データ復元装置200は、データ出力部210と、値記憶部215と、復元予測部220と、予測残差算出部225と、値復元部230と、予測残差記憶部240と、復元基準値算出部245と、パラメータ算出部250と、復元基準値選択部280と、復号部290と、符号取得部295とを有する。
【0111】
符号取得部295は、CPU911を用いて、圧縮データを入力して、選択基準値符号と基準残差符号との組を、順に一組ずつ取得する。
【0112】
予測残差記憶部240は、磁気ディスク装置920を用いて、予測残差算出部225がそれまでに算出した予測残差を表わす予測残差データを記憶している。
【0113】
復元基準値算出部245は、CPU911を用いて、予測残差記憶部240が記憶した予測残差データが表わす予測残差に基づいて、予測残差基準値を算出する。復元基準値算出部245は、データ圧縮装置100の基準値算出部145と同じ方式で予測残差基準値を算出する。基準値算出部145は、ある観測値について、その観測値よりも前の観測値についての予測残差に基づいて予測残差基準値を算出する。データ復元装置200がその観測値を復元する時点では、その観測値よりも前の観測値についての予測残差を予測残差算出部225が既に算出し、予測残差記憶部240が記憶している。このため、復元基準値算出部245は、基準値算出部145とまったく同じようにして予測残差基準値を算出することができる。すなわち、復元基準値算出部245は、基準値算出部145が算出する予測残差基準値とまったく同じ予測残差基準値を算出する。
【0114】
パラメータ算出部250は、CPU911を用いて、予測残差記憶部240が記憶した予測残差データが表わす予測残差と、復元基準値算出部245が算出した予測残差基準値とに基づいて、符号化パラメータを算出する。パラメータ算出部250は、データ圧縮装置100のパラメータ算出部150と同じ方式で符号化パラメータを算出する。復元基準値算出部245と同様、パラメータ算出部250は、パラメータ算出部250とまったく同じようにして符号化パラメータを算出することができる。すなわち、パラメータ算出部250は、パラメータ算出部150が算出する符号化パラメータとまったく同じ符号化パラメータを算出する。
【0115】
復号部290は、CPU911を用いて、パラメータ算出部250が算出した符号化パラメータに基づいて、符号取得部295が取得した選択基準値符号と基準残差符号とを復号する。例えば、復号部290は、まず、パラメータ算出部250が算出した符号化パラメータのうちインデックス符号化パラメータに基づいて、選択基準値符号を復号して、基準値インデックスを復元する。次に、復号部290は、復元した基準値インデックスと、パラメータ算出部250が算出した符号化パラメータのうち残差符号化パラメータとに基づいて、基準残差符号を復号して、基準残差を復元する。
【0116】
復元基準値選択部280は、CPU911を用いて、復元基準値算出部245が算出した予測残差基準値のなかから、復号部290が復元した基準値インデックスが示す予測残差基準値を選択する。これにより、復元基準値選択部280は、データ圧縮装置100の基準値選択部180が選択した予測残差基準値と同じ予測残差基準値を選択する。
【0117】
予測残差算出部225は、CPU911を用いて、復号部290が復元した基準残差と、復元基準値選択部280が選択した予測残差基準値とに基づいて、予測残差を算出する。予測残差算出部225は、基準残差と予測残差基準値とを合計した和を、整数の足し算を使って計算して、予測残差とする。これにより、予測残差算出部225は、データ圧縮装置100の予測残差算出部125が算出した予測残差と同じ予測残差を算出する。予測残差算出部225が算出した予測残差は、予測残差記憶部240が記憶して、次の観測値を復元するための予測残差基準値などを算出するために使われる。
【0118】
値記憶部215は、磁気ディスク装置920を用いて、値復元部230がそれまでに復元した一連の観測値を表わすデータを記憶している。
【0119】
復元予測部220は、CPU911を用いて、値記憶部215が記憶したデータが表わす一連の観測値に基づいて、復元しようとしている観測値の予測値を算出する。復元予測部220は、データ圧縮装置100の予測部120と同じ方式で観測値を予測する。予測部120は、ある観測値について、その観測値よりも前の観測値に基づいて予測値を算出する。データ復元装置200がその観測値を復元する時点では、その観測値よりも前の観測値を値復元部230が既に復元し、値記憶部215が記憶している。このため、復元予測部220は、予測部120とまったく同じようにして予測値を算出することができる。すなわち、復元予測部220は、予測部120が算出する予測値とまったく同じ予測値を算出する。
【0120】
値復元部230は、CPU911を用いて、予測残差算出部225が算出した予測残差と、復元予測部220が算出した予測値とに基づいて、観測値を復元する。値復元部230は、予測残差と予測値とを合計した和を計算することにより、観測値の復元値を算出する。
観測値が整数値や固定小数点形式で表現された実数値である場合、値復元部230は、整数の足し算を計算することにより、復元値を算出する。
観測値が浮動小数点形式で表現された実数値であり、予測残差算出部225が算出する予測残差が、指数部の予測残差を表わす整数と、仮数部の予測残差を表わす整数と、符号部の予測残差を表わす整数との組である場合、値復元部230は、例えば、復元予測部220が予測した予測値の仮数部を、指数部の予測残差の分だけシフトする。値復元部230は、例えば、指数部の予測残差が正であれば予測値の仮数部を左にシフトし、指数部の予測残差が負であれば予測値の仮数部を右にシフトする。このとき、オーバーフローあるいはアンダーフローしたビットは無視してよい。次に、値復元部230は、シフトした予測値の仮数部と、予測誤差の仮数部とを合計した和を、整数の足し算を使って計算する。値復元部230は、符号部の予測残差が0でない場合、予測値の符号部を反転する。こうして算出した指数部・仮数部・符号部に基づいて、値復元部230は、浮動小数点形式で表現された実数値を復元して、観測値の復元値を得る。これにより、観測値が浮動小数点形式で表現されている場合であっても、桁落ちなどが発生せず、元の観測値とまったく同じ復元値を得ることができる。
値復元部230が復元した観測値は、値記憶部215が記憶して、次の観測値などを予測するために使われる。
【0121】
データ出力部210は、CPU911を用いて、値復元部230が復元した一連の観測値を表わす復元データを生成し、出力する。
【0122】
図19は、この実施の形態におけるデータ圧縮処理S610の流れの一例を示すフローチャート図である。
データ圧縮処理S610において、データ圧縮装置100は、一連の観測値を表わす圧縮データを生成する。データ圧縮処理S610は、観測値取得工程S611と、基準値算出工程S612と、パラメータ算出工程S613と、観測値予測工程S614と、予測残差算出工程S615と、基準値選択工程S616と、基準残差算出工程S617と、符号化工程S618とを有する。データ圧縮装置100は、観測値取得工程S611から処理を開始する。
【0123】
観測値取得工程S611において、データ入力部110は、CPU911を用いて、観測値を入力する。データ記憶部115は、磁気ディスク装置920を用いて、データ入力部110が入力した観測値を記憶する。
データ圧縮装置100は、CPU911を用いて、データ記憶部115が記憶した一連の観測値のなかから、観測値を1つ選択する。すべての観測値が選択済である場合、データ圧縮装置100は、データ圧縮処理S610を終了する。未選択の観測値がある場合、データ圧縮装置100は、未選択の観測値のなかから、先頭の観測値を1つ選択し、基準値算出工程S612へ処理を進める。
【0124】
基準値算出工程S612において、基準値算出部145は、CPU911を用いて、予測残差記憶部140が記憶した予測残差に基づいて、予測残差基準値を算出する。
パラメータ算出工程S613において、パラメータ算出部150は、CPU911を用いて、予測残差記憶部140が記憶した予測残差と、基準値算出工程S612で基準値算出部145が算出した予測残差基準値とに基づいて、符号化パラメータを算出する。
【0125】
観測値予測工程S614において、予測部120は、CPU911を用いて、データ記憶部115が記憶した観測データが表わす一連の観測値のうち、観測値取得工程S611で選択した観測値よりも前の観測値に基づいて、観測値取得工程S611で選択した観測値の予測値を算出する。
予測残差算出工程S615において、予測残差算出部125は、CPU911を用いて、観測値取得工程S611で選択した観測値と、観測値予測工程S614で算出した予測値とに基づいて、予測残差を算出する。予測残差記憶部140は、磁気ディスク装置920を用いて、予測残差算出部125が算出した予測残差を記憶する。
【0126】
基準値選択工程S616において、基準値選択部180は、CPU911を用いて、パラメータ算出工程S613でパラメータ算出部150が算出した符号化パラメータと、予測残差算出工程S615で予測残差算出部125が算出した予測残差とに基づいて、基準値算出工程S612で基準値算出部145が算出した予測残差基準値のなかから、予測残差基準値を選択する。
基準残差算出工程S617において、基準残差算出部185は、CPU911を用いて、予測残差算出工程S615で予測残差算出部125が算出した予測残差と、基準値選択工程S616で基準値選択部180が選択した予測残差基準値とに基づいて、基準残差を算出する。
符号化工程S618において、符号化部190は、CPU911を用いて、パラメータ算出工程S613でパラメータ算出部150が算出した符号化パラメータに基づいて、基準値選択工程S616で基準値選択部180が選択した予測残差基準値を示す基準値インデックスを符号化して、選択基準値符号を生成する。符号化部190は、CPU911を用いて、パラメータ算出工程S613でパラメータ算出部150が算出した符号化パラメータと、基準値選択工程S616で基準値選択部180が選択した予測残差基準値を示す基準値インデックスとに基づいて、基準残差算出工程S617で基準残差算出部185が算出した基準残差を符号化して、基準残差符号を生成する。符号出力部195は、CPU911を用いて、符号化部190が生成した選択基準値符号と基準残差符号との組を、観測値取得工程S611で選択した観測値を表わす符号として出力する。
データ圧縮装置100は、CPU911を用いて、観測値取得工程S611に処理を戻し、次の観測値を選択する。
【0127】
図20は、この実施の形態におけるデータ復元処理S620の流れの一例を示すフローチャート図である。
データ復元処理S620において、データ復元装置200は、データ圧縮装置100が生成した圧縮データから、元の一連の観測値を復元する。データ復元処理S620は、符号取得工程S621と、基準値算出工程S622と、パラメータ算出工程S623と、復号工程S624と、基準値選択工程S625と、予測残差算出工程S626と、観測値予測工程S627と、観測値復元工程S628とを有する。データ復元装置200は、符号取得工程S621から処理を開始する。
【0128】
符号取得工程S621において、符号取得部295は、CPU911を用いて、圧縮データから、1つの観測値を表わす選択基準値符号と基準残差符号との組を取得する。圧縮データに含まれる選択基準値符号と基準残差符号との組がすべて取得済である場合、符号取得部295は、CPU911を用いて、データ復元処理S620を終了する。未取得の組がある場合、符号取得部295は、CPU911を用いて、未取得の組のなかから、先頭の組を1つ取得する。
【0129】
基準値算出工程S622において、復元基準値算出部245は、CPU911を用いて、予測残差記憶部240が記憶した予測残差に基づいて、予測残差基準値を算出する。
パラメータ算出工程S623において、パラメータ算出部250は、CPU911を用いて、予測残差記憶部240が記憶した予測残差と、基準値算出工程S622で復元基準値算出部245が算出した予測残差基準値とに基づいて、符号化パラメータを算出する。
【0130】
復号工程S624において、復号部290は、CPU911を用いて、パラメータ算出工程S623でパラメータ算出部250が算出した符号化パラメータに基づいて、符号取得工程S621で符号取得部295が取得した選択基準値符号を復号して、基準値インデックスを算出する。復号部290は、CPU911を用いて、パラメータ算出工程S623でパラメータ算出部250が算出した符号化パラメータと、算出した基準値インデックスとに基づいて、符号取得工程S621で符号取得部295が取得した基準残差符号を復号して、基準残差を算出する。
基準値選択工程S625において、復元基準値選択部280は、CPU911を用いて、基準値算出工程S622で復元基準値算出部245が算出した予測残差基準値のなかから、復号工程S624で復号部290が算出した基準値インデックスによって示される予測残差基準値を選択する。
予測残差算出工程S626において、予測残差算出部225は、CPU911を用いて、復号部290で復号部290が算出した基準残差と、基準値選択工程S625で復元基準値選択部280が選択した予測残差基準値とに基づいて、予測残差を算出する。予測残差記憶部240は、磁気ディスク装置920を用いて、予測残差算出部225が算出した予測残差を記憶する。
【0131】
観測値予測工程S627において、復元予測部220は、CPU911を用いて、値記憶部215が記憶した観測値に基づいて、符号取得工程S621で符号取得部295が取得した選択基準値符号と基準残差符号との組によって表わされる観測値の予測値を算出する。
観測値復元工程S628において、値復元部230は、CPU911を用いて、予測残差算出工程S626で予測残差算出部225が算出した予測残差と、観測値予測工程S627で復元予測部220が算出した予測値とに基づいて、符号取得工程S621で符号取得部295が取得した選択基準値符号と基準残差符号との組によって表わされる観測値の復元値を算出する。値記憶部215は、磁気ディスク装置920を用いて、値復元部230が復元した観測値を記憶する。データ出力部210は、CPU911を用いて、値復元部230が復元した観測値を出力する。
データ復元装置200は、CPU911を用いて、符号取得工程S621に戻り、次の選択基準値符号と基準残差符号との組を取得する。
【0132】
以上、各実施の形態で説明した具体的な構成は一例であり、例えば、異なる実施の形態で説明した構成を組み合わせたり、重要でない部分の構成を他の構成で置き換えたりした構成であってもよい。
【0133】
以上説明したデータ圧縮装置(100)は、データを処理する処理装置(CPU911)と、予測部(120;予測器10)と、予測残差算出部(125;オフセット量決定部20)と、基準値算出部(145;オフセット量決定部20)と、基準値選択部(180;最小残差選択部40)と、基準残差算出部(185;最小残差選択部40)と、符号化部(190;最小残差選択部40,残差符号化部50)とを有する。
上記予測部は、上記処理装置を用いて、一連の値(観測値)のうち少なくともいずれかの値について、上記一連の値のうち上記値よりも前の値に基づいて上記値を予測することにより、上記値の予測値を算出する。
上記予測残差算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記値と上記予測部が算出した予測値との差を算出することにより、予測残差(予測誤差)を算出する。
上記基準値算出部は、上記処理装置を用いて、上記予測残差算出部が算出した予測残差に基づいて、複数の残差基準値(予測誤差代表値)を算出する。
上記基準値選択部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記基準値算出部が算出した複数の残差基準値のなかから、上記予測残差算出部が算出した予測残差に最も近い残差基準値を選択する。
上記基準残差算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記予測残差算出部が算出した予測残差と上記基準値選択部が選択した残差基準値との差を算出することにより、基準残差(残差)を算出する。
上記符号化部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記値を表わす符号として、上記基準値選択部が上記複数の残差基準値のうちどの残差基準値を選択したかを表わす選択基準値符号(基準値インデックス)と、上記基準残差算出部が算出した基準残差を表わす基準残差符号との組を生成する。
【0134】
これにより、符号化部が符号化する基準残差の絶対値が小さくなるので、デルタ符号などのユニバーサル符号のように符号化する整数の絶対値が小さいほど符号長が短くなる符号化方式で基準残差を符号化することより、圧縮率を高くすることができる。
【0135】
上記データ圧縮装置(100)は、更に、予測残差分類部(オフセット量決定部20)を有する。
上記予測残差分類部は、上記処理装置(CPU911)を用いて、上記予測残差算出部(オフセット量決定部20)が算出した予測残差(予測誤差)を複数のクラスタに分類する。
上記基準値算出部(オフセット量決定部20)は、上記処理装置を用いて、上記予測残差分類部が分類した複数のクラスタそれぞれについて、上記予測残差分類部が上記クラスタに分類した予測残差の代表値を算出することにより、残差基準値(予測誤差代表値)を算出する。
【0136】
これにより、基準値算出部が算出する残差基準値の分布が、予測残差の分布に一致するので、選択基準値符号の冗長性を抑えることができ、圧縮率を高くすることができる。
【0137】
上記予測残差分類部(オフセット量決定部20)は、ケー平均法または非階層型クラスタリングまたは階層型クラスタリングを用いて、上記予測残差算出部(オフセット量決定部20)が算出した予測残差(予測誤差)を複数のクラスタに分類する。
【0138】
これにより、クラスタリングに伴う計算量を少なくすることができるので、処理装置の処理能力などデータ圧縮処理に必要な資源を抑えることができる。
【0139】
上記基準値算出部(オフセット量決定部20)は、上記予測残差分類部(オフセット量決定部20)が上記クラスタに分類した予測残差の平均値または中央値または最頻値を算出して、上記代表値とする。
【0140】
これにより、代表値算出に伴う計算量を少なくすることができるので、処理装置の処理能力などデータ圧縮処理に必要な資源を抑えることができる。
【0141】
上記基準値算出部(145;オフセット量決定部20)は、上記処理装置(CPU911)を用いて、上記一連の値(観測値)のうち上記予測部(120;予測器10)が予測値を算出した値それぞれについて、上記一連の値のうち上記値よりも前の値について上記予測残差算出部(125;オフセット量決定部20)が算出した予測残差(予測誤差)に基づいて、上記複数の残差基準値(予測誤差代表値)を算出する。
【0142】
これにより、復元時には、他の情報を必要とせず、既に復元した値だけに基づいて、基準値算出部145が算出した残差基準値とまったく同じ残差基準値を算出できるので、損失なく値を復元することが可能となる。
【0143】
上記基準値算出部(145;オフセット量決定部20)は、上記処理装置(CPU911)を用いて、上記一連の値(観測値)のうち上記予測部(120;予測器10)が予測値を算出したすべての値について上記予測残差算出部(125;オフセット量決定部20)が算出した予測残差(予測誤差)に基づいて、上記複数の残差基準値(予測誤差代表値)を算出する。
上記符号化部(190;ヘッダ生成部80)は、上記一連の値を表わす符号として、更に、上記基準値算出部が算出した複数の残差基準値を表わす残差基準値符号を生成する。
【0144】
すべての予測残差から残差基準値を算出するので、圧縮率が更に高くなる残差基準値を算出することができる。復号時には、残差基準値符号から復元した残差基準値を使って値を復元するので、まだ復元していない値に基づいて残差基準値が算出されていても、損失なく値を復元することが可能となる。また、復号時に残差基準値を算出する計算が不要となるので、処理装置の処理能力などデータ復元処理に必要な資源を抑えることができる。
【0145】
以上説明したデータ復元装置(200)は、データを処理する処理装置(CPU911)と、符号取得部(295;選択部45,残差復号部55)と、復元予測部(220;予測器15)と、復元基準値選択部(280;選択部45)と、値復元部(230;65)とを有する。
上記符号取得部は、上記処理装置を用いて、一連の値(観測値)のうち少なくともいずれかの値を表わす符号として、複数の残差基準値(予測誤差代表値)のなかからどの残差基準値を選択すべきかを表わす選択基準値符号(基準値インデックス)と、基準残差(残差)を表わす基準残差符号との組を取得する。
上記復元予測部は、上記処理装置を用いて、上記符号取得部が選択基準値符号と基準残差符号との組を取得した値について、上記一連の値のうち上記値よりも前の値に基づいて上記値を予測することにより、上記値の予測値を算出する。
上記復元基準値選択部は、上記処理装置を用いて、複数の残差基準値のなかから、上記符号取得部が取得した選択基準値符号によって示される残差基準値を選択する。
上記値復元部は、上記処理装置を用いて、上記復元予測部が算出した予測値と、上記基準値選択部が選択した残差基準値と、上記符号取得部が取得した基準残差符号が表わす基準残差との合計を算出することにより、上記値を復元した復元値を算出する。
【0146】
これにより、データ圧縮装置100が圧縮した元の値を損失なく復元することができる。
【0147】
以上説明したデータ圧縮装置(100)及びデータ復元装置(200)及びデータ処理システム(データ圧縮記憶システム800)は、コンピュータプログラムをコンピュータが実行することにより実現することができる。
コンピュータをデータ圧縮装置またはデータ復元装置またはデータ処理システムとして機能させるコンピュータプログラムによれば、一連の値を効率よく圧縮して記憶することができる。
【符号の説明】
【0148】
10,15 予測器、11 値記憶部、12 予測値記憶部、20,25 オフセット量決定部、21 オフセット量記憶部、30,35 基準値生成部、40 最小残差選択部、45 選択部、50 残差符号化部、55 残差復号部、65,230 値復元部、70,75 パラメータ記憶部、80 ヘッダ生成部、85 ヘッダ取得部、100 データ圧縮装置、110 データ入力部、115 データ記憶部、120 予測部、125,225 予測残差算出部、140,240 予測残差記憶部、145 基準値算出部、150,250 パラメータ算出部、180 基準値選択部、185 基準残差算出部、190 符号化部、195 符号出力部、200 データ復元装置、210 データ出力部、215 値記憶部、220 復元予測部、245 復元基準値算出部、280 復元基準値選択部、290 復号部、295 符号取得部、301〜304 領域、800 データ圧縮記憶システム、810 観測装置、820 データ記憶装置、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

【特許請求の範囲】
【請求項1】
データを処理する処理装置と、予測部と、予測残差算出部と、基準値算出部と、基準値選択部と、基準残差算出部と、符号化部とを有し、
上記予測部は、上記処理装置を用いて、一連の値のうち少なくともいずれかの値について、上記一連の値のうち上記値よりも前の値に基づいて上記値を予測することにより、上記値の予測値を算出し、
上記予測残差算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記値と上記予測部が算出した予測値との差を算出することにより、予測残差を算出し、
上記基準値算出部は、上記処理装置を用いて、上記予測残差算出部が算出した予測残差に基づいて、複数の残差基準値を算出し、
上記基準値選択部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記基準値算出部が算出した複数の残差基準値のなかから、上記予測残差算出部が算出した予測残差に最も近い残差基準値を選択し、
上記基準残差算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記予測残差算出部が算出した予測残差と上記基準値選択部が選択した残差基準値との差を算出することにより、基準残差を算出し、
上記符号化部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記値を表わす符号として、上記基準値選択部が上記複数の残差基準値のうちどの残差基準値を選択したかを表わす選択基準値符号と、上記基準残差算出部が算出した基準残差を表わす基準残差符号との組を生成することを特徴とするデータ圧縮装置。
【請求項2】
上記データ圧縮装置は、更に、予測残差分類部を有し、
上記予測残差分類部は、上記処理装置を用いて、上記予測残差算出部が算出した予測残差を複数のクラスタに分類し、
上記基準値算出部は、上記処理装置を用いて、上記予測残差分類部が分類した複数のクラスタそれぞれについて、上記予測残差分類部が上記クラスタに分類した予測残差の代表値を算出することにより、残差基準値を算出することを特徴とする請求項1に記載のデータ圧縮装置。
【請求項3】
上記予測残差分類部は、ケー平均法または非階層型クラスタリングまたは階層型クラスタリングを用いて、上記予測残差算出部が算出した予測残差を複数のクラスタに分類することを特徴とする請求項2に記載のデータ圧縮装置。
【請求項4】
上記基準値算出部は、上記予測残差分類部が上記クラスタに分類した予測残差の平均値または中央値または最頻値を算出して、上記代表値とすることを特徴とする請求項2または請求項3に記載のデータ圧縮装置。
【請求項5】
上記基準値算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出した値それぞれについて、上記一連の値のうち上記値よりも前の値について上記予測残差算出部が算出した予測残差に基づいて、上記複数の残差基準値を算出することを特徴とする請求項1乃至請求項4のいずれかに記載のデータ圧縮装置。
【請求項6】
上記基準値算出部は、上記処理装置を用いて、上記一連の値のうち上記予測部が予測値を算出したすべての値について上記予測残差算出部が算出した予測残差に基づいて、上記複数の残差基準値を算出し、
上記符号化部は、上記一連の値を表わす符号として、更に、上記基準値算出部が算出した複数の残差基準値を表わす残差基準値符号を生成することを特徴とする請求項1乃至請求項4のいずれかに記載のデータ圧縮装置。
【請求項7】
データを処理する処理装置と、符号取得部と、復元予測部と、復元基準値選択部と、値復元部とを有し、
上記符号取得部は、上記処理装置を用いて、一連の値のうち少なくともいずれかの値を表わす符号として、複数の残差基準値のなかからどの残差基準値を選択すべきかを表わす選択基準値符号と、基準残差を表わす基準残差符号との組を取得し、
上記復元予測部は、上記処理装置を用いて、上記符号取得部が選択基準値符号と基準残差符号との組を取得した値について、上記一連の値のうち上記値よりも前の値に基づいて上記値を予測することにより、上記値の予測値を算出し、
上記復元基準値選択部は、上記処理装置を用いて、複数の残差基準値のなかから、上記符号取得部が取得した選択基準値符号によって示される残差基準値を選択し、
上記値復元部は、上記処理装置を用いて、上記復元予測部が算出した予測値と、上記復元基準値選択部が選択した残差基準値と、上記符号取得部が取得した基準残差符号が表わす基準残差との合計を算出することにより、上記値を復元した復元値を算出することを特徴とするデータ復元装置。
【請求項8】
請求項1乃至請求項6のいずれかに記載のデータ圧縮装置と、請求項7に記載のデータ復元装置とを有することを特徴とするデータ処理システム。
【請求項9】
データを処理する処理装置を有するコンピュータが実行することにより、上記コンピュータが請求項1乃至請求項6のいずれかに記載のデータ圧縮装置または請求項7に記載のデータ復元装置または請求項8に記載のデータ処理システムとして機能することを特徴とするコンピュータプログラム。
【請求項10】
データを処理する処理装置を有するデータ圧縮装置が、一連の値を表わす圧縮データを生成するデータ圧縮方法において、
上記処理装置が、一連の値のうち少なくともいずれかの値について、上記一連の値のうち上記値よりも前の値に基づいて上記値を予測することにより、上記値の予測値を算出し、
上記処理装置が、上記一連の値のうち上記予測値を算出した値それぞれについて、上記値と上記予測値との差を算出することにより、予測残差を算出し、
上記処理装置が、上記予測残差に基づいて、複数の残差基準値を算出し、
上記処理装置が、上記一連の値のうち上記予測値を算出した値それぞれについて、上記複数の残差基準値のなかから、上記予測残差に最も近い残差基準値を選択し、
上記処理装置が、上記一連の値のうち上記予測値を算出した値それぞれについて、上記予測残差と上記残差基準値との差を算出することにより、基準残差を算出し、
上記処理装置が、上記一連の値のうち上記予測値を算出した値それぞれについて、上記値を表わす符号として、上記複数の残差基準値のうちどの残差基準値を選択したかを表わす選択基準値符号と、上記基準残差を表わす基準残差符号との組を生成することを特徴とするデータ圧縮方法。
【請求項11】
データを処理する処理装置を有するデータ復元装置が、一連の値を表わす圧縮データから、上記一連の値を復元するデータ復元方法において、
上記処理装置が、一連の値のうち少なくともいずれかの値を表わす符号として、複数の残差基準値のなかからどの残差基準値を選択すべきかを表わす選択基準値符号と、基準残差を表わす基準残差符号との組を取得し、
上記処理装置が、上記選択基準値符号と基準残差符号との組を取得した値について、上記一連の値のうち上記値よりも前の値に基づいて上記値を予測することにより、上記値の予測値を算出し、
上記処理装置が、複数の残差基準値のなかから、上記選択基準値符号によって示される残差基準値を選択し、
上記処理装置が、上記復元予測部が算出した予測値と、上記基準値選択部が選択した残差基準値と、上記符号取得部が取得した基準残差符号が表わす基準残差との合計を算出することにより、上記値を復元した復元値を算出することを特徴とするデータ復元方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2012−113657(P2012−113657A)
【公開日】平成24年6月14日(2012.6.14)
【国際特許分類】
【出願番号】特願2010−264322(P2010−264322)
【出願日】平成22年11月26日(2010.11.26)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】