使用网上的大多数格式转换过来图像失真过于严重,出现了这种情况:
在这里插入图片描述
而原始图像是:
在这里插入图片描述
读取的过程中直接变成了二值图,所以就先对读取到的原始像素矩阵做归一化,在*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图像与原图看起来没什么区别。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐