徐勝勇 盧 昆 潘禮禮 劉泰格 周雨欣 汪 波
(1.華中農(nóng)業(yè)大學(xué)工學(xué)院, 武漢 430070; 2.農(nóng)業(yè)部長江中下游農(nóng)業(yè)裝備重點實驗室, 武漢 430070;3.華中農(nóng)業(yè)大學(xué)植物科學(xué)技術(shù)學(xué)院, 武漢 430070)
角果對油菜產(chǎn)量起重要決定作用,它不僅是油菜吸收和積累光合產(chǎn)物的庫器官,而且還是為種子發(fā)育提供營養(yǎng)的源器官。在油菜高產(chǎn)育種中,單位面積角果數(shù)是大面積生產(chǎn)中調(diào)節(jié)潛力最大的產(chǎn)量因素,對油菜產(chǎn)量具有特殊的意義。對油菜來講,決定其產(chǎn)量形成的關(guān)鍵因子主要有單株角果數(shù)、每角粒數(shù)和千粒質(zhì)量[1]。三維重建技術(shù)通過在計算機中對作物植株進行數(shù)字化建模,將植株外形和器官的三維信息存儲在計算機中,使得對作物生長規(guī)律的定量化研究成為可能[2]。成熟期油菜分枝三維空間模型的建立,將為計算機考察角果提供重要的基礎(chǔ)數(shù)據(jù)。
圖1 使用Kinect傳感器采集的油菜分枝圖像Fig.1 Images of rape branch collected using Kinect sensor
快速、低成本、精確的三維掃描技術(shù)一直是計算機視覺領(lǐng)域研究的熱點[3]。目前,應(yīng)用于農(nóng)業(yè)三維重建的設(shè)備和技術(shù)主要包括激光掃描儀、立體視覺、運動恢復(fù)結(jié)構(gòu)和RGB-D相機等[4-14]。Kinect傳感器是一種經(jīng)典的RGB-D相機,能夠同時獲取目標(biāo)的彩色、紅外和深度信息,具有成本低廉、體積小巧的特性和優(yōu)勢,使得該傳感器在現(xiàn)代農(nóng)業(yè)信息領(lǐng)域獲得了推廣和應(yīng)用[15]。3D點云配準(zhǔn)是使用Kinect傳感器進行三維建模的關(guān)鍵技術(shù)環(huán)節(jié)之一,可以將多個視角下的點云融合為單個參考點云[16]。眾多學(xué)者對此進行了研究[17-18]。
人工方式測量成熟期油菜植株表型參數(shù)存在效率較低、主觀因素強、可重復(fù)性差、損害植株、某些參數(shù)無法測量等缺點。YANG等[19]提出一種基于法向矢量的三維點云分割方法,使用3D掃描儀來獲得角果期油菜植株的3D點云數(shù)據(jù),為后續(xù)表型參數(shù)無損測量奠定了基礎(chǔ)。該方法使用了價格昂貴的激光掃描儀,且后續(xù)的數(shù)據(jù)處理較為復(fù)雜,也無法將角果點云從植株點云中有效分割出來以進行后續(xù)處理。本文提出一種低成本、高精度的成熟期油菜分枝三維數(shù)字化解決方案。以一定角度(約90°)間隔旋轉(zhuǎn)油菜分枝,使用Kinect傳感器獲取4個視角下的彩色圖像和深度圖像,進行圖像預(yù)處理獲取分枝的表面點云,并進行初始和精確兩次配準(zhǔn),得到完整的分枝點云。然后對基于該三維重建方法得到的分枝點云進行聚類分割,得到單個角果并統(tǒng)計角果數(shù)量。
2018年5月于華中農(nóng)業(yè)大學(xué)實驗田采集成熟期油菜植株,品種為中雙6號和大地55,人工將分枝剪下。在自然光照的室內(nèi)進行圖像采集,油菜分枝被固定在一個底座上,背后放置一塊黑色幕布。使用Kinect 2.0傳感器對油菜分枝進行拍攝,距離約60 cm,得到彩色圖像(1 920像素×1 080像素)和深度圖像(512像素×424像素)各10幅。每拍攝完一個角度,手動將放置角果的底座旋轉(zhuǎn)約90°,直到完成4個角度的圖像采集,圖像采集示意圖如圖1所示。利用微軟公司提供的軟件開發(fā)工具包Kinect for Windows SDK 以及應(yīng)用程序編程接口API,融合植株的彩色和深度圖像,獲得植株在相機空間坐標(biāo)系中具有顏色信息的三維坐標(biāo)數(shù)據(jù),待后續(xù)處理。本文算法開發(fā)和測試的平臺為通用計算機(酷睿6代i5 4200M主頻2.5 GHz處理器、8 GB DDR3內(nèi)存、250 GB三星固態(tài)硬盤、NVIDIA GeForce GT 755M 顯卡)、Windows 7專業(yè)版SP1和VS 2013+OpenCV 3.2+PCL 1.80,以及Matlab 2017b。
1.2.1彩色圖像預(yù)處理
本研究中,除了油菜分枝其他都是背景。因為油菜分枝整體呈現(xiàn)黃綠色,而背景幕布主色調(diào)是黑色,因此先對分枝的彩色圖像進行2G-R-B的閾值分割,從背景中初步分離出油菜分枝,得到分枝區(qū)域的掩模。使用該掩模與原彩色圖像相乘,再對乘積圖像的綠色通道進行Otsu閾值分割,最后得到準(zhǔn)確而完整的油菜植株彩色圖像。
1.2.2彩色圖像對齊到深度圖像
深度圖像中保存有物體距離相機的距離信息,同時也有平面位置信息,可以通過對深度圖像進行像素點操作來獲取點云。通過調(diào)用Kinect for Windows SDK中的映射函數(shù)實現(xiàn)彩色圖像和深度圖像的對齊,建立彩色圖像中的像素點與深度圖像中的像素點的索引關(guān)系。根據(jù)預(yù)處理后得到的油菜分枝彩色圖像,可以獲得植株區(qū)域?qū)?yīng)的深度圖像。
1.2.3深度圖像轉(zhuǎn)換為3D點云
圖像的度量單位是像素,而表型參數(shù)用物理尺寸單位(mm)度量。需要將深度圖像的像素轉(zhuǎn)換為三維空間坐標(biāo),即3D點云。依照Kinect成像原理,轉(zhuǎn)換公式為
(1)
式中 (Xd,Yd,Zd)——點(u′,v′)對應(yīng)的三維空間坐標(biāo)
(u′,v′)——深度圖像的任意一點像素坐標(biāo)
Dd(u′,v′)——點(u′,v′)對應(yīng)的深度
(fUIR,fVIR)——紅外相機的焦距,取值為(371.5 mm,371.5 mm)
(uOIR,vOIR)——紅外相機的光心坐標(biāo),取值為(256 mm,212 mm)
Kinect傳感器在工作時有系統(tǒng)噪聲和波動,導(dǎo)致每一幅深度圖像的數(shù)據(jù)都不一樣。連續(xù)靜止拍攝 10 幀深度圖像,疊加進行融合,可以有效消除波動和噪聲,還可以初步補全點云數(shù)據(jù)。本文每幀深度圖得到的植株點云大約有4 000個點,10幀融合后約40 000個點。
1.2.4點云濾波
多幀數(shù)據(jù)疊加的融合方法會在目標(biāo)物體邊緣產(chǎn)生部分離群點噪聲。此外,因光照影響導(dǎo)致紅外線不能正常反射到傳感器,點云會出現(xiàn)小區(qū)域噪點。本文采用統(tǒng)計濾波器對點云進行濾波。使用KD-tree搜索算法查找點Pi(xi,yi,zi)(i=1,2,…,n)的空間臨近點Pj(xj,yj,zj)(j=1,2,…,n),求解空間點Pi與其臨近點Pj的平均距離di、全局距離平均值μ和標(biāo)準(zhǔn)差σ,計算公式為
(2)
式中k——臨近點數(shù)
n——點云中點的數(shù)量
如果di在[μ-ασ,μ+ασ]范圍之外,則該臨近點被定義為離群噪聲點,將其從點云集中去除。參數(shù)α和臨近點數(shù)k取決于目標(biāo)點云的數(shù)量和密度,本文實驗測試發(fā)現(xiàn)k為50、α為1.0時濾波效果最好。
因角果和分枝之間的相互遮擋,單個視角下的點云不能完全呈現(xiàn)分枝的完整形態(tài)。同時,圖像預(yù)處理環(huán)節(jié)也會造成局部信息的丟失。所以需要將多個角度下的點云進行配準(zhǔn),融合為一個整體。對結(jié)構(gòu)復(fù)雜的分枝點云,直接采用經(jīng)典ICP算法[20]進行點云配準(zhǔn),計算量大、耗時長、錯誤匹配率高,還可能陷入局部最小值。本文提出基于經(jīng)典ICP算法的改進方法,總體和初、精配準(zhǔn)的算法流程如圖2所示。將第1個視角的點云命名為“角度1點云”,將相隔約90°的其他3個視角的點云依次命名為“角度2點云”、“角度3點云”、“角度4點云”。先將4個角度的點云依次兩兩進行初配準(zhǔn),再精配準(zhǔn)。精配準(zhǔn)得到的2個點云再次進行初、精配準(zhǔn),最后進行點云濾波,得到完整點云。
1.3.1點云初配準(zhǔn)
圖2 點云配準(zhǔn)流程圖Fig.2 Flow chart of point cloud registration
經(jīng)典的ICP算法中,假定點云P和X中各有NP和NX個點,ICP算法每次尋找兩個點集之間的最近點,要求其歐氏距離的平方和最小,從而計算出點云間的剛體變換。矢量q=[qRqT]表示剛體變換,其中,qR表示最優(yōu)旋轉(zhuǎn)變換的單位特征向量,qT表示剛體變換平移向量,將該剛體變換應(yīng)用到點云P。對應(yīng)點云P中的每一個點,在點云X中尋找其最近點形成點對,計算全部最近點對的歐氏距離平方和的平均值
(3)
式中Xi——點云P在X中的最近對應(yīng)點構(gòu)成的坐標(biāo)向量
Pi——點云P中的點構(gòu)成的坐標(biāo)向量
R(qR)——剛體變換的旋轉(zhuǎn)矩陣
為了最小化f(q),分別計算點云P和X的重心,并得到兩個點云的協(xié)方差矩陣ΣPX,計算公式為
(4)
(5)
式中 tr——矩陣的跡
I3——3階單位矩陣
用單位四元樹表示最優(yōu)旋轉(zhuǎn)矩陣qR=[q0q1q2q3],它與矩陣Q(ΣPX)的最大特征值對應(yīng),旋轉(zhuǎn)矩陣的計算公式為
(6)
經(jīng)過反復(fù)迭代,直至最近點對的歐氏距離平方和的平均值在給定閾值下收斂,完成配準(zhǔn)。
計算點云的曲面法矢量和曲率,搜索曲率相近的點構(gòu)成配對點對。在此基礎(chǔ)上采用KD-tree建立高維索引樹形數(shù)據(jù)結(jié)構(gòu),加速兩個點云的對應(yīng)點匹配進程,再采用ICP算法配準(zhǔn),這樣就避免了ICP算法陷入局部最優(yōu)解。若已知相鄰視角的點云旋轉(zhuǎn)角θ,可將某視角的點云P左乘以一個旋轉(zhuǎn)矩陣,使該角度的點云繞Y軸旋轉(zhuǎn)θ得到一個新點云PR,再進行配準(zhǔn)。
(7)
處理之后,相鄰兩個角度的點云在方位上相近,可以有效加快配準(zhǔn)的速度和成功率。本文中,在角度2配準(zhǔn)到角度1時,θ為90°;角度3配準(zhǔn)到角度4時,θ為-90°;角度3、4配準(zhǔn)到角度1、2時,θ為-90°。
1.3.2點云精配準(zhǔn)
ICP算法通過多次迭代的最近鄰搜索逐漸逼近最優(yōu)結(jié)果,非常耗時。此外, ICP算法還要求兩個點云的初始位置相差不能太大。因此,如何構(gòu)造參與ICP算法的有效初始點集是非常重要的。本研究中的初配準(zhǔn)完成后,兩個點云雖然沒有很好地融合,但相互之間的距離相對較小。將點云P初配準(zhǔn)到點云X中,初配準(zhǔn)后P的新位置構(gòu)成新的點云記為P′,同時得到2個點云之間的可匹配部分對應(yīng)點的關(guān)系。對P′中的每一個非平面點,在X中選取與其曲率相近的點,搜索范圍由對應(yīng)點距離閾值Dp確定,由曲率相近的點構(gòu)成配對點對。再使用KD-tree重組配對點對的數(shù)據(jù)結(jié)構(gòu),采用經(jīng)典ICP算法搜索配準(zhǔn)。在ICP算法中,對應(yīng)點距離閾值Dp作為初始參數(shù),其決定了配準(zhǔn)過程的搜索范圍。Dp設(shè)置較大,搜索不到配對點對導(dǎo)致無法進行初匹配;Dp設(shè)置過小,容易陷入局部最小值導(dǎo)致配準(zhǔn)效果很差。在初配準(zhǔn)中,兩個點云相互距離較大,Dp應(yīng)設(shè)置得較大,避免無法進行初匹配。在精配準(zhǔn)中,Dp應(yīng)依據(jù)初配準(zhǔn)得到的誤差測度f(q)進行設(shè)置,一般設(shè)置為初配準(zhǔn)的0.01~0.1倍。
對于一幅油菜分枝的彩色圖像,采用1.2節(jié)的圖像預(yù)處理方法,得到分枝的二值圖像。角果的果柄細長,其尺寸遠小于角果。因此,定義邊長為11的矩形結(jié)構(gòu)算子,對二值圖像進行形態(tài)學(xué)“開”運算,去掉角果的果柄,使得角果與主莖分離。在去除果柄的二值圖像中,主莖是最大的連通域。遍歷“開”運算結(jié)果中的連通域(8鄰域),去除面積最大的連通域,即可得到只包含角果的彩色圖像。將角果彩色圖像中非0像素點對齊到分枝深度圖像,得到只包含角果的深度圖像。處理流程和中間結(jié)果如圖3a所示。
使用本文的三維重建方法,將4個視角下的點云進行配準(zhǔn),得到分枝角果的融合點云。再使用歐氏聚類算法進行單個角果點云的分割,并以KD-tree的形式存儲,分割效果如圖3b所示。具體操作步驟為:
(1)輸入KD-tree形式存儲的角果融合點云,設(shè)置初始的聚類參數(shù),設(shè)置聚類需要的最少和最多點數(shù)量(Nmin,Nmax),本文為(200,5 000),Dp用于設(shè)置聚類搜索的直徑(本文為0.3 mm)。
(2)隨機選取點云中的某個點P1(屬于某個角果),搜索離該點最近的n個點,并計算這n個點到P1的距離,將距離小于閾值Dp的點歸為Q類。
(3)在Q中除P1外找到任意一點P2,重復(fù)步驟(2)。
(4)直到?jīng)]有新點加入,完成搜索。輸出歸類的點云,可得到單個角果點云。類的數(shù)量即為角果數(shù)量。
(5)測試最佳的聚類參數(shù)。
圖3 角果點云的獲取和聚類分割Fig.3 Acquisition of pod point cloud and segmentation with Euclidean distance clustering
圖4 去除主莖的油菜分枝點云配準(zhǔn)過程與結(jié)果Fig.4 Process and results of point cloud registration of rape branch without main stem
使用 Kinect 傳感器獲得油菜分枝的彩色圖像和深度圖像后,融合圖像中的 RGB信息和深度信息獲得目標(biāo)場景原始三維點云信息。圖4展示了4個視角濾波后的分枝點云的配準(zhǔn)全過程。從圖4可以看出,不同視角下的點云在空間位置上存在較大差異。以角度1和角度2為例,初配準(zhǔn)的融合點云(經(jīng)典ICP配準(zhǔn)結(jié)果)的對應(yīng)位置非??拷?,但整體上顯得較為雜亂,存在許多不切合的部位。經(jīng)過精配準(zhǔn)之后,整體上改進非常大,可以明顯地觀察到角果的原始形態(tài)。在角度1、2與角度3、4的精配準(zhǔn)點云的再配準(zhǔn)環(huán)節(jié),也存在類似的現(xiàn)象。兩個視角融合的點云經(jīng)過再次初配準(zhǔn)和精配準(zhǔn)之后,再次進行點云濾波,最終得到了完整、精確的角果點云。
為對點云配準(zhǔn)算法精確度進行定量分析,通過計算配準(zhǔn)過程中對應(yīng)點間平均歐氏距離,對2個點云配準(zhǔn)誤差進行評估。2個點云之間的對應(yīng)點距離越小,配準(zhǔn)誤差越小。本文對經(jīng)典ICP 算法和本文改進的ICP 算法進行了比較,結(jié)果如表1所示。從表 1可看出,本文改進的配準(zhǔn)方法相較KD-tree加速的 ICP 算法,配準(zhǔn)誤差從1.13 mm下降到0.42 mm,配準(zhǔn)精度提升了62.8%。在計算時間上,本文算法相對于ICP 算法時間優(yōu)化效果明顯,從223.6 s下降到124.2 s。經(jīng)過對2個品種油菜大量分枝的測試,配準(zhǔn)距離誤差均控制在0.48 mm以內(nèi),配準(zhǔn)時間均小于147 s,因此本文算法在快速性和穩(wěn)定性方面均得到了保證。由于ICP算法配準(zhǔn)精度較低,導(dǎo)致離群點較多,在點云濾波環(huán)節(jié)被剔除的點數(shù)量大,最終得到的點云數(shù)量比本文算法少。
表1 點云配準(zhǔn)算法性能測試結(jié)果Tab.1 Performance test results of two point cloud registration algorithms
為量化評估本文所提出角果識別和定位算法的準(zhǔn)確性和穩(wěn)定性,隨機選取2個品種的4個油菜植株共29個分枝進行識別,分析角果識別結(jié)果和識別正確率,識別結(jié)果如表2 所示。由表2可以看出,本文提出的方法能取得較好的處理效果,整體識別正確率不小于96.76%。本文方法識別的角果數(shù)比實際數(shù)量小,主要有2個原因:①在圖像預(yù)處理環(huán)節(jié),某些小角果被誤剔除。②在點云濾波環(huán)節(jié),某些角果斷裂成小塊,誤認為是離群噪聲而被剔除。一般而言,如果減小旋轉(zhuǎn)角度以更多的視角采集圖像,誤剔除的概率會減小,但計算時間會增加。
表2 角果識別與定位實驗結(jié)果Tab.2 Experiments results of pod identification and positioning
(1)提出了改進的ICP算法,通過對ICP算法過程中近鄰搜索參數(shù)的改進,對已知大概旋轉(zhuǎn)角度的兩個視角下的點云進行兩次匹配,并采用KD-tree加速,大幅度提高了配準(zhǔn)精度和速度。
(2)對于成熟期的油菜植株,本文提出的基于RGB-D 相機的油菜分枝三維重建方法具有較高的穩(wěn)定性、準(zhǔn)確性和實時性,結(jié)合彩色圖像分割和點云濾波處理,4個視角配準(zhǔn)的點云精度較高,平均距離誤差均小于0.48 mm,滿足油菜角果三維重建的精度要求,單個角果的原始形態(tài)清晰可見。
(3)提出的方法可以有效分離單個角果,角果總體識別正確率不小于 96.76%。實驗結(jié)果表明,該方法能夠快速構(gòu)建油菜分枝三維結(jié)構(gòu)并進行高精度和高效的角果識別和定位。