基于OpenCV的火灾视频识别方法探讨
2021-04-10熊正朱沛杰左冠中
熊正,朱沛杰,左冠中
(1.东北林业大学,黑龙江 哈尔滨 150040;2.西北工业大学,陕西 西安 710129)
0 引言
科学技术的进步大大推进了火灾预防和救援质量的提升,有效识别火灾将会为及时、高效地防控火灾提供巨大帮助。现阶段,火灾识别技术已经逐渐从感烟、感温探测发展为火灾图像视频探测,火灾识别的高效性、准确性和实用性都得到了大幅提升。为进一步优化火灾视频识别方法,可将OpenCV融入其中。
1 OpenCV概述
OpenCV是一种由C++语言编写,基于BSD许可发行的跨平台计算机视觉与机器学习软件库,可以在Windows、Android、Mac OS等系统当中运行。目前,OpenCV已经被广泛应用在多个领域当中,人机互动、人脸识别、机器视觉、运动追踪和分析、动作识别、图像分割等领域都可见其身影[1]。它具有强大的跨平台性,属于开源的开发工具,可以被免费应用在各个领域当中。
在实际应用环节,OpenCV有着运行速度快、开发目的明确、运行独立性高、图像视频输入输出效率高且程序底层与高层开发包完善的特点。而且,利用OpenCV能够为深度开发计算机视觉市场提供巨大辅助,它一直致力于成为标准API。应用OpenCV可以快速完成图像数据的分配、释放、复制和转换;能够快速获取文件与摄像头中的图像或视频并完成二者输出;可以基于奇异值算法、解方程算法或矩阵积算法处理矩阵和向量;还能够开展多元结构分析和数字图像的基本处理,更能有效开展动物体图像的追踪分析与运动分割。总之,OpenCV与视频监控领域的适配度极高,将其应用在火灾视频识别和监控领域,可以提高火焰图像采集效率、优化火灾视频探测功能,完善火灾视频识别系统奠定基础。
2 火焰图像的采集和处理方法
火灾发生后,燃烧过程会失控,这是导致火场情况危险而复杂的根本原因。火灾发生伊始,火焰特征将会发生明显变化,而识别和掌握变化规律就是实现火灾视频识别的有效方法。在实际作业环节,技术人员需要合理运行OpenCV,为提高火焰图像采集和预处理效果奠定基础。
2.1 图像采集
技术人员可基于VC6.0开发平台运行OpenCV,并依托于OpenCV与DirectShow的有机结合完成图像采集。后者属于流媒体处理的开发包,能够实现高分辨率图像采集,当摄像头分辨率较高时采集到图像分辨率也会相对较高。采集火焰图像时,将快速完成图像信号与数字信号的转换,进而实现图像信息的输出和储存,为有效检测后续目标做好充足准备。
2.2 图像预处理
火焰图像预处理则属于图像处理前的准备性和辅助性工作,该项工作的主要目的是消除火焰图像受到的噪声污染、失真问题,从而让图像的可用性得到提升[2]。在此环节,最为主要操作有两种,其一为图像增强,其二为图像复原。开展图像预处理工作时,相关工作人员应该有效开展位图与YCbCr图之间的转化、灰度化与二值化的调整和图像的增强。比如,可基于分量法、平均值法、最大值法、加权平均值法开展彩色图像的灰度化处理;以均值滤波、高斯平滑滤波、中值滤波等方法实现图像增强。
3 基于OpenCV的火灾视频识别系统
为了真正地发挥基于OpenCV的火灾视频识别方法的价值,相关工作人员需要合理设计基于OpenCV的火灾视频识别系统。而且,在实践工作中,不仅需明确系统开发设计的工具和运行环境要求,科学规划系统的火灾探测流程;更要明确运动目标检测与火灾图像特征之间的关系和火灾图像的形态特征处理要点。
3.1 系统设计
设计基于OpenCV的火灾视频识别系统时,需要应用OpenCV、Microsoft Visual C++以及MATLAB等开发工具,并使其在Windows系统当中运行。为保证系统运行质量,还应该为该系统匹配超高分辨率和帧速率可达30帧/秒的USB2.0摄像头,以及良好的运行环境。在设计环节,Microsoft Visual C++的应用,能进一步提升图像处理效率,它与OpenCV的融合可以实现高质量的图像采集、处理、可视化编程。而MATLAB的应用,则可以提升数值计算效率,让系统的计算机算法更为优越。经过合理设计,基于OpenCV的火灾视频识别系统,在读取视频文件后将会完成如下操作:
第一,系统将会自动完成差影图处理和视频图像变化预判操作;第二,在确定发生变化后,将基于视频图像的变化阈值,对其进行灰度化、二值化、去噪音处理和火焰面积分析;第三,经过上述分析,将基于火焰面积变化情况、火焰图像色彩分析情况开展RGB色彩分布判断和YCbCr火焰颜色与色彩分布判断;第四,基于灰度梯度分布状况以及火焰尖角分布情况判断是否发生火灾。
3.2 运动目标检测算法
火灾现场的情况十分复杂,在开展火灾视频检测与识别的过程中将会受到多种因素干扰,所以有效检测运动目标、消除背景干扰成为了提高检测火焰准确度的必然要求[3]。在此环节,相关工作人员可以基于三种算法完成运动目标检测。其一为帧间差分法;其二为背景图像差分法;其三为光流法。在实际应用环节,前两者适用于自然场景,而后者适用于运动的摄像机;三种算法中,帧间差法能够快速完成运动目标检测,但目标大多大于实际情况;背景图像差分法可能高质量提取运动目标,但易受到外界环境干扰;而光流法则有利于独立运动对象的检测,但由于算法过于复杂所以并不适用于实际检测。
3.3 火灾图像的形态特征处理要点
火灾图像的形态特征处理,是实现火灾视频识别的基础,处理工作的有效性将会直接影响基于OpenCV的火灾视频识别系统运行质效。当火灾发生时,现场的整体反应过程都极为复杂多变,所以火焰的视觉特征也会跟随火场情况而发生变化,那么在掌握这些变化的规律以及节点后,火灾检测人员就能够基于火焰图像状态合理判断火灾情况,进而对火灾进行有效识别。为此,基于OpenCV的火灾视频识别系统设计人员应该设计出完善的算法,全面处理从火灾现场采集到的视频图像,为真实、准确地判断是否存在火灾奠定基础[4]。
3.3.1 差影图处理
目前,求出差影图是实现多图像高效处理的常见准备方法。在处理差影图的过程中,可以从直接差影图和阈值差影图两个角度出发。实际上,求差影图就等同于基于差分法求运动目标,十分有利于检测图像的变化情况。通常,摄像头拍摄的环境图像变化几率极小,此时利用火灾探测仪进行实时监控会造成资源浪费。但发生火灾时,环境图像必然出现变化,利用算法较小的差影图来判断变化情况既能够保证火灾检测的及时性,又能够避免资源浪费和设备损耗。
若图像序列帧数整体以A来表示,并以(m,n)表示图像的像素点坐标,ft(m,n)表示数字化图像序列(t=1-A)。那么,大多数情况下A会大于2,而(m,n)∈整个图像O。在此情况下,各个通道的图像信号都有稳定的基准图像,可用f0(m,n)来表示,则在公式△ft(m,n)=ft(m,n)-f0(m,n)当中,若结果为0则无火灾,若结果非0则代表有火灾,或图像环境中进入了光源和高温物体。在差影图处理环节,还可以使用阈值差影图。这种处理方法的重点就是取阈值,进而设定图像变化标准,为准确判断图像变化情况做好准备。
3.3.2 真彩图像灰度化
在处理火灾图像形态特征时,应该合理应用真彩图像,也就是24位位图图像。在应用基于OpenCV的火灾视频识别系统时,应借助于OpenCV库函数转变真彩图像的数据格式,从而有效分析YCbCr火焰的数据分布特性奠定基础[5]。进行真彩图像的灰度化处理时,必须有效转化24位BMP图的RGB值,从而实现真彩图像到灰度图像的转变,让灰度分布检测工作能够顺利开展。
3.3.3 图像去噪声
去噪声处理是火灾图像形态特征处理的必要性操作,主要方法是借由过滤器完成图像过滤。所谓噪声,并不是常规意义上的噪音,而是数字化图像中的无用信息,有效去除这些信息可提高图像的实用性和火灾判断精准性。在此环节,可基于高斯过滤器、均平过滤器清除噪声。在OpenCV当中,均值滤波与中值滤波的主要函数存在差异,相关工作人员需要根据实际需要做好函数选择[6]。
3.3.4 计算火焰面积
精确地计算火焰面积,对准确识别和判断火灾情况有着十分重要的意义。在实践中,需完成图像二值化处理,从而获得二进制位图,然后再对其进行精确剪取,进而为有效计算火焰面积提供依据。此时,0代表二值化图像中的背景而1代表火焰,所以计算火焰面积可基于求和运算计算图像矩阵。
3.3.5 识别火焰尖角
火焰尖角识别也必须基于二值化图像来开展,通过这种护理能够区分火焰和感染源,是基于OpenCV的火灾视频识别工作中不可或缺的部分。在实际应用环节,需要全面扫描预处理后的二值化图像,并以图像首行、首列和尾列为0。那么,当扫描出非0时,代表该行不属于尖角的“尖”,需再次进行扫描。需要注意的是,若火焰存在尖角,则需要对其角度进行判断从而进一步确定其是否为火焰的尖角,让火灾视频识别结果更为可用。
4 结语
总而言之,基于OpenCV的火灾视频识别系统能够有效完成火焰识别分析,从而大幅提升火灾探测的及时性、准确性、实用性,将会为降低火灾风险、提高环境安全奠定基础。OpenCV技术应用,可精准捕获火灾场景视频,更能依托于火焰图像的有效处理,完成火灾视频识别系统编码,进而为真正识别火灾提供支持。