(57)【要約】      （修正有）【課題】印刷媒体上のドットの配列を示すハーフトーンデータに応じた補正方法でドット形成データを補正する画像処理装置を提供する。【解決手段】プリンタ１は、画像データに対してハーフトーン処理を実行することによりドットのオンとオフを示すハーフトーンデータを生成するハーフトーン処理部１６ａと、ハーフトーンデータを並び替えることによりドットの形成順にドットのオンとオフを示すドット形成データを生成する配列変換部１７と、ハーフトーンデータに応じた補正方法で前記ドット形成データを補正するドット補正部１８と、補正後のドット形成データに基づいて印刷媒体にドットを形成するドット形成部（吐出制御部１９、印刷ヘッド４７、キャリッジモーター３１、送紙モーター３２）と、を備える。【選択図】図１
2016171491.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対してハーフトーン処理を実行することによりドットのオンとオフを示すハーフトーンデータを生成するハーフトーン処理部と、
前記ハーフトーンデータを並び替えることによりドットの形成順にドットのオンとオフを示すドット形成データを生成する配列変換部と、
前記ハーフトーンデータに応じた補正方法で前記ドット形成データを補正するドット補正部と、
補正後の前記ドット形成データに基づいて印刷媒体にドットを形成するドット形成部と、
を備える画像処理装置。
【請求項２】
前記ハーフトーン処理部は、１画素の階調値を複数のドットのオンまたはオフを示す値に変換するハーフトーン処理を行うブロック単位処理部と、１画素の階調値を１つのドットのオンまたはオフを示す値に変換するハーフトーン処理を行う画素単位処理部と、を有する、
請求項１に記載の画像処理装置。
【請求項３】
前記ドット形成部は、前記ドットを吐出するノズルを複数備え、
前記ドット補正部は、前記ノズルの特性に応じて前記補正方法を選択する、
請求項１又は２に記載の画像処理装置。
【請求項４】
前記ドット補正部は、前記ハーフトーンデータの局所パターンを判定し、判定結果に基づいて前記補正方法を選択する、
請求項３に記載の画像処理装置。
【請求項５】
前記ドット補正部は、処理対象の前記ノズルに対応する前記ハーフトーンデータの前記局所パターンを判定し、判定結果に基づいて、前記処理対象のノズルに隣接する他の前記ノズルに対応する前記ドット形成データを補正する、
請求項４に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置に関し、特にハーフトーン処理後のドット補正に関する。
【背景技術】
【０００２】
従来、プリンターのドットの形成（オン）と非形成（オフ）を示すハーフトーンデータに階調値を変換するハーフトーン処理が知られている。プリンターは、ドットの形成順を示すドット形成データにハーフトーンデータを変換し、ドット形成データに基づいて印刷ヘッドなどのドット形成部を制御することによって印刷を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２４４９２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、印刷ヘッドのノズルの口径に製造上のばらつきがあったり、インクを吐出するアクチュエーターであるピエゾ等に不具合がある場合、そのようなばらつきや不具合が無いことを前提として生成されるドット形成データに基づいてドット形成部を制御すると、意図した印刷結果が得られず、画質が劣化する。また、そのようなばらつきや不具合を考慮した補正をドット形成データに対して施すとしても、ドット形成データは、ドットの形成順序に直接対応する最終的なドットの形成と非形成を示すデータである。例えば、シリアルインクジェットプリンターが、印刷媒体上の配列において１列飛びの複数列のドットを１回の主走査で形成する場合、印刷媒体上では隣り合わないドットがドット形成データ上では隣り合うことになる。このため、ドット形成データに基づいてドット形成データを補正すると、実際に印刷される画像の特徴が考慮されていない補正結果が得られることになり、画質を向上させることが困難である。
【０００５】
本発明は、このような問題を解決するために創作されたものであって、印刷画質を向上させることを目的の１つとする。
【課題を解決するための手段】
【０００６】
上記目的を達成するための画像処理装置は、画像データに対してハーフトーン処理を実行することによりドットのオンとオフを示すハーフトーンデータを生成するハーフトーン処理部と、前記ハーフトーンデータを並び替えることによりドットの形成順にドットのオンとオフを示すドット形成データを生成する配列変換部と、前記ハーフトーンデータに応じた補正方法で前記ドット形成データを補正するドット補正部と、補正後の前記ドット形成データに基づいて印刷媒体にドットを形成するドット形成部と、を備える。
【０００７】
本発明によると、印刷媒体上のドットの配列を示すハーフトーンデータに応じた補正方法でドット形成データを補正するため、印刷画質を向上させることができる。
【０００８】
また請求項に記載された各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら各手段の機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態にかかるプリンターを示すブロック図。
【図２】本発明の実施形態にかかる画像処理ＩＣを示すブロック図。
【図３】本発明の実施形態にかかるハーフトーンデータを説明するための模式図。
【図４】本発明の実施形態にかかるデータテーブルを説明するための模式図。
【図５】本発明の実施形態にかかるデータテーブルを説明するための表。
【図６】本発明の実施形態にかかるデータテーブルを説明するためのグラフ。
【図７】本発明の実施形態にかかるデータテーブルを説明するための表。
【図８】本発明の実施形態にかかる画素単位ハーフトーン処理部を示すブロック図。
【図９】本発明の実施形態にかかる印刷処理を示すフローチャート。
【図１０】本発明の実施形態にかかる画素単位ハーフトーン処理を示すフローチャート。
【図１１】本発明の実施形態にかかる誤差拡散閾値を説明するためのグラフ。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を添付図面を参照しながら説明する。尚、各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
１．装置構成
図１に示す本発明の実施例としてのプリンター１は、双方向印刷を行うシリアルインクジェットプリンターである。プリンター１は、送紙モーター３２によって印刷媒体Ｐを搬送する機構と、キャリッジモーター３１によってキャリッジ４０をプラテンの長手方向に往復動させる機構と、キャリッジ４０に搭載された印刷ヘッド９０を駆動してインクドットの吐出を行う機構と、制御ユニット１０とを備えている。
【００１１】
キャリッジ４０をプラテンの長手方向に往復動させる機構は、プラテンの軸と平行に架設されてキャリッジ４０を摺動可能に保持するガイドと、無端ベルトが掛け渡されてキャリッジモーター３１によって駆動されるプーリー等から構成されている。
【００１２】
キャリッジ４０には、カラーインクとして、シアンインクＣ、マゼンタインクＭ、イエロインクＹ、ブラックインクＫ、ライトシアンインクＬｃ、ライトマゼンタインクＬｍをそれぞれ収容したインクカートリッジ４１〜４６が搭載される。以下、Ｃ、Ｍ、Ｙ、Ｋ、Ｌｃ、Ｌｍの階調で表すデータ形式をＣＭＹ形式という。キャリッジ４０の下部にはドット形成部としての印刷ヘッド４７が設けられる。印刷ヘッド４７には、上述の各色のカラーインクに対応する多数のノズルが形成されている。同一色のカラーインクを吐出するノズルは副走査方向に並ぶ。異なる色のカラーインクを吐出する複数のノズルは副走査方向の１列に並ばない。キャリッジ４０にこれらのインクが充填されたインクカートリッジ４１〜４６を上方から装着すると、各カートリッジから印刷ヘッド４７へのインクの供給が可能となる。
【００１３】
各カラーインクは、面積階調によりフルカラーを表現するための色成分を構成する。すなわち、Ｃ、Ｍ、Ｙ、Ｋ、Ｌｃ、Ｌｍのインクドットが占める面積の割合を異ならせることによりＣ、Ｍ、Ｙ、Ｋ、Ｌｃ、Ｌｍの６つの色成分でフルカラーが表現される。印刷ヘッド４７は、インクドットを吐出する（オン）か、インクドットを吐出しない（オフ）かをノズル毎に制御できるに過ぎないため、後述するハーフトーン処理部１６において、ＣＭＹ形式の階調値はノズル毎にインクドットのオンとオフを示すハーフトーンデータに変換され、印刷ヘッド４７はハーフトーンデータを並び替えたドット形成データに基づいて駆動される。
【００１４】
制御ユニット１０は、ＣＰＵ１３、フラッシュメモリ・ＥＥＰＲＯＭなどの不揮発性記憶媒体からなる外部記憶１２、揮発性記憶媒体からなる主記憶５２、入出力部１１、画像処理ＩＣ（Integrated Circuit）１９を備え、これらがバスで相互に接続されている。制御ユニット１０は、外部記憶１２に記憶されたプログラムを主記憶１４にロードし、ＣＰＵ１３で実行することにより、入力された画像データに対する画像処理を実行してドット形成データを生成し、プリンター１の動作全般を制御する。
【００１５】
入出力部１１は、ＵＳＢ、イーサネット（登録商標）、ＩｒＤＡ、ブルートゥース（登録商標）等の規格に準拠したデータ入力インターフェースを備え、リムーバブルメモリや外部機器から画像データを入力することができる。本実施例においては、入出力部１１から入力される画像データは、レッド（Ｒ）、グリーン（Ｇ）、ブルー（Ｂ）の３色の色成分の階調値を画素毎に持つ。
【００１６】
外部記憶１２には、ＯＳ、印刷制御プログラム等の各種のプログラムのほか、色変換テーブル１２０等の各種のデータテーブルが記憶されている。色変換テーブル１２０には、ＲＧＢの階調値とＣＭＹＫＬｃＬｍの階調値とが予め対応付けて記憶されている。
【００１７】
画像処理ＩＣ１００は、以下で説明する色変換部１５、ブロック単位ハーフトーン処理部１６ａ、画素単位ハーフトーン処理部１６ｂ、配列変換部１７、ドット補正部１８、吐出制御部１９の機能を実現するためのプログラムが所定のハードウェア記述言語によって記述されることで設計された集積回路である。
【００１８】
色変換部１５は、色変換テーブル１２０を参照することでＲＧＢからＣＭＹＫＬｃＬｍへの色変換を行う。色変換後の画像データは、ＣＭＹ形式の各色成分について２５６段階（０〜２５５）の階調値Ｄｎを有する。
【００１９】
ハーフトーン処理部１６は、図２に示すようにブロック単位ハーフトーン処理部１６ａと、画素単位ハーフトーン処理部１６ｂと、ブロック単位ハーフトーン処理部１６ａまたは画素単位ハーフトーン処理部１６ｂのいずれか一方に色変換部１５からＣＭＹ形式の画像データを入力するセレクタ７１とを備えている。すなわち、ハーフトーン処理は、ブロック単位ハーフトーン処理部１６ａまたは画素単位ハーフトーン処理部１６ｂのいずれか一方によって実行される。なお本実施例のハーフトーンデータは、線順次にドットのオンとオフを示す。すなわち、本実施例のハーフトーンデータでは、１つの色成分についてドットのオンとオフが１ライン分連続して配列されるが、面順次にドットのオンとオフを示すハーフトーンデータでも良いし、点順次にドットのオンとオフを示すハーフトーンデータでも良い。
【００２０】
図２に示すように画素単位ハーフトーン処理部１６ｂは、セレクタ７１からＣＭＹ形式の画像データを入力し、画素単位ディザマスクＤＭＰおよび誤差拡散閾値テーブルＥＤＴを参照することにより、ディザ法と誤差拡散法を組み合わせて、１画素の階調値を１つのドットのオンまたはオフを示す値に変換するハーフトーン処理を行う。ハーフトーンデータは、印刷媒体上に形成されるドットの配列順にインクドットのオン又はオフを示すデータである。画素単位ディザマスクＤＭＰは、組織的ディザ法によるハーフトーン処理に用いるものであり、１画素にそれぞれが対応する複数のディザ閾値により構成される。画素単位ディザマスクＤＭＰは、本実施例では、いわゆるブルーノイズ特性を備える周知のディザマスクである。誤差拡散閾値テーブルＥＤＴは、誤差拡散処理におけるドットのオンとオフの決定に用いる拡散閾値が記憶されたテーブルである。画素単位ハーフトーン処理部１６ｂの構成の詳細は後述する。
【００２１】
ブロック単位ハーフトーン処理部１６ａは、エンコードユニット７２とデコードユニット７３とを備えている。ブロック単位ハーフトーン処理部１６ａは、セレクタ７１からＣＭＹ形式の画像データを１ライン分ずつ入力し、ブロック単位ディザマスクＤＭＢ、エンコードテーブルＥＴ、プレデコードテーブルＤＴ１、ポストデコードテーブルＤＴ２、順序値テーブルＳＴを参照することにより、１画素の階調値を複数のインクドットのオンとオフを示すハーフトーンデータに変換する。ブロック単位ハーフトーン処理部１６ａは、１画素の階調値を複数のドットのオンまたはオフを示す値に変換するハーフトーン処理を行うためにブロック単位ディザマスクＤＭＢを参照する。ブロック単位ディザマスクＤＭＢは、組織的ディザ法によるハーフトーン処理に用いるものであり、１画素に対応する複数のディザ閾値によりそれぞれが構成される８１９２のブロックにディザ閾値が区分されている。
【００２２】
図３は、ブロック単位ハーフトーン処理部１６ａが出力するハーフトーンデータの一例を示している。ブロック単位ハーフトーン処理部１６ａは、各サイズのドットの大きさを、それぞれ、「００（ドット無し）」、「０１（Ｓドット）」、「１０（Ｍドット）」、「１１（Ｌドット）」という２ビットのデータによって表した値（以下、「ドットサイズ値」という）を印刷媒体上の配列順に配列したデータをハーフトーンデータとして出力する。図３Ｂにおいては、Ｓドット、Ｍドット、Ｌドットが配置される格子点をそれぞれＳ，Ｍ、Ｌで示し、いずれのドットも配置されない格子点を「−」で表している。ブロック単位ハーフトーン処理部１６ａによってハーフトーン処理が実行される場合、１つの画素の１つの色成分の階調値がハーフトーン処理部１６によって処理されると、４×２ドットのドット群の中で、Ｓドット、ＭドットおよびＬドットを組み合わせて配置してその階調値が表す色を印刷媒体上に表現する８ドット分のハーフトーンデータが生成される。例えば図３Ａに示すようにＣＭＹ形式の画像データの最も左上の画素（１，１）の色成分（例えばシアン）の階調値が「５２」の場合に、これをハーフトーンデータに変換した例を図３Ｂに示す。なお、画像データの１画素に対応するドット群のことを、以下では「ブロック」と呼ぶ。
【００２３】
配列変換部１７は、ハーフトーンデータを入力し、プリンター１のノズル配置、紙送り量、印刷モードなどに合わせて１回の主走査単位でハーフトーンデータをドット形成データ８７に並び替えて主記憶１４に出力する。ドット形成データは、ハーフトーンデータを構成するドットサイズ値をドットの形成順（ドットの吐出順）に再配列したデータである。例えば画像データの垂直方向が印刷の主走査方向に一致する場合、ハーフトーンデータの垂直方向に並ぶ１列のドットサイズデータが１回の主走査において１つのノズルから吐出されるドットのオンとオフを示す。また主走査の往路において１つのノズルから吐出されるドットと復路において１つのノズルから吐出されるドットはハーフトーンデータの配列の上では逆の並びになっている。また印刷の副走査方向において印刷結果として隣接するドットを異なる主走査のパスで形成する場合には、ハーフトーンデータの配列の上では隣接していないドットが、隣接するノズルから同時に吐出されるドットになる。配列変換部１７は、このようにハーフトーンデータにおけるドットの配列順序とは異なる順序でドットが吐出される配列にドットサイズ値が並ぶようにハーフトーンデータを並び替える。
【００２４】
ドット補正部１８は、ドット形成データとハーフトーンデータを入力し、ドットパターン識別テーブル８３、ノズル特性テーブル８４、補正方法選択テーブル８５、ドット変換テーブル８６を参照し、ハーフトーンデータとノズル特性に応じた補正方法でドット形成データを補正して出力する。すなわち、ドット補正部１８は、これらのデータテーブルを参照することにより、ハーフトーンデータの局所パターンであるドットパターンを判定し、判定結果に基づいてドット形成データの補正方法を選択し、選択した補正方法によってドット形成データを補正する。
【００２５】
図７Ａは、ドットパターン識別テーブル８３のデータ構造を示している。ドットパターン識別テーブル８３は、ハーフトーンデータの局所領域のドットサイズ値群を、すなわちハーフトーンデータが示す印刷媒体上の局所領域のドットの配列を、複数のパターンのいずれか１つに対応付けるためのデータテーブルである。本実施例のドットパターン識別テーブル８３は、ハーフトーンデータの水平方向に隣接する３ドットのドットサイズ値群を、図７Ａに示すように、パターン１〜５の５つの分類に区分するためのデータを保持する。以下、ドットパターン識別テーブル８３によって分類されるドットの配列をドットパターンという。なお、本実施例では３つのドットからなるドットパターンを５つの区分に分類するが、２つのドットからなるドットパターンを４以下の区分に分類しても良いし、４つ以上のドットからなるドットパターンを６以上の区分に分類しても良いし、３つのドットからなるドットパターンを４以下の分類又は６以上の区分に分類しても良い。さらに、本実施例ではハーフトーンデータ上で水平方向に連続するドット群をドットパターンとして分類するがハーフトーンデータ上で垂直方向に連続するドット群をドットパターンとして分類しても良いし、ハーフトーンデータ上で水平方向と垂直方向にそれぞれ２ドット以上の長さを持つ矩形領域のドット群をドットパターンとして分類しても良い。
【００２６】
図７Ｂは、ノズル特性テーブル８４のデータ構造を示している。ノズル特性テーブル８４は、印刷ヘッド４７に備わる全てのノズルについてそれぞれの特性を識別するためのデータテーブルである。本実施例のノズル特性テーブル８４は、図７Ｂに示すように、ノズルの特性を特性１〜３の３つの分類に区分するデータを保持する。特性１〜３は、製造公差を含むノズルの実口径、吐出状態の良／不良等に応じて決められるが、ノズルの特性を何個に分類するかは設計事項であって、２以下の分類に区分しても良いし、４以上の分類に区分しても良い。
【００２７】
図７Ｃは、補正方法選択テーブル８５のデータ構造を示している。補正方法選択テーブル８５は、ドットパターンとノズル特性の組み合わせをいずれかの補正方法に対応付けるためのデータテーブルである。本実施例の補正方法選択テーブル８５は、図７Ｃに示すように、ドットパターンとノズル特性の任意の組み合わせについて方法１〜３の３つの補正方法のいずれか１つ示す値を保持する。補正方法は、少なくともドットパターンに応じて選択できればよいため、２つだけでも、４つ以上用意しても良い。
【００２８】
図７Ｄは、ドット変換テーブル８６のデータ構造を示している。ドット変換テーブル８６は、図７Ｄに示すように、ドット形成データのドットサイズ値と補正方法の任意の組み合わせについて「００」、「０１」、「１０」、「１１」のいずれかの補正値を保持するデータテーブルである。
【００２９】
ドット補正部１８は、ドットパターン識別テーブル８３とノズル特性テーブル８４と補正方法選択テーブル８５をハーフトーンデータに基づいて順に参照することにより補正方法を特定し、特定した補正方法とドット形成データとに応じた補正値をドットサイズ値毎に特定し、特定した補正値とドット形成データのドットサイズ値とのＯＲ演算の結果を補正後のドット形成データとして導出する。すなわちドット補正部１８は、ハーフトーンデータとノズル特性に応じた補正方法を選択し、選択した補正方法でドット形成データを補正する。詳しくは後述する。
【００３０】
吐出制御部１９は、ドット補正部１８によって補正されたドット形成データを入力し、ドット形成データに基づいて印刷ヘッド４７、キャリッジモーター３１、送紙モーター３２を駆動するための制御信号を出力する。吐出制御部１９は、ドットサイズ値に応じて、印刷ヘッド４７内のピエゾ素子に印加する電圧波形を調整することで、ノズル毎にサイズの異なるドットの打ち分けを行う。
【００３１】
３．ブロック単位ハーフトーン処理部で参照するデータテーブルの詳細
図４Ａは、ブロック単位ディザマスクＤＭＢのデータ構造を示している。本実施例のブロック単位ディザマスクＤＭＢには、横５１２×縦１２８の配列内に０から６５５３５までの計６５５３６個の閾値が記録されている（各閾値の図示は省略）。このブロック単位ディザマスクＤＭＢは、従来のハーフトーン技術として知られた組織的ディザ法で用いられるディザマトリックスと同種のテーブルである。そのため、図示したブロック単位ディザマスクＤＭＢにおいても、画像データが０から６５５３５までの階調値を有すると仮定した場合において、この画像データを２値化する際に、ドットの分散性が高まるように各閾値が配置されている。このようなブロック単位ディザマスクＤＭＢとしては、例えば、ブルーノイズ特性を有するマトリックスを採用することができる。なお、本実施例では、ブロック単位ディザマスクＤＭＢのサイズを、５１２×１２８としたが、１２８×３２や１０２４×２５６など、種々のサイズを適用することができる。
【００３２】
ブロック単位ディザマスクＤＭＢは、４×２個の閾値を１つのブロックとして、計８１９２（＝（５１２／４）×（１２８／２））個のブロックに分割され、各ブロックに対してブロック番号が与えられる。本実施例では、図４Ａに示すように、ブロック単位ディザマスクＤＭＢの最も左上に位置するブロックにブロック番号「０」を与え、その右隣に位置するブロックにブロック番号「１」、以下、右下端のブロックにかけて、順にブロック番号を与える。図７Ｂには、ブロック番号「０」のブロックに記録された各閾値を示している。ＣＭＹ形式の画像データの任意の１画素の階調値は、画素の位置によってブロック単位ディザマスクＤＭＢのいずれか１つのブロックに対応付けられる。
【００３３】
ブロック単位のハーフトーン処理では、ＣＭＹ形式の画像データの階調値が同一の場合であっても、その画素の位置が異なれば、図４Ａに示したブロック単位ディザマスクＤＢＭ内で参照される閾値群が異なるため、異なるハーフトーンデータが生成される。例えば図３Ａにおいて、ＣＭＹ画像の最も左上の画素以外に、もう一つ、「５２」の階調値を有する画素（ｊ，１）を示している。画素（１，１）に対応するハーフトーンデータの例を図３Ｂに示したが、画素（ｊ，１）のハーフトーンデータは、図３Ｃに示すように画素（１，１）のハーフトーンデータとは異なる。つまり、階調値の値が同じであっても、ハーフトーン処理対象となる画素の位置に応じて生成するハーフトーンデータを変化させるので、従来の組織的ディザ法や濃度パターン法等よりも高画質な画像の出力を行うことが可能になる。
【００３４】
上述したように、１画素に対応するドット群（ブロック）の単位を４×２としたため、例えば、入力画像の解像度が、３６０ｄｐｉ×３６０ｄｐｉであれば、印刷媒体に出力される出力解像度は、１４４０ｄｐｉ×７２０ｄｐｉとなる。ドット群の横方向の解像度が縦方向の解像度よりも高いものとしたのは、階調変化に対する人間の目の追従性が縦方向よりも横方向に敏感であるためである。また、印刷媒体Ｐを副走査方向に移動させる制御よりも、キャリッジ４０を主走査方向に移動させる制御の方が比較的容易であるため、横方向の解像度を縦方向の解像度よりも高くしている。しかし、もちろん、ドット群のサイズは、４×２以外にも、縦横比が同一となる４×４や２×２などとすることも可能である。なお、本実施例では、画像データにおいてＲＧＢ形式あるいはＣＭＹ形式によって任意の１点の任意の１色を表現可能な最小単位を「画素」といい、印刷媒体Ｐに形成される出力画像の構成要素の最小単位を「ドット」というものとする。ここで、ＲＧＢ形式あるいはＣＭＹ形式の入力画像を、例えば、３６０ｄｐｉ×３６０ｄｐｉから１４４０ｄｐｉ×７２０ｄｐｉに高解像度化した上で、その中の複数の画素を４×２や２×２のブロックとしてまとめ、その複数の画素を代表する画素（例えば、ブロック内の画素の階調値を平均化したもの）を１つの「画素」として扱うものとしてもよい。
【００３５】
図５Ａは、ブロック単位ハーフトーン処理部１６ａが参照するエンコードテーブルＥＴのデータ構造を示している。図示するように、このエンコードテーブルＥＴには、「０」から「８１９１」までのブロック番号と、「０」から「３１」までの５ビットのエンコード値ＥＶとに対応付けて、「０」から「２５５」までのいずれかの階調値が記録されている。エンコードテーブルＥＴに記録されている階調値のことを、「代表階調値」というものとする。エンコードテーブルＥＴは、８ビットの階調値を、階調値とその画素の位置、すなわち、階調値とブロックの番号に応じて、５ビットのエンコード値ＥＶ（０〜３１）に変換するためのテーブルである。エンコードテーブルＥＴは、後述するドット発生量テーブルＧＴに基づいて生成される。
【００３６】
図５Ｂは、ブロック単位ハーフトーン処理部１６ａが参照するプレデコードテーブルＤＴ１のデータ構造を示している。図示するように、このプレデコードテーブルＤＴ１には、ブロック番号とエンコード値ＥＶとに対応付けて、図５Ｃに示すポストデコードテーブルＤＴ２のインデックス値が記録されている。インデックス値は、１ブロック内に配置可能な各サイズのドットの数の組み合わせのすべてを表すことが可能なデータである。インデックス値の範囲は、本来、「０」から「１６４」までであるが、図５Ｂには、「２５５」というインデックス値が記録されている部分がある。しかし、これは、単なるダミーのデータであり、デコード処理時には参照されない部分である。プレデコードテーブルＤＴ１は、後述するドット発生量テーブルＧＴに基づいて生成される。
【００３７】
図５Ｃは、ブロック単位ハーフトーン処理部１６ａが参照するポストデコードテーブルＤＴ２のデータ構造を示している。図示するように、このポストデコードテーブルＤＴ２には、０から１６４までのインデックス値に対応付けて、１６ビットのドット数データが記録されている。ドット数データは、２ビットのドットサイズ値を、サイズの大きなドットから右詰めに８つ連結させたデータである。この１６５個のドット数データは、１ブロック内に発生する各サイズのドットの数の組み合わせのすべてを表している。例えばインデックス値「３」のドット数データ「０００００００００００１０１０１０１」はＳサイズのドット３個を示している。なお、ドット数データは、各サイズのドットの個数を定めているが、ドットの配列を定めているわけではない。ドットの配列はドット数データで後述する順序値テーブルＳＴを参照することによって定まる。
【００３８】
ここで、１つのブロック内に発生する各サイズのドットの組み合わせの数が１６５個に収まる理由を説明する。ブロック内の１つのドットのサイズは、上述したように、「ドット無し」、「Ｓドット」、「Ｍドット」、「Ｌドット」の４つの状態を取り得る。従って、１ブロック内におけるこれらのドットの組合せは、これら４つの状態を、重複を許容して８回選択した時の組合せの数に等しくなるから、最大でも１６５通り（０〜１６４）の組合せしか出現しないことになる。従って、１ブロック内で表現可能な面積階調を０から１６４までのインデックス値によって全て示すことができる。
【００３９】
図４Ｄは、ブロック単位ハーフトーン処理部１６ａが参照する順序値テーブルＳＴのデータ構造を示している。順序値テーブルＳＴは、ブロック内の４×２個の格子点に、各サイズのドットをドット数データが示す数だけ配置する順序をブロック毎に決定するためのテーブルである。各ブロックの順序値テーブルＳＴは、ブロック単位ディザマスクＤＭＢの対応ブロックについて閾値の昇順に０〜７の順序値を保持する。例えば図４Ｂに示す閾値が切り出されるブロック０の格子点ａ〜ｈには、図４Ｃに示す順序値が設定される。
【００４０】
図６は、ドット発生量テーブルＤＧＴの一例を示している。図示するように、このドット発生量テーブルＤＧＴには、横軸に示した入力階調値に対して、Ｓドット、Ｍドット、Ｌドットの発生量がそれぞれ縦軸に定義されている。縦軸に示すドット発生量は、図Ｂに示したブロック単位ディザマスクＤＭＢ内の各閾値との比較が可能なように、０から６５５３５までの値をとる。
【００４１】
図６には、Ｓドット，Ｍドット，Ｌドットの発生量とともに、これらのドットが印刷媒体に形成される際に吐出されるインクの総重量の変化を破線で示した。入力階調値が増加するにつれ、インクの総重量が徐々に増加していくことになる。各サイズのドット発生量は、かかる総重量の変化にあわせて、それぞれの発生量が設定されている。図６に示す例では、入力階調値が０から７０程度までは、Ｓドットのみが発生し、その後、入力階調値が１２０程度までは、ＳドットとＭドットの両者が発生することがわかる。また、入力階調値が１１０程度になると、ＳドットとＭドットに加えて、Ｌドットが発生するようになり、入力階調値が概ね１８０以降になると、Ｌドットのみが発生する
【００４２】
なお、このドット発生量テーブルＤＧＴは、プリンター１がサポートしている印刷媒体の種類に応じて複数種類のテーブルが外部記憶１２に記憶されている。印刷媒体は、その材質によってインクの吸収率や光の反射率が異なり、このような特性に応じてインクのドット発生量が設定されているためである。従って、ＣＰＵ１３は、ユーザーによって設定された印刷媒体Ｐの種類に応じて、その種類に応じたドット発生量テーブルＤＧＴを外部記憶１２から入力する。こうすることで、選択された印刷媒体Ｐに適した印刷を行うことが可能になる。
【００４３】
４．画素単位ハーフトーン処理部の構成
次に、図８を参照しながら画素単位ハーフトーン処理部１６ｂの構成について詳細に説明する。
ディザユニット６１は、画素単位ディザマスクＤＭＰを参照しながらディザ閾値と注目画素の階調値Ｄｎとの大小を色成分毎に比較し、比較結果を出力する。比較結果を示すディザユニット６１の出力信号は、ディザ閾値以上（ドットオン）またはディザ閾値未満（ドットオフ）を示す二値であり、以後、ディザ比較値という。ディザユニット６１は、各色成分についてこのディザ処理を並列に実行する。全ての色成分のディザ比較値は、セレクタ６２およびセレクタ６７に入力される。また後述する誤差拡散ユニット６４、６５、６６で用いるため、ディザユニット６１に入力される全ての色成分の階調値もセレクタ６２に入力される。
【００４４】
セレクタ６２は、注目画素の全ての色成分についてディザ比較値と階調値を取得し、各色成分についてこれらの出力先を選択する。すなわちセレクタ６２は、注目画素の誤差拡散処理の対象ではない第一色成分については、遅延バッファ６３にディザ比較値を入力し、注目画素の誤差拡散処理の対象である第二色成分については、誤差拡散ユニット６４、６５、６６にディザ比較値と階調値を入力する。
【００４５】
遅延バッファ６３は、誤差拡散ユニット６４、６５、６６において注目画素について処理が完了するのに必要なクロック数だけ注目画素の他の色成分についてディザ比較値を保持する遅延回路（パイプラインレジスタ）である。なお、全ての色成分について誤差拡散処理を行わない場合には、遅延バッファ６３でディザ比較値を保持する必要が無く、１つの色成分についてのみ誤差拡散処理を行う場合には、５つの色成分についてディザ比較値を遅延バッファ６３で保持する必要がある。したがってセレクタ６２と遅延バッファ６３とを接続する信号線の数は、最大でも、プリンター１が対応可能な色成分の数である６よりも１小さい５つの色成分についてディザ比較値を伝送できる数だけ用意すればよい。本実施例では、３つの色成分について二値のディザ比較値を伝送する３本の信号線でセレクタ６２と遅延バッファ６３とが接続される。
【００４６】
第一誤差拡散ユニット６４、第二誤差拡散ユニット６５、第三誤差拡散ユニット６６は、構成が共通であって、それぞれ注目画素の１つの色成分について、ディザ比較値と注目画素の階調値とをセレクタ６２から取得し、注目画素のディザ比較値と階調値に基づいて、誤差拡散法におけるドットのオン／オフの決定に用いる閾値である誤差拡散閾値を変化させることで、誤差拡散法によるドットの形成のされやすさを制御するパイプラインプロセッサである。各誤差拡散ユニットには、誤差加算部６６１、閾値比較部６６２、オン誤差計算部６６３、オン誤差記憶部６６４、拡散範囲係数テーブル６６５、オフ誤差計算部６６６、オフ誤差記憶部６６７、セレクタ６６８、拡散誤差記憶部６６９が備わっている。誤差加算部６６１、閾値比較部６６２、オン誤差計算部６６３、オン誤差記憶部６６４、拡散範囲係数テーブル６６５、オフ誤差計算部６６６、オフ誤差記憶部６６７、セレクタ６６８、拡散誤差記憶部６６９の機能については後に詳しく説明する。
【００４７】
セレクタ６７は、各色成分について、ディザユニット６１、遅延バッファ６３、第一誤差拡散ユニット６４、第二誤差拡散ユニット６５、第三誤差拡散ユニット６６から出力されるハーフトーンデータのいずれか１つを選択し、６つの色成分について選択したハーフトーンデータを図２に示す第一バッファ８１に出力する。
【００４８】
５．印刷処理
次に図９を参照しながらプリンター１における印刷処理について説明する。ここでの印刷処理は、ユーザーが操作パネル２０（図１参照）等を用いて、所望の画像データについて印刷指示操作を行うことで開始される。印刷処理を開始すると、ＣＰＵ１３は、まず、入出力部１１を介して印刷対象であるＲＧＢ形式の画像データを主記憶１４に読み込む（ステップＳ１）。
【００４９】
続いてＣＰＵ１３は、印刷設定に応じて、各種テーブルを生成し、セレクタを設定する初期化を実行する（ステップＳ２）。この初期化の際に、ブロック単位ハーフトーン処理部１６ａまたは画素単位ハーフトーン処理部１６ｂのうち印刷設定に対応するいずれか一方によってハーフトーン処理が実行されるように、図２に示すセレクタ７１が設定される。また、ブロック単位ハーフトーン処理部１６ａによってハーフトーン処理が実行される場合には、この初期化の際に、エンコードテーブルＥＴ、プレデコードテーブルＤＴ１等がブロック単位ディザマスクＤＭＢに基づいて生成される。
【００５０】
初期化を実行すると、ＣＰＵ１３は、色変換部１５に色変換を実行させる（ステップＳ３）。色変換部１５は、外部記憶１２に記憶された色変換テーブル１２０を参照して、画像データについて、ＲＧＢ形式の画像データをＣＭＹ形式に変換する。なお、ＣＰＵ１３は、ＲＧＢ形式またはＣＭＹ形式の画像データについて、解像度変換処理やスムージング処理などの画像処理を施してから色変換部１５に色変換を実行させてもよいし、色変換後に解像度変換処理やスムージング処理などの画像処理を施しても良い。
【００５１】
色変換処理を行うと、ＣＰＵ１３は、ブロック単位ハーフトーン処理部１６ａまたは画素単位ハーフトーン処理部１６ｂのいずれか一方にハーフトーン処理を実行させてＣＭＹ形式の画像データをハーフトーンデータに変換させる（Ｓ４）。ブロック単位ハーフトーン処理部１６ａによってハーフトーン処理が実行される場合、セレクタ７１（図２参照）からブロック単位ハーフトーン処理部１６ａにＣＭＹ形式の画像データが入力され、ハーフトーンデータは第二バッファ８２に出力される。画素単位ハーフトーン処理部１６ｂによってハーフトーン処理が実行される場合、セレクタ７１から画素単位ハーフトーン処理部１６ｂにＣＭＹ形式の画像データが入力され、ハーフトーンデータは第一バッファ８１に出力される。ブロック単位ハーフトーン処理部１６ａと画素単位ハーフトーン処理部１６ｂの作動の詳細については後述する。
【００５２】
ハーフトーン処理を行うと、ＣＰＵ１３は、配列変換部１７に配列変換処理を実行させる（ステップＳ５）。ブロック単位ハーフトーン処理部１６ａ（図２参照）によってハーフトーン処理が実行される場合、第二バッファ８２から入力されるハーフトーンデータがセレクタ７４から配列変換部１７のエンコードユニット７２に入力される。エンコードユニット７２は、このとき、画像データを１ライン単位で入力する。画素単位ハーフトーン処理部１６ｂによってハーフトーン処理が実行される場合、第一バッファ８１から入力されるハーフトーンデータがセレクタ７４から配列変換部１７に入力される。配列変換部１７は、入力されたハーフトーンデータをドットの吐出順に並び替えてドット形成データを主記憶１４に出力する。
【００５３】
配列変換処理を行うと、ＣＰＵ１３は、ドット補正部１８にドット補正処理を実行させる（ステップＳ６）。ブロック単位ハーフトーン処理部１６ａによってハーフトーン処理が実行される場合、第二バッファ８２（図２参照）に出力されたハーフトーンデータがセレクタ７６から配列変換部１７に入力される。画素単位ハーフトーン処理部１６ｂによってハーフトーン処理が実行される場合、第一バッファ８１（図２参照）に出力されたハーフトーンデータがセレクタ７６から配列変換部１７に入力される。ドット補正部１８は、入力されたハーフトーンデータに基づいて、主記憶１４に記憶されているドット形成データを補正する。ドット補正処理の詳細については後述する。
【００５４】
ドット補正処理を行うと、ＣＰＵ１３は、吐出制御部１９に印刷を実行させる（ステップＳ７）。吐出制御部１９は、ドット形成データに基づく制御信号を印刷ヘッド４７、キャリッジモーター３１、送紙モーター３２等に出力して印刷を実行する。
【００５５】
６．ブロック単位ハーフトーン処理
上述したブロック単位ハーフトーン処理部１６ａにおけるハーフトーン処理において、ハーフトーンデータ内の各ドットの配置は、大域的な画素単位ディザマスクＤＭＰ（図４Ａ参照）からハーフトーン処理対象の注目画素の位置に応じて切り出された局所的な閾値群（図４Ｂ参照）と、注目画素の階調値に対応する各サイズのドットの発生量との関係から決定される。以下、ブロック単位ハーフトーン処理部１６ａにおけるハーフトーン処理について図２を参照しながら詳細に説明する。
【００５６】
ＣＭＹ形式の画像データは、ブロック単位ディザマスクＤＭＢとエンコードテーブルＥＴを参照するエンコードユニット７２によって５ビットのエンコード値ＥＶに変換される。原理的には、注目画素の位置によってディザマスクＤＭＢから切り出す閾値群を決定し、注目画素の階調値に応じて、ドット発生量テーブルＤＧＴが１ブロック内の各サイズのドット発生量を定める。エンコード値ＥＶは、１ブロック内の各サイズのドットの数を示す値である。なお、エンコード値ＥＶは、８個のドットをブロック内のどこに配置するかまでは示していない。すなわちエンコードユニット７２によって、１ブロック内に配置すべき各サイズのインクドットの数が、それぞれの位置が未定の状態で、決定される。
【００５７】
具体的には、初期化の際に、ＣＰＵ１３は、階調値に応じて１ブロック内の各サイズのドットの数が求まるようにドット発生量テーブルＤＧＴに基づいてエンコードテーブルＥＴを生成する。そしてＣＰＵ１３は、１ライン分の階調値をエンコード値ＥＶに変換するにあたり、主記憶１４内のエンコードテーブルＥＴからその１ライン分のエンコード処理に必要なデータのみを画像処理ＩＣ１００が備えるＳＲＡＭに一時的に書き込む。このためにＣＰＵ１３は、エンコード処理の対象とする注目画素が、ブロック単位ディザマスクＤＭＢ中のどのブロックに該当するかを計算する。そしてエンコードユニット７２は、この部分的なエンコードテーブルＥＴを参照することでエンコード処理を行う。例えば、画像データの最上部のラインをエンコード処理する場合には、図５Ａに示したエンコードテーブルＥＴのブロック番号０から１２７（ブロック番号の最大値は、「８１９１」）までのエンコード値ＥＶがＳＲＡＭに読み込まれる。１ライン分のエンコード処理においては、エンコードテーブルＥＴ内の一部のブロックが繰り返し使用されることになるため、画像処理ＩＣ１００内のＳＲＡＭに予め必要なデータだけを読み込むことで、効率良く記憶容量を利用することが可能になる。なお、本実施例では、エンコードユニット７２は、１ライン単位でエンコード処理を行うものとするが、２ライン単位やそれ以上の単位、あるいは、画像全体について一括してエンコード処理を行うものとしてもよい。
【００５８】
そして、エンコードユニット７２は、ブロック番号に該当するエンコードテーブルＥＴの中の行を参照し、その行の代表階調値と注目画素の階調値とを、代表階調値の低い方から順に比較していく。この比較の結果、注目画素の階調値を初めて超えた（厳密に言えば、初めて「代表階調値≧画素階調値」となった場合に）代表階調値に対応するエンコード値ＥＶが、エンコード値ＥＶとなる。例えば、ブロック番号が「３」で、注目画素の階調値が「１９９」であれば、図５Ａの場合には、エンコード値ＥＶは「１６」となる。つまり、このエンコードテーブルＥＴには、各エンコード値ＥＶに対応付けて、そのエンコード値ＥＶに対応する階調値の範囲が代表階調値というパラメータにより記録されていることになる。
【００５９】
本実施例では、１ブロック内に形成する各サイズのドットの数を、第一バッファ８１で保持する０から３１のエンコード値ＥＶと０から８１９１のブロック番号によって管理する。エンコードユニット７２は、８ビットの階調値を５ビットのエンコード値ＥＶに変換すると、このエンコード値ＥＶを、所定の記憶領域に確保した第一バッファ８１に格納する。このように、本実施例では、プリンター１に入力した画像データを、８ビットのデータから５ビットのデータに変換して記憶できるので、記憶容量を効率よく利用できる。なお第一バッファ８１の領域を主記憶１４に設けても良いし、画像処理ＩＣ１００のＳＲＡＭに設けても良い。
【００６０】
デコードユニット７３は、エンコード値ＥＶを第一バッファ８１から入力し、プレデコードテーブルＤＴ１、ポストデコードテーブルＤＴ２、順序値テーブルＳＴを順次参照することで、エンコード値ＥＶをハーフトーンデータに変換し、所定の記憶領域に確保した第二バッファ８２に格納する。第二バッファ８２の領域は、主記憶１４に設けても良いし、画像処理ＩＣ１００のＳＲＡＭに設けても良い。ＣＰＵ１３はプレデコードテーブルＤＴ１、ポストデコードテーブルＤＴ２、順序値テーブルＳＴを初期化の際に生成しておく。デコード処理もエンコード処理と同様、１ライン単位で行われるため、生成したプレデコードテーブルＤＴ１、ポストデコードテーブルＤＴ２、順序値テーブルＳＴ内の１ライン分の必要なデータのみが随時ＳＲＡＭに書き込まれる。
【００６１】
例えば、ブロック番号が「３」の画素についてエンコード値ＥＶとして「１６」がデコードユニット７３に入力されると、デコードユニット７３は図５ＢのプレデコードテーブルＤＴ１を参照してインデックス値「１３０」を導出する。続いてデコードユニット７３は、図５ＣのポストデコードテーブルＤＴ２を参照してインデックス値「１３０」に対応するドット数データを導出する。さらにデコードユニット７３は、図４Ｄの順序値テーブルＳＴからブロック番号「３」の順序値データを取得し、ブロック内の各格子点（ａ〜ｈ）に、順序値データが示す順序でドット数データが示す個数分のドットを大きなサイズから順に配置することによりハーフトーンデータを生成する。その結果、閾値群内の閾値の低い格子点から順に大きなサイズのドットが配置されたハーフトーンデータが生成される。例えばブロック番号が「２」でインデックス値から導出されたドット数データが「０００００００００００１１０１１」だと仮定する。このドット数データは、２ビット区切で「１１」、「１０」、「０１」を各１組含むので、Ｌドット１個、Ｍドット１個、Ｓドット１個をブロックに配置するドット数データである。そして、ブロック番号「２」の順序値データに基づいてドット数データを「ｈｇｆｅｄｃｂａ」の順に並び替えると、すなわち、サイズの大きい順にドットを格子点ｄｆｈｂ・・・に配置すると、ハーフトーンデータ「０１００１０００００１１００００」が生成される。このようにデコードユニット７３は、エンコード値ＥＶをハーフトーンデータに変換する過程で、詳細には、ドット数データをハーフトーンデータに変換する際に、エンコードユニット７２が個数を決定した各サイズのドットについて、ブロック内の配置を決定する。
【００６２】
７．画素単位ハーフトーン処理の詳細
次に画素単位のハーフトーン処理について、図８、図１０を参照しながら詳細に説明する。図１０に示すように、ハーフトーン処理を開始するとき、ＣＰＵ１３は、まず、ハーフトーン処理の対象の画像データについて、誤差拡散処理の対象となる色成分を設定する初期化を実行する（Ｓ３１）。具体的には、セレクタ６２がディザ比較値と階調値とを出力する先を各色成分についてＣＰＵ１３が設定する。すなわちＣＰＵ１３は、誤差拡散処理の対象となる色成分のディザ比較値と階調値とが誤差拡散ユニット６４、６５、６６に出力され、誤差拡散処理の対象とならない色成分のディザ比較値が遅延バッファ６３に出力されるようにセレクタ６２を設定する。
【００６３】
誤差拡散処理の対象となる色成分には、ディザ処理と誤差拡散処理とを組み合わせたハーフトーン処理が施されることになる。また誤差拡散処理の対象とならない色成分には、ディザ処理だけがハーフトーン処理として施されることになる。また、ディザユニット６１の出力は、セレクタ６２だけでなく、最終的なハーフトーン処理結果を出力するためのセレクタ６７にも入力される。したがって、誤差拡散ユニット６４、６５、６６も遅延バッファ６３も使わずに、全ての色成分に対してディザ処理のみを高速なハーフトーン処理として施すことも可能である。全ての色成分に対してディザ処理のみをハーフトーン処理として施す場合、ＣＰＵ１３はセレクタ６２から出力されたディザ比較値が選択して出力されるようにセレクタ６７を設定すればよい。
【００６４】
いずれの色成分を誤差拡散処理の対象とするかについては、任意の設計事項である。例えば、印刷品質よりも印刷速度を重視する場合には、全ての色成分についてディザ処理だけをハーフトーン処理として施しても良い。またモノトーン画像のように画像データの大部分の色が特定の色域に集中しているような場合には、色が集中している色域に近い色成分について誤差拡散処理の対象として、印刷品質を高めてもよい。
【００６５】
なお、誤差拡散処理の対象となる色成分をどのような単位で設定するかについては、例えば、画像データ毎に誤差拡散処理の対象となる色成分を設定しても良いし、ページ毎に設定しても良いし、ファイル毎に設定しても良いし、バンド毎に設定しても良いし、起動毎に設定しても良いし、出荷後のセットアップ時に一度だけユーザーが設定するようにしてもよいし、工場組立時に一度だけ設定するようにしても良い。すなわち、ステップＳ３１の処理は、図３に示す印刷処理の実行前に実行されても良い。工場組立時に一度だけ設定する場合であっても、セレクタ６２を備えることにより、誤差拡散ユニットを設ける数を設計仕様に応じて容易に変更することもできるため、設計コストを低減できる。
【００６６】
誤差拡散処理の対象となる色成分を設定した後、ＣＰＵ１３が、色変換部１５から出力されるＣＭＹ形式の画像データに対してハーフトーン処理部１６にハーフトーン処理の実行を指示すると、ディザユニット６１は、ＣＭＹ形式の画像データについて、注目画素の位置を示す座標ｎ（ｘ、ｙ）と、注目画素の階調値Ｄｎとを取得する（ステップＳ３１）。
【００６７】
注目画素の座標ｎ（ｘ、ｙ）と階調値Ｄｎとを取得すると、ディザユニット６１は、ディザ処理を行う（ステップＳ３３）。ここでのディザ処理は、外部記憶１２に記憶されたディザマスク１２１を構成する複数の閾値のうちの、注目画素の座標ｎ（ｘ、ｙ）に対応する閾値ＴＨｎ＿ｄの値と、階調値Ｄｎとの大小関係を比較する処理である。この処理は、通常行われるディザ法によるドットのオン／オフ判断の処理と同一の処理である。ただし、本実施例のディザ処理は、後述する誤差拡散法によってドットのオン／オフが最終的に決定される可能性があるという点では、仮のディザ処理であり、また、誤差拡散法の閾値（誤差拡散閾値）を決定するための処理でもある。
【００６８】
ディザユニット６１からディザ比較値としてのオンまたはオフが画素毎、色成分毎に出力されると、セレクタ６２は、ステップＳ３１の設定に基づいて、色成分毎に出力先を選択してディザ比較値と階調値を出力する（ステップＳ３４）。すなわち、セレクタ６２は、色成分毎に異なるハーフトーン処理をする場合において、誤差拡散処理の対象である第二色成分については、ディザ比較値と階調値Ｄｎの出力先を誤差拡散ユニット６４、６５、６６のいずれかとし、誤差拡散処理の対象外である第一色成分については、ディザ比較値の出力先を遅延バッファ６３とする。
【００６９】
遅延バッファ６３は、誤差拡散処理の対象外の色成分のディザ比較値を取得すると、以下に述べる誤差拡散処理に必要なパイプラインステップ数に対応するクロック数だけディザ比較値を保持する（ステップＳ３５）。
【００７０】
誤差拡散ユニット６４、６５、６６は、誤差拡散処理の対象色成分のディザ比較値と階調値Ｄｎを取得すると、パイプライン処理により誤差拡散処理を実行する。パイプライン処理により複数の処理が同時に実行されるため、実際には図４に記載された順序で実行されるわけではないが、図４に記載された流れに沿って誤差拡散処理を説明する。
【００７１】
まず閾値比較部６６２は、ステップＳ３３のディザ処理によって定まったディザ比較値がドットオンであるかドットオフであるかを判定し（ステップＳ３６）、ドットオンであれば、誤差拡散処理に用いる閾値ＴＨｅを、階調値Ｄｎに対応する低位閾値ＴＨｅ＿Ｌに設定する（ステップＳ３７）。一方、ディザ比較値がドットオフであれば、誤差拡散処理に用いる閾値ＴＨｅを、階調値Ｄｎに対応する高位閾値ＴＨｅ＿Ｈに設定する（ステップＳ３８）。このように、本実施例においては、誤差拡散法に用いる閾値ＴＨｅをディザ処理の結果と階調値Ｄｎに応じて変化させる構成としている。かかる閾値ＴＨｅの設定は、外部記憶１２に記憶された誤差拡散閾値テーブル１２２を参照して行われる。
【００７２】
誤差拡散閾値テーブル１２２の具体例を概念的に図１１に示す。図示するように、誤差拡散閾値テーブル１２２では、階調値Ｄｎ（ここでは０〜２５５）と、低位閾値ＴＨｅ＿Ｌ及び高位閾値ＴＨｅ＿Ｈとが、それぞれ対応付けられている。図中に示す閾値ＴＨｅ＿Ｎは、通常の誤差拡散法で用いられる閾値の例を参考として表示するものであり、この例では、閾値ＴＨｅ＿Ｎは、階調値Ｄｎによらず一定値１２７．５となっている。
【００７３】
図１１に示す例では、高位閾値ＴＨｅ＿Ｈは、階調値Ｄｎが０の場合に値１２７．５をとり、階調値Ｄｎが０から大きくなるに従って大きくなり、最終的には、階調値Ｄｎが２５５の場合に値２０７．５となる。低位閾値ＴＨｅ＿Ｌは、階調値Ｄｎが０の場合には、高位閾値ＴＨｅ＿Ｈと同じ値１２７．５をとり、階調値Ｄｎが０から大きくなるに従って小さくなり、階調値Ｄｎが２５５の場合に値４７．５となる。
【００７４】
換言すれば、高位閾値ＴＨｅ＿Ｈと低位閾値ＴＨｅ＿Ｌとの差分（以下、閾値差分ΔＴＨｅともいう）は、階調値Ｄｎが０の場合に値０であり、階調値Ｄｎが大きくなるに従って大きくなり、階調値Ｄｎが２５５の場合に値８０となる。つまり、図１１の例では、誤差拡散閾値テーブル１２２は、注目画素の階調値Ｄｎの全範囲に亘って、階調値が大きいほど閾値差分ΔＴＨｅが大きくなるように（ここでは正比例の関係に）設定されている。このように、高位閾値ＴＨｅ＿Ｈと低位閾値ＴＨｅ＿Ｌとの大小関係は、互いの値が等しいか、高位閾値ＴＨｅ＿Ｈが低位閾値ＴＨｅ＿Ｌよりも相対的に大きくなるように設定される。ただし、高位閾値ＴＨｅ＿Ｈと低位閾値ＴＨｅ＿Ｌとが全ての階調値において等しい場合は除かれる。なお、階調値ごとの高位閾値ＴＨｅ＿Ｈ及び低位閾値ＴＨｅ＿Ｌの値は、かかる大小関係が保持されていれば、いかようにも設定することが可能である。なお、本実施例では、テーブルを参照することにより、階調値Ｄｎに応じた高位閾値ＴＨｅ＿Ｈ及び低位閾値ＴＨｅ＿Ｌを求める構成としたが、関数によりこれらを求めてもよい。
【００７５】
次に誤差加算部６６１は、階調値Ｄｎに、拡散誤差記憶部６６９に記憶されている他の画素の拡散誤差Ｅｄｎを加算し、階調値Ｄｎ＋を出力する（ステップＳ３９）。ここで、拡散誤差Ｅｄｎについては、注目画素の近傍にある先行画素について後述するステップＳ４４において決定されるものであり、その内容は後述する。階調値Ｄｎ＋は、先行画素に生じた拡散誤差Ｅｄｎを注目画素の階調値Ｄｎに加算した結果としての階調値である。
【００７６】
一方、オン誤差計算部６６３とオフ誤差計算部６６６は、それぞれ、注目画素に生ずる二値化誤差と拡散誤差を見積もる（ステップＳ４０）。二値化誤差Ｅｎは、先行画素に生じた拡散誤差Ｅｄｎを加算した階調値Ｄｎ＋とドットのオン／オフ結果（ここでは階調値２５５または０）との差分である。拡散誤差Ｅｄｎとは、上記ステップＳ３６において他の画素（後続画素）の階調値Ｄｎに加算する誤差である。本実施例では、二値化誤差Ｅｎを、ドットのオン／オフを閾値比較部６６２で未決定の周辺画素である、注目画素の右隣の画素に対して７／１６、左下の画素に対して３／１６、下の画素に対して５／１６、右下の画素に対して１／１６の割合で、拡散誤差Ｅｄｎとして配分する。これらの係数は拡散範囲係数テーブル６６５に記憶されている。すなわち、オン誤差計算部６６３およびオフ誤差計算部６６６は、階調値Ｄｎ＋と階調値２５５または０との差分である二値化誤差Ｅｎに、次式（１）〜（４）のように、拡散範囲係数テーブル６６５に記憶された係数を掛け合わせて、注目画素の各近傍画素について拡散誤差Ｅｄｎを導出する。なお、拡散範囲係数テーブル６６５はこれに限られるものではなく、異なる数字を用いてもよいし、拡散する範囲を広げたり、狭めたりしてもよい。
【００７７】
Ｅ１ｎ＝Ｅｎ×７／１６…（１）
Ｅ２ｎ＝Ｅｎ×３／１６…（２）
Ｅ３ｎ＝Ｅｎ×５／１６…（３）
Ｅ４ｎ＝Ｅｎ×１／１６…（４）
【００７８】
誤差拡散閾値を設定した閾値比較部６６２は、先行画素に生じた拡散誤差Ｅｄｎが加算された階調値Ｄｎ＋と、ステップＳ３８またはステップＳ３９で設定した閾値ＴＨｅとを比較する（ステップＳ４１）。その結果、階調値Ｄｎ＋が閾値ＴＨｅ以上であれば、注目画素のドットをオンに決定し（ステップＳ４２）、階調値Ｄｎ＋が閾値ＴＨｅ未満であれば、注目画素のドットをオフに決定する（ステップＳ４３）。
【００７９】
閾値比較部６６２は、注目画素についてドットオンまたはドットオフを決定すると、セレクタ６６８をその決定に応じて設定し、決定に応じた拡散誤差Ｅｄｎをセレクタ６６８から出力させる（ステップＳ４４）。すなわち、閾値比較部６６２がドットオンを決定した場合には、オン誤差記憶部６６４が保持している拡散誤差Ｅｄｎがセレクタ６６８から出力される。また閾値比較部６６２がドットオフを決定した場合には、オフ誤差記憶部６６７が保持している拡散誤差Ｅｄｎがセレクタ６６８から出力される。こうして決定された拡散誤差Ｅｄｎは、拡散誤差記憶部６６９に格納される。
【００８０】
以上述べたステップＳ３６〜Ｓ４４の処理は、誤差拡散法によるハーフトーン処理であり、色成分毎に誤差拡散ユニット６４、６５、６６がパイプライン処理により実行する。誤差拡散法については、周知の技術であるため、詳細な説明は省略するが、上述したとおり、注目画素の階調値の量子化誤差を周囲の画素に所定の配分比率で加算しながら、注目画素の階調値と所定の閾値とを比較して階調値を量子化する手法である。
【００８１】
注目画素について誤差拡散ユニット６４、６５、６６による誤差拡散処理が終了すると、セレクタ６７は、ステップＳ３５で遅延バッファ６３に格納されたドットオンまたはドットオフと、ステップＳ４４でセレクタ６６８から出力されるドットオンまたはドットオフとを、１つの注目画素のハーフトーン処理の結果として第一バッファ８１（図２参照）に出力する（Ｓ４５）。すなわち、セレクタ６７は、誤差拡散処理の対象になった色成分のハーフトーン処理の結果と、誤差拡散処理の対象外の色成分のハーフトーン処理の結果とを画素毎に合成して出力する。ここで、既に述べたとおり、誤差拡散ユニット６４、６５、６６のクロック数（パイプラインステップ数）に応じたクロック数だけ遅延バッファ６３はドットオンまたはドットオフを保持するように構成されているため、セレクタ６７には１つの注目画素の各色成分のドットのオン又はオフが同時に入力され、セレクタ６７は、１つの注目画素の各色成分のドットのオン又はオフを同時に出力する。その結果、画素毎にドットのオン又はオフを示すハーフトーンデータがハーフトーン処理部１６から出力される。
【００８２】
ここでハーフトーン処理部１６は、セレクタ６７から出力される各色成分のドットのオン又はオフを示す信号をパラレル出力しても良いし、画素毎にまとめてシリアル出力しても良い。パラレル配線の場合には、全色成分のドットのオン又はオフが並列に画素毎に同時に出力される。シリアル配線の場合には、全色成分のドットのオン又はオフが直列にまとまって画素毎に出力される。
【００８３】
そしてハーフトーン処理部１６は、全ての画素を順次注目画素として上記ステップＳ３２〜Ｓ４５の処理を繰り返す（ステップＳ４６）。全ての画素について上記ステップＳ３２〜Ｓ４４の処理が終了すると、ステップＳ３の画素単位のハーフトーン処理は終了する。
【００８４】
なお、セレクタ６７には、ディザユニット６１の出力も直接入力されるため、全ての色成分に対して誤差拡散処理を施さない場合には、上述したステップＳ３４〜ステップＳ４４の処理は実行されず、ディザユニット６１の出力がそのままハーフトーン処理の結果としてセレクタ６７から出力される。このため、全ての色成分に対して誤差拡散処理を施さない場合には、高速なハーフトーン処理が可能になる。
【００８５】
次に上述したディザ法と誤差拡散法とを組み合わせたハーフトーン処理の原理について、以下に説明する。上述したように、ステップＳ３７〜Ｓ３９の処理においては、注目画素の階調値Ｄｎがディザ処理の閾値ＴＨｎ＿ｄの値以上であれば、誤差拡散法に用いる閾値ＴＨｅは、低位閾値ＴＨｅ＿Ｌに設定され、階調値Ｄｎがディザ処理の閾値ＴＨｎ＿ｄの値未満であれば、閾値ＴＨｅは、高位閾値ＴＨｅ＿Ｈに設定される。閾値差分ΔＴＨｅ（＝ＴＨｅ＿Ｈ−ＴＨｅ＿Ｌ）は０以上の値である。
【００８６】
ここで、閾値差分ΔＴＨｅが値０である場合（ＴＨｅ＿Ｈ＝ＴＨｅ＿Ｌ）を考える。この場合（本実施例では階調値Ｄｎ＝０の場合）、ディザ処理の結果は、閾値ＴＨｅに影響を与えないのであるから、ステップＳ３３の処理は、誤差拡散法（ステップＳ３６〜Ｓ４４）による最終的なドットのオン又はオフの決定に対して意味を持たないことになる。このことは、ステップＳ３のハーフトーン処理において、最終的なドットのオン又はオフが、誤差拡散法のみによって決定されていることを意味する。
【００８７】
次に、閾値差分ΔＴＨｅが値０より大きい場合（ＴＨｅ＿Ｈ＞ＴＨｅ＿Ｌ）を考える。この場合（本実施例では階調値Ｄｎ≠０の場合）、ＣＰＵ１３は、ディザ処理によりドットオンと判断すると（階調値Ｄｎが閾値ＴＨｎ＿ｄの値以上である場合）、閾値ＴＨｅを相対的に小さい低位閾値ＴＨｅ＿Ｌに設定する。一方、ディザ処理によりドットオフと判断すると（階調値Ｄｎの階調値が閾値ＴＨｎ＿ｄの値未満である場合）、閾値ＴＨｅを相対的に大きい高位閾値ＴＨｅ＿Ｈに設定する。つまり、ＣＰＵ１３は、ディザ処理によりドットオンと判断すると、誤差拡散法によりドットがオンになりやすいように制御し、ディザ処理によりドットオフと判断すると、誤差拡散法によりドットがオフになりやすいように制御する。このことは、閾値差分ΔＴＨｅが値０である場合と比べて、階調値Ｄｎが大きいほど誤差拡散法による最終的なドットのオン／オフの判断結果がディザ処理によるドットのオン／オフの判断結果に近づくことを意味している。つまり、最終的なドットのオン／オフを、誤差拡散法の要素とディザ法の要素とを組み合わせて判断していることになる。
【００８８】
そして、この閾値差分ΔＴＨｅが大きくなるほど、ディザ法が支配的になっていき、閾値差分ΔＴＨｅが無限大になれば、完全にディザ法のみでドットのオン／オフのみを判断していることとなる。閾値差分ΔＴＨｅが無限大の場合、ディザ処理によりドットがオンと判断されれば、その後の誤差拡散法により必ずドットオンと判断され、ディザ処理によりドットをオフと判断されれば、その後の誤差拡散法により必ずドットオフと判断されるからである。
【００８９】
要するに、ディザ処理の結果に応じて誤差拡散処理の閾値ＴＨｅを変化させることにより、具体的には、閾値差分ΔＴＨｅの大きさを変化させることにより、ハーフトーン処理におけるディザ法の要素と誤差拡散法の要素とのそれぞれの寄与度を制御することができるのである。本実施例においては、こうした原理を利用して、階調値Ｄｎの階調値に応じて、ハーフトーン処理におけるディザ法の要素と誤差拡散法の要素とを動的に制御している。
【００９０】
そして、誤差拡散法においては閾値ＴＨｅが大きいほどドットがオフになりやすいため、ディザ処理の結果に応じて閾値ＴＨｅを変化させることにより、誤差拡散法によるドットの形成のされやすさの制御の程度を制御していると捉えることもできる。
【００９１】
低階調側での誤差拡散法のメリットとしては、例えば、印刷画質の良好な粒状性が得られる点が挙げられる。誤差拡散法として、拡散範囲切替誤差拡散法などを用いれば、さらに、画質の向上が期待できる。拡散範囲切替誤差拡散法は、公知の技術であるため、詳しい説明は省略するが、入力階調値と二値化結果の組み合わせに応じて誤差拡散範囲を切り替える手法であり、低階調値でドットオンになった時のみ広い範囲に誤差拡散することで、低階調領域の粒状性を改善し、ドットの非所望な連続、いわゆるワームの発生を抑制することができる。
【００９２】
高階調側でのディザ法のメリットとしては、例えば、ドット着弾位置のずれによる画質劣化を抑制できる点が挙げられる。このメリットは、ディザマスク１２１の上述した所定のドット形成特性に起因するものである。なお、高階調領域では、ディザ法によってドットデータを生成しても、インクのにじみによって印刷画質の粒状性が目立ちにくく、大きな問題とはならない。
【００９３】
ここで、注目画素に生ずる拡散誤差は、閾値比較部６６２において、先行画素に生じた拡散誤差Ｅｄｎが加算された注目画素の階調値Ｄｎ＋と閾値ＴＨｅとが比較された結果として最終的にドットオンまたはドットオフが決定されなければ本来算定することができない。すなわち、先行画素に生じた拡散誤差Ｅｄｎが定まるまでは、注目画素に生ずる拡散誤差を算定することができない。
【００９４】
注目画素に生ずる拡散誤差は、誤差加算部６６１において後続画素の階調値に加算されるところ、注目画素についてドットのオン／オフが決定されて注目画素に生ずる拡散誤差が算定されていなければ、後続画素の処理が滞ることになる。すなわち、閾値比較部６６２がドットのオン／オフを決定するまで待ってから注目画素に生ずる拡散誤差を導出するとすれば、ドットのオン／オフの決定を待つためのパイプラインバッファのクロック数が増加することで、誤差拡散処理の全体に必要なクロック数が増加する。そして誤差拡散処理の必要クロック数が増加すれば、誤差拡散処理の対象外の色成分について遅延バッファ６３がディザ比較値を保持するクロック数も増加させなければならず、ハーフトーン処理の全体として必要なクロック数が増加する。したがって、注目画素に生ずる拡散誤差を早い段階で算定しておくことにより、後続画素に対する誤差拡散処理を早く進行させることができる。
【００９５】
そこで、オン誤差計算部６６３は、閾値比較部６６２が注目画素のドットオンまたはドットオフを決定する前に、閾値比較部６６２がドットオンを決定した場合に注目画素に生ずる拡散誤差を予め導出し、オン誤差記憶部６６４に記憶させておく。またオフ誤差計算部６６６は、閾値比較部６６２が注目画素のドットオンまたはドットオフを決定する前に、閾値比較部６６２がドットオフを決定した場合に注目画素に生ずる拡散誤差を予め導出しておき、オフ誤差記憶部６６７に記憶させておく。このように閾値比較部６６２が注目画素のドットオンまたはドットオフを決定するための処理を実行している期間中に、拡散誤差を予め２通り見積もってそれぞれ保持しておくことで、後続画素に対する誤差拡散処理の開始を早めることができる。すなわち、誤差拡散ユニット６４、６５、６６のパイプラインステップ数を少なくすることができる。
【００９６】
８．ドット補正処理
次にドット補正処理（ステップＳ６）について図７を参照しながら詳細に説明する。ドット補正部１８は、第一バッファ８１または第二バッファ８２からハーフトーンデータを取得すると、注目ドット毎に、水平方向に隣接する２つのドットと注目ドットのドットパターンを、次のようにドットパターン識別テーブル８３を参照して判定する。以下、注目ドットとその水平方向に隣接する２つのドットとを注目ドットグループという。
【００９７】
ハーフトーンデータを取得すると、ドット補正部１８は、ノズル特性テーブル８４を参照して注目ドットを吐出するノズルのノズル特性を取得する。続いてドット補正部１８は、補正方法選択テーブル８５を参照してドットパターンとノズル特性に応じた補正方法に対応する補正値を取得する。例えば注目ドットグループのドットパターンが「１０００１１」で、注目ドットを吐出するノズルが「４」であった場合、ドット補正部１８は、図７Ａのドットパターン識別テーブル８３からドットパターン「３」を取得し、ノズル特性テーブル８４からノズル特性「１」を取得する。そしてドット補正部１８は、取得したドットパターン「３」とノズル特性「１」とを用いて補正方法選択テーブルから補正方法「１」に対応する補正値を取得する。
【００９８】
この補正値は、基本的には、注目ドットのドットサイズ値毎に隣接ドットのサイズアップを定めるデータである。ただしここでいう隣接ドットは、ハーフトーンデータの注目ドットグループ内の隣接ドットではなく、ドット形成データにおいて注目ドットに隣接するドットである。例えば図７Ｄに示す補正方法選択テーブル８５の補正方法「２」は、注目ドットがＬドット「１１」またはＭドット「１０」である場合に隣接ドットをＭドット「１０」相当サイズアップし、注目ドットがＳドット「０１」である場合に隣接ドットをＳドット「０１」相当サイズアップし、注目ドットがドット無し「００」である場合には隣接ドットをサイズアップしないことを定めている。図７Ｄに示す補正方法選択テーブル８５では、補正方法１は隣接ドットに対する補正量が大きな補正方法、補正方法２は隣接ドットに対する補正量が小さな補正方法、補正方法３は隣接ドットに対する補正量がゼロである補正方法（補正しない）となっている。例えば補正量が大きな補正方法は、注目ドットを吐出するノズルが目詰まりしている場合に適用でき、補正量が小さな補正方法は注目ドットを吐出するノズルの実口径が設計値よりも相当小さい場合に適用できる。
【００９９】
補正値を取得すると、ドット補正部１８は、注目ドット毎にドット形成データの隣接ドットのドットサイズ値と補正値とをＯＲ演算することによってドット形成データ８７を補正する。すなわちドット補正部１８は、処理対象のノズルに対応するハーフトーンデータの局所パターンであるドットパターンを判定した結果に基づいて、処理対象のノズルに隣接する他のノズルに対応するドット形成データを補正する。
【０１００】
ここで補正前後のドット形成データの変化例を示す図７Ｅに基づいて具体的に説明する。以下、注目ドットを吐出するノズルを注目ノズルといい、注目ノズルと同じ色成分のインクを吐出し注目ノズルに隣接する２つのノズルを第一隣接ノズル、第二隣接ノズルという。今、注目ノズルの吐出順「１」のドットが注目ドットで補正方法が「２」だとすると、注目ドットのドットサイズ値が「０１」なので、図７Ｄの補正方法選択テーブルによって補正値は「０１」となる。第一隣接ノズルと第二隣接ノズルの吐出順「１」のドットサイズはいずれも「００」であるため、補正後の第一隣接ノズルと第二隣接ノズルの吐出順「１」のドット形成データは、「０１」とのＯＲ演算により「０１」となる。注目ノズルの吐出順「２」のドットが注目ドットで補正方法が「２」のままだとすると、注目ドットのドットサイズ値が「１０」なので、図７Ｄの補正方法選択テーブルによって補正値は「１０」となる。第一隣接ノズルの吐出順「２」のドットサイズは「０１」であるため、補正後の第一隣接ノズルの吐出順「２」のドット形成データは「１０」とのＯＲ演算により「１１」となる。第二隣接ノズルの吐出順「２」のドットサイズは「１０」であるため、補正後の第二隣接ノズルの吐出順「２」のドット形成データは「１０」とのＯＲ演算により「１０」となる。注目ノズルの吐出順「３」のドットが注目ドットで補正方法が「１」になったとすると、注目ドットのドットサイズ値が「００」なので、図７Ｄの補正方法選択テーブルによって補正値は「００」となる。第一隣接ノズルの吐出順「３」のドットサイズは「００」であるため、補正後の第一隣接ノズルの吐出順「３」のドット形成データは「００」とのＯＲ演算により「００」となる。第二隣接ノズルの吐出順「３」のドットサイズは「１１」であるため、補正後の第二隣接ノズルの吐出順「３」のドット形成データは「１１」とのＯＲ演算により「１１」となる。
【０１０１】
このようにドット補正部１８は、ドット形成データにおける隣接ドットのドットサイズ値と補正値とをＯＲ演算することによって、隣接ノズルから吐出されるドットのサイズが注目ドットを吐出する注目ノズルの特性に応じて大きくなるようにドット形成データを補正する。なお、本実施例ではＯＲ演算によって補正するため、補正値が「１０」でも補正前のドットサイズ値が「１０」の場合にはドットサイズが変わらないが、ドットサイズ値と補正値とを加算して補正しても良い。
【０１０２】
そして、本実施例では、ドット形成データにおける隣接ドットのドットサイズ値を補正するにあたって、ハーフトーンデータのドットパターンに応じて補正値を変更する。すなわち、印刷媒体上のドットの配列を示すハーフトーンデータに応じた方法でドット形成データが補正されるため、印刷画質を向上させることができる。例えば、印刷媒体上の配列において、ドット無し、Ｍドット、ドット無しの順で３つのドットが連続する画像に対する補正と、印刷媒体上の配列において、Ｍドット、Ｍドット、Ｍドットの順で３つのドットが連続する画像に対する補正とでは、中央のＭドットを吐出するノズルの特性に応じて両端のドットに対する補正値を変更した方が、良好な画質が得られる場合がある。ところがこのような場合に、ハーフトーンデータにおいて注目ドットに隣接するドットが、ドット形成データにおいては隣接しないドットとなると、ハーフトーンデータを参照せずに適切な補正をすることが困難である。例えば、複数ライン分のドット形成データをバッファに記憶し、複数ラインについてハーフトーンデータの配列とドット形成データの配列を管理すれば、ハーフトーンデータを参照せずに適切な補正をすることも可能であるが、ハードウェアリソースの増大や、処理速度の低下をもたらす結果となる。本実施例によると、ハーフトーンデータのドットパターンに応じて補正値を選択するため、このような問題を回避しながら、印刷画質を向上させることができる。
【０１０３】
９．他の実施形態
尚、本発明の技術的範囲は、上述した実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【０１０４】
例えば、上記実施例では、ドット形成データにおいて注目ドットに隣接する２つのドットのサイズを注目ドット毎に補正したが、ドット形成データにおいて注目ドットに隣接しないドットのサイズを注目ドット毎に補正しても良い。具体的には、ドット形成データにおいて注目ドットに隣接する２つのドットに加えて、注目ドットに隣接するドットに隣接する他の２つのドットについてもドットのサイズを補正しても良い。
【０１０５】
また上記実施例では、画素単位ハーフトーン処理によって生成するハーフトーンデータの記憶領域（第一バッファ８１）とブロック単位ハーフトーン処理によって生成するハーフトーンデータの記憶領域（第二バッファ８２）とを別にしたが、排他制御される画素単位ハーフトーン処理とブロック単位ハーフトーン処理の結果は、同じ記憶領域に記憶しても良い。
【０１０６】
また上記実施例では、画素単位ハーフトーン処理とブロック単位ハーフトーン処理を使い分けられる構成としたが、常に画素単位ハーフトーン処理だけを使う構成としても良いし、常にブロック単位ハーフトーン処理を使う構成としても良い。また、画素単位ハーフトーン処理の具体的な方法も、ブロック単位ハーフトーン処理の具体的な方法も、上記実施例に限られるものではない。
【０１０７】
また本発明は、シリアルインクジェットプリンターのみならず、印刷色の階調をドットのオンとオフによって制御するプリンターであれば、ラインインクジェットプリンターにも適用できるし、ページプリンター（レーザープリンター）にも、サーマルプリンターにも適用できる。
【符号の説明】
【０１０８】
１…プリンター、１０…制御ユニット、１１…入出力部、１２…外部記憶、１３…ＣＰＵ、１４…主記憶、１５…色変換部、１６…ハーフトーン処理部、１６ａ…ブロック単位ハーフトーン処理部、１６ｂ…画素単位ハーフトーン処理部、１７…配列変換部、１８…ドット補正部、１９…吐出制御部、２０…操作パネル、３１…キャリッジモーター、３２…送紙モーター、４０…キャリッジ、４１-４６…インクカートリッジ、４７…印刷ヘッド、５２…主記憶、６１…ディザユニット、６２…セレクタ、６３…遅延バッファ、６４…第一誤差拡散ユニット、６５…第二誤差拡散ユニット、６６…第三誤差拡散ユニット、６７…セレクタ、７１…セレクタ、７２…エンコードユニット、７３…デコードユニット、７４…セレクタ、７６…セレクタ、８１…第一バッファ、８２…第二バッファ、８３…ドットパターン識別テーブル、８４…ノズル特性テーブル、８５…補正方法選択テーブル、８６…ドット変換テーブル、８７…ドット形成データ、９０…印刷ヘッド、１００…画像処理ＩＣ、１２０…色変換テーブル、１２１…ディザマスク、１２２…誤差拡散閾値テーブル、６６１…誤差加算部、６６２…閾値比較部、６６３…オン誤差計算部、６６４…オン誤差記憶部、６６５…拡散範囲係数テーブル、６６６…オフ誤差計算部、６６７…オフ誤差記憶部、６６８…セレクタ、６６８…セレクタ、６６９…拡散誤差記憶部、ＤＢＭ…ブロック単位ディザマスク、ＤＧＴ…ドット発生量テーブル、ＤＭＢ…ディザマスク、ＤＭＢ…ブロック単位ディザマスク、ＤＭＰ…画素単位ディザマスク、ＤＴ１…プレデコードテーブル、ＤＴ２…ポストデコードテーブル、ＥＤＴ…誤差拡散閾値テーブル、ＥＴ…エンコードテーブル、Ｐ…印刷媒体、ＳＴ…順序値テーブル
【図１】
2016171491.tif 000003
【図２】
2016171491.tif 000004
【図３】
2016171491.tif 000005
【図４】
2016171491.tif 000006
【図５】
2016171491.tif 000007
【図６】
2016171491.tif 000008
【図７】
2016171491.tif 000009
【図８】
2016171491.tif 000010
【図９】
2016171491.tif 000011
【図１０】
2016171491.tif 000012
【図１１】
2016171491.tif 000013