🎇

XGRIDS 3DGSスキャンの仕方 TIPS紹介

に公開

XGRIDSのレーザースキャナは誰でも手軽に綺麗な3DGS(3D Gaussian Splatting ガウシアンスプラッティング)データが生成できる魔法のデバイス!

https://youtu.be/Fe--kkTkXoo

https://youtu.be/p6HEGKU3NBM

ーと言いたいところですが、
より綺麗なデータを作ろうと思うと色々とコツ、ノウハウが必要な部分もあるのでまとめてみました。

失敗例と対策方法


狭い通路部分で床に穴が空いてしまった。
なぜ穴が空いたのか…?

これは、XGRIDSのスキャナーは初期点群の位置からのみSplatを生成するという仕様のため。
しかしこれはとても合理的な仕組み!

✨一般的な3DGS
  写真の特徴点をベースにSplat生成
    ↓
  正確な特徴点検出、正確なデプス計算ができないと、
  空中にSplatが発生しフローターノイズ(もやもやとした煙のようなノイズ)となってしまう。

🎇XGRIDSの3DGS
  スキャン点群をベースにSplat生成
    ↓
  空中に点群が生成される事は基本的には無いので、フローターノイズを防げる。

そうした合理的な仕様となっているが、
逆に言うと点群が取得されていない場所はSplatが生成されず穴が開くという状況になるので、
各XGRIDSレーザースキャナーのレーザー照射方向、点群密度を意識する事が大事!!

現在の主要なXGRIDSレーザースキャナはそれぞれ以下のような特徴の違いがあります。

この特性をしっかり意識してスキャンをしていく事でより安定してきれいな3DGSデータの生成が可能になります。
※スキャナーの描画品質、導入コスト、精度について比較はこちらの記事でまとめました

上記を踏まえて、以下にシーン別のスキャンTIPSをまとめました。

XGRIDSスキャンTIPS① 階段

階段は登りは良いが下りは注意が必要。
真っ直ぐ下るとK1やPortalCamでは十分な点群が得られない。

🎇こちらのサンプルシーンはArrival.Spaceで公開しています
https://arrival.space/suga-shrine

XGRIDSスキャンTIPS②

XGRIDSの3DGS処理は、動いているものは消えてくれるが、止まっているものは残ってしまう。
歩いている人や走っている車は消えるが立ち止まっている人や停車している車は残ってしまう。

理想はそうした状況にならないように環境を用意するのが望ましいが、
コントロールできない環境の場合のTIPS。

同じ原理で、通行量が多いシーンの場合でもその空間を何往復かしまんべんなく上書きスキャンする事で静止しているものだけが残った3DGS空間を生成できる。

🎇こちらのサンプルシーンはArrival.Spaceで公開しています
https://arrival.space/kamakura-high-school-railroad-crossing

XGRIDSスキャンTIPS③ スキャン方法による違い - PortalCam編

PortalCamを用いた広めの空間スキャンTIPSです。

冒頭で解説したようにPortalCamは前面方向にしかレーザーが照射されない特性があります。

そのため往復し前後方向をスキャンするのが必要になりますが、では片道(前方向)しかスキャンしなかった場合はどうなるのか、往復(前後方向)ともスキャンするとどう改善されるのかについて実際にスキャンし比較してみました。

特に屋外の開けた空間の場合、上方向はほぼ空となり下方向も広場の場合十分な特徴点が得られないというスキャンに不利な環境となります。
こうした環境でデータのずれなく、かつ細部もしっかりスキャンする方法について検証しました。

・スキャン方法A)↪️片道で1週

前方方向のみスキャンし1周するパターンです。

・スキャン方法B)🔁往復で2週

前方方向のみスキャンして1周したら、向きを変えて同じ道を逆方向にスキャンしながら戻って来るパターンです。

・スキャン方法C)🔀細かくループ作りながら1週

80mほど進んだら向きを変えて戻ってきてループクローズを作り、また進み次の80mほどの距離をまたループクローズを作り、という流れを繰り返しながら1周するパターンです。

それぞれのスキャン結果は以下のとおりです。

比較1


正面方向1周のみでは十分な点群が得られず、穴が空いてしまいました。
通行人がいた場合もその部分の点群が欠けてしまい3DGSが生成されなくなってしまいます。
往復(前後両方向をスキャン)することで改善できています。

比較2

正面方向1周のみだと、進行方向に対して背面側になる樹木の部分で靄状のフローターノイズが発生してしまいました。
また地面部分においても1周では3DGSの密度が低く十分なディテールが表現できませんでした。
往復(前後両方向をスキャン)することで改善できています。

PortalCamはレーザーは正面方向にしか照射されないので、往復は必須。

比較3

細かくループクローズを作成する動きをしたことで、公園を1周して同じ位置へ戻ってきた際に大幅にずれてしまいました。
細部をスキャンしたい場合は初めから細かくスキャンしていくと誤差がかさんでいくので、まずはベースとなる全域の大きなループを作り全体を抑え、それから細部をスキャンしていく方が安定します。
※または屋外ならK1を用いてRTKモジュールを利用する

🎇こちらのサンプルシーンはArrival.Spaceで公開しています
スキャン方法A
スキャン方法B
スキャン方法C

XGRIDSスキャンTIPS④ 細部のスキャン

このような環境で各展示物を入念にスキャンしたい場合、細部だけを撮り続けると誤差が嵩みずれるリスクがあります。

一部を寄ってスキャンしたら、一旦全体が見える位置へ引く。
その後改めて次のエリアに寄って行く。
迷子にならないようにわかりやすく動かしてあげると安定した結果が得られます。

🎇こちらのサンプルシーンはArrival.Spaceで公開しています
https://arrival.space/extinct-media-museum

XGRIDSスキャンTIPS⑤ 開けた空間 - LCCスタジオ設定による改善例

スキャンの基本として、XGRIDSのマニュアルにもあるように開始地点と終了地点を同じとする「ループクローズ」を行うのが良いです。

このループクローズは開始と終了に限らず、複雑な空間や広大な空間の場合はあまり長距離を片道で進み過ぎず、ある程度の範囲で小さくループクルーズを重ねていく事で安定した結果が得られます。

これはそれが出来なかったシーンの例です。
上記の黄色ゾーンと青ゾーンは橋の上ではスキャンしながらそのままいくつものループクローズを作成しながら繋いでいく事ができましたが、橋の下では川があるため対岸へスキャンしながら渡ることが出来なかった。

対策例:

  • RTK-GNSSを利用しループクローズ出来ない環境でも地理的な絶対座標を抑えておく
  • 以下のようにソフトウェア上の設定により改善を図る

上段はLCC (Lixel Cyber Color) Studioのデフォルト設定により処理結果。大幅にずれてしまった。
これに対して下段の設定「スラム特殊モード:なし」にする事で改善した。

🎇こちらのサンプルシーンはArrival.Spaceで公開してします
https://arrival.space/tamatebashi

XGRIDSスキャンTIPS⑥ 特徴点の少ない空間 - LCCスタジオ設定による改善例

XGRIDSスキャナーはSLAMにより自己位置推定とソフトウェアではSfMも用いた位置調整が行われますが、砂浜のような「特徴点」の少ないシーンでは位置ずれが発生するリスクが大きいです。

以下はLCCスタジオのデフォルト設定のまま処理した結果ですが、デフォルト設定のままではずれが発生してしました。

この例では幸い「スラム特殊モード」を「狭いシーン」にする事で改善できましたが、このような特徴点の少ないシーンで屋外の場合はTIPS②と同様にRKT-GNSSを用いた方が安定した結果が得られます。

※スラム特殊モードの「狭いシーン」は本来はその名前の通りトンネルや廊下のような狭いシーンに最適化されたモードだが今回の場合はこのモードで改善ができた

🎇こちらのサンプルシーンはArrival.Spaceで公開しています
https://arrival.space/kamakura-high-school-railroad-crossing

その他スキャンTIPS

🚙XGRIDS PortalCamによる車スキャンについてはこちらの記事にまとめました
https://zenn.dev/hololab/articles/xgrids-car-scan

🧙🏻‍♀️XGRIDS PortalCamによる人物スキャンについてはこちらの記事にまとめました
https://zenn.dev/hololab/articles/xgrids-human-scan

今後も随時更新

当記事は今後も随時アップデート予定。
新たなスキャンTIPSを追加していきます。

ホロラボのテックブログ

Discussion