(57)【要約】  符号化データ（１１）からｎ個の整数を取得するデータ取得部（１０１）と、ｎ個の整数の各整数を分割ビット数ｂの下位ビットで表される第２の整数（１０２２）と下位ビットを除いた上位ビットにより表される第１の整数（１０２１）とに分割し、ｎ個の第１の整数（１０２１）とｎ個の第２の整数（１０２２）とを出力する整数分割部（１０２）と、ｎ個の第１の整数（１０２１）を符号化し、単位ビット数Ｌの自然数倍のビット数のバイナリデータで表される第１符号（１０４１）として出力する第１の符号化部（１０４）と、ｎ個の第２の整数（１０２２）を符号化し、第２符号（１０６１）として出力する第２の符号化部（１０６）とを備える。
2016132430.tif 000002
【特許請求の範囲】
【請求項１】
処理単位のビット数である単位ビット数のバイナリデータで表された整数を複数含む符号化データから、ｎを自然数とし、ｎ個の整数を取得するデータ取得部と、
前記データ取得部により取得された前記ｎ個の整数の各整数を分割する整数分割部であって、前記ｎ個の整数の各整数を、分割ビット数の下位ビットで表される第２の整数と、前記ｎ個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第１の整数とに分割し、ｎ個の第１の整数とｎ個の第２の整数とを出力する整数分割部と、
前記整数分割部から出力された前記ｎ個の第１の整数を符号化する第１の符号化部であって、前記ｎ個の第１の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第１符号として出力する第１の符号化部と、
前記整数分割部から出力された前記ｎ個の第２の整数を符号化し、前記ｎ個の第２の整数を符号化した結果を第２符号として出力する第２の符号化部と
を備えるデータ圧縮装置。
【請求項２】
前記第２の符号化部は、
前記分割ビット数にｎを乗じた数のビット数のバイナリデータで表される前記第２符号を出力する請求項１に記載のデータ圧縮装置。
【請求項３】
前記データ圧縮装置は、
ｋを自然数とし、前記単位ビット数のｋ倍の数をｎとして決定する決定部を備え、
前記第２の符号化部は、
前記単位ビット数に、前記分割ビット数とｋとの積を乗じた数のビット数のバイナリデータで表される前記第２符号を出力する請求項２に記載のデータ圧縮装置。
【請求項４】
前記データ圧縮装置は、
前記第１の符号化部により出力された前記第１符号を記憶すると共に、前記第１符号の後ろに連続して前記第２の符号化部により出力された前記第２符号を記憶する記憶部を備える請求項３に記載のデータ圧縮装置。
【請求項５】
前記決定部は、
Ｋを自然数とし、ｋの上限値としてＫを決定すると共に、ｃを自然数とし、パラメータｃを決定し、ｋ≦Ｋの範囲においてｎ個の第１の整数を符号化した際に、符号化に際して冗長となる余剰ビットのビット数がｃ以下となるｋを選択する請求項３または４に記載のデータ圧縮装置。
【請求項６】
請求項３または４に記載のデータ圧縮装置により符号化された符号化済データであって、前記第１符号と前記第２符号とを含む符号化済データから前記第１符号を取得し、取得した前記第１符号を前記ｎ個の第１の整数に復号する第１の復号部と、
前記符号化済データから前記第２符号を取得し、取得した前記第２符号を前記ｎ個の第２の整数に復号する第２の復号部と、
前記ｎ個の第１の整数と前記ｎ個の第２の整数とに基づいて、前記ｎ個の整数を生成する整数結合部と
を備えるデータ伸張装置。
【請求項７】
前記第２の復号部は、
前記第２符号から、前記単位ビット数のバイナリデータである第２単位データを、前記分割ビット数とｋとの積の数だけ取得し、取得した前記分割ビット数とｋとの積の数の前記第２単位データを前記ｎ個の第２の整数に復号する請求項６に記載のデータ伸張装置。
【請求項８】
前記第１の復号部は、
前記第１符号から、前記単位ビット数のバイナリデータである第１単位データを順に取得し、取得した前記第１単位データを復号し、復号より得られた第１の整数の個数をカウントし、前記個数がｎと等しくなるまで、前記第１符号から前記第１単位データを取得し、取得した前記第１単位データを復号する処理を繰り返す請求項６または７に記載のデータ伸張装置。
【請求項９】
前記データ伸張装置は、
Ｋを自然数とし、ｋの上限値としてＫを決定すると共に、ｃを自然数とし、パラメータｃを決定する終了判定部を備え、
前記第１の復号部は、
前記第１符号から、前記単位ビット数のバイナリデータである第１単位データを順に取得し、取得した前記第１単位データを復号し、ｋ＜Ｋの範囲において前記第１単位データを復号した際に、復号に際して冗長となる余剰ビットのビット数がｃ以下となり、かつ、復号より得られた第１の整数の個数が前記単位ビット数とｋとの積と等しくなるｋ、あるいは、ｋ＝Ｋを選択し、前記個数が前記単位ビット数とｋとの積と等しくなるまで、前記第１符号から前記第１単位データを取得し、取得した前記第１単位データを復号する処理を繰り返す請求項６または７に記載のデータ伸張装置。
【請求項１０】
データ取得部が、処理単位のビット数である単位ビット数のバイナリデータで表された整数を複数含む符号化データから、ｎを自然数とし、ｎ個の整数を取得し、
整数分割部が、前記データ取得部により取得された前記ｎ個の整数の各整数を分割する整数分割部であって、前記ｎ個の整数の各整数を、分割ビット数の下位ビットで表される第２の整数と、前記ｎ個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第１の整数とに分割し、ｎ個の第１の整数とｎ個の第２の整数とを出力し、
第１の符号化部が、前記整数分割部から出力された前記ｎ個の第１の整数を符号化する第１の符号化部であって、前記ｎ個の第１の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第１符号として出力し、
第２の符号化部が、前記整数分割部から出力された前記ｎ個の第２の整数を符号化し、前記ｎ個の第２の整数を符号化した結果を第２符号として出力するデータ圧縮方法。
【請求項１１】
第１の復号部が、請求項１０に記載のデータ圧縮方法により符号化された符号化済データであって、前記第１符号と前記第２符号とを含む符号化済データに含まれる前記第１符号を取得し、取得した前記第１符号を前記ｎ個の第１の整数に復号し、
第２の復号部が、前記符号化済データから前記第２符号を取得し、取得した前記第２符号を前記ｎ個の第２の整数に復号し、
整数結合部が、前記ｎ個の第１の整数と前記ｎ個の第２の整数とに基づいて、前記ｎ個の整数を生成するデータ伸張方法。
【請求項１２】
処理単位のビット数である単位ビット数のバイナリデータで表された整数を複数含む符号化データから、ｎを自然数とし、ｎ個の整数を取得するデータ取得処理と、
前記データ取得処理により取得された前記ｎ個の整数の各整数を分割する整数分割処理であって、前記ｎ個の整数の各整数を、分割ビット数の下位ビットで表される第２の整数と、前記ｎ個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第１の整数とに分割し、ｎ個の第１の整数とｎ個の第２の整数とを出力する整数分割処理と、
前記整数分割処理により出力された前記ｎ個の第１の整数を符号化する第１の符号化処理であって、前記ｎ個の第１の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第１符号として出力する第１の符号化処理と、
前記整数分割処理により出力された前記ｎ個の第２の整数を符号化し、前記ｎ個の第２の整数を符号化した結果を第２符号として出力する第２の符号化処理と
をコンピュータに実行させるプログラム。
【請求項１３】
請求項１２に記載のプログラムにより符号化された符号化済データであって、前記第１符号と前記第２符号とを含む符号化済データに含まれる前記第１符号を取得し、取得した前記第１符号を前記ｎ個の第１の整数に復号する第１の復号処理と、
前記符号化済データから前記第２符号を取得し、取得した前記第２符号を前記ｎ個の第２の整数に復号する第２の復号処理と、
前記ｎ個の第１の整数と前記ｎ個の第２の整数とに基づいて、前記ｎ個の整数を生成する整数結合処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラムに関する。特に、整数を分割して符号化する方式を用いるデータ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラムに関する。
【背景技術】
【０００２】
固定長の整数列を可逆圧縮するための符号化方法として、まず符号化対象データに対する予測値を求め、次に予測値と符号化対象データとの残差を求め、そして残差からなるデータ系列を適当な方式で符号化する方法が用いられている。すなわち、この方法は、符号化対象データに対する予測値を求める予測値生成、予測値と符号化対象データとの残差を求める残差生成、残差からなるデータ系列を適当な方式で符号化する残差符号化から構成される。
この方法では、残差を求める段階を挟むことにより、実データ系列と比較して、小さい値すなわち０に近い値から成るデータ系列を得られる。よって、この方法によれば、符号化対象データに対する残差符号化が効きやすくなり、圧縮効果が高まることが多い。【０００３】
予測値生成及び残差生成における例として、前回値との差分を残差として取る方法がある。具体的には、予測値として前回値を選択し、残差生成方法として単純な整数値減算値を残差として採用する。より一般的には、予測値として線形予測等の方法を選択する。【０００４】
残差符号化については、ガンマ符号化やデルタ符号化等、様々な方法が提案されている。これらの残差符号化の方法は、圧縮率向上のための方法と、圧縮速度、伸張速度等の処理速度の向上のための方法との２種類の方法に大別される。【０００５】
圧縮率向上のための方式としては、ゴロム・ライス符号化に代表されるように、整数値を上位ビットから成る第１の整数と、下位ビットから成る第２の整数とに、定められた位置で分割する方式がある。以下では、整数を分割する符号化方式をまとめて上下ビット分割方式と呼称する。
上下ビット分割方式では、上位ビットから成る第１の整数を、ガンマ符号やデルタ符号のような適当な可変長符号により符号化し出力する。そして、下位ビットから成る第２の整数については、符号化せずに、固定長のバイナリデータとして出力する。ゴロム・ライス符号では、第１の整数の符号化方法としてアルファ符号を採用している。【０００６】
特許文献１には、上位ビットから成る第１の整数の符号化方法と上位ビットと下位ビットの分割位置とを動的に決定することで、圧縮率を高める方法について開示されている。また、特許文献２には、上下ビット分割方式による画像の圧縮方法が開示されている。
上下ビット分割方式は、圧縮対象となる整数列にノイズが混在するなどして、下位ビットの変動が大きいときに有効な方式である。ノイズが混在した下位ビットは、圧縮が困難であるため、圧縮せずに固定長バイナリデータとして出力し、比較的圧縮が容易な上位ビットのみを圧縮する、というのが上下ビット分割方式の基本的な考え方である。
図８に示すように、整数列を上位ビットと下位ビットとにビット分割した場合、上位ビットは圧縮が容易であり、下位ビットは圧縮が困難となる。【０００７】
処理速度向上のための方式は、圧縮の際の符号を、バイト単位あるいは更に大きなワード単位で行う方式が複数存在する。先に述べたガンマ符号、デルタ符号、ゴロム・ライス符号等は、符号をビット単位で生成し出力するため、コンピュータ処理との親和性が低く、処理速度の低下を招くという課題がある。このような課題を解決するために提案された方式が、バイト単位やワード単位に符号を生成し、出力する方式である。ここで、ワードとはある固定長の単位であり、例えば、２バイトや４バイトといった単位を指す。以下、バイト単位、ワード単位に符号を生成する圧縮方式を、それぞれバイト単位処理方式、ワード単位処理方式と呼ぶ。【０００８】
バイト単位処理方式の例としては、Ｖａｒｉａｂｌｅ−Ｂｙｔｅ（非特許文献１）などの符号化方式が良く知られる。ワード単位処理方式としては、Ｓｉｍｐｌｅ９（非特許文献２）、ＰＦｏｒＤｅｌｔａ（非特許文献３）などが知られる。ガンマ符号、デルタ符号、ゴロム・ライス符号等では、整数は１つずつ符号化されるが、ワード単位処理方式においては、複数の整数が一括して符号化され、その結果がワード単位に生成される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許第５５７０４０９号
【特許文献２】特開２０１１−２２３２４４
【非特許文献】
【００１０】
【非特許文献１】Ｆ．Ｓｃｈｏｌｅｒ，Ｈ．Ｗｉｌｌｉａｍｓ，Ｊ．Ｙｉａｎｎｉｓ，ａｎｄ  Ｊ．Ｚｏｂｅｌ．Ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  Ｉｎｖｅｒｔｅｄ  Ｉｎｄｅｘｅｓ  Ｆｏｒ  Ｆａｓｔ  Ｑｕｅｒｙ  Ｅｖａｌｕａｔｉｏｎ．Ｉｎ  Ｐｒｏｃ．ｏｆ  ｔｈｅ  ２５ｔｈ  Ａｎｎｕａｌ  ＳＩＧＩＲ  Ｃｏｎｆ．ｏｎ  Ｒｅｓｅａｒｃｈ  ａｎｄ  Ｄｅｖｅｌｏｐｍｅｎｔ  ｉｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ，Ａｕｇｕｓｔ  ２００２．
【非特許文献２】Ｖｏ  Ｎｇｏｃ  Ａｎｈ，Ａｌｉｓｔａｉｒ  Ｍｏｆｆａｔ．Ｉｎｖｅｒｔｅｄ  Ｉｎｄｅｘ  Ｃｏｍｐｒｅｓｓｉｏｎ  Ｕｓｉｎｇ  Ｗｏｒｄ−Ａｌｉｇｎｅｄ  Ｂｉｎａｒｙ  Ｃｏｄｅｓ，Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ，８，１５１−１６６，２００５．
【非特許文献３】Ｍ．Ｚｕｋｏｗｓｋｉ，Ｓ．Ｈｅｍａｎ，Ｎ．Ｎｅｓ，ａｎｄ  Ｐ．Ｂｏｎｃｚ．Ｓｕｐｅｒ−Ｓｃａｌａｒ  ＲＡＭ−ＣＰＵ  Ｃａｃｈｅ  Ｃｏｍｐｒｅｓｓｉｏｎ．Ｉｎ  Ｐｒｏｃ．ｏｆ  ｔｈｅ  Ｉｎｔ．Ｃｏｎｆ．ｏｎ  Ｄａｔａ  Ｅｎｇｉｎｅｅｒｉｎｇ，２００６．
【発明の概要】
【発明が解決しようとする課題】
【００１１】
圧縮率と処理速度とは、トレードオフの関係にある。上下ビット分割方式では、圧縮率は向上するが、処理速度は低下する。一方、ワード単位処理方式では、処理速度は向上するが、圧縮率は低下する。【００１２】
本発明は、上下ビット分割方式とワード単位処理方式とを両立させることにより、上下ビット分割方式による高い圧縮率を維持しつつ、処理速度を向上させることができる整数列の可逆圧縮方式を実現することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るデータ圧縮装置は、
処理単位のビット数である単位ビット数のバイナリデータで表された整数を複数含む符号化データから、ｎを自然数とし、ｎ個の整数を取得するデータ取得部と、
前記データ取得部により取得された前記ｎ個の整数の各整数を分割する整数分割部であって、前記ｎ個の整数の各整数を、分割ビット数の下位ビットで表される第２の整数と、前記ｎ個の整数の各整数から前記下位ビットを除いた上位ビットにより表される第１の整数とに分割し、ｎ個の第１の整数とｎ個の第２の整数とを出力する整数分割部と、
前記整数分割部から出力された前記ｎ個の第１の整数を符号化する第１の符号化部であって、前記ｎ個の第１の整数を符号化した結果を前記単位ビット数の自然数倍のビット数のバイナリデータで表される第１符号として出力する第１の符号化部と、
前記整数分割部から出力された前記ｎ個の第２の整数を符号化し、前記ｎ個の第２の整数を符号化した結果を第２符号として出力する第２の符号化部とを備える。
【発明の効果】
【００１４】
本発明に係るデータ圧縮装置は、整数分割部から出力されたｎ個の第１の整数を符号化し、ｎ個の第１の整数を符号化した結果を単位ビット数の自然数倍のビット数のバイナリデータで表される第１符号として出力する第１の符号化部を備える。また、データ圧縮装置は、整数分割部から出力されたｎ個の第２の整数を符号化し、ｎ個の第２の整数を符号化した結果を第２符号として出力する第２の符号化部とを備える。よって、本発明に係るデータ圧縮装置によれば、上下ビット分割方式とワード単位処理方式とを両立させることにより、圧縮率を高く維持しつつ、処理速度を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に係るデータ圧縮装置のブロック構成図。
【図２】実施の形態１に係るデータ伸張装置のブロック構成図。
【図３】実施の形態１に係るデータ圧縮装置、データ伸張装置のハードウェア構成図。
【図４】実施の形態１に係るデータ圧縮装置のデータ圧縮方法、データ圧縮処理のフロー図。
【図５】実施の形態１に係るデータ伸張装置のデータ伸張方法、データ伸張処理のフロー図。
【図６】実施の形態２に係るデータ圧縮装置のデータ圧縮方法、データ圧縮処理のフロー図。
【図７】実施の形態２に係るデータ伸張装置のデータ伸張方法、データ伸張処理のフロー図。
【図８】整数列のビット分割についての説明図。
【発明を実施するための形態】
【００１６】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係るデータ圧縮装置１００のブロック構成について説明する。
以下の説明では、処理単位のビット数である単位ビット数をＬビットとする。単位ビット数をワードあるいはバイトともいう。単位ビット数は、ワードの長さであるワード単位とも称される。
また、整数を表すバイナリデータのビット長は、単位ビット数と同じく、Ｌビットとする。Ｌは、１６、３２、６４等の値であるが、これらの値に限定されるものではない。本実施の形態は、任意のビット長の整数に対して適用することができる。
【００１７】
データ圧縮装置１００は、符号化の対象である符号化データ１１を取得して、取得した符号化データ１１を符号化し、符号化した結果を符号化済データ１２に記憶する。符号化データ１１は、順序付けられた整数列である。また、符号化データ１１に含まれる整数の個数は任意である。符号化データ１１は、入力データとも称される。
【００１８】
データ圧縮装置１００は、データ取得部１０１、整数分割部１０２、符号化調整部１０３、第１の符号化部１０４、第１の結果出力部１０５、第２の符号化部１０６、第２の結果出力部１０７を備える。なお、データ圧縮装置１００には、記憶部１２０１が接続されている。記憶部１２０１には、符号化済データ１２が記憶される。
【００１９】
データ取得部１０１は、符号化データ１１に含まれる整数を読み込む。データ取得部１０１は、処理単位のビット数である単位ビット数のバイナリデータで表された整数を複数含む符号化データ１１から、ｎを自然数とし、ｎ個の整数を取得する。データ取得部１０１は、入力部とも称される。
【００２０】
整数分割部１０２は、データ取得部１０１により取得された整数を、ビット分割位置パラメータｂに基づいて、上位（Ｌ−ｂ）ビットから成る第１の整数１０２１と、下位ｂビットから成る第２の整数１０２２とに分割する。すなわち、整数分割部１０２は、データ取得部１０１により取得されたｎ個の整数の各整数を分割する。整数分割部１０２は、ｎ個の整数の各整数を、分割ビット数ｂの下位ビットで表される第２の整数１０２２と、ｎ個の整数の各整数から下位ビットを除いた上位ビットにより表される第１の整数１０２１とに分割する。そして、整数分割部１０２は、ｎ個の第１の整数とｎ個の第２の整数とを出力する。
【００２１】
符号化調整部１０３は、一度に符号化する整数の個数ｎを決定する。符号化調整部１０３は、決定部１０３１、符号化単位調整部とも称される。決定部１０３１、すなわち符号化調整部１０３は、ｋを自然数とし、単位ビット数Ｌのｋ倍の数をｎとして決定する。
【００２２】
第１の符号化部１０４は、整数分割部１０２から出力されたｎ個の第１の整数１０２１を符号化する。第１の符号化部１０４は、ｎ個の第１の整数１０２１を符号化した結果を単位ビット数Ｌの自然数倍のビット数のバイナリデータで表される第１符号１０４１として出力する。
第１の符号化部１０４は、符号化調整部１０３において決定されたｎ個の第１の整数１０２１を符号化する。第１の符号化部１０４は、符号化に際し、Ｓｉｍｐｌｅ９のような、符号結果をワード単位に生成するワード単位処理方式を利用する。第１の符号化部１０４は、ｎ個の第１の整数１０２１を符号化した第１符号１０４１を出力する。ここで、第１の符号化部１０４により出力される第１符号１０４１のデータサイズは、第１の符号化部１０４の性質により、ワード単位であるＬビットの倍数となる。第１の符号化部１０４は、第１の整数符号化部とも称される。
【００２３】
第１の結果出力部１０５は、第１の符号化部１０４により生成された第１符号１０４１を、符号化済データ１２に追記する。第１の結果出力部１０５は、第１の符号化結果出力部とも称される。
【００２４】
第２の符号化部１０６は、符号化調整部１０３において決定されたｎ個の第２の整数１０２２を符号化し、第２符号１０６１として出力する。すなわち、第２の符号化部１０６は、整数分割部１０２から出力されたｎ個の第２の整数１０２２を符号化し、ｎ個の第２の整数１０２２を符号化した結果を第２符号１０６１として出力する。
第２符号１０６１は、分割ビット数ｂにｎを乗じた数のビット数のバイナリデータで表される。すなわち、第２の符号化部１０６は、ｎ個のｂビット整数をｎ×ｂビットの固定長バイナリデータに生成する。第２の符号化部１０６は、第２の整数符号化部とも称される。
【００２５】
このとき、ｎの値によっては、第２の符号化部１０６による符号結果がワード単位に生成されない。すなわち、第２符号１０６１のビット数（ｎ×ｂ）がＬの倍数とならない可能性がある。しかし、本実施の形態によれば、符号化調整部１０３が適切にｎを選択することにより、第２符号１０６１のビット数をワード単位、すなわちＬの自然数倍に生成することができる。符号化調整部１０３がｎ＝Ｌ×ｋとなるようにｎを決定するので、第２の符号化部１０６は、単位ビット数Ｌに、分割ビット数ｂとｋとの積を乗じた数のビット数のバイナリデータで表される第２符号１０６１を出力することができる。
【００２６】
第２の結果出力部１０７は、第２の符号化部１０６により生成された第２符号１０６１を、符号化済データ１２に追記する。本実施の形態によれば、第２の符号化部１０６の性質により、出力される第２符号１０６１のデータサイズはワード単位Ｌビットの倍数となる。第２の結果出力部１０７は、第２の符号化結果出力部とも称される。
【００２７】
記憶部１２０１は、第１の符号化部１０４により出力された第１符号１０４１を記憶すると共に、第１符号１０４１の後ろに連続して第２の符号化部１０６により出力された第２符号１０６１を記憶する。以上のように、記憶部１２０１に記憶された符号化済データ１２には、第１符号１０４１と、第２符号１０６１とが連続して交互に記述される。
【００２８】
次に、符号化調整部１０３の詳細について説明する。
符号化調整部１０３では、一度に符号化する整数の個数ｎとして、ワード単位Ｌの倍数（ｋ×Ｌ）を選択する。ここで、ｋは予めデータ圧縮装置１００の利用者により決定されるパラメータである。
符号化調整部１０３が、ｎ＝ｋ×Ｌのようにｎを設定することにより、第２の符号化部１０６で生成される第２符号１０６１のサイズが（ｋ×Ｌ×ｂ）ビット、すなわちワード単位Ｌビットの倍数となる。したがって、第２の結果出力部１０７は、余分なビットスペースを消費することなく、ワード単位Ｌビットの倍数サイズの第２符号１０６１を出力することができる。
【００２９】
図２を用いて、本実施の形態に係るデータ伸張装置２００のブロック構成について説明する。
データ伸張装置２００は、データ圧縮装置１００により符号化された符号化済データ１２であって、第１符号１０４１と第２符号１０６１とを含む符号化済データ１２を伸張する装置である。データ伸張装置２００は、符号化済データ１２を入力とし、データ圧縮装置１００によって圧縮される前の元データ２２である符号化データ１１を出力する。
【００３０】
データ伸張装置２００は、符号化済データ取得部２０１、第１の復号部２０２、第２の復号部２０４、整数結合部２０５、出力部２０６を備える。第１の復号部２０２は、第１の復号処理部２０２１と、終了判定部２０３とを備える。
【００３１】
符号化済データ取得部２０１は、符号化済データ１２から、復号する対象のデータを読み込む。上述したように、符号化済データ１２には、交互に記述された第１符号１０４１と第２符号１０６１とが含まれる。よって、符号化済データ取得部２０１は、第１符号１０４１と第２符号１０６１とを交互に読み込むことになる。符号化済データ取得部２０１は、入力部とも称される。
【００３２】
第１の復号部２０２は、符号化済データ１２から読み込んだ第１符号１０４１を複数の第１の整数１０２１へと復号する。すなわち、第１の復号部２０２は、第１符号１０４１を取得し、取得した第１符号１０４１をｎ個の第１の整数１０２１に復号する。データ圧縮装置１００の性質から、第１の復号部２０２はワード単位Ｌビットでの復号処理が可能である。第１の復号部２０２は、第１の整数復号部とも称される。
【００３３】
第１の復号処理部２０２１は、符号化済データ取得部２０１から取得した第１符号１０４１の１ワード分について、第１の整数の復号処理を実行する。
終了判定部２０３は、データ圧縮装置１００における符号化調整部１０３に対応する。終了判定部２０３は、符号化調整部１０３により設定された一度に圧縮する整数の個数ｎ分だけ、ｎ個の第１の整数の復号が終了したか否かを判定する。終了判定部２０３は、ｎ個の第１の整数の復号が終了していない場合は、引き続き、第１の復号処理部２０２１による第１の整数の復号処理を行う。また、終了判定部２０３は、ｎ個の第１の整数の復号が終了している場合は、第２の整数の復号処理へ移行する。終了判定部２０３は、第１の整数復号処理終了判定部とも称される。
【００３４】
第２の復号部２０４は、符号化済データ１２から読み込んだ第２符号１０６１を複数の第２の整数へと復号する。すなわち、第２の復号部２０４は、符号化済データ１２から第２符号１０６１を取得し、取得した第２符号１０６１をｎ個の第２の整数１０２２に復号する。データ圧縮装置１００の性質から、第２の復号部２０４はワード単位での復号処理が可能である。第２の復号部２０４は、第２の整数復号部とも称される。
【００３５】
整数結合部２０５は、復号が済んだ第１の整数と第２の整数を再結合し、元の整数データへと復号する。すなわち、整数結合部２０５は、ｎ個の第１の整数１０２１とｎ個の第２の整数１０２２とに基づいて、ｎ個の整数を生成する。
出力部２０６は、整数結合部２０５で得られた復号結果を元データ２２として出力する。元データ２２は、符号化される前の符号化データ１１である。
【００３６】
図３を用いて、本実施の形態に係るデータ圧縮装置１００、データ伸張装置２００のハードウェア構成の一例について説明する。
【００３７】
データ圧縮装置１００、データ伸張装置２００はコンピュータである。
データ圧縮装置１００、データ伸張装置２００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース９０５は、入力装置９０７に接続されている。
ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００３８】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００３９】
補助記憶装置９０２には、コンピュータがデータ圧縮装置１００の場合、図１に示すデータ取得部１０１、整数分割部１０２、符号化調整部１０３、第１の符号化部１０４、第１の結果出力部１０５、第２の符号化部１０６、第２の結果出力部１０７の機能を実現するプログラムが記憶されている。以下、データ取得部１０１、整数分割部１０２、符号化調整部１０３、第１の符号化部１０４、第１の結果出力部１０５、第２の符号化部１０６、第２の結果出力部１０７をまとめて「データ圧縮装置の部」と表記する。
また、補助記憶装置９０２には、コンピュータがデータ伸張装置２００の場合、図２に示す符号化済データ取得部２０１、第１の復号処理部２０２１、終了判定部２０３、第２の復号部２０４、整数結合部２０５、出力部２０６の機能を実現するプログラムが記憶されている。以下、符号化済データ取得部２０１、第１の復号処理部２０２１、終了判定部２０３、第２の復号部２０４、整数結合部２０５、出力部２０６をまとめて「データ伸張装置の部」と表記する。「データ圧縮装置の部」と「データ伸張装置の部」とのいずれかあるいは両方を単に「部」と表記する場合もある。
【００４０】
上述した「データ圧縮装置の部」の機能を実現するプログラムは、データ圧縮プログラムとも称される。上述した「データ伸張装置の部」の機能を実現するプログラムは、データ伸張プログラムとも称される。「部」の機能を実現するプログラムは、１つのプログラムであってもよいし、複数のプログラムから構成されていてもよい。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
図３では、１つのプロセッサ９０１が図示されているが、データ圧縮装置１００、データ伸張装置２００の各々が複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリにファイルとして記憶される。
【００４１】
「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。また、「処理」を「回路」又は「工程」又は「手順」又は「部」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【００４２】
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体、記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【００４３】
＊＊＊動作の説明＊＊＊
図４を用いて、本実施の形態に係るデータ圧縮装置１００のデータ圧縮方法、データ圧縮処理Ｓ１００について説明する。
【００４４】
＜データ取得処理Ｓ１００１＞
データ取得部１０１は、単位ビット数Ｌのバイナリデータで表された整数を複数含む符号化データ１１から、ｎを自然数とし、ｎ個の整数を取得するデータ取得処理Ｓ１００１を実行する。データ取得処理Ｓ１００１はＳ１０１の処理とＳ１０２の処理とを有する。
Ｓ１０１において、データ取得部１０１は、符号化データ１１に含まれる全整数の符号化処理を完了したかどうかを判定する。
データ取得部１０１は、符号化データ１１に含まれる全整数の符号化処理を完了していると判定した場合は、処理を終了する。データ取得部１０１は、符号化データ１１に含まれる全整数の符号化処理を完了していないと判定した場合は、Ｓ１０２に進む。
【００４５】
Ｓ１０２において、データ取得部１０１は、符号化データ１１から、新たに符号化する整数を読み込む。このとき、データ取得部１０１は、符号化調整部１０３で定められたパラメータｋに従い、（ｋ×Ｌ）個、すなわちｎ個の整数を読み込む。データ取得部１０１は、符号化データ１１に（ｋ×Ｌ）個未満の整数しか残されていない場合は、全整数を読み込む。処理はＳ１０３に進む。
【００４６】
＜整数分割処理Ｓ１００２＞
整数分割部１０２は、データ取得処理Ｓ１００１により取得されたｎ個の整数の各整数を分割する整数分割処理Ｓ１００２を実行する。整数分割処理Ｓ１００２では、整数分割部１０２は、ｎ個の整数の各整数を、分割ビット数ｂの下位ビットで表される第２の整数１０２２と、ｎ個の整数の各整数から下位ビットを除いた上位ビットにより表される第１の整数１０２１とに分割する。また、整数分割処理Ｓ１００２では、整数分割部１０２は、ｎ個の第１の整数１０２１とｎ個の第２の整数１０２２とを出力する。整数分割処理Ｓ１００２は、Ｓ１０３の処理を有する。
【００４７】
Ｓ１０３において、整数分割部１０２は、読み込んだ（ｋ×Ｌ）個の整数を、（Ｌ−ｂ）ビットの上位ビットから成る第１の整数１０２１と、ｂビットの下位ビットから成る第２の整数１０２２とに分割する。処理はＳ１０４に進む。
【００４８】
＜第１の符号化処理Ｓ１００３＞
第１の符号化部１０４は、整数分割処理Ｓ１００２により出力されたｎ個の第１の整数１０２１を符号化する第１の符号化処理Ｓ１００３を実行する。第１の符号化処理Ｓ１００３では、第１の符号化部１０４は、ｎ個の第１の整数１０２１を符号化した結果を単位ビット数Ｌの自然数倍のビット数のバイナリデータで表される第１符号１０４１として出力する。第１の符号化処理Ｓ１００３は、Ｓ１０４の処理とＳ１０５の処理とを有する。
【００４９】
Ｓ１０４において、第１の符号化部１０４は、（ｋ×Ｌ）個の第１の整数を、ワード単位処理方式により符号化し、第１符号１０４１を生成する。処理はＳ１０５に進む。
Ｓ１０５において、第１の結果出力部１０５は、第１の符号化部１０４により生成された第１符号１０４１を符号化済データ１２に追記する。処理はＳ１０６に進む。
【００５０】
＜第２の符号化処理Ｓ１００４＞
第２の符号化部１０６は、整数分割処理Ｓ１００２により出力されたｎ個の第２の整数１０２２を符号化し、ｎ個の第２の整数１０２２を符号化した結果を第２符号１０６１として出力する第２の符号化処理Ｓ１００４を実行する。第２の符号化処理Ｓ１００４は、Ｓ１０６の処理とＳ１０７の処理とを有する。
【００５１】
Ｓ１０６において、第２の符号化部１０６は、（ｋ×Ｌ）個の第２の整数を、（ｋ×Ｌ×ｂ）ビット、すなわち（ｎ×ｂ）ビットの固定長バイナリデータに符号化し、第２符号１０６１を生成する。処理はＳ１０７に進む。
Ｓ１０７において、第２の結果出力部１０７は、第２の符号化部１０６により生成された第２符号１０６１を符号化済データ１２に追記する。処理はＳ１０１に戻る。
【００５２】
以上で、データ圧縮装置１００のデータ圧縮方法、データ圧縮処理Ｓ１００についての説明を終わる。
このデータ圧縮方法により、符号化データ１１に含まれる複数の整数が、ｎ個の第１の整数１０２１が符号化された第１符号１０４１と、ｎ個の第２の整数１０２２が符号化された第２符号１０６１とが交互に記述された符号化済データ１２が出力される。
【００５３】
次に、図５を用いて、本実施の形態に係るデータ伸張装置２００のデータ伸張方法、データ伸張処理Ｓ２００について説明する。
【００５４】
＜符号化済データ取得処理Ｓ２００１＞
Ｓ２０１において、符号化済データ取得部２０１は、符号化済データ１２に含まれる全データの復号処理を完了したかどうかを判定する。符号化済データ取得部２０１は、全データの復号処理を完了していると判定した場合は、処理を終了する。符号化済データ取得部２０１は、全データの復号処理を完了していないと判定した場合は、Ｓ２０２に進む。
【００５５】
Ｓ２０２において、符号化済データ取得部２０１は、次の処理が第１の整数の復号処理か、第２の整数の復号処理かを判定する。データ伸張処理Ｓ２００における初期状態は第１の整数の復号処理である。次の処理が第１の整数の復号処理である場合はＳ２０３に進む。次の処理が第２の整数の復号処理である場合はＳ２０８に進む。
【００５６】
＜第１の復号処理Ｓ２００２＞
第１の復号部２０２は、データ圧縮処理Ｓ１００により符号化された符号化済データ１２に含まれる第１符号１０４１を取得し、第１符号１０４１をｎ個の第１の整数１０２１に復号する第１の復号処理Ｓ２００２を実行する。
第１の復号部２０２は、第１符号１０４１から、単位ビット数Ｌのバイナリデータである第１単位データ１０４１１を順に取得し、取得した第１単位データ１０４１１を復号し、復号より得られた第１の整数１０２１の個数をカウントする。第１の復号部２０２は、カウントした個数がｎと等しくなるまで、第１符号１０４１から第１単位データ１０４１１を取得し、取得した第１単位データ１０４１１を復号する処理を繰り返す。第１の復号処理Ｓ２００２はＳ２０３の処理からＳ２０７の処理を有する。
【００５７】
Ｓ２０３において、符号化済データ取得部２０１は、符号化済データ１２から、新たに復号するデータを１ワード読み込む。１ワードはＬビットである。処理はＳ２０４に進む。
Ｓ２０４において、第１の復号部２０２の第１の復号処理部２０２１は、読み込んだ１ワードを、複数の第１の整数１０２１へ復号する。処理はＳ２０５に進む。
Ｓ２０５において、第１の復号部２０２の終了判定部２０３は、第１の復号処理部２０２１でｎ（＝ｋ×Ｌ）個の第１の整数が復号されたか否かを判定する。すなわち、終了判定部２０３は、第１の整数の復号済み個数がｎ個であるか否かを判定する。ｎ個の第１の整数が復号された場合はＳ２０６に進む。ｎ個の第１の整数の復号が未完了の場合は、Ｓ２０７に進む。
Ｓ２０６において、終了判定部２０３は、次に行う処理を、第２の整数の復号処理に設定する。この設定は、Ｓ２０２における判定で用いられる。また、終了判定部２０３は、Ｓ２０５の判定で利用する第１の整数の復号済み個数を０個に初期化する。処理はＳ２０２に戻る。
Ｓ２０７において、終了判定部２０３は、次に行う処理を、第１の整数の復号処理に設定する。この設定は、Ｓ２０２における判定で用いられる。処理はＳ２０２に戻る。
【００５８】
以上の第１の復号処理Ｓ２００２により、ｎ（＝ｋ×Ｌ）個の第１の整数が生成される。
【００５９】
＜第２の復号処理Ｓ２００３＞
第２の復号部２０４は、符号化済データ１２から第２符号１０６１を取得し、取得した第２符号１０６１をｎ個の第２の整数１０２２に復号する第２の復号処理Ｓ２００３を実行する。
第２の復号部２０４は、第２符号１０６１から、単位ビット数Ｌのバイナリデータである第２単位データ１０６１１を、分割ビット数ｂとｋとの積の数だけ取得する。第２の復号部２０４は、取得した分割ビット数ｂとｋとの積の数の第２単位データ１０６１１をｎ個の第２の整数１０２２に復号する。第２の復号処理Ｓ２００３はＳ２０８の処理からＳ２０９の処理を有する。
【００６０】
Ｓ２０８において、符号化済データ取得部２０１は、符号化済データ１２から、新たに復号するデータを（ｋ×ｂ）ワード読み込む。処理はＳ２０９に進む。
Ｓ２０９において、第２の復号部２０４は、読み込んだ（ｋ×ｂ）個のワードを、（ｋ×Ｌ）個の第２の整数へ復号する。処理はＳ２１０に進む。
以上の第２の復号処理Ｓ２００３により、ｎ（＝ｋ×Ｌ）個の第２の整数が生成される。
【００６１】
＜整数結合処理Ｓ２００４＞
整数結合部２０５は、ｎ個の第１の整数１０２１とｎ個の第２の整数１０２２とに基づいて、ｎ個の整数を生成する整数結合処理Ｓ２００４を実行する。整数結合処理Ｓ２００４はＳ２１０の処理からＳ２１２の処理を有する。
【００６２】
Ｓ２１０において、整数結合部２０５は、第１の復号部２０２により復号された（ｋ×Ｌ）個の第１の整数と、第２の復号部２０４により復号された（ｋ×Ｌ）個の第２の整数をそれぞれ再結合する。整数結合部２０５は、（ｋ×Ｌ）個の第１の整数と、（ｋ×Ｌ）個の第２の整数とを各々再結合し、（ｋ×Ｌ）個の整数を生成する。処理はＳ２１１に進む。
Ｓ２１１において、出力部２０６は、整数結合部２０５により生成されたｎ（＝ｋ×Ｌ）個の整数を元データ２２に追記する。処理はＳ２１２に進む。
Ｓ２１２において、終了判定部２０３は、次に行う処理を、第１の整数の復号処理に設定する。この設定は、Ｓ２０２における判定で用いられる。処理はＳ２０１に戻る。
【００６３】
以上の整数結合処理Ｓ２００４により、ｎ（＝ｋ×Ｌ）個の整数が生成される。
以上で、データ伸張装置２００のデータ伸張方法、データ伸張処理Ｓ２００についての説明を終わる。
【００６４】
＊＊＊効果の説明＊＊＊
本実施の形態に係るデータ圧縮装置は、ワード長Ｌビットの固定長の整数値データから成るデータ系列を可逆圧縮する。符号化調整部は、一度に符号化する整数の個数ｎとして、ワード長Ｌの倍数（ｋ×Ｌ）を選択する。第１の符号化部は、符号化調整部において決定された（ｋ×Ｌ）個の第１の整数の符号化結果を、ワード長Ｌの倍数となるように生成する。すなわち、第１の符号化部は、ワード単位圧縮を実施する。第２の符号化部は、符号化調整部において決定された個数ｎの第２の整数を、（ｋ×ｂ）個のワード、すなわち（ｋ×ｂ×Ｌ）ビットにパッキングする。
また、本実施の形態に係るデータ圧縮装置は、第１の符号化部で生成された符号化結果をワード長Ｌの倍数の長さで出力する第１の符号化結果出力部を備える。また、データ圧縮装置は、第２の符号化部で生成された符号化結果を（ｋ×ｂ）個のワード、すなわち（ｋ×ｂ×Ｌ）ビットの長さで出力する第２の符号化結果出力部を備える。
【００６５】
また、本実施の形態に係るデータ伸張装置では、第１の整数復号部が圧縮データを１ワードずつ読み込み、ワード単位での復号処理を繰り返すことで、第１の整数へ復号する。終了判定部は、（ｋ×Ｌ）個の第１の整数を復号したかを判定し、判定結果が真の場合に、第２の復号部へ処理を移行する。第２の復号部は、圧縮データをワード単位で読み込み、第１の復号部で復号した第１の整数の個数と同数の第２の整数へ復号する。すなわち、第２の復号部は、ビット分割位置パラメータｂ、及び復号した第１の整数の個数ｋから決定される、（ｋ×ｂ）個のワードを（ｋ×Ｌ）個の第２の整数へ復号する。
整数結合部は、第１の復号部と第２の復号部の出力結果を結合することにより元の（ｋ×Ｌ）個の整数値を得る。
【００６６】
本実施の形態に係るデータ圧縮装置によれば、上下ビット分割方式を採用することができると共に、上位ビットから成る第１の整数の符号化結果と下位ビットから成る第２の整数の符号化結果とを共にワード単位に生成することができる。よって、本実施の形態に係るデータ圧縮装置は、圧縮率を向上させつつ、処理速度を向上させることができる。
【００６７】
また、本実施の形態に係るデータ圧縮装置及びデータ伸張装置によれば、第１の符号化結果と第２の符号化結果とを少量ずつ交互に出力することができる。よって、データ圧縮装置によれば、符号化データ１１が非常に大きいサイズのデータであっても、圧縮処理において、全てのデータを一度に読み込む必要が無く、データを少量ずつ読み込んで逐次的に処理することができる。また、データ伸張装置によれば、符号化済データ１２が非常に大きいサイズのデータであっても、伸張処理において、全てのデータを一度に読み込む必要が無く、データを少量ずつ読み込んで逐次的に処理することができる。
【００６８】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
【００６９】
＊＊＊構成の説明＊＊＊
本実施の形態に係るデータ圧縮装置１００ａを示すブロック構成は、実施の形態１と同様に図１によって表される。また、本実施の形態に係るデータ伸張装置２００ａを示すブロック構成は、実施の形態１と同様に図２によって表される。実施の形態１で説明した構成と同様の構成については同一の符号を付し、その説明を省略する場合がある。
【００７０】
本実施の形態に係るデータ圧縮装置１００ａでは、符号化調整部１０３の機能及び動作が実施の形態１とは異なる。本実施の形態では、図１の符号化調整部１０３を符号化調整部１０３ａ、決定部１０３１を決定部１０３１ａとして説明する。
決定部１０３１ａ、すなわち符号化調整部１０３ａは、Ｋを自然数とし、ｋの上限値としてＫを決定すると共に、ｃを自然数とし、パラメータｃを決定する。符号化調整部１０３ａは、ｋ≦Ｋの範囲においてｎ個の第１の整数１０２１を符号化した際に、符号化に際して冗長となる余剰ビットのビット数がｃ以下となるｋを選択する。
【００７１】
このように、符号化調整部１０３ａは、一度に符号化する整数の個数ｎを決定するために、２個のパラメータＫ、ｃを用いる。具体的には、符号化調整部１０３ａは、一度に符号化する整数の個数の上限として、ワード長Ｌの倍数（Ｋ×Ｌ）を選択する。また、符号化調整部１０３ａは、ｋ＜Ｋの範囲で、（ｋ×Ｌ）個の第１の整数を符号化した際に、符号化に際して冗長となる余剰ビットが、予め設定されたパラメータｃビット以下となるような最小のｋを選択する。
【００７２】
本実施の形態に係るデータ伸張装置２００ａでは、第１の復号部２０２の機能及び動作が実施の形態１とは異なる。本実施の形態では、図２の第１の復号部２０２の終了判定部２０３及び第１の復号処理部２０２１を、第１の復号部２０２ａの終了判定部２０３ａ及び第１の復号処理部２０２１ａとして説明する。
終了判定部２０３ａは、Ｋを自然数とし、ｋの上限値としてＫを決定すると共に、ｃを自然数とし、パラメータｃを決定する。終了判定部２０３ａは、第１の整数の復号処理が完了したか否かを判定するために、２個のパラメータＫ、ｃを用いる。
【００７３】
＊＊＊動作の説明＊＊＊
図６を用いて、本実施の形態に係るデータ圧縮装置１００ａのデータ圧縮方法、データ圧縮処理Ｓ１００ａについて説明する。
データ圧縮装置１００ａは、データ圧縮処理Ｓ１００ａの開始時に、パラメータｋをｋ＝０と初期化する。
【００７４】
Ｓ３０１の処理は、図４のＳ１０１の処理と同様である。すなわち、Ｓ３０１において、データ取得部１０１は、符号化データ１１に含まれる全整数の符号化処理を完了したかどうかを判定する。
データ取得部１０１は、符号化データ１１に含まれる全整数の符号化処理を完了していると判定した場合は、処理を終了する。データ取得部１０１は、符号化データ１１に含まれる全整数の符号化処理を完了していないと判定した場合は、Ｓ３０２に進む。
【００７５】
Ｓ３０２において、データ取得部１０１は、符号化データ１１から、新たにＬ個の整数を読み込む。符号化データ１１にＬ個未満の整数しか残されていない場合は、全整数を読み込む。データ取得部１０１は、パラメータｋをインクリメントする。上述したように、ｋの初期値は０である。Ｓ３０２の処理は、図４のＳ１０２の処理に相当する。処理はＳ３０３に進む。
【００７６】
Ｓ３０３において、整数分割部１０２は、読み込んだＬ個の整数を、（Ｌ−ｂ）ビットの上位ビットから成る第１の整数１０２１と、ｂビットの下位ビットから成る第２の整数１０２２とに分割する。Ｓ３０３の処理は、図４のＳ１０３の処理に相当する。処理はＳ３０４に進む。
【００７７】
Ｓ３０４において、第１の符号化部１０４は、（ｋ×Ｌ）個の第１の整数１０２１を、ワード単位処理方式により符号化し、第１符号１０４１を生成する。Ｓ３０４の処理は、図４のＳ１０４の処理に相当する。処理はＳ３０５に進む。
【００７８】
Ｓ３０５において、符号化調整部１０３ａは、一度に圧縮する整数の個数ｎを（ｋ×Ｌ）とするか否かを判定する。符号化調整部１０３ａは、ｋ＜Ｋであり、かつ、Ｓ３０４での第１の符号化結果における余剰ビットがｃより大きい場合に、ｎ＝（ｋ×Ｌ）とすべきでないと判定し、Ｓ３０２に戻る。符号化調整部１０３ａは、ｋ＜Ｋでない、あるいは、Ｓ３０４での第１の符号化結果における余剰ビットがｃより大きくない場合、ｎ＝（ｋ×Ｌ）とすべきと判定し、Ｓ３０６に進む。余剰ビットｃについては、後述する。
【００７９】
Ｓ３０６において、第１の結果出力部１０５は、第１の符号化部１０４により生成された第１符号１０４１を符号化済データ１２に追記する。Ｓ３０６の処理は、図４のＳ１０５の処理に相当する。処理はＳ３０７に進む。
【００８０】
Ｓ３０７において、第２の符号化部１０６は、（ｋ×Ｌ）個の第２の整数を、（ｋ×Ｌ×ｂ）ビットの固定長バイナリデータに符号化し、第２符号１０６１を生成する。Ｓ３０７の処理は、図４のＳ１０６の処理に相当する。処理はＳ３０８に進む。
【００８１】
Ｓ３０８において、第２の結果出力部１０７は、第２の符号化部１０６により生成された第２符号１０６１を符号化済データ１２に追記する。Ｓ３０８の処理は、図４のＳ１０７の処理に相当する。処理はＳ３０９に進む。
Ｓ３０９において、第２の結果出力部１０７は、パラメータｋを０に初期化し、Ｓ３０１に戻る。
以上で、データ圧縮装置１００ａのデータ圧縮処理Ｓ１００ａについての説明を終わる。
【００８２】
以上のように、データ圧縮装置１００ａが動作することにより、実施の形態１と異なり、符号化調整部１０３ａは、与えられたパラメータＫ以下の範囲内で、最適なｋを選択することが可能となる。ｋの値が小さいほどデータ圧縮処理の処理速度は向上するが、圧縮率が低下する。しかしながら、図６のように符号化調整部１０３ａを動作させることにより、圧縮率がある程度高くなる状態を担保しつつ、最小のｋを選択することが可能となる。よって、圧縮率と処理速度との両方について高い性能が維持される。
【００８３】
ここで、符号化調整部１０３ａの動作において重要な役割を果たす余剰ビットについて、Ｓｉｍｐｌｅ９を例に説明する。
例えば、符号化対象となる整数列が、１（１），５（１０１），３（１１）という３個の整数であるとする。カッコ内は整数を２進数で表したものである。このとき、整数列のうち最大の整数は５であり、５の２進桁数は３である。従って、Ｓｉｍｐｌｅ９を用いると、本来、３桁の２進整数を９個詰めることが可能なデータ符号方法を選択することにより、最も圧縮率が向上する。しかしながら、上記整数列の例では、符号化対象となる整数が３個しか無いため、最大桁数が３であるにも関わらず、実際に選択される符号化方式は、９桁の２進整数を３個詰めるという方式となってしまう。このように、ワード単位処理方式を採用しているために、出力符号をワード単位に生成するという制約があり、本来であれば不要である冗長なビットが付加されることがある。このような冗長なビットを、余剰ビットと呼んでいる。上記整数列の例においては、３桁の数値が３個であるので、本来９ビットで表現できるデータを、実際には、９桁の数値３個として２７ビットを使用して表現しているので、余剰ビットは１８ビットとなる。
【００８４】
余剰ビットが生じる要因は、符号化対象である整数が十分でない点にある。余剰ビットを減らすためには、一度に符号化する整数の個数を増加させれば良い。本実施の形態における符号化調整部１０３は、この考え方に基づき、余剰ビットがある閾値（パラメータｃ）を超える場合には、一度に符号化する整数の個数を増加させて、再度符号化を実施ししていると解釈することができる。
【００８５】
次に、図７を用いて、本実施の形態に係るデータ伸張装置２００ａのデータ伸張方法、データ伸張処理Ｓ２００ａについて説明する。
データ伸張装置２００ａは、データ伸張処理Ｓ２００ａの開始時に、パラメータｋをｋ＝０と初期化する。
【００８６】
Ｓ４０１の処理は、図５のＳ２０１の処理と同様である。すなわち、Ｓ４０１において、符号化済データ取得部２０１は、符号化済データ１２に含まれる全整数の復号処理を完了したかどうかを判定する。
符号化済データ取得部２０１は、符号化済データ１２に含まれる全整数の復号処理を完了していると判定した場合は、処理を終了する。符号化済データ取得部２０１は、符号化済データ１２に含まれる全整数の復号処理を完了していないと判定した場合は、Ｓ４０２に進む。
【００８７】
Ｓ４０２の処理は、図５のＳ２０２の処理と同様である。すなわち、Ｓ４０２において、符号化済データ取得部２０１は、次の処理が第１の整数の復号処理か、第２の整数の復号処理かを判定する。データ伸張処理Ｓ２００ａにおける初期状態は第１の整数の復号処理である。次の処理が第１の整数の復号処理である場合はＳ４０３に進む。次の処理が第２の整数の復号処理である場合はＳ４０９に進む。
【００８８】
ここで、Ｓ４０３の処理からＳＳ４０８の処理についての概要を説明する。第１の復号部２０２は、第１符号１０４１から、単位ビット数Ｌのバイナリデータである第１単位データ１０４１１を順に取得し、取得した第１単位データ１０４１１を復号する。第１の復号部２０２は、ｋ＜Ｋの範囲において第１単位データ１０４１１を復号した際に、復号に際して冗長となる余剰ビットのビット数がｃ以下となり、かつ、復号より得られた第１の整数１０２１の個数が単位ビット数Ｌとｋとの積と等しくなるｋ、あるいは、Ｋと等しくなるｋを選択する。第１の復号部２０２は、復号により得られた第１の整数１０２１の個数が単位ビット数Ｌとｋとの積と等しくなるまで、第１符号１０４１から第１単位データ１０４１１を取得し、取得した第１単位データ１０４１１を復号する処理を繰り返す。なお、復号により得られた第１の整数１０２１の個数が単位ビット数Ｌとｋとの積と等しくなる前に、ｋ＝Ｋとなった場合には、第１の復号部２０２はｋとしてＫを選択する。
【００８９】
Ｓ４０３の処理は、図５のＳ２０３の処理と同様である。すなわち、Ｓ４０３において、符号化済データ取得部２０１は、符号化済データ１２から、新たに復号するデータを１ワード読み込む。１ワードはＬビットである。処理はＳ４０４に進む。
【００９０】
Ｓ４０４において、第１の復号部２０２ａの第１の復号処理部２０２１ａは、読み込んだ１ワードを、複数の第１の整数へ復号する。そして、第１の復号処理部２０２１ａは、パラメータｋの値を、復号が完了した第１の整数の個数をＬで割った値に更新する。ｋの初期値は０である。処理はＳ４０５に進む。
【００９１】
Ｓ４０５において、第１の復号処理部２０２１ａは、復号が完了した第１の整数の個数が、Ｌの倍数か否かを判定する。
第１の復号処理部２０２１ａは、復号が完了した第１の整数の個数がＬの倍数となっていない場合、第１の整数の復号がまだ完了していないため、Ｓ４０８に進む。
第１の復号処理部２０２１ａは、復号が完了した第１の整数の個数がＬの倍数となっている場合、第１の整数の復号が完了している可能性があるため、次の判定の処理であるＳ４０６に進む。
【００９２】
Ｓ４０６において、終了判定部２０３ａは、ｋ＜Ｋであり、かつ、Ｓ４０４で復号した第１の符号化結果における余剰ビットがｃより大きい場合に、第１の整数の復号がまだ完了していないと判定し、Ｓ４０８に進む。終了判定部２０３ａは、ｋ≧Ｋ、あるいは、Ｓ４０４で復号した第１の符号化結果における余剰ビットがｃ以下の場合に、第１の整数の復号が完了したと判定し、Ｓ４０７に進む。
【００９３】
Ｓ４０７において、終了判定部２０３ａは、次に行う処理を、第２の整数の復号処理に設定する。この設定は、Ｓ４０２における判定で用いられる。また、終了判定部２０３ａは、Ｓ４０５の判定で利用する第１の整数の復号済み個数、すなわち復号が完了した第１の整数の個数を０個に初期化する。処理はＳ４０２に戻る。Ｓ４０７の処理は、図５のＳ２０６の処理に相当する。
【００９４】
Ｓ４０９からＳ４１２の処理は、Ｓ２０８からＳ２１１の処理と同様である。
Ｓ４１３において、終了判定部２０３ａは、次に行う処理を、第１の整数の復号処理に設定する。この設定は、Ｓ４０２における判定で用いられる。また、終了判定部２０３ａは、パラメータｋを０に初期化する。処理はＳ４０１に戻る。
以上で、データ伸張装置２００ａのデータ伸張方法についての説明を終わる。
【００９５】
＊＊＊効果の説明＊＊＊
以上のように、本実施の形態に係るデータ圧縮装置では、符号化調整部は、一度に符号化する整数の個数の上限として、ワード長Ｌの倍数（Ｋ×Ｌ）を選択する。また、符号化調整部は、ｋ＜Ｋの範囲で、（ｋ×Ｌ）個の第１の整数を符号化した際に、符号化に際して冗長となる余剰ビットが、ｃビット以下となるような最小のｋを選択する。そして、符号化調整部は、一度に符号化する整数の個数として、ワード長Ｌの倍数（ｋ×Ｌ）を選択する。第１の符号化部は、符号化調整部において決定された（ｋ×Ｌ）個の第１の整数の符号化結果を、ワード長Ｌの倍数となるように生成する。第２の符号化部は、符号化調整部において決定された個数の第２の整数を、（ｋ×ｂ）個のワード（ｋ×ｂ×Ｌビット）にパッキングする。
【００９６】
また、本実施の形態に係るデータ伸張装置では、終了判定部は、ｋ＜Ｋの範囲で、（ｋ×Ｌ）個の第１の整数を復号した時点で、符号化に際して冗長となる余剰ビットが、ｃビット以下となっている場合、或いは、ｋ＝Ｋの場合に、真と判定する。第２の復号部は、ビット分割位置パラメータｂ、及び復号した第１の整数の個数ｋから決定される（ｋ×ｂ）個のワードを（ｋ×Ｌ）個の第２の整数へ復号する。整数結合部は、（ｋ×Ｌ）個の整数値を得る。
【００９７】
以上のように、データ圧縮装置１００ａが動作することにより、実施の形態１と異なり、符号化調整部１０３ａは、与えられたパラメータＫ以下の範囲内で最適なｋを選択することが可能となる。一般に、ｋの値が小さいほど処理速度は向上するが、圧縮率が低下する。しかしながら、本実施の形態で説明したようにデータ圧縮装置１００ａを動作させることにより、圧縮率がある程度高くなる状態を担保しつつ、最小のｋを選択することが可能となり、圧縮率と処理速度の両者を高い性能に維持することができる。
【００９８】
上記の実施の形態では、データ取得部、整数分割部、符号化調整部、第１の符号化部、第１の結果出力部、第２の符号化部、第２の結果出力部がそれぞれ独立した機能ブロックとしてデータ圧縮装置を構成している。また、符号化済データ取得部、第１の復号処理部、終了判定部、第２の復号部、整数結合部、出力部がそれぞれ独立した機能ブロックとしてデータ伸張装置を構成している。しかし、データ圧縮装置、データ伸張装置は上記のような構成に限らない。データ圧縮装置、データ伸張装置の構成は任意である。データ取得部、整数分割部、符号化調整部、第１の符号化部、第１の結果出力部、第２の符号化部、第２の結果出力部をひとつの機能ブロックで実現してもよい。符号化済データ取得部、第１の復号処理部、終了判定部、第２の復号部、整数結合部、出力部をひとつの機能ブロックで実現してもよい。データ圧縮装置、データ伸張装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成でデータ圧縮装置、データ伸張装置を構成しても構わない。
【００９９】
また、データ圧縮装置、データ伸張装置は、それぞれが１つの装置でなく、複数の装置から構成されたデータ圧縮システム、データ伸張システムでもよい。また、データ圧縮装置とデータ伸張装置とを備える１つの装置、あるいは１つのシステムでもよい。
【０１００】
また、実施の形態１，２について説明したが、これらの２つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。あるいは、これらの２つの実施の形態のうち、１つの実施の形態を部分的に実施しても構わない。その他、これらの２つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１０１】
１１  符号化データ、１２  符号化済データ、２２  元データ、１００，１００ａ  データ圧縮装置、１０１  データ取得部、１０２  整数分割部、１０３，１０３ａ  符号化調整部、１０４  第１の符号化部、１０５  第１の結果出力部、１０６  第２の符号化部、１０７  第２の結果出力部、２００，２００ａ  データ伸張装置、２０１  符号化済データ取得部、２０２，２０２ａ  第１の復号部、２０３，２０３ａ  終了判定部、２０４  第２の復号部、２０５  整数結合部、２０６  出力部、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１，９１２  ケーブル、１０２１  第１の整数、１０２２  第２の整数、１０３１，１０３１ａ  決定部、１０４１  第１符号、１０６１  第２符号、１２０１  記憶部、２０２１，２０２１ａ  第１の復号処理部、９０４１  レシーバー、９０４２  トランスミッター、１０４１１  第１単位データ、１０６１１  第２単位データ、Ｓ１００，Ｓ１００ａ  データ圧縮処理、Ｓ１００１  データ取得処理、Ｓ１００２  整数分割処理、Ｓ１００３  第１の符号化処理、Ｓ１００４  第２の符号化処理、Ｓ２００，Ｓ２００ａ  データ伸張処理、Ｓ２００１  符号化済データ取得処理、Ｓ２００２  第１の復号処理、Ｓ２００３  第２の復号処理、Ｓ２００４  整数結合処理。
【図１】
2016132430.tif 000003
【図２】
2016132430.tif 000004
【図３】
2016132430.tif 000005
【図４】
2016132430.tif 000006
【図５】
2016132430.tif 000007
【図６】
2016132430.tif 000008
【図７】
2016132430.tif 000009
【図８】
2016132430.tif 000010
【国際調査報告】
2016132430.tif 000011
2016132430.tif 000012
2016132430.tif 000013
2016132430.tif 000014