fullseye

pupil_blur — OPTICS wave op

使い方

Blur an image with the PSF of a pupil shape at one wavelength band.

The forward imaging model of one spectral band: the PSF of :func:pupil_psf (same pupil / defocus / wavelength / f-number arguments), binned to the image’s pixel pitch so the blur is in the image’s own units, convolved with the image (FFT, reflect-padded borders so a flat field stays flat and nothing wraps around). Call it once per band with that band’s defocus_waves (from :func:defocus_from_shift and a focal shift versus wavelength) and you have the polychromatic image of a lens with longitudinal chromatic aberration seen through any pupil — the ingredient of the “colour from chromatic blur” hypothesis for single-photoreceptor eyes (Stubbs & Stubbs, PNAS 113:8206, 2016).

Returns a float64 image2d of the image’s shape. Linear: no clipping, no re-normalisation of the image (the PSF sums to 1, so a constant image is returned unchanged to rounding).

Ground truth it reproduces (measured, tests/test_optics.py): a constant image is unchanged to 1e-12; a delta image returns the binned PSF itself (the impulse response, to 1e-12 where the kernel fits); with defocus_waves = 0 and a diffraction spot much smaller than the pixel (lambda N = 0.8 um on a 5 um pitch) a sharp edge is unchanged to within 1 % — the identity at focus; the blurred image’s total is the input’s total to 1e-9 (flux is conserved by the reflect padding).

Raises ValueError: everything :func:pupil_psf raises, plus image not 2-D / smaller than 2x2 / over the size cap / complex / masked / non-finite, and a non-finite result (an FFT overflow).

Shift-invariant: one PSF for the whole field. Field-dependent blur (vignetting, off-axis aberration) is lensimage.render_through_lens.

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(image2d を入力に取れる)

fraunhofer_pattern · pupil_psf · psf_to_mtf · illumination_uniformity · render_through_lens · surface_defect · defocus_blur

同カテゴリ(wave)

airy_pattern · angular_spectrum_propagate · fraunhofer_pattern · gaussian_beam · defocus_from_shift · pupil_psf


Provenance: optics.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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