医学图像——数据读取和预处理
医学图像——数据读取和预处理
目录
3D图像读取
1、ITK-SNAP 软件
2、python包读取
(1)nii数据——SimpleITK
(2)nrrd数据
图形预处理
1、归一化处理
2、裁剪、旋转、翻转
3D图像读取
目的:获取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
(2)nrrd数据
import nrrd
img , img_header = nrrd.read(img_path)
具体操作看这个博客:
https://blog.csdn.net/github_33934628/article/details/78897565
图形预处理
方法二,公式为:(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语句。当数据库发生意外时,可以通过该日志查看到用户对数据库的操作,在和数据库备份配合使用,可以将损失最小化。