改进CNN&FCN的晶圆缺陷分割系统
随着半导体行业的快速发展,半导体晶圆的中值生产需求与日俱增,然而在生产过程中不可避免地会出现各种缺陷,滤波这直接影响了半导体芯片产品的图像质量。因此,中值基于机器视觉的滤波源码的费用晶圆表面检测方法成为研究热点。本文针对基于机器视觉的图像晶圆表面缺陷检测算法进行深入研究。
在实验中,中值我们采用三种方式对样本晶圆进行成像。滤波第一种方式使用工业显微相机,图像配备白色环光,中值成像分辨率高达×,滤波位深度为,图像论文没提供源码视野约为5.5mm ×3.1mm。中值第二种方式使用相机 MER--GM,滤波配有蓝色环光和2倍远心镜头,物距mm,成像分辨率×,位深度,野人串口助手源码视野宽4.4mm,精度为2jum。第三种方式采用相机 Manta G-B,白色环光LTS-RN-W,镜头TY-A,物距mm,mql4 源码成像分辨率×,位深度8,视野宽3mm,精度1 jum。
传统的基于CNN的分割方法在处理晶圆缺陷时存在存储开销大、效率低下、青柠导航源码像素块大小限制感受区域等问题。而全卷积网络(FCN)能够从抽象特征中恢复每个像素所属的类别,但在细节提取和空间一致性方面仍有不足。
本文提出改进DUC(dense upsampling convolution)和HDC(hybrid dilated convolution),通过学习一系列上采样滤波器一次性恢复label map的全部分辨率,解决双线性插值丢失信息的问题,实现端到端的分割。
系统整合包括源码、环境部署视频教程、数据集和自定义UI界面等内容。
参考文献包括关于机器视觉缺陷检测的研究综述、产品缺陷检测方法、基于深度学习的产品缺陷检测、基于改进的加权中值滤波与K-means聚类的织物缺陷检测、基于深度学习的子弹缺陷检测方法、机器视觉表面缺陷检测综述、基于图像处理的晶圆表面缺陷检测、非接触超声定位检测研究、基于深度学习的人脸识别方法研究等。
ç¨c++åå¾åè¯å«
æ个大è´æè·¯ï¼ é¦å 读ä¸ä¸ä¸¤å¼ å¾çï¼å°å¾åäºå¼åï¼æå ¶ææç¹ç»å离åºæ¥ï¼ç¶åå°å¾çç¨0å1两个å¼è¿è¡è¡¨ç¤ºï¼ç¶åå°å¾çæ¯ä¸ä¸ªåç´ ç¹è½¬æ¢ä¸ºæ°ç»æ°æ®ï¼ç¶åæ ¹æ®è§å®åæ å°æ°ç»éé¢å¤å®ï¼æåè¿åç»æãåºè¯¥ä¼ç¨ä¸âå¾çç°åº¦åç®æ³âï¼âå¾çä¸å¼æ»¤æ³¢ç®æ³âï¼çæ¯è¾éè¦çç®æ³ã ç¨C++çè¯ï¼åºè¯¥ç¨opencvå§ï¼ææ个åå¦å人è¸è¯å«çï¼å°±ç¨è¿ä¸ªç±»åºãç¨opencvè¯ä¸è¯å§ /projects/opencvlibrary
å¾åå¤çç¿»è¯
é对ç»åºçå¾åï¼moon.tifï¼æè èªè¡éæ©çç°åº¦å¾åï¼
1ï¼ï¼ç»å¾ååå«æ·»å é«æ¯åªå£°åæ¤çåªå£°ã
2ï¼ï¼å¯¹å åªå¾åçä¸å¿åºåï¼*ï¼è¿è¡ç©ºé´æ»¤æ³¢ï¼å°½æ大å¯è½æ¶é¤åªå£°ã
3ï¼ï¼å¯¹å åªå¾åçä¸å¿åºåï¼*ï¼è¿è¡é¢å滤波ï¼å°½æ大å¯è½æ¶é¤åªå£°ã
ææ¯æè¿°ï¼
对å¾åè¿è¡å é«æ¯åªå£°åæ¤çåªå£°å¤çï¼å¯¹å å«é«æ¯åªå£°åæ¤çåªå£°çå¾çè¿è¡å¤çï¼ä½¿å¤çåçå¾åæ¯åå¾åæ¸ æ°ã
æéåºç¨å°çææ¯ï¼å æ¬ï¼
a>对å¾çå åªå£°
b>éåä¸å¿åºå
c>对éåçåºåè¿è¡éåªå¤ç
d>éæ°çæå¾åã
e>æé é«æ¯ä½é滤波å¨æ¶ç¨å°äºé«æ¯å ¬å¼ï¼exp(-(u^2+v^2)/(2*(D0^2)))
ç»æ讨论ï¼
以ä¸æ¯å¯¹ä¸åç滤波å¨é对ä¸ååªç¹å¤ççæµè¯ç»æã
åèä¸é¢çè¯éªç»æï¼è¿è¡è®¨è®ºï¼
A()æ¯ä½¿ç¨fspecial('gaussianâ)å¹³æ»ç©ºå滤波å¤çææï¼ä¸è¿ææä¸æ¯æ好ï¼ç±äºæ大ç¨åº¦éåªï¼å¯¼è´å¾å模ç³ï¼
A()æ¯é¢å滤波å¤çåçç»æï¼å 为使ç¨äºé«æ¯ä½é滤波å¨ï¼æ以ä¼ææ¡é»çº¿ï¼å¤çä¸è¬ï¼
A()æ¯ä½¿ç¨medfilt2ï¼ï¼ç©ºåä¸å¼æ»¤æ³¢å¨ææï¼éåªææå¾ä¸éï¼å¾åä¹å¾æ¸ æ°ï¼
A() æ¯é¢å滤波å¤çåçç»æï¼åA()ï¼å 为使ç¨äºé«æ¯ä½é滤波å¨ï¼æ以ä¼ææ¡é»çº¿ï¼ææä¸è¬ã
è¯éªç»æ:
é«æ¯å åªåæ¤çå åªå¤çå¾åå«å¦ä¸:
å¦å¾:
å¾(A):åå¾
å¾(A):é«æ¯å åª
å¾(A):对å¾(A)è¿è¡ä¸å¿*空å滤波
å¾(A):对å¾(A)è¿è¡ä¸å¿*é¢å滤波
ï¼A0ï¼ ï¼Aï¼
ï¼Aï¼ (A)
å¦å¾:
å¾(A):åå¾
å¾(A):æ¤çå åª
å¾(A):对å¾(A)è¿è¡ä¸å¿*空å滤波
å¾(A):对å¾(A)è¿è¡ä¸å¿*é¢å滤波
(A) (A)
(A) (A)
éå½ï¼
æºä»£ç 1 ï¼å¯¹é«æ¯åªå£°çå¤ç
f=imread('moon.tif');
J=imnoise(f,'gaussian',0.,0.);%æ·»å é«æ¯åªå£°
%空å滤波
r=[ ];
c=[ ];
BW=roipoly(J,c,r);
h=fspecial('gaussian',[5 5]);
A=roifilt2(J,h,BW);
figure,imshow(A);
%é¢å滤波
f1=imcrop(fn,[ ]);
%æªå*大å°ççªå£å¾ç
f2=[ ];
%建ç«ä¸ä¸ªæ°çå¾å
f2=uint8(f2);
f2=padarray(f2,[ ],);
%å°æ°å»ºå¾åæå±å°*çé»è²å¾ç
f2=padarray(f2,[ ],0);
%å¨æ°å»ºå¾çå¨å´æ·»å ç½è²ä½¿ä¹å¤§å°ä¸ºmoonå¾çç大å°
fn=fn-f2;
%å¾å°ä¸å¿*åºåå 为é»è²çmoonå¾ç
PQ=paddedsize(size(f1));
[u,v]=dftuv(PQ(1),PQ(2));
D0=0.2*PQ(2);
hh=exp(-(u.^2+v.^2)/(2*(D0^2)));
%æé é«æ¯ä½é滤波å¨
h1=dftfilt(f1,hh);
A=padarray(h1,[ ],0);
%å°h1æå±å°moonå¾ç大å°
A=uint8(A)+fn;
%å¾å°ä¸å¿*åºåå¤çåçmoonå¾ç
figure,imshow(A);
æºä»£ç 2 ï¼å¯¹æ¤çåªå£°çå¤ç
f=imread('moon.tif');
fn=imnoise(f,'salt & pepper',0.);
%æ·»å æ¤çåªå£°
%空å滤波
f1=imcrop(fn,[ ]);
%æªå*大å°ççªå£å¾ç
f2=[ ];
%建ç«ä¸ä¸ªæ°çå¾å
f2=uint8(f2);
f2=padarray(f2,[ ],);
%å°æ°å»ºå¾åæå±å°*çé»è²å¾ç
f2=padarray(f2,[ ],0);
%å¨æ°å»ºå¾çå¨å´æ·»å ç½è²ä½¿ä¹å¤§å°ä¸ºmoonå¾çç大å°
fn=fn-f2;
%å¾å°ä¸å¿*åºåå 为é»è²çmoonå¾ç
h=medfilt2(f1,'symmetric');
%对f1è¿è¡ä¸å¼å¤ç
A=padarray(h,[ ],0);
%å°hæå±å°moonå¾ç大å°
A=A+fn;
%å¾å°ä¸å¿*åºåå¤çåçmoonå¾ç
figure,imshow(A);
%é¢å滤波
f1=imcrop(fn,[ ]);
%æªå*大å°ççªå£å¾ç
f2=[ ];
%建ç«ä¸ä¸ªæ°çå¾å
f2=uint8(f2);
f2=padarray(f2,[ ],);
%å°æ°å»ºå¾åæå±å°*çé»è²å¾ç
f2=padarray(f2,[ ],0);
%å¨æ°å»ºå¾çå¨å´æ·»å ç½è²ä½¿ä¹å¤§å°ä¸ºmoonå¾çç大å°
fn=fn-f2;
%å¾å°ä¸å¿*åºåå 为é»è²çmoonå¾ç
PQ=paddedsize(size(f1));
[u,v]=dftuv(PQ(1),PQ(2));
D0=0.1*PQ(2);
hh=exp(-(u.^2+v.^2)/(2*(D0^2)));%æé é«æ¯ä½é滤波å¨
h1=dftfilt(f1,hh);
A=padarray(h1,[ ],0);
%å°h1æå±å°moonå¾ç大å°
A=uint8(A)+fn;
%å¾å°ä¸å¿*åºåå¤çåçmoonå¾ç
figure,imshow(A);
2024-12-28 15:32
2024-12-28 15:22
2024-12-28 15:08
2024-12-28 14:53
2024-12-28 14:23