【数据分析】基于matlab焊缝边缘检测算法对比分析 【含Matlab源码 260期】

举报
海神之光 发表于 2022/05/29 03:57:17 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【数据分析】基于matlab焊缝边缘检测算法对比分析 【含Matlab源码 260期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【数据分析】基于matlab焊缝边缘检测算法对比分析 【含Matlab源码 260期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、案例简介

1 问题的背景
目前很多机械关键部件均为钢焊接结构,钢焊接结构易出现裂纹、漏焊、焊缝外观不规则等缺陷,因此对焊缝质量检测尤为重要。焊缝边缘是焊缝图像最重要的特征,经典的边缘提取算法通过考虑相连像素间的灰度变化,利用边缘邻接第一或第二阶导数的变化规律来实现边缘提取。在常用的一些边缘检测算子中,Sobel常常形成不封闭的区域,其他算子例如Laplace算子通常产生重响应。本章采用T型焊接焊缝图像进行分析,讨论了基于形态学处理的焊缝边缘检测方法,该算法信噪比大且精度高。该算法首先采用中值滤波、白平衡处理、图像归一化处理等图像预处理技术纠正采集图像,然后采用形态学处理算法提取焊缝的二值化图,该算法不仅有效的降噪,而且保证图像有用信息不丢失。

2 转向架构架焊缝边缘检测研究现状
目前很多机械关键部件主要采用焊接加工制造,难免由于人为误差,导致焊缝质量不合理,造成构架结构变形,性能下降,严重影响列车运行安全性。随着计算机技术和电子技术的发展,在大规模生产中,广泛应用焊接机器人。焊接缺陷识别是焊接生产自动化和提高焊接质量的关键。焊接过程中,所摄焊缝图像往往存在很多噪声,图像预处理一般包括图像平滑滤波和图像矫正等。边缘检测是图像测量、检测和位置阶跃变化的集合。通常边缘检测算法有梯度检测,统计性方法,数学形态学,小波多尺度检测、模糊算法、基于边缘检测方法的积分变换等等。现行的焊缝质量检测手段有,对工程常见焊接缺陷(烧穿、夹杂、气孔等)基于X射线焊缝图像缺陷自动提取与识别技术;采用超声相控阵检测图像特征与识别,统计焊缝缺陷的特征规律,总结不同的典型缺陷特征;采用Canny边缘检测算法对焊缝边缘提取,通过直方图对比分析,判断焊缝是否合格。采用遗传算法对焊缝图像边缘进行检测并提取焊缝边缘。广大学者多集中在构架的强度分析和焊接温度场模拟以及焊缝内部检测上,对于转向架构架焊缝表面质量检测,很少有学者进行图像检测和识别研究。

3 图像预处理技术
在这里插入图片描述
在这里插入图片描述
4 焊缝图像边缘检测
图像边缘是图像中灰度不连续或急剧变化的所有像素的集合,集中了图像的大部分信息,是图像最基本的特征之一。边缘检测是后续的图像分割、特征提取和识别等图像分析领域关键性的一步,在工程应用中有着十分重要的地位。传统检测法通过计算图像各个像素点的一阶或二阶微分来确定边缘,图像一阶微分的峰值点或二阶微分的过零点对应图像的边缘像素点,较常见的检测算子有:Sobel、Prewitt和Canny等算子。
4.1 Sobel算子
在这里插入图片描述
4.2 Prewitt算子
在这里插入图片描述
4.3 Canny算子
在这里插入图片描述
4.4 形态学处理
在这里插入图片描述

三、部分源代码

clear
close all;
ps=imread('1.jpg');
subplot(121),imshow(ps)
background=imopen(ps,strel('disk',4));
% imshow(background);
subplot(122),surf(double(background(1:4:end,1:4:end))),zlim([0 256]);
set(gca,'Ydir','reverse');
% ps2=imsubtract(ps,background);
% figure,imshow(ps2)
% axis([0 280 60 260])
% plot(ps(1:280,110));

clc,clear,close all
img=imread('1.jpg');
subplot(121),imshow(img),xlabel('原始图像')
img_1=img(:,:,1);
img_2=img(:,:,2);
img_3=img(:,:,3);
Y=0.299*img_1+0.587*img_2+0.114*img_3;  % 白平衡系数
[m,n]=size(Y);
k=Y(1,1);
for i=1:m
    for j=1:n
        if Y(i,j)>=k
            k=Y(i,j);
            k1=i;
            k2=j;
        end
    end

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 由伟,刘亚秀.MATLAB数据分析教程[M].清华大学出版社,2020.
[2]王岩,隋思涟.试验设计与MATLAB数据分析[M].清华大学出版社,2012.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/113769662

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。