火灾识别总结
来源:互联网 发布:用java编写水仙花数 编辑:程序博客网 时间:2024/04/29 03:43
一、针对图像的火灾识别初步的探索
1、复习之前看过的一篇火灾识别的论文,里面介绍了较为基础RGB+HIS模式的图像识别方法,本次进行出发点也是基于此篇论文,并且很幸运找到了相关的代码来进行学习。
2、具体的操作方法:将原图像进行RGB三通道分离,去取各个通道像素的值,根据实验得出的经验,对火灾像素定规则,规定各个分量之间的关系;
(其中饱和度加入是为了去除背景亮度带来的影响,饱和度的值和RGB存在映射的关系。)根据这个规则对输入图像进行判断,创建一个新的图像,符合就在这个新的图像中保存火灾像素的位置,否则不保存(如图所示);将创建的二值图像进行检测轮廓,根据轮廓组数进行火灾识别框的绘制,最后输出结果图像。
3、识别效果图:
4、备注:
(1)此过程我是基于VS2013,以及opencv2.4.9版本实现的。其中需要注意的是opencv分离颜色三通道时顺序是B、G、R而不是R、G、B。
(2)遍历RGB图像采用的是at<>遍历方法,此方法实现读取矩阵中的像素,或者对像素进行赋值操作。通过此方法以及上述的公式规则完成RGB图像转换成火灾像素二值图像。
(3)RGB和灰度图像中的排列:
(4)将转换的二值图像进行下一步绘制处理,在进行轮廓检索时使用的是findContours()函数来寻找轮廓。此函数的定义为:
findContours( InputOutputArray image, OutputArrayOfArrayscontours, int mode, int method, Pointoffset=Point());
Image:输入图像,8位的单通道二值图像,非零的像素会被认成1
Contour(外形轮廓):检测到的轮廓。是一个向量,响亮的每个元素都是轮廓因此,这个向量的每个元素仍是一个向量。即
vector<vector<Point> > contours;
其中mode表示轮廓检测方法,对应的有四种方法。
—CV_RETR_EXTERNAL:只检测外轮廓。忽略轮廓内部的洞。(火灾识别采用的轮廓检测方法;)
—CV_RETR_LIST:检测所有轮廓,但不建立继承(包含)关系。
—CV_RETR_TREE:检测所有轮廓,并且建立所有的继承(包含)关系。一张图来解释有何不同
(5)对二值图像查找轮廓之后,对轮廓进行建立垂直矩阵。首先就是对图像进行遍历,这里采用的遍历方法是:迭代法。在迭代法中,我们所需要的仅仅是获得begin和end,然后增加迭代直至从begin到end。将*操作符添加在迭代指针前,即可访问当前指向的内容。boundingRect()函数是计算轮廓的垂直边界最小矩形,矩形是与图像上下边界平行的,其中函数内的参数只能是二维点集,点的序列或向量。
- 火灾识别总结
- 火灾识别项目研究
- 基于图像识别的火灾探测技术
- 火灾!!!
- 火灾
- 基于深度学习框架的火灾识别报警平台搭建----OpenCV3.1.0读取dav视频数据出错
- 火灾的背后是什么?
- 乌鲁木齐德汇火灾
- 面对火灾怎么办?
- [火灾逃生看性格]
- [火灾逃生看性格]
- [火灾逃生看性格]
- [火灾逃生看性格]
- [火灾逃生看性格]
- 没有来的火灾...
- 火灾检测模型
- 山东一食品厂火灾
- opencv 火灾检测
- Colored Sticks --欧拉回路,并查集,字典树,
- mybatis和spring的优缺点:
- javaWeb-web项目中加载资源文件路径的两种方式
- 日常笔记-内部类
- JavaScript中的正则表达式
- 火灾识别总结
- zookeeper源码分析-连接过程
- Redis数据结构-字典
- 教训:iconv转码不要使用gb2312和gbk,使用gb18030
- OceanBase架构浅析(一)
- DataGrid的一些认识
- socket相关
- 解决tomcat报的错“The JRE_HOME environment variable .......”问题
- LeetCode-98-Validate Binary Search Tree dfs二叉树