トップ 問題解決の記録

Poisson mesher crash問題

目的

COLMAPのpoisson_mesherを使用し、密点群(fused.ply)から三角形メッシュを生成する。

Poissonメッシュのdepthパラメータとは

COLMAPのpoisson_mesherが持つ depth パラメータは、画像の深度(デプス)とは全く別の概念であり、Poisson再構成で使用するOctree(八分木)の深さを表す。

Octreeとは空間を8分割ずつ再帰的に细分するデータ構造で、その深さ(depth)が大きいほど細かい格子で空間を分割する:

depth格子サイズの目安メッシュの細かさVRAM使用量
8256×256×256粗め
9512×512×512標準
101024×1024×1024詳細高(約3.4GB)
112048×2048×2048非常に詳細非常に高(限界超過)

depthが1増えるごとに格子数は8倍になる(2depth の3乗)。そのためdepth 10→11で約8倍のメモリが必要になる。

問題

COLMAP内蔵のPoissonメッシャーが depth >= 10 でアクセス違反によりクラッシュ。depthが大きいほど高精細なメッシュになるが、その分メモリ使用量が増加する。

原因

4GB VRAMの制約を超えるメモリ割り当てが発生。depth 10でもGPUメモリが逼迫し、GTX 1650 Ti(4GB)では安定動作が難しい。

対策

恒久対策

COLMAPのpoisson_mesherが失敗した場合、Open3DのPoisson再構成で代替。

補完策

depthパラメータを削減(9以下)することでCOLMAP版でも動作可能な場合がある。ただしdepth 9ではdepth 10に比べてメッシュの細部表現が粗くなるトレードオフがある。

ステータス

一部対策 — Open3D代替で実用上は解決。ただしOpen3D版はCOLMAP版と出力が微妙に異なる場合がある。