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