用颜色显示的单通道 png

mcE*_*nge 5 matlab png

我正在检查pascal voc 2012 dataset 的真实分割掩码。这些是单通道 8 位 uint png 文件。但是,当我在文件浏览器 (nautilus) 或图像查看器 (eog) 中打开这些图像时,它们会以颜色显示。
不应该以灰度显示吗?
当我使用 Matlab 将图像存储为单通道 8 位 uint png 文件时,它按预期以灰度显示。不同类型的 png 文件有什么区别?
我如何存储它以便我的图像查看器以颜色显示它们?

这是原始的单通道 png:
这是原始的单通道 png

这是之后的结果imreadimwrite。请注意,没有添加/删除频道:
这是 <code>imread</code> 和 <code>imwrite</code> 没有添加/删除通道后的结果

gno*_*ice 4

您的图像文件包含索引图像,带有 M×N 索引矩阵和 P×3 颜色图矩阵。你怎么知道?imread您需要在加载图像时获得第二个输出:

[img, cmap] = imread('zuIra.png');
if isempty(cmap)
  % Process data as a grayscale or RGB image
else
  % Process data as an indexed image
end
Run Code Online (Sandbox Code Playgroud)

如果cmap为空,则您的数据是 M×N灰度强度图像或 M×N×3 Truecolor RGB 图像。否则,您正在处理索引彩色图像,并且必须在图像的任何处理中使用这两个数据,例如使用以下命令查看它imshow

imshow(img, cmap);
Run Code Online (Sandbox Code Playgroud)

或者使用以下命令重新保存数据时imwrite

imwrite(img, cmap, 'outfile.png');
Run Code Online (Sandbox Code Playgroud)

如果您更愿意处理单个图像数据矩阵(在某些情况下这可以使处理更容易),您可以使用以下命令将索引图像数据和关联的颜色图转换为 RGB 图像ind2rgb

imgRGB = ind2rgb(img, cmap);
Run Code Online (Sandbox Code Playgroud)