画像からカメラの3次元位置・姿勢を推定するライブラリ『OpenGV』

2D画像からの3D情報復元について調べていたらこんなオープンソースライブラリを見つけた。↓

The OpenGV library

OpenGVライブラリは、キャリブレーション済みカメラの姿勢計算に必要となる幾何学アルゴリズムを効率的に行うために設計された単一のC++のライブラリです。OpenGVは”Open Geometric Vision”の略です。
このライブラリには、絶対・相対的カメラ姿勢計算アルゴリズムの主要な古典手法や、近年の手法が含まれており、三角測量や点群による位置合わせ機能などのように、全て非線形最適化やRANSACによって拡張されています。
このライブラリは、MatLab portのように柔軟なC++インターフェイスを備えており、異なる幾何学的ビジョンアルゴリズムの比較が容易です。

このライブラリについては、以下の文献でも解説されています(検索してみてください):

  • L. Kneip, P. Furgale, “OpenGV: A unified and generalized approach to real-time calibrated geometric vision”, Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China. May 2014.

このライブラリは、以下の研究論文に基づいて開発されています。

特定の問題でOpenGVを使用する際は、上記論文ならびにOpenGVの文献を引用してください。


スポンサーリンク

ソースコードはGitHubにある。→laurentkneip/opengv
同梱のtestプログラムがそのまま使い方のサンプルとして利用できる。

こちらのブログ記事でOpenGVの存在を知った。↓
http://moitkfm.blogspot.fi/2014/08/opengv.html

OpenCVでもARのようなやり方でカメラの2次元画像から3次元位置・姿勢を求めることはできるんだけど、このOpenGVのアドバンテージは、複数のカメラ間の位置関係を容易に扱えるようにできている点。


スポンサーリンク


この方のブログは、サンプルコードを載せているのでとても勉強になる。
以下はOpenCVを使った3次元復元系のサンプルが載っている記事。↓
http://moitkfm.blogspot.jp/2014/06/2.html
http://moitkfm.blogspot.fi/2014/06/2d-3d.html
http://moitkfm.blogspot.fi/2014/06/5.html

追記:
Facebookで開発しているVR酔い軽減のためのブレ補正技術には、OpenGVに実装されているNisterの5点アルゴリズムをRANSACで解くモジュールが使われているらしい。↓
https://code.facebook.com/posts/697469023742261/360-video-stabilization-a-new-algorithm-for-smoother-360-video-viewing/

触発されて公式ドキュメントを訳し始めた↓
OpenGVの用語
OpenGV公式ドキュメントのHow to useを読んでるんだけど、出てくる用語が独特なのと、図はあるけど、抽象的過ぎてとても分かりづらいので苦戦している。 もう思いっきりこの記事に触発されたよね。

OpenGVのライブラリ構成
引き続きOpenGV公式ドキュメントのHow to useを読んでいる。 前回は用語の解説まで読んだので、次はOrganization of the library(ライブラリの構成)とInterface(インターフェイス)の...


以前購入した「コンピュータビジョン最先端ガイド5」は、3次元復元の全体像を理解するには最適な粒度の情報が載っているんだけど、それだけで実装に落とし込めるほどオイラは知識が無かったので非常にありがたい。
こちらの本では第2章が丸々複数画像からの三次元復元の解説になっている。↓



追記:
OpenCVでARアプリを実装するなら、こちらの書籍の第6章のサンプルが参考になる(というかそのまんま)

OpenCV 3 プログラミングブック

本書で使われているソースコードはこちらから。chapter6のプロジェクトをビルドすれば試せます。

過去記事

https://blog.negativemind.com/2014/05/30/structure-from-motion-%e5%a4%9a%e8%a6%96%e7%82%b9%e7%94%bb%e5%83%8f%e3%81%8b%e3%82%89%e3%81%ae3%e6%ac%a1%e5%85%83%e5%bd%a2%e7%8a%b6%e5%be%a9%e5%85%83/


Autodesk Mementoでゴジラを3次元復元する
この前、Autodesk Mementoで複数枚の写真から3D復元を試してみたけど、あんまり上手くいかなかった。追記:ベータ版だったAutodesk Mementoから現在は名称が変わり、Autodesk Remakeになりました。機...


スポンサーリンク

関連記事

openMVGをWindows10 Visual Studio 2015環境でビルドする
OpenCVで動画の手ぶれ補正
R-CNN (Regions with CNN features):ディープラーニングによる一般物体...
動的なメモリの扱い
フォトンの放射から格納までを可視化した動画
UnityでShaderの入力パラメータとして行列を渡す
自前Shaderの件 解決しました
Amazon Web ServicesでWordPress
OpenCVのfindEssentialMat関数を使ったサンプルを読んでみる
オープンソースのPhotogrammetryフレームワーク『Alice Vision』
Google App Engine上のWordPressでAmazonJSを利用する
ニューラルネットワークの構造を可視化するフレームワーク『TensorSpace.js』
ZBrushのZScript入門
OpenGVの用語
Photogrammetry (写真測量法)
BlenderProc:Blenderで機械学習用の画像データを生成するPythonツール
オープンソースのSLAMライブラリ『Cartographer』
Unityで強化学習できる『Unity ML-Agents』
オープンソースのロボットアプリケーションフレームワーク『ROS (Robot Operating S...
Kaolin:3Dディープラーニング用のPyTorchライブラリ
UnrealCLR:Unreal Engineで.NET Coreを利用できるプラグイン
CGレンダラ研究開発のためのフレームワーク『Lightmetrica (ライトメトリカ)』
Unreal Engineの薄い本
WordPressの表示を高速化する
海外ドラマのChromaKey
adskShaderSDK
C#で使える可読性重視のディープラーニングライブラリ『KelpNet』
Blender 2.8がついに正式リリース!
3D復元技術の情報リンク集
なんかすごいサイト
FacebookがDeep learningツールの一部をオープンソース化
Adobe MAX 2015
pythonもかじってみようかと
OpenCV 3.3.0 contribのsfmモジュールのサンプルを動かしてみる
オープンソースのIT資産・ライセンス管理システム『Snipe-IT』
Russian3DScannerのトポロジー転送ツール『WrapX』
Webサイトのワイヤーフレームが作成できるオンラインツール
iPhoneで3D写真が撮れるアプリ『seene』
iOSデバイスと接続して連携するガジェットの開発方法
1枚の画像からマテリアルを作成できる無料ツール『Materialize』
Open3D:3Dデータ処理ライブラリ
OpenCV

コメント