LoginSignup
2
1

オープンソースフォトグラメトリを実行するための環境構築(2024年3月版)

Last updated at Posted at 2024-03-19

はじめに

この記事は,Ubuntu系の計算機にオープンソースの
フォトグラメトリを行う環境を構築する手順の記載となります.
各オープンソースの最新版で環境構築できたので,備忘録として残しておきます.
昨年記事: オープンソースによるフォトグラメトリを実行するための環境構築

フォトグラメトリとは

立体復元対象が写っている複数の写真から,
立体復元対象の3Dモデルを生成する手法のことです.

計算機スペック

  • OS: LinuxMint21.3(Ubuntu22.04相当)で環境構築を行います
  • フォトグラメトリに使用する計算機のCPUとGPUは高スペックであることが望ましい(計算時間がかかります.)
  • CPUはamd64プロセッサ(intelやryzenで大丈夫かと,arm64系は多分インストールできません.)
  • GPUはGeForce RTX 3080 Tiを使用
  • CUDAが必須(NVIDIA系のGPUが必要になります.)
  • make -j32を使っています.(著者環境なので,CPUのコア数で適宜変更してください.)

インストールするオープンソースフォトグラメトリライブラリ

クリーンインストールした状態からの環境構築手順

  • 必要に応じて適宜変更して行ってください.

1. 初期設定およびnvidiaドライバのインストール

ユーザディレクトリの英語化
$ LANG=C xdg-user-dirs-gtk-update
パッケージの更新
$ sudo apt update
$ sudo apt upgrade
vimをインストール(著者はvimを使うので)
$ sudo apt install vim
nouveauの確認
$ lsmod | grep nouveau
# このコマンドを実行後,何か表示されたら,次の内容を行うこと
# 表示されない場合,nvidiaドライバの確認へ
nouveauの無効化の準備
$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf # 次の内容を書き込んでください
blacklist-nouveau.confに書き込む内容
blacklist nouveau
options nouveau modeset=0 
nouveauの無効化,再起動
$ sudo update-initramfs -u 
$ sudo reboot 
nouveauの無効化の確認および,nvidiaドライバの確認
$ lsmod | grep nouveau # 何も表示しないことを確認する
$ ubuntu-drivers devices # recommended表示の nvidia-driver-○○ の "○○"をメモする
nvidiaドライバのインストール
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt install nvidia-driver-535 # メモした"○○"をインストール(今回の場合は535をインストール)
$ sudo reboot # 再起動すれば,nvidiaドライバが機能します.

2. CUDAのインストール(cuda12.1をインストールします,別件で著者はPyTorchを使うため)

  • CUDA Toolkit 12.1 Update 1 Downloadsを参考にインストールします.
  • Select Target Platformは以下を選択
    • Operating System: Linux
    • Architecture: x86_64
    • Distribution: Ubuntu
    • Version: 22.04
    • Installer Type: deb(local)
  • ただし,cuda-toolkitをインストールします.
CUDAをインストール(最後だけ注意)
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
$ sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
$ sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt update
$ sudo apt install cuda-toolkit-12-1
CUDAのパスを通す
$ vim .bashrc
.bashrcの最後に以下を記載する
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
設定を反映させる
$ source .bashrc
$ nvcc -V # このコマンドが実行できればOK

3. OpenMVSのインストール(参考サイト

必要パッケージのインストール(Ceres Solver)
$ sudo apt install git cmake cmake-curses-gui cmake-gui build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config libeigen3-dev libatlas-base-dev libsuitesparse-dev libgoogle-glog-dev libgflags-dev libsuitesparse-dev
Ceres Solverのインストール(最新安定版を選択: 今回は2.2.0)
$ git clone https://ceres-solver.googlesource.com/ceres-solver -b 2.2.0
$ cd ceres-solver
$ mkdir build
$ cd build
$ cmake .. -DEIGENSPARSE=ON -DSUITESPARSE=ON -DSuiteSparse_AMD_INCLUDE_DIR=/usr/include/suitesparse -DSuiteSparse_CAMD_INCLUDE_DIR=/usr/include/suitesparse -DSuiteSparse_COLAMD_INCLUDE_DIR=/usr/include/suitesparse -DSuiteSparse_CCOLAMD_INCLUDE_DIR=/usr/include/suitesparse -DSuiteSparse_CHOLMOD_INCLUDE_DIR=/usr/include/suitesparse -DSuiteSparse_SPQR_INCLUDE_DIR=/usr/include/suitesparse -DSuiteSparse_Config_INCLUDE_DIR=/usr/include/suitesparse -DSuiteSparse_Config_LIBRARY=/usr/lib/x86_64-linux-gnu/libsuitesparseconfig.a
$ make -j32
$ sudo make install
$ cd

参考URL: Ceres Solver

必要パッケージのインストール(OpenMVS)
# Prepare and empty machine for building:
$ sudo apt install libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev

# Boost (Required)
$ sudo apt install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev

# OpenCV (Required)
$ sudo apt install libopencv-dev

# CGAL (Required)
$ sudo apt install libcgal-dev libcgal-qt5-dev

# VCGLib (Required)
$ cd /usr/local/
$ sudo git clone https://github.com/cdcseacave/VCG.git vcglib
$ sudo chown -R $USER vcglib
$ cd

# GLFW3 (Optional)
$ sudo apt install freeglut3-dev libglew-dev libglfw3-dev

# OpenMVS
$ sudo apt install python3-dev
$ git clone https://github.com/cdcseacave/openMVS.git -b v2.3.0
$ mkdir openMVS_build 
$ cd openMVS_build
$ cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="/usr/local/vcglib"
$ make -j32 
$ sudo make install
$ cd

参考URL: OpenMVS Building

OpenMVSのパスを通す
$ vim .bashrc
.bashrcのPATHを以下の内容に変更する
export PATH="/usr/local/cuda/bin:/usr/local/bin/OpenMVS:$PATH"
設定を反映させる
$ source .bashrc

4. COLMAPのインストール

必要パッケージのインストール
$ sudo apt install git cmake ninja-build build-essential libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libeigen3-dev libflann-dev libfreeimage-dev libmetis-dev libgoogle-glog-dev libgtest-dev libsqlite3-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev libceres-dev
コンパイラのインストール
$ sudo apt install gcc-10 g++-10
コンパイラのパスを通す
$ vim .bashrc
.bashrcの最後に以下の内容を追記する
export CC=/usr/bin/gcc-10
export CXX=/usr/bin/g++-10
export CUDAHOSTCXX=/usr/bin/g++-10
設定を反映させる
$ source .bashrc
必要パッケージのインストール
$ sudo apt install nvidia-cuda-toolkit nvidia-cuda-toolkit-gcc libcgal-qt5-dev
COLMAPのインストール
$ git clone https://github.com/colmap/colmap.git -b 3.9
$ cd colmap
$ vim CMakeLists.txt
CMakeLists.txtの最初の1行目に以下を追記する
set(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc")
COLMAPのインストール(続き)
$ mkdir build
$ cd build

使用するGPUのCompute Capabilityを調べておく

COLMAPのインストール(続き)
$ cmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES=86
# GeForce RTX 3080 TiのCompute Capability 8.6の小数点を除去した値を指定
# GeForce RTX 4090使用の場合,-DCMAKE_CUDA_ARCHITECTURES=89 となる
$ ninja
$ sudo ninja install
$ cd

5. COLMAP,OpenMVSの実行例

OpenMVSのサンプル画像をダウンロードするしてフォトグラメトリを実行
$ git clone https://github.com/cdcseacave/openMVS_sample.git
$ cd openMVS_sample
$ rm -rf !(images) # imagesフォルダ以外すべて削除する
# COLMAPの処理
$ colmap feature_extractor --database_path database.db --image_path ./images
$ colmap exhaustive_matcher --database_path database.db
$ mkdir sparse
$ mkdir dense
$ colmap mapper --database_path database.db --image_path ./images --output_path ./sparse
$ colmap image_undistorter --image_path ./images --input_path ./sparse/0 --output_path ./dense
# OpenMVSの処理
$ InterfaceCOLMAP -i ./dense -o scene.mvs
$ DensifyPointCloud ./scene.mvs
$ ReconstructMesh ./scene_dense.mvs
$ TextureMesh -i scene_dense.mvs --mesh-file scene_dense_mesh.ply
$ Viewer -i scene_dense_texture.ply
# Ctrl-CでViewerを止める
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1