我正在尝试从2个二进制图像中选择重叠/触摸图像。第一个图像(蓝色圆圈)有主体,我想找到附加的任何绿色三角形。
此处的第一张二进制图像(用于识别的彩色)
第二个二进制图像在这里
FinalImage = BinaryImage1 | BinaryImage2;
**Apply Filter**
预期结果:
注意如何移除未附加的绿色三角形,&保留所有蓝色圆圈。
有没有办法做这个伎俩?
答案 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;
对于两个示例图像,结果如下:
右上角的圆圈未连接到任何三角形。我不知道你的预期结果图像中出现了这个三角形,但我想这只是为了演示目的。
注意:我在MATLAB中导入了.jpg示例图像,这会导致边框难看,所以我首先对图像进行了形态学开放。边界仍然不是最佳的,但它看起来并不那么糟糕。