piv_peak_locking — PIV assess op

• 資料種類:flow2d → table

• 呼叫: import fullseye as fs; fs.ledger.piv_peak_locking(flow, bins=20)(要直接呼叫實作,import pivops; pivops.piv_peak_locking(flow, bins=20);從台帳取用則 opspiv.get("piv_peak_locking"))

用法

峰值鎖定的強度:小數部分的分布偏離均勻分布的程度。

次像素估計帶有這樣的偏差:真實位移的小數部接近 0 或 0.5 時會被拉向那裡(來自相關峰形狀與擬合函數形狀不同,是 PIV 教科書級的系統誤差)。只要流動不是均勻的,小數部應接近均勻分布,量測的就是與之的偏離。

指標 c0 是不依樣本數而定的卡方型偏離: sum((n_i - n_bar)^2 / n_bar) / (bins - 1)。從均勻分布抽樣時期望值為 1,因此在 1 附近就與均勻無法區分,越大越偏。

★ 但這個指標假定「真實位移的小數部是均勻的」。在窗口數少的場、位移緩慢變化的場中,真值本身的 c0 也會變大 (實測:線性斜坡的真值為 82 —— 窗口網格只有 19 行,小數部只能離散地出現)。因此請與同一輸入的真值對比來解讀 c0。

決定性的診斷另有其法 —— 把均勻平移的小數部從 0 變到 0.9,看估計值是否落在對角線上。實測(win=32、density 0.02):

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

估計法 小數部誤差的 RMS 最大絕對誤差

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

gauss3 0.0037 px 0.0088 px

parabolic 0.0104 px 0.0151 px

centroid 0.2259 px 0.3701 px

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

centroid 把真值 0.1 答成 0.02,0.9 答成 0.98 —— 拉向整數的教科書式 S 形。這是確認該出現的東西出現了,而不是實作的缺陷(所以 3 種都保留著)。

Args:

flow: (2, h, w)。

bins: 小數部直方圖的組數。

Returns:

dict: c0(兩分量合併的指標)、hist((2, bins))、

frac_mean / frac_std、bins。

詳細使用指南

• 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

• poc_battery_electrode_breathing — py -3.11 examples/poc_battery_electrode_breathing.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

—

同類別(assess)

piv_sample_at_windows · piv_error_stats · piv_time_statistics


*Provenance: pivops.py — PIV 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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