paper op• Datenarten: image2d × mask → image2d
• Aufruf: import fullseye as fs; fs.ledger.annotate_outline(img, mask, label=None, color='emphasis', width=1.5, alpha=1.0, dash=None, font_size=12, label_offset=(0, 0), box_alpha=0.6, text_color=None, scheme='okabe_ito', font_path=None, layout=None) (die Implementierung direkt: import annotate; annotate.annotate_outline(img, mask, label=None, color='emphasis', width=1.5, alpha=1.0, dash=None, font_size=12, label_offset=(0, 0), box_alpha=0.6, text_color=None, scheme='okabe_ito', font_path=None, layout=None); aus dem Register: opsannotate.get("annotate_outline"))
Liefert ein Bild (image2d): den Umriss einer Maske als (kantengeglätteten) geschlossenen Linienzug, mit Text im Schwerpunkt.
ValueError
Form der Maske weicht vom Bild ab, keine wahren Pixel, alpha außerhalb von [0,1].
Ablauf: Fehlt layout, bestimmt annotate_outline_layout(mask) die Randschleifen (geschlossene (x, y)-Polygone entlang der Pixelkanten, äußerer Rand und Löcher, je Komponente) und den Schwerpunkt, und jede Schleife wird als kantengeglättete Polylinie mit Distanz-Bedeckungsgrad aufgetragen. Ist label gesetzt, wird bei Schwerpunkt + label_offset eine text_box (anchor="cm", mit Unterlage) platziert.
• img: (H, W) / (H, W, 1|3|4), float64-Kopie, [0, 1].
• mask: (H, W), gleiche Form wie das Bild ([row, col]-Indizes). Nicht-bool wird mit > 0.5 binarisiert, nicht endlich ergibt ValueError. Ohne wahre Pixel ValueError.
• width: Linienbreite [px], mindestens 0.5. dash=(on, off) [px] ergibt eine gestrichelte Linie (on > 0, off >= 0).
• alpha: [0, 1]. box_alpha ist die Deckkraft der Textunterlage.
• label_offset: (dx, dy) [px]. Bei Formen, deren Schwerpunkt außerhalb der Kontur liegt (Sicheln usw.), hier verschieben.
• layout: Übergibt man den Rückgabewert von annotate_outline_layout, wird nicht neu berechnet und dieselbe Anordnung kann für ein anderes Bild wiederverwendet werden (liest contours / centroid).
• Rückgabewert: float64 in derselben Form wie die Eingabe.
Für eine Darstellung als Füllung overlay_mask, zum Nummerieren mehrerer Regionen annotate_markers.
• Leitfaden zur Familie figure_annotation
• dataset_conventions — Konventionen für Trainingsdatensätze — COCO / YOLO / VOC und Fallstricke in der Sichtprüfung
• 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.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• paper_figure — py -3.11 examples/paper_figure.py
• poc_rotation_invariance_audit — py -3.11 examples/poc_rotation_invariance_audit.py
image2d als Eingabe)text_box · arrow · leader_line · label_points · crosshair · legend_box · color_bar · scale_bar
paper)annotate_leader_layout · annotate_leader · annotate_markers · annotate_legend · annotate_dimension_layout · annotate_dimension · annotate_angle_layout · annotate_angle
*Provenance: annotate.py — ANNOTATE 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.