(57)【要約】【課題】  異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号すること。【解決手段】  着目ブロックの符号化ストリームの先頭位置として指定された位置から可変長符号ストリームを読み出して復号する。着目ブロックの可変長符号ストリームの復号が完了すると、着目ブロックの準固定長データストリームのデータ長を計算する。準固定長データストリームの先頭位置からデータ長のぶんだけ後方の位置を、着目ブロックの次に復号する次ブロックの符号化ストリームの先頭位置として指定し、次ブロックの可変長符号ストリームの復号を開始させる。【選択図】  図１
2012235452.tif 000002
【特許請求の範囲】
【請求項１】
符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置であって、
前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第１の復号手段と、
前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第２の復号手段と、
前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定手段と、
前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第１の復号手段に前記次可変長符号ストリームの復号を開始させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記決定手段は、
前記着目可変長符号ストリームの復号が完了すると、該復号により得られる係数の個数と、該係数のうち有意係数の個数と、各準固定長データのビット数と、を用いて前記着目準固定長データストリームのデータ長を決定する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記決定手段は、前記着目可変長符号ストリームの復号により得られる係数の個数をｍ、該係数のうち有意係数の個数をｎ、各準固定長データのビット数をModelbits (0≦Modelbits≦15)とすると、前記着目準固定長データストリームのデータ長Ｌを、以下の計算式
Ｌ＝０                        …  Modelbits＝０
Ｌ＝Modelbits×ｍ＋（ｍ−ｎ）  …  Modelbits≠０
を計算することで求めることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記第２の復号手段は並列に動作可能な複数の復号部から成り、
前記第１の復号手段が１つの可変長符号ストリームの復号を完了するたびに、非動作中の復号部のうちの１つが、該可変長符号ストリームに隣接して後続する準固定長データストリームを、前記入力符号化ストリームから読み出して復号することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記第１の復号手段と前記第２の復号手段とは並列動作可能であることを特徴とする請求項２乃至４の何れか１項に記載の画像処理装置。
【請求項６】
前記可変長符号ストリームは、ブロックを構成する変換係数予測誤差毎の上位データであり、前記準固定長データストリームは、ブロックを構成する変換係数予測誤差毎の下位データであることを特徴とする請求項２乃至４の何れか１項に記載の画像処理装置。
【請求項７】
符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置が行う画像処理方法であって、
前記画像処理装置の第１の復号手段が、前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第１の復号工程と、
前記画像処理装置の第２の復号手段が、前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第２の復号工程と、
前記画像処理装置の決定手段が、前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定工程と、
前記画像処理装置の制御手段が、前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第１の復号手段に前記次可変長符号ストリームの復号を開始させる制御工程と
を備えることを特徴とする画像処理方法。
【請求項８】
コンピュータを、請求項１乃至６の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の復号技術に関するものである。
【背景技術】
【０００２】
近年の半導体技術の進歩は目覚ましく、多くのデジタルカメラで高精細な画像を撮影することが可能となり、これに伴い、撮影した画像のデータ量も増大してきている。デジタルカメラで撮影した画像の多くは、JPEG等の符号化方式で圧縮符号化後、記録メディアに記録される。そのため、撮影画像をデジタルカメラ本体のディスプレイなどで確認するためには、符号化された画像データを所定の手順で復号する必要がある。
【０００３】
静止画の符号化方式はJPEG 符号化方式をはじめ、種々存在する。JPEG符号化では、画像データは予め定められたサイズの複数のブロックに分割される。このブロックを符号化の処理単位とし、ブロックを構成するデータには直交変換が施される。この直交変換後の変換係数には量子化、係数予測が順に施される。さらに、係数予測後のデータにはスキャン変換が施されることで、２次元データから有意係数（非零データ：レベル、Level）と非有意係数（零データ：ラン、Run）の零ランレングスとからなる１次元データへと変換される。このようにして並びかえられた１次元データからは、複数のシンタックス要素が生成され、各シンタックス要素がエントロピー符号化される。最後に、エントロピー符号化によって生成された符号を、所定の順序で連結することで符号化ストリームが生成される。
【０００４】
近年、国際標準化されたJPEG XR符号化方式（以降は、JPEG XRと呼称する）の符号化では、図４に示すように、係数予測後の予測誤差（変換係数予測誤差）は、Signビット（フラグ）と絶対値に分割される。この絶対値はさらに上位データと下位データに分割され、それぞれが別々の方法で符号化される。
【０００５】
上位データについては、適応スキャン変換を施してからRun／Levelシンタックス要素を生成し、その後、各シンタックス要素を可変長符号化し、符号化ストリームとして連結する。下位データには、適応固定長符号化がなされる。JPEG XRにおいて、直交変換後の変換係数は、DC係数、Low-pass(LP)係数、High-pass(HP)係数で構成されている。DC係数若しくはlowpass(LP)係数の下位データの適応固定長符号化部分はFLC refinementと呼称され、highpass(HP)係数の下位データの適応固定長符号化部分はflexbitsと呼称される。ここでは、FLC refinement及びflexbitsの両方を準固定長データとする。下位データは、準固定長データとして符号化ストリームに連結される。
【０００６】
そのため、JPEG XRの復号においては、まずは可変長符号を復号し、そして準固定長データも復号しなければ、１ブロック分の変換係数予測誤差を得ることができない。また、可変長復号が完了するまで準固定長データの符号化ストリーム中の開始位置が特定できず、加えて準固定長データのデータ長（図４におけるModelbits）も可変長復号結果に応じて変化するため、可変長符号と準固定長データとを並列に復号することが困難であった。上記JPEG XRのような、複数の符号化方法が混在する符号化ストリームを、高速に復号する技術として、特許文献１、特許文献２が挙げられる。
【０００７】
特許文献１に記載の復号装置は、複数の可変長符号復号部と、単一のFlexbits復号部を有し、可変長符号とFlexbitsとを並列に復号することで、復号処理を高速化している。しかしながら、JPEG XRでは、可変長符号化におけるシンタックス要素が多数存在するため、可変長符号復号部（以降は可変長復号部と呼称する）の回路規模は大きくなる。この可変長復号部を複数持つことは、その処理性能の向上と同時に、非常に大きな回路規模の増加をもたらすこととなる。
【０００８】
また、特許文献２に記載の復号装置は、可変長復号部とFlexbits復号部をそれぞれ１つ有する。さらに符号化ストリーム中に含まれるタイルヘッダのスタートコードを識別し、この情報から可変長符号の開始位置とFlexbitsの開始位置を特定し、両者を並列に復号することで、復号処理を高速化している。しかしながらこれは、JPEG XRにおいて、２種類存在する符号化モード（Spatial : 空間モードとFrequency : 周波数モード）のうち、周波数モードで符号化された符号化ストリームの復号を前提としている。空間モードで符号化された符号化ストリームの場合、可変長符号とFlexbitsのそれぞれの開始位置を識別するためのヘッダが存在しないため、各符号の開始位置を特定することができない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開2010-093522号公報
【特許文献２】特開2009-273106号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以上のことから、従来技術をJPEG XR符号化ストリームの復号に適用した場合、可変長符号とFlexbitsの並列復号処理は可能となる。しかし、大きな回路規模の増加をもたらしてしまうか、或いは特定の符号化モードに限定されてしまうという問題がある。
【００１１】
本発明はこのような問題に鑑みてなされたものであり、異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号する為の技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の目的を達成するために、例えば、本発明の画像処理装置は、符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置であって、前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第１の復号手段と、前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第２の復号手段と、前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定手段と、前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第１の復号手段に前記次可変長符号ストリームの復号を開始させる制御手段とを備えることを特徴とする。
【発明の効果】
【００１３】
本発明の構成により、異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号することができる。
【図面の簡単な説明】
【００１４】
【図１】第1の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図２】第1の実施形態に係る処理のタイミングチャート。
【図３】第1の実施形態の変形例に係る処理のタイミングチャート。
【図４】係数予測誤差の構成例を示す図。
【図５】spatial modeにおける符号化ストリームの構成を示す図。
【図６】JPEG XRにおけるブロックの構成の一例を示す図。
【図７】適応スキャン変換のスキャン変換順序(ScanOrder)の一例を示す図。
【図８】準固定長データストリームを示す図。
【図９】第2の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図１０】第2の実施形態に係る処理のタイミングチャート。
【図１１】第3の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図１２】第4の実施形態に係る復号処理のフローチャート。
【図１３】第4の実施形態に係る処理のタイミングチャート。
【図１４】デジタルカメラの構成例を示す図。
【図１５】復号部１４１３の機能構成例を示すブロック図。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の一つである。
【００１６】
［各実施形態に共通の構成について］
以下の各実施形態が産業上利用され得る形態として、デジタルカメラやデジタルカムコーダが挙げられる。然るに、以下の各実施形態では、図１４に示す構成を有するデジタルカメラ用LSIに内蔵される画像復号装置（画像処理装置）を例にとり説明する。
【００１７】
被写体を含む外界からの光はレンズ１４２を介して撮像素子１４３に結像される。撮像素子１４３は、受光した光の強度に応じた電気信号（画像信号）を現像処理部１４１１に対して送出する。
【００１８】
現像処理部１４１１は、この画像信号に対して画像補間処理や色変換処理等の周知の画像処理を施し、画像データとして符号化部１４１２に送出する。
【００１９】
符号化部１４１２は、この画像データを符号化して符号化ストリームを生成する。そして符号化部１４１２は、この生成した符号化ストリームを、内部バス１４１８を介してメモり制御部１４１６もしくは外部記憶インターフェース部１４１７に対して送出する。
【００２０】
メモり制御部１４１６は、主記憶部１４５に対するデータの読み書きを行うものであり、符号化部１４１２から符号化ストリームを受けると、この符号化ストリームを主記憶部１４５に書き込む。
【００２１】
外部記憶インターフェース部１４１７は、外部記憶部１４６との間のインターフェースとして機能するものであり、符号化部１４１２から符号化ストリームを受けると、この符号化ストリームを外部記憶部１４６に書き込む。
【００２２】
ここで、主記憶部１４５に書き込んだ符号化ストリームを復号して画像表示部１４４に表示する旨の指示が不図示の操作部から入力されたとする。この場合、メモり制御部１４１６は、指定された符号化ストリームを読み出し、内部バス１４１８を介して復号部１４１３に転送する。
【００２３】
一方、外部記憶部１４６に書き込んだ符号化ストリームを復号して画像表示部１４４に表示する旨の指示が不図示の操作部から入力されたとする。この場合、外部記憶インターフェース部１４１７は、指定された符号化ストリームを読み出し、内部バス１４１８を介して復号部１４１３に転送する。
【００２４】
復号部１４１３はメモり制御部１４１６もしくは外部記憶インターフェース部１４１７から受けた符号化ストリームを復号し、復号画像を画像表示制御部１４１４に対して送出する。
【００２５】
画像表示制御部１４１４は、復号部１４１３から受けた復号画像をアナログ信号に変換し、変換したアナログ信号を画像表示部１４４に送出する。画像表示部１４４は液晶画面などにより構成されており、画像表示制御部１４１４から受けたアナログ信号に応じた画像、即ち本装置において復号された画像を表示する。
【００２６】
上記の各部の動作制御はメインＣＰＵ１４１５によって行われる。もちろん、上記の各部のうち一部の機能部による処理（もしくはその一部）をメインＣＰＵ１４１５が担当するようにしてもよい。
【００２７】
次に、復号部１４１３の機能構成例について、図１５のブロック図を用いて説明する。上記の通り、復号部１４１３には内部バス１４１８を介して符号化ストリームが入力される。この符号化ストリームは先ず、エントロピー復号部１５１に入力される。
【００２８】
エントロピー復号部１５１は、この入力された符号化ストリームをエントロピー復号し、エントロピー復号の結果として得られる変換係数予測誤差を逆スキャン変換部１５２に入力する。
【００２９】
逆スキャン変換部１５２は、エントロピー復号部１５１から入力された変換係数予測誤差に対して周知の逆スキャン変換を行い、この変換した結果を、変換係数予測誤差として係数予測復号部１５３に入力する。
【００３０】
係数予測復号部１５３は、逆スキャン変換部１５２から入力された変換係数予測誤差に予測誤差を加味して変換量子化係数を生成し、生成した変換量子化係数を逆量子化部１５４に入力する。
【００３１】
逆量子化部１５４は、係数予測復号部１５３から入力された変換量子化係数に対して逆量子化を行い、逆量子化の結果として得られる変換係数を、逆直交変換部１５５に入力する。
【００３２】
逆直交変換部１５５は、逆量子化部１５４から入力された変換係数に対して逆直交変換を行うことで画像を生成する。このように、復号部１４１３を構成する各部により、符号化ストリームから画像を復号することができる。
【００３３】
ここで、図１５において、係数予測が行われない場合、エントロピー復号部１５１の出力は変換量子化係数に相当する。さらに、逆量子化も行われない場合、エントロピー復号部１５１の出力は変換係数に相当する。すなわち、エントロピー復号部１５１は後段の処理に対応したデータを復号する。
【００３４】
以下の各実施形態では、このエントロピー復号部１５１に適用可能な画像処理装置について説明する。また、以下の各実施形態では、主記憶部１４５、外部記憶部１４６、符号化部１４１２、等から得られる符号化ストリームを復号する場合について説明する。
【００３５】
［第１の実施形態］
先ず、本実施形態に係る画像処理装置の機能構成例について、図１のブロック図を用いて説明する。
【００３６】
読み出し部１０１には、ＪＰＥＧ  ＸＲ符号化方式に従って符号化された入力符号化ストリームが入力される。読み出し部１０１は、着目ブロックの符号化ストリームの先頭位置として指定された入力符号化ストリーム中の位置から、変換係数予測誤差毎の上位データである可変長符号ストリームを読み出して可変長復号部１０２に出力する（読み出し部  出力１）。そして読み出し部１０１は着目ブロックの可変長符号ストリームの復号が完了すると、可変長符号ストリームに後続して隣接する、変換係数予測誤差毎の下位データである準固定長データストリームを入力符号化ストリームから読み出す。そして読み出し部１０１は、この読み出した準固定長データストリームを準固定長データ復号部１０３に出力する（読み出し部  出力２）。
【００３７】
なお、読み出し部１０１は、リードポート、ライトポートを１つずつ有する構成を有してもよいし、２つずつ有する構成を有してもよい。即ち、読み出し部１０１は、上記のように、ブロックごとに可変長符号ストリーム、準固定長データストリームを読み出して出力することができるのであれば、如何なる構成を採用してもよい。
【００３８】
可変長復号部１０２は、読み出し部１０１から送出された、着目ブロックの変換係数予測誤差毎の上位データ（図４における上位データ）である可変長符号ストリームを復号する（第１の復号）。そして可変長復号部１０２は、復号した変換係数予測誤差毎の上位データを出力すると共に、着目ブロックについて復号した変換係数予測誤差毎の上位データの符号長を読み出し部１０１に出力する。符号長は、該上位データを復号するたびに出力してもよいし、着目ブロックの全ての該上位データを復号し終わってからその合計符号長を出力してもよい。可変長復号部１０２は着目ブロックの可変長符号ストリームの復号が完了すると該復号により得られる該上位データの個数ｍ、該変換係数予測誤差の上位データのうち有意の上位データの個数ｎ（個数情報）を準固定長データストリーム長算出部１０４に出力する。
【００３９】
変換係数予測誤差の有意の上位データの個数の計数は、着目ブロックの全ての上位データを復号し終わってから計数してもよいし、有意の上位データが登場するたびに計数してもよい。また、可変長復号部１０２は、有意の上位データを復号すると、着目ブロックにおける該有意の上位データの位置情報を準固定長データ復号部１０３に出力する。ここで、着目ブロックの可変長符号ストリームの復号によって得られる該上位データの個数ｍが、既知あるいは固定の場合は、準固定長データ復号部１０３に出力しなくともよい。
【００４０】
準固定長データストリーム長算出部１０４は、可変長復号部１０２からの個数ｍ及び個数ｎ、そして１つの変換係数予測誤差の下位データのビット数Modelbits (0≦Modelbits≦15)（図４）を用いて以下の式を計算する。
【００４１】
Ｌ＝０                        …  Modelbits＝０
Ｌ＝Modelbits×ｍ＋（ｍ−ｎ）  …  Modelbits≠０
この計算式により、読み出し部１０１が準固定長データ復号部１０３に送出した、着目ブロックの準固定長データストリームのデータ長Ｌを計算することができる。そして準固定長データストリーム長算出部１０４は、この計算したデータ長（準固定長データストリーム長）Ｌを読み出し部１０１に対して出力する。
【００４２】
これにより読み出し部１０１は、着目ブロックの準固定長データストリームの先頭位置からデータ長Ｌのぶんだけ後方の位置を、着目ブロックの次に復号する次ブロックの符号化ストリームの先頭位置として指定することができる。然るに読み出し部１０１は、この指定位置から入力符号化ストリームを読み出し、可変長符号ストリームについては可変長復号部１０２に出力し、可変長復号部１０２に次ブロックの可変長符号ストリームの復号を開始させる。
【００４３】
次に、準固定長データ復号部１０３についての説明を行う。以下では一例として、入力符号化ストリームの構成が、spatial modeにおける符号化ストリームの構成である場合における準固定長データ復号部１０３の動作（第２の復号）について説明する。spatial modeにおける符号化ストリームの構成を図５に示す。
【００４４】
JPEG XRでは、画像を複数のタイル（Tile）に分割し、このタイルを複数のマクロブロック（MacroBlock : MB）に分割する。各MB（MB1,MB2,MB3,…）の符号化ストリームはさらに、画像を直交変換することで得られるDC成分、LP(Lowpass)成分、HP(Highpass)成分、のそれぞれの符号化ストリームから構成される。HP成分はブロック（Block1,Block2,Block3,…）単位の符号化ストリームから構成される。各ブロックの符号化ストリームは、上位データを可変長符号化した可変長符号群からなる可変長符号ストリームと、下位データ群（準固定長データ、Flexbits）の符号化ストリームから構成される。CBP(Coded Block Pattern)は、ブロック単位に上位データの有意係数の有無を判別するための情報である。１ブロックの上位データがすべて非有意係数の場合、そのブロックの可変長符号ストリームは存在しない。そのため、どのブロックの可変長符号ストリームが符号化ストリーム中に存在するかはCBPを基に判別される。
【００４５】
下位データの符号化ストリーム（準固定長データストリーム）は、準固定長データ（図５中の係数値）と、これに対応するSignビットと、が交互に連結される符号化ストリームの構成となっている。JPEG XRでは、有意な上位データに対しては、符号化した可変長データにSignビットをつけているため、非有意な上位データに対応する準固定長データにのみ、このSignビットがつく。
【００４６】
したがって、準固定長データ復号部１０３は、Modelbitsの値と上位データの有意係数位置情報に基づき、上位データが非有意である場合は、準固定長データとSignフラグの両方を復号する。上位データが有意である場合は、準固定長データのみを復号する。復号したデータ長はその都度、読み出し部１０１へと出力する。なお、図１に示した各部は、不図示の制御部によって制御される。
【００４７】
図１に示した各部の動作について、図２のタイミングチャートを例にとり説明する。
【００４８】
時刻Ｔ１において、読み出し部１０１はブロック＃１における可変長符号(VLC: Variable Length Code)＃１の読み出しを開始し、「読み出し部  出力１」として可変長復号部１０２に出力する。これにより可変長復号部１０２は、この可変長符号＃１の復号を開始する。
【００４９】
時刻Ｔ２において、可変長復号部１０２は、復号した上位データの出力を開始し、時刻Ｔ３の時点で可変長復号部１０２は、可変長符号＃１の全ての上位データの復号及び出力を完了する。また、時刻Ｔ３の時点で可変長復号部１０２は、可変長符号＃１の復号で得られた上位データの数及びそのうちの有意な上位データ（有意係数）の数を準固定長データストリーム長算出部１０４に対して出力する。そして準固定長データストリーム長算出部１０４は、上記の通り、ブロック＃１の準固定長データストリーム長Ｌを計算し、「ストリーム長算出部  出力」として読み出し部１０１に対して出力する。
【００５０】
時刻Ｔ４において、読み出し部１０１は、ブロック＃１における準固定長データ＃１の読み出しを開始し、「読み出し部  出力２」として準固定長データ復号部１０３に出力する。これにより準固定長データ復号部１０３は、この準固定長データ＃１の復号を開始する。また、読み出し部１０１は、ブロック＃１の準固定長データ＃１の先頭位置から準固定長データストリーム長Ｌのぶんだけ後方の位置を、ブロック＃２の可変長符号＃２の先頭位置として指定する。
【００５１】
そして時刻Ｔ５において読み出し部１０１は、この指定位置からブロック＃２の可変長符号＃２の読み出しを開始し、「読み出し部  出力１」として可変長復号部１０２に出力する。これにより可変長復号部１０２は、この可変長符号＃２の復号を開始する。
【００５２】
時刻Ｔ６において、準固定長データ復号部１０３は、復号した準固定長データ＃１の出力を開始する。時刻Ｔ７において、可変長復号部１０２は、復号した可変長符号＃２の上位データの出力を開始する。
【００５３】
そして時刻Ｔ７以降は、ブロック＃１の準固定長データ＃１と、ブロック＃２の可変長符号＃２とが並列に復号されるため、高速に復号を行うことができる。即ち、可変長復号部１０２と準固定長データ復号部１０３とは並列動作可能である。同様に、ブロック＃２の準固定長データ＃２と、ブロック＃３の可変長符号＃３とが並列に復号されるため、高速に復号を行うことができる。以降のブロックについても同様であるため、説明は省略する。
【００５４】
このように、上記の構成によれば、ブロック＃Ｎ（Ｎ番目のブロック）の準固定長データと、ブロック＃（Ｎ＋１）の可変長符号と、を並列に読み出して復号することが可能であるため、復号処理（エントロピー復号処理）を高速化することができる。
【００５５】
なお、図１の構成において、準固定長データ復号部１０３を実質的に停止させて、可変長符号ストリームのみを復号するようにしてもかまわない。可変長符号ストリームのみを復号する場合における、図１の各部の動作を、図３のタイミングチャートに示す。
【００５６】
図３のタイミングチャートでは、ブロック＃１における可変長符号＃１の復号が完了すると、準固定長データストリーム長算出部１０４は、ブロック＃１の準固定長データストリーム長Ｌを計算する。そして、読み出し部１０１は、ブロック＃１の準固定長データ＃１の先頭位置から準固定長データストリーム長Ｌのぶんだけ後方の位置を、ブロック＃２の可変長符号＃２の先頭位置として指定する。可変長復号部１０２は、この指定位置からブロック＃２の可変長符号＃２を復号する。即ち、この場合、読み出し部１０１は、ブロック＃１の可変長符号＃１の読み出し後、準固定長データ＃１の読み出しをスキップしてブロック＃２の可変長符号＃２を読み出すことになる。なお、読み出し部１０１は準固定長データを読み出して準固定長データ復号部１０３に送出するものの、準固定長データ復号部１０３は動作しない、という形態を採用してもよい。
【００５７】
また、以上の説明では、簡略化のため、スキャン変換順序が既知の場合（有意係数位置情報が速やかに得られる場合）を説明した。しかし、JPEG XRの符号化においては、係数（図４の上位データ）の符号化順序を、有意係数の発生頻度に依存して、適宜入れ替えている。すなわち、係数をスキャンする（並び替える）順序を、この発生頻度に応じて適応的に変化させ、符号化効率を上げる工夫をしている。この手法を、適応スキャンと呼んでいる。
【００５８】
然るに準固定長データ復号部１０３は、この適応スキャンに対応した復号を行う必要があるが、図２に示したタイミングと同一のタイミングで復号することが可能である。符号化時に行う、スキャン変換順序の決定方法はJPEG XRの勧告書に詳細に記載されているため、ここでは説明を省略し、ブロック毎のスキャン変換順序の情報に基づき、どのように準固定長データ復号部１０３で復号を行うのかについて説明する。
【００５９】
JPEG XRにおけるブロックの構成の一例を図６（ａ）に示す。図６（ａ）に示す如く、１つのブロックは１５個の変換係数から構成される。有意係数の位置情報は、図６（ａ）のブロックにおいて、何番目のアドレスに有意係数が存在するかを示す情報である。有意係数の位置情報は、可変長復号部１０２による復号結果である上位データに対して実施される適応スキャン変換（不図示）の順序を用いて生成する。
【００６０】
適応スキャン変換のスキャン変換順序(ScanOrder)の一例を図７に示す。復号におけるスキャン変換順序は、係数復号順序情報に相当する。また、可変長復号によって図６（ｂ）に示す復号結果が得られた場合に着目する。図６（ｂ）において、有意係数のアドレスに１、非有意係数のアドレスに０を割り当てたものを図６（ｃ）に示す。図６（ｃ）をさらに図７のスキャン変換順序に基づいて並び替えることで、図６（ｄ）に示す有意係数位置情報を生成する。
【００６１】
一連の処理は後続するブロック＃（Ｎ＋１）の可変長符号の復号とも並行して実施可能である。すなわち、復号済みの上位データから、順次有意・非有意の判定をし、スキャン変換順序を考慮したアドレスに１，０を設定することが可能である。ここで、有意係数の位置情報を生成する機能は、可変長復号部１０２の外部に独立して設けてもよく、準固定長データ復号部１０３に設けてもよい。
【００６２】
準固定長データ復号部１０３は、Modelbitsの値と、有意係数の位置情報に基づき、準固定長データを復号する。図６（ｄ）に示す有意係数の位置情報を参照した場合、図８に示す準固定長データストリームを復号することとなる。図６（ｄ）において、上位データが非有意であるアドレス（アドレス２、７、８、１０、１１、１３、１４、１５）については、Signビット有りの準固定長データを復号する。上位データが有意であるその他のアドレスについては、Signビット無しの準固定長データを復号する。
【００６３】
このような処理により、第１の実施形態は、適応スキャン変換の有無にかかわらず適用可能であることは明らかである。また、ブロックの復号完了から有意係数の位置情報の生成・出力までに数サイクルを要したとしても、第１の実施形態の効果がなんら損なわれることがないことも、また明らかである。
【００６４】
また、第１の実施形態においては、準固定長データストリーム長算出部１０４を独立して設けている。しかしながら、準固定長データストリーム長算出部１０４と同等の機能を可変長復号部１０２や準固定長データ復号部１０３、読み出し部１０１に設けてもよい。
【００６５】
なお、図１に示した構成は、HP(flexbitsを含む)のみの復号や、DC/LP(FLC refinementを含む)のみの復号に適用しても良い。いうまでもないが、この構成は、この両方の復号に適用してもかまわない。
【００６６】
［第２の実施形態］
本実施形態に係る画像処理装置の機能構成例について、図９のブロック図を用いて説明する。図９に示す如く、本実施形態に係る画像処理装置は、準固定長データストリームを復号する復号部がｋ（≧２）個である点、変換係数予測誤差の有意の上位データの位置情報を記憶するための保持部を有する点が、第１の実施形態に係る画像処理装置と異なる。また、準固定長データストリームを復号する復号部がｋ個であるが故に、読み出し部９０１は、どの復号部に準固定長データストリームを送出するのかの切り替え制御を行うことになる。
【００６７】
可変長復号部９０２、準固定長データストリーム長算出部９０４のそれぞれは、可変長復号部１０２、準固定長データストリーム長算出部１０４と同様の動作を行うものであるため、説明は省略する。
【００６８】
有意係数位置情報保持部９０５は、可変長復号部９０２が１ブロック分の復号を完了すると、このブロック内における変換係数予測誤差の有意の上位データの位置を示す位置情報を格納するためのものである。この有意係数位置情報保持部９０５は、ｋブロック分の位置情報が格納可能な容量を有しているものとする。
【００６９】
準固定長データ復号部９０３は、準固定長データ復号部１〜準固定長データ復号部ｋからなり、準固定長データ復号部１〜準固定長データ復号部ｋはそれぞれ、準固定長データ復号部１０３と同様の動作を行うもので、何れも並列動作可能である。
【００７０】
例えば、ブロック＃Ｎの準固定長データストリームと、ブロック＃（Ｎ＋１）の可変長符号ストリームとを並列に復号している場合に可変長復号が先に終了したとする。このような場合に、本実施形態によれば、ブロック＃Ｎの準固定長データストリームの復号完了を待たずに、ブロック＃（Ｎ＋１）の準固定長データストリームの復号を開始する。
【００７１】
以下ではｋ＝２の場合、即ち準固定長データ復号部９０３が準固定長データ復号部１と準固定長データ復号部２とから成る場合に、図９の各部の動作について、図１０のタイミングチャートを用いて説明する。なお、以下では、第１の実施形態と異なる点について重点的に説明し、同じ点については説明は省略する。
【００７２】
時刻Ｔ１の時点で可変長復号部９０２はブロック＃１の可変長符号＃１を復号して出力完了しており、準固定長データストリーム長算出部９０４はブロック＃１の準固定長データストリーム＃１のデータ長Ｌを計算している。そして時刻Ｔ１にて読み出し部９０１は準固定長データ復号部１に対する準固定長データストリーム＃１の出力を開始する。
【００７３】
時刻Ｔ２にて読み出し部９０１は、可変長復号部９０２へのブロック＃２の可変長符号＃２の出力を開始する。時刻Ｔ１にて準固定長データ復号部１が復号を開始した準固定長データストリーム＃１の復号結果は時刻Ｔ３から出力される。
【００７４】
時刻Ｔ４から可変長復号部９０２による可変長符号＃２の復号結果の出力が開始され、時刻Ｔ５にてこの出力は完了する。この時点で、準固定長データストリーム＃１の復号及び出力は完了していない。
【００７５】
そこで読み出し部９０１は、時刻Ｔ６から、準固定長データストリーム＃２を、非動作中の復号部である準固定長データ復号部２に対して出力する。そして時刻Ｔ７にて準固定長データ復号部２は、準固定長データストリーム＃２の復号結果の出力を開始する。また、ブロック＃１，＃２の準固定長データストリームの復号と並行して、ブロック＃３の可変長符号も復号される。
【００７６】
このように、ｋ＝２であれば、ブロック＃Ｎの準固定長データストリーム、ブロック＃（Ｎ＋１）の準固定長データストリーム、ブロック＃（Ｎ＋２）の可変長符号を並列に復号することができ、第１の実施形態よりもさらに処理性能を高速化することができる。
【００７７】
ここで、CBPによって各ブロックの可変長符号が存在しないことが明らかな場合、可変長復号部９０２の復号結果を待たずに、準固定長データの復号を開始することも可能である。可変長符号が存在しない場合、上位データの有意係数はすべて０であるので、準固定長データストリームのデータ長が算出可能となるからである。
【００７８】
なお、以上の説明が、ｋが任意の値であったとしても同様に適用することができることは、いうまでもない。また、有意係数位置情報保持部９０５を準固定長データ復号部１〜準固定長データ復号部ｋのそれぞれに組み込んでもよい。
【００７９】
［第３の実施形態］
本発明は、ＪＰＥＧ  ＸＲ符号化の符号化フォーマットに限られるものではない。本実施形態に係る画像処理装置の機能構成例について、図１１のブロック図を用いて説明する。本実施形態では、ＪＰＥＧ  ＸＲ符号化以外の符号化方式に従って生成された符号化ストリームを復号する。例えば、ブロック＃Ｎがすべて可変長符号化、続くブロック＃（Ｎ＋１）がすべて準固定長データとして符号化されている符号化ストリームの復号を行う。ここで準固定長データストリームのストリーム長（データ長）を計算するための情報（図１１の準固定長データストリーム長算出情報）は、可変長符号を復号することで得られるものとする。例えば、ブロック＃Ｎを復号することにより得られる準固定長データストリーム長算出情報は、これに続くブロック＃（Ｎ＋１）の準固定長データのデータ長を直接的に示すものであってもよい。何れにしろ、可変長符号データを復号した結果に基づいて、その可変長データに後続する準固定長データのデータ長を導き出せるような関係になっている符号化フォーマットに適用可能である。
【００８０】
読み出し部１１０１，可変長復号部１１０２はそれぞれ、読み出し部１０１、可変長復号部１０２と同様の動作を行うが、可変長復号部１１０２は、有意の変換係数予測誤差の個数、有意の変換係数予測誤差の位置、については出力しない。
【００８１】
準固定長データ復号部１１０３は準固定長データ復号部１０３と同様にして準固定長データストリームを復号するが、その際、有意の変換係数予測誤差の位置情報は使用しない。準固定長データストリーム長算出部１１０４は、準固定長データストリーム長算出部１０４と同様に動作し、個々の準固定長データストリーム長を算出する。
【００８２】
第３の実施形態では、可変長復号部１１０２、準固定長データ復号部１１０３の復号結果は、変換係数予測誤差であるとしているが、変換係数予測誤差である必要はない。後段の処理に応じた復号結果であればよい。また、準固定長データストリーム長算出情報が可変長復号部１１０２ではなく、不図示の外部から与えられる構成としてもよい。
【００８３】
以上の説明により、本実施形態によれば、準固定長データストリーム長が可変長符号の復号結果から決定される符号化ストリームの復号においても、ブロック＃Ｎの準固定長データと、ブロック＃（Ｎ＋１）の可変長符号とを並列に復号可能である。もちろん、この符号化ストリームは、ＪＰＥＧ  ＸＲ符号化以外の符号化方式に従って生成された符号化ストリームである。
【００８４】
処理のタイミングチャートは図２と同様である。いうまでもなく、準固定長データの個々のデータ長が一定の場合（固定長データの場合）にも、本実施形態では並列に復号可能である。
【００８５】
即ち、入力符号化ストリームが如何なる符号化方式で符号化されていたとしても、次のような入力符号化ストリームであれば、上述した効率の良いエントロピー復号処理を行うことができる。即ち、少なくとも一部のストリーム配列において、可変長符号ストリームに後続して準固定長データストリームが並んでいる入力符号化ストリームであれば、上述した効率の良いエントロピー復号処理を行うことができる。若しくは符号化データ配列の少なくとも一部において少なくとも一部のストリーム配列において、可変長符号ストリームと準固定長データストリームが交互に並んでいる入力符号化ストリームであれば上述した効率の良いエントロピー復号処理を行うことができる。
【００８６】
このような入力符号化ストリームに対してエントロピー復号処理を行う画像処理装置は以下のように動作する。
【００８７】
先ず、入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する。この復号が完了すると、着目可変長符号ストリームに後続する着目準固定長データストリームを入力符号化ストリームから読み出して復号する。更に、着目可変長符号ストリームの復号が完了すると、該復号結果を用いて着目準固定長データストリームのデータ長を決定する。例えば、この復号により得られる変換係数の個数、該変換係数のうち有意の変換係数の個数、１つの変換係数のビット数、を用いて着目準固定長データストリームのデータ長を計算する。そして、着目準固定長データストリームの先頭位置からデータ長だけ後方の位置を、着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置として指定し、次可変長符号ストリームの復号を開始させる。
【００８８】
［第４の実施形態］
本実施形態では、上記の実施形態で説明したような画像処理装置の機能を、マルチコアCPUを持つPCや、組み込み機器向けマルチコアCPU上で動作するソフトウェア（JPEG XRデコーダ）として実装した場合について説明する。この場合、例えば、図１４に示したメインCPU1415によってこのソフトウェアを実行してもよい。
【００８９】
上記の実施形態で説明したような画像処理装置の機能をソフトウェアにより実装した場合に、このソフトウェアを実行する装置が行う処理について、同処理のフローチャートを示す図１２を用いて説明する。なお、図１２に示した各ステップにおける処理の主体は何れも、この装置のＣＰＵである。
【００９０】
ブロック＃Ｎの符号化ストリームが取得可能であれば、処理はステップＳ１０１を介してステップＳ１０２に進む。ステップＳ１０２では、可変長符号＃Ｎの復号処理のスレッドを起動し、ステップＳ１０３では、ブロック＃Ｎの符号化ストリームから可変長符号＃Ｎを読み出して復号する。この復号が完了するまでステップＳ１０３の処理を続け、この復号が完了すると処理はステップＳ１０４を介してステップＳ１０５に進む。
【００９１】
ステップＳ１０５では、準固定長データストリーム＃Ｎの準固定長データストリーム長を算出し、ステップＳ１０６では、ステップＳ１０２で起動したスレッドを終了させる。
【００９２】
ステップＳ１０６の後は、ステップＳ１０７における処理と、ステップＳ１０８以降の処理を行う。ステップＳ１０７では変数Ｎを１つインクリメントすることで、次のブロックについてステップＳ１０１以降の処理を行う。
【００９３】
ステップＳ１０８では、OS(Operating system)等から割り当てられた利用可能なスレッド数と、現在実行中のスレッド数と、を比較する。そして、利用可能なスレッドを全て使用しているのであればステップＳ１０８で待機し、利用可能なスレッドのうち使用していないスレッドが１以上あれば、処理はステップＳ１０８を介してステップＳ１０９に進む。
【００９４】
ステップＳ１０９では、準固定長データストリーム＃Ｎの復号処理のスレッドを起動し、ステップＳ１１０では、ブロック＃Ｎの符号化ストリームから準固定長データストリーム＃Ｎを読み出して復号する。この復号が完了するまでステップＳ１１０の処理を続け、この復号が完了すると処理はステップＳ１１１を介してステップＳ１１２に進む。ステップＳ１１２では、ステップＳ１０９で起動したスレッドを終了させる。
【００９５】
各スレッドがそれぞれ別個のＣＰＵコア上で動作可能であれば、ブロック＃Ｎの準固定長データと、ブロック＃（Ｎ＋１）の可変長符号を並列に復号することが可能である。また、第２の実施形態の場合と同様に、ブロック＃Ｎの準固定長データと、ブロック＃（Ｎ＋１）以降のブロックの準固定長データを並列に復号することも可能である。
【００９６】
図１２のフローチャートに従った処理のタイミングチャートを図１３に示す。時刻Ｔ０（ステップＳ１０２）においてブロック＃Ｎの符号化ストリームが取得可能であれば、可変長符号＃Ｎの復号処理のスレッドを起動する。そして、ブロック＃Ｎの符号化ストリームから可変長符号＃Ｎを読み出して復号すると共に、準固定長データストリーム＃Ｎの準固定長データストリーム長を算出する。そしてこのスレッドは時刻Ｔ１（ステップＳ１０６）にて終了する。
【００９７】
その後、時刻Ｔ２（ステップＳ１０９）にて、準固定長データストリーム＃Ｎの復号処理のスレッドを起動し、ブロック＃Ｎの符号化ストリームから準固定長データストリーム＃Ｎを読み出して復号する。また、時刻Ｔ３（ステップＳ１０２）においてブロック＃（Ｎ＋１）の符号化ストリームが取得可能であれば、可変長符号＃（Ｎ＋１）の復号処理のスレッドを起動する。そして、ブロック＃（Ｎ＋１）の符号化ストリームから可変長符号＃（Ｎ＋１）を読み出して復号すると共に、準固定長データストリーム＃（Ｎ＋１）の準固定長データストリーム長を算出する。そしてこのスレッドは時刻Ｔ４（ステップＳ１０６）にて終了する。この時点でまだ、準固定長データストリーム＃Ｎの復号処理は完了していない。
【００９８】
時刻Ｔ５（ステップＳ１０９）にて、準固定長データストリーム＃（Ｎ＋１）の復号処理のスレッドを起動し、ブロック＃（Ｎ＋１）の符号化ストリームから準固定長データストリーム＃（Ｎ＋１）を読み出して復号する。もちろん、ステップＳ１０８にて利用可能なスレッドのうち使用していないスレッドが１以上あると判断し、且つ準固定長データストリーム＃（Ｎ＋１）が読み出し可能である場合に、この処理は行われる。
【００９９】
また、時刻Ｔ６（ステップＳ１０２）においてブロック＃（Ｎ＋２）の符号化ストリームが取得可能であれば、可変長符号＃（Ｎ＋２）の復号処理のスレッドを起動する。そして、ブロック＃（Ｎ＋２）の符号化ストリームから可変長符号＃（Ｎ＋２）を読み出して復号すると共に、準固定長データストリーム＃（Ｎ＋２）の準固定長データストリーム長を算出する。
【０１００】
したがって、時刻Ｔ６以降は、ブロック＃Ｎの準固定長データ、ブロック＃（Ｎ＋１）の準固定長データ、ブロック＃（Ｎ＋２）の可変長符号を並列に復号することになる。言うまでもなく、準固定長データの並列復号は２ブロックに限定されるものではない。準固定長データストリーム長算出方法、及び、準固定長データの復号時に必要となる有意係数位置情報の生成方法は、第１の実施形態のそれが適用可能である。
【０１０１】
以上、デジタルカメラへの適用を示し、さらにJPEG XR符号化方式について、第１〜４の実施形態として説明した。しかし、適用範囲は、デジタルカメラに限定されるものではなく、また、JPEG XR符号化方式に限定されるものではないことは明らかである。
【０１０２】
また、図１，９，１１に示した各部のうち、有意係数位置情報保持部９０５以外の各部の一部もしくは全部をソフトウェア（コンピュータプログラム）として実装してもよい。特に、ソフトウェアで実行する場合、第４の実施形態で示したように、可変長符号復号と、準固定長データ復号をマルチスレッドとして実行すれば良い。
【０１０３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2012235452.tif 000003
【図２】
2012235452.tif 000004
【図３】
2012235452.tif 000005
【図４】
2012235452.tif 000006
【図５】
2012235452.tif 000007
【図６】
2012235452.tif 000008
【図７】
2012235452.tif 000009
【図８】
2012235452.tif 000010
【図９】
2012235452.tif 000011
【図１０】
2012235452.tif 000012
【図１１】
2012235452.tif 000013
【図１２】
2012235452.tif 000014
【図１３】
2012235452.tif 000015
【図１４】
2012235452.tif 000016
【図１５】
2012235452.tif 000017