Triangulation¶
Multi-camera 3D reconstruction through refractive interface.
Refractive triangulation for 3D reconstruction.
- aquacal.triangulation.triangulate.triangulate_point(calibration, observations)[source]¶
Triangulate a single 3D point from multi-camera observations.
- Parameters:
- Returns:
3D point in world coordinates, or None if triangulation fails. Failure occurs if: fewer than 2 observations, camera not in calibration, or refractive_back_project() fails for all cameras.
- Return type:
Notes
Uses refractive_back_project() to get rays in water
Finds point minimizing sum of squared distances to all rays
- aquacal.triangulation.triangulate.triangulate_rays(rays)[source]¶
Find 3D point minimizing sum of squared distances to all rays.
Uses closed-form linear least squares solution.
- Parameters:
rays (list[tuple[ndarray[tuple[int, ...], dtype[float64]], ndarray[tuple[int, ...], dtype[float64]]]]) – List of (origin, direction) tuples. Directions must be unit vectors. Must have at least 2 rays.
- Returns:
3D point that minimizes sum of squared distances to all rays.
- Raises:
ValueError – If fewer than 2 rays provided or system is degenerate.
- Return type: