落合陽一先生風論文読解：Metrics for 3D Rotations: Comparison and Analysis

論文[『Metrics for 3D Rotations: Comparison and Analysis』](https://www.cs.cmu.edu/~cga/dynopt/readings/Rmetric.pdf)を読むために、LLMに読解させた内容です。
一部僕が理解しやすいように書き直しています。

評価指標についての論文です。どんな課題を解決したいかによって、正しい指標を選べるようになりたいです。

# どんなもの？

この論文は、3D回転を表す様々な方法と、それらの間の距離を計算するための様々な関数を分析し、比較しています。3D回転は、コンピュータビジョン、コンピュータグラフィックス、ロボット工学など、3D空間を扱う多くの分野で重要な概念です。

## (追加調査)各分野の解説と現実世界での利用例
1. コンピュータビジョン
コンピュータビジョンは、コンピュータに「視覚」を持たせ、画像や映像を理解させることを目指す分野です。3D回転は、カメラのキャリブレーションや、複数画像からの3次元構造復元 (Structure from Motion)、オブジェクトの姿勢推定など、様々な場面で利用されます。
    - 現実世界での利用例:
        - 自動運転: 車載カメラの映像から周囲の環境を3次元的に認識するために、カメラの向きや位置を正確に把握する必要があります。
        - 拡張現実 (AR): 仮想オブジェクトを現実世界に重ね合わせる際、カメラの姿勢とオブジェクトの姿勢を整合させる必要があります。
        - 顔認識: 顔の向きを推定し、正面画像に変換することで、顔認識の精度を向上させることができます。
2. コンピュータグラフィックス
コンピュータグラフィックスは、コンピュータを用いて画像や映像を生成する分野です。3D回転は、3次元オブジェクトの回転やアニメーション、カメラの視点制御 などに利用されます。
    - 現実世界での利用例:
        - ゲーム: キャラクターやオブジェクトの動きを表現するために、3D回転が不可欠です。
        - 映画やアニメーション: CGで作成されたキャラクターやオブジェクトに自然な動きを与えるために、俳優やスタントマンの動きをモーションキャプチャで記録し、3D回転が利用されます。
        - VR (仮想現実): VR空間内での視点移動やオブジェクト操作には、3D回転が用いられます。
3. ロボット工学
ロボット工学は、ロボットの設計、制御、運用などを扱う分野です。3D回転は、ロボットアームの関節角度制御、ロボットの移動経路計画、ロボットの姿勢制御 などに利用されます。
    - 現実世界での利用例:
        - 産業用ロボット: 工場などで、溶接、塗装、組立などの作業を行うロボットアームの制御に3D回転が使われます。
        - ドローン: ドローンの飛行制御には、機体の姿勢を3次元的に制御する必要があり、3D回転が用いられます。
        - 医療用ロボット: 手術支援ロボットなど、精密な動作が求められるロボットの制御にも3D回転が利用されます。

# 先行研究と比べてどこがすごい？

先行研究では、3D回転間の距離を測る関数がいくつか提案されていましたが、それらの関数の詳細な分析や、3D回転が属するSO(3)群の文脈における比較は行われていませんでした。この論文は、これらの不足している情報を提供し、SO(3)における距離関数の数学的な性質を深く分析しています。また、各距離関数の計算コストや、誤差等高線を用いた幾何学的解釈も提供しています。

### ※SO(3)群
3次元回転行列全体の集合を指し、特殊直交群とも呼ばれます。
- 回転行列: ([Wiki](https://ja.wikipedia.org/wiki/%E5%9B%9E%E8%BB%A2%E8%A1%8C%E5%88%97))
    - 3次元空間における回転を表す行列のことです。
- 直交行列:
    - 行列の各列ベクトルが互いに直交し、かつそれぞれの長さが1であるような行列です。直交行列は、回転や鏡映といった、形状を変形させずに大きさや角度を保つ変換を表すことができます。
- 特殊:
    - 行列式が1であることを意味します。 回転行列の行列式は常に1ですが、鏡映行列の行列式は-1となります。 "特殊" とつけることで、純粋な回転のみを扱う群であることを明確にしています。


# 技術や手法のキモはどこ？

この論文では、以下の6つの距離関数を分析しています。



| 距離関数 | 解説 | 特徴 | メリット | デメリット |
|:----------|:------|:------|:-----------|:------------|
| オイラー角間のユークリッド距離  | 2つの回転をオイラー角で表現し、それぞれの角度成分の差をユークリッド距離で計算します。 | *計算が比較的簡単。<br>*回転を直感的に理解しやすいオイラー角を用いる。 | *シンプルで理解しやすい。<br>*計算コストが低い。 | *オイラー角表現はジンバルロックの問題があり、特定の回転において一意に表現できない。<br>*同じ回転を表す複数のオイラー角表現が存在するため、距離関数が一意に定まらない。<br>*回転の大きさではなく、オイラー角成分の差を直接比較するため、幾何学的な意味が弱い。 |
| クォータニオンの差のノルム | 2つの回転を単位クォータニオンで表現し、それらのベクトルとしての差のユークリッドノルムを計算します。<br>クォータニオンの符号の曖昧さを考慮するため、差のノルムと和のノルムの小さい方を選択します。 | *単位クォータニオンは回転を効率的に表現できる。<br>*回転の符号の曖昧さを考慮している。 | *計算が比較的簡単。<br>*幾何学的な意味を持ち、回転の大きさを反映する。 | *他の距離関数と比べて、計算コストがやや高い。 |
| 単位クォータニオンの内積 | 2つの回転を単位クォータニオンで表現し、それらの内積のアークコサインを計算します。内積の絶対値を用いることで、クォータニオンの符号の曖昧さを解消します。 | *単位クォータニオンは回転を効率的に表現できる。<br>*回転の符号の曖昧さを考慮している。 | *計算が効率的。<br>*回転角に直接関係する距離を計算できる。<br>*他の距離関数(単位球上の測地線)と線形な関係を持つ。 | *アークコサインの計算が必要になるため、計算コストがやや高い。 |
| 単位クォータニオンの内積からの偏差 | 2つの回転を単位クォータニオンで表現し、それらの内積の絶対値を1から引いた値を計算します。 | *単位クォータニオンは回転を効率的に表現できる。<br>*計算が非常に簡単。 | *計算コストが最も低い。 | *他の距離関数との bounded equivalence がない。<br>*回転が同一に近づく際の収束速度が遅い。<br>*幾何学的な意味が弱い。 |
| 単位行列からの偏差 | 2つの回転行列の積と単位行列の差のフロベニウスノルムを計算します。回転行列の代わりに単位クォータニオンを用いることで、計算コストを削減できます。 | *回転行列を用いて計算できる。<br>*単位クォータニオンを用いることで計算を簡略化できる。 | *回転の大きさを直接反映する距離を計算できる。 | *回転行列を用いる場合、計算コストが高い。<br>*他の距離関数と比べて、計算式が複雑。 |
| 単位球上の測地線 | 2つの回転行列の積の対数行列のノルムを計算します。対数行列は回転軸と回転角を表し、そのノルムは回転角の大きさに対応します。回転行列の代わりに単位クォータニオンを用いることで、計算コストを削減できます。 | *回転軸と回転角を用いて、幾何学的に解釈しやすい距離を計算できる。<br>*単位クォータニオンを用いることで計算を簡略化できる。 | *回転の大きさを正確に反映する。<br>*他の距離関数（単位クォータニオンの内積）と線形な関係を持つ。<br>*等誤差曲面を用いた解析が可能。 | *回転行列を用いる場合、計算コストが高い。<br>*対数行列の計算が必要になるため、計算コストがやや高い。 |


### (追加調査)
- クォータニオン([Wiki](https://ja.wikipedia.org/wiki/%E5%9B%9B%E5%85%83%E6%95%B0))
    - 回転を複素数を用いて表したもの。真面目に追うと今日は寝れなくなる。
    - こちらが詳しそう
        - [クォータニオン (Quaternion) を総整理！ ～ 三次元物体の回転と姿勢を鮮やかに扱う ～](https://qiita.com/drken/items/0639cf34cce14e8d58a5)


# どうやって有効だと検証した？

論文では、ランダムに生成した3D回転を用いて、5つの距離関数の関係を図示 しています。 これにより、関数の間の非線形な関係や、有界等価性の検証が行われています。
また、測地線距離関数 (Φ6) について、等誤差曲線を用いた幾何学的解釈 を提供しています。これは、真の回転と推定回転の間の誤差を視覚化し、誤差最小化のための更新方法を検討するのに役立ちます。

# 議論はある？

この論文では、各距離関数の利点と欠点が詳細に分析されています。しかし、特定のアプリケーションに最適な距離関数は、そのアプリケーションの要件によって異なる可能性があります。例えば、計算効率が最優先される場合は、クォータニオンベースの距離関数が適しているでしょう。一方、幾何学的な解釈が重要な場合は、測地線距離関数が適しているかもしれません。

# 次に読むべき論文は？

- Distance metrics on the rigid-body motions with applications to mechanism design by F.C. Park (1995) :
    - 測地線距離関数とそのメカニズム設計への応用についてより深く理解するために。
- [Smooth invariant interpolation of rotations](https://dl.acm.org/doi/pdf/10.1145/256157.256160) by F.C. Park and B. Ravani (1997) :
    - 3D回転の滑らかな補間のための測地線距離関数の利用について学ぶために。
- [Closed form solution of absolute orientation using unit quaternions](https://web.stanford.edu/class/cs273/refs/Absolute-OPT.pdf) by B.K.P. Horn (1987) :
    - 単位クォータニオンを用いた絶対方位の計算方法について理解するために。
- A distance metric for finite sets of rigid-body displacement in the polar decomposition by P.M. Larochelle et al. (2007) :
    - 単位行列からの偏差に基づく距離関数の詳細について学ぶために。

（一部有料の論文だったようなのでリンクは省略）


# 所感
評価、というよりは計算上回転をどう捉えられるかまとまっている論文だった。推定した物体の姿勢が正解から何度ずれているか、みたいな評価であれば単位行列からの偏差が最も合っているかな、というのが直感的な印象だけど、実際に実装すると違った見方ができそう。
逆に瞬間的に回転をとらえたい場合はクォータニアンのように計算が早いものを使うべきなんだろうな。
必要に迫られればクォータニアンの理解を進めねば。

# 参考文献
- [クォータニオン (Quaternion) を総整理！ ～ 三次元物体の回転と姿勢を鮮やかに扱う ～](https://qiita.com/drken/items/0639cf34cce14e8d58a5)
- Horn, B.K.P.: Closed form solution of absolute orientation using unit quaternions. J. Opt. Soc. Am. 4(4), 629–642 (1987)
- Huynh, D.Q., Heyden, A.: Scene point constraints in camera auto-calibration: an implementational perspective. Image Vis. Comput. 23(8), 747–760 (2005)
- Knight, J., Reid, I.: Automated alignment of robotic pan-tilt camera units using vision. Int. J. Comput. Vis. 68(3), 219–237 (2006)
- Park, F.C.: Distance metrics on the rigid-body motions with applications to mechanism design. ASME J. Mech. Des. 117, 48–54 (1995)
- Ravani, B., Roth, B.: Motion synthesis using kinematic mappings. ASME J. Mech. Transm. Autom. Des. 105, 460–467 (1983)
- Shoemake, K.: Animating rotation with quaternion curves. SIGGRAPH 19(3), 245–254 (1985)