Dicom转png,jpg等,可处理压缩图像

如下:

    file传入文件全路径

    注意:这个处理不了压缩图(维度较高的,如果需要通用化的请阅览到最后!!!!)

    10.24这个参数:转 1024*1024的图,也可以自定义

import pydicom
import matplotlib.pyplot as plt
from skimage import exposure,img_as_float

def dicom_2png(file):
    _currFile = file
    dcm = pydicom.dcmread(file)
    fileName = os.path.basename(file)
    imageX = dcm.pixel_array
    temp = imageX.copy()
    print("shape ----", imageX.shape)
    picMax = imageX.max()
    vmin = imageX.min()
    vmax = temp[temp < picMax].max()
    # print("vmin : ", vmin)
    # print("vmax : ", vmax)
    imageX[imageX > vmax] = 0
    imageX[imageX < vmin] = 0
    # result = exposure.is_low_contrast(imageX)
    # # print(result)
    image = img_as_float(imageX)
    plt.cla()
    plt.figure('adjust_gamma', figsize=(10.24, 10.24))
    plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
    plt.imshow(image, 'gray')
    plt.axis('off')
    plt.savefig(fileName + '.png')
    time.sleep(1)

  PS:经过几个月研究,博主已处理好压缩的问题。

  原理是先将Dicom图压缩去掉,转通用图(主要是Dcm图显矩阵那块转换)

  转换后pydcm就可以读取 : imageX = dcm.pixel_array属性了

  不多说直接上地址,这个暂时未传至github,直接放我的码云了

  https://gitee.com/ocen/dcm_to_png

  主处理逻辑请读:AITBDCMService.py(被注释掉的是win服务注入不影响使用)

  依赖VC环境,请悉知,一般装到VS 2015或以上是没问题的

你可能感兴趣的:(python)