(57)【要約】      （修正有）【課題】固定長データを連続して符号化する場合に適した圧縮符号化方法、装置、及びプログラムを提供する。【解決手段】圧縮符号化方法は、予め決められたフィールドのうちの同一のフィールドに同種のデータが記述される、１以上のフィールドを含む固定長ビット列からなるレコードを所定のビット幅のカラムに分割することと、複数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法により複数の前記レコードを符号化することと、を含む。【選択図】図６
2018022933.tif 000002
【特許請求の範囲】
【請求項１】
予め決められたフィールドのうちの同一のフィールドに同種のデータが記述される、１以上のフィールドを含む固定長ビット列からなるレコードを所定のビット幅のカラムに分割することと、
複数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法により複数の前記レコードを符号化することと、
を含む圧縮符号化方法。
【請求項２】
前記カラムのビット幅は、カラムごとに異なる、請求項１に記載の圧縮符号化方法。
【請求項３】
前記カラムに分割することは、前記フィールドごとに分割することである、請求項１に記載の圧縮符号化方法。
【請求項４】
前記カラムに分割することは、前記フィールドの境界とは無関係に分割することである、請求項１に記載の圧縮符号化方法。
【請求項５】
前記カラムに分割することは、ビット単位で分割することである、請求項１に記載の圧縮符号化方法。
【請求項６】
請求項１に記載の圧縮符号化方法によって圧縮符号化されたデータを復号化する復号化方法であって、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号することと、
該カラムごとに復号された復号化データを結合することと、
を含む復号化方法。
【請求項７】
請求項１記載の圧縮符号化方法をコンピュータに実行させるプログラム。
【請求項８】
請求項６記載の復号化方法をコンピュータに実行させるプログラム。
【請求項９】
予め決められたフィールドのうちの同一のフィールドに同種のデータが記述される、１以上のフィールドを含む固定長ビット列からなるレコードを所定のビット幅のカラムに分割する分割手段と、
複数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法により複数の前記レコードを符号化する符号化手段と、
を備える圧縮符号化装置。
【請求項１０】
請求項９の圧縮符号化装置によって圧縮符号化されたデータを復号化する復号化装置において、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号する復号化手段と、
該カラムごとに復号された復号化データを結合する混合手段と、
を含む復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の本実施形態は、データ圧縮符号化方法、復号化方法、その装置、及び、そのプログラムに関する。
【背景技術】
【０００２】
近年、複数のセンサ付き無線端末を空間に散在させ、それらが協調して環境や物理的状況を採取するセンサネットワークの構築が構想されている。また、自動車の電子制御化の進展に伴い、各種車載用のセンサネットワークが実用化されている。
【０００３】
図１は、これらセンサネットワークを模式的に例示した概略図である。例えばセンサネットワーク１においては、センサ２ａ等が検出するデータをセンサノード５とゲートウェイ３を介して処理装置４に送信する。センサ２ａ、２ｂ、２ｃが取得するデータを処理装置４に送る場合、送信されるデータは、データサイズが固定長となる傾向がある。
【０００４】
各センサが検出する環境の状態等の、サイズが予め決められたデータを特定の並び順で配置したデータ列をレコードと呼ぶ。このような場合、１レコードは、固定長のビット列からなる固定長データとなる。センサネットワークにおいては、センサが時々刻々と検出する環境の状態等のデータをレコードとして連続して出力する。ここで、センサは、温度センサ、湿度センサ、圧力センサ、回転数センサ、風速センサ、流速センサ、加速度センサ、速度センサ、または位置センサ、あるいはスイッチのオン・オフ情報を検出するものなどを含む。
【０００５】
図２は、上述の固定長データ例を説明する図である。
図２に示す例では、センサ２ａの検出情報として、回転パルス数、センサ２ｂ、２ｃの検出情報としてそれぞれ対応するスイッチのオン・オフ情報の場合を示す。
【０００６】
センサネットワーク１で送受信される固定長データは、そのビット長が固定値に設定されている。そして、その固定長ビットデータの内部は、更に、所定数のビットごとにフィールドに分けられ、各フィールドに記述されるデータの種類が決められていることもありえる。例えば、図２（ａ）においては、固定長データの１０進数表記の例が記載されている。図２（ａ）の例においては、固定長データの先頭に２６ビットの時刻が記述され、次に、回転パルス数センサ２ａの出力である１４ビットの回転パルス数が記述されている。また、その次には、センサ２ｂの検出情報がオンかオフかを示す１ビットのデータ、その次に、センサ２ｃの検出情報がオンかオフかを示す１ビットのデータが記述されている。そして、全体のデータビット長が固定値とされている。なお、図１及び図２の例では、センサネットワーク１の１つのセンサノード５に、３つのセンサが設けられていることを示している。しかし、１つのセンサノードに設けられるセンサの種類とセンサ数は、これに限定されるものではなく、１以上の任意の数の任意の種類のセンサを設けることが出来る。
【０００７】
図２（ｂ）は、図２（ａ）の１０進数表記の固定長データを２進数表記したものである。この場合にも、先頭から、２６ビットの時刻、１４ビットの回転パルス数、１ビットのセンサ１のオン／オフ状態、センサ２のオン／オフ状態が記述されている。図２（ｃ）は、図２（ｂ）の２進数表記された固定長データを連続ビットとして表記したものである。この場合も、先頭から何ビット目から何ビット目がどういう情報を示しているかが予め決められているので、固定長データを受け取った装置は、先頭からビットを順次読み込むことにより、固定長データ内に記述されているデータを認識することが出来る。
【０００８】
なお、図１〜図２の例では、センサの検出情報として、回転パルス数及びスイッチのオン・オフ情報の場合を示したが、本実施形態のセンサはこれに限定されることは無く、例えば、温度、湿度、位置、速度、加速度、風速、流速、圧力などの様々な検出量を検出するセンサとすることが出来る。
【０００９】
さらに、送受信されるデータをセンサの検出情報と限定する必要もない。
このような固定長のレコードを連続して転送する場合、ある程度の分量のデータを蓄積し、既存の圧縮技術でデータサイズを小さくしてから転送し、受けた側が伸長する方法が用いられることがある。
【００１０】
この場合、蓄積する量がある程度大きくないと圧縮効率が良くならないので、即時性が求められる場合には圧縮せずに送られることもある。圧縮せずに転送するとデータ転送量は圧縮した場合よりも大きくなってしまう。
【００１１】
データ圧縮の従来技術として、特許文献１〜３及び非特許文献１に開示されたものがあるが、いずれも、固定長のデータを符号化する場合に適したデータの圧縮符号化方法については記載されていない。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００７−２１４９９８号
【特許文献２】米国特許公開第２０１１／０２００１０４号
【特許文献３】特表２０１４−５０２８２７号
【非特許文献】
【００１３】
【非特許文献１】lossless compression handbook, academic press, 2002/8/15, ISBN-10:0126208611, ISBN-13:978-0126208610
【発明の概要】
【発明が解決しようとする課題】
【００１４】
したがって、本発明の一側面に従った実施形態においては、固定長データを符号化し、また復号化するのに適したデータ圧縮符号化方法、復号化方法、その装置、及び、そのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の一側面よるデータ圧縮符号化は、予め決められたフィールドのうちの同一のフィールドに同種のデータが記述される、１以上のフィールドを含む固定長ビット列からなるレコードを所定のビット幅のカラムに分割することと、複数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいて複数の前記レコードをエントロピー符号化することと、を含む。
【００１６】
なお、エントロピー符号化とは出現確率の大きいシンボルには短い符号長を割り当て出現確率の小さいシンボルには長い符号長を割り当てることで圧縮を行う符号化方式である。代表的なエントロピー符号化としてはハフマン符号、算術符号などが知られている。
ハフマン符号は適応型ハフマン符号、Canonical Huffman Codes等多くの方式があり
算術符号には適応型算術符号、Ｑコーダー、レンジコーダー、等の多くの方式が知られている。
【発明の効果】
【００１７】
本発明の一側面に従った実施形態によれば、固定長データを符号化する場合に適したデータ圧縮符号化方法、復号化方法、その装置、及び、そのプログラムを提供することが出来る。
【図面の簡単な説明】
【００１８】
【図１】センサネットワークを模式的に例示した概略図である。
【図２】固定長データ例を説明する図である。
【図３】本実施形態の符号化方法に従ったカラム分割を説明する図である。
【図４Ａ】本実施形態によるデータ圧縮符号化装置の機能ブロック構成の一つの例を示す図である。
【図４Ｂ】本実施形態によるデータ圧縮符号化装置の機能ブロック構成の他の例を示す図である。
【図５Ａ】本実施形態による復号化装置の機能ブロック構成の一つの例を示す図である。
【図５Ｂ】本実施形態による第２の復号化装置の機能ブロック構成の他の例を示す図である。
【図６】適応型のエントロピー符号化方法を用いた本実施形態のデータ圧縮符号化方法を一般的に説明するフローチャートである。
【図７】蓄積型のエントロピー符号化方法を用いた本実施形態のデータ圧縮符号化方法を一般的に説明するフローチャートである。
【図８】蓄積型ハフマン符号化方法を説明するフローチャートである。
【図９】蓄積型ハフマン復号化方法を説明するフローチャートである。
【図１０】適応型ハフマン符号化方法を説明するフローチャートである。
【図１１】適応型ハフマン復号化方法を説明するフローチャートである。
【図１２】適応型算術符号化方法を説明するフローチャートである。
【図１３】適応型算術復号化方法を説明するフローチャートである。
【図１４】本実施形態の蓄積型ハフマン符号化方法を具体例により説明する図である。
【図１５】本実施形態の適応型ハフマン符号化方法を具体例により説明する図である。（その１）である。
【図１６】本実施形態の適応型ハフマン符号化方法を具体例により説明する図である。（その２）である。
【図１７】本実施形態の適応型ハフマン符号化方法を具体例により説明する図である。（その３）である。
【図１８】カラム分割を１ビット単位とした本実施形態のデータ圧縮符号化方法を具体例により説明する図（その１）である。
【図１９】カラム分割を１ビット単位とした本実施形態のデータ圧縮符号化方法を具体例により説明する図（その２）である。
【図２０】カラム分割を１ビット単位とした本実施形態のデータ圧縮符号化方法を具体例により説明する図（その３）である。
【図２１】カラム分割を１ビット単位とした本実施形態のデータ圧縮符号化方法を具体例により説明する図（その４）である。
【図２２】カラム分割を１ビット単位とした本実施形態のデータ圧縮符号化方法を具体例により説明する図（その５）である。
【図２３】本実施形態の蓄積型ハフマン符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図である。
【図２４】本実施形態の適応型ハフマン符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その１）である。
【図２５】本実施形態の適応型ハフマン符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その２）である。
【図２６】本実施形態の適応型ハフマン符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その３）である。
【図２７】本実施形態の適応型算術符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その１）である。
【図２８】本実施形態の適応型算術符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その２）である。
【図２９】本実施形態の適応型算術符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その３）である。
【図３０】本実施形態の適応型算術符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その４）である。
【図３１】本実施形態の適応型算術符号化方法により符号化された符号化データを復号する復号化方法を具体例により説明する図（その５）である。
【図３２】本実施形態をプログラムで実装する場合の、プログラムを実行する例示的コンピュータのハードウェア環境図である。
【発明を実施するための形態】
【００１９】
図３は、本実施形態に従ったカラム分割を説明する図である。
図３は、固定長ビット列からなる固定長データの１レコードの例を示す。レコードは、決められたビット位置と幅のフィールドからなっており、フィールド１〜フィールドｎにデータが記述される。本実施形態においては、レコードを所定ビット幅からなるカラムに分割する。例えば、図３の場合、カラム１は、１〜ａ１ビットからなり、カラム２は、ａ１＋１〜ａ２ビットからなり、カラム３は、ａ２＋１〜ａ３ビットからなり、以降同様に、カラムｍは、ａｍ−１＋１〜ａｍビットからなる。ａ１〜ａｍは、同一値であってもよいし、それぞれ異なる値であっても良い。また、カラムは、フィールドの位置と幅に合わせて分割してもよいし、フィールドの幅や位置とは関係なく分割するものであっても良い。また、カラムのビット幅は、例えば、１ビット、２ビット、４ビット、８ビット、１６ビットなどとすることが出来る。
【００２０】
なお、固定長データには、有意なデータが可変長データとして構成されるが、データの後方に「０」を追加することにより、データ長を調整して、固定長データするものも含み、可変長データが、同種のデータを格納するフィールドからなり、後方のデータにおいてデータが記録されない場合に「０」で埋めてデータ長を固定値にする、というような場合にも本実施形態の方法は適用可能である。上述のように、本実施形態においては、固定長データの固定長ビット列からなるレコードが、複数の決められたフィールドに記述される異なる意味を持つデータから構成され、レコードごとに、同じ位置にあるフィールドに記述されるデータが同じ種類のデータとする。そして、レコードを任意のビット数のブロックであるカラムに分割し、カラム相互には個別に、カラム方向に連続して符号化することにより、従来の符号化方法より有効な圧縮符号化を実現する。すなわち、本実施形態においては、複数のレコードの同じ位置のカラムごとに連続して各カラムを符号化することにより、一つのレコードを符号化する。
【００２１】
ここで、カラム相互に個別に符号化するとは、符号化のプロセスが、異なるカラムのデータに依存しない、ということを意味する。また、フィールドは、一塊のデータを格納し、フィールドごとに、格納されている一塊のデータの意味が決められているような固定長データ内のデータ格納位置である。固定長データは、１以上のフィールドに格納されたデータからなる。カラムは、固定長データを分割したものであるが、必ずしもカラムに格納されるデータは一塊の意味のあるデータとなっていると限る必要はない。カラムは、フィールドにまたがって分割されることもあれば、一つのフィールドが複数のカラムに分割されることもあるなど、単純に分割されたデータの塊である。ただし、カラムの分割の仕方は、複数の固定長データに渡って同一であり、同一のカラムは、複数の固定長データに渡って、同様な部分のデータの塊を示す。
【００２２】
図４Ａは、本実施形態によるデータ圧縮符号化装置の機能ブロック構成の一つの例を示す図である。図４Ａにあるように、入力レコードをカラムに分割手段１０で分割した後、各カラムのデータは、それぞれ、各カラム用のレジスタ１１−１〜１１−ｍに一旦格納されてから、各カラム用符号化手段１２−１〜１２−ｍにより、カラムごとに個別に圧縮符号化される。圧縮符号化された各カラムのデータは、混合手段１３によって１つのデータストリームとされ、１つのレコードの符号化データ出力として出力される。
【００２３】
ここで、各カラム用符号化手段１２−１〜１２−ｍは、それぞれ、個別の符号化手段が設けられているように記載されているが、必ずしもこれには限定されず、１つの符号化手段がカラムごとに個別な圧縮符号化となるように時分割で圧縮符号化処理を処理するようにしても良い。
【００２４】
図４Ａに機能ブロック構成を示すデータ圧縮符号化装置の用いる圧縮符号化方法は、例えば、ハフマン符号化などの方法を含む、エントロピー符号化方法とすることが出来る。カラム用符号化手段１２−１〜１２−ｍがエントロピー符号化方法を採用する場合には、各カラム用符号化手段１２−１〜１２−ｍには、図４Ａに示すように頻度表と符号化表が格納される。
【００２５】
このような、本実施形態の圧縮符号化方法は、固定長ビット列が複数の独立した情報により構成されている時に特に効果がある。たとえ、カラムへの分割が、固定長ビット列の独立した情報を含むフィールドの境界を無視したものであっても、カラムの間の相関を考慮しないことにより圧縮符号化後の平均データ量を小さくすることができる。
【００２６】
図４Ｂは、本実施形態によるデータ圧縮符号化装置の機能ブロック構成の他の例を示す図である。図４Ｂに示す例は、算術符号化を用いる場合である。
図４Ｂに示すように、算術符号化における符号化の場合には、レコード入力に対し、分割手段１０ａがカラムごとの分割を行い、カラム用レジスタ１１ａ−１〜１１ａ―ｍに各カラムのデータを保持する。そして、カラム分割範囲判定手段１２ａ−１〜１２ａ−ｍにおいて、それぞれのカラムにおける読み込んだデータ値の頻度により出現確率を計算し、当該カラムに対応する現在のレンジが分割される値をカラムごとに判定する。そして、求めた値とカラムの値からレンジ分割手段により次のカラムに対応するレンジを求める。
【００２７】
すなわち、カラム１のカラム分割範囲判定手段１２ａ−１が処理を終わると、レンジ分割手段１８−１において、カラム１のデータとカラム１のデータを処理した結果に基づいて、レンジを算術符号化方法に従いカラム２に対応するレンジを分割する。次に、カラム２のカラム分割範囲判定手段１２ａ−２がカラム２のデータの出現確率によりカラム２のレンジを分割する値を判定し、その結果とカラム２のデータとから、レンジ分割手段１８−２が次のカラム３のためのレンジを分割する。以下同様に、カラムｍまで、上述の処理を繰り返す。そして、符号化手段１９において、レンジ分割手段１８−ｍのレンジ分割結果であるレンジに含まれる二進数表現が最も短くなる値に基づいて入力されたレコードを符号化して、符号化データ出力を得る。
【００２８】
図５Ａは、本実施形態による復号化装置の機能ブロック構成の一つの例を示す図である。
図５Ａに示す復号化装置は、図４Ａに示すデータ圧縮符号化装置に対応する復号化装置である。図４Ａのデータ圧縮符号化装置によって符号化された符号化データが入力されると、分割手段１６が符号化データをカラムに分割する。そして、複数の復号化手段１４−１〜１４−ｍは、各カラムの符号化データを復号化する。このとき、復号化手段１４−１〜１４−ｍは、具体的な符号化方法に従って、符号化前のデータのカラムごとに設けられる頻度表、符号化表１５−１〜１５−ｍを参照して復号化を行う。例えば、符号化方法が、ハフマン符号化の場合には、符号化データを順次読み込み、符号化データのシンボルパターンを各カラム１〜カラムｍに対して設けられた頻度表、符号化表を参照して、復号化データのシンボルを生成する。
【００２９】
そして、カラムごとに復号された復号化データを混合手段１７で結合して復号レコードを出力する。
図５Ｂは、本実施形態による復号化装置の機能ブロック構成の他の例を示す図である。
【００３０】
図５Ｂに示す復号化装置は、図４Ｂに示すデータ圧縮符号化装置に対応する復号化装置である。
図５Ｂに示す算術符号の復号化の場合には、符号化されたレコードはカラム１のカラム分割範囲判定手段２０−１に入力される。そして、カラム分割範囲判定手段２０ａ−１〜２０ａ−ｍにおいて、それぞれのカラムにおける復号化されたデータ値の頻度により出現確率を計算し、当該カラムに対応する現在のレンジが分割される値を求める。そして、カラム１復号化手段１４ａ−１〜カラムｍ復号化手段１４ａ−ｍにおいて、各カラムに対応する現在のレンジが分割される値と符号化データの値を比較して当該カラムの復号化データを求める。さらにこの復号化データと先に求められた現在のレンジが分割される値に基づき、レンジ分割手段により次のカラムに対応するレンジを求める。カラム１復号化手段１４ａ−１〜カラムｍ復号化手段１４ａ−ｍの復号化データが混合手段１７ａで結合され、復号レコードが出力される。
【００３１】
図６は、適応型のエントロピー符号化方法を用いた本実施形態のデータ圧縮符号化方法を一般的に説明するフローチャートである。適応型の符号化方法はデータが入力されるに従い逐次圧縮符号化するものである。
【００３２】
まず、ステップＳ１０において、エントロピー符号化に用いる頻度表を初期化する。頻度表とは、あるシンボルが符号化データ内で何回現れたかを計数したものである。この頻度表自体は、エントロピー符号化において従来から使用されているものである、本実施形態においては、複数のレコードの同一位置のカラムに存在するシンボルを計数することが特徴である。初期化として例えば、全てのエントリを０に設定する。
【００３３】
次にステップＳ１１のループにおいては、１レコードのカラムの数だけ、ステップＳ１２の処理を繰り返し行う。ステップＳ１２では、頻度表に基づく、符号化表の作成を行なう。符号化表は、ハフマン符号の場合、ハフマン符号辞書であり、算術符号の場合には、出現確率であり、実際に符号化情報に元データを置き換える場合に用いる表である。
【００３４】
ステップＳ１１のカラム数分の繰り返し処理が終了すると、ステップＳ１３に進む。ステップＳ１１の最初の処理においては、ステップＳ１０で初期化された頻度表に基づいて符号化表が作成される。
【００３５】
ステップＳ１３において、固定長ビット列である１レコードを読み込む。次に、ステップＳ１４において、レコードを、予め決められた方法に従って、カラムに分割する。ステップＳ１４ａにおいては、カラムごとの符号化を行い、ステップＳ１５において、カラムごとの符号化データを混合して、１レコードの圧縮符号化データとする。ステップＳ１６において、圧縮符号化後の１レコード分のデータを出力する。この１レコード分のデータを全てのレコードについて出力し終わると、入力データの圧縮符号化が完了したことになる。
【００３６】
次にステップＳ１６の後に、ステップＳ１７に進み、ステップＳ１８の処理をカラム数分繰り返し行う。ステップＳ１８では、頻度表の更新を行う。このとき、頻度表は、カラムごとに独立して、カラム数分持つ。頻度表の更新は、他のカラムの符号化結果は用いず、レコードの所定のカラムについて、レコードを順次符号化していくに従い、以前のレコードの対応するカラムの符号化結果に基づいて更新されるものである。
【００３７】
ステップＳ１７のループ処理が終了すると、ステップＳ１１に戻り、ステップＳ１７のループ処理で更新した各カラムの頻度表に基づいて符号化表を作成し、ステップＳ１３に進んで次のレコードの符号化処理に進む。処理するレコードがなくなった時点で、圧縮符号化の完了となる。
【００３８】
なお、エントロピー符号化方式に該当するいくつかの方式について、具体例を挙げて後にさらに詳しく説明する。
図７は、蓄積型のエントロピー符号化方法を用いた本実施形態に従ったデータ圧縮符号化方法を一般的に説明するフローチャートである。蓄積型の符号化方法は圧縮符号化すべきデータを一旦全て読み込んでから圧縮符号化するものである。すなわち、符号化するデータを一旦全て読み込んで頻度表を完成してから、再びデータを読み込んで、符号化するものである。
【００３９】
まず、ステップＳ１９において、頻度表を初期化する。ステップＳ２０のループにおいて、符号化すべきデータの全てのレコードについて、レコード数分の繰り返し処理を行う。ステップＳ２１においては、１レコードを読み込み、ステップＳ２２において、予め決められた方法によってレコードをカラムに分割する。ステップＳ２３のループで、ステップＳ２４をカラム数分繰り返し処理する。ステップＳ２４においては、カラムごとに個別に設けられた頻度表を更新する。ステップＳ２３のカラム数分の繰り返し処理が終わると、ステップＳ２０のレコード数分の繰り返し処理が終わったか判断し、終わっていない場合には繰り返し処理を継続し、終わった場合には、ステップＳ２５に進む。ステップＳ２５に至った時点で、符号化すべき全てのデータについて頻度表の更新が終わったことになるので、頻度表を出力して、ステップＳ２６に進む。
【００４０】
ステップＳ２６においては、カラム数の分だけステップＳ２７の処理を繰り返す。ステップＳ２７においては、頻度表から符号化表を作成する。符号化表は、ハフマン符号の場合には、ハフマン符号辞書であり、算術符号の場合には、出現確率であり、実際に符号化情報に元データを置き換える場合に用いる表である。ステップＳ２６のカラム数分の繰り返し処理が終了すると、ステップＳ２８に進む。
【００４１】
ステップＳ２８では、符号化すべきデータに含まれるレコード数分だけ繰り返し処理を行う。ステップＳ２９においては、１レコードを読み込み、ステップＳ３０において、レコードを予め決められた方法に従って分割する。ステップＳ３１において、カラムごとに圧縮符号化し、ステップＳ３２において、圧縮符号化データを混合して、１レコードの圧縮符号化データを得る。ステップＳ３３において、１レコード分のデータを出力する。ステップＳ２８のループ処理において、レコード数分の繰り返し処理が終了した場合には、処理を終了する。
【００４２】
なお、ここで、圧縮符号化すべきデータのレコード数は、例えば、圧縮符号化すべきデータがセンサなどから受信する固定長データである場合、どの程度のデータをまとめて圧縮符号化するかに依存する。まとめて圧縮符号化するデータの容量は、符号化装置が有するメモリの容量などに依存するが、これは、本実施形態を利用する当業者によって適宜決定されるべきものである。
【００４３】
図８及び図９は、蓄積型ハフマン符号化及び復号化方法をさらに詳しく説明するフローチャートである。
図８に示す蓄積型ハフマン符号化方法においては、ステップＳ４０において、頻度表を初期化する。ステップＳ４１のループで、ステップＳ４１の間の処理をレコード数分繰り返す。ステップＳ４２においては、１レコードを読み込み、ステップＳ４３において、レコードを所定の方法で、カラムに分割する。ステップＳ４４のループで、ステップＳ４５をカラム数分繰り返す。ステップＳ４５においては、頻度表をカラムごとに更新する。そして、全てのカラムの頻度表を更新するとステップＳ４６において頻度表を出力し、ステップＳ４７のループに進む。
【００４４】
ステップＳ４７のループにおいては、ステップＳ４８の処理をカラム数分繰り返す。ステップＳ４８においては、頻度表に基づいて符号化表を作成する。
次にステップＳ４９のループにおいて、ステップＳ４９の間にある処理をレコード分繰り返す。ステップＳ５０においては、１レコードを読み込む。ステップＳ５１においては、レコードを所定の方法でカラムに分割する。ステップＳ５２のループにおいては、ステップＳ５３の処理をカラム数分繰り返す。ステップＳ５３においては、カラムデータを符号化する。次にステップＳ５４において、ステップＳ５２のループで求めた符号化データを１レコードに混合する。ステップＳ５５においては、１レコード分のデータを出力する。レコード数分の処理が終わったら、処理を終了する。
【００４５】
図９に示す蓄積型ハフマン復号化方法においては、ステップＳ６０において、頻度表を読み込む。ステップＳ６１のループにおいては、ステップＳ６２をおカラム数分繰り返す。ステップＳ６２において、頻度表に基づいて符号表を作成する。ステップＳ６３のループにおいては、ステップＳ６３の間の処理をレコード数分繰り返す。ステップＳ６４においては、１レコードを読み込む。ステップＳ６５のループにおいては、ステップＳ６６をカラム数分繰り返す。ステップＳ６６においては、ステップＳ６２で作成した符号化表に基づいてカラムデータを復号化する。ステップＳ６７においては、各カラムの復号化データを１レコードに混合する。ステップＳ６８においては、１レコード分のデータを出力する。レコード数分の処理が終わったら、処理を終了する。
【００４６】
図１０及び図１１は、適応型ハフマン符号化及び復号化方法を説明するフローチャートである。
図１０に示す適応型ハフマン符号化方法においては、ステップＳ７０において、頻度表を初期化する。ステップＳ７１のループにおいては、ステップＳ７２の処理をカラム数分繰り返す。ステップＳ７２において、初回の処理ではステップＳ７０で初期化された頻度表に基づいて、それ以降はステップＳ８０で更新された頻度表に基づいて符号化表を作成する。ステップＳ７３においては、１レコードを読み込む。ステップＳ７４において、レコードを所定の方法でカラムに分割する。ステップＳ７５のループにおいては、ステップＳ７６の処理をカラム数分繰り返す。ステップＳ７６においては、ステップＳ７２で作成した符号化表に基づいてカラムデータを符号化する。ステップＳ７７においては、各カラムの符号化データを１レコード分混合する。ステップＳ７８においては、１レコード分のデータを出力する。ステップＳ７９のループにおいては、ステップＳ８０の処理をカラム数分繰り返す。ステップＳ８０において、各カラムの頻度表を更新する。カラム数分の繰り返しが終わると、ステップＳ７１に戻って符号化表を作成し、ステップＳ７３以降の次のレコードの処理を繰り返す。
【００４７】
図１１に示す適応型ハフマン復号化方法は、図１０に示す適合型ハフマン符号化方法で符号化されたデータを復号化するものである。符号化データの復号は、符号化に用いられた符号化表を逆引きして符号化データから元のカラムのデータを求めることにより行われる。したがって、図１１に示すフローは、図１０に示すフローのカラムデータの符号化のステップと符号化データを混合するステップが、カラムデータの復号化のステップと復号化データを混合するステップに置き換わり、１レコード読込みステップが１レコード分の符号化データ読込みステップに、符号化データの出力ステップが復号化されたレコードの出力ステップに置き換わったものである。
【００４８】
図１１に示すように、ステップＳ８５において、頻度表を初期化する。ステップＳ８６のループにおいては、ステップＳ８７の処理をカラム数分繰り返す。ステップＳ８７において、初回の処理ではステップＳ８５で初期化された頻度表に基づいて、それ以降はステップＳ９４で更新された頻度表に基づいて、符号化表を作成する。ステップＳ８８においては、１レコード分の符号化データを読み込む。ステップＳ８９のループにおいては、ステップＳ９０の処理をカラム数分繰り返す。ステップＳ９０においては、ステップＳ８７で作成した符号化表に基づいてカラムデータを復号化する。ステップＳ９１においては、各カラムの復号化データを１レコード分混合する。ステップＳ９２において、１レコード分のデータを出力する。ステップＳ９３のループにおいては、ステップＳ９４の処理をカラム数分繰り返す。ステップＳ９４においては、各カラムの頻度表を更新する。カラム数分の処理が終わると、ステップＳ８６に戻って符号化表を作成し、ステップＳ８８以降の次のレコードの処理を繰り返す。
【００４９】
図１２及び図１３は、適応型算術符号化及び復号化方法を説明するフローチャートである。先に図４Ｂ及び図５Ｂにより説明した機能ブロックの構成に対応するものであり、これらフローチャートに示すアルゴリズムを実行するプログラムにより、コンピュータ上に適応型算術符号化及び復号化装置を実現することができる。
【００５０】
図１２に示す適応型算術符号化方法においては、ステップＳ９５において、頻度表を初期化する。ステップＳ９６のループにおいては、ステップＳ９７の処理をカラム数分繰り返す。ステップＳ９７において、初回の処理ではステップＳ９５で初期化された頻度表に基づいて、それ以降はステップＳ１０６で更新された頻度表に基づいて、出現確率表を作成する。ステップＳ９８においては、１レコードを読み込む。ステップＳ９９においては、レコードを所定の方法でカラムに分割する。ステップＳ１００においては、レンジを初期化する。ステップＳ１０１のループにおいては、ステップＳ１０２の処理をカラム数分繰り返す。ステップＳ１０２においては、レンジを算術符号化方法に従って分割する。ステップＳ１０３においては、ステップＳ１０１のループで最終的に得られたレンジから符号化データを作成する。ステップＳ１０４においては、この符号化データを１レコード分の符号化データとして出力する。ステップＳ１０５のループにおいては、ステップＳ１０６の処理をカラム数分繰り返す。ステップＳ１０６においては、頻度表を更新する。カラム数分の処理が終わると、ステップＳ９６に戻って出現確率表を作成し、ステップＳ９８以降の次のレコードの処理を繰り返す。
【００５１】
図１３に示す適応型算術復号化方法は、図１２に示す適合型算術符号化方法で符号化されたデータを復号化するものである。
図１３に示すように、ステップＳ１１０において、頻度表を初期化する。ステップＳ１１１のループにおいては、ステップＳ１１２の処理をカラム数分繰り返す。ステップＳ１１２においては、頻度表に基づき、出現確率表を作成する。ステップＳ１１３においては、１レコード分の符号化データを読み込む。ステップＳ１１４において、レンジを初期化する。ステップＳ１１５のループにおいては、ステップＳ１１６ａ、ステップＳ１１６とステップＳ１１７の処理をカラム数分繰り返す。ステップＳ１１６ａにおいては、それぞれのカラムにおける復号化されたデータ値の頻度により出現確率を計算し、当該カラムに対応する現在のレンジが分割される値を求める。ステップＳ１１６においては、各カラムに対応する現在のレンジが分割される値と符号化データの値を比較して当該カラムの復号化データを求める。ステップＳ１１７においては、ステップＳ１１６で求めた復号化データとステップＳ１１６ａで求めた現在のレンジが分割される値に基づき、次のカラムに対応するレンジを求める。ステップＳ１１８においては、ステップＳ１１６で求めたカラム復号化データを１レコード分混合する。ステップＳ１１９においては、１レコード分のデータを出力する。ステップＳ１２０のループにおいては、ステップＳ１２１の処理をカラム数分繰り返す。ステップＳ１２１においては、各カラムの頻度表を更新する。カラム数分の処理が終わると、ステップＳ１１１に戻って出現確率表を作成し、ステップＳ１１３以降の次のレコードの処理を繰り返す。
【００５２】
以上、図６〜図１３を参照して本実施形態に係るデータ圧縮符号化方法及び復号化方法を説明したが、これら図面に記載したフローチャートに示すアルゴリズムを用いたプログラムにより本実施形態に係るデータ圧縮符号化装置及び復号化装置をコンピュータ上に実装することも可能である。
【００５３】
次にレコードの具体例を用いて本実施形態のデータ圧縮符号化・復号化について説明する。
図１４〜図２２は、本実施形態のデータ圧縮符号化方法の処理例を示す。
【００５４】
図１４は、本実施形態の蓄積型ハフマン符号化方法を具体例により説明する図である。図１４に示す例では、１０個のレコードを蓄積し、その後一括して圧縮符号化する。
図１４（ａ）に例示するのは、固定長８ビットの１０件のレコードからなるレコード群２０である。各レコードは、例えば、４ビット幅のカラム１とカラム２に分割されるものとする。なお、これ以降の他の方式の符号化の説明においても、符号化の対象となるレコード群として、同じくレコード群２０を用いる。
【００５５】
図１４（ｂ）に例示するのは、ハフマン符号を用いた場合の符号辞書２５の例である。従来のハフマン符号化の方法については、非特許文献１を参照されたい。本実施形態の場合、符号辞書２５は、それぞれのカラムに個別に持つ。同一のカラムについては、同一の符号辞書を使う。図１４の場合、１レコードを２つのカラムに分割しているので、符号辞書も２つ設けられている。
【００５６】
図１４（ｂ）において、引用符号２１で示すのはそれぞれのカラムに対して出現する可能性のあるデータである。つまり、１つのカラムは４ビットからなっているので、０と１の順列が、２４通りある。したがって、これらのビットの組み合わせ全てを網羅するために、符号辞書２５は、１６個の行からなっている。
【００５７】
引用符号２２で示すのは、レコード群２０における、各ビットパターンの出現回数を求めたものである。この出現回数から各データの出現確率を求めたものが引用符号２３で示されるものであり、引用符号２４で示すのは自己情報エントロピーである。出現確率２３は、出現回数２２を、レコードの数で割ったもので得られる。例えば、引用符号２５で示される符号辞書の左の符号辞書において、「００１０」の出現回数は７回であるが、全レコード数は、１０件なので、出現確率２３は、７／１０＝０．７となる。また、自己情報エントロピー２４をＳとし、出現確率２３をｐとすると、Ｓ＝−ｌｏｇ（ｐ）で与えられる。この出現確率２３及び自己情報エントロピー２４を基に符号化を行う。
【００５８】
引用符号２７で示すのが上記符号化で得られた各カラムの符号化データである。このハフマン符号を結合することでレコードを圧縮符号化した符号化データが得られる。図１４（ｃ）の引用符号２６に示すのがレコード群２０の各レコードに対する符号化データである。レコード群２０と符号化データ２６を比較すると、データ量が削減されていることが判るが、この方法では、復号化を行う際に、圧縮符号化の時に使用した符号辞書を参照する必要があるため別途引用符号２２の頻度表(または、引用符号２５の符号辞書)の授受が必要である。図１４に例示した蓄積型の場合、ある程度のレコードをまとめて圧縮符号化するのに適する。
【００５９】
なお、図６及び図７の説明においては、頻度表と符号化表は別個のものとして説明したが、図１４の例においては、頻度表は符号化表に含まれる構造となっている。
図１５〜図１７は、本実施形態の適応型ハフマン符号化方法を具体例により説明する図である。適応型の符号化復号化方法では、事前に出現確率ないし発生頻度を求めておく必要がなく、レコードデータが発生した時点で即時に符号化することができる。またこの符号化された情報は即時に復号化できる。
【００６０】
図１５（ａ）に示すのは、引用符号３０−１で示す初期状態の符号化表２５、レコード群２０及び最初のレコードの符号化データ３１−１である。入力されるレコード群２０は、図１４に示すものと同じである。ただし、図１５（ａ）に示すように、入力されたレコードは太字で未入力のレコードは細字で表記している。なお、図１５（ｂ）以下では引用符号２０は省略している。
【００６１】
符号化表２５の構造は図１４に示す符号辞書２５の構造と同じである。同一の項目には図１５（ａ）においてのみ同一の引用符号を付している。初期状態の符号化表２５に含まれる頻度表２２にはラプラススムージングを適用してすべて同一の値“１”としてある。この頻度を基に出現確率、自己情報エントロピー、ハフマン符号を求め、この符号を用いて最初のレコードを符号化する。符号化結果は、符号化データ３１−１に示すとおり入力レコードと同じ値である。初期状態ではすべての頻度が等しくなるため圧縮の効果は得られない。
【００６２】
次に、最初のレコードを基に頻度表を更新する。出現したデータに該当する項の頻度を一定値増加させる。図１５（ｂ）に示すように、左のカラムでは「００１０」、右のカラムでは「１０００」の発生回数が１増加している。この頻度表を基に改めて出現確率、自己情報エントロピーを求めたものが３０−２として示した符号化表２５であり、ハフマン符号を求めたものが符号化データ３１−２に太字で示されている。符号化データ３１−２では、圧縮効果が得られていない最初のレコードに比べ、圧縮効果が現れたことを示している。
【００６３】
次に、図１６（ａ）に示すように、３番目のレコードの左カラムに「００１０」、右カラムに「１０００」が再び現れているので、３０−３として示した符号化表の左の頻度表の「００１０」の項と、右の頻度表の「１０００」の項が３に更新されている。この頻度表に基づいてハフマン符号化した結果が、符号化データ３１−３に示されている。
【００６４】
更に、図１６（ｂ）において、４番目のレコードの左カラムに「００１０」、右カラムに「１１００」が現れているので、３０−４として示した符号化表の頻度表においては、左の頻度表において、「００１０」の項が４に更新されている。また、右の頻度表において「１１００」の項は、初めて現れたのであるが、初期値が１であるため、更新はされていない。この頻度表に基づいてハフマン符号化した結果が、符号化データ３１−４に示されている。
【００６５】
更に、図１７（ａ）において、５番目のレコードの左カラムに「１０１０」、右カラムに「１０００」が現れているので、３０−５として示した符号化表の頻度表においては、左の頻度表において、「１０１０」の項が１の初期値に維持されている。また、右の頻度表において「１０００」の項は、４に更新されている。この頻度表に基づいてハフマン符号化した結果が符号化データ３１−５に示されている。
【００６６】
更に、図１７（ｂ）において、６番目のレコードの左カラムに「００１０」、右カラムに「１０００」が現れているので、３０−６として示した符号化表の頻度表においては、左の頻度表において、「００１０」の項が５に更新されている。また、右の頻度表において「１０００」の項は、５に更新されている。この頻度表に基づいてハフマン符号化した結果が符号化データ３１−６に示されている。
【００６７】
このように処理を繰り返すことにより、順次符号化していく。図１７には、６レコードまでの符号化表を記してあるが、同様に頻度表の更新と出現確率、自己情報エントロピー、ハフマン符号を繰り返し求め、符号化することにより、全てのレコードについて符号化が可能である。
【００６８】
このように、適応型の符号化方法を用いると、符号辞書の授受が不要なためレコード数が少ないデータでも圧縮効果が得られることが示される。
図１８〜図２２は、カラム分割を１ビット単位とした本実施形態のデータ圧縮符号化方法を具体例により説明する図である。
【００６９】
この方法により符号化及び復号化時に頻度表の記録に使用するメモリ容量を削減することができる。
ビット単位に分割したときは、算術符号化(Arithmetic coding)の方法を応用して符号化することができる。また、カラム方向に順次符号化しながら頻度を更新していくので、適応型二値算術符号化方法を用いる。算術符号化の方法自体は従来から知られたものを採用ができる。必要とあれば非特許文献１を参照されたい。
【００７０】
入力されるレコード群２０は、図１４に示すものと同じデータであるが１ビット単位にカラム分割している。
図１８（ａ）に示す表４０−１の上段が頻度であり、下段がそれに対応する出現確率である。以下の図１８（ａ）〜図２２（ｂ）まで同様である。表４０−１は初期状態の表である。本来はデータが「０」の場合と「１」の場合それぞれの頻度が必要になるが、「０」の頻度のみを表４０−１に記載している。「１」の場合の頻度を記録する代わりに総レコード数４１−１の欄を設けている。「１」の頻度は総レコード数から「０」の頻度を減ずることで求めることができる。初期値は、やはりラプラススムージングを用いて「０」の頻度が１、総レコード数は２としている。この頻度から求めた「０」の出現確率を表４０−１の下の段に記載している。出現確率は、頻度／総レコード数で求めることが出来る。また、「１」の出現確率は (１ - （「０」の出現確率)）で計算することができる。
【００７１】
この出現確率を基に算術符号化を行う。ここで、本実施形態では、カラムごとに独立した（今の例の場合、ビットごとに独立した）出現確率(頻度)を用いる。１レコード目の算術符号化結果が、符号化データ４２−１に示されている。また、算術符号化で求めたレンジの値が符号化データ４２−１の右側に記載されている。このレンジに含まれる最も短いビット数で表現できる数値の２進数表現の小数部分が算術符号化の結果になる。この例の場合は ０．００１０１(２進数)＝０．１５６２５(１０進数)であるから結果は「００１０１」になる。一般に、算術符号化の場合、符号化結果の末尾の「０」は省略しても復号することが可能であるので、通常の通り、ここでは、末尾の「０」を省略している。また、符号化結果として、本実施形態では、ビット単位でカラム分割するので、頻度は、レコード内の他のビットの頻度とは無関係に、しかし、異なるレコード間では、１ビット目は１ビット目のビットの出現頻度、２ビット目は２ビット目の出現頻度・・・のように、ビット位置によって決まるビットの出現頻度を計数する。したがって、出現確率は、所定のビット位置に現れた「０」の数を、処理したレコード数で割ることによって得ている。「１」の出現確率は、１から「０」の出現確率を引くことによって得ている。
【００７２】
１レコード目の符号化の後に更新された２レコード目の出現頻度と出現確率が図１８（ｂ）の表４０−２に示されている。「０」の頻度のみを求めているので、表４０−２においては、１レコード目で「０」が現れた箇所だけ頻度が１増加されている。「１」が現れた３ビット目と５ビット目の箇所の頻度は初期値のままである。また、総レコード数４１−２が３に増加されている。頻度と総レコード数から求めた出現確率が頻度表４０−２の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−２の２番目に２番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。このレンジに含まれる最小ビット数の２進表現は０．０１(２進)＝０．２５(１０進)であるから符号化の結果は「０１」になる。
【００７３】
２レコード目の符号化の後に更新された３レコード目の出現頻度と出現確率が図１９（ａ）の表４０−３に示されている。表４０−３においては、２レコード目で「０」が現れた箇所だけ頻度が１増加され、それぞれ、３となっている。「１」が現れた３ビット目と５ビット目の箇所の頻度は初期値のままである。また、総レコード数４１−２が４に増加されている。頻度と総レコード数から求めた出現確率が表４０−３の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−３の３番目に３番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．０１(２進)＝０．２５(１０進)であるから符号化の結果は「０１」になる。
【００７４】
３レコード目の符号化の後に更新された４レコード目の出現頻度と出現確率が図１９（ｂ）の表４０−４に示されている。表４０−４においては、３レコード目で「０」が現れた箇所だけ頻度が１増加され、それぞれ、４となっている。「１」が現れた３ビット目と５ビット目の箇所の頻度は初期値のままである。また、総レコード数４１−４が５に増加されている。頻度と総レコード数から求めた出現確率が表４０−４の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−４の４番目に４番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．１(２進)＝０．５(１０進)であるから符号化の結果は「１」になる。
【００７５】
４レコード目の符号化の後に更新された５レコード目の出現頻度と出現確率が図２０（ａ）の表４０−５に示されている。表４０−５においては、４レコード目で「０」が現れた箇所だけ頻度が１増加され、それぞれ、５となっている。４レコード目で新たに「１」が現れた３ビット目と５ビット目と６ビット目の箇所の頻度は、以前の値のままである。また、総レコード数４１−５が６に増加されている。頻度と総レコード数から求めた出現確率が表４０−５の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−５の５番目に５番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．１１１(２進)＝０．８７５(１０進)であるから符号化の結果は「１１１」になる。
【００７６】
５レコード目の符号化の後に更新された６レコード目の出現頻度と出現確率が図２０（ｂ）の表４０−６に示されている。表４０−６においては、５レコード目で「０」が現れた箇所だけ頻度が１増加されている。５レコード目で新たに「１」が現れた１ビット目と３ビット目と５ビット目の箇所の頻度は、以前の値のままである。また、総レコード数４１−６が７に増加されている。頻度と総レコード数から求めた出現確率が表４０−６の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−６の６番目に６番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．０１(２進)＝０．２５(１０進)であるから符号化の結果は「０１」になる。
【００７７】
６レコード目の符号化の後に更新された７レコード目の出現頻度と出現確率が図２１（ａ）の表４０−７に示されている。表４０−７においては、６レコード目で「０」が現れた箇所だけ頻度値が１増加されている。６レコード目で新たに「１」が現れた３ビット目と５ビット目の箇所の頻度は、以前の値のままである。また、総レコード数４１−７が８に増加されている。頻度と総レコード数から求めた出現確率が表４０−７の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−７の７番目に７番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．０１(２進)＝０．２５(１０進)であるから符号化の結果は「０１」になる。
【００７８】
７レコード目の符号化の後に更新された８レコード目の出現頻度と出現確率が図２１（ｂ）の表４０−８に示されている。表４０−８においては、７レコード目で「０」が現れた箇所だけ頻度が１増加されている。７レコード目で新たに「１」が現れた３ビット目と５ビット目の箇所の頻度は、以前の値のままである。また、総レコード数４１−８が９に増加されている。頻度と総レコード数から求めた出現確率が表４０−８の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−８の８番目に８番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．０１(２進)＝０．２５(１０進)であるから符号化の結果は「０１」になる。
【００７９】
８レコード目の符号化の後に更新された９レコード目の出現頻度と出現確率が図２２（ａ）の表４０−９に示されている。表４０−９においては、８レコード目で「０」が現れた箇所だけ頻度値が１増加されている。８レコード目で新たに「１」が現れた３ビット目と５ビット目の箇所の頻度は、以前の値のままである。また、総レコード数４１−９が１０に増加されている。頻度と総レコード数から求めた出現確率が表４０−９の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−９の９番目に９番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．１０１０１(２進)＝０．６５６２５(１０進)であるから符号化の結果は「１０１０１」になる。
【００８０】
９レコード目の符号化の後に更新された１０レコード目の出現頻度と出現確率が図２２（ｂ）の表４０−１０に示されている。表４０−１０においては、９レコード目で「０」が現れた箇所だけ頻度が１増加されている。９レコード目で新たに「１」が現れた３ビット目と４ビット目の箇所の頻度は、以前の値のままである。また、総レコード数４１−１０が１１に増加されている。頻度と総レコード数から求めた出現確率が表４０−１０の下の段に記載されている。そして、この出現確率から行った算術符号化結果が、符号化データ４２−１０の１０番目に１０番目のレコードに対応して示されている。算術符号化のレンジの値が変化していることが分かる。０．１０１１１１(２進)＝０．７３４３７５(１０進)であるから符号化の結果は「１０１１１１」になる。
【００８１】
このように、頻度の更新、算術符号化を繰り返すことで符号化を行う。
上記ビットごとの分割で、算術符号化を用いる場合には、以下のような効果がある。
すなわち、レコード全体を１カラムと見做せば従来技術と同様の圧縮になるが、本実施形態の例で必要とする頻度表の大きさは８ビットのレコードをビット単位に分割した場合8+1=9であるが、従来技術では256の大きさを必要とする。なお、出現確率は頻度表から計算できるので別途記憶する必要はない。
【００８２】
仮にレコード長が32ビットだとすると本実施形態の例では33、従来技術では2の32乗=4294967296になり、レコード長が長いデータではレコード全体を1カラムと見做す方法は現実的には不可能になる。分割を行った場合全体で１種類の辞書を持つ従来の圧縮技術を用いる方法よりも本実施形態の例の方法の方が高い圧縮効果が得られる。
【００８３】
図２３〜図３１は、本実施形態の復号化方法の処理例を示す。
図２３は、図１４に示す蓄積型ハフマン符号化方法により符号化された符号化データを復号する復号化方法を説明する図である。
【００８４】
事前に図１４に示す蓄積型ハフマン符号化方法により符号化された符号化データを復号すること、即ち、４ビットのカラムが２つからなる８ビットのレコードを扱うことを決めておく。またハフマン符号を求める方式も取り決めておく。
【００８５】
さらに復号側では事前に図２３に示す表５０−１を用意する。上記の取り決めにより１６（２の４乗）行２ブロックからなる表５０−１ができる。また表５０−１のa列以外の列は空欄にしておく。
【００８６】
次に符号化で作成されたシンボルの発生頻度を列ｂに読み込む。この場合３２個の整数値を読み込むことになる。この発生頻度を基に列cの出現確率を計算しハフマン木を作成しハフマン符号を列ｅに求めて表５０−１を完成させる。ハフマン符号の計算手順は符号化と同一の手順を用いる必要がある。
【００８７】
列bの発生頻度ではなく列cの出現確率を授受する方法もある。また列eのハフマン符号表を授受することもでき、この場合はハフマン符号を求める方式は事前に取り決めておく必要はない。
【００８８】
次に符号化ビット列を読み込み表５０−１から復号化データを求める。ハフマン符号は接頭符号であるから符号化ビット列を先頭から順に復号化することができる。特別な区切り記号は必要ない。
【００８９】
表５０−１を用いて、符号化データ５１−１を復号化したものが復号レコード５１−２である。符号化データ５１−１の第１行を見ると、符号化データは「００」となっている。表５０−１の列ａと列ｅを見ると、左カラムにおいては、符号化データ「０」は、シンボル列「００１０」に対応し、右カラムにおいては、符号化データ「０」は、シンボル列「１０００」に対応している。従って、符号化データ「００」は、復号化後は、「００１０１０００」となる。符号化データ５１−１の第３行まで同様である。
【００９０】
符号化データ５１−１の第４行は「０１０」となっている。表５０−１から、左コラムでは、「０１」という符号は存在しないので、左コラムの符号化データとして「０」を取る。これは、復号化後は「００１０」に対応する。右コラムの符号化データは「１０」となるので、表５０−１を見ると、符号化後は「１１００」となる。従って、復号化後のシンボル列は、「００１０１１００」となる。以下同様にして、符号化データ５１−１を復号化することが出来る。
【００９１】
図２４〜図２６は、図１５〜図１７に示す適応型ハフマン符号化方法により符号化された符号化データを復号する復号化方法を説明する図である。
事前に図１５〜図１７に示す適応型ハフマン符号化方法により符号化された符号化データを復号すること、即ち、４ビットのカラムが２つからなる８ビットのレコードを扱うことを決めておく。またハフマン符号を求める方式も取り決めておく。
【００９２】
復号側では事前に図２４（ａ）に示す表５０−２を用意する。上記の取り決めにより１６（２の４乗）行２ブロックからなる表ができる。この方法では事前に頻度表の授受を行わないので発生頻度の初期値は符号化時と同様にラプラススムージングを用いてすべて「1」としてハフマン符号を計算する。
【００９３】
ここで最初の符号化データ「００１０１０００」を領域５１−２に読み込んだ時点で表５０−２のe列から対応する符号を求めればa列が復号化データである。これを左のカラムと右のカラムについて行い、２つの復号化データを表５１−３上で結合することにより、符号化前のレコードを復号することができる。ハフマン符号は接頭符号であるから符号化ビット列を先頭から順に復号化することができるので、特別な区切り記号は必要ない。
【００９４】
左カラムの復号化データは「００１０」、右カラムの復号化データは「１０００」であるから表５０−２の該当する欄の頻度に１加算する。この加算した頻度を基に図２４（ｂ）に示す表５０−３のハフマン符号を求める。
【００９５】
ここで２レコード目のデータ「０１０１０１」を読み込む。最初に左側のe列から１カラム目を復号化する。つまり、符号化データの先頭から「０１０」を見つけて、これが、表５０−３において復号化後のデータ「００１０」に対応することを取得する。続けて右側のe列から２カラム目を復号化する。つまり、符号化データの残りが「１０１」になっていることから、表５０−３を見ると、これは、「１０００」に対応することが分かる。従って、復号化後の右カラムのデータは「１０００」であることを取得する。そして、左カラムと右カラムの復号化後のシンボル列を結合し、「００１０１０００」を得る。そして、表５０−３を更新する。ハフマン符号は接頭符号であるから区切り記号は必要ない。この処理を繰り返すことで復号化ができる。
【００９６】
図２５（ａ）においては、３番目の符号化データが「００１００１」であるので、表５０−４の左カラムから「００１」が「００１０」に、右カラムから「００１」が「１０００」に対応することが分かる。従って、３番目の復号化後シンボル列は、「００１０１０００」となる。
【００９７】
また、図２５（ｂ）に示すように４番目の符号化データは「００１０００１０」であるので、表５０−５から、左カラムの「００１」が「００１０」に対応し、右カラムの「０００１０」が「１１００」に対応すると分かる。従って、４番目の復号化後のシンボル列が「００１０１１００」であることがわかる。
【００９８】
図２６（ａ）に示すように、５番目の符号化データが「０００００１１」であるので、表５０−６の左カラムから「０００００」が「１０１０」に、右カラムから「１１」が「１０００」に対応することが分かる。従って、５番目の復号化後シンボル列は、「１０１０１０００」となる。
【００９９】
また、６番目の符号化データは「０１０１」であるので、表５０−７から、左カラムの「０１」が「００１０」に対応し、右カラムの「０１」が「１０００」に対応すると分かる。従って、６番目の復号化後のシンボル列が「００１０１０００」であることがわかる。以上の処理を繰り返すことですべてのレコードの復号化を行うことができる。
【０１００】
図２７〜図３１は、図１８〜図２２に示す適応型算術符号化方法により符号化された符号化データを復号する復号化方法を説明する図である。
事前に図１８〜図２２に示す適応型算術符号化方法により符号化された符号化データを復号すること、即ち、１ビットのカラム×８カラムからなる８ビットのレコードを扱うことを決めておく。また算術符号化の方式も取り決めておく。
【０１０１】
復号側では事前に図２７（ａ）に示す表６０−１を用意する。上述の取り決めにより８ブロックからなる表ができる。各ブロックはカラムデータが「０」の時と「１」の時の２通りが必要だが符号化の時と同様に「０」の時のみを記憶する。適応型では事前に頻度表の授受を行わないので発生頻度の初期値は符号化時と同様にラプラススムージングを用いてすべて「１」として出現確率を計算したのが図２７（ａ）に示す表６０−１である。
【０１０２】
ここで１レコード目のデータ「００１０１」を領域６１−２に読み込む。なお、算術符号は接頭符号ではないのでレコード区切りが判定できるプロトコルを使う必要がある。
受信データ「００１０１」を２進小数と解釈すると符号化データ０．１５６２５が得られる。このデータに基づきカラム値を判定しながら算術符号化と同様の方法でレンジの分割を行うことで表６１−３に示すように符号化前のレコードである復号化データ「００１０１０００」が得られる。
【０１０３】
レコード数に１加算し、この復号化データ「００１０１０００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図２７（ｂ）に示す表６０−２である。
【０１０４】
ここで２レコード目のデータ「０１」を読み込む。
受信データ「０１」を２進小数と解釈すると符号化データ０．２５が得られる。このデータに基づきカラム値を判定しながら算術符号化と同様の方法でレンジの分割を行うことで復号化データ「００１０１０００」が得られる。以下、この２番目の復号化データ取得のための処理例を念のため詳細に説明する。
【０１０５】
表６０−２には１番目の符号化データの入力により、図２７（ｂ）に示す頻度が記載されている。入力された２番目の符号化値「01」は２進小数 0.01 の小数部分であり、１０進表現では0.25となる。この１０進表現の値「０．２５」と復号された各カラムの「0」の頻度から求めたカラム（ビット）ごとの「0」の出現確率に基づいて、ビットごとに復号化データを順次求めていく。最初のビットを復号化するときのレンジの初期値は[0,1)である。カラムごとの「0」の出現確率に従ってレンジ分割を繰り返す。分割値は「(レンジの最大 − レンジの最小)*「0」の確率 + レンジの最小」の計算式により計算される。
【０１０６】
まず、表６０−２の最初のカラムに記載された「0」の頻度「2」とレコード数「3」から表６０−２に記載されたように出現確率「0.667」を求め、上述の式により現在のレンジの分割値を求める。現在のレンジは初期値の[0,1)であるから、算出される分割値は「0.667」である。この分割値を求める処理は図５Ｂに示すカラム分割範囲判定手段２０−１の処理に対応する。（なお、出現確率は頻度が更新された時に予め計算しておくこともできる。）
【０１０７】
復号されたレコードの各カラムの値は、符号値<=分割値のとき「0」、符号値>分割値のとき「1」になる。今の場合、分割値は「0.667」、符号値は「0.25」であるから、最初のカラムの復号されたビット値は「0」になる。この処理は、図５Ｂのカラム１復号化手段１４ａ−１の処理に対応する。また、最初のカラムのビット値が「0」、分割値は「0.667」であるから、次のレンジを分割値より小さい範囲の[0, 0.667)とする。この処理は、図５Ｂのレンジ分割手段２１−１の処理に対応する。
【０１０８】
次に表６０−２の２番目のカラムの「0」の出現頻度から現在のレンジ[0, 0.667)の分割値「0.444」を求め、この分割値と符号値「0.25」の大小関係から２番目のカラムの復号されたビット値は「0」になる。また、この復号ビット値により次のレンジは[0, 0.444)になる。これらの２番目のカラムについての処理は、最初のカラムについての処理と同様に、図５Ｂに記載されたカラム分割範囲判定手段２０−２、カラム２復号化手段１４ａ−２及びレンジ分割手段２１−２による処理対応する。
【０１０９】
以下同様に、に表６０−２の３番目のカラムの「0」の出現頻度から現在のレンジ[0, 0.444)の分割値「0.148」を求め、この分割値と符号値「0.25」の大小関係から３番目のカラムの復号されたビット値は「1」になる。また、この復号ビット値により次のレンジは[0.148, 0.444)になる。
【０１１０】
上述の処理を順次カラムごとに繰り返すことで１つのレコードの復号化が完成する。
このように、順次復号化されるカラムデータを図５Ｂの混合手段１７ａで混合して、１レコードの復号化データとする。
【０１１１】
次に図２７（ｂ）に示す表６０−２のレコード数に１加算し、２番目の復号化データ「００１０１０００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したものが図２８（ａ）に示す表６０−３である。
【０１１２】
ここで３レコード目のデータ「０１」を読み込む。受信データ「０１」を２進小数と解釈すると符号化データ０．２５が得られる。このデータに基づきカラム値を判定しながら２番目のレコードについて説明したと同様の方法でレンジの分割を行うことで復号化データ「００１０１０００」が得られる。
【０１１３】
レコード数に１加算し、この復号化データ「００１０１０００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図２８（ｂ）に示す表６０−４である。
【０１１４】
ここで４レコード目のデータ「１」を読み込む。受信データ「１」を２進小数と解釈すると符号化データ０．５が得られる。このデータに基づきカラム値を判定しながら先に説明したと同様の方法でレンジの分割を行うことで復号化データ「００１０１１００」が得られる。
【０１１５】
レコード数に１加算し、この復号化データ「００１０１１００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図２９（ａ）に示す表６０−５である。
【０１１６】
ここで５レコード目のデータ「１１１」を読み込む。受信データ「１１１」を２進小数と解釈すると符号化データ０．８７５が得られる。このデータに基づきカラム値を判定しながら先に説明したと同様の方法でレンジの分割を行うことで復号化データ「１０１０１０００」が得られる。
【０１１７】
レコード数に１加算し、この復号化データ「１０１０１０００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図２９（ｂ）に示す表６０−６である。
【０１１８】
ここで６レコード目のデータ「０１」を読み込む。受信データ「０１」を２進小数と解釈すると符号化データ０．２５が得られる。このデータに基づきカラム値を判定しながら先に説明したと同様の方法でレンジの分割を行うことで復号化データ「００１０１０００」が得られる。
【０１１９】
レコード数に１加算し、この復号化データ「００１０１０００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図３０（ａ）に示す表６０−７である。
【０１２０】
ここで７レコード目のデータ「０１」を読み込む。受信データ「０１」を２進小数と解釈すると符号化データ０．２５が得られる。このデータに基づきカラム値を判定しながら先に説明したと同様の方法でレンジの分割を行うことで復号化データ「００１０１０００」が得られる。
【０１２１】
レコード数に１加算し、この復号化データ「００１０１０００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図３０（ｂ）に示す表６０−８である。
【０１２２】
ここで８レコード目のデータ「０１」を読み込む受信データ「０１」を２進小数と解釈すると符号化データ０．２５が得られる。このデータに基づきカラム値を判定しながら先に説明したと同様の方法でレンジの分割を行うことで復号化データ「００１０１０００」が得られる。
【０１２３】
レコード数に１加算し、この復号化データ「００１０１０００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図３１（ａ）に示す表６０−９である。
【０１２４】
ここで９レコード目のデータ「１０１０１」を読み込む。受信データ「１０１０１」を２進小数と解釈すると符号化データ０．６５６２５が得られる。このデータに基づきカラム値を判定しながら先に説明したと同様の方法でレンジの分割を行うことで復号化データ「００１１００００」が得られる。
【０１２５】
レコード数に１加算し、この復号化データ「００１１００００」の「０」であるカラムの頻度に１を加算して改めて出現確率を計算したのが図３１（ｂ）に示す表６０−１０である。
【０１２６】
ここで１０レコード目のデータ「１０１１１１」を読み込む。受信データ「１０１１１１」を２進小数と解釈すると符号化データ０．７３４３７５が得られる。このデータに基づきカラム値を判定しながら先に説明したと同様の方法でレンジの分割を行うことで復号化データ「００１１１１００」が得られる。
【０１２７】
図３２は、本実施形態をプログラムで実装する場合の、プログラムを実行する例示的コンピュータのハードウェア環境図である。
例示的コンピュータ６０は、例えば、ＣＰＵ５０、ＲＯＭ５１、ＲＡＭ５２、ネットワークインタフェース５３、記憶装置５６、読み書きドライブ５７、入出力デバイス５９を含む。これらは、バス５５によって、相互に接続される。
【０１２８】
ＣＰＵ５０は、本実施形態を実装するプログラムを実行する。プログラムは、記憶装置５６あるいは、可搬記録媒体５８に記録され、これらから、ＲＡＭ５２に展開されることによって、ＣＰＵ５０で実行可能となる。
【０１２９】
記憶装置５６は、例えば、ハードディスクなどである。可搬記録媒体５８は、フレキシブルディスクなどの磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、Ｂｌｕ−Ｒａｙなどの光ディスク、ＩＣメモリなどの半導体メモリなどを含み、読み書きドライブ５７に挿入されて、可搬記録媒体５８への読み書きが行われる。本実施形態においては、本実施形態を実装するプログラムが記憶装置５６や可搬記録媒体５８に記録されるのみならず、符号化対象の入力固定長データが一旦これらに記録されてから、ＲＡＭ５２に読み出されて、符号化されても良い。
【０１３０】
ＲＯＭ５１は、バス５５を介しての通信や、ネットワークインタフェース５３、入出力デバイス５９の機能を実行するためのＢＩＯＳなどの基本プログラムが格納される。ＣＰＵ５０がこれらの基本プログラムを実行することにより、例示的コンピュータ６０の基本機能が実現される。
【０１３１】
入出力デバイス５９は、例示的コンピュータ６０を使用するユーザからの情報の入力を受け付けたり、ユーザへの情報の出力を行ったりするために用いられる。入出力デバイス５９は、例えば、キーボード、マウス、タッチパネル、ディスプレイ、プリンタ等を含む。
【０１３２】
ネットワークインタフェース５３は、例示的コンピュータ６０がネットワーク５４を介して、他のコンピュータやネットワーク装置等と通信を行うために用いられる。本実施形態においては、本実施形態を実装するプログラムが、ネットワーク５４を介して、記憶装置５６あるいは可搬記録媒体５８に記録されることが出来る。また、ネットワーク５４に接続された他のコンピュータやネットワーク装置上で、本実施形態を実装するプログラムを実行し、その入出力データの送受信を、ネットワーク５３を介して行ってもよい。更に、符号化されるべき固定長データは、ネットワーク５４に接続された、センサを有する端末から送信されてくることが出来る。
【０１３３】
ネットワーク５４は、有線ネットワーク、無線ネットワークなどコンピュータ同士あるいはコンピュータとネットワーク装置との間で通信を行うことができるものであればいずれのものであってもよい。一例では、ネットワーク５４は、インターネット、ＬＡＮ(Local Area Network）、ＷＡＮ（Wide Area Network）、固定電話ネットワーク、携帯電話ネットワーク、アドホックネットワーク、ＶＰＮ（Virtual Private Network）、センサネットワークなどを含むことが出来る。
【０１３４】
以上説明したように、本発明の一側面による本実施形態においては、固定長データの固定長ビット列が、複数の決められたフィールドに記述される異なる意味を持つデータから構成され、固定長データごとに、同じ位置にあるフィールドに記述されるデータが同じ種類のデータである場合に、固定長データの固定長ビット列を任意のビット数のカラムに分割し、カラム相互には個別に、カラム方向に連続して符号化することにより、圧縮率が従来の符号化方法より高い圧縮符号化を実現することが出来る。
【０１３５】
圧縮率の向上の例としては、本発明者による本実施形態を利用した圧縮符号化装置の試作機によれば、７０，０１６バイト、５６０，１２８ビットの元データに対し、１３，５３２バイト、９４，０００ビット（パッディングビットを含まず）まで圧縮することが出来た。ｇｚｉｐが１４，４６４バイト、１１５，７１２ビットの圧縮、ｂｚｉｐ２が１２，９８５バイト、１０３，８８０ビットの圧縮であったことから、本実施形態の圧縮符号化方法の有効性が理解できる。
【０１３６】
また、本実施形態の符号化装置は、ＦＰＧＡ（Field Programmable Gate Array）などのハードウェアによって実装することも出来る。
例えば、本実施形態の符号化装置は、一部をハードウェアで、他の部分をソフトウェアで、ハードウェアとソフトウェアを組み合わせて実現することも出来る。
【０１３７】
また、上記各実施形態は、相互に独立に、あるいは、相互に組み合わされて実現されることが出来る。
上記実施形態において、適応型符号化方法を用いる実施形態においては、逐次圧縮符号化することができ、一旦データをまとめて格納する必要が無いので、リアルタイムに符号化を実行することが出来る。
【符号の説明】
【０１３８】
１      センサネットワーク
２      センサ
３      ゲートウェイ
４      処理装置
１０、１０ａ、１６      分割手段
１１−１〜１１−ｍ、１１ａ−１〜１１ａ−ｍ      カラム１〜ｍレジスタ
１２−１〜１２−ｍ      カラム１〜ｍ符号化手段
１２ａ―１〜１２ａ−ｍ、２０−１〜２０−ｍ      カラム１〜ｍカラム分割範囲判定手段
１３、１７、１７ａ      混合手段
１４−１〜１４−ｍ、１４ａ−１〜１４ａ−ｍ      カラム１〜ｍ復号化手段
１５−１〜１５−ｍ      カラム１〜ｍ頻度表、符号化表
１８−１〜１８−ｍ、２１−１〜２１−ｍ      レンジ分割手段
１９      符号化手段
５０      ＣＰＵ
５１      ＲＯＭ
５２      ＲＡＭ
５３      ネットワークインタフェース
５４      ネットワーク
５５      バス
５６      記憶装置
５７      読み書きドライブ
５８      可搬記録媒体
５９      入出力デバイス
【図１】
2018022933.tif 000003
【図２】
2018022933.tif 000004
【図３】
2018022933.tif 000005
【図４Ａ】
2018022933.tif 000006
【図４Ｂ】
2018022933.tif 000007
【図５Ａ】
2018022933.tif 000008
【図５Ｂ】
2018022933.tif 000009
【図６】
2018022933.tif 000010
【図７】
2018022933.tif 000011
【図８】
2018022933.tif 000012
【図９】
2018022933.tif 000013
【図１０】
2018022933.tif 000014
【図１１】
2018022933.tif 000015
【図１２】
2018022933.tif 000016
【図１３】
2018022933.tif 000017
【図１４】
2018022933.tif 000018
【図１５】
2018022933.tif 000019
【図１６】
2018022933.tif 000020
【図１７】
2018022933.tif 000021
【図１８】
2018022933.tif 000022
【図１９】
2018022933.tif 000023
【図２０】
2018022933.tif 000024
【図２１】
2018022933.tif 000025
【図２２】
2018022933.tif 000026
【図２３】
2018022933.tif 000027
【図２４】
2018022933.tif 000028
【図２５】
2018022933.tif 000029
【図２６】
2018022933.tif 000030
【図２７】
2018022933.tif 000031
【図２８】
2018022933.tif 000032
【図２９】
2018022933.tif 000033
【図３０】
2018022933.tif 000034
【図３１】
2018022933.tif 000035
【図３２】
2018022933.tif 000036
【手続補正書】
【提出日】平成29年1月20日(2017.1.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
予め決められたフィールドのうちの同一のフィールドに同種のデータが記述される、１以上のフィールドを含む固定長ビット列からなるレコードを所定のビット幅のカラムに、前記フィールドの境界とは無関係に分割することと、
複数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法により複数の前記レコードを符号化することと、
を含む圧縮符号化方法。
【請求項２】
前記カラムに分割することは、ビット単位で分割することである、請求項１に記載の圧縮符号化方法。
【請求項３】
請求項１に記載の圧縮符号化方法によって圧縮符号化されたデータを復号化する復号化方法であって、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号することと、
該カラムごとに復号された復号化データを結合することと、
を含む復号化方法。
【請求項４】
請求項１記載の圧縮符号化方法をコンピュータに実行させるプログラム。
【請求項５】
請求項３記載の復号化方法をコンピュータに実行させるプログラム。
【請求項６】
予め決められたフィールドのうちの同一のフィールドに同種のデータが記述される、１以上のフィールドを含む固定長ビット列からなるレコードを所定のビット幅のカラムに、前記フィールドの境界とは無関係に分割する分割手段と、
複数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法により複数の前記レコードを符号化する符号化手段と、
を備える圧縮符号化装置。
【請求項７】
請求項６の圧縮符号化装置によって圧縮符号化されたデータを復号化する復号化装置において、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号する復号化手段と、
該カラムごとに復号された復号化データを結合する混合手段と、
を含む復号化装置。
【手続補正書】
【提出日】平成29年6月14日(2017.6.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信元から順次送信される複数のデータの内の同一属性のデータが記述される１以上のフィールドを含む固定長ビット列からなるレコードを、２以上の所定数一時的に蓄積する蓄積ステップと、
前記２以上の所定数のレコードを、所定のビット幅のカラムに、前記フィールドの境界とは無関係に分割する分割ステップと、
前記２以上の所定数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法により２以上の所定数の前記レコードを符号化する符号化ステップと、
を含み、
前記蓄積ステップ、前記分割ステップ及び前記符号化ステップを繰り返すことを特徴とするデータ圧縮符号化方法。
【請求項２】
前記所定のビット幅のカラムに分割することは、ビット幅１のカラムに分割することである、請求項１に記載のデータ圧縮符号化方法。
【請求項３】
請求項１に記載のデータ圧縮符号化方法によって圧縮符号化されたデータを復号化する復号化方法であって、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号することと、
該カラムごとに復号された復号化データを結合することと、
を含む復号化方法。
【請求項４】
請求項１記載のデータ圧縮符号化方法をコンピュータに実行させるプログラム。
【請求項５】
請求項３記載の復号化方法をコンピュータに実行させるプログラム。
【請求項６】
送信元から順次送信される複数のデータの内の同一属性のデータが記述される１以上のフィールドを含む固定長ビット列からなるレコードを、２以上の所定数一時的に蓄積する蓄積手段と、
前記２以上の所定数のレコードを、所定のビット幅のカラムに、前記フィールドの境界とは無関係に分割する分割手段と、
前記２以上の所定数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法により２以上の所定数の前記レコードを符号化する符号化手段と、
を含み、
前記蓄積手段、前記分割手段及び前記符号化手段による処理を繰り返すことを特徴とするデータ圧縮符号化装置。
【請求項７】
請求項６のデータ圧縮符号化装置によって圧縮符号化されたデータを復号化する復号化装置において、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号する復号化手段と、
該カラムごとに復号された復号化データを結合する混合手段と、
を含む復号化装置。
【手続補正書】
【提出日】平成29年12月19日(2017.12.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信元から順次送信される複数のデータの内の同一属性のデータが記述される１以上のフィールドを含む固定長ビット列からなるレコードを、２以上の所定数一時的に蓄積する蓄積ステップと、
前記２以上の所定数のレコードを所定のビット幅のカラムに、前記フィールドの境界とは無関係に分割する分割ステップと、
前記２以上の所定数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法のための符号化表を前記カラムごとに作成するとともに、前記２以上の所定数のレコードごとに、前記カラムごとに作成した符号化表により前記レコードを構成する各カラムを符号化し、該符号化された前記カラムを結合して順次送信先へ出力する符号化ステップと、
を含み、
前記蓄積ステップ、前記分割ステップ及び前記符号化ステップを繰り返すことを特徴とするデータ圧縮符号化方法。
【請求項２】
前記所定のビット幅のカラムに分割することは、ビット幅１のカラムに分割することであり、前記符号化ステップは、前記出現確率に基づいてエントロピー符号化方法のための符号化表を前記カラムごとに作成するとともに、前記２以上の所定数のレコードごとに、前記カラムごとに作成した符号化表により前記レコードを構成する各カラムを符号化し、該符号化された前記カラムを結合して順次送信先へ出力することにかえて、前記出現確率に基づいて前記２以上の所定数のレコードごとに算術符号化方法により前記レコードを符号化し、該符号化ステップで符号化された該レコードを順次送信先へ出力する、請求項１に記載のデータ圧縮符号化方法。
【請求項３】
請求項１に記載のデータ圧縮符号化方法によって圧縮符号化されたデータを復号化する復号化方法であって、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号することと、
該カラムごとに復号された復号化データを結合することと、
を含む復号化方法。
【請求項４】
請求項１記載のデータ圧縮符号化方法をコンピュータに実行させるプログラム。
【請求項５】
請求項３記載の復号化方法をコンピュータに実行させるプログラム。
【請求項６】
送信元から順次送信される複数のデータの内の同一属性のデータが記述される１以上のフィールドを含む固定長ビット列からなるレコードを、２以上の所定数一時的に蓄積する蓄積手段と、
前記２以上の所定数のレコードを所定のビット幅のカラムに、前記フィールドの境界とは無関係に分割する分割手段と、
前記２以上の所定数のレコードにわたって同一位置のカラムにおけるビット値の出現確率をカラムごとに求め、該出現確率に基づいてエントロピー符号化方法のための符号化表を前記カラムごとに作成する符号化表作成手段と、
前記２以上の所定数のレコードごとに、前記カラムごとに作成した符号化表により前記レコードを構成する各カラムを符号化し、該符号化された前記カラムを結合して順次送信先へ出力する符号化手段と、
を含み、
前記蓄積手段、前記分割手段及び前記符号化手段による処理を繰り返すことを特徴とするデータ圧縮符号化装置。
【請求項７】
請求項６のデータ圧縮符号化装置によって圧縮符号化されたデータを復号化する復号化装置において、
前記圧縮符号化されたデータをカラム毎にエントロピー符号の復号化方法により復号する復号化手段と、
該カラムごとに復号された復号化データを結合する混合手段と、
を含む復号化装置。