chromatic_confocal_simulate — INTERFEROMETRY simulate op

Datenarten: keinesweep (ein Operator, der allein durch seine Argumente bestimmt ist — er nimmt kein Bild und keine Daten entgegen)

Aufruf: 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) (oder opsinterferometry.get("chromatic_confocal_simulate"))

Verwendung

Synthetisiert das konfokale Rückkehrspektrum einer Oberfläche in bekannter Höhe.

> Die ausführliche Beschreibung unten ist der Originaltext — Zusammenfassung und Überschriften sind übersetzt.

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").

Ausführlicher Anwendungsleitfaden

Leitfaden zur Familie coherence_scanning

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

coherence_scanningpy -3.11 examples/coherence_scanning.py

Typkompatible Folge-Operatoren (nehmen sweep als Eingabe)

csi_envelope · csi_peak_position · chromatic_confocal_height

Gleiche Kategorie (simulate)

csi_signal_simulate · csi_stack_simulate


*Provenance: interferometry.py — INTERFEROMETRY Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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