随着python的大火,人工智能领域也在蓬勃的发展(人工智能的大火也导致了python的发展)。在人工智能的发展中,图像识别技术是里面发展得比较好的一部分技术,很多互联网大厂都在这一方面投入了很多精力并获得了不菲的成果。今天我们就通过介绍计算机图像存储的方式,来介绍一下图像识别的原理吧!
物理基础
在初中物理中我们接触到三基色(红绿蓝)。三种基色的光可以合成所有颜色的光(而如果三种基色的光都没有,就没有光,就呈现出黑色),这就是我们可以看到彩色图片(显示器上的,发光的)的基础。
另外,物理学上还有三原色,是红黄蓝,三基色和三原色的区别是他们的原理,一种利用加色法(三基色)进行颜色合成,另一种利用减色法(三原色)进行颜色合成,通过减色法无法合成白色。三原色是我们可以看到的彩色图片(纸质照片,不发光,依靠反射光的)的基础
物理学上喜欢将一件物体无限的往最小方向分解,直到分解不了为止,因此我们看到了原子。在图像处理上,我们也将图片进行了分解,分解到最后,只剩下一个点,这个点就叫像素点。而一张图片,由很多很多的像素点组成,以目前常见的摄像头像素(1200万像素)为例,一张照片就有1200万个像素点。
如上图所示,每三个发光单元构成一个像素点。
计算机基础
有了物理基础,那么计算机只要通过数据控制每个像素点就可以了。我们上文提到过,每个像素点都有三种颜色构成,每张图片由很多很多的像素点组成,我们将像素点进行排列,就可以得到一个像素点矩阵(可以理解为一个二维数组或者一个方阵)。而每个像素点需要记录这个颜色的信息,那就又回到了物理学的范畴了。三基色调整颜色是通过三种颜色的光的发光强度不同来实现光的混合的。那么我们在每个像素点中记录每一个像素对应的rgb光的强度值,就能实现混合得到的光的颜色。
通过上述原理,数码图像最重要的格式——rgb模式就介绍得差不多了。rgb模式的原理就是通过一个二维数组来记录每个像素点的位置,每个像素点都有rgb三个属性值用来记录对应的数值(实际上应该是一个三维数组)。
在rgb模式中,每个属性值用一八位的二进制数值(也就是一字节,而一字节可以表示256种状态),一个像素点有三个这样的属性值,也就是说他可以合成256*256*256(1677多万)种颜色,也就是我们所说的真彩色。
rgb的出现是基于彩色显示屏的,在没有彩色显示屏的时代,其实使用的图片记录方式也很相似。比如以下要介绍的几种模式:
- 位图模式:我们在rgb模式中介绍到,rgb每个像素点用三个八位的二进制数值进行表现,而位图只用一个一位的二进制数值表现,所以位图只有两种颜色,也就是白色和黑色。
- 灰度模式:与rgb模式类似,但它采用的是一个八位的二进制数值进行表现,这个数值只控制白色的强度(也就是灰度)。
CMYK模式:CMYK模式是用来打印或印刷的模式,它是相减的模式。当C、M、Y三值达到最大值时,在理论上应为黑色,但实际上因颜料的关系,呈显的不是黑色,而是深褐色。为弥补这个问题,所以加进了黑色K。由于加了黑色,CMYK共有四个通道,正因为如此,对于同一个图像文件来说,CMYK模式比RGB模式的信息量要大四分之一。但RGB模式的色域范围比CMYK模式大。因为印刷颜料在印刷过程中不能重现RGB色彩。
什么是通道
在上面我们提到了,每一个像素点都有rgb三个值。图像通道就是将单独的一个颜色拿出来的部分数据。如下图所示,一张图片可以拆分成3个通道。
当我们只选择绿色通道时,图片是这个样子的:
可以看到,在前一张图中的绿色,在只展示绿色通道的时候变成了白色(通过黑白的方式来展示这个值的强弱)。
关于图像识别与图像处理
讲了这么多,那这又关图像识别和图像处理有什么关系呢?
首先你得知道图像是什么,才能进行处理。既然图像是一个一个的像素点,那么我们就一个一个点的去理解他。我们在最开始一直提到过一个东西,就是图片是存储在一个二维数组(三维数组)里的。这种存储方式我们又喜欢管他叫——矩阵。图像识别的基础原理,就是通过矩阵的运算来判断图像是否有相似之处的。比如我有两个矩阵,他们的内容是一样的,那么计算机通过计算就可以得到相同的结果(其实更深化的讲,矩阵可以让计算机判断矩阵之中的相似区块,这部分可读者可以自行去了解卷积神经网络和特征值)。也就是说,图像识别的原理,是建立在图像矩阵上的。
关于图像识别技术还想学习更多?到编程狮学习机器学习课程吧!
图像处理就更简单了,我们既然知道了图像是怎么存储的,我们只需要对图像数据进行修改,就能对图像进行处理。
与python的关系
说了这么多,但却还没提到python,是因为上述的内容都是计算机原理,并不是python独家专有的。那么为什么小编在这里要提到python呢?其实是由于python的特殊性,python是现有语言里面生态比较好的,不管是机器学习还是图像处理库,python都有一套合理简单的解决方案,而且由于使用比较简单,而且也不需要追求太高的效率,很多机器学习的算法工程师都偏爱使用python进行开发。这也就是为什么现在python可以乘上人工智能的浪尖的原因了。
既然python那么火,还不赶快来学习python?编程狮python视频教程列表在此,点击即可前往学习!
小结
以上就是关于图像识别原理以及计算机图像存储的全部内容。关注W3C技术头条,查看往期精彩内容!