选择重叠/触摸区域(二值图像,Matlab)

时间:2015-06-06 08:55:55

标签: matlab image-processing

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

此处的第一张二进制图像(用于识别的彩色) 1st Binary Image

第二个二进制图像在这里 2nd Binary Image

FinalImage = BinaryImage1 | BinaryImage2;

**Apply Filter**

预期结果: Filtered Images

注意如何移除未附加的绿色三角形,&保留所有蓝色圆圈。

有没有办法做这个伎俩?

1 个答案:

答案 0 :(得分:2)

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

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

为了识别触摸但非重叠的图形,我们可以在其中一个输入图像上进行扩张,以使触摸图形重叠。作为结构元素,我们可以例如使用3x3平方,所以我们也识别8连接的数字。之后,我们使用重叠点作为标记,并使用组合图像进行形态重建。

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

当您写下所有圈子,即binaryImage1中的所有部分都应保留时,我们只需使用

binaryImage1添加到结果中
finalImage = finalImage | binaryImage1;

对于两个示例图像,结果如下:

final image

右上角的圆圈未连接到任何三角形。我不知道你的预期结果图像中出现了这个三角形,但我想这只是为了演示目的。

注意:我在MATLAB中导入了.jpg示例图像,这会导致边框难看,所以我首先对图像进行了形态学开放。边界仍然不是最佳的,但它看起来并不那么糟糕。