1.改进CNN&FCN的图像晶圆缺陷分割系统
2.ç¨c++åå¾åè¯å«
3.å¾åå¤çç¿»è¯
改进CNN&FCN的晶圆缺陷分割系统
随着半导体行业的快速发展,半导体晶圆的中值生产需求与日俱增,然而在生产过程中不可避免地会出现各种缺陷,滤波这直接影响了半导体芯片产品的图像质量。因此,中值基于机器视觉的滤波高效阅读spring源码晶圆表面检测方法成为研究热点。本文针对基于机器视觉的图像晶圆表面缺陷检测算法进行深入研究。
在实验中,中值我们采用三种方式对样本晶圆进行成像。滤波第一种方式使用工业显微相机,图像配备白色环光,中值成像分辨率高达×,滤波位深度为,图像opencv源码视野约为5.5mm ×3.1mm。中值第二种方式使用相机 MER--GM,滤波配有蓝色环光和2倍远心镜头,物距mm,成像分辨率×,位深度,页游源码视野宽4.4mm,精度为2jum。第三种方式采用相机 Manta G-B,白色环光LTS-RN-W,镜头TY-A,物距mm,直播软件源码成像分辨率×,位深度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);