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