(57)【特許請求の範囲】
【請求項１】
画像処理を実行する第１画像処理回路と、前記第１画像処理回路の後段の第２画像処理回路とを含み、各画像処理回路が並行に画像処理可能な画像処理回路群と、
前記各画像処理回路の処理の進行状況を管理するシーケンサと、
メモリに記憶されたプログラムを実行するＣＰＵと、
を有し、
前記ＣＰＵは、画像処理モードに基づいて、前記画像処理回路毎に処理単位として色数及び色毎の画素数を設定し、
所定の画像処理モードでは、前記第１画像処理回路と前記第２画像処理回路とは、前記設定された処理単位が異なり、
前記シーケンサは、前記第１画像処理回路の処理の進行状況に基づいて、前記ＣＰＵによる処理の介在なしに、前記第２画像処理回路に前記設定された処理単位の画像処理を開始させることを特徴とする画像処理装置。
【請求項２】
前記シーケンサは、前記第１画像処理回路において、前記第２画像処理回路の処理単位分の処理が完了した場合、前記第２画像処理回路に画像処理の開始を指示することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記シーケンサは、前記第２画像処理回路の処理が完了した場合、前記第１画像処理回路に処理済みのデータの削除を指示することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記シーケンサは、前記画像処理回路毎の処理済み色数の情報と処理済みの回数の情報を管理することを特徴とする請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
前記ＣＰＵは、画像処理モード毎に各画像処理回路に設定する処理単位を切り替えることを特徴とする請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項６】
前記ＣＰＵは、各画像処理回路から出力される出力結果が使用するメモリの使用量の上限を決定することを特徴とする請求項１〜５のいずれか１項に記載の画像処理装置。
【請求項７】
前記シーケンサは、前記ＣＰＵにより決定された前記メモリの使用量の上限に基づいて、前記各画像処理回路の出力データをメモリに保持すべき状態であるアクティブ状態のキューが一定数を超えないよう管理することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記第１画像処理回路と前記第２画像処理回路とは異なる画像処理を実行することを特徴とする請求項１〜７のいずれか１項に記載の画像処理装置。
【請求項９】
前記画像処理装置は、印刷手段を備える印刷装置であることを特徴とする請求項１〜８のいずれか１項に記載の画像処理装置。
【請求項１０】
第１画像処理回路と、前記第１画像処理回路の後段の第２画像処理回路とを含み各画像処理回路が並行に画像処理可能な画像処理回路群と、シーケンサと、メモリに記憶されたプログラムを実行するＣＰＵと、を有する画像処理装置の制御方法であって、
前記シーケンサにより、前記各画像処理回路の処理の進行状況を管理する管理工程と、
前記ＣＰＵにより、画像処理モードに基づいて、前記画像処理回路毎に処理単位として色数及び色毎の画素数を設定する設定工程と、
を備え、
所定の画像処理モードでは、前記第１画像処理回路と前記第２画像処理回路とは、前記設定された処理単位が異なり、
前記シーケンサからの指示に基づき、前記第１画像処理回路の処理の進行状況に基づいて、前記ＣＰＵによる処理の介在なしに、前記第２画像処理回路に前記設定された処理単位の画像処理が開始されることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを処理する画像処理装置、画像処理装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
記録装置では、高速で高品位な画像形成が求められており、それには画像を形成するインク滴の色やドット径などの記録装置の特性に適した画像処理を高速に実施する必要がある。特許文献１では、複数の画像処理モジュールを用いて、画像処理を行う方法が開示されている。具体的には、画像処理装置は、複数の画像処理モジュールと、バッファメモリと、ＦＩＦＯメモリとを有し、ある画像処理モジュールの処理結果である出力データを所定データ量の単位毎に順次バッファメモリを介して次段の画像処理モジュールに渡す。このとき、バッファメモリ内の出力データの格納位置を示すポインタは、ＦＩＦＯメモリを介して次段の画像処理モジュールに渡される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１５７０４９
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、高品位な画像形成をするために、単色毎や複数色間での画像処理、４×４画素格子単位での画像処理や２５６×２５６画素格子単位での画像処理など種々の画像処理に対応することが求められている。しかしながら、特許文献１のように、データの格納位置をＦＩＦＯメモリにより指定して画像処理モジュール間でデータの受け渡しをする場合、それぞれの画像処理モジュールの処理単位が統一されていなければない。例えば、単色４×４画素格子単位の処理で十分な画像処理モジュールでも、一連の画像処理のうちいずれかで複数色２５６×２５６画素格子単位の処理が必要であれば、複数色２５６×２５６画素格子単位の処理として回路を形成する必要があり、回路規模が大きくなってしまうという問題があった。また、画像処理モジュール間でのデータの受け渡し単位を本来の最適な単位より大きい単位で受け渡すことになり、処理速度が低下してしまうという問題や使用するメモリ量が増加してしまうという問題があった。
【０００５】
そこで、本発明では、画像処理モジュール群が有する各画像処理モジュールの回路規模を大きくすることなく、高速で高品位な画像処理を実現することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の画像処理装置は、画像処理を実行する第１画像処理回路と、前記第１画像処理回路の後段の第２画像処理回路とを含み、各画像処理回路が並行に画像処理可能な画像処理回路群と、前記各画像処理回路の処理の進行状況を管理するシーケンサと、メモリに記憶されたプログラムを実行するＣＰＵと、を有し、前記ＣＰＵは、画像処理モードに基づいて、前記画像処理回路毎に処理単位として色数及び色毎の画素数を設定し、所定の画像処理モードでは、前記第１画像処理回路と前記第２画像処理回路とは、前記設定された処理単位が異なり、前記シーケンサは、前記第１画像処理回路の処理の進行状況に基づいて、前記ＣＰＵによる処理の介在なしに、前記第２画像処理回路に前記設定された処理単位の画像処理を開始させる。
【発明の効果】
【０００７】
本発明によれば、画像処理モジュール群が有する各画像処理モジュールの回路規模を大きくすることなく、高速で高品位な画像処理を実現することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態１に係る画像処理装置の概略図である。
【図２】実施形態１に係る画像処理モードＡでのシーケンサ処理の概念図である。
【図３】実施形態１に係る画像処理モードＢでのシーケンサ処理の概念図である。
【図４】実施形態１に係る画像処理モードＡと画像処理モードＢの中間バッファ量を示す図である。
【図５】実施形態１に係るシーケンサ構成の概念図である。
【図６】実施形態１に係るシーケンサから画像処理モジュールへの処理開始通知時のフロー図である。
【発明を実施するための形態】
【０００９】
（実施形態１）
以下、本発明の実施形態について図面を用いて説明する。なお、この実施の形態で用いる装置の各構成要素の相対配置、装置形状等は、あくまで例示であり、これらのみに限定するものではない。
【００１０】
図１は、本発明の一実施形態に係る画像処理装置の概略図である。なお、図１では、印刷機能を有するプリンタを例に挙げて説明するが、画像処理装置は、これに限定されず、例えば、印刷機能を有していなくてもよいし、印刷機能及び読取機能を有する複合プリンタであってもよい。
【００１１】
図１に示すように、画像処理装置は、入力Ｉ／Ｆ１００と、ＣＰＵ１０１と、ＲＯＭ１０２と、複数の画像処理モジュール（１０３〜１０７）と、メモリ１０８と、シーケンサ１０９と、プリントヘッド制御部１１５と、プリントヘッド１１６とを備える。
【００１２】
入力Ｉ／Ｆ１００は、パーソナルコンピュータ、デジタルカメラ等の外部装置から印刷画像データ等の各種入力データを受信するためのＩＦである。
【００１３】
ＣＰＵ１０１は、中央演算処理部であり、プログラムの実行やハードウェアの起動により画像処理装置全体の動作を制御する。
【００１４】
ＲＯＭ１０２は、ＣＰＵ１０１が実行する各種制御プログラムや画像処理装置の各種動作に必要な固定データを格納する。例えば、画像処理装置の記録（印刷）処理を実行するプログラムを記憶する。
【００１５】
メモリ１０８は、ＣＰＵ１０１等を動作させるために必要であり、ＣＰＵ１０１のワークエリアとして用いられたり、種々の受信データの一時格納領域として用いられたり、各種設定データを記憶させたりする。本実施形態では、後述するように、メモリ１０８は、画像処理モジュールの出力結果を一時的に格納する。なお、図１では、メモリ１０８を一つとしたが、これに限定されるものではない。例えば、ＤＲＡＭとＳＲＡＭのように処理速度の異なる複数のメモリからなるものとしてもよい。本実施形態では、メモリ１０８は、ＤＲＡＭ及びＳＲＡＭを有するものとする。ＤＲＡＭは、ＳＲＡＭより低コストであり、ＳＲＡＭは、ＤＲＡＭよりもデータの読み出し及び書き出しを高速に実行することができる。ここでは、ＤＲＡＭは、画像処理モジュール群へ入力するデータ及び画像処理モジュール群から出力するデータ、すなわち、画像処理モジュールＡ１０３に入力するデータと、画像処理モジュールＥが出力するデータと、を格納するものとする。入力Ｉ／Ｆが受信した入力データ（画像データ）は、画像処理モジュール群へ入力され、画像処理モジュール群から出力するデータは、プリントヘッド制御部１１５へ出力される。また、ＳＲＡＭは、画像処理モジュール群の内部で入出力するデータ（画像処理モジュールＡ１０３から出力するデータから画像処理モジュールＥ１０７へ入力するデータまで）を格納する中間バッファとして用いる。
【００１６】
シーケンサ１０９は、複数のキュー管理部（１１０〜１１４）を有し、各画像処理モジュールに対して処理の開始を通知する。より具体的には、シーケンサ１０９は、各画像処理モジュールの処理状況を複数のキュー管理部により管理し、各画像処理モジュールの処理の実行（開始）を制御する。本実施形態では、シーケンサ１０９は、キュー管理部Ａ１１０、キュー管理部Ｂ１１１、キュー管理部Ｃ１１２、キュー管理部Ｄ１１３，キュー管理部Ｅの５つのキュー管理部を有し、各キュー管理部が各画像処理モジュールに対して処理開始を通知する。なお、シーケンサ１０９が備えるキュー管理部の数はこれに限定されず、５未満であってもよいし、６以上であってもよい。
【００１７】
画像処理モジュールＡ１０３〜画像処理モジュールＥ１０７は、詳細については後述するが、それぞれ異なる画像処理を行う。このように、画像処理装置は、画像処理を実行する画像処理モジュールを複数含む。本実施形態では、画像処理装置が備える複数の画像処理モジュールをまとめて、画像処理モジュール群という。
【００１８】
プリントヘッド１１６は、画像処理モジュール群で生成された印刷データに基づき被記録媒体に印刷を行う。プリントヘッド１１６は、各種印刷動作を実行するプリント部に含まれる。本実施形態では、プリントヘッド１１６は、インクを吐出することにより印刷動作を行う。また。プリントヘッド制御部１１５は、図示しないモータドライバ等を駆動させることにより、プリントヘッド１１６を印刷位置まで移動させたりして、印刷動作を制御する。
【００１９】
上述した画像処理装置は、入力Ｉ／Ｆ１００を介して外部装置から入力データ（画像データ）が入力されて、メモリ１０８に一旦格納される。その後、シーケンサ１０９により起動された画像処理モジュールＡ１０３〜画像処理モジュールＥ１０７は、それぞれメモリ１０８からデータを読出して画像処理を実行し、画像処理後のデータを、再度メモリ１０８に書き込む。ここで、各画像処理モジュールは、画像処理モジュール毎に存在する各キュー管理部から処理開始の通知を受けることで、処理が開始される。そして、画像処理モジュールの最後段である画像処理モジュールＥ１０７がメモリ１０８に出力する画像処理済みのデータは、モータ駆動タイミングに合わせて駆動するプリントヘッド制御部１１５により、吐出データとしてプリントヘッド１１６に転送される。転送された画像処理済みのデータに基づいて、プリントヘッド１１６が記録媒体に対してインク滴が吐出することで、記録媒体上に画像が形成される。
【００２０】
ここで、各画像処理モジュールが実行する画像処理について説明する。まず、メモリ１０８に、初期データとして、６００ｄｐｉ単位の多値（４ｂｉｔ）データが色毎に入力される。これに対し、画像処理モジュールＡ１０３〜画像処理モジュールＥ１０７を含む画像処理モジュール群は、以下の一連の画像処理を行う。６００ｄｐｉ単位の多値データを最大４色単位で、１２００ｄｐｉ単位の２値データへ変換する変換処理と、一定濃度以下のデータへ変換する変換処理を行う。また、データのうち文字画素の周囲を間引く変換処理と、画像の向きを９０度回転させる変換処理と、プリントヘッドの吐出順にデータを並び替える変換処理を行う。なお、画像処理モジュール群が実行する一連の画像処理は、上述したものに限定されるものではなく、他の画像処理の機能を実行させるようにしてもよい。
【００２１】
上述した画像処理モジュールの個々の動作について説明する。
【００２２】
まず、画像処理モジュールＡ１０３は、初期データとしてラスタデータ（６００ｄｐｉ単位の多値データ）を色毎に読み出し、ＤＲＡＭからのデータ読出し効率に適した単位（本実施形態では、１６×１６画素格子単位）にパッキングしてメモリ１０８に出力する。
【００２３】
次に、画像処理モジュールＢ１０４は、画像処理モジュールＢ１０４に入力されたデータをプリントヘッド１１６の吐出解像度へ変換する変換処理を行い、メモリ１０８に出力する。具体的には、画像処理モジュールＢ１０４は、パッキングされた６００ｄｐｉ単位の多値データを吐出解像度１２００ｄｐｉ単位の２値データに変換してメモリ１０８に出力する。このときの変換単位は、画像のテクスチャ現象を抑えられるサイズであることがよく、本実施形態では、６００ｄｐｉ単位の１６×１６画素格子を色毎に処理するものとした。
【００２４】
次に、画像処理モジュールＣ１０５は、プリントヘッド１１６のスキャン間のつなぎ部分におけるムラを抑制するため、予め決めた濃度以上（閾値以上）となっている画素の２値データを間引く処理を行い、メモリ１０８に出力する。本実施形態では、画素毎に全色の２値データの重なり関係を調べ、ムラとして視認される閾値以上の濃度になっている画素の２値データは、その閾値未満となるようにデータを間引き、再度メモリ１０８に出力する。処理単位は、各画素の濃度を把握するのに適した単位とするのがよく、本実施形態では、１２００ｄｐｉ単位の３２×３２画素格子を全色一度に処理するものとした。
【００２５】
次に、画像処理モジュールＤ１０６は、文字の視認性を上げるため、各画像データに対して文字と認識した画素（文字画素ともいう）の周囲画素のデータを間引いた後、プリントヘッド１１６の配列方向に並び替えて再度メモリ１０８に出力する。ここでは、プリントヘッド１１６の配列方向に並べ替える処理として、データの９０度回転処理を行う。文字画素の周囲は、１２００ｄｐｉ単位で２画素分を間引くものとする場合、最小処理単位は５×５画素格子となるが、ハードウェア処理しやすいように２のべき乗にすると、８×８画素格子となる。しかしながら、この文字画素の周囲の間引きには処理時間を要するため、本実施形態では、横方向の処理は一度に３２画素分を処理するものとして、画像処理モジュールＤ１０６では３２×８画素格子を色毎に処理するのものとした。
【００２６】
最後に、画像処理モジュールＥ１０７は、プリントヘッド１１６の吐出順にデータを並び替える変換処理を実行して、メモリ１０８に出力する。この処理単位は、ＤＲＡＭへのデータ書き出し効率に適した単位とするのがよく、本実施形態では、１２００ｄｐｉ単位で３２×３２画素格子を色毎に処理するものとした。
【００２７】
上述したように、本実施形態では、画像処理モジュール毎に、処理単位とする画素数（画素の格子単位）を異なるものとする。
【００２８】
図２を用いて、本実施形態に係るシーケンサ１０９の処理について説明する。図２は、シーケンサ１０９の処理の概念図であり、ある時間における画像処理モジュール群に対するキュー管理部の処理遷移を示している。図２において、１つのキューは、各キュー管理部が管理対象とする画像処理モジュールの１回分の処理状態を示している。その処理状態は、以下の５つに分類する。処理開始の条件が整っている状態を「処理待ち」、実際に処理をしている状態を「処理中」、処理完了してメモリ１０８に保持される出力結果を次段の画像処理モジュールで使用されることを待っている状態を「処理済み」、とする。また、次段の画像処理モジュールでの使用が完了し出力結果が不要である状態を「削除済み」、メモリ１０８に保持できる出力結果の許容量に達していて次段の画像処理モジュールでの使用完了を待っている状態を「削除待ち」とする。
【００２９】
そして、この分類の中で「処理待ち」「処理中」「削除待ち」となっている状態では、画像処理モジュールの出力結果をメモリ１０８に保持すべき状態となっている。そのためこれらの３つの状態をアクティブ状態と呼ぶ。保持できるメモリ量は有限であるため、各キュー管理部は、このアクティブ状態の総数が一定以上にならないよう管理する。本実施形態では、画像処理装置は、複数の画像処理モードを実行することができるものとする。なお、画像処理モジュール群が実行する画像処理モードは、画像処理モジュール群に実行させる画像処理内容に応じてＣＰＵ１０１が設定する。ＣＰＵ１０１は、各画像処理モジュールに処理単位とする画素数及び処理内容を指定する。
【００３０】
図２を用いて、画像処理モードＡについて説明する。図２に示す画像処理モードは、色数としてカラー０〜３までの４色を処理するものとし、カラー０はＣｙａｎ、カラー１はＭａｇｅｎｔａ、カラー２はＹｅｌｌｏｗ、カラー３はＢｌａｃｋとする。また、この画像処理モードでは、一連の画像処理機能の中で文字画素の周囲を間引くデータ変換は実施しない。画像処理モジュールＡ１０３で１色分の６００ｄｐｉ多値データを１６×１６画素格子にパッキングする処理を１回終えると、画像処理モジュールＢ１０４がその１色分のパッキングされたデータを１２００ｄｐｉ単位の２値データで３２×３２画素格子に変換する処理を１回実施する。この画像処理モジュールＡ１０３と画像処理モジュールＢ１０４の処理を各色１回ずつ、すなわち、４色の処理を終えると、画像処理モジュールＣ１０５が３２×３２画素格子（１２００ｄｐｉ）のデータを４色一度に一定濃度以下のデータへ変換する。画像処理モジュールＣ１０５がその１回の処理を終えると、画像処理モジュールＤ１０６は、３２×３２画素格子（１２００ｄｐｉ）を横方向に４分割し、３２×８画素格子（１２００ｄｐｉ）で各色毎に回転処理、すなわち、４回の回転処理を実行する。そして画像処理モジュールＤ１０６が各色４回の処理を終えると、画像処理モジュールＥ１０７は３２×３２画素格子（１２００ｄｐｉ）単位でヘッド吐出順への変換処理を各色毎に実施するものとする。
【００３１】
また、各画像処理モジュールからの出力結果の総量がメモリ許容量を超えることがないように、ＣＰＵ１０１は、各画像処理モジュールから出力される出力結果が使用するメモリ１０８の使用量の上限を各画像処理モジュールのそれぞれに決定する。ここでは、ＣＰＵ１０１はキュー管理部毎にアクティブ状態のキュー総数の上限値を設定する。本実施形態では、キュー管理部Ａ１１０で３個、キュー管理部Ｂ１１１で９個、キュー管理部Ｃ１１２で８個、キュー管理部Ｄで１６個とする。キュー管理部Ｅは、最後段の処理であるため、「処理済み」は即座に「削除済み」となることから、アクティブ状態のキューは、「処理待ち」と「削除待ち」は存在せず、「処理中」のみとなる。
【００３２】
図２において、Ｔ０経過時、Ｔ１経過時、Ｔ２経過時、Ｔ３経過時、Ｔ４経過時のキューの状態について説明する。
【００３３】
Ｔ０経過時には、画像処理モジュールＡ１０３は、カラー０を１回終え（キュー管理部Ａで「処理済み」１つ）、カラー１の処理を実行している（キュー管理部Ａで「処理中」１つ）。画像処理モジュールＢ１０４は、画像処理モジュールＡ１０３においてカラー０の処理が１回終わったため、カラー０の処理を実行している（キュー管理部Ｂで「処理中」１つ）。
【００３４】
Ｔ１経過時には、画像処理モジュールＢ１０４は、カラー０〜３の処理を１回ずつ終えて（キュー管理部Ｂで「処理済み」４つ）、カラー０の２回目の処理を開始している（キュー管理部Ｂで「処理中」１つ）。画像処理モジュールＢ１０４において、画像処理モジュールＡ１０３のカラー０〜３の出力結果の使用が完了しているため、画像処理モジュールＡ１０３からメモリ１０８への出力結果のうち各色１回分の出力結果は不要となる。したがって、キュー管理部Ａ１１０のキューは、その該当箇所を削除している（キュー管理部Ａで「削除済み」４つ）。なお、画像処理モジュールＡ１０３は、カラー０の２回目の処理を終了し、カラー１の２回目の処理を実行している。画像処理モジュールＣ１０５は、画像処理モジュールＢ１０４でカラー０〜３の処理が１回ずつ終わったため、全色同時に１度の処理を実行している（キュー管理部Ｃで「処理中」１つ）。
【００３５】
Ｔ２経過時は、Ｔ１で開始した画像処理モジュールＣ１０５による画像処理が継続している間にも、画像処理モジュールＡ１０３と画像処理モジュールＢ１０４の処理が進んでいる状態である。画像処理モジュールＡ１０３は、カラー０の３回目の処理を実行中、画像処理モジュールＢ１０４は、カラー３の２回目の処理を実行中である。
【００３６】
Ｔ３経過時には、Ｔ１で開始した画像処理モジュールＣ１０５による画像処理が終了したので、画像処理モジュールＤ１０６が処理を開始した状態である。画像処理モジュールＢ１０４が２回目のカラー０〜カラー３の処理を終了しており、画像処理モジュールＣ１０５の２回目の処理条件を満たしていることから、画像処理モジュールＣ１０５は、２回目の処理を実行中である。また、画像処理モジュールＢ１０４からの各色１回分の出力結果が一度に不要となったため、キュー管理部Ｂ１１１の各色一つずつのキューを削除している（キュー管理部Ｂで「削除済み」４つ）。
【００３７】
Ｔ４経過時には、Ｔ３で開始した画像処理モジュールＤ１０６は、各色４回ずつ処理を実施するが、カラー０の４回の処理を終え、カラー１の４回目を処理中の状態である。画像処理モジュールＤ１０６が画像処理モジュールＥ１０７のカラー０に対する処理条件を満たしていることから、画像処理モジュールＥ１０７のカラー０での処理を開始している。
【００３８】
図３を用いて、画像処理モードＡとは異なるモードである画像処理モードＢについて説明する。図３は、画像処理モジュールＡ１０３〜画像処理モジュールＥ１０７までの各経過時間における処理状態を示す。
【００３９】
画像処理モードＢでは、色数としてはカラー０〜２を入力し、カラー１〜３までの３色を出力する。カラー０は特定の色情報ではなく、文字か否かを示す文字情報である。カラー１〜３は色情報であり、カラー１はＧｒａｙ、カラー２とカラー３は、カラー２として入力されたＢｌａｃｋを２値化処理によりカラー２とカラー３の２色に分割する。同色を分割することで（ここではＢｌａｃｋをカラー２とカラー３に分割することで）、例えば、プリントヘッド１１６からインク滴を吐出する際に時間間隔を空けることができる。また、画像処理モードＢでは、画像処理モードＡとは異なり、一連の画像処理の中で一定濃度以下への変換処理は実行しない。しかしながら、文字画素の周囲を間引くデータ変換を実行する。文字画素の周囲を間引く方法としては、例えば、カラー０の文字情報を使用して文字となる画素を特定し、カラー１〜３でその文字画素の周囲を間引く方法が挙げられる。文字画素の周囲を間引くためには、糊代となる部分を１画素（６００ｄｐｉ）分必要とする。したがって、画像処理モジュールＡ１０３が１６×１６画素格子（６００ｄｐｉ）にデータをパッキングした後、画像処理モジュールＢ１０４は、パッキングされたデータの左右を含め、１８×１６画素格子（６００ｄｐｉ）を１回分の入出力データとする。画像処理モジュールＤ１０６は、画像処理モジュールＢ１０４の出力したデータを文字画素の周囲の間引き処理に使用する。なお、画像処理モードＢでは、上述した通り、一定濃度以下への変換処理は実行しないため、画像処理モジュールＣ１０５では処理を実行しない。
【００４０】
画像処理モジュールＡ１０３は、各色で多値データ（４ｂｉｔ）の１６×１６画素格子（６００ｄｐｉ）にパッキング処理を実施する。画像処理モジュールＢ１０４は、画像処理モジュールＡ１０３の出力結果のうち１のパッキングに対して同色のその前後の出力結果も参照して、１８×１６画素格子（６００ｄｐｉ）多値データから３６×３２画素格子（１２００ｄｐｉ）の２値データへの変換処理を行う。１のパッキングに対して同色のその前後の出力結果を参照するのは、糊代が必要となるためである。画像処理モジュールＢ１０４が各色の処理を１回ずつ終えると、画像処理モジュールＣ１０５は処理を実行せず、画像処理モジュールＤ１０６は、横方向４分割した３６×８画素格子単位での処理を各色４回ずつ実施する。ただし、カラー０は文字情報であるため、画像処理モジュールＢ１０４のカラー０が処理完了しただけでは、画像処理モジュールＤ１０６は起動しない。画像処理モジュールＤ１０６は、画像処理モジュールＢ１０４がカラー１以降の処理を完了すると、処理を開始し、文字画素の周囲を間引いて、糊代部分を削除した３２×８画素格子（１２００ｄｐｉ）とした後、９０度回転処理を実施する。なお、文字情報は、その後の処理では使用しないため、カラー０の出力はしない。そして画像処理モジュールＤ１０６が各色４回ずつ処理を終えると、画像処理モジュールＥ１０７は、３２×３２画素格子（１２００ｄｐｉ）でヘッド吐出順へ変換処理を各色１回実施する。
【００４１】
画像処理モードＢでは、キュー管理部でのアクティブ状態のキュー総数の上限値として、キュー管理部Ａ１１０で１２個、キュー管理部Ｂ１１１で８個、キュー管理部Ｄで１２個、キュー管理部Ｅで１個を設定する。
【００４２】
図３において、Ｔ０経過時、Ｔ１経過時、Ｔ２経過時、Ｔ３経過時、Ｔ４経過時のキューの状態について説明する。
【００４３】
Ｔ０経過時には、画像処理モジュールＡ１０３は、カラー０〜２までの処理を１回ずつ終え、カラー０とカラー１は２回目の処理を終えて、カラー２の処理を実行中である。画像処理モジュールＡ１０３でカラー１まで２回目の処理が完了している、すなわち、カラー０及びカラー１は、糊代を含めた前後の画素の出力が終わっている。したがって、画像処理モジュールＢ１０４は、カラー０の処理を実施し、カラー１の処理を実行中である。なお、Ｔ０は、画像処理モジュールＢ１０４の処理は１回目の処理であるため、前後処理のうち前処理は存在しない。そのため、画像処理モジュールＢ１０４は、画像処理モジュールＡ１０３の２回分の処理完了を受けて処理を開始する。画像処理モジュールＤ１０６は、カラー０に対する起動条件である画像処理モジュールＢ１０４のカラー１までの処理完了が整っていないため、画像処理モジュールＤ１０６の処理はまだ開始していない。
【００４４】
Ｔ１経過時には、画像処理モジュールＢ１０４は、カラー０〜２までの処理を１回ずつ終え、画像処理モジュールＡ１０３のカラー２の出力結果を使用してカラー３の処理を実行中である。画像処理モジュールＤ１０６は、画像処理モジュールＢ１０４でカラー０〜１の処理が終わっているため、カラー１の処理を実行中である。
【００４５】
Ｔ２経過時には、画像処理モジュールＢ１０４がカラー０〜３までの処理を１回ずつ終え、カラー２の２回目の処理を終え、カラー１の２回目の処理を実行中である。画像処理モジュールＢ１０４がカラー０の２回目の処理を完了したので、画像処理モジュールＡ１０３の１回目の処理結果は不要となり、キュー管理部Ａ１１０は、カラー０キューを１つ削除している。キュー管理部Ｂ１１１では、アクティブ状態のキュー総数が６個となっているが、上限値８個に達してはおらず、キューはフル状態にはなっていない。
【００４６】
Ｔ３経過時には、画像処理モジュールＢ１０４がカラー０〜３までの処理を２回ずつ終えた時点で、キュー管理部Ｂ１１１では、アクティブ状態のキュー総数が上限値８個に達して、キューがフル状態になる。このとき画像処理モジュールＢ１０４は、キュー削除待ちとなり処理が一時停止し、それに応じて画像処理モジュールＡ１０３での処理も同様にキュー削除待ちで一時停止している。
【００４７】
Ｔ４経過時には、画像処理モジュールＤ１０６の処理が進んだことによりキュー管理部Ｂ１１１のキューのフル状態が解除され、Ｔ３で一時停止した画像処理モジュールＢ１０４の処理が再開している。画像処理モジュールＡ１０３は、まだ画像処理モジュールＢ１０４の処理が再開直後であり、出力結果を削除済みにできないため、キュー削除待ちを継続している。
【００４８】
本実施形態では、画像処理モードＡや画像処理モードＢのように画像処理モード毎に画像処理モジュール間の関係が異なる場合でも、キュー管理の設定を切り替えることにより、同じハードウェア構成で対応することができる。このように、複数の画像処理モジュールを有する画像処理モジュール群において、それぞれの画像処理モジュールが前後の処理単位に依存しないことにより、画像処理モジュールの構成を画像処理モジュール毎の処理規模及び処理能力に基づき決めることができる。また、画像処理モジュール間毎に起動条件を設定することができ、画像処理モジュール間のパイプライン処理をより高速に実行することができる。このように、画像処理モジュール毎に処理単位の異なる画像処理に対応することができ、画像処理モジュール群が有する画像処理モジュールの回路規模を大きくすることなく、処理を高速化することができる。
【００４９】
また、キュー管理の設定を切り替えられるため、メモリ１０８に保持する各画像処理モジュールの出力データ量の上限を、画像処理モードによって変えることができる。
【００５０】
図４に、画像処理モードＡと画像処理モードＢの各画像処理モジュール間での中間バッファ（ＳＲＡＭ）として必要となる出力データ量を示す。中間バッファ量（出力データ量）は、各キュー管理部におけるアクティブ状態のキュー総数の上限値と、各画像処理モジュールから一度に出力する出力データサイズとの積算により求められる。例えば、画像処理モードＡの画像処理モジュールＡ１０３の場合、一度に出力する出力データが１２８ｂｙｔｅ（１６×１６画素格子（６００ｄｐｉ）の多値（４ｂｉｔ））であり、アクティブ状態のキュー総数の上限値３個である。これらを積算することにより、画像処理モードＡの画像処理モジュールＡ１０３は、中間バッファに３８４ｂｙｔｅ分の量を確保する必要があることがわかる。同様の計算をすると、画像処理モジュールＡ１０３〜画像処理モジュールＥ１０７の総中間バッファ量は、画像処理モードＡで３０７２ｂｙｔｅ必要となり、画像処理モードＢでも３０７２ｂｙｔｅ必要となる。そして、これらの値は、画像処理モジュール毎の中間バッファ量の最大値の加算結果４２２４ｂｙｔｅ（＝１５３６＋１１５２＋１０２４＋５１２）よりも小さくなっている。これにより、キュー管理の設定を切り替えることで、使用するＳＲＡＭのメモリ量のサイズを小さくすることができることがわかる。
【００５１】
図５は、このような種々の画像処理モードでの動作を実現するキュー管理部の構成を示す図である。図５に示すように、シーケンサ１０９は、制御対象キュー管理部５０１と、その前段キュー管理部５００と、次段キュー管理部５０２とを含む。これは、図１の画像処理回路（画像処理モジュールＡ１０３〜画像処理モジュールＥ１０７）の一部を模式的に表したものである。キュー管理部Ｂ１１１を制御対象とする場合は、キュー管理部Ｂ１１１が制御対象キュー管理部５０１となり、キュー管理部Ａ１１０が前段キュー管理部５００、キュー管理部Ｃ１１２が次段キュー管理部５０２となる。同様に、キュー管理部Ｃ１１２を制御対象とする場合、キュー管理部Ｃ１１２が制御対象キュー管理部５０１となり、キュー管理部Ｂ１１１が前段キュー管理部５００、キュー管理部Ｄ１１３が次段キュー管理部５０２に相当する。また、キュー管理部Ｄ１１３を制御対象とする場合、キュー管理部Ｃ１１２が前段キュー管理部５００となり、キュー管理部Ｅ１１４が次段キュー管理部５０２に相当する。
【００５２】
図５に示すｐｒｖ＿ｒｏ及びｐｒｖ＿ｃｌは、制御対象キュー管理部５０１が処理を実行する上で、前段の画像処理モジュールが完了していなければならない処理条件を示す。ｐｒｖ＿ｒｏは、前段の画像処理モジュールが完了していなければならない処理の回数、ｐｒｖ＿ｃｌは、前段の画像処理モジュールが完了していなければならない色数を示す。この図では、ｐｒｖ＿ｒｏ＝１，ｐｒｖ＿ｃｌ＝２とする。また、図５において、格子内の数字（番号）は、各キュー管理部の処理の実行順を示す。この例では、前段キュー管理部５００でキューが１番までの処理を完了すると、制御対象キュー管理部５０１の０番の起動条件（カラー０の１回目）を満たす。前段キュー管理部５００においてキューがどこまで完了したかは、前段キュー管理部５００から制御対象キュー管理部５０１に対して通知されているキュー状態情報により把握できる。すなわち、前段のキュー管理部のキューの進行状況は、キュー状態情報として次段のキュー管理部へ通知される。なお、通知は、キューの進行状況に変化があるたびに通知してもよいし、所定間隔で常に通知するようにしてもよい。さらに、前段キュー管理部５００が２番までの処理を完了すると、制御対象キュー管理部５０１の１番の起動条件（カラー１の１回目）が整う。なお、前段キュー管理部５００が対応可能な最大色数（ここでは、カラー３）の処理を実行しないこともありえる。例えば、図５に示すように、前段キュー管理部５００がカラー２までの処理しか実行しない場合は、前段キュー管理部５００が２番まで処理を終了すると、制御対象キュー管理部５０１は、カラー２〜３の起動条件が整った（全色の処理完了）と判定する。これにより、制御対象キュー管理部５０１は、３番までの処理を実行できる。
【００５３】
また、図５に示すｕｎｉ＿ｃｌ及びｕｎｉ＿ｒｏは、処理単位を示すものであり、ｕｎｉ＿ｃｌは、画像処理モジュールで１度の処理で扱う色数を示し、ｕｎｉ＿ｒｏは、画像処理モジュールで１度の処理で扱うキューの個数を示す。すなわち、ｕｎｉ＿ｒｏは、画像処理モジュールが１度の処理で必要とする処理の回数を示す。ｄｅｌ＿ｒｏは不要となる処理済みのキューの個数を示している。図５は、制御対象キュー管理部５０１が管理する画像処理モジュールについて、ｕｎｉ＿ｃｌ＝４，ｕｎｉ＿ｒｏ＝３，ｄｅｌ＿ｒｏ＝２とする。
【００５４】
制御対象キュー管理部５０１において処理中の色もしくは全色（ｕｎｉ＿ｃｌ個）がｕｎｉ＿ｒｏ回の処理が完了したら、制御対象キュー管理部５０１から前段キュー管理部５００へキュー削除通知を発行する。前段キュー管理部５００が削除通知を受けると、前段キュー管理部５００に対して設定されたｄｅｌ＿ｒｏ個のキューがクリアされる。すなわち、キュー管理部５００が管理する画像処理モジュールの出力結果をメモリ１０８から削除する。図５に示す例では、制御対象キュー管理部５０１が次段キュー管理部５０２からキュー削除通知を受け取った場合には、制御対象キュー管理部５０１の０〜７番までの処理が不要となりキュー削除が実施される。すなわち、キュー管理部５００が管理する画像処理モジュールの対象出力結果はメモリ１０８上で不要データとなる。キュー削除通知の発行タイミングは、色毎か全色のいずれで判定するかをあらかじめ決めておくことができる。全色単位で差分更新をするように設定された場合、制御対象キュー管理部５０１で１１番まで終了すると、前段キュー管理部５００のカラー０〜３に対してキュー削除通知を発行する。各色単位で差分更新をするように設定された場合は、制御対象キュー管理部５０１で８番まで終了すると、カラー０に対してキュー削除通知を発行し、制御対象キュー管理部５０１で９番まで終了すると、カラー１に対してキュー削除通知を発行する。このように、各色毎にキュー削除通知が発行される。
【００５５】
また、制御対象キュー管理部５０１は、前段キュー管理部５００の処理と制御対象キュー管理部５０１の処理との回数差分がｆｕｌ＿ｒｏ以上あり、ｕｎｉ＿ｃｌ個の色の処理が終了している状態が継続される場合、キューがフル状態として管理する。ここで、ｆｕｌ＿ｒｏとは、制御対象画像処理モジュールと次段の画像処理モジュールとの間に存在するメモリが許容量まで達した状態を示す。図５では、ｆｕｌ＿ｒｏ＝４とする。この例では、制御対象キュー管理部５０１の処理が１５番まで終了すると、これ以上の処理を受け付けられない状態となる。この状態が解除されるのは、次段の画像処理モジュールでの処理が進み、次段キュー管理部５０２から制御対象キュー管理部５０１にキュー削除通知が発行されたときである。
【００５６】
前段画像処理モジュールから全処理完了通知を受け取り、制御対象画像処理モジュールが動作受付可能状態である場合に、制御対象キュー管理部５０１は次段への全処理完了通知を発行する。
【００５７】
なお、最前段であるキュー管理部Ａ１１０を制御対象キュー管理部５０１とした場合、前段キュー管理部５００は存在せず、常に制御対象キュー管理部５０１に対する準備が整っているように振る舞う。また、最後段であるキュー管理部Ｅ１１４を制御対象キュー管理部５０１とした場合、次段キュー管理部５０２は存在しない。
【００５８】
図６は、図５で示したシーケンサ１０９がキュー管理部の情報を用いて制御対象の画像処理モジュールに処理開始通知を制御するフローを示している。図６のフローチャートは、ＣＰＵ１０１が、ＲＯＭ１０２に格納されている制御プログラムをメモリ１０８にロードし、それを実行することにより行われる処理の流れを示す。
【００５９】
まず、シーケンサ起動すると（Ｓ６００）、Ｓ６０１で次段キュー管理部５０２からキュー削除通知が発行されたか判定する。キュー削除通知が発行されていれば（Ｓ６０１でＹｅｓ）、Ｓ６０２において制御対象キュー管理部５０１のキューをｄｅｌ＿ｒｏ個削除し、Ｓ６０３へ進む。キュー削除通知が発行されていなければ（Ｓ６０１でＮｏ）、Ｓ６０３へ進む。
【００６０】
Ｓ６０３では、処理対象の画像処理モジュールの前段の画像処理モジュールにおいて、処理対象の画像処理モジュールの処理単位分の処理が完了したか判定する。具体的には、シーケンサ１０９が以下の２つの条件が成立しているか判定する。キュー管理情報において、前段キュー管理部５００で処理済みの回数と制御対象キュー管理部５０１の処理済みの回数との差分がｐｒｖ＿ｒｏ以上あり、前段キュー管理部５００において、処理対象の回数差分ｐｒｖ＿ｒｏの位置において処理対象のｐｒｖ＿ｃｌ個分の色の処理が終了していることが第１の条件である。そして、制御対象キュー管理部５０１はキューフル状態でないことが第２の条件である。これら２つの条件が成立した場合（Ｓ６０３でＹｅｓ）、Ｓ６０４へ進む。これら２つの条件が成り立たない場合（Ｓ６０３でＮｏ）、Ｓ６０１からやり直す。
【００６１】
Ｓ６０４では、制御対象の画像処理モジュールに処理開始通知を発行、すなわち、制御対象の画像処理モジュールに画像処理の開始を指示し、Ｓ６０５で制御対象の画像処理モジュールが処理完了状態になるまで待つ。
【００６２】
制御対象の画像処理モジュールが処理完了状態になると（Ｓ６０５でＹｅｓ）、Ｓ６０６で前段キュー管理部５００へのキュー削除通知の条件が整っているか判定する。キュー削除通知条件が整っている場合（Ｓ６０６でＹｅｓ）、Ｓ６０７で前段キュー管理部５００にキュー削除通知を発行、すなわち、前段キュー管理部５００にキュー削除を指示し、Ｓ６０８へ進む。キュー削除通知の条件が整っていない場合（Ｓ６０６でＮｏ）、Ｓ６０８へ進む。
【００６３】
Ｓ６０８でＳ６０４で処理した処理データが最終データか判定する。前段キュー管理部５００から全処理完了通知が通知済みであり、前段キュー管理部５００から得たキュー管理情報でアクティブなキューが存在しない場合、最終データであると判定する。
【００６４】
最終データである場合（Ｓ６０８でＹｅｓ）、Ｓ６０９で次段キュー管理部５０２に全処理完了通知を発行し、制御対象の画像処理モジュールによる処理を完了する（Ｓ６１０）。最終データでない場合（Ｓ６０８でＮｏ）、再度Ｓ６０１からＳ６０８までの処理を繰り返す。このように、シーケンサ１０９において、各画像処理モジュールに対する処理制御パラメータを、画像処理モジュール間でそれぞれ設定する構成とすることにより、画像処理回路が実行する一連の画像処理は、種々の処理単位に対応することができる。すなわち、例えば、単色毎や複数色間での画像処理、異なる画素格子単位での画像処理といった種々の処理単位が混在するハードウェア構成を実現することができる。
【００６５】
（他の実施形態）
本発明は上述した実施形態に限定されるものではない。例えば、上述した実施形態では、画像処理モジュール群は、複数の処理モードに対応可能としたが、これに限定されず、処理モードは１つ、すなわち、固定であってもよい。この場合は、画像処理モジュールに予め処理単位とする画素数を設定し、キュー管理部に管理するキューの総数の上限値を設定するようすればよい。
【００６６】
また、図２や図３では、４色の処理を例に挙げて説明したが、これに限定されず、８色等他の処理を行う場合も上述した実施形態と同様に処理を行えばよい。また、画像処理モジュール群が実行する処理は、単色であってもよい。
【００６７】
上述した実施形態は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウエア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。また、プログラムは、１つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウエアで実現する必要はなく、処理の一部または全部をＡＳＩＣ等のハードウェアで実現するようにしてもよい。また、ＣＰＵも１つのＣＰＵで全ての処理を行うものに限らず、複数のＣＰＵが適宜連携をしながら処理を行うものとしてもよい。
【図１】
0006537265.tif 000002
【図２】
0006537265.tif 000003
【図３】
0006537265.tif 000004
【図４】
0006537265.tif 000005
【図５】
0006537265.tif 000006
【図６】
0006537265.tif 000007