0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

スマホ動画からCOLMAPとƒVDB-Reality-CaptureでGaussian Splattingモデルを作る

0
Last updated at Posted at 2026-02-22

1. はじめに

前回に引き続き、3D gaussian Splattingモデルを作ってみる。前回はnerfstudioで3DGSモデルを作成したが、今回は、COLMAPとƒVDB-Reality-Captureを使って作成してみた。

2. 環境

筆者環境以下の通り。

項目 内容
OS Kubuntu 24.04.04
CPU Ryzen 5 7600
メモリ DDR5-5600 64GB
マザーボード MSI MAG B650 TOMAHAWK WIFI
GPU1 ZOTAC GAMING GeForce RTX 5060 Ti 16GB Twin Edge
GPU2 MSI GeForce RTX 3060 VENTUS 2X 12G OC
GPUドライババージョン 580.126.09

2. COLMAPとは

COLMAPとは、複数の写真から物体の3D形状やカメラの位置情報を復元するオープンソースソフトウェア。バラバラに撮られた2D写真の束を解析して、カメラがどこから撮ったのか(位置・角度)を特定し、特徴点を抽出してスカスカの3D点群(Sparse Cloud)を作ることができるツール。COLMAPで作成するSparse CloudがGaussian Spalattingを作る際の入力となる。

3. ƒVDB-Reality-Captureとは

ƒVDB-Reality-CaptureとはNVIDIAが開発・保守を行う、現実世界の物体や空間をデジタル化する「リアリティキャプチャ」のためのソフトウェア。3D Gaussian Splatting(3DGS)の作成を、従来手法(gssplat)よりも圧倒的に高精度かつ高効率に行える(らしい)。

4. 手順

4.1 動画の準備

今回は愛車(自転車)を3DGS化する。スマホのカメラの動画モードで自転車をグルリと撮影。
2週くらい回って全ての部位が動画に収まるように撮影した。

image.png

4.2 動画から画像の切り出し

COLMAPへ直接動画は入力できないため、ffmpegで動画から画像を切り出す。

mkdir images
# 動画から画像を3枚/秒で高品質で抽出
ffmpeg -i "input.mp4" -vf fps=3 -q:v 2 "./images/frame_%06d.jpg" 

4.2 COLMAPのインストール

次のコマンドでCOLMAPをインストール。

sudo apt update
sudo apt install colmap

4.3 COLMAP起動

COLMAPのGUIを次のコマンドで起動する

colmap gui

image.png

4.4 COLMAPのプロジェクト新規作成

File -> New Projectを選択。

データベースのパス(新規作成のため任意のパスでOK)と画像の保存ディレクトリを指定してSaveボタンを押す。

image.png

4.5 Feature extraction

Processing -> Feature extractionを選択。
Shared for all imagesにチェックを入れてExtractボタンを押す。Shared for all imagesは、同じカメラで撮影した場合はチェックを入れるものらしい。

image.png

Feature extractionが完了すると、Log画面に完了を示すElapsed time: 0.064 [minutes]が出力される。

image.png

4.6 Feature matching

Processing -> Feature matchingを選択し、Sequentialタブに移動する。

  1. Sequentialを選択: 動画から切り出した画像を入力とする場合に選択
  2. loop_detectionにチェックを入れる: 撮影対象の物体の周りを複数回集会して撮影しているため
  3. vocab_treeを選択: loop_detectionにチェックを入れると、vocab_treeの指定が必須となる。COLMAPの公式サイトからvocab_treeをダウンロードできるので、ダウンロードして選択する。

image.png

準備ができたらRunボタンを押すとMatchingが開始される。処理完了まで待つ。

image.png

4.7 Reconstruction

Reconstruction -> Start Reconstructionを選択すると、撮影時のカメラの位置・向きと3次元点の座標の推定が始まる。

image.png

今回は、自転車の周りを周回したので、最終的に以下のような出力となった。

image.png

4.8 Reconstruction結果の保存

Extras -> Undistortionから、output_path(結果の保存先)を指定して、Undistortボタンを押す。これでCOLMAPの処理結果が保存できる。

image.png

4.9 ƒVDB-Reality-Captureのインストール

ƒVDB-Reality-Captureはpythonのライブラリのため、pythonの仮想環境を構築し、インストール。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install fvdb-reality-capture fvdb-core==0.3.0+pt28.cu128 --extra-index-url="https://d36m13axqqhiit.cloudfront.net/simple" torch==2.8.0 --extra-index-url https://download.pytorch.org/whl/cu128

4.10 3DGSの構築

ƒVDB-Reality-Captureをインストールすると、frgsコマンドが使用できるようになる。
以下のようにCOLMAPの出力結果保存ディレクトリを指定して実行するだけでよい。
筆者の環境では、3DGSの構築にコマンド実行完了まで15分ほどかかった。

frgs reconstruct ./colmap_output -o bike.ply

4.11 結果の確認

生成されたPLYファイルをSuperSplatにドラッグ&ドロップする。

無事、自転車の3DGSが表示された。

image.png

5. まとめ

今回は、COLMAPとƒVDB-Reality-Captureを組み合わせて、3D Gaussian Splatting(3DGS)モデルを作成した。環境構築やコマンド操作も比較的シンプルであり、実世界の物体をデジタル化する強力な手法として非常に有用であると感じた。

参考

3DGSからのメッシュの作成

ƒVDB-Reality-Captureのfrgsコマンドは作成した3DGSのPLYファイルから、メッシュを生成することもできる。

CUDA_VISIBLE_DEVICES=1 frgs mesh-dlnr bike.ply -o bike_mesh.ply 0.10
# このコマンドは筆者環境のRTX5060tiではエラーで動作しなかったため、RTX3060で動作させるためCUDA_VISIBLE_DEVICESを指定して実行した。

MeshLabで生成したメッシュを表示した様子。

image.png

おまけ

こちらは、一眼レフで撮影した44枚の画像から作成したガンダムの3DSGS。

image.png

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?