事情起因是:
用模型训练分割肝脏,效果还不错。但是训练分割肝脏肿瘤时,dice系数很低。由于已经经过ROI处理,和图像预处理过程,所以只可能是数据层面出现了问题。经过查看,发现很多ct图是即使用肉眼也无法分辨出肿瘤的。论文中给出的那种图片,肿瘤与肝脏对比度很高,但这种情况只是数据集中的少数。为了验证自己的想法,在LITS2017的数据集上,做出了130个病人对应的肝脏与肿瘤的hu直方图,发现果然如此。
但这样的话,论文里是如何获得那么好的结果的呢??
(更新:2019-4-2,已完成肿瘤分割实验,写在博客:医学图像分割 基于深度学习的肝脏肿瘤分割 实战(二) )
下面是代码,可以作为工具类使用:
import numpy as np
import SimpleITK as sitk
import matplotlib.pyplot as plt
onServer = False
if onServer:
niiSegPath = './LITS17/seg/'
niiImagePath = './LITS17/ct/'
else:
niiSegPath = '~/LITS17/seg/'
niiImagePath = '~/LITS17/ct/'
def getRangeImageDepth(image):
z = np.any(image, axis=(1,2)) # z.shape:(depth,)
#print("all index:",np.where(z)[0])
if len(np.where(z)[0]) >0:
startposition,endposition = np.where(z)[0][[0,-1]]
else:
startposition = endposition = 0
return startposition, endposition
"""
会画出每个病人肿瘤区域最大切片的直方图
与汇总的直方图
"""
total_liver = []
total_tumor = []
colors = ['b','g']
for i in range(0, 131, 1):
seg = sitk.ReadImage(niiSegPath+ "segmentation-" + str(i) + ".nii", sitk.sitkUInt8)
segimg