人脸识别首先需要获取识别对象的人脸照片。这些照片在计算机中存储的常见格式是以“.jpg”结尾的jpg格式文件,下面以此文件格式为例进行讲解。一张彩色照片在计算机中通过RGB三原色显示色彩,其中,
R表示红色(Red);
G表示绿色(Green);
B表示蓝色(Blue)。
人眼能够分辨的颜色都可以通过这三类颜色生成,这是三原色的名称来源。也就是说,通过调整这三种原色的比例,计算机可以存储和显示世界上千变万化的颜色。
这三种颜色的变化范围一般取为[0,255]。0表示这种原色不存在,而255表示这种原色最强。之所以采用这个范围,是因为255恰好可以用一个字节来表示,也就是可以用8位的二进制数11111111来表示。按照第二章讲的方法可以很方便地使用Python观察这种对应关系。
In[5]:0b11111111
Out[5]:255
还有一些软件用“三原色强度/255”这种“比例”来定义颜色。例如,(166,170,15)表示RGB的强度,这表示了图像上一个点的颜色;如果换作用小数表示的方式,就变成了(0.650 980 392 156 862 8,0.666 666 666 666 666 6,0.058 823 529 411 764 705)。这两种表示方法给出的点的颜色是一样的。
一张彩色图片使用上述表示方式就转换成了三个表格,这些表格叫作图片的通道,分别是R通道、G通道、B通道。如果有一个4×4(长×宽)大小的图片,就一共有16个像素(4×4),每个像素都有三个分量(R,G,B),它们对应的表格如表8-2所示。从表中可以看出,第(1,1)个像素 RGB的强度分别是(187,187,187),第(3,3)个像素RGB 的强度分别是(205,167,187)等。
表8-2 三通道示例
没有彩色信息的黑白图像称为灰度图像。存储这种形式的图片无须RGB通道这样的三个表格,只需要一个表示黑白强度的表(矩阵)就可以把它表示出来。这时候0表示纯黑,而255表示纯白,中间的数值表示该点的灰度介于纯黑和纯白之间。