作物叶片病害识别系统

介绍

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

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

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

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

目的

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

步骤

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

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

分割:

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

分类:

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

安装

bash 复制代码
cd file

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

bash 复制代码
pip3 install -r requirements.txt
或

sudo python3 setup.py install

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

数据集创建

在叶采样器目录中运行:

bash 复制代码
python3 leafdetectionALLsametype.py -i .
或

python3 leafdetectionALLmix.py -i .
leafdetectionALLsametype.py


原图

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

检测结果图

#代码 运行

运行以下代码:

bash 复制代码
python3 GUIdriver.py 

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

该代码运行两个文件:

bash 复制代码
首先,main.py用于图像分割和特征提取。

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

重要代码

bash 复制代码
# 企鹅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
相关推荐
szxinmai主板定制专家33 分钟前
基于 ZYNQ ARM+FPGA+AI YOLOV4 的电网悬垂绝缘子缺陷检测系统的研究
arm开发·人工智能·嵌入式硬件·yolo·fpga开发
聚客AI1 小时前
🌈提示工程已过时?上下文工程从理论到实践的完整路线图
人工智能·llm·agent
C嘎嘎嵌入式开发1 小时前
(二) 机器学习之卷积神经网络
人工智能·机器学习·cnn
文心快码BaiduComate1 小时前
开工不累,双强护航:文心快码接入 DeepSeek-V3.2-Exp和 GLM-4.6,助你节后高效Coding
前端·人工智能·后端
AI小云1 小时前
【Python与AI基础】Python编程基础:函数与参数
人工智能·python
white-persist2 小时前
MCP协议深度解析:AI时代的通用连接器
网络·人工智能·windows·爬虫·python·自动化
新智元2 小时前
谷歌杀入诺奖神殿,两年三冠五得主!世界TOP3重现贝尔实验室神话
人工智能·openai
StarPrayers.2 小时前
卷积层(Convolutional Layer)学习笔记
人工智能·笔记·深度学习·学习·机器学习
skywalk81632 小时前
AutoCoder Nano 是一款轻量级的编码助手, 利用大型语言模型(LLMs)帮助开发者编写, 理解和修改代码。
人工智能