distance_ridge — 3D medial op

• 데이터 종류: voxel → voxel

• 호출: import fullseye as fs; fs.ledger.distance_ridge(vol, min_radius=0.0)(구현을 직접 호출하려면 import medial; medial.distance_ridge(vol, min_radius=0.0), 원장에서 가져오려면 ops3d.get("distance_ridge"))

• 원장 경유의 반환값: fullseye.ledger.distance_ridge(...) 는 선언된 out 형 voxel 의 값만 반환합니다(실제 함수는 보조 정보도 반환). 버려진 쪽이 필요하면 fullseye.ledger.distance_ridge.raw(...) 를 쓰거나 medial.distance_ridge 를 직접 호출하세요.

• 실제 반환: (ridge, dist)

사용법

EDT 의 능선(거리장의 국소 최대)을 medial 로 추출. 반환값 (ridge_mask, edt).

각 전경 voxel의 EDT를 계산하고, 26 근방의 국소 극대(자신의 EDT가 주위 26 voxel의 최댓값 이상)를 medial로 본다. 이 기준은 물체의 국소 차원에 따라 자연스럽게 차원을 구분해 낸다:

덩어리(구) -> EDT가 단봉 -> 점 모양 medial(중심 1점).

관(원기둥)-> 축 방향으로 평탄, 반지름 방향으로 단봉 -> 선 모양 medial(축선).

판(슬래브)-> 면 안에서 평탄, 두께 방향으로 단봉 -> 면 모양 medial(중심면).

경계 voxel은 안쪽 이웃이 반드시 크기 때문에 극대가 되지 않아 외곽 껍질은 자연스럽게 제거된다. 평탄한 능선(축/면)은 같은 값의 이웃을 허용(>=)함으로써 연속된 선/면으로 남는다.

Args:

vol: 이진 voxel(bool / 0-1의 3D).

min_radius: 이 EDT 값 이하의 약한 능선을 버리는 임계값(기본값 0 = 버리지 않음). 잡음 억제용.

Returns:

ridge_mask (bool 3D): medial voxel.

edt (float64 3D): 각 voxel에서 배경까지의 유클리드 거리(= 국소 반지름).

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• pcl_geodesic — py -3.11 examples_3d/pcl_geodesic.py

타입이 이어지는 다음 연산자(voxel 를 입력으로 받는 것)

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

같은 카테고리(medial)

skeletonize_vol · 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.