photometric op• 資料種類:image2d → normalmap
• 呼叫: import fullseye as fs; fs.ledger.surface_normals(z)(要直接呼叫實作,import photometric; photometric.surface_normals(z);從台帳取用則 ops3d.get("surface_normals"))
高度場 z(HxW)→ 單位法線 (H,W,3)。n ∝ (-dz/dx, -dz/dy, 1)。深度→法線的正向變換。
以 np.gradient 的中心差分(邊緣為單側差分)求列方向的 dz/dy 和行方向的 dz/dx, 將 n = (-dz/dx, -dz/dy, 1) 正規化為長度 1(以 +1e-12 避免除以零)。網格間距視為 1 像素,因此當 z 的單位與像素不同(mm 等)時,若不事先換算為 z / 像素間距,傾斜會比實際偏強/偏弱。法線的 z 分量始終為正(朝向相機)。回傳值為 float32 的 (H,W,3),第 3 軸為 (x, y, z) 分量,x 沿行方向, y 沿列方向。沒有輸入驗證,傳入非 2-D 資料時會在 np.gradient 的展開處失敗。它相當於 integrate_normals 的逆變換,且與 photometric_stereo 的輸出法線約定相同, 因此可直接傳給 render_lambertian 合成陰影影像。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• photometric_stereo — py -3.11 examples_3d/photometric_stereo.py
normalmap 作為輸入)fuse_to_voxel · render_shaded · phong_shade · matcap_shade · brdf_lommel_seeliger · brdf_hapke · bump_normals_fbm · integrate_normals
photometric)photometric_stereo · integrate_normals · render_lambertian
*Provenance: photometric.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.