彭順正, 李景彬
(1.石河子大學信息科學與技術學院,新疆石河子 832000; 2.石河子大學機械電氣工程學院,新疆石河子 832000)
視覺導航路徑提取是果園間農(nóng)業(yè)機器人自主導航研究核心內(nèi)容。視覺導航系統(tǒng)主要由硬件控制機構和圖像分析處理軟件機構組成[1-4],邏輯層面上,圖像分析處理軟件結構主要是通過相關圖像算法提取視覺導航路徑的相關參數(shù),而后將相關參數(shù)通過軟件系統(tǒng)傳輸給硬件控制機構,硬件控制程序結構根據(jù)相關參數(shù)執(zhí)行相應命令,最終實現(xiàn)農(nóng)業(yè)機器人自主導航。
導航軟件結構返回參數(shù)的準確性和可靠性直接影響整個導航系統(tǒng)的性能,這主要取決于算法優(yōu)越性,然而路徑提取的分析軟件功能設計的合理性有助于獲取一套實用性較強的視覺導航路徑提取算法。路徑提取分析軟件的需求一般考慮目標區(qū)域分布規(guī)律、邊緣特征點提取、邊緣線擬合、基準線生成、基準線與人工擬合導航直線之間的偏差角、算法耗時等參數(shù)。
目前,國內(nèi)外針對田間、果園、林間的環(huán)境復雜性設計了相關視覺導航算法[5-10]。為開展基于視覺技術的智能裝備研發(fā)奠定基礎,研究人員針對棉田收獲時期的環(huán)境復雜性設計出一套采棉機視覺導航路徑檢測算法[11],根據(jù)溫室環(huán)境復雜性提出一種移動機器人視覺導航路徑提取算法[12],依據(jù)田間作物行特征設計了一種基于邊緣掃描濾波的農(nóng)機導航基準線提取算法[13],結合林間喬木環(huán)境特征設計了一套視覺導航路徑提取算法[14],根據(jù)喬化果園環(huán)境特點制定了一套果園移動機器人視覺導航路徑提取算法[15]。
以上研究方法均是根據(jù)特定環(huán)境特點定制出一套適應性強的路徑提取算法。近年來,為了提高果品質量、穩(wěn)產(chǎn)增產(chǎn),提高果品產(chǎn)業(yè)經(jīng)濟效益,國內(nèi)很多地方大力推廣果園矮化密植種植模式,其中植保、中耕、收獲環(huán)節(jié)都離不開機械化作業(yè),但是,果園環(huán)境比較惡劣,作業(yè)時間長,對果農(nóng)的身體健康不利,目前迫切需要實現(xiàn)機械裝備智能化,以代替果農(nóng)完成相應的機械化作業(yè)。然而針對矮化密植果園農(nóng)業(yè)機器人自主導航的研究相對較少,加之與田間、林間、果園的環(huán)境有一定區(qū)別,與林間、果園、田間等研究的視覺導航路徑提取算法無法完全適應,因此,針對矮化密果園設計一套針對性強的農(nóng)業(yè)機器人自主導航路徑提取算法具有實際意義。
本研究針對紅棗矮化密植果園環(huán)境的復雜性,利用MFC和Opencv設計一套視覺導航路徑提取分析軟件,以便探討出適合于矮化密植棗園的視覺導航路徑提取算法。
棗園視覺導航路徑提取軟件的設計目標主要有下面幾點:(1)通過滑動控件實時設置圖像橫向剖面線位置,并且能夠實時繪制剖面線上各像素點的RGB分量曲線圖,便于分析目標區(qū)域的像素分布規(guī)律,并計算相應RGB分量的相關統(tǒng)計參變量,最終確定圖像處理方案。(2)具備圖像顏色空間的轉化、灰度化、濾波、目標圖像分割、棗樹骨架提取、邊緣信息及擬合、基準線生成、人工擬合基準線、偏差角計算、算法耗時等功能。(3)軟件使用Opencv實現(xiàn)圖像處理算法,MFC負責設計界面外殼,使用Opencv窗口嵌入MFC技術將顯示界面與Opencv窗口進行關聯(lián),界面上的圖像能夠接受鼠標消息并傳遞給Opencv函數(shù)處理,最終實現(xiàn)鼠標繪制人工擬合基準線。
軟件功能設計需立足于需求分析,保證所設計功能沒有冗余,力求達到簡潔實用,是軟件質量的根本要求。
讀取圖像和保存功能是系統(tǒng)的2個基本功能,棗園植保時期和收獲時期的環(huán)境差異很大,路徑提取算法也不同,軟件開發(fā)將分2個階段算法進行;視覺導航通常需要對目標像素分布規(guī)律作分析,為整個路徑提取方法找到突破口,因此,軟件設計基于繪制剖面線上RGB各分量的曲線圖功能分析目標所在區(qū)域的分布規(guī)律,為后續(xù)目標和背景分割提供重要線索;綜合對棗園植保時期和收獲時期圖像剖面線各分量像素曲線分析,設計了色差法分割、大津法分割及基于掃描行自適應分割方法;分割后的圖像,通常伴隨噪聲,另外矮化密植棗園線性分布特性明顯,根據(jù)視角規(guī)律,由近及遠看作物行時,整體上呈現(xiàn)梯形分布(圖1)。
根據(jù)圖1-c可以看出,行邊緣所圍成的區(qū)域為1個梯形加1個矩形,圖1-d行邊緣圍成1個梯形區(qū)域,基于這2種模式分別設計了“行間區(qū)域掃描去噪方法”和“梯形掃描去噪方法”;基于上述2種方法去噪后,在行邊緣附近有少量的噪聲,樹干為縱向分布,且所在區(qū)域白色像素點分布稠密,易于和其他區(qū)域區(qū)分,根據(jù)這個特性,設計了灰度垂直投影方法去除樹干邊緣噪聲,以提取樹干骨架,但仍有部分相對較大閉合區(qū)域噪聲無法去除,設計了小面積去噪方法;樹干區(qū)域內(nèi)部存在孔洞,為了填充孔洞,設計形態(tài)學處理功能;骨架提取后,找出行邊緣臨界點,需要對這些候補點群進行擬合,采用最小二乘法對直線進行擬合,路徑提取需要對算法性能進行評估,系統(tǒng)主要考慮偏差角、耗時、擬合基準線方程和人工擬合直線方程系統(tǒng)采用模塊化結構設計(圖2)。
本軟件涉及多個圖像處理算法,為節(jié)約篇幅,僅寫出下列幾個提出的核心算法。
1.3.2 行間掃描去噪方法 設Si和Ei分別為第j行起點和終點橫坐標,起始掃描行S0=20,E0=M-S0-1,M為圖像的長,由下往上逐行掃描圖像。
①從每行起始點(Sj,j)開始掃描,若當前點(i,j)為白色像素點,將其置0,若當前點坐標為(Ej,j),跳轉至下一行。
②若是當前行j=0,則終止掃描,否者轉步驟③。
③若Sj+5=Ej-5,則Sj+1=Sj+1,Ej+1=Ej-1,j=j-1;否則j=j-1。
④根據(jù)更新后的Sj+1、Ej+1、j跳轉步驟①。
1.3.3 梯形掃描去噪 設圖像分辨率為M×N,利用灰度垂直投影方法求取圖像y=20水平線以上部分區(qū)域的波谷點Pbattom(ic,0),計算波谷點左右兩側的點ls(ic-6,0),rs(ic+6,0)在直線x=ic的兩側,圖像底邊分別找出點le(20,N-1)和點re(M-20,N-1),將點ls和點le利用兩點式方程求取去梯形左側腰的一般方程ALx+Bly+Cl=0,同理,利用點rs、re求取梯形右側腰的一般方程Arx+Bry+Cr=0;由上往下逐行掃描圖像,點(i,j)為當前掃描位置,若滿足Ali+Blj+Cl≥0,且Ali+Brj+Cr≥0,則將點(i,j)像素點置0(圖3)。
本軟件圖像處理算法使用Opencv實現(xiàn),界面使用MFC實現(xiàn)。軟件參數(shù)顯示界面使用Opencv窗口嵌入MFC技術,即是將Opencv活動窗口與MFC可視化界面的Pictcture控件綁定,首先使用Opencv的cvNameWindow函數(shù)創(chuàng)建1個活動窗口并設置窗口名稱及外觀屬性參數(shù),而后使用cvGetWindowHandle函數(shù)獲取窗口句柄標志,并將獲取的句柄傳給1個HWND類型變量hWnd,使用GetDlgItem函數(shù)獲取MFC可視化界面Picture控件的句柄指針,使用MFC中GetParent函數(shù)獲取父窗口句柄,使用SetParent函數(shù)通過已獲取的窗口句柄和Picture控件句柄綁定關聯(lián),實現(xiàn)界面窗口“一體化”,核心代碼如下:
cv::namedWindow(‘show’,cv::WINDOW_NORMAL);//設置依附關系
HWND hWnd=(HWND)cvGetWindowHndle(‘show’);
HWND hParent =::GetParent(hWnd);//設置窗口和Picture控件關聯(lián)
::SetParent(hWnd,GetDlgItem(IDC_PICSHOW)->m_hWnd);
::ShowWindow(hParent,SW_SHOW);//設置窗口屬性
系統(tǒng)讀取圖像使用OpenCV中cvLoadImage函數(shù),得到的圖像類型為IplImage*,但是這種類型不便于算法處理,為此使用強制類型轉化為Mat,在算法中可以更加方便靈活地運用矩陣運算高效率的處理圖像,使用自定義函數(shù)SetImageSize(IplImage* img,int flag)將圖像分辨率設置為230×168,使用cvSaveImage函數(shù)保存圖像,訪問像素點或為像素點賦值使用Mat.at()函數(shù),原因是語法簡單,效率高。軟件使用到的繪圖函數(shù)涉及cvLine函數(shù),負責繪制直線,例如邊緣線、基準線等。算法分為兩大類,分別是棗園收獲時期路徑提取算法和植保時期路徑提取算法。收獲時期自定義算法主要核心函數(shù)簡要:void ImagePreProcess(Mat& src,Mat& dst)函數(shù)功能是將圖像灰度化并使實現(xiàn)基于行掃描的行自適應分割方法;void CenterPixelToZero(Mat& src,Mat& dst,int step=0)函數(shù)功能實現(xiàn)“行間去噪”功能,即是消除分割圖像中棗樹行間存在隨機分布的噪聲;void ScaningWind_LR(Mat& src,int step)函數(shù)功能是計算局部窗口的灰度垂直投影以實現(xiàn)樹干骨架的提取,使用Opencv函數(shù)void cvMorphologyEx(const CvArr* src,CvArr* dst,CvArr* tmp,IplConvKernel* element,int operation,int iterations=1)實現(xiàn)形態(tài)學運算,目的是消除孤立點或填充孔洞;Void GetScatterPointSetPos(Mat&src_8u1c,Mat&dst_8u3c,intendScanPos,CArray
系統(tǒng)視覺導航路徑提取流程圖如圖4所示。
打開系統(tǒng),進入主界面菜單,用戶可以根據(jù)需求進行相關操作。
例如需要分析圖像分布,選中“RGB分布”按鈕進入對話框向導,選擇“加載圖片”按鈕,向左右打滑動條,選擇當前“剖面線”的位置,最后“確認”,即可繪制當前位置剖面線及其分量分布圖(圖5);點擊“路徑提取”進入路徑提取對話框,點擊“讀取圖像”,獲取邊緣及路徑提取圖像(自動保存圖像至工程文件夾中),用鼠標在圖像上進行人工擬合基準線,點擊“確定當前點”按鈕,獲取人工擬合基準線,綠色線條為人工擬合直線,紫色為算法提取基準線,右側顯示算法性能參數(shù)(圖6)。圖7是工程文件夾中保存路徑提取結果圖像,其中圖7-a~圖7-e為收獲時期路徑提取算法過程,分別為原圖像、基于行掃描“自適應分割”、“行間去噪”、“灰度垂直投影法”提取樹干骨架、路徑提取結果;圖7-f~圖7-j、圖7-k~圖7-o為植保時期環(huán)境路徑提取算法過程,圖7-f~圖7-j分別為原圖像、大津法分割、“梯形掃描”去噪、“灰度垂直投影”提取樹干骨架、路徑提取結果;圖7-k~圖7-o分別為原圖像、|R-G|色差法分割結果、“梯形掃描去噪”、路徑提取結果。
本系統(tǒng)界面簡單友好,能夠分析圖像目標像素分布規(guī)律,檢測棗園植保時期及收獲時期視覺導航路徑,系統(tǒng)采用模塊化結構開發(fā),各個子功能模塊相對獨立;系統(tǒng)拓展性好,后續(xù)可以根據(jù)實際需求添加相關功能模塊,系統(tǒng)需要考慮棗園圖像環(huán)境的變化情況改進和完善植保時期和收獲時期路徑提取算法功能模塊,以增強算法健壯性和可靠性;該系統(tǒng)的研發(fā)可為類似行業(yè)自主導航作業(yè)提供參考。
參考文獻:
[1]吳長雷,雷 勇,梁銀麗. 移動機器人視覺導航系統(tǒng)的設計與實現(xiàn)[J]. 四川大學學報(自然科學版),2010,47(6):1289-1294.
[2]孫賢剛,伍錫如,黨選舉,等. 基于視覺檢測的蘋果采摘機器人系統(tǒng)設計與實現(xiàn)[J]. 農(nóng)機化研究,201638(9):151-155,160.
[3]徐慶增,楊世鳳,楊美艷. 采摘機械手離線軌跡智能優(yōu)化——基于改進差分進化算法[J]. 農(nóng)機化研究,2017,39(2):191-195.
[4]李碧青,朱 強,鄭仕勇,等. 雜草自動識別除草機器人設計——基于嵌入式Web和ZigBee網(wǎng)關[J]. 農(nóng)機化研究,2017,39(1):217-221.
[5]趙 穎,孫 群,陳兵旗,等. 基于機器視覺的非結構化道路導航路徑檢測方法[J]. 農(nóng)業(yè)機械學報,2007,38(6):202-204.
[6]宋懷波,何東健,辛湘俊. 基于機器視覺的非結構化道路檢測與障礙物識別方法[J]. 農(nóng)業(yè)工程學報,2011,27(6):225-230.
[7]吳佳藝. 基于機器視覺的農(nóng)林環(huán)境導航路徑生成算法研究[D]. 杭州:浙江工業(yè)大學,2009.
[8]張方明. 田間路徑識別算法和基于立體視覺的車輛自動導航方法研究[D]. 杭州:浙江大學,2006.
[9]張偉華. 基于視覺的農(nóng)用輪式移動機器人導航路徑識別[D]. 楊凌:西北農(nóng)林科技大學,2009.
[10]王新忠,韓 旭,毛罕平,等. 基于最小二乘法的溫室番茄壟間視覺導航路徑檢測[J]. 農(nóng)業(yè)機械學報,2012,43(6):161-166.
[11]李景彬,陳兵旗,劉 陽,等. 采棉機視覺導航路線圖像檢測方法[J]. 農(nóng)業(yè)工程學報,2013(11):11-19.
[12]高國琴,李 明. 基于K-means算法的溫室移動機器人導航路徑識別[J]. 農(nóng)業(yè)工程學報,2014,30(7):25-33.
[13]何 潔,孟慶寬,張 漫,等. 基于邊緣檢測與掃描濾波的農(nóng)機導航基準線提取方法[J]. 農(nóng)業(yè)機械學報,2014(S1):265-270.
[14]吳佳藝,楊慶華,鮑官軍,等. 基于機器視覺的林間導航路徑生成算法[J]. 農(nóng)業(yè)機械學報,2009,40(7):176-179.
[15]He B,Liu G,Ji Y,et al. Auto recognition of navigation path for harvest robot based on machine vision[M]//Computer and computing technologies in agriculture Ⅳ. Springer Berlin Heidelberg,2011:138-148.