2017-08-02 99 views
0

我正在尝试使用Octave读取.tif格式的医学影像数据。恰巧只有https://fiji.sc/的软件才有能力读取我拥有的医学影像。我所指的图像样本是this之一。此图片仅在斐济以.tif格式可读。该图像也可以转换为jpg图像。只有在其他图像编辑软件可以看到数据点之后。现在的问题是,我想把它加载到八度并阅读它 - 目前是不可能的。 imshow()函数的倍频程不允许我可视化给定的.tif文件。在Octave中读取tif文件的问题

因此,如果任何人有阅读这种文件格式的经验,请让我知道。谢谢。

回答

3

您链接的图像是一个16位灰度图像,请参阅$ gm identify -verbose hello.tif。所以让我们把它加载到GNU八度:

img = imread ("hello.tif"); 
hist (img(:), 200);   # show histogram 

histogram of image

啊!你的形象的主要信息是在范围0-600(可能使用的图像采集系统有11个或12位分辨率)所以让我们的规模和打印此部分为彩色编码(贻贝)形象:

imagesc (img, [0 600]) 
colorbar 

imagesc with viridis colormap

这是你想要的吗?当然,我们也可以使用一个灰色的颜色表,请尝试:colormap gray

如果这样仍不能满足你的需要,你真的应该解释一下你希望看到什么....

+2

你可能想解释为什么斐济( ImageJ)默认工作。原因是对于非8位图像,ImageJ仅使用图像的最大值和最小值。人们可以设置其他值,但即使如此,只能在最大值和最小值之间。数据类型的实际限制从不使用。这是有道理的,因为大多数16位图像首先不会来自16位相机。 – carandraug

+0

我感兴趣的是使用滤镜去噪图像。目前我无法使用八度的“imshow()”。我发现的原因之一是该图像被称为16位编码,但八度只允许显示8位图像。那么有没有使用'imshow()'的成功方法。 – motiur

+1

@motiur:如上所示,“八度只允许显示8bit的图像”并不是真的。拍摄上述图像的相机具有11位或12位分辨率,存储为16位整数。所以通常将其缩放到0..1的范围内以便进一步处理。如果你只使用没有LIMITS的'imshow',它将0显示为黑色,2^16-1显示为白色,但由于整数范围是0..2000(请参阅我的直方图),您会看到几乎是黑色的图像。没有魔术在这里 – Andy