piv_cross_correlate — PIV estimate op

• 数据种类:image2d × image2d → flow2d

• 调用: import fullseye as fs; fs.ledger.piv_cross_correlate(a, b, window=32, overlap=0.5, peak='gauss3', window_func='hann', subtract_mean=True, shift=None, normalize='overlap', search_limit=0.25)(要直接调用实现,import pivops; pivops.piv_cross_correlate(a, b, window=32, overlap=0.5, peak='gauss3', window_func='hann', subtract_mean=True, shift=None, normalize='overlap', search_limit=0.25);从台账取用则 opspiv.get("piv_cross_correlate"))

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

• 底层返回: (flow, info) -> flow2d

用法

通过逐窗口的互相关求出位移场。返回 (flow, info)。

在每个窗口中做 2 次 FFT,取共轭积的逆变换(循环相关),以最大值的位置为整数位移,用其周围 3 点确定亚像素位移。

向零方向的偏差及其校正(实测):朴素的互相关会把位移拉向零。因为窗口错开后重叠区域减少,相关值本身随位移下降;实测中偏差也与位移成正比(win=32、Hann,dx 从 0.5 到 6 px 变化,偏差 / (d/N) 为 1.30, 1.29, 1.28, 1.28, 1.28 —— 斜率恒定)。

normalize="overlap" 通过除以窗函数的自相关来校正这一点(等同于用重叠面积归一化)。但在边缘处除数趋近 0,因此与 search_limit 把搜索范围限制在窗口 1/4 必须配对使用。实测:

=============== ========== ========== ==========

dx [px] 无校正 校正 + 1/4 仅校正

=============== ========== ========== ==========

1.0 的偏差 -0.0402 -0.0020 -0.2659

5.0 的偏差 -0.2001 -0.0128 -0.9210

5.0 的 RMS 0.2081 0.0301 4.8881

=============== ========== ========== ==========

最右列是“不限制搜索、只做归一化”的情况,校正使误差恶化 23 倍。“不能只启用其中之一”这一测量结果被直接设为默认。

Args:

a, b: 图像对 (H, W)。

window: 窗口边长 [px]。偶数、8 以上。

overlap: 窗口重叠率 [0, 1)。惯例为 0.5。

peak: PEAK_MODES。

window_func: WINDOW_FUNCS。

subtract_mean: 逐窗口减去平均(防止背景直流分量在中央形成巨大

峰)。关掉则会粘在零位移上。

shift: 预测位移 (2, h, w)(多级用)。把第 2 幅的窗口按这个整数量

错开后切出,测量残差。

normalize: "overlap"(默认)或 "none"。

search_limit: 以相对窗口的比例给出搜索位移的上限(默认 0.25 = PIV 的

“1/4 法则”)。None 为不限制 —— 与 normalize="overlap"

同时使用会如上表所示恶化。

Returns:

(flow (2, h, w), info)。info 是含有 rows / cols(窗口中心的

图像坐标)、peak_ratio(第 1 峰 / 第 2 峰。越接近 1 越

不可靠)、window / overlap / peak 的 dict。

详细使用指南

• 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

• piv_flow_from_particles — py -3.11 examples/piv_flow_from_particles.py

• poc_beam_modal_video — py -3.11 examples/poc_beam_modal_video.py

• poc_change_detection_misreg — py -3.11 examples/poc_change_detection_misreg.py

• poc_dic_strain — py -3.11 examples/poc_dic_strain.py

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

• poc_superresolution_limits — py -3.11 examples/poc_superresolution_limits.py

• poc_tacsim_marker_shear — py -3.11 examples/poc_tacsim_marker_shear.py

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

piv_deform_pass · piv_outlier_mask · piv_replace_outliers · piv_vorticity · piv_divergence · piv_flow_magnitude · piv_to_velocity · piv_velocity_gradient

同类别(estimate)

piv_multipass · piv_deform_pass · piv_ensemble_correlate


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

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