medial op• Datenarten: voxel → voxel
• Aufruf: import fullseye as fs; fs.ledger.skeleton_junctions3d(vol) (die Implementierung direkt: import medial; medial.skeleton_junctions3d(vol); aus dem Register: ops3d.get("skeleton_junctions3d"))
Liefert die Knoten eines 3-D-Skeletts (drei oder mehr Skelettvoxel in der 26er-Nachbarschaft) als Voxelmaske.
Eingaben, die kein Skelett sind (Klumpen mit Innerem), werden vor der Messung mit skeletonize_vol ausgedünnt. 3D-Version von junctions_skeleton aus 2D. Dient dazu, Blutgefäße, poröse Medien und netzwerkartige Strukturen als Graph darzustellen (Knotenextraktion). Wenn nur die aggregierten Verzweigungsgrade gebraucht werden, liefert topology_signature sie als dict.
Achtung (honest): Der Grad in der 26-Nachbarschaft kann durch diagonale Nachbarschaft nahe Verzweigungen zu hoch ausfallen (bekannte Eigenschaft diskreter Skelette). Zum Zählen der *Anzahl* der Verzweigungen diese Maske zu Zusammenhangskomponenten zusammenfassen.
Ablauf: _ensure_skeleton wandelt die Eingabe in bool um; gibt es auch nur 1 Inneres-Voxel, dessen 6-Nachbarschaft (Flächennachbarn) vollständig Vordergrund ist, gilt die Eingabe als "kein Skelett", und zuerst wird skeletonize_vol (skimage-Lee-Verfahren) angewendet. Danach zählt eine Faltung mit einem 3x3x3-Kernel mit lauter Werten 1 (Mitte 0) (mode="constant", außen 0) die Skelett-Voxel in der 26-Nachbarschaft jedes Voxels (Grad), und skel & (Grad >= 3) wird zurückgegeben.
Rückgabewert: bool-Array derselben Form wie die Eingabe. Ohne Vordergrund komplett False. Alles außer Skelett-Voxeln ist immer False. Koordinaten in (z, y, x)-Reihenfolge erhält man mit np.argwhere.
Prüfung (ValueError): Eingabe kein 3-D, leeres Array oder float mit NaN/Inf. ImportError, wenn ohne scikit-image eine Ausdünnung nötig wird.
Hinweis: Die Prüfung auf Inneres läuft jedes Mal, auch bei Eingaben, die schon Skelette sind (bei einem dünnen Skelett wird die Ausdünnung übersprungen). Zum Zählen die Komponentenzahl von vol_label(mask, 26) verwenden. Aufteilen in Äste macht skeleton_branches3d, Endpunkte liefert skeleton_endpoints3d.
• 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.
• medial_topology — py -3.11 examples_3d/medial_topology.py
voxel als Eingabe)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
medial)distance_ridge · skeletonize_vol · medial_axis_points · topology_signature · medial_match · skeleton_endpoints3d · skeleton_prune3d · 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.