医学图像中有符号16位转换为无符号8位有什么好处?



我有一个类型为16位带符号的DICOM图像。我看过一些论文,作者经常把它转换成无符号的8位。但他们没有解释为什么这么做。你能解释一下这项工作的好处吗?并如何实现它的matlab代码?

无符号8位图像占用更少的内存,并且一些操作,例如中值过滤,可以在它们上执行得更快。

但是,当原始图像的动态范围超过256个灰度值时,您可能会丢失信息。

如果您确实想转换图像,您可以执行convertedImage = uint8(image - min(image(:)));,但是如果您不受RAM的限制,您可能希望将图像转换为double而不是convertedImage = double(image),因为这样可以使用更多的数学运算,例如许多过滤方法。

简单的答案是,它使图像占用更少的内存。这不仅有助于保存存储空间,而且很可能会加快处理时间。此外,在uint8上工作的算法也很有可能适用于其他类型。

在matlab中从int32转换为uint8,你必须考虑你到底想要什么:

你的图像是否只包含256个值?然后你可以像乔纳斯说的那样做convertedImage = uint8(image - min(image(:))),但这将剪辑你的值超出范围:

>> uint8([-1 0 1 200 255 256 257])
ans =
    0    0    1  200  255  255  255
>> uint8([-1 0 1 200 255 256 257] - min([-1 0 1 200 255 256 257]))
ans =
    0    1    2  201  255  255  255

如果您的图像使用完整的可能的int16间隔,您将首先缩放它,使其值范围从0到256。

最新更新