|
真实的亲身实验能帮助学生们获得对图像分析与计算机视觉中理论性问题的较好的理解,而且会把这些理论应用于实践,来提高他们在数字信号处理,数学,统计学,感知学和精神物理学方面的知识。然而,由于缺乏广泛的测试和有很好文档的软件平台,重要的努力能够让学生们去开发一个计算机视觉是必需的。 在这篇文章中,我们用一个在计算机视觉中对研究者和开发者开放的源库-OpenCV库,来介绍我们的经验,这个库针对学生有局限性,以及我们通过一系列合适的指南来讲述怎么采用这个库作为教学内容。这些指南帮助学生把安装和设置的平均时间从一周减少到4小时,而且还帮助他们设计了一个完整的图像分析与计算机视觉课题。最后,我们讨论了将这一框架用于本科生和研究生的经验。 1. 介绍 基于视觉的系统成为围绕我们的许多应用中的一个重要组成部分,比如自动视觉监督,基于视觉的人机界面和许多的游戏。正如一种开发对已培训的学生创造出一个市场需求一样,事实上,越来越多的大学开始开设图像分析与计算机视觉课程。 尽管在上这些课程的学生当中,许多容易产生兴趣,但是要去帮助他们通过一个课题设计一个计算机视觉应用来获得实践经验却是很难。计算机视觉课题允许学生们投入到实践中,在数学,统计学,数字信号处理,感知学和精神物理学中获取知识。尽管对低级图像分析,可使用MATLAB实验箱来做,但是要学生去设计和去开发一个现实世界的实时应用,比如对象监测与识别,基于视频的人机界面,复杂现实或者对象跟踪,还是相当困难的。 我们在让学生们开始本科计算机视觉课题中遇到了一些问题,他们从我们研究室中借软件使用,这会花费他们太长时间而使得他们无法开始去设计,结果使得他们减少了真正学习计算机视觉的时间。理想的解决办法是有一个很好的软件平台和一个提供所以基本数据结构以及运算符的库,这个库还要包括基本函数或类,还有用来从视频摄像机读取数据,或从一个文件,显示视频图像或写入视频文件等等这样函数,还有计算光流的函数,用于跟踪和边缘检测的滤波器等等。当然还包括一些先进的功能。英特尔的OpenCV库就是这样一个最佳的选择。但是,我们认识到这个软件没有对函数做很详细的解释和证明(这个库主要是面向研究者和专业人员,而不是针对本科生),学生去正确的安装软件包,添加附加文件和理解如何去使用所需要的平均时间仍然很多。 OpenCV库提供了大量有用的函数,为了让本科生在他们的课题中很好的使用这个库的功能,我们决定去改进这个库的说明。主要有三个方面的说明:OpenCV软件的安装,从一个视频摄像头接收数据而需要添加的函数包和一个怎样写一个简单计算机视觉应用的程序。 2. 学生的OpenCV课题(STUDENTS’ PROJECTS WITH OPENCV) 我们讨论图像分析和计算机视觉课题模板的结构,包含使用OpenCV库适合本科学生做的实验,在学生做的一个实时应用中,这个模板的目的就是一个设计、开发或研究课题。这个课题使学生们去认识计算机视觉系统的组成部分,在信号处理中和在C、C++编程中开发他们的技能。除此之外,这个模板给学生们管理他们自己的时间来完成一个课题的经历,开发他们的交际技能,包括书写和口头上的,成为一个工业期望的标准新毕业生。课题的结果是一个报告,一个示范,一个表述和一个口头测试。这个课题正常占用大约240小时,涵盖两个学期,可以采取个人或组队的方式。在组队情况下,目标是提供学生作为一个组员工作的经历,相互交流来管理一个复杂的工程。事实上,个人的课题通常开始于实验中有用的信息,而组队课题开发于存在的课题,并建造一个更复杂的应用。在这种方式下,学生可以看到评注很好和归档很好的软件的重要性。 学生们首先上一个关于课题目的和OpenCV库介绍的课程。然后他们会有三个老师帮助他们开始。第一个老师教他们安装软件,使用Visual Studio 和Direct X SDK;第二个是教他们为OpenCV创建一个工作空间和工程;最后一个是教他们如何写一个实时应用程序,用库和一个网络摄像机做一个背景提取算法。除了老师和OpenCV文档以外,学生们还可以获取先前的课题报告,包含完整的和丰富的基本文档。 3. 工程实例 第一个例子是基于背景提取的对象监测。背景提取是用一个静态摄像机监视运动的对象。这是一个简单而有效的例子。学生们能学习到由不同光照条件、摄像机噪声和阴影引起的问题。从一个简单的对像素级图像差分阈值化开始,学生们理解怎样去使用形态学和低通滤波器,重采样和统计分析。除了上面的以外,他们还学会怎样使用统计方法来生成一个背景帧。 在先前例子的基础上,学生可以开发其他的应用,比如对象跟踪,通过对象跟踪的工作,学生们理解特征表示的重要性,颜色空间转换,在特征空间中使用距离函数,和不同跟踪算法的重要性。而且,他们学会怎样消除相似对象间的歧义,通过选择合适的特征集来描述他们。特别地,他们用几种直方图对比函数,比如X2,相关性方法和Bhattacharyya距离。他们学会检查颜色空间和图像中不变颜色特征的属性间的差别。这些允许他们设计从阴影中区分对象的算法。
图1 阈值化背景提取例子结果:(a)经过不同形态学滤波的结果;(b)单个腐蚀后的结果;(c)反复腐蚀后的结果;(d)下采样后的结果;(e)在下采样基础上上采样后的结果;(f)统计分析后的结果
图2 基于背景提取和颜色直方图距离的对象监测和跟踪例子 另一个应用是把背景提取结果用于混合现实场景中,如图3所示。学生们可以理解怎样为生成视频写算法,怎样去解决由周围环境照明和几个输入合成产生的不同问题。
图3 实时混合现实应用例子:(a)不断学习和更新的背景模板;(b)当前帧;(c)新的背景帧;(d)基于对象的场景合成 其他的课题不需要利用背景提取,他们基于感知的人机交互界面。例4展示了
图4 感知人机交互例子:(a)基于视觉的移动控制:手变化通道的一个垂直运动(上:下一个通道,下:先前通道;左(右):减少(增加);(b)虚拟艺术家:根据手的运动,学生可以画出图像中能被选出的不同颜色 一个通过跟踪手势的移动控制,如图4所示。在这里通过颜色和边缘信息定义个手模型,基于这个模型进行跟踪。而且,用面部检测消除手与脸部的歧义。学生们可以学会如何定义和使用一个对象模型,而且怎样跟踪。在开发这些应用时一个特殊要求是分析跟踪的精度。学生们以用户满意度和以客观韵律来评价结果。 3. 评价 a) 学习收获 对图像分析与计算机视觉课题学习的成果被分成两组,分别称为客观特殊技能和可转移技能。在特殊技能中,针对熟悉或不熟悉的场合,学生们学会使用信号处理,数学和软件工具。特别地,我们认识到开发一个好的应用的机会,背后有许多的理论学习和概念,有助于激发学生们。有意义的是,这些观点也会激发一些学生进一步深入开发他们的课题,而且去学得更多。而且,开发一个实时计算机视觉应用对学生很有回报性,同时他们也会获得乐趣。在可转移技能中,学生们学会有效地管理时间,及时制定手写进度报告和最终的结论报告。 除了信号处理和计算机视觉实验以外,这些课题使得学生们看到写那种容易 重复使用的软件的重要性。在组队中工作的学生们在其他人工作的基础上做自己的工作,因此看到到软件没有很好注释和归档时所遇到的问题。 b) 评估 OpenCV被越来越多的研究团队广泛地使用。因为它是免费的,OpenCV库被下载的次数超过了一百万次,官方yahoo组已经达到五千成员。然而,当我们加入这个组时,我们发现我们的问题找不到答案,而我们自己收到了许多问题。其中的一个原因是OpenCV库的目标用户是深入理解计算机视觉的,而且很少有文档报告。 为帮助学生使用OpenCV来开发图像分析与计算机视觉课题,创建导师指导和学生们实验是作为一个附加的文档。尽管学生们会发现很难去开始他们的图像分析与计算机视觉工程,但是他们中一些成功地展示出他们的成果,用一个普通计算机和一个网络摄像机就有能力设计一个,这也说明了他们对此充满了激情。这也反过来激发了其他学生的兴趣。 采用OpenCV作为教学目的的一个重要优点是它是个开发的资源,这不仅减少了成本,也能在家里继续工作。 除了上述的以外,平台是非常有用的,在学生学习理论知识的期间,提供给学生们可以亲身动手的课题是很有意义的。 4. 总结 实验室里动手实验和课题是学习信号处理和计算机视觉方面知识的非常有效的方法。我 们提出了一个我们开发和使用的框架,为了提高在本科阶段基于OpenCV库学习图像分析与计算机视觉的学习质量。为这个库提供了附加的帮助性文档和课题实例,向不可能在本科阶段学习的学生们提供了一个学习的机会。所以的课题提供了一个用户指南和功能性帮助文档。为了应用和增强OpenCV库中函数的可利用性。这个框架会不断地更新文档,增加附加的课题试验。 |
|||
| 技术录入:蓝云杨 责任编辑:雀巢咖啡 | |||
|
|
|||
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||
|
|
|||
|
|||
|
|
|||
|
|||
|
|||
|
|





