画像からカメラの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のプロジェクトをビルドすれば試せます。

過去記事


写真から3Dメッシュの生成・編集ができる無料ツール『Autodesk Memento』
Autodeskから無料の3D復元・編集ツールが出てた。まだベータ版らしい。複数枚写真からの3Dメッシュ生成だけじゃなく、3Dスキャナーで撮った点群の編集もできるみたい。追記:ベータ版だったAutodesk Mementoから名称が変...

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


スポンサーリンク

関連記事

Raspberry Pi 2のGPIOピン配置
第25回コンピュータビジョン勉強会@関東に行って来た
「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作ったのか
ブログが1日ダウンしてました
オープンソースのIT資産・ライセンス管理システム『Snipe-IT』
Verilog HDL
Point Cloud Consortiumのセミナー「3D点群の未来」に行ってきたよ
マルコフ連鎖モンテカルロ法
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
RefineNet (Multi-Path Refinement Network):ディープラーニン...
UnityでTweenアニメーションを実装できる3種類の無料Asset
2D→3D復元技術で使われる用語まとめ
SSII2014 チュートリアル講演会の資料
UnityのGameObjectの向きをScriptで制御する
OpenCVで動画の手振れ補正
海外ドラマのChromaKey
オープンソースの3Dメッシュデータライブラリ『OpenMesh』
Konashiを買った
Raspberry Pi 2を買いました
PythonでMayaのShapeノードプラグインを作る
今年もSSII
Model View Controller
立体視を試してみた
1枚の画像からマテリアルを作成できる無料ツール『Materialize』
Google XML Sitemap Generatorプラグインを3.4.1へダウングレード
Amazon Web ServicesでWordPress
機械学習手法『SVM(Support Vector Machine)』
OpenCVの超解像(SuperResolution)モジュールを試す
Google App Engineのデプロイ失敗
OpenCVベースのコンパクトなARライブラリ『ArUco』
Pythonのソースコードに特化した検索エンジン『Nullege』
ブラウザ操作自動化ツール『Selenium』を試す
コンピュータビジョン研究のためのUnreal Engineプラグイン『UnrealCV』
ディープラーニングに対応したPythonの機械学習ライブラリ『Pylearn2』
Unityの各コンポーネント間でのやり取り
SDカードサイズのコンピューター『Intel Edison』
統計的な顔モデル
WordPressプラグインによるサイトマップの自動生成
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
池袋パルコで3Dのバーチャルフィッティング『ウェアラブル クロージング バイ アーバンリサーチ』
openMVGをWindows10 Visual Studio 2015環境でビルドする
RSSフィードを読込んで表示するWordpressプラグイン『RSSImport』

コメント