overlay op• Datenarten: image2d × mask → table
• Aufruf: import fullseye as fs; fs.ledger.annotate_invert_visibility(img, mask, mode='complement', alpha=1.0, bits=128) (die Implementierung direkt: import annotate; annotate.annotate_invert_visibility(img, mask, mode='complement', alpha=1.0, bits=128); aus dem Register: opsannotate.get("annotate_invert_visibility"))
Misst vor dem Zeichnen, ob die invertierte Farbe auf diesem Untergrund tatsächlich sichtbar ist.
Der Vorteil invertierter Farbe ist, dass "man die Grundfarbe nicht kennen muss", aber sie hat nur 1 Schwäche, und die ist fatal -- in Mitteltönen ergibt die Invertierung dieselbe Farbe. Bei 8bit-Grau ist das Komplement von v=128 v=127, und das WCAG-Kontrastverhältnis ist 1.014 (Verhältnis 1.0 ist "dieselbe Farbe"; gemessen 2026-09-08). Das Band unter Verhältnis 1.5 umfasst v ∈ [113, 142], 30/256 Stufen = 12 % aller Stufen.
annotate_invert und annotate_invert_path rufen dies intern auf und warnen, aber wer selbst fail-closed sein will, misst mit diesem op, bevor er zeichnet (min_contrast ansehen und bei niedrigem Wert auf mode="contrast" ausweichen).
img : (H,W) oder (H,W,C)
Grund. Wertebereich [0,1].
mask : (H,W)
Wo die Invertierung aufgetragen wird. Boolesch oder Gewichte in [0,1]. Abweichende Form ist eine Exception.
mode : str
Eines von INVERT_MODES.
alpha : float
Stärke der Invertierung. Denselben Wert wie beim Zeichnen übergeben -- die Sichtbarkeit bestimmt nicht "die invertierte Farbe", sondern
die tatsächlich gesetzte Farbe; senkt man alpha, ändert sich die Antwort.
dict
pixels (Anzahl Pixel mit Gewicht >= 0.5) / min_contrast /
median_contrast / invisible_fraction (Anteil mit Verhältnis unter
INVERT_MIN_CONTRAST) / worst_xy (schlechtestes Pixel,
None, falls keines).
>>> import numpy as np, annotate
>>> flat = np.full((8, 8), 128 / 255.0) # Mittelton -- ein Grund, auf dem Invertierung verschwindet
>>> rep = annotate.annotate_invert_visibility(flat, np.ones((8, 8), bool))
>>> round(rep["min_contrast"], 3)
1.014
>>> rep["invisible_fraction"]
1.0
>>> annotate.annotate_invert_visibility(flat, np.ones((8, 8), bool),
... mode="contrast")["min_contrast"] > 4.5
True
• 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.
• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py
table als Eingabe)—
overlay)overlay_mask · overlay_labels · annotate_invert · annotate_invert_path
*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.