(57)【特許請求の範囲】
【請求項１】
複数の記録素子が配列した記録ヘッドを走査方向に走査させながらインクを付与すると共に、前記走査方向とは交差する搬送方向に記録媒体を相対的に搬送させることで、前記記録ヘッドの複数回の走査で前記記録媒体上に画像を記録するための画像データを処理する画像処理装置であって、
記録対象の画像データに基づいて、前記記録ヘッドの１回の走査で記録される前記記録媒体上の記録領域であって、前記搬送方向における位置が互いに異なる複数の記録領域のそれぞれについて、前記記録ヘッドの走査範囲を示すシーケンス情報を生成するシーケンス情報生成手段と、
前記画像データと、前記シーケンス情報生成手段で生成された前記シーケンス情報と、に基づいて、前記記録ヘッドの１回の走査に対応する前記記録領域を分割することにより得られる複数の分割領域に記録される画像にそれぞれに対応する複数の分割データを生成し、生成された前記複数の分割データを、前記分割領域各々に対応する複数の演算処理ユニットを用いて並列的に演算処理することにより、前記記録ヘッドの１回の走査において前記記録媒体上にインクを付与するための記録用画像データを生成するデータ生成手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記シーケンス情報生成手段は、前記複数の記録領域のそれぞれについて、前記走査方向において前記複数の記録素子からインクが付与される範囲の両端の位置を示す情報を、前記シーケンス情報として生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記複数の分割領域のそれぞれは、前記搬送方向における位置が異なることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記複数の分割領域のそれぞれは、前記走査方向における位置が異なることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
前記複数の分割領域のそれぞれは、各分割領域が並ぶ方向において互いに同じ幅を有することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記複数の分割領域に対応する前記複数の分割データの数は、前記複数の演算処理ユニットの個数に対応することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記画像データは、前記記録媒体の１回の搬送量が前記搬送方向における前記記録ヘッドの記録可能な幅に対応する量である、１パス記録を行うためのデータであることを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記画像データは、前記記録媒体を、前記搬送方向における前記記録ヘッドの記録可能な幅よりも少ない量を搬送することで、前記記録媒体上の同じ領域に対して複数回の走査で記録する、マルチパス記録を行うためのデータであり、
前記シーケンス情報生成手段は、前記マルチパス記録で記録される各走査に対応する領域について前記シーケンス情報を生成することを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項９】
前記シーケンス情報生成手段は、記録ヘッドの各走査範囲に加えて、前記記録媒体の搬送量を示す情報を生成することを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記複数の演算処理ユニットは、前記画像データに対して記録色空間に変換する変換処理及び量子化データに量子化する量子化処理を行うことを特徴とする請求項１乃至９のいずれか１項に記載の画像処理装置。
【請求項１１】
符号化画像データを含むジョブを外部装置から受信する受信手段と、
該受信手段で受信した符号化画像データを復号する復号手段と、
をさらに有し、
前記シーケンス情報生成手段は、前記復号手段で復号して得られた画像を解析して前記シーケンス情報を生成することを特徴とする請求項１乃至１０のいずれか１項に記載の画像処理装置。
【請求項１２】
前記複数の演算処理ユニットのそれぞれは、複数のＡＳＩＣにそれぞれ搭載されることを特徴とする請求項１乃至１１のいずれか１項に記載の画像処理装置。
【請求項１３】
前記記録ヘッドを走査させる走査手段と、
前記記録媒体を搬送する搬送手段と、
前記走査手段及び前記搬送手段を制御することにより前記記録媒体上に画像を記録する記録制御手段と、
をさらに有することを特徴とする請求項１乃至１２のいずれか１項に記載の画像処理装置。
【請求項１４】
前記データ生成手段は、前記複数の演算処理ユニットを用いて演算処理された前記複数の分割データを結合することにより、前記記録用画像データを生成することを特徴とする請求項１乃至１３のいずれか１項に記載の画像処理装置。
【請求項１５】
複数の記録素子が配列した記録ヘッドを走査方向に走査させながらインクを付与すると共に、前記走査方向とは交差する搬送方向に記録媒体を相対的に搬送させることで、前記記録ヘッドの複数回の走査で前記記録媒体上に画像を記録するための画像データを処理する画像処理方法であって、
記録対象の画像データに基づいて、前記記録ヘッドの１回の走査で記録される前記記録媒体上の記録領域であって、前記搬送方向における位置が互いに異なる複数の記録領域のそれぞれについて、前記記録ヘッドの走査範囲を示すシーケンス情報を生成するシーケンス情報生成工程と、
前記画像データと、前記シーケンス情報生成工程で生成された前記シーケンス情報と、に基づいて、前記記録ヘッドの１回の走査に対応する前記記録領域を分割することにより得られる複数の分割領域に記録される画像にそれぞれに対応する複数の分割データを生成し、生成された前記複数の分割データを、前記分割領域各々に対応する複数の演算処理ユニットを用いて並列的に演算処理することにより、前記記録ヘッドの１回の走査において前記記録媒体上にインクを付与するための記録用画像データを生成するデータ生成工程と、
を有することを特徴とする画像処理方法。
【請求項１６】
複数の記録素子が配列した記録ヘッドを走査運動させると共に、走査運動の方向とは交差する交差方向に、前記走査運動に応じて記録媒体を相対的に搬送することで、前記記録媒体上に画像を印刷する画像記録装置であって、
印刷対象の画像データに基づいて、前記交差方向における位置が互いに異なる記録媒体上の複数の領域それぞれについて、前記記録ヘッドの各走査運動の移動範囲を示すシーケンス情報を生成する生成手段と、
前記記録ヘッドの駆動用として用いられる記録用画像データを生成する処理を行い、当該処理を並列に行うことが可能な複数の処理ユニットと、
前記生成手段で生成された前記シーケンス情報に基づいて、前記記録ヘッドが記録を行う記録媒体上の記録領域を分割した複数の分割領域について、前記複数の処理ユニットが別々の分割領域に対応する前記処理を行うように、前記複数の処理ユニットそれぞれが対応する分割領域を決定する分割領域決定手段と、
前記印刷対象の画像データにおける、前記分割領域決定手段で決定した分割領域に対応するデータを前記複数の処理ユニットに渡して、それぞれにて記録用画像データを生成させる分配手段と、
前記複数の処理ユニットで得られた、それぞれの記録用画像データに基づき、前記記録ヘッドの駆動並びに走査運動と、前記記録媒体の搬送を制御して記録を行う記録手段と、
を有し、
前記生成手段は、
記録ヘッドを駆動して有意なドットが記録される、前記走査運動の方向における範囲の両端の位置を示す情報を、各走査運動ごとに生成し、
前記分割領域決定手段は、
前記記録ヘッドの１つの走査運動で記録される領域の画素数を計数する計数手段を含み、
前記複数の処理ユニットそれぞれに対して、１つの走査運動で記録されるべき領域を単位とし、且つ、互いに処理すべき画素数の差が最小となるように前記分割領域を決定することを特徴とする画像記録装置。
【請求項１７】
複数の記録素子が配列した記録ヘッドを走査運動させると共に、走査運動の方向とは交差する交差方向に、前記走査運動に応じて記録媒体を相対的に搬送することで、前記記録媒体上に画像を印刷する画像記録装置であって、
印刷対象の画像データに基づいて、前記交差方向における位置が互いに異なる記録媒体上の複数の領域それぞれについて、前記記録ヘッドの各走査運動の移動範囲を示すシーケンス情報を生成する生成手段と、
前記記録ヘッドの駆動用として用いられる記録用画像データを生成する処理を行い、当該処理を並列に行うことが可能な複数の処理ユニットと、
前記生成手段で生成された前記シーケンス情報に基づいて、前記記録ヘッドが記録を行う記録媒体上の記録領域を分割した複数の分割領域について、前記複数の処理ユニットが別々の分割領域に対応する前記処理を行うように、前記複数の処理ユニットそれぞれが対応する分割領域を決定する分割領域決定手段と、
前記印刷対象の画像データにおける、前記分割領域決定手段で決定した分割領域に対応するデータを前記複数の処理ユニットに渡して、それぞれにて記録用画像データを生成させる分配手段と、
前記複数の処理ユニットで得られた、それぞれの記録用画像データに基づき、前記記録ヘッドの駆動並びに走査運動と、前記記録媒体の搬送を制御して記録を行う記録手段と、
を有し、
前記生成手段は、
記録ヘッドを駆動して有意なドットが記録される、前記走査運動の方向における範囲の両端の位置を示す情報を、各走査運動ごとに生成し、
前記分割領域決定手段は、
前記記録ヘッドの１走査運動で記録されることになる画素数を累積加算し、
着目走査運動で記録される画素数の累積加算によって、予め設定された閾値に達する場合、前記累積加算を開始した走査運動から前記着目走査運動までの領域を、１つの処理ユニットが分担する分割領域として決定し、且つ、次の処理ユニットが分担する分割領域を決定するために前記着目走査運動の記録で前記累積加算をリセットすることを特徴とする画像記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び方法及び画像記録装置に関するものである。
【背景技術】
【０００２】
近年、記録ヘッドからインクを吐出することによって印刷を行うインクジェットプリンタが普及している。特に、記録ヘッドを搭載したキャリッジを走査移動しながら記録ヘッドよりインクを吐出し、印刷対象用紙を紙送り機構で送ることで印刷を行うシリアルヘッドインクジェットプリンタは、安価な構成で高品位の画質を得られることもあり、家庭用プリンタをはじめとして広く普及している。
【０００３】
また、利用者の利便性を考慮して、記録ヘッドのノズル数を増加したり、高速に吐出可能とすることでキャリッジ移動速度を速めることで、印刷速度は年々増加している。
【０００４】
更にまた、印刷対象の画像のレイアウトに従って、キャリッジの走査方向の移動距離を最短にし、且つ、記録媒体の搬送を制御することで、印刷処理を更に高速化する技術も知られている（特許文献１）。
【０００５】
インクジェットプリンタを利用し、ＰＣ上で写真や文書などを入力として、紙面上に印刷を行うことが行われている。写真はＪＰＥＧのような画像フォーマットファイルで、文書はＰＤＦのようなページ記述言語ファイルで取り扱われることが一般的である。ＰＣ上で印刷を行う場合、その印刷を指示するためのアプリケーションプログラムを利用することになるが、そのアプリケーションプログラムとプリンタとの間には、プリンタドライバが介在する。印刷指示を受けたアプリケーションプログラムは、印刷すべきファイルを解釈し、ファイルの中に記載されている写真や文書の情報をビットマップ画像に展開し、プリンタドライバに伝達する。ビットマップ画像を受け取ったプリンタドライバは、画像に対して通常、変倍、色空間変換、色分解、階調補正、量子化、といった印刷画像処理を行った上でプリンタ固有のデータにして、プリンタに送信する手続きを行う。
【０００６】
さらに、近年では、スマートフォンやタブレット端末といった、様々な端末からの印刷を受け付けるプリンタが増えている。これらの端末では、プリンタドライバを搭載できないものも少なくない。そのため、印刷対象のＪＰＥＧファイルやＰＤＦファイル等をそのままプリンタに送信し、印刷させることになる。つまり、昨今のプリンタは、通常のＰＣのプリンタドライバが行っていたのと同様の処理を行う機能を有する。
【０００７】
以上より、近年のプリンタは、その印刷速度は増加している一方で、プリンタ本体に課される各種処理負荷も増大していると言える。特に、印刷画像処理は、印刷対象の各画素すべてに対して計算を行う必要があり、処理負荷が非常に高い。そのため、プリンタ内に専用の画像処理ハードウェアやＣＰＵを備えたＡＳＩＣを搭載することで処理負荷に対応している。
【０００８】
一方で、これらの特性を持ったＡＳＩＣは製造コストも高く、高速化の範囲にも限界がある。特に、論理回路を構成する素子の物理的要因によって、処理クロックの向上範囲は制限される。
【０００９】
一般のＰＣ向けのＣＰＵにおいてもこの傾向は見られ、近年ではＣＰＵの高クロック化ではなくマルチコア化（並列化）で処理能力を向上させるアプローチがとられている。通常、単体で高速な処理装置と、低速な処理装置を並列で用意した場合、後者の方が個々の処理装置に必要とされる性能は低く抑えられ、装置全体にかかるコストも低コストとなる。プリンタにおいてもこの手法は有効であり、複数ＡＳＩＣを用いて並列化を実現している例もある（特許文献２）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第４４７９２３０号公報
【特許文献２】特許第３９３５３３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、色毎に処理を並列化させた場合、並列化数は最大でもインク色の色数の個数にとどまる。極端な例として、Ｋインク１色のみを用いたモノクロ印刷モードにおいては、並列化を行う余地が無い。
【００１２】
画像処理の並列化の別の方法として、処理対象領域を区分して各領域に対して並列処理することが考えられる。例えば、Ａ４の紙面を４×４の矩形領域に分割することで、Ａ４紙面上の画像に対し、理論上１６並列化処理を行うことができる。しかし、このような処理対象領域区分方法は、シリアルヘッドインクジェットプリンタへの適用が難しい。
【００１３】
シリアルヘッドインクジェットプリンタの「シリアルヘッド」に起因する特性として、同じＡ４紙面の画像であっても、画像のレイアウトによって印刷時の処理シーケンスが大きく異なることがある。
【００１４】
例えば、図８（ａ）のようなレイアウトの文書について考察する。この文書をシリアルヘッドを搭載したプリンタで高速に印刷を行う場合には、同図（ｂ）の短冊部分の記録ヘッドの走査運動と記録紙搬送により印刷を行うことになる。紙面の全体にヘッドを走査させず、印刷が必要な領域に絞ってキャリッジの走査運動を行うので、総印刷時間を短縮できるからである。
【００１５】
かかる印刷処理を行う際に、例えば紙面の上部（顔が書かれた領域）を印刷している間は、紙面の左半分領域について通常の約２倍速で印刷動作が行われることになる。そのため、該当領域の画像処理結果を通常の二倍の速さで供給する必要がある。一方で、紙面の中部（吹き出しが書かれた領域）を印刷している間は、紙面の全幅について通常の速度で印刷動作が行われる。そのため、該当領域の画像処理結果を通常の速さで供給すればよい。さらに、紙面の下部（文字が書かれた領域）を印刷している間は、紙面の右半分領域について通常の約２倍速で印刷動作が行われることになる。そのため、該当領域の画像処理結果を通常の二倍の速さで供給する必要がある。
【００１６】
このように、シリアルヘッド搭載のインクジェットプリンタで印刷時は、画像のレイアウトによって紙面の各領域を処理する際に必要とされる速度が異なる。このため、紙面を単純に矩形分割して並列処理を行ったとしても、局所的に処理が高負荷となる領域が発生してしまい、並列化のメリットが生かせない。
【００１７】
より分かりやすく、単純な例として図８（ａ）の画像に対して図９のような２領域に分けて並列化を行う場合を考察する。
【００１８】
紙面の左半分を領域Ａ、右半分を領域Ｂとし、それぞれ処理ユニットＡ、処理ユニットＢが画像処理を担当したとする。紙面の上部（顔が書かれた領域）を印刷している間は、処理ユニットＡのみに処理負荷が集中し、処理ユニットＡは通常の二倍の速さで処理を行う必要がある。この間、処理ユニットＢに対しては処理対象の画像が存在しないため、処理負荷はほとんど発生しない。言い換えると、並列化が効果を発揮しない。
【００１９】
紙面の中部（吹き出しが書かれた領域）を印刷している間は、処理ユニットＡと処理ユニットＢが処理負荷を折半して画像処理を行う。処理ユニットＡ、Ｂとも、通常の速さで処理を行えばよい。これは一つの処理ユニットで同領域をすべて処理する場合に対して、半分の処理負荷となる。言い換えると、並列化が効果を発揮すると言える。
【００２０】
紙面の下部（文字が書かれた領域）を印刷している間は、処理ユニットＢのみに処理負荷が集中し、処理ユニットＢは通常の二倍の速さで処理を行う必要がある。この間、処理ユニットＡに対しては処理対象の画像が存在しないため、処理負荷はほとんど発生しない。言い換えると、並列化が効果を発揮しない。
【００２１】
以上を考えると、このような並列化単位で画像処理を処理ユニットＡ、Ｂで並列化した場合、局所的に高負荷が発生した際にも処理速度を担保するためには、各々の処理ユニットに対して２倍の処理速度を見積もっておく必要がある。半分の処理対象に対して二倍の処理速度を想定するため、これは全体の処理対象に対して通常の処理速度を想定した場合と同じ処理速度となる。
【００２２】
つまり、画像レイアウトに起因する最悪条件下でも処理速度を担保する場合、並列化を行ったとしても通常の（並列化していない）処理速度を各処理ユニットに要求することとなる。その結果、通常の（並列化していない）処理ユニットと同じコストのかかる処理装置を複数用意することになり、並列化によるコストメリットが活かせない。言い換えれば、いかなるレイアウトに対しても一定時間内に処理を完了できるようにハードウェア性能を設計すると、特定の処理資源に負荷が集中した際に備えて過大な処理能力マージンを設定する必要が出てしまう。その結果として、各処理資源の実装コストが高価になったり、場合によっては半導体の現実的な製造工程で得られる回路による処理能力では、マージンがそもそも得られない場合が出てしまう。
【００２３】
マージンが得られない場合、印刷速度に対して画像処理が間に合わない事態が発生し、例えばヘッドスキャン間にスキャン停止時間が不規則に発生してしまう。このような不規則な停止時間の発生は、インクの浸透条件の不規則な変化を誘発する。その結果、各ヘッドスキャン間でインク浸透のされ方が異なることに起因して、発色むらや画像スジなどの画質弊害が発生する場合もある。
【００２４】
以上より、シリアルヘッドを搭載したプリンタにおいて、画像のレイアウトによらず好適に領域並列化を行おうとする場合には、印刷対象の画像ごとに決定されるヘッド／紙送りシーケンスを考慮して区分領域をオンデマンドに算出する必要があるが、そのような偽技術は今のところ見当たらない。
【課題を解決するための手段】
【００２５】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
複数の記録素子が配列した記録ヘッドを走査方向に走査させながらインクを付与すると共に、前記走査方向とは交差する搬送方向に記録媒体を相対的に搬送させることで、前記記録ヘッドの複数回の走査で前記記録媒体上に画像を記録するための画像データを処理する画像処理装置であって、
記録対象の画像データに基づいて、前記記録ヘッドの１回の走査で記録される前記記録媒体上の記録領域であって、前記搬送方向における位置が互いに異なる複数の記録領域のそれぞれについて、前記記録ヘッドの走査範囲を示すシーケンス情報を生成するシーケンス情報生成手段と、
前記画像データと、前記シーケンス情報生成手段で生成された前記シーケンス情報と、に基づいて、前記記録ヘッドの１回の走査に対応する前記記録領域を分割することにより得られる複数の分割領域に記録される画像にそれぞれに対応する複数の分割データを生成し、生成された前記複数の分割データを、前記分割領域各々に対応する複数の演算処理ユニットを用いて並列的に演算処理することにより、前記記録ヘッドの１回の走査において前記記録媒体上にインクを付与するための記録用画像データを生成するデータ生成手段と、を有する。
【発明の効果】
【００２６】
本発明によれば、記録対象の画像レイアウトに依存せず、並列度の高い並列化処理を実現できるようになる。
【図面の簡単な説明】
【００２７】
【図１】実施形態におけるホストとプリンタのブロック構成図。
【図２】従来のプリンタにおける単独処理時のプリント処理フロー図。
【図３】実施形態のプリンタにおける並列処理時のプリント処理フロー図。
【図４】実施形態のプリンタにおける並列処理時のプリント処理フロー図。
【図５】実施形態のプリンタにおける画像処理の処理フロー図。
【図６】実施形態のプリンタにおける印刷データ生成処理の処理フロー図。
【図７】実施形態のプリンタにおける構成図。
【図８】実施形態のプリンタにおけるヘッドのスキャンシーケンスを説明する図。
【図９】従来の並列化処理化を行った際の画像中の並列化区分を示す図。
【図１０】実施形態のプリンタにおける複数ＡＳＩＣ接続時のプリンタの装置構成図。
【図１１】第１の実施形態における画像の並列化区分を示す図。
【図１２】第２の実施形態における画像の並列化区分を示す図。
【図１３】第３の実施形態における画像の並列化区分を示す図。
【図１４】第４の実施形態における画像の並列化区分を示す図。
【発明を実施するための形態】
【００２８】
以下、図面を参照して本発明の実施形態を詳細に説明する。
【００２９】
まず、本実施形態の理解を容易にするため、実施形態が想定しているシステムの構成、環境について説明し、そのうえで、各実施形態を説明する。
【００３０】
図１は、印刷データ発生源であるホスト１００と、画像記録装置としてのプリンタ２００のブロック構成図を示している。
【００３１】
プリンタ２００は、印刷処理を行うためのプログラムやテーブルを保持するＲＯＭ２０１、プログラムを実行し装置全体に対する制御部として機能するＣＰＵ２０４、プログラム実行時の作業領域とするＲＡＭ２０２、外部装置と有線または無線で接続するためのＩ／Ｆ２０３を持つ。さらに、印刷処理結果を記録媒体上（記録紙上）にインクを吐出するための複数のノズル（記録素子）を配列した記録ヘッド２０５、記録ヘッド２０５の駆動や紙送りを行うためのモータをはじめとした機械装置（図示せず）で構成され、これらの装置はバス２０７を介して相互に電気的に接続されている。また、プリンタ２００は、特に画像処理などの高負荷の処理を行うためのハードウェア装置としてＤＳＰ２０６を備えるものもある。これらの装置の全部または一部は、単一のＬＳＩとして実装され、ＡＳＩＣとして部品化されている場合もある。
【００３２】
プリンタ２００はＩ／Ｆ２０３を介してホスト１００と通信可能に接続される。なお、後述する実施形態における並列化は、図中のＣＰＵやＤＳＰと言った処理ユニットを複数個有する装置（実施形態ではＡＳＩＣ）を、複数接続する構成を想定している。
【００３３】
このような場合には、並列化された装置（ＡＳＩＣ）同士は、バスまたはＩ／Ｆを介して相互通信が可能である。また、並列化された装置の中の一つがマスタ装置として、全体の処理の調停やホスト１００との通信を行う。残る装置はスレーブ装置として、マスタ装置の指示に従って処理を各々独立に実施し、処理終了をマスタ装置に通知することで処理結果の集約を行う。
【００３４】
前述のとおり、ホスト１００は一般的なＰＣをはじめとして、携帯電話、スマートフォン、タブレット、デジタルカメラ、その他携帯／据置端末が想定される。それぞれの装置の主目的によって、ホスト１００が備える装置の内訳は変わるが、概ね以下の構成を備える。
【００３５】
ホスト１００は、ホスト１００の処理を行うためのプログラムやテーブルを保持するＲＯＭ１０１、プログラムを実行するＣＰＵ１０４、プログラム実行時の作業領域とするＲＡＭ１０２、外部装置と有線または無線で接続するためのＩ／Ｆ１０３を持つ。これらの構成ユニットはバス１０７を介して相互に電気的に接続されている。また、ユーザがホスト１００に対して指示を入力するための入力装置１０６、ホスト１００がユーザに対して情報を提示するための出力装置（表示装置）１０５については、Ｉ／Ｆを介して接続されている。
【００３６】
以下、ホスト１００とプリンタ２００間での通信について、近年で代表的な端末であるスマートフォン端末をホスト１００とした場合の文書の印刷を例に解説する。
【００３７】
ユーザは、スマートフォン（ホスト１００）を操作し、スマートフォン上に保存された文書を閲覧しているとする。閲覧中に、印刷を行いたい文書があった場合、ユーザはスマートフォン上のＯＳで提供された印刷指示を、タッチパネルなどの入力装置１６０を介して呼び出す。
【００３８】
現在一般的に普及しているスマートフォン端末では、端末ベンダーとプリンタベンダーが提携することで、ＯＳ上に統合的な印刷プロトコルが提供されている。ユーザからの印刷指示を受け取ると、スマートフォン上のＯＳは、現在閲覧中の文書を何らかの画像形式に変換したのち、前述の印刷プロトコルに則って印刷ジョブを作成する。例えば、印刷対象となる文書データを閲覧中のアプリケーションを介してビットマップ画像化し、ＪＰＥＧ画像に圧縮する。そして、圧縮画像を含むＸＭＬ文書形式の印刷ジョブファイルを作成し、事前に登録されたプリンタに対して無線ＬＡＮＩ／Ｆ（インターフェース１０４）を通じて、プリンタ２００に向けて送信する。
【００３９】
次に、プリンタ２００が非並列化（単一処理）されている場合の処理フローを図２を用いて説明する。
【００４０】
ステップＳ２１０にて、プリンタ２００のＣＰＵ２０４は、ホスト１００から送信された印刷ジョブを、Ｉ／Ｆ２３０を介して受信する。ここで、印刷ジョブには、ＪＰＥＧ画像が含まれるとする。ＣＰＵ２０４は、受信したジョブの内容を解読して印刷データ（印刷画像）を取得する。本実施形態の場合、ＣＰＵ２０４が機能するＸＭＬパーサによって印刷ジョブファイルを解読し、用紙設定や印刷品位設定などの情報とＪＰＥＧ画像を得る。そしてＣＰＵ２０４は、得られたこれらの情報をＲＡＭ２０２に格納する。
【００４１】
次にステップＳ２２０にて、ＣＰＵ２０４は、印刷画像のデコードを行う。ここでは、ＪＰＥＧ画像のデコードを行う。なお、デコードはＣＰＵ２０４で行う代わりに、専用のＤＳＰ２０６が行ってもよい。デコードはページ全体を一括して行ってＲＡＭに展開してもよいが、搭載ＲＡＭ容量の節約のため、後段の画像処理からのリクエストに応じて、短いバンド単位のデータを随時デコードしてＲＡＭ上への展開を更新してもよい。デコードされた結果はＲＧＢの各色成分が８ビットの多値カラー画像となってＲＡＭ２０２に展開（格納）される。
【００４２】
次に、ステップＳ２３０にて、ＣＰＵ２０４は多値カラー画像に対して画像処理を行う。ここでの画像処理については、図５を用いて後述する。画像処理の結果は、ＣＭＹＫの各色成分に対し４ビット（１６階調）の多値インク色画像データとしてＲＡＭ２０２上へ展開される。
【００４３】
ステップＳ２４０にて、ＣＰＵ２０４は、多値インク色画像データから記録ヘッド２０５の各ノズルの駆動用信号として利用される記録用画像データの生成処理を行う。ここでの生成処理については、図６を用いて後述する。記録用画像データは、各色成分につきインクを吐出する／しない表す１ビット（２値データ）であり、やはりＲＡＭ２０２上に展開される。また、ＣＰＵ２０４は、その際にデータの並び順についても、ヘッド装置に転送時に紙面上に画像を正しい方向に形成するように整列した上でＲＡＭ２０２に格納する。
【００４４】
ステップＳ２５０にて、ＣＰＵ２０４は、記録ヘッド２０５に送信可能な状態で配置された記録用画像データをデータ転送し、記録ヘッド２０５とフィーダを駆動して印刷処理を行う。ここでの印刷処理については、図７を用いて後述する。
【００４５】
次に、ステップＳ２３０における画像処理を図５を用いて説明する。
【００４６】
ＣＰＵ２０４は、デコードされたＲＧＢ形式の多値カラー画像に対し、プリンタ内の画像処理装置の記録色空間へと色空間変換を行う（ステップＳ５１０）。記録色空間としては、通常プリンタの印刷表現可能な色域（ガマット）を表した色空間定義が用いられる。この色変換の過程で、プリンタの色域外の入力色については適切な出力色に圧縮される（ガマット圧縮）。
【００４７】
次にＣＰＵ２０４は、ステップＳ５２０にて、上記の色変換後のＹＭＣＫの多値カラー画像に対し、プリンタの搭載するインク色を用いた多値情報に色分解する。例えば、Ｃ，Ｍ，Ｙ，Ｋの４色を用いたプリンタの場合、ＲＧＢ（０，０，０）の黒色はＣＭＹＫ（０，０，０，２５５）に、ＲＧＢ（２５５，０，０）の赤色はＣＭＹＫ（０，２５５，２５５，０）に、など適宜変換される。かかる変換は、演算で行っても良いし、テーブルを利用しても良い。
【００４８】
そして、ＣＰＵ２０４は、ステップＳ５３０にて、色分解後の各インク色の信号値を階調補正する。ここで階調補正を行う目的は次のとおりである。通常、インクジェットプリンタでは、インクを単位面積あたりに多く吐出すればするほど、そのインクの色が強く紙面上に現れる。しかし、インクの吐出数とその紙面上での発色性（分光反射率やＬａｂ値など）は非線形の応答特性を持っている。これを補正するため、階調補正を行う。
【００４９】
ＣＰＵ２０４は、ステップＳ５４０にて、階調補正後の各インク色の信号値を量子化する。量子化することにより、インクの紙面上の単位面積当たりのドット吐出レベルが決定する。なお、ドット吐出発数が１の場合は、ここでの量子化結果がそのままドット吐出有無に対応する（２値化）。ドット吐出発数が２以上の場合、ここでは吐出レベルのみが決定され、後述のインデクス展開で実際の吐出有無と発数が確定する。
【００５０】
量子化方式としてどのような方式を採用しても良いが、特にディザ方式などの、画素間での情報伝達を必要としない量子化方法を取ることで、並列化のための領域区分の設定自由度が高くなるため、より有効である。
【００５１】
次に、先に説明したステップＳ２４０における記録用画像データの生成処理を図６を用いて説明する。
【００５２】
ＣＰＵ２０４は、ステップＳ６１０にて、量子化後の吐出レベル値をもとに、実際の吐出有無と発数を決定する。インデクス展開時は、周知の技術を利用すればよく、たとえばあらかじめ量子化レベルに応じたドット配置をテーブルとして記憶しておいて、量子化レベルに基づいてドット配置（打つ／打たないの２値）を決めればよい。
【００５３】
このインデクス展開によって、紙面上への最終的なドット配置先が決定する。例えば、紙面上に１２００ｄｐｉ＊１２００ｄｐｉの解像度でドット配置が可能なヘッドにおいて、紙面を１２００ｄｐｉ＊１２００ｄｐｉの格子に区切った各座標に対し、ドットを配置するか否かが決定する。
【００５４】
シリアルヘッドインクジェットプリンタでは、印刷時のドットの着弾精度によって、位置ずれに起因する色むらやスジが画質低下を引き起こす。これを回避するため、紙面上を一度の走査で印刷（１パス印刷）せず、複数回の走査に分けて印刷（マルチパス記録またはマルチパス印刷）することが有効である。この処理はパス分解処理と呼ばれる。ＣＰＵ２０４は、ステップＳ６２０にて、このパス分解処理を行う。なお、パスの分解方法によっても、さまざまな種類の位置ずれに対する対策が可能であり、これら手法はすでに周知の技術として発明提案されているものを適宜利用すればよい。
【００５５】
上記までの画像処理は、通常は紙面に対しラスター方向に画像を走査し、同方向に処理結果をＲＡＭ上に配置することで行っている。これに対し、実際にヘッドに対して情報を転送する際には、ヘッドが受け付ける方向（例えばカラム方向）に画像を再配置する必要がある。この処理をＨ／Ｖ変換と呼ぶ。ＣＰＵ２０４は、ステップＳ６３０にて、ＲＡＭ２０２に対するメモリアクセスを行い、このＨ／Ｖ変換を行う。または、処理を高速化するために専用のハードウェアを介し、ラスター方向に配置された画像を直接バースト転送により入力し、ハードウェア上のＳＲＡＭにて再配置を行い、再配置結果をそのままヘッド装置に直接転送するようにしてもよい。
【００５６】
次に、ステップＳ２５０の印刷処理を図７を参照して説明する。同図は、一般的なシリアルヘッドを搭載したインクジェットプリンタにおける記録部の構成を示す図である。記録部は、紙送りの装置として給紙シャフト７０１と排紙シャフト７０２を持つ。ニップ装置（図示せず）を介してニップした印刷用紙７０７に対してシャフトが回転することで印刷用紙を任意の線速度で紙送り（フィード）することが可能である。
【００５７】
インクタンク７０４はキャリッジ７０５上に設置され、各色インクがキャリッジ７０５内の流路（図示せず）を通ってＹＭＣＫの各記録色の記録ヘッド２０５に供給される。吐出ヘッド２５０は通信ケーブル（図示せず）を介してプリンタのバス２０７に接続され、前述のＨ／Ｖ変換後の画像情報とヘッド吐出制御情報を受け取ることで、任意のタイミングで吐出制御を行う。ヘッド上のヒータ（図示せず）を加熱することにより、インクは急速に加熱され、膜沸騰により気体を形成し、この気泡生成の圧力によりインク滴が記録媒体に向かって吐出される。なお、ヘッド上のピエゾ素子（図示せず）を駆動することにより、振動板を変位させて、この変位による圧力変化によりインク滴が記録媒体に向かって吐出させても構わない。
【００５８】
記録ヘッド２０５上には、各色毎に、例えば６００ｄｐｉ間隔で５１２ノズルの吐出ノズルが一列ずつ並んでおり、各ノズルに対し独立に吐出有無を制御可能である。これにより、キャリッジ７０５の１回の走査運動で、例えば０．８５インチの高さに対し吐出が可能である。キャリッジ７０５はガイドレール７０３に接続されており、ガイドレールの動作により、印刷用紙の紙面上の任意の水平位置に移動可能である。なお、図７における「ｘ：キャリッジ走査方向」と書いた点線矢印はキャリッジ７０５の走査運動方向を表し、一般に主走査方向と呼ばれる。また、「ｙ：搬送方向」と書いた点線矢印は、ｘ軸に対して直交する方向（交差方向）で、用紙７０７の搬送方向を表し、一般には副走査方向と呼ばれる。なお、ガイドレール、シャフトそれぞれを駆動するモータ（図示せず）は通信ケーブルを介してプリンタのＩ／Ｆに接続され、ＣＰＵ２０４やＤＳＰ２０６からの制御信号を受け取って任意の加速度で加減速が可能である。
【００５９】
シリアルインクジェットプリンタは、キャリッジ７０５の移動と印刷用紙（記録媒体）の移動（搬送）を組み合わせることで、紙面上の任意の位置にヘッドを移動し、インクを吐出可能である。
【００６０】
例えば、Ａ４用紙（約８．５インチ幅×１１インチ高さ）に対して全面を印刷する場合、キャリッジを左右端に移動しながらインク吐出することで、８．５インチ幅×０．８５インチ高さの領域に対して印刷を行う。その後、用紙を０．８５インチ先に送り、再度キャリッジ移動およびインク吐出を行う。これらの繰り返しにより、１パス印刷であれば合計１３回の印刷走査によって印刷を完了する。前述のマルチパス記録を行う場合、例えば４パスで紙面上を４回に分けて印刷する際には、フィードの移動量を０．２１インチに設定し、合計５２回の印刷走査を行うことになる。
【００６１】
また、印刷対象画像のレイアウトによっては、より少ない移動距離で印刷を行うことも可能である。例えば、図８（ａ）のようなレイアウトの画像に対しては、余白領域のスキャン幅やフィード量を制御することによって、例えば図８（ｂ）で短冊に示した領域の印刷走査によって、不要部分の移動をカットして１２回の印刷走査で印刷を完了できる。
なお、ここで図中の「ｘ：キャリッジ走査方向」「ｙ：搬送方向」のそれぞれの点線矢印は、図７で示したものと同じ方向を表している。
【００６２】
このように、キャリッジの移動と用紙の搬送の制御による印刷走査シーケンスを適切に設定することで、総印刷時間をより短く抑えることが可能である。このような制御は、特にオフィス文書などの余白を多く含む印刷画像に対して有効であり、これら文書を印刷するユーザに対して特に利便性をもたらす。以上が従来からの一般的なプリンタにおける印刷処理を説明した。
【００６３】
ここで注意すべき点として、紙面上へのドット配置はキャリッジ移動中に確実に行う必要がある。言い換えると、リアルタイムで吐出可能なようにデータを供給する必要がある。これに対応するため、通常は印刷走査の１走査運動分のデータバッファを用意し、データバッファの完成後に、ヘッドに対して印刷データをバースト転送などの十分高速な手段で転送を行う。プリンタのＣＰＵ２０４は印刷制御や画像処理以外にも様々な処理が実行されており、リアルタイムＯＳなどのＯＳ環境上でこれらがマルチタスク実行されている。この中でも、印刷制御はもっともリアルタイム性を問われるタスクであり、ＯＳ上でのタスク優先度を高く設定することで、印刷制御が予定時間内に完了するように指示する。
【００６４】
なお、各走査間のフィードについては、必要であればデータバッファの完成を待って動作させるように待機することも可能である。
【００６５】
しかし、各走査間のフィード時間がバラバラになってしまうと、印刷処理自体は行われるが、印刷画質にとっては悪い影響を与える。インクジェットプリンタのインクは通常、染料と溶剤で構成されており、紙面上に着弾後に溶剤が紙面内に浸透や蒸発し、染料が紙面上に定着することで印刷がされる。この時、染料の定着位置は周辺の染料や溶剤の含有量により影響を受け、その結果は定着後の発色のされ方に影響を及ぼす。
【００６６】
各走査間の隣接領域におけるインク間でも、このような影響は無視できない。そのため、インクジェットプリンタの画像設計においては、あらかじめこれら各走査間の隣接領域の影響を考慮して、隣接領域におけるドット配置や吐出発数を制御している。例えば、この影響により、各走査の中心領域よりも濃く発色されてしまう場合、各走査の中心領域に対してあえて少ない吐出発数で吐出することで、定着後には中心領域／隣接領域ともに同様の発色となるように制御している。
【００６７】
これに対し、各走査間のフィード時間がバラバラになってしまうと、各走査間の隣接領域の影響がバラバラになってしまい、一律に制御できず、一部の領域では発色むらやスジとして画質低下が発生してしまう。
【００６８】
これを防ぐために、データバッファを２走査分用意（ダブルバッファ）して、現在の印刷走査を実行時に、次の印刷走査のためのデータを供給するなどの処置を行う。不測の事態によりデータ供給が途絶えることを想定して、３走査以上の領域を用意してもよい。ただし、バッファを多く用意すればするほど、印刷装置のコストに影響を与える。
【００６９】
印刷走査のためのデータを安定して供給するためには、デコード、画像処理、印刷データ設定などの各処理を、印刷速度よりも速い速度で実行する必要がある。また、前述したように、印刷速度をより速くするためには、例えば図８（ｂ）のような印刷走査シーケンスを設定する場合がある。
【００７０】
このような場合にも、各処理を印刷速度よりも速い速度で実行する必要がある。例えば、図８（ｂ）の１スキャン目では、紙面の左半分のみの領域しか印刷しないため、通常の紙面全幅の印刷速度のおおむね２倍の速度で印刷が完了する。そのため、該当領域に対するデコード、画像処理、印刷データ設定などの各処理も同様に二倍の速度で実施する必要がある。処理対象の画素数も半分になっているため、画素単位の処理についてはその分短時間で行うことも可能であるが、各種設定処理やＤＳＰに対する割り込み制御などの処理は所要時間が固定されているため、これを考慮する必要がある場合もある。
【００７１】
なお、図８（ｂ）のように印刷走査シーケンスを設定した場合、各走査の所要時間が走査間で異なることになる。これは、前述のフィード時間のばらつきの発生に比べれば小さいオーダの差異であり、通常、この各走査間の所要時間ばらつきに起因して画質低下が発生することは少ない。また、各走査の所要時間は各走査の左右端位置によって決定されるため、あらかじめこれを考慮してドット配置を補正することにより、画質低下の発生を防ぐことは可能である。
【００７２】
以上、実施形態における前提となる技術の説明を行った。次に、本発明に係る実施形態を説明する。実施形態では、複数のＡＳＩＣが互いに別々の領域に対して並列に処理を行うものである。
【００７３】
［第１の実施形態］
既に説明したように。記録ヘッド２０５は、各色毎に、図７のｙ軸に沿って一列に並ぶ５１２個のノズルで構成される。本第１の実施形態では、５１２個のノズルをちょうど真ん中で分けて、キャリッジの１回の走査運動で記録される幅の１／２ずつの記録用画像データを、２つのＡＳＩＣで並列化処理して生成するものである。そして、それら２つのＡＳＩＣを総轄して制御するもう１つのＡＳＩＣを有する。後者のＡＳＩＣをマスタＡＳＩＣ、前者２の２つのＡＳＩＣをスレーブＡＳＩＣと称する。
【００７４】
単一ユニットで記録する場合の処理は図２であったが、本第１の実施形態における処理は図３のフローチャートに示すようになる。図３において、ステップＳ３６０はスレーブＡＳＩＣが行う処理であり、それ以外のステップはマスタＡＳＩＣが行うものである。
【００７５】
なお、単一処理のときと同様の処理を行う処理ステップについての説明は省略する。ここで、本第１の実施形態におけるプリンタの具体的な構成は、図１０のような構成を考える。ここでは、ＲＯＭ，ＲＡＭ，Ｉ／Ｆ，ＣＰＵ，ＤＳＰをバス接続したものを一つのＡＳＩＣとしてパッケージングしており、３つのＡＳＩＣがＩ／Ｆを介してスター接続されている。符号１０００がマスタＡＳＩＣ、符号１０１０、１０２０がスレーブＡＳＩＣである。マスタＡＳＩＣ１０００は画像処理以外のすべての処理を担当し、プリンタ２００の外部Ｉ／Ｆを介した通信とヘッドとの通信と各スレーブＡＳＩＣ１０１０，１０２０の制御を担当している。スレーブＡＳＩＣ１０１０，１０２０は画像処理のみを担当し、マスタＡＳＩＣ１０００から割り当てられた画像領域に対する画像処理を並列で実行する。
【００７６】
なお、並列化の単位、接続形態はこれに限ったものではない。例えば、各ＡＳＩＣ間の接続形態はスター接続に限らず、ディジーチェーン接続などでもよい。マスタＡＳＩＣ１０００に対して各々のスレーブＡＳＩＣ１０１０，１０２０が通信できる経路が用意されていれば、物理的な接続構成はいかなるものでも構わない。また、単一のＡＳＩＣ内に複数のＣＰＵを搭載し、マスタＣＰＵとスレーブＣＰＵとしてもよい。特に画像処理の主担当としてＤＳＰを使用しているのであれば、ＤＳＰを複数搭載し、マスタＣＰＵからこれら複数ＤＳＰを「スレーブＤＳＰ」として利用する形態をとっていてもよい。
【００７７】
また、マスタＡＳＩＣ１０００とスレーブＡＳＩＣ１０１０、１０２０で実行する処理の特性に合わせて、異なるＡＳＩＣを採用してもよい。例えば、マスタＡＳＩＣ１０００は外部との通信や印刷対象画像ファイルのレンダリング／デコードなどの主担当とするため、様々な入力を柔軟に受け付けるために、ＣＰＵやＧＰＧＰＵ（汎用ＧＰＵ）などを強化してプログラマブルな計算資源を充実させてもよい。また、スレーブＡＳＩＣ１０１０，１０２０はあらかじめ規定された画像処理を高速に行うことに主眼を置き、専用の画像処理ＨＷを実装した構成としてもよい。
【００７８】
また、マスタＡＳＩＣ１０００自身もスレーブＡＳＩＣ１０１０，１０２０とともに画像処理を並列実行してもよい。この場合、マスタＡＳＩＣ１０００はスレーブＡＳＩＣの１つとしても機能することになる。
【００７９】
ステップＳ３１０では、マスタＡＳＩＣ１０００が図２のステップＳ２１０と同様に、ホスト１００から印刷データを取得する。ステップＳ３２０では、マスタＡＳＩＣ１０００が、図２のステップＳ２２０と同様に、印刷データに含まれる符号化画像データ（ＪＰＥＧ画像データ）のデコード処理（復号処理）を行う。そして、ステップＳ３３０にて、マスタＡＳＩＣ１０００は、印刷領域（又は記録領域）の評価を行う。かかる印刷領域の評価処理を以下に説明する。
【００８０】
マスタＡＳＩＣ１０００は、デコードして得られた多値カラー画像に対して解析を行い、紙面上のどの位置に印刷が行われるかの評価を行う。具体的には、８ビットＲＧＢの各画素値を評価して、（２５５，２５５，２５５）で構成される画素は「白画素」と解釈する。それ以外の領域を「非白画素」とする。白画素は、その画素位置にはインクを吐出しないことを意味する。そして、非白画素は、その画素位置には何らかのインクが吐出されて有意なドットが用紙上に生成されることを意味する。それ故、マスタＡＳＩＣ１０００は、記録ヘッド２０５のスキャン幅を考慮して、各スキャンにおけるキャリッジ移動範囲を評価する。記録ヘッド２０５のスキャン幅の内部での各ラスターに存在する「非白画素」の左端／右端位置を抽出する。そして、全ラスターの左端の中で最も左に位置するもののＸ座標をスキャン左端、全ラスターの右端の中で最も右に位置するもののＸ座標をスキャン右端とする。そして、ここで決定したスキャン左端と右端で規定される両端間で示される領域を、１スキャンで記録する印刷範囲として決定する。
【００８１】
なお、スキャン左端とスキャン右端の間に空白領域が含まれる場合もある。例えば、図８（ａ）において、紙面下部に「Ａ...            gfgfg」という文字列の記載がある。文字列の中ほどには空白領域が存在しているが、このような領域についてはヘッドはそのままスキャン動作することになるので、この空白領域は印刷領域に含まれる。
【００８２】
１スキャンの左右端の位置が定まったら、次スキャンの開始ラスターを決定する。現在のスキャンの次ラスター以降について、１ライン中に一画素でも「非白画素」が存在するラスターを開始ラスターとして、そこからヘッドのスキャン高さの幅の短冊領域に対して同様に評価を行う。こうして、記録ヘッドの各走査運動の移動範囲と記録媒体の搬送量を規定する情報はシーケンス情報として、例えばＲＡＭに格納していく。
【００８３】
このように順次評価を行っていって、各スキャンごとの印刷領域を決定していく。例えば、図８（ａ）のような画像に対しては図８（ｂ）のように印刷領域を決定していく。
【００８４】
なお、ヘッド駆動の制約や特性により、これと異なる方式で左端右端を決定してもよい。例えば、実際のキャリッジ移動時には、往路方向の右端部と、それに続く復路方向の右端部は同一位置となることが考えられる。同様に、復路方向の左端部と、それに続く往路方向の右端部は同一位置となることが考えられる。キャリッジが移動方向を反転する際には加減速を伴うため、方向反転を最小限に抑えるためにはこのような移動シーケンスが好ましい。この場合、例えば、図８（ａ）のような画像に対しては図８（ｂ）のように印刷領域を決定する。
【００８５】
その他、シリアルヘッドの効率的な動作については既に多くの技術が公知である。これら技術を用いてヘッドシーケンスを定めているような場合においても、そのヘッドシーケンスに応じて分割領域を定めることで、本発明による効果を得られる。
【００８６】
本ステップＳ３３０における処理は、デコード後のビットマップ画像に対して行う以外の方法によってもよい。例えば、ホストからプリンタへ送信する印刷ジョブ情報の中に、画像データそのものに加えて、画像データ中の各ラインの非白領域の左端ｘ座標、右端ｘ座標をそれぞれ付加しておき、これを参照してもよい。画素のｘ座標は１６ビットt値で十分表現可能であり、左端、右端をあわせても各ライン４バイトの情報量で表現できる。また、各行の左端ｘ座標、右端ｘ座標にはある程度の相関も期待できるため、可逆圧縮も効果的に利用できる。以上を考えると、少ない付加情報で本ステップの処理を大幅に省力化できる。
【００８７】
または、デコード処理時に本ステップに相当する処理を同時実行してもよい。デコード処理でビットマップ画像を出力する過程で画素値の白画素評価と左右端判定を行うことにより、デコード結果のビットマップ画像に対する再度のメモリアクセスを省略可能となる。
【００８８】
または、プレデコード処理として、デコード結果のビットマップ画像を出力せず、画素値の白画素評価と左右端判定のみを行う処理を用意し、これを利用してもよい。
【００８９】
以上のように、ジョブ取得やデコード処理に連携して本ステップを行った場合、これら連携処理に対応した特定のジョブ形式/エンコード形式を利用することが必須となる。その引き換えとして、ビットマップ画像の全画素へのメモリアクセス処理を不要とし、処理負荷を大幅に低減可能となる。
【００９０】
次に、マスタＡＳＩＣ１０００は、ステップＳ３４０にて、並列分割領域の決定を行う。すなわち、上記ステップＳ３３０で決定した各スキャンごとの印刷領域に対して、それら領域中のどの部分をスレーブＡＳＩＣ１０１０、１０２０にそれぞれ割り当てるかを決定する。
【００９１】
本第１の実施形態では、印刷領域における各ＡＳＩＣの処理並列度を高めるための分割方法として、各スレーブＡＳＩＣに対してヘッドの１走査運動分の印刷領域について上下に均等分割する方式を採用する。シリアルヘッドの１走査運動分の領域については、画像の形状によらず一定の画像幅で印刷処理される。言い換えると、この領域内での印刷処理は一定速度で行われる。つまり、この単位で上下均等分割をすれば、画像の形状によらず均等に画像処理負荷を分散できる。
【００９２】
図８（ｂ）の印刷領域に対して、この方式で並列分割領域を決定した結果は図１１のようになる。図中で太枠矩形で囲まれた領域(a)はスレーブＡＳＩＣ１０１０が、細枠矩形で囲まれた領域(b)はスレーブＡＳＩＣ１０２０が、それぞれ担当することになる。
【００９３】
本ステップにおける処理は、ホスト上であらかじめ行ってもよい。特に、ホストが送信先のプリンタの印刷デバイス構成や並列化構成などをあらかじめわかっている場合においては、このようにすることでプリンタ側の処理負荷を大幅に軽減できる。その場合、例えばホストからプリンタへ送信する印刷ジョブ情報の中に、画像データそのものに加えて、各画像データのどの領域を、どのスレーブＡＳＩＣで実施させるかをそれぞれ付加しておいてもよい。これにより、プリンタ側では、送信された画像を解析することなく、各スレーブＡＳＩＣに順次割り当てることが可能となる。
【００９４】
ステップＳ３５０では、マスタＡＳＩＣ１０００は、デコードして得られた画像データの、上記のようにして決定した領域のデータをスレーブＡＳＩＣ１０１０，１０２０それぞれに転送（もしくは分配）し、各々に、それぞれが必要な処理を行わせる。具体的には以下の手順を取る。
【００９５】
マスタＡＳＩＣ１０００は、スレーブＡＳＩＣ１０１０に対して画像転送開始を通知する。スレーブＡＳＩＣ１０１０は、画像転送の受信準備を行ったうえで画像転送可能な旨の応答を行う。マスタＡＳＩＣ１０００のＲＡＭ領域から、スレーブＡＳＩＣ１０１０に転送が必要な画像領域を抽出し、各々の領域を示すタグ情報と組み合わせてスレーブＡＳＩＣ１０１０に対してＩ／Ｆを介して転送する。ここでタグ情報には、各領域の領域区分ＩＤ，領域の幅、高さ、紙面上の絶対座標などを含む。これらは、スレーブＡＳＩＣ１０１０が各領域の画像処理を行う際の各種画像処理設定のために必要となる。スレーブＡＳＩＣ１０１０は、これら情報を受信し、自身のＲＡＭ領域に格納する。転送完了後、マスタＡＳＩＣ１０００からスレーブＡＳＩＣ１０１０に対して、画像処理開始依頼の通知を行う。スレーブＡＡＳＩＣ１０１０は、これを受けて画像処理を開始する。同様の手順が、マスタＡＳＩＣ１０００とスレーブＡＳＩＣ１０２０との間でも行われる。
【００９６】
ステップＳ３６０にて、スレーブＡＳＩＣ１０１０、１０２０は自身の担当する画像領域に対して、画像処理を行う。ここで、スレーブＡＳＩＣ１０１０，１０２０は、マスタＡＳＩＣ１０００から渡されたタグ情報を用いて、各領域の画像処理を行う。例えば、量子化方法としてディザ方式を用いる場合、タグ情報に含まれる「紙面上の絶対座標」をもとにディザパターンの参照位置を決定する。従って、スレーブＡＳＩＣ１０１０、１０２０で処理する領域の境界において、画質の不連続性は発生しない。
【００９７】
また、ステップＳＳ３７０では、スレーブＡＳＩＣ１０１０，１０２０からマスタＡＳＩＣ１０００へと、処理後のデータを転送する。具体的には以下の手順を取る。
【００９８】
スレーブＡＳＩＣ１０１０，１０２０は、自身の処理が完了したことをマスタＡＳＩＣに対して通知する。ここでは、スレーブ１０１０からマスタＡＳＩＣ１０００に通知を行った場合を例に説明する。
【００９９】
通知を受けたマスタＡＳＩＣ１０００は、スレーブＡＳＩＣ１０１０に対して画像転送依頼を通知する。スレーブＡＳＩＣ１０１０は、自身の担当した各画像領域における量子化処理の結果の画像情報を、それぞれの領域に対応したタグ情報と組み合わせてマスタＡＳＩＣ１０００に対してＩ／Ｆを介して転送する。ここでタグ情報には、少なくとも各領域の領域区分ＩＤを含む。領域区分を実行したのはマスタＡＳＩＣ１０００であるため、各領域の領域区分ＩＤさえ特定できれば、その領域に付随するその他の情報（領域の幅、高さ、紙面上の絶対座標など）はマスタＡＳＩＣ１０００自身で導出できる。マスタＡＳＩＣ１０００は、これら情報を受信し、自身のＲＡＭ領域に格納する。転送完了後、スレーブＡＳＩＣ１０１０からマスタＡＳＩＣ１０００に対して、転送完了の通知を行う。以上を繰り返し、スレーブＡＳＩＣ１０１０からマスタＡＳＩＣ１０００への転送が行われる。スレーブＡＳＩＣ１０２０からマスタＡＳＩＣ１０００への転送も実質的に同じ手順を踏む。
【０１００】
ステップＳ３８０にて、マスタＡＳＩＣ１０００は転送後の画像を結合する。すなわち、マスタＡＳＩＣ１０００は、上記のステップＳ３７０で受信した各画像を結合し、記録ヘッドの１スキャン分の画像を、元の画像の絶対座標位置に対応する形でＲＡＭ領域に再配置する。または、Ｓ３７０での受信時に、受信後に格納するＲＡＭ領域を再配置先に対応させることで、本ステップを省略してもよい。この場合、ＲＡＭアクセスをその分削減できる。
【０１０１】
ステップＳ３９０にて、マスタＡＳＩＣ１０００は、先に説明したステップＳ２４０と同様に、各インク色の記録用画像データを生成する。そして、ステップＳ３９９にて、マスタＡＳＩＣ１０００は、先に説明したステップＳ２５０）と同様に、記録ヘッドを駆動制御する処理を行い、印刷処理を行う。
【０１０２】
以上、ステップＳ３３０からＳ３９９までの処理を、記録ヘッドの１スキャン分の単位で繰り返し行う。
【０１０３】
上記のように本第１の実施形態によれば、どのような印刷データであっても、２つのＡＳＩＣ（実施形態におけるスレーブＡＳＩＣ１０１０，１０２０）に係る負担は実質的に同じとすることが可能となる。それ故、高い効率で並列化処理を実現できるようになり、画質を損ねることなく安価で高速なシリアルヘッドインクジェットプリンタを提供できる。
【０１０４】
なお、上記では画像処理のみを並列化対象としたが、他の処理を含めた形で並列化してもよい。例えば、画像処理、印刷データ生成の両者を並列化してもよく、その場合には各スレーブは画像処理後の印刷データ生成を行った後に、印刷データをマスタに転送することになる。
【０１０５】
また、各スレーブＡＳＩＣ１０１０，１０２０では重複する処理を行う形態としてもよい。例えば、デコード、印刷領域評価、並列分割領域決定の３つのステップについて、各スレーブに重複して処理させてもよい。この場合の処理フローとしては、例えば図４のようになる。以下に各ステップを説明する。
【０１０６】
ステップＳ４１０にて、マスタＡＳＩＣ１０００が、先に説明したステップＳ３１０と同様、印刷データをホスト１００より取得する。そして、ステップＳ４２０にて、マスタＡＳＩＣ１０００は、取得した印刷データをスレーブＡＳＩＣ１０１０，１０２０へ転送する。この場合、すべてのスレーブＡＳＩＣ（実施形態では２つ）に同じデータを転送するため、マルチキャスト転送などにより一斉送信を行ってもよい。
【０１０７】
ステップＳ４３０乃至Ｓ４６０は、スレーブＡＳＩＣ１０１０，１０２０がそれぞれ全く同じ処理を重複して行うものである。ステップＳ４３０では、スレーブＡＳＩＣ１０１０，１０２０それぞれが受信した印刷データに対するデコード処理を行う。ステップＳ４４０にて、スレーブＡＳＩＣ１０１０，１０２０は、先に説明したステップＳ３３０と同様に、印刷領域の評価処理を行う。そして、ステップＳ４４０にて、スレーブＡＳＩＣ１０１０，１０２０は、ステップＳ３４０と同様に、並列分割領域を決定する処理を行う。そして、ステップＳ４６０にて、スレーブＡＳＩＣ１０１０，１０２０は、先に説明したステップＳ３６０と同様に、自身が担当する領域に対して画像処理を行う。このステップＳ４６０の処理については、各スレーブＡＳＩＣ１０１０，１０２０は、ステップＳ４５０で決定した領域の中で自身が担当する領域のみの処理を行うので、処理そのものは同じであるが、処理対象の画像データは異なる。
【０１０８】
ステップＳ４７０にて、先に説明したステップＳ３７０と同様に、マスタＡＳＩＣ１０００が、スレーブＡＳＩＣ１０１０，１０２０から処理後のデータを受信する。その後、マスタＡＳＩＣ１０００は、先に説明したステップＳ３８０と同様に、スレーブＡＳＩＣ１０１０，１０２０から受信した処理後の画像データの結合処理を行う。そして、ステップＳ４９０にて、マスタＡＳＩＣ１０００は、ステップＳ３９０と同様に、各インク色の記録用画像データを生成する。そして、ステップＳ４９９にて、マスタＡＳＩＣ１０００は、記録ヘッドの駆動制御の処理を行い、印刷処理を行う。
【０１０９】
上記のように、スレーブＡＳＩＣ１０１０，１０２０が重複して処理を行わせることにより、各スレーブの処理量はその分増加するものの、デコード前の圧縮されたデータを転送すればよいため、転送量の節約が可能となる。各ＡＳＩＣ間の転送帯域が十分に確保できない製品構成などにおいて、特に有効となる。
【０１１０】
また、本実施形態では、スレーブＡＳＩＣ１０１０，１０２０の２つを用意することで、２並列の処理の例を説明したが、スレーブＡＳＩＣの個数が３以上の場合においても同様の効果を得ることができる。
【０１１１】
また、本実施形態では、ステップＳ３４０にて、画像領域を均等分割にすることで負荷を均等分散させる、としたが、各画素においての処理負荷が一律でない場合においては、それを考慮して負荷を分散させてもよい。例えば、画像の画素オブジェクトの種類が「文字」の場合と「自然画」の場合で色処理内容が異なり、「自然画」の色処理においては高精度な処理を行うために処理負荷が２倍かかるような画像処理を想定する。この場合、単純に画像領域を二分割してしまうと、例えば片方の領域Ａはすべて「文字」で構成され、もう片方の領域Ｂはすべて「自然画」で構成された場合には、領域Ｂの処理負荷は領域Ａの２倍となってしまう。このような画像処理の系においては、各画素に対して処理負荷の重みを考慮したうえで、処理負荷の総計量が各領域で等分されるように領域分割を行えばよい。また、各スレーブＡＳＩＣの処理能力が異なる場合においては、画像領域を均等分割するのではなく、処理能力に比例して分割させてもよい。
【０１１２】
［第２の実施形態］
上記第１の実施形態では、記録ヘッドの１走査運動で記録される領域を、用紙の搬送方向に対してＮ分割し、各分割領域の画像処理をＮ個のＡＳＩＣで行うものであった。本第２の実施形態では、記録ヘッドの１走査運動で記録される領域を、記録ヘッドの走査運動に沿ってＮ分割し、Ｎ個のＡＳＩＣで処理する例を説明する。ここでも説明を簡単なものとするため、Ｎ＝２の例を説明する。
【０１１３】
本第２の実施形態の場合の処理で特徴的な部分は、図３のフローチャートにおけるステップＳ３４０となる。それ以外は、第１の実施形態と同じである。
【０１１４】
シリアルヘッドの１走査運動分の領域については、画像の形状によらず一定の画像幅で印刷処理される。言い換えると、この領域内での印刷処理は一定速度で行われる。つまり、この単位で左右均等分割をすれば、画像の形状によらず均等に画像処理負荷を分散できることになる。
【０１１５】
図８（ｂ）の印刷領域に対して、本第２の実施形態におけるステップＳ３４０における並列分割領域の決定処理で決定した結果は図１２のようになる。
【０１１６】
図示における太枠矩形で囲まれた領域（a）はスレーブＡＳＩＣ１０１０が、細枠矩形で囲まれた領域(b)はスレーブＡＳＩＣ１０２０が、それぞれ担当することになる。第１の実施形態では、記録ヘッドのヘッドスキャン単位で上下に均等分割して並列化を行っていたが、この場合の並列化数は最大でもヘッドスキャン高さの画素数に限定される。例えば、６００ＤＰＩ×５１２ノズル構成のヘッドの場合、最大でも５１２並列までに限定される。これに対し、本第２の実施形態の方式をとると、並列化数は最大でヘッドスキャン幅の全幅分までとることができる。６００ＤＰＩでＡ４画像を印刷する場合、全幅の画素数は約５０００画素になり、最大で５０００並列までの並列化が可能となる。
【０１１７】
［第３の実施形態］
上記第１、第２の実施形態では、記録ヘッドの１走査領域に対して上下または左右に均等分割することで並列化を行ったが、本第３の実施形態では異なる分割方法を提案する。第１、第２の実施形態と根なる点は、図３におけるステップＳ４８０の処理が不要になる点と、同ステップＳ３４０の処理内容である。このステップＳ３４０では、マスタＡＳＩＣ１０００は、ステップＳ３３０で決定した印刷領域に対して、領域中のどの部分をスレーブＡＳＩＣ１０１０，１０２０それぞれ割り当てるかを決定する。
【０１１８】
本第３の実施形態では、印刷領域における各ＡＳＩＣの処理並列度を高めるための分割方法として以下のルールに基づいて分割を行う。
（ｉ）印刷走査における１走査運動分の領域については、単一のスレーブＡＳＩＣに担当させる。（第２の実施形態では、１走査運動分の領域を左右均等分割としていた）
（ii）印刷走査領域について、紙面の上部から順に１走査運動ずつ担当ＡＳＩＣを決定していく。その際、担当ＡＳＩＣの処理画素数を計数し、その計数の合計が所定量に達するまでは、連続する複数の走査領域を単一のＡＳＩＣに担当させる。本第３の実施形態では、「所定量」を、「１走査運動分のヘッド高さ＊紙幅全幅」の領域の画素数を設定した。
（iii）所定量に達した場合には、他のＡＳＩＣに担当させる。他のＡＳＩＣの担当する領域についても、同様に処理画素数の合計を基準にして決定する。
【０１１９】
ここで、ｉ番目の走査領域の画素数をＮ（ｉ）、「所定量」を表す閾値をＴｈとし、上記をより明確に表現するのであれば以下の通りである。
『ΣＮ（ｉ）≦Ｔｈ（ただし、ｉ＝１、２、…）である限り、１つのスレーブＡＳＩＣが担当するものとして決定していく。そして、ｋ番目の走査領域の画素数Ｎ（ｋ）について、ΣＮ（ｋ）＞Ｔｈとなったとき、そのｋ番目の走査領域を起点として別のスレーブＡＳＩＣが担当するものとして決定する。以下、この繰り返しである。』
上記を別の表現で示すなら、次の通りである。
【０１２０】
前記分割領域決定手段は、記録ヘッドの１走査運動で記録されることになる画素数を求め、各走査運動を単位に累積加算していく。この過程で、着目走査運動で記録される画素数の累積加算によって、閾値に達した場合、累積加算を開始した走査運動から着目走査運動までの領域を、１つの処理ユニットが分担する分割領域として決定する。そして、次の処理ユニットに分担する分割領域を決定するために、着目走査運動の次の走査運動から再び累積加算を開始するために、累積加算結果をリセットする。
【０１２１】
図８（ｂ）の印刷領域に対して、本第３の実施形態の方式で並列分割領域を決定した結果は図１３のようになる。図中で太枠矩形で囲まれた領域(a)はスレーブＡＳＩＣ１０１０が、細枠矩形で囲まれた領域(b)はスレーブＡＳＩＣ１０２０が、それぞれ担当することになる。
【０１２２】
このようにすることで、ヘッドの１走査運動中は単一のＡＳＩＣでの処理に限定しながら、処理負荷の均等分散が可能となる。並列化の分割粒度は第１、第２の実施形態に比べて粗くなるため、印刷データ生成前のデータバッファのバッファサイズはその分大きくとる必要がある。その代わりに、印刷処理の１走査運動を行う際に複数スレーブＡＳＩＣの処理完了を待ってデータを結合する必要がなくなる。そして、担当スレーブＡＳＩＣの処理完了後に印刷データをヘッドへそのまま転送することで印刷が行えるため、全体の制御は第１の実施形態に比べて単純な構成をとることができる。図３のフローチャートでいうと、Ｓ３８０のステップが不要となるからである。また、その際、各スレーブから記録ヘッドヘッドに対して直接通信できる通信経路を用意してもよい。そして、各スレーブに対して自身の担当する１走査領域の印刷データ生成と印刷も受け持たせることにより、ステップＳ３７０のステップも不要となる。画像処理後のデータ転送が不要となるため、各ＡＳＩＣ間の転送帯域が十分に確保できない製品構成などにおいて、特に有効となる。
【０１２３】
［第４の実施形態］
上記第１乃至第３の実施形態では紙面上の各領域をヘッドの１走査で印刷を行う、いわゆる１パス印刷について説明を行った。
【０１２４】
一方で、すでに記載の通り、シリアルヘッドインクジェットプリンタは、紙面上の各領域をヘッドを複数回走査して印刷を行う、いわゆるマルチパス記録を行う場合がある。特に、写真印刷などの高画質を求められるユースケースでは顕著である。
【０１２５】
１パス印刷とマルチパス記録を比較すると、１パス印刷の方がより高速に印刷を完了できるため、単位時間あたりに処理すべき計算量が多くなる傾向がある。そのため、通常であれば、１パス印刷を満足できる処理能力を持ったハードウェア構成をとることで、マルチパス記録時にも十分なパフォーマンスを発揮できる。
【０１２６】
一方で、マルチパス記録であっても、特に高画質を必要とするために、印刷解像度をより高解像度にしたり、画像処理として高度で複雑な処理を実施する場合がある。例えば、１パス印刷時には色変換処理を３×３の行列演算によって簡易的に実施し、マルチパス記録においては色変換処理を３次元ＬＵＴにより実施する場合などが考えられる。このような場合においては、マルチパス記録の方が単位時間あたりに処理すべき計算量が多くなることが考えられる。
【０１２７】
そこで、本第４の実施形態では、マルチパス記録における実施の方法について説明する。なお、ここでは説明を単純なものとするため、マルチパス記録として２パス印刷を例に説明する。２パス印刷の場合、各パスを記録ヘッドで印刷する度に、記録ヘッドの１走査高さの１/２ずつ記録紙を搬送するものである。一般にＮパス印刷では、１パス分の印刷を行う度に、記録ヘッドで記録できる幅の１／Ｎだけ用紙を搬送する。
【０１２８】
なお、各パスをずらさずに（紙送りを行わずに、複数回走査して）印刷を行うケースについては、印刷に要する時間が倍増するのみであり、すでに述べた第１乃至３の実施形態の効果を得られるものである。
【０１２９】
ここでは、第１の実施形態に２パス印刷を適用した例を説明する。本第４の実施形態では、基本的に第１の実施形態と同様の装置構成／処理フローを取ることになるが、図３のフローチャートにおけるステップＳ３３０の「印刷領域評価」の処理内容が変更になりほれ以外は実質的に同じである。そこで以下ではステップＳ３３０について説明する。
【０１３０】
マスタＡＳＩＣ１０００は、デコードして得られた多値カラー画像に対して解析を行い、紙面上のどの位置に印刷が行われるかの評価を行う。具体的には、８ＢｉｔＲＧＢの各画素値を評価して、（２５５，２５５，２５５）で構成される画素は「白画素」と解釈する。それ以外の領域を「非白画素」とする。選別したのち、記録ヘッドのスキャン幅を考慮して、各スキャンにおけるキャリッジ移動範囲を評価する。記録ヘッドのスキャン幅の内部での各ラスターに存在する「非白画素」の左端／右端位置を抽出し、全ラスターの左端の中で最も左に位置するもののＸ座標をスキャン左端、全ラスターの右端の中で最も右に位置するもののＸ座標をスキャン右端とする。
【０１３１】
なお、記録ヘッド駆動の制約や特性により、これと異なる方式で左端右端を決定してもよい。
【０１３２】
１スキャンの左右端が定まったら、次スキャンの開始ラスターを決定する。現在のスキャンの１/２のスキャン高さだけ進んだラスターに対し、次ラスター以降について、１ライン中に一画素でも「非白画素」が存在するラスターを開始ラスターとして、そこからヘッドのスキャン高さの幅の短冊領域に対して同様に評価を行う。
【０１３３】
このように順次評価を行っていって、印刷領域が決定する。例えば、図８（ａ）のような画像に対しては図１４（ａ）のように印刷領域が決定する。
【０１３４】
ここで、太枠矩形で記した領域は、記録ヘッドの往路方向への走査時に印刷する領域をさし、細枠矩形で記した領域は、往路方向の走査後に、記録ヘッドの１走査高さの１/２だけ紙送りを行って、ヘッドを復路方向へ走査時に印刷する領域を指す。つまり、紙面上の各領域は、「往→復」または「復→往」の走査により印刷を完成させることになる。往路と復路では、走査対象となる領域が少しずつ異なっているため、両者の走査幅は通常異なる場合が多い。
【０１３５】
次に、図１４（ａ)のようにして得られた印刷領域に対し、各スキャン単位におけるスキャン高さを１/２の高さに変更する。これにより、図１４（ｂ）のように印刷領域が補正される。ここで、太枠矩形で記した領域は、ヘッドの往路方向の走査によって第一パスの印刷がなされる領域に、細枠矩形で記した領域は、ヘッドの復路方向の走査によって第一パスの印刷がなされる領域に、それぞれ対応する。つまり、図１４（ｂ）における太枠細枠それぞれで表した各矩形に対し、矩形内を均等に分割することで、第１の実施形態と同様に、画像のレイアウトによらず並列度の高い並列分割領域を得ることができる。
【０１３６】
上記実施形態では、並列化処理する処理ユニット（装置）としてＡＳＩＣを例にして説明したが、互いに独立して処理可能であれば良いので、上記例に限定されるものではない。また、実施形態では、Ｙ軸に沿って記録紙が搬送されるものとして説明したが、この搬送は相対的であれば良く、記録ヘッド（キャリッジ）が移動するようにしても構わない。
【符号の説明】
【０１３７】
１００…ホスト、１０１…ＲＯＭ、１０２…ＲＡＭ、１０３…ＣＰＵ、１０４…Ｉ／Ｆ、１０５…出力装置、１０６…入力装置、２００…プリンタ、２０１…ＲＯＭ、２０２…ＲＡＭ、２０３…Ｉ/Ｆ、２０４…ＣＰＵ、２０５…記録ヘッド、２０６…ＤＳＰ，１０００…マスタＡＳＩＣ、１０１０、１０２０…スレーブＡＳＩＣ
【図１】
0006506577.tif 000002
【図２】
0006506577.tif 000003
【図３】
0006506577.tif 000004
【図４】
0006506577.tif 000005
【図５】
0006506577.tif 000006
【図６】
0006506577.tif 000007
【図７】
0006506577.tif 000008
【図８】
0006506577.tif 000009
【図９】
0006506577.tif 000010
【図１０】
0006506577.tif 000011
【図１１】
0006506577.tif 000012
【図１２】
0006506577.tif 000013
【図１３】
0006506577.tif 000014
【図１４】
0006506577.tif 000015