柳文祥 常清银
摘 要:棉花是新疆地区种植最为广泛的经济作物,利用MATLAB图像识别技术将相机采集到的患病棉花叶面经过图像灰度化、图像增强、图像二值化、图像形态学处理、图像填充、图像分割等预处理后用函数算法对患病区域面积进行特征参数识别。经试验,在病虫害发生期间,用MATLAB图像识别技术对患蚜虫病棉花叶面检测准确度为87.0%、枯萎病(黄萎病)81.0%、棉铃虫80.0%,说明在实际监测时存在误差,但准确率均达80.0%以上,可用于预防监测。
关键词:MATLAB图像识别;图像处理;函数;算法;特征参数
引言:棉花病虫害种类繁多,危害各不一样,根据发病时期大致可分为苗、蕾、花铃三个时期。棉花病虫害的早期识别和适时防治是棉花高产的重要环节。叶面识别技术的研究就是在机器视觉检测技术的基础上应用而生的,由于机器视觉系统可以快速获取大量信息并自动处理,容易同设计信息以及加工控制信息集成。利用计算机图像处理技术对农产品进行检测已是一种主流技术,在实现农作物叶面疾病识别的的自动化方面,图像识别技术有实时、无损、客观等优点。本文引入工程类 MATLAB软件,编写程序,通过其强大的图像处理技术,利用患病棉花叶面特征参数设计的函数算法有效识别患病棉花对棉农及时防控病虫害提供有效依据。
1.叶面图像采集
棉花叶面图像采集利用像素为4800万的摄像头拍摄得到格式为JPG图像,采集方法简单,没有较高的条件限制,便于该技术大范围推广使用。MATLAB中提供的imread()函数用于实现图像的读取操作,可读取JPG、TIF、GIF、HDF、XWD和 CUR等多种图像格式,经过MATLAB图片工具处理后形成可被函数读取的图片并形成形成与图片对相应得矩阵,由此得到后期可被程序处理的相应矩阵图片。
2.叶面图片预处理
2.1彩色图像灰度化处理
收集到的彩色图象(R红色、G绿色、B蓝色),三分量色彩基色多包多,软件处理信息量太大,为避免出现大量计算误差,我们对对叶面彩图进行灰度化处理以后只得到叶面图片亮度信息。所谓灰度化是将原图各像素点的三分量信息压缩成1个字节,具体采用加权平均法对三分量分配不同的权值,灰度图像是一种特殊的三分量彩图,其中一个像素点的变化范围为255种。灰度化处理后的灰度图片在常规256级灰度图下有256种不同灰度级颜色构成,其属性为一个由个体值数据构成的矩阵,类型为双精度矩阵,阈值是[0,1],类型为 unite8 类型,其阈值是[0,255],矩阵中的每个元素值均代表不同的亮度级和灰度级,当亮度值为0时表示黑色,当亮度值为1(或者 unite8 类型的255)时表示白色。计算公式為PGV=0.229×R+0.587×G+0.114×B,其中PGV为Pixel Gray Value像素灰度值缩写,R红色、G绿色、B蓝色为三分量基色。
上述算法的部分MATLAB代码如下:
clear all
im=imread('E:\柳文祥\蚜虫.jpg');
figure('NumberTitle','off','name','原图');
imshow(im);
[x,y,z]=size(im);
immax=ones(x,y);
for i=1:x
for j=1:y
immax(i,j)=max(im(i,j,:));
end
end
im(:,:,1)=immax;
im(:,:,2)=immax;
im(:,:,3)=immax;
figure('NumberTitle','off','name','最大值灰度图像');
imshow(im);
2.2图像增强
灰度化处理后的图像会出现部分像素孤立点,相当于信号传输中出现的噪声干扰,而图像增强就是消除信号干扰的滤波器,图像增强意味着有选择性的突出了程序需要判断的特征参量,提高了图像对比度,抑制了图片上存在的没用像素点,减少后期函数算法带来的不精确性。对比度的增加,使得所选图片区域色差更加明显,量的越亮,暗的越暗,其根本意义就是提取颜色分量最大值最小值,其公式为:(1)对比度 (Contrast)为: Con=∑ L-1 i=0 ∑ L-1 j=0 i-j kPij, 其中,δ (i,j) =|i-j|相邻像素间的灰度差;Pδ (i,j)相邻像素间的灰度差是δ的像素分布概率。
2.3图像二值化
二值化就是通过非零取一等不同的阀值化变换方法,使灰度图变换成黑白二值图像,从而将我们所需特征参量图像从复杂目标背景图片中提取出来。其操作过程即先由用户指定或通过算法生成一个阀值,如果图像中某图像素的灰度值小于该阀值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0。假设输入图像为f(x,y),输出图像为f'(x,y)则: 阀值θ即为比对临界点,小于他就是黑。次变换函数为阶跃函数,只需给出阀值点θ,经过阀值处理后,图像变成了一幅黑白二值图。
2.4图像形态学处理
由于噪声干扰影响,阈值化后所的图像边界达不到理想中的平滑程度,利用图像形态学处理的邻域运算形式的特殊形式:“结构元素”(Structure Element),根据像素与二值图像对应的关系进行逻辑运算,结果为输出图像相应像素。
给定二值图像I(x,y)和作为结构元素的二值模板T(i,j),服饰与膨胀运算公式为:
腐蚀:
膨胀:
腐蚀是消除边界点,使边界向内部收缩。可用来消除小和无意义的物体。膨胀将物体接触的所有背景点合并到该物体中,使边界向外部扩张。可用来填补物体中空洞。先腐蚀后膨胀称为开运算,确保不改变其面积情况下以此消除细小、纤细点分离平滑较大物体。先膨胀后腐蚀叫做闭运算,用来填充细小空洞、连接临近物体平滑较大物体边界且不改变其相应面积。连续的开运算和闭运算有效消除了图像上的明亮细节,填充了阈值化后的噪声空洞,是后期运算效果更加理想。
软件运行代码如下:
se=strel('disk',1);%定义方形结构元素
imeBW=imerode(bm,se);%图像腐蚀
figure('NumberTitle','off','name','图像腐蚀');
imshow(imeBW);
imdBW=imdilate(imeBW,se);%图像膨胀
figure('NumberTitle','off','name','图像膨胀');
imshow(imdBW);
2.5图像填充
通过局部填充得到物体与背景明显区分开的图像,填充边缘轮廓达到降低噪声的效果,采用BWfill=imfill(BW,holes)语句,使缺陷部位像素點呈白色。其算法操作分两部:首先由左至右逐行扫描图形,输出像素值为0则背景不做改变继续往后扫描直到遇到像素值为1的点为止。如果这个点的下一个点的像素值为0,表示扫描到了最左边的轮廓点,这时设置一个标记从这个点往后所有像素值为0的点全部置1,直到再次遇到像素值为1的点为止。此过程将这两个边界点之间的区域填充起来,然后接着扫描后面的点,当再次遇到像素值为1的点时重复以上步骤,这样一行行的扫描填充,整幅轮廓图就被填充起来了。
2.6图像分割
介于之前图像填充的不足之处,对图像又进行了图像分割,只把患病叶面部分分割出来。分割前对其进行反色处理,把背景和其他茎叶部分都剔除。过程为先把茎叶部分进行标记,然后去除标签部分,最终运用基于阈值的图像分割方法将棉花叶面患病部分分离出来。
利用可以反映图像内容特征的区域提取方法从颜色、纹理、形状等方面提取图像的基本特征。本次实验在其上对目标图像进行提取,只需区分不同区域性质,去掉标记的茎叶部分,只剩叶面患病区域和背景。此方法程序使用bwlabel函数,用于对二维二值图像中每个分离部分进行标注。选取的阈值为之前二值化图像得出的阈值结果为0.37,这时将叶面患病部分标记出来,便可对选中部分进行分割。
3.实验结果
仿真实验在2.5GHz,RAM为8GB的计算机上进行,采用MATLAB2018a软件编写代码。部分样本图像经处理后的病虫害原始图像和特征分割图像结果如图1所示。
4.总结
基于MATLAB软件的图像处理,调用函数方便,程序设计高效。首先通过图像预处理去除无用信息,接着将Hough变换算法降维进行叶面受损区域的定位,最后搜索定位,求出受损区域坐标,根据反映图像特征与样本患病叶面程序对比得出棉花叶面患病名称,用MATLAB图像识别技术对患蚜虫病叶面监测准确率为87.0%、枯萎病(黄萎病)81.0%、棉铃虫80.0%,说明在实际监测中存在误差,但准确率均达80.0%以上。
参考文献:
[1]赖特.基于模板匹配及人工神经网络算法的图像识别应用——MATLAB实现机动车牌号码辨识[J].智能建筑与智慧城市,2017(11):45-48+52.
[2]朱玥凝.基于Matlab图像识别的交通信号灯智能控制[J].信息通信,2016(11):94-95.
[3]王蔚扬,丁嘉月,汪鹏洪,卢正勇.基于MATLAB的靶纸图像识别研究[J].计算机时代,2016(11):17-20+24.
[4]丁功瀛,徐大卫.MATLAB图像识别技术在彩浆薄层沥青路面油污评价中的应用[J].大连交通大学学报,2016,37(02):73-76.