tb_fly_tau_from_expansion — 2D typed op

• Data kinds: signal → signal

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

tb_fly_tau_from_expansion: 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_fly_tau_from_expansion: stages का figure (docs site)

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

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

उपयोग

optical expansion से time-to-contact — tau margin।

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

From the subtended angle and its rate::

shape="disk": tau = sin(theta) / theta'

shape="sphere": tau = 2*tan(theta/2) / theta'

theta_signal is the full subtended angle over time, radians.

★ The two object models differ by 33% at a 60-degree subtense (sin 60 = 0.866 vs 2 tan 30 = 1.155); using the wrong one silently mis-times a landing, so the model is a required, named choice rather than a default guess.

theta_signal: the full subtended angle per sample, radians.

dt_s: the sample interval, seconds.

shape: "disk" (a frontal circular disk) or "sphere".

Returns a 1-D float64 array of the time-to-contact per sample, seconds. Non-expanding samples (theta' <= 0) return NaN — a documented non-finite, because a contracting or static angle has no time-to-contact and inventing one would be a plausible-wrong number. (The registry op tb_fly_tau_from_expansion must return a finite signal, so it replaces those NaN by the signal fallback without recording a fallback event — backend_safe.NONFINITE_BY_DESIGN; call this function directly to keep the NaN.)

Ground truth: for the model's own object geometry (theta = 2 asin(l/d) for a sphere, theta = 2 atan(l/d) for a disk) approaching at speed |v|, the returned tau equals the true distance-over-speed d/|v| (pinned in the tests).

Raises ValueError: a non-1-D / empty / too-short (< 3) / non-finite *theta_signal*, a signal over MAX_SIGNAL_POINTS, a non-positive *dt_s*, and an unknown *shape*. A non-expanding angle is not an error — it is the documented NaN return above.

Typed bridge of the flyvision op fly_tau_from_expansion 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_signal 0.50 0.50
tb_fly_tau_from_expansion 0.50 0.50

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

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

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

• poc_fly_vision — py -3.11 examples/poc_fly_vision.py

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

identity · tb_create_funct_1d_array · tb_smooth_funct_1d_gauss · tb_smooth_funct_1d_mean · tb_derivate_funct_1d · tb_integrate_funct_1d · tb_zero_crossings_funct_1d · tb_abs_funct_1d

इसी 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.