以下、添付の図面を参照して、本発明を実施する形態について説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
(用語の定義)
以下の各実施形態の説明では、生成過程または生成後の閾値マトリクスを「M(x,y)」と表記するものとする。閾値マトリクスM(x,y)は二次元の配列であり、x、yは座標を表す。閾値マトリクスのx方向のサイズを「Sx」、y方向のサイズを「Sy」とし、本実施形態では、Sxを256画素、Syを256画素とする。ただし、Sx=256画素、Sy=256画素は一例であり、任意のサイズとすることができる。
本実施形態においては、上述のVoid&Cluster法と同様、初期ドットパターンに対するドット追加の反復または、ドット削除の反復により、閾値マトリクスM(x,y)を生成する。この過程で生成されるドットパターンを「d(x,y)」と表記するものとする。ドットパターンd(x,y)は二次元の配列であり、そのサイズはM(x,y)と同じである。ドットパターンd(x,y)の各画素の値は、ドットが存在するときは1、ドットが存在しないときは0とする。
ドットパターンd(x,y)は、ドット追加やドット削除の反復過程において変化する。すなわち、ドット数が0個のドットパターンから、ドット数がSx×Sy個までの、Sx×Sy+1通りのドットパターンが反復の各過程で生成される。そのため、ドットパターンd(x,y)におけるドット数をgとしたとき、当該gを用いれば、反復過程における、ある1つの時点を特定できる。以下の説明では、ドット数(=階調数)gのときのドットパターンd(x,y)を、座標x、yを省略して単に「d(g)」と表記することとする。
実施形態1
(印刷システムの構成)
図1は、本実施形態に係る印刷システムの構成の一例を示す図である。図1に示す印刷システムは、情報処理装置100と画像形成装置110とで構成される。情報処理装置100は、閾値マトリクス生成部101を有し、ディザ法により量子化処理(ディザ処理)で用いる閾値マトリクスを生成し、画像形成装置110へ供給する。また、情報処理装置100は、プリンタドライバ(不図示)を有し、印刷対象となる電子文書等の印刷指示を画像形成装置110に対して行う機能も有する。図2(a)は、情報処理装置100のハードウェア構成を示すブロック図である。情報処理装置100は、CPU201、ROM202、RAM203、HDD204及びネットワークI/F205で構成される。CPU201は、プログラム等に従って情報処理装置100全体の動作を制御する。RAM203は、CPU201の主メモリ、ワークエリア等の一時記憶領域として用いられる。HDD204は、各種プログラムやプリンタドライバ等を記憶する大容量記憶部である。閾値マトリクス生成部101は、HDD204等に格納された対応する制御プログラムをRAMに展開し、CPUがこれを実行することで実現される。ネットワークI/F205は、情報処理装置100をLAN等のネットワークに接続するインタフェースである。情報処理装置100は、ネットワークI/F205を用いて、LAN上の画像形成装置110に対して閾値マトリクスのデータを送るなど情報のやり取りを行う。
画像形成装置110は、画像処理部111と画像形成部112により構成される。画像処理部111は、情報処理装置100で生成された閾値マトリクスを用いて量子化処理を行って、画像形成部112で取り扱い可能な印刷用画像データを生成する。画像形成部112は、生成された印刷用画像データに従って、例えばインクジェット方式で紙等の記録媒体に印刷を行う。図2(b)は、画像処理部111のハードウェア構成を示すブロック図である。画像処理部111は、カラーマッチング処理部211、色分解処理部212、ガンマ補正処理部213、量子化処理部214、CPU215、RAM216、ROM217及び通信部218からなる。CPU215は、ROM217に格納されたプログラムに基づいて、後述する各処理部及び全体を統括制御する。RAM216は、CPU215の作業領域として使用される。通信部218は、情報処理装置100との間で各種通信を行う。例えば、生成された閾値マトリクスのデータや印刷指示をLAN等のネットワークを介して受け取る。カラーマッチング処理部211は、情報処理装置100から送られてくる多階調の入力画像の色を表す色信号(RGB信号)を、画像形成部112の色再現域に合わせたデバイスRGB信号に変換する。色分解処理部212は、予めROM217に用意されている色分解テーブルにより、デバイスRGB信号を画像形成部112で使用される色材色であるCyan、Magenta、Yellow、Blackを表すCMYK信号に変換する。γ補正処理部213は、ROM217に格納されている階調値-濃度特性を補正するγ補正テーブルによって、CMYK信号に対して階調値-濃度特性が一定の関係になるような補正を加えたC’M’Y’K’信号へ変換する。量子化処理部214は、入力画像のC’M’Y’K’信号に対し、上述の閾値マトリクスを用いたディザ処理を行い、より少ない階調数のC’’M’’Y’’K’’信号へ変換して、中間調の画像(ハーフトーン画像)を生成する。画像処理部111を構成する上記各部(カラーマッチング処理部211、色分解処理部212、γ補正処理部213、量子化処理部214)は、ロジック回路で構成することで高速処理を可能としている。
(閾値マトリクスの生成)
次に、情報処理装置100における、閾値マトリクスの生成処理について説明する。図3は、本実施形態に係る閾値マトリクス生成部101を実現するソフトウェア構成を示す機能ブロック図である。図3に示すとおり、本実施形態の閾値マトリクス生成部101は、ドットパターン生成部301、第一フィルタ部302、第二フィルタ部303、加算部304及びドット配置部305で構成される。なお、閾値マトリクス生成部101を構成する要素の一部又は全部をハードウェア(回路)で実現してもよい。図4は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
S401では、ドットパターン生成部301が、階調数g=g0の初期ドットパターンd(g0)を生成する。本実施形態では、初期ドットパターンの階調数g0は、Sx×Sx×0.5=256×256×0.5=32768とする。初期ドットパターンの生成方法の詳細は後述する。
S402~S407は、S401で生成した初期ドットパターンd(g0)を起点としたドットの追加を、階調数gの値がgMAXに達するまで反復する処理である。この反復処理によって、階調値がgのドットパターンに対してドットを1つ追加してその隣接する階調(すなわち、階調値がg+1)のドットパターンを生成するという動作が繰り返される。ここで、gMAX≧g0であり、本実施形態では、gMAX=Sx×Sy=65536とする。このようなドット追加の反復処理と、後述するドット削除の反復処理(S409~S414)とにより、全階調のドットパターンが生成される。
S402では、第一フィルタ部302が、階調値gに対応するドットパターンd(g)に対して、フィルタ係数k_nのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示す情報を生成する。このノイズの分布状態を示す情報(以下、「ノイズマップn(g)」と呼ぶ。)は、ドットパターンd(g)と同じサイズの、その値が階調値gによって変化する二次元の配列である。このノイズマップn(g)によって、階調値がgのドットパターンd(g)における、ドットの粗密を評価することができる。例えば、ノイズマップn(g)における値が小さい場所ほど平滑化濃度が低く、ドットが疎であると評価する。逆に、ノイズマップn(g)における値が大きい場所ほど平滑化濃度が高く、ドットが密であると評価する。
S403では、第二フィルタ部303が、階調値gに対応するドットパターンd(g)に対して、フィルタ係数k_tのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す情報を生成する。この濃度ムラの分布状態を示す情報(以下、「濃度ムラマップt(g)」と呼ぶ。)も、ドットパターンd(g)と同じサイズの、その値が階調値gによって変化する二次元の配列である。この濃度ムラマップt(g)によって、階調値がgのドットパターンd(g)における、より低周波な濃度ムラを評価することができる。例えば、濃度ムラマップt(g)における値が小さい場所ほど濃度が低いと評価し、逆に、t(g)の値が大きい場所ほど濃度が高いと評価する。
ここで、上記S402及びS403でそれぞれ用いられる、フィルタ係数k_n及びフィルタ係数k_tについて説明する。閾値マトリクスは、入力画像に対して周期的に適用されることを想定している。両ステップのフィルタリング処理では、特許文献1と同様、ドットパターンd(g)と使用するフィルタ係数との巡回畳み込み演算によって、ノイズ成分及び濃度ムラ成分を抽出する。巡回畳み込み演算は、通常の畳み込み演算を、周期的境界条件を設定したドットパターンd(g)とフィルタ係数との間で行う演算である。フィルタ係数k_n及びフィルタ係数k_tは、ともに二次元配列であり、本実施形態ではドットパターンd(g)と同じサイズとする。すなわち、x方向のフィルタサイズをSfx、y方向のフィルタサイズをSfyとしたとき、Sfx=Sfy=256とする。フィルタ係数k_n及びフィルタ係数k_tは、それぞれ以下の式(1)及び式(2)で表される。
上記式(1)及び式(2)において、(x,y)は座標を表す。x0及びy0はフィルタ係数の中心座標を表し、x0=Sfx÷2、y0=Sfy÷2である。そして、σnはk_n(x,y)の周波数特性を規定するパラメータ、σtはK_t(x,y)の周波数特性を規定するパラメータである。ドットの追加を行うルーチンでは、ドット密度が粗の部分にドットを追加することで、最終的に低粒状性を実現することを目的としている。これを好適に実現するためには、ドットパターンd(g)から、粒状性として視覚的に目立つ周波数成分を抽出する必要がある。一般的な印刷物において、粒状性として目立つ周波数成分は約6cycles/mm以下であり、濃度ムラとして視覚的に目立つ周波数成分は約0.75cycles/mm以下であることが分かっている。例えば印刷解像度を1200dpiとした場合、上記各周波数帯を適切に抽出するためのσnの値としては例えば1.8程度、σtの値としては8.5程度を用いればよい。なお、各ステップで使用するフィルタ係数としては上記式(1)や式(2)の例に限定されるものではなく、粒状性として目立つ周波数成分が抽出できればよい。通常、通過帯域によってフィルタサイズは決まるため、印刷解像度を1200dpiとした場合、ノイズ成分の抽出に用いるフィルタは9画素×9画素程度のローパスフィルタ、濃度ムラの抽出に用いるフィルタは65画素×65画素程度のローパスフィルタでよい。また、これらのフィルタリング処理では、巡回畳み込み演算に代えて、周波数空間における乗算を用いてもよい。図4のフローの説明に戻る。
S404では、S402で生成したノイズマップn(g)とS403で生成した濃度ムラマップt(g)とに基づいて、ドットパターンd(g)に対しドットの追加がなされる。この処理は、加算部304とドット配置部305によって行われる。まず、加算部304が、ノイズマップn(g)と濃度ムラマップt(g)とを合成する。すなわち、ノイズマップn(g)と濃度ムラマップt(g)との和が求められる。得られた合成結果(以下、「n(g)+t(g)」と表記)は、ドット配置部305に出力される。ドット配置部305は、加算部304から受け取ったn(g)+t(g)を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンd(g)内のドットが存在しない画素位置(画素値=0)のうち、その座標(x,y)におけるノイズマップn(g)と濃度ムラマップt(g)の和が最小になる画素位置(xMIN,yMIN)をまず探索する。そして、見つかった当該画素位置(xMIN,yMIN)の画素値を0から1に変更する。なお、n(g)+t(g) の値が最小となる画素位置が複数見つかった場合は、その中からt(g) の値が最小となる画素位置(xMIN,yMIN)の画素値を1にすればよい。さらに、t(g) の値が最小となる位置が複数存在する場合は、その中からドットを追加する位置をランダムに選択すればよい。
S405では、ドットが追加された位置(xMIN,yMIN)に基づき、閾値マトリクスM(x,y)における閾値が設定される。具体的には、閾値マトリクスM(x,y)におけるM(xMIN,yMIN)の値として、現在のgの値が設定される。続くS406では、階調数gの値がインクリメントされて、g=g+1となる。
S407では、階調数gの値がgMAX(ここでは65536)に達したか否かが判定される。判定の結果、g=gMAXでなければS402に戻り、処理が続行される。一方、g=gMAXであればS408に進む。
S408では、S401で生成した階調値がg0=32768の初期ドットパターンd(g0)を読み込む。続くS409~S414は、読み込んだ初期ドットパターンd(g0)を起点としてドットの削除を階調数gの値がgMINに達するまで反復する処理である。この反復処理によって、階調値がgのドットパターンに対してドットを1つ削除してその隣接する階調(すなわち、階調値がg-1)のドットパターンを生成するという動作が繰り返される。ここで、gMIN≦g0であり、本実施形態では、gMIN=0とする。以降のドット削除の反復処理の結果とS407までで得られたドット追加の反復処理の結果とを組み合わせることで全階調のドットパターンが出来上がる。以下では、ドット削除の反復処理について、ドット追加の反復処理との相違点を中心に説明することとする。
S409はS402と同じであり、第一フィルタ部302が上述のノイズマップn(g)を生成する。続くS410はS403と同じであり、第二フィルタ部303が濃度ムラマップt(g)を生成する。
S411では、S409で生成したノイズマップn(g)とS410で生成した濃度ムラマップt(g)とに基づいて、ドットパターンd(g)に対しドットの削除がなされる。すなわち、ドット配置部305が、加算部304の出力結果であるn(g)+t(g)を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンd(g)内のドットが存在(画素値=1)する画素位置のうち、その座標(x,y)におけるノイズマップn(g)と濃度ムラマップt(g)の和が最大になる画素位置(xMAX,yMAX)をまず探索する。そして、見つかった当該画素位置(xMAX,yMAX)の画素値を1から0に変更する。なお、n(g)+t(g) の値が最大となる画素位置が複数見つかった場合は、その中からt(g) の値が最大となる画素位置(xMAX,yMAX)の画素値を0にすればよい。さらに、t(g) の値が最大となる位置が複数存在する場合は、その中からドットを削除する位置をランダムに選択すればよい。
S412では、ドットが削除された位置(xMAX,yMAX)に基づき、閾値マトリクスM(x,y)における閾値が設定される。具体的には、閾値マトリクスM(x,y)におけるM(xMAX,yMAX)の値として、現在のgの値が設定される。続くS413では、階調数gの値がデクリメントされて、g=g-1となる。そして、S414では、階調数gの値がgMIN(ここでは0)に達したか否かが判定される。判定の結果、g=gMINでなければS409に戻り、処理が続行される。一方、g=gMINであればS415に進む。
S415では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。本ステップまで処理が進んだ段階で、閾値マトリクスM(x,y)には、gMINからgMAXまで(本実施形態の場合は0~65536)の値が格納されている。ディザ処理を行う際の入力画像の信号値が例えば8ビットの場合、入力画像のレンジが0~255であるため、0~65536までの値が格納された閾値マトリクスを使用しても、適切な量子化結果を得ることができない。そこで本ステップにおいて、入力画像の信号値のビット数に合うように、閾値マトリクスM(x,y)の値のレンジを調整する。例えば、閾値マトリクスの値のレンジをthMINからthMAXに変更したい場合、調整後の閾値マトリクスの値は、a×M(x,y)+bで求められる。ただし、a=(thMAX-thMIN)÷(gMAX-gMIN)、b=thMIN-a×gMINである。なお、レンジ調整の方法は、この方法に限らず、例えば、特許文献1に記載の方法を用いても構わない。
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
(初期ドットパターンの生成方法)
本実施形態では、はじめにランダムなドットパターンを生成し、このランダムなドットパターンを起点としてドットの移動を繰り返すことにより、粒状性が低く且つ、濃度ムラが目立たない初期ドットパターンd(g0)を生成する。以下、本実施形態に係る初期ドットパターンの生成方法について、図5のフローチャートを参照して詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
S501では、階調数g=g0のランダムなドットパターンd_rを生成する。具体的には、ドットが1つも存在しない画像を起点として、階調数がg0(本実施形態ではg0=32768)に達するまで、ドットの追加を繰り返し行って、ランダムなドットパターンを生成する。ドットを追加する位置の候補は、例えば0~Sxの乱数を発生させてx方向の位置x_rを決定し、同様に、0~Syの乱数を発生させてy方向の位置yrを決定する。そして、決定した座標(x_r,y_r)の位置にドットが存在しない場合は当該位置にドットを追加(画素値を0から1に変更)する。この場合において、当該画素位置の画素値が既に1になっていた場合は、新たに乱数を発生させ、ドットを追加する位置の候補を変更する。このような処理を繰り返して、ランダムなドットパターンd_rを得る。
S502では、S501で生成した階調数g0のランダムなドットパターンd_rに対して、前述のS402と同じ処理を適用し、ノイズマップn_rを生成する。続くS503では、ランダムなドットパターンd_rに対して、前述のS403と同じ処理を適用し、濃度ムラマップt_rを生成する。
そして、S504では、ノイズマップn_rと濃度ムラマップt_rとの合成結果に基づいて、ドットを移動する処理がなされる。具体的には以下のとおりである。まず、現在のランダムなドットパターンd_rにおけるドットが存在する画素の中から、n_r+t_rの値が最大になる画素の位置(xMAX,yMAX)を探索する。次に、現在のランダムなドットパターンd_rにおけるドットが存在しない画素の中から、n_r+t_rの値が最小になる画素の位置(xMIN,yMIN)を探索する。そして、座標(xMAX,yMAX)の位置にあるドットを、座標(xMIN,yMIN)の位置へと移動させる。すなわち、座標(xMAX,yMAX)の位置の画素値を0にして、座標(xMIN,yMIN)の位置の画素値を1にする。
S505では、S502~S504までの各処理が所定回数実行されたかどうかが判定される。所定回数は例えば100回など任意であるが、特許文献1と同様、所定の収束条件を設定しても構わない。判定の結果、実行回数が所定回数に到達していれば本処理を終える。そして、本処理を終えた時点におけるランダムなドットパターンd_rが、初期ドットパターンd(g0)となる。一方、実行回数が所定回数に到達していなければS502に戻り、処理が続行される。
以上のような処理により、本実施形態の初期ドットパターンd(g0)が生成される。
(本実施形態の効果)
ここで、本実施形態の効果について詳しく説明する。図6の(a)~(f)は、本実施形態の効果を説明する図であり、ドットを1つ追加するときの例を、便宜的に一次元空間において示している。図6(a)はある階調数gにおけるドットパターンdを示している。
まず、従来技術について説明する。特許文献1の技術では、ドットパターンにおけるノイズの評価値のみに基づいてドットの追加がなされる。図6(b)は、(a)のドットパターンdから生成した、ノイズの分布状態を示すノイズマップnを示している。特許文献1の技術では、このノイズマップnの値が最小となる位置にドットを追加していく。図6(b)に示すノイズマップnの場合、最小値であるx1の位置にドットが追加されることになる。しかしながら、最小値であるX1の周辺よりも、その次に値が小さいX2の周辺の方がドットの間隔が広い。これは、周波数の低い濃度ムラを低減するためには、X1の位置ではなくX2の位置にドットを追加すべきであることを意味している。特許文献1の技術では、ノイズの評価値のみに基づいてドットの追加位置が決まるため、図6(b)のような状況であっても、X2の位置にドットを追加することができず、その結果、濃度ムラが目立ってしまうことになる。
この点、特許文献2の技術では、濃度ムラを各小区画におけるドット数cで表現し、当該ドット数cを考慮したドット配置を行うことで、濃度ムラの低減を図っている。図6(c)は、図6(a)のドットパターンdに対応する、小区画毎のドット数c(この例では、左側の小区画のドット数が4個、右側の小区画のドット数が3個)を示している。特許文献2の技術では、このような小区画毎のドット数cとノイズマップnとの和が最小となる位置にドットが追加される。図6(d)は、図6(b)のノイズマップnと、図6(c)に示す小区画毎のドット数との和を示している。この場合、和の最小値はX2の位置になり、X1ではなくX2の位置にドットが追加されるので、特許文献1の問題を解消できている。しかしながら、図6(c)に示す小区画毎のドット数cでは、各小区画内におけるドットの偏りを考慮できず、この偏りが濃度ムラとして視認されることがある。例えば、小区画の区切り位置が図6(c’)のようになったとする。図6(c’)と図6(c)とを比較すると、左側の区画のドット数が4個から3個に変化し、右側の区画のドット数が3個から4個へと変化している。小区画毎のドット数cが図6(c’)の場合、ノイズマップnとの和は図6(d’)のようになる。この場合の最小値はX2ではなくX1の位置になるので、X2ではなくX1の位置にドットが追加されることなる。この結果、濃度ムラは解消されず、かえって強めてしまう。このように、特許文献2の技術では、同じドットパターンであっても小区画の区切り位置によって、濃度ムラを低減できないことがある。これは、特許文献2の技術が、小区画内のドットの粗密や小区画同士を跨ぐドット間の粗密までは考慮できていないことに起因するものである。
これに対し本実施形態の手法では、濃度ムラを、小区画毎のドット数cではなく、ドットパターンdの低周波成分を表現した濃度ムラマップtで評価する。濃度ムラを低周波成分で評価する場合、フィルタ範囲内の相対的なドット位置に応じて評価値が決定される。すなわち、フィルタ内のドット配置が同じであれば、閾値マトリクス内の位置に関わらず、低周波成分の値は同じになる。そのため、低周波成分を表す濃度ムラマップtを用いたドット配置では、特許文献2の技術と比べてより確実に濃度ムラを低減できる。図6(e)は、図6(a)のドットパターンdから抽出した濃度ムラの分布状態を示す濃度ムラマップtを示している。本実施形態の手法では、図6(b)に示すノイズマップnと図6(e)に示す濃度ムラマップtとの和を求め、その和の値が最小となる位置にドットが追加される。図6(f)は、図6(b)のノイズマップnと、図6(e)の濃度ムラマップtとの和を示している。図6(f)の場合、和の最小値はX2に近いX3の位置となり、このX3の位置にドットが追加される。このように、本実施形態の手法では、濃度ムラの低減に最も効果的なX3の位置にドットが追加できることが分かる。
さらに、本実施形態の手法では、ドットパターンdから濃度ムラを表現する低周波数成分を抽出する際に、視覚感度に基づくローパスフィルタを用いる。そのため、前述のS403及びS410で生成される濃度ムラマップtは、小区画毎のドット数cに比べ、人間が知覚する濃度ムラに近い。このような濃度ムラマップtを用いてドット配置を行うことにより、視認される濃度ムラをより効果的に低減できる。
(変形例)
なお、本実施形態では、図3の構成を有する閾値マトリクス生成部101が、ドット追加の反復処理を行った後に、ドット削除の反復処理を行うようにしているがこのような構成に限定されない。例えば、閾値マトリクス生成部101を2つ設け、S401で初期ドットパターンd(g0)を生成した後に、S402~S407におけるドット追加とS409~S414におけるドット削除を並列で処理する構成でもよい。
また、上述のS404やS411で生成する、ノイズマップn(g)と濃度ムラマップt(g)との和は、重みを加味した重み和でもよい。例えば、濃度ムラの抑制効果を高くした閾値マトリクスを作りたい場合は、濃度ムラマップt(g)の重みを大きくして、濃度ムラをより緩和する方向にドットの追加・削除がなされるように設計すればよい。例えば、フィルタ係数k_n及びフィルタ係数k_tとして前述の式(1)及び式(2)を用い、σnの値を1.8程度、σtの値を8.5程度とした場合を考える。この場合、ノイズマップn(g)に対する濃度ムラマップt(g)の重みWを2.5程度とすることにより、好適な閾値マトリクスを得ることができる。
なお、ノイズと濃度ムラを両立するためには、ノイズマップn(g)の分散Var_n(g)と、重みWを乗算した後の濃度ムラマップt(g)の分散Var_t(g)とが同程度であることが望ましい。ここで、「分散比F(g)=Var_t(g)÷Var_n(g)」と定義する。
仮に、「Var_n(g)>>Var_t(g)」の場合(すなわち「F(g)<<1」の場合)、濃度ムラマップt(g)を考慮したドット配置ができない。逆に、「Var_n(g)<<Var_t(g)」の場合(すなわち「F(g)>>1」の場合)、ノイズマップn(g)を考慮したドット配置ができない。
そのため、重みWは、Var_n(g)と、Var_t(g)とがほぼ同程度になるように決定するのがよい。詳細には、最小階調値と最大階調値を除く、ほぼ全ての階調値gにおいて、分散比F(g)が0.5以上10以下となるように重みWを決定するのが望ましい。決定方法の具体例を以下に示す。階調値gにおける分散比F(g)は、生成されるドットパターンによって変化することが分かっている。そこで、重みWを複数段階変化させて、複数パターンの閾値マトリクスを生成し、ある重みを与えたときの分散比F(g)をまず確認する。例えば、重みWが1のときの閾値マトリクスと、重みWが2.5のときの閾値マトリクスと、重みWが10のときの閾値マトリクスを生成し、それぞれの場合における分散比F(g)を確認する。そして、分散比F(g)が0.5以上10以下の範囲に収まっているときの重みWを、適切な重みとして採用する。
図16は、フィルタ係数k_n及びフィルタ係数k_tとして前述の式(1)及び式(2)を用い、σnの値を1.8程度、σtの値を8.5程度、重みWを2.5程度にしたときの、階調値gごとの分散比F(g)を示すグラフである。図16のグラフにおいては、最小階調値と最大階調値を除く、ほぼ全ての階調値gにおいて、分散比が0.5以上10以下の範囲に収まっている。よって、このケースでの重みW=2.5は、適切な重み係数となる。さらに、重みWは、階調値gごとに変化させても構わない。例えば、階調値gのときの重みをW(g)とし、所望の分散比をF_0(例えば、F_0=5.5)とする。このとき、「重みW(g)=(F_0×Var_n(g)÷Var_t(g))0.5」とすることにより、最小階調値と最大階調値を除く全ての階調において、所望の分散比F_0を実現できる。図17は、このように、分散比が所望の値になるようにして生成した、複数の閾値マトリクスの特性を評価した結果の一例を示すグラフである。なお、フィルタ係数k_n及びフィルタ係数k_tとして前述の式(1)及び式(2)を用い、σnの値を1.8程度、σtの値を8.5程度とした。
図17のグラフにおいて、横軸は分散比F(g)で、それぞれの分散比の値が、1つの閾値マトリクスに対応している。縦軸は、閾値マトリクスの特性の評価値である。具体的には、評価対象の閾値マトリクスを用いて、33階調の均一パッチ画像に対してディザ処理を適用し、生成されたハーフトーン画像の評価値をパッチごとに求めて、それぞれの評価値を平均化した値である。ハーフトーン画像の評価値は、濃度ムラが目立つ度合いの評価値と、ノイズが目立つ度合いの評価値とで、いずれもその値が大きいほど、濃度ムラもしくはノイズが目立つことを示している。濃度ムラが目立つ度合いの評価値は、評価対象のハーフトーン画像に、濃度ムラが目立つ帯域のフィルタを畳み込んだ画像の、変動に関する特徴量である。また、ノイズが目立つ度合いの評価値は、評価対象のハーフトーン画像に、ノイズが目立つ帯域のフィルタを畳み込んだ画像の、変動量に関する特徴量である。発明者が行った主観評価実験によれば、これら2つの評価値がいずれも0.17以下であれば、ノイズと濃度ムラが目立たないことが分かっている。
図17の評価結果においては、分散比が0.5以上10以下であれば、これら2つの評価値が0.17以下となり、ノイズの抑制と濃度ムラの抑制とを両立できる。一方、分散比が0.5未満の場合は、濃度ムラマップt(g)を考慮したドット配置ができず、濃度ムラ評価値が0.17よりも悪化する。また、分散比が10を超える場合は、ノイズマップn(g)を考慮したドット配置ができず、ノイズ評価値が0.17よりも悪化する。このように、分散比F(g)が0.5以上10以下となるように重みWを決定することで、ノイズの抑制と濃度ムラの抑制とを両立できる。なお、重みWを決める指標は、分散比F(g)に限定されない。例えば、ノイズマップn(g)と濃度ムラマップt(g)の変動に関する特徴量の比率R(g)を、分散比F(g)の代わりに用いても構わない。この際、ノイズマップn(g)の変動に関する特徴量をC_n(g)、濃度ムラマップt(g)の変動に関する特徴量をC_t(g)とすれば、特徴量の比率R(g)は、C_t(g)÷C_n(g)で求めることができる。また、変動を示す特徴量としては、標準偏差や、振幅などを用いてもよい。
以上のとおり、本実施形態によれば、低粒状性を維持しつつ、さらに低周波の濃度ムラをより効果的に低減することが可能な閾値マトリクスを得ることができる。
実施形態2
実施形態1では、ノイズと濃度ムラの両方を考慮してドットを配置することで、粒状性と濃度ムラの両方を低減させることを可能とした。しかし、階調値によっては、濃度ムラが目立たないことがある。この場合、ノイズと濃度ムラの両方を考慮してドットを配置するよりも、ノイズのみを考慮してドットを配置した方が低粒状性を実現できる。そこで、濃度ムラの変動量に着目し、濃度ムラが目立たないと判断される場合には、ノイズのみを考慮したドット配置を行う態様について、実施形態2として説明する。なお、実施形態1と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
図7は、本実施形態に係る閾値マトリクス生成部101を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部101は、ドットパターン生成部701、第一フィルタ部702、第二フィルタ部703、濃度ムラ変動量算出部704、比較部705、選択部706及びドット配置部707で構成される。また、図8は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
S801では、ドットパターン生成部701が、階調値がg0の初期ドットパターンd(g0)を生成する。実施形態1と同様、初期ドットパターンの階調数g0は、Sx×Sx×0.5=256×256×0.5=32768とする。ただし、初期ドットパターンの生成方法が実施形態1とは異なっている。本実施形態の初期ドットパターンの生成方法の詳細は後述する。
S802~S809は、実施形態1のS402~S407に対応する処理であり、S801で生成した初期ドットパターンd(g0)を起点としてドットの追加を階調数gの値がgMAXに達するまで反復する処理である。実施形態1との違いはS804とS805が追加されている点である。本実施形態でも、gMAX≧g0であり、gMAX=Sx×Sy=65536とする。
S802では、第一フィルタ部702が、階調値gに対応するドットパターンd(g)に対して、フィルタ係数k_nのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示すノイズマップn(g)を生成する。この処理は、実施形態1のS402と同じである。続くS803では、第二フィルタ部703が、階調値gに対応するドットパターンd(g)に対して、フィルタ係数k_tのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す濃度ムラマップt(g)を生成する。この処理は、実施形態1のS403と同じである。
S804では、濃度ムラの変動量v_t(g)が予め設定した所定値th_tよりも大きいか否かが、S803で生成した濃度ムラマップt(g)に基づき判定される。この判定処理は、濃度ムラ変動量算出部704と比較部705とによって以下のように行われる。まず、濃度ムラ変動量算出部704において、濃度ムラの変動量v_t(g)を求める。ここで、v_t(g)はスカラー量であり、本実施形態では濃度ムラマップt(g)における最大値と最小値との差を用いる。すなわち、t(g)の最大値をtMAX(g)、最小値をtMIN(g)としたとき、tMAX(g)からtMIN(g)を減算した値をv_t(g)として用いる。なお、最大値と最小値との差に代えて振幅を用いてもよいし、例えばt(g)の分散や標準偏差をv_t(g)としても構わない。次に、比較部705において、v_t(g)を所定値th_tと比較する。なお、所定値th_tは、濃度ムラが目立つか否かを切り分ける基準となる値であり、所望する閾値マトリクスの特性に応じて、予め設定しておく。判定の結果、濃度ムラ変動量v_t(g)が所定値th_tよりも小さい場合(判定結果が偽の場合)はS805に進み、濃度ムラ変動量v_t(g)が所定値th_tよりも大きい場合(判定結果が真の場合)はS806に進む。
S805では、ノイズマップn(g)のみに基づいて、ドットパターンに対しドットの追加がなされる。この処理は、選択部706とドット配置部707によって行われる。S804の判定結果が偽の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)を出力する。ドット配置部707は、このノイズマップn(g)を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンd(g)内のドットが存在しない画素位置(画素値=0)のうち、その座標(x,y)におけるノイズマップn(g)の値が最小になる画素位置(xMIN,yMIN)をまず探索する。そして、見つかった当該画素位置(xMIN,yMIN)の画素値を0から1に変更する。
S806では、ノイズマップn(g)と濃度ムラマップt(g)とに基づいて、ドットパターンに対しドットの追加がなされる。この処理も、選択部706とドット配置部707によって行われる。S804の判定結果が真の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)と第二フィルタ部703から入力された濃度ムラマップ t(g)とを合成し、その結果であるn(g)+ t(g)を出力する。ドット配置部707は、このn(g)+ t(g)を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。この処理は、実施形態1のS404と同じである。
S807では、ドットが追加された位置(xMIN,yMIN)に基づき、閾値マトリクスM(x,y)における閾値が設定される。続くS808では、階調数gの値がインクリメントされて、g=g+1となる。そして、S809では、階調数gの値がgMAX(ここでは65536)に達したか否かが判定される。判定の結果、g=gMAXでなければS802に戻り、処理が続行される。一方、g=gMAXであればS810に進む。これらの処理は、実施形態1のS405~S407と同じである。
S810では、S801で生成した階調値がg0=32768の初期ドットパターンd(g0)を読み込む。続くS811~S818は、読み込んだ初期ドットパターンd(g0)を起点としてドットの削除を階調数gの値がgMINに達するまで反復する処理である。実施形態1との違いはS813とS814が追加されている点である。本実施形態でも、gMIN≦g0であり、gMIN=0とする。以下では、ドット削除の反復処理について、ドット追加の反復処理との相違点を中心に説明することとする。
S811はS802と同じであり、第一フィルタ部702が上述のノイズマップn(g)を生成する。続くS812はS803と同じであり、第二フィルタ部803が濃度ムラマップt(g)を生成する。
S813では、S804と同様、濃度ムラの変動量v_t(g)が予め設定した所定値th_tよりも大きいか否かが、S812で生成した濃度ムラマップt(g)に基づき判定される。この判定処理の内容については、S804で説明したとおりである。判定の結果、濃度ムラ変動量v_t(g)が所定値th_tよりも小さい場合(判定結果が偽の場合)はS814に進み、濃度ムラ変動量v_t(g)が所定値th_tよりも大きい場合(判定結果が真の場合)はS815に進む。
S814では、ノイズマップn(g)のみに基づいて、ドットパターンに対しドットの削除がなされる。この処理は、選択部706とドット配置部707によって行われる。S813の判定結果が偽の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)を出力する。ドット配置部707は、このノイズマップn(g)を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンd(g)内のドットが存在する画素位置(画素値=1)のうち、その座標(x,y)におけるノイズマップn(g)の値が最大になる画素位置(xMAX,yMAX)をまず探索する。そして、見つかった当該画素位置(xMAX,yMAX)の画素値を1から0に変更する。
S815では、S811で生成したノイズマップn(g)とS812で生成した濃度ムラマップt(g)とに基づいて、ドットパターンd(g)に対しドットの削除がなされる。この処理も、選択部706とドット配置部707によって行われる。S813の判定結果が真の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)と第二フィルタ部703から入力された濃度ムラマップ t(g)とを合成し、その結果であるn(g)+ t(g)を出力する。ドット配置部707は、このn(g)+ t(g)を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。この処理は、実施形態1のS411と同じである。
S816では、ドットが削除された位置(xMAX,yMAX)に基づき、閾値マトリクスM(x,y)における閾値が設定される。続くS817では、階調数gの値がデクリメントされて、g=g-1となる。そして、S818では、階調数gの値がgMIN(ここでは0)に達したか否かが判定される。判定の結果、g=gMINでなければS811に戻り、処理が続行される。一方、g=gMINであればS819に進む。これらの処理は、実施形態1のS412~S414と同じである。
S819では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。この処理は、実施形態1のS415と同じである。
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
(初期ドットパターンの生成方法)
本実施形態に係る初期ドットパターンの生成方法について、図9のフローチャートを参照して詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
まず、S901では、階調数g=g0のランダムなドットパターンd_rを生成する。続いてS902では、S901で生成した階調数g0のランダムなドットパターンd_rに対して、前述のS802と同じ処理を適用し、ノイズマップn_rを生成する。続くS903では、ランダムなドットパターンd_rに対して、前述のS803と同じ処理を適用し、濃度ムラマップt_rを生成する。ここまでの処理は、実施形態1のS501~S503と同じである。
S904では、濃度ムラの変動量v_tが予め設定した所定値th_tよりも大きいか否かが、S903で生成した濃度ムラマップtに基づき判定される。この判定処理は、前述のS804やS813と同じである。判定の結果、濃度ムラ変動量v_tが所定値th_tよりも小さい場合(判定結果が偽の場合)はS905に進み、濃度ムラ変動量v_tが所定値th_tよりも大きい場合(判定結果が真の場合)はS906に進む。
S905では、ノイズマップn_rのみに基づいて、ドットを移動する処理がなされる。具体的には以下のとおりである。まず、現在のランダムなドットパターンd_rにおけるドットが存在する画素の中から、n_rの値が最大になる画素の位置(xMAX,yMAX)を探索する。次に、現在のランダムなドットパターンd_rにおけるドットが存在しない画素の中から、n_rの値が最小になる画素の位置(xMIN,yMIN)を探索する。そして、座標(xMAX,yMAX)の位置にあるドットを、座標(xMIN,yMIN)の位置へと移動させる。すなわち、座標(xMAX,yMAX)の位置の画素値を0にして、座標(xMIN,yMIN)の位置の画素値を1にする。
S906では、ノイズマップn_rと濃度ムラマップt_rとの合成結果に基づいて、ドットを移動する処理がなされる。具体的には以下のとおりである。まず、現在のランダムなドットパターンd_rにおけるドットが存在する画素の中から、n_r+t_rの値が最大になる画素の位置(xMAX,yMAX)を探索する。次に、現在のランダムなドットパターンd_rにおけるドットが存在しない画素の中から、n_r+t_rの値が最小になる画素の位置(xMIN,yMIN)を探索する。そして、座標(xMAX,yMAX)の位置にあるドットを、座標(xMIN,yMIN)の位置へと移動させる。すなわち、座標(xMAX,yMAX)の位置の画素値を0にして、座標(xMIN,yMIN)の位置の画素値を1にする。
S907では、S902~S906までの各処理が所定回数実行されたかどうかが判定される。所定回数などの条件は実施形態1と同じである。判定の結果、実行回数が所定回数に到達していれば本処理を終える。そして、本処理を終えた時点におけるランダムなドットパターンd_rが、初期ドットパターンd(g0)となる。一方、実行回数が所定回数に到達していなければS902に戻り、処理が続行される。
以上のような処理により、本実施形態における初期ドットパターンd(g0)が生成される。
(本実施形態の効果)
図18の(a)及び(b)は、本実施形態の手法により生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、x方向のサイズSxが256画素、y方向のサイズSyが256画素とした。また、初期ドットパターンの階調数g0は0に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数k_nとして前述の式(1)を用い、フィルタ係数k_tとして前述の式(2)に重みWを乗算した式を用い、σnの値を1.8程度、σtの値を8.5程度、重みWを2.5程度にした。また、濃度ムラ変動量算出部704で算出する濃度ムラ変動量v_t(g)としては、濃度ムラマップt(g)における最大値と最小値との差を、重みWで除算した値を用いた。
図18(a)のグラフは、縦軸が濃度ムラ変動量算出部704で算出する濃度ムラ変動量v_t(g)、横軸が階調値gであり、濃度ムラ変動量v_t(g)の値が大きいほど、濃度ムラが目立つことを示している。図18(b)のグラフは、縦軸がノイズ変動量v_n(g)、横軸が階調値gであり、ノイズ変動量v_n(g)の値が大きいほど、ノイズが目立つことを示している。ノイズ変動量v_n(g)としては、ノイズマップn(g)における最大値と最小値との差を用いた。
図18(a)及び(b)のグラフには、所定値th_tの値を変えて生成した3種類の閾値マトリクスの評価結果が示されている。ここで、所定値th_tは、比較部705にて濃度ムラ変動量v_t(g)と比較する値である。
所定値th_tが∞の場合は、常にノイズマップn(g)のみを考慮してドット配置が決定されるため、図18(b)における細実線が示す通り、ノイズが最も目立たない。しかし、濃度ムラマップt(g)が考慮されないため、図18(a)における細実線が示す通り、濃度ムラが最も目立つ。
所定値th_tが0の場合は、実施形態1と等価な結果が得られる。すなわち、ノイズマップn(g)と濃度ムラマップt(g)の両方を常に考慮してドットが配置されるため、図18(a)における破線が示す通り、濃度ムラが最も目立たない。しかし、濃度ムラとノイズはトレードオフの関係にあるため、図18(b)における破線が示す通り、ノイズが最も目立つ。
所定値th_tが2程度の場合は、判定条件に応じてドット配置の決定方法が切り替わるため、図18(a)における太実線が示す通り、ノイズマップn(g)と濃度ムラマップt(g)の両方を常に考慮する場合(所定値th_tが0の場合)に比べると、濃度ムラが目立つ。しかしながら、図18(b)の太実線が示す通り、ノイズは改善する。このように、所定値th_tを2程度に設定して処理を切り替えることにより、ノイズと濃度ムラの両方を常に考慮する場合に比べ、粒状性を向上させることができる。
以上のとおり本実施形態によれば、濃度ムラマップにおける変動量を基準値と比較し、基準値以下の場合は、濃度ムラが目立たないと判断し、ノイズのみを考慮したドット配置を行う。このように判定条件に応じてドット配置の決定方法を切り替えることにより、ノイズと濃度ムラの両方を常に考慮する場合に比べ、粒状性をさらに向上させることができる。
実施形態3
実施形態2では、濃度ムラの変動量に基づいて、ドットの配置方法を切り替える態様を説明した。次に、濃度ムラの変動量の代わりにノイズの変動量を用いてドットの配置方法を切り替える態様を実施形態3として説明する。なお、実施形態1及び2と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
図10は、本実施形態に係る閾値マトリクス生成部101を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部101は、ドットパターン生成部701、第一フィルタ部702、第二フィルタ部703、ノイズ変動量算出部1001、比較部1002、選択部706、及びドット配置部707で構成される。また、図11は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
S1101では、ドットパターン生成部701が、階調数g=g0の初期ドットパターンd(g0)を生成する。ここでは、実施形態2で使用する初期ドットパターンと同じものが生成される。続くS1102~S1109は、実施形態2のS802~S809に対応する処理であり、S1101で生成した初期ドットパターンd(g0)を起点としてドットの追加を階調値gがgMAXに達するまで反復する処理である。実施形態2との大きな違いはS1104における判定処理の内容であり、それ以外は異なるところがないので、S1102とS1103の説明は省く。
S1104では、ノイズの変動量v_n(g)が予め設定した所定値th_nよりも小さいか否かが、S1102で生成したノイズマップn(g)に基づき判定される。この判定処理は、ノイズ変動量算出部1001と比較部1002とによって以下のように行われる。まず、ノイズ変動量算出部1001において、ノイズの変動量v_n(g)を求める。ここで、v_n(g)はスカラー量であり、本実施形態ではノイズマップn(g)における極値間の差を用いる。ドット追加の場面では、n(g)の最小極小値nMIN(g)とその次に小さい極小値nMIN2(g)との差の絶対値を、v_n(g)として用いる。次に、比較部1002において、v_n(g)を所定値th_nと比較する。この場合の所定値th_nは、ノイズが目立つか否かを切り分ける基準となる値であり、所望する閾値マトリクスの特性に応じて、予め設定しておく。判定の結果、ノイズ変動量v_n(g)が所定値th_nよりも小さい場合(判定結果が真の場合)はS1106に進み、ノイズ変動量v_n(g)が所定値th_nよりも大きい場合(判定結果が偽の場合)はS1105に進む。
S1105では、ノイズマップn(g)のみに基づいて、ドットパターンに対しドットの追加がなされる。この処理は、実施形態2のS805と基本的には同じであり、選択部706とドット配置部707によって行われる。S1104の判定結果が偽の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)を出力する。ドット配置部707は、このノイズマップn(g)を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。また、S1106では、ノイズマップn(g)と濃度ムラマップt(g)とに基づいて、ドットパターンに対しドットの追加がなされる。この処理は、実施形態2のS806と基本的には同じであり、選択部706とドット配置部707によって行われる。S1104の判定結果が真の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)と第二フィルタ部703から入力された濃度ムラマップ t(g)とを合成し、その結果であるn(g)+ t(g)を出力する。ドット配置部707は、このn(g)+ t(g)を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。
S1107~S1109は、実施形態2のS807~S809と同じである。すなわち、ドットが追加された位置(xMIN,yMIN)に基づき閾値マトリクスM(x,y)における閾値が設定されると(S1107)、階調数gの値がインクリメントされる(S1108)。そして、g=gMAXとなるまで処理が繰り返される(S1109)。階調値g=gMAXに達した段階でS1110に進む。
S1110では、S1101で生成した階調数g=g0の初期ドットパターンd(g0)を読み込む。続くS1111~S1118は、読み込んだ初期ドットパターンd(g0)を起点としてドットの削除を階調数gの値がgMINに達するまで反復する処理である。上述のとおり、判定処理以外は実施形態2と異なるところがないので、S1111とS1112の説明は省く。
S1113では、ノイズの変動量v_n(g)が予め設定した所定値th_nよりも小さいか否かが、S1111で生成したノイズマップn(g)に基づき判定される。本ステップにおけるノイズの変動量v_n(g)も、基本的な考え方は上述のS1004と同じである。その違いは、ドット削除の場面では、n(g)の最大極大値nMAX(g)とその次に大きい極大値nMAX2(g)との差を、v_n(g)として用いる点である。次に、比較部1002において、v_n(g)を所定値th_nと比較する。ここでの所定値th_nも、S1104と同様、所望する閾値マトリクスの特性に応じて、予め設定しておく。判定の結果、ノイズ変動量v_n(g)が所定値th_nよりも小さい場合(判定結果が真の場合)はS1115に進み、ノイズ変動量v_n(g)が所定値th_nよりも大きい場合(判定結果が偽の場合)はS1114に進む。
S1114では、ノイズマップn(g)のみに基づいて、ドットパターンに対しドットの削除がなされる。この処理は、実施形態2のS814と基本的には同じであり、選択部706とドット配置部707によって行われる。S1113の判定結果が偽の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)を出力する。ドット配置部707は、このノイズマップn(g)を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。また、S1115では、ノイズマップn(g)と濃度ムラマップt(g)とに基づいて、ドットパターンに対しドットの削除がなされる。この処理は、実施形態2のS815と基本的には同じであり、選択部706とドット配置部707によって行われる。S1113の判定結果が真の場合、選択部706は、第一フィルタ部702から入力されたノイズマップn(g)と第二フィルタ部703から入力された濃度ムラマップ t(g)とを合成し、その結果であるn(g)+ t(g)を出力する。ドット配置部707は、このn(g)+ t(g)を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。
S1116~S1118は、実施形態2のS816~S818と同じである。すなわち、ドットが削除された位置(xMAX,yMAX)に基づき閾値マトリクスM(x,y)における閾値が設定されると(S1116)、階調数gの値がデクリメントされる(S1117)。そして、g=gMINとなるまで処理が繰り返される(S1118)。階調値g=gMINに達した段階でS1119に進む。
S1119では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。この処理は、実施形態2のS819と同じである。
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。本実施形態の場合、ノイズマップにおける極値間の差が小さい場合は、極値による粒状性の差が少ないと判断し、濃度ムラを抑制するようにドットが配置されることになる。例えば、ノイズが最小となる位置にドットを追加するケースにおいて、最小値が複数存在する場合、実施形態2ではドットの追加位置をランダムに決定することとしていた。これに対し本実施形態では、ノイズの変動量がゼロの場合や所定値よりも小さい場合は、濃度ムラマップを考慮してドットが配置されることになる。なお、ノイズの変動量v_n(g)として、本実施形態ではノイズマップn(g)における極値間の差を使用したが、これに限定されない。例えばn(g)の分散や標準偏差を用いても構わない。
(本実施形態の効果)
図19の(a)及び(b)は、本実施形態の手法により生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、x方向のサイズSxが256画素、y方向のサイズSyが256画素とした。また、初期ドットパターンの階調数g0は0に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数k_nとして前述の式(1)を用い、フィルタ係数k_tとして前述の式(2)に重みWを乗算した式を用い、σnの値を1.8程度、σtの値を8.5程度、重みWを2.5程度にした。また、ノイズ変動量算出部1001で算出するノイズ変動量v_n(g)としては、ノイズマップn(g)における最大値と最小値との差を用いた。
図19(a)のグラフは、縦軸が濃度ムラ変動量算出部704で算出する濃度ムラ変動量v_t(g)、横軸が階調値gであり、濃度ムラ変動量v_t(g)の値が大きいほど、濃度ムラが目立つことを示している。図19(b)のグラフは、縦軸がノイズ変動量v_n(g)、横軸が階調値gであり、ノイズ変動量v_n(g)の値が大きいほど、ノイズが目立つことを示している。ノイズ変動量v_n(g)としては、ノイズマップn(g)における最大値と最小値との差を用いた。
図19(a)及び(b)のグラフには、所定値th_nの値を変えて生成した3種類の閾値マトリクスの評価結果が示されている。所定値th_nは、比較部1002にてノイズ変動量v_n(g)と比較する値である。
所定値th_nが0の場合は、常にノイズマップn(g)のみを考慮してドット配置が決定されるため、図19(b)における破線が示す通り、ノイズが最も目立たない。しかし、濃度ムラマップt(g)が考慮されないため、図19(a)における破線グラフが示す通り、濃度ムラが最も目立つ。
所定値th_nが∞の場合は、実施形態1と等価な結果が得られる。すなわち、ノイズマップn(g)と濃度ムラマップt(g)の両方を常に考慮してドットが配置されるため、図19(a)における細実線が示す通り、濃度ムラが最も目立たない。しかし、濃度ムラとノイズはトレードオフの関係にあるため、図19(b)における細実線が示す通り、ノイズが最も目立つ。
所定値th_nが1.4程度の場合は、判定条件に応じてドット配置の決定方法が切り替わるため、図19(a)における太実線が示す通り、ノイズマップn(g)と濃度ムラマップt(g)の両方を常に考慮する場合(所定値th_tが∞の場合)に比べると、濃度ムラが目立つ。しかしながら、図19(b)における太実線が示す通り、ノイズ変動量v_n(g)を1.4程度に制限できる。このように、所定値th_nを1.4程度に設定して処理を切り替えることにより、ノイズと濃度ムラの両方を常に考慮する場合に比べ、粒状性への影響を制限しつつ、濃度ムラを抑制することができる。
以上のとおり本実施形態によれば、粒状性への影響を最小化しつつ、濃度ムラを抑制することができる。
実施形態4
次に、濃度ムラの変動量とノイズの変動量との両方を用いてドットの配置方法を切り替える態様を実施形態4として説明する。なお、実施形態1~3と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
図12は、本実施形態に係る閾値マトリクス生成部101を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部101は、ドットパターン生成部701、第一フィルタ部702、第二フィルタ部703、濃度ムラ変動量算出部704、ノイズ変動量算出部1001、比較部1201、選択部706及びドット配置部707で構成される。また、図13は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
S1301では、ドットパターン生成部701が、階調数g=g0の初期ドットパターンd(g0)を生成する。ここでは、実施形態2で使用する初期ドットパターンと同じものが生成される。続くS1302~S1309は、S1301で生成した初期ドットパターンd(g0)を起点としてドットの追加を階調値gがgMAXに達するまで反復する処理である。実施形態2及び3との大きな違いはS1304における判定処理の内容であり、それ以外は異なるところがないので、S1302とS1303の説明は省く。
S1304では、濃度ムラの変動量v_t(g)がノイズの変動量v_n(g)よりも大きいか否かが、S1302で生成したノイズマップn(g)とS1303で生成した濃度ムラマップt(g)とに基づき判定される。この判定処理は、濃度ムラ変動量算出部704、ノイズ変動量算出部1001及び比較部1201によって以下のように行われる。まず、濃度ムラ変動量算出部704とノイズ変動量算出部1001が、それぞれ濃度ムラの変動量v_t(g)とノイズの変動量v_n(g)を算出する。例えば、v_t(g)として濃度ムラマップt(g)における最大値と最小値との差が算出され、v_n(g)としてノイズマップn(g)における最小極小値nMIN(g)とその次に小さい極小値nMIN2(g)との差の絶対値が算出される。そして、算出した濃度ムラ変動量v_t(g)とノイズ変動量v_n(g)とを比較し、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも小さい場合(判定結果が偽の場合)はS1305に進む。一方、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも大きい場合(判定結果が真の場合)はS1306に進む。
S1305では、ノイズマップn(g)のみに基づいて、ドットパターンに対しドットの追加がなされる。すなわち、n(g)のみを用いて、ドット密度が最も低い部分にドットが追加される。また、S1306では、ノイズマップn(g)と濃度ムラマップt(g)とに基づいて、ドットパターンに対しドットの追加がなされる。すなわち、n(g)+ t(g)を用いて、ドット密度が最も低い部分にドットが追加される。そして、ドットが追加された位置(xMIN、yMIN)に基づき閾値マトリクスM(x、y)における閾値が設定され(S1307)、階調数gの値がインクリメントされる(S1308)。そして、g=gMAXとなるまで処理が繰り返される(S1309)。階調値g=gMAXに達した段階でS1310に進む。
S1310では、S1301で生成した階調数g=g0の初期ドットパターンd(g0)を読み込む。続くS1311~S1318は、読み込んだ初期ドットパターンd(g0)を起点としてドットの削除を階調値gがgMINに達するまで反復する処理である。上述のとおり、判定処理以前は実施形態2及び3と異なるところがないので、S1311とS1312の説明は省く。
S1313では、濃度ムラの変動量v_t(g)がノイズの変動量v_n(g)よりも大きいか否かが、S1311で生成したノイズマップn(g)とS1312で生成した濃度ムラマップt(g)とに基づき判定される。この判定処理は、濃度ムラ変動量算出部704、ノイズ変動量算出部1001及び比較部1201によって以下のように行われる。まず、濃度ムラ変動量算出部704とノイズ変動量算出部1001が、それぞれ濃度ムラの変動量v_t(g)とノイズの変動量v_n(g)を算出する。例えば、v_t(g)として濃度ムラマップt(g)における最大値と最小値との差が算出され、v_n(g)としてノイズマップn(g)における最大極大値nMAX(g)とその次に大きい極大値nMAX2(g)との差が算出される。そして、算出した濃度ムラ変動量v_t(g)とノイズ変動量v_n(g)とを比較し、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも小さい場合(判定結果が偽の場合)はS1314に進む。一方、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも大きい場合(判定結果が真の場合)はS1315に進む。
S1314では、ノイズマップn(g)のみに基づいて、ドットパターンに対しドットの削除がなされる。すなわち、n(g)のみを用いて、ドット密度が最も高い部分からドットが削除される。また、S1315では、ノイズマップn(g)と濃度ムラマップt(g)とに基づいて、ドットパターンに対しドットの削除がなされる。すなわち、n(g)+ t(g)を用いて、ドット密度が最も高い部分からドットが削除される。そして、ドットが削除された位置(xMAX,yMAX)に基づき閾値マトリクスM(x,y)における閾値が設定され(S1316)、階調数gの値がデクリメントされる(S1317)。そして、g=gMINとなるまで処理が繰り返される(S1318)。階調値g=gMINに達した段階でS1319に進む。
S1319では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
(本実施形態の効果)
図20の(a)及び(b)は、本実施形態の手法により生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、x方向のサイズSxが256画素、y方向のサイズSyが256画素とした。また、初期ドットパターンの階調数g0は0に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数k_nとして前述の式(1)を用い、フィルタ係数k_tとして前述の式(2)に重みWを乗算した式を用い、σnの値を1.8程度、σtの値を8.5程度、重みWを2.5程度にした。また、濃度ムラ変動量算出部704で算出する濃度ムラ変動量v_t(g)としては、濃度ムラマップt(g)における最大値と最小値との差を、重みWで除算した値を用いた。また、ノイズ変動量算出部1001で算出するノイズ変動量v_n(g)としては、ノイズマップn(g)における最大値と最小値との差を用いた。
図20(a)のグラフは、縦軸が濃度ムラ変動量算出部704で算出する濃度ムラ変動量v_t(g)、横軸が階調値gであり、濃度ムラ変動量v_t(g)の値が大きいほど、濃度ムラが目立つことを示している。図20(b)のグラフは、縦軸がノイズ変動量算出部1001で算出するノイズ変動量v_n(g)、横軸が階調値gであり、ノイズ変動量v_n(g)の値が大きいほど、ノイズが目立つことを示している。
図20(a)及び(b)のグラフには、3種類の閾値マトリクスの評価結果が示されている。1つ目は、ノイズマップn(g)と濃度ムラマップt(g)の両方を常に考慮して生成した閾値マトリクスの評価結果であり、破線で示している。この閾値マトリクスは実施形態2の手法において所定値th_tを0に設定することで生成した。2つ目は、本実施形態の手法により生成した閾値マトリクスの評価結果であり、太実線で示している。3つ目は、常にノイズマップn(g)のみを考慮して生成した閾値マトリクスの評価結果であり、細実線で示している。この閾値マトリクスは実施形態2の手法において所定値th_tを∞に設定することで生成した。
図20(a)及び(b)のグラフにおいて、所定値th_t=0の閾値マトリクスと所定値th_t=∞の閾値マトリクスとに対応する評価結果は、図18の(a)及び(b)で示す評価結果と同じであり、濃度ムラとノイズはトレードオフの関係にある。一方、本実施形態の手法による閾値マトリクスの評価結果では、濃度ムラ低減とノイズ低減の効果の大きい方を選択してドット配置を決定するため、図20(a)及び(b)の実線が示す通り、ノイズ低減と濃度ムラ低減とを両立できている。
本実施形態の場合、ノイズ変動量と濃度ムラ変動量との大小関係を評価し、ノイズ低減と濃度ムラ低減の効果の大きい方を選択してドットの追加・削除の位置を決定する。つまり、濃度ムラの変動量とノイズの変動量のうち抑制効果の大きい方の変動量を用いてドットが配置されることになる。そのため、より効果的にノイズ低減と濃度ムラ低減とを両立させることができる。
実施形態5
実施形態4では、濃度ムラの変動量とノイズの変動量との両方を用いた判定を行ってドットの配置方法を切り替えることで「ノイズ+濃度ムラ」をトータルで改善できた。しかしながら、「ノイズ+濃度ムラ」のトータルで改善しても、ノイズもしくは濃度ムラのいずれか一方が悪化するケースがあり得た。そこで、ノイズマップや濃度ムラマップにおける平均値を考慮してドットの追加位置や削除位置を決定することで、ノイズも濃度ムラもできるだけ悪化させないようにする態様を、実施形態5として説明する。
図14は、本実施形態に係る閾値マトリクス生成部101を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部101は、ドットパターン生成部701、第一フィルタ部702、第二フィルタ部703、濃度ムラ変動量算出部704、ノイズ変動量算出部1001、比較部1401及びドット配置部1402で構成される。すなわち、本実施形態では、実施形態4に存在した選択部が存在せず、第一フィルタ部702で生成されたノイズマップn(g)、第二フィルタ部703で生成された濃度ムラマップt(g)及び比較部1401での比較結果がドット配置部1402に直接入力される。
また、図15は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。S1501~S1504、S1507~S1513、S1516~S1519は、実施形態4のS1301~S1304、S1307~S1313、S1316~S1319にそれぞれ対応する。以下、本実施形態の特徴である、ドットの追加位置や削除位置を決定する際にノイズマップ及び/又は濃度ムラマップにおける平均値を考慮する処理(S1505、S1506、S1514及S1515)について説明する。
ドット追加の反復処理において、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも小さい場合(S1504でNo)、S1505において、ドット配置部1402は、まず、濃度ムラマップt(g)における平均値tAVG(g)を求める。そして、ドットが存在せず、かつ、濃度ムラがその平均値よりも小さい位置のうち、ノイズn(g)が最小になる位置にドットを追加する。具体的には、ドットパターンd(g)内の画素値が0の画素のうち、t(g)の値がtAVG(g)よりも小さい画素の中から、その座標(x,y)におけるノイズマップn(g)の値が最小になる画素位置(xMIN,yMIN)をまず探索する。そして、見つかった当該画素位置(xMIN,yMIN)の画素値を0から1に変更する。一方、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも大きい場合(S1504でYes)、S1506において、ドット配置部1402は、まず、ノイズマップn(g)における平均値nAVG(g)を求める。そして、ドットが存在せず、かつ、ノイズがその平均値よりも小さい位置のうち、濃度ムラt(g)が最小になる位置にドットを追加する。具体的には、ドットパターンd(g)内の画素値が0の画素のうち、n(g)の値がnAVG(g)よりも小さい画素の中から、その座標(x,y)における濃度ムラマップt(g)の値が最小になる画素位置(xMIN,yMIN)をまず探索する。そして、見つかった当該画素位置(xMIN,yMIN)の画素値を0から1に変更する。なお、S1506では、濃度ムラt(g)が最小になる位置ではなく、n(g)と t(g)の和が最小になる位置にドットを追加しても構わない。
ドット削除の反復処理において、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも小さい場合(S1513でNo)、S1514において、ドット配置部1402は、まず、濃度ムラマップt(g)における平均値tAVG(g)を求める。そして、ドットが存在し、かつ、濃度ムラがその平均値よりも大きい位置のうち、ノイズn(g)が最大になる位置からドットを削除する。具体的には、ドットパターンd(g)内の画素値が1の画素のうち、t(g)の値がtAVG(g)よりも大きい画素の中から、その座標(x,y)におけるノイズマップn(g)の値が最大になる画素位置(xMAX,yMAX)をまず探索する。そして、見つかった当該画素位置(xMAX,yMAX)の画素値を1から0に変更する。一方、濃度ムラ変動量v_t(g)がノイズ変動量v_n(g)よりも大きい場合(S1513でYes)、S1515において、ドット配置部1402は、まず、ノイズマップn(g)における平均値nAVG(g)を求める。そして、ドットが存在し、かつ、ノイズがその平均値よりも大きい位置のうち、濃度ムラt(g)が最大になる位置からドットを削除する。具体的には、ドットパターンd(g)内の画素値が1の画素のうち、n(g)の値がnAVG(g)よりも大きい画素の中から、その座標(x,y)における濃度ムラマップt(g)の値が最大になる画素位置(xMAX,yMAX)をまず探索する。そして、見つかった当該画素位置(xMAX,yMAX)の画素値を1から0に変更する。なお、S1515では、濃度ムラt(g)が最大になる位置ではなく、n(g)と t(g)の和が最大になる位置からドットを削除しても構わない。
以上が、本実施形態に係る閾値マトリクス生成処理の内容である。
(本実施形態の効果)
図21の(a)及び(b)は、本実施形態の手法を実施形態4の手法に適用して生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、x方向のサイズSxが256画素、y方向のサイズSyが256画素とした。また、初期ドットパターンの階調数g0は0に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数k_nとして前述の式(1)を用い、フィルタ係数k_tとして前述の式(2)に重みWを乗算した式を用い、σnの値を1.8程度、σtの値を8.5程度、重みWを2.5程度にした。また、濃度ムラ変動量算出部704で算出する濃度ムラ変動量v_t(g)としては、濃度ムラマップt(g)における最大値と最小値との差を、重みWで除算した値を用いた。また、ノイズ変動量算出部1001で算出するノイズ変動量v_n(g)としては、ノイズマップn(g)における最大値と最小値との差を用いた。また、本実施形態の手法を実施形態4の手法に適用する際、前述の図13のフローチャートのS1305では、ドットが存在せず、かつ、濃度ムラがその平均値tAVG(g)よりも小さい位置のうち、n(g)が最小になる位置にドットを追加した。S1306では、ドットが存在せず、かつ、ノイズがその平均値nAVG(g)よりも小さい位置のうち、n(g)とt(g)の和が最小になる位置にドットを追加した。前述の通り、ドット削除の反復処理は実行しないようにしたため、S1314とS1315には変更を加えなかった。
図21(a)のグラフは、縦軸が濃度ムラ変動量算出部704で算出する濃度ムラ変動量v_t(g)、横軸が階調値gであり、濃度ムラ変動量v_t(g)の値が大きいほど、濃度ムラが目立つことを示している。図21(b)のグラフは、縦軸がノイズ変動量算出部1001で算出するノイズ変動量v_n(g)、横軸が階調値gであり、ノイズ変動量v_n(g)の値が大きいほど、ノイズが目立つことを示している。
図21(a)及び(b)のグラフには、2種類の閾値マトリクスの評価結果が示されている。1つは本実施形態の手法により生成した閾値マトリクスの評価結果であり、太実線で示している。もう1つは実施形態4の手法により生成した閾値マトリクスの評価結果であり、破線で示している。実施形態4の評価結果と本実施形態の評価結果とを比較すると、ノイズは同程度であるが、本実施形態の方が、濃度ムラのピークが抑制されているのが分かる。
本実施形態によれば、ドットを追加する際、ノイズマップにおける最小値を用いる場合は濃度ムラマップにおける平均値を下回る画素に、濃度ムラマップにおける最小値を用いる場合はノイズマップにおける平均値を下回る画素に、その対象が限定される。同様に、ドットを削除する際、ノイズマップにおける最大値を用いる場合は濃度ムラの平均値を上回る画素に、濃度ムラマップにおける最大値を用いる場合はノイズマップにおける平均値を上回る画素に、その対象が限定される。これにより、「ノイズ+濃度ムラ」を改善しつつ、その一方が悪化してしまうことも同時に防止することができる。
なお、上述したドットの追加位置や削除位置の決定方法は、実施形態1~3にも適用可能である。例えば、実施形態1に適用する場合のS404では、ドットが存在せず、かつ、ノイズがその平均値nAVG(g)よりも小さい位置のうち、n(g)とt(g)との和が最小になる位置にドットを追加すればよい。他の実施形態に適用する場合も同様である。
実施形態6
次に、ドットパターン間のズレにロバストな閾値マトリクスを生成する従来技術(特許文献3を参照)をベースに、ノイズ低減と濃度ムラ低減とを両立しつつ、ドットパターン間のズレにロバストな閾値マトリクスを生成する態様を、実施形態6として説明する。なお、前述の実施形態と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
図22(a)は、インクジェット方式による印刷方法を説明する図である。本実施形態の画像形成部112は、1色当たり2本のノズル列(ノズル列A及びノズル列B)を用いて印刷を行う。なお、図22(a)では説明の便宜上、各ノズル列についてのノズル数を8個としているが、例えば1200dpiの10インチのフルライン型であれば、12000個のノズルが各ノズル列に並ぶことになる。図22の(b)及び(c)は記録媒体上のドットの位置(インク滴の吐出位置)を表しており、図22(b)がノズル列Aに対応し、図22(c)がノズル列Bに対応する。ノズル列Aが偶数行を形成し、ノズル列Bが奇数行を形成することで、高速な画像形成を可能にする。印刷に用いる中間調の画像(ハーフトーン画像)は、量子化処理部214にてディザ処理を行い、ノズル列毎に生成する。この場合、ディザ処理に用いる閾値マトリクスも、ノズル列毎に生成する。
量子化処理部214は、まず、γ補正処理部213が出力する画像信号をノズル列Aとノズル列Bとに均等に分配する。そして、ノズル列Aに分配された画像信号とノズル列Bに分配された画像信号とにそれぞれ異なる閾値マトリクスを適用することで、印刷に用いるハーフトーン画像を生成する。この際、ノズル列A用のハーフトーン画像のドットパターンとノズル列B用のハーフトーン画像のドットパターンとを重ね合わせたときに、ノイズと濃度ムラが共に良好になることが望ましい。また、ノズル列の取り付け誤差や、インク吐出タイミングのズレなどによってドットパターン間に位置ズレが発生しても、ノイズと濃度ムラが悪化しないことが望ましい。
この点、従来技術では、ノズル列Aのドットパターンとノズル列Bのドットパターンとがある程度の相関性を持つように、2つのノズル列のドットパターンを重ね合わせたときのノイズを考慮して各ノズル列の閾値マトリクスを生成する。そのため、ドットパターンを重ね合わせたときのノイズが良好で、2つのノズル列のドットパターン間に位置ズレが発生してもノイズの悪化を抑制できる。しかし、濃度ムラまでは考慮していないため、2つのノズル列のドットパターンを重ね合わせたときの濃度ムラは必ずしも良好にならず、2つのノズル列のドットパターン間に位置ズレが発生したときの濃度ムラの悪化までは抑制できない。
一方、本実施形態では、各ノズル列の閾値マトリクスを生成する際に、ノズル列Aのドットパターンとノズル列Bのドットパターンとが、ある程度の相関性を持つように、ノイズだけでなく、濃度ムラも考慮してドット配置を行う。そのため、ドットパターンを重ね合わせたときにノイズだけでなく濃度ムラも良好となり、ドットパターン間に位置ズレが発生しても、ノイズと濃度ムラの双方の悪化を抑制できる。
以下の説明では、ノズル列Aのための閾値マトリクスを「M_A(x,y)」、ノズル列Bのための閾値マトリクスを「M_B(x,y)」と表記する。ノズル列Aは、偶数行を形成するため、閾値マトリクスM_A(x,y)を生成する際は、y%2=0を満たす偶数行のみに閾値を格納し、y%2=1を満たす奇数行には閾値を格納しない。一方、ノズル列Bは、奇数行を形成するため、閾値マトリクスM_B(x,y)を生成する際は、y%2=1を満たす奇数行のみに閾値を格納し、y%2=0を満たす偶数行には閾値を格納しない。なお、「%」は剰余演算を示す。また、閾値マトリクスのx方向のサイズを「Sx」、y方向のサイズを「Sy」とし、本実施形態では、Sxを256画素、Syを256画素とする。ただし、Sx=256画素、Sy=256画素は一例であり、任意のサイズとすることができる。また、閾値マトリクスM_A(x,y)を生成する過程のドットパターンを「d_A(x,y)」と表記し、閾値マトリクスM_B(x,y)を生成する過程のドットパターンを「d_B(x,y)」と表記する。ノズル列Aは、偶数行を形成するため、ドットパターンd_A(x,y)において、y%2=0を満たす偶数行のみにドットを配置し、y%2=1を満たす奇数行にはドットを配置しない。一方、ノズル列Bは、奇数行を形成するため、ドットパターンd_B(x,y)において、y%2=1を満たす奇数行のみにドットを配置し、y%2=0を満たす偶数行にはドットを配置しない。
ドットパターンd_A(x,y)、d_B(x,y)は、ドット追加やドット削除の反復過程において変化する。閾値マトリクスのy方向のサイズSyが偶数の場合、ドット数が0個のドットパターンから、ドット数がSx×Sy÷2個までの、Sx×Sy÷2+1通りのドットパターンが反復の各過程で生成される。そのため、ドットパターンd_A(x,y)、d_B(x,y)におけるドット数をgとしたとき、当該gを用いれば、反復過程における、ある1つの時点を特定できる。以下の説明では、ドット数(=階調数)gのときのドットパターンd_A(x,y)、d_B(x,y)を、座標x、yを省略して単に「d_A(g)」、「d_B(g)」と表記することとする。
図23は、本実施形態に係る閾値マトリクス生成部101を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部101は、ドットパターン生成部2301、第一フィルタ部2302A、2302B、第二フィルタ部2303A、2303B、加算部2304A、2304B、評価値算出部2305A、2305B、ドット配置部2306A、2306Bで構成される。
また、図24は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
S2401では、ドットパターン生成部2301が、階調値がg0の初期ドットパターンd_A(g0)、d_B(g0)を生成する。初期ドットパターンの階調数g0は、Sx×Sy÷2×0.5=256×256÷2×0.5=16384とする。本実施形態の初期ドットパターンの生成方法の詳細は後述する。
S2402~S2409は、実施形態1のS402~S407に対応する処理であり、S2401で生成した初期ドットパターンd(g0)を起点としてドットの追加を階調数gの値がgMAXに達するまで反復する処理である。本実施形態では、gMAX≧g0であり、gMAX=Sx×Sy÷2=32768とする。
S2402では、第一フィルタ部2302Aが、階調値gに対応するドットパターンd_A(g)に対して、フィルタ係数k_nのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示すノイズマップn_A(g)を生成する。この処理は、実施形態1のS402と同じである。また、第二フィルタ部2303Aが、階調値gに対応するドットパターンd_A(g)に対して、フィルタ係数k_tのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す濃度ムラマップt_A(g)を生成する。この処理は、実施形態1のS403と同じである。また、加算部2304Aが、ノイズマップn_A(g)と濃度ムラマップt_A(g)とを加算し、合成マップS_A(g)=n_A(g)+t_A(g)を生成する。
S2403では、第一フィルタ部2302Bが、階調値gに対応するドットパターンd_B(g)に対して、フィルタ係数k_nのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示すノイズマップn_B(g)を生成する。この処理は、実施形態1のS402と同じである。また、第二フィルタ部2303Bが、階調値gに対応するドットパターンd_B(g)に対して、フィルタ係数k_tのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す濃度ムラマップt_B(g)を生成する。この処理は、実施形態1のS403と同じである。また、加算部2304Bが、ノイズマップn_B(g)と濃度ムラマップt_B(g)とを加算し、合成マップS_B(g)=n_B(g)+t_B(g)を生成する。
S2404では、評価値算出部2305Aが、合成マップS_A(g)と、合成マップS_B(g)とを重み付け加算し、評価値E_A(g)=S_A(g)+α×S_B(g)を生成する。なお、重みαについては後述する。そして、ドット配置部2306Aが、評価値算出部2305Aから受け取ったE_A(g)を用いて、ドットパターンd_A(g)においてドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンd_A(g)の偶数行の中で、ドットが存在しない画素位置(画素値=0)のうち、その座標(x,y)における評価値E_A(g)が最小になる画素位置(xMIN_A,yMIN_A)を探索する。そして、見つかった当該画素位置(xMIN_A,yMIN_A)の画素値を0から1に変更する。なお、E_A(g)の値が最小となる画素位置が複数見つかった場合は、その中からドットを追加する位置をランダムに選択すればよい。
S2405では、ドットが追加された位置(xMIN_A,yMIN_A)に基づき、閾値マトリクスM_A(x,y)における閾値が設定される。具体的には、閾値マトリクスM_A(x,y)におけるM_A(xMIN_A,yMIN_A)の値として、現在のgの値が設定される。
S2406では、評価値算出部2305Bが、合成マップS_B(g)と、合成マップS_A(g)とを重み付け加算し、評価値E_B(g)=S_B(g)+α×S_A(g)を生成する。なお、重みαについては後述する。そして、ドット配置部2306Bが、評価値算出部2305Bから受け取ったE_B(g)を用いて、ドットパターンd_B(g)においてドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンd_B(g)の奇数行の中で、ドットが存在しない画素位置(画素値=0)のうち、その座標(x,y)における評価値E_B(g)が最小になる画素位置(xMIN_B,yMIN_B)を探索する。そして、見つかった当該画素位置(xMIN_B,yMIN_B)の画素値を0から1に変更する。なお、E_B(g)の値が最小となる画素位置が複数見つかった場合は、その中からドットを追加する位置をランダムに選択すればよい。
S2407では、ドットが追加された位置(xMIN_B,yMIN_B)に基づき、閾値マトリクスM_B(x,y)における閾値が設定される。具体的には、閾値マトリクスM_B(x,y)におけるM_B(xMIN_A,yMIN_A)の値として、現在のgの値が設定される。
続くS2408では、階調数gの値がインクリメントされて、g=g+1となる。そして、S2409では、階調数gの値がgMAX(ここでは32768)に達したか否かが判定される。判定の結果、g=gMAXでなければS2402に戻り、処理が続行される。一方、g=gMAXであればS2410に進む。これらの処理は、実施形態1のS406、S407と同じである。
S2410では、S2401で生成した階調値がg0=16384の初期ドットパターンd_A(g0)、d_B(g0)を読み込む。続くS2411~S2418は、実施形態1のS409~S414に対応する処理であり、S2401で生成した初期ドットパターンd(g0)を起点としてドットの削除を階調数gの値がgMINに達するまで反復する処理である。本実施形態でも、gMIN≦g0であり、gMIN=0とする。以下では、ドット削除の反復処理について、ドット追加の反復処理との相違点を中心に説明することとする。
S2411はS2402と同じであり、第一フィルタ部2302A、第二フィルタ部2303A、加算部2304Aが合成マップS_A(g)=n_A(g)+t_A(g)を生成する。続くS2412はS2403と同じであり、第一フィルタ部2302B、第二フィルタ部2303B、加算部2304Bが合成マップS_B(g)=n_B(g)+t_B(g)を生成する。
S2413では、S2404と同じく、評価値算出部2305Aが、評価値E_A(g)=S_A(g)+α×S_B(g)を生成する。そして、ドット配置部2306Aが、評価値算出部2305Aから受け取ったE_A(g)を用いて、ドットパターンd_A(g)においてドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンd_A(g)の偶数行の中で、ドットが存在する画素位置(画素値=1)のうち、その座標(x,y)における評価値E_A(g)が最大になる画素位置(xMAX_A,yMAX_A)を探索する。そして、見つかった当該画素位置(xMAX_A,yMAX_A)の画素値を1から0に変更する。なお、E_A(g) の値が最大となる画素位置が複数見つかった場合は、その中からドットを削除する位置をランダムに選択すればよい。
S2414では、ドットが削除された位置(xMIN_A,yMIN_A)に基づき、閾値マトリクスM_A(x,y)における閾値が設定される。具体的には、閾値マトリクスM_A(x,y)におけるM_A(xMIN_A,yMIN_A)の値として、現在のgの値が設定される。
S2415では、S2406と同じく、評価値算出部2305Bが、評価値E_B(g)=S_B(g)+α×S_A(g)を生成する。そして、ドット配置部2306Bが、評価値算出部2305Bから受け取ったE_B(g)を用いて、ドットパターンd_B(g)においてドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンd_B(g)の奇数行の中で、ドットが存在する画素位置(画素値=1)のうち、その座標(x,y)における評価値E_B(g)が最大になる画素位置(xMAX_B,yMAX_B)を探索する。そして、見つかった当該画素位置(xMAX_B,yMAX_B)の画素値を1から0に変更する。なお、E_B(g) の値が最大となる画素位置が複数見つかった場合は、その中からドットを削除する位置をランダムに選択すればよい。
S2416では、ドットが削除された位置(xMIN_B,yMIN_B)に基づき、閾値マトリクスM_B(x,y)における閾値が設定される。具体的には、閾値マトリクスM_B(x,y)におけるM_B(xMIN_B,yMIN_B)の値として、現在のgの値が設定される。
続くS2417では、階調数gの値がデクリメントされて、g=g-1となる。そして、S2418では、階調数gの値がgMIN(ここでは0)に達したか否かが判定される。判定の結果、g=gMINでなければS2411に戻り、処理が続行される。一方、g=gMINであればS2419に進む。これらの処理は、実施形態1のS413、S414と同じである。
S2419では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。本ステップまで処理が進んだ段階で、閾値マトリクスM_A(x,y)、M_B(x,y)には、gMINからgMAXまで(本実施形態の場合は0~32768)の値が格納されている。量子化処理部214に入力されるγ補正後画像のレンジが例えば0~255だとすると、ノズル列Aとノズル列Bに均等に分配された信号のレンジは、0~127となる。この0~127のレンジの画像に対して、0~32768までの値が格納された閾値マトリクスを適用しても、適切な量子化結果を得ることができない。そこで本ステップにおいて、実施形態1のS415と同じ処理を閾値マトリクスM_A(x,y)、M_B(x,y)に適用することで、閾値マトリクスの値のレンジを調整する。
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
(重みαについて)
評価値算出部2305A、2305Bで使用する重みαは、ノズル列Aのドットパターンd_A(g)と、ノズル列Bのドットパターンd_B(g)の相関性を制御するパラメータである。
α=0の場合は、片方のノズル列の合成マップのみが評価値に反映され、もう片方のノズル列の合成マップが評価値に反映されないため、ドットパターンd_A(g)と、ドットパターンd_B(g)は無相関になる。ドットパターンd_A(g)と、ドットパターンd_B(g)が無相関の場合、ドットパターン間の位置ズレによるノイズと濃度ムラの悪化が最も少なくなる。
α=1の場合は、両方のノズル列の合成マップが均等に評価値に反映される。この場合は、ズレ無しの状態で重ね合わせたドットパターンの配置が最適化されるため、ドットパターンの位置ズレが無い場合において、ノイズと濃度ムラが最も目立たなくなる。しかし、ドットパターンd_A(g)と、ドットパターンd_B(g)が相関を持つため、α=0の場合に比べ、ドットパターン間の位置ズレによるノイズと濃度ムラの悪化が大きくなる。
0<α<1の場合は、α=1の場合に比べてドットパターンd_A(g)とドットパターンd_B(g)の相関が弱くなるため、ドットパターン間の位置ズレによるノイズと濃度ムラの悪化がα=1の場合に比べて小さくなる。一方、α=0の場合に比べてd_A(g)とd_B(g)の相関が強くなるため、ドットパターンの位置ズレが無い場合において、ノイズと濃度ムラが目立たなくなる。
本実施形態では、このαの値は0.6に設定した。
(初期ドットパターンの生成方法)
本実施形態に係る初期ドットパターンの生成方法について、図25のフローチャートを参照して詳しく説明する。なお、以下の説明において記号「S」はステップを表す。
まず、S2501では、階調数g=g0のランダムなドットパターンd_A_r、d_B_rを生成する。d_A_rは、ノズル列Aに対応するため、偶数行のみにドットを配置する。d_B_rは、ノズル列Bに対応するため、奇数行のみにドットを配置する。
具体的には、まず、ドットが1つも存在しない画像を起点として、階調数がg0(本実施形態ではg0=16384)に達するまで、ドットの追加を繰り返し行い、d_A_rを生成する。次に、同様の処理を行うことで、d_B_rを生成する。ドットを追加する位置の候補は、例えば0~Sxの乱数を発生させてx方向の位置x_rを決定し、同様に、0~Syの乱数を発生させてy方向の位置yrを決定する。d_A_rを生成する際は、乱数で決定した座標(x_r,y_r)の位置が偶数行で、且つドットが存在しない場合において、当該位置にドットを追加(画素値を0から1に変更)する。当該画素位置が奇数行の場合、もしくは、当該画素位置の画素値が既に1になっていた場合は、新たに乱数を発生させ、ドットを追加する位置の候補を変更する。このような処理を繰り返して、ランダムなドットパターンd_A_rを得る。また、d_B_rを生成する際は、乱数で決定した座標(x_r,y_r)の位置が奇数行で、且つドットが存在しない場合において、当該位置にドットを追加(画素値を0から1に変更)する。当該画素位置が偶数行の場合、もしくは、当該画素位置の画素値が既に1になっていた場合は、新たに乱数を発生させ、ドットを追加する位置の候補を変更する。このような処理を繰り返して、ランダムなドットパターンd_B_rを得る。
続いてS2502では、S2501で生成した階調数g0のランダムなドットパターンd_A_rに対して、前述のS2402と同じ処理を適用し、合成マップS_A_rを生成する。続くS2503では、S2501で生成した階調数g0のランダムなドットパターンd_B_rに対して、前述のS2403と同じ処理を適用し、合成マップS_B_rを生成する。
そして、S2504では、前述のS2404と同じ処理を適用して評価値E_A_rを求め、このE_A_rに基づいて、ドットを移動する処理がなされる。まず、現在のランダムなドットパターンd_A_rの偶数行において、ドットが存在する画素の中から、評価値E_A_rの値が最大になる画素の位置(xMAX_A,yMAX_A)を探索する。次に、現在のランダムなドットパターンd_A_rの偶数行において、ドットが存在しない画素の中から、評価値E_A_rの値が最小になる画素の位置(xMIN_A,yMIN_A)を探索する。そして、座標(xMAX_A,yMAX_A)の位置にあるドットを、座標(xMIN_A,yMIN_A)の位置へと移動させる。すなわち、座標(xMAX_A,yMAX_A)の位置の画素値を0にして、座標(xMIN_A,yMIN_A)の位置の画素値を1にする。
同様に、S2505では、前述のS2406と同じ処理を適用して評価値E_B_rを求め、このE_B_rに基づいて、ドットを移動する処理がなされる。まず、現在のランダムなドットパターンd_B_rの奇数行において、ドットが存在する画素の中から、評価値E_B_rの値が最大になる画素の位置(xMAX_B,yMAX_B)を探索する。次に、現在のランダムなドットパターンd_B_rの奇数行において、ドットが存在しない画素の中から、評価値E_B_rの値が最小になる画素の位置(xMIN_B,yMIN_B)を探索する。そして、座標(xMAX_B,yMAX_B)の位置にあるドットを、座標(xMIN_B,yMIN_B)の位置へと移動させる。すなわち、座標(xMAX_B,yMAX_B)の位置の画素値を0にして、座標(xMIN_B,yMIN_B)の位置の画素値を1にする。
S2506では、S2502~S2505までの各処理が所定回数実行されたかどうかが判定される。判定の結果、実行回数が所定回数に到達していれば本処理を終える。そして、本処理を終えた時点におけるランダムなドットパターンd_A_r、d_B_rが、それぞれ初期ドットパターンd_A(g0)、d_B(g0)となる。一方、実行回数が所定回数に到達していなければS2502に戻り、処理が続行される。
以上のような処理により、本実施形態における初期ドットパターンd_A(g0)、d_B(g0)が生成される。
(本実施形態の効果)
図26~図28は、本実施形態により生成した、閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、x方向のサイズSxが256画素、y方向のサイズSyが256画素とした。また、初期ドットパターンの階調数g0は0に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数k_nとして前述の式(1)を用い、フィルタ係数k_tとして前述の式(2)に重みWを乗算した式を用い、σnの値を1.8程度、σtの値を8.5程度、重みWを2.5程度にした。なお、以降の説明では、ノズル列Aのドットパターンとノズル列Bのドットパターンとを位置ズレが無い状態で重ね合わせたドットパターンを「ズレ無し合成ドットパターン」と呼ぶこととする。また、ノズル列Aのドットパターンとノズル列Bのドットパターンとを位置ズレが発生した状態で重ね合わせたドットパターンを「ズレ有り合成ドットパターン」と呼ぶこととする。また、前述の通り、片方のノズル列において、階調値gのレンジは0から32768であるが、図26~図28では、両方のノズル列のドットパターンを合成して得られたドットパターンの評価値を示しているため、グラフの横軸の階調値gのレンジは0から65536となっている。
図26(a)のグラフは、縦軸がズレ無し合成ドットパターンの濃度ムラ変動量v_t(g)、横軸が階調値gであり、濃度ムラ変動量v_t(g)の値が大きいほど、ズレ無し合成ドットパターンの濃度ムラが目立つことを示している。ここでの濃度ムラ変動量v_t(g)は、ズレ無し合成ドットパターンと、フィルタ係数k_tとの巡回畳み込み演算により濃度ムラマップt(g)を求め、このt(g)の最大値と最小値との差を、重みWで除算した値である。図26(b)のグラフは、縦軸がズレ無し合成ドットパターンのノイズ変動量v_n(g)、横軸が階調値gであり、ノイズ変動量v_n(g)の値が大きいほどノイズが目立つことを示している。ここでのノイズ変動量v_n(g)は、ズレ無し合成ドットパターンと、フィルタ係数k_nとの巡回畳み込み演算により求められたノイズマップn(g)の、最大値と最小値との差である。
図26(a)及び(b)のグラフには、2種類の閾値マトリクスの評価結果が示されている。1つは本実施形態の手法により生成した閾値マトリクスの評価結果であり、太実線で示している。もう1つは、特許文献3に記載の従来技術により、ノイズは考慮するものの濃度ムラは考慮せずに生成した閾値マトリクスの評価結果であり、破線で示している。いずれのケースも、αの値は0.6である。本実施形態の評価結果と従来技術の評価結果とを比較すると、本実施形態により生成した閾値マトリクスではノイズが少し悪化するものの、濃度ムラが大幅に改善しているのが分かる。
図27及び図28のグラフには、本実施形態の手法により生成した閾値マトリクスについての、ズレ無し合成ドットパターンの評価結果(太実線)と、ズレ有り合成ドットパターンの評価結果(破線)が示されている。この場合において、図27(a)及び(b)の両グラフは、αの値を0.6に設定して生成した閾値マトリクスの評価結果であり、図28(a)及び(b)のグラフは、αの値を1.0に設定して生成した閾値マトリクスの評価結果である。また、ズレ有り合成ドットパターンは、ノズル列Bのドットパターンを、ノズル列Aのドットパターンに対し、x方向に1画素、y方向に1画素だけずらして重ね合わせたドットパターンとしている。
αの値を0.6に設定した場合、まずノイズについては、図27(b)のグラフの通り、位置ズレにより少し悪化する。しかし、αを1.0に設定した場合(図28(b)を参照)に比べてドットパターン間の相関が弱くなるため、図27(a)のグラフの通り、位置ズレが発生しても濃度ムラはほとんど悪化しない。これに対し、αの値を1.0に設定した場合、ドットパターン間の相関が強くなるため、図28(a)及び(b)のグラフの通り、位置ズレによってノイズも濃度ムラも大幅に悪化する。ただし、位置ズレが無い場合については、αの値を0.6に設定した場合に比べて、ノイズも濃度ムラも僅かながら改善する。
以上のとおり本実施形態の手法の場合、ノズル列Aのドットパターンと、ノズル列Bのドットパターンを重ね合わせたときに、ノイズだけでなく、濃度ムラも良好になる。また、αの値を0.6程度の値に設定することにより、ドットパターン間のズレが発生しても、ノイズと濃度ムラの悪化を抑制できることが分かる。
(変形例)
なお、S2406で評価値E_B(g)の算出に用いられる合成マップS_A(g)は、S2402で算出される。しかし、S2406の前の、S2404で、ドットパターンd_A(g)の状態が変化してしまうため、S2406において、S2402で算出された合成マップS_A(g)を評価値E_B(g)の算出に用いると、最適な位置にドットを追加できない可能性がある。そのため、S2406の直前にS2402を実行して、合成マップS_A(g)を再計算しても構わない。S2410からS2418の、ドットを削除するプロセスにおいても同様で、S2415の直前にS2411を実行して、合成マップS_A(g)を再計算しても構わない。また、初期ドットパターンを生成するプロセスにおいても同様で、S2505の直前にS2502を実行して、合成マップS_A_rを再計算しても構わない。
また、本実施形態では、ノズル列Aは偶数行のみを印刷し、ノズル列Bは奇数行のみを印刷するようにしたが、このようなドット配置の制約は必須ではない。例えば、ノズル列Aで千鳥パターン状に印刷し、ノズル列Bで逆千鳥パターン状に印刷するようにしても構わない。もしくは、ノズル列Aでx%2=0を満たす偶数列を印刷し、ノズル列Bでx%2=1を満たす奇数列を印刷するようにしても構わない。これらに対応する閾値マトリクスは、S2404やS2406において、偶数行のみにドットを追加可能、もしくは奇数行のみにドットを追加可能といった、ドット追加の制約を変更するだけで容易に生成できる。
また、本実施形態は、ノズル列が3列以上の場合にも適用できる。例えば、ノズル列が3列で、ノズル列A、ノズル列Bに加えてノズル列Cが存在する場合、ノズル列Aがy%3=0を満たす行を印刷し、ノズル列Bがy%3=1を満たす行を印刷し、ノズル列Cがy%3=2を満たす行を印刷する。この場合、図24のフローに、ノズル列Cの合成マップS_C(g)を生成するステップと、評価値E_C(g)を求めて当該E_C(g)が最小となる位置にドットを追加するステップと、閾値マトリクスM_C(g)の値を設定するステップを追加すればよい。合成マップS_C(g)の生成方法は、S2402やS2403と同じである。評価値E_C(g)を求める方法は、S2404やS2406と同様で、各ノズル列の合成マップを重み付け加算する。このとき、着目ノズル列の重みを1にして、他の2列のノズル列の重みをαにする。すなわち、評価値E_C(g)=S_C(g)+α×S_A(g)+α×S_B(g)とする。同様に、S2404では、評価値E_A(g)=S_A(g)+α×S_B(g)+α×S_C(g)とし、S2406では、評価値E_B(g)=S_B(g)+α×S_A(g)+α×S_C(g)とする。閾値マトリクスM_C(g)の値を設定する方法は、S2405やS2407と同じである。このような変更を、S2410からS2418の、ドットを削除するプロセスにも適用することで、ノズル列が3列以上の場合であっても、本実施形態が適用できる。
また、本実施形態は、異なる色の色材を印刷する場合にも適用できる。例えば、色材がC、M、Y、Kの4色の場合、ノズル列を4列と見なして本実施形態を適用する。これにより、ドットパターンの相関を色間で制御できる。
また、本実施形態においても、実施形態2~5のように、ノイズの変動量や、濃度ムラの変動量に基づいて、ノイズと濃度ムラの両方を考慮して行う処理と、ノイズのみを考慮して行う処理を切り替えても構わない。なお、ノイズのみ考慮する場合、S2404とS2413における評価値E_A(g)は、n_A(g)+α×n_B(g)とし、S2406とS2415における評価値E_B(g)は、n_B(g)+α×n_A(g)とすればよい。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。