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ってのは「空間」とか「座標系」みたいな意味だろうか。


スポンサーリンク

関連記事

SONYの自律型エンタテインメントロボット『aibo』
OpenCV 3.1とopencv_contribモジュールをVisual Studio 2015で...
機械学習手法『SVM(Support Vector Machine)』
Windows10でPyTorchをインストールしてVSCodeで使う
Photogrammetry (写真測量法)
iPadをハンディ3Dスキャナにするガジェット『iSense 3D Scanner』
Raspberry Pi
顔画像処理技術の過去の研究
iPhoneで3D写真が撮れるアプリ『seene』
iOSデバイスと接続して連携するガジェットの開発方法
機械学習手法『Random Forest』
Open Shading Language (OSL)
読みやすくて高速なディープラーニングのフレームワーク『Caffe』
takminさんが機械学習・画像認識の便利ツールを公開しています
ZScript
インタラクティブにComputer Visionコーディングができるツール『Live CV』
オープンソースのロボットアプリケーションフレームワーク『ROS (Robot Operating S...
Google XML Sitemap Generatorプラグインを3.4.1へダウングレード
Kinect for Windows v2の日本価格決定
書籍『イラストで学ぶ ディープラーニング』
python-twitterで自分のお気に入りを取得する
書籍『仕事ではじめる機械学習』を読みました
UnityのAR FoundationでARKit 3
Amazon Web ServicesでWordPress
オーバーロードとオーバーライド
書籍『3次元コンピュータビジョン計算ハンドブック』を購入
Open3D:3Dデータ処理ライブラリ
Mayaのレンダリング アトリビュート
iOSで使えるJetpac社の物体認識SDK『DeepBelief』
Google App Engine上のWordPressでFlickrの画像を貼る
OpenCVでカメラ画像から自己位置認識 (Visual Odometry)
オープンソースの3Dメッシュデータライブラリ『OpenMesh』
C++始めようと思うんだ
fSpy:1枚の写真からカメラパラメーターを割り出すツール
HD画質の無駄遣い その2
OpenCVの三角測量関数『cv::triangulatepoints』
BlenderのPython環境にPyTorchをインストールする
iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』
FacebookがDeep learningツールの一部をオープンソース化
AndroidもopenGLも初心者さ (でもJavaは知ってるよ)
Raspberry Piでセンサーの常時稼働を検討する
3分の動画でプログラミングを学習できるサイト『ドットインストール』

コメント