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