lidar_projection op• Datenarten: points → image2d
• Aufruf: import fullseye as fs; fs.ledger.project_spherical(points, h_res: 'int' = 1024, v_res: 'int' = 64, v_fov=(-25.0, 15.0)) -> 'np.ndarray' (die Implementierung direkt: import spherical_proj; spherical_proj.project_spherical(points, h_res: 'int' = 1024, v_res: 'int' = 64, v_fov=(-25.0, 15.0)) -> 'np.ndarray'; aus dem Register: ops3d.get("project_spherical"))
Projiziert in das sphärische Range-Bild eines rotierenden LiDAR (v_res, h_res). Leere Zellen sind 0; nähere Punkte gewinnen (minimale Reichweite).
Ordnet jeden Punkt einer Bin aus Azimut (Spalte) × Elevation (Zeile) zu und schreibt die Range (slant distance) vom Sensorursprung. Punkte außerhalb des Elevationsbands v_fov=(v_min,v_max)[Grad], im Ursprung (r=0) oder mit nicht endlichen Koordinaten werden verworfen (honest drop). Ist die Eingabe leer oder wird alles verworfen, wird ein Bild aus lauter Nullen zurückgegeben (= nichts ist sichtbar, honest).
• points: (N,3), relativ zum Sensorursprung mit x=vorn, y=links, z=oben. Nicht (N,3) ergibt ValueError.
• h_res / v_res: Spaltenzahl (gleiche Teilung von 360° Azimut) und Zeilenzahl (gleiche Teilung des Elevationsbands). Nicht positiv ergibt ValueError.
• v_fov: (v_min, v_max) [Grad]. Ohne v_min < v_max gibt es ValueError.
Die Spalte ist floor((atan2(y,x) + π) / 2π · h_res); Spalte 0 liegt genau hinten (-x), h_res//2 genau vorn (+x), und sie wächst gegen den Uhrzeigersinn. Die Zeile ist (v_res-1) - floor((θ - v_min)/(v_max - v_min) · v_res) (θ ist die Elevation [Grad]); Zeile 0 ist der obere Rand des Bands (θ=v_max). Der Pixelwert ist die slant range sqrt(x²+y²+z²) (in Koordinateneinheiten). Fallen mehrere Punkte in dieselbe Zelle, behält np.minimum.at die kleinste Range (weiter hinten liegende Punkte gehen verloren). Die Umkehrung ist unproject_spherical (dasselbe v_fov übergeben). Die Variante, die Schichten nach Höhe schneidet, ist project_cylindrical.
• depth_sensors — Tiefensensoren — Messprinzipien, Werte realer Geräte, wie Messlücken entstehen
• 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.
• lidar_projection — py -3.11 examples_3d/lidar_projection.py
image2d als Eingabe)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade
lidar_projection)unproject_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.