柳 歡 高亞蘭
(安徽理工大學(xué) 電氣與信息工程學(xué)院,安徽 淮南 232001)
邊緣是圖像的重要的特征,傳統(tǒng)的圖像邊緣檢測方法[1-3]的關(guān)鍵是閾值的選擇。Sobel 算子[4]對噪聲具有平滑作用,但它要人工設(shè)定閾值,如果閾值設(shè)定過大,會丟失邊緣,而閾值設(shè)定過小,會產(chǎn)生偽邊緣。
ABC 算法[5-6]是Karaboga 在研究了蜜蜂群體的活動規(guī)律之后,提出的一種將蜂群模型應(yīng)用到實際的求最優(yōu)解的問題中的方法。為了得到更準(zhǔn)確的邊緣,防止產(chǎn)生偽邊緣和丟失邊緣,本文將Sobel 和ABC 算法結(jié)合起來得到一個新算法,即ABCSobel 算法。
Sobel 邊緣檢測[7]使用圖1 中的模板來數(shù)字化近似一階導(dǎo)數(shù)和,那么圖像中任意一點(x,y)處的梯度值可按下式計算:
其中,
再通過設(shè)定閾值t,如果,在位置(x,y)處G≥t,則該點為邊緣點,反之則不是邊緣點。從而實現(xiàn)邊緣檢測。
圖1 Sobel 模板和圖像鄰域
Otsu 方法[8]思想:假設(shè)選定一個閾值t,C0是一組灰度值小于t 的像素,C1是一組灰度值大于t 等于的像素。Otsu 選最大化類間方差σ2B的閾值t,那么類間方差定義為:
其中,ω0為C0中像素點數(shù)占圖像總像素數(shù)的比例,ω1為C1中像素點數(shù)占圖像總像素數(shù)的比例,μ0為C0中平均像素灰度值,μ1為C1中平均像素灰度值,μT為圖像平均像素灰度值。
本文將Sobel 算子與ABC 算法結(jié)合起來,先得到梯度圖,再用ABC 算法搜索出最佳閾值,其中適應(yīng)度函數(shù)用內(nèi)間方差函數(shù),最后使用閾值法得到邊緣。
使用內(nèi)間方差作為評價函數(shù)的ABC 算法步驟如下:
步驟1:初始化種群。隨機(jī)產(chǎn)生個蜜源,第個蜜源位置為:
式中,xlb,xub為蜜源位置的可能取值的最小值和最大值。ri為[0,1]之間的隨機(jī)數(shù)。
步驟2:計算適應(yīng)度值。將類間方差作為適應(yīng)度函數(shù),利用式(4)計算適應(yīng)度值。
步驟3:雇傭蜂鄰域搜索。雇傭蜂在蜜源附近搜索新蜜源,第個新蜜源的位置為:
式中,k∈{1,2,…N},xi為舊的蜜源i 的位置,xk為隨機(jī)選取的不等于i 的蜜源k 的位置,Vi為產(chǎn)生的新蜜源的位置,Ri為在[-1,1]之間產(chǎn)生的隨機(jī)數(shù)。
步驟4:根據(jù)步驟2 中的適應(yīng)度函數(shù)判斷前后蜜源優(yōu)劣,雇傭蜂選擇較優(yōu)蜜源。
步驟5:觀察蜂選擇蜜源及鄰域搜索。隨機(jī)產(chǎn)生一個[0,1]之間的數(shù)r,若r<pi,則觀察蜂選擇該pi所對應(yīng)的蜜源i,否則繼續(xù)判斷下一蜜源。其中pi定義如下:
式中,fi為第i 個蜜源的適應(yīng)度值,i∈{1,2,…N},f 為所有的蜜源適應(yīng)度值,a,b 為常數(shù),選擇好蜜源后,觀察蜂再根據(jù)式6在該蜜源附近搜索,得到新蜜源。
步驟6: 比較步驟4 中雇傭蜂和步驟5 觀察蜂的花蜜源適應(yīng)度值,選擇適應(yīng)度值較高的花蜜源位置作為本次迭代的花蜜源位置,即雇傭蜂的位置。
步驟7:是否出現(xiàn)偵查蜂,設(shè)置一個參數(shù)cp,若cp 經(jīng)次循環(huán)后,一個蜜源仍沒有改變,那該蜜源對應(yīng)的雇傭蜂拋棄該蜜源,轉(zhuǎn)化成偵查蜂,按照式(5)隨機(jī)生成新蜜源。
步驟8:判斷算法是否結(jié)束,設(shè)置算法的最大循環(huán)次數(shù)max cycle,如果達(dá)到了最大循環(huán)次數(shù),那么結(jié)束并輸出最佳解,不然再轉(zhuǎn)到步驟2 重新搜索。
本文提出的邊緣提取算法步驟如下:
步驟1:對圖像進(jìn)行預(yù)處理。
步驟2:用2.1 節(jié)中介紹的Sobel 方法來得到預(yù)處理后圖像任意一點的梯度值。
步驟3: 用3.1 節(jié)中把類間方差當(dāng)作評價函數(shù)的ABC 算法搜索出最佳閾值t。
步驟4:利用步驟3 搜索的最佳閾值t 進(jìn)行邊緣提取,邊緣點為梯度值大于等于閾值t 的點,置為1,其余的置為0。
為了檢驗ABC-Sobel 的性能,并與傳統(tǒng)的提取邊緣方法相比,我們在MATLAB 環(huán)境中仿真。
實驗一: 本文方法與傳統(tǒng)的Sobel 方法進(jìn)行提取圖像邊緣比較,ABC-Sobel 中,取種群大小NP=20,cp=5,max cycle=50,xlb=0,xub=1,a=0.9,b=0.1,圖2 為仿真結(jié)果。
圖2 Sobel 和ABC-Sobel 邊緣檢測仿真結(jié)果
由圖可知,使用傳統(tǒng)Sobel 算法來獲得邊緣,閾值設(shè)置較高時會遺漏一些邊緣,反之則會得到一些虛假的邊緣,而ABCSobel 算法能夠主動搜索到最佳閾值,不需要用人工設(shè)置,且所得到的邊緣更加完整更準(zhǔn)確。
實驗二: 本文算法與Roberts、Prewitt 算法進(jìn)行提取圖像邊緣 比 較,ABC-Sobel 算 法 中,取 種 群 大 小,NP=20,cp=5,maxcycle=50,xlb=0,xub=1,a=0.9,b=0.1。圖3 顯示了仿真結(jié)果。
圖3 ABC-Sobel、Prewitt 和Roberts 提取邊緣仿真結(jié)果
由圖知,采用Prewitt 方法和Roberts 方法得到邊緣的方法容易遺漏一些邊緣,且所得的邊緣易斷點不連續(xù),而ABC-Sobel 算法能夠獲得到更加完整、清楚的邊緣。
針對Sobel 算法邊緣檢測的缺點,本文在Sobel 算法的閾值選取過程中引入了ABC 算法,很好的防止了閾值過高丟失邊緣,閾值過低產(chǎn)生偽邊緣的現(xiàn)象。仿真結(jié)果顯示,該算法能較好地自動提取圖像邊緣、檢測速度快及易實現(xiàn)全局最優(yōu)。
[1]蔡小瓊,賀賽先.一種快速自適應(yīng)邊緣提取方法的研究[J].計算機(jī)測量與控制,2006.14(3):307-309.
[2]孫慧,周紅霞,李朝暉等.圖像處理中邊緣檢測技術(shù)的研究[J].電腦開發(fā)與應(yīng)用,2002(10):8-10.
[3]陳彥燕,王元慶.常用邊緣檢測算法的定量比較[J].計算機(jī)工程,2008,34(17):202-204.
[4]王橋.數(shù)字圖像處理[M].北京:科學(xué)出版社,2009.
[5]Karaboga D,Basturk B.On the performance of artificial bee colony(ABC)algorithm[J].Applied Soft Computing,2008.8(1):687-697.
[6]畢曉君,王艷嬌.改進(jìn)人工蜂群算法[J].哈爾濱工程大學(xué)學(xué)報,2012,33(1):117-124.
[7]馬宇飛.基于梯度算子的圖像邊緣檢測算法研究[D].西安:西安電子科技大學(xué),2012.
[8] Otsu N.A Threshold Selection Method from Graylevel Histograms [J].IEEE Transactions on Syst-em Man and Cybernetic,1979,9(1):62-66.