(57)【特許請求の範囲】
【請求項１】
予め、各要素がオンあるいはオフに２値化された複数の既成マトリックスを含む既成マトリックス群から、オンの要素とオフの要素との分布が異なる２つの既成マトリックスを選択し、これら２つの既成マトリックスの内の一方の既成マトリックスに存在する要素Ｘijと、それと同一位置に存在する他方の既成マトリックスの要素Ｙijとを参照して所定の条件に基づいて、それらの要素Ｘij，Ｙijと同一位置に存在する新しいマトリックスの要素Ｚijのオン／オフを決定する参照２値化処理を行い、
次いで、前記参照２値化処理にてオン／オフが決定されなかった前記新しいマトリックスの要素Ｚijについて、同一の値の分布が偏らないようにオンあるいはオフに設定する残余２値化処理を行って、
上記２つの処理により各要素Ｚijがオンあるいはオフに２値化された新しいマトリックスを前記既成マトリックス群に含めながら、前記参照２値化処理と前記残余２値化処理とを繰り返すことにより、所定数の既成マトリックスからなる既成マトリックス群を構築し、
この構築された既成マトリックス群に基づいて、ディザマトリックスにおける各要素の閾値を設定することを特徴とするディザマトリックス作成方法。
【請求項２】
前記残余２値化処理が、前記参照２値化処理にてオン／オフが決定されなかった前記新しいマトリックスの要素Ｚijについて、所定位置から最も近い位置に存在するものから順に、オン／オフを交互に設定して行くことを特徴とする請求項１記載のディザマトリックス作成方法。
【請求項３】
前記最も近い位置が、前記所定位置から予め定めた螺旋状にたどって行く方向に存在する最も近い位置であることを特徴とする請求項２記載のディザマトリックス作成方法。
【請求項４】
前記最も近い位置が、全方向において直線距離として最も近い位置であることを特徴とする請求項２記載のディザマトリックス作成方法。
【請求項５】
前記残余２値化処理が、オン／オフが決定されなかった要素Ｚijが所定数より多いときは、前記新しいマトリックスの所定位置から螺旋状にたどりながら、最も近い位置に存在する要素Ｚijから順にオン／オフを交互に設定し、要素Ｚijが所定数より少なくなると、全方向において直線距離として最も近い位置に存在する要素Ｚijから順にオン／オフを交互に設定して行くことを特徴とする請求項２記載のディザマトリックス作成方法。
【請求項６】
前記既成マトリックス群には、全要素がオフの既成マトリックスＡ、全要素がオンの既成マトリックスＣ、およびオンの要素とオフの要素とが存在している既成マトリックスＢがＡＢＣまたはこの逆順に順番付けられて存在し、
前記順番上で隣接する２つの既成マトリックスを選択して、前記参照２値化処理における参照対象とするとともに、前記参照２値化処理および前記残余２値化処理により各要素Ｚijがオンあるいはオフに２値化された前記新しいマトリックスを前記既成マトリックス群に含める際に、前記参照対象の２つの既成マトリックスの間に順番付けることを特徴とする請求項１〜５記載のディザマトリックス作成方法。
【請求項７】
前記既成マトリックスＢが、オンの要素が全要素のほぼ半分であることを特徴とする請求項６記載のディザマトリックス作成方法。
【請求項８】
前記既成マトリックスＢが、全ての要素が同一の多値からなるマトリックスを誤差拡散処理して、各要素をオンあるいはオフに２値化して形成されていることを特徴とする請求項６または７記載のディザマトリックス作成方法。
【請求項９】
前記既成マトリックスＢが、全ての要素が１２８または１２７の値からなるマトリックスを誤差拡散処理して、各要素をオンあるいはオフに２値化して形成されているとともに、
前記参照２値化処理と前記残余２値化処理との繰り返しにより、２５６個の既成マトリックスからなる既成マトリックス群が形成されることを特徴とする請求項８記載のディザマトリックス作成方法。
【請求項１０】
前記参照２値化処理における所定の条件に基づく２値化処理が、選択された前記２つの既成マトリックスにて、両既成マトリックスの要素が共にオンである場合には、それらの要素と同一位置に存在する前記新しいマトリックスの要素もオンとし、両既成マトリックスの要素が共にオフである場合には、それら要素と同一位置に存在する前記新しいマトリックスの要素もオフとして２値化することであることを特徴とする請求項１〜９のいずれか記載のディザマトリックス作成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多値画像を２値画像化するためのディザマトリックスの作成方法に関する。
【０００２】
【従来の技術】
画像を構成するデータは通常８ビット程度の濃淡階調で表現されている。しかし、この画像データを人が見ることのできる画像として出力する機器、例えばプリンタなどの出力機器においては、機構が簡単であることや制御の容易性から、インク等の色素を記録紙にドットとして付着させるか否かしか行わない、いわゆる２値記録が一般的である。
【０００３】
このような２値記録の出力機器を使用して、８ビット濃淡階調で表された画像を記録する場合には、単に各画素の値を閾値で判断してインクを付着させるか否かを決定することになる。しかし、このように閾値で単純に２値化するだけでは、８ビット濃淡階調が持つ豊富な濃淡状態（１色なら２５６階調、３原色が各２５６階調ならば、約１６７０万色を表すことができる。）を表現することは不可能となる。そのため、このような２値記録の出力機器でも疑似的に濃淡状態を表現する方法が考えられている。すなわち、所定の面積の中で配置されるドット数によって濃淡を表現しようと言う面積階調の考え方である。
【０００４】
この考え方を実現する方法としては種々の提案がなされている。例えば、誤差拡散法、乱数発生型ディザ法、組織的ディザ法等である。
【０００５】
【発明が解決しようとする課題】
しかし、これらの方法には、次のような問題があった。
誤差拡散法は、誤差拡散あるいは誤差分配演算のために、２値化の処理が遅くなり、また２値化された画像に独特の紋様が発生し易かった。乱数発生型ディザ法は、ディザマトリックスを使用するために２値化処理自体は高速であるが、乱数を用いるため、画質が非常にノイジー、すなわち、多くのノイズが画像に満ちているような画質となると言う問題が有った。
【０００６】
ディザマトリックスを用いる他の方法として、組織的ディザ法に属する渦巻型があるが、この渦巻型は、ドットが密集し易く、密集したものが大きなドットと認識されるので解像度が低下し易かった。組織的ディザ法の内で、ベイヤー（Ｂａｙｅｒ）法があるが、このベイヤー（Ｂａｙｅｒ）法は、ドットが分散するので解像度は良いが、独特な紋様が発生し、暗部の階調性も悪いものであった。
【０００７】
本発明は、ディザ法を用いて画像処理を行っても、画像がノイジーになったり、解像度が低下したりすることが無く、また紋様の発生をも抑制することが可能なディザマトリックスを作成する方法の提供を目的とするものである。
【０００８】
【課題を解決するための手段及び発明の効果】
本発明のディザマトリックス作成方法は、予め、各要素がオンあるいはオフに２値化された複数の既成マトリックスを含む既成マトリックス群から、オンの要素とオフの要素との分布が異なる２つの既成マトリックスを選択し、これら２つの既成マトリックスの内の一方の既成マトリックスに存在する要素Ｘijと、それと同一位置に存在する他方の既成マトリックスの要素Ｙijとを参照して所定の条件に基づいて、それらの要素Ｘij，Ｙijと同一位置に存在する新しいマトリックスの要素Ｚijのオン／オフを決定する参照２値化処理を行い、次いで、前記参照２値化処理にてオン／オフが決定されなかった前記新しいマトリックスの要素Ｚijについて、同一の値の分布が偏らないようにオンあるいはオフに設定する残余２値化処理を行って、上記２つの処理により各要素Ｚijがオンあるいはオフに２値化された新しいマトリックスを前記既成マトリックス群に含めながら、前記参照２値化処理と前記残余２値化処理とを繰り返すことにより、所定数の既成マトリックスからなる既成マトリックス群を構築し、この構築された既成マトリックス群に基づいて、ディザマトリックスにおける各要素の閾値を設定することを特徴とする。
【０００９】
前記参照２値化処理では、新しいマトリックスが独立に形成されるのではなく、既に２値化されている既成マトリックスにおける２値化状態が反映される。
この反映により、単に各マトリックスを独立に２値化している場合に比較して、上述のように形成された既成マトリックス群の２値化値に基づいてディザマトリックスにおける各要素の閾値を設定すると、ディザマトリックスの各要素における閾値が特定の値に偏ることが無く、ランダムともならずに、更に各種の値に適度に分散化して分布するものとなるので、形成されるディザマトリックスにて画像を処理しても解像度は低下せず、ノイジー性は抑制される。
【００１０】
また、残余２値化処理では、前記参照２値化処理にてはオン／オフが決定されなかった前記新しいマトリックスの要素Ｚijについて、同一の値の分布が偏らないようにオンあるいはオフに設定している。このため形成されるディザマトリックスにて画像を処理しても解像度は低下せず、組織的紋様は抑制され、またランダムでもないのでノイジーともならない。
【００１１】
したがって、本発明によれば、処理が高速なディザ法を用いて画像処理を行っても、ノイジーとならず、解像度が低下せず、紋様の発生を抑制するディザマトリックスを作成することができる。
尚、残余２値化処理としては、前記残余２値化処理が、前記参照２値化処理にてオン／オフが決定されなかった前記新しいマトリックスの要素Ｚijについて、所定位置から最も近い位置に存在するものから順に、オン／オフを交互に設定して行くことにより行うことができる。この最も近い位置というのは、例えば、所定位置から予め定めた螺旋状にたどって行く方向に存在する最も近い位置であっても良いし、全方向において直線距離として最も近い位置であっても良い。
【００１２】
また、残余２値化処理として、オン／オフが決定されなかった要素Ｚijが所定数より多いときは、前記新しいマトリックスの所定位置から螺旋状にたどりながら、最も近い位置に存在する要素Ｚijから順にオン／オフを交互に設定し、要素Ｚijが所定数より少なくなると、全方向において直線距離として最も近い位置に存在する要素Ｚijから順にオン／オフを交互に設定して行くこととしても良い。これは、オン／オフが決定されなかった要素Ｚijが多い場合は、全方向における最も近い位置に存在する要素Ｚijを探索するよりも、方向を決めて、例えば螺旋状に方向を決めて最も近い位置に存在する要素Ｚijから順に探索した方が処理が迅速であるからであり、オン／オフが未決定の要素Ｚijが少なくなると、逆に特定方向に存在するオン／オフが未決定の要素Ｚijを探索するよりも全方向、すなわち新しいマトリックス全体についてオン／オフが未決定の要素Ｚijをリストアップして近い方から順番にオン／オフを決定した方が迅速だからである。
【００１３】
新しいマトリックスに対して参照される既成マトリックスは、次のように関係付けられていても良い。
すなわち、既成マトリックス群には、全要素がオフの既成マトリックスＡ、全要素がオンの既成マトリックスＣ、およびオンの要素とオフの要素とが存在している既成マトリックスＢがＡＢＣまたはこの逆順に順番付けられて存在し、
前記順番上で隣接する２つの既成マトリックスを選択して、参照２値化処理における参照対象とするとともに、参照２値化処理および残余２値化処理により各要素Ｚijがオンあるいはオフに２値化された新しいマトリックスを既成マトリックス群に含める際に、新しいマトリックスが参照対象とした２つの既成マトリックスの間に順番付けることとしても良い。
【００１４】
このように既成マトリックスを順番付けし、順番上で隣接する既成マトリックスを参照して新しいマトリックスを２値化し、更に残余２値化処理にて全ての位置を２値化した後に、この新しく形成されたマトリックスを、参照した隣接する２つの既成マトリックスの間に順番付けして、既成マトリックス群に含めている。
【００１５】
このため、一層、ディザマトリックスの各位置における閾値が特定の値に偏ることが無く、各種の値に適度に分散化して分布するものとなるり、形成されるディザマトリックスにて画像を処理しても解像度は低下せず、ノイジー性は抑制される効果が向上する。
【００１６】
尚、既成マトリックスＢは、オンの要素が全要素のほぼ半分であることが、解像度の低下防止、ノイジー性の抑制上、より好ましい。更に、既成マトリックスＢが、全ての要素が同一の多値（例えば「１２８」または「１２７」）からなるマトリックスを誤差拡散処理して、各要素をオンあるいはオフに２値化して形成されていると、より好ましい。前記「１２８」または「１２７」を全要素の値とするマトリックスを使用した場合には、最終的に得られるディザマトリックスは、２５６階調の画像の処理に用いるのに好適である。
【００１７】
ここで、誤差拡散を用いるのは、誤差拡散法により生じる２値の並びは、一見不規則に見えるけれども、まったくのでたらめではない。すなわち、強い紋様はできにくいがノイジーな画像にはなりにくい性質がある。このように誤差拡散法により生じる２値の並びを利用することにより、最終的にディザマトリックスにも誤差拡散法における２値の並びの性質がある程度取り込まれる。したがって、人間の目に対してノイジーとならず、かつ解像度が低下せず、更に、前述したごとく直接誤差拡散法によらずに新しいマトリックスの生成を繰り返してディザマトリックスに反映しているので、紋様の発生を抑制した２値化画像を生成できる性質を強めることができたものと考えられる。
【００１８】
勿論、既成マトリックスＢは、ランダムに形成しても良い。この場合は、ノイジー性が懸念されるが、この場合も直接ランダムとされない新しいマトリックスの生成を繰り返してディザマトリックスに反映しているので、ノイジー性を薄めることができ、従来よりも改善されたものとなる。
【００１９】
参照２値化処理と残余２値化処理との繰り返しにより形成される既成マトリックス群としては、例えば、２５６個の既成マトリックスからなるものが挙げられる。このように２５６個の既成マトリックスから得られるディザマトリックスは、２５６階調の画像処理に使用して好適である。
【００２０】
尚、参照２値化処理における所定の条件に基づく２値化処理としては、選択された前記２つの既成マトリックスにて、両既成マトリックスの要素が共にオンである場合には、それらの要素と同一位置に存在する前記新しいマトリックスの要素もオンとし、両既成マトリックスの要素が共にオフである場合には、それら要素と同一位置に存在する前記新しいマトリックスの要素もオフとして２値化する方法が挙げられる。
【００２１】
【発明の実施の形態】
［実施の形態１］
図１は、ディザマトリックス作成装置２の主要ブロック図である。
このディザマトリックス作成装置２の主体を成すマイクロコンピュータ部１１はＣＰＵ１２、ＲＯＭからなるプログラムメモリ１３、ＲＡＭからなるワーキングメモリ１４、ＲＡＭからなるディザマトリックス格納メモリ１６およびＲＡＭからなる出力イメージメモリ１７により構成されている。また、マイクロコンピュータ部１１にはシステムバス１８を介して入力部１０および出力部１９が接続されている。
【００２２】
入力部１０は、キーボードや外部の記憶装置から入力するためのインターフェースを備え、ディザマトリックス作成に必要なデータや指示の入力を行うものである。また、入力部１０は、作成されたディザマトリックスの効果を確認するために、各画素が８ビットで表される階調を有する画像データを入力する。
【００２３】
ＣＰＵ１２は、後述するごとくディザマトリックスの作成をプログラムにしたがって実行するためのものであり、プログラムメモリ１３は、ディザマトリックス作成プログラムを含め、ＣＰＵ１２で行う様々な制御を実施するためのプログラムを記憶している。また、ワーキングメモリ１４は、ＣＰＵ１２がプログラムメモリ１３に記憶されたプログラムを実行するときに必要なデータを一時的に記憶するものである。
【００２４】
ディザマトリックス格納メモリ１６は、ＣＰＵ１２の処理によって形成されたディザマトリックスデータを記憶する。
出力イメージメモリ１７は、ＣＰＵ１２が、ディザマトリックス格納メモリ１６に格納されているディザマトリックスを用いて、８ビットで表される階調を有する画像データを２値化した、その２値化された出力イメージデータを記憶する。
【００２５】
出力部１９は、出力イメージメモリ１７に格納した２値化画像データを電子写真方式によりドットの有無で印字する装置である。
次に、ディザマトリックス作成装置２により実行されるディザマトリックス作成処理について説明する。ディザマトリックス作成処理のフローチャートを図２以下に示す。尚、本実施の形態では１画素が２５６階調で表される画像の処理に用いられるディザマトリックスを作成している。
【００２６】
まず、全要素の濃度値がそれぞれ「０」，「１２８」，「２５５」である３つの均一濃度画素マトリックスを誤差拡散法により２値化する（Ｓ１００）。この均一濃度画素マトリックスは、図７に示すごとく、濃度値が０，１２８，２５５の３種類の均一濃度画素マトリックスＭ０，Ｍ１２８，Ｍ２５５をワーキングメモリ１４に読み込んで用いれば良い。そして、その２値化後の既成マトリックスＦ０，Ｆ１２８，Ｆ２５５（図８）を、それぞれ「０」、「１２８」、「２５５」の順番番号を付けて昇順または降順で順序付けし、ワーキングメモリ１４に保存する（Ｓ２００）。
【００２７】
ただし、ステップＳ１００にて行われる濃度値「０」，「１２８」，「２５５」の均一濃度画素マトリックスの誤差拡散法による２値化結果は、均一濃度画素マトリックスＭ０（全要素が濃度値「０」）の場合は全要素「０」（オフ）に２値化され、均一濃度画素マトリックスＭ２５５（全要素が濃度値「２５５」）の場合は全要素「１」（オン）と２値化されるので、特に誤差拡散法による計算はせずに、予め全要素がオフ「０」の既成マトリックスＦ０と全要素がオン「１」の既成マトリックスＦ２５５とを備えておいて、これらの既成マトリックスを用いても良い。また、濃度値「１２８」の場合は、ステップＳ１００にて計算しなくても、既に誤差拡散法により求められている既成マトリックスＦ１２８を用いても良い。
【００２８】
次に、新しく２値化するマトリックスの作成順序を決定するために、１〜１２７，１２９〜２５４の各順番番号について配列の作成を行う（Ｓ３００）。この順番番号の配列は、既に２値化処理された順番番号の中央の数値に該当する順番番号が、作成対象として設定されるように作成される。
【００２９】
すなわち、配列の先頭は「０」と「１２８」との中央の「６４」、次が「１２８」と「２５５」との中央の「１９２」（もう一つの中央の整数値の「１９１」でも良い。）、次が「０」と「６４」との中央の「３２」、次が「６４」と「１２８」との中央の「９６」、次が「１２８」と「１９２」との中央の「１６０」、次が「１９２」と「２５５」との中央の「２２４」（もう一つの中央の整数値の「２２３」でも良い。）と言うように、前に得られている順番番号の中央の整数値を求めて、「１」〜「１２７」，「１２９」〜「２５４」の順番番号の配列「６４，１９２，３２，９６，１６０，２２４，……」を作成する。この配列は予め計算して配列データとして記憶しておき、本処理時に配列データのみ読み込んで用いても良い。
【００３０】
次にその配列の先頭から順次、一つづつ順番番号ｉに読み込んで（Ｓ４００）、参照２値化処理（Ｓ５００）の処理を行う。
ステップＳ５００の参照２値化処理の詳細を図３のフローチャートに示す。
まず、ステップＳ４００により、配列の最初の順番番号「６４」のマトリックスを作成対象とされているので、全ての要素がオン／オフに２値化済みである既成マトリックスの順番番号の内で隣接していて、「６４」に対して順番としては後に属する最近後方既成マトリックスＨと、「６４」に対して順番としては前に属する最近前方既成マトリックスＬとをワーキングメモリ１４の内容から選択する（Ｓ５１０）。
【００３１】
配列の最初の順番番号ｉ＝６４の場合は、既にステップＳ１００にて２値化されている順番番号＝１２８の既成マトリックスＦ１２８が最近後方既成マトリックスＨに該当し、順番番号＝０の既成マトリックスＦ０が最近前方既成マトリックスＬに該当する。
【００３２】
次に、順番番号「６４」の新しいマトリックスＦｉ（ｉ＝６４）の要素を得るため、最初の要素を指定する（Ｓ５２０）。ここでは、図８に示すごとくマトリックスの左上隅を原点（０，０）とし、ｘ方向を主走査方向とし、ｙ方向を副走査方向としているので、まず原点（０，０）が最初の要素として設定される。
【００３３】
次に、ステップＳ５１０にて検索した最近後方既成マトリックスＨにおける同一位置の要素Ｈ（ｘ，ｙ）および最近前方既成マトリックスＬにおける同一位置の要素Ｌ（ｘ，ｙ）の値が同一か否かが判定される（Ｓ５３０）。
同一であれば（ステップＳ５３０で「ＹＥＳ」）、新しいマトリックスＦｉの同一位置の要素Ｆｉ（ｘ，ｙ）に要素Ｌ（ｘ，ｙ）の値が設定される（Ｓ５４０）。すなわち、ステップＳ５１０にて選択された順番上で隣接する２つの既成マトリックスＨ，Ｌにおいて、両既成マトリックスＨ，Ｌ共にオン「１」である要素は、新しいマトリックスＦｉの同一位置もオン「１」とし、両既成マトリックスＨ，Ｌ共にオフ「０」である要素は、新しいマトリックスＦｉの同一位置もオフ「０」として２値化する。このとき、要素Ｆｉ（ｘ，ｙ）に設定するのは、最近後方既成マトリックスＨにおける同一位置の要素Ｈ（ｘ，ｙ）の内容でも良い。
【００３４】
要素Ｈ（ｘ，ｙ）＝要素Ｌ（ｘ，ｙ）でなければ（ステップＳ５３０で「ＮＯ」）、新しいマトリックスＦｉの同一位置の要素Ｆｉ（ｘ，ｙ）には未２値化であることを示す「−１」が設定される（Ｓ５５０）。
次に、マトリックスＦｉの全ての要素に関してステップＳ５３０，Ｓ５４０，Ｓ５５０の処理が終了したか否かが判定される（Ｓ５６０）。
【００３５】
終了していなければ（ステップＳ５６０で「ＮＯ」）、走査方向に応じて次の要素（ｘ，ｙ）が設定されて（Ｓ５７０）、再度、ステップＳ５３０，Ｓ５４０，Ｓ５５０の処理がなされる。すなわち、ステップＳ５７０が処理される毎に、主走査方向（ｘ方向）へ順次移動し、主走査方向の処理が終了すれば、次には、副走査方向（ｙ方向）の次の要素ラインに移動してｘ＝０から主走査方向へ順次移動して行くように要素（ｘ，ｙ）が指定されて、ステップＳ５３０，Ｓ５４０，Ｓ５５０の処理がなされる。
【００３６】
全ての要素に関して処理が終了すれば（Ｓ５６０で「ＹＥＳ」）、ステップＳ５００の処理を終了して、図４に示すごとく、残余２値化処理（Ｓ６００）が実行され、ステップＳ５００では２値化されなかった、すなわちオン／オフが決定されていない未２値化位置として「−１」が設定されている要素について別の方法での２値化が行われる。
【００３７】
残余２値化処理（Ｓ６００）では、まず変数Ｉに「１」が設定される（Ｓ６１０）。次にマトリックスＦｉの中心に最も近い未２値化要素Ｆｉ（ｘ，ｙ）を選択する（Ｓ６２０）。次にこの未２値化要素Ｆｉ（ｘ，ｙ）から最も近い未２値化要素Ｆｉ（ｘn，ｙn）を探索する（Ｓ６３０）。
【００３８】
次に未２値化要素が１つも存在していないか否かが判定され（Ｓ６４０）、ステップＳ６３０の探索の結果、未２値化要素が１つも存在していない場合には（ステップＳ６４０で「ＹＥＳ」）、このままステップＳ６００の処理を終了するが、最も近い未２値化要素Ｆｉ（ｘn，ｙn）が見つかった場合には（ステップＳ６４０で「ＮＯ」）、その未２値化要素Ｆｉ（ｘn，ｙn）に変数Ｉの値が設定される（Ｓ６５０）。
【００３９】
次に変数Ｉ＝オン「１」か否かが判定され（Ｓ６６０）、Ｉ＝１であれば（ステップＳ６６０で「ＹＥＳ」）、変数Ｉにオフ「０」が設定され（Ｓ６７０）、Ｉ＝０であれば（ステップＳ６６０で「ＮＯ」）、変数Ｉにオン「１」が設定される（Ｓ６８０）。
【００４０】
次に今回２値化されたＦｉ（ｘn，ｙn）の要素が、Ｆｉ（ｘ，ｙ）として設定され（Ｓ６９０）、ステップＳ６３０の処理から開始される。したがって、次に直前に２値化された要素Ｆｉ（ｘ，ｙ）に最も近い未２値化要素Ｆｉ（ｘn，ｙn）が探索されて、未２値化要素が存在すれば、その要素に変数Ｉの値が設定される。変数Ｉの値は、未２値化要素に変数Ｉの値が設定される毎に、オン「１」とオフ「０」とを交互に切り替えているので、未２値化要素には、「１」，「０」，「１」，…と交互にオン／オフが設定されて行く。
【００４１】
ここで、最も近い未２値化要素を探索する方法について説明する。
例えば、参照２値化処理（Ｓ５００）を終えたマトリックスのサイズが図５（ａ）に太線で囲まれているごとく４×４であるとして、その中で斜線のハッチングのある要素が参照２値化処理（Ｓ５００）にて、２値化された要素であるとする。未２値化要素はＡ，Ｂ，Ｃ，Ｄ，Ｅの５つである。
【００４２】
最初に最もマトリックスの中心Ｑに近い未２値化要素が選択される（Ｓ６２０）。図５（ａ）の例では、中心Ｑに接触する要素Ｂおよび要素Ｃの２つであるが、図６のごとく中心Ｑから３時の方向が最も優先度が高く（優先度０）、３時の方向から時計回りに周るほど方向の優先順位が低くなるように優先順位が設定されているとすると、要素Ｂはマトリックスの中心Ｑから優先度５の方向に存在し、要素Ｃはマトリックスの中心Ｑから優先度１の方向に存在するので、最もマトリックスの中心Ｑに近い未２値化要素として、要素Ｃが抽出される。
【００４３】
尚、近さを求めるための距離計算は、次式１のごとく実際の距離Ｄを求めても良いし、次式２のごとく簡便法で求めた値を擬似的な距離ｄとして用いても良い。
【００４４】
【数１】
0003711617.tif 000002
【００４５】
ここで、Δｘは２点間のｘ座標の差、Δｙは２点間のｙ座標の差である。
次に、式１または式２の計算で要素Ｃに最も近い他の未２値化要素を探索する（Ｓ６３０）。図５（ａ）の場合は、要素Ｂ，Ｅの２要素が該当する。
この場合も２つの要素が存在するので、図６に示した優先度を適用して、要素Ｅが得られる。したがって、この未２値化要素である要素Ｅにオン「１」が設定され（Ｓ６５０）、要素Ｅは２値化済みの要素となる。
【００４６】
次に、ステップＳ６３０で要素Ｅに最も近い未２値化要素が探索されるが、ここでは、要素Ｄが得られる。一つのマトリックス上では要素Ｅと要素Ｄとは大きく離れているが、最終的に形成されるディザマトリックスは、図５（ａ）〜（ｆ）に示しているように、ディザマトリックスを縦横に配列して画像処理を行うため、ステップＳ６３０における最も近い未２値化要素の判断も、マトリックスを縦横に配置した状態で判断するのが好ましい。
【００４７】
したがって、図５（ｂ）に示すごとく、右側に隣接するマトリックスの要素Ｄが最も近いので、図５（ｃ）に示すごとく、要素Ｄが抽出され、要素Ｄにはオフ「０」が設定される（Ｓ６５０）。
次に、同様に要素Ｄに最も近い未２値化要素が探索され（Ｓ６３０）、３つの要素Ａ，Ｂ，Ｃが最も近いが、優先度で判断して、図５（ｄ）に示すごとく、要素Ａが選択される。したがって、要素Ａにはオン「１」が設定される（Ｓ６５０）。
【００４８】
次に、同様に要素Ａに最も近い未２値化要素が探索され（Ｓ６３０）、要素Ｂが最も近いので、図５（ｅ）に示すごとく、要素Ｂが選択される。したがって、要素Ｂにはオフ「０」が設定される（Ｓ６５０）。そして図５（ｆ）に示すごとく、最後に残った要素Ｃにオン「１」が設定され（Ｓ６５０）、残余２値化処理（Ｓ６００）を終了する。
【００４９】
尚、最初にステップＳ６２０にて選択された最もマトリックスの中心Ｑに近い未２値化要素については、その選択された際には２値化せずに、その後のステップＳ６３０の探索で見つけて２値化している。これは、ステップＳ６２０にてマトリックスの中心Ｑに最も近い未２値化要素を、例えばオン「１」に設定してしまうと、中心Ｑ付近にオン「１」が集中する確率が高まるので、２値の分散上好ましくないからである。勿論、新しく作成されるマトリックス毎に、ステップＳ６１０にて最初にＩに設定する値を、オン「１」，オフ「０」，オン「１」，オフ「０」，…と交互に切り換えれば、あるいはランダムに切り換えればステップＳ６２０にて、中心Ｑに最も近い未２値化要素を２値化しても良い。
【００５０】
このようにして、マトリックスの全要素が２値化され、この内容が参照２値化処理（Ｓ５００）にて参照した最近後方既成マトリックスＨ（順番番号１２８）と最近前方既成マトリックスＬ（順番番号０）との間に順番付けされて既成マトリックスＦｉ（このときはｉ＝６４）としてワーキングメモリ１４に保存する（Ｓ７００）。この場合は、既に順番番号が付されて順番付けされているので、そのままワーキングメモリ１４に保存するのみでも良い。
【００５１】
したがって、この時には、ワーキングメモリ１４内には、順番番号０，６４，１２８，２５５の４つの既成マトリックスからなる既成マトリックス群が形成されていることになる。
次に配列が終了したか否かを判定し（Ｓ８００）、終了していなければ（Ｓ８００で「ＮＯ」）、配列中の次の順番番号を順番番号ｉに設定し（Ｓ４００）、この順番番号ｉに基づいて、ステップＳ５００の参照２値化処理、ステップＳ６００の残余２値化処理およびステップＳ７００の最近後方既成マトリックスＨと最近前方既成マトリックスＬとの間に順番付けして保存する処理を繰り返す。すなわち、ｉ＝６４の次は、ｉ＝１９２が設定され、最近後方既成マトリックスＨとして順番番号２５５の既成マトリックスが、最近前方既成マトリックスＬとして順番番号１２８の既成マトリックスが選択されて、上述した処理ステップＳ５００，Ｓ６００，Ｓ７００が行われる。その結果、ワーキングメモリ１４内には、順番番号０，６４，１２８，１９２，２５５の５つの既成マトリックスからなる既成マトリックス群が形成されることになる。
【００５２】
続いてｉ＝３２，９６，１６０，２２４，……について順次処理が行われ、ｉ＝３２には最近後方既成マトリックスＨとして順番番号６４の既成マトリックスが、最近前方既成マトリックスＬとして順番番号０の既成マトリックスが選択され、ワーキングメモリ１４内には、順番番号０，３２，６４，１２８，１９２，２５５の６つの既成マトリックスからなる既成マトリックス群が形成される。
【００５３】
次のｉ＝９６には最近後方既成マトリックスＨとして順番番号１２８の既成マトリックスが、最近前方既成マトリックスＬとして順番番号６４の既成マトリックスが選択され、ワーキングメモリ１４内には、順番番号０，３２，６４，９６，１２８，１９２，２５５の７つの既成マトリックスからなる既成マトリックス群が形成される。
【００５４】
次のｉ＝１６０には最近後方既成マトリックスＨとして順番番号１９２の既成マトリックスが、最近前方既成マトリックスＬとして順番番号１２８の既成マトリックスが選択され、ワーキングメモリ１４内には、順番番号０，３２，６４，９６，１２８，１６０，１９２，２５５の８つの既成マトリックスからなる既成マトリックス群が形成される。
【００５５】
次のｉ＝２２４には最近後方既成マトリックスＨとして順番番号２５５の既成マトリックスが、最近前方既成マトリックスＬとして順番番号１９２の既成マトリックスが選択され、ワーキングメモリ１４内には、順番番号０，３２，６４，９６，１２８，１６０，１９２，２２４，２５５の９つの既成マトリックスからなる既成マトリックス群が形成される。
【００５６】
以後、同様に配列にしたがって、順番番号ｉが設定されて、上述した処理がなされ、既成マトリックス群内の既成マトリックスが増加して行く。
配列の最後の順番番号について、該当するマトリックスの処理（Ｓ５００，Ｓ６００，Ｓ７００）が終了する（Ｓ８００で「ＹＥＳ」）と図９に示すごとく、ワーキングメモリ１４内には、順番番号ｉ＝０〜２５５の２５６個の既成マトリックスＦ０〜Ｆ２５５が形成されている。
【００５７】
次に、こうして得られた既成マトリックス群内の全ての既成マトリックスＦ０〜Ｆ２５５について、それぞれ同一位置の要素の内、オンに２値化されている数をカウントし、このカウント値を要素とする集積結果マトリックスＷを形成する（Ｓ９００）。
【００５８】
すなわち、図９に示すごとく、左上隅を原点（０，０）として横方向をｘ軸、縦方向をｙ軸とすると、まず、全ての既成マトリックスＦ０〜Ｆ２５５の（０，０）について、オンとなった要素をカウントする。そのカウント結果を、図１０に示すごとくワーキングメモリ１４内に用意された集積結果マトリックスＷの同一位置の要素（０，０）に格納する。この同一位置の要素のカウント処理を各要素毎に行い、集積結果マトリックスＷをすべて埋める。このカウント処理は、各要素がオンの場合は「１」に、オフの場合は「０」に２値化されているので、同一位置の要素における数値を合計して求めても良い。
【００５９】
次に、集積結果マトリックスＷのカウント値の低い要素から、順にディザマトリックス用の閾値を設定し（Ｓ９５０）、その閾値からなるマトリックスをディザマトリックスとして、ディザマトリックス格納メモリ１６に保存する（Ｓ９６０）。
【００６０】
この閾値の設定の方法としては、カウント値そのものを閾値として設定しても良い。この場合はステップＳ９００のカウント処理がディザマトリックスの閾値設定の処理に該当するので、ステップＳ９５０では特に処理は行わない。そして、集積結果マトリックスＷそのものをディザマトリックスとして、ディザマトリックス格納メモリ１６に保存する（Ｓ９６０）。
【００６１】
ステップＳ９５０にては、単に集積結果マトリックスＷの各カウント値自体をそのまま閾値とする代りに、予め用意されたカウント値と閾値とのテーブルに応じて、集積結果マトリックスＷの各カウント値を閾値に変換しても良い。
また、ステップＳ９５０にては、カウント値の低い順番から、閾値を「０，１，２，…」と設定して行っても良いし、逆にカウント値の高い順番から、閾値を「２５５，２５４，２５３，…」と設定して行っても良い。この場合、同一のカウント値が２つ以上存在する場合は、それらはすべて同一の閾値が与えられるものとしても良いし、同一のカウント値を予め定めた方法で順番付けして、その順位に基づいて異なる閾値を設定しても良い。予め定めた方法の具体例としては、周囲のカウント値を合計し、合計して得られたカウント値に基づいて順位付けしたり、ディザマトリックス（Ｗ）における位置情報（例えば、中心Ｑに近いもの）に基づくものであっても良い。
【００６２】
このようにして形成されたディザマトリックスを用いて、中間調のカラー画像を２値化処理し、カラープリンタにて記録したところ、人間の目に対してノイジーとならず、かつ解像度が低下せず、紋様の発生が抑制された疑似中間調の２値化画像を生成することができた。勿論、画像の処理時はディザ法であり、誤差拡散法のように多数の計算は行わないので、迅速に処理できた。
【００６３】
更に、本実施の形態では、ステップＳ５００における２値化において、ステップＳ５３０，Ｓ５４０，Ｓ５５０にて、既に２値化され順番付け上で隣接する既成マトリックスの２値化状態を考慮して２値を決定している。
もし、ステップＳ５３０，Ｓ５４０，Ｓ５５０を用いないで、誤差拡散法やステップＳ６００の残余２値化処理で２値化を行うと、図１１（ｂ）に示すごとく、オンとなった後も同じ位置の要素でオフが出現する。このため、通常の２値化のみでは各要素におけるオンの数が、０〜２５５内の特定の値に偏る傾向が有るが、本実施の形態では、順番番号の小さい既成マトリックスから見て、最初にオン「１」となった要素は、以後順番番号が大きくなっても、オン「１」が継続するようにすることができるので、０〜２５５の範囲の各種の値に分散して好適な分布となる。
【００６４】
したがって、このようにして得られるディザマトリックスは、閾値の値も０〜２５５の範囲に適度に分散して分布するものとなる。このため、特に、図１１（ｂ）に示したごとくの各既成マトリックスを独立に２値を決定している場合に得られるディザマトリックスに比較して、画像データの２値化において、一層、解像度が向上し、紋様の抑制が行われる。
【００６５】
尚、本実施の形態では、図１１（ａ）で説明したごとく、順番番号の小さい既成マトリックスから見て、最初にオン「１」となった要素は、以後順番番号が大きくなっても、オン「１」が継続することから、最初にオン「１」となる既成マトリックスの順番番号を、最初にオン「１」となった位置と同じ位置の要素の閾値としてディザマトリックスを形成しても良い。
【００６６】
［実施の形態２］
実施の形態２として、中央の順番番号ｉを計算で求める例を図１２に示す。この処理は、図２におけるステップＳ３００〜Ｓ８００の代りに実行される。本処理において、最初は８つの変数Ｉ0 〜Ｉ7 を「０」で初期化し（Ｓ１０１０〜Ｓ１０８０）、次にＩ0 〜Ｉ7 までを合計して、順番番号ｉに設定する（Ｓ１０９０）。この順番番号ｉが「０」であれば、Ｉ7 を「１２８」増加させ（Ｓ１１２０）、次にＩ7 ＞１２８ではないので（Ｓ１１３０で「ＮＯ」）、ステップＳ１０９０の合計処理で順番番号ｉに「１２８」が設定され、ｉ＝０でなく（Ｓ１１００で「ＮＯ」）、ｉ＝２５５でもないので（Ｓ１１１０で「ＮＯ」）、ステップＳ５００，Ｓ６００，Ｓ７００の処理（図２の処理と同じ）がなされる。
【００６７】
次にステップＳ１１２０の処理にてＩ7 ＝２５６となり、ステップＳ１１３０にて「ＹＥＳ」と判定されて、Ｉ6 が「６４」増加され（Ｓ１１４０）、Ｉ6 ＝６４となり、Ｉ6 ＞６４ではないので（Ｓ１１５０で「ＮＯ」）、ステップＳ１０８０にてＩ7 ＝０に初期化され、ステップＳ１０９０ではｉ＝６４となる。したがって、ステップＳ１１００，Ｓ１１１０からステップＳ５００，Ｓ６００，Ｓ７００に移って、順番番号ｉ＝６４のマトリックスについて作成処理がなされる。
次に、ステップＳ１１２０にてＩ7 ＝１２８となり、ステップＳ１１３０にて「ＮＯ」と判定されて、ステップＳ１０９０では、Ｉ0 〜Ｉ5 ＝０、Ｉ6 ＝６４、Ｉ7 ＝１２８であることから、ｉ＝１９２となり、ステップＳ１１００，Ｓ１１１０の後、ステップＳ５００，Ｓ６００，Ｓ７００で順番番号ｉ＝１９２のマトリックスについて２値化がなされる。
【００６８】
次にＩ0 〜Ｉ5 ＝０、Ｉ6 ＝６４、Ｉ7 ＝１２８であることから、ステップＳ１１２０からステップＳ１１６０まで進み、ステップＳ１１６０でＩ5 ＝３２となる。Ｉ5 ＞３２ではないので（Ｓ１１７０で「ＮＯ」）、ステップＳ１０７０，Ｓ１０８０が処理されて、Ｉ0 〜Ｉ4 ＝０、Ｉ5 ＝３２、Ｉ6 ＝０、Ｉ7 ＝０となる。したがって、ステップＳ１０９０ではｉ＝３２となり、ステップＳ５００，Ｓ６００，Ｓ７００では順番番号ｉ＝３２のマトリックスが２値化される。
【００６９】
次にＩ7 ＝０となったので、ステップＳ１１２０，Ｓ１１３０を経て、ステップＳ１０９０に戻る。このとき、Ｉ0 〜Ｉ4 ＝０、Ｉ5 ＝３２、Ｉ6 ＝０、Ｉ7 ＝１２８となる。したがって、ステップＳ１０９０ではｉ＝１６０となり、ステップＳ５００，Ｓ６００，Ｓ７００では順番番号ｉ＝１６０のマトリックスが２値化される。
【００７０】
次に、ステップＳ１１２０〜Ｓ１１５０，Ｓ１０８０が処理されて、Ｉ0 〜Ｉ4 ＝０、Ｉ5 ＝３２、Ｉ6 ＝６４、Ｉ7 ＝０となる。したがって、ステップＳ１０９０ではｉ＝９６となり、ステップＳ５００，Ｓ６００，Ｓ７００では順番番号ｉ＝９６のマトリックスが２値化される。
【００７１】
以後、Ｉ0 〜Ｉ7 の値に応じて、ステップＳ１０２０〜Ｓ１０８０，Ｓ１１２０〜Ｓ１２６０のいずれかの処理により、順次、順番番号ｉに、２２４、１６，１４４，８０，…，１２７が設定されて、順番番号ｉのマトリックスの２値化と保存が行われ、最後に、Ｉ0 ＝１、Ｉ1 ＝２、Ｉ2 ＝４、Ｉ3 ＝８、Ｉ4 ＝１６、Ｉ5 ＝３２、Ｉ6 ＝６４、Ｉ7 ＝１２８となる。このとき、ステップＳ１０９０にて順番番号ｉ＝２５５が設定されるので、ステップＳ１１１０にて「ＹＥＳ」と判定されて、ステップＳ７００の処理に移る。このようにして、計算にても中央の値をたどって、マトリックスの２値化を行うことができる。
【００７２】
［その他］
前記各実施の形態では、順番番号として中央の整数値をたどって２値化処理したが、完全に中央の整数値でなくても、１：２の位置、１：３の位置、２：１の位置、３：１の位置といったように、２値化済みの２つの順番番号の中間の値ではあるが、小側あるいは大側に偏った整数値をたどって２値化処理しても良い。
【００７３】
前記各実施の形態において、前記カウント値をそのまま集積結果マトリックスＷとして用いるのではなく、所定の係数をかけても良い。また、順番番号ｉの既成マトリックスの２値化値Ｉixy に対して次式のごとく順番番号ｉ毎に異なる係数ｋ(i) を設定して、全ての既成マトリックスの合計値Ｃxyを求めることにより、集積結果マトリックスＷを作成しても良い。
【００７４】
【数２】
0003711617.tif 000003
【００７５】
尚、ここで、ｘ，ｙはマトリックス上の位置を表す。
マトリックスの２値化は、オン「１」またはオフ「０」への２値化であったが、いかなる値の２値化でも良く、いずれか一方の値の個数をカウントして、集積結果マトリックスＷを形成し、この集積結果マトリックスＷをディザマトリックスに変換すれば良い。また、上述したような個数のカウントではなく、２値化値の合計であっても良い。
【００７６】
前記各実施の形態における均一濃度値「１２８」の均一濃度画素マトリックスの２値化は、２値化時に周辺要素から２値化誤差の分配を受けるタイプの誤差拡散法、いわゆる平均誤差最小法であったが、注目要素を２値化した場合に２値化の誤差を未だ２値化していない周辺の要素の濃度に分配する方法による誤差拡散法であっても良い。
【００７７】
前記既成マトリックスＦ１２８は均一濃度値「１２８」の均一濃度画素マトリックスを誤差拡散処理にて得ていたが、必要なのは、既成マトリックスＦ０と既成マトリックスＦ２５５との中央の状態、すなわちオン／オフがほぼ１：１にて存在している既成マトリックスＦ１２８であることから、例えば、ランダムにオン／オフをほぼ１：１に出力して既成マトリックスＦ１２８を形成しても良いし、前述した残余２値化処理と同様に処理して既成マトリックスＦ１２８を形成しても良いし、あるいは単純にオン／オフを市松模様のごとく決定して既成マトリックスＦ１２８としても良い。また、均一濃度値「１２８」の代りに「１２７」を用いても良い。
【００７８】
前記ステップＳ６００の残余２値化処理では、未２値化要素Ｆｉ（ｘ，ｙ）から全方向において直線距離として最も近い未２値化要素Ｆｉ（ｘn，ｙn）を探索して、近い方からオン「１」，オフ「０」，…と設定していた。これ以外に、未２値化要素Ｆｉ（ｘ，ｙ）を探索する方法としては、前記所定要素から螺旋状にたどって行く方向に存在する最も近い要素であっても良い。すなわち、探索する方向を常に、マトリックスの中心Ｑを時計回りあるいは反時計回りに設定しておいて、常にマトリックスの中心Ｑから螺旋状に外側へ探索して近い方からオン「１」，オフ「０」，…と設定して行っても良い。また、これ以外の方法でも良く、同一の値の分布が偏らないようにオンあるいはオフに設定して行けば良い。
【図面の簡単な説明】
【図１】  実施の形態１のディザマトリックス作成装置の主要ブロック図である。
【図２】  実施の形態１のディザマトリックス作成処理のフローチャートである。
【図３】  実施の形態１の参照２値化処理のフローチャートである。
【図４】  実施の形態１の残余２値化処理のフローチャートである。
【図５】  実施の形態１の残余２値化処理の２値化順序を示す説明図である。
【図６】  実施の形態１の残余２値化処理の２値化順序の優先度を示す説明図である。
【図７】  実施の形態１の均一濃度画素マトリックスの説明図である。
【図８】  実施の形態１の均一濃度画素マトリックスを２値化して得られた既成マトリックスの説明図である。
【図９】  実施の形態１の既成マトリックスの説明図である。
【図１０】  実施の形態１の集積結果マトリックスの説明図である。
【図１１】  実施の形態１の各既成マトリックスのオン／オフ設定状態の説明図である。
【図１２】  実施の形態２の２値化マトリックスの処理順序を決定する方法を示すフローチャートである。
【符号の説明】
２…ディザマトリックス作成装置    １０…入力部
１１…マイクロコンピュータ部    １２…ＣＰＵ
１３…プログラムメモリ    １４…ワーキングメモリ
１６…ディザマトリックス格納メモリ
１７…出力イメージメモリ    １８…システムバス
１９…出力部
【図１】
0003711617.tif 000004
【図２】
0003711617.tif 000005
【図３】
0003711617.tif 000006
【図４】
0003711617.tif 000007
【図５】
0003711617.tif 000008
【図６】
0003711617.tif 000009
【図７】
0003711617.tif 000010
【図８】
0003711617.tif 000011
【図９】
0003711617.tif 000012
【図１０】
0003711617.tif 000013
【図１１】
0003711617.tif 000014
【図１２】
0003711617.tif 000015