contour op• Datenarten: image2d × pairs → table
• Aufruf: import fullseye as fs; fs.ledger.snake_evolve(image, init_points, *, alpha: 'float' = 0.1, beta: 'float' = 0.1, gamma: 'float' = 1.0, external: 'str' = 'edge', w_line: 'float' = 0.0, w_edge: 'float' = 1.0, sigma: 'float' = 1.0, kappa: 'float' = 1.0, gvf=None, gvf_mu: 'float' = 0.2, max_px_move: 'Optional[float]' = None, n_iter: 'int' = 300, spline_order: 'int' = 3, tol: 'float' = 0.0, resample_every: 'int' = 0, record_every: 'int' = 0) -> 'Dict[str, object]' (die Implementierung direkt: import segcontour; segcontour.snake_evolve(image, init_points, *, alpha: 'float' = 0.1, beta: 'float' = 0.1, gamma: 'float' = 1.0, external: 'str' = 'edge', w_line: 'float' = 0.0, w_edge: 'float' = 1.0, sigma: 'float' = 1.0, kappa: 'float' = 1.0, gvf=None, gvf_mu: 'float' = 0.2, max_px_move: 'Optional[float]' = None, n_iter: 'int' = 300, spline_order: 'int' = 3, tol: 'float' = 0.0, resample_every: 'int' = 0, record_every: 'int' = 0) -> 'Dict[str, object]'; aus dem Register: opssegmentation.get("snake_evolve"))
Semi-implizites Update der diskreten Snake (Kass–Witkin–Terzopoulos 1988): x_t = (A + γI)^(-1)(γ x_(t-1) − f_x) (Gl. (19)(20)) (snake_evolve).
Punkte init_points (N, 2) = [row, col] einer geschlossenen Snake (periodischer Rand), N ≥ 5. Innere Energie E_int = ½ Σ (α |v_(i+1) − v_i|² + β |v_(i+1) − 2v_i + v_(i−1)|²) = ½ xᵀ A x (implizit). Die äußere Kraft (explizit) wird mit external gewählt:
"edge" = Potenzial P = w_line · G_σ*I + w_edge · |∇(G_σ*I)|², E_ext = −κ Σ P(v_i) (Kass' E_line und E_edge), "potential" = image direkt als P verwenden (um dasselbe P wie die 2. (unabhängige) Implementierung zu übergeben), "gvf" = die Kraft selbst ist −κ (v, u) (GVF; die Rückgabe von gvf_field an gvf übergeben oder intern mit gvf_mu erzeugen), "none" = äußere Kraft 0. P wird mit einem interpolierenden Spline der Ordnung spline_order (Werte und Ableitungen konsistent) an den Punktpositionen ausgewertet. Mit max_px_move wird die Bewegung pro 1 Iteration auf max_px_move · tanh(Δ) begrenzt (wie skimage; die Eigenschaft des proximalen Gradienten geht verloren). Bei resample_every > 0 werden die Punkte alle k Iterationen nach Bogenlänge gleichabständig neu gesetzt (verhindert das Ausdünnen beim Eindringen in Konkavitäten; die Monotonie der Energie bricht in diesem Moment ab). Punkte werden auf den Bildbereich [0, H−1] × [0, W−1] begrenzt.
Rückgabewert: points (N, 2), mask (Inneres der Polylinie), energy / energy_internal / energy_external (pro Iteration, erster Eintrag = Anfang; bei GVF ist die äußere Energie nicht definiert, daher sind total und external NaN), n_increase (Anzahl der Iterationen, in denen die Energie stieg, None bei GVF), max_increase, lipschitz (Maximum über das Gitter der Spektralnorm der Hesse-Matrix von κP = Schätzung der Lipschitz-Konstante des Gradienten der äußeren Kraft), gamma_ge_lipschitz (bei γ ≥ L garantiert das Abstiegslemma monotones Nicht-Wachsen), radius_factor (geschlossene Form der Schrumpfung γ/(γ + λ_1) eines Kreises in 1 Iteration bei äußerer Kraft 0), history (Punkte alle record_every), n_iter, converged.
• Leitfaden zur Familie halcon_segmentation
• active_contours_and_level_sets — Variationelle und aktive Konturen, Level-Sets — welche Kontur wo stoppt und was sie garantiert
• 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.
• poc_active_contours — py -3.11 examples/poc_active_contours.py
table als Eingabe)contour)gvf_field · chan_vese_energy · chan_vese_evolve · morph_chan_vese · morph_geodesic_ac · edge_stop_g · level_set_reinit · drle_evolve
*Provenance: segcontour.py — SEGMENTATION 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.