skeletonize_vol — 3D 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.