Practical 3D Reconstruction Pipeline
実務で三次元再構成を行う場合、理論だけでなく data acquisition、calibration、preprocessing、parameter tuning、quality check が重要です。
Offline photogrammetry pipeline
複数画像から高品質な 3D model を作る場合、典型的には次の流れになります。
COLMAP、OpenMVG、OpenMVS、Meshroom などがこの系統の tool として使われます。
Real-time mapping pipeline
Robot や AR device では、次のような online pipeline になります。
sensor stream
-> tracking / odometry
-> local mapping
-> loop closure
-> global optimization
-> dense / semantic map update
ORB-SLAM、RTAB-Map、ElasticFusion、KinectFusion 系、LiDAR SLAM 系などが用途に応じて使われます。
撮影時の注意
良い reconstruction のためには、撮影時点で次の点に注意します。
- View 間の overlap を十分に確保します。
- Motion blur を避けます。
- Textureless surface や反射面だけにならないようにします。
- Exposure と white balance をできるだけ安定させます。
- Object の周囲を多方向から撮影します。
- Thin structure や透明物は失敗しやすいことを見込んでおきます。
よくある失敗原因
| 症状 | 典型的な原因 |
|---|---|
| Camera pose が壊れる | Matching outlier、overlap 不足、repetitive pattern |
| Point cloud が疎すぎる | Texture 不足、blur、画像数不足 |
| Mesh に穴が多い | View coverage 不足、MVS 失敗、depth filtering が強すぎる |
| Scale が合わない | Monocular reconstruction、baseline 不足、calibration 不備 |
| Dynamic object が ghost になる | Moving object を static scene として fuse している |
| Surface が波打つ | Depth noise、camera pose error、rolling shutter |
Tool 選定
| 目的 | 代表的な tool / method |
|---|---|
| Offline SfM / MVS | COLMAP、OpenMVG、OpenMVS、Meshroom |
| RGB-D reconstruction | Open3D、KinectFusion 系 |
| Visual SLAM | ORB-SLAM、RTAB-Map、DSO、SVO |
| Neural reconstruction | NeRF 実装、3D Gaussian Splatting 実装 |
| Segmentation preprocessing | SAM、Mask R-CNN、semantic segmentation model |
どの task から学ぶべきか
三次元再構成を体系的に学ぶなら、次の順番が自然です。
- Camera Models and Coordinates
- Epipolar Geometry
- Feature Matching
- Structure from Motion
- Bundle Adjustment
- Multi-View Stereo
- SLAM
- Neural 3D Reconstruction
関連ページ
主なソース
- COLMAP documentation: https://colmap.readthedocs.io/en/stable/
- Open3D documentation: http://www.open3d.org/docs/latest/
- OpenMVG documentation: https://openmvg.readthedocs.io/
- OpenMVS repository: https://github.com/cdcseacave/openMVS
- RTAB-Map: https://introlab.github.io/rtabmap/