三维医学图像数据扩充:flip and rotate
对于小数据量医学图像进行深度学习使,会由于数据量过小而过拟合。因此我们需要采用数据扩充方法,而flip和rotate又是经常用到的,这里做一个简单的实现。
输入为[batchsize,height, width, channel]。这里是2D医学图像数据增强,我之前应该有写到3D增强,不过2D稍加改动也就可以用于3D。
def random_rotate_brain(image, label):
bs = image.shape[0] - 1
angle = np.random.randint(-20, 20) # 设置旋转角度
# print("image:{},label:{}".format(image.shape, label.shape))
channel = [ndimage.rotate(image[bs,:,:, c], angle, order=0, reshape=False) for c in range(image.shape[3])] # 每个通道都做相同的旋转
image[bs,...] = np.stack(channel, axis=-1)
chlabel = [ndimage.rotate(label[bs,:,:, c], angle, order=0, reshape=False) for c in range(label.shape[3])] # 如果你不想你预测的结果和标签对不上,标签也要进行同样的旋转
label[bs, ...] = np.stack(chlabel, axis=-1)
return image, label
def random_rot_flip_brain(image, label):
axes = (1,2) # 由于我们需要对height和width做扩充,所以取1,2。如果你输入矩阵第一维就是height和width,那你就需要改动为(0,1)
k = np.random.randint(0, 4)
image = np.rot90(image, k, axes)
label = np.rot90(label, k, axes)
# print("k:{},img:{},lab:{}".format(k, image.shape,label.shape))
axis = np.random.randint(1, 3) # 同上,只需对1,2维做扩充
image = np.flip(image, axis=axis).copy()
label = np.flip(label, axis=axis).copy()
return image, label def RandomGenerator_brain(x, y):
image, label =x, y
# 不可能全部图像都要做数据扩充吧,设置一个随机数
if random.random() > 0.5:
image, label = random_rot_flip_brain(image, label)
elif random.random() > 0.5:
image, label = random_rotate_brain(image, label) return image, label
三维医学图像数据扩充:flip and rotate的更多相关文章
- 常见的数据扩充(data augmentation)方法
G~L~M~R~S 一.data augmentation 常见的数据扩充(data augmentation)方法:文中图片均来自吴恩达教授的deeplearning.ai课程 1.Mirrorin ...
- ubuntu之路——day19.2 开源框架与迁移、CNN中的数据扩充
开源框架与迁移 上面介绍了一些已经取得很好成绩的CNN框架,我们可以直接从GitHub上下载这些神经网络的结构和已经在ImageNet等数据集上训练好的权重超参数. 在应用于我们自己的数据时. 1.如 ...
- i3s 一种开源的三维地理数据规范 简单解读
i3s,esri主推到ogc的一种三维开源GIS数据标准. 版权声明:原创.博客园/B站/小专栏/知乎/CSDN @秋意正寒 转载请标注原地址并声明转载: https://www.cnblogs.co ...
- 【48】数据扩充(Data augmentation)
数据扩充(Data augmentation) 大部分的计算机视觉任务使用很多的数据,所以数据扩充是经常使用的一种技巧来提高计算机视觉系统的表现.我认为计算机视觉是一个相当复杂的工作,你需要输入图像的 ...
- 医学图像数据(一)——TCIA基本介绍
1.介绍 The Cancer Imaging Archive (TCIA)是癌症研究的医学图像的开放获取数据库.该网站由国家癌症研究所(NCI)癌症影像计划资助,合同由阿肯色大学医学科学院管理.存档 ...
- Matlab如何令三维抽象数据可视化的显示出来
Mathworks File Exchange频道近期更新了一个小函数.能够将三维数据矩阵相应的函数u=f(x,y,z)可视化的显示出来. 对我们这些常和数据分析问题打交道的人爱说.还是有点參考价值的 ...
- Cesium加载三维倾斜摄影数据
具体技术来源自论文 基于Cesium的倾斜摄影三维模型Web加载与应用研究. 技术架构图 应用实例 利用一个实际实例来详细说明如何利用Cesium加载倾斜摄影数据,并进行可视化和交互操作. 首先,利用 ...
- 医学图像数据(三)——TCIA部分数据下载方式
前为止,本人还没有找到不需要账号的就可以部分下载的方式,因此这里讲的是需要注册账号下载部分数据的方法. 注意:下载部分数据需要注册账号 注册账号网址:https://public.cancerimag ...
- 医学图像数据(二)——TCIA完整数据集下载方式
1. 构建下载环境 l TCIA数据集下载文件为.jnlp格式(JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序 ...
- Keras Data augmentation(数据扩充)
在深度学习中,我们经常需要用到一些技巧(比如将图片进行旋转,翻转等)来进行data augmentation, 来减少过拟合. 在本文中,我们将主要介绍如何用深度学习框架keras来自动的进行data ...
随机推荐
- Jmeter函数助手35-property
property函数用于获取jmeter属性值. 属性名称:填入jmeter的属性名称 存储结果的变量名(可选) 默认值:缺省值,当获取属性值为空时则返回该值 1.查看jmeter全局属性,测试计划右 ...
- 【Mybatis】04 官方文档指北阅读 vol2 配置 其一
https://mybatis.org/mybatis-3/zh/configuration.html 配置 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息. 配置文 ...
- 【Uni-App】其他配置笔记
manifest.json manifest.json 文件是应用的配置文件,用于指定应用的名称.图标.权限等.HBuilderX 创建的工程此文件在根目录,CLI 创建的工程此文件在 src 目录. ...
- linux终端如何加上时间,添加时间戳到终端提示?
方法: 在 .bashrc 文件中加入: export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] " 这样便可以在每次输入命令 ...
- 使用django-treebeard实现树类型存储与编辑
前言 其实之前做很多项目都有遇到跟树相关的功能,以前都是自己实现的,然后前端很多UI组件库都有Tree组件,套上去就可以用. 不过既然用 Django 了,还是得充分发挥一下生态的优势,但是我找了半天 ...
- java获取包下所有的类
1.背景 给一个Java的包名,获取包名下的所有类.. 根据类上的注解,可以展开很多统一操作的业务 2.直接看代码-spring环境下 package com.qxnw.digit.scm.commo ...
- fastDFS安装时,./make.sh编译时出错找不到./make.sh: line 99: perl: command not found
1.背景 报错如下: 2.解决方案 执行命令: yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-d ...
- centos 安装 图像识别工具 tesseract-ocr 流程
(1)首先安装依赖的leptonica库:wget http://www.leptonica.com/source/leptonica-1.72.tar.gztar -xvf leptonica-1. ...
- 微服务全链路跟踪:springcloud集成jaeger
微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...
- ARM汇编:MRS和MSR指令
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...