医学图像分割

医学图像分割

  • 1、用于分割的数据集
  • 2、关于分割的论文介绍
    • 2.1 nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation
    • 2.2 使用nnunet,对于自己数据的数据预处理

1、用于分割的数据集

数据集:CTPelvic1K Dataset

关于CTPelvic1K Dataset数据集的介绍:ICT-MIRACLE-lab/CTPelvic1K
如果使用CTPelvic1K dataset 需要引用论文:Deep Learning to Segment Pelvic Bones: Large-scale CT Datasets and Baseline Models。

Pengbo Liu, Hu Han, Yuanqi Du, Heqin Zhu, Yinhao Li, Feng Gu, Honghu Xiao, Jun Li, Chunpeng Zhao, Li Xiao, Xinbao Wu, 
S.Kevin Zhou. Deep Learning to Segment Pelvic Bones: Large-scale CT Datasets and Baseline Models. arXiv: 2012.08721 (2020).

医学图像分割_第1张图片
图像数据大致如下,包括原始数据与标注信息。
医学图像分割_第2张图片
标注信息如下(样本集7中的标注):
标注文件格式“.nii.gz”,3D标注信息中的 左髋灰度值(175,175,175),骶骨灰度值(85,85,85),脊椎和右髋骨灰度值(255,255,255).
医学图像分割_第3张图片

2、关于分割的论文介绍

2.1 nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation

简介:Nat Methods | nnU-Net:基于深度学习自动配置的医学图像分割方法
文章通过医学分割的数据集开发了一个基于深度学习的分割方法:nnU-Net,能够对任意的新数据集进行自动配置,并通过不同的数据集对该方法进行验证。
医学图像分割_第4张图片
德国海德堡的研究团队Fabian Isensee等人在《Nature Methods》上发表了一篇名为“nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation”的文章。文中开发了一种基于深度学习的自动配置分割方法,包括预处理、网络架构、训练和任何新任务的后处理。在这个过程中的关键设计选择被建模为一组固定的参数,相互依赖的规则和经验决策。nnU-Net作为一种开源工具,在国际生物医学细分竞赛中提供了高度专业化的解决方案,可以不需要专家知识或计算资源超出标准的网络培训,呈现最先进的分割,提供更广泛的服务和应用。

2.2 使用nnunet,对于自己数据的数据预处理

使用simpleitk转变成nnunet可识别的nii.gz格式

import cv2
import SimpleITK as sitk
import matplotlib.pyplot as plt
import numpy as np
import os
#

train_path = 'subset0'
label_path = 'seg-lungs-LUNA16'
paths = os.listdir(train_path)
lpaths = os.listdir(label_path)
#print(paths)


def Md_image(data):

    # 获取图像参数信息
    messagesize = data.GetSize()

    spacing = data.GetSpacing()
    # print("Image spacing:", spacing)
    direction = data.GetDirection()
    # print("Image direction:", direction)
    origin = data.GetOrigin()
    # print("Image origin:", origin)

    # Numpy矩阵数据转成SimpleITK图像数据
    a = sitk.GetArrayFromImage(data)
    a[a==3]=1
    a[a==4]=2
    a[a==5]=3
    image_a = sitk.GetImageFromArray(a)
    image_a.SetOrigin(origin)
    image_a.SetSpacing(spacing)
    image_a.SetDirection(direction)
    return image_a



for i, path in enumerate(paths):
    if path.find('mhd')>=0:
        # 训练集部分
        data = sitk.ReadImage(os.path.join(train_path,path))  # 读取每一个mhd

        # 标签部分
        ldata = sitk.ReadImage(os.path.join(label_path,path))
        ldata_images = Md_image(ldata)
        # 存入不同文件夹
        i=int(i/2)
        #sitk.WriteImage(data, 'imagesTr/'+str(i)+'_0000.nii.gz') # _0000是ct模式的格式
        sitk.WriteImage(ldata_images, 'labelsTr/' + str(i) + '.nii.gz')
        print(i)



参考:nnUNet(代码)-预处理

参考:

你可能感兴趣的:(GAN,UNet,深度学习,医学图像)