基于STM32和OpenCV的垃圾分类系统设计

这篇具有很好参考价值的文章主要介绍了基于STM32和OpenCV的垃圾分类系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

收藏和点赞,您的关注是我创作的动力

概要

    本文首先分析了垃圾分类国内外研究现状,针对我国的垃圾分类情况,本文先采用OpenCV将载入的垃圾图像进行滤波,边缘化,找外接矩形等操作;再采用mobilenetv3_Small模型对716张垃圾图像进行训练,得到训练模型,同时利用Tensorboard可视化,展示训练过程;然后进行垃圾图像识别与分类;最后采用串口通信将垃圾图像识别的结果传输给STM32,在LCD液晶显示屏上显示结果,实现垃圾分类。
关键词:图像识别;STM32;垃圾分类;深度学习;OpenCV

一、课题研究主要内容

课题研究主要内容

  分析完国内外垃圾分类研究现状后,鉴于我国垃圾分类设备还不完善,本课题设计了一种垃圾分类系统,能实现垃圾图像的自动识别,分类。采用OpenCV图像处理功能提取图像的主要特征,缩小识别范围,实现图像的分割[19],再基于MobileNet V3模型实现图像识别与分类[20]。本课题研究的主要内容包括:
(1)基于OpenCV的图像处理算法
  采用OpenCV对图像进行分割,完成对载入图片的滤波和边缘检测,对图片进行二值化,完成外接矩形轮廓的寻找,最终在图片上分割出物体所在位置。
(2)卷积神经网络图像识别与分类
  运用MobileNetV3_Small模型进行垃圾识别、分类,将常见垃圾分为可回收垃圾、厨余垃圾、有害垃圾和其它垃圾四大类,利用Python和TensorFlow搭建实验环境[21],用MobileNetV3_Small预训练模型训练自己制作的数据集并保存,得到训练的准确率和损失值,最后完成图像的识别与分类[22]。
(3)垃圾分类硬件系统
  硬件系统采用STM32开发板,选用STM32F103ZET6作为主芯片,根据功能要求确定器件的选型,设计程序,用ST-LINK/V2调试器下载程序到开发板,实现计算机与开发板之间的数据通信,最终将图像分类结果展示在LCD显示屏上

二、系统总方案设计

2.1 系统总体方案确定及分析

2.1.1 系统总体方案概述

根据课题设计要求,在学习OpenCV基本操作方法和卷积神经网络基本知识后,采用OpenCV进行垃圾图像分割[23],将提供的图片特征提取出来,确定物体在图像中的区域;然后训练模型,用CNN卷积神经网络实现垃圾图像的识别与分类[24];最后将识别的结果传送给STM32,

2.1.2 系统总体框图设计

系统的具体组成主要包括OpenCV图像分割模块,CNN卷积神经网络图像识别模块,系统总体结构框图如下图2.1所示。
  stm32+opencv,python,毕业设计,stm32,opencv,分类
图2.1 系统总体结构框图

2.1.3 主芯片的选择

进行硬件系统设计前要考虑诸多因素,如设计成本,设计时间,设计项目的难易程度等,选择合适的芯片是至关重要的。经过性能,价格和功能对比,本课题硬件设计模块开发板用的是STM32F103ZET6芯片。
  STM32F103ZET6是一个基于ARM Cortex-M3内核的32位通用微控制器,它拥有256到512KB的闪存,还有高达72Hz的工作频率,它的3个12位模数转换器可以实现三倍采样和保持功能。

2.2 系统主要模块介绍

2.2.1 OpenCV垃圾图像分割

OpenCV是一个开源计算机视觉库,它是在VC++编译环境下运行的,可以实现物体识别和图像分割等功能。OpenCV分割垃圾图像包括以下几个步骤:加载图像、显示图像、处理图像[25]。加载图像即将图像数据从文件夹中加载进来,显示图像由namedWindow和imshow函数实现,在创建的窗口上显示加载进来的图片,处理图像就是运用一些基本算法完成对图像的转换,如色彩转换,形态学操作,阈值化操作和膨胀腐蚀操作等。

2.2.2 CNN卷积神经网络识别垃圾图像

一个卷积神经网络一般由5种结构组成,分别是输入层、卷积层、池化层、全连接层和Softmax层[26]。输入层是用来输入数据的,一般是图片的像素矩阵;卷积层在卷积神经网络中占据了重要地位,卷积层工作是先定义一个卷积核,一般为33或55的卷积核,用定义的卷积核提取原图像中的像素值,进行矩阵对应相乘在相加,得到卷积层输出,在卷积层的计算过程中每层的神经元都只会和上一层中的部分神经元相连;池化层用来提取图像的主要特征,池化有两种常见的形式,分别是最大池化和均值池化。最大池化就是在每个选定的区域内选取最大的数值来代替这片区域,最终得到一个全新的图像,而均值池化就是取区域里的平均值;全连接层则是起一个分类器的作用,使用激活函数,用梯度下降算法将参数优化,传入下一层,进行损失值计算,并将分类结果输出;softmax层是用来输出物体概率的,即将神经网络的输出转变为概率的输出,因此,softmax层所有输出的概率和为1,其计算公式如
2-1所示:
stm32+opencv,python,毕业设计,stm32,opencv,分类

卷积神经网络的出现解决了传统神经网络不能解决的问题,它的出现加深了神经网络层数,使深度学习由此展开。本课题就是基于深度学习的垃圾图像识别。

2.2.3 硬件系统简介

垃圾分类硬件系统采用了ALIENTEK精英STM32F103开发板,该开发板资源充分,小巧精致,设计灵活,接口和功能模块丰富,可以验证多个内部资源,选用了STM32F103ZET6芯片。在Keil中设计程序,将垃圾分为四大类,连接开发板与计算机,用STLINK/V2调试器将仿真成功的程序下载到开发板,进行硬件调试,将CNN图像识别的结果发送给计算机,收到对应的指令,显示屏就能显示出相应的垃圾分类

三、系统实现

3.2 垃圾图像滤波

图像滤波对目标图像噪声进行去除,是图像处理的重要部分,在图像预处理方面应用广泛,图像滤波的好坏决定着后续处理的结果好坏。由于收集的垃圾图像并不是完全光滑的,垃圾周围或多或少都会出现杂物,在进行垃圾分割前要先滤波,去除周围的噪声,使图像变得平滑。本文使用的是线性领域滤波中的高斯滤波。
  高斯滤波器的本质是一个低通滤波器,它可以根据高斯函数的形状来选择权值,通过对整个图像的像素值加权平均来实现滤除噪声的功能,被称为最有用的滤波器。如图3.4所示为玻璃瓶的高斯滤波程序,滤波前后玻璃瓶的对
比如图3.5、3.6所示。
stm32+opencv,python,毕业设计,stm32,opencv,分类

图3.4 高斯滤波算法

stm32+opencv,python,毕业设计,stm32,opencv,分类

图3.5 图像滤波前
stm32+opencv,python,毕业设计,stm32,opencv,分类

图3.6 图像滤波后
  由图3.5和图3.6的对比分析得出,使用高斯滤波后,图像的对比度降低了,原图中玻璃瓶贴纸的像素被模糊化了,贴纸上的特征,颜色被弱化,一些不相关的的噪声信号被成功滤去了,但依旧保留了图像的轮廓和边缘。

3.3 垃圾边缘检测

要想将垃圾从图像中分割出来,就要先找到图像的边缘,确定分割范围。边缘检测是用来检测图像边缘部分的。计算一幅图像的微分,得到的dy大小就表示图像边缘的强弱。在边缘检测时,滤波模板应设置为奇数,这样卷积出来的结果就能放在中间,如果滤波模板为偶数,那么结果就会出现0.5的偏差,无法放在正中间。因此,本设计中模板设为3。边缘检测是基于边界进行图像分割的基础,图像分割的依据就是边缘,常用的边缘检测算子有Canny算子,Sobel算子和Laplacian算子等。
  本文采用的是Sobel边缘检测。先在垃圾图像的x,y两个方向上分别求导,单独显示x,y两个方向上的图,再利用图像加算法合成一张图,便于后续观察。如图3.9所示,采用Sobel边缘检测算法后,图像将易拉罐的边缘和突出地方用线条表明出来,减少了图像的内容,提取了图像的重要轮廓特征,便捷了之后图像的分类匹配。如下图3.7所示为Sobel边缘检测的程序,图3.8和3.9分别是边缘检测前后的图像。

stm32+opencv,python,毕业设计,stm32,opencv,分类

图3.7 Sobel边缘检测算法
stm32+opencv,python,毕业设计,stm32,opencv,分类

图3.8 Sobel边缘检测前
stm32+opencv,python,毕业设计,stm32,opencv,分类

图3.9 Sobel边缘检测后
  Sobel边缘检测时有两个模板,一个用于水平方向,一个用于垂直方向,先在两个领域各自进行加权平均,再进行一阶微分处理,可以得到想,x,y两个方向的边缘检测图,图3.9是使用图片加算法得到的边缘检测合成图。

硬件设计实物图

stm32+opencv,python,毕业设计,stm32,opencv,分类
stm32+opencv,python,毕业设计,stm32,opencv,分类

主要程序

硬件实物图反面
附录B:主要程序清单
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "w25qxx.h"
#include "ff.h"
#include "exfuns.h"
#include "text.h"
int main(void)
{
u16 key;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
usmart_dev.init(72);
LED_Init();
KEY_Init();
LCD_Init();
W25QXX_Init();
my_mem_init(SRAMIN);
exfuns_init();
f_mount(fs[0],"0:",1);
f_mount(fs[1],"1:",1);
while(font_init())
{
LCD_Clear(WHITE);
   POINT_COLOR=RED;LCD_ShowString(30,50,200,16,16, "ELITE STM32F103 ^_^");
while(SD_Init())
  {LCD_ShowString(30,70,200,16,16,"SD Card Failed!");
delay_ms(200);


 
LCD_Fill(30,70,200+30,70+16,WHITE);
delay_ms(200);
  }LCD_ShowString(30,70,200,16,16,"SD Card OK");LCD_ShowString(30,90,200,16,16,"Font Updating...");
LCD_ShowString(30,110,200,16,16,"Font Update Success! ");
delay_ms(1500);
LCD_Clear(WHITE);
}
POINT_COLOR=RED;
Show_Str(30,50,200,16,"欢迎来到智能垃圾分类",16,0);
Show_Str(30,70,200,16,"测试开始!”,16,0);
Show_Str(30,90,200,16,"南京工程学院”,16,0);
Show_Str(30,110,200,16,"2021年5月20日",16,0);
Show_Str(30,130,200,16," 该垃圾的识别结果是",16,0);
while(1)
{
LED0=!LED0;
key=KEY_Scan(0);
if(key)
{
switch(key)
{
case WKUP_PRES:
  POINT_COLOR=BLUE;Show_Str(30,150,200,16,"可回收垃圾 (塑料)”,16,0);LCD_Fill(30,150,200+20,
110+16,WHITE);
break;
  case KEY1_PRES: POINT_COLOR=BLUE; Show_Str(30,150,200,16," 有害垃圾 (电池) ",16,0);LCD_Fill
(30,150,200+20,110+16,WHITE);
break;
  case KEY0_PRES: POINT_COLOR=BLUE; Show_Str(30,150,200,16," 其它垃圾 (纸杯)",16,0);LCD_Fill
(30,150,200+20,110+16,WHITE);
break;
}
  }else if(KEY0==0&&KEY1==0){POINT_COLOR=BLUE; Show_Str(30,150,200,16,"厨余垃圾 (香蕉皮)",16,0);
LCD_Fill(30,150,200+20,110+16,WHITE);
}
}
}



四、总结

   随着垃圾分类问题逐渐成为人们关注的重点,智能垃圾分类系统成为现阶段人们研究的热门方向。近几年,深度学习技术不断地进步,数据处理能力不断提升,深度学习算法在图像识别方面一骑绝尘。本论文首先提出了总体方案的设计,分析对比卷积神经网络各种模型和优化器,最终制定了适合本课题的方案。本文的主要研究内容有以
下几点:
  (1)基于OpenCV的图像分割,经过滤波、边缘检测、二值化等一系列操作后,提取图像的特征,确定图像的位置,并用外接矩形标注出来。
  (2)基于mobilenetV3的垃圾图片识别与分类,收集图像数据,进行模型训练,用预训练模型训练自己的数据集,得到训练准确率和损失值,并对训练过程和结果进行分析。
  (3)基于STM32的垃圾分类系统,通过Keil编写程序,ST-LINK下载程序,进行综合调试,最终在STM32开发板上显示垃圾分类。

四、文章目录

目 录
摘 要I
ABSTRACTTII
第一章 绪 论1
1.1 课题研究背景及意义1
1.2 国内外研究现状1
1.3 课题研究内容3
1.4本章小结3
第二章 系统总方案设计4
2.1 系统总体方案确定及分析4
2.2 系统主要模块介绍5
2.3 本章小结6
第三章 OpenCV垃圾图像分割7
3.1 OpenCV基本操作7
3.2 垃圾图像滤波8
3.3 垃圾边缘检测10
3.4 图像灰度化、二值化设计12
3.5 图像外接矩形16
3.6 本章小结17
第四章 CNN垃圾图像识别18
4.1 开发环境搭建18
4.2 数据集的制作与分析18
4.3 模型与优化器的选择19
4.4 垃圾分类训练分析21
4.5 本章小结25
第五章 垃圾分类系统硬件设计26
5.1 ALIENTEK精英STM32开发板26
5.2 程序设计28
5.3 程序下载与调试32

5.4 本章小结34
第六章 系统调试、结果与成本分析35
6.1 系统调试与分析35
6.2 数据结果记录与分析36
6.3 系统成本分析37
6.4 本章小结37
第七章 总结与展望38
7.1 全文总结38
7.2 研究展望38
致 谢39
参考文献40文章来源地址https://www.toymoban.com/news/detail-765038.html

到了这里,关于基于STM32和OpenCV的垃圾分类系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机毕设 stm32智能语音垃圾分类系统(项目开源)

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 毕业设计 stm32智能语音垃圾分类系统(项目开源) 大家可用于 课程设计 或 毕业设计 🧿 项目分享:见文末! 学长设计的系统主要使用 stm32单片机为基础设计并开发一个智能垃圾桶系统。该系统实现智能开盖, 垃

    2024年03月10日
    浏览(51)
  • 大数据毕业设计 深度学习垃圾图像分类系统 - opencv python

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(48)
  • 单片机设计_语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    想要更多项目私wo!!!         离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。

    2024年02月06日
    浏览(37)
  • 毕业设计 单片机语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。其中翻盖功能是通过STM32端控制舵

    2024年04月26日
    浏览(44)
  • 基于STM32的智能语音垃圾桶设计

    一. 系统设计及框图: 本设计整体功能如下: 1. 超声波感应到有人靠近时语音提示“垃圾放置请分类”。 2. 检测垃圾筒时是否满,当满时语音提示“垃圾桶已满”。 3. 光传感器检测,指示灯指示。 4. 语音识别不同的垃圾类型。 二. 离线语音模块的设计: 离线语音模块SU-0

    2024年02月01日
    浏览(30)
  • 基于STM32+华为云IOT设计的智能垃圾桶

    在商业街、小吃街和景区等人流密集的场所,垃圾桶的及时清理对于提供良好的游客体验至关重要。然而,传统的垃圾桶清理方式通常是定时或定期进行,无法根据实际情况进行及时响应,导致垃圾桶溢满,影响环境卫生,给游客带来不便和不满。 为了解决这一问题,本项目

    2024年02月08日
    浏览(95)
  • 【STM32单片机】基于语音识别的智能分类垃圾桶,ld3320语音识别模块如何使用,mp3播放模块如何使用

    对于“可回收物”“有害垃圾”“厨余垃圾”“其它垃圾”,不能分清扔到哪个垃圾桶怎么办? 基于语音识别的智能分类垃圾桶,识别到就打开对应的垃圾桶,完全没有分不清的烦恼。 //可回收物:塑料瓶、玻璃瓶、铝罐、纸张、纸板、报纸、纸质包装盒、金属罐头等

    2024年02月10日
    浏览(40)
  • 智能垃圾分类垃圾桶(K210+stm32mp157)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 有需要源码参考的可以点赞在评论区留邮箱 K210识别垃圾 k210识别2 文章目录 前言 一、垃圾分类识别+舵机控制(K210) 二、语音控制(K210+ld3320)(UART通信) 三、满溢度距离传感器数据获取(STM32MP157)

    2024年02月03日
    浏览(41)
  • 【毕业设计】基于单片机的智能感应垃圾桶设计与实现 - 物联网 stm32 嵌入式

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 基于单片机的智能感应垃圾桶设计与实现 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 学长设计的系统主要使用 STC89C52 单片机为基础设

    2024年01月17日
    浏览(39)
  • 工训赛智能垃圾桶分类全流程代码分享(树莓派+stm32)

    目录 目录 前言 一、机械结构设计 附机械部分图纸​编辑 二、树莓派视觉识别 1.数据集的制作 (1)数据集处理部分  (2)数据集的优化 2.数据集打标签建议 (1)网站推荐 (2)问题示例 3.树莓派环境搭建部分 (1)  YOLOv5-Lite环境的部署 4.具体Yolov5-lite算法部分 (1)引入库部分

    2024年04月24日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包