2D分割算法应用于医学影像3D图像

一、医学影像领域深度学习概念

1、模态:一种信息的来源或传播形式称为模态,比如嗅觉、听觉、雷达、红外等采集到的数据都不同模态。同时模态也有广泛定义,比如不同语言、不同情况所采集的数据等也称为不同模态。

2、多模态机器学习,英文全称 MultiModal Machine Learning (MMML),旨在通过机器学习的方法实现处理和理解多源模态信息的能力。目前比较热门的研究方向是图像、视频、音频、语义之间的多模态学习。医学图像具有多模态特点,多模态通俗地讲就是一个东西可以有多种不同的形态表现。
作用:单一的模式由于无法充分细分相关区域的肿瘤,常常会导致失败或是不足,利用不同的核磁共振成像模式,以效弥补上述弱点。多种模式图像信息能够有效互补,可以有效地提升分割的准确性,但是在一定程度上也增加了分割问题的难度,从多个模式中输入的图像信息,增加分割的必要信息,但同时增加大量不必要的信息,因此会加大分割问题的难度。

3、图像格式:
表1.常见的医学图像格式

名称文件扩展名分析软件及来源
Analyse.img/.hdrAnalyse软件,梅奥临床医学中心
DICOM.dcmACR/NEMA协会
NIFTI.nii或.img/.hdrNIH影像学信息工具倡议
MINC.mnc蒙特利尔神经学研究所(MNI,扩展名NetCDF)
AFNI brick.BRIKAFNI软件,威斯康星医学中心(NIHM)

1)DICOM格式:
通常,DICOM把每一层图像都作为一个独立的文件,这些文件用数字命名从而反映相对应的图像层数(在不同的系统有一定差异)。文件中包含文件头信息,且必须要特定的软件才能打开使用。在所有格式中,DICOM包含了大量的元数据信息在文件头中,包括仪器信息、图像采集参数以及病人信息资料。
尽管DICOM是MRI采集的标准输出格式,但是,数据分析前往往要把DICOM格式转化为其他分析格式,这主要是因为DICOM数据比较庞大。由于DICOM把每层图像都存储为独立文件,这会导致产生大量较小的数字文件,从而堵塞文件系统,降低分析速度。有很多免费工具可以把DICOM数据转换为其他存储格式。

2)Mosaic数据存储格式
有些MRI的脉冲序列(特别是西门子MRI系统)把fMRI的DICOM数据存储为Mosaic格式。这种格式中,每个图像文件中包含1个mosaic文件,而实际是16层的图像。该存储格式就节约了大量的存储空间。大多情况下,仪器生产商宁愿保存为256×256,而fMRI图像的矩阵为64×64。因此,分析前必须解压缩mosaic图像,使之成为三维或四维文件从而符合分析软件需要的格式。

3)Analyse格式
Analyze格式储存的每组数据组包含2个文件,一个为数据文件,其扩展名为.img,包含二进制的图像资料;另外一个为头文件,扩展名为.hdr,包含图像的元数据。在fMRI的早期,Analyze格式最常用的格式,但现在逐渐被NIfTI格式所取代。Analyze格式主要不足就是头文件不能真正反映元数据。

4)NIFTI(Neuroimaging Informatics Technology Initiative)格式
标准NIfTI图像的扩展名是.nii,包含了头文件及图像资料。由于NIfTI格式和Analyze格式的关系,因此NIfTI格式也可使用独立的图像文件(.img)和头文件(.hdr)。单独的.nii格式文件的优势就是可以用标准的压缩软件(如gzip),而且一些分析软件包(如FSL)可以直接读取和写入压缩的.nii文件(扩展名为.nii.gz),出现的原因是原来一种图像格式是ANALYZE 7.5 format,但是该图像格式缺少一些信息,比如没有方向信息(病人的左右方位)等;如果需要包括额外的信息,就需要一个额外的文件,比如ANALYZE7.5就需要一对<.hdr, .img>文件来保存图像的完整信息。

4、常用的医学影像图像
MRI:是核共振成像(MR Image),原理是施加一个磁场,让原子核和磁场的节拍动起来(共振),当磁场停下来的时候,原子核恢复常态,这个恢复的过程会以电磁波的形式释放能量,探头检测出这个能量,并用于成像。核磁共振是一种物理现象。磁共振成像(MRI)是利用收集磁共振现象所产生的信号而重建图像的成像技术。磁共振可以进行横断面、冠状面、矢状面及任意断面的图像观察。相比“CT”的断层扫描,“MRI”能获得多方位的原生三维断面成像。“MRI”对软组织的分辨力远非“CT”、“X线”可比,可用来观察神经、脊髓等椎管内软组织。

常用MRI序列概述:
T1加权成像(T1WI):T1、T2是用于测量电磁波的物理量,它们可以作为成像的数据.根据T1来成像的,就叫“T1加权成像(T1-weighted-imaging)”,临床工作中也经常简称“T1”,T2同理。
T1图像的整体感官跟“临床图像”的“习惯配色风格”非常接近,你看白质是白的,灰质是灰的,脑脊液是黑的.所以T1图像就可以看出各种断层解剖图。
T2信号跟水含量有关(而Flair是结合水)很多病灶的T2信号要强于周围的正常组织.而很多病变都伴随组织水肿.从下图中可以看到,非常白的是水肿,然后比较白的那块影影约约的就是病变(红色)的地方。
T1WI观察解剖好;T2WI有利于观察病变

FIAIR序列(Fluid Attenuation IR):(FLAIR序列是核磁共振(MR)的一种常用的序列,全称是液体衰减反转回复序列,也称为水抑制成像技术。通俗地说,它是压水像。在该序列上,脑脊液呈现低信号(暗一些),实质性病灶和含有结合水的病灶显示为明显的高信号(亮一些)。

t1ce序列要在做MR之前往血液打造影剂(颜料),亮的地方血供丰富,强化明显说明血流很丰富,什么地方需要血流很快呢?瘤嘛~它们不断分裂需要大量的营养. 下图所示, 蓝色区域是增强瘤(enhancing tumor),它环绕的里面绿色那些是坏疽(ju)(necrotic components),坏疽就是细胞坏死然后液化.所以这些坏疽还被被称为非增强瘤(non-enhancing tumor)。

STIR或FS序列:(脂肪抑制序列)
DWI序列:(弥散加权)
正常组织的MR信号特点:水、脑皮质、脑灰质、脂肪与骨髓组织、肌肉组织、骨骼组织、气体、血流

二、读取医学影像图像数据

读取扩展名为.nii.gz文件的图像:
方法一:使用nibabel包读取

import matplotlib
from matplotlib import pylab as plt
import nibabel as nib
from nibabel.viewers import OrthoSlicer3D
file = '' #你的nii或者nii.gz文件路径
img = nib.load(file)
print(img)
print(img.header['db_name']) #输出nii的头文件
width, height, queue = img.dataobj.shape
OrthoSlicer3D(img.dataobj).show()
num = 1
for i in range(0, queue, 10):
	img_arr = img.dataobj[:,:,i]
	plt.subplot(5,4,num)
	plt.imshow(img_arr, cmap='gray')
	num += 1
	plt.show()

方法二:SimpleITK读取医学图像 .nii 数据(2D显示)

import SimpleITK as sitk
import skimage.io as io
 
def read_img(path):
	img = sitk.ReadImage(path)
	#查看图片深度
	print(img.GetDepth())
	#查看Size
	print(img.GetSize())
	data = sitk.GetArrayFromImage(img)
	return data
#显示一个系列图
def show_img(data):
	for i in range(data.shape[0]):
		io.imshow(data[i,:,:], cmap = 'gray')
		print(i)
		io.show()
#单张显示
def show_img(ori_img):
	io.imshow(ori_img[100], cmap = 'gray')
	io.show()
#文件夹路径
path = './data.nii.gz'
data = read_img(path)
show_img(data)

三、通过数据集示例了解深度学校应用与医学影像

brats 2018中的训练集( training set) 有285个病例,每个病例有四个模态(t1、t2、flair、t1ce),需要分割三个部分:whole tumor(WT), enhance tumor(ET), and tumor core(TC);测试集(Validation set)每年都会有所变化,在这个数据集上能多次提交结果,测试不同的算法;验证集无GT。
MR图像属性信息:(240x240x155)一个MR序列有155张图片,每张图片的大小为240x240
brats 训练集( training set) 又划分为HGG和LGG,他们分别表示:
HGG :高级别胶质瘤(WHO3~4级)为低分化胶质瘤;这类肿瘤为恶性肿瘤,患者预后较差。
LGG :低级别胶质瘤(WHO1~2级)为分化良好的胶质瘤;虽然这类肿瘤在生物上并不属于良性肿瘤,但是患者的预后相对较好。
序列:在医学界把像 t1、t2、t1ce、flair这样的东东称为序列,一个病例的可以有多个序列,每个序列由许多切片组成, 此外,获得每种序列的方式不同,例如t1、t2是由于测量电磁波的物理量不同而产生的两种不同的序列,再例如t1ce序列要在做MR之前往血液打造影剂。

数据集规定, 图中绿色为浮肿区域(ED,peritumoral edema) (标签2)、黄色为增强肿瘤区域(ET,enhancing tumor)(标签4)、红色为坏疽(NET,non-enhancing tumor)(标签1)、背景(标签0)
在这里插入图片描述

四、数据预处理

对于3D影像图作3D图像分割:
1、人工加入5个黑色的切片。将四个模态图像(155,240,240)以及相应的Mask(155,240,240)的前面加入3个黑色切片后面加入2个,最后都变为(160,240,240)。为什么要这样做,因为在分块的时候有好处。其实也就是让黑色的背景多一点点;

2、标准化。BraTS采用了T1,T2,flair,T1ce这四个序列的MR图像,这四个序列是不同模态的图像,因此图像对比度也不一样,所以采用z-score方式来对每个模态图像分别进行标准化,图像减去均值除以标准差;

3、裁剪。BraTS MR图像灰色部分为脑部区域,黑色则为背景,背景信息在整幅图像中的比例较大,而且背景对于分割没有任何帮助。从医生角度来看这个MR图像,会自动过滤掉这个背景信息,把所有目光集中在脑部区域,因此去除脑部区域周围的背景信息是必要的。同时,裁剪后使得网络变得更小一点,提升网络的性能。我这里将原来大小为(160,240,240)裁剪为(160,160,160);

4、分块处理。由于内存显卡资源大小的限制图像不能完整地输入网络,所以需要对图像和相应的Mask进行分块处理。裁剪后的图像和Mask大小为(160,160,160),这里我的分块大小是(32,160,160),即从Axial方向上分了5个(32,160,160)大小的分块;

5、合并数据并保存。将标准化和分块后的四个模态合并成四个通道,保存后的shape为(32,160,160,4),dtype为float64。然后对相应的Mask也是分块后的,将三个标签合并三个嵌套的子区域,最后合并成三个通道,分别为WT、TC、ET,数值为0或1 ,保存后的shape为(32,160,160,3),dtype为uint8。

对于3D影像图作2D图像分割:
1、标准化多模态:与3D一样;
2、裁剪:去除非关注的部分(脑部区域以外的部分),使用的方法是将图像沿着中心裁剪掉一半;
3、切片、抛无病灶切片、合并各模态的切片:由于大多数医学图像都是三维数据,所以只有切成2D数据,才能适应2D网络,此外切片中不含有病灶部分的可以舍弃,同样也是为了缓解类别不均衡问题,又由于是多模态,因此要将各模态的切片组合成多通道。

参考链接:
https://blog.csdn.net/qq_26293147/article/details/68924393
http://www.cppcns.com/jiaoben/python/324322.html

  • 2
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值