range_image op• Data kinds: depth → image2d
• Call: import fullseye as fs; fs.ledger.bearing_angle_image(depth, direction='down') (to call the implementation directly, import range_image; range_image.bearing_angle_image(depth, direction='down'); from the registry, ops3d.get("bearing_angle_image"))
A bearing-angle image: the angle between the line of sight along the scan direction and the local surface (a classic range-image descriptor). → HxW in degrees.
Computes the local slope angle atan2(Δdepth, step) from neighbouring depth differences. Sensitive to the slope direction and illumination-invariant. direction ∈ {down,up,right,left}.
If direction is "down"/"up", np.gradient (central differences, one-sided at the edges) along the row direction (axis=0), if "right"/"left" along the column direction (axis=1), gives the neighbouring depth difference Δd; for "up"/"left" the sign is flipped. The angle is degrees(atan2(Δd, 1)), so the range is (-90, 90) degrees, 0 on a flat surface, positive on a surface receding in the scan direction. Since the grid spacing is taken as 1, when the depth unit differs from pixels (mm etc.) it is not the geometric angle of incidence itself but the angle of the "slope per depth unit". A direction other than the 4 words above is treated as the column direction with the sign unchanged and raises no error. Returns float32 (H,W). At depth steps it swings to near ±90 degrees, so it also serves as a hint of occlusion, but to distinguish steps from slopes use occlusion_edges. There is no input validation.
• blender_interop — Using Blender alongside — build the shape, measure it with fullseye (pitfalls: axes, units, ground truth)
• 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.
• sensor_seg — py -3.11 examples_3d/sensor_seg.py
image2d as input)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade
range_image)depth_to_organized_points · normals_from_depth · occlusion_edges
*Provenance: range_image.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.