图像处理获得气泡直径
前 言
气泡直径是研究气液以及气液固体系的重要参数,影响着液相流动、返混以及传质等性能。
测量气泡直径的方法主要有两种,一种是侵入式测量,例如毛细管吸力探针测量技术、电导探针测量技术、光纤探头测量技术,金属网感应器测量技术;另一种是非侵入式测量,例如相位多普勒测速技术、干涉粒子成像测量技术、数字图像分析测量技术。
侵入式测量技术会干扰液相的流动,因此通常会选用非侵入式测量技术测量气泡直径,而在所有非侵入式测量技术中,数字图像处理技术能处理非规则的气泡直径。
Bubble Diameter
那么,采集到气泡图像后,如何推算气泡尺寸呢?今天,小编介绍一种方便实用的气泡尺寸测量方法,即运用matlab获得气泡当量直径。
Matlab获得气泡当量直径的方法主要是将气泡图像转化成相应的矩阵,计算出气泡所覆盖的像素面积。
1 采集气泡运动图像
采集图像的设备有很多种,手机也是一种方便的采集图像设备,如图1,是采用手机拍摄的气泡运动照片,相比于高速摄像,手机像素较低,但也足够辨别气泡的形态。
图1 气泡运动照片
2 图像灰度化
首先,通过matlab中imread函数读取气泡运动照片;
然后,通过rgb2gray函数将其转化成灰度图,如图2。
转化成灰度图之后,测量管道壁面没擦干净的地方特别明显(小编内心OS:幸好自己不是处女座,不然要自带抹布先做会儿保洁工作,当然了,还是要保证测量管道壁面尽量清洁)。
图2 灰度化后的气泡照片
3 气泡二值图
选择合适的阈值,将气泡灰度图转化成二值图。鉴于气泡照片的拍摄质量还可以,所以采用全局阈值进行转化。
另外,什么是二值图呢?二值图就是只有0和1矩阵表示的图,像素1是白点,0是黑点。气泡灰度图处理后所得的二值图如图3所示。
图3 气泡二值图
4 二值图转置
气泡二值图中更容易看出壁面的脏东西了,暂且不处理它,先将气泡二值图做转置,也就是将图片矩阵的0变成1,原来的1变成0,转置后如图4所示。
图4 转置后的气泡二值图
5 图像过滤
此时的气泡二值图中仍存在干扰测量的尘埃微粒,因此要对其进行处理,处理原理是根据像素的连续区域的大小,由于尘埃微粒比气泡小很多,因此可根据尺寸将其过滤,在此通过bwareaopen函数,过滤掉像素小于100的区域。处理后气泡二值图如图5所示(此刻的气泡画面,处女座应该表示满意)。
图5 图像过滤后的气泡二值图
6 气泡填洞处理
目前的气泡二值图中,气泡中心存在空洞,需将其进行填补。
气泡填补前需确定气泡的具体轮廓。为什么要增加这个步骤呢?因为有时拍摄出的照片,由于光线的原因,气泡外轮廓是破损的,破损气泡很难修复。
图6 确定气泡轮廓
从边缘轮廓可以看出气泡是完全封闭,如若出现破损气泡,则必须进行破损气泡删除,或者选用合适的阈值对原灰度图进行处理。接下来对气泡进行填洞处理,结果如图7所示。
图7 填洞后的气泡图像
计算气泡当量直径前,需对气泡图像进行标定。计算出每个气泡所覆盖像素后,根据像素间距离与实际距离对应关系可以计算气泡面积,然后根据圆面积计算公式计算气泡当量直径。
相关MATLAB代码
I=imread('image.JPG');
F=rgb2gray(I);
LEVEL=graythresh(F);
T=im2bw(F,LEVEL);
[M,N]=size(F);
T_zhuanzhi=ones(M,N)-T;
T_bubble=bwareaopen(T_zhuanzhi,100);
T_edge=edge(T_bubble,'canny');
T_filled=imfill(T_edge,'holes');