python读取dicom格式的图像并转为png格式

  • Post author:
  • Post category:python


使用网上的大多数格式转换过来图像失真过于严重,出现了这种情况:

在这里插入图片描述

而原始图像是:

在这里插入图片描述

读取的过程中直接变成了二值图,所以就先对读取到的原始像素矩阵做归一化,在*255变为灰度图,代码如下:

import SimpleITK as sitK
import numpy as np
import cv2
import os
def convert_from_dicom_to_png(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)

读取dicom需要用到sitk,安装命令:

pip install SimpleITK

读取dicom图像:

                        ds_array = sitK.ReadImage(dcm_image_path)
                        img_array = sitK.GetArrayFromImage(ds_array)
                        shape = img_array.shape
                        img_array = np.reshape(img_array,(shape[1],shape[2]))
                        high = np.max(img_array)
                        low = np.min(img_array)
                        convert_from_dicom_to_png(img_array,low,high,output_png_file)

最后的得到的png图像与原图看起来没什么区别。



版权声明:本文为lwf1881原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。