以下、本発明に係る符号化装置の例について説明する。以下に説明する実施形態では、画像データを符号化・復号する場合を例に説明するが、本発明は以下の実施形態に限定されるものではない。
図1は、本発明の実施形態の一例である符号化装置10及び復号装置24のハードウェア構成を示した図である。符号化装置10は、画像処理装置等のコンピュータであり、演算等を行うプロセッサ12、演算結果等を記憶する記憶装置14、プロセッサ12に指示等をするための入力装置16、処理内容を表示する表示装置18、ネットワーク40を介して他の機器等と通信するための通信装置20を含んで構成されている。復号装置24も、印刷装置や画像処理装置などのコンピュータであり、符号化装置10と同様、演算等を行うプロセッサ26、演算結果等を記憶する記憶装置28、プロセッサ26に指示等をするための入力装置30、処理内容を表示する表示装置32、ネットワーク40を介して他の機器等と通信するための通信装置34を含んで構成されている。復号装置24は、さらに、画像データを紙媒体等に印刷する出力装置36を含んでいても良い。
符号化装置10は、記憶装置14に記憶されたプログラムをプロセッサ12が読み出して実行することにより、データの符号化を行う。符号化のためのプログラムを符号化装置10が読み取り可能な記憶媒体22に記憶させ、符号化装置10が記憶媒体22から符号化のためのプログラムを読み出して実行するようにしても良い。
復号装置24も符号化装置10と同様に、記憶装置28に記憶されたプログラムをプロセッサ26が読み出して実行することにより、データの復号を行う。復号のためのプログラムを復号装置24が読み取り可能な記憶媒体38に記憶させ、復号装置24が記憶媒体38から復号のためのプログラムを読み出して実行するようにしても良い。
図2は、第1実施形態における符号化装置10aの機能構成を示すブロック図である。符号化装置10aは、シンボル取得部50、グループ生成部52、ビット数検出部54、識別情報生成部57を含む符号化バッファ選択部56、複数の符号化バッファ58、複数の等長符号語置換部60、複数のスーパーグループ生成部62、及びバッファID符号化部64を含む機能構成となっている。
シンボル取得部50は、画像データであるシンボルを取得する。シンボル取得部50により取得されるシンボルは、等長であり非圧縮のデータである。例えば、0から255の値を取る8ビットの画素値が挙げられる。シンボル取得部50は、取得した各シンボルを、シンボルが示す数値に基づいて、異なるビット数表現に変換する。簡単のために入力データが3ビットのシンボルである場合を例に説明すると、この場合取り得るシンボル値は0b000(=0)、0b001(=1)、0b010(=2)、0b011(=3)、0b100(=−4)、0b101(=−3)、0b110(=−2)、0b111(−1)の8種類である。このとき、例えば−1及び0を1ビット表現、−2及び1を2ビット表現、−4、−3,2、及び3を3ビット表現で変換する。出現頻度が多いと考えられるシンボル値には少ないビット数の表現を割り当てるのが好適である。
グループ生成部52は、シンボル取得部50から変換されたシンボルを順次受け取る。そして、シンボルを受け取った順に所定数まとめて、複数のシンボルから構成されるグループを生成する。ここで、まとめられるシンボルの数は任意であり、例えば、符号化装置10aが符号化するデータの種類に応じて定めることが可能である。
ビット数検出部54は、グループ生成部52で生成されたグループを構成するシンボルのビット数を検出する。例えば、ビット数検出部は、グループを構成するシンボルのうち、最大ビット数及び最小ビット数のシンボルを検出する。また、(1,3,2,5)や(2,1,4,0)といったような、グループを構成するシンボルのビットパターンを検出する。
符号化バッファ選択部56は、ビット数検出部54で検出されたビット数に基づいて、グループを複数の符号化バッファ58に振り分けて格納する。符号化装置10aでは、符号化バッファ選択部56は、グループを構成するシンボルの最大ビット数に応じて、グループを格納する符号化バッファ58を選択する。また、符号化バッファ選択部56に含まれる識別情報生成部57は、各グループの格納先である符号化バッファ58を識別する識別情報を含むバッファIDを生成する。識別情報生成部57は、生成したバッファIDをバッファID符号化部64へ出力する。
符号化バッファ58は、複数設けられる。符号化装置10aでは、グループを構成するシンボルの最大ビット数に応じて、グループを符号化バッファに振り分けるため、シンボル取得部50により取得されるシンボルが持ち得る最大ビット数と同じ数だけ符号化バッファ58が用意される。
等長符号語置換部60は、複数設けられ、符号化バッファ58それぞれに対応して1つずつ設けられる。等長符号語置換部60は、符号化バッファ58に格納されたグループを構成する全てのシンボルを、符号化バッファ58毎に定められたビット数であって、当該グループを構成するシンボルの最大ビット数以上のビット数に置換する。
スーパーグループ生成部62は、複数設けられ、等長符号語置換部60それぞれに対応して1つずつ設けられる。スーパーグループ生成部62は、等長符号語置換部60によってシンボルが置換されたグループを、符号化バッファ58毎に定められた所定数まとめてスーパーグループを生成する。スーパーグループ生成部62は、スーパーグループを構成するグループの数を、スーパーグループに属するシンボルの総ビット数が8の倍数となるように、当該グループが格納された符号化バッファ58に定められたビット数及びグループを構成するシンボルの数に基づいて定める。さらに、スーパーグループ生成部62は、スーパーグループに属するシンボルを連結してスーパーグループ符号を生成して出力する。
図2では、符号化バッファ58、等長符号語置換部60、及びスーパーグループ生成部62が別々の機能ブロックとして示されているが、等長符号語置換部60及びスーパーグループ生成部62の機能を符号化バッファ58の機能として含めても良い。すなわち、シンボルの置換及びスーパーグループの生成を符号化バッファ58において行うようにしても良い。
バッファID符号化部64は、符号化バッファ選択部56からバッファIDを受け取り、バッファIDを符号化する。符号化されたバッファIDは、スーパーグループ符号と共に復号装置24へ出力される。
バッファIDは、復号装置24が復号時に参照するものである。符号化バッファ58は複数設けられ、各グループは、複数の符号化バッファ58に振り分けて格納される。したがって、グループ生成部52で生成されたグループは、符号化バッファ選択部56まではグル―プの生成順に並んでいると特定し得るが、複数の符号化バッファ58に振り分けて格納された後は、各グループの並び順を特定することができなくなってしまう。そこで、識別情報生成部57が、各グループの格納先である符号化バッファ58を識別する識別情報を含むバッファIDを取得してバッファID符号化部64へ出力し、バッファID符号化部64がバッファIDを符号化した上で復号装置24へ出力する。上述の通り、グループを構成するシンボルであって等長符号語置換部60により置換されたシンボルのビット数及びスーパーグループを構成するグループの数は符号化バッファ58毎に定められている。したがって、グループが格納された符号化バッファ58を特定することで、各グループがいずれの符号化バッファ58に格納されたかを特定すると共に、グループを構成するシンボルが置換された後のビット数及びスーパーグループを構成するグループの数を特定することができる。このように、バッファIDには、グループを構成するシンボルであって等長符号語置換部60により置換されたシンボルのビット数、及びスーパーグループを構成するグループの数を示す情報が含まれる。
以下、符号化装置10aによる符号化処理の流れを説明する。図3は、符号化装置10aにおける符号化処理の流れを示すフローチャートである。図3に示された各ステップは、図2に示した各機能構成が実行するものであるが、実質的には符号化装置10aのプロセッサ12が実行する。
ステップS10において、シンボル取得部50は、複数のシンボルを取得し、上述の通り、取得したシンボルをシンボルが示す数値に基づいて異なるビット数表現に変換する。
ステップS12において、シンボル取得部50は、所定数のシンボルを取得したか否かを判断する。所定数のシンボルを取得したと判断された場合(ステップS12において「はい」)は、ステップS14に進む。所定数のシンボルを取得していないと判断された場合(ステップS12において「いいえ」)は、再度ステップS10に戻り、シンボル取得部50は新たにシンボルを取得する。ここで、所定数のシンボルとはグループを構成するシンボルを意味する。上述の通り、グループを構成するシンボルの数は任意の数とすることが可能であり、ステップS12における所定数も符号化装置10aが符号化するデータの種類に応じて任意に定めることが可能である。本実施形態では、ステップS12における所定数を4とする。すなわち、本実施形態では1つのグループを構成するシンボルの数は4となる。
ステップS14において、グループ生成部52は、シンボル取得部50が取得したシンボルを受け取り、受け取ったシンボルを4つまとめてグループを生成する。
ステップS16において、ビット数検出部54は、グループを構成するシンボルのビット数を検出する。本実施形態では、グループを構成するシンボルにおける最大ビット数に基づいて、各グループを複数の符号化バッファ58に振り分ける。したがって、本実施形態では、ビット数検出部54は、少なくともグループを構成するシンボルにおける最大ビット数を検出する。
ステップS18において、符号化バッファ選択部56は、ビット数検出部54で検出された、グループを構成するシンボルにおける最大ビット数に応じて、グループを格納する符号化バッファ58を選択する。例えば、1つ目のグループを構成するシンボルの最大ビット数が1ビットであれば、1つ目のグループの格納先として符号化バッファ1を選択する。また、2つ目のグループを構成するシンボルの最大ビット数が2ビットであれば、2つ目のグループの格納先として符号化バッファ2を選択する。このように、本実施形態では、符号化バッファ選択部56は、グループを構成するシンボルの最大ビット数がNであれば、当該グループの格納先として符号化バッファNを選択する。
ステップS20において、識別情報生成部57は、各グループの格納先である符号化バッファ58を識別する識別情報を含むバッファIDを生成し、バッファID符号化部64へ出力する。
ステップS22において、符号化バッファ58は、符号化バッファ58に符号化バッファ58毎に定められた所定数のグループが格納されたか否かを判断する。符号化バッファ58毎に定められた所定数のグループが格納されたと判断された場合(ステップS22において「はい」)は、ステップS24に進む。符号化バッファ58毎に定められた所定数のグループが格納されていないと判断された場合(ステップS22において「いいえ」)は、ステップS10に戻り、シンボル取得部50は新たにシンボルを取得する。
ステップS24において、等長符号語置換部60は、符号化バッファ58毎に定められた所定のビット数で、グループを構成するシンボルを置換する。
図4は、等長符号語置換部60による置換の様子を示す図である。図4には、複数の符号化バッファ58及び複数の等長符号語置換部60の一部が示されている。符号化バッファ1には、グループを構成するシンボルの最大ビット数が1であるグループ66及び68が格納されている。同様に、符号化バッファ2にはグループを構成するシンボルの最大ビット数が2であるグループ74及び76が格納され、符号化バッファ3にはグループを構成するシンボルの最大ビット数が3であるグループ82及び84が格納されている。
本実施形態では、符号化バッファ58毎に定められた所定のビット数として、対応する符号化バッファ58に格納されたグループを構成するシンボルの最大ビット数とする。
等長符号語置換部1は、グループ66及び68を構成するシンボルを1ビットで置換し、グループ70及び72を生成する。
等長符号語置換部2は、グループ74及び76を構成するシンボルを2ビットで置換し、グループ78及び80を生成する。置換前であるグループ74及び76を構成するシンボルはそれぞれ(1,10,11,0)、(10,1,1,0)であり、1ビット表現のシンボルと2ビット表現のシンボルが混在しているが、置換後であるグループ78及び80を構成するシンボルはそれぞれ(01,10,11,00)、(10,01,01,00)であり、グループ78及び80を構成する全てのシンボルが2ビット表現となる。
等長符号語置換部3も同様に、グループ82及びグループ84を構成するシンボルを3ビットで置換し、グループ86及び88を生成する。ここでも、置換前であるグループ82及び84を構成するシンボルはそれぞれ(1,10,11,111)、(101,0,1,10)と1−3ビット表現のシンボルが混在しているが、置換後であるグループ86及び88を構成するシンボルは(001,010,011,111)、(101,000,001,010)であり、グループ86及び88を構成する全てのシンボルが3ビット表現となる。
図3に戻って、ステップS26において、スーパーグループ生成部62は、グループを所定数まとめてスーパーグループを生成する。スーパーグループを構成するグループの数は、ステップS22における所定数と同じ数であって良く、スーパーグループに含まれるシンボルの総ビット数が8の倍数となるように、グループを構成するシンボルの数及び符号化バッファ58毎に定められるビット数、すなわち等長符号語置換部60により置換されたシンボルのビット数に基づいて、符号化バッファ58毎に定められる。例えば、グループを構成するシンボルの数が3であり、等長符号語置換部60により置換されたシンボルのビットが1ビットの場合、ステップS22では、符号化バッファ1にグループが8つ格納されたと判断した場合にステップS24に進み、ステップS26において1ビットのシンボルを3つから構成されるグループを8つまとめて、総ビット数が24のスーパーグループを生成する。
スーパーグループ生成部62は、所定数のグループをまとめてスーパーグループを生成した後、スーパーグループに含まれるシンボルを連結してスーパーグループ符号を生成する。
図5は、グループがスーパーグループ符号に連結される様子を示す図である。図5に示す等長符号語置換部1、2、及び3によってシンボルが置換されたグループ70、78、80、86、及び88は、図4に示した例で置換されたグループである。スーパーグループ生成部1は、1ビットのシンボル4つから構成されるグループ70とグループ72とをまとめて、総ビット数が8ビットであるスーパーグループ90を生成する。スーパーグループ生成部2は、2ビットのシンボル4つから構成されるグループ78とグループ80とをまとめて、総ビット数が16ビットであるスーパーグループ92を生成する。スーパーグループ生成部3は、3ビットのシンボル4つから構成されるグループ86とグループ88とをまとめて、総ビット数が24ビットであるスーパーグループ94を生成する。
図5に示した例では、スーパーグループ生成部1、2、及び3は、いずれもグループを2つまとめてスーパーグループを生成している。本実施形態では、1つのグループを構成するシンボルの数は4としたので、グループに含まれるシンボルの置換された後のビット数に関わらず、グループを2つまとめてスーパーグループとすれば、スーパーグループの総ビット数は8の倍数となる。したがって、1つのグループを構成するシンボルの数を4とした場合は、スーパーグループを構成するグループの数を2とすれば良い。
図6は、グループがスーパーグループ符号に連結される他の例の様子を示す図である。図5に示す例では、全てのスーパーグループ生成部62が2つのグループをまとめてスーパーグループを生成するが、スーパーグループ生成部62毎に異なる数のグループをまとめてスーパーグループを生成するようにしても良い。図6に示す例では、スーパーグループ生成部1及び3は、図5に示した例と同様に、それぞれ2つのグループをまとめてスーパーグループを生成している。一方、等長符号語置換部2により生成されたグループ78は、2ビットに置換された4つのシンボルから構成されており、グループ78を構成するシンボルの総ビット数は8となっている。したがって、スーパーグループ生成部2においては、グループ78をそのままスーパーグループ102とすることが可能である。すなわち、スーパーグループ生成部2では、スーパーグループを構成するグループの数を1とすることが可能である。
符号化装置10aは、シンボルを符号化しバイトバウンダリとする際に必要なダミーデータを、符号化装置10aを用いない場合に比較して低減する。符号化装置10aでは、ダミーデータが必要になるのは、データ末尾のシンボルを符号化してバイトバウンダリとする場合のみである。符号化装置10aを用いない場合に比較してダミーデータの量が低減されることで、符号化後の符号量を低減し、符号化効率を高める。また、符号化装置10aでは、グループ生成部52で生成されるグループを構成するシンボル数は任意の数であり、グループが如何なる数のシンボルから構成されても、ダミーデータを付加することなく符号化後のデータをバイトバウンダリとする。
本実施形態においては、スーパーグループの総ビット数が8の倍数になるようにグループをまとめたが、スーパーグループを処理する機器のプロセッサのデータ幅に応じて、スーパーグループの総ビットが16の倍数・32の倍数・64の倍数等になるようにグループをまとめるようにしても良い。例えば、スーパーグループを処理する機器のプロセッサのデータ幅が64ビットである場合は、スーパーグループ生成部62は、スーパーグループの総ビット数が64の倍数になるようにグループを1又は複数個まとめるようにする。
また、本実施形態においては、シンボル取得部50により取得されたシンボルはシンボル取得部50において、シンボルが示す数値に基づいて異なるビット数表現に変換されているが、ビット数表現の変換(圧縮)を等長符号語置換部60において行うようにしても良い。この場合、ビット数検出部54は、シンボルが示す数値に基づいて各シンボルを異なるビット数表現に読み替え、各シンボルの読み替えたビット数表現のビット数を検出する。例えば、グループを構成するシンボルが(0b001,0b111,0b000,0b110)である場合、上記例と同様にビット表現を読み替えると、当該グループの各シンボルのビット数はそれぞれ2ビット、1ビット、1ビット、2ビットとなり、このグループの最大ビット数は2ということになり、当該グループは符号化バッファ2に格納される。その後、当該グループは等長符号語置換部2において、例えば(10,01,00,11)に置換される。
図7は、第2実施形態における符号化装置10bの機能構成を示すブロック図である。符号化装置10aと同じ構成要件には同じ番号が付されており、符号化装置10aと同じ機能構成については説明を省略する。符号化装置10bは、識別情報生成部111を含む符号化バッファ選択部110を有し、複数のパターン用符号化バッファ112、複数の非ゼロシンボル抽出部114、複数のパターン用符号置換部116、及び複数のパターン用スーパーグループ生成部118を含む機能構成となっている。
符号化バッファ選択部110は、グループを構成するシンボルの最大ビット数のみならず、ビット数検出部54が検出するグループを構成するシンボルのビットパターンに基づいて、グループを複数の符号化バッファ58及び複数のパターン用符号化バッファ112に振り分けて格納する。また、符号化バッファ選択部110に含まれる識別情報生成部111は、各グループの格納先である符号化バッファ58及びパターン用符号化バッファ112を識別する識別情報を含むバッファIDを生成する。また、生成したバッファIDを、バッファID符号化部64へ出力する。
パターン用符号化バッファ112は、任意の数設けられ、各パターン用符号化バッファ112には、それぞれビットパターンが設定されている。例えば、パターン用符号化バッファ1にはビットパターン(X,0,X,0)が設定されており、パターン用符号化バッファ2にはビットパターン(X,0,0,X)が設定されている。この場合、シンボル(1,0,1,0)から構成されるグループはパターン用符号化バッファ1に格納され、シンボル(1,0,0,1)から構成されるグループはパターン用符号化バッファ2に格納される。また、グループのビットパターンが同じであっても、グループを構成するシンボルの最大ビット数が異なる場合には、異なるパターン用符号化バッファ112に格納される。例えば、シンボル(1,0,1,0)から構成されるグループとシンボル(11,0,1,0)から構成されるグループとではビットパターンは同じ(X,0,X,0)であるが、シンボル(1,0,1,0)から構成されるグループはパターン用符号化バッファ1に格納され、シンボル(11,0,1,0)から構成されるグループは、パターン用符号化バッファ1とは異なる他のパターン用符号化バッファに格納される。
非ゼロシンボル抽出部114は、パターン用符号化バッファ112それぞれに対応して1つずつ設けられる。非ゼロシンボル抽出部114は、パターン用符号化バッファ112に格納されたグループを構成するシンボルのうち、0値を示すシンボルを削除する。たとえば、シンボル(1,0,1,0)から構成されるグループがパターン用符号化バッファ1に格納されている場合には、非ゼロシンボル抽出部1はシンボル(1,0,1,0)から0を削除し、(1,1)から構成されるグループを生成する。
パターン用符号置換部116は、非ゼロシンボル抽出部114それぞれに対応して1つずつ設けられる。パターン用符号置換部116は、非ゼロシンボル抽出部114によって生成されたグループを構成するシンボルを、パターン用符号置換部116毎に定められた符号化ビット数に置換する。
パターン用スーパーグループ生成部118は、パターン用符号置換部116それぞれに対応して1つずつ設けられる。パターン用スーパーグループ生成部118は、パターン用符号置換部116によってシンボルが置換されたグループを、パターン用符号化バッファ112毎に定められた所定数まとめてスーパーグループを生成する。パターン用スーパーグループ生成部118は、スーパーグループを構成するグループの数を、スーパーグループに属するシンボルの総ビット数が8の倍数となるように、当該グループを構成するシンボルがパターン用符号置換部116において置換されたビット数及び当該グループが格納されたパターン用符号化バッファ112に設定されたビットパターンの非ゼロシンボルの数とに基づいて定められる。
図7では、パターン用符号化バッファ112、非ゼロシンボル抽出部114、パターン用符号置換部116、及びパターン用スーパーグループ生成部118は別々の機能ブロックとして示されているが、非ゼロシンボル抽出部114、パターン用符号置換部116、及びパターン用スーパーグループ生成部118をパターン用符号化バッファ112の機能として、パターン用符号化バッファ112に含めても良い。
符号化装置10aと同様に、符号化装置10bにおいて生成されるバッファIDにも、各グループの格納先である符号化バッファ58及びパターン用符号化バッファ112を識別する識別情報含まれる。上述の通り、パターン用符号化バッファ112毎にビットパターンが設定されており、グループはビットパターンに基づいてパターン用符号化バッファ112に振り分けて格納される。したがって、グループが格納されたパターン用符号化バッファ112を特定することで、グループのビットパターンを特定することができる。したがって、符号化装置10bにおいて生成されるバッファIDには、非ゼロシンボル抽出部114によりシンボルが削除される前のグループのビットパターンを示すパターン情報も含まれることになる。
図8は、符号化装置10bにおける符号化処理の流れを示すフローチャートである。符号化装置10bの符号化処理の流れは、図3に示した符号化装置10aの符号化処理の流れのステップS10からステップS16までは同じであるため、当該部分は説明を省略する。
ステップS30において、符号化バッファ選択部110は、ビット数抽出部54からグループを構成するシンボルのビット数情報を取得する。
ステップS32において、符号化バッファ選択部110は、グループを構成するビットパターンを検出する。
ステップS34において、符号化バッファ選択部110は、検出されたビットパターンがパターン用符号化バッファ112に設定されたビットパターンと一致するか否かを判断する。検出されたビットパターンが、いずれかのパターン用符号化バッファ112に設定されたビットパターンと一致すると判断された場合(ステップS34において「はい」)は、ステップS38に進む。検出されたビットパターンが、いずれのパターン用符号化バッファ112に設定されたビットパターンと一致しないと判断された場合(ステップS34において「いいえ」)は、ステップS36に進む。
ステップS36において、図3に示すステップS18と同様に、符号化バッファ選択部110は、ビット数検出部54で検出された、グループを構成するシンボルにおける最大ビット数に応じて、グループを格納する符号化バッファ58を選択し、図3のステップS20へ進む。すなわち、グループのビットパターンがパターン用符号化バッファ112に設定したビットパターンに一致しない場合には、当該グループは第1実施形態と同じように、グループを構成するシンボルにおける最大ビット数に基づいて符号化バッファ58へ格納され、以後符号化装置10aと同じように符号化される。
ステップS38において、符号化バッファ選択部110は、検出されたビットパターンに基づいて、グループをパターン用符号化バッファ112へ格納する。具体的には、グループのビットパターンと同一のビットパターンが設定されているパターン用符号化バッファ112へグループを格納する。
ステップS40において、符号化バッファ選択部110に含まれる識別情報生成部111は、各グループの格納先である符号化バッファ58及びパターン用符号化バッファ112を識別する識別情報を含むバッファIDを生成し、バッファID符号化部64へ出力する。
ステップS42において、パターン用符号化バッファ112は、パターン用符号化バッファ112にパターン用符号化バッファ112毎に定められた所定数のグループが格納されたか否かを判断する。パターン用符号化バッファ112に、所定数のグループが格納されたと判断された場合(ステップS22において「はい」)は、ステップS24に進む。符号化バッファ58に、所定数のグループが格納されていないと判断された場合(ステップS22において「いいえ」)は、再度ステップS10に戻り、シンボル取得部50は新たにシンボルを取得する。
ステップS44において、非ゼロシンボル抽出部114は、パターン用符号化バッファ112に格納されたグループを構成するシンボルのうち、0値を示すシンボルを削除し、グループをパターン用符号置換部116へ出力する。
ステップS46において、パターン用符号置換部116は、パターン用符号化バッファ112毎に定められたビット数で、非ゼロシンボル抽出部114から取得したグループに含まれるシンボルを置換する。
図9は、非ゼロシンボル抽出部112及びパターン用符号置換部116による置換の様子を示す図である。図9には、一部のパターン用符号化バッファ112、非ゼロシンボル抽出部114、及びパターン用符号置換部116が示されている。パターン用符号化バッファ1には、ビットパターンが(X,0,X,0)であり、最大ビット数が1であるグループ120が格納されている。同様に、パターン用符号化バッファ2には、ビットパターンが(X,0,0,X)であり、最大ビット数が2であるグループ126及び128が格納されている。
非ゼロシンボル抽出部1は、グループ120を構成するシンボル(1,0,1,0)のうち0値を示すシンボルを削除し、シンボル(1,1)から構成されるグループ122を生成する。同様に、非ゼロシンボル抽出部2は、グループ126を構成するシンボル(1,0,0,11)のうち0値を示すシンボルを削除してシンボル(1,11)から構成されるグループ130を生成し、グループ128を構成するシンボル(10,0,0,1)のうち0値を示すシンボルを削除してシンボル(10,1)から構成されるグループ132を生成する。
パターン用符号置換部1は、グループ122を構成するシンボルを、グループ120を構成するシンボルの最大ビット数、すなわち1ビット数で置換し、グループ124を生成する。パターン用符号置換部2は、グループ130を構成するシンボル(1,11)を、グループ126を構成するシンボルの最大ビット数、すなわち2ビットで置換し、シンボル(01,11)から構成されるグループ134を生成する。同様に、グループ132を構成するシンボル(10,1)を2ビットで置換し、シンボル(10,01)から構成されるグループ136を生成する。
図8に戻って、ステップS48において、パターン用スーパーグループ生成部118は、パターン用符号置換部116で生成されたグループを所定数まとめてスーパーグループを生成する。
ステップS50において、パターン用スーパーグループ生成部118は、スーパーグループを生成した後、スーパーグループに含まれるシンボルを連結してスーパーグループ符号を生成する。
符号化装置10bは、シンボルが特定のパターンを多く含む場合、特にそのパターンが0値を示すシンボルを多く含む場合に、符号化装置10aを用いた場合に比較して符号化量を低減させる。例えば、等長符号語置換部60で(11,0,0,0)というシンボルを置換する場合、符号化後のシンボルは(11,00,00,00)となり8ビットであるが、パターン用符号置換部116で置換する場合、パターン用符号化バッファ112に(X,0,0,0)(Xは2ビット)というパターンを設定すれば、置換後のシンボルは(11)の2ビットとなる。
図10は、第3実施形態における符号化装置10cの機能構成を示すブロック図である。符号化装置10aと同じ構成要件には同じ番号が付されており、符号化装置10aと同じ機能構成については説明を省略する。符号化装置10cは、識別情報生成部141を含む符号化バッファ選択部140を有し、エントロピー符号化バッファ142及びエントロピー符号化部144を含む機能構成となっている。
符号化バッファ選択部140は、ビット数検出部54が検出したグループを構成するシンボルのビット数の特徴に基づいて、グループを複数の符号化バッファ58及びエントロピー符号化バッファ142に振り分けて格納する。また、識別情報生成部141は、各部ループの格納先である符号化バッファ58及びエントロピー符号化バッファ142を識別する識別情報を含むバッファIDを生成する。また、生成したバッファIDを、バッファID符号化部64へ出力する。
エントロピー符号化バッファ142は、シンボルのビット数が所定の条件を満たすグループを格納し、エントロピー符号化部144は、エントロピー符号化バッファ142に格納されたグループを構成するシンボルをエントロピー符号化する。エントロピー符号化とは、例えばハフマン符号化である。図10では、エントロピー符号化バッファ142及びエントロピー符号化部144は別々の機能ブロックとして示されているが、エントロピー符号化部144をエントロピー符号化バッファ142の機能として、エントロピー符号化バッファ142に含めても良い。
図11は、符号化装置10cにおける符号化処理の流れを示すフローチャートである。符号化装置10cの符号化処理におけるステップS10−S16は、図3に示した符号化装置10aの符号化処理におけるステップS10−S16と同じであるため、説明を省略する。
ステップS60において、符号化バッファ選択部140は、ビット数抽出部54からグループを構成するシンボルのビット数情報を取得する。
ステップS62において、符号化バッファ選択部140は、グループを構成するシンボルのうち、最大ビット数のシンボルと最小ビット数のシンボルを検出する。
ステップS64において、符号化バッファ選択部140は、最大ビット数のシンボルと最小ビット数のシンボルのビット数の差が所定値以上であるか否かを判断する。ビット数の差が所定値以上であると判断された場合(ステップS64において「はい」)は、ステップS68に進む。ビット数の差が所定値より小さいと判断された場合(ステップS34において「いいえ」)は、ステップS66に進む。
ステップS66において、図3に示すステップS18と同様に、符号化バッファ選択部140は、ビット数検出部54で検出された、グループを構成するシンボルにおける最大ビット数に応じて、グループを格納する符号化バッファ58を選択し、図3のステップS20へ進む。すなわち、最大ビット数のシンボルと最小ビット数のシンボルのビット数の差が所定値より小さいと判断された場合には、当該グループは符号化装置10aと同じように、グループを構成するシンボルにおける最大ビット数に基づいて符号化バッファ58へ格納され、以後符号化装置10aと同じように符号化される。
ステップS68において、符号化バッファ選択部140は、グループをエントロピー符号化バッファ142に格納する。
ステップS70において、識別情報生成部141は、各グループの格納先である符号化バッファ58及びエントロピー符号化バッファ142を識別する識別情報を含むバッファIDを生成する。
ステップS72において、エントロピー符号化部144は、エントロピー符号化バッファ142に格納されたグループを構成するシンボルをエントロピー符号化して出力する。
図12は、符号化装置10cにおける符号化処理の流れの他の例を示すフローチャートである。図12に示す符号化処理の例は、図11に示す符号化処理と比して、グループがエントロピー符号化バッファへ格納される条件が異なるものである。図11に示す例と重複する部分については説明を省略する。
ステップS80において、符号化バッファ選択部140は、グループを構成するシンボルのうち、0値を示すシンボル数を検出する。
ステップS82において、符号化バッファ選択部140は、0値を示すシンボル数が所定値以上であるか否かを判断する。ビット数の差が所定値以上であると判断された場合(ステップS82において「はい」)は、ステップS68に進む。0値を示すシンボル数が所定値より小さいと判断された場合(ステップS34において「いいえ」)は、ステップS66に進む。ステップS66及びステップS68以降は、図11において説明した処理と同様の処理を行う。
符号化装置10cは、ある特定の特徴的なシンボル列を符号化する場合に、符号化装置10aを用いた場合に比較して符号化量を低減する。特徴的なシンボル列とは例えば、ほとんどのシンボルが示す値が0であるが、周期的に大きな値を示すシンボルが含まれるようなシンボル列を符号化する場合である。例えば、符号化装置10cにおいてグループを構成するシンボル数が8であるときに、周期的に大きな値を示すシンボルが含まれるようなシンボル列をグループ化すると、(0,0,0,0,0,11111,0,0)というようなシンボルからなるグループが生成されることになる。この場合、符号化装置10aでは、符号化後のシンボルは8×5=40ビットとなるが、符号化装置10cでは最小で9ビット(11111を10に符号化し、0を0に符号化する)となる。
以上、本発明に係る符号化装置の例について説明した。以下、本発明に係る符号化装置に対応する復号装置の例について説明する。符号化装置の実施形態同様、本発明に係る復号装置は以下の実施形態に限定されるものではない。
図13は、符号化装置10aに対応する復号装置24aの機能構成を示すブロック図である。復号装置24aは、複数のスーパーグループ取得部150、バッファID取得部152、バッファID復号部154、複数の逆スーパーグループ化部156、複数の復号部160、複数の復号バッファ162、及びグループ取得部164を含む機能構成となっている。
スーパーグループ取得部150は、複数設けられ、符号化装置24aの符号化バッファ58それぞれに対応して1つずつ設けられる。すなわち、スーパーグループ取得部150は符号化バッファ58と同じ数設けられる。各スーパーグループ取得部150は、対応する符号化バッファ58で生成されたスーパーグループ符号を取得し、取得したスーパーグループ符号をスーパーグループに切り出す。上述の通り、スーパーグループ取得部150が取得するスーパーグループに属するシンボルの総ビット数は8の倍数となっており、所定数のグループから構成されている。当該グループは、複数の符号化バッファ58に選択的に格納され、所定の符号化ビット数で符号化された複数のシンボルから構成されている。
バッファID取得部152は、バッファIDを取得する。上述の通り、バッファIDは符号化バッファ選択部56により生成されるものであり、各グループの格納先である符号化バッファ58を識別する識別情報が含まれる。
バッファID復号部154は、バッファID取得部152が取得したバッファIDを復号する。
逆スーパーグループ化部156は、複数設けられ、符号化バッファ58及びスーパーグループ取得部150それぞれ対応して1つずつ設けられる。各逆スーパーグループ化部156は、対応するスーパーグループ取得部150からスーパーグループを受け取り、スーパーグループをグループに分割する。
復号部160は、複数設けられ、符号化バッファ58及び逆スーパーグループ化部156それぞれに対応して1つずつ設けられる。復号部160は、復号バッファ162に格納されるグループを構成するシンボルを、復号バッファ162毎に定められたビット数で復号する。
復号バッファ162は、複数設けられ、符号化バッファ58及び復号部160それぞれに対応して1つずつ設けられる。復号バッファ162は、復号部160から復号されたシンボルから構成されるグループを格納する。
図13では、復号部160及び復号バッファ162は、別々の機能ブロックとして示されているが、復号部160の機能を復号バッファ162の機能として含めても良い。すなわち、復号を復号バッファ162において行うようにしても良い。
グループ取得部164は、バッファID復号部154からバッファIDを受け取り、バッファIDに含まれる識別情報に基づいて、複数の復号バッファ162から順番にグループを取得し、取得したグループを構成するシンボルを出力する。
以下、復号装置24aによる復号処理の流れを説明する。図14は、復号装置24aにおける復号処理の流れを示すフローチャートである。図14に示された各ステップは、図13に示した各機能構成が実行するものであるが、実質的には復号装置24aのプロセッサ26が実行する。
ステップS100において、スーパーグループ取得部150は、スーパーグループ符号を取得し、スーパーグループに切り出す。
ステップS102において、バッファID取得部152は、バッファIDを取得してバッファID復号部154へ出力する。バッファID復号部154は、受け取ったバッファIDを復号しグループ取得部164に出力する。
ステップS104において、逆スーパーグループ化部156は、スーパーグループをグループに分割する。また、逆スーパーグループ化部156は、スーパーグループを分割して得られたグループを復号部160へ出力する。上述の通り、スーパーグループに含まれるグループの数は、符号化バッファ58毎に定められおり、逆スーパーグループ化部156は符号化バッファに対応して設けられている。したがって、取得したスーパーグループを何個のグループに分割するかは、対応する符号化バッファ58に定められたグループの数に応じて、逆スーパーグループ化部156毎に定められる。
ステップS106において、復号部160は、復号バッファ162に格納されるグループを構成するシンボルを、復号部160毎に定められた所定のビット数で復号する。ここで、所定のビット数とは、復号バッファ162に格納されるグループを構成するシンボルのビット数、すなわち等長符号語置換部60において置換された後のシンボルのビット数であり、復号部160毎に異なるビット数となる。
ステップS108において、グループ取得部164は、バッファIDに含まれる識別上納に基づいて、複数の復号バッファ162から順番にグループを取得する。グループ取得部164は、識別情報を参照することで、グループが符号化バッファ58に格納された順番、すなわち元のグループの並び順通りにグループを取得する。そして、グループを取得した順にグループを構成するシンボルを出力する。
図15は、符号化装置10bに対応する復号装置24bの機能構成を示すブロック図である。復号装置24bは、パターン用スーパーグループ取得部170、パターン用逆スーパーグループ化部171、パターン用復号部172、パターン復元部174、及びパターン用復号バッファ176を含む機能構成となっている。復号装置24bと復号装置24aで同一構成要件には同一符号が付されており、復号装置24aと同じ機能構成については説明を省略する。
復号装置24bのバッファID取得部152が取得するバッファIDには、各グループの格納先である符号化バッファ58及びパターン用符号化バッファ112を識別する識別情報が含まれる。
パターン用スーパーグループ取得部170は、複数設けられ、符号化装置24bのパターン用符号化バッファ112それぞれに対応して1つずつ設けられる。すなわち、パターン用スーパーグループ取得部170はパターン用符号化バッファ112と同じ数設けられる。各パターン用スーパーグループ取得部170は、対応するパターン用符号化バッファ112で生成されたスーパーグループ符号を取得し、取得したスーパーグループ符号をスーパーグループに切り出す。
パターン用逆スーパーグループ化部171は、複数設けられ、パターン用スーパーグループ取得部170それぞれに対応して1つずつ設けられる。各パターン用スーパーグループ化部171は、対応するパターン用スーパーグループ取得部170からスーパーグループを受け取り、スーパーグループをグループに分割する。
パターン用復号部172は、複数設けられ、パターン用逆スーパーグループ化部171それぞれに対応して1つずつ設けられる。パターン用復号部172は、パターン用復号バッファ176に格納されるグループを構成するシンボルを、パターン用復号バッファ176毎に定められたビット数で復号する。
パターン復元部174は、複数設けられ、パターン用復号部172それぞれに対応して1つずつ設けられる。パターン復元部174は、パターン用復号部172からグループを受け取り、当該グループのビットパターンを、符号化装置10bの非ゼロシンボル抽出部114により0値を示すシンボルが削除される前のグループのビットパターンに復元する。例えば、シンボル(1,0,1,0)が符号化装置10bにより符号化された場合、非ゼロシンボル抽出部114により0値を示すシンボルが削除され、符号化後の当該グループは(1,1)となっている。受け取ったグループ(1,1)に0値を付加し、元のビットパターン(1,0,1,0)に復元する。各パターン用符号化バッファ176には常に復元すべきビットパターンが同一であるグループが格納されるため、ビットパターンを復元するために0値を付加する位置は、パターン復元部174と非ゼロシンボル抽出部114との対応関係に基づいて、パターン復元バッファ176毎に定められる。
パターン用復号バッファ176は、複数設けられ、パターン復元部174それぞれに対応して1つずつ設けられる。復号バッファ160が符号化バッファ58に対応しているのと同じように、パターン用復号バッファ172とパターン用符号化バッファ112も対応しており、パターン用復号バッファ172は符号化バッファ58と同じ数だけ設けられる。すなわち、パターン用符号化バッファ1に格納されていたグループはパターン用復号バッファ1に格納され、パターン用符号化バッファ2に格納されていたグループはパターン用復号バッファ2に格納される。
図15では、パターン用復号部172、パターン復元部174、及びパターン用復号バッファ176は別々の機能ブロックとして示されているが、パターン用復号部172及びパターン復元部174の機能をパターン用復号バッファ176の機能として含めても良い。すなわち、復号及びパターン復元をパターン用復号バッファ176において行うようにしても良い。
図16は、符号化装置10cに対応する復号装置24cの機能構成を示すブロック図である。復号装置24cは、エントロピー符号取得部180、エントロピー符号復号部182、及びエントロピー符号用復号バッファ184を含む機能構成となっている。復号装置24cと復号装置24aで同一構成要件には同一符号が付されており、復号装置24aと同じ機能構成については説明を省略する。
復号装置24cのバッファID取得部152が取得するバッファIDには、各グループの格納先である符号化バッファ58及びエントロピー符号化バッファ142を識別する識別情報が含まれる。
エントロピー符号取得部180は、エントロピー符号化されたシンボルから構成されるグループを取得する。スーパーグループ取得部150とエントロピー符号取得部180とを同一の機能ブロックとすることも可能である。この場合、取得したグループがスーパーグループであるか、エントロピー符号化されたシンボルから構成されるグループであるかの識別は、グループに含まれているシンボルのビット数が同一であるか否か等に基づいて行う。
エントロピー符号復号部182は、エントロピー符号取得部180からグループを受け取り、グループを構成するエントロピー符号化されたシンボルを復号する。
エントロピー符号用復号バッファ184は、復号されたシンボルから構成されるグループをエントロピー符号復号部182から受け取り、格納する。
グループ取得部164は、バッファIDに含まれる識別情報に基づいて、複数の復号バッファ162及びエントロピー符号用バッファ184から順番にグループを取得し、取得したグループを構成するシンボルを出力する。