版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机视觉案例实战人工智能系列教材PraticalComputerisionCases配套课件项目1计算机视觉概述·任务1计算机视觉入门·任务2计算机视觉的主流方法及前沿技术02/138项目1计算机视觉概述·任务1计算机视觉入门任务目标(1)了解计算机视觉的基本概念(2)了解计算机视觉的发展历史03/138项目1计算机视觉概述·任务1计算机视觉入门1.计算机视觉的基本概念基本概念:使用计算机及相关设备模拟生物视觉,实现类似人类观察世界的过程。作用:代替人眼完成机械性任务,弥补人类视觉的局限,完成单靠人眼难以完成的任务。组成:拍摄设备采集图像,计算机利用人工智能技术进行识别、跟踪、测量和处理。图1-1鸟类的数量能在短时间内准确估计两幅图中鸟的数量吗?04/138项目1计算机视觉概述·任务1计算机视觉入门2.计算机视觉的发展历史萌芽:20世纪50年代:探索生物视觉的工作原理,产生第一张数字图像。发展:20世纪60年代:由二维场景扩展到三维场景,形成新的研究领域。成长与成熟:20世纪70—80年代:计算机视觉理论逐步建立,研究开始向应用发展。新阶段:21世纪:基于特征的对象识别得到应用,深度学习推动图像分类与目标检测的发展。05/138项目1计算机视觉概述·任务2计算机视觉的主流方法及前沿技术任务目标(1)了解计算机视觉的主要研究方向(2)熟悉图像分割的方法、目标检测的算法06/138项目1计算机视觉概述·任务2计算机视觉的主流方法及前沿技术1.计算机视觉的主要研究方向图像分割与图像分类:图像分割提取感兴趣的区域。图像分类依据图像特征与规则确定类别。图像生成与目标追踪:图像生成产生特定内容或风格的图像。目标追踪预测后续帧中的目标位置。目标检测:找出图像中感兴趣的目标,确定目标的位置和类别。图1-2计算机视觉的研究方向及方法07/138项目1计算机视觉概述·任务2计算机视觉的主流方法及前沿技术2.图像分割的方法:传统方法阈值分割:用一个或几个阈值划分灰度。计算简单、速度快,适用于目标与背景差异较大的图像。区域分割:通过分裂或合并,把性质相近的像素连接成区域。可获得区域结构,但可能出现过度分割。边缘分割:利用区域边缘处灰度变化较大的特点,以一阶或二阶微分算子检测边缘。边缘不连续时效果受限。08/138项目1计算机视觉概述·任务2计算机视觉的主流方法及前沿技术2.图像分割的方法:深度学习方法FCN:以卷积层替代传统CNN后的全连接层,恢复每个像素所属的类别,将图像级分类扩展到像素级分类。MaskR-CNN:面向实例分割,识别图像中的对象并生成像素级掩膜。ROIAlign用于改善区域对齐。SegNet:采用编码器与解码器结构,在解码器中通过去池化进行上采样,并保留分割细节。09/138项目1计算机视觉概述·任务2计算机视觉的主流方法及前沿技术3.目标检测的算法Two-Stage:先生成可能包含目标的预选框,再通过卷积神经网络进行分类。典型算法有R-CNN、SPP-Net、FastR-CNN。One-Stage:直接通过网络提取特征,预测目标类别与位置。典型算法有OverFeat、YOLO、SSD。教材中的比较:两类方法在检测精度与检测速度上各有侧重,需要结合应用场景理解其流程差异。10/138项目2视觉图像预处理·任务1了解图像基础概念·任务2实践:使用Python实现图像变换·任务3了解图像点运算和图像灰度化·任务4实践:使用Python实现图像灰度化·任务5了解降噪技术·任务6实践:使用Python实现图像去噪·任务7了解图像增强技术·任务8实践:使用Python实现图像增强11/138项目2视觉图像预处理·任务1了解图像基础概念任务目标(1)了解基本图形元素的概念(2)熟悉二维基本图形元素和三维基本图形元素(3)熟悉二维坐标变换方法和三维坐标变换方法12/138项目2视觉图像预处理·任务1了解图像基础概念1.了解基本图形元素基本概念:基本图形元素又称图元,可分为二维基本图形元素和三维基本图形元素。点、线和平面构成几何形状。二维图元:二维点可用一对坐标值或齐次坐标表示。二维直线可用齐次坐标表示,曲线可用多项式方程等描述。三维图元:三维点用于描述空间位置。对图元的表示和变换,是后续图像分析与操作的基础。13/138项目2视觉图像预处理·任务1了解图像基础概念2.二维坐标变换平移与欧式变换:平移只改变位置。欧式变换改变位置和方向,保持形状与大小。相似变换:保持形状不变,可以改变位置、大小和方向。仿射变换:可改变形状、位置、大小和方向,但保持直线及平行关系。投影变换:又称透视变换或单应性变换,可改变位置与形状,但不能把直线变为曲线。14/138项目2视觉图像预处理·任务1了解图像基础概念3.三维到二维的投影投影任务:将三维基本图形元素映射到二维图像平面,可使用三维到二维的线性投影矩阵。正交投影:没有近大远小的透视收缩效果,变换后平行线仍保持平行。透视投影:远处物体的投影较小、近处物体的投影较大,接近人眼或相机镜头的成像效果。15/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换任务目标(1)了解OpenCV计算机视觉和图像处理库(2)使用Anaconda创建虚拟环境(3)使用Python实现图像平移变换(4)使用Python实现图像缩放变换(5)使用Python实现图像旋转变换(6)使用Python实现图像仿射变换(7)使用Python实现图像透视变换16/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换1.什么是OpenCV库的作用:OpenCV是开源的计算机视觉和图像处理库,提供图像与实时视频处理的函数和工具。主要能力:支持图像处理、特征提取、目标检测、物体跟踪、机器学习、深度学习等视觉任务。开发特点:支持多种操作系统,底层采用优化的C/C++实现,并提供Python编程接口。本书实践环境:教材采用Windows11,建议使用Python3.8.5与PyCharmCommunity,并在Anaconda虚拟环境中开展实践。17/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换2.Anaconda环境:创建与激活独立环境:Conda可管理Python版本和包依赖,使不同项目使用各自的环境。创建环境:打开命令提示符或AnacondaPrompt,输入condacreate-n环境名python==3.8.5,按提示确认。检查与激活:用condaenvlist查看环境,再用condaactivate环境名进入工作环境。图2-5创建环境并安装相关依赖18/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换2.Anaconda环境:配置项目解释器打开设置:在PyCharm右下角打开解释器列表,选择“解释器设置”。选择环境:将带有工作环境名称的解释器设为项目解释器。补充路径:若列表没有目标解释器,打开“全部显示”并添加虚拟环境解释器路径,完成后重新选择。图2-9、图2-10解释器设置与选择19/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换2.Anaconda环境:安装OpenCVPyCharm安装:在目标解释器的软件包界面搜索opencv-python,选择后安装。终端安装:激活同一工作环境,执行pipinstallopencv-python。后续使用:安装完成后,在Python脚本中导入cv2,调用OpenCV图像处理函数。图2-13选择opencv-python软件包20/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换3.使用Python实现图像平移变换变换含义:按照给定平移量,移动图像中的所有像素点。设置矩阵:教材示例采用M=np.float32([[1,0,50],[0,1,100]]),水平平移50像素、垂直平移100像素。执行变换:读取图像并取得rows、cols,调用cv2.warpAffine(src,M,(cols,rows)),显示处理前后的图像。图2-16平移变换前后结果21/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换4.使用Python实现图像缩放变换指定大小:使用cv2.resize(src,dsize),以dsize设置目标图像的宽度和高度。指定比例:使用cv2.resize(src,None,fx=0.7,fy=0.7),将两个方向缩小为原来的0.7倍。插值与比例:interpolation用于选择插值方法。宽高缩放比例不一致时,图像会发生形变。22/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换4.缩放结果的并列显示颜色转换:用cvtColor()交换颜色通道,为matplotlib显示准备图像。创建子图:利用pyplot.figure()创建画布,通过subplot(1,2,1)与subplot(1,2,2)并列放置图像。观察结果:设置标题和坐标轴后显示,便于在同一画布中比较原图与缩放图。图2-18使用subplot()显示缩放前后结果23/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换5.使用Python实现图像旋转变换旋转参数:旋转围绕指定中心进行。center表示中心,angle表示角度,scale表示比例因子。求取矩阵:教材以图像中心为旋转中心,调用getRotationMatrix2D(),逆时针旋转30°。生成结果:把得到的矩阵M传入warpAffine(),再显示旋转前后的图像。图2-19图像旋转变换前后结果24/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换6.使用Python实现图像翻转变换变换方式:图像翻转包括水平方向和垂直方向的翻转,使用cv2.flip(src,flipCode)实现。教材实例:分别设置flipCode为0、1、-1,生成三种翻转结果,并和原始图像并列显示。实践练习:按照书中练习,对四张图像进行缩放、翻转,并拼接在一张图像中。图2-21原始图像与三种翻转结果25/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换7.使用Python实现图像仿射变换变换含义:仿射变换是在一次线性变换之后接上平移,可实现旋转、拉伸等效果。对应点:选取原图中三个不共线点,以pos1、pos2表示变换前后的对应坐标。执行步骤:用getAffineTransform(pos1,pos2)求矩阵,再用warpAffine()生成图像。调整对应点可获得不同效果。图2-22图像仿射变换前后结果26/138项目2视觉图像预处理·任务2实践:使用Python实现图像变换8.使用Python实现图像透视变换变换含义:将原始图像投影到一个新的视平面,图像的大小和形状可以发生变化。对应点:用四组对应点描述变换前后的坐标,通过getPerspectiveTransform()求取矩阵M。执行步骤:调用warpPerspective(src,M,(cols,rows))。教材进一步提出交换对应点、观察图像校正效果的思考题。图2-23图像透视变换前后结果27/138项目2视觉图像预处理·任务3了解图像点运算和图像灰度化任务目标(1)了解图像点运算(2)了解图像灰度化28/138项目2视觉图像预处理·任务3了解图像点运算和图像灰度化1.图像点运算基本定义:逐点变换图像像素的灰度值,输出像素的灰度由对应的输入像素决定。运算特点:本质是灰度到灰度的映射,与相邻像素之间没有运算关系。处理目的:通过线性或非线性映射增强或减弱灰度,是一种简单、有效的图像处理方法。29/138项目2视觉图像预处理·任务3了解图像点运算和图像灰度化2.图像灰度化灰度化含义:将彩色图像转换为灰度图像,以黑到白的不同明暗层次表示图像。灰度范围:教材采用0~255的灰度值,0表示黑色,255表示白色,数值越大越亮。颜色空间:除灰度图像外,图像处理中还会使用二值图像以及HSV、HSI等颜色空间表示。图2-24各类颜色空间下的图像30/138项目2视觉图像预处理·任务3了解图像点运算和图像灰度化2.常用灰度处理方法最大灰度值处理:取R、G、B三个分量中的最大值作为灰度值,即Gray=max(R,G,B)。平均灰度处理:将三个颜色分量求和后取平均值。加权平均灰度处理:按不同权重组合颜色分量,即Gray=i×R+j×G+k×B。教材还介绍浮点、整数及移位形式。31/138项目2视觉图像预处理·任务4实践:使用Python实现图像灰度化任务目标(1)使用Python实现图像灰度化(2)使用Python将图像转换为其他颜色空间表示32/138项目2视觉图像预处理·任务4实践:使用Python实现图像灰度化1.使用Python实现图像灰度化准备图像:将bird1.jpg与脚本放在同一文件夹,用cv2.imread()读取原图。灰度转换:调用cv2.cvtColor(src,cv2.COLOR_BGR2GRAY),生成灰度图像。显示与用途:用imshow()对照显示原图和灰度图。灰度表示便于后续亮度、对比度等图像处理。图2-25图像灰度化处理前后结果33/138项目2视觉图像预处理·任务4实践:使用Python实现图像灰度化2.使用Python转换其他颜色空间统一入口:读取img_BGR,使用cvtColor(img_BGR,转换标识)实现不同的颜色空间转换。转换标识:教材依次使用COLOR_BGR2RGB、COLOR_BGR2HSV、COLOR_BGR2YCrCb、COLOR_BGR2HLS、COLOR_BGR2XYZ、COLOR_BGR2LAB和COLOR_BGR2YUV。结果比较:将BGR、RGB、GRAY、HSV、YCrCb、HLS、XYZ、LAB、YUV九种表示放入subplot(3,3,i+1)中显示并观察差异。34/138项目2视觉图像预处理·任务5了解降噪技术任务目标(1)了解图像噪声的来源(2)了解图像降噪的作用(3)掌握图像降噪的常用方法35/138项目2视觉图像预处理·任务5了解降噪技术1.图像噪声的来源采集设备:传感器材料、电子元器件和电路结构等会影响采集质量。采集环境:光线、温湿度等因素可能引入噪声,教材列举热噪声、暗电流噪声、光子噪声等。信号传输:传输、记录设备及网络等因素,也可能在数字图像传输过程中引入噪声。36/138项目2视觉图像预处理·任务5了解降噪技术2.图像降噪的作用基本含义:图像降噪又称图像去噪,是减少数字图像中噪声的过程。预处理作用:降噪是重要的预处理步骤,其效果会直接影响后续图像处理。处理目的:针对采集和传输引入的噪声改善图像质量,使图像更加清晰、真实。37/138项目2视觉图像预处理·任务5了解降噪技术3.图像降噪的常用方法空间域滤波:直接对图像灰度值进行运算,包括阈值滤波、偏分方程、变差法及形态学降噪。变换域滤波:先把图像变换到其他域,处理后再返回空间域,常用傅里叶、小波和余弦变换。协同滤波:结合空间域和变换域方法,例如偏分方程与小波变换结合。后续任务重点实践阈值化与形态学方法。38/138项目2视觉图像预处理·任务6实践:使用Python实现图像去噪任务目标(1)使用阈值化降噪方法进行图像去噪(2)使用形态学方法进行图像去噪39/138项目2视觉图像预处理·任务6实践:使用Python实现图像去噪1.阈值化去噪:固定阈值化处理思路:以统一阈值划分像素,将目标、背景与噪声进行区分。关键参数:threshold()的thresh表示阈值,maxval表示最大值,type表示阈值类型。教材实例:先用COLOR_BGR2GRAY灰度化,再以阈值127、最大值255和THRESH_BINARY处理,观察目标轮廓。图2-26二进制阈值化处理前后结果40/138项目2视觉图像预处理·任务6实践:使用Python实现图像去噪1.阈值化去噪:固定阈值类型二进制及反二进制:教材列出THRESH_BINARY和THRESH_BINARY_INV两种相反的二值化处理方式。截断阈值化:THRESH_TRUNC对超过阈值的灰度进行截断。其他类型与练习:还包括THRESH_TOZERO、THRESH_TOZERO_INV。按照书中练习,尝试不同类型和阈值,比较去噪效果及适用图像。41/138项目2视觉图像预处理·任务6实践:使用Python实现图像去噪1.阈值化去噪:自适应阈值化适用情况:同一图像各区域亮度不同,统一阈值的处理效果可能不理想。局部阈值:adaptiveThreshold()分别计算局部区域阈值,可使用邻域均值或加权平均。教材参数:采用ADAPTIVE_THRESH_MEAN_C、THRESH_BINARY、邻域大小15、常数C=6,分离鸟类与背景。图2-27自适应阈值化处理前后结果42/138项目2视觉图像预处理·任务6实践:使用Python实现图像去噪2.形态学去噪:腐蚀与膨胀基本作用:腐蚀缩小高亮区域,膨胀扩大高亮区域。形态学处理用于保留基本形状并去除不相关结构。实现函数:创建5×5的卷积核,分别调用erode(src,kernel)和dilate(src,kernel)。观察结果:比较手写字符的原图、腐蚀、膨胀及组合处理结果,观察噪点与字符形状的变化。图2-28腐蚀与膨胀处理前后结果43/138项目2视觉图像预处理·任务6实践:使用Python实现图像去噪2.形态学去噪:开运算运算顺序:先腐蚀,再对腐蚀结果进行膨胀。去噪作用:可平滑轮廓、削弱狭窄部分、去掉较细的突出,并去除微小噪声。教材实现:使用10×10的卷积核,调用morphologyEx(src,cv2.MORPH_OPEN,kernel),并尝试调整卷积核大小。图2-29开运算处理前后结果44/138项目2视觉图像预处理·任务6实践:使用Python实现图像去噪2.形态学去噪:闭运算运算顺序:先膨胀,再对膨胀结果进行腐蚀,与开运算顺序相反。去噪作用:适用于内部存在小孔、窄缺口或轮廓缝隙的图像。教材实现:使用10×10的卷积核,调用morphologyEx(src,cv2.MORPH_CLOSE,kernel),比较处理前后字符。图2-30闭运算处理前后结果45/138项目2视觉图像预处理·任务7了解图像增强技术任务目标(1)了解图像增强的定义(2)了解图像增强的相关方法46/138项目2视觉图像预处理·任务7了解图像增强技术1.图像增强的定义增强目标:通过计算机技术或光学设备改善清晰度,突出图像的某些特征。处理思路:增强有效信息或感兴趣部分,抑制不需要的信息与噪声。方法选择:需要同时考虑处理目的和图像特点,单一方法难以适应所有场景。47/138项目2视觉图像预处理·任务7了解图像增强技术2.图像增强方法:空域增强灰度变换:压缩或伸展原始图像灰度值,拉伸对比度,使特征更明显。直方图修正:利用灰度范围、亮度均值和灰度级分布描述图像,再强化关键信息、抑制噪声。处理取舍:空域增强需要在细节增强与噪声抑制之间进行选择。48/138项目2视觉图像预处理·任务7了解图像增强技术2.图像增强方法:频域增强频域滤波:图像边缘细节对应高频分量,可通过抑制低频平滑部分、增强高频部分突出边缘细节。同态滤波:先以对数变换把乘性噪声转为加性噪声,用线性滤波器抑制噪声,再通过指数变换回到空间域。应用考虑:根据图像特点与增强目的选用方法,并同时观察噪声抑制和细节保留效果。49/138项目2视觉图像预处理·任务8实践:使用Python实现图像增强任务目标(1)使用Python实现灰度图像直方图均衡化图像增强(2)使用Python实现彩色图像直方图均衡化图像增强(3)使用Python实现CLAHE均衡化图像增强50/138项目2视觉图像预处理·任务8实践:使用Python实现图像增强1.灰度图像直方图均衡化使用情景:图像模糊、昏暗或目标细节不突出时,可利用直方图均衡化增强图像。实践步骤:读取图像,调用cvtColor()灰度化,再用cv2.equalizeHist(gray)得到增强结果。结果观察:并列显示灰度图与均衡化图,比较目标细节及明暗对比。图2-32灰度图像直方图均衡化前后结果51/138项目2视觉图像预处理·任务8实践:使用Python实现图像增强2.彩色图像直方图均衡化通道分离:使用b,g,r=cv2.split(src),分别取得三个颜色通道。分别均衡化:对b、g、r各自调用equalizeHist(),得到bH、gH、rH。合并与显示:通过cv2.merge((bH,gH,rH))合并通道。教材展示增强后颜色与除雾效果的变化。图2-33彩色直方图均衡化前后结果52/138项目2视觉图像预处理·任务8实践:使用Python实现图像增强3.CLAHE均衡化图像增强全局均衡化的局限:不同区域的灰度分布差异较大时,统一变换可能使局部增强效果不理想。CLAHE的思路:采用局部直方图均衡化,并限制对比度增强幅度,减少噪声放大和过度增强。教材实现:createCLAHE(clipLimit=2,tileGridSize=(10,10))创建对象,再用apply(gray)处理灰度图。图2-34CLAHE图像增强前后结果53/138项目3图像特征提取·任务1了解图像特征的基本定义·任务2实践:使用Python实现图像特征的提取54/138项目3图像特征提取·任务1了解图像特征的基本定义任务目标(1)了解什么是图像特征(2)了解主流的图像特征(3)了解特征提取的方法(4)理解卷积神经网络特征提取55/138项目3图像特征提取·任务1了解图像特征的基本定义1.什么是图像特征特征含义:图像特征是用于辨认图像自身,或区分不同图像的差异,如形状、颜色、纹理及空间关系。抽象特征:教材指出,较抽象、不直观的特征往往具有较好的目标判别能力。具体特征:具体、直观的特征通常对目标空间位置信息保留得更好。特征的选用要结合识别任务。56/138项目3图像特征提取·任务1了解图像特征的基本定义2.主流图像特征:颜色特征描述对象:描述图像或区域对应物体的表面颜色性质,是一种全局特征。常用表达:颜色直方图是常见表达方法,不受旋转、平移影响,结合归一化可减弱尺度变化的影响。局限性:颜色直方图没有表达颜色的空间分布。只依赖颜色特征,可能检索到不需要的图像。57/138项目3图像特征提取·任务1了解图像特征的基本定义2.主流图像特征:纹理特征描述对象:描述景物表面性质,需要在包含多个像素的区域内进行统计计算。特征作用:区域统计有利于模式匹配,对局部偏差和噪声具有一定抵抗能力。局限性:分辨率、光照和反射变化可能影响纹理计算,二维图像也未必呈现物体真实的三维表面纹理。58/138项目3图像特征提取·任务1了解图像特征的基本定义2.主流图像特征:空间关系特征关系类型:描述多个目标之间的位置、方向,以及邻接、重叠和包含关系。位置信息:相对位置强调上下左右等关系,绝对位置强调距离大小与方位。应用特点:可以加强图像内容描述,但对旋转、反转和尺度变化较敏感,通常需要与其他特征配合。59/138项目3图像特征提取·任务1了解图像特征的基本定义2.主流图像特征:形状特征两类描述:轮廓特征描述物体边界,区域特征描述物体内部形状,均可用于目标检索。局部与全局:形状特征既可以体现整体轮廓,也可以表示局部结构。局限性:目标变形、视点变化及二维投影失真会影响检索。全面描述形状还可能增加计算与存储开销。60/138项目3图像特征提取·任务1了解图像特征的基本定义2.特征描述与提取方法单一特征的限制:物体移动或变换后,仅依靠某一种直观特征可能难以识别目标。常见描述方法:教材列举SIFT、HOG、LBP和SURF等方法,用于获得稳定、具有区分性的特征描述。特征向量:计算机把数字图像看作像素矩阵,特征提取可理解为求取用于区分图像的特征向量集。61/138项目3图像特征提取·任务1了解图像特征的基本定义3.卷积提取特征的基本过程局部计算:卷积核中的权值依次与图像对应位置的像素作用,卷积核滑过图像后形成特征图。教材实例:二值图像一侧为255、另一侧为0,用[-1,1]的卷积核计算后,可以突出图像边界。特征含义:不同卷积核提取的特征不同,例如某个方向的边缘。图3-1、图3-3图像、卷积核及特征图62/138项目3图像特征提取·任务1了解图像特征的基本定义3.不同卷积核的特征提取效果sharpen卷积核:教材以人脸图像展示锐化卷积的过程及结果。outline卷积核:对鸟类图像进行轮廓提取,观察卷积核与输出特征之间的关系。观察练习:改变卷积核的取值,比较提取到的特征,理解权值组合的作用。图3-4、图3-5sharpen与outline卷积示例63/138项目3图像特征提取·任务1了解图像特征的基本定义3.卷积神经网络的深层特征提取图像与特征图:数字图像由像素值构成。卷积核作用于局部像素区域,形成表示某种特征的特征图。特征提取过程:通过多次卷积、激活和池化,逐步提取更深层、更抽象的图像特征。特征的使用:提取的深度特征可用于分类与目标检测,教材用手写字符识别展示各层特征图。图3-6卷积神经网络的可视化过程64/138项目3图像特征提取·任务2实践:使用Python实现图像特征的提取任务目标(1)使用Python实现SIFT特征的提取(2)使用Python实现ORB特征的提取65/138项目3图像特征提取·任务2实践:使用Python实现图像特征的提取1.SIFT特征的生成步骤算法特点:SIFT是尺度不变特征变换,能在图像中检测局部关键点。关键点生成:构建尺度空间并检测极值点,过滤特征点并进行精确定位。方向与描述子:为特征点分配方向,再生成描述子,供后续特征匹配使用。66/138项目3图像特征提取·任务2实践:使用Python实现图像特征的提取1.使用Python提取SIFT特征准备图像:准备原图与旋转后的待匹配图像,并用cv2.imread()读取。提取特征:创建SIFT_create()对象,对两张图像分别调用detectAndCompute(),获得关键点kp与描述子des。绘制关键点:用drawKeypoints()显示特征点,横向拼接两张结果图,并比较关键点数量。图3-8SIFT特征提取结果67/138项目3图像特征提取·任务2实践:使用Python实现图像特征的提取1.SIFT特征匹配与图像对齐匹配距离:以关键点特征向量的欧氏距离衡量相似性,knnMatch(...,k=2)寻找最近和次近匹配。筛选匹配:教材用ratio=0.5筛选距离比,再通过drawMatchesKnn()绘制匹配连线。图像对齐:有效匹配足够时,用findHomography()与RANSAC求单应性矩阵,再调用warpPerspective()对齐图像。图3-9SIFT特征匹配结果68/138项目3图像特征提取·任务2实践:使用Python实现图像特征的提取2.使用Python提取ORB特征算法组成:ORB由oFAST特征点提取和rBRIEF特征描述组成,通过方向与旋转因子获得旋转不变性。提取特征:创建ORB_create()对象,调用detectAndCompute()得到关键点和描述子。显示特征:对原图与待匹配图像分别执行drawKeypoints(),观察特征点分布。图3-10原图与待匹配图像的ORB特征69/138项目3图像特征提取·任务2实践:使用Python实现图像特征的提取2.ORB特征匹配匹配方法:使用BFMatcher(cv2.NORM_HAMMING),以汉明距离比较ORB描述子。筛选与显示:教材以max(2×最小距离,30)筛选匹配点,再用drawMatches()绘制结果。实践比较:对原始图像进行其他变换,观察ORB匹配效果,并与SIFT特征匹配进行比较。图3-11ORB特征匹配结果70/138项目4图像分割·任务1了解图像分割·任务2实践:使用Python实现图像分割71/138项目4图像分割·任务1了解图像分割任务目标(1)了解什么是图像分割(2)了解图像分割的基本方法72/138项目4图像分割·任务1了解图像分割1.什么是图像分割定义:把图像分成若干具有独特性质的区域,并提取感兴趣目标。目标:根据图像中的物体划分像素,使目标区域与其他部分区分开。作用:图像分割是图像语义理解与图像识别的重要环节,可用于物体分割、三维重建等任务。图4-1图像分割73/138项目4图像分割·任务1了解图像分割2.图像分割的基本方法常见方法:包括基于阈值、区域、边缘和特定理论的分割方法。相关理论:教材列举图论、聚类和深度语义分割等方法。处理困难:光照不均、噪声、阴影和不清晰区域可能导致错误分割,深度学习方法可改善部分问题。74/138项目4图像分割·任务2实践:使用Python实现图像分割任务目标(1)使用Python实现基于阈值的图像分割(2)使用Python实现基于边缘检测的图像分割(3)使用Python实现图像的语义分割(4)使用Python实现图像的实例分割75/138项目4图像分割·任务2实践:使用Python实现图像分割1.使用Python实现基于阈值的分割分割依据:通过设置灰度门限,确定有意义的区域或待分割物体的边界。像素分类:阈值内外的像素采用不同处理方式,二值化可把像素划分为黑白两类。实践函数:按照教材对项目二的衔接,使用threshold()或adaptiveThreshold()完成阈值分割,比较固定与局部阈值的效果。76/138项目4图像分割·任务2实践:使用Python实现图像分割2.边缘检测分割:微分算子边缘依据:沿边缘方向像素变化较缓,垂直边缘方向变化较大,可用一阶、二阶导数描述边缘。处理准备:读取图像并灰度化,根据示例进行高斯滤波或二值化处理。算子比较:教材对Roberts、Prewitt、Sobel、Laplacian、Scharr、Canny和LOG的结果进行并列展示。图4-2不同微分算子的边缘检测结果77/138项目4图像分割·任务2实践:使用Python实现图像分割2.边缘检测分割:寻找与绘制轮廓寻找轮廓:findContours()从二值图像寻找轮廓。mode设置检索模式,method设置轮廓近似方法。教材设置:先灰度化和阈值化,采用RETR_TREE与CHAIN_APPROX_SIMPLE,获得轮廓和层次信息。绘制轮廓:drawContours()指定背景图、轮廓、颜色和线宽。示例把所有轮廓用绿色线条显示在原图上。图4-3基于边缘检测的图像分割结果78/138项目4图像分割·任务2实践:使用Python实现图像分割3.语义分割:环境与模型准备实现方案:教材使用PixelLib调用DeepLabv3+算法进行语义分割。安装依赖:在目标虚拟环境中安装TensorFlow、Pillow、opencv-python、scikit-image和PixelLib。准备模型:下载基于PascalVOC训练的Xception模型,把模型、待分割图像和脚本放在同一文件夹中。79/138项目4图像分割·任务2实践:使用Python实现图像分割3.语义分割:执行与结果观察准备环境与模型:安装TensorFlow、Pillow、OpenCV、scikit-image和PixelLib,准备教材所用的Xception模型。执行分割:创建semantic_segmentation实例,加载PascalVOC模型,调用segmentAsPascalvoc()。结果含义:按类别划分像素。overlay=True可输出叠加图,但同类别的不同对象不会被区分。图4-4原图、语义分割图与叠加图80/138项目4图像分割·任务2实践:使用Python实现图像分割4.实例分割:概念与模型准备任务含义:在像素级别分离对象,并进一步区分同类别中的不同实例,结合目标检测与语义分割。实现方案:使用PixelLib中的instance_segmentation创建实例分割对象。加载模型:准备训练好的mask_rcnn_coco.h5,通过load_model()加载,再对待分割图像执行处理。81/138项目4图像分割·任务2实践:使用Python实现图像分割4.实例分割:执行与结果观察实例分割:在像素级别分离对象,同时区分同类别中的不同实例。加载与执行:创建instance_segmentation实例,加载mask_rcnn_coco.h5,再调用segmentImage()。输出选项:设置show_bboxes=True,可在分割结果中显示实例的边界框。图4-5原图、实例分割图与带边界框的分割图82/138项目5图像中的目标检测·任务1了解目标检测·任务2制作图片数据集·任务3实践:以YOLOv5为例实现目标检测83/138项目5图像中的目标检测·任务1了解目标检测任务目标(1)了解目标检测的应用领域(2)了解目标检测的基本方法84/138项目5图像中的目标检测·任务1了解目标检测1.目标检测的应用领域检测任务:识别并定位图像或视频中的一个或多个对象,同时确定类别和位置。工业与商业:应用于工业生产、物流和零售,可提高自动化水平,智能制造中可用于产品缺陷检测。其他领域:教材还列举自动驾驶和医疗等应用,说明目标检测在实际场景中的作用。85/138项目5图像中的目标检测·任务1了解目标检测2.目标检测方法:Two-Stage算法R-CNN:利用候选框进行特征提取和分类,其特征提取模块使用深度卷积网络。SPP-Net:先提取整张图像的特征,再把候选框映射到特征区域,利用空间金字塔池化获得固定长度特征。FastR-CNN:在R-CNN和SPP-Net基础上改进,生成候选区域并投影到特征图上提取特征。86/138项目5图像中的目标检测·任务1了解目标检测2.目标检测方法:One-Stage算法OverFeat:用不同大小的窗口滑动检测,计算窗口中目标的概率。SSD:使用单个神经网络,在多个阶段输出上进行多尺度检测。YOLO:把图像划分为网格,依据目标中心所在位置进行预测。后续任务采用YOLOv5完成鸟类检测。87/138项目5图像中的目标检测·任务2制作图片数据集任务目标(1)了解数据集的定义与常用数据集(2)制作图片数据集88/138项目5图像中的目标检测·任务2制作图片数据集1.数据集的定义数据集合:数据集是一批数据的集合,可通过样本及其特征描述。例如鸟类样本可包含羽毛颜色、体形和喙形等信息。训练与验证:数据集是人工智能模型训练和验证的重要资源,其质量直接影响模型质量。自建数据集:标准数据集无法满足具体场景时,需要按任务需求采集数据并进行标注。89/138项目5图像中的目标检测·任务2制作图片数据集2.常用数据集介绍PASCALVOC:用于分类、定位、检测、分割等任务,教材重点提到VOC2007和VOC2012。MSCOCO:包含检测、分割与关键点任务,场景复杂、目标数量较多、目标尺寸较小。CUB-200:面向鸟类目标,教材介绍的Birds-200-2011包含200种鸟类、11,788张图片。其他数据来源:可按任务寻找开源数据,或加入自行采集和标注的数据,对数据集进行扩充。90/138项目5图像中的目标检测·任务2制作图片数据集3.制作数据集:安装labelImg安装:在工作环境中执行pipinstalllabelImg,再输入labelImg启动。图片与保存路径:Open导入单张图像,OpenDir批量打开目录,ChangeSaveDir设置标签保存目录。标注工具:选择YOLO标签格式,使用CreateRectBox创建目标框,Save保存标签。图5-1labelImg界面91/138项目5图像中的目标检测·任务2制作图片数据集3.制作数据集:标注图片导入图片:单击OpenDir,选择待标注图片所在文件夹。框选目标:拖出矩形框,完整包含鸟类目标,尽量避免多余空白或遗漏目标部分。类别与保存:填写类别名称,保存同名标签文件。完成一张后切换到下一张,重复操作形成数据集。图5-2图片标注结果92/138项目5图像中的目标检测·任务2制作图片数据集3.制作数据集:YOLO标签含义文件对应:每张图像对应一个同名.txt标签文件,classes.txt保存类别名称。类别编号:每行第一项为类别编号,0对应classes.txt第一行,1对应第二行,以此类推。位置字段:其余四项依次为归一化中心点横坐标、纵坐标、矩形框宽度和高度。教材标签示例:00.5833330.5690000.5980390.77400093/138项目5图像中的目标检测·任务2制作图片数据集4.数据集划分划分比例:教材将图像随机打乱,按训练集与验证集约8∶2的比例划分。图像与标签:划分时保持文件名一一对应,使图像及其标签进入同一组。训练目录:images/train、images/val存放图像,labels/train、labels/val存放对应标签。脚本流程:示例读取undivided中的图像和标签,随机排列、创建目标目录,再分别复制到训练与验证目录。94/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测任务目标(1)了解YOLOv5(2)配置YOLOv5运行环境(3)使用YOLOv5实现目标检测95/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.了解YOLO:检测与回归基本思路:YOLO将目标检测作为回归问题,由一个端到端网络从原始图像直接预测目标。预测信息:输出边界框中心位置x、y,宽度w、高度h,以及目标置信度和类别信息。版本演进:教材介绍YOLOv1至YOLOv5,各版本对网络和训练方法作出不同改进。96/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLO系列:v1至v3YOLOv1:采用24个卷积层和2个全连接层,检测速度快,但对小物体、密集物体存在局限。YOLOv2:采用Darknet19,引入BN、先验框及多尺度训练等改进。YOLOv3:采用Darknet53,在三个尺度进行预测,并以逻辑回归进行类别预测。97/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLO系列:v4与v5YOLOv4:引入CSPDarknet53、Mosaic数据增强、SPP及FPN/PAN等组件和方法。YOLOv5:采用PyTorch,包含数据增强、自适应锚框、CSP主干与PAN特征聚合等设计。训练损失:教材把YOLOv5损失分为分类、定位和置信度损失,并介绍Adam与默认SGD优化器。98/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLOv5的总体网络结构BackBone:骨干网络从输入图像中提取特征。Neck:混合、组合不同层次的特征,连接骨干网络与检测输出。Head:根据特征预测目标位置、类别及相关信息,形成检测结果。图5-3YOLOv5的网络结构99/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLOv5的主要模块CBS:由卷积、批量归一化和SiLU激活函数组成。CSP与BottleNeck:CSP将输入分为两路后组合,BottleNeck1包含残差结构,BottleNeck2不含残差结构。SPPF与特征金字塔:SPPF进行空间金字塔池化。Neck中结合FPN与PAN,传递语义信息和定位信息。图5-4YOLOv5网络中的各模块结构100/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测2.配置PyTorch环境PyTorch作用:提供GPU加速的张量计算及带自动求导的深度神经网络功能。安装环境:先激活Anaconda工作环境,再按设备与CUDA条件选择对应的PyTorch安装命令。安装验证:安装后使用condalist查看当前环境是否包含所需PyTorch及相关包。教材示例版本为PyTorch1.8.0。101/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测2.安装YOLOv5及其依赖准备项目:下载并解压YOLOv5项目文件。进入环境与目录:进入已安装PyTorch的工作环境,切换到YOLOv5根目录,即requirements.txt所在位置。安装依赖:执行pipinstall-rrequirements.txt,使软件包版本满足项目所列要求。102/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:数据集配置放置数据:把已划分的数据集放入项目路径,创建数据路径配置文件data_dir.yaml。图像路径:train指向训练集,val指向验证集,路径应与实际目录一致。类别设置:nc表示类别数量,names表示类别名称列表,需与数据标签对应。配置字段:train/val/nc/names103/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:网络与预训练权重网络配置:models中提供n、s、m、l、x五类配置,depth_multiple和width_multiple控制深度与宽度。选择模型:按训练目标考虑网络规模、速度及检测精度,再设置nc、anchors、backbone和head等参数。准备权重:下载所选网络对应的.pt预训练权重,放入pretrained文件夹。104/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:启动训练训练入口:在项目目录使用train.py,指定数据文件、网络配置和预训练权重。关键参数:--data对应数据配置,--cfg对应网络配置,--weights指向预训练模型。教材示例:采用YOLOv5m,训练100个epoch,batchsize为2。epoch表示完整数据集的一次训练遍历,batchsize表示每批样本数。示例参数:--epoch100--batch-size2105/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:保存结果权重文件:训练结果保存在runs/train/中,best.pt为表现最好的权重,last.pt为最后一次训练的权重。评价文件:结果目录还保存混淆矩阵、P/R/F1曲线及可视化训练结果。验证检测:查看验证集上的目标框与类别输出,结合评价指标判断检测效果。图5-12验证集上的部分检测结果106/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:混淆矩阵真正例与假正例:TP表示正确预测的正例,FP表示把负例错误预测为正例。真负例与假负例:TN表示正确预测的负例,FN表示把正例错误预测为负例。矩阵作用:把真实类别与预测类别交叉对照,观察正确分类和错误分类的分布。图5-6混淆矩阵形式及示例107/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:精度与召回率精度P:所有预测为正例的样本中,真正正例所占的比例。P=TP/(TP+FP)。召回率R:全部真实正例中,被模型找到的比例。R=TP/(TP+FN)。曲线观察:教材分别展示P曲线与R曲线,用于观察不同置信度条件下的指标变化。图5-7、图5-8P曲线与R曲线108/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:F1综合评价:F1是精度P与召回率R的调和平均。计算公式:F1=2×P×R/(P+R)。观察内容:结合F1曲线考察精度与召回率的共同表现。图5-9F1曲线109/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:PR、AP与mAPPR曲线:横坐标为召回率R,纵坐标为精度P,表示两者随条件变化的关系。AP与mAP:AP为PR曲线下面积,mAP为各类别AP的平均值。IoU条件:mAP@0.5使用IoU=0.5,mAP@0.5:0.95对0.5至0.95、间隔0.05的多个IoU阈值取平均。图5-10PR曲线110/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.训练结果的可视化分析损失指标:box_loss、obj_loss、cls_loss分别反映选框、目标置信度和类别相关的损失变化。检测指标:同时观察precision、recall和mAP的变化,结合验证集检测图判断训练效果。训练调整:教材结合训练集与验证集损失曲线讨论学习、过拟合和瓶颈,并检查学习率、批量大小、标签与网络设置。图5-11可视化的训练结果111/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测4.使用训练模型完成目标检测准备输入:进入工作环境与YOLOv5项目目录,选择训练所得权重及待检测的图片或视频。执行推理:使用detect.py,指定数据源与训练模型。教材支持图像、目录、视频、摄像头等数据源。检查与部署:查看目标框、类别和检测结果。将检测函数嵌入自己的脚本,为综合实训的界面应用做准备。图5-13检测结果112/138项目6综合实训·任务1安装PyQt5·任务2设计一个图形用户界面113/138项目6综合实训·任务1安装PyQt5任务目标(1)认识PyQt5(2)掌握安装PyQt5的方法114/138项目6综合实训·任务1安装PyQt51.什么是PyQt5Qt:Qt是跨平台应用开发框架。PyQt5:PyQt5提供Python访问Qt库的接口,可用Python创建图形用户界面。应用场景:可以开发桌面程序、图形化配置界面和数据可视化程序。本项目以PyQt5搭建目标检测界面。图6-1Qt图标115/138项目6综合实训·任务1安装PyQt52.安装PyQt5:命令提示符打开终端:按Win+R,在“运行”对话框输入cmd,打开系统命令提示符。选择环境:输入condaenvlist查看环境,再用condaactivate环境名激活目标环境。安装:在环境名前缀出现后,执行pipinstallpyqt5。图6-6在命令提示符中激活虚拟环境116/138项目6综合实训·任务1安装PyQt52.安装PyQt5:AnacondaPrompt打开终端:在系统搜索栏查找并打开AnacondaPrompt。检查与激活:用condaenvlist查看环境,星号标记当前环境,再输入condaactivate环境名。安装:在工作环境内执行pipinstallpyqt5,等待安装完成。图6-9在AnacondaPrompt中进入环境117/138项目6综合实训·任务1安装PyQt52.安装PyQt5:PyCharm项目解释器:在PyCharm解释器设置中,选择带工作环境名的解释器。查找安装:打开软件包下载界面,搜索pyqt5并安装。验证结果:在当前解释器的软件包列表中查看是否包含PyQt5。图6-14、图6-15安装软件包与验证118/138项目6综合实训·任务2设计一个图形用户界面任务目标(1)掌握安装QtDesigner,并将其添加到PyCharm的扩展插件中的方法(2)掌握设计一个图形用户界面的方法119/138项目6综合实训·任务2设计一个图形用户界面QtDesigner与图形用户界面界面作用:通过图形、按钮、标签和菜单与用户交互,并显示图像或视频等内容。可视化设计:QtDesigner提供可拖拽的组件及布局,便于构建、修改和预览界面。项目目标:设计一个能够上传图片、调用目标检测模型并显示检测结果的图形界面。图6-16QtDesigner界面120/138项目6综合实训·任务2设计一个图形用户界面1.安装QtDesigner:命令提示符准备环境:打开命令提示符,以condaactivate环境名激活目标虚拟环境。安装依赖:输入pip3installPyQt5-tools,安装相关工具。安装设计器:输入pip3installPyQt5designer,在同一环境中完成设计器安装。121/138项目6综合实训·任务2设计一个图形用户界面1.安装QtDesigner:AnacondaPrompt打开终端:在系统搜索栏打开AnacondaPrompt。激活环境:输入condaactivate环境名,确认命令行开头显示所选环境。安装工具:依次执行pip3installPyQt5-tools和pip3installPyQt5designer。122/138项目6综合实训·任务2设计一个图形用户界面2.将QtDesigner部署到PyCharm添加外部工具:在“文件”的“设置”中打开“工具”,选择“外部工具”并新增本地工具。填写程序路径:填写名称QtDesigner,将程序路径指向所安装环境中的designer.exe。启动设计器:保存后,从“工具”的ExternalTools中选择QtDesigner即可打开。图6-26、图6-27配置工具与启动123/138项目6综合实训·任务2设计一个图形用户界面3.界面设计:常用显示与输入组件QWidget:所有可视化组件的基类,可以容纳其他组件。QPushButton与QLabel:按钮用于响应单击操作,标签用于显示文本或图像。QLineEdit与QTextEdit:分别用于单行和多行文本输入,支持设置文本及相关属性。图6-28QtDesigner组件区124/138项目6综合实训·任务2设计一个图形用户界面3.界面设计:选择与数值组件QComboBox:下拉选择框,可设置选项列表、默认选项和当前选项。QCheckBox与QRadioButton:复选框用于多项选择,单选按钮用于单项选择。QSpinBox与QSlider:分别通过数字输入和滑块调整数值,可设置范围、步长及默认值。125/138项目6综合实训·任务2设计一个图形用户界面3.界面设计:创建按钮组件新建窗体:选择“文件”中的“新建”,在新建窗体列表选择Widget。放置按钮:将组件区Buttons中的PushButton拖到工作窗口。检查对象:在对象查看器中可查看Form和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学六年级数学教学设计:用比例思想解决工程与行程综合问题
- 初中八年级数学勾股定理证明探究教学设计
- 2026年6月安全生产月培训效果验证试题有答案
- 2026年HIS系统运维基础培训考试试卷试题及答案
- 2026年爆破作业特种作业人员考试试题及答案
- 2026年报检从业人员高频考题(含答案)
- 2026年地铁施工考试题库(含答案)
- 2026年中国安能建设集团有限公司人员招聘笔试备考题库及详细答案解析
- 2026年中国电气装备集团有限公司人员招聘笔试参考题库及详细答案解析
- 2026年阿里市烟草专卖局人员招聘笔试备考题库及详细答案解析
- 2026年危化品重点县指导服务企业自查表考试试题及答案
- 建筑结构健康监测技术规程
- 浙教版(2024)数学七上第2章 有理数的运算 单元复习课件
- 遵义会议放光辉合唱简谱
- 征求意见稿-《外泌体提取与纯化工艺规范》
- 招商银行台州市临海市2025秋招金融科技岗笔试题及答案
- 新生儿疾病筛查课件
- 生产计划与交期管理课件
- 《金属材料的特性》课件
- 预防职务犯罪专题讲座
- 叉车安全管理制度
评论
0/150
提交评论