simulate op• 데이터 종류: 없음 → sweep(인자만으로 정해지는 연산자 —— 이미지나 데이터 입력을 받지 않습니다)
• 호출: import interferometry; interferometry.chromatic_confocal_simulate(surface_um=0.0, wavelength_start_nm=500.0, wavelength_step_nm=0.5, n_bins=401, dispersion_um_per_nm=0.2, reference_wavelength_nm=600.0, peak_fwhm_nm=4.0, peak_counts=1000.0, background=10.0, noise=0.0, seed=0)(또는 opsinterferometry.get("chromatic_confocal_simulate"))
알려진 높이에 있는 표면의 공초점 반사 스펙트럼을 합성합니다.
> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.
A chromatic objective is built to have axial colour on purpose: each
wavelength focuses at a different height, so only the wavelength focused *on
the surface* passes the confocal pinhole. The spectrometer therefore sees a
peak whose wavelength is the height::
lambda_peak = reference_wavelength_nm
+ (surface_um - 0) / dispersion_um_per_nm
i.e. ``surface_um = (lambda_peak - reference_wavelength_nm) *
dispersion_um_per_nm`, which is what :func:chromatic_confocal_height`
inverts. The peak is modelled as a Gaussian of FWHM *peak_fwhm_nm* on a flat
*background* pedestal.
surface_um: true height (0 = the reference wavelength focuses
exactly on it). May be negative — unlike a
time-of-flight distance, a height is signed.
wavelength_start_nm / wavelength_step_nm / n_bins: the spectrometer axis.
dispersion_um_per_nm: the axial chromatic dispersion, height per
nanometre. This is the calibration constant and
the units are in the name for a reason: a
per-micrometre reading of it is a 1000x error in
the height.
peak_fwhm_nm: spectral width of the confocal response.
peak_counts / background: peak height above, and level of, the pedestal.
noise / seed: additive Gaussian sigma and its integer seed.
Returns a 1-D float64 spectrum of `n_bins` non-negative intensities
(clipped at 0, because a spectrometer cannot read negative light — and the
clip is stated here rather than left as a surprise).
Ground truth: with `noise=0 the "gaussian"` estimator recovers
*surface_um* exactly (measured 0.0e+00 to 3.6e-15 um over heights from
-15 to +18 um), at any peak width and even with the peak two bins from the
band edge, because the logarithm of a sampled Gaussian is exactly a parabola
and the three-point fit is *local* — there is no Hilbert transform here, so
the truncation failure that limits the coherence-scanning side does not exist
on this one (pinned in the tests).
Raises `ValueError`: non-real / non-finite / string / bool parameters, a
non-positive step / width / dispersion, negative *peak_counts* /
*background* / *noise*, *n_bins* outside `[3, MAX_SCAN_POINTS]`, and a
*surface_um* whose wavelength falls outside the spectrometer band (the
out-of-range case a real probe reports as "no surface").
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• coherence_scanning — py -3.11 examples/coherence_scanning.py
sweep 를 입력으로 받는 것)csi_envelope · csi_peak_position · chromatic_confocal_height
simulate)csi_signal_simulate · csi_stack_simulate
*Provenance: interferometry.py — INTERFEROMETRY 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.