(57)【特許請求の範囲】
【請求項１】
画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データの中から、必要に応じて下位側の符号化データを優先的に削除することにより、出力データのレート制御を行うレート制御部と、
前記レート制御部により必要に応じて下位側の符号化データが優先的に削除された、前記ビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データと、前記ビットプレーン群の前記所定の位よりも下位の各ビットプレーンとを合成し、前記出力データを生成する合成部と
を備える画像処理装置。
【請求項２】
前記レート制御部は、前記出力データに含める前記符号化データの符号量が所定の目標符号量以下となるように、適宜前記符号化データを削除する
請求項１に記載の画像処理装置。
【請求項３】
前記目標符号量を算出する目標符号量算出部をさらに備え、
前記レート制御部は、前記出力データに含める前記符号化データの符号量が、前記目標符号量算出部により算出された前記目標符号量以下となるように、適宜前記符号化データを削除する
請求項２に記載の画像処理装置。
【請求項４】
前記目標符号量算出部は、割り当てられた総データ量から、前記ビットプレーン群の前記所定の位よりも下位の各ビットプレーンのデータ量の総和である非符号化データ量を減算することにより、前記目標符号量を算出する
請求項３に記載の画像処理装置。
【請求項５】
前記非符号化データ量を算出する非符号化データ量算出部をさらに備え、
前記目標符号量算出部は、前記総データ量から、前記非符号化データ量算出部により算出された前記非符号化データ量を減算することにより、前記目標符号量を算出する
請求項４に記載の画像処理装置。
【請求項６】
前記ビットプレーンを符号化する符号化部をさらに備え、
前記レート制御部は、前記符号化部により前記所定の位よりも上位の各ビットプレーンが符号化されて得られた各符号化データの中から、必要に応じて下位側の符号化データを優先的に削除することにより、出力データのレート制御を行う
請求項１に記載の画像処理装置。
【請求項７】
ビットプレーンに対する処理を選択する選択部をさらに備え、
前記選択部は、前記所定の位より上位の各ビットプレーンを、符号化を行うビットプレーンとして選択し、
前記符号化部は、前記選択部により選択された各ビットプレーンを符号化し、
前記レート制御部は、前記符号化部を制御して、必要に応じて下位側の符号化データを符号化させないようにする
請求項６に記載の画像処理装置。
【請求項８】
前記レート制御部は、前記符号化部により生成された符号化データの内、下位側の符号化データを優先的に合成させないようにすることにより、前記下位側の符号化データの削除を行う
請求項７に記載の画像処理装置。
【請求項９】
画像処理装置の画像処理方法であって、
前記画像処理装置のレート制御部が、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データの中から、必要に応じて下位側の符号化データを優先的に削除することにより、出力データのレート制御を行い、
前記画像処理装置の合成部が、必要に応じて下位側の符号化データが優先的に削除された、前記ビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データと、前記ビットプレーン群の前記所定の位よりも下位の各ビットプレーンとを合成し、前記出力データを生成する
画像処理方法。
【請求項１０】
画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位のビットプレーンの内、上位側の一部のビットプレーンの符号化データを復号する復号部と、
前記復号部により前記符号化データが復号されて得られる、前記ビットプレーン群の所定の位よりも上位においてより上位側の一部のビットプレーンと、符号化されていない前記所定の位よりも下位のビットプレーンとの間に、所定の挿入ビットプレーンを挿入するビットプレーン挿入部と、
前記挿入部により前記挿入ビットプレーンが挿入されたビットプレーン群をビット深度方向に合成するビットプレーン合成部と
を備える画像処理装置。
【請求項１１】
前記ビットプレーン挿入部は、全ての係数の値がゼロのビットプレーンを前記挿入ビットプレーンとして挿入する
請求項１０に記載の画像処理装置。
【請求項１２】
前記挿入ビットプレーンを生成する挿入ビットプレーン生成部をさらに備え、
前記挿入ビットプレーン生成部は、前記係数データがビット深度方向に展開された際のビットプレーンの数と、前記復号部により前記符号化データが復号されて得られるビットプレーンの数の差分値の数だけ、前記挿入ビットプレーンを生成する
請求項１１に記載の画像処理装置。
【請求項１３】
前記コードストリームに含まれる前記符号化データに対してのみ前記復号部により復号を選択する処理選択部をさらに備え、
前記復号部は、前記処理選択部により選択された前記符号化データを復号する
請求項１１に記載の画像処理装置。
【請求項１４】
画像処理装置の画像処理方法であって、
前記画像処理装置の復号部が、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位のビットプレーンの内、上位側の一部のビットプレーンの符号化データを復号し、
前記画像処理装置のビットプレーン挿入部が、前記符号化データが復号されて得られる、前記ビットプレーン群の所定の位よりも上位においてより上位側の一部のビットプレーンと、符号化されていない前記所定の位よりも下位のビットプレーンとの間に、所定の挿入ビットプレーンを挿入し、
前記画像処理装置のビットプレーン合成部が、前記挿入ビットプレーンが挿入されたビットプレーン群をビット深度方向に合成する
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置および方法に関し、特に、符号化処理および復号処理の負荷を低減させることができるようにした画像処理装置および方法に関する。
【背景技術】
【０００２】
従来、画像の符号化の規格として、さらに、JPEG2000がある（例えば、特許文献１参照）。このJPEG2000は、可逆と非可逆の２つのオプションが用意されており、さらに、スケラビリティ（解像度、画質、コンポーネントなど）などの他の優れた利点を兼ね備えている。このJPEG2000は、非可逆用の圧縮として、例えばデジタルシネマに利用される。DCI規格（Digital Cinema Initiatives）によれば、JPEG2000 Part-1を符号化・復号技術として使うことが決められている。
【０００３】
特許文献１には、ビットシフト器とウェーブレット変換器とで構成される固定小数点型ウェーブレット変換器と、ウェーブレット変換器で構成される整数型ウェーブレット変換器の両方を備え、可逆変換および非可逆変換の両方を行うことができ、画質や圧縮率の選択の自由度を高め得るような画像符号化装置が記載されている。
【０００４】
しかしながら、上述したようなJPEG2000方式の場合、処理量が大きすぎ、実用的でない恐れがあった。また、処理負荷の増大から、符号化の処理時間が許容範囲を超えるほど増大する恐れがあった。
【０００５】
これに対して、JPEG2000可逆符号化の場合の計算負荷を軽減する手段について提案がなされた（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許３９０６６３０号
【特許文献２】特開２０１０−９３６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非可逆符号化の場合についての提案は十分でなかった。JPEG2000の非可逆符号化の場合、目標符号量に合わせたレート制御が必要になり、可逆符号化の場合に比べて格段に制御が困難になる。そのため、特許文献２に記載のようなJPEG可逆符号化の負荷を軽減する方法を単純に非可逆符号化に適用しても、適切なレート制御を行うことができない恐れがあった。
【０００８】
本開示は、このような状況に鑑みて提案されたものであり、適切なレート制御を実現し、非可逆符号化の場合においても負荷を低減させることができるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本開示の一側面は、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データの中から、必要に応じて下位側の符号化データを優先的に削除することにより、出力データのレート制御を行うレート制御部と、前記レート制御部により必要に応じて下位側の符号化データが優先的に削除された、前記ビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データと、前記ビットプレーン群の前記所定の位よりも下位の各ビットプレーンとを合成し、前記出力データを生成する合成部とを備える画像処理装置である。
【００１０】
前記レート制御部は、前記出力データに含める前記符号化データの符号量が所定の目標符号量以下となるように、適宜前記符号化データを削除することができる。
【００１１】
前記目標符号量を算出する目標符号量算出部をさらに備え、前記レート制御部は、前記出力データに含める前記符号化データの符号量が、前記目標符号量算出部により算出された前記目標符号量以下となるように、適宜前記符号化データを削除することができる。
【００１２】
前記目標符号量算出部は、割り当てられた総データ量から、前記ビットプレーン群の前記所定の位よりも下位の各ビットプレーンのデータ量の総和である非符号化データ量を減算することにより、前記目標符号量を算出することができる。
【００１３】
前記非符号化データ量を算出する非符号化データ量算出部をさらに備え、前記目標符号量算出部は、前記総データ量から、前記非符号化データ量算出部により算出された前記非符号化データ量を減算することにより、前記目標符号量を算出することができる。
【００１４】
前記ビットプレーンを符号化する符号化部をさらに備え、前記レート制御部は、前記符号化部により前記所定の位よりも上位の各ビットプレーンが符号化されて得られた各符号化データの中から、必要に応じて下位側の符号化データを優先的に削除することにより、出力データのレート制御を行うことができる。
【００１６】
ビットプレーンに対する処理を選択する選択部をさらに備え、前記選択部は、前記所定の位より上位の各ビットプレーンを、符号化を行うビットプレーンとして選択し、前記符号化部は、前記選択部により選択された各ビットプレーンを符号化し、前記レート制御部は、前記符号化部を制御して、必要に応じて下位側の符号化データを符号化させないようにすることができる。
【００１７】
前記レート制御部は、前記符号化部により生成された符号化データの内、下位側の符号化データを優先的に合成させないようにすることにより、前記下位側の符号化データの削除を行うことができる。
【００１８】
本開示の一側面は、また、画像処理装置の画像処理方法であって、前記画像処理装置のレート制御部が、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データの中から、必要に応じて下位側の符号化データを優先的に削除することにより、出力データのレート制御を行い、前記画像処理装置の合成部が、必要に応じて下位側の符号化データが優先的に削除された、前記ビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データと、前記ビットプレーン群の前記所定の位よりも下位の各ビットプレーンとを合成し、前記出力データを生成する画像処理方法である。
【００１９】
本開示の他の側面は、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位のビットプレーンの内、上位側の一部のビットプレーンの符号化データを復号する復号部と、前記復号部により前記符号化データが復号されて得られる、前記ビットプレーン群の所定の位よりも上位においてより上位側の一部のビットプレーンと、符号化されていない前記所定の位よりも下位のビットプレーンとの間に、所定の挿入ビットプレーンを挿入するビットプレーン挿入部と、前記挿入部により前記挿入ビットプレーンが挿入されたビットプレーン群をビット深度方向に合成するビットプレーン合成部とを備える画像処理装置である。
【００２０】
前記ビットプレーン挿入部は、全ての係数の値がゼロのビットプレーンを前記挿入ビットプレーンとして挿入することができる。
【００２２】
前記挿入ビットプレーンを生成する挿入ビットプレーン生成部をさらに備え、前記挿入ビットプレーン生成部は、前記係数データがビット深度方向に展開された際のビットプレーンの数と、前記復号部により前記符号化データが復号されて得られるビットプレーンの数の差分値の数だけ、前記挿入ビットプレーンを生成することができる。
【００２４】
前記コードストリームに含まれる前記符号化データに対してのみ前記復号部により復号を選択する処理選択部をさらに備え、前記復号部は、前記処理選択部により選択された前記符号化データを復号することができる。
【００２５】
本開示の他の側面は、また、画像処理装置の画像処理方法であって、前記画像処理装置の復号部が、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位のビットプレーンの内、上位側の一部のビットプレーンの符号化データを復号し、前記画像処理装置のビットプレーン挿入部が、前記符号化データが復号されて得られる、前記ビットプレーン群の所定の位よりも上位においてより上位側の一部のビットプレーンと、符号化されていない前記所定の位よりも下位のビットプレーンとの間に、所定の挿入ビットプレーンを挿入し、前記画像処理装置のビットプレーン合成部が、前記挿入ビットプレーンが挿入されたビットプレーン群をビット深度方向に合成する画像処理方法である。
【００２６】
本開示の一側面においては、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データの中から、必要に応じて下位側の符号化データを優先的に削除することにより、出力データのレート制御が行われ、必要に応じて下位側の符号化データが優先的に削除された、ビットプレーン群の所定の位よりも上位の各ビットプレーンの符号化データと、ビットプレーン群の所定の位よりも下位の各ビットプレーンとが合成され、出力データが生成される。
【００２７】
本開示の他の側面においては、画像データが直交変換された係数データがビット深度方向に展開されたビットプレーン群の所定の位よりも上位のビットプレーンの内、上位側の一部のビットプレーンの符号化データが復号され、符号化データが復号されて得られる、ビットプレーン群の所定の位よりも上位においてより上位側の一部のビットプレーンと、符号化されていない所定の位よりも下位のビットプレーンとの間に、所定の挿入ビットプレーンが挿入され、挿入ビットプレーンが挿入されたビットプレーン群がビット深度方向に合成される。
【発明の効果】
【００２８】
本開示によれば、画像を処理することができる。特に、適切なレート制御を実現し、非可逆符号化の場合においても、負荷を低減させることができる。
【図面の簡単な説明】
【００２９】
【図１】エンコーダの主な構成例を示すブロック図である。
【図２】サブバンドの構成例を示す図である。
【図３】各サブバンド中のコードブロックの例を示す図である。
【図４】ビットプレーンの例を説明する図である。
【図５】符号化パスの例を説明する図である。
【図６】係数の走査の例を説明する図である。
【図７】SPcocまたはSPcodパラメータの構成例を説明する図である。
【図８】図１の選択部の主な構成例を示すブロック図である。
【図９】ビットプレーン選択の例を説明する図である。
【図１０】ビットプレーン選択の他の例を説明する図である。
【図１１】図１のレート制御部の主な構成例を示すブロック図である。
【図１２】レート制御の例を説明する図である。
【図１３】レート制御の例を説明する図である。
【図１４】符号化処理の流れの例を説明するフローチャートである。
【図１５】選択処理の流れの例を説明するフローチャートである。
【図１６】レート制御処理の流れの例を説明するフローチャートである。
【図１７】圧縮レートと処理速度の関係の例を示す図である。
【図１８】圧縮レートと画質の関係の例を示す図である。
【図１９】デコーダの主な構成例を示すブロック図である。
【図２０】図１９のビットプレーン合成部の主な構成例を示すブロック図である。
【図２１】復号処理の流れの例を説明するフローチャートである。
【図２２】ビットプレーン合成処理の流れの例を説明するフローチャートである。
【図２３】エンコーダの他の構成例を示すブロック図である。
【図２４】図２３の選択部の主な構成例を示すブロック図である。
【図２５】図２３のレート制御部の主な構成例を示すブロック図である。
【図２６】符号化処理の流れの、他の例を説明するフローチャートである。
【図２７】選択処理の流れの、他の例を説明するフローチャートである。
【図２８】レート制御処理の流れの、他の例を説明するフローチャートである。
【図２９】複数コンポーネントの場合の処理の概要を説明する図である。
【図３０】複数コンポーネントの場合の処理の概要を説明する図である。
【図３１】パーソナルコンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００３０】
以下、発明を実施するための形態（以下実施の形態とする）について説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態（エンコーダ）
２．第２の実施の形態（デコーダ）
３．第３の実施の形態（エンコーダ）
４．第４の実施の形態（パーソナルコンピュータ）
【００３１】
＜１．第１の実施の形態＞
［概要］
従来のアーカイブシステムまたは画像のデータベースでは、マスタ画像と呼ばれる非圧縮の画像を記憶・保持しておき、これを必要に応じて符号化して、符号化結果のファイルをネットワーク経由で配信したり、記録メディアに保存したりする等のオペレーションが行われる。
【００３２】
映画制作では、まず３５ｍｍまたは６０ｍｍフィルムで撮影して、フィルムスキャンコンバータという機器を用いてデジタルデータにコンバートする。このデジタル化された映画ソースがマスタ画像になる。
【００３３】
医用の場合も、レントゲン写真等のフィルムがフィルムスキャンされ、デジタルコンバートされて得られたデジタルデータがマスタ画像になる。
【００３４】
また、最近の一眼レフのデジタルカメラ等では、CCD（Charge Coupled Device）やCMOS（Complementary Metal Oxide Semiconductor）のイメージセンサから取得したRAWデータまたはRGBデータを、符号化せずにメモリカードに保存することができるものも存在する。
【００３５】
以上の様な、符号化されていない（非符号化の）マスタ画像は、画像としてのデータに欠損がないため重要であるが、そのデータサイズが膨大になってしまう。従って、マスタ画像をネットワーク経由で転送する場合や、メモリカードに多くの画像を記録する場合、そのマスタ画像に対して何らかの符号化を行うことが余議なくされる。
【００３６】
また、このようなマスタ画像を記録する場合も、そのマスタ画像を記録させるハードディスクの容量は有限である。従って、より多くのマスタ画像をハードディスクに記憶させることができるように、マスタ画像を可逆符号化してからハードディスクに記憶させる方が望ましい。その際、マスタ画像はテープなどのより安価な記録媒体にセーブしておくのが便利である。
【００３７】
可逆符号化（ロスレス符号化とも称する）の技術としては、例えば、ZipやLZ77等があるが、画像の圧縮には不適である（圧縮率が悪い）。また、国際規格のJPEG（Joint Photographic Experts Group）にも、可逆符号化がJPEG-LSとして規格化されているが、実用性が低かった。
【００３８】
可逆符号化の規格として、さらに、JPEG2000がある。このJPEG2000は、可逆と非可逆の２つのオプションが用意されており、さらに、スケラビリティ（解像度、画質、コンポーネントなど）などの他の優れた利点を兼ね備えている。このJPEG2000は、非可逆用の符号化として、例えばデジタルシネマに利用される。DCI規格（Digital Cinema Initiatives）によれば、JPEG2000 Part-1を符号化・復号技術として使うことが決められている。
【００３９】
また、JPEG2000は、可逆用の符号化としても利用される。例えば、非符号化のマスタ画像を一時保存する際の符号化処理に利用される。また、JPEG2000の特徴であるスケラビリティを利用して、まず可逆符号化を行って可逆のファイルを生成しておき、必要に応じてDCI規格などの非可逆なファイルに変換するような場合にも利用される。
【００４０】
特許文献１には、ビットシフト器とウェーブレット変換器とで構成される固定小数点型ウェーブレット変換器と、ウェーブレット変換器で構成される整数型ウェーブレット変換器の両方を備え、可逆変換および非可逆変換の両方を行うことができ、画質や圧縮率の選択の自由度を高め得るような画像符号化装置が記載されている。
【００４１】
しかしながら、上述したようなJPEG2000方式の場合、可逆符号化の処理量が大きすぎ、実用的でなかった。JPEG2000のエントロピ符号化では、ビットモデリングと算術符号化を組み合わせたEBCOT（Embedded Block Coding with Optimized Truncation）という技術が採用されている。EBCOTはJPEG2000の高い圧縮性能の基盤になっている反面、非常に計算負荷が大きい。JPEG2000の可逆符号化の場合、EBCOTが全ビットプレーンに対して実行されるため、更に計算負荷が増大する。したがって、JPEG2000可逆符号化方式のエンコーダを実現する場合、この負荷の大きさによりハードウェアコストが許容範囲を超えるほど増大してしまい、実現が困難になる恐れがあった。
【００４２】
また、処理負荷の増大から、符号化の処理時間が許容範囲を超えるほど増大する恐れがあった。例えば、DCI規格のマスタ画像は高解像度画像（例えば４Ｋ×２Ｋ）であり、JPEG2000可逆符号化方式により、このようなマスタ画像を１ピクチャ分可逆符号化すると、一般的なエンコーダではその処理に数秒を要する。このペースでは、例えば約２時間程度のコンテンツの符号化を行うのに、全体で数日の期間を要する。このように処理時間が増大すると、例えば、ハードウェア占有や電気代等の処理コストだけでなく、作業員の人件費も増大する恐れがある。  
【００４３】
従って、圧縮率を犠牲にしないで、JPEG2000圧縮の計算負荷を軽減する手段の確立が、非常に望まれてきた。
【００４４】
本開示はこのような問題を解決するためのものであり、データの符号化または復号の負荷を低減させることができるようにするものである。
【００４５】
例えば、特許文献２では、特にJPEG2000可逆符号化の場合の計算負荷を軽減する手段について述べたものであったが、非可逆符号化については特に言及していなかった。
【００４６】
しかしながら、JPEG2000可逆符号化と非可逆符号化では、用いるウェーブレット変換が異なる。さらに、非可逆符号化では、目標符号量に合わせたレート制御が必要になる。したがって、非可逆符号化の場合、可逆符号化の場合に比べて格段に制御が困難になる。したがって、可逆符号化処理の計算負荷を軽減する方法を、非可逆符号化処理に単純に適用しても、画質の劣化および処理速度の低減を抑制しながら適切にレート制御を行うことは困難であった。
【００４７】
そこで、以下においては、非可逆符号化においても、画質の劣化および処理速度の低減を抑制しながら適切にレート制御を行う事ができるようにする方法について説明する。
【００４８】
［エンコーダ］
図１は、エンコーダの主な構成例を示すブロック図である。図１に示されるエンコーダは、画像データをJPEG（Joint Photographic Experts Group）2000の方式で符号化する符号化装置である。エンコーダは、画像データを非可逆符号化する。
【００４９】
エンコーダ１００は、画像データをウェーブレット変換し、得られた係数を、コードブロック毎にビットプレーンに展開し、ビットプレーン毎にエントロピ符号化する。
【００５０】
JPEG2000のビットプレーンは、下位ビット側のものほどランダムノイズが多くなる傾向があり、エントロピ符号化による圧縮の圧縮率（メリット）が低下する。これに対して、エントロピ符号化の処理量（デメリット）は、どのビットプレーンを処理対象とする場合も大きな変化はない。つまり、処理対象のビットプレーンが下位ビット側になるほど、エントロピ符号化により得られるメリットが、デメリットに対して小さくなる。
【００５１】
そこで、エンコーダ１００は、上位ビット（MSB）側のビットプレーンから順にエントロピ符号化していき、途中のビットプレーンにおいてそのエントロピ符号化を終了する。つまり、エンコーダ１００は、上位ビット側の一部のビットプレーンのみエントロピ符号化し、残りの下位ビット側のビットプレーンは符号化せずに出力する。
【００５２】
換言すれば、エンコーダ１００は、得られる効果が大きい、上位ビット側のビットプレーンに対してのみエントロピ符号化を行い、得られる効果が小さい、下位ビット側のビットプレーンに対しては符号化処理を省略する。この符号化処理の省略により、エンコーダ１００は、処理量を低減させることができる。しかも、圧縮率が低くなる下位ビット側のビットプレーンの符号化処理のみを省略するので、圧縮効率に対する影響を小さくすることができる。
【００５３】
さらに、エンコーダ１００は、レート制御を行う。一般的に、レート制御においてデータ量を低減させる場合、できるだけ画質を劣化させないように（レート制御の影響が画質に表れないように）、下位ビット側のビットプレーンから優先的に削除する。
【００５４】
しかしながら、下位ビット側のビットプレーンは、符号化されていない非符号化のデータ（非符号化データ）である。つまり、下位ビット側のビットプレーンには劣化が存在しない。したがって、このような下位ビット側のビットプレーンを削除すると、画質への影響（画質の低減）が大きくなる恐れがある。
【００５５】
そこでエンコーダ１００は、その下位ビット側のビットプレーンを削除せずに、それよりも上位の、符号化されたビットプレーンの中の下位ビット側から優先的に削除する。
【００５６】
このようにすることにより、エンコーダ１００は、非可逆符号化においても、画質の劣化および処理速度の低減を抑制しながら適切にレート制御を行う事ができる。また、削除するビットプレーンの符号化処理を省略することにより、エンコーダ１００は、処理速度をさらに向上させる事ができる。
【００５７】
図１に示されるように、エンコーダ１００は、DCレベルシフト部１０１、ウェーブレット変換部１０２、量子化部１０３、コードブロック化部１０４、およびビットプレーン展開部１０５を有する。エンコーダ１００は、さらに、非符号化データ量算出部１０６、選択部１０７、符号化部１０８、レート制御部１０９、合成部１１０、埋め込み部１１１、およびパケット生成部１１２も有する。
【００５８】
DCレベルシフト部１０１は、後段のウェーブレット変換を効率的に行うために画像データのDC成分のレベルシフトを行う。例えば、RGB信号が正の値（符号無しの整数）を持っている。そこで、DCレベルシフト部１０１は、そのことを利用し、原信号のダイナミックレンジを半分にするレベルシフトを行うことで、符号化効率の向上を図る。従ってYCbCr信号のCbやCr（色差信号）の様に符号（正負両方あり）の整数値を持つ信号を原信号とする場合、このレベルシフトは行われない。
【００５９】
ウェーブレット変換部１０２は、通常、低域フィルタと高域フィルタから構成されるフィルタバンクによって実現される。また、デジタルフィルタは通常複数タップ長のインパルス応答（フィルタ係数）を有するので、ウェーブレット変換部１０２は、フィルタリングが行えるだけの入力画像を予めバッファリングするバッファを有する。
【００６０】
ウェーブレット変換部１０２は、DCレベルシフト部１０１より出力された画像データを、フィルタリングに最低限必要なデータ量以上取得する。ウェーブレット変換部１０２は、そのDCレベルシフト後の画像データに対して、所定のウェーブレット変換フィルタを用いてフィルタリングを行い、ウェーブレット係数を生成する。なお、ウェーブレット変換部１０２は、画像の垂直方向および水平方向のそれぞれに対して、画像データを低域成分と高域成分に分離するフィルタリングを行う。
【００６１】
そして、ウェーブレット変換部１０２は、このようなフィルタリング処理を、図２に示されるように、垂直方向および水平方向の両方において低域成分として分離されたサブバンドに対して再帰的に所定回数繰り返す。これは、画像のエネルギーの多くが低域成分に集中しているからである。
【００６２】
図２は、分割レベル数３のウェーブレット変換処理により生成されるサブバンドの構成例を示す図である。この場合、ウェーブレット変換部１０２は、まず、画像全体をフィルタリングし、サブバンド3LL（図示せず）、3HL、3LH、および3HHを生成する。次に、ウェーブレット変換部１０２は、生成されたサブバンド3LLに対して再度フィルタリングを行い、2LL（図示せず）、2HL、2LH、および2HHを生成する。さらに、ウェーブレット変換部１０２は、生成されたサブバンド2LLに対して再度フィルタリングを行い、0LL、1HL、1LH、および1HHを生成する。
【００６３】
ウェーブレット変換部１０２は、フィルタリングにより得られたウェーブレット係数を、サブバンド毎に、量子化部１０３に供給する。量子化部１０３は、例えばレート制御部１０９の制御に応じて、ウェーブレット変換部１０２から取得したウェーブレット係数を量子化する。量子化部１０３は、得られた量子化係数をコードブロック化部１０４に供給する。
【００６４】
なお、JPEG2000の規格では、可逆符号化の場合、量子化処理は省略される。換言すれば、エンコーダ１００が可逆圧縮を行う場合、量子化部を省略し、ウェーブレット変換部１０２において得られたウェーブレット係数が、コードブロック化部１０４に供給されるようにすればよい。
【００６５】
コードブロック化部１０４は、量子化されたサブバンド毎のウェーブレット係数を、予め定められた所定の大きさの、エントロピ符号化の処理単位であるコードブロックに分割する。図３は各サブバンド中のコードブロックの位置関係を示したものである。例えば64×64画素程度のサイズのコードブロックが、分割後のすべてのサブバンド中に生成される。図２の例において、最も分割レベルが小さい3HHのサブバンドの大きさが例えば640×320画素であるとすると、64×64画素のコードブロックは合計５０個存在することになる。後段の各処理部は、このコードブロック毎に処理を行う。もちろん、このコードブロックのサイズ（画素数）は任意である。
【００６６】
コードブロック化部１０４は、各コードブロックをビットプレーン展開部１０５に供給する。ビットプレーン展開部１０５は、そのコードブロック毎の係数データを、ビットの位毎のビットプレーンに展開する。
【００６７】
ビットプレーンは、所定の数のウェーブレット係数よりなる係数群（例えばコードブロック）を、１ビット毎、つまり位毎に分割（スライス）したものである。つまり、ビットプレーンは、それぞれが複数ビットのビット深度を持つ複数のデータの、互いに同一の位のビット（係数ビット）の集合である。
【００６８】
図４にその具体例を示す。図４の左図は縦４個、横４個の計１６個の係数を示している。この１６個の係数のうち、絶対値が最大のものは１３で、２進数で１１０１と表現される。ビットプレーン展開部１０５は、このような係数群を、絶対値を示す４枚のビットプレーン（絶対値のビットプレーン）と、符号を示す１枚のビットプレーン（符号のビットプレーン）に展開する。つまり、図４中左の係数群は、図４中右に示されるように、４枚の絶対値のビットプレーンと１枚の符号のビットプレーンに展開される。ここで、絶対値のビットプレーンの要素はすべて０か１の値をとる。また、符号を示すビットプレーンの要素は、係数の値が正であることを示す値、係数の値が０であることを示す値、または係数の値がマイナスを示す値のいずれかをとる。
【００６９】
なお、このようにビットプレーンとされる係数群における係数の数は任意である。以下においては、処理単位を統一することで各部における処理を容易にするために、ビットプレーン展開部１０５が、係数をコードブロック毎にビットプレーン展開するものとして説明する。
【００７０】
ビットプレーン展開部１０５は、このように展開したビットプレーンを、係数の最上位ビット（MSB：Most Significant Bit）から最下位ビット（LSB：Least Significant Bit）に向かう順に、非符号化データ量算出部１０６に供給する。つまり、ビットプレーン展開部１０５は、ビット深度の上位ビット側から下位ビット側に向かう順に、展開したビットプレーンを非符号化データ量算出部１０６に供給する。
【００７１】
なお、このビットプレーンの供給順は任意とすることも可能であるが、エンコーダ１００や後述するデコーダの各部がその順序を予め把握しておく必要がある。
【００７２】
非符号化データ量算出部１０６は、符号化ビットプレーン数Ｎを取得する（符号化ビットプレーン数Ｎの指定を受け付ける）。符号化ビットプレーン数Ｎは、コードブロック（ビットプレーン展開部１０５による展開処理の処理単位）毎の、符号化するビットプレーンの数を示す。つまり、符号化ビットプレーン数Ｎは、各コードブロックのビットプレーン群のうち、いくつのビットプレーンを符号化するかを示す。
【００７３】
この符号化ビットプレーン数Ｎは、例えば、予め定められていてもよいし、エンコーダ１００の外部（例えばユーザ等）から指定されるようにしてもよい。つまり、符号化ビットプレーン数Ｎは、不変であっても可変であっても良い。
【００７４】
非符号化データ量算出部１０６は、この符号化ビットプレーン数Ｎを用いて、ビットプレーン展開部１０５から取得したビットプレーンについて、符号化しないビットプレーンの総データ量である非符号化データ量（Bit_BP）を算出する。符号化されないビットプレーンは、MSB乃至MSBからＮ番目の位のビットプレーンを除いた、残りの下位ビット側のビットプレーンである。つまり、符号化されないビットプレーンは、MSBから（Ｎ＋１）番目の位乃至LSBのビットプレーンである。
【００７５】
なお、以下においては、位をMSBから数えるものとし、「MSBからＭ番目の位」のことを「Ｍ番目の位」と称する。例えば、「MSBからＮ番目の位」のことを「Ｎ番目の位」と称し、「MSBから（Ｎ＋１）番目の位」のことを「（Ｎ＋１）番目の位」と称する。
【００７６】
非符号化データ量算出部１０６は、その残りの下位ビット側のビットプレーンの各データ量を加算し、非符号化データ量（Bit_BP）を算出する。
【００７７】
非符号化データ量算出部１０６は、算出した非符号化データ量（Bit_BP）をレート制御部１０９に供給する。また、非符号化データ量算出部１０６は、ビットプレーン展開部１０５から取得したビットプレーンを選択部１０７に供給する。
【００７８】
選択部１０７も符号化ビットプレーン数Ｎを取得する。選択部１０７は、この符号化ビットプレーン数Ｎを用いて、非符号化データ量算出部１０６から取得したビットプレーンを符号化するか否かを、そのビットプレーン毎に選択する。
【００７９】
選択部１０７は、符号化すると判定したビットプレーンを符号化部１０８に供給する。また、選択部１０７は、符号化しないと判定したビットプレーンを合成部１１０に供給する。
【００８０】
上述したように、JPEG2000のビットプレーンの特徴から、MSBに近いビットプレーンほど画質に与える影響が大きく圧縮効率が高い。これに対して、LSBに近いビットプレーンほどランダムノイズが多くなる傾向があり、その圧縮率は自ずと悪くなる。そこで、選択部１０７は、圧縮効率が低い下位のビットプレーンにおいては、符号化処理を省略し、その代わりに符号化前のビットプレーンを出力するように、ビットプレーン毎に処理の選択を行う。
【００８１】
つまり、選択部１０７は、上位ビット側の符号化ビットプレーン数Ｎのビットプレーンを符号化すると判定し、符号化部１０８に供給し、それより下位のビットプレーンは符号化しないと判定し、合成部１１０に供給する。
【００８２】
このような選択部１０７の制御により、エンコーダ１００は、下位のビットプレーンにおいてエントロピ符号化を省略することができる。したがって、エンコーダ１００は、符号化処理の負荷を低減させることができる。これにより、例えばコストの低減や処理時間の短縮を実現することができる。
【００８３】
符号化部１０８は、入力されるビットプレーンに対して、JPEG2000規格で定められたEBCOT（Embedded Coding with Optimized Truncation）と呼ばれるエントロピ符号化を行う。EBCOTは、所定の大きさのブロック毎にそのブロック内の係数の統計量を測定しながら符号化を行う手法である。
【００８４】
図１に示されるように、符号化部１０８は、ビットモデリング部１２１および算術符号化部１２２を有する。ビットモデリング部１２１は、JPEG2000規格で定められた手順に従って、係数データに対してビットモデリングを行い、算術符号化部１２２にコンテキストを送出する。算術符号化部１２２は、そのコンテキストを用いてビットプレーンを算術符号化する。
【００８５】
コードブロックの縦横のサイズは４から２５６まで２のべき乗で、通常使用される大きさは、３２×３２、６４×６４、１２８×３２等がある。係数値がｎビットの符号付き２進数で表されていて、bit０からbit（ｎ−２）がLSBからMSBまでのそれぞれのビットを表すとする。残りの１ビットは符号を示す。符号ブロックの符号化は、MSB側のビットプレーンから順番に、次の３種類の符号化パスによって行われる。
【００８６】
（１）Significance Propagation Pass  あるビットプレーンを符号化するSignificance Propagation Passでは、８近傍の少なくとも１つの係数が有意（Significant）であるようなnon-significant係数のビットプレーンの値が算術符号化される。その符号化したビットプレーンの値が１である場合は、符号が＋であるか、−であるかが続けて算術符号化される。
【００８７】
ここでsignificanceという言葉について説明する。Significanceとは、各係数に対して符号化されたときにsignificantを表す１に変化し、以降常に１であり続けるものである。従って、significanceとは、有効桁の情報をすでに符号化したか否かを示すフラグとも言える。あるビットプレーンでsignificantになれば、以降のビットプレーンではsignificantになったままである。
【００８８】
（２）Magnitude Refinement Pass
ビットプレーンを符号化するMagnitude Refinement Passでは、ビットプレーンを符号化するSignificance Propagation Passで符号化されていないsignificantな係数のビットプレーンの値が算術符号化される。
【００８９】
（３）Cleanup Pass
ビットプレーンを符号化するCleanup Passでは、ビットプレーンを符号化するSignificance Pass で符号化されていないnon-significanceな係数のビットプレーンの値が算術符号化される。また、その符号化されたビットプレーンの値が１である場合、符号が＋であるか−であるかが続けて算術符号化される。
【００９０】
なお、以上の３つのPassでの算術符号化では、ケースに応じて（１）ZC（Zero Coding）、（２）RLC（Run-Length Coding）、（３）SC（Sign Coding）、または（４）MR（Magnitude Refinement）等の手法が使い分けられる。なお、ここではMQ符号化と呼ばれる算術符号が用いられるものとする。MQ符号化は、JBIG2で規定された学習型の２値算術符号である。JPEG2000では、すべての符号化パスで合計１９種類のコンテキストがある。
【００９１】
これらの３つの符号化パスの用いられる順序の例は図５に示される。最初に最上位ビット（MSB）のビットプレーンであるビットプレーン（ｎ−２）｛Bit-Plane（ｎ−２）｝がCleanup Passによって符号化される。続いて１枚ずつ順次LSB側に向かって各ビットプレーンが、上述した３つの符号化パスがSignificant Propagation Pass，Magnitude Refinement Pass，Cleanup Passの順序で用いられて符号化される。
【００９２】
ただし、実際には、符号化部１０８は、何番目の位のビットプレーンで初めて１が出てくるかをヘッダに書き、MSBから連続する、全ての係数が０のビットプレーン（ゼロビットプレーンと称する）は符号化しない。
【００９３】
次に、係数の走査（スキャニング）について図６を用いて説明する。コードブロックは高さ４個の係数毎にストライプ（stripe）に分けられるストライプの幅はコードブロックの幅に等しい。スキャン順とは、１個のコードブロック内の、全ての係数をたどる順番で、コードブロック中では上のストライプから下のストライプへの順序、ストライプの中では、左の列から右の列へ向かっての順序、列の中では上から下へという順序である。各符号化パスにおいてコードブロック中の全ての係数が、このスキャン順で処理される。
【００９４】
符号化部１０８は、レート制御部１０９により符号化を行わないように制御されるまで、各ビットプレーンに対してエントロピ符号化を行う。符号化部１０８の算術符号化部１２２は、生成した符号化データ（符号化後のビットプレーン）を、レート制御部１０９に供給する。
【００９５】
レート制御部１０９は、処理対象のコードブロック（ビットプレーン展開部１０５による展開処理の処理単位）に対して割り当てられた総データ量（Bit_CB）を取得する（総データ量（Bit_CB）の指定を受け付ける）。この総データ量（Bit_CB）は、例えば、符号化処理全体を制御する制御部（図示せず）等から指定される。この制御部は任意の情報に基づいて任意の方法で各コードブロックに割り当てる総データ量を決定し、それをレート制御部１０９に通知する。
【００９６】
また、レート制御部１０９は、非符号化データ量算出部１０６が算出した非符号化データ量（Bit_BP）を取得する。
【００９７】
レート制御部１０９は、これらの情報に基づいて合成部１１０に供給する符号化データの目標符号量を算出する。レート制御部１０９は、その目標符号量を達成するように（合成部１１０に供給する符号化データの符号量が目標符号量以下となるように）、符号化部１０８から供給される符号化データ（符号化後のビットプレーン）を必要に応じて削除して符号量を調整する。つまり、レート制御部１０９は、ビットプレーン単位で符号量を調整する。レート制御部１０９は、下位ビット側のビットプレーンから優先的に削除する。
【００９８】
レート制御部１０９は、符号量調整後の符号化データ（削除しなかった符号化後のビットプレーン）を合成部１１０に供給する。
【００９９】
より具体的に説明すると、レート制御部１０９には、符号化部１０８から符号化データ（符号化されたビットプレーン）が、MSB側からLSB側に向かう順に供給される。レート制御部１０９は、符号化データを取得する毎にその符号量を累算する。レート制御部１０９は、その累算値が目標符号量より小さい場合、取得した符号化データを合成部１１０に供給する。
【０１００】
符号量の累算値が目標符号量以上となった場合、レート制御部１０９は、今回取得した符号化データを破棄し、符号化部１０８に符号化処理を終了させ、それより下位ビット側のビットプレーン（符号化データ）の供給を停止させる。
【０１０１】
また、レート制御部１０９は、取得したビットプレーン（符号化データ）の数を示す符号化ビットプレーン数Ｎ’を埋め込み部１１１に通知する。
【０１０２】
このように、レート制御部１０９は、レートを下げる場合、選択部１０７により符号化処理が施されることが選択されるビットプレーンの下位ビット側を優先的に符号化しない（受け取らない）ように制御する。このとき、レート制御部１０９は、選択部１０７により符号化処理が施されないことが選択される、さらに下位ビット側のビットプレーン（非符号化データ）は取得するように制御する。したがって、レート制御部１０９は、画質の低減を抑制しながらレート制御を行うことができる。
【０１０３】
また、そのレート制御の際に、レート制御部１０９は、ビットプレーンを削除したり残したりするのみで、特別な画像処理を必要としない。さらに、レート制御部１０９は、符号化部１０８の動作を制御し、不要な符号化処理を省略させる。したがって、レート制御部１０９は、符号化の負荷の増大を抑制することができる。つまり、レート制御部１０９は、画質の劣化や負荷の増大を抑制しながら、コードストリームの符号量の制御（レート制御）を適切に行うことができる。したがって、エンコーダ１００は、非可逆符号化においても負荷の低減を実現させることができる。
【０１０４】
合成部１１０は、レート制御部１０９から供給される符号化データ（符号化されたビットプレーン）を取得する。また、合成部１１０は、選択部１０７から供給される非符号化データ（符号化されていないビットプレーン）を取得する。合成部１１０は、これらの符号化データおよび非符号化データを合成し、ヘッダ等を付加して１本のコードストリームを生成し、それを埋め込み部１１１に供給する。
【０１０５】
埋め込み部１１１は、合成部１１０から供給されるコードストリームの所定の位置にレート制御部１０９から供給される符号化ビットプレーン数Ｎ’を示す情報を埋め込む。
【０１０６】
例えば、埋め込み部１１１は、符号化条件などの情報を記述する部分であるCOD（Coding style default）パラメータ（ISO（International Organization for Standardization）154441 JPEG2000 Part-1規格書より）内部のSPcodまたはSPcocパラメータの空きビットに、符号化ビットプレーン数Ｎ’を示す情報を多重化する。
【０１０７】
図７はこの埋め込みを説明するための図である。図７に示される表は、SPcodやSPcocパラメータとして与えられる８ビットの構成を説明するものである。この表に示されるように、SPcodやSPcocパラメータの下位６ビットには、それぞれ各種情報が割り当てられているが、これらのMSBから上位２ビットは、JPEG2000規格ではReserved、つまり空きビットになっている。埋め込み部１１１は、例えば、この２ビットを用いて符号化ビットプレーン数Ｎ’を指定する。
【０１０８】
なお、このような制御情報の埋め込み位置は、このコードストリームの復号処理を行うデコーダが特定可能な位置であれば任意である。この埋め込み位置は予め定められていてもよいし、埋め込み位置を示す情報を別途用意するようにしてもよい。また、制御情報の情報量も任意である。
【０１０９】
例えば、レート制御部１０９が符号化データを削除しなかった場合、レート制御部１０９から供給される符号化ビットプレーン数Ｎ’は符号化ビットプレーン数Ｎに一致する。つまり、この場合、SPcodやSPcocパラメータの上位２ビットには、選択部１０７が符号化するビットプレーンとして選択したビットプレーンの数が埋め込まれる。
【０１１０】
このような埋め込み処理の後、埋め込み部１１１は、コードストリームをパケット生成部１１２に供給する。このように、埋め込み部１１１が符号化ビットプレーン数Ｎ’（若しくはＮ）をコードストリームに埋め込むことにより、このコードストリームを復号するデコーダは、コードストリームよりその情報を抽出し、その情報に基づいて適切にコードストリームを復号することができる。例えば、デコーダは、他の情報を必要とせずに、コードストリームのみから、復号するビットプレーン数を特定することができる。これによりデコーダの構成や処理を容易にすることができる。
【０１１１】
なお、この情報は、コードストリームとは別にデコーダに提供されるようにしてもよい。その場合、埋め込み部１１１は省略可能であり、その分、エンコーダ１００の処理が容易になるが、この情報の授受についてデコーダとの間の取り決めが必要になる。また、デコーダが、その別途提供される情報を、復号処理に利用することができるようにする必要がある。
【０１１２】
パケット生成部１１２は、供給されたコードストリームをパケット化し、生成した各パケットをエンコーダ１００の外部に出力する。このパケットは例えば所定の伝送路や記憶媒体を介してエンコーダ１００に対応するデコーダに供給される。
【０１１３】
［選択部］
図８は、図１の選択部１０７の主な構成例を示すブロック図である。図８に示されるように選択部１０７は、符号化ビットプレーン数取得部１３１および処理選択部１３２を有する。
【０１１４】
符号化ビットプレーン数取得部１３１は、図示せぬユーザや制御部等からの符号化ビットプレーン数Ｎの指定を受け付ける。つまり、符号化ビットプレーン数取得部１３１は、符号化ビットプレーン数Ｎを取得する。なお、上述したように符号化ビットプレーン数Ｎは予め定められた定数であってもよく、その場合、符号化ビットプレーン数取得部１３１が予め符号化ビットプレーン数Ｎを保持していてもよい。符号化ビットプレーン数取得部１３１は、符号化ビットプレーン数Ｎを処理選択部１３２に供給する。
【０１１５】
また、処理選択部１３２は、非符号化データ量算出部１０６を介して供給されるビットプレーンを取得する。このビットプレーンは、MSBからLSBに向かう順に供給される。
【０１１６】
処理選択部１３２は、符号化ビットプレーン数Ｎ番目の位より上位のビットプレーン（上位ビット側のビットプレーン）に対して符号化処理を行うように制御する（符号化処理を選択する）。すなわち、処理選択部１３２は、Ｎ番目の位より上位のビットプレーンを符号化するビットプレーン（符号化用ビットプレーン）として選択し、符号化部１０８に供給する。
【０１１７】
また、処理選択部１３２は、（Ｎ＋１）番目の位より下位のビットプレーン（下位ビット側のビットプレーン）に対して符号化処理を行わないように制御する（符号化処理を選択しない）。すなわち、処理選択部１３２は、（Ｎ＋１）番目の位より下位のビットプレーンを符号化しないビットプレーン（非符号化用ビットプレーン）として選択し、合成部１１０に供給する。
【０１１８】
つまり、処理選択部１３２は、MSBからLSBに向かう順に供給されるビットプレーンをカウントし、Ｎ番目までのビットプレーンを符号化用ビットプレーンとして符号化部１０８に供給し、（Ｎ＋１）番目以降のビットプレーンを非符号化用ビットプレーンとして合成部１１０に供給する。
【０１１９】
例えば、指定ビットプレーン数Ｎが「４」であるとする。その場合、図９に示されるように、処理選択部１３２は、ビットプレーン番号「０」乃至「３」の４つのビットプレーンについて、CPパス、SPパス、およびMRパスのそれぞれについて符号化が行われるように、それらのビットプレーンを符号化部１０８に供給する。
【０１２０】
また、処理選択部１３２は、指定ビットプレーン数を超えるビットプレーン番号「４」以降のビットプレーンについて、符号化処理が省略され、非符号化データが出力されるように、それらのビットプレーンを合成部１１０に供給する。特にCPパスにおいては、非符号化データはバイト境界に合うようにパディングされた後、終端される。
【０１２１】
また、例えば、指定ビットプレーン数Ｎが「２」であるとする。その場合、図１０に示されるように、処理選択部１３２は、ビットプレーン番号「０」および「１」の２つのビットプレーンについて、CPパス、SPパス、およびMRパスのそれぞれについて符号化が行われるように、それらのビットプレーンを符号化部１０８に供給する。
【０１２２】
また、処理選択部１３２は、指定ビットプレーン数を超えるビットプレーン番号「２」以降のビットプレーンについて、符号化処理が省略され、非符号化データが出力されるように、それらのビットプレーンを合成部１１０に供給する。特にCPパスにおいては、非符号化データはバイト境界に合うようにパディングされた後、終端される。
【０１２３】
以上のように、選択部１０７は、容易に、指定ビットプレーン数Ｎ分のビットプレーンを符号化し、それ以下のビットプレーンを符号化しないように制御することができる。換言すれば、エンコーダ１００は、指定ビットプレーン数Ｎによって、非符号化データが選択される位置（位）を、確実に制御することができる。
【０１２４】
［レート制御部］
図１１は、図１のレート制御部１０９の主な構成例を示すブロック図である。図１１に示されるように、レート制御部１０９は、符号量算出部１５１、総データ量取得部１５２、目標符号量算出部１５３、および出力制御部１５４を有する。
【０１２５】
符号量算出部１５１は、符号化部１０８から供給されるＮビットプレーン分の符号化データの符号量（Bit_N）を算出し、取得した符号化データと、算出した符号量（Bit_N）とを出力制御部１５４に供給する。
【０１２６】
より具体的には、符号量算出部１５１は、ビットプレーン毎の符号化データが供給される度に、その符号量を累算し、その符号化データと、その時点の符号量の累算値（Bit_N）とを出力制御部１５４に供給する。
【０１２７】
総データ量取得部１５２は、処理対象コードストリームに割り当てられた総データ量（Bit_CB）を取得すると、それを目標符号量算出部１５３に供給する。目標符号量算出部１５３は、総データ量取得部１５２から供給される総データ量（Bit_CB）と、非符号化データ量算出部１０６から供給される非符号化データ量（Bit_BP）とを用いて、符号化データ（符号化されるビットプレーン）の目標符号量（Bit_N'）を算出する。
【０１２８】
より具体的には、目標符号量算出部１５３は、以下の式（１）のように目標符号量（Bit_N'）を算出する。
【０１２９】
Bit_N' ＝ Bit_CB − Bit_BP  ・・・（１）
【０１３０】
つまり、処理対象のコードブロックに対して割り当てられた総データ量（Bit_CB）から、非符号化データ量（Bit_BP）を減算した値が目標符号量（Bit_N'）となる。
【０１３１】
目標符号量算出部１５３は、このように算出した目標符号量（Bit_N'）を出力制御部１５４に供給する。
【０１３２】
出力制御部１５４は、符号量算出部１５１を介して供給されるＮビットプレーン（符号化データ）に対して、その符号化量（Bit_N）が目標符号量（Bit_N'）以下となるように、レート制御を行う。
【０１３３】
より具体的には、出力制御部１５４は、符号量算出部１５１から符号化データと、その時点の符号量の累算値（Bit_N）が供給されると、その符号量（Bit_N）と、目標符号量算出部１５３から取得した目標符号量（Bit_N'）とを比較する。
【０１３４】
符号量（Bit_N）が目標符号量（Bit_N'）よりも小さい場合、出力制御部１５４は、取得した符号化データを合成部１１０に供給する。また、出力制御部１５４は、合成部１１０に供給した符号化データのビットプレーン数をカウントする。この場合、次のビットプレーンに対応する符号化データが符号量算出部１５１に供給され、同様の処理が繰り返される。
【０１３５】
符号量（Bit_N）が目標符号量（Bit_N'）と等しい場合、出力制御部１５４は、取得した符号化データを合成部１１０に供給する。さらに、出力制御部１５４は、符号化部１０８を制御し、それより下位のビットプレーンの符号化（処理対象コードブロックに対する符号化）を終了させる。この場合、処理対象が次のコードブロックに移るまで符号化データはレート制御部１０９に供給されない。
【０１３６】
また、出力制御部１５４は、合成部１１０に供給した符号化データのビットプレーン数をカウントし、さらに、これまで合成部１１０に供給した処理対象コードブロックのビットプレーン数Ｎ’を埋め込み部１１１に供給する。さらに、出力制御部１５４は、このカウント値Ｎ’を初期化する（例えば０にする）。
【０１３７】
符号量（Bit_N）が目標符号量（Bit_N'）よりも大きい場合、出力制御部１５４は、取得した符号化データを破棄する。さらに、出力制御部１５４は、符号化部１０８を制御し、それより下位のビットプレーンの符号化（処理対象コードブロックに対する符号化）を終了させる。この場合、処理対象が次のコードブロックに移るまで符号化データはレート制御部１０９に供給されない。
【０１３８】
また、出力制御部１５４は、これまで合成部１１０に供給した処理対象コードブロックのビットプレーン数Ｎ’を埋め込み部１１１に供給する（今回取得した符号化データは破棄したのでカウントされない）。さらに、出力制御部１５４は、このカウント値Ｎ’を初期化する（例えば０にする）。
【０１３９】
以上のように、レート制御部１０９は、合成部１１０に供給する符号化データの符号量を、処理対象コードブロックに割り当てられた総データ量（Bit_CB）と非符号化データ量（Bit_BP）を用いて算出された目標符号量（Bit_N'）以下に抑制する。
【０１４０】
図１２に示される例の場合、あるコードブロックのMSBからビットプレーン番号４までがEBCOT符号化される。この場合、符号化データの符号量はBit_Nとなり、残りのビットプレーンのデータ量である非符号化データ量はBit_BPとなる。Bit_NとBit_BPとの和は、処理対象コードブロックに割り当てられる総データ量（Bit_CB）となる。
【０１４１】
しかしながら、この処理対象コードブロックに割り当てられる総データ量（Bit_CB）の値が小さくなった場合、非符号化データ量（Bit_BP）は変化しないので、総データ量（Bit_CB）に合わせて符号量（Bit_N）を小さくする必要がある。
【０１４２】
そこで、図１３に示されるように、レート制御部１０９は、例えばビットプレーン番号２の部分で境界を設け、それ以降の符号化データは、合成部１１０に供給しない（削除する）ようにする。
このようにレート制御部１０９は、下位ビット側の符号化データを優先的に削除することによりレート制御を行うことができる。これにより、レート制御部１０９は、情報の欠損がない非符号化データを削除せずにレート制御を行うことができるので、画質の劣化を抑制しながらレート制御を行うことができる。
【０１４３】
また、レート制御部１０９は、容易に目標符号量を算出し、その目標符号量を用いて符号化データを削除するか否かを制御するのみで容易に適切なレート制御を実現することができる。
【０１４４】
さらに、レート制御部１０９は、符号量が目標値に達した時点でそのコードブロックに対する符号化処理を終了させるので、負荷を低減させることができる。これにより。符号化処理の高速化や、製造コストの低減を実現することができる。
【０１４５】
［符号化処理の流れ］
次に、図１４のフローチャートを参照して、エンコーダ１００による符号化処理の流れの例を説明する。動画像データを符号化するエンコーダ１００は、以下に説明する符号化処理を動画像の各フレームについて実行する。
【０１４６】
符号化処理が開始されると、DCレベルシフト部１０１は、ステップＳ１０１において、入力された画像データのDCレベルをシフトする。ステップＳ１０２において、ウェーブレット変換部１０２は、画像データをウェーブレット変換する。ステップＳ１０３において量子化部１０３は、ステップＳ１０２の処理により得られたウェーブレット係数を量子化する。
【０１４７】
ステップＳ１０４において、コードブロック化部１０４は、ステップＳ１０３の処理により量子化されたウェーブレット係数をコードブロック単位で分割する。ステップＳ１０５において、ビットプレーン展開部１０５は、処理対象コードブロックをビットプレーンに展開する。ステップＳ１０６において、非符号化データ量算出部１０６は、符号化ビットプレーン数Ｎに基づいて、処理対象コードブロックの非符号化データ量（Bit_BP）を算出する。
【０１４８】
ステップＳ１０７において、選択部１０７は選択処理を行い、各ビットプレーンを符号化用ビットプレーンと非符号化用ビットプレーンに分ける。ステップＳ１０８において、符号化部１０８は、符号化用ビットプレーンをエントロピ符号化する。
【０１４９】
ステップＳ１０９において、レート制御部１０９は、符号化ビットプレーン数を制御することにより、レート制御を行う。ステップＳ１１０において、合成部１１０は、ステップＳ１０９のレート制御が行われた符号化データと、符号化されていない非符号化用ビットプレーンである非符号化データとを合成し、コードストリームを生成する。
【０１５０】
ステップＳ１１１において、埋め込み部１１１は、ステップＳ１０９のレート制御後の符号化ビットプレーン数Ｎ’をコードストリームに埋め込む。
【０１５１】
ステップＳ１１２において、ビットプレーン展開部１０５は、全てのコードブロックを処理したか否かを判定する。全てのコードブロックを処理していないと判定した場合、ビットプレーン展開部１０５は、処理をステップＳ１１３に進め、処理対象を次のコードブロックに移し、処理をステップＳ１０５に戻し、それ以降の処理を繰り返す。
【０１５２】
ステップＳ１０５乃至ステップＳ１１３の処理が繰り返し実行され、ステップＳ１１２において全てのコードブロックが処理されたと判定された場合、符号化処理が終了される。
【０１５３】
なお、上述した各処理は、矛盾が生じない限り、適宜、順序を変えて実行されたり、並列に実行されたりしてもよい。例えば、ステップＳ１０５において、処理対象コードブロックがビットプレーンに展開された後、ステップＳ１０６乃至ステップＳ１０９の各処理が、１ビットプレーンずつ行われるようにしてもよい。また、例えば、あるビットプレーンに対するあるステップの処理が開始されると、その処理と並行して、次のビットプレーンに対するその前のステップの処理が行われるようにしてもよい。
【０１５４】
［選択処理の流れ］
次に、図１５のフローチャートを参照して、図１４のステップＳ１０７において実行される選択処理の流れの例について説明する。
【０１５５】
選択処理が開始されると、符号化ビットプレーン数取得部１３１は、ステップＳ１３１において、符号化ビットプレーン数Ｎを取得し、処理選択部１３２に供給する。ステップＳ１３２において、処理選択部１３２は、非符号化データ量算出部１０６から供給される処理対象のビットプレーンを取得する。処理選択部１３２は、これまでに取得した処理対象コードブロックに属するビットプレーンの数をカウントする。
【０１５６】
ステップＳ１３３において、処理選択部１３２は、これまでに取得したビットプレーンの数であるビットプレーン取得数が符号化ビットプレーン数Ｎを超えたか否かを判定する。
【０１５７】
ビットプレーン取得数が符号化ビットプレーン数Ｎ以下であると判定された場合、処理選択部１３２は、処理をステップＳ１３４に進める。ステップＳ１３４において、処理選択部１３２は、処理対象のビットプレーンを符号化用ビットプレーンとして符号化部１０８に供給し、符号化させる。ステップＳ１３４の処理を終了すると、処理選択部１３２は、処理をステップＳ１３６に進める。
【０１５８】
また、ステップＳ１３３において、ビットプレーン取得数が符号化ビットプレーン数Ｎを超えたと判定された場合、処理選択部１３２は、処理をステップＳ１３５に進める。ステップＳ１３５において、処理選択部１３２は、処理対象ビットプレーンを非符号化用ビットプレーンとして合成部１１０に供給し、符号化させずに出力させる。ステップＳ１３５の処理を終了すると、処理選択部１３２は、処理をステップＳ１３６に進める。
【０１５９】
ステップＳ１３６において、処理選択部１３２は、処理対象コードブロックの全てのビットプレーンを処理したか否かを判定する。未処理のビットプレーンが存在する場合、処理選択部１３２は、処理をステップＳ１３２に戻し、それ以降の処理を繰り返す。また、ステップＳ１３６において、全てのビットプレーンを処理したと判定された場合、処理選択部１３２は、選択処理を終了し、処理を図１４のステップＳ１０７に戻し、ステップＳ１０８以降の処理を実行させる。
【０１６０】
［レート制御処理］
次に、図１６のフローチャートを参照して、図１４のステップＳ１０９において実行されるレート制御処理の流れの例を説明する。
【０１６１】
レート制御処理が開始されると、ステップＳ１５１において、目標符号量算出部１５３は、非符号化データ量算出部１０６が算出した非符号化データ量（Bit_BP）を取得する。ステップＳ１５２において、総データ量取得部１５２は、処理対象コードブロックに割り当てられた総データ量（Bit_CB）を取得する。
【０１６２】
ステップＳ１５３において、目標符号量算出部１５３は、ステップＳ１５２において取得した総データ量（Bit_CB）から、ステップＳ１５１において取得した非符号化データ量（Bit_BP）を減算することにより、目標符号量（Bit_N'）を算出する。
【０１６３】
ステップＳ１５４において、符号量算出部１５１は、符号化部１０８から供給される符号化データを取得する。ステップＳ１５５において、符号量算出部１５１は、ステップＳ１５４において取得した符号化データの符号量（の累積値）（Bit_N）を算出する。
【０１６４】
ステップＳ１５６において、出力制御部１５４は、ステップＳ１５５において算出された符号量（Bit_N）が、ステップＳ１５３において算出された目標符号量（Bit_N'）に達したか否かを判定する。符号量（Bit_N）が目標符号量（Bit_N'）より小さいと判定された場合、出力制御部１５４は、処理をステップＳ１５７に進める。
【０１６５】
ステップＳ１５７において、出力制御部１５４は、ステップＳ１５４において今回取得した符号化データを合成部１１０に出力し、処理をステップＳ１５４に戻し、それ以降の処理を繰り返す。
【０１６６】
また、ステップＳ１５６において、符号量（Bit_N）が目標符号量（Bit_N'）以上であると判定された場合、出力制御部１５４は、処理をステップＳ１５８に進める。ステップＳ１５８において、出力制御部１５４は、符号化データの出力を終了する。より具体的には、符号量（Bit_N）が目標符号量（Bit_N'）に一致する場合、出力制御部１５４は、ステップＳ１５４において今回取得した符号化データを合成部１１０に出力した後、それ以降の符号化データ（より下位ビット側のビットプレーンに対応する符号化データ）を出力するのを止める。また、符号量（Bit_N）が目標符号量（Bit_N'）より大きい場合、出力制御部１５４は、ステップＳ１５４において今回取得した符号化データを破棄し、それ以降の符号化データ（より下位ビット側のビットプレーンに対応する符号化データ）を出力するのを止める。
【０１６７】
ステップＳ１５９において、出力制御部１５４は、これまでに出力した処理対象コードブロックのビットプレーン数である符号化ビットプレーン数Ｎ’を求める。出力制御部１５４は、求めた符号化ビットプレーン数Ｎ’を埋め込み部１１１に供給する。
【０１６８】
ステップＳ１６０において、出力制御部１５４は、符号化部１０８を制御し、符号化を終了させる。ステップＳ１６０の処理が終了すると、出力制御部１５４は、レート制御処理を終了し、図１４のステップＳ１０９に処理を戻し、ステップＳ１１０以降の処理を実行させる。
【０１６９】
［エンコード結果の例］
次に上述したエンコーダ１００により符号化を行ったときの処理時間と画質について、図１７および図１８を参照して説明する。図１７は、レート制御部１０９がレート制御処理において残す符号化データの数の違いによる速度の違いを示す図である。
【０１７０】
なお、ここで、符号化ビットプレーン数Ｎ＝４とする。つまり、選択部１０７は、４番目の位までのビットプレーンを符号化させて符号化データとし、５番目の位より下位のビットプレーンを符号化せずに非符号化データとする。
【０１７１】
図１７においては、５つの場合についてエンコーダ１００全体の処理時間の長さを比較する。その１つ目は、処理対象コードブロックの全てのビットプレーンを符号化する場合（NoLazy）である。２つ目は、処理対象コードブロックの全ての符号化用ビットプレーンを符号化する（４番目（BP＝４）の位より上位のビットプレーンを符号化する）場合（NormalLazy）である。３つ目は、処理対象コードブロックの３番目の符号化用ビットプレーンまでを符号化する（３番目（BP＝３）の位より上位のビットプレーンを符号化する）場合（３BP）である。４つ目は、処理対象コードブロックの２番目の符号化用ビットプレーンまでを符号化する（２番目（BP＝２）の位より上位のビットプレーンを符号化する）場合（２BP）である。５つ目は、処理対象コードブロックの１番目の符号化用ビットプレーンのみを符号化する（MSBのビットプレーンのみを符号化する）場合（１BP）である。
【０１７２】
図１７の例においては、各場合の処理時間の長さを、「NoLazy」の場合を基準として表している。また、図１７の例においては、圧縮レートが0.25bppの場合、0.5bppの場合、1.0bppの場合、2.0bppの場合、および4.0bppの場合の、５つの場合についてそれぞれ比較している。
【０１７３】
図１７に示されるように、どの圧縮レートの場合も、処理対象コードブロックの最上位のビットプレーンのみを符号化する場合（１BPの場合）が最も処理時間が短い。つまり、エンコーダ１００の処理時間は、圧縮レートに依らず、符号化するビットプレーン数が少なくなる程、短くなる。例えば、NoLazyを100％とした時、NormalLazyが95％程度なのに対して、BP=1では75％程度になっている。従ってJPEG2000で規定されているNormalLazyに比べても20％ものアドバンテージがある。
【０１７４】
つまり、レート制御部１０９は、上述したようにレート制御を行うことにより、符号化処理の処理時間を低減させることができる。
【０１７５】
図１８は、レート制御部１０９がレート制御処理において残す符号化データの数の違いによる画質の違いを示す図である。
【０１７６】
なお、図１８においても図１７の場合と同様に、符号化ビットプレーン数Ｎ＝４とし、NoLazy、NormalLazy、３BP、２BP、および１BPの５つの場合について、エンコーダ１００により生成された符号化データが復号されて得られる画像の画質（PSNR（Peak Signal-to-Noise Ratio）（ピーク信号対雑音比））を比較する。
【０１７７】
図１８に示されるように、どの圧縮レートの場合も、PSNRに大きな違いは現れない。つまり、レート制御部１０９は、上述したようにレート制御を行うにより、画質の低減を抑制することができる。
【０１７８】
すなわち、エンコーダ１００は、処理時間の増大や画質の劣化を抑制しながら、適切なレート制御を行うことができる。したがって、エンコーダ１００は、非可逆符号化の場合であっても、適切なレート制御を実現し、負荷を低減させることができる。
【０１７９】
＜２．第２の実施の形態＞
［デコーダの構成例］
次に、以上のように説明したエンコーダ１００に対応するデコーダ（復号装置）について説明する。図１９は、デコーダの構成例を示すブロック図である。
【０１８０】
図１９に示されるデコーダ２００は、エンコーダ１００より供給されるコードストリームをエンコーダ１００の符号化方式に対応する復号方法で復号し、復号画像データを得る復号装置である。
【０１８１】
デコーダ２００は、エンコーダ１００より供給されるコードストリームを解読し、エンコーダ１００における圧縮データ・非圧縮データの選択を切り替えたビットプレーンを特定し、そのエンコーダ１００の選択に合わせて各ビットプレーンの復号を行う。すなわち、デコーダ２００は、エンコーダ１００が符号化したビットプレーンについて、エンコーダ１００の符号化方式に対応する復号方法で復号を行い、エンコーダ１００が符号化しなかったビットプレーンについて、復号せずにそのまま利用する。つまり、デコーダ２００は、各ビットプレーンを適宜復号して合成し、ベースバンドの画像データを生成する（復号画像データを得る）。
【０１８２】
なお、以上においては、エンコーダ１００がコードストリームをパケット化して出力するように説明した。したがって、エンコーダ１００の出力を復号する場合、実際には、そのパケットを解析してコードストリームを抽出するパケット解析処理が必要になる。しかしながら、このパケット解析処理は任意の方法により可能であるので、以下においては、説明の簡略化のため、このパケット解析処理についての説明は省略する。
【０１８３】
図１９に示されるように、デコーダ２００は、解読部２０１、処理選択部２０２、復号部２０３、ビットプレーン合成部２０４、コードブロック合成部２０５、逆量子化部２０６、ウェーブレット逆変換部２０７、およびDCレベル逆シフト部２０８を有する。
【０１８４】
解読部２０１は、供給されたコードストリームを解読する。例えば、解読部２０１は、コードストリームに埋め込まれている、エンコーダ１００における符号化ビットプレーン数Ｎ’を示す情報を抽出し、その情報に基づいて、処理対象のビットプレーンが符号化されているか否かを判定する。
【０１８５】
より具体的には、例えば、解読部５０１は、JPEG2000のシンタックスに従ってコードストリームを解読し、図７に示されるSPcodまたはSPcocの上位２ビットをリードし、符号化ビットプレーン数Ｎ’を示す情報を抽出する。また、解読部２０１は、コードストリームに含まれるビットプレーン毎のデータを処理選択部２０２に供給する。その際、解読部２０１は、抽出した符号化ビットプレーン数Ｎ’に基づいて、供給するデータが符号化データであるか非符号化データであるかを処理選択部２０２に通知する。
【０１８６】
例えば、解読部２０１は、コードストリームの先頭から符号化ビットプレーン数Ｎ’番目までのビットプレーンのデータを処理選択部２０２に供給する際に、そのデータが符号化データであることを処理選択部２０２に通知する。また、解読部２０１は、（Ｎ’＋１）番目以降のビットプレーンのデータを処理選択部２０２に供給する際に、そのデータが非符号化データであることを処理選択部２０２に通知する。
【０１８７】
なお、解読部５０１は、コードストリームに含まれる各コードブロックの全ビットプレーン数（全BP数）を示す情報を抽出し、ビットプレーン合成部２０４に供給する。なお、この全BP数が予め定められており、その情報をビットプレーン合成部２０４が予め保持しているようにしてもよい。その場合、この全BP数の供給は省略することができる。
【０１８８】
以上のように、処理選択部２０２は、解読部からビットプレーン毎のデータを、そのデータが符号化データであるか、若しくは、非符号化データであるかを識別可能な状態で取得する。そして、処理選択部２０２は、解読部２０１から供給された符号化データを復号部２０３に供給する。また、処理選択部２０２は、解読部２０１から供給された非符号化データ（ビットプレーン）をビットプレーン合成部２０４に供給する。
【０１８９】
復号部２０３は、ビットプレーン毎の符号化データをエンコーダ１００の符号化に対応する復号方法で復号し、その復号結果（非符号化データ、すなわち、ビットプレーン）をビットプレーン合成部２０４に供給する。
【０１９０】
図１９の例の場合、復号部２０３は、算術復号部２１１およびビットモデリング部２１２を有する。算術復号部２１１は符号化データを復号し、ビットモデリング部２１２はビットプレーンに展開されたウェーブレット係数を生成する。
【０１９１】
ビットプレーン合成部２０４は、復号部２０３と処理選択部２０２とからそれぞれビットプレーン（非符号化データ）を取得すると、それらを合成することによりビットプレーンの合成を行い、コードブロック単位の係数データを生成する。
【０１９２】
ただし、上述したようにエンコーダ１００におけるレート制御により一部のビットプレーンが削除されている場合（Ｎ＞Ｎ’の場合）、このビットプレーンの合成の際にビットプレーン数が不足する。つまり、ビットプレーン合成部２０４に供給されるビットプレーンの数が全BP数より少ない場合、その差分だけビットプレーンがエンコーダ１００のレート制御において削除されている。
【０１９３】
ビットプレーン合成部２０４は、処理対象コードブロックについて、処理選択部２０２および復号部２０３から供給されるビットプレーンの数をカウントする。そして、ビットプレーン合成部２０４は、解読部２０１から供給される全BP数と、その１コードブロック分のビットプレーンのカウント値の差分値を算出する。
【０１９４】
ビットプレーン合成部２０４は、その差分値の分、全ての係数の値がゼロのビットプレーンを生成し、処理選択部２０２および復号部２０３から供給される非符号化データと合成する。
【０１９５】
より具体的には、復号部２０３から供給されるビットプレーンは、MSB乃至Ｎ’番目の位のビットプレーンであり、処理選択部２０２から供給されるビットプレーンは、（Ｎ＋１）番目の位乃至LSBのビットプレーンである。したがって、それらの間の位、すなわち、（Ｎ’＋１）番目の位乃至Ｎ番目の位は、ビットプレーンが割り当てられない空きの位となる。ビットプレーン合成部２０４は、この空きの位に、生成した全ての係数の値がゼロのビットプレーンを挿入する。
【０１９６】
つまり、MSBからLSBに向かって、復号部２０３から供給されるビットプレーン、全ての係数の値がゼロのビットプレーン、および、処理選択部２０２から供給されるビットプレーンがこの順に並ぶように整列されて合成され、コードブロック単位の係数データが生成される。
【０１９７】
コードブロック合成部２０５は、このように生成されたコードブロック単位の係数データを合成し、１ピクチャ分の係数データを生成する。この係数データは、量子化部１０３において量子化されている。コードブロック合成部２０５は、この係数データを逆量子化部２０６に供給する。
【０１９８】
逆量子化部２０６は、量子化部１０３に対応する方法でこの係数データを逆量子化し、逆量子化後の係数データをウェーブレット逆変換部２０７に供給する。
【０１９９】
ウェーブレット逆変換部２０７は、供給されたウェーブレット係数をウェーブレット逆変換し、ベースバンドの画像データを生成する。DCレベル逆シフト部２０８は、その画像データのDC成分に対して、符号化時にシフトされた分を元に戻すDCレベル逆シフト処理を必要に応じて行う。DCレベル逆シフト部２０８は、DCレベル逆シフト処理後の画像データを出力する。
【０２００】
以上のように、デコーダ２００は、エンコーダ１００により生成された、符号化が省略されたビットプレーンを含むコードストリームを適切に復号し、復号画像データを得ることができる。さらに、その場合、デコーダ２００は、通常の、全てのビットプレーンが符号化されたコードストリームを復号する場合（全てのビットプレーンを復号する場合）よりも、復号処理の処理量を低減させることができる。
【０２０１】
［ビットプレーン合成部］
図２０は、図１９のビットプレーン合成部２０４の主な構成例を示すブロック図である。図２０に示されるように、ビットプレーン合成部２０４は、ビットプレーンバッファ２２１、ビットプレーン数カウント部２２２、挿入ビットプレーン数決定部２２３、ビットプレーン挿入部２２４、および読み出し制御部２２５を有する。
【０２０２】
ビットプレーンバッファ２２１は、処理選択部２０２および復号部２０３から供給されるビットプレーンを記憶する。ビットプレーン数カウント部２２２は、ビットプレーンバッファ２２１に記憶されるビットプレーンの数をカウントし、そのカウント値Ｙ（ビットプレーン数Ｙ）を挿入ビットプレーン数決定部２２３に通知する。
【０２０３】
挿入ビットプレーン数決定部２２３は、解読部２０１から供給される全BP数Ｘ（１コードブロックのビットプレーン数）を取得する。また、挿入ビットプレーン数決定部２２３は、ビットプレーン数カウント部２２２からビットプレーン数Ｙを取得する。
【０２０４】
挿入ビットプレーン数決定部２２３は、これらの値から、ビットプレーンを合成する際に挿入するビットプレーン数である挿入ビットプレーン数Ｚを決定する。より具体的には、挿入ビットプレーン数決定部２２３は、以下の式（２）のように、全BP数Ｘからビットプレーン数Ｙを減算し、挿入ビットプレーン数Ｚを求める。
【０２０５】
Ｚ＝Ｘ−Ｙ  ・・・（２）
【０２０６】
挿入ビットプレーン数決定部２２３は、この挿入ビットプレーン数Ｚをビットプレーン挿入部２２４に通知する。
【０２０７】
ビットプレーン挿入部２２４は、係数が全てゼロのビットプレーン（挿入ビットプレーン）を、供給された挿入ビットプレーン数Ｚだけ生成し、その挿入ビットプレーンを読み出し制御部２２５に供給し、読み出し制御部２２５において合成されるビットプレーン群に挿入させる。
【０２０８】
読み出し制御部２２５は、ビットプレーンバッファ２２１に記憶されているビットプレーンをMSBからLSBに向かう順に読み出し、取得する。より具体的には、読み出し制御部２２５は、まず、復号部２０３から供給された各ビットプレーンをMSBから下位ビット側に向かう順に読み出し、次に、処理選択部２０２から供給された各ビットプレーンを上位ビット側からLSBに向かう順に読み出す。
【０２０９】
また、読み出し制御部２２５は、ビットプレーン挿入部２２４から供給されるビットプレーン数Ｚの挿入ビットプレーンを取得し、それらを、復号部２０３から供給されたビットプレーンと、処理選択部２０２から供給されたビットプレーンとの間の位に挿入する。つまり、読み出し制御部２２５は、MSBからLSBに向かう方向に、復号部２０３から供給されたビットプレーン、挿入ビットプレーン、処理選択部２０２から供給されたビットプレーンの順に並ぶように各ビットプレーンを並べる。
【０２１０】
ビットプレーン数Ｚの挿入ビットプレーンが挿入されることにより、読み出し制御部２２５が保持するビットプレーンの数が全BP数Ｘとなる。読み出し制御部２２５は、この順でこれらのビットプレーンを合成し、１コードブロック分の係数データを生成する。読み出し制御部２２５は、生成した１コードブロック分の係数データをコードブロック合成部２０５に供給する。
【０２１１】
以上のように、ビットプレーン合成部２０４は、ビットプレーン数の不足分（エンコーダ１００において削除されたビットプレーン数）を容易に把握することができ、その分の挿入ビットプレーンを容易に生成、挿入することもできる。つまり、ビットプレーン合成部２０４は、上述したように、ビットプレーンを削除してレート制御が行われる場合であっても、容易に、１コードブロック分の係数データを生成することができる。
【０２１２】
［復号処理の流れ］
図２１のフローチャートを参照して、図１９のデコーダ２００により実行される復号処理の流れの例を説明する。
【０２１３】
デコーダ２００は、エンコーダ１００により生成されたコードストリームを取得すると、復号処理を開始する。なお、デコーダ２００は、以下に説明する復号処理を、ピクチャ単位で繰り返し実行する。
【０２１４】
復号処理が開始されると、デコーダ２００の解読部２０１は、ステップＳ２０１において、供給されたコードストリームを解読する。ステップＳ２０２において、処理選択部２０２は、その解読結果に基づいて、処理対象ビットプレーンが符号化されているか否かを判定する。処理対象ビットプレーンが符号化されている、すなわち、処理対象のビットプレーンのデータが符号化データであると判定した場合、処理選択部２０２は、処理をステップＳ２０３に進める。
【０２１５】
ステップＳ２０３において、復号部２０３は、処理対象の符号化データをエントロピ復号し、処理をステップＳ２０４に進める。また、ステップＳ２０２において、処理対象ビットプレーンが符号化されていない、すなわち、処理対象のビットプレーンのデータが非符号化データであると判定した場合、処理選択部２０２は、処理をステップＳ２０４に進める。
【０２１６】
ステップＳ２０４において、処理選択部２０２は、処理対象コードブロック内の全てのビットプレーンが処理されたか否かを判定する。未処理のビットプレーンが存在すると判定した場合、処理選択部２０２は、処理をステップＳ２０１に戻し、処理対象を次のビットプレーンに変更し、それ以降の処理を繰り返させる。
【０２１７】
ステップＳ２０１乃至ステップＳ２０４の各処理が繰り返し実行され、ステップＳ２０４において、処理対象コードブロック内の全てのビットプレーンが処理されたと判定した場合、処理選択部２０２は、ステップＳ２０５に処理を進める。ステップＳ２０５において、ビットプレーン合成部２０４は、各ビットプレーンを合成し、コードブロック単位のウェーブレット係数を生成する。
【０２１８】
ステップＳ２０６において、ビットプレーン合成部２０４は、全てのコードブロックが処理されたか否かを判定する。未処理のコードブロックが存在すると判定した場合、ビットプレーン合成部２０４は、処理をステップＳ２０１に戻し、処理対象を次のコードブロックに変更し、それ以降の処理を繰り返させる。
【０２１９】
ステップＳ２０１乃至ステップＳ２０６の各処理が繰り返し実行され、ステップＳ２０６において、全てのコードブロックが処理されたと判定した場合、コードブロック合成部２０５は、ステップＳ２０７に処理を進める。ステップＳ２０７において、コードブロック合成部２０５は、各コードブロックのウェーブレット係数を合成する。
【０２２０】
その合成結果である１ピクチャ分のウェーブレット係数は、エンコーダ１００において量子化されている。ステップＳ２０８において、逆量子化部２０６は、その量子化された各ウェーブレット係数を、エンコーダ１００の量子化部１０３に対応する方法で逆量子化する。
【０２２１】
ステップＳ２０９において、ウェーブレット逆変換部２０７は、ステップＳ２０８の処理により逆量子化された１ピクチャ分のウェーブレット係数に対してウェーブレット逆変換処理を行い、１ピクチャ分のベースバンドの画像データ（復号画像データ）を生成する。
【０２２２】
ステップＳ２１０において、DCレベル逆シフト部２０８は、DCレベルをエンコーダ１００におけるシフト量に応じて、そのエンコーダ１００によるシフト方向と反対方向にシフトし、復号処理を終了する。
【０２２３】
［ビットプレーン合成処理の流れ］
次に、図２２のフローチャートを参照して、図２１のステップＳ２０５において実行されるビットプレーン合成処理の流れの例を説明する。
【０２２４】
ビットプレーン合成処理が開始されると、図２０に示されるビットプレーン合成部２０４の挿入ビットプレーン数決定部２２３は、ステップＳ２３１において、全ビットプレーン数Ｘを取得する。
【０２２５】
ステップＳ２３２において、ビットプレーンバッファ２２１は、復号部２０３により復号されて得られたビットプレーン、若しくは、処理選択部２０２から供給されるビットプレーンを取得し、記憶する。
【０２２６】
ステップＳ２３３において、ビットプレーンバッファ２２１は、処理対象コードブロックの全てのビットプレーンを記憶したか否かを判定し、未処理のコードブロックが存在するか否かを判定し、未処理のコードブロックが存在すると判定された場合、処理をステップＳ２３２に戻し、それ以降の処理を繰り返す。
【０２２７】
ステップＳ２３２およびステップＳ２３３の処理が繰り返し実行され、ステップＳ２３３において、処理対象コードブロックの全てのビットプレーンが処理されたと判定された場合、ビットプレーンバッファ２２１は、処理をステップＳ２３４に進める。
【０２２８】
このように、ビットプレーンバッファ２２１は、処理選択部２０２および復号部２０３から供給されるビットプレーンを順次記憶し、１コードブロック分保持する。つまり、実際には、このステップＳ２３２およびステップＳ２３３の処理は、図２１のステップＳ２０２およびステップＳ２０３の処理に対応して実行される。すなわち、このステップＳ２３２およびステップＳ２３３の繰り返しは、図２１のステップＳ２０２およびステップＳ２０３の繰り返しと並行して行われる。
【０２２９】
ステップＳ２３４において、ビットプレーン数カウント部２２２は、ビットプレーンバッファ２２１に蓄積されたビットプレーンの数（ビットプレーン数Ｙ）をカウントする。なお、この処理は、ステップＳ２３２の処理に対応して実行されるようにしてもよい。つまり、処理対象コードブロックの全てのビットプレーンがビットプレーンバッファ２２１に記憶された後で、そのビットプレーンバッファ２２１に蓄積されているビットプレーンの数が数えられるようにしてもよいし、ビットプレーンバッファ２２１がビットプレーンを記憶する度に、その記憶した回数が数えられるようにしてもよい。
【０２３０】
ステップＳ２３５において、挿入ビットプレーン数決定部２２３は、ステップＳ２３１において取得された全ビットプレーン数（全BP数）Ｘと、ステップＳ２３４において得られたビットプレーン数Ｙとを用いて、以下の式（３）のように、挿入ビットプレーン数Ｚを求める。
【０２３１】
Ｚ＝Ｘ−Ｙ  ・・・（３）
【０２３２】
つまり、エンコーダ１００において展開された時のビットプレーン数である全BP数Ｘに対して現在のビットプレーン数Ｙが不足している場合、その不足分が挿入される。ステップＳ２３６において、ビットプレーン挿入部２２４は、係数が全てゼロの挿入ビットプレーンを、挿入ビットプレーン数Ｚ分生成する。
【０２３３】
ステップＳ２３７において、読み出し制御部２２５は、ビットプレーンバッファ２２１からビットプレーンを読み出す。読み出し制御部２２５は、まず、復号部２０３から供給された各ビットプレーンをMSBから下位ビット側に向かう順に読み出し、次に、処理選択部２０２から供給された各ビットプレーンを上位ビット側からLSBに向かう順に読み出す。
【０２３４】
ステップＳ２３８において、読み出し制御部２２５は、ビットプレーン挿入部２２４から供給されるビットプレーン数Ｚの挿入ビットプレーンを、復号部２０３から供給されたビットプレーンと、処理選択部２０２から供給されたビットプレーンとの間の位に挿入する。
【０２３５】
ステップＳ２３８の処理が終了すると、読み出し制御部２２５は、このように生成した１コードブロック分の係数データをコードブロック合成部２０５に供給し、ビットプレーン合成処理を終了し、処理を図２１のステップＳ２０５に戻し、ステップＳ２０６以降の処理を実行させる。
【０２３６】
以上のように各処理が実行されることにより、デコーダ２００は、エンコーダ１００により生成された、符号化が省略されたビットプレーンを含むコードストリームを適切に復号し、復号画像データを得ることができる。
【０２３７】
＜３．第３の実施の形態＞
［エンコーダの構成例］
なお、上述した第１の実施の形態においては、レート制御方法として、符号化されて得られる符号化データの符号量を累算し、その符号量が目標符号量に達した時点で符号化を終了するように説明したが、レート制御方法はこれに限らない。例えば、選択部に符号化用ビットプレーンとして選択されたビットプレーンを全て符号化し、その後で目標符号量を超える分を破棄するようにしてもよい。
【０２３８】
その場合のエンコーダの構成例を図２３に示す。図２３に示されるエンコーダ３００は、図１のエンコーダ１００と同様に、画像データを非可逆符号化する符号化装置である。
【０２３９】
エンコーダ３００は、基本的にエンコーダ１００と同様の構成を有するが、上述したように、レート制御の前に、処理対象コードブロックの全てのビットプレーンについて符号化・非符号化の処理選択を行い、符号化する予定の全てのビットプレーンに対して符号化を行う。
【０２４０】
したがって、エンコーダ３００は、エンコーダ１００の選択部１０７の代わりに選択部３０７を有し、レート制御部１０９の代わりにレート制御部３０９を有する。なお、エンコーダ１００の非符号化データ量算出部１０６、合成部１１０、および埋め込み部１１１は省略される。
【０２４１】
エンコーダ３００の場合、ビットプレーン展開部１０５により展開された各ビットプレーンは、MSBからLSBに向かう順で、符号化部１０８と選択部３０７に供給される。符号化部１０８は、選択部３０７の制御の下、供給される各符号化用ビットプレーンを符号化し、生成した符号化データを選択部３０７に供給する。
【０２４２】
選択部３０７は、選択部１０７と同様に符号化ビットプレーン数Ｎを取得する。選択部３０７は、この符号化ビットプレーン数Ｎを用いて、レート制御部３０９に供給するデータをビットプレーン毎に選択する。
【０２４３】
より具体的には、選択部３０７は、Ｎ番目の位より上位について、符号化部１０８から供給される符号化データを選択し、その符号化データをレート制御部３０９に供給する。選択部３０７は、（Ｎ＋１）番目の位より下位について、ビットプレーン展開部１０５から供給されるビットプレーン（非符号化データ）を選択し、レート制御部３０９に供給する。
【０２４４】
なお、非符号化データが選択される位については、符号化部１０８による符号化は不要である。選択部３０７は、Ｎ番目の位のビットプレーンについての選択を行った後、符号化部１０８に対して符号化終了を指示する。符号化部１０８は、この制御に従って、Ｎ番目の位より上位のビットプレーンについてのみ符号化を行い、（Ｎ＋１）番目の位より下位のビットプレーンについての符号化は省略する。
【０２４５】
したがって、符号化部１０８は、選択部３０７により選択されないビットプレーンについての不要な符号化処理を省略することができる。つまり、選択部３０７は、不要な負荷の増大を抑制することができる。
【０２４６】
上述したように、選択部３０７は、符号化停止後の、（Ｎ＋１）番目より下位について、非符号化データを選択し、レート制御部３０９に供給する。このように、レート制御部３０９には、処理対象コードブロックのビット深度の全位について、符号化データ若しくは非符号化データが供給される。レート制御部３０９は、それらの符号化データおよび非符号化データを保持する。
【０２４７】
レート制御部３０９は、選択部３０７と同様に符号化ビットプレーン数Ｎを取得する。また、レート制御部３０９は、レート制御部１０９と同様に、処理対象コードブロックに割り当てられた総データ量（Bit_CB）を取得する。レート制御部３０９は、それらの情報に基づいて、レート制御を行う。
【０２４８】
レート制御の方法は基本的にレート制御部１０９の場合と同様である。レート制御部３０９は、出力する符号化データの目標符号量を求め、その目標符号量を達成するように、必要に応じて、選択部３０７から供給された符号化データを削除する。このとき、レート制御部３０９は、下位ビット側の符号化データを優先的に削除する。また、レート制御部３０９は、非符号化データは削除しない。
【０２４９】
なお、レート制御部３０９は、このレート制御の際に、非符号化データ量の算出、コードストリームの生成、および符号化ビットプレーン数Ｎ’のコードストリームへの埋め込みも行う。
【０２５０】
レート制御部３０９は、レート制御後、削除しなかった上位ビット側の符号化データ、および、非符号化データをパケット生成部１１２に供給する。
【０２５１】
したがって、レート制御部３０９は、画質の劣化や負荷の増大を抑制しながら、コードストリームの符号量の制御（レート制御）を適切に行うことができる。したがって、エンコーダ３００は、エンコーダ１００の場合と同様に、非可逆符号化においても負荷の低減を実現させることができる。
【０２５２】
なお、エンコーダ３００の場合、以上に説明したように、レート制御が行われる前に全ての符号化用ビットプレーンが符号化される。したがって、コードストリームに含めるビットプレーンのみ符号化するエンコーダ１００の場合と比べて負荷は増大するが、より多様なシステムへの適用を容易化することができる。
【０２５３】
例えば、量子化処理を省略し、レート制御前の符号化データおよび非符号化データ（選択部３０７の出力）を出力させるようにするだけで、エンコーダ３００は、可逆符号化方式にも対応することができる。
【０２５４】
［選択部］
図２４は、図２３の選択部３０７の主な構成例を示すブロック図である。図２４に示されるように、選択部３０７は、基本的に選択部１０７と同様の構成を有するが、処理選択部１３２の代わりに、ビットプレーン選択部３３２を有する。
【０２５５】
ビットプレーン選択部３３２は、符号化部１０８から供給される符号化データ、若しくは、ビットプレーン展開部１０５から供給される非符号化データを選択し、選択した方をレート制御部３０９に供給する。
【０２５６】
ビットプレーン選択部３３２は、符号化ビットプレーン数取得部１３１により取得された符号化ビットプレーン数Ｎに基づいてこの選択を行う。ビットプレーン選択部３３２は、Ｎ番目の位より上位について、符号化データを選択し、それをレート制御部３０９に供給する。また、ビットプレーン選択部３３２は、（Ｎ＋１）番目の位より下位について、非符号化データを選択し、それをレート制御部３０９に供給する。
【０２５７】
ビットプレーン選択部３３２は、Ｎ番目の位より上位について、符号化データを選択すると、符号化部１０８を制御し、処理対象コードブロックに対しての符号化を終了させる。つまり、ビットプレーン選択部３３２は、符号化部１０８から供給される符号化データをＮ個取得し、レート制御部３０９に供給すると、符号化部１０８の符号化処理を終了させ、その後、ビットプレーン展開部１０５から供給される非符号化データを（Ｎ＋１）個取得し、それをレート制御部３０９に供給する。
【０２５８】
以上のように、選択部３０７は、容易に、上位Ｎビットについて符号化データを選択し、それより下位ビットの非符号化データを選択することができる。換言すれば、エンコーダ３００は、指定ビットプレーン数Ｎによって、非符号化データが選択される位置（位）を、確実に制御することができる。
【０２５９】
［レート制御部］
図２５は、図２３のレート制御部３０９の主な構成例を示すブロック図である。図２５に示されるように、レート制御部３０９は、埋め込み部１１１、総データ量取得部１５２、目標符号量算出部１５３、符号化ビットプレーン数取得部３５１、バッファ３５３、符号量算出部３５４、非符号化データ量算出部３５５、出力制御部３５６、およびコードストリーム生成部３５７を有する。
【０２６０】
符号化ビットプレーン数取得部３５１は、選択部３０７が取得する符号化ビットプレーン数Ｎを取得し、それを符号量算出部３５４および非符号化データ量算出部３５５に供給する。
【０２６１】
バッファ３５３は、選択部３０７から供給される符号化データおよび非符号化データをその供給順に記憶する。
【０２６２】
符号量算出部３５４は、符号化ビットプレーン数取得部３５１から供給される符号化ビットプレーン数Ｎに基づいて、レート制御部３０９が取得した（バッファ３５３に記憶された）処理対象コードブロックの符号化データの符号量（Bit_N）を算出する。上述したように、符号化データが先に供給され、その後、非符号化データが供給される。つまり、選択部３０７から供給されるデータの内、１番目乃至Ｎ番目のデータが符号化データであり、（Ｎ＋１）番目以降のデータは非符号化データである。そこで、符号量算出部３５４は、選択部３０７から供給される１番目乃至Ｎ番目までのデータ（符号化データ）のデータ量を算出する。
【０２６３】
符号量算出部３５４は、符号化ビットプレーン数Ｎおよび算出した符号量（Bit_N）を出力制御部３５６に供給する。
【０２６４】
非符号化データ量算出部３５５は、符号化ビットプレーン数取得部３５１から供給される符号化ビットプレーン数Ｎに基づいて、レート制御部３０９が取得した（バッファ３５３に記憶された）処理対象コードブロックの非符号化データのデータ量（非符号化データ量（Bit_BP））を算出する。上述したように、符号化データが先に供給され、その後、非符号化データが供給される。つまり、選択部３０７から供給されるデータの内、１番目乃至Ｎ番目のデータが符号化データであり、（Ｎ＋１）番目以降のデータは非符号化データである。そこで、非符号化データ量算出部３５５は、選択部３０７から供給される（Ｎ＋１）番目以降のデータ（非符号化データ）のデータ量を算出する。
【０２６５】
非符号化データ量算出部３５５は、算出した非符号化データ量（Bit_BP）を目標符号量算出部１５３に供給する。
【０２６６】
目標符号量算出部１５３は、総データ量取得部１５２により取得された処理対象コードブロックに割り当てられた総データ量（Bit_CB）と、非符号化データ量算出部３５５により算出された非符号化データ量（Bit_BP）とに基づいて、目標符号量（Bit_N'）を算出する。目標符号量算出部１５３は、算出した目標符号量（Bit_N'）を出力制御部３５６に供給する。
【０２６７】
出力制御部３５６は、符号化ビットプレーン数取得部３５１により取得された符号化ビットプレーン数Ｎ、符号量算出部３５４により算出された符号量（Bit_N）、および、目標符号量算出部１５３により算出された目標符号量（Bit_N'）に基づいて、レート制御を行いながら、バッファ３５３に蓄積されている符号化データおよび非符号化データを読み出す。
【０２６８】
例えば、出力制御部３５６は、符号量（Bit_N）と目標符号量（Bit_N'）とを比較し、符号量（Bit_N）が目標符号量（Bit_N'）以下の場合、バッファ３５３に蓄積されている全てのデータを読み出し、コードストリーム生成部３５７に供給する。
【０２６９】
また、出力制御部３５６は、例えば、符号量（Bit_N）が目標符号量（Bit_N'）より大きい場合、符号量が目標符号量（Bit_N'）以下となるように、バッファ３５３から読み出す符号化データの数（符号化ビットプレーン数Ｎ’）を決定する。出力制御部３５６は、バッファ３５３に蓄積されている符号化データの内、上位ビット側のＮ’個の符号化データ（１番目乃至Ｎ’番目の符号化データ）を読み出し、コードストリーム生成部３５７に供給する。その後、出力制御部３５６は、バッファ３５３に蓄積されている非符号化データを全て読み出し、コードストリーム生成部３５７に供給する。
【０２７０】
以上のように、出力制御部３５６は、バッファ３５３から読み出す符号化データの数を制御することにより、レート制御を行う。
【０２７１】
出力制御部３５６は、また、バッファ３５３から読み出した符号化データの数である符号化ビットプレーン数Ｎ’を埋め込み部１１１に供給する。例えば、符号量（Bit_N）が目標符号量（Bit_N'）以下の場合、符号化ビットプレーン数Ｎ’は、符号化ビットプレーン数Ｎと等しい。
【０２７２】
コードストリーム生成部３５７は、出力制御部３５６から供給される符号化データおよび非符号化データを取得し、合成部１１０の場合と同様に、これらの符号化データおよび非符号化データを合成し、ヘッダ等を付加して１本のコードストリームを生成し、それを埋め込み部１１１に供給する。
【０２７３】
埋め込み部１１１は、コードストリーム生成部３５７から供給されるコードストリームの所定の位置に出力制御部３５６から供給される符号化ビットプレーン数Ｎ’を示す情報を埋め込む。
【０２７４】
このようにレート制御部３０９は、レート制御部１０９の場合と同様に、下位ビット側の符号化データを優先的に削除することによりレート制御を行うことができる。つまり、レート制御部３０９は、情報の欠損がない非符号化データを削除せずにレート制御を行うことができるので、画質の劣化を抑制しながらレート制御を行うことができる。また、レート制御部３０９は、容易に目標符号量を算出し、その目標符号量を用いて符号化データを削除するか否かを制御するのみで容易に適切なレート制御を実現することができる。
【０２７５】
［符号化処理の流れ］
次に、図２６のフローチャートを参照して、エンコーダ３００による符号化処理の流れの例を説明する。動画像データを符号化するエンコーダ３００は、以下に説明する符号化処理を動画像の各フレームについて実行する。
【０２７６】
符号化処理が開始されると、ステップＳ３０１乃至ステップＳ３０５の各処理が、図１４のステップＳ１０１乃至ステップＳ１０５の各処理と同様に行われ、処理対象コードブロックがビットプレーンに展開される。
【０２７７】
ステップＳ３０６において、符号化部１０８は、Ｎ番目の位より上位のビットプレーンを符号化する。
【０２７８】
ステップＳ３０７において、選択部３０７は、選択処理を行い、Ｎ番目の位より上位について、ステップＳ３０６において生成された符号化データを選択し、（Ｎ＋１）番目の位より下位について、ステップＳ３０５において展開されたビットプレーン（非符号化データ）を選択する。
【０２７９】
ステップＳ３０８において、レート制御部３０９は、レート制御を行い、必要に応じて符号化データを削除する。
【０２８０】
ステップＳ３０９において、ビットプレーン展開部１０５は、全てのコードブロックを処理したか否かを判定する。全てのコードブロックを処理していないと判定した場合、ビットプレーン展開部１０５は、処理をステップＳ３１０に進め、処理対象を次のコードブロックに移し、処理をステップＳ３０５に戻し、それ以降の処理を繰り返す。
【０２８１】
ステップＳ３０５乃至ステップＳ３１０の処理が繰り返し実行され、ステップＳ３０９において全てのコードブロックが処理されたと判定された場合、符号化処理が終了される。
【０２８２】
なお、上述した各処理は、矛盾が生じない限り、適宜、順序を変えて実行されたり、並列に実行されたりしてもよい。例えば、ステップＳ３０６およびステップＳ３０７の各処理は、互いに並行して実行されるようにしてもよい。
【０２８３】
［選択処理の流れ］
次に、図２７のフローチャートを参照して、図２６のステップＳ３０７において実行される選択処理の流れの例について説明する。
【０２８４】
選択処理が開始されると、符号化ビットプレーン数取得部１３１は、ステップＳ３３１において、符号化ビットプレーン数Ｎを取得する。
【０２８５】
ステップＳ３３２において、ビットプレーン選択部３３２は、符号化部１０８およびビットプレーン展開部１０５から供給されるビットプレーン（符号化データ若しくは非符号化データ）の取得を開始する。
【０２８６】
ステップＳ３３３において、ビットプレーン選択部３３２は、１番目乃至Ｎ番目のビットプレーンについて、符号化データを選択する。
【０２８７】
ステップＳ３３４において、ビットプレーン選択部３３２は、図２６のステップＳ３０６において実行される符号化処理を終了させる。
【０２８８】
ステップＳ３３５において、ビットプレーン選択部３３２は、（Ｎ＋１）番目以降のビットプレーンについて、非符号化データを選択する。
【０２８９】
以上の処理が終了すると、ビットプレーン選択部３３２は、選択処理を終了し、処理を図２６のステップＳ３０７に戻し、ステップＳ３０８以降の処理を実行させる。
【０２９０】
［レート制御処理の流れ］
次に、図２８のフローチャートを参照して、図２６のステップＳ３０８において実行されるレート制御処理の流れの例を説明する。
【０２９１】
レート制御処理が開始されると、ステップＳ３５１において、符号化ビットプレーン数取得部３５１は、符号化ビットプレーン数Ｎを取得する。ステップＳ３５２において、総データ量取得部１５２は、処理対象コードブロックに割り当てられた総データ量（Bit_CB）を取得する。
【０２９２】
ステップＳ３５３において、バッファ３５３は、選択部３０７から供給される符号化データを記憶する。ステップＳ３５４において、バッファ３５３は、選択部３０７から供給される非符号化データを記憶する。
【０２９３】
ステップＳ３５５において、符号量算出部３５４は、ステップＳ３５３において記憶したＮ個の符号化データの符号量（Bit_N）を算出する。ステップＳ３５６において、非符号化データ量算出部３５５は、ステップＳ３５４において記憶した非符号化データのデータ量である非符号化データ量（Bit_BP）を算出する。ステップＳ３５７において、目標符号量算出部１５３は、ステップＳ３５２において取得した総データ量（Bit_CB）から非符号化データ量（Bit_BP）を減算し、目標符号量（Bit_N'）を算出する。
【０２９４】
ステップＳ３５８において、出力制御部３５６は、ステップＳ３５５において算出された符号量（Bit_N）やステップＳ３５７において算出された目標符号量（Bit_N'）等に基づいて、符号化ビットプレーン数Ｎ’を決定する。
【０２９５】
ステップＳ３５９において、出力制御部３５６は、バッファ３５３に蓄積されている符号化データの中から、ステップＳ３５８において決定された符号化ビットプレーン数Ｎ’分の符号化データを選択して読み出す。ステップＳ３６０において、出力制御部３５６は、バッファ３５３に蓄積されている非符号化データを全て選択して読み出す。
【０２９６】
ステップＳ３６１において、コードストリーム生成部３５７は、ステップＳ３５９において選択した符号化データ、および、ステップＳ３６０において選択した非符号化データを合成し、コードストリームを生成する。
【０２９７】
ステップＳ３６２において、埋め込み部１１１は、ステップＳ３６１において生成されたコードストリームの所定の位置に、ステップＳ３５８において決定された符号化ビットプレーン数Ｎ’を埋め込む。
【０２９８】
ステップＳ３６２の処理が終了すると、埋め込み部１１１は、レート制御処理を終了し、図２６のステップＳ３０８に処理を戻し、ステップＳ３０９以降の処理を実行させる。
【０２９９】
以上のような各種処理を行うことにより、エンコーダ３００は、エンコーダ１００の場合と同様に、処理時間の増大や画質の劣化を抑制しながら、適切なレート制御を行うことができる。したがって、エンコーダ３００は、非可逆符号化の場合であっても、適切なレート制御を実現し、負荷を低減させることができる。
【０３００】
［複数コンポーネント］
なお、画像が複数のコンポーネントから構成されるようにしてもよい。その場合、例えば、以上に説明したレート制御を行う際に、コンポーネント毎に走査するようにしてもよい。また、例えば、第１の実施の形態や第２の実施の形態の場合、レート制御を行う際に、図２９に示されるように、全てのコンポーネントを通して走査するようにしてもよい。図２９は、各ビット位置を、Ｙ成分、Cb成分、およびCr成分の全てのコンポーネントに渡って走査する場合の例を示す図である。
【０３０１】
図２９の例の場合、ゼロビットプレーンを除いて、MSBからLSBに向かって、Y、Cb、Crの順に、同一ビットプレーンに位置する符号化パスから順に、ビットプレーン単位にエンコードが進められ、発生符号量の累積カウントが行われている。そして、その累積の結果、あるＸビットプレーンの位置に来た時の累積ビット数が目標符号量（Bit_N'）に十分近くなったと判断した際に、累積カウント動作が中止される。
【０３０２】
第３の実施の形態の場合、図３０に示される様に、ビットプレーン毎にLSBからMSBに向かう順に符号化データが切り捨てられ、データ量が目標量に達した時点で切り捨て制御が中止されるようにしてもよい。
【０３０３】
以上に説明したエンコーダ１００、デコーダ２００、およびエンコーダ３００は、上述した以外の構成を含むようにしてももちろんよい。また、１つの装置としてだけでなく、複数の装置よりなるシステムとして構成されるようにしてもよい。例えば、デジタルシネマ用編集装置、アーカイブシステム、画像データベース、医用画像の記録システム、ネットワークサーバ、ノンリニア編集装置、PC上のオーサリング・ツールまたはそのソフトウェア・モジュール等として構成されるようにしてもよい。
【０３０４】
＜４．第４の実施の形態＞
［パーソナルコンピュータ］
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、図３１に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
【０３０５】
図３１において、パーソナルコンピュータ４００のCPU（Central Processing Unit）４０１は、ROM（Read Only Memory）４０２に記憶されているプログラム、または記憶部４１３からRAM（Random Access Memory）４０３にロードされたプログラムに従って各種の処理を実行する。RAM４０３にはまた、CPU４０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０３０６】
CPU４０１、ROM４０２、およびRAM４０３は、バス４０４を介して相互に接続されている。このバス４０４にはまた、入出力インタフェース４１０も接続されている。
【０３０７】
入出力インタフェース４１０には、キーボード、マウスなどよりなる入力部４１１、CRT（Cathode Ray Tube）ディスプレイやLCD（Liquid Crystal Display）等のディスプレイ、並びにスピーカなどよりなる出力部４１２、フラッシュメモリ等SSD（Solid State Drive）やハードディスクなどよりなる記憶部４１３、有線LAN（Local Area Network）や無線LANのインタフェースやモデムなどよりなる通信部４１４が接続されている。通信部４１４は、インターネットを含むネットワークを介しての通信処理を行う。
【０３０８】
入出力インタフェース４１０にはまた、必要に応じてドライブ４１５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア４２１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部４１３にインストールされる。
【０３０９】
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０３１０】
この記録媒体は、例えば、図３１に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disc - Read Only Memory）,DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini Disc）を含む）、若しくは半導体メモリなどよりなるリムーバブルメディア４２１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM４０２や、記憶部４１３に含まれるハードディスクなどにより構成される。
【０３１１】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０３１２】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０３１３】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表すものである。
【０３１４】
また、以上において、１つの装置（または処理部）として説明した構成が、複数の装置（または処理部）として構成されるようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成が、まとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成が付加されるようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部が他の装置（または他の処理部）の構成に含まれるようにしてもよい。つまり、本開示の実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【０３１５】
例えば、図１のレート制御部１０９、図１９のビットプレーン合成部２０４、および図２３のレート制御部３０９を独立した装置としてもよい。
【符号の説明】
【０３１６】
１００  エンコーダ，  １０６  非符号化データ量算出部，  １０７  選択部，  １０８  符号化部，  １０９  レート制御部，  １１０  合成部，  １１１  埋め込み部，  １３１  符号化ビットプレーン数取得部，  １３２  処理選択部，  １５１  符号量算出部，  １５２  総データ量取得部，  １５３  目標符号量算出部，  １５４  出力制御部，  ２００  デコーダ，  ２０１  解読部，  ２０２  処理選択部，  ２０３  復号部，  ２０４  ビットプレーン合成部，  ２２１  ビットプレーンバッファ，  ２２２  ビットプレーン数カウント部，  ２２３  挿入ビットプレーン決定部，  ２２４  ビットプレーン挿入部，  ２２５  読み出し制御部，  ３００  エンコーダ，  ３０７  選択部，  ３０９  レート制御部，  ３３２  ビットプレーン選択部，  ３５１  符号化ビットプレーン数取得部，  ３５３  バッファ，  ３５４  符号量算出部，  ３５５  非符号化データ量算出部，  ３５６  出力制御部，  ３５７  コードストリーム生成部
【図１】
0005817125.tif 000002
【図２】
0005817125.tif 000003
【図３】
0005817125.tif 000004
【図４】
0005817125.tif 000005
【図５】
0005817125.tif 000006
【図６】
0005817125.tif 000007
【図７】
0005817125.tif 000008
【図８】
0005817125.tif 000009
【図９】
0005817125.tif 000010
【図１０】
0005817125.tif 000011
【図１１】
0005817125.tif 000012
【図１２】
0005817125.tif 000013
【図１３】
0005817125.tif 000014
【図１４】
0005817125.tif 000015
【図１５】
0005817125.tif 000016
【図１６】
0005817125.tif 000017
【図１７】
0005817125.tif 000018
【図１８】
0005817125.tif 000019
【図１９】
0005817125.tif 000020
【図２０】
0005817125.tif 000021
【図２１】
0005817125.tif 000022
【図２２】
0005817125.tif 000023
【図２３】
0005817125.tif 000024
【図２４】
0005817125.tif 000025
【図２５】
0005817125.tif 000026
【図２６】
0005817125.tif 000027
【図２７】
0005817125.tif 000028
【図２８】
0005817125.tif 000029
【図２９】
0005817125.tif 000030
【図３０】
0005817125.tif 000031
【図３１】
0005817125.tif 000032