【缺陷检测】基于matlab啤酒瓶口缺陷检测系统【源码108期】

一、简介

基于matlab啤酒瓶口缺陷检测系统,利用数字图像处理技术实现啤酒瓶口的自动检测,啤酒瓶口的光学特征进行了分析,研究了检测过程中的图像获取、图像预处理、图像分割、缺陷识别、外围设备通信控制等关键技术,实现了一个适用于实验室环境的、基于计算机视觉的小型空瓶缺陷设计。

二、部分源码

clc; clear all; close all;tic
warning off all;
f = imread('缺陷原始图像2.png');%更改这里改图片 缺陷原始图像 无缺陷瓶口原始图像
if (size(f,3) > 1)
    f = rgb2gray(f);
else
    f = f;
end
f = f(5:end -5,10:end - 20);
imshow(f,[ ]),title('原始图像')
f = medfilt2(f);
T =Otsu(f);
f_bw = f > T;
figure,imshow(f_bw),title('二值化后的图像')
se = strel('disk',2);
f_bw = imclose(imopen(f_bw,se),se);
%f_bw = imerode(f_bw,se);
figure,imshow(f_bw),title('腐蚀之后的图像')
[P1,P2,P3,P4] = eliminate(f_bw,50);%%
if (d < 0.08)
    j0 = floor((P1 + P2) / 2);
    i0 = floor((P3 + P4) / 2);
    f_bw(i0,j0) = 0;
else
    disp('有缺陷')
    figure,imshow(f_bw),title('缺陷图像')
    t = toc
    return
end
%%%消除瓶底区域
for i = 1 : size(f_bw,1)
    for j = 1:size(f_bw,2)
        r = sqrt((i - i0)^2 + (j -j0)^2);
        if (r > 56 | r < 42)%%%%%%%%%%%%%参数不好选择
            f_bw(i,j) = 0;
        else
            f_bw(i,j) = f_bw(i,j);
        end
    end
end
figure,imshow(f_bw),title('消除底部')

%标记连通区域
[L,n] = bwlabel(f_bw,8);
for i = 1:n
    ind = find(L == i);
    S(i) = numel(ind);
end
f_bw(ind) = 0;

f1 = f_bw(1:i0,1:j0);%左上
f2 = f_bw(1:i0,j0 + 1:end);%右上
f3 = f_bw(i0 + 1:end,1:j0);%左下
f4 = f_bw(i0 + 1:end,j0 + 1:end);%右下

ind1 = find(f1 == 1);
ind2 = find(f2 == 1);
ind3 = find(f3 == 1);
ind4 = find(f4 == 1);

Num = [numel(ind1),numel(ind2),numel(ind3),numel(ind4)];

if ((Max - Min) / Max < 0.1)
    disp('没有缺陷')
    figure,imshow(f_bw,[ ])
else
    disp('有缺陷')
    figure,imshow(f_bw,[ ])
end

toc

三、运行结果

四、matlab版本

MATLAB R2019a

五、学习与交流

文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Matlab的缺陷信号识别系统可以通过以下步骤来实现: 1. 数据采集:首先,需要采集包含缺陷信号的数据样本。可以使用传感器、仪器或设备来采集信号数据,并将其保存为Matlab可处理的格式,如.csv或.mat文件。 2. 信号预处理:对采集到的信号进行预处理,以提高后续信号处理算法的效果。常见的预处理方法包括滤波、降噪、去除基线漂移等。 3. 特征提取:通过数学方法从信号中提取有代表性的特征。例如,可以使用时域特征(如均值、方差)或频域特征(如功率谱、频谱峰值)等。Matlab提供了多种特征提取的函数和工具箱,可以方便地完成这一步骤。 4. 特征选择:根据具体应用需求,对提取到的特征进行选择,筛选出对于缺陷信号分类有较高区分度的特征。可以使用统计方法、机器学习算法来进行特征选择,并结合交叉验证等评估方法进行选择结果的验证。 5. 分类器建模:选择合适的分类算法,如支持向量机(SVM)、人工神经网络(ANN)等,并使用选定的特征进行模型训练。Matlab提供了丰富的机器学习工具箱,可以方便地进行分类器的建模和训练。 6. 模型评估:使用预留的测试数据对建立的分类模型进行评估。可以计算准确率、召回率、F1值等指标来评估模型的性能,并可以使用混淆矩阵等可视化工具来分析分类结果。 7. 系统集成:根据实际应用需求,将训练好的分类模型集成到一个完整的系统中。可以将数据采集、信号预处理、特征提取、分类器建模等步骤封装成一个Matlab函数,方便用户在实际应用场景中调用和使用。 总之,基于Matlab的缺陷信号识别系统可以通过数据采集、信号预处理、特征提取、特征选择、分类器建模、模型评估和系统集成等步骤来实现。Matlab提供了丰富的函数和工具箱,方便用户进行信号处理、特征提取和机器学习等操作,使得系统开发和调试过程更加高效和便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值