郭超凡, 王旭明, 石晨宇, 靳 鴻
(1. 中北大學(xué) 電氣與控制工程學(xué)院, 山西 太原 030051; 2. 杭州山億建設(shè)有限公司, 浙江 杭州 311300)
國家脫貧攻堅(jiān)取得了全面勝利, 為了鞏固脫貧成果, 需要全面推進(jìn)鄉(xiāng)村振興戰(zhàn)略, 其中包括加快農(nóng)業(yè)信息化建設(shè), 開展建設(shè)試點(diǎn), 實(shí)施智慧農(nóng)業(yè)工程, 推進(jìn)質(zhì)量興農(nóng)等[1]. 智慧農(nóng)業(yè)將新興技術(shù)和傳統(tǒng)農(nóng)業(yè)深度融合, 從而實(shí)現(xiàn)農(nóng)業(yè)的信息智能化, 提升農(nóng)作物質(zhì)量, 提高產(chǎn)量[2]. 然而, 農(nóng)作物病蟲害是影響質(zhì)量和產(chǎn)量的一個(gè)重要因素, 如果在農(nóng)作物生長的早期發(fā)現(xiàn)并及時(shí)防治, 可以極大地提升農(nóng)作物的質(zhì)量與產(chǎn)量. 隨著機(jī)器視覺與深度學(xué)習(xí)的快速發(fā)展, 農(nóng)作物病蟲害識別也取得了一系列實(shí)質(zhì)性突破[3]. 利用圖像處理操作將農(nóng)作物與背景分離之后再進(jìn)行識別是當(dāng)前農(nóng)作物病蟲害識別的方法之一, 其中圖像分割是將農(nóng)作物與背景分離的重要步驟.
基于閾值[4]和聚類[5]的圖像分割方法應(yīng)用較廣. 閾值分割法是設(shè)置灰度閾值從而將像素點(diǎn)分為不同的類, 雖然處理速度較快, 但確定合適的閾值比較困難, 特別是對于背景信息較復(fù)雜的圖像. Kmeans算法因?yàn)楹唵巍?快速的優(yōu)點(diǎn)被廣泛應(yīng)用在圖像聚類分割中, 然而Kmeans初始聚類中心選擇不合適將會導(dǎo)致分割效果不理想, 且存在易陷入局部最優(yōu)解的問題. 為了解決Kmeans算法初始聚類中心選擇的問題, 并且在一定程度上避免陷入局部最優(yōu), 引入了群智能優(yōu)化算法并取得了較好的效果[6-8].
本文提出一種利用群智能優(yōu)化算法中的烏鴉搜索算法[9]與Kmeans聚類算法相結(jié)合進(jìn)行玉米葉片圖像分割的方法. 本方法具有良好的全局搜索能力, 可以有效解決Kmeans算法存在的問題, 并提高聚類分割的準(zhǔn)確度.
玉米葉片圖像如圖 1 所示, 包含陰天、 晴天、 有雜草、 多株的情況, 圖片分辨率為640×480.
圖 1 玉米葉片圖像
圖像處理中常見的顏色空間有RGB(Red紅色, Green綠色, Blue藍(lán)色)、 HSV(Hue色調(diào), Saturation飽和度, Value明度)等. 自然環(huán)境下拍攝的圖像非常容易受到光照的影響, 對亮度較為敏感, 但RGB顏色空間的3個(gè)分量都和亮度緊密相關(guān), 如果使用RGB顏色空間描述不同光照下同一場景的圖像會顯示不同的RGB值, 不利于后期的圖像分割. HSV顏色空間的色調(diào)H分量和飽和度S分量受光照的影響相對較小[10], 而且H分量與物體表面的反射率有關(guān), 其值唯一, 所以選擇H分量進(jìn)行處理[11].
RGB顏色空間下常用的是灰度圖, 為了進(jìn)行對比, 將玉米葉片圖像轉(zhuǎn)為灰度圖像如圖 2 所示, 轉(zhuǎn)到HSV空間獲取H分量如圖 3 所示.
圖 2 灰度圖
圖 3 HSV空間的H分量圖
1.3.1 Kmeans算法
Kmeans聚類算法的主要作用是將相似樣本自動劃分到一個(gè)類別中, 通過指定類別數(shù)k, 將輸入樣本劃分為k個(gè)不相交的子集, 從而實(shí)現(xiàn)聚類為k個(gè)簇的效果. 玉米葉片圖像普遍可以分為玉米葉片和土地背景兩部分, 可以使用Kmeans聚類算法進(jìn)行圖像分割來提取玉米葉片信息. 算法具體步驟如圖 4 所示.
圖 4 Kmeans算法流程圖
評估準(zhǔn)則函數(shù)為簇內(nèi)誤差平方和SSE (Sum of the Squared Error), 如式(1)所示. 聚類的過程就是搜索能夠最小化SSE的聚類中心.
(1)
式中:k為簇的數(shù)目;Ci為第i個(gè)簇的數(shù)據(jù)集合;μi為簇Ci的中心點(diǎn);x為簇Ci中的數(shù)據(jù)樣本.
1.3.2 烏鴉搜索算法(CSA)
烏鴉群中存在一種與優(yōu)化過程極其相似的行為: 烏鴉會將多余的食物藏在環(huán)境中某個(gè)隱蔽的地方, 在它需要的時(shí)候取回藏起來的食物. 為了獲得更加優(yōu)質(zhì)的食物來源, 烏鴉會互相跟蹤去竊取其它烏鴉所儲藏的食物. 烏鴉搜索算法試圖模擬烏鴉的智能行為來尋找優(yōu)化問題的解決方案[9].
xi,iter+1=
(2)
式中:ri和rj為0~1之間的一個(gè)隨機(jī)數(shù);APj,iter是烏鴉j在第iter次循環(huán)中的感知概率;fli,iter為飛行長度;xi,iter和xi,iter+1分別為第i只烏鴉在第iter和iter+1次循環(huán)時(shí)的位置;mj,iter為第j只烏鴉在第iter次循環(huán)時(shí)的記憶位置.
(3)
式中:mi,iter和mi,iter+1分別為第i只烏鴉在第iter和iter+1次循環(huán)時(shí)的記憶位置;f(·)表示適應(yīng)度值.
算法具體步驟如圖 5 所示.
圖 5 烏鴉搜索算法流程圖
1.3.3 CSA-Kmeans混合聚類算法
Kmeans算法需要初始化聚類中心, 而初始聚類中心的選擇會影響聚類效果, 如果初始值選得不好, 有時(shí)甚至沒有辦法獲得有效的聚類結(jié)果. 初始聚類中心可以事先指定或者在數(shù)據(jù)集中隨機(jī)抽取. 隨機(jī)選擇不能保證初始值選擇得合適, 事先指定只能針對特定的圖像去設(shè)置專用的初始聚類中心, 缺乏自主靈活性. 而CSA不是一種貪婪算法, 這樣會增加生成解的多樣性, 降低最終得到的是局部最優(yōu)解的可能性; 同時(shí), CSA收斂速度較快, 可以使用CSA獲取初始聚類中心供Kmeans算法使用, 這樣能夠提高算法的全局優(yōu)化能力, 改善初始聚類質(zhì)量. 具體步驟如下:
1) 優(yōu)化問題設(shè)為最小化適應(yīng)度函數(shù), 從而得到最優(yōu)的聚類中心. 將玉米葉片圖像的像素點(diǎn)作為搜索空間, 設(shè)聚類數(shù)為K, 則決策變量為K.鴉群大小設(shè)為N, 而每只烏鴉都是一個(gè)可行解, 所以每只烏鴉就是一種可能的聚類中心組合.最大迭代次數(shù)設(shè)為itermax, 飛行長度設(shè)為fl, 感知概率設(shè)為AP.
2) 初始化每只烏鴉的位置和記憶. 在搜索空間中隨機(jī)放置N只烏鴉得到初始位置,K為決策變量的個(gè)數(shù), 同時(shí)將第一次迭代中烏鴉的記憶位置設(shè)置為初始位置的值, 如式(4)和式(5)所示.
(4)
(5)
3) 計(jì)算烏鴉的適應(yīng)度. 適應(yīng)度函數(shù)如式(6)所示.
(6)
4) 生成新的位置. 如式(2)所示, 重復(fù)此過程更新所有烏鴉的位置.
5) 檢查新位置的可行性. 若新位置可行則更新, 否則保持原位置不變. 由于聚類中心一定為某個(gè)像素值, 所以新位置的每一個(gè)元素必須在0~255之間, 更新位置的函數(shù)如式(7)所示.
(7)
6) 計(jì)算新位置的適應(yīng)度. 其函數(shù)如式(6)所示.
7) 更新烏鴉的記憶. 若新位置的適應(yīng)度優(yōu)于記憶中儲存的位置的適應(yīng)度則更新記憶, 否則保持原來的記憶, 如式(3)所示.
8) 重復(fù)步驟4)~7), 直到滿足終止條件, 然后將烏鴉記憶中儲存的適應(yīng)度最高的位置作為優(yōu)化問題的最優(yōu)解.
9) 將上一步中得到的最優(yōu)解作為Kmeans算法的初始聚類中心, 執(zhí)行Kmeans算法實(shí)現(xiàn)玉米葉片圖像分割.
由于要將玉米葉片與背景分離開, 所以選擇聚類數(shù)為2, 將得到的灰度圖和H分量圖像進(jìn)行CSA-Kmeans聚類分割, 結(jié)果如圖 6 和圖 7 所示.
圖 6 灰度圖的聚類分割圖
圖 7 H分量圖的聚類分割圖
由圖 6 和圖 7 對比可知, 灰度圖像受光照與背景復(fù)雜程度的影響較大, 分割效果不太理想, 相比而言, H分量圖分割效果較好.
大部分噪點(diǎn)相比于玉米葉片和背景而言呈現(xiàn)出孤立存在、 面積較小等特點(diǎn), 可以使用小面積去除的方法消除這些噪點(diǎn). 首先標(biāo)記二值圖像中所有的連通區(qū)域, 然后刪除掉面積小于閾值的連通區(qū)域. 由于噪點(diǎn)與病害斑點(diǎn)呈現(xiàn)出細(xì)小離散的特點(diǎn), 所以, 此處閾值選取固定值, 設(shè)為圖像大小的1/50. 作物和背景中都存在噪點(diǎn), 對聚類分割得到的圖像和反色后的圖像都執(zhí)行小面積去除操作可以有效地消除噪點(diǎn), 如圖 8 所示.
圖 8 小面積去除
使用小面積去除后的模板在原圖上提取玉米葉片, 如圖 9 所示.
圖 9 玉米葉片提取
將圖像轉(zhuǎn)化到HSV空間后提取到的H分量圖(圖 3)中存在白色斑點(diǎn), 由于Kmeans聚類算法受初始聚類中心的影響較大, 存在易陷入局部最優(yōu)的問題, 所以圖像分割時(shí), 有時(shí)會出現(xiàn)誤分割, 將白色斑點(diǎn)作為一類, 而將玉米葉片與土地背景歸為了一類, 如圖 10 所示.
圖 10 誤分割圖
誤分割會導(dǎo)致后續(xù)玉米葉片提取的失敗, 為了比較算法的性能, 定義分割準(zhǔn)確率Sa為
(8)
式中:m為正確分割的次數(shù);n為總的分割次數(shù).
運(yùn)行算法的軟件平臺為Windows10操作系統(tǒng)下的python 3.7; 硬件平臺為Intel(R) Pentium(R) CPU G4560 @ 3.50 GHz 3.5 GHz處理器, 8 G 內(nèi)存.
烏鴉搜索算法的參數(shù)如下: 鴉群大小N=10, 最大迭代次數(shù)itermax=50, 感知概率AP=0.1, 飛行長度fl=2.
對圖 3 所示的陰天、 晴天、 有雜草、 多株圖像的H分量圖分別使用Kmeans和CSA-Kmeans算法進(jìn)行500次聚類分割, 得到的平均運(yùn)行時(shí)間和分割準(zhǔn)確率對比如表 1 所示.
表 1 兩種算法的對比結(jié)果
由表 1 可知, CSA-Kmeans算法的分割準(zhǔn)確率高于單獨(dú)使用Kmeans算法的分割準(zhǔn)確率, 而單獨(dú)使用Kmeans算法耗時(shí)少于CSA-Kmeans算法. CSA-Kmeans算法需要先使用CSA搜索聚類中心, 再執(zhí)行Kmeans算法, 所以運(yùn)行時(shí)間大于單獨(dú)使用Kmeans算法; 此外, 運(yùn)行時(shí)間還與CSA中的可調(diào)變量如鴉群數(shù)、 迭代次數(shù)等有關(guān).
在陰天、 晴天、 有雜草、 多株各20張圖片上進(jìn)行兩種算法的聚類分割對比顯示, CSA-Kmeans算法的分割正確率均大于等于單獨(dú)使用Kmeans算法的分割正確率, 表明了改進(jìn)算法的有效性; 平均運(yùn)行時(shí)間均大于單獨(dú)使用Kmeans算法的平均運(yùn)行時(shí)間, 說明改進(jìn)算法在運(yùn)行時(shí)間上略差.
利用Kmeans評估準(zhǔn)則函數(shù), 得到圖像正確分割(見圖 7)和錯誤分割(見圖 10)時(shí)的簇內(nèi)誤差平方和, 如表 2 所示.
表 2 圖像分割的簇內(nèi)誤差平方和
由表 2 可知, 圖像錯誤分割時(shí)的簇內(nèi)誤差平方和大于正確分割的簇內(nèi)誤差平方和. Kmeans算法聚類分割就是迭代尋找可以最小化簇內(nèi)誤差平方和的解的過程, 誤分割的簇內(nèi)誤差平方和大于正確分割的, 說明在聚類分割過程中, Kmeans算法受初始聚類中心的影響較大, 易陷入局部最優(yōu)解而出現(xiàn)沒有跳出局部最優(yōu)的情況進(jìn)而導(dǎo)致誤分割.
結(jié)合表 1 所示的兩種算法正確率的對比結(jié)果, 可以看出CSA-Kmeans算法利用烏鴉搜索算法的全局尋優(yōu)能力對Kmeans算法進(jìn)行改進(jìn), 在一定程度上可以優(yōu)化Kmeans算法易陷入局部最優(yōu)的問題, 從而提高分割準(zhǔn)確率.
圖 11 為玉米葉片病害斑點(diǎn)圖. 在圖 11(a)~(c)存在病害斑點(diǎn)的玉米葉片中, 圓框標(biāo)記了部分病害斑點(diǎn)被保留的情況, 而方框標(biāo)記了病害斑點(diǎn)被忽略的情況. 當(dāng)病害斑點(diǎn)出現(xiàn)在葉片非邊緣位置時(shí), 使用小面積去除法可以將其保留在葉片上供后續(xù)研究; 但是當(dāng)病害斑點(diǎn)出現(xiàn)在葉片邊緣且與大片土地背景連通時(shí), 小面積去除法會將其與土地背景歸為一類而忽略掉. 圖 11(d) 中由于沒有病害而被完整保留.
圖 11 玉米葉片病害斑點(diǎn)圖
玉米葉片分割提取會受光照影響而導(dǎo)致識別精度不高, 使用HSV顏色空間的H分量進(jìn)行圖像處理可以降低光照的影響; CSA和Kmeans結(jié)合的算法可以有效提升圖像分割的準(zhǔn)確性. 對于葉片上的病害斑點(diǎn), 如果出現(xiàn)在葉片邊緣且與土地背景相連呈現(xiàn)出非孤立點(diǎn)的狀態(tài), 小面積去除法無法將其消除, 這時(shí)分割的葉片是不完整的. 下一步研究將著重解決非孤立病害斑點(diǎn)如何保留, 以及對算法運(yùn)行時(shí)間進(jìn)行優(yōu)化.