首页 > 文章中心 > 计算机视觉导论

计算机视觉导论

前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇计算机视觉导论范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。

计算机视觉导论范文第1篇

关键词:计算机视觉;教学应用;教学改革

计算机视觉是人工智能学科中的一门重要课程。随着相关应用在多个领域中的出现,越来越多的学生开始对这门课产生了浓厚的兴趣。如何让学生能够在整个课程中保持盎然的兴趣,并为有志于深入研究计算机视觉的学生指明方向,成为我们教师首先应注重的问题。

在实际的教学工作中,通过不断摸索总结,我们认为,以实际应用引导学生的学习兴趣,既满足了学生想了解计算机视觉实际应用的需求,又加深了学生对于算法的理解,把算法放在一个实际应用中,学生可以理解怎么用,为什么这么用。在这样的目标导引下,我们从选择教材开始,准备教学内容(包括合理的应用实例的选择)、制作PPT、探索教学方法,形成了目前以实际应用为主导的创新教学体系,非常受学生欢迎。在此,我们对这期间遇到的问题,解决方法、心得体会做一个总结和思考,希望能对同行有些许参考作用。

1选择教材

在我们这个专业,每年的上研率基本都保持在50%左右。在本专业的研究生阶段,也开设了双语教学的计算机视觉课程。另外,毕业后选择参加工作的同学也基本都进入和本专业非常相关的一些单位,所从事的工作,都是和在学校学习的知识密切相关。

因此,如何让这门课程的教学既兼顾本科毕业就参加工作的那部分同学,又兼顾继续深造的学生的需求,也是在这门课程讲授的过程中,需要特别注意的一个问题。对于本科毕业就要参加工作的同学而言,需要“广度”,需要了解计算机视觉这门课在各个领域中的应用,在实际中接触到相关的项目或工作时,能够知道去哪里可以找到自己需要的参考资料;而对于要进一步深造的同学而言,则需要一定的“深度”,为研究生阶段的研究打下基础。

全盘考虑到这些学生毕业之后的去向,我们选择了两本教材。一本是贾云得教授编著,科学出版社于 2000年出版的《机器学习》[2],这是一部顺应了时代与教学发展要求的教材,对计算机视觉中的基本概念、基本算法、基本算法的应用、经典应用进行了由浅入深的介绍。内容涵盖了所有经典的数字图像处理与机器视觉方法,也对一些已经得到非常好实际应用的方法,如光流法等作了简要介绍。另外还选择了一本英文原版的计算机视觉的经典著作,Ramesh Jain 教授等所著的《Machine Vision》[3],机械工业出版社于2003年出版。这是国内外非常推崇的一本计算机视觉著作,该教材条理清晰,深入浅出,对计算机视觉的基本原理、算法、应用的介绍非常详尽。

在教学中,我们采用了英文的PPT,但主要用的教材是贾云得教授的《机器视觉》,这样中英文对照讲解,一方面加深学生对教学内容的理解,另一方面也为学生今后阅读专业的英文论了相应准备。

2教学内容和工程实例的选取

2.1选取教学内容

本课程之前,大学二年级的本科生已开设数字图像处理课程,但所讲的基本原理和算法都非常浅显,所以在教学内容的安排上,分为两大部分:数字图像处理部分和视觉部分。数字信号处理部分主要讲解在视觉部分会用到的一些基本算法,为后面进入计算机视觉部分打基础。这部分约占总课时的1/3。视觉部分的课时也分为两部分:算法讲解与实例讲解。在算法讲解部分,对计算机视觉的基本算法、经典算法都做了深入浅出的讲解。实例部分则选择了经典的工业应用,让学生能够对所学算法进一步加以理解。

2.2选取适当的工程实例

就计算机视觉的教学内容而言,各个孤立的算法和方法对本科生来讲,有些抽象不好理解。如果在教学上仅仅通过老师在课堂上的讲解,很难让学生深入地理解相关的教学内容,而选择一个触手可及且简单好理解的工程实例往往就会达到意想不到的教学结果,学生可以把课堂上所学的枯燥理论与现实中活生生的事物联系起来,从而加深对教学内容的理解。

通过反复比对、反复论证,我们选择了在讲解基本原理和算法之后,在课程结束前,专门留出课时讲解手机制造这个例子。手机现在是人手一部,是这些年青学子再熟悉不过的事物了,通过对手机主板、手机键盘的制造过程的讲解,把所学的算法都融合进来,学生在觉得有趣的同时,不知不觉就加深了对所学算法的理解。

另外,在教学的过程中,我们还不断穿插其他学生耳熟能详的实例,如数码相机原理中的一些算法的讲解,我们和学生一起探讨应该怎么选择数码相机。再有,滤波器算法、在课堂上对Photoshop功能的演示,与所学算法关联起来,学生都很容易理解接受。

3教学点滴

3.1点睛之笔

在第一节课的讲述中,我们的重点不在于Marr理论,而是告诉学生:

人工智能就是要让计算机像人一样,能够会听、会看……

我们这门课程就是要让计算机“会看”,要像人一样会看。进而展示给学生一些我们精心挑选的图片,让学生自己判断,是不是自己的眼睛“骗了”自己,人眼和计算机看到的到底有什么不一样。

每次讲到这里,学生都会进行热烈的讨论,每个人都有不同的看法,每个人都有自己的坚持,不知不觉中,对这门课就产生了浓厚的兴趣,有了继续深入学习下去的愿望。在课堂讨论的最后,比较人眼对图片的判断以及计算机的判断后,让学生自己总结归纳,我们这门课到底要研究些什么,都有可能应用在哪些方面,然后对争议比较大的提议一一探讨。每到这个时候,大家的积极性就都被激发出来,在不断的争论与思想碰撞中找出正确的结论。

3.2拿身边的事物说“事”

计算机视觉课程的前半部分,多涉及到图像处理的一些常见算法。在讲授各种各样的滤波器和算子时,并没有针对各个滤波器和算子摆出一堆示例图片,让学生比较滤波前后的差异,从而很生硬地理解滤波器与算子的功能。取而代之的,我们首先以现在人手一台的数码相机为例提出问题,你为什么要选择你手里的这台数码相机?当初选这个品牌和型号时,你的考虑是什么?历年学生的回答几乎都是看网上测评,或者在网上看别人怎么说。这时列出我们收集到的各个品牌相机的测评报告,列出它们的优缺点,然后引导学生去思考,例如这个品牌的相机的缺点是照片发灰,不是很鲜亮,而另一个品牌的相机则绿的特别绿,红的特别红,为什么?那么有可能是哪部分的算法不够完善,为什么?

通过如此简单的对比,学生的积极性被完全激发。原来,数码相机这个几乎人人都有,大家都熟悉的“玩具”竟然和自己在课堂上学到的知识这么密切相关。

再有,就是利用学生们都熟悉的PS(Photoshop),演示现在所谓的“完美证件照”是怎么来的。为什么可以把疙疙瘩瘩的脸部皮肤变得光滑?在PS中,你就是点了一下鼠标,其实在后台,是加入了一个滤波器进行了滤波。各种这样的演示,学生都非常喜闻乐见。因为他们突然发现,原来那些事物,和我自己接触到这些看似枯燥的理论之间,还有这么深刻的联系。

还有一个很受学生欢迎的例子就是对于“鼓形失真”的讲解。我们的老师每次讲到这里,都不会简单告诉学生“鼓形失真”发生的原因是什么,应该怎么解决?老师都会问学生,明星为什么都一窝蜂去减肥?现在的女明星为什么都要去弄个“锥子脸”?课堂上就会出现一个小,男同学和女同学的看法各异,彼此之间开始争论不休。此时再趁热打铁地问学生,如果拿着相机,离自己的鼻子一公分,会拍出什么样的效果?有学生开始拿出手机对着自己和别人开拍,有的学生开始头头是道地分析。每到这种学生都开始热烈讨论的时候,就可以适时引导学生往正确的方向去,让他们自己找到正确的分析解决方法,往往这个时候,学生都会颇有成就感,对于问题的理解也会特别的深刻。

3.3选择合适的实际应用

在所有理论讲解结束后,我们会留出2~4次课讲述计算机视觉在工业上的应用。这些年来,对于手机制造这样一个工业应用,非常受学生欢迎。正如“数码相机”这个例子一样,现在学生都是人手一部手机,是大家再熟悉不过的东西。这个例子涉及到了在前面理论讲述中的大部分算法,如二值图像的处理、模板匹配、高斯滤波器等。学生通过对这个工业应用的理解,更进一步加深了对算法的理解。

以讲解手机键盘的制造过程为例,向学生提出和前面所讲内容相关的问题,引导学生自发思考,如为什么选择模板匹配法,而不是采用其他更复杂更精确的方法等等。每到这个时候,课堂气氛总是分外热烈,学生各抒己见,在不断争论中,更进一步加深对课本上枯燥理论的认识。

在这里需要注意的问题是一定要一步一步提出问题,循循善诱,引导学生一层一层地深入思考。如果问题的答案过于“深藏不露”,则有可能触发学生的抵触情绪,无法继续深入地思考。

4结语

通过多年的教学摸索,我们认为,在计算机视觉课程的讲述中,以实际应用引导学生这样的教学方法非常可取,而且也收到了很好的效果。另外,除了制定好的教学大纲,并选择合适的教材外,根据学校现在的时间情况,我们选择了多媒体手段辅助教学,充分利用Matlab和大屏幕投影等方方面面的优势,结合多种方法进行教学,对讲好计算机视觉这门课,非常有益。

参考文献:

[1] 林尧瑞,马少萍. 人工智能导论[M]. 北京:清华大学出版社,1989.

[2] 贾云得. 机器视觉[M]. 北京:科学出版社,2000.

[3] Ramesh Jain. Machine Vision[M]. 北京:机械工业出版社,2003.

[4] 蔡自兴. 智能控制原理与应用[M]. 北京:清华大学出版社,2007.

Innovation in the Course of Computer Vision

HAN Hong, JIAO Li-cheng

(School of Electronic Engineering, Xidian University, Xi’an 710071, China)

计算机视觉导论范文第2篇

高等学校的计算机教育,特别是广大非计算机专业的计算机基础教育,在很大程度上决定着未来社会人们应用计算机和信息化技术,解决来自自身领域问题的能力高低,所以计算机基础教学备受社会各方面的关注。本文结合作者在海外数所著名院校执教十年的工作经历,介绍海外高校关于非计算机专业计算机课程设置的研究与实践经验。

1非计算机专业学生对计算机课程的需求特点

在学习计算机知识的过程中,非计算机专业学生的思维方式不同于计算机专业的学生。非计算机专业学生对计算机课程学习有其自身的需求,我们必须根据现代教育思想和教学理论,针对非计算机专业学生对计算机课程的需求特点,选择正确的教学内容,设立相应的课程体系,运用恰当的教学模式与方法,将理论与实践紧密结合,以提高非计算机专业计算机基础教学的效果和质量。

通过与计算机专业学生的需求对比,Kapland就非计算机专业对计算机课程的需求特点作出如下归纳总结[1]:

1)(1) 非计算机专业学生通常与诸如信号、图像、方程、表格等实体打交道比较多。为了能够对非计算机专业的学生有所帮助,计算机基础课程须教会他们如何表示这些工作中会用到的数据,以及如何操作这些数据,而对学生不太会感兴趣的,诸如AVL树和B树之类的复杂数据,则可以略去不讲。

2)(2) 非计算机专业学生往往将计算机看成是一种工具而非自身的兴趣所在,更非其职业追求的目标。他们通常对计算机已有所接触,能够在家里轻松自如地使用计算机进行一些图像编辑、音乐合成等简单的操作。一旦转到课堂,让他们学习如何打印从1到10的数时,计算机知识则变得复杂得多。强烈的对比很容易让他们产生一种错觉:大学的计算机课程过时了,没有实际应用价值。

3)(3) 非计算机专业学生有着不同的专业背景,将来也会从事各行各业不同种类的工作。课堂上引用的例子必须是不同专业的学生都可通过直觉所接受的。

4)(4) 非计算机专业学生的导师往往自身也不具备很强的计算机使用能力,不可能去很好地帮助学生改善其计算机使用能力。学生从导师那里得到的帮助十分有限。

5)(5) 非计算机专业学生用在计算机课程上的学习时间十分有限,他们不太可能系统地学习计算机课程。有相关统计数据表明,一个计算机专业的学生在计算机课程上所花的时间通常是非计算机专业学生的十倍。

6)(6) 非计算机专业学生会频繁地使用各类标准的图表,如点线图、直方图、散点图、轮廓图、投影图,等,即便是在一个很初级的阶段也是如此。

7)(7) 非计算机专业学生大都不常写软件包,但是会经常使用它们。他们写程序往往是为某一特定用途,而不是写给别人使用。

8)(8) 非计算机专业学生通常不用设计二进制格式的文件,而是直接采用现成的电子表格、图像、声音等形式来进行操作。他们迫切需要知道如何组织和操作存储在各类表格和数据库中的数据,但可惜的是,这些知识在大多数计算机基础课程中并未涉及。课堂上,教师们常常教给他们线性表、栈、队列、树、集合和图,但并没有教会他们如何进行数据库的选择、投影和连接等典型操作。

9)(9) 如今用于科学计算的软件包非常多。我们很难预测非计算机专业学生在将来的科研工作中会需要哪些具体的计算机知识。与此相反,计算机专业的学生会非常确定地使用计算机程序语言,如C++和Java。

2非计算机专业计算机课程的典型设置

应非计算机专业对计算机基础知识的迫切需求,当前,海内外高校为非计算机专业开设了多种不同类型的课程,大体上可分为三种:(1)计算机导论课程 (着重计算机文化基础);(2)计算机应用课程 (着重案例解答);(3)计算机编程课程 (着重程序语言与软件包使用技巧)。具体讲授方式也依照学校规模、教师队伍与学生分布的不同而各具特色,总体上有如下三种授课方式:(1)同时面向计算机专业和非计算机专业,统一授课;(2)计算机专业和非计算机专业分开授课;(3)面向某一特定的非计算机专业(如医学),专一授课。这样,可根据不同专业需要的侧重点不同,传授相应的计算机基础知识。下面,我们通过具体的案例,分别就海外非计算机专业计算机课程的设置经验作进一步介绍。

案例一:荷兰蒂尔堡大学(University van Tilburg, the Netherlands)

笔者曾经在荷兰蒂尔堡大学信息系统与管理系任教3年。蒂尔堡大学为非综合性院校,共设置有五个学院――经济商学院、法律学院、社会与行为科学学院、人文(艺术、哲学、神学、宗教学)学院和天主教神学院。该校的经济商学院是最早、最大的学院,其经济学科居世界前列。信息系统与管理系附属于经济商学院,所开设的课程面向本系信息管理专业的学生,同时对校其他专业的学生开放,属上述统一授课类型。该系开设的主要课程包括商业工程(Business Engineering)、计算机与因特网技术、计算逻辑、计算机体系机构、数据库、e-商业(e-Business)、电子商务、信息技术、商务信息技术、计算与通信技术、经济与计算通信技术、运筹学与计算通信技术、信息管理、信息系统的质量管理、Linux、面向对象程序设计、面向对象模型、信息技术讲座、软件工程、系统与程序开发、网络资讯,等。

2.1计算机导论课程的设置

该类课程的目的在于让不同系科的学生懂得计算机科学的基本原理,教给学生计算机科学中一些伟大的思想与发明,通过这些预备知识,让学生能够最大限度地为将来理解计算机的能力和局限性打好基础,使之能在所从事的行业中学以致用。与此同时,在不要求学生今后从事计算机方面工作的前提下,教给学生很多计算机方面实用的知识,培养一些实用(如软件包的操作及其在实际情况下的应用)。那种只有通过学院式计算机课程的学习才达到的对计算机科学的深入理解并不是此类课程的目的。根据参考文献[3],对计算的深刻理解是可以通过非编程的教育手段获得的。

案例二:美国卡耐基梅隆大学(Carnegie Mellon University, USA)

美国卡耐基梅隆大学的Cortina认为现在的非计算机专业计算机课程为了让学生能写出正确的程序,过分强调了程序设计中的细节及其严谨性。很多时候,学生修这类课程并不是因为他们在实际工作中会用到编程,而是因为这是必修课 [2]。为此,他提出计算机导论课应教给学生计算机科学的原理而非编程,课程应着重强调从计算角度看计算机科学中的主要贡献,学生着重对计算能力的理解以及在计算机科学中会遇到的可能影响其他学科的问题。在设计课程的过程中,教师不应该通过某一门程序设计语言或者某一个特定的应用领域贯穿始终地讲授,而应该从计算的角度,讲述计算机科学的主要贡献和事件。学生学习算法以及建立计算机科学的思维方式,可以通过使用流程图、模拟器来演示一些简短算法的流程,使得能够在不涉及程序设计语言语法的情况下,就可写出一个简单的小游戏。Cortina在其所讲授的计算机导论课程里,覆盖了如下几方面的内容[2]:

(1) 计算机科学的发展史。例如:早期的设备,欧洲中世纪计算机科学的缓慢发展进程,Babbage 和Hollerith在19世纪的贡献,以及战争(二战、冷战)对计算机科学飞速发展的影响和促进,等。

(2) 用算法表达计算程序。例如:采用伪代码表示算法,用Raptor工具模拟计算过程可视化流程图,等。

(3) 数据的组织。例如:基本数据结构(数组、链表、栈、队列、树和图)、数据库和算法的典型构成(赋值、条件语句、循环和子过程,等)。

(4) 用计算机可执行的程序表达算法(即计算自动化)。例如:程序设计泛型(命令式、面向对象式、函数式和逻辑式)、编译器与解释器。

(5) 算法设计的技巧。包括递归、分而治之(如归并排序、汉诺塔)、贪心算法(如Huffman编码、最小生成树)和动态规划(如Fibonacci函数、所有顶点的最短路径)。

(6) 优化,让计算更完美。包括正确性(常量的使用,用数学归纳法证明算法的正确性)以及有效性(算法复杂度)。

(7) 计算的极限。例如:难解性、不可判定性和通用计算模型(图灵机和计数器程序)。

(8) 并发性。包括多处理器(同步、最大加速比和负载)、流水线技术和多任务(操作系统、死锁与饿死)。

(9) 应用。例如公钥密码学、人工智能(图灵测试和博弈树),等。

(10) 计算的未来。包括量子计算、纳米科技等客座讲座。

2007学年,共65人选修该课,分别来自人文与社会学院、商学院、工程学院、计算机学院和理学院。根据学生的反馈[2],80%的学生赞同客座讲座,55%的学生期望继续启用但应使用更多的图例进行讲解,85%的学生会将这门课推荐给朋友。

案例三:香港理工大学(Hong Kong Polytechnic University, China)

考虑到医务人员通常需要使用计算机工作者开发的远程临床设备。很多时候,这些临床设备启用了一段时间,但使用者却经常因为基础电脑知识的缺乏而遇到各式各样的问题。为解决此问题,香港理工大学计算机系专门为医务工作者开设了一门名为“计算机开明”(computer literacy)的课程,听课者包括医生、管理人员、市场销售人员以及经理,等。课程教案几经修改,每次修改均安排在实战训练课程后或者研讨会之后进行。该课程旨在概述计算机的基本运作、资讯科技在医疗系统中的应用,以及计算机的基本操作常识。授课内容包括:

1)(1) 计算机系统导论,包括计算机系统的基本组成(CPU、存储设备、媒体和I/O设备)和工作原理。

2)(2) 系统软件,包括系统软件的功能和操作,MS Windows的基本特点和命令,等。

3)(3) 汉字的输入方法。

4)(4) 数据库,包括数据库系统的体系结构,数据库系统的操作,等。

5)(5) 资讯科技的应用,根据计算机组织结构,介绍计算机的应用。

案例四:美国波士顿大学(Boston College, USA)

美国波士顿大学Parker and Schneider认为非计算机专业课程应该超越计算机语言的语法讲授,重点介绍计算机学科的整体情况,让学生明白计算机编程只是整个计算机学科的一部分。课程所要达成的目标在于向学生传递一种计算机“感觉”,在讲解计算机的一些主要概念及其相互联系的同时,让学生真正地在实验室里操作实践[4]。他们所设计的课程内容涵盖了计算机理论、硬件与逻辑设计、计算机组成、算法与数据结构、程序设计语言、操作系统与虚拟机、应用以及社会等诸方面。其教学风格是在每一个层次上,介绍重要的原理并引出在这个层次上学习的关键问题,然后,迈向下一个层次在一个新的抽象层次上对新问题展开讨论,同时和前一个层次的内容相结合。

2.2计算机应用课程的设置

由于上述计算机导论课程依然着重于计算机系统本身而非计算机应用,或多或少地强调计算机编程,就好像教一个想学开车的孩子如何修汽车,因而,那些受好奇心驱动的非计算机专业学生往往觉得此类计算机导论课程困难且乏味。为解决此问题,另一大类偏重于实际应用的计算机基础课程孕育而生,即计算机应用课程。

案例五:美国哈佛大学(Harvard University, USA)

美国哈佛大学Leitner等人提倡在非计算机专业的计算机基础教学中,讲授计算机应用而非计算机本身,强调计算机应用程序的使用而不是单调的程序设计练习[5]。课程的目标在于让学生学会用软件系统刻画和解决实际问题,以加强对相应计算机概念的理解与认识。课程设计应围绕计算机科学中最让人感兴趣的应用领域(如人工智能、计算机图形学、计算机视觉、信息检索、人机交互,等)来组织。在授课的过程中,每一种应用可从两方面来讲授:首先,给出计算机科学概念的一个直觉性概观;其次,强调应用的特定细节,务必每一个实例都和一个特定的软件系统联系在一起。学生不需要程序设计的基础,在课堂上也不讲授程序设计。在选择具体的应用案例时,注意选题必须覆盖计算机应用的关键领域并提供这些领域特点概念的代表性举例;需用到的软件必须易学、易用、易引起学生的兴趣,适合新手使用和实验,需假定学生除了用过Word或浏览器这类的基础软件之外没用过其他软件。这些系统既可以是商业软件、自由软件,也可以是自己开发的。参考文献[5]中给出了几个案例及其分析说明。

(1) 光线跟踪。运用计算机图形学原理(几何建模和光线传输与反射)、计算几何(计算交叉、几何搜索)等计算机知识。

(2) 动画粒子系统。涉及离散时间系统驱动(随机数)、数值方法(数值积分)等计算知识。

(3) 交互优化。涉及计算复杂性(算法与问题的复杂度、旅行商问题和NP完全)、人工智能(启发式搜索和优化)、概率论和统计(算法的经验分析)、人机交互(协同用户界面的设计)等计算技术。

(4) 图像增强。涉及电子成像(图像感知与表示)、图像处理(点操作、图像过滤、噪音去除)等计算技术。

(5) 人脸识别。涉及计算机视觉(形状识别、图形跟踪和运动分析)、人机交互(基于照相设备的界面)等计算技术。

(6) 万维网上的信息检索。涉及经典数据处理(关系数据库和有效排序和查找)、信息检索(名词集合的向量空间模型、倒排索引、链接分析法、语义网和协同过滤)等计算技术。

案例六:美国坦普大学(Temple University, USA)

美国坦普大学Aiken等人为非计算机专业学生设计了一门计算机案例课程,期望通过具体案例,结合特定领域的知识和逻辑,运用解决科学问题的一般性计算和数学方法,借助信息工具,引导学生解决关键的科学问题,达到让学生了解不同领域专家如何使用信息技术解决问题的目的[6]。在选择案例时,所考虑的依据为:①案例所表述的问题必须能激发不同专业学生的兴趣;②案例必须是一些实际工作中可能会遇到的;③通过案例阅读和分析,学生能迅速把精力集中到解决问题的策略和信息技术上,而不会被其他一些困难所牵制;④案例所表达的问题必须涉及计算机科学的主要概念和相关工具。参考文献[6]中详细地绘出了案例分析的模板,包括如下八个组成部分:

1)(1) 任务描述。包括问题陈述、动机、背景、研究与验证所采用的模型、边界条件、作为一般性问题解决策略的解题过程、学习目标、陷阱与失败的范例,等。每一个案例应代表某一类问题以及与其相关的解决方案。

2)(2) 课程计划和讲义。包括课程内容、特定目标、讲解与实验、独立活动、讨论专题和小组活动,等。

3)(3) 试验计划、活动与讲稿。描述学生在实验前应该作哪些思考、应该在实验室里做些什么工作以及这些工作的目的。

4)(4) 作业、课程项目、考试题和讨论问题。应留有足够的各类问题,用于自我评估并可供学生进一步自学。

5)(5) 数据。应有与案例分析相关的数据(如文件、数据库、图像、动画和演示)。

6)(6) 程序与工具。在案例分析中所用到的每一个程序和工具,在网上都应该有足够的文档,以及为什么选择这种工具的陈述。

7)(7) 额外的资源,供进一步学习之用。包括参考文献、信息网站、相关项目,以及项目完善的建议。

8)(8) 评价体系。对于案例分析中的每一种活动,指出学生应达到的程度。

参考文献[6]给出了如下几个案例供参考。①模拟时空下人类的行为,通过GIS模拟,跟踪2000年前到9000年前巴拿马中部热带森林里农民的扩张和随之而来的巴拿马森林的减少。②工业发展对职业年龄等造成的一系列影响,自1980到现在,审查、评价和解释美国职业分布的变化。③用计算方法探秘有机分子的结构,教给学生简单有机分子的物理性质和结构之间的关系,让学生利用物理定律和特定的计算方法预测简单分子的结构和性质。

2.3计算机编程课程的设置

在鼓励向非计算机专业开设计算机导论课和计算机应用课的同时,当前仍然有很多高校认同计算机程序设计课程的必需性。这是因为科学计算普遍存在于当今绝大多数的科学领域中,科学家们倾向于使用应用软件包而非程序开发环境。掌握基本的计算机程序设计概念、学习一般性程序设计技巧对使用这些软件包非常有帮助。如今,越来越多的科学软件包采用脚本语言、或更为完善的程序设计语言(如Matlab,Mathematica,等)。另外,教给学生一门程序设计语言对于将来想从事计算机科学工作的学生也是有用的。

一般意义上,计算机编程课的目的在于培养学生清晰思考的能力、通过编程解决实际问题的能力、以及感知计算机可以解决哪类问题的直觉能力(如计算机的最大能力以及计算的极限)。程序设计课程的讲授一般需遵循下列准则:①因时间有限,所讲授的程序设计语言必须容易学习和掌握;②程序设计语言必须能清晰反映计算机编程概念;③程序设计语言必须提供科学工作者常用的基本运算,例如将程序设计语言与图形集成在一起,学生就可以较为容易地学会画统计图表;④程序设计语言必须具有一般性,可以通过程序设计语言来解释计算机科学中遇到的重要概念,如语言必须可以用自然而简单的形式去表达树,也可以支持递归;⑤应用程序和例子必须经过认真、仔细地挑选,向学生展示这些例子与所学知识的内在关联,教给他们将来从事科学工作的技巧,且所选应用对于每个理工科学生来说都应是有趣、易掌握的。

案例七:美国杜克大学(Duke University, USA)

美国杜克大学Biermann在讲授计算机编程课程时,兼顾了两大部分的内容:计算机硬件/软件部分和高级专题部分[7]。计算机硬件/软件部分着重让学生理解计算是一个机械的过程,从开关电路和机器基本部件的连接开始,讲授晶体管和超大规模集成电路技术,以及如何将大规模电路集成到小芯片上,然后展示一个典型的机器系统结构,机器的运转以及如何用它编程,最后,解释一个小的编译器如何把高级语言翻译成机器可以执行的语言。在高级专题方面,主要介绍一些当今热门研究问题,让学生认识到计算机科学的局限性,包括计算机程序的时间复杂度、并行结构、不可计算性和人工智能,等。

案例八:美国马可雷斯特大学(Macalester College, USA)

美国马可雷斯特大学Kaplan 在讲授Matlab 程序设计课程中,一半用来介绍Matlab编程,包括数据类型、函数的参数传递、索引、读取标准文件的操作(如文本文件,电子表格)、构造函数、条件和函数;一半用来介绍理工科的实例,如声音(音乐合成、降噪音、速度变化,等)、图像(颜色调整、图像分片、边缘检测,等)、与数学的联系(公式的运用)、计算机科学(Fibonacci函数、汉诺塔、最优匹配、生物信息,等),以及图形用户界面(识别图像上的点),等[1]。

3结束语

一门优秀的非计算机专业计算机课程带给学生的影响与作用力将超过一个学期。纵观海外各大高校关于非计算机专业计算机课程的研究与实践经历,我们认为在设计一门非计算机专业计算机课程时,应遵循如下五大方面的设计准则:

1)(1) 设定目标。根据学校教学大纲的要求,同时参考ACM推荐的课程(/sigcse/cc2001),达到以下的目标。

目标1:让课程内容更相关,所有课程内容和作业都和学生的职业目标相关;

目标2:为启发学生的创造力提供机会,提供机会引导学生把计算看作是有趣而又富有创造性的活动;

目标3:让理论更为实践化,让学生把计算机科学看作是一项社会活动,而不是把它看作一项如进行黑客活动一样的非社会活动。

(2) 选择上下文。许多有力证据表明,如果不讲授一些抽象的概念,如某一具体领域内的程序设计,学生根本学不会。因此选择特定上下文是改进学习的一个关键点。如果以深度代替广度,我们可以教授更多的可转化的知识,同时,使得学生在某门课程结束后仍然可以应用这门课程所学到的知识。最好的方法就是在某些可以实际应用的特定环境中教他们编程。

(3) 设定反馈渠道。不仅从授课教师中取得反馈,而且也应通过多种论坛渠道,获取学生的反馈。

(4) 制定课程的基本结构。选择语言和编程环境是关键的问题,甚至在有些时候是非常谨慎的问题。对非专业课程中所使用语言的选择过程,与社会、文化极其相关,这种相关性甚至不亚于教法的相关性。

(5) 定义课程。确定课程讲授内容、作业和实践操练的详细内容。

参考文献

[1] D. Kaplan. Teaching Computation to Undergraduate Scientists. In Proc. of the SIGCSE 2004, Virginia, USA, 2004, PP 358-362.

[2] T. Cortina. An Introduction to Computer Science for Non-majors Using Principles of Cmputation. In Proc. of the SIGCSE 2007, Kentucky, USA, 2007, PP 218-222.

[3] Mark Urban-Lurain and Donald J. Weinshank, “Is there a role for programming in non-major CS courses?”, Michigan State University, USA, in Proc. ofFrontiers in Education Conference, 2000.

[4] J. Parker andG. Schneider. Problems with and Proposals for Service Courses in Computer Science. In Proc. of the SIGCSE 1987, MO, USA, 1987, PP 423-427.

[5] L. Marks, W. Freeman, and H. Leitner. Teaching Applied Computing Without Programming: A Case-Based Introductory Course for General Education. In Proc. of the SIGCSE 2001, NC, USA, 2001, PP 80-84.

计算机视觉导论范文第3篇

关键词:机械臂;DARM;对比分析

DOI:10.16640/ki.37-1222/t.2017.04.249

0 引言

工业机器人的快速发展实现了生产自动化,提高了生产效率。在工程机械、车间厂房、高危作业、产品生产线、汽车零部件等行业机器人都得到了应用,并且经济效益、发展前景都十分可观。伴随着工业机器人的飞速发展,研究的不断深入,机器人产品向高精度、高智能、可控性强和高性能方向发展。人们希望这种机器人也能走进我们的日常生活中来,于是服务型的机器人逐渐走进了我们的视野,因此也便有了低成本的、小型的、所谓的“桌面版”机械臂的产品。桌面版的机械臂虽不如工业版的具有力量大、精度高、速度快的特点,但在日常生活中,具有写字、画画、拾物等功能,简单方便,增加了趣味性的同时,又可学习到知识。以所研究的书画手臂为例,进行介绍分析,明确其优点与不足,为以后的发展与应用奠定基础。

1 桌面机械臂的发展情况

1.1 uArm

uArm是一个连杆式的机械臂,它的控制部分采用了便于编程控制的开源硬件Arduino,。其最大的特点是底部转盘,所有动力装置都装在这个地方以减少机械臂部分的重量,从而减少惯性动作对稳定性的影响,同时也能增加机械臂的负载能力以提高效力。

在功能上也与Leapmotion合作,玩家可以通过手莶僮骰械臂,比如操控吸盘吸附非规则物体或者用机械手操控规则物体。在Processing后台,玩家也可以对Leapmotion所开放的接口编程,把uArm变成你定制化的机械臂。

1.2 7bot

7bot机械臂其主要原型为ABB工业机械臂IRB2400,硬件结构方面,7BotArm采用了6轴、全金属设计,不仅更加牢固耐用,而且还可以在3维空间做更多操控。其另外一个特点是采用了定制舵机方案,可以设定舵机的输出力矩大小和运行速度,确保精度,还可以采用数字I2C总线接口,仅用四根线就可以串联127个舵机。

7BotArm提供了多种控制方式,包括手势、网页控制、结合计算机视觉等实现智能控制,可以覆盖不同人群的不同需求。具体来说:

(1)增加了机器人视觉功能,可以完成打地鼠游戏、陪人下棋等诸多智能应用。

(2)增加了软件仿真环境,模型可以和现实机器人一一对应,也可以在软件环境中规划好路径然后下载到实际环境中去复现。

(3)增加了示教功能,用户可以直接拖动机械臂进行轨迹规划,然后记录回放,在不需要任何编程的情况下就可以控制机械臂运动。

1.3 Dobot

DOBOT机械臂,号称是全球首款高精度消费级桌面机械臂,在能够完成多种机械臂动作的基础上,具有价格低廉的特点,同样是基于开源硬件Arduino控制的机构,其精度为0.2mm。

DOBOT机械臂可以3d打印、写字、画画,他的另一个强大功能就是脑电波读取。使用者将传感器戴在头上,集中注意力,例如给出一个向左的信号,并记录为向左的动作,下次再遇到这个脑电波信号,它就会给出向左的动作等。

2 书画手臂的模型设计

2.1 结构简介

书画手臂由一个基座、一个末端执行器、六根金属连杆和电动轴枢,以及同步轮和同步带组成,这样的机械臂可以在其活动范围内实现任意的三维位置和位姿。每一个活动的关节称为一个自由度,共有3个关节,即为3自由度机械臂。机构运行时,由Melzi控制板控制三个电动机的工作,从而控制执行端在X、Y、Z三个方向的移动来进行写字画画

2.2 DARM函数详解

控制机械臂运转的函数,主要有两个,即正解函数和反解函数,下面详细说明

2.2.1 正解函数

3 结语

uArm、7bot、Dobot三种机械臂控制精度高、功能强大、更加智能化,但其昂贵的价格也使很多人望尘莫及,书画手臂虽不及这三种机械臂,但其具有价格低廉、操作简单、结构简易、实用性较高等特点。能够根据使用者的需要,方便的完成写字画画等基础功能,另外,书画手臂还可以运用在激光雕刻、3D打印等方面,在保证娱乐性的同时,还可让广大的使用者学习到很多的知识。在控制精度方面,书画手臂仍有不足,但也有改进的空间,相信在以后书画手臂将会有很大的进步。

参考文献:

[1]蔡汉明,钱永恒.Dobot型机器人运动学分析与仿真[J].机电工程,2016,33(10):1217―1220.

[2]蔡自兴.机器人学[M].北京:清华大学出版社,2009.

[3]刘极峰,丁继斌.机器人技术基础[M].北京:高等教育出版社,2012.

计算机视觉导论范文第4篇

关键词:计算机学科;软件学院;克莱门森大学;中国科学技术大学

文章编号:1672-5913(2013)18-0073-05

中图分类号:G642

0 引言

为促进国家新型软件工程的成长,教育部在中国内地37所大学建立国家示范性软件学院。软件学院的建立对国家经济结构战略性调整起到了重要的促进作用,其办学模式、管理体制和运行机制也是我国高等教育改革和创新的一种有益尝试。张尧学院士曾指出:“软件学院是一个连接学校与产业的开放式平台”,软件学院应“以市场需求为导向,培养具有国际竞争能力的多层次实用型人才”。

克莱门森大学创建于1898年,位于美国南卡罗来纳州的同名城市,是一所历史悠久的公立大学,2011年U.S.News&World Report的排名为全美公立大学25名。中国科学技术大学软件学院(以下简称科大软院)每年会聘请克莱门森大学的教授进行授课,软件学院的教师也可前往克莱门森大学进修,同时学院的优秀学生可申请赴克莱门森大学攻读硕士及博士学位。笔者于2012年1~7月在该校计算机学院进行了为期半年的访问学习,体验和学习了克莱门森大学在教学、管理和科研方面的优点和先进经验,在软件学院课程建设、人才培养方面进行了一些思考与探索。

1 克莱门森大学计算机学院教育体系

1.1 培养方案

克莱门森大学的计算机学院分为3个专业:计算机科学(Computer Science)、可视计算(Visual Computing)和人本计算(Human-CenteredComputing)。这3个专业中,计算机科学覆盖的领域包括计算理论、算法、软件工程、网络基础设施、计算机系统;可视计算的重点是计算机图形学、可视化、计算机视觉和图像处理、电子游戏设计、特效和动画艺术;人本计算则是一个较新的领域,专注于如何使用计算技术更好地影响社会。

克莱门森大学计算机学院的硕士研究生学位专业方向分为计算机应用、计算基础、图形学和可视化、交互式计算、软件工程以及系统和实现。硕士学位分为学分学位和论文学位。学分学位要求学生完成10门(30学分)认可课程的学习,为完善学生知识体系,每个专业方向的学生除了完成专业必修课之外,必须选修其他专业的一门必修课,且GPA不低于3.0。论文学位则适用于对研究感兴趣的学生,除获得足够的学分外,还要求学生原创性地完成具有创新性的项目,研究成果在期刊或者会议上发表,同时论文需通过院指导委员会的答辩。

克莱门森大学的学期分为秋季学期(8月底~12月底)、春季学期(1月初~5月初)以及可以自由选修的暑期小学期。2012年度Clemson计算机学院在春季和秋季学期分别开设了50门左右的课程,包括计算机语言、操作系统、算法、编译、网络、图形学、GPU、虚拟现实、软件工程、数据挖掘、生物信息等多个领域。从课程编号即可了解课程的适用范围。课程从100~999编号,其中,100-499为本科课程,以教师讲解为主,主要是理论和基础课程,都有相应配套的实验课;500~699为高年级本科生和低年级研究生课程;700~799则是硕士研究生课程;800及以后则适用于博士生,偏向研究,授课特点是教师提出研究问题,学生课后实践,上课讨论;900之后的为Seminar讲座课程,一般由教师和学生对自己的研究课题进行讲解。

1.2 授课特点

笔者在克莱门森大学旁听了操作系统设计、面向对象程序设计、计算机编程语言翻译、算法设计与分析等多门课程,其中体会最深刻的是克莱门森大学计算机学院在授课中体现的理论联系实际、强调动手能力的特点。这点也在和赴美学习的科大软院的学生交流时得到印证,也是美国工程教育回归工程、服务社会的一个例子。

克莱门森大学的授课非常注重学生的实际动手实践。教师课堂上的理论讲解与课后的作业及项目要求结合紧密,充分体现学以致用。以计算机编程语言翻译课程为例,课堂上教师的讲授从词法分析、语法分析到代码生成和优化,逐步实现编译器的各项功能,在课程最后实现一个完整的编译器。面向对象程序设计课程的目标是介绍C++语言,教师基于SGL图形库,在课堂上由简到难,一步步完成一个游戏的设计。课堂上,教师主要进行代码编写和演示,在发现和解决问题的过程中引入传参、指针和引用等重要的概念。在计算机图形学课程中,不同于国内大量的公式和算法的铺陈,学生在了解基本概念后,马上开始学习使用程序实现一些简单的图形,然后不断编程实现图形,进行色彩、形状等方面的美化。在课程的后半段学习使用玛雅这样的大型软件。最终学生可以设计出以假乱真、媲美动画电影的图片。

克莱门森大学授课的另一个优点是课程内容变化和更新快。计算机行业发展迅速,知识更新快,相应地,授课内容也需要随之调整。在笔者旁听的几门课程中,教师基本没有指定教材,而是给出参考资料或查询网址。在操作系统设计课程中,教师要求学生在硬件设备上实现操作系统,课程主要内容便是相应的代码设计,随着软硬件的发展和更新,每年的具体实现都不相同。另外,不少教师所承担的课程与他们的研究领域密切相关,科研和教学结合得比较紧密,可以自行组织授课材料。以算法导论课程为例,授课教师本人的研究方向是算法,上课所用的教材也是教师自己编写,且随着研究进展和深入不断更新。

最后在旁听过程印象深刻的是大多数的课程中课堂气氛极为活跃。因为国内外文化的差异,学生习惯于随时举手打断教师的授课进行提问,教师也会随时停下,询问学生是否有不解之处。教师还会在教授新内容之前,对学生在课后任务中遇到的问题进行讲解。师生关系融洽的另一表现是课堂上允许适当的饮食,有教师也会带上自己做的甜点分发给学生。严格的成绩管理和宽松的氛围相辅相成,带来更好的教学效果。

1.3 程管理和考核

克莱门森大学的教学非常注重过程管理,课程考核严格,学生的最终成绩取决于期中和期末考试成绩、课程项目、到课率、课堂测试成绩以及作业成绩等多方面。严格的考核制度的另一个体现便是课程难度大。在克莱门森大学,硕士研究生1个学期一般只能完成3~4门课程。

不同于国内的研究生课程主要由期末考试成绩决定,克莱门森大学计算机学院在授课过程中基本每月都有课堂测试,每次的考试成绩都会影响到最终得分。因此学生在1个学期4个月中,基本时刻处于紧张状态,在每一阶段都需要掌握好相应的知识点,而不是靠考前突击。

另一个影响成绩的主要因素是课程项目。课程项目一般从课程早期便开始,要求代码量大,实用价值高,因此难度也很大。课程项目通常设立若干时间节点,若过了提交的截止时间,该段的成绩便记为0分。

教师还通过提供office hour进一步加强对学生的管理。部分课程的教师要求学生在指定的时间段进行当面交流,还会针对课程内容和学生的作业及项目进行提问。这种做法一方面可以有效甄别学生是否独立完成作业以及学生对课程的掌握程度,另一方面可以检查授课效果,对教师的授课也起到促进作用。

另外,和很多西方大学一样,克莱门森大学强调对学生沟通能力和表达能力的培养。如课程项目的最终检查方式是由项目组成员进行演讲和汇报,每人分别对自己的工作进行介绍,教师和其他学生可以随时打断,提出问题。小组合作以及汇报演讲可以锻炼学生的表达和组织能力、分工协作能力以及增强团队精神。

1.4 科研情况

在大学高等学府中,科研和教学相互促进,相辅相成。积极开展科研活动不仅可以提高教师本身能力和教学水平,同时可以通过引导学生参与,提高学生的学习兴趣和科研能力。

克莱门森大学计算机学院学术氛围浓厚,学院下设20个实验室项目组。计算机学院基本每周都有其他大学的教授前来作学术报告,进行交流。笔者参加过的几场,几乎每次都座无虚席。学术交流对于了解业内的最新进展、拓展思路、促进个人研究都很有帮助。

在促进学生科研方面,除带领本校学生进行科研外,克莱门森大学会提供暑期的学生交流岗位,由教师提供岗位和研究经费,供外校学生申请。在暑期科研交流结束之际,学生负责将自己的工作制成海报,每人在自己的海报前,向全院的教师和学生做展示。听取了部分学生的汇报后发现,很多学生在暑期中完成的工作量大,质量高,而且具有来源于应用、服务应用的特点。同时,学生思路开放,涉及多领域合作,横跨化学、生物基因、气象科学计算等众多应用领域。

2 对中国科技大学软件学院教育改进的启示

中国的软件学院经过10年的发展,在培养学生人数、学生就业率、实验室和实习基地建设以及企业对学生满意度等各方面都取得了很大的进步。

科大软院是国家教育部和国家计委首批批准建立的示范性软件学院之一,秉承中科大优良的教风和学风,一方面依托学校现有的基础及专业师资力量和教学资源进行办学;另一方面,聘请海内外著名企业和大学的专家、教授授课,课程设置与国际接轨,课程内容面向软件市场和企业需求,强化实践教学。学院一直致力于不断提高教学质量,为了适应教育国际化的需要,学院与美国克莱门森大学合作,创立了硕士联合培养项目,旨在培养一批具有高技术和英语水平,满足IT业界需求的高素质人才。

科大软院在培养懂技术、熟练进行外语沟通,以及具有国际化的思维方式和团队协作能力的人才上做出了不懈的努力。在课程设置方面非常注重教育的国际化,借鉴了国外著名大学的课程设计,并随着软件行业的发展和行业人才需要不断优化课程设置和教学内容。学院的外语教学受到重视,英语教学改革方面已经取得了一定的成绩。科大软院每年都能输送多名学生前往日本富士施乐公司等国外公司实习。但不可否认,和国内相比,美国的教育体系在课程安排和师资力量等方面都有较大优势。软件学院教育是一个较新的尝试,软件学院也需要学习和吸取已有的先进经验,不断提升教育水平和国际化程度。从Clemson大学计算机系的教学中,国内软件学院可以从中汲取经验,从以下几方面进行改进:

(1)严格教学,规范课程管理。国内部分课程考察存在盲点,考核体系不完善,导致学生平常松懈、考前突击,依靠死记硬背得高分。与国外的教育相比,国内学生在知识掌握程度、实践和动手方面的能力亟须提高。通过加强对课程的过程管理,包括增加作业、实验、测验等对课程成绩的影响比重,有效检测学生的真实水平和能力,促进学生认真学习。规范考核系统的一个挑战是国外的课程课堂规模一般较小,教师可以和每个学生进行足够的交流。例如克莱门森大学的计算机课程大多数都是小班授课,1个班级一般在20人左右,Seminar课程的人数则更少。但充分的师生交流在国内实行起来就困难得多,软件学院教师需要在教学过程中不断摸索,不断提高课程设计,完善检查机制,平衡选课人数,以达到最优授课效果。

(2)开展课程改革,强调因材施教。软件学院当前招生的明显特点是学生人数多、跨专业背景,教育机制是1年理论课学习、1年企业实践。学生只有1年在校时间,要在获得足够学分的情况下提高学习质量,对于教师的课程内容安排和课程设计方面提出了较高的要求。在学生背景知识和水平差别较大的情况下,教师要能够找到平衡点,积极听取其他教师和学生的意见,不断改进教学水平。同时需要规范课程大纲,详细介绍课程内容,保证学生在选课之前了解课程难度和深度,选择适合自己专业和能力的课程。

(3)强调沟通和交流能力的培养,全面提高学生“软实力”。笔者在参加克莱门森的课程项目答辩时发现,国内学生的英语演讲和表达能力仍然存在一定程度的欠缺。计算机从业人员,除了专业技能和知识等硬技能之外,交流和合作等“软技能”非常重要,国外不少大学(如普渡大学的理工学院)都会设置包括写作和演讲、团队合作、语言文化等文科类模块,全面培养学生的能力。国内在这方面则有所不足,学生在专业技能方面可能已经达到一定的水平,但在交流、论文、演讲等方面存在较大的短板,不利于学生的长期发展。譬如,数据挖掘课程的最后答辩中,中国学生的项目完成情况并非不好,但台上的表达能力和演讲效果比美国、甚至印度学生存在很大差距。语言表达和沟通能力是立足社会的最基本能力,良好的团队协作精神、国际化的思维方式更是企业看重的能力。软件学院在课程整体设置、课程设计中应该将软实力的培养作为目标。

(4)推动教师科研工作,积极开展校企项目合作。与克莱门森大学计算机学院相比较,科大软院的专职教师相对年轻,参与科研活动还不够,科研能力还有待增强,在科研促进教学,教学辅助科研,带领学生科研等各方面还需要进一步探索。同时,为了更好地适应软件学院学生的培养目标,教师应该具有更多的实际项目经验,学院应积极支持和鼓励教师和企业开展项目合作。

3 结语

了解和借鉴国外大学的培养制度和经验,可以促进和改善国内教育的发展,同时也需要结合我国教育的实情和学生的特点,因材施教。我国软件学院学生众多,教学资源相对紧张,学生背景不同,全面提高教学水平,提高学生能力存在着不少困难。他山之石,可以攻玉,如何把国外大学先进的教育理念和方法融入到我国教育的培养体系中,借鉴他山之玉,积极促进我国教育的国际化进程,是需要我们不断探讨和研究的问题。

参考文献:

[1]张尧学,吴爱华,关于我国信息化教育的几点看法[J],计算机教育,2008(5):3-7