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.