柳長源 賴楠旭 畢曉君
(1.哈爾濱理工大學測控技術與通信工程學院, 哈爾濱 150080; 2.中央民族大學信息工程學院, 北京 100081)
果實的識別定位是果實采摘機器人研究的核心,其算法研究一直存在著三大重點難題,分別是光照問題[1-2]、遮擋問題[3-4]以及近色背景果實識別問題[5-6]。其中,光照問題隨著圖像處理技術的逐漸成熟而基本得到解決,遮擋問題也隨著三維視覺工具的產生,逐漸有了解決方案。但是由于彩色二維圖像本身存在的弊端,近色背景果實識別問題目前仍是難點。
目前,國內外對于近色背景果實識別問題的解決方案主要是采用模板匹配或機器學習的方法。文獻[7-9]采用了傳統圖像處理的方法,利用圖像增強或對比度直方圖均衡化的方法增強果實與背景的顏色差,然后通過開閉操作以及Hough圓等算法實現對果實的識別,文獻[10-15]通過對果樹圖像進行預處理,提取果實和枝葉的灰度或紋理特征來構成訓練集,并搭建卷積神經網絡模型實現對綠色果實的識別。此類算法實際上都是利用了果實與背景圖像顏色之間的細微差異作為識別的特征,因此此類算法的魯棒性都比較差,極易受到光照的影響,而且算法往往只適用于單一種類的果實。由此可見,利用果實顏色特征來處理近色背景果實識別問題并不是理想的解決方案。
深度圖像[16]是一種將攝像頭到場景中各點距離作為像素值的圖像,它可以直接反映出物體表面的三維形狀信息。在果實識別定位研究領域中,它常用來處理果實的重疊和遮擋問題[17-19],但這些應用僅僅利用了果實和背景之間的層次關系,并沒有充分利用到深度圖像中的三維信息。實際上大部分果實都是近球形,而這個幾何特征在深度圖像中能夠被很好地體現。
因此,為找出解決近色背景果實識別問題的方案,本文舍去傳統算法中常用的顏色特征,改為從果實幾何形狀的角度進行研究,設計一種基于深度圖像的球形果實識別定位算法。
深度攝像頭目前主要分為結構光攝像頭[20]和TOF(飛行時間)攝像頭[21]。結構光攝像頭的成像原理為紅外激光器向外發射紅外散斑,再用紅外攝像頭接收反射的結構光圖案,然后進行深度信息的解算,這種方法計算量少,功耗低,近距離范圍精度更高,但其發射的紅外散斑非常容易被自然光所淹沒,因此不適合在室外環境下應用。而TOF攝像頭的成像原理則是紅外發射器發射調制過的光脈沖,然后用接收器接收反射回來的光脈沖,并根據光脈沖的往返時間計算與物體之間的距離,這種方法成像快,功耗高,對圖像邊緣信息保留得更完整且不受光照影響。因此,考慮到采摘機器人常工作于室外復雜環境,本文采用RealSense AXON M5 型TOF攝像頭作為深度信息采集設備,該攝像頭尺寸僅有55 mm×18 mm×10.6 mm,分辨率為640像素×480像素,視場角為60°×45°,有效深度范圍為0.3~1.2 m。
實驗對象為高1.6 m的仿真果樹模型,果樹安裝有20顆綠色果實(可隨意更換位置),拍攝距離為0.3~0.7 m,由于果實通常都是處于懸掛狀態,枝葉大多處于果實的上方,由下而上的拍攝角度能夠有效降低果樹枝葉對果實遮擋的影響,因此實驗主要采用正視和仰視的角度對果樹進行拍攝,總共獲得50幅果樹深度圖像及其對應彩色圖像。實驗平臺采用Intel RealSense SDK工具包和Visual Studio 2015軟件平臺實現深度攝像頭對果樹圖像的采集,并搭配OpenCV庫和PCL點云庫2個API實現對深度圖像的運算處理,彩色圖像用于實驗結果對比驗證,攝像頭采集的果樹彩色圖像和深度圖像如圖1所示。

圖1 RealSense采集的圖像Fig.1 Image acquisition by RealSense
本文提出的算法流程為:首先采集果樹的深度圖像,利用深度圖像求出各像素點的梯度向量,然后將梯度向量看作運動矢量場,并計算出矢量場的散度,根據散度最大原則從矢量場中找出輻散中心點,并利用果實和葉片等深圖像的差異從輻散中心點中篩選出果實中心點,以果實中心點為起點采用八方向搜索方法搜索出果實邊界點,將果實邊界點依次連接提取出果實部分圖像導入點云,最后根據果實圖像部分點云采用隨機采樣一致性(Random sample consensus,RANSAC)算法[22-23]求出目標果實的擬合球形,進而得出果實的尺寸以及空間位置。
由于在深度圖像中像素的特征表現為灰度,會隨著物體表面深度的增加而增大,因此在深度圖像中,果實與背景的分割并不能像彩色圖像那樣直接通過設置灰度閾值來實現,而深度圖像實際上表現的是物體的三維信息,因此需要從形態的角度來找出它們之間的特征差異。
為了描述深度圖像中果實與背景的形態特征,本文采用了計算深度圖像梯度的方法。深度圖像的梯度即深度圖像中的深度分量D在x和y方向上的偏導數Dx、Dy,梯度向量V計算公式為
(1)
但在圖像處理領域中,無法直接對像素進行求導,因此將像素點某一方向上深度分量的偏導數看作是該像素點的灰度在該方向上變化的差值,由于距離較近的像素點灰度差值太小,無法得出有效的梯度,因此在計算過程中需以k個像素點作為采樣間隔提取像素點的灰度來計算深度圖像梯度,計算公式為
Xij=Di(j+k)-Di(j-k)
(2)
Yij=D(i+k)j-D(i-k)j
(3)
式中Xij——深度圖像中第i行第j列像素的橫向梯度
Yij——深度圖像中第i行第j列像素的縱向梯度
Dij——深度圖像中第i行第j列像素的灰度
k——梯度采樣間隔
其中,k的取值可根據果實的尺寸以及攝像頭精度進行設置,本文k取值為4~6,k取值越小則越有利于梯度向量表示物體表面的形態特征,但取值過小則會因計算出過多的無效梯度而對后續算法造成影響。
計算出圖像梯度后,將每個像素點用梯度向量Vij表示為
Vij=(Xij,Yij)
(4)
圖2為將深度圖像梯度向量可視化后的圖像,通過觀察梯度向量圖可以發現,由于果實接近于球體模型,表面呈現出凸曲面的特性,其梯度圖像表現為梯度向量從球心出發向四周延伸,且越接近球心部分梯度越小,越接近邊緣部分則梯度越大。而對于背景部分,大葉片由于接近片體,其梯度圖像表現為梯度向量朝著一個方向均勻變化的特性,小枝葉背景則呈現出雜亂的無序狀。利用該梯度向量圖中果實與枝葉背景的梯度特征差異,便可實現對果實中心的粗定位。

圖2 梯度向量可視化圖像Fig.2 Gradient vector visualization images
散度是氣象學中描述空氣從四周匯合到某一點或從某一點處發散程度的量,本文將其引入用于果實中心的定位提取。
在氣象學中,流體在運動中集中的區域稱為輻合,運動中發散的區域稱為輻散。而在梯度向量圖中,每個梯度向量實際上都可以看作是一個流體的運動矢量,而梯度向量圖中果實圖像部分的矢量正好表現為輻散的特性,因此,可以將梯度向量圖看成一個矢量場,然后通過計算散度的方式求出矢量場中的輻散中心,進而得出果實中心的位置。
由散度定義可知,散度在輻散中心處取得最大值,在輻合中心處取得最小值。而從梯度向量圖可以看到,果實中心點位置正好處在輻散中心點附近,即果實中心點位置在梯度向量圖中散度極大值處取得,散度計算公式為
(5)

輻散中心定位結果如圖3所示。

圖3 輻散中心定位示意圖Fig.3 Diagram of divergence center positioning
通過梯度向量計算散度來提取輻散中心的方法,實際上就是將深度圖像數字離散化后進行的數學運算,并不能保證提取出的輻散中心點便是所需要的果實中心點,由于樹葉的彎曲以及枝葉背景等隨機因素檢測出許多誤判點。因此,為了剔除這些誤判點對后續算法的干擾,需要對所有輻散中心點進行分析處理,篩選出果實中心點。
果實中心點的篩選算法主要利用了果實部分等深圖形與背景等深圖形的差異來進行區分。圖4為深度圖像繪制出等深曲線后的等深圖,通過觀察等深圖可以發現,在果實圖像部分,等深圖像會呈現出類似年輪的形狀,而果實中心處的圖形也是接近圓形的形狀,背景枝葉部分的等深圖形表現為長條狀或雜亂的小圓點。因此便可利用此特征,通過檢測輻散中心點處等深圖形的形狀來檢測該輻散中心點是否為果實中心點。

圖4 果樹等深圖Fig.4 Contour map of fruit tree
具體操作如圖5所示,以輻散中心點為起始點,采用漫水填充算法對起始點附近灰度相同的像素點進行填充標記,然后做出填充圖形的最小外接矩形,并將最小外接矩形的高寬比以及矩形框內標記像素點占比作為果實中心點的判別依據,判別函數關系式為
(6)
式中H——最小外接矩形框高度
W——最小外接矩形框寬度
A——最小外接矩形框內標記像素數
δE——高寬比以及寬高比閾值
δT——矩形框內標記像素點占比閾值
由于誤判點處的等深圖形可能會呈現出小圓點的形狀,從而也可滿足式(6)中的判斷依據,因此,該算法還需進行二次判別來提高篩選的準確性。當檢測到輻散中心點處的等深圖形滿足一次判別條件后,繼續采用漫水填充算法重新將起始點附近灰度相同以及比起始點灰度大1的像素點進行填充標記,并做出最小外接矩形根據式(6)進行判別,若二次判別該輻散中心點處的等深圖形也滿足判別條件,則將該輻散中心點標記為果實中心點。

圖5 果實中心點判別示意圖Fig.5 Diagrams of fruit center point discrimination
由于深度圖像無法像彩色圖像一樣有明顯的邊界信息,可以得出完整的連通域圖像,因此本文算法采用先定位后分割的方法。通過前文的方法已經從深度圖像中得到了果實中心點的位置,下一步則是對果實邊界進行搜索完成果實圖像的分割。雖然在深度圖像中很難得到物體完整的輪廓信息,但可以利用三維物體的邊界特征搜索出三維物體的邊界點,從而實現三維物體圖像的分割。
通過觀察果實的等深圖和梯度向量圖可以發現,越靠近果實邊界位置的像素灰度越大,梯度也越大,且果實圖像部分各處的梯度向量方向均為由果實中心指向果實邊界。因此,根據此特征,本文采用了八方向搜索方法以灰度、梯度和梯度方向三者作為判別依據來搜索果實的邊界點。具體操作為:從果實中心點出發,沿八方向按指定步長根據判別函數關系式搜索果實邊界點,判別函數關系式為
(7)
式中Dn、Dn+1——沿搜索方向第n、n+1步像素的灰度
Vn、Vn+1——沿搜索方向第n、n+1步像素的梯度向量
δG——梯度向量模的大小閾值
δθ——梯度向量角度偏差閾值
搜索出果實圖像邊界點后將8個邊界點依次連接形成一個閉合的區域,區域內的圖像便是分割出的果實圖像,分割結果如圖6所示。雖然該分割算法并沒有得到完整的果實圖像,但從三維的角度來看,分割出的果實部分圖像已經足以表達出果實外表面的曲面信息,可以為后續的算法提供足夠的樣本數據,且該算法步驟簡單,能夠減少大量的計算時間。

圖6 果實部分圖像分割示意圖Fig.6 Image segmentation diagrams of fruit parts
深度圖像在處理三維問題上一直存在著天然的優勢,因此它非常適合用來進行果實的空間定位以及處理果實重疊和遮擋問題。前文介紹的所有算法實際上都是基于二維圖像的處理算法,由于果實識別定位算法的最終目的是要獲取果實的空間坐標以及半徑信息以便于進行后續采摘任務,因此還需要將深度圖像轉換為三維點云,從三維空間領域來對果實進行識別定位。
RANSAC是一種隨機參數估計算法,可以從樣本中隨機抽出一個樣本子集,使用最小方差算法估計這個子集的模型參數,然后計算所有樣本與該模型的偏差,并經過反復迭代最終得出樣本的最佳模型參數,該算法常用于特征匹配、點云分割和三維模型處理領域。本文將其用于果實部分點云的三維形狀擬合,獲取果實的擬合球形參數。
具體步驟為:首先將分割出的果實部分圖像轉換為三維點云數據,轉換后的每個點云都相當于三維空間中的1個點。然后從點云中隨機抽取出1個子集并估計出球面模型,待估計的球面數學模型為
(x-x0)2+(y-y0)2+(z-z0)2=r2
(8)
式中 (x,y,z)——樣本點云空間坐標
(x0,y0,z0)——擬合球面模型球心空間坐標
r——球面模型半徑
估計出球面模型后計算所有點云到這個模型的距離,剔除掉距離過大的點并將處于距離閾值范圍內的點定義為局內點。重復以上步驟,經過多次迭代,選取包含局內點最多的球面模型進行輸出,擬合結果如圖7所示。

圖7 RANSAC擬合球形可視化圖像Fig.7 Visualizations of RANSAC fitted spherical images
RANSAC擬合算法可以利用物體的部分點云通過其幾何特征去估算物體的整體結構。這意味著對于重疊和被遮擋的果實,即使只能夠獲取到殘缺的部分果實圖像,但利用RANSAC算法也可以對其進行擬合補全,得到完整的果實擬合球形。擬合出的球形球心坐標可近似認作果實的實際空間坐標,擬合球形的半徑也可認作是果實的實際半徑。
RANSAC算法還可以作為誤判檢驗的最后一層保障,由于葉片表面的曲率相較于果實表面曲率要小很多,當葉片圖像被誤判為果實圖像并且當作輸入樣本進行RANSAC算法擬合時,擬合出的球面模型半徑會遠大于實際的果實半徑,因此,可以通過設置擬合球形半徑閾值,進一步剔除誤分割的背景圖像,增加算法的準確性。本文所有算法的最終實驗結果如圖8所示。

圖8 果實識別定位結果可視化圖像Fig.8 Visual images of fruit identification and location
為檢測本算法中果實識別定位的準確性和魯棒性,對果樹模型進行多角度拍攝以及果實模型隨機擺放,包含獨立果實、重疊果實、遮擋果實等情況果樹圖像共計50幅,每幅圖像中果實數量為5~12顆,識別結果如表1所示。其中,果實模型實際半徑均約為5 cm,采用卡尺進行果實實際距離檢測,以果實中心到攝像頭拍攝平面距離作為實際深度距離,以果實中心到地面的高度與攝像頭中心到地面高度的差值作為實際垂直距離,正確識別率為樣本圖像通過算法擬合出的球形數量與人工識別的果實數量比值的均值。

表1 不同遮擋情況下果實識別定位效果Tab.1 Fruit recognition and positioning results under different shading conditions
由表1可以看出,在果實被遮擋面積小于50%的情況下基本都能被正確地識別定位出準確位置和實際尺寸,且誤差都能控制在1 cm范圍內。但對于被遮擋面積超過50%的果實則識別率較差,且識別出的果實半徑偏差較大。
對被遮擋面積大于50%的果實識別率較差的問題進行分析,分析結果如圖9所示。由于本文算法采用的是先定位后識別的方法,因此對于果實的識別定位依賴于對果實中心點的搜索,而在實際情況中,果實由于存在被遮擋的情況,果實中心位置可能會被枝葉和果實遮擋,從而在梯度向量圖中果實部分的梯度向量無法顯示出輻散的特性,而是表現為梯度向量朝一個方向變化,即片體的特性,因此會被誤判為背景圖像從而無法被正確識別。

圖9 被遮擋果實漏判原因分析圖Fig.9 Analysis maps of leakage reasons for obscured fruits
而被遮擋面積大于50%的果實識別半徑偏差較大的原因在于,果實被遮擋面積過大,導致最終獲取的果實部分點云較少,從而使得果實表面的曲率信息表示不完整,因此擬合出的球形半徑與實際果實半徑偏差較大。
由此可見,本文算法雖然從果實形態角度進行識別定位,可以忽視光照以及果實顏色對識別過程造成的影響,但其缺點在于其識別的準確率受遮擋面積的影響較大,且還會受到拍攝角度的影響,果實能否被正確識別取決于果實表面的凸曲面是否被完整拍攝,曲面中心位置是否能被有效識別。
果實識別定位算法最終是服務于水果采摘機器人的研究應用,因此,其對算法的實時性也有一定的要求。表2為從果樹深度采集圖像中提取10幅圖像其算法計算時間統計結果。由表2可以看出,平均每幅圖像的處理時間約為12 s,其計算速度與圖像中的果實數量成正比,原因在于,算法中果實圖像分割部分的處理時間實際僅為0.5 s左右,但最后的RANSAC算法由于需要進行復雜的擬合迭代步驟,因此處理時間較長,計算速度約為每顆果實0.8 s。但在實際的果實采摘過程中,果實是逐一進行摘取的,而本文算法中每顆果實的平均識別時間僅約為1.3 s,因此可以滿足水果采摘機器人的實時性要求。

表2 算法計算時間統計結果Tab.2 Algorithm calculation time statistics
由于本文算法研究設計過程中的實驗對象為實驗室內的果樹模型,因此為了驗證本文算法的真實有效性和實用性,進行了實地果樹的拍攝驗證實驗。
實驗地點位于廣東省惠州市惠東縣中塘聚豐園水果種植基地,分別對黃檸檬(半徑約2.7 cm)、青檸檬(半徑約2.7 cm)、沃柑(半徑約3.8 cm)3種水果進行拍攝實驗,每種水果各獲得40幅深度圖像及其對應的彩色圖像,實驗結果如圖10和表3所示。

圖10 3種果實識別定位結果示意圖Fig.10 Images of three fruits identification and location
由表3可以看出,在無遮擋的情況下本文算法對于3種顏色的果實都能有效地識別出其位置和半徑,且識別率都較為接近。黃檸檬、青檸檬和沃柑的平均識別率分別為75.7%、74.8%、82.3%,黃檸檬和青檸檬識別率明顯低于沃柑識別率,原因在于黃檸檬和青檸檬的果實半徑較小且果實形狀為橢圓形,使其更易受到果實重疊和枝葉遮擋的影響,同時受到深度攝像頭本身精度的限制,越小的果實可獲取的果實部分點云數量就越少,即可用于果實三維形狀擬合的樣本點云數量就越少,從而擬合出的果實表面曲率誤差就越大,使得識別率下降。因此在目前使用設備的制約下,本文算法更適用于半徑為3.3 cm以上的果實,對于半徑為3.3 cm以下的果實,其識別率則會隨著半徑的減小而降低。

表3 3種水果識別定位效果統計結果Tab.3 Statistical results of identifying and locating effects of three fruits
由此可見本文果實識別定位算法可以不受果實顏色以及光照環境的影響,果實識別率僅與果實的尺寸和形狀有關,能夠輕松應對近色背景果實識別、陰暗環境果實識別、強曝光環境果實識別(圖11)等彩色圖像難以解決的果實識別問題,但該算法受果實和枝葉遮擋的影響較大,當果實被遮擋的面積過大則會大幅降低果實的正確識別率。

圖11 強曝光環境果實識別定位示意圖Fig.11 Images of fruit identification and location in intense light environment
(1)基于深度圖像的球形果實識別定位算法能夠從深度圖中實現果實的識別定位。算法從果實三維形態的角度完成果實的識別定位任務,能夠有效解決傳統算法中易受光照的影響及無法解決近色背景果實識別困難的問題。
(2)基于深度圖像的球形果實識別定位算法是一種先定位后識別的由粗及精的定位方法。通過計算深度圖像的梯度向量,利用果實接近球形的特征,實現對果實中心點的定位,并在后續算法中設置了果實中心點的檢驗以及果實圖像的分割步驟,最后利用三維球形擬合算法對果實部分圖像進行擬合補全,計算出果實的真實尺寸以及空間位置。算法適用于所有近球形果實的識別定位,可直接獲取果實三維空間坐標,有利于采摘機器人高效地完成采摘任務。
(3)基于深度圖像的球形果實識別定位算法僅利用單一的深度圖像信息進行果實的識別定位,能夠不受顏色信息對識別定位的影響,且該算法采用三維角度的識別定位方法,能夠有效處理果實重疊和遮擋問題。但其缺點是算法依賴于對果實中心點的提取,對于果實中心位置被遮擋果實則無法進行識別定位。
(4)通過實地實驗,得到黃檸檬、青檸檬、沃柑3種果實的平均識別率分別為75.7%、74.8%、82.3%,每顆果實的識別時間約為1.30 s。結果表明,該算法具有較高的抗擾性、準確性和實時性,且無需分類器、機器學習等復雜結構,能夠直接應用于采摘機器人對果實的識別定位操作。