python程式設計Demo:將dicom圖片轉換成jpg圖片
阿新 • • 發佈:2019-02-16
主要原理:調整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')