如下:
file传入文件全路径
注意:这个处理不了压缩图(维度较高的,如果需要通用化的请阅览到最后!!!!)
10.24这个参数:转 1024*1024的图,也可以自定义
import pydicom
import matplotlib.pyplot as plt
from skimage import exposure,img_as_float
def dicom_2png(file):
_currFile = file
dcm = pydicom.dcmread(file)
fileName = os.path.basename(file)
imageX = dcm.pixel_array
temp = imageX.copy()
print("shape ----", imageX.shape)
picMax = imageX.max()
vmin = imageX.min()
vmax = temp[temp < picMax].max()
# print("vmin : ", vmin)
# print("vmax : ", vmax)
imageX[imageX > vmax] = 0
imageX[imageX < vmin] = 0
# result = exposure.is_low_contrast(imageX)
# # print(result)
image = img_as_float(imageX)
plt.cla()
plt.figure('adjust_gamma', figsize=(10.24, 10.24))
plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
plt.imshow(image, 'gray')
plt.axis('off')
plt.savefig(fileName + '.png')
time.sleep(1)
PS:经过几个月研究,博主已处理好压缩的问题。
原理是先将Dicom图压缩去掉,转通用图(主要是Dcm图显矩阵那块转换)
转换后pydcm就可以读取 : imageX = dcm.pixel_array属性了
不多说直接上地址,这个暂时未传至github,直接放我的码云了
https://gitee.com/ocen/dcm_to_png
主处理逻辑请读:AITBDCMService.py(被注释掉的是win服务注入不影响使用)
依赖VC环境,请悉知,一般装到VS 2015或以上是没问题的