You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python代码实现DICOM RT Dose体素值与浮点数常量相乘?

解决RT Dose DICOM文件体素值与浮点数常量相乘的问题

问题根源

你的代码在使用整数相乘时,numpy数组的dtype和原始DICOM数据保持一致(比如uint16),转成字节后能正确写入文件;但用浮点数相乘时,数组会自动转为浮点类型,直接写入PixelData会导致数据类型不匹配。另外,RT Dose的真实剂量值是由PixelData和DoseGridScaling元数据共同计算的,直接修改像素值会破坏这个标准对应关系。


推荐解决方案(符合DICOM标准)

RT Dose的真实剂量计算公式为:真实剂量 = PixelData值 × DoseGridScaling。因此,想要将所有剂量值乘以任意常量(整数/浮点数),只需修改DoseGridScaling的值即可,无需改动像素数组,这种方式兼容性更好、效率更高。

修改后的代码:

import os
import pydicom

# 目录路径
directory_path = r'D:\RT Dose'

# 支持整数或浮点数常量
constant_value = 2.8

for filename in os.listdir(directory_path):
    if filename.endswith(".dcm"):
        file_path = os.path.join(directory_path, filename)
        rt_dose = pydicom.dcmread(file_path)
        
        # 直接修改剂量缩放因子,实现剂量值整体相乘
        rt_dose.DoseGridScaling *= constant_value
        
        # 保存修改后的文件
        output_file_path = os.path.join(directory_path, f"modified_{filename}")
        rt_dose.save_as(output_file_path)
        print(f"Modified file saved as: {output_file_path}")

备选方案(直接修改像素值,不推荐)

如果坚持要直接修改像素数组,需要先计算真实剂量值,乘以常量后再转换回原始整数类型,同时保证和DoseGridScaling的对应关系,这种方式可能丢失精度且兼容性较差。

示例代码:

import os
import pydicom
import numpy as np

directory_path = r'D:\RT Dose'
constant_value = 2.8

for filename in os.listdir(directory_path):
    if filename.endswith(".dcm"):
        file_path = os.path.join(directory_path, filename)
        rt_dose = pydicom.dcmread(file_path)
        
        dose_data = rt_dose.pixel_array
        # 计算真实剂量值,乘以常量后转换回原始像素类型
        real_dose = dose_data * rt_dose.DoseGridScaling
        modified_real_dose = real_dose * constant_value
        modified_dose_data = np.round(modified_real_dose / rt_dose.DoseGridScaling).astype(dose_data.dtype)
        
        rt_dose.PixelData = modified_dose_data.tobytes()
        
        output_file_path = os.path.join(directory_path, f"modified_{filename}")
        rt_dose.save_as(output_file_path)
        print(f"Modified file saved as: {output_file_path}")

内容的提问来源于stack exchange,提问作者aseman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:42:42