影像组学分析过程中,最大ROI层面的统计

获取肿瘤的最大层面

影像组学分析过程中,有时候会进行最大层面的计算。
本文记录我的计算ROI最大层面的思路,供大家参考。
因为代码是我自己摸索写出,如果其中有什么疑问或者觉得代码有什么问题的, 请私信,以便修正。

思路

ROI是N×M×H的矩阵,里面只有0和1,先统计每个层面的0和1的数目。
然后比较每个层面的1的大小,1最多的就是最大ROI层面。
具体操作如下:

import SimpleITK as sitk

mask_img = sitk.ReadImage(img_path)
mask_img_arr = sitk.GetArrayFromImage(mask_img)

all_slice_lable_count = cal_ROI_counter(mask_img_arr) # 输入mask_img_arry,获取每个层面的不同label的面积值

max_value = -1 # 最大ROI的lable值
max_area = 0 # 最大ROI的面积
max_id = 1314 # 最大ROI的index
for i in range(len(all_slice_lable_count)):
    if all_slice_lable_count[i]:   
        temp_area = max(all_slice_lable_count[i].values())
        temp_value = max(all_slice_lable_count[i], key=all_slice_lable_count[i].get)
        if temp_area >= max_area:
            max_area = temp_area
            max_value = temp_value
            max_id = i
    else:
        continue

获取肿瘤的最大层面,max_id是最大ROI的index

# 获取肿瘤的最大层面,max_id是最大ROI的index
return mask_img_arr,max_value,max_id,max_area

相关函数定义区

def cal_ROI_counter(mask_img_arr): # 输入mask_img_arry,获取每个层面的不同label的面积值
    all_slice_lable_count = []
    for i in range(mask_img_arr.shape[0]):
        dc = dict(Counter(mask_img_arr[i,:,:].flatten()))
        del dc[0]
        all_slice_lable_count.append(dc)
    return all_slice_lable_count

PS:如果有疑问和错误,请私信,但是苦逼上班族996,如果需要帮忙解决小白报错,求各位老板付费咨询,万分感谢!

你可能感兴趣的:(影像组学分析过程中,最大ROI层面的统计)