1.1.1 机器视觉的发展
图1-2所示为20世纪70年代至今机器视觉发展过程中的部分主题,包括机器视觉发展初期(20世纪70年代)的数字图像处理和积木世界,20世纪80年代的卡尔曼滤波、正则化,20世纪90年代的图像分割、基于统计学的图像处理,以及21世纪计算摄像学与机器视觉中的深度学习等内容。
图1-2 机器视觉发展过程中的部分主题
(1)20世纪70年代
机器视觉始于20世纪70年代早期,它被视为模拟人类智能并赋予机器人智能行为的感知组成部分。当时,人工智能和机器人的一些早期研究者(如麻省理工学院、斯坦福大学、卡内基·梅隆大学的研究者)认为,在解决高层次推理和规划等更困难问题的过程中,解决“视觉输入”问题应该是一个简单的步骤。比如,1966年,麻省理工学院的Marvin Minsky让他的本科生Gerald Jay Sussman在暑期将相机连接到计算机上,让计算机来描述它所看到的东西。现在,大家知道这些看似简单的问题其实并不容易解决。
数字图像处理出现在20世纪60年代。与数字图像处理领域不同的是,机器视觉期望从图像中恢复出实物的三维结构并以此得出完整的场景理解。场景理解的早期尝试包括物体(即“积木世界”)的边缘抽取及随后的从二维线条的拓扑结构推断其三维结构。当时有学者提出了一些线条标注算法,此外,边缘检测也是当时一个活跃的研究领域。
20世纪70年代,人们还对物体的三维建模进行了研究。Barrow,Tenenbaum与Marr提出了一种理解亮度和阴影变化的方法,并通过诸如表面朝向和阴影等来恢复三维结构。那时也出现了一些更定量化的机器视觉方法,包括基于特征的立体视觉对应(stereo correspondence)算法和基于亮度的光流(optical flow)算法。同时,关于恢复三维结构和相机运动的研究工作也开始出现。
另外,David Marr特别介绍了其关于(视觉)信息处理系统表达的三个层次,具体如下。
1)计算理论:计算(任务)的目的是什么?针对该问题已知或可以施加的约束是什么?
2)表达和算法:输入、输出和中间信息是如何表达的?使用哪些算法来计算所期望的结果?
3)硬件实现:表达和算法是如何映射到实际硬件即生物视觉系统或特殊的硅片上的?相反地,硬件的约束怎样才能用于指导表达和算法的选择?随着机器视觉对芯片计算能力需求的日益增长,这个问题再次变得相当重要。
(2)20世纪80年代
20世纪80年代,图像金字塔和尺度空间开始广泛用于由粗到精的对应点搜索。在20世纪80年代后期,在一些应用中小波变换开始取代图像金字塔。
三维视觉重建中出现“由X到形状”的方法,包括由阴影到形状、由光度立体视觉到形状、由纹理到形状以及由聚焦到形状。这一时期,探寻更准确的边缘和轮廓检测方法是一个活跃的研究领域,其中包括动态演化轮廓跟踪器的引入,例如Snake模型。如果将立体视觉、光流、由X到形状以及边缘检测算法作为变分优化问题来处理,可以用相同的数学框架来统一描述,而且可以使用正则化方法增加鲁棒性。此外,卡尔曼滤波和三维距离数据(range data)处理仍然是这十年间很活跃的研究领域。
(3)20世纪90年代
20世纪90年代,机器视觉的发展情况如下:
1)关于在图像识别中使用投影不变量的研究呈现爆发式增长,这种方法可有效用于从运动到结构的问题。最初很多研究是针对投影重建问题的,它不需要相机标定的结果。与此同时,有人提出了用因子分解方法来高效解决近似正交投影的问题,后来这种方法扩展到了透视投影的情况。该领域开始使用全局优化方法,后来被认为与摄影测量学中常用的“光束平差法”相关。
2)该时期出现了使用颜色和亮度的精细测量,并将其与精确的辐射传输和形成彩色图像的物理模型相结合。这方面的工作始于20世纪80年代,构成了一个称作“基于物理的视觉”(physics-based vision)的子领域。
3)光流方法得到不断的改进。
4)在稠密立体视觉对应算法方面也取得了很大进展。其中最大的突破可能就是使用“图割”(graph cut)方法的全局优化算法。
5)可以产生完整三维表面的多视角立体视觉算法。
6)跟踪算法也得到了很多改进,包括使用“活动轮廓”方法的轮廓跟踪(例如蛇形、粒子滤波和水平集方法)和基于亮度的跟踪。
7)统计学习方法开始逐渐流行起来,如应用于人脸识别的主成分分析。
(4)21世纪
进入21世纪,计算机视觉与计算机图形学之间的交叉越来越明显,特别是在基于图像的建模和绘制这个交叉领域。计算摄像学发挥越来越重要的作用,比如光场获取和绘制以及通过多曝光实现的高动态范围成像等。目标识别中基于特征的方法(与学习方法相结合)日益凸显,更高效的复杂全局优化问题求解算法也得到了发展。
另外一个趋势是复杂的机器学习方法在计算机视觉中的应用,尤其是近几年,基于深度学习的机器学习方法在图像与视频中关于目标检测、跟踪、理解等领域的应用不断深化。