(57)【特許請求の範囲】
【請求項１】
画像を符号化し、符号データを生成する画像符号化装置であって、
着目画素を、当該着目画素の周囲の符号化済みの周囲画素に基づき、予測符号化、ランレングス符号化のいずれで符号化するかを判定する第１の判定手段と、
該第１の判定手段でランレングス符号化すると判定された場合、前記着目画素と当該着目画素の直前に符号化した画素とが不一致のゼロランの状態であるか否かを判定し、当該判定結果を示す情報を符号化データとして出力する第２の判定手段と、
前記第１の判定手段により前記着目画素を予測符号化すると判定された場合、又は、前記第２の判定手段でゼロランの状態であると判定された場合、前記着目画素を予測符号化し、符号化データを出力する第１の符号化手段と、
前記第２の判定手段により非ゼロランの状態であると判定された場合、前記着目画素からランレングス符号化を開始し、符号化データを出力する第２の符号化手段と
を有することを特徴とする画像符号化装置。
【請求項２】
符号化対象の画像を周波数変換し、複数のサブバンドの係数を生成する周波数変換手段を更に有し、
前記画素は、前記周波数変換手段で得られた係数であることを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記第２の判定手段は、判定結果を示す情報として１ビットのデータを出力することを特徴とする請求項１に記載の画像符号化装置。
【請求項４】
前記第１の判定手段によりランレングス符号で符号化すると判定されたが、前記第２の判定手段により、ゼロランの状態であると判定された前記着目画素に対しては、前記第２の判定手段から出力されるゼロランを示す１ビットおよび前記第１の符号化手段から出力される前記着目画素の符号語とが生成されることを特徴とする請求項３に記載の画像符号化装置。
【請求項５】
前記第２の符号化手段は、ラインの右端に位置する場合を除いて、ゼロランの画素値は入力されないことを特徴とする請求項１乃至４の何れか一項に記載の画像符号化装置。
【請求項６】
前記第１の判定手段は、前記着目画素の周囲の符号化済みの周囲画素のうち、少なくとも２つ以上を参照し、参照する周囲画素が全て同じ値である場合に、前記着目画素をランレングス符号化すると判定することを特徴とする請求項１乃至５の何れか一項に記載の画像符号化装置。
【請求項７】
前記第１の判定手段は、前記着目画素の周囲の符号化済みの周囲画素のうち、少なくとも２つ以上を参照し、参照する周囲画素がいずれも０である場合に、前記着目画素をランレングス符号化すると判定することを特徴とする請求項１乃至６の何れか一項に記載の画像符号化装置。
【請求項８】
前記周波数変換手段はウェーブレット変換手段であって、
前記第１の判定手段は、着目画素に対応する係数がサブバンドＨＬ、ＬＨ、ＨＨに属する場合に参照する周囲係数の数を、サブバンドＬＬに属する場合に参照する係数の数よりも少なくする
ことを特徴とする請求項２に記載の画像符号化装置。
【請求項９】
符号化の対象の着目係数をｘ、左隣の係数をａ、前記着目係数ｘの１ライン前の係数をｂ、前記１ライン前のライン上に位置し、当該係数ｂを挟む係数をｃ、ｄとしたとき、
前記第１の判定手段は、
第１の条件：
前記着目係数ｘがサブバンドＬＬに属し、且つ、
ａ＝ｂ＝ｃ＝ｄ
を満たす場合、前記着目係数をランレングス符号化すると判定し、
第２の条件：
前記着目係数ｘがサブバンドＬＬ以外に属し、且つ、
ａ＝ｂ＝０
を満たす場合、前記着目係数をランレングス符号化すると判定し、
前記第１、第２の条件を満たさない場合、前記着目係数を予測符号化すると判定する
ことを特徴とする請求項８に記載の画像符号化装置。
【請求項１０】
前記周波数変換手段で得られた係数を量子化する量子化手段を更に有し、
前記第１の判定手段、前記第２の判定手段は、前記量子化後の係数を前記画素として判定し、
前記第１の符号化手段、前記第２の符号化手段は、前記係数を符号化する
ことを特徴とする請求項８又は９に記載の画像符号化装置。
【請求項１１】
前記符号化の対象の画像は、カラー画像における１つの色成分で表される画像、又はモノクロ画像であることを特徴とする請求項１乃至１０のいずれか１項に記載の画像符号化装置。
【請求項１２】
符号化画像データを復号する画像復号装置であって、
復号対象の着目画素が、当該着目画素の周囲の復号済みの周囲画素に基づき、予測符号化、ランレングス符号化のいずれで符号化されたかを判定する第１の判定手段と、
該第１の判定手段でランレングス符号化されていると判定された場合、符号化データが、前記着目画素と当該着目画素の直前の画素とのが不一致のゼロランの状態を示している否かを判定する第２の判定手段と、
前記第１の判定手段により前記着目画素が予測符号化されていると判定された場合、又は、前記第２の判定手段で符号化データがゼロランの状態を示していると判定された場合、前記着目画素を予測復号する第１の復号手段と、
前記第２の判定手段により前記符号化データが非ゼロランの状態を示していると判定した場合、前記着目画素からランレングス符号化されていると見なし、ランレングス復号する第２の復号手段と
を有することを特徴とする画像復号装置。
【請求項１３】
前記符号化画像データは周波数変換後のサブバンド毎の係数の符号化データであり、
前記係数を逆周波数変換して画像を生成する逆周波数変換手段とを有する
ることを特徴とする請求項１２に記載の画像復号装置。
【請求項１４】
前記第２の判定手段は、１ビットの符号化データに基づいて判定することを特徴とする請求項１２又は１３に記載の画像復号装置。
【請求項１５】
前記逆周波数変換手段は逆ウェーブレット変換手段であって、
前記第１の判定手段は、復号の対象の着目係数がサブバンドＨＬ、ＬＨ、ＨＨに属する場合に参照する周囲係数の数を、サブバンドＬＬに属する場合に参照する係数の数よりも少なくする
ことを特徴とする請求項１３に記載の画像復号装置。
【請求項１６】
前記着目係数をｘ、左隣の係数をａ、前記着目係数ｘの１ライン前の係数をｂ、前記１ライン前のライン上に位置し、当該係数ｂを挟む係数をｃ、ｄとしたとき、
前記第１の判定手段は、
第１の条件：
前記着目係数ｘがサブバンドＬＬに属し、且つ、
ａ＝ｂ＝ｃ＝ｄ
を満たす場合、前記着目係数がランレングス符号化されていると判定し、
第２の条件：
前記着目係数ｘがサブバンドＬＬ以外に属し、且つ、
ａ＝ｂ＝０
を満たす場合、前記着目係数をランレングス符号化されていると判定し、
前記第１、第２の条件を満たさない場合、前記着目係数が予測符号化されていると判定する
ことを特徴とする請求項１５に記載の画像復号装置。
【請求項１７】
前記第１の復号手段、前記第２の復号手段で得られた係数を逆量子化する逆量子化手段を更に有し、
前記逆周波数変換手段は、前記逆量子化手段による逆量子化後のサブバンドの係数を逆周波数変換する
ことを特徴とする請求項１５又は１６に記載の画像復号装置。
【請求項１８】
前記符号化画像データは、カラー画像における１つの色成分の符号化データ、又はモノクロ画像の符号化データであることを特徴とする請求項１２乃至１７のいずれか１項に記載の画像復号装置。
【請求項１９】
画像を符号化し、符号データを生成する画像符号化装置の制御方法であって、
第１の判定手段が、着目画素を、当該着目画素の周囲の符号化済みの周囲画素に基づき、予測符号化、ランレングス符号化のいずれで符号化するかを判定する第１の判定工程と、
第２の判定手段が、前記第１の判定工程でランレングス符号化すると判定された場合、前記着目画素と当該着目画素の直前に符号化した画素とが不一致のゼロランの状態であるか否かを判定し、当該判定結果を示す情報を符号化データとして出力する第２の判定工程と、
第１の符号化手段が、前記第１の判定工程により前記着目画素を予測符号化すると判定された場合、又は、前記第２の判定工程でゼロランの状態であると判定された場合、前記着目画素を予測符号化し、符号化データを出力する第１の符号化工程と、
第２の符号化手段が、前記第２の判定工程により非ゼロランの状態であると判定された場合、前記着目画素からランレングス符号化を開始し、符号化データを出力する第２の符号化工程と
を有することを特徴とする画像符号化装置の制御方法。
【請求項２０】
符号化画像データを復号する画像復号装置の制御方法であって、
第１の判定手段が、復号対象の着目画素が、当該着目画素の周囲の復号済みの周囲画素に基づき、予測符号化、ランレングス符号化のいずれで符号化されたかを判定する第１の判定工程と、
第２の符号化手段が、該第１の判定工程でランレングス符号化されていると判定された場合、符号化データが、前記着目画素と当該着目画素の直前の画素とのが不一致のゼロランの状態を示している否かを判定する第２の判定工程と、
第１の復号手段が、前記第１の判定工程により前記着目画素が予測符号化されていると判定された場合、又は、前記第２の判定工程で符号化データがゼロランの状態を示していると判定された場合、前記着目画素を予測復号する第１の復号工程と、
第２の復号手段が、前記第２の判定工程により前記符号化データが非ゼロランの状態を示していると判定した場合、前記着目画素からランレングス符号化されていると見なし、ランレングス復号する第２の復号工程と
を有することを特徴とする画像復号装置の制御方法。
【請求項２１】
請求項１９に記載の画像符号化装置の制御方法の各工程を、コンピュータに実行させるためのプログラム。
【請求項２２】
請求項２０に記載の画像復号装置の制御方法の各工程を、コンピュータに実行させるためのプログラム。
【請求項２３】
請求項２１又は２２に記載のプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの符号化技術に関するものである。
【背景技術】
【０００２】
画像データの符号化方式の一つとしてＪＰＥＧ−ＬＳがある。ＪＰＥＧ−ＬＳは、符号化対象画素の周囲画素の状態に基づいて予測符号化とランレングス符号化を判定／選択することで高い圧縮率を実現している。予測符号化は、符号化対象画素の画素値を周囲画素から予測し、予測誤差を符号化する。ＪＰＥＧ−ＬＳにおけるランレングス符号化は、同一画素値のラン長（連続数）を符号化する。予測符号化とランレングス符号化を用いる他の方法として、複数の予測方法を持ち、一致する予測方法の識別情報と、そのラン長（連続値）の符号化と、予測誤差の符号化を選択して適用する方法も知られている（たとえば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３８８５４１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
予測符号化（予測符号化モード）とランレングス符号化（ランレングスモード）とを比べたとき、同じデータが連続すればするほど後者の方が前者に対して圧倒的に符号化効率が高いのは明らかである。しかし、これまでの符号化技術では、予測モードとランレングスモードを誤判定してしまい、ラン長がゼロのときもランレングス符号化してしまう場合がある。さらにウェーブレット変換で得られたサブバンドでは、ウェーブレット係数値にゼロが多いため、ランレングスモードの判定回数が増えると共にラン長がゼロの出現回数も増える。即ち、予測符号化モードとランレングスモードの判定基準について、まだ改善の余地があった。
【０００５】
本発明は係る点に鑑み、高い符号化効率を実現する技術を提供しようとするものである。
【課題を解決するための手段】
【０００６】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像を符号化し、符号データを生成する画像符号化装置であって、
着目画素を、当該着目画素の周囲の符号化済みの周囲画素に基づき、予測符号化、ランレングス符号化のいずれで符号化するかを判定する第１の判定手段と、
該第１の判定手段でランレングス符号化すると判定された場合、前記着目画素と当該着目画素の直前に符号化した画素とが不一致のゼロランの状態であるか否かを判定し、当該判定結果を示す情報を符号化データとして出力する第２の判定手段と、
前記第１の判定手段により前記着目画素を予測符号化すると判定された場合、又は、前記第２の判定手段でゼロランの状態であると判定された場合、前記着目画素を予測符号化し、符号化データを出力する第１の符号化手段と、
前記第２の判定手段により非ゼロランの状態であると判定された場合、前記着目画素からランレングス符号化を開始し、符号化データを出力する第２の符号化手段とを有する。
【発明の効果】
【０００７】
本発明によれば、より高い符号化効率を実現することが可能になる。
【図面の簡単な説明】
【０００８】
【図１】撮像装置のブロック構成図。
【図２】符号化部の構成の一例を示す図。
【図３】情報処理部のハードウェア構成を示す図。
【図４】撮像装置の撮像部の構成の一例を示す図。
【図５】画像復号装置の構成の一例を示す図。
【図６】復号部の構成の一例を示す図。
【図７】符号化部の処理を示すフローチャート。
【図８】ウェーブレット変換によるサブバンド分割を説明する図。
【図９】サブバンド符号化部の処理を示すフローチャート。
【図１０】着目係数と周辺係数の位置関係を示す図。
【図１１】ゴロム・ライス符号化を説明する図。
【図１２】ＭＥＬＣＯＤＥ符号化を説明する図。
【図１３】復号部の処理を示すフローチャート。
【図１４】サブバンド復号部の処理を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施形態の一つである。
【００１０】
［第１の実施形態］
第１の実施形態は、画像データを周波数変換（実施形態ではウェーブレット変換）で複数のサブバンドに分割し、サブバンド分割されたウェーブレット係数を予測符号化、及び、ランレングス符号化で符号化する画像符号化装置について説明する。また、説明を具体化するため、デジタルカメラ等の撮像装置に搭載する例を説明するが、符号化対象の画像データの発生源は、画像データを記憶した記憶媒体でも良いし、ネットワーク（のサーバ）でも構わず、その種類は問わない。
【００１１】
図１は、第１の実施形態が適用する撮像装置のブロック構成図である。撮像装置１００は、操作部１０１と、撮像部１０２と、情報処理部１０９と、記憶部１０７と、Ｉ／Ｏインターフェース１０８とを有している。情報処理部１０９は、取得部１０３、画像処理部１０４、符号化部１０５、出力部１０６を有する。
【００１２】
図４（ａ）は撮像装置１００の正面図である。図４（ａ）に示すように、撮像装置１００は撮像部１０２を備えている。図４（ｂ）は撮像部１０２の内部構成を示す図である。撮像部１０２は、ズームレンズ４０１、フォーカスレンズ４０２、４０３、開口絞り４０４、シャッター４０５を有している。また光学ローパスフィルタ４０６、ｉＲカットフィルタ４０７、カラーフィルタ４０８、撮像素子４０９およびＡ／Ｄ変換部４１０を有している。ユーザは絞り４０４を調整することにより、撮像部１０２に入射される入射光量を調節できる。撮像素子４０９は、ＣＭＯＳやＣＣＤなどの受光素子である。撮像素子４０９で被写体の光量を検知すると、検知された光量がＡ／Ｄ変換部４１０によってデジタル値に変換され、デジタルデータとして情報処理部１０９へと出力される。
【００１３】
撮像装置１００は、図１に示したブロック図の各構成要素を専用の回路等で実装することによって実現することもできるが、汎用ＣＰＵを利用して構成することもできる。ここでは、情報処理部１０９を汎用ＣＰＵを用いて実現する例について述べる。図３は汎用ＣＰＵを利用する場合の撮像装置１００の内部構成を示す図である。情報処理部１０９は、ＣＰＵ３０１、ＲＡＭ３０２、ＲＯＭ３０３を有し、各構成部はシステムバス３０４により相互に接続されている。ＲＯＭ３０３にはＣＰＵ３０１が実行するプログラムや各種データが記憶され、ＲＡＭ３０２はＣＰＵ３０１がプログラムを実行した際のワークエリア、各種バッファとして利用される。ＣＰＵ３０１は、ＲＯＭ３０３に格納されたプログラムを実行し、ＲＡＭ３０２をワークエリアやバッファとして利用することで、取得部１０３、画像処理部１０４、符号化部１０５、出力部１０６として機能すると共に、装置全体の制御を司ることになる。
【００１４】
操作部１０１は、撮像装置本体に備えられたボタンやダイヤル、タッチパネルなどの入力装置であり、ユーザが操作して、撮影の開始、停止および撮影条件の設定などの命令を行える。記憶部１０７は、撮像部１０２により取得されたＲＡＷ画像データ、および、画像データを保存することができる、メモリカードなどの不揮発性の記憶媒体である。Ｉ／Ｏインターフェース１０８はユニバーサルシリアルバス（ＵＳＢ）によって実装されたシリアルバス接続を利用でき、対応するＵＳＢコネクタを有する。もちろん、光ファイバーによるＬＡＮ接続や、無線接続などを利用しても良い。
【００１５】
表示部３０５は、撮影画像や文字の表示を行う。表示部３０５には一般的に液晶ディスプレイが用いられる。またタッチパネル機能を有していても良く、その場合はタッチパネルを用いたユーザ指示を操作部１０１の入力として扱うことも可能である。
【００１６】
以下、本実施形態に示す情報処理部１０９の処理について説明する。ユーザの操作部１０１に対する撮像指示に基づき、取得部１０３は、撮像部１０２から出力されたＲＡＷ画像データを取得し、画像処理部１０４にＲＡＷ画像データを出力する。画像処理部１０４は、ＲＡＷ画像データをデモザイク処理して、１画素当たりＲ、Ｇ、Ｂの３成分で構成される画像データを生成し、符号化部１０５に画像データを出力する。符号化部１０５は、画像データの符号化処理を行う。本実施形態では１画素がＲＧＢの各色成分が８ビットで表現されるものとし、色成分を単位にモノクロ画像として符号化する場合を例に説明する。つまり、符号化部１０５は、Ｒ成分のモノクロ多値画像、Ｇ成分のモノクロ多値画像、Ｂ成分のモノクロ多値画像をそれぞれ独立して符号化する。なお、符号化対象の画像データは、ＲＧＢ形式に限らず、他の色空間やＲＡＷ画像データであっても構わない。例えば、１画素がＹ、Ｃｂ、Ｃｒでそれぞれが８ビットで構成される場合には、各成分を単位にモノクロ画像として符号化すれば良い。また、ＲＡＷ画像データに適用する場合、撮像部１０２の撮像素子がベイヤ配列（Ｒ、Ｇ０、Ｇ１、Ｂの色に対応する２×２個の撮像素子の組の配列）となっている。各撮像素子からの信号を１４ビットで表現している場合、Ｒ成分、Ｇ０成分、Ｇ１成分、Ｂ成分で構成されるモノクロ多値画像をそれぞれ符号化する。従って、本願は、画像の色空間の種類、画像を構成する色成分の種類、ビット数によって限定されるものではない。符号化対象の画像がＲ、Ｇ、Ｂの３成分で各８ビット（２５６階調）とするのは、あくまで理解を容易にするためであると理解されたい。
【００１７】
本実施形態に示す符号化部１０５の処理について説明する。図２は符号化部１０５の内部構成であり、図７は符号化部１０５で行われる１つの色成分（実施形態では、Ｒ、Ｇ、Ｂのいずれか）の画像データに対する符号化処理を示すフローチャートである。つまり、実際には図７の処理を３回実施する。そして、３回行った結果得られた符号データをまとめて１つのファイルが構成されることになる。なお以降の符号Ｓは、フローチャートにおけるステップであることを意味する。
【００１８】
色成分入力部２０１は、画像処理部１０４から出力された画像データにおける１つの成分の画像データをモノクロ多値画像として入力する（Ｓ７０１）。ウェーブレット変換部２０２は、色成分入力部２０１から供給されたモノクロ画像データに対し、ウェーブレット変換を行う。画像データはウェーブレット変換により複数の分解レベルに分けられ、各分解レベルは複数のサブバンドから構成される。分解レベルは、低周波成分を再帰的に水平・垂直方向に２分割した分割回数を示しており、分解レベルが１増えると水平・垂直解像度は半分になる。
【００１９】
図８は、ウェーブレット変換で３回分解したときの例を示している。分解レベル１のサブバンドはＬＬ１、ＨＬ１、ＬＨ１、ＨＨ１、分解レベル２のサブバンドはＬＬ２、ＨＬ２、ＬＨ２、ＨＨ２、分解レベル３のサブバンドはＬＬ３、ＨＬ３、ＬＨ３、ＨＨ３と表される。なお、２回目以降のウェーブレット変換では、直前のウェーブレット変換で得られたサブバンドＬＬをその変換対象とする。このため、サブバンドＬＬ１、ＬＬ２は変換処理の中間データとして一時的に存在し、最後のウェーブレット変換で得られたサブバンドＬＬ３だけが残ることになる。よって、サブバンドＬＬ１、ＬＬ２は図８に示されていない。また、例えば、サブバンドＨＬ２の水平・垂直解像度はサブバンドＨＬ１の半分となる。サブバンドＬＨは、ウェーブレット変換が適用された局所領域の水平方向の周波数特性（水平方向成分）を示す。またサブバンドＨＬは垂直方向の周波数特性（垂直方向成分）、サブバンドＨＨは斜め方向の周波数特性（斜め方向成分）を示す。サブバンドＬＬは低周波成分である。本実施形態では、国際標準であるＪＰＥＧ２０００（ＩＳＯ／ＩＥＣ１５４４４｜ＩＴＵ−Ｔ  Ｔ．８００）でも利用されている実数型の９／７フィルタを用いるものとするが、これに限定されるものではない。例えば、実数型の５／３フィルタなど、別のタップ数のフィルタを用いても良いし、整数型の５／３フィルタ等、整数値演算でウェーブレット変換を行うフィルタを用いても構わない。またウェーブレット変換の処理単位については、ライン単位の処理であっても、画像単位の処理であっても構わない。なお、実施形態におけるウェーブレット変換部２０２は、ウェーブレット変換を図８に示すように３回行うものとして説明を続ける。
【００２０】
ウェーブレット変換部２０２は、ウェーブレット変換されたサブバンド｛ＬＬ３，ＨＬ３，ＬＨ３，ＨＨ３，ＨＬ２，ＬＨ２，ＨＨ２，ＨＬ１，ＬＨ１，ＨＨ１｝のウェーブレット係数を量子化部２０３に出力する（Ｓ７０２）。
【００２１】
量子化部２０３は、ウェーブレット変換部２０２から供給された各サブバンドのウェーブレット係数を入力し、サブバンド毎に異なるステップ幅で量子化する。また、サブバンドのライン毎に異なるステップ幅で量子化を行うなど他の量子化方法を用いても構わない。量子化部２０３は、量子化後のウェーブレット係数を、サブバンド毎にサブバンド符号化部２１４に供給する（Ｓ７０３）。
【００２２】
以降、サブバンド符号化部２１４の処理になる。詳細は後述するが、このサブバンド符号化部２１４はサブバンドを単位に符号化する。
【００２３】
まず、Ｓ７０４で、ウェーブレット変換で分解した回数を変数ｉに設定する。本実施形態では、ウェーブレット変換で３回分解した例を説明し、変数ｉ＝３と設定する。なお、ウェーブレット変換回数は、ユーザが適宜、操作部１０１より変更できるものとする。また、図７のフローチャートでは、変数ｉを用いてサブバンドＬＬ（ｉ）、ＨＬ（ｉ）、ＬＨ（ｉ）、ＨＨ（ｉ）を一般化しているが、例えば、ＨＬ（３）は図８におけるＨＬ３と同じサブバンドを示しているものと理解されたい。また、ウェーブレット変換を０回に設定したときは、１つの色成分をサブバンドＬＬ０として符号化することになる。つまり、ウェーブレット変換の回数を０としたときには、符号化対象は係数というよりは、画像を構成する画素となる。
【００２４】
Ｓ７０５では、サブバンド符号化部２１４は、サブバンドＬＬ（３）（図８のＬＬ３）のサブバンド符号化を行う。このため、サブバンド符号化部２１４は量子化部２０３からサブバンドＬＬ３の量子化後のウェーブレット係数を受信し、符号化を行う。サブバンド符号化部２１４は、この符号化処理で得られた符号化データをＲＡＭ３０２に予め確保されたバッファ領域に格納する。
【００２５】
この後、Ｓ７０６にて、サブバンド符号化部２１４は、変数ｉが０であるか否かを判定する。ここでは、初期段階、すなわち、ｉ＝３であるものとする。従って、Ｓ７０７に処理を進める。
【００２６】
Ｓ７０７〜Ｓ７０９において、サブバンド符号化部２１４は、サブバンドＨＬ（ｉ）、ＬＨ（ｉ）、ＨＨ（ｉ）の符号化を行い、生成された符号化データをＲＡＭ３０２に確保されたバッファ領域に格納する。そして、サブバンド符号化部２１４は、Ｓ７１０にて、変数ｉを“１”減じ、Ｓ７０６に処理を戻す。
【００２７】
Ｓ７０６にて、変数ｉ＝０になったと判定された場合、ＲＡＭ３０２のバッファ領域には、ＬＬ（３）、ＨＬ（３）、ＬＨ（３）、ＨＨ（３）、ＨＬ（２）、・・・、ＨＨ（１）の計１０個のサブバンドの符号化データが格納されることなる。そこで、サブバンド符号化部２１４は、ＲＡＭ３０２のバッファ領域に格納された各サブバンドの符号化データを予め設定された順番に接続し、着目色成分の符号化データとして生成する（Ｓ７１１）。
【００２８】
上記は１つの色成分の符号化処理であったが、先に説明したように、実施形態ではＲ、Ｇ、Ｂの各色成分を単位に符号化するので、符号化部１０５は上記処理を３回実行することになる。図１に戻って、符号化部１０５は、全色成分の符号化データを出力部１０６に送出する。出力部１０６は、供給された符号化データに、適当なヘッダを付加して画像ファイルを構成し、圧縮画像データファイルとして記憶部１０７に出力し、保存する。保存された圧縮画像データファイルは、Ｉ／Ｏインターフェース１０８を介して、撮像装置外のデバイスに出力されても構わない。
【００２９】
以上、画像データをウェーブレット変換でサブバンド分割し、サブバンドを単位として符号化するときの全体的な処理フローについて説明した。次に、各サブバンドのウェーブレット係数を符号化するサブバンド符号化部２１４の処理フローの詳細について説明する。
【００３０】
サブバンド符号化部２１４の内部構成を図２に示し、サブバンド符号化部２１４で行われる処理を示したフローチャートを図９に示す。なお、サブバンド符号化部２１４は、着目サブバンドの量子化後の変換係数を、ラスタスキャン順に符号化するものとする。
【００３１】
まずＳ９０１で、サブバンド番号ｓを入力する。サブバンド番号ｓはサブバンドを識別する番号であり、符号化の対象となるサブバンドがＬＬ成分、ＨＬ成分、ＬＨ成分、ＨＨ成分の何れであるかを識別するためのものである。例えば、ＬＬ成分にｓ＝１、ＨＬ成分にｓ＝２、ＬＨ成分にｓ＝３、ＨＨ成分にｓ＝４などの識別番号を設定する。なお、量子化部２０３は、サブバンド単位に量子化後のウェーブレット係数をサブバンド符号化部２１４に出力する際に、その先頭にサブバンド番号ｓを付加するものとする。
【００３２】
Ｓ９０２で、サブバンド符号化部２１４は、サブバンド内のウェーブレット係数が全て符号化されたかを判定する。全て符号化された場合は符号化処理を終了し、符号化されていない係数がある場合は、Ｓ９０３に移る。Ｓ９０３で、サブバンド符号化部２１４は、着目サブバンドのウェーブレット係数をライン単位に入力する。そして、Ｓ９０４において、サブバンド符号化部２１４は、入力したラインにおける左端に位置するウェーブレット係数を符号化対象の着目係数として設定する。
【００３３】
図１０は着目係数とその周辺係数の位置関係を示している。ここでは、ｘが符号化対象の着目係数である。図示の如く、参照範囲は、着目係数ｘが位置するラインと、その直前のラインの２ラインにおける、着目係数の周囲の係数である。また、ラスタスキャン順に係数を順次符号化していくため、着目係数ｘの左に位置する左係数ａ、１ライン前のライン上に位置する左上係数ｃ、上係数ｂ、右上係数ｄは、既に符号化済みの係数である。なお、着目係数ｘがサブバンドの最初のラインの左端に位置するとき、係数ａ乃至ｄは存在しない。また、着目係数ｘがサブバンドの２ライン目以降ラインの左端に位置するときには、係数ａ、ｃは実在しない。このように実在しない係数については、所定の値（たとえば０）を持つものとみなす。また、既に符号化済み位置の係数を参照するため、サブバンド符号化部２１４は、例えば２ライン分のバッファメモリを有する。
【００３４】
Ｓ９０５にて、サブバンド符号化部２１４は、ライン内のウェーブレット係数が全て符号化されたかを判定する。言い換えれば、ライン終端（右端）の係数の符号化を終えたか否かを判定する。ライン中の全ての係数の符号化を終えたと判定した場合には、Ｓ９０６で次のラインの処理に移る。符号化されていない係数が存在する場合にはＳ９０７に移る。
【００３５】
Ｓ９０７にて、サブバンド符号化部２１４のモード選択部２０４は、サブバンドに応じた符号化モード判定により、符号化モードを選択する。選択すべき符号化モードには、予測符号化モード、ランレングスモードがある。
【００３６】
モード選択部２０４は、Ｓ９０８にて、サブバンド番号ｓに基づいて第１モード判定部２０５、第２モード判定部２０６のいずれか一方を選択し、符号化モードを判定する（Ｓ９０８）。具体的には、着目サブバンドがＬＬであれば第１モード判定部２０５を選択し、判定させる。またサブバンドがＬＬ成分以外の、ＨＬ、ＬＨ、ＨＨのいずれかのサブバンドである場合には第２モード判定部２０６を選択し、判定させる。第１モード判定部２０５は、着目係数ｘに対して、図１０に示す如く左係数ａ、上係数ｂ、左上係数ｃ、右上係数ｄを参照する。そして、第１モード判定部２０５はａ＝ｂ＝ｃ＝ｄ（全て同値を判定条件とする）のとき、着目係数ｘについてランレングス符号化条件を満たすと判定する。また、第２モード判定部２０６は、図１０において、ａ＝ｂ＝０（全てゼロを判定条件とする）のとき、着目係数ｘについてランレングス符号化条件を満たすと判定する。これら２つの判定条件は、着目係数ｘが左係数ａと同じ値が連続する可能性が高いと予測できる条件である。特に、サブバンドＨＬ、ＬＨ、ＨＨ内では、“０”の値が量子化後のウェーブレット変換係数の多く出現するため、係数値０に限定した符号化モード判定を用いることで符号化効率が高くなる。また、第２モード判定部２０６では、第１モード判定部２０５よりも少ないａ，ｂの２係数のみを周囲係数として参照するのでランレングスモードが選択されやすくなり、結果的に、高周波成分の符号化効率が高くできる。また第１モード判定部２０５では、２ライン分の係数値を保持する必要があるが、第２モード判定部２０６では、参照する係数値が０であるか０以外であるかを表すフラグ情報を保持すれば良い。そのため、バッファメモリを大幅に削減することができる。もちろんランレングスモードが選択し易くなるのであれば、参照する周囲係数は２係数に限定されない。例えば、左係数ａ、上係数ｂ、左上係数ｃ（または右上係数ｄ）の３係数を参照するなど、他の判定方法を用いても構わない。
【００３７】
さて、Ｓ９０８では、上記のように、モード選択部２０４はランレングス符号化条件を満たしているかを判定する。ランレングス符号化条件を満たしている場合は、符号化モードとしてランレングスモードを設定し、Ｓ９１２の処理に移る。またランレングス符号化条件を満たしていない場合は、予測符号化モードを設定し、Ｓ９０９の処理に移る。
【００３８】
Ｓ９１２に処理が移った場合、ゼロラン検出部２０７はゼロランの検出処理を行い、検出できたか否かを示す情報（１ビット）を符号化データの１つとして、予測変換部２１０及び符号生成部２１２に出力する。第１の判定モードおよび第２の判定モードでは、着目係数ｘの周囲係数に基づいて、着目係数ｘが左係数ａと同じ値を持つランを構成すると予測している。しかしながら実際には、左係数ａと着目係数ｘとが同じ値ではない場合がある。そこで、Ｓ９０８でランレングス符号化モードと判定された直後の着目係数ｘが左係数ａと不一致の場合、ゼロラン（ラン長が０）が検出できたとする。ゼロランが検出できた場合、ゼロラン検出部２０７は１ビットの“０”を予測変換部２１０及び符号生成部２１２に出力し、処理をＳ９０９に移し、着目係数ｘに対して予測符号化モードで符号化させる。
【００３９】
一方、少なくとも着目係数ｘが左係数ａと一致した場合、着目係数ｘから１以上のランが開始されるので、ゼロラン検出部２０７は、非ゼロラン検出を示す１ビットの“１”をランレングス符号化部２０８及び符号生成部２１２に出力する。なお、検出／非検出の区別がつけばよいので、０、１は逆でも構わない。この後、Ｓ９１３にて、ランレングス符号化部２０８によるランレングス符号化が実行される。ここで生成されるランレングス符号化ではラン長が１以上となることは上記説明から明らかである。そこで、ランレングス符号化部２０８は、ランを係数するラン長ＲＬを初期値として“１”を設定する。そして、ランレングス符号化部２０８は、図１０に示される着目係数ｘと左係数ａ（着目係数に対する予測値）の値が一致するとき、ラン長ＲＬを１増加させ、着目係数の位置を１つ右側に移動する処理を繰り返す。そして、ランレングス符号化部２０８は、着目係数ｘが左隣ａと異なるとき、或いは、着目係数の位置がラインの右端に達したとき、ランの終端に達したと判定し、それまで計数したラン長ＲＬをＭＥＬＣＯＤＥ符号化し、その符号語を出力する。なお、実施形態の場合、ランレングス符号化部２０８は、必ず、１以上のラン長ＲＬを符号化することになるので、ラン長ＲＬから“１”を減算した値「ＲＬ―１」をＭＥＬＣＯＤＥ符号化し、符号化効率を更に図るものとした。
【００４０】
なお、上記において、ゼロラン検出部２０７は、ゼロラン検出／非検出を示す１ビットの符号語を符号生成部２１２にも出力するものとした。しかし、予測変換部２１０、ゴロム符号化部２１１が、生成する符号語の先頭に、ゼロラン検出を示す１ビットが含めて出力しても構わない。また、ランレングス符号化部２０８も、ランの符号語の先頭に、非ゼロラン検出を示す１ビットを含めて出力しても構わない。
【００４１】
この後、Ｓ９１４にて、ラン終端処理部２０９が、ラン終端処理を行うか否かを判定する。具体的には、ランレングス符号化部２０８が符号語を出力した理由が、着目係数ｘが左係数ａと不一致であったからなのか、着目係数ｘが左係数ａと一致するもののラインの終端（右端）位置に到達したからなのかに基づき判定する。前者の場合、Ｓ９１３で出力したランの符号語には、着目係数ｘの符号語が含まれない。それ故、ラン終端処理部２０９は、着目係数ｘについて予測符号化を行うように処理をＳ９０９に進める。一方、着目係数ｘが左係数ａと同じまま、ラインの終端に達した場合、出力したランの符号語には着目係数ｘが含まれる。よって、ラン終端処理部２０９は、処理をＳ９０５に戻す。
【００４２】
先に説明したようにウェーブレット変換で得られる高周波サブバンドＬＨ，ＨＬ，ＨＨでは、量子化後のウェーブレット変換係数“０”の出現確率が高い。そこでＳ９０７の高周波サブバンドにおける符号化モード判定において、２係数のみを参照係数とすることでランレングスモードを選択し易くしている。しかしながら、その結果、ランを構成しているとみなしてランレングスモードと判定したにも関わらずラン長が０となるような誤判定の可能性が高くなる。しかしながら、本実施形態によれば、この誤判定による符号量増加は高々１ビットにできる。すなわち、ランレングス符号化の開始に先立ち、Ｓ９１２でゼロラン検出処理を行う。この処理により、ゼロランの場合の符号は１ビットに抑えられ、符号化効率が下がることを抑制できる。
【００４３】
ここで、ＭＥＬＣＯＤＥ符号化により出力する符号語の一例を図１２に示す。なお、ＭＥＬＣＯＤＥ符号化は、ＪＰＥＧ−ＬＳと同様の処理のため、ここでの詳細説明は割愛する。符号化の過程で動的に変化する符号化パラメータｉｎｄｅｘを引数とした配列Ｊ［ｉｎｄｅｘ］の値により、図１２で示される符号語が出力される。図１２において横線を引いた領域の符号語は、符号化パラメータｉｎｄｅｘを動的に変化させるアルゴリズムに依存し、一意には決定されないため、ここでは記載していない。
【００４４】
従来手法でラン長ゼロをＭＥＬＣＯＤＥ符号化するとき、Ｊ［ｉｎｄｅｘ］の値によって出力する符号語のビット数が異なる。Ｊ［ｉｎｄｅｘ］が０のときは１ビット、１のときは２ビット、２のときは３ビット、３のときは４ビットの符号語となる。ＭＥＬＣＯＤＥ符号化では、長いラン長を符号化するときはＪ［ｉｎｄｅｘ］の値が大きい方が、短いラン長を符号化するときはＪ［ｉｎｄｅｘ］の値が小さい方が効率良く符号化できる。高周波成分ではウェーブレット係数値に０が多く出現するため、長いラン長が発生する確率が高く、Ｊ［ｉｎｄｅｘ］の値が大きくなりやすい。一方、高周波成分ではランを構成すると予測しながら実際にはラン長がゼロとなるような誤判定の確率も高くなる。その結果、ラン長０の係数値に対して長い符号語が割り当てられやすい。かかる点、本実施形態では、ランレングスモードとして決定された場合、まず、ゼロラン検出処理を行って、ゼロラン検出／非検出を示す１ビットを出力する。そして、非ゼロラン検出の場合（ゼロランが検出できない場合）、後続して“１”以上のラン長ＲＬのＭＥＬＣＯＤＥ符号化による符号語を出力する。この結果、符号化効率が下がることを抑制しつつも、高周波サブバンドの符号化効率を上げることが可能になる。
【００４５】
図９の説明に戻る。Ｓ９０８にて、モード選択部２０４が、着目係数ｘを予測符号化モードで符号化すると判定した場合、処理がＳ９０９に進む。また、Ｓ９１２にて、ゼロラン検出した場合、或いは、Ｓ９１４にてラン終端処理を行うと判定した場合にも、Ｓ９０９に処理が進む。
【００４６】
Ｓ９０９にて、予測変換部２１０は、ＭＥＤ（Ｍｅｄｉａｎ  Ｅｄｇｅ  Ｄｅｔｅｃｔｉｏｎ）予測を用いて着目係数ｘの予測値ｐを求め、予測誤差Ｄｉｆｆを算出する。着目係数ｘに対する予測値ｐは、図１０に示す周辺係数を用いて示すと次式の通りである。
【数１】
0006727010.tif 000002
【００４７】
そして、予測変換部２１０は、予測誤差（差分）Ｄｉｆｆを次式に従って算出する。
予測誤差Ｄｉｆｆ＝着目係数−予測値＝ｘ−ｐ
なお、ここでは予測変換にＭＥＤ予測を用いたが、前値予測（左隣りの係数ａを予測値とする）など、ＭＥＤ予測以外の予測を用いても良い。また、すべての係数に同じ予測方法を用いる必要もなく、符号化側と復号側で同じ予測を用いることができれば良い。例えば、サブバンドがＬＬ成分の場合はＭＥＤ予測を用い、サブバンドがＬＬ成分以外の場合は予測変換を行わないなど、サブバンド単位に予測方法を切り替えても構わない。さらには、サブバンドの係数のブロックに分割し、ブロック単毎に複数の予測方法の中から適切な予測方法を選択して適用する構成としても良い。
【００４８】
図９に戻って、予測変換部２１０は、上記のようにして算出した予測誤差Ｄｉｆｆをゴロム符号化部２１１に供給する。ゴロム符号化部２１１で、予測誤差Ｄｉｆｆをゴロム・ライス符号化する（Ｓ９１０）。ゴロム符号化部２１１は、まず予測誤差Ｄｉｆｆを非負の整数値（ＭＶ）に変換する。変換式は以下の通りである。
【数２】
0006727010.tif 000003
【００４９】
この変換は、予測誤差を０、−１，１、−２、２、−３、・・・といった具合に、絶対値順（昇順）、かつ、同じ絶対値では負の数を前にして並べた場合の先頭からの順位（先頭を０とする）に置き換える処理に等しい。また、ＭＶが奇数か偶数かで、予測誤差Ｄｉｆｆの正負の符号も特定できる。ここでは、説明簡略化のために固定的にこのような変換を用いるものとするが、同じ絶対値では正の数が前になる、すなわち非負の整数値（ＭＶ）が小さくなるような変換としても良い。また、ＪＰＥＧ−ＬＳのように予測誤差（Ｄｉｆｆ）と整数値（ＭＶ）との対応づけが動的に変わるような方法を用いても良い。但し、この場合には、復号側で正しく逆変換ができるようにしておく必要がある。
【００５０】
次に、ゴロム符号化部２１１は、パラメータｋを用いて非負の整数値（ＭＶ）をゴロム・ライス符号化する。ゴロム・ライス符号化の手順は以下の通りである。
（１）ＭＶを２進数表現して、ＭＶをｋビット右シフトした値の０を並べ、その後に１を付加する。
（２）上記（１）の後ろに、ＭＶの下位ｋビットを取りだして付け加える。
【００５１】
図１１にゴロム・ライス符号化のパラメータｋと非負の整数値（ＭＶ）と符号語の関係を示す。ゴロム・ライス符号化の構成はこれに限定されるものではなく、例えば、０と１を反対にして符号を構成しても構わないし、上記手順で述べた（１）と（２）の順番を入れ替えて符号を構成しても良い。なお、ここでは符号化パラメータｋの決定方法については特定しないが、符号化側と復号側で同じパラメータを利用できれば良い。例えば、予めサブバンド毎に適切と思われるパラメータｋを選定する方法でも良い。また、ＪＰＥＧ−ＬＳのように、周囲の符号化済の値からコンテキスト（状態識別子）を定め、コンテキスト毎にパラメータｋを決定するための情報を保持して、符号化の過程で動的に変化させるようにしても構わない。
【００５２】
例えば、パラメータｋ＝０の場合を考える。予測誤差Ｄｉｆｆが−２のとき、非負の整数値ＭＶは３となり、予測誤差Ｄｉｆｆが＋２のとき、非負の整数値ＭＶは４となる。非負の整数値ＭＶが３のとき、符号語は０００１となり４ビットで表現され、非負の整数値ＭＶが４のとき、符号語は００００１となり５ビットで表現される。
【００５３】
上記のようにして、ゴロム符号化部２１１による着目係数ｘに対する符号語の出力を終えると、処理はＳ９１１で着目係数ｘの右隣の係数を新たな着目係数とし、Ｓ９０５に戻る。ここで生成される符号語について説明する。まず第１モード判定部２０５または第２モード判定部２０６において符号化モードを選択された場合、着目係数ｘには、ゴロム符号化部２１１から出力される符号語が生成される。第１モード判定部２０５または第２モード判定部２０６においてランレングスモードを選択されたがゼロランとして検出された着目係数ｘに対しては、ゼロランを示す１ビットおよびゴロム符号化部２１１から出力される符号語とが対応する。第１モード判定部２０５または第２モード判定部２０６においてランレングスモードを選択され、非ゼロランとして検出された着目係数ｘに対しては、非ゼロランを示す１ビットおよび非ゼロランレングス符号化部２０８から出力される（ラン長−１）の符号語とが対応する。第１モード判定部２０５または第２モード判定部２０６においてランレングスモードを選択され右端に位置するラン終端である着目係数ｘに対しては、ゴロム符号化部２１１から出力される符号語が対応する。
【００５４】
図２に戻って、符号生成部２１２で、サブバンドのウェーブレット係数の符号データを出力する。
【００５５】
以上説明したように、本実施形態によれば、ランレングスモードに移行した直後に、ゼロランを検出し、ゼロランを検出した場合にはランレングス符号化への移行を取り消し、予測符号化モードへ移行する。またサブバンドの種類（実施形態では、サブバンドＬＬかそれ以外か）に応じて異なるモード判定処理を用いることで、符号化効率の改善を図れる。
【００５６】
次に実施形態における画像復号装置について説明する。図５は、本実施形態における画像復号装置５００の構成の一例を示す図である。
【００５７】
図５に示すように、画像復号装置５００は、Ｉ／Ｏインターフェース５０１と、記憶部５０２と、操作部５０３と、情報処理部５０８と、表示部５０７を有している。
【００５８】
画像復号装置５００を実装する装置の種類は特に問わないが、典型的にはコンピュータ、または、撮像装置である。本実施形態における画像復号装置５００をコンピュータとして説明する。Ｉ／Ｏインターフェース５０１は、Ｉ／Ｏインターフェース１０８と同様にＵＳＢコネクタを有する。デバイス５００は、Ｉ／Ｏインターフェース５０１を介して、撮像装置１００から出力される圧縮符号化画像データを取得するものとする。
【００５９】
記憶部５０２は、Ｉ／Ｏインターフェース５０１から取得された圧縮符号化画像データを保存することができるメモリカードなどの不揮発性の記憶媒体である。操作部５０３は、コンピュータに備えられたキーボード、マウスなどの入力装置であり、ユーザが操作して復号処理などの命令を行える。表示部５０７は、復号画像の表示等が行え、一般的に液晶ディスプレイが用いられる。情報処理部５０８の内部構成は、図３に示す情報処理部１０９と同様である。従って以下でも図３の構成に基づき説明する。
【００６０】
以下、本実施形態における情報処理部５０８の処理について説明する。ユーザの操作部５０３に対する復号指示に基づき、取得部５０４は、記憶部５０２から圧縮符号化画像データ（第１の実施形態で符号化したデータファイル）を取得し、復号部５０５に圧縮符号化データを供給する。
【００６１】
復号部５０５は、圧縮符号化画像データの復号処理を行う。本実施形態では、１画素がＲＧＢ各８ビットで表現されるものとし、色成分を単位にモノクロ画像として復号する場合を例に説明する。つまり、Ｒ成分のモノクロ多値画像、Ｇ成分のモノクロ多値画像、Ｂ成分のモノクロ多値画像をそれぞれ独立して復号する。
【００６２】
次に本実施形態における復号部５０５について説明する。図６は復号部５０５の内部構成であり、図１３は復号部５０５で行われる１つの色成分（実施形態では、Ｒ、Ｇ、Ｂのいずれか）の画像データに対する復号処理を示すフローチャートである。つまり、実際には図１３の処理を３回実施する。そして、３回行った結果得られたＲ成分、Ｇ成分、Ｂ成分のモノクロ多値画像をまとめることで、カラー画像データが生成される。
【００６３】
Ｓ１３０１で、符号入力部６０１は、取得部５０４から圧縮画像データにおける１つの成分の符号化データを受信し、サブバンド復号部６１４に供給する。
【００６４】
サブバンド復号部６１４は、入力したサブバンドの符号化データを、サブバンド単位に復号し、ＲＡＭ３０２内の予め確保された所定のバッファ領域に格納していく。以下はより詳しく説明する。
【００６５】
まずＳ１３０２にて、サブバンド復号部５０５は、ウェーブレット変換で分解した回数を変数ｉに設定する。ウェーブレット変換回数は、例えば、圧縮画像データのファイルヘッダに記載されているものとする。本実施形態では、ウェーブレット変換で３回分解した例を説明し、変数ｉ＝３と設定する。また図１３のフローチャートでは、変数ｉを用いてサブバンドＬＬ（ｉ）、ＨＬ（ｉ）、ＬＨ（ｉ）、ＨＨ（ｉ）を一般化しているが、例えば、ＨＬ（３）は図８におけるＨＬ３と同じサブバンドを示しているものと理解されたい。
【００６６】
Ｓ１３０３では、サブバンド復号部６１４は、サブバンドＬＬ（３）（図８のＬＬ３）のサブバンド復号処理を行う。このため、サブバンド復号部６１４は符号入力部６０１からサブバンドＬＬ３の符号データを受信し、復号を行うことになる。サブバンド復号部６１４は、この復号処理で得られた量子化ウェーブレット係数をＲＡＭ３０２に予め確保されたバッファ領域に格納する。
【００６７】
この後、Ｓ１３０４にて、サブバンド復号部６１４は、変数ｉが０であるか否かを判定する。ここでは、初期段階、すなわち、ｉ＝３であるものとする。従って、Ｓ１３０５に処理を進める。
【００６８】
Ｓ１３０５、Ｓ１３０６，Ｓ１３０７では、サブバンド復号部６１４は、サブバンドＨＬ（ｉ）、ＬＨ（ｉ）、ＨＨ（ｉ）の復号処理を行い、得られた量子化ウェーブレット係数をＲＡＭ３０２の予め確保されたバッファ領域に格納する。そして、サブバン後復号部６１４は、Ｓ１３０８にて変数ｉを減じ、処理をＳ１３０４に戻す。
【００６９】
また、サブバンド復号部６１４が、Ｓ１３０４にて、変数ｉ＝０と判定した場合、ＲＡＭ３０２のバッファ領域には、ＬＬ（３）、ＨＬ（３）、ＬＨ（３）、ＨＨ（３）、ＨＬ（２）、・・・、ＨＨ（１）の計１０個のサブバンドの量子化ウェーブレット係数が格納されることになる。この場合、処理はＳ１３０９に進み、逆量子化部６１１が、サブバンド復号部６１４から供給された各サブバンドの量子化ウェーブレット係数を入力し、サブバンド毎に設定された量子化ステップ幅を用いて逆量子化する。また、サブバンドのライン毎に異なるステップ幅で逆量子化を行うなど他の逆量子化手法を用いても構わない。逆量子化部６１１は、各サブバンドの逆量子化後のウェーブレット係数を、ウェーブレット逆変換部６１２に送出する。
【００７０】
Ｓ１３１０で、ウェーブレット逆変換部６１２は、逆量子化部６１１から供給された逆量子化後のウェーブレット係数を入力として、逆周波数変換（実施形態では逆ウェーブレット変換）を行う。本実施形態では、国際標準であるＪＰＥＧ２０００（ＩＳＯ／ＩＥＣ１５４４４｜ＩＴＵ−Ｔ  Ｔ．８００）でも利用されている実数型の９／７フィルタを用いるものとするが、これに限定されるものではない。例えば、実数型の５／３フィルタなど、別のタップ数のフィルタを用いても良いし、整数型の５／３フィルタ等、整数値演算でウェーブレット変換を行うフィルタを用いても構わない。またウェーブレット逆変換の処理単位については、ライン単位の処理であっても、画像単位の処理であっても構わない。ウェーブレット逆変換部６１２は、ウェーブレット逆変換後のモノクロ多値画像を、色成分出力部６１３に送出する。
【００７１】
Ｓ１３１１で、色成分出力部６１３は、モノクロ多値画像を出力する。
【００７２】
以上、符号データをサブバンド単位に復号し、逆量子化、ウェーブレット逆変換により画像データを生成するときの全体的な処理フローについて説明した。次に、各サブバンドの量子化ウェーブレット係数を復号するサブバンド復号部６１４の処理フローの詳細を図１４のフローチャートに従って説明する。
【００７３】
サブバンド復号部６１４の内部構成を図６に示し、サブバンド復号部６１４で行われる処理を示したフローチャートを図１４に示す。
【００７４】
まずＳ１４０１で、サブバンド番号ｓを入力する。サブバンド番号ｓはサブバンドを識別する番号であり、復号の対象となるサブバンドがＬＬ成分、ＨＬ成分、ＬＨ成分、ＨＨ成分の何れであるかを識別するためのものである。例えば、ＬＬ成分にｓ＝１、ＨＬ成分にｓ＝２、ＬＨ成分にｓ＝３、ＨＨ成分にｓ＝４などの識別番号を設定する。なお、符号入力部６０１は、サブバンド単位に符号データをサブバンド復号部６１４に出力する際に、その先頭にサブバンド番号ｓを付加するものとする。Ｓ１４０２で、サブバンド復号部６１４は、サブバンド単位に符号データを入力する。
【００７５】
次にＳ１４０３で、サブバンド復号部６１４は、サブバンド内のウェーブレット係数が全て復号されたかを判定する。全て復号された場合は復号処理を終了し、未復号の係数がある場合は、Ｓ１４０４に移る。Ｓ１４０４で、サブバンド復号部６１４は、着目サブバンドのウェーブレット係数をライン単位に復号するため、復号対象の着目係数をラインの左端に設定する。
【００７６】
図１０は着目係数ｘとその周辺係数ａ，ｂ，ｃ，ｄの位置関係を示している。着目係数ｘ、周辺係数ａ，ｂ，ｃ，ｄの位置関係、および、周辺係数が実在しない場合の扱いについては、第１の実施形態と同様であるので、その説明は省略する。ラスタスキャン順に係数を順次復号していくため、左係数ａ、左上係数ｃ、上係数ｂ、右上係数ｄは、既に復号済みの係数である。また、復号済み位置の係数を参照するため、サブバンド復号部６１４は、例えば２ライン分のバッファメモリを有する。
【００７７】
Ｓ１４０５にて、サブバンド復号部６１４は、ライン内のウェーブレット係数が全て復号されたかを判定する。言い換えれば、ライン終端（右端）の係数の復号を終えたか否かを判定する。ライン中の全ての係数の復号を終えたと判定した場合には、Ｓ１４０６で次のラインの処理に移る。復号されていない係数が存在する場合にはＳ１４０７に移る。
【００７８】
Ｓ１４０７にて、モード選択部６０２は、サブバンド番号ｓに応じて、第１モード判定部６０３、第２モード判定部６０４のいずれか一方を選択し、符号化モードを判定する。
【００７９】
第１モード判定部６０３は、サブバンド番号ｓが“１”の場合、つまり、復号対象がサブバンドＬＬの場合に選択される。そして、第１モード判定部６０３は、図１０に示す復号済みの周辺係数ａ，ｂ，ｃ，ｄについて、条件：ａ＝ｂ＝ｃ＝ｄ（全て同値を判定条件とする）を満たすとき、着目係数ｘはランレングス符号化モードで符号化されているものと仮判定する。また、この条件を満たさない場合、第１モード判定部６０３は、着目係数ｘは予測符号化されているものと判定する。
【００８０】
一方、第２モード判定部６０４は、サブバンド番号ｓが“１”以外の、｛２，３，４｝のいずれかの場合に選択される。そして、第２モード判定部６０４は、復号済みの周辺係数ａ、ｂについて、条件：ａ＝ｂ＝０（全てゼロを判定条件とする）を満たすとき、着目係数ｘはランレングス符号化モードで符号化されていると仮判定する。そして、この条件を満たさない場合、第２モード判定部６０４は、着目係数ｘが予測符号化されていると判定する。
【００８１】
Ｓ１４０８では、モード選択部６０２が選択したモード判定部の判定結果が、ランレングスモードか予測符号化モードのいずれであったのかを判定する。ランレングスモードの場合、処理はＳ１４１２に進む。このＳ１４１２において、ゼロラン判定部６０５は、未復号の符号化データの先頭から１ビットを読み出し、そのビットが“０”、すなわち、ゼロランを示すビットであるか否かを判定する。読み出したビットがゼロランを示している場合、後続する符号化データは予測符号化データであるので、処理をＳ１４０９に移す。一方、非ゼロランであった場合、後続する符号化データはランレングス符号化データであるので、Ｓ１４１３に処理を進める。
【００８２】
Ｓ１４１３では、ランレングス復号部６０６は、符号化データに対してランレングス復号（実施形態ではＭＥＬＣＯＤＥ復号）処理を行う。ここで復号したランを示す値に“１”を加算した値が、求めるラン長ＲＬとなる。それ故、ラン長ＲＬは必ず１以上の値を持つ。そして、ランレングス復号部６０６は、着目係数の左係数ａと同じ値を、ラン長ＲＬ分が示す数だけ出力する。この際、ランレングス復号部６０６は、次に復号する係数に備えて、左係数として、復号した値をセットする。
【００８３】
この後、処理はＳ１４１４に進み、ラン終端処理部６０７が、ランレングス復号部６０６が復号したランの末尾の係数が、ラインの終端に位置していたか否かを判定する。ラインの終端以外に位置していた場合、ランの終端の係数に後続する（右隣の）係数は予測符号化されていることになるので、処理をＳ１４０９に進める。一方、ランレングス復号したランの末尾の係数が、ラインの終端（右端）に位置していた場合、終端処理は不要であるので、処理をＳ１４０５に進める。
【００８４】
一方、Ｓ１４０８にて着目係数ｘが予測符号化されていると判定された場合には、処理はＳ１４０９に進む。Ｓ１４１２にてゼロランを検出した場合、或いは、Ｓ１４１４にてラン終端処理を行うと判定した場合にも、Ｓ１４０９に処理が進む。
【００８５】
まず、Ｓ１４０９にて、予測変換部６０８で、復号対象の着目係数ｘの予測値ｐを、サブバンド番号ｓに応じた周辺係数から求め、ゴロム復号部６０９に供給する。この予測値ｐの算出は画像符号化装置のそれと同じである。
【００８６】
なお、画像符号化装置と同様に、前値予測（左隣りの係数ａを予測値とする）など、ＭＥＤ予測以外の予測を用いても良い。また、すべての係数に同じ予測方法を用いる必要もなく、符号化側と復号側で同じ予測を用いることができれば良い。例えば、サブバンドがＬＬ成分の場合はＭＥＤ予測を用い、サブバンドＬＬ以外の場合は予測変換を行わないなど、サブバンド単位に予測方法を切り替えても構わない。さらには、サブバンドの係数をブロックに分割し、ブロック毎に複数の予測方法の中から適切な予測方法を選択して適用する構成としても良い。要するに、画像復号装置では、画像符号化装置と同じようにして予測値を求めればよい。
【００８７】
Ｓ１４１０にて、ゴロム復号部６０９は、符号化データからシンボルＭＶを復号する。パラメータｋを用いたゴロム・ライス復号の手順は以下の通りである。
（１） 符号データから１ビットずつ取り出し、取り出したビットが“０”である限り、カウントアップしていく。そして、取り出したビットが“１”の場合は次工程（２）に移る。ここでは、ビットが“０”の数をＺＥＲＯｃｎｔと呼ぶ。
（２） ＺＥＲＯｃｎｔをｋビット左シフトする。さらに符号データからｋビット取り出した値を、シフト後のＺＥＲＯｃｎｔに加算し、シンボルＭＶを求める。
【００８８】
次に、ゴロム復号部６０９は、シンボルＭＶから予測誤差（Ｄｉｆｆ）を算出する。
【数３】
0006727010.tif 000004
【００８９】
ここでは符号化パラメータｋの決定方法については特定しないが、第１の実施形態と同様に、予めサブバンド毎に適切と思われるパラメータｋを選定する方法でも良い。また、ＪＰＥＧ−ＬＳのように、周囲の符号化済の値からコンテキスト（状態識別子）を定め、コンテキストごとにパラメータｋを決定するための情報を保持して、符号化の過程で動的に変化させるようにしても構わない。符号化側で用いたパラメータと同じ値を復号側で利用できれば良い。
【００９０】
次に、ゴロム復号部６０９は、着目係数ｘを以下のように算出する。
着目係数ｘ＝ 予測誤差＋予測値＝Ｄｉｆｆ ＋ ｐ
そして、ゴロム復号部６０９は、復号して得られた係数ｘを係数生成部６１０に供給する。この際、次に復号する係数のため、ここで得られた係数ｘを、次に復号する係数の左係数として設定し、処理をＳ１４０５に戻す。
【００９１】
図６に戻って、係数生成部６１０は、上記のようにして、着目サブバンドの係数（量子化ウェーブレット変換係数）を受信し、逆量子化部６１１に供給する。この後、逆量子化部６１１は、受信した係数に対し逆量子化して着目サブバンドのウェーブレット変換係数を得る。そして、逆量子化部６１１は、得られたウェーブレット変換係数を逆ウェーブレット変換部６１２に供給する。逆ウェーブレット変換部６１２は、同一解像度レベルのサブバンドの係数を受信した際に、逆ウェーブレット変換を行い、モノクロ多値画像データとして色成分出力部６１３に供給する。色成分出力部６１３は、受信したモノクロ多値画像データを、復号順の色成分画像データとして出力部５０６に供給する。
【００９２】
以上説明したように、本実施形態によれば、ウェーブレット変換して得られた着目係数の周囲係数から、着目係数についてはランレングスモードと判定されたとしても、その判定は仮判定として扱われる。そして、ランレングスモードであるとしても、着目係数と左係数とが不一致を示すゼロランが検出された場合、着目係数に対して予測符号化モードが適用される。一方、ゼロランではない、つまり、少なくとも１以上のラン長がある場合には、ランレングス符号化が適用される。
【００９３】
以上の結果、ウェーブレット変換を用いながらも、これまでよりも符号化効率の高い符号化データを生成することが可能となる。
【００９４】
なお、上記実施形態では、カラー画像の各色成分の画像毎に符号化するものとして説明したが、符号化対象がモノクロ画像であってももちろん構わない。
【００９５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９６】
２０１…色成分入力部、２０２…ウェーブレット変換部、２０３…量子化部、２０４…モード選択部、２０５…第１モード判定部、２０６…第２モード判定部、２０７…ゼロラン検出部、２０８…ランレングス符号化部、２０９…ラン終端処理部、２１０…予測変換部、２１１…ゴロム符号化部、２１２…符号生成部、２１３…符号出力部、２１４…サブバンド符号化部
【図１】
0006727010.tif 000005
【図２】
0006727010.tif 000006
【図３】
0006727010.tif 000007
【図４】
0006727010.tif 000008
【図５】
0006727010.tif 000009
【図６】
0006727010.tif 000010
【図７】
0006727010.tif 000011
【図８】
0006727010.tif 000012
【図９】
0006727010.tif 000013
【図１０】
0006727010.tif 000014
【図１１】
0006727010.tif 000015
【図１２】
0006727010.tif 000016
【図１３】
0006727010.tif 000017
【図１４】
0006727010.tif 000018