Multi-View Stereoによる3次元復元ライブラリ『OpenMVS』

複数枚の2D画像から、カメラの3D姿勢情報と被写体の疎(sparse)な3D点群を推定するのがStructure from Motionという手法。そこで求めたカメラの姿勢、点群の情報を使ってさらに密(dense)な点群を求めるのがMulti-View Stereoという手法。
Structure from Motionのライブラリは結構色々あるみたいなんだけど、そこから密な点群を求めるMulti-View Stereoのライブラリはあんまり見かけないんだよね。(PMVSというツールは有名ですが)

このOpenMVS(Multi-View Stereo)は、名前の通り、密な点群を復元するMulti-View Stereoのアルゴリズムを実装したライブラリ。OpemMVS自体はAGPLライセンスだけど、依存しているサードパーティのライブラリが細々と沢山あり、それぞれのライセンスに従うのでこちらを参照。

OpenMVS

OpenMVS(Multi-View Stereo)は、コンピュータビジョン科学者、特にMulti-View Stereo reconstructionの分野を対象としたライブラリです。
Structure-from-Motionのパイプラインを実装した(OpenMVGなどの)オープンソースプロジェクトを使えば、入力画像セットからカメラの姿勢や疎な3次元点群を復元できますが、それだけではphotogrammetry chain-flowの最後のプロセスが欠けています。OpenMVSは、この最後のプロセス、再構築するシーンの完全なサーフェイスを復元するためのアルゴリズムを提供します。
OpenMVSへの入力はカメラの姿勢セットと疎な点群、OpenMVSからの出力はテクスチャ付きのMeshになります。
このプロジェクトの主な特長は以下の通りです。

  • 密な点群の復元:可能な限り完全・正確な点群を得るための復元
  • Meshの再構築:入力点群から高品質なMesh表面を推定するためのMesh再構築
  • Meshの分割:全てのディティールを復元するためのMesh分割
  • Meshのテクスチャリング:Meshを着色するためのシャープで正確なテクスチャ計算

詳細なドキュメントはWikiをご覧ください。


スポンサーリンク

このライブラリ、OpenMVGのドキュメントで紹介されていたのだ。


スポンサーリンク


OpenMVGのドキュメントによると、OpenMVGとOpenMVSの連携は比較的簡単にできるみたい。
ソースコードはGitHubにある。↓
https://github.com/cdcseacave/openMVS

ドキュメントはGitHub上のWikiに。↓
https://github.com/cdcseacave/openMVS/wiki

OpenMVGの出力結果をOpenMVSの入力に使う例も載ってる。↓

使い方

secene dense

追記:ドキュメントに従ってサンプルを動かしてみた↓


関連資料

Multi-View Stereoについては、毎度おなじみコンピュータビジョン最先端ガイド5と、コンピュータビジョン勉強会@関東の第28回の資料が参考になる。

コンピュータビジョン最先端ガイド5 (CVIMチュートリアルシリーズ)





スポンサーリンク

関連記事

Quartus II
インタラクティブにComputer Visionコーディングができるツール『Live CV』
複数視点画像から3次元形状を復元するライブラリ『openMVG』
iPhoneアプリ開発 Xcode 5のお作法
PythonのHTML・XMLパーサー『BeautifulSoup』
ニューラルネットワークの構造を可視化するフレームワーク『TensorSpace.js』
UnityでLight Shaftを表現する
OpenCV 3.1から追加されたSfMモジュール
AndroidもopenGLも初心者さ (でもJavaは知ってるよ)
Raspberry Pi 2を買いました
takminさんが機械学習・画像認識の便利ツールを公開しています
UnityでOpenCVを使うには?
Pythonのソースコードに特化した検索エンジン『Nullege』
オープンソースの顔認識フレームワーク『OpenBR』
機械学習手法『SVM(Support Vector Machine)』
Point Cloud Libraryに動画フォーマットが追加されるらしい
iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』
科学技術計算向けスクリプト言語『Julia』
OpenCVベースのコンパクトなARライブラリ『ArUco』
Unity ARKitプラグインサンプルのチュートリアルを読む
3Dグラフィックスの入門書
オープンソースのSLAMライブラリ『Cartographer』
第1回 3D勉強会@関東『SLAMチュートリアル大会』
1枚の画像からマテリアルを作成できる無料ツール『Materialize』
バージョン管理の履歴を可視化するツール『Gource』
統計的な顔モデル
Deep Neural Networkによる顔の個人識別フレームワーク『OpenFace』
AMIMOTO(PVM版)で作成したインスタンスをAMIMOTO (HVM版)へ移行する
UnityからROSを利用できる『ROS#』
書籍『OpenCV 3 プログラミングブック』を購入
機械学習で遊ぶ
池袋パルコで3Dのバーチャルフィッティング『ウェアラブル クロージング バイ アーバンリサーチ』
動的なメモリの扱い
.NETで使えるTensorFlowライクなニューラルネットワークライブラリ『NeuralNetwo...
OpenCVで顔のランドマークを検出する『Facemark API』
書籍『仕事ではじめる機械学習』を読みました
書籍『ROSプログラミング』
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
フィーリングに基づくタマムシの質感表現
openMVGをWindows10 Visual Studio 2015環境でビルドする
C#で使えるNumPyライクな数値計算ライブラリ『NumSharp』
Seleniumを使ったFXや株の自動取引

コメント

  1. […] がとうございます。 NegativeMindさんありがとうございます。 NegativeMindException | Multi-View Stereoによる3次元復元ライブラリ『OpenMVS』 NegativeMindException | 複数視点画像から3次元形状を復元するラ […]