劉 平,朱衍俊,張同勛,侯加林
(山東農業大學機械與電子工程學院,山東省園藝機械與裝備重點實驗室,智能化農業機械與裝備實驗室,泰安 271018)
近年來,中國葡萄種植面積與產量逐年增加,但采摘仍以人工為主,機械化程度低。目前中國葡萄采收機器人的研制處于初始階段,其中葡萄的識別與分割是葡萄采收機器人的關鍵,尤其貼疊葡萄串的識別與分割更是亟待解決的問題。
國外針對自然條件下果蔬的識別分割研究起步較早。Kondo等[1]較早地利用葡萄在不同光譜的映射下進行識別分割;Font等[2]究研了人工光照情況下的識別與定位情況;基于YIQ顏色空間的成熟果實的識別方法[3]被廣泛應用,識別單個果實成功率高達93%;對一套基于彩色信息對自然環境下識別葡萄系統[4]進行研究。雖然上述研究提出的光譜以及顏色空間的方法對于單串目標葡萄串有較高的識別成功率,但由于貼疊葡萄串中的目標葡萄串與干擾葡萄的光譜、顏色特性的極大相似性,此類方法并不適用于貼疊葡萄串的識別與分割。雖然國外對單個果實(如番茄)的識別與分割技術已經比較成熟,但是對于貼疊的果實,尤其是穗狀果實(如葡萄)的識別與分割研究較少。
近年國內對在復雜環境下的目標跟蹤識別及三維重構的研究在不同領域取得了一些成果,為智能機器人在復雜農業場景的應用帶來了新的前景。水果采摘機器人對果蔬的識別與分割方法的研究也取得了成果,Lin等通過一種低成本的RGB-D深度傳感器成功實現番石榴果實的姿態檢測與預估[5];同期出現一種基于輪廓信息的幾何匹配與聚合方法,自然環境下成功識別柑橘、番茄、苦瓜等大多數果蔬[6];而一種基于雙目立體視覺的葡萄串空間信息獲取方法被Luo等用作葡萄采摘點的確定[7]。此外,利用Hough圓擬合方法對橘子進行識別分割,利用橘子的形狀與圓進行擬合[3,8];利用Elsd算法實現了對單粒葡萄果實的分割與半徑測量[9],且半徑誤差平均值為0.53mm;基于圖像輪廓分析的堆疊葡萄果粒尺寸檢測的方法[10],通過輪廓分析獲取凹點,以分段圓擬合實現重疊葡萄果粒的分割識別,以輪廓分析為基礎實現對葡萄果行識別與測量。楊慶華等[11]利用葡萄輪廓的外接矩陣對葡萄進行精準定位;對自然環境下靜止狀態的葡萄進行了視覺定位的算法研究[12],通過輪廓分析進行整串葡萄的識別;也有通過改進的超綠特征模型和遺傳算法對葡萄進行圖像分割與識別[13],而顏色通道對貼疊葡萄串中的目標葡萄串的識別與分割有待深入研究與探索。
上述研究多是針對單個目標進行的識別分割,對于重疊或者貼疊果實的識別與分割并未涉及。苗中華等[14]通過Sobel算子以及改進的最大類方差法辨識重疊果實目標,再結合K-means以及邊緣檢測獲得的輪廓信息的連通區域得到單個目標的大致區域;通過Chan-Vese模型與改進的八鄰域Sobel算子對重疊葉片實現精準分割[15],這些文獻的研究對象為單個目標的貼疊,具有較好的重疊特性,但是對于貼疊葡萄串識別成功率較低。羅陸鋒等[16]提出的基于輪廓分析的雙串疊貼葡萄目標識
別方法能將貼疊葡萄串的分界線顯現,但對于貼疊部分的葡萄輪廓不能細致精準劃分,由此可導致葡萄采收機器人不能對貼疊葡萄串中的目標葡萄串進行精準識別與分割。所以,本文利用K-means聚類算法獲取貼疊葡萄串區域,并對其輪廓進行分析,通過Chan-Vese模型進行迭代識別,最終實現對完整目標葡萄串的精準分割。本文所提出的方法可提高完整貼疊葡萄串識別與分割的精確度,可為葡萄采摘機器人識別與分割貼疊葡萄串中的目標葡萄串提供一種可行的方法。
本文所用的所有葡萄圖像拍攝于2019年7月15日上午09:00-12:00,在山東省果蔬研究所金牛山基地采集,天氣晴,氣溫23~31℃,葡萄品種為夏黑,共拍攝1 200張,相機采用佳能(Canon)EOS M6型號,相機曝光模式為自動曝光,曝光時間為1/200 s,拍攝距離為300~1 200 mm,拍攝角度與地面平行,采集的圖像約為380萬像素(2 400×1 600),后期多次采用雙線性差值方法進行圖像的行列縮放,將圖片像素調整至約9萬(257×351),可節省圖像的處理時間,提高算法的實用性。

圖1 左右貼疊葡萄串Fig.1 Left and right overlapping grape clusters
貼疊葡萄串根據目標葡萄串的位置不同分為左右貼疊與上下貼疊。左右貼疊具體劃分為目標葡萄串在貼疊葡萄串左側,右側葡萄被遮擋,如圖1a所示;目標葡萄串在貼疊葡萄串右側,左側葡萄被遮擋,如圖1b所示。此外,本文將上下貼疊葡萄串圖像逆時針旋轉90°,上下貼疊轉變成左右貼疊,從而進行與左右貼疊葡萄串相同的試驗處理步驟,如圖2所示。
圖像預處理在圖像識別與分割過程中起關重要作用,為了將貼疊葡萄串中的目標葡萄串準確識別與分割,本文將采集到的RGB彩色圖像轉換成便于圖像識別與分割的顏色空間,獲取分辨度最高的顏色分量進行后期的圖像處理。
本文以RGB顏色空間圖像為基礎,分別轉換至HSV顏色空間與YCbCr顏色空間進行對比試驗,發現在HSV顏色空間中的H分量與地面、樹干、葉子之間具有較高分辨度,有利于貼疊葡萄串區域的識別與獲取,如圖3所示。
其次,通過分析各分量直方圖(如圖4所示),并與HSV顏色空間中的分量對比,發現H分量有較好的雙峰效果;與YCbCr顏色空間中的Y分量、Cr分量對比,雙峰效果明顯;雖然YCbCr顏色空間中的Cb分量也有雙峰效果,但HSV顏色空間中H分量雙峰效果明顯,且YCbCr顏色空間中Cb分量雙峰間距相對較小,波谷數值較大,波高較小,不利于貼疊葡萄串與背景的分離,綜合各種影響因素,本文采用H分量作為圖像分割的基礎圖像,運用聚類方法進行快速分割。

圖4 HSV和YCbCr顏色空間的各分量直方圖Fig.4 Histogram of HSV and YCbCr color space components
H分量計算式如下:

本文提出的貼疊葡萄串的算法流程圖如圖5所示。首先將收集的圖像進行預處理,包括確定貼疊葡萄串區域,去噪,提取貼疊葡萄串輪廓;進而采用輪廓分析與幾何約束,分析葡萄輪廓,獲取葡萄輪廓左右極值、上下拐點與中點;通過對圖像中的葡萄區域長寬比的限制,實現圖像中葡萄貼疊性質的判定:單串葡萄,左右貼疊或上下貼疊。若圖像中葡萄為單串葡萄,直接進行目標葡萄串的分割與識別;若圖像中的葡萄區域為左右貼疊葡萄串,則根據中點與上下拐點之間的斜率判斷目標葡萄串的位置,并且以中點為原點建立基于輪廓分析的貼疊葡萄串的幾何計算模型,分別在順時針方向45°~135°以及225°~315°區域內搜索距離原點最近的葡萄輪廓點[16],得到貼疊葡萄串邊緣輪廓交界處拐點;通過獲取目標葡萄串的中心點得到Chan-Vese模型的原點,進而以Chan-Vese模型獲取葡萄貼疊部分的信息,輔以圖像融合獲取最終的目標葡萄串輪廓;若為上下貼疊葡萄串,則自動將圖片逆時針旋轉90°,之后進行與左右貼疊葡萄同樣的處理方法,最終成功識別與分割目標葡萄串。

圖5 算法流程圖Fig.5 Flowchart of algorithm
通過圖像預處理提取HSV空間中的H分量后,采用K-means聚類算法對H分量圖進行分割[16-17],獲取貼疊葡萄串圖像信息。將K-means得到的貼疊葡萄串圖像進行提取并進行形態學處理,包括去噪[18],填補空白區域等操作,得到如圖6a所示貼疊葡萄串的二值圖像;采用Sobel算子對貼疊葡萄串二值圖像進行分析,獲得貼疊葡萄串輪廓信息,如圖6b所示。

圖6 葡萄串及其輪廓提取Fig.6 Grape cluster and its contour extraction
由于葡萄串成穗狀,且在自然環境下貼疊葡萄串相對位置多變,傳統的凹點檢測與霍夫變換方法難以對貼疊葡萄串的拐點進行提取[9-10,19];通過觀察分析,大多數貼疊葡萄串在交界處會出現拐點且靠近輪廓中心區域并且都是成對出現,因此對輪廓進行分析得到上下2個拐點。首先,根據輪廓特性,建立如圖7所示的幾何計算模型。設圖像列坐標方向為X軸正方向,橫坐標方向為Y軸正方向[16]。根據求解拐點流程,首先對輪廓進行分析,得到輪廓左右極值點A與點B,連接A、B兩點并計算獲得AB的中點C。最后,以C點為原點,在預定區域內,尋找距離點C最近的上下2點D、E,輪廓各點至中心點C的距離P(x,y)的求解方程為
式中(xC,yC)為C點坐標,即原點坐標;(x,y)為圖像中貼疊葡萄串輪廓上的像素點坐標;為防止左右奇異輪廓對拐點信息的尋找產生干擾,設置以下3個約束條件:
1)相對于上下2個拐點D、E的位置,中點C必須位于上拐點D下方、下拐點E上方;

圖7 貼疊葡萄串輪廓分析Fig.7 Contour analysis of overlapping grape cluster
2)角度區域范圍約束[16],將下拐點搜尋得角度范圍設定在順時針方向45°~135°之間,將上拐點搜尋的角度范圍設定在順時針方向225°~315°之間;
3)上下2個拐點必須屬于貼疊葡萄串輪廓上的點。將上拐點D、中點C和下拐點E依次連接,結果如圖7所示。
2.3.1 葡萄串貼疊性質判定
為確定圖像中的葡萄串貼疊性質(單串,左右貼疊或者上下貼疊),對圖像中出現的葡萄進行長寬比計算,具體如式(3)所示。

式中Rp為長寬比比值;rowmax為輪廓的像素點最大行數值;rowmin為輪廓的像素點最小行數值;colmax為輪廓的像素點最大列數值;colmin為輪廓的像素點最小列數值;
經過多次試驗計算與數據統計,得出的具體約束條件如下:
1)Rp≤1.2時,規定圖像中的貼疊葡萄串為左右貼疊,無需進行旋轉操作;
2)1.2<Rp≤1.4時,規定圖像中的葡萄串為單串葡萄,直接進行葡萄串的識別;
3)Rp>1.4時,規定圖像中的貼疊葡萄串為上下貼疊,將圖片逆時針旋轉90°,之后繼續進行與左右貼疊葡萄串相同的識別分割。
2.3.2 目標葡萄串方位判定
根據拐點D、E以及中點C連線斜率判定目標葡萄串位置。依據圖像前期設定坐標,對上拐點D與中點C之間的線段求取斜率K1,對中點C與下拐點E之間的線段求取斜率K2,其計算如公式(4)所示。

式中(xD,yD)為D點坐標;(xE,yE)為E點坐標。
對計算結果進行分析,可分為以下6種有效情況:
1)K1>0,K2<0:目標葡萄串在貼疊葡萄串右側;
2)K1<0,K2>0:目標葡萄串在貼疊葡萄串左側;
3)K1>0,K2→∞:目標葡萄串在貼疊葡萄串右側;
4)K1<0,K2→∞:目標葡萄串在貼疊葡萄串左側;
5)K1→∞,K2<0:目標葡萄串在貼疊葡萄串右側;
6)K1→∞,K2>0:目標葡萄串在貼疊葡萄串左側。
為提高算法準確性,設置2個條件對目標葡萄串的方位判定進行約束:
1)嚴格按照設定的坐標系求解K1、K2;
2)K1、K2都不為0。
2.3.3 目標葡萄串中心點獲取
對目標葡萄串進行輪廓分析,獲取目標葡萄串上下極值點G、H,連接點G與H,連接中點C與右極值點B,根據方程(5)求得直線交點及其坐標。

式中A1,A2,B1,B2,C1,C2為直線系數。求解公式(5)得到交點O1坐標,如公式(6)、(7)所示。

式中(xO1,yO1)為O1點坐標;(xO2,yO2)為O2點坐標;(xO,yO)為O點坐標;(xA,yA)為A點坐標。
根據目標葡萄串所在方位,依據式分別求取右極值點B與中點C的中心點O2,點O1與點O2的中心點O,如圖8所示。將點O作為Chan-Vese模型算法中的類圓心點,為Chan-Vese模型算法的下一步分析做準備。

圖8 葡萄串中心點提取Fig.8 Extraction of grape cluster center points
由于葡萄串外形具有不確定性,加上自然環境中葡萄串貼疊的隨機性,導致傳統方法對目標區域信息的獲取具有較大的不確定性。本文利用Chant等提出的基于簡化的M-S模型與水平集相結合的方法[20],即C-V模型,通過省略M-S模型中的面積項,保留長度項,通過Heaviside函數、Dirac函數以及歐拉-拉格朗日公式等實現C-V模型的變換。參考文獻[21-22],本文利用C-V模型全局性的特點,即使將要識別與分割的目標葡萄串內部含有空洞,也可一次性地將空洞的內外邊緣全部檢測出來,而且曲線的初始化不受圖像位置限制[23-24];而且,該模型不依賴于圖像邊緣信息,即使圖像的噪聲很大或邊緣模糊甚至離散,仍可以獲得較好的分割效果[25-26],并同時利用中點C與類圓心點O之間的距離L的大小判定C-V模型算法的迭代次數,獲得貼疊區域信息。其中類圓心點O與中點C之間的距離L按公式(8)計算。

以L大小判定Chan-Vese模型算法的迭代次數n的取值,具體如下:
1)0≤L<30,n=300;
2)30≤L<50,n=400;
3)50≤L≤70,n=500;
4)70<L,n=600。
圖像識別結果如圖9所示。將圖9b的二值圖像進行形態學處理并提取其輪廓,將提取的輪廓圖像與圖8b進行圖像融合,獲取完整的目標葡萄串輪廓圖像,如圖10a所示;參考文獻[27-28],將完整輪廓圖進行形態學處理并且與RGB圖像進行融合,最終實現目標葡萄串識別分割,如圖10b所示。

圖9 C-V模型試驗結果Fig.9 Test results of C-V model

圖10 目標葡萄串識別結果Fig.10 Recognition results of target grape cluster
為驗證本文方法的可行性與實用性,采用等距抽樣的方法抽取22幅貼疊葡萄串圖像樣本,計算與分析本文算法對目標葡萄串的識別精準度與實時性。根據葡萄貼疊的相對位置,22幅圖像中,目標葡萄串在左的11幅;目標葡萄串在右的11幅。將22幅貼疊葡萄串中的目標葡萄串進行人工分割提取,并利用Matlab軟件對人工分割與本文算法分割的目標葡萄串求取面積,并進行交和求差運算,目標識別的精準度(Ac)和假陽率(FPR)的計算式為m式中FPR為假陽率;Ac為精準度;Sm為通過Photoshop人工分割得到的目標葡萄串面積值;Sa為通過本算法分割得到的目標葡萄串面積值。

部分圖像的試驗結果如圖11、圖12所示,從圖中可以看出,本文方法能夠較好地將貼疊葡萄串中的目標葡萄串分割提取。與文獻[16]相比,本文方法的目標提取更準確。

圖11 左右貼疊葡萄串識別結果示例Fig.11 Example of recognition result of left and right overlapping grape cluster

圖12 上下貼疊葡萄串識別結果示例Fig.12 Example of recognition result of up and down overlapping grape cluster
設定目標葡萄串識別分割的精準度閾值為85%,低于設定閾值為識別失敗。不同貼疊方式的葡萄串試識別結果如表1所示,由表可知,對于貼疊葡萄串中的目標葡萄串在左,目標識別精準度在88.76%~94.56%之間,平均精準度為92.19%,平均假陽率為2.82%;對于貼疊葡萄串中的目標葡萄串在右,目標識別精準度在64.32%~94.20%之間,平均精準度為87.22%,平均假陽率為6.03%。總體目標葡萄串識別與分割的平均假陽率為4.24%,平均精準度為89.71%,識別成功率為90.91%。
與文獻[16]相比,本文通過輪廓分析獲得拐點,利用上下拐點與類圓心點之間的斜率確定目標葡萄串所在方位;改進C-V模型算法,通過中心點與類圓心點之間的距離限定C-V模型迭代次數,實現貼疊區域邊界精確劃分。如圖13a所示,文獻[16]方法僅對重疊葡萄區域進行簡單劃分,并未對重疊區域進行輪廓識別與分割,且對于目標葡萄串識別精準度閾值設定較低,僅為75%;本文所提出的方法能夠大大提高了貼疊葡萄串的識別成功率與精準度,目標葡萄串識別精準度平均值為89.71%,遠高于文獻[16]提出的75%精準度閾值,也高于本文所設定的85%的精準度閾值,如圖13b所示,實現貼疊葡萄串邊界的精確識別與分割。

圖13 不同方法的識別結果對比Fig.13 Comparison of identification results of different methods
所有試驗中,共有2次識別與分割失敗,其中1次如圖11d所示,由于葡萄左右貼疊過于緊密,利用長寬比判斷貼疊性質時出錯,從而導致未能成功實現貼疊葡萄串分離;第2個失敗案例如圖12c和12d所示,由于圖片頂部光照強度過大,致使在K-means聚類算法過程中對于葡萄區域的識別不夠精準,導致拐點以及中心點判定出現差錯,從而導致Chan-Vese迭代識別次數出錯,最終導致目標葡萄串識別精準度低于規定閾值,目標葡萄串的識別與分割失敗。
1)通過顏色空間轉換確定最優的顏色通道,運用K-means聚類算法對貼疊葡萄串區域進行背景分離,采用Sobel提取邊緣輪廓信息;
2)通過輪廓分析與幾何約束尋找貼疊葡萄串左右極值、中心點與拐點信息,利用長寬比確定葡萄貼疊性質,通過拐點與中心點斜率判定目標葡萄串位置信息,通過極值點與中心點等確定類圓心點;
3)以類圓心點為中心,利用Chan-Vese確定貼疊區域輪廓信息,最終通過圖像融合獲得目標葡萄串完整輪廓信息,實現目標葡萄串精準分割與識別。最終實現總平均假陽率控制在4.24%,總平均精準度為89.71%。
綜上所述,本文所提出的方法能夠實現完整貼疊葡萄串的精準分割與識別,提高了目標葡萄串識別精準度,可為葡萄采摘機器人解決貼疊問題提供切實可行的算法。