我正在尝试使用CNN学习细分网络,但是我的网络产生的效果很差。我看着这些图像,我想知道这是否是原因。我输入的图像是.tif文件中的图像堆栈。在Windows图像查看器中,我得到的是:
我正在尝试检测并分割上面显示的亮点 但是,当我使用imshow()在Matlab中打开相同文件时,我得到了
所有信息基本上都丢失了。但是,当我使用imagesc()时,我得到以下信息:
哪个更好,但是为什么我的图像不能在我的网络上工作?即使使用经过测试的网络,我也会得到非常不可预测的损失和准确性。
是因为我的图像是以imshow()
中显示的版本读取的吗?
答案 0 :(得分:2)
在MATLAB中,以下约定用于图像:
uint8
:像素在[0,255]范围内。
double
:像素在[0,1]范围内。
在双图像上使用imshow
时,0到1之间的值将映射到色标(通常是黑到白)。任何大于1的值也将映射为白色。这就是您正在发生的事情:您的大多数像素都显示为白色。
您使用的CNN可能会做出相同的假设,因此会裁剪您的数据。
解决方案是在阅读图像时适当缩放图像。例如,请参见im2double
。
答案 1 :(得分:1)
imshow
和imagesc
都不旨在处理tiff堆栈。它们用于查看,而不是读取图像数据。您可能还会看到以下警告:
“只能显示此多帧文件中的一帧”
您可以根据this answer或imread
(Matlab gateway to LibTiff library routines)使用tiff
分别读取文件中的每个帧,并提供更详细的控制imread
不被黑客入侵时如何读取图像。