tb_lf_refocus — 2D typed op

• Data kinds: lightfield → image

• Call: fullseye.apply(img, "tb_lf_refocus", a=0.5, b=0.5) (2-D model = एक image + दो scalar knobs a,b∈[0,1])

tb_lf_refocus: input → output

*Figure synthetic 128×128 input पर सच में चलाकर मिला output है। बाईं ओर input, दाईं ओर output। Point clouds ऊपर से देखे गए scatter के रूप में (brightness = z), 1-D series line के रूप में, volumes z दिशा में maximum-intensity projection के रूप में, videos बीच के frame के रूप में, complex images amplitude के रूप में, और जो return values चित्र नहीं बन सकते वे स्वयं values के रूप में दिखाए जाते हैं।*

*Knob a output नहीं बदलता (मापा गया: 0.1 / 0.5 / 0.9 पर एक जैसा)।*

*Knob b output नहीं बदलता (मापा गया: 0.1 / 0.5 / 0.9 पर एक जैसा)।*

Stages (पहले आने वाले ops → यह op, बाएँ से क्रम में):

▸ tb_lf_refocus: stages का figure (docs site)

दूसरी images पर भी (synthetic scene / photo / coins। ऊपर की row में inputs, नीचे की row में उनके outputs। Knobs default पर):

▸ tb_lf_refocus: दूसरी images पर output (docs site)

उपयोग

Shift-and-add refocus: *slope* पर focus की गई synthetic-aperture image।

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

Every view (v, u) is shifted by (-s*(v - v_c), -s*(u - u_c)) — the minus undoes the parallax of a point at slope s — and the shifted views are averaged. Points at that slope add coherently and stay sharp; everything else is smeared by an amount proportional to its slope difference times the angular baseline. slope=0 is the plane the array was already focused on and returns the plain average of the views.

Ground truth it reproduces exactly (pinned in tests/test_lightfield.py):

a single-layer field synthesised at slope s0 and refocused at s0 with edge="wrap" and an integer s0 returns the original texture to 5.6e-16; sweeping the slope, the variance of the result peaks at s0 (measured exactly on the sweep grid in all 18 texture/slope combinations listed in the module docstring), and refocusing at -s0 does *not* — which is the check that catches a flipped shift sign.

Returns a (H, W) 2-D image.

Raises ValueError: *lf* not a valid light field, a non-finite or over-large *slope* (MAX_ABS_SLOPE), unknown *interp* / *edge*.

Typed bridge of the lightfield op lf_refocus into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. This op has no tunable parameter; a and b are unused.

संदर्भ (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 के स्रोत।

Studio में आज़माएँ

नीचे का program सच में चलता है, यह जाँचा गया है (figure वाला ही input)। Studio की help में यह block buttons बन जाता है, जिनसे इसे वहीं load करके चलाया जा सकता है।

img_to_lightfield 0.50 0.50
tb_lf_refocus 0.50 0.50

▸ यह pipeline load करें  ·  Load करके चलाएँ

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

नीचे के उदाहरण मूल ledger op lf_refocus को call करते हैं। यह bridge op वही implementation है, बस fn(v, a, b) convention के अनुसार ढाला गया है, इसलिए व्यवहार वैसा ही लागू होता है (केवल call का रूप अलग है)।

• lightfield_depth — py -3.11 examples/lightfield_depth.py

• poc_lightfield_depth — py -3.11 examples/poc_lightfield_depth.py

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

identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter

इसी category के (typed)

tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample


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

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