(57)【特許請求の範囲】
【請求項１】
２次元信号を複数のコードブロックに分割し、コードブロックをビットプレーンに分解し、各ビットプレーンを一つ以上の符号化パスに分割し、制御情報に基づいて符号化パス毎に符号化して符号データを出力するエントロピー符号化手段と、
前記エントロピー符号化手段からの符号データを格納する符号メモリと、
レート制御に必要な歪と符号量の計算に基づいて符号化パスの続行及び終了を判断するレート制御情報抽出手段と、
前記レート制御情報抽出手段からの制御情報に基づいて符号化終了パスまでの符号データを前記符号メモリから抽出し符号ストリームとして出力する符号データ抽出手段と
を備え、
前記レート制御情報抽出手段は、
各符号化パスの符号化により生じる歪を算出する歪計算手段と、
各符号化パスの符号量を算出する符号量計算手段と、
前記歪計算手段からの歪と前記符号量計算手段からの符号量とから各コードブロックにおける歪と符号量の関係に基づく傾きを算出する傾き計算手段と、
前記傾き、全成分の総符号量、特定成分の総符号量に基づいて全成分の総符号量が目標符号量以下でかつ特定成分の総符号量が所定の最大値以下に収まるよう各符号化を制御する制御情報を前記エントロピー符号化手段及び前記符号データ抽出手段に出力する符号化パス導出手段と
を有する画像符号化装置において、
前記符号化パス導出手段は、
前記傾きが所定の傾き閾値を越える符号化パスを符号化し、
前記全成分の総符号量が前記目標符号量に達しない場合には、前記傾き閾値を減少させて、それ以前に符号化されていない符号化パスをさらに符号化する処理を、前記全成分の総符号量が前記目標符号量に達するまで繰り返し制御し、
前記全成分の総符号量が前記目標符号量に達した段階で、前記特定成分の総符号量が所定の最小値に満たない場合には、特定成分に属するコードブロックのみの符号化を、前記最小値を越えるまでさらに続けるよう符号化を制御し、
その後、特定成分以外のコードブロックについてのみ、前記傾き閾値を増加させて、前記傾き閾値に満たない符号化パスを符号ストリームから削除する処理を前記全成分の総符号量が前記目標符号量を下回るまで行い、前記全成分の総符号量が前記目標符号量を下回った時点での符号化パスを、最終出力パスとして決定する
ことを特徴とする画像符号化装置。
【請求項２】
２次元信号を複数のコードブロックに分割し、コードブロックをビットプレーンに分解し、各ビットプレーンを一つ以上の符号化パスに分割し、制御情報に基づいて符号化パス毎に符号化して符号データを出力するエントロピー符号化手段と、
前記エントロピー符号化手段からの符号データを格納する符号メモリと、
レート制御に必要な歪と符号量の計算に基づいて符号化パスの続行及び終了を判断するレート制御情報抽出手段と、
前記レート制御情報抽出手段からの制御情報に基づいて符号化終了パスまでの符号データを前記符号メモリから抽出し符号ストリームとして出力する符号データ抽出手段と
を備え、
前記レート制御情報抽出手段は、
各符号化パスの符号化により生じる歪を算出する歪計算手段と、
各符号化パスの符号量を算出する符号量計算手段と、
前記歪計算手段からの歪と前記符号量計算手段からの符号量とから各コードブロックにおける歪と符号量の関係に基づく傾きを算出する傾き計算手段と、
前記傾き、全成分の総符号量、特定成分の総符号量に基づいて全成分の総符号量が目標符号量以下でかつ特定成分の総符号量が所定の最大値以下に収まるよう各符号化を制御する制御情報を前記エントロピー符号化手段及び前記符号データ抽出手段に出力する符号化パス導出手段と
を有する画像符号化装置において、
前記符号化パス導出手段は、
前記傾きが所定の傾き閾値を越える符号化パスを符号化し、
前記全成分の総符号量が前記目標符号量に達しない場合には、前記傾き閾値を減少させて、それ以前に符号化されていない符号化パスをさらに符号化する処理を、前記全成分の総符号量が前記目標符号量に達するまで繰り返し制御し、
符号化の途中で指定した前記特定成分の総符号量が前記最大値を越えた場合には、それ以降、特定成分に属するコードブロックの符号化を行わないよう符号化を制御し、
前記全成分の総符号量が前記目標符号量に達した段階で、前記特定成分の総符号量が所定の最小値に満たない場合には、特定成分に属するコードブロックのみの符号化を、前記最小値を越えるまでさらに続けるよう符号化を制御し、
その後、特定成分以外のコードブロックについてのみ、前記傾き閾値を増加させて、前記傾き閾値に満たない符号化パスを符号ストリームから削除する処理を前記全成分の総符号量が前記目標符号量を下回るまで行い、前記全成分の総符号量が前記目標符号量を下回った時点での符号化パスを、最終出力パスとして決定する
ことを特徴とする画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、フレーム内の特定成分への符号量配分を、指定された下限値以上または上限値以下に制限するレート制御が可能な画像符号化装置に関するものである。
【背景技術】
【０００２】
現在、インターネットを中心に静止画像符号化アルゴリズムＪＰＥＧが広く普及しているが、一方で次世代の符号化方式としてさらなる性能改善、機能付加の要求を背景として、１９９７年より新たにＪＰＥＧ２０００プロジェクトがＩＳＯとＩＴＵの合同機関によりスタートした。２０００年１２月には同ＪＰＥＧ２０００アルゴリズムの基本方式を定めるパート１についてその主要な技術内容が確定した。以下に、勧告書（ＩＳＯ／ＩＥＣ １５４４４−１：２０００）に従ってＪＰＥＧ２０００符号化アルゴリズムの基本方式の概略を説明する。
【０００３】
まず、入力される画像信号は、ウェーブレット変換部で２次元のウェーブレット変換が施され、複数のサブバンドに帯域分割される。ここで、２次元のウェーブレット変換は１次元のウェーブレット変換の組み合わせとして実現される。つまり、垂直方向の一次元ウェーブレット変換を列毎に順次行う処理と水平方向の一次元ウェーブレット変換をライン毎に順次行う処理である。ここで、１次元のウェーブレット変換は、所定の特性を持つローパスフィルタとハイパスフィルタおよびダウンサンプラから構成されるものである。
【０００４】
こうして生成された２次元のウェーブレット変換係数は、低域成分をＬ、高域成分をＨとし、水平方向の変換を１文字目、垂直副走査方向の変換を２文字目で表現することで、ＬＬ、ＨＬ、ＬＨ、ＨＨと表現される。また、これらの帯域分割された成分はサブバンドと呼ばれている。ここで、水平、垂直方向の低域成分（ＬＬ成分）は再帰的にウェーブレット変換が施される。再帰的に施される各ウェーブレット変換の回数を分解レベルと称し、そのレベルは、ＬＬ、ＨＬ、ＬＨ、ＨＨの前に記載される。即ち、ウェーブレット変換の分解回数２の場合には、最低解像度成分の分解レベルは２となり、反対に最高解像度成分のＨＬ，ＬＨ，ＨＨの分解レベルは１になる。
【０００５】
次に、各サブバンドにおけるウェーブレット変換係数は、サブバンド毎に設定された量子化ステップサイズにより量子化される。
【０００６】
次に、各サブバンドの量子化後のウェーブレット変換係数をコードブロックと呼ばれる固定サイズの領域に分割した後、多値データからなるコードブロックを２値のビットプレーン表現に変換し、各ビットプレーンを３通りの符号化パス（Significant Propagation Decoding Pass，Magnitude Refinement Pass，Cleanup Pass）に分割する。
【０００７】
３つの符号化パスから出力される２値信号は、それぞれの符号化パス毎にコンテクストモデリングが行われ、エントロピー符号化が行われる。
【０００８】
また、エントロピー符号化処理と並行して、各コードブロックに於いて符号化パス毎の符号量と歪情報を計算する。
【０００９】
最後に、ラグランジェの乗数法を用いて画質劣化（歪）を最小にしながら、目標とする符号サイズ以下に符号量を調整するレート制御が行われる。
【００１０】
レート制御の方法は、標準化されているわけではなくアプリケーションに応じて任意の方法を使うことができるが、以下に勧告書（ＩＳＯ／ＩＴＵ １５４４４−１：２０００）Ｊ．１４．３に参考情報として記載されているレート制御部のメカニズムについて概略を説明する。
【００１１】
この方法では、各コードブロックｉにおける切り捨てポイントをｎｉ、各切捨てポイントまでの符号量をＲ（ｉ，ｎｉ）、歪をＤ（ｉ，ｎｉ）とした時、ラグランジェの乗数法を使い、次式（１）を最大にする切捨てポイントによって生ずる画面全体での総符号量Ｒが目標符号量Ｒｍａｘの範囲内であることを満足するまで変数λを調整する。
Σ（Ｒ（ｉ，ｎｉ）−λＤ（ｉ，ｎｉ））          （１）
【００１２】
ここで、歪とは、ある符号化パスまでの符号を送った時に再生画像の平均二乗誤差が符号データを伝送しない時と比較してどれだけ減少したかを示すもので、厳密に言えば、歪の減少量ということになる。従って、符号化前は、歪Ｄは０、最終ビットプレーンまで符号化すると、歪Ｄは平均二乗誤差に等しくなる。
【００１３】
式（１）を最大にする切捨てポイントを見つけることは、各コードブロックの符号量Ｒと歪ＤをＲＤ曲線としてグラフに表した時、その接線の傾きがλ−１となる切り捨てポイントを見つけることと等価である。２つのコードブロックｃ１、ｃ２において、接線の傾きがλ−1となる切り捨てポイントがｎｃ１、ｎｃ２で、その切捨てポイントまでの符号量がＲ（ｃ１，ｎｃ１），Ｒ（ｃ２，ｎｃ２）となる場合、このようなＲを全てのコードブロックに対して加算しＲｍａｘと比較する。これをコードブロック毎に見た場合、（Ｒ（ｉ，ｎｉ）−λＤ（ｉ，ｎｉ））を最大化する切捨てポイントｎｉを次のように見つける必要がある。
【００１４】
Set ｎｉ＝０
For ｋ＝１，２，３，・・・
Set      ΔＲ（ｉ，ｋ）＝Ｒ（ｉ，ｋ）−Ｒ（ｉ，ｎｉ）
and ΔＤ（ｉ，ｋ）＝Ｄ（ｉ，ｋ）−Ｄ（ｉ，ｎｉ）
If（ΔＤ（ｉ，ｋ）／ΔＲ（ｉ，ｋ））＞λ−1   then  set ｎｉ＝ｋ
【００１５】
ところが、このアルゴリズムでは、多数のλに対して前記処理を実行しなければ切捨てポイントｎｉを求めることができない。そこで、傾きＳ（ｉ，ｋ）＝ΔＤ（ｉ，ｋ）／ΔＲ（ｉ，ｋ）がｋについて単調減少になるように予め補正しておく。具体的には、次のように処理を行う。
【００１６】
（１）set Ｎｉ＝{ｎ} （i.e. the set of all truncation point）
（２）Set p＝０
（３）For ｋ＝１，２，３，・・・，ｋｍａｘ
If ｋ belongs to Ｎｉ
Set  ΔＲ（ｉ，ｋ）＝Ｒ（ｉ，ｋ）−Ｒ（ｉ，p），
and ΔＤ（ｉ，ｋ）＝Ｄ（ｉ，ｋ）−Ｄ（ｉ，p）
Set Ｓ（ｉ，ｋ）＝ΔＤ（ｉ，ｋ）／ΔＲ（ｉ，ｋ）
If ｐ≠０ and Ｓ（ｉ，ｋ）＞Ｓ（ｉ，ｐ）， 
then remove ｐ from Ｎｉ， and go to step （２）
Otherwise， set ｐ＝ｋ
【００１７】
この処理により、与えられたλに対する切捨てポイントの最適化は、Ｓ（ｉ，ｋ）＞λ−１ を満たすＮｉにおける最大のｋとすればよい。
【００１８】
全てのコードブロックでこれらの情報の導出が完了したら、目標符号量Ｒｍａｘとなるような符号データを作成する。具体的には、あるλに対する総符号量Ｒｓｕｍに対してＲｓｕｍ≦Ｒｍａｘを満たす最大のＲｓｕｍを与えるλを見つけることになる。ここで、あるλに対する総符号量は各コードブロックに於いて切捨てポイントを一意に求め、その切捨てポイントまでの符号データの総和を算出して初めてわかる。そこで、Ｒｓｕｍ≦Ｒｍａｘを満たす最大のＲｓｕｍを与えるλを見つけるには、通常は、λの複数の候補に対する総符号量を算出して、所望の値に近い総符号量を与えるλを収束演算により算出する。λが求まったら、そのλに対応する切捨てポイントまでの符号データを全てのコードブロックから集めて、更に各コードブロックにおける符号化パス数を付加情報として付け加え、最終的な符号データを構成する。こうして、目標符号量Ｒｍａｘのもとで歪みを最小とする符号データを生成することができる。
【００１９】
以上のようなＪＰＥＧ２０００国際標準規格は、ＩＳＯやＩＴＵ−Ｔ等の標準化機関を通して入手することができる。また、ＪＰＥＧ２０００の最新情報については、http：//www.jpeg.orgを参照することにより入手することができる。
【００２０】
また、この種の画像符号化装置として、総符号量が一定量オーバーした場合でも各ブロックへの符号量配分が均等になるようにしたものがある（例えば、特許文献１参照）。
【００２１】
また、量子化幅に依存しない付加的な符号量配分を考慮することで、局部的な符号配分量の不足を解消してフレーム毎の符号量適正化を図ったものがある（例えば、特許文献２参照）。
【００２２】
また、周波数特性を利用して符号量分配を決定するようにしたものがある（例えば、特許文献３参照）。
【００２３】
また、画像の視覚的特性に応じてＩ，Ｐ及びＢピクチャでの符号化により発生する情報量が画質的に最適になるように各符号化方法の目標情報量を算出し配分するようにしたものがある（例えば、特許文献４参照）。
【００２４】
さらに、符号量対歪の傾きを計算する除算処理を効率化することにより高符号化処理を可能にするものがある（例えば、特許文献５参照）。
【００２５】
【特許文献１】特開平０９−２５２４７７号公報
【特許文献２】特開平１０−１０８１７９号公報
【特許文献３】特開２００３−２３０１６２号公報
【特許文献４】特開２００５−３０３３６２号公報
【特許文献５】特開２００５−１０９９１７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
前記のレート制御方法では、ある総符号量のもと画面全体で符号化歪が最小となる符号割り当てを行うため、画像によっては特定成分に大部分の符号が集中してしまい、デコーダによっては破綻を起こす可能性もある。逆に、画像によっては、特定成分の符号量が非常に少なくなり、たとえ画面全体で符号化歪を最小するという観点からは最適だとしても、部分的に主観画質が劣化するという可能性がある。
【００２７】
また、前記の方法で特定成分の符号量を制限する場合、収束演算により符号量配分を決定した後、特定成分の符号量が規定の最大値から最小値の範囲を外れていた場合には、再度、特定成分を除いて収束演算により符号量配分を再度決定する必要がある。特定成分が複数ある場合には、符号量配分のやり直しの回数がさらに増え、演算量が増大するという問題点があった。
【００２８】
この発明は前記のような問題点を解決するためになされたもので、各コードブロックでその傾きがパラメータλ−1より大きい符号化パスだけを符号化する処理をλの値を変えて順に行っていく中で、特定成分の符号量を監視することにより１パスでの符号化とレート制御を行い、演算量を低減し、極端な符号量の偏りを回避することができる画像符号化装置を得ることを目的とする。
【課題を解決するための手段】
【００２９】
この発明に係る画像符号化装置は、２次元信号を複数のコードブロックに分割し、コードブロックをビットプレーンに分解し、各ビットプレーンを一つ以上の符号化パスに分割し、制御情報に基づいて符号化パス毎に符号化して符号データを出力するエントロピー符号化手段と、前記エントロピー符号化手段からの符号データを格納する符号メモリと、レート制御に必要な歪と符号量の計算に基づいて符号化パスの続行及び終了を判断するレート制御情報抽出手段と、前記レート制御情報抽出手段からの制御情報に基づいて符号化終了パスまでの符号データを前記符号メモリから抽出し符号ストリームとして出力する符号データ抽出手段とを備え、前記レート制御情報抽出手段は、各符号化パスの符号化により生じる歪を算出する歪計算手段と、各符号化パスの符号量を算出する符号量計算手段と、前記歪計算手段からの歪と前記符号量計算手段からの符号量とから各コードブロックにおける歪と符号量の関係に基づく傾きを算出する傾き計算手段と、前記傾き、全成分の総符号量、特定成分の総符号量に基づいて全成分の総符号量が目標符号量以下でかつ特定成分の総符号量が所定の最大値以下に収まるよう各符号化を制御する制御情報を前記エントロピー符号化手段及び前記符号データ抽出手段に出力する符号化パス導出手段とを有する画像符号化装置において、前記符号化パス導出手段は、前記傾きが所定の傾き閾値を越える符号化パスを符号化し、前記全成分の総符号量が前記目標符号量に達しない場合には、前記傾き閾値を減少させて、それ以前に符号化されていない符号化パスをさらに符号化する処理を、前記全成分の総符号量が前記目標符号量に達するまで繰り返し制御し、前記全成分の総符号量が前記目標符号量に達した段階で、前記特定成分の総符号量が所定の最小値に満たない場合には、特定成分に属するコードブロックのみの符号化を、前記最小値を越えるまでさらに続けるよう符号化を制御し、その後、特定成分以外のコードブロックについてのみ、前記傾き閾値を増加させて、前記傾き閾値に満たない符号化パスを符号ストリームから削除する処理を前記全成分の総符号量が前記目標符号量を下回るまで行い、前記全成分の総符号量が前記目標符号量を下回った時点での符号化パスを、最終出力パスとして決定するものである。
また、この発明に係る画像符号化装置は、２次元信号を複数のコードブロックに分割し、コードブロックをビットプレーンに分解し、各ビットプレーンを一つ以上の符号化パスに分割し、制御情報に基づいて符号化パス毎に符号化して符号データを出力するエントロピー符号化手段と、前記エントロピー符号化手段からの符号データを格納する符号メモリと、レート制御に必要な歪と符号量の計算に基づいて符号化パスの続行及び終了を判断するレート制御情報抽出手段と、前記レート制御情報抽出手段からの制御情報に基づいて符号化終了パスまでの符号データを前記符号メモリから抽出し符号ストリームとして出力する符号データ抽出手段とを備え、前記レート制御情報抽出手段は、各符号化パスの符号化により生じる歪を算出する歪計算手段と、各符号化パスの符号量を算出する符号量計算手段と、前記歪計算手段からの歪と前記符号量計算手段からの符号量とから各コードブロックにおける歪と符号量の関係に基づく傾きを算出する傾き計算手段と、前記傾き、全成分の総符号量、特定成分の総符号量に基づいて全成分の総符号量が目標符号量以下でかつ特定成分の総符号量が所定の最大値以下に収まるよう各符号化を制御する制御情報を前記エントロピー符号化手段及び前記符号データ抽出手段に出力する符号化パス導出手段とを有する画像符号化装置において、前記符号化パス導出手段は、前記傾きが所定の傾き閾値を越える符号化パスを符号化し、前記全成分の総符号量が前記目標符号量に達しない場合には、前記傾き閾値を減少させて、それ以前に符号化されていない符号化パスをさらに符号化する処理を、前記全成分の総符号量が前記目標符号量に達するまで繰り返し制御し、符号化の途中で指定した前記特定成分の総符号量が前記最大値を越えた場合には、それ以降、特定成分に属するコードブロックの符号化を行わないよう符号化を制御し、前記全成分の総符号量が前記目標符号量に達した段階で、前記特定成分の総符号量が所定の最小値に満たない場合には、特定成分に属するコードブロックのみの符号化を、前記最小値を越えるまでさらに続けるよう符号化を制御し、その後、特定成分以外のコードブロックについてのみ、前記傾き閾値を増加させて、前記傾き閾値に満たない符号化パスを符号ストリームから削除する処理を前記全成分の総符号量が前記目標符号量を下回るまで行い、前記全成分の総符号量が前記目標符号量を下回った時点での符号化パスを、最終出力パスとして決定するものである。
【発明の効果】
【００３０】
この発明によれば、各コードブロックでその傾きがパラメータλ−1より大きい符号化パスだけを符号化する処理をλの値を変えて順次行う中で、特定成分の符号量を監視することにより１パスでの符号化とレート制御を行い、演算量を低減し、極端な符号量の偏りを回避することができる。
【発明を実施するための最良の形態】
【００３１】
実施の形態１．
この発明の実施の形態では、符号化を実行するにあたり、特定成分の符号量が予め指定した最大値以内とするようにレート制御する方法を示す。ここで、特定成分とは、ＲＧＢの３つのカラー成分のうちＲ成分のみ、最低解像度成分のみなどのように指定することを意味する。
【００３２】
図１は、この発明の実施の形態１に係る画像符号化装置の構成を示すブロック図である。図１に示される画像符号化装置は、入力画像信号に対し２次元ウェーブレット変換を再帰的に施すウェーブレット変換手段１０１と、ウェーブレット変換手段１０１によって生成されたウェーブレット変換係数を予め設定された量子化ステップサイズで量子化処理する量子化手段１０２と、量子化されたウェーブレット変換係数をビットプレーンに分解し２値算術符号化するエントロピー符号化手段１０３と、エントロピー符号化された符号データを一時的に格納する符号メモリ１０４と、レート制御に必要な歪と符号量を計算し、どのパスまで符号化を実行し、どのパスで符号化を終了するかを判断するレート制御情報抽出手段１０５と、レート制御情報抽出手段１０５から出力される符号化終了パスに応じ符号化終了パスまでの符号データを符号メモリ１０４から抽出し、符号ストリームとして出力する符号データ抽出手段１０６とを備える。
【００３３】
図２は、図１に示されるレート制御情報抽出手段１０５の構成を示すブロック図である。図２に示すように、レート制御情報抽出手段１０５は、量子化手段１０２からの出力に基づいて符号化パス毎に歪を計算する歪計算手段１１１と、エントロピー符号化手段１０３からの出力に基づいて符号化パス毎に符号量をカウントする符号量計算手段１１２と、歪計算手段１１１からの歪データと符号量計算手段１１２からの符号量データ及びその傾き等を符号化パス毎に記憶するレート歪メモリ１１３と、符号量対歪の傾きを算出する傾き計算手段１１４と、符号化パスで符号化を継続するか否かを判断し、符号化すべき符号化パスを導出してその結果としての制御情報をエントロピー符号化手段１０３及び符号データ抽出手段１０６に出力する符号化パス導出手段１１５とを有する。
【００３４】
次に動作について説明する。まず、図１において、例えば、イメージスキャナやデジタルカメラ、もしくはネットワークや記憶媒体等の画像入力装置（図示せず）からの画像信号は、ウェーブレット変換手段１０１で１次元のウェーブレット変換が垂直方向、水平方向の両方向に対して２次元的に施され、サブバンドに帯域分割される。ここで、１次元のウェーブレット変換は、低域通過フィルタと高域通過フィルタのフィルタバンクによって実現される。図３は、図１に示されるウェーブレット変換手段１０１により、２次元のウェーブレット変換を２回再帰的に施した例である。図中、先頭の数字は分解レベルを表しており、続くＬまたはＨの２つの英字は、水平方向、垂直方向のフィルタの種類を表している。Ｌは低域通過フィルタを、Ｈは高域通過フィルタを施した結果を表している。また、「再帰的に」ウェーブレット変換を２回施すと言うことは、まず、第１回目のウェーブレット変換により、１ＬＬ，１ＨＬ，１ＬＨ，１ＨＨが生成されると、その１ＬＬに対して２回目のウェーブレット変換を施し、２ＬＬ，２ＨＬ，２ＬＨ，２ＨＨを生成することを意味している。
【００３５】
量子化処理手段１０２では、サブバンド毎に設定された量子化ステップサイズによりウェーブレット変換係数を量子化する。
【００３６】
エントロピー符号化手段１０３では、各サブバンドのウェーブレット変換係数をコードブロックと呼ばれる固定サイズの矩形領域に分割した後、多値データからなるそれぞれのコードブロックを２値のビットプレーンに変換する。通常、このコードブロックの大きさは、６４×６４、３２×３２などのサイズに設定される。
【００３７】
ここで、図４を用いてビットプレーンの分解について詳しく説明する。図４（ａ）は、４×４のコードブロックの一例を表している。これらのデータに対して、正負を表す１ビットの信号と絶対値の表現に変換し、それらのデータを縦方向に２進表現した結果を各行単位に並べたものが図４（ｂ）となる。次に、図４（ｂ）に対して同一のビット番号のビットを集めたものが図４（ｃ）となる。ここで、最下位ビット（ＬＳＢ：Least Significant Bit）を第０ビット、最上位ビット（ＭＳＢ：Most Significant Bit）を第３ビットとした時、第０ビットで集めたものを第０ビットプレーン、第１ビットで集めたものを第１ビットプレーン、第２ビットで集めたものを第２ビットプレーン、第３ビットで集めたものを第３ビットプレーンとしている。これ以外にも正負を表すビットの集まりとして符号ビットプレーンを作成する。
【００３８】
エントロピー符号化手段１０３では、ビットプレーン内の各ビットを、そのコンテクストに応じて、３通りの符号化パス、シグニフィカントプロパゲーションデコーディングパス（Significant Propagation Decoding Pass）、マグニチュードリファインメントパス（Magnitude Refinement Pass）、クリーンナップパス（Cleanup Pass）に分割する。
【００３９】
エントロピー符号化手段１０３は、次に、それぞれの符号化パス毎に算術符号化のためのコンテクストモデリングを行う。但し、ＭＳＢプレーンから数えて全て０となるビットプレーンは、コンテクストモデリング、符号化は行わず、全て０のビットプレーンの数をヘッダに書くだけとする。そして、最初に１が出現したビットプレーンについては、全てのビットがクリーンナップパスに分類されるが、その他のビットプレーンについては、前述したように３種類の符号化パスに分類される。
【００４０】
図５には、コードブロックのビットプレーン数が６で、有効なビットプレーン数が４の場合の例を示している。コンテクストモデリングが終了すると、算術符号によるエントロピー符号化が行われる。
【００４１】
エントロピー符号化処理と並行して、レート制御情報抽出手段１０５内の歪計算手段１１１では、各コードブロックにおいてあるパスの符号化が終了する度にその符号化パスと一つ前の前符号化パスにおける歪Ｄの差分ΔＤ、その累積値Ｄ＝Ｄ＋ΔＤを計算する。ここで、歪とは、ある符号化パスまでの符号を送った時に再生画像の平均二乗誤差が符号データを伝送しない時と比較してどれだけ減少したかを示すもので、厳密に言えば符号化歪の減少量ということになる。従って、最終ビットプレーンまで差分ΔＤを累積すると、その平均二乗誤差に等しくなる。差分ΔＤの計算方法は、ＪＰＥＧ２０００勧告書（ＩＳＯ／ＩＴＵ １５４４４−１：２０００）ＡｎｎｅｘＪに紹介されている手法などを使用することが可能である。
【００４２】
また、前記歪計算手段１１１の処理と同時に、符号量計算手段１１２では、各コードブロックにおいてあるパスの符号化が終了する度にその符号化パスでの出力バイト数ΔＲ、その累積値Ｒ＝Ｒ＋ΔＲを算出する。これらの歪Ｄ、符号量Ｒは、タイル番号、分解レベル、サブバンド、コードブロック、符号化パス等々のインデックスが付与された後、レート歪メモリ１１３に格納される。
【００４３】
また、傾き計算手段１１４では、符号量データＲ、歪データＤからその傾きＳを計算し、レート歪メモリ１１３に対して、歪データ、符号量データと同一の符号化パスの傾きであることがわかる位置に格納する。これにより、レート歪メモリ１１３には、図６に示すようにデータが格納される。
【００４４】
さらに、符号化パス導出手段１１５では、傾きＳ、パラメータλ（以下、レート制御パラメータ）から、そのコードブロックでの符号化を更なるパスまで続行するか否かを判断し、判断結果をエントロピー符号化手段１０３に送る。また、符号化パス導出手段１１５は、符号化対象コードブロックが特定成分に含まれ、特定成分の総符号量が指定された最大値に達していれば、そのコードブロックの符号化はスキップするようエントロピー符号化手段１０３に指示する。
【００４５】
符号化を続行するならば、エントロピー符号化手段１０３では、次のパスを符号化し、レート制御情報抽出手段１０５では、その符号化パスでの出力バイト数ΔＲ、歪Ｄの差分ΔＤから、傾き計算手段１１４において傾きＳを算出し、再度、符号化を更なるパスまで続行するか否かを判断する。符号化を続行しないならば、符号化終了の情報をエントロピー符号化手段１０３に、符号化終了パスを符号データ抽出手段１０６に送る。レート制御に関わる符号化の制御については、後でフローチャートを使って詳しく説明する。
【００４６】
符号データ抽出手段１０６では、符号メモリ１０４から、各コードブロックにおける符号化終了パスから定まるパスまでの符号データを読み込み、各コードブロックに含まれる符号化パス数を付加情報として付け加えた後、それらを指定された順に並べて、所定のヘッダ情報を付加した上で符号ストリームとして出力する。
【００４７】
ここで、レート制御情報抽出手段１０５、エントロピー符号化手段１０３における処理の詳細を説明する。この処理方法では、予めレート制御パラメータλの候補を複数用意しておき、あるパラメータλを満足する符号化パスまでの符号化を全コードブロックに関して行う。その際、符号量が目標量に達しているか否かを判断して、達していれば符号化終了、達していなければ次のパラメータλの候補を設定して、そのパラメータλを全コードブロックが満足するまで符号化を再度実行する。ここで、全コードブロックの総符号量だけでなく、予め指定した特定成分のコードブロックの総符号量も監視する。もし、特定成分の符号量が予め指定した最大値に達した場合には、特定成分への符号割り当てはその最大値として確定し、それ以降、特定成分への符号量は増やさないものとする。このように、パラメータλを徐々に変化させて符号化を行う処理を総符号量が目標量に達するまで行う。あるレート制御パラメータλを満足するか否かは、各パスの終了時点でＲＤ曲線の傾きＳを算出し、傾きＳがλ−1に達したか否かで判断する。
【００４８】
以下、符号化すべきパスの決定方法を、主にレート制御情報抽出手段１０５内の符号化パス導出手段１１５の動作内容である、図７に示すフローチャートを参照して説明する。レート制御パラメータの候補λ（t）は、予め以下のように設定しておく。
λ（ｔ）＝{λ（０），λ（１），λ（２），・・・，λ（ｔｍａｘ）}
（λ（ｔ）＜λ（ｔ＋１））
【００４９】
また、レート制御パラメータλのインデックスｔの初期値をｔ＝０（ｔ＝０〜ｔｍａｘ）、コードブロックのインデックスｉ＝０（ｉ＝０〜ｉｍａｘ）、総符号量のカウンタＲｓｕｍ＝０，特定成分の総符号量のカウンタＰｓｕｍ＝０，各コードブロックにおける符号化パスを記憶する変数ｋ（ｉ）を全てコードブロックについて−１（ゼロビットプレーンをスキップした次のパスのインデックスが０、ｋ（ｉ）＝−１〜ｋｍａｘ、カウンタの都合上、初期値はｋ（ｉ）＝−１とする）とする。
【００５０】
なお、ブロック図にそのメモリを図示はしないが、ｋ（ｉ）はコードブロック毎に記憶する変数であり、レート制御パラメータのインデックスｔ、コードブロックのインデックスｉ、総符号量のカウンタＲｓｕｍ、Ｐｓｕｍは全コードブロックで共通な変数とする。
【００５１】
また、あるコードブロックで符号化を更に進めるか否かを示す更新フラグをＣｆｌａｇ（ｉ）＝１（ｉ＝０〜ｉｍａｘ）とする。最初は、全ての符号化ブロックでレート制御パラメータλのインデックスｔをインクリメントし、符号化途中で特定成分の総符号量が指定の最大値を越えた場合には、特定成分に属する符号化ブロックの更新フラグを０とし、それ以降、符号化を行わないようにする。目標総符号量Ｒｍａｘ、特定成分符号量の最大値Ｐｍａｘは予め指定され、符号化パス導出手段１１５内部に記憶しておくものとする。
【００５２】
まず、ステップ７０１において、更新フラグＣｆｌａｇ（ｉ）を使いコードブロックｉで次の符号化パスを符号化するか否かを判定する。最初は、すべてのコードブロックで符号化を行うが、特定成分の符号量が指定した符号量を超えた後には、特定成分に属するコードブロックの更新フラグを０として、それ以上、レート制御パラメータを更新しないようにする。ステップ７０２において、更新フラグＣｆｌａｇ（ｉ）が１の場合には、符号化対象となる符号化パスをｋ（ｉ）に設定し、ステップ７０３において、コードブロックｉの符号化パスｋ（ｉ）を符号化する。
【００５３】
符号化後、歪計算手段１１１で算出したその符号化パスと一つ前の前符号化パスにおける歪Ｄの差分ΔＤ、符号量計算手段１１２で算出したその符号化パスでの符号量ΔＲなど、レート歪メモリ１１３に保存されたレートと歪の関係を使い、ステップ７０４において、パスｋ（ｉ）の傾きＳ（ｉ，ｋ（ｉ））を算出する。
【００５４】
ステップ７０５において、特定成分の総符号量Ｐｓｕｍを算出する。図には示さないが、各コードブロックが特定成分に属するか否かを判定する情報を符号化パス導出手段１１５内部に有しており、特定成分のコードブロックが符号化されるたびに、符号化パス導出手段１１５で特定成分の総符号量Ｐｓｕｍに符号化対象となる符号化パスの符号量ΔＲを加算することにより、特定成分の総符号量を算出する。ステップ７０６においては、符号化パス導出手段１１５で総符号量Ｒｓｕｍに符号化対象となる符号化パスの符号量ΔＲを加算することにより、総符号量を算出する。
【００５５】
次に、ステップ７０７において、特定成分の符号量Ｐｓｕｍと特定成分符号量の最大値Ｐｍａｘとを比較する。Ｐｓｕｍ＞Ｐｍａｘならば、ステップ７０８において、特定成分に属する全てのコードブロックについてその更新フラグをＣｆｌａｇ＝０として、これ以降、特定成分のコードブロックについて符号化を行わないようにする。また、パスｋ（ｉ）で最大値Ｐｍａｘを越えたので、現コードブロックの最終符号化パスを除くために、ステップ７０９において、最終符号化パスのインデックスをｋ（ｉ）−１とし、総符号量のカウンタから最終符号化パスの符号量ΔＲを差し引く。
【００５６】
もし、Ｐｓｕｍ≦Ｐｍａｘならば、このまま更新フラグの変更は行わずに符号化を続行する。ステップ７１０において、総符号量Ｒｓｕｍを目標総符号量Ｒｍａｘと比較し、総符号量Ｒｓｕｍが目標総符号量Ｒｍａｘに達していたならば、符号化はここの時点で終了し、各コードブロックで、どのパスまで符号化したかを示す情報ｋ（ｉ）を符号データ抽出手段１０６に送る。ステップ７１２では、パスｋ（ｉ）で最大値Ｐｍａｘを越えたので、現コードブロックの最終符号化パスを除くために、最終符号化パスのインデックスをｋ（ｉ）−１とする。
【００５７】
総符号量Ｒｓｕｍが目標総符号量Ｒｍａｘに達していないならば、ステップ７１１において、現符号化パスでの傾きＳ（ｉ，ｋ（ｉ））と傾き閾値であるλ（ｔ）−1との大小を比較し、傾きＳが大きければ、さらに次のパスを符号化する（ステップ７１１→ステップ７０２）。傾きＳがλ（ｔ）−1未満になったならば、符号化済みのパスの符号データをメモリに一旦保存し、このコードブロックの符号化を中断し、コードブロックのインデックスｉをインクリメントして、次のコードブロックの符号化に処理を移す（ステップ７１１→ステップ７１３→ステップ７１４→ステップ７０１）。フローチャートには示さないが、ここで、符号化パスがそのコードブロックの最終符号化パスであった場合にも、次のコードブロックの処理に移るものとする。
【００５８】
次のコードブロックでも同様に傾きがλ（ｔ）−1未満となるまで符号化を行う。これを全てのコードブロックに対して行った後、パラメータλのインデックスｔをインクリメントして傾き閾値λ（ｔ）−1を減少させ、λを次の候補に設定して、再度全コードブロックの符号化を傾きがλ（ｔ）−1未満となるまで行う（ステップ７１１→ステップ７１３→ステップ７１５→ステップ７０１）。なお、ステップ７１５において、λ（ｔ）を更新しても、Ｓ（ｉ、ｋ（ｉ））＜λ（ｔ）−1となる、つまり、更新後のλが既に符号化済みの符号化パスにおける傾きより大きい場合がある。その場合、フローチャートには示していないが、ステップ７１３までジャンプしてそのブロックの符号化をパスし、次のコードブロックの符号化に移る。
【００５９】
次に、どのようにλを変化させてレート配分を決定するかを図８の例を使って示す。この例では、ＲＧＢ３成分からなる画像データを総符合量の目標値Ｒｍａｘ＝１００として符号化を行う。Ｒ、Ｇ、Ｂ各成分の総符号量をそれぞれＲ０、Ｒ１、Ｒ２とし、Ｒ成分の符号量の最大値Ｐｍａｘを４０とする。
【００６０】
最初にλ−1＝１００からスタートし、各コードブロックで傾きがＳ＜λ−1＝１００となるまで符号化を続ける。これを全コードブロックに対して実行した段階で総符号量Ｒｓｕｍ＝５５であった。総符号量Ｒｓｕｍが目標総符号量Ｒｍａｘに満たないので、λを一段階下げλ−1＝９０として、再度、各コードブロックで傾きがＳ＜λ−1＝９０となるまで符号化を続ける。これを全コードブロックに対して実行した段階で総符号量Ｒｓｕｍ＝６２であった。
【００６１】
まだ、総符号量Ｒｓｕｍが目標総符号量Ｒｍａｘに満たないので、λを一段階下げλ−1＝８０とした時、途中でＲ成分の符号量がその最大値４０を超えてしまったので、Ｒ成分に属するコードブロックについてはそれ以降符号化を行わないこととする。特定成分について最大値４０を越えない最大の符号量は３９であった。Ｇ成分、Ｂ成分については符号化を続行し、Ｒ成分を除く全コードブロックで傾きＳがＳ＜λ−1＝８０を満たすまで符号化を続ける。λ−1＝８０符号化が終了した段階で総符号量Ｒｓｕｍ＝６９であった。表中、更新を停止したために値が変わらない数値を網掛けで示す。
【００６２】
まだ、総符号量Ｒｓｕｍが目標総符号量Ｒｍａｘに満たないので、λを次の値７０として、符号化を行う。この場合も、Ｒ成分については更なる符号化は行わない。Ｇ成分、Ｂ成分については全コードブロックで傾きＳがＳ＜７０を満たすまで符号化を続ける。λ−1＝７０符号化が終了した段階で総符号量Ｒｓｕｍ＝７９であった。
【００６３】
これでもＲｓｕｍが目標総符号量Ｒｍａｘに満たないので、λを次の値６０として、符号化を行う。この符号化の最中、総符号量がＲｍａｘ＝１００に達したので、その時点で符号化を終了する。目標総符号量Ｒｍａｘを越えない最大の符号量は、Ｒ１＝３０，Ｒ２＝３０であった。以上の処理により、Ｒ，Ｇ，Ｂ各成分への符号量割り当ては、それぞれ、３９，３０，３０、総符号量は９９となる。
【００６４】
本実施の形態１では、特定成分の符号量が最大符号量となるか否かを監視して、特定成分の符号量を制限しているが、必ずしも符号量である必要はなく、例えば特定成分の符号化歪を監視して特定成分の符号化歪を指定した値以下とするように制限することも可能である。また、本実施の形態１では、特定成分を１種類としたが、複数の特定成分を設定してそれらの最大値を設定することも可能である。例えば、ＲＧＢ３成分からなる画像データにおいて、それぞれの成分の総符号量を監視することにより、各色成分の総符号量を制限することも可能である。
【００６５】
前記のように、特定成分の符号量を最大値以下とすることにより、リソースの少ない小型の復号器でも復号が可能となり、復号器に要するコスト削減につながる。また、従来の技術として示した全ての符号化パスを符号化した上で収束演算により目標総符号量を満足する傾きλを探す収束演算を実施する方法で特定成分の符号量を制限した場合、特定成分の符号量が最小値に満たないと、適切なλを探索する収束演算が再度必要となる。これに対し、本実施の形態１では、特定成分の符号量を監視して、各符号化パスの符号化を続行するか否かを決定するだけで済むので、符号化処理量の低減にも有効であるといえる。
【００６６】
実施の形態２．
上述した実施の形態１では、特定成分の符号量が指定された最大値以下となるように制限する方法を示したが、この実施の形態２では、特定成分の符号量が指定された最小値以上となるように制限する方法を説明する。
【００６７】
実施の形態２に係る画像符号化装置の構成は、図１に示す実施の形態１に係る構成と同様なので、その説明は省略し、図１のレート制御情報抽出手段１０５、エントロピー符号化手段１０３における処理の詳細を説明する。この方法では、予めレート制御パラメータλの候補を複数用意しておき、あるλを満足する符号化パスまでの符号化を全コードブロックに関して行う。その際、符号量が目標量に達しているか否かを判断して、達していれば符号化終了、達していなければ、次のλの候補を設定して、そのλを全コードブロックが満足するまで符号化を再度実行する。
【００６８】
ここで、総符号量が目標値に達した後に、特定成分の総符号量が予め指定した最小値を越えたか否かを判断し、最小値以上ならば符号化を終了する。最小値以下の場合は、特定成分に属するコードブロックのみ、符号量が最小値を越えるまで実行する。特定成分への符号量割り当ては、その段階で終了する。
【００６９】
次に、特定成分以外のコードブロックに対し、先ほどとは逆の順序で（λが小さくなるように）λの値を設定し、λ−1を上回る傾きを持つ符号化パスまでをその符号化ブロックの符号データとする。これらのλを順次下げる処理を、総符号量が目標総符号量を下回るまで行う。
【００７０】
以下、符号化すべきパスの決定方法を、主にレート制御情報抽出手段１０５内の符号化パス導出手段１１５の動作内容である、図９から図１１に示すフローチャートを参照して説明する。レート制御パラメータの候補λ（ｔ）は、予め以下のように設定しておく。
λ（ｔ）＝{λ（０），λ（１），λ（２），・・・，λ（ｔｍａｘ）}
（λ（ｔ）＜λ（ｔ＋１））
【００７１】
また、レート制御パラメータのインデックスｔの初期値をｔ＝０（ｔ＝０〜ｔｍａｘ）、コードブロックのインデックスｉ＝０（ｉ＝０〜ｉｍａｘ）、総符号量のカウンタＲｓｕｍ＝０，特定成分の総符号量のカウンタＰｓｕｍ＝０，各コードブロックにおける符号化パスを記憶する変数ｋ（ｉ）を全てコードブロックについて−１（ゼロビットプレーンをスキップした次のパスのインデックスが０、ｋ（ｉ）＝−１〜ｋｍａｘ、カウンタの都合上、初期値はｋ（ｉ）＝−１とする）とする。
【００７２】
なお、ブロック図にそのメモリを図示はしないが、ｋ（ｉ）はコードブロック毎に記憶する変数であり、レート制御パラメータのインデックスｔ、コードブロックのインデックスｉ、総符号量のカウンタＲｓｕｍ、Ｐｓｕｍは全コードブロックで共通な変数とする。
【００７３】
また、あるコードブロックで符号化を更に進めるか否かを示す更新フラグをＣｆｌａｇ（ｉ）＝１（ｉ＝０〜ｉｍａｘ）とする。目標総符号量Ｒｍａｘ、特定成分符号量の最小値Ｐｍｉｎは予め指定され、符号化パス導出手段１１５内部に記憶しておくものとする。
【００７４】
まず、ステップ９０２において、符号化対象となる符号化パスをｋ（ｉ）に設定し、ステップ９０３において、符号化パスｋ（ｉ）を符号化する。符号化後、歪計算手段１１１で算出したその符号化パスと一つ前の前符号化パスにおける歪Ｄの差分ΔＤ、符号量計算手段１１２で算出したその符号化パスでの符号量ΔＲなど、レート歪メモリ１１３に保存されたレートと歪の関係を使い、ステップ９０４において、パスｋ（ｉ）の傾きＳ（ｉ，ｋ（ｉ））を算出する。
【００７５】
ステップ９０５において、特定成分の総符号量Ｐｓｕｍを算出する。図には示さないが、各コードブロックが特定成分に属するか否かを判定する情報を符号化パス導出手段１１５内部に有しており、特定成分のコードブロックが符号化されるたびに、符号化パス導出手段１１５で特定成分の総符号量Ｐｓｕｍに符号化対象となる符号化パスの符号量ΔＲを加算することにより、特定成分の総符号量を算出する。ステップ９０６においては、符号化パス導出手段１１５で総符号量Ｒｓｕｍに符号化対象となる符号化パスの符号量ΔＲを加算することにより、全成分の総符号量を算出する。
【００７６】
次に、ステップ９０７において、総符号量Ｒｓｕｍと総符号量目標値Ｒｍａｘを比較する。総符号量が目標総符号量に達していないならば、ステップ９１１において、現符号化パスでの傾きＳ（ｉ，ｋ）とλ（ｔ）−1との大小を判断し、傾きＳが大きければ、さらに次のパスを符号化する（ステップ９１１→ステップ９０２）。傾きＳがλ（ｔ） −1未満になったならば、符号化済みのパスの符号データをメモリに一旦保存し、このコードブロックの符号化を中断し、コードブロックインデックスｉをインクリメントして、次のコードブロックの符号化に処理を移す（ステップ９１１→ステップ９１２→ステップ９１３→ステップ９０２）。なお、フローチャートには示さないが、ここで符号化パスがそのコードブロックの最終符号化パスであった場合にも、次のコードブロックの処理に移るものとする。
【００７７】
次のコードブロックでも同様に傾きがλ（ｔ）−1未満となるまで符号化を行う。これを全てのコードブロックに対して行った後、λインデックスｔをインクリメントし、λを次の候補に設定して、再度全コードブロックの符号化を傾きがλ（ｔ）−1未満となるまで行う（ステップ９１１→ステップ９１２→ステップ９１４→ステップ９０２）。なお、ステップ９１４において、λ（ｔ）を更新しても、Ｓ（ｉ、ｋ（ｉ））＜λ（ｔ）−1となる、つまり更新後のλが既に符号化済みの符号化パスにおける傾きより大きい場合がある。その場合、フローチャートには示していないが、ステップ９１２までジャンプしてそのブロックの符号化をパスし、次のコードブロックの符号化に移る。
【００７８】
次に、ステップ９０７において、Ｒｓｕｍ＞Ｒｍａｘと判断された場合には、ステップ９０８で現コードブロックの最終符号化パスを除くために最終符号化パスのインデックスをｋ（ｉ）−１とし、総符号量のカウンタから最終符号化パスの符号量ΔＲを差し引く。ステップ９０９において、特定成分の総符号量Ｐｓｕｍとその最小値Ｐｍｉｎとを比較し、特定成分の総符号量Ｐｓｕｍが最小値Ｐｍｉｎ以上ならば符号化は終了する。
【００７９】
特定成分の総符号量Ｐｓｕｍと最小値Ｐｍｉｎ未満の場合には、これ以降、特定成分に属するコードブロックのみ総符号量Ｐｓｕｍがその最小値Ｐｍｉｎを超えるまで符号化を続行する。ステップ９１０で、現在のコードブロックのインデックスｉ、レート制御パラメータλのインデックスｔをｉｓｔｏｐ、ｔｓｔｏｐに一旦保存し、図１０のステップ１００１に移行し、特定成分のコードブロックの更新フラグを１に、その他のコードブロックの更新フラグを０に設定する。以下のステップ１００２からステップ１０１２までの処理は、特定成分のコードブロックだけを符号化対象としていることを除いて、ほぼステップ９０２〜ステップ９１４までの処理と同様であるので詳しい説明は省略する。符号化を実行中、ステップ１００８で特定成分の総符号量Ｐｓｕｍが最小値Ｐｍｉｎを超えたと判定されたら、ステップ１００２〜ステップ１０１２からなるループを抜ける。これで特定成分に関しては、符号ストリームとして出力される符号化パスは確定する。
【００８０】
次の段階では、特定成分以外のコードブロックで総符号量が目標値となるまで符号化パスを切り捨てる。レート制御パラメータ、符号化するコードブロックのインデックスを特定成分のコードブロックの符号化を停止した段階まで戻すため、ステップ１０１３で保存してあったレート制御パラメータλのインデックス、コードブロックのインデックスをｔ、ｉに設定し、図１１に移行し、ステップ１１０１において、特定成分のコードブロックの更新フラグを０に、特定成分以外は１に設定する。ここからは、符号化を進めた時とは逆の走査順で符号化パスを、全成分の総符号量Ｒｓｕｍが目標値Ｒｍａｘ以下となるまで切り捨てていく。
【００８１】
まず、ステップ１１０２において、あるコードブロックで符号化を更に進めるか否かを示す更新フラグをＣｆｌａｇ（ｉ）＝１（ｉ＝０〜ｉｍａｘ）とする。ステップ１１０３では、符号化パスを一つ削除して、ステップ１１０４でその傾きをレート歪メモリ１１３から読み出す（符号化は既に終わっているので必要ない）。ステップ１１０５でその時点での全成分の総符号量Ｒｓｕｍを算出し、ステップ１１０６で総符号量Ｒｓｕｍと目標値Ｒｍａｘとを比較し、総符号量Ｒｓｕｍが目標値Ｒｍａｘ以下ならば、この時点で符号化パス決定の処理は終了する。各コードブロックで、どのパスまでを符号ストリームとして出力するかを示す情報ｋ（ｉ）を符号データ抽出手段１０６に送る。
【００８２】
総符号量Ｒｓｕｍが目標値Ｒｍａｘより大きい場合、ステップ１１０７において、現符号化パスでの傾きＳ（ｉ，ｋ）とλ（ｔ）−1との大小を比較し、傾きＳが小さければ、ステップ１１０３にリターンしさらに次のパスを符号化する。傾きＳがλ（ｔ） −1以上になったならば、ステップ１１０８及びステップ１１０９を介してコードブロックインデックスｉをデクリメントして、ステップ１１０２にリターンし次のコードブロックに処理を移す。フローチャートには示さないが、符号化パスがそのコードブロックの最初の符号化パスであった場合にも、次のコードブロックの処理に移るものとする。次のコードブロックでも同様に傾きがλ（ｔ）−1以上となるまで処理を行う。これを全てのコードブロックに対して行った後、ステップ１１１０において、レート制御パラメータλのインデックスｔをデクリメントして傾き閾値を増加させ、λを次の候補に設定して、再度特定成分以外のコードブロックを走査する。
【００８３】
次に、どのようにλを変化させてレート配分を決定するかを図１２の例を使って示す。この例では、ＲＧＢ３成分からなる画像データを総符合量の目標値Ｒｍａｘ＝１００として符号化を行う。Ｒ、Ｇ、Ｂ各成分の総符号量をそれぞれＲＯ、Ｒ１、Ｒ２とし、Ｒ成分の符号量の最小値Ｐｍｉｎを３０とする。
【００８４】
最初にλ−1＝１００からスタートし、各コードブロックで傾きがＳ＜λ−1＝１００となるまで符号化を続ける。これを全コードブロックに対して実行した段階で総符号量Ｒｓｕｍ＝８５であった。まだ、Ｒｓｕｍが目標総符号量に満たないので、λを一段階下げλ−1＝９０として、再度、各コードブロックで傾きがＳ＜λ−1＝９０となるまで符号化を続ける。これを全コードブロックに対して実行した段階で総符号量Ｒｓｕｍ＝９２であった。
【００８５】
まだ、Ｒｓｕｍが目標総符号量に満たないので、λを一段階下げλ−1＝８０とした時、ある符号化パスを符号化した段階で総符号量が目標値１００以下で最大となる９９となった。しかし、特定成分の符号量がその最小値に満たないので、これ以降、特定成分に属するコードブロックのみ符号化を続行する。λ−1＝８０として、特定成分の全コードブロックを符号化した段階で特定成分の符号量は２２となった。表中、更新を停止したために値が変わらない数値を網掛けで示す。
【００８６】
特定成分の符号量が最小値の３０に満たないので、λを一段階下げλ−1＝７０として符号化を続ける。これを特定成分全コードブロックに対して実行した段階で特定成分の総符号量Ｐｓｕｍ＝２５であった。Ｐｓｕｍが最小値３０に満たないので、更にλを一段階下げλ−1＝８０とした時、途中で特定成分の総符号量が最小値３１を越えたので、この段階で特定成分の符号化を終了する。
【００８７】
これ以降、特定成分以外での切り捨て符号化パスを決定する。特定成分以外のコードブロックで傾きがλ−1＝８０未満の符号化パスを切り捨てたところ、総符号量は１０８であった。総符号量目標値１００より大きいので、λを一段階上げλ−1＝９０として符号化パスを切り捨てたところ、総符号量は１０４であった。まだ、総符号量目標値１００より大きいので、λを一段階上げλ−1＝１００として符号化パスを切り捨てたところ、途中で総符号量が目標値の１００を下回ったので、その時点で処理を終了する。以上の処理により、全コードブロックにおいて符号データとして出力すべき符号化パスが定まり、Ｒ，Ｇ，Ｂ各成分への符号量割り当ては、それぞれ、３１，３４，３４、総符号量は９９となる。
【００８８】
本実施の形態２では、特定成分符号量が最小符号量以上となるよう、特定成分の符号量を制限しているが、必ずしも符号量である必要はなく、例えば特定成分の符号化歪を監視して特定成分の符号化歪を指定した値以上とするように制限することも可能である。また、本実施の形態２では、特定成分を１種類としたが、複数の特定成分を設定してそれらの最小値を設定することも可能である。例えば、ＲＧＢ３成分からなる画像データにおいて、それぞれの成分の総符号量を監視することにより、各色成分の総符号量を制限することも可能である。
【００８９】
また、本実施の形態２では、特定成分符号量が最小符号量以上となるよう、特定成分の符号量を制限しているが、実施の形態１で説明した特定成分符号量が最大符号量以下となる方法と組み合わせ、特定成分の符号量が最小符号量以上でかつ最大符号量以下となるように制御することも可能である。このためには、図９のステップ９０６と９０７の間で、図７のステップ７０７の処理と同様に特定成分の符号量が最大値を越えたか否かを判断し、最大値を超えた場合、図７のステップ７０８、ステップ７０９と同様の処理を行い、それ以降、特定成分に属するコードブロックについては符号化を実行しないようにすればよい。
【００９０】
従来の技術として示した単純に画面全体の平均２乗誤差を最小化する方法では、場合によっては特定成分の符号量配分が極端に小さくなり、主観的な画質が劣化することもあった。前記のように、特定成分の符号量を最小値以上とすることが保証されれば、特定成分の画質が極端に劣化するという状況が回避でき、画質の向上につながる。
【００９１】
また、従来の技術として示した全ての符号化パスを符号化した上で収束演算により目標総符号量を満足する傾きλを探す収束演算を実施する方法で特定成分の符号量を制限とした場合、特定成分の符号量が最小値に満たないと、適切なλを探索する収束演算が再度必要となる。これに対し、本実施の形態２では、特定成分の符号量を監視して、各符号化パスの符号化を続行するか否かを決定するだけで済むので、符号化処理量の低減にも有効であるといえる。
【図面の簡単な説明】
【００９２】
【図１】この発明の実施の形態１に係る画像符号化装置の構成を示すブロック図である。
【図２】図１に示されるレート制御情報抽出手段１０５の構成を示すブロック図である。
【図３】図１に示されるウェーブレット変換手段１０１により分解レベル２までウェーブレット変換をした時のサブバンドを示す図である。
【図４】図１に示されるエントロピー符号化手段１０３によるビットプレーンの分解を説明する図であり、（ａ）は、４×４のコードブロックの一例を表し、（ｂ）は、（ａ）に示すデータを、正負を表す１ビットの信号と絶対値の表現に変換し、それらのデータを縦方向に２進表現した結果を各行単位に並べた例を表し、（ｃ）は（ｂ）に示すデータ対して同一のビット番号のビットを集めた例をそれぞれ示す。
【図５】図１に示されるエントロピー符号化手段１０３によるビットプレーンから符号化パスへの分解を説明する図である。
【図６】図２に示されるレート歪メモリ１１３に格納されるデータを示す図である。
【図７】この発明の実施の形態１における画像符号化装置の処理を示すフローチャートである。
【図８】この発明の実施の形態１における符号化の順序を説明する図である。
【図９】この発明の実施の形態２における画像符号化装置の処理を示すフローチャートである。
【図１０】図９に続く処理を示すフローチャートである。
【図１１】図１０に続く処理を示すフローチャートである。
【図１２】この発明の実施の形態２における符号化の順序を説明する図である。
【符号の説明】
【００９３】
１０１  ウェーブレット変換手段、１０２  量子化手段、１０３  エントロピー符号化手段、１０４  符号メモリ、１０５  レート制御情報抽出手段、１０６  符号データ抽出手段、１１１  歪計算手段、１１２  符号量計算手段、１１３  レート歪メモリ、１１４  傾き計算手段、１１５  符号化パス導出手段。
【図１】
0004680112.tif 000002
【図２】
0004680112.tif 000003
【図３】
0004680112.tif 000004
【図４】
0004680112.tif 000005
【図５】
0004680112.tif 000006
【図６】
0004680112.tif 000007
【図７】
0004680112.tif 000008
【図８】
0004680112.tif 000009
【図９】
0004680112.tif 000010
【図１０】
0004680112.tif 000011
【図１１】
0004680112.tif 000012
【図１２】
0004680112.tif 000013