lf_from_mla — LIGHTFIELD decode op

Data kinds: image2dlightfield

Call: import lightfield; lightfield.lf_from_mla(raw, angular=(5, 5), *, offset=(0, 0), crop=False) (or opslightfield.get("lf_from_mla"))

Usage

Decode a microlens-array raw frame into a `(V, U, H, W)` light field.

The plenoptic sensor stores, for microlens `(t, s), a V x U` block of

pixels — one per direction through the main lens' exit pupil. So raw pixel

`(offset_y + t*V + v, offset_x + s*U + u) is exactly L[v, u, t, s]`:

the decode is a pure re-sort, no interpolation, no data invented.

:func:lf_to_mla inverts it bit-exactly.

*offset* is the integer position of the first whole microlens; a real MLA is

never aligned to pixel `(0, 0)`. Sub-pixel MLA calibration is out of scope

(see the module docstring) — this operator works on an already-rectified

frame.

By default a raw frame whose usable size is not a whole multiple of the

microlens pitch is a `ValueError`, because the alternative — quietly

dropping the last partial row of microlenses — shifts every subsequent

microlens centre and produces a light field that looks right and is wrong.

Pass `crop=True` to opt in to that crop explicitly.

Raises `ValueError`: *raw* not 2-D or non-finite, *angular* outside

`[1, MAX_ANGULAR]`, a negative *offset*, an *offset* that leaves fewer

than one whole microlens, a size that is not a multiple of the pitch (unless

`crop=True), a decoded sub-aperture image over :data:MAX_SPATIAL` on a

side, and a decoded size over :data:MAX_LF_ELEMENTS.

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 lightfield as input)

lf_to_mla · lf_stats · lf_subaperture · lf_center_view · lf_views · lf_epi · lf_refocus · lf_focal_stack

Same category (decode)

lf_to_mla · lf_stats


*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.