FrontPage
- ちょっとネットで見かけた3次元から3次元への変換行列。
- といっても、スケールや直交性は維持されてるので、単なる視点変換の話。
前提条件 †
- 変換前の3次元座標をAと変換後の3次元座標Bを
- と定義する
変換行列 †
- 変換行列をMとする。
- 変換行列Mは以下の様な特性を持つ
- さらに、Mの内部も回転行列Rと並進成分tに分けられる
ツッコミ †
- 閲覧したサイトには
- まず行と列が逆になっていた
- 4行目(サイトでは4列目)が
となるような制約が抜けていた
- ので、その辺りの制約を加えるとなると、以下の様にする必要がある。
- 1つの点同士の対応で3本の方程式が成り立つ。
- 点を増やせば、増やした数だけ、真ん中の行列は点数*3行ずつ増え、左辺は1列ずつ増える
- 真ん中の行列の逆行列を求めたいので、最低4点必要になる。
- これで、ようやく真ん中の行列の逆行列が求められる。
- この逆行列を左辺に右側からかければ、欲しい変換行列パラメータ M が求まる。
その他/考察 †
- 本当なら、スケーリング係数も考えないと行けないのだが、両方の点の最後の要素が1、行列の右下の要素も1という制約を守るなら、これでもいける
- あと、本当は回転行列はそれぞれノルムが1となる列ベクトル3本から成り立ってるはずで、その辺りの制約を入れればもっと精度がよくなる。
- 多分、ノイズが乗る/乗らないという話以前に、変換行列の4行目に対する制約を導入すれば、ノイズが多少は減るはず。
- 回転行列の制約を式に導入する方法に関しては未勉強なので、追々。
|