毕业设计-基于深度学习的焊缝图像边缘识别相似度检测系统

本文主要是介绍毕业设计-基于深度学习的焊缝图像边缘识别相似度检测系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

课题背景和意义

实现技术思路

一、相关工作

二、系统总体功能图

三、预处理和图像增强

四、相似度辨识

五、实验

六、总结

实现效果图样例

最后


前言


    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

选题指导: https://blog.csdn.net/qq_37340229/article/details/128243277

大家好,这里是海浪学长毕设专题,本次分享的课题是

🎯毕业设计-基于深度学习的焊缝图像边缘识别相似度检测系统

课题背景和意义

高压天然气输送管线和压力容器在施工制造过程中会 因为焊接形成大量焊缝,焊接施工的质量好坏对工程质量非 常关键。在施工过程中,通过对焊缝的质量检测和缺陷评定 来判断焊接效果。由于X射线具有较强的穿透能力,有助于 检查焊接部位的内部问题,在焊缝缺陷检验中使用很普遍。 出于追赶工期或者掩饰质量问题等目的,有些施工单位会对 同一组无缺陷的焊缝图像多次利用,生成多组重复图片,再 通过重复检测,来冒充未实际送检的焊缝图像,或者掩盖有 质量问题的焊缝图像。 在油气行业,一般工程 施工都要好几年,设备大修也会持续数个月,过程中会产生 数万张甚至数十万张焊缝图像,工程高峰期间甚至需要上百 名无损探伤检测及评定人员同时参与。在这种情况下,一个 缺陷评定人员只能接触到很小的一部分焊缝图像,更不可能 记住数月前或几年前评定过的图片。传统人工方法就难以辨别 重复图片,不能有效保证施工和产品质量。近年来,基于计 算机视觉的工业自动化缺陷检测方法也呈现出爆发式的增 长,计算机视觉领域的分类 、目标检测、分割等方法都 可用于工业缺陷检测。

实现技术思路

一、相关工作

对于焊缝图像查重问题,目前相关研究尚处于理论阶 段。深度学习是一种基于对数据进行表征学习的算法,相较 于传统浅层学习方式,可以对所学到的特征信息进行非线性 转换,从而计算出更为抽象的特性信息。卷积神经网络的网 络构架更为简单清晰,在目标检测等许多领域有着相当好的 应用效果 。DEEPAK等试图找出各种无损检测技术检 测焊接缺陷的敏感性。ZHANG等提出了焊缝指纹的概 念,基于改进的SPP-net深度学习模型提取焊缝特征,焊缝 的这些深度学习特征被称为焊缝指纹。

利用计算机视觉技术对焊接部位图像进行检测分类,并 使用背景差分法将没有缺陷的焊缝图像作为背景图像,与输 入图像的所有像素点进行对比,从而确定焊缝缺陷图像的特 征区域,再以缺陷的面积大小、亮度及形状等特征作为依据, 对焊缝缺陷图像进行分类。在针对图像纹理特征计算 时,可以运用散度来评价两处纹理特征相似度。

基于Kull- back-Leibler(KL)散度和类分离策略的特征选择算法,可以 度量类别与特征间的相关性以及特征之间的冗余性。 Jensen-Shannon(JS)散度是基于KL散度的变体,度量了两 个概率分布的相似度,解决了KL散度非对称的问题。 Wasserstein距离不仅给出了两个分布之间的距离,而且能 够告诉我们它们具体如何不一样,即如何从一个分布转化为 另一个分布。

二、系统总体功能图

企业级用户希望根据焊缝影像数据开发出一种焊缝图 像相似性自动比较的算法软件,自动识别绝大部分焊缝重复 图像,希望预期查重准确率达到90%以上,运行和检测高效 稳定。同时希望算法和程序兼容性好,方便与已有系统对 接,交互界面直观。鉴于此,重点研究直线焊缝以及大管径 管道焊缝的影像比对,算法和产品需实现如图所示的 功能。

在整个系统中,待鉴别的焊缝图片在导入系统后,将先 对其进行内置的预处理算法,使其符合系统的输入标准。而 后进行特征提取,并将提取所得的特征与数据库中的图像特 征进行比对识别,判定是否为原有焊缝图库中的重复影像。

三、预处理和图像增强

图像预处理

由于输入的焊缝图像存在图片明暗不均匀、对比度较 小、边缘过曝等质量问题,且对于潜在的重复焊缝图片,造假 者可能故意调整焊缝图像的拍摄角度或拍摄时的稳定度,输 入的图片一般都无法直接进行有效地图像处理。

如图是 一张典型的未经过预处理的焊缝图像,可以看到该图像本身 无明显噪点,而存在对比度较小,焊缝主体部分未得到明显 的显示等问题。

通过直接对图像进行直方图均衡化, 得到的处理结果如图所示。

图显示了该图像处理前与处理后在灰度值统计直方 图上的变化。可以清晰地看出,图片在经直方图均衡化后大 大提高了对比度,且从灰度直方图的角度来看也获得了较好 的均匀化。

图像增强

经过均衡化处理后,焊缝区域灰度值在两侧边界值已有 了较明显的突变。此时,为了突出焊缝区域,需对图像进行 二值化,通过这个阈值设定,将图像分为焊缝与背景。为了 保证程序的运行效率,使用算法优化较好的最大类间方差法 图像二值化阈值,对一组图库组图像运行结果如图所示。

从图可以看出,使用该算法在根据图像亮度自适应调节阈 值的同时,获得了较好的焊缝边界,便于后续的处理。

 此外,对于焊缝射线图像的拍摄,时常因为仪器位置受 限、拍摄手法不佳或造假者故意为之等原因,无法得到接近 水平的焊缝图像。霍夫变换是一种常用的直线检测方法,利 用霍夫变换能够检测出二值化图片上的潜在直线,并以最长 直线代表焊缝整体走向,以此做倾斜角度的校正。实际优化 效果如图所示。

经过水平校正后的图片仍然不能用于特征提取,原因是 其中与焊缝特征无关的信息过多,大部分为两侧的金属材 料,因此需要准确地提取出焊缝区域用于后续的纹理特征。 此时需要借助拉东变换对焊缝进行水平方向的投影,才 能定位焊缝区域大致的上下边界。

四、相似度辨识

算法选择

图像预处理和增强之后,采用在计算图像局部熵的基础 上进行散度计算的识别方法来评价两处纹理特征相似度,常 用算法包括KL散度计算、JS散度计算和Wasserstein距离 等。如果计算结果的散度值在阈值以下,即2个分布的差异 较小,则认为该输入图片与当前图库中的某张图片重复。为 了选出本工程场景下最适用的散度算法,对上述3种常用算 法运用加权决策矩阵法进行评价,如表所示。

KL散度算法

KL散度是计算2个概率分布P和Q差异的一种常用 方法。二者之间差异越小,散度计算值越小。KL散度的离 散及连续定义分别如下:

 式中,P(x)为目标分布,Q(x)为匹配分布,若两个分布完全 相同,则D(P Q)=0,反之意味着D(P Q)≠D(Q P)。

通过上述处理后可得到一系列的纹理特征增强图像的 统计分布,由于为离散分布,则可对任取两个分布P、Q进行 KL散度的计算。由于该相对熵的不对称性,仅凭一次计算 来描述一对图片是片面的,本文采用散度和作为一组图片的 描述方法,表达式如式:

功能实现

在构建焊缝影像数据库时,需要对每张图片的纹理特征 结果进行保存,并按顺序每两张进行一次KL散度计算,作 为文件阈值评判的标准。

对于后续测试组的图片,将所得的纹理统计分布与保存 的增强图片统计分布逐一进行KL散度值的计算,如果计算 结果的散度值在阈值以下,即2个分布的差异较小,则认为 该输入图片与当前图库中的某张图片重复,输出该张图片的 序号,并程序初步判断为造假图片,提交至人工二次审定;如 果计算结果散度值超过阈值,即2个分布的差异较大,则认 为该图片与当前图库中的所有图片均不重复,并且保留该次 图像的增强结果,重新编号并保存进图库中。

五、实验

数据集和设置

本项目的检测系统搭建需要两部分,分别是焊缝图库的 建立与焊缝图片的检测。其中程序运行所使用的图片均由 企业方提供,接收到的所有焊缝图片已提前对图像拍摄时 间、焊工工号、焊缝管线号等敏感标记信息做了遮盖处理,共 接收成对的重复焊缝图片总计300组。

实验结果

图为某组焊缝图片组内KL散度计算结果,可以看出 特征提取效果较好的图片在与非重片计算时得到的KL散 度值结果较大,进一步筛去这类图片,关注底部数据以确定 重复图像判别的阈值,重新获得散点如图所示。

焊缝图片组内KL散度计算结果

筛选后焊缝图片组内KL散度计算结果

六、总结

为了解决焊缝射线探伤图像查重问题,通过算法优化和 工程现场实际图像数据分析,采用滤波、二值化、边缘识别、 倾斜校正、焊缝提取等大量预处理操作,构建了焊缝图像金 字塔,通过相同窗口大小局部熵运算增强纹理,提取焊缝图 像特征点,设计并开发出了一套基于深度学习技术的焊缝图 像相似度比较的算法模块,利用该算法模块,能自动识别绝 大部分焊缝重复图像,最终准确率为92.3%,能够在很大程 度上减轻图像评定工作的压力,使工作人员将更多精力放在 提升工程质量等方面,而不必在焊缝图像造假检测上消耗太 多时间。

实现效果图样例

焊缝图像边缘识别相似度检测系统:

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

最后

这篇关于毕业设计-基于深度学习的焊缝图像边缘识别相似度检测系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/270512

相关文章

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

Java枚举类型深度详解

《Java枚举类型深度详解》Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文... 目录前言1. enum关键字的使用:定义枚举类型什么是枚举类型?如何定义枚举类型?使用枚举类型:2.

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页