洪梓嘉 李彥明 林洪振,2 貢 亮 劉成良,2
(1.上海交通大學(xué)機械與動力工程學(xué)院, 上海 200240; 2.機械系統(tǒng)與振動國家重點實驗室, 上海 200240)
無人駕駛及自主作業(yè)是目前農(nóng)機智能化發(fā)展趨勢及研究熱點,全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)的定位精度已小于2.5 cm,在農(nóng)機導(dǎo)航與自動駕駛中已得到廣泛應(yīng)用[1],但基于GNSS的農(nóng)機自動駕駛及無人作業(yè)目前尚存在一些局限。GNSS需要提前進行田地邊界人工打點標記,額外增加了工作量的同時,也可能對作物或田間土壤造成破壞;并且GNSS對于不規(guī)則形狀地塊的標定較為繁瑣;另外,對于位置偏僻或信號不佳的農(nóng)田,農(nóng)機也難以完全基于衛(wèi)星導(dǎo)航進行作業(yè)。而車載傳感器可以實時獲取農(nóng)機周圍豐富的環(huán)境信息,進而根據(jù)不同的環(huán)境情況,靈活機動地控制農(nóng)機作業(yè),這恰好彌補了GNSS的不足。因此,基于車載傳感器的農(nóng)田邊界距離實時感知對于農(nóng)機無人作業(yè)有著重要價值。
農(nóng)機自動駕駛與無人作業(yè)的田間障礙物距離檢測傳感器包括視覺傳感器、激光雷達、毫米波雷達和超聲波等[2],由于農(nóng)田作業(yè)邊界低矮,雷達和超聲波等無法對其實現(xiàn)距離檢測。與其他傳感器相比,視覺傳感器能夠獲得農(nóng)田環(huán)境的二維圖像甚至三維點云,信息豐富且成本較低,與雷達相比雖然檢測距離較短,但目前已經(jīng)能達到20 m,能夠滿足農(nóng)機作業(yè)速度下障礙及邊界距離檢測要求,因此基于視覺傳感器的研究成為了智能農(nóng)機環(huán)境感知的熱點[3]。
目前視覺傳感器在農(nóng)機導(dǎo)航中得到了廣泛應(yīng)用,主要包括作物行線檢測[4-6]及農(nóng)田邊界線檢測[7-10]。其中作物行線檢測算法的研究開展較早,技術(shù)已較為成熟,其算法大多是基于顏色和紋理的傳統(tǒng)圖像處理方法[4-7]。而農(nóng)田邊界線檢測算法的研究相對較少,算法核心大多數(shù)為機器學(xué)習(xí)方法[8-10]。其中文獻[10]采用超像素分割算法,解決了機器學(xué)習(xí)農(nóng)田訓(xùn)練樣本缺乏的問題。此類算法可以滿足實時要求,但對于與機器學(xué)習(xí)訓(xùn)練樣本差異較大的農(nóng)田,算法魯棒性有待于進一步提高。
上述算法均使用單目相機作為傳感器,雖然實現(xiàn)了農(nóng)田作物行線與邊界線的檢測,但無法獲得邊界距離信息。與單目相機相比,雙目相機在獲得二維圖像信息的基礎(chǔ)上,還可獲得三維空間信息。近年來,隨著雙目立體匹配算法在時間和精度上的突破[11],基于雙目視覺的距離檢測算法在室內(nèi)及工業(yè)化環(huán)境條件下表現(xiàn)良好[12],國內(nèi)外學(xué)者提出了將雙目視覺應(yīng)用于農(nóng)田中,進行作物行線檢測和田間作業(yè)機械、人和建筑物等具有一定高度體積的障礙物識別測距[13-16]。但對于農(nóng)田邊界而言,部分田埂與地塊特征差異不大,高度低、目標小,與農(nóng)機、人等障礙物的檢測有明顯不同特點,需要更加精準且高效的立體匹配方法和結(jié)合實際場景的測距策略,但目前基于雙目視覺的農(nóng)田邊界距離檢測研究較少,尤其耕整與播種作業(yè)環(huán)節(jié),農(nóng)田邊界與土壤顏色接近,邊界識別與距離檢測難度更大。
本文基于雙目視覺對農(nóng)機自動駕駛及無人作業(yè)的農(nóng)田邊界距離自主檢測方法進行研究。為保證農(nóng)田圖像的立體匹配精度和匹配速度,運用多特征融合及分割樹算法分別進行代價計算和代價聚合,進一步利用多尺度代價聚合框架,建立不同尺度下匹配代價的聯(lián)系,增強弱紋理區(qū)域的可靠性;然后針對農(nóng)田實際情況,設(shè)計田埂的點云提取方法,識別出較為準確的田埂邊界線;最終進行田埂測距實驗,對雙目視覺在農(nóng)田邊界距離檢測中的可行性、適用條件及檢測精度進行驗證。
農(nóng)業(yè)生產(chǎn)的耕、種、管、收等不同環(huán)節(jié)的農(nóng)田邊界呈現(xiàn)不同特點,可以按照其與作物的高度分為種植前期(作物高度較明顯小于田埂高度)和種植后期(作物高度等于或高于田埂高度),不同農(nóng)田中田埂的情況不同,本文田埂檢測算法針對種植前期的農(nóng)田環(huán)境提出,如耕整、播種、田埂高于作物時的施肥噴藥等具體場景。
圖像的立體匹配是基于雙目視覺的農(nóng)田邊界檢測的核心,可歸納為代價計算、代價聚合、視差計算和視差優(yōu)化幾個步驟[17]。其中代價計算與代價聚合是決定立體匹配性能的關(guān)鍵。本文針對農(nóng)田非結(jié)構(gòu)環(huán)境的特點,采用基于多尺度代價合并的立體匹配方法。
農(nóng)田環(huán)境光照變化大,且田地部分易出現(xiàn)重復(fù)紋理,此時憑借單一特征對圖像描述進行匹配難以保證準確性。為保證算法的魯棒性,選擇了Census變換[18]與截斷閾值梯度的多特征融合代價計算方法。Census立體匹配方法依賴于局部強度的相對有序,而不是強度本身,因此對整體的明暗變化并不敏感,且可以容忍大量的異常值,對光照變化和圖像噪聲魯棒。而梯度信息可以加強對圖像紋理信息的獲取,從而改善深度不連續(xù)區(qū)域的匹配效果。
當視差為d時,計算左圖像素點(u,v)和右圖待匹配像素點(u+d,v)的漢明距離即為Census變換的匹配代價
Ccen(u,v,d)=
Hamming(Cenl(u,v),Cenr(u+d,v))
(1)
其中,Cenl(u,v)為左圖像素點(u,v)經(jīng)Census變換后得到的比特串;Cenr(u+d,v)為左圖像素點(u+d,v)經(jīng)Census變換后得到的比特串。
同時,引入梯度信息來計算匹配代價,梯度匹配代價定義為
(2)
τg——梯度代價截斷系數(shù),可有效限制異常點的影響
Il、Ir——雙目相機采集的左、右圖像
參照文獻[19],將Census匹配代價和截斷梯度匹配代價進行歸一化結(jié)合,最終的匹配代價公式為
C(u,v,d)=2-exp(-Ccen(u,v,d)/λc)-
exp(-Cg(u,v,d)/λg)
(3)
式中λc——Census匹配代價控制參數(shù)
λg——截斷梯度匹配代價控制參數(shù)
為了保證算法在農(nóng)田環(huán)境中的匹配準確性和算法的實時性,采用基于多尺度代價聚合框架,通過構(gòu)建分割樹[20-21](Segment-Tree, ST)的方法進行代價聚合。
分割樹利用最小生成樹的思想,每個像素在計算代價時均會得到來自圖像中所有其他像素的貢獻。且在構(gòu)建樹的過程中,深化對細節(jié)的處理,從而使算法具有全局算法的優(yōu)秀匹配效果,還對于邊緣紋理區(qū)域的處理更加精細。同時,為提高運算實時性,利用雙向遍歷樹結(jié)構(gòu)的計算方法,分割樹構(gòu)建的時間幾乎與圖像像素的數(shù)量呈線性關(guān)系,極大減小了計算復(fù)雜度。
分割樹代價聚合算法的具體步驟為:
(1)用無向圖G=(V,E)表示圖像I,初始化最小生成樹的集合T。圖像I中的每一個像素均為V中的一個頂點,I中每對符合四聯(lián)通規(guī)則的相鄰像素均為E中的一條邊,灰度差即邊的權(quán)重we。初始時刻每個頂點都是一個最小生成樹。
(2)通過最小生成樹原理來構(gòu)造子樹T。將E中的邊根據(jù)權(quán)重由小到大進行遍歷,被邊連接的2個子樹根據(jù)判別公式判斷是否合并為一個最小生成樹,判別公式為
(4)
式中 Int(Tp)、Int(Tq)——Tp、Tq中最大的邊權(quán)重
|Tp|、|Tq|——分割子樹p、q中頂點個數(shù)
k——常數(shù),取1 000
(3)合并最小生成樹直至全圖成為一棵樹T0。將每個子樹與另一個子樹連接的邊根據(jù)權(quán)重由小到大進行遍歷,若此邊來自2個不同的子樹,則將這2個子樹合并為1個,直至全圖被合并為1個最小生成樹則停止。
(5)
已知坐標的像素q在視差d的匹配代價由式(3)獲得,現(xiàn)簡記為Cd(q);σ為距離調(diào)整參數(shù),在具體工程應(yīng)用中被指定,本文取σ=0.1。
采用以上描述的分割樹方法在所有尺度的圖像上進行代價聚合后,各尺度的聚合代價是相互獨立的,根據(jù)文獻[22]中的多尺度代價合并框架建立它們之間的關(guān)系,合并多尺度的聚合代價至原圖尺度。
(6)
采用WTA (Winner take all)策略計算視差,即選取匹配代價圖中最小匹配代價對應(yīng)的視差作為該點的視差。另外,選擇中值濾波方法進行視差優(yōu)化。
基于雙目視覺的農(nóng)田邊界識別與距離檢測,其本質(zhì)是根據(jù)三維點云信息中農(nóng)田作業(yè)區(qū)域與田埂間的高度差進行田埂區(qū)域的提取和測距。本文首先利用成像原理構(gòu)建圖像的三維點云獲取像素點的位置信息,再利用像素點高度坐標對邊界點云進行粗識別,并進行實際農(nóng)田環(huán)境中的干擾消除。
深度圖是指將從相機到場景中各點的距離(深度)作為像素值的圖像,根據(jù)三角形相似性質(zhì),容易進行視差圖到深度圖的轉(zhuǎn)換,公式為
(7)
式中ddepth——所求該像素點在實際空間中距離相機的深度,mm
b——相機基線距離,本文相機為120 mm
fx——相機歸一化焦距,通過張正友標定法[23]獲得
根據(jù)經(jīng)典的針孔模型結(jié)構(gòu)原理計算三維點云[24],公式為
(8)
其中,cx、cy、fx、fy均為標定獲得,cx=971.496 9像素、cy=558.542 9像素、fx=1 068.622 7像素、fy=1 069.420 2像素。坐標系方向如圖1所示,z即像素至相機的深度距離。
圖1 相機坐標系示意圖Fig.1 Camera coordinate system diagram
圖2 邊界提取處理Fig.2 Boundary extraction processing
在耕整、播種及作物生長早期,根據(jù)土地耕整情況和作物生長情況等,在不同的田地,相機距離地面或作物的高度特性不同。針對此特點,設(shè)計了自適應(yīng)點云農(nóng)田邊界提取方法。
相機平行于地面安裝在農(nóng)機正前方,假定農(nóng)機初始作業(yè)時農(nóng)機前方近處沒有田埂,作業(yè)過程中農(nóng)機在田間朝著田埂方向行駛,圖像中間底部的區(qū)域幾乎可以確定為田地。農(nóng)田地面距離相機的垂直高度Y(即相機坐標系下三維點云的y值的集合)符合N(μ,σ2)的高斯分布,均值即為相機距離地面或作物的高度,在均值左右2個標準差(2σ)范圍內(nèi)的點被認為是地面或作物,并將這些點在視差圖(圖2b)中置為黑色,實現(xiàn)濾除。另本文認為田埂高度不大于800 mm,將高度超過800 mm的無關(guān)區(qū)域一同濾除,即
(9)
最終點云提取效果如圖2c所示。
在理想的農(nóng)田環(huán)境中,地面或作物的高度較為一致,田埂明顯高于地塊,且小范圍內(nèi)的形狀為連續(xù)的直線。但對于實際農(nóng)田,地面會存在小范圍凸起或凹陷,作物生長可能參差不齊,這會對提取的邊界點云產(chǎn)生干擾,因此,設(shè)計了基于點云連續(xù)性的干擾消除方法。
為達到理想的邊界提取效果,對點云過濾后的視差圖依序進行了幾種形態(tài)學(xué)處理,每個步驟的圖像處理過程如圖2所示:首先為了平滑田埂附近的邊界線并去除較小的殘留地面區(qū)域,采用中值濾波對圖像進行處理,以減小誤差,效果見圖2d。后進行了Otsu二值化處理,此時田埂和部分孤立殘留地面為白色,其余濾除區(qū)域為黑色,效果見圖2e??梢钥闯?,若地面過于不平坦,或作物雜草過于參差不齊,中值濾波后仍可能會有孤立的地面區(qū)域,故根據(jù)干擾區(qū)域的不連續(xù)性,進行小連通域去除操作。對白色小連通域進行去除,同時再對誤濾除的高度較低的田埂區(qū)域(此區(qū)域表現(xiàn)為白色區(qū)域中的黑色小連通域)進行填充,效果見圖2f。最后,用Sobel邊緣提取方法進行田埂的邊界提取,效果見圖2g。
本文設(shè)定2個田埂邊界的距離指標:中心邊界距離和平均邊界距離,示意圖如圖3所示。其中,中心邊界距離為圖像中線與田埂邊界交點處的z坐標值,即圖中黃色標記點處的深度;平均邊界距離為農(nóng)機寬度正對的一段田埂邊界的z坐標均值,即圖中紅色標記曲線處的深度均值。本文設(shè)定農(nóng)機寬度為2.5 m,并對x坐標在[-1.5,1.5] m范圍內(nèi)的邊界點取深度均值。
圖3 距離測量位置示意圖Fig.3 Diagram of distance measurement location
田埂與相機視角的示意圖如圖4所示,針對種植作物的田地,自適應(yīng)點云提取將作物高度面(圖4中橫線)視為地面,會過濾掉高度小于作物高度的部分田埂,此時測量的距離z是田埂中部到相機的距離,因此測量存在誤差。進一步討論在原圖中人為判斷的邊界線,實際上由于相機視角問題(圖4中斜線),一部分田埂會被作物遮擋,同樣無法獲得田地的真實邊界以進行距離補償。最終,設(shè)計基于田埂斜度和作物高度的邊界位置校正方法,校正后的距離計算公式為
(10)
式中H——相機安裝高度
α——田埂斜度
圖4 田埂位置校正示意圖Fig.4 Ridge position correction schematic
為保證邊界檢測算法的普遍性,在上海市松江區(qū)和崇明區(qū)的田地中進行了多次實驗,實驗平臺及環(huán)境如圖5所示。
圖5 實驗平臺與環(huán)境Fig.5 Test platform and environment
實驗采用ZED 2相機作為圖像采集傳感器,圖像分辨率為3 840像素×1 080像素時,每秒可輸出30幀,測距范圍為0.5~20 m。采用NVIDIA公司的車載Jetson TX2產(chǎn)品作為算法處理器,Jetson TX2配備8 GB運行內(nèi)存和32 GB存儲空間,CPU的主頻可以達到2 GHz。通過USB連接相機與處理器進行圖像的傳輸。基于Ubuntu 18.04操作系統(tǒng),采用C++語言對算法進行編程實現(xiàn)并在CMake環(huán)境下編譯。使用了ZED 2相機軟件開發(fā)工具包用于圖像采集,還使用了計算機視覺開源庫OpenCV中的部分函數(shù)進行圖像處理。
農(nóng)機在播種與噴藥作業(yè)時行駛速度為0.8~1.5 m/s,轉(zhuǎn)彎半徑為2.5~3 m??紤]到機器的控制時間和傳感器的分辨率,期望在最遠處(10 m)開始能夠識別田埂邊界進行提示;在較遠處(8 m)能夠識別田埂邊界并嘗試測距,測距允許誤差0.40 m;在近處(5 m)時能夠精確識別田埂邊界輔助轉(zhuǎn)彎控制,測距允許誤差0.10 m。
實驗中,農(nóng)機以速度0.8 m/s行駛,ZED 2相機實時采集農(nóng)田圖像并由NVIDIA Jetson TX2進行處理,裁剪后的感興趣區(qū)域圖像并排分辨率為1 200像素×300像素,平均0.8 s可以對圖像完成一次田埂邊界檢測。崇明區(qū)農(nóng)田種植了作物,處于施肥作業(yè)期,顏色區(qū)分明顯,田埂高度為40~60 cm,不同光照條件下的田埂識別效果如圖6所示。松江區(qū)農(nóng)田處于中作物播種前的耕整期,田埂與田地顏色相近,田埂高度為20~40 cm,對于留有麥茬待耕整的地塊和已經(jīng)耕整過待播種的地塊的田埂識別效果如圖7所示。測距效果如表1所示。
圖6 崇明區(qū)田地田埂識別結(jié)果Fig.6 Field ridge detection results in Chongming District
圖7 松江區(qū)田地田埂識別結(jié)果Fig.7 Field ridge detection results in Songjiang District
從表1可以看出,對田埂采用平均邊界距離這一指標效果更佳。利用在崇明區(qū)和松江區(qū)所采集的進行過距離標定(邊界距離在5~10 m)的100對(分別采集50對)田埂圖像樣本進行算法評價,將田埂識別率和5 m時的距離誤差均值(平均邊界距離計算得出)作為評價指標,結(jié)果如表2所示。針對崇明區(qū)較高且較平整的田埂,此算法成功識別出所有田埂,測量距離較為準確;針對松江區(qū)的田埂,由于其部分田埂較低,且周圍有麥茬或雜草的干擾,有一對圖像的田埂未被成功提取,測量結(jié)果誤差也相對更大。總體上,此算法對于距離為5~10 m的田埂識別率為99%,對距離為5 m時的田埂測距誤差均值約為0.075 m,驗證了算法的有效性。
表1 典型田埂的距離檢測結(jié)果Tab.1 Field ridge distance detection results m
表2 算法結(jié)果統(tǒng)計Tab.2 Algorithm result statistics
在松江區(qū)還進行了對于縱向田埂的識別實驗,縱向田埂和相交田埂的識別結(jié)果分別如圖8、9所示。對于顏色紋理特征差異較不明顯、田埂低矮的農(nóng)田圖像,此算法同樣成功提取出了田埂邊界。因此,此算法對于作物收獲時等情況下的航線檢測也有較大應(yīng)用價值。
圖9 松江區(qū)田地相交田埂識別結(jié)果Fig.9 Intersecting field ridge detection results in Songjiang District
(1)雙目立體匹配過程中,兼顧算法的準確性和實時性,代價計算采用了Census和截斷梯度融合的方法、代價聚合采用了多尺度融合的分割樹算法,對于弱紋理和重復(fù)相近紋理區(qū)域都得到了理想的視差圖,實驗驗證了此立體匹配算法可以應(yīng)用于非結(jié)構(gòu)農(nóng)田環(huán)境中。
(2)提出了一種基于立體匹配的農(nóng)田田埂識別測距算法,利用田埂與地塊之間的高度差進行點云提取,對不同農(nóng)田場景下的100對圖像的田埂識別率達到99%。此算法可以實現(xiàn)對各種不同顏色紋理特征的農(nóng)田圖像的田埂識別,解決了單目相機基于特征的算法對不同特征的農(nóng)田場景魯棒性差、基于機器學(xué)習(xí)算法則需要大量圖像樣本的問題。
(3)農(nóng)田邊界的雙目距離檢測的精度與檢測距離和圖像分辨率有關(guān)。實驗證明,本算法的測距精度隨著檢測距離的減小而提高,在田埂距離為8 m時,距離檢測精度為0.4 m,田埂距離為5 m時,距離檢測誤差均值約為0.075 m,對于行駛速度小于1.5 m/s的農(nóng)機可以滿足自主作業(yè)時的邊界距離檢測要求。
(4) 本算法針對種植前期的農(nóng)田環(huán)境提出并進行了實驗,對于種植中后期,部分農(nóng)田的作物高度超過田埂的情況,此算法必然需要進行對應(yīng)的修改,具體可行性尚有待驗證。