JP2005250565A - 画像処理を並列処理で実行する際の負荷の割り付け - Google Patents

画像処理を並列処理で実行する際の負荷の割り付け Download PDF

Info

Publication number
JP2005250565A
JP2005250565A JP2004056334A JP2004056334A JP2005250565A JP 2005250565 A JP2005250565 A JP 2005250565A JP 2004056334 A JP2004056334 A JP 2004056334A JP 2004056334 A JP2004056334 A JP 2004056334A JP 2005250565 A JP2005250565 A JP 2005250565A
Authority
JP
Japan
Prior art keywords
processing
unit
group
assigned
processes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004056334A
Other languages
English (en)
Inventor
Satoshi Yamazaki
郷志 山▲崎▼
Teruyuki Takada
照幸 高田
Shigeaki Sumiya
繁明 角谷
Kohei Utsunomiya
光平 宇都宮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004056334A priority Critical patent/JP2005250565A/ja
Priority to US11/069,855 priority patent/US7436559B2/en
Publication of JP2005250565A publication Critical patent/JP2005250565A/ja
Pending legal-status Critical Current

Links

Images

Abstract


【課題】 画像処理を並列処理で実行する際に各処理部間の負荷のばらつきを少なくして、効率的に処理を実行する技術を提供する。
【解決手段】 まず、直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合の単位処理の見積もり負荷を見積もる。そして、見積もり負荷に基づいて、所定の種類の単位処理を、第1の処理グループと、第1の処理グループよりも見積もり負荷が小さい第2の処理グループと、に分類する。その後、第1の処理グループに含まれる単位処理を処理部に割り当てる。第1の処理グループに含まれる単位処理の割り当てを完了した後、第2の処理グループに含まれる単位処理を処理部に割り当てる。第2の処理グループの単位処理を割り当てる際には、すでに割り当てられた単位処理の見積もり負荷の合計が最も少ない最小負荷処理部に、まだ処理部に割り当てられていない単位処理のうちの一つを割り当てる。
【選択図】 図1

Description

この発明は、画像処理を並列処理で実行する技術に関する。
従来より、各画素が有する各インク色の階調値で表された画像データを、各画素におけるインク色のドットの有無で表された画像データに変換する際に、並列処理を行う技術が開発されてきた。たとえば、特許文献1には、処理内容に応じてラスタライズ(並べ替え)処理と、ハーフトーン処理とを別のスレッドで実行する技術が開示されている。
特開2000−293674号公報
しかし、上記の技術においては、各スレッド、すなわち処理部の間の負荷のばらつきについては考慮されていなかった。
本発明はかかる点に鑑みてなされたもので、画像処理を並列処理で実行する際に各処理部間の負荷のばらつきを少なくして、効率的に処理を実行する技術を提供することを主たる目的とする。
上記目的を達成するために、本発明は、N種類(Nは3以上の整数)の単位処理を含む処理集合を繰り返し実行する画像処理において、以下の処理を行う。この画像処理は、たとえば、単位処理を実行するためのM個(Mは2以上でN未満の整数)の処理部を有し、処理集合を実行して画像処理を行う画像処理部と、各処理集合の実行に先立って、処理部にN種類の単位処理を割り当てる割り付け部と、を有する画像処理装置において実行可能である。
画像処理の際には、まず、直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もる。そして、見積もり負荷に基づいて、N種類の単位処理を、第1の処理グループと、第1の処理グループに含まれる単位処理よりも見積もり負荷が小さい第2の処理グループと、に分類する。その後、第1の処理グループに含まれる単位処理を処理部に割り当てる。第1の処理グループに含まれる単位処理の割り当てを完了した後、第2の処理グループに含まれる単位処理を処理部に割り当てる。第2の処理グループに含まれる単位処理を割り当てる際には、すでに割り当てられた単位処理の見積もり負荷の合計が最も少ない処理部である最小負荷処理部に、まだ処理部に割り当てられていない第2の処理グループの単位処理のうちの一つを割り当てる。
このような態様においては、第1の処理グループが割り付けられた後で、より負荷の小さい単位処理が、すでに割り当てられた単位処理の見積もり負荷の合計が最も少ない処理部に割り当てられる。このため、処理部間の負荷のばらつきを少なくして、効率的に画像処理を実行することができる。
なお、一つの処理集合に含まれるすべての単位処理が完了した後に、その一つの処理集合に含まれる単位処理を各処理部において実行することが好ましい。このような態様においては、各単位処理の処理部への割り当ては実行前にあらかじめ定められている。よって、各処理集合を迅速に実行することができる。
なお、単位処理は、画像中の所定の大きさの領域の所定の色の濃淡が画素の階調値で表される第1の部分画像データを、所定の領域の所定の色の濃淡が画素における所定の色のドットの形成の有無で表される第2の部分画像データに変換する処理とすることができる。言い換えれば、単位処理は、画像中の所定の大きさの領域に関する所定の色についてのハーフトーン処理とすることができる。そして、処理集合は、画像中の同一の領域を対象とする互いに異なる色の単位処理の集合であって、画像中の互いに隣接する領域について並びの順に実行される処理とすることができる。
一つの画像内においては、隣接する領域同士は、各色の存在割合が近似していることが多い。このため、上記のような態様とすれば、各色の存在割合が近似している隣接領域の処理集合の実行結果に基づいて、次に行う処理の負荷を正確に見積もることができる。
なお、最小負荷処理部に割り当てられる第2の処理グループの一つの単位処理は、まだ処理部に割り当てられていない第2の処理グループの単位処理のうちで、見積もり負荷が最も大きい単位処理とすることが好ましい。
このような態様とすれば、後の割り付けほど負荷の小さい単位処理が割り付けられる。このため、処理部間の負荷のばらつきをより細かく平準化することができる。
また、単位処理が、第1の変換方法を用いて変換を行う第1種の単位処理と、第1の変換方法とは異なる第2の変換方法を用いて変換を行う第2種の単位処理と、を含んでおり、また、処理部に割り当てられた単位処理が、各処理部において割り当てられた順に実行される場合には、以下のような態様とすることが好ましい。すなわち、第1の処理グループに含まれる単位処理を処理部に割り当てる際には、第1種の単位処理が所定の処理部で実行されているときに、第2種の単位処理が他の処理部で処理されるように、処理部に割り当てる。
このような態様とすれば、異なった種類の処理が異なる処理部で並列に実行されることが多くなる。このため、処理を実行する装置内の特定の要素に負荷が集中し、その要素の処理能力がボトルネックとなって、処理効率が低下する可能性を低減することができる。
第1の処理グループに含まれる単位処理を処理部に割り当てる際には、すでに割り当てられた単位処理の見積もり負荷の合計が最も少ない処理部に、まだ処理部に割り当てられておらず、かつ、直前に処理部に割り当てた単位処理とは変換方法が異なる単位処理のうちで、見積もり負荷が最も大きい単位処理を割り当てることが好ましい。
このような態様においては、異なる種類の単位処理が、順に各処理部に割り付けられる。そして、各処理部に割り当てられた単位処理は、各処理部において割り当てられた順に実行される。このため、上記のような態様とすれば、第1種の単位処理が所定の処理部で実行されているときに、第2種の単位処理が他の処理部で処理されるように、第1の処理グループの単位処理を処理部に割り当てることができる。
なお、第1の変換方法は誤差拡散法とすることができ、第2の変換方法はディザ法とすることができる。このような態様とすれば、負荷の大きい誤差拡散法が多数同時に並行処理される可能性を低減することができ、その結果、効率的に画像処理を実行することができる。
なお、本発明は、以下のような画像処理装置で実現することもできる。すなわち、単位処理を実行するための処理部であって2以上で単位処理の種類の数よりも少ない処理部を有し、処理集合を実行して画像処理を行う画像処理部と、処理集合の一部の単位処理が実行されている間に、処理集合の他の一部の単位処理を処理部に割り当てる割り付け部と、を有する画像処理装置である。
そのような画像処理装置において、まず、直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もる。そして、見積もり負荷に基づいて、N種類の単位処理を、第1の処理グループと、第1の処理グループに含まれる単位処理よりも見積もり負荷が小さい第2の処理グループと、に分類する。その後、すでに割り当てられた単位処理の実行を完了した処理部に、第1の処理グループに含まれる単位処理を割り当てる。そして、第1の処理グループに含まれる単位処理の割り当てを完了した後、すでに割り当てられた単位処理の実行を完了した処理部に、第2の処理グループに含まれる単位処理を割り当てる。
このような態様においても、第1の処理グループが割り付けられた後で、より負荷の小さい単位処理が、すでに割り当てられた単位処理の見積もり負荷の合計が最も少ない処理部に割り当てられる。このため、処理部間の負荷のばらつきを少なくして、効率的に画像処理を実行することができる。
なお、一つの単位処理の割り当てを完了した後で、次の単位処理の割り当て以前に、その一つの単位処理の実行を処理部において開始することが好ましい。このような態様においては、各処理部において単位処理を実行しつつ、各処理部に単位処理を割り当てることができる。
すでに割り当てられた単位処理の実行を完了した処理部に、まだ処理部に割り当てられていない第2の処理グループの単位処理のうちの一つを割り当てる際には、以下のようにすることが好ましい。すなわち、まだ処理部に割り当てられていない第2の処理グループの単位処理のうちで、見積もり負荷が最も大きい単位処理を割り当てることが好ましい。
このような態様とすれば、後の割り付けほど負荷の小さい単位処理を使用することができる。このため、処理部間の負荷のばらつきをより細かく平準化することができる。
なお、画像処理部は、ハイパースレッディングにより処理集合を実行する態様とすることができる。そのような態様においては、処理部は、スレッドである。
なお、本発明は、種々の形態で実現することが可能である。例えば、処理の割り当て方法、処理割り当て装置、画像処理方法、画像処理装置、印刷制御方法、印刷制御装置、印刷方法、印刷装置、そして、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体等の形態で実現することができる。
以下では、発明の実施の形態を次の順序で説明する。
A.第1の実施形態.
A1.装置の全体構成.
A2.CPUの内部構成.
A3.色変換処理とハーフトーン処理.
B.第2の実施形態.
C.変形例.
A.第1の実施の形態.
A1.装置の全体構成.
図1は、第1の実施形態の印刷システムのソフトウェアの構成を示すブロック図である。コンピュータ90では、所定のオペレーティングシステムの下で、アプリケーションプログラム95が動作している。また、オペレーティングシステムには、ビデオドライバ91やプリンタドライバ96が組み込まれている。
アプリケーションプログラム95は、マウス130やキーボード120から入力されるユーザの指示に応じて、レッド(R),グリーン(G),ブルー(B)の3色の色成分からなる原画像データORGをCD−R140から読み込む。そして、ユーザの指示に応じて、原画像データORGに画像のレタッチなどの処理を行う。アプリケーションプログラム95は、処理を行った画像を、ビデオドライバ91を介してCRTディスプレイ21に画像を表示する。また、アプリケーションプログラム95は、ユーザからの印刷指示を受け取ると、プリンタドライバ96に印刷指示を出し、処理を行った画像を初期画像データPIDとしてプリンタドライバ96に出力する。
プリンタドライバ96は、初期画像データPIDをアプリケーションプログラム95から受け取り、これをプリンタ22が処理可能な印刷画像データFNL(ここではシアン、マゼンダ、イエロー、ブラック、ライトシアン、ライトマゼンタ、ダークイエローの7色についての多値化された信号)に変換する。
図1に示した例では、プリンタドライバ96の内部には、解像度変換モジュール97と、色変換モジュール98と、色変換テーブル104と、ハーフトーンモジュール99と、負荷記憶部105と、並べ替えモジュール100とが備えられている。
解像度変換モジュール97は、初期画像データPIDの解像度をプリンタ22で印刷を行う際の解像度に変換する。色変換モジュール98は、カラー画像の印刷においては、3次元ルックアップテーブルである色変換テーブル104を参照しつつ、RGBの階調値で各画素の色が現されている画像データMID1を、プリンタ22が使用するシアン(C)、マゼンダ(M)、イエロー(Y)、ブラック(K)、ライトシアン(LC)、ライトマゼンタ(LM)、ダークイエロー(DY)の階調値で各画素の色が表された画像データMID2に変換する。
なお、ライトシアンは、シアンと色相が同じでシアンよりも明るい色のインクである。ライトマゼンタは、マゼンタと色相が同じでマゼンタよりも明るい色のインクである。ダークイエローは、イエローと色相が同じでイエローよりも暗い色のインクである。
ハーフトーンモジュール99は、各画素の各色の濃度が各色の階調値で表された画像データMID2にハーフトーン処理を行うことによって、各色の濃度が各画素におけるドットの有無で表される画像データMID3(「印刷データ」または「ドットデータ」とも呼ぶ)に変換する。ハーフトーン処理は、「2値化処理」とも呼ばれる。このハーフトーン処理は、ライトシアン(LC)、ライトマゼンダ(LM)、シアン(C)については、誤差拡散法で行われ、マゼンダ(M)、イエロー(Y)、ブラック(K)、ダークイエロー(DY)については、ディザ法で行われる。
「ディザ法」は、画素に対応する要素内にそれぞれしきい値を有しているn×mのディザマトリクス(n、mは正の整数)と、n×mの画素からなる部分画像領域とを比較し、部分画像領域の各画素が有する階調値がしきい値よりも高いか否かでドットの形成の有無を決定する方式である。「誤差拡散法」は、一つの対象画素へのドットの形成の有無をしきい値との比較に基づいて決定し、ドットの形成の有無による2段階の濃度表現と、多階調の階調値で指定された濃度と、のずれ(誤差)を、まだ対象画素となっていない他の画素に振り分けて、それらの画素の階調値に上乗せしてゆく方法である。
一般に、同じデータをハーフトーン処理する場合は、ディザ法で行った方が、誤差拡散法で行った場合よりも、処理の負荷が小さくなる。ただし、誤差拡散法でハーフトーン処理を行った方が、一般に画像の印刷結果が高品質となる。ここでは、印刷結果の品質の良悪が目につきやすいライトシアン、ライトマゼンタについては、誤差拡散法でハーフトーン処理を行うことし、印刷結果の品質の良悪が目につきにくいイエローについては、ディザ法でハーフトーン処理を行うこととする。他のインク色については、ハーフトーン処理全体がシステムに与える負荷を考慮して、いずれの方法を採用するかが決定される。
ハーフトーンモジュール99で生成された画像データMID3は、並べ替えモジュール100によりプリンタ22に転送すべきデータ順に並べ替えられて、最終的な印刷画像データFNLとして出力される。
プリンタ22は、紙送りモータによって用紙Pを搬送する機構と、キャリッジモータによってキャリッジ31を用紙Pの搬送方向SSと垂直な方向MSに往復動させる機構と、キャリッジ31に搭載されインクの吐出およびドット形成を行う印刷ヘッド28と、各種の設定データを格納しているP−ROM42と、これらの紙送りモータ,キャリッジモータ,印刷ヘッド28、P−ROM42および操作パネル32を制御するCPU41とから構成されている。プリンタ22は、印刷画像データFNLを受け取って、印刷画像データFNLに応じてシアン(C)、マゼンダ(M)、イエロー(Y)、ブラック(K)、ライトシアン(LC)、ライトマゼンタ(LM)、ダークイエロー(DY)で印刷媒体上にドットを形成し、印刷を実行する。
なお、本明細書においては、「印刷装置」とは、狭義にはプリンタ22のみをさすが、広義にはコンピュータ90とプリンタ22とを含む印刷システム全体を表す。
A2.CPUの内部構成および動作.
コンピュータ90のCPU90aは、ハイパースレッディング・テクノロジに対応したCPUである。このCPU90aは、二つのスレッドを並列に処理することが可能である。これら二つのスレッドを、図1において、第1のスレッド99c、第2のスレッド99dとして示す。以下では、ハイパースレッディング・テクノロジに対応したCPU90aの構成および動作について説明する。
図2は、コンピュータ90のCPU90a内における処理を示すブロック図である。CPU90aは、内部に命令フェッチユニット220、命令デコーダ230、演算ユニット240、命令キャッシュ210、データキャッシュ250を有している。そして、命令フェッチユニット220、命令デコーダ230、演算ユニット240は、それぞれ処理した命令およびデータを一時的に保管するためのバッファ222,232,242を有している。バッファ222,232,242は、それぞれ第1のスレッド用と第2のスレッド用に分割されている。
命令キャッシュ210には、すでに一度使用された命令、およびそれに引き続いて使用されると予想される命令が格納されている。命令フェッチユニット220は、命令キャッシュ210のアドレスを指定して、命令を取り出す(フェッチする)。その際、第1のスレッド用の命令は第1のスレッド用のバッファに格納される。そして、第2のスレッド用の命令は第2のスレッド用のバッファに格納される。なお、命令キャッシュ210内に必要とする命令がない場合には、CPU90aは、メインメモリ(図示せず)にアクセスして、命令を取り出す。
その後、命令フェッチユニット220は、命令デコーダ230に取り出した命令を渡す。その際、奇数クロックのタイミングで第1のスレッドの一つの命令を命令デコーダ230に投入し、偶数クロックのタイミングで第2のスレッドの一つの命令を命令デコーダ230に投入する。すなわち、第1のスレッドの命令と第2のスレッドの命令は、交互に命令デコーダ230に投入される。図2では、第2のスレッド用の命令にハッチをつけて示す。
命令デコーダ230は、投入された命令をマイクロコードに変換(デコード)し、バッファ232に格納する。その際、デコードされた命令が第1のスレッド用の命令である場合は、第1のスレッド用のバッファに格納される。そして、デコードされた命令が第2のスレッド用の命令である場合は、第2のスレッド用のバッファに格納される。
その後、命令デコーダ230は、デコードした命令を演算ユニット240に投入する。その際、奇数クロックのタイミングで第1のスレッドの一つの命令を演算ユニット240に投入し、偶数クロックのタイミングで第2のスレッドの一つの命令を演算ユニット240に投入する。演算ユニット240は、指定された演算処理を行い、演算結果を、やはりスレッドごと分けてバッファに格納する。
従来のCPUでは、命令フェッチユニット220、命令デコーダ230、演算ユニット240内の各バッファは、全体として一つのスレッドのために用いられた。そのような態様においては、マルチスレッドにおいて処理するスレッドを切り替える際には、命令デコーダ230と演算ユニット240は、それまでバッファに格納していた前のスレッドの命令を廃棄して、あらためて次のスレッドの命令を命令フェッチユニット220から受け取る必要がある。よって、命令デコーダ230と演算ユニット240は、命令フェッチユニット220が取り出す命令が新たに投入されるまでは、あそんでしまうことになる。
しかし、上記のような構成においては、二つのスレッドは、命令の単位で交互に処理されている。また、命令フェッチユニット220、命令デコーダ230、演算ユニット240の各バッファ222,232,242内には、二つのスレッドの命令が同時に格納されている。このため、命令フェッチユニット220、命令デコーダ230、演算ユニット240は、一方のスレッドの一つの命令の処理を終えると、すぐにバッファ内の他方のスレッドの命令を使用して、次の処理に着手することができる。言い換えれば、パイプラインを有効に活用することができる。また、一方のスレッドでエラーや待ちが生じた場合にも、他方のスレッドでは処理を進めることができる。
A3.色変換処理とハーフトーン処理.
図3は、色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャートである。図4は、色変換処理とハーフトーン処理を行うラスタラインLLs(i)を示す説明図である。図1に示した色変換モジュール98による色変換処理とハーフトーンモジュール99によるハーフトーン処理とは、具体的には、画像データMID1中のラスタライン2行分ずつ行われる。すなわち、画像データMID2は、ラスタライン2行分ずつの部分画像として、色変換モジュール98とハーフトーンモジュール99の間で受け渡される。
図4では、色変換処理とハーフトーン処理を行う2本のラスタラインを対象ラスタラインLLs(i)として示す。この対象ラスタラインLLs(i)についての全インク色C、M、Y、K、LC、LM、DYのハーフトーン処理を、以下では「処理集合」とも呼ぶ。
また、図4においては、直前に色変換処理とハーフトーン処理が行われた2本のラスタラインを参照ラスタラインLLs(i−1)として示す。対象ラスタラインLLs(i)よりも上の領域Adは、すでに色変換処理とハーフトーン処理とが行われた領域である。対象ラスタラインLLs(i)およびそれよりも下の領域Ayは、まだ色変換処理とハーフトーン処理が行われていない領域である。LLs(i+1)で示す2本のラスタラインが、対象ラスタラインLLs(i)の次に色変換処理とハーフトーン処理とが行われる領域である。
色変換処理とハーフトーン処理とを行う際には、まず、図3のステップS110で、色変換を行う。具体的には、色変換テーブル104を参照して、レッド(R)、グリーン(G)、ブルー(B)の階調値で表されている対象ラスタラインLLs(i)のデータを、シアン(C)、マゼンダ(M)、イエロー(Y)、ブラック(K)、ライトシアン(LC)、ライトマゼンタ(LM)、ダークイエロー(DY)の階調値で表されたデータに変換する。そして、ステップS120では、C、M、Y、K、LC、LM、DYの階調値で表された対象ラスタラインLLs(i)の各データを、バッファへ格納する。
色変換処理を行うステップS300(図3において破線で示す)では、二つのスレッドにおいて、インク色単位でハーフトーン処理を分担させてC、M、Y、K、LC、LM、DYのハーフトーン処理を行う。なお、ステップS300に先だって、二つのスレッドはあらかじめ作成され、待機状態とされている。当然のことながら、色変換処理を行うステップの実行のたびにスレッドを作成してもよい。ただし、あらかじめスレッドを作成しておけば、短時間で処理を開始することができ、効果的である。
ステップS130では、各インク色についてのハーフトーン処理(以下、個々のインク色についてのハーフトーン処理を「単位HT処理」という)を、二つのスレッドに割り付ける。詳しい処理の内容については後述する。ここでは、ステップS130における割り付けの結果、たとえば、シアンと、マゼンタと、イエローと、ダークイエローのハーフトーン処理が第1のスレッドに割り付けられ、ブラックと、ライトシアンと、ライトマゼンタのハーフトーン処理が、第2のスレッドに割り付けられたものとする。
ステップS140では、待機状態にある第1のスレッドを実行状態とする。そして、ステップS150では、第1のスレッドにおいて、たとえばシアンと、マゼンタと、イエローと、ダークイエローについてハーフトーン処理を行う。そして、それらのインク色についてのハーフトーン処理を終えると、ステップS160で、第1のスレッドを再び待機状態とする。なお、ステップS150においては、シアンと、マゼンタと、イエローと、ダークイエローの各ハーフトーン処理に要した時間がカウントされ、コンピュータ90のメモリ内の負荷記憶部105(図1参照)に格納される。
一方、ステップS170では、待機状態にある第2のスレッドを実行状態とする。そして、ステップS180では、第2のスレッドにおいて、たとえばブラックと、ライトシアンと、ライトマゼンタについてハーフトーン処理を行う。そして、それらのインク色についてのハーフトーン処理を終えると、ステップS190で、第2のスレッドを再び待機状態とする。なお、ステップS180においては、ブラックと、ライトシアンと、ライトマゼンタの各ハーフトーン処理に要した時間がカウントされ、コンピュータ90のメモリ内の負荷記憶部105に格納される。
ステップS200では、画像データMID1に含まれるすべてのラスタラインについて、色変換処理およびハーフトーン処理を終えたか否かを判定する。まだ、すべてのラスタラインについて色変換処理およびハーフトーン処理を終えていない場合は、ここまでで処理したラスタラインLLs(i)の下側に隣接する2本のラスタラインLLs(i+1)を新たに対象ラスタラインとして(図4参照)、ステップS110からの処理を繰り返す。画像データMID1のすべてのラスタラインについて色変換処理およびハーフトーン処理を終えた場合は、処理を終了する。なお、ステップS130の処理は、ハーフトーン処理部99の機能部である割り付け部99aが実行する。そして、ステップS140〜S160およびステップS170〜S190の処理は、ハーフトーン処理部99の機能部である2値化部99bが実行する。これらの機能部を図1に示す。
図5は、図3のステップS130における各色の単位HT処理のスレッドへの割り付けの手順を示すフローチャートである。ステップS10では、まず、各色についての各単位HT処理の負荷を見積もる。ここでは、負荷記憶部105に格納されている前回のハーフトーン処理時の処理時間を取り出して、それを各単位HT処理の負荷Lc、Lm、Ly、Lk、Llc、Llm、Ldyとする。なお、Lの添え字c、m、y、k、lc、lm、dyが、シアン、マゼンダ、イエロー、ブラック、ライトシアン、ライトマゼンタ、ダークイエローの各インク色を表す。
画像においては、隣り合う領域同士は、各色成分の存在割合が互いに近似していることが多い。すなわち、隣り合う領域同士においては、同じ色同士のハーフトーン処理の負荷が近似する可能性が高い。このため、上記のように、直前にハーフトーン処理が行われた参照ラスタラインLLs(i−1)の処理結果に基づいて、各単位HT処理の負荷を決定することとすれば、正確に負荷を見積もることができる。
図5のステップS20では、各色の単位HT処理を第1の処理グループと、第2の処理グループとに分類する。具体的には、最も負荷の小さい二つの単位HT処理を第2の処理グループとし、他の単位HT処理を第1の処理グループとする。ここでは、誤差拡散法に比べてシステムへの負荷が軽いディザ法で色変換が行われる単位HT処理のうち、イエローとダークイエローの単位HT処理が第2の処理グループに分類され、他の単位HT処理が第1の処理グループに分類されたものとする。
前述のように、ハーフトーンモジュール99は、ライトシアン(LC)、ライトマゼンダ(LM)、シアン(C)については、誤差拡散法でハーフトーン処理を行い、マゼンダ(M)、イエロー(Y)、ブラック(K)、ダークイエロー(DY)については、ディザ法でハーフトーン処理を行う。誤差拡散法でハーフトーン処理が行われる単位HT処理を「第1種の単位HT処理」と呼び、ディザ法でハーフトーン処理が行われる単位HT処理を「第2種の単位HT処理」と呼ぶ。
図6は、負荷の大きさに基づいて順位付けされた第1種の単位HT処理と第2種の単位HT処理を示す説明図である。ステップS30では、ハーフトーンモジュール99は、第1の処理グループに分類された単位HT処理を、ステップS10で決定した各単位HT処理の負荷が大きい順に、第1種の単位HT処理と第2種の単位HT処理に分けてそれぞれ順位付けする。図6では、一つ一つの四角が単位HT処理を表し、四角の左右方向の長さが負荷の大きさを示す。図6においては、負荷が大きいほど左に示されている。各単位HT処理を表す四角の上に示されている番号が、第1種の単位HT処理内および第2種の単位HT処理内における順位である。また、第2種の単位HT処理は、ハッチをつけて示している。
図7は、順位付けされた第1の処理グループの単位HT処理を示す説明図である。図5のステップS40では、ハーフトーンモジュール99は、ステップS30で種類別に行った順位づけに基づいて、第1の処理グループに分類されたすべての単位HT処理を統一的に順位付けする。具体的には、誤差拡散法でハーフトーン処理が行われる第1種の単位HT処理から始めて、第1種と第2種の単位HT処理を負荷の大きい順に交互に順位付けする。なお、図7において、各単位HT処理を表す四角の上に示されている番号が、各単位HT処理の順位である。
図8は、第1と第2のスレッドに割り付けられた第1の処理グループの単位HT処理を示す説明図である。図5のステップS50では、ハーフトーンモジュール99は、ステップS40で決定した順位に沿って、第1の処理グループの単位HT処理を第1のスレッドと第2のスレッドに割り付ける。具体的には、最初に第1のスレッドに順位第1位の単位HT処理を割り付けた後は、すでに割り当てられた単位HT処理の負荷の合計が最も少ないスレッドに、優先順位に従って第1の処理グループの単位HT処理を割り付ける。その結果、第1の第2のスレッドには、図8に示すように、単位HT処理が割り付けられる。なお、図8において、各単位HT処理を表す四角の上に示されている番号が、ステップS40で決定された各単位HT処理の順位である。
ステップS40では、第1種と第2種の単位HT処理を負荷の大きい順に交互に順位付けしている。このため、上述のように単位HT処理を第1のスレッドと第2のスレッドに割り付けることで、以下のような割り付けが実行される。すなわち、すでに割り当てられた単位HT処理の負荷の合計が最も少ないスレッドに、まだスレッドに割り当てられておらず、かつ、直前にスレッドに割り当てた単位HT処理とはハーフトーン処理の方法が異なる単位HT処理のうちで、負荷が最も大きい単位処理が割り当てられる。
図9は、第1と第2のスレッドに割り付けられた第1および第2の処理グループの単位HT処理を示す説明図である。図5のステップS60では、ハーフトーンモジュール99は、第2の処理グループの単位HT処理を第1のスレッドと第2のスレッドに割り付ける。具体的には、負荷の大きい単位HT処理から順に、それまでに割り付けられた単位HT処理の負荷の合計の少ないスレッドに、割り付ける。その結果、第1の第2のスレッドには、図9に示すように、単位HT処理が割り付けられる。
以上のようにして、図3のステップS130における色変換処理の割り付けが実行される。なお、図3のステップS150、S180においては、スレッドに割り付けられた各単位HT処理は、各スレッドにおいて、図9の並びの順に沿って左から順に実行される。すなわち、スレッドへの割り付けにおいて先に割り付けられた単位HT処理ほど、実際の色変換処理においても先に実行される。
第1の実施形態では、負荷が小さい第2の処理グループの単位HT処理を、負荷が大きい第1の処理グループの後でスレッドに割り付ける。そして、第2の処理グループのうち負荷の大きい単位HT処理から順に、それまでに割り付けられた単位HT処理の負荷の合計の少ないスレッドに割り付ける。このため、スレッド間の負荷の差LDF(図9参照)を小さくすることができる。
第1種の単位HT処理において実行される誤差拡散法によるハーフトーン処理は、ディザ法によるハーフトーン処理に比べて条件分岐が多い。このため、誤差拡散法によるハーフトーン処理においては、CPUは、あらかじめ先読みされてキャッシュメモリ内に格納されている命令やデータをそのまま使用することができない。そして、CPUは、頻繁にメインメモリに命令やデータを読み込みに行く。その結果、処理の実行中にメインメモリからのデータの転送を待つ必要があり、キャッシュメモリ内にあらかじめ格納されている命令やデータを使用できる場合に比べてCPUの処理効率が低下する。そして、ハイパースレッディング・テクノロジによる並列処理において、二つのスレッドがいずれも誤差拡散法によるハーフトーン処理を実行する場合には、いずれのスレッドもメインメモリからのデータの転送を待つことが多くなり、処理が停滞することとなる。
一方、第2種の単位HT処理において実行されるディザ法によるハーフトーン処理は、誤差拡散法によるハーフトーン処理に比べて条件分岐が少ない。このため、ディザ法によるハーフトーン処理においては、CPUは、キャッシュメモリ内にあらかじめ先読みされて格納されている命令やデータを使用することができる。よって、ハイパースレッディング・テクノロジによる並列処理において、一方のスレッドが誤差拡散法によるハーフトーン処理を実行している場合に、他方のスレッドでディザ法を実行することとすれば、誤差拡散法によるハーフトーン処理がメインメモリからのデータの転送を待っている間、他方の処理はキャッシュメモリ内の命令やデータを使用して処理を進めることができる。その結果、処理効率が向上し、短時間で全色のハーフトーン処理を完了することができる。
第1の実施形態においては、ステップS40において、第1種の単位HT処理から始めて、第1種と第2種の単位HT処理を負荷の大きい順に交互に、第1の処理グループの単位HT処理に順位付けする。そして、ステップS50において、最初に第1のスレッドに一つの単位HT処理を割り付けた後、すでに割り当てられた単位HT処理の負荷の合計が最も少ないスレッドに、ステップS40の順位に沿って第1の処理グループの単位HT処理をスレッドに割り付ける。このような態様とすることで、誤差拡散法による第1種の単位HT処理とディザ法による第2種の単位HT処理が、二つのスレッドで並行して処理されやすくなる。その結果、コンピュータの資源が有効に活用され、結果として処理の効率が高くなる。
なお、処理の切り替えの際のオーバーヘッドを無視すると、図9は、ガントチャートとして把握することができる。第1種の単位HT処理と第2種の単位HT処理は、図9にPp1、Pp2で示す時間区間だけ、並行して処理されることとなる。
また、第1の実施形態においては、単位HT処理のスレッドへの割り付けを、第1の処理グループと第2の処理グループとに分けて行っている。このため、第2の処理グループの割り付けによってスレッド間の負荷のばらつきを低減しながら、同時に、第1の処理グループの割り付けによって各単位HTの処理の高効率化という、もう一つの目的を達成することができる。
B.第2の実施形態.
第2の実施形態では、実際にあるインク色についての単位HT処理を実行しつつ、次に実行する単位HT処理を決定する。各単位HT処理の負荷の決定方法や順位付けの方法(図5のステップS10〜40参照)を含め、他の点は、第1の実施形態と同じである。以下では、第1実施例と同じ単位HT処理を各スレッドに割り付けるものとして説明する。
図10は、第2の実施形態における色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャートである。このフローチャートは、破線で囲ったステップS305以外の手続きは、第1の実施形態の図3の手続きと同じである。
ステップS125では、各インク色の単位HT処理に順位付けを行う。順位付けの方法は、第1の実施形態における図5のステップS10〜S40の手続きと同じである(図6および図7参照)。
ステップS127では、現在、実行中の単位HT処理を有していないスレッドに、まだスレッドに割り付けられていない単位HT処理の中から単位HT処理を選択して割り付ける。その際、第1の実施形態と同様、まず、第1の処理グループの単位HT処理を割り付け、その後、第2の処理グループの単位HT処理を割り付ける。第1の処理グループの単位HT処理を割り付ける際には、第1の実施形態と同様、優先順位(図7参照)の高い順に割り付ける。第2の処理グループの単位HT処理を割り付ける際にも、第1の実施形態と同様、負荷の大きい順に割り付ける。
図11は、ステップS127において各スレッドに単位HT処理が割り付けられた状態を示す説明図である。なお、図において、現在時刻をPtで示す。最初にステップS127の処理を行う際には、まだ、第1および第2のスレッドに単位HT処理が割り付けられていない。このため、ステップS127では、第1の単位処理グループの中から優先順位(図7参照)の1番であるシアンの単位HT処理を第1のスレッドに割り付け、優先順位の2番であるブラックの単位HT処理を第2のスレッドに割り付ける。なお、図11において、各単位HT処理を表す四角の上に示されている番号が、各単位HT処理の順位である。また、以下の図においても、ディザ法で処理される第2種の単位HT処理は、ハッチをつけて示している。
以下では、第1のスレッドに関する処理について説明する。図10のステップS140では、第1のスレッドを実行状態とする。ステップS140における処理は、第1の実施形態の図3のフローチャートと同じである。ステップS145では、第1のスレッドに割り付けられたシアンの単位HT処理を実行する。そして、単位HT処理を完了すると、ステップS160において、第1のスレッドは待機状態となる。ステップS160における処理は、第1の実施形態と同じである。
ステップS195では、まだスレッドに割り付けられていない単位HT処理が存在するか否かを判定する。まだ割り付けられていない単位HT処理が存在する場合には、ステップS127に戻る。すべての単位HT処理が第1または第2のスレッドに割り付けられている場合には、ステップS200に進む。ステップS200では、画像データMID1に含まれるすべてのラスタラインについて、色変換処理およびハーフトーン処理を終えたか否かを判定する。以降の処理は第1の実施形態と同じである。
第2のスレッドに関するステップS170〜S197における手続きは、それぞれ第1のスレッドに関するステップS140〜S195の手続きと同じである。図11からも分かるように、第2のスレッドに割り付けられたブラックの単位HT処理は、第1のスレッドに割り付けられたシアンの単位HT処理よりも大幅に負荷が小さいので、ステップS160とS190とに着目すると、第1のスレッドよりも先に第2のスレッドが待機状態となる。
図12は、割り付けられた単位HT処理を最も早く完了した第2のスレッドに新たにライトシアンの単位HT処理が割り付けられた状態を示す説明図である。ステップS195またはS197からステップS127に戻った場合は、現在、実行中の単位HT処理を有していないスレッドに、まだスレッドに割り付けられていない単位HT処理が割り付けられる。この段階では、まだ割り付けられていない単位HT処理の中に第1の処理グループの単位HT処理が存在する。このため、第1の処理グループの単位HT処理の中から最も優先順位の高いライトシアンの単位HT処理が、先に単位HT処理を完了した第2のスレッドに割り付けられる。
なお、図12において、すでに完了した単位HT処理を二重線で描かれた四角で示し、新たに割り付けられた単位HT処理を、一点鎖線で描かれた四角で示す。また、完了した単位HT処理の実際の処理時間(負荷)は、多くの場合、あらかじめ見積もられた負荷とは異なる。それら実際の負荷を「’」をつけて示す。以下の図において同じである。図においてPtで示す現在時刻において、第1のスレッドはまだシアンの単位HT処理を実行している。
なお、図12においては、ブラックの単位HT処理に関して、見積もられた負荷を破線で示す。また、見積もられた負荷と実際の処理時間の差をdkで示す。文字dに付された添え字kがインク色を示す。ブラックの単位HT処理には、見積もられた負荷よりも長い時間を要したため、dkは正である。
その後、割り付けられた単位HT処理は、ステップS140〜S195、またはステップS170〜S197において処理される。以下、同様に手続きが行われる。
図13は、それまでに割り付けられた単位HT処理を完了した第1のスレッドに新たにイエローの単位HT処理が割り付けられた状態を示す説明図である。図中でPtで示す現在時刻において、すでに第1の処理グループはすべてスレッドに割り付けられている(図7参照)。よって、以降は、ステップS127においては、第2の処理グループに含まれる単位HT処理のうち最も負荷の大きい単位HT処理が、スレッドに割り付けられる。ここでは、イエローの単位HT処理が第1のスレッドに割り付けられる。
図14は、それまでに割り付けられた単位HT処理を完了した第2のスレッドに新たにダークイエローの単位HT処理が割り付けられた状態を示す説明図である。図13と図14に示すように、イエローの単位HT処理が見積もり負荷に比べて長時間を要しているのに対して、ライトマゼンタの単位HT処理が見積もり負荷に比べて短時間で完了している(図14のdlm参照)。なお、ライトマゼンタの単位HT処理の見積もり負荷は、図14において破線で示されており、実際の処理時間は二重線で示されている。イエローの単位HT処理の見積もり負荷は図14において破線で示されており、実際の処理時間は、まだ処理が完了していないことから実線の直線および波線で示されている。
図14に示すように、第1のスレッドにおけるイエローの単位HT処理よりも先に、第2のスレッドにおけるライトマゼンタの単位HT処理が完了している。よって、最後に残ったダークイエローの単位HT処理は、新たに第2のスレッドに割り付けられている。
図15は、すべての単位HT処理を完了した状態を示す説明図である。ダークイエローの単位HT処理は、見積もり負荷に対してddyだけ多くの時間を要して完了している。第1の実施形態の図9と比べれば分かるように、第1の実施形態の割り付けでは、ダークイエローの単位HT処理は、第1のスレッドに割り付けられていたのに対して、第2の実施形態では、第2のスレッドに割り付けられている。これは、各単位HT処理の負荷の見積もりと、実際の処理時間(負荷)との間にずれが生じたことに起因する。
図15において、ダークイエローの単位HT処理を第1のスレッドに割り付けた場合のダークイエローの単位HT処理を、二点鎖線で示す。なお、ここでは、第2のスレッドにおいて、ライトマゼンタの単位HTの後で、イエローの単位HT処理と一部平行してダークイエローの単位HT処理を行う場合と、第1のスレッドにおいて、イエローの単位HTの後で、第2のスレッドが待機している状態でダークイエローの単位HT処理を行う場合とで、処理に要する時間は変わらないものと仮定している。
第2の実施形態においては、第1のスレッドと第2のスレッドの完了時刻の差は、Tfdfである。これに対して、第1の実施形態の割り付けに従って、各単位HT処理を実行した場合は、図15に示すように、Tfdf2(>Tfdf)である。第2の実施形態においては、実際に先に処理が完了したスレッドに新たに単位HT処理を割り付けているため、負荷の見積もりと実際の処理時間とのずれに影響されることなく、スレッド間の負荷のばらつきを小さくすることができる。
C.変形例.
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
C1.変形例1:
上記実施形態では、スレッドは二つであった。しかし、スレッドは3以上設けるものとしてもよい。ただし、本発明の上記各態様は、単位処理を実行するためのスレッドの数が単位処理の数よりも少ない場合に適用すると、特に効果的である。スレッドが3以上ある態様においては、単位HT処理を事前に割りあてる際には、3以上あるスレッドのうちすでに割り当てられた単位処理の負荷の合計が最も少ないスレッドに、まだスレッドに割り当てられていない単位処理のうちの一つを割り当てることが好ましい。そして、ハーフトーン処理を実行しつつ単位HT処理を割りあてる際には、3以上あるスレッドのうちすでに割り当てられた単位処理の実行を最も早く完了したスレッドに、単位処理を処理部に割り当てることが好ましい。
上記各実施形態では、コンピュータの一つのCPUが、ハイパースレッディングによって複数のスレッドで単位HT処理を実行していた。しかし、各単位HT処理は、複数のCPUで分担して実行することもできる。そのような態様においても、上記各実施形態と同様の手順で、各CPU間の負荷のばらつきが小さくなるように各CPUに各単位HT処理を割り付けることができる。
また、上記各実施形態では、スレッドは2個に固定されていた。しかし、ハイパースレッディングにおいて生成するスレッドの数や、マルチCPUのコンピュータにおいて使用するCPUの数を、状況に応じて変えることができる態様とすることもできる。たとえば、本発明の実施態様の一つである画像処理装置は、スレッドの数を1とする動作モードと、スレッドの数を2とする動作モード、スレッドの数を3とする動作モードなど、複数の動作モードを有する態様とすることができる。スレッドやCPUなどの処理部が2以上の場合は、上記各実施形態と同様の手順で負荷の割り付け、および実行順序の決定を行うことができる。処理部が一つである場合は、あらかじめ定められた順序に沿って、その処理部上で各単位処理を実行する態様とすることができる。
C2.変形例2:
上記各実施形態においては、各単位HT処理の負荷の見積もりの際には、直前にハーフトーン処理を行った領域LLs(i−1)についての各単位HT処理の処理時間を、対応するインク色の単位HT処理の負荷とした。しかし、単位HT処理の負荷の見積もりは他の値に基づいて行うこともできる。たとえば、直前にハーフトーン処理を行った領域LLs(i−1)内における各インク色のドットの発生量または発生確率を、次にハーフトーン処理を行う領域LLs(i)についての各単位HT処理の負荷とすることができる。
このような態様においては、図5のステップS60において、第2の処理グループは、直前の領域LLs(i−1)におけるドットの発生量または発生確率が高いものから、スレッドに割り付けられる(図9ならびに図14および図15参照)。また、図5のステップS30において第1の処理グループの単位HT処理を種類ごとに順位付けをする際にも(図6参照)、直前の領域LLs(i−1)におけるドットの発生量または発生確率に基づいて、順位付けをすることが好ましい。
また、ハーフトーン処理の方法が同じ単位HT処理については、負荷を一律に定めてもよい。たとえば、ディザ法によるハーフトーン処理を行う単位HT処理の負荷を1とし、誤差拡散法によるハーフトーン処理を行う単位HT処理の負荷を3としてもよい。さらに、ハーフトーン処理の方法と、上述した処理時間やドットの発生量または発生確率を組み合わせて、負荷を定めてもよい。たとえば、ディザ法によるハーフトーン処理を行う単位HT処理の負荷を1×[ドット発生確率]とし、誤差拡散法によるハーフトーン処理を行う単位HT処理の負荷を3×[ドット発生確率]としてもよい。すなわち、単位処理の負荷の見積もりは、直前に実行された処理集合に含まれる各単位処理の実行結果を考慮して定めるものとすればよい。
C3.変形例3:
上述した各実施形態では、第1の処理グループの後でスレッドに割り付けられる第2の処理グループは、2個の単位HT処理を含んでいた。しかし、第2の処理グループが含む単位HT処理の数は1個であってもよいし、3個以上であってもよい。すなわち、第1の処理グループの後でスレッドに割り付けられる第2の処理グループは、すべての単位処理のうちの一部の単位処理を含むものとすることができる。
C4.変形例4:
上記第1実施例では、各単位HT処理は、スレッドへの割り付けにおいて割り付けられた順に実行されていた。しかし、各スレッドへの単位HT処理の割り付けとは別に、割り付けられた単位HT処理の実行順序を決定するスケジューリングを行ってもよい。すなわち、各処理部への単位処理の割り付けにおいて、比較的負荷の小さい単位処理を比較的負荷の大きい単位処理の後から割り付けることとし、それまでに割り付けられた負荷の合計が少ない処理部に、一つずつ単位処理を割り付けることとすれば、各処理部間の負荷のばらつきの少ない割り付けを行うことができる。
C5.変形例5:
上記各実施形態では、第1の処理グループは、誤差拡散法による第1種の単位HT処理とディザ法による第2種の単位HT処理とが、並列に処理されるように各単位HTが割り付けられた。しかし、第1の処理グループの割り付けの際には、他の目的を達成するように割り付けを行ってもよい。すなわち、第1の処理グループの割り付けの際には、任意の目的に沿って割り付けを実行することができる。そして、第1の処理グループの処理部への割り付けと、第2の処理グループの処理部への割り付けは、別に行われるため、互いに異なる目的を設定することができる。
C6.変形例6:
印刷画像データFNLを受け取るプリンタ22が、同じインク色について大中小などの複数種類の大きさのドットを形成することができる場合には、ハーフトーン処理は、各インク色の各ドットの種類の単位で行われる。上記各実施形態では、単位HT処理は各インク色ごとのハーフトーン処理であったが、このような態様においては、単位HT処理は、各インク色の各ドットの種類の単位のハーフトーン処理とすることができる。
C7.変形例7:
上述した各実施形態では、有彩色インクとしてシアン(C)、マゼンダ(M)、イエロー(Y)、ブラック(K)、ライトシアン(LC)、ライトマゼンタ(LM)、ダークイエロー(DY)の7種類のインクを用いていた。しかし、レッド(R)、バイオレット(V)などこれら以外の有彩色インクや同色系の濃淡有彩色インクを用いることも可能である。さらに、無彩色で互いに濃度が異なるブラック(K1)、淡ブラック(K2)、淡淡ブラック(K3)を用いることも可能である。さらに、クリアインクを使用することも可能である。すなわち、インクとしては、様々な色のインクを使用することができ、処理集合は様々なインク色についての単位HT処理を含むことができる。
C8.変形例8:
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。例えば、プリンタドライバ96(図1参照)の機能の一部をプリンタのCPU41が実行するようにすることもできる。
このような機能を実現するコンピュータプログラムは、フロッピディスクやCD−ROM等の、コンピュータ読み取り可能な記録媒体に記録された形態で提供される。ホストコンピュータは、その記録媒体からコンピュータプログラムを読み取って内部記憶装置または外部記憶装置に転送する。あるいは、通信経路を介してプログラム供給装置からホストコンピュータにコンピュータプログラムを供給するようにしてもよい。コンピュータプログラムの機能を実現する時には、内部記憶装置に格納されたコンピュータプログラムがホストコンピュータのマイクロプロセッサによって実行される。また、記録媒体に記録されたコンピュータプログラムをホストコンピュータが直接実行するようにしてもよい。
この明細書において、コンピュータとは、ハードウェア装置とオペレーションシステムとを含む概念であり、オペレーションシステムの制御の下で動作するハードウェア装置を意味している。コンピュータプログラムは、このようなコンピュータに、上述の各部の機能を実現させる。なお、上述の機能の一部は、ドライバやアプリケーションプログラムでなく、オペレーションシステムによって実現されていても良い。
なお、この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやCD−ROMのような携帯型の記録媒体に限らず、各種のRAMやROM等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
第1の実施形態の印刷システムのソフトウェアの構成を示すブロック図。 コンピュータ90のCPU90a内における処理を示すブロック図。 色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャート。 色変換処理とハーフトーン処理を行うラスタラインLLs(i)を示す説明図。 図3のステップS130における各色の単位HT処理のスレッドへの割り付けの手順を示すフローチャート。 負荷の大きさに基づいて順位付けされた第1種の単位HT処理と第2種の単位HT処理を示す説明図。 順位付けされた第1の処理グループの単位HT処理を示す説明図。 第1と第2のスレッドに割り付けられた第1の処理グループの単位HT処理を示す説明図。 第1と第2のスレッドに割り付けられた第1および第2の処理グループの単位HT処理を示す説明図。 第2の実施形態における色変換処理とハーフトーン処理の具体的な処理の流れを示すフローチャート。 ステップS127において各スレッドに単位HT処理が割り付けられた状態を示す説明図。 割り付けられた単位HT処理を完了した第2のスレッドにライトシアンの単位HT処理が割り付けられた状態を示す説明図。 割り付けられた単位HT処理を完了した第1のスレッドに新たにイエローの単位HT処理が割り付けられた状態を示す説明図。 割り付けられた単位HT処理を完了した第2のスレッドに新たにダークイエローの単位HT処理が割り付けられた状態を示す説明図。 すべての単位HT処理を完了した状態を示す説明図。
符号の説明
21…CRTディスプレイ
22…プリンタ
28…印刷ヘッド
31…キャリッジ
32…操作パネル
41…CPU
42…P−ROM
90…コンピュータ
91…ビデオドライバ
95…アプリケーションプログラム
96…プリンタドライバ
97…解像度変換モジュール
98…色変換モジュール
99…ハーフトーンモジュール
100…並べ替えモジュール
104…色変換テーブル
105…負荷記憶部
120…キーボード
130…マウス
Ad…色変換処理およびハーフトーン処理がすでに行われた領域
Ay…色変換処理およびハーフトーン処理が行われていない領域
FNL…印刷画像データ
LDF…スレッド間の負荷の差
LLs(i−1)…参照ラスタライン
LLs(i)…対象ラスタライン
LLs(i+1)…対象ラスタラインの下隣の2本のラスタライン
Lc…シアンの単位HT処理の負荷
Ldy…の単位HT処理の負荷
Lk…の単位HT処理の負荷
Llc…の単位HT処理の負荷
Llm…の単位HT処理の負荷
Lm…の単位HT処理の負荷
Ly…の単位HT処理の負荷
MID1…解像度変換後の画像データ
MID2…色変換後の画像データ
MID3…ハーフトーン処理後の画像データ
MS…キャリッジの移動方向(主走査方向)
ORG…原画像データ
P…印刷用紙
Pp1,Pp2…誤差拡散法によるハーフトーン処理とディザ法によるハーフトーン処理とが並行して行われる時間
PID…初期画像データ
SS…印刷用紙の搬送方向(副走査方向)
Tfdf…第1のスレッドと第2のスレッドの処理の終了時刻の差。
Tfdf2…第1のスレッドでダークイエローの単位HT処理を実行する場合の第1のスレッドと第2のスレッドの処理の終了時刻の差。
ddy…ダークイエローの単位HT処理について見積もられた負荷と実際の処理時間の差
dk…ブラックの単位HT処理について見積もられた負荷と実際の処理時間の差
dlm…ライトマゼンタの単位HT処理について見積もられた負荷と実際の処理時間の差
dm…マゼンタの単位HT処理について見積もられた負荷と実際の処理時間の差
dy…イエローの単位HT処理について見積もられた負荷と実際の処理時間の差

Claims (18)

  1. N種類(Nは3以上の整数)の単位処理を含む処理集合を繰り返し実行する画像処理において、前記各処理集合の実行に先立って、前記単位処理を実行するためのM個(Mは2以上でN未満の整数)の処理部に前記N種類の単位処理を割り当てる方法であって、
    (a)直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もる工程と、
    (b)前記見積もり負荷に基づいて、前記N種類の単位処理を、第1の処理グループと、前記第1の処理グループに含まれる単位処理よりも前記見積もり負荷が小さい第2の処理グループと、に分類する工程と、
    (c)前記第1の処理グループに含まれる単位処理を前記処理部に割り当てる工程と、
    (d)前記第1の処理グループに含まれる単位処理の割り当てを完了した後、前記第2の処理グループに含まれる単位処理を前記処理部に割り当てる工程とを有し、
    前記工程(d)は、
    (d1)すでに割り当てられた単位処理の前記見積もり負荷の合計が最も少ない処理部である最小負荷処理部に、まだ前記処理部に割り当てられていない前記第2の処理グループの単位処理のうちの一つを割り当てる工程を含む、方法。
  2. 請求項1記載の方法であって、
    前記単位処理は、
    画像中の所定の大きさの領域に関する所定の色についてのハーフトーン処理であり、
    前記処理集合は、
    前記画像中の同一の領域を対象とする互いに異なる色の前記単位処理の集合であり、
    前記画像中の互いに隣接する領域について並びの順に実行される、方法。
  3. 請求項2記載の方法であって、
    前記最小負荷処理部に割り当てられる前記第2の処理グループの一つの単位処理は、まだ前記処理部に割り当てられていない前記第2の処理グループの単位処理のうちで、前記見積もり負荷が最も大きい単位処理である、方法。
  4. 請求項2記載の方法であって、
    前記単位処理は、
    第1の変換方法を用いて前記変換を行う第1種の単位処理と、
    前記第1の変換方法とは異なる第2の変換方法を用いて前記変換を行う第2種の単位処理と、を含み、
    前記工程(c)で前記処理部に割り当てられた単位処理は、
    前記各処理部において前記工程(c)で割り当てられた順に実行され、
    前記工程(c)は、
    前記第1種の単位処理が所定の処理部で実行されているときに、前記第2種の単位処理が他の処理部で処理されるように、前記処理部に割り当てる工程を含む、方法。
  5. 請求項4記載の方法であって、
    前記工程(c)は、さらに、
    前記最小負荷処理部に、まだ前記処理部に割り当てられておらず、かつ、直前に前記処理部に割り当てた単位処理とは前記変換方法が異なる単位処理のうちで、前記見積もり負荷が最も大きい単位処理を割り当てる工程を含む、方法。
  6. 請求項5記載の方法であって、
    前記第1の変換方法は誤差拡散法であり、
    前記第2の変換方法はディザ法である、方法。
  7. N種類(Nは3以上の整数)の単位処理を含む処理集合を繰り返し実行する画像処理において、前記単位処理を実行するためのM個(Mは2以上でN未満の整数)の処理部で前記処理集合の一部の単位処理を実行しつつ、前記処理集合の他の一部の前記単位処理を前記処理部に割り当てる方法であって、
    (a)直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もる工程と、
    (b)前記見積もり負荷に基づいて、前記N種類の単位処理を、第1の処理グループと、前記第1の処理グループに含まれる単位処理よりも前記見積もり負荷が小さい第2の処理グループと、に分類する工程と、
    (c)すでに割り当てられた単位処理の実行を完了した処理部に、前記第1の処理グループに含まれる単位処理を割り当てる工程と、
    (d)前記第1の処理グループに含まれる単位処理の割り当てを完了した後、すでに割り当てられた単位処理の実行を完了した処理部に、前記第2の処理グループに含まれる単位処理を割り当てる工程とを有する、方法。
  8. 請求項7記載の方法であって、
    前記単位処理は、
    画像中の所定の大きさの領域に関する所定の色についてのハーフトーン処理であり、
    前記処理集合は、
    前記画像中の同一の領域を対象とする互いに異なる色の前記単位処理の集合であり、
    前記画像中の互いに隣接する領域について並びの順に実行される、方法。
  9. 請求項8記載の方法であって、
    前記工程(d)は、
    まだ前記処理部に割り当てられていない前記第2の処理グループの単位処理のうちで、前記見積もり負荷が最も大きい単位処理を割り当てる工程を含む、方法。
  10. 請求項8記載の方法であって、
    前記単位処理は、
    第1の変換方法を用いて前記変換を行う第1種の単位処理と、
    前記第1の変換方法とは異なる第2の変換方法を用いて前記変換を行う第2種の単位処理と、を含み、
    前記工程(c)で前記処理部に割り当てられた単位処理は、
    前記各処理部において前記工程(c)で割り当てられた順に実行され、
    前記工程(c)は、
    前記第1種の単位処理が所定の処理部で実行されているときに、前記第2種の単位処理が他の処理部で処理されるように、前記処理部に割り当てる工程を含む、方法。
  11. 請求項10記載の方法であって、
    前記工程(c)は、
    まだ前記処理部に割り当てられておらず、かつ、直前に前記処理部に割り当てた単位処理とは前記変換方法が異なる単位処理のうちで、前記見積もり負荷が最も大きい単位処理を割り当てる工程を含む、方法。
  12. 請求項11記載の方法であって、
    前記第1の変換方法は誤差拡散法であり、
    前記第2の変換方法はディザ法である、方法。
  13. N種類(Nは3以上の整数)の単位処理を含む処理集合を繰り返し実行する画像処理において、前記各処理集合の実行に先立って、前記単位処理を実行するためのM個(Mは2以上でN未満の整数)の処理部に前記N種類の単位処理を割り当てるためのコンピュータプログラムであって、
    直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もる機能と、
    前記見積もり負荷に基づいて、前記N種類の単位処理を、第1の処理グループと、前記第1の処理グループに含まれる単位処理よりも前記見積もり負荷が小さい第2の処理グループと、に分類する機能と、
    前記第1の処理グループに含まれる単位処理を前記処理部に割り当てる機能と、
    前記第1の処理グループに含まれる単位処理の割り当てを完了した後、前記第2の処理グループに含まれる単位処理を前記処理部に割り当てる機能と、をコンピュータに実現させ、
    前記第2の処理グループに含まれる単位処理を割り当てる機能は、
    すでに割り当てられた単位処理の前記見積もり負荷の合計が最も少ない処理部である最小負荷処理部に、まだ前記処理部に割り当てられていない前記第2の処理グループの単位処理のうちの一つを割り当てる機能を含む、コンピュータプログラム。
  14. N種類(Nは3以上の整数)の単位処理を含む処理集合を繰り返し実行する画像処理において、前記単位処理を実行するためのM個(Mは2以上でN未満の整数)の処理部で前記処理集合の一部の単位処理を実行しつつ、前記処理集合の他の一部の前記単位処理を前記処理部に割り当てるためのコンピュータプログラム
    であって、
    直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もる機能と、
    前記見積もり負荷に基づいて、前記N種類の単位処理を、第1の処理グループと、前記第1の処理グループに含まれる単位処理よりも前記見積もり負荷が小さい第2の処理グループと、に分類する機能と、
    すでに割り当てられた単位処理の実行を完了した処理部に、前記第1の処理グループに含まれる単位処理を割り当てる機能と、
    前記第1の処理グループに含まれる単位処理の割り当てを完了した後、すでに割り当てられた単位処理の実行を完了した処理部に、前記第2の処理グループに含まれる単位処理を割り当てる機能と、をコンピュータに実現させる、コンピュータプログラム。
  15. N種類(Nは3以上の整数)の単位処理を含む処理集合を繰り返し実行して画像処理を行う画像処理装置であって、
    前記単位処理を実行するためのM個(Mは2以上でN未満の整数)の処理部を有し、前記処理集合を実行して画像処理を行う画像処理部と、
    前記各処理集合の実行に先立って、前記処理部に前記N種類の単位処理を割り当てる割り付け部と、
    を有し、
    前記割り付け部は、
    直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もり、
    前記見積もり負荷に基づいて、前記N種類の単位処理を、第1の処理グループと、前記第1の処理グループに含まれる単位処理よりも前記見積もり負荷が小さい第2の処理グループと、に分類し、
    前記第1の処理グループに含まれる単位処理を前記処理部に割り当て、
    前記第1の処理グループに含まれる単位処理の割り当てを完了した後、前記第2の処理グループに含まれる単位処理を前記処理部に割り当て、
    前記第2の処理グループに含まれる単位処理を割り当てる際には、
    すでに割り当てられた単位処理の前記見積もり負荷の合計が最も少ない処理部である最小負荷処理部に、まだ前記処理部に割り当てられていない前記第2の処理グループの単位処理のうちの一つを割り当てる、画像処理装置。
  16. 請求項15記載の画像処理装置であって、
    前記画像処理部は、ハイパースレッディングにより前記処理集合を実行し、
    前記処理部は、スレッドである、画像処理装置。
  17. N種類(Nは3以上の整数)の単位処理を含む処理集合を繰り返し実行して画像処理を行う画像処理装置であって、
    前記単位処理を実行するためのM個(Mは2以上でN未満の整数)の処理部を有し、前記処理集合を実行して画像処理を行う画像処理部と、
    前記処理集合の一部の単位処理が実行されている間に、前記処理集合の他の一部の前記単位処理を前記処理部に割り当てる割り付け部と、を有し、
    前記割り付け部は、
    直前に実行された処理集合に含まれる各単位処理の実行結果に基づいて、次の処理集合における各種類の単位処理の見積もり負荷を見積もり、
    前記見積もり負荷に基づいて、前記N種類の単位処理を、第1の処理グループと、前記第1の処理グループに含まれる単位処理よりも前記見積もり負荷が小さい第2の処理グループと、に分類し、
    すでに割り当てられた単位処理の実行を完了した処理部に、前記第1の処理グループに含まれる単位処理を割り当て、
    前記第1の処理グループに含まれる単位処理の割り当てを完了した後、すでに割り当てられた単位処理の実行を完了した処理部に、前記第2の処理グループに含まれる単位処理を割り当てる、画像処理装置。
  18. 請求項17記載の画像処理装置であって、
    前記画像処理部は、ハイパースレッディングにより前記処理集合を実行し、
    前記処理部は、スレッドである、画像処理装置。
JP2004056334A 2004-03-01 2004-03-01 画像処理を並列処理で実行する際の負荷の割り付け Pending JP2005250565A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004056334A JP2005250565A (ja) 2004-03-01 2004-03-01 画像処理を並列処理で実行する際の負荷の割り付け
US11/069,855 US7436559B2 (en) 2004-03-01 2005-02-28 Load assignment in image processing by parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004056334A JP2005250565A (ja) 2004-03-01 2004-03-01 画像処理を並列処理で実行する際の負荷の割り付け

Publications (1)

Publication Number Publication Date
JP2005250565A true JP2005250565A (ja) 2005-09-15

Family

ID=35031020

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004056334A Pending JP2005250565A (ja) 2004-03-01 2004-03-01 画像処理を並列処理で実行する際の負荷の割り付け

Country Status (1)

Country Link
JP (1) JP2005250565A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065459A (ja) * 2004-08-25 2006-03-09 Seiko Epson Corp 画像処理を並列処理で実行する際の負荷の割り付け
JP2007158722A (ja) * 2005-12-05 2007-06-21 Canon Inc 画像処理装置及びその制御方法、プログラム、記憶媒体
JP2007241068A (ja) * 2006-03-10 2007-09-20 Fuji Xerox Co Ltd 画像形成装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065459A (ja) * 2004-08-25 2006-03-09 Seiko Epson Corp 画像処理を並列処理で実行する際の負荷の割り付け
JP4556554B2 (ja) * 2004-08-25 2010-10-06 セイコーエプソン株式会社 画像処理を並列処理で実行する際の負荷の割り付け
JP2007158722A (ja) * 2005-12-05 2007-06-21 Canon Inc 画像処理装置及びその制御方法、プログラム、記憶媒体
JP2007241068A (ja) * 2006-03-10 2007-09-20 Fuji Xerox Co Ltd 画像形成装置

Similar Documents

Publication Publication Date Title
US7466465B2 (en) Load allocation when executing image processing using parallel processing
JP2008017365A (ja) 画像処理装置、画像処理方法及びプログラム
US7460285B2 (en) Load allocation when executing image processing using parallel processing
US7436559B2 (en) Load assignment in image processing by parallel processing
US7268919B2 (en) Image data processing apparatus, method, and program that diffuses gradiation error for each pixel in target block
JP4564986B2 (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JP2005250565A (ja) 画像処理を並列処理で実行する際の負荷の割り付け
US8860971B2 (en) Printing device and printing method of printing device
JP2005260424A (ja) 画像処理を並列処理で実行する際の負荷の割り付け
JP2007050708A (ja) 画像処理装置及び印刷装置
US9883078B2 (en) Systems and methods for efficient halftone where different dithering matrices are combined
JP3268712B2 (ja) 画像形成方法とその装置
JP4189679B2 (ja) 印刷制御装置、印刷制御方法および印刷制御プログラム
US20130135685A1 (en) Printing system and printing system program
JP3664351B2 (ja) 画像処理装置、カラー印刷装置、及び画像処理方法、並びに記録媒体
JP2006103045A (ja) 画像形成装置
JP2013078873A (ja) 画像処理装置および画像処理方法
JP2004259027A (ja) 印刷制御装置、印刷制御方法および印刷制御プログラム
JP2007129695A (ja) 印刷装置、印刷プログラム、印刷方法、および画像処理装置、画像処理プログラム、画像処理方法、並びに前記プログラムを記録した記録媒体、表示装置
JP2005295131A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP6772717B2 (ja) 画像処理装置、および、コンピュータプログラム
JP2004112313A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP2005161580A (ja) 画像処理装置、画像処理方法およびコンピュータプログラム
JP2008283566A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP2004276266A (ja) 色空間対応関係修正装置、色空間対応関係修正方法および色空間対応関係修正プログラム