specular_coefficient_map — SPECULAR dichromatic op

Data kinds: rgbimageimage2d

Call: import specularity; specularity.specular_coefficient_map(image_rgb, illuminant_rgb=(1.0, 1.0, 1.0), body_rgb=None, max_rank_ratio=0.1, max_negative_frac=0.02) (or opsspecular.get("specular_coefficient_map"))

Usage

The scalar interface (specular) coefficient of the dichromatic model. → (H, W).

The same decomposition as :func:specular_diffuse_split, returning the

scalar `m_s(x) instead of the coloured image m_s(x) * G`. That scalar

is what an inspection routine thresholds: it is the amount of light the

surface reflected *as a mirror does*, in the units of the input radiance,

and it is zero wherever the surface behaved as a Lambertian body.

`specular_coefficient_map(...) * illuminant_unit` equals the second return

value of :func:specular_diffuse_split exactly, by construction — the two

operators share one core.

Arguments, guards and honest limits are identical to

:func:specular_diffuse_split — including the fact that the two guards

bound gross violations only.

Raises `ValueError`: exactly the same conditions as

:func:specular_diffuse_split (invalid image, invalid illuminant,

identically zero image, body colour parallel to the illuminant, either

guard firing, fewer than 3 pixels on the uniform-body route, invalid

*body_rgb*).

Detailed usage guide

specular_photometric family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

specular_photometricpy -3.11 examples/specular_photometric.py

Ops the type connects to (they accept image2d as input)

polarization_render

Same category (dichromatic)

specular_diffuse_split · specular_free_transform · illuminant_from_dichromatic_planes


*Provenance: specularity.py — SPECULAR operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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