基于OpenCV识别火焰技术

2018-05-14 13:45吴蔓蔓
科技风 2018年19期
关键词:机器视觉

摘要:OpenCV(Open Source Computer Vision Library)是一个跨平台的开源计算机视觉库,可以在运行Linux、Windows等操作系统上运行。它由一些C语言函数组成,包含了图像处理及计算机视觉算法。本文主要工作是视频中的火焰识别,通过背景相减算法分离火焰和目标图像,基于阈值分割图像,再进行形态学去噪,最后通过RGB和HIS算法,识别判定火焰。利用OpenCV,在VS2017平台上实现了摄像机视频中火焰的检测。

关键词:OpenCV;火焰识别;机器视觉

1 研究背景与意义

随着人工智能的迅速发展,机器视觉越来越受到重视,比如火焰识别、人脸识别等等。中国的机器视觉技术发展迅速,应用范围渗透到了国民经济的各个行业。其主要原因是因为中国是世界主要的加工制造和应用中心之一,随着工业技术的日益精湛和工业标准的不断提高,机器视觉技术在我国也在不断发展壮大,同时人们也对机器视觉的发展加大了重视。

在消防领域,火焰识别发挥着至关重要的作用,如果机器能自动识别火焰并自行灭火,必定能减少人员伤亡和财产损失。OpenCV给我们提供了相当不错的函数库,通过OpenCV可以实现火焰识别功能,可以检测静态图片中的火焰,还可以检测实时视频中的火焰,同时在视频检测的基础上推广到了摄像头实时检测。

2 OpenCV机器视觉的介绍

通俗来讲,机器视觉就是用机器代替人眼的功能来实现相应的系统功能。机器视觉通过图像摄取装置(分CMOS和CCD两种)将已被摄取目标转换成数字图像信号,同时传送给专用的数字图像处理系统,从而得到被摄目标的图像形态信息,根据像素分布和颜色、亮度等图像信息,转变成数字图像信号,图像系统对这些数字信号进行各种算法运算来抽取目标的相应特征,进而根据识别的结果来控制现场的设备运行动作。

机器视觉系统最大的特点就是提高生产系统的灵活性,增加自动化程度。在一些不适合人工作业的危险工作环境中或者人类视觉难以满足要求的场合,机器视觉可以用来来替代人工视觉。同时,在大批量高强度重复性工业生产过程中,利用机器视觉可以极大提高生产的工作效率和自动化的程度。

OpenCV提供了丰富的大量的视觉处理算法,而且这些算法绝大部分利用C语言编写,同时OpenCV是开源库,处理地很恰当,不需要额外添加新的外部函数或工具支持就可以直接编译链接生成可执行程序,所以也有人用来做算法移植,OpenCV的代码还有一个很使用的特性就是,只要进行简单的改造就可以应用到DSP系统和ARM嵌入式系统中。OpenCV一直致力于现实世界的实时检测应用,通过优化的C语言程序的编写对其执行速度带来了很大的提升,并且可以购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)达到更快的处理速度。

3 OpenCV识别火焰设计

3.1 设计原理

利用OpenCV有强大的图像处理功能,可以从摄像机获取图像,然而普通的RGB图形并不能很好的反映出图像的亮度色度等图像特征,首先把图像转换成灰度图像,灰度图像可以展示出图像的亮度色度等图像特征。背景相减适合检测运动的物体,这里使用帧差法进行背景相减来检测视频中的火焰,可以检测到运动物体的边缘。

上面通过背景相减得到了目标前景图,再利用阈值分割方法,通过设定适当的阈值,删除一些过高或过低的像素点。将原图二值化后,通过图像形态学算法,对图像进行滤波去噪处理以便分割出较清晰明确的火焰,膨脹和开运算是图像形态学中最基本的操作方法,通过这两种操作可以消除噪声从而得到想要的图像。

判定火焰还可以通过RGB颜色模型来判定,火焰都有一定的颜色规律,将火焰分成R、G、B三个通道,即红色分量、绿色分量和蓝色分量,对火焰图像来说,红色分量和蓝色分量较大,任何火焰像素必须满足以下公式:

R(x, y)≥ Rt〖JY〗(1)

R(x, y)> G(x, y)> B(x, y)〖JY〗(2)

公式(1)中的Rt是红的分量应该满足的阈值。R(x, y)、G(x, y)、 B(x, y)分别是某个像素点(x,y)上的红色分量、绿色分量和蓝色分量。如果目标图像满足以上公式则基本判定是火焰目标,然而火焰图像还包括许多其他图像特征,为了更准确地判定火焰目标,我们可以将RGB颜色模型与其他判定模型进行结合。

单纯通过RGB颜色模型来判定火焰会有很多误报情况,这里介绍一种更有效的方法,就是将RGB和HIS颜色模型结合判定。HIS模型是通过色度、饱和度、亮度三要素进行颜色判断的,将RGB与HIS颜色模型的算法公式相结合,进而计算图像的颜色特征,实现火焰的判定。判定公式如下:

I = (R + G + B) / sqrt(3);

S = sqrt( (R G).^2 + (G B).^2 + (B R).^2 );

H = ( R .* 2 (G + B) )./sqrt( sqrt(2) * ( (R G).^2 + (G B).^2 + (B R).^2 ) );

H( G

3.2 运行结果

4 总结与展望

本文在OpenCV识别火焰技术等各个方面进行深入探讨的基础上,通过背景相减、阈值分割、图像形态学操作结合RGB和HIS模型,设计了简单的火焰识别程序,由运行结果中的图1和图二可以看出,程序识别了图像中的火焰。本文设计程序简单,易调试。希望今后在革新的基础上设计出性能更好,功能更强大的OpenCV识别火焰的程序来。

参考文献:

[1]于仕琪.学习OpenCV.北京:清华大学出版社,2009.10.

[2]郑莉.C++语言程序设计.北京:清华大学出版社,2010.7.

[3]谭歆.基于 OpenCV的运动目标检测方法研究与应用.电视技术,2010.

[4]孙即祥.图像分析.西安:西安电子科技大学,2007.1230.

[5]OpenCV学习记录之视频中的火焰检测识别 coldplayplay的博客.

作者简介:吴蔓蔓,山东济宁人,硕士,研究方向:无线通信。

猜你喜欢
机器视觉
全自动模拟目标搜救系统的设计与实现
基于机器视觉的自动浇注机控制系统的研究
大场景三维激光扫描仪在研究生实践教学培养中的应用
基于机器视觉的工件锯片缺陷检测系统设计
基于机器视觉技术的动态“白带”常规检测系统的开发
机器视觉技术在烟支钢印检测中的应用