annotate3d op• 데이터 종류: image2d → image2d
• 호출: import fullseye as fs; fs.ledger.annotate3d_axes(img, pose, K, origin=(0.0, 0.0, 0.0), length=1.0, depth=None, labels=('X', 'Y', 'Z'), colors=('wrong', 'right', 'reference'), width=2, font_size=11, occlusion_tol=0.01, scheme='okabe_ito', font_path=None)(구현을 직접 호출하려면 import annotate3d; annotate3d.annotate3d_axes(img, pose, K, origin=(0.0, 0.0, 0.0), length=1.0, depth=None, labels=('X', 'Y', 'Z'), colors=('wrong', 'right', 'reference'), width=2, font_size=11, occlusion_tol=0.01, scheme='okabe_ito', font_path=None), 원장에서 가져오려면 ops3d.get("annotate3d_axes"))
이미지(image2d)를 돌려줍니다: object 좌표(pose 의 입력 측)의 세 축(gnomon)을 origin 에서 투영해 그립니다.
ValueError
length 가 양이 아님, 원점이나 축 끝이 카메라 뒤, labels/colors 가 3 개가 아님,
축의 문자가 영상에 들어가지 않음, 원점과 축 끝이 모두 영상 밖.
절차: origin 과, 거기서 object 좌표의 +X / +Y / +Z 방향으로 length 나아간 3 점을 투영(annotate3d_project 와 같은 관례)하고, 원점의 화소에서 각 축 끝의 화소로 annotate.arrow(화살촉 8x6 px)를 그린다. 축 끝에서 0.7 * font_size px 더 나간위치에 labels[i] 를 배경 없는(box_alpha=0) 문자로 둔다.
인수:
• origin (3,)(object 좌표), length: 축의 길이(메시 단위, > 0).
• labels: 3 개의 문자열(기본값 ("X", "Y", "Z")). colors: 3 개의 색(역할명 또는 RGB. 기본값 ("wrong", "right", "reference") 는 팔레트의 역할명).
• width: 선 폭 [px], 1 이상의 정수. font_size [px].
• depth / occlusion_tol: 투영에 넘기지만, 이 op 는 가려짐 표시(파선)를하지 않는다(판정은 depth 의 형상 검사에 쓸 뿐).
반환값: 그리기가 끝난 새 영상(float64 [0, 1]).
에러가 되는 조건: length <= 0 / labels 나 colors 의 길이가 3 이 아님 / 원점 또는 축 끝 중 하나가 z <= 1e-9 / 자세·K·depth 가 부정 / 축의문자가 영상에 들어가지 않음 / 원점과 축 끝이 모두 영상 밖(annotate.arrow 가 거부). 축 끝만 테두리 밖이면 그린다(화살표는 테두리 밖을 향해 긋는다). 시선과 일치해 점으로 찌그러진 축(화소 길이 1e-9 미만)은 조용히 건너뛴다.
용도: 그림의 자세 설명(gnomon). render3d.look_at 의 pose 를그대로 넘기고, origin 에 메시의 무게중심이나 bounds 의 모서리를 둔다.
좌표계: origin 도 축의 방향도 pose 가 옮기는 원래 좌표계(object 좌표)에서 해석한다. look_at 의 pose 는 world→camera 이므로 그때는 world 의 축이 된다. 물체의자세 M(object→world)을 포함한 pose @ M 을 넘기면 물체의 축이 그려진다.
• 샘플 데이터 카탈로그(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_label · annotate3d_scale_bar · annotate3d_bbox · annotate3d_measure
*Provenance: annotate3d.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.