(57)【要約】【課題】ハフマン符号の復号処理にあたり、シンボルの記憶箇所を指定するためのアドレスを生成する必要がある。【解決手段】ハフマン復号器には、シンボルを格納するための復号データ格納レジスタが備えられている。そして、ハフマン符号化情報に基づいて符号長及び符号長内位置をリスト化した復号データＩＤテーブルを復号データ格納レジスタ上に作成し（Ｓ１２）、この復号データ格納レジスタの対応箇所に対応するシンボルを格納する（Ｓ１４）。入力したハフマン符号に対しては、符号長と符号長内位置を算出する（Ｓ２０）。ハフマン復号器に対してこの符号長と符号長内位置、すなわち復号データＩＤテーブル上の位置を与えると、直ちに、復号データであるシンボルを取得することができる（Ｓ２２）。【選択図】図４
2005094411.tif 000002
【特許請求の範囲】
【請求項１】
入力されたハフマン符号を対応するシンボルで復号化するハフマン復号器であって、
レジスタと、
シンボル群をハフマン符号化したハフマン符号化情報に基づいて、各ハフマン符号に対応するシンボルを前記レジスタに格納する格納位置を決定し、その格納位置に当該シンボルを格納する格納手段と、
入力されたハフマン符号に対応するシンボルの前記格納位置を、前記ハフマン符号化情報を用いて算出する位置算出手段と、
を備え、
前記レジスタは、算出された格納位置を与えられることにより、対応するシンボルを出力する、ことを特徴とするハフマン復号器。
【請求項２】
請求項１に記載のハフマン復号器において、
前記格納位置は、ハフマン符号の値順に設定される、ことを特徴とするハフマン復号器。
【請求項３】
請求項１に記載のハフマン復号器において、
前記格納手段は、前記格納位置を、ハフマン符号の符号長とその符号長内での位置とに基づいて決定し、
前記位置算出手段は、
前記入力されたハフマン符号の符号長を判定する符号長判定手段と、
前記入力されたハフマン符号の前記判定された符号長内での位置を特定する符号長内位置特定手段と、
を含み、
前記レジスタは、判定された符号長と特定された符号長内での位置とを与えられることにより、対応するシンボルを出力する、ことを特徴とするハフマン復号器。
【請求項４】
請求項３に記載のハフマン復号器において、
前記格納位置は、ハフマン符号の符号長の順に設定される、ことを特徴とするハフマン復号器。
【請求項５】
請求項３に記載のハフマン復号器において、
前記判定された符号長内での位置は、ハフマン符号の値順に設定される、ことを特徴とするハフマン復号器。
【請求項６】
レジスタを備えたハフマン復号器において実行される方法であって、
シンボル群をハフマン符号化したハフマン符号化情報に基づいて、各ハフマン符号に対応するシンボルを前記レジスタに格納する格納位置を決定し、その格納位置に当該シンボルを格納するステップと、
入力されたハフマン符号に対応するシンボルの前記格納位置を、前記ハフマン符号化情報を用いて算出するステップと、
算出された格納位置を与えることにより、前記レジスタから対応するシンボルを取得するステップと、を含む、ことを特徴とする方法。
【請求項７】
レジスタを備えたハフマン復号器において実行されるプログラムであって、
シンボル群をハフマン符号化したハフマン符号化情報に基づいて、各ハフマン符号に対応するシンボルを前記レジスタに格納する格納位置を決定し、その格納位置に当該シンボルを格納するモジュールと、
入力されたハフマン符号に対応するシンボルの前記格納位置を、前記ハフマン符号化情報を用いて算出するモジュールと、
算出された格納位置を与えることにより、前記レジスタから対応するシンボルを取得するモジュールと、を含む、ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハフマン符号の復号処理、特に高速に復号処理を行う技術に関する。
【背景技術】
【０００２】
静止画像のデータ圧縮技術であるＪＰＥＧ（Joint Photographic Experts Group）や、動画像のデータ圧縮技術であるＭＰＥＧ（Motion Picture Experts Group）などにおいては、ハフマン符号化が行われている。ハフマン符号化は、エントロピー符号化の一種であり、出現頻度の高いシンボルに対しては符号長の短いハフマン符号を割当て、出現頻度の低いシンボルに対しては符号長の長いハフマン符号を割当てることにより、平均符号長を短くしてデータ量を圧縮するものである。符号化されたデータは、ハフマン符号を対応するシンボルに置き直すことで復号化される。
【０００３】
特許文献１には、復号化を行うハフマン復号器において、シンボルをメモリから読み出すためのアドレス値を、初期値とオフセット値に分解して扱うことで効率的に記憶する技術が開示されている。
【０００４】
【特許文献１】特開２０００−２４４７５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１のように、シンボルをメモリに記憶した場合には、メモリアドレスの生成が不可欠であり、処理に時間を要してしまう。
【０００６】
本発明の目的は、ハフマン符号の復号処理を高速に行う技術を確立する点にある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のハフマン復号器は、入力されたハフマン符号を対応するシンボルで復号化するハフマン復号器であって、レジスタと、シンボル群をハフマン符号化したハフマン符号化情報に基づいて、各ハフマン符号に対応するシンボルを前記レジスタに格納する格納位置を決定し、その格納位置に当該シンボルを格納する格納手段と、入力されたハフマン符号に対応するシンボルの前記格納位置を、前記ハフマン符号化情報を用いて算出する位置算出手段と、を備え、前記レジスタは、算出された格納位置を与えられることにより、対応するシンボルを出力する。
【０００８】
ハフマン復号器は、ハフマン復号のために設けられたレジスタを備える。レジスタとは、ハフマン復号を行う演算部の内部に設けられた記憶素子である。レジスタ長、すなわちレジスタが記憶できる情報量は、扱うシンボル数及びその大きさに基づいて設定すればよい。レジスタ長を超える量のシンボルを扱うような場合には、適宜、汎用レジスタやメモリ等の別の記憶手段を利用してもよい。
【０００９】
ハフマン符号化情報は、ハフマン符号とシンボルを対応づける情報を含んでいる。そして、格納手段は、このハフマン符号化情報に基づいて、シンボルのレジスタにおける格納位置を決定し、格納を実施する。すなわち、レジスタには、各格納位置に対応するシンボルが配置されたテーブルが設定されたとみなすことができる。位置算出手段は、入力されたハフマン符号に対応するシンボルがこのテーブル上のどこに格納されたかを、ハフマン符号化情報に基づいて算出する。そして、レジスタは、この格納位置を与えられることにより、対応するシンボルを出力する。
【００１０】
この構成によれば、格納位置はハフマン符号化情報に基づいて算出され、この格納位置から直ちにシンボルが求められる。つまり、メモリにシンボルを記憶させた場合に必要であったメモリのアドレス値を求める過程を省略することができ、ハフマン復号化を高速に行うことができる。
【００１１】
望ましくは、本発明のハフマン復号器において、前記格納位置は、ハフマン符号の値順に設定される。すなわち、格納位置は、ハフマン符号の値の小さい順又は大きい順に設定される。このため、位置算出手段は、入力されたハフマン符号の大きさが全体の中で何番目であるかを評価することで、格納位置を算出することができる。
【００１２】
望ましくは、本発明のハフマン復号器において、前記格納手段は、前記格納位置を、ハフマン符号の符号長とその符号長内での位置とに基づいて決定し、前記位置算出手段は、前記入力されたハフマン符号の符号長を判定する符号長判定手段と、前記入力されたハフマン符号の前記判定された符号長内での位置を特定する符号長内位置特定手段と、を含み、前記レジスタは、判定された符号長と特定された符号長内での位置とを与えられることにより、対応するシンボルを出力する。このように、格納位置を階層的に定め算出することにより、階層構造が無い場合に比べ、高速に格納位置を求めることができる。なお、ハフマン符号化情報は、一般に、各符号長をもつハフマン符号の個数についての情報を備えており、位置特定手段はこの情報を用いることができる。また、この個数についての情報は、ハフマン符号とシンボルを対応づける情報とに基づいて作成することも可能である。
【００１３】
望ましくは、本発明のハフマン復号器において、前記格納位置は、ハフマン符号の符号長の順に設定される。また、望ましくは、本発明のハフマン復号器において、前記判定された符号長内での位置は、ハフマン符号の値順に設定される。符号長の順とは符号長の小さい順又は大きい順であり、ハフマン符号の値順とは値の小さい順又は大きい順である。こうした順番を特定することにより、格納位置を求めることができる。
【００１４】
本発明の方法は、レジスタを備えたハフマン復号器において実行される方法であって、シンボル群をハフマン符号化したハフマン符号化情報に基づいて、各ハフマン符号に対応するシンボルを前記レジスタに格納する格納位置を決定し、その格納位置に当該シンボルを格納するステップと、入力されたハフマン符号に対応するシンボルの前記格納位置を、前記ハフマン符号化情報を用いて算出するステップと、算出された格納位置を与えることにより、前記レジスタから対応するシンボルを取得するステップと、を含む。
【００１５】
本発明のプログラムは、レジスタを備えたハフマン復号器において実行されるプログラムであって、シンボル群をハフマン符号化したハフマン符号化情報に基づいて、各ハフマン符号に対応するシンボルを前記レジスタに格納する格納位置を決定し、その格納位置に当該シンボルを格納するモジュールと、入力されたハフマン符号に対応するシンボルの前記格納位置を、前記ハフマン符号化情報を用いて算出するモジュールと、算出された格納位置を与えることにより、前記レジスタから対応するシンボルを取得するモジュールと、を含む。
【発明を実施するための最良の形態】
【００１６】
以下に本発明の最良の実施の形態を図面を用いて説明する。
【００１７】
図１は、本実施の形態に係るハフマン復号器１０の構成と信号入出力を示した概略ブロック図である。ハフマン復号器１０は、ハフマン符号を対応するシンボルに変換するものであり、例えば、ハフマン復号化を専用に行う回路を含むＡＳＩＣ（特定用途向け集積回路）として、あるいは、こうした回路を制御する構成を含めたシステムとして実現可能である。
【００１８】
ハフマン復号器１０は、ハフマン符号の符号長の判定や、その符号長内における位置を特定するための基準値を作成・保持する判定基準値保持部２０を備えている。具体的には、加算器２１，２３，．．．，２５，２７と、入力値を２倍にする２倍演算器２２，２４，．．．，２６を備えている。そして、ＪＰＥＧ等に用いられるハフマン符号においては、ｎ−１ビット符号長の最大値を２倍した値がｎビット符号長の符号長の最小値となるという性質と、同一符号長のハフマン符号はそのビット符号長の最小値から始まって値が１ずつ増加するいう特性があることに基づいて、基準となる値を生成・保持している。
【００１９】
加算器２１には、１ビット符号長のハフマン符号の最小値を表す初期値信号３０と、１ビットの符号長をもつシンボルの数（対応するハフマン符号の数に等しい）を表す１ビット符号長シンボル数信号３２とが入力され、加算される。出力される値は、１ビットの符号長をもつハフマン符号の最大値である。２倍演算器２２は、加算器２１の出力を入力し、２倍することで、２ビットの符号長のハフマン符号の最小値を出力する。同様にして、加算器２３は、２倍演算器２２が出力した２ビットの符号長のハフマン符号の最小値と、２ビット符号長シンボル数信号３４とを入力して加算し、２ビット符号長をもつハフマン符号の最大値を出力する。また、２倍演算器２４は、加算器２３の出力を入力し、２倍することで、３ビットの符号等のハフマン符号の最小値を出力する。この過程を最大の符号長であるｎビットまで繰り返すことにより、判定基準値が準備される。なお、ここで用いた初期値信号３０と、１，２，．．．，ｎ−１，ｎビット符号長シンボル信号数３２、３４，．．．，３６，３８は、ＪＰＥＧ等においては、ヘッダ部分に付加されるハフマン符号化情報から取得することができる。
【００２０】
判定基準値保持部２０によって得られた各値は、ハフマン符号を入力値を表すハフマン符号信号４０とあわせて演算に処せられ、符号長の判定と、その符号長における位置の特定に用いられる。符号長判定部５０，５２，．．．．、５４，５６は、それぞれ、ハフマン符号信号が判定基準値保持部２０がもつ１，２，．．．，ｎ−１，ｎビット符号長のハフマン符号の最大値よりも小さい場合にアクティブとなる１，２，．．．，ｎ−１，ｎビット符号長判定信号６０，６２，．．．，６４，６６を出力する。
【００２１】
出力されたこれらの信号は、符号長決定部７０に入力される。この符号長決定部７０は、アクティブになった符号長判定信号を検出し、その中で最も小さい符号長の判定信号に対する符号長を符号長信号８０として出力する。出力された符号長信号８０は、ハフマン符号信号４０が表すハフマン符号の符号長を与える。
【００２２】
一方、位置判定部９０，９２，．．．，９４は、ハフマン符号信号４０がそれぞれ２，３，．．．，ｎビット符号長である場合にその符号長における位置を求める減算器からなる。例えば、位置判定部９０は、判定基準値保持部２０が与える２ビット符号長のハフマン符号の最小値をハフマン符号信号４０から減じることにより、そのハフマン符号が２ビットである場合における２ビット中での位置を特定し、２ビット符号長位置特定信号１０２として出力する。すなわち、位置特定信号は、この２ビット符号長の中で最小のハフマン符号に対しては０となり、次に小さなハフマン符号に対しては１となるというように、ハフマン符号の小さい順に０から１ずつ増加する値となる。
【００２３】
同様にして、位置判定部９２，．．．，９４は、ハフマン符号が３，．．．，ｎビットである場合における当該ビット中での位置を特定し、３，．．．，ｎビット符号長位置特定信号１０４，．．．，１０６として出力する。これらの出力値は、ハフマン符号信号４０自身によって与えられ、ハフマン符号が１ビットである場合の位置を表す１ビット符号長位置特定信号１００とともに、符号長内位置特定部１１０に入力される。符号長内位置特定部１１０は、符号長信号８０によって与えられる符号長に対応する位置特定信号を選択することで、その符号長内における位置を特定し、符号長内位置特定信号１２０として出力する。
【００２４】
復号データＩＤテーブル１３０は、復号データ格納レジスタ１３２上に構成されたテーブルであり、復号データ格納レジスタ１３２に格納されているシンボルをハフマン符号と対応づけるためのテーブルである。この復号データＩＤテーブル１３０には、符号長信号８０と符号長内位置特定信号１２０が入力され、これにより、このハフマン信号の格納位置が決定される。復号データ格納レジスタ１３２は、復号データＩＤテーブル１３０で特定された格納位置に格納されたシンボルを復号データ１４０として出力する。すなわち、復号データ１４０は、入力されたハフマン符号信号４０が復号された結果を表している。
【００２５】
次に、図２と図３を用いて、復号データＩＤテーブル１３０及び復号データ格納レジスタ１３２について説明する。図２は、各符号長において何個のハフマン符号が使われているかという情報の一例を説明のために示した表である。この情報は、一般的にはハフマン符号化されたデータ自身がハフマン符号化情報として保持している。符号長欄１５０には、１ビットから１６ビットまでの各符号長、即ち、２進法表現した場合の符号の桁数が示されている。そして、符号数欄１５２には、それらの符号長に対応するハフマン符号の個数が示されている。例えば、符号長が１ビットである符号の個数は０個であり、２ビットである符号の個数は２個、３ビットである符号の個数は１個である。このようにハフマン符号化情報に基づくことにより、最長の１６ビットに属する１２５個の符号にいたるまでの合計１６２個の符号に関し、符号長分布を把握することができる。
【００２６】
図３は、この図２の分布をなすハフマン符号があった場合に構成される復号データＩＤテーブル１３０及び復号データ格納レジスタ１３２の構成を概念的に示している。復号データＩＤテーブル１３０は、符号長がいくつであるかを表す符号長欄１３４と、各符号長の中におけるハフマン符号を値が小さいものから０，１，２，．．．のように番号づけた位置情報欄１３６とからなる。符号長欄１３４における符号長は、符号長信号８０として出力される値に対応しており、位置情報欄１３６における位置情報は、符号長内位置特定信号１２０に対応している。符号長欄１３４の最初には、最短の符号長である２ビットのハフマン符号が割り当てられており、その位置情報欄１３６には２ビットの二つのハフマン符号のうち小さい方に０を、大きい方に１を与えている。続いて、符号長欄１３４には３ビットのハフマン符号が割り当てられ、この位置情報欄１３６には３ビット長をもつ１個のハフマン符号が位置情報０を与えられている。このようにして全１６２個の符号が符号長と位置情報を与えられて識別され登録されている。この復号データＩＤテーブル１３０は、図２に示した情報を基に直ちに作成することができる。すなわち、一般には、ハフマン符号化されたデータ自身がもつハフマン符号化情報に基づいて直ちに作成することができる。
【００２７】
復号データ格納レジスタ１３２は、復号データ即ちシンボルを格納したレジスタであり、復号データＩＤテーブル１３０と対応づけられて構成されている。そして、この復号データ格納レジスタ１３２には、復号データＩＤテーブル１３０の符号長と位置情報によって特定される箇所に、そのハフマン符号と１対１に対応するシンボルが記憶されている。例えば、２ビットの符号長をもち位置情報が０番であるハフマン符号の対応箇所には対応するシンボル１が格納され、２ビットの符号長をもち位置情報が１番であるハフマン符号の対応箇所には対応するシンボル２が格納される。こうして、１６２のハフマン符号に対応する１６２個のシンボルが、復号データＩＤテーブル１３０上によって特定される格納箇所に格納される。そして、この復号データＩＤテーブル１３０を備えた復号データ格納レジスタ１３２は、復号データＩＤテーブル１３０上の位置を特定することにより、すなわち、符号長及び位置情報を与えることにより格納されたシンボルを出力できるように構成されている。したがって、復号データ格納レジスタ１３２自体が、復号データＩＤテーブル１３０を構成しているとみなすことができる。
【００２８】
ここで、図４のフローチャートを用いて、ハフマン復号器１０を用いたハフマン復号過程を説明する。ＪＰＥＧファイルのようにハフマン符号化されたデータが入力された場合、ハフマン復号器１０は、まず、この符号化の詳細を示すハフマン符号化情報を入力する（Ｓ１０）。そして、このハフマン符号化情報に基づいて、復号データＩＤテーブル１３０を復号データ格納レジスタ１３２上に作成し（Ｓ１２）、この復号データ格納レジスタ１３２の対応箇所に対応するシンボルを格納する（Ｓ１４）。また、判定基準値保持部２０において、ハフマン符号化情報をもとに基準値が計算され、保持される（Ｓ１６）。
【００２９】
続いて、ハフマン符号が順次入力される（Ｓ１８）。ハフマン符号に対しては、符号長判定部５０，５２，．．．，５４，５６及び符号長決定部７０が符号長の判定を行う。また、この符号長の判定結果と、位置判定部９０，９２，．．．，９４の算出結果に基づいて、符号長内位置特定部１１０が、符号長内における位置を特定する。これにより、入力されたハフマン符号の符号長とその符号長内での位置、即ち、復号データＩＤテーブル１３０上での位置が特定される（Ｓ２０）。そして、復号データ格納レジスタ１３２の特定された箇所から、ステップＳ１４で格納されたシンボルが直ちに取り出される（Ｓ２２）。すなわち、入力されたハフマン符号に対する復号が行われる。次に処理するハフマン符号がある場合には、ステップＳ１８，Ｓ２０，Ｓ２２の過程が繰り返される（Ｓ２４）。
【図面の簡単な説明】
【００３０】
【図１】本実施の形態に係るハフマン復号器を説明するブロック図である。
【図２】各符号長に属する符号数の例を説明する表である。
【図３】復号データＩＤテーブルと復号データ格納レジスタの概要を説明する表である。
【図４】ハフマン復号化の過程を説明するフローチャートである。
【符号の説明】
【００３１】
１０  ハフマン復号器、２０  判定基準値保持部、２１，２３，２５  加算器、２２，２４，２６  倍演算器、４０  ハフマン符号信号、５０，５２，５４，５６  符号長判定部、７０  符号長決定部、９０，９２，９４  位置判定部、１１０  符号長内位置特定部、１３０  復号データＩＤテーブル、１３２  復号データ格納レジスタ。
【図１】
2005094411.tif 000003
【図２】
2005094411.tif 000004
【図３】
2005094411.tif 000005
【図４】
2005094411.tif 000006