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