基于matlab 的燃油喷雾图像处理方法,基于MATLAB的燃油喷雾图像处理方法.doc

基于MATLAB的燃油喷雾图像处理方法

基于MATLAB的燃油喷雾图像处理方法

摘要:提出了基于MATLAB的燃油喷雾图像处理方法。通过对喷雾图像的采集, 分割和滤波处理, 将多幅图像转换融合为一幅

比较清楚的二值图像, 对拍摄的喷雾图像进行了去噪及二值化等初步处理, 并提取其轮廓图, 求取中心最远点和边界点坐标, 计算得到燃油喷雾的射程,提取其边缘图像, 对不规则的喷雾图像边缘进行了最小二乘拟合, 得到了最近似于该边缘的2 条相交直线, 二者夹角即为所要求的雾化角。根据最小二乘拟合的定义, 该方法的误差平方和最小, 从而使雾化角的确定精度大大提高。本方法可为分析燃油喷雾对柴油机性能的影响提供参考依据。

关键词: MATLAB 燃油喷雾 图像 角点检测 最小二乘法

正文:因为柴油机的燃烧过程受喷入燃烧室内的喷雾状况控制, 所以发动机的性能及其排气烟度在很大程度上受油束的喷雾锥角、射程及雾化质量等喷雾特性的影响。研究能够预估发动机性能和排放的燃烧模型时也非常需要喷雾特性方面的数据, 但有关这方面的知识却很贫乏[ 1] 。因此近些年来人们加速和促进了柴油机喷雾特性的研究。有人利用高速摄像机研究燃油喷雾, 但必须对底片处理后才能获得喷雾信息, 而底片处理时各种环境因素对结果有一定影响; 有人利用激光CT技术对喷雾场进行研究[ 2] , 用红宝石激光器作为光源, 用CCD摄像机适时的采集柴油机燃油喷雾。这种方法较为先进, 但造价较高。本试验利用自制的频闪喷雾成像系统, 可以拍摄一定时间间隔的喷雾图像, 像素范围可达1 600 ?? 1 200, 清晰度高。由于MATLAB软件拥有强大的图像处理功能和高效的数值计算能力, 所以本文利用MATLAB 程序来分析处理燃油喷雾图像, 以便能够比较准确的获得燃油喷雾的许多有价值的信息。为进一步探讨燃油喷雾特性对柴油机性能的影响提供参考依据。

1?? 试验系统与研究方法

试验系统如图1 所示。本试验用数码相机拍摄燃油喷雾图像,

1. 喷油泵实验台2. 喷油泵3. 泵端压力传感器4. 喷油器5. 电荷放大器6. 频闪同步控制器7. 微型计算8. 闪光仪9. 闪光灯10. 数码相机

图1频闪喷雾摄像系统示意图

图2图像处理流程图

2算例

试验用喷油嘴型号为DLLA154S324, 启喷压力为20M Pa, 喷油泵转速为300 r /m in, 喷射背压为大气状态, 利用频闪喷雾成像系统拍摄相对于基准信号有不同延时时刻的喷雾图像。现在读入图像, 如图3 所示。

图3拍摄的喷雾图像示例

按上述方法对每幅图像进行分割和滤波处理, 把真彩色图像分别转换为比较清楚的黑白图像, 如图4所示。为减少不确定因素,并提取喷雾图像的轮廓图, 如图5所示。

图4处理后的二值喷雾图像

图5喷雾图像的轮廓图

通过微型计算机控制闪光仪的闪光时刻, 使闪光时刻与喷油器某时的喷雾同步, 拍摄每幅图像时闪光灯的持续闪光时间为0. 1 m s。为使所拍摄的图像具有可比性, 用压力传感器获取的压力信号为基准信号, 通过调整相对于基准信号的延时时间获取有一定时间间隔的喷雾图像, 以观察燃油雾化过程[ 3]。由于所拍摄图像并非来自同一循环, 本试验通过在不同循环中相对于基准信号的相同时间间隔拍3幅, 以便减少不确定因素, 减小随机误差。由于拍摄图像中油束的大小与实际大小有一定差别, 因此需要标定。方法是将数码相机的焦距和景深调好以后, 把一已知长度的纸条挂到喷油器上, 进行拍照。将其实际长度与照片中长度相比, 即得实物与图像的比例尺。通过比例尺换算可以得到油束的实际长度。并且在一次试验中, 数码相机的焦距和景深调好以后不再变动。数码相机拍摄的喷雾图像为真彩色图像, 即RGB 图像, 每幅图有1 600 ?? 1 200个像素。图像的读入由MATLAB程序的imread函数来实现。执行该函数后, 得到一个代表该图像的数字矩阵。为便于处理, 首先把真彩色图像转换成灰度图像, 再运用直方图均化函数histeq处理, 使图像细节更加清楚, 然后设置阈值, 对图像进行分割; 为了强化图像边界和消除噪声的影响, 对灰度图像进行LOG算子滤波, 并用二值分割图像进行与运算, 然后利用MATLAB 的相关函数选择所得二值图像中特定的对象,此时得到一幅黑白图像, 对其余同一延时时刻的2 幅图像, 均作同样处理, 共得到3 幅黑白图像, 将3 幅黑白图像进行与运算,得到一幅包含全部输入图像中特定对象的比较清晰的二值图像。运用MATLAB中jharris角点检测函数提取图像的角点,然后再利用ginput函数提取出油束的中心点与最远点,计算中心点与各油束最远点的距离作为该油束的射程,计算公式为:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab声音信号时域频域转换,关于处理用采集卡采集到的声音时域信号转化成频域信号........

求助各位大神,我用麦克风通过采集卡采集到了一段声音数据,数据在附件里,矩阵中第一列为时间,第二列为采集到的声音的电压信号,采样频率为1万Hz,做出时域图和频域图的程序如下所示:clear;clc;loa…

win7和mysql乱码,windows本地mysql数据库存入中文乱码

windows本地mysql数据库存入中文乱码作者:PHPYuan 时间:2018-07-23 03:41:20出现的问题: 我这页面存中文到数据库会乱码 我打了断点 中文是传到后台dao层的 然后我试了下 把我本地项目连服务器数据库 保存不会乱码 我就怀疑是本地数据库有问题 然后我用navicat写了个…

毕业设计matlab在误差处理中的应用,毕业设计MATLAB在误差处理中的应用要点分析.doc...

毕业论文任务书院(系) 机械工程学院 专业班级 测控082级 学生姓名 马 魁一、毕业论文题目 MATLAB在误差理论中的应用二、毕业论文工作自______ ___年____ _月___ __日 起至____ _____年 月_____日止三、毕业论文进行地点: 陕西理工学院四、毕业论文内容要求:传统的数…

帝国cms 未审核 showinfo.php,帝国CMS批量修改文章未审核状态及批量修改上线时间...

帝国CMS批量修改审核文章未审核状态,批量自定义指定文件上线时间!用法:后台增加自定义页面 PHP CODE:$infouptimeto_time(2016-06-12 10:50:19); //上线时间$sql$empire->query("select * from {$dbtbpre}ecms_".$class_r[2][…

php 完美防sql注入,PHP 完美的防XSS 防SQL注入的代码

PHP "完美"的防XSS 防SQL注入的代码function gjj($str){$farr array("/s/","/]*?)>/isU","/(]*)on[a-zA-Z]s*([^>]*>)/isU",);$str preg_replace($farr,"",$str);return addslashes($str);}function hg_input_b…

oracle 并行执行 杀掉会话,oracle – 为什么即使我禁用并行DML和并行DDL也会创建并行会话...

READ和WRITE并行性并不总是捆绑在一起.alter session disable parallel dml;仅禁用语句的WRITE部分的并行性. READ部分可能仍然并行运行.由于这是MERGE操作,因此并行提示请求读写并行写入.此外,并行提示覆盖alter session disable parallel query;,即使它不覆盖alter session d…

oracle临时表空间占用率过高,ORACLE 临时表空间使用率过高的原因及临时解决方案...

数据库temp临时表空间增大,一般在数据安装时设置临时表空间大小,默认的情况下都是设置为自动增长。这样会引起一个问题:在数据库使用中temp表空间会自动扩展的越来越大,造成磁盘空间使用不足。引起临时表空间增大主要使用在以下几…

oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接

()相当于()。在Oracle中,()表示JOIN中的“可选”表。 所以在你的第一个查询中,它是一个().在你的第二个查询中,它是()。它们在功能上是等价的。在术语中,RIGHT或LEFT指定连接的哪一侧始终具有记录,而另一侧可能为空。 …

oracle中order by 2,关于oracle中ROWNUM和ORDER BY的问题(2)

SQL code16:29:53 scottTUNGKONG> SELECT a.*,rownum FROM (SELECT good_id, good_nm, prc FROM tb_ag001 ORDER BY prc) a;GOOD_I GOOD_NM PRC ROWNUM------ ------------------------------ ---------- ----------133337 阳光宝贝防晒修复套SPF-30 0 1133424 旋覆透白绣花…

oracle 600 侯,oracle在导入数据时报600错误的解决方法

前言前几天导入一个大容量dmp数据文件,报一个600错误,咨询网上的解决方法,按上面的处理一圈也没有整好,最后咨询组里一个大神,出现此错误 思路是,单个数据文件大小最大为32G,分析数据库后解决如…

php null截断 漏洞,CVE-2015-3412,CNNVD-201507-164|PHP NULL Character 安全漏洞 - 信息安全漏洞门户 VULHUB...

PHP(PHP:Hypertext Preprocessor,PHP:超文本预处理器)是PHP Group和开放源代码社区共同维护的一种开源的通用计算机脚本语言。该语言主要用于Web开发,支持多种数据库及操作系统。 PHP中存在安全漏洞,该漏洞源于程序没有…

Oracle插数据timeout,oracle 11g 频繁报kmgs_parameter_update_timeout

各位 好!我的数据库RAC 11g 最近频繁报错,数据库版本是11.2.0.1.0 详细错误信息如下:Errors in file /u01/app/oracle/diag/rdbms/glddb/glddb1/trace/glddb1_mmon_27429.trc (incident123874):ORA-00600: internal error code, arguments: …

shell从oracle中获取变量,shell 如何读取环境变量的值

笔者最近在开发中遇到新旧版本不兼容的问题,需要我解析的内容更新到最新后对于旧的日志将不支持,所以我需要设置开关来区分是用新的脚本还是原来旧的脚本;这样我就遇到了比较基础的问题,那就是在shell脚本中如何读取环境变量并使用…

linux touch更新文件时间,Linux文件时间的查看和修改touch

1. Linux文件的时间Linux下文件时间主要有下面三种:1.1 modification time(mtime)文件修改时间,即文件内容的修改时,更新这个时间,不包括文件权限和属性的修改。使用ls -l查看,默认显示时间为mtime$ ls -l uconv.h-rw-…

linux中ftp禁止匿名,linux下禁止root和匿名用户登录ftp

1、ftp通过root或其他用户进入可视化界面权限过大,容易导致系统文件误删windows下输入ftp://IP去访问,不需要账号密码就可以访问到ftp文件夹刚进去pub是空的,在linux上新增一个txt文件,再去windows下刷新可以看到txt文件&#xff…

mats显存测试软件linux环境,Mats显存检测软件下载-Mats显存检测软件最新版下载-微侠手游网...

Mats显存检测软件是一款专业的显卡检测工具,全系统都是中文的,是一款装机必备的硬件工具,帮助你了解自己的显卡运作情况,有任何问题都可以第一时间暂停,看完的小伙伴可以关注微侠网下载最新版软件以及查看最新攻略及资…

linux嵌入式智能家居环境监测系统的设计,智能家居环境监测系统.doc

智能家居环境监测系统.doc智能家居环境监测系统近些年来,智能家居系统的使用功能愈加健全。本文之中在充分了解嵌入式系统平台的具体构建的前提下,以智能家居系统当前的功能要求为主要方向,以该平台的硬件设计为切入点,细致探索了…

linux驱动与dts匹配过程,自己编写从应用到DTS与驱动

这里的思路依然是从应用到drivers编写,只是贴出来重点部分。import android.app.InoGpioManager;((InoGpioManager) context.getSystemService(Context.INOGPIO_SERVICE)).ioctl(cmd,val);InoGpioManager.java的编写:public class InoGpioManager{privat…

完全用 gnu/linux 工作,怎样完全用 GNU/Linux 工作

怎样完全用 GNU/Linux 工作说了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处…

c语言以顺序结构存储的二叉树的非递归遍历,C语言二叉树的非递归遍历实例分析...

本文以实例形式讲述了C语言实现二叉树的非递归遍历方法。是数据结构与算法设计中常用的技巧。分享给大家供大家参考。具体方法如下:先序遍历:void preOrder(Node *p) //非递归{if(!p) return;stack s;Node *t;s.push(p);while(!s.empty()){ts.top();prin…