fullseye

deflectometry_phase_to_slope — SPECULAR deflectometry op

使い方

画面の絶対位相 2 枚(u 方向・v 方向の縞)→ 面の格子上の法線マップ (H, W, 3)。

phase_x / phase_y: カメラの画素ごとの絶対位相 [rad] (次数を確定したもの。 fringe.absolute_phase で粗い縞から決める)。画面の座標は u = φ_x·周期 / 2π、v = φ_y·周期 / 2π (画面の中心が 0)。NaN の画素は無効。

面の格子(deflectometry_render と同じ、視野の中心が原点、間隔 field / (W − 1))の各点 P = (x, y, z_ref) をカメラに投影して位相を双線形に読み、画面の点 S を出して、 入射 S→P と反射 P→C から法線を match3d.normal_from_reflection で作る(n ∝ 反射 − 入射)。 返り値は photometric と同じ規約(+z が上、x が列、y が行)なので、そのまま photometric.integrate_normals(高さへ)や slope_to_curvature(曲率へ)に流せる。 位相が NaN・視野の外の点は NaN。

★高さと傾きの不定性: 面の高さを z_ref(数か (H, W) の配列)と仮定して法線を出す。本当の面が Δz ずれていると、法線は Δz sin θ / d だけ(視野の中心で)傾いて出る —— 1 台のカメラと 1 枚の 画面では分けられない(deflectometry_sensitivity が係数を返す)。局所の凹みの形はほぼ影響を 受けないが、面全体の傾きと曲がりは位置の不確かさに引きずられる。

Raises: ValueError —— 位相が 2-D でない・形が違う・無限大を含む、周期が正でない、 z_ref が有限でない・形が違う、rig が不正。

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(normalmap を入力に取れる)

brdf_blinn_phong · brdf_microfacet · dichromatic_render · slope_to_curvature

同カテゴリ(deflectometry)

deflectometry_rig · deflectometry_screen_pattern · deflectometry_render · slope_to_curvature · deflectometry_sensitivity


Provenance: deflectometry.py — SPECULAR operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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