何度調べても、ソフトや手法毎のカメラ座標軸の定義を忘れてしまうので備忘録として残しておきます。
間違っていたらコメントを頂けると嬉しいです。
取り上げているものは基本的に私に関係するものだけなので、一貫性には欠けるかもしれないです...
また、いつかここに戻ってきたときにもう一度確認できるよう(特に自分)、できる限りその証拠となる公式のソースを張り付けたり、根拠となる箇所を示したりしておきます。
z 軸が画像平面に向かって延びている場合を、(z 軸が)forward、画像平面とは反対方向に向かって延びている場合を backward としています。
今後、気になって調べたものがあったらその都度追加する予定です。
右手座標系
z 軸が forward
OpenSfM
These online docs say that, from the POV of a camera (a.k.a. a Shot object):
The z-axis points forward
The y-axis points down
The x-axis points to the right
Camera Coordinate System and Conventions
COLMAP
The local camera coordinate system of an image is defined in a way that the X axis points to the right, the Y axis to the bottom, and the Z axis to the front as seen from the image.
COLMAP データを入力として用いている 3DGS もこの座標系を用いています。
z 軸が backward
NeRF系
- NeRF
- nerfstudio
+X is right, +Y is up, and +Z is pointing back and away from the camera.
Volume Rendering + SDF 系
- NeuS
- sdfstudio
ソースは見つけられなかったが、NeRF と同じ前処理が必要なことや、sdfstudio が nerfstudio の拡張機能の一つとされていることから、NeRF と同じ座標系を取り扱っていると考えられる。
SDFStudio
最後に
ここで紹介したソフトウェアや手法以外のものについて、カメラ座標系の座標軸の向きが気になる場合があると思います。
その時は、ソフトウェアや手法の名前に加えて、coordinate system
や z-axis direction
、camera convention
などのキーワードと一緒に検索すると情報を見つけやすいです。
3 次元のデータを扱った手法を考えたり、カメラの真値データを使って 3 次元データを作成したりする場合は、このカメラ座標系の定義の間違い一つで結果がめちゃくちゃになることがあります。
問題の特定のためにも、カメラ座標系の定義をきちんと見直して、まずはデータが間違っていないかを確かめることが大事だと思っているので、このまとめが誰かの研究や開発の一助になれば幸いです。