一、探究图像在计算机上的本质
首先我们需要先理解图像究竟是什么?在计算机视觉中,一幅图像是一个矩阵,也就是一个二维向量。简化地说:
- 图像的宽度 对应矩阵的列数。
- 图像的高度 对应矩阵的行数。
- 矩阵的每个元素代表一个像素,像素是图像最基本的组成部分,图像就是像素的集合。
经过上述的小结,我们很容易就理解了图像的本质。可小结提及到像素,其中又包含着什么信息呢?
一个像素可以包含一个到多个数值来表示其视觉信息,比如:颜色 和 亮度等。而其中的颜色又有灰色图像和彩色图像的区分,灰色图像只含有单个通道(++片面说法++),而彩色图像则含有三个通道。因此在彩色图像 和 灰度图像中,每个像素包含的信息是不同的,彩色图像显然包含更多的信息。
灰色图像的像素通常使用无符号8位整型来表示一个0~255的数值,这也是灰色图像为什么是单通道原因。 基于这种表示方式,进而可以理解RGB图像(彩色图像)为什么是三通道图像。
当然,刚才提及到的通道是8位整型表示也不是绝对的,也可以16位。甚至也可以是浮点数。每个像素的数值类型 和 通道数量一起构成了图像的深度。举个例子:一个三通道的彩色图像使用16位整型来表示每个通道,那么每个像素的位深= 16 * 3 = 48位。
图像浮点数类型是「32 位单精度浮点数(float32)」或「64 位双精度浮点数(float64)」
正是因为这种表示方式,图像可以轻松地转化位数学元素,进而在不同类型的算法中使用。
二、探究色彩空间中RGB 和 HSV
什么是色彩空间?听起来似乎是一个包含所有"颜色"的一种空间领域。这样理解其实也没问题,其理论只是在不同的层面应用上对色彩的表示。
第一个常见的色彩空间--RGB。每个像素是用三个8位整型,即三个通道(R、G、B),每个通道均是0~255,对应红,绿、蓝颜色分量的强度。 正如前面说到灰色图像是单通道是片面这个说法,其实当一副RGB图像每个像素的R、G、B的数值相同,就成了一副三通道的灰色图像。
第二个是计算机视觉常用的色彩空间是HSV(Hue,Saturation,Value),其中包含的信息是:色彩、饱和度、明亮度。每个像素是由这三个数值表示的,和通道表示类似,只是数值代表的含义不同。RGB 是「红绿蓝光叠加」,HSV 是「人眼对颜色的感知逻辑」。
- 色彩值介于0~360度,用来表示该像素的色彩。
- 饱和度介于0-100%,用来表示该像素颜色的纯净度。
- 明亮度介于0-100%,用来表示该像素颜色的明亮程度。
现实中 H 通道的物理范围是 0~360°(比如红色对应 0°、绿色 120°、蓝色 240°),但计算机存储和处理时,会将其映射到整数范围(避免浮点数运算,提升效率)。等同的S、V通道也是同样如此,最常见的映射:缩放到 0~255。
