2.6 计算机视觉
2.6.1 计算机视觉概述
计算机视觉又称机器视觉,起源于20世纪60年代,是人工智能领域正在快速发展的一个分支。其主要目的是给机器人等智能体提供类似人眼的理解自然景物的功能。科学家们认为,只要把相机与计算机相连,通过软件功能就可以让计算机系统描述图像的内容——外部世界有什么东西和这些东西在什么地方。具体地说,通过相机/摄像机(CCD/CMOS)、光源、传感器、图像卡、I/O卡、控制器等硬件,并结合图像处理技术、工程技术、电子成像技术、模拟与数字视频技术及各类计算机算法,计算机可以拥有类似人的提取、处理、理解和分析图像及图像序列的能力,如图2-26所示。在实际的计算机视觉系统中,可能采用一个、两个甚至多个镜头来完成视觉任务。计算机视觉计算包含多个研究分支。
图2-26 计算机视觉构成要素示意[15]
相机按照输出的数据信号种类可分为模拟相机和数字相机两种。模拟相机的输出为模拟电信号,需要借助视频采集卡等组件转换为数字信号,模拟相机连线简单、成本较低,但转换速率慢。数字相机所采集的图像直接通过内部感光组件及控制组件转换为数字信号,该类相机采集速率快、数据存储方便,但价格相对昂贵。
相机按照芯片类型可分为CCD(Charge-Coupled Device,电荷耦合元件)相机和CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)相机。CCD相机由光学镜头、时序及同步信号发生器、垂直驱动器及模拟/数字信号处理电路组成,具有无灼伤、无滞后、低电压、低功耗等优势;CMOS相机集光敏元阵列、图像信号放大器、信号读取电路、模数转换电路、图像信号处理器及控制器于一体,传输速率高,动态范围宽,局部像素可编程随机访问。
除了以上两种常见的分类方法,相机还可以按照传感器的结构特性分为线阵相机和面阵相机;按照输出图像的色彩分为黑白相机和彩色相机;按照响应频率范围分为普通相机、红外相机和紫外相机;按照扫描方式分为逐行扫描相机和隔行扫描相机等。
2.6.2 计算机视觉理论
计算机视觉算法的研究离不开人类对生物视觉原理的认识和理解。20世纪70年代,David Marr从计算机科学的观点出发,综合数学、心理物理学和神经生理学的成果,提出了著名的视觉计算理论。他认为计算机视觉的研究包括三个层次[16]:
(1)计算理论层次(Computational Level):研究对什么信息进行计算和为什么要进行这些计算;
(2)算法层次(Algorithmic / Representational Level):研究用什么样的表达方式来描述信息,以及如何建立和操作这些描述;
(3)实现层次(Implementational/Physical Level):研究物理系统如何实现这些功能,比如研究生物视觉系统的神经结构,以及如何实现神经活动。
David Marr认为,计算机视觉就是要对外部世界的图像构成进行有效的符号描述,它的核心问题是从图像的结构推导出外部世界的结构。计算机视觉从图像开始,经过一系列的处理和转换,最后实现对外部现实世界的认识。David Marr进一步把计算机视觉的形成划分为以下三个阶段[17]。
(1)初始简图(Primal Sketch)。这一阶段的任务是由输入图像获得基素图,这一阶段也叫早期视觉。所谓基素图主要指图像中强度变化剧烈处的位置及其几何分布和组织结构,其中用到的基元包括斑点、端点、边缘片段、有效线段、线段组、曲线组织、边界等。
(2)2.5维图(2.5 Dimensional Sketch)。所谓2.5维图指在以观察者为中心的坐标系中,可见表面的法线方向、大致的深度及它们的不连续轮廓等,其中用到的基元包括可见表面上各点的法线方向、各点离观察者的距离(深度)、深度上的不连续点、表面法线方向上的不连续点等。由于2.5维图中包含了深度信息,因而比二维表示的要多,但还不是真正的三维表示,所以得名2.5维图。这一阶段的任务是通过符号处理,将线条、点和斑点以不同的方式组织起来获得2.5维图,这一阶段也称中期视觉。按David Marr的理论,这一阶段是由一系列相对独立的处理模块组成的,这些处理模块包括体现、运动、由表面明暗恢复形状、由表面轮廓线恢复形状、由表面纹理恢复形状等。
(3)3维模型(3D Model)。物体的三维表示指在以物体为中心的坐标系中,用含有体积基元(表示形状所占体积的基元)和面积基元的模块化分层次表象来描述形状和形状的空间组织形式,其表征包括容积、大小和形状。这一阶段的任务是由输入图像、基素图、2.5维图获得物体的三维表示,这一阶段也称后期视觉。
计算机视觉有多个分支,包括特征提取(边缘提取、特征点提取)、物体检测与识别、三维视觉重构等。随着研究的深入,人们逐渐意识到David Marr的理论有一个重要缺陷:从数学上讲,从二维图像中精确重建三维物体模型是一件不可能的事。该理论的另一个不足是对视觉的实现机制认识有限。在其出现后的二十多年中,计算机视觉的研究主要集中在“自下而上”(从像素信号到物体)的实现机制上。21世纪初,人们逐渐意识到计算机视觉的实现不仅是一个“自下而上”的前向传播(Feedforward)过程,还是一个“自上而下”的反馈(Feedback)过程。例如,看到广告板上的人,我们会判断这不是真人,只是人的照片,因为真人是不会挂在板上的,这个判断不可能单纯地从图片信息得到,而是融合了我们的经验知识——人不可能挂在板上,以及图像中提供的环境信息——人嵌在板内,因此是一个“自上而下”的推理并反馈的过程。Tai Sing Lee 和Mumford 等提出,这个“自上而下”的过程可以用贝叶斯推理机制[18]来实现。可惜的是,人工智能在推理算法上还没有突破,真正实现“自上而下”反馈过程的应用系统很少。
计算机视觉中还有一个重要的指导理论是视觉的注意力机制。其基本思想:视觉是一个选择性过程。在一个复杂的自然环境中,人的视觉系统不可能捕捉到所有的事物,相反,能引起人注意的事物通常具有以下一个或几个特性:
(1)在环境中比较突出,如颜色鲜艳、与周围环境相比对比度大;
(2)是运动的物体;
(3)是跟人的任务或兴趣有关的东西,例如,过马路时,人们会有意识地注意车流,以及小孩会特意留心图像中的玩具等。
视觉的注意力机制不仅为基于图像显著性的目标检测算法提供了理论依据,近年来,其也被应用于给图像配标题(Image Captioning)。
2.6.3 成像、图像增强计算学
成像、图像增强计算学指根据不同的需求,结合相对应分辨率的CCD及各类光源技术(前光源、背光源、环形光源、点光源、可调光源),使相机超出可见光的限制,并通过空域图像增强、频域图像增强、图像分割、双峰法、迭代法、大津法、数学形态学分析、图像数学形态学基本运算、应用图像投影等后续算法的处理,使在受限条件下拍摄的图像更加完善、清晰。其主要应用领域如下。
(1)测量、测绘领域,包括长度测量(距离测量、多距离测量、齿长测量、线段测量)、面积测量(基于区域标记的面积测量、基于轮廓向量的面积测量)、圆测量(正圆测量、多圆测量、利用曲率识别法识别圆、椭圆测量)等。
(2)模式识别领域,包括字符识别(印刷体字符识别、手写体字符识别)、条码识别(条码技术、一维条码识别、二维条码识别)、车牌识别(车牌图像预处理、车牌字符分割与识别)、工件识别等,并同时应用于生产生活的各领域。
(3)精准定位领域,包括用于自动组装、自动焊接、自动包装、自动灌装、自动喷涂等。
2.6.4 目标检测、物体识别与图像理解
目标检测的任务是找出感兴趣的物体在图像中的位置和所覆盖的区域,主要应用在图像检测领域,包括瑕疵缺陷检测、划痕检测、焊点检测、包装正误检测、错误检测、表面检测、颗粒检测、破损检测、油污检测、灰尘检测、孔径检测、雨雾检测、注塑检测等。同时,有的物体识别系统也利用目标检测算法来完成物体在图像中的定位。
目标检测的一个基本依据就是视觉的注意力机制——物体能吸引人的注意力,它必然具有某种显著性,如颜色、对比度显著性或运动显著性,从而使它与图像的其他部分区分开来。图像分割算法,如均值漂移算法,以及各种显著度算法及深度神经网络[19],可用于从单一静态图像中检测目标,有时甚至简单的边缘检测算子或轮廓提取算法就足以检测到感兴趣的目标。除此之外,目标检测,如行人检测、车辆检测、通用物体的检测也可通过基于特征的图像配准或分类算法来实现[20]。
物体识别的任务是为给定图像区域提供所对应的物体类别。一个物体识别系统通常包含图像分割、特征提取、匹配/分类三大模块,如图2-27所示。
图2-27 物体识别系统框图
图像分割的基本任务是确定物体对应的图像区域,如字符识别系统中每个字对应的区域;特征提取的任务是把图像转换成各种描述物体的特征,如边缘轮廓、梯度方向特征的直方图分布(如HOG特征图[21]),或者兴趣点算子(如SIFT算子[22])等。
基于特征点的匹配也称图像配准,其主要任务是求出匹配特征点之间的变换关系,以便在物体的图像尺度或朝向变化时也能达到很好的精度。一些商用计算机视觉库,如Halon、VisioanPro及openVision都为此提供了具有很好的健壮性的算法。
除了图像配准算法,一些分类算法,如支持向量机及神经网络,都在物体识别中有广泛的应用。随着计算机处理速度的不断提高,图像分割不再是物体识别的一个必要步骤。比如,基于HOG特征图的行人检测算法把图像分成了不同尺度的滑动子窗口,并对每个子窗口内的图像进行了分类,这样既避免了图像分割这一复杂的工作,又使算法对尺度变化有很好的健壮性。近几年的深度神经网络算法更是把特征提取、物体区域建议(Object Region Proposal)和识别融于一体。
图像理解的研究范围包括全景物识别(为每个像素提供一个物体类别标签)、给图像配标题及基于图像的问答系统等。
2.6.5 三维视觉重构计算学
三维视觉重构计算学主要运用辐射度、目标表面朝向、反射类型与反射模型、SFS三维重构算法、基于混合反射模型的SFS算法、基于透视成像模型的SFS算法、SFS三维重构变分算法、光度立体学、光度立体视觉法等,在二维基础上获得三维图像,并进行分析、识别、理解、重组等,主要应用领域包括机器人、无人驾驶、智慧工厂、智慧家庭、VR模拟、虚拟增强、物流仓储、航天航空等。
2.6.6 动态视觉跟踪计算学
动态视觉跟踪计算学主要研究运动目标检测与跟踪算法。2.6.4节介绍的基于显著度的目标检测算法主要用于从单帧图像中检测目标,而运动目标检测的基本依据是连续视频流中相邻帧图像内容的变化。由于静止物体对应的像素值在相邻两帧间不会快速变化,变化大的局部区域对应的很有可能就是运动物体。主要的运动目标检测算法如下。
(1)相邻帧间差分算法,即将视频流中相邻两帧或相隔几帧图像的像素值相减,并对相减后的图像进行阈值化来提取图像中的运动区域。
(2)背景差分算法,即首先根据视频中连续几帧中各点的像素值建立一个背景模型,然后将当前获取的图像帧与背景图像做差分运算,得到目标运动区域的灰度图,最后对灰度图进行阈值化来提取运动区域。而且,为避免环境光照变化的影响,背景图像根据当前获取图像帧进行更新。背景差分算法是最常用的运动目标检测算法。
美国在目标检测与跟踪领域的研究起步较早,美国军方及美国自然科学基金委员会都非常关注复杂环境下目标检测、跟踪与识别算法的研究与应用。1991年,DARPA资助卡内基梅隆大学进行视觉信息在无人机中的应用研究。1997年,DARPA再次邀请多所美国高校参与视频监控系统重大项目VSAM的研发工作。DAPRA和JSG&CC联合发起成立了自动跟踪识别工作组ATRWG。
与传统的粒子滤波(Particle Filter)方法和基于运动建模(如利用Kalman 滤波器估计物体运动的速度、加速度等)的目标跟踪方法不同,动态视觉跟踪的一个基本假设是物体在连续图像中的位置和特征变化都是缓慢的,因此可以通过在后续图像中搜索与目标当前位置临近的区域并寻求图像的最佳匹配来实现目标跟踪。其主要算法如下。
(1)基于特征点的跟踪算法,如KLT算法[23]。该类算法假设目标在视频流的连续帧间只产生一致性的小位移,因而其选取特征角点作为跟踪对象,寻找连续帧中使对应的角点区域灰度变化最小的区域作为最佳匹配区域,从而确定目标位置。
(2)基于在线学习模型的算法,如KCL 算法[24]。此类算法利用初始帧抽取物体特征(如HOG特征)并建立特征模型,通过特征匹配与搜索算法找到物体在后续帧中的位置和大小,并在线不断更新目标的特征模型。
(3)基于深度学习的算法。这类算法把深度学习得到的特征作为目标的特征模型,再通过类似KCF算法等采用的匹配与搜索策略来实现动态视觉跟踪。由于卷积得到的特征优于手工特征,这类算法具有更好的跟踪效果,但运算量很大。
运动目标检测与跟踪的主要应用领域包括布控系统监视、AB门防尾随检测、交通流量统计、消失物体侦测、可疑物出现侦测、人脸检测与捕捉、人群密度检测、工业自动化检测及绊线检测等。