lidar_projection op• Data kinds: image2d → points
• Call: import fullseye as fs; fs.ledger.unproject_spherical(range_img, v_fov=(-25.0, 15.0)) -> 'np.ndarray' (to call the implementation directly, import spherical_proj; spherical_proj.unproject_spherical(range_img, v_fov=(-25.0, 15.0)) -> 'np.ndarray'; from the registry, ops3d.get("unproject_spherical"))
Spherical range image → 3-D points (M, 3). Only the cells with range > 0 are back-projected, at their bin-centre angles.
Inverse of project_spherical. Recovers the (elevation, azimuth) of the bin centre from row/column and converts spherical → Cartesian coordinates, using the stored range as the slant distance. If empty (all 0), returns (0, 3).
• range_img: 2-D array of (v_res, h_res) (non-2-D or size 0 raises ValueError). Only cells with range > 0 become points (0 = empty cell; negative values are also ignored).
• v_fov: the same (v_min, v_max) [deg] as at projection. Passing a different value gives a point cloud with shifted elevations (consistency cannot be checked).
Column c → azimuth az = (c + 0.5) / h_res · 2π - π, row r → elevation el = v_min + ((v_res-1-r) + 0.5) / v_res · (v_max - v_min) (deg → rad), then x = r cos(el) cos(az), y = r cos(el) sin(az), z = r sin(el). The point order is the row-major order of np.nonzero (from row 0). Points return to bin centres, so they deviate from the original points by up to roughly "half a cell angle × range", and points discarded by the projection (farther points in the same cell, points outside the FOV) do not come back. A round trip generally reduces the number of points.
• depth_sensors — Depth sensors — ranging principles, real-device figures, how dropouts appear
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• lidar_projection — py -3.11 examples_3d/lidar_projection.py
points as input)points_to_voxel · gaussians_to_voxel · estimate_point_normals · to_points · match_points_ncc · match_pca · moment_axes · icp_point2point_3d
lidar_projection)project_spherical · project_cylindrical
*Provenance: spherical_proj.py — 3D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.