作物叶片病害识别系统

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

介绍

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

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


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


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


目的

  • 这使机器视觉能够提供基于图像的自动检验和过程控制。
  • 相比之下,视觉识别是劳动密集型的、不太准确的,只能在小范围内进行。该项目涉及使用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
相关文章
|
1月前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇
|
1月前
|
机器学习/深度学习 监控 算法
基于脑电功率的疲劳驾驶检测研究_kaic
基于脑电功率的疲劳驾驶检测研究_kaic
|
1月前
|
传感器 机器学习/深度学习 算法
植保机器人作物识别与监测
植保机器人作物识别与监测
54 2
|
11月前
|
编解码 运维
【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)
【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)
140 0
|
6月前
|
机器学习/深度学习 传感器 人工智能
在AI Earth农作物种植有没有对应的模型呢?例如:知道某个地块的坐标,可以获取农作物的分类、苗情、长势、成熟度、估产、农闲田、灾害、土壤墒情等这方面?
在AI Earth农作物种植有没有对应的模型呢?例如:知道某个地块的坐标,可以获取农作物的分类、苗情、长势、成熟度、估产、农闲田、灾害、土壤墒情等这方面?
48 1
|
传感器 数据采集 人工智能
人体行为足力特征分析及其应用研究_kaic
随着社会现代化的发展和科技的不断进步,我国航天事业蓬勃发展,与此同时产生了很多亟待解决的难题,康复医疗成为航天医学和康复领域的重要课题之一。载人航天实践证明,失重对航天员生理功能有很大影响,这不仅涉及到航天员完成任务的安全性,同时会制约航天员返回地球后的再适应能力。这种因失重产生的生理问题与老年人的生理机能退化有相似之处,老年人摔倒是社会迫切需要面对的另一重大社会问题。老年人群体的跌倒发生率最高且后果严重,这不仅会导致高龄老年人安全感的严重缺失,还会大量消耗医疗服务资源。因此,开展助老防摔装备的研究是目前医疗和社会领域的必要发展方向,它有助于减少老年人跌倒所带来的生命危险.。
|
机器学习/深度学习 人工智能
基于人工智能的【患肺癌病】风险预测与分析(下)
基于人工智能的【患肺癌病】风险预测与分析
108 0
|
人工智能 数据处理
基于人工智能的【患肺癌病】风险预测与分析(上)
基于人工智能的【患肺癌病】风险预测与分析
160 0
|
机器学习/深度学习 传感器 算法
【裂缝识别】基于计算机视觉实现道路裂缝识别附matlab代码
【裂缝识别】基于计算机视觉实现道路裂缝识别附matlab代码
|
算法 决策智能 计算机视觉
智慧交通day02-车流量检测实现07:匈牙利算法
有一种很特别的图,就做二分图,那什么是二分图呢?就是能分成两组,U,V。其中,U上的点不能相互连通,只能连去V中的点,同理,V中的点不能相互连通,只能连去U中的点。这样,就叫做二分图。
122 0