(57)【要約】      （修正有）【課題】低粒状性を維持しつつ、さらに低周波の濃度ムラを低減することが可能な閾値マトリクスを得る画像処理装置、画像処理方法及びプログラムを提供する。【解決手段】ある階調のドットパターンに対し第一のフィルタを適用してノイズの分布状態を示す情報を生成する第一フィルタリング工程と、ある階調のドットパターンに対し第二のフィルタを適用して濃度ムラの分布状態を示す情報を生成する第二フィルタリング工程と、ノイズの分布状態を示す情報及び濃度ムラの分布状態を示す情報に基づいて、ドットパターンに対してドットの追加または削除を行うことにより、ある階調に隣接する階調のドットパターンを生成するドットパターン生成工程と、所定の階調の初期ドットパターンを起点として、第一フィルタリング工程、第二フィルタリング工程及びドットパターン生成工程を繰り返し適用して、閾値マトリクスの値を決定する決定工程と、を含む。【選択図】図４
2019126035.tif 000002
【特許請求の範囲】
【請求項１】
量子化処理に用いる閾値マトリクスの生成方法であって、
ある階調のドットパターンに対し第一のフィルタを適用してノイズの分布状態を示す情報を生成する第一フィルタリング工程と、
前記ある階調のドットパターンに対し第二のフィルタを適用して濃度ムラの分布状態を示す情報を生成する第二フィルタリング工程と、
前記ノイズの分布状態を示す情報及び前記濃度ムラの分布状態を示す情報に基づいて、前記ある階調に隣接する階調のドットパターンを生成するドットパターン生成工程と、
所定階調のドットパターンを起点として、前記第一フィルタリング工程、前記第二フィルタリング工程及び前記ドットパターン生成工程を繰り返し適用して得られた全階調のドットパターンに基づいて、前記閾値マトリクスの値を決定する決定工程と、
を有することを特徴とする閾値マトリクスの生成方法。
【請求項２】
前記ドットパターン生成工程は、
前記ノイズの分布状態を示す情報と前記濃度ムラの分布状態を示す情報からノイズの評価値と濃度ムラの評価値との重み和を生成する工程と、
ドットの追加もしくはドットの削除のうち少なくとも一方を行う工程であって、
前記ドットの追加を行う場合には、ドットが存在せず、かつ、前記重み和が最小となる位置にドットを追加し、
前記ドットの削除を行う場合には、ドットが存在し、かつ、前記重み和が最大となる位置からドットを削除する、工程と、
をさらに含むことを特徴とする請求項１に記載の閾値マトリクスの生成方法。
【請求項３】
量子化処理に用いる閾値マトリクスの生成方法であって、
ある階調のドットパターンに対し第一のフィルタを適用してノイズの分布状態を示す情報を生成する第一フィルタリング工程と、
前記ある階調のドットパターンに対し第二のフィルタを適用して濃度ムラの分布状態を示す情報を生成する第二フィルタリング工程と、
前記ノイズの分布状態を示す情報及び前記濃度ムラの分布状態を示す情報に基づいて、前記ドットパターンに対してドットの追加または削除を行うことにより、前記ある階調に隣接する階調のドットパターンを生成するドットパターン生成工程と、
所定階調のドットパターンを起点として、前記第一フィルタリング工程、前記第二フィルタリング工程及び前記ドットパターン生成工程を繰り返し適用して得られた全階調のドットパターンに基づいて、前記閾値マトリクスの値を決定する決定工程と、
を有し、
前記ドットパターン生成工程は、
前記ノイズの分布状態を示す情報及び前記濃度ムラの分布状態を示す情報の少なくとも一方に関する評価値の変動量を算出する変動量算出工程と、
前記ノイズの分布状態を示す情報を用いて前記ドットの追加または削除を行なう第１のドットパターン更新工程と、
前記ノイズの分布状態を示す情報と前記濃度ムラの分布状態を示す情報の両方を用いて前記ドットの追加及び削除を行う第２のドットパターン更新工程と
をさらに有し、
前記評価値の変動量に応じて、前記第１のドットパターン更新工程と、前記第２のドットパターン更新工程とを切り替える
ことを特徴とする閾値マトリクスの生成方法。
【請求項４】
前記ドットパターン生成工程は、
前記濃度ムラの評価値の変動量が所定の基準値より小さい場合は、前記第１のドットパターン更新工程を用いて前記ドットの追加または削除を行い、
前記濃度ムラの評価値の変動量が前記所定の基準値以上の場合は、前記第２のドットパターン更新工程を用いて前記ドットの追加または削除を行う
ことを特徴とする請求項３に記載の閾値マトリクスの生成方法。
【請求項５】
前記ドットパターン生成工程は、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量以下の場合は、前記ノイズの分布状態を示す情報を用いて前記ドットの追加または削除を行い、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量よりも大きい場合は、前記ノイズの分布状態を示す情報と前記濃度ムラの分布状態を示す情報とを用いて前記ドットの追加または削除を行う
ことを特徴とする請求項３に記載の閾値マトリクスの生成方法。
【請求項６】
前記評価値の変動量は、前記評価値における最大値と最小値との差である
ことを特徴とする請求項３乃至５のいずれか１項に記載の閾値マトリクスの生成方法。
【請求項７】
前記評価値の変動量は、前記評価値における極値間の差であることを特徴とする請求項３乃至５のいずれか１項に記載の閾値マトリクスの生成方法。
【請求項８】
前記濃度ムラの評価値の変動量は、当該評価値における最大値と最小値との差であり、
前記ノイズの評価値の変動量は、当該評価値における極値間の差である
ことを特徴とする請求項３乃至５のいずれか１項に記載の閾値マトリクスの生成方法。
【請求項９】
前記ドットの追加を行う場合においては、
前記濃度ムラの評価値の変動量が前記所定の基準値より小さい場合、ドットが存在せず、かつ、ノイズの評価値が最小となる位置にドットを追加し、
前記濃度ムラの評価値の変動量が前記所定の基準値以上の場合、ドットが存在せず、かつ、ノイズの評価値と濃度ムラの評価値との重み和が最小となる位置にドットを追加し、
前記ドットの削除を行う場合においては、
前記濃度ムラの評価値の変動量が前記所定の基準値より小さい場合、ドットが存在し、かつ、ノイズの評価値が最大となる位置からドットを削除し、
前記濃度ムラの評価値の変動量が前記所定の基準値以上の場合、ドットが存在し、かつ、ノイズの評価値と濃度ムラの評価値との重み和が最大となる位置からドットを削除する
ことを特徴とする請求項３又は４に記載の閾値マトリクスの生成方法。
【請求項１０】
前記ドットの追加を行う場合においては、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量以下の場合、ドットが存在せず、かつ、ノイズの評価値が最小となる位置にドットを追加し、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量よりも大きい場合、ドットが存在せず、かつ、ノイズの評価値と濃度ムラの評価値との重み和が最小となる位置にドットを追加し、
前記ドットの削除を行う場合においては、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量以下の場合、ドットが存在し、かつ、ノイズの評価値が最大となる位置からドットを削除し、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量よりも大きい場合、ドットが存在し、かつ、ノイズの評価値と濃度ムラの評価値との重み和が最大となる位置からドットを削除する
ことを特徴とする請求項３又は５に記載の閾値マトリクスの生成方法。
【請求項１１】
前記ドットの追加を行う場合においては、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量以下の場合、ドットが存在せず、かつ、濃度ムラの評価値がその平均値よりも小さい位置のうちノイズの評価値が最小となる位置にドットを追加し、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量よりも大きい場合、ドットが存在せず、かつ、ノイズの評価値がその平均値よりも小さい位置のうちノイズの評価値と濃度ムラの評価値との重み和が最小となる位置にドットを追加し、
前記ドットの削除を行う場合においては、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量以下の場合、ドットが存在し、かつ、濃度ムラの評価値がその平均値よりも大きい位置のうちノイズの評価値が最大となる位置からドットを削除し、
前記濃度ムラの評価値の変動量が前記ノイズの評価値の変動量よりも大きい場合、ドットが存在し、かつ、ノイズの評価値がその平均値よりも大きい位置のうちノイズの評価値と濃度ムラの評価値との重み和が最大となる位置からドットを削除する
ことを特徴とする請求項３又は５に記載の閾値マトリクスの生成方法。
【請求項１２】
所定の階調を持つ入力画像を、当該所定の階調よりも低い階調を持つ出力画像に変換する量子化処理を行う量子化手段と、
複数の記録素子列を有する記録ヘッドを用いて、記録媒体に前記出力画像を形成する画像形成手段と、
を備えた画像形成装置において、
前記量子化処理は、請求項１乃至１１のいずれか１項に記載の閾値マトリクスの生成方法にて生成された閾値マトリクスを用いたディザ法による量子化処理である、
ことを特徴とする画像形成装置。
【請求項１３】
前記複数の記録素子列毎の閾値マトリクスにおけるドットパターンの相関性を考慮して、各記録素子列に対応する閾値マトリクスを生成する生成手段をさらに備え、
前記量子化手段は、前記生成手段で生成された各記録素子列に対応する閾値マトリクスを用いて、前記ディザ法による量子化処理を行なう
ことを特徴とする請求項１２に記載の画像形成装置。
【請求項１４】
コンピュータに、請求項１乃至１１のいずれか１項に記載の閾値マトリクスの生成方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、量子化処理に関し、特に、量子化処理後の画像において、低粒状性を維持しつつ、低周波な濃度ムラを低減する技術に関する。
【背景技術】
【０００２】
インクジェットプリンタやレーザプリンタといった印刷デバイスは一般的に、自身が出力可能な階調数の画像を得るために、入力画像に対して量子化処理（擬似中間調処理）を適用する。この量子化処理の手法の一つとしてディザ法が知られている。ディザ法は、入力画像の各画素の値を、所定の閾値と比較し、その結果に基づいて各画素の出力値が決定される。ディザ法で用いる、閾値が格納されている閾値マトリクスのサイズは一般的に入力画像のサイズよりも小さいため、入力画像に対して周期的に繰り返し適用することで各画素の出力値を決定している。
【０００３】
ディザ法について例えば特許文献１には、量子化処理後の画像におけるノイズ感が少なく、低粒状性を実現可能な、閾値マトリクスの生成方法が記載されている。Void&Cluster法と呼ばれる特許文献１の技術は、ドットパターンにローパスフィルタを適用して平滑化した濃度画像を求め、濃度変動を抑える様にドットを追加／削除すべき座標を決定することで、低粒状性を実現する閾値マトリクスを得ている。しかしながら、Void&Cluster法によって生成された閾値マトリクスの場合、当該閾値マトリクス内のドットパターンの偏りが原因で、量子化処理後の画像において比較的低周波な濃度ムラが発生することがあった。この濃度ムラは、粒状感として視認される濃度変動に比べて周波数が低く、閾値マトリクスの適用周期での繰り返しパターンとして視認され易い。この点、閾値マトリクス内の各小区画におけるドット数も考慮してドットの追加または削除を行うことで、上記濃度ムラを低減する技術が提案されている（特許文献２）。具体的には、ドット数の少ない小領域に優先的にドットを追加し、ドット数の多い小領域から優先的にドットを削除することによってドットパターンの偏りを無くし、濃度ムラの改善を図っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＵＳＰ５５３５０２０
【特許文献２】特許第５４７２４５８号公報
【特許文献３】特開２０１５−１９９２１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献２に記載の方法を用いて得られた閾値マトリクスを適用した量子化処理においても、その処理後の画像に視認可能なレベルの濃度ムラが見られることがあった。これは、閾値マトリクス内を固定の小区画に区切り、各小区画内でドット数の偏りを解消するように動作させているところ、小区画内のドットの粗密や小区画を跨るようなドット数の偏りまでは解消できない為である。このように従来の技術では粒状性と濃度ムラの両方を効率的に抑制することは困難であった。
【課題を解決するための手段】
【０００６】
本発明に係る、量子化処理に用いる閾値マトリクスの生成方法は、ある階調のドットパターンに対し第一のフィルタを適用してノイズの分布状態を示す情報を生成する第一フィルタリング工程と、前記ある階調のドットパターンに対し第二のフィルタを適用して濃度ムラの分布状態を示す情報を生成する第二フィルタリング工程と、前記ノイズの分布状態を示す情報及び前記濃度ムラの分布状態を示す情報に基づいて、前記ある階調に隣接する階調のドットパターンを生成するドットパターン生成工程と、所定階調のドットパターンを起点として、前記第一フィルタリング工程、前記第二フィルタリング工程及び前記ドットパターン生成工程を繰り返し適用して得られた全階調のドットパターンに基づいて、前記閾値マトリクスの値を決定する決定工程と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明に係る手法で得られた閾値マトリクスを用いることで、その量子化処理後の画像において、低粒状性を維持しつつ、さらに低周波の濃度ムラを低減することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】印刷システムの構成の一例を示す図
【図２】（ａ）は情報処理装置のハードウェア構成を示すブロック図、（ｂ）は画像形成装置が備える画像処理部のハードウェア構成を示すブロック図
【図３】実施形態１に係る閾値マトリクス生成部を実現するソフトウェア構成を示す機能ブロック図
【図４】実施形態１に係る閾値マトリクス生成処理の全体の流れを示すフローチャート
【図５】実施形態１に係る初期ドットパターンの生成方法の流れを示すフローチャート
【図６】（ａ）〜（ｆ）は、実施形態１の効果を説明する図
【図７】実施形態２に係る閾値マトリクス生成部を実現するソフトウェア構成を示す機能ブロック図
【図８】実施形態２に係る閾値マトリクス生成処理の全体の流れを示すフローチャート
【図９】実施形態２に係る初期ドットパターンの生成方法の流れを示すフローチャート
【図１０】実施形態３に係る閾値マトリクス生成部を実現するソフトウェア構成を示す機能ブロック図
【図１１】実施形態３に係る閾値マトリクス生成処理の全体の流れを示すフローチャート
【図１２】実施形態４に係る閾値マトリクス生成部を実現するソフトウェア構成を示す機能ブロック図
【図１３】実施形態４に係る閾値マトリクス生成処理の全体の流れを示すフローチャート
【図１４】実施形態５に係る閾値マトリクス生成部を実現するソフトウェア構成を示す機能ブロック図
【図１５】実施形態５に係る閾値マトリクス生成処理の全体の流れを示すフローチャート
【図１６】階調値毎の分散比を示す図
【図１７】複数の閾値マトリクスの特性を評価した結果の一例を示す図
【図１８】実施形態２の効果を説明する図
【図１９】実施形態３の効果を説明する図
【図２０】実施形態４の効果を説明する図
【図２１】実施形態５の効果を説明する図
【図２２】インクジェット方式による印刷方法の一例を説明する図
【図２３】実施形態６に係る閾値マトリクス生成部を実現するソフトウェア構成を示す機能ブロック図
【図２４】実施形態６に係る閾値マトリクス生成処理の全体の流れを示すフローチャート
【図２５】実施形態６に係る初期ドットパターンの生成方法の流れを示すフローチャート
【図２６】実施形態６の効果を説明する図
【図２７】実施形態６の効果を説明する図
【図２８】実施形態６の効果を説明する図
【発明を実施するための形態】
【０００９】
以下、添付の図面を参照して、本発明を実施する形態について説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１０】
（用語の定義）
以下の各実施形態の説明では、生成過程または生成後の閾値マトリクスを「Ｍ（ｘ，ｙ）」と表記するものとする。閾値マトリクスＭ（ｘ，ｙ）は二次元の配列であり、ｘ、ｙは座標を表す。閾値マトリクスのｘ方向のサイズを「Ｓｘ」、ｙ方向のサイズを「Ｓｙ」とし、本実施形態では、Ｓｘを２５６画素、Ｓｙを２５６画素とする。ただし、Ｓｘ＝２５６画素、Ｓｙ＝２５６画素は一例であり、任意のサイズとすることができる。
【００１１】
本実施形態においては、上述のVoid&Cluster法と同様、初期ドットパターンに対するドット追加の反復または、ドット削除の反復により、閾値マトリクスＭ（ｘ，ｙ）を生成する。この過程で生成されるドットパターンを「ｄ（ｘ，ｙ）」と表記するものとする。ドットパターンｄ（ｘ，ｙ）は二次元の配列であり、そのサイズはＭ（ｘ，ｙ）と同じである。ドットパターンｄ（ｘ，ｙ）の各画素の値は、ドットが存在するときは１、ドットが存在しないときは０とする。
【００１２】
ドットパターンｄ（ｘ，ｙ）は、ドット追加やドット削除の反復過程において変化する。すなわち、ドット数が０個のドットパターンから、ドット数がＳｘ×Ｓｙ個までの、Ｓｘ×Ｓｙ＋１通りのドットパターンが反復の各過程で生成される。そのため、ドットパターンｄ（ｘ，ｙ）におけるドット数をｇとしたとき、当該ｇを用いれば、反復過程における、ある１つの時点を特定できる。以下の説明では、ドット数（＝階調数）ｇのときのドットパターンｄ（ｘ，ｙ）を、座標ｘ、ｙを省略して単に「ｄ（ｇ）」と表記することとする。
【実施形態１】
【００１３】
（印刷システムの構成）
図１は、本実施形態に係る印刷システムの構成の一例を示す図である。図１に示す印刷システムは、情報処理装置１００と画像形成装置１１０とで構成される。情報処理装置１００は、閾値マトリクス生成部１０１を有し、ディザ法により量子化処理（ディザ処理）で用いる閾値マトリクスを生成し、画像形成装置１１０へ供給する。また、情報処理装置１００は、プリンタドライバ（不図示）を有し、印刷対象となる電子文書等の印刷指示を画像形成装置１１０に対して行う機能も有する。図２（ａ）は、情報処理装置１００のハードウェア構成を示すブロック図である。情報処理装置１００は、ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、ＨＤＤ２０４及びネットワークＩ／Ｆ２０５で構成される。ＣＰＵ２０１は、プログラム等に従って情報処理装置１００全体の動作を制御する。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ２０４は、各種プログラムやプリンタドライバ等を記憶する大容量記憶部である。閾値マトリクス生成部１０１は、ＨＤＤ２０４等に格納された対応する制御プログラムをＲＡＭに展開し、ＣＰＵがこれを実行することで実現される。ネットワークＩ／Ｆ２０５は、情報処理装置１００をＬＡＮ等のネットワークに接続するインタフェースである。情報処理装置１００は、ネットワークＩ／Ｆ２０５を用いて、ＬＡＮ上の画像形成装置１１０に対して閾値マトリクスのデータを送るなど情報のやり取りを行う。
【００１４】
画像形成装置１１０は、画像処理部１１１と画像形成部１１２により構成される。画像処理部１１１は、情報処理装置１００で生成された閾値マトリクスを用いて量子化処理を行って、画像形成部１１２で取り扱い可能な印刷用画像データを生成する。画像形成部１１２は、生成された印刷用画像データに従って、例えばインクジェット方式で紙等の記録媒体に印刷を行う。図２（ｂ）は、画像処理部１１１のハードウェア構成を示すブロック図である。画像処理部１１１は、カラーマッチング処理部２１１、色分解処理部２１２、ガンマ補正処理部２１３、量子化処理部２１４、ＣＰＵ２１５、ＲＡＭ２１６、ＲＯＭ２１７及び通信部２１８からなる。ＣＰＵ２１５は、ＲＯＭ２１７に格納されたプログラムに基づいて、後述する各処理部及び全体を統括制御する。ＲＡＭ２１６は、ＣＰＵ２１５の作業領域として使用される。通信部２１８は、情報処理装置１００との間で各種通信を行う。例えば、生成された閾値マトリクスのデータや印刷指示をＬＡＮ等のネットワークを介して受け取る。カラーマッチング処理部２１１は、情報処理装置１００から送られてくる多階調の入力画像の色を表す色信号（ＲＧＢ信号）を、画像形成部１１２の色再現域に合わせたデバイスＲＧＢ信号に変換する。色分解処理部２１２は、予めＲＯＭ２１７に用意されている色分解テーブルにより、デバイスＲＧＢ信号を画像形成部１１２で使用される色材色であるＣｙａｎ、Ｍａｇｅｎｔａ、Ｙｅｌｌｏｗ、Ｂｌａｃｋを表すＣＭＹＫ信号に変換する。γ補正処理部２１３は、ＲＯＭ２１７に格納されている階調値−濃度特性を補正するγ補正テーブルによって、ＣＭＹＫ信号に対して階調値−濃度特性が一定の関係になるような補正を加えたＣ’Ｍ’Ｙ’Ｋ’信号へ変換する。量子化処理部２１４は、入力画像のＣ’Ｍ’Ｙ’Ｋ’信号に対し、上述の閾値マトリクスを用いたディザ処理を行い、より少ない階調数のＣ’’Ｍ’’Ｙ’’Ｋ’’信号へ変換して、中間調の画像（ハーフトーン画像）を生成する。画像処理部１１１を構成する上記各部（カラーマッチング処理部２１１、色分解処理部２１２、γ補正処理部２１３、量子化処理部２１４）は、ロジック回路で構成することで高速処理を可能としている。
【００１５】
（閾値マトリクスの生成）
次に、情報処理装置１００における、閾値マトリクスの生成処理について説明する。図３は、本実施形態に係る閾値マトリクス生成部１０１を実現するソフトウェア構成を示す機能ブロック図である。図３に示すとおり、本実施形態の閾値マトリクス生成部１０１は、ドットパターン生成部３０１、第一フィルタ部３０２、第二フィルタ部３０３、加算部３０４及びドット配置部３０５で構成される。なお、閾値マトリクス生成部１０１を構成する要素の一部又は全部をハードウェア（回路）で実現してもよい。図４は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【００１６】
Ｓ４０１では、ドットパターン生成部３０１が、階調数ｇ＝ｇ0の初期ドットパターンｄ（ｇ0）を生成する。本実施形態では、初期ドットパターンの階調数ｇ0は、Ｓｘ×Ｓｘ×０．５＝２５６×２５６×０．５＝３２７６８とする。初期ドットパターンの生成方法の詳細は後述する。
【００１７】
Ｓ４０２〜Ｓ４０７は、Ｓ４０１で生成した初期ドットパターンｄ（ｇ0）を起点としたドットの追加を、階調数ｇの値がｇMAXに達するまで反復する処理である。この反復処理によって、階調値がｇのドットパターンに対してドットを１つ追加してその隣接する階調（すなわち、階調値がｇ＋１）のドットパターンを生成するという動作が繰り返される。ここで、ｇMAX≧ｇ0であり、本実施形態では、ｇMAX＝Ｓｘ×Ｓｙ＝６５５３６とする。このようなドット追加の反復処理と、後述するドット削除の反復処理（Ｓ４０９〜Ｓ４１４）とにより、全階調のドットパターンが生成される。 
【００１８】
Ｓ４０２では、第一フィルタ部３０２が、階調値ｇに対応するドットパターンｄ（ｇ）に対して、フィルタ係数ｋ_ｎのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示す情報を生成する。このノイズの分布状態を示す情報（以下、「ノイズマップｎ（ｇ）」と呼ぶ。）は、ドットパターンｄ（ｇ）と同じサイズの、その値が階調値ｇによって変化する二次元の配列である。このノイズマップｎ（ｇ）によって、階調値がｇのドットパターンｄ（ｇ）における、ドットの粗密を評価することができる。例えば、ノイズマップｎ（ｇ）における値が小さい場所ほど平滑化濃度が低く、ドットが疎であると評価する。逆に、ノイズマップｎ（ｇ）における値が大きい場所ほど平滑化濃度が高く、ドットが密であると評価する。
【００１９】
Ｓ４０３では、第二フィルタ部３０３が、階調値ｇに対応するドットパターンｄ（ｇ）に対して、フィルタ係数ｋ_ｔのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す情報を生成する。この濃度ムラの分布状態を示す情報（以下、「濃度ムラマップｔ（ｇ）」と呼ぶ。）も、ドットパターンｄ（ｇ）と同じサイズの、その値が階調値ｇによって変化する二次元の配列である。この濃度ムラマップｔ（ｇ）によって、階調値がｇのドットパターンｄ（ｇ）における、より低周波な濃度ムラを評価することができる。例えば、濃度ムラマップｔ（ｇ）における値が小さい場所ほど濃度が低いと評価し、逆に、ｔ（ｇ）の値が大きい場所ほど濃度が高いと評価する。
【００２０】
ここで、上記Ｓ４０２及びＳ４０３でそれぞれ用いられる、フィルタ係数ｋ_ｎ及びフィルタ係数ｋ_ｔについて説明する。閾値マトリクスは、入力画像に対して周期的に適用されることを想定している。両ステップのフィルタリング処理では、特許文献１と同様、ドットパターンｄ（ｇ）と使用するフィルタ係数との巡回畳み込み演算によって、ノイズ成分及び濃度ムラ成分を抽出する。巡回畳み込み演算は、通常の畳み込み演算を、周期的境界条件を設定したドットパターンｄ（ｇ）とフィルタ係数との間で行う演算である。フィルタ係数ｋ_ｎ及びフィルタ係数ｋ_ｔは、ともに二次元配列であり、本実施形態ではドットパターンｄ（ｇ）と同じサイズとする。すなわち、ｘ方向のフィルタサイズをＳｆｘ、ｙ方向のフィルタサイズをＳｆｙとしたとき、Ｓｆｘ＝Ｓｆｙ＝２５６とする。フィルタ係数ｋ_ｎ及びフィルタ係数ｋ_ｔは、それぞれ以下の式（１）及び式（２）で表される。
【００２１】
【数１】
2019126035.tif 000003
【００２２】
【数２】
2019126035.tif 000004
【００２３】
上記式（１）及び式（２）において、（ｘ，ｙ）は座標を表す。ｘ0及びｙ0はフィルタ係数の中心座標を表し、ｘ0＝Ｓｆｘ÷２、ｙ0＝Ｓｆｙ÷２である。そして、σnはｋ_ｎ（ｘ，ｙ）の周波数特性を規定するパラメータ、σtはＫ_ｔ（ｘ，ｙ）の周波数特性を規定するパラメータである。ドットの追加を行うルーチンでは、ドット密度が粗の部分にドットを追加することで、最終的に低粒状性を実現することを目的としている。これを好適に実現するためには、ドットパターンｄ（ｇ）から、粒状性として視覚的に目立つ周波数成分を抽出する必要がある。一般的な印刷物において、粒状性として目立つ周波数成分は約６ｃｙｃｌｅｓ／ｍｍ以下であり、濃度ムラとして視覚的に目立つ周波数成分は約０．７５ｃｙｃｌｅｓ／ｍｍ以下であることが分かっている。例えば印刷解像度を１２００ｄｐｉとした場合、上記各周波数帯を適切に抽出するためのσnの値としては例えば１．８程度、σtの値としては８．５程度を用いればよい。なお、各ステップで使用するフィルタ係数としては上記式（１）や式（２）の例に限定されるものではなく、粒状性として目立つ周波数成分が抽出できればよい。通常、通過帯域によってフィルタサイズは決まるため、印刷解像度を１２００ｄｐｉとした場合、ノイズ成分の抽出に用いるフィルタは９画素×９画素程度のローパスフィルタ、濃度ムラの抽出に用いるフィルタは６５画素×６５画素程度のローパスフィルタでよい。また、これらのフィルタリング処理では、巡回畳み込み演算に代えて、周波数空間における乗算を用いてもよい。図４のフローの説明に戻る。
【００２４】
Ｓ４０４では、Ｓ４０２で生成したノイズマップｎ（ｇ）とＳ４０３で生成した濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンｄ（ｇ）に対しドットの追加がなされる。この処理は、加算部３０４とドット配置部３０５によって行われる。まず、加算部３０４が、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）とを合成する。すなわち、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）との和が求められる。得られた合成結果（以下、「ｎ（ｇ）＋ｔ（ｇ）」と表記）は、ドット配置部３０５に出力される。ドット配置部３０５は、加算部３０４から受け取ったｎ（ｇ）＋ｔ（ｇ）を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンｄ（ｇ）内のドットが存在しない画素位置（画素値＝０）のうち、その座標（ｘ，ｙ）におけるノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の和が最小になる画素位置（ｘMIN，ｙMIN）をまず探索する。そして、見つかった当該画素位置（ｘMIN，ｙMIN）の画素値を０から１に変更する。なお、ｎ（ｇ）＋ｔ（ｇ） の値が最小となる画素位置が複数見つかった場合は、その中からｔ（ｇ） の値が最小となる画素位置（ｘMIN，ｙMIN）の画素値を１にすればよい。さらに、ｔ（ｇ） の値が最小となる位置が複数存在する場合は、その中からドットを追加する位置をランダムに選択すればよい。
【００２５】
Ｓ４０５では、ドットが追加された位置（ｘMIN，ｙMIN）に基づき、閾値マトリクスＭ（ｘ，ｙ）における閾値が設定される。具体的には、閾値マトリクスＭ（ｘ，ｙ）におけるＭ（ｘMIN，ｙMIN）の値として、現在のｇの値が設定される。続くＳ４０６では、階調数ｇの値がインクリメントされて、ｇ＝ｇ＋１となる。
【００２６】
Ｓ４０７では、階調数ｇの値がｇMAX（ここでは６５５３６）に達したか否かが判定される。判定の結果、ｇ＝ｇMAXでなければＳ４０２に戻り、処理が続行される。一方、ｇ＝ｇMAXであればＳ４０８に進む。
【００２７】
Ｓ４０８では、Ｓ４０１で生成した階調値がｇ0＝３２７６８の初期ドットパターンｄ（ｇ0）を読み込む。続くＳ４０９〜Ｓ４１４は、読み込んだ初期ドットパターンｄ（ｇ0）を起点としてドットの削除を階調数ｇの値がｇMINに達するまで反復する処理である。この反復処理によって、階調値がｇのドットパターンに対してドットを１つ削除してその隣接する階調（すなわち、階調値がｇ−１）のドットパターンを生成するという動作が繰り返される。ここで、ｇMIN≦ｇ0であり、本実施形態では、ｇMIN＝０とする。以降のドット削除の反復処理の結果とＳ４０７までで得られたドット追加の反復処理の結果とを組み合わせることで全階調のドットパターンが出来上がる。以下では、ドット削除の反復処理について、ドット追加の反復処理との相違点を中心に説明することとする。
【００２８】
Ｓ４０９はＳ４０２と同じであり、第一フィルタ部３０２が上述のノイズマップｎ（ｇ）を生成する。続くＳ４１０はＳ４０３と同じであり、第二フィルタ部３０３が濃度ムラマップｔ（ｇ）を生成する。
【００２９】
Ｓ４１１では、Ｓ４０９で生成したノイズマップｎ（ｇ）とＳ４１０で生成した濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンｄ（ｇ）に対しドットの削除がなされる。すなわち、ドット配置部３０５が、加算部３０４の出力結果であるｎ（ｇ）＋ｔ（ｇ）を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンｄ（ｇ）内のドットが存在（画素値＝１）する画素位置のうち、その座標（ｘ，ｙ）におけるノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の和が最大になる画素位置（ｘMAX，ｙMAX）をまず探索する。そして、見つかった当該画素位置（ｘMAX，ｙMAX）の画素値を１から０に変更する。なお、ｎ（ｇ）＋ｔ（ｇ） の値が最大となる画素位置が複数見つかった場合は、その中からｔ（ｇ） の値が最大となる画素位置（ｘMAX，ｙMAX）の画素値を０にすればよい。さらに、ｔ（ｇ） の値が最大となる位置が複数存在する場合は、その中からドットを削除する位置をランダムに選択すればよい。
【００３０】
Ｓ４１２では、ドットが削除された位置（ｘMAX，ｙMAX）に基づき、閾値マトリクスＭ（ｘ，ｙ）における閾値が設定される。具体的には、閾値マトリクスＭ（ｘ，ｙ）におけるＭ（ｘMAX，ｙMAX）の値として、現在のｇの値が設定される。続くＳ４１３では、階調数ｇの値がデクリメントされて、ｇ＝ｇ−１となる。そして、Ｓ４１４では、階調数ｇの値がｇMIN（ここでは０）に達したか否かが判定される。判定の結果、ｇ＝ｇMINでなければＳ４０９に戻り、処理が続行される。一方、ｇ＝ｇMINであればＳ４１５に進む。
【００３１】
Ｓ４１５では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。本ステップまで処理が進んだ段階で、閾値マトリクスＭ（ｘ，ｙ）には、ｇMINからｇMAXまで（本実施形態の場合は０〜６５５３６）の値が格納されている。ディザ処理を行う際の入力画像の信号値が例えば８ビットの場合、入力画像のレンジが０〜２５５であるため、０〜６５５３６までの値が格納された閾値マトリクスを使用しても、適切な量子化結果を得ることができない。そこで本ステップにおいて、入力画像の信号値のビット数に合うように、閾値マトリクスＭ（ｘ，ｙ）の値のレンジを調整する。例えば、閾値マトリクスの値のレンジをｔｈMINからｔｈMAXに変更したい場合、調整後の閾値マトリクスの値は、ａ×Ｍ（ｘ，ｙ）＋ｂで求められる。ただし、ａ＝（ｔｈMAX−ｔｈMIN）÷（ｇMAX−ｇMIN）、ｂ＝ｔｈMIN−ａ×ｇMINである。なお、レンジ調整の方法は、この方法に限らず、例えば、特許文献１に記載の方法を用いても構わない。
【００３２】
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
【００３３】
（初期ドットパターンの生成方法）
本実施形態では、はじめにランダムなドットパターンを生成し、このランダムなドットパターンを起点としてドットの移動を繰り返すことにより、粒状性が低く且つ、濃度ムラが目立たない初期ドットパターンｄ（ｇ0）を生成する。以下、本実施形態に係る初期ドットパターンの生成方法について、図５のフローチャートを参照して詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【００３４】
Ｓ５０１では、階調数ｇ＝ｇ0のランダムなドットパターンｄ_ｒを生成する。具体的には、ドットが１つも存在しない画像を起点として、階調数がｇ0（本実施形態ではｇ0＝３２７６８）に達するまで、ドットの追加を繰り返し行って、ランダムなドットパターンを生成する。ドットを追加する位置の候補は、例えば０〜Ｓｘの乱数を発生させてｘ方向の位置ｘ_ｒを決定し、同様に、０〜Ｓｙの乱数を発生させてｙ方向の位置ｙｒを決定する。そして、決定した座標（ｘ_ｒ，ｙ_ｒ）の位置にドットが存在しない場合は当該位置にドットを追加（画素値を０から１に変更）する。この場合において、当該画素位置の画素値が既に１になっていた場合は、新たに乱数を発生させ、ドットを追加する位置の候補を変更する。このような処理を繰り返して、ランダムなドットパターンｄ_ｒを得る。
【００３５】
Ｓ５０２では、Ｓ５０１で生成した階調数ｇ0のランダムなドットパターンｄ_ｒに対して、前述のＳ４０２と同じ処理を適用し、ノイズマップｎ_ｒを生成する。続くＳ５０３では、ランダムなドットパターンｄ_ｒに対して、前述のＳ４０３と同じ処理を適用し、濃度ムラマップｔ_ｒを生成する。
【００３６】
そして、Ｓ５０４では、ノイズマップｎ_ｒと濃度ムラマップｔ_ｒとの合成結果に基づいて、ドットを移動する処理がなされる。具体的には以下のとおりである。まず、現在のランダムなドットパターンｄ_ｒにおけるドットが存在する画素の中から、ｎ_ｒ＋ｔ_ｒの値が最大になる画素の位置（ｘMAX，ｙMAX）を探索する。次に、現在のランダムなドットパターンｄ_ｒにおけるドットが存在しない画素の中から、ｎ_ｒ＋ｔ_ｒの値が最小になる画素の位置（ｘMIN，ｙMIN）を探索する。そして、座標（ｘMAX，ｙMAX）の位置にあるドットを、座標（ｘMIN，ｙMIN）の位置へと移動させる。すなわち、座標（ｘMAX，ｙMAX）の位置の画素値を０にして、座標（ｘMIN，ｙMIN）の位置の画素値を１にする。 
【００３７】
Ｓ５０５では、Ｓ５０２〜Ｓ５０４までの各処理が所定回数実行されたかどうかが判定される。所定回数は例えば１００回など任意であるが、特許文献１と同様、所定の収束条件を設定しても構わない。判定の結果、実行回数が所定回数に到達していれば本処理を終える。そして、本処理を終えた時点におけるランダムなドットパターンｄ_ｒが、初期ドットパターンｄ（ｇ0）となる。一方、実行回数が所定回数に到達していなければＳ５０２に戻り、処理が続行される。
【００３８】
以上のような処理により、本実施形態の初期ドットパターンｄ（ｇ0）が生成される。 
【００３９】
（本実施形態の効果）
ここで、本実施形態の効果について詳しく説明する。図６の（ａ）〜（ｆ）は、本実施形態の効果を説明する図であり、ドットを１つ追加するときの例を、便宜的に一次元空間において示している。図６（ａ）はある階調数ｇにおけるドットパターンｄを示している。
【００４０】
まず、従来技術について説明する。特許文献１の技術では、ドットパターンにおけるノイズの評価値のみに基づいてドットの追加がなされる。図６（ｂ）は、（ａ）のドットパターンｄから生成した、ノイズの分布状態を示すノイズマップｎを示している。特許文献１の技術では、このノイズマップｎの値が最小となる位置にドットを追加していく。図６（ｂ）に示すノイズマップｎの場合、最小値であるｘ１の位置にドットが追加されることになる。しかしながら、最小値であるＸ１の周辺よりも、その次に値が小さいＸ２の周辺の方がドットの間隔が広い。これは、周波数の低い濃度ムラを低減するためには、Ｘ１の位置ではなくＸ２の位置にドットを追加すべきであることを意味している。特許文献１の技術では、ノイズの評価値のみに基づいてドットの追加位置が決まるため、図６（ｂ）のような状況であっても、Ｘ２の位置にドットを追加することができず、その結果、濃度ムラが目立ってしまうことになる。
【００４１】
この点、特許文献２の技術では、濃度ムラを各小区画におけるドット数ｃで表現し、当該ドット数ｃを考慮したドット配置を行うことで、濃度ムラの低減を図っている。図６（ｃ）は、図６（ａ）のドットパターンｄに対応する、小区画毎のドット数ｃ（この例では、左側の小区画のドット数が４個、右側の小区画のドット数が３個）を示している。特許文献２の技術では、このような小区画毎のドット数ｃとノイズマップｎとの和が最小となる位置にドットが追加される。図６（ｄ）は、図６（ｂ）のノイズマップｎと、図６（ｃ）に示す小区画毎のドット数との和を示している。この場合、和の最小値はＸ２の位置になり、Ｘ１ではなくＸ２の位置にドットが追加されるので、特許文献１の問題を解消できている。しかしながら、図６（ｃ）に示す小区画毎のドット数ｃでは、各小区画内におけるドットの偏りを考慮できず、この偏りが濃度ムラとして視認されることがある。例えば、小区画の区切り位置が図６（ｃ’）のようになったとする。図６（ｃ’）と図６（ｃ）とを比較すると、左側の区画のドット数が４個から３個に変化し、右側の区画のドット数が３個から４個へと変化している。小区画毎のドット数ｃが図６（ｃ’）の場合、ノイズマップｎとの和は図６（ｄ’）のようになる。この場合の最小値はＸ２ではなくＸ１の位置になるので、Ｘ２ではなくＸ１の位置にドットが追加されることなる。この結果、濃度ムラは解消されず、かえって強めてしまう。このように、特許文献２の技術では、同じドットパターンであっても小区画の区切り位置によって、濃度ムラを低減できないことがある。これは、特許文献２の技術が、小区画内のドットの粗密や小区画同士を跨ぐドット間の粗密までは考慮できていないことに起因するものである。
【００４２】
これに対し本実施形態の手法では、濃度ムラを、小区画毎のドット数ｃではなく、ドットパターンｄの低周波成分を表現した濃度ムラマップｔで評価する。濃度ムラを低周波成分で評価する場合、フィルタ範囲内の相対的なドット位置に応じて評価値が決定される。すなわち、フィルタ内のドット配置が同じであれば、閾値マトリクス内の位置に関わらず、低周波成分の値は同じになる。そのため、低周波成分を表す濃度ムラマップｔを用いたドット配置では、特許文献２の技術と比べてより確実に濃度ムラを低減できる。図６（ｅ）は、図６（ａ）のドットパターンｄから抽出した濃度ムラの分布状態を示す濃度ムラマップｔを示している。本実施形態の手法では、図６（ｂ）に示すノイズマップｎと図６（ｅ）に示す濃度ムラマップｔとの和を求め、その和の値が最小となる位置にドットが追加される。図６（ｆ）は、図６（ｂ）のノイズマップｎと、図６（ｅ）の濃度ムラマップｔとの和を示している。図６（ｆ）の場合、和の最小値はＸ２に近いＸ３の位置となり、このＸ３の位置にドットが追加される。このように、本実施形態の手法では、濃度ムラの低減に最も効果的なＸ３の位置にドットが追加できることが分かる。
【００４３】
さらに、本実施形態の手法では、ドットパターンｄから濃度ムラを表現する低周波数成分を抽出する際に、視覚感度に基づくローパスフィルタを用いる。そのため、前述のＳ４０３及びＳ４１０で生成される濃度ムラマップｔは、小区画毎のドット数ｃに比べ、人間が知覚する濃度ムラに近い。このような濃度ムラマップｔを用いてドット配置を行うことにより、視認される濃度ムラをより効果的に低減できる。
【００４４】
（変形例）
なお、本実施形態では、図３の構成を有する閾値マトリクス生成部１０１が、ドット追加の反復処理を行った後に、ドット削除の反復処理を行うようにしているがこのような構成に限定されない。例えば、閾値マトリクス生成部１０１を２つ設け、Ｓ４０１で初期ドットパターンｄ（ｇ0）を生成した後に、Ｓ４０２〜Ｓ４０７におけるドット追加とＳ４０９〜Ｓ４１４におけるドット削除を並列で処理する構成でもよい。
【００４５】
また、上述のＳ４０４やＳ４１１で生成する、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）との和は、重みを加味した重み和でもよい。例えば、濃度ムラの抑制効果を高くした閾値マトリクスを作りたい場合は、濃度ムラマップｔ（ｇ）の重みを大きくして、濃度ムラをより緩和する方向にドットの追加・削除がなされるように設計すればよい。例えば、フィルタ係数ｋ_ｎ及びフィルタ係数ｋ_ｔとして前述の式（１）及び式（２）を用い、σnの値を１．８程度、σtの値を８．５程度とした場合を考える。この場合、ノイズマップｎ（ｇ）に対する濃度ムラマップｔ（ｇ）の重みＷを２．５程度とすることにより、好適な閾値マトリクスを得ることができる。
【００４６】
なお、ノイズと濃度ムラを両立するためには、ノイズマップｎ（ｇ）の分散Ｖａｒ_ｎ（ｇ）と、重みＷを乗算した後の濃度ムラマップｔ（ｇ）の分散Ｖａｒ_ｔ（ｇ）とが同程度であることが望ましい。ここで、「分散比Ｆ（ｇ）＝Ｖａｒ_ｔ（ｇ）÷Ｖａｒ_ｎ（ｇ）」と定義する。
【００４７】
仮に、「Ｖａｒ_ｎ（ｇ）＞＞Ｖａｒ_ｔ（ｇ）」の場合（すなわち「Ｆ（ｇ）＜＜１」の場合）、濃度ムラマップｔ（ｇ）を考慮したドット配置ができない。逆に、「Ｖａｒ_ｎ（ｇ）＜＜Ｖａｒ_ｔ（ｇ）」の場合（すなわち「Ｆ（ｇ）＞＞１」の場合）、ノイズマップｎ（ｇ）を考慮したドット配置ができない。
【００４８】
そのため、重みＷは、Ｖａｒ_ｎ（ｇ）と、Ｖａｒ_ｔ（ｇ）とがほぼ同程度になるように決定するのがよい。詳細には、最小階調値と最大階調値を除く、ほぼ全ての階調値ｇにおいて、分散比Ｆ（ｇ）が０．５以上１０以下となるように重みＷを決定するのが望ましい。決定方法の具体例を以下に示す。階調値ｇにおける分散比Ｆ（ｇ）は、生成されるドットパターンによって変化することが分かっている。そこで、重みＷを複数段階変化させて、複数パターンの閾値マトリクスを生成し、ある重みを与えたときの分散比Ｆ（ｇ）をまず確認する。例えば、重みＷが１のときの閾値マトリクスと、重みＷが２．５のときの閾値マトリクスと、重みＷが１０のときの閾値マトリクスを生成し、それぞれの場合における分散比Ｆ（ｇ）を確認する。そして、分散比Ｆ（ｇ）が０．５以上１０以下の範囲に収まっているときの重みＷを、適切な重みとして採用する。
【００４９】
図１６は、フィルタ係数ｋ_ｎ及びフィルタ係数ｋ_ｔとして前述の式（１）及び式（２）を用い、σnの値を１．８程度、σtの値を８．５程度、重みＷを２．５程度にしたときの、階調値ｇごとの分散比Ｆ（ｇ）を示すグラフである。図１６のグラフにおいては、最小階調値と最大階調値を除く、ほぼ全ての階調値ｇにおいて、分散比が０．５以上１０以下の範囲に収まっている。よって、このケースでの重みＷ＝２．５は、適切な重み係数となる。さらに、重みＷは、階調値ｇごとに変化させても構わない。例えば、階調値ｇのときの重みをＷ（ｇ）とし、所望の分散比をＦ_０（例えば、Ｆ_０＝５．５）とする。このとき、「重みＷ（ｇ）＝（Ｆ_０×Ｖａｒ_ｎ（ｇ）÷Ｖａｒ_ｔ（ｇ））0.5」とすることにより、最小階調値と最大階調値を除く全ての階調において、所望の分散比Ｆ_０を実現できる。図１７は、このように、分散比が所望の値になるようにして生成した、複数の閾値マトリクスの特性を評価した結果の一例を示すグラフである。なお、フィルタ係数ｋ_ｎ及びフィルタ係数ｋ_ｔとして前述の式（１）及び式（２）を用い、σnの値を１．８程度、σtの値を８．５程度とした。
【００５０】
図１７のグラフにおいて、横軸は分散比Ｆ（ｇ）で、それぞれの分散比の値が、１つの閾値マトリクスに対応している。縦軸は、閾値マトリクスの特性の評価値である。具体的には、評価対象の閾値マトリクスを用いて、３３階調の均一パッチ画像に対してディザ処理を適用し、生成されたハーフトーン画像の評価値をパッチごとに求めて、それぞれの評価値を平均化した値である。ハーフトーン画像の評価値は、濃度ムラが目立つ度合いの評価値と、ノイズが目立つ度合いの評価値とで、いずれもその値が大きいほど、濃度ムラもしくはノイズが目立つことを示している。濃度ムラが目立つ度合いの評価値は、評価対象のハーフトーン画像に、濃度ムラが目立つ帯域のフィルタを畳み込んだ画像の、変動に関する特徴量である。また、ノイズが目立つ度合いの評価値は、評価対象のハーフトーン画像に、ノイズが目立つ帯域のフィルタを畳み込んだ画像の、変動量に関する特徴量である。発明者が行った主観評価実験によれば、これら２つの評価値がいずれも０．１７以下であれば、ノイズと濃度ムラが目立たないことが分かっている。
【００５１】
図１７の評価結果においては、分散比が０．５以上１０以下であれば、これら２つの評価値が０．１７以下となり、ノイズの抑制と濃度ムラの抑制とを両立できる。一方、分散比が０．５未満の場合は、濃度ムラマップｔ（ｇ）を考慮したドット配置ができず、濃度ムラ評価値が０．１７よりも悪化する。また、分散比が１０を超える場合は、ノイズマップｎ（ｇ）を考慮したドット配置ができず、ノイズ評価値が０．１７よりも悪化する。このように、分散比Ｆ（ｇ）が０．５以上１０以下となるように重みＷを決定することで、ノイズの抑制と濃度ムラの抑制とを両立できる。なお、重みＷを決める指標は、分散比Ｆ（ｇ）に限定されない。例えば、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の変動に関する特徴量の比率R（ｇ）を、分散比Ｆ（ｇ）の代わりに用いても構わない。この際、ノイズマップｎ（ｇ）の変動に関する特徴量をＣ_ｎ（ｇ）、濃度ムラマップｔ（ｇ）の変動に関する特徴量をＣ_ｔ（ｇ）とすれば、特徴量の比率R（ｇ）は、Ｃ_ｔ（ｇ）÷Ｃ_ｎ（ｇ）で求めることができる。また、変動を示す特徴量としては、標準偏差や、振幅などを用いてもよい。
【００５２】
以上のとおり、本実施形態によれば、低粒状性を維持しつつ、さらに低周波の濃度ムラをより効果的に低減することが可能な閾値マトリクスを得ることができる。
【実施形態２】
【００５３】
実施形態１では、ノイズと濃度ムラの両方を考慮してドットを配置することで、粒状性と濃度ムラの両方を低減させることを可能とした。しかし、階調値によっては、濃度ムラが目立たないことがある。この場合、ノイズと濃度ムラの両方を考慮してドットを配置するよりも、ノイズのみを考慮してドットを配置した方が低粒状性を実現できる。そこで、濃度ムラの変動量に着目し、濃度ムラが目立たないと判断される場合には、ノイズのみを考慮したドット配置を行う態様について、実施形態２として説明する。なお、実施形態１と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【００５４】
図７は、本実施形態に係る閾値マトリクス生成部１０１を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部１０１は、ドットパターン生成部７０１、第一フィルタ部７０２、第二フィルタ部７０３、濃度ムラ変動量算出部７０４、比較部７０５、選択部７０６及びドット配置部７０７で構成される。また、図８は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【００５５】
Ｓ８０１では、ドットパターン生成部７０１が、階調値がｇ0の初期ドットパターンｄ（ｇ0）を生成する。実施形態１と同様、初期ドットパターンの階調数ｇ0は、Ｓｘ×Ｓｘ×０．５＝２５６×２５６×０．５＝３２７６８とする。ただし、初期ドットパターンの生成方法が実施形態１とは異なっている。本実施形態の初期ドットパターンの生成方法の詳細は後述する。
【００５６】
Ｓ８０２〜Ｓ８０９は、実施形態１のＳ４０２〜Ｓ４０７に対応する処理であり、Ｓ８０１で生成した初期ドットパターンｄ（ｇ0）を起点としてドットの追加を階調数ｇの値がｇMAXに達するまで反復する処理である。実施形態１との違いはＳ８０４とＳ８０５が追加されている点である。本実施形態でも、ｇMAX≧ｇ0であり、ｇMAX＝Ｓｘ×Ｓｙ＝６５５３６とする。
【００５７】
Ｓ８０２では、第一フィルタ部７０２が、階調値ｇに対応するドットパターンｄ（ｇ）に対して、フィルタ係数ｋ_ｎのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示すノイズマップｎ（ｇ）を生成する。この処理は、実施形態１のＳ４０２と同じである。続くＳ８０３では、第二フィルタ部７０３が、階調値ｇに対応するドットパターンｄ（ｇ）に対して、フィルタ係数ｋ_ｔのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す濃度ムラマップｔ（ｇ）を生成する。この処理は、実施形態１のＳ４０３と同じである。
【００５８】
Ｓ８０４では、濃度ムラの変動量ｖ_ｔ（ｇ）が予め設定した所定値ｔｈ_ｔよりも大きいか否かが、Ｓ８０３で生成した濃度ムラマップｔ（ｇ）に基づき判定される。この判定処理は、濃度ムラ変動量算出部７０４と比較部７０５とによって以下のように行われる。まず、濃度ムラ変動量算出部７０４において、濃度ムラの変動量ｖ_ｔ（ｇ）を求める。ここで、ｖ_ｔ（ｇ）はスカラー量であり、本実施形態では濃度ムラマップｔ（ｇ）における最大値と最小値との差を用いる。すなわち、ｔ（ｇ）の最大値をｔMAX（ｇ）、最小値をｔMIN（ｇ）としたとき、ｔMAX（ｇ）からｔMIN（ｇ）を減算した値をｖ_ｔ（ｇ）として用いる。なお、最大値と最小値との差に代えて振幅を用いてもよいし、例えばｔ（ｇ）の分散や標準偏差をｖ_ｔ（ｇ）としても構わない。次に、比較部７０５において、ｖ_ｔ（ｇ）を所定値ｔｈ_ｔと比較する。なお、所定値ｔｈ_ｔは、濃度ムラが目立つか否かを切り分ける基準となる値であり、所望する閾値マトリクスの特性に応じて、予め設定しておく。判定の結果、濃度ムラ変動量ｖ_ｔ（ｇ）が所定値ｔｈ_ｔよりも小さい場合（判定結果が偽の場合）はＳ８０５に進み、濃度ムラ変動量ｖ_ｔ（ｇ）が所定値ｔｈ_ｔよりも大きい場合（判定結果が真の場合）はＳ８０６に進む。
【００５９】
Ｓ８０５では、ノイズマップｎ（ｇ）のみに基づいて、ドットパターンに対しドットの追加がなされる。この処理は、選択部７０６とドット配置部７０７によって行われる。Ｓ８０４の判定結果が偽の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）を出力する。ドット配置部７０７は、このノイズマップｎ（ｇ）を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンｄ（ｇ）内のドットが存在しない画素位置（画素値＝０）のうち、その座標（ｘ，ｙ）におけるノイズマップｎ（ｇ）の値が最小になる画素位置（ｘMIN，ｙMIN）をまず探索する。そして、見つかった当該画素位置（ｘMIN，ｙMIN）の画素値を０から１に変更する。
【００６０】
Ｓ８０６では、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンに対しドットの追加がなされる。この処理も、選択部７０６とドット配置部７０７によって行われる。Ｓ８０４の判定結果が真の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）と第二フィルタ部７０３から入力された濃度ムラマップ ｔ（ｇ）とを合成し、その結果であるｎ（ｇ）＋ ｔ（ｇ）を出力する。ドット配置部７０７は、このｎ（ｇ）＋ ｔ（ｇ）を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。この処理は、実施形態１のＳ４０４と同じである。
【００６１】
Ｓ８０７では、ドットが追加された位置（ｘMIN，ｙMIN）に基づき、閾値マトリクスＭ（ｘ，ｙ）における閾値が設定される。続くＳ８０８では、階調数ｇの値がインクリメントされて、ｇ＝ｇ＋１となる。そして、Ｓ８０９では、階調数ｇの値がｇMAX（ここでは６５５３６）に達したか否かが判定される。判定の結果、ｇ＝ｇMAXでなければＳ８０２に戻り、処理が続行される。一方、ｇ＝ｇMAXであればＳ８１０に進む。これらの処理は、実施形態１のＳ４０５〜Ｓ４０７と同じである。
【００６２】
Ｓ８１０では、Ｓ８０１で生成した階調値がｇ0＝３２７６８の初期ドットパターンｄ（ｇ0）を読み込む。続くＳ８１１〜Ｓ８１８は、読み込んだ初期ドットパターンｄ（ｇ0）を起点としてドットの削除を階調数ｇの値がｇMINに達するまで反復する処理である。実施形態１との違いはＳ８１３とＳ８１４が追加されている点である。本実施形態でも、ｇMIN≦ｇ0であり、ｇMIN＝０とする。以下では、ドット削除の反復処理について、ドット追加の反復処理との相違点を中心に説明することとする。
【００６３】
Ｓ８１１はＳ８０２と同じであり、第一フィルタ部７０２が上述のノイズマップｎ（ｇ）を生成する。続くＳ８１２はＳ８０３と同じであり、第二フィルタ部８０３が濃度ムラマップｔ（ｇ）を生成する。
【００６４】
Ｓ８１３では、Ｓ８０４と同様、濃度ムラの変動量ｖ_ｔ（ｇ）が予め設定した所定値ｔｈ_ｔよりも大きいか否かが、Ｓ８１２で生成した濃度ムラマップｔ（ｇ）に基づき判定される。この判定処理の内容については、Ｓ８０４で説明したとおりである。判定の結果、濃度ムラ変動量ｖ_ｔ（ｇ）が所定値ｔｈ_ｔよりも小さい場合（判定結果が偽の場合）はＳ８１４に進み、濃度ムラ変動量ｖ_ｔ（ｇ）が所定値ｔｈ_ｔよりも大きい場合（判定結果が真の場合）はＳ８１５に進む。
【００６５】
Ｓ８１４では、ノイズマップｎ（ｇ）のみに基づいて、ドットパターンに対しドットの削除がなされる。この処理は、選択部７０６とドット配置部７０７によって行われる。Ｓ８１３の判定結果が偽の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）を出力する。ドット配置部７０７は、このノイズマップｎ（ｇ）を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンｄ（ｇ）内のドットが存在する画素位置（画素値＝１）のうち、その座標（ｘ，ｙ）におけるノイズマップｎ（ｇ）の値が最大になる画素位置（ｘMAX，ｙMAX）をまず探索する。そして、見つかった当該画素位置（ｘMAX，ｙMAX）の画素値を１から０に変更する。
【００６６】
Ｓ８１５では、Ｓ８１１で生成したノイズマップｎ（ｇ）とＳ８１２で生成した濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンｄ（ｇ）に対しドットの削除がなされる。この処理も、選択部７０６とドット配置部７０７によって行われる。Ｓ８１３の判定結果が真の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）と第二フィルタ部７０３から入力された濃度ムラマップ ｔ（ｇ）とを合成し、その結果であるｎ（ｇ）＋ ｔ（ｇ）を出力する。ドット配置部７０７は、このｎ（ｇ）＋ ｔ（ｇ）を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。この処理は、実施形態１のＳ４１１と同じである。
【００６７】
Ｓ８１６では、ドットが削除された位置（ｘMAX，ｙMAX）に基づき、閾値マトリクスＭ（ｘ，ｙ）における閾値が設定される。続くＳ８１７では、階調数ｇの値がデクリメントされて、ｇ＝ｇ−１となる。そして、Ｓ８１８では、階調数ｇの値がｇMIN（ここでは０）に達したか否かが判定される。判定の結果、ｇ＝ｇMINでなければＳ８１１に戻り、処理が続行される。一方、ｇ＝ｇMINであればＳ８１９に進む。これらの処理は、実施形態１のＳ４１２〜Ｓ４１４と同じである。
【００６８】
Ｓ８１９では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。この処理は、実施形態１のＳ４１５と同じである。
【００６９】
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
【００７０】
（初期ドットパターンの生成方法）
本実施形態に係る初期ドットパターンの生成方法について、図９のフローチャートを参照して詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【００７１】
まず、Ｓ９０１では、階調数ｇ＝ｇ0のランダムなドットパターンｄ_ｒを生成する。続いてＳ９０２では、Ｓ９０１で生成した階調数ｇ0のランダムなドットパターンｄ_ｒに対して、前述のＳ８０２と同じ処理を適用し、ノイズマップｎ_ｒを生成する。続くＳ９０３では、ランダムなドットパターンｄ_ｒに対して、前述のＳ８０３と同じ処理を適用し、濃度ムラマップｔ_ｒを生成する。ここまでの処理は、実施形態１のＳ５０１〜Ｓ５０３と同じである。
【００７２】
Ｓ９０４では、濃度ムラの変動量ｖ_ｔが予め設定した所定値ｔｈ_ｔよりも大きいか否かが、Ｓ９０３で生成した濃度ムラマップｔに基づき判定される。この判定処理は、前述のＳ８０４やＳ８１３と同じである。判定の結果、濃度ムラ変動量ｖ_ｔが所定値ｔｈ_ｔよりも小さい場合（判定結果が偽の場合）はＳ９０５に進み、濃度ムラ変動量ｖ_ｔが所定値ｔｈ_ｔよりも大きい場合（判定結果が真の場合）はＳ９０６に進む。
【００７３】
Ｓ９０５では、ノイズマップｎ_ｒのみに基づいて、ドットを移動する処理がなされる。具体的には以下のとおりである。まず、現在のランダムなドットパターンｄ_ｒにおけるドットが存在する画素の中から、ｎ_ｒの値が最大になる画素の位置（ｘMAX，ｙMAX）を探索する。次に、現在のランダムなドットパターンｄ_ｒにおけるドットが存在しない画素の中から、ｎ_ｒの値が最小になる画素の位置（ｘMIN，ｙMIN）を探索する。そして、座標（ｘMAX，ｙMAX）の位置にあるドットを、座標（ｘMIN，ｙMIN）の位置へと移動させる。すなわち、座標（ｘMAX，ｙMAX）の位置の画素値を０にして、座標（ｘMIN，ｙMIN）の位置の画素値を１にする。
【００７４】
Ｓ９０６では、ノイズマップｎ_ｒと濃度ムラマップｔ_ｒとの合成結果に基づいて、ドットを移動する処理がなされる。具体的には以下のとおりである。まず、現在のランダムなドットパターンｄ_ｒにおけるドットが存在する画素の中から、ｎ_ｒ＋ｔ_ｒの値が最大になる画素の位置（ｘMAX，ｙMAX）を探索する。次に、現在のランダムなドットパターンｄ_ｒにおけるドットが存在しない画素の中から、ｎ_ｒ＋ｔ_ｒの値が最小になる画素の位置（ｘMIN，ｙMIN）を探索する。そして、座標（ｘMAX，ｙMAX）の位置にあるドットを、座標（ｘMIN，ｙMIN）の位置へと移動させる。すなわち、座標（ｘMAX，ｙMAX）の位置の画素値を０にして、座標（ｘMIN，ｙMIN）の位置の画素値を１にする。 
【００７５】
Ｓ９０７では、Ｓ９０２〜Ｓ９０６までの各処理が所定回数実行されたかどうかが判定される。所定回数などの条件は実施形態１と同じである。判定の結果、実行回数が所定回数に到達していれば本処理を終える。そして、本処理を終えた時点におけるランダムなドットパターンｄ_ｒが、初期ドットパターンｄ（ｇ0）となる。一方、実行回数が所定回数に到達していなければＳ９０２に戻り、処理が続行される。
【００７６】
以上のような処理により、本実施形態における初期ドットパターンｄ（ｇ0）が生成される。
【００７７】
（本実施形態の効果）
図１８の（ａ）及び（ｂ）は、本実施形態の手法により生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、ｘ方向のサイズＳｘが２５６画素、ｙ方向のサイズＳｙが２５６画素とした。また、初期ドットパターンの階調数ｇ0は０に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数ｋ_ｎとして前述の式（１）を用い、フィルタ係数ｋ_ｔとして前述の式（２）に重みＷを乗算した式を用い、σnの値を１．８程度、σtの値を８．５程度、重みＷを２．５程度にした。また、濃度ムラ変動量算出部７０４で算出する濃度ムラ変動量ｖ_ｔ（ｇ）としては、濃度ムラマップｔ（ｇ）における最大値と最小値との差を、重みＷで除算した値を用いた。
【００７８】
図１８（ａ）のグラフは、縦軸が濃度ムラ変動量算出部７０４で算出する濃度ムラ変動量ｖ_ｔ（ｇ）、横軸が階調値ｇであり、濃度ムラ変動量ｖ_ｔ（ｇ）の値が大きいほど、濃度ムラが目立つことを示している。図１８（ｂ）のグラフは、縦軸がノイズ変動量ｖ_ｎ（ｇ）、横軸が階調値ｇであり、ノイズ変動量ｖ_ｎ（ｇ）の値が大きいほど、ノイズが目立つことを示している。ノイズ変動量ｖ_ｎ（ｇ）としては、ノイズマップｎ（ｇ）における最大値と最小値との差を用いた。
【００７９】
図１８（ａ）及び（ｂ）のグラフには、所定値ｔｈ_ｔの値を変えて生成した３種類の閾値マトリクスの評価結果が示されている。ここで、所定値ｔｈ_ｔは、比較部７０５にて濃度ムラ変動量ｖ_ｔ（ｇ）と比較する値である。
【００８０】
所定値ｔｈ_ｔが∞の場合は、常にノイズマップｎ（ｇ）のみを考慮してドット配置が決定されるため、図１８（ｂ）における細実線が示す通り、ノイズが最も目立たない。しかし、濃度ムラマップｔ（ｇ）が考慮されないため、図１８（ａ）における細実線が示す通り、濃度ムラが最も目立つ。
【００８１】
所定値ｔｈ_ｔが０の場合は、実施形態１と等価な結果が得られる。すなわち、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の両方を常に考慮してドットが配置されるため、図１８（ａ）における破線が示す通り、濃度ムラが最も目立たない。しかし、濃度ムラとノイズはトレードオフの関係にあるため、図１８（ｂ）における破線が示す通り、ノイズが最も目立つ。
【００８２】
所定値ｔｈ_ｔが２程度の場合は、判定条件に応じてドット配置の決定方法が切り替わるため、図１８（ａ）における太実線が示す通り、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の両方を常に考慮する場合(所定値ｔｈ_ｔが０の場合)に比べると、濃度ムラが目立つ。しかしながら、図１８（ｂ）の太実線が示す通り、ノイズは改善する。このように、所定値ｔｈ_ｔを２程度に設定して処理を切り替えることにより、ノイズと濃度ムラの両方を常に考慮する場合に比べ、粒状性を向上させることができる。
【００８３】
以上のとおり本実施形態によれば、濃度ムラマップにおける変動量を基準値と比較し、基準値以下の場合は、濃度ムラが目立たないと判断し、ノイズのみを考慮したドット配置を行う。このように判定条件に応じてドット配置の決定方法を切り替えることにより、ノイズと濃度ムラの両方を常に考慮する場合に比べ、粒状性をさらに向上させることができる。
【実施形態３】
【００８４】
実施形態２では、濃度ムラの変動量に基づいて、ドットの配置方法を切り替える態様を説明した。次に、濃度ムラの変動量の代わりにノイズの変動量を用いてドットの配置方法を切り替える態様を実施形態３として説明する。なお、実施形態１及び２と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【００８５】
図１０は、本実施形態に係る閾値マトリクス生成部１０１を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部１０１は、ドットパターン生成部７０１、第一フィルタ部７０２、第二フィルタ部７０３、ノイズ変動量算出部１００１、比較部１００２、選択部７０６、及びドット配置部７０７で構成される。また、図１１は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【００８６】
Ｓ１１０１では、ドットパターン生成部７０１が、階調数ｇ＝ｇ0の初期ドットパターンｄ（ｇ0）を生成する。ここでは、実施形態２で使用する初期ドットパターンと同じものが生成される。続くＳ１１０２〜Ｓ１１０９は、実施形態２のＳ８０２〜Ｓ８０９に対応する処理であり、Ｓ１１０１で生成した初期ドットパターンｄ（ｇ0）を起点としてドットの追加を階調値ｇがｇMAXに達するまで反復する処理である。実施形態２との大きな違いはＳ１１０４における判定処理の内容であり、それ以外は異なるところがないので、Ｓ１１０２とＳ１１０３の説明は省く。
【００８７】
Ｓ１１０４では、ノイズの変動量ｖ_ｎ（ｇ）が予め設定した所定値ｔｈ_ｎよりも小さいか否かが、Ｓ１１０２で生成したノイズマップｎ（ｇ）に基づき判定される。この判定処理は、ノイズ変動量算出部１００１と比較部１００２とによって以下のように行われる。まず、ノイズ変動量算出部１００１において、ノイズの変動量ｖ_ｎ（ｇ）を求める。ここで、ｖ_ｎ（ｇ）はスカラー量であり、本実施形態ではノイズマップｎ（ｇ）における極値間の差を用いる。ドット追加の場面では、ｎ（ｇ）の最小極小値ｎMIN（ｇ）とその次に小さい極小値ｎMIN2（ｇ）との差の絶対値を、ｖ_ｎ（ｇ）として用いる。次に、比較部１００２において、ｖ_ｎ（ｇ）を所定値ｔｈ_ｎと比較する。この場合の所定値ｔｈ_ｎは、ノイズが目立つか否かを切り分ける基準となる値であり、所望する閾値マトリクスの特性に応じて、予め設定しておく。判定の結果、ノイズ変動量ｖ_ｎ（ｇ）が所定値ｔｈ_ｎよりも小さい場合（判定結果が真の場合）はＳ１１０６に進み、ノイズ変動量ｖ_ｎ（ｇ）が所定値ｔｈ_ｎよりも大きい場合（判定結果が偽の場合）はＳ１１０５に進む。
【００８８】
Ｓ１１０５では、ノイズマップｎ（ｇ）のみに基づいて、ドットパターンに対しドットの追加がなされる。この処理は、実施形態２のＳ８０５と基本的には同じであり、選択部７０６とドット配置部７０７によって行われる。Ｓ１１０４の判定結果が偽の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）を出力する。ドット配置部７０７は、このノイズマップｎ（ｇ）を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。また、Ｓ１１０６では、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンに対しドットの追加がなされる。この処理は、実施形態２のＳ８０６と基本的には同じであり、選択部７０６とドット配置部７０７によって行われる。Ｓ１１０４の判定結果が真の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）と第二フィルタ部７０３から入力された濃度ムラマップ ｔ（ｇ）とを合成し、その結果であるｎ（ｇ）＋ ｔ（ｇ）を出力する。ドット配置部７０７は、このｎ（ｇ）＋ ｔ（ｇ）を用いて、ドット密度が最も低い部分にドットを追加する処理を行う。
【００８９】
Ｓ１１０７〜Ｓ１１０９は、実施形態２のＳ８０７〜Ｓ８０９と同じである。すなわち、ドットが追加された位置（ｘMIN，ｙMIN）に基づき閾値マトリクスＭ（ｘ，ｙ）における閾値が設定されると（Ｓ１１０７）、階調数ｇの値がインクリメントされる（Ｓ１１０８）。そして、ｇ＝ｇMAXとなるまで処理が繰り返される（Ｓ１１０９）。階調値ｇ＝ｇMAXに達した段階でＳ１１１０に進む。
【００９０】
Ｓ１１１０では、Ｓ１１０１で生成した階調数ｇ＝ｇ0の初期ドットパターンｄ（ｇ0）を読み込む。続くＳ１１１１〜Ｓ１１１８は、読み込んだ初期ドットパターンｄ（ｇ0）を起点としてドットの削除を階調数ｇの値がｇMINに達するまで反復する処理である。上述のとおり、判定処理以外は実施形態２と異なるところがないので、Ｓ１１１１とＳ１１１２の説明は省く。
【００９１】
Ｓ１１１３では、ノイズの変動量ｖ_ｎ（ｇ）が予め設定した所定値ｔｈ_ｎよりも小さいか否かが、Ｓ１１１１で生成したノイズマップｎ（ｇ）に基づき判定される。本ステップにおけるノイズの変動量ｖ_ｎ（ｇ）も、基本的な考え方は上述のＳ１００４と同じである。その違いは、ドット削除の場面では、ｎ（ｇ）の最大極大値ｎMAX（ｇ）とその次に大きい極大値ｎMAX2（ｇ）との差を、ｖ_ｎ（ｇ）として用いる点である。次に、比較部１００２において、ｖ_ｎ（ｇ）を所定値ｔｈ_ｎと比較する。ここでの所定値ｔｈ_ｎも、Ｓ１１０４と同様、所望する閾値マトリクスの特性に応じて、予め設定しておく。判定の結果、ノイズ変動量ｖ_ｎ（ｇ）が所定値ｔｈ_ｎよりも小さい場合（判定結果が真の場合）はＳ１１１５に進み、ノイズ変動量ｖ_ｎ（ｇ）が所定値ｔｈ_ｎよりも大きい場合（判定結果が偽の場合）はＳ１１１４に進む。
【００９２】
Ｓ１１１４では、ノイズマップｎ（ｇ）のみに基づいて、ドットパターンに対しドットの削除がなされる。この処理は、実施形態２のＳ８１４と基本的には同じであり、選択部７０６とドット配置部７０７によって行われる。Ｓ１１１３の判定結果が偽の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）を出力する。ドット配置部７０７は、このノイズマップｎ（ｇ）を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。また、Ｓ１１１５では、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンに対しドットの削除がなされる。この処理は、実施形態２のＳ８１５と基本的には同じであり、選択部７０６とドット配置部７０７によって行われる。Ｓ１１１３の判定結果が真の場合、選択部７０６は、第一フィルタ部７０２から入力されたノイズマップｎ（ｇ）と第二フィルタ部７０３から入力された濃度ムラマップ ｔ（ｇ）とを合成し、その結果であるｎ（ｇ）＋ ｔ（ｇ）を出力する。ドット配置部７０７は、このｎ（ｇ）＋ ｔ（ｇ）を用いて、ドット密度が最も高い部分からドットを削除する処理を行う。
【００９３】
Ｓ１１１６〜Ｓ１１１８は、実施形態２のＳ８１６〜Ｓ８１８と同じである。すなわち、ドットが削除された位置（ｘMAX，ｙMAX）に基づき閾値マトリクスＭ（ｘ，ｙ）における閾値が設定されると（Ｓ１１１６）、階調数ｇの値がデクリメントされる（Ｓ１１１７）。そして、ｇ＝ｇMINとなるまで処理が繰り返される（Ｓ１１１８）。階調値ｇ＝ｇMINに達した段階でＳ１１１９に進む。
【００９４】
Ｓ１１１９では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。この処理は、実施形態２のＳ８１９と同じである。
【００９５】
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。本実施形態の場合、ノイズマップにおける極値間の差が小さい場合は、極値による粒状性の差が少ないと判断し、濃度ムラを抑制するようにドットが配置されることになる。例えば、ノイズが最小となる位置にドットを追加するケースにおいて、最小値が複数存在する場合、実施形態２ではドットの追加位置をランダムに決定することとしていた。これに対し本実施形態では、ノイズの変動量がゼロの場合や所定値よりも小さい場合は、濃度ムラマップを考慮してドットが配置されることになる。なお、ノイズの変動量ｖ_ｎ（ｇ）として、本実施形態ではノイズマップｎ（ｇ）における極値間の差を使用したが、これに限定されない。例えばｎ（ｇ）の分散や標準偏差を用いても構わない。
【００９６】
（本実施形態の効果）
図１９の（ａ）及び（ｂ）は、本実施形態の手法により生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、ｘ方向のサイズＳｘが２５６画素、ｙ方向のサイズＳｙが２５６画素とした。また、初期ドットパターンの階調数ｇ0は０に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数ｋ_ｎとして前述の式（１）を用い、フィルタ係数ｋ_ｔとして前述の式（２）に重みＷを乗算した式を用い、σnの値を１．８程度、σtの値を８．５程度、重みＷを２．５程度にした。また、ノイズ変動量算出部１００１で算出するノイズ変動量ｖ_ｎ（ｇ）としては、ノイズマップｎ（ｇ）における最大値と最小値との差を用いた。
【００９７】
図１９（ａ）のグラフは、縦軸が濃度ムラ変動量算出部７０４で算出する濃度ムラ変動量ｖ_ｔ（ｇ）、横軸が階調値ｇであり、濃度ムラ変動量ｖ_ｔ（ｇ）の値が大きいほど、濃度ムラが目立つことを示している。図１９（ｂ）のグラフは、縦軸がノイズ変動量ｖ_ｎ（ｇ）、横軸が階調値ｇであり、ノイズ変動量ｖ_ｎ（ｇ）の値が大きいほど、ノイズが目立つことを示している。ノイズ変動量ｖ_ｎ（ｇ）としては、ノイズマップｎ（ｇ）における最大値と最小値との差を用いた。
【００９８】
図１９（ａ）及び（ｂ）のグラフには、所定値ｔｈ_ｎの値を変えて生成した３種類の閾値マトリクスの評価結果が示されている。所定値ｔｈ_ｎは、比較部１００２にてノイズ変動量ｖ_ｎ（ｇ）と比較する値である。
【００９９】
所定値ｔｈ_ｎが０の場合は、常にノイズマップｎ（ｇ）のみを考慮してドット配置が決定されるため、図１９（ｂ）における破線が示す通り、ノイズが最も目立たない。しかし、濃度ムラマップｔ（ｇ）が考慮されないため、図１９（ａ）における破線グラフが示す通り、濃度ムラが最も目立つ。
【０１００】
所定値ｔｈ_ｎが∞の場合は、実施形態１と等価な結果が得られる。すなわち、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の両方を常に考慮してドットが配置されるため、図１９（ａ）における細実線が示す通り、濃度ムラが最も目立たない。しかし、濃度ムラとノイズはトレードオフの関係にあるため、図１９（ｂ）における細実線が示す通り、ノイズが最も目立つ。
【０１０１】
所定値ｔｈ_ｎが１．４程度の場合は、判定条件に応じてドット配置の決定方法が切り替わるため、図１９（ａ）における太実線が示す通り、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の両方を常に考慮する場合(所定値ｔｈ_ｔが∞の場合)に比べると、濃度ムラが目立つ。しかしながら、図１９（ｂ）における太実線が示す通り、ノイズ変動量ｖ_ｎ（ｇ）を１．４程度に制限できる。このように、所定値ｔｈ_ｎを１．４程度に設定して処理を切り替えることにより、ノイズと濃度ムラの両方を常に考慮する場合に比べ、粒状性への影響を制限しつつ、濃度ムラを抑制することができる。
【０１０２】
以上のとおり本実施形態によれば、粒状性への影響を最小化しつつ、濃度ムラを抑制することができる。
【実施形態４】
【０１０３】
次に、濃度ムラの変動量とノイズの変動量との両方を用いてドットの配置方法を切り替える態様を実施形態４として説明する。なお、実施形態１〜３と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１０４】
図１２は、本実施形態に係る閾値マトリクス生成部１０１を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部１０１は、ドットパターン生成部７０１、第一フィルタ部７０２、第二フィルタ部７０３、濃度ムラ変動量算出部７０４、ノイズ変動量算出部１００１、比較部１２０１、選択部７０６及びドット配置部７０７で構成される。また、図１３は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【０１０５】
Ｓ１３０１では、ドットパターン生成部７０１が、階調数ｇ＝ｇ0の初期ドットパターンｄ（ｇ0）を生成する。ここでは、実施形態２で使用する初期ドットパターンと同じものが生成される。続くＳ１３０２〜Ｓ１３０９は、Ｓ１３０１で生成した初期ドットパターンｄ（ｇ0）を起点としてドットの追加を階調値ｇがｇMAXに達するまで反復する処理である。実施形態２及び３との大きな違いはＳ１３０４における判定処理の内容であり、それ以外は異なるところがないので、Ｓ１３０２とＳ１３０３の説明は省く。
【０１０６】
Ｓ１３０４では、濃度ムラの変動量ｖ_ｔ（ｇ）がノイズの変動量ｖ_ｎ（ｇ）よりも大きいか否かが、Ｓ１３０２で生成したノイズマップｎ（ｇ）とＳ１３０３で生成した濃度ムラマップｔ（ｇ）とに基づき判定される。この判定処理は、濃度ムラ変動量算出部７０４、ノイズ変動量算出部１００１及び比較部１２０１によって以下のように行われる。まず、濃度ムラ変動量算出部７０４とノイズ変動量算出部１００１が、それぞれ濃度ムラの変動量ｖ_ｔ（ｇ）とノイズの変動量ｖ_ｎ（ｇ）を算出する。例えば、ｖ_ｔ（ｇ）として濃度ムラマップｔ（ｇ）における最大値と最小値との差が算出され、ｖ_ｎ（ｇ）としてノイズマップｎ（ｇ）における最小極小値ｎMIN（ｇ）とその次に小さい極小値ｎMIN2（ｇ）との差の絶対値が算出される。そして、算出した濃度ムラ変動量ｖ_ｔ（ｇ）とノイズ変動量ｖ_ｎ（ｇ）とを比較し、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも小さい場合（判定結果が偽の場合）はＳ１３０５に進む。一方、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも大きい場合（判定結果が真の場合）はＳ１３０６に進む。
【０１０７】
Ｓ１３０５では、ノイズマップｎ（ｇ）のみに基づいて、ドットパターンに対しドットの追加がなされる。すなわち、ｎ（ｇ）のみを用いて、ドット密度が最も低い部分にドットが追加される。また、Ｓ１３０６では、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンに対しドットの追加がなされる。すなわち、ｎ（ｇ）＋ ｔ（ｇ）を用いて、ドット密度が最も低い部分にドットが追加される。そして、ドットが追加された位置（ｘMIN、ｙMIN）に基づき閾値マトリクスＭ（ｘ、ｙ）における閾値が設定され（Ｓ１３０７）、階調数ｇの値がインクリメントされる（Ｓ１３０８）。そして、ｇ＝ｇMAXとなるまで処理が繰り返される（Ｓ１３０９）。階調値ｇ＝ｇMAXに達した段階でＳ１３１０に進む。
【０１０８】
Ｓ１３１０では、Ｓ１３０１で生成した階調数ｇ＝ｇ0の初期ドットパターンｄ（ｇ0）を読み込む。続くＳ１３１１〜Ｓ１３１８は、読み込んだ初期ドットパターンｄ（ｇ0）を起点としてドットの削除を階調値ｇがｇMINに達するまで反復する処理である。上述のとおり、判定処理以前は実施形態２及び３と異なるところがないので、Ｓ１３１１とＳ１３１２の説明は省く。
【０１０９】
Ｓ１３１３では、濃度ムラの変動量ｖ_ｔ（ｇ）がノイズの変動量ｖ_ｎ（ｇ）よりも大きいか否かが、Ｓ１３１１で生成したノイズマップｎ（ｇ）とＳ１３１２で生成した濃度ムラマップｔ（ｇ）とに基づき判定される。この判定処理は、濃度ムラ変動量算出部７０４、ノイズ変動量算出部１００１及び比較部１２０１によって以下のように行われる。まず、濃度ムラ変動量算出部７０４とノイズ変動量算出部１００１が、それぞれ濃度ムラの変動量ｖ_ｔ（ｇ）とノイズの変動量ｖ_ｎ（ｇ）を算出する。例えば、ｖ_ｔ（ｇ）として濃度ムラマップｔ（ｇ）における最大値と最小値との差が算出され、ｖ_ｎ（ｇ）としてノイズマップｎ（ｇ）における最大極大値ｎMAX（ｇ）とその次に大きい極大値ｎMAX2（ｇ）との差が算出される。そして、算出した濃度ムラ変動量ｖ_ｔ（ｇ）とノイズ変動量ｖ_ｎ（ｇ）とを比較し、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも小さい場合（判定結果が偽の場合）はＳ１３１４に進む。一方、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも大きい場合（判定結果が真の場合）はＳ１３１５に進む。
【０１１０】
Ｓ１３１４では、ノイズマップｎ（ｇ）のみに基づいて、ドットパターンに対しドットの削除がなされる。すなわち、ｎ（ｇ）のみを用いて、ドット密度が最も高い部分からドットが削除される。また、Ｓ１３１５では、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）とに基づいて、ドットパターンに対しドットの削除がなされる。すなわち、ｎ（ｇ）＋ ｔ（ｇ）を用いて、ドット密度が最も高い部分からドットが削除される。そして、ドットが削除された位置（ｘMAX，ｙMAX）に基づき閾値マトリクスＭ（ｘ，ｙ）における閾値が設定され（Ｓ１３１６）、階調数ｇの値がデクリメントされる（Ｓ１３１７）。そして、ｇ＝ｇMINとなるまで処理が繰り返される（Ｓ１３１８）。階調値ｇ＝ｇMINに達した段階でＳ１３１９に進む。
【０１１１】
Ｓ１３１９では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
【０１１２】
（本実施形態の効果）
図２０の（ａ）及び（ｂ）は、本実施形態の手法により生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、ｘ方向のサイズＳｘが２５６画素、ｙ方向のサイズＳｙが２５６画素とした。また、初期ドットパターンの階調数ｇ0は０に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数ｋ_ｎとして前述の式（１）を用い、フィルタ係数ｋ_ｔとして前述の式（２）に重みＷを乗算した式を用い、σnの値を１．８程度、σtの値を８．５程度、重みＷを２．５程度にした。また、濃度ムラ変動量算出部７０４で算出する濃度ムラ変動量ｖ_ｔ（ｇ）としては、濃度ムラマップｔ（ｇ）における最大値と最小値との差を、重みＷで除算した値を用いた。また、ノイズ変動量算出部１００１で算出するノイズ変動量ｖ_ｎ（ｇ）としては、ノイズマップｎ（ｇ）における最大値と最小値との差を用いた。
【０１１３】
図２０（ａ）のグラフは、縦軸が濃度ムラ変動量算出部７０４で算出する濃度ムラ変動量ｖ_ｔ（ｇ）、横軸が階調値ｇであり、濃度ムラ変動量ｖ_ｔ（ｇ）の値が大きいほど、濃度ムラが目立つことを示している。図２０（ｂ）のグラフは、縦軸がノイズ変動量算出部１００１で算出するノイズ変動量ｖ_ｎ（ｇ）、横軸が階調値ｇであり、ノイズ変動量ｖ_ｎ（ｇ）の値が大きいほど、ノイズが目立つことを示している。
【０１１４】
図２０（ａ）及び（ｂ）のグラフには、３種類の閾値マトリクスの評価結果が示されている。１つ目は、ノイズマップｎ（ｇ）と濃度ムラマップｔ（ｇ）の両方を常に考慮して生成した閾値マトリクスの評価結果であり、破線で示している。この閾値マトリクスは実施形態２の手法において所定値ｔｈ_ｔを０に設定することで生成した。２つ目は、本実施形態の手法により生成した閾値マトリクスの評価結果であり、太実線で示している。３つ目は、常にノイズマップｎ（ｇ）のみを考慮して生成した閾値マトリクスの評価結果であり、細実線で示している。この閾値マトリクスは実施形態２の手法において所定値ｔｈ_ｔを∞に設定することで生成した。
【０１１５】
図２０（ａ）及び（ｂ）のグラフにおいて、所定値ｔｈ_ｔ＝０の閾値マトリクスと所定値ｔｈ_ｔ＝∞の閾値マトリクスとに対応する評価結果は、図１８の（ａ）及び（ｂ）で示す評価結果と同じであり、濃度ムラとノイズはトレードオフの関係にある。一方、本実施形態の手法による閾値マトリクスの評価結果では、濃度ムラ低減とノイズ低減の効果の大きい方を選択してドット配置を決定するため、図２０（ａ）及び（ｂ）の実線が示す通り、ノイズ低減と濃度ムラ低減とを両立できている。
【０１１６】
本実施形態の場合、ノイズ変動量と濃度ムラ変動量との大小関係を評価し、ノイズ低減と濃度ムラ低減の効果の大きい方を選択してドットの追加・削除の位置を決定する。つまり、濃度ムラの変動量とノイズの変動量のうち抑制効果の大きい方の変動量を用いてドットが配置されることになる。そのため、より効果的にノイズ低減と濃度ムラ低減とを両立させることができる。
【実施形態５】
【０１１７】
実施形態４では、濃度ムラの変動量とノイズの変動量との両方を用いた判定を行ってドットの配置方法を切り替えることで「ノイズ＋濃度ムラ」をトータルで改善できた。しかしながら、「ノイズ＋濃度ムラ」のトータルで改善しても、ノイズもしくは濃度ムラのいずれか一方が悪化するケースがあり得た。そこで、ノイズマップや濃度ムラマップにおける平均値を考慮してドットの追加位置や削除位置を決定することで、ノイズも濃度ムラもできるだけ悪化させないようにする態様を、実施形態５として説明する。
【０１１８】
図１４は、本実施形態に係る閾値マトリクス生成部１０１を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部１０１は、ドットパターン生成部７０１、第一フィルタ部７０２、第二フィルタ部７０３、濃度ムラ変動量算出部７０４、ノイズ変動量算出部１００１、比較部１４０１及びドット配置部１４０２で構成される。すなわち、本実施形態では、実施形態４に存在した選択部が存在せず、第一フィルタ部７０２で生成されたノイズマップｎ（ｇ）、第二フィルタ部７０３で生成された濃度ムラマップｔ（ｇ）及び比較部１４０１での比較結果がドット配置部１４０２に直接入力される。
【０１１９】
また、図１５は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。Ｓ１５０１〜Ｓ１５０４、Ｓ１５０７〜Ｓ１５１３、Ｓ１５１６〜Ｓ１５１９は、実施形態４のＳ１３０１〜Ｓ１３０４、Ｓ１３０７〜Ｓ１３１３、Ｓ１３１６〜Ｓ１３１９にそれぞれ対応する。以下、本実施形態の特徴である、ドットの追加位置や削除位置を決定する際にノイズマップ及び／又は濃度ムラマップにおける平均値を考慮する処理（Ｓ１５０５、Ｓ１５０６、Ｓ１５１４及Ｓ１５１５）について説明する。
【０１２０】
ドット追加の反復処理において、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも小さい場合（Ｓ１５０４でＮｏ）、Ｓ１５０５において、ドット配置部１４０２は、まず、濃度ムラマップｔ（ｇ）における平均値ｔＡＶＧ（ｇ）を求める。そして、ドットが存在せず、かつ、濃度ムラがその平均値よりも小さい位置のうち、ノイズｎ（ｇ）が最小になる位置にドットを追加する。具体的には、ドットパターンｄ（ｇ）内の画素値が０の画素のうち、ｔ（ｇ）の値がｔＡＶＧ（ｇ）よりも小さい画素の中から、その座標（ｘ，ｙ）におけるノイズマップｎ（ｇ）の値が最小になる画素位置（ｘMIN，ｙMIN）をまず探索する。そして、見つかった当該画素位置（ｘMIN，ｙMIN）の画素値を０から１に変更する。一方、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも大きい場合（Ｓ１５０４でＹｅｓ）、Ｓ１５０６において、ドット配置部１４０２は、まず、ノイズマップｎ（ｇ）における平均値ｎＡＶＧ（ｇ）を求める。そして、ドットが存在せず、かつ、ノイズがその平均値よりも小さい位置のうち、濃度ムラｔ（ｇ）が最小になる位置にドットを追加する。具体的には、ドットパターンｄ（ｇ）内の画素値が０の画素のうち、ｎ（ｇ）の値がｎＡＶＧ（ｇ）よりも小さい画素の中から、その座標（ｘ，ｙ）における濃度ムラマップｔ（ｇ）の値が最小になる画素位置（ｘMIN，ｙMIN）をまず探索する。そして、見つかった当該画素位置（ｘMIN，ｙMIN）の画素値を０から１に変更する。なお、Ｓ１５０６では、濃度ムラｔ（ｇ）が最小になる位置ではなく、ｎ（ｇ）と ｔ（ｇ）の和が最小になる位置にドットを追加しても構わない。
【０１２１】
ドット削除の反復処理において、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも小さい場合（Ｓ１５１３でＮｏ）、Ｓ１５１４において、ドット配置部１４０２は、まず、濃度ムラマップｔ（ｇ）における平均値ｔＡＶＧ（ｇ）を求める。そして、ドットが存在し、かつ、濃度ムラがその平均値よりも大きい位置のうち、ノイズｎ（ｇ）が最大になる位置からドットを削除する。具体的には、ドットパターンｄ（ｇ）内の画素値が１の画素のうち、ｔ（ｇ）の値がｔＡＶＧ（ｇ）よりも大きい画素の中から、その座標（ｘ，ｙ）におけるノイズマップｎ（ｇ）の値が最大になる画素位置（ｘMAX，ｙMAX）をまず探索する。そして、見つかった当該画素位置（ｘMAX，ｙMAX）の画素値を１から０に変更する。一方、濃度ムラ変動量ｖ_ｔ（ｇ）がノイズ変動量ｖ_ｎ（ｇ）よりも大きい場合（Ｓ１５１３でＹｅｓ）、Ｓ１５１５において、ドット配置部１４０２は、まず、ノイズマップｎ（ｇ）における平均値ｎＡＶＧ（ｇ）を求める。そして、ドットが存在し、かつ、ノイズがその平均値よりも大きい位置のうち、濃度ムラｔ（ｇ）が最大になる位置からドットを削除する。具体的には、ドットパターンｄ（ｇ）内の画素値が１の画素のうち、ｎ（ｇ）の値がｎＡＶＧ（ｇ）よりも大きい画素の中から、その座標（ｘ，ｙ）における濃度ムラマップｔ（ｇ）の値が最大になる画素位置（ｘMAX，ｙMAX）をまず探索する。そして、見つかった当該画素位置（ｘMAX，ｙMAX）の画素値を１から０に変更する。なお、Ｓ１５１５では、濃度ムラｔ（ｇ）が最大になる位置ではなく、ｎ（ｇ）と ｔ（ｇ）の和が最大になる位置からドットを削除しても構わない。
【０１２２】
以上が、本実施形態に係る閾値マトリクス生成処理の内容である。
【０１２３】
（本実施形態の効果）
図２１の（ａ）及び（ｂ）は、本実施形態の手法を実施形態４の手法に適用して生成した閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、ｘ方向のサイズＳｘが２５６画素、ｙ方向のサイズＳｙが２５６画素とした。また、初期ドットパターンの階調数ｇ0は０に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数ｋ_ｎとして前述の式（１）を用い、フィルタ係数ｋ_ｔとして前述の式（２）に重みＷを乗算した式を用い、σnの値を１．８程度、σtの値を８．５程度、重みＷを２．５程度にした。また、濃度ムラ変動量算出部７０４で算出する濃度ムラ変動量ｖ_ｔ（ｇ）としては、濃度ムラマップｔ（ｇ）における最大値と最小値との差を、重みＷで除算した値を用いた。また、ノイズ変動量算出部１００１で算出するノイズ変動量ｖ_ｎ（ｇ）としては、ノイズマップｎ（ｇ）における最大値と最小値との差を用いた。また、本実施形態の手法を実施形態４の手法に適用する際、前述の図１３のフローチャートのＳ１３０５では、ドットが存在せず、かつ、濃度ムラがその平均値ｔAVG（ｇ）よりも小さい位置のうち、ｎ（ｇ）が最小になる位置にドットを追加した。Ｓ１３０６では、ドットが存在せず、かつ、ノイズがその平均値ｎAVG（ｇ）よりも小さい位置のうち、ｎ（ｇ）とｔ（ｇ）の和が最小になる位置にドットを追加した。前述の通り、ドット削除の反復処理は実行しないようにしたため、Ｓ１３１４とＳ１３１５には変更を加えなかった。
【０１２４】
図２１（ａ）のグラフは、縦軸が濃度ムラ変動量算出部７０４で算出する濃度ムラ変動量ｖ_ｔ（ｇ）、横軸が階調値ｇであり、濃度ムラ変動量ｖ_ｔ（ｇ）の値が大きいほど、濃度ムラが目立つことを示している。図２１（ｂ）のグラフは、縦軸がノイズ変動量算出部１００１で算出するノイズ変動量ｖ_ｎ（ｇ）、横軸が階調値ｇであり、ノイズ変動量ｖ_ｎ（ｇ）の値が大きいほど、ノイズが目立つことを示している。
【０１２５】
図２１（ａ）及び（ｂ）のグラフには、２種類の閾値マトリクスの評価結果が示されている。１つは本実施形態の手法により生成した閾値マトリクスの評価結果であり、太実線で示している。もう１つは実施形態４の手法により生成した閾値マトリクスの評価結果であり、破線で示している。実施形態４の評価結果と本実施形態の評価結果とを比較すると、ノイズは同程度であるが、本実施形態の方が、濃度ムラのピークが抑制されているのが分かる。
【０１２６】
本実施形態によれば、ドットを追加する際、ノイズマップにおける最小値を用いる場合は濃度ムラマップにおける平均値を下回る画素に、濃度ムラマップにおける最小値を用いる場合はノイズマップにおける平均値を下回る画素に、その対象が限定される。同様に、ドットを削除する際、ノイズマップにおける最大値を用いる場合は濃度ムラの平均値を上回る画素に、濃度ムラマップにおける最大値を用いる場合はノイズマップにおける平均値を上回る画素に、その対象が限定される。これにより、「ノイズ＋濃度ムラ」を改善しつつ、その一方が悪化してしまうことも同時に防止することができる。
【０１２７】
なお、上述したドットの追加位置や削除位置の決定方法は、実施形態１〜３にも適用可能である。例えば、実施形態１に適用する場合のＳ４０４では、ドットが存在せず、かつ、ノイズがその平均値ｎAVG（ｇ）よりも小さい位置のうち、ｎ（ｇ）とｔ（ｇ）との和が最小になる位置にドットを追加すればよい。他の実施形態に適用する場合も同様である。
【実施形態６】
【０１２８】
次に、ドットパターン間のズレにロバストな閾値マトリクスを生成する従来技術（特許文献３を参照）をベースに、ノイズ低減と濃度ムラ低減とを両立しつつ、ドットパターン間のズレにロバストな閾値マトリクスを生成する態様を、実施形態６として説明する。なお、前述の実施形態と共通する部分については説明を省略ないしは簡略化し、以下では差異点を中心に説明するものとする。
【０１２９】
図２２（ａ）は、インクジェット方式による印刷方法を説明する図である。本実施形態の画像形成部１１２は、１色当たり２本のノズル列（ノズル列Ａ及びノズル列Ｂ）を用いて印刷を行う。なお、図２２（ａ）では説明の便宜上、各ノズル列についてのノズル数を８個としているが、例えば１２００ｄｐｉの１０インチのフルライン型であれば、１２０００個のノズルが各ノズル列に並ぶことになる。図２２の（ｂ）及び（ｃ）は記録媒体上のドットの位置（インク滴の吐出位置）を表しており、図２２（ｂ）がノズル列Ａに対応し、図２２（ｃ）がノズル列Ｂに対応する。ノズル列Ａが偶数行を形成し、ノズル列Ｂが奇数行を形成することで、高速な画像形成を可能にする。印刷に用いる中間調の画像（ハーフトーン画像）は、量子化処理部２１４にてディザ処理を行い、ノズル列毎に生成する。この場合、ディザ処理に用いる閾値マトリクスも、ノズル列毎に生成する。
【０１３０】
量子化処理部２１４は、まず、γ補正処理部２１３が出力する画像信号をノズル列Ａとノズル列Ｂとに均等に分配する。そして、ノズル列Ａに分配された画像信号とノズル列Ｂに分配された画像信号とにそれぞれ異なる閾値マトリクスを適用することで、印刷に用いるハーフトーン画像を生成する。この際、ノズル列Ａ用のハーフトーン画像のドットパターンとノズル列Ｂ用のハーフトーン画像のドットパターンとを重ね合わせたときに、ノイズと濃度ムラが共に良好になることが望ましい。また、ノズル列の取り付け誤差や、インク吐出タイミングのズレなどによってドットパターン間に位置ズレが発生しても、ノイズと濃度ムラが悪化しないことが望ましい。
【０１３１】
この点、従来技術では、ノズル列Ａのドットパターンとノズル列Ｂのドットパターンとがある程度の相関性を持つように、２つのノズル列のドットパターンを重ね合わせたときのノイズを考慮して各ノズル列の閾値マトリクスを生成する。そのため、ドットパターンを重ね合わせたときのノイズが良好で、２つのノズル列のドットパターン間に位置ズレが発生してもノイズの悪化を抑制できる。しかし、濃度ムラまでは考慮していないため、２つのノズル列のドットパターンを重ね合わせたときの濃度ムラは必ずしも良好にならず、２つのノズル列のドットパターン間に位置ズレが発生したときの濃度ムラの悪化までは抑制できない。
【０１３２】
一方、本実施形態では、各ノズル列の閾値マトリクスを生成する際に、ノズル列Ａのドットパターンとノズル列Ｂのドットパターンとが、ある程度の相関性を持つように、ノイズだけでなく、濃度ムラも考慮してドット配置を行う。そのため、ドットパターンを重ね合わせたときにノイズだけでなく濃度ムラも良好となり、ドットパターン間に位置ズレが発生しても、ノイズと濃度ムラの双方の悪化を抑制できる。
【０１３３】
以下の説明では、ノズル列Ａのための閾値マトリクスを「Ｍ_Ａ（ｘ，ｙ）」、ノズル列Ｂのための閾値マトリクスを「Ｍ_Ｂ（ｘ，ｙ）」と表記する。ノズル列Ａは、偶数行を形成するため、閾値マトリクスＭ_Ａ（ｘ，ｙ）を生成する際は、ｙ％２＝０を満たす偶数行のみに閾値を格納し、ｙ％２＝１を満たす奇数行には閾値を格納しない。一方、ノズル列Ｂは、奇数行を形成するため、閾値マトリクスＭ_Ｂ（ｘ，ｙ）を生成する際は、ｙ％２＝１を満たす奇数行のみに閾値を格納し、ｙ％２＝０を満たす偶数行には閾値を格納しない。なお、「％」は剰余演算を示す。また、閾値マトリクスのｘ方向のサイズを「Ｓｘ」、ｙ方向のサイズを「Ｓｙ」とし、本実施形態では、Ｓｘを２５６画素、Ｓｙを２５６画素とする。ただし、Ｓｘ＝２５６画素、Ｓｙ＝２５６画素は一例であり、任意のサイズとすることができる。また、閾値マトリクスＭ_Ａ（ｘ，ｙ）を生成する過程のドットパターンを「ｄ_Ａ（ｘ，ｙ）」と表記し、閾値マトリクスＭ_Ｂ（ｘ，ｙ）を生成する過程のドットパターンを「ｄ_Ｂ（ｘ，ｙ）」と表記する。ノズル列Ａは、偶数行を形成するため、ドットパターンｄ_Ａ（ｘ，ｙ）において、ｙ％２＝０を満たす偶数行のみにドットを配置し、ｙ％２＝１を満たす奇数行にはドットを配置しない。一方、ノズル列Ｂは、奇数行を形成するため、ドットパターンｄ_Ｂ（ｘ，ｙ）において、ｙ％２＝１を満たす奇数行のみにドットを配置し、ｙ％２＝０を満たす偶数行にはドットを配置しない。
【０１３４】
ドットパターンｄ_Ａ（ｘ，ｙ）、ｄ_Ｂ（ｘ，ｙ）は、ドット追加やドット削除の反復過程において変化する。閾値マトリクスのｙ方向のサイズＳｙが偶数の場合、ドット数が０個のドットパターンから、ドット数がＳｘ×Ｓｙ÷２個までの、Ｓｘ×Ｓｙ÷２＋１通りのドットパターンが反復の各過程で生成される。そのため、ドットパターンｄ_Ａ（ｘ，ｙ）、ｄ_Ｂ（ｘ，ｙ）におけるドット数をｇとしたとき、当該ｇを用いれば、反復過程における、ある１つの時点を特定できる。以下の説明では、ドット数（＝階調数）ｇのときのドットパターンｄ_Ａ（ｘ，ｙ）、ｄ_Ｂ（ｘ，ｙ）を、座標ｘ、ｙを省略して単に「ｄ_Ａ（ｇ）」、「ｄ_Ｂ（ｇ）」と表記することとする。
【０１３５】
図２３は、本実施形態に係る閾値マトリクス生成部１０１を実現するソフトウェア構成を示す機能ブロック図である。本実施形態の閾値マトリクス生成部１０１は、ドットパターン生成部２３０１、第一フィルタ部２３０２Ａ、２３０２Ｂ、第二フィルタ部２３０３Ａ、２３０３Ｂ、加算部２３０４Ａ、２３０４Ｂ、評価値算出部２３０５Ａ、２３０５Ｂ、ドット配置部２３０６Ａ、２３０６Ｂで構成される。
【０１３６】
また、図２４は、本実施形態に係る閾値マトリクス生成処理の全体の流れを示すフローチャートである。以下、これらの図を参照しつつ、本実施形態に係る閾値マトリクスの生成処理について詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【０１３７】
Ｓ２４０１では、ドットパターン生成部２３０１が、階調値がｇ0の初期ドットパターンｄ_Ａ（ｇ0）、ｄ_Ｂ（ｇ0）を生成する。初期ドットパターンの階調数ｇ0は、Ｓｘ×Ｓｙ÷２×０．５＝２５６×２５６÷２×０．５＝１６３８４とする。本実施形態の初期ドットパターンの生成方法の詳細は後述する。
【０１３８】
Ｓ２４０２〜Ｓ２４０９は、実施形態１のＳ４０２〜Ｓ４０７に対応する処理であり、Ｓ２４０１で生成した初期ドットパターンｄ（ｇ0）を起点としてドットの追加を階調数ｇの値がｇMAXに達するまで反復する処理である。本実施形態では、ｇMAX≧ｇ0であり、ｇMAX＝Ｓｘ×Ｓｙ÷２＝３２７６８とする。
【０１３９】
Ｓ２４０２では、第一フィルタ部２３０２Ａが、階調値ｇに対応するドットパターンｄ_Ａ（ｇ）に対して、フィルタ係数ｋ_ｎのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示すノイズマップｎ_Ａ（ｇ）を生成する。この処理は、実施形態１のＳ４０２と同じである。また、第二フィルタ部２３０３Ａが、階調値ｇに対応するドットパターンｄ_Ａ（ｇ）に対して、フィルタ係数ｋ_ｔのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す濃度ムラマップｔ_Ａ（ｇ）を生成する。この処理は、実施形態１のＳ４０３と同じである。また、加算部２３０４Ａが、ノイズマップｎ_Ａ（ｇ）と濃度ムラマップｔ_Ａ（ｇ）とを加算し、合成マップＳ_Ａ（ｇ）＝ｎ_Ａ（ｇ）＋ｔ_Ａ（ｇ）を生成する。
【０１４０】
Ｓ２４０３では、第一フィルタ部２３０２Ｂが、階調値ｇに対応するドットパターンｄ_Ｂ（ｇ）に対して、フィルタ係数ｋ_ｎのローパスフィルタを適用してノイズ成分を抽出し、ノイズの分布状態を示すノイズマップｎ_Ｂ（ｇ）を生成する。この処理は、実施形態１のＳ４０２と同じである。また、第二フィルタ部２３０３Ｂが、階調値ｇに対応するドットパターンｄ_Ｂ（ｇ）に対して、フィルタ係数ｋ_ｔのローパスフィルタを適用して濃度ムラ成分を抽出し、濃度ムラの分布状態を示す濃度ムラマップｔ_Ｂ（ｇ）を生成する。この処理は、実施形態１のＳ４０３と同じである。また、加算部２３０４Ｂが、ノイズマップｎ_Ｂ（ｇ）と濃度ムラマップｔ_Ｂ（ｇ）とを加算し、合成マップＳ_Ｂ（ｇ）＝ｎ_Ｂ（ｇ）＋ｔ_Ｂ（ｇ）を生成する。
【０１４１】
Ｓ２４０４では、評価値算出部２３０５Ａが、合成マップＳ_Ａ（ｇ）と、合成マップＳ_Ｂ（ｇ）とを重み付け加算し、評価値Ｅ_Ａ（ｇ）＝Ｓ_Ａ（ｇ）＋α×Ｓ_Ｂ（ｇ）を生成する。なお、重みαについては後述する。そして、ドット配置部２３０６Ａが、評価値算出部２３０５Ａから受け取ったＥ_Ａ（ｇ）を用いて、ドットパターンｄ_Ａ（ｇ）においてドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンｄ_Ａ（ｇ）の偶数行の中で、ドットが存在しない画素位置（画素値＝０）のうち、その座標（ｘ，ｙ）における評価値Ｅ_Ａ（ｇ）が最小になる画素位置（ｘMIN_A，ｙMIN_A）を探索する。そして、見つかった当該画素位置（ｘMIN_A，ｙMIN_A）の画素値を０から１に変更する。なお、Ｅ_Ａ（ｇ）の値が最小となる画素位置が複数見つかった場合は、その中からドットを追加する位置をランダムに選択すればよい。
【０１４２】
Ｓ２４０５では、ドットが追加された位置（ｘMIN_A，ｙMIN_A）に基づき、閾値マトリクスＭ_Ａ（ｘ，ｙ）における閾値が設定される。具体的には、閾値マトリクスＭ_Ａ（ｘ，ｙ）におけるＭ_Ａ（ｘMIN_A，ｙMIN_A）の値として、現在のｇの値が設定される。
【０１４３】
Ｓ２４０６では、評価値算出部２３０５Ｂが、合成マップＳ_Ｂ（ｇ）と、合成マップＳ_Ａ（ｇ）とを重み付け加算し、評価値Ｅ_Ｂ（ｇ）＝Ｓ_Ｂ（ｇ）＋α×Ｓ_Ａ（ｇ）を生成する。なお、重みαについては後述する。そして、ドット配置部２３０６Ｂが、評価値算出部２３０５Ｂから受け取ったＥ_Ｂ（ｇ）を用いて、ドットパターンｄ_Ｂ（ｇ）においてドット密度が最も低い部分にドットを追加する処理を行う。具体的には、ドットパターンｄ_Ｂ（ｇ）の奇数行の中で、ドットが存在しない画素位置（画素値＝０）のうち、その座標（ｘ，ｙ）における評価値Ｅ_Ｂ（ｇ）が最小になる画素位置（ｘMIN_B，ｙMIN_B）を探索する。そして、見つかった当該画素位置（ｘMIN_B，ｙMIN_B）の画素値を０から１に変更する。なお、Ｅ_Ｂ（ｇ）の値が最小となる画素位置が複数見つかった場合は、その中からドットを追加する位置をランダムに選択すればよい。
【０１４４】
Ｓ２４０７では、ドットが追加された位置（ｘMIN_B，ｙMIN_B）に基づき、閾値マトリクスＭ_Ｂ（ｘ，ｙ）における閾値が設定される。具体的には、閾値マトリクスＭ_Ｂ（ｘ，ｙ）におけるＭ_Ｂ（ｘMIN_A，ｙMIN_A）の値として、現在のｇの値が設定される。
【０１４５】
続くＳ２４０８では、階調数ｇの値がインクリメントされて、ｇ＝ｇ＋１となる。そして、Ｓ２４０９では、階調数ｇの値がｇMAX（ここでは３２７６８）に達したか否かが判定される。判定の結果、ｇ＝ｇMAXでなければＳ２４０２に戻り、処理が続行される。一方、ｇ＝ｇMAXであればＳ２４１０に進む。これらの処理は、実施形態１のＳ４０６、Ｓ４０７と同じである。
【０１４６】
Ｓ２４１０では、Ｓ２４０１で生成した階調値がｇ0＝１６３８４の初期ドットパターンｄ_Ａ（ｇ0）、ｄ_Ｂ（ｇ0）を読み込む。続くＳ２４１１〜Ｓ２４１８は、実施形態１のＳ４０９〜Ｓ４１４に対応する処理であり、Ｓ２４０１で生成した初期ドットパターンｄ（ｇ0）を起点としてドットの削除を階調数ｇの値がｇMINに達するまで反復する処理である。本実施形態でも、ｇMIN≦ｇ0であり、ｇMIN＝０とする。以下では、ドット削除の反復処理について、ドット追加の反復処理との相違点を中心に説明することとする。
【０１４７】
Ｓ２４１１はＳ２４０２と同じであり、第一フィルタ部２３０２Ａ、第二フィルタ部２３０３Ａ、加算部２３０４Ａが合成マップＳ_Ａ（ｇ）＝ｎ_Ａ（ｇ）＋ｔ_Ａ（ｇ）を生成する。続くＳ２４１２はＳ２４０３と同じであり、第一フィルタ部２３０２Ｂ、第二フィルタ部２３０３Ｂ、加算部２３０４Ｂが合成マップＳ_Ｂ（ｇ）＝ｎ_Ｂ（ｇ）＋ｔ_Ｂ（ｇ）を生成する。
【０１４８】
Ｓ２４１３では、Ｓ２４０４と同じく、評価値算出部２３０５Ａが、評価値Ｅ_Ａ（ｇ）＝Ｓ_Ａ（ｇ）＋α×Ｓ_Ｂ（ｇ）を生成する。そして、ドット配置部２３０６Ａが、評価値算出部２３０５Ａから受け取ったＥ_Ａ（ｇ）を用いて、ドットパターンｄ_Ａ（ｇ）においてドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンｄ_Ａ（ｇ）の偶数行の中で、ドットが存在する画素位置（画素値＝１）のうち、その座標（ｘ，ｙ）における評価値Ｅ_Ａ（ｇ）が最大になる画素位置（ｘMAX_A，ｙMAX_A）を探索する。そして、見つかった当該画素位置（ｘMAX_A，ｙMAX_A）の画素値を１から０に変更する。なお、Ｅ_Ａ（ｇ） の値が最大となる画素位置が複数見つかった場合は、その中からドットを削除する位置をランダムに選択すればよい。
【０１４９】
Ｓ２４１４では、ドットが削除された位置（ｘMIN_A，ｙMIN_A）に基づき、閾値マトリクスＭ_Ａ（ｘ，ｙ）における閾値が設定される。具体的には、閾値マトリクスＭ_Ａ（ｘ，ｙ）におけるＭ_Ａ（ｘMIN_A，ｙMIN_A）の値として、現在のｇの値が設定される。
【０１５０】
Ｓ２４１５では、Ｓ２４０６と同じく、評価値算出部２３０５Ｂが、評価値Ｅ_Ｂ（ｇ）＝Ｓ_Ｂ（ｇ）＋α×Ｓ_Ａ（ｇ）を生成する。そして、ドット配置部２３０６Ｂが、評価値算出部２３０５Ｂから受け取ったＥ_Ｂ（ｇ）を用いて、ドットパターンｄ_Ｂ（ｇ）においてドット密度が最も高い部分からドットを削除する処理を行う。具体的には、ドットパターンｄ_Ｂ（ｇ）の奇数行の中で、ドットが存在する画素位置（画素値＝１）のうち、その座標（ｘ，ｙ）における評価値Ｅ_Ｂ（ｇ）が最大になる画素位置（ｘMAX_B，ｙMAX_B）を探索する。そして、見つかった当該画素位置（ｘMAX_B，ｙMAX_B）の画素値を１から０に変更する。なお、Ｅ_Ｂ（ｇ） の値が最大となる画素位置が複数見つかった場合は、その中からドットを削除する位置をランダムに選択すればよい。
【０１５１】
Ｓ２４１６では、ドットが削除された位置（ｘMIN_B，ｙMIN_B）に基づき、閾値マトリクスＭ_Ｂ（ｘ，ｙ）における閾値が設定される。具体的には、閾値マトリクスＭ_Ｂ（ｘ，ｙ）におけるＭ_Ｂ（ｘMIN_B，ｙMIN_B）の値として、現在のｇの値が設定される。
【０１５２】
続くＳ２４１７では、階調数ｇの値がデクリメントされて、ｇ＝ｇ−１となる。そして、Ｓ２４１８では、階調数ｇの値がｇMIN（ここでは０）に達したか否かが判定される。判定の結果、ｇ＝ｇMINでなければＳ２４１１に戻り、処理が続行される。一方、ｇ＝ｇMINであればＳ２４１９に進む。これらの処理は、実施形態１のＳ４１３、Ｓ４１４と同じである。
【０１５３】
Ｓ２４１９では、入力画像の画素値のレンジに応じて、閾値マトリクス内の閾値のレンジ調整がなされる。本ステップまで処理が進んだ段階で、閾値マトリクスＭ_Ａ（ｘ，ｙ）、Ｍ_Ｂ（ｘ，ｙ）には、ｇMINからｇMAXまで（本実施形態の場合は０〜３２７６８）の値が格納されている。量子化処理部２１４に入力されるγ補正後画像のレンジが例えば０〜２５５だとすると、ノズル列Ａとノズル列Ｂに均等に分配された信号のレンジは、０〜１２７となる。この０〜１２７のレンジの画像に対して、０〜３２７６８までの値が格納された閾値マトリクスを適用しても、適切な量子化結果を得ることができない。そこで本ステップにおいて、実施形態１のＳ４１５と同じ処理を閾値マトリクスＭ_Ａ（ｘ，ｙ）、Ｍ_Ｂ（ｘ，ｙ）に適用することで、閾値マトリクスの値のレンジを調整する。
【０１５４】
以上が、本実施形態に係る閾値マトリクス生成処理の全体の流れである。
【０１５５】
（重みαについて）
評価値算出部２３０５Ａ、２３０５Ｂで使用する重みαは、ノズル列Ａのドットパターンｄ_Ａ（ｇ）と、ノズル列Ｂのドットパターンｄ_Ｂ（ｇ）の相関性を制御するパラメータである。
【０１５６】
α＝０の場合は、片方のノズル列の合成マップのみが評価値に反映され、もう片方のノズル列の合成マップが評価値に反映されないため、ドットパターンｄ_Ａ（ｇ）と、ドットパターンｄ_Ｂ（ｇ）は無相関になる。ドットパターンｄ_Ａ（ｇ）と、ドットパターンｄ_Ｂ（ｇ）が無相関の場合、ドットパターン間の位置ズレによるノイズと濃度ムラの悪化が最も少なくなる。
【０１５７】
α＝１の場合は、両方のノズル列の合成マップが均等に評価値に反映される。この場合は、ズレ無しの状態で重ね合わせたドットパターンの配置が最適化されるため、ドットパターンの位置ズレが無い場合において、ノイズと濃度ムラが最も目立たなくなる。しかし、ドットパターンｄ_Ａ（ｇ）と、ドットパターンｄ_Ｂ（ｇ）が相関を持つため、α＝０の場合に比べ、ドットパターン間の位置ズレによるノイズと濃度ムラの悪化が大きくなる。
【０１５８】
０＜α＜１の場合は、α＝１の場合に比べてドットパターンｄ_Ａ（ｇ）とドットパターンｄ_Ｂ（ｇ）の相関が弱くなるため、ドットパターン間の位置ズレによるノイズと濃度ムラの悪化がα＝１の場合に比べて小さくなる。一方、α＝０の場合に比べてｄ_Ａ（ｇ）とｄ_Ｂ（ｇ）の相関が強くなるため、ドットパターンの位置ズレが無い場合において、ノイズと濃度ムラが目立たなくなる。
【０１５９】
本実施形態では、このαの値は０．６に設定した。
【０１６０】
（初期ドットパターンの生成方法）
本実施形態に係る初期ドットパターンの生成方法について、図２５のフローチャートを参照して詳しく説明する。なお、以下の説明において記号「Ｓ」はステップを表す。
【０１６１】
まず、Ｓ２５０１では、階調数ｇ＝ｇ0のランダムなドットパターンｄ_Ａ_ｒ、ｄ_Ｂ_ｒを生成する。ｄ_Ａ_ｒは、ノズル列Ａに対応するため、偶数行のみにドットを配置する。ｄ_Ｂ_ｒは、ノズル列Ｂに対応するため、奇数行のみにドットを配置する。
【０１６２】
具体的には、まず、ドットが１つも存在しない画像を起点として、階調数がｇ0（本実施形態ではｇ0＝１６３８４）に達するまで、ドットの追加を繰り返し行い、ｄ_Ａ_ｒを生成する。次に、同様の処理を行うことで、ｄ_Ｂ_ｒを生成する。ドットを追加する位置の候補は、例えば０〜Ｓｘの乱数を発生させてｘ方向の位置ｘ_ｒを決定し、同様に、０〜Ｓｙの乱数を発生させてｙ方向の位置ｙｒを決定する。ｄ_Ａ_ｒを生成する際は、乱数で決定した座標（ｘ_ｒ，ｙ_ｒ）の位置が偶数行で、且つドットが存在しない場合において、当該位置にドットを追加（画素値を０から１に変更）する。当該画素位置が奇数行の場合、もしくは、当該画素位置の画素値が既に１になっていた場合は、新たに乱数を発生させ、ドットを追加する位置の候補を変更する。このような処理を繰り返して、ランダムなドットパターンｄ_Ａ_ｒを得る。また、ｄ_Ｂ_ｒを生成する際は、乱数で決定した座標（ｘ_ｒ，ｙ_ｒ）の位置が奇数行で、且つドットが存在しない場合において、当該位置にドットを追加（画素値を０から１に変更）する。当該画素位置が偶数行の場合、もしくは、当該画素位置の画素値が既に１になっていた場合は、新たに乱数を発生させ、ドットを追加する位置の候補を変更する。このような処理を繰り返して、ランダムなドットパターンｄ_Ｂ_ｒを得る。
【０１６３】
続いてＳ２５０２では、Ｓ２５０１で生成した階調数ｇ0のランダムなドットパターンｄ_Ａ_ｒに対して、前述のＳ２４０２と同じ処理を適用し、合成マップＳ_Ａ_ｒを生成する。続くＳ２５０３では、Ｓ２５０１で生成した階調数ｇ0のランダムなドットパターンｄ_Ｂ_ｒに対して、前述のＳ２４０３と同じ処理を適用し、合成マップＳ_Ｂ_ｒを生成する。
【０１６４】
そして、Ｓ２５０４では、前述のＳ２４０４と同じ処理を適用して評価値Ｅ_Ａ_ｒを求め、このＥ_Ａ_ｒに基づいて、ドットを移動する処理がなされる。まず、現在のランダムなドットパターンｄ_Ａ_ｒの偶数行において、ドットが存在する画素の中から、評価値Ｅ_Ａ_ｒの値が最大になる画素の位置（ｘMAX_A，ｙMAX_A）を探索する。次に、現在のランダムなドットパターンｄ_Ａ_ｒの偶数行において、ドットが存在しない画素の中から、評価値Ｅ_Ａ_ｒの値が最小になる画素の位置（ｘMIN_A，ｙMIN_A）を探索する。そして、座標（ｘMAX_A，ｙMAX_A）の位置にあるドットを、座標（ｘMIN_A，ｙMIN_A）の位置へと移動させる。すなわち、座標（ｘMAX_A，ｙMAX_A）の位置の画素値を０にして、座標（ｘMIN_A，ｙMIN_A）の位置の画素値を１にする。 
同様に、Ｓ２５０５では、前述のＳ２４０６と同じ処理を適用して評価値Ｅ_Ｂ_ｒを求め、このＥ_Ｂ_ｒに基づいて、ドットを移動する処理がなされる。まず、現在のランダムなドットパターンｄ_Ｂ_ｒの奇数行において、ドットが存在する画素の中から、評価値Ｅ_Ｂ_ｒの値が最大になる画素の位置（ｘMAX_B，ｙMAX_B）を探索する。次に、現在のランダムなドットパターンｄ_Ｂ_ｒの奇数行において、ドットが存在しない画素の中から、評価値Ｅ_Ｂ_ｒの値が最小になる画素の位置（ｘMIN_B，ｙMIN_B）を探索する。そして、座標（ｘMAX_B，ｙMAX_B）の位置にあるドットを、座標（ｘMIN_B，ｙMIN_B）の位置へと移動させる。すなわち、座標（ｘMAX_B，ｙMAX_B）の位置の画素値を０にして、座標（ｘMIN_B，ｙMIN_B）の位置の画素値を１にする。
【０１６５】
Ｓ２５０６では、Ｓ２５０２〜Ｓ２５０５までの各処理が所定回数実行されたかどうかが判定される。判定の結果、実行回数が所定回数に到達していれば本処理を終える。そして、本処理を終えた時点におけるランダムなドットパターンｄ_Ａ_ｒ、ｄ_Ｂ_ｒが、それぞれ初期ドットパターンｄ_Ａ（ｇ0）、ｄ_Ｂ（ｇ0）となる。一方、実行回数が所定回数に到達していなければＳ２５０２に戻り、処理が続行される。
【０１６６】
以上のような処理により、本実施形態における初期ドットパターンｄ_Ａ（ｇ0）、ｄ_Ｂ（ｇ0）が生成される。
【０１６７】
（本実施形態の効果）
図２６〜図２８は、本実施形態により生成した、閾値マトリクスの特性を評価した結果の一例を示すグラフである。評価対象の閾値マトリクスは、ｘ方向のサイズＳｘが２５６画素、ｙ方向のサイズＳｙが２５６画素とした。また、初期ドットパターンの階調数ｇ0は０に設定し、ドット削除の反復処理は実行せず、ドット追加の反復処理のみを実行するようにした。また、フィルタ係数ｋ_ｎとして前述の式（１）を用い、フィルタ係数ｋ_ｔとして前述の式（２）に重みＷを乗算した式を用い、σnの値を１．８程度、σtの値を８．５程度、重みＷを２．５程度にした。なお、以降の説明では、ノズル列Ａのドットパターンとノズル列Ｂのドットパターンとを位置ズレが無い状態で重ね合わせたドットパターンを「ズレ無し合成ドットパターン」と呼ぶこととする。また、ノズル列Ａのドットパターンとノズル列Ｂのドットパターンとを位置ズレが発生した状態で重ね合わせたドットパターンを「ズレ有り合成ドットパターン」と呼ぶこととする。また、前述の通り、片方のノズル列において、階調値ｇのレンジは０から３２７６８であるが、図２６〜図２８では、両方のノズル列のドットパターンを合成して得られたドットパターンの評価値を示しているため、グラフの横軸の階調値ｇのレンジは０から６５５３６となっている。
【０１６８】
図２６（ａ）のグラフは、縦軸がズレ無し合成ドットパターンの濃度ムラ変動量ｖ_ｔ（ｇ）、横軸が階調値ｇであり、濃度ムラ変動量ｖ_ｔ（ｇ）の値が大きいほど、ズレ無し合成ドットパターンの濃度ムラが目立つことを示している。ここでの濃度ムラ変動量ｖ_ｔ（ｇ）は、ズレ無し合成ドットパターンと、フィルタ係数ｋ_ｔとの巡回畳み込み演算により濃度ムラマップｔ（ｇ）を求め、このｔ（ｇ）の最大値と最小値との差を、重みＷで除算した値である。図２６（ｂ）のグラフは、縦軸がズレ無し合成ドットパターンのノイズ変動量ｖ_ｎ（ｇ）、横軸が階調値ｇであり、ノイズ変動量ｖ_ｎ（ｇ）の値が大きいほどノイズが目立つことを示している。ここでのノイズ変動量ｖ_ｎ（ｇ）は、ズレ無し合成ドットパターンと、フィルタ係数ｋ_ｎとの巡回畳み込み演算により求められたノイズマップｎ（ｇ）の、最大値と最小値との差である。
【０１６９】
図２６（ａ）及び（ｂ）のグラフには、２種類の閾値マトリクスの評価結果が示されている。１つは本実施形態の手法により生成した閾値マトリクスの評価結果であり、太実線で示している。もう１つは、特許文献３に記載の従来技術により、ノイズは考慮するものの濃度ムラは考慮せずに生成した閾値マトリクスの評価結果であり、破線で示している。いずれのケースも、αの値は０．６である。本実施形態の評価結果と従来技術の評価結果とを比較すると、本実施形態により生成した閾値マトリクスではノイズが少し悪化するものの、濃度ムラが大幅に改善しているのが分かる。
【０１７０】
図２７及び図２８のグラフには、本実施形態の手法により生成した閾値マトリクスについての、ズレ無し合成ドットパターンの評価結果（太実線）と、ズレ有り合成ドットパターンの評価結果（破線）が示されている。この場合において、図２７（ａ）及び（ｂ）の両グラフは、αの値を０．６に設定して生成した閾値マトリクスの評価結果であり、図２８（ａ）及び（ｂ）のグラフは、αの値を１．０に設定して生成した閾値マトリクスの評価結果である。また、ズレ有り合成ドットパターンは、ノズル列Ｂのドットパターンを、ノズル列Ａのドットパターンに対し、ｘ方向に１画素、ｙ方向に１画素だけずらして重ね合わせたドットパターンとしている。
【０１７１】
αの値を０．６に設定した場合、まずノイズについては、図２７（ｂ）のグラフの通り、位置ズレにより少し悪化する。しかし、αを１．０に設定した場合（図２８（ｂ）を参照）に比べてドットパターン間の相関が弱くなるため、図２７（ａ）のグラフの通り、位置ズレが発生しても濃度ムラはほとんど悪化しない。これに対し、αの値を１．０に設定した場合、ドットパターン間の相関が強くなるため、図２８（ａ）及び（ｂ）のグラフの通り、位置ズレによってノイズも濃度ムラも大幅に悪化する。ただし、位置ズレが無い場合については、αの値を０．６に設定した場合に比べて、ノイズも濃度ムラも僅かながら改善する。
以上のとおり本実施形態の手法の場合、ノズル列Ａのドットパターンと、ノズル列Ｂのドットパターンを重ね合わせたときに、ノイズだけでなく、濃度ムラも良好になる。また、αの値を０．６程度の値に設定することにより、ドットパターン間のズレが発生しても、ノイズと濃度ムラの悪化を抑制できることが分かる。
【０１７２】
（変形例）
なお、Ｓ２４０６で評価値Ｅ_Ｂ（ｇ）の算出に用いられる合成マップＳ_Ａ（ｇ）は、Ｓ２４０２で算出される。しかし、Ｓ２４０６の前の、Ｓ２４０４で、ドットパターンｄ_Ａ（ｇ）の状態が変化してしまうため、Ｓ２４０６において、Ｓ２４０２で算出された合成マップＳ_Ａ（ｇ）を評価値Ｅ_Ｂ（ｇ）の算出に用いると、最適な位置にドットを追加できない可能性がある。そのため、Ｓ２４０６の直前にＳ２４０２を実行して、合成マップＳ_Ａ（ｇ）を再計算しても構わない。Ｓ２４１０からＳ２４１８の、ドットを削除するプロセスにおいても同様で、Ｓ２４１５の直前にＳ２４１１を実行して、合成マップＳ_Ａ（ｇ）を再計算しても構わない。また、初期ドットパターンを生成するプロセスにおいても同様で、Ｓ２５０５の直前にＳ２５０２を実行して、合成マップＳ_Ａ_ｒを再計算しても構わない。
【０１７３】
また、本実施形態では、ノズル列Ａは偶数行のみを印刷し、ノズル列Ｂは奇数行のみを印刷するようにしたが、このようなドット配置の制約は必須ではない。例えば、ノズル列Ａで千鳥パターン状に印刷し、ノズル列Ｂで逆千鳥パターン状に印刷するようにしても構わない。もしくは、ノズル列Ａでｘ％２＝０を満たす偶数列を印刷し、ノズル列Ｂでｘ％２＝１を満たす奇数列を印刷するようにしても構わない。これらに対応する閾値マトリクスは、Ｓ２４０４やＳ２４０６において、偶数行のみにドットを追加可能、もしくは奇数行のみにドットを追加可能といった、ドット追加の制約を変更するだけで容易に生成できる。
【０１７４】
また、本実施形態は、ノズル列が３列以上の場合にも適用できる。例えば、ノズル列が３列で、ノズル列Ａ、ノズル列Ｂに加えてノズル列Ｃが存在する場合、ノズル列Ａがｙ％３＝０を満たす行を印刷し、ノズル列Ｂがｙ％３＝１を満たす行を印刷し、ノズル列Ｃがｙ％３＝２を満たす行を印刷する。この場合、図２４のフローに、ノズル列Ｃの合成マップＳ_Ｃ（ｇ）を生成するステップと、評価値Ｅ_Ｃ（ｇ）を求めて当該Ｅ_Ｃ（ｇ）が最小となる位置にドットを追加するステップと、閾値マトリクスＭ_Ｃ（ｇ）の値を設定するステップを追加すればよい。合成マップＳ_Ｃ（ｇ）の生成方法は、Ｓ２４０２やＳ２４０３と同じである。評価値Ｅ_Ｃ（ｇ）を求める方法は、Ｓ２４０４やＳ２４０６と同様で、各ノズル列の合成マップを重み付け加算する。このとき、着目ノズル列の重みを１にして、他の２列のノズル列の重みをαにする。すなわち、評価値Ｅ_Ｃ（ｇ）＝Ｓ_Ｃ（ｇ）＋α×Ｓ_Ａ（ｇ）＋α×Ｓ_Ｂ（ｇ）とする。同様に、Ｓ２４０４では、評価値Ｅ_Ａ（ｇ）＝Ｓ_Ａ（ｇ）＋α×Ｓ_Ｂ（ｇ）＋α×Ｓ_Ｃ（ｇ）とし、Ｓ２４０６では、評価値Ｅ_Ｂ（ｇ）＝Ｓ_Ｂ（ｇ）＋α×Ｓ_Ａ（ｇ）＋α×Ｓ_Ｃ（ｇ）とする。閾値マトリクスＭ_Ｃ（ｇ）の値を設定する方法は、Ｓ２４０５やＳ２４０７と同じである。このような変更を、Ｓ２４１０からＳ２４１８の、ドットを削除するプロセスにも適用することで、ノズル列が３列以上の場合であっても、本実施形態が適用できる。
【０１７５】
また、本実施形態は、異なる色の色材を印刷する場合にも適用できる。例えば、色材がＣ、Ｍ、Ｙ、Ｋの４色の場合、ノズル列を４列と見なして本実施形態を適用する。これにより、ドットパターンの相関を色間で制御できる。
【０１７６】
また、本実施形態においても、実施形態２〜５のように、ノイズの変動量や、濃度ムラの変動量に基づいて、ノイズと濃度ムラの両方を考慮して行う処理と、ノイズのみを考慮して行う処理を切り替えても構わない。なお、ノイズのみ考慮する場合、Ｓ２４０４とＳ２４１３における評価値Ｅ_Ａ（ｇ）は、ｎ_Ａ（ｇ）＋α×ｎ_Ｂ（ｇ）とし、Ｓ２４０６とＳ２４１５における評価値Ｅ_Ｂ（ｇ）は、ｎ_Ｂ（ｇ）＋α×ｎ_Ａ（ｇ）とすればよい。
【０１７７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１７８】
３０１  ドットパターン生成部
３０２  第一フィルタ部
３０３  第二フィルタ部
３０４  加算部
３０５  ドット配置部
【図１】
2019126035.tif 000005
【図２】
2019126035.tif 000006
【図３】
2019126035.tif 000007
【図４】
2019126035.tif 000008
【図５】
2019126035.tif 000009
【図６】
2019126035.tif 000010
【図７】
2019126035.tif 000011
【図８】
2019126035.tif 000012
【図９】
2019126035.tif 000013
【図１０】
2019126035.tif 000014
【図１１】
2019126035.tif 000015
【図１２】
2019126035.tif 000016
【図１３】
2019126035.tif 000017
【図１４】
2019126035.tif 000018
【図１５】
2019126035.tif 000019
【図１６】
2019126035.tif 000020
【図１７】
2019126035.tif 000021
【図１８】
2019126035.tif 000022
【図１９】
2019126035.tif 000023
【図２０】
2019126035.tif 000024
【図２１】
2019126035.tif 000025
【図２２】
2019126035.tif 000026
【図２３】
2019126035.tif 000027
【図２４】
2019126035.tif 000028
【図２５】
2019126035.tif 000029
【図２６】
2019126035.tif 000030
【図２７】
2019126035.tif 000031
【図２８】
2019126035.tif 000032