piv_synth_particles — 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_particles(shape, density=0.02, diameter_px=2.5, seed=0, intensity=(0.6, 1.0), background=0.0) (to call the implementation directly, import pivops; pivops.piv_synth_particles(shape, density=0.02, diameter_px=2.5, seed=0, intensity=(0.6, 1.0), background=0.0); from the registry, opspiv.get("piv_synth_particles"))

• Return value through the ledger: fullseye.ledger.piv_synth_particles(...) 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_particles.raw(...) or call pivops.piv_synth_particles directly.

• Underlying return: (image, positions) -> image2d

Usage

Creates 1 image seeded with tracer particles. Returns (image, positions).

Particles are Gaussian bright spots (by PIV convention, diameter_px denotes 2 times the standard deviation, not the 1/e^2 width). Positions are continuous, so images with subpixel ground truth can be made.

density is the number of particles per pixel. The PIV rule of thumb is 5-10 per window as a guideline, which for a 32x32 window corresponds to 0.005-0.01. Too few and no correlation peak stands out; too many and particle images overlap so that individual correspondences are lost.

Args:

shape: (H, W).

density: particles per pixel (> 0).

diameter_px: diameter of a particle image [px] (> 0).

seed: random seed.

intensity: brightness range of the particles (lo, hi).

background: uniform offset.

Returns:

(image (H, W) float64, positions (N, 2) as (row, col)).

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

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_pair · 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.