馬啟良,胡水星,林冬茂,賈良權(quán),祁亨年
(1.湖州師范學(xué)院 信息技術(shù)中心,浙江 湖州 313000;2.湖州師范學(xué)院 信息工程學(xué)院,浙江 湖州 313000;3.湖州師范學(xué)院 研究生院,浙江 湖州 313000)
種子發(fā)芽受各種因素影響,如溫度、濕度、化學(xué)引發(fā)劑、菌類等.在不同條件和時(shí)間段內(nèi),種子芽根的生長速度明顯不同.為獲得在不同條件下和時(shí)間段內(nèi)種子芽根的生長情況,既要進(jìn)行大量的對比實(shí)驗(yàn),又要在特定條件下對種子的發(fā)芽情況和芽根生長情況進(jìn)行測量統(tǒng)計(jì).而計(jì)算種子的發(fā)芽勢、發(fā)芽率、發(fā)芽指數(shù)和活力指數(shù)等指標(biāo),又需要做大量且重復(fù)的測量和統(tǒng)計(jì)工作.目前的操作方法有通過人工用線對幼苗根芽長度進(jìn)行測量,也有利用定制的標(biāo)有刻度的專用實(shí)驗(yàn)設(shè)備進(jìn)行測量,然后人工讀取數(shù)據(jù)[1-2].這些方法雖能達(dá)到預(yù)期的實(shí)驗(yàn)效果,但操作工序煩瑣,且對種子的芽根有一定損傷,不利于發(fā)芽實(shí)驗(yàn)的可持續(xù)觀察,工作效率低下.
目前,有將種子置于培養(yǎng)試紙上培養(yǎng)的方法,但這種方法的種子放置密度較高,芽根長出后,每粒種子的芽根基本都交織在一起,很難從芽根系圖像中提取芽根.從發(fā)展進(jìn)程看,種子芽根系圖像分割主要有手動分割、半自動分割和自動分割3種[2-4].手動分割準(zhǔn)確度高,但費(fèi)時(shí)費(fèi)力;半自動分割很難對圖像進(jìn)行批量處理;自動分割雖能批量處理圖像,但準(zhǔn)確度低于手動分割.在處理種子芽根系圖像時(shí),為對芽根長度參數(shù)進(jìn)行分析,首先需要對種子芽根系圖像進(jìn)行準(zhǔn)確分割,才能提取出種子芽根系部分,圖像分割效果的好壞直接影響種子芽根長度統(tǒng)計(jì)的準(zhǔn)確性.因此,種子芽根系圖像分割是難點(diǎn)也是重點(diǎn).
本文主要從三方面給出解決方法:一是玉米種子芽根苗圖像的分割,重點(diǎn)介紹模糊C-均值聚類算法(FCM)[5-10]、基于直方圖的快速模糊C-均值聚類(FFCM)算法[11-13]和基于烏鴉搜索算法的快速模糊C-均值聚類算法(CSA-FFCM)[14-16],并根據(jù)聚類結(jié)果的隸屬度值確定分割閾值,從而對圖像進(jìn)行分割處理;二是在二值圖像中識別出每粒玉米種子芽根區(qū)域并進(jìn)行個(gè)數(shù)統(tǒng)計(jì);三是對每粒玉米種子芽根區(qū)域的二值圖像進(jìn)行細(xì)化操作,計(jì)算玉米種子芽根長度.
本研究在64位Windows 7操作系統(tǒng)下,通過USB高清攝像頭進(jìn)行玉米種子芽根圖像采集,利用Visual C+軟件和OpenCV庫實(shí)現(xiàn)相關(guān)算法研究.由于前期培養(yǎng)時(shí)玉米種子放置得較密集,導(dǎo)致玉米種子芽根交織在一起.為進(jìn)一步研究,在放置玉米種子芽根苗時(shí)保持種子芽根間相對獨(dú)立,見圖1.
圖1 實(shí)驗(yàn)室中玉米種子芽根苗圖像Fig.1 Image of corn seed bud and root in the laboratory
在同一環(huán)境下,發(fā)芽階段的種子芽根長度能夠反映種子生長的好壞狀況.為能快速、準(zhǔn)確地獲取玉米種子的芽根生長情況,本研究將基于CSA優(yōu)化的FFCM算法用于玉米種子芽根圖像的分割和細(xì)化,并統(tǒng)計(jì)玉米種子芽根長度.算法流程如圖2所示.
圖2 算法流程Fig.2 Flow of algorithm
近幾年,自然啟發(fā)式優(yōu)化算法在聚類問題上得到大量應(yīng)用,以克服傳統(tǒng)聚類算法對聚類中心初始值選擇過于敏感,且易陷入局部最優(yōu)的問題[15].自2016年Askarzadeh提出CSA算法[16]以解決約束工程優(yōu)化問題后,CSA算法得到了廣泛應(yīng)用.王麗婷等用該算法優(yōu)化SVM參數(shù)[14];Ahmed等利用該算法優(yōu)化FCM算法,用于農(nóng)作物的識別[18];Pankaj等用該算法優(yōu)化基于Kapur熵的多級閾值的選優(yōu)[19];王穎等用該算法解決機(jī)器學(xué)習(xí)在特征選擇中的不足[20],且驗(yàn)證了CSA優(yōu)于其它優(yōu)化算法(如粒子群優(yōu)化(PSO)、差分進(jìn)化(DE)、灰狼優(yōu)化器(GWO)、蛾-火焰優(yōu)化(MFO)和布谷鳥搜索(CS));宋濤等改進(jìn)PSO算法優(yōu)化核SVR的鋰離子電池剩余壽命估計(jì)[26].
FCM算法最早是由Dunn[5]根據(jù)RusPini定義的模糊劃分概率提出的.Bezdek對Dunn的目標(biāo)函數(shù)進(jìn)行改進(jìn),得到了每個(gè)樣本點(diǎn)對所有聚類中心的隸屬度,從而決定對樣本點(diǎn)的類屬進(jìn)行自動分類[6].目標(biāo)函數(shù)定義為:
(1)
其中:U為隸屬度矩陣;V為聚類中心集;D為數(shù)據(jù)集中數(shù)據(jù)總個(gè)數(shù);N為設(shè)置的聚類中心數(shù)(2≤N≤D);m為加權(quán)指數(shù),一般取值為2;uij為數(shù)據(jù)點(diǎn)xi到聚類中心cj的隸屬度,數(shù)據(jù)點(diǎn)xi到所有聚類中心的隸屬度總和為1.如式(2)所示:
(2)
其中,dij表示數(shù)據(jù)點(diǎn)xi到聚類中心cj的歐幾里得距離.如式(3)所示:
(3)
FCM算法的實(shí)現(xiàn)步驟如下:
步驟1:初始化隸屬度矩陣U,使其滿足式(2).
步驟2:輸入灰度圖像,根據(jù)式(4)計(jì)算N個(gè)聚類中心點(diǎn)cj,j=1,2,…,N.
(4)
步驟3:根據(jù)目標(biāo)函數(shù)式(1)計(jì)算目標(biāo)函數(shù)值.如果目標(biāo)函數(shù)值小于某個(gè)確定的閾值或相對上次目標(biāo)函數(shù)值的改變量小于某個(gè)閾值,則算法結(jié)束.
步驟4:根據(jù)式(5)計(jì)算新的隸屬度矩陣U.返回步驟2,繼續(xù)迭代循環(huán),直到算法結(jié)束.
(5)
在標(biāo)準(zhǔn)的FCM算法中,要計(jì)算圖像中每個(gè)像素到所有聚類中心的隸屬度,并在算法收斂前更新一次聚類中心,需要對所有像素的隸屬度進(jìn)行再次計(jì)算,直至算法結(jié)束.但其忽略了圖像本身所具有的數(shù)據(jù)冗余特性.當(dāng)輸入圖像的分辨率增大時(shí),算法的時(shí)間復(fù)雜度會迅速增高,從而導(dǎo)致算法效率低下.因此,使用圖像的灰度直方圖代替原始圖像,利用圖像中存在的大量冗余數(shù)據(jù)去除冗余數(shù)據(jù),能避免大量相同灰度值隸屬度的重復(fù)計(jì)算,有效改善FCM算法的計(jì)算效率,且不受輸入圖像大小的限制,大大降低FCM算法的復(fù)雜度[7].
該算法首先對輸入圖像進(jìn)行均值濾波處理,統(tǒng)計(jì)濾波后圖像的灰度直方圖,獲取最大灰度值Imax和最小灰度值Imin,再在Imin和Imax之間隨機(jī)選擇兩個(gè)聚類中心,根據(jù)式(5)計(jì)算直方圖每個(gè)灰度級的隸屬度.在計(jì)算目標(biāo)函數(shù)值和更新聚類中心時(shí),對FCM算法的式(1)和式(4)進(jìn)行修改,如式(6)和式(7):
(6)
(7)
其中:H[i]為圖像的灰度直方圖;i為直方圖的灰度級(0~255).
該算法在運(yùn)行速度上遠(yuǎn)超F(xiàn)CM算法.但在初始化參數(shù)時(shí)是根據(jù)一定經(jīng)驗(yàn)標(biāo)準(zhǔn)選擇的,如果初始聚類中心位置設(shè)置為接近局部最優(yōu)值,算法將收斂到一個(gè)局部極值.為達(dá)到更好的分割效果,只能通過多次試驗(yàn)后進(jìn)行相對的選擇,否則將無法自動收斂到全局最優(yōu)值.因此,考慮使用CSA來優(yōu)化FFCM算法.CSA算法具有獲得全局最優(yōu)值的優(yōu)勢,且很難落入局部解[12].
2.3.1CSA算法的基本原理
烏鴉搜索算法(CSA)是一種全局優(yōu)化算法,是模擬一群烏鴉覓食的智能行為.烏鴉通過跟蹤其它烏鴉,發(fā)現(xiàn)其隱藏食物的地方,一旦它們離開,將竊取它們的食物.但如果其它烏鴉發(fā)現(xiàn)自己被跟蹤,它們將會根據(jù)自己竊取食物的經(jīng)驗(yàn)來避免自己成為受害者,從而選擇最安全的路線來保護(hù)自己的食物.CSA算法的詳細(xì)步驟如下:
步驟一:在n維搜索空間中,初始化所有烏鴉的位置X及最佳存放食物的位置M,以及烏鴉的意識概率AP和飛行長度FL.
步驟二:利用式(6)的目標(biāo)函數(shù)評估每只烏鴉所在位置的好壞.
步驟三:更新所有烏鴉的位置信息.例如烏鴉i尋找新的位置,隨機(jī)選擇另一只烏鴉j進(jìn)行跟蹤,如果沒有被烏鴉j發(fā)現(xiàn),烏鴉i將根據(jù)式(8)得到新的位置.其中,rd為一個(gè)在0~1之間均勻分布的隨機(jī)數(shù);Mj為烏鴉j的最佳存放食物位置;Xi為烏鴉i的位置.
(8)
如果烏鴉i被烏鴉j發(fā)現(xiàn),烏鴉j將隨機(jī)選擇一個(gè)位置來愚弄烏鴉i.此時(shí)烏鴉i將根據(jù)式(9)得到新的位置.
(9)
因此,在每次迭代中,將根據(jù)式(10)更新位置信息.其中,rd、rj為在0~1之間均勻分布的隨機(jī)數(shù);Xi,iter為在迭代iter時(shí)烏鴉i的位置;Mj,iter為在迭代iter時(shí)烏鴉j的最佳存放食物位置.
(10)
步驟四:在得到所有烏鴉的新位置后,通過目標(biāo)函數(shù)評估新位置的可行性.如果目標(biāo)函數(shù)值小于上一次的值,則更新烏鴉的最佳存放食物位置M,如式(11)所示.其中,f(·)為式(6)的目標(biāo)函數(shù).
(11)
步驟五:如果終止條件滿足或迭代結(jié)束,最優(yōu)解將是目標(biāo)函數(shù)值最小的烏鴉所存放食物的位置M.否則,返回步驟三.
2.3.2 CSA優(yōu)化FFCM算法
FFCM算法的結(jié)果易受聚類中心初始位置的影響.本文引入CSA全局優(yōu)化算法,解決FFCM算法參數(shù)初始化問題.該過程主要包括3個(gè)階段:一是初始化CSA相關(guān)參數(shù),包括烏鴉的種群大小、意識率、飛行步長、問題維度和最大迭代次數(shù),其中問題維度表示所需的聚類中心數(shù),以聚類中心的位置作為烏鴉的位置;二是CSA算法對烏鴉位置信息的迭代選優(yōu);三是在得到最優(yōu)的烏鴉位置后計(jì)算每個(gè)灰度級的隸屬度,再根據(jù)隸屬度的大小確定每個(gè)灰度級歸屬的聚類中心.對灰度值大的一類取所有灰度級最小值,對灰度值小的一類取所有灰度級最大值,再將最大值和最小值的平均值作為圖像分割的閾值,以達(dá)到自適應(yīng)閾值的目的,為自動化測定奠定基礎(chǔ).
利用上述算法分別對兩幅圖像進(jìn)行聚類分析.初始聚類中心都以隨機(jī)方式進(jìn)行初始化.3種算法的聚類結(jié)果見表1.CSA-FFCM算法的相關(guān)參數(shù)初始化如下:烏鴉種群數(shù)量為20只,問題維度為2,最大迭代次數(shù)為300,飛行步長為1,意識率為0.15,烏鴉的初始位置是在圖像直方圖最大值與最小值之間隨機(jī)生成的2維向量.CSA-FFCM算法的詳細(xì)流程見圖3.
表1 FCM、FFCM和CSA-FFCM算法的聚類結(jié)果
圖3 CSA-FFCM算法詳細(xì)流程Fig.3 Detailed process of CSA-FFCM algorithm
由表1可見,F(xiàn)CM算法的處理時(shí)間最長,且受圖像分辨率的影響,分辨率越大處理時(shí)間越長;FFCM算法利用直方圖優(yōu)化FCM,處理時(shí)間短,且不受圖像分辨率的影響;本文提到的CSA-FFCM算法在FFCM算法的基礎(chǔ)上進(jìn)行優(yōu)化,解決了FCM、FFCM算法易受聚類中心初始位置影響的問題,且用時(shí)較FCM短.3種算法收斂的聚類中心基本一致.3種算法對玉米種子芽根圖像的分割結(jié)果見圖4.
圖4 CSA-FFCM、FFCM和FCM算法的圖像分割結(jié)果Fig.4 Image segmentation results of CSA-FFCM, FFCM and FCM algorithms
從圖4的分割結(jié)果可以看出,玉米種子芽根整體的連通性、邊緣的平滑性等達(dá)不到對圖像分析和識別的效果.本文對CSA-FFCM分割結(jié)果做進(jìn)一步處理,使其更具有連通性和平滑性,即用數(shù)學(xué)形態(tài)學(xué)方法[17,21-22]對二值圖像先后進(jìn)行膨脹運(yùn)算和腐蝕運(yùn)算,并對圖像進(jìn)行平滑處理(圖5(a)),同時(shí)去除二值圖像中的小連通區(qū)域(圖5(b)).
從處理后的二值圖像中分割出每株玉米種子芽根區(qū)域,再分別進(jìn)行細(xì)化處理.細(xì)化的目的是抽取芽根圖像的骨架,讓其像素寬度為1,以方便后續(xù)的統(tǒng)計(jì)分析.本文采用Hildich細(xì)化算法[23-25],細(xì)化處理結(jié)果見圖5(c).
圖5 種子芽根圖像的算法處理結(jié)果Fig.5 Algorithm processing results of seed bud root image
原圖的二值化圖像在細(xì)小的根尖處出現(xiàn)斷裂、不連續(xù)等情況,經(jīng)過形態(tài)學(xué)方法處理后,圖像得到明顯增強(qiáng),且不連續(xù)的情況得到有效改善;經(jīng)平滑處理并去除斷裂不連續(xù)的小連通區(qū)域后,目標(biāo)更加顯著,有利于目標(biāo)的分割與統(tǒng)計(jì).每個(gè)目標(biāo)經(jīng)過細(xì)化處理得到芽根骨架圖.
經(jīng)細(xì)化處理后,每粒玉米種子根芽區(qū)域只保留像素寬度為1的骨架結(jié)構(gòu),且是連續(xù)的.此時(shí)圖像上的像素點(diǎn)主要分為3種類型:端點(diǎn)、分支點(diǎn)和連接點(diǎn).端點(diǎn)表示該像素點(diǎn)的8鄰域只有一個(gè)像素與之相鄰,在骨架圖中表現(xiàn)為起點(diǎn)或末端點(diǎn).分支點(diǎn)表示該像素點(diǎn)的8鄰域有3個(gè)或3個(gè)以上的像素點(diǎn)與之相鄰,且這3個(gè)像素點(diǎn)相互間不存在4鄰域的情況,在骨架圖像中表現(xiàn)為分叉點(diǎn).連接點(diǎn)表示該像素點(diǎn)的8鄰域有2個(gè)像素點(diǎn)與之相鄰,在骨架圖中表現(xiàn)為中間點(diǎn).
由于玉米種子芽根圖像的特殊性,在統(tǒng)計(jì)長度時(shí)從骨架圖左端開始逐一對每個(gè)芽根骨架進(jìn)行統(tǒng)計(jì),找到頂部末端后開始往下搜索,統(tǒng)計(jì)骨架圖頂部端點(diǎn)到所有分支末端點(diǎn)的長度,以最長的分支為芽根的總長度.本文通過PS測量工具對圖片中11株種子芽根長度分別進(jìn)行測量,并將其作為標(biāo)準(zhǔn)長度對采用本文方法自動檢測的結(jié)果進(jìn)行誤差分析,結(jié)果見表2.
表2 兩組圖像中芽根手工測量長度與本文方法自動測量長度比較
從表2可以看出,采用自動測量的玉米種子芽根長與采用PS測量的玉米種子芽根長的誤差均小于5%.
CSA-FFCM算法首先通過烏鴉的智慧搜索能力,找出最佳閾值并分割種子芽根目標(biāo);再在識別出每株種子芽根區(qū)域后,分別對其進(jìn)行細(xì)化處理,得到玉米種子芽根的骨架圖;最后自動測量測得玉米種子芽根骨架的長度.該方法由于利用了直方圖,其處理速度對圖像分辨率大小不敏感,因此要盡可能地通過提高拍攝圖像的分辨率來增加測量精度.本研究選擇玉米種子的幼苗進(jìn)行算法研究.實(shí)驗(yàn)結(jié)果證明,該算法應(yīng)用于玉米幼苗芽根長度的計(jì)算是可行的.本研究為后期自動化測量設(shè)備的設(shè)計(jì)和實(shí)時(shí)批量處理種子芽根圖像提供了強(qiáng)有力的理論和技術(shù)參考.