slope_to_curvature — SPECULAR deflectometry op

• 데이터 종류: normalmap → image2d

• 호출: import fullseye as fs; fs.ledger.slope_to_curvature(normals, spacing=1.0, kind='mean', sigma_px=0.0)(구현을 직접 호출하려면 import deflectometry; deflectometry.slope_to_curvature(normals, spacing=1.0, kind='mean', sigma_px=0.0), 원장에서 가져오려면 opsspecular.get("slope_to_curvature"))

사용법

법선 맵 (H, W, 3) → 곡률 맵 (H, W). 기울기를 한 번 미분할 뿐 높이로 적분하지 않는다.

> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.

傾き p = ∂z/∂x、q = ∂z/∂y を photometric.normals_to_gradients で取り、spacing (格子間隔、例 mm)で中心差分して z_xx = ∂p/∂x、z_yy = ∂q/∂y、z_xy = (∂p/∂y + ∂q/∂x) / 2。kind:

• "mean" —— 平均曲率 H = ((1 + q²) z_xx − 2pq z_xy + (1 + p²) z_yy) / (2 (1 + p² + q²)^{3/2})。

• "gaussian" —— ガウス曲率 K = (z_xx z_yy − z_xy²) / (1 + p² + q²)²。

• "laplacian" —— z_xx + z_yy(小さな傾きでの 2H)。

単位は 1 / (spacing の単位)。符号: 上に開いた椀(凹み、z = r² / 2R)が正(H = 1/R)。sigma_px > 0 なら微分の前に傾きをガウスで均す(微分は雑音を持ち上げる)。NaN の画素は重みつきの均しで避け、出力でも NaN。

デフレクトメトリが曲率で欠陥を見る理由: 凹み・うねりは高さでは µm でも曲率は大きく、しかも面全体の傾きと一定の傾きの誤差(高さと傾きの不定性で出るもの)は微分で消える。

Raises: ValueError —— 法線が (H, W, 3) でない・2 × 2 未満・無限大を含む・z 成分が正でない(面の外向きでない)、spacing が正でない、kind が mean / gaussian / laplacian でない、sigma が負。

자세한 사용 가이드

• specular_photometric 패밀리 가이드

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

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

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

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

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

• poc_phase_measuring_deflectometry — py -3.11 examples/poc_phase_measuring_deflectometry.py

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

polarization_render · deflectometry_render · deflectometry_phase_to_slope

같은 카테고리(deflectometry)

deflectometry_rig · deflectometry_screen_pattern · deflectometry_render · deflectometry_phase_to_slope · deflectometry_sensitivity


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

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