annotate3d op• Datenarten: image2d → image2d
• Aufruf: import fullseye as fs; fs.ledger.annotate3d_bbox(img, bounds, pose, K, depth=None, color='emphasis', width=1.5, occlusion_tol=0.01, scheme='okabe_ito') (die Implementierung direkt: import annotate3d; annotate3d.annotate3d_bbox(img, bounds, pose, K, depth=None, color='emphasis', width=1.5, occlusion_tol=0.01, scheme='okabe_ito'); aus dem Register: ops3d.get("annotate3d_bbox"))
Liefert ein Bild (image2d): die 12 Kanten der achsenparallelen 3-D-Box ((xmin,ymin,zmin),(xmax,ymax,zmax)), projiziert.
Wird depth übergeben, werden Kanten, deren beide Enden verdeckt sind, gestrichelt.
ValueError
falsche Form von bounds / min > max, eine Ecke hinter der Kamera.
Ablauf: aus bounds die 8 Ecken (x_i, y_j, z_k) (i, j, k ∈ {min, max}) bilden und gemeinsam projizieren (gleiche Konvention wie annotate3d_project). Die 12 Kanten mit annotate._aa_polyline zeichnen. Sind beide Enden einer Kante hidden, gestrichelt; ist es nur ein Ende, durchgezogen.
Argumente:
• bounds: (2, 3) aus ((xmin, ymin, zmin), (xmax, ymax, zmax)) (Objekt- koordinaten, endlich, max >= min auf jeder Achse; ein kollabierter Kasten mit max == min ist erlaubt). Für eine Punktwolke points.min(0) / points.max(0), für ein Mesh aus V bilden.
• width: Linienbreite [px], reelle Zahl >= 0.5. color: Rollenname oder RGB.
• depth: Bild des Vorwärtsabstands (das depth von render3d.render_mesh). occlusion_tol: [0, 1).
Rückgabewert: ein neues, gezeichnetes Bild (float64 [0, 1]; die Eingabe wird nicht verändert).
Fehlerbedingungen: bounds ist nicht (2, 3), nicht endlich oder hat eine Achse mit max < min / eine der 8 Ecken hat z <= 1e-9 (auf der Kameraebene oder dahinter; umschließt der Kasten den Blickpunkt, kann er nicht gezeichnet werden) / ungültige Pose, K oder depth. Eine Ecke außerhalb des Bildes ist kein Fehler (die Linien werden über den Rahmen hinaus gezogen und wirken abgeschnitten).
Hinweis: nur achsenparallele Kästen (entlang der Achsen der object-Koordinaten). Um einen gedrehten Kasten (die corners von smallest_box3) zu zeichnen, die 8 Ecken selbst projizieren (annotate3d_project) und mit 2-D- annotate-Linienzeichnung verbinden.
• 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.
• annotate3d_figure — py -3.11 examples_3d/annotate3d_figure.py
image2d als Eingabe)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade
annotate3d)annotate3d_project · annotate3d_arrow · annotate3d_label · annotate3d_scale_bar · annotate3d_axes · annotate3d_measure
*Provenance: annotate3d.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.