piv_synth_pair — PIV synth op

• Data kinds: none → image2d (an op determined by its arguments alone — it takes no image or data input)

• Call: import fullseye as fs; fs.ledger.piv_synth_pair(shape, displacement, density=0.02, diameter_px=2.5, seed=0, noise_sigma=0.0, intensity=(0.6, 1.0), background=0.0) (to call the implementation directly, import pivops; pivops.piv_synth_pair(shape, displacement, density=0.02, diameter_px=2.5, seed=0, noise_sigma=0.0, intensity=(0.6, 1.0), background=0.0); from the registry, opspiv.get("piv_synth_pair"))

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

• Underlying return: (a, b, truth) -> image2d

Usage

Creates an image pair with a known displacement field. Returns (image_a, image_b, truth).

The particles are moved and then the 2nd image is drawn (the 1st image is not warped by interpolation). Built by interpolation, the smoothing of the interpolation would produce "a picture that PIV hits easily", and you would be measuring your own implementation on input that favours it.

Args:

shape: (H, W).

displacement: how the displacement is given. One of the following.

• a sequence of length 2 —— uniform translation (dy, dx) [px].

• callable(rows, cols) -> (dy, dx) —— a position-dependent field. The arguments are arrays of the particles' continuous coordinates.

density / diameter_px / seed / intensity / background: same as piv_synth_particles.

noise_sigma: standard deviation of additive Gaussian noise added independently to each of the 2 images.

Returns:

(a (H, W), b (H, W), truth (2, H, W)). truth is the per-pixel

true displacement; to bring it onto the window grid use piv_sample_at_windows.

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 image2d as input)

piv_cross_correlate · piv_multipass · piv_deform_pass · strain_from_displacement · correlation_quality · speckle_quality

Same category (synth)

piv_synth_particles · piv_synth_sequence


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