(57)【要約】【課題】プログレッシブ方式で符号化された圧縮画像データを並列処理によってより短時間に復号できるようにする。【解決手段】データ解析部２１は、圧縮画像データを構成する、所定の分割符号化単位ごとの符号化データ群を、コンポーネントごとに処理されるように並び替える。復号制御部２２は、データ解析部２１により並び替えられた符号化データ群に対して、ＣＰＵによって順次、可変長復号および逆量子化を施させて、周波数成分の係数データを出力させる。また、復号制御部２２は、ＣＰＵにより１つのコンポーネントに対応する符号化データ群が処理されると、出力された係数データをアクセラレータ（逆ＤＣＴ部１３）に供給して、時間成分への変換処理を実行させるとともに、次のコンポーネントに対応する符号化データ群に対する可変長復号および逆量子化をＣＰＵに並列に実行させる。【選択図】図２
2009081589.tif 000002
【特許請求の範囲】
【請求項１】
プログレッシブ方式で符号化された圧縮画像データを復号する画像復号装置において、
前記圧縮画像データを構成する、所定の分割符号化単位ごとの符号化データ群を、コンポーネントごとに処理されるように並び替える処理順決定部と、
前記処理順決定部により並び替えられた前記符号化データ群を順次受け付けて、可変長復号および逆量子化を施し、周波数成分の係数データを出力する第１の演算処理部と、
前記第１の演算処理部と並列に動作可能に構成され、前記第１の演算処理部からの前記係数データを時間成分のデータに変換する第２の演算処理部と、
を有し、
前記第１の演算処理部により１つのコンポーネントに対応する前記符号化データ群が処理されると、出力された前記係数データに対する時間成分のデータへの変換処理を前記第２の演算処理部が実行するとともに、前記第１の演算処理部が、次のコンポーネントに対応する前記符号化データ群に対する処理を並列に実行することを特徴とする画像復号装置。
【請求項２】
前記処理順決定部は、コンポーネントごとの前記符号化データ群のデータ量に基づいて、前記符号化データ群を並び替えることを特徴とする請求項１記載の画像復号装置。
【請求項３】
前記処理順決定部は、コンポーネントごとの前記データ量を、前記圧縮画像データのヘッダを解析することで予測することを特徴とする請求項２記載の画像復号装置。
【請求項４】
前記処理順決定部は、コンポーネントごとの前記データ量を、前記ヘッダの解析結果から得られた、最小符号化単位におけるコンポーネントごとのブロックサイズを基に、予測することを特徴とする請求項３記載の画像復号装置。
【請求項５】
前記処理順決定部は、コンポーネントごとの前記データ量を、前記ヘッダの解析結果から得られた、各コンポーネントに対応する前記符号化データ群の属性を基に、予測することを特徴とする請求項３記載の画像復号装置。
【請求項６】
前記処理順決定部は、前記ヘッダの解析結果から前記データ量の差を判別できないコンポーネントについては、コンポーネントごとに前記符号化データ群の実データ量を検出することを特徴とする請求項３記載の画像復号装置。
【請求項７】
前記処理順決定部は、前記データ量が大きい順にコンポーネントに処理順位を付与した後、さらに、前記第１の演算処理部と前記第２の演算処理部の各処理性能を基に前記処理順位を入れ替え、入れ替え後の前記処理順位に従って各コンポーネントが処理されるように前記符号化データ群を並び替えることを特徴とする請求項２記載の画像復号装置。
【請求項８】
前記処理順決定部は、
前記第２の演算処理部の処理に対して前記第１の演算処理部の処理がボトルネックになる場合には、前記データ量が最も小さいコンポーネントの前記処理順位を先頭にし、
前記第１の演算処理部の処理に対して前記第２の演算処理部の処理がボトルネックになる場合には、前記データ量が最も小さいコンポーネントの前記処理順位を最後にし、残りのコンポーネントの前記処理順位を前記データ量が小さい順になるようにすることを特徴とすることを特徴とする請求項７記載の画像復号装置。
【請求項９】
前記符号化データ群は、空間周波数成分、または、ビット列を分割した成分の少なくとも一方を前記分割符号化単位として、前記係数データを符号化したデータ群であることを特徴とする請求項１記載の画像復号装置。
【請求項１０】
前記係数データはＤＣＴ係数であり、前記第２の演算処理部は、前記係数データに逆ＤＣＴを施すことを特徴とする請求項１記載の画像復号装置。
【請求項１１】
前記圧縮画像データは、ＪＰＥＧ方式で圧縮符号化された画像データであることを特徴とする請求項１記載の画像復号装置。
【請求項１２】
互いに並列に動作可能な第１の演算処理部および第２の演算処理部を用いて、プログレッシブ方式で符号化された圧縮画像データを復号するための画像復号方法において、
処理順決定部が、前記圧縮画像データを構成する、所定の分割符号化単位ごとの符号化データ群を、コンポーネントごとに処理されるように並び替え、
復号制御部が、前記処理順決定部により並び替えられた前記符号化データ群を前記第１の演算処理部に順次供給して、可変長復号および逆量子化を実行させて、周波数成分の係数データを出力させ、
前記復号制御部が、前記第１の演算処理部により１つのコンポーネントに対応する前記符号化データ群が処理されると、出力された前記係数データを前記第２の演算処理部に供給して、時間成分への変換処理を実行させるとともに、前記第１の演算処理部に対して、次のコンポーネントに対応する前記符号化データ群に対する可変長復号および逆量子化を並列に実行させる、
ことを特徴とする画像復号方法。
【請求項１３】
互いに並列に動作可能な第１の演算処理部および第２の演算処理部を用いて、プログレッシブ方式で符号化された圧縮画像データを復号するための画像復号プログラムにおいて、
コンピュータを、
前記圧縮画像データを構成する、所定の分割符号化単位ごとの符号化データ群を、コンポーネントごとに処理されるように並び替える処理順決定部、
前記処理順決定部により並び替えられた前記符号化データ群を前記第１の演算処理部に順次供給して、可変長復号および逆量子化を実行させて、周波数成分の係数データを出力させ、前記第１の演算処理部により１つのコンポーネントに対応する前記符号化データ群が処理されると、出力された前記係数データを前記第２の演算処理部に供給して、時間成分への変換処理を実行させるとともに、前記第１の演算処理部に対して、次のコンポーネントに対応する前記符号化データ群に対する可変長復号および逆量子化を並列に実行させる復号制御部、
として機能させることを特徴とする画像復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログレッシブ方式で符号化された圧縮画像データを復号する画像復号装置、方法、およびプログラムに関し、特に、互いに並列に動作可能な第１の演算処理部および第２の演算処理部を用いて復号処理を行う画像復号装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、静止画像データの圧縮／伸張のための国際標準方式として、ＪＰＥＧ（Joint Photographic Experts Group）方式が広く普及している。ＪＰＥＧ方式では、ＪＰＥＧ標準システム（Baseline System）に加えて、ＪＰＥＧ拡張システム（Extended System）が規定されている。
【０００３】
図１３は、ＪＰＥＧ標準システムにおける復号装置の構成を概略的に示すブロック図である。
ＪＰＥＧ標準システムにおける復号装置は、図１３に示すように、可変長復号（ＶＬＤ：Variable Length Decode）部１１と、逆量子化（ＩＱ：Inverse Quantize）部１２と、逆ＤＣＴ（ＩＤＣＴ：Inverse Discrete Cosine Transform）部１３と、色変換部１４とから構成される。
【０００４】
可変長復号部１１は、符号化装置によって符号化されたＪＰＥＧデータに対して可変長復号処理を施し、量子化データを出力する。逆量子化部１２は、可変長復号部１１で得られた量子化データを、量子化テーブルに基づいて逆量子化し、ＤＣＴ係数を出力する。逆ＤＣＴ部１３は、逆量子化部１２で得られたＤＣＴ係数を逆ＤＣＴ処理して伸張し、画素データ（ＹＵＶデータ）を出力する。色変換部１４は、逆ＤＣＴ部１３で得られたＹＵＶデータに対して色変換を行い、色情報データ（ＲＧＢ画像データ）を出力する。
【０００５】
図１４は、ＪＰＥＧデータにおけるブロックの構成とスキャン順を説明するための図である。
ＪＰＥＧ標準システムの符号化装置では、入力画像データを８画素×８画素からなるブロックに分割し、これらのブロックを単位としてＤＣＴ演算を行う。そして、得られたＤＣＴ係数を、ＤＣ（Direct Current）成分とＡＣ（Alternate Current）成分とで独立して量子化する。図１４に示すように、ＪＰＥＧデータにおいて、各ブロックは６４個の要素からなり、それぞれの要素は、要素単位の画像データを周波数成分で表現した複数（８ビットまたは１２ビット）のビット列を含む。
【０００６】
また、図１４において、ブロック内の各要素に示した数字は、ブロック内のスキャン順を示しており、以下ではこれらをスキャン番号（scan number）と呼ぶことにする。各ブロックにおいては、ＤＣ成分については最初の要素（スキャン番号０の要素）として符号化され、ＡＣ成分については、残りの要素（スキャン番号１〜６３の要素）の中でジグザグスキャンによって並び替えられて符号化される。
【０００７】
一方、ＪＰＥＧ拡張システムには、ＪＰＥＧ標準システムに対する追加機能として、シーケンシャル符号化モードを適用したシステム（Sequential system）や、プログレッシブ符号化モードを適用したシステム（Progressive system）などが規定されている。シーケンシャル符号化されたＪＰＥＧデータでは、上から下に対して画像が順次復号されて表示される。また、プログレッシブ符号化されたＪＰＥＧデータでは、まず、低解像度の大まかな画像が復号されて表示された後、次第に高解像度の精細な画像が復号されて復元される。
【０００８】
これらのうち、後者のプログレッシブ符号化モードでは、次の２つの符号化方式が提案されている。１つは、ＤＣＴ係数を空間周波数の低い成分から複数に分割し、分割単位ごとに順に符号化していく周波数分割型の方式であり、これはスペクトル選択（Spectral Selection）方式と呼ばれる。もう１つは、ＤＣＴ係数のビット列をＭＳＢ（Most Significant Bit）からＬＳＢ（Least Significant Bit）に対して複数に分割し、分割単位ごとに順に符号化していく近似精度向上型の方式であり、これは連続近似（Successive Approximation）方式と呼ばれる。また、これらの方式を組み合わせて、符号化する分割単位を多くすることも可能である。これらの方式に従って多段に分割された分割単位ごとの符号化データ群を、バンド（band）と呼ぶ。
【０００９】
ＪＰＥＧ標準システムにおいては、上述したブロック内の６４個の要素が、順次復号されていく。一方、プログレッシブ符号化されたＪＰＥＧデータの復号時には、スペクトル選択方式や連続近似方式により多段に分割されたバンド単位で、復号が行われる。以下、バンドの分割例を挙げて、プログレッシブ符号化されたＪＰＥＧデータの復号処理の流れを具体的に説明する。
【００１０】
図１５は、バンドの構成例を示す図であり、図１６は、バンドごとに処理されるデータを示す図である。
ここでは例として、図１５に示すように、ＤＣＴ係数を４つのバンドに分割している。プログレッシブ符号化されたＪＰＥＧデータは、通常、ストリームにおけるバンドの格納順通りに復号される。すなわち、この例では、第１のバンド、第２のバンド、第３のバンド、第４のバンドの順に復号処理が行われる。なお、ブロック内の各要素のＤＣＴ係数は、８ビットのデータで表されることにする。
【００１１】
第１のバンドには、スキャン番号０の要素の全ビット（０ビットから７ビットまで）のデータが符号化されている。この第１のバンドには、ＤＣＴ係数のうちのＤＣ成分のみが含まれる。復号装置では、最初に、図１６の左上において“１ｓｔ”と示した要素の８ビット分の全データが、可変長復号部１１によって可変長復号され、その後、ＪＰＥＧ基本システムの場合と同様に、得られたデータが逆量子化部１２および逆ＤＣＴ部１３で処理されて、ＹＵＶデータが生成される。
【００１２】
第２のバンドには、ＤＣＴ係数のＡＣ成分のうち、スキャン番号１〜５の要素の１ビットから７ビットまでのデータが符号化されている。復号装置では、第１のバンドの処理を実行した後、図１６の右上において“２ｎｄ”と示した要素のうちの上位７ビット分のデータが、可変長復号部１１によって可変長復号され、さらに逆量子化部１２および逆ＤＣＴ部１３で処理される。
【００１３】
第３のバンドには、ＤＣＴ係数のＡＣ成分のうち、スキャン番号６〜６３の要素の１ビットから７ビットまでのデータが符号化されている。復号装置では、第２のバンドの処理を実行した後、図１６の左下において“３ｒｄ”と示した要素のうちの上位７ビット分のデータが、可変長復号部１１によって可変長復号され、さらに逆量子化部１２および逆ＤＣＴ部１３で処理される。
【００１４】
第４のバンドには、ＤＣＴ係数のＡＣ成分のうち、スキャン番号１〜６３の要素の０ビット目のみのデータが符号化されている。復号装置では、第３のバンドの処理を実行した後、図１６の右下において“４ｔｈ”と示した要素のうちの下位１ビット分のデータが、可変長復号部１１によって可変長復号され、さらに逆量子化部１２および逆ＤＣＴ部１３で処理される。
【００１５】
以上のように、プログレッシブ符号化されたＪＰＥＧデータについては、符号化時に分割されたバンドごとに可変長復号、逆量子化、逆ＤＣＴの各処理が順次実行されて、画像が徐々に復元されていく。しかし、特に逆ＤＣＴ演算は非常に処理負荷が高いため、バンドごとに逆ＤＣＴ演算を行うと、処理時間が長くなるという問題が生じてしまう。そこで、まず、すべてのバンドの可変長復号を行い、可変長復号をすべて終了した段階で、逆ＤＣＴ演算を１度にまとめて行い、ＹＵＶデータを出力する手法が提案されている。この手法では、低解像度の画面から徐々に復元して表示させることはできないものの、復号処理全体の演算時間を短縮できるようになる。この手法は、ＩＪＧ（Independent JPEG Group's）のｄｊｐｅｇと呼ばれるデコーダソフトウェアなどに、すでに実装されている。
【００１６】
さらに、近年のデジタルカメラの高解像度化に伴い、ＪＰＥＧデータのＣＯＤＥＣ（Coder Decoder）に対しては、高解像度の画像をより高速に表示できるような要求が強まっている。しかし、ｄｊｐｅｇに実装されている上記手法を用いて演算時間を短縮したとしても、高速化に対する要求を満たせない場合がある。そこで、解決策の１つとして、ＣＰＵ（Central Processing Unit）とアクセラレータとを使用し、高負荷の処理（すなわち逆ＤＣＴ）をアクセラレータに実行させ、なおかつ、ＣＰＵでの処理とアクセラレータでの処理を並列化することで、高速化を図る手法が提案されている。ここで、アクセラレータとは、特定の機能や処理能力を向上させるために、ＣＰＵが担当する処理を肩代わりするハードウェアを指し、例えばＬＳＩ（Large Scale Integration）として実現される。
【００１７】
図１７は、ｄｊｐｅｇ方式の復号装置の構成を概略的に示すブロック図である。なお、図１７では、図１３と同等の機能には同じ符号を付して示しており、それらの説明を省略する。
【００１８】
ｄｊｐｅｇでは、可変長復号部１１および逆量子化部１２においてバンドごとに処理が行われ、得られたＤＣＴ係数がＤＣＴ係数バッファ１５に一旦格納される。そして、逆ＤＣＴ部１３は、ＤＣＴ係数バッファ１５からＤＣＴ係数を読み出して逆ＤＣＴを行い、生成した画素データを色変換部１４に出力する。
【００１９】
ここで、このような復号処理をＣＰＵとアクセラレータとで並列に実行する場合には、可変長復号部１１および逆量子化部１２の処理がＣＰＵにより実行され、逆ＤＣＴ部１３の処理がアクセラレータにより実行される。この場合、逆ＤＣＴ部１３は、ＤＣＴ係数バッファ１５において、逆ＤＣＴの演算に必要なだけのＤＣＴ係数が格納されると、それらのＤＣＴ係数を読み出して逆ＤＣＴの処理を開始することができる。具体的には、逆ＤＣＴは、Ｙ，Ｃｂ，ＣｒなどのコンポーネントごとにＤＣＴ係数が揃うまで実行できないため、ＤＣＴ係数バッファ１５に所定のコンポーネントに対応するＤＣＴ係数が揃った時点で、そのコンポーネントについての逆ＤＣＴの処理を開始することができる。
【００２０】
図１８は、ｄｊｐｅｇ方式の復号処理を並列化する場合のＣＰＵの処理手順を示すフローチャートである。
まず、ＣＰＵは、ストリーム内の格納順に従ってバンドを選択し（ステップＳ１０１）、そのバンドのデータに対して可変長復号を行い（ステップＳ１０２）、さらに逆量子化を行って（ステップＳ１０３）、得られたＤＣＴ係数をＤＣＴ係数バッファ１５に格納する。ここで、所定のコンポーネントに対応するすべてのバンドに対する処理が終了したか否かを判定し（ステップＳ１０４）、終了していない場合には、ステップＳ１０１に戻って次のバンドを選択し、可変長復号および逆量子化を行う。
【００２１】
また、ステップＳ１０４の判定で、所定のコンポーネントに対応するすべてのバンドに対する処理が終了していた場合には、そのコンポーネントに対応するＤＣＴ係数をＤＣＴ係数バッファ１５から読み出して、アクセラレータに出力して、逆ＤＣＴの実行を要求する（ステップＳ１０５）。次に、ストリーム内のすべてのバンドに対する処理が終了したか否かを判定し（ステップＳ１０６）、終了していない場合には、ステップＳ１０１に戻って次のバンドを選択し、可変長復号および逆量子化を行う。また、終了していた場合には復号処理を終了する。
【００２２】
以上の処理では、ステップＳ１０５での逆ＤＣＴの実行要求に応じて、アクセラレータが逆ＤＣＴの実行を開始した後、ステップＳ１０１に戻って、次のバンドに対する可変長復号および逆量子化がＣＰＵにより実行されることで、ＣＰＵによる可変長復号および逆量子化とアクセラレータによる逆ＤＣＴとが並列に実行され、これにより処理時間が短縮される。
【００２３】
なお、プログレッシブ符号化されたＪＰＥＧデータを復号して画像を表示させるための従来技術として、階層データごとにプログレッシブ方式で順次復号していく際に、表示された画像がユーザにより指定された必要解像度を満たした時点で、それ以後の階層データの復号を停止することで、復号に要する時間を短縮した画像処理方法があった（例えば、特許文献１参照）。
【特許文献１】特開２０００−７８５７６号公報（段落番号〔００５５〕〜〔００５９〕、図３）
【発明の開示】
【発明が解決しようとする課題】
【００２４】
前述のように、プログレッシブ符号化されたＪＰＥＧデータを、ｄｊｐｅｇに実装された時間短縮手法を用いて復号する場合には、ＣＰＵでの可変長復号および逆量子化の処理と、アクセラレータでの逆ＤＣＴとを並列化することで、処理時間を短縮することが可能であった。しかし、この処理では、可変長復号および逆量子化の処理によっていずれか１つのコンポーネントに対応するＤＣＴ係数がすべて揃い、そのコンポーネントについての逆ＤＣＴが実行可能になるまでの間、アクセラレータでの逆ＤＣＴが実行されない。このため、ＣＰＵとアクセラレータとの並列処理の開始までに長時間かかる上、並列処理の実行期間が短くなり、処理効率が低いという問題があった。
【００２５】
本発明はこのような点に鑑みてなされたものであり、プログレッシブ方式で符号化された圧縮画像データを並列処理によってより短時間に復号できるようにした画像復号装置、方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明では上記課題を解決するために、プログレッシブ方式で符号化された圧縮画像データを復号する画像復号装置において、前記圧縮画像データを構成する、所定の分割符号化単位ごとの符号化データ群を、コンポーネントごとに処理されるように並び替える処理順決定部と、前記処理順決定部により並び替えられた前記符号化データ群を順次受け付けて、可変長復号および逆量子化を施し、周波数成分の係数データを出力する第１の演算処理部と、前記第１の演算処理部と並列に動作可能に構成され、前記第１の演算処理部からの前記係数データを時間成分のデータに変換する第２の演算処理部と、を有し、前記第１の演算処理部により１つのコンポーネントに対応する前記符号化データ群が処理されると、出力された前記係数データに対する時間成分のデータへの変換処理を前記第２の演算処理部が実行するとともに、前記第１の演算処理部が、次のコンポーネントに対応する前記符号化データ群に対する処理を並列に実行することを特徴とする画像復号装置が提供される。
【００２７】
このような画像復号装置では、圧縮画像データを復号する前に、まず、処理順決定部が、この圧縮画像データを構成する、所定の分割符号化単位ごとの符号化データ群を、コンポーネントごとに処理されるように並び替える。そして、処理順決定部により並び替えられた符号化データ群が、第１の演算処理部に順次供給されて、可変長復号および逆量子化が行われ、その結果として周波数成分の係数データが出力される。また、第２の演算処理部は、第１の演算処理部と並列に動作可能に構成され、第１の演算処理部からの係数データを時間成分のデータに変換する。ここで、第１の演算処理部により１つのコンポーネントに対応する符号化データ群が処理されると、出力された係数データに対する時間成分のデータへの変換処理が第２の演算処理部によって実行されるとともに、第１の演算処理部では、次のコンポーネントに対応する符号化データ群に対する処理が並列に実行される。
【発明の効果】
【００２８】
本発明の画像復号装置によれば、圧縮画像データの復号前に、この圧縮画像データを構成する符号化データ群が、コンポーネントごとに処理されるように並び替えられ、それらの符号化データ群が、並び替えられた順に第１の演算処理部に供給され、可変長復号および逆量子化が施される。また、第１の演算処理部により１つのコンポーネントに対応する符号化データ群が処理されると、出力された係数データに対する時間成分のデータへの変換処理が第２の演算処理部によって実行されるとともに、第１の演算処理部では、次のコンポーネントに対応する符号化データ群に対する処理が並列に実行される。これにより、第２の演算処理部によるデータ変換処理の実行開始タイミングが早められるとともに、第１の演算処理部と第２の演算処理部とが並列に動作し得る期間が長くなり、その結果、圧縮画像データ全体の復号に要する時間が短縮される。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図１は、実施の形態に係る画像復号装置のハードウェア構成を概略的に示すブロック図である。
【００３０】
図１に示す画像復号装置は、ＣＰＵ１１０、メインメモリ１２０、アクセラレータ１３０、および外部記憶装置１４０が、バス１５０を通じて相互に接続された構成を有している。
【００３１】
ＣＰＵ１１０は、外部記憶装置１４０、あるいは図示しないＲＯＭ（Read Only Memory）などに記憶されたプログラムを実行することで、後述する可変長復号化や逆量子化などの所定の処理を実行する。メインメモリ１２０は、ＣＰＵ１１０の作業領域として使用されるＲＡＭ（Random Access Memory）である。
【００３２】
アクセラレータ１３０は、ＬＳＩなどからなるハードウェア回路であり、ＣＰＵ１１０との間でバス１５０を通じて受け取ったデータを処理する。アクセラレータ１３０には、ＡＬＵ（Arithmetic and Logic Unit）あるいはＭＡＣ（Multiplier and Accumulator）などからなる演算器１３１、アクセラレータ１３０に専用のＲＡＭであるローカルメモリ１３２などが設けられている。
【００３３】
このアクセラレータ１３０は、ＣＰＵ１１０とは独立して稼動することが可能になっている。すなわち、ＣＰＵ１１０が演算処理を実行している間、アクセラレータ１３０では、ローカルメモリ１３２に対するバス１５０を通じたデータの読み出し／書き込みを行ったり、演算器１３１により、ＣＰＵ１１０とは別の処理をローカルメモリ１３２内のデータを用いて実行することができ、これによって並列処理が実現される。
【００３４】
本実施の形態では、後述するように、ＪＰＥＧデータの復号の際に、可変長復号および逆量子化の各処理がＣＰＵ１１０により実行され、逆ＤＣＴの演算がアクセラレータ１３０により実行される。
【００３５】
外部記憶装置１４０は、ＨＤＤ（Hard Disk Drive）などからなり、例えば、ＣＰＵ１１０で実行されるプログラムや、その実行に必要なデータ、復号対象のＪＰＥＧデータなどが記憶される。なお、復号対象のＪＰＥＧデータは、例えば、図示しない通信インタフェースを通じて外部から供給されてもよい。
【００３６】
図２は、画像復号装置が備える機能を示すブロック図である。
図２に示すように、本実施の形態の画像復号装置は、可変長復号部１１、逆量子化部１２、逆ＤＣＴ部１３、色変換部１４、ＤＣＴ係数バッファ１５、データ解析部２１、および復号制御部２２を備えている。これらの機能のうち、逆ＤＣＴ部１３は、アクセラレータ１３０のハードウェア処理によって実現され、ＤＣＴ係数バッファ１５を除くその他の機能は、ＣＰＵ１１０のソフトウェア処理によって実現される機能である。これにより、可変長復号部１１および逆量子化部１２での処理と、逆ＤＣＴ部１３での処理は、並列に実行可能になっている。また、データ解析部２１は、プログレッシブ符号化されたＪＰＥＧデータの入力を受けて、そのヘッダやデータ量などを解析し、その解析結果から最も効率的に並列処理を実行できるようなバンドの処理順を決定してリスト化し、復号制御部２２に通知する。このデータ解析部２１は、処理量予測部３１と、処理順変換部３２とを備える。
【００３７】
処理量予測部３１は、ストリームに含まれるデータのうち、コンポーネントごとのデータ処理量を予測し、その処理量順にコンポーネントごとの順位を付与する。処理順変換部３２は、処理量予測部３１により付与された順位を、復号処理機能の仕様（処理能力）によって決まる優先順序を基に変換し、復号時における最終的なバンドの処理順を決定する。なお、処理順変換部３２が参照する復号処理機能の仕様の情報は、例えば外部記憶装置１４０などにあらかじめ設定される。
【００３８】
復号制御部２２は、データ解析部２１から通知されたバンドの処理順に従って、可変長復号部１１、逆量子化部１２、および逆ＤＣＴ部１３の処理を制御する。例えば、通知されたバンドの処理順に従って、可変長復号部１１に対してストリーム内のバンドのデータを供給して、可変長復号処理を実行させる。また、逆量子化部１２において所定のコンポーネントに対応する全バンドについての逆量子化処理が完了すると、得られたＤＣＴ係数に対する逆ＤＣＴ演算の実行を逆ＤＣＴ部１３に要求する。このとき、逆ＤＣＴ部１３が処理中の状態（Ｂｕｓｙ状態）のときは、可変長復号部１１に対して次のバンドの処理を実行させつつ、Ｂｕｓｙ状態が解除されるまでの間、逆ＤＣＴ部１３に対してポーリングを行うことで、逆ＤＣＴ部１３に次の処理を順次実行させる。
【００３９】
可変長復号部１１は、復号制御部２２の制御により読み込まれたバンドに対して順次可変長復号処理を施し、量子化データを出力する。逆量子化部１２は、可変長復号部１１でバンドごとに得られた量子化データを、量子化テーブルに基づいて逆量子化してＤＣＴ係数を出力する。
【００４０】
ＤＣＴ係数バッファ１５は、逆量子化部１２から出力されたＤＣＴ係数が一時的に格納されるバッファであり、メインメモリ１２０の格納領域の一部として実現される。ＤＣＴ係数バッファ１５では、復号制御部２２の制御により、所定のコンポーネントに対応するＤＣＴ係数がすべて格納されると、これらのＤＣＴ係数が逆ＤＣＴ部１３に対して出力される。
【００４１】
逆ＤＣＴ部１３は、復号制御部２２からの要求に応じて、所定のコンポーネントの処理に必要なＤＣＴ係数をＤＣＴ係数バッファ１５から読み出して、逆ＤＣＴ処理して伸張し、画素データ（ＹＵＶデータ）を出力する。色変換部１４は、逆ＤＣＴ部１３で得られたＹＵＶデータに対して色空間変換を行い、色情報データ（ＲＧＢ画像データ）を出力する。
【００４２】
次に、バンドの分割例を挙げて、本実施の形態において、プログレッシブ符号化されたＪＰＥＧデータを復号する際の処理手順について、具体的に説明する。図３は、実施の形態で適用されるバンドの分割例を示す図である。
【００４３】
図３において、丸印で囲まれた数字は、ＪＰＥＧデータのストリーム内のバンドの格納順を示している。すなわち、ここで例示するＪＰＥＧデータの各ブロックは、第１から第１２までの１２個のバンドにより構成される。
【００４４】
なお、従来と同様に、ここで処理されるＪＰＥＧデータは、８画素×８画素のブロックを単位として符号化されており、ブロック内の要素のスキャン順（スキャン番号）は、図１４に示した通りである。また、符号化の対象とされた元の画像データは、一般に輝度成分（Ｙ）と色差成分（Ｃｂ，Ｃｒ）とのサンプリング比が“４：２：２”と表されるデータ（ＹＵＶデータ）であったものとし、ブロック内の各要素の符号化データは、Ｙ，Ｃｂ，Ｃｒのそれぞれについて、０ビットから７ビットまでの８ビットのビット列として構成される。
【００４５】
第１のバンドには、スキャン番号０の要素に含まれるＹ，Ｃｂ，Ｃｒの各ＤＣＴ係数（ＤＣ成分）のビット列のうち、１ビットから７ビットまでが符号化されている。
第２のバンドには、スキャン番号１〜５の要素に含まれるＹのＤＣＴ係数（ＡＣ成分）のビット列のうち、２ビットから７ビットまでが符号化されている。
【００４６】
第３，第４のバンドには、スキャン番号１〜５の要素に含まれるＤＣＴ係数（ＡＣ成分）のビット列のうち、１ビットから７ビットまでが符号化されている。第３のバンドではＣｂのＤＣＴ係数が符号化され、第４のバンドではＣｒのＤＣＴ係数が符号化される。
【００４７】
第５，第６のバンドには、スキャン番号６〜６３の要素に含まれるＤＣＴ係数（ＡＣ成分）のビット列のうち、１ビットから７ビットまでが符号化されている。第５のバンドではＣｂのＤＣＴ係数が符号化され、第６のバンドではＣｒのＤＣＴ係数が符号化される。
【００４８】
第７のバンドには、スキャン番号６〜６３の要素に含まれるＹのＤＣＴ係数（ＡＣ成分）のビット列のうち、２ビットから７ビットまでが符号化されている。
第８のバンドには、スキャン番号１〜６３の要素に含まれるＹのＤＣＴ係数（ＡＣ成分）のビット列のうち、１ビット目のみが符号化されている。
【００４９】
第９のバンドには、スキャン番号０の要素に含まれるＹ，Ｃｂ，Ｃｒの各ＤＣＴ係数（ＤＣ成分）のビット列のうち、０ビット目のみが符号化されている。
第１０〜第１２のバンドには、スキャン番号１〜６３の要素に含まれるＤＣＴ係数（ＡＣ成分）のビット列のうち、０ビット目のみが符号化されている。第１０のバンドではＹのＤＣＴ係数が符号化され、第１１のバンドではＣｂのＤＣＴ係数が符号化され、第１２のバンドではＣｒのＤＣＴ係数が符号化される。
【００５０】
次に、本実施の形態での復号処理について、具体的に説明する。
図４は、復号処理時におけるＣＰＵの処理手順を示すフローチャートである。
まず、データ解析部２１は、プログレッシブ符号化されたＪＰＥＧデータの入力を受けると、ストリーム全体のヘッダやデータ量などを解析し、バンドの処理順を決定する（ステップＳ１１）。このとき、データ解析部２１は、バンドをコンポーネントごとに順次処理できるように並び替えて、それらの処理順をリスト化する。この処理順決定処理については、後の図７において詳しく説明する。
【００５１】
次に、復号制御部２２は、データ解析部２１で作成されたバンドの処理順リストを参照しながら、復号処理を開始する。まず、データ解析部２１で決定されたコンポーネントの処理順に従って、次に処理するコンポーネントを選択する（ステップＳ１２）。次に、選択したコンポーネントに対応するバンドの処理順に従って、次に処理するバンドを選択する（ステップＳ１３）。
【００５２】
可変長復号部１１は、ステップＳ１３で選択されたバンドの符号化データを読み込み、可変長復号の処理を実行する（ステップＳ１４）。さらに、逆量子化部１２は、可変長復号によって得られた量子化データを逆量子化し、得られたＤＣＴ係数をＤＣＴ係数バッファ１５に格納する（ステップＳ１５）。
【００５３】
ここで、復号制御部２２は、ステップＳ１２で選択したコンポーネントに対応するすべてのバンドの処理が終了したか否かを判定し（ステップＳ１６）、終了していない場合には、ステップＳ１３に戻って、次に処理するバンドを選択する。これにより、選択されたバンドの符号化データが、可変長復号部１１および逆量子化部１２で処理される。
【００５４】
そして、選択したコンポーネントに対応するすべてのバンドが処理され、得られたＤＣＴ係数がＤＣＴ係数バッファ１５に格納されると、復号制御部２２は、アクセラレータ１３０（逆ＤＣＴ部１３）に対して、それらのＤＣＴ係数に対する逆ＤＣＴの実行を要求する処理を行う（ステップＳ１７）。この処理では、復号制御部２２は、まず、逆ＤＣＴ部１３が処理中であるか否かを問い合わせ、Ｂｕｓｙ状態であった場合には、Ｂｕｓｙ状態が解除するまでの間、逆ＤＣＴ部１３に対するポーリングを繰り返し行う。そして、Ｂｕｓｙ状態が解除されると、次のコンポーネントについての逆ＤＣＴの実行を要求する。
【００５５】
逆ＤＣＴの実行要求処理を行うと、復号制御部２２は、ストリーム内のすべてのバンドの処理が終了したか否かを判定する（ステップＳ１８）。なお、このステップＳ１８の処理は、ステップＳ１７で逆ＤＣＴ部１３がＢｕｓｙ状態であった場合には、その後のポーリングと並行して実行される。
【００５６】
ストリーム内のすべてのバンドの処理が終了していない場合には、ステップＳ１２に戻って、次に処理するコンポーネントが選択される。これにより、選択されたコンポーネントに対応するバンドが、可変長復号部１１および逆量子化部１２で順次処理されていく。そして、ストリーム内のすべてのバンドの処理が終了すると、復号処理が終了される。
【００５７】
図５は、復号処理時におけるＣＰＵとアクセラレータとの間の処理シーケンスを示す図である。
まず、タイミングＴ２１において、ＣＰＵ１１０は、データ解析部２１によるデータ解析処理を行う。この処理は、図４のステップＳ１１に対応し、前述のように、コンポーネントごとに順次処理されるようにバンドの処理順が決定される。
【００５８】
本実施の形態では、図３に示したようにＹ，Ｃｂ，Ｃｒの３種類のコンポーネントが存在するので、ＣＰＵ１１０は、図４に示したステップＳ１２〜Ｓ１８までの処理を３回繰り返すことになる。従って、ＣＰＵ１１０によるデータ解析後の可変長復号および逆量子化の処理期間は、各コンポーネントに対応する第１のＶＬＤ＆ＩＱ期間（タイミングＴ２２〜Ｔ２３）、第２のＶＬＤ＆ＩＱ期間（タイミングＴ２３〜Ｔ２４）、第３のＶＬＤ＆ＩＱ期間（タイミングＴ２４〜Ｔ２７）に分けることができる。また、アクセラレータ１３０による逆ＤＣＴの処理期間も、各コンポーネントに対応する第１のＩＤＣＴ期間（タイミングＴ２３からタイミングＴ２５の直前まで）、第２のＩＤＣＴ期間（タイミングＴ２６からタイミングＴ２７の直前まで）、第３のＩＤＣＴ期間（タイミングＴ２８〜Ｔ２９）に分けることができる。
【００５９】
データ解析処理後のタイミングＴ２２において、ＣＰＵ１１０は、最初に処理すべきコンポーネントを選択して、このコンポーネントに対応するバンドに対する可変長復号および逆量子化の各処理を実行する。
【００６０】
次に、タイミングＴ２３において、これらの処理が完了し、そのコンポーネントについての逆ＤＣＴを行うために必要なすべてのＤＣＴ係数がＤＣＴ係数バッファ１５に格納されると、ＣＰＵ１１０は、アクセラレータ１３０に対して逆ＤＣＴの処理中であるか否かを問い合わせる。このとき、アクセラレータ１３０は処理を行っていない状態なので、アクセラレータ１３０からの応答後に、ＣＰＵ１１０は逆ＤＣＴの実行をアクセラレータに要求し、アクセラレータ１３０は、その要求に応じて、ＤＣＴ係数バッファ１５からＤＣＴ係数を読み込み、逆ＤＣＴの演算を実行する。なお、第１のＩＤＣＴ期間以前にはアクセラレータ１３０の逆ＤＣＴは実行されていないので、図５に示すように、タイミングＴ２３では、問い合わせを行うことなく、アクセラレータ１３０に対して逆ＤＣＴの実行が要求されてもよい。
【００６１】
また、ＣＰＵ１１０は、タイミングＴ２３において逆ＤＣＴの実行要求を行うとともに、次の処理すべきコンポーネントを選択して、このコンポーネントに対応するバンドに対する可変長復号および逆量子化の各処理を実行する。すなわち、この期間では、ＣＰＵ１１０での可変長復号および逆量子化の処理と、アクセラレータ１３０での逆ＤＣＴ処理とが並列に実行される。
【００６２】
そして、タイミングＴ２４においてそれらの処理が終了すると、ＣＰＵ１１０は、アクセラレータ１３０に対して逆ＤＣＴの処理中であるか否かを問い合わせる。図５の例では、タイミングＴ２４では、アクセラレータ１３０において、最初に選択されたコンポーネントについての逆ＤＣＴの処理が終了しておらず、アクセラレータ１３０からは、ＣＰＵ１１０に対してＢｕｓｙ信号が返送される。ＣＰＵ１１０は、Ｂｕｓｙ信号を受信すると、次に処理するコンポーネントを選択して可変長復号および逆量子化の処理を開始するとともに、アクセラレータ１３０に対して一定時間ごとに処理中か否かを問い合わせるポーリングを繰り返す。
【００６３】
そして、図５の例では、タイミングＴ２５でのポーリング時に、アクセラレータ１３０での逆ＤＣＴが終了しているので、ＣＰＵ１１０は、アクセラレータ１３０からの応答受信後のタイミングＴ２６において、アクセラレータ１３０に対して、次のコンポーネントについての逆ＤＣＴの実行を要求する。従って、ここからの期間でも、ＣＰＵ１１０での可変長復号および逆量子化の処理と、アクセラレータ１３０での逆ＤＣＴ処理とが並列に実行されることになる。
【００６４】
次に、ＣＰＵ１１０は、タイミングＴ２７において、最後のコンポーネントに対応するすべてのバンドに対する可変長復号および逆量子化の処理を終了すると、アクセラレータ１３０に対して、アクセラレータ１３０に対して逆ＤＣＴの処理中であるか否かを問い合
わせる。図５の例では、タイミングＴ２４では、アクセラレータ１３０における前のコンポーネントについての逆ＤＣＴの処理が終了しているので、ＣＰＵ１１０は、アクセラレータ１３０からの応答受信後のタイミングＴ２８において、アクセラレータ１３０に対して、次のコンポーネントについての逆ＤＣＴの実行を要求する。アクセラレータ１３０は、この要求に応じて、最後のコンポーネントについての逆ＤＣＴを実行し、タイミングＴ２９において、この処理を終了する。
【００６５】
ところで、アクセラレータ１３０では、第１，第２，第３のＩＤＣＴ期間のそれぞれにおいて、逆ＤＣＴの演算がコンポーネントごとに行われる。このことから、ＣＰＵ１１０での第１，第２，第３のＶＬＤ＆ＩＱ期間のそれぞれは、１つのコンポーネントについての逆ＤＣＴの実行に必要なだけのＤＣＴ係数を取り出すための期間であると言える。
【００６６】
その一方で、入力されるＪＰＥＧデータのストリームには、基本的にコンポーネントに関係ない順番でバンドが格納されている。このため、従来のｄｊｐｅｇ方式に従い、バンドの格納順に可変長復号および逆量子化を実行した場合には、第１のＶＬＤ＆ＩＱ期間において、必要のないコンポーネントに対応するバンドに対する処理も実行されることがあり、この結果、第１のＶＬＤ＆ＩＱ期間が長くなり、第２のＶＬＤ＆ＩＱ期間以降のＣＰＵ１１０の処理期間が短くなる。
【００６７】
ここで、図６は、従来のｄｊｐｅｇ方式で復号処理を行った場合のバンドの処理順を示す図である。
ｄｊｐｅｇ方式では、ストリーム内のバンドの格納順に処理が行われるので、ＣＰＵ１１０による可変長復号および逆量子化の処理は、図３に示したバンドの順序通りに実行される。ここで、アクセラレータ１３０での逆ＤＣＴを、Ｙ，Ｃｂ，Ｃｒのコンポーネント順で実行するものとすると、ＣＰＵ１１０によって第１０のバンドに対する可変長復号および逆量子化の処理が終了されたときに、Ｙについての逆ＤＣＴに必要なすべてのＤＣＴ係数が得られ、アクセラレータ１３０による逆ＤＣＴの演算を開始することができるようになる。
【００６８】
従って、第１から第１０までのバンドに対する可変長復号および逆量子化の処理期間が、上述した第１のＶＬＤ＆ＩＱ期間に対応することになり、この期間には、Ｙについての逆ＤＣＴに必要のないバンド（第３〜第６のバンド）に対する処理も実行されるので、この期間が必要以上に長くなり、第１のＩＤＣＴ期間の開始タイミングが遅れてしまう。さらに、アクセラレータ１３０での逆ＤＣＴが開始された後、ＣＰＵ１１０は残りのバンドに対する処理を実行するが、Ｃｂ，Ｃｒに対応する一部のバンドについては第１のＶＬＤ＆ＩＱ期間に処理済みとなっているので、Ｃｂに対応するＤＣＴ係数を得るための期間（第２のＶＬＤ＆ＩＱ期間に対応）、Ｃｒに対応するＤＣＴ係数を得るための期間（第３のＶＬＤ＆ＩＱ期間に対応）の両方とも短くなってしまう。その結果、ＣＰＵ１１０での処理とアクセラレータ１３０での処理とが並列に実行される期間が短くなり、逆に第２のＶＬＤ＆ＩＱ期間以降で並列に処理されない期間が長くなるために、全体の処理時間も長くなってしまう。
【００６９】
これに対して、本実施の形態では、可変長復号および逆量子化を開始する前のデータ解析処理により、可変長復号および逆量子化の処理についてもコンポーネントごとに処理するようにバンドの処理順を並び替えることで、第１のＶＬＤ＆ＩＱ期間をできるだけ短くするとともに、ＣＰＵ１１０での処理とアクセラレータ１３０での処理とを並列に実行する期間を長くして、全体の処理時間を短縮する。
【００７０】
図７は、図４のステップＳ１１のデータ解析処理の手順を示すフローチャートである。
データ解析部２１では、まず、処理量予測部３１が、ストリームのヘッダを解析して、符号化されたデータのカラースペースを識別し、これを基にコンポーネントごとの処理量を予測する（ステップＳ３１）。ストリームのヘッダからは、符号化データを構成するコンポーネントの種類や、ＭＣＵ（Minimum Coded Unit）におけるコンポーネントごとのブロックサイズなどを認識することができるが、これらの値はカラースペースごとに異なるものとなる。処理量予測部３１は、これらの情報から、コンポーネントの種類を識別し、それらのコンポーネントごとのデータ量を予測する。すなわち、ブロックサイズが大きいほど、処理すべきデータ量が大きいと推定する。なお、カラースペースの種類としては、例えば、“４：２：２”、“４：１：１”、“４：２：０”といったサンプリング比を用いて表されるものがある。
【００７１】
なお、このステップＳ３１での処理量の予測処理は、上記に限らず、例えば、コンポーネントごとのバンド数、バンドごとの分割ビット数、係数分割の状態、モード設定など、コンポーネントに特有の、あるいはコンポーネントごとのバンドに特有の性質や特徴（すなわち属性）を、ストリームのヘッダを解析することで得て、それらの情報を基に実行されてもよい。また、複数の要素を基に予測処理量の順位を決定してもよい。例えば、バンドごとに割り当てられたＤＣＴ係数のビット数が多いほど、データ量が大きいと予測することができる。
【００７２】
次に、処理順変換部３２は、処理量予測部３１の予測処理により、すべてのコンポーネントの処理量順を決定できるようになったか否かを判定する（ステップＳ３２）。ここで、コンポーネントごとの予測処理量（すなわち、コンポーネントごとのブロックサイズ）がすべて異なれば、それらのすべてを順位付けできるので、ステップＳ３４の処理に移行する。一方、予測処理量が同じコンポーネントがある場合には、ストリームを解析し、バンドの先頭ポインタの位置を基準としてバンドごとの実データ量を検出することで、コンポーネントごとのデータ量を算出する（ステップＳ３３）。
【００７３】
なお、図３の例の場合、上記のステップＳ３３において実データ量を検出する際には、第１，第２，第７〜第１０の各バンドによりＹ成分についてのデータ量が検出され、第１，第３，第５，第９，第１１の各バンドによりＣｂ成分についてのデータ量が検出され、第１，第４，第６，第９，第１２の各バンドによりＣｒ成分についてのデータ量が検出されればよい。
【００７４】
次に、処理順変換部３２は、ステップＳ３１およびステップＳ３３の処理で得られたデータ量が多い順に、各コンポーネントに対して順位を付与する（ステップＳ３４）。
次に、処理順変換部３２は、ＣＰＵ１１０およびアクセラレータ１３０のそれぞれの処理性能についての判別を行う。具体的には、ＣＰＵ１１０での可変長復号および逆量子化の処理と、アクセラレータ１３０での逆ＤＣＴの処理のうち、どちらがボトルネックになる処理か（すなわち、どちらが低速な処理か）を判別する（ステップＳ３５）。ここで、どちらがボトルネックになるかを示す設定情報は、例えば製品出荷時に、外部記憶装置１４０などにあらかじめ記録されており、処理順変換部３２は、この設定情報を基に判別する。
【００７５】
ＣＰＵ１１０での可変長復号および逆量子化の処理がボトルネックになる場合には、処理順変換部３２は、ステップＳ３４で付与したコンポーネントの処理量順位を、処理量が最小のものを先頭とするように変換する。この例では、コンポーネントの処理量順位を、３位、１位、２位の順に変換する。そして、変換後の順番をコンポーネントの処理順とし、この処理順に従ってバンドの処理順を決定し、リスト化する（ステップＳ３６）。
【００７６】
一方、アクセラレータ１３０での逆ＤＣＴの処理がボトルネックになる場合には、処理順変換部３２は、ステップＳ３４で付与したコンポーネントの処理量順位を、最小のものを最後にし、残りを処理量が小さい順になるように変換する。この例では、コンポーネントの処理量順位を、２位、１位、３位の順に変換する。そして、変換後の順番をコンポーネントの処理順とし、この処理順に従ってバンドの処理順を決定し、リスト化する（ステップＳ３７）。
【００７７】
図８は、ＣＰＵでの可変長復号および逆量子化の処理がボトルネックになる場合のバンドの処理順を示す図である。
本実施の形態では、例として、ステップＳ３１およびステップＳ３３でのデータ量の予測処理により、Ｙが１位、Ｃｒが２位、Ｃｂが３位という予測処理量の順位が付与されたものとする。このとき、ＣＰＵ１１０での可変長復号および逆量子化の処理がボトルネックとなる場合には、コンポーネントごとの最終的な処理順は、図７の処理によりＣｂ，Ｙ，Ｃｒの順に決定される。
【００７８】
まず、第１のＶＬＤ＆ＩＱ期間では、Ｃｂ成分のデータを含む第１，第３，第５，第９，第１１のバンドが、可変長復号部１１および逆量子化部１２において順に処理されて、ＤＣＴ係数が出力される。これらのバンドから得られたＤＣＴ係数を用いることで、アクセラレータ１３０では、Ｃｂ成分に対する逆ＤＣＴを実行可能となる。
【００７９】
また、アクセラレータ１３０でのＣｂ成分に対する逆ＤＣＴが開始されるとともに、第２のＶＬＤ＆ＩＱ期間が開始され、この期間では、Ｙ成分のデータを含む第２，第７，第８，第１０のバンドが、可変長復号部１１および逆量子化部１２において順に処理される。Ｃｂ成分の処理を終えたアクセラレータ１３０では、これらのバンドの処理で得られたＤＣＴ係数と、第１のＶＬＤ＆ＩＱ期間で第１，第９の各バンドからすでに得られているＤＣＴ係数とを用いて、Ｙ成分に対する逆ＤＣＴを実行可能となる。
【００８０】
また、アクセラレータ１３０でのＹ成分に対する逆ＤＣＴが開始されるとともに、第３のＶＬＤ＆ＩＱ期間が開始され、この期間では、Ｃｒ成分のデータを含む第４，第６，第１２のバンドが、可変長復号部１１および逆量子化部１２において順に処理される。Ｙ成分の処理を終えたアクセラレータ１３０では、これらのバンドの処理で得られたＤＣＴ係数と、第１のＶＬＤ＆ＩＱ期間で第１，第９の各バンドからすでに得られているＤＣＴ係数とを用いて、Ｃｒ成分に対する逆ＤＣＴを実行可能となる。
【００８１】
図９は、アクセラレータでの逆ＤＣＴの処理がボトルネックになる場合のバンドの処理順を示す図である。
前述のように、本実施の形態では、コンポーネントごとの予測処理量の順位がＹ，Ｃｒ，Ｃｂの順となっているので、アクセラレータ１３０での逆ＤＣＴの処理がボトルネックになる場合には、コンポーネントの最終的な処理順は、図７の処理によりＣｒ，Ｙ，Ｃｂの順に決定される。
【００８２】
まず、第１のＶＬＤ＆ＩＱ期間では、Ｃｒ成分のデータを含む第１，第４，第６，第９，第１２のバンドが、可変長復号部１１および逆量子化部１２において順に処理されて、ＤＣＴ係数が出力される。これらのバンドから得られたＤＣＴ係数を用いることで、アクセラレータ１３０では、Ｃｒ成分に対する逆ＤＣＴを実行可能となる。
【００８３】
また、アクセラレータ１３０でのＣｒ成分に対する逆ＤＣＴが開始されるとともに、第２のＶＬＤ＆ＩＱ期間が開始され、この期間では、Ｙ成分のデータを含む第２，第７，第８，第１０のバンドが、可変長復号部１１および逆量子化部１２において順に処理される。Ｃｒ成分の処理を終えたアクセラレータ１３０では、これらのバンドの処理で得られたＤＣＴ係数と、第１のＶＬＤ＆ＩＱ期間で第１，第９の各バンドからすでに得られているＤＣＴ係数とを用いて、Ｙ成分に対する逆ＤＣＴを実行可能となる。
【００８４】
また、アクセラレータ１３０でのＹ成分に対する逆ＤＣＴが開始されるとともに、第３のＶＬＤ＆ＩＱ期間が開始され、この期間では、Ｃｂ成分のデータを含む第３，第５，第１１のバンドが、可変長復号部１１および逆量子化部１２において順に処理される。Ｙ成分の処理を終えたアクセラレータ１３０では、これらのバンドの処理で得られたＤＣＴ係数と、第１のＶＬＤ＆ＩＱ期間で第１，第９の各バンドからすでに得られているＤＣＴ係数とを用いて、Ｃｂ成分に対する逆ＤＣＴを実行可能となる。
【００８５】
以上の処理によれば、第１，第２，第３のＶＬＤ＆ＩＱ期間のそれぞれにおいて、１つのコンポーネントについての逆ＤＣＴを行うために必要最小限のバンドが処理されるように、バンドの処理順を入れ替えたことにより、アクセラレータ１３０において逆ＤＣＴ処理が開始されるタイミングを早くし、ＣＰＵ１１０およびアクセラレータ１３０の各処理を並列化可能な期間（すなわち、第２のＶＬＤ＆ＩＱ期間の開始時から第３のＶＬＤ＆ＩＱ期間の終了時までの期間）を長くすることができ、その結果、処理全体に要する時間が短縮される。
【００８６】
また、ＣＰＵ１１０での可変長復号および逆量子化の処理がボトルネックになる場合には、予測処理量が最も小さいコンポーネントを最初に処理するようにバンドの処理順を決定することにより、比較的低速なＣＰＵ１１０のみが単独で動作する第１のＶＬＤ＆ＩＱ期間での処理量がより小さくなり、なおかつ、並列化可能な期間である第２，第３のＶＬＤ＆ＩＱ期間での処理量がより大きくなる。これにより、第１のＶＬＤ＆ＩＱ期間が短くなって、逆ＤＣＴの処理開始タイミングをさらに早めることができるとともに、並列化可能な期間をより長くすることができ、その結果、処理全体に要する時間をさらに短縮することが可能になる。
【００８７】
なお、上記の例では、コンポーネントの予測処理量の順位を、３位、１位、２位と変換して、最終的なバンドの処理順を決定していたが、この他に例えば、３位、２位、１位と変換してもよい。３位、１位、２位の順に処理した場合、アクセラレータ１３０が単独で動作する第３のＩＤＣＴ期間を短くすることができるが、その反面、第２のＶＬＤ＆ＩＱ期間の処理量が大きくなることで、第２のＶＬＤ＆ＩＱ期間の終了タイミングより第１のＩＤＣＴ期間の終了タイミングが早くなって、アクセラレータ１３０が待機状態となる期間が発生する可能性が高くなる。一方、３位、２位、１位の順に処理した場合、第１のＩＤＣＴ期間後にアクセラレータ１３０が待機状態となる可能性が低くなるために、全体の処理時間をより短縮できる場合もあり得る。しかし、その反面、アクセラレータ１３０が単独で動作する第３のＩＤＣＴ期間は長くなってしまう。
【００８８】
また、アクセラレータ１３０での逆ＤＣＴの処理がボトルネックになる場合には、予測処理量が最も小さいコンポーネントを最後に処理するようにバンドの処理順を決定することにより、比較的低速なアクセラレータ１３０が単独で動作する第３のＩＤＣＴ期間での処理量がより小さくなり、この期間を短縮できる。また、最後以外のコンポーネントの処理順を処理量の小さい順とすることで、第１のＶＬＤ＆ＩＱ期間の処理量を小さくして、アクセラレータ１３０による逆ＤＣＴ処理の開始タイミングを早めることができる。この結果、処理全体に要する時間をさらに短縮することが可能になる。
【００８９】
次に、上記処理による時間短縮効果について、より具体的に説明する。以下の説明では、例として、処理単位時間ｄを用い、データ解析部２１によるデータ解析に要する処理時間を１ｄ、可変長復号部１１および逆量子化部１２による１つのバンドに対する処理時間を１ｄ、逆ＤＣＴ部１３による１つのコンポーネントに対する処理時間を４ｄと仮定する。また、処理対象のＪＰＥＧデータのストリームは、Ｙ，Ｃｂ，Ｃｒの３つのコンポーネントから構成され、このストリームには図３に示したような順序でバンドが格納されているものとする。
【００９０】
図１０は、ｄｊｐｅｇ方式を用いて並列処理を行った場合の処理時間について説明するための図である。
ｄｊｐｅｇ方式では、ストリーム内の格納順にバンドが処理されることから、ＣＰＵ１１０では、図３と同様の順序でバンドが順次選択されて、可変長復号および逆量子化の処理が実行される。このため、１つのコンポーネント（ここではＹ）についての逆ＤＣＴに必要なＤＣＴ係数が得られるまでには、第１から第１０までの１０個のバンドに対する可変長復号および逆量子化が必要となり、アクセラレータ１３０で逆ＤＣＴが開始されるまでに１０ｄの時間がかかる。さらに、逆ＤＣＴが開始されてからは、ＣＰＵ１１０での可変長復号および逆量子化とアクセラレータ１３０での逆ＤＣＴとが並列に実行される期間は２ｄのみとなり、並列化の効率も低い。この場合にストリーム全体の復号が完了するまで要する時間は、２２ｄとなる。
【００９１】
図１１は、コンポーネントごとの予測処理量を基にバンドの処理順を入れ替えた場合の処理時間について説明するための図である。
この図１１の例は、図７におけるステップＳ３１〜Ｓ３４の処理によって、バンドの処理順が入れ替えられた場合の処理を示している。ここでは、予測処理量がＹ，Ｃｒ，Ｃｂの順に大きいものとし、上記処理によってこの順に順位付けされたものとする。
【００９２】
この場合、ステップＳ３１〜Ｓ３４によるデータ解析処理の後、図１１に示すように、第１，第２，第７，第８，第９，第１０の各バンドに対して、ＣＰＵ１１０によって順次、可変長復号および逆量子化の処理を施していくことで、Ｙ成分の逆ＤＣＴの実行のために必要なすべてのＤＣＴ係数を得ることができる。従って、復号処理の開始から、アクセラレータ１３０での逆ＤＣＴの処理を開始するまでの時間が、データ解析処理時間を含めても７ｄに短縮される。さらに、ＣＰＵ１１０とアクセラレータ１３０の並列処理期間が６ｄに伸びる。以上のように処理が効率化されることにより、全体の処理時間が１９ｄに短縮される。
【００９３】
図１２は、予測処理量と処理性能とを基にバンドの処理順を入れ替えた場合の処理時間について説明するための図である。
この図１２の例は、図７におけるステップＳ３１〜Ｓ３４で付与された予測処理量の順位を、さらにステップＳ３５〜Ｓ３７の処理により、ＣＰＵ１１０およびアクセラレータ１３０の各処理性能を加味して変換した場合の処理を示している。ここでは、ＣＰＵ１１０での可変長復号および逆量子化の処理がボトルネックになるものとして、予測処理量の順位を３位、１位、２位の順に変換した場合について示す。すなわち、コンポーネントの処理順をＣｂ，Ｙ，Ｃｒとし、図８に示した順にバンドを処理していくものとする。
【００９４】
この場合、前述したように、アクセラレータ１３０で逆ＤＣＴが開始されるまでに可変長復号および逆量子化の処理が施されるバンド数が減少し、処理されるデータ量が小さくなる。このため、復号処理の開始から逆ＤＣＴが開始されるまでの時間が６ｄに短縮される。さらに、ＣＰＵ１１０とアクセラレータ１３０の並列処理期間が７ｄに伸びる。この結果、全体の処理時間は１８ｄとなり、図１０の従来の処理例と比較して４ｄだけ短縮され、図１１の処理例と比較しても１ｄだけ短縮されることになる。
【００９５】
なお、上記では、データ解析処理（すなわち、図７によるストリーム解析結果に基づくバンド処理順決定処理）に要する時間を処理単位時間ｄとしていたが、このデータ解析処理時間が、バンド処理順変換後の復号処理全体での時間短縮分（すなわち、最初のバンドに対する可変長復号の開始から最後のコンポーネントに対する逆ＤＣＴの終了までの時間から、図１０における全体の処理時間を差し引いた時間）より短いという条件が成立する場合に、上記実施の形態による処理時間の短縮効果を奏することになる。
【００９６】
また、上記の実施の形態では、符号化および復号の処理において画像データの時間成分と周波数成分とを変換するためにＤＣＴ演算を用いたが、これに限らず、例えばウェーブレット変換などの他の変換方式を用いた圧縮符号化システムに対しても、本発明を適用することが可能である。
【００９７】
さらに、上記の実施の形態では、いわゆるＹＵＶ系のカラースペースを用いて符号化・復号を行うようにしたが、これに限らず、例えばＣＭＹＫ系、ＹＣＣＫ系などの他のカラースペースを用いた場合にも、本発明を適用することが可能である。
【００９８】
また、上記の実施の形態におけるデータ解析や復号処理の機能、さらには可変長復号および逆量子化の処理機能は、コンピュータによって実現することができる。その場合、これらの機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。また、処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気テープやハードディスクなどの磁気記録媒体、光ディスク、光磁気記録媒体、半導体メモリなどがある。
【００９９】
プログラムを流通させる場合には、例えば、そのプログラムが記録された光ディスクなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、そのプログラムを、サーバコンピュータからネットワークを介して他のコンピュータに転送することもできる。
【０１００】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自機に接続された記憶装置に格納する。そして、コンピュータは、その記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１０１】
さらに、上記の実施の形態では、逆ＤＣＴの処理を、ＣＰＵとは別の専用のハードウェア（アクセラレータ）によって実行していたが、この他に例えば、並列に動作可能な複数のＣＰＵを用い、一方のＣＰＵで可変長復号および逆量子化を行い、他方のＣＰＵで逆ＤＣＴを行うような構成に対しても、上記の処理手順を適用することができる。また、この場合には、逆ＤＣＴ機能を含む上記の復号装置の機能を、コンピュータでのソフトウェア処理によって実現することもできる。
【図面の簡単な説明】
【０１０２】
【図１】実施の形態に係る画像復号装置のハードウェア構成を概略的に示すブロック図である。
【図２】画像復号装置が備える機能を示すブロック図である。
【図３】実施の形態で適用されるバンドの分割例を示す図である。
【図４】復号処理時におけるＣＰＵの処理手順を示すフローチャートである。
【図５】復号処理時におけるＣＰＵとアクセラレータとの間の処理シーケンスを示す図である。
【図６】従来のｄｊｐｅｇ方式で復号処理を行った場合のバンドの処理順を示す図である。
【図７】図４のステップＳ１１のデータ解析処理の手順を示すフローチャートである。
【図８】ＣＰＵでの可変長復号および逆量子化の処理がボトルネックになる場合のバンドの処理順を示す図である。
【図９】アクセラレータでの逆ＤＣＴの処理がボトルネックになる場合のバンドの処理順を示す図である。
【図１０】ｄｊｐｅｇ方式を用いて並列処理を行った場合の処理時間について説明するための図である。
【図１１】コンポーネントごとの予測処理量を基にバンドの処理順を入れ替えた場合の処理時間について説明するための図である。
【図１２】予測処理量と処理性能とを基にバンドの処理順を入れ替えた場合の処理時間について説明するための図である。
【図１３】ＪＰＥＧ標準システムにおける復号装置の構成を概略的に示すブロック図である。
【図１４】ＪＰＥＧデータにおけるブロックの構成とスキャン順を説明するための図である。
【図１５】バンドの構成例を示す図である。
【図１６】バンドごとに処理されるデータを示す図である。
【図１７】ｄｊｐｅｇ方式の復号装置の構成を概略的に示すブロック図である。
【図１８】ｄｊｐｅｇ方式の復号処理を並列化する場合のＣＰＵの処理手順を示すフローチャートである。
【符号の説明】
【０１０３】
１１……可変長復号部、１２……逆量子化部、１３……逆ＤＣＴ部、１４……色変換部、１５……ＤＣＴ係数バッファ、２１……データ解析部、２２……復号制御部、３１……処理量予測部、３２……処理順変換部、１１０……ＣＰＵ、１２０……メインメモリ、１３０……アクセラレータ、１３１……演算器、１３２……ローカルメモリ、１４０……外部記憶装置、１５０……バス
【図１】
2009081589.tif 000003
【図２】
2009081589.tif 000004
【図３】
2009081589.tif 000005
【図４】
2009081589.tif 000006
【図５】
2009081589.tif 000007
【図６】
2009081589.tif 000008
【図７】
2009081589.tif 000009
【図８】
2009081589.tif 000010
【図９】
2009081589.tif 000011
【図１０】
2009081589.tif 000012
【図１１】
2009081589.tif 000013
【図１２】
2009081589.tif 000014
【図１３】
2009081589.tif 000015
【図１４】
2009081589.tif 000016
【図１５】
2009081589.tif 000017
【図１６】
2009081589.tif 000018
【図１７】
2009081589.tif 000019
【図１８】
2009081589.tif 000020