(57)【要約】【課題】ブロック単位で画像の符号化を行ってもブロック歪みの少ない復号画像を得ることができるようにする。【解決手段】帯域分割部２２は、ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する。周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えて再度周波数帯域分割を行う。ブロックの端部で画像データを拡張して周波数帯域分割を繰り返しても、拡張された画像データを用いて生成された低域成分の係数データの位置が固定した位置とならず、拡張された画像データを用いたことによる帯域分離精度の低下による影響が繰り返し反映されてしまうことがない。エントロピー符号化部２４は、複数の周波数帯域毎の係数データを符号化する。【選択図】        図５
2011217347.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する周波数帯域分割を行い、該周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから該低域成分の係数データの周波数帯域分割を行う帯域分割部と、
前記複数の周波数帯域毎の係数データの符号化を行う符号化部と
を有する画像符号化装置。
【請求項２】
前記帯域分割部は、前記ブロックの端部で画像データを拡張して周波数帯域分割を行い、拡張された画像データを用いて生成された係数データを移動させる請求項１記載の画像符号化装置。
【請求項３】
前記帯域分割部は、前記低域成分の係数データにおいて、係数データの位置を反転させることで、前記拡張された画像データを用いて生成された係数データを移動させる請求項２記載の画像符号化装置。
【請求項４】
前記帯域分割部は、リフティング演算とデインターリーブを行って、前記複数の周波数帯域毎の係数データを生成する請求項２記載の画像符号化装置。
【請求項５】
前記係数データを所定数毎に区分したサブブロック毎に、前記係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化を推定する歪特性推定部と、
前記推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置を検出して、前記ビットプレーンのトランケーションを行うトランケーション部とを有し、
前記歪特性推定部は、推定結果に対して重み付けを行い、
前記トランケーション部は、前記重み付けされた推定結果に基づいて、前記ビットプレーンのトランケーションを行う請求項１記載の画像符号化装置。
【請求項６】
前記歪特性推定部は、前記ブロックの端に位置するサブブロックが、他の位置のサブブロックよりもトランケーションされ難くなるように推定結果に対して重み付けを行う請求項５記載の画像符号化装置。
【請求項７】
前記係数データの最上位有意ビットプレーンと前記サブブロック毎にゼロビットプレーンを検出する検出部を有し、
前記符号化部は、前記検出部と前記トランケーション部の検出結果および前記係数データを、それぞれ１つまたは複数のコンテキストに応じて符号化する請求項６記載の画像符号化装置。
【請求項８】
前記検出部で検出された前記ゼロビットプレーンを示す数値列の直交変換を行うゼロビットプレーン直交変換部を有し、
前記符号化部は、前記検出部における前記ゼロビットプレーンの検出結果に代えて、前記ゼロビットプレーン直交変換部で得られた変換結果を用いる請求項７記載の画像符号化装置。
【請求項９】
帯域分割部で、ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する周波数帯域分割を行い、該周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから該低域成分の係数データの周波数帯域分割を行うステップと、
符号化部で、前記複数の周波数帯域毎の係数データの符号化を行うステップと
を具備する画像符号化方法。
【請求項１０】
ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する周波数帯域分割を行い、該周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから該低域成分の係数データの周波数帯域分割を行うステップと、
前記複数の周波数帯域毎の係数データの符号化を行うステップと
を含む処理をコンピュータで実行させるプログラム。
【請求項１１】
ブロック単位の画像データの周波数帯域分割を行い、複数の周波数帯域毎の係数データを生成する帯域分割部と、
前記複数の周波数帯域毎の係数データの符号化を行う符号化部と、
前記係数データを所定数毎に区分したサブブロック毎に、前記係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化を推定して、推定結果に対して重み付けを行う歪特性推定部と、
前記重み付けされた推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置を検出して、前記ビットプレーンのトランケーションを行うトランケーション部と
を有する画像符号化装置。
【請求項１２】
前記歪特性推定部は、前記ブロックの端に位置するサブブロックが、他の位置のサブブロックよりもトランケーションされ難くなるように推定結果に対して重み付けを行う請求項１０記載の画像符号化装置。
【請求項１３】
帯域分割部で、ブロック単位の画像データの周波数帯域分割を行い、複数の周波数帯域毎の係数データを生成するステップと、
符号化部で、前記複数の周波数帯域毎の係数データの符号化を行うステップと、
歪特性推定部で、前記係数データを所定数毎に区分したサブブロック毎に、前記係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化を推定して、推定結果に対して重み付けを行うステップと、
トランケーション部で、前記重み付けされた推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置を検出して、前記ビットプレーンのトランケーションを行うステップと
を具備する画像符号化方法。
【請求項１４】
ブロック単位の画像データの周波数帯域分割を行い、複数の周波数帯域毎の係数データを生成するステップと、
前記複数の周波数帯域毎の係数データの符号化を行うステップと、
前記係数データを所定数毎に区分したサブブロック毎に、前記係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化を推定して、推定結果に対して重み付けを行うステップと、
前記重み付けされた推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置を検出して、前記ビットプレーンのトランケーションを行うステップと
を含む処理をコンピュータで実行させるプログラム。
【請求項１５】
ブロック単位の画像データの周波数帯域分割を行うことによって得られた係数データが符号化されている符号化データを復号化する復号化部と、
前記復号化によって得られた係数データを並べ替え前の順序に戻してから、複数の周波数帯域毎の係数データの周波数帯域合成を行い、ブロック単位の画像データを生成する帯域合成部と
を有する画像復号化装置。
【請求項１６】
復号化部で、ブロック単位の画像データの周波数帯域分割を行うことによって得られた係数データが符号化されている符号化データを復号化するステップと、
帯域合成部で、前記復号化によって得られた係数データを並べ替え前の順序に戻してから、複数の周波数帯域毎の係数データの周波数帯域合成を行い、ブロック単位の画像データを生成するステップと
を備える画像復号化方法。
【請求項１７】
ブロック単位の画像データの周波数帯域分割を行うことによって得られた係数データが符号化されている符号化データを復号化するステップと、
前記復号化によって得られた係数データを並べ替え前の順序に戻してから、複数の周波数帯域毎の係数データの周波数帯域合成を行い、ブロック単位の画像データを生成するステップと
を含む処理をコンピュータで実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像符号化装置とその方法、画像復号化装置とその方法、およびプログラムに関する。詳しくは、ブロック歪みが少なく符号化効率を高めることができるようにする。
【背景技術】
【０００２】
近年、画像データの高解像度化やハイフレームレート化に伴い、画像処理システムにおいて、単位時間内で限られたリソースの中で多くのデータを扱うことは非常に困難となっている。例えば図１に示すように、画像処理システム８０で画像処理を行う過程において、メモリ８５を利用する場合、大きな容量のメモリと、データ転送に必要な広いバス帯域幅を確保する必要となるため、システムの小型化やコスト削減が困難となってしまう。そこで、例えば特許文献１では、図２に示すように、画像処理システム８０とメモリ８５との間に画像符号化部８１を設けて、画像データをメモリに記憶する前に符号化してデータ量を削減することが行われている。また、画像処理システム８０とメモリ８５との間に画像復号化部８２を設けて、メモリ８５に記憶されている符号化データを取り出すときに復号化して画像データを得ることができるようになされている。
【０００３】
ここで、特許文献１では、メモリ格納時の符号化方式に比較的処理量の少ない差分パルス符号化変調(以下、「ＤＰＣＭ(differential pulse code modulation)」という)を用いている。例えば１画素が８ビットである５画素分（４０ビット）のデータを、最初の画素は８ビット、２つ目以降の画素は隣り合う画素との差分値をとって量子化して６ビットとする。したがって、ＤＰＣＭ後は５画素で３２ビットとなり、４／５の圧縮となる。また、特許文献１では、ＤＰＣＭの単位を小さなブロック単位やバス転送単位で実現することで、ランダムアクセスを可能とし、本来画像処理システムが持つメモリアクセス効率を保ちながら、メモリ容量とバス帯域幅の低減がはかられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３９１８２６３号
【非特許文献】
【０００５】
【非特許文献１】David Taubman, Michael Marcellin 著  JPEG2000: Image Compression Fundamentals, Standards and Practice(The Springer International Series in Engineering and Computer Science)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、特許文献１で示されている符号化方式は簡易なＤＰＣＭであるためメモリアクセス効率を保つことは容易であるが、メモリから取り出して復号化された画像データには顕著な劣化を伴ってしまう可能性がある。
【０００７】
また、従来の一般的な画像符号化方式では、より符号化効率の高いものがある（例えばＨ．２６４／ＡＶＣ（Advanced Video Coding）やＪＰＥＧ(Joint Photographic Experts Group) ２０００）。しかし、このような画像符号化方式は、上述のように簡易で小さなブロック単位やバス転送単位という条件で効率的に符号化することは困難である。
【０００８】
また、従来の一般的な画像符号化方式は、符号化効率の観点から固定長符号化よりも可変長符号化を用いることが多く、必ずしも特許文献１で示すＤＰＣＭのように所望のビット長になるとは限らない。したがって、定められたビット長以下となるように符号化を行い、残りを無効なビットでパディングしてバス転送単位に合わせる必要がある。しかし、小さなバス転送単位において、このような無効ビットが含まれることは効率的ではない。
【０００９】
さらに、従来の一般的な画像符号化方式では、画像をブロックに分割して符号化した場合に、ブロックの境界にブロック歪みが生じる問題が知られている。このブロック歪みを低減するために、一般的には復号化においてデブロッキングフィルタが用いられているが、符号化においてブロック歪みを軽減することはなされていない。
【００１０】
そこで、この発明では、ブロック単位で画像の符号化を行ってもブロック歪みの少ない復号画像を得ることができる画像符号化装置と符号化方法と、符号化された画像を復号化する画像復号化装置と画像復号化方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
この発明の第１の側面は、ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する周波数帯域分割を行い、該周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えて該低域成分の係数データの周波数帯域分割を行う帯域分割部と、前記複数の周波数帯域毎の係数データの符号化を行う符号化部とを有する画像符号化装置にある。
【００１２】
この発明においては、ブロック単位の画像データの周波数帯域分割が行われる。周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから低域成分の係数データの周波数帯域分割が行われて、複数の周波数帯域毎の係数データが生成される。周波数帯域分割では、例えばリフティング演算とデインターリーブが行われる。リフティング演算では、ブロックの端部で画像データの拡張が行われて、この拡張された画像データを用いて係数データが生成される。また、リフティング演算によって生成された係数データは、デインターリーブによって周波数帯域毎に区分される。さらに、低域成分の係数データでは、拡張された画像データを用いて生成された係数データの位置が移動するように、空間的な位置の並べ替えが行われる。例えば、係数データの位置が反転される。また、係数データは、所定数毎にサブブロックとして区分されて、サブブロック毎に係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化が推定される。さらに、推定結果に対して、ブロックの端に位置するサブブロックが、他の位置のサブブロックよりもトランケーションされ難くなるように重み付けされて、重み付け後の推定結果に基づいて、画像の歪み量が少なく符号量が目標符号量以内となるようにトランケーションが行われて符号化される。
【００１３】
この発明の第２の側面は、帯域分割部で、ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する周波数帯域分割を行い、該周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから該低域成分の係数データの周波数帯域分割を行うステップと、符号化部で、前記複数の周波数帯域毎の係数データの符号化を行うステップと
を具備する画像符号化方法にある。
【００１４】
この発明の第３の側面は、ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する周波数帯域分割を行い、該周波数帯域分割では、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから該低域成分の係数データの周波数帯域分割を行うステップと、前記複数の周波数帯域毎の係数データの符号化を行うステップとを含む処理をコンピュータで実行させるプログラムにある。
【００１５】
この発明の第４の側面は、ブロック単位の画像データの周波数帯域分割を行い、複数の周波数帯域毎の係数データを生成する帯域分割部と、前記複数の周波数帯域毎の係数データを符号化する符号化部と、前記係数データを所定数毎に区分したサブブロック毎に、前記係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化を推定して、推定結果に対して重み付けを行う歪特性推定部と、前記重み付けされた推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置を検出して、前記ビットプレーンのトランケーションを行うトランケーション部とを有する画像符号化装置にある。
【００１６】
この発明の第５の側面は、帯域分割部で、ブロック単位の画像データの周波数帯域分割を行い、複数の周波数帯域毎の係数データを生成するステップと、符号化部で、前記複数の周波数帯域毎の係数データを符号化するステップと、歪特性推定部で、前記係数データを所定数毎に区分したサブブロック毎に、前記係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化を推定して、推定結果に対して重み付けを行うステップと、トランケーション部で、前記重み付けされた推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置を検出して、前記ビットプレーンのトランケーションを行うステップとを具備する画像符号化方法にある。
【００１７】
この発明の第６の側面は、ブロック単位の画像データの周波数帯域分割を行い、複数の周波数帯域毎の係数データを生成するステップと、前記複数の周波数帯域毎の係数データを符号化するステップと、前記係数データを所定数毎に区分したサブブロック毎に、前記係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化を推定して、推定結果に対して重み付けを行うステップと、前記重み付けされた推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置を検出して、前記ビットプレーンのトランケーションを行うステップとを含む処理をコンピュータで実行させるプログラムにある。
【００１８】
この発明の第７の側面は、ブロック単位の画像データの周波数帯域分割を行うことによって得られた係数データが符号化されている符号化データを復号化する復号化部と、前記復号化によって得られた係数データを並べ替え前の順序に戻してから、複数の周波数帯域毎の係数データの周波数帯域合成を行い、ブロック単位の画像データを生成する帯域合成部とを有する画像復号化装置にある。
【００１９】
この発明の第８の側面は、復号化部で、ブロック単位の画像データの周波数帯域分割を行うことによって得られた係数データが符号化されている符号化データを復号化するステップと、帯域合成部で、前記復号化によって得られた係数データを並べ替え前の順序に戻してから、複数の周波数帯域毎の係数データの周波数帯域合成を行い、ブロック単位の画像データを生成するステップとを備える画像復号化方法にある。
【００２０】
この発明の第９の側面は、ブロック単位の画像データの周波数帯域分割を行うことによって得られた係数データが符号化されている符号化データを復号化するステップと、前記復号化によって得られた係数データを並べ替え前の順序に戻してから、複数の周波数帯域毎の係数データの周波数帯域合成を行い、ブロック単位の画像データを生成するステップとを含む処理をコンピュータで実行させるプログラムにある。
【００２１】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、光ディスクや磁気ディスク、半導体メモリなどの記憶媒体、あるいは、ネットワークなどの通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【発明の効果】
【００２２】
この発明によれば、ブロック単位の画像データから複数の周波数帯域毎の係数データを生成する周波数帯域分割において、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えて該低域成分の係数データの周波数帯域分割が行われる。また、生成された複数の周波数帯域毎の係数データの符号化が行われる。このため、ブロックの端部で画像データを拡張して周波数帯域分割を繰り返しても、拡張された画像データを用いて生成された低域成分の係数データの位置が固定した位置とならない。したがって、拡張された画像データを用いたことによる帯域分離精度の低下の影響が繰り返し反映されてしまうことがなく、ブロック単位で画像の符号化を行ってもブロック歪みの少ない復号画像を得ることができる。
【図面の簡単な説明】
【００２３】
【図１】従来の画像処理システムについて説明するための図である。
【図２】従来の他の画像処理システムについて説明するための図である。
【図３】画像処理装置の構成を示す図である。
【図４】画像処理装置の動作を示すフローチャートである。
【図５】第１の実施の形態における画像符号化部の構成を示す図である。
【図６】第１の実施の形態における画像符号化部の動作を示すフローチャートである。
【図７】５×３リフティング構成を用いた場合の帯域分割部の動作を説明するための図である。
【図８】画像データの拡張を説明するための図である。
【図９】２次元の帯域分割を示す図である。
【図１０】ＭＤＷＴ係数データの絶対値をビット深度方向に分解した図である。
【図１１】ＺＢＰに対する変換テーブルを示す図である。
【図１２】ＺＢＰのインデックスＩＤＸzbpのエントロピー符号化方法を行う場合の動作を示すフローチャートである。
【図１３】ＺＢＰのインデックスＩＤＸzbpのエントロピー符号化方法を行う場合の他の動作を示すフローチャートである。
【図１４】ＴＰに対する変換テーブルを示す図である。
【図１５】ＴＰのインデックスＩＤＸtpのエントロピー符号化方法を行う場合の動作を示すフローチャートである。
【図１６】ＴＰのインデックスＩＤＸtpのエントロピー符号化方法を行う場合の他の動作を示すフローチャートである。
【図１７】ＳＢ_ｆｌａｇを説明するための図である。
【図１８】ビットプレーンのエントロピー符号化方法を行う場合の動作を示すフローチャートである。
【図１９】Ｒ−Ｄ曲線を示す図である。
【図２０】トランケーション部の動作を説明するための図（その１）である。
【図２１】トランケーション部の動作を説明するための図（その２）である。
【図２２】トランケーション部の動作を示すフローチャートである。
【図２３】フォーマットの一例を示す図である。
【図２４】第１の実施の形態における画像復号化部の構成を示す図である。
【図２５】第１の実施の形態における画像復号化部の動作を示すフローチャートである。
【図２６】ＺＢＰのインデックスＩＤＸzbpの復号化動作を示すフローチャートである。
【図２７】ＴＰのインデックスＩＤＸtpの復号化動作を示すフローチャートである。
【図２８】ＺＢＰのインデックスＩＤＸzbpおよびＴＰのインデックスＩＤＸtpを復号化した結果を示す図である。
【図２９】係数データの絶対値を示すビットストリームの復号化動作を示すフローチャートである。
【図３０】推定データを示す図である。
【図３１】帯域合成部の動作を説明するための図である。
【図３２】画像符号化部の簡略構成を示す図である。
【図３３】画像復号化部の簡略構成を示す図である。
【図３４】第２の実施の形態における画像復号化部の構成を示す図である。
【図３５】第２の実施の形態における画像復号化部の動作を示すフローチャートである。
【図３６】Ｈａａｒ変換の変換過程を示す図である。
【図３７】ＺＢＰ直交変換結果ＤＴtzbpとインデックスＩＤＸtzbpとシンボルの関係を示す変換テーブルである。
【図３８】コンテキストとインデックスＩＤＸtzbpとシンボルの関係を示す変換テーブルである。
【図３９】第３の実施の形態における画像復号化部の構成を示す図である。
【図４０】第３の実施の形態における画像復号化部の動作を示すフローチャートである。
【図４１】逆Ｈａａｒ変換の変換過程を示す図である。
【図４２】第４の実施の形態における画像符号化部の構成を示す図である。
【図４３】第４の実施の形態における画像復号化部の構成を示す図である。
【図４４】コンピュータのハードウェア構成を例示した図である。
【発明を実施するための形態】
【００２４】
以下、発明を実施するための形態について説明する。なお、画像データが複数のコンポーネント信号で構成されている場合（例えば、画像データがＲＧＢ信号やＹＵＶ信号等である場合）、コンポーネント信号毎に符号化や復号化を行われる。しかし、説明を簡単とするため、１つのコンポーネント信号の符号化と復号化についてのみ説明を行う。説明は以下の順序で行う。
１．画像処理装置の構成と動作
２．第１の実施の形態
３．第２の実施の形態
４．第３の実施の形態
５．第４の実施の形態
６．符号化と復号化をコンピュータで行う場合
【００２５】
＜１．画像処理装置の構成と動作＞
図３は、画像処理装置１０の構成を示している。画像処理装置１０は、画像符号化部２０と画像復号化部３０を有している。画像符号化部２０は、例えば撮像素子や画像処理システム部１２などから出力された画像データをＭ×Ｎ画素のブロック単位で符号化して符号化データを出力する機能を有する。なお、符号化データは、例えばメモリやハードディスクなどのメディア１４やネットワークを介して画像復号化部３０へ伝送される。画像復号化部３０は、符号化データの復号化を行いＭ×Ｎ画素のブロック単位の画像データを出力する。
【００２６】
図４は画像処理装置１０の動作を示すフローチャートである。ステップＳＴ１で画像符号化部２０は、画像データの符号化を行う。画像符号化部２０は、画像データをＭ×Ｎ画素のブロック単位で符号化して、符号化データを生成してステップＳＴ２に進む。ステップＳＴ２で画像符号化部２０は、メモリ，メディア，ネットワーク等を介して、符号化データを画像復号化部３０に伝送する。ステップＳＴ３で画像復号化部３０は、符号化データの復号化を行う。画像復号化部３０は、伝送された符号化データの復号化を行い、Ｍ×Ｎ画素のブロック単位の画像データを得る。
【００２７】
このように、画像符号化部２０は、Ｍ×Ｎ画素のブロック単位で画像データの符号化を行う。また、画像復号化部３０は、画像符号化部２０で生成された符号化データの復号化を行い、Ｍ×Ｎ画素のブロック単位の画像データを得る。このようにすれば、ブロック単位で処理が可能となり、ランダムアクセス等を容易に行うことが可能となる。さらに、不要な画像部分のブロックについては符号化や復号化を行わないようにできるので、メモリアクセス効率を保ちながら、メモリ容量とバス帯域幅の低減をはかることが可能となる。
【００２８】
また、画像符号化部２０はブロック単位で画像データの符号化を行っても、ブロック歪みを軽減できるように画像データの符号化を行う。
【００２９】
＜２．第１の実施の形態＞
［２−１．第１の実施の形態における画像符号化部の構成］  
図５は、第１の実施の形態における画像符号化部の構成を例示している。画像符号化部２０-1は、ＤＣレベルシフト部２１、帯域分割部２２、ＳＢ（Significant Bit）／ＺＢＰ（Zero Bit Plane）検出部２３、エントロピー符号化部２４、歪特性推定部２５、トランケーション部２６およびパッキング部２７を有している。
【００３０】
ＤＣレベルシフト部２１は、帯域分割部２２で周波数帯域分割を効率的に行うために画像データのＤＣ成分のレベルシフトを行う。ＤＣレベルシフト部２１は、例えば入力されたＭ×Ｎ画素のブロック単位の画像データＤＶaからＤＣ値を差し引いて、帯域分割部２２へ出力する。ＤＣレベルシフト部２１は、例えばＭ×Ｎ画素のブロック内の画像データＤＶaの平均値や画像データＤＶaのダイナミックレンジの半分の値をＤＣ値として用いる。なお、ＤＣ値は、画像符号化部２０-1と後述する画像復号化部３０-1であらかじめ同じ値を決めておくようにしてもよく、付加情報として符号化データに付加して、画像復号化部３０-1に供給するようにしてもよい。
【００３１】
帯域分割部２２は、ＤＣレベルシフト部２１から出力された画像データＤＶbの周波数帯域分割を行う。帯域分割部２２は、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから再度周波数帯域分割を行い、例えばＭ×Ｎ画素のブロック内の画像データから複数の周波数帯域毎の係数データを生成する。帯域分割部２２は、例えばＭＤＷＴ（Modified Discrete Wavelet Transform）を用いて周波数帯域分割を行う。このＭＤＷＴでは、ＤＷＴ（Discrete Wavelet Transform）に加えて、帯域分離精度の低下の影響がＭ×Ｎの画素のブロック境界に歪みとして現れやすくなってしまうことを軽減させるため、低域成分の係数データに対して空間的な位置を並べ替える。なお、ＭＤＷＴについての詳細は後述する。帯域分割部２２は、ＭＤＷＴを行うことにより得られたＭＤＷＴ係数データの絶対値ＣＥａをＳＢ／ＺＢＰ検出部２３とエントロピー符号化部２４および歪特性推定部２５へ出力する。また、帯域分割部２２は、ＭＤＷＴを行うことにより得られたＭＤＷＴ係数データの符号ＣＥsをトランケーション部２６へ出力する。
【００３２】
ＳＢ／ＺＢＰ検出部２３は、ＭＤＷＴ係数データの絶対値からＳＢ（Significant Bit）およびＺＢＰ（Zero Bit Plane）を検出する。ＳＢ／ＺＢＰ検出部２３は、ＳＢ検出結果ＤＴsbをエントロピー符号化部２４および歪特性推定部２５へ出力する。また、ＳＢ／ＺＢＰ検出部２３は、ＺＢＰ検出結果ＤＴzbpをエントロピー符号化部２４、歪特性推定部２５およびトランケーション部２６へ供給する。
【００３３】
エントロピー符号化部２４は、ＭＤＷＴ係数データの絶対値ＣＥa、ＳＢ検出結果ＤＴsbおよびＺＢＰ検出結果ＤＴzbpを用いて、ＭＤＷＴ係数データの絶対値ＣＥaのビットプレーン、ＺＢＰ、ＴＰ（Truncation Point）をエントロピー符号化する。エントロピー符号化部２４は、エントロピー符号化を行うことにより得られたビットストリームＢＳaをトランケーション部２６へ出力する。また、エントロピー符号化部２４は、エントロピー符号化を行うことにより得られたビットストリーム長ＤＴbsを歪特性推定部２５およびトランケーション部２６へ出力する。さらに、エントロピー符号化部２４は、エントロピー符号化を行うことにより得られたモードフラグＭＦをパッキング部２７へ出力する。
【００３４】
歪特性推定部２５は、ＭＤＷＴ係数データの絶対値ＣＥa、ＳＢ検出結果ＤＴsb、ＺＢＰ検出結果ＤＴzbpおよびビットストリーム長ＤＴbsに基づいて歪特性の推定を行い、歪特性推定結果Ｅrdをトランケーション部２６へ出力する。具体的には、ＭＤＷＴ係数データのトランケーションを行ったときの符号量の変化と画像の歪み量の変化の関係を歪特性として推定する。
【００３５】
トランケーション部２６は、ビットストリームＢＳa、ビットストリーム長ＤＴbs、ＺＢＰ検出結果ＤＴzbp、符号ＣＥs、歪特性推定結果Ｅrdを用いて、予め設定されている目標符号量以内となるように、符号化対称のビットストリームおよび符号を決定する。すなわち、トランケーション部２６は、画像の歪みが少なく符号量が目標符号量以内となるように、ビットストリームおよび符号のトランケーションを行い、トランケーションが行われたビットストリーム（符号を含む）ＢＳbをパッキング部２７へ出力する。
【００３６】
パッキング部２７は、トランケーションされたビットストリームＢＳbとモードフラグＭＦを所定のフォーマットに変換して、画像復号化部３０-1で復号化可能な符号化データＤpdを作成する。パッキング部２７は、作成した符号化データＤpdを画像符号化部２０-1から出力する。
【００３７】
［２−２．第１の実施の形態における画像符号化部の動作］
図６は、第１の実施の形態における画像符号化部の動作を示すフローチャートである。ステップＳＴ１１で画像符号化部２０-1は、ＤＣレベルシフトを行う。画像符号化部２０-1は、入力された画像データＤＶaに対してＤＣレベルシフト部２１でＤＣレベルシフトを行ってステップＳＴ１２に進む。
【００３８】
ステップＳＴ１２で画像符号化部２０-1は、ＭＤＷＴを行う。画像符号化部２０-1は、ＤＣレベルシフトが行われた画像データＤＶbに対して帯域分割部２２でＭＤＷＴを行い、ＭＤＷＴ係数データの絶対値ＣＥaと符号ＣＥsを得てステップＳＴ１３に進む。
【００３９】
ステップＳＴ１３で画像符号化部２０-1は、ＳＢおよびＺＢＰの検出を行う。画像符号化部２０-1は、ＭＤＷＴ係数データの絶対値ＣＥaからＳＢ／ＺＢＰ検出部２３でＳＢおよびＺＢＰを検出してステップＳＴ１４に進む。
【００４０】
ステップＳＴ１４で画像符号化部２０-1は、エントロピー符号化を行う。画像符号化部２０-1は、ＭＤＷＴ係数データの絶対値ＣＥaのビットプレーンとＳＢ検出結果ＤＴsbとＺＢＰ検出結果ＤＴzbpについてエントロピー符号化部２４でエントロピー符号化を行い、ビットストリームＢＳa、ビットストリーム長ＤＴbsおよびモードフラグＭＦを得てステップＳＴ１５に進む。
【００４１】
ステップＳＴ１５で画像符号化部２０-1は、歪特性の推定を行う。画像符号化部２０-1は、ＭＤＷＴ係数データの絶対値ＣＥa、ＳＢ検出結果ＤＴsb、ＺＢＰ検出結果ＤＴzbpおよびビットストリーム長ＤＴbsに基づき歪特性推定部２５で歪特性を推定してステップＳＴ１６に進む。
【００４２】
ステップＳＴ１６で画像符号化部２０-1は、トランケーションを行う。画像符号化部２０-1は、ビットストリームＢＳa、ビットストリーム長ＤＴbs、ＺＢＰ検出結果ＤＴzbp、符号ＣＥs、歪特性推定結果Ｅrdに基づき、必要に応じてトランケーション部２６でトランケーションを行う。画像符号化部２０-1は、ビットストリーム長が目標符号長に収まらないとき、ビットストリームおよび符号のトランケーションを行い、ビットストリームＢＳbの符号長を目標符号長以下としてステップＳＴ１７に進む。
【００４３】
ステップＳＴ１７で画像符号化部２０-1は、所定のフォーマットへの変換を行う。画像符号化部２０-1は、モードフラグＭＦを含む付加情報と、トランケーションされたビットストリームＢＳbをパッキング部２７で所定のフォーマットに変換して、符号化データＤpdを生成して符号化処理を終了する。
【００４４】
［２−３．画像符号化部の各部の動作］
次に、画像符号化部の主要な部分についての動作について説明する。
［２−３−１．帯域分割部の動作］
帯域分割部２２は、例えばＤＷＴ（Discrete Wavelet Transform）に加えて、低域成分の係数データに対して空間的な位置の並び替えを行い、帯域分離精度の低下の影響がＭ×Ｎの画素のブロック境界に歪みとして現れやすくなってしまうことを軽減させる。帯域分割部２２は、ＤＷＴのように、どのような帯域分割フィルタを用いてもかまわない。
【００４５】
図７は、例えばＪＰＥＧ２０-1００規格でも採用されている５×３リフティング構成を用いた場合の帯域分割部２２の動作を示している。図７の（Ａ）は、ＤＣレベルシフト部２１から出力されたブロック単位の画像データＤＶbを示しており、１ブロック単位が例えば８画素とされている場合を示している。
【００４６】
帯域分割部２２は、ブロック単位の画像データＤＶbに対して、同一画素分の出力を得るため、画像の境界が対称性を持つように、ブロックの端部を基準として信号を折り返すことで画像データの拡張を行う。例えば画像データＤＶbが、図８のように画素位置Ｐ(0)〜Ｐ(N-1)であるとき、帯域分割部２２は、画像の境界が対称性を持つように画像データの拡張を行う。すなわち、画素位置Ｐ(1)の信号を画素位置Ｐ(-1)の信号、画素位置Ｐ(2)の信号を画素位置Ｐ(-2)の信号，画素位置Ｐ(N-2)の信号を画素位置Ｐ(N)の信号とする。なお、画像データの拡張は、ＤＷＴを行ったときに同一画素分の出力が得られる分だけ行えばよい。
【００４７】
帯域分割部２２は、画像データＤＶbの拡張を行い、図７の（Ｂ）に示す拡張画像データを生成する。さらに、帯域分割部２２は、図７の（Ｃ）に示すように、拡張画像データを用いて演算を行い高域成分の係数データＣＥ-hを生成する。なお、高域成分の係数データＣＥ-hを右上がりの斜線部で示す。
【００４８】
次に、帯域分割部２２は、図７の（Ｄ）に示すように、拡張画像データと高域成分の係数データＣＥ-hを用いて演算を行い低域成分の係数データＣＥ-lを生成する。なお、低域成分の係数データＣＥ-lを左上がりの斜線部で示す。
【００４９】
さらに、帯域分割部２２は、高域成分の係数データＣＥ-hと低域成分の係数データＣＥ-lのデインターリーブを行うことで、図７の（Ｅ）に示すように低域成分の係数データＣＥ-lからなるサブバンドと高域成分の係数データＣＥ-hからなるサブバンドを生成する。サブバンドとは、周波数帯域毎に分類された係数データの集合である。なお、拡張された２つの信号を用いて算出された高域成分の係数データＣＥ-h(-1)は、高域成分のサブバンドから除かれる。
【００５０】
このように、リフティング演算やデインターリーブを行うと、拡張した画像データが用いられている両端の帯域分離精度が低くなる。特に、低域成分の係数データの場合は、拡張された２画素分の画像データを用いて算出された高域成分の係数データＣＥ-h(-1)を用いて、低域成分の係数データＣＥ-l(0)が算出されていることから、帯域分離精度の低下の影響が左端に出やすい。
【００５１】
また、低域成分のサブバンドを原画像と見なして、繰り返しＤＷＴをかけて帯域分割すると低域成分の左側に帯域分離精度低下の影響が繰り返し反映されてしまう。このため、画像データをＭ×Ｎ画素のブロック単位で符号化することでシステムの帯域圧縮やメモリの削減を行うと、左端の帯域分離精度の低下の影響がＭ×Ｎ画素のブロック境界に歪みとして現れやすくなる。
【００５２】
そこで、帯域分割部２２は、ブロックサイズが小さくても視覚的に顕著な劣化を生じることがないように、帯域分離精度の低下の影響がＭ×Ｎ画素のブロック境界に歪みとして現れやすくなってしまうことを軽減させる。具体的には、デインターリーブを行うことにより得られた低域成分のサブバンドに対して、拡張された２つの信号を用いて算出された低域成分の係数データが、次の周波数帯域分割で拡張された２つの信号と共に用いられることがないように空間的な位置の並べ替えを行う。例えば、帯域分割部２２は、図７の（Ｆ）に示すように、低域成分のサブバンドにおける係数データの順序を反転させる。このようにすれば、拡張された２つの信号を用いて算出された低域成分の係数データＣＥ-l(0)は、次の帯域分割における低域成分の係数データの算出で、拡張された２つの信号と共に用いられることがない。したがって、帯域分割部２２は、帯域分割を繰り返したとき帯域分割精度低下の影響を分散させることが可能となり、帯域分離精度の低下の影響がＭ×Ｎ画素のブロック境界に歪みとして現れやすくなってしまうことを防止できる。
【００５３】
低域成分のサブバンドにおける係数データの順序は、図７の（Ｆ）に示す順序に限らず、画像復号化部３０-1で復元可能であれば任意の順序としてもよい。さらに、順序を画像符号化部２０-1と画像復号化部３０-1であらかじめ取り決めておく、または並べ替え順序を識別可能とする情報を符号化データに付加すれば、画像復号化部３０-1は復元を正しく行うことができる。
【００５４】
また、帯域分割部２２は、従来のＤＷＴと同様に１次元のブロックだけでなく、図９の（Ａ）や（Ｂ）に示すように２次元のＭ×Ｎ画素ブロックに対して様々な帯域分割をすることが可能である。また、使用するフィルタを水平方向と垂直方向で異なるものを用いてもよい。さらに、帯域分割のフィルタには、ＤＷＴ以外のものを用いてもよい。なお、図９の（Ａ）において、周波数の高さは「１ＨＨ＞１ＨＬ＝１ＬＨ＞２ＨＨ＞２ＨＬ＝２ＬＨ＞３ＨＨ＞３ＨＬ＝３ＬＨ＞３ＬＬ」である。また、図９の（Ｂ）において、周波数の高さは「１ＨＨ＞１ＨＬ＝１ＬＨ＞２ＨＬ＞３ＨＬ＞３ＬＬ」である。
【００５５】
［２−３−２．ＳＢ／ＺＢＰ検出部の動作］
ＳＢ／ＺＢＰ検出部２３の動作について説明する。図１０は、帯域分割部２２から出力されるＭＤＷＴ係数データの絶対値をビット深度方向に展開したものである。なお、各ビット深度のプレーンをビットプレーンという。図１０では、例えばサブバンド３Ｌの係数データが「７４，９」、サブバンド３Ｈの係数データが「２１，１９」、サブバンド２Ｈの係数データが「１０，５４，５９，２１」、サブバンド１Ｈの係数データが「１３，９，２５，２０-1，５，１，０，０」の場合を示している。ＭＤＷＴ係数データが「７４（１０進数）」であった場合、係数データを９ビットのビットストリームで表すとビット深度順に「００１００１０１０」となる。なお、周波数の高さは「１Ｈ＞２Ｈ＞３Ｈ＞３Ｌ」である。
【００５６】
ＳＢは、各係数データの絶対値をＭＳＢ（Most Significant Bit：最上位ビット）側からＬＳＢ（Least Significant Bit：最下位ビット）側に向かって見たときに、最初「１」となるビットのことである。図１０では、丸で囲んであるビットがＳＢに相当する。ＺＢＰは、ＭＤＷＴ係数データの絶対値をＪ個の係数データのサブブロックに分けた場合に、サブブロック内で最もＭＳＢ側にあるＳＢの１つ上のビットプレーンを示したものである。図１０では、サブブロックサイズをＪ＝２としたとき、斜線で示したビットプレーンが、ＺＢＰである。
【００５７】
ビットプレーンとＳＢとＺＢＰおよび後述するＴＰには、ビットの深さ方向にインデックスを設定する。なお、図１０では、ＭＳＢのビットプレーンのインデックスＩＤＸbpと、ＭＳＢのビットプレーン位置のＳＢのインデックスＩＤＸsbとＴＰのインデックスＩＤＸtpを「０」としている。また、ＬＳＢのビットプレーンのインデックスＩＤＸbpと、ＳＢのビットプレーン位置のＳＢのインデックスＩＤＸsbとＴＰのインデックスＩＤＸtpを「８」としている。また、ＺＢＰはＳＢの１つ上のビットプレーンを示すことから、ＺＢＰのインデックスＩＤＸzbpは、図１０に示すように、ＳＢのインデックスＩＤＸsbに「１」を加えた値とする。
【００５８】
ＳＢ／ＺＢＰ検出部２３は、ＳＢのインデックスＩＤＸsbとＺＢＰのインデックスＩＤＸzbpを求める動作を行う。すなわち、ＳＢ／ＺＢＰ検出部２３は、図１０に示すように、ＭＤＷＴ係数データ毎にＳＢのインデックスＩＤＸsbを求めてＳＢ検出結果ＤＴsbとする。また、Ｊ個の係数データからなるサブブロック毎に、ＺＢＰのインデックスＩＤＸzbpを求めてＺＢＰ検出結果ＤＴzbpとする。なお、図１０では、１次元のＭＤＷＴ係数データの絶対値を示しているが、ビット精度や帯域分割数が異なる場合であってもよく、２次元であってもよい。すなわち、ＺＢＰのサブブロックサイズはＪ×Ｋとなってもよい。また、図１０においてビットプレーンのサブブロックサイズは、ＺＢＰと同じサイズとなっているが、異なるサイズ、例えばＥ×Ｆとしてもよい。
【００５９】
［２−３−３．エントロピー符号化部の動作］
エントロピー符号化部２４の動作について説明する。エントロピー符号化部２４では、ＺＢＰ検出結果ＤＴzbpであるインデックスＩＤＸzbp、ＴＰのインデックスＩＤＸtp、ビットプレーンの３つをそれぞれエントロピー符号化する。
【００６０】
まず、ＺＢＰのインデックスＩＤＸzbpのエントロピー符号化方法について説明する。ＺＢＰは、サブブロック毎に１つ存在する。ＺＢＰは、統計的に低域成分に所属するものほど小さなインデックスを持つ傾向があるため、ＺＢＰの所属する帯域（サブバンド）をコンテキストとして、これに応じてインデックスＩＤＸzbpを符号化データであるシンボルを変える。具体的には、図１１に示すような変換テーブルを用いて、該当するＺＢＰのインデックスＩＤＸzbpとＺＢＰの所属するサブバンドの組み合わせに該当するシンボルを符号化結果として選択する。
【００６１】
図１１に示す変換テーブルは、例えば統計データを基に作成したハフマンテーブルなどを用いる。ここで、ＺＢＰが統計的に低域成分に所属するものほど小さなインデックスを持つ傾向がある場合、例えばサブバンド３Ｌでは、インデックスＩＤＸzbpの値が小さいシンボル００を短いビットストリームとする。また、インデックスＩＤＸzbpの値が大きいシンボル０９等は、シンボル００に比べて長いビットストリームとする。さらに、例えばサブバンド１Ｈでは、インデックスＩＤＸzbpの値が大きいシンボル０９を短いビットストリーム、インデックスＩＤＸzbpの値が小さいときのシンボル００等は、シンボル０９に比べて長いビットストリームとする。このように、インデックスＩＤＸzbpの統計データを基にシンボルのビット長を設定することで、ＺＢＰの符号化効率を高めることができる。
【００６２】
また、変換テーブルは、１つの変換テーブルを用いる場合に限らず、複数の変換テーブルから符号化に用いる変換デーブルを選択できるようにすることも可能である。例えば、比較的統計データに沿ったＺＢＰのインデックスＩＤＸzbpとなるもの（符号化が簡単なもの）に適用するＺＢＰ_Ｅａｓｙ_ｔａｂｌｅと、統計データから外れてしまうもの（符号化が困難なもの）に適用するＺＢＰ_Ｈａｒｄ_ｔａｂｌｅの２種類を用いる。
【００６３】
図１２は、２種類の変換テーブルを用いてＺＢＰのインデックスＩＤＸzbpのエントロピー符号化方法を行う場合の動作を示すフローチャートである。
【００６４】
ステップＳＴ２１でエントロピー符号化部２４は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅを用いて符号化を行う。エントロピー符号化部２４は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅからＺＢＰの所属する帯域とＺＢＰのインデックスＩＤＸzbpに対応するシンボルを選択することで、インデックスＩＤＸzbpの符号化を行う。さらに、エントロピー符号化部２４は、サブブロックのインデックスＩＤＸzbpの符号化結果のビット長を加算して、Ｍ×Ｎ画素のブロック単位でのビットストリーム長ＬBShを求めてステップＳＴ２２に進む。
【００６５】
ステップＳＴ２２でエントロピー符号化部２４は、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅを用いて符号化を行う。エントロピー符号化部２４は、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅからＺＢＰの所属する帯域とＺＢＰのインデックスＩＤＸzbpに対応するシンボルを選択することで、インデックスＩＤＸzbpの符号化を行う。さらに、エントロピー符号化部２４は、サブブロックのインデックスＩＤＸzbpの符号化結果のビット長を加算して、Ｍ×Ｎ画素のブロック単位でのビットストリーム長ＬBSeを求めてステップＳＴ２３に進む。
【００６６】
ステップＳＴ２３でエントロピー符号化部２４は、ビットストリーム長ＬBShがビットストリーム長ＬBSeより短いか判別する。エントロピー符号化部２４は、ビットストリーム長ＬBShがビットストリーム長ＬBSeより短いときステップＳＴ２４に進み、短くないときステップＳＴ２５に進む。
【００６７】
ステップＳＴ２４でエントロピー符号化部２４は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅを用いた符号化結果を出力する。また、ステップＳＴ２５でエントロピー符号化部２４は、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅを用いた符号化結果を出力する。
【００６８】
このように、複数の変換テーブルを用いる場合、どの変換テーブルを用いるかの決定は、すべての変換テーブルで符号化を行い、ビットストリーム長の最も小さかった変換テーブルを採用すればよい。
【００６９】
図１３は、２種類の変換テーブルを用いてＺＢＰのインデックスＩＤＸzbpのエントロピー符号化方法を行う場合の他の動作を示すフローチャートである。
【００７０】
ステップＳＴ２６でエントロピー符号化部２４は、ＺＢＰ平均値算出を行う。エントロピー符号化部２４は、Ｍ×Ｎ画素のブロック単位におけるＺＢＰのインデックスＩＤＸzbpの平均値ＷZavgを算出してステップＳＴ２７に進む。
【００７１】
ステップＳＴ２７でエントロピー符号化部２４は、平均値ＷZavgが閾値ＷZthよりも小さいか判別する。エントロピー符号化部２４は、ＺＢＰのインデックスＩＤＸzbpの平均値ＷZavgが閾値ＷZthよりも小さいと判別したときステップＳＴ２８に進み、小さくないと判別したときステップＳＴ２９に進む。
【００７２】
ステップＳＴ２８でエントロピー符号化部２４は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅを用いた符号化結果を出力する。エントロピー符号化部２４は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅからＺＢＰの所属する帯域とＺＢＰのインデックスＩＤＸzbpに対応するシンボルを選択して、選択したシンボルを符号化結果として出力する。
【００７３】
ステップＳＴ２９でエントロピー符号化部２４は、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅを用いた符号化結果を出力する。エントロピー符号化部２４は、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅからＺＢＰの所属する帯域とＺＢＰのインデックスＩＤＸzbpに対応するシンボルを選択して、選択したシンボルを符号化結果として出力する。
【００７４】
このように、複数の変換テーブルを用いる場合、どの変換テーブルを用いるかの決定は、ＺＢＰのインデックスＩＤＸzbpの平均値ＷZavgに基づいて判別するようにしてもよい。
【００７５】
また、複数の変換テーブルを用いる場合、どの変換テーブルを用いて符号化が行われているかを画像復号化部３０-1で判別可能とするため、モードフラグを設定して符号化に用いた変換テーブルを判別可能とする。
【００７６】
次にＴＰのインデックスＩＤＸtpのエントロピー符号化方法について説明する。ＴＰもＺＢＰと同様に、サブブロック毎に例えば図１４に示すようなハフマンテーブルを用いてインデックスＩＤＸtpを符号化し、ビットストリームを生成する。ＴＰは、トランケーション部２６で決定するため、エントロピー符号化する時点では、まだＴＰのインデックスＩＤＸtpは決定していない。したがって、ＴＰのインデックスＩＤＸtpとなる可能性のあるものをすべてエントロピー符号化しておく。具体的には、図１０におけるＺＢＰ以下のビットプレーンのどの位置にＴＰが設定されても良いように、ＺＢＰより１つ下のビットプレーンのすべての位置のＴＰのインデックスＩＤＸtpをエントロピー符号化する。また、変換テーブルは、ＺＢＰの場合と同様に複数用いてもよい。例えば、比較的統計データに沿ったＴＰのインデックスとなるもの（符号化が簡単なもの）に適用するＴＰ_Ｅａｓｙ_ｔａｂｌｅと、統計データから外れてしまうもの（符号化が困難なもの）に適用するＴＰ_Ｈａｒｄ_ｔａｂｌｅの２種類を用いる。
【００７７】
図１５は、２種類の変換テーブルを用いてＴＰのインデックスＩＤＸtpのエントロピー符号化方法を行う場合の動作を示すフローチャートである。ステップＳＴ３１でエントロピー符号化部２４は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅが選択されたか判別する。エントロピー符号化部２４は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅの選択が行われているときステップＳＴ３２に進み、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅの選択が行われていないときステップＳＴ３３に進む。
【００７８】
ステップＳＴ３２でエントロピー符号化部２４は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅを用いた符号化結果を出力する。エントロピー符号化部２４は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅからＴＰの所属する帯域とＴＰのインデックスＩＤＸtpに対応するシンボルを選択することで、インデックスＩＤＸtpの符号化を行い、選択したシンボルを符号化結果として出力する。
【００７９】
ステップＳＴ３３でエントロピー符号化部２４は、ＴＰ_Ｅａｓｙ_ｔａｂｌｅを用いた符号化結果を出力する。エントロピー符号化部２４は、ＴＰ_Ｅａｓｙ_ｔａｂｌｅからＴＰの所属する帯域とＴＰのインデックスＩＤＸtpに対応するシンボルを選択することで、インデックスＩＤＸtpの符号化を行い、選択したシンボルを符号化結果として出力する。
【００８０】
このように、複数の変換テーブルを用いる場合、どの変換テーブルを用いるかの決定は、ＺＢＰが採用した変換テーブルと似た傾向にある変換テーブルを採用すればよい。
【００８１】
図１６は、２種類の変換テーブルを用いてＴＰのインデックスＩＤＸtpのエントロピー符号化方法を行う場合の他の動作を示すフローチャートである。
【００８２】
ステップＳＴ３６でエントロピー符号化部２４は、平均値ＷZavgが閾値ＷZthよりも小さいか判別する。エントロピー符号化部２４は、ＺＢＰのインデックスＩＤＸzbpの平均値ＷZavgが閾値ＷZthよりも小さいと判別したときステップＳＴ３７に進み、小さくないと判別したときステップＳＴ３８に進む。
【００８３】
ステップＳＴ３７でエントロピー符号化部２４は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅを用いた符号化結果を出力する。エントロピー符号化部２４は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅからＴＰの所属する帯域とＴＰのインデックスＩＤＸtpに対応するシンボルを選択することで、インデックスＩＤＸtpの符号化を行い、選択したシンボルを符号化結果として出力する。
【００８４】
ステップＳＴ３８でエントロピー符号化部２４は、ＴＰ_Ｅａｓｙ_ｔａｂｌｅを用いた符号化結果を出力する。エントロピー符号化部２４は、ＴＰ_Ｅａｓｙ_ｔａｂｌｅからＴＰの所属する帯域とＴＰのインデックスＩＤＸtpに対応するシンボルを選択することで、インデックスＩＤＸtpの符号化を行い、選択したシンボルを符号化結果として出力する。
【００８５】
このように、複数の変換テーブルを用いる場合、どの変換テーブルを用いるかの決定は、ＺＢＰのインデックスＩＤＸzbpの平均値ＷZavgを利用して判別するようにしてもよい。
【００８６】
図１５，１６に示すように、ＺＢＰのインデックスＩＤＸzbp等を利用する理由は、ＳＢのインデックスＩＤＸsbとＺＢＰのインデックスＩＤＸzbpを求めたとき、この時点でＴＰが決定していないため、ＴＰのインデックス自身をコンテキストとして用いることができないためである。また、ＺＢＰのインデックスＩＤＸzbpとＴＰのインデックスＩＤＸtpの相関があることを利用して効率的な符号化を行うためである。
【００８７】
複数の変換テーブルを用いる場合、どの変換テーブルを用いて符号化が行われているかを画像復号化部３０-1で判別可能とするため、モードフラグを設定して符号化に用いた変換テーブルを判別可能とする。
【００８８】
次に、ビットプレーンの符号化方法について説明する。ビットプレーンは、図１０に示したように、ＭＤＷＴ係数データの絶対値をビット深度方向に分解したものである。さらに、ビットプレーンはサブブロックに分割されている。例えば図１０では、一番左のサブバンド３Ｌのサブブロック（インデックスＩＤＸbkが「０」であるサブブロック）におけるインデックスＩＤＸbpが「２」であるビットプレーンは「１,０」となる。この「１,０」の値を以下に示す方法で符号化する。
【００８９】
ビットプレーンのエントロピー符号化も同様に１つまたは複数の例えばハフマンテーブルを参照してビットストリームを生成する。ビットプレーンのエントロピー符号化は、ＺＢＰやＴＰと異なり、ビットプレーンの係数ビット（例えば「１,０」の値）を符号化する。変換テーブルのコンテキストとしては、ビットプレーンのインデックスＩＤＸbp、ビットプレーンの所属するサブバンド、後述するＳＢ_ｆｌａｇなどを用いる。
【００９０】
ビットプレーンのインデックスＩＤＸbpをコンテキストに用いる場合、ビットプレーンにおける「１」と「０」の分布に関する統計を利用できるようになる。すなわち、ビットプレーンのビット深度が浅い（インデックスが小さい）場合には、ビットプレーンの値が「０」になりやすい。また、ビットプレーンのビット深度が深い（インデックスが大きい）場合には、ビットプレーンの値が「１」と「０」が一様分布になりやすい。このような分布に関する統計を利用して、符号化効率を高めることができる。
【００９１】
ビットプレーンの所属するサブバンドをコンテキストに用いる場合、低域ほど大きなＭＤＷＴ係数データの絶対値が出現する傾向があることから、この傾向とビットプレーンの「０」「１」の傾向の相関を利用できる。
【００９２】
ＳＢ_ｆｌａｇは、ＳＢの状態を利用したコンテキストである。具体的には、符号化対象のビットプレーンを符号化する場合に、符号化対象のビットプレーンより上位ビットにＳＢが存在するかを示すフラグである。ＳＢ_ｆｌａｇは、ＳＢ検出結果ＤＴsbであるインデックスＩＤＸsbに基づいて生成する。例えば、図１７において、丸で囲んであるビットは、インデックスＩＤＸsbによって示されたＳＢである。ここで、インデックスＩＤＸbpが「４」のビットプレーンを符号化する場合は、ＳＢ_ｆｌａｇは、「１,０」となる。ＳＢ_ｆｌａｇが「０」を含む場合は、ビットプレーンの値も「０」になりやすい。したがって、ＳＢ_ｆｌａｇを例えばハフマンテーブルのコンテキストとして利用することで、符号化効率を向上させることができる。また、ビットプレーンの符号化においても複数の変換テーブルを用意してもよい。
【００９３】
図１８は、２種類の変換テーブルを用いてビットプレーンのエントロピー符号化方法を行う場合の動作を示すフローチャートである。
【００９４】
ステップＳＴ４１でエントロピー符号化部２４は、ＢｉｔＰｌａｎｅ_Ｈａｒｄ_ｔａｂｌｅを用いて符号化を行う。エントロピー符号化部２４は、ＢｉｔＰｌａｎｅ_Ｈａｒｄ_ｔａｂｌｅを用いてビットプレーンの符号化を行い、ビットストリーム長ＬBSPhを求めてステップＳＴ４２に進む。
【００９５】
ステップＳＴ４２でエントロピー符号化部２４は、ＢｉｔＰｌａｎｅ_Ｅａｓｙ_ｔａｂｌｅを用いて符号化を行う。エントロピー符号化部２４は、ＢｉｔＰｌａｎｅ_Ｅａｓｙ_ｔａｂｌｅを用いてビットプレーンの符号化を行い、ビットストリーム長ＬBSPeを求めてステップＳＴ４３に進む。
【００９６】
ステップＳＴ４３でエントロピー符号化部２４は、ビットストリーム長ＬBSPhがビットストリーム長ＬBSPeより短いか判別する。エントロピー符号化部２４は、ビットストリーム長ＬBSPhがビットストリーム長ＬBSPeより短いときステップＳＴ４４に進み、短くないときステップＳＴ４５に進む。
【００９７】
ステップＳＴ４４でエントロピー符号化部２４は、ＢｉｔＰｌａｎｅ_Ｈａｒｄ_ｔａｂｌｅを用いてビットプレーンの符号化を行うことにより得られた符号化結果を出力する。また、ステップＳＴ４５でエントロピー符号化部２４は、ＢｉｔＰｌａｎｅ_Ｅａｓｙ_ｔａｂｌｅを用いてビットプレーンの符号化を行うことにより得られた符号化結果を出力する。
【００９８】
このように、複数の変換テーブルを用いる場合、どの変換テーブルを用いるかの決定は、すべての変換テーブルで符号化を行い、ビットストリーム長の最も小さかった変換テーブルを採用すればよい。
【００９９】
また、複数の変換テーブルを用いる場合、どの変換テーブルを用いて符号化が行われているかを画像復号化部３０-1で判別可能とするため、モードフラグを設定して符号化に用いた変換テーブルを判別可能とする。
【０１００】
さらに、エントロピー符号化部２４は、ＺＢＰ、ＴＰ、ビットプレーンのそれぞれのエントロピー符号化において、ビットストリームを生成する際に、それぞれのビットストリーム長を記録しておく。これらは、後段の歪特性推定部２５で必要となる。特に、ＴＰとビットプレーンのビットストリーム長は、トランケーションを行うために、各ビットプレーンおよび各サブブロックで記録しておく必要がある。
【０１０１】
［２−３−４．歪特性推定部の動作］
歪特性推定部２５の動作について説明する。トランケーション部２６は、エントロピー符号化の結果得られたビットストリームＢＳaと符号ＣＥsが目標符号長内に収まるようにトランケーションを行う。また、トランケーション部２６は、目標符号長内で最適な画質を得るために、どのビットプレーンのビットストリームを採用し、どのビットプレーンのビットストリームをトランケーションするか判断する。このため、歪特性推定部２５は、トランケーション部２６でいずれのビットプレーンをトランケーションするか判断できるようにするために、符号量と歪みの関係を示す歪特性を推定する。
【０１０２】
歪特性推定部２５は、符号量と歪みの関係を示す歪特性を推定するアルゴリズムとして、例えば非特許文献１「David Taubman, Michael Marcellin 著  JPEG2000: Image Compression Fundamentals, Standards and Practice(The Springer International Series in Engineering and Computer Science)」の８．３．５節「DISTORTION COMPUTATION」に開示されている方法を用いる。
【０１０３】
歪特性推定部２５は、サブブロックサイズのビットプレーン毎の符号長（ΔRi(p)）とそのサブブロックのビットプレーンをトランケーションしたときに生じる符号化歪み（ΔＤi(ｐ)）から、符号長に対する符号化歪みの変化を示す傾き（ΔＤi(ｐ)/ΔＲi(p)）を算出する。式（１）は符号化歪み（ΔＤi(ｐ)）の算出式を示している。
【０１０４】
【数１】
2011217347.tif 000003
なお、式（１）において、「ｐ」はビットプレーンのインデックスＩＤＸbp、「ｉ」は、図１０における横方向に割り振られたサブブロックのインデックスＩＤＸbk、「ｊ」はサブブロック内の各ＭＤＷＴ係数データの集まりをベクトルで示している。また、「Ｇb」はｂ番目のサブバンド(周波数)の重み、Δは量子化ステップ幅を意味する。この式（１）におけるＴs等は、式（２）〜式（５）で与えられる。
【０１０５】
【数２】
2011217347.tif 000004
なお、式（２），（３）において、ｙｉ[ｊ]はＭＤＷＴ係数データである。
【０１０６】
さらに、歪特性推定部２５は、ブロック単位で符号化を行う際に、ブロックの端のサブブロックのビットプレーンの重みを高くしてブロック歪みの軽減をはかる。具体的には、式（６）の演算を行い、符号化歪み（ΔＤi(ｐ)）に対して、ブロックの境界に属するサブブロックであるか否かの重みを追加する。
【０１０７】
ＥＣΔＤi(ｐ)＝Ｗi×ΔＤi(ｐ)    ・・・（６）
なお、式（６）において、「Ｗi」は、ｉ番目のサブブロック（インデックスＩＤＸbkが「ｉ」であるサブブロック）がブロックの境界に属するか否かによって決まる重みであり、ブロックの境界であればＥＣΔＤi(ｐ)の値を大きくする。すなわち、ブロックの境界に属するサブブロックは、このサブブロックをトランケーションしたときの歪みが、重み付け前よりも大きく示されるようにして、他の位置のサブブロックよりもトランケーションされ難くなるようにする。
【０１０８】
このように、歪特性推定部２５は、ＥＣΔＤi(ｐ)を算出して、傾き（ＥＣΔＤi(ｐ)／ΔＲi(p)）を歪特性推定結果Ｅrdとしてトランケーション部２６に出力する。
【０１０９】
なお、歪特性推定部２５は、各サブブロックおよび各ビットプレーンに対してＥＣΔＤi(ｐ)を算出してもよく、傾向のある部分についてあらかじめ算出してテーブル化しておき、必要な部分だけＥＣΔＤi(ｐ)の算出を行うようにしてもよい。また、算出したＥＣΔＤi(ｐ)に基づき、例えば図１９に示すＲ(レート)−Ｄ(歪み)曲線をサブブロック毎に求めて記憶させておき、このＲ−Ｄ曲線からサブブロックのビットプレーンを削除したときの符号化歪みの変化を推定できるようにしてもよい。なお、図１９において、実線はブロックの境界に属するサブブロックに対する曲線、破線はブロックの境界に属していないサブブロックに対する曲線を例示している。
【０１１０】
［２−３−５．トランケーション部の動作］
トランケーション部２６は、歪特性推定部２５から出力された歪特性推定結果Ｅrdに基づいて、目標符号長内で最適な画質を得るためのビットプレーンの取捨選択を行う。図２０〜図２１は、トランケーション部２６の動作を説明するための図である。
【０１１１】
トランケーション部２６は、ＴＰをＺＢＰの位置に初期化する。図２０の（Ａ）は、ＺＢＰとＴＰが重なった状態となっている。なお、右上がりの斜線部はＺＢＰ、左上がりの斜線部はＴＰを示している。
【０１１２】
図２０の（Ａ）の状態で、トランケーション部２６は、各ＴＰより１つ下のビットプレーンの傾き（ＥＣΔＤi(ｐ)／ΔＲi(p)）の値を比較する。そして、トランケーション部２６は、最も（ＥＣΔＤi(ｐ)／ΔＲi(p)）の値が大きかったビットプレーンへＴＰを移動させる。例えば、サブブロック「０」における（ＥＣΔＤi(ｐ)／ΔＲi(p)）)の値が最も大きかったとき、図２０の（Ｂ）に示すように、トランケーション部２６は、サブブロック「０」において、ＴＰをビットプレーン「１」からビットプレーン「２」に移動させる。すなわち、トランケーション部２６は、トランケーションを行う際に最も符号化歪みが大きくなってしまうと判断されたビットプレーンは、トランケーションしないように処理する。
【０１１３】
同様に、トランケーション部２６は、ＴＰの位置を更新したのちに再度各ＴＰの１つ下のビットプレーンにおける（ＥＣΔＤi(ｐ)／ΔＲi(p)）の値を比較し、最も（ＥＣΔＤi(ｐ)／ΔＲi(p)）の値が大きかったビットプレーンへＴＰを移動する。例えば、サブブロック「２」における（ＥＣΔＤi(ｐ)／ΔＲi(p)）の値が最も大きかったとき、図２０の（Ｃ）に示すように、トランケーション部２６は、サブブロック「２」において、ＴＰをビットプレーン「２」からビットプレーン「３」に移動させる。
【０１１４】
トランケーション部２６は、このようにＴＰの１つ下のビットプレーンにおける（ＥＣΔＤi(ｐ)／ΔＲi(p)）の値を比較して、比較結果に基づきＴＰを移動させる処理を、ビットストリームの総符号長が目標符号長に到達するか、すべての比較が完了するまで繰り返す。なお、図２１の（Ｂ）は、ビットストリームの総符号長が目標符号長に到達したときの状態を例示している。
【０１１５】
ビットストリームの総符号長は、すべてのＺＢＰのインデックスＩＤＸzbpと、ＺＢＰの１つ下からＴＰまでのビットプレーンと、現在の位置におけるすべてのＴＰのインデックスＩＤＸtpと、ＭＤＷＴ係数データの符号の各符号化結果のビット長の総計である。ここで、ＭＤＷＴ係数データの符号の符号化は、ＭＤＷＴ係数データを現在のＴＰの位置まで符号化して、それより下をトランケーションしたときに係数データが有意な（０でない）係数データに対応する符号のみを符号化する。符号化方法は、例えば、符号が正の場合は「０」、負の場合は「１」を付加する、または、エントロピー符号化するなどの方法が挙げられる。
【０１１６】
図２２は、トランケーション部２６の動作を示すフローチャートである。ステップＳＴ５１でトランケーション部２６は、ＴＰの初期化を行う。トランケーション部２６は、ＴＰをＺＢＰの位置としてステップＳＴ５２に進む。
【０１１７】
ステップＳＴ５２でトランケーション部２６はスキャン終了であるか判別する。トランケーション部２６は、すべてのビットプレーンと符号のスキャンが終了したとき処理を終了し、スキャンが終了していないときステップＳＴ５３に進む。
【０１１８】
ステップＳＴ５３でトランケーション部２６は、ＴＰの１つ下で最も値の大きいビットプレーンを特定する。トランケーション部２６は、ＴＰの１つ下のビットプレーンにおける（ＥＣΔＤi(ｐ)／ΔＲi(p)）の値を比較して、最も値が大きいビットプレーンを特定してステップＳＴ５４に進む。
【０１１９】
ステップＳＴ５４でトランケーション部２６は、総符号長が目標符号長に到達していないか判別する。トランケーション部２６は、ステップＳＴ５３で特定したビットプレーンにＴＰを進めた場合に、ビットストリームの総符号長が目標符号長以下とならないときステップＳＴ５５に進み、目標符号長以下となるとき処理を終了する。
【０１２０】
ステップＳＴ５５でトランケーション部２６は、特定したビットプレーンのＴＰを進める処理を行う。トランケーション部２６は、ステップＳＴ５３で特定したビットプレーンにＴＰを進めてステップＳＴ５２に戻る。
【０１２１】
トランケーション部２６は、このような処理を行うことで、ビットストリームの総符号長を目標符号長以下とする。なお、トランケーションにおいてすべてのビットプレーンを符号化しきれた場合は、ロスレス符号化となる。さらに、目標符号長に対して総符号長が短い場合は、同一アルゴリズムでロスレスにすることができ、特許文献１のＤＰＣＭよりも画質が向上する。また、ロスレスにならない場合でも、ほぼ目標符号長となるまでトランケーションを繰り返すため、符号化データ中の無効なビット数を低減することができる。
【０１２２】
［２−３−６．パッキング部の動作］
パッキング部２７は、モードフラグＭＦ、トランケーション後のビットストリーム（ＺＢＰ、ＴＰ、ビットプレーン、符号）ＢＳbを所定のフォーマットに変換し、画像復号化部３０-1で復号化できる符号化データＤpdを生成する。モードフラグＭＦは、必要に応じてエントロピー符号化してもよく、ビットストリームをそのまま符号化してもよい。また、必要に応じて、コメントやＤＣ値、復号化・画質改善・機能のための付加情報とまとめて符号化してもよい。符号化データのフォーマットは、画像復号化部３０-1で復号化できるフォーマットであれば何でもよい。ただし、以下の制約がある。
【０１２３】
・各ビットストリームをデコードする前に、対応するモードフラグがデコードできるようにする。  
・ビットプレーンのデコード前にＺＢＰとＴＰがデコードできるようにする。  
・符号をデコードする前にビットプレーンがデコードされているようにする。  
図２３は、フォーマットの一例を示している。例えば、付加情報のビットストリームを先頭として、次に、ＺＢＰを示すインデックスＩＤＸzbpの符号化結果のビットストリームを設ける。その後、ＴＰを示すインデックスＩＤＸtpの符号化結果のビットストリーム、ＭＤＷＴ係数データの絶対値の符号化結果のビットストリーム、符号の符号化結果のビットストリームを順番に設けて、画像復号化部３０-1等に出力する。また、パッキング部２７は、複数のコンポーネント信号の符号化データをまとめて１つの符号化データにする機能を有するようにしてもよい。
【０１２４】
［２−４．第１の実施の形態における画像復号化部の構成］
第１の実施の形態における画像復号化部の構成を図２４に示す。画像復号化部３０-1は、デパッキング部３１、エントロピー復号化部３２、ラウンディングビット付加部３３  帯域合成部３４、IＤＣレベルシフト部３５等を有している。
【０１２５】
デパッキング部３１は、画像符号化部２０-1で生成された所定のフォーマットの符号化データＤpdを入力して解析を行い、エントロピー復号化部３２でビットストリームの復号化に必要な付加情報を取得する。デパッキング部３１は、例えば、図２３に示すフォーマットの符号化データからビットストリームとビットストリームを復号化するために必要な情報（モードフラグを含む）を切り離す。また、デパッキング部３１は、複数のコンポーネント信号の符号化データが１つの符号化データにまとめられている場合、それらの分離等を行い、復号化可能なビットストリームＢＳbをエントロピー復号化部３２に出力する。
【０１２６】
エントロピー復号化部３２は、デパッキング部３１から出力されたビットストリームＢＳbのエントロピー復号化を行い、ＺＢＰとＴＰのインデックスＩＤＸzbp，ＩＤＸtpを得てそれらを用いてＭＤＷＴ係数データの絶対値の復号化を行う。エントロピー復号化部３２は、復号化されたＭＤＷＴ係数データの絶対値ＣＥbとＴＰのインデックスＩＤＸtpをラウンディングビット付加部３３に出力する。また、エントロピー復号化部３２は、符号ＣＥsを帯域合成部３４に出力する。
【０１２７】
ラウンディングビット付加部３３は、ＭＤＷＴ係数データの絶対値ＣＥbとＴＰのインデックスＩＤＸtpに基づき、画像符号化部２０-1でトランケーションされたビットプレーンのビットストリームを推定してＭＤＷＴ係数データの絶対値の復元を行う。ラウンディングビット付加部３３は、復元されたＭＤＷＴ係数データの絶対値ＣＥcを帯域合成部３４へ出力する。
【０１２８】
帯域合成部３４は、復元されたＭＤＷＴ係数データの絶対値ＣＥcと符号ＣＥsを用いて、逆変換（Inverse Modified Discrete Transform）を行う。なお、逆変換は、画像符号化部２０-1の帯域分割部２２で得られた係数データを変換前の画像データに戻す処理である。帯域合成部３４は、逆変換を行うことにより得られた復号化ＤＣレベルシフトデータＤＶcをＩＤＣレベルシフト部３５へ出力する。
【０１２９】
ＩＤＣレベルシフト部３５は、復号化ＤＣレベルシフトデータＤＶcに対してＤＣ値を足し合わせて、画像復号化部３０-1の外部へブロック単位の画像データＤＶdとして出力する。なお、ＤＣ値は、画像符号化部２０-1におけるＤＣレベルシフト部２１で用いたＤＣ値と等しい値である。
【０１３０】
なお、トランケーション部においてトランケーションが行われておらずロスレス符号化が行われたとき、復号化ＤＣレベルシフトデータＤＶcは画像データＤＶbと等しく、画像データＤＶdは画像データＤＶaと等しくなる。
【０１３１】
［２−５．第１の実施の形態における画像復号化部の動作］
第１の実施の形態における画像復号化部の動作について図２５のフローチャートを用いて説明する。ステップＳＴ６１で画像復号化部３０-1は、復号化可能なビットストリームの取得を行う。画像復号化部３０-1は、所定のフォーマットの符号化データについて解析をデパッキング部３１で行い、復号化可能なビットストリームを符号化データから取得してステップＳＴ６２に進む。
【０１３２】
ステップＳＴ６２で画像復号化部３０-1は、ビットストリームの復号化を行う。画像復号化部３０-1のエントロピー復号化部３２は、ＺＢＰとＴＰを示すインデックスＩＤＸzbp，ＩＤＸtpを復号化したのち、それらを用いてＭＤＷＴ係数データの絶対値を復号化する。また、エントロピー復号化部３２は、符号の復号化を行いステップＳＴ６３に進む。
【０１３３】
ステップＳＴ６３で画像復号化部３０-1は、ラウンディングビットの付加を行う。画像復号化部３０-1は、ラウンディングビット付加部３３において、画像符号化部２０-1でトランケーションされたビットプレーンのビットストリームを推定してラウンディングビットとする。さらに、ラウンディングビット付加部３３は、推定したラウンディングビットを復号化されたＭＤＷＴ係数データの絶対値に加えてＭＤＷＴ係数データの絶対値の復元を行いステップＳＴ６４に進む。
【０１３４】
ステップＳＴ６４で画像復号化部３０-1は、ＩＭＤＷＴ（Inverse Modified Discrete Wavelet Transform）を行う。画像復号化部３０-1の帯域合成部３４は、復元されたＭＤＷＴ係数データの絶対値と復号化された符号を用いてＩＭＤＷＴを行い、復号化ＤＣレベルシフト信号を得てステップＳＴ６５に進む。
【０１３５】
ステップＳＴ６５で画像復号化部３０-1は、ＩＤＣレベルシフトを行う。画像復号化部３０-1は、ＩＤＣレベルシフト部３５で、復号化ＤＣレベルシフト信号に対してＤＣ値を足し合わせて、復号化された画像データを得て処理を終了する。
【０１３６】
［２−６．画像復号化部の各部の動作］
［２−６−１．エントロピー復号化部の動作］
次に、エントロピー復号化部３２の動作を説明する。エントロピー復号化部３２は、デパッキング部３１から供給されるビットストリームと復号化に必要な付加情報（ビットストリームの符号化に用いられた変換テーブルを示すモードフラグを含む）を、入力として受け付ける。
【０１３７】
エントロピー復号化部３２は、ＺＢＰのインデックスＩＤＸzbpおよびＴＰのインデックスＩＤＸtpを復号化する。ＺＢＰのインデックスＩＤＸzbpおよびＴＰのインデックスＩＤＸtpは、画像符号化部２０-1におけるエントロピー符号化部２４の動作で説明したように、１つまたは複数の例えばハフマンテーブルを用いて符号化されている。したがって、エントロピー復号化部３２は、どの変換テーブルを用いて符号化されているかモードフラグにより判断する。
【０１３８】
図２６は、ＺＢＰのインデックスＩＤＸzbpの復号化動作を示すフローチャートである。ステップＳＴ７１でエントロピー復号化部３２は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅを用いて符号化が行われているか判別する。エントロピー復号化部３２は、付加情報のモードフラグに基づきＺＢＰのインデックスＩＤＸzbpの符号化で用いられた変換テーブルを判別する。エントロピー復号化部３２は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅが用いられたと判別したときステップＳＴ７２に進み、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅが用いられたと判別したときステップＳＴ７３に進む。
【０１３９】
ステップＳＴ７２でエントロピー復号化部３２は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行う。エントロピー復号化部３２は、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行うことで、ＺＢＰのインデックスＩＤＸzbpを取得して復号化動作を終了する。
【０１４０】
ステップＳＴ７３でエントロピー復号化部３２は、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行う。エントロピー復号化部３２は、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行うことで、ＺＢＰのインデックスＩＤＸzbpを取得して復号化動作を終了する。
【０１４１】
図２７は、ＴＰのインデックスの復号化動作を示すフローチャートである。ステップＳＴ７６でエントロピー復号化部３２は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅを用いて符号化が行われているか判別する。エントロピー復号化部３２は、付加情報に基づきＴＰのインデックスＩＤＸtpの符号化で用いられた変換テーブルを判別する。エントロピー復号化部３２は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅが用いられたと判別したときステップＳＴ７７に進み、ＴＰ_Ｅａｓｙ_ｔａｂｌｅが用いられたと判別したときステップＳＴ７８に進む。
【０１４２】
ステップＳＴ７７でエントロピー復号化部３２は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行う。エントロピー復号化部３２は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行うことで、ＴＰのインデックスＩＤＸtpを取得して復号化動作を終了する。
【０１４３】
ステップＳＴ７８でエントロピー復号化部３２は、ＴＰ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行う。エントロピー復号化部３２は、ＴＰ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行うことで、ＴＰのインデックスＩＤＸtpを取得して復号化動作を終了する。
【０１４４】
ＺＢＰのインデックスＩＤＸzbpおよびＴＰのインデックスＩＤＸtpを復号化した結果、ビットプレーンのどの部分が符号化されているか判別できる。例えば、図２８において、復号化によって得られたＺＢＰのインデックスＩＤＸzbpが示す位置は右上がりの斜線部として示している。また、復号化によって得られたＴＰのインデックスＩＤＸtpが示す位置は左上がりの斜線部として示している。このように、ＺＢＰのインデックスＩＤＸzbpおよびＴＰのインデックスＩＤＸtpが得られると、ＺＢＰの下のビットプレーンからＴＰのインデックスＩＤＸtpが示すビットプレーンまでが符号化された範囲であると判別できる。また、符号化された範囲が明らかとなることから、ビットストリームを復号化して得られたデータがいずれのサブブロックのいずれのビットプレーンのデータであるか、判別することができる。
【０１４５】
なお、図２８において、ＴＰのインデックスＩＤＸtpが示すビットプレーンの下である塗りつぶされたビットプレーンは、画像符号化部２０-1でトランケーションされたビットプレーンである。
【０１４６】
ＭＤＷＴ係数データの絶対値を示すビットストリームの復号化は、画像符号化部２０-1におけるエントロピー符号化部２４の動作で説明したように、１つまたは複数の例えばハフマンテーブルを用いて符号化されている。エントロピー復号化部３２は、どの変換テーブルを用いて符号化されているか付加情報のモードフラグにより判断する。
【０１４７】
図２９は、ＭＤＷＴ係数データの絶対値を示すビットストリームの復号化動作を示すフローチャートである。ステップＳＴ８１でエントロピー復号化部３２は、Ｃｏｅｆ_Ｈａｒｄ_ｔａｂｌｅを用いて符号化が行われたか判別する。エントロピー復号化部３２は、付加情報に基づきＭＤＷＴ係数データの絶対値の符号化で用いられた変換テーブルを判別する。エントロピー復号化部３２は、Ｃｏｅｆ_Ｈａｒｄ_ｔａｂｌｅが用いられたと判別したときステップＳＴ８２に進み、Ｃｏｅｆ_Ｅａｓｙ_ｔａｂｌｅ用いられたと判別したときステップＳＴ８３に進む。
【０１４８】
ステップＳＴ８２でエントロピー復号化部３２は、Ｃｏｅｆ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行う。エントロピー復号化部３２は、Ｃｏｅｆ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行うことで、ＭＤＷＴ係数データの絶対値を示すデータを取得して復号化動作を終了する。
【０１４９】
ステップＳＴ８３でエントロピー復号化部３２は、Ｃｏｅｆ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行う。エントロピー復号化部３２は、Ｃｏｅｆ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行うことで、ＭＤＷＴ係数データの絶対値を示すデータを取得して復号化動作を終了する。なお、変換テーブルやコンテキストの例は、画像符号化部２０-1におけるエントロピー符号化部２４の動作で説明したとおりである。
【０１５０】
［２−６−２．ラウンディングビット付加部の動作］
ラウンディングビット付加部３３は、画像符号化部２０-1でトランケーションされた下位ビットを推定して、ＭＤＷＴ係数データの絶対値を復元する。ラウンディングビット付加部３３は、ＴＰのインデックスＩＤＸtpに基づき、画像符号化部２０-1でトランケーションされた下位ビットの位置を判別して、判別した位置のデータを推定する。例えば、図２８に示す場合、ラウンディングビット付加部３３は、ＴＰのインデックスＩＤＸtpが示すビットプレーンの下である塗りつぶされたビットプレーンのデータを推定する。
【０１５１】
推定の方法としてはいくつかあるが、簡易な方法の例として、統計に基づいてあらかじめ作成しておいたテーブルを参照することで、推定したデータを取得する。例えば、ラウンディングビット付加部３３は、図３０に示すように、ＴＰのインデックスＩＤＸtpをコンテキストとして、ＴＰのインデックスＩＤＸtpに応じた値を推定データとする。ここで、ＴＰのインデックスＩＤＸtpをコンテキストに用いることは、トランケーションされたビットプレーンの位置によって、適切な付加する値に傾向があるためである。ラウンディングビット付加部３３は、推定したデータを、係数データの絶対値を示すデータに付加して、帯域合成部３４に出力する。
【０１５２】
［２−６−３．帯域合成部の動作］
帯域合成部３４は、画像符号化部２０-1で行われたＭＤＷＴの逆変換であるＩＭＤＷＴ（Inverse Modified Discrete Wavelet Transform）を行う。画像符号化部２０-1において説明したとおり、ＭＤＷＴは基本的にはＤＷＴと同じであるが、信号端の帯域分割精度向上のために帯域分割するたびに低域信号の空間的な位置の入れ替えを行っている。したがって、帯域合成部３４は、入力されたＭＤＷＴ係数データのうち、低域信号の空間的な位置を符号化時とは逆の操作によって元の位置に戻す。その後、ＩＤＷＴと同様にデインターリーブ、対象周期拡張および２段のリフティング演算を行い、帯域合成を行う。また、帯域合成を繰り返す場合は、そのたびに最初に低域信号を元の空間位置に戻す操作を行う。帯域合成部３４は、このような処理を行い復号化ＤＣレベルシフト信号を生成する。
【０１５３】
図３１は、帯域合成部３４の動作を説明するための図である。図３１の（Ａ）は、ＭＤＷＴ係数データを示している。帯域合成部３４は、図３１の（Ｂ）に示すように、低域信号の空間的な位置を符号化時とは逆の操作によって元の位置に戻す処理を行う。次に、帯域合成部３４は、図３１の（Ｃ）に示すようにデインターリーブを行い、図３１の（Ｄ）に示すように、対象周期拡張を行う。その後、帯域合成部３４は、図３１の（Ｅ），（Ｆ）に示すように２段のリフティング演算を行い帯域合成して、図３１の（Ｆ）に示す復号化ＤＣレベルシフト信号を生成する。
【０１５４】
なお、ＩＭＤＷＴは、従来のＩＤＷＴと同様に１次元信号のみならず、２次元のブロックに対して様々な帯域分割された信号を再構成することが可能である。また、使用するフィルタを水平方向と垂直方向で異なるものを用いてもよい。さらに、信号再構成のフィルタには、ＩＤＷＴ以外のものを用いてもよい。
【０１５５】
このように、画像符号化部２０-1と画像復号化部３０-1で画像データの符号化や復号化を行うと、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置が並び替えられるので、低域成分の係数データに対して周波数帯域分割を繰り返し行って、複数の周波数帯域毎の係数データを生成しても、例えば拡張された画像データを用いて生成された低域成分の係数データの位置が固定した位置とならないので、拡張された画像データを用いたことによる帯域分離精度の低下の影響が繰り返し反映されてしまうことがなくなる。したがって、ブロック単位で画像の符号化を行ってもブロック歪みの少ない復号画像を得ることができる。
【０１５６】
また、係数データは、所定数毎にサブブロックとして区分されて、サブブロック毎に係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化が推定される。この推定結果に対して、ブロックの端に位置するサブブロックが、他の位置のサブブロックよりもトランケーションされ難くなるように重み付けが行われる。この重み付け後の推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置が検出されてして、係数データ等のトランケーションが行われる。したがって、ブロックの端部の係数データがトランケーションされてしまうことを少なくできるので、ブロックの境界での歪みを軽減させることができる。
【０１５７】
＜３．第２の実施の形態＞
［３−１．第２の実施の形態における画像符号化部の構成］
ところで、画像符号化部と画像復号化部の構成は図５や図２４の構成に限られるものではない。図３２は、第２の実施の形態における画像符号化部の構成を例示している。
【０１５８】
画像符号化部２０-2は、図５に示す画像符号化部２０-1から、ＤＣレベルシフト部２１と歪特性推定部２５およびパッキング部２７を省略した構成とされている。
【０１５９】
この場合、帯域分割部２２は、ＤＣレベルシフトされた信号ではなく、入力された画像データに対してＭＤＷＴを行う。また、トランケーションを行う基準となる歪特性推定部２５を省略する場合には、例えば、歪特性推定部２５であらかじめ符号化歪みＥＣΔＤi(ｐ)または傾き（ＥＣΔＤi(ｐ)／ΔＲi(p)）を算出しておき、それをテーブル化しておいたものを歪特性テーブル２９に記憶させておく。この歪特性テーブルをトランケーション部２６へ入力し、トランケーション部２６は、これを基にトランケーションを実施する。また、エントロピー符号化部２４において、ＺＢＰとＴＰとビットプレーンで用いた符号化テーブルがそれぞれ１つで、トランケーションされたビットストリームに付加する情報がない場合、トランケーションされたビットストリームを符号化データとして画像符号化部２０-2から出力してもよい。この場合、パッキング部２７も省略できる。
【０１６０】
［３−２．第２の実施の形態における画像復号化部の構成］
図３３は、第２の実施の形態における画像復号化部の構成を例示している。画像復号化部３０-2は、図２４に示す画像復号化部３０-1から、デパッキング部３１、ラウンディングビット付加部３３およびＩＤＣレベルシフト部３５を省略した構成とされている。
【０１６１】
図３２に示す画像符号化部２０-2で生成された符号化データがビットストリームのみで付加情報がなければ、画像復号化部３０-2にはデパッキング部３１を設ける必要がない。また、ラウンディングビット付加部３３は、復号化そのものに必須となる構成ではなく、復号化信号の画質向上を目的としているため、省略することが可能である。また、画像符号化部２０-2においてＤＣレベルシフトがなされていない場合は、ＩＤＣレベルシフト部３５を設ける必要がない。したがって、図３３に示す構成の画像復号化部３０-2を用いれば、画像符号化部２０-2から出力されたビットストリームを復号化できる。
【０１６２】
＜４．第３の実施の形態＞
［４−１．第３の実施の形態における画像符号化部の構成］
次に、上述の第１および第２の実施の形態に比べて更に符号化効率を高めることができる第３の実施の形態について説明する。図３４は、第３の実施の形態における画像符号化部の構成を示している。
【０１６３】
画像符号化部２０-3は、第１の実施の形態と同様にＤＣレベルシフト部２１、帯域分割部２２、ＳＢ（Significant Bit）／ＺＢＰ（Zero Bit Plane）検出部２３、エントロピー符号化部２４、歪特性推定部２５、トランケーション部２６およびパッキング部２７を有している。さらに、画像符号化部２０-3には、ＺＢＰ直交変換部２８が設けられている。
【０１６４】
第１の実施の形態と同様に、ＤＣレベルシフト部２１は、帯域分割部２２で周波数帯域分割を効率的に行うために画像データのＤＣ成分のレベルシフトを行う。ＤＣレベルシフト部２１は、例えば入力されたＭ×Ｎ画素のブロック単位の画像データＤＶaからＤＣ値を差し引いて、帯域分割部２２へ出力する。帯域分割部２２は、ＤＣレベルシフト部２１から出力された画像データＤＶbの周波数帯域分割を行う。帯域分割部２２は、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから再度周波数帯域分割を行い、例えばＭ×Ｎ画素のブロック内の画像データから複数の周波数帯域毎の係数データを生成する。帯域分割部２２は、例えばＭＤＷＴ（Modified Discrete Wavelet Transform）を用いて周波数帯域分割を行う。帯域分割部２２は、ＭＤＷＴを行うことにより得られたＭＤＷＴ係数データの絶対値ＣＥａをＳＢ／ＺＢＰ検出部２３とエントロピー符号化部２４および歪特性推定部２５へ出力する。また、帯域分割部２２は、ＭＤＷＴを行うことにより得られたＭＤＷＴ係数データの符号ＣＥsをトランケーション部２６へ出力する。ＳＢ／ＺＢＰ検出部２３は、ＭＤＷＴ係数データの絶対値からＳＢ（Significant Bit）およびＺＢＰ（Zero Bit Plane）を検出する。ＳＢ／ＺＢＰ検出部２３は、ＳＢ検出結果ＤＴsbをエントロピー符号化部２４および歪特性推定部２５へ出力する。また、ＳＢ／ＺＢＰ検出部２３は、ＺＢＰ検出結果ＤＴzbpを歪特性推定部２５、トランケーション部２６およびＺＢＰ直交変換部２８へ供給する。
【０１６５】
第３の実施の形態で設けられたＺＢＰ直交変換部２８は、ＺＢＰ検出結果ＤＴzbpの直交変換を行う。ＺＢＰ直交変換部２８は、ＺＢＰ検出結果ＤＴzbpを数値列として直交変換を行い、変換後の数値列であるＺＢＰ直交変換結果ＤＴtzbpをエントロピー符号化部２４へ供給する。
【０１６６】
エントロピー符号化部２４は、ＭＤＷＴ係数データの絶対値ＣＥa、ＳＢ検出結果ＤＴsbおよびＺＢＰ直交変換結果ＤＴtzbpを用いて、ＭＤＷＴ係数データの絶対値ＣＥaのビットプレーン、ＺＢＰ、ＴＰ（Truncation Point）のエントロピー符号化を行う。エントロピー符号化部２４は、エントロピー符号化を行うことにより得られたビットストリームＢＳaをトランケーション部２６へ出力する。また、エントロピー符号化部２４は、エントロピー符号化を行うことにより得られたビットストリーム長ＤＴbsを歪特性推定部２５およびトランケーション部２６へ出力する。さらに、エントロピー符号化部２４は、エントロピー符号化を行うことにより得られたモードフラグＭＦをパッキング部２７へ出力する。
【０１６７】
第１の実施の形態と同様に、歪特性推定部２５は、ＭＤＷＴ係数データの絶対値ＣＥa、ＳＢ検出結果ＤＴsb、ＺＢＰ検出結果ＤＴzbpおよびビットストリーム長ＤＴbsに基づいて歪特性の推定を行い、歪特性推定結果Ｅrdをトランケーション部２６へ出力する。トランケーション部２６は、ビットストリームＢＳa、ビットストリーム長ＤＴbs、ＺＢＰ検出結果ＤＴzbp、符号ＣＥs、歪特性推定結果Ｅrdを用いて、予め設定されている目標符号量以内となるように、符号化対称のビットストリームおよび符号を決定する。パッキング部２７は、トランケーションされたビットストリームＢＳbとモードフラグＭＦを所定のフォーマットに変換して、画像復号化部３０-3で復号化可能な符号化データＤpdを作成する。パッキング部２７は、作成した符号化データＤpdを画像符号化部２０-3から出力する。
【０１６８】
［４−２．第３の実施の形態における画像符号化部の動作］
図３５は、第３の実施の形態における画像符号化部の動作を示すフローチャートである。なお、図３５において、第１の実施の形態における画像符号化部と対応する処理については、同一の番号を付している。
【０１６９】
ステップＳＴ１１で画像符号化部２０-3は、ＤＣレベルシフトを行う。画像符号化部２０-3は、入力された画像データＤＶaに対してＤＣレベルシフト部２１でＤＣレベルシフトを行ってステップＳＴ１２に進む。
【０１７０】
ステップＳＴ１２で画像符号化部２０-3は、ＭＤＷＴを行う。画像符号化部２０-3は、ＤＣレベルシフトが行われた画像データＤＶbに対して帯域分割部２２でＭＤＷＴを行い、ＭＤＷＴ係数データの絶対値ＣＥaと符号ＣＥsを得てステップＳＴ１３に進む。
【０１７１】
ステップＳＴ１３で画像符号化部２０-3は、ＳＢおよびＺＢＰの検出を行う。画像符号化部２０-3は、ＭＤＷＴ係数データの絶対値ＣＥaからＳＢおよびＺＢＰをＳＢ／ＺＢＰ検出部２３で検出してステップＳＴ１３ａに進む。
【０１７２】
ステップＳＴ１３ａで画像符号化部２０-3は、ＺＢＰ検出結果の直交変換を行う。画像符号化部２０-3は、ＳＢ／ＺＢＰ検出部２３で得られたＺＢＰ検出結果ＤＴzbpの直交変換を行い、ＺＢＰ直交変換結果ＤＴtzbpを算出してステップＳＴ１４に進む。
【０１７３】
ステップＳＴ１４で画像符号化部２０-3は、エントロピー符号化を行う。画像符号化部２０-3は、ＭＤＷＴ係数データの絶対値ＣＥaのビットプレーンとＳＢ検出結果ＤＴsbとＺＢＰ直交変換結果ＤＴtzbpについてエントロピー符号化部２４でエントロピー符号化を行い、ビットストリームＢＳa、ビットストリーム長ＤＴbsおよびモードフラグＭＦを得てステップＳＴ１５に進む。
【０１７４】
ステップＳＴ１５で画像符号化部２０-3は、歪特性の推定を行う。画像符号化部２０-3は、ＭＤＷＴ係数データの絶対値ＣＥa、ＳＢ検出結果ＤＴsb、ＺＢＰ検出結果ＤＴzbpおよびビットストリーム長ＤＴbsに基づき歪特性推定部２５で歪特性を推定してステップＳＴ１６に進む。
【０１７５】
ステップＳＴ１６で画像符号化部２０-3は、トランケーションを行う。画像符号化部２０-3は、ビットストリームＢＳa、ビットストリーム長ＤＴbs、ＺＢＰ検出結果ＤＴzbp、符号ＣＥs、歪特性推定結果Ｅrdに基づき、必要に応じてトランケーション部２６でトランケーションを行う。画像符号化部２０-3は、ビットストリーム長が目標符号長に収まらないとき、ビットストリームおよび符号のトランケーションを行い、ビットストリームＢＳbの符号長を目標符号長以下としてステップＳＴ１７に進む。
【０１７６】
ステップＳＴ１７で画像符号化部２０-3は、所定のフォーマットへの変換を行う。画像符号化部２０-3は、モードフラグＭＦを含む付加情報と、トランケーションされたビットストリームＢＳbをパッキング部２７で所定のフォーマットに変換して、符号化データＤpdを生成して符号化処理を終了する。
【０１７７】
［４−３．画像符号化部の各部の動作］
次に、第３の実施の形態の画像符号化部について、各部の動作について説明する。帯域分割部２２は、上述の［２−３−１．帯域分割部の動作］で説明したように、例えばＤＷＴ（Discrete Wavelet Transform）に加えて、低域成分の係数データに対して空間的な位置の並び替えを行い、ＭＤＷＴ係数データを生成する。
【０１７８】
ＳＢ／ＺＢＰ検出部２３は、上述の［２−３−２．ＳＢ／ＺＢＰ検出部の動作］で説明したように、帯域分割部２２から出力されるＭＤＷＴ係数データ毎にＳＢのインデックスＩＤＸsbを求めてＳＢ検出結果ＤＴsbとする。また、Ｊ個の係数データからなるサブブロック毎に、ＺＢＰのインデックスＩＤＸzbpを求めてＺＢＰ検出結果ＤＴzbpとする。
【０１７９】
ＺＢＰ直交変換部２８は、ＺＢＰ検出結果ＤＴzbpの直交変換を行う。ＺＢＰ直交変換部２８は、ＺＢＰ検出結果ＤＴzbpを数値列として直交変換を行い、ＺＢＰ直交変換結果ＤＴtzbpを算出する。ＺＢＰ直交変換部２８は、直交変換として例えばＨａａｒ変換を用いる。
【０１８０】
式（７）（８）は、Ｈａａｒ変換を示しており、「Ｘ(ｎ)」は入力の数値列、「Ｙ(ｎ)」は出力の数値列、「Ｎ」は数値列の要素数、「ｎ」は数値列のインデックスを示している。また、「ｎ」は、「０≦ｎ＜Ｎ／２」である。
Ｙ（ｎ＋Ｎ／２）＝Ｘ（２ｎ＋１）−Ｘ（２ｎ）      ・・・（７）
Ｙ（ｎ）＝Ｘ（２ｎ）＋（Ｙ（ｎ＋Ｎ／２）＞＞１）  ・・・（８）
【０１８１】
図３６は、Ｈａａｒ変換の変換過程を例示している。図３６の（Ａ）はＺＢＰ検出結果ＤＴzbpを数値列としたとき、数値列が「１，２，４，３，５，７，６，７」であった場合を示している。ＺＢＰ直交変換部２８は、数値列が８個の数字で構成されていることからの「Ｎ＝８」としてＨａａｒ変換を行う。ここで、式（７）の演算を行うと、図３６の（Ｂ）における左から５番目〜８番目の値「１，−１，２，１」が算出される。さらに、式（７）を用いて算出した値と図３６の（Ａ）の値を用いて式（８）の演算を行うと、図３６の（Ｂ）における左から１番目〜４番目の値「１，４，６，６」が算出される。なお、式（８）において、（Ｙ（ｎ＋Ｎ／２）＞＞１）は「Ｙ（ｎ＋Ｎ／２）」のデータを１ビット右シフトすることで１／２倍とする処理である。
【０１８２】
次に、「Ｎ＝４」として、図３６の（Ｂ）に示す数値列について式（７）（８）の演算を行う。式（７）の演算を行うと、図３６の（Ｃ）における左から３番目〜４番目の値「３，３」が算出される。さらに、式（７）を用いて算出した値と図３６の（Ｂ）の値を用いて式（８）の演算を行うと、図３６の（Ｃ）における左から１番目と２番目の値「２，６」が算出される。
【０１８３】
さらに「Ｎ＝２」として、図３６の（Ｃ）に示す数値列について式（７）（８）の演算を行う。式（７）の演算を行うと、図３６の（Ｄ）における左から２番目の値「４」が算出される。さらに、式（７）を用いて算出した値と図３６の（C）の値を用いて式（８）の演算を行うと、図３６の（Ｄ）における左端の値「４」が算出される。したがって、数値列「１，２，４，３，５，７，６，７」に対してＨａａｒ変換を行うと、変換結果は「４，４，３，０，１，−１，２，１」となる。
【０１８４】
このように、ＺＢＰ直交変換部２８は、ＺＢＰ検出結果ＤＴzbpを示す数値列の直交変換を行い、数値の発生分布に偏りを生じたＺＢＰ直交変換結果ＤＴtzbpを生成する。
【０１８５】
エントロピー符号化部２４は、上述の［２−３−３．エントロピー符号化部の動作］の説明において、ＺＢＰ検出結果ＤＴzbpに代えてＺＢＰ直交変換結果ＤＴtzbpを用いて、ＺＢＰ直交変換結果ＤＴtzbpを示すインデックスＩＤＸtzbp、ＴＰのインデックスＩＤＸtp、ビットプレーンの３つをそれぞれエントロピー符号化する。
【０１８６】
図３７は、ＺＢＰ直交変換結果ＤＴtzbpとインデックスＩＤＸtzbpの関係を示している。ＺＢＰ直交変換結果ＤＴtzbpを示す数値列は、図１０に示すようにインデックスＩＤＸtzbpを設定したとき、「０〜９」のいずれかの値となる。また、ＺＢＰ直交変換結果ＤＴtzbpを示す数値列が「０〜９」のいずれかの値であると、ＺＢＰ直交変換結果ＤＴtzbpの数値列は「−９〜９」の範囲内の数値となる。したがって、エントロピー符号化部２４は、ＺＢＰ直交変換結果ＤＴtzbpの直交変換値に対応したインデックスＩＤＸtzbpを設定する。
【０１８７】
また、エントロピー符号化部２４は、変換テーブルを用いてインデックスＩＤＸtzbpをインデックス毎にシンボルに置き換える。変換テーブルは、例えば統計データに基に作成したハフマンテーブルを用いる。ＺＢＰ検出結果ＤＴabpの直交変換を行うと、上述のようにＩＤＸtzbpの各インデックスの発生確率に偏りを持たせることができる。したがって、数値の発生分布に偏りを生じたＺＢＰ直交変換結果ＤＴtzbpを用いてエントロピー符号化を行えば、ＺＢＰ検出結果ＤＴzbpを用いてエントロピー符号化を行う場合に比べて符号量を少なくできる。具体的には、図３８に示すような変換テーブルを用いて、該当するＺＢＰのインデックスＩＤＸtzbpとコンテキストの組み合わせに該当するシンボルを符号化結果として選択する。図３８に示す変換テーブルは、統計データを基に作成したハフマンテーブルなどを用いる。
【０１８８】
Ｈａａｒ変換を用いたＺＢＰ直交変換の場合、コンテキストとして各インデックスの所属するＨａａｒ変換の帯域（サブバンド）を用いる。これは、Ｈａａｒ変換の性質としてサブバンドごとにインデックスの出現確率の統計性が異なることを利用するためである。
【０１８９】
また、変換テーブルは、１つの変換テーブルを用いる場合に限らず、複数の変換テーブルから符号化に用いる変換デーブルを選択できるようにすることも可能である。例えば、比較的統計データに沿ったＺＢＰのインデックスＩＤＸzbpとなるもの（符号化が簡単なもの）に適用するＺＢＰ_Ｅａｓｙ_ｔａｂｌｅと、統計データから外れてしまうもの（符号化が困難なもの）に適用するＺＢＰ_Ｈａｒｄ_ｔａｂｌｅの２種類を用いる。
【０１９０】
２種類の変換テーブルを用いてインデックスＩＤＸtzbpのエントロピー符号化方法を行う場合、図１２の場合と同様に、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅを用いた符号化と、ＺＢＰ_Ｅａｓｙ_ｔａｂｌｅを用いた符号化を行い、それぞれＭ×Ｎ画素のブロック単位でのビットストリーム長を求める。さらに、求めたビットストリーム長を比較して、ビットストリーム長が短い符号化結果を選択して出力する。また、図１３の場合におけるインデックスＩＤＸzbpの平均値に代えてインデックスＩＤＸtzbpの平均値を用いて、平均値と閾値との比較結果に応じて、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅまたはＺＢＰ_Ｅａｓｙ_ｔａｂｌｅのいずれかを用いた符号化結果を出力するようにしてもよい。
【０１９１】
また、エントロピー符号化部２４は、上述の［２−３−３．エントロピー符号化部の動作］で説明したように、ＴＰのインデックスＩＤＸtpのエントロピー符号化やビットプレーンの符号化も行い、ビットストリームを生成する。なお、ビットプレーンのエントロピー符号化は、ＺＢＰ直交変換結果やＴＰの符号化と異なり、ビットプレーンの係数ビット（例えば「１,０」の値）を符号化する。変換テーブルのコンテキストとしては、ビットプレーンのインデックスＩＤＸbp、ビットプレーンの所属するサブバンド、ＳＢ_ｆｌａｇなどを用いる。
【０１９２】
さらに、エントロピー符号化部２４は、ＺＢＰ直交変換結果、ＴＰ、ビットプレーンのそれぞれのエントロピー符号化において、ビットストリームを生成する際に、それぞれのビットストリーム長を記録しておく。これらは、後段の歪特性推定部２５で必要となる。特に、ＴＰとビットプレーンのビットストリーム長は、トランケーションを行うために、各ビットプレーンおよび各サブブロックで記録しておく必要がある。
【０１９３】
歪特性推定部２５は、上述の［２−３−４．歪特性推定部の動作］で説明したように、トランケーション部２６でいずれのビットプレーンをトランケーションするか判断できるようにするために、符号量と歪みの関係を示す歪特性を推定する。
【０１９４】
トランケーション部２６は、上述の［２−３−５．トランケーション部の動作］で説明したように、歪特性推定部２５から出力された歪特性推定結果Ｅrdに基づいて、目標符号長内で最適な画質を得るためのビットプレーンの取捨選択を行う。パッキング部２７は、上述の［２−３−６．パッキング部の動作］で説明したように、モードフラグＭＦ、トランケーション後のビットストリーム（ＺＢＰ、ＴＰ、ビットプレーン、符号）ＢＳbを所定のフォーマットに変換し、画像復号化部３０-3で復号化できる符号化データＤpdを生成する。
【０１９５】
［４−４．第３の実施の形態における画像復号化部の構成］
図３９は、第３の実施の形態における画像復号化部の構成を示している。画像復号化部３０-3は、第１の実施の形態と同様に、デパッキング部３１、エントロピー復号化部３２、ラウンディングビット付加部３３  帯域合成部３４、IＤＣレベルシフト部３５等を有している。さらに、画像復号化部３０-3には、ＺＢＰ復号化部３７とＺＢＰ逆直交変換部３８が設けられている。
【０１９６】
デパッキング部３１は、画像符号化部２０-3で生成された所定のフォーマットの符号化データＤpdを入力して解析を行い、エントロピー復号化部３２でビットストリームの復号化に必要な付加情報を取得する。デパッキング部３１は、例えば、図２３に示すフォーマットの符号化データからビットストリームとビットストリームを復号化するために必要な情報（モードフラグを含む）を切り離す。また、デパッキング部３１は、複数のコンポーネント信号の符号化データが１つの符号化データにまとめられている場合、それらの分離等を行う。デパッキング部３１は、ビットストリームの復号化に必要な付加情報と共にビットストリームＢＳbをエントロピー復号化部３２とＺＢＰ復号化部３７に出力する。
【０１９７】
ＺＢＰ復号化部３７は、ＺＢＰの復号化に必要な付加情報（例えば符号化時の変換テーブルを示すフラグ）を用いてビットストリームの復号化を行う。ＺＢＰ復号化部３７は、い、符号化時と同一の変換テーブルを用いてビットストリームのエントロピー復号化を行いインデックスＩＤＸtzbpを生成する。さらに、ＺＢＰ復号化部３７は、インデックスＩＤＸtzbpを符号化時と同一のルールでＺＢＰ直交変換結果ＤＴtzbpに置き換えてＺＢＰ逆直交変換部３８に出力する。
【０１９８】
ＺＢＰ逆直交変換部３８は、ＺＢＰ復号化部３７から供給されたＺＢＰ直交変換結果ＤＴtzbpの逆直交変換を行ってＺＢＰ検出結果ＤＴzbpを生成してエントロピー復号化部３２に出力する。
【０１９９】
エントロピー復号化部３２は、デパッキング部３１から出力されたビットストリームＢＳbのエントロピー復号化を行いＴＰのインデックスＩＤＸtpを得て、インデックスＩＤＸtpとＺＢＰ検出結果ＤＴzbpを用いてＭＤＷＴ係数データの絶対値の復号化を行う。また、エントロピー復号化部３２は、復号化されたＭＤＷＴ係数データの絶対値ＣＥbとビットストリームＢＳbのエントロピー復号化を行って得られたＴＰのインデックスＩＤＸtpをラウンディングビット付加部３３に出力する。また、エントロピー復号化部３２は、符号ＣＥsを帯域合成部３４に出力する。
【０２００】
ラウンディングビット付加部３３は、ＭＤＷＴ係数データの絶対値ＣＥbとＴＰのインデックスＩＤＸtpに基づき、画像符号化部２０-3でトランケーションされたビットプレーンのビットストリームを推定してＭＤＷＴ係数データの絶対値の復元を行う。ラウンディングビット付加部３３は、復元されたＭＤＷＴ係数データの絶対値ＣＥcを帯域合成部３４へ出力する。
【０２０１】
帯域合成部３４は、復元されたＭＤＷＴ係数データの絶対値ＣＥcと符号ＣＥsを用いて、逆変換（Inverse Modified Discrete Transform）を行う。なお、逆変換は、画像符号化部２０-3の帯域分割部２２で得られた係数データを変換前の画像データに戻す処理である。帯域合成部３４は、逆変換を行うことにより得られた復号化ＤＣレベルシフトデータＤＶcをＩＤＣレベルシフト部３５へ出力する。
【０２０２】
ＩＤＣレベルシフト部３５は、復号化ＤＣレベルシフトデータＤＶcに対してＤＣ値を足し合わせて、画像復号化部３０-3の外部へブロック単位の画像データＤＶdとして出力する。なお、ＤＣ値は、画像符号化部２０-3におけるＤＣレベルシフト部２１で用いたＤＣ値と等しい値である。
【０２０３】
［４−５．第３の実施の形態における画像復号化部の動作］
次に、第３の実施の形態における画像復号化部の動作について図４０のフローチャートを用いて説明する。なお、図４０において、第１の実施の形態における画像復号化部と対応する処理については、同一の番号を付している。
【０２０４】
ステップＳＴ６１で画像復号化部３０-3は、復号化可能なビットストリームの取得を行う。画像復号化部３０-3は、所定のフォーマットの符号化データについて解析をデパッキング部３１で行い、復号化可能なビットストリームを符号化データから取得してステップＳＴ６１ａに進む。
【０２０５】
ステップＳＴ６１ａで画像復号化部３０-3は、ＺＢＰ復号化を行う。画像復号化部３０-3は、デパッキング部３１で得られたビットストリームを用いてＺＢＰ復号化を行い、ＺＢＰ直交変換結果ＤＴtzbpを取得してステップＳＴ６１ｂに進む。
【０２０６】
ステップＳＴ６１ｂで画像復号化部３０-3は、ＺＢＰ逆直交変換を行う。画像復号化部３０-3は、ＺＢＰ直交変換結果ＤＴtzbpの逆直交変換を行い、ＺＢＰ検出結果ＤＴzbpを生成してＳＴ６２に進む。
【０２０７】
ステップＳＴ６２で画像復号化部３０-3は、ビットストリームの復号化を行う。画像復号化部３０-3は、ＴＰを示すインデックスＩＤＸtpを復号化したのち、このインデックスＩＤＸtpとステップＳＴ６１ｂで生成されたＺＢＰ検出結果ＤＴzbpを用いてＭＤＷＴ係数データの絶対値をエントロピー復号化部で復号化する。また、画像復号化部３０-3は、符号の復号化をエントロピー復号化部３２で行いステップＳＴ６３に進む。
【０２０８】
ステップＳＴ６３で画像復号化部３０-3は、ラウンディングビットの付加を行う。画像復号化部３０-3は、ラウンディングビット付加部３３において、画像符号化部２０-3でトランケーションされたビットプレーンのビットストリームを推定してラウンディングビットとする。さらに、画像復号化部３０-3は、推定したラウンディングビットを復号化されたＭＤＷＴ係数データの絶対値に加えてＭＤＷＴ係数データの絶対値の復元をラウンディングビット付加部３３で行いステップＳＴ６４に進む。
【０２０９】
ステップＳＴ６４で画像復号化部３０-3は、ＩＭＤＷＴ（Inverse Modified Discrete Wavelet Transform）を行う。画像復号化部３０-3は、復元されたＭＤＷＴ係数データの絶対値と復号化された符号を用いてＩＭＤＷＴを帯域合成部３４で行い、復号化ＤＣレベルシフト信号を得てステップＳＴ６５に進む。
【０２１０】
ステップＳＴ６５で画像復号化部３０-3は、ＩＤＣレベルシフトを行う。画像復号化部３０-3は、復号化ＤＣレベルシフト信号に対してＤＣ値をＩＤＣレベルシフト部３５で足し合わせることにより復号化された画像データを得て処理を終了する。
【０２１１】
［４−６．第３の実施の形態における画像復号化部の各部の動作］
エントロピー復号化部３２は、上述の［２−６−１．エントロピー復号化部の動作］で説明したように、デパッキング部３１から供給されるビットストリームと復号化に必要な付加情報（ビットストリームの符号化に用いられた変換テーブルを示すモードフラグを含む）を、入力として受け付ける。
【０２１２】
ＺＢＰ復号化部３７は、ＺＢＰの復号化に必要な付加情報（例えば符号化時の変換テーブルを示すフラグ）を用いてビットストリームの復号化を行う。ＺＢＰ復号化部３７は、い、符号化時と同一の変換テーブルを用いてビットストリームのエントロピー復号化を行いインデックスＩＤＸtzbpを生成する。さらに、ＺＢＰ復号化部３７は、インデックスＩＤＸtzbpを符号化時と同一のルールでＺＢＰ直交変換結果ＤＴtzbpに置き換えてＺＢＰ逆直交変換部３８に出力する。
【０２１３】
ＺＢＰ復号化部３７は、インデックスＩＤＸtzbpの符号化において、ＺＢＰ_Ｈａｒｄ_ｔａｂｌｅとＺＢＰ_Ｅａｓｙ_ｔａｂｌｅの何れが用いられたが判別して、判別したテーブルを用いて復号化を行い、インデックスＩＤＸtzbpを取得する。さらに、ＺＢＰ復号化部３７は、取得したインデックスＩＤＸtzbpを図３７に示すテーブルに基づきＺＢＰ直交変換結果ＤＴtzbpの数値に変換する。
【０２１４】
ＺＢＰ逆直交変換部３８は、ＺＢＰ復号化部３７から供給されたＺＢＰ直交変換結果ＤＴtzbpの逆直交変換を行ってＺＢＰ検出結果ＤＴzbpを生成してエントロピー復号化部３２に出力する。ＺＢＰ逆直交変換部３８は、画像符号化部２０-3のＺＢＰ直交変換部２８で行われた直交変換に対応した逆直交変換を行う。
【０２１５】
例えばＺＢＰ直交変換部２８でＨａａｒ変換が行われた場合、ＺＢＰ逆直交変換部３８は、逆Ｈａａｒ変換を行う。
【０２１６】
式（９）（１０）は、逆Ｈａａｒ変換を示しており、「Ｙ(ｎ)」は直交変換が行われている（逆直交変換前の）数値列、「Ｘ(ｎ)」は直交変換が行われる前（逆直交変換後の）の数値列、「Ｎ」は数値列の要素数、「ｎ」は数値列のインデックスを示している。また、「ｎ」は、「０≦ｎ＜Ｎ／２」である。
Ｘ（２ｎ）＝Ｙ（ｎ）−（Ｙ（ｎ＋Ｎ／２）＞＞１）  ・・・（９）
Ｘ（２ｎ＋１）＝Ｘ（２ｎ）＋Ｙ（ｎ＋Ｎ／２）      ・・・（１０）
【０２１７】
図４１は、逆Ｈａａｒ変換の変換過程を例示している。図４１の（Ａ）はＺＢＰ直交変換結果ＤＴtzbpが数値列「４，４，３，０，１，−１，２，１」であった場合を示している。ＺＢＰ逆直交変換部３８は、「Ｎ＝２」として式（９）（１０））の演算を行う。式（９）の演算を行うと、図４１の（Ｂ）における左端の値「２」が算出される。なお、式（９）において、（Ｙ（ｎ＋Ｎ／２）＞＞１）は「Ｙ（ｎ＋Ｎ／２）」のデータを１ビット右シフトすることで１／２倍とする処理である。
【０２１８】
次に、式（９）を用いて算出した値と図４１の（Ａ）の値を用いて式（１０）の演算を行うと、図４１の（Ｂ）における左から２番目の値「６」が算出される。
【０２１９】
その後、「Ｎ＝４」として、図４１の（Ｂ）に示す数値列について式（９）（１０））の演算を行う。式（９）の演算を行うと、図４１の（Ｃ）における左から１番目と２番目の値「１，４」が算出される。さらに、式（９）を用いて算出した値と図４１の（Ｂ）の値を用いて式（１０）の演算を行うと、図４１の（Ｃ）における左から３番目と４番目の値「６，６」が算出される。
【０２２０】
さらに「Ｎ＝８」として、図４１の（Ｃ）に示す数値列について式（９）（１０））の演算を行う。式（９）の演算を行うと、図４１の（Ｄ）における左から１番目〜４番目の値「１，２，４，３」が算出される。さらに、式（９）を用いて算出した値と図４１の（C）の値を用いて式（１０）の演算を行うと、図４１の（Ｄ）における左から５番目〜８番目の値「５，７，６，７」が算出される。したがって、数値列「４，４，３，０，１，−１，２，１」に対して逆Ｈａａｒ変換を行うと変換結果は「１，２，４，３，５，７，６，７」となり、図３６の（Ａ）と等しくなる。
【０２２１】
このように、ＺＢＰ逆直交変換部３８は、ＺＢＰ直交変換結果ＤＴtzbpを示す数値列の逆直交変換を行い、直交変換前のＺＢＰ検出結果ＤＴzbpを再現する。
【０２２２】
エントロピー復号化部３２は、ＴＰのインデックスＩＤＸtpを復号化する。ＴＰのインデックスＩＤＸtpは、上述の画像符号化部２０-1におけるエントロピー符号化部２４の動作で説明したように、１つまたは複数の例えばハフマンテーブルを用いて符号化されている。したがって、エントロピー復号化部３２は、どの変換テーブルを用いて符号化されているかモードフラグにより判断する。エントロピー復号化部３２は、ＴＰ_Ｈａｒｄ_ｔａｂｌｅを用いて符号化が行われていると判別した場合、ＴＰ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行い、ＴＰ_Ｅａｓｙ_ｔａｂｌｅを用いて符号化が行われていると判別した場合、ＴＰ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行う。
【０２２３】
エントロピー復号化部３２は、ＺＢＰ検出結果ＤＴzbpおよびＴＰのインデックスＩＤＸtpの復号化結果から、ビットプレーンのどの部分が符号化されているか判別できる。また、符号化された範囲が明らかとなることから、ビットストリームを復号化して得られたデータがいずれのサブブロックのいずれのビットプレーンのデータであるか、判別することができる。
【０２２４】
さらに、エントロピー復号化部３２は、ＭＤＷＴ係数データの絶対値を示すビットストリームの復号化を行う。エントロピー復号化部３２は、Ｃｏｅｆ_Ｈａｒｄ_ｔａｂｌｅを用いて符号化が行われていると判別した場合、Ｃｏｅｆ_Ｈａｒｄ_ｔａｂｌｅを用いて復号化を行い、Ｃｏｅｆ_Ｅａｓｙ_ｔａｂｌｅを用いて符号化が行われていると判別した場合、Ｃｏｅｆ_Ｅａｓｙ_ｔａｂｌｅを用いて復号化を行う。なお、エントロピー復号化部３２は、どの変換テーブルを用いて符号化されているか付加情報のモードフラグにより判断する。
【０２２５】
エントロピー復号化部３２は、変換テーブルを用いて復号化を行い、ＭＤＷＴ係数データの絶対値を示すデータを取得して復号化動作を終了する。
【０２２６】
ラウンディングビット付加部３３は、画像符号化部２０-3でトランケーションされた下位ビットを推定して、ＭＤＷＴ係数データの絶対値を復元する。ラウンディングビット付加部３３は、ＴＰのインデックスＩＤＸtpに基づき、画像符号化部２０-3でトランケーションされた下位ビットの位置を判別して、判別した位置のデータを推定する。推定の方法としては、上述のように、統計に基づいてあらかじめ作成しておいたテーブルを参照することで、推定したデータを取得して、係数データの絶対値を示すデータに付加して、帯域合成部３４に出力する。
【０２２７】
帯域合成部３４は、画像符号化部２０-3で行われたＭＤＷＴの逆変換であるＩＭＤＷＴ（Inverse Modified Discrete Wavelet Transform）を行う。画像符号化部２０-3において説明したとおり、ＭＤＷＴは基本的にはＤＷＴと同じであるが、信号端の帯域分割精度向上のために帯域分割するたびに低域信号の空間的な位置の入れ替えを行っている。したがって、帯域合成部３４は、入力されたＭＤＷＴ係数データのうち、低域信号の空間的な位置を符号化時とは逆の操作によって元の位置に戻す。その後、ＩＤＷＴと同様にデインターリーブ、対象周期拡張および２段のリフティング演算を行い、帯域合成を行う。また、帯域合成を繰り返す場合は、そのたびに最初に低域信号を元の空間位置に戻す操作を行う。帯域合成部３４は、このような処理を行い復号化ＤＣレベルシフト信号を生成する。
【０２２８】
このように、画像符号化部２０-3と画像復号化部３０-3で画像データの符号化や復号化を行うと、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置が並び替えられるので、低域成分の係数データに対して周波数帯域分割を繰り返し行って、複数の周波数帯域毎の係数データを生成しても、例えば拡張された画像データを用いて生成された低域成分の係数データの位置が固定した位置とならないので、拡張された画像データを用いたことによる帯域分離精度の低下の影響が繰り返し反映されてしまうことがなくなる。したがって、ブロック単位で画像の符号化を行ってもブロック歪みの少ない復号画像を得ることができる。
【０２２９】
また、係数データは、所定数毎にサブブロックとして区分されて、サブブロック毎に係数データのビットプレーンをトランケーションしたときの画像の歪み量の変化が推定される。この推定結果に対して、ブロックの端に位置するサブブロックが、他の位置のサブブロックよりもトランケーションされ難くなるように重み付けが行われる。この重み付け後の推定結果に基づいて、画像の歪みが少なく符号量が目標符号量以内となるトランケーション位置が検出されてして、係数データ等のトランケーションが行われる。したがって、ブロックの端部の係数データがトランケーションされてしまうことを少なくできるので、ブロックの境界での歪みを軽減させることができる。
【０２３０】
さらに、ＺＢＰ検出結果ＤＴzbpの直交変換が行われて、数値の発生頻度に偏りを持たせることができるので、偏りに応じたエントロピー符号化処理を行うことで、発生符号量を更に削減することができる。
【０２３１】
＜５．第４の実施の形態＞
［５−１．第４の実施の形態における画像符号化部の構成］
図４２は、第３の実施の形態の画像符号化部の簡略構成を第４の実施の形態として例示している。
【０２３２】
画像符号化部２０-4は、図３４に示す画像符号化部２０-3から、ＤＣレベルシフト部２１と歪特性推定部２５およびパッキング部２７を省略した構成とされている。
【０２３３】
この場合、帯域分割部２２は、ＤＣレベルシフトされた信号ではなく、入力された画像データに対してＭＤＷＴを行う。また、トランケーションを行う基準となる歪特性推定部２５を省略する場合には、例えば、歪特性推定部２５であらかじめ符号化歪みＥＣΔＤi(ｐ)または傾き（ＥＣΔＤi(ｐ)／ΔＲi(p)）を算出しておき、それをテーブル化しておいたものを歪特性テーブル２９に記憶させておく。この歪特性テーブルをトランケーション部２６へ入力し、トランケーション部２６は、これを基にトランケーションを実施する。また、エントロピー符号化部２４において、ＺＢＰ直交変換結果とＴＰとビットプレーンで用いた符号化テーブルがそれぞれ１つで、トランケーションされたビットストリームに付加する情報がない場合、トランケーションされたビットストリームを符号化データとして画像符号化部２０-4から出力してもよい。この場合、パッキング部２７も省略できる。
【０２３４】
［５−２．第４の実施の形態における画像復号化部の構成］
図４３は、第３の実施の形態の画像復号化部の簡略構成を第４の実施の形態として例示している。
【０２３５】
画像復号化部３０-4は、図３９に示す画像復号化部３０-3から、デパッキング部３１、ラウンディングビット付加部３３およびＩＤＣレベルシフト部３５を省略した構成とされている。
【０２３６】
図４２に示す画像符号化部２０-4で生成された符号化データがビットストリームのみで付加情報がなければ、画像復号化部３０-4にはデパッキング部３１を設ける必要がない。また、ラウンディングビット付加部３３は、復号化そのものに必須となる構成ではなく、復号化信号の画質向上を目的としているため、省略することが可能である。また、画像符号化部２０-4においてＤＣレベルシフトがなされていない場合は、ＩＤＣレベルシフト部３５を設ける必要がない。したがって、図４３に示す構成の画像復号化部３０-4を用いれば、画像符号化部２０-4から出力されたビットストリームを復号化できる。
【０２３７】
＜６．符号化と復号化をコンピュータで行う場合＞
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータを用いる。または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどを用いて、プログラム記録媒体からソフトウェアをインストールする。
【０２３８】
図４４は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェア構成を例示した図である。
【０２３９】
コンピュータ６０において、ＣＰＵ（Central Processing Unit）６１、ＲＯＭ（Read Only Memory）６２、ＲＡＭ（Random Access Memory）６３は、バス６４により相互に接続されている。
【０２４０】
バス６４には、さらに、入出力インタフェース６５が接続されている。入出力インタフェース６５には、キーボード、マウスなどよりなるユーザインタフェース部６６、画像データを入力するための入力部６７、ディスプレイなどよりなる出力部６８、ハードディスクや不揮発性のメモリなどよりなる記録部６９等が接続される。さらに、入出力インタフェース６５には、ネットワークインタフェースなどよりなる通信部７０、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア８０を駆動するドライブ７１が接続されている。
【０２４１】
以上のように構成されるコンピュータでは、ＣＰＵ６１が、例えば、記録部６９に記録されているプログラムを、入出力インタフェース６５およびバス６４を介して、ＲＡＭ６３にロードして実行することにより、上述した一連の処理が行われる。
【０２４２】
コンピュータ（ＣＰＵ６１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（ＣＤ−ＲＯＭ(Compact Disc-Read Only Memory),ＤＶＤ(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア８０に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０２４３】
そして、プログラムは、リムーバブルメディア８０をドライブ７１に装着することにより、入出力インタフェース６５を介して、記録部６９にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部７０で受信し、記録部６９にインストールすることができる。その他、プログラムは、ＲＯＭ６２や記録部６９に、予めインストールしておくことができる。
【０２４４】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであってもよいし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであってもよい。
【０２４５】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。例えば、上述の実施の形態では、５×３リフティング構成を示したが、９×７リフティング構成等であってもよい。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【産業上の利用可能性】
【０２４６】
この発明の画像符号化装置とその方法、画像復号化装置とその方法、およびプログラムでは、周波数帯域分割によって得られた低域成分の係数データに対して空間的な位置を並び替えてから再度周波数帯域分割を行い、ブロック単位の画像データから複数の周波数帯域毎の係数データが生成される。また、生成された複数の周波数帯域毎の係数データの符号化が行われる。このため、ブロックの端部で画像データを拡張して周波数帯域分割を繰り返しても、拡張された画像データを用いて生成された低域成分の係数データの位置が固定した位置とならない。したがって、拡張された画像データを用いたことによる帯域分離精度の低下の影響が繰り返し反映されてしまうことがなく、ブロック単位で画像の符号化を行ってもブロック歪の少ない復号画像を得られるため、画像データの記録装置や画像データの通信装置等に適している。
【符号の説明】
【０２４７】
１０・・・画像処理装置、１２・・・処理システム部、１４，８５・・・メモリ、２０，２０-1，２０-2，２０-3，２０-4，８１・・・画像符号化部、２１・・・ＤＣレベルシフト部、２２・・・帯域分割部、２３・・・ＳＢ／ＺＢＰ検出部、２４・・・エントロピー符号化部、２５・・・歪特性推定部、２６・・・トランケーション部、２７・・・パッキング部、２８・・・ＺＢＰ直交変換部、２９・・・歪特性テーブル、３０，３０-1，３０-2，３０-3，３０-4，８２・・・画像復号化部、３１・・・デパッキング部、３２・・・エントロピー復号化部、３３・・・ラウンディングビット付加部、３４・・・帯域合成部、３５・・・ＩＤＣレベルシフト部、３７・・・ＺＢＰ復号化部、３８・・・ＺＢＰ逆直交変換部、５０・・・コンピュータ、５１・・・ＣＰＵ。５２・・・ＲＯＭ、５３・・・ＲＡＭ、５４・・・バス、５５・・・入出力インタフェース、５６・・・ユーザインタフェース部、５７・・・入力部、５８・・・出力部、５９・・・記録部、６０・・・通信部、６１・・・ドライブ、８０・・・リムーバブルメディア、８０・・・画像処理システム
【図１】
2011217347.tif 000005
【図２】
2011217347.tif 000006
【図３】
2011217347.tif 000007
【図４】
2011217347.tif 000008
【図５】
2011217347.tif 000009
【図６】
2011217347.tif 000010
【図７】
2011217347.tif 000011
【図８】
2011217347.tif 000012
【図９】
2011217347.tif 000013
【図１０】
2011217347.tif 000014
【図１１】
2011217347.tif 000015
【図１２】
2011217347.tif 000016
【図１３】
2011217347.tif 000017
【図１４】
2011217347.tif 000018
【図１５】
2011217347.tif 000019
【図１６】
2011217347.tif 000020
【図１７】
2011217347.tif 000021
【図１８】
2011217347.tif 000022
【図１９】
2011217347.tif 000023
【図２０】
2011217347.tif 000024
【図２１】
2011217347.tif 000025
【図２２】
2011217347.tif 000026
【図２３】
2011217347.tif 000027
【図２４】
2011217347.tif 000028
【図２５】
2011217347.tif 000029
【図２６】
2011217347.tif 000030
【図２７】
2011217347.tif 000031
【図２８】
2011217347.tif 000032
【図２９】
2011217347.tif 000033
【図３０】
2011217347.tif 000034
【図３１】
2011217347.tif 000035
【図３２】
2011217347.tif 000036
【図３３】
2011217347.tif 000037
【図３４】
2011217347.tif 000038
【図３５】
2011217347.tif 000039
【図３６】
2011217347.tif 000040
【図３７】
2011217347.tif 000041
【図３８】
2011217347.tif 000042
【図３９】
2011217347.tif 000043
【図４０】
2011217347.tif 000044
【図４１】
2011217347.tif 000045
【図４２】
2011217347.tif 000046
【図４３】
2011217347.tif 000047
【図４４】
2011217347.tif 000048