【问题标题】:Error in saving manipulated dicom to a new readable dicom file?将操纵的 dicom 保存到新的可读 dicom 文件时出错?
【发布时间】:2019-07-03 14:31:39
【问题描述】:

我有一个 12 位的 2D DICOM 图像,我需要对 Bits-Store 进行一些修改以将其转换为 8 位。为此,我修改了 pixel_array。要将这个新修改的 pixel_array 保存为 DICOM 图像,我需要与原始图像相同的元数据,以便生成的 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 位。但是没有正确保存。

【问题讨论】:

  • 您有没有我们可以测试的示例(当然是患者身份不明).dcm 文件?
  • 怎么看不懂?您从 dicom 查看器收到错误消息?或者可能是 pydicom 本身?
  • 实际上,当我使用一些 DICOM 查看器对其进行可视化时,DICOM 图像是重复的。

标签: python dicom pydicom


【解决方案1】:

查看的图像看起来很奇怪,因为它仍然被视为 16 位容器中的 12 位数据。您需要设置 Bits StoredBits AllocatedHigh Bit 以匹配新的位深度:

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

如果您已从已签名变为未签名,您还需要将 Pixel Representation 更改为 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多