火焰识别python_基于Python的火焰识别程序

2023-11-20

本期介绍一下笔者在试验数据处理时写的一个用于火焰识别的小程序,该小程序的功能是对拍摄到的火焰图像进行提取、增强、降噪和识别,并输出相应处理过的火焰图像以及火焰参数,如传播距离、面积等。该程序基于Python 3语言,用到了前面提到的图像和数据文件的批处理,OpenCV库和numpy库的简单应用,以下针对该程序的思路进行介绍,不涉及具体的代码讲解。

1.原始图像准备

本例中的试验数据为高速相机拍摄的纹影火焰图像,下图是燃烧前后的图像对比,除了视野中增加了火焰之外,其余图像几乎没有发生变化。

lazy.png

lazy.png

2. 图像提取和增强

考虑到上面两张图像的差异,这里采用的是利用二者差异提取有用信息的方法,具体就是两幅图的对应像素RGB通道分别做差取绝对值,即|A-B|,A,B分别代表两幅图的像素矩阵。这种有效信息提取的方式可以排除掉由于一些硬件原因造成的画面明暗不均、污点等。在图像提取之后由于提取出来的图像非常暗,辨识度较低,因此需要对图像的画面进行增强,这里由于图像过于暗,直接将每个像素的RGB值进行了平方以增强图像(这种做法比较非主流,若有更好的方法欢迎提出)。下图是图像提取后和提取后增强的图像。

lazy.png

lazy.png

3. 图像降噪

由上图所示,虽然图像增强后画质更加清晰,辨识度明显提高,但相应的噪点也更多。目前降噪的算法较多,有高斯滤波、中值滤波、均值滤波、双边滤波等降噪算法。经过测试,在本算例中中值滤波具有较好的效果,对噪点去除较好,滤波后的图像如下图所示,图中虽然火焰图像的细节被一定程度地模糊了,但其火焰与背景的边界仍然非常清晰。

lazy.png

4. 灰度化和二值化

要想对火焰的轮廓进行识别,就需要首先对图像进行灰度处理,然后将灰度图像进行二值化处理。灰度处理的本质是将原有图像的RGB三个矩阵缩减成一个矩阵。因此,灰度处理的方法可以从两个方面考虑,一是直接用系统提供的灰度转换函数实现,二是可以将RGB三个通道中的一个提取出来作为灰度图。在本例中由于火焰图像的R (红色)通道具有有效信息强、噪点少的特点,因此直接将R通道的像素值提取作为灰度图。

在灰度处理的基础之上,二值化是将图像的像素值处理成只有0 (黑色)和255 (白色)两个值的结果。因此在二值化方法中需要涉及到阈值问题,低于阈值的取0;高于阈值的取255。阈值的选取往往也需要进行多次测试最终确定,本例中阈值取值为30。灰度化和二值化的结果如下图所示。

lazy.png

lazy.png

5. 腐蚀和膨胀

在二值化处理之后,发现图像上仍然存在一些噪点,这些噪点会对我们进行火焰的长度和面积计算造成干扰;此外,在一些情况下火焰内部还会存在空心点的情况,这也是我们想要尽量避免的。因此,需要用腐蚀和膨胀方法(或者开运算和闭运算)对二值化的图像进行处理,去除或减少噪点,同时补全图像的空心部分(具体算法这里不进行详细介绍,感兴趣的读者可查找相关资料深入研究)。经过腐蚀和膨胀处理后的二值化图像如下图所示,相比初始的二值化图像,噪点明显减少,同时图像内部的空心点也被补全。

lazy.png

6. 轮廓识别的挑选

基于腐蚀和膨胀处理之后的图像进行轮廓识别,若果存在离散的噪点那么轮廓识别也会有多个结果,需要制定一定的准则对识别到的轮廓进行筛选。比如轮廓长度低于某个值的认为是无效结果;亦或者在所有识别到的结果中只取最大轮廓等等。轮廓识别的最终效果以及与原始图像的对比如下图所示。基于该识别结果,可有效地对火焰的长度、面积进行计算,进而计算出传播速度、面积增长率等参数。

lazy.png

lazy.png

小结:该程序经过简单的修改可适用于各种物体追踪或者识别的应用中,如车辆运动、喷雾发展等。

附录:

在公众号发送“火焰图像识别”或“火焰识别”可获取完整代码以及测试图像的链接。

留言区

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

火焰识别python_基于Python的火焰识别程序 的相关文章

  • STM32之音频数据的Flash读取与DAC播放

    文章目录 一 STM32103之内部Flash原理 1 Flash介绍 2 Flash的组成 3 STM32内部框架图 二 SD卡的读写 1 实验过程 2 查看hello txt 3 从SD卡里读出数据 三 Flash地址空间的数据读取 1
  • 说说ERP软件的系统设计--开源软件诞生8

    赤龙ERP系统设计篇 第8篇 用日志记录 开源软件 的诞生 赤龙 ERP 开源地址 点亮星标 感谢支持 与开发者交流 kzca2000 码云 https gitee com redragon redragon erp GitHub http
  • 4、pytest -- fixtures:明确的、模块化的和可扩展的

    pytest fixtures的目的是提供一个固定的基线 使测试可以在此基础上可靠地 重复地执行 对比xUnit经典的setup teardown形式 它在以下方面有了明显的改进 fixture拥有一个明确的名称 通过声明使其能够在函数 类
  • IntelliJ IDEA启动项目端口号被占用怎么解决!

    前言 在使用IDEA开发的时候 经常能碰到端口号被占用的报错 我就经常遇到因为我不知道为啥我IDEA他会在我没用的情况下会闪掉 然后等我发现再打开 运行项目的时候就经常报这个错 不过还有的同学是因为启动多个项目 导致端口号用的一样的所有才出
  • 计算机视觉中的深度学习6: 反向传播

    Slides 百度云 提取码 gs3n 神经网络的梯度下降 我们之前在学习线性分类器的时候 使用Loss函数以及梯度下降法来更新权重 那么对于神经网络 我们该如何计算每层神经元的权重呢 对每层W直接求导 愚蠢的方法 如上公式所示 Loss函
  • IDEA-设置VM启动参数

    点击配置 OK 使用方式 System out println System getProperty parm
  • Mysql5.7安装3306端口报错问题解决方法

    自己尝试重装Mysql 但是过程中遇到端口报错 Mysql5 7下载及安装大家可以去参考其他博客 有很详细的过程 我在安装过程中遇到了3306报错 就是在端口号的旁边会有一个感叹号 由于我是重装 我大概猜到原因是之前的Mysql没有卸载干净
  • MySQL安装之yum安装

    在CentOS7中默认安装有MariaDB 这个是MySQL的分支 但为了需要 还是要在系统中安装MySQL 而且安装完成之后可以直接覆盖掉MariaDB 1 下载并安装MySQL官方的 Yum Repository 1 root Bria
  • Linux基础之SQLite数据库

    嵌入式数据库篇 一 SQLite数据库 二 SQLite数据库安装 三 SQLite的命令用法 四 打开 创建数据库的C接口 五 C代码执行sql语句 六 C代码建表和插入数据 七 总结 一 SQLite数据库 1 简介 轻量化 易用的嵌入
  • 使用SpringSecurity

    前几天写了一个SpringBoot对拦截器的使用 在实际项目中 对一些情况需要做一些安全验证 比如在没有登录的情况下访问特定的页面应该解释的拦截处理 这一篇介绍使用SpringSecurity来做简单的安全控制 由于SpringSecuri
  • Servlet实现简单的前后端交互

    Servlet实现简单的前后端交互 首先前后端交互是啥呢 在我的理解中大概是这样的 简单的讲就是数据的交换 接下来我们来看看应该要怎么实现这个简单的交互 1 首先我们前端先不写静态页面 直接在url上将请求的参数放上去 2 后端要做的首先就
  • Mybatis+Servlet+Mysql 整合的一个小项目:对初学者非常友好,有助于初学者很快的上手Java Web

    文章目录 前言 为何要写 目录结构 1 依赖配置 1 1 创建一个web项目 1 2 依赖需求分析 1 3 pom xml 2 配置Mybatis 2 1 mybatis config xml 2 2 UserMapper xml 2 3
  • layui改变字体颜色或者背景颜色

    改变文字颜色 done function res curr count if res data length gt 0 each res data function ii dd if NOTNULL dd islatetime if par
  • 数据库开发题目-什么是视图?以及视图的使用场景有哪些?

    1 视图是一种虚表 2 视图建立在已有表的基础上 视图赖以建立的这些表称为基表 3 向视图提供数据内容的语句为 SELECT 语句 可以将视图理解为 存储起来的 SELECT 语句 4 视图向用户提供基表数据的另一种表现形式 5 视图没有存
  • 数据结构-期末复习重要知识点总结

    目录 第一章 绪论 第二章 线性表 3 顺序表表示 4 顺序表基本运算 5 链表 6 链表的基本运算 7 循环链表 8 双链表 9 静态链表 10 一元多项式表示及相加 第三章 限定性线性表 栈与队列 1 顺序栈 2 链栈 3 链队列 4
  • 三、Pytorch中tensor的内部结构

    tensor的数据结构 tensor分为头信息区 Tensor 和存储区 Storage 信息区主要保存着tensor的形状 size 步长 stride 数据类型 type 等信息 而真正的数据则保存成连续数组 由于数据动辄成千上万 因此
  • Android机顶盒网络地址端口连通性测试

    Android机顶盒网络地址端口连通性测试 文章目录 Android机顶盒网络地址端口连通性测试 1 直接telnet 2 busybox telnet 3 测试工具 一般我们使用如下三种方式进行测试 前一种不满足则执行下一种 1 外网可以
  • [POI2007]砝码Odw

    看这数据范围就不太可DP的样子 考虑贪心 首先注意到题目里有对于任意两个砝码其中一个是另一个质量整数倍的条件 所以砝码质量的种类不超过log INF 考虑按质量从小到大把砝码往容器里放 这样的话所有的砝码和容器的质量都可以除以当前砝码质量然
  • [动态系统的建模与分析]8_频率响应_详细数学推导 G(jw)_滤波器

    运放滤波器 3 反相同相比例放大电路 Multisim电路仿真 运放滤波器 2 运放反馈原理 运放滤波器 1 理想运放 虚短虚断 现代控制理论 11 现代控制理论串讲 完结 pdf获取 信号与系统在工程中 里面的一些工具应该是奠基石 电路

随机推荐

  • 杂七杂八的小知识

    杂七杂八的小知识 前端知识 Node js安装注意事项 Vue学习文档 Mysql数据库小知识 安装数据库后使用数据库所需步骤 MySQL远程连接 常用数据库命令 mysql数据库导入查询 StarUML使用教程 docker小知识 cma
  • 2023备战金三银四,自动化软件测试面试宝典合集(一)

    马上就又到了程序员们躁动不安 蠢蠢欲动的季节 这不 金三银四已然到了家门口 新年一过后台就有不少人问我 现在外边大厂面试都问啥 想去大厂又怕面试挂 面试应该怎么准备 测试开发前景如何 面试 一个程序员成长之路永恒绕不过的话题 每每到这个时期
  • Flutter FutureBuilder 示例

    通过示例 可以重点对FutureBuilder的各个属性的了解
  • 使用MobaXterm发布前端代码到服务器

    1 准备 先获得服务器的必须信息 如下表 序号 参数名 参数值 描述 1 服务器IP 81 71 87 37 2 登录用户名 root 3 用户私钥 如下 可保存为一个文件如pri key 一定确保格式与下面代码一样 不能有多余的空格 换行
  • 位运算——异或运算

    目录 按位异或运算 异或运算的应用 镜子田地 镜子 按位异或运算 按位异或运算将两个运算分量的对应位按位遵照以下规则进行计算 0 0 0 0 1 1 1 0 1 1 1 0 即相应位的值相同的 结果为 0 不相同的结果为 1 例如 2 6结
  • 万众瞩目--腾讯云数据库TDSQL第一届征文正式大赛开启

    首届腾讯云数据库TDSQL征文大赛开启啦 只要您对腾讯云数据库TDSQL有兴趣 有研究 有想法 皆可参加 腾讯云数据库诚挚邀请您参与活动 分享和TDSQL邂逅的若干趣事 领取精美礼品 腾讯云数据库TDSQL是腾讯自研的企业级分布式数据库 在
  • PTP简介

    PTP简介 在通信网络中 许多业务的正常运行都要求网络时钟同步 即整个网络各设备之间的时间或频率差保持在合理的误差水平内 网络时钟同步包括以下两个概念 l 时间同步 也叫相位同步 Phase synchronization 是指信号之间的频
  • 【openvpn简介】

    openvpn简介 简单原理 脚本实现一键安装 增加 注销 第六周作业 简单原理 VPN Virual Private Network 虚拟私有网络 或称为虚拟专用网络 常用于在公用网络上建立专用网络 进行加密通讯 VPN网关通过对数据包的
  • Linux 字体安装

    java系统生成PDF 二维码增加标题等场景都会使用到Font 但是linux服务器上又没有这些字体 这个时候就需要自己安装字体到服务器 以下是安装步骤 1 安装插件 yum install y fontconfig mkfontscale
  • java 使用rabbitmq_java操作RabbitMQ整个过程介绍

    一 环境安装 1 安装java工具 IntelliJ IDEA 2019 3 x64 2 安装erl10 7 并配置好path等环境变量 同时验证是否安装成功 见图1 图2 图1 图2 3 安装RabbitMQ3 8 3 图3 cmd进入上
  • 后台-husky提交代码规范使用

    husky是一个git hook工具 可以帮助我们触发git提交的各个阶段 pre commit commit msg pre push 1 如何使用husky呢 npx husky init npm install Windows安装不成
  • 一个基于SpringBoot2+Vue+Redis的企业级聚合支付系统可二次开发接私活

    点击关注 Java开发宝典 2022 01 20 08 50 收录于话题 项目分享28个 项目介绍 Jeepay是一套适合互联网企业使用的开源支付系统 支持多渠道服务商和普通商户模式 已对接微信支付 支付宝 云闪付官方接口 支持聚合码支付
  • 微信小程序读取服务器数据,微信小程序前端获取后端数据

    webMessage 测试 index js Page getMessage function var self this wx request url http localhost 8080 demo 仅为示例 需填写自己服务器的地址 d
  • word2vec深入理解及实践

    以前对于word2vec的理解就是通过训练能得到词向量 对应有两种方法 skip gram和CBOW 两者差别其实不大 但关于具体的细节也不是很了解 今天来深入理解并记录一下 理论方面 word2vec是一种基于神经网络的语言模型 是goo
  • 网络协议之ARP协议解析

    ARP协议简介 ARP Address Resolution Protocol 是个地址解析协议 最直白的说法是 在IP以太网中 当一个上层协议要发包时 有了该节点的IP地址 ARP就能提供该节点的MAC地址 OSI 模式把网络工作分为七层
  • Spring项目如何部署项目到Linux

    部署前先将项目所需的数据库添加到linux的mysql中 部署jar包到linux 修改项目pom文件 将打包方式改为jar 在pom中添加springboot插件
  • 春考计算机服务器配置,考试系统的服务器配置有什么要求?

    处理器 CPU类型 Intel 至强E5 2600 CPU型号 Xeon E5 2650 CPU频率 2GHz 智能加速主频 2 8GHz 标配CPU数量 1颗 最大CPU数量 2颗 制程工艺 32nm 三级缓存 20MB 总线规格 QPI
  • Matlab运行程序_暂停方法

    pause函数 官方文档 其调用格式为 pause 延迟数秒 必须启用暂停 此调用才能生效 暂停执行matlab 并等用户按下任意键 pause on 启用暂停设置 若想省略延迟时间 则直接使用pause函数 则将程序暂停 直到用户按任意键
  • 如何在 CentOS 中下载包含所有依赖项的 RPM 包

    翻译于ostechnix com 上 Senthil Kumar的 How To Download A RPM Package With All Dependencies In CentOS 我们可以使用curl或wget命令下载任何包 对
  • 火焰识别python_基于Python的火焰识别程序

    本期介绍一下笔者在试验数据处理时写的一个用于火焰识别的小程序 该小程序的功能是对拍摄到的火焰图像进行提取 增强 降噪和识别 并输出相应处理过的火焰图像以及火焰参数 如传播距离 面积等 该程序基于Python 3语言 用到了前面提到的图像和数