3次元点群に対する最小二乗法での平面算出と距離計算について

このQ&Aのポイント
  • 3次元の点群に対する最小二乗法での平面の算出方法と、点と平面の距離の計算方法について教えてください。
  • 最小二乗法を用いて3次元の点群から平面を算出する場合、点と平面のZ軸方向の距離の二乗和を最小化する手法があります。
  • 一方、点と平面の空間的な最小距離の二乗和を最小化する場合には、どのように計算すれば良いのか分からない状況です。指導をお願いします。
回答を見る
  • ベストアンサー

3次元での点群に対する最小二乗法での平面の算出について(点と平面の距離

3次元での点群に対する最小二乗法での平面の算出について(点と平面の距離。残差ではない。) -- 点と平面のZ軸方向の距離(残差)の二乗和を最小とする場合には、 平面をax+by+c=zとして、Σ(ax+by+c-z)^2をa,b,cのそれぞれで偏微分して それを=0とした連立方程式を解くことで解を得ることが出来ました。 また、式の形も、ある点のxとyを平面の式へ代入した際の値と、点のz値の差分を見ており、 簡単に納得のできるものとなりました。 これに対して、点と平面の距離(空間的な最小距離)の二乗和を最小とする場合には、 どのような流れで計算すれば良いのでしょうか? 点と平面の距離は|Ax+By+Cz+D| (A,B,Cは単位ベクトル)として求まりますが、 これをどう使うのかが分かりません。 Σ(Ax+By+Cz+D)^2をA,B,C,Dのそれぞれで偏微分して=0としても、 定数項が無いため、連立方程式の解がすべてゼロとなってしまいます。 強引に、Σ(A'x+B'y+C'z+1)^2として変形させて解いてみましたが、 得られたA',B',C'からA,B,C,Dに戻すと、Dがきちんと出ませんでした。(他についても怪しい。) こういった状況に迷い込んでしまい、どう考えるのが良いのか分からなくなってしまいました。 指南いただけませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.2

平面の式は、単に Ax+By+Cz+D=0 としたのでは、一意に決まりません。 同じ平面が、 2Ax+2By+2Cz+2D=0 とでも 3Ax+3By+3Cz+3D=0 とでも 書けるからです。 そのために、「(A,B,C) は単位ベクトル」としたのではありませんか? だから、Σ(Ax+By+Cz+D)^2 を最小化するときに、単なる最小値でなく、 A^2+B^2+C^2=1 という制約下での最小値を探せばよいのです。 ラグランジュの未定乗数法が使えます。 あるいは、制約なしで、Σ(Ax+By+Cz+D)^2/√(A^2+B^2+C^2) を最小化 してもよいのだけれど。

otootooto
質問者

補足

とても納得できました! ラグランジュの未定乗数法を手計算でやってみたのですが、λの導出が3次方程式になってしまったのと、係数が多くなり過ぎて力尽きました。。。間違えたのでしょうか? Σ(Ax+By+Cz+D)^2/√(A^2+B^2+C^2) を最小化する場合には、これも非線形であるために、 偏微分=0として解くには難解となりそうだな。。。と躊躇しております。 非線形最小化であるため、ニュートン・ラフソン法であればすんなりと出来たのですが、 この問題に対して妥当な方法と言えるでしょうか?

その他の回答 (3)

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.4

No.3です。 3次元で考えれば各点から平面に下ろした垂線の足の長さになりますから、Z方向の差分ではないと思いますよ。

otootooto
質問者

補足

追記ありがとうございます。 Σ(ax+by+c-z)^2として解くと、平面の方程式に点のxとyを代入して算出される本来のz'値ax+by+cと、点のz値との差分を二乗しているため、各点から平面のZ方向の差分であると考えています。 どこに誤りがあるのでしょうか?いただいた説明では分かりませんでした。。。

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.3

2次元平面でも各点から回帰式y=ax+bに下ろした垂線の足の長さの2乗を最小にする考え方がありますが、それは主成分分析を使うと思います。

otootooto
質問者

補足

これは点のz値の差分として記載した側の方法ですね?

回答No.1

平面の方程式をax+by+cz+d=0とすると、 点(xi,yi,zi)と平面の距離=|axi+byi+czi+d|/√(a^2+b^2+c^2) したがって、 二乗和=Σ[i=1~n](axi+byi+czi+d)^2/(a^2+b^2+c^2) これをa,b,c,dで偏微分した式を連立させてa,b,c,dを求めることに なりますが、分母にも変数があることから、非線形連立方程式を 解くことになろうと思います。 最小二乗直交距離フィッティング等のキーワードで検索して みてもよいと思います。

otootooto
質問者

補足

上の補足にも記載したのですが、非線形連立方程式という形で一発で解けるのでしょうか? 非線形最小化であるため、ニュートン・ラフソン法であればすんなりと出来たのですが、 この問題に対して妥当な方法と言えるでしょうか?

関連するQ&A

  • 平面と楕円体との距離の最小値を求めたいのですが・・・・

    平面ax+by+cz=d と 楕円体x^2/16+y^2/4+z^2=1 について、 平面と楕円体の距離が最小となる時の楕円体上の点の座標を求めよ というものです。 初めにラグランジュの乗数法を用いて解こうとしましたが混乱してしまいました。 求める座標をx,y,zとして (x-X)^2+(y-Y)^2+(z-Z)^2-λ(x^2/16+y^2/4+z^2-1)=0 (ただしX,Y,ZはaX+bY+cZ=dを満たすもの) から、x,y,z,λで偏微分して連立しようとしました。 平面ではなく点なら簡単だったのですが、こういう場合はどうやって x,y,zが求まるのでしょうか。それとも他に簡単な解法があるのでしょうか。もしありましたら教えていただけないでしょうか。

  • 最小2乗

    (1) (x,y)=(-3,4),(-2,1),(-1,0),(0,-1),(1,1),(2,2),(3,3)を 方程式 y = ax^2 + bx + c で最小2乗法に当てはめたときの a,b,cを求める (2) 要素(x,y,z)=(1,3,2),(2,1,1),(3,2,4),(4,5,3),(5,4,5)が z = ax + by + p とモデル化されるとき、残差の2乗Σp^2 が 最小になるように定式化して、最小となるa,bを求める という問題です。 これらを行列を用いて解きたいのですが、どのようにすればよいか分かりません。よろしくお願いします。

  • 最小二乗平面

    ある複数の空間座標(x1,y1,z1)~(xn,yn,zn)(nは3以上)から、平面近似式である最小二乗平面の方程式を求める関数を作ろうと考えています。 平面方程式はz=ax+by+c(a,b,cが定数)であらわされ、引数を座標と座標個数n、戻り値をa,b,cにします。 ここ(http://oshiete1.goo.ne.jp/qa2802443.html)を参考に 最小二乗平面の連立方程式を解くコードを書いたのですが、 どうも答えが合いません。どなたかご教授願えないでしょうか? 開発環境はC++Builder2007です。 ↓の数式をコードにしましたが、コードが間違っているのか、 数式自体がダメなのかさっぱりわかりません。 //与えられるn個の3次元座標(xi,yi,zi)から平面方程式を求める //平面方程式:z = ax + by + c //最小二乗平面を求める連立方程式は下記のようになる。 // aΣxi^2 + bΣxiyi + cΣxi = Σxizi // aΣxiyi + bΣyi^2 + cΣyi = Σyizi // aΣxi + bΣyi + cn = Σzi //これを行列で解く // |Σxi^2 Σxiyi Σxi | |a| = |Σxizi| // |Σxiyi Σyi^2 Σyi | |b| = |Σyizi| // |Σxi Σyi n | |c| = |Σzi | //ここで // |Σxi^2 Σxiyi Σxi | // A = |Σxiyi Σyi^2 Σyi | // |Σxi Σyi n | // // |Σxizi| // B = |Σyizi| // |Σzi | // // |a| // C = |b| // |c| // //とすると // // C = B・A^-1 // //で求めることができる

  • 3次元の平面と対称点の問題を教えて下さい。

    この問題です。 A(3,1,0),B(0,1,-1),C(8,0,1)∊R³を(通る平面Πは原点を通らないので、 {(x,y,z)∊R³|ax+by+cz=5}と表わすことができる (1)a,b,cを求めよ。 (2)X(-3,3,4)のΠに関する対称点Y=Sπ(X)の座標を求めなさい という問題です。 解いたのですが、あっているか確認お願いいたします (1) ax+by+cz=5にA、B、Cを代入し3つの式を連立 a=1、b=2、c=-3 (2) 移動した対称点の座標をX'とする。X=(-3,3,4)、a=(1,2,-3)、d=5とおくと X'=X-((2a・x-2d)/(a・a))・a より、 X'=(-1,7,-2) となる。

  • 多変数の最小二乗法

    Y=AX+Bという形で(Y,X)の組から係数A,Bを推定する方法が最小二乗法かと思います。(そのような整理が妥当であるか、意味があるか、についてはデータの分布形状や変動係数などで別途検証する必要がありますがここでは不問として) さて、その次ですが、YY=AX+BY+CZという関数で表示しようと考えたとします。(YY,X,Y,Z)というデータ系列があり、係数(A,B,C)を求めるというような解析です。(前述のようにそれが妥当かどうかは不問として。)係数A,B,Cを最小二乗法のようにできるだけ妥当に求める方法を教えていただきたいのですが。 1)たとえば、YY=AX+CCとして最小二乗法でAを求めたあと、残差CCについてCC=BY+CZとおいて再度最小二乗法でBを求めるというような手法を何度も行うとか? これだと解く順番に依存するようなので全部の順番でやって平均値を取るとか? 下手な考え休むに似たりのようですが。 2)カルマンフィルタ、ニューラルネットワークの手法で解析するということもあるでしょうか。その場合、YY=AX+BY+CZという枠組みではなくなりますが、それでもよいと言えばよいです。 このような問題を解く方法について解説されている本とか分野の名称(数理統計学とか?)などを教えて頂けると探索する手がかりとなります。今は手がかりすらはっきりしていないのです。 最小二乗法についてはその程度だったら専門分野ではなく、各分野で個別に解説されているようで込み入った問題になったときにどこを捜索したらよいかわからないもので質問しました。よろしくお願いします。

  • 平面上 点の移動

    平面A(ax+by+cz+d=0)上に点P(X1,Y1,Z1)が存在して、 この点Pが、平面Aを基準とした、平面上にある直線B(a1x+b1y+c1z+d1=0)に沿って距離Lを移動した先の 座標値(X2,Y2,Z2)を計算したいのですが、どのように計算したら良いのでしょうか? よろしくお願いいたします。

  • 慶應経済入試で、点と平面の距離を求める問題です

    座標空間の原点O(0,0,0) と3点A(1,0,0)、B(1/2,√3/4,3/4)、C(1/2,-√3/6,1/2) があるとき △OABを含む平面をαとするとき、点Cから平面αへ下ろした垂線とαの交点をHとするとき、線分CHの長さはいくらか求める問題です 解法を見ると、法線ベクトル(a,b,c)=(0,√3,-1)を出して点と平面の距離の公式に当てはめているようなのですが、 |0×1/2+√3×(-√3/6)-1×(1/2)| / 全体にかかる√  0の2乗+√3の2乗+(-1)の2乗 となっていますが、分子のほうに 平面αの方程式 ax+by+cz+d=0 の dの部分がないように思えるのですが よくわかりませんのでお教えお願いします

  • 4次元空間上での平面の式

    任意の点を(x,y,z,u)とした4次元空間で (1)3次元の立体を表す式は ax+by+cz+du=e でいいですか? (2)2次元の平面を表す式は一般にどのような形になりますか? 上記のことに疑問を持った理由。 2次元空間で1次元の直線を表す式は、一般にax+by=cとなる。 これは、2点(x,y),(xo,yo)を通り、方向ベクトルが(a',b')で媒介変数tとして x=a't+xo y=b't+yo と書くこともできる。 3次元空間で2次元の平面を表す式は、一般にax+by+cz=d となる。 これは、 平面上の2点(x,y,z)と(xo,yo,zo)を結ぶベクトルとこの平面に垂直な直線の方向ベクトル(a,b,c)の内積が0であるという条件より導かれる。 実際に計算すると a(x-xo)+b(y-yo)+c(z-zo)=0 ax+by+cz=axo+byo+czo になり、ax+by+cz=dという形と同値であることが確認できる。 【別な考え】 3次元空間内の平面は、異なる3つの点によって決定するので、異なる3点を P(xo,yo,zo)、Q(x1,y1,z1)、R(x2,y2,z2) とする。この平面上の任意の点X(x,y,z)は、媒介変数t,sを使って OX↑=OP↑+tPQ↑+sPR↑ と書ける。 成分表示にするために OP↑=(xo,yo,zo) PQ↑=(a,b,c) PR↑=(a',b'c') と方向ベクトルを定義すると、 x=xo+at+a's......(1) y=yo+bt+b's......(2) z=zo+ct+c's......(3) という書き方も平面を表す式である。 実際に(1)と(2)から未知数t,sについてx,yの式で表すことができるので、それを(3)式に代入すれば、(1)(2)(3)式は、一つの式 a"x+b"y+c"z=d'という形になる。 直線を表す式は、媒介変数tを使って x=at+xo y=bt+yo z=ct+zo または、 (x-xo)/a=(y-yo)/b=(z-zo)/c=t となる。 4次元空間で同じように、 直線や平面や立体を考えてみた。 2次元では、(1,0)と(0,1)が直交の基底ベクトル。 3次元では、(1,0,0)と(0,1,0)と(0,0,1)が直交の基底ベクトル。 したがって、 4次元では、(1,0,0,0)と(0,1,0,0)と(0,0,1,0)と(0,0,0,1)が直交の基底ベクトル。 4次元空間では、点は4つの成分で表される。 4次元空間での直線について。 直線は2点が与えられば書ける。 2点(x,y,z,u)と(xo,yo,zo,uo)を通り、その直線の方向ベクトルが(a,b,c,d)だとしたら、媒介変数tを使って、 x=at+xo y=bt+yo z=ct+zo u=dt+uo となって (x-xo)/a=(y-yo)/b=(z-zo)/c=(u-uo)/d=t 次に4次元空間での3次元立体について。 2次元空間では、それより一つ次数が低い1次元の直線は一つの式 ax+by=c で与えられた。 3次元空間では、それより一つ次数の低い2次元の平面は、一つ式 ax+by+cz=d で表さられた。 したがって、4次元空間では、それより一つ次数の低い3次元の立体は、 ax+by+cz+du=e で表されるだろう。 【別な考え】 4次元空間では、ある方向ベクトル(a,b,c,d)に直交する立体は一つしかない。なぜなら、4次元空間での基底ベクトルは4つで空間(立体)は3つの基底ベクトルで決定されて、残り一つが残っているからだ。 立体上の2点(x,y,z,u)と(xo,yo,zo,uo)を結ぶベクトルとこの立体に垂直な直線の方向ベクトル(a,b,c,d)の内積が0であるという条件で計算すると a(x-xo)+b(y-yo)+c(z-zo)+d(u-uo)= 0 ax+by+cz+du=axo+byo+czo+duo になり、ax+by+cz+du=eという形になる。 2次元の平面はどうだろうか? (ここからが本題) 4次元空間では、ある方向ベクトル(a,b,c,d)に直交する平面は、2つあるはずだ。 なぜなら、4次元空間での基底ベクトルは4つで平面は2つの基底ベクトルで決定されて、残り2つが残っていて、それはこの平面に直交するように選べるからだ。 平面は、異なる3つの点によって決定するので、異なる3点を P(xo,yo,zo,uo)、Q(x1,y1,z1,u1)、R(x2,y2,z2,u2)、 とする。この平面上の任意の点X(x,y,z,u)は、媒介変数t,sを使って OX↑=OP↑+tPQ↑+sPR↑ と書ける。 成分表示にするために OP↑=(xo,yo,zo,uo) PQ↑=(a,b,c,d) PR↑=(a',b',c',d') と方向ベクトルを定義すると、 x=xo+at+a's......(1) y=yo+bt+b's......(2) z=zo+ct+c's......(3) u=uo+dt+d's.....(4) という書き方も平面を表す式である。 (1)と(2)を連立して、未知数t,sについてx,yの式で表すことができるので、それを(3)式と(4)式代入すれば、(1)(2)(3)(4)式は、2つの式 a"x+b"y+c"z+d"u=e' a"'x+b"'y+c"'z+d"'u=e" になる。 この2つの式からuを消去すれば、結局、 Ax+By+Cz=D という形になる。 zを消去すれば、 Ax+By+Cu=D yを消去すれば、 Ax+Bu+Cz=D xを消去すれば、 Au+By+Cz=D

  • 空間図形の点と直線の距離の公式について

    xyz空間内の点P(p,q,r)から平面ax+by+cz=dにおろした垂線の長さを求めよ という問題(というか公式を示す証明)を見たときに、 (解) 平面ax+by+cz=dに垂直なベクトルのひとつを v→=(a,b,c) とする。平面ax+by+cz=d上にA(x0,y0,z0)をとると、求める長さは h=|AP→・v→|÷|v→| である。 (x0,y0,z0)がax0+by0+cz0=dを満たすことから、 h=|AP→・v→|÷|v→| =|(p-x0,q-y0,r-z0)・(a,b,c)|÷√(a^2+b^2+c^2) =|ap+bq+cr-d|÷√(a^2+b^2+c^2) となっていたのですが、どうしても h=|AP→・v→|÷|v→|である。 の部分が理解できません。検索して調べてみても分からず、結局内積とはなんだろう?と言うところまで調べてみたのですが、2つのベクトルがどれだけ似ているかを示す量、とだけ書いてあるくらいでさっぱり分かりません。 そこで、 (1)なぜ、hが上の式のようになるのでしょうか? (2)幾何学的な意味としては内積は何を表すものなのでしょうか? 以上2点、よろしくお願いいたします。

  • 3次元の最小二乗法

    A(x1,y1,z1)とB(x2,y2,z2)とC(x3,y3,z3)とD(x4,y4,z4)の点で 最小2乗法ほうを使い直線近似したいのですが、どのような式になりますかご存知の方教えていただけますか?