3DCGをガッツリ学んでたもんで、「2次元の画像処理よりも3次元のCGの方が抽象度が高くて美しい」という感覚があって、コンピュータビジョンに対して「お前らとは次元が違うんだよ」とか思ってたんだけど、最近のコンピュータビジョンは結構3次元なのよね。
Structure from Motion (多視点画像からの3次元形状復元)とは?
Structure from Motion(SfM)は、視点の違う複数枚の画像から被写体の3次元形状、及びカメラの相対位置を復元するというジャンル。理論上、5視点あればカメラ位置は推定できるらしい。最近では、ネット上の画像を使って大規模に街の形状を復元する研究とかもある。
CG分野から見れば、これはモデリングのプロセスで、広い意味では現実物体の3次元スキャン手法と言えるかも。
SSII2013のチュートリアルセッション「多視点画像からの3次元復元 ~基本原理から大規模復元まで~」で知りました。
この手法の特性
この手法は複数画像間の対応を求めるために局所特徴量を使うので、被写体にはそれなりに模様とかパターンが分布していないと上手くいかない。当然、光沢のある被写体は対応が上手く取れないので形状が復元できない。よくある例だと、ぬいぐるみみたいにふさふさして光沢がないオブジェクトは上手くいく。
画像間の対応を求めるのはパノラマ画像の合成と似た感じ。文献によると、対応点を求めるには視差が15度以下であることが望ましいらしい。
手軽に試すなら
フリーのツールやオープンソースのライブラリもいくつかあり、Youtubeでもいっぱい例が見つかる。
こちらは有名なフリーツールのVisualSFM
参考資料
処理の中身を詳しく知りたいなら、↓こちらの書籍の第4章 Exploring Structure from Motion Using OpenCVが無料で公開されている。
ソースコードはGitHubにある。これをビルドするには、OpenCVとは別にPoint Cloud Library(PCL)とSimple Sparse Bundle Adjustment (SSBA)が必要。
参考記事:【新書情報】Mastering Opencv with Practical Computer Vision (洋書) - 実践的なCompute Vision応用のOpenCVによる習得を目指す本
日本語で読める参考書籍
3次元復元系の日本語解説本ならこちら↓
コンピュータビジョン勉強会@関東の第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
関連記事
NeRF (Neural Radiance Fields):...
FCN (Fully Convolutional Netwo...
注文してた本が届いた
PureRef:リファレンス画像専用ビューア
オープンソースの人体モデリングツール『MakeHuman』の...
布地のシワの法則性
画像生成AI Stable Diffusionで遊ぶ
PGGAN:段階的に解像度を上げて学習を進めるGAN
オープンソースのネットワーク可視化ソフトウェアプラットフォー...
ZBrushのお勉強
顔追跡による擬似3D表示『Dynamic Perspecti...
OpenCVの三角測量関数『cv::triangulatep...
網元AMIで作ったWordpressサイトのインスタンスをt...
Raspberry Pi
ZBrushで仮面ライダー3号を造る 仮面編 PolyGro...
ちょっと凝り過ぎなWebキャンペーン:全日本バーベイタム選手...
PCA (主成分分析)
映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウ...
Alice Vision:オープンソースのPhotogram...
BlenderのPython環境にPyTorchをインストー...
書籍『The Art of Mystical Beasts』...
オープンソースのロボットアプリケーションフレームワーク『RO...
『ローグ・ワン/スター・ウォーズ・ストーリー』のVFXブレイ...
OpenCV バージョン4がリリースされた!
ZBrushで仮面ライダー3号を造る 仮面編 ZRemesh...
ZBrushで基本となるブラシ
Pix2Pix:CGANによる画像変換
ZBrushでゴジラ2001を作ってみる 側頭部のボリューム...
ZBrushでアヴァン・ガメラを作ってみる 甲羅のバランス調...
書籍『開田裕治 怪獣イラストテクニック』
ハリウッド版「GAIKING」パイロット映像
Konashiを買った
池袋パルコで3Dのバーチャルフィッティング『ウェアラブル ク...
ニューラルネットワークと深層学習
Leap MotionでMaya上のオブジェクトを操作できる...
OpenCVの顔検出過程を可視化した動画
Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『...
Unityをレンダラとして活用する
Human Generator:Blenderの人体生成アド...
OpenCVでカメラ画像から自己位置認識 (Visual O...
Deep Learningとその他の機械学習手法の性能比較
フォトンの放射から格納までを可視化した動画
コメント