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

时间:2014-03-26 06:58:51

标签: image matlab image-processing

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

2 个答案:

答案 0 :(得分:2)

无符号8位图像占用的内存较少,某些操作(例如中值滤波)可以更快地执行。

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

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

答案 1 :(得分:1)

简单的答案是,它使图像占用更少的内存。这不仅有助于保留存储空间,而且最有可能加快处理时间。 另外,在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 val的全范围,你将首先想要缩放它,因此它的值范围从0到256.