skeleton_prune3d — 3D medial op

• Datenarten: voxel → voxel

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

Verwendung

Beschneidet die Härchen (kurzen Äste) eines 3-D-Skeletts. Endpunktentfernung length-mal wiederholt = Äste der Länge <= length verschwinden.

3D-Version von pruning aus 2D. Isolierte Voxel gelten als Endpunkte und verschwinden.

Ablauf: mit _ensure_skeleton in bool umwandeln (bei Inneres-Voxeln mit skeletonize_vol ausdünnen), dann length-mal wiederholen: alle Voxel mit Grad <= 1 in der 26-Nachbarschaft (Endpunkte und isolierte Punkte) gleichzeitig entfernen. Wird das Skelett leer oder gibt es keine Endpunkte mehr (bleiben nur geschlossene Schleifen übrig), wird vorzeitig beendet.

Argumente: length wird mit int(length) umgewandelt und bei negativem Wert auf 0 gesetzt (bei 0 wird das ausgedünnte Skelett unverändert zurückgegeben). 1 Iteration entfernt das 1 Spitzen-Voxel jedes Astes, daher verschwinden Äste (Sporne) mit einer Länge von <= length Voxeln bis zur Wurzel.

Rückgabewert: bool-Array derselben Form wie die Eingabe.

Hinweise (Verhalten, das man kennen sollte):

• Auch lange Äste werden von der Spitze her um length Voxel kürzer (es ist kein Verfahren, das gezielt nur Sporne entfernt). Werden die Endpunktpositionen der Hauptäste gebraucht: Die Endpunkte nach dem Kappen liegen length weiter innen als die ursprünglichen Endpunkte.

• Ein kurzer Ast zwischen 2 Verzweigungen verschwindet nicht, da beide Enden Verzweigungspunkte sind (Grad >= 3).

• Isolierte Voxel verschwinden in der 1. Iteration.

• Der Grad wird in jeder Iteration neu gezählt, daher sind die Kosten proportional zu length.

Prüfung (ValueError): Eingabe kein 3-D, leeres Array oder mit NaN/Inf. Ist eine Ausdünnung nötig und fehlt scikit-image, ImportError. Nachgelagert: skeleton_endpoints3d / skeleton_junctions3d / skeleton_branches3d / topology_signature.

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_branches3d


*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.