将操作的dicom保存到新的可读dicom文件时出错?

时间:2019-07-03 14:31:39

标签: python dicom pydicom

我有一个12位的2D DICOM图像,我需要对位存储进行一些修改以将其转换为8位。为此,我修改了pixel_array。要将这个新的修改后的pixel_array保存为DICOM图像,我需要与原始图像相同的meta_data,以使生成的DICOM完全可读。
我做了以下工作,但最终的DICOM不可读。谁能帮我? '''

import pydicom


ds = pydicom.dcmread('dicom_12bit.dcm')
high = 255
low = 0 
cmin = ds.pixel_array.min()
cmax = ds.pixel_array.max()
cscale = cmax - cmin
scale = float(high - low) / cscale
dcm_ds.pixel_array = (dcm_ds.pixel_array - cmin) * scale + low
dcm_ds.pixel_array = (dcm_ds.pixel_array.clip(low, high) + 0.5).astype(np.uint8)
dcm_ds.PixelData = dcm_ds.pixel_array.tobytes()
dcm_ds.save_as("new_8bit_dicom.dcm")

现在,新DICOM文件中存储的位应为8位。但是保存不正确。

1 个答案:

答案 0 :(得分:0)

所查看的图像看起来很奇怪,因为它仍被视为16位容器中的12位数据。您需要设置存储的位已分配的位高位以匹配新的位深度:

dcm_ds.BitsStored = 8
dcm_ds.BitsAllocated = 8
dcm_ds.HighBit = 7

如果您已经从有符号变为无符号,则还需要将像素表示更改为0。