目录

前言

课题背景和意义

实现技术思路

一、相关技术简介

二、 图像视频识别算法研究

最后


前言

    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

选题指导:

大家好,这里是海浪学长毕设专题,本次分享的课题是

🎯基于机器视觉的嵌入式烟雾识别系统- OpenCV

课题背景和意义


随着数字信息技术、嵌入式技术和计算机应用书的迅猛发展,计算机图像处理技术、视觉技术在医疗、智能仪器、航空以及军事等领域被已广泛应用,并取得了较大的经济效益和社会效益。通过采集现场烟雾的几何特征、纹理特征、颜色特征以及运动特征信息并利用计算机技术行快速分析、处理,达到识别、报警的目的,这种技术和手段不仅可以用于智能家居、楼宇监控,还可以实现对火灾的及时报警,以提高火灾探测、预防的可靠性。由于烟雾扩散性区域运动的连续性、烟雾背景模糊性、烟雾不规则性以及烟雾的相关性特点,烟雾的有效检测算法和实用化的市场产品一直是该领域比较门的研究和开发课题,也激发了研究者的兴趣,同时,掀起了世界各地的研究热潮。在烟火、烟雾识别方面往往采用先进的传感器。然而,在户外,烟雾具有扩散范围广、监控面积大的特点,采用传感器技术一方面需要考虑灵敏度,另一方面采用先进的传感器会造成成本的无限增加。正因如此,基于视频的烟雾检测算法和识别技术得到了世界各国相关领域专家学者们的广泛关注。


实现技术思路

一、相关技术简介


嵌入式系统



嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分,具有可裁剪、的特点,针对某行业应用定制,应用在具有嵌入式系统的设备上。嵌入式系统从起初的晶体管逻辑电路,发展到超大规模集成电路,使得外部电 路形式更加简单,集成度也在逐步增大。嵌入式系统体系结构可以分为五层结构模型,如图:



yolov5烟雾检测python源码分析 opencv烟雾检测_opencv



嵌入式系统中的内核是系统的核心,系统所有的任务及所完成的功能都是在内核的控制之下完成的。根据其内核的差别分为三类:



( 1 )微内核结构



微内核结构将操作系统的功能分为两类:一类运行在内核态,包括操作系统中必不可少的功能集合。一类运行在用户态,是操作系统功能的扩展,通过用户级服务进程实现。微内核结构示意图:



yolov5烟雾检测python源码分析 opencv烟雾检测_opencv_02



(2)整体内核结构



整体内核结构也称单内核,它几乎包含了所有操作系统的功能模块,所有模块在编译时链接在一起,形成一个可执行文件。在运行时,所有操作系统功能模块都处于内核态,其他应用程序处于用户态。



yolov5烟雾检测python源码分析 opencv烟雾检测_课程设计_03



(3)层次内核结构



层次内核结构是一种基于分层思想的内核结构,将操作系统的功能分为若干层次模块,根据模块功能流程顺序,将模块模块分为成若干层,上下层之间通过接口调用,层与层之间相对独立。层次内核结构示意图:



yolov5烟雾检测python源码分析 opencv烟雾检测_opencv_04



Ubuntu-Linux 概述



Linux 操作系统诞生于 1991 年,是 UNIX 系统的继承和创新,是基于 POSIX和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。 Linux 系统具有开源特性,是一套免费使用和自由传播的类Unix 操作系统。




OpenCV 概述



Open CV ( Open Source Computer Vision Library )是英特尔公司俄罗斯设立的软件开发中心“Software Development Center ”于 1999 年开发的是一个开源的、跨平台的计算机视觉、图像函数库。Open CV 全称为 Open Source Computer VisionLibrary,是一种经常用来实现视频图像处理的开源计算机视觉库。



yolov5烟雾检测python源码分析 opencv烟雾检测_计算机视觉_05



1)Open CV 模块组成



Open CV 的基础模块主要包括:基础核心模块 Core 、图像处理模块 Imagproc 、视频分析模块 Video 、 GUI 接口模块 HighGUI 、目标检测模块 Objdetect 、特征检测模块 Features2D 、机器学习模块 ML 、 3D 图像处理模块 Calib3D 和 GPU 模块等。



yolov5烟雾检测python源码分析 opencv烟雾检测_深度学习_06



2)Open CV 功能



Open CV 是一种经常用来实现视频图像处理的开源计算机视觉库,库内包含了大部分的图像处理算法,采用 BSD 开源协议,主要用于对图像进行一些高级处理,比如说特征检测与跟踪运动分析,目标分割与识别以及 3D 重建等。




小波变换理论基础



小波变换( wavelet transform , WT )是一种新的变换分析方法,是上世纪 80 年代中后期逐渐发展起来的一种数学分析方法。



1)短时傅里叶变换



随着计算机技术的发展与完善,科学与工程中的所有计算问题跟计算机已经密不可分,计算机计算的一个典型特征是离散化。在信号处理,尤其是非平稳信号处理过程中,经常需要对信号的局部频率以及该频率发生的时间段有所了解。假设对信号 f (x) 在时间 x=τ 附近内的某个时间段 Iτ 内的值,即定义:



yolov5烟雾检测python源码分析 opencv烟雾检测_深度学习_07



图 为短时傅里叶变换对信号分析示意图:



yolov5烟雾检测python源码分析 opencv烟雾检测_深度学习_08



其中|Iτ|表示区域 Iτ 的长度。如果定义方波函数 gτ(x)为:

yolov5烟雾检测python源码分析 opencv烟雾检测_深度学习_09

2)小波变换



小波变换在继承短时傅立叶变换局部化的同时,克服了窗口大小不随频率变化的缺点,是进行信号时频分析和处理的理想工具。小波变换在时域和频域都具有很好的局部化性质,较好地解决了时域和频域分辨率的矛盾,对于信号的低频成分采用宽时窗,对高频成分采用窄时窗。




二、 图像视频识别算法研究



图像滤波算法



由于设备的精密度不够好,或者由于传输介质不完善,导致在形成、传输图像过程中会加入多种噪声,噪声是不可预测的。在数字图像信号中,噪声一般为极大、极小的值,对图像造成或亮或暗的干扰,使得图像模糊退化,特征被覆盖,严重影响了图像的质量,影响到后续的图像处理,因此,需要去除这些噪声。




1)均值滤波



均值滤波也称为线性滤波,均值滤波采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点 ( x, y ) 选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点 ( x, y) ,作为处理后图像在该点上的灰度值( x, y,)即



yolov5烟雾检测python源码分析 opencv烟雾检测_opencv_10



均值滤波模板示意图:

yolov5烟雾检测python源码分析 opencv烟雾检测_人工智能_11



均值滤波采用的主要方法为邻域平均法,在图像上对目标像素给一个模板,该模板以目标象素为中心的周围的象素,构成一个滤波模板,去掉目标象素,再用模板中的全体像素的平均值来代替原来像素值。



yolov5烟雾检测python源码分析 opencv烟雾检测_人工智能_12



2)中值滤波



虽然均值滤波器对噪声有抑制作用,但同时会使图像变得模糊。即使是加权均值滤波,改善的效果也是有限的。为了有效地改善这一状况,必须改换滤波器的设计思路。中值滤波示意图:



yolov5烟雾检测python源码分析 opencv烟雾检测_opencv_13



中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便,中值滤波可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效,首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。



yolov5烟雾检测python源码分析 opencv烟雾检测_课程设计_14

3)直方图均衡



直方图均衡是通过使图像的直方图均衡的方法称为直方图均衡化,可以达到增强图像的显示效果的作用。通过直方图统计,可以观察出图像中各种亮度所占的比例大都分布不均匀,设法增加在直方图统计中所占比例高的像素和其他占的比例少的像素之间的亮度差,可以提高图像的显示效果。离散形式下有下面的公式成立: 




yolov5烟雾检测python源码分析 opencv烟雾检测_opencv_15



在视觉图像经常使用到图像滤波以便去除噪声以及提取有效的图形结构中值滤 波可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。 将上图原始图像,统计原始图像灰度直方图和概率分布,并除以总像素点数目,将其转换为概率分布,结果如图所示



yolov5烟雾检测python源码分析 opencv烟雾检测_opencv_16



将原图像中各个点进行灰度映射,映射到当前灰度分布中去,即可得到直方图均衡图像和新图像的直方图分布,如图:



yolov5烟雾检测python源码分析 opencv烟雾检测_课程设计_17



运动目标检测算法



运动目标识别、检测是视频识别的核心部分,是整个系统能够准确、实时、稳定运行和后续运动目标识别、目标跟踪与分析的基础。目前常用运动目标识别、检测算法有:光流法、帧差法、背景减除法和高斯混合模型算法等。



( 1 )光流法



光流法的主要任务就是计算光流场,即在适当的平滑性约束条件下,根据图像序列的时空梯度估算运动场,通过分析运动场的变化对运动目标和场景进行检测分割。



(2)帧差法



最为常用的运动目标检测和分割方法之一,基本原理就是在图像序列相邻两帧或三帧间,采用基于像素的时间差分,通过闭值化来提取出图像中的运动区域,利用标记的像素区域可以确定运动目标在图像中的位置。帧间差分法的流程图如图:



yolov5烟雾检测python源码分析 opencv烟雾检测_人工智能_18



(3)背景减除法

背景减除法是一种有效的运动对象检测算法。背景减除法利用背景的参数模型来近似背景图像的像素值,将当前帧与背景图像进行差分比较,实现对运动区域的检测。将当前帧与背景模型进行差分运算如下:



yolov5烟雾检测python源码分析 opencv烟雾检测_计算机视觉_19



(4)混合高斯模型



高斯混合高斯模型是 Stauffe: 与 Grimson 提出的算法 [66] ,采用在时域中实时更新像素颜色模型的方法,它对光照变化和其他因素适应能力强。根据给定每个像素在时域上的概率分布函数,通过更新一系列的参数值来构建出各个时刻的颜色模型,由此完成背景的建模。




5)基于帧间差的图像识别与提取



由于烟雾颜色接近,相邻两帧作差就会导致在物体运动方向上留下前后两部分,中间部分就会被减去成为背景了,无法把完整的运动物体提取出来。因此,采用相邻两帧作差,结合累积差分的概念基于,累积差分自适应更新方法建立背景模型。




运动跟踪算法研究




1)CAMShift 算法



CAMShift 算法是一种基于颜色概率分布和统计的算法,均值漂移算法的原理是基于均值漂移向量的概率密度收敛。核心是均值漂移迭代,即,利用目标区域的颜色直方图特征,在单幅图像中使用均值漂移算法搜索到目标,在连续帧中将前一帧的搜索结果数据作为后一帧的初始数据,实现连续帧图像中的运动目标跟踪




x 的核函数概率密度估计为:



yolov5烟雾检测python源码分析 opencv烟雾检测_深度学习_20



2)卡尔曼滤波算法



卡尔曼滤波是一种基于最小方差估计的最优线性递归滤波方法,可运用到运动跟踪之中,根据卡尔曼滤波的“预测修正循环”提出基于预测的运动跟踪方法,取得了很好的效果。卡尔曼滤波器的结构:



yolov5烟雾检测python源码分析 opencv烟雾检测_人工智能_21



卡尔曼滤波实质上是一种预测修正算法,状态方程预测先验状态估计及其误差协方差,观测方程修正后验状态估计及其误差协方差,完整的状态、观测方程如下:



yolov5烟雾检测python源码分析 opencv烟雾检测_深度学习_22

实现效果图样例

 火焰烟雾识别:


yolov5烟雾检测python源码分析 opencv烟雾检测_课程设计_23

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!