#coding:utf-8
import torch
from monai.transforms import Compose, RandHistogramShiftD, Flipd, Rotate90d
import matplotlib.pyplot as plt
import SimpleITK as sitk
# start a chain of transforms
KEYS = ("image", "label")
class aug():
def __init__(self):
self.random_rotated = Compose([
Rotate90d(KEYS, k=1, spatial_axes=(2,3),allow_missing_keys=True),
Flipd(KEYS, spatial_axis=(1,2,3),allow_missing_keys=True),
RandHistogramShiftD(KEYS, prob=1, num_control_points=30, allow_missing_keys=True),
# ToTensorD(KEYS),
])
def forward(self,x):
x = self.random_rotated(x)
return x # start a dataset
def save(before_x, after_x, new_path,new_name=""):
after_x = after_x[0, 0,...]
if new_name=="image":
ct = sitk.ReadImage(before_x, sitk.sitkInt16)
else:
ct = sitk.ReadImage(before_x, sitk.sitkUInt8)
predict_seg = sitk.GetImageFromArray(after_x)
predict_seg.SetDirection(ct.GetDirection())
predict_seg.SetOrigin(ct.GetOrigin())
predict_seg.SetSpacing(ct.GetSpacing()) sitk.WriteImage(predict_seg,new_path) if __name__ == "__main__":
image = r"D:\MyData\3Dircadb1_fusion_date\image_2.nii" # 原图
label = r"D:\MyData\3Dircadb1_fusion_date\liver_2.nii" #标签
new_path = r"D:\MyData\3Dircadb1_fusion_date\image_0.nii" #增强后的原图
new_path1 = r"D:\MyData\3Dircadb1_fusion_date\liver_1.nii" #增强后的标签 ct = sitk.ReadImage(image)
ct1 = sitk.GetArrayFromImage(ct)
seg = sitk.ReadImage(label)
seg1 = sitk.GetArrayFromImage(seg) ct = ct1[None, None,...]
seg = seg1[None, None,...] ct = torch.from_numpy(ct)
seg = torch.from_numpy(seg)
m = {"image": ct,
"label":seg}
augs = aug()
print(m["image"].shape)
data_dict= augs.forward(m) save(image, data_dict["image"], new_path, "image")
save(label, data_dict["label"], new_path1, "label") print(data_dict["image"].shape)
plt.subplots(1, 3)
plt.subplot(1, 3, 1);
plt.imshow(ct1[66,...])
plt.subplot(1, 3, 2);
plt.imshow(data_dict["image"][0,0, 66,...])
plt.subplot(1, 3, 3);
plt.imshow(data_dict["label"][0,0, 66,...])
plt.show()

三维医学图像深度学习,数据增强方法(monai):RandHistogramShiftD, Flipd, Rotate90d的更多相关文章

  1. YoloV4当中的Mosaic数据增强方法(附代码详细讲解)码农的后花园

    上一期中讲解了图像分类和目标检测中的数据增强的区别和联系,这期讲解数据增强的进阶版- yolov4中的Mosaic数据增强方法以及CutMix. 前言 Yolov4的mosaic数据增强参考了CutM ...

  2. 深度学习数据特征提取:ICCV2019论文解析

    深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...

  3. GridMask:一种数据增强方法

    GridMask Data Augmentation, ARXIV 2020 代码地址:https://github.com/akuxcw/GridMask 这篇论文提出了一种简单的数据增强方法,在图 ...

  4. Generalizing from a Few Examples: A Survey on Few-Shot Learning 小样本学习最新综述 | 三大数据增强方法

    目录 原文链接:小样本学习与智能前沿 01 Transforming Samples from Dtrain 02 Transforming Samples from a Weakly Labeled ...

  5. go微服务框架go-micro深度学习(四) rpc方法调用过程详解

    上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取server的地 ...

  6. 深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks

    本文主要参考Ensemble Methods for Deep Learning Neural Networks一文. 1. 前言 神经网络具有很高的方差,不易复现出结果,而且模型的结果对初始化参数异 ...

  7. 深度学习Momentum(动量方法)

    转自:http://blog.csdn.net/bvl10101111/article/details/72615621 先上结论: 1.动量方法主要是为了解决Hessian矩阵病态条件问题(直观上讲 ...

  8. 深度学习----Xavier初始化方法

    “Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training deep feedf ...

  9. 深度学习——Xavier初始化方法

    “Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training deep feedf ...

  10. TensorFlow之DNN(三):神经网络的正则化方法(Dropout、L2正则化、早停和数据增强)

    这一篇博客整理用TensorFlow实现神经网络正则化的内容. 深层神经网络往往具有数十万乃至数百万的参数,可以进行非常复杂的特征变换,具有强大的学习能力,因此容易在训练集上过拟合.缓解神经网络的过拟 ...

随机推荐

  1. Microsoft Dynamics CRM 高级查找不能搜索实体的解决方案(浏览器插件)

    背景 我们搜索某个实体的记录的时候,一般会去对应的视图"可用的XXX",但是视图自带的条件过滤了一些数据,或者缺少了我们所需要的列,或者不能查询关联实体.这时候我们需要用到高级查找 ...

  2. 【爬虫】Python获取星巴克所有产品

    视频只介绍了BS4的简单使用,但我想全部获取出来 其实翻看接口,直接有一个json资源提供了这些数据,但是没有分类 import re import urllib.request from bs4 i ...

  3. 【DataBase】MySQL 13 分组查询

    视频参考自:P59 - P68 https://www.bilibili.com/video/BV1xW411u7ax 分组查询 GROUP BY -- group by 子句 -- 要注意!grou ...

  4. 使用 Alba 对 AspnetCore项目进行测试

    前言 在AspnetCore生态系统中,我们测试项目一般使用Microsoft.AspNetCore.TestHost的TestServer 到.NET6后提供的Microsoft.AspNetCor ...

  5. 常回家看看之fastbin_attack

    常回家看看之fastbin_attack 原理分析 fastbin属于小堆块的管理,这里说的fastbin_attack大多指glibc2.26之前的手法,因为自glibc2.26以后,glibc迎来 ...

  6. 树莓派3b+使用官方屏幕后倒置问题——屏幕倒置

    树莓派3b+的屏幕本身就是倒置的,因此为了使树莓派在官方屏幕下能显示正常的屏幕画面因此需要通过设置把树莓派的官方屏幕的输出倒置一下,这样树莓派的官方屏幕的输出就是正常的了. 解决方法:(源自:http ...

  7. TensorFlow图像预处理函数

    预处理图像 文件名:       cat.jpg 读取.打印图片 import matplotlib.pyplot as plt import tensorflow as tf import nump ...

  8. C#.Net筑基-解密委托与事件

    委托与事件是C#中历史比较悠久的技术,从C#1.0开始就有了,核心作用就是将方法作为参数(变量)来传递和使用.其中委托是基础,需要熟练掌握,编程中常用的Lambda表达式.Action.Func都是委 ...

  9. Apache DolphinScheduler 3.1.8 版本发布,修复 SeaTunnel 相关 Bug

    近日,Apache DolphinScheduler 发布了 3.1.8 版本.此版本主要基于 3.1.7 版本进行了 bug 修复,共计修复 16 个 bug, 1 个 doc, 2 个 chore ...

  10. CryptoHouse:由 ClickHouse 和 Goldsky 支持的免费区块链分析服务(ClickHouse 博客)

    我们很高兴地宣布 CryptoHouse,在 crypto.clickhouse.com 上可访问,这是一个由 ClickHouse 提供支持的免费区块链分析服务. https://crypto.cl ...