DICOM 像素数据压缩解压缩是否会弄乱 window 中心和 window 宽度
Can DICOM pixel data compression decompression mess with window center and window width
我正在查看计算机断层扫描 (CT) DICOM 图像。这些最初是未压缩的 DICOM 图像。我有这些 DICOM 图像的无损 J2K 压缩格式:Transfer syntax = 1.2.840.10008.1.2.4.90 (JPEG-2K Lossless)。
当我解压缩这些 DICOM 图像时:Transfer Syntax =1.2.840.10008.1.2.1 (Little Endian Explicit) 并在 DICOM 查看器中并排查看压缩和未压缩的 DICOM 图像,然后我观察到
- 压缩和未压缩图像需要不同的 "window level " 才能查看("Window level" = window center' = WC = Brightness 和 "window Width" = WW = Contrast 的组合)
- DICOM header 似乎没有什么不同
- 压缩后的图像可以在行业 standard/preset 级别的图像中查看 - 但未压缩的图像在该级别上看起来并不好
所以问题
- 水平(window 中心和 window 宽度)的这种变化是否可以归因于我的编解码器的问题。就像我的编解码器弄乱了像素数据,因为它对像素数据的处理不正确?
- 有没有办法通过调整 DICOM header 中的字段来解决这个问题?
我查看了
Post on Window width and center calculation of Dicom Image。虽然 post 告诉我重新缩放截距和斜率用于将图像的像素值转换为对应用程序有意义的值,但我正在尝试弄清楚如何与
相关联
- 我在视觉上看到的(原始和调整后的 window 中心和 window 宽度之间的关系)
- 有没有一种方法可以以编程方式关联像素值以获得 wc、ww、比例截距斜率的值?
我也查看了 (Correct Pixel Processing Logic for DICOM JPEG(RGB) for Applying Window Width and Level Filter) - 但这似乎与图像渲染有关。我的问题与调整 DICOM header(wc?ww?scale intercept?slope?)以使观众能够正确呈现它有关。查看 DICOM 像素数据,我能否根据像素数据元素中的像素值为这些第 28 组元素找到适当的级别。是否有已知函数可以计算此类内容?
我的图片是单色的
非常感谢
Yogesh Devi
如果您知道 real-world 范围,您应该能够计算出比例和截距以固定在 header 中,而 window 级别等其他所有内容保持不变。计算见下文...
从好的图像来看,如果您找到 pre-scaled 数据的范围,它可能看起来像这样:
min1 = 100
max1 = 1900
使用 header scale/intercept 信息...
scale1 = 5
intercept1 = 500
...然后可以转换成real-world,有意义的值:
(min1 * scale1) + intercept1 = real-min
(max1 * scale1) + intercept1 = real-max
real-min = 1000
real-max = 10000
real-range = 9000
坏图片中需要忽略header,只找到pre-scaled数据范围。例如:
min2 = -100
max2 = 17900
range2 = 18000
现在使用 real-world 范围计算比例和截距:
scale2 = (real-range / range2) = 0.5
intercept2 = real-max - (max2 * scale2) = 1050
应用它们,您可以测试您是否获得了正确的 real-world 值:
(min2 * scale2) + intercept2 = (-100 * 0.5) + 1050 = 1000 = real-min
(max2 * scale2) + intercept2 = (17900 * 0.5) + 1050 = 10000 = real-max
请检查压缩图像的像素表示 (0028, 0103) 标记的值。值 1 表示图像数据在应用模态 LUT 转换后进行签名。如果您将模态 LUT 转换应用为解压缩过程的一部分,则在另存为 Little Endian 时,您应该在未压缩的数据集中重置它们(将斜率重新调整为 1 并将截距重新调整为 0)。否则,查看器将再次对转换后的图像数据应用模态 LUT 转换。
我正在查看计算机断层扫描 (CT) DICOM 图像。这些最初是未压缩的 DICOM 图像。我有这些 DICOM 图像的无损 J2K 压缩格式:Transfer syntax = 1.2.840.10008.1.2.4.90 (JPEG-2K Lossless)。 当我解压缩这些 DICOM 图像时:Transfer Syntax =1.2.840.10008.1.2.1 (Little Endian Explicit) 并在 DICOM 查看器中并排查看压缩和未压缩的 DICOM 图像,然后我观察到 - 压缩和未压缩图像需要不同的 "window level " 才能查看("Window level" = window center' = WC = Brightness 和 "window Width" = WW = Contrast 的组合) - DICOM header 似乎没有什么不同 - 压缩后的图像可以在行业 standard/preset 级别的图像中查看 - 但未压缩的图像在该级别上看起来并不好
所以问题
- 水平(window 中心和 window 宽度)的这种变化是否可以归因于我的编解码器的问题。就像我的编解码器弄乱了像素数据,因为它对像素数据的处理不正确?
- 有没有办法通过调整 DICOM header 中的字段来解决这个问题?
我查看了 Post on Window width and center calculation of Dicom Image。虽然 post 告诉我重新缩放截距和斜率用于将图像的像素值转换为对应用程序有意义的值,但我正在尝试弄清楚如何与
相关联- 我在视觉上看到的(原始和调整后的 window 中心和 window 宽度之间的关系)
- 有没有一种方法可以以编程方式关联像素值以获得 wc、ww、比例截距斜率的值?
我也查看了 (Correct Pixel Processing Logic for DICOM JPEG(RGB) for Applying Window Width and Level Filter) - 但这似乎与图像渲染有关。我的问题与调整 DICOM header(wc?ww?scale intercept?slope?)以使观众能够正确呈现它有关。查看 DICOM 像素数据,我能否根据像素数据元素中的像素值为这些第 28 组元素找到适当的级别。是否有已知函数可以计算此类内容?
我的图片是单色的
非常感谢
Yogesh Devi
如果您知道 real-world 范围,您应该能够计算出比例和截距以固定在 header 中,而 window 级别等其他所有内容保持不变。计算见下文...
从好的图像来看,如果您找到 pre-scaled 数据的范围,它可能看起来像这样:
min1 = 100
max1 = 1900
使用 header scale/intercept 信息...
scale1 = 5
intercept1 = 500
...然后可以转换成real-world,有意义的值:
(min1 * scale1) + intercept1 = real-min
(max1 * scale1) + intercept1 = real-max
real-min = 1000
real-max = 10000
real-range = 9000
坏图片中需要忽略header,只找到pre-scaled数据范围。例如:
min2 = -100
max2 = 17900
range2 = 18000
现在使用 real-world 范围计算比例和截距:
scale2 = (real-range / range2) = 0.5
intercept2 = real-max - (max2 * scale2) = 1050
应用它们,您可以测试您是否获得了正确的 real-world 值:
(min2 * scale2) + intercept2 = (-100 * 0.5) + 1050 = 1000 = real-min
(max2 * scale2) + intercept2 = (17900 * 0.5) + 1050 = 10000 = real-max
请检查压缩图像的像素表示 (0028, 0103) 标记的值。值 1 表示图像数据在应用模态 LUT 转换后进行签名。如果您将模态 LUT 转换应用为解压缩过程的一部分,则在另存为 Little Endian 时,您应该在未压缩的数据集中重置它们(将斜率重新调整为 1 并将截距重新调整为 0)。否则,查看器将再次对转换后的图像数据应用模态 LUT 转换。