structured_light op• 데이터 종류: images → depth
• 호출: import fullseye as fs; fs.ledger.decode_fringe(phase_shift_images, ref_phase=None, k=1.0, mask=None, min_modulation=None) -> 'np.ndarray'(구현을 직접 호출하려면 import fringe; fringe.decode_fringe(phase_shift_images, ref_phase=None, k=1.0, mask=None, min_modulation=None) -> 'np.ndarray', 원장에서 가져오려면 ops3d.get("decode_fringe"))
위상 이동 이미지 열을 한 번에 복호: wrapped → unwrap →(기준 감산으로) 높이.
phase_shift_images: N-step 위상 시프트 줄무늬 영상열((N,H,W) 또는 길이 N의 시퀀스).
ref_phase: 참조 평면(높이 0)의 언랩된 위상. None이면 높이 = k·(unwrapped).
k: 위상→높이 캘리브레이션 상수.
mask: 생략 가능. True=유효 화소. 무효 화소는 NaN.
min_modulation: 생략 가능. 지정하면 modulation < 이 값인 화소를 저신뢰로 보아 무효화.
반환값: 높이 맵(2D float). ref_phase=None일 때는 k를 곱한 연속 위상을 반환한다. 무효 화소는 NaN.
절차(구현 그대로): wrapped_phase → 신뢰 마스크를 짠다(min_modulation이있으면 modulation(stack) >= min_modulation, mask가 있으면 그것과 AND)→ unwrap_phase_2d(wrapped, mask=신뢰 마스크) → ref_phase가 None이면 k * unwrapped, 있으면 phase_to_height(k * (unwrapped - ref_phase)).
인수:
• phase_shift_images: (N, H, W), N >= 3, 등간격 위상 시프트.
• ref_phase: 스칼라 또는 (H, W). 참조면을 같은 절차로 언랩한 위상을넘긴다(unwrap_phase_2d의 대역 오프셋이 양쪽에서 같게 취급되도록, 참조도본 op에서 ref_phase=None으로 복호한 결과를 쓰는 것이 안전).
• k: 위상→높이의 캘리브레이션 상수(단위/rad). synthesize_fringes의 phase_gain의 역수에 대응.
• mask: (H, W)의 bool, True = 유효. min_modulation: 변조도의 하한([0, 1] 정도. 그림자·포화 화소를 떨어뜨린다).
검증(ValueError): 영상열이 3-D가 아님·N < 3·비유한 / mask의 형상이다름 / ref_phase의 형상이 다름 / 유효 화소가 0. scikit-image가 없으면 RuntimeError.
반환값: (H, W) float64. 무효 화소는 NaN. 단위는 k의 단위.
주의: 공간 언랩에 의존하므로, 계단·오클루전으로 섬으로 나뉜 장면에서는섬마다 2πm k의 높이 오프셋이 남을 수 있다. 절대 높이가 필요한 장면은 graycode_decode → absolute_phase → triangulate_column의 경로.
• depth_sensors — 깊이 센서 지식 — 측거 원리·실기 수치·결측이 나타나는 방식
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• structured_light — py -3.11 examples_3d/structured_light.py
depth 를 입력으로 받는 것)depth_to_points · tsdf_from_depth · to_points · fuse_to_voxel · depth_to_organized_points · normals_from_depth · occlusion_edges · bearing_angle_image
structured_light)wrapped_phase · unwrap_phase_2d · graycode_decode · synthesize_fringes · absolute_phase · triangulate_column
*Provenance: fringe.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.