画像からカメラの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になりました。機...


スポンサーリンク

関連記事

Raspberry Pi 2を買いました
CGレンダラ研究開発のためのフレームワーク『Lightmetrica (ライトメトリカ)』
タマムシっぽい質感
iPhoneで3D写真が撮れるアプリ『seene』
コンピュータビジョンの技術マップ
機械学習に役立つPythonライブラリ一覧
フィーリングに基づくタマムシの質感表現
ディープラーニング
Raspberry Pi
UnityプロジェクトをGitHubで管理する
MFnDataとMFnAttribute
Faceshiftで表情をキャプチャしてBlender上でMakeHumanのメッシュを動かすデモ
UnityでARKit2.0
AR (Augmented Reality)とDR (Diminished Reality)
自前のShaderがおかしい件
読みやすくて高速なディープラーニングのフレームワーク『Caffe』
Webスクレイピングの勉強会に行ってきた
複数視点画像から3次元形状を復元するライブラリ『openMVG』
ZScript
WordPress on Google App Engineを1週間運用してみて
OpenCV 3.1のsfmモジュールのビルド再び
Google App Engineのデプロイ失敗
Seleniumを使ったFXや株の自動取引
Pythonのベイズ統計ライブラリ『PyMC』
PyTorch3D:3Dコンピュータービジョンライブラリ
オープンソースのIT資産・ライセンス管理システム『Snipe-IT』
顔追跡による擬似3D表示『Dynamic Perspective』
OpenCVの三角測量関数『cv::triangulatepoints』
Googleが画像解析旅行ガイドアプリのJetpac社を買収
C#で使える機械学習ライブラリ『Accord.NET Framework』
Pix2Pix:CGANによる画像変換
C++ 標準テンプレートライブラリ (STL)
3Dボリュームデータ処理ライブラリ『OpenVDB』
python-twitterで自分のお気に入りを取得する
人体モデリングできるBlenderアドオン『ManuelBastioniLAB』
まだ続くブログの不調
書籍『ゼロから作るDeep Learning』で自分なりに学ぶ
オープンソースの3Dメッシュデータライブラリ『OpenMesh』
OpenCVの超解像処理モジュール『Super Resolution』
Iterator
SDカードサイズのコンピューター『Intel Edison』
Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『TouchScript』

コメント