medial op• 데이터 종류: voxel → voxel
• 호출: import fullseye as fs; fs.ledger.skeletonize_vol(vol)(구현을 직접 호출하려면 import medial; medial.skeletonize_vol(vol), 원장에서 가져오려면 ops3d.get("skeletonize_vol"))
3D 이진 voxel 을 세선화해 1 voxel 폭 골격으로. skimage 의 Lee(1994) 법 래퍼.
method='lee'는 3D를 지원하는 위상 보존 세선화. 덩어리까지 포함해 선 모양 골격으로 압축한다(medial *surface*가필요하면 distance_ridge를 사용). 반환값은 입력과 같은 형상의 bool 배열.
Args:
vol: 이진 voxel(bool / 0-1의 3D).
Returns:
skeleton (bool 3D): 골격 voxel.
입력 처리: _as_binary_volume이 3-D 배열을 bool로 정규화한다(0이 아님 = 전경). 3-D가 아니거나, 빈 배열이거나, NaN/Inf를 포함한 float이면 ValueError. 축 순서는 (z, y, x), 거리와 굵기는 voxel 단위이며 등방 샘플링을 가정한다(비등방 voxel 그대로면 세선화 결과가 축마다 치우친다. 먼저 vol_resize로 등방화한다).
동작:
• 전경이 없으면 모두 False인 같은 형상의 배열을 반환한다(skimage는 호출하지 않음).
• skimage.morphology.skeletonize(mask, method="lee")는 지연 import. scikit-image가 없는 환경에서는 여기서 ImportError가 된다.
• Lee 법은 위상을 보존하지만(연결 성분 수, 구멍, 빈 공간을 바꾸지 않음), 굵은 덩어리는 여러 가지로압축되고, 표면의 요철에 따라 수염(짧은 가지)이 생긴다. 수염은 skeleton_prune3d로잘라낸다.
사용처: topology_signature(끝점, 분기의 수), skeleton_junctions3d / skeleton_endpoints3d / skeleton_branches3d의 입력. 골격 voxel의 국소반지름이 필요하면 골격 위치에서 distance_ridge의 edt를 조회한다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• medial_topology — py -3.11 examples_3d/medial_topology.py
voxel 를 입력으로 받는 것)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
medial)distance_ridge · medial_axis_points · topology_signature · medial_match · skeleton_junctions3d · skeleton_endpoints3d · skeleton_prune3d · skeleton_branches3d
*Provenance: medial.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.