COLMAP のインストール(Ubuntu 上)
【概要】
COLMAP は,SfM (Structure from Motion) と MVS (Multi-View Stereo) の機能を持つオープンソースソフトウェアである.【目次】
【関連する外部ページ】
URL: https://github.com/colmap/colmap
公式ドキュメント: https://colmap.github.io/
第1章 前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである.
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新(依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で再起動が必要な場合のみ実行する
# sudo shutdown -r now
Git, CMake, Ninja のインストール(Ubuntu 上)
インストールするには,端末で,次のコマンドを実行する.
sudo apt -y install git cmake ninja-build
C/C++ コンパイラと Make とビルドツールのインストール
ソフトウェアをソースコードからビルドするには,C/C++コンパイラ(通常はGCC)や make ユーティリティといった開発ツールが必要である.Ubuntuでは,これらのツールは build-essential パッケージにまとめられている.インストールするには,端末で,次のコマンドを実行する.
sudo apt -y install build-essential libtool texinfo dpkg-dev pkg-config
libtool, texinfo, dpkg-dev, pkg-config は,より複雑なビルドやパッケージ管理の際に役立つ開発関連ツールである.
NVIDIA ドライバ,NVIDIA CUDA ツールキット 12.8,NVIDIA cuDNN のインストール(Ubuntu 上)
Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット 12.8,NVIDIA cuDNN のインストール: 別ページ »で説明
第2章 COLMAP のインストール(ソースコードを使用)(Ubuntu 上)
依存ライブラリのインストール(Ubuntu 上)
COLMAP は,Eigen,Ceres Solver,SuiteSparse,Qt などのライブラリに依存している.Ubuntu 標準のパッケージからまとめてインストールできるため,Ceres Solver をソースコードからビルドする必要はない.
端末で,次のコマンドを実行する.
sudo apt -y install \
git \
cmake \
ninja-build \
build-essential \
libboost-program-options-dev \
libboost-graph-dev \
libboost-system-dev \
libeigen3-dev \
libopenimageio-dev \
openimageio-tools \
libmetis-dev \
libgoogle-glog-dev \
libgtest-dev \
libgmock-dev \
libsqlite3-dev \
libglew-dev \
qt6-base-dev \
libqt6opengl6-dev \
libqt6openglwidgets6 \
qt6-svg-dev \
libcgal-dev \
libceres-dev \
libsuitesparse-dev \
libcurl4-openssl-dev \
libssl-dev
# Ubuntu の openimageio の CMake 設定の不具合を回避する
# (openimageio の OpenCV 関連機能は使わないが,OpenCV のインクルードディレクトリの存在が必要)
sudo mkdir -p /usr/include/opencv4
* GPU 版をインストールしたい場合,NVIDIA CUDA ツールキットを事前にインストールしておく(前準備の章を参照).NVIDIA ドライバ(https://www.nvidia.com/download/index.aspx),NVIDIA CUDA ツールキット 12.8,NVIDIA cuDNN のインストール: 別ページ »で説明
COLMAP のビルド(Ubuntu 上)
端末で,次のコマンドを実行する.-DCMAKE_CUDA_ARCHITECTURES=native は,ビルドを行っている手元の GPU 向けにのみ COLMAP を最適化する指定である.他の環境にも配布したい場合は,「native」の代わりに「all-major」を指定する.
cd /tmp
rm -rf colmap
git clone https://github.com/colmap/colmap.git
cd colmap
mkdir build
cd build
cmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES=native
ninja
sudo ninja install
* CPU 版をインストールしたい場合,CUDA 関連の指定を省略してビルドする.
cd /tmp
rm -rf colmap
git clone https://github.com/colmap/colmap.git
cd colmap
mkdir build
cd build
cmake .. -GNinja -DCUDA_ENABLED=OFF
ninja
sudo ninja install
動作確認
端末で,次のコマンドを実行する.ヘルプメッセージが表示されれば,インストールは成功している.
colmap -h
第3章 実行手順例(Ubuntu 上)
多視点画像の準備
COLMAP の公式サンプルデータセットである South Building(UNC Chapel Hill キャンパスの建物を撮影した128枚の画像)をダウンロードする.
cd /usr/local
sudo mkdir -p image
cd /usr/local/image
# unzip が入っていない場合はインストールする
sudo apt -y install unzip
# South Building データセットのダウンロード
sudo rm -rf south-building south-building.zip
sudo wget https://demuc.de/colmap/datasets/south-building.zip
sudo unzip south-building.zip
SfM と MVS を行ってみる
COLMAP には,画像フォルダを指定するだけで特徴抽出,マッチング,SfM(スパース復元),MVS(デンス復元)までを自動で行う automatic_reconstructor コマンドが用意されている.次のように実行する.
dataset=/usr/local/image/south-building/images
workspace=/var/tmp/south-building
sudo rm -rf $workspace
sudo mkdir -p $workspace
# 特徴抽出,マッチング,SfM,MVS を一括で実行する
colmap automatic_reconstructor \
--workspace_path $workspace \
--image_path $dataset
実行が終わると,$workspace/sparse にスパース復元結果(カメラ位置や特徴点の3次元座標),$workspace/dense にデンス復元結果(点群 fused.ply やメッシュ)が生成される.
スパース復元の結果は,GUI で次のように確認できる.
colmap gui --import_path /var/tmp/south-building/sparse/0 --database_path /var/tmp/south-building/database.db --image_path /usr/local/image/south-building/images
個々の処理段階を分けて実行したい場合は,次のように,特徴抽出,マッチング,SfM(スパース復元)を順に実行する.
dataset=/usr/local/image/south-building/images
workspace=/var/tmp/south-building-step
sudo rm -rf $workspace
sudo mkdir -p $workspace/sparse
# 特徴抽出
colmap feature_extractor \
--image_path $dataset \
--database_path $workspace/database.db
# 網羅的マッチング(画像枚数が少ない場合に適する)
colmap exhaustive_matcher \
--database_path $workspace/database.db
# インクリメンタル SfM によるスパース復元
colmap mapper \
--image_path $dataset \
--database_path $workspace/database.db \
--output_path $workspace/sparse