typed op• Data kinds: rgbimage → image
• Call: fullseye.apply(img, "tb_specular_coefficient_map", a=0.5, b=0.5) (the 2-D model is one image plus two scalar knobs a,b∈[0,1])
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*).
Typed bridge of the specular op `specular_coefficient_map into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. a drives max_rank_ratio (default 0.1) and b drives max_negative_frac` (default 0.02).
• 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.
• (none yet)
image as input)identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_angle_3points · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal
*Provenance: ops.py — 2D 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.