Source code for oncoprep.utils.labels
# Split multi-label seg into per-label binary masks so each region
# gets its own distinct contour instead of nested isocontour lines.
[docs]
def split_seg_labels(seg_file):
"""Split multi-label segmentation into per-label binary masks.
BraTS old labels: 1=NCR, 2=ED, 3=ET, 4=RC.
Returns one binary NIfTI per label in a fixed order so that the
colour mapping in ``TumorROIsPlot`` stays consistent.
"""
import os
import nibabel as nib
import numpy as np
img = nib.load(seg_file)
data = img.get_fdata()
expected_labels = [1, 2, 3, 4]
mask_files = []
for label in expected_labels:
mask_data = (data == label).astype(np.uint8)
mask_img = nib.Nifti1Image(mask_data, img.affine, img.header)
out_path = os.path.abspath(f'label_{label}.nii.gz')
nib.save(mask_img, out_path)
mask_files.append(out_path)
return mask_files