1 二值图像
二值图像是指仅仅包含黑色和白色两种颜色的图像,在计算机中,通过一个数据集矩阵来表示和处理图像,每个矩阵点就是一个像素
,像素是构成图像的基本单元,任何像素点的灰度值均为0或者255,分别代表黑色(0
)和白色(255
)。
2 灰度图像
比二值图像表现出更丰富的细节信息,灰度图像在黑色与白色之间还有许多级的颜色深度,计算机会将灰度处理为256个灰度等级,用数值区间[0, 255]
来表示,其中,255
表示纯白色,0
表示纯黑色,正好用一个字节的大小来表示。
3 彩色图像
神经生理学角度:视网膜上有三种不同的颜色感受器,能感受三种不同的颜色:红绿蓝,即三基色,自然界中常见的各种色光都可以通过将三基色按一定比例混合构成。
光学角度:颜色可解析为主波长、纯度、明度等。
心理学和视觉角度:颜色可解析为色调、饱和度、亮度等。
上述不同的方式表述颜色的模式称为色彩空间,或颜色空间、颜色模式等,最常见的就是RGB色彩空间
,其他的比如HSV、HLS等。
在RGB色彩空间里,存在R、G、B三个通道,每个色彩通道值的范围都在[0, 255]之间,我们用这三个色彩通道组合表示颜色。对于彩色图像,每个通道都可以理解为一个独立的灰度图像,通常用三维数组表示。如下所示:
[[[ 37 56 89]
[ 39 58 91]
[ 39 58 91]
...
[183 201 230]
[180 198 227]
[174 192 221]]
[[ 24 43 76]
[ 24 43 76]
[ 23 42 75]
...
[ 97 115 144]
[ 98 116 145]
[ 96 114 143]]
[[ 40 60 95]
[ 39 59 94]
[ 38 58 93]
...
[ 49 69 100]
[ 50 70 101]
[ 50 70 101]]
...
[[ 1 1 1]
[ 1 1 1]
[ 1 1 1]
...
[ 1 1 1]
[ 1 1 1]
[ 1 1 1]]
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]]
一张完整的图像可以分解为三基色的单色图,如下图所示,分别为原图、b通道图、g通道图、r通道图,注意:opencv中,通道顺序为B->G->R
。
import cv2
import numpy as np
def resetRGB(path, t):
img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
if len(t) == 0:
return img
h, w, l = img.shape #图像的高、宽、通道数
for row in range(h):
for col in range(w):
b, g, r = img[row, col]
if t == "b":
img[row, col] = (b, 0, 0)
elif t == "g":
img[row, col] = (0, g, 0)
else:
img[row, col] = (0, 0, r)
return img
path = r"C:\Users\Administrator\Desktop\\1.jpg"
ori = resetRGB(path, "")
imgb = resetRGB(path, "b")
imgg = resetRGB(path, "g")
imgr = resetRGB(path, "r")
inputs = np.hstack((ori, imgb, imgg, imgr))
cv2.namedWindow('myPicture', 0)
cv2.imshow('myPicture',inputs)
cv2.waitKey(2000)