(57)【特許請求の範囲】
【請求項１】
ベクタデータおよびベクタの濃淡（シェード）を設定するデータを含む画像データを解析する解析手段と、この解析後、２値画像データで濃淡画像を再現する面積階調法にてベクタデータをラスタデータに変換する手段と、ラスタデータを出力する出力手段とを備えた画像生成装置において、
前記解析手段の解析の結果、予め定められたディザマトリクスに対して与えられた濃淡画像の濃度値を適用することによりＮ＊Ｎマスクマトリクスを生成する手段と、
前記Ｎ＊Ｎマスクマトリクスの濃度を保ちながら前記Ｎ＊Ｎマスクマトリクスの行および列単位のＮ＊Ｎ−１回の並べ替えを行うことにより、Ｎ＊Ｎ−１個のＮ＊Ｎマスクマトリクスを生成するとともに、このＮ＊Ｎ−１個のＮ＊Ｎマスクマトリクスを元のＮ＊Ｎマスクマトリクスと組み合わせて（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段と、
線幅に応じて予め定めた低濃度か否かの判定条件を満たすベクタについて、前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを介して多値画像データから２値の濃淡画像を生成するとともに、前記予め定めた低濃度か否かの判定条件を満たさないベクタについて、前記Ｎ＊Ｎマスクマトリクスを介して多値画像データから２値の濃淡画像を生成する手段と、
を備えた画像生成装置。
【請求項２】
与えられた濃淡画像について、その濃度のＮ＊Ｎマスクマトリクスを介して得られる２値の画像が全て”０：ＯＦＦ”になるか否かを判別する条件判定手段を有し、２値の画像が全て”０：ＯＦＦ”になる場合に濃度にかかわらず前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを用いることを特徴とする請求項１記載の画像生成装置。
【請求項３】
前記条件判定手段は、ベクタの濃淡（シェード）値およびベクタの線幅に基づいて条件判定を行うことを特徴とする請求項２記載の画像生成装置。
【請求項４】
前記条件判定手段は、さらにベクタの角度および／または線分長に基づいて条件判定を行うことを特徴とする請求項３記載の画像生成装置。
【請求項５】
前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段は、さらに、前記生成された（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスの行および列単位に並べ替えを行って最終的な（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する請求項１、２、３または４記載の画像生成装置。
【請求項６】
前記Ｎ＊Ｎマスクマトリクスを生成する手段に代えて、該手段により異なる濃度毎に予め生成されたＮ＊Ｎマスクマトリクスを記憶した不揮発性の記憶手段を備えることを特徴とする請求項１〜５のいずれかに記載の画像生成装置。
【請求項７】
前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段に代えて、該手段により異なる濃度毎に予め生成された（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを記憶した不揮発性の記憶手段を備えることを特徴とする請求項１〜６のいずれかに記載の画像生成装置。
【請求項８】
ベクタデータおよびベクタの濃淡（シェード）を設定するデータを含む画像データを解析する解析手段と、この解析後、２値画像データで濃淡画像を再現する面積階調法にてベクタデータをラスタデータに変換する手段と、ラスタデータを出力する出力手段とを備えた画像生成装置において、
Ｎ＊Ｎのディザマトリクスの行および列単位のＮ＊Ｎ−１回の並べ替えを行うことにより、Ｎ＊Ｎ−１個のＮ＊Ｎディザマトリクスを生成するとともに、このＮ＊Ｎ−１個のＮ＊Ｎディザマトリクスを元のＮ＊Ｎディザマトリクスと組み合わせて（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを生成する手段と、
前記解析手段の解析の結果、前記ディザマトリクスに対して、与えられた濃淡画像の濃度値を適用することにより（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段と、
線幅に応じて予め定めた低濃度か否かの判定条件を満たすベクタについて、前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを介して多値画像データから２値の濃淡画像を生成するとともに、前記予め定めた低濃度か否かの判定条件を満たさないベクタについて、前記Ｎ＊Ｎマスクマトリクスを介して多値画像データから２値の濃淡画像を生成する手段と、
を備えた画像生成装置。
【請求項９】
前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを生成する手段に代えて、該手段により予め生成された（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを記憶した不揮発性の記憶手段を備えることを特徴とする請求項８記載の画像生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、階調を有するモノクロ画像、カラー画像等の多値画像における画像データの面積階調処理に関するものである。
【０００２】
【従来の技術】
面積階調法とは、"０：ＯＦＦ”、”１：ＯＮ”の２値表示のみ可能な表示装置やプリンタ装置、プロッタ装置を用いて濃淡画像を再現する場合に、画像の比較的小さい単位領域内のＯＮドットの割合いを変化させて階調を再現させる手法であり、広く知られている。一般に、Ｎ＊Ｎ（ここに＊は乗算の演算子を表す）のマトリクスでＮ＊Ｎ＋１階調が実現できる。これは、０からＮ＊ＮまでのＮ＊Ｎ＋１個の異なるＯＮドット数の単位領域が得られるからである。Ｎ値を大きくすれば階調表現の幅が広がるが、その分メモリの使用が大きくなる傾向にある。
【０００３】
ベクタデータを解析するプリンタ装置やプロッタ装置においては、普通、４＊４のマトリクス、８＊８のマトリクスが主流であるが、最近では、１２８＊１２８のマトリクスを使用しているものもある。
【０００４】
ドット配置のパターンとしては、Ｂａｙｅｒ型を代表とするドット分散型、および、渦巻き型、網点型のようなドット集中型が知られている。解像力はドット分散型のほうが優れており、階調のリニアな再現性はドット集中型のほうが優れていると言われている。
【０００５】
図５に、８＊８のＢａｙｅｒ型のディザマトリクスを示す。このディザマトリクスは、６４個のセル位置にそれぞれ”０”から４きざみに”２５２”までの数値が割り当てられており、それぞれの数値が多値データの２値化のための閾値として用いられる。
【０００６】
通常、１本のベクタは、その始点および終点の座標の他、線幅、先端形状、濃度などで表現される。したがって、ベクタデータの場合、イメージデータと異なり直接的にベクタデータにディザマトリクスを適用することはできない。ベクタの濃淡を表現するためには、図５のディザマトリクスに基づいてそのベクタの濃度値に対応したＯＮ／ＯＦＦパターンを有するマスクマトリクスを形成する。
【０００７】
図６は、濃度５０％におけるマスクマトリクスを示す。図５のディザマトリクスの場合、マスクマトリクスの形成の仕方は、濃度値１００％を２５５とすると、濃度値５０％の濃度値は１２７となる。よって、図５に示すマトリクスの１２７以下の数値を有するセルの部分をＯＮとし、１２７より大きい数値のセル部分をＯＦＦとする。図の例では、黒（ハッチング）セルがＯＮ、白セルがＯＦＦを示す。
【０００８】
図７は濃度３３％におけるマスクマトリクスである。この場合の濃度値は８５であり、”０”から”８４”のセルまでがＯＮとなり、他のセルがＯＦＦとなる。同様に、図８は濃度６６％におけるマスクマトリクスを示す。
【０００９】
図２２により、ベクタの濃淡（シェード）の表現の方法を説明する。図２２の矢印の左側の図は、始点および終点等のデータで表されるベクタを示し、矢印の右側の図は濃度５０％におけるベクタデータの出力結果を示す。このように、ベクタデータを濃淡のあるラスタデータに変換する方法は、図１９に示すようにアンカーコーナー（塗りつぶし基準点）から前記マスクマトリクスをタイリングして（隣接して敷きつめて）おき、ベクタをラスタデータに変換するときに、濃淡非考慮時のラスタの画素列（すべてＯＮ）と、前記タイリングされたＯＮ／ＯＦＦパターンとの間でＡＮＤ（論理積）をとることにより、各ラスタのデータ作成する。
【００１０】
【発明が解決しようとする課題】
図１９は、低濃度の一例として濃度２％未満に対応するマスクマトリクスのタイリングパターンを示す。図の例は、濃度２％未満の場合に、１ドットの線幅のベクタデータがＯＮドットを発生できるかどうかを示す。濃度が２％未満かつ非０％の場合のマスクマトリクスは図１４に示したものとなる。このマスクマトリクスをタイリングして得られるパターンが図１９のパターンである。図１９に示した１ドット幅のラインＡは、丁度、ＯＮドット上に位置する水平ラインであり、８ドットに１ドットの割合でＯＮドットを発生できる。しかし、同じく１ドット幅のラインＢおよびラインＣは、それらの位置および傾斜角度のために、全くＯＮドットを発生することができずベクタデータが欠落することになる。
【００１１】
近年、コンピュータの性能が向上し多種多様のグラフィック、ＣＡＤ関係のアプリケーションソフトが開発されるとともに、カラー処理等も多様化してきている。通常、ベクタデータを生成するプリンタドライバやプロッタドライバによるベクタデータ作成時に、ペンの色や濃度値を生成してプリンタやプロッタにデータ転送を行う。この際、アプリケーション側にて低濃度を設定してしまうと、上記のようなベクタの欠落が生じる場合があった。
【００１２】
本発明は、比較的低濃度の濃淡画像でもベクタ全体の欠落を起こすことのない、信頼性の高い画像処理方法と画像形成装置を提供することを目的とするものである。
【００１３】
【課題を解決するための手段】
本発明による画像処理方法は、２値画像データで濃淡画像を再現する面積階調法において、少なくとも比較的低濃度の前記Ｎ＊Ｎマスクマトリクスについて、前記Ｎ＊Ｎマスクマトリクスの行および列単位のＮ＊Ｎ−１回の並べ替えを行うことにより、Ｎ＊Ｎ−１個のＮ＊Ｎマスクマトリクスを生成し、このＮ＊Ｎ−１個のＮ＊Ｎマスクマトリクスを元のＮ＊Ｎマスクマトリクスと組み合わせて（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成し、前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを介して前記多値画像データから２値の濃淡画像を生成することにより、前記濃淡画像が全て”０：ＯＦＦ”になることを防止することを特徴とする。
【００１４】
前記濃淡画像は、例えば、濃淡を有するベクタである。
【００１５】
本発明によって低濃度のマスクマトリクスによっても当該濃度のベクタ全体が欠落するような不具合が低減される。
【００１６】
前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスに対して、行および列単位にさらに並べ替えを行い、その結果得られた（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを介して前記多値画像データから２値の濃淡画像を生成するようにしてもよい。これによって、（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスにおけるＯＮドットの配置の規則性がなくなり、より一層、ベクタ全体が欠落するような不具合が低減される。
【００１７】
与えられた濃淡画像について当該濃度のＮ＊Ｎマスクマトリクスを介して得られる２値の画像が全て”０：ＯＦＦ”になるか否かを判別し、２値の画像が全て”０：ＯＦＦ”になる場合に前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを用いるようにしてもよい。これによって、２値の画像が全て”０：ＯＦＦ”になることのない場合には、従来と同様、Ｎ＊Ｎマスクマトリクスにより２値化処理を行うことができる。従来の処理で済む場合には、上記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスの生成が不要となり、またそのためのメモリ容量も節約できる。
【００１８】
本発明は、上記のような生成される（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスも提供する。
【００１９】
本発明は、上記方法を実施する装置も提供する。この装置は、ベクタデータおよびベクタの濃淡（シェード）を設定するデータを含む画像データを解析する解析手段と、この解析後、２値画像データで濃淡画像を再現する面積階調法にてベクタデータをラスタデータに変換する手段と、ラスタデータを出力する出力手段とを備えた画像形成装置において、前記解析手段の解析の結果、予め定められたディザマトリクスに対して与えられた濃淡画像の濃度値を適用することによりＮ＊Ｎマトリクスを生成する手段と、少なくとも比較的低濃度の濃淡画像について、前記Ｎ＊Ｎマスクマトリクスの濃度を保ちながら前記Ｎ＊Ｎマスクマトリクスの行および列単位のＮ＊Ｎ−１回の並べ替えを行うことにより、Ｎ＊Ｎ−１個のＮ＊Ｎマスクマトリクスを生成するとともに、このＮ＊Ｎ−１個のＮ＊Ｎマスクマトリクスを元のＮ＊Ｎマスクマトリクスと組み合わせて（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段と、少なくとも比較的低濃度の濃淡画像について、前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを介して前記多値画像データから２値の濃淡画像を生成する手段とを備えたものである。
【００２０】
この装置において、与えられた濃淡画像について、その濃度のＮ＊Ｎマスクマトリクスを介して得られる２値の画像が全て”０：ＯＦＦ”になるか否かを判別する条件判定手段を設け、２値の画像が全て”０：ＯＦＦ”になる場合に前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを用いるようにしてもよい。
【００２１】
前記条件判定手段は、ベクタの濃淡（シェード）値およびベクタの線幅に基づいて条件判定を行う。あるいは、ベクタの角度および／または線分長に基づいて条件判定を行う。
【００２２】
前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段は、さらに、前記生成された（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスの行および列単位に並べ替えを行って最終的な（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成するようにしてもよい。
【００２３】
前記Ｎ＊Ｎマスクマトリクスを生成する手段に代えて、該手段により異なる濃度毎に予め生成されたＮ＊Ｎマスクマトリクスを記憶した不揮発性の記憶手段を備えてもよい。例えば、Ｎ＊ＮマトリクスをＮ＊Ｎ＋１種類あらかじめテーブル作成したものを不揮発性のメモリに記憶させておき、Ｎ＊ＮディザマトリクスからＮ＊Ｎマトリクスを形成する代わりに当該テーブルを使用することができる。
【００２４】
あるいは、前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段に代えて、該手段により異なる濃度毎に予め生成された（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを記憶した不揮発性の記憶手段を備えてもよい。例えば、（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マトリクスをＮ＊Ｎ＋１種類あらかじめテーブル作成したものを不揮発性のメモリに記憶させておき、Ｎ＊Ｎマトリクスから（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マトリクスを形成する代わりに当該テーブルを使用することができる。
【００２５】
これらのテーブルの使用により、処理速度を向上させることができる。
【００２６】
本発明による他の画像処理装置は、ベクタデータおよびベクタの濃淡（シェード）を設定するデータを含む画像データを解析する解析手段と、この解析後、２値画像データで濃淡画像を再現する面積階調法にてベクタデータをラスタデータに変換する手段と、ラスタデータを出力する出力手段とを備えた画像形成装置において、Ｎ＊Ｎのディザマトリクスの行および列単位のＮ＊Ｎ−１回の並べ替えを行うことにより、Ｎ＊Ｎ−１個のＮ＊Ｎディザマトリクスを生成するとともに、このＮ＊Ｎ−１個のＮ＊Ｎディザマトリクスを元のＮ＊Ｎディザマトリクスと組み合わせて（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを生成する手段と、
前記解析手段の解析の結果、前記ディザマトリクスに対して、与えられた濃淡画像の濃度値を適用することにより（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを生成する手段と、この（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マスクマトリクスを介して前記多値画像データから２値の濃淡画像を生成する手段とを備えたものである。これは、ディザマトリクスにより得られたマスクマトリクスの並び替えおよび拡大化を行うのではなく、ディザマトリクス自体の並び替えおよび拡大化を行うものである。これによっても上記と同様の結果を得ることができる。
【００２７】
この場合、前記（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを生成する手段に代えて、該手段により予め生成された（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを記憶した不揮発性の記憶手段を備えることも可能である。
【００２８】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。この実施の形態では、図５に示したようなＢａｙｅｒ型のディザ法における８＊８のマトリクスを使用している。また、本発明の適用の対象装置として、プロッタ、プリンタ等の画像形成装置を例として説明する。
【００２９】
図１は本実施の形態における画像形成装置の構成を示すブロック図である。
【００３０】
図１中、１１は装置全体の動作を制御するＣＰＵ、１２はＣＰＵ１１の作業領域およびデータの一時記憶領域として利用されるＲＡＭである。１３は画像形成装置を駆動するためのプログラムやデータが書き込まれているＲＯＭであり、ＣＰＵ１１により使用される。１４は外部のコンピュータ端末装置等（図示せず）と接続するためのインタフェース部であり、これを介してベクタデータやベクタ修飾情報データなどのプロッタ記述言語データ（画像データ）が転送されてくる。１５はマンマシンインタフェースのための表示を行うＬＣＤ表示装置、１６は画像形成装置の各種設定を選択するためのキー操作部である。１７は画像形成装置の印字部、１８はＣＰＵ１１と他の各要素とを接続するシステムバスである。
【００３１】
図２は、図１に示した画像形成装置の入力データ受信から印字までの処理フローを示す。
【００３２】
まず、外部から入力画像データ（ベクタデータ）を受信し（Ｓ２１）、この受信したデータをプロッタ記述言語のフォーマットにしたがってデータ解析を行う（Ｓ２２）。このデータ解析手段を一般にインタープリタを呼んでいる。データ解析は、画像データの最後にある印字開始データすなわち印字開始コマンドの解析終了まで行われる（Ｓ２３）。印字開始コマンドを受信して今までのベクタデータをラスタデータに変換するＶＲＣ処理（Ｓ２４）が行われる。このＶＲＣ処理では記録に適した印字データを図１のＲＡＭ１２に展開する。実際の印字動作（Ｓ２５）では、この展開されたデータが参照されて印字動作が実行される。
【００３３】
図３は、データ解析処理Ｓ２２の出力を説明するための図である。データ解析（Ｓ３１）の出力には、ＶＲＣ処理を行うためのベクタの始点、終点座標値、線幅情報およびベクタのつなぎ形状や先端形状が含まれ、これらのベクタデータが図１のＲＡＭ１２に格納される（Ｓ３２）。また、ラスタライズを行うためにベクタの濃度を決定するシェードパターンを図１のＲＡＭ１２に格納する（Ｓ３１）。これは、ベクタのラスタライズを行うときに参照される、前述したマスクマトリクスパターンである。本発明の実施にあたってのマスクマトリクスパターンのサイズは８＊８なので８バイトの容量で図１のＲＡＭ１２に格納される。但し、後述するように、特定の場合はこのマスクマトリクスを６４＊６４のマスクマトリクスに変形する。
【００３４】
図４は、図３のベクタシェードパターンの登録に関する本実施の形態の概略処理のフローチャートである。この処理は、１つのベクタが与えられたときに行われる処理である。
【００３５】
まず、データ解析により、与えられたベクタに対してベクタシェードパターンを形成する（Ｓ４１）。これは、前述したように、図５の８＊８のディザマトリクスに基づいて、ベクタの濃度値に対応したマスクマトリクスを形成したものである。
【００３６】
そこで、そのベクタが細線か否かを判定するため、線幅を所定の判定条件と対比する（Ｓ４２）。ベクタデータの線幅の判定条件は、Ｎドット幅で判断するのではなくてＮを√２倍した値で判断するのが望ましい。なぜなら、Ｎ＊Ｎのマスクマトリクスにおいて、非０最低濃度のパターンにおけるＯＮドット同士間の最大の間隔がＮの√２倍となるからである。したがって、本実施の形態では、８ドットでなくその√２倍の１１ドットを判定条件とした。１１ドット未満であれば細線と判定し、さらに低濃度かどうかを判定する（Ｓ４３）。この具体的な方法については後述する。低濃度であれば、先に形成したシェードパターンを後述する方法で変更する（Ｓ４４）。ついで、このシェードパターンをＲＡＭ１２に登録する（Ｓ３１）。
【００３７】
このように、ベクタシェードパターンの登録は、通常、Ｎ＊Ｎマトリクスで登録（メモリに記憶する）しておき、濃淡画像が全て”０：ＯＦＦ”になると判定されたときのみ（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マトリクスを登録すればよいので、メモリ使用容量を抑えることが可能である。例えば、８＊８マトリクスの場合、マスクマトリクスの１回の登録（メモリに記憶する）で８バイト必要となるが、６４＊６４のマスクマトリクスでは、１回の登録（メモリに記憶する）で５１２バイト必要となる。
【００３８】
本実施の形態では、低濃度か否かの判定条件として、図２５に示した条件を採用した。現実には、低濃度でのベクタ全体の欠落には、単に濃度が低いか否かだけでなく、ベクタの傾斜角度も影響するので、ここでは９個の場合に条件を分けている。
【００３９】
第１の条件における「線幅１ドットで４５度方向」とは、与えられたベクタの始点、終点座標値のｘ増分の絶対値とｙ増分の絶対値とが等しいと判断された場合に相当する。このときにベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは図８のパターンであり、これが濃度６６％である。これより低い濃度ではベクタの全ドットが抜けてしまうことがありうる。したがって、この第１の条件に対する対処として、「濃度６６％以下ならシェードパターンの変更」を行うこととしている。なお、実際には濃度６６％では問題がないので「濃度６６％以下なら」ではなく「濃度６６％未満なら」としてもよい（以下も同様）。
【００４０】
第２の条件は「線幅が１ドットで４５度以外」（すなわち始点、終点座標値のｘ増分の絶対値とｙ増分の絶対値が等しくない）と判断された場合である。このときにベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは、図７に示したパターンであり、これは濃度３３％である。したがって、この第２の条件に対する対処として、「濃度３３％以下ならシェードパターンの変更」を行うこととしている。
【００４１】
第３の条件の「線幅２ドットで垂直線以外」とは、線幅が２ドットで、始点、終点座標値のｘ増分が０でなくかつｙ増分が０でないと判断された場合である。本明細書では「垂直線」は水平線も含む、角度０度または９０度のベクタである。この第３の条件でベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは図１０に示したパターンであり、これは濃度２４％である。したがって、この第３の条件に対する対処として、「濃度２４％以下ならシェードパターンの変更」を行うこととしている。
【００４２】
第４の条件は「線幅が２ドットで垂直線」の場合である。このときにベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは図９に示したパターンであり、これは濃度８％である。
【００４３】
第５の条件は、「線幅３および４ドット」の場合である。このとき、ベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは図９に示したパターンであり、これは濃度８％である。
【００４４】
第６の条件は、「線幅５ドット」の場合である。このときにベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは図１１に示したパターンであり、これは濃度５％である。
【００４５】
第７の条件は、「線幅６，７，８，９ドット」の場合である。このときにベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは図１２に示したパターンであり、これは濃度３％である。
【００４６】
第８の条件は、「線幅１０ドット」の場合である。このときにベクタの全ドットが抜けてしまうことがない最低濃度のマスクマトリクスパターンは図１３に示したパターンであり、これは濃度２％である。
【００４７】
第９の条件は、「線幅１１ドット以上」の場合である。このときは、シェードパターンの変更を必要としないのでその変更は行わない。
【００４８】
以上、ベクタの欠落の判断のしかたについて説明したが、次に、実際にＮ＊Ｎマトリクスに基づいて（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）マトリクスを作成する方法について説明する。これは、Ｎ＊Ｎマトリクスの行（ＲＯＷ）および列（ＣＯＬＵＭＮ）のＮ＊Ｎ−１回配置換え（並び替え）を行って実現する。
【００４９】
図１５、図１６は、その配置換えを説明するための図であり、行と列の並び替えを行うプログラム例（Ｃ言語で記載）は下記の通りである。このプログラムの主要部にはその部分の役割を示すコメントを付加してある。但し、このプログラムは行列の配置換えを行うための一例であり、同じ処理が実現できればプログラム言語およびその記述は任意である。
#define N_MATRIX 8
#define BYTE_DOT 8
extern unsigned char inputMatrix[N_MATRIX * N_MATRIX / BYTE_DOT];
extern unsigned char outputMatrix[N_MATRIX * N_MAlIUX * N_MA:TRIX * N_MATRIX / BYTE_DOT];
static void MakeMaskMatrix_ArrayConvert
(        unsigned char *iuputMatrix,
unsigned char *outputMatrix  )
{
char i,j,n ;
for(i=0; i＜N_MATRIX; ++i){  /*図１７のP1の作成*/
outputMatrix[i*N_MATRIX*N_MATRIX/BYTE_DOT]=inputMatrix[i];
}
for(j=0; j＜N_MATRIX-1: ++j){ /* 図１７のP2,P3,P4,P5,P6,P7,P8の作成*/
for(i=0; i＜N_MATRIX; ++i){
outputMatrix[(i*N_MATRIX)+(j+1)] = outputMatrix[(N_MATRIX-1-i)*N_MATRIX+j];
}
}
for(n=0; n＜N_MATRIX-1;++n){
for(i=0; i＜N_MATRIX; ++i){ /* 図１７のp9,p17,p25,p33,p41,p49,p57の作成*/
outputMatrix[i*N_MATRIX+(n+1)*N_MATRIX*N_MATRIX)]
=outputMatrix[i*N_MAIRIX+(n*N_MATRIX*N_MATRIX)]＞＞1)|
(outputMatrix[i*N_MATRIX+(n*N_MATRIX*N_MATRIX]＜＜7);
}
for(j=0; j＜N_MATRIX-1; ++j){ /* 図１７の残りのp作成*/
for(i=0; i＜N_MATRIX; ++i){
outputMatrix[(i*N_MATRIX)+(j+1)+((n+1)*N_MATRIX*N_MATRIX)]
=outputMatrix[(N_MATRIX-1-i)*N_MATRIX+j+((n+1)*N_MATRIX*N_MATRIX)];
}
}
}
}
前述したように、図１４は濃度２％未満のマスクマトリクスであり、これをタイリングすると図１９のようになる。このマスクマトリクスでは、かなりのベクタが欠落してしまう。図１４の８＊８のマスクマトリクスに対して前記プログラムの処理を行うことにより６４＊６４のマスクマトリクスを作成した結果を図２０に示す。これによって、細線の再現性は図１９の場合と比べるとはるかによくなる。
【００５０】
図１７のパターンＰ１は、配置換えの基となる８＊８のマスクマトリクスである。Ｐ２は、図１５で示したように、最上行を最下行へ移動させてＰ１の行の配置換えをしたものである。Ｐ３はＰ２に対して同様の行の配置換えをしたものである。同様にしてＰ８まで作成する。Ｐ９は、図１６で示したように、最右列を最左列に移動させてＰ１の列の配置換えをしたものである。Ｐ１０はＰ２に対して同じ列の配置換えをしたものである。同様にしてＰ１６まで作成する。さらに、次のパターン行であるパターンＰ１７〜Ｐ２４も同様に直前のパターン行の対応するパターンの配置換えにより作成する。以下の各パターン行についても同様である。
【００５１】
このようにして、Ｐ１のＮ＊Ｎのマスクマトリクスに基づいて、図１７に示したような（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）のマスクマトリクスを作成することができる。前述したように、図１４の２％未満の濃度の８＊８マスクマトリクスに基づいて同様に作成されたのが図２０の６４＊６４マスクマトリクスである。
【００５２】
しかし、図２０のマスクマトリクスパターンによって、細線の再現性は図１９の場合と比べるとはるかによくなるが、図２０に示したラインＤとラインＥのように特定の傾きを有するベクタについてはなおその全体の欠落が生じる。
【００５３】
図１８は、図２０に示したように特定の傾きのベクタについてその全体の欠落が生じることまで考慮した配置換えを説明するための図である。図１８のマスクマトリクスは、配置換えにより作成された図１７の（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）のマスクマトリクスに対してさらに別の行列の配置換えを行ったものである。これにより、図２０に現れたようなＯＮドットの規則性をなくすことができる。
【００５４】
図１８における規則性のなくし方について説明する。Ｎ＊Ｎのマスクマトリクスを１つの行列要素とするＭ＊Ｍのマスクマトリクスについて、そのの配列を変化させることで規則性をなくす。本実施の形態では、まず、Ｍ＊Ｍのマスクマトリクスの行について、第８行の内容をを第３行に移し、元の第３行の内容を第４行へ移す。同様の元の第４行の内容を第６行へ、元の第６行の内容を第７行へ、元の第８行の内容を第３行へ移す。このようにして、Ｍ＊Ｍのマスクマトリクスの行の並べ替えを行う。次に、Ｍ＊Ｍのマスクマトリクスに対して、その列について同様の並べ替えを行う。このような操作により、図１８のような新たなＭ＊Ｍのマスクマトリクスが生成される。これは図２１の具体例に対応する。図２０のマスクマトリクスに比べて、図２１のマスクマトリクスはＯＮドットの配置の規則性がなくなっているのが分かる。これによりどのベクタデータの傾きでもベクタの欠落は生じない。規則性のなくし方はこれ以外にも種々考えられるので、どのように行ってもよい。
【００５５】
このように、前記プログラムによる図１７の配置生成と、Ｍ＊Ｍの配列における行および列の並べ替えによるマスクマトリクス生成手段により高精度で濃淡を表現できるようになった。
【００５６】
本実施の形態におけるＮ＊Ｎのマスクマトリクスは８＊８なので６５階調の濃淡を表現できる。
【００５７】
以上の説明では、ベクタのライスタライズの都度、マスクマトリクスを生成するようにしたが、６５種類のマスクマトリクスをあらかじめ作成しておくことが可能である。
【００５８】
図２３は、８＊８のマスクマトリクスの６５階調をテーブルにしたものである。図２１で示した、（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）のマスクマトリクスである６４＊６４のマスクマトリクスの６５階調もテーブル化しておくことができる。このテーブル例を図２４に示す。図中、”0x"は１６進数を示す。このように、これらのテーブルを予め図１の不揮発性記憶手段としてのＲＯＭ１３に記憶させておくことによりＲＡＭ１２の使用量を減らすことができ、さらには、前記プログラムの処理が不要となるため処理速度の向上を図ることができる。
【００５９】
以上の説明では、線幅に着目したが、線分長が短い場合にもベクタのすべてのドットが欠落する場合が生じうる。そこで、図２６のフローチャートに示すように、ステップＳ４２では線幅のみならず線分長も考慮する。すなわち、線幅と線分長の少なくとも一方が１１ドット未満であるか否かを判断する。また、続くステップＳ４３では「低濃度」の判定条件を増加する。他の処理は、図４の場合と同じである。
【００６０】
図２７に図２６のステップＳ４２に対応した「低濃度」の判定条件の例を示す。これは、図２５の場合に比べて、線分長に関する判定条件３、６、８、１０が追加され、判定条件１０〜１３にはその条件部に「線分長」が追加されている。判定条件３、６、８、１０の対処は、条件２、５、７、９と同じである。
【００６１】
以上、本発明の好適な実施の形態について説明したが、種々の変更を行うことが可能である。
【００６２】
例えば、上記説明では、ディザマトリクスに基づいて生成されるマスクマトリクスについて行列の並べ替えを行ったが、ディザマトリクス自体の行列の並べ替えを行うようにしてもよい。すなわち、Ｎ＊Ｎのディザマトリクスの行および列単位のＮ＊Ｎ−１回の並べ替えを行うことにより、Ｎ＊Ｎ−１個のＮ＊Ｎディザマトリクスを生成するとともに、このＮ＊Ｎ−１個のＮ＊Ｎディザマトリクスを元のＮ＊Ｎディザマトリクスと組み合わせて（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを生成する。また、この（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを生成する手段に代えて、該手段により予め生成された（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）ディザマトリクスを記憶した不揮発性の記憶手段（ＲＯＭ等）を備えるようにしてもよい。
【００６３】
さらには、本発明の変形例として、ベクタデータ以外の塗りつぶし処理にも応用が可能である。塗りつぶしをおこなう画像面積が塗りつぶしパターンＮ＊Ｎのマスクマトリクスより小さい場合に同様の処理をおこなうことで塗りつぶし画像の欠損を生じさせないことが可能である。
【００６４】
【発明の効果】
本発明によれば、濃淡画像を再現する面積階調法の低濃度部でのベクタの再現性が悪い場合、マスクマトリクスの配置換えとＮ＊Ｎのマスクマトリクスから（Ｎ＊Ｎ）＊（Ｎ＊Ｎ）のマスクマトリクスを作成することでベクタの再現性を高めることができる。
【００６５】
【図面の簡単な説明】
【図１】本発明の実施の形態における画像形成装置の構成を示すブロック図である。
【図２】図１の画像形成装置の入力データ受信から印字までの処理フローを示すフローチャートである。
【図３】図２のフローチャートにおけるデータ解析の出力を説明するための図である、
【図４】図３のベクタシェードパターンの登録に関する本実施の形態の概略処理のフローチャートである。
【図５】８＊８のＢａｙｅｒ型のディザマトリクスを示す説明図である。
【図６】本発明の実施の形態における、濃度５０％のマスクマトリクスを示す図である。
【図７】本発明の実施の形態における、濃度３３％のマスクマトリクスを示す図である。
【図８】本発明の実施の形態における、濃度６６％のマスクマトリクスを示す図である。
【図９】本発明の実施の形態における、濃度８％のマスクマトリクスを示す図である。
【図１０】本発明の実施の形態における、濃度２４％のマスクマトリクスを示す図である。
【図１１】本発明の実施の形態における、濃度５％におけるマスクマトリクスを示す図である。
【図１２】本発明の実施の形態における、濃度３％のマスクマトリクスを示す図である。
【図１３】本発明の実施の形態における、濃度２％のマスクマトリクスを示す図である。
【図１４】本発明の実施の形態における、濃度２％未満におけるマスクマトリクスを示す図である。
【図１５】本発明の実施の形態における、行の配置換えを示す図である。
【図１６】本発明の実施の形態における、列の配置換えを示す図である。
【図１７】本発明の実施の形態における単純配置換えを示す図である。
【図１８】本発明の実施の形態における、配置換えの最終形を示す図である。
【図１９】濃度２％未満時の通常のマスクマトリクスのタイリングを示す図である。
【図２０】本発明の実施の形態における、濃度２％未満時の単純配置換え後のマスクマトリクスのを示す図である。
【図２１】本発明の実施の形態における、濃度２％未満時の配置換えの最終形のマスクマトリクスのを示す図である。
【図２２】濃度５０％時のベクタデータの表現を示した図である。
【図２３】８＊８のマスクマトリクスの６５階調のテーブルを示した図である。
【図２４】本発明の実施の形態における、６４＊６４のマスクマトリクスの６５階調のテーブルを示した図である。
【図２５】本発明の実施の形態における、ベクタ欠落を判定する条件を示した図である。
【図２６】本発明の他の実施の形態におけるベクタシェードパターンの登録に関する本実施の形態の概略処理のフローチャートである。
【図２７】図２６の実施の形態における、ベクタ欠落を判定する条件を示した図である。
【符号の説明】
１１…ＣＰＵ，１２…ＲＡＭ，１３…ＲＯＭ，１４…インターフェース、１５…液晶表示装置、１６…キー操作部、１７…印字部、１８…システムバス。
【図１】
0004129934.tif 000002
【図２】
0004129934.tif 000003
【図３】
0004129934.tif 000004
【図４】
0004129934.tif 000005
【図５】
0004129934.tif 000006
【図６】
0004129934.tif 000007
【図７】
0004129934.tif 000008
【図８】
0004129934.tif 000009
【図９】
0004129934.tif 000010
【図１０】
0004129934.tif 000011
【図１１】
0004129934.tif 000012
【図１２】
0004129934.tif 000013
【図１３】
0004129934.tif 000014
【図１４】
0004129934.tif 000015
【図１５】
0004129934.tif 000016
【図１６】
0004129934.tif 000017
【図１７】
0004129934.tif 000018
【図１８】
0004129934.tif 000019
【図１９】
0004129934.tif 000020
【図２０】
0004129934.tif 000021
【図２１】
0004129934.tif 000022
【図２２】
0004129934.tif 000023
【図２３】
0004129934.tif 000024
【図２４】
0004129934.tif 000025
【図２５】
0004129934.tif 000026
【図２６】
0004129934.tif 000027
【図２７】
0004129934.tif 000028