版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机视觉项目开发实战
(微课版)项目六交通标志识别—图像分割与模板匹配思维导图学习目标概览能够基于像素阈值分割法、分水岭算法实现图像分割知识目标学习目标素养目标技能目标培养严谨工程态度培养社会责任感培养技术报国情怀能够利用图像金字塔进行多尺度目标检测能够使用模板匹配方法实现目标匹配理解像素阈值分割法、分水岭算法的原理及其应用场景理解图像金字塔的构建过程及其在多尺度目标检测中的作用理解目标匹配的相似度度量方法及其适用场景目录项目导入知识准备项目拓展项目实施项目巩固6.1图像分割6.2模板匹配PART01项目导入项目导入交通标志作为道路交通规则的视觉化载体,承载着引导驾驶行为、规范交通秩序、预防交通事故的作用。智能交通标志识别技术将“科技向善”理念转化为守护生命的实际屏障。智慧交通从“感知”到“认知”。人民出行的“安全守则”、社会运行的“交通脉搏”PART02知识准备知识准备—图像分割如何从复杂的道路场景中精确分离出交通标志区域,并在不同尺度下实现稳定可靠的识别,是智能交通系统面临的关键问题。图像分割技术为此提供了多种有效的解决方案。像素阈值分割法通过设定灰度阈值实现前景与背景的快速分离。分水岭算法则通过模拟地形淹没过程实现图像区域的精确划分,能够有效处理交通标志与复杂背景的边界定位问题。配合图像金字塔构建的多尺度分析空间,这些方法能够为不同距离、角度和光照条件下的交通标志检测提供全面的技术支持,为构建可靠的交通标志识别系统打下坚实的基础。知识准备—图像分割图像分割是计算机视觉的重要研究方向,其核心目标是将数字图像分割为具有特定语义特征的子区域。根据技术原理的不同,图像分割方法可分为基于阈值、基于区域和基于边缘等类型。基于阈值的方法:通过设定灰度或颜色阈值实现快速分割。基于区域的方法:利用像素间的相似性进行区域划分。基于边缘的方法:则通过检测图像不连续性来定位边界。阈值法计算简单但易受光照影响,区域法能产生连续区域但对初始条件敏感,边缘法定位精确但抗噪声能力较弱。知识准备—图像分割当I(x,y)≥T时,像素属于目标类;当I(x,y)<T时,像素属于背景类。6.1.1像素阈值分割法像素阈值分割是图像分割中较为简单和基础的方法,其核心思想是通过设定一个灰度阈值,将图像像素划分为不同类别。该方法假设目标对象与背景在灰度值上存在差异,通过选取合适的阈值实现图像的二值化或区域划分。设源图像为I(x,y),通过设定阈值T,将图像分为两个区域:像素阈值分割法对噪声较为敏感,在光照不均或目标对象与背景灰度重叠时分割效果较差。单一的全局阈值在处理复杂场景时往往难以取得理想效果。
知识准备—图像分割SVM中常用的核函数主要有以下几种类型。src:输入图像,必须是单通道灰度图像。thresh:设定的阈值,取值范围通常为0~255。maxval:像素值超过(或低于)阈值时赋予的新值。type:阈值化类型,决定了如何处理像素值与阈值的关系。retval,dst=cv2.threshold(src,thresh,maxval,type[,dst])6.1.1像素阈值分割法OpenCV提供了cv2.threshold()函数用于实现图像分割,该函数能够根据设定的阈值将灰度图像转换为二值图像,实现前景与背景的分离。其语法格式如下:知识准备—图像分割【例6-1】使用像素阈值分割法分割交通标志。6.1.1像素阈值分割法—案例知识准备—图像分割运行本例代码,将输出图6-1所示的结果。图6-1使用像素阈值分割法分割交通标志代码运行结果6.1.1像素阈值分割法—案例【例6-1】使用像素阈值分割法分割交通标志。知识准备—图像分割①将源图像转换为灰度图像。②通过形态学变换中的开运算和膨胀操作去除图像噪声;提取图像的边缘信息和背景区域。③对图像进行距离转换,计算前景像素到最近背景边界的距离,再通过阈值处理获得确定的前景区域。④将背景区域与前景区域相减,得到无法确定归属的未知区域。⑤为确定的前景区域赋予不同的标签,对背景区域和未知区域做特殊标记。⑥基于标记结果执行分水岭算法,完成最终分割。6.1.2分水岭算法分水岭算法是一种基于数学形态学的经典图像分割算法,其思想来自地理学中的分水岭概念。该算法将灰度图像视为地形表面,其中每个像素的亮度值对应海拔高度:较亮的区域代表山峰,较暗的区域代表谷地。使用分水岭算法执行图像分割操作时通常包含下列步骤。
知识准备—图像分割6.1.2分水岭算法在OpenCV中,实现分水岭算法涉及以下函数的协同工作。cv2.morphologyEx():执行形态学开运算,用于去除细小噪声。cv2.dilate():执行形态学膨胀操作,用于确定背景区域。cv2.distanceTransform():计算二值图像中每个前景像素到最近背景边界的欧氏距离,输出结果为浮点型图像,其中每个像素值都表示该像素位置到最近背景边界的距离。cv2.connectedComponents():对二值图像进行连通区域分析,为每个独立区域分配唯一标记。该函数的返回值包括标记数量和对应的标记矩阵,其中背景标记为0。cv2.watershed():分水岭算法核心函数,用于执行标记控制的分水岭变换,输入参数为彩色源图像和标记矩阵,输出为分割结果矩阵。在输出矩阵中,不同区域被赋予不同的正整数标记,而区域之间的边界像素则被标记为-1。知识准备—图像分割【例6-2】使用分水岭算法分割交通标志。6.1.2分水岭算法—案例步骤1:导入使用的库,读取图像并进行预处理知识准备—图像分割【例6-2】使用分水岭算法分割交通标志。6.1.2分水岭算法—案例步骤2:通过形态学操作,获取确定的前景区域和背景区域知识准备—图像分割【例6-2】使用分水岭算法分割交通标志。6.1.2分水岭算法—案例步骤3:标记前景区域与未知区域知识准备—图像分割【例6-2】使用分水岭算法分割交通标志。6.1.2分水岭算法—案例步骤4:可视化知识准备—图像分割运行本例完整代码,将显示图6-2所示的结果。图6-2分水岭算法的过程与结果图像6.1.2分水岭算法—案例【例6-2】使用分水岭算法分割交通标志。知识准备—模板匹配在成功分割出图像中的前景目标后,还需要进一步识别和理解这些目标,从而实现对特定目标的识别或对整体场景的理解。模板匹配是一种经典的图像识别方法,它为目标识别与场景理解提供了直观且有效的技术方案。模板匹配的核心思想:通过在待检测图像中滑动窗口,寻找与预先准备好的模板图像最为相似的区域。算法会将模板图像与源图像的每个可能位置进行相似度计算,通过特定的数学度量方法评估二者的匹配程度,最终在响应图中找到最佳匹配位置。知识准备—模板匹配①准备待检测的源图像和作为参考的模板图像,二者应具有相同的色彩空间和数据类型。②通过特定的相似度度量方法,在源图像中逐像素滑动窗口,计算模板图像与源图像每个对应区域的匹配响应值,形成二维响应矩阵。③在生成的响应矩阵中寻找具有最高相似度的位置,据此在源图像中标注出目标区域。6.2.1单目标匹配单目标匹配是模板匹配中最基础且应用最广泛的形式之一,其核心目标是在源图像中寻找与给定模板图像最为相似的唯一区域。该方法适用于待检测图像中只存在一个目标,或只需要找出最显著目标的场景。单目标匹配在实现过程中主要包含3个核心步骤。
知识准备—模板匹配其中部分参数含义如下。image:输入图像,数据类型必须是8位或32位浮点型。templ:模板图像,尺寸不能大于源图像且与源图像具有相同的数据类型。method:匹配方法,指定相似度度量准则,常用选项包括cv2.TM_SQDIFF(平方差匹配法)、cv2.TM_SQDIFF_NORMED(归一化平方差匹配法)、cv2.TM_CCOEFF(相关系数匹配法)、cv2.TM_CCOEFF_NORMED(归一化相关系数匹配法)等。result=cv2.matchTemplate(image,templ,method[,result[,mask]])单目标匹配的局限性主要体现为对目标的尺度变化和旋转变换较为敏感。当模板图像与源图像中的目标的尺寸或方向不一致时,匹配精度会显著下降。OpenCV提供了cv2.matchTemplate()函数用于实现模板匹配的核心计算过程。其语法格式如下:6.2.1单目标匹配知识准备—模板匹配min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(src[,mask])在匹配完成后,可以通过cv2.minMaxLoc()函数快速定位响应矩阵中的极值位置及其数值,进而确定模板图像在源图像中的精确坐标。cv2.minMaxLoc()函数的语法格式如下:6.2.1单目标匹配其中,src为输入矩阵,通常为matchTemplate()函数的输出结果。在该函数的返回值中,min_val为矩阵中的最小值,max_val为矩阵中的最大值,min_loc为最小值的位置坐标,max_loc为最大值的位置坐标。知识准备—模板匹配【例6-3】使用单目标匹配检测图像中的交通标志。6.2.1单目标匹配—案例步骤1:导入程序所需的库,读取源图像与模板图像并将其转换为灰度图像知识准备—模板匹配6.2.1单目标匹配—案例步骤2:使用cv2.matchTemplate()函数执行模板匹配【例6-3】使用单目标匹配检测图像中的交通标志。知识准备—模板匹配6.2.1单目标匹配—案例步骤3:使用cv2.rectangle()函数在源图像上标记匹配结果并可视化【例6-3】使用单目标匹配检测图像中的交通标志。知识准备—模板匹配运行本例的完整代码,将获得图6-3所示的结果。图6-3使用单目标匹配检测图像中的交通标志代码运行结果6.2.1单目标匹配—案例【例6-3】使用单目标匹配检测图像中的交通标志。知识准备—模板匹配①通过cv2.matchTemplate()函数计算全图的匹配响应矩阵。②设定合理的相似度阈值,筛选所有超过阈值的候选位置。③应用非极大值抑制技术消除重叠的检测框,确保每个独立目标仅对应一个检测结果。6.2.2多目标匹配在实际应用场景中,往往需要在同一图像中定位多个相同或相似的目标,这正是多目标匹配要解决的核心问题。与单目标匹配仅寻找最佳匹配位置不同,多目标匹配需要提取所有超过预设相似度阈值的匹配区域,实现多目标的检测与定位。多目标匹配的技术路线延续了单目标匹配的基本原理,但在结果处理环节存在显著差异。其核心步骤如下。知识准备—模板匹配其中部分参数含义如下。rectList:输入的矩形列表,每个矩形表示为[x,y,width,height]或[x1,y1,x2,y2]格式。groupThreshold:分组阈值,表示至少需要有多少个重叠矩形才能形成一个组。当取值为1时,表示单个矩形也可构成一个组。eps:相对距离参数,控制矩形合并的严格程度。值越小表示合并条件越严格,通常取值范围为0.1~0.5。rectangles,weights=cv2.groupRectangles(rectList,groupThreshold[,eps])OpenCV提供的cv2.groupRectangles()函数实现了基于非极大值抑制的矩形(即检测框)分组与合并。其语法格式如下:6.2.2多目标匹配知识准备—模板匹配cv2.groupRectangles()函数基于聚类原理对重叠或邻近的矩形进行分组合并,输出合并后的矩形列表及对应的权重值。在多目标匹配应用中,该函数能够有效消除因滑动窗口在相邻位置产生的重复检测框,确保每个目标仅对应一个最优的检测结果,从而提升检测的准确性。6.2.2多目标匹配需要注意的是,多目标匹配的效果直接受到阈值选择的影响:阈值过高可能导致漏检,阈值过低则可能误检。在实际应用中,需要根据具体场景和模板特性进行阈值调优,以在召回率与准确率之间达到最佳平衡。知识准备—模板匹配【例6-4】使用多目标匹配检测图像中的交通标志。6.2.2多目标匹配—案例步骤1:导入使用的库,读取源图像与模板图像并将其转换为灰度图像知识准备—模板匹配步骤2:执行模板匹配6.2.2多目标匹配—案例【例6-4】使用多目标匹配检测图像中的交通标志。知识准备—模板匹配步骤3:应用非极大值抑制技术消除重叠检测框6.2.2多目标匹配—案例【例6-4】使用多目标匹配检测图像中的交通标志。知识准备—模板匹配步骤4:可视化6.2.2多目标匹配—案例【例6-4】使用多目标匹配检测图像中的交通标志。知识准备—模板匹配运行本例完整代码,将获得图6-4所示的结果。图6-4使用多目标匹配检测图像中的交通标志代码运行结果【例6-4】使用多目标匹配检测图像中的交通标志。6.2.2多目标匹配—案例知识准备—模板匹配6.2.3图像金字塔图像金字塔的核心思想是通过对源图像进行逐层降采样,生成一系列分辨率逐渐降低的图像集合。金字塔的底层是源图像(高分辨率图像),随着层级上升,图像尺寸不断减小,形成图6-5所示的类似金字塔的结构。这种多尺度表示使得模板匹配能够在不同尺度空间中进行,从而实现对不同大小目标的检测。图6-5图像金字塔知识准备—模板匹配6.2.3图像金字塔OpenCV提供了构建图像金字塔的相关函数,其中常用的是cv2.pyrDown()和cv2.pyrUp()函数。cv2.pyrDown()函数用于实现图像的高斯金字塔下采样,将图像尺寸减半并应用高斯平滑;cv2.pyrUp()函数则用于图像的上采样,将图像尺寸扩大一倍并插值填充。配合使用这两个函数,可以构建完整的图像金字塔结构。在多尺度模板匹配中,通常采用高斯金字塔结构。匹配过程从金字塔顶层(最小尺度)开始,逐层向下搜索,每一层使用前一层的匹配结果作为初始位置,逐步细化定位精度。这种分层搜索策略不仅提高了匹配效率,还能有效应对目标的尺度变化。知识准备—模板匹配根据题目要求,编写代码如下:6.2.3图像金字塔—案例【例6-5】构建图像金字塔。知识准备—模板匹配运行本例代码,将显示图像金字塔的各层,如图6-6所示。图6-6使用多目标匹配检测图像中的交通标志代码运行结果6.2.3图像金字塔—案例【例6-5】构建图像金字塔。PART03项目实施项目实施项目任务从道路图像中自动检测和识别交通标志。任务实现本项目将使用图像分割与模板匹配技术实现交通标志的自动检测与识别。整个过程包括图像预处理与增强、交通标志区域分割、模板匹配识别、多尺度检测与结果展示等环节。在项目中,将针对每个步骤编写独立的函数,包括图像加载与预处理、创建交通标志的颜色掩模、基于分水岭算法的图像分割、创建图像金字塔、基于金字塔的多尺度模板匹配、可视化结果等函数。在主程序中,将按工作过程依次调用这些功能函数,形成完整的交通标志检测与识别流程。项目实施步骤1:图像的加载与预处理定义load_and_preprocess_image()函数,用于实现从指定路径读取图像文件、将图像缩放到指定尺寸,并对图像进行色彩空间转换、直方图均衡和中值滤波等多种预处理操作。具体代码如下:项目实施步骤2:创建交通标志的颜色掩模定义create_color_mask()函数,用于实现在HSV色彩空间中创建交通标志的颜色掩模,初步定位潜在的交通标志区域,方便后续针对红色和蓝色交通标志进行检测,为接下来的分水岭分割提供输入。具体代码如下:项目实施步骤3:使用分水岭算法分割图像定义watershed_segmentation()函数,使用分水岭算法对图像进行分割,实现从粗略的颜色区域到精确的个体标志区域的转换,为接下来的模板匹配提供准确的候选区域,从而提升交通标志检测的准确性和效率。具体代码如下:项目实施步骤4:模板匹配定义template_matching()函数。在该函数中,如果图像经分水岭分割后的候选区域(ROI)比模板图像小,则调整模板的大小。然后执行模板匹配,如果匹配度足够高,则返回匹配位置。具体代码如下:项目实施步骤5:加载匹配模板图像定义load_templates()函数,读取指定目录下作为匹配模板的所有图像。具体代码如下:项目实施步骤6:多尺度目标匹配与识别定义detect_traffic_signs()函数,使用两重循环结构,首先遍历用分水岭算法获得的各个候选区域,然后再遍历各个模板图像,执行多尺度的目标匹配,记录检测到的结果。在执行两重循环时,如果在某一候选区域中发现更优的匹配结果,则更新前次的纪录。在该函数的后处理阶段,还将对候选框的交叠度进行判断:如交叠度低,且当前检测置信度高,则替换;若交叠度高,则选择置信度更高者。该函数是交通标志识别中最为核心的部件,关键代码如下:项目实施步骤6:多尺度目标匹配与识别项目实施步骤6:多尺度目标匹配与识别除上述核心函数外,定义show_preprocessing_results()、show_segmentation_results()、show_detection_results()、print_detection_results()等函数分别用于对预处理阶段、图像分割阶段、交通标志检测阶段的结果进行可视化,以及输出详细的检测结果信息。此处省略这些函数的代码,请参考附书源码。
源代码地址文件
Traffic_Sign_Recognition.py见教材配套代码,路径如下:src/proj06/project/Traffic_Sign_Recognition.py项目实施图6-7交通标志识别中的图像预处理结果运行本项目的完整代码,将会在给定的交通场景图像中,对指定的交通标志进行检测与识别,首先会展示图6-7所示的图像预处理结果。项目实施图6-8分水岭算法分割结果与最终交通标志检测结果关闭图像预处理结果展示窗口后,将会进一步展示图6-8所示的分水岭算法分割结果与最终交通标志检测结果,并在控制台中输出如下信息:PART04项目拓展项目拓展基于深度学习的交通标志识别以CNN为代表的深度学习方法在交通标志识别中取得了突破性进展。与主要依赖于手工设计特征与模板匹配的传统方法相比,CNN能够从海量数据中自动学习具有高度判别性的层次化特征表示,从而在端到端的训练中同时优化特征提取和分类任务。对于需要同时完成定位与识别的任务,目标检测框架成为主流。F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甘肃省定西地区岷县2027届数学四年级第一学期期末监测试题含解析
- 2027届陕西省西安市雁塔区三上数学期末调研模拟试题含解析
- 2026年5月产房助产士理论考试测试卷及答案
- 2027届黑龙江省伊春市西林区四上数学期末达标检测试题含解析
- 2027届江西省赣州市赣县三年级数学第一学期期末达标检测试题含解析
- 湖北省荆门市京山县2027届四年级数学第一学期期末调研试题含解析
- 济宁市2026届高三最后一模生物试题含解析
- 2026能源装备制造行业市场发展分析成本评估销售规划研究报告
- 2026中国智能空气净化系统制造行业市场发展现状供需评估及投资评估产业发展规划报告
- 【期末总复习】初中道德与法治考试(提分技巧篇)
- DB51T 2834-2021 四川省页岩气生产安全规程
- 云南省相对集中行政处罚权事项指导目录(2024年版)
- 2022浪潮信创服务器CS5260H2技术白皮书
- 部队营房课件教学课件
- Unit1-Unit3 (单元测试)-2024-2025学年人教PEP版(2024)英语三年级上册
- 人教版高中物理必修二同步练习及答案
- 总体概述施工组织总体设想、方案针对性及施工标段划分
- (正式版)JBT 8579-2024 内燃机 进、排气管
- 手持式氨气检测仪
- 《光伏发电工程预可行性研究报告编制规程》(NB/T32044-2018)中文版
- 百词斩高考词汇4135
评论
0/150
提交评论