蔡道清 李彥明 覃程錦 劉成良
(上海交通大學機械與動力工程學院, 上海 200240)
自動導航是農業智能化的核心要素。在受環境因素影響、衛星信號差或農田地塊邊界不規則時,視覺環境識別與導航成為智能農機導航的關鍵手段。基于機器視覺的導航路線檢測算法是自動導航系統的核心內容[1]。導航路線[2-4]主要包括農作物形成的作物線[5-7]以及農田的邊界線[8-9]。在航線檢測過程中,其核心算法是圖像分割,即有效分離農田里的不同區塊,為后續的邊界提取做準備。受限于硬件計算能力的不足,以及邊界檢測的實時性要求,傳統圖像分割算法是基于農田圖像中不同區塊的顏色差異進行分割[10-12],此類算法優勢在于運行速度快,可以用于實時檢測,但對自然光照的魯棒性能較差。農業車輛多是戶外作業,即使是同一天,不同時刻的自然光照不同,因而無法適應光照變化的算法在實際應用中局限性比較大。針對自然光照的多變性,國內外研究人員提出了變換圖像顏色空間的方法,由RGB圖像轉換到YUV圖像[13-14]、HSV圖像[15]、光照不變圖[16-17]等,結果證明,此類算法一定程度上能夠有效減弱光照的影響,且能夠滿足農機實時性要求。
上述基于顏色差異和顏色空間變換的邊界檢測算法是基于模型和知識的檢測算法,而基于機器學習的田塊邊界檢測算法是基于特征數據的訓練學習方法,在不同光照條件、不同檢測地況的訓練樣本充足的條件下,通過合適的特征提取與選擇,機器學習算法能夠得到準確的基于特征數據的不同地塊的分類結果,而且受自然光照的影響很小。隨著硬件計算能力的提升,機器學習算法在機器視覺中得到了應用[18],但很少應用在農機自動導航方面。
本文提出一種基于機器學習的水田田埂邊界檢測算法。采用線性迭代聚類算法(Simple linear iterative cluster, SLIC)[19]進行水田圖像超像素分割預處理,提取超像素的顏色特征、紋理特征,構成19維特征向量,作為支持向量機(Support vector machine,SVM)[20]模型訓練的輸入,通過訓練好的SVM模型識別圖像中不同區塊,進而分割圖像,并采用霍夫變換提取水田田埂邊界。
圖1所示為水田原始圖像,以此為例進行算法說明,圖像尺寸為1 280像素×720像素,采取SLIC超像素分割算法對其預處理,以少量的超像素代替大量的像素來表達圖像特征,能有效減少圖像后處理的計算量。

圖1 水田原始圖像Fig.1 Original picture of paddy field
SLIC水田圖像超像素分割分為兩步:
(1)初始化水田圖像聚類中心
設置聚類中心個數為k,第i個聚類中心的向量為Ci(li,ai,bi,xi,yi),其中(li,ai,bi)是聚類中心在CIELAB顏色空間的通道值,(xi,yi)是聚類中心在圖像中的坐標。初始化的聚類中心以步長S均勻分布
(1)
式中N——圖像中像素總數
聚類中心以外的標簽為i(i=1,2,…,k),初始化其他像素的標簽為-1。
(2)迭代聚類過程

n≤nt
(2)
式中nt——預先設定的迭代次數
迭代聚類過程像素與聚類中心的距離度量采用加權歐氏距離,距離計算公式為
(3)

(4)
(5)
式中dc——像素與聚類中心在CIELAB顏色空間的歐氏距離
ds——像素與聚類中心的空間坐標歐氏距離
D′——像素與聚類中心的距離度量
Nc、Ns——加權系數

圖2 SLIC分割效果Fig.2 SLIC segmentation diagram
SLIC水田圖像超像素分割能生成緊湊、近似均勻的超像素,且算法運行速度快,SLIC分割效果如圖2所示。
對每一個超像素,提取9維顏色特征和10維紋理特征組成19維特征向量,特征向量vj表達為
vj=(μjr,μjg,μjb,μjh,μjs,μjv,μjm,σjh,σjs,σjv,hj1,hj2,hj3,hj4,hj5,hj6,hj7,hj8,hj9)
(6)
式中j——超像素編號
μjr、μjg、μjb——超像素內所有像素的RGB三通道均值
μjh、μjs、μjv——超像素內所有像素的HSV三通道均值
σjh、σjs、σjv——超像素內所有像素的HSV三通道的方差
μjm——超像素內所有像素的梯度幅值均值
hj1~hj9——超像素內基于像素梯度方向直方圖的9維向量值

圖4 超像素顏色特征圖Fig.4 Graphic representations of superpixel color features
顏色特征是基于RGB和HSV顏色空間的超像素內像素值的統計特性,即計算超像素內所有像素的RGB三通道均值和HSV三通道均值及HSV三通道的方差。采用HSV顏色空間,是因為HSV顏色空間對于自然光照變化的敏感度低,一定程度上可以減弱自然光照對顏色特征的影響。HSV三通道的方差計算公式為
σ2=∑(z-μ)2p(z)
(7)
式中z——超像素內像素(x,y)的HSV三通道值
μ——超像素內所有像素的HSV三通道均值
p(z)——超像素內像素值為z的概率

圖3 超像素顏色特征提取流程圖Fig.3 Flow chart of superpixel color feature extraction
顏色特征提取流程如圖3所示。超像素顏色特征圖如圖4所示。
不同于顏色特征,圖像的紋理特征表征了像素及其空間鄰域的像素值分布,描述了圖像區域所對應物體的表面性質。
本文提取的紋理特征包括兩部分:超像素內所有像素的梯度幅值均值和基于像素梯度方向直方圖的9維向量。
像素梯度幅值的計算公式為
(8)
其中
Gx(x,y)=I(x+1,y)-I(x,y)
(9)
Gy(x,y)=I(x,y+1)-I(x,y)
(10)
式中I(x,y)——(x,y)處像素灰度
G(x,y)——(x,y)處像素梯度幅值
Gx(x,y)——(x,y)處像素橫向梯度
Gy(x,y)——(x,y)處像素縱向梯度
實際處理中,在計算橫向梯度Gx和縱向梯度Gy的時候,采用Sobel邊緣算子做卷積。
(11)
式中I——水田圖像灰度
紋理特征第1部分梯度幅值均值的提取流程如圖5所示。

圖5 紋理特征第1部分的提取流程圖Fig.5 Flow chart of the first part of texture feature extraction
超像素梯度幅值均值特征圖如圖6所示。

圖6 超像素梯度幅值均值特征圖Fig.6 Graphic representation of superpixel gradient amplitude mean feature
紋理特征的第2部分梯度方向直方圖9維向量是基于像素梯度方向直方圖的9維向量。利用式(11)的Gx和Gy,計算坐標(x,y)處像素的梯度方向值
(12)
式中α(x,y)——像素(x,y)梯度方向值,取值范圍為0°~360°
以如下規則構建9維紋理特征向量:
(1)如圖7所示,將0°~360°均勻分成9部分,每部分對應9維特征向量的一個值。初始化9維向量各個值為0。

圖7 0°~360°角度分塊圖Fig.7 Block diagram of 0°~360° angle
(2)遍歷超像素內所有像素,根據像素的梯度方向值,在對應的角度區域里計算加權值。即當像素(x,y)的梯度方向值α(x,y)滿足
α(x,y)∈fq(q=1,2,…,9)
(13)
式中fq——第q個角度范圍
計算fq對應的向量值hq的加權值,以像素幅度值作為加權系數
hq←hq+G(x,y)×1
(14)
式中 ←——賦值運算
本文訓練樣本集為人工標注的超像素,取超像素的19維特征向量作為SVM模型訓練數據輸入,訓練標簽為(-1,1),規定田埂區域的超像素為正樣本(1),非田埂區域的超像素為負樣本(-1)。超像素來源于一天中不同時刻不同水田采集的20幅水田圖像,進行標注得到了1 266個正樣本和2 749個負樣本,從而得到訓練樣本集合(vj,mj)。j=1,2,…,4 015;mj∈(-1,1)。
水田田埂識別SVM模型訓練的目標是找到能夠劃分田埂和非田埂兩類樣本且使得兩類樣本間隔最大的超平面,超平面可以通過線性方程表示為
ωTv+b=0
(15)
式中ω——超平面的法向量,決定了超平面的方向
b——位移項,決定了超平面與原點的距離
v——訓練樣本集
為了最大化兩類樣本的間隔,SVM要解決的是二次優化問題
(16)
針對非線性可分的樣本,選擇合適的核函數轉換特征向量,進而達到劃分樣本的目的。
比較徑向基核函數、多項式核函數和線性核函數,因為線性核函數的分類效果更好,因此最終選定線性核函數作為SVM模型的核函數。
另外,采用交叉驗證的方法來避免SVM對訓練樣本過擬合,即將訓練樣本隨機分成兩部分:90%樣本作為模型訓練樣本,用于訓練SVM模型;10%樣本作為驗證集,用于驗證模型準確率,以驗證集準確率最高的模型作為輸出模型。
經過SLIC超像素分割后,對每個超像素提取特征,并加載訓練好的SVM模型,對每個超像素類型進行預測。圖8顯示了田埂識別分類效果,其中紅色表示田埂區域。從分類的結果圖中可以看出,水田田埂的超像素基本被準確分類。

圖8 松江區09:00水田橫向田埂分類結果圖Fig.8 Classification results of paddy field with horizontal ridge at 09:00 in Songjiang District
在洋馬VP6E型水田直播機上安裝ZED相機,相機以1 280像素×720像素的分辨率,30幀/s的速度采集圖像。算法處理器選用的是NVIDIA下的Jetson TX2產品,Jetson TX2配備8 GB運行內存和32 GB的存儲空間,CPU的主頻可以達到2 GHz。基于Ubuntu操作系統,在CMake編譯環境下采用C++語言對算法進行編程實現。在超像素分割以及SVM分類階段,使用了計算機視覺開源庫OpenCV中的SuperpixelSLIC和SVM函數。試驗環境是上海市松江區和浦東區的未播種水田,試驗平臺及環境如圖9所示。

圖9 水田田埂邊界檢測試驗現場Fig.9 Experiment scene of paddy field boundary detection
水田直播機以0.8 m/s的速度行駛時,ZED相機實時采集水田圖像,Jetson TX2在0.6 s內完成一幅水田圖像中田埂部分的識別。針對一天中不同時刻的松江區水田田埂,經過SVM分類過后的田埂識別情況如圖10、11所示。結合圖8的分類結果圖,可以看出,所用機器學習算法對松江區水田里的不同類型田埂,以及不同時間段內(不同光照)的田埂,都能夠很好地識別。
為了驗證田埂識別算法具有一定的泛化能力,在上海浦東區水田里應用此算法。試驗在16:00進行,試驗結果如圖12所示。分類結果圖表明此算法在不同的水田里均可有效檢測出水田田埂部分。

圖10 松江區09:00水田縱向田埂分類結果Fig.10 Classification results of paddy field with vertical ridge at 09:00 in Songjiang District

圖11 松江區15:00水田縱向田埂分類結果Fig.11 Classification results of paddy field with vertical ridge at 15:00 in Songjiang District

圖12 浦東區16:00水田縱向田埂分類結果Fig.12 Classification results of paddy field with vertical ridge at 16:00 in Pudong District
以F1分數作為田埂檢測算法的評價指標。在松江區和浦東區拍攝的圖像中,選擇50幅包含田埂的水田圖像,將超像素的分類結果與實際人工標注的結果對比,同時統計超像素識別的精準率和召回率。50幅水田圖像經過超像素分割后生成21 875個超像素,經過人工標注后,正樣本超像素(田埂部分的超像素)數目為3 365,負樣本超像素(非田埂部分的超像素)數目為18 510。田埂識別算法的分類統計結果如表1所示。

表1 田埂識別算法分類結果統計分析Tab.1 Statistical analysis of classification results
表1中,真正樣本表示預測為1,實際也為1的超像素;真負樣本表示預測為0,實際也為0的超像素;假正樣本表示預測為1,實際為0的超像素;假負樣本表示預測為0,實際為1的超像素。
由表1可知,所提算法能夠準確分割出水田中田埂區域和非田埂區域,F1分數指標達到90.7%,從而驗證了算法的有效性。
因為航線是直接引導農機自動行駛的信息,因此,在分類出水田田埂區域后,需要進一步提取田埂邊界線,以此作為農機行駛的航線。
以圖10的水田田埂分類結果為例,說明田埂邊界提取的過程。基于SVM的分類結果,將水田圖像二值化,得到二值化圖,如圖13a所示。使用Canny邊緣檢測算子檢測二值化圖的所有邊緣,得到邊緣圖,如圖13b所示。使用霍夫變換檢測邊緣圖中所有直線,霍夫變換檢測出的直線不止一條,如圖13c所示。選取離圖像底部中心像素點(640,720)最近的直線作為田埂邊界,如圖13d所示,紅線為提取的田埂邊界線。從圖中可以看出,田埂邊界能夠被有效提取出來。
如圖13d所示,綠色虛線為人工標注的田埂邊界線。以算法提取的田埂邊界線和人工標注的邊界線之間的夾角作為評判邊界線檢測精度的標準。統計上文中選取的50幅水田圖像中紅綠兩線的夾角,均值為1.63°,方差為0.14。因此,由本文算法提取的田埂邊界線精度滿足自動導航的要求。

圖13 水田田埂邊界提取圖Fig.13 Graphic representations of farmland ridge boundary extraction
Jetson TX2在0.6 s內完成一幅水田圖像中田埂部分的識別(包含了圖像預處理),后續導航線識別時間在0.2 s以內,因而算法處理一幀圖像總運行時間在0.8 s以內。同時,由于相機前視距離可以達到10 m,且水田直播機的行進速度為0.8 m/s,因此0.8 s的算法處理時間能夠較好地滿足水田直播機運動中實時檢測田埂的需要。
(1)對水田原始圖像進行SLIC超像素分割預處理,有效減少了后續圖像處理的計算量,并為支持向量機的模型訓練提供了大量的樣本,僅需要20幅圖像便可獲得上千個特征樣本,解決了機器學習算法需要大量樣本的問題。
(2)考慮到田埂區域和非田埂區域在顏色和紋理上都存在一定差異,因而在特征提取階段提取了9維顏色特征向量和10維紋理特征向量,充分利用了圖像信息,彌補了傳統圖像分割算法依賴圖像顏色信息的不足。
(3)對不同時間段、不同地塊的多幅農田圖像進行處理,結果表明,本文算法能夠準確分割出水田中田埂區域和非田埂區域,F1分數達到90.7%。在NVIDIA的Jetson TX2硬件平臺上,算法總運行時間在0.8 s以內,有效地滿足了水田直播機的實時性要求。