即使不在Windows图像查看器中,imshow也会显示图像嘈杂

时间:2018-12-16 12:35:25

标签: image matlab image-processing

我正在尝试使用CNN学习细分网络,但是我的网络产生的效果很差。我看着这些图像,我想知道这是否是原因。我输入的图像是.tif文件中的图像堆栈。在Windows图像查看器中,我得到的是: enter image description here

我正在尝试检测并分割上面显示的亮点 但是,当我使用imshow()在Matlab中打开相同文件时,我得到了

enter image description here

所有信息基本上都丢失了。但是,当我使用imagesc()时,我得到以下信息:

enter image description here

哪个更好,但是为什么我的图像不能在我的网络上工作?即使使用经过测试的网络,我也会得到非常不可预测的损失和准确性。

是因为我的图像是以imshow()中显示的版本读取的吗?

2 个答案:

答案 0 :(得分:2)

在MATLAB中,以下约定用于图像:

  • uint8:像素在[0,255]范围内。

  • double:像素在[0,1]范围内。

在双图像上使用imshow时,0到1之间的值将映射到色标(通常是黑到白)。任何大于1的值也将映射为白色。这就是您正在发生的事情:您的大多数像素都显示为白色。

您使用的CNN可能会做出相同的假设,因此会裁剪您的数据。

解决方案是在阅读图像时适当缩放图像。例如,请参见im2double

答案 1 :(得分:1)

imshowimagesc都不旨在处理tiff堆栈。它们用于查看,而不是读取图像数据。您可能还会看到以下警告:

  

“只能显示此多帧文件中的一帧”

您可以根据this answerimreadMatlab gateway to LibTiff library routines)使用tiff分别读取文件中的每个帧,并提供更详细的控制imread不被黑客入侵时如何读取图像。