球の最小二乗法を解説

最小二乗球の図
最小二乗球
  $N$ 個の点集合 (点群)
$$ \tag{1.1} $$ に最もフィットする球を最小二乗法によって求めよ。
解答例
  点群の各点から球の中心までの距離の二乗と、 球の半径の二乗との差の総和が最小になる球を最小二乗球とし、 点群 $(1.1)$ に対して、その最小二乗球を導出する。 その際に、 $(1.1)$ の重心
$$ \tag{1.2} $$ を座標原点にすると、計算量が少なくなることが知られている。 そこで、重心 $(\overline{x}, \overline{y}, \overline{z})$ を原点とする座標系 (重心座標系 $G$) を用いることにし、 $G$ で表した点群の位置を $(X_{i},Y_{i},Z_{i})$ とすると、 $(X_{i},Y_{i},Z_{i})$ と $(x_{i}, y_{i}, z_{i})$ の間には
$$ \tag{1.3} $$ の関係がある。 これより、
$$ \tag{1.4} $$ が成り立つ。
  以上の準備をもとに、 中心が $(c_{x}, c_{y}, c_{z})$ であり、 半径が $r$ の球を考える。 この中心が重心座標系 $G$ では、 $(C_{x}, C_{y}, C_{z})$ と表されているとすると、 $(1.3)$ と同様に
$$ \tag{1.5} $$ が成り立つ。 球の中心と各点との間の距離の二乗は、
である。したがって、 この距離の二乗と半径の二乗の差は、
である (下図参考) 。
二乗して全ての点について足し合わせると、
である。ここで、便宜上
$$ \tag{1.6} $$ と置いた。
  このように 総和 $S$ は、 $C_{x}, C_{y}, C_{z},R$ の 4 つの変数に依存する。 これらの変数に対して、 $S$ が最小値をとるためには、 これらに対する $S$ の微分が $0$ でなくてはならない。 すなわち、
$$ \tag{1.7} $$ が成り立たなくてはならない。 これらの式を順番に検討する。まず
であるので、 $(1.7)$ の第一式より、
$$ \tag{1.8} $$ が成り立つ。 これを用いると、
であるので、 $(1.7)$ の第二式と $(1.4)$ より、
$$ \tag{1.9} $$ を得る。 同じように、 $(1.7)$ の第三式と $(1.4)$ より、
$$ \tag{1.10} $$ が成り立つ。ここで便宜上
$$ \tag{1.11} $$ と置くと、 $(1.9)$ と $(1.10)$ はそれぞれ
と表される。 これらを書き換えると、
であることから、 行列を用いて、
とまとめられる。 ここで、
$$ \tag{1.12} $$ と置くと、
とさらにまとめられる。 これより、 $C_{x}$ と $C_{y}$ と $C_{y}$は
$$ \tag{1.13} $$ と求められる。 ここで $T^{-1}$ では $T$ の逆行列である。 この式から $C_{x}$ と $C_{y}$ と $C_{z}$ が求められるので、 その結果と $(1.8)$ を用いると、
$$ \tag{1.14} $$ と $R$ が求められる。
まとめ
  以上の結果を要約する。 点群 $(1.1)$ の最小二乗球の中心位置 $(c_{x}, c_{y}, c_{z})$ を求めるためには、 はじめに重心
と ($(1.2)$)、 重心座標系での位置
を計算する ($(1.3)$)。 これを用いて、
を計算し ($(1.11)$)、 行列
を求める ($(1.12)$)。 そして これらから、
によって ($(1.13)$)、
を計算し、 最後に
計算すると ($(1.5)$)、 中心位置が得られる。
  半径 $r$ については、 $(1.6)$ と $(1.14)$ より、
を計算すると得られる。

具体例
  6つの点
にフィットする球を最小二乗法で求めよ。
解答例
  上記の議論を用いる。 数値計算を念頭に置いて、 計算結果を小数で表す。 重心の座標は、
である。これより、重心を原点とした座標系における位置は、
である。これを用いて次の総和を計算する。
これらを用いて、行列
を定義すると、 重心を原点とした座標系における球の中心 $(C_{x}, C_{y}, C_{z})$ は、
と求まる。これより、もとの座標系における球の中心が
と求まる。 また、球の半径は、
と求まる。以上の結果をプロットしたのが下図である。
6点(青点)にフィットするように球が配置されている。