JP2004341663A - 図形の線分近似処理方法 - Google Patents

図形の線分近似処理方法 Download PDF

Info

Publication number
JP2004341663A
JP2004341663A JP2003135323A JP2003135323A JP2004341663A JP 2004341663 A JP2004341663 A JP 2004341663A JP 2003135323 A JP2003135323 A JP 2003135323A JP 2003135323 A JP2003135323 A JP 2003135323A JP 2004341663 A JP2004341663 A JP 2004341663A
Authority
JP
Japan
Prior art keywords
line segment
point
sequence
partial
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2003135323A
Other languages
English (en)
Inventor
Katsuya Oikawa
克哉 及川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2003135323A priority Critical patent/JP2004341663A/ja
Publication of JP2004341663A publication Critical patent/JP2004341663A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

【課題】誤動作が少なく、かつ簡便で高速な線分近似方法を提供する。
【解決手段】線分近似のある階層に於いて近似した線分列を構成する線分に関してその線分の両端で挟まれた部分点列の各点から該線分への垂直方向の距離の該部分点列における最大値を求め、その値が所定閾値を越えた場合にはその最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成し、点から該線分への垂直方向の距離の該部分点列における最大値が所定閾値を越えなかった場合には、部分点列の各点から線分両端の頂点への該線分方向に沿った方向付きの距離の方向を比較し、その方向が同じ時には部分点列の各点から線分両端の頂点への線分方向の頂点への線分方向の距離の差の絶対値を求め、その線分方向の距離の差の絶対値の部分点列における最大値を求め、その最大値が所定閾値を越えた場合にはその最大
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は計算機を利用した計算機シミュレーション、画像評価、計測機において、計器機上に図形の形状を取り込み、処理をおこなうためのアルゴリズムに関する。
【0002】
【従来の技術】
従来、計算機シミュレーション、画像評価、計測機において計器機上に図形の形状を取り込み、図形の判定、認識、あるいは図形の加工をおこなうため、線図を複数の連続した線分の列で近似することが行われる。単に線図を扱うのみではなく、図形の形状を用いるため、輪郭線を抽出したり、細線化した後の線図形に対して処理を行う事もある。
【0003】
通常図形を計算機上で扱う場合には2次元に展開した点の集合として扱うが、元図形を構成する点の数が多い時には膨大な点データを直接扱うのは計算資源の負荷が大きく、計算時間も多大なものとなる。このとき曲線の線図や文字を細線化したり輪郭線を抽出したのち、複数の連続した線分の列即ち折れ線に近似し、この近似線分列を用いて以降の処理を行えば、一般に近似後の線分列を構成する線分や頂点の数ははじめの点データの数より大幅に少ないものとなるためこの線分近似後の線分や頂点について図形の判定、認識、あるいは図形の加工をおこなうことが望ましい。特にあらかじめ定められた線分数の線分列(折れ線)で曲線を近似し、この線分列に対して図形判別や図形処理を行うことがなされる。
【0004】
そのため曲線等の線図をあらかじめ定められた本数の複数の連続した線分の列即ち折れ線に近似する事は、図形の特徴を抽出し図形の概略を用いて処理を行う事により処理時間を短縮したり、メモリなどの計算資源の節約がはかる意味で重要な技術課題である。
【0005】
このような複数の連続した線分の列即ち折れ線に近似するための方法の従来例として、公開特許公報平1−295376号公報において、述べられている線図形の線分近似処理方式について述べる。
【0006】
2次元整数格子内の一意的に1次元鎖と見なし得る連結したN個の座標点列のA={(x[i],y[i])|i=1,…,N}を初期値として考える。
【0007】
ここで連結しているとは、図6のように座標点を微小面積要素と見なして、その領域が境界の点あるいは境界線で連結している事を意味する。このようなパターンは、鉛筆等で書かれた曲線をデジタル化した際に現れる。
【0008】
また、簡単のため、点列は開いた曲線に対応しており点列には曲線の連結性に沿って、順番がついているとし、所謂、細線化された曲線とし図7の(a)に示すようなひげ、(b)に示すような解像度以上の折れ曲がり、(c)に示すような二重線、(d)に示すような交差点はそれぞれ存在しないと仮定する。
【0009】
図6(a)の点列に対して、図6(b)の線分を対応させる事が本発明の課題であり、以下のような方法を提案している。
【0010】
線分列の頂点は、座標点列Aの部分集合B={(Vx[i],Vy[i])|i=1,…,r}として表される。数学的には、Bに余分な一点を加えB∪{*}とした時、集合AからB∪{*}への射影(上への写像)を意味する。つまり、Bの点以外のA点は*へ写像されるとし、Bの点となるAの点は自分自身へ写像されるとすれば写像が巧く定義される事となる。
【0011】
このような写像を具体的にどのように決定するかが、点列の線分化問題である。
【0012】
予め閾値vtxth0を対応する線分の長さに対する関数を決めておく。例えば、これを対応表(ルックアップテーブル)に書き込んでおき、線分の長さに応じてそれを変更させてもよい。本説明においては簡単の為に、vtxth0は一定値に固定しておく。
【0013】
上述の仮定から座標点列Aの対応する曲線の両端は既に判明しているとしてよい。図8の流れ図に従って従来の方法は記述されるが、まず、具体的な例である図10に従って説明する。
【0014】
まず、図10(a)のように両端を線分で結ぶ。これを階層1の線分と呼ぶ。
【0015】
この線分の両端で挟まれた領域での座標点(現在の場合、すべて)に対して、この線分を延長して出来る直線までの距離dd[i](i=1,…,N)を求める。この距離は通常用いられる点から直線までの定義に従って図11の様に点からこの線分を延長して出来る直線へおろした垂線の長さである。この直線を以降基準線と呼ぶことがある。また本明細では以降簡単のため線分からの距離とも称するが、図11(b)のように垂線が線分よりはずれるときにも直線への距離の意味をとるものとする。この求めた距離に対して、最大のものが、もしも、vtxth0より小さければ、両端を結んだ階層1の線分が求める線分列とする。
【0016】
図10(a)は最大距離が、vtxth0より大きい場合を図示しており、101が最大距離dを持つ点としている。この場合、101を新たな頂点列の一つとし、図10(b)のようにこの頂点により2本の線分102と103を作る。これによりひとつ階層を上げ、得られた点列を階層2の頂点列とする。次に図10(b)の線分102に対してこの両端を端点とする線分列の各点から線分102までの距離を求めその最大値dを与える点104を新たな頂点として図10(c)のように新たな2線分を作る。この動作を得られる最大距離が閾値vtxth0を越えなくなるまで繰り返し図10(d)の線分列を得る。
【0017】
すなわち現在の階層をK(>1)として階層Kの線分列の内の1つの線分に着目する。該線分の両端で挟まれた領域での座標点列Aの部分列の該線分からの距離をdd[i](i=j,…,j)とし、dd[i](i=j,…,j)を求める。この求めた距離の最大のもの(最大距離d)が、もしも、vtxth0より小さければ、該線分を求める線分列の一部とする。この時、対応する線分は階層Kについて、収束したとし、階層をKからK+1に増やした場合も線分列の対応する部分は変化しないものとする。
【0018】
もしも、最大距離dが、vtxth0より大きければ、最大値を持つ点を次の階層K+1での頂点列の一つとする。この操作を同じ階層内のすべての収束していない線分に対して行い、階層K上で総ての線分について操作を行なった後に階層をKからK+1に上げる。
【0019】
このような操作を繰り返す事により、階層を十分深くすると最終的に座標点が有限であるので、総ての線分が収束し、つまり、総ての点列が対応する線分からvtxth0よりも小さい距離にあるように、線分列を構成できる。
【0020】
上述のような方法によって図10(a)に対して図10(d)が得られる。
【0021】
この事を流れ図にして示したのが、図8である。図8に従って、一般的な場合の線分化方法について述べる。
【0022】
ステップSS1の開始と同時に初期化を行なう。つまり、階層Kを1に、また、曲線の両端を階層1の線分の両端とする。
【0023】
ステップSS2で、着目するi番目の線分が、階層Kの線分列の最終線分を超えたか否かをチェックする。
【0024】
i番目の線分が階層Kの線分列の最終線分でないならばステップSS3で線分内の対応する座標点の線分からの距離の最大値を計算する。
【0025】
ステップSS4で、線分の最大距離dがvtxth0より大きければ、ステップSS5へ移行し、i番目の線分を 最大距離dを持つところで分割して、二つの線分に分ける。
【0026】
もしも、ステップSS4で、線分の最大距離dがvtxth0より小さければ、その線分は収束したとする。
【0027】
ステップSS6で同じ階層K内での線分列の次の線分に移る。
【0028】
ここで、再びステップSS3で、着目するi番目の線分が、階層Kの線分列の最終線分か否かをチェックする。
【0029】
ステップSS3からSS6までの操作を繰り返し、階層Kの線分列の最終線分まで繰り返す。
【0030】
ステップSS8で総ての線分において、最大距離がvtxth0より小さければステップSS9で順番を入れ替えてステップSS10の終了に向かう。
【0031】
もしも、SS8で総て線分が収束していなければ、ステップSS7で階層を一つ上げて、ステップSS3に向かう。
【0032】
このような事を繰り返し、最終的には総てが収束して終了する。
【0033】
この他にも、公開特許公報平1−295376号公報内の従来の例で述べられている方法等、いくつかの方法が提案されている。
【0034】
【発明が解決しようとする課題】
図形の特徴を抽出し、図形の概略を用いて処理を行う事により処理時間を短縮したり、メモリなどの計算資源の節約をはかる図形処理において、曲線等の線図を複数の連続した線分の列即ち折れ線に近似するために上記の様な従来例に基づく線分近似方法を用いるには以下の様な問題点を有していた。
【0035】
これらの処理に於いては処理の目的に応じて出来得る限りデータ数、即ち線分数を少なくし、処理を高速に行い、かつ使用する計算資源が少ない計算を行うことが望ましい。線分近似を線図の概略判定に用いる際には図形の特徴が判断できる最小の線分数で近似をすることにより、その後の処理、判定を簡素に高速に行えることになる。そのため線図の概略判定に必要とされるあらかじめ定められた本数の線分列への線分近似が必要となる。ここで云う概略判定とは、線図の長さや曲率などの定量的な性質は無視して線が特徴的な形状、例えば巻いているか否か、或いは巻いている回数等を調べるものである。
【0036】
このような処理に従来の方法を応用する場合に線分近似の終了を決める閾値vtxth0をどのように決定するかが重要な問題となる。
【0037】
特に判定の誤動作を防ぐために線分近似の精度をまし、閾値vtxth0を小さくとる必要がある。この様子を図9に示す。
【0038】
図9(a)には判定すべき線図を構成する点列を表す。91、92はそれぞれ点列の始点、終点である。この始点終点から従来例に基づく線分近似を行う場合図9(b)の様に基準線を引き、点列の各点から基準線間での距離を計算していくため、閾値vtxth0を大きくとると図9(c)の様な線分と判定される。このような場合大きな閾値vtxth0は線図の微小部分の形状に対し近似精度を落とすのみではなく、近似後の線分列は線図の概略形状も大きく変えてしまい判定誤差を生じせしめてしまう。ここで云う誤動作とは、図形の微小形状あるいは微小部分から決まる定量的な特性は無視し線図の概略を判定する観点からいう。
【0039】
この誤動作の意味をより具体的に説明すれば、図9(d)の様な図形入力があった時には、同じく図9(c)の様な近似線分をあたえ、入力の図9(a)と図9(d)の近似後の差異がなくなってしまう。図9(a)と図9(d)は図形の外力判断の意味からは大きくことなり特に図9(a)に於ける91より左側の図形の特徴が全く失われてしまう。
【0040】
このようなことを防ぐために線図の概略判定用の線分列近似では閾値vtxth0を十分に細かく、例えば図9に関しては1ピクセル以下の精度に設定する必要がある。このように誤動作を防ぐには場合によって解像度のピクセル程度まで閾値vtxth0を細かくしなければならない。
【0041】
一方でこのような細かな閾値vtxth0を用いた線分列近似を用いて図9の様な線図を判定すれば、概略形状判定の観点からは無視してもかまわないような微小区間での線図の変動に従って細かな線分化(線分分割)を行うため、近似後の線分数は当初の点列の点数と大差がなくなってしまい、本来線図の概略判定の計算時間、計算資源の節約を目的になされた線分列近似の効果が極端に少なくなる。
【0042】
このように必要とされる閾値vtxth0は局所的な近似精度のみでなく、元線図の大略的な形状によって大きく異なる。入力図形の形状が例えば始点、終点が図形全体の外接多角形上にある場合等のようにある特定の傾向をもった図形に限られる場合には、このような誤動作は生じにくいが、図9(a)の様な図形に対しては閾値vtxth0を小さく設定せなばねばならない。
【0043】
このように従来例では閾値vtxth0の値により近似後の線分の大略的な形状までも大きく影響を受けていた。このことににより線分近似法としては非常に扱いにくい近似方法となっていた。
【0044】
即ち入力図形の傾向により、図形を分類しそれに応じて閾値vtxth0を決定すればこのような誤動作は生じにくくなるが、このような図形を好適に判断する処理は複雑になり、その分の処理が必要となり線図の概略を判定処理の計算時間、計算資源の面から好ましくない。入力図形の形状にあらかじめ制限を加えたり、図形判定処理内に線分列近似以外の処理を組み合わせることは図形判定処理の適用範囲を狭めたり、処理を複雑化を招き好ましくない。
【0045】
一方、判定の誤動作を防ぐためには線分近似の局所的な近似精度の必要性以上に細かな閾値vtxth0設定をとれば、図形により本来の線分列近似の目的であった線図の概略判定に対して、計算時間の短縮、計算資源の節約の効果が得られにくい、その後の処理に多量のメモリ領域と長い処理時間を必要とする線分列を作成していた。さらにこのような細かな閾値vtxth0設定をとることが必要なため図形により線分列近似自体の処理も多量のメモリ領域と長い処理時間を必要としていた。
【0046】
特に従来の閾値vtxth0を設定する線分近似方法では、指定された近似線分本数に線分近似を行には扱う図形の傾向に応じて経験的に定めた閾値vtxth0を用いるか、或いは閾値vtxth0を変更しながら前述の線分近似処理を行い、得られた近似線分数が所望ものに近くなるまで線分近似を繰り返す必要があった。前者は取り扱う図形の適応範囲を狭めるものであり、後者は実行時間を大きく増加させるものであった。
【0047】
【課題を解決するための手段】
従来の方法に於いては、与えられた点列から線分を抽出するにおいて、点列内の各点から点列の両端の点を結んだ直線までの垂線の長さを、その点から直線までの距離として線分近似を行う判定量としこれが基準の判定値vtxth0を越えた場合に、この点を近似線分を形成する頂点として抽出するもするものであった。しかるに図9に示したような図形に対しては点列内の各点から点列の両端のて点を結んだ直線までの垂線の長さのみでは図形の概要を抽出するのに不十分であり、元図形の大半の部分が失われてしまうという欠点を有していた。
【0048】
本発明は以上の欠点を鑑み、点列内の各点から点列の両端の点までの、その両端点を結んだ直線方向の符号付きの距離を、近似線分を形成する頂点を検出するための判定量として使用する。
【0049】
特に本発明では、点列内の各点から点列の両端の点を結んだ直線までの垂線の長さが基準の判定値vtxth0を越えない場合にも、点列内の各点から点列の両端の2点までの、その両端点を結んだ直線方向の符号付き距離を近似線分を形成する頂点を検出するための判定量として使用し、この量が同じ符号であり、その差が大きさが新たな判定基準値vtxth1を越えた場合にその点を新たに近似線分を形成する頂点として検出する。
【0050】
より具体的な説明を図4を用いて行う。ここで線分近似を行う点列の開始点をA点、終点をB点と記す。従来例にしめしたと同様に線分近似を行っていき、点列内のC点に関して、点列の両端の点A、Bを結んだ直線までの垂線の長さdmaxが計算できる。このとき直線までの垂線の長さdmaxが判定値vtxth0を越えない場合にはC点から両端の点A、Bまで直線にそった方向の距離ta、tbを求める。ただしこの距離は方向に対して符号をもった量として求める。即ち点Cより開始点Aへ向かう有向線分(ベクトル)、と点Cより終了点Bへ向かう有向線分(ベクトル)を各々ABを結ぶ直線への射影した時作られる2つの有効線分の向きが同じ向きの時に同符号をとるものとする。
【0051】
ta、tbの符号が同じ時にはその差の絶対値を求める。この差の絶対値が大きいとき、特に点列の両端A、B間の直線距離に比べ大きい時には、点Cは点列の両端A、Bより大きく離れていると云うことであり、もと図形の特徴を抽出する上ではこのC点の存在を反映させることが好ましい。
【0052】
よってもとの点列に対する線分近似の過程で、点列内の各点から点列の両端の2点までの、点列内の各点から点列の両端の点を結んだ直線までの垂線の長さが基準の判定値vtxth0を越えない場合にも、その両端点を結んだ直線方向の符号付き距離を求め、その符号が同じ時にはその差の絶対値を求め、このようにして求まった絶対値の大きさの全点列における最大値が規定の基準値vtxth1を越えた場合にはその最大値を与える点を近似線分を構成する頂点として抽出することで良好な線分近似が行える。この様子を図2に示す。
【0053】
図2(a)は元図形である。図2(b)では従来例同様に点列の始点終点を結ぶ基準線を引き、点列の各点から基準線間での距離を計算していく。図9に示した従来例同様に基準線からの垂直方向の距離が閾値vtxth0を下回るとする。しかしながら本発明では図2(c)に示すように、上記に示した基準線に沿った符号付きの距離を求めことで、その符号が同じく、その差が基準値vtxth1を越える点のうち最大となる点2aを抽出することが出来る。
【0054】
このようにして得られた近似線分図2(c)は近似する線分の本数も少なく、かつ図形の全体的特徴、特に図形の大きさの概略を正しく示すものとなっており、従来例の様に図形の大部分を欠損させ、特に図形の大きさの概略を大きく変形させることないため、図形抽出の分野で特に大きさの概略を簡素な要素で抽出するのに適している。
【0055】
【発明の実施の形態】
(第一の実施例)
本発明による第一の実施例について以下に説明する。
【0056】
図3に本発明に基づく最適化方法を実現するための第一の構成例並びに本発明に基づく装置の第一の実施例の構成を示す。
【0057】
30は本実施例に示す処理を行う演算処理手段、31はデータ入力または処理制御入力のための入力手段、32は結果出力のための出力手段、33は結果表示のための表示手段、34はデータ記憶のための記憶手段である。
【0058】
本構成はパーソナルコンピューター等の汎用型計算機上に実現できる。あるいは本実施例の実現のために構成された電気回路を用いることで構成できる。
【0059】
入力手段31はデータ入力及び処理の制御を行うための入力を演算処理手段30へ入力するもので、キーイン入力を行うためのタイプライター型のキーボード装置、またはカード入力装置、あるいは光学式入力装置(OCR)、マウス等のポインタ入力装置等によって構成される。
【0060】
あるいは端末装置、ネットワークを通したリモート端末装置を流用することも可能である。
【0061】
処理用のデータ、及び処理の実行の開始、終了、停止、中断、出力等の処理制御入力が入力手段31により本構成に入力される。
【0062】
データ入力に関しては事前に入力したデータを後述の記憶手段34に格納しておくことも可能であり、本構成以外の入力手段31によって入力しネットワーク等を通して直接記憶手段34に格納することも可能である。
【0063】
さらに記憶手段34を後述の可搬性記憶装置で構成することにより本構成以外の入力手段によって入力したデータを使用することも可能である。
【0064】
演算処理手段30はさらに入力部30d、中間データ記憶部30c、演算手順記憶部30b、演算部30a、出力部30e、バス部分30fより構成される。
【0065】
入力手段31より送られたデータ入力は入力部30dを介してバス部分30fを通じて中間データ記憶部30cあるいは記憶手段34に格納される。
【0066】
入力部30dは入力手段31よりの入力を後の演算処理やデータ格納に好適な用に加工する機能を有することが可能である。
【0067】
またデータ入力のために入力手段31を制御する機能を有してもよい。
【0068】
たとえば入力手段31にタイプライター型のキーボード装置に使用した場合には入力手段31からのキーイン信号を処理手段用の内部表現に変換し、適当な単位に区切ってバス部分30fへ転送することができる。
【0069】
また入力手段31に光学式入力装置(OCR)を使用した場合にはデータの読み取りの開始、終了等の光学式入力装置(OCR)への処理制御信号を発生する機能を有することができる。
【0070】
またマウス、デジタイザ等のポインタ入力装置を使用した場合には、装置のポイントした位置を数値(座標値)に変換しこれを入力データとて生成する機能を有することもできる。
【0071】
さらにネットワーク通信機能を有し本構成以外の処理装置より転送されたデータを中間データ記憶部30cあるいは記憶手段34に格納することもできる。
【0072】
中間データ記憶部30cは例えば半導体電荷蓄積型のランダムアクセスできる記録再生可能なRAM装置等によって構成され、処理の初期データ、処理中に生成される中間データの一時格納を行う。
【0073】
初期データは処理を開始するに際し必要なデータで、処理直後に入力手段31より入力されたもの、あるいは処理開始以前または処理開始直後に記憶手段34に格納されたものをバス部30fを介して読みとり中間データ記憶部30cに一時格納する。これらは後述の演算手順に従い必要とされた時にバス部30fを介して演算部30aに送られ演算処理に使用される。
【0074】
中間データとは演算部30aにおいて後述の処理手続きに従って処理を行う過程で新たに算出、定義された変数の数値、または演算処理を行うに際し必要な一時記憶領域の内容である。
【0075】
中間データ記憶部30cは演算手順に従って発生するこれらのデータを演算部30aよりバス部30fを介して受け取り必要とする時点まで一時格納しておく。
【0076】
中間データ記憶部30cに一時格納された中間データは演算手順に従って必要とされる際にバス部30fを介して演算部30aへ送られ演算部30aで演算に利用される。
【0077】
その際以降の処理に不必要なデータは演算部30aへ転送後破棄してその部分の記憶領域を後のデータ格納に再利用する構成とすることもできる。
【0078】
或いは処理の履歴データとして処理終了まで格納し、最終結果として出力する構成をとることもできる。
【0079】
中間データ記憶部30cは通常転送(書き込み、再生)、アクセス速度が早い揮発性のDRAM装置が用いられ、処理の開始ともに動作を開始し処理の終了ととも動作を終了する。
【0080】
処理の開始時に必要とされる初期データは処理の開始直後にバス部30fを介し記憶手段34から読み取り、処理に終了後も保持すべき最終データバス部30fを介し記憶手段34へ格納する構成をこともできる。
【0081】
また中間データ記憶部30cの一部、特に演算処理を行うに際し必要な一時記憶領域は演算部30a内にキャッシュ記憶装置として設けることができる。さらに中間データ記憶部30cの一部(或いは全て)は記憶手段34で流用する事もできる。
【0082】
また後述の処理手続きに従って処理を行う過程で発生する中間データの一部は記憶手段34へ格納する事もできる。
【0083】
中間データ記憶部30cより必要に応じてバス部30fを介し記憶手段34へ転送し記憶手段34で格納したのち必要時に中間データ記憶部30cへ出し利用する構成をとるも可能である。
【0084】
処理実行時に後述の演算手順は演算手順記憶部30bに格納されている。
【0085】
演算部30aは演算手順記憶部30bに格納された演算手順を読み出しそれに従って後述の演算処理を行って行く。
【0086】
特に本実施例を汎用の計算機上で構成する場合には演算手順は当該技術分野で周知な高級プログラム言語からなるプログラムの形式あるいはそれから生成された実行コードの形式で格納する事が可能である。プログラムは実行に先立ち実行コードに変換(コンパイル)されるか、または実行時に逐次用意されたインタプリタで実行コードに変換されてもよい。また演算手順は演算部30aを構成する処理装置に固有な機械語で直接作成されたコードの形式で格納することもできる。
【0087】
このように汎用の計算機上で本実施例を構成する場合には、演算手順を表現するコードあるいはプログラムは処理の開始時以前に記憶手段34上に格納しておくことが可能である。
【0088】
この場合には処理の開始に先だって、あるいは処理の開始直後に演算手順を表現するプログラム或いはコードの一部或いは全てをバス部30fを介し演算手順記憶部30bに読み込み格納する。
【0089】
また処理の開始時以前に記憶手段34上に格納しておいたプログラム形式の演算手順を処理前に実行コードに変換し、この実行コードを演算手順記憶部30bに読み込み格納する構成をとることもできる。
【0090】
このような構成では演算手順記憶部30bは物理的には中間データ記憶部30cと同一のRAM装置を用いてもよい。RAM装置の記憶領域を区分けしてつけた番地を用い記憶領域を管理し論理的に区分けされた中間データ記憶部30cと演算手順記憶部30bを構成してもよい。
【0091】
このような構成では同一のRAM装置を用いて汎用の計算機上で計算手段を有効に用いて本実施例を実現できる。
【0092】
演算手順記憶部30bへの演算手順コードの読み込みは処理実行のはじめに1度に最後の処理までのコードを読み込んでもよく、或いは処理の実行に伴い順次読み込んで云っても良い。
【0093】
さらに別の構成例としては演算手順記憶部30bを設けず記憶手段34より直接演算部30aへ演算手順コードを読み込むことも可能である。
【0094】
このような構成をとっても本発明もつ本質的効果は変わることがないが、一般にRAM装置の読み出しは高速であるため、本発明の汎用の計算機上での実施形態としては演算手順記憶部30bを設けることが望ましい。
【0095】
本実施例を最適化専用処理装置上に実現する場合には演算手順記憶部30bを半導体ROM装置に構成することも可能である。この場合には処理前、処理中、処理後を問わず演算手順は演算手順記憶部30bに格納されており、この演算手順に従って演算が実行される。
【0096】
このような構成では演算手順コードを記憶部34より演算手順記憶部30bに読み込む動作が不要なため処理の立ち上げが早く行われる装置を実現できる。
【0097】
さらに本実施例の入力部30dにネットワーク通信装置を配し、処理の開始以前、或いは開始直後に処理手続きコードを本構成以外の処理手段よりネットワークを介して中間データ記憶部30cへ格納することも可能である。
【0098】
演算部30aは演算手順記憶部30bに格納された演算手順に従って後述の演算処理を行って行く。その際一時的に生成される変数値はバス部30fを介し中間データ記憶部30cに格納され、また必要に応じて中間データ記憶部30cよりバス部30fを介して読みとられ演算に使用される。
【0099】
出力部30eは後述の処理終了時に演算部30aより算出された値、或いは中間データ記憶30cに格納された結果データを読み出し出力手段に出力する。また処理中に使用者が処理の履歴を確認するためにデータの一部を出力する構成をとることも可能である。
【0100】
バス部30fは演算処理手段30を構成する入力部30d、中間データ記憶部30c、演算手順記憶部30b、演算部30a、出力部30e間のデータ転送を円滑に行うため、各部間からのデータを授受し所定部へデータを引き渡す。本部位は本発明に必須でないがバス部を設けることで各部の処理が効果的に行われる。
【0101】
演算処理手段30からの出力データは出力手段32へ送られ出力される。
【0102】
出力手段32はプリンタ、プロッタ等の印刷出力装置、あるいは出力データに応じてCRT等の表示手段33へビデオ信号を作成出力するビデオ信号出力装置からなる。
【0103】
また出力手段32をネットワーク通信機能を有する通信装置より構成することで、出力データを本構成以外の出力手段や処理手段へネットワークを通じて出力する構成をとることも可能である。
【0104】
表示手段33はCRT、液晶表示装置等から構成され出力手段32からのビデオ信号に応じて出力データを表示する。また使用者の確認のため入力データ、処理制御入力、処理状況等を出力する構成をとっても良い。
【0105】
記憶手段34は磁気テープ装置、磁気ディスク装置、光磁気ディスク装置等の固定、可搬性記録装置、或いはそれらの組み合わせからなる。
【0106】
記憶手段34は処理の開始に先立ち演算手順コードまたはプログラム或いは初期データを格納しておくことができる。
【0107】
記憶手段34として磁気テープ、フロッピイ磁気ディスク装置、光磁気ディスク装置等の可搬性記録可能な記録装置を構成要素にとり、あらかじめ初期データ、処理手続きコードまたはプログラムを本構成あるいは本構成以外の処理手段で該当装置の媒体に記録し、これを本構成による処理に先だって本構成に実装することで本実施例による処理を実行することができる。
【0108】
さらに記憶手段34の構成要素としてCDROM装置等の可搬性読み取り専用記録装置を配し、処理手続きコードまたはプログラムを該当装置の媒体に記録しておき、これを本構成による処理に先だって本構成に実装することで本実施例による処理を実行することができる。
【0109】
特にこのような処理手続きコードまたはプログラムを格納した可搬性の媒体は、本発明に従った処理を図示した構成上で実現すると云う意味で本発明による線分近似を実現する物理的な対象としての重要な実施形態である。
【0110】
あるいは記憶手段34の構成要素として固定式磁気ディスク装置を配することで処理の実行前後にわたり演算手順コードまたはプログラム並びに初期データを本構成内に格納・保持しておくことができる。
【0111】
記憶手段34は処理中に生じる中間データを一時格納する記憶領域として利用することができる。
【0112】
特に処理中に多量の中間データが生じる場合や中間データ記憶部30cの記憶容量を小さくして演算処理手段30の構成を軽便にしたい場合に記憶手段34にや中間データ記憶部30c内のデータを一時待避させ、必要時に再度中間データ記憶部30cに読み込むこでと中間データ記憶部30cの記憶領域を有効に利用できる。
【0113】
また使用者にたいする処理履歴を残す意味で記憶手段34に中間データに一部を格納し、処理後に使用者にデータ表示をすることもできる。
【0114】
さらに処理結果を記憶手段34に格納し、処理後に使用者にデータ表示を行ったり、可搬性記録媒体に記録しこれを本構成以外の処理手段上で利用する構成をとることもできる。
【0115】
次に本実施例による装置の動作を説明する。
【0116】
はじめに入力手段31から処理の開始を入力すると、記憶手段34内から、或いはネットワークを介した他の処理手段から入力部30dのネットワーク通信手段を介して、後述の演算手順を表したコードが演算手順記憶部30bに読みとられ格納される。
【0117】
ここでいう演算手順をあらわすコードはあらかじめ記憶手段34に格納されていてもよく、またプログラムの形式で記述された手順を処理の事前に演算部30aを構成する処理装置に解釈可能な実行コードに変換されてもよい。説明の簡便のため以下これらを総称して演算手順コードということにする。
【0118】
演算手順コードを可搬性記録媒体に格納している場合にはこの媒体を記憶手段34に実装しておく。
【0119】
演算手順記憶部30bにROM装置を用い事前に演算手順コードを格納しておく場合はこの動作は省略される。
【0120】
また演算手順コードの演算手順記憶部30bへの格納を処理開始に先だっておこなってもよい。
【0121】
次に入力手段31から処理に必要な初期入力データを入力する。
【0122】
入力データは中間データ記憶部30cに格納され、演算手順記憶部30bに格納されたの演算手順コードに表された演算手順に従って演算部30aで演算が開始される。
【0123】
演算手順にしたがって新たな入力データが必要になったときには順次入力手段31より入力されても良いが、或いは入力手段31から処理に必要な初期入力データを入力際に一連の必要データを一括に入力し、これを中間データ記憶部30c、さらにデータ量が多いときには記憶手段34に格納し、演算手順にしたがってデータが必要になった時に中間データ記憶部30c、記憶手段34より参照される構成をとることもできる。
【0124】
さらには必要な入力データをあらかじめ中間データ記憶部30cまたは演算手順記憶部30bにに格納しておくこともできる。この場合入力手段31よりの入力動作は省略される。
【0125】
演算部30aは演算手順記憶部30bに格納されたの演算手順コードを参照し後述の演算手順に従って演算をすすめ、新たに算出された変数値等は中間データとして中間データ記憶部30cに一時格納し、また必要に応じて中間データ記憶部30cのデータを参照、更新する。
【0126】
後述の演算手続きによって全ての演算が終了した際に、中間データ記憶部30c、或いは記憶手段34に格納されている結果の最終データを出力部30eより出力手段32へ送る。
【0127】
或いは記憶手段34に全ての最終データを格納して後にこれを出力データとして利用してもよい。出力データの利用は、本実施例を汎用計算機上で実現したときには、同一計算機上で本発明に関わる以外の処理を行っても良い。例えば本実施例より得られ近似線分データを用いて、線図の判定、選別、図形の輪郭抽出等を図3に示す構成で行うことができる。すなわち本実施例はCAD等の図形加工装置、図形判定装置の構成に一部となりその機能の一部分、特に入力時のフィルタの機能を担うことができる。
【0128】
或いは記憶手段34をフロッピイ磁気ディスク装置等の可搬性記録装置で構成し、この可搬性記録媒体上に格納した後、本媒体を搬送して他の処理手段上での本発明に関わる以外の処理に利用してもよい。例えば本実施例で作成された出力データを他のCAD等の図形加工装置、図形判定装置への入力として利用することが可能である。
【0129】
出力手段32へ送られた出力データはプリンタ装置等による印刷出力、或いはこの出力データに基づいたビデオ信号に変換される。或いはネットワーク通信装置を介して接続されたネットワーク上のたの処理手段に転送されても良い。
【0130】
出力手段32で作成されたビデオ信号は表示手段33へ送られ表示手段上で出力データを使用者に表示する。
【0131】
本実施例では以上のような構成の下に以下のような演算手順により線分近似を実行する。
【0132】
2次元整数格子内の一意的に1次元鎖と見なし得る連結したN個の座標点列のA={(x[i],y[i])|i=1,…,N}を初期入力データとして図3の構成内の演算処理手段30の中間データ記憶部30cに格納されているとする。初期入力データは前述のように図3の構成内の入力手段31より読み込まれ入力部30dを通してから中間データ記憶部30cに格納されたり、記憶手段34より中間データ記憶部30cに読み込まれてもよい。
【0133】
ここで連結しているとは、従来例の説明において述べたように、図6のように座標点を微小面積要素と見なして、その領域が点あるいは線で連結している事を意味する。
【0134】
このようなパターンは、鉛筆等で書かれた曲線をデジタル化した際に現れる。
【0135】
また、簡単のため、点列は開いた曲線に対応しており点列には曲線の連結性に沿って、順番がついているとし、所謂、細線化された曲線とし図7の(a)のひげ、(b)の解像度以上の折れ曲がり、(c)の二重線はなく、(d)のように交差点はないと仮定する。
【0136】
図3の構成上で近似すべき元図形は上記のようにデジタル化された点(ピクセル)の座標値の形で格納され、1組の座標値データ列をなしている。このデータ列は図3の構成上では中間データ記憶部30cに格納される。これを「点座標列データ」と云うことにする。いまこのデータ列の数をNとする。このデータ列上の座標値を計算機上で扱うために各座標値に対して計算機上で判別出来る値をふる。例えばこれは座標値列上での順番に従ってつけられた番号でよい。この番号値は元図形上で上記のようにデジタル化された点の名称であり、対応する座標値を参照できる様にした上で計算機上でこの点を表すものとして使用される。これを以降「点データ」と称する。
【0137】
例えば本実施例による演算手順を高級言語プログラムで表現した場合、「点座標列データ」は配列型の変数として表現でき、「点データ」は配列番号として表現できる。また例えば演算手順を演算コードとして表現した場合、「点データ」は「点座標列データ」のおのおのを格納した図3の構成の中間データ記憶部30cを構成するメモリ装置の番地として表現できる。このようにすれば元図形の点の並びは「点データ」の並び或いは「点座標列データ」によって表現できる。この元図形を表す「点データ」の並び或いは「点座標列データ」を「点列データ」と云うことにする。「点列データ」は「点データ」またはその座標値を単位とするデータ値の列である。上記の構成から計算機上で「点データ」からその座標値を知ることができるため、以下の説明ではこの両者を同一視して説明する。
【0138】
近似線分はその頂点を指定することで表せるので頂点となる点の点データを順次格納した「頂点列データ」を用いて図3の構成上に表現できる。この「頂点列データ」を格納する中間データ記憶部30a上の領域を用意する。
【0139】
以下の表記では線分近似のある階層で線分本数をmとする。このとき頂点はm+1でその頂点列の「頂点列データ」をQ,Q,…,Qと表す。ここでQはi番目の頂点を表すか、またはi番目の頂点となる点の値(名称、点データ)を表す。特に表式中などでは後者の使い方をする。最初の頂点Q、最後の頂点Qはそれぞれ元図形を構成する点列の始点と終点と一致する(またはその点の値をとる)とする。
【0140】
「頂点列データ」の順に従って連続する2頂点間で決まる線分からその2頂点を両端とする点列の各点までの垂直距離の最大値を算出する。始め格納された点列A={(x[i],y[i])|i=1,…,N}の順に従ってQの点データの次点からQの点データの1つ前の点まで、各々の座標値データを基に線分Qまでの垂直距離を計算する。
【0141】
「頂点列データ」のi番目の頂点の点データQとi+1番目の頂点の点データQi+1で決まる線分と、この2頂点を両端とする点列内の1点の点データPの距離は以下のように算出できる。
【外1】
Figure 2004341663
【0142】
但し、ここでは平面ベクトル間の演算で表記した。
【外2】
Figure 2004341663
【0143】
はそれぞれ点データQ、点データQi+1、点データPの平面ベクトルを表し、×はベクトルの外積演算を、||はベクトルの絶対値を表す数学記号であり、この演算は中間データ記憶部30aに格納してある点データQ、点データQi+1、点データPの座標値データをもとに演算部30aで通常の四則演算、平方根の開平演算を行うことで求めることができる。
【0144】
「頂点列データ」のi番目の頂点の点データQとi+1番目の頂点の点データQi+1で決まる線分に対して求まった垂直距離の最大値dmax(i)と垂直距離の基準値vtxth0を比較し、この垂直距離の最大値dmax(i)が垂直距離の基準値vtxth0を越えたときにはこれを与える点を新たな頂点として、その点データを「頂点列データ」のi番目の頂点の点データQとi+1番目の頂点の点データQi+1の間に挿入し、「頂点列データ」を更新する。
【0145】
垂直距離の最大値dmax(i)が垂直距離の基準値vtxth0以下の時には、i番目の頂点の点データQとi+1番目の頂点の点データQi+1で決まる線分に沿った符号付き距離を判定の材料とする。点列内の点データPからi番目の頂点の点データQへと向かう有効線分と、点データPからi+1番目の頂点の点データQi+1へと向かう有効線分のこの両頂点を結ぶ直線への射影を各々考えこの2つの有効線分の向きが同じ時には有効線分の差の絶対値を算出する。
【0146】
これはPからi番目の頂点の点データQへのベクトルと頂点Qi+1を結ぶベクトルとの内積と、点データPからi+1番目の頂点の点データQi+1へのベクトルと頂点Qi+1を結ぶベクトルの内積の符号を比較し、これらが同符号の時には両内積の差の絶対値を算出すればよい。
【0147】
この符号の判定には、点データPからi番目の頂点の点データQへと向かう有効線分と、点データPからi+1番目の頂点の点データQi+1へと向かう有効線分の相対的方向が問題となるため、射影をとる基準である頂点Qi+1を結ぶベクトルの方向は両者について共通にとれば十分であるが、本実施例では「頂点列データ」の順番に従って方向を決めるものとする。以上の事を平面ベクトルを用いた式で表記すれば、2頂点Qi+1と判定点Pに対して判定量t1(Q,Qi+1;P),t2(Q,Qi+1;P)の符号が同じ場合にその差の絶対値をとればよい。
【外3】
Figure 2004341663
【0148】
但し、ここでは(2)式同様ベクトル表記を用い、・はベクトルの内積を表す。(3)式は(2)式同様に、点データの座標値を用いて通常の四則演算を行う事により算出可能である。
【0149】
この判定量判定量t1(Q,Qi+1;P), t2(Q,Qi+1;P)の符号が同じ場合にはそのさの絶対値t(Q,Qi+1;P)を以下のように算出する。
【外4】
Figure 2004341663
【0150】
この算出された絶対値t(Q,Qi+1;P)を用いて、全頂点間のでの直線方向距離の最大値tmaxを求める。これは「頂点列データ」のうちi番目の頂点の点データQとi+1番目の頂点も点データQi+1間にある(但しQ、Qi+1を含まず)各点データについて絶対値t(Q,Qi+1;P)を算出して行き、その時点で、絶対値t(Q,Qi+1;P)がそれ以前の最大値tmaxの値を越える場合には最大値tmaxの値とそれを与える点データをその絶対値t(Q,Qi+1;P)と点データで更新し、そうでない時には次の頂点へと動作を進めるという具合に、従来よく知られた仮の最大値のメモリへの格納と順次比較による最大値の算出方法で一連の近似動作の中に組み入れて行う事が可能である。
【0151】
判定量t1(Q,Qi+1;P),t2(Q,Qi+1;P)の符号が異なる場合には、i番目の頂点の点データQとi+1番目の頂点の点データQi+1で挟まれた点列の順序に従ってPの次の点の評価を行う。
【0152】
このようにして順次「頂点列データ」のうちi番目の頂点の点データQとi+1番目の頂点の点データQi+1間にある(但しQ、Qi+1を含まず)各点データについて順次上記距離を算出していき、その最大値tmaxが所定の基準値vtxth1を越えた場合にはその最大値tmaxを与える点データを新たな頂点として、その点データを「頂点列データ」のi番目の頂点の点データQとi+1番目の頂点の点データQi+1の間に挿入し、「頂点列データ」を更新する。
【0153】
基準値vtxth1の値は、線分近似の精度により使用者の自由に設定できるが、近似精度の整合性から特に点列内各点の2点を結ぶ直線への垂直距離の最大値dmaxに対する基準値vtxth0と同じに取ることが好ましい。
【0154】
最大値tmaxが所定の基準値vtxth1を越えない場合のはそのまま次ぎの頂点、I+1番目の頂点の点データQI+1とi+2番目の頂点の点データQi+2の間の点列に関して以上の動作を続ける。
【0155】
これを「頂点列データ」の最後の頂点に達するまで行う。
【0156】
このようにして新たな階層の近似線分列、即ち「頂点列データ」が得られる。
【0157】
この動作を「頂点列データ」に何の変化が得られなくなるまで続ける。具体的には、「頂点列データ」内の頂点データの個数を格納しておき、動作により頂点が検出される毎にそのカウントをまし、個数変動がなくなって時点で全近似探索動作をうち切ればよい。
【0158】
本発明において2頂点を結ぶ直線に垂直方向の距離の最大値dmaxと線分にそった最大距離tmaxの算出は独立に行うことが可能である。特に上記説明では垂直方向の距離の最大値dmaxが規定値vtxth0を越えない場合に最大距離tmaxの算出する構成について説明したがこれは計算量を減少し、処理時間を短縮する効果をもつ。一方近年盛んに行われる複数CPUを搭載した計算機による並列計算では、2頂点を結ぶ直線に垂直方向の距離の最大値dmaxと線分にそった最大距離tmaxの算出を独立に、別個のCPUで同時に処理を行うことが出来る。2頂点を結ぶ直線に垂直方向の距離の最大値dmaxと線分にそった最大距離tmaxの算出は評価する点列内の点の数が同じであり、ほぼ同程度の計算量を含むため、並列計算においてこれらの部分を並列化する構成は並列計算磁のCPU間の同期が取り易い。
【0159】
本実施例では近似動作の主要部分となる動作を独立に行えるアルゴリズムをとることで、特別な並列技術を用いずとも並列同期が取りやすい計算アルゴリズムを提供できるという利点を持つ。
【0160】
次に図1に従って本実施例による線分近似の動作を説明する。
【0161】
ステップS1は初期化動作であり、ここ中間データ記憶部30cの各領域にある諸値をクリアする。次に基準直線の垂直方向の距離に対する基準値vtxth0、直線方向の距離の基準値vtxth1を設定し、点列各点の初期状態を設定する。「頂点列データ」に初期の始点、終点の点データをセットする。これらの設定値は中間データ記憶部30cに格納される。元図形の点列は前記述のように「点列データ」として中間データ記憶部30c等に格納されているとする。また「頂点列データ」の初期値として元図形を構成する点列の始点と終点の2点「点データ」からなるデータを中間データ記憶部30cに格納しておく。
【0162】
ステップS2よりステップS11まではある階層にある線分列の各線分について線分近似の動作を行う。具体的には線分列を表す「頂点列データ」内の連続する2頂点を指定することで線分が指定されるので、「頂点列データ」より順次、連続する2頂点を読み込んで行く。ステップS2で線分がその階層の最終線分を越えるかどうか判定し、最終線分を越えない時はステップS3へ、最終線分を越えた場合にはステップS10以降の動作へ進む。
【0163】
ステップS3ではその線分の両端の2頂点で挟まれた点列の「点列データ」より、順次点データを読み込んで、両端の2頂点の点データと点列の点データより(2)式を用いて点列の点から線分までの垂直最大距離dmaxを求める。
【0164】
ステップS4では最大垂直距離dmaxが閾値vtxth0を越えるかどうかを判定し、越えない時にはステップS6へ移り基準直線に沿った方向の距離に対して判定動作を進める。最大距離が閾値vtxth0を越えるた場合にはステップS5へ進む。
【0165】
ステップS5ではその線分に対しステップS3で求めた最大垂直距離dmaxを与える点を新たな頂点として線分分割を行う。線分を指定している2頂点の点データの間に最大距離dmaxを与える点の点データを挟んで新たな「頂点列データ」を作成して格納し直す。
【0166】
ステップS6では前述の(3)式、(4)式に従って点列内の点データPからi番目の頂点の点データQへと向かう有効線分と、点データPからi+1番目の頂点の点データQi+1へと向かう有効線分のこの両頂点を結ぶ直線への射影を各々考えこの2つの有効線分の向きが同じ時には有効線分の差の絶対値を算出する。これを2頂点で挟まれた点列内の点について行って行き、基準線分に沿った方向の最大距離tmaxを求める。
【0167】
ステップS7では基準線分に沿った方向の最大距離tmaxが閾値vtxth1を越えるかどうかを判定し、越えない時にはステップS9へ移り、次の連続する頂点に関して同様の動作を繰り返す。基準線分に沿った方向の最大距離tmaxが閾値vtxth1を越えるた場合にはステップS8へ進む。
【0168】
ステップS8ではその線分に対しステップS7で求めた基準線分に沿った方向の最大距離tmaxを与える点を新たな頂点として線分分割を行う。線分を指定している2頂点の点データの間に最大距離tmaxを与える点の点データを挟んで新たな「頂点列データ」を作成して格納し直す。
【0169】
ステップS2よりステップS9をその階層の最終頂点まで繰り返す。
【0170】
その階層の最終頂点まで処理が達したらステップS10で以上のステップで頂点の数が増加したかを判定する。増加している場合にはこの階層の判定で閾値を越える新たな頂点が見つからなかったとしてステップS11へ移り次の階層の判定を行うため、更新された「頂点列データ」について改めてステップS2以降の動作を繰り返す。ステップS10までで新たな頂点が発生していればステップS12へ移り処理を終了する。
【0171】
ステップS12では所定の出力を行うと同時に格納してメモリのクリーンアップなどの後処理を行って処理を終了する。
【0172】
上記のに述べた様に、本実施例を複数CPUを搭載した計算機上で稼働させる場合にはステップS3ステップS6の動作を、個別のCPUを用いて同時並列に稼働させる事も可能である。
【0173】
本実施例はこのように並列動作への拡張が容易であるという特徴を有した構成となっている。
【0174】
(第二の実施例)
本実施例は、第一の実施例に於いては基準線分からの垂直方向距離の最大値、線分に沿った方向の距離の最大値を算出後に各々の基準閾値と比較したのに対し、最大値算出以前に基準閾値と比較し、閾値以下の距離に対しては最大値の更新を行わない構成をとり、計算量を減少することで単独CPUでのシリアル動作時間を減少するとともに、線分に沿った方向の最大距離の判定により自由度をもたせた構成を提供するものである。
【0175】
本実施例では基準線分に沿った方向の距離に対する閾値vtxth1を固定にするのではなく、基準とする2頂点間の直線距離に応じてその値を設定するものである。
【0176】
i番目の頂点の点データQとi+1番目の頂点の点データQi+1に挟まれた点列ないの点Pに対して、(3)式、(4)式に示した計算を行い絶対値t(Q,Qi+1;P)を算出した後にこの絶対値に対して以下の様な閾値を設定する。
【外5】
Figure 2004341663
【0177】
ここでαは近似精度に即して定数である。
【0178】
これはi番目の頂点Qとi+1番目の頂点Qi+1によって作られる線分の長さに対して点列内の点Pがi番目の頂点Qとi+1番目の頂点Qi+1を結ぶ基準線分の長さより大きくはずれる時に図形の概要、特に大きさの概要を抽出した線分近似を行うため、この閾値以上に距離をもつ点に対して線分近似の判定を行うものである。
【0179】
このような閾値設定を行うことで、基準直線に沿った方向の距離に対する評価が、近似線分の長さに即したものとなり、近似線分の部分的な細かさに応じて精度を決定できる。
【0180】
本実施例は第一の実施例にしめしたものと同様の構成で実現できるため子細な説明は省略する。
【0181】
本実施例の動作を第5図を用いて説明する。
【0182】
ステップS501は初期化動作であり、ここ中間データ記憶部30cの各領域にある諸値をクリアする。次に基準直線の垂直方向の距離に対する基準値vtxth0、直線方向の距離の基準値vtxth1を決定するパラメタαを設定し、点列各点の初期状態を設定する。「頂点列データ」に初期の始点、終点の点データをセットする。これらの設定値は中間データ記憶部30cに格納される。元図形の点列は前記述のように「点列データ」として中間データ記憶部30c等に格納されているとする。。また「頂点列データ」の初期値として元図形を構成する点列の始点と終点の2点「点データ」からなるデータを中間データ記憶部30cに格納しておく。
【0183】
ステップS502よりステップS515まではある階層にある線分列の各線分について線分近似の動作である。またステップS503からステップS514はある階層での近似線分すなわち隣接する2頂点間の点列に関する動作である。さらにステップS504からS511は隣接する2頂点間の点列内の1つの点に関する動作である。具体的には線分列を表す「頂点列データ」内の連続する2頂点を指定することで線分が指定されるので、「頂点列データ」より順次、連続する2頂点を読み込んで行く。ステップS502で線分がその階層の最終線分を越えるかどうか判定し、最終線分を越えない時はステップS503へ、最終線分を越えた場合にはステップS515以降の動作へ進む。
【0184】
ステップS503では基準線分に沿った方向の距離に対する閾値vtxth1を決めるために2頂点間の直線距離を上記(5)式に従って算出する。この値は後述のステップS509での判定に使用するために中間データ記憶部30cなどに一時格納される。
【0185】
またステップS503では後述の距離の最大値の検出のために、基準直線の垂直距離仮最大値dmax格納用とその最大値を与える点データ格納用、並びに基準直線の直線に沿ったの直線方向距離仮最大値tmax格納用とその最大値を与える点データ格納用メモリ領域を初期化する。
【0186】
ステップS504ではその線分の両端の2頂点で挟まれた点列の「点列データ」より、順次点データを読み込んで、その判定する点が2頂点内にあるかどうかを判定し、判定点が2頂点の端に足ししたときにはステップS512へ、そうでなければステップS505へ進む。
【0187】
ステップS505では両端の2頂点の点データと点列の点データより(2)式を用いて点列の点から線分までの垂直距離dを求める。
【0188】
ステップS506では垂直距離dと垂直距離の閾値vtxth0の大きさを判定し、垂直距離dが垂直距離の閾値vtxth0より大きいときには最大値を求めるためステップS507へ、そうでないときには基準線分に沿った距離の判定を行うためステップS508へ進む。
【0189】
本本実施例では第一の実施例とことなり、距離の最大値の判定を行うまえに閾値により判定点の選別を行っている。このため最大値判は閾値を越えたもののみに対して行えばよく、処理量を減少させることで、処理の高速化が計れる。
【0190】
ステップS505では基準直線に垂直な方向の距離に対し、閾値による選別を行い、後述のステップS509に於いては基準直線にそった距離に対する選別を行う。
【0191】
ステップS507では垂直距離最大値dmaxの検出を行う。点列内の評価点の現時点より前での仮の垂直距離最大値とステップS505で求めた垂直距離dの大きさを比較し、垂直距離dの方が大きい時には仮の垂直距離最大値を垂直距離dで、また最大値を与える点を現在の評価点で更新する。これらの値は基準直線の垂直距離仮最大値dmax格納用とその最大値を与える点データ格納用、並びに基準直線の直線に沿ったの直線方向距離仮最大値tmax格納用とその最大値を与える点データ格納用メモリ領域に格納される。この値は線分に関する繰り返しの以前にステップS503で初期化されている。
【0192】
ステップS506で垂直距離dが垂直距離の閾値vtxth0以下になった時には、基準直線に沿った方向の距離の判定を行う。はじめにステップS508で(3)式、(4)式に沿って基準直線方向判定値tを算出する。
【0193】
その後ステップS509で基準直線方向判定値tが基準直線方向閾値vtxth1を越えるかどうかの判定を行う。基準直線方向閾値vtxth1は(5)式によって算出されるが、あらかじめステップS503に於いて計算を行って於き、中間データ記憶部30cにその値を格納して於くのが、計算量を減らす意味で好ましい。基準直線方向判定値tが基準直線方向閾値vtxth1以下の時にはステップS511へ移り点列の次の点の評価を行う。また基準直線方向判定値tが基準直線方向閾値vtxth1を越えた場合には基準直線方向距離最大値tmaxの検出のためステップS510へ向かう。
【0194】
基準直線方向の距離の判定についてもあらかじめ基準直線方向閾値vtxth1を用いて選別後のその最大値を検出する構成をとることで、第一の実施例に比べ処理量を軽減する事ができる。
【0195】
ステップS510では基準直線方向距離最大値tmaxの検出を行う。点列内の評価点の現時点より前での仮の基準直線方向距離最大値とステップS505で求めた基準直線方向距離tの大きさを比較し、基準直線方向距離tの方が大きい時には仮の基準直線方向距離最大値を基準直線方向距離tで、また最大値を与える点を現在の評価点で更新する。これらの値は基準直線の垂直距離仮最大値dmax格納用とその最大値を与える点データ格納用、並びに基準直線の直線に沿ったの直線方向距離仮最大値tmax格納用とその最大値を与える点データ格納用メモリ領域に格納される。この値は線分に関する繰り返しの以前にステップS503で初期化されている。
【0196】
ステップS504で、判定点が頂点に達した場合には、ステップS512へ移る。ステップS512では垂直距離仮最大値dmax或いは基準直線方向距離仮最大値tmaxが検出されたかどうかを判定する。具体的には対応する点データ格納用メモリ領域内の値が初期化された時の値のままかを判定する。何れかの最大値が検出されていれば、ステップS513でこの2頂点で作られる線分に新たな頂点の更新を行う。両方の最大値が検出されているときには垂直距離仮最大値dmaxを与える点を新たな頂点として採用する。検出された最大値を与える点データを「頂点列データ」内の2頂点の間に挿入して「頂点列データ」の更新を行う。ステップS512で最大距離が検出されていないと判断された場合、及びステップS513の処理後にステップS514へ向かい、次の線分、即ち「頂点列データ」の次の隣接2頂点に関して以上の動作を繰り返す。
【0197】
ステップS502によりこの階層の最終線分まで判定が到達するとステップS515でこの階層で「頂点列データ」に更新がおこなわれたかの判定を行い、「頂点列データ」の更新が行われて居れば、次の階層へ移って新たな「頂点列データ」の始頂点からステップ502以降の動作を繰り返す。該階層で頂点列データ」に更新がおこなわれた場合には線分近似動作が収束したとして終了動作ステップS516へ向かう。
【0198】
ステップS516では所定の出力を行うと同時に格納してメモリのクリーンアップなどの後処理を行って処理を終了する。
【0199】
本実施例は最大値算出以前に基準閾値と比較し、閾値以下の距離に対しては最大値の更新を行わない構成をとり、計算量を減少することで第一の実施例に比べ単独CPUでもシリアル動作時間を減少するという利点をもつ。
【0200】
また本実施例では基準線分に沿った方向の距離に対する閾値vtxth1を固定にするのではなく、基準とする2頂点間の直線距離に応じてその値を設定するものであり、基準直線に沿った方向の距離に対する評価が、近似線分の長さに即したものとなり、近似線分の部分的な細かさに応じて精度を決定できるという利点をもつ。
【0201】
【発明の効果】
本発明では近似動作のなかで、基準直線からの垂直距離が閾値以内にあった時には、基準直線方向の距離を評価することで、誤動作が少なく、特に図形の大きさの概要を変動させることなく線分への近似が行える。
【図面の簡単な説明】
【図1】本発明の第1の実施例の線分化アルゴリズムの流れ図。
【図2】本発明による線分近似を説明する図。
【図3】本発明による線分近似を実行する構成を説明する図。
【図4】本発明による関数D(d,T)の概要を説明する図。
【図5】本発明に第2の実施例の動作アルゴリズムを示す図。
【図6】本発明による線分化を説明する図。
【図7】本発明で前提としない座標点の説明図。
【図8】従来の技術で述べるの線分化アルゴリズムの流れ図。
【図9】従来の技術の問題点を説明する図。
【図10】従来の技術で述べる線分化処理の説明図。
【図11】従来の技術で述べる線分化処理を説明する他の図。
【符号の説明】
30 本発明の実施例を実現するための演算手段
30a 本発明の実施例を実現するための演算手段の入力部
30b 本発明の実施例を実現するための演算手段の演算手順記憶部
30c 本発明の実施例を実現するための演算手段の中間データ記憶部
30d 本発明の実施例を実現するための演算手段の入力部
30e 本発明の実施例を実現するための演算手段の出力部
30f 本発明の実施例を実現するための演算手段のバス部
31 本発明の実施例を実現するための入力手段
32 本発明の実施例を実現するための出力手段
33 本発明の実施例を実現するための表示手段
34 本発明の実施例を実現するためのデータ記憶手段

Claims (7)

  1. 一意的に1次元鎖と見なし得る2次元整数格子内の連結したN個の座標点列A={(x[i],y[i])|i=1,…,N}を基準直線からの距離を元に、座標点列Aの部分集合B={(Vx[i],Vy[i])|i=1,…,r}を頂点列とする線分列によって近似する方法であって、ある階層に於いて近似した各線分からその線分の両端で挟まれる座標点列A内の部分点列の各点までの最大距離が所定閾値をこえた時にその最大距離を与える部分点列内の点を新たな頂点として新たな近似線分を増やすことで線分近似の階層を深めていく線分近似方法に於いて、ある階層内に於いて近似した線分列を構成する線分に関して部分点列の各点から該線分への垂直方向の最大距離が所定閾値を越えた場合にはその最大距離を与える部分点列内の点を新たな頂点として新たな部分線分列を作成し、点から該線分への垂直方向の最大距離が所定閾値を越えなかった場合には、部分点列の各点から線分両端の頂点への該線分方向に沿った方向付きの距離の方向を比較し、その方向が同じ場合に部分点列の各点から線分両端の頂点への線分方向の距離の差の絶対値の該部分点列のおける最大値が所定閾値を越えた場合にはその最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成することで階層を深めていくことを特徴とする線分近似方法。
  2. ある階層内に於いて近似した線分列を構成する線分に関してその線分の両端で挟まれた部分点列の各点から該線分への垂直方向の距離の該部分点列における最大値を求め、その値が所定閾値を越えた場合にはその最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成し、点から該線分への垂直方向の距離の該部分点列における最大値が所定閾値を越えなかった場合には、部分点列の各点から線分両端の頂点への該線分方向に沿った方向付きの距離の方向を比較し、その方向が同じ時には部分点列の各点から線分両端の頂点への線分方向の距離の差の絶対値を求め、その線分方向の距離の差の絶対値の部分点列における最大値を求め、その最大値が所定閾値を越えた場合にはその最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成することで階層を深めていくことを特徴とする請求項1記載の線分近似方法。
  3. ある階層内に於いて近似した線分列を構成する線分に関してその線分の両端で挟まれた部分点列の各点から該線分への垂直方向の距離のを求め、その値が所定閾値を越えた場合にはその最大値を求め、点から該線分への垂直方向の距離が所定閾値を越えなかった場合には、部分点列の各点から線分両端の頂点への該線分方向に沿った方向付きの距離の方向を比較し、その方向が同じ時には部分点列の各点から線分両端の頂点への線分方向の距離の差の絶対値を求め、その差の絶対値を所定閾値と比較し、その差の絶対値が所定閾値を越えた時にはその算絶対値の部分点列における最大値を求め、前者の線分の垂直方向の距離の最大値、或いは後者の線分方向に沿った距離の差の絶対値の最大値が該部分点列内にある時はその最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成することで階層を深めていくことを特徴とする請求項1記載の線分近似方法。
  4. 規定部分点列内に線分の垂直方向の距離の最大値、及び後者の線分方向に沿った距離の差の絶対値の最大値がある場合には、線分の垂直方向の距離の最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成することで階層を深めていくことを特徴とする請求項3記載の線分近似方法。
  5. 請求事項1の方法が収められた記憶媒体。
  6. 一意的に1次元鎖と見なし得る2次元整数格子内の連結したN個の座標点列A={(x[i],y[i])|i=1,…,N}を基準直線からの距離を元に、座標点列Aの部分集合B={(Vx[i],Vy[i])|i=1,…,r}を頂点列とする線分列によって近似する装置であって、ある階層内に於いて近似した線分列を構成する線分に関してその線分の両端で挟まれた部分点列の各点から該線分への垂直方向の距離の該部分点列における最大値を求める手段、その値が所定閾値を越えた場合にはその最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成する手段、点から該線分への垂直方向の距離の該部分点列における最大値が所定閾値を越えるか否かを判定する手段、部分点列の各点から線分両端の頂点への該線分方向に沿った方向付きの距離の方向を比較する手段、その方向が同じ時には部分点列の各点から線分両端の頂点への線分方向の距離の差の絶対値を求める手段、その線分方向の距離の差の絶対値の部分点列における最大値を求める手段、その最大値が所定閾値を越えた場合にはその最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成する手段を有することを特徴とする線分近似装置。
  7. 一意的に1次元鎖と見なし得る2次元整数格子内の連結したN個の座標点列A={(x[i],y[i])|i=1,…,N}を基準直線からの距離を元に、座標点列Aの部分集合B={(Vx[i],Vy[i])|i=1,…,r}を頂点列とする線分列によって近似する装置であって、
    ある階層内に於いて近似した線分列を構成する線分に関してその線分の両端で挟まれた部分点列の各点から該線分への垂直方向の距離のを求める手段、その値が所定閾値を越えた場合にはその最大値を求める手段、点から該線分への垂直方向の距離が所定閾値を越えるかを判定する手段、部分点列の各点から線分両端の頂点への該線分方向に沿った方向付きの距離の方向を比較する手段、その方向が同じ時には部分点列の各点から線分両端の頂点への線分方向の距離の差の絶対値を求める手段、その差の絶対値を所定閾値と比較する手段、その差の絶対値が所定閾値を越えた時にはその算絶対値の部分点列における最大値を求める手段、前者の線分の垂直方向の距離の最大値、或いは後者の線分方向に沿った距離の差の絶対値の最大値が該部分点列内にあるかどうか判定する手段、その最大値を与える部分点列内の点を新たな頂点として新たな部分線分列を作成する手段を有することを特徴とす線分近似装置。
JP2003135323A 2003-05-14 2003-05-14 図形の線分近似処理方法 Withdrawn JP2004341663A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003135323A JP2004341663A (ja) 2003-05-14 2003-05-14 図形の線分近似処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003135323A JP2004341663A (ja) 2003-05-14 2003-05-14 図形の線分近似処理方法

Publications (1)

Publication Number Publication Date
JP2004341663A true JP2004341663A (ja) 2004-12-02

Family

ID=33525614

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003135323A Withdrawn JP2004341663A (ja) 2003-05-14 2003-05-14 図形の線分近似処理方法

Country Status (1)

Country Link
JP (1) JP2004341663A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009151759A (ja) * 2007-11-14 2009-07-09 Canon Inc 画像処理方法及び画像処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009151759A (ja) * 2007-11-14 2009-07-09 Canon Inc 画像処理方法及び画像処理装置

Similar Documents

Publication Publication Date Title
US6246804B1 (en) Image retrieval method and apparatus using a compound image formed from a plurality of detected regions
US7765477B1 (en) Searching dummy font encoded text
CN101154292A (zh) 图形形状数据生成设备、渲染设备和方法
JPS63206873A (ja) 入力走査画像データのベクトル化のための装置及び方法
CN112232022B (zh) 动态调整参数的汉字字形与布局设计方法和系统
JP2009282855A (ja) 画像形成装置、グラデーション図形画像描画方法、グラデーション図形画像描画プログラム、及び記録媒体
CN101354749B (zh) 字典制作方法、手写输入方法和设备
JP4329750B2 (ja) 印刷制御プログラム
JP4625269B2 (ja) 文字画像生成装置,文字画像生成方法,表示制御装置,文字画像生成プログラムおよび表示制御プログラム
JP2014171219A (ja) 上塗りコーティング処理のための機構
JP5137679B2 (ja) 画像処理装置および画像処理方法
JP3848514B2 (ja) 顕著性算出装置及び方法
JP2004341663A (ja) 図形の線分近似処理方法
JP2004341664A (ja) 図形の線分近似処理方法
JPH08194716A (ja) 画像処理方法及びその装置
JP6503850B2 (ja) 範囲指定プログラム、範囲指定方法および範囲指定装置
JP4574347B2 (ja) 画像処理装置、方法及びプログラム
JPH06282658A (ja) 曲線データ生成方法および装置
JP5361315B2 (ja) 情報処理装置及び情報処理方法
JP3163577B2 (ja) ベクトル・フォント生成方法
JP2002117411A (ja) 曲線描画方法、曲線描画装置および曲線描画プログラムを記録した記録媒体
JPS62212167A (ja) 流用文字作成方式
JP2740506B2 (ja) 画像認識方法
JP2003317091A (ja) 図形の線分近似方法、該図形の線分近似方法を実現するためのプログラムおよび図形の線分近似装置
JP3084817B2 (ja) 文字出力装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060801