基本信息
文件名称:《计算机视觉技术及应用》教案 项目5 形状识别.docx
文件大小:1.92 MB
总页数:11 页
更新时间:2025-05-26
总字数:约9.53千字
文档摘要

PAGE10

PAGE10

PAGE11

PAGE11

课题

形状识别

课时

18课时(810min)

教学目标

知识目标:

(1)理解图像梯度的概念。

(2)掌握图像梯度的计算方法。

(3)掌握Canny边缘检测算法的主要步骤。

(4)了解图像轮廓的概念。

(5)了解霍夫变换的基本原理。

技能目标:

(1)能够使用OpenCV进行图像的边缘检测。

(2)能够使用OpenCV进行图像轮廓的查找、绘制及拟合。

(3)能够使用OpenCV进行图像的霍夫变换。

素养目标:

(1)提升职业操守,在面临重大选择时,能够做出有利于国家和民族的决策。

(2)发扬精益求精的工匠精神,养成严谨认真的工作态度。

教学重难点

教学重点:图像梯度的概念和计算方法、Canny边缘检测算法、图像轮廓及霍夫变换

教学难点:Canny边缘检测算法和霍夫变换

教学方法

案例分析法、问答法、讨论法、讲授法

教学用具

电脑、投影仪、多媒体课件、教材

教学过程

主要教学内容及步骤

考勤

【教师】使用APP进行签到

【学生】班干部报请假人员及原因

新课预热

【教师】讲述一些形状识别处理的实际案例,使学生了解形状识别处理操作的重要性

【学生】聆听、记录、理解

问题导入

【教师】对学生进行分组,每3~5人一组,并选出一名组长,然后组织学生以小组为单位,扫码播放“边缘检测的主要应用”视频(详见教材),帮助学生了解图像形状检测与识别的应用场景,并提出问题:

问题1:是指图像局部特性的突变,如灰度级的突变、颜色的突变、纹理结构的突变等。

问题2:说一说边缘检测的应用场景(不少于3种)。

【学生】分组、观看、思考、讨论、举手回答

传授新知

【教师】通过学生的回答引入要讲的知识,讲解图像梯度的概念和计算方法、Canny边缘检测算法、图像轮廓及霍夫变换原理。

5.1边缘检测

图像边缘是指图像局部特性的不连续性,如灰度级的突变、颜色的突变、纹理结构的突变等。详见教材。

在实际的图像处理问题中,图像的边缘作为图像的一种基本特征,边缘的确定和提取经常被应用到较高层次的图像中,并在图像识别、图像分割、图像增强及图像压缩等领域有较为广泛的应用。

5.1.1图像梯度

图像梯度指的是图像灰度变换的速度,其本质是求导。详见教材。

用于计算图像梯度的算子称为梯度算子,梯度算子的本质是卷积核。将输入图像与梯度算子进行卷积运算,即可得到体现不同方向边缘信息的输出结果。常见的梯度算子有Sobel算子、Scharr算子、Laplacian算子等。

1.使用Sobel算子进行边缘检测

Sobel算子又称索贝尔算子,用于获得数字图像的一阶梯度,它是计算机视觉领域中常用的一种边缘检测方法。

Sobel算子结合了高斯平滑和微分运算,它不但能产生较好的边缘检测效果,而且对噪声具有平滑抑制作用。详见教材。

OpenCV提供的cv2.Sobel()函数用于使用Sobel算子进行边缘检测,其格式如下。

dst=cv2.Sobel(src,ddepth,dx,dy[,ksize=3[,scale=1[,delta=0[,

borderType=cv2.BORDER_DEFAULT]]]])

详见教材。

在实际计算过程中,当梯度值为负数时,所有负数会自动截断为0,造成图像损失。为了避免图像损失,可以使用cv2.convertScaleAbs()函数将结果取绝对值,其格式如下。

dst=cv2.convertScaleAbs(src[,alpha=1[,beta=0]])

【例5-1】编写程序,对图像“sobel.png”(见本书配套素材“例题图像/sobel.png”)使用Sobel算子分别在x轴和y轴两个方向进行边缘检测,并显示原图像和边缘检测后的图像。

【参考代码】

importcv2 #导入OpenCV库

image=cv2.imread(sobel.png,cv2.IMREAD_GRAYSCALE) #读取灰度图像

#使用Sobel算子在x轴方向计算图像梯度

(详见教材)。

【运行结果】

?【教师】通过多媒体展示“例5-1程序运行结果”图片,并进行讲解

2.使用Scharr算子进行边缘检测

Scharr算子是Sobel算子的改进版本,该算子具有和Sobel算子同样的速度,且精度更高。当卷积核的尺寸较大时,Scharr算子的边缘检测效果更好。详见教材。

OpenCV提供的cv2.Scharr()函数用于使用Scharr算子进行边缘检测,其格式如下。

dst=cv2.Scharr(src,ddepth,dx,dy[,scale=1[,delta=0[,

borderType=cv2.BORDER_DEFAULT]]])

详见教材。

【例?5-2】