labelme生成的PNG单通道图片显示彩色原因

文章解释了PNG格式支持索引图像的概念,这种图像通过调色板显示颜色。当使用MATLAB的imread函数读取此类图像时,可以获取关联的颜色图cmap。通过ind2rgb函数,可以将索引图像转换为RGB真彩色图像,如labelme生成的PNG单通道图片显示彩色的情况就是这样处理的。
摘要由CSDN通过智能技术生成

PNG支持索引图像

PNG支持索引图。所谓索引图,就是带调色盘(palette),调色盘内定义了若干颜色。

索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256Ⅹ3,用MAP=[RGB]表示。MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。索引图像的数据类型一般为8位无符号整型(unsigned int8),相应索引矩阵MAP的大小为256Ⅹ3,因此一般索引图像只能同时显示256种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双精度浮点型(double)。索引图像一般用于存放色彩要求比较简单的图像,如Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。
详见索引图像和真彩色RGB图像介绍

举例说明

原始图片如下所示。
在这里插入图片描述
上图的详细信息如下:

在这里插入图片描述

位深度为8bit,但是显示的颜色为红黑色。

使用matlab查看图片

使用matlab的imread函数从图形文件读取图。cmap为与 img中的索引图像数据关联的颜色图,以 256×3 的 double 类矩阵形式返回,因此索引图像中有 256 种颜色。

[img,cmap] = imread(___) 将 filename 中的索引图像读入 A,并将其关联的颜色图读入 map。图像文件中的颜色图值会自动重新调整到范围 [0,1] 中。

在这里插入图片描述

将索引图像转换成 RGB

img_rgb= ind2rgb(img, cmap);

在这里插入图片描述
以上就是labelme生成的PNG单通道图片显示彩色原因。附上PNG的图像数据数组支持的位深和数据类型:

来源于matlab

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值