作物叶片病害识别系统

简介: 作物叶片病害识别系统

介绍

  • 由于植物疾病的检测在农业领域中起着重要作用,因为植物疾病是相当自然的现象。

  • 如果在这个领域不采取适当的护理措施,就会对植物产生严重影响,进而影响相关产品的质量、数量或产量。植物疾病会引起疾病的周期性爆发,导致大规模死亡。这些问题需要在初期解决,以挽救人们的生命和金钱。


  • 自动检测植物疾病是一个重要的研究课题,因为它可以在植物叶片上出现病征时在非常早期就监测到大面积的农作物,从而检测疾病的症状。


  • 农田业主和植物护理者(比如,在苗圃中)可以通过早期检测疾病获得很大的好处,以防止更糟糕的情况发生在他们的植物上,并让人类知道应该预先做什么来使其按照预期工作,以防止更糟糕的情况发生在他身上。


目的

  • 这使机器视觉能够提供基于图像的自动检验和过程控制。
  • 相比之下,视觉识别是劳动密集型的、不太准确的,只能在小范围内进行。该项目涉及使用Python设计的自我设计的图像处理算法和技术,以从叶片中分割出疾病,并使用机器学习的概念对植物叶片进行分类,以健康或感染状态。
  • 通过这种方法,植物疾病可以在初期阶段被识别出来,可以使用害虫和感染控制工具来解决害虫问题,同时最小化对人和环境的风险。


步骤

在初始步骤中,选择了所有叶样本的RGB图像。所提出系统的步骤

  • RGB图像采集;
  • 将输入图像从RGB格式转换为HSI格式;
  • 遮蔽绿色像素;
  • 去除遮蔽的绿色像素;
  • 分割组件;
  • 获取有用的片段;
  • 评估分类的特征参数;
  • 为疾病检测配置SVM。
  • 颜色转换:
    HSI(色调、饱和度、强度)颜色模型是一种流行的颜色模型,因为它基于人的感知。转换后,仅考虑HSI颜色空间的H(色调)分量,因为它为我们提供所需的信息。
  • 遮蔽绿色像素: 这是因为绿色像素代表叶片的健康区域。根据指定的阈值值遮蔽绿色像素。

分割:

通过将受感染部分与其他类似颜色的部分(如看起来像疾病的棕色叶子分支)分割出叶子的感染部分,这些部分在遮蔽图像中被考虑在内,并被过滤。所有进一步的图像处理都是在此阶段定义的感兴趣区域(ROI)上进行的。


分类:

从之前的结果中,我们分析和评估诸如叶片面积、叶片感染百分比、叶子周长等特征参数,以及所有叶片图像的SVM分类器。

安装

cd file

安装一些所需的pip包,这些包在requirements.txt文件中指定。

pip3 install -r requirements.txt
sudo python3 setup.py install


就是这样。您已准备好测试应用程序了。

数据集创建

在叶采样器目录中运行:

python3 leafdetectionALLsametype.py -i .

python3 leafdetectionALLmix.py -i .
leafdetectionALLsametype.py


原图

用于在一个相同类别的图像(例如所有图像都感染了)上运行,而leafdetectionALLmix.py 用于为叶子图像的两个类别(感染/健康)创建数据集。请注意:代码设置为仅运行在指定目录中存在的.jpg、.jpeg 和 .png 文件格式图像上。如果您希望,可以通过将其引入两个文件的第52行的条件语句中来添加更多文件格式支持。

检测结果图

#代码 运行

运行以下代码:

python3 GUIdriver.py

其中{浏览}用于选择分类器的输入图像文件。

该代码运行两个文件:

首先,main.py用于图像分割和特征提取。

其次,main.py调用classifier.py对输入图像中的叶子进行分类,以确定其是否“感染”或“健康”。

重要代码

# 企鹅1309399183
while True: 
  if  n == ord('y'or'Y'):
    
    fieldnames = ['fold num', 'imgid', 'feature1', 'feature2', 'feature3']
    
    print ('Appending to ' + str(filename)+ '...')
    
    
    try:
      log = pd.read_csv(filename)
      logfn = int(log.tail(1)['fold num'])
      foldnum = (logfn+1)%10
      L = [str(foldnum), imgid, str(Tarea), str(Infarea), str(perimeter)]
      my_df = pd.DataFrame([L])
      my_df.to_csv(filename, mode='a', index=False, header=False)     
      print ('\nFile ' + str(filename)+ ' updated!' )
        

    except IOError:
      if directory not in os.listdir():
        os.system('mkdir ' + directory)

      foldnum = 0
      L = [str(foldnum), imgid, str(Tarea), str(Infarea), str(perimeter)]

      my_df = pd.DataFrame([fieldnames, L])
      my_df.to_csv(filename, index=False, header=False)
      print ('\nFile ' + str(filename)+ ' updated!' )
      
    finally:
      import classifier
      endprogram()

      
  elif n == ord('n' or 'N') :
    print ('File not updated! \nSuccessfully terminated!')
    break
  
  else:
    print ('invalid input!')
    break
相关文章
|
6月前
光学雨量计在农业灌溉中的应用前景
光学雨量计在农业灌溉中的应用前景
光学雨量计在农业灌溉中的应用前景
|
6月前
|
机器学习/深度学习 监控 算法
基于脑电功率的疲劳驾驶检测研究_kaic
基于脑电功率的疲劳驾驶检测研究_kaic
|
6月前
|
机器学习/深度学习 并行计算 监控
基于深度学习的电动自行车头盔佩戴检测系统
基于深度学习的电动自行车头盔佩戴检测系统
|
6月前
|
传感器 机器学习/深度学习 算法
植保机器人作物识别与监测
植保机器人作物识别与监测
84 2
|
6月前
|
机器学习/深度学习 传感器 算法
植保机器人病虫害检测
植保机器人病虫害检测
116 2
|
6月前
|
机器人 数据挖掘 定位技术
植保机器人在植物授粉
植保机器人在植物授粉
66 4
|
编解码 运维
【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)
【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)
183 0
|
传感器 存储 算法
关于光学雨量计降雨测量误差
IFR02 是通过红外光扫描原理非接触式检测降雨量的传感器(光学雨量计)。使用独特的智能学习适应算法, 可在复杂光环境中使用,具有很强的抗外部干扰能力。采用渐变脉宽调制与动态比例校正技术有利保障数据稳定性与材料老化导光性能下降的不利影响。内建 4 种雨型,可识别冲刷型、密集型、离散型、附着型降雨并分别处理。具备结露测量功能、 数据存储功能,自动记录降雨总量。光耦隔离脉冲信号输出兼容翻斗雨量计、 RS232 或者 RS485 接口方便信息化集成。
关于光学雨量计降雨测量误差
|
传感器 数据采集 人工智能
人体行为足力特征分析及其应用研究_kaic
随着社会现代化的发展和科技的不断进步,我国航天事业蓬勃发展,与此同时产生了很多亟待解决的难题,康复医疗成为航天医学和康复领域的重要课题之一。载人航天实践证明,失重对航天员生理功能有很大影响,这不仅涉及到航天员完成任务的安全性,同时会制约航天员返回地球后的再适应能力。这种因失重产生的生理问题与老年人的生理机能退化有相似之处,老年人摔倒是社会迫切需要面对的另一重大社会问题。老年人群体的跌倒发生率最高且后果严重,这不仅会导致高龄老年人安全感的严重缺失,还会大量消耗医疗服务资源。因此,开展助老防摔装备的研究是目前医疗和社会领域的必要发展方向,它有助于减少老年人跌倒所带来的生命危险.。
|
机器学习/深度学习 传感器 算法
【裂缝识别】基于计算机视觉实现道路裂缝识别附matlab代码
【裂缝识别】基于计算机视觉实现道路裂缝识别附matlab代码