1.2 计算机视觉理论和框架
计算机视觉是指利用计算机实现人的视觉功能,即对客观世界进行3D场景的感知、识别和理解。
1.2.1 计算机视觉的研究目的、任务和方法
计算机视觉研究的原始目的是理解和把握与场景有关的图像,辨识和定位其中的目标,确定目标的结构、空间排列分布及目标之间的相互关系等。
计算机视觉的主要研究任务可归纳成两个,它们互相联系又互相补充。第一个研究任务是建成计算机视觉系统以完成各种视觉任务。换句话说,要使计算机能借助各种视觉传感器(如CCD、CMOS摄像器件等)获取场景图像,进而感知和恢复3D环境中物体的几何性质、姿态结构、运动情况、相互位置等,并对客观场景进行识别、描述、解释,最终做出判断。这里主要研究的是技术机理。目前这方面的工作集中在搭建各种专用系统,完成在各种实际场景中提出的专门的视觉任务等方面,而从长远来说,则要建成通用的系统。第二个研究任务是把研究作为探索人类视觉工作机理的手段,进一步加深对人脑视觉的理解(如计算神经科学)。这里主要研究的是生物学机理。长期以来,研究人员已从生理、心理、神经、认知等方面对人类视觉系统进行了大量的研究,但远未揭开视觉过程的全部奥秘,可以说对视觉机理的研究还远落后于对视觉信息处理的研究。需要指出的是,对人类视觉的充分理解也将促进计算机视觉的深入研究。本书主要考虑第一个研究任务。
由上可见,计算机视觉要用计算机实现人的视觉功能,同时其研究又从人类视觉中得到许多启发。计算机视觉的许多重要研究都是通过理解人类视觉系统而实现的,如将金字塔作为一种有效的数据结构,利用局部朝向的概念分析物体形状,以及通过滤波技术检测运动等。另外,对人类视觉系统巨大理解能力的研究可帮助人们开发新的图像理解和计算机视觉算法。
计算机视觉的研究方法主要有两种:一种是仿生学的方法,参照人类视觉系统的结构原理,建立相应的处理模块以完成类似的功能和工作;另一种是工程学的方法,从分析人类视觉过程的功能入手,并不刻意模拟人类视觉系统内部结构,而仅考虑系统的输入和输出,并采用现有的可行手段实现系统功能。本书主要讨论第二种方法。
1.2.2 视觉计算理论
有关计算机视觉的研究在早期并没有一个全面的理论框架,20世纪70年代,关于目标识别和场景理解的研究基本上都是先检测线状边缘并将其作为物体的基元,然后再将它们组合起来构成更复杂的物体结构。但在实际应用中,全面的基元检测很困难且不稳定,所以视觉系统只能输入简单的线和角点,组成所谓的“积木世界”。
马尔于1982年出版的《视觉》(Vision)一书总结了他和同事对人类视觉的一系列研究成果,提出了视觉计算理论,给出了一个理解视觉信息的框架。该框架既全面又精炼,是使视觉信息理解的研究变得严密并把视觉研究从描述水平提高到数理科学水平的关键。马尔的理论指出,要先理解视觉的目的,再理解其中的细节,这对各种信息处理任务都是适用的。该理论的要点如下。
1.视觉是一个复杂的信息加工过程
马尔认为,视觉是一个远比人的想象更为复杂的信息加工任务和过程,而且其难度常不被人们正视。这里一个主要的原因是,虽然用计算机理解图像很难,但对人而言这常常是轻而易举的。
为了理解视觉这个复杂的过程,首先要解决两个问题。一个是视觉信息的表达问题,另一个是视觉信息的加工问题。这里“表达”指的是一种能把某些实体或某几类信息表示清楚的形式化系统(如阿拉伯数制、二进制数制)及说明该系统如何工作的若干规则。在表达中,某些信息是突出的、明确的,另一些信息则是隐藏的、模糊的。表达对其后信息加工的难易有很大影响。“加工”则指通过对信息的不断处理、分析、理解,将不同的表达形式进行转换并逐步抽象。
解决视觉信息的表达问题和加工问题实际上就是解决可计算性问题。一个任务要用计算机完成,则它应该是可被计算的,这就是可计算性问题。一般来说,对于某个特定的问题,如果存在一个程序且这个程序对于给定的输入都能在有限步骤内给出输出,那么这个问题就是可计算的。
2.视觉信息加工三要素
要完整地理解和解释视觉信息,需要同时把握三个要素,即计算理论、表达和算法、硬件实现。
首先,视觉信息理解的最高层次是抽象的计算理论。对于视觉是否可用现代计算机计算的问题,需要用计算理论来回答,但至今尚无明确的答案。视觉是一个感觉加知觉的过程。从微观的解剖知识和客观的视觉心理知识来看,人们对人类视觉功能的机理的掌握还很欠缺,所以对视觉可计算性的讨论目前还比较有限,主要集中在以现有计算机所具备的数字和符号加工能力完成某些具体视觉任务等方面。
其次,如今计算机运算的对象为离散的数字或符号,计算机的存储容量也有一定的限制,因而在有了计算理论后,还必须考虑算法的实现,为此需要给加工所操作的实体选择一种合适的表达。这里一方面要选择加工的输入和输出表达,另一方面要确定完成表达转换的算法。表达和算法是互相制约的,需要注意三点:①在一般情况下,可以有许多可选的表达;②算法的确定常取决于所选的表达;③给定一种表达,可有多种完成任务的算法。一般将用来进行加工的指令和规则称为算法。
最后,如何在物理上实现算法也是必须考虑的。特别是随着实时性要求的不断提高,专用硬件实现的问题常被提出。需要注意的是,算法的确定通常依赖在物理上实现算法的硬件的特点,而同一个算法可通过不同的技术途径实现。
将上述讨论归纳后可得到如表1-1所示的内容。
表1-1 视觉信息加工三要素的含义
上述三个要素之间有一定的逻辑因果联系,但无绝对的依赖关系。事实上,对于每个要素,均有多种不同的选择方案。在许多情况下,解释任意一个要素所涉及的问题与其他两个要素基本无关(各要素相对独立),或者说,可仅从其中一个或两个要素入手来解释某些视觉现象。上述三个要素有时也被称为视觉信息加工的三个层次,不同的问题需要在不同层次上进行解释。三者之间的关系常用图1-4来表示(实际上看成两个层次更恰当),其中箭头正向表示带有指导的含义,反过来则有作为基础的含义。注意,一旦有了计算理论,表达和算法、硬件实现是互相影响的。
图1-4 视觉信息加工三要素的联系
3.视觉信息的三级内部表达
根据视觉可计算性的定义,视觉信息加工过程可分解成多个由一种表达到另一种表达的转换步骤。表达是视觉信息加工的关键,一个进行计算机视觉信息理解和研究的基本理论框架主要由视觉加工所建立、维持并予以解释的可见世界的三级内部表达结构组成。对多数哲学家来说,什么是视觉表达的本质、它们如何与感知相联系、它们如何支持行动,都可以有不同的解释。不过,他们一致认可的是这些问题的解答都与表达这个概念有关。
1)基素表达
基素表达是一种2D表达,是图像特征的集合,描述了物体表面属性发生变化的轮廓部分。基素表达提供了图像中各物体轮廓的信息,是对3D目标一种素描形式的表达。这种表达方式可以在人类的视觉过程中得到证明,人在观察场景时总会先注意到其中变化剧烈的部分,所以基素表达是人类视觉过程的一个阶段。
2)2.5D表达
2.5D表达完全是为了适应计算机的运算功能而提出的。它根据一定的采样密度将目标按正交投影的原则进行分解,物体的可见表面被分解成许多具有一定大小和几何形状的面元,每个面元有自己的朝向。用一个个法线向量代表其所在面元的朝向并组成针状图(将向量用箭头表示),就构成2.5D表达图(也称为针图),在这类图中,各法线的朝向以观察者为中心。获取2.5D表达图的具体步骤如下:①将物体可见表面的正交投影分解成面元集合;②用法线代表面元的朝向;③将各法线向量画出,叠加于物体轮廓内的可见表面上。图1-5给出一个示例。
图1-5 2.5D表达图示例
2.5D表达图实际上是一种本征图像(见3.2节),因为它表示了物体表面面元的朝向,从而给出了表面形状的信息。表面朝向是一种本征特性,深度也是一种本征特性,可将2.5D表达图转化成(相对)深度图。
3)3D表达
3D表达是以物体为中心(也包括物体的不可见部分)的表达形式。它在以物体为中心的坐标系中描述3D物体的形状及其空间组织,一些基本的3D实体表达方式可参考第9章的内容。
现在再看视觉可计算性问题。从计算机或信息加工的角度来说,可将视觉可计算性问题分解成几个步骤,步骤之间是某种表达形式,而每个步骤都是把前后两种表达形式联系起来的计算/加工方法(见图1-6)。
图1-6 马尔框架的三级表达分解
根据上述三级表达观点,视觉可计算性要解决的问题是,如何由原始图像的像素表达出发,通过基素表达图和2.5D表达图,最后得到3D表达图,如表1-2所示。
表1-2 视觉可计算性问题的表达框架
4.将视觉信息理解按功能模块形式组织
“视觉信息系统是由一组相对独立的功能模块组成的”的思想,不仅有计算方面的进化论和认识论的论据支持,而且某些功能模块已经能用实验的方法分离出来。
另外,心理学研究表明,人通过使用多种线索或利用线索的结合来获得各种本征视觉信息。这启示我们,视觉信息系统应该包括许多模块,每个模块获取特定的视觉线索并进行一定的加工,从而可以根据环境,用不同的加权系数组合不同的模块来完成视觉信息理解任务。根据这个观点,复杂的处理可用一些简单的独立功能模块来完成,从而可以简化研究方法,降低具体实现难度,这从工程角度来看也很重要。
5.计算理论的形式化表示必须考虑约束条件
在图像采集和获取过程中,原始场景中的信息会发生多种变化。
(1)当3D场景被投影为2D图像时,丢失了物体深度和不可见部分的信息。
(2)图像总是从特定视角获取的,对同一物体从不同视角获取的图像不同,另外,物体互相遮挡或物体各部分相互遮挡也会导致信息丢失。
(3)成像投影使得照明、物体几何形状和表面反射特性、摄像机特性、光源与物体及摄像机之间的空间关系等都被综合成单一的图像灰度值,很难区分。
(4)在成像过程中,不可避免地会引入噪声和畸变。
对一个问题来说,如果它的解是存在的、唯一的、连续地依赖初始数据的,则它是适定的;若有任意一条不满足,则它是不适定(欠定)的。上述几类信息变化使得将视觉问题作为光学成像过程的逆问题来求解的方法成为不适定问题(病态问题),求解很困难。为解决这个问题,需要根据外部客观世界的一般特性找出有关问题的约束条件,并把它们变成精密的假设,从而得出确凿的、经得起考验的结论。约束条件一般是借助先验知识获得的,利用约束条件可改变病态问题,这是因为给计算加上约束条件可使其含义明确,从而使问题得以解决。
1.2.3 框架问题和改进
马尔的视觉计算理论是第一个对视觉研究影响较大的理论。该理论积极推动了这一领域的研究,对图像理解和计算机视觉的研究发展起了重要的促进作用。
该理论也有不足之处,其中四个有关整体框架(见图1-6)的问题如下。
(1)输入是被动的,输入什么图像,系统就加工什么图像。
(2)加工目的不会改变,总是恢复场景中物体的位置和形状等。
(3)缺乏(或者说未足够重视)高层知识的指导。
(4)整个信息加工过程基本自下而上,单向流动,没有反馈。
针对上述问题,近年来人们提出了一系列改进思路,对应图1-6,改进的视觉计算框架如图1-7所示。
图1-7 改进的视觉计算框架
下面结合图1-7,具体讨论四个方面的改进。
1.人类视觉具有主动性
人会根据需要改变视线或视角以更好地进行观察和认知。主动视觉指视觉系统可以根据已有的分析结果和视觉任务的当前要求,决定摄像机的运动以从合适的位置和视角获取相应的图像。人类的视觉具有选择性,可以注目凝视(以较高分辨率观察感兴趣区域),也可以对场景中某些部分视而不见。选择性视觉指视觉系统可以根据已有的分析结果和视觉任务的当前要求,决定摄像机的注意点以获取相应的图像。考虑到这些因素,在改进框架中增加了图像获取模块,与其他模块一起考虑。该模块要根据视觉目的选择图像采集方式。
主动视觉和选择性视觉也可看作主动视觉的两种形式:一种是移动摄像机以聚焦当前环境中感兴趣的特定目标,另一种是关注图像中一个特定区域并动态地与之交互以获得解释。尽管这两种形式看起来很相似,但在第一种形式中,主动性主要体现在摄像机的观察上;在第二种形式中,主动性主要体现在加工层次和策略上。虽然在两种形式中都有交互,即视觉都有主动性,但是在移动摄像机的方式中,对完整场景进行记录和存储,成本较高,而且得到的整体解释并不一定都会被使用。仅收集场景中当前最有用的部分,缩小范围并增强质量以获取有用的解释则模仿了人类解释场景的过程。
2.人类视觉可以根据不同目的进行调整
有目的视觉指视觉系统根据视觉目的进行决策,如是完整地全面恢复场景中物体的位置和形状等信息,还是仅检测场景中是否有某种物体存在。它有可能对视觉问题给出较简单的解。这里的关键问题是确定任务的目的,因此在改进框架中增加了视觉目的模块,可根据所理解的不同目的来确定是进行定性分析还是进行定量分析(在实际应用中,有相当多的场合仅需要定性结果,并不需要复杂性较高的定量结果),但目前定性分析还缺少完备的数学工具。有目的视觉的动机是仅将需要的部分信息明确化,例如,自主车的碰撞避免就不需要精确的形状描述,一些定性的结果就足够了。这种思路目前还没有坚实的理论基础,但生物视觉系统的相关研究为此提供了许多实例。
与有目的视觉密切相关的定性视觉寻求对目标或场景的定性描述,它的动机是不表达定性(非几何)任务或决策不需要的几何信息。定性信息的优点是对各种不显著的改变(如稍微变化一点视角)或噪声比定量信息更不敏感。定性或不变性允许在不同的复杂层次中方便地解释观察到的事件。
3.人类有能力在从图像中获取部分信息的情况下完全解决视觉问题
人类有这种能力是因为隐含地使用了各种知识。例如,借助CAD设计资料获取物体形状信息(使用物体模型库),可帮助克服由单幅图像恢复物体形状的困难。利用高层知识可解决低层信息不足的问题,所以在改进框架中增加了高层知识模块。
4.人类视觉中各加工步骤之间是有交互性的
人类视觉过程在时间上有一定的顺序,在含义上也有不同的层次,各步骤之间有一定的交互联系。尽管目前对这种交互性的机理了解得还不够充分,但高层知识和后期结果的反馈信息对早期加工的重要作用已得到广泛认可。从这个角度出发,在改进框架中增加了反馈控制流向,利用已有的结果和高层知识来提升视觉的效能。