annotate_outline — ANNOTATE 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"))

Verwendung

Liefert ein Bild (image2d): den Umriss einer Maske als (kantengeglätteten) geschlossenen Linienzug, mit Text im Schwerpunkt.

Raises

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.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie figure_annotation

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• dataset_conventions — Konventionen für Trainingsdatensätze — COCO / YOLO / VOC und Fallstricke in der Sichtprüfung

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.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• paper_figure — py -3.11 examples/paper_figure.py

• poc_rotation_invariance_audit — py -3.11 examples/poc_rotation_invariance_audit.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

text_box · arrow · leader_line · label_points · crosshair · legend_box · color_bar · scale_bar

Gleiche Kategorie (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.