csi_signal_simulate — INTERFEROMETRY simulate op

데이터 종류: 없음sweep(인자만으로 정해지는 연산자 —— 이미지나 데이터 입력을 받지 않습니다)

호출: import interferometry; interferometry.csi_signal_simulate(surface_um=6.0, z_start_um=0.0, z_step_um=0.05, n_planes=241, wavelength_um=0.6, envelope_fwhm_um=2.8, envelope_sigma_um=None, bias=0.5, amplitude=0.4, reflectivity=1.0, noise=0.0, seed=0)(또는 opsinterferometry.get("csi_signal_simulate"))

사용법

알려진 표면 높이에 대한 화소 하나의 z 주사 인터페로그램을 합성합니다.

> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.

The coherence-scanning forward model, and the reason every other operator here

has an exact answer to be checked against::

I(z) = bias + amplitude*reflectivity * exp(-(z-z0)^2 / 2 sigma^2)

• cos(4*pi*(z-z0)/wavelength)

with `z0 = surface_um`. The 4 is the double pass — light goes down to the

surface and back, so one fringe is `wavelength/2` of *height*, not a whole

wavelength. Getting that factor wrong is a clean 2x in every height this

module produces, which is why it is written out here rather than hidden in a

constant.

surface_um: the true surface height `z0`, in the scan's own

coordinate. Need not land on a scan plane — the

sub-step case is the interesting one and the tests use

it deliberately.

z_start_um/z_step_um/n_planes: the scan grid,

`z_k = z_start_um + k*z_step_um`.

wavelength_um: mean wavelength of the source.

envelope_fwhm_um: the FWHM of the envelope along the scan axis. Give

this *or* `envelope_sigma_um`, never both. It is

half the source coherence length, because the

double pass makes OPD = 2z;

:func:csi_design returns both under separate names

for exactly that reason.

bias/amplitude: the intensity pedestal `a and fringe amplitude b`.

reflectivity: per-pixel scale on the fringe amplitude (>= 0). It

scales the envelope and therefore

:func:csi_contrast_map, and — this is the honest part

— it does not move the envelope peak, so it does not

bias :func:csi_peak_position. A *spatially varying*

reflectivity biases nothing either; what does bias the

centroid is where the peak sits in the window, and that

is documented on :func:csi_peak_position.

noise: additive Gaussian sigma (0 = the exact model).

seed: integer seed for that noise (no `None`).

Returns a 1-D float64 array of `n_planes` intensities.

Ground truth: with `noise=0` and the surface centred in the scan, the

`"gaussian" estimator of :func:csi_peak_position` returns *surface_um* to

1.43e-07 um over sub-step offsets, and to 2.9e-14 um when the envelope is

given analytically instead of through the Hilbert transform (both pinned in

the tests).

Raises `ValueError`: a non-real / non-finite / string / bool parameter,

a non-positive `z_step_um / wavelength_um` / envelope width, a negative

`bias / amplitude / reflectivity / noise, n_planes` outside

`[3, MAX_SCAN_POINTS], a z_step_um at or past the wavelength_um/4`

Nyquist ceiling, and a *surface_um* outside the scan range (which is the case

a real instrument reports as "no surface found", not as a height).

자세한 사용 가이드

coherence_scanning 패밀리 가이드

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

coherence_scanningpy -3.11 examples/coherence_scanning.py

타입이 이어지는 다음 연산자(sweep 를 입력으로 받는 것)

csi_envelope · csi_peak_position · chromatic_confocal_height

같은 카테고리(simulate)

csi_stack_simulate · chromatic_confocal_simulate


*Provenance: interferometry.py — INTERFEROMETRY 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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