2

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

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

先感谢您。

4

2 回答 2

3

必须转换这些值才能显示它们应用Window Level

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

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

于 2013-05-06T18:13:52.713 回答
1

我尝试通过将每个像素除以一个值(矩阵中的最大值或最亮 / 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”来制作您的图像。

于 2013-09-17T10:28:41.837 回答