賈挺猛,荀 一,鮑官軍,董 茂,楊慶華
(浙江工業(yè)大學(xué) 特種裝備制造與先進加工技術(shù)教育部/浙江省重點實驗室,浙江 杭州 310014)
在葡萄生產(chǎn)作業(yè)中,為了提高果實品質(zhì),增加產(chǎn)量,果農(nóng)需要對葡萄樹進行整枝修剪。葡萄樹修剪作業(yè)勞動強度較大,而目前機械化水平非常低,果農(nóng)迫切需要高效省力的設(shè)備[1],將他們從繁重的手工勞動中解救出來。因此,開展剪枝機器人的研究具有重要的實用價值[2]。
將機器視覺技術(shù)應(yīng)用于工程中可以實現(xiàn)農(nóng)業(yè)生產(chǎn)與管理的自動化和智能化。鑒于葡萄樹枝上的各個芽粗細不均勻、形狀不規(guī)則,直接從形態(tài)上檢測并確定芽點位置具有一定的難度。
本研究采用機器視覺技術(shù)識別葡萄樹枝干并提取葡萄樹枝骨架,作為進一步確立葡萄樹的芽點以及剪枝點的基礎(chǔ)[3]。樹枝骨架提取的優(yōu)劣直接影響葡萄樹枝芽點的識別。
實驗研究的對象是葡萄冬剪之前的樹枝,品種采用我國栽種面積最廣的巨峰葡萄樹,實驗樣本取自于杭州市蕭山區(qū)海棠葡萄園,樣本采用Y型種植方式,樹齡為3年。
本研究以室內(nèi)白色墻為背景采集葡萄樹枝圖像,在主動光源下,通過CCD工業(yè)攝像機采集巨峰葡萄樹圖像。
本研究采集到的圖像是24位的彩色圖像。為了減少圖像數(shù)據(jù)計算量,筆者將彩色圖像中的3種基本顏色分量的亮度作為3個灰度圖像的灰度值,輸出R、G、B3個分量的直方圖,對目標圖像樹枝和背景圖像的灰度值分布情況進行了對比分析,發(fā)現(xiàn)B分量圖中目標圖像樹枝的灰度值較為集中,與背景圖像的灰度值區(qū)分最明顯,相對較適合提取樹枝對象。
因此,本研究選用B分量圖作為后續(xù)處理圖像,葡萄樹B分量圖像如圖1所示。
圖1 葡萄樹B分量圖像
本研究根據(jù)圖像中背景與目標像素灰度值的分布特點,采用領(lǐng)域加權(quán)平均去除圖像中的污點和部分背影,選擇合理的閾值進行圖像分割,即可消除鐵絲、陰影,并得到葡萄樹枝二值圖像。鑒于葡萄樹枝二值圖像提取不夠完整,且出現(xiàn)空洞的現(xiàn)象,本研究運用閉運算,以填充空白區(qū)域。
經(jīng)過以上處理后得到的葡萄樹二值圖像如圖2所示。
圖2 預(yù)處理后的葡萄樹二值圖像
骨架的提取一般采用細化算法。已有的細化算法按迭代方式不同分為串行算法和并行算法。串行細化即是一邊檢測滿足細化條件的點一邊刪除細化點,并行細化即是檢測細化點的時候不進行點的刪除只進行標記,而在檢測完整幅圖像后一次性去除要細化的點。由于串行細化算法的處理結(jié)果依賴于對像素處理的先后順序,像素點的消除或保留不可預(yù)測;而并行細化算法在對圖像進行細化時利用相同的條件同時檢測所有像素點,其結(jié)果具有各向同性,因此從算法原理上看,并行方法優(yōu)于串行方法[4]。目前應(yīng)用比較廣泛的并行細化算法有形態(tài)學(xué)細化算法[5]、Zhang細化算法[6]、Rosenfeld細化算法[7]。
數(shù)學(xué)形態(tài)學(xué)的基本運算有膨脹(或擴張)、腐蝕(或侵蝕)、開啟和閉合4種。研究者通過基本運算還可推導(dǎo)和組合成各種數(shù)學(xué)形態(tài)學(xué)實用算法,進行圖像形狀和結(jié)構(gòu)的分析及處理。擊中/擊不中變換是在腐蝕和膨脹的基礎(chǔ)上提出的[8-9]。
本研究設(shè)A為目標圖像,Ac為圖像A的補集,結(jié)構(gòu)元素S由不相交的兩部分S1和S2組成,即S=S1∪S2,且S1∩S2= ? ,而S2v表示關(guān)于原點的反射集,則A被S擊中的結(jié)果可表示為:
由此可看出,A被S的擊中結(jié)果可以理解為A中具有S1幾何特征的部分除去A中具有S2幾何特征的部分的差集,另外,擊中/擊不中運算也可以利用腐蝕和膨脹操作來實現(xiàn)。借助于腐蝕、膨脹兩個基本運算來理解,A被S擊中的結(jié)果相當于A被S1腐蝕的結(jié)果與A被S2的反射集S2v膨脹的結(jié)果之差。
擊中/擊不中運算可以用于保持拓撲結(jié)構(gòu)的形狀細化,以及形狀的識別和定位。
數(shù)學(xué)形態(tài)學(xué)細化算法便是一種常見的使用擊中/擊不中變換的形態(tài)學(xué)算法。其基本思想是:在給定系列具有一定形狀的結(jié)構(gòu)元素后,順序循環(huán)地刪除滿足擊中變換的像素,具體描述如下:
對于結(jié)構(gòu)元素對S=(B,C),利用S細化A定義為:AS=A-(A·S)。即AS為在A中去掉A被S擊中的結(jié)果。
更一般地,利用結(jié)構(gòu)元素對序列S1,S2,…SK,迭代地產(chǎn)生輸出序列:
換而言之,該過程是先用S1細化一遍,然后再用S2對前面結(jié)果細化一遍,如此繼續(xù)直到用SK細化一遍,整個過程可再重復(fù),直到?jīng)]有變化產(chǎn)生為止。假設(shè)輸入集合是有限的,最終得到一個細化的對象。結(jié)構(gòu)對的選擇僅受結(jié)構(gòu)元素不相交的限制。事實上,每一個Si都可以是相同的結(jié)構(gòu)對,即在不斷重復(fù)的迭代細化過程中使用同一個結(jié)構(gòu)對。如果在對圖像細化的過程中,僅使用一個結(jié)構(gòu)對,則細化是有方向的。如果循環(huán)使用8個方向的結(jié)構(gòu)元素對,則細化可以以更對稱的方式完成。
Zhang快速并行細化算法是Zhang在1984年提出的。設(shè)已知目標點標記為1,背景點標記為0。定義邊界點是本身標記為1而其8連通鄰域中至少有1個點標記為0的點。
(1)考慮以邊界點為中心的8鄰域,設(shè)P1為中心點,對其鄰域的8個點逆時針繞中心點分別標記為P2,P3,…,P9,其中P2位于P1的上方。如果P1=1(即黑色像素),若同時滿足下面4個條件:
其中,B(P1)是P1的非零領(lǐng)點的個數(shù);A(P1)是以P2,P3,…,P9為序時這些點的值從0~1變化的次數(shù)。對所有邊界點檢驗完畢后,將所有標記點去除。
(2)第2步與第1步類似,僅需將條件③和④替換為條件⑤和⑥。如果P1=1(即黑色像素),同時滿足下面4個條件:
同樣對所有邊界點都檢驗完畢后,將所有標記點去除。
(3)以上兩步操作構(gòu)成一次迭代,多次迭代運算直至沒有點再滿足條件,算法結(jié)束,這時剩下的點組成區(qū)域的骨架[10]。
Rosenfeld細化算法屬于并行細化算法,實際上是基于模板匹配的一種算法。設(shè)已知目標點標記為1,背景點標記為0。定義邊界點是本身標記為1而其8連通鄰域中至少有1個點標記為0的點。目標像素3×3領(lǐng)域以P1為中心點,對其鄰域的8個點逆時針繞中心點分別標記為P2,P3,…,P9,其中P2位于P1的上方。Rosenfeld細化實質(zhì)上需要對目標像素點進行兩步模板匹配,算法的具體步驟如下:
步驟一:首先用如圖3所示的模板一中4個模板進行匹配。如果模板匹配成功,表明目標點P1位于邊界位置,那么進行步驟二的8個模板匹配;如果模板匹配失敗則跳過P1點,進行下一個像素的檢驗。圖中4個模板中X代表0或1。
圖3 模板一
步驟二:在步驟一中4個模板匹配成功之后,就進行如圖4所示的模板二中的8個模板匹配。如果8個模板中有任何一個匹配,表面P1屬于單像素連接點,刪除P1會破壞目標圖像的連通性;如果8個模板都沒有匹配成功,則P1點刪除,即由1變?yōu)?。然后進入下一像素的檢驗。以下8個模板中,X代表為0或1;3個Y中至少有一個Y為1,即Y+Y+Y 1。
圖4 模板二
步驟三:對于圖像中所有像素進行步驟一、二中的模板匹配,迭代運算直至整幅圖像沒有可以再刪除的像素點,最終得到的圖像即為骨架。
本研究使用VC++6.0編程工具,分別將以上3種經(jīng)典細化算法應(yīng)用于葡萄樹枝的骨架提取,骨架圖像如圖5~7所示。
圖5 形態(tài)學(xué)細化
圖6 Zhang細化算法
圖7 Rosenfeld細化
合理的骨架提取算法應(yīng)該達到以下要求:①骨架圖像必須保持原圖像的連通性;②骨架圖像應(yīng)盡可能是原圖像的中心線;③骨架圖像應(yīng)盡可能細,最好單像素。
本研究依據(jù)合理骨架的基本要求,對3種骨架提取的效果進行對比分析。
樹枝在某些局部位置,因其樹皮粗糙、枝干粗細不均勻,形狀不規(guī)則等問題,樹枝邊緣難免出現(xiàn)一些細微毛刺。局部毛刺對比如圖8所示,從圖8中可以看出,3種細化算法中,形態(tài)學(xué)細化算法對于此類毛刺干擾較為敏感,細化后容易出現(xiàn)冗余的細小分支。
局部連通性對比如圖9所示,圖9中Zhang細化圖像在樹枝的分枝處易發(fā)生形變、錯位,改變了原圖像的連通性。而形態(tài)學(xué)細化和Rosenfeld細化較好地維持了圖像的連通性。
局部中心位置對比如圖10所示,圖10中Zhang細化所得局部圖像中,中間連接部分枝干明顯發(fā)生移位,偏離了原圖中對應(yīng)的中心線位置。而形態(tài)學(xué)細化和Rosenfeld細化相對較接近中心線位置。
圖8 局部毛刺對比
圖9 局部連通性對比
圖10 局部中心位置對比
由于目標圖像樹枝像素占總圖像像素比例不高,計算量不大,3種細化算法均能快速取得計算結(jié)果,滿足實際應(yīng)用要求。
綜合以上因素,Rosenfeld細化算法滿足骨架提取的3個基本要求,所提取的葡萄樹枝骨架圖像較為理想。
本研究介紹了葡萄樹枝實驗圖像的采集環(huán)境和方法,通過濾波、閾值分割等預(yù)處理提取了葡萄樹枝二值圖像。筆者分別采用圖像形態(tài)學(xué)細化算法、Zhang細化算法以及Rosenfeld細化算法對葡萄樹枝進行骨架提取,并分析比較了3種算法的處理效果。形態(tài)學(xué)細化算法對于樹枝邊緣毛刺較為敏感,容易產(chǎn)生冗余小分支;Zhang細化在樹枝的分枝處的連通性及中心性較差。
實驗結(jié)果表明,Rosenfeld細化算法最為理想,更適用于提取葡萄樹枝圖像的骨架,為進一步檢測葡萄樹枝的芽點奠定了基礎(chǔ)。
(References):
[1]胡 偉.葡萄生產(chǎn)機械化作業(yè)環(huán)節(jié)及要求[J].農(nóng)業(yè)機械,2005(5):82-83.
[2]GAO Ming,LU Tien-fu.Image Processing and Analysis for Autonomous Grapevine Pruning[C]//Proceedings of the 2006 IEEE.Luoyang:[s.n.],2006:922-927.
[3]LEE M F.An Intelligent Computer Vision Control and Tar?get Tracking System Design of an Agricultural Grapevine Pruning Robot[D].Ithaca:Cornell University,1996.
[4]王家隆,郭成安.一種改進的圖像模板細化算法[J].中國圖象圖形學(xué)報,2004,9(3):297-301.
[5]江 萍,徐曉冰,方 敏.基于形態(tài)學(xué)骨架提取算法的研究及其實現(xiàn)[J].計算機應(yīng)用,2003,23(S1):297-137.
[6]ZHANG T Y,SUEN C Y.A fast parallel algorithm for thin?ning digital patterns[J].Communications of the ACM,1984,27(3):236-239.
[7]PAVLIDIS T.Algorithms for Graphics and Image Process?ing[M].Washington DC:Rockville Computer Science Press,1982.
[8]左 飛,萬晉森,劉 航.數(shù)字圖像處理與實踐:基于Visu?al C++開發(fā)[M].北京:電子工業(yè)出版社,2011.
[9]崔 屹.圖象處理與分析-數(shù)學(xué)形態(tài)學(xué)方法及應(yīng)用[M].北京:科學(xué)出版社,2000.
[10]吳選忠.Zhang快速并行細化算法的擴展[J].福建工程學(xué)院學(xué)報,2006,4(1):89-92.