「三次元点群の姿勢あわせ」の編集履歴(バックアップ)一覧はこちら

三次元点群の姿勢あわせ」(2014/08/06 (水) 20:17:46) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

= 三次元点群の姿勢あわせ = 対応が取れている三次元点群同士の姿勢あわせを一発で解く方法 == 定義 == 文献中のクォータニオン表現は虚部,実部の順になっている. <math>q = (V \ w) ^T = (x \ y \ z \ w) ^T </math> 以下この表現に合わせる. クォータニオンを行列に変換する式を定義する. <math> Q(q) = \begin{bmatrix} wI + \lambda (V) & V \\ -V^T & w \end{bmatrix} = \begin{bmatrix} w & -z & y & x \\ z & w & -x & y \\ -y & x & w & z \\ -x & -y & -z & w \end{bmatrix} </math> <math> W(q) = \begin{bmatrix} wI - \lambda (V) & V \\ -V^T & w \end{bmatrix} = \begin{bmatrix} w & z & -y & x \\ -z & w & x & y \\ y & -x & w & z \\ -x & -y & -z & w \end{bmatrix} </math> ただしここで<math>\lambda (V)</math>は三次元ベクトルの外積行列である. <math> \lambda (V) = \begin{bmatrix} 0 & -V_z & V_y \\ V_z & 0 & -V_x \\ -V_y & V_x & 0 \end{bmatrix} </math> また,位置ベクトルに対応するクォータニオンを以下のように定義する. <math> p = 1/2 (p_x \ p_y \ p_z \ 0) ^T </math> == 座標変換計算 == 点対応の取れている二つの点群<math> ^0 p _i , ^1 p _i , i = 1 \ldots k </math>が与えられたとき,座標系0から1への変換行列を求める. まず,以下の行列を計算する. <math> C_1 = -2 \sum _{i=1} ^k \alpha _i Q( ^1 p _i )^T W( ^0 p _i ) </math> <math> C_2 = \sum _{i=1} ^k \alpha _i I </math> <math> C_3 = 2 \sum _{i=1} ^k \alpha _i (W( ^0 p _i ) - Q( ^1 p _i )) </math> <math> A=(1/2) ( C_3^T ( C_2 + C_2^T ) ^{-1} C_3 - C_1 - C_1^T ) </math> ここで<math>\alpha _i</math>は各点に対する重み. 次に,<math>A</math>を固有値分解し最大固有値に対応する固有ベクトル<math>r = (V_r \ w_r)</math>を求める. 最後に求めた<math>r</math>から回転行列<math>R</math>と並進ベクトル(のクォータニオン表現であることに注意)<math>t</math>を求める. <math> R=( w_r^2 - V_r^T V_r ) I + 2 V_r V_r^T + 2 w_r \lambda (V_r) </math> <math> t=-W(r) ^T ( C_2 + C_2^T )^{-1} C_3 r </math> なお, <math>( C_2 + C_2^T )^{-1} = 1 / (2 \sum _{i=1} ^k \alpha _i) I </math> である. == 参考文献 == Walker, Shao, Volz; "Estimating 3-D Location Parameters Using Dual Number Quaternions", CVGIP, Vol. 54, No. 3, pp. 358-367, 1991.
= 三次元点群の姿勢あわせ = 対応が取れている三次元点群同士の姿勢あわせを一発で解く方法 == 定義 == 文献中のクォータニオン表現は虚部,実部の順になっている. <math>q = (V \ w) ^T = (x \ y \ z \ w) ^T </math> 以下この表現に合わせる. クォータニオンを行列に変換する式を定義する. <math> Q(q) = \begin{bmatrix} wI + \lambda (V) & V \\ -V^T & w \end{bmatrix} = \begin{bmatrix} w & -z & y & x \\ z & w & -x & y \\ -y & x & w & z \\ -x & -y & -z & w \end{bmatrix} </math> <math> W(q) = \begin{bmatrix} wI - \lambda (V) & V \\ -V^T & w \end{bmatrix} = \begin{bmatrix} w & z & -y & x \\ -z & w & x & y \\ y & -x & w & z \\ -x & -y & -z & w \end{bmatrix} </math> ただしここで<math>\lambda (V)</math>は三次元ベクトルの外積行列である. <math> \lambda (V) = \begin{bmatrix} 0 & -V_z & V_y \\ V_z & 0 & -V_x \\ -V_y & V_x & 0 \end{bmatrix} </math> また,位置ベクトルに対応するクォータニオンを以下のように定義する. <math> p = 1/2 (p_x \ p_y \ p_z \ 0) ^T </math> == 座標変換計算 == 点対応の取れている二つの点群<math> ^0 p _i , ^1 p _i , i = 1 \ldots k </math>が与えられたとき,座標系0から1への変換行列を求める. まず,以下の行列を計算する. <math> C_1 = -2 \sum _{i=1} ^k \alpha _i Q( ^1 p _i )^T W( ^0 p _i ) </math> <math> C_2 = \sum _{i=1} ^k \alpha _i I </math> <math> C_3 = 2 \sum _{i=1} ^k \alpha _i (W( ^0 p _i ) - Q( ^1 p _i )) </math> <math> A=(1/2) ( C_3^T ( C_2 + C_2^T ) ^{-1} C_3 - C_1 - C_1^T ) </math> ここで<math>\alpha _i</math>は各点に対する重み. 次に,<math>A</math>を固有値分解し最大固有値に対応する固有ベクトル<math>r = (V_r \ w_r)</math>を求める. 最後に求めた<math>r</math>から回転行列<math>R</math>と並進ベクトル(のクォータニオン表現であることに注意)<math>t</math>を求める. <math> R=( w_r^2 - V_r^T V_r ) I + 2 V_r V_r^T + 2 w_r \lambda (V_r) </math> <math> t=-W(r) ^T ( C_2 + C_2^T )^{-1} C_3 r </math> なお, <math>( C_2 + C_2^T )^{-1} = 1 / (2 \sum _{i=1} ^k \alpha _i) I </math> である. == 参考文献 == Walker, Shao, Volz; "Estimating 3-D Location Parameters Using Dual Number Quaternions", CVGIP, Vol. 54, No. 3, pp. 358-367, 1991.

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー