基于MATLAB的多循环火焰图像识别与叠加程序

Posted 研而有术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于MATLAB的多循环火焰图像识别与叠加程序相关的知识,希望对你有一定的参考价值。

基于光学发动机对内燃机缸内着火及火焰传播过程进行光学测试是研究发动机燃烧过程的重要手段。同内燃机的燃烧压力一样,其火焰传播过程也具有典型的循环特性,即每个循环的初始条件相同,点火时刻一样,也会存在火焰传播过程的循环变动。不同于缸压曲线,多循环火焰传播过程的图片无法全部展示出来,也难以观察具体到循环之间的差异,因此本期将介绍一种能对多循环火焰图片进行处理的方法和小程序。该小程序分为两部分,第一部分功能是对拍摄到的火焰图像进行降噪、识别、提取,并输出为二值化图像,第二部分则对二值化图像进行叠加、着色,生成相应的概率云图。该程序基于MATLAB内置函数以及ColorMap工具包等的简单调用,以下对该程序的思路进行简单介绍。

1. 原始图像的准备

本例中的火焰图像为通过高速相机拍摄的光学发动机缸内火焰传播过程图像,下图是点火前、点火时刻、火焰前期传播和火焰后期传播的图像,可以发现,视野中火焰后期较亮,甚至可以照亮光学视窗周围的活塞。


2. 图像降噪、识别和提取
火焰图像的读取在之前的推送“基于Python的火焰识别程序”中已经说明,即获取火焰图像的像素RGB通道像素矩阵,然后减去背景图片的像素矩阵,通常将上一节中的第一张点火前图像作为“background”背景图像,由于本例中图像已经比较明亮,因此不讨论图像增强的方法,图像增强可以采用之前推送中提到的直接将RGB值平方的方法。在本例中,图像降噪主要根据视窗尺寸设计“Mask Filter”,将视窗外的噪声或者光线反射等干扰信号过滤掉,仅保留视窗范围内的有效燃烧图像,如图中白色虚线圈。

基于MATLAB的多循环火焰图像识别与叠加程序

接下来,对图像进行灰度处理(其原理已在前面的推送中说明),并采用 “im2bw”函数将灰度图像转变为二进制图像(如下图所示),利用MATLAB中自带基于Otsu方法的内置函数Graythresh实时获取每一张图像的阈值,根据阈值来确定已燃区域和未燃区域。在二值化的过程中,阈值的选取对已燃区域识别的准确性非常重要,为了提高识别的准确性,在本研究中往往根据图像亮度,二值化阈值分开采用“自适应阈值”(Adaptive Threshold)和“固定阈值”,通常在阈值范围为0.01-0.1内时,采用自适应阈值根据亮度对像素进行划分,在此范围之外则采用固定阈值,图像较暗处为0.01,图像较亮处则为0.1。在获得二值化图像后,MATLAB将构成二值化图像的像素与“Mask Filter”所选中的区域相除,以获得火焰区域的面积。


基于MATLAB的多循环火焰图像识别与叠加程序

3. 图像叠加、着色

在对所有原始火焰图像进行二值化处理后,为了分析火焰传播过程的循环变动,我们需要对同一时刻的不同循环二进制图像进行叠加处理。简单思路就是在MATLAB中实现图像批量读取,调用叠加函数和着色函数,即多张图像叠加然后按像素点叠加重叠次数着色。这里采用MATLAB中自带的着色工具——彩色映射矩阵mapColormap函数),Colormap中常用的有18种色带,本例中笔者采用较为常见的“Jetmap”来进行上色。在光学机试验中,高速相机拍摄不同于容弹或者快压机试验,其触发模式采用随机重置触发,根据点火模块给出的5V方波信号上升沿触发,拍摄固定张数后停止,等待下一个触发信号,以此循环,因此在相邻两个循环同一时刻火焰图像中间相差的图片张数是固定的。在图像处理程序中,图像的本质是矩阵,而叠加的原理则是多张图片的矩阵相加,再除以已经叠加的图片个数,根据需要叠加的时刻来设置从第几张图像开始,根据每循环拍摄张数来设置间隔张数,循环叠加,最后效果如下图所示。

以上叠加着色后的概率分布云图,标尺固定为01,可以看出,实际最大概率并不能达到1,这里主要是为了在展示多个图像时,固定标尺以方便对比。那么,我们可以将标尺改为0到最大概率,只需将Caxis函数的取值范围改为“auto”即可,最后效果如下图所示。

小结: 该程序经过修改后可应用于物体轨迹预测、运动规律分析等场景。

 

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


以上是关于基于MATLAB的多循环火焰图像识别与叠加程序的主要内容,如果未能解决你的问题,请参考以下文章

请问怎么用matlab 把两幅图像叠加到一起?

求加权平均的图像融合matlab 程序

matlab imadd关于2幅图像叠加问题

计算机视觉小项目—基于RGB颜色特征的火焰识别

疾病分类基于matlab农作物叶子虫害识别与分类含Matlab源码 624期

智能火焰与烟雾检测系统(Python+YOLOv5深度学习模型+清新界面)