piv_streamlines — PIV visualise op

• Datenarten: flow2d → table

• Aufruf: 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) (die Implementierung direkt: import pivops; pivops.piv_streamlines(flow, seeds=None, separation=None, step=0.25, max_length=None, min_speed=0.001, test_ratio=0.5); aus dem Register: opspiv.get("piv_streamlines"))

Verwendung

Verfolgt Stromlinien mit RK4 (entspricht MATLABs stream2 / streamslice).

Ohne seeds werden die Startpunkte automatisch mit gleichabständiger Platzierung nach Jobard–Lefer (1997) gesetzt. Stromlinien verlaufen in Abständen von etwa separation und werden dort abgeschnitten, wo sie näher als test_ratio * separation kommen. Pfeildiagramme verklumpen, wenn sie dicht sind, und von Hand gesetzte Startpunkte hinterlassen Lücken, diese Platzierung aber erzeugt weder Lücken noch Überlappungen (die 2 Eigenschaften unten dienen als Gates).

• Abtastpunkte verschiedener Stromlinien kommen einander nie näher als test_ratio * separation.

• Jeder Gitterpunkt mit Geschwindigkeit mindestens min_speed liegt innerhalb von separation irgendeiner Stromlinie (nichts ausgelassen).

Koordinaten liegen auf dem Gitter von flow (Zeile 0 oben, (row, col)). Das Richtungsfeld wird durch die Geschwindigkeit geteilt und schreitet nach Bogenlänge fort, daher ist 1 Schritt step Gittereinheiten. Die Geschwindigkeit wird für jeden Punkt der Stromlinie separat geliefert.

Args:

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

seeds: (row, col) der Form (n, 2). None setzt sie automatisch.

separation: Abstand der Stromlinien [Gitter]. None ergibt max(h, w) / 25 (mindestens 2).

step: 1 Schritt von RK4 [Gitter].

max_length: maximale Länge in eine Richtung [Gitter]. None ergibt 4 * (h + w).

min_speed: dort anhalten, wo es langsamer ist (Verhältnis zur maximalen Geschwindigkeit).

test_ratio: Abbruchabstand als Vielfaches von separation (0 < x ≤ 1).

Returns:

dict(table): paths (list aus (m_i, 2), geordnet stromaufwärts → stromabwärts),

speed (list der Geschwindigkeiten je Punkt), seeds, stop (list der Grundpaare

(rückwärts, vorwärts)), n, separation, d_test, step,

stop_counts (Anzahl je Grund).

Raises:

ValueError: Form / nicht-endliche Werte von flow, Parameter außerhalb des Bereichs, Startpunkte außerhalb des Gitters.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie piv_displacement

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• piv_field_analysis_tour — py -3.11 examples/piv_field_analysis_tour.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

—

Gleiche Kategorie (visualise)

piv_flow_to_rgbimage · piv_line_integral_convolution · piv_quiver · piv_streamline_image


*Provenance: pivops.py — PIV Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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