decode op• Data kinds: image2d → lightfield
• Call: import lightfield; lightfield.lf_from_mla(raw, angular=(5, 5), *, offset=(0, 0), crop=False) (or opslightfield.get("lf_from_mla"))
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.
• lightfield_depth family guide
• 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.
• lightfield_depth — py -3.11 examples/lightfield_depth.py
lightfield as input)lf_to_mla · lf_stats · lf_subaperture · lf_center_view · lf_views · lf_epi · lf_refocus · lf_focal_stack
decode)*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.