annotate_outline — ANNOTATE paper op

• Data kinds: image2d × mask → image2d

• Call: import fullseye as fs; fs.ledger.annotate_outline(img, mask, label=None, color='emphasis', width=1.5, alpha=1.0, dash=None, font_size=12, label_offset=(0, 0), box_alpha=0.6, text_color=None, scheme='okabe_ito', font_path=None, layout=None) (implementation को सीधे call करना हो तो import annotate; annotate.annotate_outline(img, mask, label=None, color='emphasis', width=1.5, alpha=1.0, dash=None, font_size=12, label_offset=(0, 0), box_alpha=0.6, text_color=None, scheme='okabe_ito', font_path=None, layout=None), registry से लेना हो तो opsannotate.get("annotate_outline"))

उपयोग

image (image2d) लौटाता है: mask की outline को (AA वाली) बंद polyline से बनाता है, और centroid पर text रखता है।

Raises

ValueError

mask का shape image से अलग है, कोई true pixel नहीं है, या alpha [0,1] के बाहर है।

प्रक्रिया: layout न हो तो annotate_outline_layout(mask) से boundary loops (pixel किनारों के साथ चलने वाले (x, y) के बंद polygon, outer border और छेद दोनों, हर component के लिए) और centroid निकाले जाते हैं, और हर loop को distance coverage वाली anti-aliased polyline के रूप में चढ़ाया जाता है। label हो तो centroid + label_offset पर text_box (anchor="cm", पृष्ठभूमि box के साथ) रखा जाता है।

• img: (H, W) / (H, W, 1|3|4), float64 copy, [0, 1]।

• mask: (H, W), image जैसा ही shape ([row, col] index)। bool के अलावा > 0.5 से binarise होता है, non-finite पर ValueError। कोई true pixel न हो तो ValueError।

• width: line width [px], 0.5 या अधिक। dash=(on, off) [px] से dashed line (on > 0, off >= 0)।

• alpha: [0, 1]। box_alpha text के पृष्ठभूमि box की opacity है।

• label_offset: (dx, dy) [px]। जिन आकृतियों का centroid contour के बाहर पड़ता है (अर्धचंद्र आदि), उन्हें यहाँ खिसकाएँ।

• layout: annotate_outline_layout का return value देने पर दोबारा गणना नहीं होती और वही placement दूसरी तस्वीर पर फिर से इस्तेमाल हो सकता है (contours / centroid पढ़ता है)।

• return value: input जैसे ही shape का float64।

भराव (fill) से दिखाना हो तो overlay_mask, कई regions पर नंबर लगाने हों तो annotate_markers।

उपयोग की विस्तृत 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 करते हैं)

• paper_figure — py -3.11 examples/paper_figure.py

• poc_rotation_invariance_audit — py -3.11 examples/poc_rotation_invariance_audit.py

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

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

इसी category के (paper)

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


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