overlay op• Datenarten: image2d × mask → image2d
• Aufruf: import fullseye as fs; fs.ledger.annotate_invert(img, mask, draw='fill', width=1.5, mode='complement', alpha=1.0, bits=128, min_contrast=1.5, on_invisible='warn') (die Implementierung direkt: import annotate; annotate.annotate_invert(img, mask, draw='fill', width=1.5, mode='complement', alpha=1.0, bits=128, min_contrast=1.5, on_invisible='warn'); aus dem Register: opsannotate.get("annotate_invert"))
Füllt / umrandet eine Region (region) in invertierter Farbe.
Der klassische Kniff für den Fall "man weiß nicht, ob der Grund hell oder dunkel ist, und will in einer Farbe zeichnen, die auf beidem sichtbar ist". Man muss keine Füllfarbe festlegen, dafür verschwindet es in Mitteltönen, daher wird die Messung von annotate_invert_visibility intern immer durchlaufen.
★Ist der Grund monochrom (grau), zuerst eine gesättigte Farbe erwägen. Grau hat keine Sättigung, daher ist eine gesättigte Farbe von jeder Stufe über den Farbton unterscheidbar -- zuverlässiger als invertierte Farbe, und zudem erkennt man auf einen Blick "das ist eine überlagerte Linie" (eine Rollenfarbe an annotate_outline / overlay_mask übergeben). Invertierte Farbe spielt ihre Stärke aus, wenn der Grund farbig ist und jede gewählte Farbe kollidieren könnte.
Beachte: annotate_invert_visibility misst das WCAG-Leuchtdichte-Verhältnis, daher kann es Erscheinungsbilder wie "gleiche Leuchtdichte, aber anderer Farbton" nicht bewerten -- wer mit Farbe zeichnet, verlasse sich nicht auf die Zahlen dieses op.
mask : (H,W)
Region. Boolesch oder Gewichte in [0,1]. Eine vom Bild abweichende Form ist eine Exception.
draw : {"fill", "margin"}
Dasselbe Wort wie HALCONs set_draw. "fill" invertiert samt Innerem, "margin"
invertiert nur die Kontur. Die Kontur ist ein Band von width Pixeln Stärke (auf eine Ganzzahl gerundet),
das sich je zur Hälfte nach innen und außen ausdehnt.
width : float
Bandstärke (Pixel) bei draw="margin".
mode : str
INVERT_MODES. "complement" erhält das Muster des Grunds, "xor"
erhält das Muster und garantiert, dass es nicht verschwindet, "contrast" weicht auf Schwarzweiß aus und
garantiert Sichtbarkeit.
bits : int
Bitmaske für mode="xor" (1..255). Der Standard 0x80 invertiert nur das höchstwertige Bit
-- es springt immer um 128 Stufen und verschwindet daher nie. 0xFF ist
dasselbe wie complement (samt Klippe), und eine Maske nur aus niedrigen Bits wie 0x0F
ist auf keiner Stufe sichtbar (gemessen: Verhältnis unter 1.5 auf allen 256 Stufen).
alpha : float
Stärke der Invertierung. 1.0 invertiert vollständig, 0.5 liegt mittig zwischen Grund und invertierter Farbe
(mode="complement" mit 0.5 ergibt immer einen Mittelton -- halbiert man die invertierte Farbe,
verschwindet sie natürlich, und die Warnung fängt das ab).
min_contrast, on_invisible :
Behandlung, wenn sich Unsichtbarkeit herausstellt. "warn" (Standard) / "raise" (fail-closed)
/ "ignore".
(H,W[,C]) float64
Kopie mit aufgetragener Invertierung. Die Eingabe wird nicht verändert.
ValueError
Formen ungleich / außerhalb des Wertebereichs / unbekanntes draw mode on_invisible /
unsichtbar bei on_invisible="raise".
>>> import numpy as np, annotate
>>> img = np.zeros((16, 16)); img[4:12, 4:12] = 1.0
>>> m = np.zeros((16, 16), bool); m[6:10, 6:10] = True
>>> out = annotate.annotate_invert(img, m)
>>> float(out[7, 7]), float(out[1, 1])
(0.0, 0.0)
>>> ring = annotate.annotate_invert(img, m, draw="margin", width=1)
>>> float(ring[7, 7]) # Inneres bleibt unberührt
1.0
• 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
image2d als Eingabe)text_box · arrow · leader_line · label_points · crosshair · legend_box · color_bar · scale_bar
overlay)overlay_mask · overlay_labels · annotate_invert_visibility · 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.