piv_multipass — PIV estimate op

• Data kinds: image2d × image2d → flow2d

• Call: import fullseye as fs; fs.ledger.piv_multipass(a, b, windows=(64, 32), overlap=0.5, peak='gauss3', window_func='hann', outlier_threshold=2.0, normalize='overlap', search_limit=0.25) (to call the implementation directly, import pivops; pivops.piv_multipass(a, b, windows=(64, 32), overlap=0.5, peak='gauss3', window_func='hann', outlier_threshold=2.0, normalize='overlap', search_limit=0.25); from the registry, opspiv.get("piv_multipass"))

• Return value through the ledger: fullseye.ledger.piv_multipass(...) returns only the declared out type flow2d (the underlying function also returns auxiliary values). When you need what was dropped, use fullseye.ledger.piv_multipass.raw(...) or call pivops.piv_multipass directly.

• Underlying return: (flow, info) -> flow2d

• GPU: none (CPU reference implementation only)

Usage

Multi-pass PIV that steps down from coarse windows to fine windows. Returns (flow, info).

Use the result of each stage as the predicted displacement for the next stage (shifting the second window by an integer amount). It is intentional to remove outliers and fill in the space between the rows - the outlier vectors are used as predictions. When used, the window will remain in place on the next stage.

Args:

a, b: image pair.

windows: A row of windows in descending order. Each stage does not have to be a multiple of the previous stage, but

Since the grid changes, the predictions are replaced with the nearest neighbors.

overlap / peak / window_func: Same as piv_cross_correlate.

outlier_threshold: Threshold for normalized median test between stages. Disabled with None.

normalize: Normalization method for cross-correlation in each stage.

search_limit: Percentage of window width to search from predicted position.

Returns:

The final stage (flow, info). The size of each row of windows in info["passes"].

Detailed usage guide

• piv_displacement family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• piv_field_analysis_tour — py -3.11 examples/piv_field_analysis_tour.py

• piv_flow_from_particles — py -3.11 examples/piv_flow_from_particles.py

• poc_strain_history — py -3.11 examples/poc_strain_history.py

Ops the type connects to (they accept flow2d as input)

piv_deform_pass · piv_outlier_mask · piv_replace_outliers · piv_vorticity · piv_divergence · piv_flow_magnitude · piv_to_velocity · piv_velocity_gradient

Same category (estimate)

piv_cross_correlate · piv_deform_pass · piv_ensemble_correlate


*Provenance: pivops.py — PIV operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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