piv_synth_sequence — PIV synth op

• 数据种类:无 → images(仅由参数决定的算子 —— 不接受图像或数据输入)

• 调用: import fullseye as fs; fs.ledger.piv_synth_sequence(shape, displacement, n_frames=8, density=0.02, diameter_px=2.5, seed=0, noise_sigma=0.0, intensity=(0.6, 1.0), background=0.0, jitter=0.0)(要直接调用实现,import pivops; pivops.piv_synth_sequence(shape, displacement, n_frames=8, density=0.02, diameter_px=2.5, seed=0, noise_sigma=0.0, intensity=(0.6, 1.0), background=0.0, jitter=0.0);从台账取用则 opspiv.get("piv_synth_sequence"))

• 经台账调用的返回值: fullseye.ledger.piv_synth_sequence(...) 只返回声明的 out 类型 images 的值(底层函数还会返回辅助信息)。需要被丢弃的部分时,使用 fullseye.ledger.piv_synth_sequence.raw(...),或直接调用 pivops.piv_synth_sequence。

• 底层返回: (frames, truth) -> images

用法

同一批粒子被反复移动而得到的图像序列。返回 (frames, truth)。

piv_synth_pair 生成 2 幅,而这里生成持续追踪 1 个流动的序列。集合相关和时间统计只有用它才能验证 —— 若把独立的图像对排起来称为序列,相邻 2 幅之间没有对应关系,统计就失去意义(实测:相对平均 0.73 px,脉动 RMS 竟为 4.05 px,测到的是生成方式而不是流动)。

Args:

shape: (H, W)。

displacement: 每 1 帧的位移(与 piv_synth_pair 相同的格式)。

n_frames: 帧数(2 以上)。

jitter: 每帧对整个场施加的扰动的标准差 [px]。0 则为定常流。

要试验时间统计(脉动、雷诺应力),请让它大于 0。

★ 不是逐粒子独立的扰动,而是每帧一个扰动。

若逐粒子施加,会在窗口内被平均,缩小为 N 的平方根分之一,

注入值与测量值对不上(实测:注入 0.3 测得 0.15)。

这是 PIV 的性质而不是错误,但不能用于验证时间统计,因此这里做成模拟非定常流动本身的形式。

density / diameter_px / seed / noise_sigma / intensity / background:

与 piv_synth_pair 相同。

Returns:

(frames: list of (H, W), truth: (2, H, W))。truth 是

每 1 帧的平均位移。

详细使用指南

• piv_displacement 族使用指南

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• piv_field_analysis_tour — py -3.11 examples/piv_field_analysis_tour.py

类型可衔接的下一个算子(可接受 images 作为输入)

piv_ensemble_correlate · piv_time_statistics

同类别(synth)

piv_synth_particles · piv_synth_pair


*Provenance: pivops.py — PIV 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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