一文了解图像中通道的相关知识
有少数颜色空间可以表示图像,如RGB,BGR,HSV,CMYK等,但它们都有一些共同点。它们是这些色彩空间用来共同形成图像的通道。让我们看看频道的一些定义。维基百科上说,彩色数字图像由像素组成,像素由一系列代码表示的原色组合而成
有少数颜色空间可以表示图像,如RGB,BGR,HSV,CMYK等,但它们都有一些共同点。它们是这些色彩空间用来共同形成图像的通道。让我们看看频道的一些定义。维基百科上说,彩色数字图像由像素组成,像素由一系列代码表示的原色组合而成。在这种情况下,通道是与彩色图像大小相同的灰度图像,仅由这些原色之一构成。如果这听起来很混乱,听我说完。这个定义说,每个图像都是由像素组成的,每个像素都是由颜色的组合组成的,更准确地说,就是原色。通道是彩色图像的灰度图像,它仅由构成彩色图像的一种原色组成。
灰度图像是单通道图像,其中每个像素只携带有关光强度的信息。这些图像完全由灰色阴影组成。
灰度图像不应与仅包含黑白像素的黑白图像(二值图像)混淆。在二值图像中,一个像素要么是黑色,要么是白色。它们之间没有颜色。但是灰度图像的像素有很大的灰度范围。现在让我们看看打印灰度图像阵列时得到了什么。为此,我们使用以下代码:
import cv2 as cv
image = cv.imread("D://medium_blogs//architecture.jpg")
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
print(gray)
print("")
print(gray.shape)
输出为:
如你所见,打印的阵列是一个二维阵列,其中每个数字代表一个像素,数字的值是该像素中的光强度。由于上述图像阵列中的每个数字代表一个像素,因此称为单通道图像。计算机视觉中每个像素的光强度是从0到255测量的,称为像素值。像素值为0时为黑色,像素值为255时为白色。因为我们使用OpenCV来读取图像数组,所以上面数组的尺寸是形状高度x宽度。在这里,图像沿y轴(高度)有6016个像素,沿x轴(宽度)有4016个像素。
RGB图像
与灰度图像不同,RGB图像是三通道的。每个像素由三个通道组成,每个通道代表一种颜色。现在,让我们打印一个RGB图像并观察结果。我们使用以下代码:import cv2 as cv
image = cv.imread("D://medium_blogs//architecture.jpg")
RGB = cv.cvtColor(image, cv.COLOR_BGR2RGB)
print(RGB)
print("")
print(RGB.shape)
输出为:
这次的输出是一个三维数组!在此图像中,每个像素有三个通道。第二维度中的每个数组表示一个像素。第0个指标是红光强度,第1个指标是绿光强度,第2个指标是蓝光强度。打印此图像的形状时,它将打印一个包含高度、宽度和通道数的元组。将这三个值相乘,得到图像数组中的值总数。
分别显示每个通道
现在我们知道了什么是通道,让我们看看每个通道分别是什么样子。观察下图:
现在让我们使用以下代码拆分上面图像的通道:import cv2 as cv
import numpy as np
image = cv.imread("D://medium_blogs//colours.jpg")
image = cv.cvtColor(image, cv.COLOR_BGR2RGB)
(R,G,B) = cv.split(image)
cv.namedWindow("Blue", cv.WINDOW_NORMAL)
cv.namedWindow("Green", cv.WINDOW_NORMAL)
cv.namedWindow("Red", cv.WINDOW_NORMAL)
cv.imshow("Blue",B)
cv.imshow("Green", G)
cv.imshow("Red", R)
cv.imwrite("D://medium_blogs//channel_red.jpg", R)
cv.imwrite("D://medium_blogs//channel_green.jpg", G)
cv.imwrite("D://medium_blogs//channel_blue.jpg", B)
if cv.waitKey(0):
cv.destroyAllWindows()
我们使用OpenCV的split函数来分割通道。代码的输出为:我知道现在有几个问题扰乱了你的思维过程。所以让我解释一下。红色通道
绿色通道
蓝色通道
为什么它们是灰度的?这是因为,当我们分割通道时,每个图像中的像素现在只有一个通道。所以它们是灰色的。如何区分这些图像?把每个图像和原始图像比较一下。让我们拍摄红色通道的图像。你可以看到原始图像中包含红色的区域在红色通道图像中更亮。这仅仅意味着,对原始图像的红色贡献较大的区域在红色通道的灰度图像中会更亮。贡献较少或没有贡献的区域是黑暗的。这适用于所有三个通道。为什么在绿色和红色通道中黄色较浅?那是因为黄色是红色和绿色的混合物。所以绿色和红色对黄色的贡献很大。