(57)【特許請求の範囲】
【請求項１】
１つのハフマン符号および１つのラン／グループ番号を１つの組とし、その組を発生頻度順に並べ、発生頻度が高い複数個の組を初期値として符号記憶部に記憶し、
符号書き換え制御部に所定のカウント値を設定し、
符号記憶部に記憶された複数のハフマン符号と入力される可変長符号とを比較し、
前記比較の結果、一致した場合、該当ラン／グループ番号に基づいて画像復号を行い、
前記比較の結果、一致しない場合、該当可変長符号を発生頻度に変換して前記発生頻度に基づいて変換されたラン／グループ番号に基づいて画像復号を行うとともに、該当可変長符号を前記符号記憶部に記憶し、符号書き換え制御部に備えたカウンタのカウントアップを行い、
前記カウントアップの結果、前記所定のカウント値に達した場合、記憶されている該当可変長符号および対応したラン／グループ番号により前記初期値を書き換えることを特徴とする可変長符号伸張方法。
【請求項２】
前記比較の結果、一致した場合、該当可変長符号およびラン／グループ番号を前記１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値の発生頻度の最も高い記憶位置に移動させ、前記発生頻度の最も高い記憶位置から、該当可変長符号およびラン／グループ番号よりも１つ発生頻度の高い記憶位置までに記憶されていた１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値を順次発生頻度の１つ低い記憶位置に移動させることを特徴とする請求項１記載の可変長符号伸張方法。
【請求項３】
１つのハフマン符号および１つのラン／グループ番号を１つの組とし、その組を発生頻度順に並べ、発生頻度が高い複数個の組を初期値として符号記憶部に記憶し、
符号書き換え制御部に所定のカウント値を設定し、
符号記憶部に記憶された複数のハフマン符号と入力される可変長符号とを比較し、
前記比較の結果、一致した場合、該当ラン／グループ番号に基づいて画像復号を行い、
前記比較の結果、一致しない場合、該当可変長符号を発生頻度に変換して前記発生頻度に基づいて変換されたラン／グループ番号に基づいて画像復号を行うとともに、該当可変長符号を前記符号記憶部に記憶し、符号書き換え制御部に備えたカウンタのカウントアップを行い、
外部からの信号に基づいて、記憶されており且つ前記所定のカウント値以上である該当可変長符号および対応したラン／グループ番号により前記初期値を一括して書き換えることを特徴とする可変長符号伸張方法。
【請求項４】
カウント値が大きい該当可変長符号および対応したラン／グループ番号ほど前記初期値の発生頻度の高い記憶位置に書き込むことで、前記初期値の一括書き換えを行なうことを特徴とする請求項３記載の可変長符号伸長方法。
【請求項５】
入力される可変長符号をラン／グループ番号に変換する可変長復号化処理部を有し、前記ラン／グループ番号に基づいて画像復号を行なう可変長符号伸長装置であって、
前記可変長復号化処理部は、
入力される前記可変長符号を発生頻度に変換する発生頻度変換部と、
ハフマン符号およびラン／グループ番号からなる初期値が発生頻度の高い順に複数設定され、設定された複数のハフマン符号と入力される前記可変長符号とを比較して、比較の結果一致したか否かを示すヒット信号と、一致した該当ラン／グループ番号とを出力する符号記憶部と、
所定のカウント値が設定され、前記符号記憶部からのヒット信号が不一致を示した場合、該当可変長符号を記憶してカウンタのカウントアップを行ない、カウントアップの結果、前記所定のカウント値に達した該当可変長符号および対応するラン／グループ番号を前記符号記憶部に出力して、前記初期値の書き換えを行なわせる符号書換え制御部と、
前記符号記憶部からのヒット信号が一致を示す場合、前記符号記憶部からの該当ラン／グループ番号を選択出力し、前記符号記憶部からのヒット信号が不一致を示す場合、前記発生頻度変換部からの発生頻度が符号テーブルを介して変換されたラン／グループ番号を選択出力する出力選択部とを備えたことを特徴とする可変長符号伸長装置。
【請求項６】
前記符号記憶部は、前記比較の結果、一致した場合、該当可変長符号およびラン／グループ番号を前記１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値の発生頻度の最も高い記憶位置に移動させ、前記発生頻度の最も高い記憶位置から、該当可変長符号およびラン／グループ番号よりも１つ発生頻度の高い記憶位置までに記憶されていた１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値を順次発生頻度の１つ低い記憶位置に移動させることを特徴とする請求項５記載の可変長符号伸張装置。
【請求項７】
入力される可変長符号をラン／グループ番号に変換する可変長復号化処理部を有し、前記ラン／グループ番号に基づいて画像復号を行なう可変長符号伸長装置であって、
前記可変長復号化処理部は、
入力される前記可変長符号を発生頻度に変換する発生頻度変換部と、
ハフマン符号およびラン／グループ番号からなる初期値が発生頻度の高い順に複数設定され、設定された複数のハフマン符号と入力される前記可変長符号とを比較して、比較の結果一致したか否かを示すヒット信号と、一致した該当ラン／グループ番号とを出力する符号記憶部と、
所定のカウント値が設定され、前記符号記憶部からのヒット信号が不一致を示した場合、該当可変長符号を記憶してカウンタのカウントアップを行ない、外部からの信号に基づいて、記憶されており且つ前記所定のカウント値以上である全ての該当可変長符号および対応したラン／グループ番号を前記符号記憶部に出力して、前記初期値の一括書き換えを行なわせる符号書換え制御部と、
前記符号記憶部からのヒット信号が一致を示す場合、前記符号記憶部からの該当ラン／グループ番号を選択出力し、前記符号記憶部からのヒット信号が不一致を示す場合、前記発生頻度変換部からの発生頻度が符号テーブルを介して変換されたラン／グループ番号を選択出力する出力選択部とを備えたことを特徴とする可変長符号伸長装置。
【請求項８】
前記符号記憶部は、カウント値が大きい該当可変長符号および対応したラン／グループ番号ほど前記初期値の発生頻度の高い記憶位置に書き込むことで、前記初期値の一括書き換えを行なうことを特徴とする請求項７記載の可変長符号伸長装置。
【請求項９】
可変長符号伸長装置は、前記前記符号記憶部と前記符号書換え制御部とからなる書換え型符号記憶部を複数個備えたことを特徴とする請求項５または７記載の可変長符号伸長装置。
【請求項１０】
請求項１または３記載の可変長符号伸長方法により画像復号を行なった際に、復号時の符号発生情報を符号テーブルに反映し、前記符号テーブルを用いて復号した画像データを再度符号化することを特徴とする可変長符号圧縮伸長方法。
【請求項１１】
請求項５または７記載の可変長符号伸長装置の前記可変長復号化処理部と、
ラン／グループ番号をどの符号に割当てるかの情報を有し、前記可変長復号化処理部からのラン／グループ番号に基づいて画像復号された際に、前記可変長復号化処理部からの復号時の符号発生情報が反映される符号テーブルと、
画像復号データを一旦格納し、画像符号化を行なうデータとして出力するデータバッファとを備え、
前記符号テーブルを用いてデータバッファからの出力データを再度符号化することを特徴とする可変長符号圧縮伸長装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データを圧縮、伸長するための可変長符号圧縮伸長方式及びその装置に関する。
【０００２】
【従来の技術】
自然画像に対する高能率な圧縮伸長方式の一つとして、国際標準規格であるＪＰＥＧがある。以下に、ＪＰＥＧに使用される従来の可変長符号圧縮伸長装置について説明する。
【０００３】
図１５は、従来の可変長符号圧縮伸長装置のブロック図である。可変長符号圧縮伸長装置１０１は、画像データが入力される画像入力端子２と、８×８画素で構成される画像ブロックの２次元ＤＣＴ変換を行うＤＣＴ変換部３と、ＤＣＴ係数に対して線形量子化を行う量子化器４と、量子化されたデータに対しランレングス符号化を行うランレングス符号化部５と、ランレングス符号化されたラン／係数のグループ化を行うグループ番号作成部６と、ラン／グループ番号をどの符号に割当てるかの情報を持つ符号テーブル１０５と、符号テーブルの値に基づきラン／グループ番号に可変長符号を割当てる可変長符号化処理部７と、符号データが順次出力される符号データ出力端子８と、符号データが順次入力される符号データ入力端子９と、入力された符号データを符号テーブルに基づき可変長符号の復号化を行う可変長復号化処理部１１０と、可変長復号されたラン／グループ番号のグループ番号を係数化する係数作成部１１と、ラン／係数をランレングス復号するランレングス復号化部１２と、量子化係数の逆量子化を行う逆量子化器１３と、ＤＣＴ係数に対して逆ＤＣＴ変換を施し画像ブロックの復元を行う逆ＤＣＴ変換部１４と、復元画像データを出力する画像出力端子１５と、外部より符号テーブル１０５に書き込みを行う外部入力端子１６とで構成される。
【０００４】
以下、ＪＰＥＧ方式における画像圧縮の動作の概略について説明する。
【０００５】
図１６に、従来の圧縮処理のフローチャートを示す。圧縮においては、外部入力端子１６から、ランレングス符号化データを可変長符号化に変換するための符号テーブル１０５に変換値を書き込む。図１７に符号テーブル例を示す。符号テーブル１０５には、アドレスが、ランレングス符号化データであるラン／グループ番号で、そのデータとしては、画像の符号化時にどのラン／グループ番号が一番多く発生するかを考え、その発生頻度が高いと思われる順番に並べた際の発生頻度が割当てられる。その場合、最も発生頻度が高いものから頻度０、１、２と割当てる。この情報は、伸長処理時も必要であり、ＪＰＥＧにおいてはマーカデータとして圧縮データに含める。
【０００６】
以上の設定が完了した後に、画像入力端子２からデータを入力する。入力は８×８画素のブロック単位で行われ、その６４画素がＤＣＴ変換部３において６４個のＤＣＴ係数に変換される。ＤＣＴ係数は、量子化器４において線形量子化される。図１８に、量子化されたＤＣＴ係数例を示す。この図において、特に左上の１係数をＤＣ成分と呼び、残る６３係数をＡＣ成分と呼ぶ。
【０００７】
次に、ランレングス符号化部６では、この６４個のデータに対して符号化を行う。その際、データは、図１９に示すジグザグ順に入力される。最初のＤＣ成分に対してはランレングス符号化を行わず、そのまま出力する。残る６３個のデータに対してランレングス符号化を行うが、その方法は非０係数が出現するまで「０」の数を数え、出現と同時に「０」のカウント数と非０係数をまとめて出力する。図２０にランレングス符号化例を示す。図２０において、最初のデータはＤＣ成分なので、そのまま出力する。次に、図１９に示すジグザグ順にデータを読むと、「０」が２つ続いた後「３」が出現している。この場合、「２／３」（「０」の数／非０係数値）がランレングス符号となる。次に、「０」が２０個続き、その後「１０」が出現している。連続する「０」が１６個以上続く場合、最初の１６個をＺＲＬ符号とし、その符号は「Ｆ／０」で表され、残る４個の「０」と「１０」が「４／１０」で表される符号として出力される。次に、残る３９個の係数すべてが「０」となっており、この場合を特にＥＯＢと呼び、符号は「０／０」とされている。このようにして、６４個のデータは、０／１５、２／３、Ｆ／０、４／１０、０／０の５つの符号に変換される。
【０００８】
以上のようにランレングス符号化が行われ、その「０」の数は「０」の最大個数が１５個であることから４ｂｉｔで表される。ランレングス符号化されたラン／係数をグループ番号作成部６においてグループ化する。係数はＪＰＥＧの場合１１ｂｉｔであり、どのようにグループ化を行うのか図２１に示す。図２１に示す通り、１１ｂｉｔの係数が４ｂｉｔのグループ番号に割当てられる。以上のようにランレングス符号化されたデータを可変長符号化処理部７に入力する。
【０００９】
図２２に、従来の可変長符号化処理部７の構成例を示す。「０」の数４ｂｉｔとグループ番号４ｂｉｔを併せた計８ｂｉｔのラン／グループ番号（Ｒ／Ｇｉｎ）を、図１７に示す符号テーブル１０５に入力し、発生頻度（ＧＦ）を得る。この発生頻度と可変長符号化処理部７に設定された初期値から可変長符号（ＨＣｏｕｔ）を得る。初期値として、各符号長の最小符号であるＭｉｎコードと、そのＭｉｎコードの発生頻度を記憶する。その初期値の例を図２３に示す。初期値作成のためには、各符号長の符号個数が必要となるが、外部で初期値を作成し入力しても構わないし、各符号長の符号個数を符号テーブル１０５に入力して、内部で作成しても構わない。
【００１０】
ハフマン符号は
（当該発生頻度−Ｍｉｎコードの発生頻度＋Ｍｉｎコード）…（式１）
の演算を各符号長で行い、該当する符号長での演算結果を選択することにより得られる。例を挙げて説明すると、ラン／グループ番号が「４／１」の場合、その発生頻度は図１７の符号テーブルより「１０」となる。発生頻度「１０」は、図２３の初期値例において、各符号長の最小符号の発生頻度の項より６ｂｉｔのハフマン符号に該当することがわかる。そこで６ｂｉｔにおける（式１）に着目すると、その演算は、当該発生頻度「１０」（２進数で「００１０１０」）、図２３よりＭｉｎコードの発生頻度「９」（２進数で「００１００１」）、Ｍｉｎコードが「１１１０１０」であるので、
「００１０１０」−「００１００１」＋「１１１０１０」＝１１１０１１
となり、６ｂｉｔのハフマン符号「１１１０１１」が得られる。符号長検出前にこの演算を各符号長で行い、各演算結果を符号長で選択することで高速化を図っている。得られたハフマン符号を符号データ出力端子８より出力する。
【００１１】
図２４に、従来の伸長時のフローチャートを示す。伸長においては、符号データ入力端子９から圧縮データが入力され、その中のマーカデータに符号テーブル情報が含まれており、符号テーブル１０５にその読み取った値を書き込む。伸長時に使用する符号テーブル例は、図１７に示す符号化時のテーブルと同一であるが、その符号テーブルはアドレスが発生頻度で、データがラン／グループ番号と逆になる。また、伸長時も、初期値を可変長復号化処理部１１０に設定する。図２５に可変長復号化処理部１１０の構成例を示す。設定する初期値は圧縮時と同じであり、伸長時においては符号長毎に、
（入力ハフマン符号−Ｍｉｎコード＋Ｍｉｎコードの発生頻度）…（式２）
の演算を行うことで、入力ハフマン符号の発生頻度を得る。この発生頻度を符号テーブル１０５に入力することでラン／グループ番号を得る。また、短符号復号化部１１０ｃ（図２５）に発生頻度が高いと予想される短い符号を記憶させておけば、その符号発生時には符号テーブル１０５を介すことなく出力データを得ることができる。グループ番号は係数作成部１１において係数に戻され、ラン／係数を得る。得られたラン／係数はランレングス復号化部１２に入力され、０と係数に分解され出力される。その後逆量子化部１３において係数の逆量子化が行われ、逆ＤＣＴ変換部１４において６４個の係数の逆ＤＣＴが行われ、６４個の８×８画素単位毎に外部入力端子１５より復元画像データが出力される。
【００１２】
【発明が解決しようとする課題】
上述のように、従来の可変長符号伸長方式では、どの符号に対しても符号テーブルアクセスが必要となり、処理効率が悪い。また、図２５に示すように、発生頻度が高いと予想される短い符号専用の復号回路（短符号復号化部１１０ｃ）を設けたとしても、実際に発生頻度が高い符号が出現するかどうかは画像に依存し、どの画像に対しても効率が良い復号化装置であるとは言えない。
【００１３】
本発明は、かかる問題点に鑑みてなされたものであり、その目的は、入力符号長に関わらず符号化効率が低下しない可変長符号伸長方法および装置、およびそれにより得られる符号発生情報を用いて符号化効率の悪い符号に対して最適化を行なう可変長符号圧縮伸長方法および装置を提供することにある。
【００１４】
【課題を解決するための手段】
前記の目的を達成するため、本発明に係る第１の可変長符号伸長方法は、１つのハフマン符号および１つのラン／グループ番号を１つの組とし、その組を発生頻度順に並べ、発生頻度が高い複数個の組を初期値として符号記憶部に記憶し、符号書き換え制御部に所定のカウント値を設定し、符号記憶部に記憶された複数のハフマン符号と入力される可変長符号とを比較し、比較の結果、一致した場合、該当ラン／グループ番号に基づいて画像復号を行い、比較の結果、一致しない場合、該当可変長符号を発生頻度に変換して発生頻度に基づいて変換されたラン／グループ番号に基づいて画像復号を行うとともに、該当可変長符号を符号記憶部に記憶し、符号書き換え制御部に備えたカウンタのカウントアップを行い、カウントアップの結果、所定のカウント値に達した場合、記憶されている該当可変長符号および対応したラン／グループ番号により初期値を書き換えることを特徴とする。
【００１５】
第１の可変長符号伸長方法において、比較の結果、一致した場合、該当可変長符号およびラン／グループ番号を１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値の発生頻度の最も高い記憶位置に移動させ、発生頻度の最も高い記憶位置から、該当可変長符号およびラン／グループ番号よりも１つ発生頻度の高い記憶位置までに記憶されていた１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値を順次発生頻度の１つ低い記憶位置に移動させることが好ましい。
【００１６】
前記の目的を達成するため、本発明に係る第２の可変長符号伸長方法は、１つのハフマン符号および１つのラン／グループ番号を１つの組とし、その組を発生頻度順に並べ、発生頻度が高い複数個の組を初期値として符号記憶部に記憶し、符号書き換え制御部に所定のカウント値を設定し、符号記憶部に記憶された複数のハフマン符号と入力される可変長符号とを比較し、比較の結果、一致した場合、該当ラン／グループ番号に基づいて画像復号を行い、比較の結果、一致しない場合、該当可変長符号を発生頻度に変換して発生頻度に基づいて変換されたラン／グループ番号に基づいて画像復号を行うとともに、該当可変長符号を符号記憶部に記憶し、符号書き換え制御部に備えたカウンタのカウントアップを行い、外部からの信号に基づいて、記憶されており且つ所定のカウント値以上である該当可変長符号および対応したラン／グループ番号により初期値を一括して書き換えることを特徴とする。
【００１７】
第２の可変長符号伸長方法において、カウント値が大きい該当可変長符号および対応したラン／グループ番号ほど初期値の発生頻度の高い記憶位置に書き込むことで、初期値の一括書き換えを行なうことが好ましい。
【００１８】
前記の目的を達成するため、本発明に係る第１の可変長符号伸長装置は、入力される可変長符号をラン／グループ番号に変換する可変長復号化処理部を有し、ラン／グループ番号に基づいて画像復号を行なう可変長符号伸長装置であって、可変長復号化処理部は、入力される可変長符号を発生頻度に変換する発生頻度変換部と、ハフマン符号およびラン／グループ番号からなる初期値が発生頻度の高い順に複数設定され、設定された複数のハフマン符号と入力される可変長符号とを比較して、比較の結果一致したか否かを示すヒット信号と、一致した該当ラン／グループ番号とを出力する符号記憶部と、所定のカウント値が設定され、符号記憶部からのヒット信号が不一致を示した場合、該当可変長符号を記憶してカウンタのカウントアップを行ない、カウントアップの結果、所定のカウント値に達した該当可変長符号および対応するラン／グループ番号を符号記憶部に出力して、初期値の書き換えを行なわせる符号書換え制御部と、符号記憶部からのヒット信号が一致を示す場合、符号記憶部からの該当ラン／グループ番号を選択出力し、符号記憶部からのヒット信号が不一致を示す場合、発生頻度変換部からの発生頻度が符号テーブルを介して変換されたラン／グループ番号を選択出力する出力選択部とを備えたことを特徴とする。
【００１９】
第１の可変長符号伸長装置において、符号記憶部は、比較の結果、一致した場合、該当可変長符号およびラン／グループ番号を１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値の発生頻度の最も高い記憶位置に移動させ、発生頻度の最も高い記憶位置から、該当可変長符号およびラン／グループ番号よりも１つ発生頻度の高い記憶位置までに記憶されていた１つのハフマン符号および１つのラン／グループ番号を１つの組とする初期値を順次発生頻度の１つ低い記憶位置に移動させることが好ましい。
【００２０】
前記目的を達成するため、本発明に係る第２の可変長符号伸長装置は、入力される可変長符号をラン／グループ番号に変換する可変長復号化処理部を有し、ラン／グループ番号に基づいて画像復号を行なう可変長符号伸長装置であって、可変長復号化処理部は、入力される可変長符号を発生頻度に変換する発生頻度変換部と、ハフマン符号およびラン／グループ番号からなる初期値が発生頻度の高い順に複数設定され、設定された複数のハフマン符号と入力される前記可変長符号とを比較して、比較の結果一致したか否かを示すヒット信号と、一致した該当ラン／グループ番号とを出力する符号記憶部と、所定のカウント値が設定され、符号記憶部からのヒット信号が不一致を示した場合、該当可変長符号を記憶してカウンタのカウントアップを行ない、外部からの信号に基づいて、記憶されており且つ所定のカウント値以上である全ての該当可変長符号および対応したラン／グループ番号を符号記憶部に出力して、初期値の一括書き換えを行なわせる符号書換え制御部と、符号記憶部からのヒット信号が一致を示す場合、符号記憶部からの該当ラン／グループ番号を選択出力し、符号記憶部からのヒット信号が不一致を示す場合、発生頻度変換部からの発生頻度が符号テーブルを介して変換されたラン／グループ番号を選択出力する出力選択部とを備えたことを特徴とする。
【００２１】
第２の可変長符号伸長装置において、符号記憶部は、カウント値が大きい該当可変長符号および対応したラン／グループ番号ほど初期値の発生頻度の高い記憶位置に書き込むことで、初期値の一括書き換えを行なうことが好ましい。
【００２２】
第１および第２の可変長符号伸長装置は、符号記憶部と符号書換え制御部とからなる書換え型符号記憶部を複数個備えることが好ましい。
【００２３】
前記の目的を達成するため、本発明に係る可変長符号圧縮伸長方法は、第１または第２の可変長符号伸長方法により画像復号を行なった際に、復号時の符号発生情報を符号テーブルに反映し、符号テーブルを用いて復号した画像データを再度符号化することを特徴とする。
【００２４】
前記の目的を達成するため、本発明に係る可変長符号圧縮伸長装置は、第１または第２の可変長符号伸長装置の可変長復号化処理部と、ラン／グループ番号をどの符号に割当てるかの情報を有し、可変長復号化処理部からのラン／グループ番号に基づいて画像復号された際に、可変長復号化処理部からの復号時の符号発生情報が反映される符号テーブルと、画像復号データを一旦格納し、画像符号化を行なうデータとして出力するデータバッファとを備え、符号テーブルを用いてデータバッファからの出力データを再度符号化することを特徴とする。
【００２５】
上記第１の可変長符号伸長方法または装置の構成によれば、可変長符号を発生頻度に変換することなくラン／グループ番号に変換し、その変換のための記憶内容をデータ復号化処理中に変更することで、予期せぬ符号長の長い符号が多発したとしても復号化効率が悪くならないという利点がある。
【００２６】
上記第２の可変長符号伸長方法または装置の構成によれば、書換え発生を外部からのデータ更新信号（ＤＵＳ）により決定することで、例えばモーションＪＰＥＧのような動画ライクの静止画を扱う場合、１枚目の画像復号化中は初期値（比較値）の書換えは行わずに、格納位置最適化とカウントアップのみを行い、２枚目の画像に移行する際に初期値（比較値）の書換えを行う。これにより、１枚目の画像全体に対してその画像の符号が持つ特徴が抽出されており、かつ一括データ書換えによりその特徴を反映させることで、２枚目以降の画像において、入力符号との比較値は最適な状態になっているので、復号化の効率が良くなる。
【００２７】
上記第１および第２の可変長符号伸長装置において、符号記憶部と符号書換え制御部とからなる書換え型符号記憶部を複数個備えることで、データの発生傾向が分散しても、符号化効率の悪化を防ぐことができる。
【００２８】
上記可変長符号圧縮伸長方法または装置の構成によれば、復号化時に抽出した最適な符号発生情報を用いて再度画像圧縮を行うので、最初に復号したデータよりも圧縮率の高いデータを得ることができる。
【００２９】
【発明の実施の形態】
以下、本発明の好適な実施形態について、図面を参照して説明する。なお、各実施形態は、１６ｂｉｔのハフマン符号で構成されるものとする。
【００３０】
（第１の実施形態）
図１は、本発明の第１の実施形態による可変長符号復号装置における可変長復号化処理部の一構成例を示すブロック図であり、従来例と同じ構成要素については同一の符号を付して説明を省略する。
【００３１】
復号化においては、入力されたハフマン符号（ＨＣｉｎ）は符号記憶部１０ｃと発生頻度変換部１１０ａに入力される。符号記憶部１０ｃには、初期値（ＩＮＩＴ）として、アドレス：ハフマン符号、データ：ラン／グループ番号を発生頻度の高い方から順に記憶させておく。符号記憶部１０ｃにいくつのデータを記憶させるかは、ハフマン符号の総数より小さければいくつでも良い。
【００３２】
図２は、符号記憶部１０ｃの内部構成を示すブロック図である。図２において、全ての比較部１０ｃ−２は、入力されたハフマン符号と各格納部１０ｃ−１１〜１０ｃ−１Ｎに記憶されているアドレスの比較を行う。比較部１０ｃ−２は、入力ハフマン符号が記憶アドレスのいずれかに一致した場合、ヒットしたハフマン符号、ラン／グループ番号とアドレスヒットフラグをデータ選択部１０ｃ−３に出力する。データ選択部１０ｃ−３では、ヒットが発生したことを示すフラグを立て、アドレスヒットフラグ（ＡＨＦ）とラン／グループ番号（Ｒ／Ｇ１）を出力選択部１１０ｂに出力する。
【００３３】
また、データ選択部１０ｃ−３は、各格納部１０ｃ−１１〜１０ｃ−１Ｎにライト制御信号を出力する。例えば、第三格納部１０ｃ−１３においてヒットが発生した場合、第一から第三格納部１０ｃ−１１〜１０ｃ−１３にはライトすることを示すライト制御信号が、第四から第N格納部１０ｃ−１４〜１０ｃ−１Ｎにはライトしないことを示すライト制御信号が出力される。また、ヒットしたアドレスおよびデータは第一格納部１０ｃ−１１に移動される。第一格納部１０ｃ−１１に存在したデータは第二格納部１０ｃ−１２に、第二格納部１０ｃ−１２に存在したデータは第三格納部１０ｃ−１３にと、該当データ箇所まで順次書換えを行う。
【００３４】
第N格納部１０ｃ−１Ｎでは、図１の符号書換え制御部１０ｄからの書換え制御信号（ＲＷＣ）を見て、書換えを示す場合に符号書換え制御部１０ｄからのハフマン符号（ＨＣｄ）、ラン／グループ番号（Ｒ／Ｇｄ）を書き込む。出力選択部１１０ｂは、符号記憶部１０ｃからのアドレスヒットフラグ（ＡＨＦ）を見て、ヒットしていれば符号記憶部１０ｃからのデータ（Ｒ／Ｇ１）を、ヒットしていなければ発生頻度変換部１１０ａからのデータ（Ｒ／Ｇ２）をラン／グループ番号（Ｒ／Ｇｏｕｔ）として出力する。
【００３５】
符号書換え制御部１０ｄでは、符号記憶部１０ｃからのアドレスヒットフラグ（ＡＨＦ）を見て、ヒットしていなければ発生頻度変換部１１０ａの出力データ、つまりラン／グループ番号と該当ハフマン符号を記憶する。符号書換え制御部１０ｄは、ラン／グループ番号と該当ハフマン符号を記憶する記憶装置とカウンタをＮセット（Ｎ＜ハフマン符号の個数）備える。Ｎセットのどこに記憶するかは、現在記憶しているデータと入力データとの比較を行い、一致するならば同一箇所に、一致しないならばもっともカウント数の少ない箇所に記憶する。記憶させたカウンタはカウントアップを行う。
【００３６】
図３は、符号書換え制御部１０ｄの内部構成を示すブロック図である。符号書換え制御部１０ｄは、カウンタ値が使用者の定めるある一定の値を超えた際に符号記憶部１０ｃの最終格納部（第Ｎ格納部１０ｃ−１Ｎ）に対して書換え制御信号（ＲＷＣ）、ハフマン符号（ＨＣｄ）、ラン／グループ番号（Ｒ／Ｇｄ）を出力する。出力した後は該当記憶装置、該当カウンタをクリアする。
【００３７】
図４は、本発明の第１の実施形態における可変長符号復号方法の処理手順を示すフローチャートである。まず、符号記憶部１０ｃに初期値を設定する（Ｓ４０１）。初期値は発生頻度が高いと予想される値でも良いし、使用者が任意に選択した値でも良い。次に、符号書換え制御部１０ｄに書換え発生を行うカウンタ値を設定する（Ｓ４０２）。以上の設定を行った上で復号化処理をスタートする。復号化処理においては、復号すべきデータつまりハフマン符号を符号記憶部１０ｃと発生頻度変換部１１０ａに入力する（Ｓ４０３）。入力されたデータに対して符号記憶部１０ｃでの符号一致を確認し（Ｓ４０４）、一致するか否かを判断する（Ｓ４０５）。
【００３８】
入力されたデータが符号記憶部１０ｃでの符号での符号と一致する場合（Ｙｅｓ）、符号記憶部１０ｃからラン／グループ番号（Ｒ／Ｇ１）を出力する（Ｓ４０６）。符号記憶部１０ｃでは一致したデータの格納場所の変更動作を行い（Ｓ４０７）、以上で１つの符号の復号が終了する。
【００３９】
一方、入力されたデータが符号記憶部１０ｃでの符号と一致しない場合（Ｓ４０６の判断でＮｏ）、発生頻度変換部１１０ａでの発生頻度変換（Ｓ４１１）、符号テーブル入力（Ｓ４１２）、符号テーブル出力（Ｓ４１３）によって得られたラン／グループ番号（Ｒ／Ｇ２）を出力する（Ｓ４１５）。符号書換え制御部１０ｄでは、そのハフマン符号及びラン／グループ番号を所定の位置に格納した後、保有するカウンタのカウントアップを行い（Ｓ４０８）、そのカウンタ値が使用者により設定された値を超えた場合にのみ（Ｓ４０９の判断でＹｅｓ）、符号記憶部１０ｃのデータ書換えを行う（Ｓ４１０）。以上の処理は、ステップＳ４１３の判断で最終符号まで行われる。
【００４０】
図５は、符号記憶部１０ｃに設定する初期値の例である。ハフマン符号とラン／グループ番号の関係は、図２２の符号テーブル例を元に作成している。この例においては、設定する符号個数を３個としている。図６は、図５に示す初期値をもって復号化処理を行った際の処理例である。以下、図６について説明する。
【００４１】
まず、初期状態（Ｓ６０１）であるが、左から入力されるデータ、符号記憶部１０ｃの初期値、符号書換え制御部１０ｄの内部状態、書換えカウンタ設定値を記載している。
【００４２】
入力が開始されると、１番目の入力符号は“０１”であり、符号記憶部１０ｃ内の格納位置２の記憶値と一致する。よってラン／グループ番号“００００００１０”が出力値として得ることができ、格納位置１と格納位置２の記憶値を入れ替えて、１番目のデータの復号が完了する（Ｓ６０２）。
【００４３】
２番目の入力符号は“１０１０”であり、符号記憶部１０ｃ内のいずれの記憶値とも一致しない。よって符号書換え制御部１０ｄにこの符号を記憶させ、該当カウンタのカウントアップを行う（Ｓ６０３）。符号記憶部１０ｃ内にデータがない場合は、発生頻度変換部１１０ａにおいて記憶装置アクセスを行い、その後にラン／グループ番号“００００００００”を出力値として得ることができ、この“００００００００”も符号書換え制御部１０ｄに記憶させる（Ｓ６０４）。
【００４４】
３番目の入力符号は“１０１０”であり、２番目の入力符号と同様に、符号記憶部１０ｃ内の記憶値と一致しない。よって先程と同様の処理を行う（Ｓ６０５）。このとき、符号書換え制御部１０ｄのカウンタ値は“１”から“２”となり、書換えカウンタ設定値と一致する。カウンタ値が一致したので、符号記憶部１０ｃの最終格納位置、つまり格納位置３に符号“１０１０”、ラン／グループ番号“００００００００”を書き込む（Ｓ６０６）。
【００４５】
４番目の入力符号は“１０１０”であり、先程書き換えた、符号記憶部１０ｃ内の格納位置３の記憶値と一致する。よって、すぐにラン／グループ番号“００００００００”が出力として得ることができる（Ｓ６０７）。このようにして、発生した符号の頻度に応じて符号記憶部１０ｃ内のデータ書換えを行い、復号化処理を行う。
【００４６】
以上のように、本実施形態によれば、可変長符号伸長装置にデータ処理中に書換え可能な符号記憶部１０ｃを設けることで、予期せぬ符号長の長い符号が多発したとしても復号化効率が悪くならないという利点がある。
【００４７】
（第２の実施形態）
図７は、本発明の第２の実施形態による可変長符号復号装置における可変長復号化処理部の一構成例を示すブロック図である。第２の実施形態が第１の実施形態と異なる点は、符号書換え制御部２１０ｄにデータ更新信号（ＤＵＳ）が入力される点と、符号記憶部２１０ｃと符号書換え制御部２１０ｄの構成にある。
【００４８】
図８は、図７の符号記憶部２１０ｃの内部構成を示すブロック図である。符号記憶部２１０ｃが第１の実施形態と異なる点は、第１の実施形態では、新規データは最終格納位置のデータのみを書き換えたのに対し、第２の実施形態では、複数個のデータを新規に書き換える点にある。すなわち、第２の実施形態は、符号書換え制御部２１０ｄからの書換え制御信号（ＲＷＣ）に基づいて、第N格納部１０ｃ−１Ｎではなく、第一格納部１０ｃ−１１にデータを書くという点において第１の実施形態と異なる。
【００４９】
図９は、符号書換え制御部２１０ｄの内部構成を示すブロック図である。符号書換え制御部２１０ｄが第１の実施形態と異なる点は、第１の実施形態では、書換え発生を制御部内に備えたカウンタの比較によって行なったのに対し、第２の実施形態では、外部からのデータ更新信号（ＤＵＳ）に伴い複数個のデータの書換えを行うという点にある。
【００５０】
外部からデータ更新信号（ＤＵＳ）が入力されると、設定された書換えを実施するカウンタ値を超えた記憶データすべてを、例えばカウンタ値が大きいものから順に符号記憶部２１０ｃに出力する。符号記憶部２１０ｃにおいて、第１の実施形態で説明したように、良く発生するデータは上位の格納位置に配置される。よって、符号書換え制御部２１０ｄから複数のデータを新規に書いたとしても、書き換わるデータは発生頻度が低いとみなされたデータである。
【００５１】
図１０は、本発明の第２の実施形態における可変長符号復号方法の処理手順を示すフローチャートである。図１０のフローチャートが第１の実施形態における図４のフローチャートと異なる点は、符号記憶部２１０ｃのデータ更新の条件（Ｓ１００１）においてのみ異なる。
【００５２】
以上のように、本実施形態によれば、書換え発生を外部からのデータ更新信号（ＤＵＳ）により決定する。例えばモーションＪＰＥＧのような動画ライクの静止画を扱う場合、各画像の符号は類似する傾向にあると予想される。その場合、１枚目の画像復号化中は符号記憶部２１０ｃの書換えは行わずに、符号記憶部２１０ｃの格納位置最適化と符号書換え制御部２１０ｄのカウントのみを行い、２枚目の画像に移行する際に、符号記憶部２１０ｃのデータ書換えを行う。１枚目の画像全体に対してその画像の符号が持つ特徴を抽出しており、かつ一括データ書換えによりその特徴を反映させていることで、２枚目以降の画像において符号記憶部２１０ｃは最適な状態になっているので、復号化の効率が良くなる。
【００５３】
（第３の実施形態）
図１１は、本発明の第３の実施形態による可変長符号復号装置における可変長復号化処理部の一構成例を示すブロック図である。第３の実施形態が第１の実施形態と異なる点は、符号記憶部及び符号書換え制御部の組み合わせからなり、書換え型符号記憶部選択信号（ＳＥＬ）が入力される複数の書換え型符号記憶部３１０ｅ＿１〜３１０ｅ＿ｎを有し、出力選択部１１０ｂが複数の書換え型符号記憶部３１０ｅ＿１〜３１０ｅ＿ｎからのデータ（ラン／グループ番号Ｒ／Ｇ１１〜Ｒ／Ｇ１Ｎ、アドレスヒットフラグＡＤＦ１〜ＡＤＦＮ）を選択する構成にある。
【００５４】
図１１において、例えばＪＰＥＧの場合、１ブロック６４個のデータは１個のＤＣ係数と６３個のＡＣ係数に分類される。そこでＤＣ係数を第一書換え型符号記憶部３０１ｅ＿１に、ＡＣ係数を第二書換え型符号記憶部３０１ｅ＿２にて第１の実施形態と同等の処理を行えば、係数毎の傾向を抽出でき、さらに復号化効率が良くなる。この時の書換え型符号記憶部選択信号（ＳＥＬ）は、ＤＣ／ＡＣの選択信号となる。
【００５５】
図１２は、本発明の第３の実施形態において、ＤＣ／ＡＣ係数に対して書換え型符号記憶部を２つ備えた場合の可変長復号方法の処理手順を示すフローチャートである。図１２のフローチャートが第１の実施形態における図４のフローチャートと異なる点は、符号入力開始後、ステップＳ１２０１で、ＤＣかＡＣかの条件分岐をする点にある。ＤＣ係数であれば（Ｓ１２０１の判断でＹｅｓ）、第一の書換え型符号記憶部３０１ｅ＿１において第１の実施形態と同様の処理を施し、ＡＣ係数であれば（Ｓ１２０１の判断でＮｏ）、第二の書換え型符号記憶部３０１ｅ＿２において第１の実施形態と同様の処理を施す（なお、この場合、図１２において、符号の末尾に「’」を付している）。
【００５６】
なお、本実施形態では、第１の実施形態の構成に対応した複数の書換え型符号記憶部を備える場合について説明したが、第２の実施形態の構成に対応した複数の書換え型符号記憶部を備えても構わない。
【００５７】
以上のように、本実施形態によれば、データの発生傾向が分散しても、複数種類の書換え型符号記憶部３０１ｅ＿１〜３０１ｅ＿ｎを備えるので、符号化効率の悪化を防ぐことができる。
【００５８】
（第４の実施形態）
図１３は、本発明の第４の実施形態による可変長符号圧縮伸長装置の一構成例を示すブロック図である。第４の実施形態が図２０に示す従来の可変長符号圧縮伸長装置の構成と異なる点は、テーブル生成部４１７を有する点と、可変長復号化処理部１０からテーブル生成部４１７に発生符号情報（ＣＩ）を送出する点と、外部入力端子１６だけでなくテーブル生成部４１７からも符号テーブル１０５の設定が可能な点と、画像出力端子１５のデータをデータバッファ４１８に出力し、データバッファ４１８から画像入力端子２に送出する機能を備えた点にある。
【００５９】
図１４は、本発明の第４の実施形態における伸長／圧縮処理手順を示すフローチャートである。図２９の従来の伸長処理フローを示したが、伸長処理において図１４のフローチャートが従来と異なる点は、ハフマン復号化の際に、例えば第３の実施形態の書換え型符号記憶部を使用して、符号の発生傾向を調査し（Ｓ１４０１）、復号した画像データを外部端子だけでなく、データバッファ４１８に出力し（Ｓ１４０２）、画像の伸長が完了したら、書換え型符号記憶部の符号発生情報をテーブル生成部４１７に出力し（Ｓ１４０３）、テーブル生成部４１７において最適なテーブルを生成する（Ｓ１４０４）点にある。
【００６０】
例えば、第３の実施形態の書換え型符号記憶部を用いれば、発生頻度が低いと予想されたにも係らず高い頻度で発生した符号を判定することができる。テーブル生成部４１７において、その符号に短い符号長が与えられるようなテーブル作成を行い、符号テーブル１０５への設定を行う。そして新たな符号テーブルを用いてデータバッファ４１８に貯えられたデータの再圧縮を従来と同様の符号化方式で行う。
【００６１】
以上のように、本実施形態によれば、復号化時に抽出した最適な符号発生情報を用いて再度画像圧縮を行うので、最初に復号したデータよりも圧縮率の高いデータを得ることができる。
【００６２】
【発明の効果】
以上説明したように、本発明によれば、符号化効率が良い可変長符号伸長方法および装置、およびそれにより得られる符号発生情報を用いて符号化効率の悪い符号に対して最適化を行なう可変長符号圧縮伸長方法および装置を実現することが可能になる。
【図面の簡単な説明】
【図１】  本発明の第１の実施形態による可変長符号復号装置における可変長復号化処理部の一構成例を示すブロック図
【図２】  図１の符号記憶部１０ｃの内部構成を示すブロック図
【図３】  図１の符号書換え制御部１０ｄの内部構成を示すブロック図
【図４】  本発明の第１の実施形態における可変長符号復号方法の処理手順を示すフローチャート
【図５】  図１の符号記憶部１０ｃに設定する初期値の例を示す図
【図６】  図５の初期値例に従った可変長符号復号化処理例を示す図
【図７】  本発明の第２の実施形態による可変長符号復号装置における可変長復号化処理部の一構成例を示すブロック図
【図８】  図７の符号記憶部２１０ｃの内部構成を示すブロック図
【図９】  図７の符号書換え制御部２１０ｄの内部構成を示すブロック図
【図１０】  本発明の第２の実施形態における可変長符号復号方法の処理手順を示すフローチャート
【図１１】  本発明の第３の実施形態による可変長符号復号装置における可変長復号化処理部の一構成例を示すブロック図
【図１２】  本発明の第３の実施形態における可変長符号復号方法の処理手順を示すフローチャート
【図１３】  本発明の第４の実施形態による可変長符号圧縮伸長装置の一構成例を示すブロック図
【図１４】  本発明の第４の実施形態における可変長符号伸長圧縮方法の処理手順を示すフローチャート
【図１５】  従来の可変長符号圧縮伸長装置の一構成例を示すブロック図
【図１６】  従来の可変長符号圧縮伸長装置における圧縮処理手順を示すフローチャート
【図１７】  従来の符号テーブルの一例を示す図
【図１８】  ＤＣＴ係数の一例を示す図
【図１９】  ジグザグスキャン順序を示す図
【図２０】  ランレングス符号化の一例を示す図
【図２１】  量子化係数と対応するグループ番号を示す図
【図２２】  従来の可変長符号化処理部の一構成例を示すブロック図
【図２３】  ハフマン符号化／復号化に使用する初期値の一例を示す図
【図２４】  従来の可変長符号圧縮伸長装置における伸長処理手順を示すフローチャート
【図２５】  従来の可変長復号化処理部の一構成例を示すブロック図
【符号の説明】
１０１  可変長符号圧縮伸長装置
１０５  符号テーブル
２  画像入力端子
３  ＤＣＴ変換部
４  量子化器
５  ランレングス符号化部
６  グループ番号作成部
７  可変長符号化処理部
８  符号データ出力端子
９  符号データ入力端子
１０  可変長復号化処理部
１０ｃ、２１０ｃ  符号記憶部
１０ｃ−１１〜１０ｃ−１Ｎ  第一〜第Ｎ格納部
１０ｃ−２  ハフマン符号比較部
１０ｃ−３  データ選択部
１０ｄ、２１０ｄ  符号書換え制御部
１１０ａ  発生頻度変換部
１１０ｂ  出力選択部
１１  係数作成部
１２  ランレングス復号化部
１３  逆量子化器
１４  逆ＤＣＴ変換部
１５  画像出力端子
１６  外部入力端子
３１０ｅ#１〜３１０ｅ#ｎ  第一〜第Ｎ書換え型符号記憶部
４１７  テーブル生成部
４１８  データバッファ
【図１】
0004526209.tif 000002
【図２】
0004526209.tif 000003
【図３】
0004526209.tif 000004
【図４】
0004526209.tif 000005
【図５】
0004526209.tif 000006
【図６】
0004526209.tif 000007
【図７】
0004526209.tif 000008
【図８】
0004526209.tif 000009
【図９】
0004526209.tif 000010
【図１０】
0004526209.tif 000011
【図１１】
0004526209.tif 000012
【図１２】
0004526209.tif 000013
【図１３】
0004526209.tif 000014
【図１４】
0004526209.tif 000015
【図１５】
0004526209.tif 000016
【図１６】
0004526209.tif 000017
【図１７】
0004526209.tif 000018
【図１８】
0004526209.tif 000019
【図１９】
0004526209.tif 000020
【図２０】
0004526209.tif 000021
【図２１】
0004526209.tif 000022
【図２２】
0004526209.tif 000023
【図２３】
0004526209.tif 000024
【図２４】
0004526209.tif 000025
【図２５】
0004526209.tif 000026