unproject_spherical — 3D 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' (implementation को सीधे call करना हो तो import spherical_proj; spherical_proj.unproject_spherical(range_img, v_fov=(-25.0, 15.0)) -> 'np.ndarray', registry से लेना हो तो ops3d.get("unproject_spherical"))

• GPU: नहीं (केवल CPU reference implementation)

उपयोग

spherical range image → 3D points (M, 3)। केवल range>0 वाले cells को bin-centre angle पर back-project करता है।

project_spherical का inverse। row/column से bin center का (elevation, azimuth) वापस निकालता है, और संग्रहीत range को slant distance मानकर spherical → Cartesian coordinates में लौटाता है। खाली (सब 0) हो तो (0, 3) लौटाता है।

• range_img: (v_res, h_res) का 2-D array (2-D न हो या size 0 हो तो ValueError)। केवल range > 0 वाले cells points बनते हैं (0 = खाली cell, ऋणात्मक मान भी अनदेखे किए जाते हैं)।

• v_fov: projection के समय वाला ही (v_min, v_max) [degree]। अलग मान देने पर elevation खिसका हुआ point cloud मिलता है (consistency की जाँच संभव नहीं)।

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) (degree → rad), फिर x = r cos(el) cos(az), y = r cos(el) sin(az), z = r sin(el)। points का क्रम np.nonzero का row-major क्रम है (row 0 से)। bin center पर लौटाने के कारण मूल points से अधिकतम लगभग "आधा cell कोण × range" का अंतर होता है, और projection में छोड़े गए points (उसी cell के पीछे वाले, FOV के बाहर वाले) वापस नहीं आते। round trip में points की संख्या सामान्यतः घटती है।

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• depth_sensors — Depth sensors — ranging के सिद्धांत, असली devices के आँकड़े, dropouts कैसे दिखते हैं

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• lidar_projection — py -3.11 examples_3d/lidar_projection.py

वे अगले ops जिनसे type जुड़ता है (points को input के रूप में लेते हैं)

points_to_voxel · gaussians_to_voxel · estimate_point_normals · to_points · match_points_ncc · match_pca · find_surface_pose · moment_axes

इसी category के (lidar_projection)

project_spherical · project_cylindrical


*Provenance: spherical_proj.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.