【图像检测-缺陷检测】基于形态学实现瓶盖瑕疵检测matlab代码

598 阅读3分钟

1 简介

​随着食品安全问题的频繁发生,消费者对食品包装的质量要求也越来越高,因此塑料防盗瓶盖在出厂时,通常需要通过严格的质量检测,如印刷图案是否清晰正确、有无污渍、圆度是否变形、缺料、溢料、有无防盗环等。为避免生产线上人工识别容易产生疲劳和易识别错误的缺点,急需开发能够应用于工业生产线上的瓶盖缺陷检测系统对瓶盖缺陷进行自动识别。本文基于实际工程需求,主要完成以下算法的研究设计:(1)图案印刷缺陷检测。检测饮料瓶盖是否存在印刷图案,图案印刷的颜色是否正确,图案是否有明显缺损。然而在实时系统中,不需要标记缺陷具体位置,因此本文提出基于图像特征统计来进行判断。(2)区域标记。将瓶盖口部图像分为三个区:口部一、口部二及瓶盖侧壁。本文首先采用基于Freeman链码的轮廓提取方法获得瓶盖外圆轮廓和口部二的轮廓,然后通过图像缩放原理获得口部一的轮廓,最后采用基于Freemanl链码的填充算法对瓶盖区域进行填充标记。(3)内表面污渍检测。进行污渍识别的区域有:口部一、口部二、瓶盖侧壁。由于这三个区域存在不同的亮度特征,因此本文对这三个区域采用不同的阈值进行滑动窗口污渍提取。为了减少边缘轮廓对瓶盖内表面污渍识别带来的影响,本文对这些区域采用Sobel滤波进行边缘检测。(4)瓶盖外形检测。针对饮料瓶盖是否圆度变形、缺料、溢料、毛边等缺陷进行检测。本文针对瓶盖外形检测提出了基于外轮廓局部梯度变化和基于外轮廓半径差这两种算法,可以根据不同的实际应用情况选择适合的算法。基于机器视觉瓶盖缺陷检测系统设计开发完成后,对系统进行了测试,测试结果该检测系统基本满足生产线要求,并已经得到了用户的认可。

2 部分代码

f=imread('qx3.jpg');%读入图片
%subplot(2,2,1);imshow(f)
f1=im2double(f);%将真彩图片转化为double型
I=rgb2gray(f);%将真彩图像转化为灰度图像
%subplot(2,2,2);imshow(I)
%subplot(2,2,3);imhist(I);%显示直方图
p=edge(I,'sobel');
%subplot(2,2,4);imshow(p);
imwrite(I,'C:\Users\lenovo\Desktop\f9ffefca4217d2bbf043243db84a4b86\瑕疵检测\灰度1.jpg')
h4=medfilt2(p,[1,1]);%用3*3的模板进行中值滤波
%subplot(1,2,1);imshow(p)
%subplot(1,2,2);imshow(h1)
figure,imshow(h4)
imwrite(h4,'C:\Users\lenovo\Desktop\f9ffefca4217d2bbf043243db84a4b86\瑕疵检测\缺陷3.jpg')

3 仿真结果

4 参考文献

[1]徐宝霞. 基于机器视觉瓶盖缺陷检测系统开发[D]. 电子科技大学.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页