skeleton_branches3d — 3D medial op

• Datenarten: voxel → voxel

• Aufruf: import fullseye as fs; fs.ledger.skeleton_branches3d(vol, min_length=0) (die Implementierung direkt: import medial; medial.skeleton_branches3d(vol, min_length=0); aus dem Register: ops3d.get("skeleton_branches3d"))

Verwendung

Zerschneidet ein 3-D-Skelett an seinen Knoten in Äste (Segmente). Die 3-D-Version des 2-D-r2_split_skeleton_lines.

Was nach Entfernen der Verzweigungspunkt-Voxel übrig bleibt, sind die Äste. Bei min_length > 0 werden Fragmente entfernt, deren 26-Zusammenhangskomponente weniger Voxel als diesen Wert hat.

Ablauf: mit _ensure_skeleton in bool umwandeln (bei Inneres-Voxeln mit skeletonize_vol ausdünnen) → Voxel mit Grad >= 3 in der 26-Nachbarschaft (Verzweigungspunkte) entfernen → bei min_length > 0 mit scipy.ndimage.label (3x3x3-Struktur aus lauter 1 = 26-Zusammenhang) in Komponenten zerlegen und Komponenten mit weniger Voxeln als min_length verwerfen.

Rückgabewert: bool-Array derselben Form wie die Eingabe (Ast-Voxel = True). Labels pro Ast werden nicht zurückgegeben — um Äste einzeln zu behandeln, den Rückgabewert durch vol_label(branches, 26) schicken (Anzahl der Komponenten = Anzahl der Äste). Die Verzweigungspunkt-Voxel selbst sind nicht im Ergebnis enthalten, daher enden beide Enden eines Astes 1 Voxel vor dem Verzweigungspunkt.

Argumente und Prüfung: min_length ist eine Voxelanzahl (mit int() abgeschnitten; bei 0 wird nichts entfernt). Eingabe kein 3-D, leer oder NaN/Inf ergibt ValueError. Ist eine Ausdünnung nötig und fehlt scikit-image, ImportError. Ohne Vordergrund komplett False.

Hinweis: Der Grad in der 26-Nachbarschaft erreicht an Verzweigungen durch diagonale Nachbarschaft leicht 3 oder mehr, und Verzweigungspunkte werden als Klumpen aus mehreren Voxeln entfernt, daher können Äste kürzer als in Wirklichkeit erscheinen. Ein Skelett nur aus geschlossenen Schleifen hat keine Verzweigungspunkte, und das Ganze bleibt als 1 Ast erhalten.

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.

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

• medial_topology — py -3.11 examples_3d/medial_topology.py

Typkompatible Folge-Operatoren (nehmen voxel als Eingabe)

voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa

Gleiche Kategorie (medial)

distance_ridge · skeletonize_vol · medial_axis_points · topology_signature · medial_match · skeleton_junctions3d · skeleton_endpoints3d · skeleton_prune3d


*Provenance: medial.py — 3D 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.