Skip to main content

Segmentation for 3D Reconstruction

Segmentation は、image や point cloud を意味のある領域に分ける task です。3D Reconstruction では、dynamic object の除去、object-level mapping、semantic 3D map の構築、surface cleanup などに使われます。

Semantic segmentation

Semantic segmentation は、各 pixel に class label を割り当てる task です。たとえば、road、building、person、car、sky などの label を pixel ごとに推定します。

3D Reconstruction では、semantic label を 3D point や voxel に投影することで、semantic map を作れます。

Instance segmentation

Instance segmentation は、同じ class の object を個体ごとに分離します。たとえば、複数の car がある場合に、それぞれを別 instance として扱います。

Object-level reconstruction や dynamic object tracking では、instance segmentation が重要です。

Panoptic segmentation

Panoptic segmentation は、semantic segmentation と instance segmentation を統合した task です。すべての pixel に semantic label を割り当てつつ、countable object には instance ID も割り当てます。

Segment Anything と foundation model

Segment Anything Model(SAM)のような foundation model は、promptable segmentation を可能にします。Point、box、mask などを prompt として与え、対象領域を分割できます。SAM 2 では video object segmentation と tracking、SAM 3 では concept prompt による detection / segmentation / tracking へ拡張されています。3D Reconstruction の preprocessing や interactive editing に使いやすいです。

3D Reconstruction での使い方

Segmentation は、次のような場面で役に立ちます。

  • Dynamic object を除外して camera pose estimation を安定させる。
  • Sky や reflective surface のような reconstruction に不向きな領域を mask する。
  • Object ごとに separate mesh や point cloud を作る。
  • Semantic label を 3D map に fuse して semantic SLAM を行う。
  • NeRF や 3D Gaussian Splatting の object editing に使う。

2D segmentation と 3D segmentation

2D segmentation は image plane 上で領域を分けます。3D segmentation は point cloud、mesh、voxel、Gaussian primitive など、3D representation 上で領域を分けます。

2D segmentation を multi-view で fuse すれば 3D semantic map を作れますが、view 間で label consistency を保つことが課題になります。

関連ページ

主なソース