如何将DICOM文件中的存储值转换为现实单位?

问题描述 投票:0回答:1

我正在尝试使用Matlab或python计算PET DICOM图像上的放射性浓度。我在DICOM标准中已经读到

(0028,1053) Rescale Slope    
(0028,1052) Rescale Intercept

可用于将存储的16位单元(在我的情况下)映射到实际单位。这些文件还包含以下元素:

(0040,9096) Real World Value Mapping Sequence    
(0028,9145) Pixel Value Transformation Sequence 

作为(5200,9230) Per Frame Functional Groups Sequence(对于动态测量中的每个帧)或(5200,9229) Shared Functional Groups Sequence(对于静态测量)的一部分。这些序列还包含重新缩放的斜率和截距。这些值彼此匹配(对于给定的帧,(0040,9096) Real World Value Mapping Sequence(0028,9145) Pixel Value Transformation Sequence值相同),但是它们与“主”斜率和截距(这是PET Image模块的属性)的值不匹配)。例如,在使用pydicom将动态多帧文件读取为ds之后:

#This is the "main" slope, part of the PET Image module    
>ds.RescaleSlope  
Out[31]: "0.478081"

#This is a dynamic image, for a static image SharedFunctionalGroupsSequence would be used
>ds.PerFrameFunctionalGroupsSequence[0].PixelValueTransformationSequence[0].RescaleSlope
Out[34]: "104.435089"

>ds.PerFrameFunctionalGroupsSequence[0].RealWorldValueMappingSequence[0].RealWorldValueSlope
Out[38]: 104.43508911132812

我的问题是:如何正确应用这些转换,以从像素值中获取现实世界的单位(例如,标题中所述的Bq / ml?我是否需要同时乘以ds.RescaleSlope和RealWorldValueSlope? (在我的情况下,截距始终为0)。这与dicom标准states似乎违反直觉,因为这两个值之间确实没有任何关系,但是ds.RescaleSlope有什么作用?

感谢您的任何帮助。

image image-processing dicom medical pydicom
1个回答
0
投票

如果遵循David Clunie in this post,则在这种情况下应使用Real World Value Mapping Sequence,如果不支持,则“缩放/斜率”为后备。我本人并没有使用过Real World Value Mapping Sequence(如果存在,总是在显示管道中应用模态LUT),所以我对此并不完全确定,但是...

© www.soinside.com 2019 - 2024. All rights reserved.