annotate3d_label — 3D annotate3d op

• Datenarten: image2d × text → image2d

• Aufruf: import fullseye as fs; fs.ledger.annotate3d_label(img, text, anchor, pose, K, depth=None, offset=(26.0, -22.0), color='emphasis', width=1.5, cap_size=3.0, font_size=12, pad=4, box_alpha=0.72, text_color=None, occlusion_tol=0.01, scheme='okabe_ito', font_path=None) (die Implementierung direkt: import annotate3d; annotate3d.annotate3d_label(img, text, anchor, pose, K, depth=None, offset=(26.0, -22.0), color='emphasis', width=1.5, cap_size=3.0, font_size=12, pad=4, box_alpha=0.72, text_color=None, occlusion_tol=0.01, scheme='okabe_ito', font_path=None); aus dem Register: ops3d.get("annotate3d_label"))

Verwendung

Liefert ein Bild (image2d): Text mit Hinweislinie an einem 3-D-Anker.

Der Text steht an einer um offset [px] vom Ankerpixel verschobenen Position (das Vorzeichen von offset[0] wählt den linken oder rechten Anker). Zeigt depth, dass er verdeckt ist, gestrichelte Linie + hohle Markierung.

Raises

ValueError

Der Anker liegt hinter der Kamera / außerhalb des Bildes, der Text passt nicht, ungültige Pose oder K.

Ablauf: anchor (Objektkoordinaten (3,)) mit derselben Projektion wie annotate3d_project in das Pixel (x, y) umrechnen, von (x, y) nach (x + offset[0], y + offset[1]) eine Führungslinie (annotate._aa_polyline, Breite width) ziehen, auf der Ankerseite einen Punkt mit Radius cap_size setzen und am Linienende den Text mit annotate.text_box platzieren. Der Ansatzpunkt (anchor) des Textkastens ist links-mittig bei offset[0] > 0, rechts-mittig bei < 0, bei == 0 unten-mittig, wenn offset[1] < 0, sonst oben-mittig.

Argumente:

• offset: in Pixeln (dx, dy) (dy nach unten positiv = Zeilenrichtung). Der Standard (26, -22) zeigt nach rechts oben.

• width: Linienbreite [px], reelle Zahl >= 0.5. cap_size: Punktradius [px]; bei 0 wird kein Punkt gesetzt. pad / font_size / box_alpha / text_color / font_path: Aussehen des Textkastens (automatische Verkleinerung von font_size bis hinunter auf 9).

• depth: Bild des Vorwärtsabstands. Bei Verdeckung wird die Linie gestrichelt und der Punkt hohl (ring).

• color: Rollenname oder RGB. occlusion_tol: [0, 1).

Rückgabewert: ein neues, gezeichnetes Bild (float64 [0, 1]; die Eingabe wird nicht verändert).

Fehlerbedingungen (wie implementiert): der Anker hat z <= 1e-9 / das Ankerpixel liegt außerhalb von [0, W-1] x [0, H-1] / ungültige Pose, K oder depth / der Textkasten passt auch nach Verkleinerung nicht ins Bild (seitens text_box). Die Linie wird auch gezogen, wenn das Ende von offset außerhalb des Rahmens liegt.

Einsatz: Teilbezeichnungen und Nummerierung in einer Abbildung. Um mehrere Punkte auf einmal zu beschriften, zuerst mit annotate3d_project die Sichtbarkeit bestimmen und nur für die visible-Punkte aufrufen.

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)

• annotate3d_figure — py -3.11 examples_3d/annotate3d_figure.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

Gleiche Kategorie (annotate3d)

annotate3d_project · annotate3d_arrow · annotate3d_scale_bar · annotate3d_axes · annotate3d_bbox · 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.