unproject_spherical — 3D lidar_projection op

• Datenarten: image2d → points

• Aufruf: import fullseye as fs; fs.ledger.unproject_spherical(range_img, v_fov=(-25.0, 15.0)) -> 'np.ndarray' (die Implementierung direkt: import spherical_proj; spherical_proj.unproject_spherical(range_img, v_fov=(-25.0, 15.0)) -> 'np.ndarray'; aus dem Register: ops3d.get("unproject_spherical"))

Verwendung

Sphärisches Range-Bild → 3-D-Punkte (M, 3). Nur Zellen mit range > 0 werden mit ihren Bin-Mittenwinkeln rückprojiziert.

Umkehrung von project_spherical. Rekonstruiert aus Zeile/Spalte (elevation, azimuth) des Bin-Zentrums und rechnet mit der gespeicherten Range als slant distance von Kugel- → kartesische Koordinaten zurück. Ist sie leer (alles 0), wird (0, 3) zurückgegeben.

• range_img: 2-D-Array (v_res, h_res) (nicht 2-D oder Größe 0 ergibt ValueError). Nur Zellen mit range > 0 werden zu Punkten (0 = leere Zelle, negative Werte werden ebenfalls ignoriert).

• v_fov: dasselbe (v_min, v_max) [Grad] wie bei der Projektion. Ein anderer Wert ergibt eine Punktwolke mit verschobener Elevation (Konsistenz ist nicht prüfbar).

Spalte c → Azimut az = (c + 0.5) / h_res · 2π - π, Zeile r → Elevation el = v_min + ((v_res-1-r) + 0.5) / v_res · (v_max - v_min) (Grad → rad), dann x = r cos(el) cos(az), y = r cos(el) sin(az), z = r sin(el). Die Punktreihenfolge ist die zeilenweise Reihenfolge von np.nonzero (ab Zeile 0). Da auf Bin-Zentren zurückgerechnet wird, weichen die Punkte von den ursprünglichen um bis zu etwa "halber Zellwinkel × Range" ab, und bei der Projektion verworfene Punkte (weiter hinten in derselben Zelle, außerhalb des FOV) kommen nicht zurück. Ein Hin- und Rückweg verringert die Punktzahl im Allgemeinen.

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• depth_sensors — Tiefensensoren — Messprinzipien, Werte realer Geräte, wie Messlücken entstehen

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• lidar_projection — py -3.11 examples_3d/lidar_projection.py

Typkompatible Folge-Operatoren (nehmen points als Eingabe)

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

Gleiche Kategorie (lidar_projection)

project_spherical · project_cylindrical


*Provenance: spherical_proj.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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