APP下载

基于项目式教学法的OpenCV 机器视觉实践教学

2023-12-06王艺璇

电脑知识与技术 2023年29期
关键词:项目式教学

王艺璇

摘要:人工智能的飞速发展给传统的工科领域带来了新的生机,大部分高职院校逐渐开设OpenCV机器视觉相关课程,对于高职院校学生,该课程的教学目标更为侧重提高学生的应用能力和编程能力。在教学实施过程中,更适宜采用项目式教学法。为降低学生对图像处理算法的学习成本,文章采用了基于Python语言的OpenCV计算机视觉库开展教学。基于项目式教学法开展OpenCV机器视觉课程的教学将图像处理的知识划分为9个项目,项目中包含可视化的实验结果展示,以任务作为驱动,激发学生的学习兴趣,提高学生的实践能力。

关键词:项目式教学;OpenCV;图像分析

中图分类号:G642 文献标识码:A文章编号:1009-3044(2023)29-0169-03

1 OpenCV 机器视觉课程的教学背景

从2012年基于深度卷积神经网络的图像分类模型AlexNet在大规模数据集上表现出良好性能后,深度学习和人工智能领域迎来了迅猛发展的时代[1]。在图像分析和理解领域中,深度卷积神经网络效果出色,相比传统的图像处理算法和机器学习模型,其对图像分类、物体检测和图像像素级别分割的准确率要高出许多;在自然语言处理领域,基于反向传播算法的循环神经网络(RNN) 模型、BERT模型等表现出了极好的文本处理能力[2-3]。人工智能的浪潮给传统的工科领域带来了新的生机。

随着计算机技术、图像处理技术和人工智能的飞速发展和广泛应用,很多高职院校和本科院校中都逐渐开设了OpenCV机器视觉相关理论和实训课程。对于高职院校的教学而言,该课程旨在让学生理解并掌握图像处理和分析的基本理论,注重培养学生利用OpenCV资源库处理和分析数字图像的能力,即侧重提升学生对理论知识的运用能力和编程实践能力,故而在该课程的教学实施过程中,适宜采用基于实际项目或案例的教学法[4]。

基于实际项目或案例开展OpenCV机器视觉课程的教学,使用贴近生活的图像素材,对素材实施图像分析和处理的算法,具有可视性强、中间结果可获得、调试便捷、实验效果明显等特点,学生可以自行选择感兴趣的图像资源进行分析和处理,并可将原始图像、操作过程中的中间图像、变换后图像进行可视化,能够极大地激发学生的学习热情,提高学生学习的成就感和效能感。

2 教学平台

在实际应用场景、工业行业开发场景中,通常在分析和处理数字图像和视频文件时,使用的是基于C++语言的OpenCV计算机视觉库[5],使用C++语言的OpenCV进行图像分析具有分析速度快、实时性强、视频处理效果好等优点。然而,学生在实际应用过程中,经常出现工程配置错误、库文件版本与开发环境版本不兼容、语法复杂烦琐易出错等问题,学生需要花很多精力去处理编程过程中的工程环境配置、语法、接口等问题,这增加了学生的学习成本,导致无法专注学习图像分析和处理的知识和技术。

基于Python 语言的OpenCV 计算机视觉库具有Python语言可解释性强、语法简洁的优势,同时,由于Python语言底层是基于C语言编写的,故而基于Python 语言的OpenCV计算机视觉库也具有运行速度快、能实时处理图像等优势[6]。使用基于Python语言的OpenCV 进行图像处理课程的教学,降低了学生的开发难度,使得学生不用被C语言或者C++等编译型语言的复杂语法所困扰,让学生将更多精力放在对图像处理基础算法和OpenCV函数的理解和掌握中,不额外增加学生的学习成本,更能加强对数字图像处理算法的掌握和应用,提升学生的学习成就感和获得感。此外,人工智能和深度学习的常用框架如Tensorflow、Pytorch都是基于Python语言进行开發,学生在学完图像处理后,也便于后续继续学习人工智能框架和技术。因此,OpenCV机器视觉课程选择的是基于Python语言的OpenCV计算机视觉库,需在Windows 7及以上版本的操作系统中运行,使用Python3.5及以上版本和OpenCV-Python3及以上版本作为编程开发工具。

3 基于项目式教学法的OpenCV 机器视觉课程教学

3.1 课程建设思路

基于项目式教学法开展OpenCV机器视觉课程的教学,摒弃了传统的知识点堆砌和章节式教学,以项目和任务为主线实施教学。基于项目式教学法的设计理念根据内容和难易程度,循序渐进,由易到难,由简到繁,将OpenCV机器视觉课程划分成9个项目,实行项目化的教学,以任务作为驱动,激发学生的学习兴趣,并将16个低门槛、高独立性的知识点融入各个项目中[7],让每个知识点都能够有可视化的实验结果展示,使学生快速完成知识点的理解与记忆,加深学生的学习印象,并能自己动手完成复习与实践,提升学生的动手实践动力。

3.2 基于项目式教学法的OpenCV 机器视觉教学流程

1) 情景导入引出任务(确定项目任务)

在任务导入环节,主要采用项目化教学和任务驱动法,支撑课堂教学的讲授和实践。在新知导入环节,教师可以提出与教学重点相关的实际生活场景中的问题,运用谈话法或问答法,激发学生学习兴趣,让学生主动积极地观察图像块,并自主思考问题,从而引出本节课的教学重点和重要知识点,最后发布包含知识点的项目任务,作为贯穿课堂教学的主线[8]。在此阶段,教师通常需要预设场景并选取图像素材,可选择紧贴时代热点、融入工匠精神和爱国情怀等思政元素较强的素材,润物无声地开展思政育人[9]。

2) 算法原理讲解(制定项目计划)

教师可应用丰富的信息化教学手段,利用图片、动画或微课视频等解决算法原理枯燥的问题。在新课讲授环节,通过将讲授法、问答法等与学生积极互动,促进学生自主思考,并借助图片、动画等方式呈现实验效果,可让学生独立思考或分小组合作探究[10],讨论原理和操作过程,引导学生开展头脑风暴,最后通过对学生讨论结果进行总结、升华的方式解决教学重点,以学生为主体和中心,教师充分发挥主导作用[11]。

3) 分组实操(实施项目计划)

教师可采用演示法、实验法等开展启发式教学。在分组实操环节,让学生自主合作探究,突破教学难点,通过任务驱动和小组合作的方式,让学生在协作与竞争中快乐学习。结合项目编程实际,培养学生良好的自主探究能力、计算思维能力和团队合作能力,以达成素质目标。

4) 总结与评价(质量检测和评估)

总结阶段分为教师总结和学生总结两部分,先由学生讨论交流和反思,分享知识收获、心得感悟与不足,教师再总结主要知识点,强调学生对算法理解和编程实践过程中的常见问题,最后通过教师评价和学生互评,评选出图像处理小能手。

4 基于项目式教学法的OpenCV 机器视觉教学案例

以基于项目式教学法开展OpenCV机器视觉课程教学中的“项目四 图像变换”中的“任务二 图像的几何变换”中的“子任务1 图像水平翻转”为例,详细描述使用项目式教学法开展教学的思路与过程。

1) 情境导入

以去北京天安门广场参观并拍摄照片的故事作为引入,由于手机摄像头的视野范围有限,无法拍摄广场全景,只拍摄到某些局部图像块,请学生思考并解决问题1:如何利用现有所拍摄的图像块获得天安门广场的整体全景图?让学生分组思考,开展头脑风暴,教师对学生的发言进行总结。天安门广场的整体全景图是轴对称图像并且是沿着竖直方向轴对称,而观察上面的三个图像块,只有第一个图像块中所包含的信息量最大,并且它刚好是天安门广场的整体全景图的左半部分,可以通过将第一个图像块进行水平翻转的方式得到全景图的右半部分。

问题2:有了全景图的左半部分和右半部分的图像块,怎样将它拼凑成整体的全景图?请学生再次思考问题,可利用之前所学习的创建图像知识,先新建一张与全景图等宽等高的空白画布,再依次将左半个图像块粘贴到空白画布的左半部分,再将右半个图像块粘贴到空白画布的右半部分,这样就能通过图像拼接的方式获得天安门广场的全景图了。

教师发布课堂项目任务:打开桌面上的“素材”文件夹,编写程序,将其中的“天安门广场_左半部分.jpg”进行水平翻转,并与原图像拼接后输出天安门广场全景图。

思政元素融入:天安门广场上的五星红旗迎风飘扬,这是无数的革命先烈用鲜血把这面五星红旗染红的,是一代又一代中国共产党人前赴后继才使我们过上了美好生活。五星红旗承载了无数革命先辈的光荣与梦想,教育学生,身为青年一代,有责任、有义务为祖国崛起、为民族复兴不懈奋斗。

2) 水平翻转原理讲解

①以何种方式读取左半部分图像块?通过动画、图片的方式展示灰度图像与彩色图像的区别与联系。

图像本质为numpy中的数组,图像的高度对应数组的行数,图像的宽度对应数组的列数,图像由一个个像素点构成,对应数组中相关位置的数值。灰度图像中,每个像素点灰度值范围为0-255,0为黑色,255为白色。彩色图像则是由三个通道的灰度图像构成,三个通道上取0-255范围内的数值则表示在该颜色通道上分量的强弱,可以表示自然界中所有的颜色。例如:彩色图像的第一列为蓝色,则在蓝色通道上第一列像素点灰度值均为255,而在绿色和红色通道上第一列的灰度值均为0。

彩色图像是由3张分辨率相同的灰度图像在通道维度上按照藍色、绿色和红色的顺序拼接而成的,其蕴含的信息量比灰度图像更大,可以将彩色图像根据亮度强弱转换为灰度图像,而无法将单张灰度图像还原为彩色图像。为使最终得到的全景图像是彩色图,则应以彩色图像的形式读取左半部分图像块,代码如下。

img=cv2.imread(path,cv2.IMREAD_COLOR)

②分小组讨论,如何利用numpy数组,实现对彩色图像的水平方向翻转?讨论并选派小组代表发言。

③头脑风暴:让学生根据小组讨论结果,思考并总结图像水平翻转的算法。

第一步:创建新空白图像new_img,用于存放结果;

第二步:遍历图像中的所有像素点[i,j],行数i的范围为:0,1,……h-1,列数j的范围为:0,1,……w-1;

第三步:为new_img数组对应位置赋值,new_img[i,j]=img[i,w-1-j]

④学生自主思考:当我们有了原图像和其水平翻转的新图像,如何拼接成一张全景图像?教师总结学生的发言:首先在pycharm中创建空白画布,再对输入图像实现水平方向上的翻转,得到左右半部分的图像块,然后填充画布的左右半部分,最后显示并保存结果图像。

3) 分组实操强技能

让学生以小组为单位,完成课堂作业。

4) 回顾总结善梳理

回顾总结环节主要从知识技能和心得感想两个方面展开,学生以小组为单位交流分享本节课在知识和技能以及情感和价值观等方面的收获。

5 教学效果

课前,教师深入了解学生的学习情况,精细准确地分析学情,并根据学生的预习情况调整教学策略,做到了有针对性地教学。课中,采用项目化教学和任务驱动法,支撑课堂教学的讲授和实践。在新知导入环节,运用问答法,教师提出疑问,激发学生学习兴趣,并引出了课堂的教学重点和重要知识点,促进了学生自主思考。最后引出包含知识点的项目任务,作为贯穿课程的主线。

思政目标方面,从实际生活场景切入,将课程思政元素有机地融入项目案例的素材图像中,有效达成了思政目标。

信息化教学手段丰富,应用合理,利用图片和动画解决原理枯燥的问题。在新课讲授环节,以任务驱动为主线,通过问答法与学生积极互动,促进学生自主思考,并借助图片、动画等方式呈现实验效果,再让学生分小组合作探究,讨论原理和操作过程,引导学生开展头脑风暴,最后通过对学生讨论结果进行总结、升华的方式解决教学重点,充分体现了学生主体、教师主导的教学地位。

采用了启发式的教学方法,培养学生自主探究能力和团队协作能力,有效达成了素质目标。

参考文献:

[1] KRIZHEVSKY A,SUTSKEVER I,HINTON G E.ImageNet clas?

sification with deep convolutional neural networks[J].Communi?

cations of the ACM,2017,60(6):84-90.

[2] WANG Y B,LONG M S,WANG J M,et al.PredRNN:recurrent

neural networks for predictive learning using spatiotemporal

LSTMs[C].2017.

[3] 徐绪堪,印家伟,王晓娇.基于BERT模型的“互联网+政务”群

众留言文本热点追踪研究[J].情报杂志,2022,41(9):136-142,

78.

[4] 许少漫.项目式教学在高职《图形图像处理》课程中的应用

[J].办公自动化,2023,28(2):62-64.

[5] 李树涛,胡秋伟.OpenCV在“数字图像处理”课程教学中的应

用[J].电气电子教学学报,2010,32(6):26-28.

[6] HOWSE J.OpenCV computer vision with Python : learn to cap?

ture videos, manipulate images, and track objects with Python

using the OpenCV Library[M].Packt Publishing,2013.

[7] 李大湘,王小雨.基于OpenCV的《視频图像处理与分析》案

例教学设计与应用[J].现代计算机(专业版),2018(31):41-44.

[8] 王颖,王兵,高建强,等.融合成果导向教育理念的“线上+线

下”混合式数字图像处理课程教学设计与实施[J].医学信息

学杂志,2022,43(9):90-93.

[9] 周虹,徐海荣.工科课程思政教学设计与实践——以“数字

图像处理”课程为例[J].教育教学论坛,2023(9):129-132.

[10] 王梦姣.基于项目式学习的中职Python编程教学实践研究

[D].扬州:扬州大学,2022.

[11] 冯敬益,谢景明.基于中学创客教育的OpenCV技术教学案

例设计探索[J].中小学信息技术教育,2020(10):91-93.

【通联编辑:代影】

猜你喜欢

项目式教学
民办本科高校新闻专业项目教学的实践与思考
论项目教学在高职计算机网络技术专业课程教学中的应用
初中生物项目式学习活动的探索
高职《液压技术》课程教学改革探索
机制专业MATLAB软件课程项目式教学研究
《现场总线应用技术》课程改革与探索