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 のシステム更新を行うときは, 端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである.

Ubuntu のインストールはこちらの別ページで説明する.

# パッケージリストの情報を更新
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 上)

この手順は,次の Web ページの説明による.

https://colmap.github.io/install.html

依存ライブラリのインストール(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