我正在开发iOS上的一个医疗应用。iOS设备只支持带有GL_LUMINANCE的GL_UNSIGNED_BYTE,或者通常每个组件只支持8位。现在我有一些灰度图像是16位无符号整数,我想要显示它们。我发现我们不能显示16位无符号整数,因此我应该将它们转换为8位无符号整数。但在医学中,我不应该丢失数据,或者应该具有最小的数据丢失。
现在,我的问题是:如何在医学中通过合法转换将16位无符号整数转换为8位无符号整数?现在我使用最简单的方法来做这件事。只需将其除以256 :-O。其他一些商业软件也在做这件事,并且正在使用中。
提前谢谢你。
发布于 2013-05-07 02:13:53
发布于 2013-09-17 18:28:42
我尝试将每个像素除以一个值(矩阵中的最大值或最亮/ 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‘来制作你的图像。
https://stackoverflow.com/questions/16401127
复制相似问题