annotate3d op• Data kinds: image2d × text → image2d
• Call: import fullseye as fs; fs.ledger.annotate3d_label(img, text, anchor, pose, K, depth=None, offset=(26.0, -22.0), color='emphasis', width=1.5, cap_size=3.0, font_size=12, pad=4, box_alpha=0.72, text_color=None, occlusion_tol=0.01, scheme='okabe_ito', font_path=None) (implementation को सीधे call करना हो तो import annotate3d; annotate3d.annotate3d_label(img, text, anchor, pose, K, depth=None, offset=(26.0, -22.0), color='emphasis', width=1.5, cap_size=3.0, font_size=12, pad=4, box_alpha=0.72, text_color=None, occlusion_tol=0.01, scheme='okabe_ito', font_path=None), registry से लेना हो तो ops3d.get("annotate3d_label"))
image (image2d) लौटाता है: 3-D anchor पर leader line के साथ text लगाता है।
text anchor के pixel से offset [px] खिसकाई गई जगह पर रखा जाता है (offset[0] के sign से बायाँ या दायाँ anchor चुना जाता है)। depth से पता चले कि वह छिपा है तो dashed line + खोखला marker।
ValueError
anchor camera के पीछे / image के बाहर हो, text न समाए, pose या K अमान्य हो।
प्रक्रिया: anchor (object coordinates (3,)) को annotate3d_project वाले उसी projection से pixel (x, y) में बदला जाता है, (x, y) से (x + offset[0], y + offset[1]) तक leader line (annotate._aa_polyline, width width) खींची जाती है, anchor की तरफ़ radius cap_size का dot लगाया जाता है, और line के सिरे पर annotate.text_box से text रखा जाता है। text box का जुड़ाव बिंदु (anchor) offset[0] > 0 हो तो बायाँ-मध्य, < 0 हो तो दायाँ-मध्य, == 0 हो तो offset[1] < 0 पर नीचे-बीच और बाकी स्थितियों में ऊपर-बीच होता है।
Arguments:
• offset: pixel इकाई में (dx, dy) (dy नीचे की ओर धनात्मक = row direction)। default (26, -22) ऊपर-दाईं ओर है।
• width: line width [px], >= 0.5 का real number। cap_size: dot का radius [px], 0 हो तो dot नहीं लगता। pad / font_size / box_alpha / text_color / font_path: text box का रूप (font_size से नीचे 9 तक अपने-आप छोटा होता है)।
• depth: forward-distance image। छिपा हो तो line dashed और dot खोखला (ring) हो जाता है।
• color: role name या RGB। occlusion_tol: [0, 1)।
Return value: drawing वाली नई image (float64 [0, 1], input बदला नहीं जाता)।
Error की शर्तें (implementation के अनुसार): anchor z <= 1e-9 हो / anchor का pixel [0, W-1] x [0, H-1] के बाहर हो / pose, K या depth अमान्य हो / text box छोटा करने पर भी image में न समाए (text_box की तरफ़)। offset का सिरा frame के बाहर हो तब भी line खींची जाती है।
उपयोग: figure में हिस्सों के नाम और numbering। कई points पर एक साथ label लगाने हों तो पहले annotate3d_project से visibility की जाँच लें, और सिर्फ़ visible points के लिए call करें।
• 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 के स्रोत।
• annotate3d_figure — py -3.11 examples_3d/annotate3d_figure.py
image2d को input के रूप में लेते हैं)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade
annotate3d)annotate3d_project · annotate3d_arrow · annotate3d_scale_bar · annotate3d_axes · annotate3d_bbox · annotate3d_measure
*Provenance: annotate3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.