您的当前位置:首页基于MATLAB数字图像处理杂草识别

基于MATLAB数字图像处理杂草识别

2023-02-25 来源:飒榕旅游知识分享网


基于MATLAB数字图像处理杂草识别

基于数字图像处理的杂草识别

班级:信息5班

组员:李辉 李少杰 李港深 胡欣阳

学号:04141394 04141395 04141393 0414139 指导教师:蔡利梅

组员分工:

李辉:部分程序,查找资料 李少杰:实验报告,PPT,演讲 李港深:部分程序,实验报告 胡欣阳:部分程序,实验报告

摘 要

杂草同农田作物争夺阳光和养分,严重影响了农作物的生长。为了达到除草的目的,人们开始喷洒大量的除草剂来进行除草。可是却忽略了除草剂的不当使用给人、畜以及环境造成的危害。本文从实际应用出发,设计了一个基于数字图像处理的杂草图像特征提取及识别设计方案。运行在参考了前人研究成果的基础上,不断将算法改进,找出适合于MATLAB杂草识别的可行性方法。本文对杂草图像的处理和识别方法进行研究。采集来的图像经常会有模糊现象的发生,对模糊图像的恢复处理做了大量的研究试验,得出维纳滤波具有较好的恢复效果;绿色植物和土壤背景的分割试验中,提出了一种基于彩色图像的二值化方法,可以不经过彩色图像灰度化就能够直接把绿色植物与土壤背景分割开,和以往的分割方法相比处理速度快,分割效果好,更加满足实时性;杂草和作物的分割主要研究了行间杂草和作物的分割,参考国内外资料,并进行研究试验,表明运用位置特征识别法有很好的分割效果,寻找作物中心行采用了简单快速的像素位置直方图法,采用了区域生长,和其他方法相比减少了重复操作,节省了时间,满足实时处理的要求;分割后的图像为只含有杂草的二值图像,通常会有一些残余的叶片和颗粒的噪声,通过形态学滤波或中值滤波去除噪声。

1、研究目的及意义

杂草是生态系统中的一员,农田杂草是农业生态系统中的

一个组成部分,它直接或间接的影响着农业生产,给经济作物带来很大的危害。杂草不仅与农作物争夺阳光、水分、肥料、还与作物争夺生存空间,不经过及时的处理,会阻碍作物生长,导致作物产量的下降,产品质量受损,甚至妨碍农作物收获,增加生产费用[1]。据统计,目前世界上共有杂草近5万种,农田杂草8000多种,而危害主要粮食作物的约有250多种。在我国,杂草分布区域也十分广泛,据我国农业植保总站近年调查发现,我国农田杂草约1500多种,其中给农作物造成严重危害的杂草有17种;危害范围较广、危害较严重的主要杂草有31种;地域性杂草有24种;一般不对农作物造成较严重危害的次要杂草有183种[2]。为了减轻草害,人们投入了大量的人力与物力。统计表明,美国每年因为杂草在64种农作物中造成的损失达75亿美元,而每年用于化学除草的费用高达36亿美元,用于机械和其它除草的费用达26亿美元[3]。我国用在除草上的劳动量也高达20-30亿个劳动日,即便如此,我国草害造成的粮食损失平均达13.4%,年损失粮食产量约17500kt[4]。人们为了减轻杂草对农作物的危害以及造成的经济损失,经常采用的几种除草方法包括机械除草、化学除草、人力除草、静电除草,还有生物除草等。人力除草由于浪费人力,效率又低,现在很少被使用;机械除草虽然效率较高,对环境污染小,但需消耗大量的动力,造成土壤压实,对下茬作物的生长不利;静电除草能除掉部分杂草,但可能造成作物烧伤,甚至影响土壤结构,降低土壤的生产能力;生物除草是从分子生物学角度进行研究,利用动物、昆虫、病菌等方法防除某些杂草,但还没有真正应用于生产。目

前应用最广泛的除草方法是化学除草,化学除草是利用化学农药(除草剂)进行防除杂草的方法,其主要特点是高效、省工,尤其是可以免去繁重的田间除草劳动,解放田间的劳动力,正因为化学除草具有其他除草方法所不具备的优点而被广泛应用。但是,在人们大量的使用除草剂防治草害的同时,也产生了许多不良影响,如污染农副产品及破坏生态平衡。人们从化学除草所带来的负面影响,已深刻认识到单纯依赖化学防治和“地毯式”大量喷洒除草剂的错误做法[5]。因此,想到应该采取一些有利的措施,既能有效的消除草害,提高粮食作物的产量,又能保护好人们的生存环境,达到可持续发展的目的,这就使得科学工作者对杂草控制新方法的研究成为了必然。

针对这种情况,通过研究,我们利用图像处理技术来识别杂草并确定杂草的位置和类别,从而为作物田间精确喷洒除草剂的自动化作业提供理论与技术支持。

2、杂草识别的研究方法

主要有:颜色特征分析法、形状特征分析法、纹理特征分析

法、光谱分析法和位置特征分析法与区域生长法。

1.

颜色特征分析法

颜色特征分析法是用于杂草识别的重要方法。在大自然中,植物呈现绿色,土壤呈黄褐色,岩石和无生命的植物残渣呈淡黄色。根据植物和背景的颜色特征差异就可以将植物从复杂的土壤背景中分离出来。有些杂草的茎呈现褐色,根据杂草和作物的颜色差异能够将它们区分开。

2. 形状特征分析法

形状特征分析法是利用植物的叶片形状差异进行识别。基本形状特征包括面积、周长、长度和宽度等,根据这几个基状匹配函数来识别杂草种类,他们研究了3种草(筒麻、狐尾草和打碗花)和大豆苗在子叶生长期的形状。这种方法不受子叶的大小和方向的影响,但当叶子形状复杂和叶子数目较多时却无能为力。 3. 纹理特征分析法

纹理是由很多细小的单元构成,从整体上能反应某种规律性,其灰度分布表现出某种周期性。仔细观察,会发现植物的叶片有着不同的纹理。因而可以利用叶面的纹理信息来识别作物和杂草。用于特征提取的纹理特征为:共生矩阵、方向行灰度级能量、方向滤波掩模和

分形维数、局部极值等。

4. 光谱分析的识别方法

光谱分析方法是根据物体对光的反射特性的不同,利用杂草、农作物和土壤背景的反射光谱的不同进行分析,达到识别杂草的目的。植物在生长过程中,由于植物叶面组织结构的不同,对一定波长的太阳光吸收和反射也有所不同,因此可利用这种特性来区分杂草、作物和土壤背景。

5. 位置分布特征法

6. 区域生长法

区域生长法是指将成组的像素或区域发展成更大区域的过程。从

种子点的集合开始,从这些点的区域增长是通过将与每个种子点有相似属性像强度、灰度级、纹理颜色等的相邻像素合并到此区域。

3、课题研究的主要内容:

本课题以农作物为研究对象,以实现杂草的采集、处理、识别为目的,在总结前人研究成果的基础上,结合已有的杂草识别理论和方法,研究适合基于MATLAB数字图像处理的杂草实时处理与识别的方法,并在MATLAB平台上进行图像的采集、处理及识别测试。通过不同方法的对比实验,提高处理与识别速度,并为农田机器视觉的杂草识别提供良好的理论基础。 研究内容如下: 1. 2.

图像的采集;

杂草与背景分离的研究设计。分析颜色特征,然后依据颜

色特征将彩色图像转化成灰度图像;然后利用阈值分割中的迭代运算进行了分离试验; 3.

农作物与杂草分离的研究设计。利用农作物大部分杂草分

布于作物之间的特点,采取区域生长法分离农作物与杂草; 4.

得到的图像有明显的杂质,先将图像进行二值化,然后再

通过形态学滤波法滤除杂质,得到结果。

4、杂草图像特征提取及识别系统概述

实验系统的整体结构:

本实验系统实现了从杂草图像采集、处理、识别的一系列过程,通过软件接口与单片机等硬件相连,使得整个系统能够顺利运行。下

面是系统的组成结构图:

基于机器视觉的杂草图像特征提取图图像像采分集 割 系统整体结构框图

实验系统流程图:

图像识别

5.杂草与土壤背景实时分割的研究

1.图像分割概述:

图像分割是图像处理当中最重要的部分,也是一种基本的计算机视觉技术。它根据某种同一性把一整幅图像划分为若干子区域,每一区域对应于某一物体或物体的一部分。进行图像分割的最终目的是为了对景物或物体进行描述,而许多不同种类的图像或景物部分都可作为据以分割的分片,并且有许多不同的方法可从图像中提取这些部分。

图像分割分为灰度图像分割和彩色图像分割,它们的大部分算法在分割思想上是一致的,只是彩色图像要比灰度图像包含着更多的信息,而且具有多种彩色空间表达方式。尽管人们在图像分割方面做了许多研究工作,但由于没有通用的分割理论,现已提出的分割算法大都是针对具体问题的,并没有一种适合所有图像的通用分割算法。那么彩色图像分割算法的关键就在于利用丰富的彩色信息达到图像分割的目的。

本课题中的图像分割,主要是去除杂草图像中的土壤背景。为了将绿色植物与土壤有效的分割,需要对原始图像数据进行变换,从而得到最能反映分类本质的特征。对于彩色图像分割的问题,首先要选择好合适的方法,利用这个颜色特征将彩色图像转变成灰度图像,再确定阈值将灰度图像二值化。

2.阈值分割方法:

利用上述颜色特征组合将彩色图像转化成灰度图像,然后根据图像中要提取的杂草区与背景区在灰度特性上的差异把图像视为具有不同灰度级的区域组合,通过选取阈值将杂草区域从背景中分离出来。采用阈值法分割阈值的选取至关重要,如果阈值选得过高,则过多的目标点将被误分为背景,阈值选的过低,则目标点不能完全分离出.这将影响分割后二值图像

目标大小和形状,甚至使目标丢失。因此,本书中采用迭代法求取最佳阈值的分割算法,具体步骤如下:

1.求出图像中最大和最小灰度值S1和Sh,令初始阈值为:

2. 根据阈值Tk将灰度图像分成目标和背景两部分(第一次分割时Tk=T0),然后求出目标和背景两部分的平均灰度值S1和S2:

式中:S(i,j)为图像上(i,j)点的灰度值;N(i,j)为(i,j)

点的权重系数,一般来说N(i,j)=1或者0;

3. 求出新的阈值:

4. 如果Tk=Tk+1,则算法结束;否者k→k+1,转步骤2继续执行。 3.区域生长:

区域生长是指从图像的某个位置开始,使每块区域变大,直到被比较的像素与区域像素具有显著差异为止。具体实现时,在每个要分割的区域内确定一个种子点,判断种子像素周围邻域是否具有与种子像素相似的像素,若有,就将新的像素包含到区域内,并作为新的种子继续生长,直到没有满足条件的像素点时为止。

区域生长实现分割有下列三个关键技术,不同的算法主要区别在于这三点的不同。

1. 种子点的选取。通常选择待提取区域的具有代表性的点,可以是单个像素也可以是包括若干个像素的子区域,可根据具体问题利用先验知识来选择。

2. 生长准则的确定(相似性准则)。一般根据图像的特点,采用与种子点的距离度量(彩色、灰度、梯度等量之间的距离)。

3. 区域停止生长的条件。可以采用区域大小、迭代次数或区域饱和等条件。

4、形态学滤波:

数学形态学是由一组形态学的代数运算子组成的,它的基本运算有4个: 膨胀(或扩张)、腐蚀(或侵蚀)、开启和闭合,它们在二值图像和灰度图像中各有特点。基于这些基本运算还可推导和组合成各种数学形态学实用算法,用它们可以进行图像形状和结构的分析及处理,包括图像分割、特征抽取、边缘检测、 图像滤波、图像增强和恢复等。

滤波使用的几种简单对称结构元素(圆形、方形、菱形)如下图所示:

基本形态学变换: 1. 膨胀运算:

膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。一般意义的膨

胀概念定义为

2.腐蚀运算:

腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。一般意义的腐蚀概念定义为

3.开运算(先腐蚀后膨胀):

先腐蚀后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。

4.闭运算(先腐蚀后膨胀):

先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。

5、程序和结果: 原图

灰度化及阈值分割

Cao=double(imread('li.jpg')); % 读入图像

r=Cao(:,:,1);g=Cao(:,:,2);b=Cao(:,:,3);%分析颜色特征 Caogray=(2*g-r-b); %依据颜色特征将彩色图像转化为灰度图像

% Caogray=g;%求出图像大小 [x,y]=size(Caogray); I=double(Caogray); SII=I;

for i=1:x %实际图像灰度为0-255 for j=1:y

if(I(i,j)>180) I(i,j)=255; end

if(I(i,j)<100) I(i,j)=0; end end end

z0=max(max(Caogray));%求出图像最大灰度 z1=min(min(Caogray));%求出图像最小灰度 T=(z0+z1)/2; TT=0; S0=0;n0=0; S1=0;n1=0;

allow=0.2; %新旧阈值接近情况 d=abs(T-TT);

count=0;%记录计次循环

while(d>=allow)%迭代阈值最佳分割算法 count=count+1; for i=1:x for j=1:y

if(Caogray(i,j)>=T) S0=S0+Caogray(i,j); n0=n0+1; end

if(Caogray(i,j)Seg=zeros(x,y); for i=1:x for j=1:y

if(Caogray(i,j)>=T)

Seg(i,j)=1;%阈值分割图像 end end end for i=1:x for j=1:y

if(SI(i,j)==0) SII(i,j)=1; end

if(SI(i,j)==1) SII(i,j)=0; end end end

SI=1-Seg;figure,imshow(SII);

区域生长法分割杂草和作物

A0=imread('图片2.png');%读取图像 seed=[1,2];%选择起始位置 thresh=31;%相似性选择阈值 A=rgb2gray(A0);%灰度化

A=imadjust(A,[min(min(double(A)))/255,max(max(double(A)))/255],[

]);

A=double(A);%将图像灰度化 B=A;

[r,c]=size(B);%r为行数,c为列 n=r*c;%计算图像包含点的个数

pixel_seed=A(seed(1),seed(2));%原图起始点灰度值 q=[seed(1),seed(2)];%q用来装载起始位置 top=1;%循环判断flag

M=zeros(r,c);%建立一个与原图大小一样的矩阵 M(seed(1),seed(2))=1;%将起始点赋为1,其余为0 count=1;%计数器

while top~=0 %循环结束条件 r1=q(1,1);%起始点行位置 c1=q(1,2);%起始点列位置 p=A(r1,c1);%起始点灰度值 dge=0;

for i=-1:1%周围点循环判断 for j=-1:1

if r1+i<=r & r1+i>0 & c1+j<=c & c1+j>0%保证在点周围范围内

if abs(A(r1+i,c1+j)-p)<=thresh & M(r1+i,c1+j)~=1 top=top+1;%满足判定条件则top+1,top为多少,则q的行数有多少

q(top,:)=[r1+i,c1+j];%将满足判定条件的周围点位置赋予q,q记载了满足判定的每一外点

M(r1+i,c1+j)=1;%满足判定条件将M中相对应的点赋1

count=count+1;%统计满足条件的点个数,其实与top此时的值一样

B(r1+i,c1+j)=1;%满足判定条件将B中相对应点赋值1

end

if M(r1+i,c1+j)==0;%如果M中相对应的值为0,将dge赋值为1,也就是说这几个点不满足条件 dge=1; end else

dge=1;%在图像外将dge赋值为1 end end

end

%此时对周围几点判断完毕,在点在图像外或不满足判定条件则将dge赋为1,满足条件dge为0 if dge~=1

B(r1,c1)=A(seed(1),seed(2));%将原图起始位置赋予B end

if count>=n%如果满足判定条件的点个数大于等于n top=1; end

q=q(2:top,:); top=top-1; end

subplot(121),imshow(B,[]);

二值化及形态学滤波

Image1=im2double(imread('li3.png')); T=graythresh(Image1); BW=im2bw(Image1,T);

figure,imshow(BW),title('二值化图像');

SE=strel('square',3); Morph=imopen(BW,SE); Morph=imclose(Morph,SE);

figure,imshow(Morph),title('形态学滤波');

7.程序测试中的问题:

1. 第一部分的程序,在MATLAB中调试运行的时候,结果图像使

全黑色,经过检查,有一点的字打错了,然后就是像素点的值域选择有点小,调到180后比较理想。

2. 第二部分的程序,阈值的选取不是很合适,导致结果不是很理

想。

6、实验总结:

通过这次数字图像处理课程的设计,我们对我们所学习的知识有了更深层次的理解,包括其原理算法等,是对课堂所学的内容最好的巩固。熟悉和掌握MATLAB程序设计方法,通过查找资料(充分利用图书馆资料),提高了我们分析查找程序代码的中所出现的问题的能力。

在设计的过程中,需要组员讨论分析和解决所出现的问题,这都是对我们个人能力的考核和对团队协作能力的磨砺。通过这次设计,无论是个人能力,还是团队协作能力,都有了很大的提升

参考文献:

1.数字图像处理及MATLAB实现 主编:杨杰 副主编:黄朝兵 (电子工业出版社)

2.MATLAB图像/视频处理应用及实例 主编:杨高波 杜青松(电子工业出版社)

3.数字图像处理与分析 主编:扬帆等(北京航空航天大学出版社) 4.数字图像处理 主编:蔡利梅 王利娟 (中国矿业大学出版社)

因篇幅问题不能全部显示,请点此查看更多更全内容