医学影像处理数据操作

SlideDataset代码学习

创建嵌套字典,用来存储数据

dataset = {}
'''...得到file_id'''
dataset[file_id]={} # dataset={"file_id":{}}
'''...得到file_name、img'''
dataset[file_id][file_name]=img # dataset={ "file_id": {"file_name": array[...]} }

将数据拼接在一起

self.images=[]
for image_set in dataset:
	try:
		self.images.append(
			np.block([
				dataset[imageset]["SHG"],
				dataset[image_set]["BF"]
				]).astype(np.float32)
		)

Tensor保存为nii文件

import nibabel as nib
new_nii = nib.Nifti1Image(data.numpy(), np.eye(4)) # np.eye(4)代表仿射变换参数
nib.save(new_nii, 'test_nii')

自定义Dataset的transform

先定义Transform的类

import scipy.ndimage
class Resize:
	def __init__(self, shape, mode="constant", ori_shape=(240,240,155)):
		'''定义用到的参数'''
		self.factors = (
			            shape[0] / orig_shape[0],
			            shape[1] / orig_shape[1],
			            shape[2] / orig_shape[2]
		) 
	def __call__(self, img)
	'''只有一个参数img传入,下面是具体操作方式,return一个img'''
		img = scipy.ndimage.zoom(img, self.factors, mode = self.mode)
        mean = img.mean()
        std = img.std()
        return (img - mean) / std

使用时在Dataset类里加入transform类的调用

class MyDataset:
	def __init__(self,...):
		'''此处定义+计算各种类属性'''
		
	def __getitem__(self, idx):
		return self.get(idx)
		
    def get(self, idx, augment=True):
        if augment and self.transform:
            return self.transform(self.images[idx]) # 自定义的变换类相当于MyDataset的某属性
        return self.images[idx]

维度转换

tensorA.permute(a, b, c) # a:原tensor第一个维度应该去的位置
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值