annotate_invert — ANNOTATE overlay op

数据种类:image2d × maskimage2d

调用: 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')(要直接调用实现,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');从台账取用则 opsannotate.get("annotate_invert"))

用法

> 该算子的说明尚无译文,以下照原文给出。

領域(region)を反転色で塗る/縁取る。

「地が明るいか暗いか判らないので、どちらでも見える色で描きたい」という

ときの古典手。塗り色を決めずに済むかわりに、中間調で消えるので

:func:annotate_invert_visibility の測定を内側で必ず通す。

地がモノクロ(グレー)なら、まず彩度のある色を検討すること。灰色には

彩度が無いので、彩度のある色はどの階調とも色相で区別がつく —— 反転色

より確実で、しかも「これは重ねた線だ」と一目で判る

(:func:annotate_outline / :func:overlay_mask に役割色を渡す)。

反転色が本領を発揮するのは、地がカラーでどの色を選んでも衝突しうるとき。

なお :func:annotate_invert_visibility が測るのは WCAG の輝度比なので、

「輝度は同じだが色相が違う」ような見え方は評価できない —— 色で描くなら、

この op の数字は当てにしないこと。

Parameters

----------

mask : (H,W)

領域。真偽か [0,1] の重み。画像と形が違えば例外

draw : {"fill", "margin"}

HALCON の `set_draw と同じ語。"fill" は中身ごと、"margin"`

輪郭だけを反転する。輪郭は太さ `width` 画素(整数に丸める)の

帯で、領域の内外へ半分ずつ広がる。

width : float

`draw="margin"` のときの帯の太さ(画素)。

mode : str

:data:INVERT_MODES。`"complement" は地の模様を残し、"xor"` は

模様を残したまま消えないことを保証し、`"contrast"` は白黒に倒して

見えることを保証する。

bits : int

`mode="xor" の bit マスク(1..255)。既定 0x80` は最上位 bit だけを

反転する ―― 必ず 128 階調跳ぶので消えない。`0xFF` にすると

`complement と同じ(崖ごと同じ)、0x0F` のような下位だけの

マスクはどの階調でも見えない(実測: 全 256 階調で比 1.5 未満)。

alpha : float

反転の効き。1.0 で完全に反転、0.5 なら地と反転色の中間

(**`mode="complement"` の 0.5 は必ず中間調になる** —— 反転色を

半分にすると消えるのは道理なので、警告はそれを拾う)。

min_contrast, on_invisible :

見えないと判ったときの扱い。`"warn"(既定)/ "raise"`(fail-closed)

/ `"ignore"`。

Returns

-------

(H,W[,C]) float64

反転を乗せた複製。入力は書き換えない

Raises

------

ValueError

形の不一致 / 値域外 / 未知の `draw mode on_invisible` /

`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]) # 中身は触らない

1.0

详细使用指南

figure_annotation 族使用指南

背景知识指南(该算子背后的物理与约定)

dataset_conventions — 学習データセット規約の知識 — COCO / YOLO / VOC と外観検査での落とし穴

参考(示例数据・文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者・年份)与用途见上面的族使用指南

可运行的示例(实际调用该算子并已验证的样例)

annotate_paper_tourpy -3.11 examples/annotate_paper_tour.py

类型可衔接的下一个算子(可接受 image2d 作为输入)

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 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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