我有一个12位的2D DICOM图像,我需要对Bits-Store做一些修改以将其转换为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位。但是它没有正确保存。
发布于 2019-12-27 19:08:58
查看的图像看起来很奇怪,因为它仍然被视为16位容器中的12位数据。您需要设置存储的位数、分配的位数和高位数,以匹配新位深度:
dcm_ds.BitsStored = 8
dcm_ds.BitsAllocated = 8
dcm_ds.HighBit = 7如果你已经从有符号变为无符号,你还需要将像素表示更改为0。
https://stackoverflow.com/questions/56872411
复制相似问题