(57)【要約】【課題】  画像処理を並列処理で実行する際に各処理部の待ち時間を減らして効率的に処理を実行する技術を提供する。【解決手段】  互いに隣接し合って並ぶ複数の部分画像に対して、複数の処理部を使用して繰り返し行う画像処理において、所定の処理を行う。この画像処理は、部分画像を表す第１の部分画像データに対して第１の処理を行ってＭ種類（Ｍは２以上の整数）の第２の部分画像データを生成し、Ｍ種類の第２の部分画像データに対して、それぞれ対応するＭ種類の第２の処理を行う画像処理である。画像処理を実行する際には、ｉ番目（ｉは正の整数）の部分画像に関する第２の処理と、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）のいずれかの部分画像に関する第１の処理と、を並列処理する。【選択図】  図８
2006065460.tif 000002
【特許請求の範囲】
【請求項１】
互いに隣接し合って並ぶ複数の部分画像に対して、複数の処理部を使用して繰り返し画像処理を行う方法であって、
前記画像処理は、前記部分画像を表す第１の部分画像データに対して第１の処理を行って第２の部分画像データを生成し、前記第２の部分画像データに対して、第２の処理を行う画像処理であり、
前記方法は、ｉ番目（ｉは正の整数）の部分画像に関する前記第２の処理と、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）のいずれかの部分画像に関する前記第１の処理とを、それぞれ前記第１および第２の処理を実行可能な複数の処理部を使用して、並列処理する方法。
【請求項２】
請求項１記載の方法であって、
前記第１の処理は、第１の表色系で表された前記第１の部分画像データを、Ｍ個（Ｍは２以上の整数）の色成分を有する第２の表色系で表された画像データに変換して、各色成分についての前記Ｍ種類の第２の部分画像データを生成する処理であり、
前記第２の処理は、ハーフトーン処理である、方法。
【請求項３】
請求項１記載の方法であって、
（ａ）ｉ番目（ｉは正の整数）の部分画像に関する前記第２の処理であってまだ前記処理部に割り付けられていないものと、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）の部分画像に関する前記第１の処理であってまだ前記処理部に割り付けられていないものと、を含む対象処理集合の各処理を、順に前記複数の処理部に割り当てる工程と、
（ｂ）前記複数の処理部に、割り当てられた順に前記第１および第２の処理を実行させる工程と、を含む方法。
【請求項４】
請求項３記載の方法であって、さらに、
（ｃ）前記工程（ａ）に先だって、直前に実行された前記第１の処理の実行結果に基づいて、前記対象処理集合の前記第１の処理の見積もり負荷を見積もり、直前に実行された同一種類の前記第２の処理の実行結果に基づいて、前記対象処理集合の前記第２の処理の見積もり負荷を見積もる工程を含み、
前記工程（ａ）は、
（ａ１）前記見積もり負荷の大きい順である優先順位に従って前記対象処理集合に含まれる一つの処理を選択し、それまでに割り当てられている処理の見積もり負荷の合計が最も少ない処理部に割り当てる工程と、
（ａ２）前記工程（ａ１）を繰り返す工程と、を含む方法。
【請求項５】
請求項１記載の方法であって、
（ａ）ｉ番目（ｉは正の整数）の部分画像に関する前記第２の処理であってまだ前記処理部に割り付けられていないものと、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）の部分画像に関する前記第１の処理であってまだ前記処理部に割り付けられていないものと、を含む対象処理集合の中から一つの処理を選択し、前記複数の処理部のうちの一つに割り当てて実行させる工程と、
（ｂ）前記工程（ａ）を繰り返す工程と、を含む方法。
【請求項６】
請求項５記載の方法であって、さらに、
（ｃ）前記工程（ａ）に先だって、直前に実行された前記第１の処理の実行結果に基づいて、前記対象処理集合の前記第１の処理の見積もり負荷を見積もり、直前に実行された同一種類の前記第２の処理の実行結果に基づいて、前記対象処理集合の前記第２の処理の見積もり負荷を見積もる工程を含み、
前記工程（ａ）は、
前記対象処理集合の中で前記見積もり負荷が最も大きい処理を選択し、実行すべき処理が最初になくなる処理部に割り当てて実行させる工程を含む、方法。
【請求項７】
請求項１記載の方法であって、
前記画像処理は、前記第１の部分画像データに対して前記第１の処理を行ってＭ種類（Ｍは２以上の整数）の前記第２の部分画像データを生成し、前記Ｍ種類の第２の部分画像データに対して、それぞれ対応するＭ種類の前記第２の処理を行う画像処理であり、
前記Ｍ種類の第２の処理のうちの少なくとも一部の処理は、直前の部分画像に関する同一の種類の処理が完了した後にのみ実行可能な制限処理であり、
前記対象処理集合は、さらに、（ｉ＋１）番目〜（ｉ＋ｑ）番目（ｑは正の整数）の部分画像に関する前記制限処理であって、まだ前記処理部に割り付けられておらず、前記処理部に割り付けられたと仮定した場合に実行を開始する予定時刻において直前の部分画像に関する同一の種類の制限処理が完了している制限処理を含む、方法。
【請求項８】
請求項７記載の方法であって、
前記対象処理集合は、さらに、前記第２の処理のうち前記制限処理ではない非制限処理であって、（ｉ＋１）番目〜（ｉ＋ｑ）番目（ｑは正の整数）の部分画像に関する処理であり、まだ前記処理部に割り付けられていない処理を含む、方法。
【請求項９】
請求項８記載の方法であって、
前記第１の処理は、第１の表色系で表された前記第１の部分画像データを、Ｍ個の色成分を有する第２の表色系で表された画像データに変換して、各色成分についての前記Ｍ種類の第２の部分画像データを生成する処理であり、
前記第２の処理は、ハーフトーン処理であり、
前記制限処理は、誤差拡散法を使用して行われるハーフトーン処理であり、
前記非制限処理は、ディザ法を使用して行われるハーフトーン処理である、方法。
【請求項１０】
互いに隣接し合って並ぶ複数の部分画像に対して、複数の処理部を使用して繰り返し画像処理を行う画像処理装置であって、
前記画像処理は、前記部分画像を表す第１の部分画像データに対して第１の処理を行って第２の部分画像データを生成し、前記第２の部分画像データに対して、第２の処理を行う画像処理であり、
前記画像処理装置は、ｉ番目（ｉは正の整数）の部分画像に関する前記第２の処理と、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）のいずれかの部分画像に関する前記第１の処理と、を並列処理する画像処理装置。
【請求項１１】
請求項１０記載の画像処理装置であって、
ハイパースレッディングにより前記処理集合を実行し、
前記処理部は、スレッドを処理するスレッド処理部である、画像処理装置。
【請求項１２】
互いに隣接し合って並ぶ複数の部分画像に対して、複数の処理部を使用して繰り返し画像処理を行わせるためのコンピュータプログラムであって、
前記画像処理は、前記部分画像を表す第１の部分画像データに対して第１の処理を行って第２の部分画像データを生成し、前記第２の部分画像データに対して、第２の処理を行う画像処理であり、
前記コンピュータプログラムは、ｉ番目（ｉは正の整数）の部分画像に関する前記第２の処理と、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）のいずれかの部分画像に関する前記第１の処理と、を並列処理させる機能を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像処理を並列処理で実行する技術に関する。
【背景技術】
【０００２】
従来より、各画素が有する各インク色の階調値で表された画像データを、各画素におけるインク色のドットの有無で表された画像データに変換する際に、並列処理を行う技術が開発されてきた。たとえば、特許文献１には、処理内容に応じてラスタライズ（並べ替え）処理と、ハーフトーン処理とを別のスレッドで実行する技術が開示されている。
【０００３】
【特許文献１】特開２０００−２９３６７４号公報
【０００４】
しかし、上記の技術においては、各スレッド、すなわち処理部の待ち時間を減らして効率的に処理を実行する点ついては考慮されていなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明はかかる点に鑑みてなされたもので、画像処理を並列処理で実行する際に各処理部の待ち時間を減らして効率的に処理を実行する技術を提供することを主たる目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、互いに隣接し合って並ぶ複数の部分画像に対して、複数の処理部を使用して繰り返し行う画像処理において、所定の処理を行う。この画像処理は、部分画像を表す第ｆ１の部分画像データに対して第１の処理を行ってＭ種類（Ｍは２以上の整数）の第２の部分画像データを生成し、Ｍ種類の第２の部分画像データに対して、それぞれ対応するＭ種類の第２の処理を行う画像処理である。画像処理を実行する際には、ｉ番目（ｉは正の整数）の部分画像に関する第２の処理と、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）のいずれかの部分画像に関する第１の処理と、を並列処理する。
【０００７】
このような態様とすれば、第１の処理と第２の処理の前後関係を保ちつつ、第１の処理の完了を待って一部の処理部があそんでしまう時間を少なくすることができる。よって、画像処理を並列処理で実行する際に各処理部の待ち時間を減らして効率的に処理を実行することができる。
【０００８】
なお、第１の処理は、第１の表色系で表された第１の部分画像データを、Ｍ個の色成分を有する第２の表色系で表された画像データに変換して、各色成分についてのＭ種類の第２の部分画像データを生成する色変換処理とすることができる。また、第２の処理は、ハーフトーン処理とすることができる。
【０００９】
なお、画像処理においては、以下のように静的スケジューリングを行って、処理を実行することができる。すなわち、（ａ）ｉ番目（ｉは正の整数）の部分画像に関する第２の処理であってまだ処理部に割り付けられていないものと、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）の部分画像に関する第１の処理であってまだ処理部に割り付けられていないものと、を含む対象処理集合の各処理を、順に複数の処理部に割り当てる。そして、（ｂ）複数の処理部に、割り当てられた順に第１および第２の処理を実行させる。
【００１０】
このような態様とすれば、ｉ番目（ｉは正の整数）の部分画像に関する第２の処理と、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）のいずれかの部分画像に関する第１の処理とが、並列処理されやすくなるように、処理部に処理を割り当てることができる。
【００１１】
なお、画像処理の際に、以下のような手順を行うこともできる。すなわち、処理部への処理の割り当てに先だって、直前に実行された第１の処理の実行結果に基づいて、対象処理集合の第１の処理の見積もり負荷を見積もる。また、直前に実行された同一種類の第２の処理の実行結果に基づいて、対象処理集合の第２の処理の見積もり負荷を見積もる。そして、処理部に処理を割り当てる際には、以下のようにする。すなわち、見積もり負荷の大きい順である優先順位に従って対象処理集合に含まれる一つの処理を選択し、それまでに割り当てられている処理の見積もり負荷の合計が最も少ない処理部に割り当てる。そして、そのような割り当てを繰り返す。このような態様とすれば、直前の実行結果に基づいて、正確に見積もられた負荷を使用して、各処理部間の負荷の均等化を図ることができる。
【００１２】
また、画像処理においては、以下のように動的スケジューリングを行って、処理を実行することができる。すなわち、（ａ）ｉ番目（ｉは正の整数）の部分画像に関する第２の処理であってまだ処理部に割り付けられていないものと、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）の部分画像に関する第１の処理であってまだ処理部に割り付けられていないものと、を含む対象処理集合の中から一つの処理を選択し、複数の処理部のうちの一つに割り当てて実行させる。そして、それを繰り返す。
【００１３】
このような態様としても、ｉ番目（ｉは正の整数）の部分画像に関する第２の処理と、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）のいずれかの部分画像に関する第１の処理とが、並列処理されやすくなる。
【００１４】
なお、処理部への処理の割り当ておよび実行に先だって、上述のように直前の実行結果に基づいて、対象処理集合の各処理の見積もり負荷を見積もることが好ましい。そして、処理部への処理の割り当ておよび実行においては、対象処理集合の中で見積もり負荷が最も大きい処理を選択し、実行すべき処理が最初になくなる処理部に割り当てて実行させることが好ましい。このような態様とすれば、直前の実行結果に基づいて正確に見積もられた負荷と、実際の処理結果とを使用して、各処理部間の負荷の均等化をより高度に図ることができる。
【００１５】
また、Ｍ種類の第２の処理のうちの少なくとも一部の処理が、直前の部分画像に関する同一の種類の処理が完了した後にのみ実行可能な制限処理である場合には、以下のような態様とすることが好ましい。すなわち、対象処理集合は、さらに、（ｉ＋１）番目〜（ｉ＋ｑ）番目（ｑは正の整数）の部分画像に関する制限処理であって、まだ処理部に割り付けられておらず、処理部に割り付けられたと仮定した場合に実行を開始する予定時刻において直前の部分画像に関する同一の種類の制限処理が完了している制限処理を含む。このような態様とすれば、より多くの種類の処理を使用して、処理部があそんでしまわず効率的に処理を実行できるように、処理を割り付けることができる。
【００１６】
なお、対象処理集合は、さらに、第２の処理のうち制限処理ではない非制限処理であって、（ｉ＋１）番目〜（ｉ＋ｑ）番目（ｑは正の整数）の部分画像に関する処理であり、まだ処理部に割り付けられていない処理を含むこともできる。このような態様とすれば、さらに多くの種類の処理を使用して、処理部の待ち時間が少なくなり、処理部が効率的に処理を実行できるように、処理部に処理を割り当てることができる。
【００１７】
ここで、制限処理は、誤差拡散法を使用して行われるハーフトーン処理とすることができる。そして、非制限処理は、ディザ法を使用して行われるハーフトーン処理とすることができる。
【００１８】
また、画像諸装置は、ハイパースレッディングにより処理集合を実行することが好ましく、処理部は、スレッドを処理するスレッド処理部であることが好ましい。
【００１９】
なお、本発明は、種々の形態で実現することが可能である。例えば、処理の割り当て方法、処理割り当て装置、画像処理方法、画像処理装置、印刷制御方法、印刷制御装置、印刷方法、印刷装置、そして、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体等の形態で実現することができる。
【発明を実施するための最良の形態】
【００２０】
以下では、発明の実施の形態を次の順序で説明する。
Ａ．実施形態の概要．
Ｂ．第１の実施形態．
Ａ１．装置の全体構成．
Ａ２．ＣＰＵの内部構成．
Ａ３．色変換処理とハーフトーン処理．
Ｃ．第２の実施形態．
Ｄ．第３の実施形態．
Ｅ．変形例．
【００２１】
Ａ．実施形態の概要．
プリンタドライバにおいて、二つのスレッドを使用して色変換処理とその後のハーフトーン処理を行う。色変換処理とハーフトーン処理は、画像データのラスタライン２行分の部分画像領域ＬＬｓ（ｉ）の単位で、画像の上から順に行われる。各スレッドへの処理の割り付けの際には、未処理のｉ番目の部分画像領域ＬＬｓ（ｉ）についてのＣＭＹＫ各色のハーフトーン処理Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）と、次の（ｉ＋１）番目の部分画像領域ＬＬｓ（ｉ＋１）の色変換処理Ｃｃ（ｉ）と、の中から順に処理が選択されて、各スレッドへ割り付けられる（図７参照）。その際、両スレッドの負荷がほぼ均等になるように割り付けられる。なお、各処理の見積もり負荷は、直前の（ｉ−１）番目の部分画像領域ＬＬｓ（ｉ−１）の処理結果に基づいて計算される。
【００２２】
スレッドに割り付けられた（ｉ＋１）番目の部分画像の色変換処理Ｃｃ（ｉ＋１）は、他方のスレッドに割り付けられたｉ番目の部分画像のいずれかの色のハーフトーン処理とともに、並列処理されることになる（図７および図８左上のＭ（ｉ）参照）。このような態様においては、（ｉ＋１）番目の部分画像の色変換処理Ｃｃ（ｉ＋１）の開始を、直前のｉ番目の部分画像の各色のハーフトーン処理Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）がすべて終了するまで待つことがない。このため、二つのスレッドを有効に活用して、効率的に色変換処理とハーフトーン処理を行うことができる。
【００２３】
Ｂ．第１の実施の形態．
Ｂ１．装置の全体構成．
図１は、第１の実施形態の印刷システムのソフトウェアの構成を示すブロック図である。コンピュータ９０では、所定のオペレーティングシステムの下で、アプリケーションプログラム９５が動作している。また、オペレーティングシステムには、ビデオドライバ９１やプリンタドライバ９６が組み込まれている。
【００２４】
アプリケーションプログラム９５は、マウス１３０やキーボード１２０から入力されるユーザの指示に応じて、レッド（Ｒ），グリーン（Ｇ），ブルー（Ｂ）の３色の色成分からなる原画像データＯＲＧをＣＤ−Ｒ１４０から読み込む。そして、ユーザの指示に応じて、原画像データＯＲＧに画像のレタッチなどの処理を行う。アプリケーションプログラム９５は、処理を行った画像を、ビデオドライバ９１を介してＣＲＴディスプレイ２１に画像を表示する。また、アプリケーションプログラム９５は、ユーザからの印刷指示を受け取ると、プリンタドライバ９６に印刷指示を出し、処理を行った画像を初期画像データＰＩＤとしてプリンタドライバ９６に出力する。
【００２５】
プリンタドライバ９６は、初期画像データＰＩＤをアプリケーションプログラム９５から受け取り、これをプリンタ２２が処理可能な印刷画像データＦＮＬ（ここではシアン、マゼンダ、イエロー、ブラックの４色についての多値化された信号）に変換する。
【００２６】
図１に示した例では、プリンタドライバ９６の内部には、解像度変換モジュール９７と、色変換／ハーフトーンモジュール９９と、並べ替えモジュール１００とが備えられている。プリンタドライバ９６は、さらに、色変換テーブル１０４と、負荷記憶部１０５と、部分画像データ記憶部１０６と、誤差データ記憶部１０７と、を備える。
【００２７】
解像度変換モジュール９７は、初期画像データＰＩＤの解像度をプリンタ２２で印刷を行う際の解像度に変換する。色変換／ハーフトーンモジュール９９は、カラー画像の印刷においては、３次元ルックアップテーブルである色変換テーブル１０４を参照しつつ、ＲＧＢの階調値で各画素の色が現されている画像データＭＩＤ１を、プリンタ２２が使用するシアン（Ｃ）、マゼンダ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）の階調値で各画素の色が表された画像データＭＩＤ２に変換する。なお、色変換／ハーフトーンモジュール９９は、色変換／ＨＴモジュール９９と表記することもある。
【００２８】
色変換／ハーフトーンモジュール９９は、各画素の各色の濃度が各色の階調値で表された画像データＭＩＤ２にハーフトーン処理を行うことによって、各色の濃度が各画素におけるドットの有無で表される画像データＭＩＤ３（「印刷データ」または「ドットデータ」とも呼ぶ）に変換する。
【００２９】
なお、色変換処理およびハーフトーン処理は、ＣＰＵの二つのスレッド９９ｂ、９９ｃで実行される。色変換処理の機能を果たす色変換／ハーフトーンモジュール９９の機能部を、図１において、色変換モジュール９９ｄ，９９ｅとして示す。ハーフトーン処理の機能を果たす色変換／ハーフトーンモジュール９９の機能部を、図１において、ハーフトーンモジュール９９ｆ、９９ｇとして示す。ＣＰＵのスレッド９９ｂ、９９ｃについては、後述する。
【００３０】
ハーフトーン処理は、「２値化処理」とも呼ばれる。このハーフトーン処理は、シアン（Ｃ）、マゼンダ（Ｍ）については、誤差拡散法で行われ、イエロー（Ｙ）、ブラック（Ｋ）については、ディザ法で行われる。
【００３１】
「ディザ法」は、画素に対応する要素内にそれぞれしきい値を有しているｎ×ｍのディザマトリクス（ｎ、ｍは正の整数）と、ｎ×ｍの画素からなる画像領域とを比較し、画像領域の各画素が有する階調値がしきい値よりも高いか否かでドットの形成の有無を決定する方式である。「誤差拡散法」は、一つの対象画素へのドットの形成の有無をしきい値との比較に基づいて決定し、ドットの形成の有無による２段階の濃度表現と、多階調の階調値で指定された濃度と、のずれ（誤差）を、まだ対象画素となっていない他の画素に振り分けて、それらの画素の階調値に上乗せしてゆく方法である。
【００３２】
一般に、同じデータをハーフトーン処理する場合は、ディザ法で行った方が、誤差拡散法で行った場合よりも、処理の負荷が小さくなる。ただし、誤差拡散法でハーフトーン処理を行った方が、一般に画像の印刷結果が高品質となる。ここでは、印刷結果の品質の良悪が目につきやすいシアン、マゼンタについては、誤差拡散法でハーフトーン処理を行うことし、印刷結果の品質の良悪が目につきにくいイエローについては、ディザ法でハーフトーン処理を行うこととする。他のインク色については、ハーフトーン処理全体がシステムに与える負荷を考慮して、いずれの方法を採用するかが決定される。
【００３３】
色変換／ハーフトーンモジュール９９で生成された画像データＭＩＤ３は、並べ替えモジュール１００によりプリンタ２２に転送すべきデータ順に並べ替えられて、最終的な印刷画像データＦＮＬとして出力される。
【００３４】
プリンタ２２は、紙送りモータによって用紙Ｐを搬送する機構と、キャリッジモータによってキャリッジ３１を用紙Ｐの搬送方向ＳＳと垂直な方向ＭＳに往復動させる機構と、キャリッジ３１に搭載されインクの吐出およびドット形成を行う印刷ヘッド２８と、各種の設定データを格納しているＰ−ＲＯＭ４２と、これらの紙送りモータ，キャリッジモータ，印刷ヘッド２８、Ｐ−ＲＯＭ４２および操作パネル３２を制御するＣＰＵ４１とから構成されている。プリンタ２２は、印刷画像データＦＮＬを受け取って、印刷画像データＦＮＬに応じてシアン（Ｃ）、マゼンダ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）で印刷媒体上にドットを形成し、印刷を実行する。
【００３５】
なお、本明細書においては、「印刷装置」とは、狭義にはプリンタ２２のみをさすが、広義にはコンピュータ９０とプリンタ２２とを含む印刷システム全体を表す。
【００３６】
Ｂ２．ＣＰＵの内部構成および動作．
コンピュータ９０のＣＰＵ９０ａは、ハイパースレッディング・テクノロジに対応したＣＰＵである。このＣＰＵ９０ａは、二つのスレッドを並列に処理することが可能である。これら二つのスレッドを、図１において、第１のスレッド９９ｂ、第２のスレッド９９ｃとして示す。以下では、ハイパースレッディング・テクノロジに対応したＣＰＵ９０ａの構成および動作について説明する。
【００３７】
図２は、コンピュータ９０のＣＰＵ９０ａ内における処理を示すブロック図である。ＣＰＵ９０ａは、内部に命令フェッチユニット２２０、命令デコーダ２３０、演算ユニット２４０、命令キャッシュ２１０、データキャッシュ２５０を有している。そして、命令フェッチユニット２２０、命令デコーダ２３０、演算ユニット２４０は、それぞれ処理した命令およびデータを一時的に保管するためのバッファ２２２，２３２，２４２を有している。バッファ２２２，２３２，２４２は、それぞれ第１のスレッド用と第２のスレッド用に分割されている。
【００３８】
命令キャッシュ２１０には、すでに一度使用された命令、およびそれに引き続いて使用されると予想される命令が格納されている。命令フェッチユニット２２０は、命令キャッシュ２１０のアドレスを指定して、命令を取り出す（フェッチする）。その際、第１のスレッド用の命令は第１のスレッド用のバッファに格納される。そして、第２のスレッド用の命令は第２のスレッド用のバッファに格納される。なお、命令キャッシュ２１０内に必要とする命令がない場合には、ＣＰＵ９０ａは、メインメモリ（図示せず）にアクセスして、命令を取り出す。
【００３９】
その後、命令フェッチユニット２２０は、命令デコーダ２３０に取り出した命令を渡す。その際、奇数クロックのタイミングで第１のスレッドの一つの命令を命令デコーダ２３０に投入し、偶数クロックのタイミングで第２のスレッドの一つの命令を命令デコーダ２３０に投入する。すなわち、第１のスレッドの命令と第２のスレッドの命令は、交互に命令デコーダ２３０に投入される。図２では、第２のスレッド用の命令にハッチをつけて示す。
【００４０】
命令デコーダ２３０は、投入された命令をマイクロコードに変換（デコード）し、バッファ２３２に格納する。その際、デコードされた命令が第１のスレッド用の命令である場合は、第１のスレッド用のバッファに格納される。そして、デコードされた命令が第２のスレッド用の命令である場合は、第２のスレッド用のバッファに格納される。
【００４１】
その後、命令デコーダ２３０は、デコードした命令を演算ユニット２４０に投入する。その際、奇数クロックのタイミングで第１のスレッドの一つの命令を演算ユニット２４０に投入し、偶数クロックのタイミングで第２のスレッドの一つの命令を演算ユニット２４０に投入する。演算ユニット２４０は、指定された演算処理を行い、演算結果を、やはりスレッドごと分けてバッファに格納する。
【００４２】
従来のＣＰＵでは、命令フェッチユニット２２０、命令デコーダ２３０、演算ユニット２４０内の各バッファは、全体として一つのスレッドのために用いられた。そのような態様においては、マルチスレッドにおいて処理するスレッドを切り替える際には、命令デコーダ２３０と演算ユニット２４０は、それまでバッファに格納していた前のスレッドの命令を廃棄して、あらためて次のスレッドの命令を命令フェッチユニット２２０から受け取る必要がある。よって、命令デコーダ２３０と演算ユニット２４０は、命令フェッチユニット２２０が取り出す命令が新たに投入されるまでは、あそんでしまうことになる。
【００４３】
しかし、上記のような構成においては、二つのスレッドは、命令の単位で交互に処理されている。また、命令フェッチユニット２２０、命令デコーダ２３０、演算ユニット２４０の各バッファ２２２，２３２，２４２内には、二つのスレッドの命令が同時に格納されている。このため、命令フェッチユニット２２０、命令デコーダ２３０、演算ユニット２４０は、一方のスレッドの一つの命令の処理を終えると、すぐにバッファ内の他方のスレッドの命令を使用して、次の処理に着手することができる。言い換えれば、パイプラインを有効に活用することができる。また、一方のスレッドでエラーや待ちが生じた場合にも、他方のスレッドでは処理を進めることができる。
【００４４】
なお、バッファ２２２，２３２，２４２の第１のスレッドの命令をそれぞれ格納する部分と、それら第１のスレッドの命令を処理する命令フェッチユニット２２０、命令デコーダ２３０、演算ユニット２４０の機能部を、第１のスレッドの「スレッド処理部」と呼ぶことがある。同様に、バッファ２２２，２３２，２４２の第２のスレッドの命令をそれぞれ格納する部分と、それら第２のスレッドの命令を処理する命令フェッチユニット２２０、命令デコーダ２３０、演算ユニット２４０の機能部を、第２のスレッドの「スレッド処理部」と呼ぶことがある。
【００４５】
Ｂ３．色変換処理とハーフトーン処理．
図３は、色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャートである。図４は、色変換処理とハーフトーン処理を行うラスタラインＬＬｓ（ｉ）を示す説明図である。色変換／ハーフトーンモジュール９９による色変換処理とハーフトーン処理とは、具体的には、画像データＭＩＤ１中のラスタライン２行分ずつ行われる。すなわち、画像データＭＩＤ２は、ラスタライン２行分ずつの部分画像として、色変換モジュール９９ｄ，９９ｅとハーフトーンモジュール９９ｆ、９９ｇの間で受け渡される（図１参照）。
【００４６】
なお、この色変換処理とハーフトーン処理とが行われる単位の画像を、本明細書において「部分画像」という。この部分画像という語は、色変換処理の対象である画像データＭＩＤ１中のラスタライン２行分の画像についても使用し、ハーフトーン処理の対象である色変換処理後の画像データＭＩＤ２中のラスタライン２行分の画像についても、使用する。また、部分画像が表されている領域を「部分画像領域」と呼ぶ。そして、色変換処理の対象である部分画像を表す画像データを「第１の部分画像データ」ということがある。また、ハーフトーン処理の対象である部分画像を表す画像データを「第２の部分画像データ」ということがある。
【００４７】
図４では、色変換処理とハーフトーン処理を行う２本のラスタラインを対象ラスタラインＬＬｓ（ｉ）として示す。また、図４においては、直前に色変換処理とハーフトーン処理が行われた２本のラスタラインを参照ラスタラインＬＬｓ（ｉ−１）として示す。対象ラスタラインＬＬｓ（ｉ）よりも上の領域Ａｄは、すでに色変換処理とハーフトーン処理とが行われた領域である。対象ラスタラインＬＬｓ（ｉ）およびそれよりも下の領域Ａｙは、まだ色変換処理とハーフトーン処理が行われていない領域である。ＬＬｓ（ｉ＋１）で示す２本のラスタラインが、対象ラスタラインＬＬｓ（ｉ）の次に色変換処理とハーフトーン処理とが行われる領域である。
【００４８】
色変換処理およびハーフトーン処理は、二つのスレッドにおいて、色変換処理とＣ、Ｍ、Ｙ、Ｋの各インク色のハーフトーン処理を分担させて行われる。以下では、個々のインク色についてのハーフトーン処理を「単位ＨＴ処理」という。
【００４９】
図３のステップＳ１２０では、まず、スレッドに割り付ける単位ＨＴ処理と、色変換処理と、を特定する。第１の実施形態では、対象ラスタラインＬＬｓ（ｉ）の各インク色のハーフトーン処理と、対象ラスタラインＬＬｓ（ｉ）の次のラスタラインＬＬｓ（ｉ＋１）の色変換処理とが、ステップＳ１２０において特定される。なお、対象ラスタラインＬＬｓ（ｉ）の色変換処理は、予め実行され、すでに完了しているものとする。
【００５０】
ステップＳ１３０では、ステップＳ１２０で特定された色変換処理と、各インク色についてのハーフトーン処理と、を二つのスレッドに割り付ける。詳しい処理の内容については後述する。ここでは、ステップＳ１３０における割り付けの結果、たとえば、シアンの単位ＨＴ処理と色変換処理が第１のスレッドに割り付けられ、ブラックと、マゼンタ、イエロの単位ＨＴ処理が、第２のスレッドに割り付けられたものとする。その後、ステップＳ１４０以下およびＳ１７０以下で、それぞれ第１および第２のスレッドにおいて、各処理が実行される。
【００５１】
なお、ステップＳ１４０，Ｓ１７０に先だって、二つのスレッドはあらかじめ作成され、待機状態とされている。ただし、割り付けられた処理を行うステップの実行のたびにスレッドを作成してもよい。なお、あらかじめスレッドを作成しておけば、短時間で処理を開始することができ、効果的である。
【００５２】
ステップＳ１４０では、待機状態にある第１のスレッドを実行状態とする。そして、ステップＳ１５０では、第１のスレッドにおいて、割り付けられた処理、たとえば次のラスタラインＬＬｓ（ｉ＋１）の色変換処理と、対象ラスタラインＬＬｓ（ｉ）のシアンについて単位ＨＴ処理とを行う。その後、ステップＳ１６０で、第１のスレッドを再び待機状態とする。
【００５３】
ステップＳ１５０においては、色変換処理によって生成された画像データＭＩＤ２は、Ｃ、Ｍ、Ｙ、Ｋのそれぞれの画像データとしてコンピュータ９０のメモリ内の部分画像データ記憶部１０６（図１参照）に格納される。そして、次に、ステップＳ１５０においてラスタラインＬＬｓ（ｉ＋１）の単位ＨＴ処理が実行される際には、この対象ラスタラインＬＬｓ（ｉ）のＣ、Ｍ、Ｙ、Ｋの各色のデータが部分画像データ記憶部１０６からとりだされて、使用される。
【００５４】
また、ステップＳ１５０においては、誤差拡散による単位ＨＴ処理において計算された、次のラスタラインＬＬｓ（ｉ＋１）以下に分散されるべきずれ（誤差）は、誤差データ記憶部１０７に格納される。そのずれのデータは、次のラスタラインＬＬｓ（ｉ＋１）の同一色についての単位ＨＴ処理の際に、取り出されて使用される。
【００５５】
さらに、ステップＳ１５０においては、色変換処理、およびシアンの単位ＨＴ処理に要した時間がカウントされ、コンピュータ９０のメモリ内の負荷記憶部１０５（図１参照）に格納される。
【００５６】
一方、ステップＳ１７０では、待機状態にある第２のスレッドを実行状態とする。そして、ステップＳ１８０では、第２のスレッドにおいて、割り付けられた処理、たとえばマゼンタ、イエロ、ブラックについてハーフトーン処理を行う。そして、それらのインク色についてのハーフトーン処理を終えると、ステップＳ１９０で、第２のスレッドを再び待機状態とする。なお、ステップＳ１８０においては、マゼンタ、イエロ、ブラックの各ハーフトーン処理に要した時間がカウントされ、コンピュータ９０のメモリ内の負荷記憶部１０５に格納される。
【００５７】
ステップＳ２００では、画像データＭＩＤ１に含まれるすべてのラスタラインについて、色変換処理およびハーフトーン処理を終えたか否かを判定する。まだ、すべてのラスタラインについて色変換処理およびハーフトーン処理を終えていない場合は、対象ラスタラインＬＬｓ（ｉ）の下側に隣接する２本のラスタラインＬＬｓ（ｉ＋１）を新たに対象ラスタラインとして（図４参照）、ステップＳ１２０以下の処理を繰り返す。画像データＭＩＤ１のすべてのラスタラインについて色変換処理およびハーフトーン処理を終えた場合は、処理を終了する。
【００５８】
なお、ステップＳ１２０およびＳ１３０の処理は、色変換／ハーフトーンモジュール９９の機能部である割り付け部９９ａが実行する。そして、ステップＳ１５０の処理は、色変換／ハーフトーンモジュール９９の機能部である色変換モジュール９９ｄおよびハーフトーンモジュール９９ｆが実行する。一方、ステップＳ１８０の処理は、色変換／ハーフトーンモジュール９９の機能部である色変換モジュール９９ｅ、およびハーフトーンモジュール９９ｇが実行する。
【００５９】
図５は、図３のステップＳ１３０における色変換処理および各色の単位ＨＴ処理のスレッドへの割り付けの手順を示すフローチャートである。ステップＳ１０では、まず、色変換処理および各色についての各単位ＨＴ処理の負荷を見積もる。ここでは、負荷記憶部１０５に格納されている各処理の前回の処理時間を取り出して、それを各処理の負荷とする。
【００６０】
画像においては、隣り合う領域同士は、各色成分の存在割合が互いに近似していることが多い。すなわち、隣り合う領域同士においては、同じ色同士のハーフトーン処理の負荷が近似する可能性が高い。このため、上記のように、直前にハーフトーン処理が行われた参照ラスタラインＬＬｓ（ｉ−１）の処理結果に基づいて、各単位ＨＴ処理の負荷を決定することとすれば、正確に負荷を見積もることができる。同様の理由から、直前に色変換処理が行われた対象ラスタラインＬＬｓ（ｉ）の処理結果に基づいて、ラスタラインＬＬｓ（ｉ＋１）の色変換処理の負荷を決定することとすれば、正確に色変換処理の負荷を見積もることができる。
【００６１】
図６は、負荷の大きさに基づいて順位付けされた色変換処理と各色の単位ＨＴ処理とを示す説明図である。図６においては、Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）が、対象ラスタラインＬＬｓ（ｉ）についての各色の単位ＨＴ処理を表す。そして、Ｃｃ（ｉ＋１）が、次のラスタラインＬＬｓ（ｉ＋１）についての色変換処理を表す。また、図６では、一つ一つの四角が単位ＨＴ処理を表し、四角の左右方向の長さが負荷の大きさを示す。色変換処理Ｃｃ（ｉ＋１）については、二重の四角で示している。図６においては、負荷が大きいほど左に示されている。各単位ＨＴ処理を表す四角の上に示されている番号が、負荷の大きさの順位である。
【００６２】
ステップＳ２０では、色変換／ハーフトーンモジュール９９は、色変換処理と単位ＨＴ処理を、ステップＳ１０で決定した各処理の負荷が大きい順に順位付けする。なお、通常、色変換処理は、各インク色の単位ＨＴ処理よりも負荷が大きい。このため、ステップＳ２０で決定する優先順位においては、通常、色変換処理が第１位となる。
【００６３】
図７は、第１と第２のスレッドに割り付けられた色変換処理、および各色の単位ＨＴ処理を示す説明図である。図５のステップＳ３０では、色変換／ハーフトーンモジュール９９は、ステップＳ２０で決定した順位に沿って色変換処理、単位ＨＴ処理を一つずつ選択して、第１のスレッドと第２のスレッドに割り付ける。これを繰り返して、ステップＳ１２０で特定した各処理をスレッドに割り付ける。具体的には、最初に第１のスレッドに順位第１位の処理を割り付けた後は、すでに割り当てられた単位ＨＴ処理の負荷の合計が最も少ないスレッドに、まだ割り付けられていない処理を、優先順位に従って順に割り付ける。その結果、第１の第２のスレッドには、図７に示すように、色変換処理、単位ＨＴ処理が割り付けられる。
【００６４】
第１の実施形態では、負荷の大きい処理から順に、それまでに割り付けられた単位ＨＴ処理の負荷の合計の少ないスレッドに割り付ける。このため、スレッド間の負荷の差を小さくすることができる。
【００６５】
以上のようにして、図３のステップＳ１３０における色変換処理の割り付けが実行される。なお、図３のステップＳ１５０、Ｓ１８０においては、スレッドに割り付けられた各単位ＨＴ処理は、各スレッドにおいて、図７の並びの順に沿って左から順に実行される。すなわち、スレッドへの割り付けにおいて先に割り付けられた単位ＨＴ処理ほど、実際の色変換処理においても先に実行される。
【００６６】
図８は、第１と第２のスレッドに割り付けられたｉ番目〜（ｉ＋３）番目までの色変換処理および単位ＨＴ処理の実行のされ方を示すガントチャートである。なお、ここでは、処理の切り替えの際のオーバーヘッドや、見積もり負荷と実際の負荷のずれは無視する。上段に示すＧｅ１が、第１の実施形態において、図３の割り付けを各部分画像について繰り返し行って各処理を実行する場合の結果を示す図である。図８の左上の５個の処理Ｃｃ（ｉ＋１）、Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）の並びは、図７と同じである。一方、図８の下段に示すＧｃ１は、比較例における各処理の実行結果である。
【００６７】
図８上段においては、同時にスレッドに割り付けられる処理の上に、各処理が対象とする部分画像を「ＬＬｓ（ｉ）＋ＬＬｓ（ｉ＋１）」等として示している。第１の実施形態においては、図３のステップＳ２００、Ｓ１２０で説明したように、ｉ番目の部分画像領域ＬＬｓ（ｉ）についての各単位ＨＴ処理と、（ｉ＋１）番目の部分画像領域ＬＬｓ（ｉ＋１）についての色変換処理が終了すると、次に、（ｉ＋１）番目の部分画像領域ＬＬｓ（ｉ＋１）についての各単位ＨＴ処理と、（ｉ＋２）番目の部分画像領域ＬＬｓ（ｉ＋２）についての色変換処理が、各スレッドに割り付けられる。割り付けの手順は、図５〜図７で説明した通りである。
【００６８】
また、図３のステップＳ１５０，Ｓ１８０では、先に割り付けたｉ番目の部分画像についての単位ＨＴ処理の最後のものが終了した直後から、次の処理が実行される（図８の破線ｂ１１，ｂ１２参照）。たとえば、図８に示した例では、ｉ番目の部分画像についての単位ＨＴ処理Ｋ（ｉ）が終了した直後から、次の色変換処理Ｃｃ（ｉ＋２）と、単位ＨＴ処理Ｍ（ｉ＋１）が実行されている。
【００６９】
一方、図８の下段に示す比較例Ｇｃ１においては、まず、部分画像の色変換処理が、第１のスレッドで実行されてから、第１および第２のスレッドで各インク色の単位ＨＴ処理が実行される（図８の破線ｂ３１，ｂ３２参照）。たとえば、（ｉ＋１）番目の部分画像の単位ＨＴ処理Ｃ（ｉ＋１）、Ｍ（ｉ＋１）、Ｙ（ｉ＋１）、Ｋ（ｉ＋１）は、（ｉ＋１）番目の部分画像の色変換処理Ｃｃ（ｉ＋１）が実行されてから、実行されている。なお、色変換処理と単位ＨＴ処理との前後関係を、図８において、色変換処理と各単位ＨＴ処理を結ぶ矢印で示す。
【００７０】
なお、比較例における各インク色の単位ＨＴ処理のスレッドへの割り付け方法は、第１の実施形態と同じである。すなわち、負荷の大きい順に、すでに割り当てられた単位ＨＴ処理の負荷の合計が最も少ないスレッドに、各単位ＨＴ処理を割り付ける。
【００７１】
また、比較例においては、単位ＨＴ処理の最後のものが終了した後に、次の部分領域の色変換処理が実行される（図８の破線ｂ２１，ｂ２２，ｂ２３参照）。たとえば、（ｉ＋１）番目の部分画像の色変換処理Ｃｃ（ｉ＋１）は、ｉ番目の部分画像の単位ＨＴ処理のうち最後の単位ＨＴ処理であるＣ（ｉ）が完了してから、実行されている。図８下段においては、同時にスレッドに割り付けられる処理の下に、各処理が対象とする部分画像を「ＬＬｓ（ｉ）」等として示している。
【００７２】
比較例Ｇｃ１においては、各部分画像の色変換処理を第１のスレッドが行っている間、第２のスレッドは使用されない。これに対して、第１の実施形態Ｇｅ１においては、色変換を行っている間、他方のスレッドでは単位ＨＴ処理が行われている。このため、第１の実施形態においては、複数のスレッドを有効に活用して、効率的に処理を行うことができる。具体的には、図８に示すように、同じ、ｉ番目〜（ｉ＋２）番目の部分画像のハーフトーン処理と、（ｉ＋１）番目〜（ｉ＋３）番目の部分画像の色変換処理と、を行うのに、第１の実施形態の方が、比較例に比べて時間Ｔｄｆ１だけ終了時刻が早くなっている。
【００７３】
また、第１の実施形態では、ある部分画像領域ＬＬｓ（ｉ）についてのハーフトーン処理と、次の番目の部分画像領域ＬＬｓ（ｉ＋１）についての色変換処理とを、一つのグループとして、同時にスレッドへの割り付けおよび実行を行っている（図３のステップＳ１２０、図６〜図８参照）。結果として、色変換処理と単位ＨＴ処理との並列処理は、ある部分画像の単位ＨＴ処理と、次の部分画像の色変換処理と、で行われている。このため、一つの部分画像について見た場合に、色変換処理が先に実行され、ハーフトーン処理画素の後に実行されるという関係を保ったまま、各スレッドにおける処理の効率を高めることができる。この前後関係を、図８上段において、色変換処理と各単位ＨＴ処理を結ぶ矢印で示す。
【００７４】
Ｃ．第２の実施形態．
第２の実施形態では、各スレッドに割り付けた処理を実行するタイミングが第１の実施形態とは異なる。他の点は、第１の実施形態と同じである。
【００７５】
図９は、第２の実施形態において、第１と第２のスレッドに割り付けられたｉ番目〜（ｉ＋３）番目までの色変換処理、単位ＨＴ処理の実行のされ方を示すガントチャートである。表記は図８と同じである。また、図９下段に示す比較例Ｇｃ１は、図８下段に示したものと同じである。第１の実施形態においては、図３のステップ１３０で同時にスレッドに割り付けられた各処理、たとえばＣｃ（ｉ＋２）、Ｃ（ｉ＋１）、Ｍ（ｉ＋１）、Ｙ（ｉ＋１）、Ｋ（ｉ＋１）は、直前にステップ１３０で割り付けられた各処理Ｃｃ（ｉ＋１）、Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）がすべて完了するのを待って実行された（図８の破線ｂ１１，ｂ１２参照）。
【００７６】
しかし、第２の実施形態では、割り付け済みの各処理Ｃｃ（ｉ＋１）、Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）を色変換モジュール９９ｄ，９９ｅおよびハーフトーンモジュール９９ｆ，９９ｇにおいて実行している間に、割り付け部９９ａは、次の各処理Ｃｃ（ｉ＋２）、Ｃ（ｉ＋１）、Ｍ（ｉ＋１）、Ｙ（ｉ＋１）、Ｋ（ｉ＋１）を行う（図３のステップ１３０参照）。そして、割り付け結果は、コンピュータ９０のメモリ内に格納される。
【００７７】
なお、割り付けの際に使用する各処理の見積もり負荷（図５のステップＳ１０参照）としては、すでに完了済みの二つ前の部分画像についての処理Ｃｃ（ｉ）、Ｃ（ｉ−１）、Ｍ（ｉ−１）、Ｙ（ｉ−１）、Ｋ（ｉ−１）の処理時間が使用される。このため、第２の実施形態においては、負荷記憶部１０５には、完了済みの処理Ｃｃ（ｉ）、Ｃ（ｉ−１）、Ｍ（ｉ−１）、Ｙ（ｉ−１）、Ｋ（ｉ−１）の処理時間と、現在実行中の処理Ｃｃ（ｉ＋１）、Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）のうちの一部の完了済みの処理の処理時間と、がともに格納されている。
【００７８】
その後、いずれかのスレッドにおいて実行すべき処理がなくなったときには、メモリに格納しておいた割り付け結果に従って、そのスレッドに割り付けられた処理の実行が開始される。図９の例では、第１のスレッドにおいてＣ（ｉ）を完了した後、第２のスレッドにおけるＫ（ｉ）の完了を待たずに、すぐに色変換処理Ｃｃ（ｉ＋２）が実行されている。なお、単位ＨＴ処理Ｋ（ｉ）と色変換処理Ｃｃ（ｉ＋２）が並列処理されている間は、部分画像データ記憶部１０６には、二つの部分画像についての画像データＭＩＤ２が格納されている（図１参照）。すなわち、先に色変換処理Ｃｃ（ｉ＋１）によって生成された部分画像領域ＬＬｓ（ｉ＋１）の画像データＭＩＤ２と、実行中の色変換処理Ｃｃ（ｉ＋２）によって部分的に生成されている部分画像領域ＬＬｓ（ｉ＋２）の画像データＭＩＤ２と、である。
【００７９】
第２の実施形態のような態様とすれば、各スレッドにおける処理Ｃｃ（ｉ＋１）、Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）の完了と同時に、次の各処理Ｃｃ（ｉ＋２）、Ｃ（ｉ＋１）、Ｍ（ｉ＋１）、Ｙ（ｉ＋１）、Ｋ（ｉ＋１）のいずれかを開始することができる。このため、よりスレッドを有効に活用して、効率的に色変換処理およびハーフトーン処理を行うことができる。
【００８０】
言い換えれば、図９下段に示す比較例Ｇｃ１においては、単位ＨＴ処理と色変換処理とは並列に処理されない。これに対して、第２の実施形態においては、あるスレッドにおいてｉ番目の部分画像の単位ＨＴ処理が実行されている間、他のスレッドにおいて、（ｉ＋１）番目および（ｉ＋２）番目の部分画像の色変換処理が実行されうる（図９のＣｃ（ｉ＋１）、Ｃｃ（ｉ＋２）参照）。このため、よりスレッドを有効に活用して、効率的に色変換処理およびハーフトーン処理を行うことができる。たとえば、図９に示すように、同じ、ｉ番目〜（ｉ＋２）番目の部分画像のハーフトーン処理と、（ｉ＋１）番目〜（ｉ＋３）番目の部分画像の色変換処理と、を行うのに、第２の実施形態では、比較例に比べて時間Ｔｄｆ２だけ終了時刻が早くなっている。
【００８１】
Ｄ．第３の実施形態．
第３の実施形態では、実際に色変換処理または単位ＨＴ処理を実行しつつ、次に実行する単位ＨＴ処理を決定する。第３の実施形態は、色変換処理および単位ＨＴ処理のスレッドへの割り付けおよび実行の方法以外は、第１の実施形態と同じである。
【００８２】
図１０は、第３の実施形態における色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャートである。第３の実施形態では、第１の実施形態の図３の方法に代えて、図１０に示す方法で色変換処理と単位ＨＴ処理をスレッドに割り付けて実行する。
【００８３】
図１０のステップＳ１２５では、スレッドに割り付けることができる色変換処理および単位ＨＴ処理を特定する。「スレッドに割り付けることができる色変換処理および単位ＨＴ処理」とは、（ｉ−１）番目の部分画像領域ＬＬｓ（ｉ−１）までの単位ＨＴ処理、およびｉ番目の部分画像領域ＬＬｓ（ｉ）までの色変換がすべて完了しているとき、以下の条件を満たす処理である。すなわち、ｉ番目〜（ｉ＋１）番目の部分画像の単位ＨＴ処理のうちで所定の条件を満たすものと、（ｉ＋１）番目〜（ｉ＋２）番目の部分画像の色変換処理と、である。所定の条件とは、（１）ディザ法による単位ＨＴ処理であるか、または（２）誤差拡散法による単位ＨＴ処理であって先行する部分画像についての単位ＨＴ処理が、現在割り付けを検討している処理の開始予定時刻において完了しているものである。
【００８４】
前述の通り、誤差拡散法は、ドットの形成の有無による濃度表現と、階調値で指定された濃度と、のずれ（誤差）を、まだ対象画素となっていない他の画素に振り分ける。よって、誤差拡散法による単位ＨＴ処理においては、対象とする領域以前の領域についての単位ＨＴ処理が終了していない状態では、まだ前の領域からの誤差が対象とする領域の階調値に加算されていない。このため、対象とする領域以前の領域についての単位ＨＴ処理が終了していない状態では、単位ＨＴ処理を実行できない。これに対して、ディザ法による単位ＨＴ処理は、対象とする領域以前の領域についての単位ＨＴ処理が終了していない状態でも、実行可能である。このため、ステップＳ１２５で「割り付けることができる処理」として特定される単位ＨＴ処理は、ディザ法によるものと、誤差拡散法による単位ＨＴ処理であって先行する部分画像についての単位ＨＴ処理が完了しているものである。
【００８５】
図１１は、第３の実施形態における処理のスレッドへの割り付け方法を示す説明図である。第３の実施形態では、ハーフトーン処理は、シアン（Ｃ）、マゼンダ（Ｍ）については、誤差拡散法で行われ、イエロー（Ｙ）、ブラック（Ｋ）については、ディザ法で行われる。また、（ｉ＋１）番目の部分画像の色変換処理Ｃｃ（ｉ＋１）は、それまでの処理ですでに完了しているものとする。よって、ステップＳ１２５において、特定される処理は、（ｉ＋２）番目の部分画像の色変換処理Ｃｃ（ｉ＋２）と、ディザ法による単位ＨＴ処理であるＹ（ｉ）、Ｋ（ｉ）、Ｙ（ｉ＋１）、Ｋ（ｉ＋１）、誤差拡散法による単位ＨＴ処理で直前の部分画像の処理が完了しているＭ（ｉ）、Ｃ（ｉ）である。これらを図１１において、割り付け可能処理Ｊｐとして示す。
【００８６】
一方、ｉ番目〜（ｉ＋１）番目の部分画像の単位ＨＴ処理であっても、誤差拡散法による単位ＨＴ処理で直前の部分画像の処理が完了していないものを、図１１において、割り付け不可能処理Ｊｉとして示す。なお、図１１の右側には、それぞれの処理が対象とする部分画像領域ＬＬｓ（ｉ）〜ＬＬｓ（ｉ＋２）を示す。
【００８７】
図１０のステップ１３５では、割り付け可能処理Ｊｐのうち、最も負荷の大きい処理を、実行すべき処理が最初になくなるスレッドに割り付ける。なお、各処理の見積もり負荷は、直前に完了した同じ種類の処理の実行結果に基づいて定めることができる。具体的には、色変換処理の見積もり負荷は、直前に完了した色変換処理の処理時間である。単位ＨＴ処理の見積もり負荷は、直前に完了した同じ色の単位ＨＴ処理の処理時間である。
【００８８】
ステップＳ１３５では、たとえば、図１１の矢印ａ１１に示すように、色変換処理Ｃｃ（ｉ＋２）が、第１のスレッドに、時刻Ｐｐ０から開始される処理として割り付けられる。なお、図１１において、割り付け可能処理Ｊｐの左側には、ぞれぞれ負荷の大きさの順番を示している。
【００８９】
ステップＳ１４０では、待機状態にある第１のスレッドを実行状態とする。そして、ステップＳ１５５では、第１のスレッドにおいて、色変換処理Ｃｃ（ｉ＋２）が実行される。その後、ステップＳ１６０で、第１のスレッドを再び待機状態とする。なお、ステップＳ１４０，Ｓ１６０における処理は、第１の実施形態と同じである。
【００９０】
ステップＳ１９５では、まだスレッドに割り付けられていない色変換処理または単位ＨＴ処理が存在するか否かを判定する。まだ割り付けられていない処理が存在する場合には、ステップＳ１２５に戻る。すべての単位ＨＴ処理が第１または第２のスレッドに割り付けられている場合には、処理を終了する。
【００９１】
ステップＳ１２５では、再度、スレッドに割り付けることができる色変換処理および単位ＨＴ処理を特定する。この時点では、スレッドに割り付けることができる色変換処理および単位ＨＴ処理は、図１１に示した最初のＪｐの処理であって、すでにスレッドに割り付けられた色変換処理Ｃｃ（ｉ＋２）以外の処理が特定される。そして、ステップＳ１３５で、図１１の矢印ａ１２に示すように、単位ＨＴ処理Ｍ（ｉ）が、時刻Ｐｐ０から開始される処理として第２のスレッドに割り付けられる。
【００９２】
そして、ステップＳ１７０〜Ｓ１９０において、第２のスレッドにおいて、単位ＨＴ処理Ｍ（ｉ）が実行される。第２のスレッドに関するステップＳ１７０〜Ｓ１９７における手続きは、それぞれ第１のスレッドに関するステップＳ１４０〜Ｓ１９５の手続きと同じである。なお、図１１において、各処理の終了時刻を、Ｐｐ１、Ｐｐ２で示す。
【００９３】
時刻Ｐｐ１において誤差拡散法による単位ＨＴ処理Ｍ（ｉ）が完了すると、次の部分画像についてのマゼンタの単位ＨＴ処理Ｍ（ｉ＋１）が実行可能となる。その結果、次にステップＳ１２５が実行されたときには、矢印ａ１３で示すように、新たに割り付け可能処理Ｊｐに単位ＨＴ処理Ｍ（ｉ＋１）が含まれる。単位ＨＴ処理Ｃ（ｉ）が完了した場合も同様である。
【００９４】
その後、Ｃ（ｉ）、Ｍ（ｉ）、Ｙ（ｉ）、Ｋ（ｉ）がすべて完了すると、ｉ番目までの部分画像の単位ＨＴ処理、および（ｉ＋１）番目までの部分画像の色変換処理Ｃｃ（ｉ＋１）がすべて完了する。すると、新たに、ディザ法による単位ＨＴ処理Ｙ（ｉ＋２）、Ｋ（ｉ＋２）および色変換処理Ｃｃ（ｉ＋３）が、割り付け可能処理Ｊｐに加えられる。以下、同様にして、すべての色変換処理および単位ＨＴ処理が完了するまで処理の割り付けおよび実行がされる。
【００９５】
第３の実施形態のような態様としても、複数のスレッドを有効に活用して、効率的に色変換処理、およびハーフトーン処理を行うことができる。特に、第３の実施形態では、ｉ番目の部分画像の単位ＨＴ処理を割り付けて実行する際に、同時に、（ｉ＋１）番目の部分画像の一部の単位ＨＴ処理と、（ｉ＋２）番目までの部分画像の色変換処理とを、選択の対象としている。このため、多数の選択肢を活用することによって、より高度に各スレッドの負荷の均等化と処理の効率化を図ることができる。
【００９６】
Ｅ．変形例．
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００９７】
Ｅ１．変形例１：
第１の実施形態では、ステップＳ１２０およびＳ１３０で割り付ける処理は、対象ラスタラインＬＬｓ（ｉ）の各インク色のハーフトーン処理と、対象ラスタラインＬＬｓ（ｉ）の次のラスタラインＬＬｓ（ｉ＋１）の色変換処理であった（図３のステップＳ１２０参照）。また、第３の実施形態では、ステップＳ１２５で割り付け可能な処理として選択される処理は、ｉ番目〜（ｉ＋１）番目の部分画像の単位ＨＴ処理のうちで所定の条件を満たすものと、（ｉ＋１）番目〜（ｉ＋２）番目の部分画像の色変換処理と、であった。しかし、割り付けの対象とする処理は、他の処理を含んでもよい。たとえば、（ｉ＋３）番目や（ｉ＋４）番目の部分画像の色変換処理を含んでもよい。また、（ｉ＋２）番目や（ｉ＋３）番目の部分画像の単位ＨＴ処理のうちで所定の条件を満たすものを含んでもよい。
【００９８】
すなわち、割り付けの対象とする処理は、（ｉ−１）番目（ｉは２以上の整数）の部分画像までの単位ＨＴ処理、およびｉ番目の部分画像までの色変換がすべて完了しているとき、以下の処理を含むことができる。すなわち、割り付けの対象とする処理の集合は、ｉ番目の部分画像に関する第２の処理であってまだ処理部に割り付けられていないものと、（ｉ＋１）番目〜（ｉ＋ｐ）番目（ｐは正の整数）の部分画像に関する第１の処理であってまだ処理部に割り付けられていないものと、を含むことができる。なお、第１の処理は、同一の部分画像に関する第２の処理よりも先に完了している必要がある処理である。
【００９９】
なお、ｐは４以下であることが好ましく、３以下であることがより好ましい。そして、ｐは２以下であることがさらに好ましい。このような態様とすれば、第１の処理後に生成される第２の部分画像データを保持しておくための記憶部の容量を少なくすることができる。
【０１００】
また、割り付けの対象とする処理は、（ｉ−１）番目の部分画像までの単位ＨＴ処理、およびｉ番目の部分画像までの色変換がすべて完了しているとき、以下の処理を含むことができる。すなわち、（ｉ＋１）番目〜（ｉ＋ｑ）番目（ｑは正の整数）の部分画像に関する制限処理であって、まだ処理部に割り付けられておらず、対象処理集合の処理の実行を開始する予定時刻において直前の部分画像に関する同一の種類の制限処理が完了している制限処理である。ここで、制限処理とは、直前の部分画像に関する同一の種類の制限処理が完了した後にのみ、実行可能な処理である。
【０１０１】
なお、ｑは４以下であることが好ましく、３以下であることがより好ましい。そして、ｑは２以下であることがさらに好ましい。このような態様とすれば、第２の処理としての誤差拡散法による単位ＨＴ処理後に生成されるずれ（誤差）を保持しておくための記憶部の容量を少なくすることができる。
【０１０２】
Ｅ２．変形例２：
上記実施形態では、スレッドは二つであった。しかし、スレッドは３以上設けるものとしてもよい。ただし、本発明の上記各態様は、各処理を実行するためのスレッドの数が処理の数よりも少ない場合に適用すると、特に効果的である。スレッドが３以上ある態様においては、各処理を事前に割りあてる際には、３以上あるスレッドのうちすでに割り当てられた処理の負荷の合計が最も少ないスレッドに、まだスレッドに割り当てられていない処理のうちの一つを割り当てることが好ましい。そして、処理を実行しつつ他の処理を割りあてる際には、３以上あるスレッドのうちすでに割り当てられた処理の実行を最も早く完了したスレッドに、処理を処理部に割り当てることが好ましい。
【０１０３】
上記各実施形態では、コンピュータの一つのＣＰＵが、ハイパースレッディングによって複数のスレッドで単位ＨＴ処理を実行していた。しかし、各単位ＨＴ処理は、複数のＣＰＵで分担して実行することもできる。そのような態様においても、上記各実施形態と同様の手順で、各ＣＰＵ間の負荷のばらつきが小さくなるように各ＣＰＵに各単位ＨＴ処理を割り付けることができる。
【０１０４】
また、上記各実施形態では、スレッドは２個に固定されていた。しかし、ハイパースレッディングにおいて生成するスレッドの数や、マルチＣＰＵのコンピュータにおいて使用するＣＰＵの数を、状況に応じて変えることができる態様とすることもできる。たとえば、本発明の実施態様の一つである画像処理装置は、スレッドの数を１とする動作モードと、スレッドの数を２とする動作モード、スレッドの数を３とする動作モードなど、複数の動作モードを有する態様とすることができる。スレッドやＣＰＵなどの処理部が２以上の場合は、上記各実施形態と同様の手順で負荷の割り付け、および実行順序の決定を行うことができる。処理部が一つである場合は、あらかじめ定められた順序に沿って、その処理部上で各単位処理を実行する態様とすることができる。
【０１０５】
Ｅ３．変形例３：
上記各実施形態においては、各処理の負荷の見積もりの際には、直前に処理を行った領域についての各処理の処理時間を、対応する処理の負荷とした。しかし、処理の負荷の見積もりは他の値に基づいて行うこともできる。たとえば、直前にハーフトーン処理を行った領域ＬＬｓ（ｉ−１）内における各インク色のドットの発生量または発生確率を、次にハーフトーン処理を行う領域ＬＬｓ（ｉ）についての各単位ＨＴ処理の負荷とすることができる。その際には、色変換処理の見積もり負荷は所定の固定値とすることができる。このような態様においては、直前の領域ＬＬｓ（ｉ−１）におけるドットの発生量または発生確率が高いものから、スレッドに割り付けられる（図７および図１１参照）。
【０１０６】
また、ハーフトーン処理の方法が同じ単位ＨＴ処理や色変換処理については、負荷を一律に定めてもよい。たとえば、ディザ法によるハーフトーン処理を行う単位ＨＴ処理の負荷を１とし、誤差拡散法によるハーフトーン処理を行う単位ＨＴ処理の負荷を３とし、色変換処理の負荷を５としてもよい。さらに、ハーフトーン処理の方法と、上述した処理時間やドットの発生量または発生確率を組み合わせて、負荷を定めてもよい。たとえば、ディザ法によるハーフトーン処理を行う単位ＨＴ処理の負荷を１×［ドット発生確率］とし、誤差拡散法によるハーフトーン処理を行う単位ＨＴ処理の負荷を３×［ドット発生確率］としてもよい。その際、色変換処理の負荷は固定値とすることができる。すなわち、単位処理の負荷の見積もりは、直前に実行された各単位処理の実行結果を考慮して定めるものとすればよい。
【０１０７】
Ｅ４．変形例４：
上記第１実施例では、各処理は、スレッドへの割り付けにおいて割り付けられた順に実行されていた。しかし、各スレッドへの処理の割り付けとは別に、同時に１グループとして割り付けられた複数の処理内において、実行順序を決定するスケジューリングを行ってもよい。すなわち、各処理部への処理の割り付けにおいて、比較的負荷の小さい処理を比較的負荷の大きい処理の後から割り付けることとし、それまでに割り付けられた負荷の合計が少ない処理部に、一つずつ処理を割り付けることとすれば、各処理部間の負荷のばらつきの少ない割り付けを行うことができる。
【０１０８】
Ｅ５．変形例５：
印刷画像データＦＮＬを受け取るプリンタ２２が、同じインク色について大中小などの複数種類の大きさのドットを形成することができる場合には、ハーフトーン処理は、各インク色の各ドットの種類の単位で行われる。上記各実施形態では、単位ＨＴ処理は各インク色ごとのハーフトーン処理であったが、このような態様においては、単位ＨＴ処理は、各インク色の各ドットの種類の単位のハーフトーン処理とすることができる。
【０１０９】
Ｅ６．変形例６：
上述した各実施形態では、インクとしてシアン（Ｃ）、マゼンダ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）の４種類のインクを用いていた。しかし、レッド（Ｒ）、バイオレット（Ｖ）などこれら以外の有彩色インクや、ライトシアン（ＬＣ）、ライトマゼンタ（ＬＭ）、ダークイエロー（ＤＹ）などの濃淡有彩色インクを用いることも可能である。なお、「ライトシアン」は、シアンと色相が同じでシアンよりも明るい色のインクである。「ライトマゼンタ」は、マゼンタと色相が同じでマゼンタよりも明るい色のインクである。「ダークイエロー」は、イエローと色相が同じでイエローよりも暗い色のインクである。
【０１１０】
また、インクとしては、無彩色で互いに濃度が異なるブラック（Ｋ１）、淡ブラック（Ｋ２）、淡淡ブラック（Ｋ３）を用いることも可能である。さらに、クリアインクを使用することも可能である。すなわち、インクとしては、様々な色のインクを使用することができ、ハーフトーン処理は様々なインク色についての単位ＨＴ処理を含むことができる。すなわち、インク色の種類は、２以上とすることができ、部分画像を表す第１の部分画像データに対して第１の処理を行って生成する第２の部分画像データは、２種類以上の部分画像データとすることができる。ただし、カラー画像を処理する場合は、第２の部分画像データは、３種類以上であることが好ましい。
【０１１１】
Ｅ７．変形例７：
上記各実施形態では、スレッドで並列処理する処理として、色変換処理とハーフトーン処理の例を説明した。しかし、複数の処理部で並列処理する処理は、他の処理であってもよい。たとえば、カラー画像から、レッドの濃淡を表す階調値の画像データ、グリーンの濃淡を表す階調値の画像データ、およびブルーの濃淡を表す階調値の画像データを生成する処理と、生成された各画像データに階調値変換を行う処理と、を並列処理することもできる。
【０１１２】
すなわち、第１の処理は、部分画像を表す第１の部分画像データに対して実行されて、互いに異なるＭ種類（Ｍは２以上の整数）の第２の部分画像データを生成するものであればよい。そして、第２の処理は、上記のＭ種類の第２の部分画像データに対して、それぞれ実行される画像処理であればよい。ここで、Ｍ種類の第２の部分画像データは、互いに異なる色の濃淡で表される画像データとすることができる。
【０１１３】
Ｅ８．変形例８：
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。例えば、プリンタドライバ９６（図１参照）の機能の一部をプリンタのＣＰＵ４１が実行するようにすることもできる。
【０１１４】
このような機能を実現するコンピュータプログラムは、フロッピディスクやＣＤ−ＲＯＭ等の、コンピュータ読み取り可能な記録媒体に記録された形態で提供される。ホストコンピュータは、その記録媒体からコンピュータプログラムを読み取って内部記憶装置または外部記憶装置に転送する。あるいは、通信経路を介してプログラム供給装置からホストコンピュータにコンピュータプログラムを供給するようにしてもよい。コンピュータプログラムの機能を実現する時には、内部記憶装置に格納されたコンピュータプログラムがホストコンピュータのマイクロプロセッサによって実行される。また、記録媒体に記録されたコンピュータプログラムをホストコンピュータが直接実行するようにしてもよい。
【０１１５】
この明細書において、コンピュータとは、ハードウェア装置とオペレーションシステムとを含む概念であり、オペレーションシステムの制御の下で動作するハードウェア装置を意味している。コンピュータプログラムは、このようなコンピュータに、上述の各部の機能を実現させる。なお、上述の機能の一部は、ドライバやアプリケーションプログラムでなく、オペレーションシステムによって実現されていても良い。
【０１１６】
なお、この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種のＲＡＭやＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
【図面の簡単な説明】
【０１１７】
【図１】第１の実施形態の印刷システムのソフトウェアの構成を示すブロック図。
【図２】コンピュータ９０のＣＰＵ９０ａ内における処理を示すブロック図。
【図３】色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャート。
【図４】色変換処理とハーフトーン処理を行うラスタラインＬＬｓ（ｉ）を示す説明図。
【図５】図３のステップＳ１３０における各色の単位ＨＴ処理のスレッドへの割り付けの手順を示すフローチャート。
【図６】負荷の大きさに基づいて順位付けされた色変換処理と各色の単位ＨＴ処理とを示す説明図。
【図７】第１と第２のスレッドに割り付けられた色変換処理、単位ＨＴ処理を示す説明図。
【図８】第１と第２のスレッドに割り付けられたｉ番目〜（ｉ＋３）番目までの色変換処理、単位ＨＴ処理を示す説明図。
【図９】第２の実施形態において、第１と第２のスレッドに割り付けられたｉ番目〜（ｉ＋３）番目までの色変換処理、単位ＨＴ処理の実行の仕方を示すガントチャート。
【図１０】第３の実施形態における色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャート。
【図１１】第３の実施形態における処理のスレッドへの割り付け方法を示す説明図。
【符号の説明】
【０１１８】
２１...ＣＲＴディスプレイ
２２...プリンタ
２８...印刷ヘッド
３１...キャリッジ
３２...操作パネル
４１...ＣＰＵ
４２...ＲＯＭ
９０...コンピュータ
９０ａ...ＣＰＵ
９１...ビデオドライバ
９５...アプリケーションプログラム
９６...プリンタドライバ
９７...解像度変換モジュール
９９...ハーフトーンモジュール
９９...色変換／ＨＴモジュール
９９ａ...割り付け部
９９ｂ...第１のスレッド
９９ｃ...第２のスレッド
９９ｄ，９９ｅ...色変換モジュール
９９ｆ，９９ｇ...ハーフトーンモジュール
１００...並べ替えモジュール
１０４...色変換テーブル
１０５...負荷記憶部
１０６...部分画像データ記憶部
１０７...誤差データ記憶部
１２０...キーボード
１３０...マウス
２１０...命令キャッシュ
２２０...命令フェッチユニット
２２２，２３２，２４２...バッファ
２３０...命令デコーダ
２４０...演算ユニット
２５０...データキャッシュ
Ａｄ...色変換処理およびハーフトーン処理がすでに行われた領域
Ａｙ...色変換処理およびハーフトーン処理が行われていない領域
Ｃ（ｉ）...ｉ番目の部分領域のシアンのハーフトーン処理
Ｃｃ（ｉ）...ｉ番目の部分領域の色変換処理
ＦＮＬ...印刷画像データ
Ｇｃ１...比較例
Ｇｅ１...第１の実施形態
Ｊｉ...割り付け不可能処理
Ｊｐ...割り付け可能処理
Ｋ（ｉ）...ｉ番目の部分領域のブラックのハーフトーン処理
ＬＬｓ（ｉ−１）...参照ラスタライン（部分画像領域）
ＬＬｓ（ｉ）...対象ラスタライン（部分画像領域）
ＬＬｓ（ｉ＋１）...対象ラスタラインの下隣の２本のラスタライン（部分画像領域）
Ｍ（ｉ）...ｉ番目の部分領域のマゼンタのハーフトーン処理
ＭＩＤ１...解像度変換後の画像データ
ＭＩＤ２...色変換後の画像データ
ＭＩＤ３...ハーフトーン処理後の画像データ
ＭＳ...キャリッジの移動方向（主走査方向）
ＯＲＧ...原画像データ
Ｐ...用紙
ＰＩＤ...初期画像データ
Ｐｐ０...処理を開始する時刻
Ｐｐ１...マゼンタの単位ＨＴ処理が終了する時刻
ＳＳ...印刷用紙の搬送方向（副走査方向）
Ｙ（ｉ）...ｉ番目の部分領域のイエロのハーフトーン処理
ａ１１...最初に行われる処理の割り付けを示す矢印
ａ１２...２番目に行われる処理の割り付けを示す矢印
ａ１３...単位ＨＴ処理Ｍ（ｉ）の終了に伴っておこるＭ（ｉ＋１）の変更を示す矢印
ｂ１１，ｂ１２...第１の実施形態における、前の処理と後の処理との割り付け時刻の境界
ｂ２１，ｂ２２，ｂ２３...比較例における、前の処理と後の処理との割り付け時刻の境界
ｂ３１，ｂ３２...比較例における、色変換処理とハーフトーン処理の前後関係の境界
Ｔｄｆ２，Ｔｄｆ２...第１のスレッドと第２のスレッドの処理の終了時刻の差。
【図１】
2006065460.tif 000003
【図２】
2006065460.tif 000004
【図３】
2006065460.tif 000005
【図４】
2006065460.tif 000006
【図５】
2006065460.tif 000007
【図６】
2006065460.tif 000008
【図７】
2006065460.tif 000009
【図８】
2006065460.tif 000010
【図９】
2006065460.tif 000011
【図１０】
2006065460.tif 000012
【図１１】
2006065460.tif 000013