#SfMとは
###定義
SfM:Structure from Motion
ある対象を撮影した複数枚の写真から、対象の形状を復元する技術の総称。
SfMソフトウェアを使用して、複数の写真を入力することで、3次元のモデルを容易に作成可能。
###特徴点
写真内に写り込んだ建物の角などは、明るさが変わっているため特徴的な点である。
このような点を特徴点と呼ぶ。
特徴点は、写真内の位置(座標)として特定することができ、別の場所から撮影した写真からも同じ特徴点を特定することで、
全ての特徴点と写真を撮影した位置・姿勢の関係を求めることができる。
###ハンドル調整
複数枚の撮影した画像から、撮影した位置、姿勢を求めること。
空中写真測量の分野で長く使われてきましたが、コンピュータビジョンの分野でも使われるようになった。
コンピュータビジョンでは自動で誤った点も含めて多くの特徴点を抽出し、誤った特徴点は後から除外していく方法を取ることで自動化を実現している。
###SfMのソフトウェア
####OSS
・Bundler:2016年からあまり更新されていない??
・openSfM:2018年2月にv0.2.0、python3のサポートができている
・openMVG
・Theia
・COLMAP
・MVE
####市販ソフト
・ContextCapture
・Pix4D
・PhotoScan
###OpenSfMの事前知識
OpenSfMは、Pythonで記述されたMotionライブラリ。
外部センサ(GPS、加速度計)の測定を統合する。
JavaScriptビューワーが提供されている。
pythonのバージョンは2.7か3.6以降
以下のライブラリと依存関係にある
・OpenCV
・OpenGV
・Ceres Solver
・NumPy, SciPy, Networkx, PyYAML, exifread
#OpenSfMの環境構築
初めにOpenSfMのGitHubをクローンする。
git clone --recursive https://github.com/mapillary/OpenSfM
サブモジュールの更新
cd OpenSfM
git submodule update --init --recursive
OpenCV, Ceres Solverのインストール
brew tap homebrew/science
brew install opencv
brew install ceres-solver
sudo pip install -r requirements.txt
OpenGVのインストール、ビルド
brew install eigen
git clone --recurse-submodules -j8 https://github.com/paulinus/opengv.git
cd opengv/build
cmake .. -DBUILD_TESTS=OFF -DBUILD_PYTHON=ON
make install
Pythonのパスを設定していなかったら以下を実行
export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
最後にOpenSfMのビルド
python setup.py build