2023年12月7日发(作者:学生社团)
如何理解图片RGB通道在python(numpy)中的数据构成
该文将尽可能简短的描述基于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中解析后的理解介绍,下面是部分代码:
1.
from skimage
import io
2.
3.
path_c =
r"G:"
4.
color = (path_c)
5.
print(color,)
6.
7.
# R
8.
print(color[:,:, 0],color[:,:, 0].shape)
9.
# G
10.
print(color[:,:, 1],color[:,:, 1].shape)
11.
# B
12.
print(color[:,:, 2],color[:,:, 2].shape)
13.
14.
fig,axes = ts( 1, 3,figsize=( 12, 7))
15.
axes[ 0].imshow(color[:,:, 0])
16.
axes[ 0].t_title( 'R')
17.
axes[ 1].imshow(color[:,:, 1])
18.
axes[ 1].t_title( 'G')
19.
axes[ 2].imshow(color[:,:, 2])
20.
axes[ 2].t_title( 'B')
21.
22.
()
该文仅为理解图片的数据构成,跟多详细的内容还请自行Google。
本文发布于:2023-12-07 17:44:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1701942250114132.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:如何理解图片RGB通道在python(numpy)中的数据构成.doc
本文 PDF 下载地址:如何理解图片RGB通道在python(numpy)中的数据构成.pdf
留言与评论(共有 0 条评论) |