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

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

目录

前言

课题背景和意义

实现技术思路

一、相关工作

二、系统总体功能图

三、预处理和图像增强

四、相似度辨识

五、实验

六、总结

实现效果图样例

最后


前言


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

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

选题指导: 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

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬