馮俊惠,李志偉,戎有麗,孫志立
(山西農(nóng)業(yè)大學(xué)農(nóng)業(yè)工程學(xué)院,山西晉中,030801)
通訊作者:李志偉,男,1969年生,山西太谷人,博士,教授,博導(dǎo);研究方向?yàn)榫?xì)農(nóng)業(yè)裝備及計(jì)算機(jī)控制技術(shù)。E-mail: lizhiweitong@163.com
果蔬收獲是果蔬種植業(yè)各生產(chǎn)鏈中最耗時、最費(fèi)力的一個環(huán)節(jié),果蔬采摘機(jī)器人可以極大減少勞動力,降低農(nóng)產(chǎn)品生產(chǎn)成本。果蔬采摘機(jī)器人通過計(jì)算機(jī)視覺等技術(shù)手段,根據(jù)顏色、形狀、紋理等特征信息,將果實(shí)從莖葉等背景中識別出來,并進(jìn)行定位,最后控制機(jī)械手協(xié)調(diào)動作,完成整個采摘和存放過程。因此,基于計(jì)算機(jī)視覺的成熟果實(shí)識別是保證果蔬收獲機(jī)器人精準(zhǔn)作業(yè)的重要前提[1-3]。
1987年,美國的Slaughter等[4]研制了柑橘收獲機(jī)器人,利用彩色攝像機(jī)和超聲波傳感器識別柑橘,并確定果梗位置信息。1992年,日本的Kondo等[5]研制了番茄收獲機(jī)器人,利用彩色攝像機(jī)來識別番茄,但是無法收獲被莖葉遮擋的成熟果實(shí)。2001年,荷蘭的Henten等[6]研制出了黃瓜收獲機(jī)器人,通過機(jī)器視覺傳感器識別成熟的黃瓜,并獲取三維位置信息。我國對果蔬收獲機(jī)器人的研究始于20世紀(jì)90年代,雖然起步較晚,但也取得了一定的成績,如陸懷民[7]研制的林木球果采摘機(jī)器人,曹其新等[8]研制的草莓采摘機(jī)器人,張鐵中等[9-11]在草莓、黃瓜、西紅柿、茄子等果蔬果實(shí)采摘機(jī)器人方面進(jìn)行了深入研究。
在番茄識別時,由于番茄果實(shí)近似球形,因此可以采用抗干擾性強(qiáng)的Hough圓變換算法[12-15]。但Hough圓變換算法運(yùn)算量極大,難以滿足采摘機(jī)器人對實(shí)時性的要求,且由于番茄非標(biāo)準(zhǔn)球形,而且存在多果重疊和莖葉遮擋等問題,所以需要改進(jìn)Hough圓變換算法(Circular Hough Transform,CHT),以解決上述問題。本文首先對采集的圖像進(jìn)行下采樣,然后基于背景分割得到二值化圖像,并進(jìn)行邊緣信息提取,最后在此基礎(chǔ)上采用改進(jìn)Hough圓變換算法實(shí)現(xiàn)成熟番茄果實(shí)識別,為今后番茄收獲機(jī)器人完成自動化采摘提供研究基礎(chǔ)。
試驗(yàn)所用番茄樣本采自山西農(nóng)業(yè)大學(xué)農(nóng)業(yè)工程學(xué)院智能溫室,番茄品種為天妃九號,采用智能手機(jī)(HONOR 9X Pro)獲取番茄RGB圖像,攝像頭距番茄果實(shí)20~60 cm,圖像尺寸為4 000像素×3 000像素(4∶3)。圖像處理計(jì)算機(jī)采用Intel Core(TM) i5-4590微處理器,軟件開發(fā)環(huán)境為MATLAB R2019b。圖1為采集到的番茄果實(shí)圖像。
圖1 番茄果實(shí)圖像采集示例Fig. 1 Image acquisition example of tomato fruits
圖像像素分辨率越高,圖像越清晰,相應(yīng)的圖像處理計(jì)算量也越大。為了減少計(jì)算量,提高運(yùn)算速度,在不影響圖像處理效果的前提下,對圖像進(jìn)行下采樣。本文下采樣是將原始圖像10像素×10像素的窗口區(qū)域用一個像素點(diǎn)來表示,即對原始圖像每隔10行、每隔10列采樣一個點(diǎn),將采樣到的點(diǎn)依次排放,得到下采樣后的圖像,圖像下采樣示意圖如圖2所示。將原始圖像下采樣得到的圖像尺寸為400像素×300像素,結(jié)果如圖3所示。
圖2 圖像下采樣示意圖Fig. 2 Sketch of image downsampling
圖3 原始圖像下采樣結(jié)果圖Fig. 3 Result of original image downsampled
背景分割是目標(biāo)識別的首要問題,可以為目標(biāo)識別減少運(yùn)算范圍,提高識別準(zhǔn)確率。在采集到的RGB圖像中,成熟的番茄果實(shí)區(qū)域R分量要明顯高于G分量和B分量,而未成熟果實(shí)和枝葉區(qū)域則不具備這樣的統(tǒng)計(jì)特性[16],因此可以通過顏色信息進(jìn)行背景分割。背景分割的處理方法可以通過偽代碼來表示
ifR(x,y)>G(x,y)+50&R(x,y)>B(x,y)+50,
thenPixel(x,y)∈foreground;
elsePixel(x,y)∈background。
根據(jù)上述方法可快速實(shí)現(xiàn)背景分割,對圖3所示的下采樣的圖像進(jìn)行背景分割,得到以成熟番茄為目標(biāo)的二值圖像,結(jié)果如圖4所示。
圖4 成熟番茄果實(shí)背景分割結(jié)果圖Fig. 4 Background segmentation result of mature tomatoes
基于顏色信息的背景分割只能完成單個或未遮擋的成熟番茄果實(shí)識別,當(dāng)存在多果重疊和莖葉遮擋等問題,需要采用Hough圓變換算法進(jìn)一步識別番茄果實(shí),而Hough圓變換算法的前提是邊緣信息已知,因此,需要在背景分割的基礎(chǔ)上進(jìn)行成熟番茄果實(shí)邊緣檢測。
邊緣檢測的算法有很多,有Robert算子、Sobel算子、Prewitt算子、LOG算子、Canny算子等。其中,Sobel算子[17]是一種基于一階導(dǎo)數(shù)的邊緣檢測算子,計(jì)算簡單,對噪聲有較好的抑制作用,且定位精度較高,適合對成熟番茄果實(shí)背景分割得到的二值圖像進(jìn)行邊緣檢測。圖5是基于Sobel算子得到的邊緣檢測結(jié)果圖。
圖5 成熟番茄果實(shí)邊緣檢測結(jié)果圖Fig. 5 Edge detection result of mature tomatoes
1.4.1 Hough圓變換算法
Hough變換算法是Paul Hough在1962年提出的一種區(qū)域邊界狀態(tài)檢測算法[18],將原始圖像空間的邊緣信息轉(zhuǎn)換到參數(shù)空間,參數(shù)空間包含了用以表述待檢測圖形的所有參數(shù),因此,根據(jù)Hough變換算法可以檢測出原始圖像中的待檢測圖形。待檢測圖形可以是直線、圓形、橢圓等。
在笛卡爾坐標(biāo)系中,圓形可以表述為
(x-x0)2+(y-y0)2=r2
(1)
式中: (x,y)——圓上任一點(diǎn)的坐標(biāo);
(x0,y0)——圓心坐標(biāo);
r——半徑。
因此,圓形可以用圓心和半徑來描述,Hough圓變換中,參數(shù)空間可以描述為(x0,y0,r)。
為了將原始圖像中的邊緣像素點(diǎn)(x,y)轉(zhuǎn)換到參數(shù)空間(x0,y0,r),將式(1)描述為
(2)
式中:θ——邊緣像素點(diǎn)(x,y)到圓心的直線與水平軸之間的夾角。
對于任一邊緣像素點(diǎn)(x,y),半徑r和夾角θ取不同的值時,代入式(2)則可計(jì)算出x0,y0取值,從而可以得到相應(yīng)的(x0,y0,r)組合。遍歷所有的邊緣像素點(diǎn),計(jì)算出所有的(x0,y0,r)組合。對所有的(x0,y0,r)組合進(jìn)行投票,票數(shù)超過一定閾值的組合即對應(yīng)檢測到的圓形。
Hough變換算法采用了投票制思路,因此對邊緣信息不完全及待檢測圖形非標(biāo)準(zhǔn)等情況都具有很強(qiáng)的魯棒性。
1.4.2 改進(jìn)Hough圓變換算法
圓上任一點(diǎn)的坐標(biāo)(x,y),如果是連續(xù)變量,則可以根據(jù)式(2)準(zhǔn)確轉(zhuǎn)換為(x0,y0,r),但對于離散變量,只能是近似解。在數(shù)字圖像中,邊緣往往是鋸齒狀,即使是標(biāo)準(zhǔn)圓形,代入式(2)求得的(x0,y0,r)也可能存在偏差,在算法后續(xù)投票時可能影響票數(shù)而無法被檢測。因此,對算法進(jìn)行改進(jìn)。根據(jù)邊緣像素點(diǎn)(x,y)計(jì)算得到的(x0,y0,r),不僅對(x0,y0)這一點(diǎn)對應(yīng)的組合(x0,y0,r)票數(shù)值加1,也對(x0,y0)該點(diǎn)8鄰域?qū)?yīng)的組合(x0-1,y0-1,r)、(x0,y0-1,r)、(x0+1,y0-1,r)、(x0-1,y0,r)、(x0+1,y0,r)、(x0-1,y0+1,r)、(x0,y0+1,r)、(x0+1,y0+1,r)票數(shù)分別加1。
計(jì)算出所有的(x0,y0,r)組合后要進(jìn)行投票,票數(shù)超過一定閾值的組合即對應(yīng)檢測到的圓形。由于在數(shù)字圖像中,離散的邊緣像素值轉(zhuǎn)換得到的(x0,y0,r)可能存在偏差,數(shù)字圖像中的標(biāo)準(zhǔn)圓形有可能經(jīng)過Hough圓變換被檢測成多個圓心位置相近且半徑相似的圓,因此需要進(jìn)行聚類,即對票數(shù)超過閾值的組合進(jìn)行聚類。聚類的依據(jù)是:若兩組合中圓心坐標(biāo)相近且半徑大小近似相等,則可以聚為一類。聚類后將該聚為一類的所有圓心坐標(biāo)的均值和半徑的均值作為該類最終的圓的參數(shù)。
改進(jìn)Hough圓變換算法流程圖如圖6所示。
圖6 改進(jìn)Hough圓變換算法流程圖Fig. 6 Flowchart of modified CHT algorithm
在圖6所示的算法流程圖中,尋找與組合A中圓心相近且半徑相似的其他組合,用數(shù)學(xué)表達(dá)式描述如下。
假設(shè)組合A對應(yīng)的圓心坐標(biāo)是(x0A,y0A),半徑為rA,若另一組合B對應(yīng)的圓心坐標(biāo)是(x0B,y0B),半徑為rB,則圓心相近可以表示為
(x0A-x0B)2+(y0A-y0B)2<[min(rA,rA)]2
(3)
由式(3)可知,當(dāng)組合B對應(yīng)的圓心在組合A對應(yīng)的圓內(nèi)部或組合A對應(yīng)的圓心在組合B對應(yīng)的圓內(nèi)部時,認(rèn)為兩圓心相近。而半徑相似可以表示為
rA/rB>Tr&rB/rA<1/Tr
(4)
式中:Tr——半徑相似比閾值,該值是一個0~1之間的數(shù)。
1.4.3 基于改進(jìn)Hough圓變換提取番茄果實(shí)
在邊緣檢測的基礎(chǔ)上,采用改進(jìn)的Hough圓變換算法進(jìn)行番茄果實(shí)提取。如圖7所示,基于改進(jìn)的Hough圓變換算法,對初步檢測到的圓(圓心用圓點(diǎn)表示,邊緣用細(xì)實(shí)線表示)進(jìn)行聚類,得到最終的結(jié)果(圓心用圓圈表示,邊緣用加粗的點(diǎn)劃線表示)。基于改進(jìn)Hough圓變換提取的番茄果實(shí)在圖8中用白色線表示,白色“+”為圓心。
圖7 改進(jìn)Hough圓變換算法檢測結(jié)果圖Fig. 7 Detection result of modified CHT algorithm
圖8 成熟番茄果實(shí)識別結(jié)果圖Fig. 8 Identification result of mature tomatoes
在基于改進(jìn)Hough圓變換算法提取番茄果實(shí)時,算法中有一些參數(shù)需要設(shè)置。
在圖6所示的改進(jìn)Hough圓變換算法流程圖中,第3步取一個可能的r和一個可能的θ,r和θ的選取是在一定范圍內(nèi)以一定步長變化取值的。根據(jù)實(shí)際圖像的統(tǒng)計(jì),半徑r的范圍是20~60像素(針對下采樣后尺寸為400像素×300像素的圖像),半徑r的步長取值為1。θ反映的是邊緣像素點(diǎn)到圓心的連線與水平方向的夾角,因此取值范圍是0°~360°,步長取值為0.1。
Hough變換算法中,在對所有的(x0,y0,r)組合投票后,要進(jìn)行票數(shù)統(tǒng)計(jì),若已知圖像中只有一個圓形,則可以將票數(shù)最多的組合檢測為圓形,但在圓形個數(shù)未知的情況下,需要設(shè)置閾值,將票數(shù)大于閾值的組合加入到候選集合中。這里,閾值的設(shè)置與當(dāng)前投票的票數(shù)最大值有關(guān),它是一個0~1之間的小數(shù),相當(dāng)于票數(shù)最大值的百分比。在多個圓檢測時,若存在圓形被遮擋的情況,該值取值要稍微小點(diǎn),以檢測出所有圓形。在本試驗(yàn)中,該值為0.75。
在對候選集合中的組合進(jìn)行聚類時,是將圓心相近且半徑相似的圓聚為一類,在判斷半徑相似時用到式(4),其中,Tr是半徑相似比閾值,該值是一個0~1之間的數(shù)。對于標(biāo)準(zhǔn)圓形的檢測,該值可以設(shè)置的大點(diǎn),但對于非標(biāo)準(zhǔn)圓,該值要設(shè)置的小點(diǎn)。由于番茄是類球形,一個番茄可能識別出多個半徑不等甚至相差較大的圓形,因此在聚類時,需要將半徑相似比閾值設(shè)置較小,這里設(shè)置為0.5。
番茄植株每一穗果結(jié)果數(shù)量不等,其中每個果實(shí)的成熟度也可能不同。番茄果實(shí)的成熟周期大致可以分為未熟期、綠熟期、轉(zhuǎn)色期、半熟期、成熟期和完熟期等6個階段[19],采用本文1.2節(jié)中的基于顏色信息的背景分割方法,基本可以識別半熟期、成熟期和完熟期的番茄,當(dāng)存在多個不同成熟周期的番茄果實(shí)時,成熟番茄果實(shí)的識別較為復(fù)雜。當(dāng)果實(shí)被枝葉遮擋或存在多果重疊時,準(zhǔn)確識別成熟番茄果實(shí)也較為復(fù)雜。為了驗(yàn)證本文算法在多種不同情況下的識別效果,采集圖像80張進(jìn)行試驗(yàn),并與傳統(tǒng)的Hough圓變換算法進(jìn)行對比,圖9給出三種不同情況下的試驗(yàn)結(jié)果。
圖9中,第1組試驗(yàn)圖中包含了完熟期、成熟期、轉(zhuǎn)色期和未熟期等不同成熟周期的番茄果實(shí)(主要為轉(zhuǎn)色期果實(shí)干擾成熟番茄識別),第2組試驗(yàn)圖中存在番茄果實(shí)被莖葉和果柄遮擋的情況,第3組試驗(yàn)圖中存在番茄果實(shí)部分重疊的情況。
將圖9所示的三組試驗(yàn)分別采用傳統(tǒng)Hough圓變換算法和本文改進(jìn)算法的識別結(jié)果進(jìn)行統(tǒng)計(jì),如表1所示。
表1 圖9中三組試驗(yàn)結(jié)果統(tǒng)計(jì)表Tab. 1 Statistics of three groups of test in Fig. 9
圖9 三種不同情況下的成熟番茄果實(shí)識別
由表1可知,對于圖9所示的三種不同情況下的成熟番茄果實(shí)識別,采用傳統(tǒng)的Hough圓變換算法能完成基本識別,但由于番茄非標(biāo)準(zhǔn)球形,因此存在一個番茄果實(shí)被識別為多個圓形的問題,而本文算法能夠得到較為準(zhǔn)確的識別結(jié)果。
此外,分別計(jì)算采用傳統(tǒng)的Hough圓變換算法和本文算法識別成熟番茄果實(shí)的運(yùn)行時間,如表2所示。由表2可知,本文算法與傳統(tǒng)的Hough圓變換算法相比,極大提高了算法的執(zhí)行效率。
將采集到的80張圖像進(jìn)行分類試驗(yàn),并分別統(tǒng)計(jì)各類試驗(yàn)的識別率。由于傳統(tǒng)的Hough圓變換算法存在一個番茄果實(shí)被識別為多個圓形的問題,因此分類試驗(yàn)只對本文算法進(jìn)行。分類主要包括5類:(1)簡單情況,即一穗果中成熟果實(shí)為1個,或多個果實(shí)無相互遮擋,且莖葉遮擋極少,無轉(zhuǎn)色期果實(shí);(2)包含了完熟期、成熟期、轉(zhuǎn)色期和未熟期等不同成熟周期的番茄果實(shí),即轉(zhuǎn)色期果實(shí)干擾成熟番茄識別;(3)存在番茄果實(shí)被莖葉和果柄遮擋的情況;(4)存在番茄果實(shí)部分重疊的情況;(5)同時包含2、3、4多種不同情況,即復(fù)雜情況。表3給出了5類試驗(yàn)的識別結(jié)果統(tǒng)計(jì)情況。
表2 算法運(yùn)行時間對比Tab. 2 Contrast of methods running time
在表3中,實(shí)際成熟番茄個數(shù)是人工統(tǒng)計(jì)得到的,識別的番茄個數(shù)是采用本文算法識別到的成熟番茄個數(shù),漏檢個數(shù)是指未被識別到的成熟番茄個數(shù),誤檢個數(shù)是指被錯誤檢測的成熟番茄個數(shù)(本試驗(yàn)中的錯誤檢測是一個成熟番茄被錯誤地識別為多個圓形),正確識別率是指正確識別個數(shù)與實(shí)際成熟番茄個數(shù)的比率,漏檢率是指漏檢個數(shù)與實(shí)際成熟番茄個數(shù)的比率,誤檢率是指誤檢個數(shù)與實(shí)際成熟番茄個數(shù)的比率。計(jì)算五類試驗(yàn)平均正確識別率為86.3%,平均漏檢率為5.7%,平均誤檢率為8.0%。
表3 分類試驗(yàn)識別結(jié)果統(tǒng)計(jì)情況Tab. 3 Statistics of identification in the classification tests
1) 當(dāng)一穗果中成熟果實(shí)為1個,或多個果實(shí)無相互遮擋,且莖葉遮擋極少,無轉(zhuǎn)色期果實(shí)干擾時,本文算法可以準(zhǔn)確識別。
2) 當(dāng)存在多個不同成熟周期的番茄果實(shí)、果實(shí)被莖葉遮擋、多果重疊等情況,或多種情況同時存在時,識別準(zhǔn)確率降低。識別錯誤包括漏檢、誤檢等情況,如遮擋嚴(yán)重時會發(fā)生漏檢,先采摘識別到的果實(shí),然后再次采集圖像并進(jìn)行識別,可以實(shí)現(xiàn)漏檢番茄的采摘。
3) 番茄果實(shí)識別可以與成熟度分級同時進(jìn)行,這樣當(dāng)存在多個不同成熟周期的番茄果實(shí)時,可以按照成熟度分別采摘存放,以提高采摘效率和經(jīng)濟(jì)效益。
4) 采用改進(jìn)的Hough圓變換算法識別番茄果實(shí),可以計(jì)算出圓心和半徑,用以擬合果實(shí)的形心和半徑,為控制番茄采摘機(jī)器人機(jī)械手動作提供數(shù)據(jù)信息。
1) 本文對采集到的圖像進(jìn)行下采樣,以及采用Sobel算子對背景分割后的二值圖像進(jìn)行邊緣提取,都是為了減少Hough圓變換算法的運(yùn)算量,提高運(yùn)行效率。由于數(shù)字圖像中邊緣信息轉(zhuǎn)換到參數(shù)空間時非精確解,而是近似解,因此對Hough圓變換算法進(jìn)行改進(jìn),對轉(zhuǎn)換時計(jì)算出的圓心及其8-鄰域?qū)?yīng)的組合進(jìn)行投票。由于番茄果實(shí)為類球形,采用標(biāo)準(zhǔn)Hough圓變換算法可能將同一個番茄果實(shí)識別為多個圓形,因此對Hough圓變換算法進(jìn)行改進(jìn),將圓心相近且半徑相似的組合進(jìn)行聚類,實(shí)現(xiàn)了對番茄果實(shí)的準(zhǔn)確識別。
2) 本文算法對存在不同成熟周期的番茄果實(shí)、莖葉遮擋、多果重疊等多種情況都能有效識別,而傳統(tǒng)的Hough圓變換算法存在一個番茄果實(shí)被識別為多個圓形的問題,因此基本失效。對于上述三種情況,本文算法的準(zhǔn)確識別率分別為87.5%、85%、84.8%,漏檢率分別為0%,5%,8.7%,誤檢率分別為12.5%,10%,6.5%,三種情況同時存在的復(fù)雜情況下準(zhǔn)確識別率為84.6%,漏檢率為6.4%,誤檢率為9%,而簡單情況下可以100%準(zhǔn)確識別,經(jīng)統(tǒng)計(jì),平均正確識別率為86.3%,平均漏檢率為5.7%,平均誤檢率為8.0%,平均運(yùn)行時間為398 ms。