一種基於積分圖算法的織物瑕疵檢測方法與流程
2023-05-12 00:21:01 2
本發明涉及機器視覺與視頻圖像處理技術領域,具體為一種快速的基於積分圖算法的織物瑕疵檢測方法。
背景技術:
傳統紡織行業的瑕疵檢測多以人工肉眼檢測為主,然而人眼視覺易疲勞導致漏檢、人工觀察效率低、人力成本代價大,這與大規模工業化生產極不協調,利用計算機視覺和圖像處理算法自動進行織物瑕疵檢測,能有效解決這一問題。
基於圖像濾波的方法在頻域提取織物紋理特徵來進行瑕疵檢測,如gabor濾波、小波變換,由於瑕疵尺度方向未定,濾波時往往需要提取多個尺度多個方向的結果作為特徵向量,即便採用pca降維方法,單幀圖像檢測時間仍需數十秒;基於信號統計的方法在空間域統計織物灰度分布特徵來識別瑕疵,如局部二值模式(localbinarypattern,lbp)特徵、灰度共生矩陣特徵、規則帶(regularband,rb)特徵等,統計特徵具有較好魯棒性,但統計特徵提取時一般需要利用鄰域多個像素數據,如不採用合適的加速策略將導致整體運算量驟增;對織物圖像直接閾值化來分割瑕疵的方法操作簡單、運算較快,但是僅對平紋、斜紋等灰度均勻、無紋理圖案的織物有效,且易受噪聲幹擾。為實現自動瑕疵檢測算法的工業化應用,實時性和正確率都需滿足,而據統計,僅有少部分算法能夠滿足實時性,而其中檢測正確率高於90%的算法更少。
本發明提出一種基於積分圖的快速織物瑕疵檢測方法。利用積分圖將任意大小的圖像塊內的求和運算化簡為三次加法運算,快速提取梯度能量統計特徵,極大減小運行時間開銷,並利用核函數擬合非對稱特徵分布獲得自適應的瑕疵判定閾值,實現瑕疵區域的準確分割。
技術實現要素:
本發明要解決的問題是:現有織物瑕疵檢測系統依賴人眼觀察,效率低下;現有通過各種複雜算法進行高正確率的織物瑕疵檢測的方法運算量較大,不滿足工業生產的實時性要求;現有能夠快速檢測織物瑕疵的方法僅能應對簡單織物圖像,對複雜紋理織物效果較差。總而言之,現有方法難以做到高實時性和高正確率的兼容。
本發明的技術方案為:一種基於積分圖算法的織物瑕疵檢測方法,利用積分圖算法 將任意大小的圖像塊內的求和運算化簡為三次加法運算,以快速提取梯度能量特徵用於瑕疵檢測,具體為:首先通過對無瑕疵模板進行圖像學習,統計其梯度能量特徵分布,所得特徵分布非對稱,採用核函數擬合特徵分布,結合均值漂移法提取分布的峰值,再由峰值自適應求取閾值參數,所述閾值參數用於後續瑕疵的區分;然後,對待檢測圖像,通過積分圖算法求取每個像素點所在檢測窗口的梯度能量,結合所述閾值參數,判定當前像素點是否疵點,通過統計整幅圖像的疵點總數來判定當前圖像是否為瑕疵織物,
其中,梯度能量特徵的提取方法為:首先求取原始圖像f(x,y)的梯度圖g(x,y),再利用積分圖算法求取g(x,y)的梯度能量特徵圖e(x,y),對任意像素點(x,y),其能量特徵是以點(x,y)為中心的大小為dw*dh的窗口區域內的像素積分。
利用積分圖算法求取g(x,y)的梯度能量特徵圖e(x,y)的具體步驟為:
1)求取g(x,y)的積分圖i(x,y)
i(x,y)=i(x-1,y)+i(x,y-1)-i(x-1,y-1)+g(x,y)(1)
2)根據積分圖的特性,對任意點(x,y)求取其梯度能量特徵圖e(x,y):
所述織物瑕疵檢測方法具體步驟如下:
1)利用無瑕疵模板圖像,訓練學習用於瑕疵檢測的閾值參數
以無瑕疵織物的圖像建立訓練集,對各幅圖像,獲得圖像的梯度能量特徵圖etrain(x,y),採用核函數來擬合etrain(x,y)中的梯度能量分布,獲得核密度概率分布p(e),利用均值漂移法迭代求取核密度概率分布p(e)的極值,獲得梯度能量分布的峰值所在位置,記為μ,根據峰值將能量分布分為左右兩部,分別計算兩部方差σ1、σ2,對訓練集中的同一類織物的每幅無瑕疵圖像均求取參數μ、σ1、σ2後,再對應取其平均值作為該類織物的最終瑕疵檢測過程中的閾值參數;
2)對每一張待檢測圖像,獲得其梯度能量特徵圖etest(x,y),如果etest(x,y)滿足下式則判定點(x,y)為疵點:
其中,為步驟1)中獲得的閾值參數,α為控制係數;
最後統計總疵點數,若大於設定的閾值td則判定該圖有瑕疵。
核密度概率分布p(e)為:
其中,n為該無瑕疵圖像的像素總數,{en|n=1、2、3...n}為無瑕疵圖像中每個點的梯度能量數據,b為核函數帶寬,c0為歸一化係數,k(z)為高斯核輪廓函數,即k(z)=exp(-z/2),z≥0。
閾值參數μ、σ1、σ2的具體計算方法為:
1)設定初始值μ0為當前無瑕疵模板圖像的梯度能量均值;
2)令μ1=m(μ0)+μ0,其中m(μ0)為μ0處的均值漂移量
上式中,函數g(z)=-k』(z),k(z)為高斯核輪廓函數;
3)若|μ1-μ0|<ε,令參數μ=μ1,進行下一步,否則令μ0=μ1並回到上一步進行迭代,ε表示無窮小量;
4)根據式(6)計算閾值參數σ1,其中,s為梯度能量分布圖峰值右側的像素點總數。
es∈{en|n=1,2...n}且es≥μ(6)
5)根據式(7)計算閾值參數σ2,其中,z為梯度能量分布圖峰值左側的像素點總數。
ez∈{en|n=1,2...n}且ez≤μ(7)。
本發明提出一種基於積分圖的快速織物瑕疵檢測方法,既滿足實時性又具有較高正確率。其創新點在於:1)首次提出利用積分圖算法快速提取織物圖像的梯度能量特徵用於瑕疵判別,由積分圖將任意大小的圖像塊內的求和運算化簡為三次加法運算,極大減小運行開銷;同時,使用積分圖算法時,本發明是先做梯度圖再做積分圖,而不是直接做積分圖,這樣可以去除光照變化的幹擾,更進一步提高檢測精度;2)本發明採用核函數擬合非對稱的特徵分布,結合均值漂移法提取分布峰值,自適應求取閾值參數,實現自動、準確的分割瑕疵區域。
附圖說明
圖1為本發明方法的流程框圖。
圖2為本發明方法中基於積分圖計算區域積分的示意圖。
圖3為本發明實施例待檢測織物圖像。
圖4為本發明實施例梯度能量特徵圖。
圖5為本發明實施例瑕疵檢測結果圖。
圖6為本發明方法與其它現有技術方法的檢測結果對比。
具體實施方式
本發明提供了一種新的織物瑕疵檢測方法,快速、自動化實現高精度的織物瑕疵檢測。本發明方法主要包括基於積分圖的梯度能量特徵提取、基於核函數的閾值參數學習及瑕疵檢測三個部分。
如圖1所示,本發明首先通過對無瑕疵模板進行圖像學習,統計其梯度能量特徵分布,所得特徵分布非對稱,採用核函數擬合特徵分布,結合均值漂移法提取分布的峰值,再由峰值自適應求取閾值參數,所述閾值參數用於後續瑕疵的區分;然後,對待檢測圖像,通過積分圖算法求取每個像素點所在檢測窗口的梯度能量,結合所述閾值參數,判定當前像素點是否疵點,通過統計整幅圖像的疵點總數來判定當前圖像是否為瑕疵織物,具體實施方式如下:
1、基於積分圖的梯度能量特徵提取:
一般而言,無瑕疵的織物圖像紋理呈周期均勻分布,對其中任意點(x,y),以它為中心計算固定大小dw*dh窗口下的能量,理想狀態下,該能量特徵應當不隨(x,y)變化而變化,而瑕疵的出現將打破其周期性、均勻性,也使得能量分布發生變化。據此,可以採用窗口能量值作為特徵描述來檢測瑕疵,但考慮到能量值易受光照影響,因此,本發明採用梯度能量,先求取原始圖像f(x,y)的梯度圖g(x,y),再對g(x,y)提取能量特徵e(x,y)。求取特徵e(x,y)的過程中,需要對每個像素統計其鄰域像素和,如不採用加速算法,實時性將難以保證,因此,本發明提出採用積分圖加速。對圖像g(x,y),定義積分圖i(x,y)為:
可見積分圖i中任一點(x,y)的數值為源圖像g中左上角至當前點(x,y)所成的矩形框內所有點的像素值之和。為了加速運算,可用式(1)所示算法快速獲得積分圖:
i(x,y)=i(x-1,y)+i(x,y-1)-i(x-1,y-1)+g(x,y)(1)
已有積分圖i(x,y)後,圖像g(x,y)上任意矩形區域的像素積分可由i(x,y)快速計算,如圖2所示,令i(x1,y1)=r(a),i(x2,y2)=r(a)+r(b),i(x3,y3)=r(a)+r(c),i(x4,y4)=r(a)+r(b)+r(c)+r(d),r(·)函數表示區域積分,因此,d區域的積分r(d)可如下計算:
r(d)=i(x4,y4)-i(x2,y2)-i(x3,y3)+i(x1,y1)
根據上式,不管矩形區域d面積多大,都僅需三次運算即可求取其中像素值之和,極大降低計算量。據此,基於積分圖的梯度能量特徵提取方法的具體步驟為:
1)對織物圖像f(x,y),求梯度圖g(x,y);
2)根據式(1)求取g(x,y)的積分圖i(x,y);
3)對任意點(x,y)求取其梯度能量圖e(x,y),即以點(x,y)為中心的大小為dw*dh的窗
口區域內的像素積分:
2、基於核函數的閾值參數學習:
理想狀態下,對無瑕疵圖像,梯度能量e(x,y)應當不隨(x,y)變化而變化,而實際中織物上不同區域的紋理不可能完全一致,圖像採集過程中也可能引入噪聲,因此,梯度能量e(x,y)往往呈一定分布,為了獲得合適的閾值參數以分割瑕疵,一種最直接的方法是利用高斯模型來擬合e(x,y)的分布,並將參數設置為該高斯分布的均值和方差。然而,e(x,y)的分布並不總是具有對稱性,在密度峰值的兩側可能呈現不同的衰減特性,因此如果用具有對稱性的高斯模型擬合很容易產生偏差。為此,本發明提出採用核函數來擬合梯度能量分布,獲得它的核密度概率分布p(e):
其中,n為該無瑕疵圖像的像素數,{en|n=1、2、3...n}為對無瑕疵圖像提取的梯度能量特徵圖etrain(x,y)中每個點的梯度能量數據,b為核函數帶寬,c0為歸一化係數,k(z) 為核輪廓函數,本發明選擇高斯核輪廓函數,即k(z)=exp(-z/2),z≥0,代入公式(4)求解。為獲得梯度能量分布的峰值所在位置,利用均值漂移法求取核密度概率分布p(e)的極值,根據密度峰值將能量分布分為左右兩部,分別計算各部方差用於瑕疵檢測閾值的計算,具體步驟為:
1)設定初始值μ0為當前無瑕疵模板圖像的梯度能量均值;
2)令μ1=m(μ0)+μ0,其中m(μ0)為μ0處的均值漂移量:
上式中g(z)=-k』(z),即高斯核輪廓函數的求導。
3)若|μ1-μ0|<ε,停止循環並令閾值參數μ=μ1;否則令μ0=μ1並回到上一步,ε表示無窮小量;
4)根據式(6)計算閾值參數σ1,其中,s為梯度能量分布圖峰值右側的像素點總數。
es∈{en|n=1,2...n}且es≥μ(6)
5)根據式(7)計算閾值參數σ2,其中,z為梯度能量分布圖峰值左側的像素點總數。
ez∈{en|n=1,2...n}且ez≤μ(7)
為提高算法魯棒性,對訓練集中的每幅無瑕疵圖像均依據式(5)、(6)、(7)求取參數μ、σ1、σ2,再各取所有無瑕疵圖像的平均值作為最終瑕疵檢測過程中的閾值參數。
3、瑕疵檢測
檢測階段中,對每一張待檢測圖像,首先按照第一部分基於積分圖的梯度能量特徵提取方法,獲得其梯度能量特徵圖etest(x,y)。如果etest(x,y)滿足下式則判定點(x,y)為疵點:
其中,為通過對無瑕疵模板圖像訓練而獲得的閾值參數,α為控制係數。統計總疵點數,若大於設定的閾值td則判定該圖有瑕疵,td可由用戶根據質量控制的實際需求調整。
圖3、4、5、6為本發明實施效果圖,待檢測織物圖像來源於香港大學電子電氣工 程系工業自動化研究實驗室提供的織物圖像數據集,其中窗口寬度dw和高度dh均設置為25,控制係數α設置為4。圖3顯示了數據集中的3幅待檢測織物圖像,分別為(a)、(b)、(c),圖4為對應提取的梯度能量特徵圖,圖5為本發明檢測結果,圖3、4、5中的(a)、(b)、(c)分別對應一幅圖像。由圖4可見,瑕疵區域的梯度能量特徵與正常紋理區域有顯著差別,說明所構建的梯度能量特徵能夠較好的區分瑕疵區域與正常紋理區域。由圖5可見所提算法檢測結果圖能夠準確定位瑕疵。圖6為本發明方法與其它方法的對比,(a)為織物原圖,(b)為本發明方法檢測結果,(c)為基於lbp特徵的檢測結果,(d)為rb算法的檢測結果。由圖6可見,相對於其它方法,本發明檢測結果更加準確。對整個數據集的測試統計表明,當閾值td選擇為50時,錯檢圖像僅5幅,正確率達97%,且在matlab平臺下平均每幅圖像處理時間僅需56ms,而現有其它方法如基於lbp特徵的方法在matlab平臺下需要高達數十秒,現有研究中速度較快的基於rb算法的方法在c語言環境下還需140ms,本發明所提算法在c語言環境下處理時間將更短,實現了既高正確率又高實時性的檢測。