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 的形狀、非有限、參數超出範圍、種子在網格之外。
• 範例資料目錄(下載 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.