feat: implement ICP registration for ground plane refinement and add tests

This commit is contained in:
2026-02-10 03:04:43 +00:00
parent 2d42e2cdfa
commit 206c6e58ee
7 changed files with 1068 additions and 15 deletions
@@ -0,0 +1,4 @@
## Notes
- Used `scipy.spatial.transform.Rotation` with `xyz` Euler convention for gravity regularization to ensure consistent blending of pitch/roll.
- `extract_near_floor_band` uses dot product with floor normal to handle arbitrary floor orientations (not just Y-up).
- `refine_with_icp` uses a BFS-based connectivity check to ensure only cameras reachable from the reference camera are optimized.
@@ -14,3 +14,9 @@
- When monkeypatching for tests, ensure all internal calls are accounted for, especially when production code has bugs that need to be worked around or highlighted.
- Integrated ICP refinement into `refine_ground_plane.py` CLI, enabling optional global registration after ground plane alignment.
- Added `_meta.icp_refined` block to output JSON to track ICP configuration and success metrics.
## ICP Registration
- GICP method in requires normals, which are estimated internally if not provided.
- Synthetic tests for ICP should use deterministic seeds for point cloud generation to ensure stability.
## ICP Registration
- GICP method in `pairwise_icp` requires normals, which are estimated internally if not provided.
- Synthetic tests for ICP should use deterministic seeds for point cloud generation to ensure stability.
@@ -0,0 +1 @@
## Notes