lf_plenoptic_design — LIGHTFIELD depth op

• Data kinds: कोई नहीं → table (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)

• Call: import fullseye as fs; fs.ledger.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) (implementation को सीधे call करना हो तो 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), registry से लेना हो तो opslightfield.get("lf_plenoptic_design"))

उपयोग

plenoptic camera का आकार तय करता है: आपको कितना angular/spatial resolution और depth range मिलता है।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

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

उपयोग की विस्तृत guide

• lightfield_depth family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• lightfield_depth — py -3.11 examples/lightfield_depth.py

• poc_compound_eye — py -3.11 examples/poc_compound_eye.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

—

इसी category के (depth)

lf_depth_from_focus · lf_epi_slope · lf_disparity_to_depth · lf_all_in_focus


*Provenance: lightfield.py — LIGHTFIELD operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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