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