蔡道清 李彥明 覃程錦 劉成良
(上海交通大學(xué)機(jī)械與動力工程學(xué)院, 上海 200240)
自動導(dǎo)航是農(nóng)業(yè)智能化的核心要素。在受環(huán)境因素影響、衛(wèi)星信號差或農(nóng)田地塊邊界不規(guī)則時(shí),視覺環(huán)境識別與導(dǎo)航成為智能農(nóng)機(jī)導(dǎo)航的關(guān)鍵手段。基于機(jī)器視覺的導(dǎo)航路線檢測算法是自動導(dǎo)航系統(tǒng)的核心內(nèi)容[1]。導(dǎo)航路線[2-4]主要包括農(nóng)作物形成的作物線[5-7]以及農(nóng)田的邊界線[8-9]。在航線檢測過程中,其核心算法是圖像分割,即有效分離農(nóng)田里的不同區(qū)塊,為后續(xù)的邊界提取做準(zhǔn)備。受限于硬件計(jì)算能力的不足,以及邊界檢測的實(shí)時(shí)性要求,傳統(tǒng)圖像分割算法是基于農(nóng)田圖像中不同區(qū)塊的顏色差異進(jìn)行分割[10-12],此類算法優(yōu)勢在于運(yùn)行速度快,可以用于實(shí)時(shí)檢測,但對自然光照的魯棒性能較差。農(nóng)業(yè)車輛多是戶外作業(yè),即使是同一天,不同時(shí)刻的自然光照不同,因而無法適應(yīng)光照變化的算法在實(shí)際應(yīng)用中局限性比較大。針對自然光照的多變性,國內(nèi)外研究人員提出了變換圖像顏色空間的方法,由RGB圖像轉(zhuǎn)換到Y(jié)UV圖像[13-14]、HSV圖像[15]、光照不變圖[16-17]等,結(jié)果證明,此類算法一定程度上能夠有效減弱光照的影響,且能夠滿足農(nóng)機(jī)實(shí)時(shí)性要求。
上述基于顏色差異和顏色空間變換的邊界檢測算法是基于模型和知識的檢測算法,而基于機(jī)器學(xué)習(xí)的田塊邊界檢測算法是基于特征數(shù)據(jù)的訓(xùn)練學(xué)習(xí)方法,在不同光照條件、不同檢測地況的訓(xùn)練樣本充足的條件下,通過合適的特征提取與選擇,機(jī)器學(xué)習(xí)算法能夠得到準(zhǔn)確的基于特征數(shù)據(jù)的不同地塊的分類結(jié)果,而且受自然光照的影響很小。隨著硬件計(jì)算能力的提升,機(jī)器學(xué)習(xí)算法在機(jī)器視覺中得到了應(yīng)用[18],但很少應(yīng)用在農(nóng)機(jī)自動導(dǎo)航方面。
本文提出一種基于機(jī)器學(xué)習(xí)的水田田埂邊界檢測算法。采用線性迭代聚類算法(Simple linear iterative cluster, SLIC)[19]進(jìn)行水田圖像超像素分割預(yù)處理,提取超像素的顏色特征、紋理特征,構(gòu)成19維特征向量,作為支持向量機(jī)(Support vector machine,SVM)[20]模型訓(xùn)練的輸入,通過訓(xùn)練好的SVM模型識別圖像中不同區(qū)塊,進(jìn)而分割圖像,并采用霍夫變換提取水田田埂邊界。
圖1所示為水田原始圖像,以此為例進(jìn)行算法說明,圖像尺寸為1 280像素×720像素,采取SLIC超像素分割算法對其預(yù)處理,以少量的超像素代替大量的像素來表達(dá)圖像特征,能有效減少圖像后處理的計(jì)算量。
圖1 水田原始圖像Fig.1 Original picture of paddy field
SLIC水田圖像超像素分割分為兩步:
(1)初始化水田圖像聚類中心
設(shè)置聚類中心個(gè)數(shù)為k,第i個(gè)聚類中心的向量為Ci(li,ai,bi,xi,yi),其中(li,ai,bi)是聚類中心在CIELAB顏色空間的通道值,(xi,yi)是聚類中心在圖像中的坐標(biāo)。初始化的聚類中心以步長S均勻分布
(1)
式中N——圖像中像素總數(shù)
聚類中心以外的標(biāo)簽為i(i=1,2,…,k),初始化其他像素的標(biāo)簽為-1。
(2)迭代聚類過程
n≤nt
(2)
式中nt——預(yù)先設(shè)定的迭代次數(shù)
迭代聚類過程像素與聚類中心的距離度量采用加權(quán)歐氏距離,距離計(jì)算公式為
(3)
(4)
(5)
式中dc——像素與聚類中心在CIELAB顏色空間的歐氏距離
ds——像素與聚類中心的空間坐標(biāo)歐氏距離
D′——像素與聚類中心的距離度量
Nc、Ns——加權(quán)系數(shù)
圖2 SLIC分割效果Fig.2 SLIC segmentation diagram
SLIC水田圖像超像素分割能生成緊湊、近似均勻的超像素,且算法運(yùn)行速度快,SLIC分割效果如圖2所示。
對每一個(gè)超像素,提取9維顏色特征和10維紋理特征組成19維特征向量,特征向量vj表達(dá)為
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——超像素內(nèi)所有像素的RGB三通道均值
μjh、μjs、μjv——超像素內(nèi)所有像素的HSV三通道均值
σjh、σjs、σjv——超像素內(nèi)所有像素的HSV三通道的方差
μjm——超像素內(nèi)所有像素的梯度幅值均值
hj1~hj9——超像素內(nèi)基于像素梯度方向直方圖的9維向量值
圖4 超像素顏色特征圖Fig.4 Graphic representations of superpixel color features
顏色特征是基于RGB和HSV顏色空間的超像素內(nèi)像素值的統(tǒng)計(jì)特性,即計(jì)算超像素內(nèi)所有像素的RGB三通道均值和HSV三通道均值及HSV三通道的方差。采用HSV顏色空間,是因?yàn)镠SV顏色空間對于自然光照變化的敏感度低,一定程度上可以減弱自然光照對顏色特征的影響。HSV三通道的方差計(jì)算公式為
σ2=∑(z-μ)2p(z)
(7)
式中z——超像素內(nèi)像素(x,y)的HSV三通道值
μ——超像素內(nèi)所有像素的HSV三通道均值
p(z)——超像素內(nèi)像素值為z的概率
圖3 超像素顏色特征提取流程圖Fig.3 Flow chart of superpixel color feature extraction
顏色特征提取流程如圖3所示。超像素顏色特征圖如圖4所示。
不同于顏色特征,圖像的紋理特征表征了像素及其空間鄰域的像素值分布,描述了圖像區(qū)域所對應(yīng)物體的表面性質(zhì)。
本文提取的紋理特征包括兩部分:超像素內(nèi)所有像素的梯度幅值均值和基于像素梯度方向直方圖的9維向量。
像素梯度幅值的計(jì)算公式為
(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)處像素縱向梯度
實(shí)際處理中,在計(jì)算橫向梯度Gx和縱向梯度Gy的時(shí)候,采用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,計(jì)算坐標(biāo)(x,y)處像素的梯度方向值
(12)
式中α(x,y)——像素(x,y)梯度方向值,取值范圍為0°~360°
以如下規(guī)則構(gòu)建9維紋理特征向量:
(1)如圖7所示,將0°~360°均勻分成9部分,每部分對應(yīng)9維特征向量的一個(gè)值。初始化9維向量各個(gè)值為0。
圖7 0°~360°角度分塊圖Fig.7 Block diagram of 0°~360° angle
(2)遍歷超像素內(nèi)所有像素,根據(jù)像素的梯度方向值,在對應(yīng)的角度區(qū)域里計(jì)算加權(quán)值。即當(dāng)像素(x,y)的梯度方向值α(x,y)滿足
α(x,y)∈fq(q=1,2,…,9)
(13)
式中fq——第q個(gè)角度范圍
計(jì)算fq對應(yīng)的向量值hq的加權(quán)值,以像素幅度值作為加權(quán)系數(shù)
hq←hq+G(x,y)×1
(14)
式中 ←——賦值運(yùn)算
本文訓(xùn)練樣本集為人工標(biāo)注的超像素,取超像素的19維特征向量作為SVM模型訓(xùn)練數(shù)據(jù)輸入,訓(xùn)練標(biāo)簽為(-1,1),規(guī)定田埂區(qū)域的超像素為正樣本(1),非田埂區(qū)域的超像素為負(fù)樣本(-1)。超像素來源于一天中不同時(shí)刻不同水田采集的20幅水田圖像,進(jìn)行標(biāo)注得到了1 266個(gè)正樣本和2 749個(gè)負(fù)樣本,從而得到訓(xùn)練樣本集合(vj,mj)。j=1,2,…,4 015;mj∈(-1,1)。
水田田埂識別SVM模型訓(xùn)練的目標(biāo)是找到能夠劃分田埂和非田埂兩類樣本且使得兩類樣本間隔最大的超平面,超平面可以通過線性方程表示為
ωTv+b=0
(15)
式中ω——超平面的法向量,決定了超平面的方向
b——位移項(xiàng),決定了超平面與原點(diǎn)的距離
v——訓(xùn)練樣本集
為了最大化兩類樣本的間隔,SVM要解決的是二次優(yōu)化問題
(16)
針對非線性可分的樣本,選擇合適的核函數(shù)轉(zhuǎn)換特征向量,進(jìn)而達(dá)到劃分樣本的目的。
比較徑向基核函數(shù)、多項(xiàng)式核函數(shù)和線性核函數(shù),因?yàn)榫€性核函數(shù)的分類效果更好,因此最終選定線性核函數(shù)作為SVM模型的核函數(shù)。
另外,采用交叉驗(yàn)證的方法來避免SVM對訓(xùn)練樣本過擬合,即將訓(xùn)練樣本隨機(jī)分成兩部分:90%樣本作為模型訓(xùn)練樣本,用于訓(xùn)練SVM模型;10%樣本作為驗(yàn)證集,用于驗(yàn)證模型準(zhǔn)確率,以驗(yàn)證集準(zhǔn)確率最高的模型作為輸出模型。
經(jīng)過SLIC超像素分割后,對每個(gè)超像素提取特征,并加載訓(xùn)練好的SVM模型,對每個(gè)超像素類型進(jìn)行預(yù)測。圖8顯示了田埂識別分類效果,其中紅色表示田埂區(qū)域。從分類的結(jié)果圖中可以看出,水田田埂的超像素基本被準(zhǔn)確分類。
圖8 松江區(qū)09:00水田橫向田埂分類結(jié)果圖Fig.8 Classification results of paddy field with horizontal ridge at 09:00 in Songjiang District
在洋馬VP6E型水田直播機(jī)上安裝ZED相機(jī),相機(jī)以1 280像素×720像素的分辨率,30幀/s的速度采集圖像。算法處理器選用的是NVIDIA下的Jetson TX2產(chǎn)品,Jetson TX2配備8 GB運(yùn)行內(nèi)存和32 GB的存儲空間,CPU的主頻可以達(dá)到2 GHz。基于Ubuntu操作系統(tǒng),在CMake編譯環(huán)境下采用C++語言對算法進(jìn)行編程實(shí)現(xiàn)。在超像素分割以及SVM分類階段,使用了計(jì)算機(jī)視覺開源庫OpenCV中的SuperpixelSLIC和SVM函數(shù)。試驗(yàn)環(huán)境是上海市松江區(qū)和浦東區(qū)的未播種水田,試驗(yàn)平臺及環(huán)境如圖9所示。
圖9 水田田埂邊界檢測試驗(yàn)現(xiàn)場Fig.9 Experiment scene of paddy field boundary detection
水田直播機(jī)以0.8 m/s的速度行駛時(shí),ZED相機(jī)實(shí)時(shí)采集水田圖像,Jetson TX2在0.6 s內(nèi)完成一幅水田圖像中田埂部分的識別。針對一天中不同時(shí)刻的松江區(qū)水田田埂,經(jīng)過SVM分類過后的田埂識別情況如圖10、11所示。結(jié)合圖8的分類結(jié)果圖,可以看出,所用機(jī)器學(xué)習(xí)算法對松江區(qū)水田里的不同類型田埂,以及不同時(shí)間段內(nèi)(不同光照)的田埂,都能夠很好地識別。
為了驗(yàn)證田埂識別算法具有一定的泛化能力,在上海浦東區(qū)水田里應(yīng)用此算法。試驗(yàn)在16:00進(jìn)行,試驗(yàn)結(jié)果如圖12所示。分類結(jié)果圖表明此算法在不同的水田里均可有效檢測出水田田埂部分。
圖10 松江區(qū)09:00水田縱向田埂分類結(jié)果Fig.10 Classification results of paddy field with vertical ridge at 09:00 in Songjiang District
圖11 松江區(qū)15:00水田縱向田埂分類結(jié)果Fig.11 Classification results of paddy field with vertical ridge at 15:00 in Songjiang District
圖12 浦東區(qū)16:00水田縱向田埂分類結(jié)果Fig.12 Classification results of paddy field with vertical ridge at 16:00 in Pudong District
以F1分?jǐn)?shù)作為田埂檢測算法的評價(jià)指標(biāo)。在松江區(qū)和浦東區(qū)拍攝的圖像中,選擇50幅包含田埂的水田圖像,將超像素的分類結(jié)果與實(shí)際人工標(biāo)注的結(jié)果對比,同時(shí)統(tǒng)計(jì)超像素識別的精準(zhǔn)率和召回率。50幅水田圖像經(jīng)過超像素分割后生成21 875個(gè)超像素,經(jīng)過人工標(biāo)注后,正樣本超像素(田埂部分的超像素)數(shù)目為3 365,負(fù)樣本超像素(非田埂部分的超像素)數(shù)目為18 510。田埂識別算法的分類統(tǒng)計(jì)結(jié)果如表1所示。
表1 田埂識別算法分類結(jié)果統(tǒng)計(jì)分析Tab.1 Statistical analysis of classification results
表1中,真正樣本表示預(yù)測為1,實(shí)際也為1的超像素;真負(fù)樣本表示預(yù)測為0,實(shí)際也為0的超像素;假正樣本表示預(yù)測為1,實(shí)際為0的超像素;假負(fù)樣本表示預(yù)測為0,實(shí)際為1的超像素。
由表1可知,所提算法能夠準(zhǔn)確分割出水田中田埂區(qū)域和非田埂區(qū)域,F(xiàn)1分?jǐn)?shù)指標(biāo)達(dá)到90.7%,從而驗(yàn)證了算法的有效性。
因?yàn)楹骄€是直接引導(dǎo)農(nóng)機(jī)自動行駛的信息,因此,在分類出水田田埂區(qū)域后,需要進(jìn)一步提取田埂邊界線,以此作為農(nóng)機(jī)行駛的航線。
以圖10的水田田埂分類結(jié)果為例,說明田埂邊界提取的過程。基于SVM的分類結(jié)果,將水田圖像二值化,得到二值化圖,如圖13a所示。使用Canny邊緣檢測算子檢測二值化圖的所有邊緣,得到邊緣圖,如圖13b所示。使用霍夫變換檢測邊緣圖中所有直線,霍夫變換檢測出的直線不止一條,如圖13c所示。選取離圖像底部中心像素點(diǎn)(640,720)最近的直線作為田埂邊界,如圖13d所示,紅線為提取的田埂邊界線。從圖中可以看出,田埂邊界能夠被有效提取出來。
如圖13d所示,綠色虛線為人工標(biāo)注的田埂邊界線。以算法提取的田埂邊界線和人工標(biāo)注的邊界線之間的夾角作為評判邊界線檢測精度的標(biāo)準(zhǔn)。統(tǒng)計(jì)上文中選取的50幅水田圖像中紅綠兩線的夾角,均值為1.63°,方差為0.14。因此,由本文算法提取的田埂邊界線精度滿足自動導(dǎo)航的要求。
圖13 水田田埂邊界提取圖Fig.13 Graphic representations of farmland ridge boundary extraction
Jetson TX2在0.6 s內(nèi)完成一幅水田圖像中田埂部分的識別(包含了圖像預(yù)處理),后續(xù)導(dǎo)航線識別時(shí)間在0.2 s以內(nèi),因而算法處理一幀圖像總運(yùn)行時(shí)間在0.8 s以內(nèi)。同時(shí),由于相機(jī)前視距離可以達(dá)到10 m,且水田直播機(jī)的行進(jìn)速度為0.8 m/s,因此0.8 s的算法處理時(shí)間能夠較好地滿足水田直播機(jī)運(yùn)動中實(shí)時(shí)檢測田埂的需要。
(1)對水田原始圖像進(jìn)行SLIC超像素分割預(yù)處理,有效減少了后續(xù)圖像處理的計(jì)算量,并為支持向量機(jī)的模型訓(xùn)練提供了大量的樣本,僅需要20幅圖像便可獲得上千個(gè)特征樣本,解決了機(jī)器學(xué)習(xí)算法需要大量樣本的問題。
(2)考慮到田埂區(qū)域和非田埂區(qū)域在顏色和紋理上都存在一定差異,因而在特征提取階段提取了9維顏色特征向量和10維紋理特征向量,充分利用了圖像信息,彌補(bǔ)了傳統(tǒng)圖像分割算法依賴圖像顏色信息的不足。
(3)對不同時(shí)間段、不同地塊的多幅農(nóng)田圖像進(jìn)行處理,結(jié)果表明,本文算法能夠準(zhǔn)確分割出水田中田埂區(qū)域和非田埂區(qū)域,F(xiàn)1分?jǐn)?shù)達(dá)到90.7%。在NVIDIA的Jetson TX2硬件平臺上,算法總運(yùn)行時(shí)間在0.8 s以內(nèi),有效地滿足了水田直播機(jī)的實(shí)時(shí)性要求。