(57)【特許請求の範囲】
【請求項１】
制御点により定義される近似曲線又は近似曲面を点群のデータ点が構成する対象物の曲線又は曲面に近似させる近似処理方法において、
前記点群のデータ点から初期制御点を形成し、
前記初期制御点から初期近似曲線又は初期近似曲面を生成し、
前記生成した初期近似曲線上又は初期近似曲面上で初期最近点を求め、
前記点群のデータ点と前記初期最近点とを結ぶ誤差ベクトルを求め、
前記誤差ベクトルに基づいて前記初期制御点を移動して移動後の制御点を求める１回目の工程と、
前記移動後の制御点により生成した近似曲線上又は近似曲面上において、前記点群のデータ点に最も近い最近点を算出する第１の算出工程と、
前記第１の算出工程で求めた最近点から前記点群のデータ点を結ぶ誤差ベクトルを算出する第２の算出工程と、
前記第２の算出工程で求めた誤差ベクトルに基づいて前記制御点を移動し修正後の制御点を算出する第３の算出工程と、
移動後の制御点により近似曲線又は近似曲面を生成する工程とを備え、
前記近似曲線又は近似曲面を生成する工程および各算出工程を幾何処理の演算手段により行い、
前記１回目の工程の後、前記第１〜第３の算出工程と前記近似曲線又は近似曲面を生成する工程とを繰り返し、
前記第２の算出手段で算出する誤差ベクトルの絶対値誤差と許容値との比較に基づいて、前記近似曲線又は近似曲面を点群のデータ点が構成する対象物の曲線又は曲面に近似させることを特徴とする、近似処理方法。
【請求項２】
前記第１の算出工程は、ニュートン法によって近似曲線又は近似曲面上において前記データ点に最も近い最近点を算出することを特徴とする請求項１に記載の近似処理方法。
【請求項３】
前記第３の算出工程は、前記第２の算出工程で算出した複数の誤差ベクトルの内、修正を行う制御点の周囲にある最近点について算出した誤差ベクトルに重み付け処理を行い、当該重み付けした誤差ベクトルをベクトル加算し、当該ベクトル加算された加算ベクトルを移動ベクトルとして前記制御点を移動し、移動後の制御点を修正後制御点として算出することを特徴とする請求項１又は２に記載の近似処理方法。
【請求項４】
前記第３の算出工程における重み付け処理は、前記制御点の周囲の最近点について求めた誤差ベクトルに係数を乗じる演算処理であり、
前記係数は制御点と最近点との距離に応じて、制御点に近い程ほど大きな値を設定することを特徴とする請求項３に記載の近似処理方法。
【請求項５】
前記係数は、ｕ＋ｖ＋ｗ＝1.0（ｖ、ｗは近似曲面Ｓのパラメータ）で表される重心座標系(barycentric coordinate)において、ｕ＝1.0−ｖ−ｗで表される重み付け係数であることを特徴とする請求項４に記載の近似処理方法。
【請求項６】
前記データ点と当該データ点に対応する近似曲線又は近似曲面上の最近点との距離に基づいて、近似曲線又は近似曲面の近似誤差を算出し、
前記近似誤差が所定値未満となるまで前記第１〜第３の算出工程を繰り返すことを特徴とする請求項１から５の何れか一つに記載の近似処理方法。
【請求項７】
前記制御点の算出処理の繰り返し回数が所定回数を超えた場合には、面分割による制御点の個数を増加させ、
前記近似誤差が所定値未満となるまで前記制御点の算出工程と前記面分割による制御点の増加を繰り返すことを特徴とする請求項６に記載の近似処理方法。
【請求項８】
前記曲面は、三角形メッシュによるLoop細分割、四角形メッシュによるCatmull-Clark,Doo-Sabin細分割、NURBS、B-Splineの何れか一つにより定められる制御点により定義されることを特徴とする請求項１から請求項７の何れか一つに記載の近似処理方法。
【請求項９】
点群のデータ点を結んで折れ線又はメッシュを形成する工程と、
当該折れ線又はメッシュからＱＥＭ（Surface simplification using quadric error metrics）の処理によって形状の特徴を保存した制御点を選択し、当該選択点を初期制御点とする工程とを備え、
前記近似曲線又は近似曲面を形成する工程は、前記初期制御点を用いて第１回目の近似曲線又は近似曲面の形成を行うことを特徴とする、請求項１から請求項８の何れかに記載された近似処理方法。
【請求項１０】
制御点により定義される近似曲線又は近似曲面を点群のデータ点が構成する曲線又は曲線に近似させる近似処理装置において、
点群のデータ点から初期制御点を形成し、
前記初期制御点から初期近似曲線又は初期近似曲面を生成し、
前記生成した初期近似曲線上又は初期近似曲面上で初期最近点を求め、
前記点群のデータ点と前記初期最近点とを結ぶ誤差ベクトルを求め、
前記誤差ベクトルに基づいて前記初期制御点を移動して移動後の制御点を求める１回目の工程と、
前記移動後の制御点により生成した近似曲線上又は近似曲面上において、前記点群のデータ点に最も近い最近点を算出する第１の算出工程と、
前記第１の算出工程で求めた最近点から前記点群のデータ点を結ぶ誤差ベクトルを算出する第２の算出工程と、
前記第２の算出工程で求めた誤差ベクトルに基づいて前記制御点を移動し修正後の制御点を算出する第３の算出工程と、
移動後の制御点により近似曲線又は近似曲面を生成する工程および各算出工程を行う演算手段を備え、
前記演算手段は、前記近似曲線又は近似曲面を生成する工程、および前記各算出工程を行う幾何処理の演算をソフトウエアで実行するためのＣＰＵ及び記憶装置、又は幾何処理の演算をハードウエアで実行するための回路を備え、
前記１回目の工程の後、前記第１〜第３の算出工程と前記近似曲線又は近似曲面を生成する工程とを繰り返し、
前記第２の算出手段で算出する誤差ベクトルの絶対値誤差と許容値との比較に基づいて、前記近似曲線又は近似曲面を点群のデータ点が構成する対象物の曲線又は曲面に近似させることを特徴とする、近似処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、点群データを近似して曲線あるいは曲面を生成する近似処理方法、近似処理装置に関する。
【背景技術】
【０００２】
自由曲面は、船、自動車、飛行機等、様々な工業製品のボディに用いられており、機能性と美しさの両方を兼ね備えるものであり、家庭電気製品や多くの消費材の外観など意匠的に美しい形状のデザイン設計に用いられる。【０００３】
近年、３Ｄレーザスキャナによって高密度の点群データを高速かつ容易に収集することができるようになり、物体形状を高精度で測定できることが可能と成っている。例えば、３Ｄモデリングの分野においては、デザイナが手作業で作成したモックアップモデルを３Ｄレーザスキャナで計測し、コンピュータに取り込んだ点群データやポリゴンデータをもとに製品として生産するために必要な曲面データなどのCADデータを作成していくという、いわゆるリバースエンジニアリングの手法が行われている。【０００４】
一般に、３ＤモデルはポリゴンモデルまたはNURBSやB-Splineなどの曲面パッチによりコンピュータ上で表現される。【０００５】
このポリゴンモデルは位相変化などの形状処理を行う上で効率的であるが、平面で構成されるため滑らかな表面を表現することができず、さらに形状を詳細に表現するほどデータ量が膨大になるなどの問題がある。【０００６】
曲面パッチは少ない制御パラメータで滑らかな曲面が表現できる反面、パッチ形状が四角形に限定される上にパッチ間の連続性を保つことが困難であるなどの問題がある。そこで、ポリゴンモデルと曲面パッチの利点を併せ持つ細分割手法が自由な幾何形状モデリングの有効な手法として注目されており、すでにアニメーションの分野では盛んに利用されている。【０００７】
細分割手法とは、初期ポリゴンメッシュに対して繰り返し規則的な分割を行うことによりその形状を滑らかにし、究極的には滑らかな曲面を得る手法である。その分割による曲面は細分割曲面（Subdivision Surface）と呼ばれ、究極的な曲面は極限曲面と呼ばれる。細分割手法は任意の位相を持つモデルに対しても簡単に滑らかな曲面を生成できるという特徴を持ち、さらにどの部分においても曲面が滑らかなに定義されるためモデリングなど幅広い利用が進んでいる。【０００８】
リバースエンジニアリングの分野において、従来、細分割曲面、B-Spline、NURBS等を用いることによって、測定した点群データを近似して曲面を生成する方法が提案されている。点群のデータ点を近似あるいは補間する従来提案される方法では、データ点から得られる初期制御点と生成される曲面との距離誤差が最小となるように制御点を逐次求める演算処理を行っている。この制御点を求める演算は、点群の列をＳ、この点群を近似する曲面と生成するための制御点の列をＰ、曲面を定める基底関数マトリックスをＡとしたとき、ＡＰ＝Ｓで表される線形の行列式を解くことで行われる。【０００９】
従来提案されている近似方法として、例えば、Halstedらが提案する多面体メッシュに対するCatmull-Clark細分割曲面の補間手法が知られている（非特許文献１）。この手法は大規模な線形システムを解く必要があるばかりでなく、さらにフェアリングと呼ばれる曲面修正のために最小化問題を解く必要があり、非常に計算コストが大きくなる。【００１０】
また、Hoppeらは、点群のデータ点に対するLoop細分割曲面の近似手法として、細分割操作を行ったポリゴンメッシュを線形近似した細分割曲面とみなし、その曲面に対して各点からの正射影を行うことでパラメータ化し、各点とそれに対する線形近似した細分割曲面上の点との距離が最小となる最小自乗問題として扱う手法を提案している。（非特許文献２）【００１１】
Hoppeら（非特許文献２）の方法は線形近似した面でパラメータ化を行っているのに対し、MarinovとKobbeltはStamの理論を用いて極限曲面上でパラメータ化を行っている。しかし、制御点の算出には大規模な線形システムを解いており多大な時間を要する。（非特許文献８）【００１２】
SDM法（Squared Distance Minimization）を応用し、点群にLoop細分割曲面をフィットさせる方法が提案されている。この方法では、初期曲面から二乗距離関数を局所的に二次近似した目的関数を逐次的に変形させ目標曲面に変形させている。この方法も線形システムを解いているため計算に多大な時間を要している。（非特許文献９）【００１３】
また、B-Spline曲線、曲面の補間において与えられた点群とその点群より生成された曲線、曲面のノットの関係を利用した手法が提案されている。この方法では、与えられた点群とノットとの距離を移動ベクトルとし、そのベクトル分対応する制御点を移動させ、この処理を点とノットとの距離が０になるまで繰り返す。だたし、両端で２重制御点を採用しているため、CADデータには利用できない。また、ノットとの誤差ベクトルを用いるため、うねりを生じる場合も出てくる。（非特許文献１０）【００１４】
【非特許文献１】M.Halsted, M.Kass and T.DeRose.Efficient,fair interpolation using Catmull-Clark surfaces.In Eugene Fiume,editor.Proceedings of SIGGRAPH 1993,pages47-61.ACM,ACM Press / ACM SIGGRAPH, 1993
【非特許文献２】H.Hoppe, T.DeRose, T.Duchamp and M.Halsted. Piecewise smooth surface reconstruction.In Proceedings of SIGGRAPH 1994,pages 47-61.ACM,ACM Press / ACM SIGGRAPH, 1994
【非特許文献３】M.Garland and P.S.Heckbert.Sueface simplification using quadric error metrics. In Proceedings of ACM SIGGRAPH 97,209-216.
【非特許文献４】C.T.Loop.Smooth subdivision surface based on triangle. Masters thesis, Department of Mathematics. University of Utha.1987/.
【非特許文献５】E.Catmull and J.Clark. Recusively generated b-spline surfaces on arbitrary topological meshes.Computer-Aided Design,10(6):350-355,1987.
【非特許文献６】D.Doo and M.Sabin. Behavior of recursive division surfaces near extraordinary points.Computer-Aided Design,10(6):356-360,1978.
【非特許文献７】G.M.Chaikin.An algorithm for high-speed curve generation. Computer Graphics and Image Processing,3:346-349,1974.
【非特許文献８】M.Marinov and L.Kobbelt, Optimization methods for scattered data approximation with subdivision surface,Graphical Models 67,2005,452-473.
【非特許文献９】K-S.D.Cheng, Wang.W, Qin.H, K-Y.K.Wong, Yang.H and Liu.Yang.2007.Design and analysis of optimization methods for subdivision surface fitting. IEEE Transaction on Visualization and Computer Graphics 13,5,878-890.
【非特許文献１０】Lin. H, Wang. G, and Dong. C. 2003. Constructing iterative non-uniform B-spline curve and surface to fit data points. Science in China 33, 912-923.
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記した、細分割曲面、B-Spline、NURBS等を用いて点群のデータ点を近似する従来提案される方法において、近似あるいは補間の演算を行列式を解くといった線形システムの解法を用いる方法では、その線形システムの演算の性質上、点群のデータ点及び制御点の個数が増加するほど演算回数が増加する。一般に、３Ｄモデリングに要する点群及びこの点群から形成される制御点の個数は多数であるため、点群から曲面を生成する演算は大規模な線形システムを解く演算となり、多大な計算時間を要するという問題がある。【００１６】
さらに、円滑な曲面を得るには、初期制御点と生成される曲面との距離誤差が最小となるまで、大規模な線形システムを解く演算処理を繰り返す必要があり、所望とする円滑な曲面を得るには膨大な時間を要することになる。【００１７】
そこで、本発明は前記した従来の問題点を解決し、点群のデータ点を近似する曲線又は曲面の生成において、演算時間を短縮することを目的とし、線形システムを解くことなく点群を近似する曲線又は曲面を生成する方法及び装置を提案することを目的とする。
【課題を解決するための手段】
【００１８】
本発明は、点群のデータ点の形状を曲線又は曲面で近似する近似処理において、点群のデータ点によって形成される折線あるいはメッシュから、形状の特徴を保持した特徴点を選択して制御点とし、この制御点によって曲線又は曲面を近似する。本発明は、この制御点を順次修正して近似度を高める際に、修正した各制御点の算出を単純な幾何アルゴリズムによって行うことによって、線形システムを解くための多大な計算時間を要すること無く短時間で近似を可能とするものである。【００１９】
なお、制御点によるフィッティングでは補間手法と近似手法が知られているが、補間手法はデータ点のデータ数と同数の制御点によって点群のデータ点をフィッティングするのに対して、近似手法ではデータ点のデータ数より少ない制御点によって数で点群のデータ点をフィッティングするものである。【００２０】
点群のデータ点から形状を保持して制御点を選択する手法としてQEM（Surface simplification using quadric error metrics：非特許文献３）を用いることができる。【００２１】
本発明は、点群のデータ点を開始データとし、このデータ点からQEM等の処理によって制御点を求め、算出工程によって制御点を順次修正する他、点群のデータ点とこのデータ点から選択した制御点とが既知である場合には、算出工程によって既知の制御点から順次修正してもよい。この制御点が既知である場合には、点群のデータ点から制御点を選択する処理を省くことができる。【００２２】
本発明において、制御点の移動は、与えられた点群の各データ点に対して最も近い曲線又は曲面上の最近点をニュートン法によって算出し、算出した最近点から各データ点に結ぶ誤差ベクトルを求め、この誤差ベクトルによって制御点を逐次的に移動させて近似を行う。この制御点を移動する処理は、線形システムを解くことなく幾何アルゴリズムの処理で行うことができるため、高速処理を行うことができる。【００２３】
本発明の方法は幾何アルゴリズムの処理で各制御点を扱うことになるため、線形システム自体を必要としない上に、幾何的なプロセスのみで近似曲線又は近似曲面を生成することができる。したがって、従来の方法と比べ処理を高速化することができる。【００２４】
なお、本発明は、三次元に限らず二次元についても同様に適用することができ、三次元上の点群のデータ点を近似する細分割曲面を生成するほか、二次元上の点群のデータ点を近似する曲線の生成にも適用することができる。【００２５】
また、本発明は、近似処理に関して、方法および装置の態様とすることができる。近似処理装置は、この近似処理方法をソフトウエアあるいはハードウエアによって実行させるための各手段を備える。【００２６】
本発明の近似処理方法は、制御点により定義される曲線又は曲面によって点群のデータ点を近似する近似処理方法において、形状の特徴を保存する制御点を用いて近似曲線又は近似曲面を形成する工程と、制御点の修正位置を算出する算出工程とを備える。【００２７】
制御点の修正位置を算出する算出工程は、近似曲線又は近似曲面上においてデータ点に最も近い最近点を算出する第１の算出工程と、第１の算出工程で算出した最近点からデータ点を結ぶ誤差ベクトルを算出する第２の算出工程と、第２の算出工程で求めた誤差ベクトルに基づいて制御点を移動して修正後の制御点を算出する第３の算出工程とを含む。
【００２８】
近似曲線又は近似曲面を形成する工程および各算出工程は、幾何アルゴリズムが組み込まれた演算手段により行うことができる。幾何アルゴリズムにより近似曲線又は近似曲面の形成工程と第１〜第３の算出工程を繰り返すことによって、近似曲線又は近似曲面をそれぞれ対象とするデータ点が構成する曲線又は曲面に近似させる。【００２９】
本発明の近似処理方法に用いる点群のデータ点は、例えば、三次元形状計測器等によって取得することができる。最初の制御点は、与えられた点群のデータ点を結んで折れ線又はメッシュを形成し、この折れ線又はメッシュからQEM等の処理によって形状の特徴を保存した点を選択することで取得することができる。この点を初期制御点として、第１〜第３の算出工程によって制御点の位置を修正する。【００３０】
この制御点の修正位置を算出する算出工程は単純な幾何処理であるため、従来の方法で必要な線形システムを解く必要がなくなる。【００３１】
第１の算出工程は、ニュートン法によって近似曲線又は近似曲面上においてデータ点に最も近い最近点を算出することができる。
【００３２】
第２の算出工程は、点群の全データ点において、各データ点についてそのデータ点と最近点とを結ぶ誤差ベクトルを算出する工程である。【００３３】
第３の算出工程は、第２の算出工程で算出した誤差ベクトルに基づいて各制御点を移動することによって修正した制御点を算出する工程であり、第２の算出工程で算出した複数の誤差ベクトルの内、修正を行う制御点の周囲にある最近点について算出した誤差ベクトルに重み付け処理を行い、この重み付けした誤差ベクトルをベクトル加算し、ベクトル加算で得た加算ベクトルを移動ベクトルとして、修正対象の制御点を移動し、移動後の制御点を修正制御点として算出する。
【００３４】
制御点の移動に用いる誤差ベクトルは、第２の算出工程において制御点の周囲の最近点で算出した誤差ベクトルをベクトル加算することで求める。このベクトル加算において、誤差ベクトルに重み付けを行うことによって、制御点が収束するまでの演算回数を低減させることができる。【００３５】
第３の算出工程における重み付け処理は、各誤差ベクトルに係数を乗じる演算処理によって行うことができる。この係数は制御点と最近点との距離に応じて定め、制御点に近い最近点により大きな値を設定し、制御点から遠い最近点により小さな値を設定することによって重み付けを行う。制御点に近い最近点ほど制御点との関連性が高いと想定され、制御点に近い最近点の誤差ベクトルに対して大きな値の係数で重み付けすることで、制御点が収束するまでの演算回数を低減させることができる。【００３６】
重み付けを行う係数は、重心座標系(barycentric coordinate)に従って定めることができる。【００３７】
本発明の近似処理は、データ点とこのデータ点に対応する最近点との距離に基づいて、近似曲線又は近似曲面の近似誤差を算出し、算出した近似誤差が所定値未満となるまで制御点の算出処理を繰り返す。【００３８】
近似曲面の形成において、制御点の移動による近似処理を所定回数繰り返しても近似誤差が所定値未満とならない場合には、制御点で形成されるメッシュの面分割を行って、制御点数を増加させたり、制御点で形成されるメッシュを局所的に再メッシュ化する。近似誤差が所定値未満となるまで制御点の算出工程と、面分割による制御点の増加や局所的な再メッシュ化とを繰り返す。【００３９】
また、近似曲線の形成において、制御点の移動による近似処理を所定回数繰り返しても近似誤差が所定値未満とならない場合には、ノット挿入によって制御点数を増加させる。近似誤差が所定値未満となるまで制御点の算出工程と制御点の増加とを繰り返す。【００４０】
本発明の近似処理装置は、制御点により定義される曲線又は曲面によって点群のデータ点を近似する近似処理装置であり、形状の特徴を保存する制御点を用いて近似曲線又は近似曲面を形成する工程と、近似曲線又は近似曲面上において、データ点に最も近い最近点を算出する第１の算出工程と、第１の算出工程で求めた最近点からデータ点を結ぶ誤差ベクトルを算出する第２の算出工程と、第２の算出工程で求めた誤差ベクトルに基づいて制御点を移動し修正後の制御点を算出する第３の算出工程の各工程を行う演算手段を備える。【００４１】
演算手段は、近似曲線又は近似曲面を形成する工程、および各算出工程を行う幾何アルゴリズムをソフトウエアで実行するためのCPU及び記憶装置、又は各幾何アルゴリズムをハードウエアで実行するための回路によって構成することができる。近似曲線又は近似曲面の形成工程と第１〜第３の算出工程の演算を繰り返して行うことによって、近似曲線又は近似曲面をそれぞれ対象とするデータ点が構成する曲線又は曲面に近似させる。【００４２】
曲面は、三角形メッシュによるLoop細分割（非特許文献４）、B-Spline、NURBS、四角形メッシュによるCatmull-Clark細分割（非特許文献５）、Doo-Sabin細分割（非特許文献６）等の細分割等で定められる制御点により定義することができる。【００４３】
また、曲線については、B-Spline曲線や、Chaikin細分割（非特許文献７）で定められる制御点により定義することができる。なお、Chaikin細分割は２次のB-Spline曲線に収束し、一般的にｎ次のB-Spline曲線についても近似を行うことができる。
【発明の効果】
【００４４】
以上説明したように、本発明によれば、点群のデータ点を近似する曲線又は曲面の生成において、演算時間を短縮することができる。【００４５】
また、本発明によれば、線形システムを解くことなく点群のデータ点を近似する曲線又は曲面を生成することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の近似処理の概略を説明するための概略図である。
【図２】本発明の近似処理の概略を説明するためのフローチャートである。
【図３】本発明の近似処理装置の概略構成図である。
【図４】本発明の近似処理を実施する工程を説明するための概略図である。
【図５】本発明の近似処理を実施する工程を説明するための概略図である。
【図６】近似曲面Ｓ(k)上の最近点Ｓ(k)（ti）を説明するための図である。
【図７】本発明の近似処理を実施する工程を説明するためのフローチャートである。
【図８】誤差ベクトルｅ(k)iの重み付けを説明するための図である。
【図９】制御点の周りの誤差ベクトルｅ(k)i,jを説明するための図である。
【図１０】制御点Ｐの増加を説明するための図である。
【図１１】局所的な再メッシュの一例を説明するための図である。
【図１２】局所的な再メッシュの一例を説明するための図である。
【図１３】本発明による結果例を示す図である。
【図１４】本発明の近似処理の一実施例を示す図である。
【図１５】本発明のB-Spline曲線の近似における重み付けを説明するための図である。
【符号の説明】
【００４７】
１…入力手段
２…記憶手段
２ａ…データ記憶部
２ｂ…演算ツールプログラム記憶部
２ｃ…演算処理プログラム記憶部
２ｄ…一時記憶部
２ｅ…演算結果記憶部
３…演算手段
４…表示手段
５…出力手段
【発明を実施するための最良の形態】
【００４８】
以下、本発明の実施の形態について、図を参照しながら詳細に説明する。【００４９】
図１は本発明の近似処理の概略を説明するための概略図、図２は本発明の近似処理の概略を説明するためのフローチャート、図３は本発明の近似処理装置の概略構成図である。【００５０】
図１，図２は、点群Ｐのデータ点ｐiから近似曲面Ｓ∞を求める手順を概略的に示している。なお、ここでは、３Ｄレーザスキャナ（３次元形状計測器）等から得られた高密度・不規則な点群Ｐのデータ点ｐiから開始し、この点群Ｐのデータ点ｐiで形成されるメッシュからQEM等の手法によって形状の特徴を表す制御点を求め、この制御点から最終的な近似曲面Ｓ∞を得る手順によって示している。【００５１】
また、点群のデータ点とこのデータ点から選択した制御点とが既知である場合には、既知の制御点を用いて順次修正し近似曲面Ｓ∞を得る手順に適用してもよい。【００５２】
なお、ここでは、主に曲面について説明するが、曲線についても同様に扱うことができる。また、以下のフローチャートでは、データ点を測定する工程から開始する場合について示している。【００５３】
はじめに、３Ｄレーザスキャナ等の三次元計測器によって対象物を測定し点群ｐのデータ点ｐiを求める（図１（ａ））（S1）。測定して得られた点群ｐのデータ点ｐiを連結してメッシュ化する。ここでは三角形メッシュの例を示している（図１（ｂ））(S2)。【００５４】
データ点ｐiにより形成される三角形メッシュから、元の対象物の形状特徴を保持しつつ簡略化し制御点とする。この制御点により制御メッシュが形成される。メッシュは三角形メッシュや四角形メッシュを用いることができる。この特徴を残すメッシュの簡略化の処理は、例えば、QEM等の既存の手法を用いることができる。【００５５】
ここで、最初の制御点Ｐ(0)から形成したメッシュを初期制御メッシュＭ(0)nとし、以後、制御点を変更して得られるメッシュを制御メッシュＭnとする。ここで、添え字の0は初期段階を表し、ｎは制御点数を表すものとする（図１（ｃ））（S3）。【００５６】
初期制御メッシュＭ(0)nの制御点Ｐ(0)を用いて初期近似曲面Ｓ(0)を生成する（図１（ｄ））（S4）。S4で生成した初期近似曲面Ｓ(0)上において点群ｐの各データ点ｐiに対応する初期最近点Ｓ(0)(ｔi)を求める（S5）。【００５７】
この初期最近点Ｓ(0)(ｔi)からデータ点ｐiに対する誤差ベクトルｅiを求め（図１（ｅ））、初期制御点Ｐ(0)の周囲に存在する誤差ベクトルｅiを用いて初期制御点Ｐ(0)の位置を移動する移動ベクトルｄを求める。初期制御点Ｐ(0)の周囲に複数の誤差ベクトルｅiが存在する場合には、これらの複数の誤差ベクトルｅiをベクトル加算して移動ベクトルｄを求める(S6)。【００５８】
求めた移動ベクトルｄによって初期制御点Ｐ(0)の位置を移動し、位置を修正した制御点を制御点Ｐ(k)とする(S7)。【００５９】
次回の処理では、最近点Ｓ(k)(ｔi)からデータ点ｐiに対する誤差ベクトルｅiを求め（図１（ｅ））、制御点Ｐ(k)の周囲に存在する誤差ベクトルｅiを用い、複数の誤差ベクトルｅiが存在する場合には、これらの複数の誤差ベクトルｅiについてベクトル加算し、制御点Ｐ(k)の位置を移動する移動ベクトルｄを求め(S6)、求めた移動ベクトルｄによって制御点Ｐ(k)の位置を移動し、位置を修正した制御点を制御点Ｐ(k+1)とする（図１（ｆ））(S7)。【００６０】
なお、制御点Ｐ(k)の添え字（ｋ）は繰り返しの回数を表し、（ｋ）回目の工程で得られる制御点をＰ(k)で表している。初期制御点Ｐ(0)は添え字(0)を上付して表し、その後に繰り返して得られる制御点Ｐ(k)の添え字（ｋ）は繰り返し毎に“１”増やすことによって、繰り返し回数を添え字（ｋ）の“ｋ”の数値で表すことができる。【００６１】
移動ベクトルｄによって移動して得られた制御点Ｐ(k)を用いて近似曲面Ｓ(k)を生成する（図１（ｇ））（S8）。S8で生成した近似曲面Ｓ(k)上において点群ｐの各データ点ｐiに対応する最近点Ｓ(k)(ｔi)を求める（S9）。【００６２】
上記したS6〜S9の工程を繰り返すことによって、制御点Ｐ(k)を順次移動して修正することによって近似曲面Ｓ(k)を対象体の形状に近似させる。【００６３】
近似曲面Ｓ(k) が対象体の形状に近似したか否かの評価は以下のS10〜S11の工程で行い、近似曲面Ｓ(k)の近似の程度が予め定めた許容値を満足しない場合には、S6〜S9の工程を繰り返して行う制御点の移動、あるいは、S13〜S15の工程によってメッシュの分割によって制御点を増加させる。【００６４】
近似曲線Ｓ(k) が対象体の形状に近似したか否かの評価は、最近点Ｓ(k)（ｔi）とデータ点ｐiとの絶対値誤差から誤差Ｅを求め(S10)、求めた誤差Ｅを予め定めておいた許容値と比較し(S11)、誤差が許容値内とならない場合には、S6〜S9の工程を繰り返して制御点の移動することで近似の程度を向上させ、また、S13〜S15の工程によってノットの挿入によって制御点を増加させる。
【００６５】
S13〜S15の工程によるメッシュの分割は、S6〜S9の工程を設定回数分繰り返しても誤差が許容値内とならない場合に行う(S12)。【００６６】
S12において、S6〜S9の工程を設定回数分繰り返しても誤差が許容値内とならない場合には、制御メッシュＭnにおいて、誤差が許容値内とならない箇所の制御メッシュを分割し（図１（ｉ））(S13)、分割で得られた制御メッシュＭmを用いて近似曲面Ｓmを求める（図１（ｊ））(S14)。なお、ここで、制御メッシュＭmの添え字“ｍ”は制御メッシュＭnと異なるメッシュ構成であることを表し、近似曲面Ｓmは制御メッシュＭmを用いて形成した近似曲面であることを表している。【００６７】
求めた近似曲面Ｓmについて最近点Ｓ(ｔi)を求め（図１（ｋ））(S15)、S6に戻り制御メッシュＭmの移動ベクトルｄの算出を行う。【００６８】
近似処理によって距離誤差が許容範囲内に収束したときに得られる近似曲面Ｓ∞は、点群ｐのデータ点ｐiを近似する近似曲面となる。【００６９】
本発明の工程は幾何アルゴリズムの演算によって行われる。例えば、S5,S9の工程では、初期近似曲面Ｓ(0)あるいは近似曲面Ｓ(k)上において、データ点ｐiに最も近い初期最近点Ｓ(0)(ｔi)あるいは最近点Ｓ(k)(ｔi)をニュートン法で算出し、S7の工程では、データ点ｐiと最近点Ｓ(k)(ｔi)との誤差ベクトルｅiを求め、この誤差ベクトルｅiを用いて制御点Ｐ(k)を移動する制御ベクトルｄを求める。求めた制御ベクトルｄによって制御点Ｐ(k)を移動し、S8の工程では移動した制御点Ｐ(k+1)を用いて近似曲面Ｓ(k+1)を求める。【００７０】
なお、曲面を細分割処理する場合には、例えば、三角形メッシュによるLoop細分割、四角形メッシュによるCatmull-Clark細分割、Doo-Sabin細分割等を用いることができ、また、B-Spline曲面についても適用することができる。また、曲線の細分割として、例えば、Chaikin細分割を用いることができる他、ｎ次のB-Spline曲線についても適用することができる。なお、Chaikin細分割は２次のB-Spline曲線に収束する。【００７１】
本発明の近似処理によれば、計算コスト、演算の一般性の点で以下の利点がある。本発明の近似処理では、制御点の修正を幾何アルゴリズムによって行うことによって、線形システムを解く必要がないため、処理の演算速度を向上させることができる。【００７２】
また、本発明の近似のアルゴリズムは、単純な幾何プロセスにより曲面生成を行っており、細分割曲面のみならず、B-Spline曲面や曲線など、制御点により定義される曲線、曲面に対して適用することができ、曲面生成について一般性を有する。【００７３】
図３は、本発明の近似処理のソフトウエアを記憶したプログラムをコンピュータで実行させる場合の一構成例を示している。【００７４】
入力手段１は、点群ｐのデータ点ｐiを入力し、記憶手段２中のデータ記憶部２ａに記憶する。記憶手段２は、データ記憶部２ａの他に、幾何処理の演算を行う演算ツールのプログラムを記憶する演算ツールプログラム記憶部２ｂ、近似処理の演算の他、細分割処理等の演算処理のプログラムを記憶する演算処理プログラム記憶部２ｃ、途中演算結果等を一時的に記憶する一時記憶部２ｄ、近似処理によって得られた曲面の演算結果を記憶する演算結果記憶部２ｅ等を備える。
【００７５】
データ記憶部２ａは、点群ｐのデータ点ｐiを記憶する他、点群ｐのデータ点ｐiから形成した三角形メッシュ、あるいは、メッシュからQEM等によって生成した初期制御メッシュＭｎを記憶してもよい。
【００７６】
演算手段３は、演算処理プログラム記憶部２ｃに記憶されるプログラムによる演算手順に従い、また、このプログラムに指定される演算ツールのプログラムを演算ツールプログラム記憶部２ｂから逐次読み出して演算処理を行う。
【００７７】
演算手段３で行う演算としては、例えば、データ記憶部２ａに記憶された点群ｐのデータ点ｐiから三角形メッシュを形成する演算処理、メッシュから初期制御点Ｐ(0)を求めて初期制御メッシュＭ(0)nを生成する演算処理、初期制御メッシュＭ(0)nを用いて行う初期近似曲面Ｓ(0)を生成する演算処理、制御メッシュＭnを用いて行う近似曲面Ｓ(k)nの生成を行う演算処理、初期近似曲面Ｓ(0)上においてデータ点ｐiに最も近い初期最近点Ｓ(0)(ｔi)をニュートン法で算出する演算処理、近似曲面Ｓ(k)n上においてデータ点ｐiに最も近い最近点Ｓ(k)(ｔi)をニュートン法で算出する演算処理、データ点ｐiと初期最近点Ｓ(0)(ｔi)との誤差ベクトルｅi、データ点ｐiと最近点Ｓ(k)(ｔi)との誤差ベクトルｅiを求め、この誤差ベクトルｅiを用いて制御点Ｐ(k)を移動する制御ベクトルｄを算出するベクトル演算を行う演算処理、制御ベクトルｄによって制御点Ｐを移動する演算処理等がある。【００７８】
演算結果記憶部２ｅに記憶された演算結果は、読み出されて表示手段４に表示したり、出力手段５に出力することができる。出力手段５は、演算結果を記録媒体に記録する記録装置、演算結果を用いて所定動作を行う加工装置等の外部装置とすることができる。【００７９】
なお、上記、ソフトウエア処理を行う構成は、専用のソフトウエア処理装置や、通常のパーソナルコンピュータに適用することができる。【００８０】
また、上記構成において、記憶手段を含む演算手段で実施される機能を回路で構成することでハードウエアにより実施することもできる。【００８１】
次に、本発明の近似処理の詳細について、三次元の点群から近似曲面を生成する場合について、図２のフローチャート，図４〜図１３の説明図を用いて説明する。以下のフローは一例であり、本発明の近似処理を実施する工程及び手順であれば他のフローで構成してもよい。【００８２】
近似のアルゴリズムの流れは、与えられた点群の三角形メッシュから、形状の特徴を保持する初期制御メッシュをQEM等によって生成し、この初期制御メッシュから初期近似曲面を生成する。次に、データ点から制御メッシュ(１回目は初期制御メッシュ、２回目以降は制御点を移動した制御メッシュ)より生成される近似曲面上で最も近い最近点を求め、このデータ点から最近点への誤差ベクトルを求め、この誤差ベクトルを用いて制御点を移動して新たな近似曲面を生成する。この制御点の移動と移動後の制御点による近似曲面の生成の工程を繰り返すことにより、元の形状により近似した近似曲面を求める。【００８３】
以下、図４〜図１３を用いて幾何アルゴリズムによる近似処理を説明する。三次元計測器によって点群ｐのデータ点ｐiを求め、各データ点ｐiを結んで、例えば、三角形メッシュによりメッシュ化する。図４（ａ）、（ｂ）は点群ｐのデータ点ｐiとメッシュ化で形成した三角形メッシュを模式的に示している。【００８４】
なお、点群ｐのデータ点ｐiに加えて、このデータ点ｐiから三角形メッシュを予め求めて記憶手段に記憶しておき、記憶手段から読み出しても良い。三次元の制御メッシュは、三角形メッシュの他に、四角形メッシュを用いてもよい。三角形メッシュの細分割手法としてはLoop細分割（非特許文献４）が知られ、四角形メッシュの細分割手法としてはCatmull-Clark細分割（非特許文献５）、Doo-Sabin細分割（非特許文献６）等が知られている。【００８５】
三角形メッシュから、よく知られたQEM（Surface simplification using quadric error metrics：非特許文献３）等の処理方法で初期制御点Ｐ(0)からなる初期制御メッシュＭ(0)nを生成し、初期制御メッシュＭ(0)nの制御点Ｐ(0)を記憶部２ａに記憶する。記憶した初期制御点Ｐ(0)を用いて初期近似曲面Ｓ(0)を生成する。なお、初期制御メッシュＭ(0)nによって生成される初期近似曲面を近似曲面Ｓ(0)で表す。以後、制御点を移動することで生成される制御メッシュＭnによってｋ回目に生成される近似曲面を近似曲面Ｓ(k)nで表す。【００８６】
図４（ａ）は点群ｐのデータ点ｐiを示し、図４（ｂ）は点群ｐのデータ点ｐiとデータ点ｐiから生成した制御メッシュＭnとを示している。図４（ｃ）は、点群ｐのデータ点ｐiから生成した制御メッシュＭnと、制御メッシュＭnによって生成される近似曲面Ｓ(k)nを示している。ここで、実線は制御メッシュＭnを示し、白抜きの丸印“○”は制御メッシュＭnの制御点Ｐを示している。破線は近似対象の曲面を示し、データ点ｐi（図４（ｃ）には示していない）はこの近似対象の曲面上の点である。図４（ｃ）は、近似曲面Ｓ(k)と近似対象曲面との間には誤差がある状態を示している。【００８７】
図５（ａ），（ｂ）は、近似曲面Ｓ(k)が近似対象曲面に近づく状態を示している。なお、データ点ｐiは図５中では黒丸“●”で示している。近似曲面Ｓ(k)は、制御点Ｐによって近似対象の曲面に近似するように形成される。【００８８】
制御点Ｐを移動することによって近似曲面Ｓ(k+1)を求める。制御点Ｐの移動を繰り返すことによって、近似曲面Ｓ(k+1)と近似対象曲面との間の誤差は減少し、近似対象曲面に逐次近づいていく。制御点Ｐの移動は、データ点ｐiと、近似曲面Ｓ(k)上でデータ点ｐiに最も近い最近点Ｓ(k)（ti）との誤差ベクトルｅiに基づいて行う。【００８９】
図５は、データ点ｐiと、近似曲面Ｓ(k)上においてデータ点ｐiに最も近い最近点Ｓ(k)（ti）との関係を示している。図５（ａ）において、最近点Ｓ(k)（ti）は近似曲面Ｓ(k)上においてデータ点ｐiに最も近い点であり、図中では×印で示している。また、図５（ｂ）において、最近点Ｓ(k+1)（ti）は近似曲面Ｓ(k+1)上においてデータ点ｐiに最も近い点であり、図中では×印で示している。【００９０】
図５（ａ）は移動前の制御点Ｐ(k)とこの制御点Ｐ(k)による近似曲面Ｓ(k)を示し、図５（ｂ）は移動後の制御点Ｐ(k+1)とこの制御点Ｐ(k+1)による近似曲面Ｓ(k+1)を示している。制御点を移動することによって形成された近似曲面Ｓ(k+1)は近似対象の曲面に漸近する。【００９１】
図６は、近似曲面Ｓ(k)上の最近点Ｓ(k)（ti）を説明するための図である。図６において、Ｔpは接平面、ｐiはデータ点、Ｓ（v,w）はパラメータ（v,w）における近似曲面上の点、ｉはデータ点番号を示している。【００９２】
1つのデータ点から近似曲面への垂線は次式により与えられる。
［（ｐ−Ｓ(v,w)）・Ｓｖ (v,w)］＝０
［（ｐ−Ｓ(v,w)）・Ｓｗ (v,w)］＝０                          …（１）【００９３】
なお、ｖとｗは曲面のパラメータであり、Ｓｖ、Ｓwは細分割曲面Ｓのｖ、ｗ方向の微分を示している。【００９４】
各データ点ｐiから、制御点によって張られる細分割曲面Ｓ上の最短距離となる点は、Marinov and  Kobbelt（非特許文献８）によると、ｐから接平面Ｔpへの垂線を求める曲面のパラメータ（Δｖ、Δｗ）に関する以下の式を解くことにより求めることができる。【００９５】
［ｐ−(Ｓ(v,w)＋Ｓｖ(v,w)Δｖ＋Ｓｗ(v,w)Δｗ)］・Ｓｖ(v,w)］ij＝０  
［ｐ−(Ｓ(v,w)＋Ｓｖ(v,w)Δｖ＋Ｓｗ(v,w)Δｗ)］・Ｓｗ(v,w)］ij＝０  …（２）【００９６】
ここで、iはデータ点番号、jはパラメータ化におけるニュートン法の繰返し回数であり、（Δｖ，Δw）は曲面のアップデートパラメータである。【００９７】
データ点ｐiと最近点Ｓ(k)（ti）との間の誤差はベクトルによって表すことができる。ここでは、データ点ｐiから最近点Ｓ(k)（ti）への誤差ベクトルｅiによって表す。図５中では、この誤差ベクトルｅiは、データ点ｐiと最近点Ｓ(k)（ti）あるいはＳ(k+1)（ti）とを結ぶ直線で示している。【００９８】
本発明は、制御点Ｐの周囲に存在するデータ点ｐiについて、そのデータ点ｐiと最近点Ｓ(k)（ti）との誤差ベクトルｅiを求め、複数の誤差ベクトルｅiがある場合には、これらの誤差ベクトルｅiをベクトル加算して移動ベクトルｄを求め、この移動ベクトルｄによって制御点Ｐを移動することによって新たな制御点Ｐ(k+1)を求める。この制御点の移動状態は、前記の図５に示している。図５（ａ）は移動前の制御点Ｐ(k)とこの制御点Ｐ(k)による近似曲面Ｓ(k)を表し、図５（ｂ）は移動後の制御点Ｐ(k+1)とこの制御点Ｐ(k+1)による近似曲面Ｓ(k+1)を表している。【００９９】
制御点Ｐ(k)を誤差ベクトルｅiを用いて移動する際、各データ点ｐiおよび最近点Ｓ(k)（ti）により求めた各誤差ベクトルｅiに重み付けし、重み付けした誤差ベクトルｅiをベクトル加算して移動ベクトルｄを求める。なお、制御点Ｐ(k)の周囲にデータ点ｐiが１点のみしか存在しない場合には、この１点のデータ点ｐiに対応する最近点Ｓ(k)（ti）を求め、このデータ点ｐiと最近点Ｓ(k)（ti）との誤差ベクトルｅiに重み付けを行った誤差ベクトルｅiを移動ベクトルｄとする。【０１００】
また、重み付けを行う誤差ベクトルｅiは制御点Ｐの周囲に存在する。制御点Ｐの周囲として、例えば、制御点Ｐ(k)を共通の頂点とするメッシュが生成する近似曲面内とすることができ、これらメッシュは制御点Ｐ(k)を中心として１ループを形成している。制御点Ｐ(k)の周囲に存在するメッシュは各制御点に応じて異なり、また、各メッシュに対応して存在する誤差ベクトルｅiも各メッシュに応じて異なるため、重み付けを行う誤差ベクトルｅiの個数は一定ではないが、誤差ベクトルｅiを形成するデータ点ｐiおよび最近点Ｓ(k)（ti）は、点群のデータ点の点数により定まっているため、全制御点Ｐについて用いる誤差ベクトルｅiの個数は一定である。【０１０１】
ここで、重み付けを行う程度は、制御点Ｐと最近点Ｓ(k)（ti）との距離に応じて定めることができる。制御点Ｐ(k)の近くに存在するデータ点ｐiに係わる誤差ベクトルｅiに対しては重み付けの程度を大きく設定し、制御点Ｐから遠くに存在するデータ点ｐiに係わる誤差ベクトルｅiに対しては重み付けの程度を小さく設定する。この重み付けを行うことによって、近似曲面Ｓを得るための繰り返し回数を低減させることができる。【０１０２】
以下、図７のフローチャートおよび図８の説明図を用いて誤差ベクトルｅiの重み付けについて説明する。図８では、制御点Ｐ(k)の周囲に形成される複数の三角形メッシュの内の一つの三角形メッシュ（図８中の太い実線が形成される三角形）について示している。図８において、三角形メッシュを太い実線で示し、この三角形メッシュに対する近似曲面Ｓに濃淡を付して示している。【０１０３】
図８において、黒丸“●”で示すデータ点ｐiは近似対象の曲面上の点であり、×印で示す最近点Ｓ(k)（ti）はデータ点ｐiに最も近い点であり、データ点ｐiと最近点Ｓ(k)（ti）との間の矢印は誤差ベクトルｅ(k)i,Jを示している。なお、図８では、三角形メッシュおよび近似曲面Ｓにおいて、データ点ｐiと最近点Ｓ(k)（ti）と誤差ベクトルｅ(k)i,Jの１組のみを示している。“Ｊ”は制御点Ｐの周囲に存在するＪ番目の最近点Ｓ(k)（ti）を表している。【０１０４】
制御点Ｐ(k)の移動は、この制御点Ｐ(k)の周囲に存在する誤差ベクトルｅ(k)i,Jに重み付けし、さらに、重み付けした重み付け誤差ベクトルｅ*(k)i,Jをベクトル加算して求めた加算誤差ベクトルΣｅ*(k)i,Jを用いて行う。なお、“*”は重み付けしたことを表している。【０１０５】
この誤差ベクトルｅ(k)i,Jの重み付けは、その最近点Ｓ(k)（ti）と制御点Ｐ(k)との距離に応じて行う。重み付け処理は、誤差ベクトルｅ(k)i,Jに重み付け係数ｕ(k)i,Jを乗じることによって行うことができる。【０１０６】
重み付け処理において、制御点Ｐの近くに存在する誤差ベクトルｅ(k)i,Jに対しては、重み付け係数ｕ(k)i,Jの値を大きく設定して乗じ、制御点Ｐから遠くに存在する誤差ベクトルｅ(k)i,Jに対しては、重み付け係数ｕ(k)i,Jの値を小さく設定して乗じる。ここで、重み付け係数ｕ(k)i,Jは、ｕ(k)i,J＝1.0−ｖ(k)i,J−ｗ(k)i,Jで表される重心座標系(barycentric coordinate)を用いることができる。この重心座標系(barycentric coordinate)による重み付け係数ｕ(k)i,Jは、図８において近似曲面Ｓ(k)上の曲線で表される。【０１０７】
この重み付け係数ｕ(k)i,Jを用いることによって、重み付けされた誤差ベクトルｅ＊(k)i,Jは
ｅ＊(k)i,J＝ｕ(k)i,J・ｅ(k)i,J        …（３）
Ｊ＝１，…，ｍ
で表される。なお、ｍは制御点Ｐ＊(k)を共通の頂点としてその周囲に形成される複数の近似曲面Ｓ上に存在する最近点Ｓ＊(k)（ti）の個数である。また、制御点Ｐ＊(k)における重み付け係数ｕ(k)i,Jは“１”であり、制御点Ｐ＊（ｋ）から離れた近似曲面Ｓの縁部における重み付け係数ｕ(k)i,Jは“０”である（S6a）。
【０１０８】
次に、制御点Ｐ(k)の周囲に存在する全最近点Ｓ(k)（ti）について、重み付けした重み付け誤差ベクトルｅ＊(k)i,Jを加算して正規化することによって、移動ベクトルｄを求める(S6b)。
【０１０９】
図９は、制御点の周りの誤差ベクトルｅ(k)i,Jを説明するための図である。【０１１０】
各三角形メッシュが形成するそれぞれの近似曲面Ｓ(k)において、各最近点Ｓ(k)（ti）についてデータ点ｐiからの誤差ベクトルｅ(k)i,Jに重み付けを行って重み付け誤差ベクトルｅ(k)i,Jを求める。【０１１１】
一つの制御点Ｐ(k)にはその制御点Ｐ(k)を共通の頂点とする複数の三角形メッシュが存在し、各三角形メッシュが形成する近似曲面Ｓ(k)にある最近点Ｓ(k)（ti）について重み付けられた誤差ベクトルｅ＊(k)ｉが生成されるため、一つの制御点Ｐ(k)に複数の重み付け誤差ベクトルｅ＊(k)i,Jが生成される。制御点Ｐ(k)において、これらの重み付け誤差ベクトルｅ＊(k)i,Jを加算して制御点を移動する移動ベクトルｄ(k)を求める。
【０１１２】
制御点Ｐ(k)を移動する移動ベクトルｄ(k)は、
ｄ(k)＝ΣJｅ＊(k)i,J／Σｕ(k)i,J          …（４）
で表される。Σｕ(k)i,Jは重み付け係数ｕ(k)i,Jの加算値であり、この加算値で誤差ベクトルｅ＊(k)i,Jの加算値（ΣJｅ＊(k)i,J）を除算することで正規化する。
【０１１３】
この移動ベクトルｄ(k)によって制御点Ｐ(k)を移動することで新たな制御点Ｐ(k+1)を生成する。求めた新たな制御点Ｐ(k+1)に基づいて近似曲面Ｓ(k+1)を求める。
【０１１４】
ここで、誤差関数Ｅを用いた近似処理の近似の程度の評価について説明する。評価関数Ｅは、データ点ｐiと最近点Ｓ(k)（ti）との絶対値誤差を算出する。評価関数Ｅとして、平均誤差Ｅaveと最大誤差Ｅmaxを定めることができる。【０１１５】
それぞれ次式で定めることができる。
平均誤差Ｅave＝Σni=1‖ｐi−Ｓ(k)（ti）‖2／ｎ        …（５）
最大誤差Ｅmax＝max1≦i≦n‖ｐi−Ｓ(k)（ti）‖2       …（６）【０１１６】
なお、‖ｐi−Ｓ(k)（ti）‖2は、（ｐi−Ｓ(k)（ti））の自乗平均を表している。【０１１７】
前記した図２のフローチャートのS10の誤差Ｅと許容値との比較において、求めた平均誤差Ｅaveと最大誤差Ｅmaxについて予め定めておいた許容値と比較し、平均誤差Ｅaveおよび最大誤差Ｅmaxが許容範囲内となるまで、S6〜S9の工程を繰り返す。【０１１８】
S6〜S9の工程による制御点の移動を所定回数繰り返しても、誤差Ｅaveおよび最大誤差Ｅmaxが許容範囲内に収束しない場合には(S12)、メッシュを分割して、制御点Ｐを増加して(S13)、近似曲面Ｓm、最近点Ｓ(k)（ti）を求め(S14,15)、平均誤差Ｅaveおよび最大誤差Ｅmaxが許容範囲内となるまで、再度S6〜S9の工程を繰り返す。【０１１９】
図１０は、メッシュの分割による制御点Ｐの増加を説明するための図である。図１０（ａ）は、１３個の三角形メッシュの例を示している。【０１２０】
一例として、中央の三角形メッシュにおいて、３つの制御点の中央に新たに制御点（図中の白丸“○”で示す）を加えることによって、１つの三角形メッシュを４つの三角形メッシュに分割する。さらに、互換性を崩さないために追加した制御点を外側の三角形メッシュの制御点とを接続して、外側の３つの三角形メッシュのそれぞれを２つの三角形メッシュに分割する。【０１２１】
また、他の例では、中央に並ぶ３個の三角形メッシュにおいて、それぞれの三角形メッシュが持つ３つの制御点の中央に新たに制御点（図中の白丸“○”で示す）を加えることによって、各三角形メッシュについて１つの三角形メッシュを４つの三角形メッシュに分割する。さらに、互換性を崩さないために追加した制御点と外側の三角形メッシュの制御点とを接続して、外側の５つの三角形メッシュのそれぞれを２つの三角形メッシュに分割する。
【０１２２】
また、制御点の点数を増加する他に、局所的な再メッシュによって近似度を高めることができる。図１１、図１２は局所的な再メッシュの一例である。【０１２３】
図１１は制御点Ｐの位相的な調整を説明するための図である。メッシュの質を制御点の位数ｄ（ｖ）によって評価することが知られている。境界の頂点での最適な位数ｄopt（ｖ）は４であり、その他の頂点での最適な位数ｄopt（ｖ）は６である。【０１２４】
メッシュの質を評価する評価関数Ｒ（Ｍ）として
Ｒ（Ｍ）＝Σ（ｄ（ｖ）−ｄopt（ｖ）)2        …（７）
が知られ、この評価値が低いほどメッシュの質が高いことを示している。なお、ｖはＭの要素である。【０１２５】
評価関数Ｒ（Ｍ）の値を、図１１（ａ）に示すメッシュと図１１（ｂ）に示すメッシュとで比較すると、図１１（ｂ）に示すメッシュの評価関数Ｒ（Ｍ）の値は図１１（ａ）に示すメッシュの評価関数Ｒ（Ｍ）の値よりも低い値となる。したがって、メッシュの接続状態を変更することによって評価関数Ｒ（Ｍ）を下げることができ、このことはメッシュの質が高まったことを示している。【０１２６】
また、細長いメッシュは望ましくないうねりの要因となるため、細長いメッシュを取り除く必要がある。【０１２７】
図１２は、制御点を調整することで細長いメッシュを取り除く例を示している。図１２（ａ）に示す制御点の接続状態から図１２（ｂ）に示す制御点の接続状態に変更することによって三角形メッシュの角度を大きくし、これによって細長いメッシュを除去する。【０１２８】
以下に、本発明による結果例を図１３に示す。図１３は、繰り返しによる誤差と計算時間の変化を示している。【０１２９】
平均誤差Ｅaveは１６回目の繰り返しで0.01％に達し、最大誤差Ｅmaxは３０回目の繰り返しで0.05％に達した。なお、５回目毎に表れる最大誤差Ｅmaxのピークは、制御点の調整によるものである。【０１３０】
また、以下の表１は、各モデル例による誤差と計算時間を、本発明の例と他の手法による例を示している。比較に用いた他の手法は[Marinov and Kobbelt 2005]（非特許文献８）と[Cheng etl 2007]（非特許文献９）である。【０１３１】
【表１】
0005436416.tif 000002
【０１３２】
表１において、本発明の近似処理では、平均誤差を0.01％とし最大誤差を0.05％とし、Pentium(登録商標)IV  3.0GHzのPC、2GBのRAMを用いて実施している。【０１３３】
本発明の近似処理と[Marinov and Kobbelt 2005]（非特許文献８）の手法とを比較すると、本発明によれば約６倍の処理速度であると評価することができる。なお、[Marinov and Kobbelt 2005]（非特許文献８）では、Pentium(登録商標)  2.8GHzのPC、2GBのRAMを用いて実施し、平均誤差に代えて自乗平均誤差を用いている。【０１３４】
本発明の近似処理と[Cheng et al. 2007]（非特許文献９）の手法とを比較すると、本発明によれば約６倍の処理速度であると評価することができる。なお、[Cheng et al. 2007] （非特許文献９）では、Xeon  2.8GHzのPC、2GBのRAMを用いて実施している。【０１３５】
図１４は、本発明の近似処理の一実施例を示す図である。図１４（ａ）は近似対象の対象物のイメージを示し、図１４（ｂ）はデータ点を対象物のイメージに重ねて示した図であり、図１４（ｃ）はQEMによる三角形メッシュを示し、図１４（ｄ）は誤差ベクトルおよび制御ベクトルを示し、図１４（ｅ）は近似処理で得られた近似曲面を示している。【０１３６】
上記では三次元による近似曲面を生成する例について説明したが、二次元による近似曲線を生成する場合にも適用することができる。【０１３７】
以下、近似曲線を生成する例について説明する。以下では、与えられたn+1個の点群を近似するB-spline曲線について説明する。【０１３８】
はじめに、n+1個の点群から形状を保ちつつ特徴点Ｓを選び出す。このとき、近似曲線の簡略化手法であるダグラス・ポイカーアルゴリズム(Douglas-Peucker Algorithm)を用いる。このダグラス・ポイカーアルゴリズムは、近似曲線の簡略化手法であって、コンピュータグラフィックや地理情報システムにおいて広く用いられるものであり、近似曲線の始点と終点とを結んだ一本のエッジで簡略化から開始し、そのエッジに対して残りの頂点との距離を求め、エッジからの距離が閾値よりも遠い頂点がある場合には、最も遠い頂点によって近似曲線を分け、分けた近似曲線に対してそれぞれのエッジを簡略化する過程を帰納的に行うものである。【０１３９】
選び出されたN+1の特徴点Ｓに対してパラメータ値を割り当て、ノットベクトルＴを定義する。ノットベクトルＴと特徴点Ｓを制御点Ｐとして初期曲線を生成する。ここで、本発明の曲線近似では、誤差ベクトルの算出と制御点の移動の２つの工程で行う。【０１４０】
誤差ベクトルの算出では、入力点群から制御点Ｐで定義される曲線へ垂線を下し、曲線へ垂線を下ろしたときの垂線の足から入力点に向かうベクトルを誤差ベクトルとする。垂線は入力点から曲線への最近点に相当し、ニュートン法によって求めることができる。
【０１４１】
制御点の移動において、近似手法は補間手法と違って入力点群数に比べ制御点数が少ないため、誤差ベクトルと制御点とは一対一に対応しておらず、誤差ベクトルと移動ベクトルは一致していない。そのため、それぞれの入力点について、垂線が下りたスパンに影響を与える制御点ごとに誤差ベクトルをB-spline基底関数に基づいて重み付けを行う。それぞれの制御点Ｐを重み付けした移動ベクトルによって移動して新たな制御点Ｐを求める。【０１４２】
この工程を繰り返すこと曲線近似を行うことができる。入力点群全てに対して距離が閾値を満たすまで上記二つ工程を繰り返すことにより、入力点群に近似するB-spline曲線を生成する。また、繰り返しの過程において、距離が大きい部分には適宜ノットを挿入することによって曲線の自由度を上げながら近似を行う。【０１４３】
B-spline曲線の近似において、誤差ベクトルの重み付けはB-spline基底関数に基づいて行う。【０１４４】
この重み付けでは、一つのスパンを構成するｋ個の制御点に着目して行う。各入力点について、垂線が下りたスパンに影響を与える制御点ごとに誤差ベクトルをB-spline基底関数に基づいて重み付けすることによって、移動ベクトルを定義する。B-spline基底関数を用いた重み付けを行うことで、制御点に近い誤差ベクトルほど大きく重み付けを行うことができる。【０１４５】
図１５はB-spline曲線の近似における重み付けを説明するための図である。図１５において、入力点Ｑから曲線に下ろした垂線の足が下りたスパンｓを探す。【０１４６】
スパンｓを構成するｋ個の制御点毎に、B-spline基底関数で重み付けした誤差ベクトルを足し合わせる。図１５に示す例では、スパンｓを構成する制御点Ｐs-1，Ｐs，Ｐs+1，Ｐs+2ごとに足し合わせる。【０１４７】
上記した工程を入力した点群の全てのデータ点について行い、総和ベクトルを正規化して移動の方向ベクトルを求める。正規化は、重み付けした誤差ベクトルの大きさを制御点ごとに足し合わせたスカラー量で除算することで行うことができる。また、大きさの総和（前記スカラー量）を足し合わせた総数で割って平均化することで移動量を求める。【０１４８】
本願発明は、上記して細分割曲面やB-Splineに限らず、NURBS等にも適用することができる。
【産業上の利用可能性】
【０１４９】
本発明は、３Ｄモデリングの分野におけるリバースエンジニアリングに適用することができる。
【図２】
0005436416.tif 000003
【図３】
0005436416.tif 000004
【図７】
0005436416.tif 000005
【図１０】
0005436416.tif 000006
【図１１】
0005436416.tif 000007
【図１２】
0005436416.tif 000008
【図１３】
0005436416.tif 000009
【図１５】
0005436416.tif 000010
【図１】
0005436416.tif 000011
【図４】
0005436416.tif 000012
【図５】
0005436416.tif 000013
【図６】
0005436416.tif 000014
【図８】
0005436416.tif 000015
【図９】
0005436416.tif 000016
【図１４】
0005436416.tif 000017