楊 光 張洪熙 方 濤 張彩麗
(1.長春理工大學電子信息工程學院, 長春 130022; 2.杭州海康汽車軟件有限公司乘用車產品部, 杭州 310051)
目前,保護性耕作技術已經成為我國農業主推耕作技術,吉林省將該技術列為農業生產先進技術重點推廣項目。推廣實施保護性耕作技術的關鍵是提供性能和質量可靠的專用配套機具,免耕播種機是其中最重要的配套裝備。而秸稈覆蓋率的識別與檢測是我國免耕播種機實行大面積推廣過程中需要解決的主要問題。
檢測秸稈覆蓋率比較典型的方法有紋理法及以秸稈和土壤亮度作為檢測基礎的二值化方法[1-14]。文獻[9]提出一種基于紋理的秸稈覆蓋率檢測方法,并將BP神經網絡方法融入檢測算法之中,實現了秸稈覆蓋率的高精度檢測,但是BP神經網絡需要進行訓練,在不同實際情況下都需要重新訓練權值,效率偏低。文獻[10-13]使用自動閾值分割算法進行秸稈覆蓋率檢測,主要根據土壤和秸稈亮度不同通過二值化處理計算出覆蓋率,但對于光照不均的情況適應性較差。文獻[14]提出一種Sauvola和Otsu相結合的方法對圖像進行二值化處理,再計算出秸稈覆蓋率,其檢測速度快,能準確測算秸稈覆蓋率,但對光照變化帶來的影響適應性較差。
針對秸稈覆蓋率識別存在的問題,本文在已有技術方法的基礎上,提出一種改進后的AdaBoost算法,對工作環境是否為免耕地進行自動檢測,以期提高秸稈覆蓋率計算的準確性。
免耕播種機在工作時通過單目攝像機采集作業環境,因此對作業環境的分類顯得極其重要,本文提出了一種基于haar特征的AdaBoost算法的自動識別技術[15-17]。
AdaBoost算法是由多個分類效果較差的弱分類器逐步迭代組成一個分類效果較好的強分類器的過程[17]。如圖1所示,單個弱分類器的分類效果不好,位置靠前的弱分類器的分類結果會影響位置靠后的弱分類器。AdaBoost算法在組成強分類器的過程中弱分類器不是并行的,而是一個弱分類器分類完成后,下一個才進行。本文關注的是上一個弱分類器分類錯誤的數據樣本,也就是用當前分類器來彌補上一個弱分類器分類錯誤的數據樣本。
弱分類器的訓練過程是針對每一個特征r計算所有訓練樣本的特征值,目的是將弱分類器g(x,l,p,θ)分類誤差ε降到最小。其中最關鍵的參數有閾值θ和偏置p。
(1)
式中x——待檢測窗口
l(x)——計算特征值的函數
現行AdaBoost算法的樣本權重更新公式為
(2)
其中
式中εt——弱分類器分類誤差
Zt——歸一化因子ωt,i——樣本權重
yi——樣本數據
gt(xi)——最佳弱分類器
由式(2)可知,若當前弱分類器gt(x)沒有對某訓練樣本xi正確分類,則gt(xi)=1,yi=-1,或gt(xi)=-1,yi=1,即yigt(xi)=-1,則有
(3)
若當前弱分類器gt(x)對某訓練樣本xi正確分類,則gt(xi)=-1,yi=-1,或gt(xi)=1,yi=1,即yigt(xi)=1,則有
(4)
由上述分析可知,AdaBoost算法的樣本權重更新規律保證了專注于困難樣本,賦予錯分樣本一個更大的樣本權重,即學習算法后續會更加重視被錯分的樣本,但缺點也較為明顯:①AdaBoost算法在訓練樣本中遇到噪聲或一些困難樣本時,算法會專注分析這些困難樣本,導致困難樣本的權重急劇增加,最終使算法出現退化現象。②由于AdaBoost算法使用了權重歸一化,如果存在噪聲與困難樣本,將導致已經被正確分類的樣本的權重呈指數減小,導致算法性能降低。
本文改進了AdaBoost算法權重的更新規則,在每次弱分類器的訓練過程中都計算樣本權重平均值m和標準差σ,當樣本權重與權重平均值m的偏差大于3σ時,則該樣本權重不再增大。具體算法如下:
(1)給定訓練樣本(x1,y1),(x2,y2),…,(xn,yn),其中yi=1代表免耕地(正樣本),yi=-1代表非免耕地(負樣本);確定弱分類器g(x,l,p,θ)及迭代次數T(即弱分類器的個數)。
(2)初始化樣本權值
(5)
式中n——訓練樣本總數
(3)fort=1∶T。①調用弱分類器算法,計算加權分類誤差,找到最小分類誤差對應的弱分類器,記錄l、p、θ分別為lt、pt、θt。此最佳弱分類器的分類誤差εt可表示為
(6)
式中ωi——第i個樣本權重
I——示性函數
②令gt(x)=g(x,lt,pt,θt),其中lt、pt、θt為εt的最小化因子。
③令
(7)
計算當前輪樣本權重平均值m和標準差σ
(8)
④更新樣本權重
(9)
(4)得到最終的強分類器
(10)
式中 sign——符號函數
免耕播種機采集到圖像信息由第1節改進的AdaBoost算法進行自動分類后,如果確定為免耕播種作業環境,系統會對其進行秸稈覆蓋率檢測計算[18]。
由于單目攝像頭在采集信息時會受到環境的污染,并且采集到的圖像會存在圖像畸變的問題,因此本文在進行秸稈覆蓋率計算之前會先對圖像進行預處理[19]。
2.1.1降噪處理
由于攝像頭本身的原因,環境中的光、灰塵、噪聲都會影響免耕播種機采集圖像的質量,從而影響最終的計算結果。因此本文通過圖像降噪的方式解決圖像上的噪聲問題[20]。
常見的濾波方式有均值濾波、中值濾波、高斯濾波等。
圖2a是單目攝像頭采集到的免耕播種機作業環境。圖2b是將圖2a經過均值濾波處理后的圖像,該圖像與原圖像相比較,濾除了大部分的噪聲,但同時使圖像中秸稈部分的細節信息變得模糊。圖2c是經過中值濾波處理后的圖像,相比較均值濾波較好地保存了細節的信息,但也使局部的圖像發生了畸變,不利于后期處理。圖2d是高斯濾波后的圖像,經高斯濾波處理后,降低了圖像噪聲,保存了圖像的細節特征,更真實地反映了免耕播種機的作業環境信息。所以本文選擇高斯濾波進行圖像的降噪處理。
2.1.2目標與背景區域分離
彩色向量空間距離目標區分的原理是在RGB顏色空間中分別把圖像的R、G、B3通道的顏色特征統計出來,然后對其進行處理,通過空間距離法來區分目標與背景。當圖像的目標背景區分出來之后再將圖像進行灰度處理。
提高免耕播種機秸稈覆蓋率識別準確率的有效且簡單的方法可以通過距離化使其目標與背景區域分離出來,圖3b是將經過高斯濾波后的圖像(圖3a)進行彩色空間距離化后的圖像,圖3c是將圖3a進行灰度化,圖3d是將圖3b進行灰度化,兩者相比,圖3d中秸稈與土地的差異更大,更利于后期的計算處理。因此選擇彩色空間距離化后再對其進行灰度化。
2.1.3圖像校正
由于采用單目攝像頭進行拍攝,目標會在圖像中呈現近大遠小的透視畸變,嚴重影響了計算秸稈覆蓋率的準確性。因此,文中采用逆向映射與最鄰近插值法相結合的方式對圖像進行處理[10]。
2.1.3.1逆向映射模型建立
畸變圖像到校正圖像的過程就是前向映射。而逆向映射是相對前向映射而言的
(11)
式(11)中[x,y]是畸變圖像的像素坐標值,[X,Y]表示校正后的圖像的像素坐標值。U、V、W、Y為像素坐標之間的函數關系。其中U、V為前向映射關系,W、Y為逆向映射關系。
用雙線性幾何畸變的方法進行坐標變換。變換公式為
(12)
式(12)中,a、b、c、d、e、f、g、h是前向映射中的待定系數。因此可推得逆向映射關系式為
(13)
在攝像頭采集的畸變圖像上標注4個點,如圖4所示。由于攝像頭的角度和高度固定,所以拍攝的地表圖像的范圍固定,近大遠小的比例也相同。在田間每列秸稈是沿直線種植的,因此在圖像中沿著兩列秸稈做了2條輔助縱線,可知每行的2個秸稈在實際中是在一條水平線上,因此沿著2行秸稈,做了2條輔助橫線。
如圖5所示,這4個點中,(x1,y1)點與(x3,y3)點在一條縱線上,(x1,y1)點與(x2,y2)點在一條橫線上,但由于攝像頭畸變的影響,坐標點在拍攝圖像中圍成了一個近似梯形的四邊形,然后計算(x1,y1)與(x2,y2)之間的像素數L
(14)
式中 round——取整函數
將A、B、C、D4個點代入式(14)中可以求得校正后的A′、B′、C′、D′ 4個頂點坐標,將其代入逆向映射關系式中,便得到圖像坐標點對應的畸變圖像的坐標點,如圖6所示。
2.1.3.2最鄰近插值法
攝像頭采集到的圖像上的像素點(x,y)經過逆向映射模型處理后變為(X,Y),但當(X,Y)不為整數時,無法得到該像素點的灰度,因此采用最鄰近插值法進行彌補[17-19]。最鄰近插值法的工作量小但卻可以最大限度地保留圖像中的灰度信息。經過最鄰近插值法處理后的圖像如圖7所示。
從圖7中可以看出,經過圖形校正后,很好地解決了攝像機拍攝免耕地引起的近大遠小的問題,有利于提高秸稈覆蓋率計算的準確性。
采用Otsu算法計算秸稈覆蓋率,但經過最鄰近插值后的圖像會出現2塊黑色區域,這將會影響Otsu算法的計算。因此在計算前需要先將其進行圖像裁剪。然后通過Otsu算法求得最適閾值,并通過該值對圖像進行二值化處理,分離秸稈和土地,秸稈覆蓋率計算公式為
(15)
式中K——秸稈覆蓋率,%
N——二值化處理后統計值為1的點數
M——圖像中總的點數
通過裁剪及Otsu算法處理后的圖像如圖8所示。
人工測量法采用以覆蓋秸稈的面積占土地總面積的百分比作為秸稈覆蓋率。圖9為人工認定秸稈面積圖,圖中的紅線包圍區域是人工判定的秸稈覆蓋區域,通過在田間計算其實際面積為S,土地總面積為A,計算得出人工秸稈覆蓋率Z為[20-25]
(16)
通過攝像頭拍攝田間的圖像,然后取不同覆蓋率區間的圖像20幅對其進行算法處理,并與人工測量的秸稈覆蓋率結果進行對比。
選取的20幅圖像中秸稈覆蓋率區間在20%~30%、30%~50%、50%~60%、60%~70%、70%~90%各4幅,對2種方式的測量值繪制曲線(圖10),可得出本文算法在秸稈覆蓋率為30%~80%時,測量更為精準,誤差小于5%。
(1)利用攝像頭采集圖像信息,然后對采集到的圖像通過AdaBoost算法進行分類,判斷免耕播種機的工作環境是否屬于免耕地,該方法有效地解決了免耕播種機的工作環境識別問題。
(2)在符合免耕作業的條件下,通過濾波對其進行降噪,通過彩色空間距離化、灰度化使圖像中秸稈與土地分離,采用逆向映射模型與最鄰近插值法相結合的方式,解決了圖像中秸稈近大遠小的問題。
(3)采用Otsu算法計算出秸稈覆蓋率,并通過實驗驗證了算法的有效性,解決了秸稈覆蓋率計算的問題,在秸稈覆蓋率為30%~80%時,檢測誤差小于5%。