プロが教えるわが家の防犯対策術!

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がきちんと出ませんでした。(他についても怪しい。)

こういった状況に迷い込んでしまい、どう考えるのが良いのか分からなくなってしまいました。
指南いただけませんでしょうか?

A 回答 (4件)

平面の式は、単に 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) を最小化
してもよいのだけれど。

この回答への補足

とても納得できました!

ラグランジュの未定乗数法を手計算でやってみたのですが、λの導出が3次方程式になってしまったのと、係数が多くなり過ぎて力尽きました。。。間違えたのでしょうか?

Σ(Ax+By+Cz+D)^2/√(A^2+B^2+C^2) を最小化する場合には、これも非線形であるために、
偏微分=0として解くには難解となりそうだな。。。と躊躇しております。
非線形最小化であるため、ニュートン・ラフソン法であればすんなりと出来たのですが、
この問題に対して妥当な方法と言えるでしょうか?

補足日時:2010/06/02 21:57
    • good
    • 0

No.3です。


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

この回答への補足

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

補足日時:2010/06/04 08:08
    • good
    • 0

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

この回答への補足

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

補足日時:2010/06/02 21:59
    • good
    • 0

平面の方程式を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を求めることに
なりますが、分母にも変数があることから、非線形連立方程式を
解くことになろうと思います。

最小二乗直交距離フィッティング等のキーワードで検索して
みてもよいと思います。

この回答への補足

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

補足日時:2010/06/02 21:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています