【问题标题】:Selecting Overlapping / Touching regions (Binary Images, Matlab)选择重叠/接触区域(二进制图像,Matlab)
【发布时间】:2023-03-12 17:17:02
【问题描述】:

我正在尝试从 2 个二进制图像中选择重叠/接触的图像。第一张图片(蓝色圆圈)有主体,我想找到任何附在上面的绿色三角形。

此处为第一张二值图像(为识别着色)

第二个二进制图像在这里

FinalImage = BinaryImage1 | BinaryImage2;

**Apply Filter**

预期结果:

注意未附加的绿色三角形是如何被删除的,所有蓝色圆圈都被保留了。

有没有办法做到这一点?

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    这需要形态重建!在形态重建中,您指定一个标记并使用形态膨胀从该标记点开始重建原始图像。

    幸运的是,MATLAB 已经有一个函数,在图像处理工具箱中称为 imreconstruct,由 imreconstruct(marker,image) 调用

    要识别触摸但不重叠的图形,我们可以对其中一个输入图像进行膨胀以使触摸图形重叠。作为结构元素,我们可以例如使用 3x3 正方形,因此我们也可以识别 8 连通图形。之后,我们将重叠点作为标记,并使用组合图像进行形态重建。

    dilatedImage1 = imdilate(binaryImage1, strel('square',3));
    finalImage = imreconstruct(dilatedImage1&binaryImage2, dilatedImage1|binaryImage2);
    

    当您写下所有圆圈时,即应保留 binaryImage1 的所有部分,我们可以使用将 binaryImage1 添加到结果中

    finalImage = finalImage | binaryImage1;
    

    对于您的两个示例图像,这会导致:

    右上角的圆圈没有连接任何三角形。我不知道该三角形是如何出现在您的预期结果图像中的,但我想这仅用于演示目的。

    注意:我在 MATLAB 中导入了 .jpg 示例图像,导致边框难看,所以我先对图像进行了形态学打开。边框仍然不是最佳的,但看起来还不错。

    【讨论】:

    • 啊,是的,很抱歉造成混乱;我在 MS Paint 中绘制了一个快速简单的示例。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-10
    • 2013-01-10
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多