图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布,“像“是人的视觉系统所接受的图在人脑中所形成的印象或认识,照片、绘画、剪贴画、地图、书法作品、手写汉字、传真、卫星云图、影视画面、X光片、脑电图、心电图等都是图像。
在计算机中,按照颜色和灰度的多少可以将图像分为四种基本类型。
二值图像
一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

灰度图像
灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。**“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。**二值图像可以看成是灰度图像的一个特例。
索引图像
索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256Ⅹ3,用MAP=[RGB]表示。MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。

真彩色RGB图像
RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,**M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。**RGB图像的数据类型一般为8位无符号整形。注意:通道的顺序是 BGR 而不是 RGB。

| 图像类型 | 通道数 | 像素值范围 | 主要特点 | 常见用途 |
|---|---|---|---|---|
| 二值图像 | 1通道 | 0 或 1 | 每个像素只有黑与白两种值 | 形态学操作、二值化、轮廓检测 |
| 灰度图像 | 1通道 | 0 到 255 | 每个像素表示灰度(亮度) | 图像预处理、物体检测、人脸识别 |
| 索引图像 | 1通道 | 0 到 255(索引) | 像素值为颜色表的索引,颜色表决定实际颜色 | 存储压缩、较少颜色的图像表示 |
| RGB图像 | 3通道(R、G、B) | 0 到 255 | 每个像素由红、绿、蓝三个通道组成 | 普通彩色图像显示、图像处理与分析 |
简单的讲:图像是由像素点组成的,每个像素点的取值范围为: [0, 255] 。像素值越接近于0,颜色越暗,接近于黑色;像素值越接近于255,颜色越亮,接近于白色。
在深度学习中,我们使用的图像大多是彩色图,彩色图由RGB3个通道组成,如下图所示:

使用 matplotlib 库来实际理解下上面讲解的图像知识。
import numpy as np
import matplotlib.pyplot as plt
# 像素值的理解
def test01():
# 全0数组是黑色的图像
# H, W, C -> 高, 宽, 通道
img = np.zeros(shape=[200, 200, 3])
# 展示图像
plt.imshow(img)
# 对坐标轴进行设置
# off:关闭坐标轴
plt.axis("off")
plt.show()
# 全255数组是白色的图像
img = np.full(shape=[200, 200, 3], fill_value=255)
# 展示图像
plt.imshow(img)
plt.show()
# 图像的加载
def test02():
# 读取图像
img = plt.imread("data/img.jpg")
# 保存图像
plt.imsave("data/img1.jpg", img)
# 打印图像形状 高,宽,通道
print("图像的形状(H, W, C):\\n", img.shape)
# 展示图像
plt.imshow(img)
plt.axis("off")
plt.show()
if __name__ == '__main__':
test01()
test02()
输出结果:
全黑和全白图像:

图像的形状为:
图像的形状(H,W,C):
(640, 640, 3)
