diagnose op• 데이터 종류: voxel → table
• 호출: import fullseye as fs; fs.ledger.vol_label_color_flicker(vol_binary, axis='z', seed: 'int' = 0, connectivity: 'int' = 26, connectivity_2d: 'int' = 8)(구현을 직접 호출하려면 import volcolor; volcolor.vol_label_color_flicker(vol_binary, axis='z', seed: 'int' = 0, connectivity: 'int' = 26, connectivity_2d: 'int' = 8), 원장에서 가져오려면 opsvolcolor.get("vol_label_color_flicker"))
「자르고 나서 색을 입힌다」와 「색을 입히고 나서 자른다」의 차이를 셉니다.
같은 2 값 볼륨에 대해 2 가지 절차를 밟는다:
A. 슬라이스마다 ―― 각 단면을 2-D 로 연결 성분 라벨링하고,
imgio.colorize_labels 와 같은 팔레트로 색을 칠한다.
단면마다 번호가 다시 매겨지므로 같은 부품이라도 층이 바뀌면 색이 바뀔 수 있다.
B. 볼륨에서 ―― volops.vol_label 로 라벨링한 다음
vol_colorize_labels 로 색을 칠하고, 나중에 자른다.
반환은 dict:
n_components 3-D 성분 수 · n_slices 단면 수 ·
slices_with_change A 에서 1 개 이상의 성분 색이 바뀐 단면의 개수 ·
changed_pairs A 에서 색이 바뀐 (성분, 단면) 쌍의 수 ·
changed_components A 에서 한 번이라도 색이 바뀐 성분 수 ·
volume_slices_with_change / volume_changed_pairs /
volume_changed_components B 의 같은 양(구조상 0) ·
pairs_checked 비교한 (성분, 단면) 의 총수 ·
flicker_rate changed_pairs / pairs_checked.
비교의 정의: 각 3-D 성분 c 에 대해, c 가 나타나는 첫 단면에서의 색을기준으로 하고, 이후 단면에서 c 화소의 최빈색이 기준과 다르면 1 건으로 센다(1 개의 3-D 성분이 1 단면에서 여러 2-D 조각으로 갈라질 수 있으므로 대표는최빈색. 같은 수인 경우는 RGB 사전순으로 작은 쪽 = 결정적).
실측((24, 48, 48) · 16 구의 참조 팬텀, seed=0, axis="z", connectivity=26 / connectivity_2d=8): pairs_checked=108, slices_with_change=20 / 24, changed_pairs=62(57.4 %), changed_components=16 / 16. B 쪽은 3 가지 모두 0 ―― 구조상 0 이지, 우연히 0 인 것이 아니다(라벨 번호가 볼륨 전체에서 유일하므로).
잘못된 볼륨, 알 수 없는 *axis*, 또는 6 / 18 / 26 (2-D: 4 / 8)이 아닌 *connectivity* 에 대해 ValueError 를 낸다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• voxel_labels_color — py -3.11 examples/voxel_labels_color.py
table 를 입력으로 받는 것)—
diagnose)—
*Provenance: volcolor.py — VOLCOLOR 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.