五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【缺陷識(shí)別】基于支持向量機(jī)算法實(shí)現(xiàn)金屬表面缺陷檢測(cè)

2021-08-05 00:06 作者:Matlab工程師  | 我要投稿

一、簡(jiǎn)介

1.1題目內(nèi)容
金屬板廣泛應(yīng)用在工業(yè)生產(chǎn)與生產(chǎn)生活的各方面。由于金屬板制造過程涉及到的設(shè)備、工藝等多因素的影響,金屬板表面容易出現(xiàn)種類較多、形態(tài)各異的缺陷,這些缺陷對(duì)金屬板的耐磨性、抗腐蝕性、電磁特性及美觀性都會(huì)造成不同程度的影響,最終影響金屬板的電磁特性和涂鍍效果。因此對(duì)于生產(chǎn)金屬板的企業(yè)來說,表面缺陷檢測(cè)是必不可少的一個(gè)工序,一方面可以通過表面缺陷檢測(cè)及時(shí)檢測(cè)到缺陷產(chǎn)品,保證所產(chǎn)金屬板的質(zhì)量,維護(hù)企業(yè)的信譽(yù),另一方面也可以通過分析檢測(cè)結(jié)果及時(shí)發(fā)現(xiàn)生產(chǎn)過程中存在的問題,并及時(shí)解決[1]。我們將依據(jù)網(wǎng)上提供的金屬表面缺陷照片數(shù)據(jù)集為圖片來源,構(gòu)造相應(yīng)的算法對(duì)金屬表面的缺陷進(jìn)行檢測(cè),識(shí)別,分類與大小測(cè)量。
1.2題目要求
金屬表面缺陷識(shí)別與分類有以下具體要求:
(1)依據(jù)金屬表面缺陷圖片的特性,對(duì)圖片進(jìn)行適當(dāng)?shù)幕叶茸儞Q(對(duì)比度增強(qiáng)與濾波處理);
(2)對(duì)金屬表面缺陷圖片進(jìn)行全局優(yōu)化閾值分割;
(3)提取二值圖片區(qū)域邊界坐標(biāo);
(4)對(duì)金屬缺陷進(jìn)行特征提取;
(5)對(duì)金屬缺陷進(jìn)行分類有監(jiān)督訓(xùn)練;
(6)完成對(duì)金屬缺陷類型的判斷與位置大小的計(jì)算;
(7)完成金屬缺陷檢測(cè)的GUI設(shè)計(jì)。
2.題目分析
我們查閱相關(guān)資料了解到常見的金屬表面缺陷主要有如下幾種,其分別是:細(xì)裂紋(crazing),表面雜質(zhì)(inclusion),斑點(diǎn)(patches),麻點(diǎn)(pitted surface),軋入氧化皮(rolled-in scale)與劃痕(scratches)。其分別對(duì)應(yīng)圖(a)-圖(f)。

在這里插入圖片描述


我們只考慮其中的三種類型:表面斑點(diǎn)(圖b),表面軋入氧化皮(圖(e))與表面劃痕(圖(f))。
圖像處理的主要步驟有:對(duì)比度增強(qiáng),濾波處理,閾值分割,形態(tài)學(xué)處理,特征提取,分類訓(xùn)練,缺陷位置大小計(jì)算及GUI集成操作顯示。
Step.1:對(duì)比度增強(qiáng)
由于照明方式等緣故,我們發(fā)現(xiàn)原始圖像中的金屬表面缺陷和整個(gè)金屬表面背景之間的灰度差較小,灰度范圍較小,因而其對(duì)比度較低,金屬缺陷并不明顯,這不利于圖像的后期處理,我們需要使用一些方法來增加圖像的對(duì)比度。常見的對(duì)比度增強(qiáng)方法有對(duì)數(shù)變換,冪律變換,灰度級(jí)分層,灰度歸一化,對(duì)比度拉伸,直方圖均衡化,直方圖規(guī)定化等??紤]到不同照片的背景光強(qiáng)并不相同,所以恒定參數(shù)的方法(如對(duì)數(shù)變換,冪律變換,灰度級(jí)分層,對(duì)比度拉伸)并不對(duì)所有圖片適用,故我們考慮使用灰度歸一化和直方圖均衡化。
Step.2:濾波處理
拍攝照片時(shí),在采集過程將會(huì)不可避免的引入各種噪聲,包括高斯噪聲和椒鹽噪聲等。同時(shí),金屬表面本身就具有一定的紋理。噪聲和紋理將一定程度上將金屬表面缺陷掩蓋,從而導(dǎo)致會(huì)提取中產(chǎn)生錯(cuò)誤,我們需要先對(duì)圖像進(jìn)行濾波處理以減少后續(xù)誤檢測(cè)。濾波方法主要分為空域?yàn)V波與頻域?yàn)V波,且二者的關(guān)系滿足卷積定理。其中空域?yàn)V波主要有均值濾波,中值濾波,高斯濾波與雙邊濾波;頻率濾波注意有傅里葉變換濾波,離散余弦變換濾波與小波變換濾波。這些算法雖然可以減少噪聲,但是也會(huì)濾除部分細(xì)節(jié)信息,導(dǎo)致某些缺陷細(xì)節(jié)的丟失。所有我們需要尋找新的濾波算法來實(shí)現(xiàn)。
Step.3:閾值分割
我們得到濾波圖像后,還需要進(jìn)行二值化閾值處理,從而恰當(dāng)提取出缺陷信息。傳統(tǒng)的閾值分割需要確定閾值,但對(duì)于不同復(fù)雜的金屬缺陷圖片,我們無法對(duì)所有的圖片使用相同的閾值,我們擬使用全局/局部優(yōu)化閾值分割,自動(dòng)確定最佳的閾值。
Step.4:形態(tài)學(xué)處理
受限于原圖質(zhì)量與圖像閾值分割算法,二值圖像中某些應(yīng)該連通的區(qū)域可能被閾值分割了,例如劃痕缺陷由于在某處灰度值較低而被錯(cuò)誤分割,導(dǎo)致一條劃痕可能會(huì)被分離為多個(gè)線段。故我們需要進(jìn)行閉運(yùn)算來連接臨近物體。同時(shí),圖片中某些缺陷較大(例如劃痕寬度較大),在后續(xù)邊緣檢測(cè)后,一條直線的兩個(gè)邊緣相距較大,直線提取算法會(huì)誤將同一根線作為兩根相互平行劃痕。故我們還需要對(duì)缺陷進(jìn)行細(xì)化操作。
Step.5: 特征提取
該部分可以使用兩種方法,一種是基于通用的特征提取算法(例如HOG, LBP, Haar算法等);另一種是基于我們所要檢測(cè)的特定金屬缺陷進(jìn)行特定的特征來直接對(duì)劃痕進(jìn)行分類。我將分別對(duì)這兩種方法進(jìn)行測(cè)試。
Step.6: 分類訓(xùn)練
如果我們使用了通用的特征提取算法,我們將要對(duì)其進(jìn)行分類監(jiān)督訓(xùn)練,常用的監(jiān)督學(xué)習(xí)算法包括:K臨近算法(KNN),樸素貝葉斯算法,決策樹算法,支持向量機(jī)(svm),邏輯回歸等。由于支持向量機(jī)具有優(yōu)秀的泛化能力,且在小樣本訓(xùn)練集能夠得到比其他算法好的多的效果[6],我們擬選擇支持向量機(jī)算法。
Step.7: 缺陷位置大小計(jì)算
我們提取到缺陷后,需要不同特征來表征缺陷的大小與位置。對(duì)與’軋入氧化皮’,我們使用’軋入氧化皮’個(gè)數(shù)來表征缺陷大小,用其質(zhì)心表征其位置;對(duì)于斑點(diǎn),我們使用斑點(diǎn)中的面積占整個(gè)圖片的比例來表征缺陷大小。對(duì)于劃痕,我們使用劃痕的兩個(gè)端點(diǎn)來表征缺陷位置,用劃痕長度標(biāo)準(zhǔn)缺陷大小。
Step.8: GUI設(shè)計(jì)
為了方便用戶使用,我們?cè)O(shè)計(jì)了GUI界面,能夠選擇電腦中的圖片,且能在點(diǎn)擊’圖像處理’后顯示提取到的缺陷信息(類型與位置大小),對(duì)于劃痕長度,我們能夠讓用戶輸入相機(jī)的焦距與物距長度,從而根據(jù)幾何光學(xué)知識(shí)計(jì)算出實(shí)際劃痕大小,并將每個(gè)劃痕的像面大小與實(shí)際大小顯示出來。同時(shí)GUI能夠讓用戶通過按鍵前往數(shù)據(jù)集的下載網(wǎng)站。

二、源代碼

//作品概述: 本代碼主要功能是實(shí)現(xiàn)金屬表面三種缺陷的檢測(cè)、分類及測(cè)量,并使用GUI進(jìn)行封裝以便于用戶使用。 該GUI可以導(dǎo)入電腦中的灰度圖片,之后進(jìn)行處理,能確定缺陷的種類,將檢測(cè)到的缺陷標(biāo)注在原圖上, 并能夠測(cè)量不同缺陷的大小(不同缺陷衡量標(biāo)準(zhǔn)不同)。 ------------------------------------------------------------------------------------------ //重要函數(shù)簡(jiǎn)介: #pushbutton1_Callback(hObject, eventdata,handles): 按鍵1(即'圖像處理'按鍵)的回調(diào)函數(shù),包含全部圖像處理算法 #pushbutton2_Callback(hObject, eventdata,handles): 按鍵2(即'圖片導(dǎo)入'按鍵)的回調(diào)函數(shù),主要是圖片的導(dǎo)入 #Ga(theta,num):圖像的Garbor卷積核的初始化 #filterimage(a6,Gaborfiter):Garbor濾波算法 #thres(image):灰度圖的最大熵閾值分割算法 #location():'軋入氧化皮'缺陷的定位及顯示 #houghtran():對(duì)于'劃痕'缺陷的霍夫圓檢測(cè) #lbp(varargin):網(wǎng)上的'局部二值模式'特征提取算法 #svm.m:獨(dú)立m文件,用于所有金屬缺陷照片的LBP特征提取和SVM(支持向量機(jī))監(jiān)督學(xué)習(xí)算法的訓(xùn)練與測(cè)試 -------------------------------------------------------------------------------------------- %} %% function varargout = app(varargin) %GUI頁面主函數(shù),MATLAB提供,無需修改 gui_Singleton = 1; gui_State = struct('gui_Name', ? ? ? mfilename, ... ? ? ? ? ? ? ? ? ? 'gui_Singleton', ?gui_Singleton, ... ? ? ? ? ? ? ? ? ? 'gui_OpeningFcn', @app_OpeningFcn, ... ? ? ? ? ? ? ? ? ? 'gui_OutputFcn', ?@app_OutputFcn, ... ? ? ? ? ? ? ? ? ? 'gui_LayoutFcn', ?[] , ... ? ? ? ? ? ? ? ? ? 'gui_Callback', ? []); if nargin && ischar(varargin{1}) ? gui_State.gui_Callback = str2func(varargin{1}); end if nargout ? ?[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else ? ?gui_mainfcn(gui_State, varargin{:}); end %% function app_OpeningFcn(hObject, eventdata, handles, varargin) % GUI初始化函數(shù) %修改設(shè)置背景 %modified by:Faust.Cao ha=axes('units','normalized','pos',[0 0 1 1]); uistack(ha,'down'); %設(shè)置程序的背景圖為back.jpg ii=imread('C:\Users\lenovo\Desktop\金屬表面缺陷分類與測(cè)量GUI系統(tǒng)\金屬表面缺陷分類與測(cè)量系統(tǒng)\back.jpg'); image(ii); colormap gray set(ha,'handlevisibility','off','visible','off'); handles.output = hObject; guidata(hObject, handles); %% function varargout = app_OutputFcn(hObject, eventdata, handles) % GUI輸出函數(shù),MATLAB提供,無需修改 varargout{1} = handles.output; %% function pushbutton1_Callback(hObject, eventdata, handles) % 按鍵1(即'圖像處理'按鍵)的回調(diào)函數(shù),包含全部圖像處理算法 global a5;%全局變量 global svmModel;%全局變量,從svm.m文件調(diào)用 axis off;%去除axes坐標(biāo),完整顯示圖片 a6=a5; a=str2double(get(handles.edit1,'string'));%讀取用戶輸入的焦距 b=str2double(get(handles.edit2,'string'));%讀取用戶輸入的物距 d=a/(b-a);%由高斯公式計(jì)算垂軸放大率 ma=max(max(a6)); mi=min(min(a6)); %對(duì)比度增強(qiáng),將灰度映射為[0,255] for ii=1:200 ? ?for jj=1:200 ? ? ? ?a6(ii,jj)=255*double(a6(ii,jj)-mi)./double(ma-mi); ? ?end end %圖像濾波 ab=filterimage(a6); %圖像最大熵閾值分割 ss=thres(ab); ab1=im2bw(ab,ss/255); [B,L]=bwboundaries(ab1);%二值圖邊緣坐標(biāo)提取 [x,y]=size(B); mm=0; %尋找最大提取區(qū)域 for i=1:x ? ?ll=length(B{i}); ? ?if ll>mm ? ? ?mm=ll; ? ?end end %判斷是否是'軋入氧化皮'缺陷 if mm<120 set(handles.text8,'string','缺陷是軋入氧化皮');%在text8文本框處輸出缺陷類型 [xc,yc]=findcenter(B,ab);%求各提取區(qū)域的質(zhì)心位置 axes(handles.axes2);%設(shè)置在axes2處顯示 imshow(a6); hold on; plot(yc+12,xc+12,'*');%加上濾波時(shí)失去的邊界 [dd,bb]=size(xc); tex=['一共有',num2str(dd),'個(gè)以上的點(diǎn)']; set(handles.text10,'string',tex);%在text10文本框處輸出缺陷信息 %不是'軋入氧化皮'缺陷,繼續(xù)判斷 else ?%原圖與二值圖進(jìn)行掩模處理,注意二者大小不同,故要先剔除原圖邊緣 ?a6(1:12,:)=[]; ?a6(177:188,:)=[]; ?a6(:,1:12)=[]; ?a6(:,177:188)=[]; ?mu1=uint8(ab1).*a6; ?mu2=uint8(1-ab1).*a6; ?t0=mu1(mu1~=0); ?m1=mean(t0); ?t1=mu2(mu2~=0); ?m2=mean(t1); ?%判斷缺陷是斑點(diǎn)還是劃痕:斑點(diǎn)比背景暗,劃痕比背景涼;將掩模與背景剩余均值比較 ?%也可以先提取圖像的LBP(局部二值模式)特征,再使用SVM訓(xùn)練的結(jié)果來進(jìn)行分類 ?if m1<m2+20 ? ?set(handles.text8,'string','缺陷是斑點(diǎn)'); ? ? ? ?all=bwarea(ab1);%計(jì)算斑點(diǎn)面積 ? ?pro=100*all/176/176;%計(jì)算所占百分比 ? ?tex=['斑點(diǎn)所占面積比為',num2str(pro),'%']; ? ?set(handles.text10,'string',tex); ? ?axes(handles.axes2); ? ?imshow(a6); ? ?hold on; ? ?%標(biāo)注出斑點(diǎn)邊界 ? ?for k = 1:length(B) ? ? ?boundary = B{k}; ? ? ?plot(boundary(:,2), boundary(:,1), 'r', 'LineWidth', 2) ? ?end ? ? ?%缺陷是劃痕 ?else ? ? ?a6=adapthisteq(a6);%自適應(yīng)直方圖均衡化再次加強(qiáng)對(duì)比度 ? ?ss=thres(a6); ? ?ab1=im2bw(a6,ss/255); ? ? ? ?ab1=imclose(ab1,strel('square',6));%對(duì)二值圖做閉運(yùn)算,將斷開部分連接 ? ?ab1=bwmorph(ab1,'thin',5);%對(duì)二值圖再進(jìn)行細(xì)化 ? ?ab1=edge(ab1,'Canny');%使用Canny算子邊緣提取 ? ?set(handles.text8,'string','缺陷是劃痕'); ? ?axes(handles.axes2); ? ?imshow(a6); ? ?hold on; ? ? ? ?%往下是劃痕提取的后續(xù)處理與顯示 ? ?[point,ang]=houghtran( ab1 );%對(duì)處理好的二值圖進(jìn)行霍夫直線檢測(cè) ? ?cen=zeros(length(ang),2); ? ?po=zeros(length(ang),4); ? ?an=zeros(length(ang),1); ? ?thm=mean(abs(ang)); ? %判斷劃痕是橫線還是豎線(直線與y軸夾角) ? ?if abs(thm)<45%豎線 ? ? ? ?thm=40; ? ?else%橫線 ? ? ? ?thm=60; ? ?end ? ? ? ?le=length(cen); ? ?%求取每根直線的中點(diǎn)位置 ? ?for kk=1:le ? ? ? ?cen(kk,1)=(point(kk,1)+point(kk,3))/2; ? ? ? ?cen(kk,2)=(point(kk,2)+point(kk,4))/2; ? ? ? ?point(kk,5)=cen(kk,1); ? ? ? ?point(kk,6)=cen(kk,2); ? ?end ? ?%按中點(diǎn)對(duì)直線進(jìn)行排序 ? ?if thm==40%如果是豎線,按橫坐標(biāo)排序 ? ? ? ?point=sortrows(point,5); ? ?end

三、運(yùn)行結(jié)果

在這里插入圖片描述


【缺陷識(shí)別】基于支持向量機(jī)算法實(shí)現(xiàn)金屬表面缺陷檢測(cè)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
达州市| 腾冲县| 阳东县| 新邵县| 长顺县| 简阳市| 荥阳市| 东宁县| 商河县| 历史| 安泽县| 河源市| 正阳县| 佳木斯市| 平舆县| 东源县| 松江区| 石柱| 旬邑县| 三都| 泸西县| 望奎县| 株洲县| 烟台市| 安化县| 白朗县| 靖边县| 金堂县| 宜昌市| 怀宁县| 南投市| 广水市| 宜州市| 青岛市| 鹤山市| 化州市| 剑川县| 南江县| 恩平市| 龙里县| 崇州市|