python医学图像读取,医学图像——数据读取和预处理

医学图像——数据读取和预处理

医学图像——数据读取和预处理

目录

3D图像读取

1、ITK-SNAP 软件

2、python包读取

(1)nii数据——SimpleITK

(2)nrrd数据

图形预处理

1、归一化处理

2、裁剪、旋转、翻转

3D图像读取

python医学图像读取,医学图像——数据读取和预处理_第1张图片

目的:获取array数据,转为tensor数据

(1)nii数据——SimpleITK

import numpy as np

import os

import glob

import SimpleITK as sitk

from scipy import ndimage

import matplotlib.pyplot as plt

# LiST数据集为例,data是volume,lable是segmementation,nii格式

# 加r,可以将路径转换为原始字符串,不用变为‘\\’

data_path = r'E:\project\Master-1\code\3DUNet-Pytorch\preprocess\fixed\data'

label_path = r'E:\project\Master-1\code\3DUNet-Pytorch\preprocess\fixed\label'

dataname_list = os.listdir(data_path)

dataname_list.sort()

ori_data = sitk.ReadImage(os.path.join(data_path, dataname_list[2])) # 读取一个数据

data1 = sitk.GetArrayFromImage(ori_data) # 获取数据的array

print(dataname_list[2], data1.shape, data1[38,255,255]) #打印数据name、shape、某一个位置的元素的值(z,x,y)

plt.imshow(data1[100,:,:]) # 对第100张slice可视化

plt.show()

volume-10.nii (221, 512, 512) 200

python医学图像读取,医学图像——数据读取和预处理_第2张图片

(2)nrrd数据

import nrrd

img , img_header = nrrd.read(img_path)

具体操作看这个博客:

https://blog.csdn.net/github_33934628/article/details/78897565

图形预处理

python医学图像读取,医学图像——数据读取和预处理_第3张图片

方法二,公式为:(X-mean)/std 计算时对每个属性/每列分别进行

将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。

# 方法一:sklearn.preprocessing.scale()函数

from sklearn import preprocessing

import numpy as np

X_scaled = preprocessing.scale(X)

# # image = (image - np.mean(image)) / np.std(image)

# 方式二

# 将属性缩放到一个指定的最大和最小值(通常是1-0)之间

img=(img-np.min(img))/(np.max(img)-np.min(img))

# 随机裁剪

(w, h, d) = image.shape

w1 = np.random.randint(0, w - self.output_size[0])

h1 = np.random.randint(0, h - self.output_size[1])

d1 = np.random.randint(0, d - self.output_size[2])

label = label[w1:w1 + self.output_size[0], h1:h1 + self.output_size[1], d1:d1 + self.output_size[2]]

image = image[w1:w1 + self.output_size[0], h1:h1 + self.output_size[1], d1:d1 + self.output_size[2]]

# 中心裁剪

(w, h, d) = image.shape

w1 = int(round((w - self.output_size[0]) / 2.))

h1 = int(round((h - self.output_size[1]) / 2.))

d1 = int(round((d - self.output_size[2]) / 2.))

label = label[w1:w1 + self.output_size[0], h1:h1 + self.output_size[1], d1:d1 + self.output_size[2]]

image = image[w1:w1 + self.output_size[0], h1:h1 + self.output_size[1], d1:d1 + self.output_size[2]]

# 翻转

axis = np.random.randint(0, 2) # 代表某个维度,x轴或y或z

image = np.flip(image, axis=axis)

# 旋转

k = np.random.randint(0, 4)

image = np.rot90(image, k) # 随机旋转矩阵90、180、270

医学图像——数据读取和预处理相关教程

元数据管理-技术元数据解决方案

元数据管理-技术元数据解决方案 ?前言 概念 元数据是描述企业数据相关的数据,指在IT系统建设过程中所产生的有关数据定义,目标定义,转换规则等相关的关键数据,包括 对数据的业务、结构、定义、存储、安全等各方面对数据的描述 元数据是数仓建设环节中不可

day04_基本数据类型丶基本数据类型转换

day04_基本数据类型丶基本数据类型转换 数据类型 数据类型有什么用?数据类型用来声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。在Java中数据也是有类型的(任何数据必然会有类型),Java中数据的分类如下图所示: 基本数据类型: Java语

mysql 数据库无法启动(Ignoring the redo log due to missing M

mysql 数据库无法启动(Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint .... and) 数据库机器的CPU和主板都换了,重新开机,发现mysql数据库无法启动! Ignoring the redo log due to missing MLOG_CHECKPOINT between the ch

杰奇CMS phpmyadmin清空数据库ID归零重新入库数据SQL语句教程

杰奇CMS phpmyadmin清空数据库ID归零重新入库数据SQL语句教程 具体步骤如下: 打开你服务器phpmyadmin后台,找到你当前杰奇CMS程序创建的数据库,找到jieqi_article_chapter数据表,然后点击表名称,然后点击上面导航栏的SQL栏目,复制粘贴下面的SQL语句。然

使用GANs生成时间序列数据:DoppelGANger论文详解

使用GANs生成时间序列数据:DoppelGANger论文详解 序列数据(具有时间依赖性的数据)在业务中非常常见,从信用卡交易到医疗保健记录再到股票市场价格。 但是,隐私法规限制并极大地减慢了对研发至关重要的有用数据的访问。 这就产生了对具有高度代表性但又完

数据结构

数据结构 数据结构 线性结构 顺序结构 链式结构 树形结构 二叉树 图形结构 顺序结构 这是一个数组: 如果我们要删除4号位置的 2 1.我们将4号元素的 2 删除 2.将5号元素的 7 赋值到4号位置 3.将6号元素的 8 赋值到5号位置 4.将7号元素的 9 赋值到6号位置 5.删

Python微博爬取实战(三)爬虫获得的json格式数据如何处理

Python微博爬取实战(三)爬虫获得的json格式数据如何处理 上一此在介绍如何获取cookie时候已经说过,在网页开发者功能里面可以对网页进行抓包分析,详见: Python 微博爬取实战(一)爬虫参数:如何获得cookie,实现爬虫登陆爬取 1.那么问题来了,什么是json

数据库的备份与恢复

数据库的备份与恢复 二进制日志文件 二进制日志(bin_log) 二进制日志文件是用来记录所有用户对数据库的操作,即记录用户对数据库操作的sql语句。当数据库发生意外时,可以通过该日志查看到用户对数据库的操作,在和数据库备份配合使用,可以将损失最小化。

你可能感兴趣的:(python医学图像读取)