以下では、上述した本願発明の内容を明確にするために、次のような順序に従って実施例を説明する。
A.実施例の概要:
B.装置構成:
C.画像印刷処理の概要:
D.第1実施例:
D−1.通常のオーバーラップ処理:
D−2.第1実施例のオーバーラップ処理:
D−3.第1実施例の変形例:
E.第2実施例:
A.実施例の概要:
実施例の詳細な説明に入る前に、図1を参照しながら、実施例の概要について説明しておく。図1は、印刷システムを例にとって、本願発明の画像表示装置に関する実施例の概要を示した説明図である。図示した印刷システムは、コンピュータ10に、画像表示装置としてのプリンタ20などを組み合わせて構成されている。コンピュータ10は、表示しようとする画像に所定の画像処理を施してドットデータを生成し、得られたドットデータをプリンタ20に供給する。こうした画像処理は、コンピュータ10に内蔵されたハーフトーンモジュールによって行われ、ハーフトーンモジュールは画像データを受け取ると、画素毎にドット形成の有無を判断することによってドットデータを生成する。
プリンタ20は、表示媒体としての印刷用紙にドットを形成することによって画像を印刷するドットプリンタである。プリンタ20は、ドットデータ記憶手段としてのメモリ22と、ドットデータ供給モジュール24と、ドット形成要素としての印字ヘッド26などから構成されており、コンピュータ10から供給されたドットデータは、一旦、メモリ22に記憶される。尚、図1では、ドットデータはコンピュータ10から供給されるものとして表示しているが、プリンタ20内にハーフトーンモジュールを搭載しておき、内蔵したハーフトーンモジュールを用いて画像データからドットデータを生成することも可能である。こうした場合は、メモリ22には、内蔵ハーフトーンモジュールから出力されたドットデータが記憶される。
印字ヘッド26は、印刷用紙に対して相対的に移動しながらドットを形成することで、印刷用紙上にドットの列たるドット列を形成する。ここで印字ヘッド26は、所定の間隔を空けて複数個のドットを同時に形成することにより、互いに間隔を空けて複数本のドット列を同時に形成することが可能である。ドットデータ供給モジュール24は、印字ヘッド26が印刷用紙に対して相対的に移動する動きに合わせて、該印字ヘッド26が形成しようとする複数本のドット列に対応するドットデータをメモリ22から読み出して、印字ヘッド26に供給する。印字ヘッド26は、供給されたドットデータに基づいて印刷用紙上にドットを形成する。こうすることで、印刷用紙上に画像が印刷されることになる。
このようにして画像を印刷するドットプリンタでは、画像の表示を高解像度化するほど、印刷画質を改善することができる。しかし、画像データの解像度を高くするほど画素数が増えてしまうので、ドットデータのデータ量も増加してしまい、このデータを一旦記憶しておくためのメモリ22も、大きな記憶容量が必要になってしまう。また、画素数が増加すれば、ドットデータを生成するために要する時間も増えてしまうので、画像を迅速に表示することが困難となってしまう。
そこで、図1に示したプリンタ20では、印字ヘッド26に、次のようにしてドットデータを供給する。先ず、低解像度のドットデータを受け取ってメモリ22に記憶しておく。ドットデータ供給モジュール24は、印字ヘッド26が形成しようとするドット列に対応するドットデータをメモリ22から読み出して、このデータを高解像度のデータに変換した後、印字ヘッド26がドットを形成する順序に従って、高解像度のデータを印字ヘッド26に供給する。
このようにして印字ヘッド26にドットデータを供給してやれば、メモリ22に記憶されるドットデータは低解像度のデータなので、記憶容量が増加することはない。もちろん、ドットデータ供給モジュール24の内部では、ドットデータを高解像度のデータに変換しなければならないが、印字ヘッド26が形成しようとするドット列に対応するデータのみを変換すればよいので、大きな記憶容量が必要となることはない。また、ハーフトーンモジュールでは低解像度のドットデータを生成すればよいので、画像データからドットデータを迅速に生成することができ、画像を迅速に表示することが可能となる。以下では、こうした本願発明の画像表示装置および画像表示方法について、実施例に基づいて詳細に説明する。
B.装置構成:
図2は、本実施例の画像処理装置としてのコンピュータ100の構成を示す説明図である。コンピュータ100は、CPU102を中心に、ROM104やRAM106などを、バス116で互いに接続することによって構成されている。コンピュータ100には、フレキシブルディスク124やコンパクトディスク126などからデータを読み込むためのディスクコントローラDDC109や、周辺機器との間でデータの授受を行うために用いられる周辺機器インターフェースPIF108、CRT114を駆動するためのビデオインターフェースVIF112等が接続されている。PIF108には、ハードディスク118や、後述するプリンタ200等が接続されている。また、デジタルカメラ120や、カラースキャナ122等をPIF108に接続すれば、デジタルカメラ120やカラースキャナ122で取り込んだ画像を印刷することも可能である。また、ネットワークインターフェースカードNIC110を装着すれば、コンピュータ100を通信回線300に接続して、通信回線に接続された記憶装置310に記憶されているデータを取得することもできる。
図3は、本実施例のプリンタ200の概略構成を示す説明図である。プリンタ200はシアン,マゼンタ,イエロ,ブラックの4色インクのドットを形成可能なインクジェットプリンタである。もちろん、これら4色のインクに加えて、染料濃度あるいは顔料濃度の低いシアン(淡シアン)インクと、染料濃度あるいは顔料濃度の低いマゼンタ(淡マゼンタ)インクとを含めた合計6色のインクドットを形成可能なインクジェットプリンタを用いることもできる。尚、以下では、シアンインク,マゼンタインク,イエロインク,ブラックインク,淡シアンインク,淡マゼンタインクを、必要に応じて、それぞれCインク,Mインク,Yインク,Kインク,LCインク,LMインクと略称するものとする。
プリンタ200は、図示するように、キャリッジ240に搭載された印字ヘッド241を駆動してインクの吐出およびドット形成を行う機構と、このキャリッジ240をキャリッジモータ230によってプラテン236の軸方向に往復動させる機構と、紙送りモータ235によって印刷用紙Pを搬送する機構と、ドットの形成やキャリッジ240の移動および印刷用紙の搬送を制御する制御回路260などから構成されている。
キャリッジ240には、Kインクを収納するインクカートリッジ242と、Cインク,Mインク,Yインクの各種インクを収納するインクカートリッジ243とが装着されている。キャリッジ240にインクカートリッジ242,243を装着すると、カートリッジ内の各インクは図示しない導入管を通じて、印字ヘッド241の下面に設けられた各色毎のインク吐出用ヘッド244ないし247に供給される。各色毎のインク吐出用ヘッド244ないし247は、こうして供給されたインクを用いてインク滴を吐出して、印刷媒体上にインクドットを形成する。
制御回路260は、CPUを中心として、ROMや、RAM、周辺機器インターフェースPIF等に加えて、デジタルデータをアナログ信号に変換するD/A変換器等から構成されている。もちろん、CPUを搭載せずに、ハードウェアあるいはファームウェアによって同様の機能を実現することとしても良い。制御回路260は、キャリッジモータ230および紙送りモータ235の動作を制御することによって、キャリッジ240の主走査動作および副走査動作の制御を行う。また、キャリッジ240の主走査および副走査に合わせて、適切なタイミングで印字ヘッド241を駆動することによってインク滴を吐出する。こうして制御回路260の制御の下で、各色のインク吐出用ヘッド244ないし247から適切なタイミングでインク滴が吐出され、その結果、印刷用紙P上にインクドットが形成されて、カラー画像が印刷される。
尚、各色のインク吐出ヘッドからインク滴を吐出する方法には、種々の方法を適用することができる。すなわち、ピエゾ素子を用いてインクを吐出する方式や、インク通路に配置したヒータでインク通路内に泡(バブル)を発生させてインク滴を吐出する方法などを用いることができる。また、インクを吐出する代わりに、熱転写などの現象を利用して印刷用紙上にインクドットを形成する方式や、静電気を利用して各色のトナー粉を印刷媒体上に付着させる方式のプリンタを使用することも可能である。
図4は、各色のインク吐出用ヘッド244ないし247の底面に、インク滴を吐出する複数のノズルNzが形成されている様子を示した説明図である。図示するように、各色のインク吐出用ヘッドの底面には、各色毎のインク滴を吐出する4組のノズル列が形成されており、1組のノズル列には、48個のノズルNzがノズルピッチpの間隔を空けて千鳥状に配列されている。これらノズルは、制御回路260の制御の元で駆動され、インク滴を吐出することによって印刷用紙上にインクドットを形成する。
また、本実施例のプリンタ200は、吐出するインク滴の大きさを制御することにより、インクドットの大きさを制御することが可能である。以下、プリンタ200が大きさの異なるインクドットを形成する方法について説明するが、その準備として、先ず、各色インクを吐出するノズルの内部構造について説明する。図5(a)は、インクを吐出するノズルの内部構造を示した説明図である。各色のインク吐出用ヘッド244ないし247には、このようなノズルが複数設けられている。図示するように、各ノズルにはインク通路255とインク室256とが設けられており、また、インク室の上面にはピエゾ素子PEが設けられている。キャリッジ240にインクカートリッジ242,243を装着すると、カートリッジ内のインクがインクギャラリ257を経由してインク室256に供給される。ピエゾ素子PEは、周知のように、電圧を印加すると結晶構造が歪んで極めて高速に電気−機械エネルギの変換を行う素子である。本実施例では、ピエゾ素子PEの両端に設けられた電極間に所定波形の電圧を印加することで、インク室256の側壁を変形させる。その結果、インク室256の容積が減少し、容積の減少分に相当するインクがインク滴IpとなってノズルNzから吐出される。このインク滴Ipがプラテン236に装着された印刷用紙Pに染み込むことで、印刷用紙上にインクドットが形成される。
図5(b)は、ピエゾ素子PEに印加する電圧波形を制御することで、吐出するインク滴の大きさを変更する原理を示した説明図である。ノズルからインク滴Ipを吐出するためには、ピエゾ素子PEに府の電圧を印加してインクギャラリ257からインク室256内に一旦インクを吸入し、その後、ピエゾ素子PEに正電圧を印加してインク室容積を減少させて、インク滴Ipを吐出させる。ここで、インクの吸引速度が適切であればインク室容積の変化量に相当するインクが吸入されるが、吸引速度が速すぎると、インクギャラリ257とインク室256との間には通路抵抗があるためにインクギャラリ257からのインクの流入が間に合わなくなる。その結果、インク通路255のインクがインク室内に逆流して、ノズル付近のインク界面が大きく後退した状態となる。図5(b)に実線で示した電圧波形aは、適正な速度でインクを吸引する波形を示し、破線で示した電圧波形bは適切速度より大きな速度で吸引する波形の一例を示している。
十分なインクがインク室256内に供給された状態で、ピエゾ素子PEに正電圧を印加すると、インク室256の容積減少に相当する体積のインク滴IpがノズルNzから吐出される。これに対して、インクの供給量が不足してインク界面が大きく後退した状態で正電圧を印加すると、吐出されるインク滴は小さなインク滴となる。このように、本実施例のプリンタ200では、インク滴の吐出前に印加する負の電圧波形を制御してインクの吸引速度を変更することで、吐出するインク滴の大きさを制御する。これにより、大ドット、中ドット、小ドットの3種類のインクドットを形成することが可能となっている。
もちろん、3種類に限らずより他種類のドットを形成することも可能である。更には、微細なインク滴を一度に複数吐出して、吐出するインク滴の数を制御するといった方法を用いて、印刷用紙上に形成されるインクドットの大きさを制御してもよい。
以上のようなハードウェア構成を有するプリンタ200は、キャリッジモータ230を駆動することによって、各色のインク吐出用ヘッド244ないし247を印刷用紙Pに対して主走査方向に移動させ、また紙送りモータ235を駆動することによって、印刷用紙Pを副走査方向に移動させる。制御回路260は、キャリッジ240の主走査および副走査を繰り返しながら、適切なタイミングでノズルを駆動してインク滴を吐出する。こうすることで、印刷用紙P上の適切な位置にインクドットが形成されて、その結果、画像が印刷されることになる。
C.画像印刷処理の概要:
図6は、本実施例のコンピュータ100およびプリンタ200が、画像データに所定の画像処理を加えてドットデータを生成し、印刷用紙上に画像を印刷する処理の流れを示すフローチャートである。かかる画像印刷処理は、後述するように、ハーフトーン処理を行ってドットデータを生成するまでの処理はコンピュータ100に内蔵されたCPUの機能を利用して実行され、また、オーバーラップ処理以降の処理はプリンタ200の制御回路260に内蔵されたCPUの機能を利用して実行される。以下では、図6に従って、本実施例の画像印刷処理について説明する。
コンピュータ100は、画像印刷処理を開始すると、先ず初めに、変換すべき画像データの読み込みを開始する(ステップS100)。ここでは、画像データはRGBカラー画像データであるものとして説明するが、カラー画像データに限らず、モノクロ画像データについても同様に適用することができる。
カラー画像データの読み込みに続いて、色変換処理を行う(ステップS102)。色変換処理とは、R,G,Bの階調値の組合せによって表現されているRGBカラー画像データを、印刷のために使用される各色の階調値の組合せによって表現された画像データに変換する処理である。前述したように、プリンタ200はC,M,Y,Kの4色のインクを用いて画像を印刷している。そこで、本実施例の色変換処理ではRGB各色によって表現された画像データを、C,M,Y,Kの各色の階調値によって表現されたデータに変換する処理を行うのである。
色変換処理は、色変換テーブル(LUT)と呼ばれる3次元の数表を参照することで、迅速に行うことができる。図7は、色変換処理のために参照されるLUTを概念的に示した説明図である。図示されているように、直交する3つの軸にR軸、G軸、B軸を取って色空間を考える。すると、全てのRGB画像データは、必ず色空間内の座標点に対応付けて表示することができる。このことから、R軸、G軸、B軸のそれぞれを細分して色空間内に多数の格子点を設定してやれば、それぞれの格子点はRGB画像データを表していると考えることができ、各RGB画像データに対応するC,M,Y,K各色の階調値を、各格子点に対応付けてやることができる。LUTは、こうして色空間内に設けた格子点に、C,M,Y,K各色の階調値を対応付けて記憶した3次元の数表である。このような、LUTに記憶されているRGBカラー画像データとC,M,Y,K各色の階調データとの対応関係に基づいて色変換処理を行えば、RGBカラー画像データを、C,M,Y,K各色の階調データに迅速に変換することができる。
こうしてC,M,Y,K各色毎に階調データが得られると、コンピュータ100は、ハーフトーン処理を開始する(ステップS104)。ハーフトーン処理とは、次のような処理である。色変換処理によって得られた画像データは、データ長を1バイトとすると、画素毎に、階調値0から階調値255までの値を取ることができる。これに対してプリンタは、ドットを形成することによって画像を表示しているから、それぞれの画素についてはドットを形成するか否かの状態しか取り得ない。そこで、256階調を有する画像データを、画素毎にドット形成の有無によって表現されたデータ(ドットデータ)に変換しておく必要がある。ハーフトーン処理とは、このように画像データをドットデータに変換する処理である。前述したように、本実施例のプリンタ200では、大ドット、中ドット、小ドットの3種類のドットを形成可能であるから、ハーフトーン処理ではこれら3種類のドットについて、画素毎にドット形成の有無を判断することになる。
ハーフトーン処理を行う手法としては、誤差拡散法やディザ法などの種々の手法を適用することができる。誤差拡散法は、ある画素についてドットの形成有無を判断したことでその画素に発生する階調表現の誤差を、周辺の画素に拡散するとともに、周囲から拡散されてきた誤差を解消するように、各画素についてのドット形成の有無を判断していく手法である。また、ディザ法は、ディザマトリックスにランダムに設定されている閾値と画像データの階調値とを画素毎に比較して、画像データの方が大きい画素にはドットを形成すると判断し、逆に閾値の方が大きい画素についてはドットを形成しないと判断することで、各画素についてのドットデータを得る手法である。
本実施例のハーフトーン処理ではいずれの手法を適用することも可能であるが、ここではディザ法を用いてドットデータを生成しているものとする。また、説明上の都合から、ディザ法を用いてドット形成の有無を判断する方法について、概要のみを簡単に説明しておく。
図8は、ディザマトリックスの一部を拡大して例示した説明図である。図示したマトリックスには、縦横それぞれ64画素、合計4096個の画素に、階調値0〜255の範囲から万遍なく選択された閾値がランダムに記憶されている。ここで、閾値の階調値が0〜255の範囲から選択されているのは、本実施例では画像データが1バイトデータであり、画素に割り当てられる階調値が0〜255の値を取り得ることに対応するものである。尚、ディザマトリックスの大きさは、図8に例示したように縦横64画素分に限られるものではなく、縦と横の画素数が異なるものも含めて種々の大きさとすることができる。
図9は、ディザマトリックスを参照しながら、画素毎にドット形成の有無を判断している様子を概念的に示した説明図である。ドット形成有無の判断に際しては、先ず、判断の対象として着目している画素(着目画素)の階調値と、ディザマトリックス中の対応する位置に記憶されている閾値とを比較する。図中に示した細い破線の矢印は、着目画素の階調値を、ディザマトリックス中の対応する位置に記憶されている閾値と比較していることを模式的に表したものである。そして、ディザマトリックスの閾値よりも着目画素の階調値の方が大きい場合には、その画素にはドットを形成するものと判断する。逆に、ディザマトリックスの閾値の方が大きい場合には、その画素にはドットを形成しないものと判断する。図9に示した例では、画像データの左上隅にある画素の画像データは階調値180であり、ディザマトリックス上でこの画素に対応する位置に記憶されている閾値は1である。従って、左上隅の画素については、画像データの階調値180の方がディザマトリックスの閾値1よりも大きいから、この画素にはドットを形成すると判断する。図9中に実線で示した矢印は、この画素にはドットを形成すると判断して、判断結果をメモリに書き込んでいる様子を模式的に表したものである。一方、この画素の右隣の画素については、画像データの階調値は130、ディザマトリックスの閾値は177であり、閾値の方が大きいので、この画素についてはドットを形成しないものと判断する。このように、画像データの階調値とディザマトリックスに設定された閾値とを比較することにより、ドットの形成有無を画素毎に決定することができる。
図6のステップS104では、このように、色変換処理によって得られたC,M,Y,K各色の階調値と、ディザマトリックスに設定されている閾値とを比較して、画素毎にドット形成の有無を判断する処理を行う。前述したように、本実施例のプリンタ200では、大ドット、中ドット、小ドットの3種類のドットを形成可能であるから、ステップS104では、大ドット、中ドット、小ドットの各ドットについて判断する。
これら大ドット、中ドット、小ドットの形成有無を判断するための具体的な方法は、提案されている種々の方法を適用して行うことができる。例えば、大ドット、中ドット、小ドットのそれぞれに専用のディザマトリックスを用意しておき、色変換処理によって各色毎に得られた画像データと、これら専用のマトリックスとを参照することにより、画素毎に各種ドットについての形成有無を判断することができる。あるいは、色変換処理によって得られた画像データを、大ドット用の階調データ、中ドット用の階調データ、小ドット用の階調データに各色毎に変換し、これら階調データを用いてドット形成の有無を判断することとしても良い。更には、これら階調データをそのまま用いるのではなく、次のようにしても良い。先ず初めに、大ドット用の階調データをディザマトリックスの閾値とを比較して、大ドットについてのドット形成有無を判断する。大ドットを形成すると判断されなかった画素については、大ドット用の階調データと中ドット用の階調データとを加算して中間データを生成する。そして、この中間データとディザマトリックスの閾値とを比較し、中間データの方が大きい場合には、その画素に中ドットを形成すると判断する。中ドットも形成すると判断されなかった画素については、この中間データと小ドット用の階調データとを加算して新たな中間データを生成し、得られた中間データとディザマトリックスの閾値とを比較する。そして、新たに生成した中間データの方が閾値よりも大きい場合は、その画素には小ドットを形成すると判断し、逆に中間データよりも閾値の方が大きい場合には、その画素にはいずれのドットも形成しないと判断することとしてもよい。
大ドット、中ドット、小ドットの形成有無を画素毎に判断する処理の詳細な内容は、本実施例の要点とは直接的な関係は薄いので、ここでは、更に詳しい説明は省略するが、本実施例のハーフトーン処理では、以上のような処理を行って、画像を構成する全ての画素について、「大ドットを形成する」・「中ドットを形成する」・「小ドットを形成する」・「ドットを形成しない」のいずれかの状態を決定する。こうすることにより、色変換処理によって得られた各色毎の画像データは、画素毎に大中小いずれのドットを形成するのか、あるいはいずれのドットも形成しないのかを表したドットデータに、各色毎に変換される。図6のステップS104では、こうして各色毎に得られたドットデータを、コンピュータ100からプリンタ200の制御回路260に向けて出力する。
プリンタ200の制御回路260は、コンピュータ100から各色のドットデータを受け取ると、このデータをRAMに一旦記憶した後、オーバーラップ処理を行う(ステップS106)。オーバーラップ処理とは、次のような処理である。図3を用いて前述したように、プリンタ200は、キャリッジ240を主走査させながら印字ヘッド241を駆動し、印刷用紙上にドットを形成することによって画像を印刷する。そして、図4に示すように、印字ヘッド241には各色毎に複数個のノズルが設けられており、同時に複数個のドットを形成可能である。しかし、これらノズルは、互いにノズルピッチkの間隔を空けて設けられているので、ドットもノズルピッチkの間隔を空けて形成される。すなわち、印字ヘッド241がドットを形成する順番は、画像の端から順番に形成していくのではなく、ノズルピッチkの間隔を空けて飛び飛びの箇所にドットを形成していくことになる。結局、印字ヘッド241は、画像上に画素が並んでいる順番とは異なる順番で、印刷用紙上にドットを形成していくことになる。
また、印字ヘッド241がドットを形成する順番は、次のような理由からも、画像上での画素の順番とは一致していない。すなわち、本来、主走査方向に並んだ1本のドット列は1回の主走査で形成することが可能である。しかし画質上の要請から、後述するように、1本のドット列を複数回の主走査に分けて形成することとし、各回の主走査では主走査方向に飛び飛びの位置の画素にドットを形成することも行われている。このように、主走査方向に飛び飛びの画素にドットを形成した場合でも、ドットは、画像上で画素が並んでいる順序とは異なった順序で形成されることになる。オーバーラップ処理とは、画像を構成する画素毎にドット形成の有無を判断することによって生成されたドットデータを、印字ヘッド241で実際にドットが形成される順番に従って並べ替えた後、順次印字ヘッド241にドットデータを供給する処理である。印字ヘッド241は、こうして供給されるドットデータに従って、印刷用紙上にインク滴を吐出してドットを形成する。
オーバーラップ処理では、制御回路260内のRAM上にドットデータを記憶しておき、印字ヘッド241がドットを形成する画素のデータを順番に読み出して、RAM上の別の領域に書き込んでいく操作が行われる。従って、高画質な画像を得るために画像を高解像度化すると、画素数が増加してドットデータのデータ量も増加してしまうので、それに伴って、RAMの必要な記憶容量も増加してしまう。こうした弊害の発生を回避するために、本実施例の画像印刷処理では、後述するように特殊な方法でオーバーラップ処理を行う。本実施例のオーバーラップ処理によれば、RAMの必要な記憶容量をいたずらに増加させることなく、高解像度の画像を印刷することが可能となる。本実施例のオーバーラップ処理の詳細な内容については後述する。
印字ヘッド241は、キャリッジ240の主走査とともに印刷用紙上を移動しながら、こうして供給されるドットデータに従ってインク滴を吐出する。その結果、印刷用紙上の適切な位置にドットが形成されて、画像が印刷されることになる。
D.第1実施例:
以上に説明したように、プリンタ200側では画像の印刷に先立ってオーバーラップ処理が行われる。そして、オーバーラップ処理では、制御回路260のRAM上に記憶されているドットデータが、印字ヘッド241が実際にドットを形成する順番に従って並べ替えられる。このため通常は、高画質な印刷画像を得ようとして画像の表示を高解像度化すると、ドットデータを記憶するために必要なRAMの容量が増加してしまうという弊害を引き起こす。こうした弊害を起こすことなく高画質な画像を得るために、第1実施例では、以下に説明するような特殊なオーバーラップ処理を行っている。以下では、第1実施例のオーバーラップ処理の内容について詳細に説明するが、その準備として、先ず、通常行われる一般的なオーバーラップ処理について簡単に説明しておく。
D−1.一般的なオーバーラップ処理:
図10は、印字ヘッド241が、主走査と副走査とを行いながら印刷用紙上にドットを形成していく様子を概念的に示した説明図である。図4を用いて前述したように、本実施例の印字ヘッド241には、各色毎に多数(本実施例では各色あたり48個)のノズルが設けられているが、説明が煩雑となることを避けるため、図10ではノズルが4個だけ設けられているものとして説明する。図中に示したN1,N2,N3,N4はこれら4つのノズルを表している。また、ノズルピッチは3であり、1本のドット列を2回の主走査で形成し、1種類のドットのみを形成する場合について説明する。
図10の左半分には、副走査を行うことにより、印字ヘッドが印刷用紙に対して相対的に少しずつ移動していく様子を示している。図10の左半分に示した縦長の矩形は1色分の印字ヘッドを表している。図示されているように、各色のヘッドには4つのノズルが設けられている。また、ノズルピッチは「3」に設定されているので、これらノズルの間には、図中に破線で示されているように、ノズル2つ分に相当する距離(ノズル中心同士で見ればノズルの直径の3倍に相当する距離)が設けられている。
図10の右半分には、印字ヘッドを主走査させながらインク滴を吐出することにより、印刷用紙上にドットが形成されていく様子を表している。図10の右半分に示した丸印は印刷用紙上に形成されたドットを模式的に表したものである。尚、図3を用いて前述したように、実際の副走査は印刷用紙を紙送りすることによって行われており、印字ヘッド241が副走査方向に移動するわけではないが、図10では説明の便宜から印刷用紙を基準に取って、あたかも印字ヘッドが移動しているかのように表現している。
印刷に際しては、先ず、図中で(1)と表示した位置に印字ヘッドある状態で、インク滴を吐出しながら主走査を行う。この主走査によって印刷用紙上には、図10の右半分で「1」と表示されたドットが形成される。ここで、「1」と表示されたドットが、1画素おきに飛び飛びに形成されているのは、ここでは1本のドット列を2回の主走査に分けて形成するものとしているためである。仮に、1本のドット列を3回の主走査に分けて形成するものとした場合は2画素飛びに、4回の主走査に分けて形成するものとした場合は、3画素飛びにドットが形成されることになる。
次いで、印字ヘッドをノズル2つ分だけ副走査方向に移動させる。その結果、印字ヘッドは、図10の左半分で(2)と表示した位置に移動する。図10の左半分に示された実線の矢印は、印字ヘッドを副走査する動作を模式的に表したものである。こうして副走査を行った後、再び主走査を行って印刷用紙上にドットを形成する。この2回目の主走査によって印刷用紙上には、図10の右半分で「2」と表示されたドットが形成される。前述したように、印字ヘッドにはノズルが、ノズル3つ分の間隔を空けて設けられているが、副走査では印字ヘッドをノズル2つ分だけ移動させているので、2回目の主走査で形成されるドット列(図中で「2」と表示されたドット列)は、1回目の主走査で形成したドット列(図中で「1」と表示されたドット列)の間に形成されることになる。
続いて、再びノズル2つ分だけ副走査を行って印字ヘッドを(3)と表示された位置まで移動させた後、3回目の主走査を行いながらインク滴を吐出することで、「3」と表示されたドットを形成する。3回目の主走査で形成されるドット列(図中で「3」と表示されたドット列)は、1回目の主走査で形成したドット列(図中で「1」と表示されたドット列)と、2回目の主走査で形成したドット列(図中で「2」と表示されたドット列)との間に形成されることになる。すなわち、1回目の主走査では4本のドット列が形成されるが、これらドット列の間には、2本分のドット列が形成されだけの間隔が空いている。2回目の主走査では、これら2本分のドット列の一方にドットが形成され、3回目の主走査では、残りの1本分のドット列にドットが形成されることになる。このように、副走査を行って印字ヘッドを少しずつ移動させながらドットを形成する操作を繰り返していくと、3回目の主走査を行った段階で、ドット列の間に形成された隙間をドット列で埋めることができる。
続いて行う4回目の主走査では、1回目の主走査で形成したドット列に重ねてドットが形成される。但し、前述したように、1回目の主走査では1画素おきに飛び飛びの位置にドットが形成されているので、4回目の主走査では、これらドットの間にドットを形成するのである。図10の右半分には、「1」と表示されたドットの間に、4回目の主走査による「4」と表示されたドットが、形成されている様子が概念的に表されている。すなわち、1回目の主走査では、1本の画素列上の半分のドットを形成し、4回目の主走査で残りの半分のドットを形成することで、このドット列を結局2回の主走査に分けて形成したことになる。
こうして1本のドット列が完成したら、再び副走査を行って、図中で(5)と表示した位置に印字ヘッドを移動させた後、5回目の主走査を行って、図中で「5」と表示されたドットを形成する。5回目の主走査では、2回目の主走査で形成したドット列に重ねてドットが形成される。すなわち、図中で「2」と表示されたドットの間に「5」と表示されたドットを形成することで、また、新たなドット列を完成する。続いて、再び副走査を行って、図中で(6)と表示した位置に印字ヘッドを移動し、6回目の主走査を行って、「6」と表示されたドットを形成する。「6」と表示されたドットは、「3」と表示されたドットの間に形成され、新たなドット列が完成される。以降は、同様にして、7回目の主走査では、4回目の主走査で形成したドットの間にドットが形成され、8回目の主走査では、5回目の主走査で形成したドットの間にドットが形成される。
このように、印字ヘッドを所定量ずつ副走査させながら主走査を行ってドット列を形成する操作を繰り返していくと、やがて隙間無くドットが形成され、そしてそれ以降は、主走査を行ってドットを形成するたびに次々とドット列を完成させて、印刷用紙上に隙間無くドットを形成していくことが可能となる。図10に示した例では、5回目の主走査以降で隙間無くドットが形成されている。すなわち、5回目の主走査以降にドットを形成する領域が、画像の有効表示領域となる。
このようにプリンタは、画像の有効表示領域の端にある画素から順番にドットを形成して行くのではなく、あたかもモザイクを形成するかのように、所定の順番に従ってドットを形成しながら画像を印刷している。そこで、ドットデータを受け取ると、オーバーラップ処理、すなわち、受け取ったドットデータを印字ヘッドが実際にドットを形成する順番に並べ替えた後、順番に印字ヘッドに供給する処理を行うのである。
図11は、通常のプリンタで行われている一般的なオーバーラップ処理について示した説明図である。ここでも、図10に示した場合と同様に、印字ヘッドにはノズルピッチ3の間隔で4つのノズルが設けられており、1本のドット列を2回の主走査に分けて形成するものとする。
図11(a)は、画像の上端付近のドットデータが、制御回路260のRAM上に記憶されている様子を概念的に示した説明図である。図中に示した丸印は、画像を構成している画素を示しており、それぞれの画素について、「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」のいずれかの状態が設定されている。
一例として、5回目の主走査でドットを形成する場合について考える。図10を用いて前述したように、5回目の主走査では、図11(a)中で細かい斜線を付した画素について、ドットデータに従ってドットが形成される。言うまでもなく、ノズルN1では、1番上にあるドット列の中の、一画素おきに斜線を付した画素について、ドットデータに従ってドットが形成される。また、ノズルN2では、上から4本目のドット列の中の斜線を付した画素についてドットが形成され、ノズルN3では、上から7本目のドット列の斜線を付した画素に、そしてノズルN4では、上から10本目のドット列の斜線を付した画素について、それぞれドットデータに従ってドットが形成される。オーバーラップ処理では、先ず初めに、このようにRAM上で飛び飛びの位置に記憶されているドットデータを読み出して、一旦、連続した状態でRAMに書き込む操作を行う。
図11(b)は、図11(a)で斜線を付した画素に記憶されているドットデータを、RAM上の別の領域に、連続した状態で書き込んでいる様子を概念的に示した説明図である。図11(b)で「N1,1」と表示されているのは、図11(a)で、ノズルN1が1番目に形成する画素のドットデータが書き込まれることを表したものである。また、図11(b)で「N1,2」と表示されているのは、ノズルN1が2番目に形成する画素のドットデータが書き込まれることを表している。このように、1行目には、ノズルN1が形成する画素のドットデータが書き込まれる。同様にして、2行目にはノズルN2が形成する画素のドットデータが書き込まれ、3行目にはノズルN3が形成する画素のドットデータが、4行目にはノズルN4が形成する画素のドットデータが書き込まれる。
こうして各ノズルが形成するドットデータを連続した状態で書き込んだら、今度はこのデータの行と列とを入れ換える操作を行う。例えば、データ「N1,2」は図11(b)では1行2列目の位置に書き込まれているので、行と列とを入れ換えて2行1列目の位置に書き込んでやる。同様に、データ「N2,3」は図11(b)では2行3列目の位置に書き込まれているので、このデータは3行2列目の位置に書き込んでやる。このように、行と列とを入れ換えることにより、図11(b)に示したデータは、図11(c)に示したデータに変換される。
図11(c)に示されているように、行と列とを入れ換えたことにより、1行目には「N1,1」、「N2,1」、「N3,1」、「N4,1」の4つのデータが書き込まれている。これらのデータは、ノズルN1ないしN4がそれぞれ1番目に形成する画素についてのドットデータである。また、2行目には、「N1,2」、「N2,2」、「N3,2」、「N4,2」の4つのデータが書き込まれており、これらはノズルN1ないしN4がそれぞれ2番目に形成する画素についてのドットデータである。同様に、3行目には、各ノズルが3番目に形成する画素についてのドットデータが書き込まれ、4行目には4番目に形成する画素についてのドットデータが書き込まれている。このように、各ノズルがドットを形成する順番に、ドットデータが書き込まれたデータとなっている。従って、図11(c)に示すような、行と列とを入れ換えたデータの先頭から、ノズルの数に相当する分のデータを読み出して、印字ヘッドの主走査に合わせてそのまま供給してやれば、図11(a)に細かい斜線で示した画素のドットデータに従って、順次ドットを形成することができる。
以上のようにして、図10中で5回目の主走査で形成する画素についてのドットを形成したら、今度は6回目の主走査で形成する画素(すなわち、図11(a)中で粗い斜線を付して表示した画素)について、同様の操作を行えばよい。このように、通常のオーバーラップ処理では、図11(a)に示すようにRAM上に画素の順番で記憶されているドットデータの中から、印字ヘッドがドットを形成する画素についてのデータだけを読み出して、図11(b)に示すように連続した状態で記憶し、記憶されたデータの行と列とを入れ換えた後、得られたデータの先頭からノズル数に相当するデータを順次印字ヘッドに供給する操作を行っている。
このような通常行われるオーバーラップ処理では、画像の表示を高解像度化すると、RAMに記憶しておくべきドットデータのデータ量が増加してしまう。例えば、主走査方向にも副走査方向にも720dpiの解像度(以下では、このような解像度を720dpi×720dpiと表示することがあるものとする)の画像を、画質を向上させるために主走査方向の解像度を2倍にして、主走査方向1440dpi、副走査方向に720dpiの解像度(以下では、このような解像度を1440dpi×720dpiと表示することがあるものとする)で印刷しようとすると、RAMに一旦記憶しておくドットデータのデータ量も2倍に増加し、その分だけ必要な記憶容量も増加してしまう。更に、データ量が2倍に増える分だけ、ドットデータを生成するために要する時間も増加するため、画像を迅速に表示することも困難となる。こうした弊害を発生させることなく、画像の表示を高解像度化するために、第1実施例では、次のようなオーバーラップ処理を行いながら画像を印刷している。
D−2.第1実施例のオーバーラップ処理:
図12は、第1実施例のオーバーラップ処理の流れを示すフローチャートである。かかる処理は、プリンタ200の制御回路260が、コンピュータ100から出力されたドットデータを受け取って、制御回路260のCPUの機能を利用して実行する処理である。また、図13は、制御回路260が第1実施例のオーバーラップ処理を行う様子を概念的に示した説明図である。以下、図13を参照しながら、図12のフローチャートに従って説明する。
第1実施例のオーバーラップ処理を開始すると、先ず初めに制御回路260は、ドットデータを受け取って、制御回路260内のRAMに一旦記憶する(ステップS200)。後述するように、本実施例のプリンタ200は、高い画質の画像を得るために高解像度で画像を印刷するが、コンピュータ100から受け取るドットデータは、印刷時の解像度よりは低い解像度のデータを受け取っている。説明の便宜から、ここでは、ドットデータは主走査方向および副走査方向のいずれの720dpiの解像度(すなわち、720dpi×720dpiの解像度)で受け取り、印刷時には主走査方向には1440dpi、副走査方向には720dpiの解像度(すなわち、1440dpi×720dpiの解像度)で印刷するものとする。また、前述したように、本実施例のプリンタ200は、大ドット、中ドット、小ドットの3種類のドットを形成可能であることから、コンピュータ100から受け取るドットデータには、画素毎に「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」のいずれかの状態が設定されている。ここでは、「大ドットを形成する」画素にはドットデータ「3」が設定され、「中ドットを形成する」画素にはドットデータ「2」が設定され、「小ドットを形成する」画素にはドットデータ「1」が、そして「ドットを形成しない」画素にはドットデータ「0」が設定されているものとする。
図13(a)は、制御回路260内のRAM上に、このようなドットデータが記憶されている様子を概念的に表したものである。図13(a)中に示した丸印は、画像を構成している画素位置を表しており、それぞれの画素位置に「0」ないし「3」のいずれかのドットデータが設定されている。ドットデータは、画像上で画素が並んでいる順番でコンピュータ100から供給されてくるので、プリンタ200の制御回路260は、図13(a)に示すように、ドットデータを受け取った順番で、すなわち画素の並びの順番でRAM上に一旦記憶するのである。
こうしてドットデータをRAM上に一旦記憶すると、今度は、ノズル位置に相当する画素のドットデータを読み込む処理を行う(図12のステップS202)。すなわち、図10を用いて前述したように、印字ヘッドにはノズルNzがノズルピッチkの間隔を空けて設けられており、主走査と副走査とを繰り返し行いながら、あたかもモザイクを構成するかのようにして、所定の順序でドットを形成していくことにより画像を印刷している。ステップS202では、印字ヘッドが主走査を行ったときに、ノズルが通過する画素列についてのドットデータだけを読み込んで、RAM上の別の領域に画素列単位で書き込む処理を行う。
説明の便宜から、ここでは、図10および図11で説明した場合と同様に、印字ヘッドには、ノズルN1ないしノズルN4の4つのノズルが、ノズルピッチ3の間隔で設けられているものとして説明する。図13(a)に表示されたN1、N2、N3、N4は、それぞれ4つのノズルの位置を表しており、図12のステップS202では、これらノズルがある位置のドットデータのみを読み出して、RAM上の別領域に書き込むのである。尚、図13(a)では、図示が煩雑となることを避けるために、ノズル位置に相当する画素についてのみドットデータの値を表示してある。
図13(b)は、こうしてRAM上の別領域にドットデータが書き込まれている様子を概念的に表したものである。前述したように、コンピュータ100から供給されるドットデータは、主走査方向および副走査方向いずれの解像度も720dpiであり、図13(b)に示すデータは、ノズル位置に相当するドットデータのみを抜き出したものであるから、このデータも、解像度が720dpi×720dpiのドットデータとなっている。
次いで、図13(b)に示すような、ノズル位置のみ抜き出したドットデータを、高解像度のデータに変換する処理を行う(ステップS204)。変換する解像度は、必要に応じて種々の解像度に設定することができるが、ここでは理解を容易とするために、最も単純な場合、すなわち、主走査方向のみ解像度を2倍とする場合について説明する。上述したように、図13(b)に示すドットデータは解像度720dpi×720dpiのデータであるから、主走査方向の解像度を2倍としてやれば、1440dpi×720dpiの解像度、すなわち主走査方向には1440dpi、副走査方向には720dpiの解像度で印刷した画像が得られることになる。
ドットデータを高解像度のデータに変換するに際しては、画素毎に設定されているドットデータに応じて、予め設定しておいた高解像度のドットデータに画素毎に変換していく。すなわち、ここではドットデータは「0」ないし「3」の値を取り得るものとしているから、ドットデータが「0」の場合、「1」の場合、「2」の場合、「3」の場合のそれぞれについて、変換すべき高解像度のドットデータとを予め対応付けて設定しておき、この対応関係に従って、画素毎に高解像度のドットデータに変換していくのである。
図14は、こうした低解像度のドットデータと、高解像度のドットデータとの対応関係を例示した説明図である。ここでは、主走査方向の解像度を2倍に変換するものとしているから、それぞれの画素は主走査方向に並んだ2つの画素に分割されて、変換前の1画素のドットデータがこれら2画素分のドットデータに変換されることになる。図14(a)に示した対応関係Aについて説明すると、先ず、ドットデータ「0」は、2画素分のドットデータ「0」に対応付けられている。すなわち、「ドットを形成しない」画素は、いずれも「ドットを形成しない」2つの画素に分割されることになる。また、ドットデータ「1」は、ドットデータ「1」およびドットデータ「0」の2画素分のデータに対応付けられている。すなわち、「小ドットを形成する」画素は左右2つの画素に分割されて、左側の画素は「小ドットを形成」し、右側の画素は「ドットを形成しない」画素に変換されることになる。ドットデータ「2」についても同様に、ドットデータ「2」およびドットデータ「0」の2画素分のデータに対応付けられている。すなわち、「中ドットを形成する」画素は、同じく「中ドットを形成する」左側の画素と「ドットを形成しない」右側の画素とに変換される。ドットデータ「3」については、2画素分のドットデータ「3」に対応付けられている。すなわち、「大ドットを形成する」画素は、いずれも「大ドットを形成する」2つの画素に変換されることになる。
図13(c)は、図14(a)に示した上述の対応関係Aに従って、図13(b)に示した低解像度のドットデータを高解像度のドットデータに変換した様子を示している。もちろん、低解像度のドットデータと、高解像度のドットデータとの対応関係は、図14(a)に示した対応関係Aに限られるものではなく、例えば図14(b)に示した対応関係B、図14(c)に示した対応関係C、図14(d)に示した対応関係D、図14(e)に示した対応関係E、図14(f)に示した対応関係Fなど、種々の対応関係とすることができる。
図12のステップS204では、このような予め設定されている対応関係に従って、低解像度(ここでは720dpi×720dpiの解像度)のドットデータを、高解像度(ここでは1440dpi×720dpiの解像度)のドットデータに、画素毎に変換した後、制御回路260内のRAMに一旦記憶する処理を行う。
プリンタ200の制御回路260は、こうして低解像度のドットデータを高解像度のドットデータに変換したら、今度は、高解像度のドットデータから印字ヘッドが実際にドットを形成する画素(印字画素)のドットデータだけを抜き出して、抜き出したデータの行と列とを入れ換える操作を行う(ステップS206)。この処理について、図13を参照しながら詳しく説明する。図13(c)に示されているように、高解像度に変換されたドットデータは、主走査方向(行方向)には画素の順番で並んでいるが、前述したように印字ヘッドは飛び飛びの画素にドットを形成しながら画像を印刷しているので、ドットを形成する順番は、画素の並びの順番とは一致しない。例えば、これからドットを形成しようとする画素が、図13(c)中で斜線を付して示した画素であるとすると、これら画素についてのドットデータだけを抜き出してきて、行と列とを入れ換えた状態でRAMに書き込んでやる。一例として、図13(c)中で斜線を付して示した一番左端の1列分のドットデータであれば、行と列とを入れ換えて1行分のドットデータとして、RAMに書き込んでやる。また、図13(c)で斜線を付した左から2列目のドットデータは、行と列とを入れ換えて2行目のドットデータとしてRAMに書き込んでやる。
図13(d)は、図13(c)に示した高解像度のドットデータに上述した操作を加えて得られたデータを概念的に表したものである。図示されているように、こうした操作を行うと、1行目のデータには、ノズルN1ないしノズルN4の各ノズルが1番初めに形成する各画素についてのドットデータが設定されることになる。同様に、2行目のデータには、各ノズルが2番目に形成する各画素についてのドットデータが設定され、3行目のデータには、各ノズルが3番目に形成する各画素についてのドットデータが設定されることになる。
制御回路260は、高解像度に変換したドットデータを、図13(d)に示すようなデータに変換した後、キャリッジ240が主走査する動きに合わせて、1行目からデータを順次読み出して印字ヘッドに供給する(図12のステップS208)。その結果、印字ヘッドからインク滴が吐出されて、印刷用紙上の適切な位置にドットを形成することができる。
以上のような操作を繰り返し行い、全ての画素についてこうした操作を完了したら、図12に示した第1実施例のオーバーラップ処理を抜けて、図6に示す画像印刷処理に復帰した後、画像の印刷を終了する。
以上に説明した第1実施例のオーバーラップ処理によれば、低解像度のドットデータ(上述した例では、解像度720dpi×720dpiのデータ)を受け取って、高解像度のドットデータ(上述した例では解像度1440dpi×720dpiのデータ)に変換してドットを形成することにより、高画質の画像を印刷することができる。
ここで、図12および図13を用いて前述したように、第1実施例のオーバーラップ処理で高解像度に変換されるドットデータは、ノズル位置に相当する画素のドットデータのみである。すなわち、コンピュータ100から供給された図13(a)に示すドットデータの中で、ノズル位置に相当する図13(b)に示すドットデータだけを抜き出して、このデータだけを高解像度に変換している。換言すれば、大部分のドットデータは低解像度の状態でRAMに記憶しておくことができる。このため、高解像度のドットデータをコンピュータ100から受け取ってRAMに記憶する場合に比べて、必要な記憶容量を大幅に低減することが可能となる。
上述したオーバーラップ処理を行うことで、必要な記憶容量が大幅に低減される様子を補足して説明する。一般に、コンピュータから受け取ったドットデータの解像度よりも高解像度で印刷しようとする場合、RAM上に記憶されている低解像度のドットデータを高解像度のドットデータに変換する必要がある。前述した図12、図13に即して説明すれば、解像度720dpi×720dpiの低解像度のドットデータを、解像度1440dpi×720dpiの高解像度のドットデータに変換しなければならない。
図15は、低解像度のドットデータを高解像度のドットデータに変換して記憶するために必要な記憶容量を、概念的に示した説明図である。図15(a)は、コンピュータから供給された解像度720dpi×720dpiのドットデータがRAM上に記憶されている様子を概念的に示している。このデータを解像度1440dpi×720dpiに高解像度化した場合、ドットデータを記憶しておくために要する記憶容量は、図15(b)に示すように、高解像度化する前に要する容量の2倍に増加する。すなわち、通常は、コンピュータから受け取った低解像度のデータをより高い解像度で印刷しようとすると、高解像度のデータに変換して記憶するだけでも必要な記憶容量が大幅に増加してしまう。
図16は、本実施例のオーバーラップ処理において、低解像度のドットデータを高解像度のドットデータに変換するために要する記憶容量を概念的に示した説明図である。図16(a)は、解像度720dpi×720dpiのドットデータがRAM上に記憶されている様子を概念的に示している。本実施例のオーバーラップ処理では、前述したように、ノズル位置に相当するドットデータを高解像度のデータに変換する。図16(b)は、RAM上に記憶されているドットデータの中から、ノズル位置に相当するドットデータを抜き出した様子を概念的に示している。図中で斜線を付して示した部分が、ノズル位置に相当するドットデータである。図示されているように、RAM上に記憶されているドットデータの中で、ノズル位置に相当するドットデータの占める割合はごく僅かに過ぎない。本実施例のオーバーラップ処理では、このごく僅かなドットデータを高解像度のデータに変換する。図16(c)は、解像度1440dpi×720dpiで印刷するために、ドットデータを高解像度に変換してRAM上に記憶した様子を概念的に示している。図示されているように、ノズル位置に相当するドットデータ(図中で斜線を付した部分)を高解像度化したことに伴って必要な記憶容量は確かに増加するが、高解像度化するデータはドットデータ全体の中の一部に過ぎず、大部分は依然として低解像度まま記憶しておくことができる。このため、高い解像度で印刷する場合にも、必要な記憶容量の増加はさほど多くはない。特に、図15(b)と図16(c)とを比較すれば、本実施例のオーバーラップ処理を行うことで、必要な記憶容量が大幅に低減されていることが分かる。
尚、以上の説明では、ノズル位置に相当するドットデータのみを抜き出して高解像度化するものとして説明した。しかし、高解像度化するために抜き出すドットデータは、コンピュータ100から供給されたドットデータ全体の一部であれば良く、必ずしもノズル位置に相当するドットデータのみである必要はない。すなわち、図16(b)および図16(c)で斜線を付したドットデータには、ノズル位置に相当するドットデータに加えて、他のドットデータが含まれていても構わない。もちろん、ノズル位置ではないドットデータが多くなるほど、必要な記憶容量は増加するが、それでもコンピュータ100から供給されたドットデータ全体を高解像度化する場合に比べれば、依然として記憶容量を低減することが可能となる。
同時に、上述した第1実施例のオーバーラップ処理によれば、高画質な画像を印刷しようとする場合でも、コンピュータ100は高解像度のドットデータを生成する必要はなく、低解像度のドットデータを生成すれば足りる。そのため、ドットデータを迅速に生成し、しかも生成したドットデータをプリンタ200に迅速に供給することができるので、画像を迅速に印刷することが可能となる。
更に、第1実施例のオーバーラップ処理では、コンピュータ100から受け取った低解像度のドットデータは、図14に例示した対応関係に従って、高解像度のドットデータに変換される。例えば、解像度720dpi×720dpiの画素に形成される小ドットは、解像度1440dpi×720dpiの画素に形成される小ドットに変換される。解像度1440dpi×720dpiの小ドットは、解像度720dpi×720dpiの小ドットよりも画素が小さい分だけドットも小さく、それに伴って、ドットが目立ち難くなっている。中ドットについても同様に、解像度720dpi×720dpiの中ドットは、よりドットが目立ち難い解像度1440dpi×720dpiの中ドットに変換される。従って、小ドットや中ドットが形成されるような、明度の高い画像領域では、より目立ち難いドットによって画像が印刷されることになるので、画質を大きく改善することが可能となる。
また、解像度720dpi×720dpiの大ドットは、解像度1440dpi×720dpiの2つの大ドットに変換される。すなわち、解像度720dpi×720dpiの画素に大ドットが形成されている場合は、この画素を分割して得られる解像度1440dpi×720dpiの2つの画素のいずれにも、大ドットが形成されることになる。ドットが形成されない場合についても同様に、解像度720dpi×720dpiの画素にドットが形成されない場合には、この画素は、いずれもドットが形成されない解像度1440dpi×720dpiの2つの画素に変換される。このように、変換してやることにより、低解像度で全ての画素にドットが形成される画像領域は、高解像度に変換した後も全ての画素にドットが形成され、また、低解像度でドットが全く形成されていない画像領域は、高解像度に変換した後も、ドットが形成されることはない。その結果、印刷用紙上に適切にドットを形成することができ、高画質な画像を印刷することが可能となるのである。
ここで、上述したように第1実施例のオーバーラップ処理では、低解像度の小ドットおよび中ドットを、よりドットの小さい高解像度の小ドットおよび中ドットに変換している。プリンタ200において、このような変換を行う場合でも、コンピュータ100がドットデータを生成する際に、予めこうした変換を行うことを見越してドットデータを生成しておけば、適切な密度でドットを形成して高画質な画像を得ることが可能である。以下では、この点について若干補足して説明しておく。
前述したように、プリンタ200は大中小の3種類のドットを形成可能であり、コンピュータ100は、大中小の各ドットについての形成有無を画素毎に判断することによってドットデータを生成する。こうしたドットデータを生成する方法としては種々の方法を適用することができるが、ここでは、色変換処理によって得られた各色毎の画像データを、大ドット用の階調データ、中ドット用の階調データ、小ドット用の階調データに一旦変換し、これら階調データに基づいて各画素についてのドット形成の有無を判断することによって、ドットデータを生成するものとする。
図17は、色変換処理によって得られた各色の画像データを、大中小の各ドット用の階調データに変換する様子を概念的に示した説明図である。図17(a)は、通常のドットデータを生成する場合を示しており、図17(b)は、本実施例のオーバーラップ処理で解像度を変換することを考慮してドットデータを生成する場合を示している。先ず、図17(a)を参照しながら、通常のドットデータを生成する場合について説明する。
通常のドットデータを生成する場合は、図17(a)に示すように、色変換後の画像データが大きくなるに従って、小ドット用の階調データ、中ドット用の階調データ、大ドット用の階調データを、この順序で次第に大きくしていく。すなわち、色変換後の画像データが小さい領域では、画像データの階調値が大きくなるに従って、小ドット用の階調データを大きくしていく。小ドット用の階調データが階調値255に達したら、小ドット用の階調データを少しずつ減らして、代わりに中ドット用の階調データを少しずつ大きくしていく。すなわち、色変換後の画像データが次第に大きくなるに従って、小ドット用の階調データを中ドット用の階調データに少しずつ置き換えていく。中ドット用の階調データが階調値255に達したら、今度は中ドット用の階調データを大ドット用の階調データに少しずつ置き換えていく。このようにして、色変換後の画像データを、小ドット用の階調データ、中ドット用の階調データ、大ドット用の階調データに一旦変換し、これら階調データを用いて、前述したように各ドットについて画素毎にドット形成の有無を判断していけば、適切なドットデータを生成することができる。
ところが本実施例のオーバーラップ処理では、前述したように、低解像度の画素に小ドットあるいは中ドットが形成されていても、高解像度に変換すると、半分の画素にしかドットが形成されなくなってしまう。このことは、小ドット用の階調データおよび中ドット用の階調データについては、階調値が半分に減少していることに相当する。すなわち、色変換後の画像データを、図17(a)に実線で示したような小ドット用の階調データに変換しても、実際にドットを形成する段階では、あたかも破線で示したような階調データに変換した場合と同じような密度でしか小ドットが形成されないことになる。中ドットについても全く同様で、図17(a)に実線で示したような中ドット用の階調データに変換しても、実際にドットを形成する段階では、あたかも一点鎖線で示したような階調データに変換した場合と同じような密度でしか中ドットが形成されないことになる。
このように解像度を変換することで、小ドットおよび中ドット用の階調データは目減りしてしまうので、これを考慮して、小ドット用の階調データおよび中ドット用の階調データを多めに発生させておけばよい。すなわち、図17(b)に示すように、色変換後の画像データが増加するにつれて、解像度変換に伴う目減りを補うように、小ドット用の階調データをより急激に増加させる。そして、小ドット用の階調データが階調値255に達したら、小ドット用の階調データを中ドット用の階調データに置き換えてやる。ここでも、解像度変換に伴う目減りを補うように、小ドット用の階調データをより速やかに中ドット用の階調データに置き換えていく。このように、色変換後の画像データを各ドット用の階調データに変換する際に、解像度を変換することによる影響を予め考慮しておき、こうして得られた階調データに基づいてドットデータを生成してやる。こうして得られたドットデータをプリンタ200に供給してやれば、プリンタ200の制御回路260がドットデータを高解像度のデータに変換しても、各種ドットを適切に高画質な画像を印刷することが可能となる。
D−3.第1実施例の変形例:
上述した第1実施例のオーバーラップ処理では、低解像度のドットデータを高解像度のデータに変換するに際して、主走査方向の解像度を増加させるものとして説明した。しかし、解像度を増加させる方向は必ずしも主走査方向に限られるものではなく、副走査方向に増加させることも可能である。以下では、こうした第1実施例の変形例のオーバーラップ処理について簡単に説明する。
図18は、プリンタ200の制御回路260が、第1実施例の変形例のオーバーラップ処理を行う様子を概念的に示した説明図である。図18(a)は、コンピュータ100から受け取った低解像度(720dpi×720dpi)のドットデータが、RAM上に記憶されている様子を概念的に示した説明図である。変形例のオーバーラップ処理では、解像度720dpi×1440dpiの画像を印刷するために、RAM上に記憶されているドットデータの解像度を副走査方向に高解像度化する。そのために、先ず、ノズル位置を含んだドットデータを抜き出して、RAM上の別領域に書き込んでやる。図18(b)は、こうして抜き出されたデータが記憶されている様子を概念的に表している。
このデータは、解像度720dpi×720dpiのドットデータを抜き出したものであるから、やはり解像度は720dpi×720dpiとなっている。そこで、副走査方向の解像度を2倍に増加させて、解像度720dpi×1440dpiのドットデータに変換してやる。図18(c)は、こうして高解像度化されたドットデータがRAM上に記憶されている様子を概念的に示している。副走査方向の解像度を増加させるに際しては、低解像度のドットデータと高解像度のドットデータとの対応関係を予め設定しておき、かかる対応関係に従ってドットデータを変換することにより、低解像度のドットデータを高解像度のドットデータに変換する。図19には、このような対応関係が例示されている。
次いで、高解像度化されたドットデータの中から、ノズルN1ないしN4がドットを形成する印字画素のデータを抜き出して、行と列とを入れ換える処理を行った後、RAMに書き込んでやる。図18(c)では印字画素のデータに斜線を付して表示している。また、図18(d)は、高解像度化されたドットデータの中から印字画素のデータが選択されて、行と列とを入れ換えた状態でRAM上に書き込まれた様子を概念的に表した説明図である。こうして行と列とを入れ換えたドットデータを、キャリッジ240の主走査にあわせて印字ヘッドに供給してやれば、印刷用紙上に高解像度の画像を印刷することができる。
尚、図18(c)中で、印字画素ではない画素についてのドットデータは、後ほど必要になるまで記憶しておいても良いし、あるいは一旦データを破棄して、必要になったときに低解像度のドットデータから再度生成することとしても良い。印字画素ではないドットデータを記憶しておく場合は、RAMの必要な記憶容量がその分だけ増加するが、それでもすべてのドットデータを高解像度する場合に比べれば、依然として大幅に記憶容量を低減することが可能である。また、印字画素以外のドットデータを一旦破棄した場合は、低解像度のドットデータから高解像度のデータを再度生成しなければならないものの、RAMの記憶容量を大幅に低減することが可能となる。
E.第2実施例:
以上に説明した第1実施例のオーバーラップ処理では、低解像度のドットデータを高解像度のドットデータに変換する際に、図14に示すような予め設定しておいた対応関係を参照しながら変換した。前述したように、こうした対応関係は複数設定することができるから、これら複数の対応関係を切り換えて参照しながら、低解像度のドットデータを高解像度のドットデータに変換することとしても良い。以下では、こうした第2実施例のオーバーラップ処理について説明する。
図20は、第2実施例のオーバーラップ処理の流れを示したフローチャートである。第2実施例のオーバーラップ処理は、低解像度のドットデータを高解像度のドットデータに変換するに際して、複数の対応関係を切り換えて参照しながら変換している点で、前述した第1実施例のオーバーラップ処理とは大きく異なるが、その他はほぼ同様の操作を行う。以下では、第1実施例のオーバーラップ処理に対する相違点を中心として、第2実施例のオーバーラップ処理について説明する。
第2実施例のオーバーラップ処理においても、処理を開始すると先ず初めに、コンピュータ100から供給されたドットデータを受け取って、制御回路260内のRAMに一旦記憶する(ステップS300)。前述した第1実施例と同様に、コンピュータ100から供給されるドットデータは、低解像度のデータとなっている。また、ドットデータには、「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の状態をそれぞれ示す値「3」、「2」、「1」、「0」のいずれかが画素毎に設定されている。このようなドットデータは、図13(a)に示したように、画像上で画素が並んでいる順番で、制御回路260のRAM上に記憶される。
次いで、RAM上に記憶したドットデータの中から、ノズル位置に相当する画素のドットデータを読み込んで、RAM上の別の領域に画素列単位で書き込む処理を行う(ステップS302)。すなわち、図13(a)のような状態で記憶されているドットデータから、ノズルN1ないしN4の各ノズルに対応する画素列のデータを読み出して、これらドットデータだけを、図13(b)に示すように、RAM上の別の領域に書き込んでやるのである。
第2実施例のオーバーラップ処理では、こうしてノズル位置に相当する画素のドットデータだけを抜き出した後、これら画素の中から高解像度化する画素を1つ選択する(ステップS304)。そして、低解像度のドットデータと高解像度のドットデータとの対応関係を1つ選択する(ステップS306)。すなわち、第2実施例のオーバーラップ処理では、図14に例示したような、低解像度のドットデータと高解像度のドットデータとの対応関係が、予め複数組記憶されており、これら複数の対応関係の中から1つの対応関係を選択するのである。
対応関係を選択するに際しては、複数の中からランダムに1つの対応関係を選択しても良いが、ここでは、対応関係が設定されたマトリックスを参照することによって対応関係を選択するものとする。すなわち、図21に示すように、選択すべき対応関係が画素毎に設定されたマトリックスを予め記憶しておき、ドットデータの解像度を変換する際には、このマトリックスを参照して、変換しようとしている画素に設定されている対応関係を選択するのである。
このようなマトリックスに設定される対応関係の分布を最適に設定しておけば、より高画質の印刷画像を得ることができる。複数の対応関係を適切な分布で設定する方法については後述する。
こうして高解像度化しようとする画素と参照する対応関係とを選択したら(ステップS304,S306)、前述した第1実施例のオーバーラップ処理と同様に、選択した対応関係を参照しながら低解像度のドットデータを高解像度のドットデータに変換して、RAMに一旦記憶する(ステップS308)。
以上のようにして、1画素分のドットデータを高解像度のデータに変換したら、ノズル位置に相当する全画素のドットデータを高解像度のデータに変換したか否かを判断する(ステップS310)。そして、まだ解像度を変換していない画素が残っている場合は(ステップS310:no)、ステップS304に戻って新たな画素を選択して続く一連の処理を行う。こうした操作を繰り返し、ノズル位置に相当する全画素のドットデータを高解像度のデータに変換すると(ステップS310:yes)、RAM上には、図13(c)に示すような高解像度のドットデータが得られることになる。
こうして、低解像度のドットデータを高解像度のドットデータに変換したら、今度は、印字ヘッドが実際にドットを形成する画素、すなわち印字画素のドットデータを抜き出して、行と列とを入れ換えた後、RAMに書き込む操作を行う(ステップS312)。かかる操作は、図12に示した第1実施例のオーバーラップ処理のステップS206で行う操作と同様であるため、ここでは詳細な説明は省略する。
このような操作を行って最終的に得られたデータは、印字ヘッドが実際にドットを形成する順番でドットデータを並べ直したデータとなっている。すなわち、図13(d)に示したように、このデータの1行目には、ノズルN1ないしノズルN4の各ノズルが1番初めに形成する各画素についてのドットデータが記憶されている。また、2行目には、各ノズルが2番目に形成する各画素についてのドットデータが記憶され、3行目には、各ノズルが3番目に形成する各画素についてのドットデータが記憶されている。
そこで制御回路260は、このように並べ直されたドットデータを、キャリッジ240が主走査する動きに合わせて、1行目からデータを順次読み出して印字ヘッドに供給する(ステップS314)。その結果、印字ヘッドからインク滴が吐出されて、印刷用紙上の適切な位置にドットが形成されることになる。
以上のような操作を繰り返し行い、全ての画素についてこうした操作を完了したら、図20に示す第2実施例のオーバーラップ処理を抜けて、図6に示す画像印刷処理に復帰した後、画像の印刷を終了する。
第2実施例のオーバーラップ処理では、以上に説明したように、予め複数記憶されている対応関係を切り換えながら、ドットデータの解像度を変換している。こうすれば、ドットが一定のパターンで形成されることを回避することができるので、より高画質な印刷画像を得ることができる。
また、複数の対応関係を切り換えながらドットデータの解像度を変換する場合、対応関係の切り換えを最適化してやれば、ドットの分散性を改善することができ、その分だけ画質を向上させることが可能である。前述したように第2実施例のオーバーラップ処理では、図21に示すようなマトリックスに基づいて対応関係を切り換えているが、このマトリックスは、対応関係の最適な切り換えを実現するために、次のような方法で設定されている。
前述したように、図21のマトリックスには、画素毎に選択すべき対応関係が予め設定されているが、これら対応関係の分布はディザマトリックスに基づいて決定されている。図8に例示したように、ディザマトリクスには、画素毎に複数の閾値が設定されており、これら閾値の分布は、ドットの良好な分散性が得られるように最適化されている。そこで、ディザマトリックスに基づいて対応関係を設定することで、ドットの分散性を改善させるのである。図21に示したマトリックスは、図8に例示したディザマトリックスに基づいて設定されたものである。以下では、図8に例示したディザマトリックスを参照しながら、具体的に説明する。
図21に示したマトリックスでは、対応関係Aおよび対応関係Bの、2つの対応関係が設定されている。一方、図8に示したディザマトリックスには、階調値0から階調値255までの閾値が設定されている。そこで、階調値0と階調値255の中央値128を閾値として、ディザマトリックスを構成する複数の画素を、閾値よりも小さい画素と大きい画素とに分けて、一方の画素には対応関係Aを設定し、他方の画素には対応関係Bを設定する。図21に示したマトリックスは、閾値よりも小さい画素には対応関係Aを設定し、閾値より大きい画素には対応関係Bを設定することによって得られたものである。
図21のマトリックスには、2つの対応関係が設定されているが、3つの対応関係を設定する場合は、階調値0から階調値255の範囲をほぼ3分割するような2つの閾値85、170を想定し、これら閾値との大小関係に基づいて3つの対応関係を設定してやればよい。
このようにして得られたマトリックスに従って複数の対応関係を切り換えてやれば、ドットが周期的な一定のパターンで形成されることを確実に回避することができる。このため、ドットの分散性の良好な高画質な画像を得ることが可能となる。
また、このようにディザマトリックスに基づいて対応関係を切り換える場合は、低解像度側の画像データに対して、ドットが良好に分散するように最適化されたディザマトリックスを使用することが望ましい。すなわち、上述した第2実施例では、720dpi×720dpiの低解像度のドットデータを、1440dpi×720dpiの高解像度のデータに変換しているから、解像度720dpi×720dpiの画像データに対して最適化されたディザマトリックスに基づいて、対応関係を切り換えることが望ましい。これは、高解像度のドットデータは、複数画素分のデータが一定の対応関係で低解像度の1画素分のデータに対応付けられているので、低解像度の画素毎の対応関係を最適に切り換えるためには、低解像度の画像データに対して最適化されたディザマトリックスに基づいて切り換えることが効果的であることによる。
以上、各種の実施例について説明してきたが、本発明は上記すべての実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することができる。例えば、上述の機能を実現するソフトウェアプログラム(アプリケーションプログラム)を、通信回線を介してコンピュータシステムのメインメモリまたは外部記憶装置に供給し実行するものであってもよい。もちろん、CD−ROMやフレキシブルディスクに記憶されたソフトウェアプログラムを読み込んで実行するものであっても構わない。
また、以上の実施例では、印刷用紙上にドットを形成して画像を印刷するプリンタに本発明を適用した場合について説明したが、本発明の適用範囲はプリンタに限られるものではなく、例えば、液晶表示画面上で輝点を適切な密度で分散させることにより、階調が連続的に変化する画像を表現する液晶表示装置などにも、本発明を好適に適用することが可能である。