⛄一、火灾检测简介
1 引言
目前森林火灾是破坏森林的最主要的灾害之一, 影响很大。森林是各种珍禽异兽的家园, 森林遭受火灾后, 会破坏野生动物赖以生存的环境。严重的森林火灾不仅能引起水土流失, 还会引起山洪爆发、泥石流等自然灾害。因此, 对森林火灾尽早识别并预警, 就能最大限度的降低损失。本森林火灾检测方法是在利用图像处理技术对烟火普遍特性进行研究的基础上, 结合烟火区域火焰的颜色、面积、不规则度特征以及烟雾的颜色特征和动态特征而提出的。基本消除其他不利的影响, 有效提高森林火灾图像的识别的准确度。除此之外, 我们运用了多层检测的方式, 减少了系统处理分析的时间, 提高了识别的速度。
图1 火灾识别流程
2 森林火险检测系统流程
我们为了达到火险检测的目的, 我们采取从烟雾和火焰两个方面进行检测, 设计了多层拓展识别的流程, 静态特征和动态特征相结合的识别检测方式。方案的具体操作总体流程如图1。该火险检测系统的总体设计思想是:该首先获取相机实时拍摄的图像;然后对视频图像进行实时背景差动态判断有无异常情况, 如果连续的几帧图像发生了较大的变化, 即判断为有异常情况发生;下一步采取我们的检测算法分别对图像进行就火焰识别和烟雾识别, 若图像中有火焰 (烟雾) , 系统就会输出“1”, 否则就输出“0”;最后用我们多特征融合综合判断是否是火灾, 是的话则输出“1”发出火灾预警, 从而完成整个森林火险检测系统。
3 火焰检测
森林火险检测系统中火焰检测部分的流程如图2 (左) 所示:
图2 火焰检测 (左) 和烟雾检测 (右) 流程图
待检测的图像输入后, 开始需要进行图像的初步的处理。图像预处理过程一般包括有增强、滤波、细化几个方面。接下来主要简述的是火焰图像的增强处理和滤波。
图像增强主要指的是按照开发者的想法加强图像中某部分, 可以是某个具体的区域, 也可以是符合相关限制条件的部分区域, 并且淡化或消除某些不重要杂乱信息的处理方法。图像增强主要包括了直方图修改处理、图像平滑处理、图像尖锐化处理及彩色图像处理等常见的处理方式。该系统我们运用几种方法同步进行, 目的是达到火焰图像预期的增强效果。
在火焰图像经过预处理后, 下一步是进行火焰分割。在充足的自然光的条件下, 我们采取颜色特征提取的方式, 把疑似火焰区域从图中给分割出来。在一般情况下, 火焰虽然可能会有多种不同的颜色, 但主要集中在暗红色、红色、橙色、黄色、白色、蓝色这些颜色中。即使在不同的环境下火焰会呈现不同的颜色, 但它常常会经过由红过渡到黄的燃烧过程。此时图像的RGB值符合R≥G≥B的关系。与此同时, 我们采取转换到HSI空间, 进行多特征采取。在HSI空间中, 火焰的色度值H通常在0~60度之间, 此外, S满足100, I满足255。图像中满足以上四个条件的像素当作是火焰的候选区域。
火焰的颜色提取之后的图像可能会存在噪声, 我们采用中值滤波进行去噪。
在 (Y, Cr, Cb) 空间中, 火焰和其他相关物体有着明显的区别。在二维的 (Cr, Cb) 空间里, 火焰像素的分布接近正态分布, 而其他物体则不具有该特性。所以我们采取将火焰图像转换到 (Y, Cr, Cb) 空间, 对像素进行分析, 将接近正态分布特性的区域提取出来。
也就是说, 当检测图像在的二维的 (Cr, Cb) 空间满足正态分布的时候, 可以粗判定为火焰图像。
经过火焰颜色特征粗判定后, 下一步进行火焰的动态特征的判定, 最终裁决是否为火焰。对于人类而言, 形状是我们判断一个物体的重要特征。所以计算机对于图像中物体形状的分析也是非常有益的。根据图形图像的相关理论, 我们获取火焰图像的动态特征, 以此作为判断的依据进行进一步的处理。我们运用了与物体形状相关的两个特性来作为我们火焰图像的判断依据。
A.不规则性
考虑到森林火灾火焰形状的不规则性和对我们的系统可能产生干扰的像光源 (如手电筒, 探照灯灯等) 的形状特征具有较高的规律性的特点, 我们采取用不规则的程度作为判断是否为火焰的依据。不规则度表征了物体形状的不规则程度, 其表达式如下:
我们定义周长为物体的边界长度, 可以通过火焰图像候选区域边界上像素的个数来获得。面积通过统计所有可能烟雾区域像素点数获得。候选图像的形状越复杂, 其不规则度值越大。
获取火焰候选图像不规则度的具体步骤:
(1) 对颜色分割得到的火焰候选图像提取边缘, 算出边缘上像素个数得到L。
(2) 求出火焰图像中疑似火焰区域的面积, 即求出在上一步颜色分割中所有被置为黑色的像素总数S。
(3) 求不规则度, 并计算出连续n帧图像的平均值。
B.扩散性
一般在火灾发生后, 火灾面积会呈现不断扩大的趋势, 过火面积会连续扩大, 相应的相机探测到的火灾区域面积也会逐渐增大。也就是说在我们获得的图像上高亮的区域也会持续的增长。因此, 我们可以定义“k”表示后续疑似火焰区面积与先前疑似火焰区域的面积的比值来表征火灾的扩散特性。在我们设定相应的参考时间内, k值越大, 火灾的扩散特性越强。
在火焰检测部分, 首先将拍的的图像进行前期的预处理后, 进行基于颜色特征筛选出火焰区域的候选图像, 然后再根据这些图像的不规则性和扩散性做出是否为火焰区域的最终判定, 然后将判定结果输入给下一步。
⛄二、部分源代码
function varargout = MainGUI(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @MainGUI_OpeningFcn, ...
'gui_OutputFcn', @MainGUI_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before MainGUI is made visible.
function MainGUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to MainGUI (see VARARGIN)
% Choose default command line output for MainGUI
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes MainGUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% 在运行主界面时隐藏一些控件
% set(handles.axes1,'visible','off');
% set(handles.text1,'visible','off');
% --- Outputs from this function are returned to the commandline.
function varargout = MainGUI_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in openvideo_button.
function openvideo_button_Callback
% hObject handle to openvideo_button (see GCBO)(hObject, eventdata, handles)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% 读取视频路径
[filename,pathname,filter] = uigetfile({'*.mp4;*.flv;*.avi;*.rmvb;*.f4v;*.mpeg;*.mkv'},'选择视频');
if filter == 0
return
end
str = fullfile(pathname,filename);
% 读取视频
filename = str;
% obj是一个对象
obj = VideoReader(filename);
% 视频的第一帧预览显示在界面
Show_Frames=read(obj,1);
axes(handles.axes1);
imshow(Show_Frames);
set(handles.axes1,'visible','on');
axis off
## ⛄三、运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/9363e3f22eff4d6888a58379ef41a448.jpeg#pic_center)
## ⛄四、matlab版本及参考文献
**1 matlab版本**
2014a
**2 参考文献**
[1] 杨雨卓.基于图像处理的森林火险检测系统[J].电子世界. 2018,(16)
**3 备注**
简介此部分摘自互联网,仅供参考,若侵权,联系删除