Python DCM转JPG转NRRD转NII方法

本文将介绍以下文件格式间的转换
DCM→JPG
JPG→DCM
DCM→NRRD
NRRD→NII

DCM文件是一种医学影像文件,除了文件信息,还包含影像数据,即图像信息,只要能够提取到这个图像信息,就可以将其转换为如JPG等图片格式。
在医学影像处理中,常用到MASK掩膜,即勾画病灶区域,以进行病理分析预测,将DCM文件转换为JPG格式后,就可以利用OpenCV2等进行病灶勾画。

将DCM转JPG需用到pydicom库,若未安装,可使用控制台输入pip install pydicom进行安装
DCM转JPG可参考这位博主的博客:用python将.dcm格式图像转为.jpg格式
完整代码如下

import pydicom
import scipy.misc
import os
import imageio
import shutildi=r"C:\Users\Miao\Desktop\Sample\01\T1\\DICOM\\"
#↑↑↑↑  01号病人的T1类型的DCM数据所在文件夹  ↑↑↑↑
d=r"C:\Users\Miao\Desktop\Sample\01"
#↑↑↑↑  01号病人文件夹  ↑↑↑↑def DCMtoJPG(file_path):global diglobal dc = []#医学影像常使用:多个患者→多种区域或时期DCM数据→多个DCM数据#的文件夹存储格式,所以使用c存储多个DCM数据,一次性转换所有DCM文件names = os.listdir(file_path)#file_path为患者数据所在文件夹for name in names:index = name.rfind('.')name = name[:index]c.append(name)for files in c:DCMpath = d+'\T1\DICOM\\'+files+".dcm" #DCM所在文件夹JPGpath = d+"\T1jpg\\"+files+".jpg" #将JPG保存到此文件夹data = pydicom.read_file(DCMpath)  #使用pydicom读取DCM文件img = data.pixel_array  #使用pydicom读取图像数据imageio.imsave(JPGpath,img)  #保存JPG图像到out_path

原理上讲 此行代码.jpg改为.png等则可以保存为其他图像格式

JPGpath = d+"\T1jpg\\"+files+".jpg" #将JPG保存到此文件夹
PNGpath = d+"\T1jpg\\"+files+".png" #将PNG保存到此文件夹

当然JPG也可以转换为DCM,只是需要一个DCM文件
因为机器一般会直接输出DCM文件,为了方便处理(比如勾画MASK掩膜)我们才会将其转换为JPG然后再转换为DCM,所以我们一般会有原DCM文件,只要我们将原DCM文件里存储图像的数据部分修改为新的JPG图像数据再保存即可将JPG转换为DCM文件
可参考这位博主的博客:Python JPG图片转DCM
原博客未说清为何还需要一个DCM文件才能把JPG转为DCM 在此做了一些解释
代码如下(需要下载opencv2):

import pydicom
import numpy as np
import os
from pydicom.uid import ExplicitVRLittleEndian
import cv2
import imageio
from matplotlib import pylab as pltimg = cv2.imread(r"C:\Users\Miao\Desktop\Sample\01\T1jpg\IMG-0003-00001.jpg")
#↑↑↑↑↑↑读取JPG文件↑↑↑↑↑↑
img_arr16 = np.array(img, dtype=np.uint16)
img_arr16 = img_arr16.astype('int16')
data_changed = img_arr16[:, :, 0]  #灰度图像三通道数据相同读取一个通道即可
pd = data_changed.tobytes()
dcm = pydicom.dcmread("001.dcm")  #需要一个已有的DCM文件 最好是转为JPG的原DCM文件
dcm.PixelData = pd  #将这个DCM文件的图像像素信息修改为JPG文件的数据
dcm.save_as("002.dcm")  #保存为新的DCM文件

使用radiomics等库对病理信息进行分析时,可能需要用到NRRD格式的原文件与NII格式的MASK掩膜文件,所以还需要掌握DCM转NRRD以及NRRD转NII的方法

DCM转NRRD可参考这位博主的博客:dcm图片到nrrd的格式转换(二维到三维)
核心代码如下

import SimpleITK as sitk
import osdef DCMtoNRRD(file_path):out_path = file_pathdcms_name = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(file_path)dcms_read = sitk.ImageSeriesReader()dcms_read.SetFileNames(dcms_name)dcms_series = dcms_read.Execute()sitk.WriteImage(dcms_series,out_path+'\\NRRD'+'.nrrd') #保存

因为掩膜可能需要用到nii文件,所以还需要NRRD文件转NII文件的方法
可以参考这位博主的博客:nrrd文件格式转NIFTI
需要用到vkt库 若未安装请pip install vkt
核心代码如下:

import vtkdef readnrrd(filename):reader = vtk.vtkNrrdReader()reader.SetFileName(filename)reader.Update()info = reader.GetInformation()return reader.GetOutput(), infodef writenifti(image,filename, info):writer = vtk.vtkNIFTIImageWriter()writer.SetInputData(image)writer.SetFileName(filename)writer.SetInformation(info)writer.Write()m, info = readnrrd(r'C:\Users\Miao\Desktop\T1nr\1.nrrd')
writenifti(m,r'C:\Users\Miao\Desktop\T1nr\1.nii', info)

已更新Python手动勾画病灶(Mask掩膜)的方法:Python 医学影像DCM文件Mask掩膜ROI勾画

Python JPG转DCM,DCM转JPG,DCM转NRRD,NRRD转NII相关推荐

  1. DICOM医学图像处理:BMP转DCM、DCM转BMP、多张BMP转DCM、JPG转DCM,,多张JPG转DCM。

    使用DCMTK库实现BMP转DCM的互相转换以及JPEG转DCM.使用DCMTK库其中在编译的时候错了好几次,在这有编译好的库给大家分享在此附上连接只需要1积分(DCMTK编译好的库-C/C++其他资 ...

  2. Python JPG文件或DCM文件Mask掩膜ROI手动圈画轮廓

    DCM文件是一种医学影像文件,除了文件信息,还包含影像数据,即图像信息,只要能够提取到这个图像信息,就可以将其转换为如JPG等图片格式. 在医学影像处理中,常用到MASK掩膜,即勾画病灶区域,以进行病 ...

  3. .dcm格式文件软件读取及python处理

    要处理一些.DCM格式的焊接缺陷图像,需要读取和显示.dcm格式的图像.通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件.若要查看dcm格式文件,可下Echo viewer ...

  4. Python dcm转jpg与jpg转dcm

    DCM文件是一种医学影像文件,除了文件信息,还包含影像数据,即图像信息,只要能够提取到这个图像信息,就可以将其转换为如JPG等图片格式. 在医学影像处理中,常用到MASK掩膜,即勾画病灶区域,以进行病 ...

  5. Python JPG图片转DCM

    和dcm转dcm一样的方法,同样是通过修改dcm.PixelData来改变dcm的像素内容. 下面是将一个三通道黑白JPG图片(512,512,3)转为dcm文件的例子: 注意:黑白二值图的三个通道, ...

  6. Nii转png,Nii转dcm,Dcm转png

    Nii转png,Nii转dcm,Dcm转png 前言 Nii转PNG Nii转DCM DCM转PNG 完整代码 结束语 前言 这篇文章主要是对之前使用的nii文件进行一些格式的转换,nii文件是之前用 ...

  7. 将一个dcm格式的医学影像文件处理为一个png格式的图像和一个xml格式的文件

    将dcm格式的医学影像文件处理为png格式的图像和xml格式的文件可以使用转换工具来实现.可以使用如下方式: 使用 Python 库 pydicom 和 pillow 库读取 dcm 文件并转换成 p ...

  8. 标定数据分析-DCM(.DCM)

    欢迎关注<汽车软件技术>公众号,回复关键字获取资料. 1. DCM介绍 DCM(Data Conservation Format)是一种标定数据文件格式,文件后缀是".dcm&q ...

  9. FPGA之道(49)DCM与PLL

    文章目录 前言 DCM与PLL PLL模块基本端口简介 时钟输入.输出端口 时钟反馈端口 PLL锁定指示端口 PLL复位端口 PLL配置端口 DCM模块基本端口简介 时钟输入端口 时钟输出端口分类 时 ...

最新文章

  1. 是的,网络身份证来了!一堆技术和安全上的麻烦事也来了
  2. 安装python步骤-小白入门:Python安装的10个步骤,极其细致!!
  3. 使用links方式安装eclipse插件
  4. 174. Dungeon Game 地下城游戏
  5. 如何给Android应用创建本地服务
  6. Oracle11g 统计信息——统计信息自动收集任务
  7. 业务逻辑全写在sql_12306的业务逻辑很复杂么?一条SQL语句搞不定?
  8. NHibernate入门实例
  9. PHP读写指定URL参数的方法
  10. php 学习笔记之搭建开发环境(mac版)
  11. 清除VCENTER中的日志文件
  12. 五种常用手机Java编程软件
  13. 计算机信息管理学书心得,学习erp的心得体会共计5篇
  14. 论文翻译(二) CRNN 基于图像序列的识别的识别的端到端可训练神经网络及其在场景文字识别的应用
  15. [教程] 关于一种比较特别的线段树写法
  16. m3u8视频格式转换
  17. 随机取中文名字,百家姓,2500个常见字,支持复姓
  18. BZOJ1050 [HAOI2006]旅行comf(Kruskal算法)
  19. 搜索引擎优化SEO专业术语总结(新手篇)
  20. 继Facebook之后,微软正式宣布:全面进军「元宇宙」

热门文章

  1. linux rdesktop 远程,linux下rdesktop远程联接windows系统(配合xshell工具的使用及遇到的问题)...
  2. win10 x64中inlineHook SSDT里面的函数
  3. python出现invalid argument什么意思_python程序运行后提示IOError: [Errno 22] Invalid argument 急啊!!!!...
  4. (转载)周鸿祎在360新员工入职培训上的讲话
  5. Java opengl openal_OpenCL、OpenGL、OpenAL
  6. 2021春招BAT面试真题详解,etl开发工程师简历模板
  7. 微信小程序+Echarts实现中国地图
  8. AE镜头光晕插件:Optical Flares for Mac(支持ae2022)
  9. 左值右值将亡值泛左值
  10. PostgreSQL的昨天今天和明天