獲取腫瘤的最大層面
影像組學分析過程中详民,有時候會進行最大層面的計算延欠。
本文記錄我的計算ROI最大層面的思路,供大家參考沈跨。
因為代碼是我自己摸索寫出由捎,如果其中有什么疑問或者覺得代碼有什么問題的, 請私信饿凛,以便修正狞玛。
思路
ROI是N×M×H的矩陣,里面只有0和1笤喳,先統(tǒng)計每個層面的0和1的數(shù)目。
然后比較每個層面的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
相關函數(shù)定義區(qū)
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,如果需要幫忙解決小白報錯上煤,求各位老板付費咨詢休玩,萬分感謝!