lf_aperture_mask — LIGHTFIELD refocus op

Data kinds: noneimage2d (an op determined by its arguments alone — it takes no image or data input)

Call: import lightfield; lightfield.lf_aperture_mask(angular=(5, 5), shape='circle', *, radius=None, inner=0.0, sigma=None, normalize=True) (or opslightfield.get("lf_aperture_mask"))

Usage

Angular weighting mask — the synthetic aperture you stop down or shape.

Returns a `(V, U)` 2-D array of per-view weights, indexed the same way as

the light field's angular axes, for :func:lf_synthetic_aperture. The

radius is measured in angular steps from the centre ``((V-1)/2,

(U-1)/2)`, so radius=0` selects the single centre view (an infinitely

small aperture: everything in focus, no light) and the default

`radius = max(V-1, U-1)/2` is the largest circle that fits.

• `circle` — hard-edged disc, the physical iris.

• `square` — Chebyshev disc; separable, the cheapest to reason about.

• `gaussian — apodised pupil (sigma` in angular steps, default

`radius/2`); no ringing in the defocus PSF.

• `annulus` — ring between *inner* and *radius*; a coded aperture whose

defocus PSF has more high-frequency content, which is what makes

depth-from-defocus work better.

With `normalize=True` (default) the weights sum to exactly 1, so a masked

reduction is a weighted mean and its result is directly comparable with

:func:lf_refocus. Set it to `False` to keep 0/1 selection weights.

Raises `ValueError: an angular shape outside [1, MAX_ANGULAR]`, a

negative *radius* / *inner* / *sigma*, `inner >= radius`, an unknown

*shape*, and — explicitly rather than returning a field of zeros — a mask

that selects no view at all (an opaque aperture), which would make every

downstream weighted mean a 0/0.

Detailed usage guide

lightfield_depth family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

lightfield_depthpy -3.11 examples/lightfield_depth.py

Ops the type connects to (they accept image2d as input)

lf_from_mla · lf_disparity_to_depth · lf_all_in_focus

Same category (refocus)

lf_refocus · lf_focal_stack · lf_synthetic_aperture


*Provenance: lightfield.py — LIGHTFIELD operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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