fullseye

sem_render — GENERATIVE sem op

使い方

高さ場から SEM 像(二次電子の縁効果 + ビーム PSF + ショット雑音)を描く。

Parameters

height : array_like 2-D の高さ場[同じ単位は pixel_nm]。欠陥の形そのもの。 pixel_nm : float 画素 1 個の一辺[nm]。傾きは arctan(|∇h| / pixel_nm) で測る。 psf_px : float ビーム PSF のガウシアン σ[px]。段差の明るい縁はこの幅に広がる。 edge_gain : float 縁効果の強さの指数。sec(θ) ** edge_gain。既定 1.0 が sec θ の素のモデル。 base : float 平らな面(θ=0)の明るさ[0,1]。斜面は base·sec θ に乗る(飽和で 1 に頭打ち)。 dose : float 画素あたりの電子数。> 0 でポアソン雑音を載せる。0 は雑音なし(決定論)。 charging : float 帯電による緩い横方向の輝度勾配(0 で無効)。収差でなく系統的な明暗。 seed : int ポアソン雑音の種(dose > 0 のときだけ効く)。 tilt_max_deg : float sec θ が発散しないよう θ を頭打ちにする角度[度]。既定 80 度(sec ≈ 5.76)。

Returns

numpy.ndarray (H, W) の float64、[0,1]。平らな面は base、斜面は base·sec θ。

Notes

正規化は画素ごとでなく固定の線形写像(·base と [0,1] クリップ)。 1 枚ごとに min/max で正規化すると平面に対する比が壊れ、sec θ の真値を 測れなくなる(poc_real_defect_floor が colorize_depth の per-image 正規化で踏んだ罠と同じ)。

Examples

import numpy as np flat = np.zeros((16, 16)) img = sem_render(flat) float(np.ptp(img)) # 平らな面は一様 0.0 ramp = np.tile(np.linspace(0, 15, 16), (16, 1)) # 一様斜面 r = sem_render(ramp, pixel_nm=1.0) theta = np.arctan(1.0) # 勾配 1 → 45 度 abs(float(r[8, 8]) / 0.25 - 1.0 / np.cos(theta)) < 1e-6 True

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(image2d を入力に取れる)

pl_image_simulate

同カテゴリ(sem)

—


Provenance: sem.py — GENERATIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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