王春妍,沈丹峰,楊國仲,張旭祥
(西安工程大學(xué) 機電工程學(xué)院,陜西 西安710048)
質(zhì)量檢驗是現(xiàn)代工業(yè)制造的一個重要方面。在紡織工業(yè)生產(chǎn)中,織物的自動檢測是保證織物質(zhì)量的重要手段[1]。長期以來,織物疵點的檢測過程仍然采用人工目測的方式進(jìn)行,由于人工驗布成本較高,人為因素影響檢測率[2],因此需要對織物疵點進(jìn)行自動檢測,以降低人工檢測造成的成本和時間浪費[3]?,F(xiàn)有的織物疵點檢測方法主要有幾類:基于模型分析的方法、基于統(tǒng)計分析的方法、基于頻譜分析的方法[4]。基于模型分析的方法通過對織物自身的紋理信息進(jìn)行建模,獲取相關(guān)特征檢測織物疵點,但其計算量大,對小面積織物疵點的識別能力較弱[5],如楊曉波[6]通過構(gòu)建GRMF紋理模型自動識別統(tǒng)計特征畸變織物疵點紋理,其計算量大且過程極其復(fù)雜,難以檢測到面積較小的疵點?;诮y(tǒng)計分析的方法通過計算織物圖像中紋理的統(tǒng)計特性來檢測織物疵點,檢測結(jié)果易受疵點類型和紋理特征等的影響[7],如陸聰[8]提出了基于灰度LBP共生矩陣的特征提取算法,改變共生矩陣的計算方式,結(jié)合LBP的旋轉(zhuǎn)不變性,利用2種算法的優(yōu)勢,減少了計算量,提高了算法的實時性?;陬l譜分析的方法將圖像從時域變換到頻域,然后利用某種能量準(zhǔn)則進(jìn)行織物疵點檢測,但很大程度上受限于濾波器的選擇,如景軍鋒等[9]利用遺傳算法選取Gabor濾波器最優(yōu)參數(shù),利用調(diào)整后的Gabor濾波器檢測織物疵點,準(zhǔn)確率提高,且耗時較短。胡克滿等[10]提出了一種自適應(yīng)Canny邊緣檢測算法,自適應(yīng)獲取高斯濾波參數(shù)與圖像閾值,改善了Canny算子的自適應(yīng)性,可以更好地識別織物疵點的邊緣信息。
考慮到織物疵點特征與邊緣檢測算法的工作原理相似[11],疵點邊緣的紋理結(jié)構(gòu)相對于正??椢锊糠謺l(fā)生明顯突變,這些疵點會破壞織物的均勻結(jié)構(gòu),疵點區(qū)域與正常織物區(qū)域的分界處會出現(xiàn)密度梯度,故采用邊緣檢測算法對織物疵點進(jìn)行檢測。相較于其他算法,邊緣檢測算法具有處理速度快、操作簡單等優(yōu)點。常用的邊緣檢測算法有Prewitt算子、Canny算子、Laplacian算子、Roberts算子和Sobel算子等[12],其中,Prewitt算子原理為利用圖像中鄰域像素點的灰度差值達(dá)到極值來檢測邊緣,可以抑制噪聲,消除部分偽邊緣,然而,在傳統(tǒng)邊緣檢測算子中,噪聲平滑能力提高,邊緣定位能力會下降,噪聲平滑與邊緣定位能力近乎呈倒數(shù)關(guān)系,同時需要人工確定閾值大小,其自適應(yīng)性[13]會有一定影響。為了克服這個缺點,得到更加準(zhǔn)確的邊緣信息,本文提出了基于傳統(tǒng)Prewitt算子的改進(jìn)算法檢測織物疵點,算法分為三個步驟:(1)增加Prewitt算子的45°和135°方向模板來改善圖像的邊緣結(jié)構(gòu);(2)結(jié)合非極大值抑制方法[14]對檢測到的邊緣結(jié)構(gòu)進(jìn)行細(xì)化;(3)采用自適應(yīng)閾值法去除部分偽邊緣。
經(jīng)典的Prewitt邊緣提取算法是一種離散的一階空域微分算子,通常用于檢測圖像的邊緣。該算法通常是用2個分別檢測水平和垂直邊緣的方向模板與圖像的每個像素點進(jìn)行鄰域卷積來完成[15],它的2個模板如圖1所示:
圖1 Prewitt算子模板
用圖1模板對織物圖像中的像素點進(jìn)行卷積操作和求絕對值,得出圖像梯度值的表達(dá)式為:
式中,Gx和Gy分別表示水平差分和垂直差分,P(x,y)表示Prewitt算子的梯度幅值,f(x,y)為像素點(x,y)的灰度值。
求出梯度后,選取合適的梯度閾值T,將P與T進(jìn)行比較,當(dāng)且僅當(dāng)P<T時,該點為邊緣點,設(shè)定其像素值為0,其他的設(shè)定為255,通過調(diào)節(jié)T的大小來獲得最佳效果。
基于以上分析,Prewitt算子是一種將差分運算與局部平均相結(jié)合來計算3×3鄰域內(nèi)梯度值的方法,雖然可以抑制噪聲,但檢測到的邊緣粗糙,邊緣位置難以準(zhǔn)確定位。傳統(tǒng)Prewitt算子使用水平方向和垂直方向的掩模對圖像進(jìn)行鄰域卷積,方向掩模不夠完善,其他方向的邊緣信息容易被忽略[16]。此外,人們往往根據(jù)經(jīng)驗來選取閾值,很難得到精度較高的圖像邊緣結(jié)構(gòu)。閾值過高,會導(dǎo)致圖像部分邊緣結(jié)構(gòu)丟失;而閾值過低,則會導(dǎo)致不必要的偽邊緣出現(xiàn)[17]。
為了更加精確地檢測到疵點,減少后續(xù)檢測的工作量與復(fù)雜程度,對梯度幅值圖像P(x,y)進(jìn)行了高斯濾波、增加45°方向模板和135°方向模板來計算梯度幅值、非極大值抑制以及自適應(yīng)閾值選取??椢锎命c檢測算法流程如圖2所示。
圖2 算法流程圖
高斯濾波是一種線性平滑濾波[18],可抑制和消除高斯噪聲,常用于視覺算法中的預(yù)處理階段,以達(dá)到圖像平滑和增強的效果。高斯濾波對圖像中每個像素點和鄰域內(nèi)的其他像素值實現(xiàn)加權(quán)平均操作,具體來說是用一個卷積模板在圖像上的每一個像素上移動,得到的鄰域內(nèi)像素的加權(quán)平均灰度值作為中心像素點的灰度值:
式中,(x,y)表示像素點坐標(biāo),在數(shù)字圖像處理中為整數(shù);標(biāo)準(zhǔn)差σ表示高斯函數(shù)的寬度,通常采用二維零均值離散高斯函數(shù)作為平滑濾波器。
傳統(tǒng)的Prewitt算子在鄰域內(nèi)求有限差分來計算梯度幅值方向,只能檢測垂直和水平方向,而不能檢測其他方向,導(dǎo)致部分邊緣缺失。改進(jìn)后的算法增加了45°方向算子和135°方向算子,使邊緣結(jié)構(gòu)更加完整。改進(jìn)后的算子表達(dá)式為:
改進(jìn)后的算子模板是:
改進(jìn)了方向模板后,得到的像素點的梯度幅值P(x,y)是:
設(shè)置4個3×3的模板公式(5),4個模板分別對應(yīng)0°、45°、90°、135°,以點 (x,y)為中心將其鄰域內(nèi)3×3的區(qū)域分成兩部分,按照這4個模板分別對圖像中的每個像素點進(jìn)行卷積操作和求絕對值,只要任意一個結(jié)果與選取的閾值相比,大于或者等于閾值T,則該模板的中心點所對應(yīng)的像素點的灰度值為4個方向模板結(jié)果中的最大值,否則灰度值為0。
對于梯度幅值圖像,非極大值抑制是將當(dāng)前像素點的梯度值與沿其梯度方向的2個相鄰梯度值進(jìn)行比較,當(dāng)值小于相鄰梯度值時,判斷像素點為非極大值進(jìn)行抑制;如果其值大于相鄰的梯度值,則判斷該像素點為待保留的最大值。將梯度幅值分為0°、45°、90°、135°四部分,分別對應(yīng)于0°、45°、90°、135°的4個方向上的相鄰像素點,可由Prewitt算子計算。因此,梯度幅值圖像P(x,y)在(x,y)處的非極大值抑制算法為:
傳統(tǒng)邊緣檢測需要通過分析圖像直方圖,人為設(shè)置閾值,適用性有限。針對人為選取閾值的不足,提出了一種自適應(yīng)閾值選取方法,以圖像灰度平均值與各灰度級出現(xiàn)概率的乘積作為自適應(yīng)閾值。
設(shè)圖像的大小為M×N,灰度值的取值范圍為L1,L2,…,LN,用概率分布來描述圖像的灰度值分布情況。各灰度值出現(xiàn)的概率為:
令h(Ln)代表圖像中灰度值Ln出現(xiàn)的次數(shù),則有式(9)可以推出:
式(10)具有廣泛的適用性,可用于不同灰度的圖像,克服了傳統(tǒng)邊緣檢測人為選取閾值的局限性。
處理后的二值圖像M(x,y)為:對梯度幅值圖像上的像素點P(x,y),若該點梯度幅值大于閾值,且是局部變化最大的值,即p*(x,y)=1,則該像素點為圖像的邊緣,即
為了更好地檢驗本文算法的效果,選取帶有百腳、斷經(jīng)、重緯、油污等疵點的大小為256像素×256像素的圖像進(jìn)行試驗,試驗基本配置為i7-8565U CPU和8G內(nèi)存,軟件編譯環(huán)境為MATLAB2018b環(huán)境,分別采用經(jīng)典Prewitt算子和本文改進(jìn)后的算法對織物圖像進(jìn)行處理,檢測結(jié)果如圖3所示,圖3(a)是織物疵點原圖,圖3(b)是基于經(jīng)典Prewitt算子的檢測效果圖,圖3(c)是基于經(jīng)典Canny算子的檢測效果圖,圖3(d)是改進(jìn)算法的檢測效果圖。
圖3 織物疵點檢測結(jié)果對比
可以看出,采用經(jīng)典Prewitt算子進(jìn)行織物疵點的邊緣檢測,其檢測邊緣粗糙,人為選取的閾值不能實現(xiàn)與織物疵點灰度值相近的噪聲跟疵點的分離,含有大量的正常紋理與噪聲信息,說明經(jīng)典算子檢測邊緣較粗,所確定的閾值不是最優(yōu)閾值,易產(chǎn)生偽邊緣。從改進(jìn)后算法的分割效果能夠看出,織物疵點與背景紋理分離明顯,表明改進(jìn)后算法不僅可以利用非極大值抑制細(xì)化邊緣,還通過自適應(yīng)閾值法確定最佳閾值,使與疵點接近的噪聲被分離,去除部分偽邊緣。
改進(jìn)算法的優(yōu)越性在于:
(1)增加邊緣檢測模板方向數(shù),提高了疵點邊緣完整度;
(2)梯度幅值圖像增加了非極大值抑制,減少了圖像的噪點與偽邊緣;
(3)采用自適應(yīng)閾值分割方法,以圖像灰度平均值與各灰度級出現(xiàn)概率的乘積作為自適應(yīng)閾值,等同于動態(tài)局部閾值分割,進(jìn)一步提高了二值化圖像的準(zhǔn)確度。
進(jìn)一步地,擴大試驗范圍,選取130件某棉紡織廠人工驗后的疵布,在恒定光源下,用工業(yè)相機拍照,采用本文算法檢測后的統(tǒng)計結(jié)果見表1。
表1 疵點檢測結(jié)果統(tǒng)計
在經(jīng)典Prewitt算子的基礎(chǔ)上,提出了一種改進(jìn)的織物疵點檢測算法,剖析了經(jīng)典Prewitt算子的檢測機理和操作流程。針對經(jīng)典Prewitt算子的不足,增加45°和135°方向模板,結(jié)合非極大值抑制方法以及自適應(yīng)閾值算法,實現(xiàn)織物疵點的檢測。研究結(jié)果表明,用改進(jìn)算法有效解決了Prewitt算子檢測出的邊緣粗糙、人為選取閾值易誤判邊緣點的問題,得到的邊緣細(xì)節(jié)明顯,偽邊緣相對較少,實現(xiàn)了閾值智能化,具有較好的自適應(yīng)性,提高了織物疵點的檢測精度。與其他方法相比,邊緣檢測算法最重要的優(yōu)勢是操作簡單、耗時少,將其應(yīng)用于低噪聲圖像或優(yōu)化圖像處理方法的圖像中,可以得到更好的結(jié)果。