1、引言
计算机视觉或多模态视觉处理的对象都有图像/视频。图像/视频对我们现在人来说是非常常见的,各种网站,app都充斥着大量的图像或视频,我们从这些图像/视频中可获取大量信息:比如图像中有哪些东西,可能的空间位置和行为等等。我们用成像设备拍摄的图像/视频通关显示屏能再现当时的画面。图像/视频中最主要的信息是颜色信息,颜色信息不同导致物体的边界、纹理等等。为什么图像/视频可以把当时场景记录下来呢?图像/视频在计算机中的本质是什么?显示器是怎么恢复图像内容的?这里涉及图像成像、人类视觉感知以及显示器的原理。
2、人类视觉系统
2.1 人类视觉概览
下图是人类视觉系统示意图,眼睛主要负责对外界的感知,把光学信号转换成电信号,电信号经过神经网络的处理进行成像和对场景的分析。
人类视觉系统感知颜色的功能主要是在人眼。人眼的功能类似于相机,主要对外界信号进行感知,并将光学信号转换成电信号,传给神经系统进行处理。
2.2 人眼
下图是人眼的解剖图。物体反射的光线经过眼角膜折射后进入晶状体,然后进入到视网膜,最后光线聚集成像。
- 光感受器细胞:包括视杆细胞(rods)和视锥细胞(cones)。视杆细胞对光敏感,主要在低光条件下工作,负责黑白视觉;视锥细胞对颜色敏感,主要在明亮光线下工作,负责色觉和高分辨率视觉。
- 双极细胞(Bipolar cells):连接光感受器细胞和神经节细胞,起到信号传递的作用。
- 神经节细胞(Ganglion cells):接受来自双极细胞的信号,并通过视神经将这些信号传递到大脑。
- 水平细胞(Horizontal cells)和无长突细胞(Amacrine cells):在光感受器细胞、双极细胞和神经节细胞之间起到侧向连接的作用,负责信号整合和调节。
2.3 颜色感知
视网膜里感知颜色的细胞是视锥细胞。每种视锥细胞含有不同的感光色素,这些色素能够吸收特定波长的光。例如,红色视锥细胞含有红色感光色素(长波长),绿色视锥细胞含有绿色感光色素(中波长),蓝色视锥细胞含有蓝色感光色素(短波长)。下图是视锥细胞对可见光的响应,从图中可以看出视锥细胞对蓝色、绿色和红色响应是最强烈的。根据这一观察,19世纪的德国科学家赫尔曼·冯·赫尔姆霍茨(Hermann von Helmholtz)和托马斯·杨(Thomas Young)提出了人类感知颜色的三色理论:人类眼睛内有三种不同类型的视锥细胞(Cone Cells),每种视锥细胞对不同波长的光线最为敏感。这三种视锥细胞通常分别对短波长(蓝光)、中波长(绿光)和长波长(红光)的光最为敏感。因此,人眼可以通过这三种视锥细胞的组合来感知所有的颜色。
3、图像
图像的由一个个像素组成的。像素是图像的基本组成单元,视觉上看,每一个像素是一个带有颜色的小方形快,如下图所示,图中的每一个方块是一个像素。
下图是图像及其在内存中的数据,下方黑色数据用了3层中括号[]将数据包裹起来,最里面一层的中括号包含了三个数据,如第一行[10 13 4],这三个数据表示第一个像素的像素值,也就是一个像素有三个值,对应了三个通道。在opencv中,默认的读取图像的三个通道是BGR,也就是这个像素的蓝色的值是10,绿色的值是13,红色的值是4,这三个值共同作用形成了该像素的颜色。外面两层括号表示的是图像的分辨率,即宽高的像素数。图像是怎么在显示器上显示不同颜色的呢?
4、显示器
现在我们用的显示器基本上都是液晶显示器,如下图所示。我们使用计算机时都需要用显示器来,不然我们就无法操作电脑。那么对于一张图来说,显示器是怎么显示图像的?
液晶最早是由奥地利植物学家莱尼茨尔(Friedrich Reinitzer)发现。在1888年他首先发现一种白色粉末,把它加热到某一温度可以变成乳白色浑浊液体,继续加热则变成透明液体。莱尼茨尔后来将这种材料寄给德国物理学家莱曼(Otto Lehmann)。莱曼在偏光显微镜下仔细观察这种物质,发现这种液体可以显示五彩的图案。这种图案是由双折射引起,而双折射一般是晶体才有的性质,因此他把这种既能流动又有晶体性质的液体命名为“液晶”。液晶是介于固态和液态之间的一种中间相。液晶具有独特的光学性质:光线会沿着液晶的晶体方向传播,所以液晶会扭曲偏振光的方向。通过一定的排列,可以得到所需要的偏振光;而液晶的排列可以通过控制电场获得,如下图所示,偏振光和出光口的方向一致,则光线最亮,如果垂直,则最暗,在平行和垂直之间,则亮度在最暗和最亮之间,越接近垂直,则光亮越弱。
5、成像
成像其实就是拍照。拍照对现代人来说非常非常熟悉,因为智能手机的普及,基本上人手一部,智能手机都有拍照功能,打开手机的相机功能,点击中间的拍照标志就可以排出一张照片了。拍照设备能拍出照片,一个关键的元件是CMOS图像传感器,如下图所示。CMOS图像传感器本质是一块芯片,主要包括:感光区阵列(Bayer阵列,或叫像素阵列)、时序控制、模拟信号处理以及模数转换等模块。和普通芯片不一样的是CMOS传感器上的主要部件是像素阵列。像素阵列把光信号转换成电信号。时序控制来控制电信号的读出、传递。模拟信号处理(ADC)实现对信号去噪。
1、 On-chip-lens:该结构可以看作是在感光元件上覆盖的一层微透镜阵列,它用来将光线聚集在像素感光区的开口上。可以增加光电转化效率,减少相邻像素之间的光信号串扰。
2、 Color filter:该结构是一个滤光片,包括红/绿/蓝三种,分别只能透过红色、绿色、蓝色对应波长的光线。该滤光片结构的存在,使得每个像素只能感应一种颜色,另外的两种颜色分量需要通过相邻像素插值得到。
3、 Metal wiring:用于读出感光区的信号。
4、 Photodiode:即光电信号转换器,其转换出的电信号会经过金属排线读出。
6、YUV
在做嵌入式(比如监控摄像机)视觉算法开发会遇到YUV颜色空间,“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma)。YUV的发明是由于彩色电视与黑白电视的过渡。黑白视频只有Y(Luma,Luminance)视频。到了彩色电视规格的制定,是以YUV/YIQ的格式来处理彩色电视图像,把UV视作表示彩度的C(Chrominance或Chroma),如果忽略C信号,那么剩下的Y(Luma)信号就跟之前的黑白电视频号相同,这样一来便解决彩色电视机与黑白电视机的兼容问题。YUV的格式主要有420,422,444,在嵌入式设备里用的最多的是YUV420,因为YUV420的数据量少,视频编码传输需要的带宽小。嵌入式里的镜头获取的图像也是RGB的,只是为了传输等原因,转换成YUV420。
7、视觉算法与人类视觉对比
下图是ChatGPT4-o在不同提示词引导下的回答。图片中没有狗,但是被人引导一下,就对狗进行了自己的描述。虽然在第一个问题的回答上,算法看起来理解了图片中的内容,但是算法并没有真正的理解图片。只是按照自己的某种规则来描述,而无法结合实际情况。
算法比较容易被人带偏,即使是被认为最好的算法之一。正常情况下人基本上不会被带偏(指鹿为马的情况要去除)。从图片本质上看,人类获得的图片信号和算法获得的基本上等价的,那是什么导致算法对图像的理解会被引导偏?算法的本质是什么?为什么算法达不到人这样的智能?
8、总结——路漫漫
人类视觉是图像成像、图像显示的生理学基础。人类视觉系统主要是对RGB三色进行处理,从而获得相关信息,算法本质上也是对RGB三色进行处理,但是却很难达到人类视觉的这种可靠性。人工智能提出到现在有70来年了,几经波折,虽然这次大模型热潮带来性能的提升让我们看到一些希望,但是仍然没有达到我们想要的程度,而且看起来还是道阻且长。路漫漫其修远兮。