繁体   English   中英

MATLAB,气泡流中自由表面检测算法

[英]MATLAB, algorithm for free surface detection in bubbly flow

我正在尝试找出一种从PIV图像中检测自由表面的算法(请参见附件)。 主要问题是,在考虑中的流动中,气泡被注入到流体中,气泡由于浮力而上升,并倾向于位于表面顶部。 我不希望这些被误认为是自由表面(实际上是希望它们下面的“第二个”边缘)-我正在努力弄清楚如何将其包括在算法中。 理想情况下,我想要一个x和y值的数组,它们表示自由表面的坐标(如连续的平滑曲线)。 我最初的方法是从左到右扫描图片,一次扫描一列,找到一条边,移至下一列,等等。成两半。 所以我想知道是否有一些更复杂的方法可以解决此问题。

如果有人在图像处理/边缘检测领域有任何专业知识,则任何建议都将不胜感激。

典型的PIV图像

期望的结果

我认为您实际上可以使用形态学方法解决问题。

A = imread('./MATLAB/ZBhAM.jpg');

figure;
subplot 131;
imshow(A)

subplot 132;
B = double(A(:,:,1));
B = B/255;
B = im2bw(B, 0.1);
imshow(B);

subplot 133;
st = strel('diamond', 5);
B = imerode(B, st);
B = imdilate(B, st);
B = imshow(B);

得到以下结果: 在此处输入图片说明

如您所见,这种方法并不完美,主要是因为我在im2bw为阈值选择了一个随机值,如果您对图像的不同列使用自适应阈值,则应该会更好。

否则,请尝试在照明上工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM