(57)【特許請求の範囲】
【請求項１】
入力した画像データに所定の画像処理を施して出力する画像出力装置であって、
階調値を有する画像データを入力し、該画像データに対して、色空間をＲＧＢ形式からＣＭＹＫ形式に変換する色変換処理を行う画像処理ユニット、および、階調値を補正する階調補正処理を行う画像処理ユニット、の少なくとも一方を含む複数の画像処理ユニットを直列に接続した画像処理ユニット群と、
前記画像処理ユニット群に含まれ、ランダムに生じる乱数データと、隣接する画像データとの差分に基づき画素間のエッジの度合いを表すエッジデータとを、補助データとして生成する第１の画像処理ユニットと、
第１の画像処理ユニットから前記補助データを取得し、該補助データを、前記画像処理ユニット間に前記画像データが転送されるのと同期して順次転送を行うパスユニットを複数直列に接続したパスユニット群と、
前記画像処理ユニット群から出力された画像データを用いてハーフトーン処理を行うハーフトーン処理部と、を備え、
前記画像処理ユニットは、前記画像データの転送先の他の画像処理ユニットに対して、データの受け取りを要求する要求信号を送信し、該他の画像処理ユニットは、該要求信号を受信すると、当該画像処理ユニットから転送された前記画像データを受信し、該画像データの受信が完了すると、当該画像処理ユニットに対して、データの受信が完了した旨を表す確認信号を送信することにより、前記画像データの転送を行い、
前記パスユニットは、
当該パスユニットに対応して設けられた前記画像処理ユニットが前記画像データの転送元となる他の画像処理ユニットに対して送信する前記確認信号を分岐して入力し、該確認信号の入力を検出した場合に、前記補助データの転送元となる他のパスユニットから前記補助データを入力するとともに、
当該パスユニットに対応して設けられた前記画像処理ユニットが前記画像データを転送する他の画像処理ユニットから、該パスユニットに対応して設けられた前記画像処理ユニットに対して送信される前記確認信号を分岐して入力し、該確認信号の入力を検出した場合に、前記補助データの転送先となる他のパスユニットに前記補助データを出力することにより、前記画像処理ユニット間に前記画像データが転送されるのと同期して前記補助データの転送を行い、
前記パスユニット群の中の所定のパスユニットは、前記画像処理ユニット群の中において前記第１の画像処理ユニットよりも後段に位置し、前記第１の画像処理ユニットとは異なる第２の画像処理ユニットと接続され、前記補助データを該第２の画像処理ユニットに出力し、
前記第２の画像処理ユニットは、前記所定のパスユニットから前記補助データを入力し、該補助データに含まれるエッジデータが所定の基準値よりも小さい場合に、該補助データと同期して前記画像処理ユニット群を転送されてきた画像データと、該画像データに隣接する画像データと、該補助データに含まれる乱数データと、を加算し、該加算された値を前記隣接する画像データの数で除算することで隣接する画像データの平滑化を行い、該平滑化された画像データを前記ハーフトーン処理部に出力する、
画像出力装置。
【請求項２】
請求項１に記載の画像出力装置であって、
前記各パスユニットは、所定段数のＦＩＦＯメモリによって構成されている
画像出力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力した画像データに所定の画像処理を施して出力する技術に関する。
【背景技術】
【０００２】
プリンタなどの画像出力装置の出力解像度は年々高くなっており、デジタルカメラなどで撮影した画像の解像度を上回ることも少なくない。こうした場合には、印刷しようとする画像データの１画素が、印刷上の単位であるピクセルの複数の集合に対応することになる。例えば、印刷しようとする画像の解像度が３６０ｄｐｉ×３６０ｄｐｉで、印刷解像度が１４４０ｄｐｉ×７２０ｄｐｉの場合には、画像データ側の１画素は、印刷装置側の４×２のピクセルの集合に対応していることになる。
【０００３】
このように、入力解像度よりも出力解像度が高い場合には、例えば、画像データ側の１画素の階調値を、４×２のピクセル群に形成するドットの個数および配置によりコード化しようとする手法が考えられる。この場合の最も単純な手法は、４×２のピクセルの集合に対して面積階調の考え方を適用し、全てのピクセルにドットが形成されていない状態から全てのピクセルにドットが形成されている状態まで、９段階のコード値で表現する手法である（濃度パターン法ともいう）。これに対して、出願人は、組織的ディザ法の考え方を４×２ピクセルの集合に、いわば局所的に適用し、組織的ディザ法による画質を維持したまま高速な処理を実現する手法を提案している（下記特許文献１参照）。かかる手法は、極めて高速なハーフトーン処理を実現し、かつ従来の組織的ディザ法と比べても遜色ない画質を実現する画期的なものである。
【０００４】
【特許文献１】国際公開第２００４／０８６７５０号パンフレット
【０００５】
ところで、こうした画像処理は、ＣＰＵを用いてソフトウェア的に実現しても良いし、専用のハードウェアを設計して実現することも可能である。一般に、適切なハードウェアを設計すれば、ソフトウェアにより実現するよりも高速な処理を実現することができる。上記の手法は、元々、誤差拡散法よりも高速な処理が可能であるため、ハードウェアにより実現すれば、更なる高速化を図ることができる。
【０００６】
しかしながら、ハードウェアによる設計には、種々の制約が存在する。例えば、コストダウンや処理の高速化を図るために、ハードウェアの構成を簡略化すると、ハードウェアの汎用性が低下し、その後の設計変更に柔軟に対応できないという問題が生じる場合がある。こうした場合に、プリンタなどの画像出力装置のハードウェア構成を再度設計することは、膨大な手間を要することになる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このような状況を踏まえて、本発明が解決しようとする課題は、画像処理をハードウェアにより実現する画像出力装置において、画像処理の内容に関する設計変更等に柔軟に対応しうる構成を実現することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明を画像出力装置として次のように構成した。すなわち、
入力した画像データに所定の画像処理を施して出力する画像出力装置であって、
画像データを入力し、該画像データに対して各々所定の画像処理を施す画像処理ユニットを複数直列に接続した画像処理ユニット群と、
前記画像処理ユニット群の中の第１の画像処理ユニットによる画像処理に伴い生成された補助データを入力し、該補助データを、前記画像処理ユニット間に前記画像データが転送されるのと同期して順次転送を行うパスユニットを複数直列に接続したパスユニット群とを備え、
前記パスユニット群の中の所定のパスユニットは、前記画像処理ユニット群の中の第２の画像処理ユニットと接続され、前記補助データを該第２の画像処理ユニットに出力し、
前記第２の画像処理ユニットは、前記所定のパスユニットから前記補助データを入力し、該補助データを用いて、該補助データと同期して転送された前記画像データに対して所定の画像処理を行うことを要旨とする。
【０００９】
本発明の画像出力装置によれば、画像処理の対象となる画像データ以外のデータ（補助データ）を、各種画像処理を行う画像処理ユニット群とは異なる経路であるパスユニット群に転送させるため、かかる補助データを画像データとともに画像処理ユニット群に流す必要が無い。従って、補助データの構成やデータ量が変更された場合であっても、各画像処理ユニットのバス幅やバッファ容量を変更するなどといったハードウェア構成の大きな変更が不要となる。この結果、各画像処理ユニットの汎用性を高めることができ、画像出力装置の設計変更を容易に行うことが可能になる。
【００１０】
更に、本発明では、ある画像処理ユニットが画像処理に用いた補助データを、パスユニット群を介して他の画像処理ユニットに転送することができる。そのため、その補助データを他の画像処理ユニットによる画像処理時において再利用することが可能となる。この結果、複数の画像処理ユニットで共通して用いられる補助データを、各画像処理ユニットが個別に生成する必要がないため、ハードウェア構成を簡略化することが可能となり、コストダウンを図ることが可能になる。
【００１１】
なお、第１の画像処理ユニットは、第１の画像処理ユニットが生成した補助データを必ずしも自身で利用する必要はない。例えば、第２の画像処理ユニットよりも、第１の画像処理ユニットのハードウェアリソースが豊富である場合には、本来、第２の画像処理ユニットで生成すべき補助データを、第１の画像処理ユニットで生成するものとすることができる。本発明では、パスユニット群を通じて柔軟に補助データの受け渡しを行うことができるので、各画像処理ユニット間でハードウェアの規模の相違があったとしても、その相違を吸収して画像出力装置の設計を容易に行うことが可能になる。
【００１２】
上記構成の画像出力装置において、
前記第１の画像処理ユニットは、前記補助データとして乱数データを生成する乱数生成手段を備え、
前記第２の画像処理ユニットは、前記乱数データを用いて前記画像データの平滑化を行う平滑化手段を備えるものとしてもよい。
【００１３】
このような構成によれば、第１の画像処理ユニットによる画像処理に用いた乱数データを、第２の画像処理ユニットにも転送し、かかる乱数データを再利用することにより、第２の画像処理ユニットは画像データの平滑化を行うことができる。画素値に乱数データを加えて平滑化を行えば、画像データ内に、連続して同じ画素値が存在することを抑制することができため、自然画等を表す画像データの画質を向上させることが可能になる。
【００１４】
上記構成の画像出力装置において、
前記第１の画像処理ユニットは、更に、前記補助データとして、隣接する画素の画素値の相違度を表すエッジデータを生成するエッジデータ生成手段を備え、
前記第２の画像処理ユニットの平滑化手段は、前記エッジデータが表す画素値の相違度に応じて、前記隣接する画素について前記乱数データを用いた画素値の平滑化を行うものとしてもよい。
【００１５】
このような構成によれば、隣接する画素の画素値の相違に応じて画素値の平滑化を行うことができる。そのため、例えば、隣接する画素の画素値が大きく異なる場合には、平滑化を行わないものとすることで、画像の明瞭度が低下することを抑制することができ、画素値が近似する場合には、平滑化を行うことで、画像のノイズ成分を低減させ、出力画像の画質を向上させることができる。
【００１６】
上記構成の画像出力装置において、
前記画像処理ユニットは、前記画像データの転送先の他の画像処理ユニットに対して、データの受け取りを要求する要求信号を送信し、該他の画像処理ユニットは、該要求信号を受信すると、当該画像処理ユニットから転送された前記画像データを受信し、該画像データの受信が完了すると、当該画像処理ユニットに対して、データの受信が完了した旨を表す確認信号を送信することにより、前記画像データの転送を行うものとすることができる。
【００１７】
このような構成によれば、各画像処理ユニットは、それぞれが担当する画像処理を行いつつ、効率的に画像データを順次転送することができる。
【００１８】
上記構成の画像出力装置において、
前記パスユニットは、
当該パスユニットに対応して設けられた前記画像処理ユニットが前記画像データの転送元となる他の画像処理ユニットに対して送信する前記確認信号を分岐して入力し、該確認信号の入力を検出した場合に、前記補助データの転送元となる他のパスユニットから前記補助データを入力するとともに、
当該パスユニットに対応して設けられた前記画像処理ユニットが前記画像データを転送する他の画像処理ユニットから、該パスユニットに対応して設けられた前記画像処理ユニットに対して送信される前記確認信号を分岐して入力し、該確認信号の入力を検出した場合に、前記補助データの転送先となる他のパスユニットに前記補助データを出力することにより、前記画像処理ユニット間に前記画像データが転送されるのと同期して前記補助データの転送を行うものとすることができる。
【００１９】
このような構成によれば、各画像処理ユニットが画像データを転送するために用いる信号を利用して、各パスユニットが補助データを適切に転送することができる。そのため、簡略な構成により、画像データと補助データとを同期させて転送させることが可能になる。
【００２０】
上記構成の画像出力装置において、
前記パスユニット群は、前記画像処理ユニットと同数の前記パスユニットを備えているものとすることができる。
【００２１】
このような構成であれば、画像処理ユニット群における画像データの転送とパスユニット群における補助データの転送を、容易に同期させることが可能になる。また、両ユニット群が同数のユニットによって構成されていれば、パスユニットは、どの画像処理ユニットからも補助データを入力することが可能となるため、画像処理ユニット群の構成を柔軟に変更することが可能になる。
【００２２】
上記構成の画像出力装置において、
前記各パスユニットは、所定段数のＦＩＦＯメモリによって構成されているものとしてもよい。
【００２３】
このような構成によれば、１つの画像処理ユニットが、複数の画像データを入力して画像処理を行う場合であっても、１つのパスユニットに、これと同数の補助データを蓄積することが可能になるため、画像データと補助データとを適切に同期させて転送させることが可能になる。
【発明を実施するための最良の形態】
【００２４】
以下、上述した本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
Ａ．印刷装置の概略構成：
Ｂ．印刷装置の内部構成：
Ｃ．画像処理ユニットの詳細な構成：
Ｃ−１．色変換回路（白黒エッジエンコード等）：
Ｃ−２．ハーフトーン回路（白黒エッジデコード、ハーフトーン処理等）：
Ｃ−３．ヘッド駆動用データ変換回路：
Ｄ．実施例の効果：
Ｅ．１×１モード時におけるハーフトーン回路内でのデータの流れ：
Ｆ．黒データテーブルの作成方法：
Ｇ．他の出力解像度モードの例：
Ｈ．変形例：
【００２５】
Ａ．印刷装置の概略構成：
図１は、実施例としての印刷装置１００の概略構成を示す説明図である。この印刷装置１００は本発明の画像出力装置に相当する。図示するように、本実施例の印刷装置１００は、ＵＳＢケーブル１３５等によってコンピュータ９００と接続され、コンピュータ９００から出力される画像や文書などのデータを印刷する装置である。コンピュータ９００は、これらのデータの印刷にあたり、印刷装置１００に対して印刷媒体Ｓの種類やサイズの指定、出力解像度の指定等、様々な印刷設定を行うことができる。また、印刷装置１００には、操作パネル１４０が備えられており、同様の設定を、印刷装置１００本体からも行うことができる。なお、印刷装置１００とコンピュータ９００とを併せて、広義の画像出力装置と呼ぶこともできる。
【００２６】
本実施例の印刷装置１００は、いわゆる複合機タイプの印刷装置であり、その上部には、スキャナ１１０が設けられている。このスキャナ１１０を用いれば、コンピュータ９００との接続の有無を問わず、印刷装置１００単体で画像を取り込み、取り込んだ画像を印刷することができる。また、印刷装置１００の前面にはメモリカードを挿入するためのメモリカードスロット１２０が設けられている。印刷装置１００は、コンピュータ９００との接続の有無を問わず、このメモリカードスロット１２０に挿入されたメモリカードから画像を入力して印刷を行うこともできる。
【００２７】
図の下部には、本実施例の印刷装置１００の動作の概要を示した。本実施例の印刷装置１００は、コンピュータ９００やスキャナ１１０、メモリカード等から７２０ｄｐｉ×７２０ｄｐｉの解像度で画像データを入力し、印刷媒体Ｓ上に７２０ｄｐｉ×７２０ｄｐｉの解像度で印刷を行う。かかる印刷処理において、印刷装置１００は、入力画像の中に白色と黒色の組み合わせのみで構成される部分（以下、このような部分を「白黒エッジ」と呼ぶ）が存在するか否かを判断する。その結果、白黒エッジが存在しない部分については、一旦、解像度を３６０ｄｐｉ×３６０ｄｐｉに落として量子化テーブルや個数テーブル、順序値マトリクスと呼ばれる種々のテーブルを参照して第１のハーフトーン処理を行う。一方、白黒エッジが存在する部分については、事前に作成しておいた黒データテーブルと呼ばれるテーブルを参照しつつ７２０ｄｐｉ×７２０ｄｐｉの解像度を保ったまま第２のハーフトーン処理を行う。そして、最終的に両部分を合成し、７２０ｄｐｉ×７２０ｄｐｉの出力解像度で印刷を行う。こうすることで、白色と黒色の組み合わせによって構成される文字や記号等については、高解像度のまま明瞭な印刷を行うことができ、その他の背景部分については、データ量を削減しつつ印刷を行うことができる。以下、かかる印刷装置１００の詳細な構成について説明する。
【００２８】
Ｂ．印刷装置の内部構成：
図２は、印刷装置１００の内部構成を示す説明図である。図示するように、印刷装置１００は、印刷媒体Ｓに印刷を行う機構として、インクカートリッジ２１２を搭載したキャリッジ２１０や、キャリッジ２１０を主走査方向に駆動するキャリッジモータ２２０、印刷媒体Ｓを副走査方向に搬送する紙送りモータ２３０等を備えている。
【００２９】
キャリッジ２１０は、プラテン２７０の軸方向と並行に設置された摺動軸２８０に移動自在に保持されている。キャリッジモータ２２０は、制御ユニット１５０からの指令に応じて駆動ベルト２６０を回転させることで、この摺動軸２８０に沿って、キャリッジ２１０を主走査方向に往復運動させることができる。
【００３０】
紙送りモータ２３０は、制御ユニット１５０からの指令に応じてプラテン２７０を回転させることで、プラテン２７０の軸方向と垂直に印刷媒体Ｓを搬送する。つまり、紙送りモータ２３０は、キャリッジ２１０を相対的に副走査方向に移動させることができる。
【００３１】
キャリッジ２１０には、シアン（Ｃ）、マゼンタ（Ｍ）、イエロ（Ｙ）、ブラック（Ｋ）、ライトシアン（ｌｃ）、ライトマゼンタ（ｌｍ）、ダークイエロ（ｄｙ）、透明（ｃｒ）、の計８色のインクを収容したインクカートリッジ２１２が装着される（図中には、便宜上、４種類のインクカートリッジのみを示している）。インクカートリッジ２１２がキャリッジ２１０に装着されると、インクカートリッジ２１２内のインクは、図示しないインク通路を通じて、キャリッジ２１０の下面に設けられたインクヘッド２１１に供給される。なお、本実施例では、８色のインクを用いるものとするが、ライトシアンやライトマゼンタ、ダークイエロ、透明、の各色については使用しないものとしてもよい。なお、透明インクは、主に、他のインクが吐出されない白紙部分について吐出されるインクである。この透明インクによれば、色が印刷されない部分についても他のインクと同様の光沢感を与えることができる。
【００３２】
インクヘッド２１１には、インクの種類毎に８組のノズル列が副走査方向に配列されている。１組のノズル列には、９０個のノズルが一定のピッチ（例えば、１２０分の１インチ＝０．２１ｍｍ）で配列されている。つまり、キャリッジが１回、主走査されると最大９０本のラスタラインが一定のピッチ間隔を空けて同時に印刷媒体Ｓ上に形成されることになる。このピッチ間隔は、最終的に印刷媒体上に形成される隣接したラスタ間のピッチの整数倍である。ここで、ノズル列の副走査方向に配列されるノズル数をＮ［個］（Ｎは正の整数）、およびノズル間のドットピッチをｋ［個］（ｋはＮと互いに素の関係にある整数）、ノズル密度をＤ［個／インチ］とした場合、主走査の度に、Ｎ／（Ｄ・ｋ）相当の一定の距離だけ副走査方向へ印刷媒体を搬送すると、副走査方向において隣接するラスタが異なるノズルによって形成されることになる。そのため、個々のノズルの特性やピッチにばらつきが多少ある場合でも、このようなばらつきに起因するバンディングの発生を抑えることができ、高画質な印刷を行なうことができる。このような印刷方法をインタレース印刷という。
【００３３】
インクヘッド２１１は、制御ユニット１５０による制御に応じて、吐出するインク滴の大きさを調整することができる。これにより、大ドット、中ドット、小ドットという３種類の大きさのドットを印刷媒体Ｓ上に形成することができる。
【００３４】
図３は、インクヘッド２１１から異なる大きさのインク滴が吐出される原理を示す説明図である。図の上部に示した電圧波形において、破線で示した波形が通常のドットを吐出する際の波形である。この電圧波形中に示した区間ｄ２において、一旦、マイナスの電圧をピエゾ素子ＰＥに印加すると、インク通路６８の断面積を増大する方向にピエゾ素子ＰＥが変形する。インクカートリッジ２１２のインク通路からのインクの供給速度には限界があるため、インク通路６８の拡大に対してインクの供給量が不足する。この結果、図３下部の状態Ａに示した通り、ノズルＮｚ先端のインクの界面Ｍｅは、ノズルＮｚ内側に凹んだ状態となる。
【００３５】
一方、実線で示す電圧波形を用い、区間ｄ１に示すようにマイナス電圧をピエゾ素子ＰＥに急激に印加すると、インクカートリッジ２１２からのインクの供給量はさらに不足した状態となる。従って、状態ａで示す通りインク界面Ｍｅは状態Ａに比べて更に内側に凹んだ状態となる。次に、ピエゾ素子ＰＥに正の電圧が印加されると（区間ｄ３）、インク通路６８が狭められ、インクが吐出される。このとき、インク界面Ｍｅがあまり内側に凹んでいない状態（状態Ａ）からは状態Ｂおよび状態Ｃに示すごとく大きなインク滴が吐出される。一方、インク界面Ｍｅが大きく内側に凹んだ状態（状態ａ）からは状態ｂおよび状態ｃに示すごとく小さなインク滴が吐出される。インクヘッド２１１からは、このようにして大きさの異なるインクが吐出されることになる。
【００３６】
説明を図２に戻す。印刷装置１００は、上述した印刷機構を制御するための制御ユニット１５０を備えている。制御ユニット１５０には、印刷対象の画像データを入力するためのＵＳＢインタフェース１３０や、スキャナ１１０、メモリカードスロット１２０が接続されている。また、制御ユニット１５０には、ユーザによる操作を受け付けるための操作パネル１４０が接続されている。
【００３７】
制御ユニット１５０は、ＵＳＢインタフェース１３０やスキャナ１１０、メモリカードスロット１２０から入力した画像データに対して、所定の画像処理を施し、印刷機構を制御して印刷を行う機能を備える。制御ユニット１５０は、かかる機能を実現するため、ＣＰＵ１５１やＳＤＲＡＭ１５２、ＲＯＭ１５３、ＥＥＰＲＯＭ１５４、画像処理ユニット１５５、ヘッドコントロールユニット１５６等を備えている。これらの各デバイスは、所定のバスを介して相互に接続されている。
【００３８】
ＲＯＭ１５３には、印刷装置１００の動作全体を制御するためのプログラムとしてファームウェアが記録されている。ＣＰＵ１５１は、印刷装置１００の電源投入時に、このファームウェアをＳＤＲＡＭ１５２の所定のワークエリアにロードして実行する。
【００３９】
図４は、ＳＤＲＡＭ１５２のメモリマップを示す説明図である。図示するように、ＳＤＲＡＭ１５２には、ファームウェアＦＷのほか、様々なデータがＣＰＵ１５１によってＲＯＭ１５３から読み出されて展開される。展開されるデータとしては、例えば、白黒エッジテーブルＥＴ、色変換テーブルＬＵＴ、量子化テーブルＱＴ、第１ドット個数テーブルＤＴ１、第２ドット個数テーブルＤＴ２、順序値マトリクスＯＭ、黒データテーブルＢＴなどがある。また、ＳＤＲＡＭ１５２には、画像処理時に生成される様々な中間データを一時的に記憶するための様々なバッファ領域が確保されている。このバッファ領域としては、例えば、ラインバッファＬＢ、エンコードデータバッファＥＢ、ドット形成用データバッファＤＢ、ヘッド駆動用データバッファＨＢなどがある。なお、ここに挙げたデータやバッファの働きについては、必要に応じてその都度説明する。
【００４０】
説明を図２に戻す。ＥＥＰＲＯＭ１５４には、印刷装置１００の製造工程で検出された各個体に固有の特性を補正するためのデータが記録されている。かかる補正データとしては、例えば、インクヘッド２１１の各ノズルから吐出されるインクの量や、各ノズルから吐出されるインクの吐出方向を補正するためのデータが含まれる。これらの補正データは、後述する画像処理ユニット１５５によって色調を補正する際に用いられる。
【００４１】
画像処理ユニット１５５は、印刷に関する画像処理機能に特化したカスタムＬＳＩであり、内部は、大きく分けて、色変換回路３００と、ハーフトーン回路４００と、ヘッド駆動用データ変換回路５００とによって構成されている。色変換回路３００は、ＲＧＢ形式のデータをＣＭＹＫ形式のデータに変換する回路である。ハーフトーン回路４００は、ＣＭＹＫ形式のデータに対してハーフトーン処理を施す回路である。ヘッド駆動用データ変換回路５００は、ハーフトーン処理のなされたデータを、インクヘッド２１１を駆動するためのデータに変換するための回路である。
【００４２】
画像処理ユニット１５５は、画像処理に必要な種々の設定情報をセットするためのレジスタを備えている（図示せず）。印刷を行おうとする画像データの解像度や印刷媒体のサイズ、出力解像度のモードなど、コンピュータ９００や操作パネル１４０によってユーザから設定された様々な設定情報は、ＣＰＵ１５１によってこのレジスタに対して書き込まれる。画像処理ユニット１５５は、レジスタに書き込まれた設定情報に応じて種々の画像処理を行う。
【００４３】
ヘッドコントロールユニット１５６は、画像処理ユニット１５５によって最終的に生成されたヘッド駆動用データをＳＤＲＡＭ１５２のヘッド駆動用データバッファＨＢから取得し、かかるヘッド駆動用データに基づき、紙送りモータ２３０とキャリッジモータ２２０を制御しつつ、各ノズルから適切なタイミングでインク滴を吐出する。こうすることで、印刷媒体Ｓ上の適切な位置に各色のドットが形成され、カラー印刷が行われる。
【００４４】
Ｃ．画像処理ユニットの詳細な構成：
次に、画像処理ユニット１５５の詳細な構成について説明する。上述したように画像処理ユニット１５５は、色変換回路３００とハーフトーン回路４００とヘッド駆動用データ変換回路５００とを備えているため、以下ではこれらの回路について順に説明する。
【００４５】
Ｃ−１．色変換回路：
図５は、色変換回路３００の詳細な構成を示すブロック図である。この色変換回路３００は、ＲＧＢ形式で表された画像データ（以下、「ＲＧＢ画像データ」と呼ぶ）をＣＭＹＫ形式の画像データ（以下、「ＣＭＹＫ画像データ」と呼ぶ）に変換する機能や、ＣＭＹＫ画像データに対して画質を向上させるための種々の画像処理を行う機能、入力したＲＧＢ画像データから白黒エッジ部分を抽出する機能等を有している。
【００４６】
色変換回路３００は、図示するように、ライン入力ユニット３１０と、白黒エッジ処理ユニット３２０と、色変換ユニット３３０と、インク量補正ユニット３４０と、印刷縞抑制ユニット３５０と、ビット減縮ユニット３６０と、透明インク後処理ユニット３７０と、ブロック内平滑化ユニット３８０とを備えている。以下、図の上段に位置するこれらのユニットをまとめてメインユニットと呼ぶ。
【００４７】
なお、本実施例において、色変換回路３００中の、色変換ユニット３３０と、インク量補正ユニット３４０と、印刷縞抑制ユニット３５０と、ビット減縮ユニット３６０と、透明インク後処理ユニット３７０と、ブロック内平滑化ユニット３８０と、後述するハーフトーン回路４００内のエンコーダ４１０とが、本願の「画像処理ユニット」に対応する。
【００４８】
メインユニットは、データ線（ｄａｔａ）、リクエスト線（ｒｅｑ）、アクノリッジ線（ａｃｋ）の３種類の信号線によって上述した順に直列に接続されている。各ユニットは、これらの信号線を用いてｒｅｑ信号とａｃｋ信号とをやりとりすることで、データの受け渡しを行っている。詳しくは、データを送信する側のユニットは、受信側のユニットに対してデータを送信すると、データを送信したことを知らせるｒｅｑ信号を送信する。受信側は、ｒｅｑ信号を受信すると、データが送信されてきていることがわかるので、データの読み込み処理を開始し、データを受信していることを示すａｃｋ信号を返信する。そして、受信側のユニットが、読み込み処理を完了してａｃｋ信号を元に戻すと、送信側はデータが確実に受信されたことが確認できる。そして、送信側のユニットは、ｒｅｑ信号を元に戻し、次のデータの送信に移行する。
【００４９】
色変換回路３００には、色変換ユニット３３０からブロック内平滑化ユニット３８０までのメインユニットに対応するように、第１パスユニット３９０ａから第６パスユニット３９０ｆまでの計６つのパスユニット３９０ａ〜３９０ｆが直列に設けられている。これらのパスユニット３９０ａ〜３９０ｆは、白黒エッジ処理ユニット３２０から出力されたデータを、後述するハーフトーン回路４００に伝達すると共に、色変換ユニット３３０から出力される種々の情報をブロック内平滑化ユニット３８０まで伝達するために設けられたユニットである。
【００５０】
各パスユニット３９０ａ〜３９０ｆは、そのパスユニットに対応して設けられたメインユニットが前段のメインユニットに送信するａｃｋ信号を分岐して入力すると、前段のパスユニットからデータを取り込む。そして、対応して設けられたメインユニットが後段のメインユニットから受信したａｃｋ信号を分岐して入力すると、後段のパスユニットに対してデータを転送する。つまり、メインユニットにデータが伝達するのと同期して、パスユニット３９０ａ〜３９０ｆにもデータが順次伝達していくことになる。このような構成によれば、パスユニットを転送されている種々のデータを、対応するメインユニットに容易に取り込むことができ、回路の拡張性を高めることができる。また、取り扱うデータの容量が増加し、メインユニット間のバス幅が不足した場合にも、パスユニットを利用することでより多くのデータを扱うことが可能になる。
【００５１】
図６は、パスユニット３９０ａ〜３９０ｆの内部構成を示す説明図である。図示するようにパスユニット３９０ａ〜３９０ｆは、８ビット１６段のＦＩＦＯメモリとして構成されている。このＦＩＦＯメモリには、前段のパスユニットから転送された８ビットのデータが順次蓄積される。そして、後段のパスユニットに対して、蓄積された順序が古い順にデータが出力される。この８ビットのデータは、５ビットの白黒エッジデータと２ビットのエッジデータと１ビットのノイズデータとから構成される。
【００５２】
（Ｃ−１−１）ライン入力ユニット：
ここで、説明を図５に戻し、メインユニットを構成する各ユニットの詳細について説明する。
ライン入力ユニット３１０は、ＵＳＢインタフェース１３０やスキャナ１１０、メモリカードスロット１２０等から７２０ｄｐｉ×７２０ｄｐｉの解像度を有するＲＧＢ画像データを入力し、入力したＲＧＢ画像データをラインバッファＬＢに蓄積する。そして、このラインバッファＬＢからＲＧＢ画像データを２ラインずつ読み込み、読み込んだ２ライン分のデータを白黒エッジ処理ユニット３２０に転送する。なお、ライン入力ユニット３１０は、入力したＲＧＢ画像データの解像度が３６０ｄｐｉ×３６０ｄｐｉの時に、１ラインずつ画像データを転送する機能も備えている。
【００５３】
（Ｃ−１−２）白黒エッジ処理ユニット：
図７は、図５に示した白黒エッジ処理ユニット３２０の内部構成を示す説明図である。図示するように、白黒エッジ処理ユニット３２０は、ライン入力ユニット３１０に接続された白黒エッジ判定回路３２１と、白黒エッジ判定回路３２１の出力を受けて階調値の平均化処理を行う平均化回路３２２と、白黒エッジ判定回路３２１の出力を受けて、白黒エッジ部分のエンコードを行う白黒エッジエンコード回路３２３と、ライン入力ユニット３１０と平均化回路３２２からの出力を受けて色変換ユニット３３０に出力するデータの選択を行うセレクタ回路３２４とを備えている。
【００５４】
（Ｃ−１−２−１）白黒エッジ判定回路：
白黒エッジ判定回路３２１は、入力した画素が白黒エッジに該当するか否かを判定する回路である。具体的には、白黒エッジ判定回路３２１は、ライン入力ユニット３１０から入力した１ライン目と２ライン目の画像データから、２×２個の画素群（図中のＡ，Ｂ，Ｃ，Ｄ）を順次抽出し、この４つの画素が白黒エッジパターンであるか否かを判別する。白黒エッジパターンとは、４つの画素が、白（ＲＧＢ＝（２５５，２５５，２５５））と黒（ＲＧＢ＝（０，０，０））のみの色で構成されているパターンのうち、全画素白および全画素黒のパターンを除いたパターンのことをいう。白黒エッジ判定回路３２１は、抽出した４つの画素が白黒エッジパターンであれば、白黒エッジ判定フラグに「１」をセットし、白黒エッジパターンでなければ、白黒エッジ判定フラグに「０」をセットする。白黒エッジ判定回路３２１は、白黒エッジパターンの判別が終了すると、判定対象となった４つの画素のＲＧＢデータを、平均化回路３２２と白黒エッジエンコード回路３２３との両者に出力する。このとき、白黒エッジエンコード回路３２３に対しては、上述した白黒エッジ判定フラグの値も出力する。
【００５５】
（Ｃ−１−２−２）白黒エッジエンコード回路：
白黒エッジエンコード回路３２３は、白黒エッジパターンのデータを二値化して、５ビットのデータにエンコードする回路である。具体的には、白黒エッジ判定回路３２１から入力した白黒エッジ判定フラグに「１」がセットされていれば、白黒エッジ判定回路３２１から転送された４つの画素のＲＧＢデータについて、白黒エッジテーブルＥＴを参照してデータ変換を行い、５ビットの白黒エッジデータを生成する。
【００５６】
図８は、白黒エッジテーブルＥＴの一例を示す説明図である。図示するように、白黒エッジテーブルＥＴには、４つの画素のパターンに応じて、４ビットのエンコードデータが対応づけられて記憶されている。この白黒エッジテーブルＥＴは、図４に示したようにＳＤＲＡＭ１５２に記憶されている。図の上部に示すように、４つの画素の左上の画素をＡ、右上をＢ、左下をＣ、右下をＤとすると、例えば、白黒エッジエンコード回路３２３は、４つの画素のＲＧＢデータが、（Ａ，Ｂ，Ｃ，Ｄ）＝（０，０，０，２５５）であれば、「０００１」という４ビットデータに変換し、（Ａ，Ｂ，Ｃ，Ｄ）＝（０，０，２５５，０）であれば、「００１０」という４ビットデータに変換する。なお、この白黒エッジテーブルＥＴは、比較的、データ容量が少量であるため、白黒エッジエンコード回路３２３内に回路として組み込まれていてもよい。また、白黒エッジテーブルＥＴを用いなくとも、各画素の階調値を２５５で除算し、その商の部分を結合してエンコードデータを動的に生成してもよい。
【００５７】
説明を図７に戻す。一方、白黒エッジエンコード回路３２３は、白黒エッジ判定回路３２１から受信した白黒エッジ判定フラグに「０」がセットされていれば、白黒エッジテーブルＥＴとは無関係に、白黒エッジ判定回路３２１から転送された４つの画素のＲＧＢデータを、「００００」という４ビットデータにエンコードする。
【００５８】
白黒エッジエンコード回路３２３は、以上のように、４つの画素のＲＧＢデータを４ビットのデータに変換すると、エンコードした結果の４ビットデータの最上位ビットに、白黒エッジ判定フラグの内容を付加し、最終的に５ビットの白黒エッジデータを生成する。例えば、４つの画素をエンコードした結果が「０００１」であれば、最終的に得られるデータは、「１０００１」となる。なお、４つの画素が白黒エッジパターンでない場合には、最終的に得られるデータは、「０００００」となる。この「０００００」となるデータは、白黒エッジデータとは区別してダミーデータと呼ぶ場合がある。
【００５９】
白黒エッジエンコード回路３２３は、こうしてエンコードされた５ビットの白黒エッジデータを、第１パスユニット３９０ａに転送する。そのため、パスユニット３９０ａ〜３９０ｆには、処理対象の４つの画素が白黒エッジパターンである場合には、白黒エッジデータが順次転送され、白黒エッジパターンでない場合には、ダミーデータが順次転送されることになる。
【００６０】
（Ｃ−１−２−３）平均化回路：
次に、図７の平均化回路３２２について説明する。平均化回路３２２は、４つの画素の階調値を平均化して解像度を低減する回路である。つまり、平均化回路３２２は、白黒エッジ判定回路３２１から入力した４つの画素のＲＧＢデータに対して、４つの画素の階調値を平均化することで、７２０ｄｐｉ×７２０ｄｐｉの画像データを３６０ｄｐｉ×３６０ｄｐｉ相当のデータに変換する。なお、白黒エッジ判定回路３２１から出力された４つの画素のＲＧＢデータは、白黒エッジパターンに該当するか否かにかかわらず、平均化回路３２２にも入力されため、結果的に、白黒エッジパターンに該当する４つの画素も平均化されることになる。
【００６１】
４つの画素の階調値の平均化は、次の演算によって行うことができる。すなわち、４つの画素Ａ，Ｂ，Ｃ，Ｄの階調値をそれぞれ、
Ａ＝（Ｒａ，Ｇａ，Ｂａ）
Ｂ＝（Ｒｂ，Ｇｂ，Ｂｂ）
Ｃ＝（Ｒｃ，Ｇｃ，Ｂｃ）
Ｄ＝（Ｒｄ，Ｇｄ，Ｂｄ）
とすると、変換後の１画素の階調値（Ｒ，Ｇ，Ｂ）は、
Ｒ＝（Ｒａ＋Ｒｂ＋Ｒｃ＋Ｒｄ）／４
Ｇ＝（Ｇａ＋Ｇｂ＋Ｇｃ＋Ｇｄ）／４
Ｂ＝（Ｂａ＋Ｂｂ＋Ｂｃ＋Ｂｄ）／４
となる。もちろん、４で除する際には、２ビット分、値を右方向へビットシフトすることで容易に演算を行うことができる。こうして平均化されたＲＧＢデータは、３６０ｄｐｉ×３６０ｄｐｉの解像度に変換された１×１の新たな画素の階調値としてセレクタ回路３２４に出力される。
【００６２】
（Ｃ−１−２−４）セレクタ回路：
セレクタ回路３２４は、平均化回路３２２から出力された３６０ｄｐｉ×３６０ｄｐｉのＲＧＢデータと、ライン入力ユニット３１０から出力されたＲＧＢデータとを入力する。そして、画像処理ユニット１５５が入力した原画像データの解像度が７２０ｄｐｉ×７２０ｄｐｉの場合には、平均化回路３２２から入力したＲＧＢデータを選択して、これを後段の色変換ユニット３３０に転送する。一方、画像処理ユニット１５５が入力した原画像データの解像度が３６０ｄｐｉ×３６０ｄｐｉの場合には、ライン入力ユニット３１０から直接入力したＲＧＢデータを選択して、これを後段の色変換ユニット３３０に転送する。つまり、印刷対象の画像データの入力解像度が低解像度（３６０ｄｐｉ×３６０ｄｐｉ）の場合には、白黒エッジ部分について高解像度（７２０ｄｐｉ×７２０ｄｐｉ）で処理することはできないから、白黒エッジ処理ユニット３２０は、ライン入力ユニット３１０から入力したＲＧＢデータをスルーして出力するのである。
【００６３】
以上で説明したように、白黒エッジ処理ユニット３２０は、ライン入力ユニット３１０から入力した画像データが、白黒エッジパターンからなるデータであれば、第１パスユニット３９０ａに対して７２０ｄｐｉ×７２０ｄｐｉの解像度を保ちつつ５ビット化した白黒エッジデータを出力し、更に、色変換ユニット３３０に対して、４画素の階調値を平均化した３６０ｄｐｉ×３６０ｄｐｉのＲＧＢデータを出力する。一方、ライン入力ユニット３１０から入力した画像データが、白黒エッジパターン以外の通常のデータであれば、第１パスユニットに対しては、５ビットのダミーデータを出力し、更に、色変換ユニット３３０に対して４画素の階調値を平均化した３６０ｄｐｉ×３６０ｄｐｉのＲＧＢデータを出力することになる。
【００６４】
（Ｃ−１−３）色変換ユニット：
図９は、図５に示した色変換ユニット３３０の内部構成を示す説明図である。色変換ユニット３３０は、白黒エッジ処理ユニット３２０から入力したＲＧＢデータに対して色変換を施し、ＣＭＹＫデータを生成するユニットである。図示するように、色変換ユニット３３０は、白黒エッジ処理ユニット３２０と接続され、ＲＧＢ形式のデータをＣＭＹＫ形式のデータに変換する変換回路３３１と、白黒エッジ処理ユニット３２０と接続され、２画素間のエッジを判定する標準エッジ判定回路３３２と、１ビットのノイズを発生するノイズ発生回路３３３と、変換回路３３１と標準エッジ判定回路３３２とノイズ発生回路３３３とに接続され、これらの回路から出力されたデータを用いて階調値の平滑化を行うスムージング回路３３４とを備えている。
【００６５】
（Ｃ−１−３−１）変換回路：
変換回路３３１は、ＳＤＲＡＭ１５２に記憶された色変換テーブルＬＵＴを参照して、白黒エッジ処理ユニット３２０から入力したＲＧＢデータをＣＭＹＫデータに変換する回路である。色変換テーブルＬＵＴには、ＲＧＢ形式で表される色と、Ｃ（シアン），Ｍ（マゼンタ），Ｙ（イエロ），Ｋ（黒），ｌｃ（ライトシアン），ｌｍ（ライトマゼンタ），ｄｙ（ダークイエロ），ｃｒ（透明インク）の計８色の組み合わせによって表される色とが、対応づけられて記録されている。変換回路３３１は、白黒エッジ処理ユニット３２０から入力したＲＧＢデータに対応するＣＭＹＫデータを、この色変換テーブルＬＵＴを参照して導き出すことで、色変換を行うことができる。
【００６６】
（Ｃ−１−３−２）標準エッジ判定回路：
標準エッジ判定回路３３２は、白黒エッジ処理ユニット３２０から２画素分のＲＧＢデータを入力すると、これらの画素間の水平方向への勾配（エッジ）を求め、その強度を、０から２までの度合いで表し、２ビットの標準エッジデータを生成する。かかる標準エッジデータは、白黒エッジデータとは異なる種類のデータである。
【００６７】
エッジの判定手順は、概ね次の通りである。まず、標準エッジ判定回路３３２は、水平方向の２つの画素のＲＧＢ階調値の差分Ｒｄｉｆｆ，Ｇｄｉｆｆ，Ｂｄｉｆｆを、次のように計算する。なお、エッジを判定する対象画素のＲＧＢ値をＲ，Ｇ，Ｂと表し、その左側に位置する画素のＲＧＢ値をＲｐ，Ｇｐ，Ｂｐと表す。
【００６８】
Ｒｄｉｆｆ＝｜Ｒ−Ｒｐ｜
Ｇｄｉｆｆ＝｜Ｇ−Ｇｐ｜
Ｂｄｉｆｆ＝｜ＢーＧｐ｜
【００６９】
次に、以下の式によって、ＲＧＢ毎に重み付けを行う。なお、ＴＲ、ＴＧ、ＴＢは、所定の閾値であり、例えば、ＴＲ＝１０、ＴＧ＝８、ＴＢ＝１４とすることができる。
【００７０】
Ｒｄｉｆｆ＝Ｒｄｉｆｆ−（ＴＲ−ＴＧ）
Ｇｄｉｆｆ＝Ｇｄｉｆｆ
Ｂｄｉｆｆ＝Ｂｄｉｆｆ−（ＴＢ−ＴＧ）
【００７１】
そして、Ｒｄｉｆｆ、Ｇｄｉｆｆ、Ｂｄｉｆｆのうち、最大値となる値を、最大差分ＤｉｆｆＭａｘとして次のように選択する。
【００７２】
ＤｉｆｆＭａｘ＝ｍａｘ（Ｒｄｉｆｆ，Ｇｄｉｆｆ，Ｂｄｉｆｆ）
【００７３】
最後に、最大差分ＤｉｆｆＭａｘが、閾値ＴＧよりも小さければ、エッジなしと判定し、標準エッジデータを「０」とする。また、最大差分ＤｉｆｆＭａｘが、閾値ＴＧよりも大きく、閾値ＴＧに所定のオフセット値（例えば８）を加えた値よりも小さければ、弱いエッジがあると判定し、標準エッジデータを「１」とする。また、最大差分ＤｉｆｆＭａｘが、閾値ＴＧに所定のオフセット値を加えた値よりも大きければ、強いエッジありと判定し、標準エッジデータを「２」とする。なお、白黒エッジ処理ユニット３２０から入力した白黒エッジ判定フラグの状態が、「１」であれば、最大差分ＤｉｆｆＭａｘの値に関係なく、その画素の標準エッジデータは、最も強いエッジを表す「２」とする。標準エッジ判定回路３３２は、このようにして判定された標準エッジデータをスムージング回路３３４と第２パスユニット３９０ｂとに対して出力する。第２パスユニット３９０ｂに出力された標準エッジデータは、後述するブロック内平滑化ユニット３８０までパスユニット群を通じて転送されることになる。
【００７４】
（Ｃ−１−３−３）ノイズ発生回路：
ノイズ発生回路３３３は、「０」か「１」かの値を表す１ビットのノイズデータ（乱数）をランダムに発生する回路である。ノイズ発生回路３３３は、異なる２つのノイズデータを生成し、一方をスムージング回路３３４に出力し、他方を、第２パスユニット３９０ｂに出力する。第２パスユニット３９０ｂに出力されたノイズデータは、後述するブロック内平滑化ユニット３８０までパスユニット群を通じて転送されることになる。
【００７５】
なお、上記標準エッジ判定回路３３２によって生成された標準エッジデータと、上記ノイズ発生回路３３３によって生成されたノイズデータとが、本願の「補助データ」に対応する。
【００７６】
（Ｃ−１−３−４）スムージング回路：
スムージング回路３３４は、標準エッジ判定回路３３２から入力した標準エッジデータと、ノイズ発生回路３３３から入力したノイズデータとに基づき、変換回路３３１から出力されたＣＭＹＫデータに対して階調値の平滑化を行う。平滑化の手順は、概ね次の通りである。
【００７７】
まず、スムージング回路３３４は、標準エッジデータの値を判定し、標準エッジデータの値が、０または１であれば、以下の演算により、水平方向の２画素についてＣＭＹＫ各色の平滑化を行う。なお、下記演算式において、Ｃは、スムージング対象の画素の階調値を表し、Ｃｐは、スムージング対象の画素の左側に位置する画素の階調値を表す。また、ＳＰ０およびＳＰ１は、所定の重み付けパラメータ（例えば、ＳＰ０＝４，ＳＰ１＝２）を表し、Ｎは、ノイズデータの値（０または１）を表す。
【００７８】
（１）標準エッジデータが０の場合：
Ｃ＝（Ｃ＋Ｃｐ×（ＳＰ０−１）＋Ｎ×（ＳＰ０−１））／ＳＰ０
（２）標準エッジデータが１の場合：
Ｃ＝（Ｃ＋Ｃｐ×（ＳＰ１−１）＋Ｎ×（ＳＰ１−１））／ＳＰ１
【００７９】
一方、スムージング回路３３４は、標準エッジデータの値が２であれば、その画素が強いエッジを有していると判断し、平滑化を行わない。こうすることにより、出力画像の明瞭度が低下することを抑制することができる。スムージング回路３３４は、こうして平滑化処理を行ったＣＭＹＫデータをインク量補正ユニット３４０に出力する。
【００８０】
（Ｃ−１−４）インク量補正ユニット：
説明を図５に戻す。インク量補正ユニット３４０は、色変換ユニット３３０から出力されたＣＭＹＫデータを入力し、かかるＣＭＹＫデータの階調値を補正することで、各ノズルから吐出されるインク量の補正を行うためのユニットである。インクの種類毎に用意されたインクヘッド２１１内のノズル列は、製造誤差に起因してその内径やピエゾ素子の変形度が異なることがあり、同じ階調値でインクを吐出したとしても、吐出されるインクの量がノズル列毎に異なることがある。そのため、印刷装置１００の製造工程において、各ノズル列から吐出されるインクの量が予め検査され、その量の相違を解消するための補正データがＥＥＰＲＯＭ１５４に記録されている。
【００８１】
インク量補正ユニット３４０は、ＥＥＰＲＯＭ１５４に記録された補正データを読み込み、かかる補正データに基づいて、ＣＭＹＫ形式の各色の階調値を補正する。例えば、シアンのノズル列から吐出されるインクの量が、他の色のノズル列から吐出されるインクの量よりも多ければ、シアンの階調値が他の色の階調値よりも低くなるようにその階調値が補正されることなる。こうすることで、各ノズル列から吐出されるインクの量を均一化することができる。
【００８２】
インク量補正ユニット３４０は、補正の精度を向上させるため、入力された８ビットのデータを内部で１２ビットのデータに拡張した上で補正を行なう。つまり、通常２５６階調で表されるＣＭＹＫの階調値を４０９６階調まで拡張して補正を行う。１２ビットへの拡張は、入力したＣＭＹＫデータを左に４ビット分だけビットシフトすることにより行うことができる。インク量補正ユニット３４０は、上述した補正を行うと、各色１２ビットのＣＭＹＫデータを印刷縞抑制ユニット３５０に転送する。
【００８３】
（Ｃ−１−５）印刷縞抑制ユニット：
印刷縞抑制ユニット３５０は、インク量補正ユニット３４０から各色１２ビットのＣＭＹＫデータの転送を受けると、かかるデータに対して、印刷縞を抑制するための補正を行う。インクヘッド２１１内のノズル列は、一定のピッチで副走査方向に配列されているが、全てのノズルから垂直にインクが吐出されるとは限らず、ノズルの製造誤差によってインクが傾いて吐出される場合がある。このような場合に印刷媒体に画像を印刷すると、この傾きによって、主走査方向に印刷縞が現れる場合がある。そのため、印刷装置１００の製造工程において、各ノズルの傾きが検査され、その傾きを解消するための補正データが予めＥＥＰＲＯＭ１５４に記録されている。
【００８４】
印刷縞抑制ユニット３５０は、ＥＥＰＲＯＭ１５４に記録された補正データを読み込み、かかる補正データに基づいてＣＭＹＫ形式の各色の階調値を補正する。例えば、現在入力したＣＭＹＫデータが、印刷縞が発生するラスタラインに属するデータであれば、階調値を高めることで、インクの吐出数が多くなるように補正を行う。また、ノズルの傾きによってドットが重なってしまうラスタラインに属するＣＭＹＫデータであれば、階調値を低減することで、インクの吐出数が少なくなるように補正を行う。こうすることで、印刷縞の発生を抑制することができる。なお、この印刷縞抑制ユニット３５０においても、補正の精度を向上させるため、１２ビットに拡張されたＣＭＹＫデータに対して補正を行う。印刷縞抑制ユニット３５０は、上述した補正を行うと、各色１２ビットのＣＭＹＫデータをビット減縮ユニット３６０に転送する。
【００８５】
なお、上述したインク量補正ユニット３４０および印刷縞抑制ユニット３５０は、それぞれＥＥＰＲＯＭ１５４から補正データを入力するものとしたが、補正データは、印刷装置１００の電源投入時にＥＥＰＲＯＭ１５４からＳＤＲＡＭ１５２にロードして、ＳＤＲＡＭ１５２から入力するものとしてもよい。こうすることにより、高速に補正を行うことができる。
【００８６】
（Ｃ−１−６）ビット減縮ユニット：
ビット減縮ユニット３６０は、印刷縞抑制ユニット３５０から１２ビットのＣＭＹＫデータを受信すると、データ量を削減するため、かかるデータを減縮して８ビットのデータに戻す。具体的には、１２ビットのＣＭＹＫデータに対して４ビットのノイズを加算した後に、１２ビット中の下位４ビットを切り落とすことで８ビットのデータを生成する。もちろん、１２ビットのデータを４ビット分、右にビットシフトしてから上位４ビットを切り落とすものとしてもよい。上述のようにノイズを加算するものとすれば、単純に下位４ビットを切り落とす場合よりも、連続して同じデータが生成されることが抑制され、画質が低下してしまうことを抑制することができる。
【００８７】
（Ｃ−１−７）透明インク後処理ユニット：
透明インク後処理ユニット３７０は、ビット減縮ユニット３６０から８ビットのＣＭＹＫデータを入力すると、かかるＣＭＹＫデータのうち、ｃｒ（透明インク）のデータについて、印刷媒体Ｓよりもはみ出す部分にインクが吐出されないように階調値を０とする補正を行う。画像処理ユニット１５５のレジスタには、印刷媒体Ｓのサイズ情報がＣＰＵ１５１によってセットされるため、かかるレジスタを参照することで、現在入力したＣＭＹＫデータのドット形成位置が印刷媒体Ｓの外に該当するか否かを判断することができる。
【００８８】
印刷装置１００は、いわゆる縁なし印刷時には、印刷媒体Ｓよりも大きな印刷面に対してインクを吐出し、余分なインクを印刷媒体Ｓの外に捨てることで印刷媒体Ｓの全面に亘って印刷を行うが、透明インクは、顔料（あるいは染料）を含まない分、他のインクに比べて樹脂成分が多く含まれており、印刷媒体外にインクを捨てると、廃棄されたインクを吸収するための廃インク吸収体（スポンジ等）の表面に樹脂が固着して他のインクの吸収が妨げられるおそれがある。そのため、透明インク後処理ユニット３７０により、印刷媒体からはみ出す印刷領域について透明インクの階調値をゼロとすれば、このような現象を抑制することが可能になる。
【００８９】
（Ｃ−１−８）ブロック内平滑化ユニット：
ブロック内平滑化ユニット３８０は、透明インク後処理ユニット３７０から、隣接する２画素分のＣＭＹＫデータを入力し、更に、第５パスユニット３９０ｅを介して色変換ユニット３３０から出力された２ビットの標準エッジデータと１ビットのノイズデータとを入力する。そして、色変換ユニット３３０から出力された２ビットの標準エッジデータと１ビットのノイズデータとを利用して、透明インク後処理ユニット３７０から入力した２画素の階調値の平滑化を行う。平滑化は、２画素間の標準エッジデータが設定値（例えば０もしくは１）以下となる場合に、２画素のＣＭＹＫデータを加算し、更に、１ビットのノイズデータの値をこれに加算して、その加算値を２で除算することで行う。つまり、新たな階調値は、２画素とも同じ値となる。画素間でエッジの強度が低い場合には、後述する２×２モード時の順序値マトリクスに基づく１ブロック内のドットの配置の結果、印刷媒体上にドットが隣接して形成されてしまう場合があり、画質が低下するおそれがある。そのため、ハーフトーン処理を行う前に予め、エッジの強度の低い画素同士の階調値を平均化して同じ値とすることで、ドットが隣接して形成されないようにしている。この結果、画質を向上させることができる。なお、本実施例では、ブロック内平滑化ユニット３８０は、色変換ユニット３３０から出力されて、パスユニット群を転送されてきた標準エッジデータとノイズデータとを利用するものとしたため、ブロック内平滑化ユニット３８０内でこれらのデータを生成する必要がなく、重複した処理を省略することができる。
【００９０】
以上で色変換回路３００の詳細な構成について説明した。かかる色変換回路３００によれば、ハーフトーン回路４００に対して、３６０ｄｐｉ×３６０ｄｐｉ相当の解像度を有する各色８ビットのＣＭＹＫデータと、７２０ｄｐｉ×７２０ｄｐｉ相当の解像度を有する５ビットの白黒エッジデータとが出力されることになる。
【００９１】
Ｃ−２．ハーフトーン回路：
図１０は、ハーフトーン回路４００とヘッド駆動用データ変換回路５００の詳細な構成を示すブロック図である。以下では、まず、ハーフトーン回路４００について説明する。ハーフトーン回路４００は、０から２５５までの階調値で色の濃淡が表現されたＣＭＹＫデータを、印刷媒体上に形成すべきドットの粗密を表すドット形成用データに変換する回路である。印刷装置１００は、基本的に、印刷媒体Ｓに対してインクを打つか打たないかのいずれかの状態をとり得るにすぎず、インクの吐出により形成されるドットの分布によって色の濃淡を表す必要があるからである。ハーフトーン処理の一般的な手法としては、誤差拡散法や組織的ディザ法などの周知の手法が存在するが、本実施例では組織的ディザ法を発展させた独自の手法によりハーフトーン処理を行う。
【００９２】
＜ハーフトーン処理の概念＞
ここで、本実施例のハーフトーン処理の概念を従来の組織的ディザ法と比較して説明する。
図１１は、従来の組織的ディザ法によるハーフトーン処理の概要を示す説明図である。従来の組織的ディザ法では、図の上部に示すように、所定の大きさ（ここでは１２８×６４とする）のディザマトリクスに対して、１から２５５までの閾値が万遍なく分散されて配置されている。かかるディザマトリクスを用いてハーフトーン処理を行うには、図の下部に示すように、ＣＭＹＫ画像データを構成する各画素の階調値と、ディザマトリクス上でその画素に対応する位置に存在する閾値とを比較し、その閾値を超える階調値である場合には、その位置にドットを形成し、閾値を超えない場合には、その位置にはドットを形成しないと判定する。こうすることで、２５６階調のＣＭＹＫデータを、ドットの有無を表すドット形成用データに変換することができる。
【００９３】
本実施例では、図１１の上部に示した１２８画素×６４画素といった大きなディザマトリクスから閾値を順次取り出して、ハーフトーン処理を行なうのではない。例えば、図中の枠線ＲＧ内に示した閾値群のように、１２８画素×６４画素のディザマトリクスから、その左上を原点として４×２を単位とする閾値群を取り出し、その位置に応じて予め各閾値群にブロック番号と呼ぶ一意の番号を付与しておく。そして、ブロック番号毎に、４×２の閾値群を用いて、画素の階調値をドットの有無を表すデータに変換する。つまり、本実施例では、４×２の画素を単位としてハーフトーン処理を行なうのである。この点について、以下説明する。
【００９４】
図１１に示した大域的なディザマトリクスから取り出された４×２の大きさの閾値群は全て異なる閾値の組み合わせになっている。従って、４×２の画素群の階調値が全て同じであると仮定して、その画素群の階調値が０から２５５まで段階的に上昇していくと、４×２の閾値群に含まれる８つの閾値に応じたところで、ドットのオン・オフが変化することになる。
【００９５】
図１２は、４×２の画素群についてドット数が変化する様子を示す説明図である。図１２（ａ）に示した閾値群を例に取ると、図１２（ｂ）に示すように、階調値が１，４２，５８，１０９，１７０，１７７，２１２，２５５の８カ所で、それぞれ発生するドットの数が０から１個、１個から２個・・・７個から８個に変化する。もとより、閾値群が異なれば、発生するドットの個数が変化する階調値は異なる。このため、同じ階調値を有する画素が画像データ内に連続して続いても、異なる閾値群を順次適用していれば、図１１の大きなディザマトリクスを用いるのと同じ結果が得られることになる。
【００９６】
図１２（ｂ）に示したドットが増加する階調値の変化点は、閾値群毎に異なるので、予め閾値群毎に、階調値と発生するドット数との関係を求めて対応表にしておくことができる。かかる対応表が準備されていれば、画像データ中のある画素の階調値が与えられたとき、その画素に対して適用すべき閾値群をブロック番号を用いて特定し、そのブロック番号とその画素の階調値とを用いて対応表を参照すれば、発生すべきドットの個数を取得することができる。また、適用する閾値群が決まれば、その閾値群内の閾値の小さいところから順にドットを形成すればよいから、ドット形成の順序も必然的に定まることになる。
【００９７】
図１３は、階調値と、発生するドットの個数と、その配置の関係を示す説明図である。例えば、ある画素の階調値が１２７だとすると、上述した対応表（後述する量子化データとドット個数テーブルに相当する）を参照することにより、その画素に適用させる閾値群のブロック番号と階調値１２７とから、形成すべきドットの個数（図中の例では４個）を得ることができる。他方、ドットを形成すべき順番を定義した順序値マトリクスＯＭもブロック番号毎に定まる。そこで、この二つを合わせることにより、図１３の下欄右端に示したように、４個のドットの配置を決定することができる。なお、図中の順序値マトリクスＯＭは、上述したディザマトリクスを４×２のブロック毎に分割して、各ブロック毎に一意のブロック番号を付与し、そのブロック内の閾値の小さい順からドットの生成順序を表す順序値を割り振ることにより生成したものである。
【００９８】
以上の説明によれば、本実施例のハーフトーン処理では、画像データ中のある画素に適用する階調値の情報を、ハーフトーン処理に利用する閾値群が有するドット発生の変化点の情報と、どの順序でドットが発生するかという情報とに分けてコード化し、その後これをデコードして、ドットの発生位置を決定するという処理を行なっているということができる。
【００９９】
ここまでは、印刷媒体上に形成されるドットの大きさは１種類であるものとして説明した。図１１、図１２、図１３は、単一種類のドットのオン・オフを決める場合についての例示に過ぎない。実際の印刷装置では、大中小ドット、あるいは濃淡ドットなど、複数種類のドットを同一の画素に形成可能なので、ドットのオン・オフの決定は、もう少し複雑である。そこで、次にこの点について説明する。
【０１００】
図１４は、本実施例の印刷装置１００のように大中小のドットを形成可能な場合に、上記の考え方を拡張する手法を示している。この場合、階調値に応じて形成するドットの組み合わせを予め決定するため、まず、図１４（ａ）に示すように、画像データの階調値に対して、各階調値で、小ドット、中ドット、大ドットを形成する密度のデータに変換する。図１４（ａ）の関係は、例えば、印刷装置毎、あるいは、印刷の品質や用紙の種類などに応じて予め設定されている。図１４（ａ）に示したグラフによれば、ある階調値が与えられると、小ドットの密度データ、中ドットの密度データ、大ドットの密度データが得られることになる。
【０１０１】
いま、図１４（ｂ）に示した４×２の画素群に対して階調値１２７が与えられ、図１４（ａ）に示した関係から、小ドット密度データが３２、中ドット密度データが９０、大ドット密度データが２、と得られたとする。そうすると、大中小の各ドットのオン・オフは、大中小のドット密度データを、この順に、４×２の閾値群内の閾値と比較して定めることになる。
【０１０２】
まず、大ドット密度データ２と、各閾値とを比較すると、図１４（ｃ）に示したように、閾値「１」の画素について大ドットがオンになる。この閾値「１」以外の画素で、オンになるところはない。そこで、次に中ドットについて判定する。中ドットについて判定する場合には、中ドット密度データに大ドット密度データを加えて（９０＋２＝９２）、これと閾値群との比較を行なう。この結果、図１４（ｄ）に示したように、閾値が「５８」と「４２」の画素において、中ドットがオンになる。更に、小ドットについて判定するが、この場合には、小ドット密度データに中および大ドット密度データを加え（３２＋９０＋２＝１２４）、これと閾値群との比較を行なう。この結果、図１４（ｅ）に示したように、閾値「１０９」の画素において、小ドットがオンとなる。
【０１０３】
上述した手法によれば、大中小ドットが形成可能な場合でも、ある階調値が与えられ、適用する閾値群が決まれば、大中小ドットの形成態様（各ドットの形成数およびその配置）は、一意に決定される。そこで、図１２を用いて説明したのと全く同じように、予め用意した大域的なディザマトリクスから４×２の閾値群を取り出して、これにそれぞれブロック番号を付け、対応する画素群の階調値が最小値から最大値まで（この実施例では、０から２５５まで）変化させた場合の大中小のドットの形成態様の移り変わりを調べて、対応表として準備しておくことができる。この関係を調べて大中小ドットの場合の対応表を示したのが、図１５および図１６である。
【０１０４】
図１５は、ブロック番号Ｎ１からＮ５までの、５つの閾値群について、画像データの階調値が０から２５５まで変化する際に、大中小ドットの形成態様がどのように変化していくかを表すグラフである。横軸には、階調値を示し、縦軸には、その階調値に対応する大中小ドットの形成態様をコード化した量子化データの値を示している。図１５では、理解の便を図るため、ブロック番号毎に、縦軸をずらして量子化データの遷移を描いてある。図示するように、ブロック番号毎にドットの形成態様の遷移状態が異なるのは、閾値群内の閾値の組み合わせが異なれば、つまりブロック番号が異なれば、図１２を用いて説明したのと同様に、大中小のドットの形成態様が変化するからである。
【０１０５】
図１６は、図１５に示したグラフを対応表として表した説明図である。以下では、この対応表を量子化テーブルＱＴという。この量子化テーブルＱＴによれば、ハーフトーン処理を行なうとする画素の階調値が与えられた場合に、その画素に適用する閾値群をブロック番号によって特定し、この量子化テーブルＱＴを参照すれば、そのブロック番号と階調値とから、直ちに大中小ドットの形成態様をコード化した量子化データを取得することができる。本実施例では、こうして、画素の階調値を量子化データに変換することを、エンコードと呼ぶ。なお、図１６の量子化テーブルＱＴで、その最大値が必ずしも同一となっていないのは、閾値の組み合わせによっては、大中小ドットの組み合わせの変化が生じる回数が異なるからである。しかし、この最大回数が３２を越えることはなく、図１６に示した量子化データは、少なくとも５ビットあれば表現することができる。なお、本実施例では、ドットの形成態様をコード化した値を「量子化データ」と表現したが、これは、量子化テーブルＱＴを用いることにより、画素の階調値が見かけ上、より少ない値で表現されるために、「量子化」という言葉を用いたためである。
【０１０６】
次に、量子化テーブルＱＴを用いてエンコードされた量子化データをデコードする処理について説明する。ドットの個数データから４×２のピクセルにドットを配置するデコードの仕組みについては、単一種類のドットが形成可能な場合について、図１３を用いて既に簡単に説明した。本実施例のハーフトーン処理では、実際には、大中小の３種類の大きさのインク滴を印刷媒体上に吐出して大中小ドットを形成しているが、デコード処理の仕組みは、図１３を用いて説明した場合と異ならない。すなわち、まず、上述したエンコード処理の結果得られた量子化データから、第１ドット個数テーブルＤＴ１（図２２）と第２ドット個数テーブルＤＴ２（図２３）とを参照して目的の領域に形成する大中小ドットの各個数を得る。そして、ブロック番号に対応した順序値マトリクスを参照することにより、その個数に応じたドットの配置を定める。そして、この順序通りに必要な数の大中小ドットを配置すればハーフトーン処理が完了する。
【０１０７】
以上で説明したように、本実施例のハーフトーン処理では、ある画素の階調値が与えられたとき、その画素が属しているブロック番号とその階調値とから量子化テーブルＱＴが参照され、その階調値が量子化データにエンコードされる。そして、この量子化データを、図２２や図２３のドット個数テーブルと、順序値マトリクスとを用いることでデコードすることにより、ハーフトーン処理が完了する。このように、本実施例では、量子化テーブルや個数テーブルなど、各種テーブルを参照するだけでハーフトーン処理を行うことができるので、従来の組織的ディザ法のように、階調値と閾値の大小を比較する条件分岐処理が不要となり、処理スピードを向上させることができる。また、本実施例のハーフトーン処理では、組織的ディザ法をその技術のベースとしているため、誤差拡散法に特有な疑似輪郭ノイズなどが発生することがなく、非常に高画質な印刷を行うことが可能になる。
【０１０８】
＜ハーフトーン回路の詳細＞
ここで、説明を図１０に戻し、ハーフトーン回路４００を構成する各ユニットの詳細について説明する。図１０に示すように、ハーフトーン回路４００は、図５に示した色変換回路３００内のブロック内平滑化ユニット３８０に接続されておりＣＭＹＫデータのエンコードを行うエンコーダ４１０と、エンコーダ４１０および第７パスユニット３９０ｇに接続され、これらから出力されたデータを選択するデータセレクタ４２０と、データセレクタ４２０と接続され、データセレクタ４２０から出力されたデータをエンコードデータバッファＥＢに対して蓄積するＥＢ制御ユニット４４０と、エンコードデータバッファＥＢと接続され、エンコードデータバッファＥＢに蓄積されたエンコードデータのデコードを行うデコーダ４３０とを備えている。
【０１０９】
データセレクタ４２０の前段に接続された第７パスユニット３９０ｇは、色変換回路３００中の第６パスユニット３９０ｆに直列に接続されている。第７パスユニット３９０ｇに対応するメインユニットは、エンコーダ４１０である。そのため、例えば、第７パスユニット３９０ｇに白黒エッジデータが到達した場合には、その白黒エッジデータのエンコード元となった４つの画素を平均化したＣＭＹＫデータがエンコーダ４１０に到達する。そして、エンコーダ４１０から出力されるデータと、第７パスユニット３９０ｇから出力されるデータとが、同時にデータセレクタ４２０に入力されることになる。
【０１１０】
（Ｃ−２−１）エンコーダ：
エンコーダ４１０は、色変換回路３００から入力した各色８ビットのＣＭＹＫデータを、５ビットの量子化データにエンコードするユニットである。図１０に示すように、エンコーダ４１０は、ブロック番号判別回路４１１と、量子化回路４１２とを備えている。
【０１１１】
（Ｃ−２−１−１）ブロック番号判別回路：
ブロック番号判別回路４１１は、色変換回路３００から入力したＣＭＹＫデータによって表される画素が、どのブロック番号に属するかを判別する回路である。ブロック番号の判別方法は、画像を印刷する際の出力解像度のモードによって異なる。かかるモードとしては、概ね以下に示す７種類のモードがある。本実施例では、色変換回路３００からは、３６０ｄｐｉ×３６０ｄｐｉのＣＭＹＫデータを入力し、これを７２０ｄｐｉ×７２０ｄｐｉの解像度で印刷を行うため、これらのモードうち、２×２モードに基づくブロック番号の判別を行う。なお、画像処理ユニット１５５の所定のレジスタには、印刷開始に先立ち、ＣＰＵ１５１によって出力解像度のモードが設定されているため、かかるレジスタを参照することにより、現在のモードを判別することができる。
【０１１２】
モード名          入力解像度（ｄｐｉ）  出力解像度（ｄｐｉ）
１×１モード・・・３６０×３６０        ３６０×３６０
１×２モード・・・３６０×３６０        ３６０×７２０
２×１モード・・・３６０×３６０        ７２０×３６０
２×２モード・・・３６０×３６０        ７２０×７２０
２×４モード・・・３６０×３６０        ７２０×１４４０
４×２モード・・・３６０×３６０        １４４０×７２０
４×４モード・・・３６０×３６０        １４４０×１４４０
【０１１３】
図１７は、２×２モードにおけるブロック番号の判別方法を示す説明図である。２×２モードは、エンコーダ４１０が入力したＣＭＹＫ画像データの解像度（３６０ｄｐｉ×３６０ｄｐｉ）を縦横２倍の解像度（７２０ｄｐｉ×７２０ｄｐｉ）で出力するモードである。つまり、図の下部に示した順序値マトリクスＯＭにおいて、１つのブロック番号が割り当てられている４×２の単位ブロックの大きさは、２×２モードで出力しようとするＣＭＹＫ画像データ内では、その２分の１である２画素×１画素の大きさに相当する。従って、図示するように、２×２モードの場合には、エンコーダ４１０は、ＣＭＹＫ画像データを構成する画素のうち、横方向に隣接する２つの画素が同一のブロック番号であると判別する。
【０１１４】
かかる判別方法によれば、エンコーダ４１０は、例えば、同図に示すように、ＣＭＹＫ画像データの左上隅に位置する２つの画素は、ブロック番号「１」に該当すると判別し、ブロック番号「１」が設定された２つの画素の右隣りの２つの画素については、ブロック番号「２」に該当すると判別する。さらに、ブロック番号「１」が設定された２つの画素の下側に隣接する２つの画素については、例えば、ブロック番号「３３」に該当すると判別する。このようにして、エンコーダ４１０は、他の画素についても同様に、隣接する２つの画素を１つの単位としてそれぞれブロック番号を判別する。
【０１１５】
図１８は、ブロック番号の実際の判別例を示す説明図である。コンピュータ９００やスキャナ１１０から入力する画像データのサイズは、順序値マトリクスＯＭの生成元となった１２８画素×６４画素のディザマトリクス（図１１参照）のサイズよりも大きいことが一般的である。そのため、このような場合には、図１８のように、ディザマトリクスのサイズに相当する順序値マトリクスＯＭの集合を繰り返して適用することにより、ブロック番号の判別を行う。例えば、エンコーダ４１０が、横方向が６４０画素のＣＭＹＫ画像データを入力したとすると、まず、最も上部に位置するラインに対して２画素ずつ１から３２までのブロック番号を計１０回（＝６４０／（３２＊２））繰り返して判別し、続いて、２本目のラインに対して２画素ずつ３３から６４までのブロック番号を計１０回繰り返して判別することになる。
【０１１６】
（Ｃ−２−１−２）量子化回路：
説明を図１０に戻す。量子化回路４１２は、ブロック番号判別回路４１１によって、ブロック番号を判別した画素から順に、図１６に示した量子化テーブルＱＴを参照して、そのＣＭＹＫデータを量子化データにエンコードする回路である。この量子化テーブルＱＴは、図４に示したようにＳＤＲＡＭ１５２に記憶されている。
【０１１７】
図１６に示したように、量子化テーブルＱＴには、ＣＭＹＫデータの階調値（最小０〜最大２５５）と、ブロック番号（最小１〜最大１０２４）とに応じて、量子化データが０から３１までの値をとるように設定されている。量子化回路４１２は、エンコードを行おうとする画素のＣＭＹＫデータとブロック番号判別回路４１１とからこの量子化テーブルＱＴを参照してその画素に対応する１つの量子化データを取得する。
【０１１８】
図１５に示したように、量子化データは、階調値が増加するほど大きくなるように設定されており、ブロック番号に応じてその増加度合いが異なっている。図１５中のブロック番号Ｎ１〜Ｎ５は、それぞれ異なるブロック番号を表しており、これらのブロック番号Ｎ１〜Ｎ５に対応する５つの画素についてエンコードした結果を示している。なお、図１５では、各ブロック番号Ｎ１〜Ｎ５の折れ線が重なって判別し難くなることを避けるために、量子化データの原点位置をそれぞれ縦軸方向に少しずつずらして表示している。
【０１１９】
図中、太い実線で示したブロック番号Ｎ１について説明する。このブロック番号Ｎ１では、画素の階調値が「０」〜「４」の範囲では、量子化データは、「０」であるが、画素の階調値が「５」〜「２０」の範囲では、量子化データは、「１」に増加する。また、画素の階調値が「２１」〜「４２」の範囲では、量子化データは「２」に増加する。また、画素の階調値が「４３」〜「６９」の範囲では、量子化データは「３」に増加する。このように、画素の階調値が増加するに従って、量子化データも段階的に増加する。そして、最終的には、量子化データは「１５」まで増加する。すなわち、ブロック番号Ｎ１については、０から２５５までの値をとる画素の階調値を、０から１５までの１６段階に量子化していることになる。
【０１２０】
同様に、図中に太い破線で示したブロック番号Ｎ２や、太い一点鎖線で示したブロック番号Ｎ３については、０から２５５までの値をとる画素の階調値を、０から１７までの１８段階に量子化している。更に、細い実線で示したブロック番号Ｎ４および細い一点鎖線で示したブロック番号Ｎ５については、画素の階調値を０から２０までの２１段階に量子化していることになる。量子化データの最大段数は、ブロック番号に応じて概ね１５〜２２程度となっている。このように、量子化テーブルＱＴには、ブロック番号に応じて固有の段数で量子化データが定義されている。また、量子化データの増加度合いもブロック番号に応じて固有に定義されている。そのため、同じ階調値を量子化した場合でも、その画素が属するブロック番号が異なれば、異なる量子化データに変換されることになる
【０１２１】
以上で説明したように、量子化回路４１２は、画素のＣＭＹＫ階調値を量子化データに変換することで、通常、２５６階調を有するＣＭＹＫデータの値を、最大で３２段の量子化データに変換する。こうすることにより、８ビットのデータ量が必要であったＣＭＹＫデータを、ドットの発生に必要な情報を表す５ビットのデータに変換することができ、データ容量を削減することができる。
【０１２２】
最終的に、エンコーダ４１０は、量子化回路４１２によってエンコードした量子化データを、１画素毎、データセレクタ４２０に対して出力する。なお、この量子化データは、ＣＭＹＫの各色毎に出力される。
【０１２３】
（Ｃ−２−２）データセレクタ：
図１９は、図１０に示したデータセレクタ４２０の詳細な構成を示す説明図である。データセレクタ４２０は、印刷装置１００が備えるインクの種類に対応した８つのセレクタ素子４１１ａ〜４１１ｈを備えている。各セレクタ素子４１１ａ〜４１１ｈは、そのセレクタ素子に対応する色の５ビットの量子化データをエンコーダ４１０から入力するとともに、第７パスユニット３９０ｇから５ビットの白黒エッジデータを入力する。また、各セレクタ素子４１１ａ〜４１１ｈは、セレクト信号として白黒エッジデータの最上位ビット、すなわち、白黒エッジ判定フラグの内容を表すデータを入力する。
【０１２４】
各セレクタ素子４１１ａ〜４１１ｈは、エンコーダ４１０と第７パスユニット３９０ｇとからそれぞれデータを入力すると、セレクト信号として入力された白黒エッジ判定フラグの値をチェックする。その結果、白黒エッジ判定フラグが「１」であれば、白黒エッジデータを選択して出力し、「０」であれば、量子化データを選択して出力する。各セレクタ素子４１１ａ〜４１１ｈの後段には、それぞれビット付加器４１２ａ〜４１２ｈが接続されている。ビット付加器４１２ａ〜４１２ｈは、セレクタ素子４１１ａ〜４１１ｈから出力されたデータの最上位ビットに、白黒エッジ判定フラグの値を付加する。そのため、最終的にデータセレクタ４２０から出力されるデータは、量子化データの場合にも白黒エッジデータの場合にも、６ビットのデータとなる。データセレクタ４２０は、以上の処理によって選択したいずれかのデータを、ＥＢ制御ユニット４４０に出力する。なお、データセレクタ４２０への入力時の５ビットの白黒エッジデータには、色変換回路３００内の白黒エッジ処理ユニット３２０によって既に最上位ビットに白黒エッジ判定フラグの値が付加されているため、６ビット化された白黒エッジデータの上位２ビットには、白黒エッジ判定フラグの値が重複して記録されることになる。しかし、このように同じ内容のデータが重複して記録されたとしても、量子化データのデータ長と白黒エッジデータのデータ長とを揃えることができるため、これらのデータを記憶するエンコードデータバッファＥＢに対するアドレス管理が容易となり、ハードウェアの複雑化を抑制し、処理スピードを向上させることができる。
【０１２５】
（Ｃ−２−３）ＥＢ制御ユニット：
説明を図１０に戻す。ＥＢ制御ユニット４４０は、データセレクタ４２０から６ビットの白黒エッジデータまたは６ビットの量子化データを択一的に入力すると、これらのデータをエンコードデータバッファＥＢに格納する。なお、以下の説明では、量子化データと白黒エッジデータとをまとめて「エンコードデータ」と呼ぶ場合がある。
【０１２６】
図２０は、ＥＢ制御ユニット４４０が、エンコードデータバッファＥＢにエンコードデータを格納するまでの過程を概念的に示す説明図である。図示するように、データセレクタ４２０は、エンコーダ４１０から量子化データを入力するとともに、第７パスユニット３９０ｇから白黒エッジデータを入力する。そして、白黒エッジ判定フラグの値を用いて、これらのエンコードデータのうち、ダミーデータ（００００００）を除く白黒エッジデータを量子化データに優先して出力する。そして、ＥＢ制御ユニット４４０は、データセレクタ４２０から出力されたエンコードデータを順にエンコードデータバッファＥＢに格納する。エンコードデータバッファＥＢに格納されたエンコードデータは、図１０に示したデコーダ４３０によって順次読み出されることになる。
【０１２７】
（Ｃ−２−４）デコーダ：
図２１は、図１０に示したデコーダ４３０の詳細な構成を示す説明図である。デコーダ４３０は、白黒エッジデータと量子化データとをそれぞれ個別にデコードし、ドット形成用データを生成するためのユニットである。図示するように、デコーダ４３０は、エンコードデータバッファＥＢに接続され、エンコードデータを入力するデータ判定回路４３１と、データ判定回路４３１からの出力を受けて白黒エッジデータをデコードする白黒エッジデータデコード回路４３２と、データ判定回路４３１からの出力を受けて量子化データをデコードする量子化データデコード回路４３３とを備えている。
【０１２８】
（Ｃ−２−４−１）データ判定回路：
データ判定回路４３１は、エンコードデータバッファＥＢから順次エンコードデータを読み出し、読み出したエンコードデータのブロック番号を判別する。エンコードデータバッファＥＢには、図１７あるいは図１８に示したブロック番号順にエンコードデータが格納されているから、その格納順にエンコードデータを読み出せば、自ずとそのエンコードデータに対応するブロック番号を判別することができる。つまり、出力解像度が２×２モードの場合には、隣接する２つの画素に同一のブロック番号が付されているから、１つ目と２つ目に読み出したエンコードデータのブロック番号は、「１」となり、３つ目と４つ目に読み出したエンコードデータのブロック番号は「２」になる。また、例えば、横方向が６４０画素のＣＭＹＫ画像データについてエンコードデータが生成されている場合には、最初に、２画素ずつ１から３２までのブロック番号が計１０回（＝６４０／（３２＊２））繰り返して判別され、続いて、２画素ずつ３３から６４のブロック番号が計１０回繰り返して判別されることになる。画像処理ユニット１５５のレジスタには、ＣＰＵ１５１によって出力解像度のモードや、画像のサイズに関する情報がセットされているため、データ判定回路４３１は、かかるレジスタを参照することにより、出力解像度のモードや画像のサイズに応じたブロック番号の判別を行うことができる。
【０１２９】
データ判定回路４３１は、ブロック番号の判別が終了すると、読み出した６ビットのエンコードデータの最上位ビットをチェックする。最上位ビットには、データセレクタ４２０によって白黒エッジデータであるか否かを表す白黒エッジ判定フラグの値が付加されている。そのため、エンコードデータの最上位ビットが「０」であれば、そのエンコードデータが量子化データであると判別し、かかる最上位ビットを切り捨てた上で、量子化データデコード回路４３３に５ビットの量子化データとブロック番号の値とを転送する。一方、最上位ビットが「１」であれば、読み出したエンコードデータが白黒エッジデータであると判別し、白黒エッジ判定フラグの値が記録された上位２ビットを切り捨てた上で、白黒エッジデータデコード回路４３２に４ビットの白黒エッジデータとブロック番号の値とを転送する。
【０１３０】
（Ｃ−２−４−２）量子化データデコード回路：
量子化データデコード回路４３３は、データ判定回路４３１から転送された５ビットの量子化データをデコードし、ドット形成用データを生成する回路である。ドット形成用データは、形成しようとするドットのサイズを「１１」「１０」「０１」「００」の４値によって表し、これらの値の分布によって印刷画像を表したデータである。ドット形成用データを生成するには、まず、ＳＤＲＡＭ１５２に記憶された第１ドット個数テーブルＤＴ１および第２ドット個数テーブルＤＴ２を参照して、量子化データを大中小の各サイズのドットの個数を表すドット個数データに変換し、更に、このドット個数データとＳＤＲＡＭ１５２に記憶された順序値マトリクスＯＭとに基づきドットの配置を行う。以下、かかる処理の詳細について説明する。
【０１３１】
＜量子化データのドット個数データへの変換＞
図２２は、第１ドット個数テーブルＤＴ１の一例を示す説明図である。図示するように、この第１ドット個数テーブルＤＴ１には、ブロック番号と量子化データとに応じて第１ドット個数データが定義されている。第１ドット個数データは、その量子化データが表す画素に、どの程度の数のドットを形成するかを表すデータである。なお、この第１ドット個数データは、ドットの数を正確に表しているわけではなく、後述するように、大中小の各ドットの数がエンコードされた値となっている。第１ドット個数データは、０から１６４までの値をとる。すなわち、この第１ドット個数テーブルＤＴ１によれば、５ビットの量子化データが８ビットの第１ドット個数データに変換されることになる。
【０１３２】
ここで、第１ドット個数データが１６４までの値に収まる理由について説明すると、１つのブロックを構成する８つの画素についてみれば、各画素について、「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の４つの状態を取り得る。従って、ドット個数の組合せは、これら４つの状態を、重複を許容して８回選択した時の組合せの数に等しくなるから、４Ｈ８（＝４＋８−１Ｃ８）によって求めることができる。このことから、最大でも１６５通り（０〜１６４）の組合せしか出現しないことになる。なお、ｎＨｒは、ｎ個の物の中から重複を許してｒ回選択するときの重複組合せ数を求める演算子である。また、ｎＣｒは、ｎ個の物の中から重複を許さずにｒ回選択するときの組合せ数を求める演算子である。
【０１３３】
量子化データデコード回路４３３は、図２２に示した第１ドット個数テーブルＤＴ１を参照することにより、データ判定回路４３１から入力した量子化データとブロック番号とに対応する第１ドット個数データを取得する。例えば、入力した量子化データが「０」であり、そのブロック番号が「１」であれば、図示するように、第１ドット個数データは、「０」となる。また、入力した量子化データの値が「３」であり、そのブロック番号が「２」であれば、第１ドット個数データは、「４」となる。
【０１３４】
次に、量子化データデコード回路４３３は、第２ドット個数テーブルＤＴ２を参照して、第１ドット個数データを大中小の各サイズのドットの個数を表す第２ドット個数データに変換する。
【０１３５】
図２３は、第２ドット個数テーブルＤＴ２の一例を説明したものである。図示するように、この第２ドット個数テーブルＤＴ２には、第１ドット個数データと、各サイズのドットの個数を表す第２ドット個数データとが対応づけて記憶されている。なお、図の右側の表は、第２ドット個数データが表す各サイズのドットの個数の内訳を詳細に示した参考図である。第１ドット個数データは、前述したように、０から１６４までのデータ、すなわち８ビットのデータであり、第２ドット個数データは、１６ビットのデータとなっている。この１６ビットのデータは、２ビットを１組としており、各組の値がドットのサイズを表している。
【０１３６】
図２４は、第２ドット個数データの一例を示す説明図である。図中に示す第２ドット個数データは、「０００１０１１０１０１１１１１１」であるが、これを２ビットずつ１組に区切ると、左から、「００」「０１」「０１」「１０」「１０」「１１」「１１」「１１」となる。各組の２ビットの内容は、ドットのサイズを表しており、「１１」が大ドット、「１０」が中ドット、「０１」が小ドット、「００」がドットなしを表す。すなわち、図示した第２ドット個数データは、大ドットを３つ、中ドットを２つ、小ドットを２つ形成することを表している。図示するように、この第２ドット個数データには、大きいドットを表すデータから順に右詰めで格納されている。
【０１３７】
ここで、説明を図２３に戻す。図２３に示した第２ドット個数テーブルＤＴ２によれば、例えば、第１ドット個数データ「０」に対応する第２ドット個数データは、「００００００００００００００００」であり、「大ドット」、「中ドット」、「小ドット」のいずれも形成しないことを表わす。また、第１ドット個数データ「２」に対応する第２ドット個数データは、「０００００００００００００１０１」であり、「小ドット」のみを２個形成することを表す。また、第１ドット個数データ「１６０」に対応する第２ドット個数データは、「１０１０１１１１１１１１１１１１」であり、「大ドット」を６つ、「中ドット」を２つ形成することを表す。
【０１３８】
図２３の下部には、この第２ドット個数データによって表されるドットサイズの遷移を示している。図示するように、形成されるドットのサイズは、第１ドット個数データが増加するにつれ、大きなドットの占める割合が大きくなる。つまり、第１ドット個数データは図２２に示したように量子化データに比例して大きくなり、量子化データは図１５に示したようにＣＭＹＫデータの階調値に比例して大きくなることから、ＣＭＹＫの階調値が大きくなるにつれ、サイズの大きなドットが占める割合が徐々に多くなり、印刷媒体上に形成されるドットの密度が高くなることになる。
【０１３９】
＜順序値マトリクスに基づくドットの配置＞
図２１の量子化データデコード回路４３３は、第１ドット個数データを第２ドット個数データに変換すると、ＳＤＲＡＭ１５２に記憶された順序値マトリクスＯＭを参照して、第２ドット個数データとブロック番号とに基づき各サイズのドットを配置する。
【０１４０】
図２５は、図１３に示した順序値マトリクスＯＭの一部を拡大した図である。既に説明したように、順序値マトリクスＯＭには、４×２の単位ブロック内の各要素についてそれぞれドットが形成されるべき順番を表す順序値が予め設定されている。ドットの形成順は、ブロック毎にそれぞれ個別に設定されており、順序値は、８つの要素についてそれぞれ異なる値が設定されるため１から８の値が設定されている。かかる図を参照すれば、例えば、ブロック番号１に対応する順序値マトリクスＯＭには、８つの要素のうち、左上隅にある画素に対して順序値「１」が設定されているため、ブロック番号１では、画像の左上隅に１番最初にドットが形成されることになる。また、ブロック番号１では、８つの要素の中の右下隅の画素に順序値「２」が設定されているため、２番目のドットは、右下隅に形成されることになる。
【０１４１】
また、例えば、ブロック番号２に対応する順序値マトリクスＯＭにおいて、順序値「１」は、下段の左から２番目の要素に設定され、順序値「２」は、右下隅の要素に設定されている。また、ブロック番号３に対応する順序値マトリクスＯＭにおいて、順序値「１」は、上段の右から２番目の要素に設定され、順序値「２」は、左下隅の要素に設定されている。このように、ドットの形成順は、ブロック番号毎に異なる順序で設定されている。
【０１４２】
図２６は、第２ドット個数データと順序値マトリクスＯＭとに基づき、８つの画素についてそれぞれドットを配置する手順を概念的に示す説明図である。ここでは、第２ドット個数データが、大ドットを３個、中ドットを２個、小ドットを２個、それぞれ形成すべきデータであり、適用する順序値マトリクスＯＭが、図２５に示したブロック番号「１」に対応する順序値マトリクスＯＭであるものとする。
【０１４３】
量子化データデコード回路４３３は、図２６に示すように、最初に、順序値マトリクスＯＭの順序値「１」に対応する画素に対して、第２ドット個数データの右端に位置する２ビットのデータを取得する。次に、順序値マトリクスＯＭの順序値「２」に対応する画素に対して、第２ドット個数データの右から２番目に位置する２ビットのデータを取得する。このように、順序値マトリクスＯＭの各順序値に対して、第２ドット個数データの右端から順番に２ビットのデータを適用していけば、図の中段に示すように、４画素×２画素の中間ドットデータが生成される。この中間ドットデータによって形成されるドットのイメージを「ドットイメージ」と称して図の下段に示した。
【０１４４】
このように、順序値マトリクスＯＭに設定された順序値に応じて、第２ドット個数データの右端から順に２ビットのデータを適用していけば、第２ドット個数データには右詰めで大きいドットから順にデータが記録されていることから、順序値マトリクスＯＭ内には、大きいドットから順に配置されていくことになる。サイズが大きいドットは隣接して配置されると、その存在が目立ってしまうが、上述のように大きいドットから順にドットを配置すれば、大きなドットが優先的に分散されることになり、その存在を目立たなくすることができる。この結果、画質を向上させることが可能になる。
【０１４５】
＜中間ドットデータの振り分けによる出力解像度の調整＞
以上で説明した処理によれば、量子化データデコード回路４３３によって、１つの量子化データから、４×２画素の中間ドットデータが生成されることになる。１つの量子化データは、ハーフトーン回路４００に入力されたＣＭＹＫ画像データの１画素に対応することから、すべての量子化データについて中間ドットデータを生成すると、３６０ｄｐｉ×３６０ｄｐｉの入力解像度が、１４４０ｄｐｉ×７２０ｄｐｉの出力解像度となってしまい、２×２モードで目標とする７２０ｄｐｉ×７２０ｄｐｉとは異なる出力解像度を有することになる。
【０１４６】
そこで、量子化データデコード回路４３３は、量子化データを中間ドットデータに変換しつつ、中間ドットデータ内の画素を分割して、適宜、振り分けを行い、出力解像度の調整を行う。具体的には、２×２モードでは、隣接した２つの画素は、同じブロック番号が割り当てられていることから、左側に位置する画素については、中間ドットデータ内の左側の２×２画素をドット形成用データに振り分け、右側に位置する画素については、中間ドットデータ内の右側の２×２画素をドット形成用データとして振り分ける。こうすることで、３６０ｄｐｉ×３６０ｄｐｉの入力解像度が、７２０ｄｐｉ×７２０ｄｐｉの出力解像度に正常に変換されることになる。
【０１４７】
図２７は、２×２モードにおいて中間ドットデータの振り分けを行う具体例を示す説明図である。図示するように、量子化データデコード回路４３３は、同一のブロック番号に属する隣接した２つ画素の量子化データを入力すると、各量子化データを、それぞれ、第１ドット個数データおよび第２ドット個数データに変換し、順序値マトリクスに基づき中間ドットデータを生成する。中間ドットデータは、それぞれ８画素分生成されるため、１つ目の中間ドットデータのうち、左側に位置する４つの画素（図中「Ｌ」と示した部分）をドット形成用データとして採用する。そして、２つ目の中間ドットデータのうち、右側に位置する４つの画素（図中「Ｒ」と示した部分）を次のドット形成用データとして採用する。量子化データデコード回路４３３は、同一ブロック番号に属する中間ドットデータについて、このような処理を繰り返して行うことにより、図の下部に示すようなドット形成用データを生成することができる。
【０１４８】
以上で説明した処理によれば、量子化データデコード回路４３３は、エンコードデータバッファＥＢから入力した１つの量子化データに対して、それぞれ、２画素×２画素のドット形成用データを生成することになる。こうして生成したドット形成用データは、ドット形成用データバッファＤＢに順次格納する。以上で、量子化データデコード回路４３３によるデコード処理が完了する。
【０１４９】
なお、本実施例では、図２６や図２７に示したように、中間ドットデータを８画素分全て生成してから、その中間ドットデータを２分割して、いずれか一方をドット形成用データに振り分けるものとした。これに対して、次のような振り分けを行うこともできる。すなわち、図２７に示すように、中間ドットデータの中で、ドット形成用データに振り分けられる部分は、「Ｌ」や「Ｒ」に示すように既に決まっているため、その振り分けられる部分に対応した順序値マトリクスＯＭ内の順序値のみを用いれば、中間ドットデータ内の８画素全部について生成することなくドット形成用データを生成することができる。例えば、図２７のドット形成用データの最も左上の「Ｌ」部分については、図２６に示したブロック番号１の順序値マトリクスＯＭの左側半分の順序値１，６，８，４に該当するビットのみを第２ドット個数データから取得すれば、かかる部分のドット形成用データを生成することができる。また、その隣の「Ｒ」の部分については、図２６に示したブロック番号１の順序値マトリクスＯＭの右側半分の順序値３，５，７，２に該当するビットのみを第２ドット個数データから取得すれば、かかる部分のドット形成用データを生成することができる。このような振り分け方法によれば、中間ドットデータを８画素分全部について生成する必要がないため、処理スピードを向上させることができるとともに、使用するメモリ容量を削減することができる。
【０１５０】
（Ｃ−２−４−３）白黒エッジデータデコード回路：
次に、図２１に示した白黒エッジデータデコード回路４３２について説明する。白黒エッジデータデコード回路４３２は、白黒エッジデータについてハーフトーン処理を行うための回路である。白黒エッジデータデコード回路４３２は、データ判定回路４３１から４ビットの白黒エッジデータとともに、そのブロック番号の値を入力すると、図８に示した白黒エッジテーブルＥＴを逆引きし、２×２の各画素について色を決定する。例えば、データ判定回路４３１から入力した白黒エッジデータが「１１１０」であれば、（Ａ，Ｂ，Ｃ，Ｄ）＝（１，１，１，０）となる。「１」は白を表し、「０」は、黒を表すから、色としては、（Ａ，Ｂ，Ｃ，Ｄ）＝（白，白，白，黒）となる。
【０１５１】
白黒エッジデータデコード回路４３２は、２×２画素内の白色の部分については、インクが吐出されない色であるため、２ビットで表されるドット形成用データは、ドットなしを表す「００」となる。つまり、白色部分については、ハーフトーン処理は実行せず、直接、ドット形成用データを「００」とする。こうすることにより、処理速度を向上させることができる。なお、透明インクを用いるときは、透明インクのドット形成用データのみを「１１」とし、他のインクのドット形成用データを「００」とすることができる。
【０１５２】
一方、２×２画素内の黒色の部分については、（Ｒ，Ｇ，Ｂ）＝（０，０，０）となり、ＲＧＢ形式では発色しない色となるが、インクによる色表現時にはＣ，Ｍ，Ｙ等の複数のインクを組み合わせて発色する色であるため、白黒エッジデータデコード回路４３２は、ＳＤＲＡＭ１５２に記憶された黒データテーブルＢＴに基づき２×２画素内の黒の部分についてドット形成用データへ変換する処理を行う。白黒エッジは、白色の画素と黒色の画素とによって構成されるものであるため、このうち、実際にドットを形成する必要のある色は黒色のみである。従って、黒色だけについてハーフトーン処理を行う専用のテーブルを黒データテーブルＢＴとして予め用意しておくことで、白黒エッジ内の黒色の画素について、即座にドット形成用データへの変換を行うことができる。黒データテーブルＢＴは、黒色のみの画素によって構成された所定サイズの画像データを、色変換回路３００およびハーフトーン回路４００に入力してハーフトーン処理を施すことで予め作成することができる。かかる黒データテーブルＢＴの詳細な作成方法は後述する。なお、黒色は、Ｋインクのみによって表すことも可能であるが、印刷用紙の種類や、ノズルの傾き等に応じてその色調を微調整する場合があるため、本実施例では、Ｃ，Ｍ，Ｙ等の複数のインクの組み合わせによって発色を行うものとする。
【０１５３】
図２８は、黒データテーブルＢＴの一例を示す説明図である。図示するように、黒データテーブルＢＴは、順序値マトリクスＯＭと同じサイズである１２８×６４のサイズを有しており、４×２の大きさを単位とする複数のブロックに全体が分割されている。各ブロックには、順序値マトリクスＯＭと同一のブロック番号が割り当てられている。黒データテーブルＢＴは、インクの色毎に計８色分のプレーンを有しており、各要素には、ドットのサイズを表す２ビットのドット形成用データが記録されている。白黒エッジデータデコード回路４３２は、この黒データテーブルＢＴを参照することにより、白黒エッジデータに含まれる黒の部分について、その位置に対応したドット形成用データを取得することができる。
【０１５４】
ここで、変換しようとする黒データが、黒データテーブルＢＴのどの位置に対応するかについては、入力した白黒エッジデータのブロック番号、データ判定回路４３１がその白黒エッジデータを入力した順番、２×２の白黒エッジデータ中における黒データの位置から判別することができる。例えば、変換対象の黒データを含む白黒エッジデータ（図２８の下部参照）のブロック番号が「１」で、その白黒エッジデータがエンコードデータバッファＥＢから２番目に入力したデータであり、その黒データが、２×２の白黒エッジデータ中、右下（「Ｄ」の部分）に存在する場合について考えると、ブロック番号「１」のブロックのうち、最も右下に設定されているドット形成用データが取得されることになる。
【０１５５】
以上で説明した黒データテーブルＢＴを用いれば、白黒エッジデータデコード回路４３２は、黒データをＣＭＹＫ形式や量子化データ等に変換することなく、ダイレクトにドット形成用データに変換することが可能になり、処理速度を向上させることができる。また、７２０ｄｐｉ×７２０ｄｐｉの解像度を有する白黒エッジデータを、７２０ｄｐｉ×７２０ｄｐｉのドット形成用データに変換することができるため、入力解像度が３６０ｄｐｉ×３６０ｄｐｉの量子化データデコード回路４３３よりも、再現性よくハーフトーン処理を行うことができる。なお、本実施例では、黒データテーブルＢＴを用いることによって黒データをダイレクトにドット形成用データに変換するものとしたが、黒データテーブルＢＴを用いることなく、黒データを一旦、ＲＧＢデータからＣＭＹＫデータに変換した上で量子化し、更に、第１ドット個数データ、第２ドット個数データに変換して順序値マトリクスＯＭに基づきドットを配置することによっても、ドット形成用データに変換することができる。
【０１５６】
白黒エッジデータデコード回路４３２は、上述した処理によって、白黒エッジデータを、４画素分のドット形成用データに変換すると、生成したドット形成用データを、ドット形成用データバッファＤＢに順次格納する。そうすると、ドット形成用データバッファＤＢには、量子化データデコード回路４３３と白黒エッジデータデコード回路４３２とから出力された７２０ｄｐｉ×７２０ｄｐｉの解像度を有する２×２画素のドット形成データが順次蓄積されることになる。つまり、この時点で、文字等を表す画像データと背景等を表す画像データが合成されて、一つの出力画像が構成されることになる。デコーダ４３０（図２１）は、ドット形成用データの蓄積が完了すれば、ヘッド駆動用データ変換回路５００に対して、ドット形成用データの蓄積が完了したことを示すレディ信号を出力する。
【０１５７】
なお、デコーダ４３０は、ドット形成用データバッファＤＢに対して、インクヘッド２１１が１回の主走査で印刷可能なだけのドット形成用データを最終的に蓄積するものとする。つまり、ノズルピッチ間に位置し、１回の主走査で印刷されない部分のドット形成用データを間引いた上で、ドット形成用データバッファＤＢへの蓄積を行う。このような間引き処理は、デコーダ４３０が量子化データや白黒エッジデータのデコードを行う際に、実際にインクを吐出するラスタラインに該当するデータのみをデコードすることによって行うものとすることができる。具体的には、例えば、量子化データのデコード時には、順序値マトリクス内の必要な順序値（例えば、図２６に示した順序値マトリクスの順序値１，６，３，５）に対してのみ第２ドット個数データからドットデータを取得し、白黒エッジデータのデコード時には、白黒エッジデータ内の必要な部分（例えば、図２８の下部に示した「Ａ」と「Ｂ」の部分）のみに対して黒データテーブルＢＴからドットデータを取得することにより行うことができる。従来の誤差拡散法では、着目画素の階調値の誤差を周囲の画素の階調値に徐々に分散させる処理を行う必要があるため、必要なラスタラインに属するドット形成用データのみを生成することは困難であるが、本実施例のハーフトーン処理では、上述したような処理により、実際にインクを吐出するラスタライン上のドット形成用データのみを容易に生成することができる。
【０１５８】
Ｃ−３．ヘッド駆動用データ変換回路：
次に、図１０に示したヘッド駆動用データ変換回路５００について説明する。ヘッド駆動用データ変換回路５００は、ドット形成用データバッファＤＢに蓄積されたドット形成用データを、インクヘッドを駆動するためのヘッド駆動用データに変換する回路である。図示するようにヘッド駆動用データ変換回路５００は、ドット形成用データバッファＤＢに接続されたデータ回転ユニット５１０と、データ回転ユニット５１０に接続されたＨＢ制御ユニット５２０とを備えている。
【０１５９】
（Ｃ−３−１）データ回転ユニット：
データ回転ユニット５１０は、ハーフトーン回路４００のデコーダ４３０からレディ信号を受信すると、ドット形成用データバッファＤＢからデータ形成用データを読み出し、ヘッド駆動用データへの変換をおこなう。かかる変換処理が完了するまでは、ビジー信号をハーフトーン回路のデコーダ４３０に送信する。デコーダ４３０は、ビジー信号が停止されるまで、各種デコード処理を停止する。こうすることで、ドット形成用データバッファＤＢがオーバーフローしてしまうことを防止することができる。
【０１６０】
図２９は、データ回転ユニット５１０によるデータの並べ直しの概念を示す説明図である。ドット形成用データバッファＤＢには、図の上部に示すように、間引き処理済みのドット形成用データが主走査方向に整列して格納されているが、インクヘッド２１１には１色につき複数のノズルが副走査方向に設けられており、そのノズルの数だけラスタラインが同時に印刷される。そこで、データ回転ユニット５１０は、ノズルの上部から順にデータが割り当てられるように、ドット形成用データを縦方向に読み出す。すると、図の下部に示すように、データが並べ直され、ヘッド駆動用データに変換されることになる。
【０１６１】
（Ｃ−３−２）ＨＢ制御ユニット：
図１０のＨＢ制御ユニット５２０は、ヘッド駆動用データバッファＨＢへのデータの出力を制御するユニットである。ＨＢ制御ユニット５２０は、データ回転ユニット５１０からヘッド駆動用データを入力し、これをヘッド駆動用データバッファＨＢに順次格納する。ヘッド駆動用データバッファＨＢに記憶されたヘッド駆動用データは、図２に示した制御ユニット１５０内のヘッドコントロールユニット１５６に読み取られ、インクの吐出制御に供されることになる。ヘッドコントロールユニット１５６は、キャリッジ２１０の主走査および副走査を繰り返しつつ、ヘッド駆動用データバッファＨＢから入力したデータが「１１」であれば、大ドット形成用の電圧波形をピエゾ素子に印加し、「１０」であれば、中ドット形成用の電圧波形をピエゾ素子に印加する。また、「０１」であれば、小ドット形成用の電圧波形をピエゾ素子に印加する。このようにして、印刷装置１００は、印刷媒体Ｓに対してカラー印刷を行う。
【０１６２】
Ｄ．実施例の効果：
以上、本発明の実施の形態を実施例に基づき説明した。本実施例の印刷装置１００によれば、高解像度（７２０ｄｐｉ×７２０ｄｐｉ）の画像を入力し、その画像のうち、白色と黒色の組み合わせのみによって表される文字や記号の部分（白黒エッジ）については、高解像度（７２０ｄｐｉ×７２０ｄｐｉ）のままハーフトーン処理を行い、その他の背景画像等については、一旦、解像度を半分（３６０ｄｐｉ×３６０ｄｐｉ）に減じてハーフトーン処理を行う。そのため、全ての画像領域について、高解像度のままハーフトーン処理を行うよりも、格段に少ないメモリ容量でハーフトーン処理を行うことができる。
【０１６３】
また、文字や記号等を表す白黒エッジ部分については、入力した画像の解像度を保ったままハーフトーン処理を行うので、明瞭な画質を保ったまま印刷を行うことができる。なお、背景画像等については、最終的には、その解像度を元の解像度（７２０ｄｐｉ×７２０ｄｐｉ）に上げて、文字等の部分と合成を行う。そのため、印刷媒体Ｓ上に形成された画像は、すべての領域で同じ解像度となる。背景画像等は、文字等に比べて、エッジ部分が少ないので、ハーフトーン処理の過程で解像度を減じても、最終的に出力される画像の画質に影響を与えることは少ない。むしろ、４つの画素の階調値の平均をとって解像度を減ずる処理により、ノイズなどの成分が丸められ、画質が向上した印象を与える場合もある。従って、本実施例によれば、全体として、画質が向上した印象を利用者に与えることができる。
【０１６４】
また、本実施例では、白黒エッジ以外の部分のハーフトーン処理時には、ＣＭＹＫ画像データを構成する各色８ビットの階調値を５ビットの量子化データにエンコードするため、４０％程度のデータ容量を削減できる。更に、白黒エッジデータについては、４画素分のＲＧＢデータを表す計９６ビット（＝４画素×８ビット×３色）のデータを二値化して、白黒エッジ判定ビットを含めて５ビットの白黒エッジデータにエンコードできるため、白黒エッジのみによって構成される文字等の部分については、９５％程度のデータ容量を削減できる。
【０１６５】
また、出願人の試算によれば本実施例による画像処理によって、標準的な３６０ｄｐｉ×３６０ｄｐｉの画像にハーフトーン処理を行うのに必要なメモリ容量の２０％増し程度のメモリ容量で、７２０ｄｐｉ×７２０ｄｐｉの画像データを扱うことが可能になった。これは、白黒エッジに関する処理や白黒エッジ以外の部分について解像度の低減を行わず、単純に７２０ｄｐｉ×７２０ｄｐｉの画像データをハーフトーン処理するのに必要なメモリ容量が３６０ｄｐｉ×３６０ｄｐｉ時の４倍必要であるのに対して格段に少ない容量である。
【０１６６】
また、本実施例では、量子化テーブルＱＴや、第１ドット個数テーブルＤＴ１、第２ドット個数テーブルＤＴ２、順序値マトリクスＯＭなど、さまざまなテーブルを参照してハーフトーン処理を行うが、基本的に、ハーフトーン処理の過程では、これらのテーブルを参照するだけでドットの有無が決定される。従って、従来の組織的ディザ法のように、閾値と階調値の大小を比較するための処理を行う必要がなく、また、従来の誤差拡散法のように、各画素に発生する誤差を他の画素に分配するような処理を行う必要がない。従って、従来の方法に比べて、極めて高速にハーフトーン処理を行うことができる。
【０１６７】
また、印刷装置１００は、白色部分についてはドットを形成する必要がないため、本実施例では、白黒エッジを構成する各画素のうち、白色部分についてはハーフトーン処理を行わないものとした。そのため、処理速度を向上させることができる。
【０１６８】
また、本実施例の印刷装置１００は、図５および図１０に示したように、所定の画像処理を行う種々のメインユニットを直列に接続したメインユニット群と、これらのメインユニットと平行して複数のパスユニットを直列に接続したパスユニット群とを備えている。メインユニット群には、白黒エッジ処理ユニット３２０によって４画素の階調値が平均化された平均化データが順次転送される。一方、パスユニット群には、白黒エッジ処理ユニット３２０によって生成された白黒エッジデータと、色変換ユニット３３０によって生成された標準エッジデータおよびノイズデータとが、メインユニット群に平均化データが転送されるのと同期して順次転送される。こうしてパスユニット群を転送されたエッジデータとノイズデータとは、ブロック内平滑化ユニット３８０に入力されて、かかるブロック内平滑化ユニット３８０による平滑化処理に供されることになる。このように構成された印刷装置１００によれば、本来、画像処理の対象となる平均化データ以外の補助データ（標準エッジデータおよびノイズデータ）を、各種画像処理を行うメインユニット群とは異なる経路のパスユニット群を転送させるため、かかる補助データを平均化データとともにメインユニット群に流す必要が無い。そのため、補助データの構成やデータ量が変更された場合であっても、メインユニットのハードウェア構成を大きく変更することが不要となる。この結果、各メインユニットの汎用性を高めることができ、印刷装置１００の設計変更を容易に行うことが可能になる。
【０１６９】
更に、本実施例の印刷装置１００では、あるメインユニットが画像処理に用いた補助データをパスユニット群を介して他のメインユニットに転送することができるため、その補助データを他のメインユニットによる画像処理時において再利用することが可能となる。この結果、複数のメインユニットで共通して用いられる補助データを、各メインユニットが個別に生成する必要がないため、ハードウェア構成を簡略化することが可能となり、コストダウンを図ることが可能になる。
【０１７０】
また、本実施例では、パスユニットの数をメインユニットの数と同数であるものとした。従って、メインユニット群における画像データの転送とパスユニット群における補助データの転送を、容易に同期させることが可能になる。また、両ユニット群が同数のユニットによって構成されていれば、パスユニットは、どのメインユニットからも補助データを入力することが可能となるため、メインユニット群の構成を柔軟に変更することが可能になる。
【０１７１】
Ｅ．１×１モード時におけるハーフトーン回路内でのデータの流れ：
ところで、図１０には、１×１モード時において用いられる信号線を破線にて示している。１×１モードは、入力解像度と出力解像度とが共に３６０ｄｐｉ×３６０ｄｐｉのモードであるため、７２０ｄｐｉ×７２０ｄｐｉの解像度を必要とする白黒エッジに関する処理は行われない。従って、１×１モード時には、以下に説明するように、他のモード時とは異なる手順でハーフトーン処理を行うものとした。
【０１７２】
図１０に示すように、１×１モードでは、エンコーダ４１０は、色変換回路３００から入力したＣＭＹＫデータを他のモード時と同様に５ビットの量子化データにエンコードすると、データセレクタ４２０ではなく、デコーダ４３０に直接、量子化データを出力する。デコーダ４３０は、エンコーダ４１０から量子化データを入力すると、かかる量子化データを、第１ドット個数テーブルＤＴ１、第２ドット個数テーブルＤＴ２および順序値マトリクスＯＭを用いて２ビットのドット形成用データに変換する。そして、このドット形成用データを、ドット形成用データバッファＤＢではなく、ＥＢ制御ユニット４４０を介して、エンコードデータバッファＥＢに蓄積する。すなわち、他のモード時には、エンコードデータバッファＥＢには、６ビットの量子化データもしくは６ビットの白黒エッジデータが蓄積されることになるが、１×１モード時には、２ビットのドット形成用データが蓄積される。
【０１７３】
エンコードデータバッファＥＢに蓄積されたドット形成用データは、データ回転ユニット５１０に読み込まれ、ヘッド駆動用データに変換される。なお、１×１モードでは、ノズルピッチ間に位置するラスタライン上のドット形成用データは、デコーダ４３０ではなく、データ回転ユニット５１０によって間引き処理（インターレース処理）される。
【０１７４】
以上のような構成によれば、１×１モード時には、データセレクタ４２０やドット形成用データバッファＤＢが用いられずにドット形成用データがデータ回転ユニット５１０まで出力されることになるため、印刷速度を向上させることができる。すなわち、画質よりもスピードを優先させた印刷を行うことができる。
【０１７５】
Ｆ．黒データテーブルの作成方法：
図１０に示したハーフトーン回路４００のデコーダ４３０が、白黒エッジデータのデコード時に用いる黒データテーブルＢＴ（図２８参照）は、予めＲＯＭ１５３に記録しておき、印刷処理開始時や印刷装置１００の起動時に、これをＳＤＲＡＭ１５２上にロードするものとすることができる。しかし、黒データテーブルＢＴは、順序値マトリクスＯＭと同等の容量を有しているため、ＲＯＭ１５３の記憶領域を大きく消費することになる。そこで、上記実施例では、印刷装置１００は、黒データテーブルＢＴを以下に説明する方法により動的に生成するものとする。
【０１７６】
図３０は、制御ユニット１５０のＣＰＵ１５１が実行する黒データテーブル作成処理のフローチャートである。図示するように、ＣＰＵ１５１は、印刷対象のＲＧＢ画像データをコンピュータ９００やスキャナ１１０から入力すると（ステップＳ１００）、かかるＲＧＢ画像データの画像処理に先立ち、画像処理ユニット１５５を１×１モードに設定し（ステップＳ１１０）、全画素が黒、すなわち、全画素のＲＧＢ値が（０，０，０）となる１２８画素×６４画素のＲＧＢ画像データを画像処理ユニット１５５に出力する（ステップＳ１２０）。１×１モードとは、入力画像の解像度と出力画像の解像度とを１対１で対応させるモードである。
【０１７７】
画像処理ユニット１５５に１２８画素×６４画素のＲＧＢ画像データが入力されると、上述した画像処理ユニット１５５の働きにより、ＳＤＲＡＭ１５２のエンコードデータバッファＥＢ上に、１２８×６４のサイズを有する全画素が黒のドット形成用データが生成される。すると、ＣＰＵ１５１は、このドット形成用データを、ＳＤＲＡＭ１５２内の黒データテーブルＢＴを格納する領域に転送して記憶させる（ステップＳ１３０）。
【０１７８】
以上の処理により、ＳＤＲＡＭ１５２の所定の領域に黒データテーブルＢＴが作成されたため、ＣＰＵ１５１は、画像処理ユニット１５５を２×２モードに設定し（ステップＳ１４０）、ステップＳ１００で入力したＲＧＢ画像データを、画像処理ユニット１５５に出力する（ステップＳ１５０）。
【０１７９】
以上で説明した処理によれば、１２８画素×６４画素分の黒色を表すＲＧＢデータを画像処理ユニット１５５に出力するだけで、ＳＤＲＡＭ１５２上に黒データテーブルＢＴが生成される。そのため、予めＲＯＭ１５３に黒データテーブルＢＴを記憶させる必要がなく、ＲＯＭ１５３の記憶容量を削減することができる。また、画像処理ユニット１５５の色変換回路３００では、印刷装置１００の個体に応じたインク量の補正や印刷縞の補正が行われるため、印刷装置の個体に応じて最適な黒データテーブルＢＴが作成されることになる。従って、画質の向上を図ることが可能になる。
【０１８０】
また、上述した黒データテーブルＢＴの作成処理では、印刷データを入力する毎に、黒データテーブルＢＴを作成するものとしたため、例えば、印刷用紙の種類やセットされているインクの種類、印刷画質の設定に応じて、その設定に適した黒データテーブルＢＴを作成することができる。もちろん、このような必要がないときは、印刷装置１００の起動時に、図３０のステップＳ１１０〜Ｓ１３０の処理を実行するものとしてもよい。このようにすれば、印刷実行毎に黒データテーブルＢＴを作成する必要がないため、印刷速度を向上させることができる。
【０１８１】
Ｇ．他の出力解像度モードの例：
以上で説明した印刷装置１００では、２×２モードによって各種画像処理が行われる場合について説明した。ここで、参考のために、他の出力解像度のモードにおけるブロック番号の判別方法と、中間ドットデータの振り分け方法について説明する。
【０１８２】
＜各モードにおけるブロック番号の判別方法＞
図３１は、１×１モードにおけるブロック番号の判別方法を示す説明図である。１×１モードは、エンコーダ４１０が入力したＣＭＹＫ画像データの解像度（３６０ｄｐｉ×３６０ｄｐｉ）を等倍の解像度（３６０ｄｐｉ×３６０ｄｐｉ）で出力するモードである。そのため、順序値マトリクスＯＭにおいて、１つのブロック番号が割り振られている４×２の単位ブロックの大きさは、１×１モードで出力しようとするとＣＭＹＫ画像データ内でも、４画素×２画素の大きさに相当する。従って、ハーフトーン回路４００は、かかる４×２の画素が同一のブロック番号であると判別する。
【０１８３】
図３２は、１×２モードにおけるブロック番号の判別方法を示す説明図である。１×２モードは、エンコーダ４１０が入力したＣＭＹＫ画像データの解像度（３６０ｄｐｉ×３６０ｄｐｉ）を縦方向に２倍の解像度（３６０ｄｐｉ×７２０ｄｐｉ）にして出力するモードである。そのため、順序値マトリクスＯＭ内の１つのブロック番号が割り振られている４×２の単位ブロックの大きさは、１×２モードで出力しようとするＣＭＹＫ画像データ内では、４画素×１画素の大きさに相当する。従って、ハーフトーン回路４００は、かかる４×１の画素が同一のブロック番号であると判別する。
【０１８４】
図３３は、２×１モードにおけるブロック番号の判別方法を示す説明図である。２×１モードは、エンコーダ４１０が入力したＣＭＹＫ画像データの解像度（３６０ｄｐｉ×３６０ｄｐｉ）を横方向に２倍の解像度（７２０ｄｐｉ×３６０ｄｐｉ）にするモードである。そのため、順序値マトリクスＯＭ内の１つのブロック番号が割り振られている４×２の単位ブロックの大きさは、２×１モードで出力しようとするＣＭＹＫ画像データ内では、２画素×２画素の大きさに相当する。従って、ハーフトーン回路４００は、かかる２×２の画素が同一のブロック番号であると判別する。
【０１８５】
図３４は、４×２モードにおけるブロック番号の判別方法を示す説明図である。４×２モードは、エンコーダ４１０が入力したＣＭＹＫ画像データの解像度（３６０ｄｐｉ×３６０ｄｐｉ）を横方向に４倍、縦方向に２倍の解像度（１４４０ｄｐｉ×７２０ｄｐｉ）にするモードである。そのため、順序値マトリクスＯＭ内の１つのブロック番号が割り振られている４×２の単位ブロックの大きさは、４×２モードで出力しようとするＣＭＹＫ画像データ内では、１画素×１画素の大きさに相当する。従って、ハーフトーン回路４００は、かかる１×１の画素が同一のブロック番号であると判別する。
【０１８６】
＜各モードにおける中間ドットデータの振り分け＞
図２６に示したように、１つの量子化データからは、出力解像度のモードにかかわらず、４画素×２画素の中間ドットデータが生成される。１つの量子化データは、ＣＭＹＫ画像データの１画素に対応することから、すべての量子化データについて中間ドットデータを生成すると、３６０ｄｐｉ×３６０ｄｐｉの入力解像度が、１４４０ｄｐｉ×７２０ｄｐｉの出力解像度となってしまい、各モード（４×２モードを除く）が目標とする出力解像度とは異なる解像度を有することになる。そこで、デコーダ４３０内の量子化データデコード回路４３３は、中間ドットデータを構成する各画素を、出力解像度のモードに応じて、適宜、振り分けを行い、出力解像度の調整を行う。
【０１８７】
＜１×１モードの場合＞
図３５は、１×１モードにおける中間ドットデータの振り分け方法を示す説明図である。図３１で示したように、１×１モードの場合には、４画素×２画素の計８画素が同一のブロック番号を有する。従って、図３５のように、かかる８画素からそれぞれ生成される横に４つ、縦に２つ分の計８つの中間ドットデータから、それぞれ異なる位置の画素を１つずつ抽出し、これを４画素×２画素のドット形成用データとして振り分ける。こうすることで、３６０ｄｐｉ×３６０ｄｐｉの入力解像度が、目標とする３６０ｄｐｉ×３６０ｄｐｉの出力解像度に変換される。
【０１８８】
＜１×２モードの場合＞
図３６は、１×２モードにおける中間ドットデータの振り分け方法を示す説明図である。図３２で示したように、１×２モードの場合には、４画素×１画素の計４画素が同一のブロック番号を有する。従って、図３６のように、かかる４画素からそれぞれ生成される横方向に４つ分の中間ドットデータから、それぞれ異なる位置の画素を縦方向に２つずつ抽出し、これを４画素×２画素のドット形成用データとして振り分ける。こうすることで、３６０ｄｐｉ×３６０ｄｐｉの入力解像度が、目標とする３６０ｄｐｉ×７２０ｄｐｉの出力解像度に変換される。
【０１８９】
＜２×１モードの場合＞
図３７は、２×１モードにおける中間ドットデータの振り分け方法を示す説明図である。図３３で示したように、２×１モードの場合には、２画素×２画素の計４画素が同一のブロック番号を有する。従って、図３７のように、かかる４画素からそれぞれ生成される横方向に２つ、縦方向に２つ分の計４つの中間ドットデータから、それぞれ異なる位置の画素を横方向に２つずつ抽出し、これを４画素×２画素のドット形成用データとして振り分ける。こうすることで、３６０ｄｐｉ×３６０ｄｐｉの入力解像度が、目標とする７２０ｄｐｉ×３６０ｄｐｉの出力解像度に変換されることになる。
【０１９０】
＜４×２モードの場合＞
図３８は、４×２モードにおける中間ドットデータの振り分け方法を示す説明図である。図３４で示したように、４×２モードの場合には、１画素がそれぞれ１つのブロック番号を有する。従って、図３８のように、かかる１画素から生成される１つの中間ドットデータから、すべての画素を抽出し、これを４画素×２画素のドット形成用データとしてそのまま適用する。こうすることで、３６０ｄｐｉ×３６０ｄｐｉの入力解像度が、目標とする１４４０ｄｐｉ×７２０ｄｐｉの出力解像度に変換されることになる。
【０１９１】
＜その他のモード＞
出力解像度のモードとしては、そのほかに、出力解像度が７２０ｄｐｉ×１４４０ｄｐｉとなる２×４モードや、出力解像度が１４４０ｄｐｉ×１４４０ｄｐｉとなる４×４モードも存在するが、これらのモードでは、図２２や図２３で示した第１ドット個数テーブルＤＴ１や第２ドット個数テーブルＤＴ２の内容が異なっており、他のモードとはハーフトーン処理の態様が異なるため、本実施例では詳細な説明を省略する。
【０１９２】
Ｈ．変形例：
以上、本発明の種々の実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、ハードウェアで実現した機能をＣＰＵ１５１が所定のプログラムを実行することによりソフトウェア的によって実現するものとしてもよい。そのほか、以下のような変形が可能である。
【０１９３】
（Ｈ−１）変形例１：
上記実施例では、印刷装置１００単体で、色変換処理や量子化データのエンコード／デコードを行うものとした。これに対して、例えば、エンコードデータバッファＥＢよりも前段に位置する各デバイス、すなわち、色変換回路３００やエンコーダ４１０、データセレクタ４２０を、印刷装置１００とは異なる装置に組み込み、印刷装置１００とかかる装置とを所定の通信路で接続するものとしてもよい。このような装置としては、例えば、コンピュータ９００を用いることができる。コンピュータ９００を用いる場合には、色変換回路３００やエンコーダ４１０、データセレクタ４２０が実施する処理に相当する処理を、例えば、プリンタドライバなどによりソフトウェア的に実現することができる。こうすることにより、印刷装置１００の処理負担を軽減することができる。また、エンコーダ４１０によってエンコードされた量子化データや、白黒エッジ処理ユニット３２０によってエンコードされた白黒エッジデータは、もとのＲＧＢデータに対してデータ容量が大幅に削減されているため、通信データの容量が削減されることになる。
【０１９４】
（Ｈ−２）変形例２：
上記実施例では、順序値マトリクスのサイズを、１２８×６４であるものとした。しかし、順序値マトリクスは、かかるサイズに限定されるものではなく、例えば、より大きなサイズ（例えば、５１２×２５６）とすることができる。大きなサイズの順序値マトリクスを用いれば、入力した画像のサイズが大きい場合であっても効率的にハーフトーン処理を行うことができる。
【０１９５】
図３９および図４０は、５１２×２５６の順序値マトリクスの一例を示す説明図である。図３９には、実施例に示した１２８×６４のサイズの順序値マトリクス（図中のハッチング部分）を、横方向に６４画素分、オフセットさせつつタイル状に当てはめて構成した例を示している。また、図４０には、実施例で示した１２８×６４の順序値マトリクスを、縦方向に３２画素分、オフセットさせつつタイル状に当てはめて構成した例を示している。このように、通常のサイズの順序値マトリクスを繰り返して適用することにより、容易に大きなサイズの順序値マトリクスを生成することができる。
【０１９６】
大きなサイズの順序値マトリクスは、予めその全体をＲＯＭ１５３に記録させておいてもよいが、ＲＯＭ１５３には、通常の１２８×６４のサイズの順序値マトリクスを記憶させておき、印刷装置１００の起動時に、ＣＰＵ１５１が、この小さなサイズの順序値マトリクスをロードして、図３９や図４０に示した配置に構成した上で、ＳＤＲＡＭ１５２に展開するものとしてもよい。こうすることで、ＲＯＭ１５３の記憶容量を削減することが可能になる。なお、順序値マトリクスを大きなサイズにする場合には、それに対応して黒データテーブルＢＴも大きなサイズにするものとする。
【０１９７】
（Ｈ−３）変形例３：
上記実施例では、白色と黒色の組み合わせのみによって構成される部分について高解像度のままハーフトーン処理を行うものとしたが、色の組み合わせはこれに限られることはない。例えば、白色と青色、あるいは白色と緑色などとすることもできる。この場合、例えば、ユーザがコンピュータ９００や操作パネル１４０を用いて色の組み合わせを設定できるものとしてもよい。こうすることにより、文字等の色を黒色以外の色で表した場合などにも、その文字を高解像度のまま印刷することができる。なお、ユーザによって色の指定がされた場合には、黒データテーブルＢＴに換え、その色に応じたテーブルを作成するものとすることができる。この場合であっても、上述した黒データテーブルの作成方法に従えば、指定された色に応じたテーブルを容易に生成することが可能である。
【０１９８】
（Ｈ−４）変形例４：
上記実施例では、入力解像度が７２０ｄｐｉ×７２０ｄｐｉで、出力解像度も７２０ｄｐｉ×７２０ｄｐｉの場合における画像処理について説明したが、解像度はこれに限られることはない。例えば、両解像度は、６００ｄｐｉ×６００ｄｐｉでもよいし、１２００ｄｐｉ×１２００ｄｐｉでもよい。また、１４４０ｄｐｉ×１４４０ｄｐｉでもよい。
【０１９９】
（Ｈ−５）変形例５：
上記実施例では、各パスユニットは、白黒エッジデータ等のデータを順次転送する機能を備えるものとして説明した。これに対して、各パスユニットは、白黒エッジデータ等の転送だけではなく、転送を行うデータに対して、所定の画像処理を行う機能を備えるものとしてもよい。例えば、白黒エッジデータの解像度を、より高解像度に変換する処理や、白黒エッジデータが表す黒色あるいは白色の画素の色を他の色に変換する処理などを行わせるものとすることができる。これらの処理は、そのパスユニットに対応するメインユニットが画像処理を行う処理時間の中で完了する処理とすることができる。こうすることにより、メインユニットによるデータの転送に遅延が発生することが無く、適切に同期をとることができる。
【０２００】
（Ｈ−６）変形例６：
上記実施例では、色変換回路３００およびハーフトーン回路４００内に存在するパスユニットは、これに対応するメインユニットと同数のユニットを備えるものとした。これに対して、パスユニットは、より少ない数によって構成することも可能である。
【０２０１】
図４１は、上記実施例のパスユニットの構成と、変形例としてのパスユニットの構成を比較する説明図である。図４１（ａ）には、実施例のパスユニットの構成を示し、図４１（ｂ）には、変形例としてのパスユニットの構成を示した。なお、この図では、便宜上、実施例に示したメインユニットの一部を省略して示している。図４１（ａ）に示すように、上記実施例の印刷装置１００は、メインユニットと同数のパスユニットを備えているが、本変形例では、図４１（ｂ）に示すように、メインユニットの数よりも少ない数のパスユニットを備えているものとした。
【０２０２】
かかる変形例では、エンコーダ４１０が前段のインク量補正ユニット３４０に対して出力するａｃｋ信号を、第１パスユニット３９０ａの出力側と、第７パスユニット３９０ｇの入力側とに分岐して入力するものとした。こうすることにより、平均化データがインク量補正ユニット３４０からエンコーダ４１０に転送されるタイミングで、白黒エッジデータが、第１パスユニット３９０ａから第７パスユニット３９０ｇに転送されることになる。従って、本変形例のように、メインユニットとパスユニットの数が同数でなくても、適切に、平均化データと白黒エッジデータとを、同期して転送することができる。なお、図４１（ｂ）示した変形例では、第１パスユニットを構成するＦＩＦＯメモリは、色変換ユニット３３０とインク量補正ユニット３４０とに蓄積されるデータ以上のデータを蓄積可能なメモリ容量を有するものとする。
【０２０３】
（Ｈ−７）変形例７：
図４２は、色変換回路３００の他の構成を示す説明図である。上記実施例では、色変換ユニット３３０から出力された標準エッジデータとノイズデータとを、パスユニット群によって転送し、これらのデータをブロック内平滑化ユニット３８０に入力するものとした。しかし、本変形例の色変換回路３００ｂでは、これらのデータのうち、ノイズデータを、ブロック内平滑化ユニット３８０以外に、ビット減縮ユニット３６０にも入力するものとした。こうすることにより、ビット減縮ユニット３６０は、ビット減縮に用いるノイズを発生させるための回路を自分自身に備えることが不要となり、コストダウンを図ることが可能になる。なお、実施例で説明したように、ビット減縮ユニット３６０は、４ビットのノイズを用いるため、色変換ユニット３３０は、５ビットのノイズデータを生成するものとし、そのうち４ビットのノイズをビット減縮ユニット３６０に転送し、残りの１ビットのノイズをブロック内平滑化ユニット３８０に転送するものとすることができる。
【図面の簡単な説明】
【０２０４】
【図１】実施例としての印刷装置１００の概略構成を示す説明図である。
【図２】印刷装置１００の内部構成を示す説明図である。
【図３】インクヘッド２１１から異なる大きさのインク滴が吐出される原理を示す説明図である。
【図４】ＳＤＲＡＭ１５２のメモリマップを示す説明図である。
【図５】色変換回路３００の詳細な構成を示すブロック図である。
【図６】パスユニット３９０ａ〜３９０ｆの内部構成を示す説明図である。
【図７】白黒エッジ処理ユニット３２０の内部構成を示す説明図である。
【図８】白黒エッジテーブルＥＴの一例を示す説明図である。
【図９】色変換ユニット３３０の内部構成を示す説明図である。
【図１０】ハーフトーン回路４００とヘッド駆動用データ変換回路５００の詳細な構成を示すブロック図である。
【図１１】従来の組織的ディザ法によるハーフトーン処理の概要を示す説明図である。
【図１２】４×２の画素群についてドット数が変化する様子を示す説明図である。
【図１３】階調値と発生するドットの個数とその配置の関係を示す説明図である。
【図１４】大中小のドットを形成可能な場合におけるドットのオン・オフの決定方法を示す説明図である。
【図１５】画像データの階調値が０から２５５まで変化する際に、大中小ドットの組み合わせにより、階調値が、印刷媒体上でどのように変化していくかを表すグラフである。
【図１６】図１５に示したグラフを対応表として表した説明図である。
【図１７】２×２モードにおけるブロック番号の判別方法を示す説明図である。
【図１８】ブロック番号の実際の判別例を示す説明図である。
【図１９】データセレクタ４２０の詳細な構成を示す説明図である。
【図２０】エンコードデータバッファＥＢにエンコードデータを格納するまでの過程を概念的に示す説明図である。
【図２１】デコーダ４３０の詳細な構成を示す説明図である。
【図２２】第１ドット個数テーブルＤＴ１の一例を示す説明図である。
【図２３】第２ドット個数テーブルＤＴ２の一例を説明したものである。
【図２４】第２ドット個数データの一例を示す説明図である。
【図２５】順序値マトリクスの一部を拡大した図である。
【図２６】第２ドット個数データと順序値マトリクスＯＭとに基づき８つの画素についてそれぞれドットを配置する手順を概念的に示す説明図である。
【図２７】２×２モードにおいて中間ドットデータの振り分けを行う具体例を示す説明図である。
【図２８】黒データテーブルＢＴの一例を示す説明図である。
【図２９】データ回転ユニット５１０によるデータの並べ直しの概念を示す説明図である。
【図３０】黒データテーブル作成処理のフローチャートである。
【図３１】１×１モードにおけるブロック番号の判別方法を示す説明図である。
【図３２】１×２モードにおけるブロック番号の判別方法を示す説明図である。
【図３３】２×１モードにおけるブロック番号の判別方法を示す説明図である。
【図３４】４×２モードにおけるブロック番号の判別方法を示す説明図である。
【図３５】１×１モードにおける中間ドットデータの振り分け方法を示す説明図である。
【図３６】１×２モードにおける中間ドットデータの振り分け方法を示す説明図である。
【図３７】２×１モードにおける中間ドットデータの振り分け方法を示す説明図である。
【図３８】４×２モードにおける中間ドットデータの振り分け方法を示す説明図である。
【図３９】５１２×２５６の順序値マトリクスの一例を示す説明図である。
【図４０】５１２×２５６の順序値マトリクスの一例を示す説明図である。
【図４１】実施例のパスユニットの構成と変形例のパスユニットの構成とを比較する説明図である。
【図４２】色変換回路３００の他の構成を示す説明図である。
【符号の説明】
【０２０５】
１００...印刷装置
１１０...スキャナ
１２０...メモリカードスロット
１３０...ＵＳＢインタフェース
１４０...操作パネル
１５０...制御ユニット
１５１...ＣＰＵ
１５２...ＳＤＲＡＭ
１５３...ＲＯＭ
１５４...ＥＥＰＲＯＭ
１５５...画像処理ユニット
１５６...ヘッドコントロールユニット
１６０...印刷機構
２００...プリンタ
２１０...キャリッジ
２１１...インクヘッド
２１２...インクカートリッジ
２２０...キャリッジモータ
２３０...紙送りモータ
２６０...駆動ベルト
２７０...プラテン
２８０...摺動軸
３００...色変換回路
３１０...ライン入力ユニット
３２０...白黒エッジ処理ユニット
３２１...白黒エッジ判定回路
３２２...平均化回路
３２３...白黒エッジエンコード回路
３２４...セレクタ回路
３３０...色変換ユニット
３３１...変換回路
３３２...標準エッジ判定回路
３３３...ノイズ発生回路
３３４...スムージング回路
３４０...インク量補正ユニット
３５０...印刷縞抑制ユニット
３６０...ビット減縮ユニット
３７０...透明インク後処理ユニット
３８０...ブロック内平滑化ユニット
３９０ａ〜ｇ...パスユニット
４００...ハーフトーン回路
４１０...エンコーダ
４１１...ブロック番号判別回路
４１２...量子化回路
４２０...データセレクタ
４３０...デコーダ
４３１...データ判定回路
４３２...白黒エッジデータデコード回路
４３３...量子化データデコード回路
４４０...ＥＢ制御ユニット
５００...ヘッド駆動用データ変換回路
５１０...データ回転ユニット
５２０...ＨＢ制御ユニット
９００...コンピュータ
【図１】
0004696804.tif 000002
【図２】
0004696804.tif 000003
【図３】
0004696804.tif 000004
【図４】
0004696804.tif 000005
【図５】
0004696804.tif 000006
【図６】
0004696804.tif 000007
【図７】
0004696804.tif 000008
【図８】
0004696804.tif 000009
【図９】
0004696804.tif 000010
【図１０】
0004696804.tif 000011
【図１１】
0004696804.tif 000012
【図１２】
0004696804.tif 000013
【図１３】
0004696804.tif 000014
【図１４】
0004696804.tif 000015
【図１５】
0004696804.tif 000016
【図１６】
0004696804.tif 000017
【図１７】
0004696804.tif 000018
【図１８】
0004696804.tif 000019
【図１９】
0004696804.tif 000020
【図２０】
0004696804.tif 000021
【図２１】
0004696804.tif 000022
【図２２】
0004696804.tif 000023
【図２３】
0004696804.tif 000024
【図２４】
0004696804.tif 000025
【図２５】
0004696804.tif 000026
【図２６】
0004696804.tif 000027
【図２７】
0004696804.tif 000028
【図２８】
0004696804.tif 000029
【図２９】
0004696804.tif 000030
【図３０】
0004696804.tif 000031
【図３１】
0004696804.tif 000032
【図３２】
0004696804.tif 000033
【図３３】
0004696804.tif 000034
【図３４】
0004696804.tif 000035
【図３５】
0004696804.tif 000036
【図３６】
0004696804.tif 000037
【図３７】
0004696804.tif 000038
【図３８】
0004696804.tif 000039
【図３９】
0004696804.tif 000040
【図４０】
0004696804.tif 000041
【図４１】
0004696804.tif 000042
【図４２】
0004696804.tif 000043