polarization_render — SPECULAR polarization op

• Data kinds: image2d × image2d → polsweep

• Call: import fullseye as fs; fs.ledger.polarization_render(diffuse, specular, angles_deg=(0.0, 45.0, 90.0, 135.0), azimuth_deg=0.0) (implementation को सीधे call करना हो तो import specularity; specularity.polarization_render(diffuse, specular, angles_deg=(0.0, 45.0, 90.0, 135.0), azimuth_deg=0.0), registry से लेना हो तो opsspecular.get("polarization_render"))

उपयोग

polariser sweep का forward model: एक ज्ञात split को उन frames में बदलता है जिन्हें polarisation camera record करता। → (N, H, W)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

I(t) = 0.5 * diffuse + specular * cos^2(t - azimuth). The diffuse term is treated as completely unpolarised, so it contributes half its radiance at every analyser angle; the specular term is treated as completely linearly polarised at *azimuth_deg*, so it follows Malus's law. Those are the two

assumptions polarization_separate inverts, and rendering with them is how the inversion gets a ground truth to be exact against.

Physically the assumptions hold near Brewster's angle for a dielectric and fail at normal incidence; the module docstring says where. This operator does not model the incidence angle at all — it takes the two radiance maps you specify and produces the sweep they imply.

Raises ValueError: *diffuse* / *specular* are not 2-D arrays of the same shape, or are complex / masked / non-finite / string-typed; either has a negative value (a negative radiance is not a scene); *angles_deg* has fewer than 3 entries or does not determine the three unknowns.

उपयोग की विस्तृत guide

• specular_photometric family guide

संदर्भ (sample data, साहित्य)

• 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 के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_polarization_specular — py -3.11 examples/poc_polarization_specular.py

• specular_photometric — py -3.11 examples/specular_photometric.py

वे अगले ops जिनसे type जुड़ता है (polsweep को input के रूप में लेते हैं)

polarization_separate · polarization_dolp_map · polarization_stokes

इसी category के (polarization)

polarization_separate · polarization_dolp_map · polarization_stokes


*Provenance: specularity.py — SPECULAR operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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