【问题标题】:Single channel png displayed with colors以颜色显示的单通道 png
【发布时间】:2017-11-22 15:41:11
【问题描述】:

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

这是原单通道png:

这是imread 和imwrite 之后的结果。注意没有添加/删除频道:

【问题讨论】:

  • 换个问题:如果这些图像在 Matlab 之外以颜色显示,则必须是 3 通道图像 (RGB)。为什么你确定它们是单通道的?
  • 因为当我使用 imread 将它们加载到 Matlab 中时,它们显示为单通道 uint8。我将在上面举一个例子。
  • 在 MATLAB 环境中双击文件,此特定图像包含 1 通道但也包含 3 通道颜色图

标签: matlab png


【解决方案1】:

您的图像文件包含 indexed images,具有 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

如果 cmap 为空,则您的数据是 M×N grayscale intensity image 或 M×N×3 Truecolor RGB image。否则,您将处理索引彩色图像,并且必须在图像的任何处理中使用这两个数据,例如使用imshow查看它:

imshow(img, cmap);

或者使用imwrite重新保存数据时:

imwrite(img, cmap, 'outfile.png');

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

imgRGB = ind2rgb(img, cmap);

【讨论】:

    【解决方案2】:

    您正在使用indexed colors 处理每像素PNG 的1 to 8 bits(变量)。

    当一种格式使用这种技术时,颜色信息不会直接存储到图像像素数据中,而是存储在一个名为palette 的单独数据中。 palette 可以定义为预定义的颜色数组,其中每个元素定义特定颜色(每个通道的8 bits,总共24 bits)的三色表示(RGB)。

    图像像素数据不包含RGB 表单中颜色的完整规范,而仅包含调色板颜色的索引。当然,palette 必须为图像中存在的每种像素颜色包含一个条目。

    这种方法可以看作是一种压缩形式,其中只有一组有限的颜色可用,以节省内存/存储并加快图像的显示速度。

    长话短说,imread 调用的结果不会返回图像的颜色信息。您的数组包含 PNG 调色板元素的索引。

    示例

    假设您有 n 个索引的 PNG,其宽度为 3 像素,高度为 1 像素。第一个像素是纯红色,第二个像素是纯绿色,第三个像素是纯蓝色。

    在 PNG 二进制数据中,PLTE 块将包含以下颜色定义:

    [255 0 0] % Pure Red
    [0 255 0] % Pure Green
    [0 0 255] % Pure Blue
    

    IHDR 块将使用以下数据定义一个通道:

    0 1 2
    
    % 0 = index to the first palette color, pure red
    % 1 = index to the second palette color, pure green
    % 2 = index to the third palette color, pure blue
    

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 2020-01-05
      • 2012-09-04
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 2014-02-01
      相关资源
      最近更新 更多