A.第1実施例:
A−1.印刷システムの構成:
次に、本発明の実施の形態を実施例に基づき説明する。図1は、実施例における印刷システム1000の構成を示すブロック図である。印刷システム1000は、パーソナルコンピュータ100と、プリンタ200とを含んでいる。
パーソナルコンピュータ100は、CPU110と、DRAMなどの揮発性記憶装置120と、ハードディスクドライブなどの不揮発性記憶装置130と、プリンタ200などの外部装置との通信のための通信インタフェース140と、マウスやキーボードなどの操作部150と、液晶ディスプレイなどの表示部160と、を備えている。揮発性記憶装置120には、後述する誤差バッファB10が、設けられている。
不揮発性記憶装置130には、文書作成や画像生成などの画像データを生成する機能を実現するアプリケーションプログラムP10と、プリンタドライバの機能を実現するためのドライバプログラムP20と、が格納されている。各プログラムP10、P20は、例えば、DVD−ROMに格納された状態で提供され得る。各プログラムP10、P20の機能は、CPU110が各プログラムを実行することによって、実現される。プリンタドライバの機能は、後述するハーフトーン処理(誤差拡散処理)を含む画像処理を実行して印刷データを生成し、該印刷データをプリンタ200に供給する機能を含む。なお、図1には、本実施例のハーフトーン処理の概要も示されている。詳細については、後述する。
プリンタ200は、インクのドットを用紙上に形成することによって印刷を行うインクジェットプリンタである。プリンタ200は、プリンタの全体を制御する制御部210と、印刷を行う印刷機構220と、パーソナルコンピュータ100やストレージ装置(例えば、USBメモリ、図示省略)などの外部装置との通信のための通信インタフェース230と、を備えている。通信インタフェース230は、パーソナルコンピュータ100から印刷データを受信可能である。制御部210は、図示しないCPUとメモリとを有する周知のコンピュータである。制御部210のメモリには、プリンタ200を制御するための種々のプログラムが格納されている(図示せず)。制御部210は、通信インタフェース230から受信した印刷データに従って印刷機構220を制御することによって、印刷を実行する。
図2は、印刷機構220の概略構成を示す図である。印刷機構220は、制御部210の制御に従って、シアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)の各インクを吐出してカラー印刷を行うことができ、ブラックのインクを吐出してモノクロ印刷を行うことができる。印刷機構220は、搬送機構221と、主走査機構222と、ヘッド駆動回路223と、印刷ヘッド224と、を備えている。搬送機構221は、図示しない搬送モータを備え、搬送モータの動力で用紙を搬送方向(副走査方向とも呼ぶ)に搬送する。主走査機構222は、図示しない主走査モータを備え、主走査モータの動力で印刷ヘッド224を主走査方向に往復動(主走査)させる。ヘッド駆動回路223は、主走査機構222が印刷ヘッド224の主走査を行っている最中に、印刷ヘッド224に駆動信号DSを供給して、印刷ヘッド224を駆動する。印刷ヘッド224は、駆動信号DSに従って、搬送機構221によって搬送される用紙上にインクを吐出してドットを形成する。
図3は、印刷ヘッド224の概略構成を示す図である。図3(A)に示すように、印刷ヘッド224の底面224b(図3の+Z方向の面)、すなわち、印刷時に用紙と対向する面には、複数のノズルからなる複数のノズル列、すなわち、上述したC、M、Y、Kの各インクを吐出するノズル列NC、NM、NY、NKが形成されている。各ノズル列は、副走査方向(図3の−Y方向)の位置が互いに異なる複数個のノズルNzを含んでいる。なお、図3の+X方向および−X方向は、主走査方向を示している。
図3(B)には、印刷ヘッド224内のインクの吐出機構を示す概略断面図である。図3(B)では、図の煩雑を避けるために、1個のノズルNzに関連する構成の概略が図示されている。印刷ヘッド224は、インクごとに設けられたインク室RM1と、ノズルNzごとに設けられた圧力室RM2と、第1流路CH1と、第2流路CH2と、を有している。インク室RM1には、図示しないインクカートリッジからインクが供給されて、インクが貯留される。圧力室RM2は、第1流路CH1を介して圧力室RM2と連通している。インク室RM1に貯留されたインクは第1流路CH1を通って圧力室RM2に流入する。第2流路CH2の上流端は、圧力室RM2と連通しており、第2流路CH2の下流端は、ノズルNzとして、印刷ヘッド224の底面224bに開口している。
圧力室RM2の天井面は、振動板32で構成されている。振動板32の上面には、圧電素子31が配置されている。この圧電素子31は、ヘッド駆動回路223(図2)から供給される駆動信号DS信号に応じて振動する。圧電素子31の振動に応じて、振動板32が振動し、振動板32の振動に応じて、圧力室RM2の容積が変動する。
圧力室RM2の容積の変動に応じて、インクがノズルNzから吐出される。具体的には、圧力室RM2の容積の増大に応じて、インク室RM1から第1流路CH1を通って圧力室RM2にインクが流入する。そして、圧力室RM2の容積の減少に応じて、圧力室RM2内のインクが第2流路CH2を通ってノズルNzから吐出される。
以上の説明から解るように、ヘッド駆動回路223は、適切な波形を有する駆動信号DSを、適切なタイミングで、インクを吐出させるべきノズルNzに対応する圧電素子31に供給することによって、用紙上の適切な位置に適切なサイズのドットを形成することができる。
図4は、第1実施例の駆動信号DSの一例を示す図である。駆動信号DSは、形成すべきドットごとに、1個の単位信号を含んでいる。すなわち、N個のドットを形成するための駆動信号DSは、N個の単位信号を含んでいる(Nは自然数)。本実施例では、2種類の単位信号、すなわち、第1単位信号DP1と、第2単位信号DP2と、が用いられる(図4)。例えば、図4に示す駆動信号DS1は、1個の第1単位信号DP1を含んでいる。駆動信号DS2は、1個の第1単位信号DP1と、1個の第2単位信号DP2と、を含んでいる。これらの単位信号DP1、DP2は、特定期間IT内に出力される。この特定期間ITは、用紙上の所望の位置にドットを形成できるように、印刷時に印刷ヘッド224が主走査方向に移動する速度、すなわち、主走査速度に基づいて決定されている。
第1単位信号DP1は、3個の第1パルスP1と、3個の第1パルスP1に続いて出力される1個の第2パルスP2と、を含んでいる。第1パルスP1は、期間t1だけその出力電位が電位EVに維持される略矩形のパルスである。第2パルスP2は、期間t1より短い期間t2だけその出力電位が電位EVに維持される略矩形のパルスである。第1パルスP1は、圧力室RM2の容積を変動させて、インクを吐出させるためのパルスである。第2パルスP2は、圧力室RM2の容積の変動を抑制して、インクの吐出量を安定させるためのパルスである。
第2単位信号DP2は、2個の第1パルスP1と、2個の第1パルスP1に続いて出力される1個の第3パルスP3と、を含んでいる。第3パルスP3は、期間t1より長い期間t3だけその出力電位が電位EVに維持される略矩形のパルスである。2種類の単位信号DP1、DP2の使い分けについては、後述する。
A−2.印刷システム1000の動作
本実施例の印刷システム1000では、パーソナルコンピュータ100とプリンタ200とが協働して、印刷を実現する。すなわち、パーソナルコンピュータ100が印刷データを生成するための画像処理を実行し、プリンタ200が、画像処理によって生成された印刷データを用いて印刷処理を実行する。
A−2−1.画像処理の概要:
図5は、パーソナルコンピュータ100によって実行される画像処理のフローチャートである。パーソナルコンピュータ100のCPU110(図1)は、利用者からの印刷指示を受け付けた場合に、この画像処理を実行する。この画像処理は、プリンタドライバの機能として実現される処理である。すなわち、この画像処理は、CPU110が、ドライバプログラムP20(図1)を実行することによって実現される。
最初のステップS10では、CPU110は、印刷対象の画像データを取得し、取得された画像データを、ビットマップデータに変換する(ラスタライズ処理)。印刷対象の画像データは、例えば、利用者によって指定された画像データであり、例えば、アプリケーションプログラムP10によって実現される機能によって作成された画像データである。ビットマップデータは、例えば、RGBの3つの成分の階調値(例えば、256階調)で画素ごとの色を表すRGB画像データである。
ステップS20では、CPU110は、RGB画像データを、シアンとマゼンタとイエロとブラックとの4つの色成分の階調値(例えば、0〜255の256階調)で画素の色を表すCMYK画像データに変換する(色変換処理)。色変換処理は、RGB画像データとCMYK画像データとを対応付けるルックアップテーブルを用いて行われる。
ステップS30では、CPU110は、CMYK画像データを、ドットの形成状態を画素ごと、かつ、インクの色ごとに表すドットデータに変換する(ハーフトーン処理)。ドットデータに含まれる複数個の画素値は、それぞれ、ドットの形成を示す値と、ドットの非形成を示す値のいずれかの値である。すなわち、本実施例のドットデータは二値データであり、ドットデータによって示されるドットの種類は、1つである。ドットデータの画素値を、ドット値とも呼ぶ。ハーフトーン処理の詳細については、後述する。
ステップS40では、CPU110は、ドットデータを用いて印刷データを生成する。例えば、CPU110は、ドットデータに含まれる複数個のドット値を、プリンタ200の印刷機構220が印刷を実行する際に用いられる順番に並べる処理と、ドットデータにプリンタ制御コードやデータ識別コードを付加する処理を、実行する。この結果、プリンタ200によって解釈可能な印刷データが生成される。
最後のステップS50では、CPU110は、生成された印刷データを、通信インタフェース140を介して、プリンタ200に供給する。
A−2−2.印刷処理の概要:
図6は、印刷処理の説明図である。図6には、プリンタ200によって印刷された印刷画像PIが図示されている。プリンタ200の印刷部210は、上記画像処理によって生成された印刷データを、通信インタフェース230を介して受信すると、印刷データを用いて印刷機構220(図2)を制御して印刷を実行する。具体的には、プリンタ200の制御部210は、単位印刷と単位副走査とを交互に繰り替し実行して、印刷画像PIの印刷を行う。
単位印刷は、用紙が停止した状態で、1回の主走査を行いつつ、印刷ヘッド224に形成された複数個のノズルNzからインクを吐出することによって行われる印刷である。1回の単位印刷に対応する1回の主走査をパスとも呼ぶ。制御部210は、単位印刷として、往路方向の主走査(往路パスとも呼ぶ)を行いつつ印刷を行う往路印刷と、復路方向の主走査(復路パスとも呼ぶ)を行いつつ印刷を行う復路印刷とを実行することができる。すなわち、主走査方向には、互いに反対の方向である往路方向と復路方向との2つの方向があり、図6の+X方向は往路方向であり、図6の−X方向は復路方向である。本実施例の印刷では、往路パスと復路パスとが交互に実行される。
単位副走査は、所定の送り量だけ副走査、すなわち、用紙の搬送を実行することである。図6の−Y方向は、副走査方向(用紙の搬送方向)である。本実施例の印刷で用いられる所定の送り量は、1個のノズル列(例えば、ブラックのインク用のノズル列NK(図3(A))に含まれる複数個のノズルNzのうちの最上流のノズルと最下流のノズルとの間の距離と、ほぼ等しい。
図6には、印刷画像PIに含まれる複数個の部分画像IA1〜IA4が図示されている。各部分画像IA1〜IA4は、1回の単位印刷によって印刷される。図6に示すように、2つの部分画像IA1、IA3は、往路パス中に印刷され、2つの部分画像IA2、IA4は、復路パス中に印刷される。
ここで、単位印刷のパスの方向(往路方向または復路方向)を、印刷方向とも呼ぶ(図6)。単位印刷では、1個のノズルNzによって形成される複数個のドット、すなわち、主走査方向に並ぶ複数個のドットは、パスの方向の上流側から下流側に向かって順次に形成される。したがって、印刷方向は、印刷画像内の主走査方向に並ぶ複数個のドットが形成される順序を示している。このため、印刷方向を形成方向とも呼ぶ。
図7は、印刷画像PI内のドットの形成状態の一例を示す図である。図7(A)、図7(B)には、印刷画像PIの印刷に用いられる印刷データ内の縦8画素×横8画素分の領域に対応する部分画像SI1、SI2が図示されている。図7(A)、図7(B)には、には、部分画像SI1、SI2を構成する複数個のドットが示されているとともに、対応する印刷データ内の64個の画素PXが示されている。印刷データ内の64個の画素PXに対応する用紙上の64個の位置にドットが形成され得る。換言すれば、印刷データに従って形成されるべき各ドットは、印刷データ内の複数個の画素に対応する、用紙上のドットが形成され得る複数個の位置(ドット形成位置とも呼ぶ)のいずれかに形成される。ここで、特定のドットのドット形成位置に隣接する別のドット形成位置に形成されるドットを、特定のドットの隣接ドットとも呼ぶ。また、印刷データ内の複数個の画素のうち、主走査方向に沿って並ぶ複数個の画素をラスタとも呼ぶ。図7(A)では、部分画像SI1の1個のラスタRTが示されている。ラスタは、印刷時の主走査方向に平行な1行分の画素群と言うことができる。
上述したように、ドットデータでは、ドットの形成を示すドット値は、「ON」の1種類だけである。しかし、印刷画像PI内の複数個のドットは、周囲に位置する他のドットとの位置関係に基づいて、孤立ドットD1と、非終端ドットD2と、終端ドットD3と、の3種類に分類することができる。
図7(A)の部分画像SI1は、6個の孤立ドットD1を含んでいる。孤立ドットD1は、主走査方向に隣接する隣接ドットがないドットである。換言すれば、孤立ドットD1は、主走査方向に隣接する2個のドット形成位置、すなわち、−X側に隣接するドット形成位置と+X側に隣接するドット形成位置に、他のドットが形成されないドットである。
図7(B)の部分画像SI2は、8個の非終端ドットD2と、6個の終端ドットD3と、を含んでいる。非終端ドットD2は、主走査方向に連続する複数個のドット形成位置に形成される複数個のドットからなるドット群(以下、連続ドット群とも呼ぶ)内の特定の位置にあるドットである。具体的には、非終端ドットD2は、連続ドット群内の印刷方向の下流側の端以外の位置にあるドットである。換言すれば、非終端ドットD2は、連続ドット群に含まれるM個(Mは2以上の自然数)のドットのうち、印刷方向の上流側から数えて、1番目から(M−1)番目までのドットである。
終端ドットD3は、連続ドット群内の、非終端ドットD2の位置とは異なる位置にあるドットである。具体的には、終端ドットD3は、連続ドット群内の、印刷方向の下流側の端に位置するドットである。換言すれば、終端ドットD3は、連続ドット群に含まれる複数個のドットのうち最後に形成されるドットである。
M個のドットを含む連続ドット群は、1個の終端ドットD3と、(M−1)個の非終端ドットD2と、を含む。例えば、図7(B)の連続ドット群DG1は、終端ドットD3と非終端ドットD2とを1個ずつ含み、連続ドット群DG2は、1個の終端ドットD3と2個の非終端ドットD2とを含んでいる。
孤立ドットD1と、終端ドットD3とは、図6を参照して説明した第1単位信号DP1を用いて形成される。一方、非終端ドットD2は、第2単位信号DP2を用いて形成される。すなわち、第1実施例の印刷画像PIは、形成に用いられる駆動信号の観点から見れば、2種類のドットを含むと言える。ヘッド駆動回路223(図2)は、印刷データに従って駆動信号DSを出力する際に、形成すべきドットごとに、第1単位信号DP1と第2単位信号DP2とのいずれか一方を出力する。具体的には、ヘッド駆動回路223は、印刷データを参照して、対象のドットの印刷方向の下流側に隣接ドットを形成するか否かを判断する。そして、ヘッド駆動回路223は、隣接ドットを形成する場合には、対象のドットを形成するための単位信号として、第2単位信号DP2を出力する。ヘッド駆動回路223は、対象のドットの印刷方向の下流側に隣接ドットを形成しない場合には、対象のドットを形成するための単位信号として、第1単位信号DP1を出力する。
単位信号の出力の終了から次の単位信号の出力の開始までの信号間隔が過度に短くなると、圧力室RM2(図3(B))の振動や、圧力室RM2(図3(B))の振動に伴うインクのメニスカスの振動が不安定になる可能性がある。この場合には、インクの吐出が不安定になる可能性がある。第1単位信号DP1は、インクの吐出量を安定させるための第2パルスP2を含むので、第1単位信号DP1の出力期間Ot1は、第2単位信号DP2の出力期間Ot2より長い(図4)。したがって、第1単位信号DP1が出力される特定期間ITの次の特定期間ITにて単位信号が出力される場合の信号間隔St1は、第2単位信号DP2が出力される特定期間ITの次の特定期間ITにて単位信号が出力される場合の信号間隔St2より短くなる(図4)。
このために、仮に第1単位信号DP1が出力される特定期間ITの次の特定期間ITにて単位信号が出力されると、信号間隔が過度に短くなる場合がある。特に、1個のドットの形成のために許容される特定期間ITが比較的短い場合、すなわち、主走査の速度が比較的高い場合には、信号間隔St1が短く成りやすい。したがって、非終端ドットD2の形成に、第1単位信号DP1を用いる場合には、第2単位信号DP2を用いる場合より、該非終端ドットD2の次に形成されるドットを形成する際にインクの吐出が不安定になる可能性がある。そこで、本実施例では、孤立ドットD1と終端ドットD3の形成にのみ第1単位信号DP1を用い、非終端ドットD2の形成には第2単位信号DP2を用いている。
第1単位信号DP1を用いて形成される孤立ドットD1および終端ドットD3によって表現される第1の濃度と、第2単位信号DP2を用いて形成される非終端ドットD2によって表現される第2の濃度は、互いに異なっている。本実施例では、第1の濃度より第2の濃度が大きくなる。
第1の濃度を表す濃度値DV1は、以下のように算出することができる。部分画像SI1のように、孤立ドットD1のみを用いて用紙に印刷された第1画像の濃度を測定することによって、第1測定値MV1が取得される。第1測定値MV1を、第1画像の単位面積あたりに含まれる孤立ドットD1の数C1で除すことによって、第1の濃度を示す濃度値DV1が取得される(DV1=(MV1/C1))。
第2の濃度を示す濃度値DV2は、以下のように算出することができる。部分画像SI2のように、2個以上の連続ドット群のみを用いて用紙に印刷された第2画像、すなわち、非終端ドットD2および終端ドットD3のみを含む第2画像の濃度を測定することよって、第2測定値MV2が取得される。第2測定値MV2から、第2画像の単位面積あたりに含まれる終端ドットD3の数C3に第1の濃度を示す濃度値DV1を乗じた値(C3×DV1)を減ずることによって、第2画像の濃度のうち、非終端ドットD2によって表現される濃度MV22が得られる(MV22=MV2−(C3×DV1))。(C3×DV1)は、第2画像の濃度のうち、終端ドットD3によって表現される濃度MV23を示す値である。得られた濃度MV22を、第2画像の単位面積あたりに含まれる非終端ドットD2の数C2で除すことによって、第2の濃度を示す濃度値DV2が取得される(DV2=(MV22/C2))。
第1の濃度を示す濃度値DV1と第2の濃度を示す濃度値DV2とを、第2の濃度を示す濃度値が「255」となるような相対値に変換することによって、第1の濃度を示す相対濃度値A(以下、単に第1値Aとも呼ぶ)と、第2の濃度値を示す相対濃度値B(以下、単に第2値Bとも呼ぶ)と、が取得される。本実施例では、第1値Aは「253」であり、第2値Bは「255」である。この2つの値A、Bは、相対濃度値テーブルに格納されてドライバプログラムP20に組み込まれており、図5のステップS30のハーフトーン処理にて用いられる(詳細は後述する)。
以上、本実施例の印刷システム1000の動作の概要を説明した。本実施例のパーソナルコンピュータ100は、画像処理装置の例であり、プリンタ200は、印刷実行部の例である。また、本実施例の印刷データは、処理済み画像データの例である。
A−3.ハーフトーン処理:
図8は、ハーフトーン処理(図5のステップS30)のフローチャートである。また、図1には、ハーフトーン処理の概略が示されている。ハーフトーン処理の処理対象となる対象画像データ、すなわち、本実施例ではステップS30で生成されるCMYK画像データによって表される対象画像(図示省略)は、印刷データによって表される印刷画像PI(図6)と同じサイズ(縦方向と横方向の画素数)を有している。ここで印刷画像PI内のラスタ、すなわち、主走査方向に沿って並ぶ1行分の複数個の画素に対応する対象画像内の1行分の複数個の画素を、対象画像のラスタと呼ぶ。図8のハーフトーン処理は、CMYKの各成分ごとに実行される。すなわち、CMYK画像データに含まれる4個の成分画像データごとに、図8のハーフトーン処理が実行される。成分画像データは、CMYKの4種類の階調値(C値、M値、Y値、K値)のうちの1種類の値で構成された画像データである。以下では、1個の成分画像データ、例えば、画素ごとのK値で構成された成分画像データに対するハーフトーン処理について説明する。
ステップS100では、CPU110は、対象画像を構成する複数個のラスタの中から、1個の注目ラスタを選択する。具体的には、対象画像のラスタと垂直な方向の一端から1個ずつのラスタが順次に選択される。
ステップS105では、CPU110は、注目ラスタの印刷方向を取得する。ここで、注目ラスタの印刷方向は、印刷データ内の対応するラスタの印刷方向である。換言すれば、対象画像のラスタの印刷方向は、対象画像データを用いて得られる印刷データを用いて印刷を行う場合に、対象画像内のラスタに対応して形成されるべき複数個のドットが形成される順序を示している、と言うことができる。ステップS110では、CPU110は、注目ラスタの処理方向を、注目ラスタの印刷方向の反対方向に決定する(図6参照)。
ステップS115では、CPU110は、注目ラスタに属する複数個の画素の中から1個の注目画素を選択する。具体的には、処理方向の上流側から下流側に向かって、1個ずつの画素が順次に選択される。したがって、対象画像のラスタの処理方向は、当該ラスタに属する複数個の画素がハーフトーン処理で処理される順序を示している、と言うことができる。
ステップS120では、CPU110は、マトリクスMTX(図1)と、現在の注目画素より前に注目画素とされた処理済み画素について算出され誤差バッファB10(図1)に格納された誤差値E1(後述)とを用いて、注目画素に加算すべき誤差値Etを取得する。マトリクスMTXは、注目画素の周辺の所定の相対位置に配置された画素に、ゼロより大きい重みを割り当てている。図1のマトリクスMTXでは、記号「+」が注目画素を表し、周辺の画素に重みa〜mが割り当てられている。重みa〜mの合計は1である。
CPU110は、この重みに従って、周辺の複数個の処理済み画素の複数個の誤差値E1の重み付き和を、誤差値Etとして算出する。
ステップS125では、CPU110は、誤差値Etと、注目画素の階調値(入力階調値Vinとも呼ぶ)との和を、補正済階調値V1として算出する。
ステップS130では、CPU110は、補正済階調値V1と閾値Vthとを比較する。閾値Vthは、例えば、入力階調値Vinが0〜255の256階調の値を取る場合に、128に設定されている。補正済階調値V1が閾値Vth未満である場合には(ステップS130:NO)、CPU110は、注目画素のドット値を、ドットの非形成を示す値(以下、「OFF」とも呼ぶ)に決定する(ステップS135)。この場合には、CPU110は、相対濃度値Vbを「0」に設定する(ステップS140)。
補正済階調値V1が閾値Vth以上である場合には(ステップS130:YES)、CPU110は、注目画素のドット値を、ドットの形成を示す値(以下、「ON」とも呼ぶ)に決定する(ステップS145)。この場合には、CPU110は、直前に処理された隣接画素のドット値がドットの形成を示すか否か、すなわち、該ドット値が「ON」であるか否かを判断する(ステップS150)。ここで、直前に処理された隣接画素は、注目画素に対して処理方向の上流側に隣接する画素である。直前に処理された隣接画素がない場合、すなわち、注目画素が、注目ラスタに属する複数個の画素のうち、最初に処理される画素である場合には、直前の注目画素のドット値はドットの非形成を示すと判断される。
直前に処理された隣接画素のドット値がドットの形成を示す場合には(ステップS150:YES)、CPU110は、相対濃度値Vbを第2値Bに設定する(ステップS155)。直前に処理された隣接画素のドット値がドットの非形成を示す場合には(ステップS150:NO)、CPU110は、相対濃度値Vbを第1値Aに設定する(ステップS160)。
相対濃度値Vbが、第1値A、第2値B、0、のうちのいずれかに設定されると、ステップS165では、CPU110は、補正済階調値V1から相対濃度値Vbを減じた値を、注目画素の誤差値E1として算出する(E1=V1−Vb)。ステップS170では、CPU110は、誤差バッファB10内の、注目画素に対応するアドレスに、算出された注目画素の誤差値E1を格納する。
ステップS175では、CPU110は、注目ラスタの処理が終了したか否か、すなわち、注目ラスタに属する全ての画素を注目画素として処理したか否かを判断する。注目ラスタの処理が終了していない場合には(ステップS175:NO)、CPU110は、ステップS115に戻って、未処理の画素を新たな注目画素として選択して、上述したステップS120〜S170までの処理を繰り返す。
注目ラスタの処理が終了した場合には(ステップS175:YES)、CPU110は、対象画像内の全てのラスタの処理が終了したか否かを判断する(ステップS180)。全てのラスタの処理が終了していない場合には(ステップS180:NO)、CPU110は、ステップS100に戻って、未処理のラスタを注目ラスタとして選択して、上述したステップS105〜S175までの処理を繰り返す。全てのラスタの処理が終了した場合には(ステップS180:YES)、CPU110は、ハーフトーン処理を終了する。
以上説明した第1実施例の画像処理によれば、以下に説明するように、生成される印刷データを用いて印刷される印刷画像において、互いに異なる単位信号を用いて形成される2種類のドットを含む印刷画像の濃度を適切に表現することができる。
図9は、第1実施例の印刷画像の例を示す図である。図9(A)、図9(C)には、図6の部分画像IA1、IA2の一部分がそれぞれ概念的に示されている。図9(B)、図9(D)には、図9(A)および図9(C)に示す部分画像IA1、IA2内のドットに対応する相対濃度値Vbがそれぞれ示されている。ドットに対応する相対濃度値Vbは、図8のハーフトーン処理で、当該ドットに対応する画素を注目画素として処理するときに、注目画素の誤差値Etの算出(ステップS165)に用いられる相対濃度値Vbを意味する。
図9(A)〜(D)から解るように、孤立ドットD1および終端ドットD3、すなわち、第1単位信号DP1を用いて形成されるドットに対応する相対濃度値Vbは、第1値Aである。そして、非終端ドットD2、すなわち、第2単位信号DP2を用いて形成されるドットに対応する相対濃度値Vbは、第2値Bである。この結果、孤立ドットD1および終端ドットD3と、非終端ドットD2との間で、表現される濃度が互いに異なる場合であっても、印刷画像の濃度を適正に表現することができる。
さらに、ハーフトーン処理では、CPU110は、注目画素の直前に処理された隣接画素のドット値がドットの形成を示すか、ドットの非形成を示すかに基づいて、相対濃度値Vbとして第1値Aを用いるか第2値Bを用いるかを判断している(図8のステップS150〜S160)。具体的には、注目画素の直前に処理された隣接画素のドット値がドットの非形成を示す場合には、注目画素は、孤立ドットD1または終端ドットD3のいずれか一方であると判断され、相対濃度値Vbとして第1値Aが用いられる。注目画素の直前に処理された隣接画素のドット値がドットの形成を示す場合には、注目画素は、非終端ドットD2であると判断され、相対濃度値Vbとして第2値Bが用いられる。この結果、注目画素に対応して形成されるべきドットの種類を迅速に判断して、適切な相対濃度値Vbを決定しつつ、ハーフトーン処理を高速化することができる。
さらに、注目ラスタの処理方向を、注目ラスタの印刷方向の反対方向に決定している(ステップS110)。この結果、注目画素に対応して形成されるべきドットが終端ドットD3である場合に、形成されるべきドットの種類を適切に判断することができる。具体的には、図9(A)に示す部分画像IA1は、印刷方向が+X方向であるので、終端ドットD3は、連続ドット群の+X方向の端に位置する。したがって、部分画像IA1内に形成されるべきドットが、終端ドットD3または孤立ドットD1のいずれかであるか、非終端ドットD2であるかは、+X側に隣接する画素にドットが形成されるか否かに基づいて決まることが解る。本実施例では、部分画像IA1に対応する対象画像のラスタの処理方向は、部分画像IA1の印刷方向(+X方向)の反対方向である−X方向に決定される(図6、図9(A))。この結果、現在の注目画素の+X側に隣接する画素が、現在の注目画素より先に、注目画素として選択されてステップS120〜S170の処理が実行されることによって、+X側に隣接する画素のドットの形成状態が現在の注目画素より先に決定される。一方、図9(C)に示す部分画像IA2は、印刷方向が−X方向であるので、終端ドットD3は、連続ドット群の−X方向の下流側の端に位置する。したがって、部分画像IA2内に形成されるべきドットが、終端ドットD3または孤立ドットD1のいずれかであるか、非終端ドットD2であるかは、−X側に隣接する画素にドットが形成されるか否かに基づいて決まることが解る。本実施例では、部分画像IA2に対応する対象画像のラスタの処理方向は、部分画像IA2の印刷方向(−X方向)の反対方向である+X方向に決定される(図6、図9(C))。この結果、現在の注目画素の−X側に隣接する画素が、現在の注目画素より先に、注目画素として選択されてステップS120〜S170の処理が実行されることによって、−X側に隣接する画素のドットの形成状態が現在の注目画素より先に決定される。したがって、直前に処理された隣接画素について決定されたドット値を参照することによって、注目画素に対応して形成すべきドットの種類を適切に判断することができる。
また、仮に注目ラスタの処理方向が注目ラスタの印刷方向の反対方向であると、注目画素の次に処理対象とされる画素のドット値が決定されるまで、注目画素に対応して形成されるべきドットが終端ドットD3または孤立ドットD1のいずれかであるか、非終端ドットD2であるかを判断できない。したがって、注目画素の次に処理対象とされる画素のドット値が決定されるまで、注目画素に対応して形成されるべきドットの相対濃度値Vbの決定を待つ必要がある。本実施例では、その必要がないために、ハーフトーン処理を高速化することができる。
なお、本実施例では、ドット値は、「ON」と「OFF」の二値のうちのいずれかの値を取るので、ドットの形成を示すドット値は、1つの特定値「ON」だけである。すなわち、3種のドットD1〜D3に対応する複数個の画素の複数個のドット値は、互いに同一の値である。このように、本実施例では、複数個の画素に対応して形成されるべき複数個のドットを示す複数個のドット値は、同一の特定値に決定されるにも拘わらず、当該複数個の同一のドット値に対応する相対濃度値Vbは、2つの異なる値A、Bが使い分けられる。このように、本実施例の印刷画像は、対応するドット値は同一の特定値であるにも拘わらず、形成に用いられる単位信号が異なるために、互いに異なる濃度を表す複数個のドットを含むが、本実施例の画像処理によれば、このような印刷画像の濃度を適正に表現することができる。
B.第2実施例:
第2実施例では、プリンタ200は、第1実施例のハーフトーン処理(図8)とは、異なるハーフトーン処理を実行する。第2実施例のその他の構成および処理は、第1実施例と同一である。
図10は、第2実施例のハーフトーン処理のフローチャートである。ハーフトーン処理が開始されると、図8のステップS100、S105と同様に、CPU110は、1個の注目ラスタを選択し(ステップS200)、注目ラスタの印刷方向を取得する(ステップS205)。
続くステップS210では、CPU110は、注目ラスタの処理方向を予め定められた方向に決定する。図11は、ハーフトーン処理の処理方向について説明する図である。本実施例では、ラスタと垂直な方向の端から奇数番目のラスタの処理方向と、偶数番目のラスタの処理方向とは、互いに逆方向に決定される。すなわち、複数個のラスタを順次に注目ラスタとして選択すると、処理順が奇数番目の注目ラスタは、ラスタに平行な第1の方向(例えば、+X方向)に処理方向が決定され、処理順が偶数番目の注目ラスタは、ラスタに平行で第1の方向とは反対方向の第2の方向(例えば、−X方向)に処理方向が決定される。第1実施例とは異なり、注目ラスタの処理方向は、注目ラスタの印刷方向とは無関係に決定される。したがって、注目ラスタの処理方向は、注目ラスタの印刷方向と同一方向である場合もあり、注目画像の印刷方向と反対の方向である場合もある(図11参照)。
このように、注目ラスタの処理方向を、注目ラスタの選択順に交互に反対方向になるように設定すると、例えば、注目ラスタの処理方向を、対象画像の全体や部分画像の全体で、常に同じ方向に設定する場合と比較して印刷画像の画質が向上する利点がある。ハーフトーン処理にて画素ごとに算出される誤差値E1は、対象画像において、処理方向の上流側から下流側に向かって分配されていく。このために、例えば、対象画像の全体で、注目ラスタの処理方向が常に同じ方向に設定されると、誤差値E1は、対象画像内の一方の方向に偏って分配される。この結果、生成された印刷データによって表される印刷画像には、ムラなどの不具合が生じ得る。注目ラスタの処理方向を、注目ラスタの選択順に交互に反対方向になるように設定すると、誤差値E1の分配の偏りが抑制されるので、印刷画像の画質を向上することができる。
図10のステップS215では、CPU110は、注目ラスタの処理方向は、注目ラスタの印刷方向と同じであるか否かを判断する。注目ラスタの処理方向が、注目ラスタの印刷方向と同一方向でない場合、すなわち、注目ラスタの処理方向が、注目の印刷方向と反対の方向である場合には(ステップS215:NO)、CPU110は、図8のステップS115〜S175までの処理を実行する(ステップS220)。このように、注目ラスタの処理方向が印刷方向と反対の方向である場合には、第1実施例のハーフトーン処理と同様に処理することによって、ドットの種類に応じた適切な相対濃度値Vbを用いて、注目ラスタに対応するドットデータを生成することができる。
注目ラスタの印刷方向と同一方向である場合には(ステップS215:NO)、第1実施例のハーフトーン処理とは一部の処理が異なるステップS225〜S290の処理が実行される。
先ず、図8のステップS115〜ステップS130と同様に、CPU110は、1個の注目画素を選択し(ステップS225)、マトリクスを用いて注目画素に加算すべき誤差値Etを取得し(ステップS230)、誤差値Etと入力階調値Vinとを用いて補正済階調値V1を算出し(ステップS235)、補正済階調値V1と閾値Vthとを比較する(ステップS240)。
補正済階調値V1が閾値Vth未満である場合には(ステップS240:NO)、CPU110は、注目画素のドット値を「OFF」に決定し(ステップS265)、本実施例にて注目画素の誤差値E1を算出するときに用いる初期濃度値Vcを「0」に設定する(ステップS270)。そして、CPU110は、本実施例にて注目画素の誤差値E1を算出するときに用いる補正値CVを「0」に設定する(ステップS275)。
補正済階調値V1が閾値Vth以上である場合には(ステップS240:YES)、CPU110は、注目画素のドット値を「ON」に決定する(ステップS245)。この場合には、CPU110は、初期濃度値Vcを第1値Aに決定する(ステップS250)。続いて、CPU110は、直前に処理された隣接画素のドット値がドットの形成を示すか否か、すなわち、該ドット値が「ON」であるか否かを判断する(ステップS255)。直前に処理された隣接画素がない場合には、直前の注目画素のドット値はドットの非形成を示すと判断される。
直前に処理された隣接画素のドット値がドットの形成を示す場合には(ステップS255:YES)、CPU110は、補正値CVを、第2値Bと第1値Aとの間の差分(B−A)に設定する(ステップS260)。直前に処理された隣接画素のドット値がドットの非形成を示す場合には(ステップS255:NO)、CPU110は、補正値CVを「0」に設定する(ステップS275)。
補正値CVが、(B−A)、0、のうちのいずれか一方に設定されると、ステップS280では、CPU110は、補正済階調値V1から初期濃度値Vcと補正値CVとを減じた値を、注目画素の誤差値E1として算出する(E1=V1−Vc−CV)。ここで、相対濃度値Vb=(Vc+CV)とすると、E1=(V1−Vb)と表すことができる。すなわち、相対濃度値Vb=(Vc+CV)が、形成すべきドットの濃度を示す値として用いられる値である。
例えば、注目画素のドット値が「ON」に決定され(ステップS240:YES)、かつ、直前に処理された隣接画素のドット値が「OFF」である場合(ステップS255:NO)には、Vc=A(ステップS250)、CV=0(ステップS275)であるので、(Vc+CV)=Aとなる。したがって、この場合には、相対濃度値Vbとして第1値Aが用いられる。
注目画素のドット値が「ON」に決定され(ステップS240:YES)、かつ、直前に処理された隣接画素のドット値が「ON」である場合(ステップS255:YES)には、Vc=A(ステップS250)、CV=(B−A)(ステップS260)であるので、(Vc+CV)=Bとなる。したがって、相対濃度値Vbとして第2値Bが用いられる。
注目画素のドット値が「OFF」に決定された場合(ステップS240:NO)には、Vc=0(ステップS270)、CV=0(ステップS275)であるので、(Vc+CV)=0となる。したがって、この場合には、相対濃度値Vbとして、0が用いられる。
ステップS285では、CPU110は、誤差バッファB10内の、注目画素に対応するアドレスに、算出された注目画素の誤差値E1を格納する。
ステップS290では、CPU110は、注目ラスタの処理が終了したか否かを判断する。注目ラスタの処理が終了していない場合には(ステップS290:NO)、CPU110は、ステップS225に戻って、未処理の画素を新たな注目画素として選択して、上述したステップS230〜S285までの処理を繰り返す。
注目ラスタの処理が終了した場合には(ステップS290:YES)、CPU110は、対象画像内の全てのラスタの処理が終了したか否かを判断する(ステップS295)。全てのラスタの処理が終了していない場合には(ステップS295:NO)、CPU110は、ステップS200に戻って、未処理のラスタを注目ラスタとして選択して、上述したステップS205〜S290までの処理を繰り返す。全てのラスタの処理が終了した場合には(ステップS295:YES)、CPU110は、ハーフトーン処理を終了する。
図12は、第2実施例の印刷画像の例を示す図である。図12(A)、図12(C)には、第2実施例にて生成される印刷データを用いて印刷される印刷画像PI(図6)の部分画像IA1、IA2の一部分がそれぞれ概念的に示されている。図12(B)、図12(D)には、図12(A)および図12(C)に示す部分画像IA1、IA2内のドットに対応する相対濃度値Vbがそれぞれ示されている。ドットに対応する相対濃度値Vbは、図10のハーフトーン処理で、当該ドットに対応する画素を注目画素として処理するときに、注目画素の誤差値Etの算出(ステップS280)に用いられる相対濃度値Vbを意味する。
印刷方向と処理方向とが反対の方向である対象画像のラスタに対応する印刷画像のラスタ、すなわち、図12(A)の部分画像IA1の上から1番目および3番目のラスタ、および、図12(C)の部分画像IA2の上から2番目および4番目のラスタについて説明する。これらのラスタのドットデータは、第1実施例と同様の処理(ステップS115〜S175)によって生成される。このために、これらのラスタでは、図12(A)〜図12(D)から解るように、第1実施例と同様に、孤立ドットD1および終端ドットD3、すなわち、第1単位信号DP1を用いて形成されるドットに対応する相対濃度値Vbは、第1値Aである。そして、非終端ドットD2、すなわち、第2単位信号DP2を用いて形成されるドットに対応する相対濃度値Vbは、第2値Bである。
印刷方向と処理方向とが同一方向である対象画像のラスタに対応する印刷画像のラスタ、すなわち、図12(A)の部分画像IA1の上から2番目および4番目のラスタ、および、図12(C)の部分画像IA2の上から1番目および3番目のラスタについて説明する。これらのラスタでは、図12(A)〜図12(D)から解るように、孤立ドットD1と、連続ドット群に含まれる1個以上の非終端ドットD2のうち、ハーフトーン処理の処理方向の上流側の端に位置するドットと、に対応する相対濃度値Vbは、第1値Aである。そして、終端ドットD3と、3個以上のドットを含む連続ドット群に含まれる2個以上の非終端ドットD2のうち、ハーフトーン処理の処理方向の上流側の端に位置するドット以外の1個以上の非終端ドットD2と、に対応する相対濃度値Vbは、第2値Bである。
このように、第2実施例では、第1単位信号DP1を用いて形成される終端ドットD3に対応する相対濃度値Vbとして第2値Bが用いられ、第2単位信号DP2を用いて形成される非終端ドットD2に対応する相対濃度値Vbとして第1値Aが用いられる場合がある。しかしながら、この場合には、M個のドットを含む連続ドット群のうち、1個の非終端ドットD2に対応する相対濃度値Vbとして第1値Aが用いられ、終端ドットD3を含む(M−1)個のドットに対応する相対濃度値Vbとして第2値Bが用いられる。この結果、M個のドットを含む連続ドット群の全体の濃度が、{A+(M−1)×B}となるように、相対濃度値Vbが設定されている。この結果、M個のドットを含む連続ドット群の全体の濃度を正しく示すように、M個のドットに対応するM個の相対濃度値Vbが設定される。M個(Mは2以上の自然数)のドットを含む連続ドット群は、1個の終端ドットD3と、(M−1)個の非終端ドットD2を含むので、M個のドットを含む連続ドット群の全体の濃度は、{A+(M−1)×B}となるからである。
以上の説明から解るように、第2実施例の画像処理によれば、複数個のドットに対応する相対濃度値Vbとして用いる値を、複数個のドットの位置関係に応じて、第1値Aと第2値Bとのいずれかに使い分けることによって、互いに異なる単位信号を用いて形成される2種類のドットを含む印刷画像の濃度を適切に表現することができる。
さらに、この構成によれば、注目ラスタの処理方向と、注目ラスタの印刷方向と、が同一方向である場合であっても、高速なハーフトーン処理を実現することができる。すなわち、注目ラスタの処理方向と、注目ラスタの印刷方向と、が同一方向である場合に、注目画素が終端ドットD3であるか否かを判断することは、注目画素の処理方向の下流側に隣接する画素のドット値が決まっていない状態では困難である。もし、注目画素が終端ドットD3であるか否かを判断する場合には、注目画素の処理方向に隣接する画素のドット値を決定してから、判断する必要があるので、ハーフトーン処理が煩雑になり、処理速度の低下を招くと考えられる。しかしながら、本実施例では、注目画素のドット値が「ON」である場合には、仮の相対濃度値としての初期濃度値Vcを第1値Aに設定しておく(ステップS250)。すなわち、注目画素は、この時点では、孤立ドットD1または終端ドットD3として扱われる。そして、注目画素のドット値が「ON」であり、かつ、直前に処理された隣接画素のドット値が「ON」である場合には(ステップS255:YES)、直前に処理された隣接画素が、非終端ドットD2であることが判明するので、現在の注目画素の初期濃度に、第2値Bと第1値Aとの差分(B−A)を加算する。この結果、上述したように、M個のドットを含む連続ドット群の全体の濃度を正しく表すように、M個のドットに対応するM個の相対濃度値Vbを決定しつつ、ハーフトーン処理を高速化することができる。
また、注目ラスタの処理方向と、注目ラスタの印刷方向と、が同一方向である場合であっても、高速なハーフトーン処理を実現することができることによって、対象画像内の複数個のラスタの処理方向を印刷方向とは無関係に設定することができる。この結果、例えば、本実施例のように、処理順が奇数番目のラスタの処理方向と、処理順が偶数番目のラスタの処理方向と、を反対方向に設定することによって、印刷画像の画質を向上することができる。
C.第3実施例:
C−1. 印刷処理の概要
図13は、第3実施例の駆動信号DSの一例を示す図である。図14は、第3実施例の印刷画像の例を示す図である。図12(A)、図12(C)には、第2実施例にて生成される印刷データを用いて印刷される印刷画像PI(図6)の部分画像IA1、IA2の一部分がそれぞれ概念的に示されている。
第3実施例では、プリンタ200は、3種類のサイズのドット、すなわち、小ドットDsと、小ドットDsよりサイズが大きい中ドットDmと、中ドットDmよりサイズが大きい大ドットDbと、を用いて、印刷を実行することができる。
本実施例では、4種類の単位信号、すなわち、図4を参照して説明した第1単位信号DP1と第2単位信号DP2に加えて、第3単位信号DPsと、第4単位信号DSmと、が用いられる(図13)。例えば、図13に示す駆動信号DSsは、2個の第3単位信号DPsを含んでいる。駆動信号DSmは、2個の第4単位信号DPmを含んでいる。これらの単位信号DPs、DPmは、単位信号DP1、DP2と同様に、特定期間IT内に出力される。
第3単位信号DPsは、1個の第1パルスP1と、1個の第1パルスP1に続いて出力される1個の第2パルスP2と、を含んでいる。第4単位信号DPmは、2個の第1パルスP1と、2個の第1パルスP1に続いて出力される1個の第2パルスP2と、を含んでいる。
小ドットDsは、周囲に位置する他のドットとの位置関係に拘わらずに、第3単位信号DPsを用いて形成される。中ドットDmは、周囲に位置する他のドットとの位置関係に拘わらずに、第4単位信号DPmを用いて形成される。これは、第3単位信号DPsおよび第4単位信号DPmは、第1単位信号DP1より第1パルスP1の数が少ないので、信号の出力期間Ots、Otmが短いからである。このために、第3単位信号DPsや第4単位信号DPmが出力される特定期間ITの次の特定期間ITで別の単位信号が出力されたとしても、信号間隔Sts、Stmが過度に短くなることはない。したがって、小ドットDsや中ドットDmを形成する場合には、周囲のドットの形成状況に応じて、単位信号を使い分ける必要性に乏しい。
大ドットDbは、第1実施例のドットと同様に、周囲に位置する他のドットとの位置関係に応じて、2種類の端子信号(第1単位信号DP1と第2単位信号DP2)のいずれか一方を用いて、形成される。大ドットは、第1実施例のドットと同様に、周囲のドットの形成状況に応じて、孤立大ドットDb1と、非終端大ドットDb2と、終端大ドットDb3と、の3種類に分類することができる。孤立大ドットDb1は、主走査方向に隣接する隣接ドットがないドットである。終端大ドットDb3は、連続ドット群に含まれ、印刷方向の下流側の端に位置する大ドットである。非終端大ドットDb2は、連続ドット群に含まれ、印刷方向の下流側の端とは異なる位置にある大ドットである。
孤立大ドットDb1と、終端大ドットDb3とは、図13の第1単位信号DP1を用いて形成される。一方、非終端大ドットDb2は、第2単位信号DP2を用いて形成される。
C−2. ハーフトーン処理:
図15は、第3実施例のハーフトーン処理のフローチャートである。ハーフトーン処理が開始されると、図8のステップS100、S105、S110と同様に、CPU110は、1個の注目ラスタを選択し(ステップS300)、注目ラスタの印刷方向を取得し(ステップS305)、注目ラスタの処理方向を印刷方向の反対方向に決定する(ステップS310)。
そして、図8のステップS115、S120、S125と同様に、CPU110は、1個の注目画素を選択し(ステップS315)、マトリクスMTX(図1)を用いて注目画素に加算すべき誤差値Etを取得し(ステップS320)、誤差値Etと、注目画素の階調値(入力階調値Vinとも呼ぶ)とを用いて、補正済階調値V1を算出する(ステップS325)。
続くステップS330では、CPU110は、補正済階調値V1と、大ドット用の閾値VLthと、を比較する。補正済階調値V1が、大ドット用の閾値VLth未満である場合には(ステップS330:NO)、補正済階調値V1は、中ドット用の閾値VMthと比較される(ステップS355)。補正済階調値V1が、中ドット用の閾値VMth以上である場合には(ステップS355:YES)、注目画素のドット値は、中ドットの形成を示す値(以下、「中ドットON」とも呼ぶ)に決定され(ステップS360)、相対濃度値Vbは、中ドットの濃度を示す値である中ドット値Cに設定される(ステップS365)。
補正済階調値V1が、中ドット用の閾値VMth未満である場合には(ステップS355:NO)、補正済階調値V1は、小ドット用の閾値VSthと比較される(ステップS370)。補正済階調値V1が、小ドット用の閾値VSth以上である場合には(ステップS370:YES)、注目画素のドット値は、小ドットの形成を示す値(以下、「小ドットON」とも呼ぶ)に決定され(ステップS375)、相対濃度値Vbは、小ドットの濃度を示す値である小ドット値Dに設定される(ステップS380)。
補正済階調値V1が、小ドット用の閾値VSth未満である場合には(ステップS370:NO)、注目画素のドット値は、ドットの非形成を示す値(すなわち、「OFF」)に決定され(ステップS385)、相対濃度値Vbは、0に設定される(ステップS390)。
ここで、3つの閾値VLth、VMth、VSthは、例えば、入力階調値Vinが0〜255の256階調の値を取る場合に、170、85、1に、設定されている。また、中ドット値Cと、小ドット値Dは、例えば、170、85に、設定されている。
ステップS330にて、補正済階調値V1が大ドット用の閾値VLth以上である場合には(ステップS330:YES)、注目画素のドット値は、大ドットの形成を示す値(以下、「大ドットON」とも呼ぶ)に決定される(ステップS335)。以上の説明から解るように、第3実施例のドット値は、「大ドットON」、「中ドットON」、「小ドットON」、「OFF」の4種類の値のいずれかに決定される。
続くステップS340では、直前に処理された隣接画素のドット値が、大中小のいずれかのドットの形成を示すか否かが、判断される(ステップS340)。隣接画素のドット値が、「大ドットON」「中ドットON」「小ドットON」のいずれかである場合には、ドットの形成を示すと判断される。
直前に処理された隣接画素のドット値がドットの形成を示す場合には(ステップS340:YES)、CPU110は、相対濃度値Vbを、大ドットの第2値Bに設定する(ステップS350)。直前に処理された隣接画素のドット値がドットの非形成を示す場合には(ステップS340:NO)、CPU110は、相対濃度値Vbを、大ドットの第1値Aに設定する(ステップS345)。大ドットの第1値A、および、大ドットの第2値Bには、例えば、第1実施例の第1値A、および、第2値Bと同じ値、すなわち、253、および、255が用いられる。
相対濃度値Vbが設定されると、補正済階調値V1と相対濃度値Vbを用いて、注目画素の誤差値E1(=V1−Vb)が算出され(ステップS391)、誤差バッファB10内に格納される(ステップS392)。
ステップS393では、注目ラスタの処理が終了したか否かが判断される。注目ラスタの処理が終了していない場合には(ステップS393:NO)、ステップS315に戻って、新たな注目画素が選択され、上述したステップS320〜S392までの処理を繰り返される。
注目ラスタの処理が終了した場合には(ステップS393:YES)、対象画像内の全てのラスタの処理が終了したか否かが判断される(ステップS394)。全てのラスタの処理が終了していない場合には(ステップS394:NO)、ステップS300に戻って、未処理のラスタが注目ラスタとして選択され、上述したステップS305〜S393までの処理が繰り返される。全てのラスタの処理が終了した場合には(ステップS394:YES)、ハーフトーン処理は終了される。
図14(A)、図14(C)には、第3実施例にて生成される印刷データを用いて印刷される印刷画像PIの部分画像IA1、IA2の一部分がそれぞれ概念的に示されている。図14(B)、図14(D)には、図14(A)および図14(C)に示す部分画像IA1、IA2内のドットに対応する相対濃度値Vbがそれぞれ示されている。
図14(A)〜(D)から解るように、中ドットに対応する相対濃度値Vbには、中ドット値Cが用いられ、小ドットに対応する相対濃度値Vbには、小ドット値Dが用いられる。そして、孤立大ドットDb1および終端大ドットDb3、すなわち、第1単位信号DP1を用いて形成されるドットに対応する相対濃度値Vbには、大ドットの第1値Aが用いられる。そして、非終端大ドットDb2、すなわち、第2単位信号DP2を用いて形成されるドットに対応する相対濃度値Vbには、大ドットの第2値Bが用いられる。この結果、孤立大ドットDb1および終端大ドットDb3と、非終端大ドットDb2との間で、表現される濃度が互いに異なる場合であっても、印刷画像の濃度を適正に表現することができる。
このように、第3実施例の画像処理によれば、複数種類のサイズのドットのうち、最大サイズのドット(具体的には、大ドット)が、第1単位信号DP1を用いて形成されるドットであるか、第2単位信号DP2を用いて形成されるドットであるかによって、互いに異なる濃度を示す値を相対濃度値Vbとして用いられる。この結果、互いに異なる単位信号を用いて形成される2種類の大ドットを含む印刷画像の濃度を適切に表現することができる。
第3実施例の画像処理によれば、大ドットの形成を示す1つの特定値(「大ドットON」)に、注目画素のドット値が決定された場合に、大ドットの濃度を示す相対濃度値Vbとして、2つの異なる値A、Bが使分けられる。この結果、印刷画像の濃度を適正に表現することができる。
また、第3実施例の画像処理によれば、注目画素のドット値が大ドットの形成を示す場合に、注目画素の直前に処理された隣接画素のドット値がドットの形成を示すか、ドットの非形成を示すかに基づいて、相対濃度値Vbとして大ドットの第1値Aを用いるか第2値Bを用いるかを判断している(図14のステップS340〜S350)。この結果、注目画素に対応して形成されるべき大ドットの種類を迅速に判断して、適切な相対濃度値Vbを決定しつつ、ハーフトーン処理を高速化することができる。
D.第4実施例:
第4実施例では、プリンタ200は、第3実施例と同様に、大中小の3種類のサイズのドットを用いて印刷を実行する。そして、第3実施例と同様に、大ドットは、第1単位信号DP1を用いて形成される孤立大ドットDb1および終端大ドットDb3と、第2単位信号DP2を用いて形成される非終端大ドットDb2と、に分類することができる。そして、第3実施例では、第2実施例のハーフトーン処理(図15)とは、異なるハーフトーン処理が実行される。
図16は、第4実施例のハーフトーン処理のフローチャートである。ステップS400では、図10のステップS200〜ステップS210までの処理が実行される。すなわち、CPU110は、1個の注目ラスタを選択し(図10:ステップS200)、注目ラスタの印刷方向を取得し(図10:ステップS205)、注目ラスタの処理方向を予め定められた方向に決定する(図10:ステップS210)。具体的には、第2実施例と同様に、処理順が奇数番目の注目ラスタは、ラスタに平行な第1の方向(例えば、図11の+X方向)に処理方向が決定され、処理順が偶数番目の注目ラスタは、ラスタに平行で第1の方向とは反対方向の第2の方向(例えば、図11の−X方向)に処理方向が決定される(図11参照)。
ステップS405では、CPU110は、注目ラスタの処理方向は、注目ラスタの印刷方向と同じであるか否かを判断する。注目ラスタの処理方向が、注目ラスタの印刷方向と同一方向でない場合、すなわち、注目ラスタの処理方向が、注目ラスタの印刷方向と反対の方向である場合には(ステップS405:NO)、CPU110は、図15のステップS315〜S393までの処理を実行する(ステップS410)。このように、注目ラスタの印刷方向が注目ラスタの印刷方向と反対の方向である場合には、第3実施例のハーフトーン処理と同様に処理することによって、大ドットの種類に応じた適切な相対濃度値Vbを用いて、注目ラスタに対応するドットデータを生成することができる。
注目ラスタの処理方向が、注目ラスタの印刷方向と同一方向である場合には(ステップS405:NO)、第3実施例のハーフトーン処理とは一部の処理が異なるステップS415〜S494の処理が実行される。
先ず、図15のステップS315〜ステップS330と同様に、CPU110は、1個の注目画素を選択し(ステップS415)、マトリクスを用いて注目画素に加算すべき誤差値Etを取得し(ステップS420)、誤差値Etと入力階調値Vinとを用いて補正済階調値V1を算出し(ステップS425)、補正済階調値V1と、大ドット用の閾値VLthと、を比較する(ステップS430)。
補正済階調値V1が、大ドット用の閾値VLth未満である場合には(ステップS430:NO)、補正済階調値V1は、中ドット用の閾値VMthと比較される(ステップS445)。補正済階調値V1が、中ドット用の閾値VMth以上である場合には(ステップS445:YES)、注目画素のドット値は、「中ドットON」に決定され(ステップS450)、初期濃度値Vcは、中ドット値Cに設定される(ステップS455)。
補正済階調値V1が、中ドット用の閾値VMth未満である場合には(ステップS445:NO)、補正済階調値V1は、小ドット用の閾値VSthと比較される(ステップS460)。補正済階調値V1が、小ドット用の閾値VSth以上である場合には(ステップS460:YES)、注目画素のドット値は、「小ドットON」に決定され(ステップS465)、初期濃度値Vcは、小ドット値Dに設定される(ステップS470)。
補正済階調値V1が、小ドット用の閾値VSth未満である場合には(ステップS460:NO)、注目画素のドット値は、「OFF」に決定され(ステップS475)、初期濃度値Vcは、0に設定される(ステップS480)。また、この場合には、CPU110は、補正値CVを「0」に設定する(ステップS491)。
ステップS430にて、補正済階調値V1が大ドット用の閾値VLth以上である場合には(ステップS430:YES)、CPU110は、注目画素のドット値を「大ドットON」に決定し(ステップS435)、初期濃度値Vcを、大ドットの第1値Aに決定する(ステップS440)。
ステップS440の後、または、ステップS455の後、または、ステップS470の後のステップS485では、CPU110は、直前に処理された隣接画素のドット値が大ドットの形成を示すか否か、すなわち、該ドット値が「大ドットON」であるか否かを判断する。すなわち、注目画素のドット値が、大中小のドットのいずれかの形成を示す値に決定された場合には、直前に処理された隣接画素のドット値が大ドットの形成を示すか否かが判断される。
直前に処理された隣接画素のドット値が大ドットの形成を示す場合には(ステップS485:YES)、CPU110は、補正値CVを、第2値Bと第1値Aとの間の差分(B−A)に設定する(ステップS490)。直前に処理された隣接画素のドット値が大ドットの形成を示さない場合には(ステップS490:NO)、CPU110は、補正値CVを「0」に設定する(ステップS491)。
補正値CVが、(B−A)、0、のうちのいずれか一方に設定されると、ステップS492では、CPU110は、補正済階調値V1と初期濃度値Vcと補正値CVとを用いて、注目画素の誤差値E1を算出する(E1=V1−Vc−CV)。相対濃度値Vb=(Vc+CV)が、形成すべきドットの濃度を示す値として用いられる値である。
例えば、注目画素のドット値が「小ドット値ON」に決定され(ステップS460:YES)、かつ、直前に処理された隣接画素のドット値が「大ドットON」である場合(ステップS485:YES)には、Vc=D(ステップS470)、CV=(B−A)(ステップS490)である。第2値Bと第1値Aとの間の差分(B−A)をΔVで表すと、(Vc+CV)=D+ΔVとなる。したがって、この場合には、相対濃度値Vbとして、小ドット値Dと差分ΔVとの和が用いられる。
注目画素のドット値が「中ドット値ON」に決定され(ステップS445:YES)、かつ、直前に処理された隣接画素のドット値が「大ドットON」である場合(ステップS485:YES)には、Vc=C(ステップS455)、CV=ΔV(ステップS490)であるので、(Vc+CV)=C+ΔVとなる。したがって、この場合には、相対濃度値Vbとして、中ドット値Cと差分ΔVとの和が用いられる。
注目画素のドット値が「大ドット値ON」に決定され(ステップS430:YES)、かつ、直前に処理された隣接画素のドット値が「大ドットON」である場合(ステップS485:YES)には、Vc=A(ステップS440)、CV=ΔV(ステップS490)であるので、(Vc+CV)=A+ΔV=Bとなる。したがって、この場合には、相対濃度値Vbとして、大ドットの第2値Bが用いられる。
注目画素のドット値が「小ドット値ON」に決定され(ステップS460:YES)、かつ、直前に処理された隣接画素のドット値が「大ドットOFF」である場合(ステップS485:NO)には、Vc=D(ステップS470)、CV=0(ステップS491)である。したがって、この場合には、相対濃度値Vbとして、小ドット値Dが用いられる。
注目画素のドット値が「中ドット値ON」に決定され(ステップS445:YES)、かつ、直前に処理された隣接画素のドット値が「大ドットOFF」である場合(ステップS485:NO)には、Vc=C(ステップS455)、CV=0(ステップS491)である。したがって、この場合には、相対濃度値Vbとして、中ドット値Cが用いられる。
注目画素のドット値が「大ドット値ON」に決定され(ステップS430:YES)、かつ、直前に処理された隣接画素のドット値が「大ドットOFF」である場合(ステップS485:NO)には、Vc=A(ステップS440)、CV=0(ステップS491)である。したがって、この場合には、相対濃度値Vbとして、大ドットの第1値Aが用いられる。
ステップS493では、CPU110は、誤差バッファB10に、算出された注目画素の誤差値E1を格納する。
ステップS494では、注目ラスタの処理が終了したか否かが判断される。注目ラスタの処理が終了していない場合には(ステップS494:NO)、ステップS415に戻って、新たな注目画素が選択され、上述したステップS420〜S493までの処理が繰り返される。
注目ラスタの処理が終了した場合には(ステップS494:YES)、対象画像内の全てのラスタの処理が終了したか否かが判断される(ステップS495)。全てのラスタの処理が終了していない場合には(ステップS495:NO)、ステップS400に戻って、未処理のラスタが注目ラスタとして選択され、上述したステップS400〜S494までの処理が繰り返される。全てのラスタの処理が終了した場合には(ステップS495:YES)、ハーフトーン処理は終了される。
図17は、第4実施例の印刷画像の例を示す図である。図17(A)、図17(C)には、第4実施例にて生成される印刷データを用いて印刷される印刷画像PIの部分画像IA1、IA2の一部分がそれぞれ概念的に示されている。図17(B)、図17(D)には、図17(A)および図17(B)に示す部分画像IA1、IA2内のドットに対応する相対濃度値Vbがそれぞれ示されている。
印刷方向と処理方向とが反対の方向である対象画像のラスタに対応する印刷画像のラスタ、すなわち、図17(A)の部分画像IA1の上から1番目および3番目のラスタ、および、図17(C)の部分画像IA2の上から2番目および4番目のラスタについて説明する。これらのラスタのドットデータは、第3実施例と同様の処理(図15のステップS415〜S393)によって生成される。このために、これらのラスタでは、図17(A)〜図17(D)から解るように、第3実施例と同様に、孤立大ドットDb1および終端大ドットDb3、すなわち、第1単位信号DP1を用いて形成されるドットに対応する相対濃度値Vbは、大ドット用の第1値Aである。そして、非終端大ドットDb2、すなわち、第2単位信号DP2を用いて形成されるドットに対応する相対濃度値Vbは、大ドット用の第2値Bである。また、中ドットおよび小ドットに対応する相対濃度値Vbは、中ドット値Cおよび小ドット値Dである。
印刷方向と処理方向とが同一方向である対象画像のラスタに対応する印刷画像のラスタ、すなわち、図17(A)の部分画像IA1の上から2番目および4番目のラスタ、および、図17(C)の部分画像IA2の上から1番目および3番目のラスタについて説明する。ついて説明する。これらのラスタでは、図17(A)〜図17(D)から解るように、第2実施例と同様に、第1単位信号DP1を用いて形成される終端大ドットDb3に対応する相対濃度値Vbとして、大ドットの第2値Bが用いられる場合がある(図17(C)の部分画像IA2の1行目など)。また、第2単位信号DP2を用いて形成される非終端大ドットDb2に対応する相対濃度値Vbとして、大ドットの第1値Aが用いられる場合がある(図17(A)の部分画像IA1の2、4行目など)。
しかしながら、第2実施例と同様に、M個のドットを含む連続ドット群の全体の濃度を正しく示すように、M個のドットに対応するM個の相対濃度値Vbが設定される。例えば、図17(A)に示す連続ドット群DG3は、2個の非終端大ドットDb2と、1個の終端大ドットDb3と、1個の小ドットDsと、を含む。したがって、連続ドット群DG3の全体の濃度は、{(2×B)+A+D}である。ここで、連続ドット群DG3に含まれる4個のドットに対応する4個の相対濃度値VbのセットVG3(図17(B))の和は、{A+D+ΔV+A+B}である。ΔV=(B−A)であるので、4個の相対濃度値VbのセットVG3の和は、{(2×B)+A+D}となり、連続ドット群DG3の全体の濃度を正しく表していることが解る。
同様に、図17(C)に示す連続ドット群DG4は、1個の非終端大ドットDb2と、1個の中ドットDmと、1個の小ドットDsと、を含む。したがって、連続ドット群DG3の全体の濃度は、{B+C+D}である。ここで、連続ドット群DG4に含まれる3個のドットに対応する3個の相対濃度値VbのセットVG4(図17(D))の和は、{D+ΔV+A+C}である。ΔV=(B−A)であるので、3個の相対濃度値VbのセットVG4の和は、{B+C+D}となり、連続ドット群DG4の全体の濃度を正しく表していることが解る。
以上の説明から解るように、第4実施例の画像処理によれば、第3実施例と同様に、互いに異なる単位信号を用いて形成される2種類の大ドットを含む印刷画像の濃度を適切に表現することができる。
また、第2実施例と同様に、第2値Bと第1値Aとの差分(B−A)を用いて、注目画素の誤差値E1を算出することによって、第2実施例と同様に、印刷方向と処理方向とが同一方向であるラスタ内の画素についても、M個のドットを含む連続ドット群の全体の濃度を正しく表すように、M個のドットに対応するM個の相対濃度値Vbを決定しつつ、ハーフトーン処理を高速化することができる。
E.変形例:
(1)上記実施例のハーフトーン処理は、CMYKのインクを用いるカラー印刷を例に説明したが、1種類のインクを用いて実行されるモノクロ印刷のためのハーフトーン処理であっても良い。
(2)第1実施例において、第1単位信号DP1を用いて孤立ドットD1が形成され、第2単位信号DP2を用いて非終端ドットD2および終端ドットD3が形成されてもよい。この場合には、孤立ドットD1に対応する相対濃度値Vbが第1値Aに設定され、非終端ドットD2および終端ドットD3に対応する相対濃度値Vbが第2値Bに設定されれば良い。
(3)プリンタ200の印刷方式には、様々な印刷方式が用いられ得る。例えば、印刷機構220は、印刷データ内の奇数番目のラスタの印刷と、偶数番目のラスタの印刷と、を、異なるパスで印刷するインタレース印刷(2パス印刷とも呼ばれる)を実行しても良い。また、印刷機構220は、往路パスと復路パスのうち、1個の方向だけを用いる片方向印刷を実行しても良い。いずれの印刷方式が用いられる場合であっても、第1実施例および第3実施例のハーフトーン処理では、注目ラスタの処理方向は、印刷方式に応じた印刷方向の反対方向に決定されることが好ましい。また、第2実施例および第4実施例のハーフトーン処理では、注目ラスタの処理方向を、印刷方式に応じた印刷方向よりも優先させ、注目ラスタの処理方向は、予め定められた方向に決定されることが好ましい。
(4)図5の画像処理は、プリンタ200の制御部210によって実行されても良い。この場合には、例えば、処理対象の画像データは、パーソナルコンピュータ100から取得され、制御部210によって生成された印刷データは、印刷機構220に供給される。この場合には、プリンタ200の制御部210が画像処理装置の例であり、印刷機構220が印刷実行部の例である。また、図5の画像処理のうち、1部分がパーソナルコンピュータ100によって実行され、残りの部分がプリンタ200の制御部210によって実行されても良い。例えば、パーソナルコンピュータ100が、図5のステップS30までの処理を実行してCMYK画像データを生成し、CMYK画像データをパーソナルコンピュータ100から受信したプリンタ200の制御部210が、ハーフトーン処理(ステップS30)および印刷データの生成(ステップS40)を実行しても良い。
(5)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。