主要原理:調整dicom的窗寬,使之各個像素點上的灰度值縮放至[0,255]范圍內。
使用到的python庫:SimpleITK
下面是一個將dicom(.dcm)圖片轉換成jpg圖片的demo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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圖片的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/IT_forlearn/article/details/81046417