以下、本発明に係る実施形態を、図面を参照しながら説明する。最初に、本発明に係る多階調の量子化の処理に先立ち、多階調の量子化の処理と関連する2階調の量子化の処理について、図1〜図10を用いて説明する。
図1は、2階調の量子化の処理を行うプログラムの一例について説明する図である。図1(a)は、このプログラムを使用する印刷システム10の構成の一例を示す。本例において、印刷システム10は、画像処理装置12及び印刷装置14を備える。
画像処理装置12は、例えばRIP(Raster Image Processor)処理等の画像形成処理を行う装置である。画像処理装置12は、印刷データが示す原画像を展開することにより、印刷装置14が解釈可能な形式により画像を示す印刷可能データを形成する。
また、本例において、画像処理装置12は、この画像形成処理において、少なくとも、原画像中の各画素の色の濃度を示す濃度値の量子化を行う。また、この場合、画像処理装置12は、印刷装置14で使用される各プロセスカラー毎に量子化を行う。これにより、画像処理装置12は、印刷データに基づき、各プロセスカラーに対応するハーフトーン画像を形成する。
尚、画像処理装置12は、例えば印刷装置14を制御するホストPCであり、所定のプログラムに従って、画像処理装置として動作する。画像処理装置12は、印刷データを、例えば他のPCから受け取ってよい。また、印刷データは、ユーザにより、画像処理装置12上で作成されてもよい。
印刷装置14は、例えばインクジェットプリンタであり、画像処理装置12から受け取る印刷可能データに従い、画像の印刷を実行する。また、本例において、印刷装置14は、CMYKインクの各色をプロセスカラーとして使用し、カラー印刷を行う。印刷装置14は、更に他の色のインクを用いて印刷を行ってもよい。
図1(b)は、画像処理装置12が行う量子化の処理の概要を示す図である。画像処理装置12は、プロセスカラー毎に、原画像に対する量子化により、ハーフトーン画像である擬似中間調画像を形成する。この量子化は、原画像の各座標における濃度値In(x,y)を、擬似中間調画像の同じ座標における量子化値out(x,y)に変換する処理である。
本例において、画像処理装置12は、この量子化を、ディザマトリクスノイズD(i,j)、及び累積誤差E(x,y)の両方を用いる方法(ハイブリッド誤差拡散処理)により行う。また、画像処理装置12は、ディザマトリクスノイズD(i,j)、及び累積誤差E(x,y)に関連するパラメータとして、それぞれ0以上1以下(0%〜100%)の範囲の値に設定されるノイズ使用率Rn、及び誤差使用率Reを更に用いる。
ノイズ使用率Rnは、ディザマトリクスノイズD(i,j)を量子化の処理に影響させる度合いを示すパラメータであり、量子化を行う画素の濃度値In(x,y)に応じて算出される。画像処理装置12は、ディザマトリクスノイズD(i,j)をそのまま用いるのではなく、ディザマトリクスノイズD(i,j)とノイズ使用率Rnとの積を用いて量子化を行う。これにより、画像処理装置12は、各画素に対応するノイズ使用率Rnに応じて、ディザマトリクスノイズD(i,j)を使用する。
また、誤差使用率Reは、累積誤差E(x,y)を量子化の処理に影響させる度合いを示すパラメータであり、量子化を行う画素の濃度値In(x,y)に応じて算出される。画像処理装置12は、累積誤差E(x,y)をそのまま用いるのではなく、累積誤差E(x,y)と誤差使用率Reとの積を用いて、各画素の濃度値In(x,y)に対応する誤差補正済入力値In’(x,y)を算出する。そして、算出した誤差補正済入力値In’(x,y)を用いて、量子化の処理を行う。これにより、画像処理装置12は、各画素に対応する誤差使用率Reに応じて、累積誤差E(x,y)を使用する。尚、量子化の処理については、後に更に詳しく説明する。
本例によれば、例えば、誤差拡散処理の空間周波数特性(誤差拡散特性)にディザ処理の空間周波数特性(ディザ特性)の影響を与えることができる。また、これにより、例えば、誤差拡散特性にディザ特性を組み込んだ方法により、量子化を行うことができる。また、この場合、例えば単にディザ処理と誤差拡散処理とを切り替える場合等と異なり、処理の切り替えに伴う境界線が発生すること等を適切に防ぐことができる。
そのため、本例によれば、例えば、それぞれの処理が得意とする部分を適切に活かした量子化の処理を行うことができる。また、これにより、例えば、量子化の処理において生じる印刷に関しての種々の問題点を適切に解消し、より適切な方法で量子化の処理を行うことができる。
尚、ディザマトリクスノイズD(i,j)は、例えば、予め設定されたディザマトリクスにより指定される値である。ディザマトリクスノイズD(i,j)は、例えば従来のディザ処理において使用されるディザマトリクスノイズと同一又は同様であってよい。ディザマトリクスノイズD(i,j)としては、例えば、ブルーノイズ特性のノイズを用いることが好ましい。また、画像処理装置12は、使用するディザマトリクスを、プロセスカラー毎に変更することが好ましい。
累積誤差E(x,y)は、周辺の画素に対する量子化において生じる誤差である量子化誤差Q(x,y)を累積した値であり、予め設定された拡散フィルタ(拡散マトリクス)を用いて算出される。また、算出された累積誤差E(x,y)は、例えば誤差バッファに格納される。画像処理装置12は、累積誤差E(x,y)を、例えば従来の誤差拡散処理で使用される累積誤差と同一又は同様の方法により算出する。
図2は、量子化を行う動作の一例を示すフローチャートである。画像処理装置12は、以下の処理を例えば、プロセスカラー毎に行う。
量子化を行う動作において、本例の画像処理装置12は、先ず、原画像から、量子化を行うべき画素を選択する(画素選択処理S102)。そして、選択される画素の濃度値In(x,y)に応じて、その画素に対応するノイズ使用率Rn、及び誤差使用率Reを算出する。これにより、画像処理装置12は、その画素の量子化に使用するノイズ使用率Rn、及び誤差使用率Reを決定する(使用率決定処理S104)。
続いて、画像処理装置12は、累積誤差E(x,y)による補正を行った後の濃度値である誤差補正済入力値In’(x,y)を算出する(誤差補正済入力値算出処理S106)。この処理において、画像処理装置12は、例えば、画素選択処理S102で選択された画素に対応する誤差使用率Reと、累積誤差E(x,y)との積を、その画素の濃度値In(x,y)に加算し、加算後の値を、誤差補正済入力値In’(x,y)として算出する。
また、画像処理装置12は、更に、量子化で使用する閾値として、ディザマトリクスノイズD(i,j)を反映させた閾値であるノイズ補正済閾値Th’を算出する(ノイズ補正済閾値算出処理S108)。この処理において、画像処理装置12は、例えば、画素選択処理S102で選択された画素に対応するノイズ使用率Rnと、ディザマトリクスノイズD(i,j)との積を、予め設定された初期閾値Thに加算し、加算後の値を、ノイズ補正済閾値Th’として算出する。
そして、画像処理装置12は、算出されたノイズ補正済閾値Th’と、誤差補正済入力値In’(x,y)とを比較する。これにより、画像処理装置12は、画素選択処理S102で選択された画素に対する量子化を実行する(量子化実行処理S110)。
続いて、画像処理装置12は、拡散フィルタに従って、この画素の量子化により生じる量子化誤差Q(x,y)を、周辺の画素に拡散させる(誤差分配処理S112)。これにより、画像処理装置12は、周辺画素の分配先座標に対応した拡散フィルタの値に量子化誤差Q(x,y)を積算し、周辺の画素のそれぞれに対応する累積誤差E(x,y)の値を更新する。
また、誤差分配処理S112の後、画像処理装置12は、量子化を実行した画素が原画像の最終の画素であるか否かを判定する(最終画素判定処理S114)。そして、最終画素であると判定した場合(S114:Yes)、原画像に対する量子化の処理を終了する。また、最終画素ではないと判定した場合(S114:No)、画素選択処理S102へ再度進み、次の画素を選択する。これにより、画像処理装置12は、画素選択処理S102において、量子化を行うべき画素を順次選択する。また、順次選択される画素に対して画素選択処理S102の以降の処理を行うことにより、その画素に対する量子化を実行する。
本例によれば、例えば、誤差使用率Reを乗じた累積誤差E(x,y)を濃度値In(x,y)に加算することにより、誤差拡散特性を影響させる度合いを適切に調節できる。また、ノイズ使用率Rnを乗じたディザマトリクスノイズD(i,j)を初期閾値Thに加算することにより、ディザ特性を影響させる度合いを適切に調節できる。
これにより、例えば、入力値である濃度値In(x,y)に応じて、誤差拡散特性及びディザ特性のそれぞれを影響させる度合いを適切に設定できる。また、誤差拡散処理及びディザ処理のそれぞれが得意とする部分を適切に活かした量子化の処理を行うことができる。以下、量子化を行う動作中の各処理について、更に詳しく説明する。
図3は、画素選択処理S102について更に詳しく説明する図である。図3(a)は、画素を順次選択する順番の一例を示す。本例の画素選択処理S102において、画像処理装置12は、例えば、画素のラインを順次選択し、選択したライン中の画素を所定の処理方向に沿って、順次選択する。また、画像処理装置12は、更に、この処理方向を、処理するライン毎に切り替える。例えば、画像処理装置12は、奇数ラインにおいては左から右へ、偶数ラインにおいては右から左へ、順次画素を選択する。これにより、画像処理装置12は、量子化の処理を、双方向処理により行う。
図3(b)は、双方向処理の効果の一例を示す図であり、処理方向を一定の一方向のみとした単方向処理を行った場合、及び双方向処理を行った場合のそれぞれについて、量子化の結果の一例を示す。双方向処理を行った場合、誤差の拡散方向が一定ではなくなるため、ドットをより適切に分散させることができる。また、その結果、例えば単方向処理により量子化を行う場合と比べ、ワームノイズの発生等をより適切に防ぐことができる。
図4〜6は、使用率決定処理S104について更に詳しく説明する図である。図4は、誤差使用率Re、及びノイズ使用率Rnと、濃度値In(x,y)(以下、入力値Inとする)とを対応付けるグラフ及び計算式の一例を示す。
本例において、画像処理装置12は、最小入力値MinInである0以上、かつ最大入力値MaxIn以下の範囲の入力値Inに対して連続的に変化する関数に基づき、誤差使用率Re及びノイズ使用率Rnを算出する。最大入力値MaxIn、及び最小入力値MinInは、例えば、入力値Inとなる濃度値が取り得る範囲の最大値及び最小値である。
また、この関数において、画像処理装置12は、ハイライト部にある濃度範囲を示す基準として、第3ハイライト基準値の一例であるハイライト側誤差使用率最小濃度値Hesと、第1ハイライト基準値の一例であるハイライト側ノイズ使用率最大濃度値Hnと、第2ハイライト基準値の一例であるハイライト側誤差使用率最大濃度値Heとを用いる。また、シャドウ部にある濃度範囲を示す基準として、第1シャドウ基準値の一例であるシャドウ側誤差使用率最大濃度値Seと、第2シャドウ基準値の一例であるシャドウ側ノイズ使用率最大濃度値Snと、第3シャドウ基準値の一例であるシャドウ側誤差使用率最小濃度値Sesとを用いる。更に、中間調部の中央において初期閾値Thを挟む濃度範囲を示す基準として、ハイライト側ノイズ使用率0%濃度値Hnz、シャドウ側ノイズ使用率0%濃度値Snz、第1中間調基準値C1、及び第2中間調基準値C2を用いる。
また、これらのパラメータは、少なくとも、Hes≦Hn<He<Se<Sn≦Ses、及びHn<Hnz<Snz<Snとなるように設定される。また、本例において、これらのパラメータは、グラフに示された大小関係で、0(MinIn)<Hes≦Hn<He<C1<Hnz<Th<Snz<C2<Se<Sn≦Ses<MaxInとなるように設定される。
そして、使用率決定処理S104において、画像処理装置12は、グラフの下に示した計算式に従い、誤差使用率Re、及びノイズ使用率Rnを決定する。但し、この数式により算出されるノイズ使用率Rnが、所定の最低ノイズ使用率RnMinより小さくなる場合、画像処理装置12は、ノイズ使用率Rnを、最低ノイズ使用率RnMinに設定する。これにより、画像処理装置12は、画素の濃度値がいずれの場合にも、ノイズ使用率Rnを、最低ノイズ使用率RnMin以上の値に設定する。
尚、誤差使用率Re、及びノイズ使用率Rnは、0〜100%(値0〜1)の範囲内の値に設定される。グラフの下に示した計算式において、100%以上となる場合には、100%に設定される。また、0%以下となる場合には、0%に設定される。
また、最低ノイズ使用率RnMinは、例えばパラメータ設定時の調整時等に、0より大きな値に予め設定される。最低ノイズ使用率RnMinは、例えば0.1(10%)以上の値とすることが考えられる。例えば、最低ノイズ使用率RnMinは、例えば0.1〜0.2(10〜20%)とすることが好ましい。また、グラフから分かるように、入力値Inが第1中間調基準値C1、又は第2中間調基準値C2と等しい場合に、計算式で算出されるノイズ使用率Rnは、最低ノイズ使用率RnMinと等しくなる。
以上の方法により、例えば、入力値Inが、ハイライト側誤差使用率最大濃度値He以上、かつシャドウ側誤差使用率最大濃度値Se以下の場合、画像処理装置12は、誤差使用率Reを、1(100%)に設定する。また、例えば、入力値Inがハイライト側誤差使用率最小濃度値Hes以下の場合、誤差使用率Reを0に設定する。入力値Inが、ハイライト側誤差使用率最小濃度値Hes以上、かつハイライト側誤差使用率最大濃度値He以下の場合、誤差使用率Reを、(In−Hes)/(He−Hes)で計算される値に設定する。これにより、例えば、入力値Inがハイライト側誤差使用率最大濃度値He以下の場合、誤差使用率Reを、0以上1(100%)以下の値であり、ハイライト側誤差使用率最大濃度値Heと入力値Inとの差に応じて1から漸減させた値に設定する。
また、例えば、入力値Inが、シャドウ側誤差使用率最大濃度値Se以上、かつシャドウ側誤差使用率最小濃度値Ses以下の場合、誤差使用率Reを、(Ses−In)/(Ses−Se)で計算される値に設定する。入力値Inがシャドウ側誤差使用率最小濃度値Ses以上の場合、誤差使用率Reを0に設定する。これにより、例えば、入力値Inが、シャドウ側誤差使用率最大濃度値Se以上の場合、誤差使用率Reを、0以上1(100%)以下の値であり、入力値Inとシャドウ側誤差使用率最大濃度値Seとの差に応じて1から漸減させた値に設定する。
この場合、ハイライト部から中間調部にかけての誤差使用率Reは、入力値Inに対し、例えば、ハイライト側誤差使用率最小濃度値Hesから徐々に増加し、ハイライト側誤差使用率最大濃度値Heにおいて最大値となる。また、シャドウ部から中間調部にかけての誤差使用率Reは、入力値Inに対し、シャドウ側誤差使用率最大濃度値Seから徐々に減少し、シャドウ側誤差使用率最小濃度値Sesにおいて最小値となる。
これにより、画像処理装置12は、例えば、入力値Inがハイライト部又はシャドウ部のいずれかに相当する濃度値である場合の誤差使用率Reを、中間調部に相当する濃度値である場合の誤差使用率Reよりも小さな値に設定する。また、この場合、誤差使用率Reは、例えば、濃度範囲の両端では値が0(0%)であり、ディザ処理に特有のテクスチャが発生する濃度範囲であるテクスチャ発生部Hd、Sdの手前で値1(100%)となるように変化する。このように構成すれば、例えば、誤差使用率Reを中間調で主に使用する構成を適切に実現できる。
また、例えば、入力値Inが、ハイライト側ノイズ使用率最大濃度値Hn以下の場合、又はシャドウ側ノイズ使用率最大濃度値Sn以上の場合、画像処理装置12は、ノイズ使用率Rnを、1(100%)に設定する。また、入力値Inが、第1中間調基準値C1以上、かつ第2中間調基準値C2以下の場合、ノイズ使用率Rnを、最低ノイズ使用率RnMinに設定する。
また、例えば、入力値Inがハイライト側ノイズ使用率最大濃度値Hn以上、かつ第1中間調基準値C1以下の場合、画像処理装置12は、ノイズ使用率Rnを、最低ノイズ使用率RnMin以上、かつ1(100%)以下の値であり、入力値Inとハイライト側ノイズ使用率最大濃度値Hnとの差に応じて1から漸減させた値に設定する。更に、例えば、入力値Inが、第2中間調基準値C2以上、かつシャドウ側ノイズ使用率最大濃度値Sn以下の場合、画像処理装置12は、ノイズ使用率Rnを、最低ノイズ使用率RnMin以上、かつ1(100%)以下の値であり、入力値Inと第2中間調基準値C2との差に応じて最低ノイズ使用率RnMinから漸増させた値に設定する。
これにより、画像処理装置12は、例えば、入力値Inがハイライト部又はシャドウ部のいずれかに相当する濃度値である場合のノイズ使用率Rnを、中間調部に相当する濃度値である場合のノイズ使用率Rnよりも大きな値に設定する。また、この場合、ノイズ使用率Rnは、例えば、ハイライト部及びシャドウ部での値が1(100%)であり、中間調になるにつれて徐々に値が下がるように変化する。
本例によれば、例えば、誤差拡散特性の影響が強いとドット遅延が発生しやすいハイライト部及びシャドウ部において、ノイズ使用率Rnを高くし、誤差使用率Reを低くすることとなる。これにより、例えば、ハイライト部及びシャドウ部において、ドットを分散して配置できるディザ特性の影響が大きくなるため、ドット遅延の発生を適切に抑えることができる。
また、誤差拡散特性の影響を大きくして中間調部での量子化の処理を行うことにより、例えば、より自然な擬似階調を得ることができる。また、例えば、テクスチャ発生部となる濃度範囲において、ノイズ使用率Rnを低く、誤差使用率Reを高くすることにより、ドットの配置に変化を与えることができる。また、これにより、例えば、テクスチャの発生を適切に抑えることができる。
更には、例えば、最低ノイズ使用率RnMinを設け、ノイズ使用率Rnが0にならないようにすることにより、例えば、中間調部において、僅かにディザ特性の影響を与えつつ、誤差拡散特性の影響を大きくできる。また、これにより、例えば、パタンノイズを適切に抑制できる。
また、例えば、誤差使用率Re、及びノイズ使用率Rnを算出する計算式に従ってディザ特性の影響の大きさと、誤差拡散特性の影響の大きさを徐々に変化させることにより、ディザ特性が支配的な領域と、誤差拡散特性が支配的な領域との切り替え部分で境界線が発生することを適切に抑えることができる。また、これにより、量子化の処理の方法の切り替えを滑らかに行うことができる。
従って、本例によれば、例えば、画素の濃度値に応じて、誤差使用率Re、及びノイズ使用率Rnのそれぞれを適切に設定できる。また、これにより、誤差拡散処理及びディザ処理のそれぞれの処理が得意とする部分をより適切に活かした量子化の処理を適切に行うことができる。
続いて、誤差使用率Re、及びノイズ使用率Rnを算出する処理について、更に詳しく説明する。図5は、誤差使用率Reを算出する処理の一例を示すフローチャートである。
誤差使用率Reの算出において、画像処理装置12は、先ず、入力値Inがハイライト側誤差使用率最大濃度値He以上、かつシャドウ側誤差使用率最大濃度値Se以下の範囲にあるか否かを判定する(S202)。そして、この範囲にあると判定した場合(S202:Yes)、誤差使用率Reを、最大使用率である1(100%)に設定する(S204)。
また、この範囲にないと判定した場合(S202:No)、更に、入力値Inについて、ハイライト側誤差使用率最小濃度値Hesよりも大きく、かつハイライト側誤差使用率最大濃度値Heよりも小さい範囲にあるか否かを判定する(S206)。そして、この範囲にあると判定した場合(S206:Yes)、誤差使用率Reを、Re=(In−Hes)/(He−Hes)で計算される値に設定する(S208)。
また、S206において、入力値Inが範囲内にないと判定した場合(S206:No)、画像処理装置12は、更に、入力値Inについて、シャドウ側誤差使用率最大濃度値Seよりも大きく、かつシャドウ側誤差使用率最小濃度値Sesよりも小さい範囲にあるか否かを判定する(S210)。そして、この範囲にあると判定した場合(S210:Yes)、誤差使用率Reを、Re=(Ses−In)/(Ses−Se)で計算される値に設定する(S212)。また、S210において、入力値Inが範囲内にないと判定した場合(S210:No)、画像処理装置12は、誤差使用率Reを、0(0%)に設定する(S214)。
そして、画像処理装置12は、S204、S208、S212、又はS214のいずれかで設定した誤差使用率Reを、入力値Inに対応する誤差使用率Reとして採用する(S216)。本例によれば、誤差使用率Reを適切に算出できる。
図6は、ノイズ使用率Rnを算出する処理の一例を示すフローチャートである。ノイズ使用率Rnの算出において、画像処理装置12は、先ず、入力値Inが、ハイライト側ノイズ使用率最大濃度値Hnより大きく、かつハイライト側ノイズ使用率0%濃度値Hnzより小さい範囲にあるか否かを判定する(S302)。そして、この範囲にあると判定した場合(S302:Yes)、ノイズ使用率Rnを、Rn=(Hnz−In)/(Hnz−Hn)で計算される値に設定する(S304)。
また、この範囲にないと判定した場合(S302:No)、更に、入力値Inが、シャドウ側ノイズ使用率0%濃度値Snzより大きく、かつシャドウ側ノイズ使用率最大濃度値Snより小さい範囲にあるか否かを判定する(S306)。そして、この範囲にあると判定した場合(S306:Yes)、ノイズ使用率Rnを、Rn=(In−Snz)/(Sn−Snz)で計算される値に設定する(S308)。
そして、S304又はS308においてノイズ使用率Rnを計算値に設定した後、最小の使用率である最低ノイズ使用率RnMinよりも設定したノイズ使用率Rnが大きいか否かを判定する(S310)。そして、ノイズ使用率Rnが最低ノイズ使用率RnMin以下である場合(S310:No)、ノイズ使用率Rnの値を、最低ノイズ使用率RnMinに変更し(S312)S316へ進む。また、ノイズ使用率Rnが最低ノイズ使用率RnMinより大きい場合(S310:Yes)、ノイズ使用率Rnの値の変更を行うことなく、S316へ進む。
また、S306において、入力値Inが上記の範囲にないと判定した場合(S306:No)、画像処理装置12は、ノイズ使用率Rnを、最大の使用率である1(100%)に設定する(S314)。そして、画像処理装置12は、S304、S308、S312、又はS314のいずれかで設定したノイズ使用率Rnを、入力値Inに対応するノイズ使用率Rnとして採用する(S316)。本例によれば、ノイズ使用率Rnを適切に算出できる。
図7は、量子化実行処理S110の動作の一例を示すフローチャートである。本例の量子化実行処理S110において、画像処理装置12は、先ず、入力値Inと最大入力値MaxInとが等しいか否かを判定する(最大値判定処理S402)。そして、等しいと判定した場合(S402:Yes)、量子化の結果を示す出力値を、1に設定する(S404)。この値1は、入力値Inが閾値Thよりも大きい場合に出力されるべき値の一例である。また、この出力値の設定と共に、後の誤差分配処理S112で使用する誤差値を、誤差補正済入力値In’と最大入力値MaxInの差であるIn’−MaxInに設定する。
また、S402において、入力値Inと最大入力値MaxInとが等しくないと判定した場合(S402:No)、画像処理装置12は、更に、入力値Inと最小入力値MinInとが等しいか否かを判定する(最小値判定処理S406)。そして、等しいと判定した場合(S406:Yes)、出力値を、0に設定する(S408)。この値0は、入力値Inが閾値Thよりも小さい場合に出力されるべき値の一例である。また、この出力値の設定と共に、誤差値を、誤差補正済入力値In’に設定する。
また、S406において、入力値Inと最小入力値MinInとが等しくないと判定した場合(S406:No)、画像処理装置12は、誤差補正済入力値In’がノイズ補正済閾値Th’よりも大きいか否かを判定する(S410)。そして、大きいと判定した場合(S410:Yes)、出力値を1に、誤差値を、In’−MaxInにそれぞれ設定する(S412)。また、S410において、誤差補正済入力値In’がノイズ補正済閾値Th’以下であると判定した場合(S410:No)、出力値を0に、誤差値をIn’にそれぞれ設定する(S414)。
そして、画像処理装置12は、量子化実行処理S110の結果となる量子化値及び誤差値として、S404、S408、S412、又はS414で設定した出力値及び誤差値を取得する(量子化値取得処理S416)。また、取得した誤差値を、後の誤差分配処理S112へ受け渡す。本例によれば、例えば、出力値及び誤差値を、容易かつ適切に設定できる。
図8及び図9は、誤差分配処理S112について更に詳しく説明する図である。図8は、本例において使用する拡散フィルタの一例を示す。図8(a)は、双方向処理の各方向で用いる拡散フィルタの一例を示す。
本例において、拡散フィルタは、例えば、Jarvis,Judice&Ninkeのマトリクスである。また、双方向処理の各方向である主走査方向及び逆主走査方向のそれぞれについて、図示の各フィルタを使用する。また、図示したフィルタにおいて、記号*が記入されている位置は、入力値Inの座標[0,0](原点)である。また、各マトリクス内の数値は、周辺の画素に誤差を分配する際の分配比率である。
図8(b)は、誤差の分配の仕方の一例を示す。周辺の画素に誤差を分配する処理において、誤差の分配先の座標が画像幅から外れている場合、画像処理装置12は、分配先の座標を、次のラインの先頭の座標に変更する。また、反対側の座標が範囲外となっている場合も、同様の処理を行う。また、分配先のラインが存在しない場合、画像処理装置12は、誤差を分配しない。また、分配先の座標が処理済みの画素である場合も、誤差を分配しない。
図9は、誤差分配処理S112の動作の一例を示すフローチャートである。誤差分配処理S112において、画像処理装置12は、フローチャート中のステップS502とS526との間で、Y座標を順次変化させるループを実行する。このループにおいて、画像処理装置12は、0から拡散マトリクス高さまでの間で、Yの値を1ずつ増加させる。拡散マトリクス高さとは、例えば、拡散フィルタとして用いるマトリクスの行数である。
また、ステップS504とS524との間で、X座標を順次変化させるループを実行する。このループにおいて、画像処理装置12は、0から拡散マトリクス幅までの間で、Xの値を1ずつ増加させる。拡散マトリクス幅とは、例えば、拡散フィルタとして用いるマトリクスの列数である。
そして、これらのループの中で、画像処理装置12は、先ず、フローチャート内に示したように、分配先の座標(X’、Y’)を設定する。また、拡散フィルタに従い、分配比率を設定する(S506)。そして、先ず、この時点で、分配比率が0より大きいか否かを判定し(S508)、分配比率が0以下である場合(S508:No)、誤差を分配せずに、再度S504へ進む。
また、分配比率が0よりも大きい場合(S508:Yes)、S510以降の処理へ進む。この処理において、分配先の座標X’が画像幅より小さく(S510:Yes)、座標X’が0以上であり(S512:Yes)、分配先の座標Y’が画像高さより小さければ(S514:Yes)、分配する誤差値(量子化誤差)を、誤差値と、分配比率との積に設定し(S516)、累積誤差バッファに格納されている分配誤差値に加算する(S518)。これにより、画像処理装置12は、発生した量子化誤差に応じて、累積誤差を更新する。
また、S510において、座標X’が画像幅以上である場合(S510:No)、座標X’=X’−画像幅、座標Y’=Y’+1として(S520)、S514へ進む。S512において、座標X’が0よりも小さい場合(S512:No)、座標X’=X’+画像幅、座標Y’=Y’+1として(S522)、S514へ進む。また、S514において、座標Y’が画像高さ以上である場合(S514:No)、誤差を分配せずに、S504へ進む。
以上の動作により、画像処理装置12は、累積誤差バッファに格納されている値に量子化誤差を積算し、累積誤差を算出する。本例によれば、誤差を適切に分配できる。また、これにより、累積誤差を適切に算出できる。
図10は、本例による印刷結果の一例を参考例による印刷結果と共に示す。図10(a)〜(c)は、図1から9を用いて説明した本例と異なる参考例による印刷結果である。図10(a)は、従来公知の典型的な誤差拡散処理のみを行った場合の印刷結果の一例を示す。図10(b)は、従来公知のディザ処理のみを行った場合の印刷結果の一例を示す。
典型的な誤差拡散処理のみを行う場合、例えば、ハイライト部やシャドウ部では、ドットの遅延等の問題が発生する。また、ディザ処理のみを行う場合、例えば、ディザ処理に特有のテクスチャ等の問題が発生する。
図10(c)は、濃度範囲によって単にディザ処理と誤差拡散処理とを切り替えた場合の印刷結果の一例を示す。この例においては、例えばハイライト部と中間調部との間や、中間調部をシャドウ部との間において、本例のようにノイズ使用率や誤差使用率を徐々に変化させる切り替え処理を行わずに、ディザ処理と誤差拡散処理とを切り替えている。このように、適切な切り替え処理を行わずに、単にディザ処理と誤差拡散処理とを切り替える場合、切り替えにより境界線が発生する等の問題が生じる。
図10(d)は、本例による印刷結果の一例を示す。図から分かるように、本例によれば、例えば、ハイライト部やシャドウ部におけるドット遅延を適切に抑えることができる。また、中間調においてテクスチャが発生することや、切り替えにより境界線が発生する等も適切に防ぐことができる。そのため、本例によれば、量子化の処理をより適切に行うことができる。
ここで、以上において説明したのと同一又は同様の量子化の処理は、多階調の量子化にも適用可能である。そこで、以下において、多階調の量子化の処理について説明する。
多階調の量子化の処理とは、例えば、画像中の各画素の色の濃度を示す濃度値を3段階以上の離散的な値に変換する処理である。この3段階以上の離散的な値は、例えば、最小の濃度値を量子化した結果に対応する値である最低量子化値と、最低量子化値よりも大きな離散的な値である2段階以上の量子化結果値とを少なくとも含む。2段階以上の量子化結果値は、例えば、最小の濃度値よりもそれぞれ所定量以上大きな値を量子化した結果に対応する値である。
多階調の量子化は、例えば図1(a)に示した構成と同一又は同様の構成により行うことができる。この場合、画像処理装置12は、画像形成処理中において、予め設定されたプログラムに基づき、多階調の量子化の処理を行う。また、印刷装置14は、ドットサイズの異なる複数種類のインク滴を吐出することで多階調の印刷を行う。この場合、量子化の結果のうち、最低量子化値は、ドットを形成しない状態と対応付けられる。また、各段階の量子化結果値は、それぞれのドットサイズと対応付けられる。
図11は、本発明の一実施形態に係る多階調の量子化の処理の第1の例を示すフローチャートである。印刷装置14は、予め設定されたプログラムに従って、以下の処理を行う。
尚、以下において説明する構成において、印刷装置14は、大(Large)、中(Middle)、小(Small)の3種類のサイズのドットに対応するインク滴を吐出する。この場合、量子化の結果として取り得る値は、ドットを形成しない状態に対応する最低量子化値と、大、中、小のドットサイズにそれぞれ対応する3段階の量子化結果値とを含む合計4段階の離散的な値となる。また、この4段階の離散的な値は、例えば、2ビットの数値00、01、10、11と対応付けられる。
また、印刷装置14は、例えば、インクジェットヘッドのノズルから吐出する液滴のサイズを変化させることにより、ドットサイズの異なる複数種類のインク滴を吐出する。印刷装置14は、媒体上の1箇所へ重ねて着弾させるインク滴の数を変化させることにより、ドットサイズの異なる複数種類のインク滴を吐出してもよい。
本フローチャートにおいて、画像処理装置12は、ステップS602とS616との間で、Y座標を順次変化させるループを実行する。このループにおいて、画像処理装置12は、0から画像高さまでの間で、Yの値を1ずつ増加させる。また、ステップS604とS614との間で、X座標を順次変化させるループを実行する。このループにおいて、画像処理装置12は、0から画像幅までの間で、Xの値を1ずつ増加させる。尚、本フローチャートにおけるこのループの実行は、図2に示したフローチャートにおいて最終画素判定処理S114を行うのと同一又は同様の処理である。
そして、画像処理装置12は、量子化を行うべき画素を順次選択する(画素選択処理S606)。このステップは、例えば、図2に示したフローチャートにおける画素選択処理S102と同一又は同様の処理である。画像処理装置12は、例えば、上記のループに従い、画素のラインを順次選択し、選択したライン中の画素を所定の処理方向に沿って、順次選択する。また、画像処理装置12は、更に、この処理方向を、処理するライン毎に切り替える。例えば、画像処理装置12は、奇数ラインにおいては左から右へ、偶数ラインにおいては右から左へ、順次画素を選択する。これにより、画像処理装置12は、量子化の処理を、双方向処理により行う。
続いて、画像処理装置12は、多階調の量子化の処理全体に対する入力値である画素の濃度値に基づき、以降に行う処理において各ドットサイズに対応する入力値としてそれぞれ用いる値である段階毎入力値を算出する(入力値算出処理S608)。この処理において、画像処理装置12は、予め設定されたドットサイズ決定テーブルに基づき、画素選択処理S606で順次選択される画素の濃度値に応じて、それぞれのドットサイズに対応する段階毎入力値を算出する。
尚、ドットサイズ決定テーブルについては、後に更に詳しく説明する。また、以下の説明においては、大サイズのドットサイズ(以下、Largeドットとする)に対応する段階毎入力値を、Lカーブ値とする。中サイズのドットサイズ(以下、Middleドットとする)に対応する段階毎入力値を、Mカーブ値とする。小サイズのドットサイズ(以下、Smallドットとする)に対応する段階毎入力値を、Sカーブ値とする。
また、本例の入力値算出処理S608において、画像処理装置12は、更に、画素選択処理S606で選択される画素に対する多階調の量子化の結果となる出力値(出力ドットサイズ)の値を、ドットを形成しない状態に対応する値である0に初期化する。
続いて、画像処理装置12は、誤差補正済入力値及びノイズ補正済閾値を算出する(入力値閾値補正処理S610)。本例において、画像処理装置12は、各ドットサイズに対応する段階毎入力値に対し、図2を用いて説明した使用率決定処理S104、誤差補正済入力値算出処理S106、ノイズ補正済閾値算出処理S108と同一又は同様の処理を行う。これにより、画像処理装置12は、ドットサイズ毎に、それぞれ別の誤差補正済入力値及びノイズ補正済閾値を算出する。
続いて、画像処理装置12は、量子化を実行する(量子化実行処理S612)。本例の量子化実行処理S612において、画像処理装置12は、例えば、各ドットサイズに対応する段階毎入力値、誤差補正済入力値、及びノイズ補正済閾値を用いて、ドットサイズ毎に行う処理である段階毎判定処理を行う。そして、それらの結果に基づき、多階調の量子化の結果を決定する。これにより、画像処理装置12は、例えば、画素選択処理S606で順次選択される画素の濃度値に対し、当該画素に対応するノイズ使用率に応じてディザマトリクスノイズを使用し、かつ、当該画素に対応する誤差使用率に応じて累積誤差を使用して、多階調の量子化を行う。
また、本例において、画像処理装置12は、量子化実行処理S612の中で、誤差の分配処理を行う。画像処理装置12は、誤差の分配処理を、例えば、量子化実行処理S612と分離して、別のステップにおいて実行してもよい。
そして、量子化実行処理S612の後、画像処理装置12は、ステップS614へ進み、次の回のループの処理を進める。本例によれば、多階調の量子化の処理を適切に行うことができる。
続いて、図11を用いて説明した各処理について、更に詳しく説明する。図12は、入力値算出処理S608及び入力値閾値補正処理S610について更に詳しく説明する図である。図12(a)は、入力値算出処理S608で用いるドットサイズ決定テーブルの一例を示すグラフである。
ドットサイズ決定テーブルは、濃度毎に出力するドットサイズの割合を示すデータであり、例えば、ある濃度における単位面積あたりのドット数について、それぞれのドットサイズが占める割合を決定する。この場合、それぞれのドットサイズを合計した割合は、0から100%となる。また、ドットサイズ決定テーブルは、段階毎入力値算出用データの一例である。段階毎入力値算出用データは、例えば、画素の濃度値に応じて単位面積あたりに形成すべきインク滴のドット数を、それぞれのドットサイズ毎に定めるデータである。
本例において、ドットサイズ決定テーブルは、グラフに示したように、画素の濃度値に対し、Largeドット、Middleドット、Smallドットのそれぞれに対応する段階毎入力値を定める。このようなドットサイズ決定テーブルに基づき、入力値算出処理S608において、画像処理装置12は、画素選択処理S606で順次選択される画素の濃度値に対し、それぞれのドットサイズに対応する段階毎入力値を、ドットサイズ決定テーブルにおいて当該ドットサイズに対して当該濃度値と対応付けられているドット数に応じて算出する。
尚、本例のドットサイズ決定テーブルにおいて、所定の濃度N1以下において、Mカーブ値及びLカーブ値は、0である。また、N1よりも大きな所定の濃度N2以下において、Lカーブ値は、0である。
Sカーブ値は、濃度値が0と、N1又はその近傍との間の範囲において、所定の傾きm1で漸増し、かつ、濃度値がそれ以上となる範囲で、m1よりも小さな傾きm2で漸増する。Mカーブ値は、濃度値がN1と、N2又はその近傍との間の範囲において、所定の傾きm3で漸増し、かつ、濃度値がそれ以上となる範囲で、m3よりも小さな傾きm4で漸増する。Lカーブ値は、濃度値がN2と、N2よりも大きな所定の濃度N3との間の範囲において、所定の傾きm5で漸増し、かつ、濃度値がそれ以上となる範囲で、m5よりも大きな傾きm6で漸増する。
また、Sカーブ値と、Mカーブ値は、N1とN2との間の濃度値C1において交わる。Sカーブ値と、Lカーブ値は、N3よりも大きな濃度値C2において交わる。また、Mカーブ値と、Lカーブ値は、C2よりも大きな濃度値C3において交わる。その結果、濃度値がC1未満の範囲では、Sカーブ値>Mカーブ値>Lカーブ値となる。濃度値がC1からC2の範囲では、Mカーブ値>Sカーブ値>Lカーブ値となる。濃度値がC2からC3の範囲では、Mカーブ値>Lカーブ値>Sカーブ値となる。また、濃度値がC3を超える範囲では、Lカーブ値>Mカーブ値>Sカーブ値となる。
図12(b)は、入力値閾値補正処理S610について説明する図であり、誤差使用率Re、及びノイズ使用率Rnと、段階毎入力値とを対応付けるグラフを示す。本例において、画像処理装置12は、入力値算出処理S608において算出される段階毎入力値であるLカーブ値、Mカーブ値、Sカーブ値のそれぞれに対し、グラフに示した関係に基づき、対応する誤差使用率Re及びノイズ使用率Rnを算出する。そして、画像処理装置12は、算出した誤差使用率Re及びノイズ使用率Rnに基づき、各ドットサイズ毎に、誤差補正済入力値、及びノイズ補正済閾値を算出する。
尚、図12(b)に示したグラフは、例えば、図4に示したグラフに対し、入力値Inの代わりに段階毎入力値を用い、図12(a)に合わせて表示の向きを変えたものである。このように構成すれば、例えば、各ドットサイズに対応する誤差使用率Re及びノイズ使用率Rnを適切に算出できる。
また、本例において、画像処理装置12は、例えば、全てのドットサイズに対し、同じグラフに基づき、誤差使用率Re及びノイズ使用率Rnを算出する。この場合、グラフ中の各パラメータ(Hes、Hn、・・・等)としては、例えば、図4と同じパラメータを用いることができる。また、各パラメータを、ドットサイズ毎に変更してもよい。
図13は、入力値閾値補正処理S610におけるより具体的な処理の一例を示すフローチャートである。本例の入力値閾値補正処理S610において、画像処理装置12は、先ず、例えば、入力値算出処理S608で算出された段階毎入力値であるLカーブ値、Mカーブ値、及びSカーブ値、及び図12(b)においてグラフに示した関係式に基づき、各ドットサイズに対応するノイズLカーブ値、Mカーブ値、及びSカーブ値使用率、及び誤差使用率を算出する(ノイズ使用率算出処理S620、誤差使用率算出処理S622)。これらの処理において、画像処理装置12は、例えば、図6及び図5を用いて説明した処理において、入力値Inに代えてLカーブ値、Mカーブ値、及びSカーブ値のそれぞれを用いることにより、ドットサイズ毎のノイズ使用率及び誤差使用率を算出する。
そして、算出した誤差使用率に基づき、Lカーブ値、Mカーブ値、及びSカーブ値のそれぞれを補正することにより、各ドットサイズに対応する誤差補正済入力値を算出する(誤差補正済入力値算出処理S624)。また、算出したノイズ使用率に基づき、予め設定された閾値を補正することにより、ノイズ補正済閾値を算出する(ノイズ補正済閾値算出処理S626)。
尚、本例の誤差補正済入力値算出処理S624において、画像処理装置12は、ドットサイズ毎に用意された累積誤差を用いて、誤差補正済入力値を算出する。また、誤差補正済入力値算出処理S624及びノイズ補正済閾値算出処理S626において、画像処理装置12は、例えば、図1(b)を用いて説明した処理において、入力値Inに代えてLカーブ値、Mカーブ値、及びSカーブ値のそれぞれを用いることにより、各ドットサイズに対応する誤差補正済入力値、及びノイズ補正済閾値を算出する。これにより、画像処理装置12は、ドットサイズ毎の誤差補正済入力値及びノイズ補正済閾値を取得し、次の量子化実行処理S612へ進む。
図14は、量子化実行処理S612における処理の一例を示すフローチャートである。本例において、画像処理装置12は、Largeドットに対応する量子化及び誤差配分の処理であるLarge用処理S640、Middleドットに対応する量子化及び誤差配分の処理であるMiddle用処理S650、及びSmallドットに対応する量子化及び誤差配分の処理であるSmall用処理S660を、この順番で行う。
これにより、画像処理装置12は、各ドットサイズに対応する量子化の処理の優先順位について、ドットサイズのより大きいものに対応する処理を優先する。より具体的には、例えば、本例のように、Largeドット、Middleドット、及びSmallドットの3種類のドットサイズが設定されている場合、画像処理装置12は、Largeドットに対応する量子化の処理の優先度を最も高く、Smallドットに対応する量子化の処理の優先度を最も低く設定して、多階調の量子化の処理を行う。
続いて、Large用量子化処理S642、Middle用量子化処理S652、及びSmall用量子化処理S662の内容について、説明する。本例のLarge用処理S640において、画像処理装置12は、Large用量子化処理S642、及びLarge用誤差分配処理S644を行う。Large用量子化処理S642は、Largeドットに対応する段階毎判定処理の一例である。Large用量子化処理S642において、画像処理装置12は、例えば、Largeドットに対応する誤差補正済入力値及びノイズ補正済閾値を用いて、2階調の量子化の処理を行う。これにより、画像処理装置12は、Largeドットに対応する段階毎入力値であるLカーブ値に対し、2階調の量子化の処理を行う。また、本例において、画像処理装置12は、Large用量子化処理S642の中で、更に、量子化により生じる誤差値の設定を行う。
Large用誤差分配処理S644は、Largeドットに対応する段階毎累積誤差算出処理の一例である。Large用誤差分配処理S644において、画像処理装置12は、例えば、Large用量子化処理S642において設定された誤差値を、Largeドットの専用の誤差として、周辺の画素へ分配する。これにより、画像処理装置12は、Large用量子化処理S642の結果に応じて累積誤差を更新し、Largeドットに対応する新たな累積誤差を算出する。
また、Middle用処理S650において、画像処理装置12は、Large用処理S640と同様にして、Middle用量子化処理S652、及びMiddle用誤差分配処理S654を行う。Middle用量子化処理S652、及びMiddle用誤差分配処理S654は、Largeドットに対応する各パラメータの代わりにMiddleドットに対応する各パラメータを使用する以外は、Large用量子化処理S642、及びLarge用誤差分配処理S644と、同一の処理である。また、この場合、Middle用量子化処理S652、及びMiddle用誤差分配処理S654は、Middleドットに対応する段階毎判定処理、及び段階毎累積誤差算出処理の一例となる。
また、Small用処理S660において、画像処理装置12は、Large用処理S640と同様にして、Small用量子化処理S662、及びSmall用誤差分配処理S664を行う。Small用量子化処理S662、及びSmall用誤差分配処理S664は、Largeドットに対応する各パラメータの代わりにSmallドットに対応する各パラメータを使用する以外は、Large用量子化処理S642、及びLarge用誤差分配処理S644と、同一の処理である。また、この場合、Small用量子化処理S662、及びSmall用誤差分配処理S664は、Smallドットに対応する段階毎判定処理、及び段階毎累積誤差算出処理の一例となる。
尚、本例において、画像処理装置12は、Large用誤差分配処理S644、Middle用誤差分配処理S654、Small用誤差分配処理S664のそれぞれで用いる累積誤差バッファとして、各ドットサイズ毎に別に設けた累積誤差バッファを使用する。例えば、Large用誤差分配処理S644において、画像処理装置12は、Large用量子化処理S642で発生した誤差を、Largeドット用の累積誤差バッファに蓄積する。Middleドット、及びSmallドットについても同様である。
続いて、Large用量子化処理S642について、更に詳しく説明する。図15は、Large用量子化処理S642における処理の一例を示すフローチャートである。本例のLarge用量子化処理S642において、画像処理装置12は、先ず、多階調の量子化の結果となる出力値について、ドットを形成しない場合に対応する値である0以外の値に設定されているか否かを判定する(S702)。そして、出力値が0以外の値に設定されている場合(S702:Yes)、出力値の変更を行わず、誤差値の設定のみを行う(S704)。このステップS704において、画像処理装置12は、誤差値を、誤差補正済入力値In’に設定する。そして、誤差値の設定後、ステップS720へ進む。
尚、本例において、S702で判定の対象となる出力値は、量子化実行処理S612(図11参照)の前に、入力値算出処理S608(図11参照)において、0に初期化される。そのため、Large用量子化処理S642、Middle用量子化処理S652、及びSmall用量子化処理S662のうち、少なくとも最初に実行されるLarge用量子化処理S642の開始時点において、出力値は0になっている。これにより、画像処理装置12は、少なくともLarge用量子化処理S642のステップS702において、出力値が0に設定されていると判定し、以降で説明する2階調の量子化の処理を行う。
出力値が0に設定されている場合(S702:No)、画像処理装置12は、更に、入力値Inと最大入力値MaxInとが等しいか否かを判定する(最大値判定処理S706)。そして、等しいと判定した場合(S706:Yes)、出力値を、Largeドットに対応する値に設定する(S708)。また、出力値の設定と共に、誤差値を、誤差補正済入力値In’と最大入力値MaxInの差であるIn’−MaxInに設定する。そして、これらの値の設定後、ステップS720へ進む。
また、S706において、入力値Inと最大入力値MaxInとが等しくないと判定した場合(S706:No)、画像処理装置12は、更に、入力値Inと、最小入力値MinInの値である0とが等しいか否かを判定する(最小値判定処理S710)。そして、等しいと判定した場合(S710:Yes)、出力値を、0に設定する(S712)。また、出力値の設定と共に、誤差値を、誤差補正済入力値In’に設定する。そして、これらの値の設定後、ステップS720へ進む。
また、S710において、入力値Inと0とが等しくないと判定した場合(S710:No)、画像処理装置12は、誤差補正済入力値In’がノイズ補正済閾値Th’よりも大きいか否かを判定する(S714)。そして、大きいと判定した場合(S714:Yes)、出力値を、Largeドットに対応する値に設定する。また、誤差値を、In’−MaxInに設定する(S716)。また、S714において、誤差補正済入力値In’がノイズ補正済閾値Th’以下であると判定した場合(S714:No)、出力値を0に、誤差値をIn’にそれぞれ設定する(S716)。そして、これらの値の設定後、ステップS720へ進む。
以上の処理の後、画像処理装置12は、Large用量子化処理S642の結果として、上記の処理の後に設定されている出力値と、誤差値とを取得する(S720)。このステップS720は、量子化値取得処理の一例である。そして、これらの値を、後の処理へ受け渡す。後の処理においては、例えばLarge用誤差分配処理S644において、誤差値に基づき、誤差の分配を行う。本例によれば、Large用量子化処理S642を適切に行うことができる。また、Large用誤差分配処理S644において、量子化で発生した誤差の周辺画素への分配を適切に行うことができる。
ここで、本例において、画像処理装置12は、Middle用量子化処理S652、及びSmall用量子化処理S662についても、図15に示したフローチャートに従った処理を行う。例えば、Middle用量子化処理S652において、画像処理装置12は、Largeドットに対応するパラメータに代えてMiddleドットに対応するパラメータを使用する以外は、上記と同様にして処理を行う。この場合、Middle用量子化処理S652のS708、S716において、画像処理装置12は、出力値を、Middleドットに対応する値に設定する。また、Small用量子化処理S662において、画像処理装置12は、Largeドットに対応するパラメータに代えてSmallドットに対応するパラメータを使用する以外は上記と同様にして処理を行う。この場合、Small用量子化処理S662のS708、S716において、画像処理装置12は、出力値を、Smallドットに対応する値に設定する。
そして、この場合、Large用量子化処理S642以降に行われるMiddle用量子化処理S652、及びSmall用量子化処理S662においては、先に行われた処理において出力値が0以外の値に設定されているか否かに応じて、S702における判定の結果が変わる。また、その結果、Middle用量子化処理S652、及びSmall用量子化処理S662において、画像処理装置12は、出力値が0以外の値に設定されているか否かに応じて、行う処理を変更する。以下、この点について、更に詳しく説明する。
例えば、Large用量子化処理S642の処理結果が、ドットを形成する場合に対応する結果(ドットがONの状態)であり、画像処理装置12が、出力値を、Largeドットに対応する値に設定した場合、Middle用量子化処理S652、及びSmall用量子化処理S662中のステップS702において、画像処理装置12は、出力値が0以外であると判定し、ステップS704へ進み、2階調の量子化を省略する。この場合、Middle用量子化処理S652、及びSmall用量子化処理S662の処理結果は、強制的に、ドットを形成しない場合に対応する結果(ドットがOFFの状態)となる。
また、Large用量子化処理S642の処理結果が、ドットを形成しない場合に対応する結果(OFF)であり、Large用量子化処理S642の後においても出力値が0のままである場合、Middle用量子化処理S652において、画像処理装置12は、ステップS706以降へ進み、Middleドット用の誤差補正済入力値及びノイズ補正済閾値を用い、Large用量子化処理S642と同様の処理を行う。これにより、画像処理装置12は、MiddleドットのON/OFFの判定を行う。
そして、Middleドットの量子化結果がONになった場合、上記と同様にして、Smallドットの量子化結果は、強制的にOFFとなる。また、Middleドットの量子化結果がOFFになった場合、Small用量子化処理S662において、画像処理装置12は、ステップS706以降へ進み、Smallドット用の誤差補正済入力値及びノイズ補正済閾値を用い、Large用量子化処理S642と同様の処理を行う。これにより、画像処理装置12は、SmallドットのON/OFFの判定を行う。
そのため、本例においては、例えば、いずれかのドットサイズに対応する段階毎判定処理(Large用量子化処理S642、Middle用量子化処理S652、又はSmall用量子化処理S662)において、その処理に対応するドットサイズのインク滴のドットを形成すると判定された場合、そのドットサイズよりも小さなドットサイズに対応する段階毎判定処理において、画像処理装置12は、画素の濃度値にかかわらず、ドットを形成しないと判定する。そして、例えば、いずれかの段階毎判定処理においてドットを形成すると判定された場合、画像処理装置12は、ドットを形成すると判定された段階毎判定処理のうち、最大のドットサイズに対応する量子化結果値を、量子化の結果に決定する。
また、いずれの段階毎判定処理においてもドットを形成すると判定されなかった場合、画像処理装置12は、ドットを形成しない場合に対応する値を、量子化の結果に決定する。これにより、量子化実行処理S612において、画像処理装置12は、Large用量子化処理S642、Middle用量子化処理S652、及びSmall用量子化処理S662の結果に基づき、各ドットサイズにそれぞれ対応する離散的な値のいずれかの値を、量子化の結果に決定し、出力値に設定する。本例によれば、多階調の量子化の処理を適切に行うことができる。
尚、例えば従来の方法により多階調の量子化を行う場合、画素の濃度によって、ドットサイズが異なるインク滴のドットが混在して形成される場合がある。例えば、本例のように、Largeドット、Middleドット、及びSmallドットの3種類のドットサイズを用いる場合、画素の濃度が小さい範囲では、Smallドットのみを用いて印刷が行われる。そして、濃度が大きくなると、Smallドットと、Middleドットが混在して形成されることとなる。この場合、サイズの異なるドットが混ざり始める濃度において、例えば、よりサイズの大きなMiddleドットだけで見ると、ハイライト部の濃度値にあたることとなる。この場合、量子化の処理において、例えば誤差拡散処理のみを行うとすれば、ドットの遅延が発生し、画質が低下することとなる。そのため、多階調の量子化においては、サイズの異なるドットが混ざり始める部分で発生するドットの遅延についても、適切に解消することが望まれる。
これに対し、本例においては、例えば、Large用量子化処理S642、Middle用量子化処理S652、及びSmall用量子化処理S662のそれぞれにおいて、処理の開始時点において出力値が0であった場合、画像処理装置12は、最低量子化値である0と、対応するドットサイズに対応する値との2階調の間での量子化の処理を行う。また、この2階調の量子化の処理において、処理の対象となる画素に対応するノイズ使用率に応じてディザマトリクスノイズを使用し、かつ、当該画素に対応する誤差使用率に応じて累積誤差を使用する。そのため、本例によれば、例えば、多階調の量子化を行う場合においても、例えば、ディザ処理及び誤差拡散処理のそれぞれの処理が得意とする部分を活かした量子化の処理を、適切に行うことができる。
また、この場合、ハイライト部におけるドットの遅延の発生を適切に抑えることができるため、例えば、サイズの異なるドットが混ざり始める部分においても、ドットの遅延の発生を適切に解消できる。また、これにより、例えば、ドットサイズの変化を滑らかにできる。更には、ディザ処理と誤差拡散処理とを濃度値によって単に切り替える場合等と異なり、ディザ処理と誤差拡散処理の切り替え部分で境界線が発生することもない。そのため、本例によれば、例えば、多階調の量子化をより適切に行うことができる。これにより、例えば、画素の濃度値に合わせて、形成すべきドットサイズを適切に設定できる。また、多階調の量子化をより適切に行い、高精細な高い品質の画像を適切に印刷できる。
図16は、量子化実行処理S612における処理の変形例を示すフローチャートである。尚、以下に説明する点を除き、図16において、図14と同じ符号を付したステップは、図14におけるステップと同一又は同様の処理を行う。
本例において、画像処理装置12は、多階調の量子化の結果を示す出力値の設定を、Large用量子化処理S642、Middle用量子化処理S652、Small用量子化処理S662の外部の別のステップにおいて行う。
例えば、Large用処理S640において、画像処理装置12は、Large用量子化処理S642、及びLarge用誤差分配処理S644を行った後、Large用量子化処理S642の結果の判定を行う(量子化結果判定処理S646)。そして、Largeドットについての量子化結果がOFF、すなわち、誤差補正済入力値がノイズ補正済閾値以下であった場合(S646:Yes)、出力値の値を変更することなく、次のMiddle用処理S650へ進む。また、Largeドットについての量子化結果がON、すなわち、誤差補正済入力値がノイズ補正済閾値より大きかった場合(S646:No)、出力値を、Largeドットに対応する値に設定し(出力値設定処理S648)、次のMiddle用処理S650へ進む。
尚、本例のLarge用処理S640において、画像処理装置12は、例えば、図15を用いて説明した処理のように出力値の変更を行う代わりに、量子化結果がON又はOFFのいずれであったかを示す情報を、後の処理へ受け渡す。量子化結果判定処理S646において、画像処理装置12は、この情報に基づき、量子化結果を判定する。
Middle用処理S650において、画像処理装置12は、Large用処理S640と同様にして、Middle用量子化処理S652、Middle用誤差分配処理S654、量子化結果判定処理S656、及び出力値設定処理S658を行う。Middle用量子化処理S652、Middle用誤差分配処理S654、量子化結果判定処理S656、及び出力値M設定処理S658のそれぞれは、Largeドットに対応する各パラメータの代わりにMiddleドットに対応する各パラメータを使用する以外は、Large用量子化処理S642、Large用誤差分配処理S644、量子化結果判定処理S646、及び出力値設定処理S648のそれぞれと、同一又は同様の処理である。
また、Small用処理S660において、画像処理装置12は、Large用処理S640と同様にして、Small用量子化処理S662、Small用誤差分配処理S664、量子化結果判定処理S666、出力値設定処理S668、及び出力値0設定処理S670を行う。このうち、Small用量子化処理S662、Small用誤差分配処理S664、量子化結果判定処理S666、及び出力値設定処理S668のそれぞれは、Largeドットに対応する各パラメータの代わりにSmallドットに対応する各パラメータを使用する以外は、Large用量子化処理S642、Large用誤差分配処理S644、量子化結果判定処理S646、及び出力値設定処理S648のそれぞれと、同一又は同様の処理である。
また、Small用処理S660の量子化結果判定処理S666において、Smallドットについての量子化結果がOFFであった場合(S666:Yes)、画像処理装置12は、出力値0設定処理S670に進み、出力値を、ドットを形成しない場合に対応する値である0に設定する。本例においても、多階調の量子化の処理を適切に行うことができる。
図17は、多階調の量子化の処理の第2の例を示すフローチャートであり、図11におけるステップS604とS614との間で実行される処理の変形例を示す。尚、以下に説明する点を除き、図17において、図11〜図16と同じ符号を付したステップは、図11〜図16におけるステップと同一又は同様の処理を行う。
本例において、画像処理装置12は、S604に続いて、画素選択処理S606及び入力値算出処理S608を行う。これらの処理は、例えば、図11を用いて説明した画素選択処理S606及び入力値算出処理S608と同じ処理であってよい。また、画像処理装置12は、例えば入力値算出処理S608において、図11の処理とは異なるドットサイズ決定テーブルを用いて、Lカーブ値、Mカーブ値、Sカーブ値等を算出してもよい。
続いて、画像処理装置12は、Large用処理S640、Middle用処理S650、及びSmall用処理S660を並列に行う。これらの処理は、各ドットサイズに対応する量子化及び誤差配分の処理である。画像処理装置12は、これらの処理において、例えば図14を用いて説明したLarge用処理S640、Middle用処理S650、及びSmall用処理S660と同様に、それぞれのドットサイズに対応する量子化処理と、誤差配分処理とを行う。
この量子化処理において、画像処理装置12は、例えば、図15を用いて説明したLarge用量子化処理S642と同様の処理を行う。但し、この場合、画像処理装置12は、例えば、図15におけるステップS702、S704を省略し、ステップS706から処理を開始する。また、S708、及びS716に対応する処理において、画像処理装置12は、例えば、出力値を直接変更する代わりに、量子化処理の出力結果を示す別のパラメータに、各ドットサイズに対応する値を設定する。
尚、本例において、各ドットサイズに対応する値とは、Largeドット、Middleドット、及びSmallドットのそれぞれに対応する値である。また、本例において、Largeドットに対応する値は、Middleドットに対応する値よりも大きな値である。Middleドットに対応する値は、Smallドットに対応する値よりも大きな値である。Smallドットに対応する値は、ドットを形成しない状態を示す値である0よりも大きな値である。また、Large用処理S640、Middle用処理S650、及びSmall用処理S660において、画像処理装置12は、例えば、図14におけるLarge用誤差分配処理S644、Middle用誤差分配処理S654、及びSmall用誤差分配処理S664と同様に、誤差配分の処理を行う。
これらの並列処理の後、画像処理装置12は、次の処理を行うS682へ進み、入力値算出処理S608において0に初期化した出力値と、Large用処理S640中の量子化処理の出力結果とを比較する(S682)。そして、量子化処理の出力結果の方が出力値よりも大きい場合(S682:Yes)、出力値を、Largeドットに対応する値に設定し(S684)、次のステップS614へ進む。
また、S682において、量子化処理の出力結果が出力値以下であった場合(S682:No)、画像処理装置12は、出力値と、Middle用処理S650中の量子化処理の出力結果とを比較する(S686)。そして、量子化処理の出力結果の方が出力値よりも大きい場合(S686:Yes)、出力値を、Middleドットに対応する値に設定し(S688)、次のステップS614へ進む。
また、S686において、量子化処理の出力結果が出力値以下であった場合(S686:No)、画像処理装置12は、出力値と、Small用処理S650中の量子化処理の出力結果とを比較する(S690)。そして、量子化処理の出力結果の方が出力値よりも大きい場合(S690:Yes)、出力値を、Smallドットに対応する値に設定し(S692)、次のステップS614へ進む。また、S690において、量子化処理の出力結果が出力値以下であった場合(S690:No)、画像処理装置12は、出力値を初期化値である0に保ったまま、次のステップS614へ進む。
このように構成した場合、画像処理装置12は、多階調の量子化の処理のそれぞれ一部として、2階調の量子化の処理を、Largeドット用処理S640、Middleドット用処理S650、及びSmallドット用処理S660のそれぞれにおいて実行する。そして、それぞれのドットサイズ毎の処理の後、それぞれの処理の出力結果に基づく比較を順次行い、ドットがONの状態となったドットサイズのうち、最も大きなドットサイズに対応する値を、多階調の量子化の処理の出力値に設定する。また、全てのドットサイズに対応する処理においてドットが配置されない結果(OFF)となった場合、出力値として、ドットを形成しない状態に対応する値0を設定する。本例においても、例えば、ディザ処理及び誤差拡散処理のそれぞれの処理が得意とする部分を活かして、多階調の量子化の処理を適切に行うことができる。
以下、本発明の更なる変形例について説明する。図18は、算出したノイズ使用率を補正する処理の一例を示すフローチャートである。画像処理装置12は、このフローチャートの処理を、例えば、Largeドット用処理S640、Middleドット用処理S650、及びSmallドット用処理S660の中で、量子化の処理の前に実行する。
尚、以下に説明する処理は、例えば、図17を用いて説明した多階調の量子化の処理に対して適用できる。また、例えば、図11〜16を用いて説明した多階調の量子化の処理に対して適用してもよい。
ディザマトリクスノイズ及び累積誤差の両方を用いる2階調の量子化の処理(ハイブリッド誤差拡散処理)を、例えば図17を用いて説明した処理のように、各ドットサイズ毎に行った場合、ドットサイズによって,誤差使用率及びノイズ使用率が異なり、ドットの配置に若干の相違が生じる場合がある。そして、その結果、干渉が生じ、印刷結果においてドットが玉状となる部分が生じる場合がある。
これに対しては、例えば、各ドットサイズ毎のノイズ使用率の差を小さくする補正を行うことにより、玉状となる部分の発生を抑えることができる。この補正の処理は、例えば、予め設定された関係式から算出したノイズ使用率に対し、処理中のドットサイズ以外のドットサイズに対応するカーブ値に応じて、ノイズ使用率を変動させることで実行できる。
より具体的には、例えば、Largeドット用処理S640の中でノイズ使用率の補正を行う場合、画像処理装置12は、図18のフローチャートに示すように、先ず、図13を用いて説明したノイズ使用率算出処理S620で算出したノイズ使用率に対し、ノイズ使用率が最大値であるか否かを判定する(S802)。そして、最大値ではない場合(S802:No)、Middleドット及びSmallドットのそれぞれに対応する段階毎入力値であるMカーブ値及びSカーブ値のそれぞれについて、シャドウ側ノイズ使用率最大濃度値Snよりも大きいか否かを判定する(S804)。
そして、いずれかのカーブ値がシャドウ側ノイズ使用率最大濃度値Snよりも大きい場合(S804:Yes)、Largeドットに対応するノイズ使用率に対し、予め設定された使用率加算値RnAddを加算する。これにより、画像処理装置12は、処理中のドットサイズ以外のカーブ値がシャドウ側ノイズ使用率最大濃度値Snよりも大きい場合、ノイズ使用率算出処理S620で算出したノイズ使用率を、少し大きな値に補正する(S806)。そして、補正後のノイズ使用率を、量子化の処理で用いる新たなノイズ使用率に決定する(S808)。
尚、S802において、ノイズ使用率が最大値であると判定した場合(S802:Yes)、画像処理装置12は、ノイズ使用率の補正を行わず、そのままのノイズ使用率を、量子化の処理で用いるノイズ使用率に決定する(S808)。また、Middleドット用処理S650の中でノイズ使用率の補正を行う場合、S804において、画像処理装置12は、Lカーブ値又はSカーブ値のいずれかがシャドウ側ノイズ使用率最大濃度値Snよりも大きいか否かを判定する。Smallドット用処理S660の中でノイズ使用率の補正を行う場合、S804において、画像処理装置12は、Lカーブ値又はMカーブ値のいずれかがシャドウ側ノイズ使用率最大濃度値Snよりも大きいか否かを判定する。
このようにした場合、例えば、処理中のドットサイズについて誤差使用率が大きく、ノイズ使用率が小さな状態であり、他のドットサイズについてはノイズ使用率が大きい場合に、処理中のドットサイズのノイズ使用率を、少し大きな値に適切の補正できる。また、少し大きな値のノイズ使用率を使用することにより、各ドットサイズに対応するノイズ使用率の差が小さくなり、均一化する。そのため、本例によれば、例えば、ドットの配置にドットサイズ毎の相違が生じることを適切に抑えることができる。また、これにより、印刷結果においてドットが玉状となる部分が生じることを適切に抑えることができる。
図19は、ノイズ使用率の補正を行う範囲の一例を、ドットサイズ決定テーブルの例と共に示す。尚、以下に説明するドットサイズ決定テーブルは、図12を用いて説明したドットサイズ決定テーブルの変形例であり、例えば図17を用いて説明した多階調の量子化の処理において使用できる。また、これらのドットサイズ決定テーブルは、例えば、図11〜図16を用いて説明した多階調の量子化の処理において使用してもよい。
図19(a)は、ドットサイズ決定テーブルの一例を示す。図19(b)は、ドットサイズ決定テーブルの他の例を示す。ドットサイズ決定テーブルは、例えば印刷装置の性能、画像形成処理の内容、又は求める印刷結果等に応じて、様々に変更可能である。そのため、図17を用いて説明した多階調の量子化の処理においては、図12(a)に示したドットサイズ決定テーブルに代えて、図19(a)のようなドットサイズ決定テーブルを用いることもできる。
この場合、例えば、図17における入力値算出処理S608において、画像処理装置12は、入力値である濃度値に応じて、Largeドットカーブが示す値を、Lカーブ値に設定する。また、Middleドットカーブが示す値と、Lカーブ値とを加算した値を、Mカーブ値に設定する。Smallドットカーブが示す値と、Mカーブ値とを加算した値を、Sカーブ値に設定する。
また、ドットサイズ決定テーブルとしては、例えば、図19(b)のようなドットサイズ決定テーブルを用いることもできる。この場合、例えば、図17における入力値算出処理S608において、画像処理装置12は、図11における入力値算出処理S608と同一又は同様にして、Lカーブ値、Mカーブ値、及びSカーブ値を算出する。
以上のようにした場合も、Lカーブ値、Mカーブ値、及びSカーブ値をそれぞれ適切に算出できる。また、これら場合、画像処理装置12は、各図において、網掛けの四角で囲った範囲において、ノイズ使用率の補正を行う。以上のようにすれば、例えば、ノイズ使用率の補正を適切に行うことができる。また、これにより、高い品質の印刷をより適切に行うことができる。
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。