首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >噪声图像中小气泡的检测技术

噪声图像中小气泡的检测技术
EN

Stack Overflow用户
提问于 2016-12-19 06:16:56
回答 1查看 1.1K关注 0票数 2

我正在编写一个程序,它使用计算机视觉技术来检测(和跟踪)一个非常嘈杂的图像流中的微小气泡。图像流来自双X射线成像设置,它输出左视图和右视图(由于准直不同,大小不同)。我的数据有两种类型:一组图像不那么嘈杂,我只是用来尝试不同的技术,另一组比较吵,这是检测工作的终点。图像流在60赫兹。这是X射线成像仪的原始图像的一个例子:

以下是一些感兴趣地区的样本。需要检测的斑点是图像中心附近的小黑点。

最初,我在OpenCV中使用了一种简单的轮廓/blob检测技术,但这些技术并没有多大帮助。最后,我转向了一些技术,比如使用形态学操作符“打开”图像,然后执行Laplacian的高斯斑点检测来检测感兴趣的区域。这给了我更好的结果的低噪声版本的图像,但失败的时候,涉及到高噪音的:给我太多的假阳性。以下是低噪声图像的结果(请注意输入图像被倒置)。

在MATLAB中,我目前基于LoG的方法的代码如下:

代码语言:javascript
运行
复制
while ~isDone(videoReader)
    frame = step(videoReader);
    roi_frame = imcrop(frame, [660 410 120 110]);

    I_roi = rgb2gray(roi_frame);
    I_roi = imcomplement(I_roi);
    I_roi = wiener2(I_roi, [5 5]);
    background = imopen(I_roi,strel('disk',3));

    I2 = imadjust(I_roi - background);
    K = imgaussfilt(I2, 5);
    level = graythresh(K);
    bw = im2bw(I2);

    sigma = 3;    
    % Filter image with LoG
    I = double(bw);
    h = fspecial('log',sigma*30,sigma);
    Ifilt = -imfilter(I,h);

    % Threshold for points of interest
    Ifilt(Ifilt < 0.001) = 0;
    % Dilate to obtain local maxima
    Idil = imdilate(Ifilt,strel('disk',50));

    % This is the final image
    P = (Ifilt == Idil) .* Ifilt;

有什么办法可以改进我目前的检测技术,使其工作的图像与大量的背景噪声?还是有更适合像这样的图像的技术?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-19 19:29:34

我要采取的办法是:

-Average背景减法

-Aggressive高斯平滑(this filter should be shaped based on your target object,在我的头顶上,我想你想要西格玛-大约是你物体最小横截面的一半,但你可能想要摆弄这个),基本上目标是尽可能模糊噪声,而不完全失去目标物体(根据形状和大小)。

-Edge检测如果可能的话,尝试特定于对象(基本上,在高斯平滑之后,看看对象的边缘是什么样子,并设置您的边缘检测以查找宽度和对比度偏移)

-May考虑在这里运行一个关闭操作。

-Search基于大小和形状的岛屿(完全封闭区域)滤波器的整个图像。

我有一种预感,尽管信噪比非常低,但你的噪声粒度有望比你的物体小得多。(如果你的噪音是相等的对比和相同的大小与你的对象.你被击沉了,需要重新评估你的收购,海事组织)

另一个音符根据你的速度需要。通过知道最后已知的位置和在本地搜索,以及知道新的目标可以从哪里进入图像,可以节省大量的处理费用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41216759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档