杨 光 张洪熙 方 涛 张彩丽
(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%。