render_lambertian — 3D photometric op

• 資料種類:normalmap → image2d

• 呼叫: import fullseye as fs; fs.ledger.render_lambertian(normals, albedo, light, ambient=0.0)(要直接呼叫實作,import photometric; photometric.render_lambertian(normals, albedo, light, ambient=0.0);從台帳取用則 ops3d.get("render_lambertian"))

用法

法線 + 反照率 + 光源方向 → Lambert 影像(檢測樣本生成 / GT 驗證 / 逆算繪的正向)。→ HxW。

I = albedo * (max(n·L, 0) + ambient)。light 是 (3,) 的光源方向向量,內部正規化為單位長度(長度不作為強度起作用)。n·L < 0 的像素被截斷(clip)為 0 (附著陰影)。ambient 是與法線無關、均勻加上的常數,會乘以反照率(預設 0)。normals 是 (H,W,3) 的法線(假定為單位長度,不做正規化),albedo 是 (H,W) 或可廣播的陣列、純量。回傳值為 float32 的 (H,W)。上限為 albedo * (1 + ambient),不截斷到 [0,1]。沒有輸入驗證。它正是 photometric_stereo 的正向模型(光源正規化約定對應 normalize=True),

因此可用於往返驗證:從還原的法線、反照率重新合成並與原影像比較。不包含鏡面反射、相互反射和投射陰影(cast shadow)。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• photometric_stereo — py -3.11 examples_3d/photometric_stereo.py

• render_shade — py -3.11 examples_3d/render_shade.py

型別可銜接的下一個運算子(可接受 image2d 作為輸入)

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

同類別(photometric)

photometric_stereo · surface_normals · integrate_normals


*Provenance: photometric.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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