1. 程式人生 > 程式設計 >python 將dicom圖片轉換成jpg圖片的例項

python 將dicom圖片轉換成jpg圖片的例項

主要原理:調整dicom的窗寬,使之各個畫素點上的灰度值縮放至[0,255]範圍內。

使用到的python庫:SimpleITK

下面是一個將dicom(.dcm)圖片轉換成jpg圖片的demo:

import SimpleITK as sitk
import numpy as np
import cv2

def convert_from_dicom_to_jpg(img,low_window,high_window,save_path):
  lungwin = np.array([low_window*1.,high_window*1.])
  newimg = (img-lungwin[0])/(lungwin[1]-lungwin[0])  #歸一化
  newimg = (newimg*255).astype('uint8')        #將畫素值擴充套件到[0,255]
  cv2.imwrite(save_path,newimg,[int(cv2.IMWRITE_JPEG_QUALITY),100])

if __name__ == '__main__':

  # 下面是將對應的dicom格式的圖片轉成jpg
  dcm_image_path = '/DICOM_image/lung001.dcm'    #讀取dicom檔案
  output_jpg_path = 'JPG_image/lung001.jpg'
  ds_array = sitk.ReadImage(dcm_image_path)     #讀取dicom檔案的相關資訊
  img_array = sitk.GetArrayFromImage(ds_array)   #獲取array
  # SimpleITK讀取的影象資料的座標順序為zyx,即從多少張切片到單張切片的寬和高,此處我們讀取單張,因此img_array的shape
  #類似於 (1,height,width)的形式
  shape = img_array.shape
  img_array = np.reshape(img_array,(shape[1],shape[2])) #獲取array中的height和width
  high = np.max(img_array)
  low = np.min(img_array)
  convert_from_dicom_to_jpg(img_array,low,high,output_jpg_path)  #呼叫函式,轉換成jpg檔案並儲存到對應的路徑
  print('FINISHED')

以上這篇python 將dicom圖片轉換成jpg圖片的例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。