文章目录

  • 医学影像数据格式转换(.mha转.jpg)
    • 1. BRAST2015数据集介绍
    • 2. 格式转换
    • 3. 结果展示

医学影像数据格式转换(.mha转.jpg)

1. BRAST2015数据集介绍



​ BRAST2015的数据集格式如上图所示,由5个.mha文件构成。其中Flair,T2,T1c,T2为四种模态(理解为四种提取特征的方式),OT为GroundTruth也就是掩码(0,1,2,3,4五种标签)。

2. 格式转换

​ 在进行图像分割的过程中,数据集最基本的格式为图片+掩码(图片作为数据,掩码作为真值)。故在处理医学影像时需要将.mha文件转换为.jpg文件。针对该数据集直接附代码。

#数据处理部分,将mah格式转化为jpg和mask_jpgimport SimpleITK as sitk
from SimpleITK.SimpleITK import Imagefrom tqdm import tqdm
from PIL import Image
import numpy as np
import cv2
import os
import matplotlib.pyplot as plt
import globdef mha2jpg(mhaPath,outFolder,out_Mask):mha_names = os.listdir(mhaPath)for file_name in tqdm(mha_names):img_names = os.listdir(mhaPath + file_name)for img_name in img_names:image = sitk.ReadImage(mhaPath + file_name + '/' + img_name)img_data = sitk.GetArrayFromImage(image)#测试图片形状以及像素极值#print(img_data.shape, img_name, np.max(img_data), np.min(img_data))name = img_name.split('.O.')[-1].split('.')[0]max_num, min_num = np.max(img_data), np.min(img_data)channel = img_data.shape[0]#进行归一化操作,*255将其再次可视化img_data = (img_data - min_num) / (max_num - min_num) * 255for s in range(channel):#提取每一张特征图slicer = img_data[s,:,:].astype(np.uint8)#array返回Imageslicer = Image.fromarray(slicer)slicer = slicer.resize((512,384))if name == 'OT' or name == 'VSD':slicer.save(os.path.join(out_Mask,file_name + name + '_Flair_' + str(s) + '.jpg'))slicer.save(os.path.join(out_Mask,file_name + name + '_T1_' + str(s) + '.jpg'))slicer.save(os.path.join(out_Mask,file_name + name + '_T1c_' + str(s) + '.jpg'))slicer.save(os.path.join(out_Mask,file_name + name + '_T2_' + str(s) + '.jpg'))if name != 'OT' and name != 'VSD':slicer.save(os.path.join(outFolder,file_name + name + str(s) + '.jpg'))if __name__ == '__main__':mha = './BRATS2015/training/HGG/'out = './data/train/image/'out_m = './data/train/mask/'mha2jpg(mha,out,out_m)

其中主要的代码如下:

    mha_names = os.listdir(mhaPath)for file_name in tqdm(mha_names):img_names = os.listdir(mhaPath + file_name)for img_name in img_names:image = sitk.ReadImage(mhaPath + file_name + '/' + img_name)img_data = sitk.GetArrayFromImage(image)#测试图片形状以及像素极值#print(img_data.shape, img_name, np.max(img_data), np.min(img_data))name = img_name.split('.O.')[-1].split('.')[0]max_num, min_num = np.max(img_data), np.min(img_data)channel = img_data.shape[0]#进行归一化操作,*255将其再次可视化img_data = (img_data - min_num) / (max_num - min_num) * 255for s in range(channel):#提取每一张特征图slicer = img_data[s,:,:].astype(np.uint8)#array转换Imageslicer = Image.fromarray(slicer)slicer = slicer.resize((512,384))

​ .mha文件通过sitk.ReadImage函数进行图片的读取,再通过sitk.GetArrayFromImage对图片转化为array格式,通过img_data = (img_data - min_num) / (max_num - min_num) * 255进行归一化操作,最后再将array转化为Image.

输出图片形状,图片文件名,图片像素极大极小值。输出这三者很重要,会更清楚整个数据集的状况,图片形状中155说明一个.mha文件会生成155张特征图做为我们最后的数据集,(240,240)有助于之后输入网络结构后图片形状的resize;图片文件名有利于Image数据集的构建;像素极值有利于进行归一化。(注:这里归一化操作建议自己写,不要用函数直接进行。函数操作将浮点部分的像素直接整型化,导致一定的特征丢失。)

3. 结果展示

Image数据:

Mask数据:

医学影像数据格式转换(.mha转.jpg)相关推荐

  1. 转:常见的医学影像数据格式(1)

    常见的医学影像数据格式 在fMRI的早期,由于大多数据都用不同研究脉冲序列采集,然后离线大量重建,而且各研究中心文件格式各不相同.大多数的分析软件也都是各研究单位内部编写运用.如果这些数据不同其他中心 ...

  2. Dicom批量转nii(医学影像格式转换,SPM)

    Dicom批量转nii(医学影像格式转换,SPM) 实验中需要用spm12进行配准,spm12 配准只能导入nii格式,但影像是dicom格式的,需要先进行格式转换. spm12有自带的dicom转n ...

  3. 医学影像坐标系问题(世界坐标系、解剖坐标系和图像坐标系)

    文章目录 2. 坐标系方向orientation(RAI → AIL) 2.1 统一转为RAI方向(itk的python代码) 2.2. 统一转为某个方向(itk的C++代码) 2.3 设置成和另一个 ...

  4. 基于Python Unet的医学影像分割系统源码,含皮肤病的数据及皮肤病分割的模型,用户输入图像,模型可以自动分割去皮肤病的区域

    手把手教你用Unet做医学图像分割 我们用Unet来做医学图像分割.我们将会以皮肤病的数据作为示范,训练一个皮肤病分割的模型出来,用户输入图像,模型可以自动分割去皮肤病的区域和正常的区域.废话不多说, ...

  5. 【ArcGIS遇上Python】ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换

    由于论文的需要,将MODIS NDVI数据进行投影变换和格式转换,具体操作可以参照:<ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换>,但是该文章中的做法只能一次性 ...

  6. 【转】医学影像调窗技术!!!!

    转自:https://www.cnblogs.com/assassinx/p/3139505.html 在年初的时候做过一个dicom格式文件解析,当时只是提了下.看着跟别人的显示出来也差不多 其实是 ...

  7. 深度学习在医学影像中的研究进展及发展趋势

    点击上方蓝字关注我们 深度学习在医学影像中的研究进展及发展趋势 王丽会1,2, 秦永彬1,2 1 贵州省智能医学影像分析与精准诊断重点实验室,贵州 贵阳 550025 2 贵州大学计算机科学与技术学院 ...

  8. MedMNIST:18个数据集开启2D+3D医学影像之旅,可免费下载

    关注公众号,发现CV技术之美 以下文章来源于中国图象图形学报 ,作者倪冰冰, 杨健程等 上海交通大学等 MedMNIST v2医学图像数据集已经发布,相较 MedMNIST v1,MedMNIST v ...

  9. 医学数字成像设备中计算机系统的作用包括,医学影像实用技术教程全部习题答案...

    --------------------------------------------------正文内容开始-------------------------------------------- ...

最新文章

  1. R语言ggplot2可视化:为图像中的均值竖线、中位数竖线、 geom_vline添加图例(legend)
  2. 数据库增长到一定程度后的瘦身,优化问题
  3. 太原科技大学计算机在哪个校区,太原科技大学有几个校区及校区地址 哪个校区最好...
  4. 用文本指导文本:基于文本的自监督可控文本生成模型
  5. 拥抱.NET Core系列:依赖注入(2)
  6. Python中xrange和range异同
  7. [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现
  8. Chrome 调试动态加载的js
  9. linux操作常用命令
  10. hdu 2586 How far away? (LCA模板)
  11. 力扣 26.删除有序数组中的重复元素
  12. 学习的第一推动力(很好)
  13. 微信小程序图片自适应屏幕大小真的有效
  14. win10位置定位服务器,win10定位设置在哪里进行设置|win10定位的设置方法详解
  15. vscode 的工作台配置文件
  16. 侏罗纪开发实施工作管理平台
  17. Python爬虫企查查
  18. oracle创建编号函数,oracle函数初次尝试
  19. JavaIO流APACHE-Commons组件的使用
  20. HTML/JS/浏览器与串口通信(一)

热门文章

  1. 我的奇葩面试经历分享:喊价25K,HR 却给了30K。。。
  2. 【Java】day21--装饰者设计模式、序列流对象、对象输入输出流、Properties配置文件部分知识点总结
  3. HandlerMethodReturnValueHandler处理返回值问题,aop
  4. 四旋翼无人机学习第12节--跨页连接符的标号设置、DRC、PDF导出
  5. 环境变量的作用,为什么要设置环境变量?
  6. 基于表格的CRC校验码实现
  7. 《这一代人的学习》观看笔记
  8. 多年来,程序员经常加班的真相终于揭开了…
  9. 国密算法分类总结:sm2,sm3,sm4等
  10. android popwindow 使用 转http://www.cnblogs.com/jenson138/p/4335818.html