楊 萍,郭志成
(蘭州理工大學(xué) 機(jī)電工程學(xué)院,甘肅 蘭州 730050)
花椒(Zanthoxylum bungeagumMaxim)是“八大調(diào)味品”之一,且具有一定的中藥價(jià)值。隨著我國(guó)花椒市場(chǎng)需求的增加,花椒樹(shù)的培養(yǎng)面積日益擴(kuò)大,人工采摘過(guò)程中所面臨的諸多問(wèn)題也日漸明顯。首先,花椒樹(shù)高2 ~5 m,目前花椒的采摘全靠人工,采摘工作量大。花椒樹(shù)表皮多帶有皮刺,對(duì)采摘人員容易造成傷害。其次,由于花椒種植環(huán)境復(fù)雜、不規(guī)范,特別是甘肅省花椒種植地多為山地,人工采摘花椒效率非常低,所以研發(fā)1 款能夠自主采摘花椒的機(jī)器人迫在眉睫。
目前,國(guó)內(nèi)基于視覺(jué)的花椒采摘機(jī)器人的研發(fā)處于初級(jí)階段。其難點(diǎn)主要是花椒果實(shí)質(zhì)量較輕且生長(zhǎng)方向不確定;采摘時(shí)主要以串為單位而每串花椒的果實(shí)顆粒的生長(zhǎng)較分散,這就給識(shí)別和定位花椒提出挑戰(zhàn)。文獻(xiàn)[1]在吸氣式花椒采摘機(jī)械臂的基礎(chǔ)上設(shè)計(jì)了基于紅綠圖像差異的方法進(jìn)行圖像識(shí)別,然后通過(guò)計(jì)算花椒果實(shí)串的形心和半徑最終確定花椒的采摘點(diǎn)。文獻(xiàn)[2]設(shè)計(jì)的花椒采摘視覺(jué)系統(tǒng)利用的是花椒圖像在RGB 和HSV 顏色空間中各顏色分量的特點(diǎn),采用閾值分割方法將花椒目標(biāo)與背景分割,然后提取目標(biāo)輪廓,結(jié)合形心偏差計(jì)算方法和慣性主軸最終確定出采摘點(diǎn)。
筆者針對(duì)識(shí)別、定位花椒過(guò)程中,所面臨的離散型花椒串難以定位質(zhì)心和花椒母枝生長(zhǎng)方向不確定難以定位采摘點(diǎn)等問(wèn)題。提出了摘花椒的單目視覺(jué)系統(tǒng),其作用不但能夠準(zhǔn)確識(shí)別出花椒果實(shí),同時(shí)也能夠獲取采摘點(diǎn)的深度信息和定位采摘點(diǎn)三維世界坐標(biāo)。最后通過(guò)實(shí)驗(yàn)驗(yàn)證算法具有一定的可行性。
閾值分割法[3]是經(jīng)典且常用的圖像分割算法,由于成熟花椒呈現(xiàn)較明顯的紅色,并且花椒種植農(nóng)田間的背景多為樹(shù)木、樹(shù)葉、土地和少量天空、雜草,這與成熟目標(biāo)花椒呈紅色調(diào)的特點(diǎn)具有較明顯的顏色差異。所以通過(guò)設(shè)置RGB 顏色空間下的紅色R值將目標(biāo)提取出來(lái)。設(shè)分割后圖像函數(shù)為h(x,y)、原圖像為f(x,y)、R為閾值,則閾值分割算法滿足下列表達(dá)式:
為了觀察不同R值的分割結(jié)果,將R值從0.3以間隔為0.01 開(kāi)始取值,最終確定R分量的閾值完成識(shí)別任務(wù)。經(jīng)過(guò)多次實(shí)驗(yàn)確定R分量的閾值為0.6,圖像識(shí)別結(jié)果如圖1(b)所示。
模糊C 均值算法[4]是多元統(tǒng)計(jì)分析中的1 種無(wú)監(jiān)督分割模式算法,其基本思想是用迭代的方式計(jì)算隸屬度函數(shù)和簇中心同時(shí)達(dá)到最優(yōu)的過(guò)程。讓目標(biāo)函數(shù)達(dá)到最?。?/p>
式(2)中,m為加權(quán)指數(shù);若m值過(guò)大則聚類效果差,m值過(guò)小則算法變?yōu)橛睠 均值聚類算法。uij為子集xj與子集xi之間的隸屬關(guān)系,xi、xj為數(shù)據(jù)組X={x1,x2,…,xc}的子集。
為了使算法有很好的區(qū)分效果,保證模糊數(shù)組中每點(diǎn)到聚類中心的價(jià)值函數(shù)Jm達(dá)到最小,需要確定模糊組C的個(gè)數(shù),若C值過(guò)大則目標(biāo)被分到不同的類,若C值過(guò)小則聚類結(jié)果不夠精確。因此為保證聚類結(jié)果的準(zhǔn)確性,經(jīng)過(guò)多次實(shí)驗(yàn)最終確定聚類數(shù)C=3,聚類結(jié)果如圖1 所示,當(dāng)C=2 時(shí)算法提取的結(jié)果中包括一些樹(shù)枝和樹(shù)葉。當(dāng)C=3 和C=4 時(shí)算法能將花椒提取出來(lái)。當(dāng)C=5 時(shí)由于將花椒聚成不同類,所以花椒的提取效果變差。為了減少計(jì)算量所以選擇C=3,從圖中可以看出算法能很好地將花椒目標(biāo)分割出來(lái)。
圖1 模糊C 均值算法Fig.1 fuzzy c-means algorithm
K-means 聚類算法[5]與FCM 算法同屬于無(wú)監(jiān)督學(xué)習(xí)算法,是把n個(gè)數(shù)據(jù)劃分到K個(gè)簇,通過(guò)迭代計(jì)算來(lái)讓函數(shù)J達(dá)到最小。
當(dāng)數(shù)據(jù)點(diǎn)被劃分到相似類的時(shí)候?yàn)閞nk=1,否則rnk=0,μk為同一簇的均值。算法就是讓同一類中各數(shù)據(jù)間的相似性較高;不同類間的相似性較低。K-means 聚類算法關(guān)鍵是聚類數(shù)K的選取,通過(guò)K=2,K=3,K=4 進(jìn)行實(shí)驗(yàn),如下圖2 所示,由于花椒田背景比較復(fù)雜同時(shí)包括:農(nóng)田、農(nóng)作物、天空、房屋等多種背景,從圖中可以看出當(dāng)K=2 時(shí)目標(biāo)無(wú)法被提取,當(dāng)K=3,K=4 時(shí)提取效果基本一致,為提高算法速度并通過(guò)多次實(shí)驗(yàn)最終確定K=3。
圖2 K 值選擇Fig.2 K value selection
最大熵分割算法是以圖像的熵為準(zhǔn)則,用統(tǒng)計(jì)測(cè)量方法對(duì)目標(biāo)圖像進(jìn)行分割,熵定義為:
用閾值q(0<=q<K-1)將圖像分割為C0和C1區(qū)域,其概率密度函數(shù)為:
上式中p0(q),p1(q)代表的是近景和遠(yuǎn)景的累計(jì)概率,和為1。p0(q)和p1(q)對(duì)應(yīng)的熵如下:
在該閾值下,圖像總熵為:
圖3(e)為最大熵閾值算法的分割結(jié)果。
通過(guò)對(duì)比上述算法,如圖3 所示,可知K-means聚類算法可以更完整提取圖像中的花椒。
圖3 算法對(duì)比Fig.3 Algorithm comparison
由于K-means 聚類算法無(wú)法自動(dòng)判別目標(biāo)和背景。所以根據(jù)成熟花椒紅色調(diào)較明顯的特點(diǎn),先把花椒圖像從RGB 轉(zhuǎn)換到Lab 顏色空間[6],再選Lab 顏色空間下a分量最大的子類為目標(biāo),從而完成花椒的自動(dòng)提取。因圖像在拍攝、傳輸和處理過(guò)程中,存在噪聲和失真等干擾,為提高圖像的清晰度和便于分割,應(yīng)先對(duì)花椒圖片進(jìn)行濾波、降噪等預(yù)處理。
步驟1:用攝像機(jī)對(duì)目標(biāo)進(jìn)行圖像采集。
步驟2:使用模數(shù)轉(zhuǎn)換器將采集到的圖片信息模擬量轉(zhuǎn)換成數(shù)字量。
步驟3:將得到的數(shù)字化圖片進(jìn)行濾波,去噪,尺寸修改等預(yù)處理工作。
步驟4:將花椒圖像從RGB 顏色空間轉(zhuǎn)換至Lab 顏色空間。
步驟5:運(yùn)用K-means 聚類算法對(duì)花椒圖像進(jìn)行識(shí)別,設(shè)置K=3。
步驟6:將提取出的花椒結(jié)果轉(zhuǎn)化成2 值圖像。
步驟7:將2 值化的圖像進(jìn)行2 次降噪。
步驟8:運(yùn)用Canny 算子提取2 值圖像邊緣。
步驟9:運(yùn)用2 值填充方法對(duì)下個(gè)圖進(jìn)行2 次填充。
步驟10:運(yùn)用1 階質(zhì)心矩算法定位花椒質(zhì)心,圖中藍(lán)色星型點(diǎn)為質(zhì)心位置。
步驟11:輸出結(jié)果。
如圖4 所示,圖中的圖片來(lái)源于甘肅省定西市臨洮縣龍門鎮(zhèn)魏家坪農(nóng)田中的花椒照片。從圖4 中可以看出圖片背景包括花椒、花椒樹(shù)葉、農(nóng)田、房 屋、其他農(nóng)作物等,算法均能很好地將花椒目標(biāo)提取出來(lái)。
圖4 目標(biāo)提取Fig.4 Target extraction
根據(jù)花椒串的生長(zhǎng)特點(diǎn)具有離散性的特點(diǎn),可知花椒果實(shí)的二值圖像會(huì)有2 種情況;一是多個(gè)獨(dú)立的連通區(qū)域,二是能夠形成完整的連通區(qū)域。針對(duì)第1 種情況本文提出了根據(jù)求平面內(nèi)質(zhì)點(diǎn)系的質(zhì)心算法,確定平面內(nèi)離散花椒顆粒的質(zhì)心。
針對(duì)第1 種情況需將花椒果實(shí)二值圖像等效為平面內(nèi)的質(zhì)點(diǎn)系。首先將已提取出的花椒果實(shí)圖像二值化求出連通區(qū)域,然后將此二值圖像內(nèi)的各獨(dú)立花椒果實(shí)顆粒,如圖6(b)所示,等效為平面內(nèi)的質(zhì)點(diǎn)系如圖5 所示,求出二值圖像內(nèi)花椒顆粒的質(zhì)心坐標(biāo)xi、yi,和單個(gè)獨(dú)立連通區(qū)域內(nèi)的所有像素和作為質(zhì)量mi,如圖6(b)所示。然后根據(jù)平面內(nèi)質(zhì)點(diǎn)系的質(zhì)心算法,將xi、yi、mi帶入公式(12)和公式(13)求出花椒串的質(zhì)心坐標(biāo)。圖6(c)中紅色圓點(diǎn)為最終求得的花椒串質(zhì)心。
圖5 質(zhì)點(diǎn)系的質(zhì)心Fig.5 Center of mass of particle system
若花椒果實(shí)串可以形成1 個(gè)完整的連通區(qū)域,則可以直接計(jì)算花椒果實(shí)串的質(zhì)心坐標(biāo),如圖6(d—e)所示,圖中紅色圓點(diǎn)為質(zhì)心。
圖6 提取目標(biāo)花椒之心Fig.6 Extraction of the heart of the target Zanthoxylum bangeanum
通過(guò)分析花椒圖像在Lab 顏色空間下a分量直方圖可知,花椒和花椒結(jié)果母枝相對(duì)于葉子和背景在直方圖中灰度值的對(duì)比度較大[7]。如下圖7 所示,從圖中可以看出a分量灰度直方圖具有明顯的雙峰特點(diǎn)。
圖7 花椒圖像的a 分量直方圖Fig.7 A component histogram of Zanthoxylum bangeanum image
所以,可先采用Otsu 算法與最大熵閾值的線性組合[8]計(jì)算出花椒a分量的閾值將葉子和背景去除如圖7,得到僅有花椒和花椒結(jié)果母枝如圖8(b),采用形態(tài)學(xué)腐蝕和膨脹處理濾掉圖像中的噪聲和空洞圖8(c),將K-means 聚類算法提取出的圖像,如圖8(d)所示,轉(zhuǎn)換為二值圖像,如圖8(f)所示,然后經(jīng)過(guò)1 次膨脹運(yùn)算,再將其與已分割出的花椒串的二值圖像,如圖8(e)所示,進(jìn)行圖像相減,實(shí)現(xiàn)花椒結(jié)果母枝區(qū)域的提?。?]如圖8(g)。
圖8 提取結(jié)果母枝Fig.8 Extraction of fruiting mother branch
分析花椒的生長(zhǎng)特點(diǎn)可知,花椒采摘點(diǎn)所在的結(jié)果母枝直線的延長(zhǎng)線通過(guò)花椒的質(zhì)心,或與花椒質(zhì)心的距離最短。因此,筆者用點(diǎn)到直線的最短距離為限定條件確定最終采摘點(diǎn)所在的線段[10],式(16)中函數(shù)是花椒質(zhì)心到各直線距離,目標(biāo)采摘點(diǎn)在min(Di)所對(duì)應(yīng)的直線段上,取該線段的中點(diǎn)作為采摘點(diǎn)[11]。如圖9 示意圖所示,圖中xC、yc為質(zhì)心像素坐標(biāo)。
先將花椒結(jié)果母枝進(jìn)行Canny 邊緣提取,然后將邊緣圖像進(jìn)行霍夫直線檢測(cè),如式(15),并記錄線段端點(diǎn)坐標(biāo)[12]。
式中x、y—圖像像素坐標(biāo);
ρ—原點(diǎn)到直線的距離;
θ—直線法線和X軸的夾角。
設(shè)上式(14)檢測(cè)得出的線段端點(diǎn)為p1=(xi1,yi1)和p2=(xi2,yi2),設(shè)兩點(diǎn)直線方程為L(zhǎng)i(x,y)=0,如圖9中的紅色線段。
根據(jù)求解點(diǎn)到直線距離,求出各個(gè)直線到質(zhì)心的距離Di,當(dāng)D最小時(shí)直線為所需要直線。
圖9 示意圖Fig.9 Sketch map
采摘點(diǎn)提取結(jié)果如圖10,其中紅色直線的中點(diǎn)為花椒的采摘點(diǎn)。
圖10 定位采摘點(diǎn)Fig.10 Locating of the picking point
根據(jù)相機(jī)成像的基本原理:
式中f為焦距,u為物距,v為像距。
相機(jī)在保證內(nèi)參數(shù)和外參數(shù)不變的情況下,將相機(jī)沿光軸方向移動(dòng),對(duì)靜止物體進(jìn)行2 次拍照。根據(jù)透鏡的2 次成像原理,如圖11 所示,經(jīng)過(guò)幾何關(guān)系推導(dǎo)可得出式(18)和式(19),式中k為大于零的實(shí)數(shù)。
圖11 透鏡2 次成像Fig.11 Twice imaging of lens
根據(jù)薄透鏡成像原理可知物體在成像時(shí)的放縮率是相同的,首先假設(shè)相機(jī)對(duì)目標(biāo)物體拍照形成的曲邊形的面積為Ai,相機(jī)沿光軸移動(dòng)后對(duì)物體拍照?qǐng)D像上形成的面積為Bi,從圖12 中可以看出Ai相似于Bi。設(shè)Ai的極坐標(biāo)方程為:
則Bi的極坐標(biāo)方程為:
圖12 極坐標(biāo)下任意曲邊面積Fig.12 Area of any curved edge in polar coordinates
根據(jù)曲線積分求得Ai和Bi區(qū)域面積為:
可得SBi=k2SBi,令SA=S像1,SB=S像2,則有:S像2=k2S像1。所以下式成立;
從式(25)中可以看出u為照相機(jī)到目標(biāo)物體的深度距離[13]。
基于上述理論對(duì)目標(biāo)花椒進(jìn)行同光軸2次拍照,由于拍攝的每組照片需要沿著相機(jī)的光軸移動(dòng)距離d,但實(shí)際拍攝的角度和精確的距離難以控制,所以本文將相機(jī)固定在高精度直線導(dǎo)軌上且用機(jī)械的方式限定相機(jī)的前后移動(dòng)位置。提取出2 張結(jié)果母枝圖像如圖13(c,d),分別用Surf 算法對(duì)兩圖像進(jìn)行特征點(diǎn)提取見(jiàn)圖13(e,f),并對(duì)兩圖像進(jìn)行特征點(diǎn)匹配見(jiàn)圖13(g),提取20 個(gè)特征最明顯的特征點(diǎn)形成凸包如圖13(h,i),計(jì)算出結(jié)果母枝凸包區(qū)域的面積S像1和S像2帶入式(25),相機(jī)沿光軸移動(dòng)距離d=100 mm,求出花椒的深度距離,如圖13 所示,鏡頭到花椒的真實(shí)距離為105 mm,算法計(jì)算的距離為107.39 mm,經(jīng)過(guò)多次實(shí)驗(yàn)驗(yàn)證 如表1 所示,從表中可以看出誤差范圍滿足采摘的 需求。
圖13 花椒母枝的深度計(jì)算Fig.13 Calculation of the depth of the mother branch of Zanthoxylum bungeanum
表1 深度計(jì)算誤差分析Table 1 Error analysis of depth calculation
根據(jù)相機(jī)針孔成像的基本原理可知1 幅圖像中的物體坐標(biāo)與三維世界坐標(biāo)之間的轉(zhuǎn)化需要經(jīng)過(guò)4個(gè)坐標(biāo)系的轉(zhuǎn)換,這4 個(gè)坐標(biāo)系分別是:世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像物理坐標(biāo)系、圖像像素坐標(biāo)系。如圖14 所示,圖中可以得出物體在圖像中的坐標(biāo)與在三維世界中的坐標(biāo)的轉(zhuǎn)換公式(26)。
圖14 坐標(biāo)轉(zhuǎn)換Fig.14 Transformation of coordinate
上式(26)中等式右端第1 個(gè)矩陣與第2 個(gè)矩陣的乘積稱為相機(jī)的內(nèi)參數(shù)矩陣,矩陣[R|T]稱為相機(jī)的旋轉(zhuǎn)平移矩陣又叫相機(jī)外部參數(shù)矩陣,等式最右邊為物體的三維空間坐標(biāo)向量,等式左邊Zc為采摘點(diǎn)在相機(jī)坐標(biāo)下的坐標(biāo)值,x,y為采摘點(diǎn)在圖片內(nèi)的坐標(biāo)值。筆者利用Matlab2017A 的App 中Camera calibrator 對(duì)相機(jī)做標(biāo)定,得出相機(jī)的內(nèi)部參數(shù)矩陣為:
以機(jī)器人的基坐標(biāo)為基準(zhǔn),根據(jù)相機(jī)的擺放位置和偏轉(zhuǎn)角度得出相機(jī)的外部參數(shù)矩陣為:
設(shè)采摘點(diǎn)的三維世界坐標(biāo)為(Xw,Yw,Zw)帶入式(26),深度以表1 中第1 組數(shù)據(jù)為例,求出采摘點(diǎn)的真實(shí)坐標(biāo)為(-145.953,-211.607,-218.111)mm, 實(shí)際測(cè)量坐標(biāo)為(145,210,216)mm,滿足采摘需求。
本文花椒圖像拍攝于甘肅省定西市臨洮縣龍門鎮(zhèn)魏家坪,背景包含農(nóng)田、天空、房屋和其他農(nóng)作物。拍攝相機(jī)為Microsoft 公司生產(chǎn)的LifeCam studio 型號(hào)的相機(jī),分辨率為1 920×1 080 像素。本文實(shí)驗(yàn)圖像的拍攝來(lái)自于攝像機(jī)對(duì)3 顆花椒樹(shù)上不同位置花椒的拍攝。實(shí)驗(yàn)結(jié)果,如圖15 和表2 所示,從圖中可以看出算法能夠定位出采摘點(diǎn)的位置,但是當(dāng)圖像背景中包含許多花椒樹(shù)的枝干時(shí),會(huì)導(dǎo)致采摘點(diǎn)的定位失敗。
圖15 采摘點(diǎn)定位實(shí)驗(yàn)Fig.15 Picking point positioning experiment
由表2 可以看出,在算法具有一定的可行性。
表2 實(shí)驗(yàn)結(jié)果Table 2 Experiment result
筆者對(duì)花椒采摘機(jī)器人的視覺(jué)分割及定位技術(shù)進(jìn)行了研究,首先通過(guò)對(duì)比4 種分割算法的性能,確定利用提取效果最好的K-means 聚類算法識(shí)別出花椒果實(shí),根據(jù)花椒串具有離散性的特點(diǎn)提出利用平面內(nèi)質(zhì)點(diǎn)系模型計(jì)算其質(zhì)心。然后結(jié)合Otsu 算法與最大熵閾值的線性組合提取出花椒結(jié)果母枝,利用單目攝像機(jī)獲取結(jié)果母枝的深度數(shù)據(jù)。最后通過(guò)限定霍夫直線到質(zhì)心最短距離確定出采摘點(diǎn)在圖像中的坐標(biāo),再根據(jù)三維世界坐標(biāo)與圖像坐標(biāo)的轉(zhuǎn)換定位采摘點(diǎn)的三維世界坐標(biāo)。