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