(57)【要約】【課題】  離れた画素で発生した誤差の処理対象画素に与える影響を低減する。【解決手段】  入力した画像データにハーフトーン処理を施して、単位面積当りの濃度の異なる２種以上の所定ドットを主走査方向および副走査方向に配列する印刷データを生成する画像処理装置であって、ハーフトーン処理対象の画素で発生する誤差を格納する誤差バッファと、処理対象を順次変更するのに伴って、誤差バッファに格納する誤差の更新履歴の情報を記憶する履歴バッファと、処理対象の画素に誤差バッファに格納された誤差を反映して、所定ドットの形成の有無を判断して印刷データを生成する判断処理部とを備え、判断処理部は、ドッド形成の有無の判断に先立って、履歴バッファに記憶された情報に基づいて、誤差バッファが副走査方向について更新されていない距離を求め、所定距離の間、誤差バッファが更新されない場合には、処理対象の画素に反映する誤差の影響を低減する誤差反映低減処理を行なう。【選択図】        図１
2006186752.tif 000002
【特許請求の範囲】
【請求項１】
入力した画像データにハーフトーン処理を施して、単位面積当りの濃度の異なる２種以上の所定ドットを主走査方向および副走査方向に配列する印刷データを生成する画像処理装置であって、
前記ハーフトーン処理の処理対象の画素で発生する誤差を格納する誤差バッファと、
前記処理対象の画素を順次変更するのに伴って、前記誤差バッファに格納する誤差の更新履歴の情報を記憶する履歴バッファと、
前記処理対象の画素に前記誤差バッファに格納された誤差を反映して、前記所定ドットの形成の有無を判断して前記印刷データを生成する判断処理部とを備え、
前記判断処理部は、
前記ドッド形成の有無の判断に先立って、前記履歴バッファに記憶された情報に基づいて、前記誤差バッファが前記副走査方向について更新されていない距離を求め、
所定距離の間、前記誤差バッファが更新されない場合には、前記処理対象の画素に反映する誤差の影響を低減する誤差反映低減処理を行なう
画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記判断処理部は、所定距離の間、前記誤差バッファが更新されない場合には、前記処理対象の画素に反映する誤差をゼロとして誤差の影響を低減する画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置であって、
前記判断処理部は、誤差拡散法または平均誤差最少法のいずれかを用いて、前記ハーフトーン処理を実行する画像処理装置。
【請求項４】
請求項１ないし３のいずれかに記載の画像処理装置であって、
前記所定ドットは、ドットサイズの異なる大ドット、中ドット、小ドットであり、
前記判断処理部は、３つのサイズのドットのうち、少なくとも大ドットについて、前記誤差反映低減処理を行なう
画像処理装置。
【請求項５】
請求項１ないし４のいずれかに記載の画像処理装置であって、
前記履歴バッファは、前記更新履歴の情報として、前記誤差バッファ内の誤差が更新されずに対象画素が変更された回数をカウントして記憶し、
前記判断処理部は、前記回数と所定の閾値とを比較することで、前記所定距離を判断する画像処理装置。
【請求項６】
請求項５に記載の画像処置装置であって、
前記判断処理部は、前記誤差バッファが更新された場合および前記誤差反映低減処理を実行した場合には、前記カウントした回数をリセットする画像処理装置。
【請求項７】
請求項１ないし６のいずれかに記載の画像処理装置であって、更に、
前記２種以上のドットを形成するヘッドを駆動して印刷を行なう印刷部を備え、
前記印刷部は、前記生成された印刷データに基づいて、前記ヘッドを印刷媒体に対して主走査方向および副走査方向へ移動しつつ、前記ドットを形成して印刷を行なう
画像処理装置。
【請求項８】
入力した画像データにハーフトーン処理を施して、単位面積当りの濃度の異なる２種以上の所定ドットを主走査方向および副走査方向に配列する印刷データを生成する際に、該ハーフトーン処理として実行する誤差拡散処理方法であって、
前記誤差拡散処理の処理対象の画素で発生する誤差を、誤差バッファに格納し、
前記処理対象画素を順次変更するのに伴って、前記誤差バッファに格納する誤差の更新履歴の情報を記憶し、
前記記憶された情報に基づいて、前記誤差バッファが前記副走査方向について更新されていない距離を求め、
所定距離の間、前記誤差バッファが更新されない場合には、前記処理対象の画素に反映する誤差の影響を低減する
誤差拡散処理方法。
【請求項９】
入力した画像データにハーフトーン処理を施して、単位面積当りの濃度の異なる２種以上の所定ドットを主走査方向および副走査方向に配列する印刷データを生成する際に、該ハーフトーン処理として実行する誤差拡散処理をコンピュータに実行させるためのプログラムであって、
前記誤差拡散処理の処理対象の画素で発生する誤差を、誤差バッファに格納する機能と、
前記処理対象画素を順次変更するのに伴って、前記誤差バッファに格納する誤差の更新履歴の情報を記憶する機能と、
前記記憶された情報に基づいて、前記誤差バッファが前記副走査方向について更新されていない距離を求める機能と、
所定距離の間、前記誤差バッファが更新されない場合には、前記処理対象の画素に反映する誤差の影響を低減する機能と
を前記コンピュータに実現させるプログラム。
【請求項１０】
請求項９に記載のプログラムをコンピュータに読み取り可能に記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を印刷する際に実行するハーフトーン処理の技術に関し、詳しくは誤差拡散処理の技術に関する。
【背景技術】
【０００２】
従来から、画像の階調値に応じて適切な密度でドットが形成されるように、各画素についてのドットの形成の有無を判断する手法として、ディザ法、平均誤差最小法、誤差拡散法など、種々のハーフトーン処理技術が知られている。こうしたハーフトーン処理は、画像データを印刷データに変換する画像処理として利用されており、特に、誤差拡散法を実行することで、生成される印刷画像を高画質なものとすることができるとされている。この誤差拡散法は、処理対象の画素に対し、ドット形成の有無により生じる階調値の誤差を、周辺の未処理画素に拡散し、画像全体で誤差を解消する手法である（下記、特許文献１，２参照）。
【０００３】
【特許文献１】特開平１１−３５５５７１号公報
【特許文献２】特開２００２−７７６４６号公報
【０００４】
また、こうした誤差拡散法による階調表現に加え、単位面積当りの濃度の異なる複数種類のドットを制御して階調表現を行なう画像処理装置がある。こうした画像処理装置には、例えば、濃淡の２種類のドットを形成する印刷データを生成するものや、大きさの異なるドット（「大ドット」「小ドット」）を形成する印刷データを生成するものがある。こうした複数のドットを用いることで、単ドットあたりに表現される階調値を増やすことができ、更に、各ドット形成の有無に誤差拡散法を用いることで、より一層、高画質な印刷画像の基となる印刷データを生成することができるとされている。
【０００５】
しかしながら、こうした画像処理装置では、誤差拡散処理によって発生した誤差を未処理画素に拡散するため、画像の種類によっては、意図しない画素位置に突然ドットが形成されてしまうという問題があった。例えば、グレー濃度の高いインクを使用して大ドットにより文字などを形成する場合、その大ドットの形成有無の判断により発生した誤差を、後続の画素に拡散する。後続の画素がグレー濃度の低いものであると、小ドットの形成有無が判断されて、大ドットは発生しない。そうすると、大ドットに拡散させる誤差は除序に累積される。ここで、大ドットを記録可能な程度のグレー濃度の画素が処理画素として出現すると、今まで累積した誤差により大ドットを記録するように判断される。つまり、こうした画像の場合、文字等で発生した誤差を、次に大ドットの記録が可能な画素が現れるまで解消することができなかった。場合によっては、文字から相当距離、離れた画素位置に突然、大ドットが記録され、画質の低下を招いていた。
【０００６】
なお、こうした問題は、平均誤差最小法を用いてハーフトーン処理を行なう場合にも同様であった。平均誤差最小法は、周辺の処理済みの画素で生じた誤差の重み付き平均値で、次の処理対象画素の階調値を修正するものである。つまり、上述の誤差拡散法と、平均誤差最小法は、誤差の拡散作業をいつ行うかが異なるだけであり、論理的には等価なものである。したがって、意図しない画素位置にドットが形成されることがあった。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、こうした問題を踏まえて、処理対象画素から遠く離れた画素で発生した誤差の処理対象画素に与える影響を低減し、画質を向上する印刷データを生成する画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の画像処理装置は、上記課題を鑑み、以下の手法を採った。すなわち、入力した画像データにハーフトーン処理を施して、単位面積当りの濃度の異なる２種以上の所定ドットを主走査方向および副走査方向に配列する印刷データを生成する画像処理装置であって、前記ハーフトーン処理の処理対象の画素で発生する誤差を格納する誤差バッファと、前記処理対象の画素を順次変更するのに伴って、前記誤差バッファに格納する誤差の更新履歴の情報を記憶する履歴バッファと、前記処理対象の画素に前記誤差バッファに格納された誤差を反映して、前記所定ドットの形成の有無を判断して前記印刷データを生成する判断処理部とを備え、前記判断処理部は、前記ドッド形成の有無の判断に先立って、前記履歴バッファに記憶された情報に基づいて、前記誤差バッファが前記副走査方向について更新されていない距離を求め、所定距離の間、前記誤差バッファが更新されない場合には、前記処理対象の画素に反映する誤差の影響を低減する誤差反映低減処理を行なうことを要旨としている。
【０００９】
本発明の画像処理装置によれば、誤差バッファ内の誤差が、処理対象の画素を順次変更するのに伴って更新されたか否かの履歴を表わす更新履歴の情報を記憶し、これに基づいて、所定距離の間、誤差バッファが副走査方向に更新されていないと判断すると、処理対象の画素への誤差の影響を低減する。すなわち、現在の対象画素のハーフトーン処理の際に、その画素から十分離れた処理済みの画素で発生し、更新されずに積み残された誤差が与える影響を低減する。したがって、積み残された誤差の影響により不所望な位置に突然ドットを形成することを抑制し、画質を向上する印刷データを生成することができる。
【００１０】
なお、本明細書における主走査方向とは、印刷データにより印刷される画像の用紙の幅方向（画像の行方向とも呼ぶ）を意味し、副走査方向とは、主走査方向に直行する方向（画像の列方向とも呼ぶ）を意味している。本発明の画像処理装置として、印刷装置を例にすると、印刷装置が備えるヘッドが移動する用紙の幅方向が主走査方向に該当し、用紙の送り方向が副走査方向に該当する。また、副走査方向は、ラスタ方向とも呼ぶこととする。
【００１１】
上記の構成を有する画像処理装置の判断処理部は、所定距離の間、前記誤差バッファが更新されない場合には、前記処理対象の画素に反映する誤差をゼロとして誤差の影響を低減するものとしても良い。
【００１２】
かかる画像処理装置によれば、誤差反映低減処理として積み残された誤差をゼロとする。つまり、現在の対象画素の処理では、積み残された誤差は影響を与えない。したがって、十分離れた処理済み画素で発生した不要な誤差が、現在の処理対象画素に反映されるのを防ぐことができる。
【００１３】
上記の構成を有する画像処理装置の判断処理部は、誤差拡散法または平均誤差最少法のいずれかを用いて、前記ハーフトーン処理を実行するものとしても良い。こうした手法を用いたハーフトーン処理において、誤差反映低減処理を行なうことで画質を向上する印刷データを生成することができる。
【００１４】
上記の構成を有する画像処理装置において、所定ドットは、ドットサイズの異なる大ドット、中ドット、小ドットであり、前記判断処理部は、３つのサイズのドットのうち、少なくとも大ドットについて、前記誤差反映低減処理を行なうものとしても良い。
【００１５】
かかる画像処理装置によれば、大，中，小ドットのうち、少なくとも大ドットについて誤差反映低減処理を実行して印刷データを生成する。中，小ドットの場合に比べ、大ドットが不所望な位置に大ドットが生成されると特に目立つ。こうした大ドットに対して、誤差反映低減処理を実行して印刷データを生成することで、画質を向上する印刷データを生成することができる。
【００１６】
上記の構成を有する画像処理装置の履歴バッファは、前記更新履歴の情報として、前記誤差バッファ内の誤差が更新されずに対象画素が変更された回数をカウントして記憶し、前記判断処理部は、前記回数と所定の閾値とを比較することで、前記所定距離を判断するものとしても良い。
【００１７】
かかる画像処理装置によれば、誤差バッファ内の誤差が更新されずに対象画素が変更された回数を記憶し、この回数から誤差反映低減処理の実行を判断する。すなわち、処理毎に、誤差バッファ内において新たなデータが書き込まれない部分に対応する履歴バッファの値をカウントアップし、この値（回数）が閾値より大きければ、十分に離れた処理済み画素からの積み残しであると判断できる。したがって、比較的容易に、所定距離を把握し、誤差反映低減処理を行なうことができる。
【００１８】
上記の構成を有する画像処理装置の判断処理部は、前記誤差バッファが更新された場合および前記誤差反映低減処理を実行した場合には、前記カウントした回数をリセットするものとしても良い。
【００１９】
かかる画像処理装置によれば、誤差バッファが更新された場合および誤差反映低減処理を実行した場合に、回数をリセットする。つまり、回数をリセットしておくことで、回数が再カウントされて閾値を超えるまでは、誤差反映低減処理の対象画素とはならず、一連の処理を迅速に行なうことができる。
【００２０】
上記の構成を有する画像処理装置は、更に、前記２種以上のドットを形成するヘッドを駆動して印刷を行なう印刷部を備え、前記印刷部は、前記生成された印刷データに基づいて、前記ヘッドを印刷媒体に対して主走査方向および副走査方向へ移動しつつ、前記ドットを形成して印刷を行なうものとしても良い。
【００２１】
本発明の誤差拡散処理方法は、入力した画像データにハーフトーン処理を施して、単位面積当りの濃度の異なる２種以上の所定ドットを主走査方向および副走査方向に配列する印刷データを生成する際に、該ハーフトーン処理として実行する誤差拡散処理方法であって、前記誤差拡散処理の処理対象の画素で発生する誤差を、誤差バッファに格納し、前記処理対象画素を順次変更するのに伴って、前記誤差バッファに格納する誤差の更新履歴の情報を記憶し、前記記憶された情報に基づいて、前記誤差バッファが前記副走査方向について更新されていない距離を求め、所定距離の間、前記誤差バッファが更新されない場合には、前記処理対象の画素に反映する誤差の影響を低減することを要旨としている。
【００２２】
本発明の誤差拡散処理方法によれば、現在の対象画素の誤差拡散処理の際に、更新されずに積み残された誤差が与える影響を低減する。したがって、積み残された誤差の不必要な影響を低減することができる。
【００２３】
本発明は、コンピュータプログラムおよびコンピュータプログラムを記録した媒体としても実装することができる。記録媒体としては、フレキシブルディスク，ＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭ／ＲＡＭ，光磁気ディスク，メモリカード，ハードディスクなどコンピュータが読み取り可能な種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態について、実施例に基づき以下の順序で説明する。
Ａ．プリンタの構成：
Ｂ．変換処理：
Ｂ−１．ハーフトーン処理：
Ｃ．変形例：
【００２５】
Ａ．プリンタの構成：
図１は、本発明の画像処理装置としてのプリンタの概略の機能構成を示すブロック図である。本実施例のプリンタ１０は、カラー画像の印刷が可能なインクジェット方式のプリンタであり、Ｃ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロ）、Ｋ（ブラック）の４色により印刷を実行する。このプリンタ１０は、デジタルスチルカメラ等により撮影した画像を記憶したメモリカードＭＣを装着するカードスロット２３を備えており、メモリカードＭＣ内から読み出したＲＧＢカラー画像を、各色ドットの形成有無により形成された印刷データに変換する。すなわち、いわゆるプリンタドライバ１１を内蔵したプリンタである。
【００２６】
プリンタ１０は、大ドット、中ドット、小ドットの３種類の大きさの異なるドットの形成が可能であり、プリンタドライバ１１で生成される印刷データは、各色および各ドットサイズに対応したドット形成有無のデータである。プリンタ１０は、こうして生成された印刷データに従って、各種アクチュエータを制御し、用紙Ｐ上にドットを形成する。
【００２７】
図示するように、このプリンタ１０は、解像度変換処理部１２，色変換処理部１３，ドット発生率決定部１５，ハーフトーン処理部１６，インタレース処理部２０などの複数の処理部から構成されている。メモリカードＭＣ内から読み出したＲＧＢカラー画像データは、解像度変換処理部１２および色変換処理部１３で所定の処理を施された後、ドット発生率決定部１５において、大ドット、中ドット、小ドットの３種類の中間的なデータに一旦変換される。この中間的なデータは、画像データに応じて印刷用紙上に形成すべきドットの発生率を示すデータである。ドット発生率決定部１５は、画像データを中間的なデータに変換する所定の変換テーブルを備えており、これを用いて各種ドットのデータを生成している。
【００２８】
こうして変換された中間的なデータは、ハーフトーン処理部１６で擬似的な中間調処理（つまり、階調数の変換処理）が施され、ドット形成有無のデータに変換される。その後、インタレース処理部２０にてドット形成の順序を考慮した並べ替えの処理が行なわれ、印刷データとして生成される。
【００２９】
こうしたＲＧＢカラー画像データから印刷データへの一連の変換処理において、ハーフトーン処理部１６は、擬似的な中間調処理の一つである誤差拡散処理を実行する。ハーフトーン処理部１６は、主にドットの形成の有無の判断を行なう判断処理部１７と、処理に必要な所定のデータを蓄える誤差バッファ１８とを備え、処理対象画素についてドット形成有無の判断で生じる誤差を、所定の重み付けをして周辺の画素に拡散する。
【００３０】
例えば、処理対象画素に対する大ドットの中間データの階調値が、所定の閾値よりも大きい場合、その画素の位置に大ドットを形成すること（大ドットＯＮ）を判断する。形成される大ドットの階調値と中間データの階調値との差分が、大ドットを形成することで生じる誤差である。この誤差を、所定の重み付けに従って、周辺画素に分配する。こうして分配された誤差は、ラインバッファである誤差バッファ１８の所定位置に記憶される。なお、所定の重み付けによる分配は、予め設定された重み付け係数により実行される。こうした重み付け係数には、例えば図６に示すように、種々のタイプのものがある。図６に示す斜線の矩形は処理対象の画素を示し、その他の矩形は誤差を拡散する周辺の画素を表わしている。例えば、図６（ａ）による重み付け係数を用いれば、処理対象画素で発生した誤差は、画像の行方向（主走査方向）で隣の画素Ｋ０１と、画像の列方向（副走査方向）の画素Ｋ１０と、画素Ｋ１０の行方向で両隣の画素Ｋ１−１，画素Ｋ１１とに、それぞれ１／４ずつの割合で処理対象画素で発生した誤差が分配される。
【００３１】
次に、処理対象画素を主走査方向の隣の画素に変更し、この画素の中間データの階調値に、誤差バッファ１８内の対応する誤差を加算し、これと所定の閾値とを比較する。比較の結果、大ドットＯＮと判断されると、新たな誤差が発生する。この誤差も上記と同様に処理され、誤差バッファ１８の所定位置に記憶される。つまり、大ドットＯＮの判断により、誤差バッファ１８の所定位置では内部の値が更新される。
【００３２】
こうした処理を繰り返す際に、大ドットを形成しない（大ドットＯＦＦ）と判断された場合には、中ドットの形成有無の判断へ移行する。この場合、大ドットの処理では、誤差拡散処理が行なわれず、誤差バッファ１８内の値は更新されない。つまり、対象画素を順次変更して処理を進める過程で、誤差バッファ１８内では、誤差が更新される場合と、全く更新されない場合とが生じている。本実施例では、誤差バッファ１８に対応して履歴バッファ１９を設け、誤差バッファ１８内の誤差が更新されずに処理対象が進んだ回数を記憶している。記憶した回数の値は、結果的に、誤差が連続して更新されずに処理対処が副走査方向へ進んだ回数を認識するのに用いられる。
【００３３】
判断処理部１７は、こうしたドット形成有無の判断や、誤差バッファ１８，履歴バッファ１９とのデータのやり取りを行なうが、特に、ドット形成有無の判断に先立って、所定条件のもと、処理対象画素の階調値に加算する誤差の値を低減する処理を行なっている。つまり、処理対象画素の階調値に誤差を加算する前に、履歴バッファ１９内の値を読み、処理対象画素の階調値に加算すべき誤差が更新されていない回数を認識する。換言すると、加算しようとする誤差は、どの位置のドット形成によって発生した誤差であるかを認識する。加算しようとする誤差が、現在の処理対処画素に対して、十分に離れた距離（位置）の画素からのものである場合には、その誤差の値を低減し、現在の処理対象画素に与える影響を低減する処理（以下、誤差反映低減処理と呼ぶ）を実行している。こうした処理の詳細は、後述する。
【００３４】
なお、本実施例のプリンタ１０のカードスロット２３は、例えば、ＳＤメモリカード（登録商標）、コンパクトフラッシュ（登録商標）、スマートメディア（登録商標）などの複数の媒体に対応したスロットであり、種々の記憶媒体を取扱うことができる。さらに、プリンタ１０は、ＵＳＢポート２４を備えており（図２参照）、例えば、コンピュータを接続して、画像処理を行なうこともできる。コンピュータとプリンタとからシステムを構成する場合には、上述の処理を行なうプリンタドライバ１１を備えたコンピュータが、本発明における画像処置装置に相当することとなる。
【００３５】
図２は、このプリンタ１０の内部の概略構成を示したブロック図である。図示するように、プリンタ１０は、用紙Ｐにインクを吐出する印字ヘッドユニット２５を搭載したキャリッジ３０、キャリッジ３０を主走査方向に駆動するキャリッジモータ３２、用紙Ｐを搬送する紙送りモータ３３、印字ヘッドユニット２５，キャリッジモータ３２や紙送りモータ３３の動作を制御するＣＰＵ，ＲＯＭ，ＲＡＭ，ＥＥＰＲＯＭ等を備えた制御回路４０などから構成されている。
【００３６】
印字ヘッドユニット２５は、ＣＭＹＫの各色毎に計４個のインク吐出用ヘッドを備えている。キャリッジ３０には、上記のインクを収納する黒インク用カートリッジ２９ａ，カラーインク用カートリッジ２９ｂが装着されており、各カートリッジからのインクは、図示しないピエゾ素子の電圧を調整することで用紙Ｐへ吐出される。
【００３７】
本実施例のプリンタ１０では、インク滴の吐出前に印加する負の電圧波形を制御してインクの吸引速度を変更することで、吐出するインク滴の大きさを制御し、大ドット、中ドット、小ドットの３種類のインクドットを形成している。なお、本実施例では、理解を容易にするためにＣ，Ｍ，Ｙ，Ｋの４色プリンタで説明するが、さらに、ＬＣ（ライトシアン）、ＬＭ（ライトマゼンタ）、ＤＹ（ダークイエロ）を備え、７色により印刷を実行するプリンタであっても良い。
【００３８】
キャリッジモータ３２は、駆動ベルト３６を回転させることで、プラテン２８軸と並行な摺動軸３４に設置されたキャリッジ３０を往復運動させている。往復運動するキャリッジ３０の原点位置は、位置検出センサ３９により検出され、その検出値は制御回路４０に出力されている。制御回路４０は、この検出値等に基づいて、キャリッジモータ３２の制御を行なう。
【００３９】
紙送りモータ３３は、プラテン２８を回転させることで、プリンタ１０に供給された用紙Ｐを搬送する。つまり、用紙Ｐは、プラテン２８の回転角度に応じて所定量だけ送られる。制御回路４０は、種々の印刷条件に応じて、この紙送りの所定量を、紙送りモータ３３の回転角度を制御することで行なっている。この制御回路４０は、前述のカードスロット２３，ＵＳＢポート２４に加え、操作パネル２１，液晶ディスプレイ２２等とも電気的に接続し、操作パネル２１，液晶ディスプレイ２２を介してユーザが設定した印刷条件を認識している。なお、制御回路４０内のＲＯＭには、上述のプリンタドライバ１１や、プリンタ１０の動作に関する各種プログラムが記憶されている。
【００４０】
以上のようなハードウェア構成を有するプリンタ１０の制御回路４０は、プリンタドライバ１１で生成された印刷データに基づく指令を出力し、キャリッジモータ３２を駆動してキャリッジ３０を主走査方向に移動させ、また紙送りモータ３３を駆動して用紙Ｐを副走査方向に移動させる。制御回路４０は、こうした主走査および副走査を繰り返しながら、適切なタイミングでインク滴を吐出させる。こうしてプリンタ１０は、微小なドットを用紙Ｐ上に形成してカラー印刷を行なっている。
【００４１】
なお、本実施例ではピエゾ素子を利用したインクジェット方式のプリンタ１０を用いているが、他のインクジェット方式のプリンタ（例えばバブルジェット（登録商標）），熱転写方式のプリンタ、昇華型プリンタ、レーザプリンタ、あるいは複合機など種々の方式のプリンタを採用するものとしても良い。
【００４２】
Ｂ．変換処理：
図３は、本実施例のプリンタ１０において実行される変換処理のフローチャートである。この処理は、入力したＲＧＢカラー画像データから印刷データを生成する処理であり、プリンタ１０の制御回路４０において、ＣＰＵがプリンタドライバ１１を起動することで実行される。
【００４３】
処理が開始されると、プリンタドライバ１１は、変換すべき所定のＲＧＢカラー画像データを読み込む（ステップＳ３００）。続いて、読み込んだＲＧＢカラー画像データの解像度を、プリンタ１０で印刷可能な解像度（これを印刷解像度と呼ぶ）に変換する解像度変換処理を行なう（ステップＳ３１０）。具体的には、入力したＲＧＢカラー画像データの解像度が印刷解像度よりも低い場合には、線形補間を行うことで隣接画像データ間に新たなデータを生成し、入力したＲＧＢカラー画像データの解像度が印刷解像度よりも高い場合には、一定の割合でデータを間引く処理を行なっている。なお、本実施例ではＲＧＢカラー画像データの解像度を、７２０ｄｐｉの印刷解像度に変換している。
【００４４】
プリンタドライバ１１は、印刷解像度に変換したＲＧＢカラー画像データに対し、色変換処理を行なう（ステップＳ３２０）。色変換処理とは、Ｒ，Ｇ，Ｂの階調値の組み合わせによって表現されている画像データを、Ｃ，Ｍ，Ｙ，Ｋのプリンタ１０で使用する各色の階調値の組み合わせによって表現された画像データ（ＣＭＹＫデータ）に変換する処理である。この色変換処理には、周知の色変換テーブル１６（ＬＵＴ）（図１参照）と呼ばれる３次元のテーブルが用いられており、このテーブルを参照することで迅速に処理を行なうことができる。
【００４５】
続いて、プリンタドライバ１１は、色変換されたＣＭＹＫデータに対して、ドット発生率決定処理を実行する（ステップＳ３３０）。この処理では、ＣＭＹＫデータを、プリンタが印刷用紙上に形成可能な各種ドットサイズについての階調値データに変換する。例えば、ＣＭＹＫデータのＫデータ（黒色画像データ）から、大ドット用データ（ＫＬデータ），中ドット用データ（ＫＭデータ），小ドット用データ（ＫＳデータ）を生成する。かかる処理は、前述したように、ドット発生率テーブルと呼ばれる数表を参照することによって行なわれている。
【００４６】
図４は、ドット発生率テーブルの一例を概念的に示した説明図である。図示するように、このテーブルは、横軸に階調値（インク量に関連する）を、縦軸にドットの発生率（％）を、それぞれ示している。ドット発生率は、１００％を２５６階調で表現しており、例えば、ドット発生率ｒ（％）は、ｒ／１００×２５６の階調となる。
【００４７】
このドット発生率は、画素にドットが記録される確率を意味しており、例えば１０個の画素のドット発生率が１０％である場合には、１０画素に１画素の割合でドットが記録される。例えば、Ｋデータの処理対象画素の階調値が２５５の場合には、大ドットは１００％に、中ドット，小ドットは０％に、それぞれ設定される。つまり、大ドットが形成され、中ドット，小ドットは形成されない。また、例えば、階調値がＫａの場合には、中ドット，小ドットはＲａ％に、大ドットは０％に、それぞれ設定される。この場合には、大ドットは生成されない。こうしたテーブルを参照することで、ＣＭＹＫデータの階調値に対して各種ドットを如何なる割合で形成すれば良いかを判断することができる。なお、図４に示した一例は、Ｋデータに関するものであり、実際には、Ｃ，Ｍ，Ｙ，Ｋ各色毎にテーブルが用意されている。
【００４８】
図３に戻って、プリンタドライバ１１は、生成された大，中，小ドットの中間データの階調数を変換する処理（すなわち、ハーフトーン処理）を行なう（ステップＳ３４０）。具体的には、階調値０から２５５の２５６階調を有するデータとして表現されている中間データを、ドットＯＮ／ＯＦＦの２階調のデータに変換している。
【００４９】
このハーフトーン処理では、前述のとおり、誤差反映低減処理を含んだ誤差拡散処理を実行している。本実施例における誤差反映低減処理では、履歴バッファ１９内の値に応じて、加算しようとする誤差をクリアすることで、処理対処画素に与える誤差の影響をゼロとしている。
【００５０】
図５は、誤差反映低減処理の概念を説明する説明図である。図３のステップＳ３３０におけるドット発生率決定処理において、図５に示す大ドットの中間データが生成されたものとする。図示するように、大ドット中間データに対応して、ラインバッファである誤差バッファと履歴バッファとが設けてあり、誤差バッファには誤差が、履歴バッファには履歴値（大ドット用であるため、大履歴値と呼ぶ）が、それぞれ記憶されている。なお、図示は省略するが、中ドット中間データに対しても、同様に、誤差バッファと履歴バッファとが設けられ、また、小ドット中間データに対しては、誤差バッファが設けられている。
【００５１】
図示する黒丸は、４列目のｍ−１ラスタ目（以下、（４，ｍ−１）と記す）の位置に大ドットを形成すると判断したことを意味している。この大ドットの形成により発生する誤差は、例えば図６（ａ）に示す所定の重み付けに従って、周辺画素である（３，ｍ）、（４，ｍ）、（５，ｍ−１）、（５，ｍ）の４つの画素に拡散される。その結果、（３，ｍ）、（４，ｍ）、（５，ｍ−１）の画素に対応する誤差の値は、誤差Ａ，Ｂ，Ｃとなり、（５，ｍ）への拡散誤差は誤差ｄになったとする。
【００５２】
ここで、誤差バッファには、バッファ３の位置に誤差Ａが、バッファ４の位置に誤差Ｂが、バッファ５の位置に誤差Ｃがそれぞれ記憶される。なお、誤差ｄは次の画素の処理結果の影響を受けるため、別途、所定領域に記憶されているものとする。他方、履歴バッファには、誤差が記憶されたバッファ３ないし５に対応する位置にゼロが記憶される。なお、ゼロが記憶された位置以外の部分には、その大履歴値をカウントアップした値がそれぞれ記憶される。
【００５３】
次に、処理対象画素を（５，ｍ−１）の画素に変更し、その階調値と、誤差バッファのバッファ５に格納されている誤差Ｂとを足し合わせ、所定の閾値と比較する。ここで、大ドットＯＦＦと判断した場合には、誤差バッファを更新することなく、中ドット形成有無の判断へ移行する。中ドット形成有無の判断で、中ドットＯＦＦと判断した場合には、小ドット形成有無の判断へ移行する。こうして大ドットを形成しないまま、処理対象画素が（３，Ｒ）の画素ｑまで進むと、その処理過程で誤差バッファは更新されず、履歴バッファの大履歴値は順次、カウントアップされて値ｎとなる。
【００５４】
画素ｑの処理では、画素ｑの階調値に、バッファ３に記憶された誤差Ａを加算してドットＯＮ／ＯＦＦの判断をすることとなるが、その処理前に、大履歴値が所定の閾値ｎ以上であるため、誤差Ａをゼロに置き直す。すなわち、誤差バッファのバッファ３にはゼロが記憶され、これに伴い、対応する履歴バッファの位置にもゼロが記憶される。こうして画素ｑの処理では、画素ｑの階調値に、バッファ３に記憶された誤差ゼロを加算してドットＯＮ／ＯＦＦの判断処理が行なわれる。こうすることで、（４，ｍ−１）の画素で発生した誤差Ａが、（３，Ｒ）の画素ｑに対して与える影響を抑制することができる。つまり、何ラスタも前に処理され、十分離れた位置の画素によって発生した誤差を、現在の処理対象の画素に反映してしまうことがない。本実施例のハーフトーン処理では、こうして不必要な誤差をクリアする誤差反映低減処理を行ないながら、誤差拡散処理を実行し、大、中、小のドット形成有無のデータを生成する。なお、誤差反映低減処理を含んだハーフトーン処理については、後に詳細に説明する。
【００５５】
図３に戻り、大，中，小ドットのドット形成有無のデータを生成した後、プリンタドライバ１１はインタレース処理を行なう（ステップＳ３５０）。具体的には、ドット形成有無のデータを、印字ヘッドユニット２５の動きに対応するドットの形成順序を考慮したデータに並べ替える処理を行なっている。プリンタドライバ１１は、こうして最終的に得られたデータを、印刷データとして出力し（ステップＳ３６０）、一連の変換処理を終了する。制御回路４０は、プリンタドライバ１１によって出力された印刷データに従い各種アクチュエータを駆動する。こうして各色のインクドットを用紙Ｐ上に形成し、カラー画像を印刷する。
【００５６】
Ｂ−１．ハーフトーン処理：
図７ないし図９は、誤差反映低減処理を含むハーフトーン処理のフローチャートである。この処理は、上記の変換処理の一部として、プリンタドライバ１１にて実行される。なお、ハーフトーン処理はＣＭＹＫの各色毎に実行されるが、理解を容易にするため、Ｋデータのみについて説明する。
【００５７】
処理が開始されると、プリンタドライバ１１は、誤差バッファ１８，履歴バッファ１９をクリアする（ステップＳ７００）。前述のように、誤差バッファ１８には大ドット用，中ドット用，小ドット用の３種類が、履歴バッファ１９には大ドット用，中ドット用の２種類が、それぞれ存在するが、これらの全てのバッファ内の値をクリアする。
【００５８】
初期値の設定後、処理対象の画素に対して、図３のステップＳ３３０で生成した大ドット中間データ（階調値ＫＬと呼ぶ）、および履歴バッファ１９内の大履歴値ｎＬを読み込む（ステップＳ７１０）。すなわち、ステップＳ７１０以降、まず、大ドットの形成有無の判断処理を実行する。なお、初期段階であれば、ステップＳ７００で履歴バッファ１９がクリアされていることから、読み込んだ大履歴値ｎＬの値は０（ゼロ）となる。
【００５９】
次に、読み込んだ大履歴値ｎＬが所定の閾値Ｔｈ１以下であるか否かについて判断を行なう（ステップＳ７１５）。このステップでは、処理対象の画素に対応する誤差が更新されていない回数、換言すると、最後に誤差を拡散した処理対処画素と現在の処理対象画素との距離が、予め設定した閾値Ｔｈ１以上であるか否かを判断している。なお、本実施例では、７２０ｄｐｉの印刷解像度において、ラスタ方向へ約２ｍｍ程度はなれた画素には、誤差の影響を与えないように閾値Ｔｈ１（後述する閾値Ｔｈ２も含む）を設定している。例えば、印刷解像度が１４００ｄｐｉであれば、それに対応する閾値を予め設定しておけば良い。
【００６０】
ステップＳ７１５で、大履歴値ｎＬが閾値Ｔｈ１以下である（Ｙｅｓ）場合には、処理対処画素に対応する誤差（これを、大ドット誤差ΔｄＬと呼ぶ）を誤差バッファ１８から取得する（ステップＳ７２０）。つまり、この場合は、最後に誤差を拡散した処理対象画素と現在の処理対処画素との距離は基準値（閾値Ｔｈ１）内であり、大きく離れていない場合である。したがって、現在の処理対処画素に、最後に誤差を拡散した処理対象画素の誤差の影響を反映して後続のステップに示す誤差拡散処理を実行する。
【００６１】
他方、ステップＳ７１５で、大履歴値ｎＬが閾値Ｔｈ１より大きい（Ｎｏ）場合には、大ドット誤差ΔｄＬをゼロクリアし、対応する大履歴値ｎＬをゼロとおいて、各バッファに記憶する（ステップＳ７３０）。つまり、この場合は、最後に誤差を拡散した処理対象画素と現在の処理対処画素との距離は基準値（閾値Ｔｈ１）外であり、大きく離れている場合である。したがって、大ドット誤差ΔｄＬをクリアして、現在の処理対処画素に、最後に誤差を拡散した処理対象画素の誤差の影響を反映せずに、後続のステップに示す誤差拡散処理を実行する。この大ドット誤差ΔｄＬをゼロクリアする処理が、誤差反映低減処理に該当する。
【００６２】
続いて、プリンタドライバ１１は、階調値ＫＬに大ドット誤差ΔｄＬを加算した値が、大ドット用の閾値（これを、大閾値ＴｈＬと呼ぶ）以上であるか否かを判断する（ステップＳ７３５）。
【００６３】
ステップＳ７３５で、階調値ＫＬに大ドット誤差ΔｄＬを加算した値が、大閾値ＴｈＬ以上である（Ｙｅｓ）と判断した場合には、処理対象画素の位置に大ドットの記録（大ドットＯＮ）を決定する（ステップＳ７４０）。この大ドットの記録によって生じる誤差、つまり、大ドット形成による階調値と処理対象画素の階調値ＫＬに誤差ΔｄＬを加算した値との差分を、所定の重み付けに従って周辺画素に反映するため、対応する誤差バッファ１８内の誤差を更新する（ステップＳ７５０）。続いて、更新された誤差に対応する大履歴値ｎＬをゼロに置き直して、履歴バッファ１９に記録する（ステップＳ７６０）。
【００６４】
他方、ステップＳ７３５で、階調値ＫＬに大ドット誤差ΔｄＬを加算した値が、大閾値ＴｈＬよりも小さい（Ｎｏ）と判断した場合には、処理対象画素の位置には、大ドットの記録を行なわず、大履歴値ｎＬをカウントアップ（インクリメント）して（ステップＳ７７０）、中ドット形成の有無の判断処理、小ドット形成の有無の判断処理へと順次移行する。大履歴値ｎＬをインクリメントすることで、対応する誤差が更新されていない回数をカウントしている。
【００６５】
こうして、大ドット形成による誤差を拡散する誤差拡散処理を実行し、あるいは、後述するように中ドットの形成の有無、小ドット形成の有無を判断して、処理対象画素について、大ドットＯＮ，中ドットＯＮ，小ドットＯＮ，ドットＯＦＦのいずれかを判断した後に、全画素について処理を終了したか否かについての判断を行なう（ステップＳ７７５）。ステップＳ７７５で、全画素について処理を終了したと判断した（Ｙｅｓ）場合には、一連のハーフトーン処理を終了し、図３のステップＳ３５０に戻って処理を実行する。他方、ステップＳ７７５で、全画素について処理を終了していないと判断した（Ｎｏ）場合には、ステップＳ７１０へ戻り、対象画素を変更して一連の処理を繰り返す。なお、処理対象の画素は、画像の左隅から右隅へ向かって順次変更され、右隅まで処理が進むと、次の行（ラスタ）の左隅に移行する。
【００６６】
中ドット形成の有無の判断処理および小ドット形成の有無の判断処理は、大ドット形成の有無の判断処理とほぼ同様であるため、以下に簡単に説明する。
【００６７】
図８は、上述のハーフトーン処理のうち、中ドット形成の有無の判断を行なう処理のフローチャートである。上記の処理で大ドットを形成しないと決定した場合に、プリンタドライバ１１は、以下の処理を実行する。
【００６８】
プリンタドライバ１１は、処理対象の画素に対して、図３のステップＳ３３０で生成した中ドット中間データ（階調値Ｋｍと呼ぶ）、および履歴バッファ１９内の中履歴値ｎｍを読み込む（ステップＳ８００）。続いて、読み込んだ中履歴値ｎｍが所定の閾値Ｔｈ２以下であるか否かについて判断を行なう（ステップＳ８１５）。ステップＳ８１５で、中履歴値ｎｍが閾値Ｔｈ２以下である（Ｙｅｓ）場合には、中ドット誤差Δｄｍを誤差バッファ１８から取得する（ステップＳ８２０）。他方、中履歴値ｎｍが閾値Ｔｈ２よりも大きい（Ｎｏ）場合には、中ドット誤差Δｄｍをゼロクリアし、対応する中履歴値ｎｍをゼロとおいて、各バッファに記憶する（ステップＳ８３０）。
【００６９】
続いて、プリンタドライバ１１は、階調値Ｋｍに中ドット誤差Δｄｍを加算した値が、中閾値Ｔｈｍ以上であるか否かを判断する（ステップＳ８４５）。ステップＳ８４５で、中閾値Ｔｈｍ以上である（Ｙｅｓ）と判断した場合には、中ドットＯＮを決定する（ステップＳ８５０）。この中ドットＯＮで生じる誤差を反映する誤差拡散処理を実行して、誤差バッファ１８内の誤差を更新し（ステップＳ８６０）、更新された誤差に対応する中履歴値ｎｍをゼロに置き直して、履歴バッファ１９に記録する（ステップＳ８７０）。こうして中ドットＯＮを決定して、図７のステップＳ７７５へ戻る。
【００７０】
他方、ステップＳ８４５で、中閾値Ｔｈｍより小さい（Ｎｏ）と判断した場合には、処理対象画素の位置には、中ドットの記録を行なわず、中履歴値ｎｍをカウントアップして（ステップＳ８８０）、小ドット形成の有無の判断処理へ移行する。
【００７１】
図９は、小ドット形成の有無の判断を行なう処理のフローチャートである。上記の処理で中ドットを形成しないと決定した場合に、プリンタドライバ１１は、以下の処理を実行する。
【００７２】
プリンタドライバ１１は、処理対象の画素に対して、図３のステップＳ３３０で生成した小ドット中間データ（階調値Ｋｓと呼ぶ）、および誤差バッファ１８内の小ドット誤差Δｄｓを読み込む（ステップ９００）。
【００７３】
続いて、プリンタドライバ１１は、階調値Ｋｓに小ドット誤差Δｄｓを加算した値が、小閾値Ｔｈｓ以上であるか否かを判断する（ステップＳ９１５）。ステップＳ９１５で、小閾値Ｔｈｓ以上である（Ｙｅｓ）と判断した場合には、小ドットＯＮを決定する（ステップＳ９２０）。この小ドットＯＮで生じる誤差を反映する誤差拡散処理を実行して、誤差バッファ１８内の誤差を更新し（ステップＳ９３０）、図７のステップＳ７７５へ戻る。
【００７４】
他方、ステップＳ９１５で、小閾値Ｔｈｓより小さい（Ｎｏ）と判断した場合には、処理対象画素の位置には小ドットの記録を行なわず、小ドットＯＦＦによって生じる誤差、つまり、ドットＯＦＦの階調値であるゼロと、処理対象画素の階調値Ｋｓに誤差Δｄｓを加算した値との差分を反映する誤差拡散処理を実行して、誤差バッファ１８内の誤差を更新し（ステップＳ９３０）、図７のステップＳ７７５へ戻る。
【００７５】
以上の誤差反映低減処理を含むハーフトーン処理によれば、現在の対象画素に対して十分に離れた位置にある既に処理済の画素の処理の際に発生した誤差は、クリアする。つまり、処理済の画素で発生し、積み残したままの誤差は、現在の処理対象画素に反映しない。したがって、不所望な位置に突然ドットが形成されるのを抑制することができる。特に、近隣の画素の階調値が大きく異なり、その影響を受けて誤差が蓄積され易い画像に対して、不所望なドットを形成することがなく、その効果は大きなものとなる。
【００７６】
なお、誤差拡散処理を実行する際に用いる重み付けの係数は、図６に示したように種々のタイプがあるが、図６の斜線で示した処理対象画素に対して、画像の行方向で遠くの画素にまで拡散するタイプのもの（図６（ｃ））を用いた場合に、誤差反映低減処理の効果が大きい。
【００７７】
Ｃ．変形例：
本実施例では、大ドット，中ドットに対して誤差反映低減処理を実行するものとして説明したが、大ドットのみに対して誤差反映低減処理を行なうものとしても良い。大ドットは、中ドット，小ドットに比べて特に目立ち易い。例えば、明るい領域から除序に暗い領域へ変化している画像（グレー濃度が徐々に増加する画像）おいて、大ドットの誤差が蓄積され、明るい領域から少し暗い領域に入ったところで、突然大ドットが発生してしまうような場合、中ドットや小ドットが突然発生するような場合と比べて、画質の低下が著しい印象を受ける。こうした画像に対しても、誤差反映低減処理を行なうことで、不所望な大ドットは形成されず、画質の向上の観点から十分に効果がある。
【００７８】
また、大ドット，中ドットに加え、小ドットについても誤差反映低減処理を行なうものとしても良い。この場合、小ドット用の誤差バッファに対応した履歴バッファを備え、履歴バッファの履歴値に基づいて誤差のクリアを判断するものとすれば良い。蓄積される誤差には、本来、極めて階調値を有する画素であるところ、小ドットを形成すると判断したために生じる誤差（マイナスの誤差）がある。マイナスの大きな誤差が蓄積されていると、本来の画像の階調値では小ドットを形成するはずのところに、小ドットを形成しないこととなる。例えば、グレー濃度が除序に増化する画像の中に、白抜き文字があるような場合には、白抜き文字の部分で小ドットの誤差バッファにマイナスの誤差が蓄積され、白抜き文字の部分から離れた位置で、蓄積されたマイナスの誤差によりドット抜けが生じる恐れがある。こうした画像に対しても、小ドットに対して誤差反映低減処理を行なうことで、ドット抜けを防ぎ、画質の向上に効果を奏する。
【００７９】
本実施例では、誤差反映低減処理として、履歴値が所定の閾値を超えるところで、誤差をクリアするものとして説明したが、誤差のクリアに代えて、半減であっても良い。この場合、履歴値が所定の閾値を超える際に、対応する誤差を１／２倍して記憶し直すと共に、履歴値をゼロとする。こうすることで、不必要な誤差の影響を低減することができる。また、履歴値を評価する複数の閾値を備え、履歴値の段階に応じて（つまり、処理対象画素と最後に誤差を拡散した画素との距離に応じて）、低減する割合を変更するものとしても良い。
【００８０】
また、本実施例では、処理対象の画素を主走査方向へ一つ進める毎に、更新されていない誤差バッファに対応する履歴バッファを一ずつインクリメントするものとし、結果的に、副走査方向の距離を認識するものとして説明したが、一の処理対象画素の列方向のみに着目して、履歴バッファをインクリメントするものとしても良い。
【００８１】
例えば、図１０に示すように、４列目の画素に着目する。この４列目のｍ−１ラスタの画素１について処理を行なう際、対応する誤差バッファ（バッファ４）には誤差Ａが、対応する履歴バッファにはゼロが記憶されていたとする。この画素１の階調値に誤差Ａを加算しても閾値内であり、ドットＯＦＦであると判断すると、履歴バッファには１を記憶する。続いて、画素１の主走査方向に処理を進める。この過程では、誤差バッファ内の値が変更されても履歴値は変更しない。つまり、ラスタ方向の画素にのみ注目し、ラスタ方向へ誤差が繰り越されてくる場合に、履歴値をインクリメントし、この履歴値を「更新されていない距離」とする。
【００８２】
画素２の処理では、バッファ４の値である誤差Ｂを加算してドット形成の有無を判断した結果、ドットＯＦＦであると判断し、履歴バッファをインクリメントする。こうしてドットＯＦＦの判断時に、履歴バッファを更新し、画素ｑの処理では履歴値が値ｎになったとする。次の画素ｑ+１の処理では、履歴値が閾値を超えたと判断してバッファ４に記憶された誤差をゼロとして処理を進める。こうした処理を行なうことで、ラスタ方向へ繰り越される誤差の影響を低減することができる。さらには、履歴バッファを頻繁に更新することもなく、迅速に処理を行なうことができる。こうしてラスタ方向へのカウント（インクリメント）を実行する場合、繰り越された誤差をクリアする閾値の設計も比較的容易となる。例えば、７２０ｄｐｉの印刷解像度であれば、閾値を５０ピクセル程度に設定することで、大きな誤差を発生させた画素からラスタ方向へ約２ｍｍ離れた画素では誤差がクリアされ、その影響を受けないこととなる。
【００８３】
本実施例では、ハーフトーン処理部１６は、誤差拡散法にハーフトーン処理を実行するものとして説明したが、誤差拡散法と論理的に等価である平均誤差最小法を用いるものとしても良い。平均誤差最小法では、処理済みの周辺画素で発生した誤差を誤差バッファに格納しておき、次の画素を処理する際に、誤差バッファから抽出する複数の誤差に所定の重み付けを施して加算し、これと処理対象画素の階調値との和を所定の閾値と比較してドットの形成の有無を判断する。かかる手法において、誤差バッファが連続して副走査方向に更新されずに処理対象が進む場合に、誤差反映低減処理を実行する。こうすることで、更新されずに蓄積された不必要な誤差の影響を低減し、画質の向上を図る印刷データを生成することができる。
【００８４】
また、本実施例では、大，中，小ドットを形成可能なプリンタを例に、一連の処理を説明したが、濃ドット，淡ドットを形成可能なプリンタであっても良い。例えば、こうしたプリンタにおいて、ある画素位置に対して、濃ドットの形成有無を判断し、濃ドットを形成しないと判断した場合には誤差拡散処理を実行することなく淡ドットの形成有無を判断するものとする。かかる濃ドットの処理において、誤差反映低減処理を実行することで、誤差バッファに蓄積された不必要な誤差の影響を低減することができる。
【００８５】
以上、本発明の実施の形態について説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。本実施例では、更新されていない回数を処理ごとにカウントすることで、処理対象画素と最後に誤差を拡散した画素との距離を認識するものとしたが、この距離を認識するにあたり、更新された回数をカウントし、これを利用するものとしても良い。この場合、例えば、更新回数と共に、処理対象画素の行番号（ラスタ番号）などを取得し、両者の差分等から距離を認識するものとすれば良い。
【図面の簡単な説明】
【００８６】
【図１】本発明の画像処理装置としてのプリンタの概略の機能構成を示すブロック図である。
【図２】プリンタの内部の概略構成を示したブロック図である。
【図３】本実施例のプリンタにおいて実行される変換処理のフローチャートである。
【図４】ドット発生率テーブルの一例を概念的に示した説明図である。
【図５】誤差反映低減処理の概念を説明する説明図である。
【図６】誤差拡散処理に用いる重み付け係数の一例である。
【図７】誤差反映低減処理を含むハーフトーン処理のフローチャートである。
【図８】誤差反映低減処理を含むハーフトーン処理のフローチャートである。
【図９】誤差反映低減処理を含むハーフトーン処理のフローチャートである。
【図１０】履歴値をラスタ方向へインクリメントする説明図である。
【符号の説明】
【００８７】
１０…プリンタ
１１…プリンタドライバ
１２…解像度変換処理部
１３…色変換処理部
１４…色変換テーブル
１５…ドット発生率決定部
１６…ハーフトーン処理部
１７…判断処理部
１８…誤差バッファ
１９…履歴バッファ
２０…インタレース処理部
２１…操作パネル
２２…液晶ディスプレイ
２３…カードスロット
２４…ＵＳＢポート
２５…印字ヘッドユニット
２８…プラテン
２９ａ…黒インク用カートリッジ
２９ｂ…カラーインク用カートリッジ
３０…キャリッジ
３２…キャリッジモータ
３３…モータ
３４…摺動軸
３６…駆動ベルト
３９…位置検出センサ
４０…制御回路
【図１】
2006186752.tif 000003
【図２】
2006186752.tif 000004
【図３】
2006186752.tif 000005
【図４】
2006186752.tif 000006
【図５】
2006186752.tif 000007
【図６】
2006186752.tif 000008
【図７】
2006186752.tif 000009
【図８】
2006186752.tif 000010
【図９】
2006186752.tif 000011
【図１０】
2006186752.tif 000012