【问题标题】:Why do I get an all-black/grayscale image when I load this PNG in MATLAB?为什么我在 MATLAB 中加载此 PNG 时会得到全黑/灰度图像?
【发布时间】:2011-02-04 21:42:37
【问题描述】:

当我运行这段代码时:

>> I = imread('D:\Works\matlab\SecCode.php.png','png');
>> imshow(I);

它始终显示全黑图像。它有什么问题?

我使用的图片是这个:

【问题讨论】:

  • MATLAB 代码看起来不错。您确定该文件不包含全黑吗?您是否在另一个图像查看器中打开它进行检查?
  • 你能把图片添加到帖子中吗?我感觉图像的格式存在问题,为了帮助您,我们可能需要查看它。
  • 是的,我已经附在帖子里了。
  • 我认为这是 alpha 问题。在这里尝试解决方案:stackoverflow.com/questions/25172389/…

标签: image matlab file


【解决方案1】:

啊,我现在明白了。问题是您有一个 indexed image 并且还需要从 imread 获取颜色图参数。试试这个:

[I, map] = imread('D:\Works\matlab\SecCode.php.png', 'png');
imshow(I, map);

可以在here 找到对 MATLAB 中不同类型图像的描述。以下是一个简短的摘要:

  • 二进制图像:图像是一个logical 数组,其中每个像素的值都为 0 或 1。
  • Indexed images:图像中的像素将索引存储到颜色图中,这是一个 M×3 RGB 值数组。颜色图通常与图像文件中的索引图像一起存储。
  • Intensity (Grayscale) images:图像中的每个像素都包含一个表示强度的值。
  • RGB (Truecolor) images:图像是一个 M×N×3 数组,其中每个像素都有一个红色、绿色和蓝色分量。

【讨论】:

  • 这就是你所说的 indexed :en.wikipedia.org/wiki/Indexed_color 吗?
  • @user198729:是的,这就是我的意思。我还在上面为您添加了一些 MATLAB 文档链接。
  • 谢谢,您能否详细介绍一下这张图片,可以在您的链接中找到:mathworks.com/access/helpdesk/help/toolbox/images/introa.gif
  • @user198729:该图像说明了真彩色图像。它们是 3-D 数据数组(M×N×3)。在该图片中,图像的一部分显示为一组 3 M×N 数组,一个用于红色值,一个用于绿色值,一个用于蓝色值。每个像素的值范围从 0 到 1,值越高表示该像素的颜色分量越大。
  • 是的,但是其中哪三个表示图像中相同点的RGB?
猜你喜欢
  • 1970-01-01
  • 2020-07-17
  • 2020-08-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多