python 医学图像膝关节数据raw和mhd转换为png,jpg,bmp和tif格式, plt.savefig去白边, 坐标值和轴
raw和mhd转换为png,jpg,bmp和tif格式
- 本代码解决的问题
- 将带有标签的mhd和raw数据进行保存,下面是处理某一个切片
- 将带有标签的mhd和raw数据进行保存,下面是一个标签数据下的所有切片进行保存的代码
- 原始数据mhd和raw(非标签数据)转化为dcm或者常见的格式
- 改变像素值,如果想将背景设置为[0,0,0]
- 改变一个文件夹下所有图像的像素值
本代码解决的问题
- 针对标签数据:raw和mhd转换为png,jpg,bmp和tif格式
- 针对标签数据:更改图像中某一类别的像素值
- 针对标签数据:现有软件进行转化时,无法转化为彩色的RGB图像。当mhd和raw文件是彩色图像时如图1,需要保存为彩色的如图2,现有的软件只能将其转化为二值化或者灰度图像,这些软件仅适用于将原始数据转换为其他格式,但不适用于处理原始数据对应的彩色标签
- 针对标签数据:解决在plt保存时去白边, 坐标值和轴进行保存
- 针对image(非标签数据)数据:raw和mhd转换为png,jpg,bmp和tif格式
- 注意:mhd和raw这两个文件必须同时存在
将带有标签的mhd和raw数据进行保存,下面是处理某一个切片
import SimpleITK as sitk
import cv2
#SimpleITK库
from PIL import Image
import matplotlib.pyplot as plt
#matplotlib库case_path =r'D:\1\labels-001.mhd'
#图像路径itkimage = sitk.ReadImage(case_path)#这部分给出了关于图像的信息,可以打印处理查看#print(itkimage)image = sitk.GetArrayFromImage(itkimage)
#z,y,x,Z为一共多少张图像,y和x为宽和高
print(image.shape)
#查看第35张图像的大小
print(image[35,:,:].shape)# 多张图片保存路径
# i=35
# save_dir=r'D:\1/'+"%03d.png"%i# 保存方式一:不会改变图像的大小plt.imsave(r"D:\1\1.png",image[35,:,:])# 保存方式二:会改变图像的大小
# plt.figure(1)
# plt.axis('off') # 去坐标轴
# plt.xticks([]) # 去刻度
# plt.yticks([]) # 去刻度
# plt.imshow(image[1,:,:])
# plt.savefig(r"D:\1\1.png",bbox_inches='tight',pad_inches = 0)
# plt.show()
将带有标签的mhd和raw数据进行保存,下面是一个标签数据下的所有切片进行保存的代码
import SimpleITK as sitk
import cv2
#SimpleITK库
from PIL import Image
import matplotlib.pyplot as plt
#matplotlib库
import ospath =r"D:\1"
#mhd所在的文件夹路径for i in range (1,3):# mhd文件的绝对路径lable_file=path+"/labels-%03d.mhd"%iitkimage = sitk.ReadImage(lable_file)#这部分给出了关于图像的信息,可以打印处理查看# print(itkimage)image = sitk.GetArrayFromImage(itkimage)#z,y,x,Z为一共多少张图像,y和x为宽和高print(image.shape)# #查看第35张图像的大小# print(image[35,:,:].shape)# 获取文件名的basename,如'E:/2021作品/test.csv'获取后得到testlable_basename = os.path.basename(lable_file).split('.')[0]# 设置切片的文件夹目录slice_dir = r'D:\1/' + lable_basenameif not os.path.exists(slice_dir):os.mkdir(slice_dir)# 保存mhd下的所有切片for j in range(0,image.shape[0]):save_slice = slice_dir + "/label_%03d.png" % (j+1)plt.imsave(save_slice, image[j, :, :])
原始数据mhd和raw(非标签数据)转化为dcm或者常见的格式
- 将mhd和raw数据转化为dcm格式:处理流程——首先使用3Dslicer 软件将mhd和raw数据打开,然后转化为dcm格式,具体操作流程如下
- 如果需要保存为jpg,png,tif格式等常规模式,只需要将上面得到的dcm结果继续转化即可,此时使用volume shop即可批量处理为pg,png,tif格式。大家可能会疑问,3Dslicer也有直接将其转化为常规格式的功能,为什么不直接用,因为3Dslicer只能保存一张切片,不能一键转换。如下图所示
改变像素值,如果想将背景设置为[0,0,0]
- 使用MATLAB代码将其进行转换
- 小技巧:可以使用snipaste进行查看
I = imread('D:\1\labels-001\label_037.png'); %读取图像
[m n k]=size(I)
for i=1:m%图片长(像素)for j=1:n%图片宽(像素)if (I(i,j,1)==68 && I(i,j,2)==1 && I(i,j,3)==84) %如果某点的像素值为[68,1,84]I(i,j,1)=0;I(i,j,2)=0;I(i,j,3)=0;%则[68,1,84]变为[0,0,0]endend
end
figure
imshow(I);
imwrite(I,'D:\1\result.png')
改变一个文件夹下所有图像的像素值
imgPath = 'D:\1\labels-001/'; % 图像库路径
imgDir = dir([imgPath '*.png']); % 遍历所有jpg格式文件
disp(length(imgDir))for i_file = 1:length(imgDir) % 遍历结构体就可以一一处理图片了I = imread([imgPath imgDir(i_file).name]); %读取每张图片[m n k]=size(I)for i=1:m%图片长(像素)for j=1:n%图片宽(像素)if (I(i,j,1)==68 && I(i,j,2)==1 && I(i,j,3)==84) %如果某点的像素值为[68,1,84]I(i,j,1)=0;I(i,j,2)=0;I(i,j,3)=0;%则变为[0,0,0]endendends='D:\1\labels-001/s/';%保存目标imwrite(I,[s imgDir(i_file).name])%将文件名保存为与原文件名相同的名字
end
参考链接1:https://www.jianshu.com/p/31ccb95409c5
参考链接2:https://blog.csdn.net/disanda/article/details/123552972
参考链接3:https://mp.weixin.qq.com/s
点关注,不迷路!!!!!!
python 医学图像膝关节数据raw和mhd转换为png,jpg,bmp和tif格式, plt.savefig去白边, 坐标值和轴相关推荐
- python如何爬虫获取图形上点的坐标_python调用百度地图WEB服务API获取地点对应坐标值...
本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...
- python读取CIFAR10数据集并将数据集转换为PNG格式存储
CIFAR10数据集介绍 CIFAR10数据集包括10类图像,每张图像的大小为32*32,包含如上图的十个类别的对象.每个类都包含6000张图片,总共有60000张图片,数据集平衡.其中,训练组图像包 ...
- Python学习:数据类型转换的方法教程
1.type() 函数 使用 type() 函数可以查看数据类型. 示例: >>> type(123) <class 'int'> >>> type(1 ...
- python教程五 数据类型转换
数据类型转换 有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可. Python 数据类型转换可以分为两种: 隐式类型转换 - 自动完成 显式类型转换 ...
- python读取表格数据_Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- python代码学习-数据处理图片加遮挡、噪声、模糊
python代码学习-数据处理图片加遮挡.噪声.模糊 (一)python代码学习-数据处理图片加遮挡 代码: from matplotlib import pyplot as plt from PIL ...
- python获取excel数据制作有文字和图表的报告_如何用Python绘制学术报告图表?
原标题:如何用Python绘制学术报告图表? 作者:ExcelTing 原文:http://cnblogs.com/excelting/p/6507680.html 全文约 3581 字,读完可能需要 ...
- python测验7答案_中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案
中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案 更多相关问题 如图是一个液晶显示器厂去年四个季度产值统计图,看图填空.(1)这是______统计图.(2)产值最少的是第__ ...
- python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值
本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...
最新文章
- Windows 7 PE RAM 引导盘及WIM 镜像制作
- Java实用教程笔记 类与对象(续)
- python编程实例下载-python网络编程之文件下载实例分析
- c#设置图片的dpi_被忽视的鼠标设置,影响瞄准的关键因素就是它!
- 如何更改 Mac 上的光标颜色
- ES6-note-Set和Map(草稿)
- 网络编程BaseIO介绍
- java通信rs485_基于VB6.0与485仪表的Modbus RTU通信(含代码)
- c语言写测试地下水流速,《C语言》课程教学大纲 总学时:总学时64;理论44;实验20 学分:3.5 .doc...
- 软件破解入门教程和解密手册——PE文件格式
- 安卓手机状态栏显示秒_让安卓手机上方状态栏时间显示精确到秒方法
- CXF 处理yyyy-MM-dd HH:mm:ss日期失败
- [附源码]PHP计算机毕业设计-报刊征订管理系统(程序+LW)
- Redis[5] key的过期时间删除策略、实现lru算法、持久化配置
- 如何将喜马拉雅FM的音频下载下来保存
- R中的NA与NULL值
- 哈工大软件构造课程知识点总结(一)
- 01.计算机基础与Java
- 通过Delphi打造自己的文本编辑器
- android 用canvas 绘制简单圆形时钟