1. 程式人生 > >基於MATLAB金屬表面缺陷分類與測量的GUI設計

基於MATLAB金屬表面缺陷分類與測量的GUI設計

前言:
好久不搞影象處理了(一年了吧),終於大三有門影象處理的選修課有個課設,我就懷著強迫症的思想把它好好做了下(話說好久沒看其他專業課了。。。),其他兩名女生全程躺。。。演算法不好,腦子有點蠢熬夜太多了),這個是我的課設論文,所以沒有程式碼。。。可能文章佈局太亂,直接貼上的,不想弄了。

1題目內容及要求

1.1題目內容

金屬板廣泛應用在工業生產與生產生活的各方面。由於金屬板製造過程涉及到的裝置、工藝等多因素的影響,金屬板表面容易出現種類較多、形態各異的缺陷,這些缺陷對金屬板的耐磨性、抗腐蝕性、電磁特性及美觀性都會造成不同程度的影響,最終影響金屬板的電磁特性和塗鍍效果。因此對於生產金屬板的企業來說,表面缺陷檢測是必不可少的一個工序,一方面可以通過表面缺陷檢測及時檢測到缺陷產品,保證所產金屬板的質量,維護企業的信譽,另一方面也可以通過分析檢測結果及時發現生產過程中存在的問題,並及時解決[1]。我們將依據網上提供的金屬表面缺陷照片資料集為圖片來源,構造相應的演算法對金屬表面的缺陷進行檢測,識別,分類與大小測量。

1.2題目要求

金屬表面缺陷識別與分類有以下具體要求:
(1)依據金屬表面缺陷圖片的特性,對圖片進行適當的灰度變換(對比度增強與濾波處理)
(2)對金屬表面缺陷圖片進行全域性優化閾值分割;
(3)提取二值圖片區域邊界座標;
(4)對金屬缺陷進行特徵提取;
(5)對金屬缺陷進行分類有監督訓練;
(6)完成對金屬缺陷型別的判斷與位置大小的計算;
(7)完成金屬缺陷檢測的GUI設計。

2.題目分析

我們查閱相關資料瞭解到常見的金屬表面缺陷主要有如下幾種,其分別是:細裂紋(crazing),表面雜質(inclusion),斑點(patches),麻點(pitted surface),軋入氧化皮(rolled-in scale)與劃痕(scratches)。其分別對應圖(a)-圖(f)。

在這裡插入圖片描述

圖2-1 金屬表面缺陷分類

我們只考慮其中的三種類型:表面斑點(圖b),表面軋入氧化皮(圖(e))與表面劃痕(圖(f))。

影象處理的主要步驟有:對比度增強,濾波處理,閾值分割,形態學處理,特徵提取,分類訓練,缺陷位置大小計算及GUI整合操作顯示。

Step.1:對比度增強

由於照明方式等緣故,我們發現原始影象中的金屬表面缺陷和整個金屬表面背景之間的灰度差較小,灰度範圍較小,因而其對比度較低,金屬缺陷並不明顯,這不利於影象的後期處理,我們需要使用一些方法來增加影象的對比度。常見的對比度增強方法有對數變換,冪律變換,灰度級分層,灰度歸一化,對比度拉伸,直方圖均衡化,直方圖規定化等。考慮到不同照片的背景光強並不相同,所以恆定引數的方法(如對數變換,冪律變換,灰度級分層,對比度拉伸)並不對所有圖片適用,故我們考慮使用灰度歸一化和直方圖均衡化。

Step.2:濾波處理
拍攝照片時,在採集過程將會不可避免的引入各種噪聲,包括高斯噪聲和椒鹽噪聲等。同時,金屬表面本身就具有一定的紋理。噪聲和紋理將一定程度上將金屬表面缺陷掩蓋,從而導致會提取中產生錯誤,我們需要先對影象進行濾波處理以減少後續誤檢測。濾波方法主要分為空域濾波與頻域濾波,且二者的關係滿足卷積定理。其中空域濾波主要有均值濾波,中值濾波,高斯濾波與雙邊濾波;頻率濾波注意有傅立葉變換濾波,離散餘弦變換濾波與小波變換濾波。這些演算法雖然可以減少噪聲,但是也會濾除部分細節資訊,導致某些缺陷細節的丟失。所有我們需要尋找新的濾波演算法來實現。

Step.3:閾值分割

我們得到濾波影象後,還需要進行二值化閾值處理,從而恰當提取出缺陷資訊。傳統的閾值分割需要確定閾值,但對於不同複雜的金屬缺陷圖片,我們無法對所有的圖片使用相同的閾值,我們擬使用全域性/區域性優化閾值分割,自動確定最佳的閾值。

Step.4:形態學處理

受限於原圖質量與影象閾值分割演算法,二值影象中某些應該連通的區域可能被閾值分割了,例如劃痕缺陷由於在某處灰度值較低而被錯誤分割,導致一條劃痕可能會被分離為多個線段。故我們需要進行閉運算來連線臨近物體。同時,圖片中某些缺陷較大(例如劃痕寬度較大),在後續邊緣檢測後,一條直線的兩個邊緣相距較大,直線提取演算法會誤將同一根線作為兩根相互平行劃痕。故我們還需要對缺陷進行細化操作。

Step.5: 特徵提取

該部分可以使用兩種方法,一種是基於通用的特徵提取演算法(例如HOG, LBP, Haar演算法等);另一種是基於我們所要檢測的特定金屬缺陷進行特定的特徵來直接對劃痕進行分類。我將分別對這兩種方法進行測試。

Step.6: 分類訓練

如果我們使用了通用的特徵提取演算法,我們將要對其進行分類監督訓練,常用的監督學習演算法包括:K臨近演算法(KNN),樸素貝葉斯演算法,決策樹演算法,支援向量機(svm),邏輯迴歸等。由於支援向量機具有優秀的泛化能力,且在小樣本訓練集能夠得到比其他演算法好的多的效果[6],我們擬選擇支援向量機演算法。

Step.7: 缺陷位置大小計算

我們提取到缺陷後,需要不同特徵來表徵缺陷的大小與位置。對與’軋入氧化皮’,我們使用’軋入氧化皮’個數來表徵缺陷大小,用其質心表徵其位置;對於斑點,我們使用斑點中的面積佔整個圖片的比例來表徵缺陷大小。對於劃痕,我們使用劃痕的兩個端點來表徵缺陷位置,用劃痕長度標準缺陷大小。

Step.8: GUI設計

為了方便使用者使用,我們設計了GUI介面,能夠選擇電腦中的圖片,且能在點選’影象處理’後顯示提取到的缺陷資訊(型別與位置大小),對於劃痕長度,我們能夠讓使用者輸入相機的焦距與物距長度,從而根據幾何光學知識計算出實際劃痕大小,並將每個劃痕的像面大小與實際大小顯示出來。同時GUI能夠讓使用者通過按鍵前往資料集的下載網站。

3.解決問題的方法及原理

3.1 對比度增強

3.1.1灰度歸一化

灰度歸一化可使使一幅影象畫素的灰度值分佈在0~255之間,避免影象對比度不足(影象畫素亮度分佈不平衡)從而對後續處理帶來干擾。其基本原理如下所示。
在這裡插入圖片描述

2 直方圖均衡化

直方圖均衡化是影象處理領域中利用影象直方圖對對比度進行調整的方法。這種方法通常用來增加許多影象的區域性對比度,尤其是當影象的有用資料的對比度相當接近的時候。通過這種方法,亮度可以更好地在直方圖上分佈。這樣就可以用於增強區域性的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴充套件常用的亮度來實現這種功能。我們嘗試使用普通的直方圖均衡化演算法,發現其效果較差。其與原圖相比效果如下:
在這裡插入圖片描述

圖3-1-1 原始圖片 圖3-1-2 直方圖均衡化後的圖

可見,軋入氧化皮缺陷對比度提高的同時,其背景的對比度也被放大,導致背景中偏黑的部分變得與軋入氧化皮灰度相同,難以將其提取。傳統直方圖均衡化均衡整個圖片的直方圖分佈,這種均衡化對於灰度對比度較小的部分效果較好,但對於灰度對比度較大的部分效果較差。我們發現上圖中沒有缺陷部分(低對比度)的對比度得以提升,但是對於含有缺陷的部分(高對比度),其對比度增加並不明顯。故我們考慮使用自適應直方圖均衡化(AHE),它通過計算影象每一個顯著區域的直方圖,來重新分佈圖像的亮度值,因此它更適合於用來改善影象的區域性對比度,以及增強影象邊緣資訊,利於分割。但是,自適應直方圖均衡化(AHE)有一個缺陷,就是它在增強對比度的同時也會增強影象同質(均勻)區域的噪聲,以 AHE為基礎的對比度受限的自適應直方圖均衡化(CLAHE)可以有效降低這種噪聲的增強。CLAHE中,每一個畫素鄰域都要進行對比度限制[4]。其具體做法(見圖3-1-3)是對原始的直方圖分佈設定一個閾值,將大於閾值以上的部分剪下掉(鉗位),將剪下部分的先進行均衡化處理,再將剪下部分的均衡化後疊加到剩餘的直方圖分佈上(即給直方圖加了一個’直流偏置’),之後在對新的分佈進行均衡化處理,這樣就能減少噪聲的影響。由於原始影象被分割成若干個不重疊的子影象,經過上面過程處理後的各個子影象分解處將會出現明顯的灰度不連續現象(有明顯的分塊),為了消除這種不連續分塊現象,我們只對於每個區域中央部分的畫素進行均衡化處理,對於邊緣畫素,我們依據其四鄰域的畫素點灰度值對其進行雙線性插值以消除這種“分塊”效應[5]。同時這一過程減少了均衡化函式的計算次數,所以也提高了計算速度。
在這裡插入圖片描述

圖3-1-3 對比度受限自適應直方圖均衡化過程(CLAHE)

3.2 Gabor濾波

傳統的濾波演算法,例如均值濾波,高斯濾波等往往無法在特定的應用領域產生較好的效果,爭對特定的應用領域,我們需要查詢相關的文獻資料瞭解合適的特殊濾波演算法。我們通過查詢相關資料瞭解到在紋理提取領域常用的濾波器是Gabor濾波器。Gabor濾波主要基於小波分析理論,是由一個高斯函式與復指數函式相乘的母小波經過尺度變換與旋轉變換後得到的。研究發現,Gabor濾波器十分適合紋理表達和分離。在空間域中,一個二維Gabor濾波器是一個由正弦平面波調製的高斯核函式[9]。

其複數表示式為[10]:
在這裡插入圖片描述

其可以分為實部與虛部,其中實部可以對影象進行平滑濾波,虛部可以用來邊緣檢測,故我們使用該濾波卷積核能夠同時進行濾波平滑操作與紋理邊緣銳化,可謂一舉兩得。

其濾波後的影象為:
在這裡插入圖片描述

其中,x,y為畫素座標。
在這裡插入圖片描述
在這裡插入圖片描述

Gabor核中各引數意義如下:

1)入為調製正弦函式的波長,其決定了卷積核有效非零區域佔整個核的比例,不同可以提取影象不同頻率分量資訊,一般入>2。

下圖顯示相同卷積核不同入對應的時域卷積核影象:
在這裡插入圖片描述

圖3-2-1不同下的卷積核影象

2)θ體現了Gabor濾波器平行線方向,該引數將決定Gabor濾波的濾波方向選擇特性,即對不同方向上的銳化平滑效果並不相同。

下圖顯示相同卷積核不同θ對應的時域卷積核影象:
在這裡插入圖片描述

圖3-2-2不同下的卷積核影象

這兩個引數將決定Gabor濾波器的方向與頻率選擇特性。

其他引數還有:

3)相位偏移量,4)空間方向比例因子,5)頻頻寬度。

Gabor濾波器有如下優點:

(1)
對於光照變化不敏感,能夠提供對光照變化良好的適應性。所以不同金屬檢測硬體系統由於光源差異而導致的背景光強不等時,它都能夠有較好的濾波效果,具有較強的魯棒性。

(2)
與傳統的傅立葉變換相比,Gabor小波變換具有良好的時頻區域性化特性。即非常容易地調整Gabor濾波器的方向、基頻頻寬及中心頻率從而能夠最好的兼顧訊號在時空域和頻域中的分辨能力[12]。

(3)
Gabor濾波具有多解析度特性即變焦能力。即採用多通道濾波技術,將一組具有不同時頻域特性的Gabor小波應用於影象變換,每個通道都能夠得到輸入影象的某種區域性特性,這樣可以根據需要在不同粗細粒度上分析影象[17]。考慮到我們的不同的金屬缺陷大小差異較大(較小的軋入氧化皮,較大的劃痕),對應於影象中的不同的頻率分量,我們能夠通過改變調製正弦的波長來提取不同的缺陷。

(4)
Gabor濾波器可以通過改變來對不同方向進行濾波,從而能夠判斷其紋理是否具有方向各向異性,從而能夠據此在一定程度上判斷缺陷的種類(劃痕有方向各向異性,斑點與軋入氧化皮方向各向同性)。

(5)
Gabor濾波可以在濾波除噪的同時,增強邊緣以及峰、谷、脊輪廓等影象特徵(虛部的銳化),這相當於增強金屬表面缺陷資訊,它的小波特性說明了Gabor濾波結果是描述影象區域性灰度分佈的有力工具,因此,可以使用Gabor濾波來抽取影象的紋理資訊。

綜上所述,處理金屬表面缺陷紋理,Gabor濾波是一個很好的選擇,它的濾波特性與表面缺陷特性相匹配。故我們選擇Gabor運算元進行空域濾波。

3.3 閾值分割

閾值化分割是一種傳統的最常用的影象分割方法,因其實現簡單、計算量小、效能較穩定而成為影象分割中最基本和應用最廣泛的分割技術。為了能夠更好的提取出表面缺陷,恰當的閾值分割演算法至關重要,閾值分割常用的方式有全域性閾值法,區域性閾值法和多閾值分割法。考慮到我們要提取缺陷,我們只考慮單閾值分割演算法[8]。且我們的演算法能爭對不同影象有不同的閾值,所以我們只能使用動態變閾值演算法。我們考慮全域性閾值分割中的最大類間方差法(OTSU)和最大熵法,對於區域性閾值分割,我們考慮Niblack演算法。用缺陷影象實際測試三者的效果並比較,選擇效果最好的一種。

3.3.1 最大類間方差法(OTSU)

最大類間方差法按影象的灰度特性,將影象分成背景和目標兩部分。背景和目標之間的類間方差越大,說明構成影象的兩部分的差別越大,當部分目標錯分為背景或部分背景錯分為目標都會導致兩部分差別變小。因此,類間方差最大的分割意味著錯分概率最小。其主要演算法如下:

將閾值從0開始一直逐次增大到255(每次加1),按閾值將影象分為背景(0)與前景(1)。

對於每個閾值,進行如下計算:

  1. 計算背景和前景畫素點各佔總畫素點的比例;

  2. 計算背景和前景畫素點的灰度均值;

  3. 計算全部畫素點的灰度均值;

  4. 計算此時二值圖的類間方差:。

選擇使類間方差最大的閾值,此時的即位所求最佳閾值在這裡插入圖片描述

我們通過不斷迭代遍歷,以找到該值。

3.3.2 最大熵法

最大熵演算法是另一種基於影象統計資訊的全域性閾值分割演算法,其原理基於統計中的資訊熵,資訊理論告訴我們一個系統不確定度(資訊量越大)越大,其熵越大[13]。故我們使用最大熵法保證影象類間熵最大來保證二值圖包含儘量多的前景資訊(缺陷)。我們考慮其中的KSW演算法[9],其總體思路仍是遍歷閾值:

將閾值從0開始一直逐次增大到255(每次加1),按閾值將影象分為背景(0)與前景(1)。

對於每個閾值,進行如下計算:

  1. 計算背景和前景中各灰度值在背景和前景中概率分佈 ;

  2. 計算背景和前景中的;

其中為背景中的累計分佈。;

  1. 計算背景和前景的熵在這裡插入圖片描述

  2. 計算該二值影象的類間熵H=H1+H2。

選擇使類間熵最大的閾值,此時的即位所求最佳閾值。

我們通過不斷迭代遍歷,以找到該值。

3.3.3 Niblack法

NiBlack法是一種簡單有效的區域性動態閾值演算法,這種演算法的基本思想是,對影象中的每一個點,在它的鄰域內,計算鄰域裡畫素點的均值和方差,然後用下式閾值進行二值化[7]:
在這裡插入圖片描述

其中,對於每一個畫素點,為該點的閾值。為該點鄰域內畫素點的均值。為該點的 r×r 領域內畫素點的標準方差; k 為修正係數。此方法的優點是能夠很好的針對於單個畫素進行處理,缺點是處理速度慢,而且沒有考慮到邊界問題,且需要預設調節引數。

3.4 形態學處理

3.4.1 閉運算

對於二值化後金屬表面缺陷,我們發現一些本應該連通的區域(例如因劃痕在某些地方較淺)在二值化過後存在一些間隙[7],我們需要進行閉運算(即先進行膨脹,再進行腐蝕操作)來彌合小狹縫並保證總體形狀不變,以避免同一個劃痕因為中間有部分斷裂而導致被檢測為多個分開的獨立的劃痕。

3.4.2 細化操作

由於有的金屬表面劃痕較寬,導致經過閉運算後的劃痕還有一定的寬度,這將導致之後對缺陷進行邊緣提取時,劃痕的左右(上下)邊緣之間的距離較大,在後續進行檢測時會被誤檢測為兩個獨立的劃痕,即導致左右邊緣距離和兩個劃痕間距相近,導致我們無法判斷劃痕總共有2條粗劃痕還是有3個劃痕(1個粗劃痕,2個細劃痕),還是4個劃痕(4個細劃痕)。同樣可能把兩個獨立的細劃痕判為一個粗劃痕。如下圖劃痕所示:
在這裡插入圖片描述

圖3-4-1 可能將粗劃痕判為幾個細劃痕 圖3-4-2可能將兩個細劃痕判為一個粗劃痕

故我們需要對劃痕進行細化處理,將劃痕變窄,同時,又要保證細化作用過度導致細劃痕的丟失。

3.5 特徵提取

在此,我們使用兩種截然不同的思路。一種思路是基於通用的特徵提取演算法提取缺陷的特徵,之後對這些缺陷特徵進行監督學習訓練,儲存訓練的結果,當輸入測試影象時,計算其特徵後放入已經訓練完成的分類器中直接缺陷分類。該方案較為複雜,涉及一些高階演算法。另一種是基於已給圖片集,發現不同缺陷的顯著可以用來區分的特徵差異,直接根據此特徵進行簡單判斷分類,該方法簡單可行,且精度也不低。下面我們將分述這兩種方法。

3.5.1 簡單特徵與識別

我們要測試的缺陷分為三種:軋入氧化皮,斑點與劃痕。其三者直觀比較可見圖2-1。我們通過觀察總結髮現三種的直觀差異如下:

首先是軋入氧化皮與斑點和劃痕不同。我們發現,單個軋入氧化皮是一個小斑點,其所佔大小都很小,而斑點和劃痕的都較大。故我們可以提取二值化的缺陷的邊界,計算每個邊界集合的大小,統計其中邊界最長的那個,看其是否達到閾值,若大於閾值,我們認為其屬於斑點或劃痕,若小於閾值則認為其為軋入氧化皮。這樣,我們就可以識別出軋入氧化皮。

接著,是斑點與劃痕的不同,我們發現,斑點相比於背景偏黑,其平均灰度值小於影象背景灰度均值;而劃痕恰恰相反,其相比於背景偏亮,其平均灰度值大於影象背景灰度均值。故我們可以進行如下操作:

將二值圖與原灰度圖進行掩模操作,提取中其中非零畫素的灰度均值,則該均值即為缺陷的均值;之後將二值圖取反,再次重複上述掩模求均值過程即可得到背景的灰度均值,將二者進行大小比較即可確定缺陷是斑點還是劃痕。

其流程圖如下:
在這裡插入圖片描述

圖3-5-1簡單缺陷分類演算法

3.5.2通用特徵提取演算法

另一種思路是採用通用的特徵提取演算法,提取影象的深層資訊。該方法能夠更適用於一般的金屬缺陷,但是演算法較為複雜。常見的特徵提取演算法包括HOG,LBP與Haar等。我們通過查閱相關文獻,瞭解它一種用來描述影象區域性紋理特徵的運算元,且其改進的LBP演算法具有較好的旋轉不變性與灰度不變性。其中旋轉不變性說明即使不同劃痕或斑點的方向不同,其提取的特徵仍是相近的(不受方向的影響),這可以提高後續的分類精度;而灰度不變性則可以保證不同光源硬體條件下其缺陷特徵是相近的,因而其抗環境干擾性較強,應用範圍更廣。下面簡述其原理:

傳統的LBP演算法是使用一個正方形區域,通過將鄰域畫素的灰度值與中間元素進行比較大小若大於中心灰度,則將該鄰域畫素置1,若小於中心灰度,則將該鄰域畫素置0。最後將這幾個鄰域元素從左上角順時針排列構成一個二進位制序列,再將該二進位制轉化為十進位制,則該十進位制數即為該區域類的特徵,對整幅影象進行該操作,左後得到一個序列的數,則該序列即為該影象的LBP特徵向量。

基本的 LBP運算元的最大缺陷在於它只覆蓋了一個固定半徑範圍內的小區域,這顯然不能滿足不同尺寸和頻率紋理的需要。為了適應不同尺度的紋理特徵,並達到灰度和旋轉不變性的要求,我們參考了改良的LBP演算法[15]。

改良的LBP演算法使用圓域代替方形區域,且其半徑可變,我們也可以設定在圓域邊緣上的點的個數,這些邊緣點均勻分佈在圓上,圖3-5-2顯示不同半徑與邊緣點個數的圓域:

在這裡插入圖片描述

圖3-5-2不同圓域與邊緣點的LBP運算元[15]

我們發現選擇圓域將會導致部分邊緣點沒有恰好位於畫素中心處,則這些點的灰度值可以通過與其相接四個畫素點進行雙線性插值獲得其灰度值。我們同時選擇三種具有不同半徑與邊緣點個數的圓域,從而實現了不同尺度的特徵提取。分別得到三組灰度值序列,之後我們對這三組序列進行一維離散快速傅立葉變換,得到各自的頻譜圖,這個頻譜與原灰度序列互為傅立葉變換關係,我們考慮影象發生一定的偏轉,這意味著灰度的序列發生了向左/右平移,由傅立葉變換的性質可知:
在這裡插入圖片描述

即灰度序列的移為操作並不會影響其對應的頻譜分佈(取複數的模),應而具有了旋轉方向不變性。影象中的噪聲在影象的頻譜中一般是高頻分量,我們在提取影象特徵時並不需要這些高頻資訊,故我們讓頻率序列通過一個低通濾波器濾去噪聲。最後,我們按圓域半徑大小按次序將三個頻率序列拼接在一起即得到了該圓域的特徵,我們對影象其他地方做同樣的處理即可得到整個影象的特徵資訊[14]。圖3-2-3顯示了上述過程。該方法並不完全是LBP演算法,而是在其基礎上的改進。
在這裡插入圖片描述

圖3-5-3改進的LBP演算法原理說明圖[14]

3.5 監督學習與分類

監督學習是在使用通用特徵提取演算法後進行了,我們將提取到的每一幅影象的特徵即其標籤放入分類器中進行訓練,之後用新的影象輸入測試其正確率用以驗證其訓練可靠性。我們使用支援向量機這個適合小樣本進行訓練的監督學習演算法。支援向量機(SVM)為機器學習和多維機構風險最小化理論原則上建立的一種新型專門研究小樣本分類的機器學習理論。該方法在解決非線性小樣本的高維識別問題時,具有很強的適應性,並且能推廣使用到其他數學模型中[16]。

支援向量機((SVM)是在結構風險最小化理論與統計學習理論原則上提出的。支援向量機((SVM)在有限樣本的基礎上,尋找函式複雜程度和分類效能的最佳平衡,以求最佳的分類效能,其主要優點有:

1、支援向量機是針對有限樣本統計設計的,在有限資訊的情況下,具有很好的分類效能。

2、支援向量機演算法引入核函式,能有效解決非線性分類中的維度問題。

3、支援向量機將分類問題轉化為凸二次函式最值問題,所以,就理論上說,模型最終可得到全域性最優解。

下面簡述其原理:

一般SVM有下面三種:

  1. 硬間隔支援向量機(線性可分支援向量機):當訓練資料線性可分時,可通過硬間隔最大化學得一個線性可分支援向量機。

  2. 軟間隔支援向量機:當訓練資料近似線性可分時,可通過軟間隔最大化學得一個線性支援向量機。

  3. 非線性支援向量機:當訓練資料線性不可分時,可通過核方法以及軟間隔最大化學得一個非線性支援向量機。

給定訓練樣本集
在這裡插入圖片描述
,i表示第i個樣本,n表示樣本容量,xi為第i張圖的特徵向量,yi是第i張圖的標籤。分類學習最基本的想法就是基於訓練集D在特徵空間中找到一個最佳劃分超平面將正負樣本分開,而SVM演算法解決的就是如何找到最佳超平面的問題。

超平面可通過如下的線性方程來描述:
在這裡插入圖片描述

我們要保證不同分類的兩組資料被該超平面完全分開,且儘量保證資料儘量遠離該超平面以保證分類器最大的魯棒性,我們需要尋找引數的最優值使得特徵向量到超平面的距離儘量大,其因滿足如下的約束條件:
在這裡插入圖片描述

經過分析我們得到其最大值的條件是:求解在這裡插入圖片描述的最大值對應的。

我們可以通過拉格朗日對偶將該問題簡化為求解如下的約束最值問題:
在這裡插入圖片描述

求解出後即可求出對應的。

之後使用SVM演算法所滿足的Karush-Kuhn-Tucker(KKT)條件將其轉化為二次規劃問題,在使用一些高效演算法(例如Sequential Minimal Optimization(SMO)演算法)進行最優化問題求解[18]。

以上方法僅僅適用於第一種SVM演算法,即硬間隔支援向量機(線性可分支援向量機)。

在現實任務中很難找到一個超平面將不同類別的樣本完全劃分開,即很難找到合適的核函式使得訓練樣本在特徵空間中線性可分。退一步說,即使找到了一個可以使訓練集在特徵空間中完全分開的核函式,也很難確定這個線性可分的結果是不是由於過擬合導致的。解決該問題的辦法是在一定程度上執行SVM在一些樣本上出錯,為此引入了“軟間隔”SVM演算法與非線性SVM,限於篇幅,我們不再介紹。

3.6 缺陷位置大小計算

3.6.1軋入氧化皮位置大小計算

考慮到軋入氧化皮的大小較小且數量較多,其邊界難以嚴格規定,我們不計算其大小,而是統計檢測到的個數。我們提取二值化後的影象的邊界資訊,統計邊界元胞陣列的元胞個數來獲得軋入氧化皮的個數,由於必然存在一些缺陷無法被檢測到,我們用’至少’來做保守估計。

對於軋入氧化皮的位置計算,我們對每個提取到的邊界與原影象進行掩模後使用質心計算公式計算其對應的灰度質心中心作為其中心。公式如下:
在這裡插入圖片描述
3.6.2斑點位置大小計算

對於斑點,我們只計算斑點的面積佔整個金屬表面面積的比值,我們對而主題中的為1的部分計算其總的像素面積處於圖片的縱的畫素值即為斑點所佔比。

3.6.3劃痕位置大小計算

對於劃痕,考慮到它是直線,我們需要使用直線檢測演算法提取其中的直線成分。我們使用傳統的霍夫變換直線檢測演算法,其大體思路如下:

對於過的直線系而言,其可以在XOY座標系中表示為y=ax+b:,如果其中過各點的直線系中有一條引數均相等的直線,則可以認為這幾個點共線,即檢測到了直線。但是使用直角座標系的引數將可能出現斜率無窮大的情況,因而無法檢測豎直線。我們可以把直線放在極座標系中考慮,則過的直線系表示式為[3]:
在這裡插入圖片描述

如下圖3-6-1所示:
在這裡插入圖片描述

圖3-6-1直線在極座標中的表示 圖3-6-2,過不同點的直線系的曲線

同樣的,如果其中過各點的直線系中有一條引數均相等的直線,則可以認為這幾個點共線,即檢測到了直線。使用極座標系能對所有斜率的直線適用。我們畫出座標圖,如圖3-6-2所示,可以看出三個不同點對應的直線系曲線在某點處交於同一點,即這三個點是共線的,若直線系對應的曲線不相交,則認為這些點不共線,即不構成直線。

我們對平面進行遍歷,找到所有曲線有交點的位置,每一個交點是一條直線,交點的座標即為該直線的極座標引數。

由於劃痕並不是嚴格直線,所以一跟直線將被霍夫直線檢測分為若干個沒有完全覆蓋劃痕的短線,這些短線會有一定的重合與夾角,如圖3-6-3和圖3-6-4所示:
在這裡插入圖片描述

圖3-6-3豎直線的hough直線檢測效果 圖3-6-4水平線的hough直線檢測效果

我們需要後續處理來減少直線數,並提取出當中的劃痕。

我們的後續演算法設計如下:

  1. 首先我們計算每個檢測出的直線長度,剔除那些過短的線(小於閾值),這些線往往是誤檢;

  2. 計算所有檢測直線與y軸的夾角,若夾角小於某個閾值,則認為是豎線,否則是橫線;

  3. 計算每根線的中點的座標;

  4. 如果直線是豎線,將直線按中點X座標有小到大順序排序。如果直線是橫線,將直線按中點Y座標有小到大順序排序;

  5. 將檢測到的第一根線作為直線累計初始狀態;

  6. 對所有直線進行遍歷,對於豎線,判斷相鄰兩直線的X座標之差是否小於某閾值,若小於,則認為該直線與之前的累計直線屬於同一根劃痕,並繼續進行累加;若X之差大於閾值,則認為該直線與下一個直線分屬於不同的劃痕,則計算前面類間直線端點座標的最大值與最小值作為劃痕的端點,求其長度並畫圖,同時將累計的直線清0,重複上述操作。對於橫線,判斷標準變為判斷相鄰兩直線Y座標之差是否小於閾值,其他操作同豎線;

  7. 將剩餘的線統一當作同一個劃痕,按步驟5)進行。

其演算法流程圖入圖3-6-5所示:
在這裡插入圖片描述

圖3-6-5 演算法流程圖

4.採用的方案及結果

4.1 對比度增強

4.1.1灰度歸一化

其結果如下:

在這裡插入圖片描述

圖4-1-1原始影象 圖4-1-2灰度歸一化的圖片

在兩圖對比中可以看出,原始影象的對比度較低。經過灰度拉伸後,影象的灰度級分佈更廣,更好地提高了手背與背景的對比度。

4.1.2 對比度受限的自適應直方圖均衡化(CLAHE)

對於劃痕缺陷,我們發現其即使經過了灰度歸一化操作,其對比度仍然不是太高,故我們還需要爭對劃痕再進行一次對比度受限的自適應直方圖均衡化(常規的直方圖均衡化效果較差,見上文分析)。
在這裡插入圖片描述

圖4-1-3僅經過灰度歸一化操作影象 圖4-1-4再經過CLAHE的影象

可見,在經過CLAHE後,其對比度更加突出,更易於後期閾值分割。

4.2 Gabor濾波

我們分別使用在這裡插入圖片描述對三種缺陷進行Gabor濾波,其他引數不變為:
在這裡插入圖片描述

,卷積核大小25*25。

其各自效果如下:

對於劃痕圖4-2-5:

在這裡插入圖片描述

圖4-2-5 的不同卷積核對劃痕的濾波

可見只有時濾波後才能顯示出有劃痕,可見Gabor濾波確實具有方向選擇性。且當濾波方向與劃痕方向一致時,會在劃痕邊界產生較大的波紋振盪,導致劃痕似乎加寬了,故我們對於劃痕不進行Gabor濾波,僅對軋入氧化皮與斑點進行Gabor濾波。

對於對軋入氧化皮與斑點進行Gabor濾波,也會發現其背景處產生沿濾波器方向的較大振盪,為了減少振盪,我們用上述四個角度的濾波器分別濾波,將在這裡插入圖片描述的濾波器相加與在這裡插入圖片描述濾波器的相加做差,則可以抵消Gabor濾波器因方向選擇性導致的紋波,同時濾除噪聲並增強缺陷邊界。其Gabor濾波器的空域三維圖如圖4-2-6所示:
在這裡插入圖片描述

圖4-2-6 Gabor濾波器的空域三維圖

使用上述操作後軋入氧化皮與斑點與原圖比較如圖4-2-7與圖4-2-8所示:
在這裡插入圖片描述

圖4-2-7 斑點原圖及其Gabor濾波後的影象

圖4-2-8 軋入氧化皮原圖及其Gabor濾波後的影象

可見,Gabor雖然讓圖片看上去更模糊了,但是卻保留了增強邊緣以及峰、谷、脊輪廓等影象特徵,同時增加了缺陷與背景的對比度與邊緣輪廓資訊。

4.3閾值分割

我們對缺陷分別使用OSTU(最大類間方差法),最大熵法與Niblack法,比較其差異:

圖4-3-1 顯示了三種閾值分割演算法的閾值分割效果:(原始圖片見圖4-2-8)

在這裡插入圖片描述

圖4-4-1三種閾值分割演算法對同一張影象的效果

可以看到,OSTU(最大類間方差法)能更完整的顯現一些缺陷,但是也會引入一些影象的噪聲,最大熵法與Niblack法的效果相近,但考慮到最大熵法作為全域性閾值分割其計算量遠小於Niblack法,綜上,我們選擇最大熵法。

4.4形態學處理

4.4.1閉運算

對於劃痕缺陷,經過閾值分割的劃痕會在中間出現一些間隙,這對於後期的直線檢測是不利的,我們對其先進行閉運算消除中間的小間隙,我們選擇5*5大小的square結構元素。其效果如圖4-4-1:
在這裡插入圖片描述

圖4-4-1原始二值圖與經過閉運算後的二值圖

可見左邊那條原先被分為三段的劃痕經過閉運算後中間的狹縫被填補了,劃痕也變得連續了。

4.4.2細化操作

前文已經闡述對於過粗的劃痕,不使用細化所產生的不良影響,我們使用MATLAB自帶的形態學處理函式’bwmorph’函式,引數選擇為’thin’,對其進行5次重複操作。其效果如圖4-4-2所示:

在這裡插入圖片描述

圖4-4-2未細化劃痕的二值圖與細化後的劃痕二值圖

4.5特徵提取

若我們使用第一種方法,即提取缺陷的簡單特徵,我們首先提取二值圖的輪廓,看輪廓大小是否大於閾值,若小於則認為是較小的軋入氧化皮缺陷,若大於則認為是斑點或劃痕。之後我們將得到其掩模影象,從而計算其中的非零元素的均值,再對背景進行掩模,再次計算均值,將二者比較即可判斷是斑點還是劃痕。

若我們使用第二種方法,即提取缺陷的深度特徵資訊,我們對檢測到缺陷的位置求其最大外界矩形,將該矩形內部灰度影象構成新影象,求其該影象的特徵並變為一個向量,最後我們得到一個大小為600*18的矩陣(600張圖片)。該矩陣將連通其標籤放入分類器中進行訓練。

4.6監督學習與分類

我們使用支援向量機對4.5中得到的特徵向量與標籤進行分類訓練,取其中540張圖用於訓練,將剩餘的60張圖用於測試,經過測試,我們發現其正確率為93.3%,正確率較高。

4.7缺陷大小位置計算

4.7.1軋入氧化皮缺陷大小位置計算

對於軋入氧化皮,我們按前述方法對其進行位置定位並用藍色星號標註其質心,其結果如圖4-7-1所示:

在這裡插入圖片描述

共統計到16個軋入氧化皮缺陷

圖4-7-1 軋入氧化皮檢測結果

4.7.2斑點缺陷大小位置計算

對於斑點,我們按前述方法對其大小進行計算並用紅圈標註其邊界,其結果如圖4-7-2所示:

在這裡插入圖片描述

斑點所佔面積為5.13%

圖4-7-2 斑點檢測結果

4.7.3劃痕缺陷大小位置計算

對於劃痕,我們使用上述演算法得到了各個劃痕的起始點座標與長度,並用叉號標出兩端點,用線標出該直線,其結果如圖4-7-3所示:(假設焦距2cm,物距50cm)

在這裡插入圖片描述

一共有四根劃痕

第一條:

80畫素,實際3.84cm

第二條:

172畫素,實際8.26cm

第三條:

169畫素,實際8.09cm

第四條:

173畫素,實際8.31cm

圖4-7-3 劃痕檢測結果

4.8 GUI設計

為了方便操作與展示,我們開發了金屬缺陷分類與測量頁面,其包括兩個影象顯示視窗分別顯示原始圖線與標註檢測到的缺陷位置大小的圖片,2個按鍵分別用於從檔案中匯入灰度圖與進行影象處理,兩個使用者輸入視窗分別讓使用者輸入相機的焦距與物距以計算出實際劃痕大小,其計算方法如下:

由幾何光學(老本行,嘿嘿嘿)高斯公式:在這裡插入圖片描述,可以計算出相距,再通過垂軸放大率公式:在這裡插入圖片描述即可再通過算出實際物長,當然不考慮什麼大視場導致的軸外點場曲和畸變了,不後續加修正演算法了。

還有一個按鍵用於進入資料集下載地址進行影象下載。顯示包括兩個文字框用以顯示缺陷型別與大小(個數),還有一個表格用以顯示各個劃痕的像的大小和實際大小。

對於軋入氧化皮,斑點和劃痕的測試,頁面顯示如圖4-8-1,4-8-2與4-8-3所示:
在這裡插入圖片描述

圖4-8-1 軋入氧化皮缺陷

在這裡插入圖片描述

圖4-8-2 斑點缺陷
在這裡插入圖片描述

圖4-8-3 劃痕缺陷

5. 結果討論及總結

本方案能檢測金屬缺陷中比較典型的三種缺陷,對其進行分類,並爭對不同缺陷進行位置與大小的計算與顯示,使用了一些能夠專門處理紋理的演算法,例如Gabor濾波和LBP演算法等,總體分類與測量準確性較高,同時開發出了GUI頁面方便使用者操作與展示。

但本文仍存在以下不足之處:

  1. 對於劃痕的檢測,只能檢測沿特定方向的劃痕(橫向與縱向的)。

  2. 在一幅圖片中,若其中含有多種缺陷,我們只能檢測出其中一種缺陷,無法同時檢測多種缺陷。

  3. 經測試發現,分類時偶爾會出現錯誤,如下幾種情況:將較大的軋入氧化皮檢測為斑點,將較細劃痕檢測為軋入氧化皮。這是由於我們演算法中包含一些自己設定的恆定引數,這些引數面對不同影象時往往會失效。

  4. 存在一些缺陷的誤檢與漏檢,即無法完全分離噪聲與小的缺陷。

參考文獻

[1]張劉贇.基於機器視覺的手機金屬板表面缺陷檢測技術研究[D].浙江大學,2018

[2]範偉.基於機器視覺的汽車車身零部件表面劃痕檢測的研究[D].南京理工大學,2016.

[3]王旭.直線提取演算法研究[D].國防科學技術大學,2013.

[4]宋迪.基於機器視覺的手機隔板劃痕檢測研究[D].湘潭大學,2014.

[5]喬爽.複雜背景下光滑物體表面的缺陷檢測技術研究[D].華中科技大學,2016.

[6]李玉寶. 基於機器視覺的表面缺陷檢測演算法研究[D].中南大學,2013.

[7]李克斌,餘厚雲,周申江.基於形態學特徵的機械零件表面劃痕檢測[J].光學學報,2018,38(08):260-266.

[8]郭皓然,邵偉,周阿維,楊宇祥,劉凱斌.全域性閾值自適應的高亮金屬表面缺陷識別新方法[J].儀器儀表學報,2017,38(11):2797-2804.

[9]湯曉慶,黃開興,秦元慶,周純傑.基於Gabor濾波器和HOG特徵的織物疵點檢測[J].計算機測量與控制,2018,26(09):39-42+47.

[10]徐建亮,毛建輝,方曉汾.基於優化Gabor濾波器的鑄壞表面缺陷檢測應用研究[J].表面技術,2016,45(11):202-209.

[11]李孟歆,賈燕雯,姜佳楠.基於灰度-梯度二維最大熵閾值法的赤足跡輪廓提取[J].電子技術與軟體工程,2016(16):96-97.

[12] Weldon,Thomas & E. Higgins, William. (1999). Designing multiple Gabor filters for
multitexture image segmentation. Optical Engineering - OPT ENG. 38. 1478-1489.

[13] Zheng,L., Li, G., & Bao, Y. (2010). Improvement of grayscale image 2D maximum
entropy threshold segmentation method. 2010 International Conference on
Logistics Systems and Intelligent Management (ICLSIM).

[14]Maani R, Kali-a S.& Yang Y. H. Noise Robust Rotation Invariant Features for
Texture Classification閉.Pattern Recognition, 2013, 46(8): 2103-2116

[15]Ojala T., Pietikainen M.& Maenpaa T. Multiresolution Gray-Scale and
Rotation Invariant Texture Classification with Local Binary Patterns[C].
European Conference on Computer Vision. 2000: 404-420

[16] HanTran, Mohammad Noori, Wael A. Altabey, Xi Wu. Fault diagnosis of rotating
machinery using wavelet-based feature extraction and support vector machine
classifier[J]. High Speed Machining,2017,3(1).

[17]Kumar A, Pang G K H. Defect detection using Gabor filters[J]. Industry Applications,
IEEE Transactions on, 2002, 38(2): 425-440.

[18]Cristianini N, Shawe-Taylor J. An introduction to support vector machines and
other kernel-based learning methods[M]. Cambridge university press, 2000.

附錄

資料集來源:

美國東北大學金屬表面缺陷圖片資料集

主程式程式碼截圖:

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

其他函式程式碼見資料夾附件。