Structure from Motion (多視点画像からの3次元形状復元)

3DCGをガッツリ学んでたもんで、「2次元の画像処理よりも3次元のCGの方が抽象度が高くて美しい」という感覚があって、コンピュータビジョンに対して「お前らとは次元が違うんだよ」とか思ってたんだけど、最近のコンピュータビジョンは結構3次元なのよね。

Structure from Motion (多視点画像からの3次元形状復元)とは?

Structure from Motion(SfM)は、視点の違う複数枚の画像から被写体の3次元形状、及びカメラの相対位置を復元するというジャンル。理論上、5視点あればカメラ位置は推定できるらしい。最近では、ネット上の画像を使って大規模に街の形状を復元する研究とかもある。
CG分野から見れば、これはモデリングのプロセスで、広い意味では現実物体の3次元スキャン手法と言えるかも。
SSII2013のチュートリアルセッション「多視点画像からの3次元復元 ~基本原理から大規模復元まで~」で知りました。


スポンサーリンク


この手法の特性

この手法は複数画像間の対応を求めるために局所特徴量を使うので、被写体にはそれなりに模様とかパターンが分布していないと上手くいかない。当然、光沢のある被写体は対応が上手く取れないので形状が復元できない。よくある例だと、ぬいぐるみみたいにふさふさして光沢がないオブジェクトは上手くいく。
画像間の対応を求めるのはパノラマ画像の合成と似た感じ。文献によると、対応点を求めるには視差が15度以下であることが望ましいらしい。

手軽に試すなら

フリーのツールやオープンソースのライブラリもいくつかあり、Youtubeでもいっぱい例が見つかる。
こちらは有名なフリーツールのVisualSFM

Structure from Motion with VisualSFM


参考資料

処理の中身を詳しく知りたいなら、↓こちらの書籍の第4章 Exploring Structure from Motion Using OpenCVが無料で公開されている。

Mastering OpenCV With Practical Computer Vision Projects: Step-by-step Tutorials to Solve Common Real-world Computer Vision Problems for Desktop or Mobile, from Augmented Reality and Number Plate Recognition

ソースコードはGitHubにある。これをビルドするには、OpenCVとは別にPoint Cloud Library(PCL)Simple Sparse Bundle Adjustment (SSBA)が必要。

参考記事:【新書情報】Mastering Opencv with Practical Computer Vision (洋書) - 実践的なCompute Vision応用のOpenCVによる習得を目指す本


スポンサーリンク

日本語で読める参考書籍

3次元復元系の日本語解説本ならこちら↓

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

コンピュータビジョン勉強会@関東の第28回はこの書籍の輪読会だった。

第28回 コンピュータビジョン勉強会@関東

2015/03/28 CV勉強会@関東 「複数画像からの三次元復元手法」

2015/03/28 CV勉強会@関東「複数画像からの三次元復元手法」ツイートまとめ

1.はじめに – 2.1 画像収集


2.2 カメラパラメータ推定 – 2.2.1 Structure-from-Motion


2.3 密な形状復元 – 2.3.1 最先端のMVS研究例


3. 多眼ステレオ – 3.1 二枚の画像からのphoto-consistency


3.1 複数枚の画像からのphoto-consistency – 3.2 デプスマップ復元


3.3 デプスマップからのメッシュ復元 – 4 むすび


その他参考記事:

画像から3次元形状を復元!OpenMVGでSfMを試してみた
VisualSfMの使い方 その1 -最も単純な使い方-
VisualSfMの使い方 その2 -時系列画像からの復元-
VisualSfMの使い方 その3 -既知のカメラパラメータを用いた復元-
VisualSfMの使い方 その4 -対応点リストの読み込み-
VisualSfMの使い方 その5 -三次元点の追加-

2015/01/17追記:
上記とは別にOpenCVを使った実装例を見つけた。
Structure from Motion and 3D reconstruction on the easy in OpenCV 2.3+ [w/ code]
ソースコードはこちら↓
Toy Structure From Motion Library using OpenCV


スポンサーリンク

関連記事

TensorFlowでCGを微分できる『TensorFlow Graphics』
WordPressプラグインの作り方
立体視を試してみた
WordPress on Windows Azure
Pythonのベイズ統計ライブラリ『PyMC』
Twitter APIのPythonラッパー『python-twitter』
イタリアの自動車ブランドFiatとゴジラがコラボしたCMのメイキング
konashiのサンプルコードを動かしてみた
ZBrushで仮面ライダー3号を造る 仮面編 Clay Polish
1枚の画像からマテリアルを作成できる無料ツール『Materialize』
書籍『メイキング・オブ・ピクサー 創造力をつくった人々』を読んだ
ブラウザ操作自動化ツール『Selenium』を試す
ZBrushでUndo Historyを動画に書き出す
Point Cloud Libraryに動画フォーマットが追加されるらしい
コンピュータビジョンの技術マップ
ZBrushのキャンバスにリファレンス画像を配置する
Boost オープンソースライブラリ
3Dグラフィックスの入門書
映画『ジュラシック・ワールド』のVFXメイキング
Unity ARKitプラグインサンプルのドキュメントを読む
OpenCV
統計的な顔モデル
Unityの新しいGUI作成システム『uGUI』
RSSフィードを読込んで表示するWordpressプラグイン『RSSImport』
服飾デザインツール『CLO』
OpenMayaRender
Python拡張モジュールのWindows用インストーラー配布サイト
クラスの基本
ニューラルネットワークの構造を可視化するフレームワーク『TensorSpace.js』
ZBrush用トポロジー転送プラグイン『ZWrap Plugin for ZBrush』
Transformers ”Reference & Bulid” Siggraph 2007
OpenCVでPhotoshopのプラグイン開発
HD画質の無駄遣い
AmazonEC2のインスタンスをt1.microからt2.microへ移行する
Mayaのポリゴン分割ツールの進化
物理ベースレンダリングのためのマテリアル設定チートシート
2012 昨日のクローズアップ現代を見た
Mayaのレンダリング アトリビュート
pythonもかじってみようかと
スクラッチで既存のキャラクターを立体化したい
リメイク版ロボコップスーツのメイキング
HerokuでMEAN stack

コメント