(57)【要約】【課題】  複数のプロセッサにより一連の複数の画像処理を順番に施す場合に、プロセッサ間でのデータの授受に要する時間を短くして、画像処理全体を高速化すること。【解決手段】  ＩＣチップ（例えばＡＳＩＣ１）は、第１の画像処理を施す第１のプロセッサ（例えば色変換ＣＰＵ１１）、第２の画像処理を施す第２のプロセッサ（例えばＨＴＣＰＵ２１〜２４）、内部メモリ２５を有する。そして、第１のプロセッサは、画像データに対して所定の単位量ごとに第１の画像処理を施し、第１の画像処理を施した画像データを内部メモリに格納し、第２のプロセッサは、内部メモリに格納されている画像データを読み出し、第２の画像処理を施す。【選択図】  図１
2006163999.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対して第１の画像処理と第２の画像処理を順番に施す画像処理装置において、
上記第１の画像処理を施す第１のプロセッサおよび上記第２の画像処理を施す第２のプロセッサを有するＩＣチップと、
上記第１および第２のプロセッサと同一のＩＣチップに設けられた内部メモリと、
上記ＩＣチップにバスを介して接続され上記画像データを記憶する外部メモリと、
を備え、
上記第１のプロセッサは、画像データに対して所定の単位量ごとに上記第１の画像処理を施し、上記第１の画像処理を施した画像データを上記内部メモリに格納し、
上記第２のプロセッサは、上記内部メモリに格納されている画像データを読み出し、上記第２の画像処理を施すこと、
を特徴とする画像処理装置。
【請求項２】
前記内部メモリは、所定の単位量の画像データを格納可能なバッファを複数有し、
前記第１のプロセッサは、すべての上記バッファ内の画像データに対して上記第２の画像処理が未完了である場合、１つの上記バッファ内の画像データに対して上記第２の画像処理が完了した後、そのバッファに、前記第１の画像処理を施した所定の単位量の画像データを格納し、
前記第２のプロセッサは、上記第２の画像処理を施していないいずれかの上記バッファ内の画像データを読み出し、上記第２の画像処理を施すこと、
を特徴とする請求項１記載の画像処理装置。
【請求項３】
前記内部メモリは、スタティックＲＡＭで構成されることを特徴とする請求項１記載の画像処理装置。
【請求項４】
画像データに対して色変換処理とハーフトーン処理を順番に施す画像処理装置において、
色変換処理を施す第１のプロセッサおよびハーフトーン処理を施す第２のプロセッサを有するＩＣチップと、
上記第１および第２のプロセッサと同一のＩＣチップに設けられた内部メモリと、
上記ＩＣチップにバスを介して接続され上記画像データを記憶する外部メモリと、
を備え、
上記第１のプロセッサは、画像データに対して所定の単位量ごとに色変換処理を施し、色変換処理後の画像データを上記内部メモリに格納し、
上記第２のプロセッサは、上記内部メモリに格納されている画像データを読み出し、色ごとにハーフトーン処理を施すこと、
を特徴とする画像処理装置。
【請求項５】
前記ＩＣチップは、前記第２のプロセッサを複数有し、分散処理を実行し、
前記内部メモリは、複数の前記第２のプロセッサのそれぞれと、前記ＩＣチップ内の内部バスで相互に接続されること、
を特徴とする請求項１または請求項４記載の画像処理装置。
【請求項６】
請求項４項記載の画像処理装置を備え、
その画像処理装置により処理された画像データに基づいて印刷を行うこと、
を特徴とする印刷装置。
【請求項７】
画像データに対して第１の画像処理と第２の画像処理を順番に施す画像処理方法において、
第１のプロセッサにより画像データに対して上記第１の画像処理を施すステップと、
上記第１の画像処理を施した画像データを、上記第１のプロセッサと同一のＩＣチップ内の内部メモリに格納するステップと、
上記第１のプロセッサおよび上記内部メモリと同一のＩＣチップ内の第２のプロセッサにより、上記内部メモリに格納されている画像データに対して上記第２の画像処理を施すステップと、
を備えることを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数Ｎ色の画像データに対する画像処理を色数Ｎより少ないＭ個のプロセッサで実行する画像処理装置、印刷装置および画像処理方法に関する。
【背景技術】
【０００２】
複数のプロセッサを使用して画像処理を実行する場合、一連の異なる複数の処理を複数のプロセッサに割り当てて実行する時間的並列方式、１つの処理を複数のプロセッサに割り当てて同種の処理を同時に実行する空間的並列方式、およびそれらを組み合せた方式がある。
【０００３】
このような場合、各プロセッサへの負荷の割り当てが均等ではないと、複数のプロセッサ全体の性能は最も負荷が高いプロセッサの性能に制限され、他のプロセッサに空き時間が生じる場合がある。処理に要する時間が常に一定であり既知である場合には複数のプロセッサへの均等な負荷分散は比較的簡単であるが、処理に要する時間が処理対象の画像データや各種パラメータにより設定される処理条件に応じて変動する場合には複数のプロセッサへの均等な負荷分散は簡単ではない。
【０００４】
前者の場合の負荷分散は静的負荷分散と呼ばれ、後者の場合の負荷分散は動的負荷分散と呼ばれる。動的負荷分散では、画像処理を行う際に、各プロセッサに割り当てる処理量が動的に変更される（例えば特許文献１，２，３参照）。
【０００５】
特許文献１の技術では、ある処理要求が発生した時点で、負荷の軽いプロセッサが特定され、そのプロセッサに処理が割り当てられる。また、特許文献２，３の技術では、ある処理要求が発生すると、その処理が複数の処理に分割され、分割後の複数の処理が複数のプロセッサに割り当てられる。
【０００６】
また、特許文献２，３における画像処理装置では、複数のプロセッサがリード／ライト可能な共有メモリに画像データが格納される。
【０００７】
【特許文献１】特開平６−２７４６０８号公報（明細書段落００４６，００４７等）
【特許文献２】特開平８−４４６７８号公報（明細書段落００２１等）
【特許文献３】特開平５−３２４５８３号公報（明細書段落００１６，００１７等）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のような共有メモリ型並列処理装置において、ある画素についての演算で生成された中間データを他の画素についての演算で使用する場合において、ある画素についての演算が割り当てられたプロセッサと他の画素についての演算が割り当てられたプロセッサとが異なるとき、ある画素についての演算を実行するプロセッサが、中間データが発生する度に、その中間データを、バスを介して共有メモリにライトし、その後、他のプロセッサが、他の画素についての演算を実行する際に必要に応じて、その中間データを、バスを介して共有メモリからリードする。
【０００９】
複数のプロセッサに接続される共有メモリには、各プロセッサ内のメモリ素子に比べ低速大容量のメモリ素子が使用されるため、各画素についての演算の際に低速な共有メモリにリード／ライトすることになり、処理速度を向上させることが困難であるという問題がある。
【００１０】
なお、各プロセッサ内にキャッシュなどの高速なメモリが設けられていても、あるプロセッサのキャッシュ内のデータを他のプロセッサで使用する場合には、あるプロセッサがキャッシュ内のデータを共有メモリへライトバックし、その後、他のプロセッサがそのデータを共有メモリからリードする必要があるため、上記の問題は解消されない。
【００１１】
本発明は、上記の問題に鑑みてなされたものであり、複数のプロセッサにより一連の複数の画像処理を順番に施す場合に、プロセッサ間でのデータの授受に要する時間を短くして、画像処理全体を高速化する画像処理装置、印刷装置および画像処理方法を得ることを目的とする。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、本発明では以下のようにした。
【００１３】
本発明に係る画像処理装置の１つは、第１の画像処理を施す第１のプロセッサおよび第２の画像処理を施す第２のプロセッサを有するＩＣチップと、第１および第２のプロセッサと同一のＩＣチップに設けられた内部メモリと、ＩＣチップにバスを介して接続され画像データを記憶する外部メモリとを備える。そして、第１のプロセッサは、画像データに対して所定の単位量ごとに第１の画像処理を施し、第１の画像処理を施した画像データを内部メモリに格納し、第２のプロセッサは、内部メモリに格納されている画像データを読み出し、第２の画像処理を施す。
【００１４】
これにより、プロセッサと同一のチップ内に設けられた内部メモリを画像データのバッファに使用するため、外部メモリをバッファとして使用する場合に比べ、プロセッサ間でのデータの授受に要する時間を短くして、画像処理全体を高速化することができる。
【００１５】
また、本発明に係る画像処理装置は、上記の画像処理装置に加え、次のようにしてもよい。つまり、その場合、内部メモリは、所定の単位量の画像データを格納可能なバッファを複数有する。また、第１のプロセッサは、すべてのバッファ内の画像データに対して第２の画像処理が未完了である場合、１つのバッファ内の画像データに対して第２の画像処理が完了した後、そのバッファに、第１の画像処理を施した所定の単位量の画像データを格納する。そして、第２のプロセッサは、第２の画像処理を施していないいずれかのバッファ内の画像データを読み出し、第２の画像処理を施す。
【００１６】
これにより、バッファを複数設けることにより、バッファが画像データで満たされている場合の第１のプロセッサによるデータ書き込みの待ち時間、およびバッファが空である場合の第２のプロセッサによるデータ読み出しの待ち時間の発生を抑制することができる。
【００１７】
また、本発明に係る画像処理装置は、上記の画像処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、内部メモリは、スタティックＲＡＭで構成される。
【００１８】
これにより、外部メモリをバッファとして使用する場合に比べ、プロセッサ間でのデータの授受に要する時間をさらに短くすることができる。
【００１９】
また、本発明に係る画像処理装置の１つは、色変換処理を施す第１のプロセッサおよびハーフトーン処理を施す第２のプロセッサを有するＩＣチップと、第１および第２のプロセッサと同一のＩＣチップに設けられた内部メモリと、ＩＣチップにバスを介して接続され画像データを記憶する外部メモリとを備える。そして、第１のプロセッサは、画像データに対して所定の単位量ごとに色変換処理を施し、色変換処理後の画像データを内部メモリに格納する。第２のプロセッサは、内部メモリに格納されている画像データを読み出し、色ごとにハーフトーン処理を施す。
【００２０】
これにより、プロセッサと同一のチップ内に設けられた内部メモリを色変換後の画像データのバッファに使用するため、外部メモリをバッファとして使用する場合に比べ、プロセッサ間でのデータの授受に要する時間を短くして、画像処理全体を高速化することができる。
【００２１】
また、本発明に係る画像処理装置は、上記の画像処理装置のいずれかに加え、次のようにしてもよい。つまり、その場合、ＩＣチップは、第２のプロセッサを複数有し、分散処理を実行する。また、内部メモリは、複数の第２のプロセッサのそれぞれと、ＩＣチップ内の内部バスで相互に接続される。
【００２２】
これにより、第２の画像処理またはハーフトーン処理を複数のプロセッサで分散処理する場合でも、各プロセッサが内部メモリから画像データを読み出すことができるため、分散処理に起因するオーバーヘッドを軽減することができる。
【００２３】
本発明に係る印刷装置は、上記の画像処理装置のいずれかを備え、その画像処理装置により処理された画像データに基づいて印刷を行う。
【００２４】
これにより、印刷実行前に必要な画像処理を高速に実行することができ、ユーザやプログラムからの指令を受けてから印刷を完了するまでの時間を短くすることができる。
【００２５】
本発明に係る画像処理方法は、第１のプロセッサにより画像データに対して第１の画像処理を施すステップと、第１の画像処理を施した画像データを、第１のプロセッサと同一のＩＣチップ内の内部メモリに格納するステップと、第１のプロセッサおよび内部メモリと同一のＩＣチップ内の第２のプロセッサにより、内部メモリに格納されている画像データに対して第２の画像処理を施すステップとを備える。
【００２６】
これにより、プロセッサと同一のチップ内に設けられた内部メモリを画像データのバッファに使用するため、外部メモリをバッファとして使用する場合に比べ、プロセッサ間でのデータの授受に要する時間を短くして、画像処理全体を高速化することができる。
【発明を実施するための最良の形態】
【００２７】
以下、図に基づいて本発明の実施の形態を説明する。
【００２８】
図１は、本発明の実施の形態に係る画像処理装置の構成を示すブロック図である。図１において、ＡＳＩＣ１は、第１のプロセッサとしての色変換ＣＰＵ１１、第２のプロセッサとしてのハーフトーンＣＰＵ２１〜２４、内部メモリ２５、それらを相互に接続しデータの授受を行う信号線である内部バス２６を有するＩＣチップである。
【００２９】
また、色変換ＣＰＵ１１は、画像データの色座標を変換する色変換処理を実行するためのＣＰＵ（Central Processing Unit ）である。なお、この実施の形態では、画像データが３色のＲＧＢデータから７色のＣＹＭＫデータ（シアンＣ，イエローＹ，マゼンタＭ，ブラックＫ，レッドＲ，ブルーＢ，クリア（つやだし）ＣＬ）へ変換される。
【００３０】
図２は、画像データの一例を示す図である。図２（Ａ）は、複数の画素ライン１０１ａ，１０１ｂ，１０１ｃを含む画像１０１を示す。図２（Ｂ）は、図２（Ａ）に対応する画像データ１１１である。画像データ１１１では、先頭に、画像１０１上端の画素ライン１０１ａに対応する１ライン分のＲＧＢデータ１１１ａが配置され、中間に、画像１０１の上端と下端の間の画素ライン１０１ｂに対応する１ライン分のＲＧＢデータ１１１ｂが配置され、最後に、画像１０１下端の画素ライン１０１ｃに対応する１ライン分のＲＧＢデータ１１１ｃが配置される。
【００３１】
図３は、本発明の実施の形態における色変換後の画像データを示す図である。図３に示すように、この実施の形態では、色変換後の７色の画像データは、１ブロックごとに出力される。また、この実施の形態では、１ブロックは、縦１画素、横２５６画素の領域とされる。
【００３２】
図１に戻り、色変換ＣＰＵ１１において、色変換処理部１１ａは、図示せぬ色変換プログラムを実行することにより実現される処理部であって、画像データの色座標を変換する色変換処理を実行する。
【００３３】
また、スケジュール設定部１１ｂは、図示せぬスケジュール設定プログラムを実行することにより実現される処理部であって、後述のハーフトーンＣＰＵ２１〜２４の処理スケジュールを決定し設定する。
【００３４】
また、ハーフトーンＣＰＵ（以下、ＨＴＣＰＵという）２１〜２４は、複数Ｎ色の画像データに対するハーフトーン処理を、色毎に分割された画像データに対して実行する、色数Ｎより少ないＭ個のプロセッサである。なお、この実施の形態では、Ｎ＝７、Ｍ＝４である。つまり、この実施の形態では、画像データはシアンＣ、マゼンタＭ、ブラックＫ、レッドＲ、ブルーＢ、イエローＹおよびクリアＣＬの７色に分割される。
【００３５】
ハーフトーン処理は、色毎に独立して実行可能であるので、各ＨＴＣＰＵ２ｉ（ｉ＝１，・・・，４）は、１または複数の色のデータに対してハーフトーン処理を実行する。
【００３６】
この実施の形態では、ハーフトーン処理として、ディザ法による二値化、または誤差拡散法による二値化が実行される。
【００３７】
ディザ法は、注目画素の値と所定の閾値とを比較して、注目画素の値を二値化する方法である。誤差拡散法は、注目画素の値および周辺画素から二値化時に拡散された誤差データの和と所定の閾値とを比較して、注目画素の値を二値化し、注目画素の値および周辺画素から二値化時に拡散された誤差データの和と二値化後の値との差分である誤差データを所定の分布で周辺画素に拡散させる方法である。
【００３８】
なお、この実施の形態では、シアンＣ、マゼンタＭ、ブラックＫ、レッドＲおよびブルーＢの５色のデータに対しては誤差拡散法によるハーフトーン処理が実行され、イエローＹおよびクリアＣＬの２色のデータに対してはディザ法によるハーフトーン処理が実行される。
【００３９】
ＨＴＣＰＵ２ｉ（ｉ＝１，・・・，４）において、ハーフトーン処理部２ｉａは、図示せぬハーフトーン処理プログラムを実行することにより実現される処理部であって、１または複数の色のデータに対して、ディザ法または誤差拡散法の演算を施す演算部である。
【００４０】
また、ＲＡＭ３１は、大容量のダイナミックＲＡＭで構成された外部メモリである。ＲＡＭ３１において、スケジュール格納領域３１ａは、所定サイズのブロックごとに各ＨＴＣＰＵ２ｉにより画像処理が施される色を指定する分散スケジュールデータを含むスケジュールテーブルを格納される領域である。
【００４１】
図４は、本発明の実施の形態におけるスケジュールテーブルの一例を示す図である。スケジュールテーブルは、２以上の所定の数Ｐ個のブロック分の分散スケジュールデータを含む。図４に示すスケジュールテーブルは、４個のブロック分の分散スケジュールデータを含む。
【００４２】
図４に示すスケジュールテーブルでは、ブロック番号（色変換後の画像データの先頭のブロックからのシリアル番号）ｉを所定の数（ここでは、４）で除算したときの剰余ＭＯＤが０であるブロックについては、シアンＣおよびブラックＫがＨＴＣＰＵ２１に、マゼンタＭおよびイエローＹがＨＴＣＰＵ２２に、レッドＲおよびクリアＬがＨＴＣＰＵ２３に、ブルーＢがＨＴＣＰＵ２４に割り当てられる。
【００４３】
また、図４では、剰余ＭＯＤが１であるブロックについては、ブルーＢがＨＴＣＰＵ２１に、シアンＣおよびブラックＫがＨＴＣＰＵ２２に、マゼンタＭおよびイエローＹがＨＴＣＰＵ２３に、レッドＲおよびクリアＬがＨＴＣＰＵ２４に割り当てられる。
【００４４】
また、図４では、剰余ＭＯＤが２であるブロックについては、レッドＲおよびクリアＬがＨＴＣＰＵ２１に、ブルーＢがＨＴＣＰＵ２２に、シアンＣおよびブラックＫがＨＴＣＰＵ２３に、マゼンタＭおよびイエローＹがＨＴＣＰＵ２４に割り当てられる。
【００４５】
また、図４では、剰余ＭＯＤが３であるブロックについては、マゼンタＭおよびイエローＹがＨＴＣＰＵ２１に、レッドＲおよびクリアＬがＨＴＣＰＵ２２に、ブルーＢがＨＴＣＰＵ２３に、シアンＣおよびブラックＫがＨＴＣＰＵ２４に割り当てられる。
【００４６】
また、スケジュールテーブルでは、各ブロックの各ＨＴＣＰＵ２ｉについて、割り当てられた色の画像データに対する処理の順番も設定される。ただし、この順番は、優先順位であり、例えば処理結果が処理の順番に依存することに起因して順番が早い色の処理が開始できない場合には、順番の遅い色の処理が先に実行される。
【００４７】
図１に戻り、ＲＡＭ３１の画像データ格納領域３１ｂは、色変換処理の対象となる画像データ（ここではＲＧＢデータ）を格納される領域である。
【００４８】
また、ＡＳＩＣ１内の内部メモリ２５は、この実施の形態ではスタティックＲＡＭで構成され、ＲＡＭ３１より小容量である。色変換済み画像データ格納領域２５ａは、色変換後の画像データ（ここでは７色のＣＹＭＫデータ）を格納される領域である。図５は、本発明の実施の形態における色変換済み画像データ格納領域２５ａの一例を示す図である。図５に示す色変換済み画像データ格納領域２５ａは、４つのバッファ４１ａ，４１ｂ，４１ｃ，４１ｄを有する。各バッファ４１ａ，４１ｂ，４１ｃ，４１ｄには１ブロック分の７色の画像データが格納される。
【００４９】
また、ステータスデータ格納領域３１ｃは、色変換済み画像データ格納領域２５ａのバッファ４１ａ〜４１ｄのデータ格納状況を示すステータスデータを格納される領域である。図６は、本発明の実施の形態におけるステータスデータの一例を示す図である。図６に示すように、ステータスデータ５１は、各バッファ４１ａ，４１ｂ，４１ｃ，４１ｄに１ブロック分の画像データが格納されているか否かを示すデータである。例えば図５に示すようにバッファ４１ａ，４１ｂ，４１ｃのみに画像データが格納されている場合には、図６に示すように、バッファ４１ａ，４１ｂ，４１ｃの格納状況は「データあり」とされ、バッファ４１ｄの格納状況は「データなし」とされる。ステータスデータ５１は、１つのバッファにつき、４つのＨＴＣＰＵ２１〜２４のそれぞれにより処理される画像データが格納されているか否かを示す４つのフラグを有する。
【００５０】
また、誤差バッファ３１ｄは、ＨＴＣＰＵ２１〜２４に割り当てられた各色に対する誤差拡散法による二値化演算の際に発生する誤差データ（中間データ）を格納される領域である。この実施の形態では、誤差バッファ３１ｄには、シアンＣ、マゼンタＭ、レッドＲ、ブルーＢおよびブラックＫに対する誤差拡散法による二値化演算の際に発生する誤差データ（中間データ）が格納される。
【００５１】
また、ハーフトーン処理済み画像データ格納領域３１ｅは、ＨＴＣＰＵ２１〜２４によるハーフトーン処理後の二値化画像データを格納される領域である。
【００５２】
また、バス３２は、色変換ＣＰＵ１１、ＨＴＣＰＵ２１〜２４およびＲＡＭ３１を相互に接続し、それらの間のデータ転送路となる信号線である。
【００５３】
なお、上記の処理部１１ａ，１１ｂ，２１ａ〜２４ａを実現するための各プログラムは、図示せぬ不揮発性メモリに格納され、ＲＡＭ３１にロードされて、上記の各ＣＰＵにより実行される。
【００５４】
次に、上記装置の動作について説明する。図７は、本発明の実施の形態に係る画像処理装置における一連の画像処理を説明するフローチャートである。図８は、本発明の実施の形態に係る画像処理装置における画像データの流れを説明するブロック図である。
【００５５】
まず、図示せぬ別のＣＰＵなどにより、１ライン分のＲＧＢデータが生成され、元画像データ６１として、画像データ格納領域３１ａに格納される（ステップＳ１）。その際、例えば、ＪＰＥＧデータに対するＪＰＥＧデコードが行われたり、トーン調整および彩度強調、先鋭度の調整、ノイズ除去などの画像補正が行われたりする。また、画像処理後の画像データに基づいて印刷装置により画像が印刷される場合には、印刷解像度などの印刷条件に応じたリサイズ・レイアウト処理が行われたりする。
【００５６】
次に、色変換ＣＰＵ１１の色変換処理部１１ａは、ＲＡＭ３１の画像データ格納領域３１ａからＲＧＢデータを読み出し、７色のＣＭＹＫデータに変換し、１ブロック（２５６画素分）ずつ順番に、７色のＣＭＹＫデータ６２を、内部バス２６を介して内部メモリ２５の色変換済み画像データ格納領域２５ａに格納する（ステップＳ２）。色変換処理部１１ａは、１ブロックごとの当該処理を繰り返し実行して、１ライン分のデータに対する色変換処理を実行する。
【００５７】
ＨＴＣＰＵ２ｉ（ｉ＝１，・・・，４）のハーフトーン処理部２ｉａは、スケジュールテーブルを参照し、順番に色変換済み画像データ格納領域２５ａへ格納されたブロックの７色のうち、自己に割り当てられた色を特定し、その色のデータに対してハーフトーン処理を実行する（ステップＳ３）。
【００５８】
なお、ハーフトーン処理部２ｉａは、対象となる色に応じて、ディザ法または誤差拡散法を選択し、選択した方式で二値化処理を実行する。その際、誤差拡散法による二値化処理を実行する場合には、ハーフトーン処理部２ｉａは、その色に対する誤差データ６３を取得して二値化を行うとともに、二値化により発生した誤差分で誤差データ６３を更新する。
【００５９】
ハーフトーン処理部２ｉａは、このようなハーフトーン処理後の二値化データ６４を、ＲＡＭ３１のハーフトーン処理済み画像データ格納領域３１ｅに格納する。ハーフトーン処理部２１ａ〜２４ａは、１ブロックごとの当該処理を繰り返し実行して、１ライン分のデータに対するハーフトーン処理を実行する。
【００６０】
このようなステップＳ１〜Ｓ３の処理により１ラインの画像データに対する画像処理が終了する。
【００６１】
そして、この１ラインが画像データの最後のラインではない場合には、色変換ＣＰＵ１１のスケジュール設定部１１ｂがステップＳ１〜Ｓ３の処理におけるＨＴＣＰＵ２１〜２４の空き時間に応じて各ブロックについて各ＨＴＣＰＵ２ｉの担当する色の種類および数を必要に応じて変更しスケジュールテーブルを更新する（ステップＳ５）。スケジュールテーブルの更新後、次の１ラインに対して、ステップＳ１〜Ｓ３の処理が実行される。
【００６２】
このように、１ラインの画像データに対する画像処理が終了するごとに、ＨＴＣＰＵ２１〜２４に対する負荷分散の調整が行われ、画像データ全体に対してステップＳ１〜Ｓ３の処理が完了する。この画像処理装置が印刷装置に適用される場合には、図示せぬＣＰＵなどの処理部により、ＲＡＭ３１のハーフトーン処理済み画像データ格納領域３１ｅに格納された二値化データが読み出され、プリンタヘッド用のデータに変換される。そして、その変換後のデータがプリンタヘッドに送信され、印刷が実行される（ステップＳ６）。
【００６３】
次に、ステップＳ２の１ライン色変換処理、ステップＳ３の１ラインハーフトーン処理、およびステップＳ５のスケジュール更新処理の詳細について順番に説明する。
【００６４】
まず、ステップＳ２の１ライン色変換処理の詳細について説明する。図９は、図７における１ライン色変換処理の詳細について説明するフローチャートである。
【００６５】
色変換処理部１１ａは、画像データ内の一連のブロックのブロック番号をカウントするためのカウンタｂｌｏｃｋ＿ｃｎｔの値を０とする（ステップＳ１１）。
【００６６】
次に、色変換処理部１１ａは、処理すべきブロックに対する色変換後のデータの格納場所として、色変換済み画像データ格納領域２５ａにおける４つのバッファ４１ａ〜４１ｄのうちの１つを特定する（ステップＳ１２）。その際、ブロック番号カウンタｂｌｏｃｋ＿ｃｎｔに対する４の剰余が計算され、その値がそのバッファのバッファ番号ｂｕｆ＿ｉｎｄｅｘとされる。なお、バッファ４１ａのバッファ番号ｂｕｆ＿ｉｎｄｅｘは０であり、バッファ４１ｂのバッファ番号ｂｕｆ＿ｉｎｄｅｘは１であり、バッファ４１ｃのバッファ番号ｂｕｆ＿ｉｎｄｅｘは２であり、バッファ４１ｄのバッファ番号ｂｕｆ＿ｉｎｄｅｘは３である。つまり、ブロック番号ｉをバッファ４１ａ〜４１ｄの数（＝４）で除算した剰余ＭＯＤが０であるブロックはバッファ４１ａに格納され、その剰余ＭＯＤが１であるブロックはバッファ４１ｂに格納され、その剰余ＭＯＤが２であるブロックはバッファ４１ｃに格納され、その剰余ＭＯＤが３であるブロックはバッファ４１ｄに格納される。
【００６７】
そして、色変換処理部１１ａは、ステータスデータ５１を参照し、そのバッファ番号のバッファの、少なくとも１つのＨＴＣＰＵ２ｉについてのデータ格納状況が「データあり」か否かを判定しすべてのＨＴＣＰＵ２１〜２４についてのデータ格納状況が「データなし」となるまで待機する（ステップＳ１３）。
【００６８】
色変換処理部１１ａは、そのバッファ番号のバッファにおけるすべてのＨＴＣＰＵ２１〜２４についてのデータ格納状況が「データなし」となると、今回の処理すべきブロックの画像データに対して色変換処理を実行する（ステップＳ１４）。
【００６９】
そして、色変換処理部１１ａは、色変換後の画像データを、上述のバッファ番号のバッファへ格納し、ステータスデータ５１におけるそのバッファ番号のバッファについて、すべてのＨＴＣＰＵ２１〜２４に対応するデータ格納状況を「データあり」に変更する（ステップＳ１５）。さらに、色変換処理部１１ａは、ブロック番号カウンタｂｌｏｃｋ＿ｃｎｔの値を１だけ増加させる（ステップＳ１６）。
【００７０】
４つのバッファ４１ａ〜４１ｄはリングバッファを構成しており、色変換処理部１１ａは、４つのバッファ４１ａ〜４１ｄに対して順番に、１ブロック分の色変換後の画像データを出力していく。バッファ４１ｄに出力されたブロックの次のブロックは、バッファ４１ａに出力される。また、色変換後の一連のブロックは先頭から順番にハーフトーン処理されていき、ブロック内の全色のデータのハーフトーン処理が終了すると、バッファ４１ａ〜４１ｄから順番に削除されるため、バッファ４１ａ〜４１ｄは、ブロックを格納した順番で空きになる。
【００７１】
色変換処理部１１ａは、１ラインの画像データに対する色変換処理が完了するまで、ステップＳ１２〜Ｓ１６の処理を繰り返し実行する（ステップＳ１７）。
【００７２】
このようにして、色変換ＣＰＵ１１の色変換処理部１１ａは、ブロックごとに色変換処理を施し、処理後の各ブロックの画像データを、順番に、バッファ４１ａ〜４１ｄのいずれかに格納する。
【００７３】
次に、ハーフトーン処理（図７のステップＳ３）の詳細について説明する。
【００７４】
図１０は、図７における１ラインハーフトーン処理の詳細について説明するフローチャートである。図１０に示す処理は、各ＨＴＣＰＵ２ｉ（ｉ＝１，・・・，４）のハーフトーン処理部２ｉａがそれぞれ実行するものである。したがって、後述の空き時間カウンタおよびブロック番号カウンタは、ハーフトーン処理部２ｉａごとに設けられており、互いに独立したものである。
【００７５】
また、各ハーフトーン処理部２ｉａは、ＨＴＣＰＵ２ｉの空き時間を計測するための空き時間カウンタｗａｉｔ＿ｃｎｔの値を０にセットする（ステップＳ２１）。
【００７６】
また、各ハーフトーン処理部２ｉａは、画像データ内の一連のブロックのブロック番号をカウントするためのカウンタｂｌｏｃｋ＿ｃｎｔの値を０にセットする（ステップＳ２２）。
【００７７】
次に、各ハーフトーン処理部２ｉａは、処理すべきブロックに対する色変換後のデータの格納場所として、色変換済み画像データ格納領域２５ａにおける４つのバッファ４１ａ〜４１ｄのうちの１つを特定する（ステップＳ２３）。その際、ブロック番号カウンタｂｌｏｃｋ＿ｃｎｔに対する４の剰余が計算され、その値がそのバッファのバッファ番号ｂｕｆ＿ｉｎｄｅｘとされる。なお、バッファ４１ａ〜４１ｄとバッファ番号ｂｕｆ＿ｉｎｄｅｘの値との対応関係は、上述したとおりである。
【００７８】
そして、各ハーフトーン処理部２ｉａは、ステータスデータ５１を参照し、そのバッファ番号のバッファに１ブロック分の画像データが格納されているか否かを所定の時間間隔Ｗ１で繰り返し判定し、１回の判定ごとに空き時間カウンタｗａｉｔ＿ｃｎｔの値をＷ１だけ増加させていき、そのバッファ番号のバッファに１ブロック分の画像データが格納されるまで待機する（ステップＳ２４，Ｓ２５）。これにより、色変換後のデータの到着までの待ち時間が、空き時間に算入される。なお、このＷ１は、ポーリングのループの１週するのに要する時間である。
【００７９】
その後、そのバッファ番号のバッファに１ブロック分の画像データが格納されると、ハーフトーン処理部２ｉａは、そのバッファ番号のバッファに１ブロック分の画像データが格納されていると判定し、スケジュールデータ５１を参照し、今回のブロック番号（つまりブロック番号カウンタの値）からそのブロックにおいて処理すべき色を特定し、その色のデータを、内部メモリ２５から内部バス２６を介して読み出し、その色のデータに対してハーフトーン処理を実行する（ステップＳ２６）。
【００８０】
各ハーフトーン処理部２ｉａは、現在のブロック（ブロック番号がブロック番号カウンタの値と同一であるブロック）における自己の担当する色のハーフトーン処理が完了すると、ステータスデータ５１のうち、現在のブロックの自己のＨＴＣＰＵ２ｉに対応するデータ格納状況を「データなし」とする（ステップＳ２７）。
【００８１】
なお、ハーフトーン処理部２ｉａが、バッファ４１ａ〜４１ｄにおける画像データのうち、処理した後に処理済の部分ごとに消去するようにしてもよい。
【００８２】
あるいは、上述のように色変換処理部１１ａが、そのバッファ番号のバッファにおけるすべてのＨＴＣＰＵ２１〜２４についてのデータ格納状況が「データなし」と判定した際に、消去するようにしてもよいし、特に消去せずに、色変換処理部１１ａが、次のデータを上書きするようにしてもよい。
【００８３】
そして、そのハーフトーン処理部２ｉａは、ブロック番号カウンタｂｌｏｃｋ＿ｃｎｔの値を１だけ増加させる（ステップＳ２８）。
【００８４】
そして、各ハーフトーン処理部２ｉａは、１ラインの画像データに対するハーフトーン処理が完了するまで、１ブロックずつ、ステップＳ２３〜Ｓ２８の処理を繰り返し実行する（ステップＳ２９）。
【００８５】
各ハーフトーン処理部２ｉａは、自己の担当分について１ラインの画像データに対するハーフトーン処理が完了すると、すべてのハーフトーン処理部２１ａ〜２４ａが１ラインの画像データに対するハーフトーン処理が完了したか否かを所定の時間間隔Ｗ２で繰り返し判定し、１回の判定ごとに空き時間カウンタｗａｉｔ＿ｃｎｔの値をＷ２だけ増加させていき、すべてのハーフトーン処理部２１ａ〜２４ａが１ラインの画像データに対するハーフトーン処理が完了するまで待機する（ステップＳ３０，Ｓ３１）。これにより、各ハーフトーン処理部２ｉａについて、１ラインにおいて、自己の担当分の処理が完了してから、１ラインの全色についてのハーフトーン処理が完了までの待ち時間が、空き時間に算入される。なお、このＷ２は、ポーリングのループの１週するのに要する時間である。
【００８６】
例えば、最後のブロックが格納されたバッファについての全ハーフトーン処理部２１ａ〜２４ａに対応するステータスデータ５１の個別フラグの値が「データなし」となっているか否かが判定され、最後のブロックが格納されたバッファについての全ハーフトーン処理部２１ａ〜２４ａに対応するステータスデータの個別フラグの値が「データなし」となっている場合には、各ハーフトーン処理部２ｉａは、すべてのハーフトーン処理部２１ａ〜２４ａが１ラインの画像データに対するハーフトーン処理が完了したと判定し、そうでない場合には、少なくとも１つのハーフトーン処理部２１ａ〜２４ａが１ラインの画像データに対するハーフトーン処理を完了していないと判定する。
【００８７】
このようにして、各ＨＴＣＰＵ２ｉのハーフトーン処理部２ｉａは、色変換処理後のブロックに対して順番にハーフトーン処理を施す。各ハーフトーン処理部２ｉａは、各ブロックにおいて自己の担当する色の画像データをバッファ４１ａ〜４１ｄのいずれかから読み出してハーフトーン処理する。また、各ハーフトーン処理部２ｉａは、その際に発生した空き時間を計測する。
【００８８】
ここで、図１０のステップＳ２６における１ブロックハーフトーン処理の詳細について説明する。図１１は、図１０における１ブロックハーフトーン処理の詳細について説明するフローチャートである。
【００８９】
まず、各ハーフトーン処理部２ｉａは、現在のブロックに関して割り当てられた色をすべて処理したか否かを判定する（ステップＳ４１）。ハーフトーン処理部２ｉａは、現在のブロックに関して割り当てられた色をすべて処理したと判定した場合には、このブロックに関するハーフトーン処理を終了する。
【００９０】
一方、現在のブロックに関して割り当てられたいずれかの色を処理していないと判定した場合には、ハーフトーン処理部２ｉａは、まず、現在のブロックに関して割り当てられた色から最初の１色を選択し（ステップＳ４２）、その色の画像データの二値化処理が完了しているか否かを判定する（ステップＳ４３）。
【００９１】
ハーフトーン処理部２ｉａは、その色の画像データの二値化処理が完了していると判定した場合には、空き時間カウンタｗａｉｔ＿ｃｎｔの値を所定値Ｗ３だけ増加させ（ステップＳ４４）、現在のブロックに関して割り当てられた色から次の１色を選択する（ステップＳ４５）。そして、ハーフトーン処理部２ｉａは、その色の画像データの二値化処理が完了しているか否かを判定する（ステップＳ４３）。なお、このＷ３は、ポーリングのループの１週するのに要する時間である。
【００９２】
ハーフトーン処理部２ｉａは、このステップＳ４３〜Ｓ４５の処理を、未処理の色が現れるまで繰り返す。
【００９３】
そして、未処理の色が現れると、ハーフトーン処理部２ｉａは、その色が誤差拡散法により二値化処理される色である場合には、その色について、現在のブロックの１つ前のブロックの処理が完了しているか否かを判定する（ステップＳ４６）。例えば、ハーフトーン処理部２ｉａは、スケジュールデータを参照してその色について現在のブロックの１つ前のブロックを割り当てられたハーフトーン処理部２ｊａ（ｊ＝１，・・・，４）を特定し、そのハーフトーン処理部２ｊａの個別フラグを参照して、その色について現在のブロックの１つ前のブロックの処理が完了しているか否かを判定する。あるいは、ハーフトーン処理済み画像データ格納領域３１ｅ内のハーフトーン処理された画像データを参照してその色について現在のブロックの１つ前のブロックの処理が完了しているか否かを判定してもよい。
【００９４】
ハーフトーン処理部２ｉａは、未処理の色が誤差拡散法により二値化処理される色であって、その色について現在のブロックの１つ前のブロックの処理が完了していないと判定した場合、空き時間カウンタｗａｉｔ＿ｃｎｔの値を所定値Ｗ４だけ増加させ（ステップＳ４７）、現在のブロックに関して割り当てられた色から次の１色を選択する（ステップＳ４５）。なお、このＷ４は、ポーリングのループの１週するのに要する時間である。
【００９５】
この場合、次の１色について上述のステップＳ４３以降の処理が同様に施される。つまり、未処理の色が誤差拡散法により二値化処理される色であって、その色について現在のブロックの１つ前のブロックの処理が完了していない場合には、その色の二値化は、一旦、スキップされ、後で再度、その色について現在のブロックの１つ前のブロックの処理が完了しているか否かが判定される。
【００９６】
一方、ハーフトーン処理部２ｉａは、未処理の色が誤差拡散法により二値化処理される色であって、その色について現在のブロックの１つ前のブロックの処理が完了している場合、およびその未処理の色がディザ法により二値化処理される色である場合には、その色について現在のブロックの画像データの二値化を実行する（ステップＳ４８）。
【００９７】
そして、その未処理の色についての現在のブロックの画像データの二値化が完了すると、ステップＳ４１に戻り、ハーフトーン処理部２ｉａは、現在のブロックに関して割り当てられた色をすべて処理したか否かを判定する（ステップＳ４１）。ここで、ハーフトーン処理部２ｉａは、現在のブロックに関して割り当てられた色をすべて処理したと判定した場合には、現在のブロックについて自己に割り当てられた色の二値化処理を終了する。
【００９８】
このようにして、ステップＳ４１〜ステップＳ４８の処理では、各ハーフトーン処理部２ｉａは、現在のブロックについて割り当てられた色が処理済みか未処理かを所定の順番で判定していき、未処理の色があるとその色の画像データを二値化し、再度、現在のブロックについて割り当てられた色が処理済みか未処理かを最初から判定していき、未処理の色がなくなるまで、画像データの二値化を行う。
【００９９】
さらに、ここで、図１１のステップＳ４８における二値化処理のうち、誤差拡散法による二値化処理について説明する。図１２は、図１１における二値化処理のうち、誤差拡散法による二値化処理について説明するフローチャートである。図１３は、図１２における二値化処理の際に使用される誤差拡散パターンの一例を示す図である。
【０１００】
誤差拡散法による二値化処理では、ハーフトーン処理部２ｉａは、まず、画素番号カウンタＸの値を０にセットする（ステップＳ５１）。
【０１０１】
次に、ハーフトーン処理部２ｉａは、処理対象のブロックおよび色について画像データのうち、画素番号カウンタＸの示す番号の画素の画像データＤを取得し、その画素の誤差データＥを取得する（ステップＳ５２，Ｓ５３）。その際、ハーフトーン処理部２ｉａは、その画素の誤差データＥをＲＡＭ３１の誤差バッファ３１ｄから取得する。
【０１０２】
そして、ハーフトーン処理部２ｉａは、画素番号カウンタＸの示す番号の画素の画像データＤと誤差データＥの和を計算し、変数ＤＸに代入する（ステップＳ５３）。なお、画素データＤは、画素値であり、誤差データＥは、周辺画素から拡散されてきた誤差分の総和である。
【０１０３】
ハーフトーン処理部２ｉａは、変数ＤＸの値と所定の閾値ＴＨとを比較し、変数ＤＸの値が所定の閾値ＴＨより大きい場合には、画素番号カウンタＸの示す番号の画素の二値化後の画素値Ｒを１とし、そうでない場合には、二値化後の画素値Ｒを０とする（ステップＳ５６，Ｓ５７）。
【０１０４】
また、ハーフトーン処理部２ｉａは、変数ＤＸの値が所定の閾値ＴＨより大きい場合には、変数ＤＸの値を閾値ＴＨだけ小さくする（ステップＳ５８）。
【０１０５】
これにより、ステップＳ５６またはＳ５８の後では、変数ＤＸの値は、周辺画素に拡散すべき誤差となる。
【０１０６】
そして、ハーフトーン処理部２ｉａは、画素番号カウンタＸの示す番号の画素の二値化後の画素値Ｒを出力する（ステップＳ５９）。なお、この画素値Ｒは、ＲＡＭ３１のハーフトーン処理済み画像データ格納領域３１ｅに格納される。ただし、ＨＴＣＰＵ２ｉがデータキャッシュなどを有している場合には、この画素値Ｒは、一旦、キャッシュに格納され、その後、適当なタイミングで、ＲＡＭ３１に格納される。
【０１０７】
また、ハーフトーン処理部２ｉａは、拡散すべき誤差を示す変数ＤＸの値に基づいて、周辺画素へ拡散させる誤差の値を計算し、周辺の該当する画素の誤差データへその画素に対する誤差分を追加し誤差データを更新する（ステップＳ６０）。その際、ハーフトーン処理部２ｉａは、ＲＡＭ３１の誤差バッファ３１ｄに格納されている誤差データを更新する。
【０１０８】
また、その際、例えば図１３に示す誤差拡散パターンで、ある画素Ｐ（Ｘ）で生成された誤差分が拡散される。図１３に示す誤差拡散パターンでは、ある画素Ｐ（Ｘ）で生成された誤差分の１６分の７が、その次の画素Ｐ（Ｘ＋１）の誤差データに追加され、ある画素Ｐ（Ｘ）で生成された誤差分の１６分の５が、その画素Ｐ（Ｘ）の含まれるラインの次のラインにおける同一位置の画素Ｐ（Ｘ＋Ｗ）の誤差データに追加され、さらに、誤差分の１６分の３および１６分の１がその前後の画素Ｐ（Ｘ−１＋Ｗ），Ｐ（Ｘ＋１＋Ｗ）の誤差データにそれぞれ追加される。ここで、Ｗは、ブロック内の１ラインの画素数である。つまり、画像上では、図１３に示すように、ある画素Ｐ（Ｘ）で生成された誤差分の１６分の７、１６分の５、１６分の３、および１６分の１が、その画素の右、下、右下、および左下の画素の誤差データにそれぞれ追加される。
【０１０９】
そして、ハーフトーン処理部２ｉａは、処理対象のブロックおよび色の全画像データを処理したか否かを判定する（ステップＳ６１）。処理対象のブロックおよび色の全画像データを処理した場合には、処理対象のブロックおよび色に対する、誤差拡散法による二値化処理が終了する。
【０１１０】
一方、未処理の画素が存在する場合には、ハーフトーン処理部２ｉａは、画素番号カウンタＸの値を１だけ増加し（ステップＳ６２）、ステップＳ５２〜Ｓ６０の処理をその画素番号カウンタＸの指す画素Ｐ（Ｘ）に対して実行する。そして、処理対象のブロックおよび色の全画像データを処理するまで、ステップＳ５２〜Ｓ６２の処理は、繰り返し、各画素Ｐ（Ｘ）に対して順番に実行される。
【０１１１】
このようにして、あるブロックの、ある色に対する誤差拡散法による二値化処理が実行される。
【０１１２】
以上のようにして各ブロックに対して色変換処理およびハーフトーン処理が実行される。
【０１１３】
次に、ＨＴＣＰＵ２１〜２４に割り当てられる色の分散スケジュールを動的に更新するスケジュールテーブル更新処理について説明する。
【０１１４】
スケジュールテーブル更新処理は、図７に示すように、１ライン分の画像処理が終了する度に実行される。また、スケジュールテーブル更新処理は、スケジュールテーブルに登録されている各ブロックに対してそれぞれ行われる。図４に示すスケジュールテーブルの場合には、ブロック番号ｉに対する４の剰余ＭＯＤが０〜３のそれぞれであるブロックごとにまとめて、スケジュールテーブル更新処理が実行される。この実施の形態では、スケジュールテーブル更新処理は、色変換ＣＰＵ１１のスケジュール設定部１１ｂにより実行される。
【０１１５】
図１４は、本発明の実施の形態におけるスケジュールテーブル更新処理を説明するフローチャートである。
【０１１６】
まず、スケジュール設定部１１ｂは、ＨＴＣＰＵ２１〜２４のハーフトーン処理の際に発生した空き時間ｗｔ［０］〜ｗｔ［３］を各ＨＴＣＰＵ（２１＋ｉ）（ｉ＝０，・・・，３ ）の空き時間カウンタｗａｉｔ＿ｃｎｔの値から特定し、その平均ａｖｅを計算する（ステップＳ７１）。なお、その際の空き時間ｗｔ［０］〜ｗｔ［３］は、４ブロック分の空き時間（空き時間カウンタの値）である。ただし、空き時間ｗｔ［０］〜ｗｔ［３］は、４×ｎブロック分の空き時間、または１ライン分の空き時間としてもよい（ｎは２以上の整数）。
【０１１７】
次に、スケジュール設定部１１ｂは、平均ａｖｅと各ＨＴＣＰＵ（２１＋ｉ）の空き時間ｗｔ［ｉ］との差ｄｆ［ｉ］を計算する（ステップＳ７２）。
【０１１８】
そして、スケジュール設定部１１ｂは、４つのＨＴＣＰＵ２１〜２４の空き時間の不均衡に基づいて、減色処理を実行する（ステップＳ７３）。減色処理では、空き時間ｗｔ［ｉ］が平均ａｖｅ以下であるＨＴＣＰＵ（２１＋ｉ）に割り当てられた色が減らされる。減色処理で減らされた色は、ＲＡＭ３１に格納される減色リストに登録される。
【０１１９】
スケジュール設定部１１ｂは、減色リストに登録された色をＨＴＣＰＵ２１〜２４のいずれかに割り当てる加色処理を実行する（ステップＳ７４）。加色処理では、減色リストに登録されている色が、空き時間の最も長いＨＴＣＰＵ（２１＋ｊ）（ｊ＝０，・・・，３）に割り当てられる。
【０１２０】
このように、減色処理および加色処理を経て、各ブロックについて、各ＨＴＣＰＵ（２１＋ｉ）に割り当てられる色が設定され、スケジュールテーブルが更新される。
【０１２１】
ここで、減色処理および加色処理の詳細について説明する。図１５は、図１４におけるステップＳ７３の減色処理の詳細を説明するフローチャートであり、図１６は、図１４におけるステップＳ７４の加色処理の詳細を説明するフローチャートである。
【０１２２】
図１５に示す減色処理では、最初に、スケジュール設定部１１ｂは、ＣＰＵ番号カウンタｉを０にセットする（ステップＳ８１）。
【０１２３】
次に、スケジュール設定部１１ｂは、空き時間ｗｔ［ｉ］の偏差ｄｆ［ｉ］が０より大きいか、またはＨＴＣＰＵ（２１＋ｉ）が処理する色がないかを判定する（ステップＳ８２）。
【０１２４】
ＨＴＣＰＵ（２１＋ｉ）が処理する色があり、かつ空き時間の偏差ｄｆ［ｉ］が０より大きくない場合、つまり、ＨＴＣＰＵ（２１＋ｉ）が処理する色があり、かつＨＴＣＰＵ（２１＋ｉ）の空き時間が平均ａｖｅ以上である場合、スケジュール設定部１１ｂは、ＨＴＣＰＵ（２１＋ｉ）に割り当てられている色の中で、処理時間が最小である色を選択する（ステップＳ８３）。
【０１２５】
なお、各色の処理時間は、ブロックごとに既知である。各ＨＴＣＰＵに割り当てられている色は、スケジュールテーブルに基づいて特定される。各ブロックの各色の処理時間については、少なくともスケジュールテーブルに登録されているブロックの各色の処理時間が、予め計測され、固定値として予めＲＡＭ３１などに格納される。あるいは、各ブロックの各色の処理時間をハーフトーン処理時に実際に計測しその計測値を使用するようにしてもよい。
【０１２６】
そして、スケジュール設定部１１ｂは、選択した色を減色リストに登録し（ステップＳ８４）、減色処理の対象であるブロックについてスケジュールテーブルにおいてＨＴＣＰＵ（２１＋ｉ）に割り当てられている色から削除し（ステップＳ８５）、選択した色の処理時間ｔだけ偏差ｄｆ［ｉ］および空き時間ｗｔ［ｉ］を増加させる（ステップＳ８６）。
【０１２７】
そして、スケジュール設定部１１ｂは、ステップＳ８２に戻り、空き時間の偏差ｄｆ［ｉ］が０より大きいか否かを判定し、空き時間の偏差ｄｆ［ｉ］が０より大きくない場合には、再度、ステップＳ８３〜Ｓ８６の処理を実行する。
【０１２８】
これにより、空き時間の偏差ｄｆ［ｉ］が０より大きくなるまで、つまり、ＨＴＣＰＵ（２１＋ｉ）の空き時間が平均ａｖｅ以下となるまで、スケジュール設定部１１ｂは、ＨＴＣＰＵ（２１＋ｉ）に割り当てられている色を減らす。
【０１２９】
空き時間の偏差ｄｆ［ｉ］が０より大きくなると、つまり、ＨＴＣＰＵ（２１＋ｉ）の空き時間が平均ａｖｅ以下となると、スケジュール設定部１１ｂは、ＨＴＣＰＵ（２１＋ｉ）についての減色処理を終了する。
【０１３０】
そして、スケジュール設定部１１ｂは、ＨＴＣＰＵ２４まで減色処理を終了したか否かを判定し（ステップＳ８７）、ＨＴＣＰＵ２４まで減色処理を終了していない場合には、ＣＰＵ番号カウンタｉの値を１だけ増加させ、次のＨＴＣＰＵ（２１＋ｉ）について、同様にステップＳ８２〜Ｓ８６を実行する。その後、ＨＴＣＰＵ２１〜２４の減色処理が終了すると、図１５に示す減色処理が終了する。
【０１３１】
これにより、減色処理後のＨＴＣＰＵ２１〜２４の処理時間は、すべて、減色処理前の処理時間の平均ａｖｅ以下となり、減色された色は、減色リストに列挙される。
【０１３２】
そして、図１６に示す加色処理では、スケジュール設定部１１ｂは、減色リストを参照し、減色リストに登録されている色があるか否かを判定する（ステップＳ９１）。
【０１３３】
減色リストに登録されている色がある場合、スケジュール設定部１１ｂは、その色のうち、処理時間が最大である色を選択する（ステップＳ９２）。
【０１３４】
そして、スケジュール設定部１１ｂは、選択した色を減色リストから削除し（ステップＳ９３）、空き時間が最大であるＨＴＣＰＵ（２１＋ｊ）（ｊ＝０，・・・，３）に割り当ててスケジュールテーブルを更新し（ステップＳ９４）、そのＨＴＣＰＵ（２１＋ｊ）の偏差ｄｆ［ｊ］および空き時間ｗｔ［ｊ］を、選択した色の処理時間だけ減少させる（ステップＳ９５）。
【０１３５】
このように減色処理および加色処理を実行することで、４つのＨＴＣＰＵ２１〜２４の空き時間が均衡するように、処理時間が短い色の割り当てが、優先的に、空き時間ｗｔ［ｉ］が平均ａｖｅ以下であるＨＴＣＰＵから空き時間ｗｔ［ｉ］が平均ａｖｅより大きいＨＴＣＰＵへ変更される。
【０１３６】
ここで、減色処理および加色処理の一例を示す。図１７は、各ブロックにおける７色のハーフトーン処理の処理時間の一例を示す図である。この例では、ブロック番号ｉに対する４の剰余が０および１であるブロックにおける７色のハーフトーン処理の処理時間の比が、シアンＣ：マゼンタＭ：レッドＲ：ブルーＢ：ブラックＫ：イエローＹ：クリアＬ＝６：４：４：４：４：１：１であり、ブロック番号ｉに対する４の剰余が２および３であるブロックにおける７色のハーフトーン処理の処理時間の比が、シアンＣ：マゼンタＭ：レッドＲ：ブルーＢ：ブラックＫ：イエローＹ：クリアＬ＝４：６：４：４：４：１：１である。
【０１３７】
図１８は、図１７に示す処理時間の７色を図４に示す初期状態のスケジュールテーブルに基づいてＨＴＣＰＵ２１〜２４に割り当てた場合の４ブロック分の７色のハーフトーン処理の処理状況を示す図である。図１８（Ａ）は、この場合の処理スケジュールを示し、図１８（Ｂ）は、この場合でのＨＴＣＰＵ２１〜２４の空き時間、その平均および偏差を示す。図１８に示す場合では、７色すべてのハーフトーン処理の処理時間は、イエローＹまたはクリアＬの処理時間を１としたときの２６であり、ＨＴＣＰＵ２１の空き時間が０であり、ＨＴＣＰＵ２２，２４の空き時間がそれぞれ２であり、ＨＴＣＰＵ２３の空き時間が４である。
【０１３８】
図１９は、図１８の処理状況での減色処理と加色処理を説明する図である。図１８に示す処理状況でスケジュールテーブル更新処理が実行されると、まず、ブロック番号ｉに対する４の剰余ＭＯＤが０であるブロックについては、減色処理により、ＨＴＣＰＵ２１に割り当てられたブラックＫが減色リストに登録され、加色処理により、ブラックＫがＨＴＣＰＵ２１に割り当てられる。同様に、剰余ＭＯＤが１であるブロックでは、ブルーＢが減色リストに登録された後、ＨＴＣＰＵ２１に割り当てられ、剰余ＭＯＤが２であるブロックでは、クリアＬが減色リストに登録され、ＨＴＣＰＵ２３に割り当てられ、剰余ＭＯＤが３であるブロックでは、イエローＹが減色リストに登録され、ＨＴＣＰＵ２３に割り当てられる。
【０１３９】
図２０は、図１９に示す減色処理と加色処理の実行後の処理状況を示す図である。図２０（Ａ）は、この場合の処理スケジュールを示し、図２０（Ｂ）は、この場合でのＨＴＣＰＵ２１〜２４の空き時間、その平均、および偏差を示す。図２０に示す場合では、７色すべてのハーフトーン処理の処理時間は、イエローＹまたはクリアＬの処理時間を１としたときの２６であり、ＨＴＣＰＵ２１〜２４の空き時間がそれぞれ２である。
【０１４０】
この例では、減色処理と加色処理の実行前後で７色すべてのハーフトーン処理の処理時間は変化していないが、ＨＴＣＰＵ２１〜２４の空き時間が均衡している。空き時間の均衡により、この例では考慮していないが実際の計算では生じ得る、データの読み出しのための時間などのオーバーヘッドなどに起因して、各色の処理の終了タイミングが変動しても、その影響による処理全体の遅延を抑制できる。
【０１４１】
以上のように、上記実施の形態によれば、ＡＳＩＣ１は、第１の画像処理を施す第１のプロセッサとしての色変換ＣＰＵ１１および第２の画像処理を施す第２のプロセッサとしてのＨＴＣＰＵ２１〜２４を有する。また、内部ＲＡＭ２５が、色変換ＣＰＵ１１およびＨＴＣＰＵ２１〜２４と同一のＡＳＩＣ１に設けられる。そして、色変換ＣＰＵ１１は、画像データに対して所定の単位量ごとに、第１の画像処理としての色変換を施し、処理後の画像データを内部ＲＡＭ２５に格納し、ＨＴＣＰＵ２１〜２４は、内部ＲＡＭ２５に格納されている画像データを読み出し、第２の画像処理としてのハーフトーン処理を施す。
【０１４２】
これにより、色変換ＣＰＵ１１およびＨＴＣＰＵ２１〜２４と同一のチップ内に設けられた内部ＲＡＭ２５を画像データのバッファに使用するため、外部メモリであるＲＡＭ３１をバッファとして使用する場合に比べ、色変換ＣＰＵ１１とＨＴＣＰＵ２１〜２４との間でのデータの授受に要する時間を短くして、画像処理全体を高速化することができる。
【０１４３】
また、上記実施の形態によれば、内部ＲＡＭ２５は、所定の単位量の画像データを格納可能なバッファを複数有する。色変換ＣＰＵ１１は、すべてのバッファ内の画像データに対してハーフトーン処理が未完了である場合、１つのバッファ内の画像データに対してハーフトーン処理が完了した後、そのバッファに、色変換後の所定の単位量の画像データを格納する。そして、ＨＴＣＰＵ２１〜２４は、ハーフトーン処理を施していないいずれかのバッファ内の画像データを読み出し、ハーフトーン処理を施す。
【０１４４】
これにより、バッファを複数設けることにより、バッファが画像データで満たされている場合の色変換ＣＰＵ１１によるデータ書き込みの待ち時間、およびバッファが空である場合のＨＴＣＰＵ２１〜２４によるデータ読み出しの待ち時間の発生を抑制することができる。
【０１４５】
また、上記実施の形態によれば、ＡＳＩＣ１は、複数のＨＴＣＰＵ２１〜２４を有し、分散処理を実行する。また、内部ＲＡＭ２５は、複数のＨＴＣＰＵ２１〜２４のそれぞれと、ＩＣチップ内の内部バス２６で相互に接続される。
【０１４６】
これにより、ハーフトーン処理を複数のプロセッサで分散処理する場合でも、各ＨＴＣＰＵ２ｉが内部メモリから画像データを読み出すことができるため、分散処理に起因するオーバーヘッドを軽減することができる。
【０１４７】
なお、上記実施の形態に係る画像処理装置は、印刷装置内の画像処理部に適用可能であり、その場合、その印刷装置は、その画像処理装置により処理された画像データに基づいて印刷を行う。これにより、印刷実行前に必要な画像処理を高速に実行することができ、ユーザやプログラムからの指令を受けてから印刷を完了するまでの時間を短くすることができる。
【０１４８】
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【０１４９】
例えば、上記実施の形態では、画像処理として色変換処理およびハーフトーン処理を実行しているが、その他の２種類の処理が連続する画像処理であれば、本発明を適用可能である。
【０１５０】
また、上記実施の形態では、ＨＴＣＰＵ２１〜２４の数Ｍが４であり、色変換後の画像データの色数Ｎが７であるが、これらの数に限定されるものではなく、Ｎ＞Ｍであればいずれの数でもよい。
【０１５１】
また、上記実施の形態では、色変換済み画像データの１ブロックの画素数は２５６であるが、これに限定されるものではない。
【０１５２】
また、上記実施の形態では、色変換済み画像データ格納領域２５ａには、４つのバッファ４１ａ〜４１ｄが設けられるが、５以上のバッファを設けるようにしてもよい。
【０１５３】
また、上記実施の形態では、スケジュールテーブル変更処理を実行するスケジュール設定部１１ｂが色変換ＣＰＵ１１に設けられるが、図示せぬ別のＣＰＵにスケジュール設定部１１ｂを設けてもよい。あるいは、ＨＴＣＰＵ２１〜２４のいずれか１つにスケジュール設定部１１ｂを設けてもよい。
【０１５４】
また、上記実施の形態では、ハーフトーン処理における各ＨＴＣＰＵ２ｉの空き時間の計測をポーリング周期Ｗ１〜Ｗ４の累積により行っているが、その代わりに、各ＣＰＵのクロック数をカウントして空き時間を計測したり、タイマを設けそのタイマで空き時間を計測するようにしてもよい。その場合には、１つ前のラインにおける同一箇所（例えば４ブロック）で計測された空き時間を使用したり、１つ前のラインで計測された空き時間の平均を使用したり、１つ前から所定の数前までのラインで計測された空き時間の平均を使用したりすればよい。
【０１５５】
また、上記実施の形態において、色変換済み画像データ格納領域２５ａに加えて、スケジュール格納領域３１ａ、ステータスデータ格納領域３１ｃおよび誤差バッファ３１ｄのうちの少なくとも１つを、内部ＲＡＭ２５に設けるようにしてもよい。
【産業上の利用可能性】
【０１５６】
本発明は、例えば、画像データに対して複数の画像処理を順番に施す画像処理装置に適用可能である。そのような画像処理装置としては、例えばプリンタ、コピー機、プロジェクタ、テレビジョン受像機などがある。
【図面の簡単な説明】
【０１５７】
【図１】本発明の実施の形態に係る画像処理装置の構成を示すブロック図である。
【図２】画像データの一例を示す図である。
【図３】本発明の実施の形態における色変換後の画像データを示す図である。
【図４】本発明の実施の形態におけるスケジュールテーブルの一例を示す図である。
【図５】色変換済み画像データ格納領域の一例を示す図である。
【図６】ステータスデータの一例を示す図である。
【図７】本発明の実施の形態における画像処理を説明するフローチャートである。
【図８】本発明の実施の形態での画像データの流れを説明するブロック図である。
【図９】図７の１ライン色変換処理の詳細について説明するフローチャートである。
【図１０】図７の１ラインＨＴ処理の詳細について説明するフローチャートである。
【図１１】図１０の１ブロックＨＴ処理について説明するフローチャートである。
【図１２】誤差拡散法による二値化処理の一例を説明するフローチャートである。
【図１３】誤差拡散パターンの一例を示す図である。
【図１４】スケジュールテーブル更新処理の一例を説明するフローチャートである。
【図１５】図１４における減色処理の詳細を説明するフローチャートである。
【図１６】図１４における加色処理の詳細を説明するフローチャートである。
【図１７】各ブロックの７色のハーフトーン処理の処理時間の一例を示す図である。
【図１８】ハーフトーン処理の処理状況の一例を示す図である。
【図１９】図１８の処理状況での減色処理と加色処理を説明する図である。
【図２０】図１９に示す減色処理と加色処理の実行後の処理状況を示す図である。
【符号の説明】
【０１５８】
１  ＡＳＩＣ（ＩＣチップ）、１１  色変換ＣＰＵ（第１のプロセッサ）、２１〜２４  ＨＴＣＰＵ（第２のプロセッサ）、２５  内部ＲＡＭ（内部メモリ）、２６  内部バス、３１  外部メモリ、３２  バス、４１ａ〜４１ｄ  バッファ。
【図１】
2006163999.tif 000003
【図２】
2006163999.tif 000004
【図３】
2006163999.tif 000005
【図４】
2006163999.tif 000006
【図５】
2006163999.tif 000007
【図６】
2006163999.tif 000008
【図７】
2006163999.tif 000009
【図８】
2006163999.tif 000010
【図９】
2006163999.tif 000011
【図１０】
2006163999.tif 000012
【図１１】
2006163999.tif 000013
【図１２】
2006163999.tif 000014
【図１３】
2006163999.tif 000015
【図１４】
2006163999.tif 000016
【図１５】
2006163999.tif 000017
【図１６】
2006163999.tif 000018
【図１７】
2006163999.tif 000019
【図１８】
2006163999.tif 000020
【図１９】
2006163999.tif 000021
【図２０】
2006163999.tif 000022