賈挺猛,荀 一,鮑官軍,董 茂,楊慶華
(浙江工業大學 特種裝備制造與先進加工技術教育部/浙江省重點實驗室,浙江 杭州 310014)
在葡萄生產作業中,為了提高果實品質,增加產量,果農需要對葡萄樹進行整枝修剪。葡萄樹修剪作業勞動強度較大,而目前機械化水平非常低,果農迫切需要高效省力的設備[1],將他們從繁重的手工勞動中解救出來。因此,開展剪枝機器人的研究具有重要的實用價值[2]。
將機器視覺技術應用于工程中可以實現農業生產與管理的自動化和智能化。鑒于葡萄樹枝上的各個芽粗細不均勻、形狀不規則,直接從形態上檢測并確定芽點位置具有一定的難度。
本研究采用機器視覺技術識別葡萄樹枝干并提取葡萄樹枝骨架,作為進一步確立葡萄樹的芽點以及剪枝點的基礎[3]。樹枝骨架提取的優劣直接影響葡萄樹枝芽點的識別。
實驗研究的對象是葡萄冬剪之前的樹枝,品種采用我國栽種面積最廣的巨峰葡萄樹,實驗樣本取自于杭州市蕭山區海棠葡萄園,樣本采用Y型種植方式,樹齡為3年。
本研究以室內白色墻為背景采集葡萄樹枝圖像,在主動光源下,通過CCD工業攝像機采集巨峰葡萄樹圖像。
本研究采集到的圖像是24位的彩色圖像。為了減少圖像數據計算量,筆者將彩色圖像中的3種基本顏色分量的亮度作為3個灰度圖像的灰度值,輸出R、G、B3個分量的直方圖,對目標圖像樹枝和背景圖像的灰度值分布情況進行了對比分析,發現B分量圖中目標圖像樹枝的灰度值較為集中,與背景圖像的灰度值區分最明顯,相對較適合提取樹枝對象。
因此,本研究選用B分量圖作為后續處理圖像,葡萄樹B分量圖像如圖1所示。

圖1 葡萄樹B分量圖像
本研究根據圖像中背景與目標像素灰度值的分布特點,采用領域加權平均去除圖像中的污點和部分背影,選擇合理的閾值進行圖像分割,即可消除鐵絲、陰影,并得到葡萄樹枝二值圖像。鑒于葡萄樹枝二值圖像提取不夠完整,且出現空洞的現象,本研究運用閉運算,以填充空白區域。
經過以上處理后得到的葡萄樹二值圖像如圖2所示。

圖2 預處理后的葡萄樹二值圖像
骨架的提取一般采用細化算法。已有的細化算法按迭代方式不同分為串行算法和并行算法。串行細化即是一邊檢測滿足細化條件的點一邊刪除細化點,并行細化即是檢測細化點的時候不進行點的刪除只進行標記,而在檢測完整幅圖像后一次性去除要細化的點。由于串行細化算法的處理結果依賴于對像素處理的先后順序,像素點的消除或保留不可預測;而并行細化算法在對圖像進行細化時利用相同的條件同時檢測所有像素點,其結果具有各向同性,因此從算法原理上看,并行方法優于串行方法[4]。目前應用比較廣泛的并行細化算法有形態學細化算法[5]、Zhang細化算法[6]、Rosenfeld細化算法[7]。
數學形態學的基本運算有膨脹(或擴張)、腐蝕(或侵蝕)、開啟和閉合4種。研究者通過基本運算還可推導和組合成各種數學形態學實用算法,進行圖像形狀和結構的分析及處理。擊中/擊不中變換是在腐蝕和膨脹的基礎上提出的[8-9]。
本研究設A為目標圖像,Ac為圖像A的補集,結構元素S由不相交的兩部分S1和S2組成,即S=S1∪S2,且S1∩S2= ? ,而S2v表示關于原點的反射集,則A被S擊中的結果可表示為:

由此可看出,A被S的擊中結果可以理解為A中具有S1幾何特征的部分除去A中具有S2幾何特征的部分的差集,另外,擊中/擊不中運算也可以利用腐蝕和膨脹操作來實現。借助于腐蝕、膨脹兩個基本運算來理解,A被S擊中的結果相當于A被S1腐蝕的結果與A被S2的反射集S2v膨脹的結果之差。
擊中/擊不中運算可以用于保持拓撲結構的形狀細化,以及形狀的識別和定位。
數學形態學細化算法便是一種常見的使用擊中/擊不中變換的形態學算法。其基本思想是:在給定系列具有一定形狀的結構元素后,順序循環地刪除滿足擊中變換的像素,具體描述如下:
對于結構元素對S=(B,C),利用S細化A定義為:AS=A-(A·S)。即AS為在A中去掉A被S擊中的結果。
更一般地,利用結構元素對序列S1,S2,…SK,迭代地產生輸出序列:

換而言之,該過程是先用S1細化一遍,然后再用S2對前面結果細化一遍,如此繼續直到用SK細化一遍,整個過程可再重復,直到沒有變化產生為止。假設輸入集合是有限的,最終得到一個細化的對象。結構對的選擇僅受結構元素不相交的限制。事實上,每一個Si都可以是相同的結構對,即在不斷重復的迭代細化過程中使用同一個結構對。如果在對圖像細化的過程中,僅使用一個結構對,則細化是有方向的。如果循環使用8個方向的結構元素對,則細化可以以更對稱的方式完成。
Zhang快速并行細化算法是Zhang在1984年提出的。設已知目標點標記為1,背景點標記為0。定義邊界點是本身標記為1而其8連通鄰域中至少有1個點標記為0的點。
(1)考慮以邊界點為中心的8鄰域,設P1為中心點,對其鄰域的8個點逆時針繞中心點分別標記為P2,P3,…,P9,其中P2位于P1的上方。如果P1=1(即黑色像素),若同時滿足下面4個條件:

其中,B(P1)是P1的非零領點的個數;A(P1)是以P2,P3,…,P9為序時這些點的值從0~1變化的次數。對所有邊界點檢驗完畢后,將所有標記點去除。
(2)第2步與第1步類似,僅需將條件③和④替換為條件⑤和⑥。如果P1=1(即黑色像素),同時滿足下面4個條件:

同樣對所有邊界點都檢驗完畢后,將所有標記點去除。
(3)以上兩步操作構成一次迭代,多次迭代運算直至沒有點再滿足條件,算法結束,這時剩下的點組成區域的骨架[10]。
Rosenfeld細化算法屬于并行細化算法,實際上是基于模板匹配的一種算法。設已知目標點標記為1,背景點標記為0。定義邊界點是本身標記為1而其8連通鄰域中至少有1個點標記為0的點。目標像素3×3領域以P1為中心點,對其鄰域的8個點逆時針繞中心點分別標記為P2,P3,…,P9,其中P2位于P1的上方。Rosenfeld細化實質上需要對目標像素點進行兩步模板匹配,算法的具體步驟如下:
步驟一:首先用如圖3所示的模板一中4個模板進行匹配。如果模板匹配成功,表明目標點P1位于邊界位置,那么進行步驟二的8個模板匹配;如果模板匹配失敗則跳過P1點,進行下一個像素的檢驗。圖中4個模板中X代表0或1。

圖3 模板一
步驟二:在步驟一中4個模板匹配成功之后,就進行如圖4所示的模板二中的8個模板匹配。如果8個模板中有任何一個匹配,表面P1屬于單像素連接點,刪除P1會破壞目標圖像的連通性;如果8個模板都沒有匹配成功,則P1點刪除,即由1變為0。然后進入下一像素的檢驗。以下8個模板中,X代表為0或1;3個Y中至少有一個Y為1,即Y+Y+Y 1。

圖4 模板二
步驟三:對于圖像中所有像素進行步驟一、二中的模板匹配,迭代運算直至整幅圖像沒有可以再刪除的像素點,最終得到的圖像即為骨架。
本研究使用VC++6.0編程工具,分別將以上3種經典細化算法應用于葡萄樹枝的骨架提取,骨架圖像如圖5~7所示。

圖5 形態學細化

圖6 Zhang細化算法

圖7 Rosenfeld細化
合理的骨架提取算法應該達到以下要求:①骨架圖像必須保持原圖像的連通性;②骨架圖像應盡可能是原圖像的中心線;③骨架圖像應盡可能細,最好單像素。
本研究依據合理骨架的基本要求,對3種骨架提取的效果進行對比分析。
樹枝在某些局部位置,因其樹皮粗糙、枝干粗細不均勻,形狀不規則等問題,樹枝邊緣難免出現一些細微毛刺。局部毛刺對比如圖8所示,從圖8中可以看出,3種細化算法中,形態學細化算法對于此類毛刺干擾較為敏感,細化后容易出現冗余的細小分支。
局部連通性對比如圖9所示,圖9中Zhang細化圖像在樹枝的分枝處易發生形變、錯位,改變了原圖像的連通性。而形態學細化和Rosenfeld細化較好地維持了圖像的連通性。
局部中心位置對比如圖10所示,圖10中Zhang細化所得局部圖像中,中間連接部分枝干明顯發生移位,偏離了原圖中對應的中心線位置。而形態學細化和Rosenfeld細化相對較接近中心線位置。

圖8 局部毛刺對比

圖9 局部連通性對比

圖10 局部中心位置對比
由于目標圖像樹枝像素占總圖像像素比例不高,計算量不大,3種細化算法均能快速取得計算結果,滿足實際應用要求。
綜合以上因素,Rosenfeld細化算法滿足骨架提取的3個基本要求,所提取的葡萄樹枝骨架圖像較為理想。
本研究介紹了葡萄樹枝實驗圖像的采集環境和方法,通過濾波、閾值分割等預處理提取了葡萄樹枝二值圖像。筆者分別采用圖像形態學細化算法、Zhang細化算法以及Rosenfeld細化算法對葡萄樹枝進行骨架提取,并分析比較了3種算法的處理效果。形態學細化算法對于樹枝邊緣毛刺較為敏感,容易產生冗余小分支;Zhang細化在樹枝的分枝處的連通性及中心性較差。
實驗結果表明,Rosenfeld細化算法最為理想,更適用于提取葡萄樹枝圖像的骨架,為進一步檢測葡萄樹枝的芽點奠定了基礎。
(References):
[1]胡 偉.葡萄生產機械化作業環節及要求[J].農業機械,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].中國圖象圖形學報,2004,9(3):297-301.
[5]江 萍,徐曉冰,方 敏.基于形態學骨架提取算法的研究及其實現[J].計算機應用,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]左 飛,萬晉森,劉 航.數字圖像處理與實踐:基于Visu?al C++開發[M].北京:電子工業出版社,2011.
[9]崔 屹.圖象處理與分析-數學形態學方法及應用[M].北京:科學出版社,2000.
[10]吳選忠.Zhang快速并行細化算法的擴展[J].福建工程學院學報,2006,4(1):89-92.