annotate_invert_visibility — ANNOTATE overlay op

• Data kinds: image2d × mask → table

• Call: import fullseye as fs; fs.ledger.annotate_invert_visibility(img, mask, mode='complement', alpha=1.0, bits=128) (implementation को सीधे call करना हो तो import annotate; annotate.annotate_invert_visibility(img, mask, mode='complement', alpha=1.0, bits=128), registry से लेना हो तो opsannotate.get("annotate_invert_visibility"))

उपयोग

बनाने से पहले मापता है कि inverted रंग उस background पर वास्तव में दिखता है या नहीं।

inverted colour का लाभ यह है कि "पृष्ठभूमि का रंग जानना ज़रूरी नहीं", लेकिन इसकी कमज़ोरी केवल 1 है, और वह घातक है -- mid-tones में invert करने पर भी वही रंग बनता है। 8bit grey में v=128 का complement v=127 है, और WCAG contrast ratio 1.014 है (ratio 1.0 का अर्थ "वही रंग"; measured 2026-09-08)। ratio 1.5 से नीचे की band v ∈ [113, 142] के 30/256 levels = सभी levels का 12 % है।

annotate_invert और annotate_invert_path अंदर से इसे call करके warning देते हैं, लेकिन जब आप स्वयं fail-closed चाहते हों, तो इस op से मापकर फिर बनाएँ (min_contrast देखें, कम हो तो mode="contrast" पर जाएँ)।

Parameters

img : (H,W) या (H,W,C)

पृष्ठभूमि। मान की range [0,1]।

mask : (H,W)

जहाँ inversion रखना है। boolean या [0,1] के weights। shape अलग हो तो exception।

mode : str

INVERT_MODES में से एक।

alpha : float

inversion की तीव्रता। बनाते समय वाला ही मान दें -- दिखना "inverted colour" से नहीं बल्कि

वास्तव में रखे गए रंग से तय होता है, इसलिए alpha घटाने पर उत्तर बदल जाता है।

Returns

dict

pixels (weight >= 0.5 वाले pixels की संख्या) / min_contrast /

median_contrast / invisible_fraction (जिनका ratio

INVERT_MIN_CONTRAST से कम है उनका अनुपात) / worst_xy (सबसे खराब pixel,

न हो तो None)।

Examples

>>> import numpy as np, annotate

>>> flat = np.full((8, 8), 128 / 255.0) # mid-tone -- ऐसी पृष्ठभूमि जहाँ inversion गायब हो जाता है

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

उपयोग की विस्तृत guide

• figure_annotation family guide

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• dataset_conventions — Training dataset के conventions — COCO / YOLO / VOC और visual inspection में सावधानियाँ

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

—

इसी category के (overlay)

overlay_mask · overlay_labels · annotate_invert · annotate_invert_path


*Provenance: annotate.py — ANNOTATE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.