回転クォータニオンの平均

回転クォータニオンの平均

前の記事 『クォータニオンによる回転表現』 に引き続き,この記事では回転クォータニオンの平均を導出します

目次

直観的説明

回転の平均を表すにあたり,各回転を表すクォータニオン列 \( \{q_j\} \) に対して,単にその重み付き和

\[
\begin{align}
\tilde{q} = \sum_j w_j q_j,
&&
\sum_j w_j=1
\end{align}
\]

を用いることは適切ではありません.なぜなら,ひとつの回転には \( \pm q_j \) という \( 2 \) つの回転クォータニオンが対応するため,\( \tilde{q} \) の値が符号の取り方に依存してしまい,一意に定まらないからです.

さらに,符号の取り方を何らかの規則によって一意に定めたとしても,この問題は本質的には解決されません.なぜなら,回転は連続的に変化する量であるにもかかわらず,それを表すクォータニオンは二重被覆の構造を持つため,どのように符号を選んでも,どこかで符号の反転が必要になるからです.そのため,クォータニオンの表現は必然的に不連続となり,結局,回転の平均として直観的に期待される結果を得ることができません.

そこで,回転の平均は \( q_j \) 自身ではなく,そのベクトル表示 \( \mathbf{q}_j \in \mathbb{R}^4 \) に対する射影行列

\[
\mathbf{q}_j\mathbf{q}_j^T
\]

を用いて定式化します.

この行列は \( \mathbf{q}_j \) の張る \( 1 \) 次元部分空間 (すなわち,\(\mathbf{q}_j\) と平行な原点通過直線) への射影を表しており,\( \mathbf{q}_j \) と \( -\mathbf{q}_j \) とを同一視する量になっています.したがって,回転の二重被覆に由来する符号の不定性はここで自然に解消されます.

このとき,回転クォータニオンの平均 \( \tilde{\mathbf{q}} \) は,重み付き和

\[
\mathbf{M}=\sum_j w_j\mathbf{q}_j\mathbf{q}_j^T
\]

の最大固有値に属する固有ベクトルとして定義できます.

固有値問題の観点から見ると,\( \mathbf{M} \) は各 \( \mathbf{q}_j \) の寄与を集約した作用素であり,その最大固有値に属する固有ベクトルは,\( \mathbf{M} \) によって最も強く伸長される方向を与えます.これはすなわち,\( \{\mathbf{q}_j\} \) が最も集中している方向を表しており,回転の平均と呼ぶにふさわしい代表値 \( \tilde{q} \) を与えます.

回転クォータニオンの平均の導出

以上の議論は,あくまで直観的なものにとどまります.なぜこのようにして得られる \( \tilde{q} \) が「回転の平均」として適切であるのか,すなわち,どのような意味で最適な代表値になっているのかは,まだ明確ではありません.

この点を厳密に理解するためには,「回転同士の距離」をどのように測るかを定め,その距離の意味で最も平均的な回転を定式化する必要があります.

Markley の論文では,回転行列に対するフロベニウス・ノルムを用いてこの問題を定式化し,その最適解として,先に述べた行列 \( \mathbf{M} \) の最大固有値に属する固有ベクトルが自然に導かれることが示されています.

以下では,この流れに沿って,回転の平均がどのように最適化問題として導かれるのかを順を追って見ていきます.

回転の平均の定式化(損失函数)

回転の平均を定義するためには,まず「回転同士の距離」をどのように測るかを決める必要があります.ここでは,回転行列 \( \mathbf{R}(q) \) を用い,その差をフロベニウス・ノルムで測ることにします.

与えられた回転の列 \( \{\mathbf{R}(q_j)\} \) に対して,ある回転 \( \mathbf{R}(q) \) がどれだけ近いかを,次の損失関数で評価します:

\[
J(q)=\sum_j w_j|\mathbf{R}(q)-\mathbf{R}(q_j)|_F^2
\]

求める回転クォータニオンの平均は,\(J(q)\) を最小化する \(q=\tilde{q}\) です.

ここで用いているフロベニウス・ノルムについて,簡単に確認しておきます.


補足: フロベニウス・ノルム

フロベニウス・ノルムは,ベクトルのユークリッド・ノルムを行列に拡張したものであり,各成分の自乗和の平方根として

\[
|\mathbf{X}|_F=\sqrt{\sum_{jk} X_{jk}^2}
\]

と定義されます.

また,これに対応するフロベニウス内積は

\[\begin{align}
\langle\mathbf{X},\mathbf{Y}\rangle_F&=\sum_{jk}X_{jk}Y_{jk}\\&=\sum_{jk}X_{jk}(\mathbf{Y}^T)_{kj}\\&=\sum_j (\mathbf{X}\mathbf{Y}^T)_{jj}\\&=\mathrm{Tr}(\mathbf{X}\mathbf{Y}^T)
\end{align}\]

と書くことができます.

さらに,行列の成分を \( 1 \) 列に並べたベクトル \( \mathrm{vec}(\mathbf{X}) \) を用いると

\[\begin{align}
\langle\mathbf{X},\mathbf{Y}\rangle_F&=\sum_{jk}X_{jk}Y_{jk}\\&=\mathrm{vec}(\mathbf{X})\cdot\mathrm{vec}(\mathbf{Y})
\end{align}\]

が成り立ちます.したがって,フロベニウス内積は通常のユークリッド内積と同様の性質を持ち,行列全体をひとつのベクトルとみなして扱うことができます.この内積から誘導されるフロベニウス・ノルムにより,\( |\mathbf{X}-\mathbf{Y}|_F \) の形で行列同士の距離を測ることができます.


(本文に戻る)

回転行列 \(\mathbf{R} \) は

\[ \mathbf{R}\mathbf{R}^T=\mathbf{1}_3 \]

を満たすので,

\[\begin{align}
|\mathbf{R}|^2_F&=\mathrm{Tr}(\mathbf{R}\mathbf{R}^T)\\&=\mathrm{Tr}(\mathbf{1}_3)\\&=3
\end{align}\]

が成り立ちます.

この事実を用いて,損失函数 \( J(q) \) を展開すると

\[\begin{align}
J(q)&=\sum_jw_j|\mathbf{R}(q)-\mathbf{R}(q_j)|^2_F\\
&=\sum_jw_j\left(|\mathbf{R}(q)|^2_F+|\mathbf{R}(q_j)|^2_F-2\langle\mathbf{R}(q),\mathbf{R}(q_j)\rangle_F\right)\\
&=\sum_jw_j(3+3)-2\sum_jw_j\langle\mathbf{R}(q),\mathbf{R}(q_j)\rangle_F\\
&=6-2\langle\mathbf{R}(q),\mathbf{B}\rangle_F
\end{align}\]

となります.ただし,

\[\mathbf{B}=\sum_jw_j\mathbf{R}(q_j)\]

とおきました.

\( \mathbf{B} \) は形式的には回転行列の重み付き平均ですが,一般に直交性 \( \mathbf{B}\mathbf{B}^T=\mathbf{1}_3 \) を満たさないため,回転行列になりません.

そこで自然な考えとして,\( \mathbf{B} \) に最もよく整合する回転行列 \( \mathbf{R}(q) \) を回転の平均とみなしたくなります.

先の補足の通り,フロベニウス内積\[\langle\mathbf{R}(q),\mathbf{B}\rangle_F\]は,行列をベクトルとみなしたときの通常の内積に対応しており,\(2\) つの行列がよく揃うほど大きな値をとります.したがって,この内積を最大化することは,\(\mathbf{B}\) に最もよく整合する回転行列を求めることに対応します.

一方,先ほど導いた\[J(q)=6-2\langle\mathbf{R}(q),\mathbf{B}\rangle_F\]という関係式から分かるように,これは損失函数 \( J(q) \) を最小化することと同値です.

したがって,\[\langle\mathbf{R}(q),\mathbf{B}\rangle_F\] を最大化するように選ばれた \( q=\tilde{q} \) は,回転クォータニオンの平均として自然なものになっています.

最後に,フロベニウス内積のトレース表示を用いると,回転クォータニオンの平均 \( \tilde{q} \) は次のように定式化されます:

\[\tilde{q}=\underset{q\in S^3}{\operatorname{arg\,max}}\;\mathrm{Tr}(\mathbf{R}(q)\mathbf{B}^T)\]

次の節では,この式をクォータニオンで表現しなおすことで,\( \tilde{q} \) を求めるための具体的な方程式を導きます.

Davenport の q-メソッド

最大化するトレース\[\mathrm{Tr}(\mathbf{R}(q)\mathbf{B}^T)\]をクォータニオンで表現し,\( \tilde{q} \) を求めるための具体的な方程式,すなわち Davenport の q-メソッド を導きます.

回転行列のクォータニオン表現

まず,\(\mathbf{R}(q)\) をクォータニオンの成分 \[q=(s,\mathbf{v})\]を用いて展開します.

前の記事『クォータニオンによる回転表現』で見た通り,クォータニオン \(q\) によるベクトル \(\mathbf{x}\) の回転は\[q\mathbf{x}\bar{q}\]で与えられます.これは,ベクトルそのものを回転させる active rotation の表現とみなすことができます.

同じ回転は,ベクトルを固定したまま座標系を逆向きに回転させることによっても表現できます.これは passive rotation(座標変換)と呼ばれる見方であり,フレーム変換を重視する航空宇宙やロボティクスの分野では,こちらの表現がよく用いられます.Markley の論文でもこの立場が採られているため,本記事でもそれに従います.

この規約では,回転行列 \(\mathbf{R}(q)\) による \(\mathbf{x}\) の変換は\[\mathbf{R}(q)\mathbf{x}=\bar{q}\mathbf{x}q\]と書かれます.

それでは,右辺のクォータニオン積を展開していきます.\(\mathbf{x}\) は純虚クォータニオン \((0, \mathbf{x})\) とみなしています.

\[\begin{align}
\mathbf{R}(q)\mathbf{x}&=\bar{q}\mathbf{x}q\\&=(s,-\mathbf{v})\mathbf{x}(s,\mathbf{v})\\&=(\mathbf{v}\cdot\mathbf{x},s\mathbf{x}-\mathbf{v}\times\mathbf{x})(s,\mathbf{v})\\&=(s\mathbf{v}\cdot\mathbf{x}-(s\mathbf{x}-\mathbf{v}\times\mathbf{x})\cdot\mathbf{v},\\&\qquad(s\mathbf{x}-\mathbf{v}\times\mathbf{x})s+(\mathbf{v}\cdot\mathbf{x})\mathbf{v}+(s\mathbf{x}-\mathbf{v}\times\mathbf{x})\times\mathbf{v})
\end{align}\]

ここで,スカラー部分は

\[
(\mathbf{v}\times\mathbf{x})\cdot\mathbf{v}=0
\]

より \(0\) となります.

ベクトル部分に『テンソル演算入門:テンソル積・縮約・外積』で見たベクトル \(3\) 重積の式を当てはめて整理すると,

\[\begin{align}
\mathbf{R}(q)\mathbf{x}&=(s^2-|\mathbf{v}|^2)\mathbf{x}+2\mathbf{v}(\mathbf{v}\cdot\mathbf{x})-2s\mathbf{v}\times\mathbf{x}\\&=\{(s^2-\mathbf{v}^T\mathbf{v})\mathbf{1}_3+2\mathbf{v}\mathbf{v}^T-2s[\mathbf{v}\times]\}\mathbf{x}
\end{align}\]

を得ます.ただし,

\[
[\mathbf{v}\times]_{jk}=\varepsilon_{jmk}v_m
\]

は外積行列です.

この式が任意の \(\mathbf{x}\) に対して成り立つことから,回転行列のクォータニオン表現

\[
\mathbf{R}(q)=(s^2-\mathbf{v}^T\mathbf{v})\mathbf{1}_3+2\mathbf{v}\mathbf{v}^T-2s[\mathbf{v}\times]
\]

を得ます.

Davenport の K 行列

回転行列 \( \mathbf{R}(q) \) はクォータニオン \( q \) の成分について \( 2 \) 次式で表されるため,

\[
\mathrm{Tr}(\mathbf{R}(q)\mathbf{B}^T)
\]

もクォータニオン成分に関する \(2\) 次形式

\[
\mathbf{q}^T\mathbf{K}\mathbf{q}
\]

の形に書き直せるはずです.

ここで,\(\mathbf{q}\in\mathbb{R}^4\) はクォータニオン \(q\) のベクトル表示であり,\(\mathbf{K}\) は \(\mathbf{B}\) の成分から構成される対称行列です.この \(\mathbf{K}\)を Davenport の \(K\) 行列と呼びます.

以下では,Davenport の \( K \) 行列を具体的に導出します.必要となるテンソル演算については,前の記事『テンソル演算入門:テンソル積・縮約・外積』でまとめています.

最大化すべきトレース

\[
\mathrm{Tr}(\mathbf{R}(q)\mathbf{B}^T)
\]

に回転行列のクォータニオン表現を代入し,トレースの線形性を用いると,

\[
\mathrm{Tr}(\mathbf{R}(q)\mathbf{B}^T)=(s^2-\mathbf{v}^T\mathbf{v})\mathrm{Tr}(\mathbf{B}^T)+2\mathrm{Tr}(\mathbf{v}\mathbf{v}^T\mathbf{B}^T)-2s\mathrm{Tr}([\mathbf{v}\times]\mathbf{B}^T)
\]

となります.以下,各項を個別に整理します.

第 \(1\) 項: \((s^2-\mathbf{v}^T\mathbf{v})\mathrm{Tr}(\mathbf{B}^T)\)

トレースは転置に対して不変なので,

\[
\mathrm{Tr}(\mathbf{B}^T)=\mathrm{Tr}(\mathbf{B})
\]

です.したがって,第 \(1\) 項は

\[
(s^2-\mathbf{v}^T\mathbf{v})\mathrm{Tr}(\mathbf{B})
\]

となります.

第 \(2\) 項: \(2\mathrm{Tr}(\mathbf{v}\mathbf{v}^T\mathbf{B}^T)\)

トレース部分を成分表示すると,

\[\begin{align}
\mathrm{Tr}(\mathbf{v}\mathbf{v}^T\mathbf{B}^T)&=(\mathbf{v}\mathbf{v}^T\mathbf{B}^T)_{jj}\\&=v_jv_k(\mathbf{B}^T)_{kj}\\&=v_jB_{jk}v_k\\&=\mathbf{v}^T\mathbf{B}\mathbf{v}
\end{align}\]

を得ます.

この量はスカラーなので,転置しても値は変わりません:

\[\begin{align}
\mathbf{v}^T\mathbf{B}\mathbf{v}&=(\mathbf{v}^T\mathbf{B}\mathbf{v})^T\\&=\mathbf{v}^T\mathbf{B}^T\mathbf{v}
\end{align}\]

したがって,第 \(2\) 項は

\[
2\mathrm{Tr}(\mathbf{v}\mathbf{v}^T\mathbf{B}^T)=2\mathbf{v}^T\mathbf{B}\mathbf{v}=\mathbf{v}^T(\mathbf{B}+\mathbf{B}^T)\mathbf{v}
\]

となります.

第 \(3\) 項: \(-2s\mathrm{Tr}([\mathbf{v}\times]\mathbf{B}^T)\)

トレース部分を成分表示すると,

\[\begin{align}
\mathrm{Tr}([\mathbf{v}\times]\mathbf{B}^T)&=([\mathbf{v}\times]\mathbf{B}^T)_{jj}\\&=\varepsilon_{jmk}v_m(\mathbf{B}^T)_{kj}\\&=-\varepsilon_{kmj}(\mathbf{B}^T)_{kj}v_m
\end{align}\]

となります.ここで,

\[\begin{align}
z_m=\varepsilon_{kmj}(\mathbf{B}^T)_{kj}, && [\mathbf{z}\times]=\mathbf{B}^T-\mathbf{B}
\end{align}\]

と定義する (第 \(2\) 式が第 \(1\) 式と等価であることは,第 \(1\) 式の両辺に \(\varepsilon_{pmq}\) を乗じてみれば確認できます) と,

\[
\mathrm{Tr}([\mathbf{v}\times]\mathbf{B}^T)=-\mathbf{z}\cdot\mathbf{v}
\]

と書けます.

したがって,第 \(3\) 項は

\[\begin{align}
-2s\mathrm{Tr}([\mathbf{v}\times]\mathbf{B}^T)&=2s\mathbf{z}\cdot\mathbf{v}\\&=s(\mathbf{z}^T\mathbf{v}+\mathbf{v}^T\mathbf{z})
\end{align}\]

となります.


以上より,第 \(1,2,3\) 項をまとめると,

\[\begin{align}
\mathrm{Tr}(\mathbf{R}(q)\mathbf{B}^T)&=\mathbf{q}^T\mathbf{K}\mathbf{q}\\&=\begin{pmatrix}s & \mathbf{v}^T\end{pmatrix}\begin{pmatrix}\mathrm{Tr}(\mathbf{B}) & \mathbf{z}^T \\ \mathbf{z} & \mathbf{B}+\mathbf{B}^T-\mathrm{Tr}(\mathbf{B})\mathbf{1}_3\end{pmatrix}\begin{pmatrix}s \\\mathbf{v}\end{pmatrix}
\end{align}\]

を得ます.

したがって,

\[
\mathbf{K}=\begin{pmatrix}\mathrm{Tr}(\mathbf{B}) & \mathbf{z}^T \\ \mathbf{z} & \mathbf{B}+\mathbf{B}^T-\mathrm{Tr}(\mathbf{B})\mathbf{1}_3\end{pmatrix}
\]

が,求める Davenport の \(K\) 行列です.

回転クォータニオンの平均が満たす固有値方程式

目的は損失函数 \(J(q)\) の最小化,すなわち \(2\) 次形式

\[
\mathbf{q}^T\mathbf{K}\mathbf{q}
\]

の最大化です.この最大化を,回転クォータニオンの単位条件

\[
|\mathbf{q}|=1
\]

のもとで行うために,ラグランジュの未定乗数法を用います.

未定乗数を \(\lambda\) とすると,ラグランジアンは

\[
\begin{align}\mathcal{L}&=\mathbf{q}^T\mathbf{K}\mathbf{q}-\lambda(\mathbf{q}^T\mathbf{q}-1)\\&=q_jK_{jk}q_k-\lambda(q_j^2-1)\end{align}
\]

と書けます.

求める \(\mathbf{q}\) は,停留条件

\[
\frac{\partial\mathcal{L}}{\partial q_m}=0
\]

を満たします.実際,

\[
\frac{\partial\mathcal{L}}{\partial q_m}=K_{mk}q_k+q_jK_{jm}-2\lambda q_m
\]

となりますが,\(\mathbf{K}\) は対称行列なので,

\[K_{jm}=K_{mj}\]

です.したがって,

\[
\frac{\partial\mathcal{L}}{\partial q_m}=2K_{mk}q_k-2\lambda q_m=0
\]

を得ます.よって,

\[
\mathbf{K}\mathbf{q}=\lambda\mathbf{q}
\]

となり,\(\lambda\) は \(\mathbf{K}\) の固有値,\(\mathbf{q}\) はそれに属する固有ベクトルであることが分かります.

さらに,左から \(\mathbf{q}^T\) を乗じると,

\[
\mathbf{q}^T\mathbf{K}\mathbf{q}=\lambda\mathbf{q}^T\mathbf{q}=\lambda
\]

となります.

したがって,\(\mathbf{q}^T\mathbf{K}\mathbf{q}\) を最大化するためには \(\lambda\) を最大化すれば良く,求める回転クォータニオンの平均は,\(\mathbf{K}\) の最大固有値に属する固有ベクトルとして与えられます.

Markley 平均

Davenport の \(K\) 行列の変形をさらに進め,回転クォータニオン列 \(\{q_j\}\) の平均 \( \tilde{\mathbf{q}} \) が,重み付き和

\[
\mathbf{M}=\sum_j w_j\mathbf{q}_j\mathbf{q}_j^T
\]

の最大固有値に属する固有ベクトルになることを示します.

Davenport の \(K\) 行列のクォータニオン成分表現

先に導いた通り,\(\mathbf{K}\) は \(\mathbf{B}\) から構成される対称行列です.ここで,\(\mathbf{B}\) は回転行列 \(\{\mathbf{R}(q_j)\}\) の重み付き和

\[
\mathbf{B}=\sum_jw_j\mathbf{R}(q_j)
\]

です.

クォータニオン \(q_j\) の成分を

\[q_j=(s_j,\mathbf{v}_j)\]

と置くと,回転行列 \(\mathbf{R}(q_j)\) のクォータニオン表現は

\[
\mathbf{R}(q_j)=(s_j^2-\mathbf{v}_j^T\mathbf{v}_j)\mathbf{1}_3+2\mathbf{v}_j\mathbf{v}_j^T-2s_j[\mathbf{v}_j\times]
\]

と書けます.

以下では,\(\mathbf{K}\) の各成分において,\(\mathbf{B}\) をクォータニオン成分で表します.その過程で,各クォータニオンの成分について単位条件

\[
|\mathbf{q}_j|^2=s_j^2+\mathbf{v}_j^T\mathbf{v}_j=1
\]

が成り立つことを繰り返し用います.

\((1,1)\) 成分: \(K_{11}=\mathrm{Tr}(\mathbf{B})\)

歪対称行列 \([\mathbf{v}_j\times]\) の対角成分はすべて \(0\) であるため,トレースの値に寄与しません.したがって,

\[\begin{align}
\mathrm{K}_{11}&=\mathrm{Tr}(\mathbf{B})\\&=\sum_jw_j\mathrm{Tr}(\mathbf{R}(q_j))\\&=\sum_jw_j\{(s_j^2-\mathbf{v}_j^T\mathbf{v}_j)3+2\mathrm{Tr}(\mathbf{v}_j\mathbf{v}_j^T)\}\\&=\sum_jw_j(3s_j^2-\mathbf{v}_j^T\mathbf{v}_j)\\&=\sum_jw_j(4s_j^2-1)\\&=4\sum_jw_js_j^2-1
\end{align}\]

となります.

\((2,2)\) 成分: \(K_{22}=\mathbf{B}+\mathbf{B}^T-\mathrm{Tr}(\mathbf{B})\mathbf{1}_3\)

歪対称行列の項は,転置との和をとることでキャンセルされます.したがって,

\[\begin{align}
\mathbf{B}+\mathbf{B}^T-\mathrm{Tr}(\mathbf{B})\mathbf{1}_3&=\sum_jw_j\{\mathbf{R}(q_j)+\mathbf{R}^T(q_j)\}-(4\sum_jw_js_j^2-1)\mathbf{1}_3\\&=\sum_jw_j\{2(s_j^2-\mathbf{v}_j^T\mathbf{v}_j)\mathbf{1}_3+4\mathbf{v}\mathbf{v}^T\}-(4\sum_jw_js_j^2-1)\mathbf{1}_3\\&=\sum_jw_j\{(-2s_j^2-2\mathbf{v}_j^T\mathbf{v}_j)\mathbf{1}_3+4\mathbf{v}_j\mathbf{v}_j^T\}\\&=4\sum_jw_j\mathbf{v}_j\mathbf{v}_j^T-\mathbf{1}_3
\end{align}\]

となります.

\((1,2),(2,1)\) 成分: \(K_{12}^T=K_{21}=\mathbf{z}\)

対称行列の項は,転置との差をとることでキャンセルされます.したがって,

\[\begin{align}
[\mathbf{z}\times]&=\mathbf{B}^T-\mathbf{B}\\&=\sum_jw_j\{\mathbf{R}^T(q_j)-\mathbf{R}(q_j)\}\\&=\sum_jw_j(-2s_j)\{[\mathbf{v}_j\times]^T-[\mathbf{v}_j\times]\}\\&=4\sum_jw_js_j[\mathbf{v}_j\times]
\end{align}\]

となります.

ベクトルと外積行列の対応関係から,

\[\mathbf{z}=4\sum_jw_js_j\mathbf{v}_j\]

です.したがって,

\[
K_{12}^T=K_{21}=\mathbf{z}=4\sum_jw_js_j\mathbf{v}_j
\]

となります.


以上の結果をまとめると,

\[\begin{align}
\mathbf{K}&=4\mathbf{M}-\mathbf{1}_4 \\&=\begin{pmatrix}4\sum_jw_js_j^2-1 & 4\sum_jw_js_j\mathbf{v}_j^T \\ 4\sum_jw_js_j\mathbf{v}_j & 4\sum_jw_j\mathbf{v}_j\mathbf{v}_j^T-\mathbf{1}_3 \end{pmatrix}
\end{align}\]

となります.ただし,

\[
\mathbf{M}=\sum_jw_j\mathbf{q}_j\mathbf{q}_j^T
\]

と置きました.

実際,\(\mathbf{q}=(s_j,\mathbf{v}_j)^T\) を用いて

\[\mathbf{q}_j\mathbf{q}_j^T\]

をブロック表示すれば,上で求めた \(\mathbf{K}\) の各成分と一致することが分かります.

固有値方程式への還元

先の結果

\[\mathbf{q}^T\mathbf{K}\mathbf{q}=4\mathbf{q}^T\mathbf{M}\mathbf{q}-1\]

を,固有値方程式

\[\mathbf{K}\mathbf{q}=\lambda\mathbf{q}\]

に代入します.すると,

\[\mathbf{M}\mathbf{q}=\frac{\lambda+1}{4}\mathbf{q}\]

を得ます.

したがって,\(\mathbf{q}\) は \(\mathbf{M}\) の固有ベクトルでもあり,対応する固有値は

\[\frac{\lambda+1}{4}\]

です.\(\lambda\) が最大のとき,\(\frac{\lambda+1}{4}\) も最大になるので,求める回転クォータニオンの平均は,

\[\mathbf{M}=\sum_jw_j\mathbf{q}_j\mathbf{q}_j^T\]

の最大固有値に属する固有ベクトルとして与えられます.

最後に

ここで得られた Markley 平均

\[\mathbf{M}=\sum_jw_j\mathbf{q}_j\mathbf{q}_j^T\]

の最大固有値に属する固有ベクトルという表式は,一見すると通常の加重平均

\[\sum_jw_j\mathbf{q}_j\]

とは大きく異なっているように見えます.しかし,これは単なる代数的技巧ではなく,「回転空間上で最も平均的な回転」を厳密に定義した結果として自然に現れるものです.

実際,本記事ではまず,回転同士の距離をフロベニウス・ノルムによって定義し,

\[J(q)=\sum_jw_j|\mathbf{R}(q)-\mathbf{R}(q_j)|_F^2\]

を最小化する回転を求めました.これは,距離の自乗和を最小化する点を平均とみなすという,通常のユークリッド空間における平均の考え方を,回転空間に拡張したものになっています.

このように,ある距離空間において距離の自乗和を最小化する点として定義される平均は,より一般には Fréchet 平均(あるいは Karcher 平均)と呼ばれます.Markley 平均は,回転行列に対するフロベニウス距離を用いた Fréchet 平均の具体例とみなすことができます.

したがって,Markley 平均は単なる経験的な平均化手法ではなく,「回転空間上で最も代表的な回転を選ぶ」という幾何学的・最適化的要請から導かれる,自然な平均になっているのです.

参考リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次