单张图片和多张图片的RGB通道在python(numpy)中的数据构成

1) 单张图片

该文将尽可能简短的描述基于numpy,在python中使用skimage的io或PIL或其他方法读取图片后GRB数据的结构与呈现方式。

我们肉眼看到的图片无非两种(灰色和彩色),而通过编程语言转换为电脑能认识的模样也就是数字了。这些数字决定了在电脑中它是彩色还是灰色,对于彩色图片决定的方式就是——颜色通道,而最常见的就是RGB三通道了,顾名思义RGB三色通道就是指由R、G、B三个通道组成的。

这里需要说明的一点就是RGB三色道分别对应三个矩阵,而这三个矩阵都是数字向量构成的矩阵,并不代表颜色的意思(矩阵能代表颜色吗?),这里比较贴切可以理解为调色板,例如当该矩阵的某个位置的数值较大,则表示该处对应调色板使用的颜色就越”白/浅“,而越小则对应调色板使用颜色越“黑/深”。8bit的图像,对应的矩阵元素取值为0-255(也可以使用0-1表示),这里我们主要理解数据,对于图像的理解下面给出链接。

看一张图片:

这是一张彩色图片,现在通过skimage的io方法读取该图片后在numpy中呈现的数据格式如下:

通过shape得到图形形状(287,496,3),其中287表示行,496表示列,3表示分量(即三个通道分量),是不是有点蒙,下面正是本文要讲的重点,如何理解上面读取出来的数据格式?

首先我们应该按 列 来看,可以看到有3列 (即190 48 64对应往下的3列),这便是RGB对应的 3 个通道,从头到尾的一列数据构成了一个通道分量,共三个:

 然后再来理解287,从上图中可以看到有很多的 [ 符号,其实按层次来分也就三层,这里的287表示共有287个中间层的矩阵:

最后再来看496,这个数字从哪来?上面的287个矩阵中每一个矩阵的每一列都有496个元素(数字),虽然这些数字是按照行来分块,但实际上列之间的元素才有关联,每一列的元素组合成行,构成了该通道矩阵的一行数据:

下面来看看将上面的整体矩阵分解为三个通道后的模样,做个对比是不是清楚很多了。

上面的三个通道为相同的矩阵大小,而后将三者按照通道顺序排列重叠后构成了RGB彩色图片,当然顺序有可能不是RBG,例如opencv转换后为BGR。

以上为彩色图片在numpy中解析后的理解介绍,下面是部分代码:
 

from skimage import io
 
path_c = r"G:\c.png"
color = io.imread(path_c)
print(color,color.shape)
 
# R
print(color[:,:,0],color[:,:,0].shape)
# G
print(color[:,:,1],color[:,:,1].shape)
# B
print(color[:,:,2],color[:,:,2].shape)
 
fig,axes = plt.subplots(1,3,figsize=(12,7))
axes[0].imshow(color[:,:,0])
axes[0].set_title('R')
axes[1].imshow(color[:,:,1])
axes[1].set_title('G')
axes[2].imshow(color[:,:,2])
axes[2].set_title('B')
 
plt.show()

2) 多张图片

同样道理:

该数组共50张图片,每个图片64*64*3.

显示均是以列的形式显示,三列,n多个矩阵从上到下串起来。

 

下图表示:第一张图片通道0,1,2的第一行,从上到下,共64个元素(即64列)。

 

 

下图表示第50张图片的三个通道的第64行,从上到下64个元素。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的探索之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值