用MATLAB检测二值图像中的线间隙

May*_*sam 4 matlab image-processing

我有这样的图像:

图片

某些线条存在差距,如何检测间隙在图像中的位置?


这是结果.似乎关闭会产生新的像素.

关闭和减去后

sci*_*gor 6

我可以假设最终目标是缩小差距吗?比您可能想要使用形态学操作.要缩小差距,您只需要所谓的" 关闭 ".这是通过应用" 扩张 "而不是" 侵蚀 "来完成的.

那你怎么找到一个差距被关闭的位置?您可以只比较前后图像并查看更改.

编辑:在你的帖子后,我决定更新answear.所以我在matlab中尝试了一小段代码.

originalBW = imread('Je3ud.jpg');
imshow(originalBW);

se = strel('line',8, 0); % a straight line of 8 pixels

closeBW = imclose(originalBW,se_disk);
figure, imshow(closeBW)

subtractedBW = closeBW - originalBW;

figure, imshow(subtractedBW)
Run Code Online (Sandbox Code Playgroud)

它会产生一个结果图像:

在此输入图像描述

所以基本上我们找到了正确的位置,但不幸地得到了很多误报.我认为你可以通过将每个人视为候选人匹配并摆脱误报来获得你想要的结果.假阳性的一个重要部分似乎是,如果你检查他们的垂直邻域(在原始图像中)你会发现有白色像素,因为白线并没有真正断开那里(因此他们不能是正确的解).因此,您可以尝试使用它来丢弃误报.