(57)【特許請求の範囲】
【請求項１】
時系列の入力値で構成された入力データから入力値を時刻ごとに取得し、取得した入力値より過去の入力値に基づき所定の予測方法を用いて予測値を時刻ごとに計算し、取得した入力値と計算した予測値との残差を処理装置により時刻ごとに算出する残差算出部と、
それぞれ異なる符号化方法を示す複数の符号化パラメータの各々が示す符号化方法の事前確率を定義する事前確率情報を記憶装置により予め格納する事前確率格納部と、
前記残差算出部により算出された残差より過去の残差を、前記複数の符号化パラメータの各々が示す符号化方法を用いて符号化した場合の当該過去の残差の符号長と、前記事前確率格納部に格納された事前確率情報で定義されている当該符号化方法の事前確率とに基づき、前記残差算出部により算出された残差に対して、前記複数の符号化パラメータのうち、当該過去の残差を符号化した場合に当該過去の残差の符号長が他の符号化方法より短くなる符号化方法を示す符号化パラメータを処理装置により時刻ごとに選択する符号化パラメータ選択部と、
前記残差算出部により算出された残差を時刻ごとに取得し、取得した残差を、前記符号化パラメータ選択部により当該残差に対して選択された符号化パラメータが示す符号化方法を用いて処理装置により符号化して当該残差の符号語を時刻ごとに算出し、算出した符号語を前記入力データの圧縮データとして出力する残差符号化部と
を備えることを特徴とするデータ圧縮装置。
【請求項２】
前記符号化パラメータ選択部は、前記残差算出部により算出された残差より過去の残差を、前記複数の符号化パラメータの各々が示す符号化方法を用いて符号化した場合の当該過去の残差の符号長と、前記事前確率格納部に格納された事前確率情報で定義されている当該符号化方法の事前確率とに基づき、前記残差算出部により算出された残差に対して、前記複数の符号化パラメータのうち、当該過去の残差を符号化した場合に当該過去の残差の符号長が最も短くなる符号化方法を示す符号化パラメータを最適な符号化パラメータとして時刻ごとに推定し、推定した最適な符号化パラメータを選択することを特徴とする請求項１のデータ圧縮装置。
【請求項３】
時系列の入力値で構成された入力データから入力値を時刻ごとに取得し、取得した入力値より過去の入力値に基づき所定の予測方法を用いて予測値を時刻ごとに計算し、取得した入力値と計算した予測値との残差を処理装置により時刻ごとに算出する残差算出部と、
それぞれ異なる符号化方法を示す複数の符号化パラメータの各々が示す符号化方法同士の近似度を定義する近似度情報を記憶装置により予め格納する近似度格納部と、
前記残差算出部により算出された残差に対して、前記複数の符号化パラメータのうち、当該残差より過去の残差を符号化した場合に当該過去の残差の符号長が他の符号化方法より短くなる符号化方法を示す符号化パラメータを処理装置により時刻ごとに選択する符号化パラメータ選択部であって、前記複数の符号化パラメータのうち、前記残差算出部により算出された残差に対して選択対象とする符号化パラメータを、当該残差の直前の残差に対して選択した符号化パラメータが示す符号化方法との近似度として前記近似度格納部に格納された近似度情報で定義されている近似度が所定の範囲内である符号化方法を示す符号化パラメータのみに限定する符号化パラメータ選択部と、
前記残差算出部により算出された残差を時刻ごとに取得し、取得した残差を、前記符号化パラメータ選択部により当該残差に対して選択された符号化パラメータが示す符号化方法を用いて処理装置により符号化して当該残差の符号語を時刻ごとに算出し、算出した符号語を前記入力データの圧縮データとして出力する残差符号化部と
を備えることを特徴とするデータ圧縮装置。
【請求項４】
前記近似度情報は、前記複数の符号化パラメータの各々が示す符号化方法同士の近似度として、前記複数の符号化パラメータの各々が示す符号化方法同士のカルバック・ライブラー情報量を定義する情報であることを特徴とする請求項３のデータ圧縮装置。
【請求項５】
前記複数の符号化パラメータの各々は、符号化方法として、符号化対象となる残差のうち、固定長符号を用いる部分と可変長符号を用いる部分とを示すパラメータであることを特徴とする請求項１から４のいずれかのデータ圧縮装置。
【請求項６】
前記複数の符号化パラメータの各々は、符号化方法として、さらに、前記可変長符号の種別を示すパラメータであることを特徴とする請求項５のデータ圧縮装置。
【請求項７】
前記複数の符号化パラメータの各々は、前記可変長符号の種別として、アルファ符号とガンマ符号とデルタ符号とフィボナッチ符号との少なくともいずれかを示すパラメータであることを特徴とする請求項６のデータ圧縮装置。
【請求項８】
前記複数の符号化パラメータの各々は、前記固定長符号を用いる部分として、前記符号化対象となる残差の下位ビット長を示すパラメータであることを特徴とする請求項５から７のいずれかのデータ圧縮装置。
【請求項９】
処理装置が、時系列の入力値で構成された入力データから入力値を時刻ごとに取得し、取得した入力値より過去の入力値に基づき所定の予測方法を用いて予測値を時刻ごとに計算し、取得した入力値と計算した予測値との残差を時刻ごとに算出し、
記憶装置に、それぞれ異なる符号化方法を示す複数の符号化パラメータの各々が示す符号化方法の事前確率を定義する事前確率情報が予め格納され、
処理装置が、算出した残差より過去の残差を、前記複数の符号化パラメータの各々が示す符号化方法を用いて符号化した場合の当該過去の残差の符号長と、記憶装置に格納された事前確率情報で定義されている当該符号化方法の事前確率とに基づき、算出した残差に対して、前記複数の符号化パラメータのうち、当該過去の残差を符号化した場合に当該過去の残差の符号長が他の符号化方法より短くなる符号化方法を示す符号化パラメータを時刻ごとに選択し、
処理装置が、算出した残差を、当該残差に対して選択した符号化パラメータが示す符号化方法を用いて符号化して当該残差の符号語を時刻ごとに算出し、算出した符号語を前記入力データの圧縮データとして出力することを特徴とするデータ圧縮方法。
【請求項１０】
処理装置が、時系列の入力値で構成された入力データから入力値を時刻ごとに取得し、取得した入力値より過去の入力値に基づき所定の予測方法を用いて予測値を時刻ごとに計算し、取得した入力値と計算した予測値との残差を時刻ごとに算出し、
記憶装置に、それぞれ異なる符号化方法を示す複数の符号化パラメータの各々が示す符号化方法同士の近似度を定義する近似度情報が予め格納され、
処理装置が、算出した残差に対して、前記複数の符号化パラメータのうち、当該残差より過去の残差を符号化した場合に当該過去の残差の符号長が他の符号化方法より短くなる符号化方法を示す符号化パラメータを時刻ごとに選択し、その選択の際に、前記複数の符号化パラメータのうち、算出した残差に対して選択対象とする符号化パラメータを、当該残差の直前の残差に対して選択した符号化パラメータが示す符号化方法との近似度として記憶装置に格納された近似度情報で定義されている近似度が所定の範囲内である符号化方法を示す符号化パラメータのみに限定し、
処理装置が、算出した残差を、当該残差に対して選択した符号化パラメータが示す符号化方法を用いて符号化して当該残差の符号語を時刻ごとに算出し、算出した符号語を前記入力データの圧縮データとして出力することを特徴とするデータ圧縮方法。
【請求項１１】
それぞれ異なる符号化方法を示す複数の符号化パラメータの各々が示す符号化方法の事前確率を定義する事前確率情報を記憶装置により予め格納する事前確率格納部を備えるコンピュータに、
時系列の入力値で構成された入力データから入力値を時刻ごとに取得し、取得した入力値より過去の入力値に基づき所定の予測方法を用いて予測値を時刻ごとに計算し、取得した入力値と計算した予測値との残差を処理装置により時刻ごとに算出する残差算出処理と、
前記残差算出処理により算出された残差より過去の残差を、前記複数の符号化パラメータの各々が示す符号化方法を用いて符号化した場合の当該過去の残差の符号長と、前記事前確率格納部に格納された事前確率情報で定義されている当該符号化方法の事前確率とに基づき、前記残差算出処理により算出された残差に対して、前記複数の符号化パラメータのうち、当該過去の残差を符号化した場合に当該過去の残差の符号長が他の符号化方法より短くなる符号化方法を示す符号化パラメータを処理装置により時刻ごとに選択する符号化パラメータ選択処理と、
前記残差算出処理により算出された残差を時刻ごとに取得し、取得した残差を、前記符号化パラメータ選択処理により当該残差に対して選択された符号化パラメータが示す符号化方法を用いて処理装置により符号化して当該残差の符号語を時刻ごとに算出し、算出した符号語を前記入力データの圧縮データとして出力する残差符号化処理と
を実行させることを特徴とするデータ圧縮プログラム。
【請求項１２】
それぞれ異なる符号化方法を示す複数の符号化パラメータの各々が示す符号化方法同士の近似度を定義する近似度情報を記憶装置により予め格納する近似度格納部を備えるコンピュータに、
時系列の入力値で構成された入力データから入力値を時刻ごとに取得し、取得した入力値より過去の入力値に基づき所定の予測方法を用いて予測値を時刻ごとに計算し、取得した入力値と計算した予測値との残差を処理装置により時刻ごとに算出する残差算出処理と、
前記残差算出処理により算出された残差に対して、前記複数の符号化パラメータのうち、当該残差より過去の残差を符号化した場合に当該過去の残差の符号長が他の符号化方法より短くなる符号化方法を示す符号化パラメータを処理装置により時刻ごとに選択する符号化パラメータ選択処理であって、前記複数の符号化パラメータのうち、前記残差算出処理により算出された残差に対して選択対象とする符号化パラメータを、当該残差の直前の残差に対して選択した符号化パラメータが示す符号化方法との近似度として前記近似度格納部に格納された近似度情報で定義されている近似度が所定の範囲内である符号化方法を示す符号化パラメータのみに限定する符号化パラメータ選択処理と、
前記残差算出処理により算出された残差を時刻ごとに取得し、取得した残差を、前記符号化パラメータ選択処理により当該残差に対して選択された符号化パラメータが示す符号化方法を用いて処理装置により符号化して当該残差の符号語を時刻ごとに算出し、算出した符号語を前記入力データの圧縮データとして出力する残差符号化処理と
を実行させることを特徴とするデータ圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、センサデータ等の数値データの圧縮を行うデータ圧縮装置及びデータ圧縮方法及びデータ圧縮プログラムに関するものである。本発明は、特に値の分散が大きく、時間的にも非定常なデータを対象とした可逆圧縮方式に関するものである。
【背景技術】
【０００２】
近年、センサの小型化や低価格化が進み、散在する装置群や大規模システムに大量のセンサを設置してその状態を連続的に取得・蓄積し、分析や監視に利用したいというニーズが高まっている。しかし、多数のセンサから連続的に到来するストリームデータをそのまま蓄積すると膨大な量になってしまう。このため、大量のセンサストリームデータに対する効率的な圧縮方式が必要となっている。
【０００３】
値の分散が大きく、時間的にも非定常なセンサデータの例を図１３、図１４に示す。図１３は元の入力データの例を示している。横軸は時間、縦軸が浮動小数点数で格納されたセンサデータの計測値を表している。一方、図１４は実際の符号化対象となる残差データの例を示している。残差データとは、元の入力データに対し線形予測を適用し、予測値と実際の値との差分をとることで生成したデータである。時系列データの可逆圧縮では効率の良い圧縮を行うため、元の値をそのまま符号化する代わりに、線形予測の残差を符号化する方法がしばしば用いられる。図１４の例では、元の計測値である単精度３２ビット浮動小数点数の仮数部２３ビットを符号なし整数とみなし、最も単純な線形予測として前時刻の値を用いたものである。残差は一般に、原点を中心とする比較的偏った分布となるが、本データのように変動の激しいデータでは、分散が大きいまま残っている。
【０００４】
このように変動の激しいデータを圧縮するには、以下のような課題を解決する必要がある。
【０００５】
まず第１の課題として、分散が大きい分布に合わせた最適符号化の課題がある。一般に整数の可変長符号としては、公知のガンマ符号やデルタ符号があり、ゼロに近い値に対し短い符号を与えることができる。しかし例えばガンマ符号では、４，０９６以上の値に対しては符号語の長さが２５ビット以上となり、元の２３ビットバイナリよりも長くなってしまうため、図１４に示すように分散が大きいデータの圧縮には適さない。実際の分布に合わせて広範な値域に適切な長さの符号語を割り当てられる符号方式が必要である。
【０００６】
第２の課題として、非定常性に関する課題がある。第１の課題の説明で述べたように、分散の大きいデータの圧縮には、データの分散に合った符号を用意することが重要である。しかし、図１４に例示するように、入力データの分散は一定ではなく、時間により変動することがある。図１４では、グラフ左端と比べ、中央付近から明らかに分散が大きくなっている。このように変動する非定常なデータを圧縮するためには、分散の変化に追従して符号パラメータを適切に調整する必要がある。
【０００７】
従来、変動の激しい時系列データを扱う可変長符号化方式として、非特許文献１に記載のＭＰＥＧ−４・Ａｕｄｉｏ・Ｌｏｓｓｌｅｓｓ・ｃｏｄｉｎｇ・Ｓｙｓｔｅｍがある。
【０００８】
この従来技術では、高変動データの２つの課題である、第１の課題（分散が大きい分布の最適符号化）及び第２の課題（非定常性への対策）に関し、以下に述べる３つの方法がとられている。
【０００９】
まず第１の方法として、分散が大きいデータを符号化するために、公知の可変長符号であるゴロム・ライス符号を用いる方法がとられている。ゴロム・ライス符号は、パラメータを使って符号語の長さを制御する符号化方式である。パラメータで指定したビット位置で符号化する値を分割し、上位ビットに対応する数値をアルファ符号で符号化し、下位ビットは固定長バイナリ符号のままとし、それら２つの符号をつなげて１つの符号語とする。これにより、広い値域に渡って、緩やかに符号長が長くなる符号を定義することができる。符号長の増え方は、パラメータにより制御することができるため、適切にパラメータを与えることにより、分散が大きいデータに対しても、ある程度良い符号を与えることができる。
【００１０】
なお、ゴロム・ライス符号を用いて残差を符号化する方法は特許文献１にも記載されている。
【００１１】
また、第２の方法として、データの分散に合った符号を与えるため、公知のブロック・ギルバート・ムーア符号（エリアス・シャノン・ファノ符号とも呼ばれる）を上記ゴロム・ライス符号と併用する方法がとられている。上記ゴロム・ライス符号では、分散の大きさは対象データに合わせることができるが、分布の形状までは合わせることができない。そこで、符号化しようとする値に対し閾値θを設定し、−θ以上＋θ以下の値（即ち高頻度なためできるだけ短い符号を与えたい値）に対しては、ゴロム・ライス符号の代わりにブロック・ギルバート・ムーア符号に切り替えて符号化する。
【００１２】
第３の方法として、圧縮対象である時系列データを予め複数のブロック（部分時系列）に分割し、各ブロックを定常データとして圧縮処理する方法がとられている。ブロックの分割方法は最大３２等分割の中から決定する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００７−３１８６９１号公報
【非特許文献】
【００１４】
【非特許文献１】Ｔ．  Ｌｉｅｂｃｈｅｎ，  Ｔ．  Ｍｏｒｉｙａ，  Ｎ．  Ｈａｒａｄａ，  Ｙ．  Ｋａｍａｍｏｔｏ  ａｎｄ  Ｙ．  Ｒｅｚｎｉｋ，  “Ｔｈｅ  ＭＰＥＧ−４  Ａｕｄｉｏ  Ｌｏｓｓｌｅｓｓ  Ｃｏｄｉｎｇ  （ＡＬＳ）  Ｓｔａｎｄａｒｄ  Ｔｅｃｈｎｏｌｏｇｙ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓ，”  Ｐｒｅｐｒｉｎｔ  ｐａｐｅｒ  ＃６５８９，  １１９ｔｈ  Ａｕｄｉｏ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｓｏｃｉｅｔｙ  Ｃｏｎｖｅｎｔｉｏｎ，  Ｎｅｗ  Ｙｏｒｋ，  ２００５
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかし、上記従来技術においては以下のような課題があった。
【００１６】
第１に、ゴロム・ライス符号では、符号化対象である残差データが幾何分布をとらない場合、適切な符号を与えることができず、圧縮率が悪くなるという課題（従来の課題１）がある。残差がどのような分布をとるかは、入力データ、符号化対象値の予測（線形予測）の双方に依存し、その差分（残差）が幾何分布をとるとの仮定を置くことはできないから、より多様な分布に対応可能な符号化方式が必要である。
【００１７】
第２に、ゴロム・ライス符号だけでなくブロック・ギルバート・ムーア符号を利用して符号化する場合、時系列中の各値に対し、その値がいずれの方法で符号化されているかを示す補助情報を圧縮データに追加して保存する必要があるため、圧縮率がさほど改善されないという課題（従来の課題２）がある。
【００１８】
第３に、符号長基準による最適なブロック分割方法は、事前に決定することはできないから、何らかの近似的な基準によりブロック分割方法を決定することになる。したがって、非定常性への対応には実質的に限界があり、圧縮率が優れないという課題（従来の課題３）がある。
【００１９】
本発明は、例えば、分散が大きいデータを含む多様な分布のデータや、時間的に非定常なデータに適用可能な、圧縮率の高い可逆圧縮を行うことを目的とする。
【課題を解決するための手段】
【００２０】
本発明の一の態様に係るデータ圧縮装置は、
時系列の入力値で構成された入力データから入力値を時刻ごとに取得し、取得した入力値より過去の入力値に基づき所定の予測方法を用いて予測値を時刻ごとに計算し、取得した入力値と計算した予測値との残差を処理装置により時刻ごとに算出する残差算出部と、
前記残差算出部により算出された残差に対して、それぞれ異なる符号化方法を示す複数の符号化パラメータのうち、当該残差より過去の残差を符号化した場合に当該過去の残差の符号長が他の符号化方法より短くなる符号化方法を示す符号化パラメータを処理装置により時刻ごとに選択する符号化パラメータ選択部と、
前記残差算出部により算出された残差を時刻ごとに取得し、取得した残差を、前記符号化パラメータ選択部により当該残差に対して選択された符号化パラメータが示す符号化方法を用いて処理装置により符号化して当該残差の符号語を時刻ごとに算出し、算出した符号語を前記入力データの圧縮データとして出力する残差符号化部とを備える。
【発明の効果】
【００２１】
本発明の一の態様によれば、分散が大きいデータを含む多様な分布のデータや、時間的に非定常なデータに適用可能な、圧縮率の高い可逆圧縮を行うことが可能となる。
【図面の簡単な説明】
【００２２】
【図１】実施の形態１に係るデータ圧縮装置の構成を示すブロック図。
【図２】実施の形態１に係るデータ圧縮装置のハードウェア構成の一例を示す図。
【図３】実施の形態１に係るデータ圧縮装置の動作を示すフローチャート。
【図４】アルファ符号とバイナリ符号との組み合わせで生成される符号語の長さを示すグラフ。
【図５】ガンマ符号とバイナリ符号との組み合わせで生成される符号語の長さを示すグラフ。
【図６】フィボナッチ符号とバイナリ符号との組み合わせで生成される符号語の長さを示すグラフ。
【図７】実施の形態１に係る符号化パラメータの選択手順を示す図。
【図８】実施の形態１に係るデータ伸張装置の構成を示すブロック図。
【図９】実施の形態１に係るデータ伸張装置の動作を示すフローチャート。
【図１０】実施の形態２に係るデータ圧縮装置の構成を示すブロック図。
【図１１】実施の形態３に係るデータ圧縮装置の構成を示すブロック図。
【図１２】実施の形態３に係る符号化パラメータの選択手順を示す図。
【図１３】入力データの例を示すグラフ。
【図１４】残差データの例を示すグラフ。
【発明を実施するための形態】
【００２３】
以下、本発明の実施の形態について、図を用いて説明する。
【００２４】
実施の形態１．
図１は、本実施の形態に係るデータ圧縮装置１００の構成を示すブロック図である。
【００２５】
図１において、データ圧縮装置１００は、符号化対象値予測部１１０（残差算出部）と、整数可変長符号化部１２０及び符号化パラメータ予測部１３０からなる符号化パラメータ選択部１９０と、残差符号化部１４０とを備える。また、図示していないが、データ圧縮装置１００は、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアはデータ圧縮装置１００の各部によって利用される。例えば、処理装置は、データ圧縮装置１００の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、そのデータや情報を記憶するために利用される。また、入力装置は、そのデータや情報を入力するために、出力装置は、そのデータや情報を出力するために利用される。
【００２６】
符号化対象値予測部１１０は、例えば入力装置を介して又は記憶装置から、入力データ１０１を取得する。入力データ１０１は、時系列の入力値で構成されたデータである。入力データ１０１としては、例えば、図１３に示したセンサデータを用いることができる。符号化対象値予測部１１０は、入力データ１０１から入力値を時刻ごとに取得する。符号化対象値予測部１１０は、入力値を取得する度に、取得した入力値より過去の入力値に基づき、所定の予測方法を用いて予測値を時刻ごとに計算する。過去の入力値としては、例えば、直前の１つの入力値を用いることができるが、直前より前の入力値を用いてもよいし、２つ以上の入力値を用いてもよい。予測方法として、以下では、線形予測法を用いるものとするが、他の予測方法を用いてもよい。符号化対象値予測部１１０は、予測値を計算する度に、取得した入力値と計算した予測値との残差を処理装置により時刻ごとに算出する。
【００２７】
このように、符号化対象値予測部１１０は、符号化対象である入力データ１０１を受け取り、線形予測により入力データ１０１の各値を予測する。符号化対象値予測部１１０は、得られた予測値と元の値の差分（残差）を、元の値に代わる新たな符号化対象として出力する。
【００２８】
符号化パラメータ選択部１９０は、符号化対象値予測部１１０により算出された残差に対して、複数の符号化パラメータのうち、１つの符号化パラメータを処理装置により時刻ごとに選択する。複数の符号化パラメータは、それぞれ異なる符号化方法（符号モデル）を示すパラメータである。各符号化パラメータは、符号化方法として、例えば、符号化対象となる残差のうち、固定長符号を用いる部分と可変長符号を用いる部分とを示す。各符号化パラメータは、以下では、固定長符号を用いる部分として、符号化対象となる残差の下位ビット長を示すことにより、固定長符号を用いる下位ビット列と可変長符号を用いる上位ビット列とを示すものとするが（後述する第１のパラメータ）、他の方法により固定長符号を用いる部分と可変長符号を用いる部分とを示してもよい。また、各符号化パラメータは、以下では、可変長符号を用いる部分について、可変長符号の種別も示すものとするが（後述する第２のパラメータ）、可変長符号の種別が固定あるいは別の方法で定められる場合には、可変長符号の種別を示さなくてもよい。可変長符号の種別としては、例えば、アルファ符号とガンマ符号とデルタ符号とフィボナッチ符号との少なくともいずれかが用いられる。
【００２９】
符号化パラメータ選択部１９０によって選択される符号化パラメータは、複数の符号化パラメータのうち、符号化対象となる残差より過去の残差を符号化した場合に当該過去の残差の符号長（符号語の長さ）が他の符号化方法より短くなる符号化方法を示す符号化パラメータである。望ましくは、複数の符号化パラメータのうち、当該残差より過去の残差を符号化した場合に当該過去の残差の符号長が最も短くなる符号化方法を示す符号化パラメータである。そのため、符号化パラメータ選択部１９０は、符号化対象値予測部１１０により算出された残差に対して、複数の符号化パラメータのうち、当該残差より過去の残差を符号化した場合に当該過去の残差の符号長が最も短くなる符号化方法を示す符号化パラメータを最適な符号化パラメータとして時刻ごとに推定し、推定した最適な符号化パラメータを選択する。過去の残差として、以下では、直前の３つの残差を用いるものとするが（後述する残差履歴）、直前より前の残差を用いてもよいし、２つ以下又は４つ以上の残差を用いてもよい。
【００３０】
符号化パラメータ選択部１９０において、整数可変長符号化部１２０は、第１のパラメータとして下位ビット長を、第２のパラメータとして公知のアルファ符号、ガンマ符号、デルタ符号、フィボナッチ符号の少なくとも１つを指定可能な可変長符号化方法識別子を受け取る。また、整数可変長符号化部１２０は、残差の入力を受け付ける。整数可変長符号化部１２０は、入力された残差を、第１のパラメータが示す下位ビット長の位置で上位ビットデータと下位ビットデータに分割する。整数可変長符号化部１２０は、当該上位ビットデータを、第２のパラメータが示す可変長符号化方法識別子に対応する方法で符号化し、当該下位ビットデータは固定長バイナリ符号のままとし、当該上位ビットデータの符号と当該下位ビットデータの符号とを合わせて、入力された残差の符号語を生成して返す。
【００３１】
符号化パラメータ選択部１９０において、符号化パラメータ予測部１３０は、符号化対象値予測部１１０から出力された各残差に対し、第１のパラメータの各候補と、第２のパラメータの各候補とを指定して、先行する残差履歴を整数可変長符号化部１２０に送って符号長を求める。符号化パラメータ予測部１３０は、整数可変長符号化部１２０から得られた符号語の長さに基づく評価値が最良となる第１のパラメータと第２のパラメータとを決定する。
【００３２】
残差符号化部１４０は、符号化対象値予測部１１０により算出された残差を時刻ごとに取得し、取得した残差を、符号化パラメータ選択部１９０により当該残差に対して選択された符号化パラメータが示す符号化方法を用いて処理装置により符号化する。これにより、残差符号化部１４０は、当該残差の符号語を時刻ごとに算出する。残差符号化部１４０は、算出した符号語を処理装置により時系列で連結して残差符号列データ１０２を生成する。残差符号化部１４０は、残差符号列データ１０２を入力データ１０１の圧縮データとして、例えば出力装置を介して出力する。なお、本実施の形態において、残差符号化部１４０は、符号化パラメータ選択部１９０の整数可変長符号化部１２０を用いて符号化処理を実行する（整数可変長符号化部１２０に残差の符号語を算出させる）ものとするが、独自に符号化処理を実行してもよい。
【００３３】
このように、残差符号化部１４０は、符号化パラメータ選択部１９０の符号化パラメータ予測部１３０により決定された第１のパラメータと第２のパラメータと、符号化対象値予測部１１０により算出された残差とを、符号化パラメータ選択部１９０の整数可変長符号化部１２０に送り、得られた残差の符号語を残差符号列データ１０２として出力する。
【００３４】
図２は、データ圧縮装置１００のハードウェア構成の一例を示す図である。
【００３５】
図２において、データ圧縮装置１００は、コンピュータであり、ＬＣＤ９０１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ９０６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ９０１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス９０３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【００３６】
データ圧縮装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、処理装置の一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ９０６、ＨＤＤ９２０（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ又はその他の記憶媒体が用いられてもよい。
【００３７】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５は、入力装置の一例である。また、通信ボード９１５、ＬＣＤ９０１、プリンタ９０６は、出力装置の一例である。
【００３８】
通信ボード９１５は、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信ボード９１５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００３９】
ＨＤＤ９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ９１１により読み出され実行される。ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ９１４やＨＤＤ９２０等の記憶媒体に記憶される。ＲＡＭ９１４やＨＤＤ９２０等の記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００４０】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ９１４等のメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、ＨＤＤ９２０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス９１２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【００４１】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００４２】
図３は、データ圧縮装置１００の動作（本実施の形態に係るデータ圧縮方法、本実施の形態に係るデータ圧縮プログラムの処理手順）を示すフローチャートである。
【００４３】
図３において、本実施の形態に係るデータ圧縮装置１００の特長は、符号モデル（符号化方法）のパラメータを決定するステップ（ステップＳ１０４）を、前述した従来技術のようにバッチ的に実施するのではなく、時系列中の各残差データに対する符号化ループ（ステップＳ１０２〜Ｓ１０５）の中で実行する点である。本実施の形態では、この特長により、符号モデルを逐次評価して変動するデータに追従することが可能となっている。
【００４４】
まずステップＳ１０１では、データ圧縮装置１００が、入力データ１０１のサイズ（時系列の長さ）Ｎを圧縮データ（残差符号列データ１０２）の先頭に固定長バイナリ形式で保存する。
【００４５】
ステップＳ１０２〜Ｓ１０５では、データ圧縮装置１００が、入力データ１０１の各値（時刻ごとの入力値）に対してループ処理を行う。
【００４６】
ステップＳ１０２では、符号化対象値予測部１１０が、全ての値に対し処理が完了したかを処理装置により判定する。完了していればループを抜け、処理を終了する。完了していなければステップＳ１０３に進む。
【００４７】
ステップＳ１０３では、符号化対象値予測部１１０が、入力データ１０１に対し線形予測を処理装置により行い、元のデータから予測値を差し引いた残差データに変換する。
【００４８】
ステップＳ１０４では、符号化パラメータ選択部１９０が、残差の履歴を使って最良の符号モデルを処理装置により予測する。即ち、符号化パラメータ選択部１９０が、符号モデルのパラメータを処理装置により決定する。
【００４９】
ステップＳ１０５では、残差符号化部１４０が、ステップＳ１０３で得られた残差データから残差を１つ（即ち、符号化対象値を）取り出し、ステップＳ１０４で決定されたパラメータを用いて実際に符号化を処理装置により行う。ステップＳ１０５の後はステップＳ１０２の終了判定に戻る。
【００５０】
次に、データ圧縮装置１００の各部（図１に示した各ブロック）の動作の詳細について説明する。
【００５１】
以下、符号化対象値予測部１１０の動作の詳細について説明する。
【００５２】
符号化対象値予測部１１０は、符号化対象である入力データ１０１を受け取り、線形予測により入力データ１０１の各値（時刻ごとの入力値）を予測する。
【００５３】
線形予測は下記の式（１）で表され、時刻ｔにおける入力値ｘｔを直前のＴ個の値ｘｔ−１，・・・，ｘｔ−Ｔの線形和で予測する。ｘ￣ｔ（ｘの上にバー、右下にｔ）はｘｔの予測値を表し、ａｉはｘｔ−ｉの重み係数（線形予測パラメータ）を表す。重み係数の値は入力データ１０１を基に、予測誤差の期待値が最小となるように決定する（パラメータ推定）。パラメータ推定については特許文献１等に詳述されており、ここでは説明を省略する。最も単純な線形予測では、Ｔ＝１、ａｉ＝−１として直前の値ｘｔ−１を予測値として使う。この場合はパラメータ推定を省略することができる。なお、時系列の先頭データにおいて存在しない時刻の値｛ｘｔ｜ｔ＜１｝を参照するときは０を用いることとする。
【００５４】
【数１】
0005570409.tif 000002
【００５５】
線形予測による予測結果ｘ￣ｔ（ｘの上にバー、右下にｔ）と実際の値ｘｔとの残差ｒｔを下記の式（２）により求め、この残差を元の値に代わる新たな符号化対象値として出力する。
【００５６】
【数２】
0005570409.tif 000003
【００５７】
以上説明した処理（ステップＳ１０３に相当する）が符号化対象値予測部１１０によって行われる。
【００５８】
ここで、元の入力値ｘｔが整数でなく浮動小数点数である場合、データ圧縮装置１００は、浮動小数点数を構成する指数部、符号部、仮数部のそれぞれを整数とみなして可逆圧縮を行う。例えば、ＩＥＥＥ・７５４形式の４バイト単精度浮動小数点数は、指数部８ビット、符号部１ビット、仮数部２３ビットで構成される。符号化対象値予測部１１０は、各構成要素を符号なし整数として扱い、線形予測を適用する。構成要素のうち、指数部及び符号部は一般に時系列において連続性を持って変化する（ないしほとんど変化しない）ため、線形予測による残差は０又はそれに近い整数となることが期待される。よって、データ圧縮装置１００は、指数部及び符号部については、公知のガンマ符号、デルタ符号、ランレングス符号等を適用すればよい。これにより、圧縮処理を部分的に容易（単純）なものとすることができるため、処理効率が上がる。一方、仮数部２３ビットは、元の値の精度や動きが最も反映される要素であるため、その予測は難しい。元の値の変動が激しい場合、残差は最大−２２３〜＋２２３の幅を持って大きく動く。この場合、単純にガンマ符号やデルタ符号を適用しても、元の２３ビットより長い符号語となってしまうため、分布に合った可変長符号モデルが必要となる。そこで、データ圧縮装置１００は、仮数部については、これを整数とみなして以下に説明する圧縮処理を行う。
【００５９】
以下、整数可変長符号化部１２０の動作の詳細について説明する。
【００６０】
整数可変長符号化部１２０では、符号化対象である整数（残差）を入力する際、２つのパラメータを指定することにより、所望の分布を符号化するのに適当な可変長符号語を生成する。第１のパラメータは下位ビットの長さである。第２のパラメータは上位ビットに対する可変長符号化方法の識別子である。ここでは一例として、この識別子により公知のアルファ符号、ガンマ符号、フィボナッチ符号の３つが指定できるようになっている。ただし、これに限定するものではなく、例えばフィボナッチ符号の代わりに公知のデルタ符号を用いてもよい。なお、本例における可変長符号の種別は、上位ビットにアルファ符号を指定した場合には公知のゴロム・ライス符号に対応し、ガンマ符号を指定した場合には公知の指数ゴロム符号に対応する。
【００６１】
符号化は以下のようにして行う。ここでは符号化対象である整数をｘ、第１のパラメータで指定される下位ビット長をｋとする。まず、ｘは負や０の値をとり得るため、下記の式（３）に定義を示す関数Ｐｏｓ（ｘ）により正の整数に変換し、アルファ符号やガンマ符号の定義域に合うようにする。ただし、フィボナッチ符号を用いる場合には定義域が０以上なので、下記の式（４）で変換する。
【００６２】
【数３】
0005570409.tif 000004
【００６３】
次に、Ｐｏｓ（ｘ）で得られた正整数ｘに対し、下記の式（５）で定義される関数Ｈｉ（ｘ，ｋ）及び下記の式（６）で定義されるＬｏｗ（ｘ）を適用し、上位ビット整数及び下位ビット整数を得る。式（５）中の（ｘ＋２ｋ−１）／２ｋをフロア関数の括弧で囲んだ部分（即ち、右辺）は括弧内の値を超えない最大の整数を表す。式（５）によりｘをｋビットだけ下位側にシフトした値を得る。なお、式（５）、式（６）で下位ビット長ｋの半分だけ値をオフセットしているのは、正負領域ができるだけ対称になるようにするためである。
【００６４】
【数４】
0005570409.tif 000005
【００６５】
正値への変換Ｐｏｓ（ｘ）と組み合わせて得られる上位ビット値Ｈｉ（Ｐｏｓ（ｘ），ｋ）は、第２のパラメータで指定される可変長符号（アルファ符号／ガンマ符号／フィボナッチ符号）により符号化する。下位ビット値Ｌｏｗ（Ｐｏｓ（ｘ））は、ｋビットの固定長バイナリ符号により符号化する。得られた２つの符号語を並べて（連結して）、入力された整数ｘの符号語とする。
【００６６】
このようにして得られる符号語の長さを図４〜図６に示す。図４は、アルファ符号とバイナリ符号との組み合わせで生成される符号語の長さを示すグラフである。図５は、ガンマ符号とバイナリ符号との組み合わせで生成される符号語の長さを示すグラフである。図６は、フィボナッチ符号とバイナリ符号との組み合わせで生成される符号語の長さを示すグラフである。
【００６７】
図４〜図６において、横軸は符号化対象値ｘを、縦軸は符号語の長さである。図４は、可変長符号としてアルファ符号を用い、下位ビット長として０ビット／４ビット／８ビットを指定した場合に得られる符号語の長さを示している。図５は、可変長符号としてガンマ符号を用い、下位ビット長として０ビット／４ビット／８ビットを指定した場合に得られる符号語の長さを示している。図６は、可変長符号としてフィボナッチ符号を用い、下位ビット長として０ビット／４ビット／８ビットを指定した場合に得られる符号語の長さを示している。
【００６８】
このように２つのパラメータ（第１及び第２のパラメータ）を用いることにより、様々な特性を持つ符号モデルを構成することができる。したがって、これらの符号モデルのバリエーションから実際の符号化対象の分布に合うものを選択すれば、単一の符号モデルを適用する方式よりも高い圧縮率を得ることができる。なお、グラフではそれぞれ０ビット／４ビット／８ビットの３種類のみを例示しているが、実際には０ビット（下位ビット固定長バイナリ符号を使わない）〜２３ビット（固定長バイナリ符号だけを使い、可変長符号を使わない）の２４種類を用いる。
【００６９】
以上説明した処理が整数可変長符号化部１２０によって行われる。
【００７０】
以下、符号化パラメータ予測部１３０の動作の詳細について説明する。
【００７１】
符号化パラメータ予測部１３０は、各残差を符号化するための符号化パラメータを、先行する残差履歴に基づいて決定する。
【００７２】
図７は、符号化パラメータ予測部１３０による符号化パラメータの選択手順を示す図である。
【００７３】
図７において、左端のグラフは残差の時系列を示している。●（黒丸）、×（バツ）、○（白丸）で示す点が残差である。処理は左の残差から右側へ向かって時間順に１つずつ進んで行く。●（黒丸）の残差は符号化が完了しており、×（バツ）と○（白丸）はまだ符号化していない残差である。これから×（バツ）の残差を符号化しようとしており、符号化パラメータ予測部１３０は、×（バツ）を符号化するための符号化パラメータを決定しようとしている。
【００７４】
符号化パラメータ予測部１３０の特長は、符号化パラメータの決定を逐次的かつ予測的に行うことである。即ち、符号化パラメータ予測部１３０は、符号化パラメータを、符号化対象値それぞれに対し毎時刻決定し直す（逐次的）。これにより、非定常なデータの任意時刻の変動に追従することができる。
【００７５】
また、符号化パラメータ予測部１３０は、符号化パラメータを図７において網掛けで示す符号化済みの残差から決定する（予測的）。網掛けの中には現在の符号化対象値（の残差）が含まれていないことに注意されたい。このように伸張（圧縮と逆の処理）時も参照可能な値だけを使って符号化パラメータを決定することにより、逐次的にパラメータを変更してデータの変動に追従しても、追従した結果を補助情報として圧縮データに保存する必要がない、というメリットが得られる。なお、このように履歴を使ったパラメータ決定は、厳密には現在の対象値に最適なパラメータを決定していることにはならないが、分散が連続的に変化すると仮定するなら準最適なパラメータを決定することが可能である。即ち、最適な符号化パラメータを推定することができる。
【００７６】
パラメータ決定の目的は、図７の中央の３枚グラフ（左から順に図４〜図６のグラフに対応しており、図中では３枚×３本だが実際は前述の通り３枚×２４本）に示した符号モデルの中から最も履歴に合うモデルを選択することである。これは、網掛けに入っている３点の残差を、それぞれのモデルで符号化したときの、符号長の総和を比較することにより行う。
【００７７】
モデル選択は具体的には下記の式（７）により、モデルｍの中で履歴Ｘｈｉｓｔに対し最尤のモデルｍを選択することにより実現する。式（７）は最終的には、モデルが値ｘに与える対数尤度ｌｏｇ（ｐ（ｘ｜ｍ））の総和とモデルの事前確率ｌｏｇ（ｐ（ｍ））の和により求められる。これらのうち、第１項（対数尤度の総和）はｘの情報量であり、値ｘをモデルｍで符号化したときの符号長（Ｃｏｄｅｌｅｎ）により下記の式（８）で与える。第２項（事前確率）は任意に与えてよく、例えば式（９）のように全てのモデルに対し一律に定数１／Ｍ（Ｍはモデルの種類数）を与えてこの項を消してしまい、履歴だけでｍ＊を決定するようにしてもよい。
【００７８】
【数５】
0005570409.tif 000006
【００７９】
以上説明した処理（ステップＳ１０４に相当する）が符号化パラメータ予測部１３０によって行われることにより、履歴に対し最尤のモデルを選択することができる。
【００８０】
以下、残差符号化部１４０の動作の詳細について説明する。
【００８１】
残差符号化部１４０は、新たな残差を１つ受け取り、符号化パラメータ予測部１３０で決定された最適なモデルのパラメータを用いて整数可変長符号化部１２０を呼び出し、得られた符号語を出力する。この出力が最終的にデータ圧縮装置１００から出力される圧縮後データ（残差符号列データ１０２）となる。なお、前述したように、このデータの先頭には、入力データ１０１のサイズを示す値が含まれている。
【００８２】
以上説明した処理（ステップＳ１０５に相当する）が残差符号化部１４０によって行われる。
【００８３】
図８は、本実施の形態に係るデータ伸張装置１００ａの構成を示すブロック図である。
【００８４】
図８において、データ伸張装置１００ａは、データ圧縮装置１００と同様の符号化対象値予測部１１０（残差算出部）と、整数可変長符号化部１２０及び符号化パラメータ予測部１３０からなる符号化パラメータ選択部１９０とを備えるほか、残差符号化部１４０に代えて、残差復号化部１４０ａを備える。また、図示していないが、データ伸張装置１００ａは、データ圧縮装置１００と同様に、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。
【００８５】
図９は、データ伸張装置１００ａの動作（本実施の形態に係るデータ伸張方法、本実施の形態に係るデータ伸張プログラムの処理手順）を示すフローチャートである。
【００８６】
データ圧縮装置１００による圧縮処理は可逆圧縮であるため、図９において、データ伸張装置１００ａは、圧縮データ（残差符号列データ１０２）から元の入力データ１０１を損失なく伸張することができる。
【００８７】
ステップＳ１０１ａでは、データ伸張装置１００ａが、圧縮データ（残差符号列データ１０２）の先頭から入力データ１０１のサイズ（時系列の長さ）Ｎを読み出す。このサイズは前述の通り固定長バイナリデータとして圧縮データ（残差符号列データ１０２）に保存されているため特段の伸張処理は不要である。
【００８８】
ステップＳ１０２ａ以降では、データ伸張装置１００ａが、Ｎ個の符号語の伸張処理を行う。
【００８９】
ステップＳ１０２ａでは、残差復号化部１４０ａが、Ｎ個のデータの伸張処理が完了したかを処理装置によりカウントして、終了判定をしている。完了していなければステップＳ１０３に進む。
【００９０】
ステップＳ１０３では、符号化対象値予測部１１０が、次に伸張する値を、伸張済みの値（入力値）を基に処理装置により予測して予測値を得る。予測方法は圧縮時と同じであるため、説明を省略する。
【００９１】
ステップＳ１０４では、符号化パラメータ選択部１９０が、伸張済みの値を基に符号モデルを処理装置により選択する。このモデル選択処理も圧縮時と同じであるため、説明を省略する。
【００９２】
ステップＳ１０５ａでは、残差復号化部１４０ａが、残差を圧縮データ（残差符号列データ１０２）から処理装置により取り出す。例えばステップＳ１０４で選択された符号モデルが、上位ビットの圧縮にガンマ符号を、下位ビットに４ビットバイナリ符号を用いるモデルである場合を考える。ガンマ符号は可変長符号であるが、圧縮データ（残差符号列データ１０２）から取り出した残差（符号語）の先頭から１ビットずつ読み込んで行き、１が出るまで読み込めば、ガンマ符号で符号化された部分（符号語）の長さを知ることができる。後は残りのビット数を読み込んで整数ｓに復号する。得られた整数ｓは、前述のように式（３）による正数化処理と、式（５）によるオフセット付き上位ビット抽出処理がかかっているので、まず、式（５）の逆変換によりｓ’＝ｓ×２４−２４−１を得る。次に式（３）に従い、ｓ’が１ならばｓ”＝０、それ以外の奇数ならば、ｓ”＝（ｓ’−１）／２を、偶数ならばｓ”＝ｓ’／２を得る。得られたｓ”は、圧縮前の値の下位４ビットを０でマスクした値になっている。次に、圧縮データから４ビットバイナリデータを読み出す。得られた値ｒは圧縮前の値の下位ビットが表す値になっている。したがって圧縮前の値（入力値）をｒ＋ｓ”として得ることができる。
【００９３】
なお、残差復号化部１４０ａは、上位ビットの符号化にガンマ符号ではなくデルタ符号、アルファ符号を用いる場合も上記と同様にして復号することができる。フィボナッチ符号の場合は、先頭から１１が出現するまでのビット列が符号語になっており、そこまでを読み込んで復号すればよい。これらはいずれも公知の符号・復号処理であるため、ここでは説明を省略する。
【００９４】
以上のようにして、データ伸張装置１００ａは、データ圧縮装置１００で圧縮したデータを損失なく伸張することができる。
【００９５】
以上述べたように、本実施の形態のデータ圧縮装置１００は、アルファ符号、ガンマ符号、デルタ符号、フィボナッチ符号といった任意の可変長符号と、任意の長さのバイナリ符号とを組み合わせて得られる、多様な可変長符号モデルの中から自動的に最適な符号モデルを決定して用いる。このため、前述した従来の課題１を解決し、種々の分布のデータに適用可能なデータ圧縮装置１００を得ることができる。
【００９６】
また、本実施の形態のデータ圧縮装置１００は、伸張時にも参照可能な履歴を使って符号モデルの選択を行うため、時系列中の値ごとにモデルを切り換えても、圧縮データ中に補助情報を保存しなくてよい。このため、前述した従来の課題２を解決し、圧縮率を向上させることが可能である。
【００９７】
さらに、本実施の形態のデータ圧縮装置１００は、時系列データの各値において最適な符号モデルを選択しており、非定常なデータであってもその変動に逐次追従することが可能である。このため、前述した従来の課題３を解決し、優れた圧縮率を得ることが可能である。
【００９８】
以上説明したように、本実施の形態に係るデータ圧縮装置１００は、可変長符号モデルの予測型逐次選択を行うことができる。データ圧縮装置１００において、符号化対象値予測部１１０は、符号化対象である入力データ１０１の各数値に対し、当該数値に先行する履歴値に基づいて当該数値を予測し、予測結果を当該数値と比較して整数の残差を得て、当該残差を新たな符号化対象として入力データ１０１を置き換える。整数可変長符号化部１２０は、整数の符号化対象値と符号化パラメータを受け取り、当該符号化対象値に対し、当該符号化パラメータに従って異なる長さの符号語を生成する。符号化パラメータ予測部１３０は、符号化パラメータの候補を予め与えられて有し、上記新たな符号化対象である各残差に対し、当該残差に先行する残差履歴を、符号化パラメータの候補とともに整数可変長符号化部１２０へ送って当該残差履歴の符号長を求め、当該符号長に基づいて最良の符号化パラメータを決定する。残差符号化部１４０は、符号化パラメータ予測部１３０により決定された最良の符号化パラメータと、符号化対象である各残差を、整数可変長符号化部１２０へ送って、得られた符号語を出力データ（残差符号列データ１０２）とする。
【００９９】
また、本実施の形態に係るデータ圧縮装置１００は、整数の２パラメータ可変長符号化を行うことができる。データ圧縮装置１００において、整数可変長符号化部１２０は、符号化パラメータとして少なくとも下位ビット長を、望ましくはさらに公知のアルファ符号、ガンマ符号、デルタ符号、フィボナッチ符号の少なくとも１つを指定可能な可変長符号化方法識別子とを受け取る。整数可変長符号化部１２０は、入力された符号化対象値を当該下位ビット長の位置で上位ビットデータと下位ビットデータに分割し、当該上位ビットデータを当該可変長符号化方法識別子が対応する符号化方法で符号化し、当該下位ビットデータは固定長バイナリ符号のままとし、当該上位ビットデータの符号語と当該下位ビットデータの符号語を合わせて当該符号化対象値の符号語とする。
【０１００】
また、本実施の形態に係るデータ圧縮装置１００は、浮動小数点の仮数部をターゲットとすることができる。符号化対象である入力データ１０１が浮動小数点数データである場合、符号化対象値予測部１１０において生成する整数の残差は、浮動小数点数の仮数部に対する予測結果と入力データ１０１の差分を少なくとも含む。
【０１０１】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【０１０２】
図１０は、本実施の形態に係るデータ圧縮装置１００の構成を示すブロック図である。
【０１０３】
図１０において、データ圧縮装置１００は、さらに、事前確率格納部１５０を備える。
【０１０４】
事前確率格納部１５０は、各符号化パラメータが示す符号化方法の事前確率を定義する事前確率情報を記憶装置により予め格納する。
【０１０５】
本実施の形態において、符号化パラメータ選択部１９０は、符号化対象値予測部１１０により算出された残差より過去の残差を、各符号化パラメータが示す符号化方法を用いて符号化した場合の当該過去の残差の符号長と、事前確率格納部１５０に格納された事前確率情報で定義されている当該符号化方法の事前確率とに基づき、最適な符号化パラメータを時刻ごとに推定する。
【０１０６】
例えば、符号化パラメータ選択部１９０において、符号化パラメータ予測部１３０が、前述した式（７）により、モデルｍの中で履歴Ｘｈｉｓｔに対し最尤のモデルｍを選択する場合、符号化パラメータ予測部１３０は、第２項（事前確率）に、事前確率格納部１５０に格納された事前確率情報で定義されているモデルｍの事前確率を適用する。このとき、例えば、式（１０）、式（１１）のようにして開発用データＸｄｅｖにおける符号長の比を用いて事前確率を与えることができる。
【０１０７】
【数６】
0005570409.tif 000007
【０１０８】
なお、本実施の形態において、データ圧縮装置１００に対応するデータ伸張装置１００ａは、データ圧縮装置１００と同様に、事前確率格納部１５０を備えることになる。データ伸張装置１００ａの符号化対象値予測部１１０の動作については、データ圧縮装置１００の符号化対象値予測部１１０と同様である。
【０１０９】
以上説明したように、本実施の形態に係るデータ圧縮装置１００は、履歴が短いときも事前確率でロバストな圧縮処理を行うことができる。データ圧縮装置１００において、事前確率格納部１５０は、符号化パラメータ候補に対する事前確率を予め与えられて格納する。符号化パラメータ予測部１３０は、残差履歴の符号長と、符号化パラメータ候補の事前確率とを用いて最良の符号化パラメータを決定する。
【０１１０】
実施の形態３．
本実施の形態について、主に実施の形態１との差異を説明する。
【０１１１】
図１１は、本実施の形態に係るデータ圧縮装置１００の構成を示すブロック図である。
【０１１２】
図１１において、データ圧縮装置１００は、さらに、パラメータ間距離格納部１６０（近似度格納部）を備える。
【０１１３】
パラメータ間距離格納部１６０は、各符号化パラメータが示す符号化方法同士の近似度を定義する近似度情報を記憶装置により予め格納する。各符号化パラメータが示す符号化方法同士の近似度として、以下では、各符号化パラメータが示す符号化方法同士のカルバック・ライブラー情報量を用いるものとするが、他の方法により近似度を定義してもよい。
【０１１４】
本実施の形態において、符号化パラメータ選択部１９０は、符号化対象値予測部１１０により算出された残差に対して選択対象とする符号化パラメータを、当該残差の直前の残差に対して選択した符号化パラメータが示す符号化方法との近似度としてパラメータ間距離格納部１６０に格納された近似度情報で定義されている近似度が所定の範囲内である符号化方法を示す符号化パラメータのみに限定する。
【０１１５】
例えば、実施の形態１では、符号化パラメータ選択部１９０において、符号化パラメータ予測部１３０が、全てのモデル候補を対象にｐ（ｍ｜Ｘｈｉｓｔ）を評価して最尤モデルを決定しているが、本実施の形態では、以下のようにして各時刻で探索するモデルを限定するため、より少ない計算量でモデル選択処理を実行することができる。
【０１１６】
図７の左端のグラフにおいて、現在の符号化対象値と、履歴として使う残差の領域とを１つずつ時間軸上で（右に）ずらしていく場合、各時刻における履歴の分散は、連続的に変化すると仮定することができる。このとき、各時刻の履歴において最適なモデルも連続的に変化すると仮定できる。したがって、時刻ｔにおいて最適なモデルｍ＊｜ｔを決定したら、時刻ｔ＋１においてはｍ＊｜ｔの周辺のモデルを探すだけで最適なモデルｍ＊｜ｔ＋１を見つけることができる。
【０１１７】
図１２は、符号化パラメータ予測部１３０による符号化パラメータの選択手順を示す図である。
【０１１８】
図１２において、あるモデルの「周辺にあるモデル」は、以下のようにして定義できる。上位ビットの可変長符号方式が同一で、下位ビット長（０〜２３）のみが異なるモデルを用いる場合、例えば図４〜図６の３本のグラフで表されるモデルを用いる場合においては、下位ビット長の値に従ってモデル間の順序関係（隣接関係）を与えればよい。
【０１１９】
一方、上位ビットの可変長符号方式が異なる場合には、このような自明な順序関係を与えることができない。そこでモデルの符号長分布が想定している確率分布間で公知のカルバック・ライブラー情報量（Ｋｕｌｌｂａｃｋ−Ｌｅｉｂｌｅｒ・Ｄｉｖｅｒｇｅｎｃｅ）を下記の式（１２）、式（１３）により求め、これを符号モデルｍｉからｍｊへの距離とする。なお式（１２）においてｘの総和は、４バイト浮動小数点の仮数部（２３ビット）間の差分であれば−２２３〜＋２２３の間で求めればよい。このようにしてモデル間の距離を定義し、予め計算しておくことができる。符号化パラメータ予測部１３０による実際のモデル選択時には、時刻ｔにおいて最適なモデルｍ＊｜ｔを決定したら、時刻ｔ＋１においては、予め設定した閾値θを用いて、ＤＫＬ（（ｍ＊｜ｔ｜｜ｍ）＜θとなるようなモデルだけを探索すればよい（図１２の「探索範囲」の円内）。このようにして、多様なモデル候補を扱う場合であってもモデル選択に必要な計算量を抑えることが可能である。
【０１２０】
【数７】
0005570409.tif 000008
【０１２１】
なお、本実施の形態において、データ圧縮装置１００に対応するデータ伸張装置１００ａは、データ圧縮装置１００と同様に、パラメータ間距離格納部１６０を備えることになる。データ伸張装置１００ａの符号化対象値予測部１１０の動作については、データ圧縮装置１００の符号化対象値予測部１１０と同様である。
【０１２２】
以上説明したように、本実施の形態に係るデータ圧縮装置１００は、探索範囲を隣接するモデルに限定することができる。データ圧縮装置１００において、符号化パラメータ予測部１３０は、決定した最良の符号化パラメータを記憶し、次の残差に対する符号化パラメータ候補を評価する際には、記憶した符号化パラメータから所定の範囲の候補のみを評価する。
【０１２３】
また、本実施の形態に係るデータ圧縮装置１００は、隣接の定義をカルバック・ライブラー情報量で行うことができる。データ圧縮装置１００において、パラメータ間距離格納部１６０は、符号化パラメータ候補により特定される可変長符号モデルについて、当該モデルの符号長の分布から推定される、当該モデルに最適な確率分布を用い、他のモデルとの距離を当該確率分布の間の距離により定義し、当該距離を予め算出して格納する。符号化パラメータ予測部１３０は、当該距離を、評価を行う際の所定の範囲の基準として用いる。
【０１２４】
以上、本発明の実施の形態について説明したが、これらのうち、２つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、１つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、２つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
【符号の説明】
【０１２５】
１００  データ圧縮装置、１００ａ  データ伸張装置、１０１  入力データ、１０２  残差符号列データ、１１０  符号化対象値予測部、１２０  整数可変長符号化部、１３０  符号化パラメータ予測部、１４０  残差符号化部、１４０ａ  残差復号化部、１５０  事前確率格納部、１６０  パラメータ間距離格納部、１９０  符号化パラメータ選択部、９０１  ＬＣＤ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  ＨＤＤ、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
0005570409.tif 000009
【図２】
0005570409.tif 000010
【図３】
0005570409.tif 000011
【図４】
0005570409.tif 000012
【図５】
0005570409.tif 000013
【図６】
0005570409.tif 000014
【図７】
0005570409.tif 000015
【図８】
0005570409.tif 000016
【図９】
0005570409.tif 000017
【図１０】
0005570409.tif 000018
【図１１】
0005570409.tif 000019
【図１２】
0005570409.tif 000020
【図１３】
0005570409.tif 000021
【図１４】
0005570409.tif 000022