photometric op• Data kinds: normalmap → image2d
• Call: import fullseye as fs; fs.ledger.render_lambertian(normals, albedo, light, ambient=0.0) (implementation को सीधे call करना हो तो import photometric; photometric.render_lambertian(normals, albedo, light, ambient=0.0), registry से लेना हो तो ops3d.get("render_lambertian"))
normal + albedo + light direction → Lambertian image (inspection sample generation / GT verification / inverse rendering की forward दिशा)। → HxW।
I = albedo * (max(n·L, 0) + ambient)। light (3,) की light-direction vector है, जिसे अंदर unit length पर normalise किया जाता है (उसकी length intensity की तरह असर नहीं करती)। n·L < 0 वाले pixels 0 पर clip होते हैं (attached shadow)। ambient normal से स्वतंत्र, एक-समान जोड़ा जाने वाला constant है, जिस पर albedo गुणा होता है (default 0)। normals (H,W,3) के normals हैं (unit length माने जाते हैं, normalise नहीं होते), albedo (H,W) या broadcast होने लायक array / scalar है। return value float32 (H,W) है। ऊपरी सीमा albedo * (1 + ambient) है; [0,1] पर clip नहीं किया जाता। कोई input validation नहीं है। यह ठीक photometric_stereo का forward model है (light normalisation का नियम normalize=True से मेल खाता है), इसलिए इसे round-trip verification के लिए इस्तेमाल किया जा सकता है: recover किए गए normals और albedo से फिर synthesize करके मूल images से तुलना करें। specular reflection, interreflection और cast shadow शामिल नहीं हैं।
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• photometric_stereo — py -3.11 examples_3d/photometric_stereo.py
• render_shade — py -3.11 examples_3d/render_shade.py
image2d को input के रूप में लेते हैं)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 operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.