(57)【要約】【課題】画像データを印刷媒体上に形成されるドットの配置パターンに変換する処理を容易に実現する。【解決手段】大域ディザマトリクス内から所定個数の閾値のまとまりからなる小領域ディザマトリクスが取り出され、これに含まれる複数個の閾値がその大きさ順に並べ直して記録されているとともに、この小領域ディザマトリクス内の閾値の配置を表す配置復元データが記録されている初期データを準備する。そして、各小領域ディザマトリクスについて、画像データの取り得る値の範囲に亘って、前述した閾値データと配置データとに基づきドットの配置パターンを生成し、これを変換テーブルに記録する。【選択図】図８
2007194836.tif 000002
【特許請求の範囲】
【請求項１】
画像データを、印刷媒体上にドットを形成して印刷するためのデータに変換する画像処理装置であって、
所定の領域内にドットのオンオフを決定する閾値を配置した大域ディザマトリクスから、これより小さな領域であって、所定個数の閾値のまとまりからなる小領域ディザマトリクスを取り出し、該各小領域ディザマトリクスに含まれる複数個の閾値をその大きさ順に並べ直した閾値データと、該各小領域ディザマトリクス内の閾値の配置を表す配置復元データとが記録されている初期データを記憶する記憶手段と、
前記各小領域ディザマトリクスの範囲について、前記閾値データと前記配置復元データとに基づき、前記画像データを前記ドットの配置パターンに変換する変換テーブルを生成する変換テーブル生成手段と
を備える画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記変換テーブル生成手段は、
前記各小領域ディザマトリクスについて、前記画像データの取り得る値の範囲に亘って、予め定められた複数種類のドット毎の発生量およびその累積量を、前記閾値データに含まれる閾値と比較して、その大小関係に基づいて、前記複数種類のドット各々の発生個数を一義的に決定するドット個数決定手段と、
前記各小領域ディザマトリクスについて、前記画像データの取り得る値の範囲に亘って前記発生個数の決定された各ドットを、前記配置復元データに従って配置することで前記配置パターンを生成し、該配置パターンを、前記画像データの取り得る値と前記各小領域ディザマトリクスとに対応付けて前記変換テーブルに記録することにより、該変換テーブルを生成する手段とからなる
画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記ドット個数決定手段は、前記画像データと前記複数種類のドットの各発生量とが対応付けられた所定のテーブルを参照して、前記ドット毎の発生量を決定する
画像処理装置。
【請求項４】
請求項２または請求項３に記載の画像処理装置であって、
前記ドット個数決定手段は、
前記複数種類のドットのうち、一種類のドットについての前記発生量と、前記閾値データ内の閾値とを順次比較していき、該発生量と該閾値とが所定の関係になった際の比較回数に応じて前記一種類のドットについて、前記発生個数を決定する手段と、
前記複数種類のドットのうち、他の種類のドットについての前記発生量と、前記一種類のドットについて決定された発生量とを累積し、該累積された発生量と、前記閾値データ内の閾値のうち、既に比較された閾値を除いた閾値とを、順次比較していき、該累積された発生量と該閾値とが所定の関係になった際の比較回数に応じて前記他の種類のドットについて、前記発生個数を決定する手段とを備える
画像処理装置。
【請求項５】
請求項１ないし請求項４のいずれかに記載の画像処理装置であって、
前記記憶手段が記憶する前記初期データには、前記配置復元データとして、前記小領域ディザマトリクス内に配置されている各閾値に昇順に割り当てた順序値が、該小領域ディザマトリクス内の閾値の配置に従って記録されている
画像処理装置。
【請求項６】
請求項１ないし請求項４のいずれかに記載の画像処理装置であって、
前記記憶手段が記憶する前記初期データには、前記小領域ディザマトリクス内に配置されている各閾値に昇順に順序値が割り当てられ、該順序値が該小領域ディザマトリクス内で位置する場所を示す位置データが、前記配置復元データとして記録されている
画像処理装置。
【請求項７】
請求項１ないし請求項６のいずれかに画像処理装置であって、
前記記憶手段が記憶する前記初期データは、前記小領域ディザマトリクス内の閾値の数に応じて用意された複数のエントリを備えており、該各エントリの一部に前記閾値がそれぞれ記録され、該各エントリの他の部分に前記配置復元データがそれぞれ記録されている
画像処理装置。
【請求項８】
請求項７に記載の画像処理装置であって、
前記記憶手段が記憶する前記初期データの前記各エントリは、２バイトのデータ長を有しており、前記閾値は、それぞれ１バイト超のデータであり、前記配置復元データは、それぞれ１バイト未満のデータである
画像処理装置。
【請求項９】
請求項１に記載の画像処理装置が、画像データをドットの配置パターンに変換する変換テーブルを生成するために用いる初期データであって、
所定の領域内にドットのオンオフを決定する閾値を配置した大域ディザマトリクスから、これより小さな領域であって、所定個数の閾値のまとまりからなる小領域ディザマトリクスを取り出し、該各小領域ディザマトリクスに含まれる複数個の閾値をその大きさ順に並べ直した閾値データと、
前記各小領域ディザマトリクス内の閾値の配置を表す配置復元データと
を備える初期データ。
【請求項１０】
画像データを、印刷媒体上にドットを形成して印刷するためのデータに変換する変換テーブルを生成する方法であって、
所定の領域内にドットのオンオフを決定する閾値を配置した大域ディザマトリクスを用意し、
該大域ディザマトリクスから、これより小さな領域であって、所定個数の閾値のまとまりからなる小領域ディザマトリクスを取り出し、
該各小領域ディザマトリクスに含まれる複数個の閾値をその大きさ順に並べ直し、
該各小領域ディザマトリクス内の閾値の配置を表す配置復元データを生成し、
前記各小領域ディザマトリクスの範囲について、前記閾値データと前記配置復元データとに基づき、前記画像データを前記ドットの配置パターンに変換する変換テーブルを生成する
変換テーブル生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を表現する多階調の画像データを印刷媒体上に形成される複数種類のドットの配置パターンに変換するための変換テーブルを生成する技術に関する。
【背景技術】
【０００２】
近年、微小なインク滴を印刷媒体上に吐出して画像を形成するインクジェットプリンタの分野では、吐出するインク滴のサイズを可変させることにより、印刷媒体上に形成されるドットのサイズを多値化し、画質の向上を図っている。
【０００３】
例えば、本願出願人によって出願された下記特許文献１や特許文献２に記載の技術では、従来のディザ法や誤差拡散法といったハーフトーン処理とは異なる独自のハーフトーン処理方法を採用しつつ、インクヘッド内に設けられたピエゾ素子の駆動波形を可変させることにより、吐出するインク滴のサイズを、大、中、小、なし、の４種類に変化させている。
【０００４】
【特許文献１】特開２００５−２３６７６８号公報
【特許文献２】特開２００５−２６９５２７号公報
【０００５】
これらの文献に記載された画像処理技術では、まず、入力画像を構成する画素の階調値から、各サイズ毎のドット発生密度を所定の密度テーブルに基づき決定し（特許文献１の図２２参照）、かかる密度データと、局所的なディザマトリクス内の閾値とを比較して、そのディザマトリクス内に発生させる各サイズのドットの個数をカウントしている（特許文献１の図２１，図２３参照）。そして、そのディザマトリクス内におけるドットの発生順序を定義した順序値マトリクスと呼ばれるデータに基づき、発生個数のカウントされた各ドットを順次配置することで、印刷媒体上に形成するドットの配置パターンを生成している（特許文献１の図２５，図１５参照）。
【０００６】
しかし、このような従来の画像処理技術では、画像データをドットの配置パターンに変換するにあたり、画像データの階調値から密度データへの変換、閾値との比較、ドット個数のカウント等、多段階な処理が必要となり、処理全体が複雑なものとなっていた。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このような問題を考慮し、本発明が解決しようとする課題は、画像データを印刷媒体上に形成されるドットの配置パターンに変換する処理を容易に実現することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明の画像処理装置を次のように構成した。すなわち、
画像データを、印刷媒体上にドットを形成して印刷するためのデータに変換する画像処理装置であって、
所定の領域内にドットのオンオフを決定する閾値を配置した大域ディザマトリクスから、これより小さな領域であって、所定個数の閾値のまとまりからなる小領域ディザマトリクスを取り出し、該各小領域ディザマトリクスに含まれる複数個の閾値をその大きさ順に並べ直した閾値データと、該各小領域ディザマトリクス内の閾値の配置を表す配置復元データとが記録されている初期データを記憶する記憶手段と、
前記各小領域ディザマトリクスの範囲について、前記閾値データと前記配置復元データとに基づき、前記画像データを前記ドットの配置パターンに変換する変換テーブルを生成する変換テーブル生成手段と
を備えることを要旨とする。
【０００９】
また、本発明を方法の発明として捉えた変換テーブル生成方法は、
画像データを、印刷媒体上にドットを形成して印刷するためのデータに変換する変換テーブルを生成する方法であって、
所定の領域内にドットのオンオフを決定する閾値を配置した大域ディザマトリクスを用意し、
該大域ディザマトリクスから、これより小さな領域であって、所定個数の閾値のまとまりからなる小領域ディザマトリクスを取り出し、
該各小領域ディザマトリクスに含まれる複数個の閾値をその大きさ順に並べ直し、
該各小領域ディザマトリクス内の閾値の配置を表す配置復元データを生成し、
前記各小領域ディザマトリクスの範囲について、前記閾値データと前記配置復元データとに基づき、前記画像データを前記ドットの配置パターンに変換する変換テーブルを生成することを要旨とする。
【００１０】
本発明の画像処理装置および変換テーブル生成方法によれば、大域ディザマトリクスから取り出された小領域ディザマトリクス毎に、大きさ順に並べ直された閾値と、閾値の配置を表す配置復元データとが記録されている初期データを元に、画像データをドットの配置パターンに変換するための変換テーブルを予め生成することができる。従って、この変換テーブルを生成した後には、かかるテーブルを参照することで、画像データをドットの配置パターンに容易に変換することができ、印刷処理の高速化を図ることが可能になる。
【００１１】
上記構成の画像処理装置において、
前記変換テーブル生成手段は、
前記各小領域ディザマトリクスについて、前記画像データの取り得る値の範囲に亘って、予め定められた複数種類のドット毎の発生量およびその累積量を、前記閾値データに含まれる閾値と比較して、その大小関係に基づいて、前記複数種類のドット各々の発生個数を一義的に決定するドット個数決定手段と、
前記各小領域ディザマトリクスについて、前記画像データの取り得る値の範囲に亘って前記発生個数の決定された各ドットを、前記配置復元データに従って配置することで前記配置パターンを生成し、該配置パターンを、前記画像データの取り得る値と前記各小領域ディザマトリクスとに対応付けて前記変換テーブルに記録することにより、該変換テーブルを生成する手段とからなるものとしてもよい。
【００１２】
このような構成であれば、閾値データと配置復元データとに基づき複数種類のドットを配置してドットの配置パターンを生成することができるので、画質を向上することができる。
【００１３】
上記構成の画像処理装置において、
前記ドット個数決定手段は、前記画像データと前記複数種類のドットの各発生量とが対応付けられた所定のテーブルを参照して、前記ドット毎の発生量を決定するものとしてもよい。
【００１４】
このような構成によれば、画像データに対応したドット発生量を容易に決定することができるので、変換テーブルを高速に生成することが可能になる。
【００１５】
上記構成の画像処理装置において、
前記ドット個数決定手段は、
前記複数種類のドットのうち、一種類のドットについての前記発生量と、前記閾値データ内の閾値とを順次比較していき、該発生量と該閾値とが所定の関係になった際の比較回数に応じて前記一種類のドットについて、前記発生個数を決定する手段と、
前記複数種類のドットのうち、他の種類のドットについての前記発生量と、前記一種類のドットについて決定された発生量とを累積し、該累積された発生量と、前記閾値データ内の閾値のうち、既に比較された閾値を除いた閾値とを、順次比較していき、該累積された発生量と該閾値とが所定の関係になった際の比較回数に応じて前記他の種類のドットについて、前記発生個数を決定する手段とを備えるものとしてもよい。
【００１６】
このような構成によれば、一種類のドットの発生量と小領域ディザマトリクス内の閾値とを順次比較することで、その一種類のドットの発生個数が決定し、更に、他の種類のドットの発生量に前述した一種類のドットの発生量を累積した発生量と、既に比較された閾値を除いた閾値とを順次比較することで、他の種類のドットの発生個数が決定する。従って、小領域ディザマトリクス内に発生させる各ドットの個数を、そのマトリクス内に各ドットが重複無く配置可能な個数に決定することが可能になり、出力画像の画質を向上させることができる。
【００１７】
かかる構成において、サイズの異なる複数種類のドットが出力可能な場合には、大きなサイズのドットから発生個数を決定しておけば、出力画像上で最も目立つことになる大きなドットをディザマトリクス内の低い閾値の存在する場所に優先的に配置することが可能になる。ディザマトリクスには、低い閾値ほど分散性よく配置されていることが一般的であるため、こうすることで、目立つドットを分散させて配置することができ、出力画像の画質をより向上させることが可能になる。
【００１８】
上記構成の画像処理装置において、
前記記憶手段が記憶する前記初期データには、前記配置復元データとして、前記小領域ディザマトリクス内に配置されている各閾値に昇順に割り当てた順序値が、該小領域ディザマトリクス内の閾値の配置に従って記録されているものとしてもよい。
【００１９】
このような構成によれば、閾値の値順に一意に割り当てた順序値が、閾値の配置に従って初期データに記録されているので、その順序値が表す順序に従ってドットを配置していけば、容易にドットの配置パターンを生成することが可能になる。
【００２０】
上記構成の画像処理装置において、
前記記憶手段が記憶する前記初期データには、前記小領域ディザマトリクス内に配置されている各閾値に昇順に順序値が割り当てられ、該順序値が該小領域ディザマトリクス内で位置する場所を示す位置データが、前記配置復元データとして記録されているものとしてもよい。
【００２１】
このような構成によれば、順序値の位置を示す位置データが初期データに記録されているので、その位置に基づき、容易にドットの配置パターンを生成することが可能になる。
【００２２】
上記構成の画像処理装置において、
前記記憶手段が記憶する前記初期データは、前記小領域ディザマトリクス内の閾値の数に応じて用意された複数のエントリを備えており、該各エントリの一部に前記閾値がそれぞれ記録され、該各エントリの他の部分に前記配置復元データがそれぞれ記録されているものとしてもよい。
【００２３】
このような構成によれば、各エントリを順番に参照していくだけで、ドットの配置パターン生成時に必要な閾値や順序値を容易に取得することができる。
【００２４】
上記構成の画像処理装置において、
前記記憶手段が記憶する前記初期データの前記各エントリは、２バイトのデータ長を有しており、前記閾値は、それぞれ１バイト超のデータであり、前記配置復元データは、それぞれ１バイト未満のデータであるものとすることができる。
【００２５】
このような構成によれば、２バイト単位で初期データを管理することができるので、初期データを参照する際のアドレス計算等を容易に行うことが可能になる。また、閾値が１バイト超のデータであって、２バイトに満たない場合であっても、エントリ内の残余部分に１バイト未満の順序データを格納することができるので、効率的にデータを記憶することが可能になる。
【００２６】
なお、本発明は、上述した画像処理装置としての構成のほか、かかる画像処理装置が画像データをドットの配置パターンに変換する変換テーブルを生成するために用いる初期データや、画像処理装置が変換テーブルを生成するためのコンピュータプログラムとしても構成することができる。初期データやコンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。記録媒体としては、例えば、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００２７】
以下、上述した本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
Ａ．プリンタの構成：
Ｂ．印刷処理：
Ｃ．初期化処理：
Ｄ．デコードテーブル生成処理：
Ｅ．エンコードテーブル生成処理：
Ｆ．ハーフトーン処理：
Ｇ．効果：
Ｈ．変形例：
【００２８】
Ａ．プリンタの構成：
図１は、本発明の実施例としてのプリンタ１００を示す説明図である。プリンタ１００は、いわゆる複合機タイプのプリンタであり、光学的に画像を読み込むスキャナ１１０や、画像データの記録されたメモリカードＭＣを挿入するためのメモリカードスロット１２０、デジタルカメラ等の機器を接続するＵＳＢインタフェース１３０等を備えている。プリンタ１００は、スキャナ１１０によって取り込んだ画像や、メモリカードＭＣから読み取った画像、ＵＳＢインタフェース１３０を介してデジタルカメラから読み取った画像等を印刷用紙Ｐに印刷することができる。また、プリンタケーブル等によって接続された図示していないパーソナルコンピュータから入力した画像の印刷も行うことができる。
【００２９】
プリンタ１００は、印刷対象の画像の選択や、印刷用紙の種類、サイズの設定など、印刷に関する種々の設定操作を行うための操作パネル１４０を備えている。操作パネル１４０の中央部には、液晶モニタ１４５が備えられている。液晶モニタ１４５には、メモリカードＭＣ等から入力した画像の一覧や種々のグラフィカルインタフェース（ＧＵＩ）が表示される。
【００３０】
プリンタ１００は、後述するように、シアン（Ｃ）、ライトシアン（Ｌｃ）、マゼンタ（Ｍ）、ライトマゼンタ（Ｌｍ）、イエロ（Ｙ）、ブラック（Ｋ）の６色のインクを用いて、カラー印刷を行う機能を有している。また、プリンタ１００は、これら６色のインクを用いてカラー印刷を行う場合に、印刷用紙に吐出するドットのサイズを４段階に調整する機能を備える。以下の説明では、ドットのサイズを４段階に調整することを「４値化」という。
【００３１】
図２は、プリンタ１００の内部構成を示す説明図である。図示するように、プリンタ１００は、印刷用紙Ｐに印刷を行う機構として、インクカートリッジ２１２を搭載したキャリッジ２１０や、キャリッジ２１０を主走査方向に駆動するキャリッジモータ２２０、印刷用紙Ｐを副走査方向に搬送する紙送りモータ２３０等を備えている。
【００３２】
キャリッジ２１０には、シアン（Ｃ）、ライトシアン（Ｌｃ）、マゼンタ（Ｍ）、ライトマゼンタ（Ｌｍ）、イエロ（Ｙ）、ブラック（Ｋ）、の各インクが収容されたインクカートリッジ２１２が装着されている。キャリッジ２１０は、これらの色に対応して計６種類のインクヘッド２１１を備えている。インクカートリッジ２１２からインクヘッド２１１に供給されたインクは、図示しないピエゾ素子を駆動することで印刷用紙Ｐに吐出される。
【００３３】
キャリッジ２１０は、プラテン２７０の軸方向と並行に設置された摺動軸２８０に移動自在に保持されている。キャリッジモータ２２０は、制御ユニット１５０からの指令に応じて駆動ベルト２６０を回転させることで、プラテン２７０の軸方向と平行に、すなわち、主走査方向にキャリッジ２１０を往復運動させる。
【００３４】
紙送りモータ２３０は、制御ユニット１５０からの指令に応じてプラテン２７０を回転させることで、プラテン２７０の軸方向と垂直に印刷用紙Ｐを搬送する。つまり、紙送りモータ２３０は、キャリッジ２１０を相対的に副走査方向に移動させることができる。
【００３５】
プリンタ１００は、上述したインクヘッド２１１やキャリッジモータ２２０、紙送りモータ２３０の動作を制御するための制御ユニット１５０を備えている。制御ユニット１５０には、図１に示したスキャナ１１０やメモリカードスロット１２０、ＵＳＢインタフェース１３０、操作パネル１４０、液晶モニタ１４５が接続されている。
【００３６】
制御ユニット１５０は、ＣＰＵ１５１とＲＡＭ１５２とＲＯＭ１５３と画像処理ＡＳＩＣ１５５とによって構成されている。
【００３７】
ＲＯＭ１５３には、プリンタ１００の動作を全般的に制御するための制御プログラムが記憶されている。ＣＰＵ１５１はプリンタ１００の電源投入時に、この制御プログラムをＲＡＭ１５２に読み出して実行する。ＣＰＵ１５１は、この制御プログラムの実行により、後述する印刷処理や初期化処理等を行う。また、ＲＯＭ１５３には、後述する初期化処理時に使用されるディザデータＤｔｈＤＡＴやドット発生量テーブルＤＧＴＢＬが記憶されている。
【００３８】
ＣＰＵ１５１は、ＲＡＭ１５２を制御プログラム実行時の一時メモリとして用いるほか、メモリカードＭＣから読み出した画像データを一時的に記憶する用途にも用いる。また、ＣＰＵ１５１は、後述する初期化処理によって生成するエンコードテーブルＥｎｃＴＢＬやデコードテーブルＤｅｃＴＢＬをＲＡＭ１５２に記憶する。エンコードテーブルＥｎｃＴＢＬとデコードテーブルＤｅｃＴＢＬとは、本願の「変換テーブル」に対応するものである。
【００３９】
画像処理ＡＳＩＣ１５５は、ＣＰＵ１５１がメモリカードＭＣ等から入力した画像データに対して、色変換処理やハーフトーン処理を施し、印刷機構（インクヘッド２１１、キャリッジモータ２２０、紙送りモータ２３０）を制御して画像を印刷する一連の処理を行う集積回路である。
【００４０】
本実施例のプリンタ１００は、制御ユニット１５０によるインクヘッド２１１の制御により、印刷用紙Ｐに吐出するインク滴のサイズを４値化し、４種類のサイズのドットを形成することができる。以下では、４種類のサイズのドットを、ドットの形成されない場合も含め、サイズの小さい順に、「ドット無し」、「Ｓドット」、「Ｍドット」、「Ｌドット」というものとする。
【００４１】
図３は、異なる大きさのインク滴がインクヘッド２１１から吐出される原理を示す説明図である。図の上部に示した電圧波形において、破線で示した波形が通常のドットを吐出する際の波形である。この電圧波形中、区間ｄ２において、一旦、マイナスの電圧をピエゾ素子ＰＥに印加すると、インク通路６８の断面積を増大する方向にピエゾ素子ＰＥが変形する。そうすると、インクカートリッジ２１２からのインクの供給速度には限界があるため、インク通路６８の拡大に対してインクの供給量が不足する。この結果、図３下部の状態Ａに示した通り、ノズルＮｚ先端のインクの界面Ｍｅが、ノズルＮｚ内に引き寄せられ、凹んだ状態となる。
【００４２】
一方、実線で示す電圧波形を用い、区間ｄ１に示すようにマイナス電圧をピエゾ素子ＰＥに急激に印加すると、インクカートリッジ２１２からのインクの供給量はさらに不足した状態となる。従って、状態ａで示すように、インク界面Ｍｅは状態Ａに比べて更にノズルＮｚ内に引き寄せられた状態となる。次に、ピエゾ素子ＰＥに正の電圧が印加されると（区間ｄ３）、インク通路６８が狭められ、インクが吐出される。このとき、インク界面Ｍｅがあまり内側に凹んでいない状態（状態Ａ）からは、状態Ｂおよび状態Ｃに示すごとく大きなインク滴が吐出される。これに対して、インク界面Ｍｅが大きく内側に凹んだ状態（状態ａ）からは状態ｂおよび状態ｃに示すごとく小さなインク滴が吐出される。このように、ピエゾ素子ＰＥに印加する電圧波形を調整することで、インクヘッド２１１から大きさの異なるインク滴が吐出されることになる。
【００４３】
図４は、図２に示した画像処理ＡＳＩＣ１５５の詳細な構成を示す説明図である。図示するように、本実施例の画像処理ＡＳＩＣ１５５は、色変換ユニット３００と、ハーフトーン処理ユニット４００と、インク吐出制御ユニット５００とを備えている。
【００４４】
色変換ユニット３００は、Ｒ，Ｇ，Ｂの階調値の組み合わせによって表現されている画像データの色を、キャリッジ２１０に備えられたインクの各色についての階調値の組み合わせによって表現された色に変換する回路である。前述したように、プリンタ１００は、Ｃ，Ｍ，Ｙ，Ｋ，Ｌｃ，Ｌｍの最大６色のインクを用いて画像を印刷する。そこで、色変換ユニット３００は、ＲＧＢ各色によって表現された画像データを、これら６色の階調値によって表現された画像データに変換する。
【００４５】
色変換ユニット３００は、ＲＡＭ１５２に記憶された色変換テーブルＬＵＴと呼ばれるテーブルを参照することで前述した色変換を行う。この色変換テーブルＬＵＴには、ＲＧＢの階調値とＣＭＹＫＬｃＬｍの階調値とが予め対応付けて記憶されている。色変換ユニット３００は、この色変換テーブルＬＵＴを参照することにより、ＲＧＢ形式によって表された画像データを、迅速にＣＭＹＫＬｃＬｍ形式（以下、「ＣＭＹ形式」という）の画像データに変換することができる。色変換後の画像データは、各色、２５６段階（０〜２５５）の階調値を有するものとする。
【００４６】
ハーフトーン処理ユニット４００は、色変換ユニット３００によって色変換されたＣＭＹ形式の画像データを入力し、この画像データを、印刷媒体上に形成されるドットの配置パターンを表すドット配置データに変換する回路である。
【００４７】
ＣＭＹ形式の画像データは、画素毎に、ＣＭＹＫＬｃＬｍの各色それぞれ２５６階調を有するデータであるが、プリンタ１００は、吐出するインク滴のサイズを最大４段階に調整することができるにすぎず、ＣＭＹ形式のデータをそのまま用いて２５６階調の色を印刷用紙上に再現することができない。そのため、プリンタ１００は、ハーフトーン処理ユニット４００によって、ＣＭＹ形式の階調値を、単位面積あたりのドットの粗密を表すドット配置データに変換することで、中間調の色を表現する。
【００４８】
図５は、ドット配置データの一例を示す説明図である。この図では、ＣＭＹ形式の画像データの最も左上の画素（１，１）の色の階調値が「５２」の場合に、これをドット配置データに変換した例を図の左下に示した。このように、本実施例では、１つの画素の階調値が入力されると、４×２のドット群の中で、ＳドットやＭドット、Ｌドットなどを配置してその階調値が表す色を印刷用紙上に表現する。なお、前述したドット群のことを、以下では「ブロック」と呼ぶことがある。
【００４９】
ここで、ドット配置データの生成方法を簡単に説明する。ドット配置データ内の各ドットの配置は、大域的なディザテーブルからドット群のサイズおよび変換対象の画素の位置に応じて切り出された局所的な閾値群（図８（ｂ）参照）と、その画素の階調値に対応する各サイズのドットの発生量（図９参照）との関係から決定される。つまり、図９に示したドット発生量テーブルによって、階調値に応じた各サイズのドットの発生量を求め、その各ドットの発生量と閾値群内の閾値とを比較していき、１ブロック内に配置する各サイズのドットの個数を求める。そして、その個数分のドットを大きなサイズのドットから閾値の低い場所順に配置していくことでドット配置データが生成される。かかる処理の詳細な説明については後述する。
【００５０】
本実施例では、ＣＭＹ画像中の画素の階調値が同一の場合であっても、ハーフトーン処理の対象となる画素の位置が異なれば、適用される閾値群が異なるため、異なるドット配置データが生成される場合がある。例えば、図５において、ＣＭＹ画像の最も左上の画素以外に、もう一つ、「５２」の階調値を有する画素（ｊ，１）を示している。この画素に対応するドット配置データの例を図の右下に示したが、かかるドット配置データは、先に示したドット配置データとは異なるドット配置を有している。つまり、本実施例では、階調値の値に加えて、ハーフトーン処理対象となる画素の位置に応じて生成するドット配置データを変化させるので、従来の組織的ディザ法や濃度パターン法等よりも高画質な画像の出力を行うことが可能になる。
【００５１】
上述したように、本実施例では、ドット群の単位を４×２としたため、例えば、入力画像の解像度が、３６０ｄｐｉ×３６０ｄｐｉであれば、印刷用紙に出力される出力解像度は、１４４０ｄｐｉ×７２０ｄｐｉとなる。ドット群の横方向の解像度が縦方向の解像度よりも高いものとしたのは、階調変化に対する人間の目の追従性が縦方向よりも横方向に敏感であるためである。また、印刷用紙Ｐを副走査方向に移動させる制御よりも、キャリッジ２１０を主走査方向に移動させる制御の方が比較的容易であるため、横方向の解像度を縦方向の解像度よりも高くしている。しかし、もちろん、ドット群のサイズは、４×２以外にも、縦横比が同一となる４×４や２×２などとすることも可能である。なお、以下の説明では、ＲＧＢ形式あるいはＣＭＹ形式の画像の構成要素の最小単位を「画素」といい、印刷用紙Ｐに形成される出力画像の構成要素の最小単位を「ドット」というものとする。なお、ＲＧＢ形式あるいはＣＭＹ形式の画像中の複数の画素を４×２や２×２のブロックとしてまとめ、その複数の画素を代表する画素（例えば、ブロック内の画素の階調値を平均化したもの）を上述した「画素」として扱うものとしてもよい。
【００５２】
説明を図４に戻す。ハーフトーン処理ユニット４００は、エンコードユニット４１０とデコードユニット４２０とを備えている。
【００５３】
ハーフトーン処理ユニット４００は、色変換ユニット３００からＣＭＹ形式の画像データを入力すると、この画像データをエンコードユニット４１０に入力する。
【００５４】
エンコードユニット４１０は、入力された画像データを構成する各画素の階調値を、ＲＡＭ１５２に記憶されたエンコードテーブルＥｎｃＴＢＬを参照することで、５ビットのデータで表されるエンコード値に変換する。かかる変換処理を、以下、「エンコード処理」という。エンコード処理によって得られるエンコード値は、印刷用紙上に、どのようなドット配置データ（図５参照）を形成するかを指し示す値である。エンコード値が５ビットのデータ幅で収まるのは、後述するデコードテーブル生成処理によって、４×２のドット群内に各サイズのドットを配置したときの組み合わせの数が、結果的に、最大で３２の組み合わせとなるからである。
【００５５】
エンコードユニット４１０は、８ビットで表される階調値を５ビットのエンコード値に変換すると、このエンコード値を、ＲＡＭ１５２の所定領域に確保した中間バッファＢＦに中間データとして格納する。このように、本実施例では、メモリカードＭＣ等から入力した画像データを、８ビットのデータから５ビットのデータに変換してＲＡＭ１５２に記憶することができるので、ＲＡＭ１５２の使用容量が削減され、コストダウンを図ることが可能になる。エンコード処理の過程で参照されるエンコードテーブルＥｎｃＴＢＬの生成方法や、エンコード処理の詳細については後で説明する。
【００５６】
デコードユニット４２０は、中間バッファＢＦからエンコード値を読み込み、ＲＡＭ１５２に記憶された所定のデコードテーブルＤｅｃＴＢＬを参照することで、このエンコード値を、４×２ドットのドット配置データに変換する。かかる変換処理のことを、以下、「デコード処理」という。デコード処理の過程で参照されるデコードテーブルＤｅｃＴＢＬの生成方法や、デコード処理の詳細については後で説明する。
【００５７】
デコードユニット４２０は、エンコード値をドット配置データに変換すると、そのドット配置データをインク吐出制御ユニット５００に出力する。
【００５８】
インク吐出制御ユニット５００は、インクヘッド２１１、キャリッジモータ２２０、紙送りモータ２３０を制御して、ハーフトーン処理ユニット４００から入力したドット配置データに基づき印刷用紙上にドットを形成する。インク吐出制御ユニット５００は、入力したドット配置データに記録されたドットの種類に応じて、インクヘッド２１１内のピエゾ素子に印加する電圧波形を調整してインク滴を吐出し、サイズの異なるドットの打ち分けを行う。こうすることで、本実施例のプリンタ１００は、印刷用紙に対してカラー印刷を行う。
【００５９】
Ｂ．印刷処理：
図６は、プリンタ１００が実行する印刷処理のフローチャートである。この印刷処理は、ユーザによる操作パネル１４０の操作によって印刷する画像データが選択され、所定の印刷ボタンが操作された場合に、ＣＰＵ１５１によって実行される処理である。
【００６０】
この印刷処理が実行されると、ＣＰＵ１５１は、まず、図４に示したエンコードテーブルＥｎｃＴＢＬやデコードテーブルＤｅｃＴＢＬを生成するための初期化処理を行う（ステップＳ１０）。かかる初期化処理の詳細な説明は後述する。
【００６１】
初期化処理が完了すると、ＣＰＵ１５１は、ユーザによって指定された画像データをメモリカードＭＣ等から入力する（ステップＳ２０）。そして、入力した画像データを、画像処理ＡＳＩＣ１５５に出力する。すると、画像処理ＡＳＩＣ１５５では、色変換ユニット３００による色変換処理（ステップＳ３０）、および、ハーフトーン処理ユニット４００によるハーフトーン処理（ステップＳ４０）が行われ、入力画像の画素毎にドット配置データが生成される。画像処理ＡＳＩＣ１５５が行うハーフトーン処理の詳細な説明は後述する。
【００６２】
ハーフトーン処理ユニット４００によってドット配置データが生成されると、インク吐出制御ユニット５００によってインクの吐出制御が行われる（ステップＳ５０）。この結果、印刷用紙に対してカラー画像が印刷される。
【００６３】
Ｃ．初期化処理：
図７は、上述した印刷処理のステップＳ１０で実行される初期化処理の詳細を示すフローチャートである。図示するように、この初期化処理が実行されると、まず、ＣＰＵ１５１は、ＲＯＭ１５３から、エンコードテーブルＥｎｃＴＢＬやデコードテーブルＤｅｃＴＢＬの生成元となるディザデータＤｔｈＤＡＴを入力する（ステップＳ１００）。
【００６４】
図８は、本願の「初期データ」に対応するディザデータＤｔｈＤＡＴのデータ構造およびその生成原理を示す説明図である。ディザデータＤｔｈＤＡＴのデータ構造の説明の前に、まず、ディザデータＤｔｈＤＡＴの生成元となる大域的ディザテーブルＷＤＴＢＬについて説明する。図８（ａ）には、この大域的ディザテーブルＷＤＴＢＬの模式図を示した。本実施例では、大域的ディザテーブルＷＤＴＢＬは、横１２８×縦３２の計４０９６個の要素を有するものとする。この大域的ディザテーブルＷＤＴＢＬは、従来のハーフトーン技術として知られた組織的ディザ法で用いられるディザテーブルと同種のテーブルである。そのため図示した大域的ディザテーブルＷＤＴＢＬにおいても、多階調を有する画像データを２値化する際に、白黒ドットの分散性が最も高まるように、０から４０９５までの４０９６種類（＝１２８×３２）の閾値が各要素に配置されている。なお、図８（ａ）における各閾値の図示は省略している。
【００６５】
ディザデータＤｔｈＤＡＴの生成方法は次の通りである。すなわち、まず、大域的ディザテーブルＷＤＴＢＬを、４×２の要素を１つのブロックとして、計５１２（＝（１２８／４）×（３２／２））個のブロックに分割し、各ブロックに対してブロック番号をつける。本実施例では、図の上部に示すように、大域的ディザテーブルＷＤＴＢＬの最も左上に位置するブロックにブロック番号「１」を与え、その右隣に位置するブロックにブロック番号「２」を与えるものとした。
【００６６】
こうして、各ブロックにブロック番号をつけると、図８（ｂ）に示すように、大域的ディザテーブルＷＤＴＢＬから、これよりも領域の小さい小領域ディザマトリクスである閾値群として各ブロックを取り出し、この閾値群内に記録された８つの閾値をその閾値群のブロック番号に対応するディザデータＤｔｈＤＡＴに昇順に並び直して記録する。大域的ディザテーブルＷＤＴＢＬには閾値として、０から４０９５までの値が記録されているため、閾値は、最大で１２ビットのデータ容量を有することになる。そこで、本実施例では、図８（ｄ）に示すように、１つのディザデータＤｔｈＤＡＴは、８エントリ×２バイトの計１６バイトのデータ容量を有するものとし、１エントリ内の下位１２ビットに閾値データを記録していくものとした。
【００６７】
前述のように、閾値は１２ビットのデータであり、ディザデータＤｔｈＤＡＴの各エントリは、２バイトの容量を有するものとしたため、各エントリにつき、４ビットの容量が残存する。そこで、本実施例では、この残存した４ビットの部分に、「順序値」と呼ばれるデータを記録する。この順序値は、本願の「配置復元データ」に対応するものである。
【００６８】
図８（ｃ）は、順序値の例を示している。この順序値は、図８（ｂ）に示す閾値群を元に生成されている。つまり、例えば、図８（ｂ）に示した閾値群の全要素について同時に、階調値を０から４０９５まで上げていくと、２３，４７２，１０１０，１３２２、…、の順に、階調値が閾値を超えることになる。こうして、階調値が閾値を超える順番を定義したものが、図８（ｃ）に示す順序値である。つまり、この順序値は、対応するブロック内の閾値の配置を表すとともに、そのブロック内にドットを発生させる場合に、ブロック内の各要素にドットが発生していく順序を表していることになる。１つのブロックは、８つの要素から構成されるため、順序値は、０から７まで計８種類の値をとる。つまり、順序値の値は、最大３ビットのデータで表すことができるため、ディザデータＤｔｈＤＡＴの各エントリに残存した上位４ビットに記録することが可能となる。
【００６９】
順序値は、図８（ｃ）に示すように、最も左上の要素から右下の要素にかけて、順番に取り出され、その値が、図８（ｄ）に示すように、ディザデータＤｔｈＤＡＴの各エントリの上位４ビットに記録される。
【００７０】
以上で説明したように、ディザデータＤｔｈＤＡＴは、大域的ディザテーブルＷＤＴＢＬから取り出されたブロック毎に、昇順に記録された８つの閾値と、ドットの発生順序を定義した８つの順序値とを有している。なお、８つの閾値は昇順に記録され、順序値はその位置に応じて記録されていることから、ディザデータＤｔｈＤＡＴの１エントリ内に記録されている１組の閾値と順序値とは、その組み合わせに関連性はないことになる。
【００７１】
図７のステップＳ１００では、ＲＯＭ１５３から全てのブロック番号のディザデータＤｔｈＤＡＴがＲＡＭ１５２に入力されるものとする。こうして入力されたディザデータＤｔｈＤＡＴ内の閾値は、後述するエンコード閾値テーブルＥＴＴＢＬの生成に用いられることになり、順序値は、後述するデコードテーブルＤｅｃＴＢＬの生成に用いられることになる。各ディザデータＤｔｈＤＡＴは、ＲＡＭ１５２内に、ブロック番号順に連続して入力される。そのため、ディザデータＤｔｈＤＡＴ自体にブロック番号が付されていなくても、ＣＰＵ１５１は、１６バイト（＝２バイト×８エントリ）にブロック番号を乗算する所定のアドレス計算を行うことにより、任意のブロック番号のディザデータＤｔｈＤＡＴをＲＡＭ１５２から読み出すことができる。もとより、ブロック番号とこれに対応するディザデータＤｔｈＤＡＴとを組み合わせて記憶するものとしてもよい。
【００７２】
ここで、説明を図７に戻す。ＣＰＵ１５１は、ＲＯＭ１５３からディザデータＤｔｈＤＡＴを入力すると、続いて、エンコードテーブルＥｎｃＴＢＬやデコードテーブルＤｅｃＴＢＬの生成元となるドット発生量テーブルＤＧＴＢＬをＲＯＭ１５３からＲＡＭ１５２に入力する（ステップＳ１１０）。
【００７３】
図９は、ドット発生量テーブルＤＧＴＢＬの一例を示す説明図である。図示するように、このドット発生量テーブルＤＧＴＢＬには、横軸に示した入力階調値ＴＤに応じて、Ｓドット、Ｍドット、Ｌドットの発生量がそれぞれ縦軸に定義されている。この図によれば、入力階調値ＴＤが０から７０程度までは、Ｓドットのみが発生し、その後、入力階調値ＴＤが１２０程度までは、ＳドットとＭドットの両者が発生することがわかる。また、入力階調値ＴＤが１１０程度になると、ＳドットとＭドットに加えて、Ｌドットが発生するようになり、入力階調値ＴＤが概ね１８０以降になると、Ｌドットのみが発生することがわかる。なお、縦軸に示すドット発生量は、後述するドット数カウント処理におけるディザデータＤｔｈＤＡＴ内の閾値との比較が可能なように、大域的ディザテーブルＷＤＴＢＬに記録された閾値と同じ０から４０９５までの値をとる。
【００７４】
図９には、Ｓドット，Ｍドット，Ｌドットの発生量とともに、これらのドットが印刷媒体に形成される際に吐出されるインクの総重量の変化を示した。図示したインク総重量の変化によれば、入力階調値ＴＤが増加するにつれ、インクの総重量が徐々に増加していくことになる。各サイズのドット発生量は、かかる総重量の変化にあわせて、それぞれの発生量が設定されている。なお、このドット発生量テーブルＤＧＴＢＬは、プリンタ１００がサポートしている印刷用紙の種類に応じて用意されるものとしてもよい。この場合、印刷時の設定において、ユーザによって選択された用紙の種別に応じて、対応するドット発生量テーブルＤＧＴＢＬを入力するものとする。こうすることで、選択された印刷用紙に適した印刷を行うことが可能になる。
【００７５】
説明を図７に戻す。以上の処理によってディザデータＤｔｈＤＡＴとドット発生量テーブルＤＧＴＢＬとを入力すると、ＣＰＵ１５１は、入力したディザデータＤｔｈＤＡＴとドット発生量テーブルＤＧＴＢＬとに基づき、デコードテーブルＤｅｃＴＢＬとエンコード閾値テーブルＥＴＴＢＬとを生成する処理を行う（ステップＳ１２０）。以下では、かかるステップＳ１２０による処理を、単純に「デコードテーブル生成処理」という。
【００７６】
デコードテーブル生成処理は複雑な処理であるため、詳細な説明は後に記述するものとし、ここでは、このデコードテーブル生成処理の結果得られるデコードテーブルＤｅｃＴＢＬとエンコード閾値テーブルＥＴＴＢＬのデータ構造について説明する。
【００７７】
図１０は、デコードテーブルＤｅｃＴＢＬのデータ構造を示す説明図である。図示するように、このデコードテーブルＤｅｃＴＢＬには、ブロック番号とエンコード値とに対応付けて、ブロック内に配置するドットの種類および位置を表すドット配置データが記録されている。図４に示したデコードユニット４２０は、処理対象の画素の位置に対応するブロック番号と、中間バッファＢＦから入力したエンコード値とに基づき、このデコードテーブルＤｅｃＴＢＬを参照することで、印刷媒体に形成すべきドットの配置パターンを容易に取得することができる。
【００７８】
図１１は、エンコード閾値テーブルＥＴＴＢＬのデータ構造を示す説明図である。図示するように、このエンコード閾値テーブルＥＴＴＢＬには、ブロック番号とエンコード値とに対応付けて、０から２５５までの値を表す入力階調値ＴＤの値が記録されている。このエンコード閾値テーブルＥＴＴＢＬは、後述するエンコードテーブルＥｎｃＴＢＬの生成にのみ利用されるデータであるため、ハーフトーン処理ユニット４００によるハーフトーン処理に用いられることはない。そのため、ここでは、エンコード閾値テーブルＥＴＴＢＬ自体の意義には言及しない。
【００７９】
説明を図７に戻す、ＣＰＵ１５１は、ステップＳ１２０のデコードテーブル生成処理において、エンコード閾値テーブルＥＴＴＢＬとデコードテーブルＤｅｃＴＢＬとを生成すると、かかる処理によって生成されたエンコード閾値テーブルＥＴＴＢＬを用いて、エンコードテーブルＥｎｃＴＢＬの生成を行うエンコードテーブル生成処理を実行する（ステップＳ１３０）。このエンコードテーブル生成処理も複雑な処理であるため、詳細な説明は後に記述する。ここでは、エンコードテーブル生成処理の結果得られるエンコードテーブルＥｎｃＴＢＬのデータ構造について説明する。
【００８０】
図１２は、エンコードテーブルＥｎｃＴＢＬのデータ構造を示す説明図である。図示するように、このエンコードテーブルＥｎｃＴＢＬには、ブロック番号とＣＭＹの階調値とに対応付けて、５ビットの値で表されるエンコード値が記録されている。
【００８１】
図１３は、エンコードテーブルＥｎｃＴＢＬに記録されたエンコード値の変化を模式的に示す説明図である。図１３には、ブロック番号がＮ１からＮ５までの５つのブロックについて、階調値に応じたエンコード値の変化の例を示している。図示の便宜のため、エンコード値の変化は、ブロック毎に縦軸をずらして描いている。図示するように、各ブロックとも、階調値が増加すれば、エンコード値の値も増加しているが、その増加の態様は、ブロック毎に異なっている。各ブロックにおけるエンコード値の値は、図１１に示したデコードテーブルＤｅｃＴＢＬ中のドット配置データを示す値である。そのため、ＣＭＹ画像の中で、同じ階調値を有する画素があっても、その画素の位置が異なれば、適用するブロック番号も異なり、それらの画素に対応する印刷媒体上の位置には、異なるドット配置データが形成されることになる。
【００８２】
説明を図７に戻す。ＣＰＵ１５１は、以上の処理によって、デコードテーブルＤｅｃＴＢＬとエンコードテーブルＥｎｃＴＢＬとを生成すると、これらのテーブルをＲＡＭ１５２に記憶する（ステップＳ１４０）。こうして、ＲＡＭ１５２に記憶されたエンコードテーブルＥｎｃＴＢＬとデコードテーブルＤｅｃＴＢＬとは、図４に示したハーフトーン処理ユニット４００におけるエンコード処理とデコード処理とに供されることになる。なお、デコードテーブル生成処理で生成されたエンコード閾値テーブルＥＴＴＢＬについてはエンコード処理にもデコード処理にも用いられないため、エンコードテーブルＥｎｃＴＢＬの生成後にＲＡＭ１５２から消去するものとしてもよい。
【００８３】
Ｄ．デコードテーブル生成処理：
図１４は、図７のステップＳ１２０で実行されるデコードテーブル生成処理の詳細を示すフローチャートである。この処理は、図８に示した全てのブロック（ブロック番号１〜４０９６）についてブロック毎に行われる処理である。
【００８４】
この処理が実行されると、ＣＰＵ１５１は、まず、以降の処理で用いられる変数として、エンコード値ＥｎｃＤａｔａを「０」とし、現在のブロック内に発生する各サイズのドット数を「０」とする（ステップＳ２００）。そして、更に、入力階調値ＴＤを「０」とする（ステップＳ２１０）。
【００８５】
次に、ＣＰＵ１５１は、上記ステップＳ２１０で設定した入力階調値ＴＤに応じて現在のブロック内に発生する各サイズのドットの数を一義的に決定するドット数カウント処理を行う（ステップＳ２２０）。
【００８６】
図１５は、上記ステップＳ２２０におけるドット数カウント処理の詳細を示すフローチャートである。かかる処理では、まず、ＣＰＵ１５１は、上記ステップＳ２１０で設定された入力階調値ＴＤに対応する各サイズのドット発生量をドット発生量テーブルＤＧＴＢＬ（図９参照）から取得する（ステップＳ４００）。
【００８７】
各サイズのドット発生量を取得すると、ＣＰＵ１５１は、現在のブロック番号に対応し、ソートされた閾値を有するディザデータＤｔｈＤＡＴ（図８（ｄ）参照）をＲＡＭ１５２から読み込む。そして、そのディザデータＤｔｈＤＡＴ内で参照するエントリ番号ｎを「０」とし、更に、各サイズのドットのカウント数（ｄｏｔＬ，ｄｏｔＭ，ｄｏｔＳ）を「０」として初期化する（ステップＳ４１０）。
【００８８】
エントリ番号ｎとカウント数とを設定すると、ＣＰＵ１５１は、現在のエントリ番号ｎに対応する閾値を、ディザデータＤｔｈＤＡＴから読み込む。そして、上記ステップＳ４００で取得したＬドットのドット発生量が、この閾値よりも大きいか否かを判断する（ステップＳ４２０）。この判断の結果、Ｌドットの発生量が、エントリ番号ｎの閾値（すなわち、ｎ番目の閾値）よりも大きければ（ステップＳ４２０：Ｙｅｓ）、Ｌドットのカウント数ｄｏｔＬをインクリメントする（ステップＳ４３０）。すなわち、この場合、４×２のドット配置データ内に発生するＬドットの数が１つ増加することになる。
【００８９】
Ｌドットのカウント数ｄｏｔＬをインクリメントすると、ＣＰＵ１５１は、現在のエントリ番号ｎが「７」であるかを判断する（ステップＳ４４０）。その結果、エントリ番号ｎが「７」であれば、ディザデータＤｔｈＤＡＴ内の全ての閾値を参照したことになり、ドット数のカウントが終了したと判断できるので、処理を後述するステップＳ５００に進める。一方、ステップＳ４４０において、エントリ番号ｎが「７」でなければ、次のエントリ番号の閾値とドット発生量との比較を続行するため、エントリ番号ｎをインクリメントし（ステップＳ４５０）、処理を上記ステップＳ４２０に戻す。
【００９０】
上記ステップＳ４２０において、Ｌドットの発生量が、ｎ番目の閾値以下であれば（ステップＳ４２０：Ｎｏ）、ＣＰＵ１５１は、次に、ドット発生量テーブルＤＧＴＢＬから取得したＭサイズとＬサイズのドット発生量の累積量が、ｎ番目の閾値を超えたか否かを判断する（ステップＳ４６０）。その結果、ＭサイズとＬサイズのドット発生量の累積量が、ｎ番目の閾値よりも大きいと判断した場合には（ステップＳ４６０：Ｙｅｓ）、Ｍドットのカウント数ｄｏｔＭをインクリメントする（ステップＳ４７０）。すなわち、この場合、４×２のドット配置データ内に配置するＭドットの数が１つ、増加することになる。
【００９１】
Ｍドットのカウント数ｄｏｔＭをインクリメントすると、ＣＰＵ１５１は、上述したステップＳ４４０の処理に移行する。こうすることで、エントリ番号ｎが「７」に達していない場合には、エントリ番号ｎがインクリメントされ（ステップＳ４５０）、上記ステップＳ４２０処理が戻されることになる。
【００９２】
上記ステップＳ４６０において、ＭドットとＬドットのドット発生量の累積量が、ｎ番目の閾値以下であると判断されれば（ステップＳ４６０：Ｎｏ）、次に、ＣＰＵ１５１は、ドット発生量テーブルＤＧＴＢＬから取得したＳドットとＭドットとＬドットのドット発生量の累積量が、ｎ番目の閾値を超えたか否かを判断する（ステップＳ４８０）、その結果、かかるドット発生量の累積量が、ｎ番目の閾値よりも大きいと判断した場合には（ステップＳ４８０：Ｙｅｓ）、Ｓドットのカウント数ｄｏｔＳをインクリメントする（ステップＳ４９０）。すなわち、この場合、４×２のドット配置データ内に配置するＳドットの数が１つ、増加することになる。
【００９３】
Ｓドットのカウント数をインクリメントすると、ＣＰＵ１５１は、上述したステップＳ４４０の処理に移行する。こうすることで、エントリ番号ｎが「７」に達していない場合には、エントリ番号ｎが１つインクリメントされ（ステップＳ４５０）、上記ステップＳ４２０に処理が戻されることになる。
【００９４】
上記ステップＳ４８０において、ＳドットとＭドットとＬドットのドット発生量の累積量が、ｎ番目の閾値以下であると判断された場合（ステップＳ４８０：Ｎｏ）、もしくは、上記ステップＳ４４０において、８番目の閾値まで参照したと判断された場合には（ステップＳ４４０：Ｙｅｓ）、ＣＰＵ１５１は、最後に、各サイズのドットのカウント数を記録したドット数データＤＣＤＡＴを生成する（ステップＳ５００）。
【００９５】
図１６は、ドット数データＤＣＤＡＴの一例を示す説明図である。図には、４×２のドット配置データ内において、Ｌドットが３つ、Ｍドットが２つ、Ｓドットが２つ配置される場合のドット数データを表している。図示するように、このドット数データＤＣＤＡＴは、１６ビットのデータ量を有しており、Ｌドットについては、「１１」、Ｍドットについては、「１０」、Ｓドットについては「０１」、ドット無しについては「００」として、ドットの種類を表すデータを２ビットのドットサイズ値で表している。このドット数データＤＣＤＡＴには、大きなサイズのドットを表すドットサイズ値ほど、下位ビット側（ＬＳＢ側）に位置するように、ドットサイズ値の記録を行う。
【００９６】
図１７は、上述したドット数カウント処理の具体例を示す説明図である。図１７（ａ）に示すように、ここでは、ドット発生量テーブルＤＧＴＢＬにおいて、現在の入力階調値ＴＤに対応するＬドットのドット発生量が「４０９」、Ｍドットが「１５５０」、Ｓドットが「１３０４」だとし、現在のブロックに対応するディザデータＤｔｈＤＡＴが、図８（ｄ）に示したディザデータだとする。
【００９７】
この場合、まず、図１５のステップＳ４２０では、ディザデータＤｔｈＤＡＴ内の１番目の閾値「２３」と、Ｌドットのドット発生量「４０９」とが比較される。そうすると、このドット発生量「４０９」の方が、閾値「２３」よりも大きいので、ステップＳ４２０では、「Ｙｅｓ」と判定され、ステップＳ４３０によってＬドットのカウント数がインクリメントされて「１」になる。そうすると、ステップＳ４５０によって、エントリ番号ｎがインクリメントされるため、続くステップＳ４２０では、２番目の閾値「４７２」とＬドットのドット発生量「４０９」が比較される。この場合、閾値「４７２」よりもドット発生量「４０９」の方が小さくなるので、ステップＳ４２０では、「Ｎｏ」と判定され、処理がステップＳ４６０に進む。この時点で、Ｌドットのカウント数は、図１７（ｂ）に示すように「１」で確定することになる。
【００９８】
ステップＳ４６０では、Ｌドットのドット発生量とＭドットのドット発生量の累積値「１９５９（＝４０９＋１５５０）」と、２番目の閾値「４７２」とが比較される。この結果、ＬドットとＭドットのドット発生量の累積値「１９５９」の方が、閾値「４７２」よりも大きいため、ステップＳ４６０では「Ｙｅｓ」と判断され、ステップＳ４７０によってＭドットのカウント数がインクリメントされ「１」となる。そうすると、更に、次の閾値「１０１０」が参照される。しかし、この場合においても、依然として、閾値「１０１０」より、ドット発生量の累積値「１９５９」の方が大きいため、結局、７番目の閾値「２２４０」が参照されるまで、Ｍサイズのカウント数はインクリメントされる。この結果、Ｍサイズのカウント数は、図１７（ｃ）に示すように「５」で確定する。
【００９９】
７番目の閾値「２２４０」が参照されると、ステップＳ４６０では、「Ｎｏ」と判定されるため、次に、ステップＳ４８０において、ＬドットとＭドットとＳドットのドット発生量の累積値「３２６３（＝４０９＋１５５０＋１３０４）」と、７番目の閾値「２２４０」とが比較される。この結果、ドット発生量の累積値「３２６３」の方が７番目の閾値よりも大きいため、ステップＳ４８０では「Ｙｅｓ」と判定され、ステップＳ４９０によってＳドットのカウント数がインクリメントされて「１」になる。そうすると、次に、８番目の閾値「３２６２」が参照される。
【０１００】
ＬドットとＭドットとＳドットのドット発生量の累積値「３２６３」は、８番目の閾値「３２６２」よりも依然として大きい。そのため、ステップＳ４８０では、再度、「Ｙｅｓ」と判定されて、ステップＳ４９０によってＳサイズのドットのカウント数がインクリメントされ、図１７（ｄ）に示すように「２」となる。すると、現在のエントリ番号ｎは「７」であるため、ステップＳ４４０において、「Ｙｅｓ」と判定され、各サイズのドットのカウント数が確定する。すなわち、以上で示した例では、Ｌドットが１個、Ｍドットが５個、Ｓドットが２個となる。
【０１０１】
以上、図１７を用いて説明したように、上述したドット数カウント処理では、最初に、Ｌドットの発生数が決定され、つづいて、Ｍサイズ、Ｓサイズのドットの発生数が決定される。各サイズの発生数を決定する際には、各サイズのドット発生量を加算しつつ閾値との比較を行っていくので、最終的には、図１７（ｄ）に示すように、ブロック内に各サイズのドットが重複せずにＬドットから順に配置されていくことになる。
【０１０２】
なお、図１７では、ブロック内の各ドットの配置も決定されているように見えるが、実際にはこのドット数カウント処理では、昇順にソートされた閾値のみを用いて各サイズのドットをカウントしているため、その配置までは決定されない。ドットの配置は、後述するドット配置データ生成処理において、本処理によってカウントされたドットの個数とディザデータＤｔｈＤＡＴ内の順序値とによって決定されることになる。
【０１０３】
ここで、ドット数カウント処理の他の具体例について検討する。例えば、現在の入力階調値ＴＤに対応するＬドット、Ｍドットのドット発生量がともに「０」であり、Ｓドットのドット発生量が「１５００」とする。また、現在のブロックに対応するディザデータＤｔｈＤＡＴが、図８（ｄ）に示したディザデータだとする。そうすると、図１５に示したフローチャートのステップＳ４２０、ステップＳ４６０では、Ｌドットの発生量もＭドットの発生量も「０」であり、１番目の閾値「２３」よりも小さいため、「Ｎｏ」と判断され、ステップＳ４８０に処理が進む。そして、このステップＳ４８０では、ドット発生量「１５００」を超える５番目の閾値「１６５９」が参照された時点で、ステップＳ４８０では、「Ｎｏ」と判定され、Ｓドットのカウント数が「５」で決定し、カウント処理が終了する。すなわち、本実施例では、ディザデータＤｔｈＤＡＴ内に閾値が昇順にソートされて記録されているため、全サイズのドット発生量の累積量を超えた閾値が参照された時点で、次の閾値を参照する必要が無くなる。従って、各サイズのドットのカウント処理が高速化され、ひいては、初期化処理を高速に行うことが可能になる。
【０１０４】
ここで、説明を図１４のステップＳ２３０に戻す。図１４のステップＳ２２０、すなわち、図１５に示したドット数カウント処理が実行されて、各サイズのドット数がカウントされると、次に、ＣＰＵ１５１は、前回の入力階調値ＴＤにおける各サイズのドット数に対して、今回の入力階調値ＴＤにおける各サイズのドット数のいずれかが変化したかを判定する（ステップＳ２３０）。例えば、前回のカウント処理によって、Ｓドットが２個、Ｍドットが５個、Ｌドットが１個であった場合に、今回のカウント処理によって、Ｓドットが２個、Ｍドットが４個、Ｌドットが２個となれば、ＭドットとＬドットのカウント数が変化していることになるので、上記ステップＳ２３０では、変化あり（Ｙｅｓ）と判定される。
【０１０５】
上記ステップＳ２３０において、変化ありと判定されれば（ステップＳ２３０：Ｙｅｓ）、現在のブロック番号およびエンコード値ＥｎｃＤａｔａに対応する各サイズのドット数を、上記ステップＳ２２０でカウントされた値に更新する（ステップＳ２４０）。そして、上記カウント処理のステップＳ５００において生成されたドット数データＤＣＤＡＴと、ディザデータＤｔｈＤＡＴ内の順序値とに基づき、ドット配置データの生成を行う（ステップＳ２５０）。なお、このドット配置データ生成処理の詳細については後述する。
【０１０６】
上記ステップＳ２５０においてドット配置データを生成すると、ＣＰＵ１５１は、図１１のデコードテーブルＤｅｃＴＢＬ内の現在のブロック番号とエンコード値ＥｎｃＤａｔａに対応する箇所に、ステップＳ２５０で生成したドット配置データを記録する（ステップＳ２６０）。そして、更に、図１１に示したエンコード閾値テーブルＥＴＴＢＬ内の現在のブロック番号とエンコード値に対応する箇所に、現在の入力階調値ＴＤを記録する（ステップＳ２７０）。これらの処理により、エンコード閾値テーブルＥＴＴＢＬとデコードテーブルＤｅｃＴＢＬとが生成されることになる。
【０１０７】
デコードテーブルＤｅｃＴＢＬへのドット配置データの記録、および、エンコード閾値テーブルＥＴＴＢＬへの入力階調値ＴＤの記録を完了すると、ＣＰＵ１５１は、現在のエンコード値ＥｎｃＤａｔａをインクリメントする（ステップＳ２８０）。つまり、このステップＳ２８０では、上記ステップＳ２３０において、いずれかのサイズのドットの数が変化する毎にエンコード値ＥｎｃＤａｔａが変化していくことになる。換言すれば、４×２のドット配置データの内容が変化する度にエンコード値ＥｎｃＤａｔａが変化していくことになる。
【０１０８】
上記ステップＳ２８０によって、エンコード値ＥｎｃＤａｔａをインクリメントした後、もしくは、上記ステップＳ２３０において、いずれのサイズのカウント数も変化していないと判断された場合には、ＣＰＵ１５１は、現在の入力階調値ＴＤが「２５５」を超えたか否かを判断する（ステップＳ２９０）。その結果、入力階調値ＴＤが「２５５」を超えていなければ（ステップＳ２９０：Ｎｏ）、現在の入力階調値ＴＤをインクリメントした上で（ステップＳ３００）、処理を上記ステップＳ２２０に戻す。一方、現在の入力階調値ＴＤが「２５５」を超えていれば（ステップＳ２９０：Ｙｅｓ）、デコードテーブル生成処理を終了し、処理を図７のステップＳ１３０（エンコードテーブルの生成処理）に移す。
【０１０９】
ここで、上述したデコードテーブル生成処理のステップＳ２５０において実行されるドット配置データ生成処理について、図１８および図１９を参照して詳しく説明する。
【０１１０】
図１８は、ドット配置データ生成処理の詳細なフローチャートである。一方、図１９は、ドット配置データの生成過程を模式的に表す説明図である。図１８において、ドット配置データ生成処理が実行されると、ＣＰＵ１５１は、まず、現在のブロック番号に対応するディザデータＤｔｈＤＡＴ（図８（ｄ）参照）を参照し、順序値データを入力する（ステップＳ６００）。そして、図１５のステップＳ５００で生成したドット数データＤＣＤＡＴ（図１６参照）を入力する（ステップＳ６１０）。
【０１１１】
次に、ＣＰＵ１５１は、これから生成しようとする４×２のドット配置データの全要素に対して、「ドット無し」を表すドットサイズ値「００」を記録することで初期化を行う（ステップＳ６２０）。そして、これからドットを配置しようとするドット配置データ上の位置を、図１９（ａ）に示す「ａ」の位置（最も左上の位置）に設定する（ステップＳ６３０）。
【０１１２】
ドットを配置しようとする位置を設定すると、ＣＰＵ１５１は、現在のドット位置に対応する順序値を順序値データから取得する（ステップＳ６４０）。図１９（ｂ）には、ディザデータＤｔｈＤＡＴから入力した順序値データの一例を示している。図示した例では、現在の位置「ａ」に対応する順序値は、「５」となるため、上記ステップＳ６４０では、この値「５」が取得される。
【０１１３】
次に、ＣＰＵ１５１は、ステップＳ６４０で取得した順序値に対応するドットサイズ値をドット数データＤＣＤＡＴから取得する（ステップＳ６５０）。具体的には、ドット数データＤＣＤＡＴの下位ビット側から２ビット毎に、ステップＳ６４０で取得した順序値の値分だけ数え、その位置に記録されたドットサイズ値を取得する。図１９（ｃ）には、上記ステップＳ６１０で入力したドット数データＤＣＤＡＴの一例を示している。かかる図において、順序値「５」に対応するドットサイズ値は、ドットサイズデータの下位ビットから数えて６つめのドットサイズ値「０１」である。ドットサイズ値「０１」は、Ｓサイズのドットであることを表す。
【０１１４】
ドットサイズ値を取得すると、ＣＰＵ１５１は、取得したドットサイズ値を、ドット配置データ上の現在の位置に設定する（ステップＳ６６０）。つまり、図１９（ｄ）に示すように、現在の位置が「ａ」の位置であれば、かかる位置に、図１９（ｃ）のドット数データＤＣＤＡＴから取得されたドットサイズ値「０１」を設定する。
【０１１５】
現在の位置にドットサイズ値を設定すると、ＣＰＵ１５１は、全ての位置についてドットサイズ値の設定が終了したか否かを判断する（ステップＳ６７０）。その結果、全ての位置についてドットサイズ値の設定が終了していれば、当該ドット配置データ生成処理を終了する。一方、終了していなければ、ドット配置データ上の現在の位置を移動し、処理を上記ステップＳ６４０に戻すことで、他の位置についてドットサイズ値の設定を行う。
【０１１６】
以上で説明したドット配置データ生成処理および上述したドット数カウント処理によれば、次のような効果が生じる。すなわち、図１９（ｄ）に示したドット配置データの生成結果と、図１９（ｂ）に示した４×２の順序値データとを対比してみると、サイズの大きなドットから順に、重複無く順序値の低い位置に配置されていることがわかる。順序値が低いということは、その順序値に対応する閾値群内の閾値の値が低いということになる（図８（ｂ）参照）。図８（ａ）に示した大域的ディザテーブルＷＤＴＢＬは、組織的ディザ法におけるディザパターンの性質上、閾値は、その値が低いほど分散性よく配置されており、その値が高くなるほど、既に配置された閾値の場所を避けるように、その閾値が配置されている。つまり、図１９（ｄ）に示したドット配置データでは、最も大きなサイズのドットから優先的に、低い順序値、すなわち、低い閾値の場所に配置されることとなるため、大きなサイズのドットほど、分散性がよく配置されることになる。従って、本実施例におけるドットの配置方法によれば、印刷用紙上で目立つことになる大きなドットの分散性を最も高めることができるため、出力画像の画質を大幅に向上させることが可能になる。
【０１１７】
以上、図７のステップＳ１２０に示したデコードテーブル生成処理の詳細について説明した。ＣＰＵ１５１は、このデコードテーブル生成処理を、図８に示した全ブロックについて実行することにより、図１０に示したデコードテーブルＤｅｃＴＢＬを生成することができる。
【０１１８】
Ｅ．エンコードテーブル生成処理：
図２０は、図７に示した初期化処理のステップＳ１３０におけるエンコードテーブル生成処理の詳細なフローチャートである。この処理は、図１１に示したエンコード閾値テーブルＥＴＴＢＬを参照して図１２に示したエンコードテーブルＥｎｃＴＢＬを生成する処理である。このエンコードテーブル生成処理は、上述したデコードテーブル生成処理と同じく、図８に示した全てのブロックについてブロック毎に行われる処理である。
【０１１９】
この処理が実行されると、まず、ＣＰＵ１５１は、以降の処理で用いられる変数として、現在のエンコード値ＥｎｃＤａｔａを「０」とし（ステップＳ７００）、現在の入力階調値ＴＤを「０」とする（ステップＳ７１０）。
【０１２０】
次に、ＣＰＵ１５１は、現在のエンコード値ＥｎｃＤａｔａが、エンコード値の最大値ＥｎｃＭａｘ未満であるか否かを判断する（ステップＳ７２０）。最大値ＥｎｃＭａｘは、エンコード値が５ビットデータである場合には、「３１」である。
【０１２１】
上記ステップＳ７２０において、現在のエンコード値ＥｎｃＤａｔａが、最大値ＥｎｃＭａｘ未満と判断された場合には（ステップＳ７２０：Ｙｅｓ）、ＣＰＵ１５１は、上記デコードテーブル生成処理（図１４参照）によって生成されたエンコード閾値テーブルＥＴＴＢＬ（図１１参照）を参照して、現在のエンコード値ＥｎｃＤａｔａに対応する入力階調値Ｘを取得する（ステップＳ７３０）。その結果、現在の入力階調値ＴＤが、ステップＳ７３０で取得した入力階調値Ｘを超えるか否かを判断し（ステップＳ７４０）、入力階調値ＴＤの値が、入力階調値Ｘを超えていれば（ステップＳ７４０：Ｙｅｓ）、現在のエンコード値ＥｎｃＤａｔａをインクリメントする（ステップＳ７５０）。
【０１２２】
ＣＰＵ１５１は、上記ステップＳ７５０でエンコード値ＥｎｃＤａｔａをインクリメントした後、または、上記ステップＳ７２０で、エンコード値ＥｎｃＤａｔａが最大値ＥｎｃＭａｘ以上となった場合（ステップＳ７２０：Ｎｏ）、もしくは、上記ステップＳ７４０で、入力階調値ＴＤが入力階調値Ｘを超えていないと判断された場合に（ステップＳ７４０：Ｎｏ）、図１２に示したエンコードテーブルＥｎｃＴＢＬ中の現在のブロックおよび現在の入力階調値ＴＤに対応する要素に、エンコード値ＥｎｃＤａｔａをセットする（ステップＳ７６０）。
【０１２３】
そして、ＣＰＵ１５１は、現在の入力階調値ＴＤが、その最大値である「２５５」を超えたか否かを判断し（ステップＳ７７０）、超えていれば（ステップＳ７７０：Ｙｅｓ）、当該エンコードテーブル生成処理を終了する。一方、超えていなければ（ステップＳ７７０：Ｎｏ）、現在の入力階調値ＴＤをインクリメントし、処理を上記ステップＳ７２０に戻す。
【０１２４】
以上で説明したエンコードテーブル生成処理により、図１２に示したエンコードテーブルＥｎｃＴＢＬを生成することができる。上述したエンコードテーブル生成処理では、入力階調値ＴＤを０から２５５まで徐々に加算していく中で、現在の入力階調値ＴＤがエンコード閾値テーブルＥＴＴＢＬに記録されている各入力階調値Ｘを超えた場合に、エンコード値ＥｎｃＤａｔａの値がインクリメントされていくことになる。そのため、図１２のエンコードテーブルＥｎｃＴＢＬでは、入力階調値ＴＤが漸増していくにつれ、エンコード値ＥｎｃＤａｔａの値は、図１２や図１３に示すごとく段階的に増加していくことになる。
【０１２５】
以上で、図７に示した初期化処理のステップＳ１３０までの説明が終了した。ＣＰＵ１５１は、この図７のステップＳ１３０が終了すると、ステップＳ１２０で生成したデコードテーブルＤｅｃＴＢＬと、ステップＳ１３０で生成したエンコードテーブルＥｎｃＴＢＬとをＲＡＭ１５２に記憶する。これにより、図７に示した初期化処理は終了する。
【０１２６】
Ｆ．ハーフトーン処理：
図２１は、図６に示した印刷処理のステップＳ４０で実行されるハーフトーン処理の詳細なフローチャートである。このハーフトーン処理は、図６のステップＳ３０によってＲＧＢ形式からＣＭＹ形式に色変換された画像データに対して、１画素単位で行われる処理である。
【０１２７】
このハーフトーン処理が実行されると、画像処理ＡＳＩＣ１５５は、まず、図４に示したエンコードユニット４１０を用いて、処理対象の画素の各色（Ｃ，Ｍ，Ｙ，Ｋ，Ｌｃ、Ｌｍ）の階調値をエンコード値ＥｎｃＤａｔａに変換するエンコード処理を行う（ステップＳ８００）。
【０１２８】
図２２は、エンコードユニット４１０が実行するエンコード処理の詳細を表すフローチャートである。このエンコード処理が実行されると、エンコードユニット４１０は、まず、処理対象の画素が属するブロック番号の計算を行う（ステップＳ８０２）。ここで、本実施例では、印刷対象とするＲＧＢ画像データの入力解像度が３６０ｄｐｉ×３６０ｄｐｉであるものとし、印刷用紙に出力する出力解像度が１４４０ｄｐｉ×７２０ｄｐｉであるものとする。そうすると、１ブロックのサイズは、４×２であるため、このような入力解像度と出力解像度の関係では、入力画像の１画素が、出力画像の４×２ドットに対応することになる。すなわち、本実施例では、処理対象のＣＭＹ画像の１画素が、図８（ａ）に示した大域的ディザテーブルＷＤＴＢＬの１ブロックに対応するものとしてブロック番号の計算を行う。
【０１２９】
ブロック番号の具体的な計算方法について以下に説明する。図８（ａ）に示した大域的ディザテーブルＷＤＴＢＬは、横方向に３２ブロック、縦方向に１６ブロックを有するものとした。そのため、１枚の入力画像データを、３２画素×１６画素を単位として分割し、かかる単位内の各画素に対して、ブロック番号が１から５１２（＝３２×１６）まで割り振られるように、ブロック番号の計算を行う。すなわち、エンコード処理を行おうとする現在の画素の座標を（Ｘ，Ｙ）とし、その原点を（０，０）すると、現在の画素のＹ座標が「０」であり、Ｘ座標が、「０」から「３１」までの間は、ブロック番号が「１」から「３２」まで、順番に割り振られることになる。その後、現在の画素のＸ座標が、「３２」になった時点で、ブロック番号は、再び、「１」となる。このように、画像のＸ方向に対して、ブロック番号が「１」から「３２」まで繰り返して適用された後に、現在の画素の座標が、（０，１）になった時点で、ブロック番号は「３３」となる。そして、その後、Ｙ座標が「１」の間は、「３３」〜「６４」までのブロック番号が繰り返して割り振られることになる。つまり、ブロック番号Ｎｕｍは、エンコード処理を行う対象画素の座標を（Ｘ，Ｙ）とすると、下記式（１）によって求めることができる。ただし、下記式（１）において、「％」は、剰余を求める演算子であるものとする。
【０１３０】
Ｎｕｍ＝（（Ｘ％３２）＋（Ｙ％１６）＊３２）＋１  …（１）
【０１３１】
上記ステップＳ８０２によって、ブロック番号の計算を行うと、エンコードユニット４１０は、図１２に示したエンコードテーブルＥｎｃＴＢＬを参照し、現在の画素の階調値ＴＤと、ステップＳ８０２によって計算したブロック番号Ｎｕｍとから、対応するエンコード値ＥｎｃＤａｔａを取得する（ステップＳ８０４）。例えば、図１２によれば、現在の画素の階調値が「４８」で、算出されたブロック番号が「４」であれば、エンコード値は「５」として取得されることになる。以上の処理により、エンコードユニット４１０によるエンコード処理は終了する。
【０１３２】
ここで、説明を図２１に戻す。画像処理ＡＳＩＣ１５５は、エンコードユニット４１０によるエンコード処理が終了すると、かかるエンコード処理の結果得られたエンコード値ＥｎｃＤａｔａを、ＲＡＭ１５２上に用意した中間バッファＢＦ（図４参照）に対して記録する（ステップＳ８１０ａ〜Ｓ８１０ｆ）。
【０１３３】
中間バッファＢＦに対してエンコード値ＥｎｃＤａｔａを記録すると、画像処理ＡＳＩＣ１５５は、デコードユニット４２０を用いて、中間バッファＢＦに記録されたエンコード値ＥｎｃＤａｔａをドット配置データに変換するデコード処理を実行する（ステップＳ８２０ａ〜Ｓ８２０ｆ）。
【０１３４】
図２３は、デコードユニット４２０が実行するデコード処理の詳細なフローチャートである。このデコード処理が実行されると、デコードユニット４２０は、まず、中間バッファＢＦに蓄積されたエンコード値ＥｎｃＤａｔａを読み出す（ステップＳ８２２）。
【０１３５】
エンコード値ＥｎｃＤａｔａを読み出した後、デコードユニット４２０は、処理対象の画素が属するブロック番号の計算を行う（ステップＳ８２４）。かかる計算の手法は、上述した通りである。なお、かかる処理において、デコードユニット４２０は、上述した計算方法に基づき、自身でブロック番号を計算するものとしてもよいし、エンコードユニット４１０から、計算結果を取得するものとしてもよい。
【０１３６】
ブロック番号の計算を終えると、デコードユニット４２０は、図１０に示したデコードテーブルＤｅｃＴＢＬを参照し、ステップＳ８２２によって読み出したエンコード値ＥｎｃＤａｔａと、ステップＳ８２４によって算出したブロック番号とに対応するドット配置データを取得する（ステップＳ８２６）。以上の処理により、デコードユニット４２０によるデコード処理、および、図２１に示した一連のハーフトーン処理が終了する。
【０１３７】
以上で説明した本実施例のハーフトーン処理によれば、エンコードテーブルＥｎｃＴＢＬとデコードテーブルＤｅｃＴＢＬの２つのテーブルを参照するだけで、ＣＭＹ画像に対するハーフトーン処理が完了する。従って、極めて高速なハーフトーン処理を実現することができる。また、デコード処理以降に、印刷機構によるドット形成処理に時間を要する場合であっても、エンコード処理の結果得られたエンコード値ＥｎｃＤａｔａを、ＲＡＭ１５２にバッファリングすることができるので、ＣＰＵ１５１を印刷処理から迅速に解放することが可能になる。また、各色８ビット（２５５階調）のデータ容量を有するＣＭＹ画像のデータが、エンコード処理によって、各色５ビットのデータ（エンコード値）に減縮されるため、ＲＡＭ１５２の記憶容量を大幅に削減することができ、コストダウンを図ることが可能になる。
【０１３８】
なお、上述した実施例では、図６に示したように、印刷処理が実行される度に初期化処理が実行されるものとして説明したが、初期化処理は、その他のタイミングで実行するものとしてもよい。例えば、プリンタ１００の電源投入時に実行されるものとしてもよいし、ユーザによって、印刷用紙や印刷モードの設定が変更された際に実行されるものとしてもよい。
【０１３９】
Ｇ．効果：
以上で説明した本実施例のプリンタ１００では、ハーフトーン処理において参照される各テーブルの生成元となるディザデータＤｔｈＤＡＴ内に、閾値が昇順にソートされて記録されているものとした。従って、１ブロック内に発生するドットの数をカウントする処理において、小さな閾値から順番に参照していき、全サイズのドット発生量の累積量を超えた閾値が参照された時点で、カウント処理が完了し、次の閾値を参照する必要が無くなる。従って、各サイズのドットのカウント処理が高速化され、ひいては、初期化処理、印刷処理を高速に行うことが可能になる。また、このディザデータＤｔｈＤＡＴに基づき生成されたエンコードテーブルとデコードテーブルとを参照するだけで、画像データを容易にドットの配置パターンに変換することができるので、処理が簡略化され、ハーフトーン処理を高速に行うことが可能になる。
【０１４０】
また、本実施例では、本来、閾値のみを記録する目的のディザデータＤｔｈＤＡＴに対して、その残余ビット部分を利用し、順序値を記録するものとした。従って、各テーブルの生成時に利用される閾値データと、ドット配置データ生成時に利用される順序値データとを個別に管理する必要がないため、ＲＡＭ１５２やＲＯＭ１５３に記憶されるデータの管理を効率的に行うことが可能になる。
【０１４１】
Ｈ．変形例：
以上、本発明の実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、画像処理ＡＳＩＣ１５５によってハードウェアによって実現した機能を、ＣＰＵ１５１による所定のプログラムの実行によってソフトウェア的に実現するものとしてもよい。その他、以下のような変形が可能である。
【０１４２】
（Ｈ１）第１変形例：
上述した実施例では、図８（ｄ）に示したように、ディザデータＤｔｈＤＡＴの上位４ビットに順序値が記録されるものとした。この順序値は、図８（ｃ）中に矢印で示したように、１ブロック内の４×２個の順序値を、左上から右下に位置する順序値にかけて順番に記録されている。これに対して、本変形例では、図２４に示すように、順序値に換えて位置データの記録を行う。
【０１４３】
図２４は、ディザデータの変形例を示す説明図である。本変形例では、図２４（ｃ）に示すように、順序値データの４×２の各要素に対して、その要素の位置を表す位置データが割り当てられているものとした。各順序値の左上に四角で囲った枠内に示した数値が位置データである。本変形例では、ディザデータＤｔｈＤＡＴの上位４ビットに、順序値の小さい順からその順序値に対応する位置データを記録する。例えば、図２４（ｃ）において、最も順序値の低い値は「０」であり、この順序値「０」に対応する位置データは、図２４（ｃ）中の最も左下の「４」であることから、かかる「４」の値が、ディザデータＤｔｈＤＡＴ内の最初のエントリに記録されることになる。また、次に順序値の低い値は「１」であるため、この「１」に対応する位置データは「２」であることから、かかる「２」の値が、ディザデータＤｔｈＤＡＴ内の２番目のエントリに記録されることになる。
【０１４４】
本変形例におけるディザデータＤｔｈＤＡＴを用いてドット配置データを生成する場合について考えると、図１８のステップＳ６４０において、現在のドット位置に対応する順序値を取得する際に、例えば、現在のドット位置が「０」であれば、かかる「０」の値を有する位置データをディザデータＤｔｈＤＡＴ内から検索する。そうすると、その「０」の値が何番目のエントリに記録されているかがその順序値を表すことになる。従って、本変形例によれば、容易に順序値を取得することが可能になる。
【０１４５】
また、以上のように、順序値に対応する位置データをディザデータＤｔｈＤＡＴ内に記録するものとすれば、各エントリ内に記録された位置データと閾値とは、結果的に、ブロック内の同じ位置の値を指すことになる。そのため、ディザデータＤｔｈＤＡＴの取り扱いおよび管理を容易に行うことが可能になる。
【０１４６】
（Ｈ２）第２変形例：
上述した実施例では、デコードテーブル生成処理の過程において、各ブロックおよび各エンコード値に対応するドット配置データを生成する際に、ドットの粒状感を低減させるため、大きなサイズのドットから順に、ブロック内の閾値の低い場所に配置を行うものとした。そのため、デコードテーブルＤｅｃＴＢＬ内において、低い階調値（詳しくは、エンコード値）に対応付けられたドット配置データは、その多くが小さなドットのみにより構成されるため、ドットの分散性が低いものがある。そこで、図１８のドット配置データ生成処理時において、ドットの分散性が低いおそれの有るドット配置データを生成する際に、図８（ｄ）のディザデータＤｔｈＤＡＴ内の順序値データとは別に用意された拡張順序値データを参照させることにより、ドットの分散性を向上させることが可能になる。
【０１４７】
図２５は、本変形例におけるドット配置データ生成処理のフローチャートである。図２５に示したドット配置データ生成処理では、ステップＳ６１０ａからステップＳ６８０ａまでの処理は、図１８に示したドット配置データ生成処理のステップＳ６１０からステップＳ６８０までの処理と全く同一である。すなわち、異なる部分は、ステップＳ６００ａ，ステップＳ６０２ａ、ステップＳ６０４ａである。
【０１４８】
このドット配置データ生成処理が実行されると、まず、ＣＰＵ１５１は、現在処理中のブロック番号とエンコード値ＥｎｃＤａｔａに対応付けられた拡張順序値データがＲＯＭ１５３内の拡張順序値データテーブルＸＴＢＬ内に存在するか否かを判断する（ステップＳ６００ａ）。
【０１４９】
図２６は、拡張順序値データテーブルＸＴＢＬの一例を示す説明図である。図示するように、この拡張順序値データテーブルＸＴＢＬには、ブロック番号とエンコード値とに対応付けて、拡張順序値データが記憶されている。ただし、拡張順序値データは、全てのブロックと全てのエンコード値に対して記憶されているわけではない。すなわち、通常の順序値データを適用してはドットの分散性が低くなってしまうドット配置データに対応するブロック番号とエンコード値とに対してのみ記憶されている。また、ブロック番号とエンコード値とが分かれば、結果的にブロック内に発生するドットの数は予め把握できるため、拡張順序値データには、必要な数の順序値しか設定されていない。例えば、図２６において、ブロック番号が「１」で、エンコード値が「１３」の拡張順序値データは、０から４までの順序値が設定されているが、これは、このブロック番号とエンコード値とによって生成されるドットの数が５つであることが予め分かっているからである。このように、必要な順序値のみを設定することで、拡張順序値データテーブルＸＴＢＬのデータ容量を大幅に削減することができる。
【０１５０】
上記ステップＳ６００ａにおいて、現在処理中のブロック番号とエンコード値ＥｎｃＤａｔａに対応付けられた拡張順序値データが存在すると判断された場合には（ステップＳ６００ａ：Ｙｅｓ）、ＣＰＵ１５１は、拡張順序値データテーブルＸＴＢＬから、その拡張順序値データを入力する（ステップＳ６０２ａ）。一方、拡張順序値データが存在しない場合には、ＣＰＵ１５１は、現在のブロック番号に対応するディザデータＤｔｈＤＡＴから、通常の順序値データを入力する（ステップＳ６０４ａ）。
【０１５１】
以上の処理によって、拡張順序値データもしくは順序値データを入力すると、ＣＰＵ１５１は、ステップＳ６１０ａ以降の処理によって、拡張順序値データもしくは順序値データ内の順序値を参照しつつ図１９に示した手順のようにドット配置データを生成する。
【０１５２】
図２７は、拡張順序値データを適用した場合のドット配置データと、適用しない場合のドット配置データを例示する説明図である。かかる図では、２つのドットを１つのブロック内に配置する例を示している。図の左側には、通常の順序値データによるドットの配置結果を示し、図の右側には、拡張順序値データを適用してドットを配置した結果を示した。図示するように、通常の順序値データでは、ドット同士が隣り合って、極めて分散性が低くなる場合があるが、本変形例によって、拡張順序値データを予め定義しておけば、図の右側に示すように、ドットを強制的に分散させることができる。このように、本変形例によれば、図８（ａ）に示した大域的ディザテーブルＷＤＴＢＬを基礎とした実施例のハーフトーン処理に比べ、より画質の向上した印刷を行うことが可能になる。
【０１５３】
（Ｈ３）第３変形例：
上述した実施例では、図４のデコードユニット４２０は、中間バッファＢＦからエンコード値ＥｎｃＤａｔａを読み込み、デコードテーブルＤｅｃＴＢＬから、そのエンコード値ＥｎｃＤａｔａと処理対象の画素のブロック番号とに対応したドット配置データを取得することにより、ハーフトーン処理を行うものとした。
【０１５４】
これに対して、本変形例では、図１０のデコードテーブルＤｅｃＴＢＬに換え、２つの変換テーブルを用いることでデコード処理を実現する。図２８は、本変形例のデコード処理において用いる第１変換テーブルＤＴ１の一例を示す説明図である。また、図２９は、本変形例のデコード処理において用いる第２変換テーブルＤＴ２の一例を示す説明図である。
【０１５５】
図２８に示した第１変換テーブルには、ブロック番号とエンコード値とに対応付けて、０から１６４までの値（以下、「第１ドット数データ」という）が記録されている。この第１ドット数データは、ＬドットとＭドットとＳドットのそれぞれの発生数をまとめて表した値である。第１ドット数データが１６４までの値に収まるのは、１つのブロックを構成する８つの画素についてみれば、各画素について、「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の４つの状態を取り得る。従って、ドット個数の組合せは、これら４つの状態を、重複を許容して８回選択した時の組合せの数に等しくなるから、4Ｈ8（＝4+8-1Ｃ8）によって求めることができる。このことから、最大でも１６５通り（０〜１６４）の組合せしか出現しないことになる。なお、nＨrは、ｎ個の物の中から重複を許してｒ回選択するときの重複組合せ数を求める演算子である。また、nＣrは、ｎ個の物の中から重複を許さずにｒ回選択するときの組合せ数を求める演算子である。
【０１５６】
図２９に示した第２変換テーブルには、図２８に示した第１ドット数データに対応付けて、各サイズのドット個数を表す第２ドット数データが記録されている。この第２ドット数データは、上述した実施例のドット数データＤＣＤＡＴに相当する。実施例と同様に、この第２ドット数データは、ドットのサイズを表すドットサイズ値が、サイズの大きい順に下位ビットから順に記録されている。例えば、図２９の第２変換テーブルＤＴ２において、第１ドット数データが「２」であれば、第２ドット数データは、「００，００，００，００，００，００，０１，０１」となり、Ｓドットが２つ発生することを表している。図２９の第２変換テーブルＤＴ２の右側には、第２ドット数データが表す各サイズのドットの数の内訳を示している。この第２変換テーブルＤＴ２は、図の下部に示したドット発生量テーブルに基づき生成されるテーブルである。
【０１５７】
図３０は、本変形例において画像処理ＡＳＩＣ１５５のデコードユニット４２０が実行するデコード処理のフローチャートである。このデコード処理が実行されると、デコードユニット４２０は、まず、中間バッファＢＦに蓄積されたエンコード値ＥｎｃＤａｔａを読み出す（ステップＳ１４００）。
【０１５８】
エンコード値ＥｎｃＤａｔａを読み出すと、デコードユニット４２０は、処理対象の画素が属するブロック番号の計算を行う（ステップＳ１４１０）。かかる計算の手法は上述した実施例で説明したとおりである。
【０１５９】
ブロック番号の計算を終えると、デコードユニット４２０は、図２８に示した第１変換テーブルを参照して、ステップＳ１４００によって読み出したエンコード値ＥｎｃＤａｔａと、ステップＳ１４１０によって計算したブロック番号とに対応する第１ドット数データを取得する（ステップＳ１４２０）。
【０１６０】
第１ドット数データを取得すると、次に、デコードユニット４２０は、図２９に示した第２変換テーブルを参照して、その第１ドット数データに対応する第２ドット数データを取得する（ステップＳ１４３０）。
【０１６１】
第２ドットデータを取得すると、デコードユニット４２０は、ステップＳ１４３０によって取得した第２ドット数データと現在のブロック番号に対応するディザデータＤｔｈＤＡＴに記録された順序値データに基づき、第２ドット数データに定義された各サイズのドットをブロック内に配置する処理を行う（ステップＳ１４４０）。この配置処理は、実施例において説明した図１８のドット配置データ生成処理と同一の処理である。すなわち、図１８のドット配置データ生成処理は、実施例では、デコードテーブルＤｅｃＴＢＬ内に記録するドット配置データを生成するための処理であるが、本変形例では、第２ドット数データに応じて、動的にドット配置データを生成する処理として実行される。このドット配置データ生成処理が実行されれば、最終的に、ブロック番号とエンコード値に対応したドット配置データが生成され、本変形例におけるデコード処理が終了する。
【０１６２】
以上で説明した第３変形例によれば、２つの変換テーブルを参照することにより、中間バッファＢＦから取得したエンコード値ＥｎｃＤａｔａをドット配置データに変換することができる。実施例に示したデコードテーブルＤｅｃＴＢＬには、４×２サイズのドット配置データが全てのブロック番号と全てのエンコード値とに対応付けて記憶されているため、比較的、ＲＡＭ１５２に記憶されるデータ容量が大きくなる。これに対して、本変形例では、第１変換テーブルＤＴ１のデータ量と第２変換テーブルＤＴ２のデータ量を加算しても、そのデータ容量の総和は、実施例のデコードテーブルよりも少なくなる。従って、ＲＡＭ１５２の記憶容量を削減でき、コストダウンを図ることが可能になる。
【０１６３】
なお、上述した第２変形例における拡張順序値データによるドットの配置は、第３変形例においても適用することができる。すなわち、図３０に示したデコード処理のステップＳ１４４０のドット配置処理において、拡張順序値データを読み込むことによって、ブロック内のドットをこの拡張順序値データに基づき配置することが可能である。従って、第３変形例においても、より分散性の高いドットの配置を実現することが可能になる。
【０１６４】
（Ｈ４）第４変形例：
上述した実施例では、入力解像度が３６０ｄｐｉ×３６０ｄｐｉで、出力解像度が１４４０ｄｐｉ×７２０ｄｐｉの場合（以下、「高解像度モード」という）についてのハーフトーン処理について説明した。これに対して、本変形例では、出力解像度を減じ、入力解像度が３６０ｄｐｉ×３６０ｄｐｉで、出力解像度が７２０ｄｐｉ×７２０ｄｐｉの場合（以下、「低解像度モード」という）についてのハーフトーン処理について説明する。
【０１６５】
図３１は、高解像度モードと低解像度モードとにおける１ブロック分の出力の実サイズの違いを示す説明図である。上述した低解像度モードは、実施例で説明した高解像度モードよりも、横方向で１／２倍の出力解像度となる。そうすると、図３１に示すように、印刷用紙上に形成される４×２のドットからなる１ブロック分の実サイズは、高解像度モード時に比べ、横方向で２倍の大きさとなる。そのため、低解像度モード時におけるハーフトーン処理では、次のようにエンコード処理およびデコード処理を行うことで、出力画像のサイズを適正化する。
【０１６６】
図３２は、低解像度モード時におけるハーフトーン処理の概要を表すフローチャートである。まず、画像処理ＡＳＩＣ１５５は、ＣＭＹ画像からＸ方向に隣り合う２画素分の画素データを入力する（ステップＳ１５００）。
【０１６７】
次に、画像処理ＡＳＩＣ１５５のエンコードユニット４１０は、上記ステップＳ１５００で入力した２つの画素が、同じブロック番号に属するものとして、それぞれエンコード処理を行う（ステップＳ１５１０）。
【０１６８】
エンコード処理の後、画像処理ＡＳＩＣ１５５のデコードユニット４２０は、中間バッファＢＦを経由して、エンコードユニット４１０から２画素分のエンコード値を入力すると、各画素について、デコード処理を行い、デコードテーブルＤｅｃＴＢＬから、２ブロック分のドット配置データを取得する（ステップＳ１５２０）。
【０１６９】
２ブロック分のドット配置データを取得すると、デコードユニット４２０は、ドット配置データの分割合成処理を行う（ステップＳ１５３０）。この分割合成処理では、デコードユニット４２０は、ＣＭＹ画像中において、左側に位置していた画素に対応するドット配置データ（４×２）から左半分（２×２）のドット配置データを取得し、更に、ＣＭＹ画像中において、右側に位置していた画素に対応するドット配置データ（４×２）から右半分（２×２）のドット配置データを取得する。そして、取得したこれらの２×２のドット配置データを左右に配置して合成すれば、１ブロック分のハーフトーン処理が完了する。
【０１７０】
以上で説明した第４変形例によれば、解像度の低減に伴い、１ブロック分の実サイズが拡大したとしても、２画素分のドット配置データを分割して結合することで、出力画像の実サイズを高解像度モードによる出力画像の実サイズと同じサイズに保つことができる。また、２つのドット配置データをそれぞれ分割して合成した場合であっても、各ドット配置データは、同一のブロック番号から生成されているため、分割合成後のブロック内でドット数が意図せずに増減してしまうことを抑制することができる。従って、解像度を減じて出力を行っても、入力画像中に存在していた文字や線の一部が消失してしまうといった画質の劣化を抑制することが可能になる。
【０１７１】
（Ｈ５）変形例５：
上記実施例では、プリンタ１００は、複合機タイプであるものとし、単体で、画像データの入力からハーフトーン処理、インクの吐出制御まで行うものとした。これに対して、プリンタ１００にコンピュータを接続し、コンピュータにおいて、画像データの入力と、ハーフトーン処理の一部、すなわち、エンコード処理までを実行するものとしてもよい。このような構成では、コンピュータに所定のプログラムをインストールすることで、実施例に記載した初期化処理やハーフトーン処理を実現することができる。プリンタ１００は、コンピュータからプリンタケーブル等を経由してエンコード値を受信すると、そのエンコード値に応じてデコード処理を行い、印刷機構を制御して、印刷用紙への印刷を行う。
【０１７２】
このように、コンピュータでエンコード処理までを実行するものとすれば、Ｃ，Ｍ，Ｙ，Ｋの各毎に、８ビット（２５５階調）のデータサイズを有する画像データが、５ビットのエンコード値に変換されるため、コンピュータとプリンタ１００間の通信量を削減することができる。この結果、全体として印刷速度を向上させることが可能になる。
【図面の簡単な説明】
【０１７３】
【図１】本発明の実施例としてのプリンタ１００を示す説明図である。
【図２】プリンタ１００の内部構成を示す説明図である。
【図３】異なる大きさのインク滴がインクヘッド２１１から吐出される原理を示す説明図である。
【図４】画像処理ＡＳＩＣ１５５の詳細な構成を示す説明図である。
【図５】ドット配置データの一例を示す説明図である。
【図６】プリンタ１００が実行する印刷処理のフローチャートである。
【図７】初期化処理の詳細を示すフローチャートである。
【図８】ディザデータＤｔｈＤＡＴのデータ構造およびその生成原理を示す説明図である。
【図９】ドット発生量テーブルＤＧＴＢＬの一例を示す説明図である。
【図１０】デコードテーブルＤｅｃＴＢＬのデータ構造を示す説明図である。
【図１１】エンコード閾値テーブルＥＴＴＢＬのデータ構造を示す説明図である。
【図１２】エンコードテーブルＥｎｃＴＢＬのデータ構造を示す説明図である。
【図１３】エンコードテーブルＥｎｃＴＢＬに記録されたエンコード値の変化を模式的に示す説明図である。
【図１４】デコードテーブル生成処理の詳細を示すフローチャートである。
【図１５】ドット数カウント処理の詳細を示すフローチャートである。
【図１６】ドット数データＤＣＤＡＴの一例を示す説明図である。
【図１７】ドット数カウント処理の具体例を示す説明図である。
【図１８】ドット配置データ生成処理の詳細なフローチャートである。
【図１９】ドット配置データの生成過程を模式的に表す説明図である。
【図２０】エンコードテーブル生成処理の詳細なフローチャートである。
【図２１】ハーフトーン処理の詳細なフローチャートである。
【図２２】エンコード処理の詳細を表すフローチャートである。
【図２３】デコード処理の詳細なフローチャートである。
【図２４】ディザデータの変形例を示す説明図である。
【図２５】変形例におけるドット配置データ生成処理のフローチャートである。
【図２６】拡張順序値データテーブルＸＴＢＬの一例を示す説明図である。
【図２７】拡張順序値データを適用した場合のドット配置データと適用しない場合のドット配置データを例示する説明図である。
【図２８】変形例のデコード処理において用いる第１変換テーブルＤＴ１の一例を示す説明図である。
【図２９】変形例のデコード処理において用いる第２変換テーブルＤＴ２の一例を示す説明図である。
【図３０】変形例においてデコードユニット４２０が実行するデコード処理のフローチャートである。
【図３１】高解像度モードと低解像度モードとにおける１ブロック分の出力の実サイズの違いを示す説明図である。
【図３２】低解像度モード時におけるハーフトーン処理の概要を表すフローチャートである。
【符号の説明】
【０１７４】
１００…プリンタ
１１０…スキャナ
１２０…メモリカードスロット
１３０…ＵＳＢインタフェース
１４０…操作パネル
１４５…液晶モニタ
１５０…制御ユニット
１５１…ＣＰＵ
１５２…ＲＡＭ
１５３…ＲＯＭ
１５５…画像処理ＡＳＩＣ
２１０…キャリッジ
２１１…インクヘッド
２１２…インクカートリッジ
２２０…キャリッジモータ
２３０…紙送りモータ
２６０…駆動ベルト
２７０…プラテン
２８０…摺動軸
３００…色変換ユニット
４００…ハーフトーン処理ユニット
４１０…エンコードユニット
４２０…デコードユニット
５００…インク吐出制御ユニット
ＤＧＴＢＬ…ドット発生量テーブル
ＥｎｃＴＢＬ…エンコードテーブル
ＤｅｃＴＢＬ…デコードテーブル
ＷＤＴＢＬ…大域的ディザテーブル
ＥＴＴＢＬ…エンコード閾値テーブル
ＭＣ…メモリカード
ＢＦ…中間バッファ
ＬＵＴ…色変換テーブル
【図１】
2007194836.tif 000003
【図２】
2007194836.tif 000004
【図３】
2007194836.tif 000005
【図４】
2007194836.tif 000006
【図５】
2007194836.tif 000007
【図６】
2007194836.tif 000008
【図７】
2007194836.tif 000009
【図８】
2007194836.tif 000010
【図９】
2007194836.tif 000011
【図１０】
2007194836.tif 000012
【図１１】
2007194836.tif 000013
【図１２】
2007194836.tif 000014
【図１３】
2007194836.tif 000015
【図１４】
2007194836.tif 000016
【図１５】
2007194836.tif 000017
【図１６】
2007194836.tif 000018
【図１７】
2007194836.tif 000019
【図１８】
2007194836.tif 000020
【図１９】
2007194836.tif 000021
【図２０】
2007194836.tif 000022
【図２１】
2007194836.tif 000023
【図２２】
2007194836.tif 000024
【図２３】
2007194836.tif 000025
【図２４】
2007194836.tif 000026
【図２５】
2007194836.tif 000027
【図２６】
2007194836.tif 000028
【図２７】
2007194836.tif 000029
【図２８】
2007194836.tif 000030
【図２９】
2007194836.tif 000031
【図３０】
2007194836.tif 000032
【図３１】
2007194836.tif 000033
【図３２】
2007194836.tif 000034