基于图像处理和支持向量机的粉碎性秸秆覆盖率的图像识别方法研究

2018-12-07 07:15于国庆郝若帆马洪涛吴赛敏陈梦雅
河南农业科学 2018年11期
关键词:覆盖率灰度秸秆

于国庆,郝若帆,马洪涛,吴赛敏,陈梦雅

(河北科技大学 信息科学与工程学院,河北 石家庄 050018)

秸秆覆盖率是检测秸秆还田效果的最重要指标。目前,其检测方法主要分为传统人工法和图像处理法。传统人工法主要是人工拉绳法、目测法等,效率极低、耗时耗力。图像处理法主要是对通过技术手段获得的田间秸秆图像进行分析处理,得到秸秆轮廓等参数,计算出秸秆覆盖率。目前,图像处理法在对秸秆覆盖率的识别研究上取得了一些研究成果。李洪文等[1]利用BP神经网络对秸秆纹理熵值进行训练,检测秸秆覆盖率。结果表明,与传统测量方法相比,检测速度提升了50~120倍,但是前期工作量较大,需要训练大量的样本。苏艳坡等[2]基于自动取阈分割算法对完整秸秆进行了识别,但实际上田间秸秆覆盖大部分为粉碎性秸秆,且此方法受光照影响较大。

由于秸秆的颜色易受光照的影响且纹理性较差,对粉碎秸秆的检测存在准确率较低、效率低的问题, 基于此,采用基于灰度变换函数和支持向量机(即Support vector machine,简称为SVM)算法相结合的秸秆识别方法,首先对不同光照下的图像进行灰度变换处理,对图像灰度级进行调整,解决秸秆识别过程中易受光照影响的问题,然后用SVM算法进行图像识别,对粉碎后秸秆的图像进行训练,利用训练结果直接对其他秸秆图像进行预测,以解决对细碎秸秆的识别问题并提高粉碎秸秆覆盖率检测的准确率和效率,实现田间秸秆覆盖率的准确、快速检测。

1 材料和方法

1.1 图像采集

采集的图像均为秸秆还田机工作时机载摄像头定位拍摄的由具有差分定位、4G图传功能的车机传输到农业服务器平台上的田间秸秆覆盖地块(实际均为长2 m,宽1 m)图像。对定位点秸秆覆盖进行实际人工拉绳法测量,并从准备的30个地块图像中选取5个地块图像进行秸秆覆盖率检测,其中2个不同作业区地块图像如图1所示。

1.2 试验设备

图像采集系统由1辆工作中的秸秆还田机(雷沃1JHT系列)、1台像素为640×480的摄像头、1套带差分定位模块和4G传输模块的车机(由石家庄信翔电子有限公司生产)组成。

1.3 图像预处理

1.3.1 基于灰度均衡化的秸秆提取 由于图1a中土地与秸秆的灰度梯度差较明显,故采用基于灰度化原理的自定义灰度化法将图像中的秸秆与土地进行较明显的灰度化分离。将图像中所有像素点的 R、G、B三色素进行通道分离[3],再将R、G、B三通道的值各自相加,得到R总、G总、B总。对三通道像素进行自定义组合,即自定义灰度化,其公式如下。

a、b分别表示地块1、地块2

pic=xR总+yG总+zB总

(1)

1.3.2 图像灰度变换处理 由于田间不同时间、不同光照条件下采集到的图像受光照影响,灰度化后的图像中各光谱能量依然存在较大的差异,而实际操作需要对多张不同光照条件下的秸秆图片进行预测分类,为了使SVM算法的所有训练样本灰度级范围保持一致,利用MATLAB灰度变换函数对进行灰度均衡化后的图像做进一步的灰度级调整。调整函数如下。

pic=imadjust(pic1,[low_inhigh_in],[low_outhigh_out],gamma)

(2)

式中,pic1为输入图像;pic1中灰度值低于low_in的像素点在pic中灰度值被赋值为low_out,pic1中灰度值高于high_in的像素点变换到pic时其灰度值被赋值为high_out;参数gamma为灰度变换调整值。

1.4 SVM训练

1.4.1 SVM原理 为了识别图像中的秸秆,采用SVM算法对秸秆和土地进行识别检测。SVM算法[4-10]在线性不可分的情况下,通过某种事先选择的非线性映射(核函数)将输入变量映射到一个高维特征空间,在这个空间中构造最优分类超平面。

秸秆和土地间的分类问题属于非线性分类问题,利用SVM的核函数映射特性可以较圆满地解决这一问题。分类时,只需要对输入数据的内积运算(xi,yi)做线性运算,可省略在高维空间中繁琐的运算过程,在保证结果的同时避免了在原输入空间中进行非线性曲面分割计算。

SVM算法中常用到的核函数类型有以下几种:

(1)线性核函数:表达式为K(x,xi)=x·xi;

(2)多项式核函数:表达式为K(x,xi)=[(x·xi)+1]q;

(3)高斯径向基核函数(RBF核函数):表达式为K(x,xi)=exp(-γ‖x-xi‖2);

(4)线性Sigmoid核函数:表达式为K(x,xi)=tanh[ν(x·xi)+c]。

这4种核函数有各自的特点,根据输入的原始数据不同,选取不同的核函数进行映射到高维空间中使数据达到线性可分的状态。

1.4.2 SVM分类模型 对待分类图像进行同一灰度级内灰度变换处理,然后进行训练样本的提取,用于训练出样本模型model文件,用样本模型预测所有待分类图像,得到预测结果。训练及预测流程如图2所示。

图2 训练及预测流程

应用MATLAB数学工具箱,借助台湾大学林智仁教授等开发设计的一款名为LIBSVM的软件包,进行快速有效地SVM模式识别与回归。

首先,选取训练样本点train_data,并依次赋予正确的标签train_label,本试验将秸秆标记为1,将土地标记为-1。应用训练公式svmtrain进行分类训练[11],其公式如下。

model=svmtrain(train_label,train_data,′-s-t-c-g′)

(3)

式(3)中,-s指的是SVM类型,对秸秆和土地进行分类, 令参数s为0,代表C-SVC,即分类型SVM; -t指的是核函数类型;-c指的是C-SVC的参数C,-g指的是核函数中的参数γ。

将train_label和train_data带入训练函数svmtrain进行训练,将返回值model值存入文件保存。

1.4.3 SVM预测分类 对图像进行预测分类,将model文件导入MATLAB程序内,使用预测函数svmpredict进行预测分类。预测函数公式如下。

[predict_label,accuracy,decision_value]=svmpredict(test_label,test_data,model)

(4)

式(4)中,test_label为预测标签,可以赋值为1或-1,或者不填;test_data为预测数据点;model值为训练函数返回值;accuracy为预测结果相对于训练样本的准确率;decision_value用于函数回归,与分类无关。

1.5 秸秆覆盖率的计算

秸秆覆盖率的计算如果直接按照秸秆图像的像素点进行统计,与实际结果相比误差较大。为得到准确的秸秆覆盖率,利用灰度图像形态学原理对图像做进一步处理,去除噪声点,并将秸秆间空隙扩充。对土地上细小的残余秸秆作为椒盐噪声,利用一定形状尺寸的结构元素对二值化图像进行图像腐蚀处理[12]。然后,利用另一形状尺寸的结构元素对图像中余下的秸秆进行膨胀操作,缩小或去除秸秆间的间隙,获得准确的秸秆覆盖率。

1.5.1 形态学图像处理 膨胀和腐蚀变换是以集合的和与差运算为基础进行的复合形态变换或形态分析[13]。所有的形态学变换都可以由膨胀和腐蚀变换的各种复合运算来实现[14]。 针对秸秆和覆盖率的特性,用于腐蚀的结构元素选取形状为disk(圆盘),大小为3(半径),用于膨胀的结构元素选取形状为disk(圆盘),大小为10(半径)。

1.5.2 求取图像覆盖率 由于分类后的图像为二值图像,秸秆像素灰度值为0,土地像素灰度值为255。可得到土地的像素平均灰度值Ground_ave如下。

Ground_ave=255×Groundvalue/All

(5)

式中,Groundvalue为土地的像素个数。All为整个图像中的像素个数。则秸秆覆盖率StrawCov如下。

StrawCov=(1-Ground_ave/255)×100%

(6)

2 结果与分析

2.1 灰度变换处理结果及分析

首先对图像进行自定义灰度化,并根据灰度变换函数对灰度图像进行处理。为采用SVM进行秸秆和土地的分类做前期准备,并保证训练样本结果不受光照条件的影响。

对图像进行灰度均衡化,得到式(1)中最佳系数x=0.09、y=0.80、z=0.11。地块1灰度化结果如图3a所示。

a.地块1自定义灰度化结果;b.对地块1调整固定灰度范围的结果

通过对图像的参数变换及对图像的反复试验,得到式(2)中最优参数值low_in=0.3,high_in=0.9,low_out=0,high_out=0,gamma=1。对图3a进行自定义灰度化处理,调整固定灰度范围,结果如图3b所示,处理后的灰度图像灰度级被调整到固定范围内,避免了SVM算法进行训练时结果图像受光照影响,后续分类时可以直接调用训练文件,对灰度变换处理后的图像直接进行分类预测,大大提高了后续SVM算法的分类效率和分类正确率。

2.2 SVM分类结果及分析

试验通过对30张图像中的像素点进行选取,获得代表土地和秸秆两者不同的训练样本共207 649个,测试样本186 461个,进行训练过程中参数的选取和性能的提升。

利用K-CV法,交叉验证选择最佳参数C和γ,将部分训练集作为原始数据集,剩下的训练集模拟测试集,得到此组C和γ下训练集验证分类准确率,最终取使得训练集验证分类准确率最高的那组C和γ为最佳参数。结果如图4所示。最优惩罚因子C=0.25,γ=5.656 9。

将确定的参数c和g带入训练函数,此时需选取核函数的类型t,采用1.3.1中提到的4种核函数分别对经过灰度变换处理的图像进行SVM秸秆识别,结果如图5所示,其中土地用黑色像素点表示,秸秆用白色像素点表示。

图4 参数c和g的最优选择

图5 采用不同核函数的分类结果

表1为上述4种核函数在对图5进行分类时仿真结果中的正确分类像元数和训练函数输出值中的分类精度,可更直观明了地对比4种核函数的分类结果。

表1 4类核函数分类精度对比

通过对图5和表1进行分析得出,选用RBF核函数搭建的训练模型对秸秆图像的分类结果最理想,分类精度最高,所以在训练函数中选择参数t为2即RBF核函数对样本进行训练。其中,图5c为地块1的二值化最优结果。

对图像进行秸秆分类后,将结果用不同颜色可视化。采用式(3)将SVM训练后的model文件直接导入进行预测,可视化结果即图5c所示。

实际秸秆还田后,计算秸秆覆盖率需要识别多张秸秆图像。为提高检测效率,需训练大量数据,并将训练结果即model值保存并导入到工程目录中,对其他需要检测的图像直接进行预测,不需要一一训练,节省了大量的秸秆图像检测时间,提高了效率。

对地块2图像(图1b)进行灰度变换处理后不需要进行样本训练,直接用model文件进行预测,可视化结果如图6所示。

图6 地块2的可视化结果

由图5c和图6可以看出,用训练后的model文件对图像直接预测分类,避免了繁琐的训练过程,为后续秸秆图像的分类节省了大量的训练模型时间,且准确率高。

2.3 形态学图像处理结果及秸秆覆盖率检测结果对比分析

对图5c的二值化图像进行形态学图像处理后,结果如图7所示。可以看出,秸秆之间的缝隙一定程度上被填充,大面积土地中微小的秸秆残渣被作为图像噪声去除掉,使覆盖率计算结果更贴近实际值。

图7 形态学图像处理

对包括地块1和地块2的5个不同地块的秸秆图像进行灰度变换处理后,免去样本训练环节,直接利用试验得出的训练样本model文件进行预测。田间实际测量和本试验算法所得的秸秆覆盖率结果如表2所示,其中,误差率为本试验算法结果与田间实际测量结果之间的误差百分比。由表2可见,本试验算法得到的秸秆覆盖率和田间实际测量的秸秆覆盖率最大误差率为3.20%,最小误差率为1.00%。且试验统计的图像分类过程所需时间小于2 s。

表2 5个不同地块的秸秆覆盖率测定结果 %

3 结论与讨论

针对田间秸秆还田机作业后覆盖细碎秸秆的土地,本试验采用SVM算法和灰度变换处理对获取的粉碎后秸秆图像进行训练,利用训练结果直接对其他秸秆图像进行预测,检测秸秆覆盖率。该方法比原有的基于自动取阈分割算法的秸秆覆盖率检测系统对整体秸秆的识别[2]更具有实际意义。

田间试验结果表明,利用本算法检测的秸秆覆盖率误差率最低为1.00%,最高为3.20%。试验中,通过对图像进行灰度变换处理,避免了由于光照产生的光谱能量不同导致的试验误差,使训练结果可以应用于不同作业地区、不同光照条件下的秸秆识别,更符合秸秆还田覆盖率检测的实际要求。

应用SVM算法训练出的model文件可以直接对图像进行预测,免去了每次秸秆检测需要训练的繁琐过程,运算过程效率高、速度快。本试验对秸秆图像的检测时间小于2 s,是李洪文等[1]研究的基于人工神经网络的田间秸秆覆盖率系统运算速度[1]的2倍。

试验产生误差的原因,一方面可能是由于采集图像时摄像头角度倾斜,引起图像出现不同程度的失真现象,后期可以对图像进行尺度校正,改善由于拍摄角度引起的图像失真问题;另一方面,SVM训练时由于训练及预测函数中参数的选取存在误差,下一步应继续对SVM训练研究,消除SVM算法计算产生的误差结果;第三,不同地块不同光照条件下秸秆的光谱能量不同,后期将增加对不同光谱能量的秸秆进行采集,添加SVM算法训练样本的种类。

目前,采用本试验算法对秸秆覆盖率的检测结果已与符合国家农业秸秆还田的检测系统平台进行复核,检测结果达到要求。下一步将在单块地块的秸秆覆盖率检测基础上,对指定区域的大面积秸秆覆盖率进行检测和估算,以得到更加实际的效果。

猜你喜欢
覆盖率灰度秸秆
民政部等16部门:到2025年村级综合服务设施覆盖率超80%
采用改进导重法的拓扑结构灰度单元过滤技术
我国全面实施种业振兴行动 农作物良种覆盖率超过96%
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
推广秸秆还田 有效培肥土壤
Arduino小车巡线程序的灰度阈值优化方案
秸秆计划烧除 吉林打算这样干
电信800M与移动联通4G网络测试对比分析
新型环保吸声材料——菌丝体胶合秸秆
SONG OF SMOG AND FIRE