李相格
(中鐵第一勘察設計院集團有限公司,西安 710043)
物體表面缺陷一般分為兩種:一是亮缺陷,是指物體表面缺陷中較為明顯的缺陷區域;二是暗缺陷,是指不明顯的缺陷區域。物體表面缺陷檢測技術是指對檢測樣本的表面凹坑、缺損等缺陷進行檢測?,F有的表面缺陷檢測技術包括磁粉檢測法、滲透檢測法、渦流檢測法、超聲波檢測法、X射線檢測和基于機器視覺的缺陷檢測技術[1]。隨著科技的發展,機器視覺技術發展迅速,在現代工業中得到越來越廣泛地研究和應用[2]。它具有安全可靠,光譜響應范圍寬,可在惡劣環境下長時間工作等突出優點[3]。因此,本文利用機器視覺技術實現鋼板表面圖像缺陷檢測。
國內外大量學者對表面圖像缺陷檢測技術進行了研究。陳廣鋒等[4]提出一種基于LOG算子的實時濃淡補正算法,實現沖壓件表面缺陷檢測;杜偉等[5]提出改進的形態學和LOG算子相結合的邊緣檢測方法;王宇杰等[6]提出一種基于LOG算子的塑料制品缺陷檢測方法;胡海曉等[7]提出一種LOG算子對遙感圖像進行邊緣檢測;宋柯等[8]提出一種基于Otsu算法的墻紙缺陷檢測方法;巢淵等[9]提出一種基于Otsu閾值的半導體芯片表面缺陷檢測;Wang等[10]提出一種基于Otsu算法的光滑物體表面的缺陷檢測方法;高尚兵等[11]提出一種基于Otsu算法的圖像邊緣檢測方法;江濤等[12]提出一種基于Otsu算法的圖像邊緣提取方法。
綜上所述,傳統LOG算子對圖像進行邊緣檢測時,仍有部分邊緣丟失,對高頻細節的保護效果不佳,檢測暗缺陷邊緣較為困難[13],只適合檢測亮缺陷區域,而Otsu算法適用于檢測缺陷區域和背景區域灰度值相近的暗缺陷,檢測亮缺陷時存在較多誤檢測區域[14]。針對上述問題,本文提出一種改進LOG算子與Otsu算法結合的表面缺陷邊緣檢測方法:首先對預處理后的圖像采用基于Wiener濾波改進的LOG算子實現亮缺陷邊緣檢測,然后采用Otsu算法實現暗缺陷邊緣檢測,最后采用像素加權平均融合算法實現亮、暗缺陷邊緣圖像的融合。
研究表明,待檢測圖像經傳統LOG算子檢測后的圖像的邊緣像素將會變寬,灰度幅值將會增大,確實可以起到強化邊緣信息的效果,實現邊緣定位[15],但是傳統LOG算子在檢測亮缺陷時,仍有部分邊緣丟失,檢測結果不準確,其中主要原因為傳統LOG算子采用高斯濾波對圖像進行濾波處理,容易造成誤檢測,因此,需要選擇一種合理的濾波方法對圖像進行濾波處理。與高斯濾波方法相比,Wiener濾波方法可以根據圖像的統計特性求得標準差σ,無須人工改變濾波的顆粒就可以自適應地濾除噪聲,可以解決復雜的圖像問題,所以本文采用Wiener濾波方法對傳統LOG算子進行改進。改進后的算法處理過程如下:
對于一張預處理后的圖像,可以表示為:
(1)
首先采用Wiener濾波方法對原圖像f(x,y)進行濾波,有:
I(x,y)=G(x,y)*f(x,y)
(2)
其中:I(x,y)為平滑圖像,G(x,y)為Wiener濾波函數。G(x,y)的表達式為:
(3)
其中:u為鄰域內像素灰度值的均值;σ為標準差,用于表示圖像檢測過程中的模糊因子;f1(x,y)為在(x,y)點處的像素灰度值;v2為圖像噪聲方差。σ2和v2的表達式如下:

(4)

(5)

然后依據二階導數零交叉進行邊緣檢測,有:
M(x,y)=2[I(x,y)]=2[G(x,y)*f(x,
y)]=2G(x,y)*f(x,y)
(6)
Otsu算法可以實現前景和背景的分離,適用于目標和背景的灰度值區別不明顯的情況[16]。本文采用Otsu算法實現暗缺陷邊緣檢測,其算法處理過程如下:
將原圖像f(x,y)分為L(L=0,1,2,…,L-1)個灰度級。Dj表示灰度級為j的像素點的個數。D表示圖像總的像素點的個數,其表達式為:
D=D0+D1+…+DL-1
(7)
灰度級為j的點占整個原圖的比值為:
m=Dj/D
(8)
假設使用閾值t將圖像分為兩類,記為C1(0,1,2,…,t)和C2(t+1,t+2,…,L-1),其中C1和C2占整個原圖像的比值分別為:
(9)
(10)
則C1和C2的灰度值分別為:
(11)
(12)
聯合式(9)~(12),求得C1和C2的類間方差為:
(13)
式中:u0為整幅原圖像的平均灰度值。當σt取得最大值時即為得到的最優閾值。使用計算出的最優閾值對原圖進行二值化(見式(14)),得到暗缺陷邊緣。
(14)
式中:H(x,y)為采用Otsu算法檢測后的圖像。
圖像融合首先要確定亮、暗缺陷區域的重合部分,然后保留亮、暗缺陷區域各自相應獨立的部分,最后將重合區域和各自相互獨立的區域融合在一起,得到一張完整的缺陷圖像。圖像融合算法通常有顏色差值、像素加權平均和多分辨率樣條技術等方法。像素加權平均算法可以很好地融合背景區域和目標區域灰度值區分較為明顯的圖像[17]。物體表面圖像經過殘損邊緣檢測后,亮、暗殘損區域和背景區域灰度級已經有了明顯的劃分,所以本文采用像素加權平均融合算法來實現亮暗殘損邊緣圖像的融合,其表達式如下:
F(x,y)=
(15)
其中:M、H分別為采用LOG算子和Otsu算法檢測后的圖像;w1+w2=1,且0≤w1≤1,0≤w2≤1;F(x,y)為最終得到的亮、暗殘損圖像。
式(15)中,權值為未知數。一般權值的計算方法有積分法、開方法、微分法和最優加權平均算法。其中最優加權平均法可以快速得到較為準確的權值數[18],所以采用最優加權平均法計算權值,其計算公式如下:
(16)
式中:Si為亮、暗殘損圖像的平均灰度值的方差。
本文選取從某鋼板工廠采集到的殘次品鋼板表面圖片進行鋼板表面圖像殘損狀態檢測。實驗仿真環境是在Windows平臺下,基于OpenCV2.4.4以及VS2013實現。鋼板表面殘損圖像如圖1所示。

圖1 鋼板表面殘損圖像
為方便后續對鋼板表面缺陷進行檢測,對圖1中的鋼板表面殘損圖像采用中值濾波和灰度化進行預處理。預處理后的圖像如圖2所示,其中:標記代號為0的區域為亮缺陷區域,標記代號為1的區域為暗缺陷區域。

圖2 預處理后的圖像
基于改進的LOG算子與Otsu算法相結合的表面缺陷邊緣檢測方法實驗步驟如下:
1) 對圖2中的缺陷圖像使用改進LOG算子進行檢測后的結果如圖3所示。

圖3 改進LOG算子檢測的結果
以圖2(a)為例,采用改進的LOG算子實現亮缺陷檢測,結果為圖3(a)。圖2(a)中亮缺陷區域像素點的個數有31 409個,圖3(a)中像素灰度值為255的點有31 336個,數量基本一致,且位置基本對應。圖2(a)中根據灰度直方圖統計數據求得u0=84,σ=9.1,v=0.8。由圖3可以看出:改進后的LOG算子較好地實現了亮缺陷檢測,但在檢測暗缺陷時,有部分邊緣檢測缺失,對高頻細節的檢測出現失真,不能很好地實現暗缺陷的檢測。
2) 對圖2中的缺陷圖像使用Otsu算法處理后的圖像如圖4所示。

圖4 Otsu方差算法處理后的圖像
對圖2(a)采用Otsu算法進行鋼板表面缺陷檢測的結果見圖4(a),其中二值化初始閾值設置為0、255。根據式(13),當mk1=0.99,mk2=0.01,u1=224,u2=79時,σt可以取得最大值,maxσt=139。
圖4中檢測處理的4張缺陷圖像暗缺陷區域與圖2中所標記出的暗缺陷區域位置對應。實驗結果表明:使用Otsu方差算法較好地實現了暗缺陷檢測,但對亮缺陷的檢測出現了較多的誤檢測區域,在檢測過程中丟失部分亮缺陷的像素,不能很好地實現亮缺陷的檢測。
3) 對改進的LOG算子和Otsu算法檢測后的圖像采用像素加權平均融合算法進行圖像融合。以圖2(a)為例,基于改進LOG算子檢測出的缺陷圖像的平均灰度值為16,基于Otsu算子檢測出的缺陷圖像的平均灰度值為11,根據式(16)解得w1=0.59,w2=0.41。圖2中缺陷圖像加權平均融合后的實驗結果見圖5。

圖5 像素加權平均融合算法處理后的圖像
從圖5可知:圖2(a)中亮、暗缺陷區域像素點的個數為35 521個,圖5(a)中亮、暗缺陷區域像素點的個數為35 573個,數量基本一致,且位置基本對應。
與圖4和圖3相比,圖5較好地實現了亮、暗缺陷區域檢測,圖像無殘損邊緣丟失的情況,高頻細節殘損邊緣較為完整,無較多誤檢測區域。實驗結果表明:該方法具有較好的適應性,與單獨使用改進LOG算子和Otsu算法相比較,本文所提算法可以更好地檢測鋼板表面的亮、暗缺陷區域。
針對鋼板表面亮、暗缺陷邊緣檢測的問題,本文提出了一種用于鋼板表面缺陷邊緣檢測的算法。結合改進的LOG算子和Otsu算法可以有效檢測亮、暗缺陷邊緣特征,通過像素加權平均融合算法進行像素融合,生成了更完整的缺陷邊緣圖像,克服了單一檢測亮、暗缺陷不準確的問題,提高了鋼板表面圖像缺陷邊緣檢測的準確率。接下來,將繼續優化算法,以適應在不同場景下對不同材料的圖像表面進行缺陷檢測。