Python dcm转jpg与jpg转dcm

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 shutil

di=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 di
	global d
    c = []#医学影像常使用:多个患者→多种区域或时期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 plt

img = 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文件

你可能感兴趣的:(python,开发语言)