(57)【要約】【課題】符号化効率を高めて、ポスト量子化に起因して画像に生じる違和感や不明瞭感を抑制する。【解決手段】有意ビット検出処理部１５１は、画像データの周波数変換を行うことにより生成された係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数を検出する。符号化選択部１５２は、係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化を選択する。可変長符号化部１５３は、可変長符号化が選択されたビットプレーンの可変長符号化を行う。固定長符号化部１５４は、固定長符号化が選択されたビットプレーンの固定長符号化を行う。入力された係数データの特徴に応じて可変長符号化と固定長符号化を区分できるので安定して符号化効率を高めることができる。【選択図】        図４
2011193335.tif 000002
【特許請求の範囲】
【請求項１】
画像データの周波数変換を行うことにより生成された係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数を検出する有意ビット検出処理部と、
前記係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化を選択する符号化選択部と、
可変長符号化が選択されたビットプレーンの可変長符号化を行う可変長符号化部と、
固定長符号化が選択されたビットプレーンの固定長符号化を行う固定長符号化部と
を有する画像符号化装置。
【請求項２】
前記可変長符号化部は、係数ビットの発生確率に基づいて予め作成された符号化テーブルを用いて可変長符号化を行う請求項１記載の画像符号化装置。
【請求項３】
前記符号化選択部は、ビット深度の浅い順から符号化の選択を行い、ビット深度が第１の閾値以上および／または１つ上位のビットプレーンにおける前記係数データの個数が第２の閾値以上であるビットプレーンで前記固定長符号化を選択し、他のビットプレーンで前記可変長符号化を選択する請求項２記載の画像符号化装置。
【請求項４】
前記符号化選択部は、前記画像データに関するコンテキストに応じて、前記第１および／または第２の閾値を設定する請求項３記載の画像符号化装置。
【請求項５】
前記可変長符号化部は、異なる複数の符号化テーブルから前記画像データに関するコンテキストに応じた符号化テーブルを選択して、該選択した符号化テーブルを用いて符号化を行う請求項２記載の画像符号化装置。
【請求項６】
有意ビット検出処理部が、画像データの周波数変換を行うことにより生成された係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、
符号化選択部が、前記係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化を選択するステップと、
可変長符号化部が、可変長符号化の選択が行われたビットプレーンの可変長符号化を行うステップと、
固定長符号化部が、固定長符号化の選択が行われたビットプレーンの固定長符号化を行うステップと
を含む画像符号化方法。
【請求項７】
画像データの周波数変換を行うことにより生成された係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、
前記係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化を選択するステップと、
可変長符号化の選択が行われたビットプレーンの可変長符号化を行うステップと、
固定長符号化の選択が行われたビットプレーンの固定長符号化を行うステップと
を含む処理をコンピュータに実行させるプログラム。
【請求項８】
画像データの周波数変換を行うことにより得られた係数データに対して、上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいてビットプレーン毎に可変長符号化または固定長符号化を選択して符号化が行われた符号化データについて、可変長復号化を行う可変長復号化部と、
前記符号化データについて、固定長復号化を行う固定長復号化部と、
前記符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数を検出する有意ビット検出処理部と、
前記係数データの個数と復号化するビットプレーンのビット深度に基づいて前記可変長復号化部または前記固定長復号化部を選択して、前記符号化データの復号化を行わせる復号化選択部と
を有する画像復号化装置。
【請求項９】
前記可変長復号部は、係数ビットの発生確率に基づいて予め作成された復号化テーブルを用いて可変長復号化を行う請求項８記載の画像復号化装置。
【請求項１０】
前記復号化選択部は、ビット深度の浅い順から復号化の選択を行い、ビット深度が第１の閾値以上および／または１つ上位のビットプレーンにおける前記係数データの個数が第２の閾値以上である場合に前記固定長復号化を選択し、他の場合に前記可変長復号化を選択する請求項９記載の画像復号化装置。
【請求項１１】
前記復号化選択部は、前記画像データに関するコンテキストに応じて、前記第１および／または第２の閾値を設定する請求項１０記載の画像復号化装置。
【請求項１２】
前記可変長復号化部は、異なる複数の復号化テーブルから前記画像データに関するコンテキストに応じた復号化テーブルを選択して、該選択した復号化テーブルを用いて復号化を行う請求項９記載の画像復号化装置。
【請求項１３】
可変長復号化部が、画像データの周波数変換を行うことにより得られた係数データに対して、上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいてビットプレーン毎に可変長符号化または固定長符号化を選択して符号化が行われた符号化データについて、可変長復号化を行うステップと、
固定長復号化部が、前記符号化データの固定長復号化を行うステップと、
有意ビット検出処理部が、前記符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、
復号化選択部が、前記係数データの個数と復号化するビットプレーンのビット深度に基づいて、前記可変長復号化部または前記固定長復号化部を選択して、符号化データの復号化を行わせるステップと
を含む画像復号化方法。
【請求項１４】
画像データの周波数変換を行うことにより得られた係数データに対して、上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいてビットプレーン毎に可変長符号化または固定長符号化を選択して符号化が行われた符号化データについて、可変長復号化を行うステップと、
前記符号化データの固定長復号化を行うステップと、
前記符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、
前記係数データの個数と復号化するビットプレーンのビット深度に基づいて、前記可変長復号化部または前記固定長復号化部を選択して、符号化データの復号化を行わせるステップと
を含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像符号化装置および方法、画像復号化装置および方法、並びにプログラムに関する。詳しくは、ポスト量子化に起因して画像に生じる違和感や不明瞭感を抑制する。
【背景技術】
【０００２】
従来、画像圧縮方式として、圧縮率を高くしても高画質および高階調の画像が得られるＪＰＥＧ２０００やＪＰＥＧ ＸＲ(Joint Photographic Experts Group  eXtended Range)と呼ばれる方式が用いられている。また、このような方式で圧縮された画像の復号化を行う画像復号化装置が例えば特許文献１や特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２６０５３９号公報
【特許文献２】特開２００２−２０４３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＪＰＥＧ２０００の方式では、画素値を空間座標から周波数座標に変換する周波数変換、周波数変換によって得られた係数データの量子化が行われている。さらに、量子化された係数データを効率良く符号化できるようにするために係数データをビットプレーンに展開する処理等を行う係数ビットモデリングや、係数ビットモデリングの処理が行われたデータのエントロピー符号化等が行われている。
【０００５】
また、エントロピー符号化では、可変長符号化と固定長符号化を組み合わせる符号化が行われており、ＭＳＢ(Most Significant Bit：最上位ビット)側からＬＳＢ(Least Significant Bit:最下位ビット)側に向かって走査して、ビット「１」が初めて発生したビット深度から一定深さ未満のビットプレーンの可変長符号化が行われている。さらに、一定の深さ以上のビットプレーンについては固定長符号化が行われている。このように、可変長符号化と固定長符号化の区分は、入力された係数データの特徴によらず一定の深さ以上であるか否かによって行われる。したがって、可変長符号化と固定長符号化の区分が最適な位置とならず、安定して符号化効率を高めることができない場合が生じてしまう。
【０００６】
そこで、この発明では符号化効率を高めて、ポスト量子化に起因して画像に生じる違和感や不明瞭感を抑制できる画像符号化装置および方法、画像復号化装置および方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明の第１の側面は、画像データの周波数変換を行うことにより生成された係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数を検出する有意ビット検出処理部と、前記係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化を選択する符号化選択部と、可変長符号化が選択されたビットプレーンの可変長符号化を行う可変長符号化部と、固定長符号化が選択されたビットプレーンの固定長符号化を行う固定長符号化部とを有する画像符号化装置にある。
【０００８】
この発明においては、画像データの周波数変換を行うことにより得られた係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数の検出が行われる。また、ビット深度の浅い順から符号化の選択が行われて、ビット深度が第１の閾値以上および／または１つ上位のビットプレーンにおける前記係数データの個数が第２の閾値以上であるビットプレーンで固定長符号化が選択されて、他のビットプレーンは可変長符号化が選択されて、ビットプレーンの符号化が行われる。
【０００９】
この発明の第２の側面は、有意ビット検出処理部が、画像データの周波数変換を行うことにより生成された係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、符号化選択部が、前記係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化を選択するステップと、可変長符号化部が、可変長符号化の選択が行われたビットプレーンの可変長符号化を行うステップと、固定長符号化部が、固定長符号化の選択が行われたビットプレーンの固定長符号化を行うステップとを含む画像符号化方法にある。
【００１０】
この発明の第３の側面は、画像データの周波数変換を行うことにより生成された係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、前記係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化を選択するステップと、可変長符号化の選択が行われたビットプレーンの可変長符号化を行うステップと、固定長符号化の選択が行われたビットプレーンの固定長符号化を行うステップとを含む処理をコンピュータに実行させるプログラムにある。
【００１１】
この発明の第４の側面は、画像データの周波数変換を行うことにより得られた係数データに対して、上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいてビットプレーン毎に可変長符号化または固定長符号化を選択して符号化が行われた符号化データについて、可変長復号化を行う可変長復号化部と、前記符号化データについて固定長復号化を行う固定長復号化部と、前記符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数を検出する有意ビット検出処理部と、前記係数データの個数と復号化するビットプレーンのビット深度に基づいて前記可変長復号化部または前記固定長復号化部を選択して、前記符号化データの復号化を行わせる復号化選択部とを有する画像復号化装置にある。
【００１２】
この発明においては、画像データの周波数変換を行うことにより得られた係数データに対して、上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいてビットプレーン毎に可変長符号化または固定長符号化を選択して符号化が行われた符号化データについて復号化を行い、得られたビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数の検出が行われる。また、ビット深度の浅い順から復号化の選択が行われて、ビット深度が第１の閾値以上および／または１つ上位のビットプレーンにおける前記係数データの個数が第２の閾値以上であるとき、固定長復号化が選択されて、他のビットプレーンの復号化では可変長復号化が選択されて符号化データの復号化が行われる。
【００１３】
この発明の第５の側面は、可変長復号化部が、画像データの周波数変換を行うことにより得られた係数データに対して、上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいてビットプレーン毎に可変長符号化または固定長符号化を選択して符号化が行われた符号化データについて、可変長復号化を行うステップと、固定長復号化部が、前記符号化データの固定長復号化を行うステップと、有意ビット検出処理部が、前記符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、復号化選択部が、前記係数データの個数と復号化するビットプレーンのビット深度に基づいて、前記可変長復号化部または前記固定長復号化部を選択して、符号化データの復号化を行わせるステップとを含む画像復号化方法にある。
【００１４】
この発明の第６の側面は、画像データの周波数変換を行うことにより得られた係数データに対して、上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいてビットプレーン毎に可変長符号化または固定長符号化を選択して符号化が行われた符号化データについて、可変長復号化を行うステップと、前記符号化データの固定長復号化を行うステップと、前記符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数を検出するステップと、前記係数データの個数と復号化するビットプレーンのビット深度に基づいて、前記可変長復号化部または前記固定長復号化部を選択して、符号化データの復号化を行わせるステップとを含む処理をコンピュータに実行させるプログラムにある。
【００１５】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、光ディスクや磁気ディスク、半導体メモリなどの記憶媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【発明の効果】
【００１６】
この発明によれば、画像データの周波数変換を行い係数データが生成されて、この係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数が検出される。また、検出された係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化が行われて符号化データの生成が行われる。また、この符号化データの復号化では、符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいて、可変長復号化または固定長復号化が行われる。したがって、入力された係数データの特徴に応じて可変長符号化と固定長符号化を区分できるので、安定して符号化効率を高めることが可能となり、ポスト量子化に起因して画像に生じる違和感や不明瞭感を抑制できる。
【図面の簡単な説明】
【００１７】
【図１】画像符号化装置の一実施形態の概略構成を示す図である。
【図２】１次元での係数ビットモデリングを説明するための図である。
【図３】係数データの大きさを例示した図である。
【図４】エントロピー符号化部の構成を示す図である。
【図５】エントロピー符号化部の動作を示すフローチャートである。
【図６】エントロピー符号化部における動作の具体例を説明するための図である。
【図７】符号化テーブルを例示した図である。
【図８】周波数帯域毎に閾値を設定した場合を示す図である。
【図９】画像復号化装置の一実施形態の概略構成を示す図である。
【図１０】エントロピー復号化部の構成を示す図である。
【図１１】エントロピー復号化部の動作を示すフローチャートである。
【図１２】エントロピー復号化部における動作の具体例を説明するための図である。
【図１３】閾値をコンテキストに応じて最適化するエントロピー符号化部の構成を示す図である。
【図１４】エントロピー符号化部の動作を示すフローチャートである。
【図１５】エントロピー復号化部の構成を示す図である。
【図１６】エントロピー復号化部の動作を示すフローチャートである。
【図１７】コンピュータのハードウェアの構成例を示す図である。
【発明を実施するための形態】
【００１８】
以下、発明を実施するための形態について説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態
１−１．画像符号化装置の構成
１−２．エントロピー符号化部の構成
１−３．エントロピー符号化部の動作
１−４．画像復号化装置の構成
１−５．エントロピー復号化部の構成
１−６．エントロピー復号化部の動作
２．第２の実施の形態
２−１．エントロピー符号化部の構成
２−２．エントロピー符号化部の動作
２−３．エントロピー復号化部の構成
２−４．エントロピー復号化部の動作
３．符号化と復号化をコンピュータで行う場合
【００１９】
＜１．第１の実施の形態＞
［１−１．画像符号化装置の構成］
図１は、本発明の画像符号化装置の一実施形態の概略構成を示している。画像符号化装置１０は、色変換部１１、直交変換部１２、量子化部１３、係数ビットモデリング部１４、エントロピー符号化部１５、ポスト量子化部１６、ヘッダ作成部１７を備えている。
【００２０】
色変換部１１は、任意のカラー空間（例えばＲＧＢ、ＹＵＶなど）で入力された画像データを特定のカラー空間に変換する色変換を行い、色変換後の画像データを直交変換部１２に出力する。この色変換は、符号化効率を高める処理であり、画像符号化において必ずしも必要な処理ではない。
【００２１】
直交変換部１２は、色変換部１１から供給された画像データに対して、各画素値を空間座標から周波数座標に変換する周波数変換（例えば離散コサイン変換（ＤＣＴ）、離散フーリエ変換（ＤＦＴ）、ウェーブレット変換（ＤＷＴ）などの直交変換）を行う。直交変換部１２は、直交変換によって得られた係数データを量子化部１３に出力する。
【００２２】
量子化部１３は、直交変換部１２から供給された係数データを量子化して係数ビットモデリング部１４に出力する。この量子化は、画像符号化において必ずしも必要な処理ではない。
【００２３】
係数ビットモデリング部１４は、量子化部からの量子化された係数データをエントロピー符号化部１５で効率良く符号化できるように変換する処理を行う。係数ビットモデリング部１４は、例えば係数データをコードブロックに分割し、コードブロックをＭＳＢ(Most Significant Bit：最上位ビット)側からＬＳＢ(Least Significant Bit:最下位ビット)側に向かって各ビット深度のビットプレーンをエントロピー符号化部１５に出力する。図２は、１次元での係数ビットモデリングを説明するための図である。係数データとして、例えば図２の（Ａ）に示すように「１０、２０、５、９、３４、１８、２、０」が入力されたとする。この場合、コードブロックのサイズを４×１とすると、図２の（Ｂ）に示すように、「１０、２０、５、９」がコードブロック０、「３４、１８、２、０」がコードブロック１となる。係数ビットモデリング部１４は、コードブロック０におけるビット深度０のビットプレーンの係数ビット「００００」をエントロピー符号化部１５に出力する。次に、係数ビットモデリング部１４は、コードブロック０におけるビット深度１の係数ビット「００００」をエントロピー符号化部１５に出力する。以下同様に、係数ビットモデリング部１４は、コードブロック０におけるビット深度２からビット深度７までのビットプレーンの係数ビット「００００」〜「００１１」を、ビット深度毎に順次エントロピー符号化部１５に出力する。また、係数ビットモデリング部１４は、コードブロック１に対してもコードブロック０と同様に、ＭＳＢ側からＬＳＢ側に向かって各ビット深度のビットプレーンをエントロピー符号化部１５に出力する。また、係数ビットモデリング部１４は、ビット深度の識別を可能としてビットプレーンの係数ビットを出力する。例えば、ビット深度を示すビット深度情報をビットプレーンの係数ビットとともに出力する。
【００２４】
エントロピー符号化部１５では、直交変換部１２で得られる係数データの偏りに着目し、入力された係数データの状態に応じて可変長符号化と固定長符号化を適応的に選択して、係数データを符号化する。エントロピー符号化部１５は、可変長符号化と固定長符号化を適応的に選択して符号化を行うことにより得られた符号化データをポスト量子化部１６に出力する。
【００２５】
ポスト量子化部１６は、エントロピー符号化部１５によって得られた符号データが所望のデータ量となるように、トランケーションと呼ばれるビット切り捨て処理を行う。ポスト量子化部１６は、ポスト量子化後の符号化データをヘッダ作成部１７に出力する。
【００２６】
ヘッダ作成部１７は、例えばビット切り捨て位置などを示すヘッダ情報を生成して、ポスト量子化が行われた符号化データに付加してストリームデータを生成して出力する。
【００２７】
［１−２．エントロピー符号化部の構成］
次に、エントロピー符号化部１５について説明する。自然画において、コードブロック内の係数データの大きさにはバラつきが生じる。このとき、各係数データについてＭＳＢ側からＬＳＢ側に向かって走査して、最初にビット「１」が存在するビット深度は異なる。また、コードブロック内で初めてビット「１」になるビット深度付近の係数ビットは「０」が発生しやすく係数ビットの発生確率に偏りが生じる。なお、以下の説明では、各係数データにおいて、ＭＳＢ側からＬＳＢ側に向かって走査したときに最初に現れるビット「１」を有意ビット(Significant Bit)という。
【００２８】
一方、上位のビットプレーンで有意ビットが検出されている係数データでは、ＬＳＢ側に近づくにつれ「１」と「０」が発生する確率は一様になるため、ＬＳＢ付近のビット深度におけるコードブロック内の係数ビットの「０」と「１」の発生確率は一様に近い。つまり、符号化対象ブロック内の上位のビットプレーンで有意ビットが検出されている係数データの個数が少ないと「０」の発生確率が大きく、係数データの個数が多いと「０」と「１」の発生確率は等しくなる。
【００２９】
ここで、コードブロック内の係数データの振幅が小さくＬＳＢ付近から符号化する場合、ＬＳＢ側の一様分布になるビット深度が少ないため係数ビットに「０」と「１」が発生する確率の偏りは、上位のビットプレーンで有意ビットが検出されている係数データの個数が同じであって振幅が大きい係数データに比べて小さくなる。図３は、係数データの大きさを例示した図であり、例えば自然画においては、図３に示すように、特に低域と高域における係数データの大きさは異なる。なお、図３において「４Ｌ」は低域側であり、「１Ｈ」は高域側である。
【００３０】
そこで、エントロピー符号化部１５は、各コードブロックにおいてＭＳＢ側のビットプレーンから可変長符号化を行い、ビット深度および／または上位のビットプレーンで有意ビットが検出されている係数データの個数と閾値との比較結果に基づいて可変長符号化から固定長符号化に切り換える。
【００３１】
図４は、エントロピー符号化部の構成を示している。エントロピー符号化部１５は、有意ビット検出処理部１５１と符号化選択部１５２、可変長符号化部１５３、固定長符号化部１５４を有している。
【００３２】
有意ビット検出処理部１５１は、係数ビットモデリング部１４から出力されたビットプレーンの係数ビットＤＴを用いて、ビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数ＮＢを算出して符号化選択部１５２に出力する。なお、以下の説明では、上位のビットプレーンで有意ビットが検出されている係数データの個数を有意データ数という。
【００３３】
符号化選択部１５２は、有意データ数ＮＢと係数ビットモデリング部１４から出力されたビット深度ＢＤを示す情報に基づき、コードブロックのビット深度毎に、ビットプレーンを可変長符号化または固定長符号化のいずれで符号化するか判別する。符号化選択部１５２は、可変長符号化を行うと判別したビットプレーンの係数ビットを可変長符号化部１５３に出力する。また、符号化選択部１５２は、固定長符号化を行うと判別したビットプレーンの係数ビットを固定長符号化部１５４に出力する。
【００３４】
可変長符号化部１５３は、符号化選択部１５２で選択されたビットプレーンの可変長符号化を行い、得られた符号化データＢＳを図１に示すポスト量子化部１６に出力する。また、固定長符号化部１５４は、符号化選択部１５２で選択されたビットプレーンの固定長符号化を行い、得られた符号化データＢＳを図１に示すポスト量子化部１６に出力する。また、可変長符号化部１５３は、係数ビットの発生確率に基づいて予め作成された符号化テーブル、例えば偏りの大きい係数ビットに予め最適化した符号化テーブルを用いて可変長符号化を行う。
【００３５】
［１−３．エントロピー符号化部の動作］
次に、エントロピー符号化部１５の動作について説明する。図５は、エントロピー符号化部の動作を示すフローチャートである。なお、図５は、ビット深度ＢＤが閾値Ｔｈd以上となったとき、または有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長符号化から固定長符号化に切り換えて符号化を行う場合を示している。また、後述する復号化において、可変長符号化から固定長符号化への切り換えを正しく行うことができるようにするため、１つ上位のビットプレーンで有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長符号化から固定長符号化への切り換えを行う。
【００３６】
ステップＳＴ１でエントロピー符号化部１５は、コードブロック毎に係数データを入力してステップＳＴ２に進む。
【００３７】
ステップＳＴ２でエントロピー符号化部１５は、ビット深度毎にビットプレーンを入力してステップＳＴ３に進む。エントロピー符号化部１５は、入力された符号化対象のコードブロックを、ＭＳＢ側からＬＳＢ側に向かってビット深度毎に、ビットプレーンの係数ビットを入力する。
【００３８】
ステップＳＴ３でエントロピー符号化部１５は、ビット深度ＢＤが予め設定されている閾値Ｔｈd以上であるか判別する。エントロピー符号化部１５は、ビット深度ＢＤが閾値Ｔｈd未満であるときステップＳＴ４に進み、閾値Ｔｈd以上であるときステップＳＴ７に進む。
【００３９】
ステップＳＴ４でエントロピー符号化部１５は、有意データ数ＮＢをカウントしてステップＳＴ５に進む。エントロピー符号化部１５は、符号化対象のビットプレーンよりも１つ上位のビットプレーンにおける有意データ数ＮＢをカウントする。
【００４０】
ステップＳＴ５でエントロピー符号化部１５は、有意データ数ＮＢが予め設定されている閾値Ｔｈc以上であるか判別する。エントロピー符号化部１５は、有意データ数ＮＢが閾値Ｔｈc未満であるときステップＳＴ６に進み、閾値Ｔｈc以上であるときステップＳＴ７に進む。
【００４１】
ステップＳＴ６でエントロピー符号化部１５は、可変長符号化を行う。エントロピー符号化部１５は、符号化対象のビットプレーンの可変長符号化を行ってステップＳＴ８に進む。
【００４２】
ステップＳＴ７でエントロピー符号化部１５は、固定長符号化を行う。エントロピー符号化部１５は、符号化対象のビットプレーンの固定長符号化を行ってステップＳＴ８に進む。
【００４３】
ステップＳＴ８でエントロピー符号化部１５は、全てのビット深度について処理終了であるか判別する。エントロピー符号化部１５は、処理していないビット深度のビットプレーンが残っているときはステップＳＴ２に戻り、新たなビット深度のビットプレーンを入力して処理を行う。また、エントロピー符号化部１５は、処理していないビット深度のビットプレーンが残っていないときステップＳＴ９に進む。
【００４４】
ステップＳＴ９でエントロピー符号化部１５は、全てのコードブロックについて処理が終了したか判別する。エントロピー符号化部１５は、処理していないコードブロックが残っているときはステップＳＴ１に戻り、新たなコードブロックの係数データを入力して処理を行う。また、エントロピー符号化部１５は、処理していないコードブロックが残っていないときエントロピー符号化処理を終了する。
【００４５】
なお、有意データ数ＮＢは、ビット深度が深くなるとき減少することがないので、有意データ数ＮＢが閾値Ｔｈc以上となったときは、次に深いビット深度以降のビットプレーンを全て固定長符号化として、１コードブロックの処理を終了することもできる。
【００４６】
次に、図６を用いて、エントロピー符号化部１５における動作の具体例について説明する。なお、コードブロックのサイズは「４×１」、閾値Ｔｈdは「７」、閾値Ｔｈcは「３」とする。
【００４７】
１つのコードブロックの係数データが図６の（Ａ）に示すように、例えば１０進数表現で「１９，１４９，１０，３７」とする。この場合、エントロピー符号化部１５には、係数ビットモデリング部１４から、コードブロックのＭＳＢ側からＬＳＢ側に向かって各ビットプレーンの係数ビットが供給される。なお、図６の（Ａ）において、有意ビットは斜線で示している。
【００４８】
エントロピー符号化部１５は、ステップＳＴ１およびステップＳＴ２の処理によって、ビットプレーン毎に係数ビットを入力する。また、エントロピー符号化部１５は、ステップＳＴ３の処理によって、入力した係数ビットのビットプレーンがビット深度０〜ビット深度６であるときは、ステップＳＴ４からの処理を行う。さらに、エントロピー符号化部１５は、入力した係数ビットのビットプレーンがビット深度７以上のときはステップＳＴ７の処理を行う。
【００４９】
エントロピー符号化部１５は、ビット深度０のビットプレーンを入力したとき、１つ上位のビットプレーンがないので有意データ数ＮＢが「０」であるから、ステップＳＴ６でビット深度０のビットプレーンの可変長符号化を行う。また、ステップＳＴ８とステップＳＴ２の処理によって、ビット深度１のビットプレーンの係数ビットを入力して、ステップＳＴ３からの処理を行う。また、エントロピー符号化部１５は、同様な処理を繰り返して、１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc未満と判別されたビット深度４までビットプレーンの可変長符号化を行い、１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc以上と判別されたビットプレーンであるビット深度６から固定長符号化を行う。このようにして、１つのコードブロックについて符号化を行う。
【００５０】
次のコードブロックの係数データは、図６の（Ｂ）に示すように、例えば１０進数表現で「５，１３，２，１」とする。この場合、エントロピー符号化部１５には、係数ビットモデリング部１４から、コードブロックのＭＳＢ側からＬＳＢ側に向かって各ビット深度のビットプレーンが供給される。なお、図６の（Ｂ）においても、有意ビットは斜線で示している。
【００５１】
エントロピー符号化部１５は、ステップＳＴ１およびステップＳＴ２の処理によって、ビットプレーン毎に係数ビットを入力する。また、エントロピー符号化部１５は、ステップＳＴ３の処理によって、入力したビットプレーンがビット深度０〜ビット深度６であるときは、ステップＳＴ４からの処理を行い、入力したビットプレーンがビット深度７以上のときはステップＳＴ７の処理を行う。
【００５２】
エントロピー符号化部１５は、入力したビットプレーンがビット深度０のとき、１つ上位のビットプレーンがないので有意データ数ＮＢが「０」であるから、ステップＳＴ６でビット深度０のビットプレーンの可変長符号化を行う。また、ステップＳＴ８とステップＳＴ２の処理によって、ビット深度１のビットプレーンの係数ビットを入力して、ステップＳＴ３からの処理を行う。また、エントロピー符号化部１５は、同様な処理を繰り返して行い、ビット深度６までに１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc以上となっていないことから、ビット深度６までのビットプレーンは可変長符号化を行う。また、ビット深度７となると、ビット深度が閾値Ｔｈd以上であるから、エントロピー符号化部１５は固定長符号化を行う。このようにして、次のコードブロックについて符号化を行う。
【００５３】
図７は符号化テーブルを例示しており、図７の（Ａ）は、係数ビットの発生確率に基づいて予め作成された符号化テーブル、例えば偏りの大きい係数ビットに最適化した符号化テーブルを示している。図７の（Ａ）では、例えば有意データ数が多いビットプレーンに比べて有意データ数が少ないビットプレーンが多くなるという係数ビットの偏りを生じる場合を示している。この場合、符号化テーブルは、有意データ数が少ないビットプレーンに割り当てるビットを少なくして、有意データ数が多いビットプレーンに割り当てるビットが多くなるように最適化されている。なお、図７の（Ｂ）は、偏りに応じた最適化が行われていない従来の符号化テーブルを示している。
【００５４】
図６の（Ａ）に示すコードブロックについて、上述のように符号化を行い、可変長符号化において図７の（Ａ）に示す符号化テーブルを用いると、ビット深度０からビット深度４までの符号長は「３，２，３，４，４」となる。また、固定長符号化における符号長を「４」とすると、ビット深度５，６，７の各符号長は「４」となり、コードブロック全体の符号長は２８ビットとなる。なお、図７の（Ｂ）に示す符号化テーブルを用いた場合、ビット深度０からビット深度４までの符号長は「４，３，４，４，４」となる。また、固定長符号化における符号長を「４」とすると、ビット深度５，６，７の各符号長は「４」となり、コードブロック全体の符号長は３１ビットとなる。したがって、偏りの大きい係数ビットに最適化した符号化テーブルを用いることで、符号化効率を高めることができる。
【００５５】
また、図６の（Ｂ）に示すコードブロックについて、上述のように符号化を行い、可変長符号化では図７の（Ａ）に示す符号化テーブルを用いると、ビット深度４からビット深度６までの符号長は「３，４，４」となる。また、固定長符号化における符号長を「４」とすると、ビット深度７の符号長は「４」となる。また、ビット深度０〜ビット深度３は、符号化時にスキップされるゼロビットプレーンであり、コードブロック全体の符号長は１５ビットとなる。なお、図７の（Ｂ）に示す符号化テーブルを用いた場合、ビット深度４からビット深度６までの符号長は「４，４，４」となり、コードブロック全体の符号長は１６ビットとなる。したがって、偏りの大きい係数ビットに最適化した符号化テーブルを用いることで、符号化効率を高めることができる。
【００５６】
なお、上述の説明では、ビット深度が閾値Ｔｈd以上となったとき、または１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長符号化から固定長符号化への切り換えを行った。しかし、図示せずも、エントロピー符号化部１５は、ビット深度が閾値Ｔｈd以上であって有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長符号化から固定長符号化に切り換えて符号化を行うようにしてもよい。すなわち、符号化選択部１５２は、ビット深度が閾値Ｔｈd以上および／または１つ上位のビットプレーンにおける有意データ数ＮＢがの閾値Ｔｈc以上であるビットプレーンで固定長符号化を選択し、他のビットプレーンで可変長符号化を選択する。
【００５７】
さらに、閾値Ｔｈdは、周波数帯域毎に設定してもよい。図８は、周波数帯域毎に閾値を設定した場合を示している。例えば、図８はサブバンド３Lに対して閾値Ｔｈdをビット深度４、サブバンド３Ｈ，２Ｈ，１Ｈに対して閾値Ｔｈdをビット深度５に設定した場合を示しており、斜線部は固定長符号化が行われるビットプレーンを示している。周波数帯域毎に閾値Ｔｈdを設定すれば、符号化効率をさらに高めることが可能となる。例えば、周波数が高くなると有意データ数の多いビットプレーンが減少する場合、周波数が低いサブバンドに応じた閾値Ｔｈdを設定すると、周波数が高いサブバンドでは、可変長符号化によってビット数を削減できるビットプレーンが固定長符号化されてしまう。周波数帯域毎に閾値Ｔｈdを設定すれば、周波数が高いサブバンドでは閾値Ｔｈdをビット深度の深い位置に設定することで、有意データ数の少ないビットプレーンに対して固定符号化が行われてしまうことを防止して、符号化効率を高めることができる。
【００５８】
以上のように、エントロピー符号化部１５は、係数データのビット深度と有意データ数に応じて、可変長符号化または固定長符号化を選択することで、符号化効率を向上できる。また、可変長符号化で用いる符号化テーブルを偏りの大きい係数ビットに最適化することで、符号化効率をさらに向上できる。
【００５９】
［１−４．画像復号化装置の構成］
次に、画像復号化装置について説明する。図９は、本発明の画像復号化装置の一実施形態の概略構成を示している。画像復号化装置２０は、ヘッダ解析部２１、エントロピー復号化部２２、係数ビットデモデリング部２３、逆量子化部２４、係数データ補正処理部２５、逆直交変換部２６、逆色変換部２７を備えている。
【００６０】
ヘッダ解析部２１は、画像符号化装置により出力されたストリームデータからヘッダ情報（例えば切り捨て位置など）を読み込み解析する。ヘッダ解析部２１は、解析結果をエントロピー復号化部２２や、係数データ補正処理部２５に出力する。また、ヘッダ解析部２１は、ストリームデータにおける符号化データをエントロピー復号化部２２に出力する。
【００６１】
エントロピー復号化部２２は、ヘッダ情報の解析結果を用いて、エントロピー符号化部１５で行われた符号化に対応した復号化を符号化データに対して行う。エントロピー復号化部２２は、符号化データの復号化を行って得られたビットプレーンを係数ビットデモデリング部２３に出力する。
【００６２】
係数ビットデモデリング部２３は、係数ビットモデリング部１４の処理に対して逆の処理を行う。すなわち、係数ビットデモデリング部２３は、エントロピー復号化部２２から出力されたビットプレーンの係数ビットを階層化してコードブロック毎の係数データを生成する。係数ビットデモデリング部２３は、生成したコードブロックの係数データを逆量子化部２４に出力する。
【００６３】
逆量子化部２４は、係数ビットデモデリング部２３から出力された係数データに対して、量子化部１３に対応した所定の計算式で逆量子化を行い、逆量子化された係数データを生成して係数データ補正処理部２５に出力する。
【００６４】
係数データ補正処理部２５は、ヘッダ情報の解析結果に基づき、切り捨てられたビットの判別を行い、切り捨てられたビットの位置に新たなデータを挿入することで、係数データの補正を行う。また、係数データ補正処理部２５は、量子化により切り捨てられたビットに関する補正も行う。係数データ補正処理部２５は、補正後の係数データを逆直交変換部２６に出力する。
【００６５】
逆直交変換部２６は、係数データ補正処理部２５から出力された係数データに対して、画像符号化装置の直交変換部１２に対応した逆変換を行い、画像データを作成する。
【００６６】
逆色変換部２７は、逆直交変換部２６で得られた画像データに対して、画像符号化装置の色変換部１１に対応した所定の逆色変換を行い、出力画像データを生成して出力する。
【００６７】
［１−５．エントロピー復号化部の構成］
図１０は、エントロピー復号化部２２の構成を示している。エントロピー復号化部２２は、復号化選択部２２１と可変長復号化部２２２と固定長復号化部２２３および有意ビット検出処理部２２４を備えている。
【００６８】
復号化選択部２２１は、可変長復号化部２２２または固定長復号化部２２３のいずれかを選択して、入力された符号化データＢＳを選択した復号化部に出力する。復号化選択部２２１は、エントロピー符号化部１５の符号化選択部１５２と対応した選択処理を行い、ビット深度と閾値Ｔｈの比較結果および／または１つ上位のビットプレーンにおける有意データ数ＮＢと閾値Ｔｈcとの比較結果に基づいて可変長復号化または固定長復号化の選択を行う。なお、閾値は、予めエントロピー符号化部とエントロピー復号化部で決めておくようにしてもよく、ヘッダ情報にエントロピー符号化部で用いた閾値を含めるようにしてもよい。
【００６９】
可変長復号化部２２２は、符号化データＢＳの可変長復号化を行って得られたビットプレーンの係数ビットＤＴを、有意ビット検出処理部２２４と図９に示す係数ビットデモデリング部２３に出力する。また、固定長復号化部２２３は、符号化データＢＳの固定長復号化を行って得られたビットプレーンの係数ビットＤＴを、図９に示す係数ビットデモデリング部２３に出力する。
【００７０】
有意ビット検出処理部２２４は、復号化済みのビットプレーンから有意データ数ＮＢを検出して、有意データ数ＮＢを復号化選択部２２１に出力する。例えば、ＭＳＢ側から符号化が行われており、ビット深度ＢＤおよび／または有意データ数ＮＢと閾値Ｔｈcとの比較結果に基づいて可変長復号化から固定長復号化に切り換えられているとする。この場合、有意ビット検出処理部２２４は、可変長復号化部２２２で復号化されたビットプレーンから有意データ数ＮＢを検出する。
【００７１】
［１−６．エントロピー復号化部の動作］
図１１は、エントロピー復号化部の動作を示すフローチャートである。なお、図１１は、ビット深度ＢＤが閾値Ｔｈd以上となったとき、または１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長復号化から固定長復号化に切り換えて復号化を行う場合を示している。なお、エントロピー復号化部は、１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長復号化から固定長復号化への切り換えを行う。
【００７２】
ステップＳＴ２１でエントロピー復号化部２２は、ビット深度が閾値Ｔｈd以上であるか判別する。エントロピー復号化部２２は、復号化を行う符号化データのビット深度ＢＤが閾値Ｔｈd未満であるときステップＳＴ２２に進み、閾値Ｔｈd以上であるときステップＳＴ２５に進む。
【００７３】
ステップＳＴ２２でエントロピー復号化部２２は、有意データ数ＮＢをカウントする。エントロピー復号化部２２は、復号化を行って生成するビットプレーンよりも１つ上位である復号化済みのビットプレーンの有意データ数ＮＢをカウントしてステップＳＴ２３に進む。
【００７４】
ステップＳＴ２３でエントロピー復号化部２２は、有意データ数ＮＢが閾値Ｔｈc以上であるか判別する。エントロピー復号化部２２は、有意データ数ＮＢが閾値Ｔｈc未満でるときステップＳＴ２４に進み、閾値Ｔｈc以上であるときステップＳＴ２５に進む。
【００７５】
ステップＳＴ２４でエントロピー復号化部２２は、可変長復号化を行う。エントロピー復号化部２２は、エントロピー符号化部１５で用いた可変長符号化テーブルに対応した可変長復号化テーブル、すなわち、係数ビットの発生確率に基づいて予め作成された復号化テーブルを用いて符号化データＢＳの可変長復号化を行い、ビットプレーンを生成してステップＳＴ２６に進む。
【００７６】
ステップＳＴ２５でエントロピー復号化部２２は、固定長復号化を行う。エントロピー復号化部２２は、エントロピー符号化部１５で用いた固定長符号化テーブルに対応した固定長復号化テーブルを用いて符号化データＢＳの固定長復号化を行い、ビットプレーンを生成してステップＳＴ２６に進む。
【００７７】
ステップＳＴ２６でエントロピー復号化部２２は、全てのビット深度についての処理終了であるか判別する。エントロピー復号化部２２は、復号化されていないビット深度のビットプレーンが残っているときはステップＳＴ２１に戻り、復号化処理を継続する。また、エントロピー復号化部２２は、コードブロックの各ビット深度のビットプレーンが得られたときステップＳＴ２７に進む。
【００７８】
ステップＳＴ２７でエントロピー復号化部２２は、全てのコードブロックについて処理が終了したか判別する。エントロピー復号化部２２は、復号化されていない符号化データが残っているときはステップＳＴ２１に戻り、復号化を行うことで新たなコードブロックの各ビット深度のビットプレーンを得る。また、エントロピー復号化部２２は、処理していない符号化データが残っていないときエントロピー復号化処理を終了する。
【００７９】
なお、有意データ数ＮＢは、ビット深度が深くなるとき減少することがないので、有意データ数ＮＢが閾値Ｔｈc以上となったときは全て固定長復号化として、１コードブロックの復号化を行うこともできる。
【００８０】
以上のような復号化を行うと、例えば図６の（Ａ）に示すコードブロックの符号化データを復号化する場合、図１２に示すようにビット深度０から可変長復号化が行われる。その後、ビット深度５で１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈcである「３」以上となると、可変長復号化から固定長復号化に切り換えられて、ビット深度５，６，７のビットプレーンを正しく得ることができるようになる。また、例えば図６の（Ｂ）に示すコードブロックの符号化データを復号化する場合、ビット深度６まで可変長復号化が行われて、ビット深度７ではビット深度が閾値Ｔｈdであるから固定長復号化が行われる。したがって、符号化データを正しく復号化できる。
【００８１】
なお、上述の説明では、符号化に対応して、ビット深度が閾値Ｔｈd以上となったとき、または１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長復号化から固定長復号化への切り換えを行った。しかし、符号化において、ビット深度が閾値Ｔｈd以上であって有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長符号化から固定長符号化に切り換えられているときは、ビット深度が閾値Ｔｈd以上であって有意データ数ＮＢが閾値Ｔｈc以上となったとき、可変長復号化から固定長復号化に切り換えてもよい。すなわち、復号化選択部２２１は、符号化選択部１５２に対応して、ビット深度が閾値Ｔｈd以上および／または１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈc以上である場合に固定長復号化を選択し、他のビットプレーンで可変長復号化を選択する。
【００８２】
このように、第１の実施の形態によれば、係数ビットの「０」と「１」の発生確率を考慮して、ビット深度と有意データ数に基づき可変長符号化や固定長符号化の選択が行われる。また、可変長符号化では、係数データの偏りを考慮して最適化された符号化テーブルが用いられる。したがって、符号化効率を高めることができる。また、符号化効率を高めることができるので、ポスト量子化に起因した画像の違和感や不明瞭感等を軽減できる。さらに、固定長符号化を行う場合はハフマンテーブルの参照が不要になるので、全て可変長符号化を行うよりも計算量が少なくなる。
＜２．第２の実施の形態＞
ところで、係数データのビット分布は、コンテキスト（例えば色成分や周波数帯域情報などのいずれか、またはその組み合わせ）によって異なるものとなる。したがって、コンテキストに応じて可変長符号化と固定長符号化のいずれを選択するか判別するための閾値を最適化すれば符号化効率を向上できる。また、コンテキストに応じて可変長符号化テーブルを最適化すれば符号化効率をさらに向上できる。次に、第２の実施の形態として、コンテキストを用いた符号化処理と復号化処理について説明する。
【００８３】
［２−１．エントロピー符号化部の構成］
図１３は、閾値をコンテキストに応じて最適化するエントロピー符号化部の構成を示している。エントロピー符号化部１５ａは、有意ビット検出処理部１５１と符号化選択部１５２ａ、可変長符号化部１５３ａ、固定長符号化部１５４を有している。
【００８４】
有意ビット検出処理部１５１は、符号化対象のビット深度よりＭＳＢ側に存在する有意データ数ＮＢを算出して符号化選択部１５２ａに出力する。
【００８５】
符号化選択部１５２ａは、有意データ数ＮＢと符号化対象ブロックのビット深度ＢＤに基づき、コードブロックのビット深度毎に、ビットプレーンを可変長符号化または固定長符号化のいずれで符号化するか判別する。符号化選択部１５２ａは、可変長符号化を行うと判別したビット深度のビットプレーンを可変長符号化部１５３ａに出力する。また、符号化選択部１５２ａは、固定長符号化を行うと判別したビット深度のビットプレーンを固定長符号化部１５４に出力する。さらに、符号化選択部１５２ａは、ビット深度と比較される閾値Ｔｈdや有意データ数ＮＢと比較される閾値Ｔｈcとして、コンテキストＴＥaに応じて最適化されている閾値Ｔｈd，Ｔｈcを用いて、可変長符号化と固定長符号化の選択を行う。
【００８６】
可変長符号化部１５３ａは、符号化選択部１５２ａで選択されたビットプレーンの可変長符号化を行い、得られた符号化データＢＳを図１に示すポスト量子化部１６に出力する。さらに、可変長符号化部１５３ａは、偏りの大きい係数ビットだけでなくコンテキストＴＥbに応じて最適化されている符号化テーブルを用いて可変長符号化を行う。
【００８７】
固定長符号化部１５４は、符号化選択部１５２ａで選択されたビットプレーンの固定長符号化を行い、得られた符号化データＢＳを図１に示すポスト量子化部１６に出力する。
【００８８】
なお、コンテキストＴＥaとコンテキストＴＥtは、等しくともあるいは相違してもよい。さらに、符号化選択部１５２ａは、コンテキストＴＥaに応じて閾値Ｔｈd，Ｔｈcのいずれかを変更する構成であってもよい。さらに、符号化選択部１５２ａと可変長符号化部１５３ａのいずれかでコンテキストを用いる構成であってもよい。また、後述するエントロピー復号化部２２ａも同様である。
【００８９】
［２−２．エントロピー符号化部の動作］
次に、エントロピー符号化部１５ａの動作について説明する。図１４は、エントロピー符号化部１５ａの動作を示すフローチャートである。なお、図１４は、ビット深度がコンテキストに応じて決定した閾値Ｔｈda以上となったとき、または１つ上位のビットプレーンにおける有意データ数がコンテキストに応じて決定した閾値Ｔｈca以上となったとき、可変長符号化から固定長符号化に切り換えて符号化を行う場合を示している。また、復号化において、可変長符号化から固定長符号化への切り換えをビットプレーン単位で正しく行うことができるようにするため、ビット深度が閾値Ｔｈda以上であるとき可変長符号化から固定長符号化への切り換えを行う。また、１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈca以上となったとき、可変長符号化から固定長符号化への切り換えを行う。
【００９０】
ステップＳＴ３１でエントロピー符号化部１５ａは、コードブロック毎に係数データを入力してステップＳＴ３２に進む。
【００９１】
ステップＳＴ３２でエントロピー符号化部１５ａは、ビット深度毎にビットプレーンを入力してステップＳＴ３３に進む。エントロピー符号化部１５ａは、入力された符号化対象のコードブロックを、ＭＳＢ側からＬＳＢ側に向かってビット深度毎に、ビットプレーンを入力する。
【００９２】
ステップＳＴ３３でエントロピー符号化部１５ａは、コンテキストに応じた設定を行う。エントロピー符号化部１５ａは、コンテキストに応じて最適化されている閾値Ｔｈda，Ｔｈcaを設定する。また、エントロピー符号化部１５ａは、偏りの大きい係数ビットだけでなくコンテキストに応じて最適化されている符号化テーブルを用いるように設定してステップＳＴ３４に進む。
【００９３】
ステップＳＴ３４でエントロピー符号化部１５ａは、ビット深度が閾値Ｔｈda以上であるか判別する。エントロピー符号化部１５ａは、ビット深度が閾値Ｔｈda未満であるときステップＳＴ３５に進み、閾値Ｔｈda以上であるときステップＳＴ３８に進む。
【００９４】
ステップＳＴ３５でエントロピー符号化部１５ａは、有意データ数ＮＢをカウントしてステップＳＴ３６に進む。エントロピー符号化部１５は、符号化対象のビットプレーンよりも１つ上位のビットプレーンにおける有意データ数ＮＢをカウントする。
【００９５】
ステップＳＴ３６でエントロピー符号化部１５ａは、有意データ数ＮＢが閾値Ｔｈca以上であるか判別する。エントロピー符号化部１５ａは、有意データ数ＮＢが閾値Ｔｈca未満であるときステップＳＴ３７に進み、有意データ数ＮＢが閾値Ｔｈca以上であるときステップＳＴ３８に進む。
【００９６】
ステップＳＴ３７でエントロピー符号化部１５ａは、可変長符号化を行う。エントロピー符号化部１５ａは、ビットプレーンを可変長符号化してステップＳＴ３９に進む。また、エントロピー符号化部１５ａは、偏りの大きい係数ビットだけでなくコンテキストに応じて最適化されている符号化テーブルを用いて可変長符号化を行う。
【００９７】
ステップＳＴ３８でエントロピー符号化部１５ａは、固定長符号化を行う。エントロピー符号化部１５ａは、ビットプレーンを固定長符号化してステップＳＴ３９に進む。
【００９８】
ステップＳＴ３９でエントロピー符号化部１５ａは、全てのビット深度について処理終了であるか判別する。エントロピー符号化部１５ａは、処理していないビット深度が残っているときはステップＳＴ３２に戻り、新たなビット深度のビットプレーンを入力して処理を行う。また、エントロピー符号化部１５ａは、処理していないビット深度が残っていないときステップＳＴ４０に進む。
【００９９】
ステップＳＴ４０でエントロピー符号化部１５ａは、全てのコードブロックについて処理が終了したか判別する。エントロピー符号化部１５ａは、処理していないコードブロックが残っているときはステップＳＴ３１に戻り、新たなコードブロックの係数データを入力して処理を行う。また、エントロピー符号化部１５ａは、処理していないコードブロックが残っていないときエントロピー符号化処理を終了する。
【０１００】
このように、エントロピー符号化部１５ａは、コンテキストに応じた閾値Ｔｈda，Ｔｈcaを用いて可変長符号化と固定長符号化の選択を行う。さらに、エントロピー符号化部１５ａは、偏りの大きい係数ビットだけでなくコンテキストに応じた符号化テーブルを用いて可変長符号化を行う。したがって、エントロピー符号化部１５ａは、符号化効率をさらに高めることができる。
【０１０１】
［２−３．エントロピー復号化部の構成］
図１５は、エントロピー復号化部２２ａの構成を示している。エントロピー復号化部２２ａは、復号化選択部２２１ａと可変長復号化部２２２ａと固定長復号化部２２３および有意ビット検出処理部２２４を備えている。
【０１０２】
復号化選択部２２１ａは、可変長復号化部２２２ａまたは固定長復号化部２２３のいずれかを選択して、選択した復号化部に符号化データＢＳを出力する。復号化選択部２２１ａは、エントロピー符号化部１５ａの符号化選択部１５２ａと対応した選択処理を行い、ビット深度と閾値Ｔｈdaの比較結果および／または１つ上位のビットプレーンにおける有意データ数ＮＢと閾値Ｔｈcaとの比較結果に基づいて可変長復号化から固定長復号化に切り換えて復号化を行う。なお、閾値は、予めエントロピー符号化部とエントロピー復号化部で決めておくようにしてもよく、ヘッダ情報にエントロピー符号化部で用いた閾値を含めるようにしてもよい。また、閾値は、符号化と同様にコンテキストＴＥaに応じて最適化されている閾値を用いる。
【０１０３】
可変長復号化部２２２ａは、符号化データＢＳの可変長復号化を行って得られたビットプレーンの係数ビットＤＴを、有意ビット検出処理部２２４と図９に示す係数ビットデモデリング部２３に出力する。また、可変長復号化部２２２ａは、エントロピー符号化部１５ａの可変長符号化部１５３ａで用いられている符号化テーブルに対応した復号化テーブルを用いて可変長復号化を行う。すなわち、偏りの大きい係数ビットだけでなくコンテキストＴＥtに応じて最適化されている復号化テーブルを用いて可変長復号化を行う。
【０１０４】
固定長復号化部２２３は、符号化データの固定長復号化を行って得られたビットプレーンの係数ビットＤＴを、図９に示す係数ビットデモデリング部２３に出力する。
【０１０５】
有意ビット検出処理部２２４は、可変長復号化部２２２ａから出力されたビットプレーンの係数ビットＤＴから有意データ数ＮＢを検出して、有意データ数ＮＢを復号化選択部２２１ａに出力する。
【０１０６】
［２−４．エントロピー復号化部の動作］
図１６は、エントロピー復号化部の動作を示すフローチャートである。なお、図１６は、ビット深度が閾値Ｔｈda以上となったとき、または有意データ数ＮＢが閾値Ｔｈca以上となったとき、可変長復号化から固定長復号化に切り換えて復号化を行う場合を示している。なお、エントロピー復号化部は、１つ上位のビットプレーンにおける有意データ数ＮＢが閾値Ｔｈca以上となったとき、可変長復号化から固定長復号化への切り換えを行う。
【０１０７】
ステップＳＴ５１でエントロピー復号化部２２ａは、コンテキストに応じた設定を行う。エントロピー復号化部２２ａは、コンテキストに応じて最適化されている閾値Ｔｈda，Ｔｈcaを設定する。また、エントロピー復号化部２２ａは、偏りの大きい係数ビットだけでなくコンテキストに応じて最適化されている符号化テーブルを用いるように設定してステップＳＴ５２に進む。なお、コンテキストは、予めエントロピー符号化部とエントロピー復号化部で決めておくようにしてもよく、ヘッダ情報にコンテキストを含めるようにしてもよい。
【０１０８】
ステップＳＴ５２でエントロピー復号化部２２ａは、ビット深度が閾値Ｔｈda以上であるか判別する。エントロピー復号化部２２ａは、復号化を行う符号化データのビット深度が閾値Ｔｈda未満であるときステップＳＴ５３に進み、閾値Ｔｈda以上であるときステップＳＴ５６に進む。
【０１０９】
ステップＳＴ５３でエントロピー復号化部２２ａは、有意データ数ＮＢをカウントする。エントロピー復号化部２２ａは、復号化済みのビットプレーンから最もビット深度が大きいビットプレーンを選択して、選択したビットプレーンにおける有意データ数ＮＢをカウントしてステップＳＴ５４に進む。
【０１１０】
ステップＳＴ５４でエントロピー復号化部２２ａは、有意データ数ＮＢが閾値Ｔｈca以上であるか判別する。エントロピー復号化部２２ａは、有意データ数ＮＢが閾値Ｔｈca未満であるときステップＳＴ５５に進み、閾値Ｔｈca以上であるときステップＳＴ５６に進む。
【０１１１】
ステップＳＴ５５でエントロピー復号化部２２ａは、可変長復号化を行う。エントロピー復号化部２２ａは、エントロピー符号化部１５ａで用いた可変長符号化テーブルに対応した可変長復号化テーブルを用いて可変長復号化を行い、ビットプレーンを生成してステップＳＴ５７に進む。
【０１１２】
ステップＳＴ５６でエントロピー復号化部２２ａは、固定長復号化を行う。エントロピー復号化部２２ａは、エントロピー符号化部１５ａで用いた固定長符号化テーブルに対応した固定長復号化テーブルを用いて固定長復号化を行い、ビットプレーンを生成してステップＳＴ５７に進む。
【０１１３】
ステップＳＴ５７でエントロピー復号化部２２ａは、全てのビット深度についての処理終了であるか判別する。エントロピー復号化部２２ａは、復号化されていないビット深度が残っているときはステップＳＴ５２に戻り、復号化処理を継続する。また、エントロピー復号化部２２ａは、コードブロックの各ビット深度のビットプレーンが得られたときステップＳＴ５８に進む。
【０１１４】
ステップＳＴ５８でエントロピー復号化部２２ａは、全てのコードブロックについて処理が終了したか判別する。エントロピー復号化部２２ａは、復号化されていない符号化データが残っているときはステップＳＴ５２に戻り、復号化を行うことで新たなコードブロックの各ビット深度のビットプレーンを得る。また、エントロピー復号化部２２ａは、処理していない符号化データが残っていないときエントロピー復号化処理を終了する。
【０１１５】
このような復号化をエントロピー復号化部２２ａで行えば、コンテキストに応じて閾値や符号化テーブルの設定が行われても、符号化データの復号化を正しく行うことができる。
【０１１６】
このように、第２の実施の形態によれば、コンテキスト（Significant bitの個数、ビットデプスなど）に応じて適応的に可変長符号化と固定長符号化の選択が行われる。また、可変長符号化では、コンテキストに応じて適応な可変長符号化テーブルが用いられる。それゆえ、係数ビットの偏りが大きい場合はそれに最適化したハフマンテーブルで可変長符号化し、偏りが小さい場合は固定長符号化で符号化することで符号化効率が高くなる。これにより、ポスト量子化に起因して画像に生じる違和感や不明瞭感をさらに抑制することが可能となる。
【０１１７】
＜３．符号化と復号化をコンピュータで行う場合＞
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータを用いる。または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどを用いて、プログラム記録媒体からソフトウェアをインストールする。
【０１１８】
図１７は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示す図である。
【０１１９】
コンピュータ６０において、ＣＰＵ（Central Processing Unit）６１、ＲＯＭ（Read Only Memory）６２、ＲＡＭ（Random Access Memory）６３は、バス６４により相互に接続されている。
【０１２０】
バス６４には、さらに、入出力インタフェース６５が接続されている。入出力インタフェース６５には、キーボード、マウスなどよりなるユーザインタフェース部６６、画像データを入力するための入力部６７、ディスプレイなどよりなる出力部６８、ハードディスクや不揮発性のメモリなどよりなる記録部６９等が接続される。さらに、入出力インタフェース６５には、ネットワークインタフェースなどよりなる通信部７０、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア８０を駆動するドライブ７１が接続されている。
【０１２１】
以上のように構成されるコンピュータでは、ＣＰＵ６１が、例えば、記録部６９に記録されているプログラムを、入出力インタフェース６５およびバス６４を介して、ＲＡＭ６３にロードして実行することにより、上述した一連の処理が行われる。
【０１２２】
コンピュータ（ＣＰＵ６１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（ＣＤ−ＲＯＭ(Compact Disc-Read Only Memory),ＤＶＤ(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア８０に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０１２３】
そして、プログラムは、リムーバブルメディア８０をドライブ７１に装着することにより、入出力インタフェース６５を介して、記録部６９にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部７０で受信し、記録部６９にインストールすることができる。その他、プログラムは、ＲＯＭ６２や記録部６９に、予めインストールしておくことができる。
【０１２４】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであってもよいし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであってもよい。
【０１２５】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であり、本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【産業上の利用可能性】
【０１２６】
この発明の画像符号化装置および方法、画像復号化装置および方法、並びにプログラムでは、画像データの周波数変換を行い係数データが生成されて、この係数データからビットプレーン毎に上位のビットプレーンで有意ビットが検出されている係数データの個数が検出される。また、検出された係数データの個数とビットプレーンのビット深度に基づいて、ビットプレーン毎に可変長符号化または固定長符号化が行われて符号化データの生成が行われる。また、この符号化データの復号化では、符号化データを復号化して得たビットプレーンにおける上位のビットプレーンで有意ビットが検出されている係数データの個数とビットプレーンのビット深度に基づいて、可変長復号化または固定長復号化が行われる。このため、入力された係数データの特徴に応じて可変長符号化と固定長符号化を区分できるので、安定して符号化効率を高めることが可能となる。すなわち、ポスト量子化に起因して画像に生じる違和感や不明瞭感を抑制できることから、画像データの記録再生装置や画像データの通信装置等に適している。
【符号の説明】
【０１２７】
１０・・・画像符号化装置、１１・・・色変換部、１２・・・直交変換部、１３・・・量子化部、１４・・・係数ビットモデリング部、１５，１５ａ・・・エントロピー符号化部、１６・・・ポスト量子化部、１７・・・ヘッダ作成部、２０・・・画像復号化装置、２１・・・ヘッダ解析部、２２，２２ａ・・・エントロピー復号化部、２３・・・係数ビットデモデリング部、２４・・・逆量子化部、２５・・・係数データ補正処理部、２６・・・逆直交変換部、２７・・・逆色変換部、６０・・・コンピュータ、６１・・・ＣＰＵ、６２・・・ＲＯＭ、６３・・・ＲＡＭ、６４・・・バス、６５・・・入出力インタフェース、６６・・・ユーザインタフェース部、６７・・・入力部、６８・・・出力部、６９・・・記録部、７０・・・通信部、７１・・・ドライブ、８０・・・リムーバブルメディア、１５１，２２４・・・有意ビット検出処理部、１５２，１５２ａ・・・符号化選択部、１５３，１５３ａ・・・可変長符号化部、１５４・・・固定長符号化部、２２１，２２１ａ・・・復号化選択部、２２２，２２２ａ・・・可変長復号化部、２２３・・・固定長復号化部
【図１】
2011193335.tif 000003
【図２】
2011193335.tif 000004
【図３】
2011193335.tif 000005
【図４】
2011193335.tif 000006
【図５】
2011193335.tif 000007
【図６】
2011193335.tif 000008
【図７】
2011193335.tif 000009
【図８】
2011193335.tif 000010
【図９】
2011193335.tif 000011
【図１０】
2011193335.tif 000012
【図１１】
2011193335.tif 000013
【図１２】
2011193335.tif 000014
【図１３】
2011193335.tif 000015
【図１４】
2011193335.tif 000016
【図１５】
2011193335.tif 000017
【図１６】
2011193335.tif 000018
【図１７】
2011193335.tif 000019