OpenGVの用語

OpenGV公式ドキュメントのHow to useを読んでるんだけど、出てくる用語が独特なのと、図はあるけど、抽象的過ぎてとても分かりづらいので苦戦している。



もう思いっきりこの記事に触発されたよね。
https://code.facebook.com/posts/697469023742261/360-video-stabilization-a-new-algorithm-for-smoother-360-video-viewing/


スポンサーリンク


とりあえず、Vocabularyのところだけでも理解しておきたいので以下翻訳メモ。

How to use

このページでは、OpenGV使い方、インターフェイスやサンプルの解説も合わせて紹介します。より詳しい情報は”OpenGV: A unified and generalized approach to real-time calibrated geometric vision“に記載されています。
しかし、OpenGVの機能やドキュメントの内容を十分理解していただくためには、最初にここで使われる用語の意味を明確に定義しておく必要があります。


スポンサーリンク

Vocabulary(用語)

Bearing vector:
bearing vectorは、camera reference frame(カメラの投影面)から空間上の3D点へ向かうベクトルを正規化した3次元の単位ベクトルと定義します。
このベクトルは2自由度で、この自由度はカメラ投影面における方位角と仰角にあたります。bearing vectorは2自由度しか無いため、ここではほとんど2次元の情報として扱っています。通常、bearing vectorはカメラ投影面上で表されます。

Landmark:
ここでのlandmarkとは、3D空間上の点を表します。(通常、landmarkはworld reference frameと呼ばれる固定されたフレーム上で表されます)

Camera:
OpenGVはキャリブレーション済みの状態を想定しており、Landmarkの位置座標は常にカメラ投影面上のbearing vectorの形で与えられます。したがって、cameraはカメラ投影面と、原点から各landmarkへのbearing vectorのセットを表します。
以下の図は、camera cとbearing vector(赤)を表しています。bearing vectorは全て、cameraを中心とした単位球面上になります。

central

Viewpoint:
コードのドキュメントでは、とても頻繁にcameraの代わりにviewpointについて語っていることに気づくかもしれません。OpenGVの利点の1つは、centralとnon-centralなケースの両方を透過的に扱えることです。

viewpointとは、cameraを一般化した概念で、viewpointには任意の数のcameraと、それぞれのcameraが持つlandmarkの座標値(例えばbearing vector)を含むことができます。

viewpointの具体例としては、撮影画像と関連する測定値(完全なキャリブレーションの元で測定)のセット、同期したカメラによる剛性のマルチカメラリグ、静止画なら一連の(複数)のスナップショットと言えます。(つまりviewpoint)

各cameraはそれぞれが独自にviewpoint frameへのtransformationを持っています。centralの場合、viewpointには単純に1つのカメラと唯一のtransformationが含まれています。

最も一般化したケースで言うと、cameraを一般化するとviewpointで記述することができます。すると、それぞれのbearing vectorも、自身のcameraと、関連するtransformationを持つことになります。したがって、このようにcameraを一般化すると、網羅的なマルチカメラシステムとして表すことができます。

以下の画像は、viewpoint vp(青)と、それぞれ独自のbearing vectorを含む3つのcamera c, c’, c”を示しています。

noncentral

Pose:
world reference frameと呼ばれる固定のreference frame上のPose、あるいは別のviewpointに対する相対的なPoseのいずれかでviewpointの位置と向きを表せます。

Absolute Pose:
absolute poseは、world reference frame上でのviewpointのposeを表します。

Relative Pose:
relative poseは、別のviewpointに対する相対的なposeとしてviewpointのposeを表します。

Correspondence:
correspondenceは、別々のviewpoint上で同一のlandmarkを指しているbearing vectorのペア(2D-2D correspondence)、bearing vectorとそれが指す3次元座標のペア(2D-3D correspondence)、または、異なるframe間で同一のlandmarkを表している座標のペア(3D-3D correspondence)の対応関係を記述します。

OpenGVでbearing vectorと呼ばれるものは、カメラの原点から投影面を通過して3次元空間上の点(landmark)へ向かう3次元方向ベクトルのことだというのは理解できた。レイトレーシングで言うところのrayみたいなものですね。

viewpointの件は未だ十分理解にできてないな。centralとnon-centralってのもまだピンと来ない。
まずreference frameって言葉の意味を教えてほしいところ。ここで出てくるframeってのは「空間」とか「座標系」みたいな意味だろうか。


スポンサーリンク

関連記事

C#で使える可読性重視のディープラーニングライブラリ『KelpNet』
OpenMayaのPhongShaderクラス
Unityからkonashiをコントロールする
ニューラルネットワークの構造を可視化するフレームワーク『TensorSpace.js』
顔検出・認識のAPI・ライブラリ・ソフトウェアのリスト
OpenMayaRender
OpenCV 3.3.0-RCでsfmモジュールをビルド
チャットツール用bot開発フレームワーク『Hubot』
ブログの復旧が難航してた話
オープンソースの人体モデリングツール『MakeHuman』のAPI開発プロジェクトがスタート
iOSで使えるJetpac社の物体認識SDK『DeepBelief』
OpenCVでiPhone6sのカメラをキャリブレーションする
GoogleのDeep Learning論文
Russian3DScannerのトポロジー転送ツール『WrapX』
手を動かしながら学ぶデータマイニング
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
WinSCP
pythonの機械学習ライブラリ『scikit-learn』
Windows10でPyTorchをインストールしてVSCodeで使う
機械学習手法『SVM(Support Vector Machine)』
HD画質の無駄遣い
WordPressのテーマを自作する
自前Shaderの件 解決しました
SSII 2014 デモンストレーションセッションのダイジェスト動画
Deep Neural Networkによる顔の個人識別フレームワーク『OpenFace』
OpenCVのための軽量GUIライブラリ『cvui』
科学技術計算向けスクリプト言語『Julia』
AnacondaとTensorFlowをインストールしてVisual Studio 2015で使う
Amazon EC2ログイン用の秘密鍵を無くした場合の対処方法
PCA (主成分分析)
機械学習について理解するための可視化ツール『MLDemos』
ROSの薄い本
マルコフ連鎖モンテカルロ法
Raspberry Pi 2のGPIOピン配置
OpenCVベースのコンパクトなARライブラリ『ArUco』
機械学習について最近知った情報
まだ続くブログの不調
C++の機械学習ライブラリ『Dlib』
なんかすごいサイト
Unity MonoBehaviourクラスのオーバーライド関数が呼び出される順番
.NETで使えるTensorFlowライクなニューラルネットワークライブラリ『NeuralNetwo...
UnityのGameObjectの向きをScriptで制御する

コメント