pl op• Data kinds: none → table (an op determined by its arguments alone — it takes no image or data input)
• Call: import fullseye as fs; fs.ledger.pl_groove_visibility(width_px: 'float' = 3.0, diffusion_length_px: 'float' = 8.0, *, sink_velocity: 'float' = 0.0, noise_rel: 'float' = 0.01, cnr_min: 'float' = 1.0) -> 'dict' (to call the implementation directly, import pl; pl.pl_groove_visibility(width_px: 'float' = 3.0, diffusion_length_px: 'float' = 8.0, *, sink_velocity: 'float' = 0.0, noise_rel: 'float' = 0.01, cnr_min: 'float' = 1.0) -> 'dict'; from the registry, opsgenerative.get("pl_groove_visibility"))
Closed-form contrast and CNR of a shadow groove and a sink groove from groove width, diffusion length and noise (table).
> The detailed description below is the original text — the summary and the headings are translated.
width_px : float
溝の幅 w[px]。
diffusion_length_px : float
拡散長 L[px]。
sink_velocity : float
沈みの溝の再結合速度 s = S·px/D(無次元、1 画素あたり)。0 なら沈みの項は 0。
noise_rel : float
像の雑音 σ(地 1 に対する相対値)。CNR = コントラスト / σ。
cnr_min : float
「見える」とする CNR の下限(既定 1 = 雑音と同じ深さ)。
dict
contrast_shadow(連続 1 − e^{−w/2L})/ contrast_shadow_grid(w が奇数の
整数なら格子の厳密値、そうでなければ None)/ contrast_sink(sL/(sL+2))/
fwhm_shadow_px / fwhm_sink_px(2L·ln2)/ cnr_shadow / cnr_sink /
visible_shadow / visible_sink / L_star_shadow_px(この L より長いと
影は CNR < cnr_min で消える)/ L_star_sink_px(この L より短いと沈みは
消える。sink_velocity = 0 か cnr_min·noise_rel ≥ 1 なら境界が無いので
None = どの L でも見えない)/ deficit_shadow_px(影の欠け量の積分 = w、
L によらない)。
影は w ≪ L で ≈ w/2L と消え、沈みは L と共に深く広くなる。欠陥の種類で向きが逆なので、「拡散長が長いほど欠陥が隠れる」は影にだけ当てはまる。
>>> t = pl_groove_visibility(2.0, 20.0, sink_velocity=0.5, noise_rel=0.02)
>>> round(t["contrast_shadow"], 4)
0.0488
>>> round(t["contrast_sink"], 4)
0.8333
>>> t["visible_shadow"], t["visible_sink"]
(True, True)
• 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.
• poc_si_wafer_pl_defect_visibility — py -3.11 examples/poc_si_wafer_pl_defect_visibility.py
table as input)perpetual_step · perpetual_render
pl)pl_diffusion_psf · pl_image_simulate
*Provenance: pl.py — GENERATIVE 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.