美文网首页pytorch
三维图像语义分割:肝脏

三维图像语义分割:肝脏

作者: 午字横 | 来源:发表于2022-11-28 14:39 被阅读0次

1 什么是.nii文件

NIFTI(Neuroimaging Informatics Technology Initiative)神经成像信息技术计划.
标准NIFTI图像的扩展名是.nii,也包含了头文件及图像资料。由于NIFTI格式和Analyze格式的关系,因此NIFTI格式也可使用独立的图像文件(.img)和头文件(.hdr)。单独的.nii格式文件的优势就是可以使用标准的压缩软件(如gzip)进行压缩,而且一些分析软件包(比如FSL)可以直接读取和写入压缩的.nii文件(扩展名为.nii.gz)。

2 simpleITK
这是使用最多的一种图像处理工具

import SimpleITK as sitk
from matplotlib import pyplot as plt
 
def showNii(img):
    for i in range(img.shape[0]):
        plt.imshow(img[i,:,:],cmap='gray')
        plt.show()
 
itk_img = sitk.ReadImage('./Brats18_2013_2_1_flair.nii.gz')
img = sitk.GetArrayFromImage(itk_img)
print(img.shape)    # (155, 240, 240) 表示各个维度的切片数量
showNii(img)

3 matplotlib 库图像不显示问题

#添加这两句
import matplotlib
matplotlib.use('TkAgg')

# 读取图像,如.mhd .nii .nrrd等
ct=sitk.ReadImage(r'D:\pythonSpace\data\3D\batchImage\segmentation-124.nii')
# 将sitk图像转换成数组
ct_array=sitk.GetArrayFromImage(ct)
print(ct_array.shape) #(463, 512, 512) 代表有463张图像
img=ct_array[250,:,:]
print(type(img))
img_pic=Image.fromarray(img)
print(type(img_pic))
plt.imshow(img_pic,cmap='gray')
plt.show() #最后添加这一句调用

4 np.unique() 介绍与使用

对于[一维数组]或者列表,np.unique() 函数去除其中重复的元素 ,并按元素由小到大
返回一个新的无元素重复的元组或者列表。
numpy.unique(arr, return_index, return_inverse, return_counts)
arr:输入数组,如果不是一维数组则会展开
return_index:如果为 true,返回新列表元素在旧列表中的位置(下标),并以列表形式存储。
return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式存储。
return_counts:如果为 true,返回去重数组中的元素在原数组中的出现次数。

5 np.stack()函数详解

stack为堆叠的意思,这个函数主要有两个参数,
第一个是需要堆叠的多个数组,采用列表的形式输入,
例如:np.stack([arrays1,array2,array3],axis=0)。
第二个参数是axis,
这个参数表示从哪一个维度进行堆叠以及堆叠的内容,
这个维度是相对于堆叠的数组来说的。整个函数的输出为一个新数组。
注意进行堆叠的数组形式必须一致

glob.glob() 函数

import glob

#获取指定目录下的所有图片
print (glob.glob(r"/home/qiaoyunhao/*/*.png"),"\n")#加上r让字符串不转义

#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径

Python中next()函数、iter()以及next(iter())函数的用法详解

描述:

next() 返回迭代器的下一个项目。
next() 函数要和生成迭代器的iter() 函数一起使用。

next(iterable[, default])
参数说明:
iterable – 可迭代对象
default – 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

备注:
list、tuple等都是可迭代对象,我们可以通过iter()函数获取这些可迭代对象的迭代器。然后,我们可以对获取到的迭代器不断使⽤next()函数来获取下⼀条数据。
iter()函数实际上就是调⽤了可迭代对象的 iter ⽅法。

a=[1,2,3,4]
a=iter(a)
print(next(iter(a)))
print(next(iter(a)))
print(next(iter(a)))

nn.BatchNorm2d()

通常来说,数据标准化预处理对于浅层模型就足够有效了:处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使各个特征的分布相近:这往往更容易训练出有效的模型。但对深层神经网络来说,即使输入数据已做标准化,训练中模型参数的更新依然很容易造成靠近输出层输出的剧烈变化。这种计算数值的不稳定性通常令我们难以训练出有效的深度模型。

批量归一化利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。


相关文章

  • 三维图像语义分割:肝脏

    1 什么是.nii文件 NIFTI(Neuroimaging Informatics Technology In...

  • Unet图像分割

    Unet网络是一种图像语义分割网络,图像语义分割网络让计算机根据图像的语义来进行分割,例如让计算机在输入下面下图,...

  • 图像分割常用指标及MIoU计算

    一、语义图像分割结果定义 语义图像分割结果,可分为True Positive、False Positive、Tru...

  • 计算机视觉-语义分割

    什么是语义分割 我们都知道,图像是由许多像素(Pixel)组成,而「语义分割」顾名思义就是将像素按照图像中表达语义...

  • 语义图像分割概览

    摘要:本文讨论如何利用卷积神经网络进行语义图像分割的任务。 语义图像分割,目标是将图像的每个像素标记为所表示的相关...

  • 图像分割

    一、语义分割  图像语义分割的目标是标记图像每个像素的类别。因为我们需要预测图像中的每个像素,所以此任务通常被称为...

  • 【转载】语义分割中的深度学习方法全解:从FCN、SegNet到各

    http://www.sohu.com/a/155907339_610300 图像语义分割就是机器自动从图像中分割...

  • 我所了解的图像分割

    图像分割是我大二2019年做的东西,这篇文章用来总结。 一、什么是图像分割 分语义【像素级别图像】,实例【分割物体...

  • 20180222周四~图像处理

    图像处理,分低层处理,输入图像,输出图像。中层处理,输入图像,输出数据。如分割。高层处理,输入图像,输出语义。...

  • 2018-04-21 语义分割Semantic segmenta

    按难易程度进行分类:从易到难*--->*** 一、易 1、图像语义分析学习(一):图像语义分割的概念与原理以及常用...

网友评论

    本文标题:三维图像语义分割:肝脏

    本文链接:https://www.haomeiwen.com/subject/ufkcfdtx.html