(57)【特許請求の範囲】
【請求項１】
画像を、複数画素からなるブロックを単位としてハーフトーン処理し、印刷する印刷装置であって、
前記複数画素各々の階調値が所定の条件を満たしているか否かを判断する第１の判断部と、
前記第１の判断部の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断を行なう第２の判断部と、
前記ブロックを単位として、前記第２の判断部の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを、行なう誤差計算部と、
前記第２の判断部の判断結果によりドットの形成を行なうドット形成部と
を備えた印刷装置。
【請求項２】
請求項１記載の印刷装置であって、
前記第１の判断部における前記階調値が所定の条件を満たしているか否かの判断は、前記ブロック内の各画素の階調値に対応する値が、ディザマスクとして用意された閾値のうち前記各画素の位置に対応する位置の閾値である第１の閾値より大きい場合、前記所定の条件が満たされていると判断する
印刷装置。
【請求項３】
請求項１または請求項２記載の印刷装置であって、
前記第１の判断部において、前記ブロック内の少なくとも１つの画素の階調値が前記所定の条件を満たしている場合には、前記第２の判断部による前記判断を行なうことなく、当該画素に対応したドットを形成する
印刷装置。
【請求項４】
請求項３記載の印刷装置であって、
前記第１の判断部において、前記ブロック内のいずれの画素の階調値も前記所定の条件を満たしていないと判断された場合には、前記第２の判断部は、前記ブロック内の画素の階調値に対応する画像データであって、前記計算された誤差の配分を受けた補正画像データを、誤差拡散用に用意された閾値である第２の閾値と比較して、ドットを形成するか否かを判断する
印刷装置。
【請求項５】
請求項１から請求項４のいずれか一項に記載の印刷装置であって、
前記第１の判断部における所定の条件を満たしていると判断される割合は、前記判断の対象となった各画素の階調値において最終的にドットが形成される割合より低い割合とされている
印刷装置。
【請求項６】
請求項１から請求項５のいずれか一項に記載の印刷装置であって、
前記第２の判断部は、前記ブロック内の画素にドットを形成すると判断する割合を、当該ブロックに属する画素数の１／２未満とする
印刷装置。
【請求項７】
請求項１から請求項５のいずれか一項に記載の印刷装置であって、
前記第２の判断部は、
前記複数画素の各画素の階調値が前記所定の条件を満たしている場合には、満たしていない場合より、当該各画素に対応したドットを形成しやすい条件を適用して前記判断を行ない、
前記各画素の階調値が前記所定の条件を満たしていない場合には、満たしている場合より、当該各画素に対応するドットを形成しにくい条件を適用して前記判断を行なう
印刷装置。
【請求項８】
請求項２に従属する請求項７に記載の印刷装置であって、
前記第２の判断部は、誤差拡散用に用意された閾値である第２の閾値と比較してドットを形成すると判断した場合、当該ドットを、
前記ブロック内の所定の位置の画素、
前記ブロック内のランダムに定められる画素、または
前記ブロック内の画素位置に対応するディザマスクに用意された閾値のうち、最も小さな値の閾値に対応する位置の画素
のいずれかにドットを形成すると判断する
印刷装置。
【請求項９】
前記ハーフトーン処理は、前記第１の判断部の判断結果に基づいて、３以上の多値化の処理を行なう請求項２に記載の印刷装置。
【請求項１０】
請求項９記載の印刷装置であって、
前記第１の判断部は、前記ディザマスクの前記ブロック内の画素に対応した複数の閾値を連続的に利用して、前記３以上の多値化の判断を行なう
印刷装置。
【請求項１１】
請求項９または請求項１０記載の印刷装置であって、
前記ドット形成部は、濃度の異なる２種類のドットを形成可能であり、
前記ハーフトーン処理において、前記第２の判断部は、前記２種類のドットのうち、濃度の低い側のドットについて、ドットの形成の有無を判断する
印刷装置。
【請求項１２】
画像を、複数画素からなるブロックを単位としてハーフトーン処理し、印刷する印刷方法であって、
前記複数画素各々の階調値が所定の条件を満たしているか否かの判断である第１の判断を行ない、
前記第１の判断の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断である第２の判断を行ない、
前記ブロックを単位として、前記第２の判断の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを行ない、
前記第２の判断の判断結果によりドットの形成を行なう
印刷方法。
【請求項１３】
画像を、複数画素からなるブロックを単位としてハーフトーン処理する画像処理装置であって、
前記複数画素各々の階調値が所定の条件を満たしているか否かを判断する第１の判断部と、
前記第１の判断部の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つの画素にドットを形成するか否かの判断を行なう第２の判断部と、
前記ブロックを単位として、前記第２の判断部の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを行なう誤差計算部と、
を備えた画像処理装置。
【請求項１４】
画像を、複数画素からなるブロックを単位としてハーフトーン処理するプログラムであって、
前記複数画素各々の階調値が所定の条件を満たしているか否かの判断である第１の判断を行なう機能と、
前記第１の判断の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断である第２の判断を行なう機能と、
前記ブロックを単位として、前記第２の判断の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを行なう機能と、
をコンピューターにより実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを用いて画像を処理する技術および画像を印刷する技術に関する。
【背景技術】
【０００２】
多階調の画像データを、階調数の少ないドットデータにより印刷するハーフトーン処理としては、階調数変換をした場合の濃度誤差を周辺の画素に配分する誤差拡散法や、分散性のよい閾値配置がなされたディザマスクを用いてドットデータを生成する組織的ディザ法などが知られている。更に、誤差拡散法とディザ法の利点を組み合わせ、誤差拡散法によるハーフトーン処理の結果に近い特性とディザ法によるハーフトーン処理の結果に近い特性とが、画像の階調値に応じて発現するようする手法も提案されている（下記特許文献１参照）。特許文献１に記載の手法は、誤差拡散法の利点とディザ法の利点とを巧みに組み合わせたものであり、ディザ法の高速性という利点を生かしたまま、低階調領域において画像の再現性に優れるという特徴を有する。
【０００３】
係る手法は、一部とは言え、誤差拡散法を用いるので、誤差拡散の計算が必要となる。誤差拡散の計算量は、画素拡散の範囲が広くなり、あるいは画素数が多くなれば、増大する。計算量が増えれば、処理に時間を要することになり、画素形成要素（例えばインクを吐出するノズル）を増やして印刷速度を高める場合などに、誤差計算に要する時間がボトルネックになることが懸念される。こうした誤差拡散法における計算量の増大を抑制する手法として、従来、誤差計算を複数画素（例えば２×２画素）をひとまとめにしたブロックを単位として行なうものが知られている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１ー６６５９４号公報
【特許文献２】特開２００３−２８３８２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ブロック単位での処理では、特定の入力階調において規則的なドット配置が生じてしまうことがある、という課題が指摘されていた。特許文献２では、規則的なドット配置の発生を避けるために、ブロック内のドットの発生履歴を検出し、同じ位置でのドットの発生が続かないようにしている。こうした履歴の検出とそれに伴うドット配置の制御は複雑なものとなり、処理速度の低下を招来しかねない。
【０００６】
このように、ハーフトーン技術においては、誤差拡散法とディザ法の利点を生かしつつ、高速な画像処理を実現するには、なお改良の余地が残されていた。例えば、最近では、ディザマスクを工夫することにより、ドットの配置に特定のノイズ特性（例えばブルーノイズ特性）を持たせることがなされているが、細線の再現性を十分に確保し、かつ高速処理を実現するハーフトーン処理が求められていた。なお、画像処理や印刷においては、装置の小型化や、低コスト化、省資源化、製造の容易化、使い勝手の向上等は、常に追究されるべき課題であった。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態として実現することが可能である。
【０００８】
（１）本発明の第１の形態として、画像を、複数画素からなるブロックを単位としてハーフトーン処理し、印刷する印刷装置が提供される。この印刷装置は、前記複数画素各々の階調値が所定の条件を満たしているか否かを判断する第１の判断部と、前記第１の判断部の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断を行なう第２の判断部と、前記ブロックを単位として、前記第２の判断部の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを、行なう誤差計算部と、前記第２の判断部の判断結果によりドットの形成を行なうドット形成部とを備えてよい。
【０００９】
この印刷装置によれば、ブロックを単位とした誤差拡散による高速処理と、誤差拡散を伴う画像の高い再現性とを両立させたハーフトーン処理による印刷が可能となる。
【００１０】
（２）こうした印刷装置において、前記第１の判断部における前記階調値が所定の条件を満たしているか否かの判断は、前記ブロック内の各画素の階調値に対応する値が、ディザマスクとして用意された閾値のうち前記画素位置に対応する位置の閾値である第１の閾値より大きい場合、前記所定の条件が満たされていると判断するものとして良い。こうすれば、第１の判断部による判断をディザマスクを用いて行なうことができる。ディザマスクの閾値と比較するのは、各画素の階調値その自体であっても良いし、階調値に所定の演算を施した値でも良い。演算としては、所定値を加減算するものや、所定の係数を乗算するものなどが考えられる。こうすれば、ディザマスクの閾値は同じものを用いていても、閾値との比較による第２の判断部の判断結果、つまりドットオンオフの割合を制御することが可能となる。他方、ディザマスクに種々の特性を付与すれば、生成されるドットに、その特性、例えばブルーノイズ特性やグリーンノイズ特性を持たせることができる。
【００１１】
（３）こうした印刷装置において、前記第１の判断部において、前記ブロック内の少なくとも１つの画素の階調値が前記所定の条件を満たしている場合には、前記第２の判断部による前記判断を行なうことなく、当該画素に対応したドットを形成するものとしても良い。こうすれば、第１の判断部で、階調値が所定の条件を満たしている画素にはドットを形成することになり、所定の条件を満たしている場合に、第２の判断部で、改めてドット形成について判断する手間を省くことができる。
【００１２】
（４）更に、この場合に、前記第１の判断部において、前記ブロック内のいずれの画素の階調値も前記所定の条件を満たしていないと判断された場合には、前記第２の判断部は、前記ブロック内の画素の階調値に対応する画像データであって、前記計算された誤差の配分を受けた補正画像データの階調値を、誤差拡散用に用意された閾値である第２の閾値と比較して、ドットを形成するか否かを判断するものとして良い。こうすれば、第１の判断部において、前記ブロック内のいずれの画素の階調値も前記所定の条件を満たしていないと判断された場合、第２の判断部は、誤差拡散法により、ドットの形成を判断することができる。
【００１３】
（５）また、前記第１の判断部における所定の条件を満たしていると判断される割合は、当該画素の階調値において最終的にドットが形成される割合より低い割合として良い。この場合、誤差拡散でのドットの追加形成による階調誤差を修正できる。
【００１４】
（６）こうした印刷装置において、前記第２の判断部は、前記ブロック内の画素にドットを形成すると判断する割合を、当該ブロックに属する画素数の１／２未満としてよい。こうすることで、細線の途切れを防止するために必要なドットの形成を抑制することができ、濃度誤差が抑制される。
【００１５】
（７）また、前記第２の判断部は、前記各画素の階調値が前記所定の条件を満たしている場合には、満たしていない場合より、当該画素に対応したドットを形成しやすい条件を適用して前記判断を行ない、前記各画素の階調値が前記所定の条件を満たしていない場合には、満たしている場合により、当該画素に対応するドットを形成しにくい条件を適用して前記判断を行なうものとしてよい。こうすれば、第１の判断部の判断結果によりドットの形成のされやすさを決めて誤差拡散によるドット形成を行なうことができる。
【００１６】
（８）あるいは、前記第２の判断部は、誤差拡散用に用意された閾値である第２の閾値と比較してドットを形成すると判断した場合、当該ドットを、
・前記ブロック内の所定の位置の画素、
・前記ブロック内のランダムに定められる画素、または
・前記ブロック内の画素位置に対応するディザマスクに用意された閾値のうち、最も小さな値の閾値に対応する位置の画素
のいずれかにドットを形成すると判断するものとしてよい。こうすれば、何れの位置にドットを形成するかの判断を容易に行なうことができる。
【００１７】
（９）前記ハーフトーン処理は、前記第１の判断部の判断結果に基づいて、３以上の多値化の処理を行なうものとして良い。こうすれば、３値化以上の多値化を行なうことができ、印刷物の品質をアップできる。
【００１８】
（１０）この場合、前記第１の判断部は、前記ディザマスクの前記ブロック内の画素に対応した複数の閾値を連続的に利用して、前記３以上の多値化の判断を行なうものとして良い。こうすれば、２値化用に開発されたディザマスクをそのまま利用して、３以上の多値化を行なうことができる。
【００１９】
（１１）こうした印刷装置では、前記ハーフトーン処理において、前記第２の判断部は、低濃度のドットについて、ドットの形成の有無を判断するものとして良い。こうすれば、粒状性を悪化させる高濃度のドットを発生させることがない。この場合、複数種類のドットを形成可能であれば、最も小さいドットあるいは最も濃度の低いドットのみについて、ドットの形成を判断するものとしても良い。ドットの発生による粒状性の劣化を最小限に留めることができる。
【００２０】
（１２）本発明の第２の実施形態として、画像を、複数画素からなるブロックを単位としてハーフトーン処理し、印刷する印刷方法が提供される。この方法は、前記複数各々の階調値が所定の条件を満たしているか否かの判断である第１の判断を行ない、前記第１の判断の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断である第２の判断を行ない、前記ブロックを単位として、前記第２の判断の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを行ない、前記第２の判断の判断結果によりドットの形成を行なうものとしてよい。こうすることで、ブロックを単位とした誤差拡散による高速処理と、誤差拡散を伴う画像の高い再現性とを両立させたハーフトーン処理による印刷が可能となる。
【００２１】
（１３）本発明の第３の実施形態として、画像を、複数画素からなるブロックを単位としてハーフトーン処理する画像処理装置が提供される。この画像処理装置は、前記複数画素各々の階調値が所定の条件を満たしているか否かを判断する第１の判断部と、前記第１の判断部の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断を行なう第２の判断部と、前記ブロックを単位として、前記第２の判断部の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを、行なう誤差計算部と、を備えてよい。こうすることで、ブロックを単位とした誤差拡散による高速処理と、誤差拡散を伴う画像の高い再現性とを両立させたハーフトーン処理が可能となる。
【００２２】
（１４）本発明の第４の実施形態として、画像を、複数画素からなるブロックを単位としてハーフトーン処理するプログラムが提供される。このプログラムは、  前記複数各々の階調値が所定の条件を満たしているか否かを判断である第１の判断を行なう機能と、
前記第１の判断の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断である第２の判断を行なう機能と、
前記ブロックを単位として、前記第２の判断の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを行なう機能と、前記複数各々の階調値が所定の条件を満たしているか否かを判断である第１の判断を行なう機能と、前記第１の判断の判断結果に基づいて異なる条件を適用し、前記複数画素の少なくとも一つにドットを形成するか否かの判断である第２の判断を行なう機能と、前記ブロックを単位として、前記第２の判断の判断結果により生じる階調誤差の計算と、該計算された誤差の未処理画素への配分とを行なう機能と、をコンピューターにより実現させるものであって良い。
【００２３】
上述した本発明の各形態の有する複数の構成要素はすべてが必須のものではなく、上述の課題の一部又は全部を解決するため、あるいは、本明細書に記載された効果の一部又は全部を達成するために、適宜、前記複数の構成要素の一部の構成要素について、その変更、削除、新たな他の構成要素との差し替え、限定内容の一部削除を行なうことが可能である。また、上述の課題の一部又は全部を解決するため、あるいは、本明細書に記載された効果の一部又は全部を達成するために、上述した本発明の一形態に含まれる技術的特徴の一部又は全部を上述した本発明の他の形態に含まれる技術的特徴の一部又は全部と組み合わせて、本発明の独立した一形態とすることも可能である。
【００２４】
本発明は、印刷装置や画像データ処理装置以外の種々の形態で実現することも可能である。例えば、印刷装置の製造方法や印刷装置の制御方法、その制御方法を実現するコンピュータプログラム、そのコンピュータプログラムを記録した一時的でない記録媒体等の形態で実現することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１実施形態としてのプリンター２０の概略構成図。
【図２】プリンター２０における印刷処理の流れを示すフローチャート。
【図３】第１実施形態としてのハーフトーン処理の流れを示すフローチャート。
【図４】実施態様で用いるディザマスク６１を例示する説明図。
【図５】第１実施形態の第１の判断処理ルーチンを示すフローチャート。
【図６】ブロックと画素との関係を示す説明図。
【図７】実施態様で用いるディザマスク６１が備えるノイズ特性を例示する説明図。
【図８】第１の判断処理の一例を示す説明図。
【図９】第１実施形態の第２の判断処理ルーチンを示すフローチャート。
【図１０】ブロック間の誤差拡散の割合を示す説明図。
【図１１】第１実施形態の変形例１としての第２の判断処理ルーチンを示すフローチャート。
【図１２】変形例１における閾値ＴＨｅの一例を示すグラフ。
【図１３】変形例１における閾値ＴＨｅの他の例を示すグラフ。
【図１４】第２実施形態における入力画像の画素と出力画像の画素との関係を示す説明図。
【図１５】第２実施形態における入力階調値Ｄｓと大中小ドットの形成の割合を示す大中小データとの関係を例示するグラフ。
【図１６】第２実施形態の第１の判断処理ルーチンを示すフローチャート。
【図１７】第２実施形態の第２の判断処理ルーチンを示すフローチャート。
【発明を実施するための形態】
【００２６】
Ａ．第１実施形態：
本発明の第１実施形態について説明する。
Ａ−１．装置構成：
図１は、本発明の印刷装置の第１実施形態としてのプリンター２０の概略構成図である。プリンター２０は、双方向印刷を行なうシリアル式インクジェットプリンタであり、図示するように、プリンター２０は、紙送りモータ７４によって印刷媒体Ｐを搬送する機構と、キャリッジモータ７０によってキャリッジ８０をプラテン７５の軸方向に往復動させる機構と、キャリッジ８０に搭載された印刷ヘッド９０を駆動してインクの吐出及びドット形成を行なう機構と、これらの紙送りモータ７４，キャリッジモータ７０，印刷ヘッド９０及び操作パネル９９との信号のやり取りを司る制御ユニット３０とから構成されている。
【００２７】
キャリッジ８０をプラテン７５の軸方向に往復動させる機構は、プラテン７５の軸と平行に架設され、キャリッジ８０を摺動可能に保持する摺動軸７３と、キャリッジモータ７０との間に無端の駆動ベルト７１を張設するプーリ７２等から構成されている。
【００２８】
キャリッジ８０には、カラーインクとして、シアンインクＣ、マゼンタインクＭ、イエロインクＹ、ブラックインクＫ、をそれぞれ収容したカラーインク用のインクカートリッジ８２〜８５が搭載される。キャリッジ８０の下部の印刷ヘッド９０には、上述の各色のカラーインクに対応するノズル列が形成されている。キャリッジ８０にこれらのインクカートリッジ８２〜８７を上方から装着すると、各カートリッジから印刷ヘッド９０へのインクの供給が可能となる。なお、上記４色のインクに、更にライトシアンインクＬｃ、ライトマゼンタインクＬｍを加えた６色インクを用いてもよい。
【００２９】
制御ユニット３０は、ＣＰＵ４０や、ＲＯＭ５１、ＲＡＭ５２、ＥＥＰＲＯＭ６０がバスで相互に接続されて構成されている。制御ユニット３０は、ＲＯＭ５１やＥＥＰＲＯＭ６０に記憶されたプログラムをＲＡＭ５２に展開し、実行することにより、プリンター２０の動作全般を制御するほか、入力部４１、ハーフトーン処理部４２、印刷部４６としても機能する。ハーフトーン処理部４２の機能は、第１の判断部の下位概念に相当する比較部４３、第２の判断部の下位概念に相当する誤差拡散部４４としての機能を含んでいる。ＥＥＰＲＯＭ６０には、ディザマスク６１と、誤差拡散閾値テーブル６２とが記憶されている。ハーフトーン処理やこれに用いるディザマスク６１については、後で詳しく説明する。誤差拡散閾値テーブル６２は、第１実施形態では特に用いないが、その変形例１で用いるので、併せてＥＥＰＲＯＭ６０内にあるものとして示した。その内容については、変形例１において詳しく説明する。
【００３０】
制御ユニット３０には、メモリカードスロット９８が接続されており、メモリカードスロット９８に挿入したメモリカードＭＣから画像データＯＲＧを読み込んで入力することができる。本実施形態においては、メモリカードＭＣから入力する画像データＯＲＧは、レッド（Ｒ）、グリーン（Ｇ）、ブルー（Ｂ）の３色の色成分からなるデータである。
【００３１】
以上のようなハードウェア構成を有するプリンター２０は、キャリッジモータ７０を駆動することによって、印刷ヘッド９０を印刷媒体Ｐに対して主走査方向に往復動させ、また、紙送りモータ７４を駆動することによって、印刷媒体Ｐを副走査方向に移動させる。制御ユニット３０は、キャリッジ８０が往復動する動き（主走査）や、印刷媒体の紙送りの動き（副走査）に合わせて、印刷データに基づいて適切なタイミングでノズルを駆動することにより、印刷媒体Ｐ上の適切な位置に適切な色のインクドットを形成する。こうすることによって、プリンター２０は、印刷媒体Ｐ上にメモリカードＭＣから入力したカラー画像を印刷することが可能となっている。
【００３２】
Ａ−２．印刷処理：
プリンター２０における印刷処理について説明する。図２は、プリンター２０における印刷処理の流れを示すフローチャートである。ここでの印刷処理は、ユーザが操作パネル９９等を用いて、メモリカードＭＣに記憶された所定の画像に対する印刷指示操作を行なうことで開始される。印刷処理を開始すると、ＣＰＵ４０は、まず、入力部４１の処理として、メモリカードスロット９８を介してメモリカードＭＣから印刷対象であるＲＧＢ形式の画像データＯＲＧを読み込んで入力する（ステップＳ１１０）。
【００３３】
画像データＯＲＧを入力すると、ＣＰＵ４０は、ＥＥＰＲＯＭ６０に記憶されたルックアップテーブル（図示せず）を参照して、画像データＯＲＧについて、ＲＧＢ形式をＣＭＹＫＬｃＬｍ形式に色変換する（ステップＳ１２０）。なお、色変換処理の前後に、必要に応じて、解像度変換を行なっても良い。
【００３４】
色変換処理を行なうと、ＣＰＵ４０は、ハーフトーン処理部４２の処理として、画像データを各色のドットのＯＮ／ＯＦＦを画素毎に定めたドットデータに変換するハーフトーン処理を行なう（ステップＳ１３０）。ここでのハーフトーン処理の詳細については後述する。なお、本明細書では、「ハーフトーン処理」は、ドットのＯＮ／ＯＦＦの２値化処理に限らず、大ドット及び小ドットのＯＮ／ＯＦＦなど、多値化処理を含んだ階調数変換（低減）処理一般を意味している。また、ステップＳ１３０に供する画像データは、解像度変換処理やスムージング処理などの画像処理が施されたものであってもよい。
【００３５】
ハーフトーン処理を行なうと、ＣＰＵ４０は、プリンター２０のノズル配置や紙送り量などに合わせて、ハーフとー処理されたドットの配列を、１回の主走査単位で形成するドットパターンのデータに並び替えるインターレース処理を行なう（ステップＳ１５０）。インターレース処理を行なうと、ＣＰＵ４０は、印刷部４６の処理として、印刷ヘッド９０、キャリッジモータ７０、紙送りモータ７４等を駆動し、印刷を実行する（ステップＳ１６０）。
【００３６】
Ａ−３．ハーフトーン処理の概要：
上述したハーフトーン処理（ステップＳ１３０）について図３を用いて説明する。図示するように、この処理が開始されると、ＣＰＵ４０は、
・初期化の処理（ステップＳ１３２）
・処理対象特定処理（ステップＳ１３４）
・第１の判断処理（ステップＳ２００）
・第２の判断処理（ステップＳ３００）
・すべて完了か、の判断（ステップＳ１３６）
を順次実行する。
【００３７】
このハーフトーン処理の概要について説明する。初期化の処理は、ハーフトーン処理に必要な変数などを初期化する処理である。例えば、処理を開始する画素位置を画像の左上とするために、画素位置を示す変数（ｘ，ｙ）を（０，０）に初期化する処理などが含まれる。
【００３８】
初期化の処理が終了すると、次に、処理対象特定処理を実行する（ステップＳ１３４）。処理対象特定処理は、ハーフトーン処理が、すべての画素について順次実行されることから、後述する第１の判断処理（ステップＳ２００）、第２の判断処理（ステップＳ３００）が実行されるたびに、処理対象を更新する処理である。
【００３９】
処理対象特定処理を行なって、処理対象であるブロックを特定した後、着目しているブロックに含まれる４つの画素に対して第１の判断処理を行なう（ステップＳ２００）。この判断処理は、各画素について、いわゆるディザ法を適用して、上述したディザマスク６１として用意された閾値と、画素毎の画像データとの大小を判断する処理である。
【００４０】
第１の判断処理（ステップＳ２００）を終了すると、次にこの第１の判断処理の結果を利用する第２の判断処理（ステップＳ３００）を行なう。第２の判断処理は、ドットの形成を最終的に判断する処理である。第２の判断処理は、いわゆる誤差拡散法を適用して、誤差拡散用の閾値とブロック全体の画像データとの大小を判断して、第１の判断処理の結果も併せて、ドットの形成について判断する。
【００４１】
その後、全てのブロック及びそのブロックに属する画素についてのハーフトーン処理が完了したかを判断し（ステップＳ１３６）、完了するまで、図３の処理を繰り返す。従って、処理が完了していないと判断した場合には、ステップＳ１３４に戻り、処理対象のブロックを更新し、第１，第２の判断処理を繰り返すことになる。繰り返し実行されるこれらの処理、つまり初期化の処理（ステップＳ１３２）、処理対象特定処理（ステップＳ１３４）、第１，第２の判断処理（ステップＳ２００，Ｓ３００）について、以下、詳しく説明する。
【００４２】
［初期化の処理］
ＣＰＵ４０が行なう初期化の処理（ステップＳ１３２）とは、ハーフトーン処理に必要な変数を初期化する処理である。初期化される変数としては、以下がある。
（１）画素位置（ｘ，ｙ）：処理しようとする画像の処理開始の画素の位置を、画像の左上、即ち主走査方向をｘ、副走査方向をｙとして、（０，０）に初期化する。
（２）ブロック番号（Ｂｎｘ，Ｂｎｙ）：本実施形態では、２画素×２画素の計４画素を一つのブロックとして処理を行なう。このブロック番号を初期値（０，０）に設定する。ブロック番号と画素の位置との関係は後述する。
（３）ディザマスク上の閾値の位置（ｘｍ，ｙｍ）：ディザマスク６１に格納された閾値の読み出し位置を示す変数である。この変数（ｘｍ，ｙｍ）を（０，０）に初期化する。
（４）ブロック毎の拡散誤差の値ｅｄ［Ｂｎｘ，Ｂｎｙ］：本実施形態では、ドット形成の有無により生じた濃度誤差は、ブロックを単位として周辺のブロックに拡散されるので、この拡散誤差を格納するバッファをブロック毎に備える。初期化の処理では、このバッファの値をすべて０とする。
（５）結果値Ｒｅｓｕｌｔ［ｘ，ｙ］：位置（ｘ，ｙ）の画素について、第１の判断処理（ステップＳ２００）による判断結果を示す。この結果値を、すべて値０に初期化する。
（６）ドット形成の有無を示す出力バッファＯＵＴ［ｘ，ｙ］を、ドットオフを示す値０に初期化する。
【００４３】
ハーフトーン処理においては、位置（ｘ，ｙ）の画素の階調値を、ｄａｔａ［ｘ，ｙ］と表記する。この階調値は、８ビットで表わされるので、画素の階調値は、０〜２５５の値をとる。また、後述する第１の判断処理で用いられるディザマスク６１は、図４（Ａ）に示すように、主走査方向に２５６画素分、副走査方向に６４画素分の大きさを有する。このディザマスク６１の各位置に格納されている閾値ＴＨｎ＿ｄも本実施形態では８ビットで表わされ、閾値は１〜２５５の値をとる。図４における太線の枠取りは、２画素×２画素のブロックに対応している。なお、説明を簡便なものとするために、画像の縦横の大きさ、ディザマスクの縦横の大きさなどは、すべて偶数として扱う。
【００４４】
［処理対象特定処理］
初期化の処理（ステップＳ１３２）を終えると、次に処理対象特定処理を行なう（ステップＳ１３４）。本実施形態では、ハーフトーン処理は、２×２画素からなるブロックを単位として行なう。画像の左上のブロック（０，０）から、処理するブロック位置を、主走査方向（ｘ方向）に順次インクリメントして行ない、主走査方向の右端まで処理すると、副走査方向（ｙ方向）の位置をインクリメントし、再度左端から順に行なう。副走査方向位置が同じである画素の並びを「ラスタ」とも言う。処理をブロック単位で行なうことから、本実施形態のハーフトーン処理は、２ラスタ分ずつ行なわれることになる。１ブロックの並び（２ラスタ）の処理が完了すると、次のブロックの並び（２ラスタ）の処理に移る。このため、以下の説明では、通常の座標表示とは異なり、処理中のブロック位置および画素の位置を（ｙ，ｘ）の順に示す。また、画素の位置については、ブロックの番号Ｂｎを用いて表すことがある。ブロックの開始位置（０，０）と画素の開始位置（０，０）は、何れも画像の左上である。このため、ブロック番号と画素位置の関係は、各ブロックの左上の画素を例に取ると、
ｙ＝２・Ｂｎｙ
ｘ＝２・Ｂｎｘ
となる。
【００４５】
処理対象特定処理（ステップＳ１３４）では、ハーフトーン処理する画素を含むブロックの番号をまず特定する。ブロック番号（Ｂｎｙ，Ｂｎｘ）の初期値は（０，０）であり、１ブロックに含まれる４画素のハーフトーン処理が完了すると、主走査方向にブロック位置を進め（Ｂｎｘ←Ｂｎｘ＋１）、２つのラスタについての処理が完了すると、主走査方向のブロック位置を初期化し（Ｂｎｘ←０）、副走査方向のブロック位置を１だけ進める（Ｂｎｙ←Ｂｎｙ＋１）。処理対象のブロックを特定すると、次にそのブロック内の画素データを特定する。この処理は、処理するブロックに含まれる４つの画素、即ち（ｙ，ｘ）を基準位置とすれば、（ｙ，ｘ）、（ｙ，ｘ＋１）、（ｙ＋１，ｘ）、（ｙ＋１，ｘ＋１）の４つの画素からなるブロックの画像データを確定する処理である。これら４つの画素の位置は、ブロック番号（Ｂｎｙ，Ｂｎｘ）を用いれば、次のように表すことができる。
（ｙ，ｘ）        ＝（２・ＢｎＹ，２・Ｂｎｘ）
（ｙ，ｘ＋１）    ＝（２・ＢｎＹ，２・Ｂｎｘ＋１）
（ｙ＋１，ｘ）    ＝（２・ＢｎＹ＋１，２・Ｂｎｘ）
（ｙ＋１，ｘ＋１）＝（２・ＢｎＹ＋１，２・Ｂｎｘ＋１）
【００４６】
また、各位置の画素の階調値を表す画像データは、ｄａｔａ［ｙ，ｘ］のように表わすものとする。したがって、処理する４つの画素が含まれるブロック全体の画像データｄａｔａ［Ｂｎｙ，Ｂｎｘ］は、
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］＝ｄａｔａ［ｙ，ｘ］＋ｄａｔａ［ｙ，ｘ＋１］＋ｄａｔａ［ｙ＋１，ｘ］＋ｄａｔａ［ｙ＋１，ｘ＋１］＋ｅｄ［Ｂｎｙ，Ｂｎｘ］
と表わされる。ｅｄ［Ｂｎｙ，Ｂｎｘ］とは、初期化の処理で説明したように、ハーフトーン処理の対象となったブロックに対して周辺の処理済みブロックから拡散されてきた階調誤差である。階調誤差は、複数のブロックから拡散されてくる場合があり、その値は、正の値と負の値の両方を取り得る。従って、ｅｄ［Ｂｎｙ，Ｂｎｘ］は、処理の時点で、それまでに周辺のブロックから拡散された誤差の総和に相当する。また、処理対象特定処理の最後に、第１の判断処理での判断結果をカウントするカウンタＣｏｎを値０にリセットする。以上により、処理対象特定処理が完了する。
【００４７】
［第１の判断処理］
処理対象のブロックの特定を終了した後、第１の判断処理を行なう（ステップＳ２００）。この処理の詳細を図５に示した。第１の判断処理を開始すると、ＣＰＵ４０は、まずブロック（Ｂｎｙ，Ｂｎｘ）内の画素を特定する処理を行なう（ステップＳ２０１）。各ブロックには、２×２、つまり４画素が含まれている。このブロック内の４つの画素について、順次、処理を行なうので、予め定めた順序に沿って、画素を特定するのである。
【００４８】
ブロックと画素の関係を図６に示した。図６（Ａ）は、ブロック位置（Ｂｎｙ、Ｂｎｘ）と画素位置（ｙ，ｘ）との関係を示している。また、図６（Ｂ）は、一つのブロック内に含まれる２×２の画素の処理順序を示している。ブロック内の左上（ＰＴ＝１）、右上（ＰＴ＝２）、左下（ＰＴ＝３）、右下（ＰＴ＝４）の順である。以下の説明では、画素を符号ＰＴによって特定するが、実際の画素位置との対応は、図６（Ｃ）に示したように、
ＰＴ＝１：（ｙ，ｘ）        ＝（２・ＢｎＹ，２・Ｂｎｘ）
ＰＴ＝２：（ｙ，ｘ＋１）    ＝（２・ＢｎＹ，２・Ｂｎｘ＋１）
ＰＴ＝３：（ｙ＋１，ｘ）    ＝（２・ＢｎＹ＋１，２・Ｂｎｘ）
ＰＴ＝４：（ｙ＋１，ｘ＋１）＝（２・ＢｎＹ＋１，２・Ｂｎｘ＋１）
となる。
【００４９】
この順序に従って、画素を特定すると、次に対応するディザマスクから閾値ＴＨｎ＿ｄを取得する処理を行なう（ステップＳ２０２）。処理する画素に対応する閾値の位置（ｙｍ，ｘｍ）は、
ｙｍ＝ｍｏｄ（ｙ，６４）
ｘｍ＝ｍｏｄ（ｘ，２５６）
として求める。ここで、関数ｍｏｄ（ａ，ｂ）は、値ａを値ｂで除算した際の余りを意味する関数である。６４は、ｙ方向のディザマスク６１の大きさを、２５６は、ｘ方向のディザマスク６１の大きさである。
【００５０】
ディザマスク６１には、第１の閾値に相当する複数の閾値ＴＨｎ＿ｄが配列されている。第１の閾値ＴＨｎ＿ｄ（以下、単に閾値ＴＨｎ＿ｄとも呼ぶ）は、本願の「第１の閾値」の下位概念に相当する。本実施形態では、閾値ＴＨｎ＿ｄは、１〜２５５までの値をとる。各閾値ＴＨｎ＿ｄは、この閾値との比較により形成されるドットの空間周波数が、いわゆるブルーノイズ特性となるように配置されている。
【００５１】
図７は、こうしたディザマスク６１が備えるノイズ特性を例示する説明図である。図には、ブルーノイズ特性およびグリーンノイズ特性を有するディザマスクの各画素に設定されている閾値の空間周波数特性を概念的に例示した。ディザマスクにおけるブルーノイズ特性は、高い周波数領域に最も大きな周波数成分を有する特性で、例えばトッド密度が５０％近辺の場合は、１周期の長さが２画素付近の高い周波数領域に最も大きな周波数成分を有する。これは、高周波領域において感度が低いという人間の視覚特性を考慮して、高周波領域に最も大きな周波数成分が発生するように閾値の格納位置が調整されていることを意味する。こうしたブルーノイズ特性を備えたディザマスクを用いてドットを発生させると、ドットの分散性に優れた画像が得られる。
【００５２】
図７には、さらに、グリーンノイズ特性を破線の曲線として例示している。図示されているように、グリーンノイズ特性は、ブリーノイズ特性よりやや低周波側に最も大きな周波数成分を有するもので、画素サイズが十分に小さければグリーンノイズ特性でも粒状感の感じられない良好な画像が得られる。ディザマスク６１は、こうしたブルーノイズ特性やグリーンノイズ特性などの所定の空間周波数特性を有するものとされている。
【００５３】
更に、本実施形態においては、ディザマスク６１は、所定のドット形成特性を有している。すなわち、双方向印刷におけるキャリッジ８０の往動で形成されるドット群のドットパターンと、復動で形成されるドット群のドットパターンと、これらを併せた全体のドット群のドットパターンいずれもが、ブルーノイズ特性を有している。かかる技術は、例えば、特開２００７−１５３５９号公報に記載されている。なお、ディザマスク６１は、上述の往復動ごとのグループに代えて、または、これに加えて、キャリッジ８０の複数回の主走査のうちのいずれの主走査でドットが形成されるかを示す主走査グループごとに、ブルーノイズ特性を備えるものであってもよい。
【００５４】
こうして、処理しようとする画素の特定（ステップＳ２０１）と、その画素位置に対応する閾値ＴＨｎ＿ｄの取得（ステップＳ２０２）とを済ませると、次にその画素の画像データｄａｔａ［ＰＴ］と閾値ＴＨｎ＿ｄとの大小を判定する処理を行なう（ステップＳ２０５）。
【００５５】
図８は、ステップＳ２０５の判断を説明するための説明図である。図８（Ａ）には、ｙ方向のブロック番号Ｂｎｙが７と８の計４ラスタのうち、ｘ方向のブロック番号Ｂｎｘが２から５までの計８ブロック（３２画素）が示されている。また、図８（Ｂ）には、この８ブロックの各画素位置に対応したディザマスク６１の閾値、すなわちディザマスクの縦方向の番号ｙｍが１４から１７まで、横方向の番号ｘｍが４から１１までの計３２個の閾値ＴＨｎ＿ｄが例示されている。図８（Ｂ）に示した閾値は、図４（Ｂ）に例示した閾値と同じである。
【００５６】
仮に、処理しているブロック（Ｂｎｙ，Ｂｎｘ）が（７，３）であり、処理している画素ＰＴが１であれば、図７（Ａ）のハッチングを施した画素、つまり画素位置（ｙ，ｘ）が（２・Ｂｎｙ，２・Ｂｎｘ）＝（１４，６）の画素の階調データｄａｔａ［１４，６］と、ディザマスク６１の対応する位置（ｙｍ，ｘｍ）＝（１４，６）の閾値２５２とを比較することになる。
【００５７】
ステップＳ２０５での判断結果が「ＹＥＳ」、すなわち着目している画素の階調データｄａｔａ［ＰＴ］が閾値ＴＨｎ＿ｄ以上であれば、結果値Ｒｅｓｕｌｔ［ＰＴ］に値１を入れ（ステップＳ２０６）、更に判断結果が「ＹＥＳ」となった画素の数をカウントする変数Ｃｏｎを値１だけインクリメントする（ステップＳ２０７）。
【００５８】
他方、ステップＳ２０５での判断が「ＮＯ」、すなわち着目している画素の階調データｄａｔａ［ＰＴ］が閾値ＴＨｎ＿ｄ未満であれば、結果値Ｒｅｓｕｌｔ［ＰＴ］や変数Ｃｏｎの値の設定は何も行なわない。その後、ブロック内のすべての画素についての処理が完了したかを判断し（ステップＳ２０９）、完了していなければ、ステップＳ２０１に戻って上記の処理を繰り返す。
【００５９】
画素ＰＴとして左上（ＰＴ＝１）の画素の処理が終われば、次は右上の画素（ＰＴ＝２）の画素についての処理を行なう。この時、画素位置（ｙ，ｘ＋１）は（２・Ｂｎｙ，２・Ｂｎｘ＋１）＝（１４，７）となり、その画素の階調データｄａｔａ［１４，７］と、ディザマスク６１の対応する位置（ｙｍ，ｘｍ）＝（１４，７）の閾値５１とを比較することになる。比較結果により、結果値Ｒｅｓｕｌｔ［ＰＴ］の値の設定やカウント用の変数Ｃｏｎのインクリメントなどを行なうことは、上述した通りである。
【００６０】
同様に、左下画素（ＰＴ＝３）についての処理、右下画素（ＰＴ＝４）についての処理を完了すると、ステップＳ２０９での判断は、「ＹＥＳ」となり、第１の判断処理ルーチンを終了する。
【００６１】
以上の処理により、ブロックを単位として、当該ブロックに属する４つの画素ＰＴについて、その階調データを、ディザマスク６１の対応する位置の閾値ＴＨｎ＿ｄとそれぞれ比較し、階調データが大きければ、結果値Ｒｅｓｕｌｔ［ＰＴ］に値１を設定し、カウント用の変数Ｃｏｎを値１だけインクリメントする処理が行なわれる。比較結果が「ＮＯ」の場合には、結果値Ｒｅｓｕｌｔ［ＰＴ］は初期値０に保たれる。階調データと閾値の比較の結果、結果値Ｒｅｓｕｌｔ［ＰＴ］が値１に設定された画素を、図８（Ｃ）に黒塗りで例示した。
【００６２】
［第２の判断処理］
上述した第１の判断処理ルーチンを完了すると、続けて第２の判断処理（図３、ステップＳ３００）を実行する。この処理の詳細を図９に示した。図９に示した第２の判断処理ルーチンが開始されると、まず処理しているブロック内に結果値Ｒｅｓｕｌｔ［ＰＴ］が値１の画素があるか否かを判断する（ステップＳ３０２）。
【００６３】
結果値Ｒｅｓｕｌｔ［ＰＴ］が値１の画素がある場合には、その画素にドットを形成すると判断する（ステップＳ３０４）。具体的には、ドット形成の有無を示す出力バッファＯＵＴ［ＰＴ］にドット形成を示す値１を書き込む。
【００６４】
他方、ステップＳ３０２において、ブロック内の４つの画素に関し、結果値Ｒｅｓｕｌｔ［ＰＴ］＝１の画素が一つもないと判断されれば、次に、ブロック内の階調データの総和、すなわちｄａｔａ［Ｂｎｙ，Ｂｎｘ］が、誤差拡散法における閾値ＴＨｅ以上であるか否かの判断を行なう（ステップＳ３０６）。前述したように、ｄａｔａ［Ｂｎｙ，Ｂｎｘ］は、
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］＝ｄａｔａ［ｙ，ｘ］＋ｄａｔａ［ｙ，ｘ＋１］＋ｄａｔａ［ｙ＋１，ｘ］＋ｄａｔａ［ｙ＋１，ｘ＋１］＋ｅｄ［Ｂｎｙ，Ｂｎｘ］
として計算されているので、周辺のブロックから拡散されてきた濃度誤差を反映した値である。
【００６５】
ステップＳ３０６で判断に用いられる閾値ＴＨｅは、本願の第２の閾値の下位概念に相当する。第１実施形態では、第２の閾値ＴＨｅは、後述するように、通常の誤差拡散において用いられる値（階調範囲の中央値）に固定されている。ブロック全体の階調データｄａｔａ［Ｂｎｙ，Ｂｎｘ］が閾値ＴＨｅ以上であれば、ブロック内の所定の画素にドットを形成するとし、所定の画素に対応した出力バッファＯＵＴ［ＰＴ］にドット形成を示す値１を書き込むと共に、カウンタＣｏｎを値１だけインクリメントする（ステップＳ３０８）。所定の画素は、本実施形態では、ブロック内の左上の画素（ＰＴ＝１）とした。もとより、ブロック内の４つの画素のうち、階調データの一番大きな画素にドットを形成するものとしても良い。階調データが一番大きな画素にドットが形成されると、元の画像データにおいて階調値が高いところにドットが形成され易いことになるからである。あるいは、対応するディザマスクの閾値が一番小さい位置に対応する画素に形成するものとしても良い。ディザマスクの閾値ＴＨｎ＿ｄが小さければ、対応する画素にはドットが形成され易くなり、ディザマスク６１の持つ特性を反映しやすくなるからである。更に、ドットを形成する画素は、ランダムに決めても差し支えない。
【００６６】
上記の処理の後、誤差計算処理（ステップＳ３４０）と誤差拡散処理（ステップＳ３５０）とを行なう。誤差計算処理は、以下に示す処理の後に行なわれる。
（あ）結果値Ｒｅｓｕｌｔ［ＰＴ］が値１の画素にドットを形成するとしたステップＳ３０４の処理、
（い）所定の画素にドットを形成するとしたステップＳ３０８の処理、あるいは、
（う）ブロック内の画像データの総和、すなわちｄａｔａ［Ｂｎｙ，Ｂｎｘ］が、誤差拡散法における閾値ＴＨｅ未満であると判断されてドットを形成しないとしたステップＳ３０６の処理。
【００６７】
誤差計算処理（ステップＳ３４０）では、処理したブロックで発生した濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を求める。濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］は、次式により求める。
ｅｄ［Ｂｎｙ，Ｂｎｘ］＝ｄａｔａ［Ｂｎｙ，Ｂｎｘ］−Ｃｏｎ・ＯＮｖ
ここで、ＯＮｖは、一つの画素にドットが形成された場合や形成されなかった場合に、その画素に実現されたとみなす濃度値に対応する値である。本実施形態では、ドットが形成された場合の値をオンバリューと呼び、値２５５としている。カウンタＣｏｎは、ブロック内に形成するとされたドットの数を示している。従って、処理したブロックの濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］は、
（あ）の場合には、ブロック内の画像データの総和ｄａｔａ［Ｂｎｙ，Ｂｎｘ］から、ブロック内で形成されたドットの数Ｃｏｎとオンバリューの乗算値を、減算した値となり、
（い）の場合には、ブロック内の画像データの総和ｄａｔａ［Ｂｎｙ，Ｂｎｘ］から、ブロック内で形成された１個のドットのオンバリューを、減算した値となり、
（う）の場合には、ブロック内の画像データの総和ｄａｔａ［Ｂｎｙ，Ｂｎｘ］となる。
上記（う）のケースで、周辺画素から拡散された濃度誤差を含む画像データの総和ｄａｔａ［Ｂｎｙ，Ｂｎｘ］がそのまま濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］となるのは、ドットが形成されないために、Ｃｏｎ・ＯＮｖ＝０とみなせるからである。上記（あ）（い）のケースでは、演算結果がマイナスになる場合があり、この場合には、周辺画素にマイナスの誤差が拡散されることになる。
【００６８】
ブロック全体の画像データよりもブロック内に形成されたドットにより実現された濃度の方が高ければ、濃度誤差はマイナスの値となる。ブロック全体の画像データよりもブロック内に形成されたドットにより実現された濃度の方が低ければ、濃度誤差はプラスの値となる。そこで、次のこうして求めた濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を隣接するブロックに配分する誤差拡散処理（ステップＳ３５０）を実行する。
【００６９】
図１０は、誤差拡散マスクの一例を示す説明図である。＊印を付したブロック（Ｂｎｙ，Ｂｎｘ）がハーフトーン処理を行なっている対象ブロックである。このブロックにおいてステップＳ３４０で計算した誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を、周辺の６つのブロックに拡散する。配分の割合は、対象ブロックの右隣（次に処理するブロック）と直下に対して１／４ずつ、他の４ブロックについては、１／８ずつである。具体的には、
ブロック（Ｂｎｙ，Ｂｎｘ＋１）に対して、１／４
ブロック（Ｂｎｙ，Ｂｎｘ＋２）に対して、１／８
ブロック（Ｂｎｙ＋１，Ｂｎｘ−２）に対して、１／８
ブロック（Ｂｎｙ＋１，Ｂｎｘ−１）に対して、１／８
ブロック（Ｂｎｙ＋１，Ｂｎｘ）に対して、１／４
ブロック（Ｂｎｙ＋１，Ｂｎｘ＋１）に対して、１／８
の割合で、濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を配分し、誤差拡散を行なう。
【００７０】
こうして分配された濃度誤差は、各ブロックについて用意された拡散誤差バッファに加算された上で保存され、各ブロックでの第２の判断処理に用いられる。以上で第２の判断処理を終了する。その後、全てのブロックについての上記処理が完了したかを判断し（図３、ステップＳ１３６）、全てのブロックについての処理が完了するまで、上述した処理対象特定処理（ステップＳ１３４）、第１の判断処理（ステップＳ２００）、第２の判断処理（ステップＳ３００）を繰り返す。
【００７１】
［第１実施形態の効果］
以上説明した第１実施形態によれば、以下の作用効果を奏する。
〈１〉第２の判断処理に先立って、ディザマスクを用いた第１の判断処理を行なう。この結果、ディザマスクの閾値ＴＨｎ＿ｄより大きい階調値の画素には、ドットが形成されるので、ディザマスク６１の特性を反映したドット配置が可能となる。
〈２〉第１の判断処理によって、処理しているブロック内の画素の何れにもドットが形成される条件が成立していないと判断された場合には、誤差拡散法により、周辺のブロックから拡散されてきた濃度誤差も含めて、ドットを形成すべき条件が成立しているかを、第２の判断しょりにより判断している。従って、例えば画像に細線が引かれている箇所などで、ディザマスクの階調値の分布のためにドットが形成されると判断されなかった場合に、誤差拡散法により、必要なドットが形成される。
〈３〉上記〈２〉の場合に、誤差拡散処理をブロック単位で行なうので、誤差拡散の計算処理を低減でき、処理時間を短縮できる。
〈４〉第２の判断処理により形成するドットはブロック内で最大一つなので、第２の判断処理により、いわば追加的に形成するドットの数を抑制することができる。
【００７２】
［第１実施形態の変形例１］
上記実施形態では、第１の判断処理において、いずれかの画素の階調値がディザマスクの対応する位置の閾値以上であれば、結果値Ｒｅｓｕｌｔ［ＰＴ］を値１にセットし、その画素にドットを形成すると判断し、第２の判断処理での閾値ＴＨｅとの大小の判断は行なわない。第２の判断処理において、誤差拡散法を用いたドット形成の判定（図９、ステップＳ３０６）を行なうのは、第１の判断処理において何れの画素でも、結果値Ｒｅｓｕｌｔ［ＰＴ］が値１にされなかった場合に限られる。これに対して、変形例１では、第１の判断処理での結果の如何に関わらず、閾値ＴＨｅとの大小関係の判断を行なうものとしている。以下、変形例における第２の判断処理について説明する。変形例１においては、印刷処理の全体（図２）、ハーフトーン処理の全体（図３）および第１の判断処理（図５）は、第１実施形態と同様である。
【００７３】
変形例１では、第２の判断処理ルーチンとして、図１１に示した処理を実行する。図１１において、第１実施形態における第２の判断処理と同じ処理については、同一の符号を付し、詳細な説明は省略する。変形例１の第２の判断処理ルーチンを開始すると、ＣＰＵ４０は、まずブロック内の画素を特定する処理を行なう（ステップＳ３１０）。ブロック内の画素ＰＴは、図６（Ｂ）に示したように、第１の判断処理と同様の順序で特定する。
【００７４】
画素を特定すると、第１の判断処理におけるその画素の結果値Ｒｅｓｕｌｔ［ＰＴ］が値１であるか否かを判断する（ステップＳ３１２）。結果値Ｒｅｓｕｌｔ［ＰＴ］が値１である場合には（ステップＳ３１２：「ＹＥＳ」）、次に第２の閾値である閾値ＴＨｅを、低閾値ＴＨｅ＿Ｌとする処理を行なう（ステップＳ３１４）。他方、結果値Ｒｅｓｕｌｔ［ＰＴ］が値１でなければ（ステップＳ３１２：「ＮＯ」）、閾値ＴＨｅを高位閾値ＴＨｅ＿Ｈとする処理を行なう（ステップＳ３１６）。
【００７５】
ステップＳ３１４およびＳ３１６で第２の閾値ＴＨｅに設定され。低閾値ＴＨｅ＿Ｌと高位閾値ＴＨｅ＿Ｈとの一例を図１２に示した。低閾値ＴＨｅ＿Ｌと高位閾値ＴＨｅ＿Ｈとは、何れも着目している画素の画像データである注目画素データＤｎに応じて設定される。図１２に示した例では、低閾値ＴＨｅ＿Ｌは、注目画素データＤｎによらず−９６に設定されており、高位閾値ＴＨｅ＿Ｈは、注目画素データＤｎと共に増加する正の値に設定されている。これらの低閾値ＴＨｅ＿Ｌと高位閾値ＴＨｅ＿Ｈとは、図１に示した誤差拡散閾値テーブル６２に記憶されている。
【００７６】
結果位置Ｒｅｓｕｌｔ［ＰＴ］が値１であるとは、第１の判断処理において、その画素ＰＴの階調値である画像データが、ディザマスク６１の対応する位置（ｙｍ，ｘｍ）の閾値ＴＨｎ＿ｄ以上であったことを示している。即ち、ディザマスク６１に従えばその画素にドットを形成すべき条件が成立していると言うことである。そこでこの場合には、後述する誤差拡散の判断において、ドットが形成される易くなるように、閾値ＴＨｅの値を小さくし、そうでなければ、ドットが形成されにくくなるように、閾値ＴＨｅの値を大きくするのである。
【００７７】
誤差拡散に用いる閾値ＴＨｅの設定を行なった後、画素ＰＴの画像データｄａｔａ［ＰＴ］に、そのブロックの拡散誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］の１／４を加えて、補正画像データｄａｔａＸ［ＰＴ］を求める処理を行なう（ステップＳ３１７）。ブロックの拡散誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］は、それまでにハーフとヘン処理されたブロックから拡散されてきた誤差の総和を示しており、その１／４を各画素に配分するのである。その後、この補正画像データｄａｔａＸ［ＰＴ］が、閾値ＴＨｅ以上か否かの判断を行なう（ステップＳ３１８）。補正画像データｄａｔａＸ［ＰＴ］が閾値ＴＨｅ以上であれば、その画素にドットを形成するとする（ステップＳ３２０）。具体的には、出力バッファＯＵＴ［ＰＴ］に値１を設定する。ステップＳ３１８において、補正画像データｄａｔａＸ［ＰＴ］が閾値ＴＨｅ以上でないと判断した場合には、その画素にはドットを形成しないとして、ステップＳ３２０の処理を行なわない。
【００７８】
その後、全ての画素ＰＴについて、上記の処理を行なったかを判断し（ステップＳ３２２）、最後の画素（ＰＴ＝４）までの処理が完了するまで、上述した処理を繰り返す。全ての画素について処理が完了すれば（ステップＳ３２２：「ＹＥＳ」）、図９を用いて説明した誤差拡散処理（ステップＳ３４０）と誤差拡散処理（ステップＳ３５０）とを行ない、第２の判断処理を終了する。
【００７９】
［変形例１の効果］
以上説明した変形例によれば、以下の効果を奏する。
〈イ〉ディザマスク６１の閾値との比較結果により、誤差拡散法による閾値ＴＨｅを自由に設定できるので、ディザ法と誤差拡散法との組み合わせ、つまり処理する画素の階調値に応じて、どの階調範囲でディザ法による処理をどの程度の割合で行ない、どの階調範囲において誤差拡散法による処理をどの程度の割合で行なうかを自由に設計することができる。
〈ロ〉低位閾値ＴＨｅ＿Ｌをマイナスの値としているので、第１の判断処理において、判断している画素の階調値がディザマスクの閾値ＴＨｎ＿ｄより大きい場合には、誤差拡散における判断によってもドットを形成することになる。したがって、ディザマスク６１の特性を反映したドット配置が実現される。
〈ハ〉その上で、更に誤差が蓄積されていれば、誤差拡散法の判断により、ドットが形成される。したがって、例えば画像に細線が引かれている箇所などで、ディザマスクの階調値の分布のためにドットが形成されると判断されなかった場合に、誤差拡散法により、必要なドットを形成することができる。
〈ニ〉誤差拡散処理をブロック単位で行なうので、誤差拡散の計算処理を低減でき、処理時間を短縮できる。
【００８０】
上記変形例１では、図１２に示したように、低位閾値ＴＨｅ＿Ｌをマイナスの一定値に、高位閾値ＴＨｅ＿Ｈを画素データＤｎと共に漸増する値とした。これとは別に、低位閾値ＴＨｅ＿Ｌおよび高位閾値ＴＨｅ＿Ｈを、図１３に例示するように、共に漸増するように設定しても良い。図１３に示した例では、低位閾値ＴＨｅ＿Ｌは、画素データＤｎが低い領域では、マイナスの値をとるものとした。こうすれば階調値の低い領域ではディザ法の結果に近いドット配置となり、階調値の高い領域では誤差拡散法の結果に近いドット配置となる。
【００８１】
Ｂ．第２実施形態：
次に本発明の第２実施形態について説明する。第２実施形態では、以下の点で第１実施形態と異なっている。
〈ｉ〉図１４に示すように、画像における１画素が、印刷される画像の４画素（２×２）に対応している。具体的に言えば、印刷しようとする画像の解像度が、ｘ方向、ｙ方向とも３６０ｄｐｉであるのに対して、印刷される画像の解像度はｘ，ｙ方向のいずれについても７２０ｄｐｉである。
〈ｉｉ〉印刷ヘッド９０によって、印刷媒体Ｐ上に形成可能なドットが、大中小の３種類であるため、１画素当たり、「大ドット」「中ドット」「小ドット」「ドットなし」の４階調を表現可能である。
【００８２】
入力側と出力側の解像度が異なるため、ブロックを単位として見た場合、出力側に合わせて、入力側にも同じ階調値の画素が４つあるものとして扱う。一つのブロックについて処理を行なう際には、第１実施形態と同様、左上の画素から右下の画素まで、順に同じ処理を４回繰り返す。
【００８３】
第２実施形態では、第１実施形態と同様に、印刷処理（図２）およびハーフトーン処理（図３）を行なう。ハーフトーン処理では、第１実施形態と同様に、第１，第２の判断処理を行なうが、これらの処理に先だって、処理対象特定処理（図３、ステップＳ１３４）において、処理する画像の画素を特定し、第１の判断処理に用いるディザマスクの閾値の位置を特定すると共に、その画素の入力階調値Ｄｓから、大中小ドットデータを求める処理が行なわれる。この処理のイメージを図１５に示した。第２実施形態では、画像の各画素について、入力階調値Ｄｓが与えられると、まずその階調値Ｄｓを、大中小の各ドットによって実現すべき割合に変換する。
【００８４】
図１５に示したように、入力階調値Ｄｓが０近傍では、小ドットのみが形成され、入力階調値Ｄｓが増加するにつれて、小ドットが形成される割合は増加する。ここでドットが形成される割合とは、同一の入力階調値Ｄｓが続いた場合、つまりべた塗りの場合に、所定個数Ｎｇの印刷画素に形成されるドット数Ｎｄのバーセント（１００×Ｎｄ／Ｎｇ）を言う。入力階調値Ｄｓが所定の階調値である第１の階調値に達すると、中ドットの形成が始まって漸増し、これに合わせて小ドットが形成される割合は低下していく。同様に、入力階調値Ｄｓが第１の階調値より大きな第２の階調値に達すると、大ドットの形成が始まって漸増し、これに合わせて中ドットが形成される割合は低下していく。小ドットが形成される割合をｄａｔａ＿ｓ、中ドットが形成される割合をｄａｔａ＿ｍ、大ドットが形成される割合をｄａｔａ＿ｌ、としてそれぞれ表記し、更にこれらの値ｄａｔａ＿ｓ，ｄａｔａ＿ｍ，ｄａｔａ＿ｌを全て加えた値を、合計値ｄａｔａ＿ｔと表記する。入力階調値Ｄｓに対する小中大ドットの形成の割合を示すこの関係は、ＬＵＴとして、ＥＥＲＯＭ６０に記憶されている。
【００８５】
処理対象特定処理（ステップＳ１３４）では、入力階調値Ｄｓを読み込み、ＥＥＲＯＭに記憶されたＬＵＴを参照して、小中大ドットが形成される割合を示すデータｄａｔａ＿ｓ，ｄａｔａ＿ｍ，ｄａｔａ＿ｌを取得する。その上で、図１６に示した第２実施形態における第１の判断処理ルーチンを実行する。この処理は、第１実施形態同様、ブロック毎に行なわれる。図１４に示したように、一つのブロックに含まれる一つの画素について、ＣＰＵ４０は、まず大ドットを形成する割合を示すｄａｔａ＿ｌがディザマスク６１の対応する位置の閾値ＴＨｎ＿ｄ以上であるか否かの判断を行なう（ステップＳ２１０）。
【００８６】
ｄａｔａ＿ｌが閾値ＴＨｎ＿ｄ以上であれば、その画素ＰＴの結果値Ｒｅｓｕｌｔ［ＰＴ］に大ドットを形成することを示す値Ｌｄｏｔを入れる（ステップＳ２１１）。他方、ｄａｔａ＿ｌが閾値ＴＨｎ＿ｄ未満であれば、次に、ｄａｔａ＿ｌとｄａｔａ＿ｍとの合計値が、同じ閾値ＴＨｎ＿ｄ以上であるか否かの判断を行なう（ステップＳ２１１４）。ｄａｔａ＿ｌ＋ｄａｔａ＿ｍが閾値ＴＨｎ＿ｄ以上であれば、その画素ＰＴの結果値Ｒｅｓｕｌｔ［ＰＴ］に中ドットを形成することを示す値Ｍｄｏｔを入れる（ステップＳ２１５）。
【００８７】
更に、ｄａｔａ＿ｌ＋ｄａｔａ＿ｍが閾値ＴＨｎ＿ｄ未満であれば、次に、合計値ｄａｔａ＿ｔが、同じ閾値ＴＨｎ＿ｄ以上であるか否かの判断を行なう（ステップＳ２１１８）。ｄａｔａ＿ｔが閾値ＴＨｎ＿ｄ以上であれば、その画素ＰＴの結果値Ｒｅｓｕｌｔ［ＰＴ］に小ドットを形成することを示す値Ｓｄｏｔを入れる（ステップＳ２１９）。上述したステップＳ２１０、Ｓ２１４、Ｓ２１８のいずれかの判断結果が「ＹＥＳ」となった場合であって、結果値Ｒｅｓｕｌｔ［ＰＴ］に、Ｌｄｏｔ，Ｍｄｏｔ，Ｓｄｏｔのいずれかを入れた場合には、ドットを形成すべき条件が成立したものとして、ドット形成カウンタＣｏｎを値１だけインクリメントする（ステップＳ２２０）。
【００８８】
上記の処理は、入力画素の階調値Ｄｓが、大ドットを形成するほど大きいかをディザマスクの閾値ＴＨｎ＿ｄと比較して判断し、順次、より小さいドットのデータを加えながら、同じ閾値ＴＨｎ＿ｄとの比較を繰り返している。これは、いわゆるディザ連続と呼ばれる判断手法である。ディザ連続の考え方は、その画素の階調値が大ドットを形成するほどの大きさでない場合には、大中のドットの形成割合を示すデータを加えて、中ドットを形成する程度の大きさかを判断し、更にその画素の階調値が中ドットを形成するほどの大きさでない場合には、大中小ドットの形成割合の合計値で、小ドットを形成する程度の大きさを判断する、というものである。こうすることで、一つのディザマスクを用意するだけで、大中小ドットを適切に配置することができる。
【００８９】
上記の処理を終えると、ブロック内の全ての画素についての判断を終了したかを判断し（ステップＳ２２２）、４つの画素についての判断が終了するまで、上述した処理（ステップＳ２１０〜Ｓ２２２）を繰り返す。入力画素ＰＴを順次処理しても入力画素の階調値Ｄｓは同じ値をとるが、ディザマスク６１から閾値を取得する位置は移動し、異なる閾値ＴＨｎ＿ｄが取り出され、ステップＳ２１０、Ｓ２１４、Ｓ２１８での判断に供される。
【００９０】
図１６に示した第１の判断処理ルーチンを完了すると、次に、図１７に示した第２の判断処理ルーチンを実行する。この処理を開始すると、ＣＰＵ４０は、まずカウンタＣｏｎが値１以上であるか否かの判断を行なう（ステップＳ３３０）。カウンタＣｏｎは、現在処理しているブロック内で、第１の判断処理（図１６）でドットが形成されるとされた数を反映している。従って、ステップＳ３３０のこの判断結果が「ＹＥＳ」であれば、そのブロックの中には、第１の判断処理により少なくとも１個のドットが形成されると判断されたことになるので、ステップＳ３３２に移行し、結果値Ｒｅｓｕｌｔ≠０の画素にドットを形成する処理を行なう。形成されるドットは、結果値Ｒｅｓｕｌｔ［ＰＴ］がＬｄｏｔの画素ＰＴでは大ドットであり、結果値Ｒｅｓｕｌｔ［ＰＴ］がＭｄｏｔの画素ＰＴでは中ドットであり、結果値Ｒｅｓｕｌｔ［ＰＴ］がＳｄｏｔの画素ＰＴでは小ドットである。
【００９１】
他方、カウンタＣｏｎが値１以上でなければ、このブロック内にドットを形成するとの判断が、第１の判断処理では、なされなかったことになるので、次にこのブロック全体の画像データｄａｔａ［Ｂｎｙ，Ｂｎｘ］が、誤差拡散法用に用意された閾値ＴＨｅ以上か否かの判断を行なう（ステップＳ３３４）。ブロック全体の画像データｄａｔａ［Ｂｎｙ，Ｂｎｘ］が閾値ＴＨｅ以上であれば、所定画素にドットを形成する（ステップＳ３３６）。これらの処理は、第１実施形態の第２の判断処理ルーチン（図９）のステップＳ３０６、Ｓ３０８の処理に対応している。既述したように、ｄａｔａ［Ｂｎｙ，Ｂｎｘ］は、
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］＝ｄａｔａ［ｙ，ｘ］＋ｄａｔａ［ｙ，ｘ＋１］＋ｄａｔａ［ｙ＋１，ｘ］＋ｄａｔａ［ｙ＋１，ｘ＋１］＋ｅｄ［Ｂｎｙ，Ｂｎｘ］
として計算されているので、周辺のブロックから拡散されてきた濃度誤差を反映した値である。
【００９２】
画素が形成される所定の画素は、第１実施形態と同様、ブロック内の左上の画素（ＰＴ＝１）とすれば良い。もとより、ブロック内の４つの画素のうち、階調データの一番大きな画素にドットを形成するものとしても良いし、対応するディザマスクの閾値が一番小さい位置に対応する画素に形成するものとしても良いし、ドットを形成する画素を、ランダムに決めても差し支えない。また、形成されるドットは、本実施形態では、小ドットとした。もともと第１の判断処理によってはドットが形成されないブロックであり、ブロック全体の判断で形成される画素は最小限の濃度を表現できれば足りる場合が多いからである。所定の画素にドットを形成するとした後、後述する誤差計算に備えて、カウンタＣｏｎに値１を設定する（ステップＳ３３８）。
【００９３】
上記の処理の後、第１実施形態と同様、誤差計算処理（ステップＳ３４０）と誤差拡散処理（ステップＳ３５０）とを行なう。誤差計算処理は、以下に示す処理の後に行なわれる。
（ア）結果値Ｒｅｓｕｌｔ［ＰＴ］≠０の画素にドットを形成するとしたステップＳ３３２の処理、
（イ）所定の画素にドットを形成するとしたステップＳ３３６、Ｓ３３８の処理、あるいは、
（ウ）ブロック内の画像データの総和、すなわちｄａｔａ［Ｂｎｙ，Ｂｎｘ］が、誤差拡散法における閾値ＴＨｅ未満であると判断されてドットを形成しないとしたステップＳ３３４の処理。
【００９４】
誤差計算処理（ステップＳ３４０）では、処理したブロックで発生した濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を求める。濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］は、次式により求める。
ｅｄ［Ｂｎｙ，Ｂｎｘ］＝ｄａｔａ［Ｂｎｙ，Ｂｎｘ］−Ｃｏｎ・ＯＮｖ
ＯＮｖは、第１実施形態で説明したオンバリューである。カウンタＣｏｎの値は、ブロック内に形成するとされたドットの数を反映している。従って、処理したブロックの濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］は、
（ア）の場合には、ブロック内の画像データの総和ｄａｔａ［Ｂｎｙ，Ｂｎｘ］から、ブロック内で形成されたドットの数Ｃｏｎとオンバリューの乗算値を、減算した値となり、
（イ）の場合には、ブロック内の画像データの総和ｄａｔａ［Ｂｎｙ，Ｂｎｘ］から、ブロック内で形成された１個のドットのオンバリューを、減算した値となり、
（ウ）の場合には、ブロック内の画像データの総和ｄａｔａ［Ｂｎｙ，Ｂｎｘ］となる。
上記（ア）（イ）のケースでは、演算結果がマイナスになる場合があり、この場合には、周辺画素にマイナスの誤差が拡散されるのは第１実施形態と同様である。
【００９５】
ブロック全体の画像データよりもブロック内に形成されたドットにより実現された濃度の方が高ければ、濃度誤差はマイナスの値となる。ブロック全体の画像データよりもブロック内に形成されたドットにより実現された濃度の方が低ければ、濃度誤差はプラスの値となる。この場合、大中小ドットの何れが形成されるかにより、そのブロックで実現される濃度は異なるが、第２実施形態では、ドット１個当たりのオンバリューＯＮｖを一定値として、計算を簡略化している。もとより、形成されるドットが大中小ドットの何れであるかにより、オンバリューＯＮｖを異ならせ、ブロック内で実現された濃度を詳細に計算しても良い。
【００９６】
こうして濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を求めた後、濃度誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を隣接するブロックに配分する誤差拡散処理（ステップＳ３５０）を実行する。このステップＳ３５０の処理は、第１実施形態と同一の処理なので、説明は省略する。
【００９７】
以上説明した第２実施形態によれば、第１実施形態と同様の効果を奏する上、更にブロック内での多値化の処理が可能であり、よりきめ細かい、高画質の画像を形成することができる。しかも、大中小のドットによる高画質の画像を形成しながら、細線を小ドットにより再現でき、多値化による高画質化と細線の再現性とを両立させることができる。
【００９８】
［変形例２］
上述した実施形態では、第１の判断処理において、処理対象の画素の階調値として、その画素の階調データＤｎをそのまま利用したが、第１の判断処理における画像データに予め係数ｋを掛けて修正画素データを求めてから判断を行なうものとしても良い。第１実施形態であれば、図５に示した第１の判断処理ルーチンのステップＳ２０５において、
ｄａｔａ［ＰＴ］≧ＴＨｎ＿ｄ？
という判断に代えて、修正画素データｄａｔａ′［ＰＴ］を
ｄａｔａ′［ＰＴ］←ｄａｔａ［ＰＴ］×ｋ
として求め、
ｄａｔａ′［ＰＴ］≧ＴＨｎ＿ｄ？
の判断を行なうものとするのである。また、第２実施形態であれば、図１６の第１の判断処理において、小中大ドットの形成の割合であるｄａｔａ＿ｓ，ｄａｔａ＿ｍ，ｄａｔａ＿ｌを求める前の画像データＤｎに係数ｋを掛けてから、小中大ドットの形成の割合を求めるのである。
【００９９】
画素データが低い領域、つまりハイライト部分での係数ｋを１．０より小さな値とすれば、第１の判断処理（ディザ法）でドットが形成される割合を低下することができ、その分を、第２の判断処理（誤差拡散法）によるドットの形成で補うことができる。つまり、第１の判断処理において、処理対象となった画素の階調値が所定の条件（ｄａｔａ［ＰＴ］≧ＴＨｎ＿ｄ）を満たしていると判断される割合は、その画素の画素データｄａｔａ［ＰＴ］において、最終的にドットが形成される割合より低い割合とされる。このため、ハイライト部分での誤差拡散によるドット発生の割合を高くすることができる。
【０１００】
［変形例３］
上記実施形態では、第１の判断処理では、判断結果を結果値Ｒｅｓｕｌｔ［ＰＴ］に記憶し、最終的なドットの発生については第２の判断処理において判断するものとした。これに対して、第１実施形態などでは、第１の判断処理（図５）において、結果値Ｒｅｓｕｌｔ［ＰＴ］に値１を設定すると同時に、その画素にドットを形成すると判断しても良い。つまり、図９におけるステップＳ３０４の処理を第１の判断処理（図５）において行なうものとしても良い。
【０１０１】
［その他の変形例］
本発明は、上記の実施形態、変形例以外にも、種々の構成を採用可能である。例えば、第１の判断処理として、ディザ法に代えて、濃度パターン法や面積階調法など、他の判断処理を行なうものとしてもよい。あるいは１ブロックに含まれる画素数を２×１、１×２、３×２、２×３、３×３などにしても良い。更に多数の画素からなるブロックを用いても良い。あるいは、ブロックは必ずしも長方形状に限る必要はなく、十字形状や、上下のラスタ間で１ないし数画素ずれた平行四辺形状などの形態であっても差し支えない。ブロックの形状は、一つの画像内で一種類に限らなくても良い。
【０１０２】
また、多値化を行なう場合、ドットの種類は２種類（３値化）でも良いし、４種類以上でもよい。多値化は、小中大などドットの大きさを変えて実現しても良いし、濃淡のインクを用意してドットの濃度の違いにより実現してもよい。あるいは、インク滴を同じ画素に重ねる回数を変えることで実現しても良い。重ねるインク滴は同じ大きさでも良いし、異なる大きさのインク滴であっても良い。ドットを形成するインクは、多色印刷を前提として、異なる色相のインクであっても良いし、白黒印刷など単色の印刷を前提とした単色インクであっても良い。複数のインクを用いる印刷装置の場合、全てのインクについて本発明の手法を適用しても良いし、一部のインクについてのみ適用するものとしても良い。
【０１０３】
第１の判断処理において用いるディザマスクは、ブルーノイズ特性を有するものとしたが、グリーンノイズ特性を有するものであっても良いし、他の特性、例えばピンクノイズ特性やホワイトノイズ特性を有するものであっても良い。あるいは、ドット集中型のディザマスクや規則的なドット配置となるベイヤー型や網点型のディザマスクであっても良い。更に、ディザマスクは、印刷が印刷ヘッド９０の往復動や多数回のパスによって画像を形成するものである場合、印刷ヘッド９０の往動で形成されるドットの特性、および／または復動によって形成されるドットの特性、更には往復動によって形成されるドットの特性が、特定のノイズ特性となるように閾値の配置を定めたものとしても良い。
【０１０４】
上記の実施形態では、第２の判断処理の結果として形成されるドットは、ブロック内で１個としたが、２個などブロック全体の画素データｄａｔａ［Ｂｎｙ，Ｂｎｘ］の大きさにより複数のドットを形成可能としても良い。こうした場合、発生可能なドットの最大個数は、ブロックに含まれる画素数の１／２を越えないものとして良い。こうすれば、第２の判断処理による過剰なドットの発生を回避することができる。第２の判断処理は、第１の判断処理では発生させにくいドット、例えば細線の画像に対応したドットを発生させるために用いることが想定され、こうした場合、第２の判断処理で形成するドットの割合は、抑制した方が望ましいからである。
【０１０５】
本発明は、上述の実施形態や実施例、変形例に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態、実施例、変形例中の技術的特徴は、上述の課題の一部又は全部を解決するために、あるいは、上述の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせを行なうことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【符号の説明】
【０１０６】
２０…プリンター
３０…制御ユニット
４０…ＣＰＵ
４１…入力部
４２…ハーフトーン処理部
４３…比較部
４４…誤差拡散部
４６…印刷部
５１…ＲＯＭ
５２…ＲＡＭ
６０…ＥＥＰＲＯＭ
６１…ディザマスク
６２…誤差拡散閾値テーブル
７０…キャリッジモータ
７１…駆動ベルト
７２…プーリ
７３…摺動軸
７４…紙送りモータ
７５…プラテン
８０…キャリッジ
８２〜８７…インクカートリッジ
９０…印刷ヘッド
９８…メモリカードスロット
９９…操作パネル
Ｐ…印刷媒体
ＭＣ…メモリカード
【図１】
0006390405.tif 000002
【図２】
0006390405.tif 000003
【図３】
0006390405.tif 000004
【図４】
0006390405.tif 000005
【図５】
0006390405.tif 000006
【図６】
0006390405.tif 000007
【図７】
0006390405.tif 000008
【図８】
0006390405.tif 000009
【図９】
0006390405.tif 000010
【図１０】
0006390405.tif 000011
【図１１】
0006390405.tif 000012
【図１２】
0006390405.tif 000013
【図１３】
0006390405.tif 000014
【図１４】
0006390405.tif 000015
【図１５】
0006390405.tif 000016
【図１６】
0006390405.tif 000017
【図１７】
0006390405.tif 000018