涂偉滬
蔡玲霞1
李學(xué)軍2
(1. 新疆哈密廣播電視大學(xué),新疆 哈密 839000;2. 四川大學(xué)錦城學(xué)院,四川 成都 611731)
由于圖像邊緣檢測具有非接觸、無損傷、精度高等特點(diǎn),正逐漸被應(yīng)用于雞蛋裂紋檢測領(lǐng)域[1]。常用的圖像邊緣檢測工具有Sobel算子[2]、Laplacian算子[3]、Prewitt算子[4]和Canny算子[5]等,其中,Canny算子因具有檢測精度高、信噪比大、抗干擾能力強(qiáng)等優(yōu)勢,被廣泛應(yīng)用[6]。但是,Canny算子檢測結(jié)果受雙閾值、高斯函數(shù)濾波參數(shù)等影響較大,需反復(fù)調(diào)整參數(shù),計(jì)算時間長,自適應(yīng)魯棒性差[7]。
李浩然等[8]利用直方圖灰度局部方差對Canny算子閾值進(jìn)行處理,一定程度提高了絕緣子裂紋檢測準(zhǔn)確率;李世雄等[9]采用圖像梯度錨點(diǎn)對Canny算子進(jìn)行優(yōu)化,提升了檢測邊緣連續(xù)性;胡克滿等[10]設(shè)計(jì)了具備不同參數(shù)的高斯濾波器,為不同檢測類型選取對應(yīng)濾波參數(shù)。上述研究改善了Canny算子偽邊緣過多的問題,但是算法時間復(fù)雜性需進(jìn)一步研究。隨著群智能優(yōu)化技術(shù)的不斷發(fā)展,粒子群算法(PSO)、蟻群算法(AC)等智能算法被應(yīng)用于邊緣檢測問題,樊石等[11]采用混合蛙跳算法對Canny算子雙閾值進(jìn)行優(yōu)化,謝昕等[12]采用果蠅優(yōu)化算法對傳統(tǒng)Canny算子進(jìn)行改進(jìn),張健等[1]將粒子群算法應(yīng)用于裂紋圖像檢測等,都取得了良好的檢測效果,但智能優(yōu)化算法容易陷入局部極值、收斂精度不高等固有缺陷中,需進(jìn)一步改進(jìn)。文章擬提出一種采用改進(jìn)蝗蟲算法(GOA)優(yōu)化Canny算子中雙閾值、高斯函數(shù)濾波參數(shù),自適應(yīng)獲取最優(yōu)參數(shù);設(shè)計(jì)改進(jìn)的模糊C-均值算法(FCM)和自適應(yīng)極值逆向?qū)W習(xí)、編碼突變更新機(jī)制,以提升GOA全局收斂能力,并采用實(shí)例仿真驗(yàn)證所提算法的有效性,以實(shí)現(xiàn)高精度雞蛋線形、網(wǎng)狀裂紋檢測。
GOA是一種新型智能優(yōu)化算法,其參考蝗蟲種群集體覓食行為,通過模擬種群間個體相互作用,實(shí)現(xiàn)對目標(biāo)位置搜索[13]。對于N維優(yōu)化問題,設(shè)定GOA種群內(nèi)有Q只蝗蟲,每個個體Xi=(xi1,…,xiN)(i=1,…,Q)代表問題一個解。t時刻,Xi(t)更新式為:
(1)
α=αmax-t(αmax-αmin)/Tmax,
(2)
(3)
式中:
α——更新參數(shù);
β——相互影響函數(shù);
f——吸引強(qiáng)度參數(shù);
l——吸引尺度參數(shù);
G(t)=(gi1,…,giN)——當(dāng)前種群最優(yōu)解;
由GOA個體更新過程可知,Xi學(xué)習(xí)對象不僅包括自身位置和種群最優(yōu)位置信息,還融合了其他所有個體之間的交互影響,具有很強(qiáng)的局部搜索能力,但是全局收斂能力不足[14]。當(dāng)種群最優(yōu)解在局部極值附近時,局部極值強(qiáng)大的吸引力導(dǎo)致算法容易陷入局部最優(yōu)。為提升GOA全局深度收斂能力,提出改進(jìn)的GOA算法(IGOA):采用改進(jìn)的模糊C-均值算法對蝗蟲種群進(jìn)行自適應(yīng)聚類分析,據(jù)此對種群進(jìn)行不同等級劃分,并分別為不同等級內(nèi)個體設(shè)計(jì)不同更新方式,以擴(kuò)展算法深度搜索空間和全局尋優(yōu)能力。
(4)
隸屬度矩陣:
U=[μik]C×Q,
(5)
式中:
C——聚類個數(shù)。
FCM是目前應(yīng)用最為廣泛的聚類算法之一,但其處理離群點(diǎn)、非球形簇?cái)?shù)據(jù)聚類問題效果不佳,文獻(xiàn)[15]采用高維映射函數(shù)Φ(x)替代傳統(tǒng)歐式距離度量,即:
D(Xk,vi)=‖Φ(Xk)-Φ(vi)‖2=ΦT(Xk)Φ(Xk)-ΦT(Xk)Φ(vi)-Φ(Xk)ΦT(vi)+ΦT(vi)Φ(vi)=K(Xk,Xk)-2K(Xk,vi)+K(vi,vi),
(6)
式中:
K(X,v)=ΦT(X)Φ(v)——核函數(shù)內(nèi)積。
文獻(xiàn)[16]指出,若K(X,v)滿足Mercer條件,則不需要知道Φ(x)具體形式。
1.1.1 新距離度量函數(shù) 為進(jìn)一步提升對離群點(diǎn)數(shù)據(jù)聚類效果,采用新的度量函數(shù)對Xk到vi的距離進(jìn)行重新度量,即:
D′(Xk,vi)=K(Xk,Xk)d(Xk,Xk)-2K(Xk,vi)d(Xk,vi)+K(vi,vi)d(vi,vi),
(7)
(8)
此時,聚類目標(biāo)函數(shù)為:
(9)
式中:
m——模糊加權(quán)指數(shù)。
對于式(9),令?J/?μik=0、?J/?vi=0,則:
(10)
此時,通過迭代計(jì)算式(10)即可完成聚類分析。
1.1.2 聚類有效性指標(biāo) 針對聚類個數(shù)C事先確定的缺陷,定義聚類有效性指標(biāo)WB(C):
(11)
式中:
nj——第j個分類樣本數(shù)量。
w(i,j)——類內(nèi)樣本之間距離;
b(i,j)——類間離散程度。
WB(C)取值越小,聚類結(jié)果越好。設(shè)置C在[Cmin,Cmax]范圍內(nèi)依次變化,WB(C)取最小值對應(yīng)的聚類個數(shù)即為最佳聚類個數(shù)Cbest。IFCM實(shí)現(xiàn)過程可以描述為:
參數(shù)初始化,聚類中心初始化,輸入相關(guān)變量。
forC=CmintoCmax
While (終止條件不滿足) do
{
根據(jù)式(9)計(jì)算J(U,V),根據(jù)式(10)計(jì)算新的U、V;
}
根據(jù)式(11)計(jì)算WB(C),更新聚類有效性指標(biāo)集合{WB(C)}C=1,…,C;
C←C+1
end for
輸出結(jié)果。
(12)
(13)
式中:
剩余個體組成蝗蟲子族群G2(t)。
1.2.1 自適應(yīng)極值逆向?qū)W習(xí) 選取G1(t)內(nèi)N(t)個個體,執(zhí)行極值逆向?qū)W習(xí)操作,即
Xi(t+1)=A+rand(0,1)×[B-Xi(t)]Xi(t)∈G1(t),
(14)
(15)
式中:
A、B——Xi(t)下邊界和上邊界;
Nmax、Nmin——N(t)取值范圍;
τ、ε——控制參數(shù)。
由式(14)、式(15)可知,進(jìn)化初期種群個體差異性較大,G1(t)選取少量個體執(zhí)行逆向?qū)W習(xí),進(jìn)化后期,種群進(jìn)化區(qū)域停滯,選取較多個體進(jìn)行逆向?qū)W習(xí),擴(kuò)展搜索空間。
1.2.2 編碼突變 對G3(t)內(nèi)個體執(zhí)行編碼突變操作,即:
Xj(t+1)=0.5[1+rand(0,1)]Xi(t)+0.5[1-rand(0,1)]Xk(t),Xi(t)∈G1(t),Xk(t)∈G2(t),Xj(t)∈G3(t),
(16)
式中:
Xi(t)、Xj(t)、Xk(t)——3個個體隸屬不同分類。
由式(16)可知,G3(t)內(nèi)個體隨機(jī)選取不在同一類的個體執(zhí)行編碼突變操作,即快速學(xué)習(xí)種群內(nèi)優(yōu)秀個體信息,又考慮不同子族群的空間差異性,提升了算法收斂效率。
(17)
(18)
式中:
Nc——第c個分類樣本數(shù)。
由式(17)、式(18)可知,將傳統(tǒng)GOA個體間影響對象限制分類內(nèi),很大程度地避免了陷入局部極值。改進(jìn)的蝗蟲優(yōu)化算法(IGOA)實(shí)現(xiàn)過程如圖1所示。
圖1 IGOA實(shí)現(xiàn)流程圖Figure 1 IGOA implementation flow chart
Canny算子采用雙閾值,對噪聲抑制、邊緣連接具有良好的效果[17]。其圖像檢測步驟為:
(1) 高斯平滑濾波。對于原圖像I(x,y),采用高斯濾波器G(x,y)進(jìn)行卷積處理,得到平滑后的圖像H(x,y):
H(x,y)=G(x,y)×I(x,y),
(19)
(20)
式中:
σ——標(biāo)準(zhǔn)差。
(2) 梯度方向和梯度幅值計(jì)算。對H(x,y)圖像進(jìn)行梯度方向θ(x,y)和梯度幅值A(chǔ)(x,y)計(jì)算:
(21)
(22)
(3) 非極大值抑制。對A(x,y)進(jìn)行非極大值抑制操作,若A(x,y)比θ(x,y)方向相鄰像素幅度值小,則A(x,y)歸零;若幅度值大,則點(diǎn)(x,y)為可能邊緣點(diǎn)。
(4) 閾值選取。設(shè)定高閾值TH、低閾值TL,若點(diǎn)(x,y)的A(x,y)≥TH,則該點(diǎn)為邊緣點(diǎn);若A(x,y)≤TL,則該點(diǎn)不是邊緣點(diǎn);若TL≤A(x,y)≤TH,則通過8領(lǐng)域像素判定法[12]確定是否為邊緣點(diǎn)。
Canny算子存在以下缺陷:① 過分依賴高斯平滑濾波處理器,σ設(shè)置尤為關(guān)鍵。σ取值越大,容易丟失邊緣信息,取值越小,容易檢測出虛假信息。②TH、TL需事先人為設(shè)定,需經(jīng)過大量試驗(yàn)和經(jīng)驗(yàn)值判定,往往存在較大誤差。
針對Canny算子固有缺陷,提出IGOA改進(jìn)Canny算子(IGOA-Canny),定義最大類間方差目標(biāo)函數(shù),設(shè)計(jì)多類蝗蟲個體編碼,以實(shí)現(xiàn)最優(yōu)參數(shù)自適應(yīng)獲取。
2.2.1 目標(biāo)函數(shù) 采用目標(biāo)與背景之間的類間方差作為IGOA目標(biāo)函數(shù):
f[X(t)]=ω0(t)×ω1(t)×[λ0(t)-λ1(t)]2,
(23)
式中:
ω0(t)——A(x,y)≤TH的像素?cái)?shù)量;
ω1(t)——A(x,y)>TH的像素?cái)?shù)量;
λ0(t)——A(x,y)≤TH的像素平均灰度值;
λ1(t)——A(x,y)>TH的像素平均灰度值。
類間方差取值越大,區(qū)分目標(biāo)與背景的正確率越高。對于TL,參考文獻(xiàn)[18],設(shè)定TL=TH/2.5。
2.2.2 多類個體編碼 定義多類IGOA個體編碼,將高斯函數(shù)方差σ、高閾值TH、低閾值TL、聚類中心V等效為個體編碼,即:
(24)
根據(jù)IGOA個體編碼定義方式,將IGOA優(yōu)化Canny算子參數(shù)分為兩個部分:① 執(zhí)行IFCM操作對種群聚類分析,此時只對個體編碼V部分進(jìn)行更新操作,蝗蟲個體執(zhí)行基本GOA更新,完成一定次數(shù)迭代后,得到種群聚類分析。② 執(zhí)行種群更新操作,此時只對個體編碼(σ,TH,TL)部分進(jìn)行更新操作,個體根據(jù)所在等級位置,分別執(zhí)行自適應(yīng)極值逆向?qū)W習(xí)、編碼突變和分類內(nèi)交互影響更新,最終得到Canny算子最優(yōu)參數(shù)配置,最后采用改進(jìn)的Canny算子對雞蛋裂紋進(jìn)行檢查。
IGOA初始化復(fù)雜度為O(QN),每執(zhí)行一次IFCM操作復(fù)雜度為(Cmax-Cmin)tmaxO(QN),種群完成一次更新復(fù)雜度為O(QN),故IGOA計(jì)算復(fù)雜度為:
Tmax[O(QN)+(Cmax-Cmin)tmaxO(QN)]+O(QN)≈Tmax(Cmax-Cmin)tmaxO(QN),
(25)
式中:
tmax——最大迭代次數(shù)。
基于IGOA-Canny的雞蛋裂紋檢測實(shí)現(xiàn)過程如圖2所示。
圖2 基于IGOA-Canny的雞蛋裂紋檢測過程
表1 測試函數(shù)Table 1 Test functions
由表1和圖3可知,收斂精度上,對f1、f2、f3、f44個函數(shù),無論是收斂精度還是收斂成功率,IGOA均優(yōu)于其他3種算法,特別是對于復(fù)雜多極值、病態(tài)函數(shù)f3、f4,IGOA幾乎都能夠達(dá)到100%的成功率。運(yùn)算效率上,IGOA能夠以較少的迭代次數(shù)實(shí)現(xiàn)全局最優(yōu)解求解,但是由于IGOA在每次迭代過程中疊加了模糊聚類操作,導(dǎo)致算法運(yùn)算時間長于其他3種算法,可以采用并行計(jì)算以提高收斂效率。典型測試函數(shù)仿真結(jié)果表明,IGOA收斂精度更有優(yōu)勢。
圖3 函數(shù)收斂曲線Figure 3 Function convergence curve
為驗(yàn)證文中所提檢測算法有效性,對雞蛋線形裂紋和網(wǎng)狀裂紋進(jìn)行檢測,試驗(yàn)選取100個大小不同、無明顯破損、有標(biāo)號的雞蛋作采樣檢測(經(jīng)仔細(xì)人工檢測線形裂紋雞蛋55個,網(wǎng)狀裂紋雞蛋45個)。選取基本Canny算子、文獻(xiàn)[5]提出的ACO-Canny算子,文獻(xiàn)[11]提出的SFLA-Canny算子和經(jīng)典的Prewitt算子進(jìn)行對比試驗(yàn)。采用文獻(xiàn)[12]提出的漏檢率作為評價指標(biāo),不同檢測算法對雞蛋線形、網(wǎng)狀裂紋典型案例檢測視覺效果見圖4、圖5,漏檢率和算法運(yùn)算時間對比結(jié)果見表3。
圖4 雞蛋線狀裂紋檢測視覺效果圖Figure 4 Visual effect of egg linear crack detection
圖5 雞蛋網(wǎng)狀裂紋檢測視覺效果圖Figure 5 Visual effect diagram of egg mesh crack detection
表3 不同檢測算法裂紋漏檢率、運(yùn)算時間對比Table 3 Comparison of crack missed detection rate and operation time of different detection algorithms
由圖4、圖5和表3可知,裂紋漏檢率方面,無論是對于線狀裂紋還是網(wǎng)狀裂紋,文中檢測算法、SFLA-Canny算子和SFLA-Canny算子都表現(xiàn)出了良好的檢測效果,且文中檢測算法的漏檢率更低,分別降低了約21.4%~31.2%,63.2%~69.7%,而基本Canny算子、Prewitt算子表現(xiàn)效果不理想,特別對于網(wǎng)狀裂紋檢測,漏檢率均超過了50%。算法運(yùn)行時間方面,由于IGOA在每次迭代過程中都要執(zhí)行聚類分析操作,導(dǎo)致算法在運(yùn)行時間上要慢于其他4種檢測算法,后期可采用并行計(jì)算技術(shù)提升運(yùn)算效率。試驗(yàn)結(jié)果表明,改進(jìn)FCM的引入和重新定義種群等級、編碼類型和更新方式,提升了改進(jìn)蝗蟲優(yōu)化算法的全局收斂性能,而采用改進(jìn)蝗蟲優(yōu)化算法優(yōu)化參數(shù)配置的Canny算子,對雞蛋裂紋檢測具有更好的檢測結(jié)果。
提出了一種采用改進(jìn)蝗蟲算法優(yōu)化Canny算子的雞蛋裂紋檢測方法。結(jié)果表明,通過設(shè)計(jì)改進(jìn)模糊C-均值算法、重新定義蝗蟲種群等級、編碼類型和更新方式,以及自適應(yīng)獲取Canny算子最優(yōu)參數(shù),可實(shí)現(xiàn)對不同類型雞蛋裂紋的有效檢測,具有一定意義的推廣應(yīng)用價值。后續(xù)將重點(diǎn)圍繞提升檢測速度問題,研究采用并行運(yùn)算技術(shù)以提高檢測時效性。