annotate3d op• 데이터 종류: image2d × text → image2d
• 호출: 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)(구현을 직접 호출하려면 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), 원장에서 가져오려면 ops3d.get("annotate3d_label"))
이미지(image2d)를 돌려줍니다: 3-D 앵커에 지시선이 달린 글자를 붙입니다.
문자는 앵커의 화소에서 offset [px] 만큼 옮긴 위치(offset[0] 의 부호로좌우 앵커를 고른다). depth 로 가려져 있다고 판명되면 파선 + 속이 빈 표시.
ValueError
앵커가 카메라 뒤 / 영상 밖, 문자가 들어가지 않음, 자세·K 가 부정.
절차: anchor(object 좌표 (3,))를 annotate3d_project 와 같은 투영으로화소 (x, y) 로 만들고, (x, y) 에서 (x + offset[0], y + offset[1]) 로지시선(annotate._aa_polyline, 폭 width)을 긋고, 앵커 쪽에 반지름 cap_size 의 점을 찍고, 선 끝에 annotate.text_box 로 문자를 둔다. 문자 상자의 기준점(anchor)은 offset[0] > 0 이면 왼쪽 가운데, < 0 이면 오른쪽 가운데, == 0 이면 offset[1] < 0 일 때 아래 중앙·그 밖에는 위 중앙.
인수:
• offset: 화소 단위 (dx, dy)(dy 는 아래쪽이 양 = 행 방향). 기본값 (26, -22) 는 오른쪽 위로.
• width: 선 폭 [px], >= 0.5 의 실수. cap_size: 점의 반지름 [px], 0 이면찍지 않는다. pad / font_size / box_alpha / text_color / font_path: 문자 상자의 외관(font_size 부터 최소 9 까지는 자동 축소).
• depth: 전방 거리 영상. 가려져 있으면 선을 파선, 점을 속이 빈 표시(ring)로 한다.
• color: 역할명 또는 RGB. occlusion_tol: [0, 1).
반환값: 그리기가 끝난 새 영상(float64 [0, 1], 입력은 변경하지 않는다).
에러가 되는 조건(구현대로): 앵커가 z <= 1e-9 / 앵커의 화소가 [0, W-1] x [0, H-1] 의 밖 / 자세·K·depth 가 부정 / 문자 상자가 축소해도영상에 들어가지 않음(text_box 쪽). offset 의 끝이 테두리 밖이어도 선은 긋는다.
용도: 그림 속 부위명·번호 매기기. 여러 점에 한꺼번에 라벨을 붙일 때는 annotate3d_project 로 가시 판정을 먼저 얻고, visible 인 점만 호출한다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• annotate3d_figure — py -3.11 examples_3d/annotate3d_figure.py
image2d 를 입력으로 받는 것)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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.