【问题标题】:applying sign to dicom image for 16 bit将符号应用于 16 位的 dicom 图像
【发布时间】:2016-11-03 15:23:11
【问题描述】:

我正在尝试开发一个 dicom 图像查看器。我已成功解码图像缓冲区。我将所有图像像素值存储在 C++ 中的 unsigned char 缓冲区中。

现在,当我显示图像时,它适用于像素表示 (0028,0103) =0 的图像。有人可以告诉我如何将此签名转换应用到这些解码缓冲区中。我不知道如何将此有符号位转换为无符号位(我认为通常使用类型转换的转换效果不佳)。请发布 16 位图像的回放,这是我现在真正需要的。

我正在尝试从头开始创建一个查看器,它只是将图像放在屏幕上。我已经成功完成了dicom图像的解码和显示。但是,当我尝试打开像素表示(标记 0028,0103)=1 的图像时,图像显示不正确。从 16 位到 8 位的转换是与应用窗口级别和宽度(在 dicom 图像中找到的值)一起完成的,转换只是线性的。

【问题讨论】:

  • 请提供更多关于您想要实现的目标的详细信息,因为您的问题目前需要的答案比您可能预期的要多得多。尤其重要的是要知道在缩小 16 -> 8 位时如何控制信息丢失。你应用窗口吗?或者你只是缩小原始像素数据?您的查看器是否将支持“按原样显示”之外的功能,例如调整亮度/对比度?您是在使用 DICOM 库还是真的从头开始构建 DICOM 文件?
  • 感谢您的宝贵时间,我已在问题中添加了详细信息。
  • stackoverflow.com/questions/40231080/… 这个问题是关于将 16 位图像转换为我已成功完成的 8 位图像。现在我需要知道如何在 dicom 图像中应用符号位
  • 没有有符号位无符号位。只有位和有符号类型无符号类型

标签: c++ type-conversion dicom sign bit-representation


【解决方案1】:

通过考虑 TransferSyntax(字节序),确保将像素数据正确读取到有符号短数组中。然后申请windowing equation from the DICOM Standard。设置ymin=0, ymax = 255 实现重新缩放到8位。

一般来说,处理 DICOM 像素数据需要考虑的因素更多:

  • 光度解释
  • 已存储位,高位
  • 模态 LUT(重新调整斜率/截距或存储在 DICOM 标头中的查找表)

我假设光度解释是 MONOCRHOME2,高位 = 存储的位 - 1,模态 LUT 是身份转换(斜率 = 1,截距 = 0)。

其他有关此主题的 SO 帖子:

Converting Pixel Data to 8 bit

Pixel Data Interpretation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多