(57)【特許請求の範囲】
【請求項１】
原画像を複数のインクを用いた表現に変換する画像処理装置であって、
予め定めた第１のハーフトーン処理を行なう第１ハーフトーン部と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン部とを備え、
前記第２ハーフトーン部は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換し、
前記第１ハーフトーン部は、
前記第１種色について、前記原画像を構成する各画素毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換し、
前記第１のハーフトーン処理として、前記第１種色の階調値に基づいて第１種色に対応した第１種インクによるドットを形成するか否かを直接定める処理を行なう
画像処理装置。
【請求項２】
前記第１ハーフトーン部が行なう前記第１のハーフトーン処理は、前記第２ハーフトーン部が行なう前記第２のハーフトーン処理より高画質の処理である請求項１記載の画像処理装置。
【請求項３】
前記第１種色は少なくとも黒色を含む請求項１または請求項２記載の画像処理装置。
【請求項４】
前記第１種色は黒色のみである請求項３記載の画像処理装置。
【請求項５】
前記第２ハーフトーン部が行なう前記第２のハーフトーン処理は、前記第１ハーフトーン部が行なう前記第１のハーフトーン処理より高速の処理である請求項１記載の画像処理装置。
【請求項６】
前記第２のハーフトーン処理は、
ディザマスクに格納された閾値と前記ブロックを毎に前記第２種色の階調値とを比較する処理である
請求項５記載の画像処理装置。
【請求項７】
前記第２ハーフトーン部は、前記第２種色について、前記ブロック内の前記複数個の画素の平均値をもちいて処理を行なう請求項１から請求項６のいずれか一項に記載の画像処理装置。
【請求項８】
原画像を複数のインクを用いた表現に変換する画像処理装置であって、
予め定めた第１のハーフトーン処理を行なう第１ハーフトーン部と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン部とを備え、
前記第２ハーフトーン部は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換し、
前記第１ハーフトーン部は、
前記第１種色について、前記原画像を構成する各画素毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換し、
前記第１種色について、前記ブロック内のいずれかの画素に前記第１種色が存在するかの判断を行ない、前記第１種色が存在する画素についてのみ、前記第１のハーフトーン処理を行なう、画像処理装置。
【請求項９】
原画像を複数のインクを用いた表現に変換する画像処理装置であって、
予め定めた第１のハーフトーン処理を行なう第１ハーフトーン部と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン部とを備え、
前記第２ハーフトーン部は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換し、
前記第１ハーフトーン部は、
前記第１種色について、前記原画像を構成する各画素毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換し、
前記ブロック内のいずれかの画素に前記第１種色が存在する場合には、前記原画像を構成する全画素が前記第１種色であるとして前記第１のハーフトーン処理を行ない、
更に、前記第１種色が存在する画素位置に基づいて、前記第１のハーフトーン処理の結果と、前記第２ハーフトーン部による前記第２のハーフトーン処理の結果とを合成して、前記複数のインクを用いた表現に変換する画像処理の結果を求めるハーフトーン処理結果合成部を備える
画像処理装置。
【請求項１０】
原画像を複数のインクを用いた表現に変換する画像処理装置であって、
予め定めた第１のハーフトーン処理を行なう第１ハーフトーン部と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン部とを備え、
前記第２ハーフトーン部は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換し、
前記第１ハーフトーン部は、前記第１種色について、前記原画像を構成する各画素毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換し、更に、
前記原画像における一方向への画素の配列であるラスタを、前記第２ハーフトーン部が扱う前記ブロックを少なくとも一つ含みうる数だけ束ねて処理ラスタとする第１処理と、
前記ブロックを単位とした前記第２種色の階調データを対応する第２種インクのインク量に変換したインク量と、前記各画素または前記ブロックを構成する画素数より少ない数の画素群毎の前記第１種色に対応した第１種インクのインク量とを組み合わせた中間データを、前記処理ラスタ毎に生成する第２処理とを、行ない、
前記中間データを、前記第１，第２ハーフトーン部に処理させることにより、前記第１種インクおよび第２種インクのインク量に対応したドットの形成の有無を表すドットデータを生成する
画像処理装置。
【請求項１１】
前記第２処理において生成される中間データを、ブロックを単位とした第２種色の階調データを対応する第２種インクのインク量に変換したインク量を、更に前記ブロックに形成されるドット数および前記ブロック内におけるドット位置の情報にエンコードした形態で記憶する請求項１０記載の画像処理装置。
【請求項１２】
前記ブロックより大きなディザマスクを準備し、
前記エンコードを、前記ディザマスクに含まれる閾値であって前記ブロックに含まれる画素の数に対応した数の閾値と前記第２種インクのインク量との比較結果を符号化することにより行なう請求項１１記載の画像処理装置。
【請求項１３】
前記ブロックより大きなディザマスクを準備し、
前記エンコードを、前記ディザマスクに含まれる閾値であって前記ブロックに含まれる画素の数に対応した数の閾値の大小を序列化した情報と、前記第２種インクのインク量に基づき判断した前記ブロック内に形成すべきドット数との組合せによって行なう請求項１１または請求項１２記載の画像処理装置。
【請求項１４】
原画像を複数のインクを用いて印刷する印刷装置であって、
予め定めた第１のハーフトーン処理を行なう第１ハーフトーン部と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン部と、前記第１，第２ハーフトーン部のハーフトーン結果であるインク量に基づいてドット形成を行なうドット形成部とを備え、
前記第２ハーフトーン部は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換し、
前記第１ハーフトーン部は、前記第１種色について、前記原画像を構成する各画素毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換すると共に、前記第１のハーフトーン処理として、前記第１種色の階調値に基づいて第１種色に対応した第１種インクによるドットを形成するか否かを直接定める処理を行ない、
前記ドット形成部は、前記第１，第２ハーフトーン部が変換した前記インク量に対応した数のドットを前記インク毎に形成することにより、前記原画像に対応した画像を記録する
印刷装置。
【請求項１５】
原画像を複数のインクを用いた表現に変換する画像処理方法であって、
予め定めた第１のハーフトーン処理を行なう第１ハーフトーン処理工程と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン処理工程とを備え、
前記第２ハーフトーン処理工程は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換し、
前記第１ハーフトーン処理工程は、前記第１種色について、前記原画像を構成する各画素毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換し、前記第１のハーフトーン処理として、前記第１種色の階調値に基づいて第１種色に対応した第１種インクによるドットを形成するか否かを直接定める処理を行なう、
画像処理方法。
【請求項１６】
原画像を複数のインクを用いて印刷する印刷方法であって、
予め定めた第１のハーフトーン処理を行なう第１ハーフトーン処理工程と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン処理工程と、前記第１，第２ハーフトーン処理工程におけるハーフトーン結果であるインク量に基づいてドット形成を行なうドット形成工程とを備え、
前記第２ハーフトーン処理工程は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換し、
前記第１ハーフトーン処理工程は、前記第１種色について、前記原画像を構成する各画素毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換すると共に、前記第１のハーフトーン処理として、前記第１種色の階調値に基づいて第１種色に対応した第１種インクによるドットを形成するか否かを直接定める処理を行ない、
前記ドット形成工程では、前記第１，第２ハーフトーン処理工程により変換された前記インク量に対応した数のドットを前記インク毎に形成することにより、前記原画像に対応した画像を記録する
印刷方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を処理する技術および印刷する技術に関する。
【背景技術】
【０００２】
近年、階調数の少ない記録方式を用いて、それよりも階調数の多い画像を表示あるいは印刷する、いわゆるハーフトーン技術が、画像処理の分野で大きく進展している。こうしたハーフトーン技術では、処理の高速化と画質の向上とが求められており、能力の限られたハードウェア資源において、両者を如何にバランスさせるかが、常に問われてきた。
【０００３】
こうしたバランスは、様々なレベルで必要となる。例えば、ハーフトーン手法の代表例として、ディザ法と誤差拡散法とを挙げると、前者は一般に高速処理が可能だが画質を向上するには種々の工夫が必要となり、後者は一般に高画質化が可能だが、処理に時間がかかり、また誤差を一時的に記憶するバッファなども必要とする。あるいは画像処理の単位に注目すると、一画素毎に処理する手法と複数の画素をまとめて処理する手法とが考えられるが、前者では高画質化はしやすいものの解像度が高くなるに連れて、処理すべき画素数が膨大なものとなり、後者では処理対象の数は抑制できるものの、その分画質が低下してしまう。更に、画像を用意するコンピューターとこれを印刷するプリンターとが接続された形態を想定すると、一般に処理能力の高いコンピューター側でハーフトーンを行なえば、処理は高速化できるものの、これをプリンターに転送するデータ量が増えて、データ転送がボトルネックになることがあった。
【０００４】
本発明者は、こうした問題を、所与のハードウェア資源の中でバランスさせる手法を種々開発し、ディザ法と誤差拡散法のバランスを取る手法（下記特許文献１）や、複数の画素をまとめ高速かつ高画質に処理する手法（下記特許文献２）等を開発・提案してきた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１１５７４８号公報
【特許文献２】特許第４２２５３１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
これらの手法は、高速処理と高画質化とを、所与の条件下で最適化する優れたものであるが、多数種類のインク（カラーインクや、モノクロ多階調インク）などを用いた場合の最適化については、なお改善の余地があった。
【課題を解決するための手段】
【０００７】
本発明は、色に応じて、複数のハーフトーン処理を使い分けることで、高速処理と高画質の処理など、所与の条件下で適切な画像処理を実現することを目的とする。
【０００８】
（１）本発明の第１の実施態様として、原画像を複数のインクを用いた表現に変換する画像処理装置が提供される。この画像処理装置は、予め定めた第１のハーフトーン処理を行なう第１ハーフトーン部と、前記第１のハーフトーン処理とは異なる第２のハーフトーン処理を行なう第２ハーフトーン部とを備えて良い。この第２ハーフトーン部は、前記原画像を構成する複数の色のうち、予め定めた一または複数の色である第１種色以外の色である第２種色ついて、前記原画像を構成する画素を複数個ずつまとめたブロックを単位として、前記第２のハーフトーン処理を行ない、前記複数のインクのうちの前記第２種色に対応したインクである第２種インクのインク量に変換して良い。また、前記第１ハーフトーン部は、前記第１種色について、前記原画像を構成する各画素または前記ブロックを構成する画素数より少ない数の画素群毎に、前記第１のハーフトーン処理を行ない、前記複数のインクのうちの前記第１種色に対応した第１種インクのインク量に変換してよい。
【０００９】
係る画像処理装置によれば、予め定めた第１種色については、原画像を構成する各画素または前記ブロックを構成する画素数より少ない数の画素群毎に、第１のハーフトーン処理を行なうことができ、第１種色以外の色である第２種色については、原画像を構成する画素を複数個ずつまとめたブロックを単位として、第２のハーフトーン処理を行なうことができる。従って、第１種色と第２種色とに関して、ブロックを単位とする処理と、ブロックを単位としない処理とを適切に使い分けることができる。
【００１０】
（２）この画像処理装置において、前記第１ハーフトーン部が行なう前記第１のハーフトーン処理は、前記第２ハーフトーン部が行なう前記第２のハーフトーン処理より高画質の処理であって良い。こうすれば、原画像を構成する各画素または前記ブロックを構成する画素数より少ない数の画素群毎に、前記第１のハーフトーン処理を行なうことができ、高画質の処理を容易に実現できる。
【００１１】
（３）前記第１種色は少なくとも黒色を含むものとしてよい。係る画像処理装置によれば、黒色または黒色を含む第１種色を第１のハーフトーン処理によりにより処理できるので、黒色に独自の処理を実施して、例えば黒色で表現されることが多いも文字や線を、その性質に応じた手法でハーフトーン処理できる。なお、第１種色は、黒色のみに限らず、赤緑青などの原色など、予め定めた一または複数の色とすることができる。
【００１２】
（４）もとより第１種色は黒色のみとすることもできる。こうすれば、第１種色は黒色のみになるので、処理を短時間に済ませることができる。
【００１３】
（５）こうした画像処理装置において、前記第１のハーフトーン処理は、前記第１種色の階調値に基づいて第１種色に対応した第１種インクによるドットを形成するか否かを直接定める処理としても良い。こうすれば、第１種色については、第１種色の階調値に基づいて、第１種色に対応した第１種インクによるドットを形成するか否かを直接定めることができるので、原画像における第１種色の再現性を高めることができる。
【００１４】
（６）こうした画像処理装置において、前記第２ハーフトーン部が行なう前記第２のハーフトーン処理は、前記第１ハーフトーン部が行なう前記第１のハーフトーン処理より高速の処理としてもよい。こうすれば、第２ハーフトーン部処理がブロックを単位として行なうものであることも相俟って、処理を一層高速に行なうことができる。
【００１５】
（７）上記の画像処理装置において、前記第２のハーフトーン処理は、ディザマスクに格納された閾値と前記ブロックを毎に前記第２種色の階調値とを比較する処理としても良い。係る画像処理装置によれば、第２種色については、ディザマスクの閾値と比較することにより、ディザマスクの特性を反映した画像を形成できる。
【００１６】
（８）前記第２ハーフトーン部は、前記第２種色について、前記ブロック内の前記複数個の画素の平均値をもちいて処理を行なう請求項１から請求項７のいずれか一項に記載の画像処理装置。こうした画像処理装置では、複数個の画素の平均値を用いて処理を行なうので、第２のハーフトーン処理を高速に行なうことができる。
【００１７】
（９）また、前記第１ハーフトーン部は、前記第１種色について、前記ブロック内のいずれかの画素に前記第１種色が存在するかの判断を行ない、前記第１種色が存在する画素についてのみ、前記第１のハーフトーン処理を行なう者としても良い。係る画像処理装置では、前記ブロック内の第１種色が存在しない画素については、第１のハーフトーン処理を行なわないので、第１ハーフトーン部の処理を更に高速化できる。
【００１８】
（１０）こうした画像処理装置において、前記原画像の全画素について、前記第１ハーフトーン部による前記第１のハーフトーン処理および前記第２ハーフトーン部による前記第２のハーフトーン処理を行ない、処理結果である前記第１種色に対応したインクのインク量が零でない画素については、前記第２種インクのインク量を、前記第１種インクのインク量で置き換えるものとしても良い。係る画像処理装置では、第１のハーフトーン処理を行なうか否かの判断を行なう必要がなく、判断に要する処理時間を低減できる。また、条件判断を減らしているので、装置全体をハードウェアで実現しやすくなる。
【００１９】
（１１）こうした画像処理装置において、前記第１ハーフトーン部は、前記ブロック内のいずれかの画素に前記第１種色が存在する場合には、前記全画素が前記第１種色であるとして前記第１のハーフトーン処理を行ない、更に、前記第１種色が存在する画素位置に基づいて、前記第１のハーフトーン処理の結果と、前記第２ハーフトーン部による前記第２のハーフトーン処理の結果とを合成して、前記画像処理の結果を求めるハーフトーン処理結果合成部を備えるものとして良い。この場合には、処理を単純化することができる。
【００２０】
（１２）また、上記の画像処理装置において、前記原画像における一方向への画素の配列であるラスタを、前記第２ハーフトーン部が扱う前記ブロックを少なくとも一つ含みうる数だけ束ねて処理ラスタとする第１処理と、前記ブロックを単位とした前記第２種色の階調データを対応する第２種インクのインク量に変換したインク量と、前記各画素または前記ブロックを構成する画素数より少ない数の画素群毎の前記第１種色に対応した第１種インクのインク量とを組み合わせた中間データを、前記処理ラスタ毎に生成する第２処理とを、行ない、前記中間データを、前記第１，第２ハーフトーン部に処理させることにより、前記第１種インクおよび第２種インクのインク量に対応したドットの形成の有無を表すドットデータを生成するものとして良い。係る画像処理装置では、ブロックを単位とした第２種色の階調データを対応する第２種インクのインク量に変換したインク量と、前記各画素または前記ブロックを構成する画素数より少ない数の画素群毎の前記第１種色に対応した第１種インクのインク量とを組み合わせた中間データを、処理ラスタ毎に生成するので、原画像の各画素の第１種色、第２種色の階調データを、そのまま扱うより、データ量を低減することができる。
【００２１】
（１３）前記第２処理において生成される中間データを、ブロックを単位とした第２種色の階調データを対応する第２種インクのインク量に変換したインク量を、更に前記ブロックに形成されるドット数および前記ブロック内におけるドット位置の情報にエンコードした形態で記憶するものとしても良い。係る画像処理装置では、中間データのデータ量を更に低減することができる。
【００２２】
（１４）こうした画像処理装置において、前記ブロックより大きなディザマスクを準備し、前記エンコードを、前記ディザマスクに含まれる閾値であって前記ブロックに含まれる画素の数に対応した数の閾値と前記第２種インクのインク量との比較結果を符号化することにより行なうものとして良い。係る画像処理装置によれば、中間データのデータ量を低減しつつ、ドットの配置に、ディザマスクの特性を反映することができる。
【００２３】
（１５）前記ブロックより大きなディザマスクを準備し、前記エンコードを、前記ディザマスクに含まれる閾値であって前記ブロックに含まれる画素の数に対応した数の閾値の大小を序列化した情報と、前記第２種インクのインク量に基づき判断した前記ブロック内に形成すべきドット数との組合せによって行なうものとして良い。係る画像処理装置によれば、中間データのデータ量を更に低減することができる。
【００２４】
（１６）本発明の他の態様として、原画像を複数のインクを用いて印刷する印刷装置や画像処理方法、印刷方法、あるいは画像処理方法をコンピュータにより実現するプログラムなどが提供される。こうした発明でも、上記の画像処理装置と同様の作用効果を奏する。
【００２５】
上述した本発明の各形態の有する複数の構成要素はすべてが必須のものではなく、上述の課題の一部又は全部を解決するため、あるいは、本明細書に記載された効果の一部又は全部を達成するために、適宜、前記複数の構成要素の一部の構成要素について、その変更、削除、新たな他の構成要素との差し替え、限定内容の一部削除を行なうことが可能である。また、上述の課題の一部又は全部を解決するため、あるいは、本明細書に記載された効果の一部又は全部を達成するために、上述した本発明の一形態に含まれる技術的特徴の一部又は全部を上述した本発明の他の形態に含まれる技術的特徴の一部又は全部と組み合わせて、本発明の独立した一形態とすることも可能である。
【００２６】
本発明は、印刷装置や画像処理装置以外の種々の形態で実現することも可能である。例えば、画像処理装置や印刷装置の製造方法、それらの制御方法、その制御方法を実現するコンピュータプログラム、そのコンピュータプログラムを記録した一時的でない記録媒体等の形態で実現することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１実施形態としてのプリンターの概略構成図。
【図２】プリンターにおける印刷処理の流れを示すフローチャート。
【図３】実施形態におけるブロックとブロック内画素について説明する説明図。
【図４】第１実施形態としてのハーフトーン処理の流れを示すフローチャート。
【図５】第１実施形態のハーフトーン処理で実行される中間データ生成処理を示すフローチャート。
【図６】中間データの構造を示す説明図。
【図７】特別色位置情報の他の構成例を示す説明図。
【図８】中間データ生成の様子を例示する説明図。
【図９】第１実施形態のハーフトーン処理で実行される中間データ取得・多値化処理を示すフローチャート。
【図１０】第１実施形態およびその変形例における中間データの復元の様子を示す説明図。
【図１１】実施態様で用いるディザマスクを例示する説明図。
【図１２】第２実施形態における中間データ取得・多値化処理を示すフローチャート。
【図１３】第２実施形態における中間データの復元の様子を示す説明図。
【図１４】第２実施形態における大中小テーブルの一例を概念的に示す説明図。
【図１５】第３実施形態における中間データ取得・多値化処理を示すフローチャート。
【図１６】第４実施形態の中間データ取得・多値化処理を示すフローチャート。
【図１７】第４実施形態のエンコードに用いられる分類番号−代表インク量のテーブルを示す説明図。
【図１８】図１７のテーブルを用いられる多値化結果値について概念的に説明する説明図。
【図１９】第４実施形態においてデコードに用いられる分類番号−多値化結果値のテーブルを示す説明図。
【図２０】コード化された個数データを大中小のドット個数として示す説明図。
【図２１】部類番号と順序値マトリックスを例示する説明図。
【発明を実施するための形態】
【００２８】
（１）第１実施形態：
本発明の第１実施形態について説明する。
［１］装置構成：
図１は、本発明の印刷装置の第１実施形態としてのプリンター２０の概略構成図である。プリンター２０は、双方向印刷を行なうシリアル式インクジェットプリンタであり、図示するように、プリンター２０は、紙送りモータ７４によって印刷媒体Ｐを搬送する機構と、キャリッジモータ７０によってキャリッジ８０をプラテン７５の軸方向に往復動させる機構と、キャリッジ８０に搭載された印刷ヘッド９０を駆動してインクの吐出及びドット形成を行なう機構と、これらの紙送りモータ７４，キャリッジモータ７０，印刷ヘッド９０及び操作パネル９９との信号のやり取りを司る制御ユニット３０とから構成されている。
【００２９】
キャリッジ８０をプラテン７５の軸方向に往復動させる機構は、プラテン７５の軸と平行に架設され、キャリッジ８０を摺動可能に保持する摺動軸７３と、キャリッジモータ７０との間に無端の駆動ベルト７１を張設するプーリ７２等から構成されている。
【００３０】
キャリッジ８０には、カラーインクとして、シアンインクＣ、マゼンタインクＭ、イエロインクＹ、ブラックインクＫ、をそれぞれ収容したカラーインク用のインクカートリッジ８２〜８５が搭載される。キャリッジ８０の下部の印刷ヘッド９０には、上述の各色のカラーインクに対応するノズル列が形成されている。キャリッジ８０にこれらのインクカートリッジ８２〜８７を上方から装着すると、各カートリッジから印刷ヘッド９０へのインクの供給が可能となる。なお、上記４色のインクに、更にライトシアンインクＬｃ、ライトマゼンタインクＬｍを加えた６色インクを用いてもよい。
【００３１】
制御ユニット３０は、ＣＰＵ４０や、ＲＯＭ５１、ＲＡＭ５２、ＥＥＰＲＯＭ６０がバスで相互に接続されて構成されている。制御ユニット３０は、ＲＯＭ５１やＥＥＰＲＯＭ６０に記憶されたプログラムをＲＡＭ５２に展開し、実行することにより、プリンター２０の動作全般を制御するほか、入力部４１、ハーフトーン処理部４２、印刷部４６としても機能する。ハーフトーン処理部４２の機能は、第１，第２ハーフトーン部の下位概念に相当する中間データ生成部４３および中間データ取得・多値化部４４としての機能を含んでいる。ＥＥＰＲＯＭ６０には、ディザマスク６１と、大中小テーブル６２とが記憶されている。ハーフトーン処理やこれに用いるディザマスク６１については、後で詳しく説明する。大中小テーブル６２は、第１実施形態では特に用いないが、第２実施形態以下で用いるので、併せてＥＥＰＲＯＭ６０内にあるものとして示した。その内容については、第２実施形態において詳しく説明する。なお、ハーフトーンにおいてディザ法以外の手法、例えば誤差拡散法などを用いる場合には、ディザマスク６１は備えなくても差し支えない。同様に、多値化のうち、２値化のみを行なう場合には、大中小テーブル６２を備えなくても差し支えない。
【００３２】
制御ユニット３０には、メモリカードスロット９８が接続されており、メモリカードスロット９８に挿入したメモリカードＭＣから画像データＯＲＧを読み込んで入力することができる。本実施形態においては、メモリカードＭＣから入力する画像データＯＲＧは、レッド（Ｒ）、グリーン（Ｇ）、ブルー（Ｂ）の３色の色成分からなるデータである。
【００３３】
以上のようなハードウェア構成を有するプリンター２０は、キャリッジモータ７０を駆動することによって、印刷ヘッド９０を印刷媒体Ｐに対して主走査方向に往復動させ、また、紙送りモータ７４を駆動することによって、印刷媒体Ｐを副走査方向に移動させる。制御ユニット３０は、キャリッジ８０が往復動する動き（主走査）や、印刷媒体の紙送りの動き（副走査）に合わせて、印刷データに基づいて適切なタイミングでノズルを駆動することにより、印刷媒体Ｐ上の適切な位置に適切な色のインクドットを形成する。こうすることによって、プリンター２０は、印刷媒体Ｐ上にメモリカードＭＣから入力したカラー画像を印刷することが可能となっている。
【００３４】
［２］印刷処理：
プリンター２０における印刷処理について説明する。図２は、プリンター２０における印刷処理の流れを示すフローチャートである。ここでの印刷処理は、ユーザが操作パネル９９等を用いて、メモリカードＭＣに記憶された所定の画像に対する印刷指示操作を行なうことで開始される。印刷処理を開始すると、ＣＰＵ４０は、まず、入力部４１の処理として、メモリカードスロット９８を介してメモリカードＭＣから印刷対象であるＲＧＢ形式の画像データＯＲＧを読み込んで入力する（ステップＳ１１０）。画像データＯＲＧは、ＪＰＥＧやＰＮＧなどの形式で記憶されたデータであるが、データの形式は問わない。
【００３５】
画像データＯＲＧを入力すると、ＣＰＵ４０は、解像度変換を行なう（ステップＳ１２０）。解像度変換は、画像データＯＲＧの解像度を、プリンター２０の解像度に合わせて変換する処理である。両者が等しい場合には、解像度変換を行なわなくとも差し支えない。
【００３６】
解像度変換処理を行なうと、ＣＰＵ４０は、ハーフトーン処理部４２の処理として、画像データを各色のドットのＯＮ／ＯＦＦを画素毎に定めたドットデータに変換するハーフトーン処理を行なう（ステップＳ１３０）。ここでのハーフトーン処理の詳細については後述する。なお、本明細書では、「ハーフトーン処理」は、ドットのＯＮ／ＯＦＦの２値化処理に限らず、大ドット及び小ドットのＯＮ／ＯＦＦなど、多値化処理を含んだ階調数変換（低減）処理一般を意味している。また、ステップＳ１３０に供する画像データは、スムージング処理などの画像処理が施されたものであってもよい。
【００３７】
ハーフトーン処理を行なうと、ＣＰＵ４０は、ハーフトーン処理されたドットの配列を、プリンター２０のノズル配置や紙送り量などに合わせて、１回の主走査単位で形成するドットパターンのデータに並び替えるインターレース処理を行なう（ステップＳ１５０）。インターレース処理を行なうと、ＣＰＵ４０は、印刷部４６の処理として、印刷ヘッド９０、キャリッジモータ７０、紙送りモータ７４等を駆動し、印刷を実行する（ステップＳ１６０）。
【００３８】
［３］ハーフトーン処理の概要：
上述したハーフトーン処理（ステップＳ１３０）について図３以下を用いて説明する。ハーフトーン処理の説明に先立って、本実施形態におけるブロックの概念について説明する。以下に説明するハーフトーン処理では、２×２画素を一つのブロックとし、ブロック単位で処理が行なわれる。図３は、このブロックと画素の関係を示す説明図である。図３（Ａ）は、ブロック位置（Ｂｎｙ、Ｂｎｘ）と画素位置（ｙ，ｘ）との関係を示している。ブロック番号と画素位置の関係は、各ブロックの左上の画素を例に取ると、
ｙ＝２・Ｂｎｙ
ｘ＝２・Ｂｎｘ
となる。
【００３９】
図３（Ｂ）は、一つのブロック内に含まれる２×２の画素の処理順序を示している。ブロック内の左上（ＰＴ＝１）、右上（ＰＴ＝２）、左下（ＰＴ＝３）、右下（ＰＴ＝４）の順である。以下の説明では、画素を符号ＰＴによって特定するが、実際の画素位置との対応は、図３（Ｃ）に示したように、
ＰＴ＝１：（ｙ，ｘ）        ＝（２・Ｂｎｙ，２・Ｂｎｘ）
ＰＴ＝２：（ｙ，ｘ＋１）    ＝（２・Ｂｎｙ，２・Ｂｎｘ＋１）
ＰＴ＝３：（ｙ＋１，ｘ）    ＝（２・Ｂｎｙ＋１，２・Ｂｎｘ）
ＰＴ＝４：（ｙ＋１，ｘ＋１）＝（２・Ｂｎｙ＋１，２・Ｂｎｘ＋１）
となる。
【００４０】
図４は、第１実施形態におけハーフトーン処理の概要を示すフローチャートである。このハーフトーン処理は、画像左上隅を原点（ｘ＝０、ｙ＝０）として開始される。本実施形態では、画像の左上のブロック（０，０）から、処理するブロック位置を、主走査方向（ｘ方向）に順次インクリメントして行ない、主走査方向の右端まで処理すると、副走査方向（ｙ方向）の位置をインクリメントし、再度左端から順に行なう。副走査方向位置が同じである画素の並びを「ラスタ」とも言う。処理をブロック単位で行なうことから、本実施形態のハーフトーン処理は、２ラスタ分ずつ行なわれることになる。１ブロックの並び（２ラスタ）の処理が完了すると、次のブロックの並び（２ラスタ）の処理に移る。このため、以下の説明では、通常の座標表示とは異なり、処理中のブロック位置および画素の位置を（ｙ，ｘ）の順に示す。また、画素の位置については、ブロックの番号Ｂｎを用いて表すことがある。ブロックの開始位置（０，０）と画素の開始位置（０，０）は、何れも画像の左上である。
【００４１】
図４に示したハーフトーン処理が開始されると、まずブロック位置（Ｂｎｙ，Ｂｎｘ）の画像データを読み出す処理を行なう（ステップＳ１３１）。読み出される画像データは、色変換前の画像データＯＲＧである。具体的には、そのブロック位置（Ｂｎｙ，Ｂｎｘ）の４つの画素それぞれのＲＧＢデータである。各画素のＲＧＢデータを、Ｒ［ＰＴ］Ｇ［ＰＴ］Ｂ［ＰＴ］として表す。各画素の各色を８ビットで表すとすれば、８ビット×３色×４画素＝９６ビットのデータである。ＲＧＢの組合せにより、種々の色が表現可能であるが、本実施形態においては、特別色と通常色とを区別して処理を行なう。そこで、特別色と通常色との意味について説明する。
【００４２】
［４］ハーフトーン処理の詳細：
本実施形態では、原画像の色のうち、１以上の色を特別色として扱う。本実施形態では、黒色を特別色として扱い、それ以外の色を通常色として扱う。特別色は、本発明における第１種色の下位概念に相当し、通常色は、本発明における第２種色の下位概念に相当する。何を特別色にするかは、ハーフトーンの目的により任意に決定することができる。本実施形態では、黒色を高画質で再現するという目的から、黒色を特別色とし、それ以外の色を通常色としたが、黒色と赤色を特別色としても差し支えない。あるいは他の色または色の組み合わせを、特別色として扱っても良い。特別色か否かの判断は、ＲＧＢの値が、予め決めた特定の範囲に含まれるか否かにより行なえば良い。本実施形態では、Ｒ＝Ｇ＝Ｂ＝０の場合、これを特別色（黒色）として扱う。
【００４３】
次に、ステップＳ１３２で読み込んだブロック位置（Ｂｎｙ，Ｂｎｘ）の４つの画素のデータを解析して、中間データを生成する処理を行なう（ステップＳ２００）。この中間データ生成処理の詳細を図５に示した。中間データの生成処理では、まず代表色データを求める（ステップＳ２１０）。代表色データを求めるとは、通常色を代表するデータを求めることであり、特別色（Ｒ＝Ｇ＝Ｂ＝０）の画素を除く画素のＲＧＢデータの各色の平均値のデータＲｍＧｍＢｍを求めることに相当する。
Ｒｍ＝（ΣＲ［ＰＴ］）／４    ＰＴ＝１、２、３、４
Ｇｍ＝（ΣＧ［ＰＴ］）／４    ＰＴ＝１、２、３、４
Ｂｍ＝（ΣＢ［ＰＴ］）／４    ＰＴ＝１、２、３、４
もとより、いずれかの画素ＰＴが特別色であれば、上記演算式からは除かれるが、本実施形態での特別色は、黒色（Ｒ＝Ｇ＝Ｂ＝０）なので、全ての画素ＰＴについて、上記演算を行なって差し支えない。
【００４４】
次に、特別色の位置情報を求める処理を行なう（ステップＳ２２０）。具体的には、ブロック位置（Ｂｎｙ，Ｂｎｘ）内の４つの画素ＰＴ（ＰＴ＝１、２、３、４）について、黒色の画素が存在するかを調べ、黒色画素が存在する場合には、その位置を黒画素位置情報として、予め用意した変数BKp（画素毎に１ビットを割り当て、４画素で４ビットの変数）に記憶する。BKpの初期値は０（全ビット０）とし、特別色（黒色）画素が存在する画素位置に対応するビットを１にセットする。つまり、
初期値:BKp＝０
左上画素（ＰＴ＝１）が黒色画素ならば、 BKp = BKp + 1 // bit 0 セット
右上画素（ＰＴ＝２）が黒色画素ならば、 BKp = BKp + 2 // bit 1 セット
左下画素（ＰＴ＝３）が黒色画素ならば、 BKp = BKp + 4 // bit 2 セット
右下画素（ＰＴ＝４）が黒色画素ならば、 BKp = BKp + 8 // bit 3 セット
を行なうのである。この４ビットの特別色位置情報BKpは、bit 0がブロック内の左上画素（ＰＴ＝１）に対応しており、bit 3がブロック内の右下画素（ＰＴ＝４）に対応しており、後述する中間データの一部を構成する。
【００４５】
次に代表インク量を求める処理を行なう（ステップＳ２３０）。代表インク量とは、代表色データを色変換したＣＭＹＫのインク量である。代表色データＲｍＧｍＢｍを、予め用意した３Ｄ−ＬＵＴなどを用いて、ＣＭＹＫのインク量に変換する。３Ｄ−ＬＵＴは、各色８ビット、つまり２５５×２５５×２５５の格子点を持つものであれば、参照するだけで、代表インク量に変換することができるが、各色５ビット、つまり３２×３２×３２程度の格子点のＬＵＴを用いる場合には、格子点上にない代表色データについては四面体補間演算などを用いて、対応する４色の代表インク量に変換する。この結果、ＣＭＹＫそれぞれについて８ビット、合計８ビット×４色＝３２ビットの代表色インク量ＣｍＭｍＹｍＫｍが得られる。
【００４６】
こうして求められた代表インク量ＣｍＭｍＹｍＫｍは、中間データの一部として扱われる。中間データのデータ構造を、図６に示した。図示するように、中間データは、代表インク量ＣｍＭｍＹｍＫｍ（８ビット×４色）と、ステップＳ２２０で求めた４ビットの特別色位置情報BKpとから構成される。なお、本実施形態では、特別色位置情報は、各画素１ビットの情報としたが、各画素２ビットの情報としても良い。この場合は、左上画素（ＰＴ＝１）がビット０と１、右上画素（ＰＴ＝２）がビット２と３、左下画素（ＰＴ＝３）がビット４と５、右下画素（ＰＴ＝４）がビット６と７のように、左上画素を起点として右方向に下位ビットから順に２ビットずつ割り付けて対応づければよい。この例を図７に示した。
【００４７】
以上説明した一つのブロックについての中間データの生成処理を、図８にまとめた。図８左上は、１つのブロック内の４つの画素がそれぞれＲＧＢの画像データを持っており、そのデータを読み出す処理（ステップＳ１３２）に対応している。この各画素のＲＧＢデータを平均化して、代表色データＲｍＧｍＢｍを求める（ステップＳ２１０）。また、ブロック内に黒色の画素があるかを調べ、黒色の画素があれば、特別色位置情報BKpの対応するビットを１にする（ステップＳ２２０）。
【００４８】
その上で、この特別色位置情報BKpと、代表色データＲｍＧｍＢｍを色変換（ステップＳ２３０）した代表インク量ＣｍＭｍＹｍＫｍとを併せて、中間データとして保存される（ステップＳ２４０）。かかる処理では、通常色については、４つの画素をまとめたブロック（平均値）として扱うので、処理すべきデータ量を減らしている。他方、特別色については、画素位置だけの僅か４ビットの情報に低減している。
【００４９】
こうして得られた中間データを、ＲＡＭ５２の所定の領域に保存する（ステップＳ２４０）。以上で、一つのブロックについての中間データが生成された。一つのブロックについての処理が完了すると、２ラスタ分の全ブロックの処理が完了したかを判断し（ステップＳ１３２）、完了していなければ、ブロック番号ｎｘを値１だけインクリメントし（ステップＳ１３３）、つまりｘ方向に１ブロックだけ移動して、中間データ生成処理を繰り返す。
【００５０】
こうして２ラスタ分の全ブロックについての中間データの生成処理が完了すると、次に、中間データ取得・多値化処理（ステップＳ３００）を行なう。中間データ取得・多値化処理の詳細を、図９に示した。第１実施形態の中間データ取得・多値化処理における多値化の処理は、実質的に２値化処理であるが、他の実施形態との共通性を優先して、第１実施形態でも「多値化」と呼ぶ。この処理が開始されると、まず２ラスタ分の全ブロックの最初の位置、つまりブロック（０，０）から、ブロック毎に次の処理を行なう。
〈１〉ステップＳ３１０：処理対象ブロックの代表インク量ＣｍＭｍＹｍＫｍと特別色位置情報BKpを取得する処理
〈２〉ステップＳ３２０：ブロック内各画素のＣＭＹＫインク量を復元する処理
〈３〉ステップＳ３３０：ブロック内各画素の同じＣＭＹＫインク量をディザ法で２値化する処理
〈４〉ステップＳ３４０：ブロック内各画素毎の黒色インク量をディザ法で２地下する処理
【００５１】
以下、これらの処理の詳細について、図１０を参考にしつつ説明する。まずステップＳ３１０では、処理対象ブロックの代表インク量ＣｍＭｍＹｍＫｍと特別色位置情報BKpとを取得する。これらのデータは、先の中間データの生成処理（ステップＳ２００）において、ＲＡＭ５２の所定の領域に保存されている。図１０に示した例では、代表インク量ＣｍＭｍＹｍＫｍは、それぞれＣｍ＝６８，Ｍｍ＝９５，Ｙｍ＝４１，Ｋｍ＝６４である。また特別色位置情報BKpは、bit2＝１、つまりブロック内の左下が黒色画素であるとされている。
【００５２】
ステップＳ３２０では、この代表インク量ＣｍＭｍＹｍＫｍと特別色位置情報BKpとから各各画素のＣＭＹＫインク量を復元する。復元は、黒色画素とされていない画素については代表インク量データＣｍＭｍＹｍＫｍを、黒色画素とされている画素には予め特別色インク量として用意した黒色画素用インク量ＣｋＭｋＹｋＫｋを、それぞれ設定することにより行なわれる。詳細に記載すれば、
左上画素データ（ＰＴ＝１）
BKp のビット０が１ならば、C00 = Ck, M00 =Mk, Y00=Yk, K00=Kk
BKpのビット０が0ならば、C00 = Cm, M00 =Mm, Y00=Ym, K00=Km
右上画素データ（ＰＴ＝２）
BKp のビット1が１ならば、C01 = Ck, M01 =Mk, Y01=Yk, K01=Kk
BKp のビット1が0ならば、C01 = Cm, M01 =Mm, Y01=Ym, K01=Km 
左下画素データ（ＰＴ＝３）
BKp のビット2が１ならば、C10 = Ck, M10 =Mk, Y10=Yk, K10=Kk
BKp のビット2が0ならば、C10 = Cm, M10 =Mm, Y10=Ym, K10=Km
右下画素データ（ＰＴ＝４）
BKp のビット3が１ならば、C11 = Ck, M11 =Mk, Y11=Yk, K11=Kk
BKp のビット3が0ならば、C11 = Cm, M11 =Mm, Y11=Ym, K11=Km
となる。
【００５３】
続くステップＳ３３０では、上記ステップＳ３２０で設定したＣＭＹＫインク量を用いて、ディザ法により２値化を行なう。黒色画素以外の全ての画素のＣＭＹＫインク量は同じ値なので、ディザ法による２値化は、ディザマスク６１から２×２の閾値を取りだし、これとＣＭＹＫインク量とを比較することにより行なうことができる。図１１に、こうしたディザマスク６１の一例を示した。このディザマスク６１は、ｘ方向に２５６画素分、ｙ方向に６４画素分の大きさを持ち、各位置に、値１〜２５５の閾値を格納している。図１１の（Ｂ）には、ディザマスク６１の閾値との一部を拡大して示した。各閾値は、この閾値と画素のインク量とを比較して得られたドットの配置が、ブルーノイズ特性を示すように配置されている。
【００５４】
特別色位置情報BKpを参照して黒色画素でないと判断した画素については、その画素のＣＭＹＫインク量を、ディザマスクの閾値と比較することで、画素毎のインク色毎のドット形成の有無を判断する。ディザマスク６１からの閾値は、ブロック位置（Ｂｎｙ，Ｂｎｘ）に合わせてディザマスク６１からの読み出し位置を移動しつつ読み出す。読み出し位置は、画像サイズをディザマスク６１のサイズで除算した剰余数により定めることができる。各色についての判断を行なう際には、各インク毎に同じディザマスク６１の同じ２×２の閾値を参照すると、インク色によらず同じ画素にドットが形成されやすくなるので、同じディザマスク６１を用いる場合には、インク色毎に２×２の閾値を取り出してくる場所をずらすことが好ましい。あるいは、インク色毎に異なるディザマスク６１を用いても良い。黒色画素以外の画素では、ＣＭＹＫインク量は全て等しいので、２×２の閾値との比較は一度に行なっても良い。図１０の右下欄に、ＣＭＹＫインク量毎に２×２の閾値との比較を行なって、ドット形成の有無について判断した結果の一例を示した。
【００５５】
ＣＭＹＫインク量についての判断に続けて行なわれる黒色インク量の２値化の処理（ステップＳ３４０）は、ステップＳ３６０の処理と同様だが、対象となる黒色のインク量Ｋは、黒色画素ではＫｋに、黒色画素以外ではＫｍとなる。黒色については、画素毎にインク量の値が異なる可能性があるので、画素毎に判断を行なう。なお、用いるディザマスク６１は、他のインク色用のディザマスクと同じものでも良いし、異なるものでも良い。また読み出しの位置をずらすようにしても良い。
【００５６】
以上の処理により、一つのブロックについての中間データ取得・多値化処理が完了する。一つのブロックについての処理が完了すると、２ラスタ分の全ブロックの処理が完了したかを判断し（ステップＳ１３４）、完了していなければ、ブロック番号ｎｘを値１だけインクリメントし（ステップＳ１３６）、つまりｘ方向に１ブロックだけ移動して、中間データ取得・多値化処理を繰り返す。
【００５７】
２ラスタ分の全ブロックの処理が完了すると（ステップＳ１３４：ＹＥＳ）、次に、全ラスタについての処理が完了したかを判断する（ステップＳ１３７）。全ラスタについての処理が完了していなければ、２ラスタ内でのブロック位置を初期化し（ｎｘ←０）、ｙ方向に２ラスタ分だけ移動して（ｎｙ←ｎｙ＋１）、上述した中間データ生成処理（ステップＳ２００）と、中間データ取得・多値化処理（ステップＳ３００）とを繰り返す（ステップＳ１３８）。全ラスタについて全ブロックの処理が完了すれば（ステップＳ１３７：ＹＥＳ）、「ＥＮＤ」に抜けて処理を終了する。
【００５８】
既に図２を用いて説明したように、上記のハーフトーン処理の後、インターレース処理を行ない（ステップＳ１５０）、その後、印刷を実行する（ステップＳ１６０）。
【００５９】
以上説明した第１実施形態のプリンター２０では、特別色として設定した黒色とそれ以外の普通色とでは、異なるハーフトーン処理を適用することができる。特に黒色に関しては、ハーフトーン処理を画素毎に行ない、普通色についてはブロック単位で処理を行なう。このため、黒色で表現されることが多い文字や輪郭線など、高画質であることを要求される色については、画素単位の処理による高画質を確保しつつ、通常色については２×２画素の平均値よりハーフトーン処理を行なうので、処理を簡略化でき、高速な処理を実現している。上記の実施形態によれば、中間データ生成処理において、中間データの一部をブロックを単位として生成しているので、色変換後の中間データの容量を、従来に比して低減できるという効果も奏する。
【００６０】
また、本実施形態では、特別色である黒色も普通色も、ハーフトーン処理付いてはディザ法を用い、ディザマスク６１の閾値との比較により、ドットの形成の有無について判断している。このため、処理を単純化でき、誤差拡散などと比較して全体としても高速の処理を実現している。なお、黒色については誤差拡散を採用して、細線などの再現性を高めても良い。あるいは逆に普通色について誤差拡散を採用し、誤差拡散の利点とブロック単位での高速処理とを両立させても良い。
【００６１】
［５］第１実施形態の変形例：
〈１〉第１実施形態では、特別色として黒色のみを扱ったが、他の色、例えば赤色など、他の色を特別色として扱っても良い。あるいは黒と赤、黒と緑など、複数の色を特別色として扱っても良い。特別色はこうした原色である必要はなく、特定の色範囲を特別色として扱っても良い。例えば、肌色として定めた特定の色範囲を特別色として扱うとも差し支えない。
【００６２】
〈２〉上記実施形態では、特別色である黒色の画素も、ディザ法を適用してハーフトーンを行なったが、図１０の最下欄に示したように、特別色画素位置情報BKpが設定されている画素に、黒インクのドットを形成すると決定するものとしても良い。原画像において対応する画素の色が黒（Ｒ＝Ｇ＝Ｂ＝０）なので、黒色のドットを形成しても差し支えないと判断できるからである。こうすれば、ディザ法における閾値との判断処理を行なう必要がない。
【００６３】
〈３〉上記実施形態では、一つのブロックに属する画素は、２×２の４個としたが、２×４の８個としても良い。この場合、特別色位置情報は、８個分、つまり８ビット必要になるが、代表インク量は８画素分を代表することになるので、中間データの容量は低減できる。
【００６４】
〈４〉上記実施形態では、一つのプリンター２０の内部で中間データを生成し記憶し復元したが、コンピュータにインストールされたプリンタドライバ側で中間データの生成を行ない、これをプリンター２０に転送して、中間データの多値化を行なうものとしても良い。この場合、中間データは、元の画像データや多値化後のデータと比べて、データ量を低減できる場合があり、転送時間の短縮などに資することが可能となる。
【００６５】
〈５〉上記実施形態では、中間データ生成処理（ステップＳ２００）を２ラスタに属する全てのブロックについて行なってから、中間データ取得・多値化処理（ステップＳ３００）を行なった。これに対して、中間データの生成処理と中間データ取得・多値化処理とを一つのブロックについて連続的に行なう構成も採用可能である。上記実施形態では、ディザ法を用いており、ブロック間でのデータやり取りがないので、こうした処理を採用することができる。他方、上記実施形態では、２ラスタに属する全ブロックについての中間データの生成処理が完了してから、中間データ取得・多値化処理を実行するので、ブロック間での誤差拡散を少なくともｘ方向について行なうことが容易である。
【００６６】
（２）第２実施形態：
次に本発明の第２実施形態について説明する。第２実施形態は、ハーフトーン処理の中間データ取得・多値化処理（ステップＳ３００）において、２値化ではなく多値化（具体的には４値化）を行なう点で、第１実施形態と異なっている。他の処理は原則として、第１実施形態と同じである。４値化した結果は、印刷ヘッド９０によって、印刷媒体Ｐ上に、大中小の３種類のドットにより再現される。印刷ヘッド９０は、１画素当たり、「大ドット」「中ドット」「小ドット」「ドットなし」の４階調を表現可能である。
【００６７】
第２実施形態では、第１実施形態と同様に、印刷処理（図２）およびハーフトーン処理（図３）を行なう。ハーフトーン処理では、第１実施形態と同様に、中間データの生成処理（ステップＳ２００）を行ない、その後中間データ取得・多値化処理を行なう。第２実施形態では、この中間データ取得・多値化処理として図１２に示した処理を行なう。この処理が開始されると、第１実施形態と同様、処理対象ブロックの代表インク量と特別色位置情報とを取得する処理を行なう（ステップＳ３１０）。ここで取得される代表インク量と特別色位置情報とは、第１実施形態で説明した中間データの生成処理（図５）により得られたインク量と情報（図８、図１０参照）である。なお、図１２の処理に合わせたハーフトーン処理の流れを、図１３に例示した。以下、両図を参照して説明する。
【００６８】
代表インク量と特別色位置情報とを取得すると、次に大中小テーブル６２を参照することにより、代表インク量を大中小データに変換する（ステップＳ３１５）。大中小データとは、代表インク量を、大中小の各ドットによって実現すべき割合として表すデータである。大中小テーブル６２の一例を図１４に示した。図１４では、代表インク量ＣｍＭｍＹｍＫｍの各々について、同じ大中小データを与えるテーブルとして示したが、このテーブルは色毎に異なるものとしても良い。図１４では、シアンインクを例として、代表インク量Ｃｍと大中小データとの関係として示した。
【００６９】
図１４に示したように、代表インク量Ｃｍが０近傍では、小ドットのみが形成され、代表インク量Ｃｍが増加するにつれて、小ドットが形成される割合は増加する。ここでドットが形成される割合とは、同一の代表インク量Ｃｍが続いた場合、つまりべた塗りの場合に、所定個数Ｎｇの印刷画素に形成されるドット数Ｎｄのバーセント（１００×Ｎｄ／Ｎｇ）を言う。代表インク量Ｃｍが所定の階調値である第１の階調値に達すると、中ドットの形成が始まって漸増し、これに合わせて小ドットが形成される割合は低下していく。同様に、代表インク量Ｃｍが第１の階調値より大きな第２の階調値に達すると、大ドットの形成が始まって漸増し、これに合わせて中ドットが形成される割合は低下していく。小ドットが形成される割合をｄａｔａ＿ｓ、中ドットが形成される割合をｄａｔａ＿ｍ、大ドットが形成される割合をｄａｔａ＿ｌ、としてそれぞれ表記し、更にこれらの値ｄａｔａ＿ｓ，ｄａｔａ＿ｍ，ｄａｔａ＿ｌを全て加えた値を、合計値ｄａｔａ＿ｔと表記する。代表インク量Ｃｍに対する小中大ドットの形成の割合を示すこの関係は、大中小テーブル６２として、ＥＥＰＲＯＭ６０に記憶されている。
【００７０】
ステップＳ３１５では、取得した代表インク量に基づいて、ＥＥＰＲＯＭに記憶された大中小テーブルを参照して、小中大ドットが形成される割合を示すデータｄａｔａ＿ｓ，ｄａｔａ＿ｍ，ｄａｔａ＿ｌを取得する。続いて、ブロック内の各画素をディザ連続を用いて４値化する処理を行なう（ステップＳ３３５）。
【００７１】
ディザ連続を用いた４値化の処理は、以下の通りである。
（Ａ）一つのブロックに含まれる一つの画素について、ＣＰＵ４０は、まず大ドットを形成する割合を示すｄａｔａ＿ｌがディザマスク６１の対応する位置の閾値ＴＨｎ＿ｄ以上であるかの判断を行ない、ｄａｔａ＿ｌが閾値ＴＨｎ＿ｄ以上であれば、その画素ＰＴの結果値Ｒｅｓｕｌｔ［ＰＴ］に大ドットを形成することを示す値３（２進数では「１１」）を入れる。
（Ｂ）他方、ｄａｔａ＿ｌが閾値ＴＨｎ＿ｄ未満であれば、次に、ｄａｔａ＿ｌとｄａｔａ＿ｍとの合計値が、同じ閾値ＴＨｎ＿ｄ以上であるかの判断を行ない、ｄａｔａ＿ｌ＋ｄａｔａ＿ｍが閾値ＴＨｎ＿ｄ以上であれば、その画素ＰＴの結果値Ｒｅｓｕｌｔ［ＰＴ］に中ドットを形成することを示す値２（２進数では「１０」）を入れる。
（Ｃ）更に、ｄａｔａ＿ｌ＋ｄａｔａ＿ｍが閾値ＴＨｎ＿ｄ未満であれば、次に、合計値ｄａｔａ＿ｔが、同じ閾値ＴＨｎ＿ｄ以上であるかの判断を行ない、ｄａｔａ＿ｔが閾値ＴＨｎ＿ｄ以上であれば、その画素ＰＴの結果値Ｒｅｓｕｌｔ［ＰＴ］に小ドットを形成することを示す値１（２進数では「０１」）を入れる。
（Ｄ）上記のいずれの判断も「ＮＯ」であれば、その画素ＰＴの判断結果Ｒｅｓｕｌｔ［ＰＴ］に、いずれのドットも形成しないことを示す値０（２進数では「００」）を入れる。
（Ｅ）以上の処理を、画素位置と閾値とを変えて、つまりＰＴ＝１から４まで順次行なう。上記の処理により、４つの画素について得られた４つのＲｅｓｕｌｔ［１］〜Ｒｅｓｕｌｔ［４］は、２ビットずつ左シフトして足し合わせることにより、全部で８ビットのデータＣｒｅｓｕｌｔとしてまとめることができる。例えば、シアンについて、左上画素（ＰＴ＝１）に大ドット、右上画素（ＰＴ＝２）に小ドット、左下画素（ＰＴ＝３）に中ドットを形成すると判断され、右下画素（ＰＴ＝４）にドットを形成しないと判断されたとすれば、多値化の結果を表すデータＣｒｅｓｕｌｔは、「１１ ０１ １０ ００」となる。
【００７２】
上記の処理を行なうことにより、処理対象のブロックについて、通常色に対応した４値化が、全ての画素について完了する。その後、ブロック内各画素毎の黒色インク量を多値化する処理を行なう（ステップＳ３４５）。特別色である黒色画素の多値化は、代表色インクと同様４値化でも良いが、もともと黒色画素（Ｒ＝Ｇ＝Ｂ＝０）と判断されている場合には、黒インクにより大ドットを形成するとて閾値と比較する処理を省略しても良い。
【００７３】
かかる中間データ取得・多値化処理を行なう第２実施形態では、代表色インクについては４値化を行なうので、階調表現を豊かにすることができ、代表色インクによる画像の再現を高画質化することができる。しかもその場合、代表インク量は２×２画素の平均値に基づいているから、多値化する代表インク量はブロック当たり１つであり、処理を簡素化することができる。他方、特別色である黒色については、平均値ではなく、元の画素のデータを用いているので、画像の再現性に優れ、文字や輪郭線などを、高精度に再現することができる。従って、文字や輪郭線について、線切れなどの不具合を生じることが抑制される。
【００７４】
以上説明した第２実施形態において、第１実施形態において説明した変形例〈１〉ないし〈５〉を適用することも差し支えない。また４値化以外の多値化、例えば３値化、５値化以上などを適用しても良い。また、多値化は、大中小ドットのように、大きさの異なるドットを形成することにより実現する手法以外に、ライトシアンシンク、ライトマゼンタインクのような含有する染料の濃度が低濃度のインクを用いた手法、同じ染料濃度のインクを複数回吐出することにより実現する手法、あるいはこれらの組合せなど、いずれを用いても差し支えない。
【００７５】
（３）第３実施形態：
次に本発明の第３実施形態について説明する。第３実施形態のプリンター２０は、第１実施形態のプリンター２０と同様、図２、図４に記載の印刷処理およびハーフトーン処理を行なうが、このうち中間データ取得・多値化処理が異なる。第３実施形態では、図９に記載の中間データ取得・多値化処理に代えて、図１５に記載の処理を行なう。両者の違いは、第３実施形態では、２×２画素からなるブロック全体について、同じ代表インク量、同じ黒色インク量であるとして、ハーフトーン処理を行ない、その後、両者の結果を合成するという処理を行なっている点である。以下、この処理について、図１５を用いて詳しく説明する。
【００７６】
第３実施形態における中間データ取得・多値化処理が開始されると、まず第１実施形態と同様に、まず処理対象ブロックの代表インク量と特別色位置情報を取得する処理を行なう（ステップＳ３１０）。ここで取得される代表インク量と特別色位置情報とは、第１実施形態で説明した中間データの生成処理（図５）により生成されたインク量と情報（図８、図１０参照）である。
【００７７】
続いて、取得した代表インク量ＣｍＭｍＹｍＫｍと特別色位置情報BKpとから各各画素のＣＭＹＫインク量を復元する。復元は、第１実施形態では、黒色画素とされていない画素については代表インク量データＣｍＭｍＹｍＫｍを、黒色画素とされている画素には予め特別色インク量として用意した黒色画素用インク量ＣｋＭｋＹｋＫｋを、それぞれ設定することにより行なわれたが、本実施形態では、黒色画素か否かの判断を行なわず、両方のデータを復元する。
即ち、全画素について、第１のインク量を
左上画素データ（ＰＴ＝１）C00 = Cm, M00 =Mm, Y00=Ym, K00=Km
右上画素データ（ＰＴ＝２）C01 = Cm, M01 =Mm, Y01=Ym, K01=Km
左下画素データ（ＰＴ＝３）C10 = Cm, M10 =Mm, Y10=Ym, K10=Km
右下画素データ（ＰＴ＝４）C11 = Cm, M11 =Mm, Y11=Ym, K11=Km
として求め、他方、第２のインク量を、
左上画素データ（ＰＴ＝１）C00 = Ck, M00 =Mk, Y00=Yk, K00=Kk
右上画素データ（ＰＴ＝２）C01 = Ck, M01 =Mk, Y01=Yk, K01=Kk
左下画素データ（ＰＴ＝３）C10 = Ck, M10 =Mk, Y10=Yk, K10=Kk
右下画素データ（ＰＴ＝４）C11 = Ck, M11 =Mk, Y11=Yk, K11=Kk
として求める。
【００７８】
第１のインク量は、ブロック内の各画素の平均を取った代表インク量に等しい。第２のインク量は、ブロック内の全ての画素が特別色である黒色画素であったと仮定した場合のインク量に等しい。こうして、第１，第２のインク量を求めた上で、それぞれについてディザ法により２値化を行なう（ステップＳ３５５，Ｓ３６５）。ディザ法を用いた２値化の手法は、第１実施形態と同じである。
【００７９】
第３実施形態のステップＳ３５５，Ｓ３６５における２値化の判断とその結果の記録形式を、シアンを例にとって以下に示す。以下において、thresh(ＰＴ)は画素ＰＴに対応した閾値を表す。またCm_result およびCk_result は、それぞれ２値化の結果を記憶する結果値である。ステップＳ３５５では、まず、この結果値Cm_result を初期化（Cm_result = 0）する。その上で、
Cm > thresh(１)ならば、Cm_result = Cm_result  +  1  （左上ドットON）
Cm > thresh(２)ならば、Cm_result = Cm_result  +  2  （左上ドットON）
Cm > thresh(３)ならば、Cm_result = Cm_result  +  4  （左上ドットON）
Cm > thresh(４)ならば、Cm_result = Cm_result  +  8  （左上ドットON）
の判断とCm_result の設定とを行なう。
【００８０】
他方、ステップＳ３６５では、同様に、結果値Ck_resultの初期化（Ck_result = 0）を行ない、更に、
Ck > thresh(１)ならば、Ck_result = Ck_result  +  1  （左上ドットON）
Ck > thresh(２)ならば、Ck_result = Ck_result  +  2  （左上ドットON）
Ck > thresh(３)ならば、Ck_result = Ck_result  +  4  （左上ドットON）
Ck > thresh(４)ならば、Ck_result = Ck_result  +  8  （左上ドットON）
の判断とCk_resultの設定とを行なう。
【００８１】
以上の処理は、１つのＣＰＵ４０により順次行なっても良いし、並列処理可能なＣＰＵを用いて並列に行なっても良い。その上で、続いて、両方の２値化の処理結果を合成する処理を行なう（ステップＳ３７０）。具体的には、以下のように合成し、その結果を、結果値C_resultに保存する。
C_result = (Cm_result & (~BKp)) + (Ck_result & BKp )
ここで、「＆」は論理積演算子であり、「~」は反転演算子である。BKpは特別色位置情報であって、その画素が特別色である黒色画素（Ｒ＝Ｇ＝Ｂ＝０）であれば値１、黒色画素でなければ値０に設定されているので、結局上記演算は、黒色画素については結果値Ck_resultを、黒色画素でなければ結果値Cm_resultを、それぞれ採用することに相当する。４つの画素についての結果値は、画素位置に応じて値１、２、４または８を加えることでシフトされているので、結果的にシアンについては、２×２画素についての結果値が８ビットのデータとして得られることになる。同様の処理をマゼンタＭ、イエロＹ、ブラックＫについても行ない、最終的な全インクについて合成結果を得る（ステップＳ３７０）。
【００８２】
以上説明した第３実施形態では、各画素が特別色である黒色画素であるか否かによって、画素毎のインク量の値を変えると言った処理を行なう必要がない。全ての画素が代表インク量である第１のインク量である場合と黒色画素に対応した第２のインク量である場合とについて、それぞれディザ法による２値化を行ない、その結果に対して、単純な論理積演算と加算とを行なっているに過ぎない。このため、演算回数自体は増えるものの、黒色画素が否かの判断を行なう必要がなく、ＣＰＵ４０のサイクルタイムで考えた場合、トータルの処理時間を短くすることが可能となる。また、分岐判断がないので、中間データ取得・多値化処理を複数のデバイスにより並列に処理することも容易となる。また、分岐がないことで、パイプライン処理を行なった場合、十分な効率を引き出すことができる。
【００８３】
更に、黒色画素についての第２のインク量が、Ｃｋ＝Ｍｋ＝Ｙｋ＝０、Ｋｋ＝２５５のように、黒色ドットの形成確率が１００％であるような場合には、ステップＳ３６５の処理を省くことも可能である。この場合には、更に処理時間を短縮することができる。
【００８４】
（４）第４実施形態：
次に、本発明の第４実施形態について説明する。第４実施形態は、複数の画素からなるブロック内のハーフトーン処理を、予め定めたテープルを利用したエンコード処理およびデコード処理の組合せにより高速に実現するものである。この手法は、特開２００６−５８９９に記載の手法と同じなので、以下図１６ないし図２１を用いて、簡明に説明する。
【００８５】
第４実施形態でも、プリンター２０の基本構成および画像処理（図２）、ハーフトーン処理（図４）については、基本的に同一である。但し、第４実施形態では、１ブロックに含まれる画素を、ｙ方向に２画素、ｘ方向に４画素とし、中間データ生成処理おいて（図５）、中間データを保存する際（ステップＳ２４０）、以下に説明するエンコードを施して保存している。従って、第４実施形態では、１ブロックに含まれる画素数は、２×４＝８画素となる。このため中間データ生成処理では、８つの画素の階調値の平均を求めてこれを代表インク量としており、特別色位置情報についても８ビットの情報として求めている。また、各画素には、第２実施例と同様に、大中小のドットが形成可能であり、ドットなしを含めた４値化を行なって、画素毎に４階調を表現可能である。もとより、１ブロックを２×２画素としたり、４値化に代えて２値化等によっても実施可能である。なお、後述する様に、本実施形態では画素毎には４値化しているが、２×４画素のブロックを単位としてみた場合には、１５値化など、更なる多値化を行なっている。この点は、後で詳しく説明する。
【００８６】
第４実施形態における中間データ取得・多値化処理（図１６）を説明する前に、中間データ生成処理において中間データを保存する際のエンコードについて説明する。中間データの生成処理（図５）では、２×４画素のブロック毎に、普通色についての各画素のインク量の平均値を求め、これを代表インク量として、特別色位置情報と共に保存している（図５、ステップＳ２４０）。このとき、第４実施形態では、代表インク量をそのまま保存するのではなく、分類番号とその多値化結果値との組み合わせにエンコードして記憶している。実際には、分類番号は、以下に説明するように、ブロック位置（Ｂｎｙ，Ｂｎｘ）と一意に対応付けられているので、現在処理しているブロックの位置が分かっていれば、多値化結果値のみを記憶しておくだけで良い。多値化結果値は、ブロックが２×４画素であれば５ビット、ブロックが２×２画素であれば４ビットで足りるので、中間データの保存に要する記憶容量を低減することができる。
【００８７】
ここで分類番号とは、図１１（Ａ）に示した大きなサイズのディザマスク６１に基づいて得られた番号であり、処理しているブロックに付与される番号である。図１１に示したディザマスク６１は、ｙ方向に６４画素、ｘ方向に２５６画素分の大きさを有する。このディザマスクから、図１１（Ｂ）に示したように、２×４の閾値群を取り出すと、
（６４÷２）×（２５６÷４）＝２０４８
つまりこのサイズのディザマスク６１を用いると、全部で２０４８種類の閾値群を取り出すことができる。これらの閾値群に含まれる閾値の組合せは基本的にユニークなものである。そこでこの閾値群に、ディザマスク６１の左上（０，０）から順に番号を付与したものが、分類番号である。他方、原画像は、ディザマスクより大きいので、あるブロック位置（Ｂｎｙ，Ｂｎｘ）に、ディザマスク６１との対応関係を用いて分類番号ＣＮ［Ｂｎｙ，Ｂｎｘ］を付与するとは、
ＣＮ［Ｂｎｙ，Ｂｎｘ］＝６４×｛Ｂｎｙ｝５  ＋｛Ｂｎｘ｝６ ＋１  …（１）
を求めることになる。ここで演算子｛Ｓ｝Ｔ  とは、変数Ｓを２進数で表現した場合の下位のＴビットを取り出すことを意味している。｛Ｂｎｙ｝５  とは、ブロックのｙ方向の番号の２進数の下５桁を表すので、１０進数の０〜３１に相当し、｛Ｂｎｘ｝６ は同じくブロックのｘ方向の番号の２進数の下６桁を芦原すので、１０進数の０〜６３に相当する。例えば、ブロック位置（７，３）であれば、ディザマスク６１の対応位置は、図１１（Ｂ）に示したように、閾値群の左上の座標で、ｙ＝１４、ｘ＝６であり、分類番号ＣＮ（７，３）は、
ＣＮ（７，３）＝６４×７＋３＋１＝４５２
となる。
【００８８】
更に、１つの閾値群には８つの閾値が含まれるが、この閾値を利用して、図１４に示した大中小テーブルと組み合わせて大中小ドットを配置すると、１つの閾値群に関して１５から多くて３１程度の階調表現が可能となる。つまり、８つの画素に１つもドットが形成されない状態から全ての画素に大ドットが形成される状態までの間に、ディザ連続の考え方で大中小ドットを配置すると、最大で３１の階調表現が可能となる。８つの画素に大中小の３種類のドットをそれぞれ０個から８個まで配置する組合せは全部で１６４通りあるが、閾値との組合せでは、実際に取り得る組合せはたかだか３１程度しかない。とはいえ、閾値の値により階調の切換が生じる階調値の組み合わせはそれぞれ異なる。
【００８９】
図１８は、代表インク量が増加するに従って多値化結果値が段階的に増加していく様子を例示した説明図である。図では、横軸に代表インク量を取り、縦軸の多値化結果値を取った折れ線グラフを用いて、代表インク量に対する多値化結果値を表示している。尚、図中では、異なる分類番号Ｎ１〜Ｎ５を有する５つのブロックについての多値化結果を示しているが、これらブロックの折れ線が重なって判別し難くなることを避けるために、多値化結果値の原点位置を縦軸方向に少しずつ、ずらして表示している。
【００９０】
一例として、図中に太い実線で示した分類番号Ｎ１番のブロックについて説明すると、代表インク量が０〜４の範囲では、多値化結果値は「０」であるが、代表インク量が５〜２０の範囲では多値化結果値は「１」に増加する。次いで、代表インク量が２１〜４２の範囲では多値化結果値は「２」に増加し、代表インク量が４３〜６９の範囲では多値化結果値は「３」に増加する。このように、代表インク量が増加するに従って、多値化結果値も段階的に増加していき、最終的には、多値化結果値は「１５」まで増加する。すなわち、分類番号Ｎ１番のブロックについては、階調値０〜２５５の範囲を取り得る代表インク量を、階調値０〜１５までの１６段階に多値化（言わば、１６値化）していることになる。多値化結果値の切り換えは、ディザマスク６１の閾値の組み合わせと大中小テーブルにより決定される。
【００９１】
同様に、図中で太い破線で示した分類番号Ｎ２番のブロックや、太い一点鎖線で示した分類番号Ｎ３番のブロックについては、階調値０〜２５５の範囲を取り得る代表インク量を、階調値０〜１７までの１８段階に多値化（言わば、１８値化）している。更に、細い実線で示した分類番号Ｎ４番のブロックおよび細い一点鎖線で示した分類番号Ｎ５番のブロックについては、代表インク量を階調値０〜２０までの２１段階に多値化（言わば、２１値化）していることになる。このように、本実施形態では、各ブロックの多値化の段数（多値化の結果として取り得る状態数）が同じではなく、ブロックの分類番号に応じて固有の段数で多値化されている。この結果、同じ代表インク量を多値化した場合でも、ブロックの分類番号が異なれば、多値化の段数が異なることになり、異なる多値化がなされることになる。
【００９２】
図１７に示した多値化テーブルには、代表インク量に対する多値化結果値がブロックの分類番号毎に記憶されている。そして、代表インク量と多値化結果値との対応関係は、図１８に示したように、分類番号毎に固有の対応関係となっている。そこで、中間データの生成処理において中間データを保存する際、各ブロックに付与される分類番号とそのブロックの代表インク量により決定される多値化結果値とを組み合わせて、つまりエンコードしてデータを保存するのである。図１７を例にとれば、ブロック番号（０，３）、代表インク量が２５４であれば、上記式（１）に従って、ＣＮ＝４、多値化結果値ＧＰ＝１９となる。分類番号は、式（１）に示したようにブロック位置（Ｂｎｙ，Ｂｎｘ）と一意に対応しており、かつ処理しているブロック位置が分かっているので、実際には多値化結果値ＧＰのみ記憶すれば良い。多値化結果値は、たかだか３１（５ビット）の値なので、代表インク量をそのまま保存するより、データ量を低減することができる。
【００９３】
こうして中間データの生成処理において、各ブロックの代表インク量を多値化結果値として保存した状態で、次に、図１６に示した中間データ取得・多値化処理を開始する。この処理が開始されると、まず処理対象ブロックの多値化結果値と特別色位置情報とを取得する（ステップＳ４１０）。その後、処理対象となっているブロックに対応した分類番号を、上述した式（１）から特定する処理を行なう（ステップＳ４２０）。分類番号はブロックの位置から一意に求められる。
【００９４】
次にブロックの分類番号と多値化結果値とに基づいてデコードを行ない、ドット個数を表わすデータに変換する（ステップＳ４３０）。ここで行なうデコードは、図１７に示したエンコードに対応した処理であり、図１９に示したテーブルを用いて、そのブロックに形成するドット個数を表わすデータを求める処理である。
【００９５】
図１９は、ブロックの分類番号と多値化結果値との組合せを、ドット個数を示すデータに変換する際に参照される変換テーブルを概念的に示した説明図である。このテーブルは、ブロックに割り当てられる分類番号と多値化結果値とからドット個数を求めるデコード用のテーブルである。
【００９６】
図１９に示されているように、変換テーブルには、多値化結果値に対応するドット個数のデータが、分類番号毎に設定されている。一例として、分類番号１番のブロックについて説明すると、多値化結果値「０」に対しては、ドット個数のデータとして「０」が設定されている。このドット個数データ「０」は、大ドット、中ドット、小ドットの形成個数がいずれも０個であることを表したコードデータである。また、多値化結果値「１」に対しては、ドット個数のデータとして「１」が設定されている。ドット個数データ「１」は、大ドット、中ドットの形成個数は０個であり、小ドットの形成個数が１個であることを表すコードデータである。更に、多値化結果値「１５」に対してはドット個数データ「１６４」が設定されている。ドット個数データ「１６４」は、大ドットを８個形成し、中ドットおよび小ドットは形成しないことを表すコードデータである。
【００９７】
このように、変換テーブルには、ドット個数を示すデータはコード化されたデータとして設定されている。すなわち個数データは、直接的にドット個数を表すものでなくても、何らかの方法で、ドット個数を特定可能であれば、どのような形態のデータとすることもできる。
【００９８】
図２０は、コード化された個数データと、各コードデータが表す大ドット・中ドット・小ドットの個数の組合せとの対応関係を示した説明図である。このように、各種ドットの個数をコード化して扱っているのは、次のような理由によるものである。
【００９９】
ここでは、１つのブロックは８つの画素をまとめて構成されているものとしているから、大ドット、中ドット、小ドットの形成個数は、それぞれ０〜８個の値を取り得る。従って、各ドットの個数をコード化せずに、そのまま表現しようとすると、大ドットの個数、中ドットの個数、小ドットの個数を表すためにそれぞれ４ビットずつ、合計では１２ビットのデータ量が必要となる。
【０１００】
一方、１つのブロックは８つの画素から構成されているから、ブロックに形成され得るドット個数の合計は、最大でも８個である。また、各画素についてみれば「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の４つの状態を取り得る。従って、ブロックに形成し得るドット個数の組合せは、これら４つの状態を、重複を許して８回選択した時の組合せの数に等しくなるから、
４Ｈ８  （＝４＋８−  １Ｃ８  ）
によって求められ、結局、最大でも１６５通りの組合せしか出現しないことになる。ここで、  ｎＨｒ  は、ｎ個の物の中から重複を許してｒ回選択するときの重複組合せ数を求める演算子である。また、  ｎＣｒ  は、ｎ個の物の中から重複を許さずにｒ回選択するときの組合せ数を求める演算子である。１６５通りの組合せであれば、８ビットあれば表現することができる。従って、現実に発生し得るドット個数の組合せにコード番号を設定しておけば、ブロックに形成すべきドット個数の組合せを８ビットのデータで表すことができる。結局、ドット個数の組合せをコード化しておくことで、ドットの種類毎に形成個数を表した場合よりも、必要なデータ量を低減することが可能となる。このような理由から、個数データを図２０に示したようにコード化して表現することとして、図１９に示した変換テーブルでは、分類番号毎の多値化結果値に対して、コード化されたドット個数のデータが設定しているのである。
【０１０１】
こうして分類番号と多値化結果値とから、そのブロックに形成すべきドットの個数を表わすデータに変換した後、ブロックに対応する順序値マトリックスを読み込む処理を行う（ステップＳ４４０）。ここで、順序値マトリックスとは、ブロック内の各画素について、ドットが形成される順番を設定したマトリックスである。図２１は、順序値マトリックスを例示した説明図である。図示されているように、順序値マトリックスもブロックの分類番号毎に異なる。この順序値マトリックスは、一つのブロック内でのドットの形成のされやすさを示している。例えば、図２１（Ｂ）に示した分類番号２番の順序値マトリックスでは、１番目にドットが形成される画素（順序値「１」の画素）は、下段の左から２番目の画素であり、２番目にドットが形成される画素（順序値「２」の画素）は、右下隅の画素である。図２１（Ｃ）に示した分類番号３番の順序値マトリックスでは、１番目にドットが形成される画素（順序値「１」の画素）は、上段の右から２番目の画素であり、２番目にドットが形成される画素（順序値「２」の画素）は、左下隅の画素である。
【０１０２】
こうした順序値マトリックスは、分類番号と対応しているディザマスクの２×４個の閾値群からその大小関係を取り出したものである。例えば図１１（Ｂ）に示した分類番号４５２の閾値群であれば、その８つの閾値「４」「５１」「１０２」「１２２」「１８０」「１９６」「２５２」「２７２」の並びの大小関係を抽出すれば、図２１（Ｄ）に示すように、１列目左から順に、７→２→８→１、２列目左から順に４→６→３→５となる。
【０１０３】
このように順序値マトリックスは、ブロックの分類番号によって異なったマトリックスとなっている。図２１に例示した順序値マトリックスはブロックの分類番号に対応づけて、プリンター２０のＥＥＰＲＯＭ６０内に予め記憶されている。図１６のステップＳ４４０では、ブロックの分類番号に対応する順序値マトリックスを、ＥＥＰＲＯＭ６０から読み出す。
【０１０４】
ブロックに対応する順序値マトリックスを読み込んだら、次にブロック内におけるドット配置を決定する処理を行なう（ステップＳ４５０）。この処理は、ブロックについてデコードされた個数データ（図２０）と順序値マトリックス（図２１）とから、大中小ドットの配置を決定する処理である。この処理は、一つのブロックに形成すべき大中小ドットの数を特定し、そのブロックの順序値に従って、大ドットから順に配置するものである。例えば、コード化された個数データが１６０であれば、図２０に示したように、大ドットが６個、中ドットが２個、小ドットが０個形成されるので、図２１に例示した順序値マトリックスの一つに従い、順序値の小さな６個の画素（順序値１〜６）に大ドットを配置し、次に順序値の小さな２個の画素（順序値７、８）に中ドットを配置するのである。
【０１０５】
以上の処理により、代表インク量に対応した大中小ドットの配置が決定される。なお、以上の説明は特定の一つの色についてのものであり、実際にはＣＭＹＫの４色について同様の処理が繰り返され、各色についての大中小ドットの配置が決定される。
【０１０６】
他方、ステップＳ４１０で取得された特別色位置情報から、黒色画素についての多値化が行なわれる（ステップＳ４７０）。この処理は他の実施形態における処理と同様である。なお、ステップＳ４７０での処理は、第２実施形態で説明したように２値化でも良いが、黒色画素における明度に基づいて、４値化するものとしても良い。
【０１０７】
こうして得られた代表インク量についての大中小ドットの配置（ステップＳ４５０）と、黒色画素についてのドット配置（ステップＳ４７０）とを合成し、最終的なドット配置を決定する（ステップＳ４８０）。合成の手法は第３実施形態で説明した方法と同様である。
【０１０８】
以上に説明したように、第４実施形態では、複数の画素をまとめたブロックの代表インク量をエンコードして中間データを生成し、中間データ取得・多値化処理では、この中間データをデコードして、ドットの配置を決定している。従って、この実施形態では、他の実施形態と同様、特別色である黒色とそれ以外の普通色とのハーフトーン処理の画素数とハーフトーン処理の内容とは異ならせて、多値化を行なうことができる。しかも、中間データの生成に際しては、ブロックの分類番号と代表インク量とを求めて、図１７に示すような多値化テーブルを参照するだけで直ちに多値化結果値を得ることができる。ブロックの分類番号も代表インク量も、前述したように極めて簡単に求めることができることから、ブロックにおける代表インク量の多値化結果値は極めて迅速に、しかも極めて簡素な処理によって求めることが可能となる。
【０１０９】
加えて、多値化結果値は、ブロックあたり僅かなビット数（本実施形態では高々５ビット）で表現することができるので、代表インク量よりも、データ量を大幅に減少させることができる。このため、中間データのための記憶容量を低減することができる。
【０１１０】
また、プリンター２０は、ブロック毎の多値化結果値を受け取ると、これをブロック内に形成すべきドットの個数を示すデータに変換するが、この変換は、図１９に示すような変換テーブルを参照するだけで、迅速に行うことができる。次いで、変換して得られたドット個数を示すデータと、順序値マトリックスとに基づいて、大ドット・中ドット・小ドットの形成有無を決定した後、ドットを形成して画像を印刷する。順序値マトリックスを参照すれば、大ドット・中ドット・小ドットを形成する画素も簡単に決定することができる。従って、全体として、ブロック毎の大中小ドットの配置を迅速に決定でき、延いては、迅速に画像を印刷することが可能となる。
【０１１１】
加えて、本実施形態では、単に迅速に画像を印刷することができるだけでなく、黒色画素については十分な画質で画像を印刷することができる。また普通色については、多値化テーブルや、変換テーブル、および順序値マトリックスをディザマスクに基づいて設定していることから、そのドット配置に、ディザマスクの特性を反映させることができる。従って、ディザマスクに、いわゆるブルーノイズ、あるいはグリーンノイズと呼ばれる特性を持たせれば、ドットが良好に分散した高画質な画像を印刷することが可能となる。
【０１１２】
上記第４実施形態では、中間データを保存する際、図１７に示したエンコードテーブルを用いてエンコードした値を保存したが、中間データの生成処理では、体表インク量を保存しておき、中間データ取得・多値化処理において、エンコードとデコードを行なうようにしても良い。また全ての代表色について同じ手法を適用する必要はなく、色によってブロックの大きさを変えたり、エンコード・デコードテーブルの組合せを変更することも差し支えない。また、特開２００６−５８９９に示された他のエンコードおよびデコード方法を適用することも、勿論可能である。
【０１１３】
以上、第１ないし第４実施形態を用いて本発明の実施形態を説明したが、第１実施形態の変形例で説明したような変形は、他の実施形態においても可能である。また、特別色とそれ以外の色（普通色）とのハーフトーン手法は、様々な組み合わせが可能である。例えば特別色について誤差拡散を行なったり、第４実施形態におけるエンコード・デコードを用いた処理を特別色について行なったりすることも差し支えない。
【０１１４】
本発明は、上記の実施形態に何ら限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々の態様で実施できることは勿論である。例えば、ブロックとして扱う画素数は、２×２や２×４以外の画素数であっても差し支えない。またブロックの形状は矩形に限らず、画像を埋め尽くせる形であれば、どのよう形でも差し支えない。更に、各ブロックに含まれる画素数は同一である必要はない。特別色は黒色に限らず、他の色でもよく、また複数の色の組み合わせを特別色として扱っても良い。異なるハーフトーン処理は２種類に限る必要はなく、特別色以外の色を更に複数に分け、それぞれに異なるハーフトーン処理を用意しても良い。あるいは複数の色を特別色とした場合には、色毎に異なるハーフトーン処理を用意しても良い。
【符号の説明】
【０１１５】
２０…プリンター
３０…制御ユニット
４０…ＣＰＵ
４１…入力部
４２…ハーフトーン処理部
４３…中間データ生成部
４４…中間データ取得・多値化部
４６…印刷部
５１…ＲＯＭ
５２…ＲＡＭ
６０…ＥＥＰＲＯＭ
６１…ディザマスク
６２…大中小テーブル
７０…キャリッジモータ
７１…駆動ベルト
７３…摺動軸
７４…モータ
７５…プラテン
８０…キャリッジ
８２…インクカートリッジ
９０…印刷ヘッド
９８…メモリカードスロット
９９…操作パネル
BKp…特別色画素位置情報
【図１】
0006613597.tif 000002
【図２】
0006613597.tif 000003
【図３】
0006613597.tif 000004
【図４】
0006613597.tif 000005
【図５】
0006613597.tif 000006
【図６】
0006613597.tif 000007
【図７】
0006613597.tif 000008
【図８】
0006613597.tif 000009
【図９】
0006613597.tif 000010
【図１０】
0006613597.tif 000011
【図１１】
0006613597.tif 000012
【図１２】
0006613597.tif 000013
【図１３】
0006613597.tif 000014
【図１４】
0006613597.tif 000015
【図１５】
0006613597.tif 000016
【図１６】
0006613597.tif 000017
【図１７】
0006613597.tif 000018
【図１８】
0006613597.tif 000019
【図１９】
0006613597.tif 000020
【図２０】
0006613597.tif 000021
【図２１】
0006613597.tif 000022