最近在学习计算机图形学方面的课程,主要是使用opencv来处理图像,这里涉及到了图像存储的方式,方便后续对图像通道分离处理还有滤波的理解。
RGB色彩模式也就是红(Red)、绿(Green)、蓝(Blue)色彩模式。指的是通过R、G、B三个色彩通道,它们相互叠加再得到各式各样的颜色。它们的范围都是0~255,这样叠加起来就能够得到256256256=16777216(大约1678w)的颜色种类。
例如在一个像素上由R=200,G=100,B=150,如下图的颜色:
叠加起来就是这样:
那么上面叠加后的图像的存储在计算机中就是这样的:(以3*3图像为例,只有9个像素,方便理解)
R通道:
[[200 200 200]
[200 200 200]
[200 200 200]]
G通道:
[[100 100 100]
[100 100 100]
[100 100 100]]
B通道:
[[150 150 150]
[150 150 150]
[150 150 150]
为二维矩阵,矩阵大小就是像素个数
叠加后也就是实际的存储:
[[[200 100 150][200 100 150][200 100 150]]
[[200 100 150][200 100 150][200 100 150]]
[[200 100 150][200 100 150][200 100 150]]]
这是一个三维矩阵
可以使用opencv函数查看图像存储的矩阵
# 读取图像
image = cv.imread("imgs/rabbit.jpg")
print(image)
# 三通道分离
b, g, r = cv.split(image)
print(b)
print(g)
print(r)
结果:
# 三维矩阵
[[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 246 168]
[255 246 166]
[255 247 167]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 245 167]
[255 246 166]
[255 246 166]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 246 166]
[255 246 166]
[255 246 166]]
...
[[255 254 255]
[255 255 255]
[253 255 254]
...
[250 254 248]
[250 254 248]
[250 254 248]]
[[255 253 253]
[255 255 255]
[251 254 252]
...
[253 254 250]
[253 254 250]
[253 254 250]]
[[255 255 255]
[255 255 255]
[254 255 253]
...
[255 254 253]
[255 254 253]
[255 254 253]]]
#B通道 opencv中是按照BGR的顺序存的
[[255 255 255 ... 255 255 255]
[255 255 255 ... 255 255 255]
[255 255 255 ... 255 255 255]
...
[255 255 253 ... 250 250 250]
[255 255 251 ... 253 253 253]
[255 255 254 ... 255 255 255]]
# G通道
[[255 255 255 ... 246 246 247]
[255 255 255 ... 245 246 246]
[255 255 255 ... 246 246 246]
...
[254 255 255 ... 254 254 254]
[253 255 254 ... 254 254 254]
[255 255 255 ... 254 254 254]]
# R通道
[[255 255 255 ... 168 166 167]
[255 255 255 ... 167 166 166]
[255 255 255 ... 166 166 166]
...
[255 255 254 ... 248 248 248]
[253 255 252 ... 250 250 250]
[255 255 253 ... 253 253 253]]