农田秸秆覆盖率检测方法与试验*
2021-03-30刘现悦刘卉王侨高娜娜梅鹤波王培
刘现悦,刘卉,王侨,高娜娜,梅鹤波,王培
(1. 首都师范大学信息工程学院,北京市,100048; 2. 北京农业智能装备工程技术研究中心,北京市,100097; 3. 北京农业信息技术研究中心,北京市,100097)
0 引言
秸秆覆盖还田是世界公认的经济且可持续化的秸秆资源利用方式[1],它可以减少地表径流,增加雨水渗入,抑制水分蒸发;同时秸秆腐烂后,还可以增加土壤中的生物活性,有机质和腐蚀质,培肥地力,对改善土壤的结构、增加土壤中的有益微生物群有着重要的作用,对土壤改良和大气环境保护均具有积极意义[2-4]。因此,秸秆覆盖率是衡量保护性耕作技术的重要指标。近年来,国家大力倡导田间秸秆还田[5-6]。计算机视觉识别法主要是通过处理田间秸秆覆盖图像计算图像中秸秆比例。相比传统的人工估量法,图像法的准确率和检测效率更高。
目前,一些学者在利用计算机视觉识别田间秸秆覆盖率方面取得了一定的研究进展。李洪文等[7]采用人工神经网络与纹理特征相结合的方法进行田间秸秆覆盖率的检测,检测识别率达90%,但该方法对硬件的要求较高;于国庆等[8]提出了一种基于向量机算法的秸秆覆盖率图像识别方法;刘媛媛等[9]提出一种多阈值分割方法进行田间秸秆覆盖率检测,但对图像质量要求较高;苏艳波等采用了自动阈值分割算法,通过对灰度图像对数变换后采用迭代法进行自动阈值选取,实现对地表秸秆覆盖率的检测,但该方法不能很好处理无秸秆覆盖图片且计算结果容易受光照影响。王丽丽等[10]采用Sauvola算法提取秸秆区域细节,与OTSU(最大类间方差法)阈值分割法相结合来检测秸秆覆盖率,但是该方法存在一定的秸秆中空现象。综上所述,一般阈值分割算法在秸秆极少或无秸秆覆盖的情况下测算结果较差,OTSU算法虽然在有秸秆覆盖的情况下具有较好的检测精度,但易受光照影响。
本文提出依据图像的行平均灰度标准差将秸秆图片划分为有秸秆和无秸秆两类;针对有秸秆图片,对其进行分块,分别对每一个子块进行OTSU阈值分割,对分割后的图像进行面积测算,最终获得秸秆覆盖率。
1 秸秆覆盖率检测算法
1.1 算法整体设计
为了保证对无秸秆图像的正确识别,同时减少光照对测量结果的影响,本文提出如下秸秆覆盖率检测算法:首先计算目标图像的行平均灰度标准差,并依据有、无秸秆图像的行平均灰度标准差分布范围的差异性来设定分类阈值,从而区分有秸秆和无秸秆图像;然后针对有秸秆的图像,采取基于图像分块的OTSU阈值分割方法来完成秸秆覆盖率的检测。算法设计流程如图1所示。
图1 检测算法流程图Fig. 1 Flow chart of detection algorithm
1.2 图像有无秸秆的识别方法
由于农田环境下图像中秸秆与土壤的灰度有区别,因此图像的行平均灰度标准偏差可以反映图像行包含的信息量。当图像为纯色图时,图像只包含一个灰度值,此时行灰度平均标准差最小,图像的信息量为0;当图像的纵向灰度值像素分布不均匀且灰度范围越大时,图像的行灰度平均标准差越大。本文针对被检测的目标图像,首先基于行平均灰度标准差判断图像有无秸秆。
对于灰度图像I,计算每一行的平均灰度标准差,计算公式如式(1)~式(3)所示。
(1)
(2)
(3)
式中:I[i,j]——图像I在(i,j)点的灰度值;
D——图片行平均灰度Ai的标准偏差;
W——图像宽度;
H——图像高度。
图像的秸秆目标越多,图像纵向包含的像素灰度越丰富,图像的行平均灰度标准差值D越大。在实际田间图像中,由于光照或秸秆复杂度等原因,平均灰度标准差值D是变化的,可通过设定阈值方式适应图像差异,实现对图像中是否含有秸秆进行判断。
1.3 秸秆检测率算法
1.3.1 OTSU阈值分割算法
在数字处理中,图像分割是关键的一步。当图像质量较好,光照均匀的时候只需用全局阈值的方法就能很完美地完成图像分割任务;当整个图像的物体和背景的灰度分布十分明显时,可以使用单个阈值进行分割[11-13]。灰度阈值的处理效果与分割直方图模式的谷峰宽度和深度直接相关。影响峰谷性质的关键因素[14]包括峰间的可分性、图像噪声、目标和背景的相对大小、以及光源。
OTSU算法使用的聚类思想,按照图像的灰度特征将图像分为背景和前景两个部分,使得两个部分之间的灰度值差异最大,同一部分的灰度差异最小。通过计算方差来寻找一个合适的灰度级别η*来划分。OTSU算法步骤如下。
1) 输入包含L个不同灰度级的子块图像I(M,N)。使用Pi,i=0,1,2,…L-1,表示该直方图的各个分量,并计算累计分布P1(k)。
(4)
(5)
式中:P1——灰度值在[0,k]范围内的概率;
P2——灰度值在[k+1,L-1]范围的概率。
(6)
(7)
式中:m1——灰度值在[0,k]范围内的平均灰度值;
mG——全局灰度均值。
(8)
(9)
当阈值为k时,η*取得最大值,使前景与背景的类间方差最大,能够准确区分出图像中的土壤与秸秆。
1.3.2 基于图像分块的可变阈值分割检测算法
OTSU方法在类间方差最大的情况下是最佳的,但容易受噪声和光照的影响。在田间采集图像时经常遇到光照不均匀的现象或秸秆与土壤的颜色相近的情况,如果用全局阈值的方法进行秸秆覆盖率的测量会出现较大的误差。
本文提出了采用图像分块方法,在图像分块基础上采用可变阈值来补偿光照和反射的不均匀性,在高灰度区域用高阈值分割,在低灰度区域用低阈值进行分割。图像分块步骤如下。
1) 将秸秆图片Im进行灰度处理得到灰度图像Im_gray。
2) 将大小为800像素×600像素大小的灰度图像Im_gray分割为25个160像素×120像素大小的子块I_grayi,其中i表示子块的序号。
3) 分别对每个子块I_grayi进行OTSU阈值分割并进行去噪处理和孔洞填充,得到分块后的阈值分割图像。
4) 将分块后的子块重新拼接组成完整的目标二值图像I_tag。
5) 通过统计二值图像I_tag中白色像素(黑色部分为土壤,白色部分为秸秆)所占比例计算秸秆覆盖率。
将图像分块处理后能够有效减少OTSU算法因光照不均匀造成的土壤和秸秆错分现象。
2 田间试验
2.1 数据采集
本文田间试验场地为北京市小汤山国家精准农业示范基地。在收割机完成小麦和玉米收获后,进行秸秆图像采集。图像采集设备选用了CMOS传感器类型高清红外夜视相机,型号为1080P的星缘数码摄像机,最低光照为0.051 lux,图像采集分辨率为800像素×600像素。该摄像机安装在拖拉机的前侧,拍摄农田收割后的地面秸秆图像,安装方式如图2所示。
图2 相机安装位置图Fig. 2 Camera installation location
试验中共采集三组图像,共计500张。第一组图像:小麦和玉米秸秆均匀分布图像, 采用固定阈值分割方法, 通过选取最适合的分割值计算秸秆覆盖率。第二组图像:60 cm×80 cm试验小区秸秆覆盖图像,将秸秆长度和宽度易于测量的玉米秸秆摆放在小区内,并在自然光照的条件下采集图像;通过测量小区中秸秆长度和宽度,人工计算覆盖率。第三组图像:采集无秸秆或秸秆覆盖极少的图像, 采用目测法估算覆盖率。
2.2 数据处理
根据1.3小节秸秆覆盖率检测算法流程,首先将田间试验的图像进行灰度化,然后分别计算每张图像的行平均灰度标准差,以检测图像中是否含有秸秆。接下来再采用图像分块算法计算秸秆覆盖率。
2.2.1 计算行平均灰度标准差
为了区分图像中有无秸秆,分别计算每张图像的行平均灰度标准差。
如图3和图4所示,无秸秆图的行平均灰度值分布在107~125之间,行平均灰度标准差为2.69,有秸秆图的行平均灰度值范围为90~165,行平均灰度标准差为17.91。
(a) 无秸秆图D=2.69
(b) 无秸秆行平均灰度直方图
将人工检测法得到的秸秆覆盖率与图像的行平均灰度标准差值进行对比,得到判断是否存在秸秆的最佳阈值Dthresh。如图5所示,根据数据分析,本次试验设置行平均灰度标准差阈值Dthresh=10,可以区分出图像是否存在秸秆。当D>Dthresh时,图中存在秸秆,此时可以进行下一步的秸秆覆盖率检测;当D≤Dthresh时,图中不存在秸秆,秸秆覆盖率视为0。
(a) 有秸秆图D=17.91
(b) 有秸秆行平均灰度直方图
图5 秸秆覆盖率与行平均灰度标准差图Fig. 5 Straw coverage and row average gray standard deviation
2.2.2 图像分块处理
根据前述的基于图像分块的可变阈值分割检测算法步骤,对试验中采集的图像数据进行处理。如图6所示,将采集到的分辨率为600像素×800像素的图像均匀分割为25个子块。土壤与秸秆的类间方差越大说明构成图像的土壤与秸秆两部分的差别越大。分别计算25个子块的最大类间方差,对子块进行阈值分割,最后将阈值分割后的子块进行拼接,图中白色部分为秸秆。
将分块图像与未分块的OTSU阈值分割图像比较,未分块图像的中心区域亮度更高,对整幅图像进行阈值分割时阈值较大,分割后的图像中心部分的误差较大;而分块图像的每个子块的光照均匀,能够减少因图像光照不均匀造成的误差。
(a) 原图(b) 分块后
(c) 不分块的OTSU阈值分割
(d) 分块后OTSU阈值分割
2.2.3 试验结果分析
对采集到的三组均匀分布、集中分布和无秸秆图像分别采用分块可变阈值测量法、不分块的OTSU法和对数变换自动取阈算法[11]进行秸秆覆盖率检测,处理结果如图7所示,表1为三种方法检测结果的误差对比。
(a) 第一组原图
(b) 第二组原图
(c) 第三组原图
(d) 第一组对数取阈法
(e) 第二组对数取阈法
(f) 第三组对数取阈法
(g) 第一组OTSU法
(h) 第二组OTSU法
(i) 第三组OTSU法
(j) 第一组分块法
(k) 第二组分块法
(l) 第三组分块法
从图7和表1可以观察到,对于第一组的秸秆均匀分布的情况,OTSU算法与对数变换自动取阈的方法受光照影响,易将凸起的土块识别为秸秆产生误差,而本文的分块可变阈值法能够减少背景区域的干扰,有效提取细碎秸秆,误差为5.51%。
表1 分类前三种不同检测方法结果对比Tab. 1 Comparison of the results of three different detection methods before classification
对于第二组的秸秆集中分布的情况,对数变换自动取阈法和分块法虽然可以将秸秆提取出来,但同时也将一部分亮度较高的土壤识别为秸秆,OTSU算法在集中分布的情况下误差最小。
对于第三组无秸秆或秸秆极少的情况,三种方法均易将高亮度土壤部分识别为秸秆,产生较大误差。
为了减少无秸秆图检测产生的误差,本文通过计算图像的行平均灰度标准差,将图像分为有秸秆覆盖和无秸秆覆盖两类,并将无秸秆或秸秆极少的图像的覆盖率视为0。
表2为采用行平均灰度标准差进行分类后的检测结果。由检测结果可知,进行图像分类能够很好地检测出不存在秸秆的情况,大大提高秸秆覆盖率检测的准确度。进行分类处理后,对于无秸秆或秸秆极少的情况,OTSU法的误差由原来的45.03%降低至1.41%, 分块法的误差由原来的36.45%降低至0.45%。
表2 分类后检测结果对比Tab. 2 Comparison of test results after classification
3 结论
本文提出了一种基于图像处理的农田秸秆覆盖率计算方法。首先通过计算行平均灰度标准差来判断图像中是否存在秸秆,以减少无秸秆时的覆盖率检测误差。然后采用图像分块法与OTSU阈值分割法相结合的分块可变阈值秸秆覆盖率检测方法,在一定程度上减少由于光照强度不均匀而产生检测误差。
针对秸秆均匀分布、秸秆集中分布、无秸秆覆盖三组图像,分布采用OTSU算法、对数变换自动取阈算法、分块可变阈值测量法(本文方法)三种方法进行秸秆覆盖率检测试验。试验结果表明,本文提出的检测算法在田间秸秆均匀分布时覆盖率检测误差为2.87%;在无秸秆或少秸秆存在时检测误差为0.45%;对于秸秆集中时,检测误差低于不分块的OTSU算法。在真实的农田环境下,田间所采集的秸秆分布图像大多为第一组图像所示的均匀分布情况,因此本文提出的基于图像行平均灰度标准差分类及图像分块可变阈值检测算法具有可行性,为田间秸秆覆盖率检测方法提供了优化的解决方案。