我正在尝试开发 dicom 图像查看器。我已经成功解码了图像缓冲区。我将所有图像像素值存储在C ++中的unsigned char
缓冲区中。
现在,当我显示图像时,它对于具有像素表示(0028,0103)= 0的图像工作正常。有人可以告诉我如何将这个带符号的转换应用到这些解码缓冲区中。我不知道如何将这个有符号的位转换成无符号位(我认为使用类型转换的常规转换并不能很好地工作)。请发布16位图像的重播,这就是我现在真正需要的。
我正在尝试从头开始创建一个查看器,它只是将图像放入屏幕。我已经成功完成了dicom图像的解码和显示。但是当我尝试打开具有像素表示(标签0028,0103)= 1的图像时,图像显示不正确。从16位到8位的转换与应用窗口级别和宽度(在dicom图像内部找到的值)一起完成,转换只是线性的。
答案 0 :(得分:0)
确保通过考虑TransferSyntax(endianess)将像素数据正确读入带符号的短数组。然后应用windowing equation from the DICOM Standard。在设置ymin = 0时,ymax = 255,实现重新缩放到8位。
一般来说,还有更多要考虑处理DICOM像素数据:
我假设光度学解释是MONOCRHOME2,高位=存储的位数 - 1,模态LUT是身份转换(斜率= 1,截距= 0)。
处理此主题的其他SO帖子: