openMVGをWindows10 Visual Studio 2015環境でビルドする

Windows環境でOpenCVのsfmモジュールをビルドするのはえらい面倒だったので、変にOpenCVにこだわるのはやめようと思う。



以前見つけたopenMVGをビルドしてみる。
openMVG:複数視点画像から3次元形状を復元するライブラリ
最近、この手の2D→3D復元系のライブラリを色々と調べている。何となく、自分で3D復元ツールを作ってみたくてね。この間のOpenGVは複数画像からカメラ(視点)の3次元位置・姿勢を推定するライブラリだった↓こっちのopenMVG(...


openMVGの公式ドキュメントによると、openMVGは他の依存ライブラリを別途ビルドする必要がなく、openMVGのリポジトリ一式だけでビルドできるようだ。(cereal, glfw, osi_clpdependenciesディレクトリに入れておく必要がありますが)

openMVG documentation!

依存関係

openMVGはスタンドアローンのディストリビューションです。使用するにあたって、追加で依存ライブラリ群をインストールする必要はありません。Linux環境では、ローカルのpng, zlib, jpegライブラリを利用することもできます。

オプションで外部のライブラリとリンクしたビルドもできるようだけど、まずはopenMVG単体でビルドして遊んでみることにする。(ちょっと欲を出して自前でOpenCVやら何やらも含めてビルドしようとしたらエラー地獄にはまったのは内緒)

CMake GUIで基本的にデフォルト設定のままで、唯一、サンプルもビルドするように追加で指定してからGenerateですんなりVisual Studio 2015でビルドできた。


スポンサーリンク


まずはサンプルを動かしながら勉強していく。公式ドキュメントのサンプル解説ページを自分用にざっと翻訳。↓

openMVG samples

openMVGは特徴量のチェックの実装に強くフォーカスしています。そのため、主要な特徴量を利用するサンプルとして(コードの使い方を知る手助けとなるような)ユニットテストを提供しています。

サンプルはショーケースやチュートリアルとしてご覧いただけます:

imageData

以下の実装例で使うのための画像ファイル。

features_siftPutativeMatches

このサンプルの内容:

  • SIFT特徴と記述の抽出
  • 特徴のマッチング
  • マッチング結果の表示

features_affine_demo

このサンプルの内容:

  • MSER/MSCR特徴量による領域検出
  • 領域にフィッティングした楕円の表示

features_image_matching

このサンプルの内容:

  • Image_describerインターフェイスを使った特徴・記述の抽出
  • 検出した領域のマッチング
  • 検出した特徴とマッチング処理結果の対応点の表示

features_kvld_filter

このサンプルの内容:

  • K-VLDフィルタによる対応関係の推定 [KVLD12]

features_repeatability

オックスフォード大の画像データベース“Affine Covariant Regions Datasets”を使って、特徴・記述によるマッチングの精度を測定する方法


スポンサーリンク

multiview_robust_homography

このサンプルの内容:

  • マッチングした特徴間のロバストなホモグラフィー推定

multiview_robust_homography_guided

このサンプルの内容:

  • マッチングした特徴間のロバストなホモグラフィー[H]推定
  • 推定したマッチングをH Guided Filterで拡張
  • クエリ画像をリファレンス画像上にワープ

multiview_robust_fundamental

このサンプルの内容:

  • マッチングした特徴間のロバストな基礎行列推定

multiview_robust_fundamental_guided

このサンプルの内容:

  • マッチングした特徴間のロバストな基礎行列[F]推定
  • 推定したマッチングをF Guided Filterで拡張

multiview_robust_essential

このサンプルの内容:

  • マッチングした特徴間のロバストな基本行列[E]推定
  • 対応点の三角測量による3次元構造の算出

multiview_robust_essential_ba

このサンプルの内容:
以下の異なるカメラモデルで、シーンの構造とモーションをbundle_adjustmentで補正する:

  • [X], [f,R|t] (別々のカメラ)での補正
  • [X], [R|t], 共通の[f]での補正
  • [X], [R|t], 共通のBrown–Conrady歪みモデルでの補正

multiview_robust_essential_spherical

このサンプルの内容:

  • 2つの球面パノラマ間のロバストな基本行列[E]推定
  • 対応点から三角測量

exif_Parsing

このサンプルの内容:

  • JPEGファイルのEXIFメタデータのパース

exif_sensorWidthDatabase

このサンプルの内容:

  • カメラセンサーをデータベースと併用する

cameras_undisto_Brown

このサンプルの内容:

  • Brown–Conrady歪みモデルの既知の放射パラメータを用いた画像の歪み補正

本リストの拡充作業への参加に躊躇はいりません。

公式ドキュメントではサンプルが15個あるみたいに書いてあるけど、GitHubのリポジトリ上には14個しかなかったぞ。exif_sensorWidthDatabaseってどこにあるんだ?

PDFのドキュメントも存在するんですね↓

openMVG Documentation | Pierre MOULON & Bruno DUISIT

チュートリアルスライド資料も見つけた↓

OpenMVG Tutorial

部分的にフランス語っぽいですが。。。
この資料によると、openMVGにGUIを付けたプロジェクトRegard3Dというのがあるらしい。何だ面白そうじゃないか。


スポンサーリンク

関連記事

OpenCVのfindEssentialMat関数を使ったサンプルを読んでみる
コンピュータビジョンの技術マップ
ディープラーニングに対応したPythonの機械学習ライブラリ『Pylearn2』
UnityのGlobal Illumination
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
『手を動かしながら学ぶエンジニアのためのデータサイエンス』ハンズオンセミナーに行ってきた
UnityでLight Shaftを表現する
ArUco:OpenCVベースのコンパクトなARライブラリ
IronPythonを使ってUnity上でPythonのコードを実行する
畳み込みニューラルネットワーク (CNN: Convolutional Neural Network...
ブログの復旧が難航してた話
Model View Controller
AMIMOTO(PVM版)で作成したインスタンスをAMIMOTO (HVM版)へ移行する
Unity Scriptコーディング→Unreal Engine Scriptコーディング
adskShaderSDK
iOSで使えるJetpac社の物体認識SDK『DeepBelief』
Pythonのソースコードに特化した検索エンジン『Nullege』
SDカードサイズのコンピューター『Intel Edison』
Mitsuba 2:オープンソースの物理ベースレンダラ
Kaolin:3Dディープラーニング用のPyTorchライブラリ
iPhoneアプリ開発 Xcode 5のお作法
UnityでShaderの入力パラメータとして行列を渡す
YOLO (You Only Look Once):ディープラーニングによる一般物体検出手法
立体視を試してみた
UnrealCV:コンピュータビジョン研究のためのUnreal Engineプラグイン
Autodesk Mementoでゴジラを3次元復元する
OpenCV3.3.0でsfmモジュールのビルドに成功!
WordPressプラグインの作り方
Mean Stack開発の最初の一歩
UnrealCLR:Unreal Engineで.NET Coreを利用できるプラグイン
NumSharp:C#で使えるNumPyライクな数値計算ライブラリ
Managing Software Requirements: A Unified Approach
Python.NET:Pythonと.NETを連携させるパッケージ
Unityで学ぶC#
CGALDotNet:計算幾何学ライブラリ CGALのC#ラッパー
Point Cloud Libraryに動画フォーマットが追加されるらしい
OpenCVの超解像(SuperResolution)モジュールを試す
Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『TouchScript』
ポリゴンジオメトリ処理ライブラリ『pmp-library (Polygon Mesh Process...
池袋パルコで3Dのバーチャルフィッティング『ウェアラブル クロージング バイ アーバンリサーチ』
PyDataTokyo主催のDeep Learning勉強会
3Dスキャンに基づくプロシージャルフェイシャルアニメーション

コメント