(57)【要約】【課題】複数のスレッドを利用して画像復号処理を高速に実行可能とする。【解決手段】同時に実施可能なスレッド数を取得する。また、符号データの符号情報を取得し、取得した符号情報と復号処理条件とから、復号処理する符号データの色成分（コンポーネント）数を決定する。決定した色成分数と、同時に実施可能なスレッド数とから復号処理のスレッド分割方法を決定し、該スレッド分割方法に応じて、画像復号処理を、複数のスレッドに分割して実行する。【選択図】図６
2010074386.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを再生する画像処理装置であって、
同時に実施可能なスレッド数を取得する手段と、
符号データの符号情報を取得する手段と、
前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定する手段と、
前記決定した色成分数と、前記同時に実施可能なスレッド数とから復号処理のスレッド分割方法を決定する手段と、
前記決定したスレッド分割方法に応じて、画像復号処理を、複数のスレッドに分割する手段とを有し、
符号オーダーに対応して復号処理分割方法を切り替え、画像復号処理を複数のスレッドで実行することを特徴とする画像処理装置。
【請求項２】
複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを生成する画像処理装置であって、
同時に実施可能なスレッド数を取得する手段と、
符号データの符号情報を取得する手段と、
前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定する手段と、
各圧縮データパケットのパケット長を取得する手段と、
前記決定した色成分数と、前記パケット長の取得結果と、前記同時に実施可能なスレッド数とに基づいて、スレッド分割方法を決定する手段と、
前記決定したスレッド分割方法に応じて、画像復号処理を複数のスレッドに分割する手段とを有し、
符号オーダーおよびパケット長の取得結果に応じて、復号処理分割方法を切り替え、画像復号処理を複数のスレッドで実行することを特徴とする画像処理装置。
【請求項３】
請求項１又は２記載の画像処理装置において、
符号データはＪＰＥＧ２０００フォーマットであることを特徴とする画像処理装置。
【請求項４】
請求項２又は３記載の画像処理装置において、
パケット長を取得する手段は、パケットのヘッダー情報からパケット長を取得することを特徴とする画像処理装置。
【請求項５】
請求項４記載の画像処理装置において、
ヘッダー情報とは、ＪＰＥＧ２０００におけるＰＬＴマーカーまたは、ＰＬＭマーカーであることを特徴とする画像処理装置。
【請求項６】
請求項２又は３記載の画像処理装置において、
パケット長を取得する手段は、パケットデータを解読してパケット長を取得することを特徴とする画像処理装置。
【請求項７】
複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを再生する画像処理装置における画像処理方法であって、
同時に実施可能なスレッド数を取得するステップと、
符号データの符号情報を取得するステップと、
前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定するステップと、
前記決定した色成分数と、前記同時に実施可能なスレッド数とから復号処理のスレッド分割方法を決定するステップと、
前記決定したスレッド分割方法に応じて、画像復号処理を、複数のスレッドに分割するステップとを有し、
符号オーダーに対応して復号処理分割方法を切り替え、画像復号処理を複数のスレッドで、実行することを特徴とする画像処理方法。
【請求項８】
複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを生成する画像処理装置における画像処理方法であって、
同時に実施可能なスレッド数を取得するステップと、
符号データの符号情報を取得するステップと、
前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定するステップと、
各圧縮データパケットのパケット長を取得するステップと、
前記決定した色成分数と、前記パケット長の取得結果と、前記同時に実施可能なスレッド数とに基づいて、スレッド分割方法を決定するステップと、
前記決定したスレッド分割方法に応じて、画像復号処理を複数のスレッドに分割するステップとを有し、
符号オーダーおよびパケット長の取得結果に応じて、復号処理分割方法を切り替え、画像復号処理を複数のスレッドで実行することを特徴とする画像処理方法。
【請求項９】
請求項７又は８記載の画像処理方法において、
符号データはＪＰＥＧ２０００フォーマットであることを特徴とする画像処理方法。
【請求項１０】
請求項８又は９記載の画像処理方法において、
パケット長を取得するステップは、パケットのヘッダー情報からパケット長を取得することを特徴とする画像処理方法。
【請求項１１】
請求項１０記載の画像処理方法において、
ヘッダー情報とは、ＪＰＥＧ２０００におけるＰＬＴマーカーまたは、ＰＬＭマーカーであることを特徴とする画像処理方法。
【請求項１２】
請求項８又は９記載の画像処理方法において、
パケット長を取得するステップは、パケットデータを解読してパケット長を取得することを特徴とする画像処理方法。
【請求項１３】
請求項７乃至１２のいずれか１項に記載の画像処理方法のステップをコンピュータに実行させるコンピュータプログラム。
【請求項１４】
請求項１３記載のコンピュータプログラムを記録したコンピュータ読取可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの圧縮伸張技術に関する。特に、複数のスレッドのそれぞれに含まれる命令を並列に実行可能なプロセッサを用いて画像復号処理を実行する技術に関する。
【背景技術】
【０００２】
近年、コンピュータ技術の進展に伴い、高速なプロセッサや大容量のメモリ等の様々なハードウェア資源が開発されている。その中の一つに、一つのプロセッサが論理的に複数のプロセッサとして働くことができるようなプロセッサがある。このプロセッサは、複数のスレッドのそれぞれに含まれる命令を並列に実行することが可能である。このようなプロセッサにより、画像処理を行うことにより、画像処理の高速化が期待されている。
【０００３】
例えば、特許文献１や２には、複数のスレッドにより、タイルやブロック毎に符号化／復号化処理を並列に行う技術が開示されている。また、特許文献３には、複数のスレッドにより、各コーディングパス毎に復号処理を並列に行う技術が開示されている。
【０００４】
【特許文献１】特開２００２−３５４２６３号公報
【特許文献２】特開２００６−０６０６８１号公報
【特許文献３】特開２００５−２７７７５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年、画像圧縮符号化方式としてＪＰＥＧ２０００が注目されている。ＪＰＥＧ２０００の符号は、独立に復号可能な部分と不可能な部分とがあり、単純に複数スレッドに分割できない。依存関係にある符号を別スレッドに分けてしまうと、逆に速度低下を招きかねない。従来技術では、このようなことが考慮されていない。
【０００６】
本発明の目的は、上記問題を解決し、複数のスレッドを利用して画像復号処理を高速に実行可能とする画像処理装置、画像処理方法、そのコンピュータプログラム及び情報記録媒体を提供することにある。
【課題を解決するための手段】
【０００７】
請求項１の発明は、複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを再生する画像処理装置であって、同時に実施可能なスレッド数を取得する手段と、符号データの符号情報を取得する手段と、前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定する手段と、前記決定した色成分数と、前記同時に実施可能なスレッド数とから復号処理のスレッド分割方法を決定する手段と、前記決定したスレッド分割方法に応じて、画像復号処理を、複数のスレッドに分割する手段とを有し、符号オーダーに対応して復号処理分割方法を切り替え、画像復号処理を複数のスレッドで実行することを特徴とする。
【０００８】
請求項２の発明は、複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを生成する画像処理装置であって、同時に実施可能なスレッド数を取得する手段と、符号データの符号情報を取得する手段と、前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定する手段と、各圧縮データパケットのパケット長を取得する手段と、前記決定した色成分数と、前記パケット長の取得結果と、前記同時に実施可能なスレッド数とに基づいて、スレッド分割方法を決定する手段と、前記決定したスレッド分割方法に応じて、画像復号処理を複数のスレッドに分割する手段とを有し、符号オーダーおよびパケット長の取得結果に応じて、復号処理分割方法を切り替え、画像復号処理を複数のスレッドで実行することを特徴とする。
【０００９】
請求項３の発明は、請求項１又は２記載の画像処理装置において、符号データはＪＰＥＧ２０００フォーマットであることを特徴とする。
【００１０】
請求項４の発明は、請求項２又は３記載の画像処理装置において、パケット長を取得する手段は、パケットのヘッダー情報からパケット長を取得することを特徴とする。
【００１１】
請求項５の発明は、請求項４記載の画像処理装置において、ヘッダー情報とは、ＪＰＥＧ２０００におけるＰＬＴマーカーまたは、ＰＬＭマーカーであることを特徴とする。
【００１２】
請求項６の発明は、請求項２又は３記載の画像処理装置において、パケット長を取得する手段は、パケットデータを解読してパケット長を取得することを特徴とする。
【００１３】
請求項７の発明は、複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを再生する画像処理装置における画像処理方法であって、同時に実施可能なスレッド数を取得するステップと、符号データの符号情報を取得するステップと、前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定するステップと、前記決定した色成分数と、前記同時に実施可能なスレッド数とから復号処理のスレッド分割方法を決定するステップと、前記決定したスレッド分割方法に応じて、画像復号処理を、複数のスレッドに分割するステップとを有し、符号オーダーに対応して復号処理分割方法を切り替え、画像復号処理を複数のスレッドで実行することを特徴とする。
【００１４】
請求項８の発明は、複数のスレッドを備え、複数の独立に復号可能な圧縮データパケットから構成される符号データを復号し、画像データを生成する画像処理装置における画像処理方法であって、同時に実施可能なスレッド数を取得するステップと、符号データの符号情報を取得するステップと、前記取得した符号情報と復号処理条件とから、復号処理する符号データの色成分数を決定するステップと、各圧縮データパケットのパケット長を取得するステップと、前記決定した色成分数と、前記パケット長の取得結果と、前記同時に実施可能なスレッド数とに基づいて、スレッド分割方法を決定するステップと、前記決定したスレッド分割方法に応じて、画像復号処理を複数のスレッドに分割するステップとを有し、符号オーダーおよびパケット長の取得結果に応じて、復号処理分割方法を切り替え、画像復号処理を複数のスレッドで実行することを特徴とする。
【００１５】
請求項９の発明は、請求項７又は８記載の画像処理方法において、符号データはＪＰＥＧ２０００フォーマットであることを特徴とする。
【００１６】
請求項１０の発明は、請求項８又は９記載の画像処理方法において、パケット長を取得するステップは、パケットのヘッダー情報からパケット長を取得することを特徴とする。
【００１７】
請求項１１の発明は、請求項１０記載の画像処理方法において、ヘッダー情報とは、ＪＰＥＧ２０００におけるＰＬＴマーカーまたは、ＰＬＭマーカーであることを特徴とする。
【００１８】
請求項１２の発明は、請求項８又は９記載の画像処理方法において、パケット長を取得するステップは、パケットデータを解読してパケット長を取得することを特徴とする。
【００１９】
請求項１３の発明は、請求項７乃至１２のいずれか１項に記載の画像処理方法のステップをコンピュータに実行させるコンピュータプログラムである。
【００２０】
請求項１４の発明は、請求項１３記載のコンピュータプログラムを記録したコンピュータ読取可能な情報記録媒体である。
【発明の効果】
【００２１】
本発明では、コンポーネント毎（色成分毎）に処理スレッドが分割されるため、色変換の前までは別スレッドで独立に実行可能であり、複数のスレッドを利用して画像復号処理を高速に実行することができる。
【発明を実施するための最良の形態】
【００２２】
はじめに、図１によりＪＰＥＧ２０００の符号化／復号化処理の概要について説明する。
【００２３】
図１（Ａ）に示すように、符号化処理は色変換１１１、ウェーブレット変換１１２、量子化１１３、符号化１１４、レイヤ形成とパケット生成１１５に大別される。
【００２４】
（１）  色変換
色変換１１１は、複数の色成分により構成される原画像を効率よく圧縮するために行う前処理である。例えば、ＲＧＢ画像をＹＣｂＣｒ画像に変換する。
【００２５】
（２）  ウェーブレット変換
色変換された画像は、ウェーブレット変換１１２により複数の分解レベルに分けられる。各分解レベルは複数のサブバンドのウェーブレット係数で構成される。図２は分解レベルが２のとき（解像度レベル数３）のサブバンドの構成であり、レベル０からレベル２までの解像度レベルが存在する。ここで、小さい解像度レベルに属するウェーブレット係数ほど低い周波数の情報を含むことになる。ウェーブレット変換１１２は、各色成分（コンポーネント）対応に行われる。これは、以降の処理でも同様である。
【００２６】
（３）  量子化
生成されたウェーブレット係数は、量子化１１３される。ここでの量子化は、いわゆるスカラー量子化である。なお、可逆ウェーブレット変換が行われる場合には量子化は行わない。
【００２７】
（４）  符号化
量子化されたウェーブレット係数は、ＥＢＣＯＴアルゴリズムにより符号化１１４される。符号化１１４はコードブロック分割、係数モデリング、算術符号化に大別される。
（ｉ）コードブロック分割
各サブバンドは、コードプロックと呼ばれる正方形のブロック（例えば６４×６４など）に分割される。符号化は、コードブロック単位に以下のように行われる。
（ii）係数モデリング
各コードブロックのウェーブレット係数列に対し、ピットプレーンに基づく係数モデリングを行う。これにより、係数ビットが重要度順に並んだエンペデッド符号列が生成される。ＭＳＢからＬＳＢまでのすべてのビットプレーンは、それぞれコンテクストに応じて三つのサブビットプレーン（パス）に分解される。各サブビットブレーンの境界は打切り点（Ｔruncation  point）と呼ばれ、後でデータを切り捨てる際の最小の分割単位となる。
（iii）算術符号化とポスト量子化
係数モデリングにより生成されたエンベデッド符号列に対して、適応算術符号化を施す。その後、サブビットブレーンの境界である打切り点を単位として、算術符号列を適宜打ち切ることにより（ポスト量子化）、所定の符号ビットストリームを得る。
【００２８】
（５）  レイヤ形成とパケット生成
最後に、生成した符号ビットストリームについてレイヤ形成とパケット生成１１５を行って符号データを得る。複数の画質で順次表示する必要がある場合、すなわちＳＮＲスケーラブルが必要であるとき、符号ビットストリームをレイヤ単位にグループ化する。各レイヤはそれぞれ、各コードブロックのエンベデノド符号の一部を含む。高いレイヤほど画像の再生にあたって重要な成分を含むことになる。
次に、各レイヤを複数のボディと呼ばれる単位に分解し、それぞれにヘッダー情報を付加してパケットを生成する。ここで各ボディは、それぞれ対応する解像度レベルの情報をもつ。したがって生成されるパケットの総数は、レイヤ数と解像度レベル数の積となる。ヘッダー情報には、各コードブロックの算術符号列の長さ、サブビットブレーンの個数などの情報が含まれる。すべてのパケットをまとめ、グローバルヘッダー情報を付加したものが、最終的な符号列（符号データ）となる。ただし、各種ヘッダー情報やデータ分割の最小単位であるサブビットプレーンは、１バイトの整数倍のサイズとすることをＪＰＥＧ２０００では規定している。
【００２９】
復号処理は、図１（Ｂ）に示すように、パケット分解１２１、復号化１２２、逆量子化１２３、逆ウェーブレット変換１２４、逆色変換１２５に大別される。復号化のアルゴリズムは、基本的に上述の符号化のアルゴリズムを逆にだとることになるので、説明を省略する。
【００３０】
図３に符号データの概略構成を示す。符号データは、グローバルヘッダー情報と複数のパケットで構成され、各パケットはパケットヘッダー情報とボディ（符号データ）で構成される。グローバルヘッダー情報にパケット全体のパケット長を示すＰＬＭマーカーが含まれ、パケットヘッダー情報に当該パケットのパケット長を示すＰＬＴマーカーが含まれている。
【００３１】
図４は、本発明に係る画像処理装置の一実施形態の構成例を示したものである。本画像処理装置は、符号／復号処理部２００、コントローラ２１０、操作部２２０、表示部２３０、プリンタ２４０、モデム２５０、ＲＡＭ等の内部記憶装置２６０、ハードディスク等の外部記憶装置２７０、及び、これら各部を接続するバス（データ線、制御線等）２８０等を備えている。この構成はコンピュータと基本的に同じであり、例えば、符号／復号処理部２００とコントローラ２１０の実体はＣＰＵとなる。
【００３２】
符号／復号処理部２００は、複数のスレッドを備えており、画像符号化処理や画像復号処理を複数のスレッドで実行できるようになっている。ここで、スレッドはプログラムの実行単位を意味しており、各スレッドには一つ以上の命令が含まれる。図５にスレッドと命令の関係を示す。図５では簡単に、画像符号処理や画像復号処理の画像処理が命令０から命令９までの１０個の処理に分割されるとしている。また、スレッドの数は０〜３の４個としている。図５（Ａ）は、スレッド０〜３の４個のスレッドのうち、スレッド０が命令０〜９の全ての画像処理を実行することを示している。図５（Ｂ）は、スレッド０が７個の命令に対応する画像処理を実行し、スレッド１〜３がそれぞれ一つの命令に対応する画像処理を実行することを示している。図５（Ｃ）は、スレッド０〜３がそれぞれ２ないし３個の命令に対応する画像処理を実行することを示している。本発明では、画像復号処理の命令群が、コンポーネント（色成分）ごとに別スレッドに分割されて実行されることになる。
【００３３】
コントローラ２１０は装置各部の動作の制御を司る。該コントローラ２１０は、ＲＯＭなどに画像処理プログラムを保持し、該プログラムのもとに符号／復号処理部２００、その他の動作を制御する。
【００３４】
外部記憶装置２７０は、処理対象の原画像データや符号データを記憶している。画像復号処理の場合、コントローラ２１０の制御下で外部記憶装置２７０上の符号データが内部記憶装置２６０に読み出され、符号／復号処理部２００で復号処理される。詳しくは、符号／復号処理部２００では、コントローラ２１０の制御下で、内部記憶装置２６０の符号データを読み込み、コンポーネント毎に複数のスレッドを実行して復号処理を行い、非同期に生成される複数のスレッドの画像データを内部記憶装置２６０の別の領域に書き込む。コントローラ２１０は、内部記憶装置２６０に書き込まれた画像データを整列ないしは付加情報を追加し、外部記憶装置２７０に記憶する。
【００３５】
操作部２２０はマウスやキーボードで構成され、利用者がデータや操作指示などを入力するのに使用される。該操作部２２０を使用して、利用者は復号処理条件を設定入力する。
【００３６】
表示部２３０は外部記憶装置２７０に記憶された画像データを表示するのに使用され、プリンタ２４０は画像データをプリント出力するのに使用される。モデム２５０は、外部記憶装置２７０に記憶された画像データを回線経由で、別装置に送信するのに使用される。なお、別装置で生成された符号データを、回線経由でモデム２５０で受信して、外部記憶装置２７０あるいは直接に内部記憶装置２６０に記憶することも可能である。
【００３７】
図４の装置構成は一例であり、図４に示される全ての装置、機能を使用することは必須ではない。また、他にスキャナなどを備えてもよい。
【００３８】
以下、図４の符号／復号処理部２００とコントローラ２１０の機能（ＣＰＵ機能）をもとに本発明に係る画像復号処理の二、三の実施形態について詳述する。
【実施例１】
【００３９】
これはコンポーネント（色成分）により復号処理のスレッド分割方法を決定し、決定したスレッド分割方法に応じて、画像復号処理を複数のスレッドに分割して実行するものである。図６、図７、図８に本実施例の処理フローチャートを示す。制御はコントローラ２１０が受け持つ。
【００４０】
図６は全体的動作フローチャートを示したものである。ステップ１００１は、符号化処理を実施する実行スレッド数Ｎを決定する。まず、符号／復号処理部２００の並列実行可能なスレッド数Ｎ１を取得する。次に、復号処理条件より、復号する符号のコンポーネント数Ｃ１を取得する。次に、符号データより、符号データのコンポーネント数Ｃ２を獲得する。これらＮ１，Ｃ１，Ｃ２から、復号処理のスレッド数Ｎを以下のように決定する。
Ｎ＝ｍｉｎ（Ｎ１，Ｃ１，Ｃ２）
Ｍｉｎ（）は最小値を意味する。
ステップ１００２は、Ｎ＞１を判断する。そして、Ｎ＞１の時、ステップ１００３にてマルチスレッド処理を実行する。一方、Ｎ＜＝１のとき、ステップ１００４にてシングルスレッド処理を実行する。
その後、ステップ１００５にて終了処理を行う。終了処理は、動作しているプログラムのメモリの開放、生成したデータへのアクセス権の開放などの処理を示すが、特に処理が必要ではない場合もある。
【００４１】
シングルスレッド処理は、一般的なアプリケーションプログラムと同様の動作であり、符号／復号処理部２００に処理させる命令列を１ずつ生成し、符号／復号処理部２００に実行させるものである。
【００４２】
図７は、マルチスレッド処理の動作フローチャートを示したものである。
ステップ１１０１は、マルチスレッド処理の初期化を行う。初期設定では、実行するスレッド数Ｎを設定する。そして、Ｎ個のスレッドとその処理するコンポーネントＣ３の対応を決定する。ここでは、一例としてＮ＝３，Ｃ３＝３とし、以下のとおりとする。なお、Ｃ３はＣ１＜＝Ｃ２ではＣ１、Ｃ２＜＝Ｃ１ではＣ２である。
【００４３】
【表１】
2010074386.tif 000003
【００４４】
ステップ１１０２は、処理が終了か判断する。処理終了でない場合、ステップ１１０２〜１１０５の処理を繰り返す。処理終了すると、ステップ１１０６に進む。
ステップ１１０３では、復号処理スレッドをＮ個起動する。ステップ１１０４では、符号データをパケット単位で読み込む。ステップ１１０５では、読み込んだパケットのコンポーネントを調べ、対応するコンポーネントデータ処理スレッドにデータを渡す。データの提供方法としては、符号データを複製し、スレッドに渡してもよいし、データの開始位置へのポインタを渡してもよい。
ステップ１１０６は、終了処理を行う。これは、図６のステップ１００５と同じである。
【００４５】
図８は、各コンポーネントデータ処理スレッドの動作フローチャートを示したものである。
ステップ１２０１では、コンポーネントデータ処理スレッドが起動される。同時に初期化が行われる。初期化としては、データの読み込み位置の設定、書き込み位置の設定、その他復号条件の設定などが行われる。
ステップ１２０２では、スレッドが終了か判断する。処理終了でない場合、ステップ１２０３〜１２０５の処理を繰り返す。処理終了すると、ステップ１２０６に進む。
ステップ１２０３では、処理する符号データが読み込まれる。ステップ１２０４では、復号処理が行われる。ステップ１２０５では、復号結果が書き込まれる。
ステップ１２０６では、スレッドの終了処理が行われる。終了処理としては、スレッドとして確保したメモリの開放、関数、クラスの解放などが行われる。
【００４６】
本実施例では、コンポーネント毎に処理スレッドが分割されているため、色逆変換処理を除く処理は別スレッドで独立に実行可能であり、画像復号処理を並列に実行でき、かつ、煩雑なスレッドの制御の必要もない。なお、色逆変換処理に関しては、実行スレッドの分割の有無は自由である。
【実施例２】
【００４７】
これはコンポーネント（色成分）とパケット長により復号処理のスレッド分割方法を決定して実行するものである。本実施例では、パケット長はパケットヘッダー情報のＰＬＭやＰＬＴから取得する。
【００４８】
図９に、本実施例のマルチスレッド処理の動作フローチャートを示す。全体動作のフローチャートは図６と同様であるので省略する。また、各コンポーネントデータ処理スレッドの動作フローチャートは図８と同様であるので省略する。図９の各ステップは、以下のように実行される。
【００４９】
ステップ１３０１はマルチスレッド処理の初期化を行う。初期設定では、実行するスレッド数Ｎを設定する。また、Ｎ個のスレッドとその処理するコンポーネントＣ３の対応を決定する。ここでは、一例としてＮ＝３，Ｃ３＝３とし、以下のとおりとする。
【００５０】
【表２】
2010074386.tif 000004
【００５１】
ステップ１３０２は、処理が終了か判断する。処理終了でない場合、ステップ１３０２〜１３０５の処理を繰り返す。処理終了すると、ステップ１３０６に進む。
ステップ１３０３では、復号処理スレッドをＮ個起動する。ステップ１３０４では、ＰＬＭマーカーまたは、ＰＬＴマーカーを読み込む。ステップ１３０５では、各スレッドに配分するデータを決定し、スレッドに符号データを渡す。すなわち、プログレッションオーダーと、ＰＬＭマーカーまたは、ＰＬＴマーカーで読んだパケット長から、符号データをコンポーネント毎に分類し、各コンポーネントデータを、各コンポーネント処理スレッドに渡す。データの提供方法としては、符号データを複製し、スレッドに渡してもよいし、データの開始位置へのポインタを渡してもよい。
【００５２】
処理する符号データをパケットに分割する必要があるが、パケットの長さは、ＰＬＭマーカーまたは、ＰＬＴマーカーより、分割できる。それらのパケットが、どのコンポーネントの符号であるかは、また、プログレッションオーダーおよび符号情報から、判断できる。その結果に基づいて、読み込んだパケットのコンポーネントを計算し、対応するコンポーネントデータ処理スレッドにデータを渡す。
ステップ１３０６は、終了処理を行う。これは、図６のステップ１００５と同様である。
【実施例３】
【００５３】
これは、実施例２と同様にコンポーネント（色成分）とパケット長により復号処理のスレッド分割方法を決定して実行するものである。ただし、本実施例では、パケットヘッダーを先読みして全処理パケットの符号長を取得する。
【００５４】
図１０に、本実施例のマルチスレッド処理の動作フローチャートを示す。全体動作のフローチャートは図６と同様であるので省略する。また、各コンポーネントデータ処理スレッドの動作フローチャートは図８と同様であるので省略する。図１０の各ステップは、以下のように実行される。
【００５５】
ステップ１４０１は、マルチスレッド処理の初期化を行う。初期設定では、実行するスレッド数Ｎを設定する。また、Ｎ個のスレッドとその処理するコンポーネントの対応を決定する。ここでは、一例としてＮ＝３,Ｃ３＝３とし、以下のとおりとする。
【００５６】
【表３】
2010074386.tif 000005
【００５７】
ステップ１４０２は、符号データを読み込み、パケットヘッダーのみを解釈し、全処理パケットの符号長を取得する。
ステップ１４０３は、処理が終了か判断する。処理終了でない場合、ステップ１４０４，１４０５の処理を繰り返す。処理終了すると、ステップ１４０６に進む。
ステップ１４０４では、復号処理スレッドをＮ個起動する。ステップ１４０５では、各スレッドに配分するデータを決定し、スレッドに符号データを渡す。すなわち、プログレッションオーダーと、先読みしたパケット長から、符号データをコンポーネント毎に分類し、各コンポーネントデータを、各コンポーネント処理スレッドに渡す。データの提供方法としては、符号データを複製し、スレッドに渡してもよいし、データの開始位置へのポインタを渡してもよい。
【００５８】
パケットが、どのコンポーネントの符号であるかは、また、プログレッションオーダーおよび符号情報から、判断できる。その結果に基づいて、読み込んだパケットのコンポーネントを計算し、対応するコンポーネントデータ処理スレッドにデータを渡す。
ステップ１４０６は、終了処理を行う。これは、図６のステップ１００５と同様である。
【図面の簡単な説明】
【００５９】
【図１】ＪＰＥＧ２０００の符号化処理と復号化処理の概要を示す図である。
【図２】ＪＰＥＧ２０００におけるウェーブレット変換によるサブバンド分解を説明する図である。
【図３】ＪＰＥＧ２０００符号ストリームの構成の概念図である。
【図４】本発明に係る画像処理装置の装置構成例である。
【図５】スレッドと命令の関係を示す図である。
【図６】本発明の第１、第２、第３の実施形態に係る全体動作に関するフローチャートである。
【図７】本発明の第１の実施形態に係るマルチスレッドに関する処理フローチャートである。
【図８】本発明の第１、第２、第３の実施形態に係るコンポーネント処理に関するフローチャートである。
【図９】本発明の第２の実施形態に係るマルチスレッドに関する処理フローチャートである。
【図１０】本発明の第３の実施形態に係るマルチスレッドに関する処理フローチャートである。
【符号の説明】
【００６０】
２００  符号／復号処理部
２１０  コントローラ
２２０  操作部
２３０  表示部
２４０  プリンタ
２５０  モデム
２６０  内部記憶装置
２７０  外部記憶装置
２８０  バス
【図１】
2010074386.tif 000006
【図２】
2010074386.tif 000007
【図３】
2010074386.tif 000008
【図４】
2010074386.tif 000009
【図５】
2010074386.tif 000010
【図６】
2010074386.tif 000011
【図７】
2010074386.tif 000012
【図８】
2010074386.tif 000013
【図９】
2010074386.tif 000014
【図１０】
2010074386.tif 000015