【问题标题】:Displaying an Image Type Double in Matlab在 Matlab 中显示双倍图像类型
【发布时间】:2015-10-19 04:44:21
【问题描述】:

我在 Matlab 中有一个双精度图像。我怎样才能imshow呢?谢谢。

load('file.mat');
b=d.l{2,1}.a{1,1}; %//b is an image <96x96x4 double>
imshow(b);

【问题讨论】:

  • imshow 不支持显示 4 通道图像。这张图片应该代表什么?
  • 如果您的图片是NxMx3,并且您在评论中打错字,请使用imshow(b,[]) 自动调整imshow 函数的限制

标签: image matlab image-processing


【解决方案1】:

正如@rayryeng 建议的那样,imshow 不喜欢 4 通道图像。因此:

如果您的图片是NxMx3,并且您在评论中打错字,请使用imshow(b,[]) 自动调整imshow 函数的限制。

如果您的第 4 个通道是 alpha,则忽略 alpha:imshow(b(:,:,1:3),[])

或者,将您的图像从 RGBA 转换为最接近的 RGB 表示。您可以使用名为 alpha blending 的东西来做到这一点,并且在这篇 SO 帖子中您有一个很好的答案(用另一种编程语言):Convert RGBA color to RGB

如果这些都不是您的情况,那么您可能需要提供更多信息。

【讨论】:

  • 是的,你是对的 Ander Biguri。当我忽略 alpha 通道时它起作用了。谢谢。
  • 如果我想显示一个 25x25 双倍而不是 96x96x4 的图像怎么办。我尝试使用 imshow 函数,但它不起作用并显示如下错误:索引超出矩阵维度。谢谢
  • @Dani 图片的大小对imshow 没有绝对影响,所以如果它不起作用,还有另一个原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 2020-06-05
  • 2017-12-23
  • 2011-08-23
相关资源
最近更新 更多