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

Verwendung

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.

Parameters

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".

Returns

(H,W[,C]) float64

Kopie mit aufgetragener Invertierung. Die Eingabe wird nicht verändert.

Raises

ValueError

Formen ungleich / außerhalb des Wertebereichs / unbekanntes draw mode on_invisible /

unsichtbar bei on_invisible="raise".

Examples

>>> 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

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)

• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

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

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