vol_label_shape_stats — VOLCOLOR measure op

• 데이터 종류: labels → table

• 호출: import fullseye as fs; fs.ledger.vol_label_shape_stats(labels, spacing=None, shape: 'bool' = True)(구현을 직접 호출하려면 import volcolor; volcolor.vol_label_shape_stats(labels, spacing=None, shape: 'bool' = True), 원장에서 가져오려면 opsvolcolor.get("vol_label_shape_stats"))

• GPU: 없음(CPU 참조 구현만)

사용법

성분별로 선형 시간에 낼 수 있는 정량값(부피·무게중심·박스·주성분 형상 지표).

volops.vol_region_props의 자매이지만 목적이 다르다:

• 우리는surface_area ''와 Wadellsphericity ''를 발행합니다. 이를 위해각 구성 요소에 대해 marching cubes를 돌리므로 구성 요소 수에 비례하여 Python 루프가도는 (1 복셀 1 라벨의 병적 입력으로 빠르게 무거워진다).

• 이것은 "np.bincount"의 가중치 합계만으로 끝나는 양에 한합니다. 라벨 배열 1개당 10 회의 "bincount"(개수 1, 좌표 합계 3, 공분산 6) = O(N + n). 실측 (connectivity = 26 '', 1 복셀 1 라벨 체크 무늬 = 병적 입력):

163 = 4096 복셀 / 512 성분 = 0.0037 s, 323 = 32768 / 4096 =

0.0350s, 643=262144/32768=0.2556s, 1283=2097152/262144=

2.3122 초. 복셀 8배마다 9.5/7.3/9.0배(2차라면 64배)로,

전역에서 약 1.1 마이크로초/복셀. 동일한 1283 색칠은 0.0357 s.

(참고 : "volops.vol_region_props (surface = "faces")""는 동일한 16 3입니다.

0.0121 s - 구성 요소 당 Python 루프가있는 3.5 배. marching cubes 을

사용하는 기본 surface="auto"는 더 무겁습니다. )

"label", "voxel_count", "volume", "centroid", "bbox"의 다섯 가지 volops.vol_region_props 와 동일한 정의·동일한 값(tests/test_volcolor.py :: test_stats_agree_with_vol_region_props_exactly 엄격한 일치로 고정). bbox는 (z0, z1, y0, y1, x0, x1)로 상한은 배타적.

덧붙여 돌려주는 것:

centroid_mm '',(z, y, x) ''물리적 좌표 (spacing이 없다면 voxel과 동일)

extent ''bbox의 물리적 치수(dz, dy, dx) '',equivalent_diameter ''

"(6V / pi) (1/3)"

principal_extent ''공분산 고유 값의 제곱근(s1> = s2> = s3)(물리적 단위) ·

linearity ''(l1-l2) / l1 '',planarity ''(l2-l3) / l1 ''

l3/l1'' · elongation'' sqrt(l1/l2).

elongation ''은 무한할 수 있습니다 (계약) :l1> 0 ''및l2 == 0 '', 즉 두께 1 복셀의 완전한 직선의 성분에서는 「inf」를 돌려준다. 0으로 나눈 사고대신 "제 2 축 방향으로 퍼짐이 없다"는 사실이며, 반올림하면 가늘기의 순위가조용히 바뀐다. 단일 복셀 (l1 == 0)은 등방 점이므로 1.0.

spacing 을 건네주고 잊으면 숫자도 결론도 바뀐다. 실측 ―― 반경 6mm의 구를 spacing = (3.0, 1.0, 1.0) mm의 이방 격자 (z 만 3 배 거친)로 표본화하면 293 복셀이 된다. 닫힌 형식의 참값은 "4/3 pi 63 = 904.78 mm3":

• "spacing" 예 = 879.0 mm3(오차 -2.85 %), isotropy = 0.7349 (거의 등방 = 정확).

• spacing'' 없음 = 293.0(voxel 단위. mm3 라고 읽으면 오차 -67.62 %), isotropy = 0.0817 ―― 구가 「판」으로 보인다. 이방성을 무시하면형상 지표는 파탄하고 유한하고 합리적인 값으로 반환됩니다.

• 등가 직경도 11.8849 mm 대 8.2406 과 1.44 배 어긋난다.

수치상의주의 : 2 차 모멘트는E [x 2] - E [x] 2 ''로 구하기 때문에 좌표가

크게 퍼짐이 작은 성분에서는 자릿수 떨어지는 일이 생길 수 있다. 상한 : data :MAX_COLOR_VOXELS

(1 변 ~ 2000까지)에서는 "E [x 2] ~ 4e6"에 대해 float64의 상대 정밀도 1e-16 = 절대 1e-10 으로, 복셀 단위의 분산에 대해 10 자리수의 여유가 있다. 그것보다 큰볼륨은 ROI를 자르고 나서 전달하는 것(상한이 있는 것은 이 때문에이기도 하다).

*shape*를 "False"로 설정하면 공분산(10개 중 6개의 bincount)을 생략하고, principal_extent ''아래 5 개 항목을 반환하지 않습니다. - 볼륨 필터 만 필요합니다. 때때로 O(N)의 임시 배열을 1개로 줄일 수 있다.

Returnslist[dict] in ascending label order (실제 라벨만 ―― 번호에 결번이 있어도, labels.max() 빈 dict 는 돌려주지 않는다).

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

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

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

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

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

• poc_cold_chain_excursion — py -3.11 examples/poc_cold_chain_excursion.py

• voxel_labels_color — py -3.11 examples/voxel_labels_color.py

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

—

같은 카테고리(measure)

vol_label_legend


*Provenance: volcolor.py — VOLCOLOR 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.