deflectometry op• Data kinds: normalmap → image2d
• Call: import fullseye as fs; fs.ledger.slope_to_curvature(normals, spacing=1.0, kind='mean', sigma_px=0.0) (to call the implementation directly, import deflectometry; deflectometry.slope_to_curvature(normals, spacing=1.0, kind='mean', sigma_px=0.0); from the registry, opsspecular.get("slope_to_curvature"))
Normal map (H, W, 3) → a curvature map (H, W). One derivative of the slopes, no integration to height.
> The detailed description below is the original text — the summary and the headings are translated.
傾き 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 family guide
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_phase_measuring_deflectometry — py -3.11 examples/poc_phase_measuring_deflectometry.py
image2d as input)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 operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.