piv_streamlines — PIV visualise op

• 資料種類:flow2d → table

• 呼叫: import fullseye as fs; fs.ledger.piv_streamlines(flow, seeds=None, separation=None, step=0.25, max_length=None, min_speed=0.001, test_ratio=0.5)(要直接呼叫實作,import pivops; pivops.piv_streamlines(flow, seeds=None, separation=None, step=0.25, max_length=None, min_speed=0.001, test_ratio=0.5);從台帳取用則 opspiv.get("piv_streamlines"))

用法

以 RK4 追蹤流線(相當於 MATLAB 的 stream2 / streamslice)。

省略 seeds 時,以 Jobard–Lefer(1997)的等間距配置自動放置種子。流線彼此以約 separation 的間隔排列,在比 test_ratio * separation 更近處截斷。箭頭圖畫密了會擠成一團,手動放種子會留下空白,而這種配置既不產生空白也不產生重疊(以下面 2 個性質作為門檻)。

• 不同流線的取樣點之間不會比 test_ratio * separation 更近。

• 速度在 min_speed 以上的任何網格點,都在某條流線的 separation 以內(沒有遺漏)。

座標是 flow 的網格(列 0 在上,(row, col))。方向場除以速度後 依弧長前進,因此 1 步為 step 個網格。速度在流線上各點另行回傳。

Args:

flow: (2, h, w)(dy, dx)。

seeds: (n, 2) 的 (row, col)。None 為自動配置。

separation: 流線的間隔 [網格]。None 為 max(h, w) / 25(2 以上)。

step: RK4 的 1 步 [網格]。

max_length: 單方向的最大長度 [網格]。None 為 4 * (h + w)。

min_speed: 比這更慢之處停止(相對最大速度的比值)。

test_ratio: 截斷距離取 separation 的幾倍(0 < x ≤ 1)。

Returns:

dict(table):paths((m_i, 2) 的 list,上游 → 下游的順序)、

speed(各點速度的 list)、seeds、stop((後, 前) 的

理由組的 list)、n、separation、d_test、step、

stop_counts(各理由的數量)。

Raises:

ValueError: flow 的形狀、非有限、參數超出範圍、種子在網格之外。

詳細使用指南

• 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

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

—

同類別(visualise)

piv_flow_to_rgbimage · piv_line_integral_convolution · piv_quiver · piv_streamline_image


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

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