typed op• 資料種類:cimage → cimage
• 呼叫:fullseye.apply(img, "tb_angular_spectrum_propagate", a=0.5, b=0.5)(2-D 的模型是一張圖 + 兩個純量旋鈕 a,b∈[0,1])
*無圖: 該運算子以 cimage 為輸入。從影像開始的 Studio 程式無法到達該型別,請參見下方的可執行範例。*
複數場的精確純量自由空間傳播(角譜法)。
> 以下的詳細說明為原文 —— 摘要與標題已翻譯。
`U(z) = IFFT{ FFT{U(0)} * exp(i*2*pi*z*sqrt(1/lambda^2 - fx^2 - fy^2)) }`
in the `exp(-i*omega*t)` convention, so a positive *distance_um*
propagates forward. Components beyond the propagating cone
(`fx^2 + fy^2 > 1/lambda^2`) are attenuated by
`exp(-2*pi*|z|*sqrt(fx^2 + fy^2 - 1/lambda^2))`, which is the physical
evanescent decay — not zeroed, so `distance_um = 0` is an *exact*
identity and the transfer function is continuous through it.
Unlike Fresnel propagation this makes no paraxial approximation: it is the
exact solution of the Helmholtz equation for a band-limited field, valid
from a fraction of a wavelength outward.
Returns a complex128 array with the same shape as *field*.
Ground truth it reproduces (measured): `distance_um = 0` returns the field
bit-identically (it short-circuits the transform pair); propagating `+z`
then `-z` returns the original to a relative L2 error of 4.3e-16 to
5.3e-16 for a band-limited field (measured on three: 64x64 random at
+/-50 um, a 64x64 Gaussian at +/-250 um, a 128x128 random at +/-500 um);
total power is conserved to between 0 and 3.5e-16 relative on the same
three. A field *with*
evanescent content does not round-trip — those components are gone by
construction, in both directions, because that is what physically happens.
*field* is a field in the space domain, not a spectrum: do not hand it
the fftshifted output of :func:complexops.cx_fft. Real input is promoted
to complex, which loses nothing.
Aliasing: the discrete transfer function is periodic, so a field that
diffracts past the array edge wraps around. The practical guard is the
usual one — pad the field so the propagated support stays inside, and keep
`pixel_pitch_um below lambda/(2*NA)`. No warning can detect this
reliably from the array alone, so none is invented.
Raises `ValueError`: *field* is not 2-D, smaller than 2x2, larger than
:data:MAX_FIELD_ELEMENTS, masked, or non-finite; non-positive or
non-finite *wavelength_um* / *pixel_pitch_um*; non-finite *distance_um*.
Typed bridge of the optics op `angular_spectrum_propagate into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. a drives wavelength_um (default 0.55) and b drives distance_um` (default 100).
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• (尚無)
cimage 作為輸入)identity · tb_cx_ifft · tb_cx_magnitude · tb_cx_phase · tb_cx_real · tb_cx_imag · tb_cx_log_magnitude · tb_cx_apply_transfer_function
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_angle_3points · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal
*Provenance: ops.py — 2D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.