(57)【特許請求の範囲】
【請求項１】
往復印刷を行うための画像データを、往路印刷または復路印刷によって印刷される１パス分または複数パス分の画像データである部分画像データに分割してｎ個の部分画像データ（但し、ｎはｎ≧１となる整数）を生成し、当該部分画像データごとに、誤差拡散法を用いてハーフトーン処理を行う第１ハーフトーン処理手段と、
前記第１ハーフトーン処理手段による処理に先行し、各部分画像データに含まれる複数ラスタ分のデータのうち最初に処理すべき所定ラスタ分のデータを対象として、誤差計算用のハーフトーン処理を行う第２ハーフトーン処理手段と、
前記第２ハーフトーン処理手段による奇数番目の部分画像データの処理によって発生した先行誤差値に続き、当該部分画像データの前記第１ハーフトーン処理手段によって発生した誤差値を記憶する奇数誤差バッファと、
前記第２ハーフトーン処理手段による偶数番目の部分画像データの処理によって発生した先行誤差値に続き、当該部分画像データの前記第１ハーフトーン処理手段によって発生した誤差値を記憶する偶数誤差バッファと、
前記第１ハーフトーン処理手段による奇数番目の部分画像データの処理結果を記憶する奇数データバッファと、
前記第１ハーフトーン処理手段による偶数番目の部分画像データの処理結果を記憶する偶数データバッファと、
前記奇数データバッファおよび前記偶数データバッファに記憶されている前記処理結果を、ハーフトーン処理後の処理済みデータとして交互に切り替えて出力するデータ出力手段と、を備え、
前記第２ハーフトーン処理手段は、前記第１ハーフトーン処理手段によるｍ−１番目の部分画像データ（但し、ｍは２≦ｍ≦ｎとなる整数）の最後の所定ラスタ分の処理と並行して、ｍ番目の部分画像データの前記所定ラスタ分のデータのハーフトーン処理を行い、
前記第１ハーフトーン処理手段は、前記奇数誤差バッファおよび前記偶数誤差バッファに記憶されている前記先行誤差値を用いて、それぞれ前記奇数番目の部分画像データおよび前記偶数番目の部分画像データのハーフトーン処理を開始することを特徴とする画像処理装置。
【請求項２】
前記画像データは、複数ラスタから成り、前記先端部における所定データは、１０ラスタ以下のデータであることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記部分画像データは、１パス分の画像データであり、
前記奇数データバッファに記憶されている処理結果を往路印刷に、また前記偶数データバッファに記憶されている処理結果を復路印刷に、それぞれ用いることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記画像データは、複数色から成り、
前記画像データに対し、複数色の着色剤の混合比率を決定するための、往路印刷用と復路印刷用との２つの色処理テーブルを参照して、色変換処理を行う色変換処理手段をさらに備え、
前記色変換処理手段は、前記奇数番目の部分画像データと前記偶数番目の画像データとに対し、参照する前記色処理テーブルを切り替えて、前記色変換処理を行うことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
請求項１ないし４のいずれか１項に記載の画像処理装置における各手段を備えていることを特徴とするプリンタドライバ。
【請求項６】
請求項１ないし４のいずれか１項に記載の画像処理装置と、
前記往復印刷を行うプリンタと、を備えていることを特徴とする印刷システム。
【請求項７】
コンピュータを、請求項１ないし４のいずれか１項に記載の画像処理装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
画像データに対し、誤差拡散法を用いてハーフトーン処理を行う画像処理装置、プリンタドライバ、印刷システム、プログラムに関する。
【背景技術】
【０００２】
画像処理におけるハーフトーン処理の一種として、誤差拡散処理が知られている。一方、主走査方向における印刷ヘッドの動作と副走査方向における紙送り動作とが同期して印刷を行うプリンタが知られている。この種のプリンタに出力する印刷画像の画像処理を行う場合、通常、誤差拡散処理は、主走査方向における１ラスタ分ずつ処理を実行するため、副走査方向へ分配する誤差値は、一般的に誤差バッファと呼ばれる記憶領域に記憶させておき、次のラスタの処理に用いる。
【０００３】
この誤差拡散処理を用いて複数ページの印刷を行う場合、ページ先頭に前ページの誤差値が伝搬すると、ページ先頭の画質を低下させてしまうため、改ページ時に誤差バッファを初期化することが一般的に知られている。ところが、これをロール紙のような長尺状の用紙の印刷に適用すると、ページの境界で画質の低下が生じてしまう。つまり、複数のページに跨る画像を印刷しようとした場合、ページの境界で誤差バッファが初期化されてしまうため、ドットの分布が不自然に変化するといった問題があった。このような問題を解決すべく、連続する画像データの場合には、ページの境界で誤差バッファを初期化しないといった方法が提案されている（例えば、特許文献１参照）。
【特許文献１】特開平１０−３２９３８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記のような画質低下の問題は、誤差拡散処理の処理結果を記憶するデータバッファのバッファサイズを超えた印刷データを生成するような場合にも生じる。これは、例えば２つのデータバッファを交互に切り替えて用いる場合、データバッファの切替時において誤差バッファを初期化してしまうことや、誤差拡散処理において参照する周囲の画素データの変化が要因と考えられる。つまり、複数のデータバッファを切り替えて用いる場合に、誤差バッファを共有できれば問題はないが、データバッファと誤差バッファとが個々に対応付けられ、互いに誤差値を伝搬できない状況においては、データバッファの切替に伴う誤差バッファの初期化を起因とする画質の低下が避けられない問題となっている。
【０００５】
本発明は、このような問題点に鑑み、２つのデータバッファを交互に切り替えて用いる場合であって、且つ誤差バッファの共有が不可能な場合であっても、データバッファの切替時における画質の低下を防止可能な画像処理装置、プリンタドライバ、印刷システム、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の画像処理装置は、往復印刷を行うための画像データを、往路印刷または復路印刷によって印刷される１パス分または複数パス分の画像データである部分画像データに分割してｎ個の部分画像データ（但し、ｎはｎ≧１となる整数）を生成し、当該部分画像データごとに、誤差拡散法を用いてハーフトーン処理を行う第１ハーフトーン処理手段と、第１ハーフトーン処理手段による処理に先行し、各部分画像データに含まれる複数ラスタ分のデータのうち最初に処理すべき所定ラスタ分のデータを対象として、誤差計算用のハーフトーン処理を行う第２ハーフトーン処理手段と、第２ハーフトーン処理手段による奇数番目の部分画像データの処理によって発生した先行誤差値に続き、当該部分画像データの第１ハーフトーン処理手段によって発生した誤差値を記憶する奇数誤差バッファと、第２ハーフトーン処理手段による偶数番目の部分画像データの処理によって発生した先行誤差値に続き、当該部分画像データの第１ハーフトーン処理手段によって発生した誤差値を記憶する偶数誤差バッファと、第１ハーフトーン処理手段による奇数番目の部分画像データの処理結果を記憶する奇数データバッファと、第１ハーフトーン処理手段による偶数番目の部分画像データの処理結果を記憶する偶数データバッファと、奇数データバッファおよび偶数データバッファに記憶されている処理結果を、ハーフトーン処理後の処理済みデータとして交互に切り替えて出力するデータ出力手段と、を備え、第２ハーフトーン処理手段は、第１ハーフトーン処理手段によるｍ−１番目の部分画像データ（但し、ｍは２≦ｍ≦ｎとなる整数）の最後の所定ラスタ分の処理と並行して、ｍ番目の部分画像データの所定ラスタ分のデータのハーフトーン処理を行い、第１ハーフトーン処理手段は、奇数誤差バッファおよび偶数誤差バッファに記憶されている先行誤差値を用いて、それぞれ奇数番目の部分画像データおよび偶数番目の部分画像データのハーフトーン処理を開始することを特徴とする。
上記に記載の画像処理装置において、画像データは、複数ラスタから成り、先端部における所定データは、１０ラスタ以下のデータであることが好ましい。
上記に記載の画像処理装置において、部分画像データは、１パス分の画像データであり、奇数データバッファに記憶されている処理結果を往路印刷に、また偶数データバッファに記憶されている処理結果を復路印刷に、それぞれ用いることが好ましい。
上記に記載の画像処理装置において、画像データは、複数色から成り、画像データに対し、複数色の着色剤の混合比率を決定するための、往路印刷用と復路印刷用との２つの色処理テーブルを参照して、色変換処理を行う色変換処理手段をさらに備え、色変換処理手段は、奇数番目の部分画像データと偶数番目の画像データとに対し、参照する色処理テーブルを切り替えて、色変換処理を行うことが好ましい。
本発明のプリンタドライバは、上記に記載の画像処理装置における各手段を備えていることを特徴とする。
本発明の印刷システムは、上記に記載の画像処理装置と、往復印刷を行うプリンタと、を備えていることを特徴とする。
本発明のプログラムは、コンピュータを、上記に記載の画像処理装置における各手段として機能させることを特徴とする。
なお、以下の構成としても良い。
本発明の画像処理装置は、画像データを、ｎ個の部分画像データ（但し、ｎはｎ≧１となる整数）に分割し、当該部分画像データごとに、誤差拡散法を用いてハーフトーン処理を行う第１ハーフトーン処理手段と、第１ハーフトーン処理手段による処理に先行し、各部分画像データの先端部における所定データを対象として、誤差計算用のハーフトーン処理を行う第２ハーフトーン処理手段と、第２ハーフトーン処理手段による奇数番目の部分画像データの処理によって発生した先行誤差値に続き、当該部分画像データの第１ハーフトーン処理手段によって発生した誤差値を記憶する奇数誤差バッファと、第２ハーフトーン処理手段による偶数番目の部分画像データの処理によって発生した先行誤差値に続き、当該部分画像データの第１ハーフトーン処理手段によって発生した誤差値を記憶する偶数誤差バッファと、第１ハーフトーン処理手段による奇数番目の部分画像データの処理結果を記憶する奇数データバッファと、第１ハーフトーン処理手段による偶数番目の部分画像データの処理結果を記憶する偶数データバッファと、奇数データバッファおよび偶数データバッファに記憶されている処理結果を、ハーフトーン処理後の処理済みデータとして交互に切り替えて出力するデータ出力手段と、を備え、第１ハーフトーン処理手段は、奇数誤差バッファおよび偶数誤差バッファに記憶されている先行誤差値を用いて、それぞれ奇数番目の部分画像データおよび偶数番目の部分画像データのハーフトーン処理を開始することを特徴とする。
【０００７】
この構成によれば、奇数データバッファおよび偶数データバッファの２つのデータバッファから交互にハーフトーン処理後の処理済みデータを出力する場合において、部分画像データの通常のハーフトーン処理に先行して誤差計算用のハーフトーン処理を行い、それによって発生した先行誤差値を奇数誤差バッファまたは偶数誤差バッファに記憶させておくため、データバッファの切替時に誤差バッファがクリアになっていることがない（切替直後は先行誤差値が既に記憶されているため）。すなわち、第１ハーフトーン処理手段は、第２ハーフトーン処理手段によって計算された先行誤差値の伝搬を受けて（予め誤差バッファに記憶されている先行誤差値を用いて）ハーフトーン処理を開始することができるため、バッファの切替時における画質の低下を防止することができる。なお、部分画像データは、ページ単位であっても良いし、印刷に用いるものであれば、バンド（印刷ヘッドの一回の主走査で印刷可能な領域）単位であっても良い。すなわち画像データは、画像処理後のデータの利用形態や、画像処理性能に応じて、任意のデータサイズの部分画像データに分割可能である。
【０００８】
上記に記載の画像処理装置において、画像データが、複数の部分画像データに分割される場合、第２ハーフトーン処理手段は、ｎ個の部分画像データのうち２番目以降の部分画像データの先端部における所定データを対象として、誤差計算用のハーフトーン処理を行うことが好ましい。
【０００９】
この構成によれば、ｎ個の部分画像データのうち、最初の部分画像データは、前の画像データとの連続性を考慮する必要が無いため（誤差バッファが初期化された状態で開始しても画質の低下が問題とならないため）、最初の部分画像データに対する処理を省略することができる。
【００１０】
上記に記載の画像処理装置において、画像データは、複数ラスタから成り、先端部における所定データは、１０ラスタ以下のデータであることが好ましい。
【００１１】
この構成によれば、例えば部分画像データが３６０ラスタから成る場合、第２ハーフトーン処理手段で全ラスタ（３６０ラスタ）の処理を行う場合と比較して、１０／３６０以下の処理で済むため、制御負荷を軽減することができる。なお、所定データは、少なく設定するほど制御負荷を軽減できるが、経験的に３ラスタ以上であることが好ましい。
【００１２】
上記に記載の画像処理装置において、処理済みデータは、往復印刷を行うためのデータであり、奇数データバッファに記憶されている処理結果を往路印刷に、また偶数データバッファに記憶されている処理結果を復路印刷に、それぞれ用いることが好ましい。
【００１３】
この構成によれば、２つのデータバッファに記憶されている処理結果を、それぞれ往路印刷と復路印刷とにそのまま用いることができるため、制御が容易である。
【００１４】
上記に記載の画像処理装置において、画像データは、複数色から成り、画像データに対し、複数色の着色剤の混合比率を決定するための、往路印刷用と復路印刷用との２つの色処理テーブルを参照して、色変換処理を行う色変換処理手段をさらに備え、色変換処理手段は、奇数番目の部分画像データと偶数番目の画像データとに対し、参照する色処理テーブルを切り替えて、色変換処理を行うことが好ましい。
【００１５】
この構成によれば、画像データが複数色から成る場合、往路印刷と復路印刷とで参照する色処理テーブルを切り替えるため、着色剤の重なり順の違いを起因とする印刷方向の色むらを解消することができる。
【００１６】
本発明のプリンタドライバは、上記に記載の画像処理装置における各手段を備えていることを特徴とする。
【００１７】
本発明の印刷システムは、上記に記載の画像処理装置と、往復印刷を行うプリンタと、を備えていることを特徴とする。
【００１８】
本発明のプログラムは、コンピュータを、上記に記載の画像処理装置における各手段として機能させるためのものであることを特徴とする。
【００１９】
これらを用いることにより、２つのデータバッファを交互に切り替えて用いる場合であって、且つ誤差バッファの共有が不可能な場合であっても、データバッファの切替時における画質の低下を防止することができる。
【発明を実施するための最良の形態】
【００２０】
以下、添付の図面を参照して、本発明の一実施形態に係る画像処理装置、プリンタドライバ、印刷システム、プログラムについて説明する。本発明は、２つのデータバッファから交互にハーフトーン処理（誤差拡散処理）後の処理済みデータを出力する場合において、通常のハーフトーン処理に先行して誤差計算用のハーフトーン処理を行い、それによって発生した先行誤差値を通常のハーフトーン処理に用いることで、バッファの切替時における画質の低下を防止することを課題としたものである。そこで、本発明の画像処理装置の各手段をプリンタドライバとしてコンピュータに搭載した場合を例に挙げ、当該コンピュータ（ホストコンピュータ）と、プリンタとから成る印刷システムについて説明する。また、プリンタとしては、インクジェットプリンタを用いた場合を例示する。
【００２１】
図１は、本発明の一実施形態に係る印刷システム１０のブロック図である。同図に示すように、印刷システム１０は、各種データを記憶または生成すると共にこれを印刷データ（インク吐出データ）化するホストコンピュータ２０と、ホストコンピュータ２０から出力された印刷データに基づいて印刷を行うプリンタ４０と、から成る。
【００２２】
ホストコンピュータ２０は、ハーフトーン処理（２値化処理）を必要とする各種データ（以下、「画像データ」と称する）を生成するためのプログラムであるアプリケーション２１と、ホストコンピュータ２０を制御するための基本プログラムであるＯＳ（オペレーティングシステム）２２と、色変換処理およびハーフトーン処理を含む画像処理やコマンド変換処理などを行うプリンタドライバ２３と、プリンタ４０に印刷データ（画像処理後の処理済みデータ）を出力する印刷データ出力部２４と、を備えている。
【００２３】
プリンタドライバ２３は、レンダリング処理等を行うドライバ上位層２５と、画像処理モジュール２６と、から成る。画像処理モジュール２６は、制御モジュール３０、カラーマッチング＆ハーフトーンモジュール（色変換処理手段，第１ハーフトーン処理手段，第２ハーフトーン処理手段）３１およびコマンド変換モジュール３２の３つのモジュールを有している。
【００２４】
制御モジュール３０は、カラーマッチング＆ハーフトーンモジュール３１と、コマンド変換モジュール３２とを統括制御すると共に、各モジュール３１，３２の機能を補うための制御を行う。
【００２５】
カラーマッチング＆ハーフトーンモジュール３１は、色処理ＬＵＴ（色処理テーブル）３３を参照して、カラーマッチング処理（色変換処理）を行い、ドット発生ＬＵＴ３４を参照して、着色剤のドットの有無を決定する。ドットの種類としては、例えば、レベル０：ドット無し、レベル１：小ドット、レベル２：中ドット、レベル３：大ドットという４種類のものが挙げられる。それらのうち、どのレベルを何パーセント採用するかを決定することができる。高画質をめざす場合は、４種類だけでなく更にドットの段階を細かく設定してもよい。また、カラーマッチング＆ハーフトーンモジュール３１は、補間演算モジュール２７を有しており、カラーマッチング処理の際に、上記の色処理ＬＵＴ３３上に存在しない値を補間演算により推定する（詳細については後述する）。
【００２６】
さらに、カラーマッチング＆ハーフトーンモジュール３１は、誤差拡散法を用いたハーフトーン処理（誤差拡散処理）を行い、ハーフトーン処理によって発生した誤差値を誤差バッファ３５に格納し、ハーフトーン処理の処理結果である２値化データをデータバッファ３６に格納する。データバッファ３６に格納したデータは、続くコマンド処理のため、所定量ごとにコマンド変換バッファ３７と称する記憶領域に出力する。
【００２７】
また、コマンド変換モジュール３２は、コマンド変換テーブル３８を参照して、プリンタ４０が解読可能なコマンド形式に変換するためのコマンド処理を行い、当該コマンド処理後のデータをコマンド処理バッファ３９に出力する。
【００２８】
一方、プリンタ４０は、ホストコンピュータ２０から出力された印刷データを入力（取得）する印刷データ入力部４１と、入力した印刷データを一時的に格納する印刷バッファ４２と、当該印刷バッファ４２に格納された印刷データに基づいて往復印刷を行う印刷部４３と、を備えている。
【００２９】
印刷部４３は、キャリッジ４４、キャリッジモータ４６、印刷ヘッド（インクジェットヘッド）４７および紙送りモータ４８を有しており、キャリッジモータ４６により、印刷ヘッド４７を搭載したキャリッジ４４を主走査方向に往復動させる。また、紙送りモータ４８により、印刷媒体（用紙）５１（図３参照）を副走査方向に搬送させる。そして、これらキャリッジモータ４６および紙送りモータ４８の駆動と、印刷ヘッド４７からのインクの吐出動作とを同期させることにより、所望の印刷画像を印刷媒体５１上に形成する。
【００３０】
次に、図２を参照し、キャリッジ４４（印刷ヘッド４７）の構成について説明する。同図は、ノズル面側から見たキャリッジ４４の平面図であり、本実施形態では、１つのキャリッジ４４上に、Ｋ（ブラック）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｃ（シアン）の各色に対応した４つの印刷ヘッド４７が搭載されている。
【００３１】
各印刷ヘッド４７は、Ｋ→Ｍ→Ｙ→Ｃの順に主走査方向（キャリッジ４４の移動方向）に配列されており、往路印刷においては、Ｋ→Ｍ→Ｙ→Ｃの順にインクを吐出し、復路印刷においては、Ｃ→Ｙ→Ｍ→Ｋの順にインクを吐出する。したがって、往路と復路とにおいてインクの吐出順序が異なるため、インクの重ね順序が変わってしまい、往路と復路で発色特性が変わる。したがって、双方向で同一の画像処理（色変換処理）を行うと、往路印刷領域と復路印刷領域との間に色むらが生じてしまう。このため、本実施形態では、カラーマッチング処理において、往路印刷用と復路印刷用の２つの色処理ＬＵＴ３３ａ，３３ｂ（図４参照）を利用し、このインクの吐出順序の違いを起因とする色むらを解消できるようになっている（詳細については後述する）。
【００３２】
また、各印刷ヘッド４７は、副走査方向に沿って２本のノズル列５２が形成されており、各ノズル列５２には、それぞれ１８０ｄｐｉのピッチで１８０個のノズル５３が配列されている。また、各印刷ヘッド４７の２本のノズル列５２は、ノズル５３の配置を互いに半画素ずつずらしているため、実質的に各印刷ヘッド４７は、３６０ｄｐｉのピッチにて一列にノズル５３が配列されたものと同じ状態となっている。
【００３３】
次に、図３を参照し、上記のキャリッジ４４の動作について説明する。同図は、印刷媒体５１とキャリッジ４４との相対的な位置関係を示したものであり、キャリッジ４４は印刷媒体５１に対して図示矢印の方向に相対移動する。図示点線で示した位置を印刷開始位置（ホームポジション）Ｐとすると、まずキャリッジ４４を主走査方向右側に移動させながら印刷を行う。また、印刷画像の右端まで印刷を終えると一旦キャリッジ４４の移動を停止し、図示上方向への紙送りを待って、今度は主走査方向左側に移動させながら印刷を行う。そして、印刷画像の左端まで印刷を終えるとまたキャリッジ４４の移動を停止し、図示上方向への紙送り後、再度主走査方向右側に向かって印刷を行う。
【００３４】
このように、主走査方向の印刷と副走査方向の紙送り動作とを繰り返しながら、印刷を行っていくが、以後、主走査方向右側に移動する際の印刷を「往路印刷」と称し、主走査方向左側に移動する際の印刷を「復路印刷」と称する。また、往路印刷または復路印刷によって印刷される印刷領域の印刷画像に相当する１パス分の画像データを「部分画像データ」と称する。
【００３５】
すなわち、アプリケーション２１によって生成された画像データは、上記のプリンタドライバ２３によって、ｎ個の部分画像データ（但し、ｎ≧１となる整数）に分割され、このうち最初の部分画像データ（第１部分画像データ）が最初の往路印刷によって印刷される。また、２番目の部分画像データ（第２部分画像データ）が続く復路印刷によって印刷され、３番目の部分画像データ（第３部分画像データ）が続く往路印刷によって印刷される。つまり、奇数番目の部分画像データが往路印刷、偶数番目の部分画像データが復路印刷で印刷されることとなる。なお、画像データ（ｎ個の部分画像データ）に基づく全印刷画像の印刷を終えると、キャリッジ４４を、印刷開始位置Ｐまで移動させ、次の印刷指示まで待機する。
【００３６】
次に、図４を参照し、プリンタドライバ２３における各種処理の概要並びに工程について説明する。プリンタドライバ２３は、アプリケーション２１（図１参照）によって生成された画像データＤを取得すると、まずドライバ上位層２５により、レンダリングを行う（Ｓ０１）。レンダリングとは、数値データとして与えられた物体や図形に関する情報を、計算によって画像化する処理であり、取得した画像データが数値データに相当する場合に当該処理を実行する。
【００３７】
続いて、プリンタドライバ２３は、画像処理モジュール２６により、カラーマッチング処理を行う（Ｓ０２）。ここでは、往路印刷用と復路印刷用の２つの色処理ＬＵＴ３３ａ，３３ｂ、並びに補間演算モジュール２７を用いて、ＲＧＢ多値データをＣＭＹＫインク多値データに色変換する。
【００３８】
カラーマッチング処理を終えると、続いてハーフトーン処理を行う（Ｓ０３）。ここでは、カラーマッチング処理の処理結果、並びに往路印刷用と復路印刷用の２つのドット発生ＬＵＴ３４ａ，３４ｂの参照結果に基づいて、部分画像データごとに誤差拡散法を用いたハーフトーン処理を行う。
【００３９】
なお、本実施形態では、往路印刷用と復路印刷用の２つのドット発生ＬＵＴ３４ａ，３４ｂは同一の内容であるため、画像処理モジュール２６内に１つだけ備え、これを双方向の印刷時に用いるようにしても良い。また、ドット発生ＬＵＴ３４ａ，３４ｂの内容を、往路印刷用と復路印刷用とで変更し、更なる画質の向上を図っても良い。
【００４０】
そして、ハーフトーン処理を終えると、その２値化データ（例えば、レベル０：ドット無し、レベル１：小ドット、レベル２：中ドット、レベル３：大ドットの４種類のデータ。高画質をめざす場合は４種類だけでなくドットの段階が更に細かく設定されたデータ）に基づいて、コマンド変換処理を行い（Ｓ０４）、プリンタ４０に出力する。なお、Ｓ０２〜Ｓ０４までの処理は、いずれも画像処理モジュール２６によって実行されるものである。
【００４１】
次に、図５ないし図８を参照し、上記のカラーマッチング処理（Ｓ０２）について、詳細に説明する。図５は、往路印刷用と復路印刷用の２つの色処理ＬＵＴ（往路用色処理ＬＵＴ３３ａ，復路用色処理ＬＵＴ３３ｂ）の一例を示したものである。色処理ＬＵＴ３３ａ，３３ｂは、上記のとおりＲＧＢ（加色混合の割合）をＣＭＹＫ（減色混合の割合）に変換するための色変換テーブルであり、ＲＧＢの各８ｂｉｔ（十進で０〜２５５）データをＣＭＹＫの各８ビット（十進で０〜２５５）に割り当てるものである。高画質を目指す場合は８ビットでなく１６ビットなどの多ビットを割り当てて分解能を向上させることができる。また、色処理ＬＵＴ３３ａ，３３ｂは、バイナリデータの羅列によって構成され、図示の通りＣＭＹＫの順に並べてデータが列記されている（Ｃ１Ｍ１Ｙ１Ｋ１，Ｃ２Ｍ２Ｙ２Ｋ２・・・ＣｎＭｎＹｎＫｎ）。
【００４２】
但し、ＲＧＢ全ての組み合わせは、２５６（０〜２５５）の３乗＝約１６７７万通り存在するため、これらの組み合わせを全てテーブル上に記載するのは現実的でない。そこで、予め特定のＲＧＢの値を決めておき、その値に対応するＣＭＹＫの値（インク吐出量を決定するための値）だけを、各色処理ＬＵＴ３３ａ，３３ｂに記載している。したがって、例えばＲＧＢを各１０グリッドとした場合は、１０の３乗＝１０００グリッドで各色処理ＬＵＴ３３ａ，３３ｂを構成することとなる。グリッド数は出力する色の精度に影響を与え、当然多いほうが精度は向上するが、容量が大きくなるなどの弊害も生じるため、製品とのバランスを考慮して決定される。同図（ａ），（ｂ）は、各色処理ＬＵＴ３３ａ，３３ｂの一部を示したものである。
【００４３】
例えば、同図（ａ）に示すように、往路印刷の対象となる画像データ（奇数番目の部分画像データ）に含まれる任意の画素の加色混合の割合が、Ｒ＝１００，Ｇ＝３０，Ｂ＝９０（十進法）であり、往路用色処理ＬＵＴ３３ａに、対応する減色混合の割合（ＣＭＹＫの組み合わせ）が存在する場合、その減色混合の割合（Ｃ＝４０，Ｍ＝１２０，Ｙ＝３４，Ｂ＝６３（十進法））に基づいて各色のインク量を決定する。
【００４４】
また、同図（ｂ）に示すように、復路印刷の対象となる部分画像データ（偶数番目の部分画像データ）に含まれる任意の画素の加色混合の割合が、同じくＲ＝１００，Ｇ＝３０，Ｂ＝９０（十進法）であり、復路用色処理ＬＵＴ３３ｂに、対応する減色混合の割合（ＣＭＹＫの組み合わせ）が存在する場合、その減色混合の割合（Ｃ＝３５，Ｍ＝１２８，Ｙ＝３５，Ｂ＝６６（十進法））に基づいて各色のインク量を決定する。
【００４５】
このように、同じ加色混合の割合であっても、往路用色処理ＬＵＴ３３ａと復路用色処理ＬＵＴ３３ｂに記載されている減色混合の割合は、必ずしも一致しない。これは、インクの重なり順序の違いを考慮したものであり（往路印刷においてはＫ→Ｍ→Ｙ→Ｃの順、復路印刷においてはＣ→Ｙ→Ｍ→Ｋの順にインクを吐出する，図２および図３参照）、これによって往路印刷を行った印刷領域と復路印刷を行った印刷領域との色むらを防止している。
【００４６】
ところで、上記のように、各色処理ＬＵＴ３３ａ，３３ｂを１０００グリッドとした場合、このグリッド数では、実際の処理に対応できないため、グリッド数をＲＧＢすべての組み合わせのグリッドに拡張する必要がある。そこで、本実施形態では、補間演算モジュール２７（図４参照）を用いて補間演算を行い、グリッド上に存在しないＲＧＢの値に基づくＣＭＹＫの値を推定するようにしている。まず、図６のフローチャートを参照し、カラーマッチング＆ハーフトーンモジュール３１によるカラーマッチング処理の処理工程から説明する。
【００４７】
カラーマッチング＆ハーフトーンモジュール３１は、レンダリング後の画像データに基づいて、ＲＧＢの値（加色混合の割合）を決定（算出）する（Ｓ０６，加色混合割合決定手段）。次に、そのＲＧＢの値に対応するＣＭＹＫの値が、各色処理ＬＵＴ３３ａ，３３ｂのグリッド上の値か否かを判別し（Ｓ０７，色処理テーブル判別手段）、グリッド上の値である場合、すなわち図５に示した例のようにＲＧＢの値に対応するＣＭＹＫの値が存在する場合は（Ｓ０７：Ｙｅｓ）、各色処理ＬＵＴ３３ａ，３３ｂの値を参照してＣＭＹＫの値を決定する（Ｓ０８，減色混合割合決定手段）。一方、グリッド上の値でない場合は（Ｓ０７：Ｎｏ）、補間演算モジュール２７による補間演算により、ＣＭＹＫの値を決定（推定）する（Ｓ０９，減色混合割合決定手段）。
【００４８】
ここで、図７および図８を参照し、補間演算処理の原理について簡単に説明する。ここでは、補間法として、「四面体補間」を採用した場合を例示する。同図（ａ）は、色処理ＬＵＴ３３ａ，３３ｂを３次元的に示したものである。同図に示すように、ＲＧＢの各軸を１０分割したとき、各格子点にはＣＭＹＫの値が予め記憶されている。今、決定したＲＧＢの値を、この３次元直交座標上でＯとすると、Ｏを含む単位立方体が存在し、その頂点Ａ〜Ｈは格子点に記憶されている出力値、すなわちグリッド上の値である（同図（ｂ）参照）。
【００４９】
図８（ａ）に示すように、四面体補間では、単位立方体を６つの四面体に分割し、Ｏがどの領域に存在するかを、同図（ｂ）に示す境界条件によって決定する。例えば、Ｏが図７（ａ）に示す領域に属する場合、すなわち、ＤＬ＊≧Ｄａ＊：Ｔｒｕｅ，Ｄａ＊＞Ｄｂ＊：Ｔｒｕｅ，Ｄｂ＊＞ＤＬ＊：Ｆａｌｓｅで、ＢＡＤＨの領域に属する場合（図８（ａ）の斜線部参照）、Ｏの位置に相当するＣＭＹＫの値は、同図（ｃ）に示す計算式によって求めることができる。
【００５０】
なお、上記の例では、四面体補間によって補間演算を行ったが、その他、立方体補間、三角柱補間または六面体補間等の補間法を用いても良い。また、各色処理ＬＵＴ３３ａ，３３ｂは、ＲＧＢを各１０グリッドとした場合を例示したが、グリッド数をそれ以上またはそれ以下に設定しても良い。また、拡張後のグリッド数も、ＲＧＢ全ての組み合わせである、２５６（０〜２５５）の３乗＝約１６７７万通りのグリッド数でなく、それ以下に設定しても良いし、入力されたＲＧＢに対して複数回補間演算処理を行うことによって、さらに拡張させても良い。
【００５１】
また、各色処理ＬＵＴ３３ａ，３３ｂのグリッド間隔は、等間隔に設定しても良いし、経験則に基づいて不規則な間隔に設定しても良い。また、色処理ＬＵＴ３３ａ，３３ｂごとに、グリッド間隔を変えても良いし、グリッド数自体を変えても良い。
【００５２】
次に、図９ないし図１２を参照し、ハーフトーン処理（図４のＳ０３参照）について、詳細に説明する。図９は、ハーフトーン処理に関連する各構成要素を模式的に表したブロック図（以下、「ハーフトーン処理ブロック」と称する）である。同図に示すように、ハーフトーン処理ブロック１００は、２つのハーフトーン処理手段１１０，１２０と、２つのハンドル１３０ａ，１３０ｂと、次の工程にハーフトーン処理後の処理済みデータを出力するデータ出力手段１４０と、から成る。
【００５３】
２つのハーフトーン処理手段１１０，１２０は、いずれもカラーマッチング＆ハーフトーンモジュール３１（図１参照）を主要構成要素とするものであり、誤差拡散法を用いてハーフトーン処理を行う。また、第１ハーフトーン処理手段１１０は、画像データをｎ個に分割した部分画像データに対し、通常のハーフトーン処理を行い、第２ハーフトーン処理手段１２０は、各部分画像データの先端部における所定データを対象として、誤差計算用（以下、「オーバーラップ用」とも称する）のハーフトーン処理を行う。
【００５４】
２つのハンドル１３０ａ，１３０ｂは、それぞれＬＵＴ群１３１ａ，１３１ｂと、作業領域１３２ａ，１３２ｂと、を有している。参照番号１３０ａが、往路印刷用の部分画像データ（奇数番目の部分画像データ（図３参照），以下、「往路画像データ」と称する）の処理に用いられる往路用のハンドル、参照番号１３０ｂが、復路印刷用の部分画像データ（偶数番目の部分画像データ（図３参照），以下、「復路画像データ」と称する）の処理に用いられる復路用のハンドルである。
【００５５】
往路用ＬＵＴ群１３１ａは、往路用色処理ＬＵＴ３３ａと、往路用ドット発生ＬＵＴ３４ａとから成り、往路画像データのハーフトーン処理時に用いられる。同様に、復路用ＬＵＴ群１３１ｂは、復路用色処理ＬＵＴ３３ｂと、復路用ドット発生ＬＵＴ３４ｂとから成り、復路画像データのハーフトーン処理時に用いられる。
【００５６】
また、往路用作業領域１３２ａは、往路用誤差バッファ（奇数誤差バッファ）３５ａと、往路用データバッファ（奇数データバッファ）３６ａとから成り、往路画像データのハーフトーン処理によって発生した誤差値と、往路画像データのハーフトーン処理結果とをそれぞれ記憶する。同様に、復路用作業領域１３２ｂは、復路用誤差バッファ（偶数誤差バッファ）３５ｂと、復路用データバッファ（偶数データバッファ）３６ｂとから成り、復路画像データのハーフトーン処理によって発生した誤差値と、復路画像データのハーフトーン処理結果とをそれぞれ記憶する。
【００５７】
データ出力手段１４０は、往路用データバッファ３６ａおよび復路用データバッファ３６ｂに記憶されている処理結果を、交互に切り替えて、コマンド変換バッファ３７（図１参照）に出力する。
【００５８】
ここで、ハーフトーン処理ブロック１００における全体処理を説明する。ハーフトーン処理ブロック１００が、カラーマッチング処理後の第１部分画像データ（往路画像データ）を取得すると、まず第１ハーフトーン処理手段１１０により往路用ＬＵＴ群１３１ａを参照して、ラスタごとにハーフトーン処理を実行する。当該ハーフトーン処理によって発生した誤差値は往路用誤差バッファ３５ａに記憶され、処理結果である２値化データは往路用データバッファ３６ａに記憶される。なお、図２に示したとおり、各色のノズル列５２は、３６０個のノズル５３が配列されたものであるため、各部分画像データは、各色のノズル数にあわせた３６０ラスタ分のデータから成る。したがって、ここでは３６０ラスタ分のハーフトーン処理を実行することとなる。なお、本実施例では各部分画像データを記録する際において、各色のノズル数すべてを使用する例となっているが、この限りでなく各色のノズル数以下の数値を、各部分画像を構成するラスタ数としてもよい。
【００５９】
一般的には（従来は）、この第１部分画像データの３６０ラスタ分のハーフトーン処理を終えたところで、第２部分画像データのハーフトーン処理を開始するが、本実施形態では、第１部分画像データの残り３ラスタを開始するときに、同時に第２ハーフトーン処理手段１２０により、復路用ＬＵＴ群１３１ｂを参照して第２部分画像データのハーフトーン処理を行う。すなわち、第２部分画像データ以降の処理では、第１ハーフトーン処理手段１２０による残り３ラスタのハーフトーン処理と、第２ハーフトーン処理手段１２０による続く部分画像データの先端部における３ラスタ分のハーフトーン処理とを同時進行させる（オーバーラップして処理する）。なお、最初の部分画像データ（第１部分画像データ）に対しては、第２ハーフトーン処理手段１２０による処理は行わない。これは、最初の部分画像データは、前の画像データとの連続性を考慮する必要が無いため（誤差バッファ３５ａ，３５ｂが初期化された状態で開始しても画質の低下が問題とならないため）である。
【００６０】
第２ハーフトーン処理手段１２０によって発生した第２部分画像データの誤差値（以下、「先行誤差値」と称する）は、復路用誤差バッファ３５ｂに記憶されるが、処理結果である２値化データは利用されない（一旦、復路用データバッファ３６ｂに記憶されるが、後に第１ハーフトーン処理手段１１０の処理結果が上書きされる）。つまり、第１ハーフトーン処理手段１１０が、部分画像データを順次ハーフトーン処理していき、これに先行して（第１ハーフトーン処理手段１１０が処理している次の部分画像データに対し）第２ハーフトーン処理手段１２０が、先行誤差値を計算するためだけのハーフトーン処理を行う。
【００６１】
そして、第１ハーフトーン処理手段１２０による第２部分画像データの処理を終えると、続いて第１ハーフトーン処理手段１１０は、印刷方向の切替に伴い、復路用ＬＵＴ群１３１ｂを参照して第２部分画像データのハーフトーン処理を開始する。このとき、往路用誤差バッファ３５ｂには、第２ハーフトーン処理手段１２０によって発生した先行誤差値が既に記憶されているため、第１ハーフトーン処理手段１１０は、この誤差値を用いて第２部分画像データのハーフトーン処理を開始する。そして、第１ハーフトーン処理手段１１０が第２部分画像データの残り３ラスタの処理を開始するときに、第２ハーフトーン処理手段１２０が第３部分画像データの最初の３ラスタの処理を開始する。このようにして、第ｎ部分画像データまで２つのハーフトーン処理手段１１０，１２０による処理を繰り返す。
【００６２】
図１０は、この２つのハーフトーン処理手段１１０，１２０による処理を、分かり易く図示したものである。ここでは、画像データをＤ、各部分画像データをＤ１〜Ｄｎと図示している。上記のとおり、ハーフトーン処理ブロック１００では、画像データＤをｎ個に分割した部分画像データＤ１，Ｄ２・・・Ｄｎごとに、ハーフトーン処理後の処理済みデータが出力されることとなるが（「出力データ」と図示）、ハーフトーン処理（「ＨＴ１，ＨＴ２」と図示）は、第２部分画像データ以降、各部分画像データの先端部（３ラスタ分）がオーバーラップ処理されている。すなわち、図示「ＨＴ２」に相当する３ラスタ分のデータを第２ハーフトーン処理手段１２０が処理し、その処理によって発生した誤差値を用いて、図示「ＨＴ１」に相当する３６０ラスタ分のデータを第１ハーフトーン処理手段１１０が処理する。
【００６３】
なお、最後の部分画像データ（第ｎ部分画像データＤｎ）については、続く部分画像データが存在しないため、第ｎ部分画像データの最後３ラスタの処理は、第１ハーフトーン処理手段１１０単独の処理となる（第２ハーフトーン処理手段１２０によるオーバーラップ処理は実行されない）。
【００６４】
続いて、図１１および図１２を参照し、図９に示した往路用のハンドル１３０ａと復路用のハンドル１３０ｂとの切り替えについて、さらに詳細に説明する。図１１に示すように、例えば「往路印刷時」を想定した場合、往路用のハンドル１３０ａは印刷用として機能し、復路用のハンドル１３０ｂは、誤差計算用として機能する。すなわち、第１ハーフトーン処理手段１１０が往路用のハンドル１３０ａを利用し、第２ハーフトーン処理手段１２０が往路用のハンドル１３０ｂを利用する。図示の例は、往路画像データのハーフトーン処理を実行している途中であり、残り３ラスタまでには至っていない状態を示している。したがって、まだ復路用のハンドル１３０ｂは機能しておらず、データバッファ３６ｂおよび誤差バッファ３５ｂは初期化された状態（何もデータが書き込まれていない状態）となっている。なお、データバッファ３６ａが所定量（例えば、３２ラスタ分）に達すると、コマンド変換バッファ３７に、処理済みデータである２値化データを出力する。そして、往路画像データの全ラスタ分の処理済みデータの出力を終えた時点で、ハンドル１３０ａ，１３０ｂを切り替え、往路用のハンドル１３０ａを誤差計算用、復路用のハンドル１３０ｂを印刷用として機能させる。
【００６５】
なお、上記のとおりデータバッファ３６ａ，３６ｂは所定量ごとにデータを出力するため、その容量は任意に設定可能であるが、誤差バッファ３５ａ，３５ｂについては、先行誤差値用の３ラスタ分と１バンド分（本実施例では３６０ラスタ分）の誤差値を記憶可能な容量が必要となる。
【００６６】
図１２は、誤差バッファ３５ａ，３５ｂの初期化のタイミングを説明するための図である。例えば、「往路印刷時」においては、上記のとおり往路用のハンドル１３０ａを印刷用、復路用のハンドル１３０ｂを誤差計算用として機能させるが、第１ハーフトーン処理手段１１０が往路画像データの全ラスタ分の処理を終えると、同図（ａ）に示す状態となる。つまり、誤差バッファ３５ａには、往路画像データ全て（３６０ラスタ分）の誤差値が書き込まれており、誤差バッファ３５ｂにも先行誤差値３ラスタ分が書き込まれている。
【００６７】
ここで、印刷方向が切り替わると、第１ハーフトーン処理手段１１０の処理結果であるデータバッファ３６ａ内のデータをコマンド変換バッファ３７に出力し、さらに各ハンドル１３０ａ，１３０ｂの機能が入れ替わる。同図（ｂ）は、その印刷方向切替直後の状態を示したものである。すなわち、往路用のハンドル１３０ａは、誤差計算用に切り替わったときに、データバッファ３６ａおよび誤差バッファ３５ａが初期化される。一方、復路用のハンドル１３０ｂには、データバッファ３６ｂおよび誤差バッファ３５ｂに、それぞれ３ラスタ分の処理結果と誤差値が書き込まれているが、データバッファ３６ｂには、続く復路画像データの処理結果が上書きされる。すなわち、先行して行った第２ハーフトーン処理手段１２０による処理結果は利用されない。したがって、誤差計算用に切り替わったときに、データバッファ３６ａを初期化しても良い。また、誤差バッファ３５ｂに書き込まれた誤差値はそのまま残り、これを用いて第１ハーフトーン処理手段１１０により復路画像データのハーフトーン処理が開始される。したがって、復路用のハンドル１３０ｂが印刷用として機能したときの最初のラスタの誤差値は、誤差バッファ３５ｂの４ラスタ目に書き込まれることとなる。
【００６８】
次に、図１３ないし図１５のフローチャートを参照し、プリンタドライバ２３（主に画像処理モジュール２６）（図１参照）による印刷ジョブの処理について説明する。
【００６９】
図１３に示すように、印刷ジョブの処理工程は、印刷ジョブの初期設定（Ｓ１０）、ページごとの初期設定（Ｓ２０）、バンド（印刷ヘッド４７の一回の主走査で印刷可能な領域）ごとの印刷処理（Ｓ３０）、ページごとの終了処理（Ｓ４０）、印刷ジョブの終了処理（Ｓ５０）に大別される。
【００７０】
印刷ジョブの初期設定（Ｓ１０）では、まずＬＵＴ切替フラグを初期化する（Ｓ１１）。このＬＵＴ切替フラグは、上記のとおり参照する色処理ＬＵＴ３３ａ，３３ｂを往路印刷時と復路印刷時とで切り替えて用いる場合に有効となる。このフラグの切替は、プリンタドライバ２３によって提供されるＧＵＩを用いて行うことができる（有効／無効を設定できる）が、ここでは印刷モード（印刷品質や印刷媒体に応じてユーザが設定可能なモード）によって決定されるものとする。すなわち、例えば印刷モードＡ〜Ｄのうち、ＡまたはＢが設定されている場合は、ＬＵＴ切替フラグを有効とし、ＣまたはＤが設定されている場合は、ＬＵＴ切替フラグを無効とするといった制御を行う。したがって、ＬＵＴ切替フラグの初期化後（Ｓ１１）、印刷モードに基づくＬＵＴ切替設定を確認し（Ｓ１２）、ＬＵＴ切替フラグが有効である場合は（Ｓ１２：有効）、ＬＵＴ切替フラグの設定を“ｔｒｕｅ”とする（Ｓ１３）。
【００７１】
続いて、ページごとの初期設定（Ｓ２０）では、ＬＵＴ切替フラグを確認し（Ｓ２１）、無効である場合は（Ｓ２１：ｆａｌｓｅ）、ハーフトーン処理ブロック１００（図９参照）の往路用のハンドル１３０ａを指定する（Ｓ２２）。すなわちこの場合は、往路印刷時および復路印刷時の両方において、往路用のハンドル１３０ａを利用し、ハンドル１３０ａ，１３０ｂの切替を行わない。また、第２ハーフトーン処理手段１２０による誤差計算用のハーフトーン処理も行わず、第１ハーフトーン処理手段１１０が往路用のハンドル１３０ａを用いて全ての部分画像データの処理を行うこととなる。
【００７２】
一方、ＬＵＴ切替フラグを確認し（Ｓ２１）、有効である場合は（Ｓ２１：ｔｒｕｅ）、ハーフトーン処理ブロック１００の往路印刷用と復路印刷用の２つのハンドル１３０ａ，１３０ｂを指定し（Ｓ２３，Ｓ２４）、これまでの印刷ヘッド４７の移動方向を“復路”に設定し、さらに最新の出力バンドの開始ラスタ位置を“−１”とする（Ｓ２５）。これは（印刷ヘッド４７の移動方向を“復路”に設定するのは）、最初の部分画像データＤ１に対する印刷ヘッド４７の移動方向は必ず往路方向となり（印刷開始位置Ｐから主走査方向右側に移動する，図３参照）、印刷ヘッド４７の移動方向は１パス印刷ごとに切り替わるため、これまでの印刷ヘッド４７の移動方向、すなわち“前回の印刷ヘッド４７の移動方向”を規定するとしたら、仮想的に“復路”としなければならないためである（印刷媒体５１への最初の印刷開始前に空白スキップが生じる場合も同様）。これにより、ページの先頭を判別するための処理を省略することができる。また、最新の出力バンドの開始ラスタ位置を“−１”とするのは、ページの初期設定のためである（これから実行するラスタ位置を出力バンドの第１ラスタとするためである）。
【００７３】
続いて、バンドごとの印刷処理を行い（Ｓ３０）、バンドが残っているか否かを判別し（Ｓ３１）、残っている場合は（Ｓ３１：Ｙｅｓ）、バンドごとの印刷処理を繰り返す（Ｓ３０）。また、バンドが残っていない場合は（Ｓ３１：Ｎｏ）、ページごとの終了処理を行い（Ｓ４０）、ページが残っているか否かを判別し（Ｓ４１）、残っている場合は（Ｓ４１：Ｙｅｓ）、ページごとの初期設定を行う（Ｓ２０）。また、ページが残っていない場合は（Ｓ４１：Ｎｏ）、印刷ジョブの終了処理を行う（Ｓ５０）。
【００７４】
ここで、図１４および図１５のフローチャートを参照し、バンドごとの印刷処理（Ｓ３０）について説明する。図１４に示すように、当該バンドごとの印刷処理は、画像データを構成するビットマップのラスタ分、繰り返し実行されるものである（Ｓ３０１）。そして、まずビットマップのラスタの印刷時の方向を、これまでの印刷時のヘッド移動方向、すなわち“復路”とし（図１３のＳ２５参照）、さらにその方向の最初のラスタではないものと規定する（Ｓ３０２）。
【００７５】
続いて、ＬＵＴ切替フラグの状態を確認し（Ｓ３０３）、ＬＵＴ切替フラグが有効となっていない場合（Ｓ３０３：ｆａｌｓｅ）、通常のハーフトーン処理を実行する（Ｓ３０４）。すなわち、図１３のＳ１２およびＳ２１と同様の判別を行い、ＬＵＴ切替設定が無効である場合は、往路用のハンドル１３０ａのみを用いたハーフトーン処理を行う。そして、ラスタが残っているか否かを判別し（Ｓ３０５）、残っている場合は（Ｓ３０５：Ｙｅｓ）、Ｓ３０１以降の処理を繰り返す。また、ラスタが残っていない場合は（Ｓ３０５：Ｎｏ）、バンドごとの印刷処理（Ｓ３０）を終了する。
【００７６】
一方、ＬＵＴ切替フラグが有効となっている場合は（Ｓ３０３：ｔｒｕｅ）、最初の出力、または印刷ヘッド４７の高さ分のラスタ数（３６０ラスタ）以上のラスタを処理したか否かを判別する（Ｓ３０６）。なお、本実施例では印刷ヘッド４７の高さ分のラスタ数（３６０ラスタ）を用いたが、前述の部分画像データのラスタ構成で述べたように、印刷ヘッド４７のノズル数以下の値をヘッド高さとしてもかまわない。その場合は印刷ヘッド４７のすべてのノズルを使用しない状態（一部のノズルを使用した状態）で印刷することになる。ここで、例えばバンドの最初のラスタである場合は（Ｓ３０６：Ｙｅｓ）、その方向の最初のラスタであり、ビットマップのラスタの印刷時の方向を、現在の方向（復路，Ｓ３０２参照）と反対の方向、すなわち“往路”と規定する（Ｓ３０７）。但し、この段階ではあくまでも仮定の印刷方向であり、実際に印刷方向を決定するのは後述するＳ３１６（図１５参照）である。
【００７７】
続いて、印刷用のハーフトーン処理ブロック１００のハンドルを往路用のハンドル１３０ａとし、さらにオーバーラップ用（誤差計算用）のハーフトーン処理ブロック１００のハンドルを復路用のハンドル１３０ｂと規定する（Ｓ３０８）。すなわち、第１ハーフトーン処理手段１１０が往路用のハンドル１３０ａを利用し、第２ハーフトーン処理手段１２０が復路用のハンドル１３０ｂを利用するものと仮定する。なお、Ｓ３０６で“Ｎｏ”と判定した場合は、印刷ヘッド４７の移動方向が変わらないものとして、Ｓ３０７を省略し、Ｓ３０８に移行する。
【００７８】
続いて、ビットマップのラスタの印刷時の方向が“復路”であるか否かを判別する（Ｓ３０９）。例えばバンドの最初のラスタである場合は、Ｓ３０７で“往路”と規定しているため、Ｓ３０９では“Ｎｏ”と判定する。一方、ビットマップのラスタの印刷時の方向が“復路”である場合は、印刷用のハーフトーン処理ブロック１００のハンドルを復路用のハンドル１３０ｂとし、さらにオーバーラップ用のハーフトーン処理ブロック１００のハンドルを往路用のハンドル１３０ａと規定する（Ｓ３１０）。
【００７９】
続いて、最初の出力ではなく、ヘッドの高さ分のラスタを処理するまでの残りラスタ数がオーバーラップを行うラスタ数（３ラスタ）以下であるか否かを判別する（Ｓ３１１）。例えばバンドの最初のラスタである場合は、最初の出力であるから“ｆａｌｓｅ”と判定し、印刷用のハーフトーン処理ブロック１００のハンドルを用いてハーフトーン処理を行う（Ｓ３１２）。すなわち、当該Ｓ３１２は、第１ハーフトーン処理手段１１０による処理である。また、Ｓ３１１で“ｔｒｕｅ”と判定した場合は、オーバーラップ用のハーフトーン処理ブロック１００のハンドルを用いてハーフトーン処理を行う（Ｓ３１３）。すなわち、当該Ｓ３１２は、第２ハーフトーン処理手段１２０による処理であり、その処理結果は使わない（各データバッファ３６ａ，３６ｂに一旦書き込むが、後に上書きされる）。また、Ｓ３１１で“ｔｒｕｅ”と判定した場合は、Ｓ３１２の処理（第１ハーフトーン処理手段１１０による処理）も同時に行う（オーバーラップ処理する）。
【００８０】
続いて、その方向の最初のラスタであるか否かを判別し（Ｓ３１４）、最初のラスタである場合（例えばバンドの最初のラスタである場合）は（Ｓ３１４：ｔｒｕｅ）、ハーフトーン結果が空白であるか否かを判別する（Ｓ３１５）。ここで、ハーフトーン結果に基づいて判別するのは、ハーフトーン処理によって空白ラスタであるはずの所に有効画素が発生する可能性があるためである。ここで、ハーフトーン結果が空白で無い場合、すなわち印刷すべき有効画素が存在する場合は（Ｓ３１５：Ｎｏ）、ヘッド移動方向をビットマップのラスタの印刷時の方向と決定し、最新の（前回の）出力バンドの開始ラスタ位置を現在のラスタ位置に書き換え、Ｓ３０５（図１４参照）に戻る。なお、Ｓ３１６において決定するヘッド移動方向は、Ｓ３０７（図１４参照）で仮定した方向、すなわち“往路”である。
【００８１】
また、Ｓ３１４で“ｆａｌｓｅ”と判定した場合、すなわち最初のラスタで無い場合は、空白チェック（Ｓ３１５）は不用であるため、無駄な処理を避けるべく、直接Ｓ３０５に戻る。また、Ｓ３１５で“Ｙｅｓ”と判定した場合、すなわち空白ラスタの場合も、Ｓ３１６を省略してＳ３０５に戻る。
【００８２】
以上説明したとおり、本実施形態によれば、カラーマッチング処理において、往路画像データと復路画像データに対し、それぞれ往路用色処理ＬＵＴ３３ａと復路用色処理ＬＵＴ３３ｂを参照するため、実験値に基づいて色むらを解消できるように各色処理ＬＵＴを設計することで、印刷方向の違いを起因とする色むらを解消することができる。また、各色処理テーブル３３ａ，３３ｂ上に存在しない値は、補間演算モジュール２７の補間演算処理によって推定するため、膨大な色変換のパターンを記載した色処理ＬＵＴ３３ａ，３３ｂを用いなくても良い。
【００８３】
また、補間演算モジュール２７は、各色処理ＬＵＴ３３ａ，３３ｂ上に決定したＲＧＢの値に対応するＣＭＹＫの値が存在しない場合のみ補間演算処理を実行し、各色処理ＬＵＴ３３ａ，３３ｂ上にＣＭＹＫの値が存在する場合は、その値を用いてインク吐出量を決定するため、無駄な処理を省略することができる。また、搭載する機器の（色処理ＬＵＴ３３ａ，３３ｂを記憶する）メモリ容量と、（補間演算処理を制御する）制御能力とに応じて、各色処理ＬＵＴ３３ａ，３３ｂのデータ量を決定することができる。すなわち、メモリ容量に制限がない場合は、色処理ＬＵＴ３３ａ，３３ｂのデータ量を大きくすることによって制御負荷を軽減することができ、高性能なＣＰＵを用いる場合は、各色処理ＬＵＴ３３ａ，３３ｂのデータ量を小さくすることができる。
【００８４】
また、ハーフトーン処理において、往路画像データまたは復路画像データの通常のハーフトーン処理に先行して誤差計算用のハーフトーン処理を行い、それによって発生した先行誤差値を往路用誤差バッファ３５ａまたは復路用誤差バッファ３５ｂに記憶させておくため、データバッファ３６ａ，３６ｂの切替時に誤差バッファ３５ａ，３５ｂがクリアになっていることがない。すなわち、印刷ヘッド４７の移動方向切替時に誤差拡散処理を開始すると、誤差がクリアされてしまうため、ドットの発生遅れが顕著になってしまうが、第１ハーフトーン処理手段１１０は、第２ハーフトーン処理手段１２０によって計算された先行誤差値の伝搬を受けて（予め誤差バッファ３５ａ，３５ｂに記憶されている先行誤差値を用いて）ハーフトーン処理を開始することができるため、印刷画像上に不自然な不連続が発生することを防止することができる。したがって、往路印刷用と復路印刷用の２つのデータバッファ３６ａ，３６ｂを切り替えて用いる場合であっても、データバッファ３６ａ，３６ｂの切替時における画質の低下を防止することができる。
【００８５】
また、第２ハーフトーン処理手段１２０による誤差計算用のハーフトーン処理は、各部分画像データの先端部における３ラスタだけで良いため、第２ハーフトーン処理手段１２０で全ラスタ（３６０ラスタ）の処理を行う場合と比較して、制御負荷を１／１２０（３／３６０）に軽減することができる。
【００８６】
また、２つのデータバッファ３６ａ，３６ｂは、往路印刷用と復路印刷用とに分けられているため、印刷方向の切替と同期して使用するデータバッファ３６ａ，３６ｂを切り替えれば良く、制御が容易である。
【００８７】
次に、図１６を参照し、本発明の第２実施形態を説明する。上記の第１実施形態では、ハーフトーン処理時に、往路印刷用と復路印刷用とで２つのデータバッファ３６ａ，３６ｂを用いるものとしたが（図１１参照）、本実施形態では、データバッファ２３６が１つである点で異なる。そこで、上記の第１実施形態と異なる点を中心に説明する。
【００８８】
図１６に示すように、本実施形態のハーフトーン処理ブロック２００は、通常のハーフトーン処理を行う第１ハーフトーン処理手段２１０と、誤差計算用のハーフトーン処理を行う第２ハーフトーン処理手段２２０と、２つのハンドル２３０ａ，２３０ｂとを備えている。また、第１ハーフトーン処理手段２１０と第２ハーフトーン処理手段２２０が、それぞれハンドル２３０ａ，２３０ｂを切り替えて用いる点、並びに各ハンドル２３０ａ，２３０ｂに、それぞれ誤差バッファ（奇数誤差バッファ，偶数誤差バッファ）２３５ａ，２３５ｂを備えている点については、第１実施形態と同様である。なお、この他第１実施形態と同様、各ハンドル２３０ａ，２３０ｂに、それぞれ色処理ＬＵＴ３３ａ，３３ｂおよびドット発生ＬＵＴ３４ａ，３４ｂを備えても良いし、共通する色処理ＬＵＴおよびドット発生ＬＵＴを第１ハーフトーン処理手段２１０および第２ハーフトーン処理手段２２０の両方が参照するようにしても良い。
【００８９】
ここで、本実施形態におけるハーフトーン処理ブロック２００の処理について説明する。ハーフトーン処理ブロック２００が、カラーマッチング処理後の第１部分画像データ（往路画像データ）を取得すると、まず第１ハーフトーン処理手段２１０により通常のハーフトーン処理を行い、その結果発生した誤差値を、往路用のハンドル２３０ａ内の誤差バッファ２３５ａに記憶させる。また、第１ハーフトーン処理手段２１０の処理結果は、データバッファ２３６に記憶させる。
【００９０】
そして、第１部分画像データの残り３ラスタ目（３５８ラスタ目）の処理を開始するときに、同時に第２ハーフトーン処理手段２２０による第２部分画像データの誤差計算用のハーフトーン処理を開始する。この結果発生した誤差値（先行誤差値）は、復路用のハンドル２３０ｂ内の誤差バッファ２３５ｂに記憶させ、処理結果は、図示しない他の記憶領域に記憶させておく。当該他の記憶領域には、この後も第２ハーフトーン処理手段２２０による３ラスタ分の処理結果が書き込まれていくが、当該処理結果は順次上書きされていくものであり、特に利用されない。
【００９１】
続いて、第１ハーフトーン処理手段２１０による第１部分画像データの処理を終えると、印刷方向の切替に伴って、第１ハーフトーン処理手段２１０は、復路用のハンドル２３０ｂ内の誤差バッファ２３５ｂに既に記憶されている３ラスタ分の誤差値を用いて第２部分画像データの処理を開始する。同図は、第１ハーフトーン処理手段２１０による第２部分画像データの処理開始時の状態を示したものである。このように、既に誤差バッファ２３５ａ，２３５ｂに記憶されている誤差値を用いて、各部分画像データの処理を開始するため、誤差値がクリアされることが無く、良好な画質を得ることができる。なお、第１ハーフトーン処理手段２１０による第２部分画像データの処理結果も、第１部分画像データの処理結果煮続けてデータバッファ２３６内に記憶させ、データバッファ２３６は所定量のデータが蓄積された時点で、コマンド変換バッファ３７にデータを出力する（データ出力手段）。また、各誤差バッファ２３５ａ，２３５ｂは、誤差計算用に切り替わった時点で初期化される。
【００９２】
以上説明したとおり、本実施形態によれば、通常のハーフトーン処理に先行して誤差計算用のハーフトーン処理を行い、それによって発生した先行誤差値を各誤差バッファ２３５ａ，２３５ｂに記憶させておき、これらを用いて通常の部分画像データのハーフトーン処理を開始するため、ハーフトーン処理の開始時に各誤差バッファ２３５ａ，２３５ｂがクリアになっていることがない（切替直後は各誤差バッファ２３５ａ，２３５ｂに先行誤差値が既に記憶されているため）。すなわち、第１ハーフトーン処理手段２１０は、処理する部分画像データに応じて参照する誤差バッファ２３５ａ，２３５ｂを切り替えるだけで、第２ハーフトーン処理手段２２０によって計算された先行誤差値の伝搬を受けた（予め誤差バッファ２３５ａ，２３５ｂに記憶されている先行誤差値を用いた）ハーフトーン処理を開始することができるため、誤差バッファ２３５ａ，２３５ｂの初期化に伴う画質の低下を解消することができる。
【００９３】
また、第１実施形態と比較してデータバッファ２３６を１つだけ備えればよいため、ハーフトーン処理ブロック２００の構成を簡素化できるといった利点もある。
【００９４】
なお、上記の例では、バンド（印刷ヘッドの一回の主走査で印刷可能な領域）単位で部分画像データを分割するものとしたが、複数バンド単位でも良いし、ページ単位であっても良い。すなわち画像データは、画像処理後のデータの利用形態や、画像処理性能に応じて、任意のデータサイズの部分画像データに分割可能である。この構成によれば、部分画像データのデータ量に応じて、２つの誤差バッファ２３５ａ，２３５ｂの容量を決定することができるため、誤差バッファ２３５ａ，２３５ｂに要するメモリ容量を節約することができる。すなわち、部分画像データをページ単位とした場合は、１ページ分の誤差値を記憶できるだけの容量で良く、長尺印刷を行う場合のように、複数のページに跨った連続画像を印刷することを想定した大容量の誤差バッファを設ける必要がない。
【００９５】
次に、図１７を参照し、本発明の第３実施形態を説明する。上記の第２実施形態では、往路印刷用の誤差バッファ（奇数番目の部分画像データの誤差値を記憶させる誤差バッファ）２３５ａと、復路印刷用の誤差バッファ（偶数番目の部分画像データの誤差値を記憶させる誤差バッファ）２３５ｂとを備え、第１ハーフトーン処理手段２１０および第２ハーフトーン処理手段２２０が参照する（書き込み対象となる）誤差バッファ２３５ａ，２３５ｂを切り替えるものとしたが、本実施形態では、通常誤差バッファ３３１と先行誤差バッファ３３２とを備え、第１ハーフトーン処理手段３１０によって発生した誤差値を通常誤差バッファ３１に、また第２ハーフトーン処理手段３２０によって発生した誤差値を先行誤差バッファ３３２に書き込むようにした点で異なる。そこで、上記の第２実施形態と異なる点を中心に説明する。
【００９６】
図１７に示すように、本実施形態のハーフトーン処理ブロック３００は、通常のハーフトーン処理を行う第１ハーフトーン処理手段３１０と、誤差計算用のハーフトーン処理を行う第２ハーフトーン処理手段３２０と、通常誤差バッファ３３１と、先行誤差バッファ３３２と、を備えている。なお、第２実施形態と同様、色処理ＬＵＴやドット発生ＬＵＴを有するハンドル内に各誤差バッファ３３１，３３２を備えるようにしても良いし、共通する色処理ＬＵＴおよびドット発生ＬＵＴを各ハーフトーン処理手段３１０，３２０が参照するようにしても良い。
【００９７】
ここで、本実施形態におけるハーフトーン処理ブロック３００の処理について説明する。ハーフトーン処理ブロック３００が、カラーマッチング処理後の第１部分画像データ（往路画像データ）を取得すると、まず第１ハーフトーン処理手段３１０が通常のハーフトーン処理を行い、その結果発生した誤差値を、通常誤差バッファ３３１に記憶させる。また、第１ハーフトーン処理手段３１０の処理結果は、データバッファ３３６に記憶させる。
【００９８】
そして、第１ハーフトーン処理手段３１０が第１部分画像データの残り３ラスタ目（３５８ラスタ目）の処理を開始するときに、同時に第２ハーフトーン処理手段３２０による第２部分画像データの誤差計算用のハーフトーン処理を開始する。この結果発生した誤差値（先行誤差値）は先行誤差バッファ３３２に記憶させ、処理結果は、第２実施形態と同様に図示しない他の記憶領域に記憶させておく。
【００９９】
続いて、第１ハーフトーン処理手段３１０による第１部分画像データの処理を終えると、印刷方向の切替に伴って通常誤差バッファ３３１は初期化される。また、第１ハーフトーン処理手段３１０は、先行誤差バッファ３３２に既に記憶されている３ラスタ分の誤差値を読み出して通常誤差バッファ３３１に書き込み、当該誤差値を用いて第２部分画像データの処理を開始する。なお、読み出した誤差値を通常誤差バッファ３３１に書き込むのではなく、第１ハーフトーン処理手段３１０が先行誤差バッファ３３２に記憶されている先行誤差値を参照しながら第２部分画像データの処理を開始するようにしても良い。このように、第１ハーフトーン処理手段３１０は、先行誤差バッファ３３２に記憶されている先行誤差値を用いて、各部分画像データの処理を開始するため、誤差値が０のハーフトーン処理結果となることが無く、良好な画質を得ることができる。なお、先行誤差バッファ３３２に記憶されている先行誤差値は順次上書きされていくため、先行誤差バッファ３３２は初期化されない。
【０１００】
以上説明したとおり、誤差計算用のハーフトーン処理によって発生した先行誤差値を先行誤差バッファ３３２に記憶させておき、これを用いて通常のハーフトーン処理を開始するため、先行誤差値の伝搬を受けることができる（予め先行誤差バッファ３３２に記憶されている先行誤差値を用いてハーフトーン処理を開始することができる）。すなわち、誤差値の連続性を失うことなく部分画像データのハーフトーン処理を継続することができるため、通常誤差バッファ３３１の初期化に伴う画質の低下を解消することができる。また、先行誤差バッファ３３２の容量は、３ラスタ分の誤差値を記憶するだけの小容量で良いため、先行誤差バッファ３３２に要するメモリ容量も節約することができる。
【０１０１】
なお、第２実施形態と同様、本実施形態においても、画像処理後のデータの利用形態や、画像処理性能に応じて、部分画像データを任意の単位に設定可能である。
【０１０２】
以上、３つの実施形態により本発明を説明したが、上記の実施形態のように、色変換処理やハーフトーン処理を実現する画像処理モジュール２６を、ホストコンピュータ２０内に備えるのではなく（図１参照）、プリンタ４０内に備えるようにしても良い。すなわち、プリンタ４０のファームウェアの一部として画像処理モジュール２６を搭載しても良い。また、印刷システム１０以外にも、画像処理を実行可能なシステムや装置であれば、本発明を適用可能である。
【０１０３】
また、誤差計算用のハーフトーン処理は、各部分画像データの先端部における３ラスタであるものとしたが、４ラスタや５ラスタなど、その値は適宜変更可能である。但し、制御負荷を考慮すると、１０ラスタ以下であることが好ましい。
【０１０４】
また、上記の誤差計算を行うラスタ数を設定する手段、すなわちＧＵＩ等によりユーザが容易にラスタ数を変更することができる手段を設けることが好ましい。この構成によれば、ユーザの好みや画像データの種類に応じて、ラスタ数を設定することができる。
【０１０５】
また、上記の実施形態に示した、画像処理モジュール２６の機能をプログラムとして提供することも可能である。また、そのプログラムを記録媒体（図示省略）に格納して提供することも可能である。記録媒体としては、ＣＤ−ＲＯＭ、フラッシュＲＯＭ、メモリカード（コンパクトフラッシュ（登録商標）、スマートメディア、メモリスティック等）、コンパクトディスク、光磁気ディスク、デジタルバーサタイルディスクおよびフレキシブルディスク、ハードディスク等を利用可能である。
【０１０６】
また、上記の実施形態における印刷システム１０やハーフトーン処理ブロック１００，２００，３００の例によらず、装置構成、システム構成、印刷方式、処理工程等について、本発明の要旨を逸脱しない範囲で、適宜変更も可能である。すなわち、上記に示したインクジェットプリンタのみ成らず、感熱転写方式やワイヤドット方式等の印刷方式に本発明を適用しても良い。また、印刷媒体についても、単票紙ではなくレシート紙であっても良いし、用紙以外の記録媒体でも良い。
【０１０７】
また、上記の実施形態では、印刷ヘッド４７からインクを吐出して画像形成を行うことを「印刷」と称したが、文字や図形を形成するか否か、また形成したものが視覚可能か否かに関わらず、広く記録媒体上に画像およびパターンを形成する場合にも、本発明を適用可能である。また、「インク」とは、広く着色剤を含むものであり、その種別（染料系インクや顔料系インクなど）は問わない。
【図面の簡単な説明】
【０１０８】
【図１】本発明の一実施形態に係る印刷システムのブロック図である。
【図２】キャリッジの構成を示す図である。
【図３】キャリッジの動作を説明するための図である。
【図４】プリンタドライバにおける各種処理の概要を示すフローチャートである。
【図５】色処理ＬＵＴの一例を示す図である。
【図６】カラーマッチング処理を示すフローチャートである。
【図７】補間演算処理を説明するための図である。
【図８】図７に続く説明図である。
【図９】ハーフトーン処理ブロックの構成図である。
【図１０】ハーフトーン処理を説明するための図である。
【図１１】ハンドルの切替を説明するための図である。
【図１２】図１１に続く説明図である。
【図１３】印刷ジョブの処理を示すフローチャートである。
【図１４】印刷ジョブの処理の一部であるバンドごとの印刷処理のフローチャートである。
【図１５】図１４に続くフローチャートである。
【図１６】本発明の第２実施形態に係るハーフトーン処理を説明するための図である。
【図１７】本発明の第３実施形態に係るハーフトーン処理を説明するための図である。
【符号の説明】
【０１０９】
１０：印刷システム，２０：ホストコンピュータ，２３：プリンタドライバ，２６：画像処理モジュール，３１：カラーマッチング＆ハーフトーンモジュール，３３：色処理ＬＵＴ，３４：ドット発生ＬＵＴ，３５：誤差バッファ，３６：データバッファ，４０：プリンタ，４３：印刷部，４４：キャリッジ，４７：印刷ヘッド，５１：印刷媒体，１００：ハーフトーン処理ブロック，１１０：第１ハーフトーン処理手段，１２０：第２ハーフトーン処理手段，１３０：ハンドル，Ｄ：画像データ，Ｄ１〜Ｄｎ：部分画像データ
【図１】
0004544141.tif 000002
【図２】
0004544141.tif 000003
【図３】
0004544141.tif 000004
【図４】
0004544141.tif 000005
【図５】
0004544141.tif 000006
【図６】
0004544141.tif 000007
【図７】
0004544141.tif 000008
【図８】
0004544141.tif 000009
【図９】
0004544141.tif 000010
【図１０】
0004544141.tif 000011
【図１１】
0004544141.tif 000012
【図１２】
0004544141.tif 000013
【図１３】
0004544141.tif 000014
【図１４】
0004544141.tif 000015
【図１５】
0004544141.tif 000016
【図１６】
0004544141.tif 000017
【図１７】
0004544141.tif 000018