(57)【特許請求の範囲】
【請求項１】
色及び座標から構成される図形のエッジ情報からディザ処理を施した２値画像としてビットマップメモリに展開する画像処理装置において、Ｎ行Ｋ列の閾値マトリクスに基づいて色値とディザ処理後の２値パターンの対応で表現されるテーブルとともに列に関するシフト量Ｓを格納したシフトテーブルを作成するテーブル作成手段と、作成されたテーブルおよびシフトテーブルを格納するテーブル格納手段と、前記エッジ情報から得られるランの長さ及び前記座標及び前記色の情報に基づいて前記テーブルおよび前記シフトテーブル内のデータを用いて２値パターンデータを生成するパターンデータ生成手段と、前記パターンデータ生成手段によって生成された２値パターンデータを前記ビットマップメモリに２値画像として展開するパターン展開手段を有することを特徴とする画像処理装置。
【請求項２】
Ｌ行Ｋ列の閾値から成る基本閾値マトリクスを指定するマトリクス指定手段と、前記基本閾値マトリクスの大きさをＬとデータアクセス長との最小公倍数をＮとしＮ行Ｋ列の閾値マトリクスへ変換するマトリクス変換手段をさらに有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記マトリクス変換手段による変換後の閾値マトリクスの行方向の大きさＮは、前記ビットマップメモリにアクセスするＣＰＵのワード長のＡ倍（Ａは自然数）であり、前記テーブル生成手段が生成するテーブルは、取りうる全ての色値をインデックスとするディザパターン結果であり、前記パターンデータ生成手段が生成する２値パターンデータは前記ワード長であることを特徴とする請求項２に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、色及び座標から構成される図形のエッジ情報からディザ処理を施した２値画像としてビットマップメモリに展開する画像処理装置に関するものである。
【０００２】
【従来の技術】
従来、カラー複写機やカラープリンタ等では、色分解された光像により像を感光体上に形成して色材料により現像し、各色成分を重ねあわせて印刷する手法がある。このような多色重ね合わせによる印刷方法では、各色の重ね合わせによるモアレの発生を防止するために、各色毎に、網点用のスクリーンの角度を変える手法が一般的に取られている。
【０００３】
複写機やプリンタ等において上述のようなスクリーンをデジタル的に掛ける手法として、ディザ法によって網点形成を行う手法がある。特公平５−６８９１１号公報（以降、文献１と呼ぶ）では、角度を持ったスクリーン処理を行うにあたり、ディザ処理を、Ｌ行Ｋ列の閾値マトリクスを用意し、Ｋ列毎に閾値マトリクスの読み出し位置を変えることによって実現する手法が示されている。この手法は、有理正接角でスクリーン処理に使用される角度をもったスクリーンセルは、Ｌ行Ｋ列の矩形セルを敷き詰めて表現できる性質を利用している。この結果、ディザ法を使用して網点画像を得る際に、有理正接角の範囲内であれば、この手法によって自由なスクリーン角度を設定することができる。
【０００４】
文献１に記載されている方式では、各色毎にマトリクスに設定された閾値と、入力とする色値とを比較して、閾値より大きい場合は値“１”を結果とし、小さい場合は値“０”を結果とする比較演算を行う。文献１では、このように１ピクセルごとに処理を行うため、網点化処理に時間がかかり、処理速度が低下するという問題があった。
【０００５】
これに対し、例えば特開平９−１７１５６４号公報（以降、文献２と呼ぶ）には、グラフィックス等の図形データでは、ある一定領域の色値が同じ値である性質を利用して、高速に網点画像を得る手法が示されている。文献２の手法では、予め閾値マトリクスから、色値に対する網点化処理後のパターンをテーブルとして記憶しておく。そして、グラフィックスデータ等をラン長と、端点部の座標によるエッジ情報に分解した後、各々のエッジ情報に対して網点処理を行う。この時、先に生成したテーブルからパターンを取り出しておいて、エッジの端部については、パターンから必要なピクセル位置までをマスク処理によって取り出して描画し、端部以外の中央部では、そのままパターンを格納することによって描画を行っている。この処理では、描画時点で閾値との比較演算が必要ないことから、高速に網点化処理を実行することができる。また、パターンやマスク処理は、全てＣＰＵで扱われるワード長で表現するため、実現が容易であり、更に高速に処理できる。
【０００６】
しかし、ＣＰＵで扱われるワード長で処理することを前提としており、設定できる閾値マトリクスの幅がワード長でなければならないという制約がある。この結果、角度をもったスクリーンを自由に設定できないため、文献１の手法に比べて画像品質に問題が生じていた。
【０００７】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、色及び座標から構成される図形のエッジ情報をディザ処理して２値画像としてビットマップメモリに展開するにあたり、自由なスクリーン角度を設定することができ、かつ、高速に処理することが可能な画像処理装置を提供することを目的とするものである。
【０００８】
【課題を解決するための手段】
本発明は、色及び座標から構成される図形のエッジ情報からディザ処理を施した２値画像としてビットマップメモリに展開する画像処理装置において、Ｎ行Ｋ列の閾値マトリクスに基づいて色値とディザ処理後の２値パターンの対応で表現されるテーブルとともに列に関するシフト量Ｓを格納したシフトテーブルを作成するテーブル作成手段と、作成されたテーブルおよびシフトテーブルを格納するテーブル格納手段と、前記エッジ情報から得られるランの長さ及び前記座標及び前記色の情報に基づいて前記テーブルおよび前記シフトテーブル内のデータを用いて２値パターンデータを生成するパターンデータ生成手段と、前記パターンデータ生成手段によって生成された２値パターンデータを前記ビットマップメモリに２値画像として展開するパターン展開手段を有することを特徴とするものである。
【０００９】
さらに、Ｌ行Ｋ列の閾値から成る基本閾値マトリクスを指定するマトリクス指定手段と、前記基本閾値マトリクスの大きさをＬとデータアクセス長との最小公倍数をＮとしＮ行Ｋ列の閾値マトリクスへ変換するマトリクス変換手段を設けることができる。
【００１０】
上述のように、任意の角度でスクリーン処理を行う場合には、ディザ処理を、Ｌ行Ｋ列の閾値マトリクスを用いて行えばよい。これを基本閾値マトリクスとして指定し、この基本閾値マトリクスを、Ｌとデータアクセス長との最小公倍数をＮとしたＮ行Ｋ列の大きさの閾値マトリクスに変換した後、各色値ごとに２値パターンを作成してテーブル化するとともに各列に関するシフト量Ｓを格納したシフトテーブルを作成している。このテーブル及びシフトテーブルを用いてディザ処理された２値画像を得ることによって、自由な角度のスクリーン処理を行うことができる。また、エッジ情報に対応するディザ処理後の２値パターンをテーブルから得るので、各ピクセルごとの色値と閾値との比較処理を排除することができ、高速に網点化処理を行うことが可能になる。
【００１１】
また、マトリクス変換手段による変換後の閾値マトリクスの行方向の大きさＮをビットマップメモリにアクセスするＣＰＵのワード長のＡ倍（Ａは自然数）とし、またパターンデータ生成装置が生成する２値パターンデータをワード長とすることによって、容易に実現可能となる。
【００１２】
【発明の実施の形態】
図１は、本発明の画像処理装置の実施の一形態を示すブロック図である。図中、１はテーブル管理部、２は２値画像変換部、３はパターンテーブル格納部、４はビットマップメモリ、１１はディザマトリクス指定部、１２はディザマトリクス変換部、１３はパターンテーブル生成部、１４はパターンデータ生成部、２１はエッジ情報入力部、２２はビットマップメモリ展開部である。図１に示した画像処理装置は、テーブル管理部１、２値画像変換部２、パターンテーブル格納部３、ビットマップメモリ４から構成されている。
【００１３】
テーブル管理部１は、主に画像処理装置の初期化時点においてパターンテーブルを生成する処理を行う。テーブル管理部１は、ディザマトリクス指定部１１、ディザマトリクス変換部１２、パターンテーブル生成部１３、パターンデータ生成部１４から構成されている。
【００１４】
ディザマトリクス指定部１１は、予め設定された角度のスクリーン処理を行うためのＬ行Ｋ列の閾値から成る基本閾値マトリクスを指定する。
【００１５】
ディザマトリクス変換部１２は、ディザマトリクス指定部１１で指定した基本閾値マトリクスの大きさをＮ行Ｍ列へ変換する。このとき、変換後の閾値マトリクスの行方向の大きさＮは、前記ビットマップメモリにアクセスするＣＰＵのワード長のＡ倍（Ａは自然数）としておくとよい。
【００１６】
パターンテーブル生成部１３は、ディザマトリクス変換部１２でＮ行Ｍ列に変換された閾値マトリクスに基づいて、色値とディザ処理後の２値パターンの対応で表現されるパターンテーブルを作成する。作成するパターンテーブルは、取りうる全ての色値をインデックスとして、それぞれの色ごとにディザパターンを対応付けておくとよい。作成したパターンテーブルはパターンテーブル格納部３に格納される。
【００１７】
パターンデータ生成部１４は、２値画像変換部２からエッジの座標やランの長さ、色の情報等を受け取り、パターンテーブル格納部３に格納されているパターンテーブルのデータを用いて２値パターンデータを生成して２値画像変換部２に返す。２値パターンデータを生成する際には、ワード長に合わせておくことによって、２値画像変換部２によるビットマップメモリ４のアクセスを容易に行うことができるようになる。
【００１８】
２値画像変換部２は、エッジ情報として入力された画像を２値パターンデータへ変換してビットマップメモリ４に描画する処理を行う。２値画像変換部２は、エッジ情報入力部２１、ビットマップメモリ展開部２２で構成されている。
【００１９】
エッジ情報入力部２１は、色及び座標から構成される図形のエッジ情報を受け取る。図２は、エッジ情報の説明図である。以下の説明においてエッジとは、ビットマップメモリに、描画のために定義される座標系において、ｘ軸に平行な、幅１の線分である。エッジは、その開始点のｘ座標及びｙ座標、エッジのランレングス長ｒｕｎ、及び色の値ｃｏｌｏｒの４つの情報によって表される。また、エッジの開始点とは、エッジの２つの端点のうち、ｘ座標の座標値が小さいほうを開始点と呼ぶ。
【００２０】
ビットマップメモリ展開部２２は、エッジ情報入力部２１に入力されたエッジ情報をもとに、テーブル管理部１のパターンデータ生成部１４によって生成された２値パターンデータを、ビットマップメモリ４に２値画像として展開する。すべてのエッジ情報について展開することによって、ビットマップメモリ４にディザ処理が施された２値画像が描画される。
【００２１】
次に、本発明の画像処理装置における動作の一例について説明する。まず、画像処理装置の初期化時点でのテーブル管理部１におけるパターンテーブル生成処理の動作を説明する。
【００２２】
ディザマトリクス指定部１１では、外部に記憶されたディザマトリクスを読み込む処理を行う。図３は、ディザマトリクスの一形態の説明図である。図３では、角度１８．５度のスクリーンを表現したものを示している。内部に記された値は全部で４０あり、これらの値は中心から周囲に広がるように配置され、面積にして４０画素域の領域に対して「０」から「４１」までの階調を表現する。１８．５度とは、図中に示される傾いた四角形のもつ角度であり、ｘ軸上を正の方向に６画素分進むにつれ、ｙ軸上を正の方向に２画素分進む角度であって、ｔａｎθ＝１／３を満たす角度である。また、このように画素の増分関係の単位で表現される角度を一般に有理正接角と呼ぶ。
【００２３】
図４は、画像中における閾値配列の一例の説明図である。図３に示すような１８．５度の角度をもった閾値配列を画像中に敷き詰めた場合を図４に示している。上述の文献１によれば、このように有理正接角をもったディザマトリクスは、全て矩形で表現できることが知られている。図４では、太線の四角で囲んだ領域の繰り返しによって表現されるのが分かる。このとき、矩形は、ｙ軸上を正の方向に矩形の縦方向の大きさ分進むごとに、ｘ方向の矩形の開始点が、ある一定量ずつずれて配置される。このずれ量をシフト量と呼ぶ。
【００２４】
図５は、基本閾値マトリクスの指定データ形式の一例の説明図である。ディザマトリクス指定部１１は、外部に記憶されたディザマトリクスを読み込む処理を行う際に、例えば図５に示すような情報を読み込む。上記のとおり、有理正接角で表現される全てのマトリクスは矩形で表され、それぞれの矩形は所定のシフト量だけずれて配置される。これを利用し、（１）マトリクスの行方向の大きさ（以下この値をＬとする）、（２）マトリクスの列方向の大きさ（以下この値をＫとする）、（３）シフト量（以下この値をＳとする）、（４）Ｋ×Ｌ個の閾値データ、によって基本閾値マトリクスを特定することができる。ディザマトリクス指定部１１は、この４つのデータの読み込み処理を行う。例えば図４に示したようなスクリーン角度が１８．５度のディザマトリクスの場合には、図５に示すように、矩形マトリクスの行方向の大きさＬ＝２０、同じく列方向の大きさＫ＝２、シフト量Ｓ＝６となる。そして、閾値データ列としてＫ×Ｌ＝４０個の閾値データが並ぶことになる。
【００２５】
次にディザマトリクス変換部１２の動作を説明する。図４にも太線で示したように、ディザマトリクス指定部１１により読み込まれた基本閾値マトリクスを画像中に敷き詰めることが可能である。図６は、基本閾値マトリクスの画像への配置態様の一例の説明図である。図中の各矩形がＫ行Ｌ列の基本閾値マトリクスを示している。図６に示すように、ｙ軸方向にＫ列ごとに基本閾値マトリクスが配置される。このとき、ｙ軸方向に並ぶ基本閾値マトリクスはＳ％Ｌ、２Ｓ％Ｌ、３Ｓ％Ｌ、．．．といった具合にｙ軸からのシフト量が決定される。ここで、“％”は除算の剰余とする演算子とする。
【００２６】
このようにｙ軸方向に繰り返して基本閾値マトリクスを敷き詰めたとすると、再びシフト量が０の部分、つまりｘ座標が、ハッチングを施して示した矩形と同様な位置となる基本閾値マトリクスが周期的に現れる。この結果、ディザマトリクス指定部１１で指定されたＬ行Ｋ列でシフト量Ｓの基本閾値マトリクスは、Ｎ行Ｍ列でシフト量０の矩形のマトリクスに変換することができる。
【００２７】
ここで、ディザマトリクス変換部１２では、基本閾値マトリクスを、以下に示す２つの形式のマトリクスのどちらかに変換する。
［形式１］Ｎ行Ｍ列、シフト量０
［形式２］Ｎ行Ｋ列、シフト量Ｓ
【００２８】
図７は、マトリクス変換部による変換後の閾値マトリクスの一例の説明図である。図７では、上述の「形式１」の変換結果を、太線枠で囲って示している。値Ｍの算出方法は、ｙ軸上にシフト量０となるマトリクスが現れるまでの回数に、基本閾値マトリクスの列サイズＫを掛け合わせたものとし、以下の式で表される。
シフト量Ｓが０の場合
Ｍ＝Ｋ
シフト量Ｓが０でない場合
Ｍ＝（ＬＣＭ（Ｌ，Ｓ）／Ｓ）×Ｋ
（ＬＣＭ（ａ，ｂ）はａとｂの最小公倍数の結果を表す）
値Ｎは、計算機がもっとも効率よく処理可能なデータアクセス長（以下ワード長と呼ぶ）との最小公倍数であり、以下の式で表される。
Ｎ＝ＬＣＭ（Ｌ，ＷＣ）
（ＷＣはワード長を表す）
図７に示した例では、図５で指定された基本閾値マトリクスについてワード長ＷＣを８とした場合を示している。この場合は、Ｍは２０、Ｎは４０という値をとる。
【００２９】
図８は、マトリクス変換部による変換後の閾値マトリクスの別の例の説明図である。図８では、上述の「形式２」の変換結果を、太線枠で囲って示している。形式２では、列方向は、初めに指定された大きさと同じ値Ｋとし、行方向をワード長との最小公倍数ＬＣＭ（Ｌ、ＷＣ）で表現する。図８も、図５で指定され基本閾値たマトリクスについてワード長ＷＣが８の場合を示している。この場合、Ｋは２、Ｎは４０となる。
【００３０】
次にパターンテーブル生成部１３の処理を説明する。パターンテーブル生成部１３は、ディザマトリクス変換部１２によって、「形式１」または「形式２」に変換された閾値マトリクスを受け取る。図９は、パターンテーブルのデータ形式の一例の説明図である。図９は、上述の「形式１」の閾値マトリクスに対応するパターンテーブルの形式の例を示している。パターンテーブルは、要素の単位をワード長として構成し、３次元の配列ＰＴ［２５６］［Ｍ］［ＮＷ］で実現することができる。初めの２５６のインデックス数は、入力色値が１画素あたり８ｂｉｔで表現されている場合を示しており、２５６の色の値に対応する。Ｍは形式１のマトリクスの列サイズを表し、ＮＷは、形式１のマトリクスの行方向のワード数を表す。また、ワード数ＮＷが１の場合は、２次元の配列ＰＴ［２５６］［Ｍ］で実現することができる。
【００３１】
このように定義されたパターンテーブルには、２値化後のパターンを格納する。図１０は、ディザマトリクスの別の形態の説明図、図１１は、パターンテーブルに格納される２値のパターンの一例の説明図である。上述の例では、スクリーン角度１８．５度の場合を示しているが、ここでは簡単のためスクリーン角度０度とした図１０に示すようなＫ＝４、Ｌ＝４の基本閾値マトリクスを考える。図１１では、図１０に示す基本閾値マトリクスから、マトリクス変換処理によって、Ｍ＝４、Ｎ＝８に変換された場合のパターンテーブルを示している。図１１（Ｂ）〜（Ｄ）は、それぞれ、色の値が２５０、１５０、５０の場合に対応する２値のパターンデータを例示したものである。それぞれの色の値に応じて、このような２値のパターンデータをパターンテーブルに登録しておくことになる。
【００３２】
図１２は、パターンテーブルのデータ形式の別の例の説明図、図１３は、シフトテーブルの具体例の説明図である。図１２（Ａ）は、上述の「形式２」の閾値マトリクスに対応するパターンテーブルの形式の例を示している。パターンテーブルは、Ｋ×Ｎ×２５６の３次元テーブルとなり、テーブルの要素の単位をワード長とすると、配列ＰＴ［２５６］［Ｋ］［ＮＷ］で実現できる。また、ワード数ＮＷが１の場合は、２次元の配列ＰＴ［２５６］［Ｋ］で実現できる。「形式２」では、このパターンテーブルの他に、図１２（Ｂ）に示すようなシフトテーブルも生成する。シフトテーブルは、単純な１次元の表形式であり、ｙ（０）〜ｙ（Ｍ−１）に対するシフト量Ｓｈｉｆｔを格納する。ここで、Ｍは、「形式１」に変換した場合の列サイズを表している。つまり、シフトテーブルは、マトリクスをｙ軸方向に繰り返し配置した場合に、再びシフト量が０となるまでの全ての行のシフト量を格納している。図５で示した基本閾値マトリクスについてのシフトテーブルの値を図１３に例示している。
【００３３】
以上の処理が、画像処理装置の初期化の時点で実施される。ディザマトリクス変換部１２で「形式１」に変換した場合にはパターンテーブルが、「形式２」に変換した場合にはパターンテーブルとシフトテーブルが、それぞれパターンテーブル格納部３に格納される。
【００３４】
次に、２値画像変換部２の動作を説明する。２値画像変換部２では、まず、画像処理装置の外部または内部で生成したエッジ情報をエッジ情報入力部２１によって入力し、ビットマップメモリ展開部２２に送信する。ビットマップメモリ展開部２２では、ディザ処理に必要な情報をテーブル管理部１内のパターンデータ生成部１４から取得して、生成したディザ処理後の２値画像をビットマップメモリ４に描画する。
【００３５】
図１４ないし図１６は、ビットマップメモリ展開部２２の処理の一例を示すフローチャートである。Ｓ３１において、エッジ情報からｒｕｎ，ｘ，ｙ，ｃｏｌｏｒを得る。ｒｕｎはエッジのラン長を、ｘ，ｙはエッジの左端点の座標を、ｃｏｌｏｒはエッジに着色する色の値を表す。またＳ３２において、パターンテーブルの行方向ワード数ＮＷを得る。パターンテーブルの行方向ワード数ＮＷは、例えば図９や図１２（Ａ）に示すパターンテーブルの場合、値“５”を表している。
【００３６】
エッジ情報に従って描画を行う場合には、ワード長単位に分割して描画を行うことができる。例えば上述の図２に示した例では、エッジ情報に基づいて図２（Ｂ）に示すように４つのワードに分割して描画を行うことができる。ここで、ＮＷが０である場合、パターンテーブルはワード単位の２次元配列として実現されていることを示す。この場合、図２（Ｂ）に示す例では、４つのワード部分を描画するにあたり、パターンテーブルからワード長単位の２値のパターン（図中、ハッチングを施した部分）を１回生成して、４つの部分に適用できる。一方、ＮＷが０でない場合、パターンテーブルは複数ワード構成の３次元配列として実現されていることを示す。この場合、連続したワードに同じパターンを適用することができないため、図２（Ｂ）に示す例では、パターンテーブルからワード長単位の２値のパターンを４回生成して、それぞれに適用する。この処理の違いから、以下の処理を分ける。
【００３７】
Ｓ３３において、ＮＷが０であるかを検査する。０である場合、▲１▼に進み、図１５に示す処理を実施する。また、０でない場合、▲２▼に進み、図１６に示す処理を実施する。図１５又は図１６に示す処理の終了により、エッジ情報の描画を終了する。
【００３８】
図１５に示す処理について説明する。Ｓ４１において、ｙ，ｃｏｌｏｒをもとに処理ＦＵＮＣ１によってパターンＴを得る。処理ＦＵＮＣ１はテーブル管理部１内のパターンデータ生成部１４に定義されており、その処理については後述する。この呼び出しによって、ｙ，ｃｏｌｏｒからパターンテーブルを検索して、２値のパターンＴを得る。
【００３９】
Ｓ４２において、描画開始点のワード位置ｓｗとワード内のビット位置ｓｂ、及び、描画終了点のワード位置ｅｗとワード内のビット位置ｅｂを求める。すなわち“％”を除算の剰余とする演算子とし、ワード長をＣＷとすれば、以下のように計算できる。
ｓｂ＝ｘ％ＣＷ
ｅｂ＝（ｒｕｎ＋ｘ）％ＣＷ
ｓｗ＝ｘ／ＣＷ
ｅｗ＝（ｒｕｎ＋ｘ）／ＣＷ
【００４０】
Ｓ４３において、描画開始点のワード位置ｓｗと描画終了点のワード位置ｅｗを比較する。ｓｗとｅｗが等しい場合には、同じワード内に描画開始点と終了点が存在することを示す。この場合、Ｓ４４へ処理を進める。また、描画開始点のワード位置ｓｗが描画終了点のワード位置ｅｗより小さい、すなわち描画開始点と描画終了点が別のワードに属している場合には、Ｓ４５へ処理を進める。
【００４１】
Ｓ４４において、ワード長の２値のパターンＴのうち、描画開始点のビット位置ｓｂから描画終了点のビット位置ｅｂまでのビットパターンを、マスクを表す変数であるＭｓｋによって取り出す。そして、変数Ｂの描画位置に対して、同じマスク値の反転（演算子“〜”）との論理積によって０クリアした後、論理和をとることで描画する。変数Ｂはビットマップメモリ４にアクセスするための変数であり、ｙ座標と描画開始（または描画終了）位置におけるワード位置からなる２次元配列で表現される。ビット位置ｓｂからｅｂまでのマスクとは、ワード内の０からＣＷ−１までのビットにおいて、０からｓｂ−１とｅｂ＋１からＣＷ−１までが値“０”で表され、ｓｂからｅｂまでが値“１”で表される。このマスクはＭｓｋ［ｓｂ］［ｅｂ］によって表される。
【００４２】
描画開始点と描画終了点が別のワードに属している場合には、描画開始点を含むワード、描画終了点を含むワード、その他２つのワードの間に存在するワード、の３つのパートに分けて描画する。まず、初めのパートの描画を行う。Ｓ４５において、描画開始点のビット位置ｓｂからそのワードの終わりまでに、２値のパターンをビットマップメモリ４を示す変数Ｂに書き込む。ビットマップメモリ４を示す変数Ｂへの２値のパターンＴの書き込みは、ビット位置ｓｂからワードの終わりであるＣＷ−１までをマスクＭｓｋ［ｓｂ］［ＣＷ−１］でマスクし、変数Ｂ［ｙ］［ｓｂ］を、同じマスク値の反転によって０クリアを行った後、論理和をとって描画する。
【００４３】
次にＳ４６において、エッジ中央部分のパートの描画を行う。描画開始点を含むワードと描画終了点を含むワードとの間に存在するワードに、２値パターンを書き込む。ビットマップメモリ４を示す変数Ｂへの２値のパターンＴの書き込みは、２値のパターンＴを変数Ｂ［ｙ］［Ｉ］にそのまま格納する。Ｉは、ｓｗ＋１からｗｅ−１をとる。この処理は、エッジの端点にあたらないため、マスク処理を必要としない。
【００４４】
最後にＳ４７において、終端部分のパートの描画を行う。描画終了点を含むワードの最初からｅｂのビット位置までに２値のパターンを書き込む。ビットマップメモリ４を示す変数Ｂへの２値のパターンＴの書き込みは、２値のパターンＴのうち、ワードの初めであるビット位置０からビット位置ｅｂまでをマスクＭｓｋ［０］［ｅｂ］でマスクし、変数Ｂ［ｙ］［ｅｗ］を、同じマスク値の反転によって０クリアを行った後、論理和をとって描画する。
【００４５】
図１６に示す処理について説明する。Ｓ５１において、描画開始点のワード位置ｓｗとワード内のビット位置ｓｂ、及び、描画終了点のワード位置ｅｗとワード内のビット位置ｅｂを求める。すなわち“％”を除算の剰余とする演算子とし、ワード長をＣＷとすれば、以下のように計算できる。
ｓｂ＝ｘ％ＣＷ
ｅｂ＝（ｒｕｎ＋ｘ）％ＣＷ
ｓｗ＝ｘ／ＣＷ
ｅｗ＝（ｒｕｎ＋ｘ）／ＣＷ
【００４６】
Ｓ５２において、描画開始点のワード位置ｓｗと描画終了点のワード位置ｅｗを比較する。ｓｗとｅｗが等しい場合には、同じワード内に描画開始点と終了点が存在することを示す。この場合にはＳ５３に進む。描画開始点のワード位置ｓｗが描画終了点のワード位置ｅｗより小さい、すなわち描画開始点と描画終了点が別のワードに属している場合には、Ｓ５４に進む。
【００４７】
同じワード内に描画開始点と終了点が存在する場合には、Ｓ５３において、ｙ，ｃｏｌｏｒ、及び、描画点のワード位置ｓｗから、２値のパターンＴを処理ＦＵＮＣ２によって得る。処理ＦＵＮＣ２は、テーブル管理部１内のパターンデータ生成部１４に定義されている。処理ＦＵＮＣ２については後述する。この処理ＦＵＮＣ２の呼び出しによって、ｙ，ｃｏｌｏｒ，ｓｗからパターンテーブルを検索して、２値のパターンＴを得る。ワード長の２値のパターンＴのうち、描画開始点のビット位置ｓｂから描画終了点のビット位置ｅｂまでのビットパターンを、マスクを表す変数であるＭｓｋによって取り出す。そして、描画位置におけるビットマップメモリ４を示す変数Ｂに、同じマスク値の反転との論理積によって０クリアした後、論理和をとることで描画する。変数ＢおよびマスクＭｓｋについては図１５と同様である。
【００４８】
描画開始点と描画終了点が別のワードに属している場合には、描画開始点を含むワード、描画終了点を含むワード、その他２つのワードの間に存在するワード、の３つのパートに分けて描画する。まずＳ５４において、初めの描画開始点を含むのワードの描画を行う。描画開始点のビット位置ｓｂからそのワードの終わりまでに、２値のパターンをビットマップメモリ４に書き込む。ｙ，ｃｏｌｏｒ、及び、描画点のワード位置ｓｗ、から２値のパターンＴを処理ＦＵＮＣ２によって得る。ビットマップメモリ４を示す変数Ｂへの２値のパターンＴの書き込みは、ビット位置ｓｂからワードの終わりであるＣＷ−１までをマスクＭｓｋ［ｓｂ］［ＣＷ−１］でマスクし、変数Ｂ［ｙ］［ｓｂ］を、同じマスクの反転によって０クリアを行った後、論理和をとって描画する。
【００４９】
次にＳ５５において、中央部分のパートの描画を行う。描画開始点を含むワードと描画終了点を含むワードとの間に存在するワードに、２値のパターンを書き込む。ビットマップメモリ４を示す変数Ｂへの２値のパターンＴの書き込みにおいて、ｙ，ｃｏｌｏｒ、及び、描画点のワード位置Ｉから、２値のパターンＴを処理ＦＵＮＣ２によって取得し、２値のパターンＴを変数Ｂ［ｙ］［Ｉ］にそのまま格納する。Ｉは、ｓｗ＋１からｗｅ−１をとる。この処理は、エッジの端点にあたらないため、マスク処理を必要としない。
【００５０】
最後にＳ５６において、終端部分のパートの描画を行う。描画終了点を含むワードの最初からｅｂのビット位置までに、２値のパターンを書き込む。ｙ，ｃｏｌｏｒ、及び、描画点のワード位置ｅｗから、２値のパターンＴを処理ＦＵＮＣ２によって取得する。ビットマップメモリ４を示す変数Ｂへの２値のパターンＴの書き込みは、２値のパターンＴのうち、ワードの初めであるビット位置０からビット位置ｅｂまでをマスクＭｓｋ［０］［ｅｂ］でマスクし、変数Ｂ［ｙ］［ｅｗ］を、同じマスク値の反転によって０クリアを行った後、論理和をとって描画する。
【００５１】
以上、説明したビットマップメモリ展開部２２の動作において、パターンテーブルのアクセスを行う際に、パターンデータ生成部１４内の処理ＦＵＮＣ１、及び処理ＦＵＮＣ２の２つの処理を起動する。以下、これらの処理について説明する。
【００５２】
図１７は、パターンデータ生成部１４における処理ＦＵＮＣ１の動作の一例を示すフローチャートである。Ｓ６１において、エッジのｙ座標、及び色の値ｃｏｌｏｒを得る。Ｓ６２において、パターンテーブルのテーブル形式Ｆを得る。Ｆは、１または２をとる値であり、１はパターンテーブル生成部１３の説明で述べた「形式１」を表し、２は「形式２」を表す。「形式２」の場合は、パターンテーブル格納部３には、パターンテーブルの他に、列毎のシフト量を格納したシフトテーブルが格納されている。
【００５３】
Ｓ６３において、テーブル形式Ｆが１であるか２であるかを検査する。１である場合、Ｓ６４において、パターンテーブルから２値のパターンを取得する。テーブルは「形式１」なので、パターンテーブルをＰＴ、テーブルの列方向の大きさをＭとし、“％”を除算の剰余とする演算子とした場合、ＰＴ［ｃｏｌｏｒ］［ｙ％Ｍ］によって取り出すことができる。
【００５４】
テーブル形式Ｆが２である場合、Ｓ６５において、パターンテーブルから２値のパターンを取得する。テーブルは「形式２」なので、パターンテーブルＰＴから取り出した２値のパターンを、シフトテーブルＳＴから取り出したシフト量でシフト処理を実施する。これは、パターンテーブルの列方向の大きさをＭとし、“＜＜”を左にｎビットシフトする演算子、“＞＞”を右にｎビットシフトする演算子、とした場合、以下の計算によって取り出すことができる。ただしシフト演算によって、もともと存在しない部分のビット位置の値は、全て値“０”になるものとする。
（ＰＴ［ｃｏｌｏｒ］［ｙ％Ｍ］＜＜（ＣＷ−ＳＴ［ｙ％Ｍ］））│（ＰＴ［ｃｏｌｏｒ］［ｙ％Ｍ］＞＞ＳＴ［ｙ％Ｍ］）
【００５５】
このようにして、パターンテーブルが２次元配列で構成されている場合に、指定されたｙ座標および色の値ｃｏｌｏｒに対応する１ワードの２値のパターンを生成して、ビットマップメモリ展開部２２に返すことができる。
【００５６】
図１８は、パターンデータ生成部１４における処理ＦＵＮＣ２の動作の一例を示すフローチャートである。Ｓ７１において、エッジのｙ座標、色の値ｃｏｌｏｒ、及び、描画点のワード位置ｗを得る。またＳ７２において、パターンテーブルのテーブル形式Ｆを得る。テーブル形式Ｆの値は、図１７と同様である。
【００５７】
Ｓ７３において、テーブル形式Ｆが１であるか２であるか検査する。テーブル形式Ｆが１である場合、Ｓ７４において、パターンテーブルから２値のパターンを取得する。テーブルは「形式１」なので、パターンテーブルをＰＴ、テーブルの列方向の大きさをＭ、行方向のワード数をＮＷとし、“％”を除算の剰余とする演算子とした場合、ＰＴ［ｃｏｌｏｒ］［ｙ％Ｍ］［ｗ％ＮＷ］によって取り出すことができる。
【００５８】
テーブル形式Ｆが２である場合、テーブルは「形式２」なので、Ｓ７５において、パターンテーブルから２値のパターンを取得するとともに、シフトテーブルからシフト量を取得する。そして、パターンテーブルＰＴから取り出したパターンを、シフトテーブルＳＴから取り出したシフト量でシフト処理を実施する。これは、テーブルの列方向の大きさをＭとし、行方向のワード数をＮＷとした場合、描画点のワード位置ｗの存在する、パターンテーブルの行方向のインデックスｗ１と、その一つ左に位置するインデックスｗ２を、以下の計算で求める。
ｗ１＝ｗ％ＮＷ
ｗ２＝（ｗ１＋ＮＷ−１）％ＮＷ
このインデックス値は、シフト演算によって足りなくなるビット位置の値を取得するために、隣り合う２つの２値のパターンを取り出すために使用される。この２つの行方向のインデックスから、目的とする場所の２値パターンは、以下の計算によって求めることができる。
（ＰＴ［ｃｏｌｏｒ］［ｙ％Ｍ］［ｗ２］＜＜（ＣＷ−ＳＴ［ｙ％Ｍ］））｜（ＰＴ［ｃｏｌｏｒ］［ｙ％Ｍ］［ｗ１］＞＞ＳＴ［ｙ％Ｍ］）
【００５９】
このようにして、パターンテーブルが３次元配列で構成されている場合に、指定されたｙ座標、色の値ｃｏｌｏｒ、描画点のワード位置ｗに対応する１ワードの２値のパターンを生成して、ビットマップメモリ展開部２２に返すことができる。
【００６０】
【発明の効果】
以上の説明から明らかなように、本発明によれば、色及び座標から構成される図形のエッジ情報をディザ処理して２値のビットマップメモリに展開するにあたり、自由なスクリーン角度を設定することができ、かつ、高速に処理することが可能となるという効果がある。
【図面の簡単な説明】
【図１】  本発明の画像処理装置の実施の一形態を示すブロック図である。
【図２】  エッジ情報の説明図である。
【図３】  ディザマトリクスの一形態の説明図である。
【図４】  画像中における閾値配列の一例の説明図である。
【図５】  基本閾値マトリクスの指定データ形式の一例の説明図である。
【図６】  基本閾値マトリクスの画像への配置態様の一例の説明図である。
【図７】  マトリクス変換部による変換後の閾値マトリクスの一例の説明図である。
【図８】  マトリクス変換部による変換後の閾値マトリクスの別の例の説明図である。
【図９】  パターンテーブルのデータ形式の一例の説明図である。
【図１０】  ディザマトリクスの別の形態の説明図である。
【図１１】  パターンテーブルに格納される２値のパターンの一例の説明図である。
【図１２】  パターンテーブルのデータ形式の別の例の説明図である。
【図１３】  シフトテーブルの具体例の説明図である。
【図１４】  ビットマップメモリ展開部２２の処理の一例を示すフローチャートである。
【図１５】  ビットマップメモリ展開部２２の処理の一例を示すフローチャート（続き）である。
【図１６】  ビットマップメモリ展開部２２の処理の一例を示すフローチャート（続き）である。
【図１７】  パターンデータ生成部１４における処理ＦＵＮＣ１の動作の一例を示すフローチャートである。
【図１８】  パターンデータ生成部１４における処理ＦＵＮＣ２の動作の一例を示すフローチャートである。
【符号の説明】
１…テーブル管理部、２…２値画像変換部、３…パターンテーブル格納部、４…ビットマップメモリ、１１…ディザマトリクス指定部、１２…ディザマトリクス変換部、１３…パターンテーブル生成部、１４…パターンデータ生成部、２１…エッジ情報入力部、２２…ビットマップメモリ展開部。
【図１】
0003829908.tif 000002
【図２】
0003829908.tif 000003
【図３】
0003829908.tif 000004
【図４】
0003829908.tif 000005
【図５】
0003829908.tif 000006
【図６】
0003829908.tif 000007
【図７】
0003829908.tif 000008
【図８】
0003829908.tif 000009
【図９】
0003829908.tif 000010
【図１０】
0003829908.tif 000011
【図１１】
0003829908.tif 000012
【図１２】
0003829908.tif 000013
【図１３】
0003829908.tif 000014
【図１４】
0003829908.tif 000015
【図１５】
0003829908.tif 000016
【図１６】
0003829908.tif 000017
【図１７】
0003829908.tif 000018
【図１８】
0003829908.tif 000019