sem_image — GENERATIVE sem op

• Data kinds: image2d → image2d

• Call: import fullseye as fs; fs.ledger.sem_image(height, material_map=None, *, materials=('SI',), substrate='SI', energy_kev: 'float' = 5.0, pixel_nm: 'float' = 2.0, beam_sigma_nm: 'float' = 1.0, electrons_per_pixel: 'int' = 30, detector: 'str' = 'inlens', layer_bottom_nm=0.0, buried=None, gain=None, seed: 'int' = 0, return_signals: 'bool' = False) (to call the implementation directly, import sem; sem.sem_image(height, material_map=None, *, materials=('SI',), substrate='SI', energy_kev: 'float' = 5.0, pixel_nm: 'float' = 2.0, beam_sigma_nm: 'float' = 1.0, electrons_per_pixel: 'int' = 30, detector: 'str' = 'inlens', layer_bottom_nm=0.0, buried=None, gain=None, seed: 'int' = 0, return_signals: 'bool' = False); from the registry, opsgenerative.get("sem_image"))

Usage

SEM image from a height field and a material map, firing electrons into every pixel (direct Monte Carlo).

> The detailed description below is the original text — the summary and the headings are translated.

各画素に electrons_per_pixel 個の一次電子(ビーム幅 beam_sigma_nm のガウシアン) を撃ち、検出器の信号を電子 1 個あたりで平均する。雑音は撃った電子の数そのもの (反射電子も二次電子も 1 個ずつの統計)なので、別のポアソン雑音は載せない。

Parameters

height : array_like

(H, W) の高さ場 [nm] (上が正)。

material_map : array_like of int, optional

(H, W) の材料番号(materials の添字)。表面から layer_bottom_nm までの柱の

材料。それより深い所は substrate。None は全部 materials[0]。

materials : sequence of str

材料表の名前の列。

substrate : str

基板の材料。

energy_kev, pixel_nm, beam_sigma_nm : float

加速電圧 [keV]・画素の一辺 [nm]・ビームの σ [nm]。

electrons_per_pixel : int

画素あたりの一次電子の数(像の S/N を決める)。

detector : str

inlens(レンズ内の二次電子)/ everhart(側方の二次電子、+x 側、SE3 込み)/

bse(真上の環状の反射電子、エネルギー重み)/ se_total(検出器なしの全収率)。

layer_bottom_nm : float or array_like

材料の柱の下端の z [nm] (0 = 基板の上面。正は基板の中へ)。

buried : list, optional

埋もれた箱 [(材料名, (H, W) のマスク, 上端の深さ, 下端の深さ), ...] [nm]。

gain : float, optional

信号 → [0,1] の固定の倍率(既定は検出器ごとの定数。画像ごとに正規化しない)。

seed : int

乱数の種。

return_signals : bool

True なら像の代わりに dict(4 検出器の信号の地図と η の地図)を返す。

Returns

numpy.ndarray

(H, W) の float64、[0,1]。

Examples

>>> import numpy as np

>>> img = sem_image(np.zeros((6, 6)), energy_kev=1.0, electrons_per_pixel=5)

>>> img.shape, bool(0.0 <= img.min() and img.max() <= 1.0)

((6, 6), True)

Detailed usage guide

• generative_art 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)

• poc_virtual_sem_kv_cd_bse — py -3.11 examples/poc_virtual_sem_kv_cd_bse.py

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

sem_render · sem_charging_series · pl_image_simulate

Same category (sem)

sem_render · sem_electron_mc · sem_se_universal_curve · sem_yield_curve · sem_line_profile · sem_cd_measure · sem_se_escape_fraction · sem_charging_series


*Provenance: sem.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.