DeepLung代码复现(一)-------------数据预处理

本文是对论文:DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification中所开源的代码的复现。

代码地址:https://github.com/wentaozhu/DeepLung

拿到代码首先运行./DeepLung-master/prepare.py进行数据预处理,将config_training.py中的地址改为自己本地的地址即可运行成功。

预处理的工作是使用LUNA16数据集中所有的肺部数据 (mhd格式),肺实质分割数据(mhd格式),肺结节标签数据(csv格式)转换为numpy格式。转换后的文件存储在subset0~subset9中。

 每个文件夹中的每个case有6个对应的标签数据。_clean存储CT坐标(关于左边请参考上一篇文章)下裁剪肺实质的最大外接立方体后在扩充若干像素值的肺部数据,_extendbox存储肺实质的最大外接立方体扩充后的box,_label存储CT坐标下的肺结节坐标及半径,_mask存储肺实质的二值图,_origin,_spacing存储CT坐标下的原点与像素间隔。

 预处理的重点函数为:

def savenpy_luna(id, annos, filelist, luna_segment, luna_data,savepath):
    # 处理某个subset中的某个数据
    islabel = True
    isClean = True
    resolution = np.array([1,1,1])
#     resolution = np.array([2,2,2])
    name = filelist[id]
    # 读取CT图像并转换为numpy格式,在这个过程中直接把CT坐标下的图像转为图像坐标下
    # 这步要理解坐标的转换,否则对后面的理解会很有困难
    sliceim,origin,spacing,isflip = load_itk_image(os.path.join(luna_data,name+'.mhd'))

    Mask,origin,spacing,isflip = load_itk_image(os.path.join(luna_segment,name+'.mhd'))
    if isflip:
        Mask = Mask[:,::-1,::-1]
    # CT坐标下的图像大小 单位是mm
    newshape = np.round(np.array(Mask.shape)*spacing/resolution).astype('int')
    # 0代表背景 3代表左肺 4代表右肺 5代表血管
    m1 = Mask==3
    m2 = Mask==4
    # 左肺右肺掩膜
    Mask = m1+m2
    # Mask中为True的三维坐标 索引,也就是肺实质的范围索引
    xx,yy,zz= np.where(Mask)
    # 含有肺实质的最小外接立方体
    box = np.arra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值