【问题标题】:How to show legally DICOM 16 unsigned integer on the device are supporting 8 bit unsigned integer?如何在设备上合法显示 DICOM 16 无符号整数支持 8 位无符号整数?
【发布时间】:2013-09-17 18:33:49
【问题描述】:

我正在开发 iOS 上的医疗应用程序。 iOS 设备仅支持带有 GL_LUMINANCE 的 GL_UNSIGNED_BYTE,或者通常每个组件仅支持 8 位。现在我有一些灰度图像是 16 位无符号整数,我想展示它们。我发现我们无法显示 16 位无符号整数,因此我应该将它们转换为 8 位无符号整数。但在医疗方面,我不应该丢失数据或应该有最少的数据丢失。

现在,我的问题是:如何通过医学中的合法转换将 16 位无符号整数转换为 8 位无符号整数?现在我正在使用最简单的方法来做到这一点。只需将其划分为 256 :-O。其他一些商业软件正在这样做并且他们正在使用。

提前谢谢你。

【问题讨论】:

  • 您可以在大多数 iOS 设备中使用浮点和半浮点输入纹理:stackoverflow.com/a/5704567/19679
  • 我测试过浮动。但它在我的 iPad 2 上运行。你测试成功了吗?
  • 嗨!我知道我正在复活一个非常古老的话题,但是有没有办法可以与 BitDepth 16 共享该图像?我也在开发一个成像应用程序,需要这样的图像来测试。谢谢!

标签: ios opengl-es dicom grayscale


【解决方案1】:

必须转换这些值,以显示它们应用了窗口级别

灰度 Dicom 图像通常有两个数据元素(Dicom 字段),包含值 WC(窗口中心,数据元素:0028,1050)和 WL(窗口级别,数据元素:0028,1051)。这些值定义了显示图像中包含的信息所需的线性方程。

您可以找到有关窗口级别here的概念的更详细说明。

【讨论】:

  • 此外,您不能总是期望 DICOM 元素为窗口和级别提供适当的值。应该考虑为用户提供调整参数的机制的必要性。
  • 我同意,但对我来说,问题是开发人员不了解窗口级别的概念,并试图直接进行 16 位灰度到 RGB(或 8 位灰度)的转换,而不考虑可能窗水平值的存在
  • 有一件事让我很痛苦:我在我的 iPad 上安装了 MIM,你可以更改级别/窗口。但是级别可以超过 255。现在我的 iPad 2 只支持 GL_UNSIGNED_BYTE 怎么可能?例如,您可以将它(级别)更改为 2000?我认为更改窗口可以是任何东西,但级别不应超过 iPad 支持的版本。
  • 您可以打赌,您的 iPad 内部支持读取有符号整数和无符号整数,因此它完全能够读取原始 Dicom 图像数据。软件读取原始值,进行必要的调整和转换(位偏移、重新缩放等),最后应用窗口级别,以便将这些值的特定范围映射到 RGB 空间(在这种情况下为 8 位灰度)。
  • Window Center 和 Window Level 经常互换并用作同义词。所以,WC = WL
【解决方案2】:

我尝试将每个像素除以一个值(矩阵中的最大值或最亮/256),然后每个像素变成一个 8 位值。当我应用https://www.dabsoft.ch/dicom/3/C.11.2.1.2/ 中提到的伪方程时,它给出了相同的结果。

const void *bytes = [data bytes];
NSMutableData* ary = [[NSMutableData alloc] init];  
int maxValue = 4087/256; //its a dummy value, use your max value in image instead of 4087
for (NSUInteger i = 0; i < [data length]; i += sizeof(int16_t)) {
    UInt16 elem = OSReadLittleInt16(bytes, i);

    UInt8 temp = round(elem/maxValue);

    [ary appendBytes:&temp length:sizeof(UInt8)];

}

使用“ary”来制作图像。

【讨论】:

  • 您只是在应用“自动”窗调平的特殊情况:在您的情况下,WW = Bmax,WC = Bmax / 2,(*) Bmax = Max brigthness。您可以改进此方法,对最小值进行类似的操作,因此您最终会得到:WW = Bmax - Bmin 和 WC = (Bmax + Bmin) / 2
猜你喜欢
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多