JP6801461B2 - 情報処理装置、情報処理方法、及びプログラム - Google Patents

情報処理装置、情報処理方法、及びプログラム Download PDF

Info

Publication number
JP6801461B2
JP6801461B2 JP2017002818A JP2017002818A JP6801461B2 JP 6801461 B2 JP6801461 B2 JP 6801461B2 JP 2017002818 A JP2017002818 A JP 2017002818A JP 2017002818 A JP2017002818 A JP 2017002818A JP 6801461 B2 JP6801461 B2 JP 6801461B2
Authority
JP
Japan
Prior art keywords
data
matrix
entropy
unit
byte
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017002818A
Other languages
English (en)
Other versions
JP2018113583A (ja
Inventor
唯 野間
唯 野間
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017002818A priority Critical patent/JP6801461B2/ja
Priority to PCT/JP2017/046673 priority patent/WO2018131468A1/ja
Publication of JP2018113583A publication Critical patent/JP2018113583A/ja
Priority to US16/286,157 priority patent/US10644720B2/en
Application granted granted Critical
Publication of JP6801461B2 publication Critical patent/JP6801461B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • H03M7/3062Compressive sampling or sensing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3066Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、データの可逆圧縮技術に関する。
監視カメラやマイク、センサーがインターネットでつながって、それぞれからデータを取得し、それらを分析・照合しビジネスに生かすことが求められている。そのためにはデータを取得し、利活用できる形式で保存することが望ましい。
しかし全てのセンサーからデータを取得し、データ量が莫大になった場合には、テープデバイス等の大量のデータを記録可能な装置に保持する場合がある。しかしそれらの装置は読み出し速度が遅く、利活用には向いていない。
大量のデータを圧縮しハードディスク等に保持することが好ましいが、そのためのデータ圧縮技術が重要である。また、ネットワークトラフィックが増大する為、センサーデバイスでデータ圧縮し、それを転送することでトラフィック量を下げることも重要である。
このような観点から、同じビットが連続する確率が高くなるようにビット列を並べ替えた後、多値の画像データの可逆圧縮を行う技術、入力したデジタル画像信号に応じて得られる要素に基づいてマルチ多段変換関数を算出し、その係数を可逆性を満たすように、かつ、出力エントロピーが小さくなるように決定する技術等が知られている。
特開2001−309185号公報 特開2003−230139号公報
David Salomon,"Data Compression",ISBN:978-0-387-40697-8 Jean-Pierre Serre,"A Course in Arithmetic (Graduate Texts in Mathematics)",Springer-Verlag New York,1973
可逆圧縮技術は、主に、LZ系の辞書圧縮、ランレングス圧縮、及びエントロピー符号化に分けられる。これらのいずれの可逆圧縮技術は、エントロピーを削減することができない。
上述したマルチ多段変換関数を用いた技術においても、マルチ多段変換関数の係数の決定方法について開示がなく、エントロピーを削減する課題を十分に解決することができない。
したがって、1つの側面では、データの可逆圧縮においてエントロピーを削減することを目的とする。
一態様によれば、複数の整数で表現されるデータを指定した圧縮要求を受け付ける圧縮要求受付部と、前記圧縮要求で指定される前記データを行列で表したデータ行列に、行列式が1である変換行列を乗算して得られた行列の各要素の値を所定数値で剰余をとって、エントロピーを削減するエントロピー削減部とを有することを特徴とする情報処理装置が提供される。
また、上記課題を解決するための手段として、プログラム、及び、情報処理方法とすることもできる。
データの可逆圧縮においてエントロピーを削減することができる。
トーラスの例を示す図である。 記号出現頻度(エントロピー)の変更方法を説明するための図である。 2バイトの組の出現頻度の結果例を示す図である。 図3の結果例に基づく、1バイト記号の出現頻度の結果例を示す図である。 図4の結果例に基づく1バイト記号のヒストグラムを示す図である。 図3の結果例に基づく1バイト記号の二次元のヒストグラムを示す図である。 変換後の2バイトの組の出現頻度の結果例を示す図である。 図7の結果例に基づく、変換後の1バイト記号の出現頻度の結果例を示す図である。 図8の結果例に基づく、記号出現頻度変更後の、1バイト記号のヒストグラムを示す図である。 図7の結果例に基づく、記号出現頻度変更後の1バイト記号の二次元のヒストグラムを示す図である。 格納形式の例を示す図である。 情報処理装置のハードウェア構成図である。 第1実施例における情報処理装置の機能構成例を示す図である。 第1実施例における圧縮処理の概要を説明するためのフローチャートである。 第1実施例における変換行列探索処理を説明するためのフローチャート図である。 第1実施例におけるエントロピー削減処理を説明するためのフローチャート図である。 第1実施例における解凍処理を説明するためのフローチャート図である。 第1実施例におけるエントロピー増大処理を説明するためのフローチャート図である。 第2実施例における機能構成例を示す図である。 数値変換テーブルの一例を示す図である。 トーラスの例を示す図である。 図20の数値変換テーブルの改良例を示す図である。 「32」を含む二次元トーラスの例を示す図である。 図20の数値変換テーブルの作成処理を説明するためのフローチャート図である。 図22の数値変換テーブルの作成処理を説明するためのフローチャート図である。 第2実施例における圧縮処理の概要を説明するためのフローチャート図である。 第2実施例における数値変換処理を説明するためのフローチャート図である。 第2実施例における解凍処理の概要を説明するためのフローチャート図である。 第2実施例における逆数値変換処理を説明するためのフローチャート図である。
以下、本発明の実施の形態を図面に基づいて説明する。主な可逆圧縮技術として、LZ系の辞書圧縮、ランレングス圧縮、及びエントロピー符号化に分けられる。先ず、これらの可逆圧縮技術について簡単に説明する。
辞書圧縮は、ファイルをバイトから成る列と見做し、先頭からバイト列を読み込み、同じ部分バイト列が現れた場合、既に出現しているバイト列の先頭位置へのポインタと、一致する文字数とを示す符号で、部分バイト列を置換する技術である。
ランレングス圧縮は、同じバイト文字が連続する場合、連続するバイト文字と連続回数とを示す符号へと置換する技術である。
エントロピー符号化は、例えば、ハフマン符号化等が知られており、バイト文字の出現頻度から計算されるエントロピーに基づいて、多数回出現する文字を短いビット列に変換してデータ量を削減する技術である。
データ量を削減する観点において、画像、音声、センサーデータ等は、取得される信号の数値間で相関が強いデータは、隣り合う数値が似ていることに着目する。信号の数値列を高次元の空間中の点とし、適当な座標変換を行うことで、元の信号の殆どの情報を少ない数の数値で表すことができる。画像であれば、離散コサイン変換、ウェーブレット変換等を用いればよい。高次元での数値演算ができれば、信号を少ない数値で表すことで、0となる数値を増やすことや、同じ数値を増やすことが可能となり、高効率可逆圧縮が可能となる。
このような数値演算は、浮動小数点による演算か整数演算に分けられる。浮動小数演算は、小数点のまるめがある為、非可逆な計算である。整数演算は、可逆にすることは可能だが、例えば、0から255の数値の差は−255から+255の範囲に入るなど、数値の値域が定義域より広がってしまう。
つまり、一例として、1バイトデータと1バイトデータの和や差は2バイトで表され、更に、それらの和や差を表わす場合には、より長いバイトが必要となり、演算処理中のデータ量は増えることになる。
上述した可逆圧縮技術では、エントロピーの削減を十分に行うことができず、また、数値演算には、以下の問題がある。
・整数値データに対し、それらを浮動小数点数に変換し浮動小数演算を行うと、丸め誤差により可逆演算にならない。
・整数値データに対し整数値の演算を行った場合、例えば、0から255の数値の差は−255から+255の範囲に入るなど数値の値域の広がりを許容しなければ、可逆演算にならない。
まず、第1実施例では、
バイト列を高次元トーラス中の点と見なすことで、数値の範囲の広がりを抑止し、整数演算の範囲で可逆演算を可能とする。数直線を考え、0と256とを同一視することで、和も差も同じ円の内部に閉じることができる。このため、1バイトデータと1バイトデータとの和と差の結果を1バイトで表現できる。
また、Nバイトを組とすることで、トーラスからトーラスへの変換の行列演算を可能とし、エントロピーを削減する。つまり、トーラスからトーラスへの変換の行列演算を可能とすることで、データ量を増やすことなく、1バイトデータの出現頻度を偏らせることができ、結果、エントロピーを削減する。
更に、エントロピーが削減されたデータの圧縮及び解凍は、公知の技術を用いることができる。解凍後のデータに対しては、圧縮前に行ったエントロピー削減の手順の逆を行うことで元のデータを復元できる。
第1実施例は、
1.トーラスによるバイトの広がりの抑制
2.トーラスからトーラスへの変換の行列演算による記号出現頻度の変更
3.エントロピー削減のための変換行列の探索方法
4.エントロピー削減データの格納形式
5.データの圧縮
6.データの解凍
7.元データへの復元
により実現される。各要素1〜7について説明する。以下、256を一例とし、0と256を同一視した場合で説明するが、512、768等の1バイトの整数倍を、取り得る数値の範囲としてもよい。また、127などバイトより小さい整数を取り得る数値の範囲としてもよい。
<1.トーラスによるバイトの広がりの抑制>
全てのデータは、バイトの列として情報処理装置100(図12)の記憶部130に保持されている。1バイトの列と見なすと、1バイトの文字は、1から255の間の数値で表される。
数直線を考え0と256を同一視することで円を作る。これは情報処理装置100では整数pに対し256の剰余を取ることで実施される。以下、整数pに対し256の剰余を取ることを、“p%256”で表す。%はmoduloを示す。p=500の場合、500%256=244であることから、数値500は244で表わされる。16進数で表現すれば、0x01F4が0xF4に変換される。
数式で表すと、同値関係〜を整数p、qに対し、
Figure 0006801461
が、ある整数kで成り立つと定義すると、
Figure 0006801461
である。この円Sの上では1バイトの文字は0から255の数値として自然に表現される。
また、この円Sの上にある2つの数値の和や差は、同じ円の上にある。例えば、40と244との和は、
(40+244)%256=28
になり、差は、
(40-244)%256=52
になる。また、この円上の数値に対し整数値を乗算した結果も、同じ円の上にある。例えば、1バイト文字40に対する整数「8」の積は、
(8*40)%256=64
である。*は乗算を示す。
Nバイトに対し、それを長さをNとする1バイト文字の列とすれば、それぞれの成分を円の上にある数値と扱うことができ、和と差の演算を0から255の範囲内で行える。例えば、1バイト文字列(100, 200, 250)と1バイト文字列(150, 250, 50)の和は、
(100+150, 200+250, 250+50)%256 = (250, 194, 44)
である。この様な円達SxSx…xSは、N次元トーラスTと呼ばれる幾何構造である。また、1バイト文字列に対する整数値の乗算も、トーラスTの上にある。例えば、1バイト文字列(100, 200, 250)の整数「3」の乗算は、
(3*100, 3*200, 3*250)%256 = (44, 88, 238)
である。
長さをNとする1バイト文字の列の成すN次元トーラスTは、それぞれの成分が0から255の数値であり、N個の1バイトで表現することが可能である。つまり、NバイトをN次元トーラスTと見なすと、N個のバイトの和や積、さらに整数倍もNバイトで表現可能である。これを、バイト列のトーラスへの埋め込みと呼称する。
これにより、N個のバイトに数値演算をした結果はN個のバイトに抑制することが可能となる。従来の演算による数値の範囲の広がりによるデータ量の増大を考慮しなくてよい。第1実施例における効果の1つである。
図1は、トーラスの例を示す図である。図1では、Nが2の場合の二次元トーラスTを表わしている。図1全体は、
Figure 0006801461
の二次元空間であり、点(0,0)を通る縦横の線と、点(256,256)を通る縦横の線とで囲まれる矩形の領域がトーラスTを表わす。点(0,256)、点(0,512)及び点(0,768)を通る縦の線と、点(256,0)、点(512,0)及び点(768,0)を通る横の線は、それぞれ点(0,0)を通る縦線と横線と同一視される。
トーラスTで取り得る最大値は、「256」以外の数値であってもよい。例えば、対象データがテキストデータの場合、0から127のASCIIコードで書かれており、256よりも小さい数字「128」であってもよい。また他にも、二バイト以上の長さの文字を考えることで256よりも大きい数字、例えば「512」であってもよい。素数であってもよい。
暗号理論では整数を素数で剰余を取った数値で計算を進めることが広く行われており、それらは可逆である。しかし、1バイト記号を表すには、256よりも大きい素数の中で最も小さいものは「267」であり、9ビット以上を必要とする。特に現在広く使われている計算機では、9ビットは2バイトで表現する方が演算機の効率が良く、2バイトとして表してしまうとデータのサイズが大きくなってしまう。したがって、以下の説明では、トーラスTで取り得る最大値を「256」とする。
<2.トーラスからトーラスへの変換の行列演算による記号出現頻度の変更>
図2を参照して、第1実施例における、トーラスからトーラスへの変換による同一1バイト記号の出現頻度(エントロピー)の変更方法を説明する。図2は、記号出現頻度(エントロピー)の変更方法を説明するための図である。
先ず、N個のバイトから成る1バイト文字列を縦に並べ、
Figure 0006801461
と書く。全ての要素が整数である行列を整数系列行列と呼ぶ。N-by-N整数系列行列Aを、
Figure 0006801461
とする。以下、N-by-N整数系列行列Aを単に変換行列Aと呼ぶ場合がある。
変換行列Aをvに乗算でき、
Figure 0006801461
と表せる。変換行列Aの乗算の結果は、0から255の範囲を超えてしまうが、256での剰余を取ることでNバイトに戻すことができる。
Figure 0006801461
この数7における変換行列Aの乗算および256での剰余の計算は、コンピュータにより実行可能である。
一例として、Nが2であり、変換行列Aが
Figure 0006801461
の場合、図2(A)のトーラスTは、変換行列Aを乗算することで、図2(B)のトーラスT’に変形される。そして、数7に示したように、256で剰余を取ると、図2(C)のように元のトーラスT’の領域へ戻る。
変換行列Aの行列式が1のとき、逆変換行列A−1も整数係数行列である。逆変換行列A−1は、
Figure 0006801461
で表すと、
Figure 0006801461
を満たす。即ち、変換行列Aと逆変換行列A−1の積は、交換法則を満たし、単位行列となる。
この逆変換行列A−1を数7に掛けることで、次の恒等式を得る。
Figure 0006801461
行列式が1である整数係数行列の変換行列Aを乗算することで、NバイトからNバイトへ可逆の操作が可能となる。
以上の操作を用いて、1バイト記号の出現頻度を偏らせることで、エントロピーを削減できることを説明する。簡単な例として、Nが2の場合を考える。データとして、0と128のみが現れる例を考える。データが
0,0,128,0,128,128,0,128,…
である場合、先頭から2バイト毎に記号を組にする。
(0,0),(128,0),(128,128),(0,128),…
2バイト毎の組は、(0,0),(0,128),(128,0),(128,128)の4組のいずれかに該当する。2バイトの組のそれぞれの出現頻度を調べ、図3に示すような結果を得たとする。
図3は、2バイトの組の出現頻度の結果例を示す図である。図3に示す組毎の出現頻度の結果71は、2バイトの組それぞれの出現回数を示している。図3において、記号ベクトルは、2バイトの組を示す。出現回数は、組それぞれがデータに出現した回数を示している。
図3の出現頻度の結果71では、組(0,0)の出現回数は「50」、組(0,128)の出現回数は「20」、組(128,0)の出現回数は「10」、組(128,128)の出現回数は「30」を示している。出現頻度の結果71から、1バイト記号の出現頻度を得ることができる。
図4は、図3の結果例に基づく、1バイト記号の出現頻度の結果例を示す図である。図4に示す1バイト記号の出現頻度の結果73は、1バイト記号のそれぞれの出現回数を示している。図4において、1バイト記号は、「0」と「128」のみを示す。出現回数は、各1バイト記号がデータに出現した回数を示す。
図4の出現頻度の結果73では、1バイト記号「0」の出現回数は「130」、1バイト記号「128」の出現回数は「90」を示している。
ここで、第1実施例において記号出現頻度が変更される前のヒストグラムを示す。図5は、図4の結果例に基づく1バイト記号のヒストグラムを示す図である。図5に示すヒストグラム75は、1バイト記号を横軸に示し、1バイト記号の出現頻度を縦軸に示している。
ヒストグラム75は、図4の出現頻度の結果73に基づき、0から255の1バイト記号のそれぞれの出現回数を頻度で示している。1バイト記号は「0」と「128」のみであるため、ヒストグラム75は、1バイト記号「0」で頻度「130」を示し、1バイト記号「128」で頻度「90」を示したヒストグラムとなる。
図6は、図3の結果例に基づく1バイト記号の二次元のヒストグラムを示す図である。図6に示す二次元のヒストグラム77は、2バイトの組の最初の値を第1要素の軸に示し、次の値を第2要素の軸に示し、組の出現頻度を縦軸に示している。
ヒストグラム77は、図3の出現頻度の結果71に基づき、2バイトの4つの組のそれぞれの出現回数を頻度で示している。したがって、ヒストグラム75は、組(0,0)に対して頻度「50」を示し、組(0,128)に対して頻度「20」を示し、組(128,0)に対して頻度「10」を示し、組(128,128)に対して頻度「30」を示したヒストグラムとなる。
第1実施例では、このような2バイトの組を、数8に示した変換行列Aを用いて変換し、出現頻度を偏らせることで、エントロピーを削減する。各2バイトは、
Figure 0006801461
のように変換される。数12の変換により、2バイトの組の出現頻度が変化する。
図7は、変換後の2バイトの組の出現頻度の結果例を示す図である。図7に示す組毎の出現頻度の結果81は、2バイトの組それぞれの出現回数を示している。記号ベクトル出現回数は、図3で説明した通りである。
図7の出現頻度の結果81では、組(0,0)の出現回数は「50」、組(0,128)の出現回数は「30」、組(128,0)の出現回数は「20」、組(128,128)の出現回数は「10」を示している。出現頻度の結果81は、図3に示す変換前の出現頻度の結果71とは異なっている。
図8は、図7の結果例に基づく、変換後の1バイト記号の出現頻度の結果例を示す図である。図8に示す1バイト記号の出現頻度の結果83は、1バイト記号のそれぞれの出現回数を示している。図8において、1バイト記号は、「0」と「128」のみを示す。出現回数は、各1バイト記号がデータに出現した回数を示す。
図8の出現頻度の結果83では、1バイト記号「0」の出現回数は「150」、1バイト記号「128」の出現回数は「70」を示している。出現頻度の結果83は、図4に示す変換前の出現頻度の結果73とは異なっている。
ここで、第1実施例において記号出現頻度が変更された後のヒストグラムを示す。図9は、図8の結果例に基づく、記号出現頻度変更後の、1バイト記号のヒストグラムを示す図である。図9に示すヒストグラム85は、1バイト記号を横軸に示し、1バイト記号の出現頻度を縦軸に示している。
ヒストグラム85は、図8の出現頻度の結果83に基づき、0から255の1バイト記号のそれぞれの出現回数を頻度で示している。1バイト記号は「0」と「128」のみであるため、ヒストグラム85は、1バイト記号「0」で頻度「150」を示し、1バイト記号「128」で頻度「70」を示したヒストグラムとなる。
図5のヒストグラム75と比べると、ヒストグラム85では、1バイト記号「0」の出現頻度が高くなり、1バイト記号「128」の出現頻度が低くなっている。1バイト記号「0」に偏らせた状態を示している。
図10は、図7の結果例に基づく、記号出現頻度変更後の1バイト記号の二次元のヒストグラムを示す図である。図10に示す二次元のヒストグラム87は、2バイトの組の最初の値を第1要素の軸に示し、次の値を第2要素の軸に示し、組の出現頻度を縦軸に示している。
ヒストグラム87は、図7の出現頻度の結果81に基づき、2バイトの4つの組のそれぞれの出現回数を頻度で示している。したがって、ヒストグラム85は、組(0,0)に対して頻度「50」を示し、組(0,128)に対して頻度「30」を示し、組(128,0)に対して頻度「20」を示し、組(128,128)に対して頻度「10」を示したヒストグラムとなる。
次に、1バイト記号のエントロピーについて説明する。エントロピーは、
Figure 0006801461
のように定義される。数13において、piは、記号「i」の出現回数を全体の記号の数で割った値を示し、各記号の出現確率を表わす。出現頻度の変更前のエントロピーは、
Figure 0006801461
となる。一方で、出現頻度の変更後のエントロピーは、
Figure 0006801461
を示す。出現頻度の変更後のエントロピーは、出現頻度の変更前のエントロピーより減少している。
変換行列Aは可逆行列であり、その逆行列は、
Figure 0006801461
で与えられる。この逆行列は、吐き出し法等によりコンピュータにより求めることが可能である。吐き出し法は、一般に、浮動小数演算を用いて実施されるため、丸め誤差が生じる可能性がある。しかし、逆変換行列A−1が整数係数行列であることが分かっているため、計算の過程は、有理数を用いれば、最終結果は整数に約分される。
その為、コンピュータによる処理では、有理数により掃き出し法を用いることで、逆変換行列A−1を求めることができる。また、有理数は分子と分母とを保持すれば良い。つまり、分子と分母は整数であるから、多倍長整数を用いれば全ての過程を丸め誤差なく計算できる。
<3.エントロピー削減のための変換行列の探索方法>
先の例により、第1実施例では、エントロピーを削減できることを説明した。次に、エントロピーを削減する変換行列Aの求め方について説明する。
簡単のため、N=2の場合で説明する。まず、次の行列T及び行列Tを考える。
Figure 0006801461
非特許文献2によれば、任意の整数係数2-by-2行列は、行列Tと行列Tの積で表すことができる。つまり、整数係数2-by2行列の変換行列Aは、適当な整数の列n1,n2,…,nmを用いて、
Figure 0006801461
と表すことができる。一方で、行列Tと行列S
Figure 0006801461
との積で表現するという定理が良く知られている。行列Sは、
Figure 0006801461
で表せる。したがって、同様に、任意の整数係数2-by-2行列を、行列Tと行列Tの積で表すことを導ける。
第1実施例では、行列Tと行列Tとを乗算することで、効果的にエントロピーを削減する。一般に、
Figure 0006801461
であり、探索すべき行列の数は無限大である。しかし、第1実施例では、256で剰余を取るため、任意の二バイト文字v
Figure 0006801461
に対し、
Figure 0006801461
である。その為、整数係数2-by-2行列は、適当な0から256までの整数の列n1,n2,…,nmを用いて、
Figure 0006801461
を探索するだけで十分である。
さらに、
Figure 0006801461
である為、探索すべき行列の数は有限であり、0から256までの整数の列n1,n2,…,nmは有限の長さである。
データが次の様なバイト列(a)であるとき、
d1d2d3… ----(a)
2-by-K行列Mに次の様に保持する。
Figure 0006801461
また、次の様に保持してもよい。
Figure 0006801461
以降は、数26で説明し、この行列Mをデータ行列と呼称する。データ行列Mに対し、行列Tを0回から255回乗算する。
Figure 0006801461
数28の全パターンにおいて変化するのは、第一成分だけである。
すなわち、エントロピーが変化するのは、第一成分の1バイト記号のエントロピーだけである。その為、数28に示した全てのパターンの内、第一成分の1バイト記号のエントロピーが最も小さい値となるパターンを探す。特定したパターンの行列Tの乗算回数をα1とする。
Figure 0006801461
に対し、行列Tを0回から255回乗算する。
Figure 0006801461
数30の全パターンにおいて変化するのは、第二成分だけである。
すなわち、エントロピーが変化するのは、第二成分の1バイト記号のエントロピーだけである。その為、数30に示した全てのパターンの内、第二成分の1バイト記号のエントロピーが最も小さい値となるパターンを探す。特定したパターンの行列Tの乗算回数をα2とする。
以上の手続きを、例えば3回実施した場合、1回目では、行列Tの乗算回数α1及び行列Tの乗算回数α2を得て、
Figure 0006801461
を得る。2回目では、行列Tの乗算回数α3及び行列Tの乗算回数α4を得て、
Figure 0006801461
を得る。3回目では、行列Tの乗算回数α5及び行列Tの乗算回数α6を得て、
Figure 0006801461
を得る。任意の回数実施した場合の行列M’は、
Figure 0006801461
で表す。
数34は、2-by-K行列であるから、
Figure 0006801461
と表せる。数32の全ての成分d (i=1,2,…)は2Kバイトで表現される。各成分d は、
Figure 0006801461
と表せ、0から255の整数である。
数34より、変換行列Aは、
Figure 0006801461
である。
行列M’を構成する1バイト記号達(複数の1バイト記号)に対して、出現頻度が偏る(エントロピーが減少する)ように変更したため、数14及び数15で説明したように、元の行列Mを構成する1バイト記号達のエントロピーより減少している。これにより、1バイト記号のエントロピーが削減される。
バイト列(a)に復元する場合には、行列T及び行列Tのそれぞれのべき数(0から255)を示すα1,α2,...,αmのmバイトが必要である。以下、α1,α2,...,αmを指数列という。この情報をヘッダに記憶しておき、データ全体のエントロピーを削減するための変更後のデータをボディに記憶する。格納形式の詳細は、図11で説明する。
第1実施例において、上述したように、変換行列Aを、αiでべき乗した行列Tとαi+1でべき乗した行列Tとを交互にm回乗算して定めることが好ましいが、行列T又は行列Tのいずれか一方の行列で定めてもよい。即ち、所定回数べき乗した行列Tで変換行列Aを定めてもよく、また、所定回数べき乗した行列Tで変換行列Aを定めてもよい。
上述した第1実施例に係る手法は、全てコンピュータにより実現可能である。また、2次元ではなく任意のN次元に対して、第1実施例に係る手法はコンピュータにより実現可能である。例えば、Nが3の場合、上記の例を、第一成分と第二成分とからなる2次元空間で実施し、その結果に対し第二成分と第三成分の成す二次元空間で実施することができる。
<4.エントロピー削減データの格納形式>
第1実施例では、エントロピーを削減したデータは、図11に示すような格納形式で保持される。
図11は、格納形式の例を示す図である。第1実施例において、元のバイト列(a)をエントロピーを削減した削減後データ6を格納するための格納形式2は、ヘッダ3とボディ4とを有する。削減後データ6が、格納形式2により、後述される記憶部130の格納領域9(図13)に保持される。
ヘッダ3は、識別子、次元情報、指数個数、指数列等のデータを記憶する。識別子は、ボディ4が変更後のデータを記憶していることを示す情報である。識別子は、例えば4バイト記号で示される。次元情報は、実施した次元数を示す。2次元で実施した場合、次元情報は「2」を示す。
指数列長さは、行列T及び行列Tのそれぞれのべき数(0から255)を表わす指数列α1,α2,,αmの長さ(mバイト)を示す。指数列は、α1,α2,,αmを示す。各α1,α2,,αmは1バイトずつで示され、指数列全体でmバイトを要する。
ボディ4は、先ず、2-by-K行列M’の各成分で表される削減後データ6を保持する。削減後データ6は、元のバイト列(a)のd1,d2,d3…に従って、d1’,d2’,…,d2K’の順で保持される。また、元のバイト列(a)が2の倍数でなければ、その余りの1バイトを保持する。削減後データ6の圧縮後には、圧縮されたデータがボディ4に記憶される。
<5.データの圧縮>
第1実施例では、ボディ4に記憶されている、エントロピーを削減した削減後データ6を取得して、取得した削減後データ6を、算術符号化等の公知の可逆圧縮技術を用いて圧縮する。ボディ4は、圧縮データ7で置き換えられる。
<6.データの解凍>
算術符号化等の公知の可逆圧縮技術に対応する解凍技術を用いて、圧縮されたデータを解凍する。解凍データ8は、エントロピーを削減した削減後データ6に相当する。
削減後データ6に対し、エントロピー削減と逆の手順を行う。詳細を以下で説明する。
簡単のため、二次元の場合で説明する。図11に示すように格納形式2のヘッダ3には、行列T及び行列Tのそれぞれのべき数を示す指数列α1,α2,,αmのmバイトデータを読み出して、指数列α1,α2,,αmに基づいて、解凍後のデータを記憶部130(図12)に
Figure 0006801461
のように展開する。数38は、コンピュータにより実行可能である。
また、数38は、エントロピー削減の逆操作である。なぜなら、
Figure 0006801461
であり、行列Tに対しても同様の関係が成り立つ。したがって、
Figure 0006801461
である。これにより、元のデータ(バイト列(a))を得られる。
<7.元データへの復元>
数40から得られた行列Mを記憶した領域から、行列Mの要素を所定順に読み出すことで、バイト列(a)、即ち、元のデータを取得する。上述した手法に基づく第1実施例は、図12に示すような情報処理装置100により実現される。
図12は、情報処理装置のハードウェア構成図である。図12は、情報処理装置のハードウェア構成を示す図である。図12において、情報処理装置100は、コンピュータによって制御される情報処理装置であって、CPU(Central Processing Unit)11と、主記憶装置12と、補助記憶装置13と、入力装置14と、表示装置15と、通信I/F(インターフェース)17と、ドライブ装置18とを有し、バスBに接続される。
CPU11は、主記憶装置12に格納されたプログラムに従って情報処理装置100を制御するプロセッサに相当する。主記憶装置12には、RAM(Random Access Memory)、ROM(Read Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を記憶又は一時保存する。
補助記憶装置13には、HDD(Hard Disk Drive)等が用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置13に格納されているプログラムの一部が主記憶装置12にロードされ、CPU11に実行されることによって、各種処理が実現される。
入力装置14は、マウス、キーボード等を有し、ユーザが情報処理装置100による処理に必要な各種情報を入力するために用いられる。表示装置15は、CPU11の制御のもとに必要な各種情報を表示する。入力装置14と表示装置15とは、一体化したタッチパネル等によるユーザインタフェースであってもよい。通信I/F17は、有線又は無線などのネットワークを通じて通信を行う。通信I/F17による通信は無線又は有線に限定されるものではない。
情報処理装置100によって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって情報処理装置100に提供される。
ドライブ装置18は、ドライブ装置18にセットされた記憶媒体19(例えば、CD−ROM等)と情報処理装置100とのインターフェースを行う。
また、記憶媒体19に、後述される本実施の形態に係る種々の処理を実現するプログラムを格納し、この記憶媒体19に格納されたプログラムは、ドライブ装置18を介して情報処理装置100にインストールされる。インストールされたプログラムは、情報処理装置100により実行可能となる。
尚、プログラムを格納する記憶媒体19はCD−ROMに限定されず、コンピュータが読み取り可能な、データの構造(structure)を有する1つ以上の非一時的(non-transitory)な、有形(tangible)な媒体であればよい。コンピュータ読取可能な記憶媒体として、CD−ROMの他に、DVD(Digital Versatile Disk)ディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
図13は、第1実施例における情報処理装置の機能構成例を示す図である。図13において、情報処理装置100は、主に、圧縮処理部110と、解凍処理部120とを有する。また、記憶部130には、元データ1、ヘッダ情報5、削減後データ6、圧縮データ7、解凍データ8等が記憶される。
少なくとも、ヘッダ情報5、削減後データ6、圧縮データ7、及び解凍データ8は、図11に示す格納形式2に従って、格納領域9に記憶される。圧縮処理部110と、解凍処理部120とは、それぞれ別の情報処理装置100に実装されてもよい。格納領域9は、格納形式2のデータファイルに相当する。
圧縮処理部110は、元データ1に対して、本実施例によるエントロピーを削減したデータに変換して、エントロピーが削減されたデータを圧縮する処理部である。データ圧縮処理中のデータ容量の増大を抑制することができる。
圧縮処理部110は、圧縮要求受付部111と、変換行列探索部113と、エントロピー削減部114と、データ圧縮部115とを有する。圧縮要求受付部111と、変換行列探索部113と、エントロピー削減部114と、データ圧縮部115とは、CPU11がそれぞれに対応するプログラムを実行するこにより行われる処理により実現される。
圧縮要求受付部111は、ユーザからデータ圧縮要求31を受け付けると、データ圧縮要求31に含まれている元データ1を記憶部130に記憶し、変換行列探索部113に元データ1の圧縮要求を行う。ユーザは、記憶部130に記憶されている元データ1を指定してデータ圧縮要求31を行ってもよい。元データ1は、データファイルにより与えられてもよい。その場合、元データ1は、データファイル内の圧縮対象のデータに相当する。
変換行列探索部113は、圧縮要求受付部111からの圧縮要求に応じて、記憶部130に記憶された元データ1に対して変換行列探索処理を行う。変換行列探索処理により、元データ1を表わす行列Mに、行列T及び行列Tを交互に掛ける際の行列T及び行列Tそれぞれ自身の乗算回数を示す指数αiを取得することで、指数列α1,α2,,αm及び指数列長さを得る。
変換行列探索処理の結果に基づいて、ヘッダ情報5が格納領域9に格納形式2で記憶される。ヘッダ情報5は、識別子、次元情報、指数列長さ、指数列α1,α2,,αm等を含む。
エントロピー削減部114は、格納領域9から指数列α1,α2,,αmを取得して、数34により行列M’の各成分、即ち、削減後データ6を取得する。削減後データ6は、格納領域9のボディ4に格納される。
データ圧縮部115は、エントロピー削減部114によって格納領域9に記憶された削減後データ6に対してデータ圧縮処理を行い、圧縮データ7を格納領域9のボディ4に格納する。削減後データ6を圧縮データ7で置き換える。データ圧縮処理は、算術符号化等によりデータ圧縮を行なえばよい。
解凍処理部120は、圧縮データ7を解凍し、エントロピーを増大させて元データ1を復元する。本実施例では、可逆的にデータ圧縮が行われるため、元データ1を完全に復元できる。
解凍処理部120は、解凍要求受付部121と、データ解凍部122と、エントロピー増大部123とを有する。解凍要求受付部121と、データ解凍部122と、エントロピー増大部123とは、CPU11がそれぞれに対応するプログラムを実行するこにより行われる処理により実現される。
解凍要求受付部121は、ユーザからデータ解凍要求32を受け付けると、データ解凍要求32で指定された格納領域9の圧縮データ7の解凍要求をデータ解凍部122に行う。ユーザは、格納形式2に基づいて圧縮データ7が記憶された外部記憶領域を指定して、データ解凍要求32を行ってもよい。この場合、外部記憶領域の圧縮データ7が情報処理装置100に読み込まれて、記憶部130の格納領域9に記憶される。
データ解凍部122は、解凍要求受付部121からの圧縮データ7の解凍要求に応じて、格納領域9内の圧縮データ7に対してデータ解凍処理を行い、解凍データ8を取得する。格納領域9のボディ4は、解凍データ8、即ち、削減後データ6に置き換えられる。データ解凍処理は、算術符号化等により圧縮データ7を解凍すればよい。
エントロピー増大部123は、データ解凍処理の終了に応じて、解凍データ8に対してエントロピーを増大させる処理を施すことで、元データ1を復元する。エントロピー増大部123は、格納領域9のヘッダ3から次元情報、指数列等を取得して、エントロピーを増大させる逆変換行列A−1を生成して、解凍データ8に乗算することで、元データ1を復元する。ヘッダ3の識別子が、エントロピーの削減を行っていないことを示す場合には、エントロピー増大部123によるエントロピー増大処理は抑止される。
図14は、第1実施例における圧縮処理の概要を説明するためのフローチャートである。図14において、ユーザが情報処理装置100に対してデータ圧縮要求31を行うと、圧縮処理部110の圧縮要求受付部111が、データ圧縮要求31を受け付ける(ステップS201)。圧縮要求受付部111は、変換行列探索部113に元データ1の圧縮要求を通知する。
変換行列探索部113は、圧縮要求受付部111からの圧縮要求の通知に応じて、元データ1に対してデータ圧縮処理時のデータ量を削減する最適な変換行列A(数37)を求める変換行列探索処理を行う(ステップS202)。
変換行列Aが得られると、エントロピー削減部114は、変換行列Aを用いて元データ1に対してエントロピーを削減するエントロピー削減処理を行う(ステップS203)。
そして、削減後データ6を得ると、データ圧縮部115が、削減後データ6に対してデータ圧縮処理を行う(ステップS204)。圧縮データ7が格納領域9のボディ4に格納される。
図15は、第1実施例における変換行列探索処理を説明するためのフローチャート図である。図15では、次元Nが2の場合で説明するが、本実施例はN=2に限定されない。
図15において、変換行列探索部113は、元データ1を読み込んで行列で表して2-by-K行列M(以下、行列Mという)の初期値として設定する(ステップS210)。変換行列探索部113は、また、変数L,i、d、及びpを1に初期化する(ステップS211)。
変換行列探索部113は、変数Lが2以下であるか否かを判定する(ステップS212)。変数Lが2以下である場合(ステップS212のYES)、変換行列探索部113は、変数dが2より大か否かを判定する(ステップS213)。変数dが2以下の場合(ステップS213のNO)、変換行列探索部113は、変数dが1であるか否かを判断する(ステップS214)。
変数dが1の場合(ステップS214のYES)、変換行列探索部113は、変数Tに行列Tを設定し(ステップS215)、ステップS217へと進む。一方、変数dが1でない場合(ステップS214のNO)、変換行列探索部113は、変数Tに行列Tを設定し(ステップS216)、ステップS217へと進む。
変換行列探索部113は、変数pが256より大きいか否かを判断する(ステップS217)。変数pが256以下の場合(ステップS217のNO)、変換行列探索部113は、変数Tを行列Mにp回乗算した行列を変数M2に設定し、変数M2の各成分を256で剰余を取る(ステップS218)。
また、変換行列探索部113は、変数M2の第d行の数値のエントロピーを計算し、得られた値を変数e_pに設定する(ステップS219)。そして、変換行列探索部113は、変数pを1インクリメントして(ステップS220)、ステップS217へと戻る。
一方、変数pが256より大きい場合(ステップS217のYES)、変換行列探索部113は、変数e_1、e_2、・・・、e_256の中で最も小さい変数e_jを特定し、αiにjを代入する(ステップS223)。
そして、変換行列探索部113は、変数Tを行列Mにj回乗算した行列の各成分を256で剰余を取り、得られた行列を改めて行列Mとする(ステップS224)。変換行列探索部113は、その後、変数d及び変数iを1インクリメントし、変数pを1に設定して(ステップS225)、ステップS213へと戻り、上述同様の処理を繰り返す。
ところで、変数Lが2より大の場合(ステップS212のNO)、変換行列探索部113は、ヘッダ情報5を記憶部130の格納領域9のヘッダ3に格納する(ステップS222)。得られた指数列α1,α2,...,αmと指数列長さとがヘッダ情報5に含まれる。そして、この変換行列探索処理を終了する。
図16は、第1実施例におけるエントロピー削減処理を説明するためのフローチャート図である。図16において、エントロピー削減部114は、格納領域9のヘッダ3から指数列長さに基づいて、指数列を読み(ステップS251)、変数iに1を設定し初期化する(ステップS252)。指数列長さをmとする。
エントロピー削減部114は、変数iが奇数か否かを判断する(ステップS253)。変数iが奇数の場合(ステップS253のYES)、エントロピー削減部114は、行列Tを行列Mへαi回乗算して、得られた行列の各成分を256で剰余を取り、Mに設定し(ステップS254)、ステップS256へと進む。
一方、変数iが偶数の場合(ステップS253のNO)、エントロピー削減部114は、行列Tを行列Mへαi回乗算して、得られた行列の各成分を256で剰余を取り、Mに設定し(ステップS255)、ステップS256へと進む。
エントロピー削減部114は、変数iがm(指数列長さ)以下であるか否かを判断する(ステップS257)。変数iがm以下の場合(ステップS257のYES)、エントロピー削減部114は、ステップS253へと進み、上述した同様の処理を繰り返す。
一方、変数iがmより大きい場合(ステップS257のNO)、エントロピー削減部114は、格納形式2に従って、格納領域9のボディ4に、エントロピーが削減された行列Mの成分データを示す削減後データ6を格納する(ステップS258)。そして、エントロピー削減部114は、このエントロピー削減処理を終了する。圧縮データ7が格納された格納領域9は、データファイルに相当する。
削減後データ6は、データ圧縮部115により圧縮され、圧縮データ7として、格納領域9のボディ4に記憶される。
次に、解凍処理部120による解凍処理の概要について説明する。図17は、第1実施例における解凍処理を説明するためのフローチャート図である。図17において、解凍処理部120では、解凍要求受付部121が、ユーザからデータ解凍要求32を受け付けると(ステップS271)、データ解凍部122に圧縮データ7の解凍要求が通知される。
データ解凍部122は、格納領域9のボディ4から圧縮データ7を読み込んでデータ解凍処理を行う(ステップS272)。解凍データ8はボディ4に格納される。解凍データ8が得られると、エントロピー増大部123が、エントロピー増大処理を行う(ステップS273)。エントロピー増大処理により、元データ1が復元される(ステップS274)。
図18は、第1実施例におけるエントロピー増大処理を説明するためのフローチャート図である。図18において、エントロピー増大部123は、格納領域9のヘッダ3から、指数列長さに基づいて、指数列α1,α2,...,αmを読み込む(ステップS281)。指数列長さがmに設定される。
また、エントロピー増大部123は、解凍データ8、即ち、削減後データ6を行列で表してMに設定する(ステップS282)。そして、エントロピー増大部123は、変数iを1に初期設定する(ステップS283)。
エントロピー増大部123は、変数iがm(指数列長さ)より大きいか否かを判断する(ステップS284)。変数iがm以下の場合(ステップS284のNO)、エントロピー増大部123は、変数iが奇数か否かを判断する(ステップS285)。
変数iが奇数の場合(ステップS285のYES)、エントロピー増大部123は、変数Tに行列Tを設定し(ステップS286)、ステップS288へと進む。一方、変数iが偶数の場合(ステップS285のNO)、エントロピー増大部123は、変数Tに行列Tを設定し(ステップS287)、ステップS288へと進む。
エントロピー増大部123は、変数Tを行列Mに(256−αi)回乗算し、得られた行列の各成分を256で剰余を取って得た行列をMとする(ステップS288)。そして、エントロピー増大部123は、変数iを1インクリメントして(ステップS289)、ステップS284へと戻り、上述した同様の処理を繰り返す。
一方、変数iがmより大きい場合(ステップS284のYES)、エントロピー増大部123は、元データ1を出力し(ステップS290)、このエントロピー増大処理を終了する。
上述したように、第1実施例では、データのバイト数を増やさずに、1バイト文字の出現頻度を偏らせることで、エントロピーを削減することができる。上記では、N=2の場合で説明したが、Nが3以上であっても、第1実施例を適用可能である。
次に、第1実施例におけるエントロピー削減を効率化する第2実施例について説明する。第1実施例では、エントロピーを下げるための変換行列Aを探索する方法について説明した。変換行列Aの探索では、行列T及び行列Tを複数回乗算していくが、その全ての乗算に於いて常にエントロピーが下がるわけでは無い。エントロピーの増大には、二つの要因がある。
一つは、出現する記号の種類が増えることによるエントロピーの増大である。もう一つは、記号種類は同じだが、出現する頻度が偏らず(即ち、どの記号も同じような出現頻度を示し)、エントロピーが増大することである。ここでは、前者の記号種類の増大を抑える方法について説明する。
第1実施例では、1バイト文字をそのまま整数値として扱っていた。つまり、「0xF0」は「240」、「0x80」は「80」、という整数値として扱っている。英数字「a」は0x61であり、96である。
一例として、データがASCII文字「a」と「b」とから成立しているテキストデータを考える。文字「a」と「b」とは、それぞれ、整数値の「96」と「97」とにより表される。この場合m=1,2,...,255に対して、
Figure 0006801461
を乗算すると、生成される1バイト記号は、
96,(96+m*97)%256,97,(97+m*96)%256
である。特に、(96+m*97)%256と(97+m*96)%256は、mが0でない限り、「96」と「97」以外の数値を取ってしまう。例えば、m=1なら「193」と「193」、m=2なら「34」と「33」といった具合である。
mが0であることは、何も演算しないことと同じである為、エントロピーは上がりも下がりもしない。mを0でない値にして、エントロピーを下げようとしているにも係らず、「96」と「97」以外の記号が出現してしまう。「96」と「97」の出現頻度が極端に偏っている場合以外は、1バイト記号のエントロピーは上昇してしまう。その為、第1実施例における変換行列Aの探索では、エントロピーが減少する変換行列Aを見つけることが困難になる場合がある。
以下の説明では、
Figure 0006801461
という行列を使用する。
発明者は、「0」、「128」、「64」、及び「198」が、256の2分の1の整数倍であり、このような点は、トーラス上の行列演算結果が、同一記号内で閉じる性質があり、元データ1に含まれない1バイト記号を生成することがない、ことに着目した。
また、エントロピーは出現する記号の種類が増えると増大する傾向がある。しかし、以下に説明する第2実施例における数値変換テーブルを用いてデータの数値を変換しておくことで、記号の増大を抑止することができ、したがって、エントロピーの増大を抑えることができる。第2実施例は、ASCII記号の可読文字からなるテキストデータの場合により効果を奏する。
第2実施例における情報処理装置100のハードウェア構成は、図12に示す通りであるため、その説明を省略する。
図19は、第2実施例における機能構成例を示す図である。図19において、第1実施例との違いは、圧縮処理部110−2において、数値変換テーブル作成部109と、数値変換部112とが追加され、解凍処理部120−2において、逆数値変換部124が追加されている点である。
また、記憶部130は、更に、数値変換テーブル51、変換後データ1−2等を記憶する。それ以外の処理部及びデータは、第1実施例と同様であるため、同一の符号を付し、その説明を省略する。
図19に示す、第2実施例における数値変換テーブル作成部109は、元データ1の1バイト記号を、周期256の2分の1の整数倍に写像するための数値変換テーブル51を作成する。
数値変換テーブル51は、格納形式2に従って格納領域9のヘッダ3に保持される。数値変換テーブル51は、後述される数値変換テーブル51a(図20)又は数値変換テーブル51b(図23)である。数値変換テーブル51は、データ圧縮要求31に応じて、数値変換テーブル作成部109により、数値変換部112による数値変換処理の前に作成されてもよいし、予め、ユーザの指示に応じて、作成されてもよい。
また、数値変換部112は、元データ1の1バイト記号の種類ごとに出現回数をカウントし、出現回数の多い順に1バイト記号の種類を並べ替えて、出現頻度の高い順に、1バイト記号の種類を数値変換テーブル51の先頭から順に置き換える。元データ1において、1バイト記号の種類ごとに、出現頻度に応じて数値変換テーブル51に基づいて置き換えられた変換後データ1−2が、格納形式2に従って格納領域9のヘッダ3とボディ4の間に記憶される。
変換行列探索部113によって、変換後データ1−2に対して、変換行列Aが探索され、エントロピー削減部114によって、削減後データ6が生成され、データ圧縮部115によって削減後データ6が圧縮される。
解凍処理部120−2では、データ解凍部122によって得られた解凍データ8から、エントロピー増大部123がエントロピーを増大させた増大後データ1−2’が生成される。増大後データ1−2’は、変換後データ1−2に相当する。
増大後データ1−2’の取得に応じて、逆数値変換部124が、1バイト記号の種類ごとの出現頻度に応じて、増大後データ1−2’を先頭から順に数値ごとに変換前の1バイト記号へと逆変換することによって、元データ1を復元する。
元データ1の1バイト記号を周期256の2分の1の整数倍に写像する数値変換テーブル51について説明する。
図20は、数値変換テーブルの一例を示す図である。図20に示す数値変換テーブル51aは、単純に、0から開始して、周期256の2分の1の整数倍を順にリストしたテーブルである。数値変換テーブル51aの作成方法は、図24のフローチャートで詳述される。
数値変換テーブル51aを用いた場合、元データ1において、
出現頻度が最も高い1バイト記号が「0」、
出現頻度が2番目に高い1バイト記号が「128」、
出現頻度が3番目に高い1バイト記号が「64」、
出現頻度が4番目に高い1バイト記号が「192」、
出現頻度が5番目に高い1バイト記号が「32」、
出現頻度が6番目に高い1バイト記号が「96」、
・・・
出現頻度が256番目に高い1バイト記号が「255」
に変換される。
ここで、写像する写像先の数値について説明する。写像先の数値は、周期256の2分の1の整数倍であり、出現頻度が大きい程、対応するnは小さい。
周期256の2分の1の整数倍の点が非常に良い性質を持つことを説明する。図21は、トーラスの例を示す図である。図21において、二次元トーラス中の傾きが1の閉じた直線を描いた図である。
図21を参照して、具体的に説明すると、直線LN_1は、点(0,0)を通り、点(128,128)や点(192,192)を通る直線である。直線LN_2は、点(64,0)、点(128,64)、点(192,128)、及び点(0,192)を通る直線である。直線LN_3は、点(128,0)、点(192,64)、点(0,128)、及び点(64,192)を通る直線である。直線LN_4は、点(192,0)、点(0,64)、点(64,128)、及び点(128,192)を通る直線である。
仮に、行列T −1
Figure 0006801461
を乗算した場合、これらの直線の上にある点は、同じ第一成分の値を持つ。例えば、直線LN_2上の点は、第一成分が64になる。
例えば、元データ1に含まれる記号が4種類のみである場合、第2実施例では、記号の出現回数が高い順に、「0」、「128」、「64」、及び「192」に写像される。行列T −1(数43)を乗算した場合、これらの数値と異なる数値が出てくることは無い。さらに、m=0,2,...,255に対し、行列T (数41)を乗算しても、256での剰余を取る限り、上記4種類の数値以外の数値は現れない。
この例のように、周期256の2分の1の整数倍の点は行列を乗算しても256での剰余を取ることで、それらの数値以外の数値は現れない性質がある。発明者は、この性質に着目し、図20に示す数値変換テーブル51aを改良し、変換行列Aを求める際に、エントロピーの上昇を抑え、エントロピーが減少する行列を求め易くした。
図22は、図20の数値変換テーブルの改良例を示す図である。図22に示す数値変換テーブル51bは、単純に、0から開始して、周期256の2分の1の整数倍を順にリストした数値変換テーブル51aとは、周期256の2分の1の整数倍の値の出現順が異なっている。
数値変換テーブル51bでは、例えば、5番目に頻度の高い1バイト記号に「32」を割り振り、6番目に頻度の高い1バイト記号に「224」を割り振る。図20の数値変換テーブル51aでは、5番目に頻度の高い1バイト記号には同様に「32」が割り振られるが、6番目に頻度の高い1バイト記号には「96」が割り振られている。
この理由を述べる。出現頻度を考えた場合、「32」を含む数値は、(32,0)か(0,32)が最も多く現れると期待される。点(32,0)及び点(0,32)それぞれから斜め45度の閉直線上の点について考察する。
図23は、「32」を含む二次元トーラスの例を示す図である。図23では、周期256とした、点(32,0)からの斜め45度の閉直線LN_5と、点(0,32)からの45度の閉直線LN_6とを示している。
斜め45度の閉直線LN_5及びLN_6上の点で、「96」を含む点は、閉直線LN_5では点(96,64)であり、閉直線LN_6では点(64,96)であるのに対し、「224」を含む点は、閉直線LN_6では点(0,224)であり、閉直線LN_5では点(244,0)である。
「64」と「96」の組は、数値変換テーブル51aでは3番目と6番目に出現頻度の高い記号の組であり、「0」と「244」の組は、数値変換テーブル51bでは1番目と6番目に出現頻度の高い記号の組である。その為、数値変換テーブル51bを参照した場合の「0」と「244」の組の方が、数値変換テーブル51aを参照した場合の「64」と「96」の組より現れやすい。
故に、行列T −1(数43)を乗算し、斜め45度の閉直線を縦に伸びる閉直線へ変換した際の「32」という1バイト記号の出現頻度の増大が期待されるのは、「0」と「244」の組である。出現頻度が5番目の「32」の次を「244」とすることで、エントロピー削減をより効率的に行える。
上記の例では、5、6番目の1バイト記号の写像先について説明したが、17、18番目の1バイト記号の写像先についても同様のことが成り立つ。すなわち、数値変換テーブル51aの「8」の次の「24」は、数値変換テーブル51bのように「8」の次に「248」とする。
このようにすることで、変換行列探索部113によるエントロピーが減少する行列を見つけ易くすることができる。数値変換テーブル作成部109によって作成された数値変換テーブル51は、変換後データ1−2を格納する格納領域9のヘッダ3に格納される。
第2実施例では、1バイト記号の出現頻度に応じて、発明者により見出された数値変換テーブル51を用いて、元データ1の1バイト記号を数値に変換する。第2実施例では、1バイト記号を扱い、周期を256とするが、任意のXバイトからなる記号を扱い、周期をX×256としてもよい。2バイトの文字を扱う場合には、256×256となる。
また、1バイトよりも小さい7ビットからなる記号を扱い、周期を2=128としてもよい。以下の説明では1バイト記号を扱い、周期を256とする。即ち、第2実施例は、任意のバイト又はビットに適応可能である。
データに表れる1バイト記号を、それぞれの記号が現れる出現回数をカウントし、出現回数の多い順に並べ替える。一例として、図22の数値変換テーブル51bを用いた場合、元データ1は、
出現頻度の最も高い1バイト記号が「0」、
出現頻度の2番目に高い1バイト記号が「128」、
出現頻度の3番目に高い1バイト記号が「64」、
出現頻度の4番目に高い1バイト記号が「192」、
出現頻度の5番目に高い1バイト記号が「32」、
出現頻度の6番目に高い1バイト記号が「224」、
・・・
出現頻度の256番目に高い1バイト記号を「129」
に変換される。
よって、変換後データ1−2は、256バイトで、元データ1の先頭から1バイト記号を整数値として見なしたときの位置に、同記号の変換後の数値を保持する。例えば、
0x00, 0x01, 0x02, 0x03, ...

40, 128, 64, 192, ...
に写像されるとき、256バイトは、
40, 128, 64, 192, ...
で表され、16進数では、
0x28, 0x80, 0x40, 0xC0, ...
となる。この256バイトの情報は、第1実施例で説明した格納形式2に従って、ヘッダ3とボディ4の間に保持されればよい。数値から逆変換する際には、先頭からのバイト位置に基づいて元データ1を復元する。
次に、数値変換テーブル作成部109による数値変換テーブル51の作成処理について説明する。先ず、図20の数値変換テーブル51aの作成処理を説明する。
図24は、図20の数値変換テーブルの作成処理を説明するためのフローチャート図である。図24において、数値変換テーブル作成部109は、データ圧縮要求31に応じて、数値変換テーブル51aを作成しても良いし、予め、数値変換テーブル51aを作成してもよい。
数値変換テーブル作成部109は、変数iに0を設定し、変数divisorに1を設定し、変数list1を空にする初期設定を行う(ステップS301)。変数iは、数値変換テーブル51aの先頭からの位置までのバイト数を示す。変数divisorは、iバイト位置における2のべき乗nを示す。変数list1は、数値変換テーブル51aを表わす。
次に、数値変換テーブル作成部109は、変数iが256以上であるか否かを判断する(ステップS302)。変数iが256未満である場合(ステップS302のNO)、数値変換テーブル作成部109は、変数iを超える最小の2のn乗を変数xに設定し(ステップS303)、
divisor = log_2(x)
kk = i - divisor/2
を計算する(ステップS304)。
さらに、数値変換テーブル作成部109は、
mul = 2*kk + 1
を計算する(ステップS305)。
よって、数値変換テーブル作成部109は、
256*mul / divisor
を算出することにより、出現頻度がi番目の写像先(256の2分の1の整数倍の値)を得て、list1に追加し(ステップS306)、変数iを1インクリメントして(ステップS307)、ステップS302へ戻り上述同様の処理を繰り返す。
変数iが256以上である場合(ステップS302のYES)、数値変換テーブル作成部109は、数値変換テーブル51aを格納形式2に従って、格納領域9のヘッダ1に記憶した後、この数値変換テーブル作成処理を終了する。
図24のフローチャートにより、図20の数値変換テーブル51aにおいて、
・1番目(i=0)は、写像先「0」、
・2番目(i=1)は、写像先「128」、
・3番目(i=2)は、写像先「64」、
・4番目(i=3)は、写像先「192」、
・5番目(i=4)は、写像先「32」、
・6番目(i=5)は、写像先「96」、
・・・・
・255番目(i=255)は、写像先「255」
に設定される。
図25は、図22の数値変換テーブルの作成処理を説明するためのフローチャート図である。図25において、数値変換テーブル作成部109は、データ圧縮要求31に応じて、数値変換テーブル51aを作成しても良いし、予め、数値変換テーブル51bを作成してもよい。
数値変換テーブル作成部109は、変数iに0を設定し、変数divisorに1を設定し、変数list2を空にする初期設定を行う(ステップS401)。変数iは、数値変換テーブル51bの先頭からの位置までのバイト数を示す。変数divisorは、iバイト位置における2のべき乗nを示す。変数list2は、数値変換テーブル51bを表わす。
次に、数値変換テーブル作成部109は、変数iが256以上であるか否かを判断する(ステップS402)。変数iが256未満である場合(ステップS402のNO)、数値変換テーブル作成部109は、変数iを超える最小の2のn乗を変数xに設定し(ステップS403)、
divisor = log_2(x)
kk = i - divisor/2
を計算する(ステップS404)。
そして、数値変換テーブル作成部109は、変数kkが偶数か否かを判断する(ステップS405)。変数kkが偶数の場合(ステップS405のYES)、数値変換テーブル作成部109は、変数kkの値に1を加算した値を変数mulに設定して(ステップS406)、ステップS408へと進む。
一方、変数kkが奇数の場合(ステップS405のNO)、数値変換テーブル作成部109は、変数divisorから変数kkを減算した値を変数mulに設定して(ステップS407)、ステップS408へと進む。
数値変換テーブル作成部109は、
256*mul / divisor
を算出することにより、出現頻度がi番目の写像先(256の2分の1の整数倍の値)を得て、list2に追加する(ステップS409)、変数iを1インクリメントして(ステップS309)、ステップS402へ戻り上述同様の処理を繰り返す。
変数iが256以上である場合(ステップS402のYES)、数値変換テーブル作成部109は、数値変換テーブル51bを格納形式2に従って、格納領域9のヘッダ1に記憶した後、この数値変換テーブル作成処理を終了する。
図25のフローチャートにより、図22の数値変換テーブル51bにおいて、
・1番目(i=0)は、写像先「0」、
・2番目(i=1)は、写像先「128」、
・3番目(i=2)は、写像先「64」、
・4番目(i=3)は、写像先「192」、
・5番目(i=4)は、写像先「32」、
・6番目(i=5)は、写像先「224」、
・・・・
・255番目(i=255)は、写像先「129」
に設定される。
次に、第2実施例における圧縮処理部110−2による圧縮処理の概要を説明する。図26は、第2実施例における圧縮処理の概要を説明するためのフローチャート図である。図26において、ユーザが情報処理装置100に対してデータ圧縮要求31を行うと、圧縮処理部110−2の圧縮要求受付部111が、データ圧縮要求31を受け付ける(ステップS501)。圧縮要求受付部111は、数値変換テーブル作成部109に元データ1の圧縮要求を通知する。
圧縮要求受付部111からの圧縮要求に応じて、数値変換テーブル作成部109は、数値変換テーブル作成処理を行う(ステップS502)。数値変換テーブル作成処理は、図24又は図25のフローチャートに従って行われればよい。
また、既に、数値変換テーブル51が記憶部130の格納領域9に存在する場合には、この数値変換テーブル作成処理を省略してもよい。その後、数値変換テーブル作成部109は、数値変換部112へ元データ1の圧縮要求を通知する。
数値変換テーブル作成部109は、格納領域9のヘッダ3から数値変換テーブル51を取得し、元データ1の1バイト記号を変換する数値変換処理を行う(ステップS503)。変換後データ1−2が格納領域9のヘッダ3とボディ4の間に記憶される。そして、数値変換テーブル作成部109は、変換行列探索部113に元データ1の圧縮要求を通知する。
変換行列探索部113は、数値変換テーブル作成部109からの圧縮要求の通知に応じて、変換後データ1−2に対してデータ圧縮処理時のデータ量を削減する最適な変換行列A(数37)を求める変換行列探索処理を行う(ステップS504)。変換後データ1−2の先頭から1バイト記号ごとにd1d2d3…とすることで、バイト列(a)と見なし、第1実施例と同様の変換行列探索処理を行うことができ、かつ、第1実施例よりも効率的に変換行列Aを取得できる。
変換行列Aが得られると、エントロピー削減部114は、変換行列Aを用いて変換後データ1−2に対してエントロピーを削減するエントロピー削減処理を行う(ステップS505)。
そして、削減後データ6を得ると、データ圧縮部115が、削減後データ6に対してデータ圧縮処理を行う(ステップS506)。圧縮データ7が格納領域9のボディ4に格納される。
図26におけるステップS502では、図24又は図25のフローチャートに従って数値変換テーブル51a又は数値変換テーブル51b(単に、数値変換テーブル51と言う)を作成する。
数値変換部112による、作成された数値変換テーブル51を用いた数値変換処理について説明する。図27は、第2実施例における数値変換処理を説明するためのフローチャート図である。
図27において、数値変換部112は、格納領域9から数値変換テーブル51を取得する(ステップS541)。そして、数値変換部112は、元データ1に含まれる1バイト記号の種類ごとに出現回数をカウントし(ステップS542)、出現回数の多い順に1バイト記号の種類をソートする(ステップS543)。
そして、数値変換部112は、出現回数の多い1バイト記号から、数値変換テーブル51の数値を先頭から順に写像する(ステップS544)。
数値変換部112は、出現頻度に応じて変換した数値を用いて、元データ1から変換後データ1−2を作成する(ステップS545)。256バイトの先頭から1バイト記号を整数値として見なしたときの位置に同記号の変換後の数値を対応付けて、格納領域9のヘッダ3とボディ4の間に保持する。
変換行列探索部113は、数値変換テーブル51により変換された変換後データ1−2に対して、変換行列Aを求める。変換行列探索部113による変換行列探索処理は、元データ1の代わりに、変換後データ1−2を、エントロピーを削減する対象のデータとして読み替えることで、図15のフローチャートに従って行われる。そして、変換後データ1−2に対する変換行列Aを取得する。変換行列Aを表わす行列T及び行列Tを交互に乗算するたびに自乗する回数を示す指数列α1,α2,...,αmと指数列長さ等を含むヘッダ情報5が格納領域9のヘッダ3に保持される。
そして、エントロピー削減部114により、指数列α1,α2,...,αmに基づいて、変換行列Aを生成して、変換後データ1−2を表わす行列に乗算し、256で剰余を取ることで、削減後データ6を得る。得られた削減後データ6は、格納領域9のボディ4に記憶される。
その後、データ圧縮部115により削減後データ6が圧縮され、圧縮データ7が格納領域9のボディ4に上書きされ保持される。削減後データ6は消去される。格納領域9は、圧縮データ7を含むデータファイルを形成する。
ここで、数値変換テーブル51a又は51bを用いて元データ1の数値を変換し、行列式が1である行列を乗算したとしても、変換した値と異なる数値は出現しないことについて、以下に示す。
(256×k/2n)の数値に対して整数係数行列Aを掛けた式を
Figure 0006801461
で表す。kは0から2n-1のいずれかの値を取り得る。kを行列(0,..., 2n-1)で表わし、数44を
Figure 0006801461
と書き換える。
一方、行列Aは、整数係数行列であるから、行列Aを数45に掛けた場合、各要素は整数倍され合算される。さらに、256で剰余を取ると、
Figure 0006801461
のように表される。
ここで、数46において、
Figure 0006801461
は、仮分数である可能性が高く、整数Cと分子Dとに分解でき、
Figure 0006801461
と表す。さらに、数48の整数Cは、256の乗算と256の剰余とにより消去でき、
Figure 0006801461
で表せる。即ち、数49による結果は、数45が取り得る値の集合に包含され、行列Aの乗算後に変換した値と異なる値が出現することはない。
次に、第2実施例における解凍処理部120−2による解凍処理について説明する。図28は、第2実施例における解凍処理の概要を説明するためのフローチャート図である。
図28において、ユーザがデータ解凍要求32を情報処理装置100に行うと、解凍要求受付部121がデータ解凍要求32を受け付ける(ステップS571)。圧縮データ7の解凍要求は、データ解凍部122に通知される。圧縮データ7を保持するデータファイルが記憶部130に記憶される。記憶部130に記憶されたデータファイルは、格納領域9に相当する。
データ解凍部122は、格納領域9から圧縮データ7を読み出して解凍し、解凍データ8を得る(ステップS572)。その後、エントロピー増大部123は、エントロピー増大処理を行う(ステップS573)。エントロピー増大部123は、図18のフローチャートに従い解凍データ8に対してエントロピーを増大させた増大後データ1−2’を生成する。増大後データ1−2’は、圧縮時の変換後データ1−2に相当し、格納領域9のボディ4に保持される。
増大後データ1−2’が得られると、第2実施例における逆数値変換部124による逆数値変換処理が行われる(ステップS574)。逆数値変換処理により元データ1が復元される。逆数値変換部124は、復元した元データ1を記憶部130に格納する(ステップS575)。そして、解凍処理部120−2による解凍処理は終了する。
図29は、第2実施例における逆数値変換処理を説明するためのフローチャート図である。図29において、逆数値変換部124は、記憶部130の格納領域9からエントロピー増大部123からエントロピーを増大させた増大後データ1−2’を読み込む(ステップS591)。また、逆数値変換部124は、格納領域9のヘッダ3から数値変換テーブル51を取得する(ステップS592)。
そして、逆数値変換部124は、数値変換テーブル51を用いて、増大後データ1−2’を1バイトごとに順に1バイト記号へと逆変換して、元データ1を復元し(ステップS593)、復元した元データ1を記憶部130に出力する(ステップS594)。
上述したように、第2実施例では、第1実施例でのエントロピーの削減に係る処理を行う前に、エントロピーの削減を効率的に行えるように元データ1の1バイト列を出現頻度に応じた数値へ変換することで、より確実にエントロピー削減を行なえる。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、主々の変形や変更が可能である。
以上の第1〜第2実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の整数で表現されるデータを指定した圧縮要求を受け付ける圧縮要求受付部と、
前記圧縮要求で指定される前記データを行列で表したデータ行列に、行列式が1である変換行列を乗算して、エントロピーを削減するエントロピー削減部と
を有することを特徴とする情報処理装置。
(付記2)
前記エントロピー削減部は、
前記データ行列に前記変換行列を乗算する際に、各要素の値を所定数値で剰余をとることを特徴とする付記1記載の情報処理装置。
(付記3)
任意の行列を積により表現可能な第1行列と第2行列の少なくとも1つ以上を用いて、エントロピーが最も小さくなるべき乗数を探索して、前記変換行列を求め、圧縮データを格納するファイルのヘッダに記憶する変換行列探索部を更に有することを特徴とする付記2記載の情報処理装置。
(付記4)
前記変換行列探索部は、
前記第1行列と前記第2行列を交互に積算し、積算ごとに前記エントロピーが最も小さくなる前記べき乗数を求める
ことを特徴とする付記3記載の情報処理装置。
(付記5)
前記所定数値は、256であることを特徴とする付記2乃至4のいずれか一項記載の情報処理装置。
(付記6)
前記ファイルに格納された前記圧縮データを解凍して得た解凍データを行列で表し、前記ファイルの前記ヘッダに格納された前記変換行列と前記所定数値とを用いて得られる逆変換行列を該解凍データの行列に乗算し、該所定数値で剰余をとり前記エントロピーを増大させることで前記データ行列を復元するエントロピー増大部
を有することを特徴とする付記3乃至5のいずれか一項記載の情報処理装置。
(付記7)
前記所定数値の2のn乗分の1の整数倍の値を示すテーブルを作成する数値変換テーブル作成部と、
前記データの前記複数の整数において、出現頻度の高い順に、前記数値変換テーブル作成部によって作成された前記テーブルの先頭から順に得られた数値を写像先として該データの各整数の値を変換する数値変換部とを更に有し、
前記データ行列は、前記数値変換部による変換後の前記データを表わすことを特徴とする付記3乃至5のいずれか一項記載の情報処理装置。
(付記8)
前記数値変換テーブル作成部は、
剰余を取る前記所定数値を周期とした二次元トーラスにおいて、斜め45度の閉直線を縦に伸びる閉直線へ変換した際に前記複数の整数の所定種類の出現頻度の増大が期待される、該斜め45度の閉直線上の点を選択することを特徴とする付記7記載の情報処理装置。
(付記9)
前記変換行列によって変換された前記データ行列では、出現する整数の種類の出現頻度が偏ることを特徴とする付記1乃至7のいずれか一項記載の情報処理装置。
(付記10)
複数の整数で表現されるデータを指定した圧縮要求を受け付け、
前記圧縮要求で指定される前記データを行列で表したデータ行列に、行列式が1である変換行列を乗算して、エントロピーを削減する
処理をコンピュータに行わせることを特徴とするプログラム。
(付記11)
複数の整数で表現されるデータを指定した圧縮要求を受け付け、
前記圧縮要求で指定される前記データを行列で表したデータ行列に、行列式が1である変換行列を乗算して、エントロピーを削減する
処理をコンピュータが行うことを特徴とする情報処理方法。
1 元データ
1−2 変換後データ
1−2’ 増大後データ
2 格納形式
3 ヘッダ
4 ボディ
5 ヘッダ情報
6 削減後データ
7 圧縮データ
8 解凍データ
9 格納領域
11 CPU
12 主記憶装置
13 補助記憶装置
14 入力装置
15 表示装置
17 通信I/F
18 ドライブ装置
19 記憶媒体
31 データ圧縮要求
32 データ解凍要求
71 出現頻度の結果
73 出現頻度の結果
81 出現頻度の結果
83 出現頻度の結果
100 情報処理装置
110、110−2 圧縮処理部
120、120−2 解凍処理部
109 数値変換テーブル
111 圧縮要求受付部
112 数値変換部
113 変換行列探索部
114 エントロピー削減部
115 データ圧縮部
120、120−2 解凍処理部
121 解凍要求受付部
122 データ解凍部
123 エントロピー増大部
124 逆数値変換部

Claims (8)

  1. 複数の整数で表現されるデータを指定した圧縮要求を受け付ける圧縮要求受付部と、
    前記圧縮要求で指定される前記データを行列で表したデータ行列に、行列式が1である変換行列を乗算して得られた行列の各要素の値を所定数値で剰余をとって、エントロピーを削減するエントロピー削減部と
    を有することを特徴とする情報処理装置。
  2. 前記エントロピー削減部は、
    前記データ行列に前記変換行列を乗算し、得られた行列の各要素の値を、所定数値で剰余をとることを特徴とする請求項1記載の情報処理装置。
  3. 任意の行列を積により表現可能な第1行列と第2行列の少なくとも1つ以上を用いて、前記データ行列を構成する1バイト記号のエントロピーが最も小さくなるべき乗数を探索して、前記変換行列を求め、圧縮データを格納するファイルのヘッダに、前記べき乗数を示す情報を記憶する変換行列探索部を更に有することを特徴とする請求項2記載の情報処理装置。
  4. 前記ファイルに格納された前記圧縮データを解凍して得た解凍データを行列で表し、前記ファイルの前記ヘッダに格納された前記べき乗数を示す情報を用いて得られる逆変換行列を該解凍データの行列に乗算して得られた行列の各要素の値を、該所定数値で剰余をとり前記エントロピーを増大させることで前記データ行列を復元するエントロピー増大部
    を有することを特徴とする請求項3記載の情報処理装置。
  5. 前記所定数値の2のn乗分の1の整数倍の値を示すテーブルを作成する数値変換テーブル作成部と、
    前記データの前記複数の整数において、出現頻度の高い順に、前記数値変換テーブル作成部によって作成された前記テーブルの先頭から順に得られた数値を写像先として該データの各整数の値を変換する数値変換部とを更に有し、
    前記データ行列は、前記数値変換部による変換後の前記データを表わすことを特徴とする請求項3記載の情報処理装置。
  6. 前記変換行列によって変換された前記データ行列では、出現する整数の種類の出現頻度が偏ることを特徴とする請求項1乃至5のいずれか一項記載の情報処理装置。
  7. 複数の整数で表現されるデータを指定した圧縮要求を受け付け、
    前記圧縮要求で指定される前記データを行列で表したデータ行列に、行列式が1である変換行列を乗算して得られた行列の各要素の値を所定数値で剰余をとって、エントロピーを削減する
    処理をコンピュータに行わせることを特徴とするプログラム。
  8. 複数の整数で表現されるデータを指定した圧縮要求を受け付け、
    前記圧縮要求で指定される前記データを行列で表したデータ行列に、行列式が1である変換行列を乗算して得られた行列の各要素の値を所定数値で剰余をとって、エントロピーを削減する
    処理をコンピュータが行うことを特徴とする情報処理方法。
JP2017002818A 2017-01-11 2017-01-11 情報処理装置、情報処理方法、及びプログラム Active JP6801461B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017002818A JP6801461B2 (ja) 2017-01-11 2017-01-11 情報処理装置、情報処理方法、及びプログラム
PCT/JP2017/046673 WO2018131468A1 (ja) 2017-01-11 2017-12-26 情報処理装置、情報処理方法、及びプログラム
US16/286,157 US10644720B2 (en) 2017-01-11 2019-02-26 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017002818A JP6801461B2 (ja) 2017-01-11 2017-01-11 情報処理装置、情報処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2018113583A JP2018113583A (ja) 2018-07-19
JP6801461B2 true JP6801461B2 (ja) 2020-12-16

Family

ID=62839429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017002818A Active JP6801461B2 (ja) 2017-01-11 2017-01-11 情報処理装置、情報処理方法、及びプログラム

Country Status (3)

Country Link
US (1) US10644720B2 (ja)
JP (1) JP6801461B2 (ja)
WO (1) WO2018131468A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10949617B1 (en) * 2018-09-27 2021-03-16 Amazon Technologies, Inc. System for differentiating encoding of text fields between networked services
CN111479286B (zh) * 2020-02-26 2023-04-14 国网河南省电力公司电力科学研究院 一种边缘计算系统减少通信流量的数据处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001309185A (ja) 2000-04-24 2001-11-02 Rohm Co Ltd データ圧縮装置
JP2002077920A (ja) * 2000-08-28 2002-03-15 Sony Corp 画像圧縮装置及び画像圧縮方法
JP2003230139A (ja) 2002-02-01 2003-08-15 Sony Corp 画像圧縮装置と画像圧縮方法、並びにその画像伸張装置と画像伸張方法
JP2006024227A (ja) * 2003-08-22 2006-01-26 Seiko Epson Corp 印刷装置および印刷指示端末、印刷システム、印刷プログラム並びに印刷方法
JP4479348B2 (ja) 2003-08-22 2010-06-09 セイコーエプソン株式会社 印刷システム
JP4594420B2 (ja) * 2008-12-25 2010-12-08 キヤノン株式会社 データ変換装置及びその制御方法
JP5221430B2 (ja) * 2009-03-24 2013-06-26 株式会社東芝 画像圧縮装置および画像伸張装置
JP6191394B2 (ja) * 2013-10-29 2017-09-06 富士ゼロックス株式会社 データ圧縮装置、プログラム及びコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
US20190199372A1 (en) 2019-06-27
WO2018131468A1 (ja) 2018-07-19
JP2018113583A (ja) 2018-07-19
US10644720B2 (en) 2020-05-05

Similar Documents

Publication Publication Date Title
Liang et al. An efficient transformation scheme for lossy data compression with point-wise relative error bound
Lou et al. Fast L1–L2 minimization via a proximal operator
JP7029321B2 (ja) 情報処理方法、情報処理装置およびプログラム
EP2387004B1 (en) Lossless compression of a structured set of floating point numbers, particularly for CAD systems
Žalik et al. Chain code lossless compression using move-to-front transform and adaptive run-length encoding
JP5812188B2 (ja) プログラム、圧縮データ生成方法、伸張方法、情報処理装置、および記録媒体
US10122379B1 (en) Content-aware compression of data with reduced number of class codes to be encoded
JP2020532777A (ja) ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム
Jiang et al. A novel quantum image compression method based on JPEG
US7284026B2 (en) Hadamard transformation method and device
JP6801461B2 (ja) 情報処理装置、情報処理方法、及びプログラム
Peyrot et al. HexaShrink, an exact scalable framework for hexahedral meshes with attributes and discontinuities: multiresolution rendering and storage of geoscience models
Sun et al. A novel non-equilibrium hyperchaotic system and application on color image steganography with FPGA implementation
JP6833643B2 (ja) 圧縮処理装置、伸長処理装置、圧縮処理用プログラム、伸長処理用プログラム
KR102242904B1 (ko) 압축 알고리즘의 파라미터를 추정하는 방법 및 장치
Umezu et al. 2D wavelet transform data compression with error level guarantee for Z-map models
Yan et al. TopoSZ: Preserving Topology in Error-Bounded Lossy Compression
Rouigueb et al. Integration of polynomials over n-dimensional simplices
Johnsy et al. A lossless coding scheme for maps using binary wavelet transform
Du et al. RGB image-based data analysis via discrete Morse theory and persistent homology
US20230069961A1 (en) Information processing method, information processing system, and information processing program
Maleika et al. Lossless compression method for digital terrain model of seabed shape
Ren et al. A Prediction-Traversal Approach for Compressing Scientific Data on Unstructured Meshes with Bounded Error
JP2000333030A (ja) 色変換装置、色変換方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
Whetsel et al. Quantifying the impact of big data's variety

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200616

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200803

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201019

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201109

R150 Certificate of patent or registration of utility model

Ref document number: 6801461

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150