piv_outlier_mask — PIV validate op

• 数据种类:flow2d → mask

• 调用: import fullseye as fs; fs.ledger.piv_outlier_mask(flow, threshold=2.0, epsilon=0.1)(要直接调用实现,import pivops; pivops.piv_outlier_mask(flow, threshold=2.0, epsilon=0.1);从台账取用则 opspiv.get("piv_outlier_mask"))

用法

用归一化中值检验(Westerweel & Scarano 2005)找出离群矢量。

对每个向量,把它与 8 邻域中位数的残差除以邻域残差的中位数。在分母上加 epsilon(默认 0.1 px,PIV 测量不确定度的大致量级),是为了防止在均匀场中分母变为 0、全部都成了离群值 —— 没有这一项,输入越理想,检验越会崩溃。

★在梯度陡峭的场中有害(2026-09-06 实测)。对 Rankine 型涡(涡核半径 28 px)做多级 PIV,阈值 2 拾取的 5 根向量全部排在涡核边缘(距中心 32 px),实际误差为 0.07-0.45 px —— 不是离群值,而是速度分布出现折点的位置。用邻域中位数抹平后 RMS 从 0.134 恶化到 0.230(阈值 5 时 1 根也没拾取,仍为 0.134)。

检验立足于“与邻域不同 = 错误”的假定,因此会把真实的不连续称为错误。是否施加,请看场的性质来决定。

Args:

flow: (2, h, w)。

threshold: 超过此值即为离群值。惯例为 2。

epsilon: 分母的底值 [px]。

Returns:

(h, w) 的 bool。True 为离群值(nan 也为 True)。

详细使用指南

• 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_change_detection_misreg — py -3.11 examples/poc_change_detection_misreg.py

• poc_river_surface_velocity — py -3.11 examples/poc_river_surface_velocity.py

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

piv_replace_outliers

同类别(validate)

piv_replace_outliers


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

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