piv_divergence — PIV field op

• 数据种类:flow2d → image2d

• 调用: import fullseye as fs; fs.ledger.piv_divergence(flow, spacing=1.0)(要直接调用实现,import pivops; pivops.piv_divergence(flow, spacing=1.0);从台账取用则 opspiv.get("piv_divergence"))

用法

散度 d(dy)/dy + d(dx)/dx。不可压缩时为 0 —— 可用作独立的验算。

公式:gradient(flow[0], spacing, axis=0) + gradient(flow[1], spacing, axis=1) (numpy.gradient:内部为中心差分,网格边缘为单侧差分)。flow[0] 是行方向的位移 dy,flow[1] 是列方向的位移 dx,x = 列,y = 行。即使行朝下,散度的符号也不依赖坐标的方向(与涡量 piv_vorticity 不同,不会反转)。正 = 源,负 = 汇。

• flow:(2, h, w),分量 (dy, dx) [px/frame] (piv_cross_correlate / piv_multipass 的返回值)。不满足 h, w >= 2 就无法微分,因此 ValueError(窗口太大、只有 1 根向量的情况)。不检查有限性 ―― piv_replace_outliers(method="nan") 的 NaN 会扩散到相邻 2 个单元。

• spacing:向量间隔 [px],正的有限值。传入 info["step"] (保持默认 1.0 的话,单位会变成“1/向量间隔”)。

• 返回值:(h, w) float64,单位 1/frame(spacing 为 px 时)。用 piv_to_velocity 换算为 m/s 的场并把 spacing 设为 m,则为 1/s。

2-D PIV 中若存在面外速度分量就会非零,因此“明明不可压缩散度却很大”是面外流动或离群值(piv_outlier_mask)的指标。piv_velocity_gradient 返回全部 4 个分量。

详细使用指南

• piv_displacement 族使用指南

参考(示例数据、文献)

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

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

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

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

• piv_flow_from_particles — py -3.11 examples/piv_flow_from_particles.py

• poc_what_a_picture_cannot_check — py -3.11 examples/poc_what_a_picture_cannot_check.py

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

piv_cross_correlate · piv_multipass · piv_deform_pass · strain_from_displacement · correlation_quality · speckle_quality

同类别(field)

piv_vorticity · piv_flow_magnitude · piv_to_velocity · piv_velocity_gradient · piv_q_criterion · piv_swirling_strength · piv_strain_rate


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

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