piv_error_stats — PIV assess op

• Data kinds: flow2d × flow2d → table

• Call: import fullseye as fs; fs.ledger.piv_error_stats(flow, truth, trim=1) (to call the implementation directly, import pivops; pivops.piv_error_stats(flow, truth, trim=1); from the registry, opspiv.get("piv_error_stats"))

Usage

Breakdown of the difference from the ground truth. Returns bias and scatter separately.

Reporting only one of them lets an implementation with a systematic offset pass as "error 0.3 px". Bias (mean error) and scatter (standard deviation) point to different causes.

Args:

flow: estimate (2, h, w).

truth: ground truth on the same grid (2, h, w) (the return of piv_sample_at_windows).

trim: number of grid cells removed from the outer edge. Correlation drops when a window touches the image border, so

by default 1 ring is dropped. 0 means the whole grid.

Returns:

dict: bias_dy / bias_dx / std_dy / std_dx / rms

(root mean square of the 2 components combined) / median_abs / p95_abs /

n_valid / n_total.

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_river_surface_velocity — py -3.11 examples/poc_river_surface_velocity.py

• poc_strain_history — py -3.11 examples/poc_strain_history.py

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

—

Same category (assess)

piv_sample_at_windows · piv_peak_locking · piv_time_statistics


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