absolute_phase — 3D structured_light op

• 데이터 종류: image2d × image2d → image2d

• 호출: import fullseye as fs; fs.ledger.absolute_phase(wrapped, coarse) -> 'np.ndarray'(구현을 직접 호출하려면 import fringe; fringe.absolute_phase(wrapped, coarse) -> 'np.ndarray', 원장에서 가져오려면 ops3d.get("absolute_phase"))

사용법

감긴 위상을, 거칠지만 절대적인 위상 추정으로 차수를 확정해 절대 위상으로 만듭니다.

Φ = wrapped + 2π·round((coarse − wrapped) / 2π)

wrapped: wrapped_phase의 출력 (-π,π]의 2D 배열(고정밀·절대 차수 없음).

coarse: 같은 형상의 2D 배열. 절대적이지만 거친 위상 추정 [rad]. Gray code로 복호한 프로젝터

컬럼 번호를 위상으로 고친 것(2π·freq·col/width)이 전형적. NaN 허용(출력도 NaN).

반환값: 절대 위상 [rad] (2D float64). 무효 화소(어느 한쪽이 NaN)는 NaN.

왜 필요한가(공간 언랩과의 차이): unwrap_phase_2d는 인접 화소를 따라가며 2π 점프를잇기 때문에, (a) 대역 오프셋 +2πm이 남고, (b) 오클루전으로 끊긴 섬 사이에서는 차수가전파되지 못한다. 본 op는 화소마다 독립적으로 차수를 정하므로 섬으로 나뉜 장면에서도 절대적 이며, 전파도 필요 없다. 그 대신 coarse의 오차가 반주기(π) 미만이어야 한다.

요건(fail-closed): |coarse − Φ_true| < π. 이를 어기면 round가 이웃 차수를 골라, 그 화소만 2π만큼(= 줄무늬 1 개분의 깊이) 조용히 어긋난다. Gray code의 거칠기(±0.5 컬럼) 를 위상으로 고친 양이 반주기를 넘지 않도록 줄무늬 개수 freq를 고를 것(예: 프로젝터 폭 512 px·freq 24 → 1 주기 21.3 px, Gray의 ±0.5 px는 여유 있게 안쪽).

Raises: 형상 불일치·2D가 아님·wrapped가 (-π,π]를 크게 벗어나는 경우에 ValueError.

출처(공개 문헌): Gray code와 위상 시프트를 병용하여 절대 위상을 얻는 합성법 — Sansoni et al., *Appl. Opt.* 38(31) 1999 / Zhang, *Opt. Lasers Eng.* 48 2010(총설). Gray code 자체의 투영은 Inokuchi et al., *ICPR* 1984.

배경 지식 가이드(이 연산자 앞에 있는 물리·규약)

• depth_sensors — 깊이 센서 지식 — 측거 원리·실기 수치·결측이 나타나는 방식

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• structured_light_scan — py -3.11 examples_3d/structured_light_scan.py

타입이 이어지는 다음 연산자(image2d 를 입력으로 받는 것)

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

같은 카테고리(structured_light)

wrapped_phase · unwrap_phase_2d · graycode_decode · decode_fringe · synthesize_fringes · triangulate_column


*Provenance: fringe.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.