(57)【特許請求の範囲】
【請求項１】
一以上のスレッドから出力される複数の圧縮符号を結合して符号データを生成する画像処理装置であって、
分割された圧縮処理に対応づけられたスレッドにより画像データの圧縮処理を行う圧縮処理手段と、
前記スレッドから出力される圧縮符号に識別情報を添付する識別情報添付手段と、
既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にあるか否かを判断する判断手段と、
前記既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にある場合には、前記既に生成されている符号データの末尾に、該圧縮符号を結合した符号化データを生成し、前記既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にない場合には、前記既に生成されている符号データの末尾に、前記識別情報添付手段により識別情報が添付された圧縮符号を結合した符号化データを生成する結合手段と、
を含む、
画像処理装置。
【請求項２】
前記圧縮処理手段は複数のスレッドを有し、
前記スレッドの各々は、前記分割された圧縮処理のうちの一以上の圧縮処理が対応付けられる、請求項１記載の画像処理装置。
【請求項３】
前記所定の関係は、前記符号データに含まれる符号の並び順の規則に従う関係である請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記結合手段は、前記圧縮符号を結合する場合に、前記既に生成されている符号データに含まれる圧縮符号の識別情報に含まれるデータサイズに係る情報を更新する請求項１〜請求項３の何れか１項に記載の画像処理装置。
【請求項５】
前記識別情報添付手段は、属性の値が同一である複数の圧縮符号からなるクラスタに対し、一の識別情報を添付する請求項１〜請求項４の何れか１項に記載の画像処理装置。
【請求項６】
前記スレッドが出力する圧縮符号を格納する記憶手段を有し、
前記識別情報添付手段は、前記記憶手段に格納された圧縮符号のうち、属性の値が同一である複数の圧縮符号からなるクラスタ毎に、一の識別情報を添付する請求項５に記載の画像処理装置。
【請求項７】
前記スレッドの一が出力する圧縮符号は、属性の値が同一である請求項５又は請求項６に記載の画像処理装置。
【請求項８】
前記圧縮符号の各々は、複数の属性のうちの一以上の属性を有し、
前記属性の一を選択する属性選択手段を有し、
前記識別情報添付手段は、前記属性選択手段によって選択された属性の値が同一である複数の圧縮符号からなるクラスタに対し、一の識別情報を添付する請求項５〜請求項７の何れか１項に記載の画像処理装置。
【請求項９】
前記画像データの圧縮処理を分割する圧縮処理分割手段を有し、
前記圧縮処理手段は、前記圧縮処理分割手段によって分割された圧縮処理毎に、複数の前記スレッドのうちの一を対応づける請求項１〜請求項８の何れか１項に記載の画像処理装置。
【請求項１０】
前記符号データは、ＪＰＥＧ２０００規格による符号データである請求項１〜請求項９の何れか１項に記載の画像処理装置。
【請求項１１】
前記識別情報は、スタートオブタイルパートヘッダである請求項１０に記載の画像処理装置。
【請求項１２】
一以上のスレッドから出力される複数の圧縮符号を結合して符号データを生成する画像処理装置における画像処理方法であって、
分割された圧縮処理に対応づけられたスレッドにより画像データの圧縮処理を行う圧縮処理ステップと、
前記スレッドから出力される圧縮符号に識別情報を添付する識別情報添付ステップと、
既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にあるか否かを判断する判断ステップと、
前記既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にある場合には、前記既に生成されている符号データの末尾に、該圧縮符号を結合した符号化データを生成し、前記既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にない場合には、前記既に生成されている符号データの末尾に、前記識別情報添付ステップにより識別情報が添付された圧縮符号を結合した符号化データを生成する結合ステップと、
を含む、画像処理方法。
【請求項１３】
前記一以上のスレッドの各々は、前記分割された圧縮処理のうちの一以上の圧縮処理が対応付けられる請求項１２に記載の画像処理方法。
【請求項１４】
請求項１２又は請求項１３に記載の画像処理方法を、コンピュータに実行させるコンピュータプログラム。
【請求項１５】
請求項１４に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、コンピュータプログラム、及び、情報記録媒体に関する。
【背景技術】
【０００２】
従来から、画像データを圧縮処理等する際に、処理を複数のスレッドのそれぞれに対応させて分割することにより、画像処理の高速化を実現する装置等の技術がある。近年、コンピュータ技術の進展に伴い、高速なプロセッサや大容量のメモリ等の様々なハードウェア資源が開発された。その中の一つに、一つのプロセッサが論理的に複数のプロセッサとして働くものがある。このようなプロセッサは、複数のスレッドのそれぞれに含まれる命令を並列に実行させることができ、画像処理を分割して実行することを実現している。
【０００３】
例えば、特開２００５−２５９０４２号公報（特許文献１）には、画像処理を実行する複数のスレッドを生成し、生成したスレッドを処理毎にグループに分け、処理をスレッドに分配し、全体の画像処理を高速化する画像処理方法等の技術が開示されている。
【０００４】
また例えば、特許第３７９７０１３号公報（特許文献２）には、複数のプロセッサを用いて解像度が異なる画像の処理を行う際に、解像度が高くなるにつれて用いられるプロセッサの割合を高くする画像処理方法等の技術が開示されている。
【特許文献１】特開２００５−２５９０４２号公報
【特許文献２】特許第３７９７０１３号公報
【非特許文献１】ＩＳＯ／ＩＥＣ  １５４４４−１
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１及び２に記載の画像処理方法等の技術では、複数のスレッド又はプロセッサ等から出力された処理後のデータを結合する方法については考慮されていない。
【０００６】
例えば、ＩＳＯ／ＩＥＣ  １５４４４−１（非特許文献１参照。）では、符号データに含まれるパケットを結合する順や符号データに含まれるヘッダ情報の内容等が定められている。そこで、複数のスレッドから出力される圧縮処理後の符号（以下、「圧縮符号」という。）を結合する際には、規格に定められた内容にするために、異なるスレッドから出力される圧縮符号を所定の順に並べ替え、又は、所定のヘッダ情報を添付する処理が必要になる。
しかし、並べ替え処理は、複数のスレッドにより実現される処理の高速化のメリットを減じることとなる。
【０００７】
本発明は、上記に鑑みてなされたものであり、分割された画像処理を行う複数の手段から出力される圧縮符号の結合を高速に行う画像処理装置、画像処理方法、コンピュータプログラム、及び、情報記録媒体を提供することにある。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明の画像処理装置は、一以上のスレッドから出力される複数の圧縮符号を結合して符号データを生成する画像処理装置であって、分割された圧縮処理に対応づけられたスレッドにより画像データの圧縮処理を行う圧縮処理手段と、前記スレッドから出力される圧縮符号に識別情報を添付する識別情報添付手段と、既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にあるか否かを判断する判断手段と、前記既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にある場合には、前記既に生成されている符号データの末尾に、該圧縮符号を結合した符号化データを生成し、前記既に生成されている符号データの末尾の圧縮符号と、前記スレッドが出力する圧縮符号と、が所定の関係にない場合には、前記既に生成されている符号データの末尾に、前記識別情報添付手段により識別情報が添付された圧縮符号を結合した符号化データを生成する結合手段と、を含む、構成とすることができる。
【０００９】
本発明はまた、上記画像処理装置によって実現される画像処理方法、その画像処理方法をコンピュータに実行させるコンピュータプログラム、又は、そのコンピュータプログラムが記録された情報記録媒体としてもよい。
【発明の効果】
【００１０】
本発明によれば、分割された画像処理を行う複数の手段から出力される圧縮符号の結合を高速に行うという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、この発明に係る画像処理装置の最良な実施の形態を詳細に説明する。なお、以下の説明では、ＩＳＯ／ＩＥＣ  １５４４４に含まれる規格群を「ＪＰＥＧ２０００規格」という。以下の実施の形態では、ＪＰＥＧ２０００規格による符号データを生成する処理について説明するが、本発明の実施の形態はこの例に限らない。画像データが圧縮処理されて生成する圧縮符号に対し、ヘッダ情報が付加されて結合されることにより符号データが生成される画像処理装置であればよい。
【００１２】
（第１の実施の形態）
本発明に係る画像処理装置の説明に先んじて、ＪＰＥＧ２０００規格による符号データを生成する処理の概略について、図１から図５を用いて説明する。
【００１３】
図１は、ＪＰＥＧ２０００規格による符号データを生成する画像処理装置である。符号データを生成する装置をエンコーダという。図１の画像処理装置１００は、ウェーブレット変換部１０１、量子化部１０２、コードブロック分割部１０３、係数モデリング部１０４、算術符号化部１０５、レート制御部１０６、レイヤ形成部１０７、及び、パケット生成部１０８を有する。
【００１４】
ウェーブレット変換部１０１は、離散ウェーブレット変換（以下、「ＤＷＴ」という。）により、サブバンド分解を行う。量子化部１０２は、ウェーブレット変換部１０１から出力される変換係数の量子化を行う。コードブロック分割部１０３、係数モデリング部１０４、及び、算術符号化部１０５は、エンベデッド算術符号化（以下、「ＥＢＣＯＴ」という。）を実現し、レート制御部１０６、レイヤ形成部１０７、及び、パケット生成部１０８は、ポスト量子化と符号データの生成を行う。以下に、ＥＢＣＯＴ、ポスト量子化、符号データの生成を行う各部の処理を説明する。
（１）コードブロック分割部１０３
【００１５】
量子化された各サブバンドを、コードブロックと呼ばれる正方形のブロック（例えば６４ｘ６４など）に分割する。これらのコードブロックは、それぞれ独立に符号化される。
（２）係数モデリング部１０４
【００１６】
各コードブロックのウェーブレット係数からなる数列に対し、ビットプレーンに基づく係数モデリングを行う。これにより、係数ビットが重要度順に並んだエンベデッド符号列が生成される。ＭＳＢからＬＳＢまでのすべてのビットプレーンは、それぞれ文脈に応じて三つのサブビットプレーンに分解される。ここで分解されたサブビットプレーンを「パス」という。各サブビットブレーンの境界は打切り点（Ｔｒｕｎｃａｔｉｏｎ  ｐｏｉｎｔ）と呼ばれ、後でデータを切り捨てる際の最小の分割単位となる。
（３）算術符号化部１０５及びレート制御部１０６
【００１７】
算術符号化部１０５は、係数モデリングにより生成されたエンベデッド符号列に対して、適応的算術符号化を施す。レート制御部１０６は、サブビットブレーンの境界である打切り点を単位として、算術符号列を適宜打ち切ることにより、目的のビットレートを得る。
（４）レイヤ形成部１０７
【００１８】
複数の画質で順次表示する必要がある場合、すなわちＳＮＲスケーラブルが必要である場合に、符号のレイヤ形成を行う。各レイヤはそれぞれ、各コードブロックのエンベデッド符号の一部を含む。高いレイヤほど画像の再生にあたって重要な成分を含むことになる。 
（５）パケット生成部１０８
【００１９】
各レイヤを複数のボディと呼ばれる単位に分解し、それぞれにヘッダ情報を付加してパケットを生成する。ここで各ボディは、それぞれ対応する解像度レベルの情報をもつ。したがって生成されるパケットの総数は、レイヤ数と解像度レベル数の積となる。ヘッダ情報には、各コードブロックの算術符号列の長さ、サブビットブレーンの個数などの情報が含まれる。
（画像データとタイルの関係）
【００２０】
図２は、画像データとタイルとの関係を説明する図である。図２において、符号ａを付した矩形が画像データの境界を表す。画像データを、座標に基づいて、複数の矩形に分割したものがタイルである。図２では、Ｔ０からＴ１９までのタイルが示されている。図１の画像処理装置１００は、図２における一のタイル毎に、ＤＷＴを行い、生成された圧縮符号を結合して一の符号データを生成する。
（ＤＷＴにより生成されるサブバンド）
【００２１】
図３は、例えば、図２において符号ｂを付したタｓイルＴ８に対してＤＷＴを行って生成するサブバンドを説明する図である。図３は、ＤＷＴの分解レベルが２のとき、すなわち、解像度レベル数が３のサブバンド分解の例であり、ｌｅｖｅｌ０からｌｅｖｅｌ２までの解像度レベルが存在する。このとき、小さい解像度レベルに属する係数ほど低い周波数の情報を含むことになる。
（符号データの構成の概略）
【００２２】
図４は、符号データの構成の概略を説明する図である。図４の符号データは、複数のパケットを有する。圧縮処理によって生成される画像データが含まれる全てのパケットをまとめ、グローバルヘッダ情報を付加したものが、最終的なＪＰＥＧ２０００の符号データとなる。なお、ＪＰＥＧ２０００規格においては、各種ヘッダ情報やデータ分割の最小単位であるサブビットプレーンは、１バイトの整数倍のサイズと規定されている。 
（符号データの構成の詳細）
【００２３】
図５は、符号データの構成の詳細を説明する図である。図５の符号データは、符号データの先頭を表すＳＯＣマーカで始まり、符号データの終端を表すＥＯＣマーカで終わっている。ＳＯＣマーカに続くＭａｉｎ  Ｈｅａｄｅｒには、符号データ全体に係るパラメータ等が格納される。
【００２４】
ＳＯＴマーカは、一のタイルに対して最低１以上設けられる。ＳＯＴマーカは、タイルの先頭に必ず設けられる他に、タイル内に含まれてもよい。タイルの先頭に設けられたＳＯＴマーカの後には、Ｔｉｌｅ−Ｐａｒｔ  Ｈｅａｄｅｒが続く。Ｔｉｌｅ−Ｐａｒｔ  Ｈｅａｄｅｒには、タイル全体に係るパラメータ等が格納される。Ｔｉｌｅ−Ｐａｒｔ  Ｈｅａｄｅｒに続いてＳＯＤマーカが設けられる。圧縮符号はＳＯＤマーカに続く。
（本発明の実施の形態に係る画像処理装置の機能構成の例）
【００２５】
図６は、本発明の実施の形態に係る画像処理装置の機能構成の例を説明する図である。図６の画像処理装置１は、入力される画像データの圧縮処理を分割して複数のスレッドに分配し、各スレッドから出力される圧縮符号を結合し、それらの圧縮符号を含む符号データを生成する。
【００２６】
画像処理装置１は、例えば、スレッド数取得部１１、圧縮処理分割部１２、圧縮処理部１３、属性選択部１４、記憶部１５、識別情報添付部１６、及び、符号データ生成部１８を有する。
【００２７】
スレッド数取得部１１は、圧縮処理部１３において実行されるスレッドの数を取得する。圧縮処理分割部１２は、入力される画像データの圧縮処理を、スレッド数取得部１１によって取得されたスレッド数に分割する。圧縮処理の分割は、例えば、タイル、ページ、オブジェクト、色コンポーネント等の属性に基づいて行われてよい。より詳細には、例えば、一のスレッドに対して割り当てられる画像データが、一のタイルの画像データであるようにしてもよい。また例えば、ＤＷＴ変換より後の圧縮処理を分割する場合には、プリシンクト毎に複数のスレッドに分配してもよい。
【００２８】
圧縮処理部１３は、圧縮処理分割部１２によって分割された圧縮処理毎に、スレッドを対応づけて画像データの圧縮処理を行う。圧縮処理部１３は、例えば、コンピュータのＣＰＵ及びＲＡＭ等によって実現され、複数のスレッドを有する。
【００２９】
記憶部１５は、圧縮処理部１３が有する各スレッドから出力される圧縮符号が格納される。識別情報添付部１６は、スレッドから出力される圧縮符号に対して識別情報を添付する。添付される識別情報は、識別情報添付部１６によって生成されるとよい。
【００３０】
識別情報添付部１６は、例えば、スレッドから出力される圧縮符号毎に識別情報を添付してもよく、また例えば、複数のスレッドから出力される圧縮符号からなるクラスタに対して、一の識別情報を付与してもよい。この場合に、識別情報を付与する対象となるクラスタに含まれる圧縮符号の属性の値は、一のクラスタを通して同一であるとよい。これにより、一のスレッドから全ての圧縮符号が生成される場合と同一の符号データを生成することができる。
【００３１】
なお、圧縮符号の属性は、例えば、タイル、プリシンクト等の位置的な属性の他に、レイヤ、解像度、色コンポーネント等がある。圧縮符号の属性は、またさらに、画像データが複数ページからなる場合には、ページでもよく、画像データが複数のオブジェクトからなる場合には、オブジェクトでもよい。そこで、例えば「解像度」に基づいてクラスタが生成されている場合には、一のクラスタは、同一の解像度に対応する圧縮符号からなる構成とするとよい。
【００３２】
識別情報添付部１６が、圧縮符号のクラスタに対して識別情報を添付する場合には、記憶部１５に格納されている圧縮符号の中から、属性の値が同一の圧縮符号を選択することにより、クラスタが形成される。また例えば、属性の値が同一の圧縮符号が、全て一のスレッドから出力される場合には、記憶部１５に圧縮符号を格納することなく、それらの圧縮符号の先頭に識別情報を添付してもよい。
【００３３】
符号データ生成部１８は、既に生成されている符号データの末尾に、圧縮符号を結合することにより、符号データを生成する。結合される圧縮符号は、スレッドから出力された圧縮符号、又は、識別情報添付部１６によって識別情報を添付された圧縮符号である。
【００３４】
符号データ生成部１８は、既に生成されている符号データの末尾の圧縮符号と、結合する圧縮符号との関係に基づいて、スレッドから出力された圧縮符号と識別情報添付部１６によって識別情報を添付された圧縮符号との何れか一の圧縮符号を選択し、符号データの末尾に結合する。
【００３５】
なお、符号データの末尾の圧縮符号とは、例えば、最後尾のパケットでもよく、また例えば、直前に結合された圧縮符号又は圧縮符号からなるクラスタでもよい。末尾の圧縮符号とは、また例えば、一の識別情報が添付された圧縮符号又は圧縮符号のクラスタでもよい。
【００３６】
属性選択部１４は、複数のスレッドにより生成される圧縮符号からなるクラスタに対して一の識別情報が添付される際に、クラスタ毎に含まれる圧縮符号において同一の値となる属性を選択する。
（スレッドの例）
【００３７】
図７は、スレッド毎に圧縮処理が対応づけられることを説明する図である。図７において、分割された圧縮処理は、各々「命令」と表記され、命令０から命令９までの１０個の処理に分割されている。
【００３８】
図７（Ａ）は、一のスレッドが全ての圧縮処理を行うことを示す図である。図７（Ｂ）は、スレッド０からスレッド３の４個のスレッドのうち、スレッド０が全ての圧縮処理を行うことを示す図である。図７（Ｃ）は、スレッド０からスレッド３のうち、スレッド０が７個の命令に対応する圧縮処理を行い、スレッド１からスレッド３の各々が、一の命令に対応する圧縮処理を行うことを示す図である。図７（Ｄ）は、スレッド０からスレッド３のそれぞれが、２ないし３個の命令に対応する圧縮処理を行うことを示す図である。
（コンピュータによって実現される画像処理装置の例）
【００３９】
図８は、コンピュータによって実現される本発明の画像処理装置を説明する図である。図８のコンピュータ４００は、ＣＰＵ４０１、ＲＡＭ４０２、及び、ハードディスク装置（以下、「ＨＤＤ」という。）４０９を有する。ＣＰＵ４０１、ＲＡＭ４０２、及び、ＨＤＤ４０９は、データバスを介して接続されている。コンピュータ４００は、また、ＤＶＤ、ＣＤ等のリムーバブルメディア等のドライブ装置が接続されるとよい。
コンピュータ４００が画像データの圧縮処理を行って符号データを生成する処理について、以下、説明する。
（１）ＨＤＤ４０９上に記録された画像データが、ＣＰＵ４０１からの命令によってＲＡＭ４０２上に読み込まれる。
（２）ＣＰＵ４０１が、ＲＡＭ４０２上の画像を読み込み、複数のスレッドを実行して圧縮処理を行う。
【００４０】
（３）ＣＰＵ４０１が、複数のスレッドから非同期に生成される圧縮符号を、ＲＡＭ４０２上の、（１）で読み込まれた画像データが格納されている領域とは異なる領域に書き込む。
【００４１】
（４）ＣＰＵ４０１が、ＲＡＭ４０２上に記録された圧縮符号を並べ替え、及び／又は、ヘッダ情報等の識別情報と添付することにより、符号データを生成し、ＨＤＤ４０９に格納する。
（シングルスレッド処理とマルチスレッド処理とを選択する処理の例）
【００４２】
図９は、シングルスレッド処理とマルチスレッド処理との何れの処理を実行するかを決定する際の処理を説明するフロー図である。図９では、並列に実行可能なスレッドの数に基づいて、何れの処理が実行されるかが定められる。
【００４３】
図９のステップＳ１００１では、符号化処理を実施するコンピュータ等において並列実行可能なスレッド数Ｎが取得される。スレッド数Ｎを取得するスレッド数取得部１１は、例えば、コンピュータのＣＰＵ等に備わっている命令を実行することにより実現されてよく、また例えば、その命令を用いたアプリケーション等によって実現されてもよい。ステップＳ１００１では、さらに、最適なスレッド数を決定するプログラムを起動することにより、スレッド数取得部１１を実現してもよい。これにより、もっとも処理能力の高いスレッド数を探索することができる。
【００４４】
ステップＳ１００１に続いてステップＳ１００２に進み、圧縮処理分割部１２が、スレッド数取得部１１によって取得されたスレッド数が、１より大きい値であるか否かを判断する。１より大きい値である場合には、ステップＳ１００３に進み、１である場合には、ステップＳ１００４に進む。
【００４５】
ステップＳ１００２に続くステップＳ１００３では、圧縮処理部１３が、複数のスレッドによりマルチスレッド処理を行う。一方ステップＳ１００２に続くステップＳ１００４では、圧縮処理部１３が、一のスレッドによりシングルスレッド処理を行う。シングルスレッド処理は、一般的なアプリケーションプログラムと同様の動作であり、ＣＰＵに動作させる命令列を１ずつ生成し、ＣＰＵに実行させるものである。
【００４６】
ステップＳ１００３又はステップＳ１００４に続くステップＳ１００５では、ＣＰＵ等により、動作しているプログラムのメモリの開放、生成した符号のアクセス権の開放などの処理が行われるとよい。
（マルチスレッド処理におけるスレッドの起動処理の例）
【００４７】
図１０は、マルチスレッド処理におけるスレッドの起動処理の例を示すフロー図である。図１０の処理は、図９のステップＳ１００３において実行されるものであり、図９のステップＳ１００１で取得されたスレッド数Ｎに基づいて実行される。
【００４８】
図１０のステップＳ１１０１では、マルチスレッド処理の初期化が行われる。より詳細には、実行中のスレッド数Ｎ１の値を０とする。さらに、圧縮処理を実行する画像データにおいて、独立して符号化を行うことができる数ＮＴを算出する。ＮＴは、例えば、ＪＰＥＧ２０００規格におけるタイルの数である。また、処理済みの圧縮処理の数ＮＤの値を０とする。
【００４９】
ステップＳ１１０１に続いてステップＳ１１０２に進み、数ＮＴ、及び、数ＮＤに基づいて、処理されていない圧縮処理の有無が確認される。処理されていない圧縮処理の数ＮＮは、ＮＮ＝ＮＴ−ＮＤにより求められる。ＮＮが１以上の値を有する場合には、ステップＳ１１０３に進み、ＮＮが０の場合には、処理を終了する。
【００５０】
ステップＳ１１０２に続いてステップＳ１１０３に進み、圧縮処理部１３において、現在実行中のスレッドの数Ｎ１と、実行可能なスレッドの数Ｎとに基づいて、新たなスレッドを起動するか否かの判断がなされる。ここでは、Ｎ１がＮより小さな値の場合には、新たなスレッドを起動すると判断され、ステップＳ１１０４に進む。Ｎ１がＮ以上の値の場合には、ステップＳ１１０２に戻って処理を繰り返す。
【００５１】
ステップＳ１１０３に続くステップＳ１１０４では、圧縮処理部１３が、Ｎ１の値に基づいて、圧縮処理を行うスレッドを起動する。ステップＳ１１０４に続いてステップＳ１１０５に進み、圧縮処理部１３が、Ｎ１の値に対し、ステップＳ１１０４で起動されたスレッドの数を加える。ステップＳ１１０５の後、ステップＳ１１０２に戻って処理を繰り返す。
（符号データを結合する処理の例）
【００５２】
図１１は、スレッドから出力された圧縮符号を、符号データに結合する処理を説明するフロー図である。図１１の処理は、例えば、図１０の処理に続いて実行される。図１１のステップＳ１２０１では、圧縮処理に先立って実行される初期化が行われる。初期化の処理には、例えば、圧縮処理等に用いられるメモリ上の領域やバッファの領域の確保、不要なバッファ領域に格納されたデータのクリア、符号化される画像データの読み込み又は画像データが格納されている領域に対するポインタの設定等が含まれる。
【００５３】
ステップＳ１２０１に続いてステップＳ１２０２に進み、符号化の対象となる画像データが、全て処理済みか否かの判断が行われる。全て処理済みの場合には、処理を終了し、未処理の画像データがある場合には、ステップＳ１２０３に進む。
【００５４】
ステップＳ１２０２に続くステップＳ１２０３では、図１０の処理で起動されたスレッドが、符号化対象となる画像データの圧縮処理を実行する。ステップＳ１２０３に続いてステップＳ１２０４に進み、符号データ生成部１８が、既に生成されメモリ上に格納されている符号データへのアクセス権を獲得する。このアクセス権はスレッド毎に対応して獲得される。他のスレッドによりアクセス権が保持されている場合には、アクセス権が獲得できるまでポーリングにより待機する。
【００５５】
ステップＳ１２０４に続いてステップＳ１２０５に進み、符号データ生成部１８が、既に生成されている符号データに対し、圧縮符号を結合する。なお、ここで結合される圧縮符号は、識別情報添付部１６により、先頭にＳＯＴマーカを添付された圧縮符号、又は、スレッドから出力された圧縮符号である。スレッドから出力された圧縮符号が結合された場合には、符号データ生成部１８は、既に生成されている符号データに含まれる識別情報を更新する。例えば、識別情報に含まれるＳＯＴ中のデータサイズに係る情報を更新する。すなわち、更新された識別情報に含まれるデータサイズに係る情報は、更新前のデータサイズに新たに結合された圧縮符号のデータサイズを加算したものとなる。
【００５６】
ステップＳ１２０５に続いてステップＳ１２０６に進み、符号データ生成部１８が、符号データに対するアクセス権を開放した後、ステップＳ１２０２に戻って処理を繰り返す。
【００５７】
なお、図１１の処理では、タイル毎に圧縮処理が分割される場合の例について説明したが、他の属性に基づいて圧縮処理が分割される場合には、識別情報添付部１６が、属性に対応するマーカ等を添付する。
（同一の属性を有する圧縮符号のクラスタに対して識別情報を添付する処理の例）
【００５８】
図１２は、同一の属性を有する圧縮符号のクラスタに対して識別情報を添付して符号データに結合する処理を説明するフロー図である。図１２のステップＳ１３０１では、圧縮処理を行うスレッドの初期化の処理が行われる。初期化の処理には、例えば、圧縮処理等に用いられるメモリ上の領域やバッファの領域の確保、不要なバッファ領域に格納されたデータのクリア、符号化される画像データの読み込み又は画像データが格納されている領域に対するポインタの設定等が含まれる。
【００５９】
ステップＳ１３０１に続いてステップＳ１３０２に進み、符号化の対象となる画像データが、全て処理済みか否かの判断が行われる。全て処理済みの場合には、処理を終了し、未処理の画像データがある場合には、ステップＳ１３０３に進む。
【００６０】
ステップＳ１３０２に続くステップＳ１３０３では、図１０の処理で起動されたスレッドが、符号化対象となる画像データの圧縮処理を実行する。スレッドによって生成された圧縮符号は、記憶部１５に格納される。ステップＳ１３０３に続いてステップＳ１３０４に進み、識別情報添付部１６が、記憶部１５に格納されている圧縮符号について、一の属性を有する圧縮符号が全て揃っているか否かの判断を行う。全て揃っている場合には、その圧縮符号を一のクラスタとして、ステップＳ１３０５に進み、未だ生成されていない圧縮符号がある場合には、ステップＳ１３０３に戻って圧縮処理を繰り返す。
【００６１】
ステップＳ１３０４に続いてステップＳ１３０５に進み、符号データ生成部１８が、既に生成されメモリ上に格納されている符号データへのアクセス権を獲得する。このアクセス権はスレッド毎に対応して獲得される。他のスレッドによりアクセス権が保持されている場合には、アクセス権が獲得できるまでポーリングにより待機する。
【００６２】
ステップＳ１３０５に続いてステップＳ１３０６に進み、符号データ生成部１８が、既に生成されている符号データに対し、圧縮符号のクラスタを結合する。なお、ここで結合される圧縮符号のクラスタは、識別情報添付部１６により、先頭にＳＯＴマーカを添付された圧縮符号のクラスタ、又は、スレッドから出力された圧縮符号のクラスタである。
【００６３】
スレッドから出力された圧縮符号のクラスタが結合された場合には、符号データ生成部１８は、既に生成されている符号データに含まれる識別情報を更新する。例えば、識別情報に含まれるＳＯＴ中のデータサイズに係る情報を更新する。すなわち、更新された識別情報に含まれるデータサイズに係る情報は、更新前のデータサイズに新たに結合された圧縮符号のクラスタのデータサイズを加算したものとなる。
【００６４】
ステップＳ１３０６に続いてステップＳ１３０７に進み、符号データ生成部１８が、符号データに対するアクセス権を開放した後、ステップＳ１３０２に戻って処理を繰り返す。
（圧縮符号に識別情報を添付するか否かを判断する処理の例）
【００６５】
図１３は、符号データに結合される圧縮符号に対し、識別情報を添付するか否かを判断する処理の例を示すフロー図である。図１３のステップＳ１４０１では、符号データ生成部１８が、既に生成されている符号データの末尾の圧縮符号と、結合しようとする圧縮符号とが、所定の関係にあるか否かの判断を行う。所定の関係にある場合には、ステップＳ１４０２に進み、所定の関係にない場合には、ステップＳ１４０３に進む。
【００６６】
なお、所定の関係とは、例えば、ＪＰＥＧ２０００規格による符号データを生成する場合に、一のプログレッシブ順で定められるデフォルトの出現順を満たす関係である。これにより、デフォルトの出現順となる順に結合される場合には、識別情報が添付されない圧縮符号を結合すればよく、一のスレッドから全ての圧縮符号が出力される場合と同一の符号データを生成することができる。これは、圧縮符号に含まれる識別情報を最小限にするという効果を奏する。なお、「デフォルトの出現順」を「標準の並び順」ともいう。
【００６７】
ステップＳ１４０１に続くステップＳ１４０２では、識別情報添付部１６が、新たにスレッドから出力された圧縮符号に対して識別情報を添付する。この識別情報には、例えば、圧縮符号のデータサイズが含まれる。またここで識別情報を添付される圧縮符号は、一以上のスレッドから出力された複数の圧縮符号からなるクラスタでもよい。このクラスタは、同一の属性を有するとよい。
【００６８】
ステップＳ１４０２又はステップＳ１４０１に続くステップＳ１４０３では、符号データ生成部１８が、圧縮符号を符号データの末尾に結合する。ステップＳ１４０３の処理は、図１１のステップＳ１２０５における符号データ生成部１８の処理と同一であるので、ここでは説明を省略する。
（コンピュータにより実現される画像処理装置）
【００６９】
本実施の形態に係る画像処理装置は、例えば、ＣＰＵなどの制御装置と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっていてもよい。
【００７０】
本実施の形態に係る画像処理装置で実行されるコンピュータプログラムは、例えば、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００７１】
また、本実施の形態で実行されるコンピュータプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。本実施の形態の画像処理装置で実行されるコンピュータプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、本実施の形態のコンピュータプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００７２】
本実施の形態の画像処理装置で実行されるコンピュータプログラムは、図６に示した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体からコンピュータプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、各部が主記憶装置上に生成されるようになっていてもよい。
【図面の簡単な説明】
【００７３】
【図１】ＪＰＥＧ２０００規格による符号データを生成する画像処理装置を説明する図である。
【図２】画像データとタイルとの関係を説明する図である。
【図３】タイルに対してＤＷＴを行って生成するサブバンドを説明する図である。
【図４】符号データの構成の概略を説明する図である。
【図５】符号データの構成の詳細を説明する図である。
【図６】本発明の実施の形態に係る画像処理装置の機能構成の例を説明する図である。
【図７】スレッド毎に圧縮処理が対応づけられることを説明する図である。
【図８】コンピュータによって実現される本発明の画像処理装置を説明する図である。
【図９】シングルスレッド処理とマルチスレッド処理との何れの処理を実行するかを決定する際の処理を説明するフロー図である。
【図１０】マルチスレッド処理におけるスレッドの起動処理の例を示すフロー図である。
【図１１】圧縮符号を符号データに結合する処理を説明するフロー図である。
【図１２】圧縮符号のクラスタに対して識別情報を添付する処理を説明するフロー図である。
【図１３】圧縮符号に対し識別情報を添付するか否かを判断する処理の例を示すフロー図である。
【符号の説明】
【００７４】
１  画像処理装置
１１  スレッド数取得部
１２  圧縮処理分割部
１３  圧縮処理部
１４  属性選択部
１５  記憶部
１６  識別情報添付部
１８  符号データ生成部
１００  画像処理装置
１０１  ウェーブレット変換部
１０２  量子化部
１０３  コードブロック分割部
１０４  係数モデリング部
１０５  算術符号化部
１０６  レート制御部
１０７  レイヤ形成部
１０８  パケット生成部
４００  コンピュータ
【図１】
0005181816.tif 000002
【図２】
0005181816.tif 000003
【図３】
0005181816.tif 000004
【図４】
0005181816.tif 000005
【図５】
0005181816.tif 000006
【図６】
0005181816.tif 000007
【図７】
0005181816.tif 000008
【図８】
0005181816.tif 000009
【図９】
0005181816.tif 000010
【図１０】
0005181816.tif 000011
【図１１】
0005181816.tif 000012
【図１２】
0005181816.tif 000013
【図１３】
0005181816.tif 000014