(57)【特許請求の範囲】
【請求項１】
描画の対象となる描画データから外形を表すベクターデータを生成するベクターデータ生成手段と、
前記ベクターデータ生成手段により生成されたベクターデータをライン毎に走査する走査手段と、
前記走査手段により走査された各ラインに含まれるベクターデータの辺の種類を認識する認識手段と、
前記認識手段により認識された辺の種類が同一となるライン毎に閉領域情報を出力する出力手段とを備えており、
前記出力手段は、前記描画データの送信元から前記閉領域情報の取得要求があった場合に前記閉領域情報を出力する
ことを特徴とする画像処理装置。
【請求項２】
前記描画データは、ページ記述言語から成る
ことを特徴とする請求項１記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外形を表すベクターデータから閉領域を求めて出力する画像処理装置に関する。
【０００２】
【従来の技術】
デスクトップ・パブリッシング（ＤＴＰ）等における画像処理では、ＰｏｓｔＳｃｒｉｐｔ（Ａｄｏｂｅ社）等の比較的高機能なページ記述言語（ＰＤＬ）を用いる場合、ユーザがクリップ領域を任意に設定することができ、自由度の高い訴求力のあるドキュメントを作成することができる。
【０００３】
一方、システム内ではクリップ領域と描画図形の内外判定が複雑になり、処理に時間がかかるようになってきている。また、クリップが複数重なる場合、ＰｏｓｔＳｃｒｉｐｔの言語仕様では重なった領域が新たなクリップ領域（以下、多重クリップと言う。）となるが、この重なり領域を求めることも複雑な処理を必要とする。
【０００４】
特開平７−２９６１７２号公報においては、クリップを構成するベクトル（辺）情報をもとにベクトル同士の交点を求め、多重クリップの新たなベクトル情報を算出している。
【０００５】
また、特開平１０−７９０３８号公報では、図形描画用のエッジリストと、更にクリップ処理用の専用のクリップエッジリストとを備え、多重クリップの処理に対応している。この技術では、スキャンラインでクリップ領域を求める場合、単純な処理ループから成るソフトウェアを実装でき、多重クリップの領域もクリップ図形の複雑度にあまり依存せず、比較的シンプルな処理で求めることができる。
【０００６】
【発明が解決しようとする課題】
しかしながら、ＰｏｓｔＳｃｒｉｐｔ等のページ記述言語では、システムが保持しているクリップ図形情報をユーザに返すクリップパスオペレータがある。特開平７−２９６１７２号公報に開示される技術のように、ベクトル計算によってクリップ図形情報を保持していると、多重クリップの場合にはベクトル同士の交点計算など非常に複雑な処理が必要となる。
【０００７】
また、特開平１０−７９０３８号公報に開示される技術では、クリップ領域の情報をスキャンライン毎に開始座標と終了座標の組で保持していることから、クリップパスオペレータに対応しようとすると、多重クリップに係わる全てのラインの情報をユーザに返すことになり、非常に多くの情報量を取り扱うことになる。
【０００８】
【課題を解決するための手段】
本発明はこのような課題を解決するために成された画像処理装置である。すなわち、本発明の画像処理装置は、描画の対象となる描画データから外形を表すベクターデータを生成するベクターデータ生成手段と、ベクターデータ生成手段により生成されたベクターデータをライン毎に走査する走査手段と、走査手段により走査された各ラインに含まれるベクターデータの辺の種類を認識する認識手段と、認識手段により認識された辺の種類が同一となるライン毎に閉領域情報を出力する出力手段とを備えており、描画データの送信元から閉領域情報の取得要求があった場合に出力手段によって閉領域情報を出力するものである。
【０００９】
このような本発明では、走査手段による走査された各ラインに含まれるベクターデータの辺の種類を認識手段で認識し、その認識の結果、辺の種類が同一となるライン毎に閉領域として出力手段から閉領域情報を出力していることから、走査による簡単な処理でベクターデータの辺の種類を認識できるとともに、その辺の種類に基づき、まとまった閉領域に関する情報を出力することができる。すなわち、簡単かつ少ない情報量で領域に関する情報を出力できるようになる。
【００１０】
【発明の実施の形態】
以下、本発明の画像処理装置における実施の形態を図に基づいて説明する。図１は本実施形態における画像処理装置を説明する構成図で、（ａ）は全体構成図、（ｂ）はクリップパス生成部の内部構成図である。
【００１１】
すなわち、図１（ａ）に示すように、本実施形態の画像処理装置は、描画データ入出力部１、コマンド制御部２、描画データ判定部３、描画データ生成・記憶部４、クリップデータ生成・記憶部５、塗りつぶし・クリップ処理部６、出力部７およびクリップパス生成部８から構成される。
【００１２】
描画データ入出力部１は、クライアントなどの上位装置から送られる描画データを受信したり、上位装置で描画データを要求する場合にはその描画データを格納し、出力する。
【００１３】
コマンド制御部２は、上位装置からコマンドを受け付けて必要なモジュールに制御命令を送る部分である。
【００１４】
描画データ判定部３は、コマンドとデータとから処理すべき対象が塗りつぶしかクリップかを判定している。
【００１５】
描画データ生成・記憶部４は、描画データをベクターデータからスキャンラインに交差する座標データに変換し、その座標データを記憶する処理を行う。
【００１６】
クリップデータ生成・記憶部５は、クリップデータをベクターデータからスキャンラインに交差する座標データに変換し、その座標データを記憶する処理を行う。
【００１７】
塗りつぶし・クリップ処理部６は、描画データにクリップ領域を重ね合わせクリップ内部の描画データを塗りつぶしデータとして出力部７に出力する。出力部７は、塗りつぶしデータやクリップデータを出力する。
【００１８】
クリップパス生成部８は、クリップデータ生成・記憶部５に格納されているクリップ座標データから閉領域を構築し、描画データ入出力部１に格納する処理を行う。
【００１９】
また、図１（ｂ）に示すように、クリップパス生成部８は、描画データから外形を表すベクターデータを生成するベクターデータ生成部８１、ベクターデータをライン毎に走査する走査手段８２、走査された各ラインに含まれるベクターデータの辺の種類等を認識する認識手段８３、認識された辺の種類等が同一となるライン毎に閉領域情報を出力する閉領域出力手段８４を備えている。
【００２０】
なお、このクリップパス生成部８を構成するベクターデータ生成部８１および走査手段８２は、描画データ生成・記憶部４やクリップデータ生成・記憶部５で適用されるモジュールと共通であってもよい。
【００２１】
このような画像処理装置では、パーソナルコンピュータやワークステーションなどのクライアントがネットワークを介して画像出力のためのページ記述言語（例えば、ＰｏｓｔＳｃｒｉｐｔ）で記述されたコマンド・データを送信してきた場合、このコマンドをコマンド制御部２で受信し、データを描画データ入出力部１で受信する。
【００２２】
コマンド制御部２は受信したコマンドが描画に関連するコマンドか、クリップに関連するコマンドか、その他のコマンドかを判別し、描画やクリップに関連するコマンドは描画データ判定部３に通知する。
【００２３】
描画データ判定部３は、受信したコマンドのうち描画に関するコマンドと、そのコマンドに対応し描画データに格納されているベクターデータを描画データ生成・記憶部４に通知し、クリップに関連するコマンドと、そのコマンドに対応し描画データに格納されているベクターデータをクリップデータ生成・記憶部５に通知する。
【００２４】
描画データ生成・記憶部４は、描画しようとする図形の外形を表現するベクターデータを例えばＤＤＡ（Digital Differential Analyzer ）等を用いてスキャンラインと交差する座標データを求め、例えばエッジリストのような座標メモリ格納部に１スキャンライン上にある全ての座標データが取り出せるような形で格納する。
【００２５】
図２はエッジリストを説明する図である。すなわち、エッジリストは描画図形の外形を構成する全てのベクターデータからＤＤＡで求めた座標データをスキャンラインに対応して格納している。エッジリストの各行（ｙ座標）はスキャンラインの各ラインに対応しており、ＤＤＡで生成した座標データはスキャンラインの行に対応する列（ｘ方向）に順次格納される。
【００２６】
列の決定は、各行に現在格納されている座標データの個数を示すカウンタを設け、初期値をゼロに設定し、一つ座標データを格納する毎に対応する行のカウンタを繰り上げる。このカウンタ値を参照することにより、格納すべき列が決定される。
【００２７】
このようにして図形の外形を囲む座標データを全て求めるが、この時点では各ベクターから生成された座標データは、ＤＤＡをかけるベクターの順番によって例えば左詰めに格納されるので、あるスキャンラインにおける座標データの順番は値の大きさ順に並んでいるとは限らない。また、あるスキャンラインにおける塗りつぶし領域もまだ決まっていない。
【００２８】
そこで、座標データの並べ替えや傾き情報の参照により、スキャンラインにおける塗りつぶし領域を決定する。この塗りつぶし領域の決定について図３および図４を用いて具体的に説明する。
【００２９】
図３（ａ）に示すように、この例では、星型の図形を奇遇則（even-odd winding rule ）による塗りつぶし規則で塗りつぶししている。なお、塗りつぶし規則としては、他に非ゼロ規則（non-zero winding rule ）がある。
【００３０】
また、図３（ａ）に示す星型の図形では、▲１▼→▲２▼→▲３▼→▲４▼→▲５▼の順番でベクトル線分（以下、パスと呼ぶ。）を引いている。このパスにおいて▲１▼から▲５▼の順番にＤＤＡをかけて始点から終点に至るまでの各スキャンラインにおける座標データ（交点の座標データ）を生成し、エッジリストの対応する行・列に順に格納する。
【００３１】
例えば、スキャンラインＹm と各パスとの交差する座標データとしては、パス▲１▼についてＸm0、パス▲２▼についてＸm1、パス▲４▼についてＸm2、パス▲５▼についてＸm3が格納される。
【００３２】
各座標データを格納するにあたり、元のパスの持つ傾き情報が分かるようにしておく。具体的には、座標データを格納するメモリのビットを幾つか割り振る、あるいは別にテーブルを用意して各座標データに対応する元のパスの傾き情報を格納する。
【００３３】
このように▲１▼〜▲５▼の各パスについてＤＤＡ処理を終えた状態で、スキャンラインＹm （ｍは１〜ｎの自然数）における座標データの格納状態は図４のようになる。そして、この座標データを各行毎、例えば小さい順に並び替える。
【００３４】
次に、これら座標データが持つ傾き情報と塗りつぶし規則（ここでは奇遇則）を基に描画図形の内部を判定する。具体的には、例えば正の傾きには＋１、負の傾きには−１を与える。すなわち、図３（ｂ）のパターン１に示すように、パスの矢印の方向（ベクトル方向）に向けてｙ座標値が大きくなるものを正の傾き、パターン２に示すように、パスの矢印の方向（ベクトル方向）に向けてｙ座標値が小さくなるものを負の傾きとし、この正の傾きに＋１、負の傾きに−１を与える。
【００３５】
そして、各行の並び替えた座標データに対応する傾き情報をゼロを初期値にして左から累積する。図３（ａ）のスキャンラインＹm では、座標データがＸm3、Ｘm1、Ｘm2、Ｘm0の順に並べ替えられ、傾き情報としては、Ｘm3に正の傾き（＋１）、Ｘm1に正の傾き（＋１）、Ｘm2に負の傾き（−１）、Ｘm0に負の傾き（−１）が付与されている。この傾き情報に対応する値をゼロを初期値に左から累積すると、０→１→２→１→０となる。
【００３６】
この数が奇遇則では奇数の区間が塗りつぶし領域であり、非ゼロ規則ではゼロ以外の区間が塗り潰し領域である。つまり、奇遇則では、Ｘm3からＸm1の区間が塗りつぶし領域、Ｘm1からＸm2の区間が塗りつぶさない領域、Ｘm2からＸm0の区間が塗りつぶし領域となる。
【００３７】
この作業を描画領域のスキャンライン全てに対して行い、実際の描画領域を決定し、出力部７（図１参照）へ送って画像を形成することになる。
【００３８】
一方、塗りつぶし領域の任意の形状でマスク処理するためのクリッピング処理を実現するため、本実施形態の画像処理装置では図１に示すクリップデータ生成・記憶部５でこの処理を行っている。
【００３９】
すなわち、クリップデータ生成・記憶部５は、描画データ判定部３からクリップ処理に関連するデータを受け取ると、クリップが単一の場合には例えば描画データ生成・記憶部４での処理のようにＤＤＡを用いてクリップ図形の外形を構成するパスからスキャンラインに交差する座標データを算出し、エッジリストに算出した座標データをスキャンラインに対応した状態で格納する。そして、座標データの並べ替えを行い、塗りつぶし領域の判定と同様、クリップ領域の内部を求め、スキャンライン毎のクリップ領域を求める。
【００４０】
また、後述するクリップパスオペレータに対応するため、描画データ入出力部１から得たクリップのパスデータを保持する。このパスデータは上位装置からクリップ解除を指示するコマンドなどを受けた時点でクリアし、それまでは保持している。
【００４１】
また、クリップデータ生成・記憶部５は、保持しているクリップ座標データが単一のクリップにより生成されたものか、複数のクリップから生成されたものかを判別する仕組みを持つ。例えば、メモリ空間にｍｕｌｔｉ＿ｃｌｉｐという名前の論理値（ＴＲＵＥかＦＡＬＳＥ）を持つグローバルな変数として保持する。この変数は、例えばシステムの立ち上げ直後などの初期化時にはＦＡＬＳＥであり、１つめのクリップコマンドを受けた時点でもＦＡＬＳＥである。次に、クリップが複数ある状態になるとＴＲＵＥになる。
【００４２】
クリップが複数の場合、すなわち多重クリップの場合は、塗りつぶし領域のときに用いた傾き情報の累積による図形の内部判定ではなく、別の手法を用いる。この手法を具体的に説明する。なお、ここでは図５に示すように、三角形から成るクリップＡとクリップＢとが重なって、多重クリップを構成する場合を例とする。
【００４３】
先ず、クリップＡとクリップＢとが重なっている場合、各々のクリップ図形のパスから座標データを求めるときに、それぞれのクリップを区別するためのクリップＩＤ（この例ではクリップＡに対応してａ、クリップＢに対応してｂ）を座標データに付加する。そして、大小比較して小さい順に並べ替えられた座標データを、クリップの数だけ行数を持つwinding table を用意し（この場合は２行）、１つの行には対応するクリップＩＤの座標データを格納し、その列にある他の行のセルには例えば同一行の左側の座標データを格納する。
【００４４】
例えば、図６に示すように、スキャンラインＹn における座標データは４つであり、小さい順に、Ｘbn1 、Ｘan1 、Ｘan2 、Ｘbn2 となる。また、クリップＡのwinding table には、２番目のセルにＸan1 、３番目のセルにＸan2 が入り、クリップＢのwinding table には、１番目のセルにＸbn1 、４番目のセルにＸbn2 が入る。
【００４５】
次に、winding table と同じ行列を持つflag tableを用意し、flag tableの各セルにはwinding table の対応する各セルの座標データに付加されている傾き情報（↑は正の傾き、↓は負の傾きを示す）から各行（各クリップＩＤ毎）の図形内部状態を求め、内部の区間には例えば１というフラグを立てる。
【００４６】
そして、このflag tableの各ＩＤの内部情報から全ＩＤのクリップの内部になっている領域を求める。図６では、クリップＡとクリップＢの２つのクリップにおけるスキャンラインＹn 上の重なり領域〔Ｘan1 ，Ｘan2 〕が求められている。この作業を全てのスキャンラインで繰り返し、多重クリップの内部領域を求めるようにしている。
【００４７】
このようにして求めた、描画データ生成・記憶部４に格納されている描画データと、クリップデータ生成・記憶部５に格納されているクリップデータは塗りつぶし・クリップ処理部６へ送られ、同一スキャンラインにおける両データから、クリップ処理を施した１スキャンライン上の実際の描画データが求められる。そして、こうした描画データは１ラインずつ出力部７へ送られ、全体の画像データとして形成される。
【００４８】
本実施形態の画像処理装置では、上記説明したような出力部７への画像出力動作のほかに、例えばＰｏｓｔＳｃｒｉｐｔの言語仕様にあるクリップパスオペレータにも対応している。このクリップパスオペレータとは、画像処理装置内で保持しているクリップ情報をパス形式で上位装置に返す動作のことを言う。
【００４９】
以下、クリップパスオペレータの動作について説明する。先ず、図１に示すコマンド制御部２が上位装置からクリップパスに関連するコマンドを受け取ると、コマンド制御部２はクリップパス生成部８にその旨を通知する。
【００５０】
次に、クリップパス生成部８は、クリップデータ生成・記憶部５に格納されている上述したｍｕｌｔｉ＿ｃｌｉｐ変数を参照し、単一のクリップか多重クリップかどうかの判別を行う。単一のクリップパスについては、クリップデータ生成・記憶部５が保持しているクリップのパスデータをクリップパス生成部８がそのまま描画データ入出力部１に書き込む。
【００５１】
一方、多重クリップの場合、クリップパス生成部８はクリップデータ生成・記憶部５で保持しているクリップエッジリスト中の座標データをもとに幾つかの閉領域から成るパスを構成してそのパスデータを描画データ入出力部１に書き込む。
【００５２】
ここで、多重クリップの場合のパス構成について説明する。図７は多重クリップのクリップエッジリストの一例を示す図、図８は多重クリップの閉領域判定を説明する図である。なお、この説明では、多重クリップが図８左図に示すような５角形の任意形状となっている場合を例とする。
【００５３】
図７に示すクリップエッジリストは、多重クリップ図形を構成する座標データを格納しているもので、クリップデータ生成・記憶部５（図１参照）に記憶されている。このクリップエッジリストに格納されている座標データには、その座標データを生成するときに基になったクリップベクターのベクターＩＤ（辺の種類）が付加されている。
【００５４】
例えば、Ｙa ラインに格納されている１つ目の座標データＸa1にはベクターＩＤ（v1）が付加されている。これは、座標データＸa1がベクターv1から生成されたものであることを示している。
【００５５】
クリップパス生成部８は、このクリップエッジリストをスキャンラインの例えば小さい順に１ラインずつ、座標データとその座標データに付加されたベクターＩＤとを調べて多重クリップを構成する閉領域のパスを構築する。
【００５６】
具体的には、図７に示すＹ0 ラインから１ラインずつＹラインまで（図中上方向に）格納されている座標データとベクターＩＤとを、認識手段８３（図１（ｂ）参照）によって調べる。
【００５７】
図７に示す例では、Ｙ0 ラインからＹa ラインの直前までは座標データが無いのでパスは構成されない。また、Ｙa ラインでは座標データが２個あるのでＹa ラインがパスを構成するためのスキャンラインの開始ラインとなる。この開始ラインは、ｓｔａｒｔ＿ｐａｔｈ＿ｌｉｎｅという名前の変数に記憶される。
【００５８】
認識手段８３は、次のＹa'ラインの座標データおよびベクターＩＤを参照し、前のＹa ラインの座標データおよびベクターＩＤと比較する。この比較では、Ｙa ラインもＹa'ラインも座標データの個数およびベクターＩＤの両方が一致している。このため、認識手段８３は、Ｙa ラインの座標データとＹa'ラインの座標データとが一つの連続したパスを構築するものと判断する。
【００５９】
同様に１ラインずつスキャンラインの座標データの個数およびベクターＩＤを比較していく。ここで、Ｙb ラインに格納されている座標データの個数が４個で、それまでの２個とは異なっている。つまり、Ｙb ラインはそれまでのパスの構築の条件に合わないことになる。よって、認識手段８３は、に記憶されているライン（ここではＹa ライン）からＹb ラインの直前のラインＹb'ラインまでを一つの連続したパスであると認識する。
【００６０】
具体的には、このＹa ラインとＹb'ラインとに格納されている座標データＸa1、Ｘa2、Ｘb'1 、Ｘb'2 の４つの座標データから例えば以下のようなパスを構築する（ＰｏｓｔＳｃｒｉｐｔの場合）。
【００６１】
Ｘa1  Ｙa   ｍｏｖｅｔｏ
Ｘb'1   Ｙb'  ｌｉｎｅｔｏ
Ｘb'2   Ｙb'  ｌｉｎｅｔｏ
Ｘa2  Ｙa   ｌｉｎｅｔｏ
ｃｌｏｓｅｐａｔｈ
【００６２】
次に、認識手段８３は、ｓｔａｒｔ＿ｐａｔｈ＿ｌｉｎｅにＹb ラインを記憶し、再びスキャンラインのチェックをＹb ラインから行う。図７の例では、Ｙc ラインで座標データの個数が２個になることから、それまでの４個と異なることになり、ｓｔａｒｔ＿ｐａｔｈ＿ｌｉｎｅに記憶されたＹb ラインからＹc ラインの直前のＹc'ラインまでを一つの連続したパスであると認識する。
【００６３】
ここでは、Ｙb ラインに格納されている座標データＸb1、Ｘb2、Ｘb3、Ｘb4とＹc'ラインに格納さている座標データＸc'1 、Ｘc'2 、Ｘc'3 、Ｘc'4 との８個の座標データから例えば以下のようなパスを構築する（ＰｏｓｔＳｃｒｉｐｔの場合）。
【００６４】
Ｘb1  Ｙb   ｍｏｖｅｔｏ
Ｘc'1   Ｙc'  ｌｉｎｅｔｏ
Ｘc'2   Ｙc'  ｌｉｎｅｔｏ
Ｘb2  Ｙb ｌｉｎｅｔｏ
ｃｌｏｓｅｐａｔｈ
Ｘb3  Ｙb   ｍｏｖｅｔｏ
Ｘc'3   Ｙc'  ｌｉｎｅｔｏ
Ｘc'4   Ｙc'  ｌｉｎｅｔｏ
Ｘb4  Ｙb ｌｉｎｅｔｏ
ｃｌｏｓｅｐａｔｈ
【００６５】
再び、認識手段８３は、ｓｔａｒｔ＿ｐａｔｈ＿ｌｉｎｅにＹc ラインを記憶し、再びスキャンラインのチェックをＹc ラインから行う。図７の例では、Ｙd ラインで座標データの個数は同じく２個であるが、座標データに付加されているベクターＩＤがＹc ラインではv1,v4 であるのに対し、Ｙd ラインではv1,v5 となり、それまでのベクターＩＤと異なることになる。そこで、認識手段８３は、ｓｔａｒｔ＿ｐａｔｈ＿ｌｉｎｅに記憶されたＹc ラインからＹd ラインの直前のＹd'ラインまでを一つの連続したパスであると認識する。
【００６６】
ここでは、Ｙc ラインに格納されている座標データＸc1、Ｘc2とＹd'ラインに格納さている座標データＸd'1 、Ｘd'2 との４個の座標データから例えば以下のようなパスを構築する（ＰｏｓｔＳｃｒｉｐｔの場合）。
【００６７】
Ｘc1  Ｙc   ｍｏｖｅｔｏ
Ｘd'1   Ｙd'  ｌｉｎｅｔｏ
Ｘd'2   Ｙd'  ｌｉｎｅｔｏ
Ｘc2  Ｙc   ｌｉｎｅｔｏ
ｃｌｏｓｅｐａｔｈ
【００６８】
再び、認識手段８３は、ｓｔａｒｔ＿ｐａｔｈ＿ｌｉｎｅにＹd ラインを記憶し、再びスキャンラインのチェックをＹd ラインから行う。図７の例では、Ｙe ラインの次のラインで座標データの個数が０個になり、それまでの座標データの個数と異なることになる。そこで、認識手段８３は、ｓｔａｒｔ＿ｐａｔｈ＿ｌｉｎｅに記憶されたＹd ラインからＹe ラインまでを一つの連続したパスであると認識する。
【００６９】
ここでは、Ｙd ラインに格納されている座標データＸd1、Ｘd2とＹe ラインに格納さている座標データＸe1、Ｘe2との４個の座標データから例えば以下のようなパスを構築する（ＰｏｓｔＳｃｒｉｐｔの場合）。
【００７０】
Ｘd1  Ｙd   ｍｏｖｅｔｏ
Ｘe1  Ｙe   ｌｉｎｅｔｏ
Ｘe2  Ｙe   ｌｉｎｅｔｏ
Ｘd2  Ｙd   ｌｉｎｅｔｏ
ｃｌｏｓｅｐａｔｈ
【００７１】
このような作業により、図８右図に示すような５つのパスで表現された閉領域として多重クリップを表現できるようになる。認識手段８３が認識したこの５つのパスは閉領域出力手段８４（図１（ｂ）参照）から描画データ入出力部１（図１参照）に書き込まれ、上位装置へ送られることになる。
【００７２】
すなわち、多重クリップを各ライン毎の座標データで表した場合でも、各ライン毎のデータとして上位装置へ送ることなく、少ない閉領域情報として送ることが可能となる。
【００７３】
なお、上記実施形態では、各スキャンラインに対応して格納された座標データの個数およびベクターＩＤの両方が同じ場合に一つの連続したパスを構築する例を説明したが、各スキャンラインにおいてベクターＩＤのみを比較し、ベクターＩＤが同じ場合に一つの連続したパスを構築するようにしてもよい。
【００７４】
【発明の効果】
以上説明したように、本発明の画像処理装置によれば次のような効果がある。すなわち、走査手段による走査で簡単に各ラインに含まれるベクターデータの辺の種類を求めることができるとともに、認識手段によってまとまった閉領域を認識することができ、簡単な処理かつ少ない情報量で閉領域に関する情報を上位装置等へ出力することが可能となる。
【図面の簡単な説明】
【図１】  本実施形態における画像処理装置を説明する構成図である。
【図２】  エッジリストを説明する図である。
【図３】  奇遇則による塗りつぶしを説明する図である。
【図４】  座標データの格納状態を説明する図である。
【図５】  多重クリップの一例を示す図である。
【図６】  多重クリップの判定を説明する図である。
【図７】  多重クリップのクリップエッジリストの一例を示す図である。
【図８】  多重クリップの閉領域判定を説明する図である。
【符号の説明】
１…描画データ入出力部、２…コマンド制御部、３…描画データ判定部、４…描画データ生成・記憶部、５…クリップデータ生成・記憶部、６…塗りつぶし・クリップ処理部、７…出力部、８…クリップパス生成部、８１…ベクターデータ生成部、８２…走査手段、８３…認識手段、８４…閉領域出力手段
【図１】
0003791203.tif 000002
【図２】
0003791203.tif 000003
【図３】
0003791203.tif 000004
【図４】
0003791203.tif 000005
【図５】
0003791203.tif 000006
【図６】
0003791203.tif 000007
【図７】
0003791203.tif 000008
【図８】
0003791203.tif 000009