芯片缺陷检测基于matlab GUI DIP芯片缺陷检测系统含Matlab源码 2423期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了芯片缺陷检测基于matlab GUI DIP芯片缺陷检测系统含Matlab源码 2423期相关的知识,希望对你有一定的参考价值。

⛄一、 芯片缺陷检测简介

1 缺陷检测技术研究
1.1 图像边缘检测算法研究

图像的边缘是那些周围像素灰度有阶跃变化或屋顶变化的像素的集合。对于表贴芯片的缺陷检测而言, 芯片引脚的边缘部分包含着大量的缺陷特征参数信息。本文使用改进的Canny算子作为系统的图像边缘检测算法[5]。

改进的Canny算子具体实现过程如下:

(1) 使用二维高斯函数对图像进行平滑去噪处理, 将原始图像中存在的高频噪声滤除。

(2) 计算梯度的方向和幅值。在像素点的3×3邻域范围内计算x方向, y方向, 45°方向以及135°方向一阶偏导数有限差分来计算像素梯度的幅值。

(3) 对图像的梯度幅值进行非极大值抑制, 得到单像素宽度的边缘。

(4) 采用双阈值算法对图像边缘进行检测和连接。

1.2 缺陷特征参数计算
对表贴芯片的缺陷的研究发现, 实际上不管是缺脚、位置偏移抑或是共面度缺陷等都可以通过测量一个引脚的长、宽或者相互之间的间距等参数来实现合理的判断。

1.2.1 引脚数目的计算
由于芯片引脚的位置特点, 本文采用的是垂直灰度投影方法, 具体思想是将引脚边缘图像中每一列的像素点的灰度信息在水平位置进行累加, 最终得到引脚边缘图像在水平方向的灰度特征信息, 通过对这些灰度特征的测量便可以得到图像的相关参数信息。

这里以SOP芯片上排引脚边缘为例说明, 设定图像左下角为原点 (0, 0) , 图像上方起始为第一行。从原点 (0, 0) 处开始遍历搜索引脚的灰度投影图像, 具体步骤如下。

以左下角作为原点 (0, 0) , 从x=0开始, 检查该行是否存在灰度值为0的像素点, 如果存在, 标记p1=x;否则检查下一列, 直到找到p1为止。

然后从p1开始, 继续搜索检查该行是否存在灰度值为0的像素点, 如果不存在, 标记p2=x;否则检查下一列, 直到找到p2为止。

从p2开始扫描, 继续检查该行是否存在灰度值为0的像素点, 如果存在, 标记p3=x;否则检查下一列, 直到找到p3为止。此时统计p1和p2之间的距离a1即代表该引脚的宽度, p2和p3之间的距离b1即代表该相邻引脚之间的间距。依次类推, 统计像素点的跳变次数便可以得到引脚的数目。芯片上排引脚垂直灰度投影如图2所示。

1.2.2 引脚宽度和间距的计算
实际上, 在上一节求取芯片引脚数量时, 统计p1和p2之间的距离an即代表该引脚的宽度, p2和p3之间的距离bn即代表对应的相邻引脚之间的间距。

1.2.3 引脚长度计算
通过研究发现, 当对SOP芯片的引脚边缘图像进行二值化后, 近似矩形的引脚边缘图像的上下两边基本为标准的直线, 此时通过扫描计算上下两边之间的距离就可以得到引脚的长度。因此本文采用对SOP芯片的二值化后的引脚边缘图像进行扫描, 计算引脚上下两边的纵坐标之差, 求出单个引脚的长度L。

⛄二、部分源代码

function varargout = GUI(varargin)
% GUI MATLAB code for GUI.fig
% GUI, by itself, creates a new GUI or raises the existing
% singleton*.
%
% H = GUI returns the handle to a new GUI or the handle to
% the existing singleton*.
%
% GUI(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in GUI.M with the given input arguments.
%
% GUI(‘Property’,‘Value’,…) creates a new GUI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before GUI_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to GUI_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help GUI

% Last Modified by GUIDE v2.5 14-Feb-2023 20:01:47

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @GUI_OpeningFcn, …
‘gui_OutputFcn’, @GUI_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin1)
gui_State.gui_Callback = str2func(varargin1);
end

if nargout
[varargout1:nargout] = gui_mainfcn(gui_State, varargin:);
else
gui_mainfcn(gui_State, varargin:);
end
% End initialization code - DO NOT EDIT

% — Executes just before GUI is made visible.
function GUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to GUI (see VARARGIN)

% Choose default command line output for GUI
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes GUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = GUI_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout1 = handles.output;
%
% lg=imread(“logo.jpg”);%可在此自行更换LOGO
% axes(handles.axes8);
% imshow(lg);

function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of edit1 as text
% str2double(get(hObject,‘String’)) returns contents of edit1 as a double

% — Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

⛄三、运行结果


⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]王伟华,李朋轩.基于机器视觉的表贴芯片缺陷检测系统研究[J].无线互联科技. 2017(12)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于芯片缺陷检测基于matlab GUI DIP芯片缺陷检测系统含Matlab源码 2423期的主要内容,如果未能解决你的问题,请参考以下文章

基于pix2pix的数据增强方法在工业芯片表面缺陷检测中的应用

基于pix2pix的数据增强方法在工业芯片表面缺陷检测中的应用

合肥工业大学2021届物联网工程毕业设计《基于pix2pix的数据增强方法在工业芯片表面缺陷检测中的应用》

合肥工业大学2021届物联网工程毕业设计《基于pix2pix的数据增强方法在工业芯片表面缺陷检测中的应用》

毕设论文基于pix2pix的数据增强方法在工业芯片表面缺陷检测中的应用(合肥工业大学2021届物联网工程毕业论文)

毕设论文基于pix2pix的数据增强方法在工业芯片表面缺陷检测中的应用(合肥工业大学2021届物联网工程毕业论文)