1. 程式人生 > >Dicom轉png,jpg等,可處理壓縮影象

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或以上是沒問題的