depth op• Data kinds: lightfield → image2d
• Call: import fullseye as fs; fs.ledger.lf_depth_from_focus(lf, slopes=(-2.0, -1.0, 0.0, 1.0, 2.0), *, window=9, measure='laplacian', subpixel=True, interp='linear', edge='nearest') (implementation को सीधे call करना हो तो import lightfield; lightfield.lf_depth_from_focus(lf, slopes=(-2.0, -1.0, 0.0, 1.0, 2.0), *, window=9, measure='laplacian', subpixel=True, interp='linear', edge='nearest'), registry से लेना हो तो opslightfield.get("lf_depth_from_focus"))
• Ledger के ज़रिए return value: fullseye.ledger.lf_depth_from_focus(...) केवल घोषित out type image2d का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.lf_depth_from_focus.raw(...) का उपयोग करें, या lightfield.lf_depth_from_focus को सीधे call करें।
refocus sweep में sharpness peak से हर pixel का slope निकालता है।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
Refocus at every slope in *slopes*, measure local sharpness (*measure*:
laplacian = summed modified Laplacian, the classical depth-from-focus operator; variance = local variance; gradient = local gradient energy) in a window x window neighbourhood, and take the slope at which each pixel is sharpest. With subpixel=True (default) the peak is refined by fitting a parabola through the winning sample and its two neighbours on a uniformly spaced sweep — on a non-uniform sweep the refinement is skipped rather than applied with the wrong spacing.
Unbiased where lf_epi_slope is not: measured 2026-09-01 on a 5x5x64x64 synthetic field over a 121-point sweep from -3 to +3, the argmax landed exactly on the true slope in 18 of 18 combinations (true slopes 0.0, +0.5, +1.0, +1.5, +2.0, -1.0 crossed with texture sigma 1.5 / 3.0 / 5.0 px), and the sub-pixel refinement left every one of them unmoved. Its resolution, though, is whatever you put in *slopes* — it cannot see a plane you never refocused on.
Returns (slope_map, sharpness): the (H, W) map of estimated slopes (in px per angular step) and the (H, W) peak focus-measure value, which is the honest confidence — a textureless pixel has no sharpness peak, gets an essentially arbitrary slope, and its sharpness is ~0. Threshold on it rather than trusting the map everywhere.
Raises ValueError: *lf* not a valid light field, *slopes* empty /
over MAX_STACK_SLICES / over MAX_STACK_ELEMENTS / containing a non-finite or over-large value, an even or non-positive *window*, unknown *measure* / *interp* / *edge*.
• lightfield_depth family guide
• 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 में दिए गए हैं।
• lightfield_depth — py -3.11 examples/lightfield_depth.py
• poc_compound_eye — py -3.11 examples/poc_compound_eye.py
• poc_lightfield_depth — py -3.11 examples/poc_lightfield_depth.py
image2d को input के रूप में लेते हैं)lf_from_mla · lf_disparity_to_depth · lf_all_in_focus
depth)lf_epi_slope · lf_disparity_to_depth · lf_all_in_focus · lf_plenoptic_design
*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.