lf_plenoptic_design — LIGHTFIELD depth op

数据种类:table(仅由参数决定的算子 —— 不接受图像或数据输入)

调用:import lightfield; lightfield.lf_plenoptic_design(focal_mm=50.0, f_number=8.0, object_mm=300.0, pixel_um=3.45, mla_pitch_um=27.6, sensor_px=(2048, 2448), *, subpixel_px=0.1)(或 opslightfield.get("lf_plenoptic_design"))

用法

给全光相机定尺寸:能买到多少角度/空间分辨率与深度范围。

> 以下的详细说明为原文 —— 摘要与标题已翻译。

The plenoptic trade in one table. A microlens spanning ``mla_pitch_um /

pixel_um`` pixels turns that many pixels into that many *directions*, so the

sensor's pixel count is unchanged but the image is `U*V` times smaller and

carries `U*V viewpoints. This operator composes :mod:optics` rather than

re-deriving it: `optics.thin_lens` places the image, and

`optics.depth_of_field` is called twice — once with the pixel pitch as

the circle of confusion (the depth of field of a single refocused slice) and

once with the *microlens* pitch (the range over which refocusing can still

recover a sharp image). Their ratio is the refocusing gain, and it comes out

at the angular resolution, which is the textbook result — measured

2026-09-01 at `f = 50 mm, N = 8, s_o = 300 mm`: an 8x8 angular

grid gives `refocus_gain = 8.0038, 10x10 gives 10.0075` and 6x6 gives

`6.0016`.

Returns a dict — `angular_u / angular_v` (whole pixels per microlens,

from `floor) · angular_exact` (the unrounded ratio) and

`pitch_is_integer` (whether the MLA pitch is a whole number of pixels; it

usually is not, which is why real decoding needs sub-pixel calibration) ·

`spatial_w / spatial_h` (microlenses = sub-aperture image size) ·

`n_views · resolution_loss (U*V) · image_mm` /

`magnification / working_distance_mm` from the thin lens ·

`aperture_mm (f/N) · baseline_mm` (viewpoint spacing across the

pupil, `aperture / (U - 1)) · focal_px_subaperture` (focal length in

units of the *microlens* pitch, the pixel of a sub-aperture image) ·

`dof_pixel_mm / dof_refocus_mm and refocus_gain` · and

`depth_precision_mm`, the object-side distance change that moves the

disparity by *subpixel_px* pixels (`Z^2 * dp / (focal_px * baseline)`) —

the honest depth resolution at *object_mm*.

Raises `ValueError`: any non-positive or non-finite length, an

`mla_pitch_um` smaller than two *pixel_um* (fewer than 2 directions is not

a light field), a sensor smaller than one microlens, a non-positive

*subpixel_px*, `object_mm == focal_mm` (propagated from

`optics.thin_lens`: the object images at infinity), and an angular

resolution of 1 in either axis, where the baseline would be a 0/0.

详细使用指南

lightfield_depth 族使用指南

参考(示例数据・文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者・年份)与用途见上面的族使用指南

可运行的示例(实际调用该算子并已验证的样例)

lightfield_depthpy -3.11 examples/lightfield_depth.py

类型可衔接的下一个算子(可接受 table 作为输入)

同类别(depth)

lf_depth_from_focus · lf_epi_slope · lf_disparity_to_depth · lf_all_in_focus


*Provenance: lightfield.py — LIGHTFIELD 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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