JP6227186B2 - データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム - Google Patents

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

Info

Publication number
JP6227186B2
JP6227186B2 JP2017500150A JP2017500150A JP6227186B2 JP 6227186 B2 JP6227186 B2 JP 6227186B2 JP 2017500150 A JP2017500150 A JP 2017500150A JP 2017500150 A JP2017500150 A JP 2017500150A JP 6227186 B2 JP6227186 B2 JP 6227186B2
Authority
JP
Japan
Prior art keywords
unit
integers
data
integer
bits
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
JP2017500150A
Other languages
English (en)
Other versions
JPWO2016132430A1 (ja
Inventor
秀哉 柴田
秀哉 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2016132430A1 publication Critical patent/JPWO2016132430A1/ja
Application granted granted Critical
Publication of JP6227186B2 publication Critical patent/JP6227186B2/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/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4087Encoding of a tuple of symbols
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/607Selection between different types of compressors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラムに関する。特に、整数を分割して符号化する方式を用いるデータ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラムに関する。
固定長の整数列を可逆圧縮するための符号化方法として、まず符号化対象データに対する予測値を求め、次に予測値と符号化対象データとの残差を求め、そして残差からなるデータ系列を適当な方式で符号化する方法が用いられている。すなわち、この方法は、符号化対象データに対する予測値を求める予測値生成、予測値と符号化対象データとの残差を求める残差生成、残差からなるデータ系列を適当な方式で符号化する残差符号化から構成される。
この方法では、残差を求める段階を挟むことにより、実データ系列と比較して、小さい値すなわち0に近い値から成るデータ系列を得られる。よって、この方法によれば、符号化対象データに対する残差符号化が効きやすくなり、圧縮効果が高まることが多い。
予測値生成及び残差生成における例として、前回値との差分を残差として取る方法がある。具体的には、予測値として前回値を選択し、残差生成方法として単純な整数値減算値を残差として採用する。より一般的には、予測値として線形予測等の方法を選択する。
残差符号化については、ガンマ符号化やデルタ符号化等、様々な方法が提案されている。これらの残差符号化の方法は、圧縮率向上のための方法と、圧縮速度、伸張速度等の処理速度の向上のための方法との2種類の方法に大別される。
圧縮率向上のための方式としては、ゴロム・ライス符号化に代表されるように、整数値を上位ビットから成る第1の整数と、下位ビットから成る第2の整数とに、定められた位置で分割する方式がある。以下では、整数を分割する符号化方式をまとめて上下ビット分割方式と呼称する。
上下ビット分割方式では、上位ビットから成る第1の整数を、ガンマ符号やデルタ符号のような適当な可変長符号により符号化し出力する。そして、下位ビットから成る第2の整数については、符号化せずに、固定長のバイナリデータとして出力する。ゴロム・ライス符号では、第1の整数の符号化方法としてアルファ符号を採用している。
特許文献1には、上位ビットから成る第1の整数の符号化方法と上位ビットと下位ビットの分割位置とを動的に決定することで、圧縮率を高める方法について開示されている。また、特許文献2には、上下ビット分割方式による画像の圧縮方法が開示されている。
上下ビット分割方式は、圧縮対象となる整数列にノイズが混在するなどして、下位ビットの変動が大きいときに有効な方式である。ノイズが混在した下位ビットは、圧縮が困難であるため、圧縮せずに固定長バイナリデータとして出力し、比較的圧縮が容易な上位ビットのみを圧縮する、というのが上下ビット分割方式の基本的な考え方である。
図8に示すように、整数列を上位ビットと下位ビットとにビット分割した場合、上位ビットは圧縮が容易であり、下位ビットは圧縮が困難となる。
処理速度向上のための方式は、圧縮の際の符号を、バイト単位あるいは更に大きなワード単位で行う方式が複数存在する。先に述べたガンマ符号、デルタ符号、ゴロム・ライス符号等は、符号をビット単位で生成し出力するため、コンピュータ処理との親和性が低く、処理速度の低下を招くという課題がある。このような課題を解決するために提案された方式が、バイト単位やワード単位に符号を生成し、出力する方式である。ここで、ワードとはある固定長の単位であり、例えば、2バイトや4バイトといった単位を指す。以下、バイト単位、ワード単位に符号を生成する圧縮方式を、それぞれバイト単位処理方式、ワード単位処理方式と呼ぶ。
バイト単位処理方式の例としては、Variable−Byte(非特許文献1)などの符号化方式が良く知られる。ワード単位処理方式としては、Simple9(非特許文献2)、PForDelta(非特許文献3)などが知られる。ガンマ符号、デルタ符号、ゴロム・ライス符号等では、整数は1つずつ符号化されるが、ワード単位処理方式においては、複数の整数が一括して符号化され、その結果がワード単位に生成される。
特許第5570409号 特開2011−223244
F.Scholer,H.Williams,J.Yiannis,and J.Zobel.Compression of Inverted Indexes For Fast Query Evaluation.In Proc.of the 25th Annual SIGIR Conf.on Research and Development in Information Retrieval,August 2002. Vo Ngoc Anh,Alistair Moffat.Inverted Index Compression Using Word−Aligned Binary Codes,Information Retrieval,8,151−166,2005. M.Zukowski,S.Heman,N.Nes,and P.Boncz.Super−Scalar RAM−CPU Cache Compression.In Proc.of the Int.Conf.on Data Engineering,2006.
圧縮率と処理速度とは、トレードオフの関係にある。上下ビット分割方式では、圧縮率は向上するが、処理速度は低下する。一方、ワード単位処理方式では、処理速度は向上するが、圧縮率は低下する。
本発明は、上下ビット分割方式とワード単位処理方式とを両立させることにより、上下ビット分割方式による高い圧縮率を維持しつつ、処理速度を向上させることができる整数列の可逆圧縮方式を実現することを目的とする。
本発明に係るデータ圧縮装置は、
処理単位のビット数である単位ビット数のバイナリデータで表された整数を複数含む符号化データから、nを自然数とし、n個の整数を取得するデータ取得部と、
前記データ取得部により取得された前記n個の整数の各整数を分割する整数分割部であって、前記n個の整数の各整数を、分割ビット数の下位ビットで表される第2の整数と、前記n個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第1の整数とに分割し、n個の第1の整数とn個の第2の整数とを出力する整数分割部と、
前記整数分割部から出力された前記n個の第1の整数を符号化する第1の符号化部であって、前記n個の第1の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第1符号として出力する第1の符号化部と、
前記整数分割部から出力された前記n個の第2の整数を符号化し、前記n個の第2の整数を符号化した結果を第2符号として出力する第2の符号化部とを備える。
本発明に係るデータ圧縮装置は、整数分割部から出力されたn個の第1の整数を符号化し、n個の第1の整数を符号化した結果を単位ビット数の自然数倍のビット数のバイナリデータで表される第1符号として出力する第1の符号化部を備える。また、データ圧縮装置は、整数分割部から出力されたn個の第2の整数を符号化し、n個の第2の整数を符号化した結果を第2符号として出力する第2の符号化部とを備える。よって、本発明に係るデータ圧縮装置によれば、上下ビット分割方式とワード単位処理方式とを両立させることにより、圧縮率を高く維持しつつ、処理速度を向上させることができる。
実施の形態1に係るデータ圧縮装置のブロック構成図。 実施の形態1に係るデータ伸張装置のブロック構成図。 実施の形態1に係るデータ圧縮装置、データ伸張装置のハードウェア構成図。 実施の形態1に係るデータ圧縮装置のデータ圧縮方法、データ圧縮処理のフロー図。 実施の形態1に係るデータ伸張装置のデータ伸張方法、データ伸張処理のフロー図。 実施の形態2に係るデータ圧縮装置のデータ圧縮方法、データ圧縮処理のフロー図。 実施の形態2に係るデータ伸張装置のデータ伸張方法、データ伸張処理のフロー図。 整数列のビット分割についての説明図。
実施の形態1.
***構成の説明***
図1を用いて、本実施の形態に係るデータ圧縮装置100のブロック構成について説明する。
以下の説明では、処理単位のビット数である単位ビット数をLビットとする。単位ビット数をワードあるいはバイトともいう。単位ビット数は、ワードの長さであるワード単位とも称される。
また、整数を表すバイナリデータのビット長は、単位ビット数と同じく、Lビットとする。Lは、16、32、64等の値であるが、これらの値に限定されるものではない。本実施の形態は、任意のビット長の整数に対して適用することができる。
データ圧縮装置100は、符号化の対象である符号化データ11を取得して、取得した符号化データ11を符号化し、符号化した結果を符号化済データ12に記憶する。符号化データ11は、順序付けられた整数列である。また、符号化データ11に含まれる整数の個数は任意である。符号化データ11は、入力データとも称される。
データ圧縮装置100は、データ取得部101、整数分割部102、符号化調整部103、第1の符号化部104、第1の結果出力部105、第2の符号化部106、第2の結果出力部107を備える。なお、データ圧縮装置100には、記憶部1201が接続されている。記憶部1201には、符号化済データ12が記憶される。
データ取得部101は、符号化データ11に含まれる整数を読み込む。データ取得部101は、処理単位のビット数である単位ビット数のバイナリデータで表された整数を複数含む符号化データ11から、nを自然数とし、n個の整数を取得する。データ取得部101は、入力部とも称される。
整数分割部102は、データ取得部101により取得された整数を、ビット分割位置パラメータbに基づいて、上位(L−b)ビットから成る第1の整数1021と、下位bビットから成る第2の整数1022とに分割する。すなわち、整数分割部102は、データ取得部101により取得されたn個の整数の各整数を分割する。整数分割部102は、n個の整数の各整数を、分割ビット数bの下位ビットで表される第2の整数1022と、n個の整数の各整数から下位ビットを除いた上位ビットにより表される第1の整数1021とに分割する。そして、整数分割部102は、n個の第1の整数とn個の第2の整数とを出力する。
符号化調整部103は、一度に符号化する整数の個数nを決定する。符号化調整部103は、決定部1031、符号化単位調整部とも称される。決定部1031、すなわち符号化調整部103は、kを自然数とし、単位ビット数Lのk倍の数をnとして決定する。
第1の符号化部104は、整数分割部102から出力されたn個の第1の整数1021を符号化する。第1の符号化部104は、n個の第1の整数1021を符号化した結果を単位ビット数Lの自然数倍のビット数のバイナリデータで表される第1符号1041として出力する。
第1の符号化部104は、符号化調整部103において決定されたn個の第1の整数1021を符号化する。第1の符号化部104は、符号化に際し、Simple9のような、符号結果をワード単位に生成するワード単位処理方式を利用する。第1の符号化部104は、n個の第1の整数1021を符号化した第1符号1041を出力する。ここで、第1の符号化部104により出力される第1符号1041のデータサイズは、第1の符号化部104の性質により、ワード単位であるLビットの倍数となる。第1の符号化部104は、第1の整数符号化部とも称される。
第1の結果出力部105は、第1の符号化部104により生成された第1符号1041を、符号化済データ12に追記する。第1の結果出力部105は、第1の符号化結果出力部とも称される。
第2の符号化部106は、符号化調整部103において決定されたn個の第2の整数1022を符号化し、第2符号1061として出力する。すなわち、第2の符号化部106は、整数分割部102から出力されたn個の第2の整数1022を符号化し、n個の第2の整数1022を符号化した結果を第2符号1061として出力する。
第2符号1061は、分割ビット数bにnを乗じた数のビット数のバイナリデータで表される。すなわち、第2の符号化部106は、n個のbビット整数をn×bビットの固定長バイナリデータに生成する。第2の符号化部106は、第2の整数符号化部とも称される。
このとき、nの値によっては、第2の符号化部106による符号結果がワード単位に生成されない。すなわち、第2符号1061のビット数(n×b)がLの倍数とならない可能性がある。しかし、本実施の形態によれば、符号化調整部103が適切にnを選択することにより、第2符号1061のビット数をワード単位、すなわちLの自然数倍に生成することができる。符号化調整部103がn=L×kとなるようにnを決定するので、第2の符号化部106は、単位ビット数Lに、分割ビット数bとkとの積を乗じた数のビット数のバイナリデータで表される第2符号1061を出力することができる。
第2の結果出力部107は、第2の符号化部106により生成された第2符号1061を、符号化済データ12に追記する。本実施の形態によれば、第2の符号化部106の性質により、出力される第2符号1061のデータサイズはワード単位Lビットの倍数となる。第2の結果出力部107は、第2の符号化結果出力部とも称される。
記憶部1201は、第1の符号化部104により出力された第1符号1041を記憶すると共に、第1符号1041の後ろに連続して第2の符号化部106により出力された第2符号1061を記憶する。以上のように、記憶部1201に記憶された符号化済データ12には、第1符号1041と、第2符号1061とが連続して交互に記述される。
次に、符号化調整部103の詳細について説明する。
符号化調整部103では、一度に符号化する整数の個数nとして、ワード単位Lの倍数(k×L)を選択する。ここで、kは予めデータ圧縮装置100の利用者により決定されるパラメータである。
符号化調整部103が、n=k×Lのようにnを設定することにより、第2の符号化部106で生成される第2符号1061のサイズが(k×L×b)ビット、すなわちワード単位Lビットの倍数となる。したがって、第2の結果出力部107は、余分なビットスペースを消費することなく、ワード単位Lビットの倍数サイズの第2符号1061を出力することができる。
図2を用いて、本実施の形態に係るデータ伸張装置200のブロック構成について説明する。
データ伸張装置200は、データ圧縮装置100により符号化された符号化済データ12であって、第1符号1041と第2符号1061とを含む符号化済データ12を伸張する装置である。データ伸張装置200は、符号化済データ12を入力とし、データ圧縮装置100によって圧縮される前の元データ22である符号化データ11を出力する。
データ伸張装置200は、符号化済データ取得部201、第1の復号部202、第2の復号部204、整数結合部205、出力部206を備える。第1の復号部202は、第1の復号処理部2021と、終了判定部203とを備える。
符号化済データ取得部201は、符号化済データ12から、復号する対象のデータを読み込む。上述したように、符号化済データ12には、交互に記述された第1符号1041と第2符号1061とが含まれる。よって、符号化済データ取得部201は、第1符号1041と第2符号1061とを交互に読み込むことになる。符号化済データ取得部201は、入力部とも称される。
第1の復号部202は、符号化済データ12から読み込んだ第1符号1041を複数の第1の整数1021へと復号する。すなわち、第1の復号部202は、第1符号1041を取得し、取得した第1符号1041をn個の第1の整数1021に復号する。データ圧縮装置100の性質から、第1の復号部202はワード単位Lビットでの復号処理が可能である。第1の復号部202は、第1の整数復号部とも称される。
第1の復号処理部2021は、符号化済データ取得部201から取得した第1符号1041の1ワード分について、第1の整数の復号処理を実行する。
終了判定部203は、データ圧縮装置100における符号化調整部103に対応する。終了判定部203は、符号化調整部103により設定された一度に圧縮する整数の個数n分だけ、n個の第1の整数の復号が終了したか否かを判定する。終了判定部203は、n個の第1の整数の復号が終了していない場合は、引き続き、第1の復号処理部2021による第1の整数の復号処理を行う。また、終了判定部203は、n個の第1の整数の復号が終了している場合は、第2の整数の復号処理へ移行する。終了判定部203は、第1の整数復号処理終了判定部とも称される。
第2の復号部204は、符号化済データ12から読み込んだ第2符号1061を複数の第2の整数へと復号する。すなわち、第2の復号部204は、符号化済データ12から第2符号1061を取得し、取得した第2符号1061をn個の第2の整数1022に復号する。データ圧縮装置100の性質から、第2の復号部204はワード単位での復号処理が可能である。第2の復号部204は、第2の整数復号部とも称される。
整数結合部205は、復号が済んだ第1の整数と第2の整数を再結合し、元の整数データへと復号する。すなわち、整数結合部205は、n個の第1の整数1021とn個の第2の整数1022とに基づいて、n個の整数を生成する。
出力部206は、整数結合部205で得られた復号結果を元データ22として出力する。元データ22は、符号化される前の符号化データ11である。
図3を用いて、本実施の形態に係るデータ圧縮装置100、データ伸張装置200のハードウェア構成の一例について説明する。
データ圧縮装置100、データ伸張装置200はコンピュータである。
データ圧縮装置100、データ伸張装置200は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906といったハードウェアを備える。
プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース905は、入力装置907に接続されている。
ディスプレイインタフェース906は、ディスプレイ908に接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ901は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
補助記憶装置902は、例えば、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)である。
メモリ903は、例えば、RAM(Random Access Memory)である。
通信装置904は、データを受信するレシーバー9041及びデータを送信するトランスミッター9042を含む。
通信装置904は、例えば、通信チップ又はNIC(Network Interface Card)である。
入力インタフェース905は、入力装置907のケーブル911が接続されるポートである。
入力インタフェース905は、例えば、USB(Universal Serial Bus)端子である。
ディスプレイインタフェース906は、ディスプレイ908のケーブル912が接続されるポートである。
ディスプレイインタフェース906は、例えば、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。
入力装置907は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ908は、例えば、LCD(Liquid Crystal Display)である。
補助記憶装置902には、コンピュータがデータ圧縮装置100の場合、図1に示すデータ取得部101、整数分割部102、符号化調整部103、第1の符号化部104、第1の結果出力部105、第2の符号化部106、第2の結果出力部107の機能を実現するプログラムが記憶されている。以下、データ取得部101、整数分割部102、符号化調整部103、第1の符号化部104、第1の結果出力部105、第2の符号化部106、第2の結果出力部107をまとめて「データ圧縮装置の部」と表記する。
また、補助記憶装置902には、コンピュータがデータ伸張装置200の場合、図2に示す符号化済データ取得部201、第1の復号処理部2021、終了判定部203、第2の復号部204、整数結合部205、出力部206の機能を実現するプログラムが記憶されている。以下、符号化済データ取得部201、第1の復号処理部2021、終了判定部203、第2の復号部204、整数結合部205、出力部206をまとめて「データ伸張装置の部」と表記する。「データ圧縮装置の部」と「データ伸張装置の部」とのいずれかあるいは両方を単に「部」と表記する場合もある。
上述した「データ圧縮装置の部」の機能を実現するプログラムは、データ圧縮プログラムとも称される。上述した「データ伸張装置の部」の機能を実現するプログラムは、データ伸張プログラムとも称される。「部」の機能を実現するプログラムは、1つのプログラムであってもよいし、複数のプログラムから構成されていてもよい。
このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。
更に、補助記憶装置902には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
図3では、1つのプロセッサ901が図示されているが、データ圧縮装置100、データ伸張装置200の各々が複数のプロセッサ901を備えていてもよい。
そして、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ903、補助記憶装置902、又は、プロセッサ901内のレジスタ又はキャッシュメモリにファイルとして記憶される。
「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。また、「処理」を「回路」又は「工程」又は「手順」又は「部」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ901だけでなく、ロジックIC又はGA(Gate Array)又はASIC(Application Specific Integrated Circuit)又はFPGA(Field−Programmable Gate Array)といった他の種類の処理回路をも包含する概念である。
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体、記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
***動作の説明***
図4を用いて、本実施の形態に係るデータ圧縮装置100のデータ圧縮方法、データ圧縮処理S100について説明する。
<データ取得処理S1001>
データ取得部101は、単位ビット数Lのバイナリデータで表された整数を複数含む符号化データ11から、nを自然数とし、n個の整数を取得するデータ取得処理S1001を実行する。データ取得処理S1001はS101の処理とS102の処理とを有する。
S101において、データ取得部101は、符号化データ11に含まれる全整数の符号化処理を完了したかどうかを判定する。
データ取得部101は、符号化データ11に含まれる全整数の符号化処理を完了していると判定した場合は、処理を終了する。データ取得部101は、符号化データ11に含まれる全整数の符号化処理を完了していないと判定した場合は、S102に進む。
S102において、データ取得部101は、符号化データ11から、新たに符号化する整数を読み込む。このとき、データ取得部101は、符号化調整部103で定められたパラメータkに従い、(k×L)個、すなわちn個の整数を読み込む。データ取得部101は、符号化データ11に(k×L)個未満の整数しか残されていない場合は、全整数を読み込む。処理はS103に進む。
<整数分割処理S1002>
整数分割部102は、データ取得処理S1001により取得されたn個の整数の各整数を分割する整数分割処理S1002を実行する。整数分割処理S1002では、整数分割部102は、n個の整数の各整数を、分割ビット数bの下位ビットで表される第2の整数1022と、n個の整数の各整数から下位ビットを除いた上位ビットにより表される第1の整数1021とに分割する。また、整数分割処理S1002では、整数分割部102は、n個の第1の整数1021とn個の第2の整数1022とを出力する。整数分割処理S1002は、S103の処理を有する。
S103において、整数分割部102は、読み込んだ(k×L)個の整数を、(L−b)ビットの上位ビットから成る第1の整数1021と、bビットの下位ビットから成る第2の整数1022とに分割する。処理はS104に進む。
<第1の符号化処理S1003>
第1の符号化部104は、整数分割処理S1002により出力されたn個の第1の整数1021を符号化する第1の符号化処理S1003を実行する。第1の符号化処理S1003では、第1の符号化部104は、n個の第1の整数1021を符号化した結果を単位ビット数Lの自然数倍のビット数のバイナリデータで表される第1符号1041として出力する。第1の符号化処理S1003は、S104の処理とS105の処理とを有する。
S104において、第1の符号化部104は、(k×L)個の第1の整数を、ワード単位処理方式により符号化し、第1符号1041を生成する。処理はS105に進む。
S105において、第1の結果出力部105は、第1の符号化部104により生成された第1符号1041を符号化済データ12に追記する。処理はS106に進む。
<第2の符号化処理S1004>
第2の符号化部106は、整数分割処理S1002により出力されたn個の第2の整数1022を符号化し、n個の第2の整数1022を符号化した結果を第2符号1061として出力する第2の符号化処理S1004を実行する。第2の符号化処理S1004は、S106の処理とS107の処理とを有する。
S106において、第2の符号化部106は、(k×L)個の第2の整数を、(k×L×b)ビット、すなわち(n×b)ビットの固定長バイナリデータに符号化し、第2符号1061を生成する。処理はS107に進む。
S107において、第2の結果出力部107は、第2の符号化部106により生成された第2符号1061を符号化済データ12に追記する。処理はS101に戻る。
以上で、データ圧縮装置100のデータ圧縮方法、データ圧縮処理S100についての説明を終わる。
このデータ圧縮方法により、符号化データ11に含まれる複数の整数が、n個の第1の整数1021が符号化された第1符号1041と、n個の第2の整数1022が符号化された第2符号1061とが交互に記述された符号化済データ12が出力される。
次に、図5を用いて、本実施の形態に係るデータ伸張装置200のデータ伸張方法、データ伸張処理S200について説明する。
<符号化済データ取得処理S2001>
S201において、符号化済データ取得部201は、符号化済データ12に含まれる全データの復号処理を完了したかどうかを判定する。符号化済データ取得部201は、全データの復号処理を完了していると判定した場合は、処理を終了する。符号化済データ取得部201は、全データの復号処理を完了していないと判定した場合は、S202に進む。
S202において、符号化済データ取得部201は、次の処理が第1の整数の復号処理か、第2の整数の復号処理かを判定する。データ伸張処理S200における初期状態は第1の整数の復号処理である。次の処理が第1の整数の復号処理である場合はS203に進む。次の処理が第2の整数の復号処理である場合はS208に進む。
<第1の復号処理S2002>
第1の復号部202は、データ圧縮処理S100により符号化された符号化済データ12に含まれる第1符号1041を取得し、第1符号1041をn個の第1の整数1021に復号する第1の復号処理S2002を実行する。
第1の復号部202は、第1符号1041から、単位ビット数Lのバイナリデータである第1単位データ10411を順に取得し、取得した第1単位データ10411を復号し、復号より得られた第1の整数1021の個数をカウントする。第1の復号部202は、カウントした個数がnと等しくなるまで、第1符号1041から第1単位データ10411を取得し、取得した第1単位データ10411を復号する処理を繰り返す。第1の復号処理S2002はS203の処理からS207の処理を有する。
S203において、符号化済データ取得部201は、符号化済データ12から、新たに復号するデータを1ワード読み込む。1ワードはLビットである。処理はS204に進む。
S204において、第1の復号部202の第1の復号処理部2021は、読み込んだ1ワードを、複数の第1の整数1021へ復号する。処理はS205に進む。
S205において、第1の復号部202の終了判定部203は、第1の復号処理部2021でn(=k×L)個の第1の整数が復号されたか否かを判定する。すなわち、終了判定部203は、第1の整数の復号済み個数がn個であるか否かを判定する。n個の第1の整数が復号された場合はS206に進む。n個の第1の整数の復号が未完了の場合は、S207に進む。
S206において、終了判定部203は、次に行う処理を、第2の整数の復号処理に設定する。この設定は、S202における判定で用いられる。また、終了判定部203は、S205の判定で利用する第1の整数の復号済み個数を0個に初期化する。処理はS202に戻る。
S207において、終了判定部203は、次に行う処理を、第1の整数の復号処理に設定する。この設定は、S202における判定で用いられる。処理はS202に戻る。
以上の第1の復号処理S2002により、n(=k×L)個の第1の整数が生成される。
<第2の復号処理S2003>
第2の復号部204は、符号化済データ12から第2符号1061を取得し、取得した第2符号1061をn個の第2の整数1022に復号する第2の復号処理S2003を実行する。
第2の復号部204は、第2符号1061から、単位ビット数Lのバイナリデータである第2単位データ10611を、分割ビット数bとkとの積の数だけ取得する。第2の復号部204は、取得した分割ビット数bとkとの積の数の第2単位データ10611をn個の第2の整数1022に復号する。第2の復号処理S2003はS208の処理からS209の処理を有する。
S208において、符号化済データ取得部201は、符号化済データ12から、新たに復号するデータを(k×b)ワード読み込む。処理はS209に進む。
S209において、第2の復号部204は、読み込んだ(k×b)個のワードを、(k×L)個の第2の整数へ復号する。処理はS210に進む。
以上の第2の復号処理S2003により、n(=k×L)個の第2の整数が生成される。
<整数結合処理S2004>
整数結合部205は、n個の第1の整数1021とn個の第2の整数1022とに基づいて、n個の整数を生成する整数結合処理S2004を実行する。整数結合処理S2004はS210の処理からS212の処理を有する。
S210において、整数結合部205は、第1の復号部202により復号された(k×L)個の第1の整数と、第2の復号部204により復号された(k×L)個の第2の整数をそれぞれ再結合する。整数結合部205は、(k×L)個の第1の整数と、(k×L)個の第2の整数とを各々再結合し、(k×L)個の整数を生成する。処理はS211に進む。
S211において、出力部206は、整数結合部205により生成されたn(=k×L)個の整数を元データ22に追記する。処理はS212に進む。
S212において、終了判定部203は、次に行う処理を、第1の整数の復号処理に設定する。この設定は、S202における判定で用いられる。処理はS201に戻る。
以上の整数結合処理S2004により、n(=k×L)個の整数が生成される。
以上で、データ伸張装置200のデータ伸張方法、データ伸張処理S200についての説明を終わる。
***効果の説明***
本実施の形態に係るデータ圧縮装置は、ワード長Lビットの固定長の整数値データから成るデータ系列を可逆圧縮する。符号化調整部は、一度に符号化する整数の個数nとして、ワード長Lの倍数(k×L)を選択する。第1の符号化部は、符号化調整部において決定された(k×L)個の第1の整数の符号化結果を、ワード長Lの倍数となるように生成する。すなわち、第1の符号化部は、ワード単位圧縮を実施する。第2の符号化部は、符号化調整部において決定された個数nの第2の整数を、(k×b)個のワード、すなわち(k×b×L)ビットにパッキングする。
また、本実施の形態に係るデータ圧縮装置は、第1の符号化部で生成された符号化結果をワード長Lの倍数の長さで出力する第1の符号化結果出力部を備える。また、データ圧縮装置は、第2の符号化部で生成された符号化結果を(k×b)個のワード、すなわち(k×b×L)ビットの長さで出力する第2の符号化結果出力部を備える。
また、本実施の形態に係るデータ伸張装置では、第1の整数復号部が圧縮データを1ワードずつ読み込み、ワード単位での復号処理を繰り返すことで、第1の整数へ復号する。終了判定部は、(k×L)個の第1の整数を復号したかを判定し、判定結果が真の場合に、第2の復号部へ処理を移行する。第2の復号部は、圧縮データをワード単位で読み込み、第1の復号部で復号した第1の整数の個数と同数の第2の整数へ復号する。すなわち、第2の復号部は、ビット分割位置パラメータb、及び復号した第1の整数の個数kから決定される、(k×b)個のワードを(k×L)個の第2の整数へ復号する。
整数結合部は、第1の復号部と第2の復号部の出力結果を結合することにより元の(k×L)個の整数値を得る。
本実施の形態に係るデータ圧縮装置によれば、上下ビット分割方式を採用することができると共に、上位ビットから成る第1の整数の符号化結果と下位ビットから成る第2の整数の符号化結果とを共にワード単位に生成することができる。よって、本実施の形態に係るデータ圧縮装置は、圧縮率を向上させつつ、処理速度を向上させることができる。
また、本実施の形態に係るデータ圧縮装置及びデータ伸張装置によれば、第1の符号化結果と第2の符号化結果とを少量ずつ交互に出力することができる。よって、データ圧縮装置によれば、符号化データ11が非常に大きいサイズのデータであっても、圧縮処理において、全てのデータを一度に読み込む必要が無く、データを少量ずつ読み込んで逐次的に処理することができる。また、データ伸張装置によれば、符号化済データ12が非常に大きいサイズのデータであっても、伸張処理において、全てのデータを一度に読み込む必要が無く、データを少量ずつ読み込んで逐次的に処理することができる。
実施の形態2.
本実施の形態では、主に、実施の形態1と異なる点について説明する。
***構成の説明***
本実施の形態に係るデータ圧縮装置100aを示すブロック構成は、実施の形態1と同様に図1によって表される。また、本実施の形態に係るデータ伸張装置200aを示すブロック構成は、実施の形態1と同様に図2によって表される。実施の形態1で説明した構成と同様の構成については同一の符号を付し、その説明を省略する場合がある。
本実施の形態に係るデータ圧縮装置100aでは、符号化調整部103の機能及び動作が実施の形態1とは異なる。本実施の形態では、図1の符号化調整部103を符号化調整部103a、決定部1031を決定部1031aとして説明する。
決定部1031a、すなわち符号化調整部103aは、Kを自然数とし、kの上限値としてKを決定すると共に、cを自然数とし、パラメータcを決定する。符号化調整部103aは、k≦Kの範囲においてn個の第1の整数1021を符号化した際に、符号化に際して冗長となる余剰ビットのビット数がc以下となるkを選択する。
このように、符号化調整部103aは、一度に符号化する整数の個数nを決定するために、2個のパラメータK、cを用いる。具体的には、符号化調整部103aは、一度に符号化する整数の個数の上限として、ワード長Lの倍数(K×L)を選択する。また、符号化調整部103aは、k<Kの範囲で、(k×L)個の第1の整数を符号化した際に、符号化に際して冗長となる余剰ビットが、予め設定されたパラメータcビット以下となるような最小のkを選択する。
本実施の形態に係るデータ伸張装置200aでは、第1の復号部202の機能及び動作が実施の形態1とは異なる。本実施の形態では、図2の第1の復号部202の終了判定部203及び第1の復号処理部2021を、第1の復号部202aの終了判定部203a及び第1の復号処理部2021aとして説明する。
終了判定部203aは、Kを自然数とし、kの上限値としてKを決定すると共に、cを自然数とし、パラメータcを決定する。終了判定部203aは、第1の整数の復号処理が完了したか否かを判定するために、2個のパラメータK、cを用いる。
***動作の説明***
図6を用いて、本実施の形態に係るデータ圧縮装置100aのデータ圧縮方法、データ圧縮処理S100aについて説明する。
データ圧縮装置100aは、データ圧縮処理S100aの開始時に、パラメータkをk=0と初期化する。
S301の処理は、図4のS101の処理と同様である。すなわち、S301において、データ取得部101は、符号化データ11に含まれる全整数の符号化処理を完了したかどうかを判定する。
データ取得部101は、符号化データ11に含まれる全整数の符号化処理を完了していると判定した場合は、処理を終了する。データ取得部101は、符号化データ11に含まれる全整数の符号化処理を完了していないと判定した場合は、S302に進む。
S302において、データ取得部101は、符号化データ11から、新たにL個の整数を読み込む。符号化データ11にL個未満の整数しか残されていない場合は、全整数を読み込む。データ取得部101は、パラメータkをインクリメントする。上述したように、kの初期値は0である。S302の処理は、図4のS102の処理に相当する。処理はS303に進む。
S303において、整数分割部102は、読み込んだL個の整数を、(L−b)ビットの上位ビットから成る第1の整数1021と、bビットの下位ビットから成る第2の整数1022とに分割する。S303の処理は、図4のS103の処理に相当する。処理はS304に進む。
S304において、第1の符号化部104は、(k×L)個の第1の整数1021を、ワード単位処理方式により符号化し、第1符号1041を生成する。S304の処理は、図4のS104の処理に相当する。処理はS305に進む。
S305において、符号化調整部103aは、一度に圧縮する整数の個数nを(k×L)とするか否かを判定する。符号化調整部103aは、k<Kであり、かつ、S304での第1の符号化結果における余剰ビットがcより大きい場合に、n=(k×L)とすべきでないと判定し、S302に戻る。符号化調整部103aは、k<Kでない、あるいは、S304での第1の符号化結果における余剰ビットがcより大きくない場合、n=(k×L)とすべきと判定し、S306に進む。余剰ビットcについては、後述する。
S306において、第1の結果出力部105は、第1の符号化部104により生成された第1符号1041を符号化済データ12に追記する。S306の処理は、図4のS105の処理に相当する。処理はS307に進む。
S307において、第2の符号化部106は、(k×L)個の第2の整数を、(k×L×b)ビットの固定長バイナリデータに符号化し、第2符号1061を生成する。S307の処理は、図4のS106の処理に相当する。処理はS308に進む。
S308において、第2の結果出力部107は、第2の符号化部106により生成された第2符号1061を符号化済データ12に追記する。S308の処理は、図4のS107の処理に相当する。処理はS309に進む。
S309において、第2の結果出力部107は、パラメータkを0に初期化し、S301に戻る。
以上で、データ圧縮装置100aのデータ圧縮処理S100aについての説明を終わる。
以上のように、データ圧縮装置100aが動作することにより、実施の形態1と異なり、符号化調整部103aは、与えられたパラメータK以下の範囲内で、最適なkを選択することが可能となる。kの値が小さいほどデータ圧縮処理の処理速度は向上するが、圧縮率が低下する。しかしながら、図6のように符号化調整部103aを動作させることにより、圧縮率がある程度高くなる状態を担保しつつ、最小のkを選択することが可能となる。よって、圧縮率と処理速度との両方について高い性能が維持される。
ここで、符号化調整部103aの動作において重要な役割を果たす余剰ビットについて、Simple9を例に説明する。
例えば、符号化対象となる整数列が、1(1),5(101),3(11)という3個の整数であるとする。カッコ内は整数を2進数で表したものである。このとき、整数列のうち最大の整数は5であり、5の2進桁数は3である。従って、Simple9を用いると、本来、3桁の2進整数を9個詰めることが可能なデータ符号方法を選択することにより、最も圧縮率が向上する。しかしながら、上記整数列の例では、符号化対象となる整数が3個しか無いため、最大桁数が3であるにも関わらず、実際に選択される符号化方式は、9桁の2進整数を3個詰めるという方式となってしまう。このように、ワード単位処理方式を採用しているために、出力符号をワード単位に生成するという制約があり、本来であれば不要である冗長なビットが付加されることがある。このような冗長なビットを、余剰ビットと呼んでいる。上記整数列の例においては、3桁の数値が3個であるので、本来9ビットで表現できるデータを、実際には、9桁の数値3個として27ビットを使用して表現しているので、余剰ビットは18ビットとなる。
余剰ビットが生じる要因は、符号化対象である整数が十分でない点にある。余剰ビットを減らすためには、一度に符号化する整数の個数を増加させれば良い。本実施の形態における符号化調整部103は、この考え方に基づき、余剰ビットがある閾値(パラメータc)を超える場合には、一度に符号化する整数の個数を増加させて、再度符号化を実施ししていると解釈することができる。
次に、図7を用いて、本実施の形態に係るデータ伸張装置200aのデータ伸張方法、データ伸張処理S200aについて説明する。
データ伸張装置200aは、データ伸張処理S200aの開始時に、パラメータkをk=0と初期化する。
S401の処理は、図5のS201の処理と同様である。すなわち、S401において、符号化済データ取得部201は、符号化済データ12に含まれる全整数の復号処理を完了したかどうかを判定する。
符号化済データ取得部201は、符号化済データ12に含まれる全整数の復号処理を完了していると判定した場合は、処理を終了する。符号化済データ取得部201は、符号化済データ12に含まれる全整数の復号処理を完了していないと判定した場合は、S402に進む。
S402の処理は、図5のS202の処理と同様である。すなわち、S402において、符号化済データ取得部201は、次の処理が第1の整数の復号処理か、第2の整数の復号処理かを判定する。データ伸張処理S200aにおける初期状態は第1の整数の復号処理である。次の処理が第1の整数の復号処理である場合はS403に進む。次の処理が第2の整数の復号処理である場合はS409に進む。
ここで、S403の処理からSS408の処理についての概要を説明する。第1の復号部202は、第1符号1041から、単位ビット数Lのバイナリデータである第1単位データ10411を順に取得し、取得した第1単位データ10411を復号する。第1の復号部202は、k<Kの範囲において第1単位データ10411を復号した際に、復号に際して冗長となる余剰ビットのビット数がc以下となり、かつ、復号より得られた第1の整数1021の個数が単位ビット数Lとkとの積と等しくなるk、あるいは、Kと等しくなるkを選択する。第1の復号部202は、復号により得られた第1の整数1021の個数が単位ビット数Lとkとの積と等しくなるまで、第1符号1041から第1単位データ10411を取得し、取得した第1単位データ10411を復号する処理を繰り返す。なお、復号により得られた第1の整数1021の個数が単位ビット数Lとkとの積と等しくなる前に、k=Kとなった場合には、第1の復号部202はkとしてKを選択する。
S403の処理は、図5のS203の処理と同様である。すなわち、S403において、符号化済データ取得部201は、符号化済データ12から、新たに復号するデータを1ワード読み込む。1ワードはLビットである。処理はS404に進む。
S404において、第1の復号部202aの第1の復号処理部2021aは、読み込んだ1ワードを、複数の第1の整数へ復号する。そして、第1の復号処理部2021aは、パラメータkの値を、復号が完了した第1の整数の個数をLで割った値に更新する。kの初期値は0である。処理はS405に進む。
S405において、第1の復号処理部2021aは、復号が完了した第1の整数の個数が、Lの倍数か否かを判定する。
第1の復号処理部2021aは、復号が完了した第1の整数の個数がLの倍数となっていない場合、第1の整数の復号がまだ完了していないため、S408に進む。
第1の復号処理部2021aは、復号が完了した第1の整数の個数がLの倍数となっている場合、第1の整数の復号が完了している可能性があるため、次の判定の処理であるS406に進む。
S406において、終了判定部203aは、k<Kであり、かつ、S404で復号した第1の符号化結果における余剰ビットがcより大きい場合に、第1の整数の復号がまだ完了していないと判定し、S408に進む。終了判定部203aは、k≧K、あるいは、S404で復号した第1の符号化結果における余剰ビットがc以下の場合に、第1の整数の復号が完了したと判定し、S407に進む。
S407において、終了判定部203aは、次に行う処理を、第2の整数の復号処理に設定する。この設定は、S402における判定で用いられる。また、終了判定部203aは、S405の判定で利用する第1の整数の復号済み個数、すなわち復号が完了した第1の整数の個数を0個に初期化する。処理はS402に戻る。S407の処理は、図5のS206の処理に相当する。
S409からS412の処理は、S208からS211の処理と同様である。
S413において、終了判定部203aは、次に行う処理を、第1の整数の復号処理に設定する。この設定は、S402における判定で用いられる。また、終了判定部203aは、パラメータkを0に初期化する。処理はS401に戻る。
以上で、データ伸張装置200aのデータ伸張方法についての説明を終わる。
***効果の説明***
以上のように、本実施の形態に係るデータ圧縮装置では、符号化調整部は、一度に符号化する整数の個数の上限として、ワード長Lの倍数(K×L)を選択する。また、符号化調整部は、k<Kの範囲で、(k×L)個の第1の整数を符号化した際に、符号化に際して冗長となる余剰ビットが、cビット以下となるような最小のkを選択する。そして、符号化調整部は、一度に符号化する整数の個数として、ワード長Lの倍数(k×L)を選択する。第1の符号化部は、符号化調整部において決定された(k×L)個の第1の整数の符号化結果を、ワード長Lの倍数となるように生成する。第2の符号化部は、符号化調整部において決定された個数の第2の整数を、(k×b)個のワード(k×b×Lビット)にパッキングする。
また、本実施の形態に係るデータ伸張装置では、終了判定部は、k<Kの範囲で、(k×L)個の第1の整数を復号した時点で、符号化に際して冗長となる余剰ビットが、cビット以下となっている場合、或いは、k=Kの場合に、真と判定する。第2の復号部は、ビット分割位置パラメータb、及び復号した第1の整数の個数kから決定される(k×b)個のワードを(k×L)個の第2の整数へ復号する。整数結合部は、(k×L)個の整数値を得る。
以上のように、データ圧縮装置100aが動作することにより、実施の形態1と異なり、符号化調整部103aは、与えられたパラメータK以下の範囲内で最適なkを選択することが可能となる。一般に、kの値が小さいほど処理速度は向上するが、圧縮率が低下する。しかしながら、本実施の形態で説明したようにデータ圧縮装置100aを動作させることにより、圧縮率がある程度高くなる状態を担保しつつ、最小のkを選択することが可能となり、圧縮率と処理速度の両者を高い性能に維持することができる。
上記の実施の形態では、データ取得部、整数分割部、符号化調整部、第1の符号化部、第1の結果出力部、第2の符号化部、第2の結果出力部がそれぞれ独立した機能ブロックとしてデータ圧縮装置を構成している。また、符号化済データ取得部、第1の復号処理部、終了判定部、第2の復号部、整数結合部、出力部がそれぞれ独立した機能ブロックとしてデータ伸張装置を構成している。しかし、データ圧縮装置、データ伸張装置は上記のような構成に限らない。データ圧縮装置、データ伸張装置の構成は任意である。データ取得部、整数分割部、符号化調整部、第1の符号化部、第1の結果出力部、第2の符号化部、第2の結果出力部をひとつの機能ブロックで実現してもよい。符号化済データ取得部、第1の復号処理部、終了判定部、第2の復号部、整数結合部、出力部をひとつの機能ブロックで実現してもよい。データ圧縮装置、データ伸張装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成でデータ圧縮装置、データ伸張装置を構成しても構わない。
また、データ圧縮装置、データ伸張装置は、それぞれが1つの装置でなく、複数の装置から構成されたデータ圧縮システム、データ伸張システムでもよい。また、データ圧縮装置とデータ伸張装置とを備える1つの装置、あるいは1つのシステムでもよい。
また、実施の形態1,2について説明したが、これらの2つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。あるいは、これらの2つの実施の形態のうち、1つの実施の形態を部分的に実施しても構わない。その他、これらの2つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
11 符号化データ、12 符号化済データ、22 元データ、100,100a データ圧縮装置、101 データ取得部、102 整数分割部、103,103a 符号化調整部、104 第1の符号化部、105 第1の結果出力部、106 第2の符号化部、107 第2の結果出力部、200,200a データ伸張装置、201 符号化済データ取得部、202,202a 第1の復号部、203,203a 終了判定部、204 第2の復号部、205 整数結合部、206 出力部、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力インタフェース、906 ディスプレイインタフェース、907 入力装置、908 ディスプレイ、910 信号線、911,912 ケーブル、1021 第1の整数、1022 第2の整数、1031,1031a 決定部、1041 第1符号、1061 第2符号、1201 記憶部、2021,2021a 第1の復号処理部、9041 レシーバー、9042 トランスミッター、10411 第1単位データ、10611 第2単位データ、S100,S100a データ圧縮処理、S1001 データ取得処理、S1002 整数分割処理、S1003 第1の符号化処理、S1004 第2の符号化処理、S200,S200a データ伸張処理、S2001 符号化済データ取得処理、S2002 第1の復号処理、S2003 第2の復号処理、S2004 整数結合処理。

Claims (11)

  1. kを自然数とし、処理単位のビット数である単位ビット数のk倍の数をnとして決定する決定部と、
    前記単位ビット数のバイナリデータで表された整数を複数含む符号化データから、n個の整数を取得するデータ取得部と、
    前記データ取得部により取得された前記n個の整数の各整数を分割する整数分割部であって、前記n個の整数の各整数を、分割ビット数の下位ビットで表される第2の整数と、前記n個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第1の整数とに分割し、n個の第1の整数とn個の第2の整数とを出力する整数分割部と、
    前記整数分割部から出力された前記n個の第1の整数を符号化する第1の符号化部であって、前記n個の第1の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第1符号として出力する第1の符号化部と、
    前記整数分割部から出力された前記n個の第2の整数を符号化し、前記n個の第2の整数を符号化した結果を、前記単位ビット数に、前記分割ビット数とkとの積を乗じた数のビット数のバイナリデータで表される第2符号として出力する第2の符号化部と
    を備えるデータ圧縮装置。
  2. 前記データ圧縮装置は、
    前記第1の符号化部により出力された前記第1符号を記憶すると共に、前記第1符号の後ろに連続して前記第2の符号化部により出力された前記第2符号を記憶する記憶部を備える請求項に記載のデータ圧縮装置。
  3. 前記決定部は、
    Kを自然数とし、kの上限値としてKを決定すると共に、cを自然数とし、パラメータcを決定し、k≦Kの範囲においてn個の第1の整数を符号化した際に、符号化に際して冗長となる余剰ビットのビット数がc以下となるkを選択する請求項またはに記載のデータ圧縮装置。
  4. 請求項1から3のいずれか1項に記載のデータ圧縮装置により符号化された符号化済データであって、前記第1符号と前記第2符号とを含む符号化済データから前記第1符号を取得し、取得した前記第1符号を前記n個の第1の整数に復号する第1の復号部と、
    前記符号化済データから前記第2符号を取得し、取得した前記第2符号を前記n個の第2の整数に復号する第2の復号部と、
    前記n個の第1の整数と前記n個の第2の整数とに基づいて、前記n個の整数を生成する整数結合部と
    を備えるデータ伸張装置。
  5. 前記第2の復号部は、
    前記第2符号から、前記単位ビット数のバイナリデータである第2単位データを、前記分割ビット数とkとの積の数だけ取得し、取得した前記分割ビット数とkとの積の数の前記第2単位データを前記n個の第2の整数に復号する請求項に記載のデータ伸張装置。
  6. 前記第1の復号部は、
    前記第1符号から、前記単位ビット数のバイナリデータである第1単位データを順に取得し、取得した前記第1単位データを復号し、復号より得られた第1の整数の個数をカウントし、前記個数がnと等しくなるまで、前記第1符号から前記第1単位データを取得し、取得した前記第1単位データを復号する処理を繰り返す請求項またはに記載のデータ伸張装置。
  7. 前記データ伸張装置は、
    Kを自然数とし、kの上限値としてKを決定すると共に、cを自然数とし、パラメータcを決定する終了判定部を備え、
    前記第1の復号部は、
    前記第1符号から、前記単位ビット数のバイナリデータである第1単位データを順に取得し、取得した前記第1単位データを復号し、k<Kの範囲において前記第1単位データを復号した際に、復号に際して冗長となる余剰ビットのビット数がc以下となり、かつ、復号より得られた第1の整数の個数が前記単位ビット数とkとの積と等しくなるk、あるいは、k=Kを選択し、前記個数が前記単位ビット数とkとの積と等しくなるまで、前記第1符号から前記第1単位データを取得し、取得した前記第1単位データを復号する処理を繰り返す請求項またはに記載のデータ伸張装置。
  8. 決定部が、kを自然数とし、処理単位のビット数である単位ビット数のk倍の数をnとして決定し、
    データ取得部が、前記単位ビット数のバイナリデータで表された整数を複数含む符号化データから、nを自然数とし、n個の整数を取得し、
    整数分割部が、前記データ取得部により取得された前記n個の整数の各整数を分割する整数分割部であって、前記n個の整数の各整数を、分割ビット数の下位ビットで表される第2の整数と、前記n個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第1の整数とに分割し、n個の第1の整数とn個の第2の整数とを出力し、
    第1の符号化部が、前記整数分割部から出力された前記n個の第1の整数を符号化し、前記n個の第1の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第1符号として出力し、
    第2の符号化部が、前記整数分割部から出力された前記n個の第2の整数を符号化し、前記n個の第2の整数を符号化した結果を、前記単位ビット数に、前記分割ビット数とkとの積を乗じた数のビット数のバイナリデータで表される第2符号として出力するデータ圧縮方法。
  9. 第1の復号部が、請求項に記載のデータ圧縮方法により符号化された符号化済データであって、前記第1符号と前記第2符号とを含む符号化済データに含まれる前記第1符号を取得し、取得した前記第1符号を前記n個の第1の整数に復号し、
    第2の復号部が、前記符号化済データから前記第2符号を取得し、取得した前記第2符号を前記n個の第2の整数に復号し、
    整数結合部が、前記n個の第1の整数と前記n個の第2の整数とに基づいて、前記n個の整数を生成するデータ伸張方法。
  10. kを自然数とし、処理単位のビット数である単位ビット数のk倍の数をnとして決定する決定処理と、
    前記単位ビット数のバイナリデータで表された整数を複数含む符号化データから、nを自然数とし、n個の整数を取得するデータ取得処理と、
    前記データ取得処理により取得された前記n個の整数の各整数を分割する整数分割処理であって、前記n個の整数の各整数を、分割ビット数の下位ビットで表される第2の整数と、前記n個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第1の整数とに分割し、n個の第1の整数とn個の第2の整数とを出力する整数分割処理と、
    前記整数分割処理により出力された前記n個の第1の整数を符号化する第1の符号化処理であって、前記n個の第1の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第1符号として出力する第1の符号化処理と、
    前記整数分割処理により出力された前記n個の第2の整数を符号化する第2の符号化処理であって、前記n個の第2の整数を符号化した結果を、前記単位ビット数に、前記分割ビット数とkとの積を乗じた数のビット数のバイナリデータで表される第2符号として出力する第2の符号化処理と
    をコンピュータに実行させるプログラム。
  11. 請求項10に記載のプログラムにより符号化された符号化済データであって、前記第1符号と前記第2符号とを含む符号化済データに含まれる前記第1符号を取得し、取得した前記第1符号を前記n個の第1の整数に復号する第1の復号処理と、
    前記符号化済データから前記第2符号を取得し、取得した前記第2符号を前記n個の第2の整数に復号する第2の復号処理と、
    前記n個の第1の整数と前記n個の第2の整数とに基づいて、前記n個の整数を生成する整数結合処理と
    をコンピュータに実行させるプログラム。
JP2017500150A 2015-02-16 2015-02-16 データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム Active JP6227186B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/054125 WO2016132430A1 (ja) 2015-02-16 2015-02-16 データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2016132430A1 JPWO2016132430A1 (ja) 2017-06-01
JP6227186B2 true JP6227186B2 (ja) 2017-11-08

Family

ID=56688808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017500150A Active JP6227186B2 (ja) 2015-02-16 2015-02-16 データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム

Country Status (4)

Country Link
US (1) US9979415B2 (ja)
JP (1) JP6227186B2 (ja)
CN (1) CN107251438B (ja)
WO (1) WO2016132430A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11362674B2 (en) 2016-07-06 2022-06-14 Kinematicsoup Technologies Inc. Method of compression for fixed-length data
CN107919943B (zh) 2016-10-11 2020-08-04 阿里巴巴集团控股有限公司 二进制数据的编码、解码方法和装置
CN107682016B (zh) * 2017-09-26 2021-09-17 深信服科技股份有限公司 一种数据压缩方法、数据解压方法及相关***
CN113868206A (zh) * 2021-10-08 2021-12-31 八十一赞科技发展(重庆)有限公司 一种数据压缩方法、解压缩方法、装置及存储介质
CN116861271B (zh) * 2023-09-05 2023-12-08 智联信通科技股份有限公司 基于大数据的数据分析处理方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3176918D1 (en) * 1981-08-07 1988-12-01 Ibm Data recording or transmission system using run length limited coding
US5179711A (en) * 1989-12-26 1993-01-12 International Business Machines Corporation Minimum identical consecutive run length data units compression method by searching consecutive data pair comparison results stored in a string
JP3273119B2 (ja) * 1995-09-29 2002-04-08 京セラ株式会社 データ圧縮・伸長装置
US6570511B1 (en) * 2001-10-15 2003-05-27 Unisys Corporation Data compression method and apparatus implemented with limited length character tables and compact string code utilization
JP2004070120A (ja) 2002-08-08 2004-03-04 Dainippon Printing Co Ltd 時系列信号の符号化装置、復号装置および記録媒体
JP4357852B2 (ja) 2003-02-24 2009-11-04 大日本印刷株式会社 時系列信号の圧縮解析装置および変換装置
JP2005151327A (ja) 2003-11-18 2005-06-09 Nec Micro Systems Ltd Pcmデータ圧縮・伸長方法及び装置
US7430328B2 (en) 2004-12-01 2008-09-30 Honeywell International Inc. Rice lossless compression module
US7183950B2 (en) 2005-02-07 2007-02-27 Fuji Photo Film Co., Ltd. Data compression apparatus, and data compression program storage medium
JP4131969B2 (ja) 2005-02-07 2008-08-13 富士フイルム株式会社 データ圧縮装置およびデータ圧縮プログラム
JP2007088962A (ja) 2005-09-26 2007-04-05 Nippon Telegr & Teleph Corp <Ntt> 順序データ圧縮方法、順序データ解凍方法、順序データ処理プログラム、順序データ圧縮装置、順序データ解凍装置、および、順序データ処理システム
JP4888335B2 (ja) 2007-10-25 2012-02-29 ソニー株式会社 符号化方法及び装置、並びにプログラム
JP2009260747A (ja) 2008-04-17 2009-11-05 Canon Inc 画像符号化装置及びその制御方法
JP2011109385A (ja) 2009-11-17 2011-06-02 Mitsubishi Electric Corp 画像符号化装置
JP2011223244A (ja) 2010-04-08 2011-11-04 Yokogawa Electric Corp データ圧縮装置およびデータ復元装置
JP5458056B2 (ja) 2010-05-28 2014-04-02 株式会社日立製作所 時系列データの圧縮方法および圧縮装置
JP5570409B2 (ja) 2010-12-22 2014-08-13 三菱電機株式会社 データ圧縮装置及びデータ圧縮方法及びデータ圧縮プログラム
JP5639011B2 (ja) 2011-06-28 2014-12-10 日本電信電話株式会社 データ蓄積装置、データ蓄積方法、及びプログラム
US20140112589A1 (en) * 2012-10-22 2014-04-24 Gurulogic Microsystems Oy Encoder, decoder and method
CN103840839B (zh) * 2014-03-21 2017-06-27 中国科学院声学研究所 一种井下声波成像测井数据的实时压缩方法

Also Published As

Publication number Publication date
US20170338834A1 (en) 2017-11-23
CN107251438A (zh) 2017-10-13
WO2016132430A1 (ja) 2016-08-25
CN107251438B (zh) 2020-10-30
JPWO2016132430A1 (ja) 2017-06-01
US9979415B2 (en) 2018-05-22

Similar Documents

Publication Publication Date Title
JP6227186B2 (ja) データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム
Tian et al. Cusz: An efficient gpu-based error-bounded lossy compression framework for scientific data
KR100894002B1 (ko) 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법
JP7031828B2 (ja) 意味論的値のデータ圧縮及び解凍のための方法、装置、及びシステム
US9041567B2 (en) Using variable encodings to compress an input data stream to a compressed output data stream
US8937563B2 (en) Using variable length encoding to compress an input data stream to a compressed output data stream
JP5619326B2 (ja) 符号化装置、復号装置、符号化方法、符号化プログラム、復号方法および復号プログラム
JP4037875B2 (ja) コンピュータグラフィックスデータ符号化装置、復号化装置、符号化方法、および、復号化方法
KR101842420B1 (ko) 정보 처리 장치 및 데이터 관리 방법
US11309909B2 (en) Compression device, decompression device, and method
US8638243B2 (en) Data compression device, data compression method, and medium
Selva et al. SRComp: short read sequence compression using burstsort and Elias omega coding
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
US10931303B1 (en) Data processing system
US8711013B2 (en) Coding circuitry for difference-based data transformation
Lu et al. ZFP-X: Efficient Embedded Coding for Accelerating Lossy Floating Point Compression
Chen et al. Lossless Geometry Compression for Steady-State and Time-Varying Irregular Grids.
US9558109B2 (en) Method and apparatus for flash memory arithmetic encoding and decoding
JP2023127253A (ja) 符号表生成装置、メモリシステム、および符号表生成方法
Mukka Customized Data Compression: Automatically Synthesizing Effective Data Compression and Decompression Algorithms
JP2014027573A (ja) Ykm形式圧縮プログラムを記録した記録媒体
JP2018037891A (ja) 符号化装置、符号化方法、復号装置および復号方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170224

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: 20170912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171010

R150 Certificate of patent or registration of utility model

Ref document number: 6227186

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250