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去白边, 坐标值和轴相关推荐

  1. python如何爬虫获取图形上点的坐标_python调用百度地图WEB服务API获取地点对应坐标值...

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

  2. python读取CIFAR10数据集并将数据集转换为PNG格式存储

    CIFAR10数据集介绍 CIFAR10数据集包括10类图像,每张图像的大小为32*32,包含如上图的十个类别的对象.每个类都包含6000张图片,总共有60000张图片,数据集平衡.其中,训练组图像包 ...

  3. Python学习:数据类型转换的方法教程

    1.type() 函数 使用 type() 函数可以查看数据类型. 示例: >>> type(123) <class 'int'> >>> type(1 ...

  4. python教程五 数据类型转换

    数据类型转换 有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可. Python 数据类型转换可以分为两种: 隐式类型转换 - 自动完成 显式类型转换 ...

  5. python读取表格数据_Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  6. python代码学习-数据处理图片加遮挡、噪声、模糊

    python代码学习-数据处理图片加遮挡.噪声.模糊 (一)python代码学习-数据处理图片加遮挡 代码: from matplotlib import pyplot as plt from PIL ...

  7. python获取excel数据制作有文字和图表的报告_如何用Python绘制学术报告图表?

    原标题:如何用Python绘制学术报告图表? 作者:ExcelTing 原文:http://cnblogs.com/excelting/p/6507680.html 全文约 3581 字,读完可能需要 ...

  8. python测验7答案_中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案

    中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案 更多相关问题 如图是一个液晶显示器厂去年四个季度产值统计图,看图填空.(1)这是______统计图.(2)产值最少的是第__ ...

  9. python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

最新文章

  1. Windows 7 PE RAM 引导盘及WIM 镜像制作
  2. Java实用教程笔记 类与对象(续)
  3. python编程实例下载-python网络编程之文件下载实例分析
  4. c#设置图片的dpi_被忽视的鼠标设置,影响瞄准的关键因素就是它!
  5. 如何更改 Mac 上的光标颜色
  6. ES6-note-Set和Map(草稿)
  7. 网络编程BaseIO介绍
  8. java通信rs485_基于VB6.0与485仪表的Modbus RTU通信(含代码)
  9. c语言写测试地下水流速,《C语言》课程教学大纲 总学时:总学时64;理论44;实验20 学分:3.5 .doc...
  10. 软件破解入门教程和解密手册——PE文件格式
  11. 安卓手机状态栏显示秒_让安卓手机上方状态栏时间显示精确到秒方法
  12. CXF 处理yyyy-MM-dd HH:mm:ss日期失败
  13. [附源码]PHP计算机毕业设计-报刊征订管理系统(程序+LW)
  14. Redis[5] key的过期时间删除策略、实现lru算法、持久化配置
  15. 如何将喜马拉雅FM的音频下载下来保存
  16. R中的NA与NULL值
  17. 哈工大软件构造课程知识点总结(一)
  18. 01.计算机基础与Java
  19. 通过Delphi打造自己的文本编辑器
  20. android 用canvas 绘制简单圆形时钟

热门文章

  1. MySQL 添加索引,删除索引及其用法
  2. 头发、胡子和权力——下巴上的演义
  3. 计算机考试打字满分,计算机中考打字要打多少是满分?
  4. Unity2018导出Android工程并自行生成apk(总)
  5. linux下mysql乱码,Linux下mysql中文乱码解决方案
  6. 银联无感支付自动缴费不停车快速离场
  7. 屏幕唤醒与解锁解决方案
  8. 计算机管理文件破坏怎么办,电脑系统文件损坏怎么办
  9. 【智能扭矩系统】主机厂常见的紧固件扭矩质量的控制方法有哪些?
  10. java项目在linux环境中赋予新建文件777权限