代码之家  ›  专栏  ›  技术社区  ›  StuckInPhDNoMore

imshow将图像显示为噪声,即使它不在windows图像查看器中

  •  0
  • StuckInPhDNoMore  · 技术社区  · 6 年前

    我试图学习一个分割网络使用有线电视新闻网,我的网络正在产生非常糟糕的结果。我看了照片,想知道这是不是原因。我的输入图像是.tif文件中的一堆图像。在Windows图像查看器中,以下是我得到的: enter image description here

    我正试图发现并分割上面显示的亮点 但是当我使用imshow()在Matlab中打开它时

    enter image description here

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

    enter image description here

    哪一个更好,但为什么我的图像不与我的网络工作?我得到了非常不可预测的损失和准确性,即使与尝试和测试的网络。

    是因为我的图片是在 imshow() ?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Cris Luengo    6 年前

    在Matlab中,图像使用以下约定:

    • uint8 :像素在[0255]范围内。

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

    使用时 imshow 在双色图像上,0到1之间的值映射到一个色阶(通常是从黑到白)。任何大于1的值也映射为白色。这就是发生在你身上的事情:你的大部分像素显示为白色。

    很可能你使用的cnn做出了相同的假设,因此剪辑了你的数据。

    解决方法是在读入图像时正确缩放图像。例如,请参见 im2double .

        2
  •  1
  •   nkjt    6 年前

    既不 imshow 也不 imagesc 设计用于处理TIFF堆栈。它们是用来查看的,不是用来读取图像数据的。您可能会看到以下警告:

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

    你可以使用 imread 根据 this answer tiff 哪个是 Matlab gateway to LibTiff library routines 并提供更详细的图像读取控制,如果 未读的 不会破解的。