(57)【特許請求の範囲】
【請求項１】
予め各要素が第１所定値あるいは該第１所定値よりも小さい第２所定値に２値化された２値マトリックスについて、第１所定値を有する要素の集合状態が最も密である位置を検出し、その位置に存在する要素の値を第１所定値から第２所定値に置換することで、前記２値マトリックスよりも第１所定値を有する要素が１つ少ない新たなマトリックスを生成する第１のマトリックス生成処理を、予め用意した所定の基本マトリックスを最初の２値マトリックスとして用いると共に、前記生成した新たなマトリックスを次回の２値マトリックスとして用いることで繰り返し行うことにより、前記基本マトリックスよりも第１所定値を有する要素が１つずつ少ないマトリックスを複数生成し、
また、予め各要素が第１所定値あるいは該第１所定値よりも小さい第２所定値に２値化された２値マトリックスについて、第１所定値を有する要素の集合状態が最も粗である位置を検出し、その位置に存在する要素の値を第２所定値から第１所定値に置換することで、前記２値マトリックスよりも第１所定値を有する要素が１つ多い新たなマトリックスを生成する第２のマトリックス生成処理を、前記基本マトリックスを最初の２値トリックスとして用いると共に、前記生成した新たなマトリックスを次回の２値マトリックスとして用いることで繰り返し行うことにより、前記基本マトリックスよりも第１所定値を有する要素が１つずつ多いマトリックスを複数生成し、
前記第１及び第２のマトリックス生成処理の繰り返しによって生成された複数のマトリックスと、前記基本マトリックスと、からなるマトリックス群に基づいて、同一位置の要素の２値化値を合計し、その合計値の大きい要素から順にディザマトリックスにおける各要素の閾値を設定するディザマトリックス作成方法であって、
前記第１及び第２のマトリックス生成処理では、
処理対象マトリックスの各要素を所定の走査方向の順に注目要素として順次選択すると共に、選択した注目要素の値を該注目要素から見て予め定められた周辺位置に存在する周辺要素の値に応じて補正していくことで、前記処理対象マトリックスの元の全要素の平均値と前記補正後の全要素の平均値とがほぼ一致するように、前記処理対象マトリックスの各要素の値を他の要素の値に拡散させる拡散処理を、前記２値マトリックスに対して行い、
更に、前記第１のマトリックス生成処理では、
前記拡散処理により補正した後の全要素の内で最大値を有する要素の位置を、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置として検出し、
前記第２のマトリックス生成処理では、
前記拡散処理により補正した後の全要素の内で最小値を有する要素の位置を、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も粗である位置として検出すること、
を特徴とするディザマトリックス作成方法。
【請求項２】
前記拡散処理は、
前記選択した注目要素の値に対して、該注目要素から見て予め定められた１つあるいは複数の周辺位置に存在する周辺要素の値に所定の重み付け係数を乗じた値を加算すると共に、前記処理対象マトリックスの元の全要素の平均値に前記重み付け係数の総和を乗じた値を減じ、前記加算及び減算を行った後の値を前記注目要素の補正後の値として記憶する処理であること、
を特徴とする請求項１記載のディザマトリックス作成方法。
【請求項３】
前記第１及び第２のマトリックス生成処理では、
前記２値マトリックスに対して走査方向が夫々異なる複数の前記拡散処理を実行すると共に、前記各拡散処理の実行によって得た各要素の値を同一位置の要素毎に平均した平均値に基づき、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置あるいは粗である位置を検出すること、
を特徴とする請求項１または請求項２記載のディザマトリックス作成方法。
【請求項４】
前記第１及び第２のマトリックス生成処理では、
前記２値マトリックスを複数個配置してなる拡大マトリックスに対して前記拡散処理を実行すると共に、該拡散処理の実行によって得た各要素の値のうち、前記拡散処理が開始された先頭要素ライン部分を含まない２値マトリックスに対応する領域の各要素の値に基づき、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置あるいは粗である位置を検出すること、
を特徴とする請求項１〜請求項３記載のディザマトリックス作成方法。
【請求項５】
前記基本マトリックスは、全ての要素が同一の多値からなるマトリックスを誤差拡散処理して、各要素を第１所定値あるいは第２所定値に２値化して形成されたものであること、
を特徴とする請求項１〜請求項４記載のディザマトリックス作成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多値画像を２値画像化するためのディザマトリックスの作成方法に関する。
【０００２】
【従来の技術】
画像を構成するデータは通常８ビット程度の濃淡階調で表現されている。しかし、この画像データを人が見ることのできる画像として出力する機器、例えばプリンタなどの出力機器においては、機構が簡単であることや制御の容易性から、インク等の色素を記録紙にドットとして付着させるか否かしか行わない、いわゆる２値記録が一般的である。
【０００３】
このような２値記録の出力機器を使用して、８ビット濃淡階調で表された画像を記録する場合には、単に各画素の値を閾値で判断してインクを付着させるか否かを決定することになる。しかし、このように閾値で単純に２値化するだけでは、８ビット濃淡階調が持つ豊富な濃淡状態（１色なら２５６階調、３原色が各２５６階調ならば、約１６７０万色を表すことができる。）を表現することは不可能となる。そのため、このような２値記録の出力機器でも疑似的に濃淡状態を表現する方法が考えられている。すなわち、所定の面積の中で配置されるドット数によって濃淡を表現しようと言う面積階調の考え方である。
【０００４】
この考え方を実現する方法としては種々の提案がなされている。例えば、誤差拡散法、乱数発生型ディザ法、組織的ディザ法等である。
【０００５】
【発明が解決しようとする課題】
しかし、これらの方法には、次のような問題があった。
誤差拡散法は、各画素毎に誤差拡散あるいは誤差分配のための演算を実行しなければならないため、２値化の処理が遅くなってしまうという問題がある。乱数発生型ディザ法は、各要素位置毎の閾値を配置したディザマトリックスを使用するために２値化処理自体は高速であるが、乱数を用いて閾値を決定するため、各要素における閾値が全くのランダムとなって、画質が非常にノイジー、すなわち、多くのノイズが画像に満ちているような画質になると言う問題があった。
【０００６】
ディザマトリックスを用いる他の方法として、組織的ディザ法に属する渦巻型があるが、この渦巻型は、閾値の順序をなるべく近い画素位置から順にとっていくため、ドットが密集し易く、密集したものが大きなドットと認識されるので解像度が低下し易かった。また、組織的ディザ法の内で、ベイヤー（Ｂａｙｅｒ）法があるが、このベイヤー（Ｂａｙｅｒ）法では、閾値の順序をなるべく離れた画素位置から順にとっていくため、ドットが分散して解像度は良いものの、ドットの分散パターンが規則的になって、目障りな紋様が発生し易かった。
【０００７】
本発明は、ディザ法を用いて画像処理を行っても、画像がノイジーになったり、解像度が低下したりすることが無く、また紋様の発生をも抑制することが可能なディザマトリックスを作成する方法の提供を目的とするものである。
【０００８】
【課題を解決するための手段、及び発明の効果】
請求項１に記載の本発明のディザマトリックス作成方法においては、
予め各要素が第１所定値あるいは該第１所定値よりも小さい第２所定値に２値化された２値マトリックスについて、第１所定値を有する要素の集合状態が最も密である位置（換言すれば、第２所定値を有する要素の集合状態が最も粗である位置）を検出し、その位置に存在する要素の値を第１所定値から第２所定値に置換することで、前記２値マトリックスよりも第１所定値を有する要素が１つ少ない新たなマトリックスを生成する第１のマトリックス生成処理を、
予め用意した所定の基本マトリックスを最初の２値マトリックスとして用いると共に、前記生成した新たなマトリックスを次回の２値マトリックスとして用いることで繰り返し行うことにより、前記基本マトリックスよりも第１所定値を有する要素が１つずつ少ないマトリックスを複数生成し、
また、予め各要素が第１所定値あるいは該第１所定値よりも小さい第２所定値に２値化された２値マトリックスについて、第１所定値を有する要素の集合状態が最も粗である位置（換言すれば、第２所定値を有する要素の集合状態が最も密である位置）を検出し、その位置に存在する要素の値を第２所定値から第１所定値に置換することで、前記２値マトリックスよりも第１所定値を有する要素が１つ多い新たなマトリックスを生成する第２のマトリックス生成処理を、
前記基本マトリックスを最初の２値トリックスとして用いると共に、前記生成した新たなマトリックスを次回の２値マトリックスとして用いることで繰り返し行うことにより、前記基本マトリックスよりも第１所定値を有する要素が１つずつ多いマトリックスを複数生成し、
前記第１及び第２のマトリックス生成処理の繰り返しによって生成された複数のマトリックスと、前記基本マトリックスと、からなるマトリックス群に基づいて、同一位置の要素の２値化値を合計し、その合計値の大きい要素から順にディザマトリックスにおける各要素の閾値を設定する。
【０００９】
ここで、上記の如く第１のマトリックス生成処理の繰り返しによって生成される複数の各マトリックスは、夫々独立に形成されるのではなく、自己よりも第１所定値を有する要素が１つ多いマトリックスにおいて第１所定値を有する要素の集合状態が最も密である位置に存在する要素の値を、第１所定値から第２所定値に置換することで形成され、しかも、第１所定値から第２所定値に順次置換されていく要素の位置は、特定の領域に偏ることなく適度に分散することとなる。
【００１０】
また同様に、上記の如く第２のマトリックス生成処理の繰り返しによって生成される複数の各マトリックスも、夫々独立に形成されるのではなく、自己よりも第１所定値を有する要素が１つ少ないマトリックスにおいて第１所定値を有する要素の集合状態が最も粗である位置に存在する要素の値を、第２所定値から第１所定値に置換することで形成され、しかも、第２所定値から第１所定値に順次置換されていく要素の位置は、特定の領域に偏ることなく適度に分散する。
【００１１】
この結果、第１及び第２のマトリックス生成処理の繰り返しにより生成された複数のマトリックスと、これらマトリックスの元となる前記基本マトリックスとを、例えば第１所定値を有する要素の数が少ないものから順に配列させれば、各マトリックスは、第１所定値を有する要素が、全くのランダムではないが不規則に分散して順次１つずつ増えていくものとなる。
【００１２】
このため、第１及び第２のマトリックス生成処理の繰り返しにより生成された複数のマトリックスと前記基本マトリックスとからなるマトリックス群に基づいて、ディザマトリックスにおける各要素の閾値を設定すると、ディザマトリックスの各要素における閾値は、特定の値に偏ることが無く、ランダムともならず、更に各種の値に適度に分散して分布するものとなり、形成されるディザマトリックスを用いて画像処理しても解像度は低下せずに、目障りな紋様が抑制され、またランダムでないのでノイジーともならない。
【００１３】
ところで、第１及び第２のマトリックス生成処理にて、第１所定値を有する要素の集合状態が最も密である位置あるいは最も粗である位置を検出する際には、人間の主観によって、密である位置あるいは粗である位置を判断することが考えられる。しかし、このようにすると、粗密の判断基準が曖昧になってしまい、特にマトリックスのサイズ（全要素数）が大きい場合には、粗密を判断することができなくなる。
【００１４】
そこで特に、本発明のディザマトリックス作成方法における前記第１及び第２のマトリックス生成処理では、
処理対象マトリックスの各要素を所定の走査方向の順に注目要素として順次選択すると共に、選択した注目要素の値を該注目要素から見て予め定められた周辺位置に存在する周辺要素の値に応じて補正していくことで、前記処理対象マトリックスの元の全要素の平均値と前記補正後の全要素の平均値とがほぼ一致するように、前記処理対象マトリックスの各要素の値を他の要素の値に拡散させる拡散処理を、前記２値マトリックスに対して行い、
更に、前記第１のマトリックス生成処理では、前記拡散処理により補正した後の全要素の内で最大値を有する要素の位置を、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置として検出し、前記第２のマトリックス生成処理では、前記拡散処理により補正した後の全要素の内で最小値を有する要素の位置を、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も粗である位置として検出するようにしている。
【００１５】
つまり、本発明では、２値マトリックスの元の全要素の平均値と、補正後の全要素の平均値とがほぼ一致するように、２値マトリックスの各要素の値を他の要素の値に拡散させる拡散処理を行い、その補正後（拡散後）の値が最も大きかった要素の位置を、２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置と判断し、逆に、補正後（拡散後）の値が最も小さかった要素の位置を、２値マトリックスにて第１所定値を有する要素の集合状態が最も粗である位置と判断するようにしている。
【００１６】
従って、本発明のディザマトリックス作成方法によれば、２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置、あるいは最も粗である位置を、人間の主観に頼ることなく、定量的且つ確実に検出することができる。この結果、上述したように解像度の低下，目障りな紋様の発生，及びノイジー性を抑制可能なディザマトリックスを、経験や勘を必要とせずに極めて簡単に作成することができるようになる。
【００１７】
しかも、本発明によれば、基本マトリックス（２値マトリックス）のサイズが大きくても、第１及び第２のマトリックス生成処理にて、第１所定値を有する要素の粗密を確実に判断することができるようになるため、大きなサイズのディザマトリックスを容易に作成でき、一層大きな効果を得ることができる。
【００１８】
即ち、ディザマトリックスの大きさよりも広い画像を２値化する場合には、画像の部分部分を順次、ディザマトリックスの大きさの領域毎に２値化処理することになるが、この場合、ディザマトリックスのサイズが小さいと、２値化後の画像上に、ディザマトリックスを繰り返して用いることに起因する一定パターンの紋様が現れ易くなってしまう。これに対して、本発明によれば、大きなサイズのディザマトリックスを簡単に作成することができるため、このような問題を解決することができるのである。
【００１９】
尚、拡散処理としては、請求項２に記載のように、処理対象マトリックスの各要素を所定の走査方向の順に注目要素として順次選択し、その選択した注目要素の値に対して、該注目要素から見て予め定められた１つあるいは複数の周辺位置に存在する周辺要素の値に所定の重み付け係数を乗じた値を加算すると共に、前記処理対象マトリックスの元の全要素の平均値に前記重み付け係数の総和を乗じた値を減じ、前記加算及び減算を行った後の値を、前記注目要素の補正後の値として記憶する、という処理により行うことができる。
【００２０】
つまり、注目要素の値を周辺要素の値に応じて補正するためには、基本的には、注目要素の値に対して、周辺要素の値に所定の重み付け係数を乗じた値を加算すれば良いが、ただ単にこのようにすると、各要素の値は大きくなる方にしか補正されず、補正後の全要素の平均値が元の全要素の平均値と比べて非常に大きな値となってしまう。そこで、上記加算を行うだけでなく、元の全要素の平均値に各周辺要素の重み付け係数の総和を乗じた値を減じる減算を行うことで、処理対象マトリックス（２値マトリックス）の元の全要素の平均値と、補正後の全要素の平均値とをほぼ一致させつつ、２値マトリックスの各要素の値を他の要素の値に拡散させることができるのである。
【００２１】
一方、第１及び第２のマトリックス生成処理では、請求項３に記載のように、前記２値マトリックスに対して走査方向が夫々異なる複数の前記拡散処理を実行すると共に、前記各拡散処理の実行によって得た各要素の値を同一位置の要素毎に平均した平均値に基づき、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置あるいは粗である位置を検出するようにしても良い。
【００２２】
これは、同一の２値マトリックスであっても、拡散処理の走査方向（つまり、注目要素を選択していく方向）が異なれば、各要素の補正後の値が変わり、延いては、第１所定値を有する要素が最も密であると検出される位置、あるいは最も粗であると検出される位置が変わってくるからである。そして、請求項３に記載のように、走査方向が異なる複数の拡散処理を実行して、その各拡散処理の実行によって得た各要素の値を同一位置の要素毎に平均化することにより、２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置あるいは粗である位置を、より確実に検出できるようになる。
【００２３】
一方更に、第１及び第２のマトリックス生成処理では、請求項４に記載のように、前記２値マトリックスを複数個配置してなる拡大マトリックスに対して前記拡散処理を実行すると共に、その拡散処理の実行によって得た各要素の値のうち、前記拡散処理が開始された先頭要素ライン部分を含まない２値マトリックスに対応する領域の各要素の値に基づき、前記２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置あるいは粗である位置を検出するようにしても良い。
【００２４】
これは、拡散処理が開始された先頭要素ライン部分やそれに近い領域では、各要素の値が十分に拡散されていないためであり、換言すれば、上記先頭要素ライン部分やそれに近い領域に関しては、第１所定値を有する要素の粗密を適切に判断することができない可能性があるためである。
【００２５】
そして、請求項４に記載の如く処理すれば、２値マトリックスの元の全要素の平均値と、補正後の全要素の平均値とをほぼ一致させつつ、２値マトリックスの各要素の値を他の要素の値に十分拡散させた補正後の値に基づき、第１所定値を有する要素の粗密を判断することができ、この結果、２値マトリックスにて第１所定値を有する要素の集合状態が最も密である位置あるいは最も粗である位置を、より確実に検出できるようになる。特に、請求項３に記載の処理と請求項４に記載の処理とを組み合わせて行えば、一層確実である。
【００２６】
ところで、請求項１〜請求項４に記載のディザマトリックス作成方法において、前記基本マトリックスは、第１所定値を有する要素と第２所定値を有する要素とを、ランダムに配置したものでも良いが、請求項５に記載のように、全ての要素が同一の多値からなるマトリックスを誤差拡散処理して、各要素を第１所定値あるいは第２所定値に２値化して形成したものであれば、一層大きな効果を得ることができる。
【００２７】
つまり、誤差拡散法により生じる２値（第１所定値及び第２所定値）の並びは、一見不規則に見えるけれども、全くのでたらめ（ランダム）ではない。即ち、強い紋様はでき難いがノイジーな画像にはなり難い性質がある。そして、このような誤差拡散法により生じる２値の並びを利用することにより、最終的にディザマトリックスにも誤差拡散法における２値の並びの性質がある程度取り込まれる。従って、解像度が低下せず、目障りな紋様が発生せず、しかも人間の目に対してノイジーとならない、という効果を一層高めることができるのである。
【００２８】
勿論、基本マトリックスとして、第１所定値を有する要素と第２所定値を有する要素とをランダムに配置したものを用いた場合にも、ノイジー性は多少懸念されるが、基本マトリックスから直接ランダムとされない新しい複数の２値マトリックスが生成され、これらマトリックス群に基づいてディザマトリックスが作成されるため、ノイジー性を大幅に薄めることができる。
【００２９】
【発明の実施の形態】
［実施の形態１］
図１は、ディザマトリックス作成装置２の主要ブロック図である。
このディザマトリックス作成装置２の主体を成すマイクロコンピュータ部１１は、ＣＰＵ１２、ＲＯＭからなるプログラムメモリ１３、ＲＡＭからなるワーキングメモリ１４、ＲＡＭからなるディザマトリックス格納メモリ１６、及びＲＡＭからなる出力イメージメモリ１７により構成されている。また、マイクロコンピュータ部１１にはシステムバス１８を介して入力部１０及び出力部１９が接続されている。
【００３０】
入力部１０は、キーボードや外部の記憶装置から入力するためのインターフェースを備え、ディザマトリックス作成に必要なデータや指示の入力を行うものである。また、入力部１０は、作成されたディザマトリックスの効果を確認するために、各画素が８ビットで表される階調を有する画像データを入力する。
【００３１】
ＣＰＵ１２は、後述する如くディザマトリックスの作成をプログラムに従って実行するためのものであり、プログラムメモリ１３は、ディザマトリックス作成プログラムを含め、ＣＰＵ１２で行う様々な制御を実施するためのプログラムを記憶している。また、ワーキングメモリ１４は、ＣＰＵ１２がプログラムメモリ１３に記憶されたプログラムを実行するときに必要なデータを一時的に記憶するものである。
【００３２】
ディザマトリックス格納メモリ１６は、ＣＰＵ１２の処理によって形成されたディザマトリックスデータを記憶する。
出力イメージメモリ１７は、ＣＰＵ１２が、ディザマトリックス格納メモリ１６に格納されているディザマトリックスを用いて、８ビットで表される階調を有する画像データを２値化した、その２値化された出力イメージデータを記憶する。
【００３３】
出力部１９は、出力イメージメモリ１７に格納した２値化画像データを電子写真方式によりドットの有無で印字する装置（カラープリンタ）である。
次に、ディザマトリックス作成装置２により実行されるディザマトリックス作成処理について説明する。ディザマトリックス作成処理のフローチャートを図２以下に示す。尚、本実施の形態では、１画素の濃度値が０〜２５５の２５６階調で表される中間調画像の２値化処理に用いられ、その大きさ（即ち、閾値の数）がｋ（例えばｋ＝１２８×１２８）であるディザマトリックスを作成している。
【００３４】
図２に示すように、ディザマトリックス作成処理の実行が開始されると、まず、ステップ（以下、単に「Ｓ」と記す）１００にて、画素数がｋ（＝１２８×１２８）であり、且つ全画素が所定の均一濃度値（最大濃度値を２５５とした場合、例えば７０）に設定された均一濃度画素マトリックスを、ワーキングメモリ１４に読み込み、その均一濃度画素マトリックスを誤差拡散法により２値化処理する。
【００３５】
尚、ここで言う誤差拡散法とは、広い意味で用いており、ある画素を２値化した場合に２値化の誤差を未だ２値化していない周辺の画素の濃度に分配する方法（狭い意味の誤差拡散法・文献：Robert W.Floyd and Louis Steinberg,"An Adaptive Algorithm for Spatial Greyscale",Proceeding of the S.I.D. Vol.17/2,1976等）、あるいは２値化する際に周辺に存在する既に２値化した画素からその２値化の際に生じた誤差の所定割合を受け取る方法（平均誤差最小法とも言う。文献：J.F.Jarvis,C.N.Judice,and W.H.Ninke,"A Survey of Techniques forthe Display of Continuous Tone Pictures on Bilevel Displays",Computer Graphics and Image Processing.5,13-40(1976)等）等が良く知られているので、誤差拡散法自体の詳細な説明は省略する。
【００３６】
また、本実施の形態では、上記均一濃度画素マトリックスの各画素は、誤差拡散法により「１」（ドット有り＝オン）又は「０」（ドット無し＝オフ）の何れかの要素に２値化され、その２値化後の２値マトリックスにおいて、「１」である要素の数（以下、ドット数とも言う）は、ｎ（０＜ｎ＜ｋ）個であるものとする。また更に、以下の説明において、例えば「ｎドット」とは、ドット数がｎ個であることを示している。
【００３７】
次に、続くＳ２００にて、Ｓ１００の２値化処理で得た２値マトリックスを、以下の処理で基本となるｎドットの２値マトリックス（以下、基本マトリックスと言う）Ｆn として、ワーキングメモリ１４に保存する。
そして、続くＳ３００にて、上記基本マトリックスＦn を元にして、（ｎ−１）ドットの２値マトリックスＦn-1 から０ドットの２値マトリックスＦ0 までの、ｎ個の２値マトリックス（つまり、基本マトリックスＦn よりも「１」の要素が１つずつ少ないｎ個の２値マトリックス）Ｆn-1 〜Ｆ0 を作成する、少ドットマトリックス作成処理を実行する。
【００３８】
Ｓ３００の少ドットマトリックス作成処理の詳細を、図３のフローチャートに示す。
図３に示すように、少ドットマトリックス作成処理の実行が開始されると、まず、Ｓ３１０にて、今回の処理対象となる２値マトリックスを特定するためのドット数番号ｉに、初期値として、上記基本マトリックスＦn のドット数である「ｎ」を設定する。
【００３９】
そして、続くＳ３２０にて、ワーキングメモリ１４の中から、ドット数がドット数番号ｉと一致する２値マトリックス（ｉドットの２値マトリックス）Ｆi を選択し、その２値マトリックスＦi に対して、図４に示す粗密計算処理を実行することにより、当該２値マトリックスＦi について「１」である要素の粗密（ドットの粗密）を計算する。尚、このＳ３２０の処理が最初に実行された場合には、ドット数番号ｉは上記Ｓ３１０で「ｎ」に設定されているため、ｉドットの２値マトリックスＦi としては、Ｓ２００でワーキングメモリ１４に保存した基本マトリックスＦn が選択される。
【００４０】
ここで、Ｓ３２０の粗密計算処理では、図４に示すように、まずＳ３２５にて、今回の処理対象として選択したｉドットの２値マトリックスＦi の全要素の平均値Ｈi を算出し、続くＳ３２７にて、上記選択した２値マトリックスＦi をワーキングメモリ１４上でコピーして、その２値マトリックスＦi と全く同一の処理対象マトリックスＳＭi を作る。尚、本実施の形態では、２値マトリックスの各要素は、「１」又は「０」に２値化されているため、Ｓ３２５で算出される平均値Ｈi は、２値マトリックスＦi のドット数ｉを全要素数ｋで割った値（ｉ／ｋ）となる。
【００４１】
そして、続くＳ３３０にて、Ｓ３２７で作った処理対象マトリックスＳＭi から注目要素（ｘ，ｙ）を選択して、その注目要素（ｘ，ｙ）の値（つまり、元の２値化値）Ｄx,y を読み込む。尚、本実施の形態においては、図６に示すように、処理対象マトリックスＳＭi の左上の位置を原点（０，０）とし、この原点（０，０）からはじめて、右方向を主走査方向ｘ、下方向を副走査方向ｙとして、各要素を、順次、注目要素として選択する。
【００４２】
次に、続くＳ３３５にて、図６に示す如く、処理対象マトリックスＳＭi において注目画素「＊」（ｘ，ｙ）に隣接した４つの周辺位置に存在する４個の要素（ｘ−１，ｙ−１）、（ｘ，ｙ−１）、（ｘ＋１，ｙ−１）、（ｘ−１，ｙ）を周辺要素として選択し、後述するＳ３４５の処理によって補正が行われた後の、上記各周辺要素の値Ｄx-1,y-1 、Ｄx,y-1 、Ｄx+1,y-1 、Ｄx-1,y を、ワーキングメモリ１４から読み込む。
【００４３】
尚、図６にて斜線で示すように、当該粗密計算処理が主走査方向ｘと副走査方向ｙとに夫々最初に実行される領域（先頭要素ライン部）に存在する要素が、上記Ｓ３３０で注目要素「＊」として選択された場合には、４個全ての周辺要素が存在しない。よって、この場合に、存在しない周辺要素の値としては、予め定められた所定値（本実施の形態では「０」としたが、全要素の平均値Ｈi とするのが望ましい）が用いられる。
【００４４】
そして、続くＳ３４０にて、予めプログラムメモリ１３又はワーキングメモリ１４に格納されており、「＊」を注目要素位置として図７に示した拡散分配マトリックスから、上記各周辺要素（ｘ−１，ｙ−１）、（ｘ，ｙ−１）、（ｘ＋１，ｙ−１）、（ｘ−１，ｙ）の夫々に対応する重み付け係数α１（＝２／１６），α２（＝４／１６），α３（＝３／１６），α４（＝４／１６）を読み出す。
【００４５】
そして、続くＳ３４５にて、Ｓ３２５で求めた平均値Ｈi 、Ｓ３３０で読み込んだ注目要素（ｘ，ｙ）の値（元の２値化値）Ｄx,y 、Ｓ３３５で読み込んだ周辺要素の補正後の値Ｄx-1,y-1 、Ｄx,y-1 、Ｄx+1,y-1 、Ｄx-1,y 、及びＳ３４０で読み込んだ周辺要素の重み付け係数α１，α２，α３，α４から、下記の式１に基づいて、注目要素（ｘ，ｙ）の補正値Ｄ′x,y を算出し、その補正値Ｄ′x,y を、下記の式２の如く、注目要素（ｘ，ｙ）の値Ｄx,y としてワーキングメモリ１４に再保存する。
【００４６】
【数１】
0003740739.tif 000002
【００４７】
尚、このように補正された今回の注目要素の値Ｄx,y は、その後、上記Ｓ３３０で他の要素が注目要素として選択された場合に、前述のＳ３３５にて、周辺要素の補正後の値として読み込まれることとなる。
このようにしてＳ３４５の処理が終わると、続くＳ３５０にて、処理対象マトリックスＳＭi の全要素について処理が終了したか否かを判定し、未処理の要素が存在すれば、Ｓ３３０に戻り、処理対象マトリックスＳＭi における次の座標の要素を注目要素として、前述したＳ３３０〜Ｓ３４５の処理を繰り返す。そして、Ｓ３５０にて、全要素についての処理が終了したと判定すれば、当該粗密計算処理を終了する。
【００４８】
つまり、粗密計算処理では、注目要素の値Ｄx,y に対して、周辺要素の値Ｄx-1,y-1 、Ｄx,y-1 、Ｄx+1,y-1 、Ｄx-1,y に所定の重み付け係数α１，α２，α３，α４を乗じた値を加算すると共に、処理対象マトリックスＳＭi の元の全要素の平均値Ｈi に重み付け係数の総和（α１＋α２＋α３＋α４）を乗じた値を減じ、その加算及び減算を行った後の値Ｄ′x,y を、注目要素の補正後の値Ｄx,y として保存する、という式１，２の演算を、２値マトリックスＦi をコピーした処理対象マトリックスＳＭi の各要素について順次実行するようにしている。
【００４９】
そして、この粗密計算処理が行われた後の処理対象マトリックスＳＭi は、全要素の平均値が２値マトリックスＦi の全要素の平均値Ｈi とほぼ一致するように、２値マトリックスＦi の各要素の値を他の要素の値に拡散させたマトリックスとなる。
【００５０】
上述したように少ドットマトリックス生成処理のＳ３２０で、図４の粗密計算処理の実行が終了すると、図３に示すようにＳ３６０へ進む。
そして、このＳ３６０にて、粗密計算処理が行われた後の処理対象マトリックスＳＭi の全要素の内で最大値を有する要素の位置を、２値マトリックスＦi にて「１」の要素が最も密である位置（ドットが最も密な位置）と判断し、更に、２値マトリックスＦi において、「１」の要素が最も密である位置と判断した位置の要素の値を「１」から「０」に変更することで、２値マトリックスＦi よりも「１」の要素が１つ少ない（ｉ−１）ドットの２値マトリックスＦi-1 を作成し、その２値マトリックスＦi-1 をワーキングメモリ１４に保存する。
【００５１】
その後、続くＳ３７０にて、ドット数番号ｉの値を１つ減少させ（デクリメントし）、続くＳ３８０にて、ドット数番号ｉの値が０よりも大きいか否かを判定する。ここで、ドット数番号ｉの値が未だ０よりも大きければ、Ｓ３２０に戻り、ドット数が今回のドット数番号ｉに一致する２値マトリックスＦi （つまり、前回のＳ３６０で新たに作成した２値マトリックスＦi-1 ）を今回の処理対象として、前述したＳ３２０〜Ｓ３７０の処理を繰り返す。そして、Ｓ３８０にて、ドット数番号ｉが０よりも大きくないと判定すれば、当該少ドットマトリックス作成処理を終了する。
【００５２】
よって、この少ドットマトリックス作成処理が終了すると、ワーキングメモリ１４には、上記基本マトリックスＦn と、その基本マトリックスＦn よりも「１」の要素が１つずつ少ないｎ個の２値マトリックスＦn-1 〜Ｆ0 とが保存されることになる。
【００５３】
ここで、説明を簡単にするため、Ｓ２００で保存された基本マトリックスＦnが、例えば図８（ａ）に示すように、全要素数ｋが２５（＝５×５）で、ドット数ｎが８であった場合について説明する。
この場合、少ドットマトリックス作成処理（図３）のＳ３２０では、上記基本マトリックスＦn が、最初に処理対象としての２値マトリックスＦ8 として選択され、その２値マトリックスＦ8 に対して図４の粗密計算処理が実行される。すると、粗密計算処理のＳ３２７で上記２値マトリックスＦ8 をコピーして作られる処理対象マトリックスＳＭ8 の各要素の値は、最終的に図８（ｂ）の様な値となる。
【００５４】
そして、少ドットマトリックス作成処理の次のＳ３６０では、処理対象マトリックスＳＭ8 の全要素の内で最大値（ｍａｘ）である「０．７３」の要素の位置を、２値マトリックスＦ8 にて「１」の要素が最も密である位置と判断する。そして更に、Ｓ３６０では、図８（ｃ）の○印で示すように、２値マトリックスＦ8 において、上記の如く「１」の要素が最も密である位置と判断した位置の要素の値を「１」から「０」に変更することで、「１」の要素が７個の（７ドットの）２値マトリックスＦ7 を作成する。
【００５５】
その後、新たに作成した２値マトリックスＦ7 に対しても、Ｓ３２０及びＳ３６０の処理を実行することで、「１」の要素が６個の（６ドットの）２値マトリックスＦ6 を作成し、以後同様に処理を繰り返すことで、図８（ｄ）に示すように、全ての要素が「０」である２値マトリックスＦ0 まで作成するのである。
【００５６】
このように、少ドットマトリックス作成処理を実行して、基本マトリックスＦn よりも「１」の要素が１つずつ少ないｎ個の２値マトリックスＦn-1 〜Ｆ0 を作成すると、図２に示す如く次のＳ４００に進む。
そして、このＳ４００にて、今度は、上記基本マトリックスＦn を元にして、（ｎ＋１）ドットの２値マトリックスＦn+1 からｋドットの２値マトリックスＦk までの、（ｋ−ｎ）個の２値マトリックス（つまり、基本マトリックスＦn よりも「１」の要素が１つずつ多い（ｋ−ｎ）個の２値マトリックス）Ｆn+1 〜Ｆk を作成する、多ドットマトリックス作成処理を実行する。
【００５７】
ここで、Ｓ４００の多ドットマトリックス作成処理の詳細を、図５のフローチャートに示す。
図５に示すように、多ドットマトリックス作成処理の実行が開始されると、Ｓ４１０及びＳ４２０にて、前述した少ドットマトリックス作成処理のＳ３１０及びＳ３２０と全く同様の処理を行う。
【００５８】
即ち、まずＳ４１０にて、今回の処理対象となる２値マトリックスを特定するためのドット数番号ｉに、初期値として、上記基本マトリックスＦn のドット数である「ｎ」を設定する。次にＳ４２０にて、ワーキングメモリ１４の中から、ドット数がドット数番号ｉと一致する２値マトリックス（ｉドットの２値マトリックス）Ｆi を選択し、その２値マトリックスＦi に対して、前述した図４の粗密計算処理を実行することにより、当該２値マトリックスＦi について「１」である要素の粗密（ドットの粗密）を計算する。
【００５９】
そして、Ｓ４２０にて図４に示した粗密計算処理の実行が終了すると、Ｓ４６０に進んで、粗密計算処理が行われた後の処理対象マトリックスＳＭi の全要素の内で最小値を有する要素の位置を、２値マトリックスＦi にて「１」の要素が最も粗である位置（ドットが最も粗な位置）と判断し、更に、２値マトリックスＦi において、「１」の要素が最も粗である位置と判断した位置の要素の値を「０」から「１」に変更することで、２値マトリックスＦi よりも「１」の要素が１つ多い（ｉ＋１）ドットの２値マトリックスＦi+1 を作成し、その２値マトリックスＦi+1 をワーキングメモリ１４に保存する。
【００６０】
その後、続くＳ４７０にて、ドット数番号ｉの値を１つ増加させ（インクリメントし）、続くＳ４８０にて、ドット数番号ｉの値が全要素数ｋ以下であるか否かを判定する。ここで、ドット数番号ｉの値が未だｋ以下であれば、Ｓ４２０に戻り、ドット数が今回のドット数番号ｉに一致する２値マトリックスＦi （つまり、前回のＳ４６０で新たに作成した２値マトリックスＦi+1 ）を今回の処理対象として、前述したＳ４２０〜Ｓ４７０の処理を繰り返す。そして、Ｓ４８０にて、ドット数番号ｉがｋ以下でないと判定すれば、当該多ドットマトリックス作成処理を終了する。
【００６１】
つまり、多ドットマトリックス作成処理では、少ドットマトリックス作成処理の場合とは逆に、今回選択した２値マトリックスＦi に対し図４の粗密計算処理を実行して得た処理対象マトリックスＳＭi の全要素の内で、最小値を有する要素の位置を、２値マトリックスＦi にて「１」の要素が最も粗である位置と判断し、２値マトリックスＦi において、その位置の要素の値を「０」から「１」に変更することで、２値マトリックスＦi よりも「１」の要素が１つ多い２値マトリックスＦi+1 を作成する、という処理を繰り返すようにしている。
【００６２】
例えば、基本マトリックスＦn が、図８（ａ）に例示したように、全要素数ｋが２５（＝５×５）で、ドット数ｎが８であった場合について説明する。
この場合、多ドットマトリックス作成処理（図５）のＳ４２０では、少ドットマトリックス作成処理の場合と同様に、まず基本マトリックスＦn が、最初に処理対象としての２値マトリックスＦ8 として選択され、その２値マトリックスＦ8 に対して図４の粗密計算処理が実行される。そして、前述した様に、粗密計算処理のＳ３２７で上記２値マトリックスＦ8 をコピーして作られる処理対象マトリックスＳＭ8 の各要素の値は、図８（ｂ）の様な値となる。
【００６３】
すると、多ドットマトリックス作成処理のＳ４６０では、処理対象マトリックスＳＭ8 の全要素の内で最小値（ｍｉｎ）である「−０．２８」の要素の位置を、２値マトリックスＦ8 にて「１」の要素が最も粗である位置と判断し、図８（ｅ）の○印で示すように、２値マトリックスＦ8 において、上記の如く「１」の要素が最も粗である位置と判断した位置の要素の値を「０」から「１」に変更することで、「１」の要素が９個の（９ドットの）２値マトリックスＦ9 を作成する。
【００６４】
そして、新たに作成した２値マトリックスＦ9 に対しても、Ｓ４２０及びＳ４６０の処理を実行することで、「１」の要素が１０個の（１０ドットの）２値マトリックスＦ10を作成し、以後同様に処理を繰り返すことで、図８（ｆ）に示すように、全ての要素が「１」である２値マトリックスＦ25（＝Ｆk ）まで作成するのである。
【００６５】
よって、図２のＳ４００にて、多ドットマトリックス作成処理の実行が終了すると、基本マトリックスＦn よりも「１」の要素が１つずつ多い（ｋ−ｎ）個の２値マトリックスＦn+1 〜Ｆk が新たに作成され、この結果、ワーキングメモリ１４内には、図９に示すように、基本マトリックスＦn を含めて、全要素が「０」である２値マトリックスＦ0 から全要素が「１」である２値マトリックスＦkまでの、（ｋ＋１）個の２値マトリックスＦ0 〜Ｆk が保存される。
【００６６】
こうして多ドットマトリックス作成処理の実行を終えると、図２に示す如くＳ５００に進む。そして、このＳ５００にて、ワーキングメモリ１４内の全ての２値マトリックスＦ0 〜Ｆk について、同一位置の要素の２値化値を合計し、この合計値を要素とする集積結果マトリックスＭを形成する。即ち、全ての２値マトリックスＦ0 〜Ｆk の各要素位置について、その値を合計し、その合計値を、図１０に示す如くワーキングメモリ１４内に用意された集積結果マトリックスＭの同一位置に格納するのである。
【００６７】
そして、続くＳ６００にて、集積結果マトリックスＭの合計値の大きい要素位置から順に、ディザマトリックス用の閾値を設定し、続くＳ７００にて、その閾値からなるマトリックスをディザマトリックスとして、ディザマトリックス格納メモリ１６に保存した後、当該ディザマトリックス作成処理を終了する。
【００６８】
尚、Ｓ６００での閾値の設定は、例えば以下の様に行われる。
まず、集積結果マトリックスＭの合計値の大きい要素位置から順に番号を付けると、その番号は、１〜１６３８４（＝１２８×１２８＝ｋ）となり、全ての２値マトリックスＦ0 〜Ｆk において「１」の要素が１つずつ増加していく要素位置に対応する。また、２値化処理する中間調画像の各画素の濃度値は、前述したように０〜２５５の２５６階調である。
【００６９】
そこで、Ｓ６００では、上記番号の順に、例えば、番号が１〜６４（＝１６３８４／２５６）の要素位置については、ディザマトリックス用の閾値として「０」を設定し、番号が６５〜１２８の要素位置については、閾値として「１」を設定し、番号が１２９〜１９２の要素位置については、閾値として「２」を設定し、・・・、番号が１６２５７〜１６３２０の要素位置については、閾値として「２５４」を設定し、番号が１６３２１〜１６３８４の要素位置については、閾値として「２５５」を設定するといった具合いに、番号が小さい要素位置から順に閾値を大きく設定していくのである。
【００７０】
また、Ｓ６００では、上述とは逆に、番号が１〜６４の要素位置では、閾値として「２５５」を設定し、番号が６５〜１２８の要素位置では、閾値として「２５４」を設定し、・・・、番号が１６２５７〜１６３２０の要素位置については、閾値として「１」を設定し、番号が１６３２１〜１６３８４の要素位置については、閾値として「０」を設定するといった具合いに、番号が小さい要素位置から順に閾値を小さく設定していくようにしても良い。
【００７１】
尚、本実施の形態では、図３に示した少ドットマトリックス作成処理のＳ３２０及びＳ３６０が、第１のマトリックス生成処理に相当し、図５に示した多ドットマトリックス作成処理のＳ４２０及びＳ４６０が、第２のマトリックス生成処理に相当している。そして、少ドットマトリックス作成処理のＳ３２０及び多ドットマトリックス作成処理のＳ４２０で夫々実行される図４の粗密計算処理が、拡散処理に相当している。
【００７２】
以上詳述したように、本実施の形態のディザマトリックス作成装置２では、まず、均一濃度画素マトリックスを、誤差拡散法により２値化処理することで、ｎドット（「１」の要素がｎ個）の基本マトリックスＦn を生成するようにしている（Ｓ１００，Ｓ２００）。
【００７３】
そして、ｉドットの２値マトリックスＦi について、「１」の要素が最も密である位置に存在する要素の値を「１」から「０」に置換することで、「１」の要素が１つ少ない新たな２値マトリックスＦi-1 を生成するＳ３２０及びＳ３６０の処理を、上記基本マトリックスＦn を最初の２値マトリックスＦi として、繰り返し行うことにより、基本マトリックスＦn よりも「１」の要素が１つずつ少ないｎ個の２値マトリックスＦn-1 〜Ｆ0 を生成し（Ｓ３００）、また、ｉドットの２値マトリックスＦi について、「１」の要素が最も粗である位置に存在する要素の値を「０」から「１」に置換することで、「１」の要素が１つ多い新たな２値マトリックスＦi+1 を生成するＳ４２０及びＳ４６０の処理を、上記基本マトリックスＦn を最初の２値マトリックスＦi として、繰り返し行うことにより、基本マトリックスＦn よりも「１」の要素が１つずつ多い（ｋ−ｎ）個の２値マトリックスＦn+1 〜Ｆk を生成している（Ｓ４００）。
【００７４】
よって、上記Ｓ３２０及びＳ３６０の繰り返しにより生成される２値マトリックスＦn-1 〜Ｆ0 において「１」から「０」に順次置換されていく要素の位置、及び、上記Ｓ４２０及びＳ４６０の繰り返しにより生成される２値マトリックスＦn+1 〜Ｆk において「０」から「１」に順次置換されていく要素の位置は、特定の領域に偏ることなく適度に分散することとなり、この結果、上記処理の繰り返しにより生成された複数のマトリックスＦ0 〜Ｆn-1， Ｆn+1 〜Ｆk と、これらマトリックスの元となる基本マトリックスＦn とを、図９に示す如く「１」の要素が少ないものから順に配列させれば、各マトリックスＦ0 〜Ｆk は、「１」の要素が、全くのランダムではないが不規則に分散して順次１つずつ増えていくものとなる。
【００７５】
そこで、本実施の形態のディザマトリックス作成装置２では、基本マトリックスＦn と、上記の如く生成した２値マトリックスＦ0 〜Ｆn-1，Ｆn+1 〜Ｆk と、からなるマトリックス群に基づいて、ディザマトリックスにおける各要素の閾値を設定している（Ｓ５００〜Ｓ７００）。
【００７６】
このため、ディザマトリックスの各要素における閾値は、特定の値に偏ることが無く、ランダムともならず、更に各種の値に適度に分散して分布するものとなる。
そして、このように作成したディザマトリックスを用いて、中間調のカラー画像を２値化処理し、出力部１９（カラープリンタ）にて記録したところ、人間の目に対してノイジーとならず、かつ解像度が悪化せず、紋様の発生が抑制された疑似中間調の２値化画像を生成することができた。勿論、画像の２値化処理時はディザ法であり、誤差拡散法のように多数の計算は行わないので、迅速に処理することができた。
【００７７】
そして特に、本実施の形態では、前述したＳ３２０，Ｓ４２０にて、図４の粗密計算処理を実行することにより、２値マトリックスＦi をコピーした処理対象マトリックスＳＭi の各要素について、図７の拡散配分マトリックスに基づく式１，２の演算を順次行い、全要素の平均値が２値マトリックスＦi の全要素の平均値Ｈi とほぼ一致するように、２値マトリックスＦi の各要素の値を他の要素の値に拡散させた処理対象マトリックスＳＭi を得るようにしている。
【００７８】
そして、前述したＳ３６０では、粗密計算処理が行われた後の処理対象マトリックスＳＭi の全要素の内で最大値を有する要素の位置を、２値マトリックスＦi にて「１」の要素が最も密である位置と判断し、前述したＳ４６０では、粗密計算処理が行われた後の処理対象マトリックスＳＭi の全要素の内で最小値を有する要素の位置を、２値マトリックスＦi にて「１」の要素が最も粗である位置と判断するようにしている。
【００７９】
従って、本実施の形態によれば、２値マトリックスＦi にて「１」の要素が最も密である位置、あるいは最も粗である位置を、人間の主観に頼ることなく、定量的且つ確実に検出することができ、この結果、上述したように解像度の低下，目障りな紋様の発生，及びノイジー性を抑制可能なディザマトリックスを、経験や勘を必要とせずに極めて簡単に作成することができる。
【００８０】
しかも、本実施の形態によれば、基本マトリックスＦn （２値マトリックスＦi ）のマトリックスサイズが大きくても、前述したＳ３６０，Ｓ４６０の処理にて、「１」の要素の粗密を確実に判断できるため、大きなサイズのディザマトリックスを容易に作成でき、一層大きな効果を得ることができる。
【００８１】
即ち、ディザマトリックスの大きさよりも広い中間調画像を２値化する場合には、画像の部分部分を順次、ディザマトリックスの大きさの領域毎に２値化処理することになるが、この場合、ディザマトリックスのサイズが小さいと、２値化後の画像上に、ディザマトリックスを繰り返して用いることに起因する一定パターンの紋様が現れ易くなってしまう。これに対して、本実施の形態によれば、１２８×１２８といった大きなサイズのディザマトリックスを簡単に作成することができるため、このような問題を解決することができるのである。
【００８２】
［実施の形態２］
次に、実施の形態２として、前述した少ドットマトリックス作成処理（図３）のＳ３２０、及び多ドットマトリックス作成処理（図５）のＳ４２０にて、走査方向が異なる複数の粗密計算処理を実行する、ディザマトリックス作成装置について説明する。尚、以下では、前述した実施の形態１に対して異なる点についてのみ説明する。
【００８３】
まず、本実施の形態２において、図３のＳ３２０及び図５のＳ４２０では、ワーキングメモリ１４の中からドット数がドット数番号ｉと一致する２値マトリックスＦi を選択すると、その２値マトリックスＦi に対し、図４に示した粗密計算処理を、図１１にてＮｏ．１〜Ｎｏ．８で示される８種類の拡散配分マトリックス及び走査方向（つまり、注目要素を順次選択する主走査方向ｘ，副走査方向ｙ）に基づき、合計８回実行する。そして、この８回の実行により、２値マトリックスＦi の各要素の値を、Ｎｏ．１〜Ｎｏ．８の走査方向で夫々拡散させた、８個の処理対象マトリックスＳＭ１i 〜ＳＭ８i を作成する。
【００８４】
尚、図１１に示すＮｏ．１の拡散配分マトリックス及び走査方向は、実施の形態１のものと同じである。また、他のＮｏ．２〜Ｎｏ．８は、Ｎｏ．１に対して、走査方向（主走査方向ｘ，副走査方向ｙ）が夫々異なっており、それに応じて拡散配分マトリックスにおける各重み付け係数α１〜α４の注目要素位置「＊」に対する配置順が異なっている。そして、Ｎｏ．１〜Ｎｏ．８の拡散配分マトリックス及び走査方向に夫々基づいて実行される各粗密計算処理のＳ３３５では、対応する拡散分配マトリックスにて、注目要素位置「＊」から見て重み付け係数α１〜α４が設定されている位置の要素が、周辺要素として選択される。
【００８５】
即ち、Ｓ３２０及びＳ４２０で１回目に実行される粗密計算処理（図４）では、そのＳ３２７にて、２値マトリックスＦi をコピーして第１の処理対象マトリックスＳＭ１i を作る。そして、Ｓ３３０にて、図１１のＮｏ．１に示す如く、実施の形態１の場合と同様に、処理対象マトリックスＳＭ１i の左上の位置を原点とし、その原点からはじめて右方向を主走査方向ｘ，下方向を副走査方向ｙとして、各要素を注目要素として順次選択することにより、２値マトリックスＦiの各要素の値を、右方向を主走査方向ｘ，下方向を副走査方向ｙとして拡散させた処理対処マトリックスＳＭ１i を得る。
【００８６】
一方、２回目に実行される粗密計算処理では、Ｓ３２７にて、２値マトリックスＦi をコピーして第２の処理対象マトリックスＳＭ２i を作り、Ｓ３３０にて、図１１のＮｏ．２に示す如く、処理対象マトリックスＳＭ２i の右上の位置を原点とし、その原点からはじめて左方向を主走査方向ｘ，下方向を副走査方向ｙとして、各要素を注目要素として順次選択する。そして、これにより、２値マトリックスＦi の各要素の値を、左方向を主走査方向ｘ，下方向を副走査方向ｙとして拡散させた処理対処マトリックスＳＭ２i を得る。
【００８７】
また、３回目に実行される粗密計算処理では、Ｓ３２７にて、２値マトリックスＦi をコピーして第３の処理対象マトリックスＳＭ３i を作り、Ｓ３３０にて、図１１のＮｏ．３に示す如く、処理対象マトリックスＳＭ３i の左下の位置を原点とし、その原点からはじめて右方向を主走査方向ｘ，上方向を副走査方向ｙとして、各要素を注目要素として順次選択する。そして、これにより、２値マトリックスＦi の各要素の値を、右方向を主走査方向ｘ，上方向を副走査方向ｙとして拡散させた処理対処マトリックスＳＭ３i を得る。
【００８８】
また更に、４回目〜８回目に実行される粗密計算処理でも、上記と同様に、Ｓ３２７の夫々にて、２値マトリックスＦi をコピーして処理対象マトリックスＳＭ４i ないしＳＭ８i を作り、Ｓ３３０にて、図１１のＮｏ．４〜Ｎｏ．８に夫々示す走査方向の順で、処理対象マトリックスＳＭ４i ないしＳＭ８i の各要素を注目要素として順次選択する。これにより、２値マトリックスＦi の各要素の値をＮｏ．４〜Ｎｏ．８の走査方向で夫々拡散させた処理対処マトリックスＳＭ４i 〜ＳＭ８i を得る。
【００８９】
そして、本実施の形態２において、図３のＳ３６０及び図５のＳ４６０では、前述の如く粗密計算処理を８回実行して得た８個の処理対象マトリックスＳＭ１i 〜ＳＭ８i について、各要素の値を同一位置の要素毎に平均した平均値を算出し、その平均値に基づき、２値マトリックスＦi にて「１」の要素が最も密である位置、あるいは「１」の要素が最も粗である位置を判断する。
【００９０】
即ち、図３のＳ３６０では、算出した平均値が最も大きい要素の位置を、２値マトリックスＦi にて「１」の要素が最も密である位置と判断し、図４のＳ４６０では、算出した平均値が最も小さい要素の位置を、２値マトリックスＦi にて「１」の要素が最も粗である位置と判断するのである。
【００９１】
以上のように、本実施の形態２においては、２値マトリックスＦi に対して、走査方向が異なる複数の粗密計算処理を実行し、その計算結果の平均値に基づいて、２値マトリックスＦi にて「１」の要素が最も密である位置あるいは最も粗である位置を判断するようにしている。
【００９２】
これは、前述した式１，２から明らかなように、粗密計算処理では、注目要素の値を既に補正した周辺要素の値に応じて補正していくようにしているため、同一の２値マトリックスＦi であっても、粗密計算処理の走査方向（つまり、注目要素を選択していく方向）が異なれば、各要素の補正後の値が変わり、延いては、「１」の要素が最も密であると判断される位置、あるいは最も粗であると判断される位置が変わってくるからである。
【００９３】
そして、本実施の形態２のように、走査方向が異なる複数の粗密計算処理を実行するようにすることで、２値マトリックスＦi にて「１」の要素が最も密である位置、あるいは最も粗である位置を、より確実に検出できるようになる。
［実施の形態３］
次に、実施の形態３について説明する。本実施の形態３のディザマトリックス作成装置では、前述した実施の形態２に対して、以下に述べる処理を更に追加して実行している。
【００９４】
まず、本実施の形態３において、図３のＳ３２０及び図５のＳ４２０では、ワーキングメモリ１４の中からドット数がドット数番号ｉと一致する２値マトリックスＦi を選択すると、図１２に示すように、その２値マトリックスＦi を複数個（本実施の形態では、６×６の合計３６個）配置してなる拡大処理対象マトリックスＦ′i を作成し、その作成した拡大処理対象マトリックスＦ′i に対して、前述した如く走査方向が夫々異なる８種類の粗密計算処理を実行する。そして更に、Ｓ３２０及びＳ４２０では、粗密計算処理を実行して得た計算結果のうち、図１２にて斜線で如く、拡大処理対象マトリックスＦ′i の中でほぼ中央に配置された１つの２値マトリックスＦi に対応する領域Ｒの各要素の値だけを、次の処理で用いる処理対象マトリックスＳＭ１i 〜ＳＭ８i として、ワーキングメモリ１４内に保存する。
【００９５】
すると、図３のＳ３６０では、Ｓ３２０で保存された上記領域Ｒに対応する処理対象マトリックスＳＭ１i 〜ＳＭ８i に基づき、２値マトリックスＦi にて「１」の要素が最も密である位置を判断し、図５のＳ４６０では、Ｓ４２０で保存された上記領域Ｒに対応する処理対象マトリックスＳＭ１i 〜ＳＭ８i に基づき、２値マトリックスＦi にて「１」の要素が最も粗である位置を判断することとなる。
【００９６】
そして、上述した処理を追加して行う本実施の形態３によれば、２値マトリックスＦi にて「１」の要素が最も密である位置、あるいは「１」の要素が最も粗である位置を、より一層確実に検出できるようになる。
つまり、既述したように、粗密計算処理のＳ３３０で注目要素として選択された要素が、図６にて斜線で示したように当該粗密計算処理が主走査方向ｘと副走査方向ｙとに夫々最初に実行される領域（先頭要素ライン部）に存在する要素であった場合には、その注目要素に対する全ての周辺要素が存在しないため、その存在しない周辺要素の値としては、予め定められた所定値（例えば「０」）が用いられる。
【００９７】
よって、このように粗密計算処理が開始される先頭要素ライン部分やそれに近い領域では、各要素の値が十分且つ正確に他の要素の値へ拡散されなくなり、この結果、上記先頭要素ライン部分やそれに近い領域に関しては、「１」の要素の粗密を適切に判断することができない場合が生じてしまう。
【００９８】
そこで、本実施の形態３では、「１」の要素の粗密を計算すべき２値マトリックスＦi を複数個配置してなる拡大処理対象マトリックスＦ′i に対して、粗密計算処理を実行し、その計算結果のうち、上記先頭要素ライン部分やそれに近い領域を全く含まない領域（即ち、本実施の形態３では、拡大処理対象マトリックスＦ′i の中でほぼ中央に配置された２値マトリックスＦi に対応する領域Ｒ）についての計算結果を用いて、「１」の要素の粗密を判断するようにしており、この結果、２値マトリックスＦi にて「１」の要素が最も密である位置、あるいは最も粗である位置を、より一層確実に検出できるのである。そして、これにより、解像度の低下，目障りな紋様の発生，及びノイジー性を抑制可能なディザマトリックスを、常に安定して作成することが可能となる。
【図面の簡単な説明】
【図１】  実施の形態１のディザマトリックス作成装置の主要ブロック図である。
【図２】  実施の形態１のディザマトリックス作成処理を表すフローチャートである。
【図３】  図２のディザマトリックス作成処理で実行される少ドットマトリックス作成処理を表すフローチャートである。
【図４】  実施の形態１の粗密計算処理を表わすフローチャートである。
【図５】  図２のディザマトリックス作成処理で実行される多ドットマトリックス作成処理を表すフローチャートである。
【図６】  実施の形態１の注目要素「＊」に対する周辺要素の配置説明図である。
【図７】  実施の形態１の拡散分配マトリックスの構成説明図である。
【図８】  図３の少ドットマトリックス作成処理及び図５の多ドットマトリックス作成処理の作用を説明する説明図である。
【図９】  実施の形態１でワーキングメモリに保存される２値マトリックスの説明図である。
【図１０】  実施の形態１の集積結果マトリックスの説明図である。
【図１１】  実施の形態２の粗密計算処理を説明する説明図である。
【図１２】  実施の形態３の粗密計算処理を説明する説明図である。
【符号の説明】
２…ディザマトリックス作成装置    １０…入力部
１１…マイクロコンピュータ部    １２…ＣＰＵ    １３…プログラムメモリ
１４…ワーキングメモリ    １６…ディザマトリックス格納メモリ
１７…出力イメージメモリ    １８…システムバス    １９…出力部
【図１】
0003740739.tif 000003
【図２】
0003740739.tif 000004
【図３】
0003740739.tif 000005
【図４】
0003740739.tif 000006
【図５】
0003740739.tif 000007
【図６】
0003740739.tif 000008
【図７】
0003740739.tif 000009
【図８】
0003740739.tif 000010
【図９】
0003740739.tif 000011
【図１０】
0003740739.tif 000012
【図１１】
0003740739.tif 000013
【図１２】
0003740739.tif 000014