APP下载

一种基于MATLAB的喷雾锥角测量方法研究及应用

2018-03-20徐凯张永帅李楠甘豪

汽车实用技术 2018年4期
关键词:霍夫算子喷雾

徐凯,张永帅,李楠,甘豪

(长安大学汽车学院,陕西 西安 710064)

前言

在发动机喷雾特性的研究过程中,喷雾锥角和贯穿距离是两个重要的宏观参数。能精确测量这两个参数,对控制喷雾过程及提高燃油经济性具有重要的意义。本文主要讨论喷雾锥角的测量方法,通常的做法是将数码相机或高速摄像机拍出的照片放在 photoshop软件进行人工操作,得出喷雾锥角。但这种做法易受人为因素影响,存在较大的误差,现在仅用作参考值。本文则是利用 MATLAB软件进行相关程序的编写,利用程序来处理喷雾图片,获得了不错的效果。

1 喷雾图像的预处理

实验采用的燃料是纯柴油,在空气中进行喷射,用数码相机拍摄一组完整的喷雾过程。然后筛选出质量较好的图像作为原始图像。我们知道图像在采集的过程中会受到一系列影响因素的干扰,因而会产生各种类型的噪声[1],如光照不均、成像设备的内部噪声、由机械运动引起的噪声等。所以我们首先要对原始图像进行去噪处理。由于我们采用的是JPG格式的图像,这种彩色图像含有大量的信息,为了减少运算量和便于数据存储,我们把它转化为灰度图像。在此基础上再进行滤波处理,滤波的目的主要是为了消除或尽量减少噪声,从而改善图像的质量。由于中值滤波在去除噪声的同时,不会使图像边界变得模糊,这对于后续进行边缘检测和阈值分割十分重要,所以这里采用中值滤波。

2 阈值分割

将喷雾图像经过上述处理后,为了得到油束的两条边缘线,还需要将灰度图像进行二值化,图像经过二值化处理后,数据量进一步减少,边界轮廓逐渐清晰,便于接下来的操作。当然,阈值的选取将十分关键,阈值选取不当,可能会造成将背景和目标成分相互叠加,造成测量结果不准确。这里选用MATLAB图像处理工具箱的graythresh函数(全局阈值)来自动实现[2]。调用方式为:

其中I为经过滤波之后的图像,level为自动生成的阈值。执行此函数后得到的图像如图1所示。图像二值化操作完成后,得到了两条近似的油束边缘,下面的工作就是将这两条边缘线单独提取出来,为后续的边缘线拟合做准备。

图1 阈值分割后的图像

3 边缘检测

数字图像的边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域的重要基础,在工程应用中有十分重要的作用。函数的导数反映图像灰度变化的显著程度,一阶导数的局部极大值和二阶导数的过零点都是图像灰度变化极大的地方,因此可以将这些导数值作为相应点的边界强度,通过设置门限的方法来提取边界。常用的边缘检测算子有Roberts算子、Sobel算子、LOG算子、Canny算子等。基于本文的实际工况和直观感受,选用Canny算子作为检测算子。

4 形态学处理

数学形态学的主要研究内容是图像形态的几何特征,结构特征的定性描述与分析,是线性向非线性处理的过渡。在形态学基本运算中,腐蚀和膨胀是最基本的运算。腐蚀和膨胀的组合可以构成开运算和闭运算,可以有效去除一定程度的杂波,而同时不会影响目标物体的轮廓构成。经过一定的形态学处理后,我们再用Canny算子对二值图像的边缘进行检测,结果如图2(左边)所示,同时我们调用bwperim函数来确定图像的目标边界,调用格式如下:

其中BW1为输入的二值图像。conn为连通域,二维图像可取4、8,三维图像可取6、18和26。在这里我们取连通数为8。调用该函数后得到的结果如图2(右边)所示,可以看到二者基本吻合。

图2 形态学处理后图像的边缘检测

5 边缘拟合

这里采用Canny算子检测到的油束边缘作为待拟合的边缘,为了喷雾锥角的准确测量,需要把油束边界的两条边缘线进行直线拟合,这样便于实现程序化和快速测量。主流的直线检测方式有两种,Hough变换直线检测和最小二乘法直线检测。

5.1 Hough变换直线检测

Hough变换的基本思想是将直线上的每一个数据点变换为参数平面内的一条直线或曲线[2],利用共线的数据点对应的参数曲线相交于参数空间中一点的关系,使直线的提取问题转换为计数问题。同时Hough变换的主要优点是抗噪能力强而且受直线中的间隙影响较小。

具体而言,对于空间坐标系的直线方程y=ax+b上的某一点(x0,y0),对应参数平面(a,b)上的一条直线b= y0-ax0,而且该直线上的所有点在参数平面内对应的直线必相交于一点。另外,为了避免垂直斜率无穷大的问题,在应用时通常采用直线的极坐标方程ρ=x cosθ+y sinθ,此时参数平面为(ρ,θ)平面。下面是Hough变换的基本原理示意图。

图3 (x,y)空间到(ρ,θ)空间的变换

下面将用Hough变换对油束的两条边缘进行拟合,以图2 Canny算子检测到的边缘作为霍夫变换的原始图片,调用hough函数对原始图像进行处理,具体调用格式如下:

这里BW为图2(左边)所示的原始油束边界线,为二值图像。返回的H指的是霍夫变换矩阵,T, R分别为霍夫空间的θ,ρ轴所对应的数值。

同时用函数houghpeaks找出相应的峰值点,并在霍夫空间中用两个红色的小方框标注出来。对本文而言要检测的目标为两条油束边缘线,所以在霍夫空间中将会出现两个峰值点,这两个点就代表了油束的两条边缘线。程序的运行结果如图4所示。最后调用houghlines函数来提取线段,调用格式如下。

根据 Hough变换的结果得到图像 BW 中的线段。参数theta和rho由函数hough的输出得到。peaks表示Hough变换的峰值,由函数houghpeaks的输出得到。利用相关的程序命令找到对应的两条线段后,需要标记出线段的两个端点,这里设其中一条线段的两个端点分别为(x1,y1)和(x2,y2),则这条线段的斜率可以表示为同理可求出 K2。利用反正切公式可以求得相应的锥角,公式如下。

图4 霍夫变换空间

图5 霍夫变换拟合线段

继续运行程序,得到如图5所示的拟合结果,图中两条绿色的线段代表拟合的油束边缘,同时线段的端点也被标记出来,便于求得线段的斜率。最终求得θ值为0.2400弧度,转化为角度,即。

5.2 最小二乘法直线检测

最小二乘法(又称最小平方法)是一种数学优化方法,它通过最小化误差的平方和寻找数据的最佳函数匹配。本文中把油束的边缘看做是一系列离散的点,利用最小二乘法进行拟合,但前提是图中只有一条可拟合的直线。所以在拟合之前,要先做好准备工作,即把油束的两条边缘分开,使其各自位于一张图片中,然后分别进行拟合。

在中MATLAB中调用函数polyfit来拟合曲线,具体的调用格式如下:

其中x, y为离散的数据点,n为待拟合多项式的次数,这里我们要拟合的为两条线段,即为直线方程,取 n=1,返回的a 是包含多项式系数的数组,这里返回的数值为线段的斜率。求出两条线段的斜率 K1、K2后,利用公式求得喷雾锥角。程序的运行结果如图6所示。

图6 最小二乘法拟合油束的两条边缘线

同时得到喷雾锥角为13.4999°。

6 总结

至此油束的喷雾锥角测量工作已全部完成,细心的读者可能已经注意到油束的左右边缘不对称。这是因为我们是在空气中做的实验,实验室内有较弱的空气流动,所以对油束的发展有干扰作用,所以测得的锥角比实际值要小一些。不过本文重在介绍两种测量锥角的方法,对图像的预处理和实验环境的要求不够严谨,这是以后需要注意的地方。综合三种方法测得的锥角数据,从拟合线段的优良性看,最小二乘法略好于霍夫变换。但是最小二乘法易受强噪点的干扰,导致偏差较大,所以预处理就显得十分重要。霍夫变换适应性强,但对图像的分辨率要求较高[3]。所以总体而言,最小二乘法的拟合效果较好。

[1] 朱虹.数字图像处理基础与应用[M].清华大学出版社,2013.

[2] 周品.图像处理与图形用户界面设计[M].清华大学出版社,2013.

[3] 郭斯羽,翟文娟,唐求,等.结合 hough变换与改进最小二乘法的直线检测[J].湖南大学.2012.

猜你喜欢

霍夫算子喷雾
冰山与气候变化
有界线性算子及其函数的(R)性质
保湿喷雾大测评!效果最惊艳的才20块!
世界之巅的花园——库肯霍夫
还原喷雾
Domestication or Foreignization:A Cultural Choice
QK空间上的叠加算子
怎样正确使用喷雾式化妆水
当之无愧的“冰人”
睡眠喷雾