29
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

360° 全天球画像を用いた 3D Gaussian Splatting 入門(SphereSfM-基本手順編)

29
Last updated at Posted at 2026-03-26

はじめに

最近屋外などの比較的広範囲のシーンを Gaussian Splatting で再現する手法が注目を集めています。SNS やブログで関連情報を見かける機会も増えてきましたが、情報が各所に散らばっているため、それらをうまくまとめて効率的なワークフローを構築するのは容易ではありません。さらに、複数のアプリケーションを切り替える必要があり、初心者にとってはハードルが高いと考えています。

そこで本記事では、筆者が趣味でのGaussian Splattingで運用している ワークフローの最小構成 をご紹介します。
本記事で紹介するツールはすべて無料で利用可能(一部オプション機能は有料)なため、これからGaussian Splattingを始めたい方も気軽にスタートできます。
また、クオリティをさらに引き上げるアレンジについては、別記事「クオリティ向上編」で解説しています。さらに、有償ソフトウェアのAgisoft Metashapeを用いたワークフローについても「Metashape編」で紹介していますので、興味がある方はこちらも併せてご覧ください。

本記事の手順による作例

作例動画


動作環境

PC スペック

項目 環境
OS Windows 11
GPU NVIDIA GeForce RTX 4070 SUPER
CPU AMD Ryzen7 8700G
RAM 32 GB

360° カメラ

  • Insta360 X4 Air
    ※ THETA など他メーカーのカメラでも利用可能です。8K 以上を推奨します。

ソフトウェア

ソフトウェア 用途
LichtFeld Studio v0.5.2 3D Gaussian Splatting の GUI ツール ※
360° Gaussian v1.4.3 Gaussian Splatting の各ステップを自動化するツール(2026/4/8 更新)

※(2026年4月18日 追記) LichtFeld Studio v0.5.2 のビルド済みバイナリの無償配布は終了しました。v0.4.0 は引き続き無償でダウンロード可能です。v0.5.2 を利用するには、有償ライセンスを購入するか、ソースコードから自分でビルドする必要があります。
GitHub で公開されている最新機能を試したい方や、ライセンス購入前に v0.5.2 を試したい方は、下記を参考に自分でのビルドもお試しください。

自分でビルドする場合の注意点

クリックして展開

自分でビルドする場合は、こちらのビルド手順 を参照してください。
ヒント1
また、公式ビルド手順には記載がありませんが、Perl のインストールが必要になる場合があります。Strawberry Perl からインストールしてください。
ただし、Perl に同梱された cmake が優先的に実行されてしまうことがありますので、C:\Strawberry\c\bin\cmake.exe はまず一時的に別名に変更し、今後不要そうであれば削除してください。念のため、その後 PC を再起動してください。
ヒント2
公式資料の Clone repository の下記コマンドでは、筆者の環境で必要なファイルが正しくダウンロードされないケースが見受けられました。
git clone https://github.com/MrNeRF/LichtFeld-Studio
代わりに、サブモジュールの取得漏れを防ぐため、以下のように --recursive フラグを付けるか、Fork や GitHub Desktop などのクライアントソフトで clone することをお勧めします。
git clone --recursive https://github.com/MrNeRF/LichtFeld-Studio
ヒント3
なお、手順内の Checkout stable version のステップに含まれる git checkout v0.4.0スキップしてください
ビルドには長い時間がかかる場合もあるため、時間に余裕のあるときに実施することをお勧めします。

📢 360° Gaussian のアップデートについて
360° Gaussian を起動した際、画面右下に以下のように 「update」 と表示されている場合は、必ずアップデートを行ってください。
360° Gaussian のアップデート通知
オプションアプリの AutoMasker を導入している場合は、同様に AutoMasker のアップデートも確認してください。


全体の流れ

Gaussian Splatting では、一般的に以下の 4 つのステップを踏みます。

# 工程 内容
1 撮影 360° カメラでシーンを撮影する
2 SfM(Structure from Motion) 各画像がどの位置から撮影されたかを推定する
3 点群生成 SfM で得られたカメラ位置をもとに点群を生成する
4 Gaussian Splatting 点群をもとに 3D Gaussian Splatting モデルを生成する

Step 1. 撮影・動画のエクスポート

360° カメラでシーンを撮影します。処理時間が長くなる場合があるため、慣れるまでは 1 分以内の短い動画 でテストすることをおすすめします。

撮影した動画は Equirectangular 形式 で PC にコピーしてください。
Insta360 を使用している場合は、Insta360 Studio(PC 用アプリ)でエクスポートします。

⚠️ 手ぶれ補正に関する注意
手ぶれ補正は ON / OFF どちらでも構いませんが、ON にする場合は以下の項目を必ずオフにしてください。

  • 方向ロック
  • ティルトリカバリー
  • 微振動補正

手ぶれ補正の設定画面


Step 2. SfM と点群生成

この手順では 360° Gaussian を使用します。
360° Gaussianは、SfMやGaussian Splattingにおいてそれぞれ複数のツールをサポートしているため、ツールや手法の組み合わせを容易に比較検証できるのが特徴です。
詳しい使い方を知りたい方は以下の動画を参考にしてください。

2.1 画像の切り出し

1. 360° Gaussian を起動します
2. Add Video(s) をクリックし、Equirectangular 形式の動画を選択します
3. Splitting を選択し、画像の切り出し条件を設定します

パラメータ 説明
Extra frame every 指定した秒数(またはフレーム数)のインターバルで画像を切り出す
Sharp frame extraction 前後のフレームと比較して、ボケの少ない画像を優先的に選択するかどうか
Sharpness check range 例えば 10 の場合、前後 5 フレームを比較して最もシャープな画像を選択する

360° Gaussian の Splitting 設定画面

2.2 画像のマスク(オプション)

AutoMasker は、Gaussian Splatting の処理に不要な領域を自動でマスクしてくれるツールです。

ℹ️ この手順はオプションです
AutoMasker を使用しない場合は、2.3 SfM の設定 へスキップしてください。

1. AutoMasker をクリックします
2. Use AutoMasker をオンにします
3. Detection Keywords にピリオド(.)区切りでキーワードを入力します
例:person.sky

AutoMasker のマスク結果

💡 マスクが重要な 2 つの理由
まず、人・車・低テクスチャオブジェクトなど動いたり特徴点の少ない被写体は SfM のノイズになりやすく、カメラ位置の推定精度を下げます。SfM の精度はその後の Gaussian Splatting の出力品質に直結するため、これらをマスクで除外することが重要です。
さらに、トレーニング段階でも同様のノイズが品質を低下させます。同じ被写体が場所によって異なる見た目で映り込むと、Gaussian が正しい形状・色に収束しにくくなります。マスクはこの両方の工程でクオリティを守る役割を果たします。
📺 参考動画

📝 AutoMasker について
AutoMasker は有償(46€)ですが、独立したアプリとして単独で動作するため、360° Gaussian を使った Gaussian Splatting の自動化ワークフローだけでなく、Gaussian Splatting 以外の用途(360° 画像へのマスク処理全般)にも幅広く活用できます。
類似ツールを購入するよりもこれを利用・導入する方を検討することをお勧めします。
購入後の 360° Gaussian との連携設定については、こちらの動画 を参考にしてください。

2.3 SfM の設定

1. Alignment をクリックします
2. Training Method を設定します

LichtFeld を選択すると、SfM・点群生成・Gaussian Splatting まで一括で実行できます。ただし、LichtFeld Studio のウィンドウが開かない状態で処理が進むため、過程を確認できません。

筆者は処理の経過を観察したいため、以下のように設定しています。

  • Training MethodNo Training
  • SfMSphereSFM

⚠️ SphereSFM GUT を選ばないようご注意ください
SphereSFM GUT を使用したフローは別記事「クオリティ改善編」にて紹介しています。本記事では SphereSFM(末尾に GUT のないもの)を選択してください。

Alignment の設定画面

3. Advanced SphereSFM Setting を開き、Preset からカメラの画像サイズを選択します
例:8K で撮影している場合は Ultra (8K) を選択

SphereSFM の Preset 設定

4. Matchersequential を選択します
360°Gaissian v1.4.0 から Loop detection with vocabulary tree がサポートされたため、ループクロージング性能が大幅に向上しました。
その他の設定はデフォルトのままで問題ありません。

参考として、筆者が実際によく使う設定例を以下に示します。特に特徴の少ないエリアを含むシーンでは、Realign cubemaps を有効にすると位置合わせがずれてしまう場合があるため、筆者はオフで運用することが多いです。状況に応じて使い分けてください。

SphereSFM の設定例(v1.4.0)


💡 sequential でうまくいかない場合:exhaustive を最終手段として試す(開く)

sequential でうまくいかない場合は、最終手段として exhaustive を試す方法があります。全画像ペアを総当たりでマッチングするため処理時間は大幅に増加しますが、sequential では繋ぎきれなかった画像ペアをカバーできる可能性があります。

設定の一例として、筆者が比較的広域の撮影で使用している設定を以下に示します。
SphereSFM の詳細設定例
デフォルト設定と比べて計算回数が多くなり多少時間を要しますので、まずはデフォルト設定で試してみましょう。

筆者の推奨する設定方針は以下の通りです。

  1. Iterations(Global)・Refinements(常時:高め)
    • 高めに設定することで、インライア率が低い難しいペアに対しても正しい位置関係(ジオメトリ)を見つけやすくなります。
  2. MinInliers(最小インライア数)
    • 広範囲のエリア(低め):低めに保ちます。特徴点が少なく「弱いマッチ」と判定されがちなペアも検証を通過しやすくなり、ループ接続のわずかな糸口を取りこぼしにくくなります。
    • (補足)狭いエリア(高め):画像間で多数の特徴点が安定して一致するため、あえて高めに設定し「確実なマッチング」のみを採用することで誤マッチングを排除でき、より精度が高まります。
  3. Reprojection threshold(再投影誤差の閾値)
    • 広範囲のエリア(緩め):照明・天候・遠近の変化などでループ始点・終点の視点変化が大きくなります。ここで閾値を厳しくすると特徴の少ない場所でのマッチが弾かれ、ループがクローズ(接続)しない原因になるため、シーンの多様性に合わせて許容度を緩めに設定するのが基本です。
    • (補足)狭いエリア(厳しめ):画像間の視点変化が小さく特徴点が安定するため、逆に閾値を**厳しく(きつめに)**設定しても十分な点が残ります。これによりノイズを排除でき、より高精度なカメラ位置推定が可能になります。

つまり、広域スキャンにおいては「丁寧に検証して(Iterations(Global)/Refinements 高め)、その結果は捨てず(MinInliers 低め)、空間の多様性に合わせて許容度を上げる(Reprojection threshold 緩め)」という組み合わせによって、SfMの成功率を最大限に引き出す狙いがあります。


2.4 SfM の実行

Start をクリックして SfM を実行します。
処理が完了すると、以下のような画面が表示されます。

💡 初回実行時のご注意
初回実行時には瞬時に処理が終わる場合があります。その際には Batch Processing Complete の前に Failed to process: と表示されます。
その場合には一度 Stop ボタンをクリックしたのちに再度実行してみてください。

SfM 完了画面

カメラの位置情報と点群が正しく生成されていることを確認してください。

📁 動画が置かれたフォルダ
  └── 📁 動画名と同じフォルダ
       └── 📁 train_data
            ├── 📁 images
            ├── 📁 masks
            └── 📁 sparse

Step 3. Gaussian Splatting

3.1 データの読み込み

1. LichtFeld Studio を起動します
2. 上記で生成された train_data フォルダをウィンドウにドラッグ&ドロップします
3. Load DataSet ダイアログが表示されたら Load をクリックします

LichtFeld Studio の起動画面
Load DataSet ダイアログ

点群と画像が正しく読み込まれたことを確認してください。
カメラ画像の表示が不要な場合は、画面右側の Rendering タブにある Camera Frustum のチェックを外します。

データ読み込み後の画面

⚠️ 注意
読み込み中の場合はCubeの面に画像が表示されていない箇所があります。この状態でGaussian Splattingの学習をスタートさせるとLichtFeld Studioがクラッシュすることがあります。
読み込み中の状態

3.2 トレーニング設定

ここではトレーニング設定の一例を紹介します。慣れてきたらさまざまな設定を試してみてください。

1. Training タブをクリックします
2. StrategyMRNF を選択します
3. Steps Scaler を適宜設定します

条件 推奨値
画像数が 300 枚以下 1
画像数が 300 枚以上 画像枚数 / 300

⚠️ トレーニングがうまくいかない場合
上記の設定で実行してもGaussian Splattingのトレーニングが進むにつれて収束せずにホワイトアウトしてしまう場合は、Steps Scaler を 画像枚数 / 3002〜3 倍 に設定すると安定しやすいです。

4. Max Gaussians で最大ガウシアン数を設定します
基本的にはデフォルト値で問題ありませんが、ディテールが不足していると感じたら値を増やしてみてください。

オプション設定:
Auto Maskerを使ってマスク画像を作成した場合のみ下記の設定を行います。

  • Mask ModeIgnore に設定
  • Use Alpha as Mask → チェックを外す

トレーニング設定画面

他のパラメータについては、まずは上記の設定で進め、慣れてきてから試行錯誤してみてください。

3.3 トレーニングの実行

1. マウス操作で、トレーニングの経過を観察したいエリアにクローズアップしておきます
(筆者の例では橋の周辺)
2. Start Training をクリックしてトレーニングを開始します
3. 最初はぼんやりとした表示ですが、ステップが進むにつれて徐々にクリアになっていきます

トレーニング中の画面

トレーニングステップが上限に達すると自動で終了します。
途中経過を保存しておきたい場合は、Save Checkpoint をクリックするとその時点の結果を記録できます。

3.4 エクスポート

出力したデータは SuperSplat Editor などのツールを使って、動画作成やビューワーでの閲覧に活用できます。
1. File → Export をクリックします
2. 出力フォーマットを選択します(例:.ply


まとめ

屋内・屋外のさまざまなシーンで検証を重ねた結果、ある程度安定した品質で再現できるワークフローをご紹介しました。本記事の手順をベースに設定をアレンジすることで、さらに高品質な Gaussian Splatting を作成できるはずです。

また、本記事の手順にもうひと手間加えることで、さらにクオリティを引き上げる方法も確認しています。詳細は別記事「クオリティ改善編」にまとめますので、興味のある方はぜひチェックしてみてください。

29
19
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
29
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?