首页 > 编程语言 >基于图像处理的火焰检测算法(颜色+边缘)

基于图像处理的火焰检测算法(颜色+边缘)

时间:2024-08-05 10:53:30浏览次数:11  
标签:ROI 颜色 检测 算法 图像处理 火焰 图像 火灾

图片

介绍

    由于经常发生大面积火灾,对人类健康和安全造成影响,火灾探测作为工具的应用越来越多。当前基于电子传感器的检测方法通常依赖于热和压力传感器。然而这些方法有一个致命的缺陷,即它们只有在达到一定条件时才会起作用。在最坏的情况下,传感器损坏或配置不正确可能会在真正发生火灾时造成严重伤亡。为了解决这些问题,安装了电子监控摄像头。因此,此类设备对基于计算机视觉的火灾探测的需求不断增加。此类设备包括各种闭路电视、无线摄像头甚至无人机。

    与传统的检测方法相比,这些类型的系统具有多种独特的优势。例如,与那些传统方法相比,使用这种类型的检测的成本更便宜,并且这种类型的系统的实现要简单得多。其次,与任何其他传统检测方法相比,火灾探测系统的响应时间更快,因为基于视觉传感器的火灾探测系统不需要任何类型的条件来触发传感器,并且能够根据所使用的摄像机监控大面积区域。这类系统的最大好处是可以以图像或视频的形式保存火源,这大大促进了火灾探测方法的多样化。

    在本文中,我们提出了一种将火焰颜色信息与火焰边缘信息相结合的算法。然后,结合这两种技术的结果,创建一个参数,从图像中分割出必要的细节,以检测和识别火灾。

提议的算法

    我们方法的第一步是检测火焰的颜色,火焰的颜色主要是红色。然后我们在原始图像上使用Sobel边缘检测来检测火灾的边缘,同时删除小于100的阈值。然后我们应用分割技术,该技术结合第一种技术和第二种技术的结果来分离ROI从背景中看到火势

RGB颜色模型

    火焰图像可以通过使用其颜色属性来描述。颜色像素有三种不同的元素:R、G和B。颜色像素可以被提取为这三个单独的元素R、G和B,用于颜色检测。

    RGB颜色模型用于检测图像中的红色信息。就RGB值而言,R、G、B颜色通道之间对应的相互关系:R>G和G>B。捕获图像的组合条件可以写为:R>G>B。在火焰颜色检测中,R 应该比其他分量更受重视,因此 R 成为火焰 RGB 图像中的主导颜色通道。

图片

    这对 R 施加了超过某个预定阈值 RTH 的条件。

    条件 1:R > RTH 条件 2:R > G > B。

    然后,需要将结果转换为 HSI 颜色模型,其中 H 代表色调,S 代表饱和度,I 代表强度。

Sobel边缘检测

图片

    下一步将使用Sobel边缘检测器来检测图像内火焰的变换。这可以通过对图像应用 3x3 蒙版来完成

分割技术

    该算法中使用的最后一项技术是分割技术,用于从非火灾背景中分割火灾。该技术完成的第一步是指定 ROI 中分段处理的颜色范围。然而,在我们提出的这个算法中,这已经在第一种技术中完成了。基于该参数,使用以下公式;

图片

    将距离与阈值进行比较。如果 D(x,m) ≤ 阈值,则该点属于火灾的 ROI。否则,它们不属于可被视为背景的投资回报率的一部分。使用第二种技术(Sobel边缘检测)来检测将 ROI 和非 ROI 分开的区域。

图片

结果与分析

    最后基于 50 张图像进行验证以评估算法。该验证过程使用真值模型,并与结果进行比较。真阳性(TP)和真阴性(TN)是正确的分类。假阳性(FP)是指算法的结果被错误地预测,而实际上它确实存在于图像中。

    算法的准确性指定了算法检测 ROI 的能力。准确率=TP/(TP+TN)*100%

    效率测试给出为:

    准确率=(TN+TP/TN+TP+FN+FP)*100%

结论

   提出了一种基于机器学习(图像处理技术)的火灾检测算法。该算法采用RGB颜色模型来检测火焰的颜色,主要通过红色分量R的强度来理解。使用Sobel边缘检测来检测火势的增长。最后,根据第一种技术和第二种技术的结果应用基于颜色的分割技术来识别火灾的感兴趣区域(ROI)。当发生火灾时,该算法非常有效。算法整体准确率大于90%,说明了算法的有效性和实用性。在未来的工作中,可以考虑基于实时的算法,因为它可能会提高算法的效率(目前为 80.64%)。

标签:ROI,颜色,检测,算法,图像处理,火焰,图像,火灾
From: https://blog.csdn.net/2301_76924624/article/details/140852727

相关文章

  • 算法随笔——欧拉回路
    学习链接oiwiki定义判别方法P7771【模板】欧拉路径(有向图)P7771【模板】欧拉路径#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineINF0x3f3f3f3f#definereregister#definePIIpair<int,int>intread(){ intf=1,k=0;charc=get......
  • Python基础算法笔记
    整理自B站视频https://www.bilibili.com/video/BV1uA411N7c5递归1.汉诺塔问题#n个圆盘,从a经过b移动到cdefhanoi(n,a,b,c):ifn>0:#将n-1个圆盘从a经过c移动到bhanoi(n-1,a,c,b)#将最底层的圆盘从a移动到cprint("mov......
  • 动态规划,蒙特卡洛,TD,Qlearing,Sars,DQN,REINFORCE算法对比
    动态规划(DynamicProgramming,DP)通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划的步骤识别子问题:定义问题的递归解法,识别状态和选择。确定DP数组:确定存储子问题解的数据结构,通常是数组或矩阵。确定状态转移方程:找出状态之间的关系,即状态转移方程。......
  • 优化蒙特卡洛算法笔记1
    fromkaiwu_agent.utils.common_funcimportcreate_cls,attachedSampleData=create_cls("SampleData",state=None,action=None,reward=None)ObsData=create_cls("ObsData",feature=None)ActData=create_cls("ActData",ac......
  • KMP算法
     ......
  • KMP算法
    写在前面喜报:听了四遍都没学懂的KMP算法,终于在gyy大佬的耐心讲解下搞懂了,大佬orz!!!正文kmp算法本质上就是对模式串(要匹配的子串两个串中短的那个)中很多重复的前缀和后缀索引起来,使得在一个地方失配了也不要紧,不用重新来的算法(看不懂不要紧)下面我们就来详细介绍一下kmp的几个......
  • 【秋招笔试】2024-08-03-科大讯飞秋招笔试题(算法岗)-三语言题解(CPP/Python/Java)
    ......
  • 数据结构:链表经典算法OJ题
    目录前言一、移除链表元素二、反转链表三、合并两个有序链表四、链表的中间节点五、环形链表的约瑟夫问题前言  在了解了链表的相关知识后,我们还需要一些题目进行练习加深对链表这方面知识的理解,也可以用来检测链表这块学的的怎么样,废话不多说,开始上手。一、移......
  • 算法【构建前缀信息解决子数组问题】
    本文需要对掌握哈希表的用法。构建某个前缀信息比如最早出现、最晚出现、出现次数等,是很常见的技巧。除此之外,还有很多种类的前缀信息可以构建出来,解决很多子数组相关问题。下面通过几个题目加深对构建前缀信息这个方法的理解。题目一简要描述:构建前缀和数组。快速解决子......
  • 算法【前缀树】
    注意:学习本篇最少应知道什么是树结构和哈希表怎么用。前缀树又叫字典树,英文名trie。每个样本都从头节点开始根据前缀字符或者前缀数字建出来的一棵大树,就是前缀树。没有路就新建节点;已经有路了,就复用节点。前缀树的使用场景:需要根据前缀信息来查询的场景前缀树的优点:根......