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 帧的平均位移。
• 示例数据目录(下载 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.