Spaces:
Sleeping
Sleeping
| # 104 Anatomical Structure Labels for TotalSegmentator / MONAI wholeBody_ct_segmentation | |
| # Based on TotalSegmentator v1 class definitions | |
| LABEL_NAMES = { | |
| 0: "background", | |
| 1: "spleen", | |
| 2: "kidney_right", | |
| 3: "kidney_left", | |
| 4: "gallbladder", | |
| 5: "liver", | |
| 6: "stomach", | |
| 7: "aorta", | |
| 8: "inferior_vena_cava", | |
| 9: "portal_vein_and_splenic_vein", | |
| 10: "pancreas", | |
| 11: "adrenal_gland_right", | |
| 12: "adrenal_gland_left", | |
| 13: "lung_upper_lobe_left", | |
| 14: "lung_lower_lobe_left", | |
| 15: "lung_upper_lobe_right", | |
| 16: "lung_middle_lobe_right", | |
| 17: "lung_lower_lobe_right", | |
| 18: "vertebrae_L5", | |
| 19: "vertebrae_L4", | |
| 20: "vertebrae_L3", | |
| 21: "vertebrae_L2", | |
| 22: "vertebrae_L1", | |
| 23: "vertebrae_T12", | |
| 24: "vertebrae_T11", | |
| 25: "vertebrae_T10", | |
| 26: "vertebrae_T9", | |
| 27: "vertebrae_T8", | |
| 28: "vertebrae_T7", | |
| 29: "vertebrae_T6", | |
| 30: "vertebrae_T5", | |
| 31: "vertebrae_T4", | |
| 32: "vertebrae_T3", | |
| 33: "vertebrae_T2", | |
| 34: "vertebrae_T1", | |
| 35: "vertebrae_C7", | |
| 36: "vertebrae_C6", | |
| 37: "vertebrae_C5", | |
| 38: "vertebrae_C4", | |
| 39: "vertebrae_C3", | |
| 40: "vertebrae_C2", | |
| 41: "vertebrae_C1", | |
| 42: "esophagus", | |
| 43: "trachea", | |
| 44: "heart_myocardium", | |
| 45: "heart_atrium_left", | |
| 46: "heart_ventricle_left", | |
| 47: "heart_atrium_right", | |
| 48: "heart_ventricle_right", | |
| 49: "pulmonary_artery", | |
| 50: "brain", | |
| 51: "iliac_artery_left", | |
| 52: "iliac_artery_right", | |
| 53: "iliac_vena_left", | |
| 54: "iliac_vena_right", | |
| 55: "small_bowel", | |
| 56: "duodenum", | |
| 57: "colon", | |
| 58: "rib_left_1", | |
| 59: "rib_left_2", | |
| 60: "rib_left_3", | |
| 61: "rib_left_4", | |
| 62: "rib_left_5", | |
| 63: "rib_left_6", | |
| 64: "rib_left_7", | |
| 65: "rib_left_8", | |
| 66: "rib_left_9", | |
| 67: "rib_left_10", | |
| 68: "rib_left_11", | |
| 69: "rib_left_12", | |
| 70: "rib_right_1", | |
| 71: "rib_right_2", | |
| 72: "rib_right_3", | |
| 73: "rib_right_4", | |
| 74: "rib_right_5", | |
| 75: "rib_right_6", | |
| 76: "rib_right_7", | |
| 77: "rib_right_8", | |
| 78: "rib_right_9", | |
| 79: "rib_right_10", | |
| 80: "rib_right_11", | |
| 81: "rib_right_12", | |
| 82: "humerus_left", | |
| 83: "humerus_right", | |
| 84: "scapula_left", | |
| 85: "scapula_right", | |
| 86: "clavicula_left", | |
| 87: "clavicula_right", | |
| 88: "femur_left", | |
| 89: "femur_right", | |
| 90: "hip_left", | |
| 91: "hip_right", | |
| 92: "sacrum", | |
| 93: "face", | |
| 94: "gluteus_maximus_left", | |
| 95: "gluteus_maximus_right", | |
| 96: "gluteus_medius_left", | |
| 97: "gluteus_medius_right", | |
| 98: "gluteus_minimus_left", | |
| 99: "gluteus_minimus_right", | |
| 100: "autochthon_left", | |
| 101: "autochthon_right", | |
| 102: "iliopsoas_left", | |
| 103: "iliopsoas_right", | |
| 104: "urinary_bladder", | |
| } | |
| # Color map for visualization (RGB values) | |
| # Using a custom colormap for better visualization | |
| import numpy as np | |
| def get_color_map(): | |
| """Generate a color map for 105 classes (background + 104 structures)""" | |
| np.random.seed(42) # For reproducibility | |
| colors = np.zeros((105, 3), dtype=np.uint8) | |
| # Background is black | |
| colors[0] = [0, 0, 0] | |
| # Assign distinct colors to different organ categories | |
| # Organs (1-12): Warm colors | |
| organ_colors = [ | |
| [255, 99, 71], # spleen - tomato | |
| [255, 165, 0], # kidney_right - orange | |
| [255, 140, 0], # kidney_left - dark orange | |
| [50, 205, 50], # gallbladder - lime green | |
| [139, 69, 19], # liver - saddle brown | |
| [255, 192, 203], # stomach - pink | |
| [220, 20, 60], # aorta - crimson | |
| [0, 0, 139], # inferior_vena_cava - dark blue | |
| [138, 43, 226], # portal_vein_and_splenic_vein - blue violet | |
| [255, 215, 0], # pancreas - gold | |
| [255, 255, 0], # adrenal_gland_right - yellow | |
| [255, 255, 0], # adrenal_gland_left - yellow | |
| ] | |
| colors[1:13] = organ_colors | |
| # Lungs (13-17): Light blue shades | |
| colors[13:18] = [[135, 206, 235], [100, 149, 237], [30, 144, 255], [0, 191, 255], [70, 130, 180]] | |
| # Vertebrae (18-41): Gradient from red to purple | |
| for i in range(18, 42): | |
| colors[i] = [200 - (i-18)*5, 100, 150 + (i-18)*3] | |
| # Other structures (42-57): Various colors | |
| colors[42] = [255, 182, 193] # esophagus | |
| colors[43] = [176, 224, 230] # trachea | |
| colors[44:49] = [[220, 20, 60], [255, 105, 180], [255, 20, 147], [255, 182, 193], [199, 21, 133]] # heart | |
| colors[49] = [148, 0, 211] # pulmonary_artery | |
| colors[50] = [255, 218, 185] # brain | |
| colors[51:55] = [[178, 34, 34], [178, 34, 34], [70, 130, 180], [70, 130, 180]] # iliac vessels | |
| colors[55:58] = [[222, 184, 135], [210, 180, 140], [188, 143, 143]] # bowels | |
| # Ribs (58-81): Bone color variations | |
| for i in range(58, 82): | |
| colors[i] = [255, 250, 205 + (i-58) % 50] | |
| # Bones (82-92): Gray/white shades | |
| for i in range(82, 93): | |
| colors[i] = [220 + (i-82)*2, 220 + (i-82)*2, 220] | |
| # Face and muscles (93-103): Skin and muscle tones | |
| colors[93] = [255, 228, 196] # face | |
| for i in range(94, 104): | |
| colors[i] = [205, 92, 92 + (i-94)*5] # muscles - indian red variations | |
| # Bladder | |
| colors[104] = [255, 255, 0] # urinary_bladder - yellow | |
| return colors | |
| def get_label_name(label_id: int) -> str: | |
| """Get human-readable name for a label ID""" | |
| return LABEL_NAMES.get(label_id, f"unknown_{label_id}").replace("_", " ").title() | |
| def get_organ_categories(): | |
| """Group organs by category for UI display""" | |
| return { | |
| "Major Organs": [1, 2, 3, 4, 5, 6, 10, 104], | |
| "Cardiovascular": [7, 8, 9, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54], | |
| "Respiratory": [13, 14, 15, 16, 17, 43], | |
| "Digestive": [42, 55, 56, 57], | |
| "Vertebrae": list(range(18, 42)), | |
| "Ribs": list(range(58, 82)), | |
| "Upper Body Bones": [82, 83, 84, 85, 86, 87], | |
| "Lower Body Bones": [88, 89, 90, 91, 92], | |
| "Muscles": list(range(94, 104)), | |
| "Other": [11, 12, 50, 93], | |
| } | |