(57)【特許請求の範囲】
【請求項１】
複数のベクトルデータで構成された輪郭線で規定された閉領域の内部もしくは外部領域をシードペイント手法を用いて塗りつぶし処理する画像処理方法において、前記ベクトルデータに基づいて輪郭線を構成する各点の座標データを算出し、算出された各点の座標データに従って輪郭線をビットマップメモリに描画し、描画すべき点の座標データが、既に描画されている他の輪郭線を構成する点の座標データと一致した場合には、当該座標データを一致座標メモリに記憶し、塗りつぶし処理に際しては、輪郭線の各ベクトル上の点の座標データが、前記一致座標メモリに記憶されているか否かをチェックし、記憶されていないときは、当該点の、前記ベクトルの方向に対して予め設定された左右何れか側に隣接する点を決め、その点を塗りつぶし開始点として前記輪郭線に囲まれた閉領域を塗りつぶし処理し、記憶されているときは、当該点に基づいた塗りつぶし処理を行わずに、輪郭線の別のベクトル上の点に関して、その座標データが前記同様に前記一致座標メモリに記憶されているか否かをチェックするように構成したことを特徴とする画像処理方法。
【請求項２】
ビットマップメモリ上で、複数のベクトルデータで構成された輪郭線で規定された閉領域の内部もしくは外部領域をシードペイント手法を用いて塗りつぶし処理する画像処理装置において、前記ベクトルデータに基づいて輪郭線をビットマップメモリ上に描画する輪郭線描画手段と、描画する輪郭線上の点が既に描画されている他の輪郭線と重なるか否かをチェックするチェック手段と、描画する輪郭線上の点が既に描画されている他の輪郭線と重なる場合に、重なる点の座標データを記憶する一致座標記憶手段と、輪郭線の各ベクトル上の点の座標データが、前記一致座標記憶手段に記憶されているか否かをチェックし、記憶されていないときは、当該点の、前記ベクトルの方向に対して予め設定された左右何れか側に、隣接する点の座標データを、塗りつぶし開始点座標データとして、その点を塗りつぶし開始点として輪郭線に囲まれた閉領域を塗りつぶし処理し、記憶されているときは、当該点に基づいた塗りつぶし処理を行わずに、輪郭線の別のベクトル上の点の座標データに関して、前記同様に前記一致座標メモリに記憶されているか否かをチェックするように処理する塗りつぶし処理手段と、を備えていることを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、ディスプレイ装置の画面上に描いた図形を塗りつぶすための処理方法と装置に関するものである。
【０００２】
【従来の技術】
従来より、マリンプロッター等のように海図を画面上に表示する場合には、海岸線を境として陸地の部分あるいは海の部分を特定色に塗りつぶすことが行われている。このような場合の塗りつぶしの手法としては種々の方式が存在するが、海図の場合、海岸線は常に交わることがなく、塗りつぶすべき閉領域の特定が比較的容易であることからシードペイント手法が用いられることが多い。
【０００３】
このシードペイント手法は、輪郭線（海岸線）を描画し、輪郭線に囲まれた塗りつぶすべき閉領域の内部の点を与えることで、その点を塗りつぶし開始点（シードポイント）として、周知のベーシックフィルアルゴリズム等の手法を用いて、その閉領域を全て塗りつぶす方式である。
【０００４】
ここで、従来のシードペイント手法を用いた海図の塗りつぶし方法を説明する。
まず、図５のような海岸線データが入力される。この海岸線データは、複数のベクトルからなるデータであり、各ベクトルは始点と終点を示す座標データとして表されている。
【０００５】
次に、入力されたベクトルデータから海岸線を構成する点の座標をＤＤＡ（ディジタル・ディファレンシャル・アナライザ）等を用いて算出し、海岸線のイメージをビットマップメモリに描画する。このＤＤＡは描画すべき直線の始点と終点との座標差から、直線を構成する点の座標を生成する周知の手段である。
【０００６】
全ての海岸線が描画されると塗りつぶし処理を開始する。この場合、上述したシードペイント手法を用いるため、塗りつぶすべき閉領域の内部の１点をシードポイントとして指定してやればよい。
ここで、海岸線は交わることはなく、また、通常、ベクトルの方向に対して必ず何れかの側が陸地あるいは海になるように海岸線データが設定されているため、図５のＡのような場合においては、海岸線のベクトル方向に対して例えば右隣の１点のみを適当に算出して、その点をシードポイントとして塗りつぶしを行うことによって、塗りつぶし処理が完成する。
【０００７】
しかし、図５のＢやＣのように、塗りつぶすべき閉領域が２箇所以上の場合があるため、通常は各ベクトル毎にそのベクトル上の特定の点（例えば中点）を抽出し、その点の例えば右隣の点をシードポイントとして順に算出し、塗りつぶしを行うようにしている。
この場合、２回目以降は、既に塗りつぶしが完了している可能性があるので、算出したシードポイントが既にビットマップメモリ上に描画されていないかを確認し、既に描画されている場合は塗りつぶし処理を行わずに次のベクトルの処理に移行する。
【０００８】
【発明が解決しようとする課題】
ところが、上述したような従来の画像処理方法は、上述したように、海岸線は交わることはないが、例えば、画面の縮小処理（図６のＡから図６のＢへの縮小処理）を行った場合、解像度の関係で、図６のＢにおいて点Ｐで示したように、海岸線が重なってしまう場合がある。
【０００９】
このような場合には、上述した方法で塗りつぶしを行うと、点Ｐのベクトル方向（下向き）に対して、例えば右隣である塗りつぶすべき閉領域外の点Ｑをシードポイントに指定してしまうため、誤った領域を塗りつぶしてしまうことになる。
そのため、上述した方法を用いて塗りつぶし処理を行う場合は、海岸線が重ならないように縮小率を制限する等の対策が必要になる。
【００１０】
従って、自由に縮小表示することができないという問題があったのである。
【００１１】
そこで、本発明は、表示すべき画面の縮小処理を行ったときに塗りつぶすべき図形の輪郭線が重なってしまうような場合においても、正しく塗りつぶし処理が行える技術の提供を目的としてなされたものである。
【００１２】
【課題を解決するための手段】
本発明の画像処理方法によれば、複数のベクトルデータで構成された輪郭線で規定された閉領域の内部もしくは外部領域をシードペイント手法を用いて塗りつぶし処理する画像処理方法において、前記ベクトルデータに基づいて輪郭線を構成する各点の座標データを算出し、算出された各点の座標データに従って輪郭線をビットマップメモリに描画し、描画すべき点の座標データが、既に描画されている他の輪郭線を構成する点の座標データと一致した場合には、当該座標データを一致座標メモリに記憶し、塗りつぶし処理に際しては、輪郭線の各ベクトル上の点の座標データが、前記一致座標メモリに記憶されているか否かをチェックし、記憶されていないときは、当該点の、前記ベクトルの方向に対して予め設定された左右何れか側に隣接する点を決め、その点を塗りつぶし開始点として前記輪郭線に囲まれた閉領域を塗りつぶし処理し、記憶されているときは、当該点に基づいた塗りつぶし処理を行わずに、輪郭線の別のベクトル上の点に関して、その座標データが前記同様に前記一致座標メモリに記憶されているか否かをチェックするように構成したものである。
【００１３】
本発明の画像処理装置によれば、ビットマップメモリ上で、複数のベクトルデータで構成された輪郭線で規定された閉領域の内部もしくは外部領域をシードペイント手法を用いて塗りつぶし処理する画像処理装置において、前記ベクトルデータに基づいて輪郭線をビットマップメモリ上に描画する輪郭線描画手段と、描画する輪郭線上の点が既に描画されている他の輪郭線と重なるか否かをチェックするチェック手段と、描画する輪郭線上の点が既に描画されている他の輪郭線と重なる場合に、重なる点の座標データを記憶する一致座標記憶手段と、輪郭線の各ベクトル上の点の座標データが、前記一致座標記憶手段に記憶されているか否かをチェックし、記憶されていないときは、当該点の、前記ベクトルの方向に対して予め設定された左右何れか側に、隣接する点の座標データを、塗りつぶし開始点座標データとして、その点を塗りつぶし開始点として輪郭線に囲まれた閉領域を塗りつぶし処理し、記憶されているときは、当該点に基づいた塗りつぶし処理を行わずに、輪郭線の別のベクトル上の点の座標データに関して、前記同様に前記一致座標メモリに記憶されているか否かをチェックするように処理する塗りつぶし処理手段と、を備えていることを特徴とするものである。
【００１４】
【発明の実施の形態】
以下に、本発明にかかる画像処理方法に用いる画像処理装置を、その実施の形態を示した図面に基づいて詳細に説明する。
【００１５】
図１は本発明にかかる画像処理装置のブロック構成図であり、ＣＰＵ１と、システムメモリ２と、第１のビットマップメモリ３と、第２のビットマップメモリ４と、表示コントローラー５と、表示器６とを備えている。なお、このとき、第１のビットマップメモリ３と第２のビットマップメモリ４とは連続したアドレス空間の中に設定された領域であって、第１のビットマップメモリ３のアドレスと、それに対応した第２のビットマップメモリ４のアドレスとは、一定の差となっている。以下においては、第１のビットマップメモリ３の領域をＭ面と呼び、第２のビットマップメモリ４の領域をＦ面と呼ぶ。
【００１６】
ＣＰＵ１は前記システムメモリ２に書き込まれたプログラムに従って画像処理装置全体を制御する。その制御とは、前記Ｍ面への輪郭線画像の書き込みとその塗りつぶし処理、また、Ｆ面への一致座標データの書き込み、また、前記表示コントローラー５による前記Ｍ面上のデータに基づいた表示器６への表示処理の制御等である。
【００１７】
図１の各構成を請求項２の構成と対応させると、ＣＰＵ１は、輪郭線描画手段とチェック手段と塗りつぶし処理手段に対応し、第１のビットマップメモリ３はビットマップメモリに対応し、第２のビットマップメモリ４は一致座標記憶手段に対応している。
【００１８】
上記構成の画像処理装置を用いて、図６のＡに示したような海岸線の図形を、図６のＢに示したように縮小して表示器６の画面に表示する場合を例にとって説明する。
なお、以下に例示して説明する実施の形態においては、海岸線を示す図形は次の規則を満足しているものとする。
（１）塗りつぶされる領域は、必ず海岸線で囲まれた閉領域であること。
（２）海岸線は複数のベクトルで構成され、そのベクトルの向きの左側が塗りつぶされるべき領域であること。
（３）海岸線は交差しないこと。
【００１９】
以下に、本発明の画像処理方法を図２，図３のフローチャートに基づいて説明する。
まず、ステップＳ１において、ＣＤ−ＲＯＭ等の外部記憶手段から海岸線を構成する複数のベクトルデータを取り込む。
ステップＳ２において、前記各ベクトルデータに基づいて、表示すべき海岸線を構成する各辺を構成する各点の座標データを算出し、
算出された各点の座標データに従って、図４のＡのように、前記Ｍ面に描画する。この処理は、座標データが示すビットマップメモリ上のアドレスのデータを、海岸線を示すデータ（以下、このデータを例えば「１」とする。）に書き換える処理である。このとき表示範囲からはみ出す部分に関しては表示範囲の境界線に置き替えて、強制的に閉領域とする。
【００２０】
ステップＳ３において、図４のＡのＰ１やＰ２のように、Ｍ面に描画しようとした点の位置に既に海岸線を構成する点が描画されていた場合、即ち、描画しようとした点の座標データが示すビットマップメモリ上のデータが、海岸線を示すデータ「１」であった場合には、図４のＢのように、Ｆ面の同じ位置にも点を描画する。この描画処理は、その座標データが示すＦ面上のデータを「１」とする処理である。このとき、処理対象のメモリをＭ面からＦ面へ切り替えるには、所定値の加算処理や所定の上位ビットを「１」とする等の処理だけで迅速に行える。
【００２１】
以上の処理を表示範囲の全てのベクトルデータに関して行う。
このようにして、表示範囲の全海岸線を、図４のＡに示すように、Ｍ面に描画する。このとき、図４のＡのＰ１やＰ２の位置に対応するＦ面には、図４のＢのように、重なり部分であることを示す点が描画されている。
【００２２】
そして、塗りつぶし処理に際しては、
先ず、最初のベクトルデータを読み込み、ステップＳ４において、その始点と終点の座標データに基づいて中点の座標データを算出する。
ステップＳ５において、前記中点の座標データに対応する、Ｆ面の座標データを算出し、その点に対応したアドレスのデータが「１」となっているか否かをチェックする。
【００２３】
「１」が書き込まれていなければステップＳ６に進み、「１」が書き込まれていればステップＳ７に進む。
ステップＳ６において、前記ベクトルの方向に対して左隣の点（以後、Ｄ点と呼ぶ。）の座標データを算出する。そして、Ｍ面のＤ点の座標データが示すアドレスのデータが「１」となっているか否かをチェックする。
【００２４】
「１」となっていれば、隣接する海岸線が存在するか、既に塗りつぶし処理されている領域であると判断できるので、塗りつぶし処理は行わずに、ステップＳ７に進んで、全てのベクトルデータの処理が完了するまで、次のベクトルデータを読み込み、ステップＳ４からの処理を繰り返す。このようにして、離れた閉領域であっても漏れることなく塗りつぶし処理が行われるのである。
【００２５】
Ｍ面のＤ点の座標データが示すアドレスのデータが「１」となっていなければ、ステップＳ８において、Ｄ点の座標データを塗りつぶし開始点座標データとして、ベーシックフィルアルゴリズム等のアルゴリズムに基づいて塗りつぶし処理を行う。
【００２６】
このようにして、図４のＡのように、海岸線が重なった部分があっても正しく塗りつぶし処理が行われるのである。
【００２７】
なお、描画された点を示すデータとして「１」を例示したが、実際には、所定のビットを立てるか否かによって描画された点か描画されていないかを示す。
また、ビットマップメモリは、表示コントローラーとＣＰＵ１との両方からアクセス可能なＶＲＡＭ上に配置してもよい。
また、ステップＳ４においては、ベクトルの中点の座標を算出したが、中点以外の点や、複数個の点の座標を用いてもよいことは当然である。
【００２８】
また、ステップＳ６におけるＤ点は、ベクトルの方向に対して右隣に設定してもよい。いずれにしても、海岸線を右まわりのベクトルで構成するか、左回りのベクトルで構成するかの違いや、海岸線の内側を塗りつぶすか外側を塗りつぶすかの違いによって、設定すればよい。
さらには、Ｍ面に描画しようとした点に既に海岸線を構成する点が描画されていた場合には、その点の座標データのみを列記したデータテーブルを、第２のビットマップメモリに代えてもよい。
【００２９】
【発明の効果】
以上のように、本発明の画像処理方法および装置によれば、輪郭線が重なる部分が存在しても、正しく塗りつぶし処理を行うことが可能となるので、海岸線等の表示を種々の縮尺で自由に表示することが可能になるのである。
【図面の簡単な説明】
【図１】本発明にかかる画像処理装置のブロック構成図である。
【図２】本発明にかかる画像処理方法の実施の形態のフローチャートである。
【図３】本発明にかかる画像処理方法の実施の形態のフローチャートである。
【図４】本発明にかかる画像処理方法による塗りつぶし処理の過程を説明する図である。
【図５】従来の画像処理方法による塗りつぶし処理を説明する図である。
【図６】従来の画像処理方法では不都合が生じる場合を説明する図である。
【符号の説明】
１  ＣＰＵ，（輪郭線描画手段，確認手段，塗りつぶし処理手段）
２  システムメモリ
３  第１のビットマップメモリ，Ｍ面，（ビットマップメモリ）
４  第２のビットマップメモリ，Ｆ面，（一致座標記憶手段）
５  表示コントローラー
６  表示器
【図１】
0003799164.tif 000002
【図２】
0003799164.tif 000003
【図３】
0003799164.tif 000004
【図４】
0003799164.tif 000005
【図５】
0003799164.tif 000006
【図６】
0003799164.tif 000007