计算机视觉技术应用项目化教程 课件 项目9 图像分割_第1页
计算机视觉技术应用项目化教程 课件 项目9 图像分割_第2页
计算机视觉技术应用项目化教程 课件 项目9 图像分割_第3页
计算机视觉技术应用项目化教程 课件 项目9 图像分割_第4页
计算机视觉技术应用项目化教程 课件 项目9 图像分割_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目九:图像分割从像素到对象的精确划分COMPUTERVISION·计算机视觉系列课程任务导入:自动驾驶中的视觉挑战场景引入想象一下,一辆自动驾驶汽车正在城市道路上行驶。它的“眼睛”——摄像头,捕捉到了前方复杂的画面:道路、车辆、行人、交通标志……这张看似简单的照片,对计算机而言却像是一个需要破解的“密码”。核心问题:计算机如何识别?•哪里是可安全行驶的车道?

•哪里是需要避让的前方车辆?

•哪里是需要减速礼让的行人?答案:图像分割(ImageSegmentation)——计算机视觉中的关键技术,它将图像分解为互不交叠、具有特定语义的区域或对象,是让AI在像素级理解图像内容的第一步。本项目学习目标知识目标|Knowledge●理解图像分割的基本概念

掌握定义、目的及在计算机视觉中的重要性。●掌握常用分割算法原理

理解基于卷积的点/线/边缘检测、霍夫变换、阈值处理与分水岭算法原理。●熟悉相关OpenCV函数

掌握cv2.filter2D,HoughLines,threshold,watershed等核心函数参数与用法。能力目标|Skills●实践操作能力

运用所学算法与OpenCV函数,独立编写代码完成点、线、边缘、圆等的检测任务。●问题分析与解决能力

根据图像特点与需求,灵活选择分割算法,并通过参数调整获得理想效果。素质目标|Competence●培养严谨的逻辑思维

深入理解底层算法逻辑与代码实现逻辑,锻炼分析与拆解复杂问题的思维能力。●提升工程实践素养

通过解决具体项目任务,培养将抽象的计算机视觉理论转化为可落地的工程代码的能力。任务9.1:利用卷积实现点、线和边缘检测核心原理图像中的点、线、边缘是像素值的局部突变。通过设计特定的卷积核(算子),对图像进行卷积运算,可识别并放大这些局部突变,从而实现特征检测。常用算子分类•点检测:突出中心像素与邻域像素的显著差异。

•线检测:检测水平、垂直、对角线等特定方向的线条。

•边缘检测:Sobel(抗噪能力强)、Canny(公认最优的多阶段算法)。OpenCV核心函数:filter2D()|Sobel()|Canny()Canny边缘检测效果演示左图为原始图像,右图为Canny算法提取的边缘轮廓,

可见其对边缘的精准定位与单像素响应特性。Canny边缘检测代码实现📝Canny边缘检测五大步骤1.高斯滤波(GaussianFiltering)对原始图像进行平滑处理,有效去除高频噪声,防止噪声被误判为边缘。2.计算梯度(GradientCalculation)利用Sobel算子计算图像中像素点的梯度强度与方向,捕捉潜在的边缘信息。3.非极大值抑制(Non-MaximumSuppression)沿梯度方向筛选像素,只保留局部最大值,消除非边缘像素,使边缘更细。4.双阈值检测&5.边缘连接设定高低两个阈值,确定真实边缘与潜在边缘,并通过抑制孤立弱边缘完成最终连接。💻Python代码实现importcv2,numpyasnp#1.读取图像并转为灰度图(8-bit)img=cv2.imread('lena.jpg',0)#2.高斯滤波降噪(5x5内核)blurred=cv2.GaussianBlur(img,(5,5),0)#3.Canny核心:低阈值50,高阈值150edges=cv2.Canny(blurred,50,150)#4.显示结果窗口cv2.imshow('Edges',edges);cv2.waitKey(0)任务9.2:利用霍夫变换实现直线和圆检测💡核心原理:霍夫变换是一种将图像空间中的几何形状(直线、圆)检测问题,通过数学映射转换到参数空间中进行“投票”求解的特征提取技术。在参数空间中,积累票数最高的位置对应着图像中最显著的几何形状。📐霍夫直线检测将图像空间中的每一个边缘点,映射为霍夫参数空间中的一条曲线。多条曲线的交点即为直线的参数,对应图像中真实存在的直线。适合检测长而清晰的直线。🔵霍夫圆检测将图像空间中的点映射到三维参数空间(圆心坐标a,b和半径r)中的圆锥面。多个圆锥面的交点即为圆的参数,对应图像中的圆。计算量相对较大,适合检测对比度较高的圆形。OpenCV核心函数调用cv2.HoughLinesP()|cv2.HoughCircles()霍夫直线检测代码实现💻Python实现(OpenCV)importcv2#导入OpenCV库importnumpyasnp#1.读取图像并转为灰度图img=cv2.imread('road.jpg')gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#2.边缘检测(Canny算子)edges=cv2.Canny(gray,50,150,apertureSize=3)#3.概率霍夫直线检测(HoughLinesP)lines=cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength=100,maxLineGap=10)#4&5.绘制直线并显示结果iflinesisnotNone:forlineinlines:x1,y1,x2,y2=line[0];cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)cv2.imshow('HoughLinesResult',img);cv2.waitKey(0);cv2.destroyAllWindows()任务9.3:利用阈值处理进行图像分割核心原理基于图像中物体与背景之间的灰度差异,设定一个或多个阈值,将像素按灰度值分为不同类别,是最简单、最常用的分割手段。全局阈值对整张图像使用同一个阈值进行二值化处理,适合对比度高的简单场景。自适应阈值根据像素周围的局部区域计算阈值,有效解决光照不均图像的分割难题。Otsu二值化通过最小化类内方差,自动计算出全局最优阈值,无需人工手动设置。OpenCV核心函数调用cv2.threshold()|cv2.adaptiveThreshold()图示:不同阈值处理方法的效果对比(从左至右:原图、全局阈值、自适应阈值、Otsu)全局阈值与Otsu二值化对比💻核心代码实现(Python+OpenCV)#1.导入库与读取图像并转为灰度图

importcv2importnumpyasnp

img=cv2.imread('sudoku.jpg',0)#0表示读取为灰度图#2.方法A:固定全局阈值二值化(v=127)

ret1,th1=cv2.threshold(img,127,255,cv2.THRESH_BINARY)#3.方法B:Otsu自动阈值二值化(自动计算最优阈值)

ret2,th2=cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#4.显示对比结果

foriinrange(3):cv2.imshow(['原图','全局阈值(127)','Otsu阈值'][i],[img,th1,th2][i])任务9.4:使用分水岭算法进行图像分割算法原理将图像视为拓扑地貌,像素灰度值代表海拔高度。水从“最低点”开始淹没,相遇处筑起的“大坝”即为分割边界。面临挑战图像中的微小噪声会被误判为局部极小值,导致算法将图像过度分割为大量细碎的小区域,失去实际意义。改进策略:基于标记的分水岭人工干预标记:明确指定“汇水盆地”(前景物体)和“分水岭”(背景区域),引导算法准确分割。OpenCV核心函数cv2.watershed()基于标记的分水岭算法实现步骤01预处理将图像转为灰度图,然后进行阈值处理得到二值图像,为后续操作打好基础。02寻找背景通过形态学开运算去除微小的亮噪点,从而确定并分离出图像的背景区域。03寻找前景计算距离变换并结合阈值处理,找到每个物体确定的核心区域,即确定前景。04寻找未知区域未知区域=背景区域-确定前景区域。这些区域是分水岭算法将要进行分割的边界。05创建标记图像构建一个与原图尺寸相同的标记图像矩阵。将背景标记为0,为每个确定的前景目标分配一个唯一的正整数ID,用于指导算法分割。06应用分水岭算法调用OpenCV函数:cv2.watershed(img,markers)。算法会从标记的“注水口”开始填充,直到相遇时形成边界。07绘制结果处理返回的标记矩阵:为不同ID的分割区域填充不同的颜色,并将被标记为-1的边界像素以鲜明的颜色(如红色)高亮显示。项目小结:图像分割方法对比卷积特征检测🔍原理:利用卷积核对图像进行滤波,检测像素值突变以提取特征。✨优点:算法基础经典,计算速度快,易于实现。⚠️缺点:仅提取局部特征,无法直接完成完整的区域分割。🎯适用:边缘检测、直线/曲线及角点特征提取。霍夫变换🔍原理:将图像空间的特征映射到参数空间进行累加投票。✨优点:对特征断裂不敏感,能准确检测已知数学模型的几何形状。⚠️缺点:对图像噪声敏感,参数空间计算成本较高。🎯适用:直线、圆、椭圆等规则几何形状的精准检测。阈值处理🔍原理:设定灰度阈值,将图像二值化以区分前景与背景。✨优点:计算逻辑最简单、处理速度极快,效果直观。⚠️缺点:对光照变化非常敏感,阈值选择不当会严重影响结果。🎯适用:目标物体与背景灰度对比度差异较大的简单场景。分水岭算法🔍原理:将图像视为地形表面,通过模拟“淹没”过程实现分割。✨优点:能够一次性分割出相互接触或重叠的多个独立对象。⚠️缺点:容易产生过度分割现象,且算法实现相对复杂。🎯适用:图像中存在大量紧密接触的颗粒、细胞或目标物体。习题与思考01/概念辨析Q1:哪种算子通常用于检测图像垂直边缘?A)[[1,0,-1],[1,0,-1],[1,0,-1]]

B)[[1,1,1],[0,0,0],[-1,-1,-1]]

C)[[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]Q2:光照不均匀时,哪种阈值处理更好?A)全局阈值B)Otsu二值化C)自适应阈值02/深度思考1.边缘检测的算法差异

请简述Sobel算子与Canny算子在实现原理与检测效果上的主要区别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论