喷雾宏观特性参数获取见:https://blog.csdn.net/yusuhuayu/article/details/117266949
1. 喷雾图像获取
高速相机
2. 喷雾图像处理
目的:
- 获取喷雾宏观特性
- 喷雾锥角
- 喷雾贯穿距
- 喷雾面积
- 油束对称性
处理内容:
去除背景、降噪去除飞溅液滴、分割油束区域
处理方法:
- 图像作差
I=imsubtract(A,B)
,获得纯净的背景,同时去除一部分彩色噪点 - 图像增强,增强油束与背景的对比度,尤其是油束边缘。
- 空域增强(
imhist()
获取直方图)- 灰度变换增强
- 直方图增强
- 直方图均衡化:
J=histeq(I,n)
- 直方图规定化:
hgram=ones(1,256); J=histeq(I);
- 直方图均衡化:
- 频域增强:先从空域变换为频域,处理结束再反变换
- Radon变换和反变换
radon()&iradon()
- 傅里叶变换和反变换
fft()&ifft()
- 离散余弦变换和反变换
- Hadamard变换、Hough变换(图像识别几何形状)以及图像的小波变换等
- Radon变换和反变换
- 空域增强(
处理喷雾图像可以通过对比度线性展宽,增加特定信息的灰度值范围,降低其他信息的灰度值,来提高对比度。
J = imadjust(I,[low_in high_in],[low_out high_out],gamma)
- [low_in high_in],[low_out high_out]:输入、输出图像的对比度限制
- 可以利用
stretchlim()
自动计算灰度图的最佳变换区间- gamma:输入和输出值关系的曲线形状
- =1(默认),线性映射
- >1,映射被加权到更低(暗)的输出值
- <1,映射被加权到更高(亮)的输出值
- 1×3向量
下图展示了调整对比度后图像、直方图与二值图的对比,可见油束边缘的对比度得到提高,防止后续过小计算喷雾锥角及面积。
代码如下:
% 对比度线性展宽
[X1,map1] = imread('E:\MATLAB\pics\1.tif',1);
I=imrotate(X1,90);
J=uint8(double(I)/170*255);
K = imadjust(I,stretchlim(I),[]); %自动计算灰度图的最佳变换区间
figure(1);
subplot(331);imshow(I);title('原图I');
subplot(332);imshow(J);title('手动调整J');
subplot(333);imshow(K);title('自动计算K');
subplot(334);imhist(I); %显示直方图
subplot(335);imhist(J);
subplot(336);imhist(K);
subplot(337);imshow(im2bw(I)); %显示二值图
subplot(338);imshow(im2bw(J));
subplot(339);imshow(im2bw(K));
- 降噪
图像增强的过程中会增加噪声,常用滤波方式:- 均值滤波
imfilter();
:用其像素点周围像素的平均值代替元像素值,但会过滤掉图像的边缘信息
借助函数fspecial()
生成3×3二维均值滤波器模板A=fspecial(average,3)
- 中值滤波
medfilt2()
:能很好地保留图像边缘,适合去除椒盐噪声 - 自适应滤波
wiener2()
:使用像素级自适应低通 Wiener 滤波器对灰度图像进行滤波
- 均值滤波
代码如下:
K=rgb2gray(K);
K1=imnoise(K,'salt & pepper',0.1); %加入椒盐噪声
a3=fspecial('average',3); %生成3×3二维均值滤波器模板
A3=imfilter(double(K1),a3,'conv'); % 中值滤波
M3 = medfilt2(K1,[3 3]); % 均值滤波
W3 = wiener2(K,[3 3]);
figure(2);
subplot(411);imshow(uint8(K1));title('加入椒盐噪声');
subplot(412);imshow(uint8(A3));title('中值滤波');
subplot(413);imshow(uint8(M3));title('均值滤波');
subplot(414);imshow(uint8(W3));title('自适应滤波');
- 分割油束
- 基于灰度阈值
- 全局阈值分割法
- OTSU阈值分割(大津法、最大类间方差法)
不受图像亮度和对比度的影响,按图像的灰度特性,将图像分成背景和前景两部分。简单有效、应用广泛,但对噪声敏感。
- 基于灰度阈值
figure(3);
T = graythresh(K); %大津法自动获取阈值
T1 = graythresh(K1);
OTSU = im2bw(K,T);
OTSU1 = im2bw(K1,T1);
subplot(411);imshow((K));title('原灰度图');
subplot(412);imshow(im2bw(K));title('原图二值化');
subplot(413);imshow(OTSU1);title('OTSU-椒盐噪声');
subplot(414);imshow(OTSU);title('OTSU-降噪后');
- 迭代式國值分割
T0=0.01 ;
T1=(min(K(:))+max(K(:)))/2 ;
r1=find(K>T1) ; r2=find(K<=T1) ;
T2=(mean(K(r1))+mean(K(r2)))/2 ;
while abs(T2-T1)>T0
T1=T2 ;
r1=find(K>T1) ;
r2=find(K<=T1) ;
T2=(mean(K(r1)) + mean(K(r2)))/2 ;
end
figure(4);
subplot(311);imshow((K));title('原灰度图');
subplot(312);imshow(OTSU);title('OTSU-降噪后');
subplot(313);imshow(im2bw(K,T2/255));title('迭代法');
- 基于区域
- 基于形态学分水岭法