annotate_leader_layout — ANNOTATE paper op

• Data kinds: none → table (an op determined by its arguments alone — it takes no image or data input)

• Call: import fullseye as fs; fs.ledger.annotate_leader_layout(shape, points, labels=None, font_size=12, pad=4, gap=22, side='auto', font_path=None, min_font_size=9) (to call the implementation directly, import annotate; annotate.annotate_leader_layout(shape, points, labels=None, font_size=12, pad=4, gap=22, side='auto', font_path=None, min_font_size=9); from the registry, opsannotate.get("annotate_leader_layout"))

Usage

Returns a table (dict): the placement of leader lines (elbow, text position, plate rectangle) in closed form.

For each point the candidate sides are tried in a fixed order, and the first candidate whose plate fits in the image, overlaps no other plate and covers no other point is taken. If no candidate works, the elbow is extended 1.6x, then 2.4x, and retried; if it still fails, ValueError (no silent overlapping).

Parameters

shape : (H, W)

Size of the image being drawn.

points : (N, 2)

Points to point at, (x, y).

labels : sequence of str or None

Text for each point. If None, numbers starting at 1.

gap : float

Elbow length [px]. Diagonal arm = gap, horizontal arm = 0.6*gap.

side : {'auto','left','right'}

'auto' first tries the side away from the image centre (so as not to put text

on top of the subject).

Returns

dict

{"n", "gap", "items": [{"point", "elbow", "text_xy", "anchor", "box", "side"}]}. box is the plate's (x, y, w, h).

Raises

ValueError

points empty or non-finite, number of labels does not match, unknown side, a point that cannot be placed.

Detailed usage guide

• figure_annotation family guide

Background guides (the physics and conventions behind this op)

• dataset_conventions — Training-dataset conventions — COCO / YOLO / VOC and pitfalls in visual inspection

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• paper_figure — py -3.11 examples/paper_figure.py

Ops the type connects to (they accept table as input)

—

Same category (paper)

annotate_leader · annotate_markers · annotate_legend · annotate_dimension_layout · annotate_dimension · annotate_angle_layout · annotate_angle · annotate_scale_bar_layout


*Provenance: annotate.py — ANNOTATE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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