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

时间:2011-11-05 09:48:44

标签: matlab image-processing

我有一些这样的图像:

image

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


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

after closing and subtracting

1 个答案:

答案 0 :(得分:6)

我可以假设最终目标是缩小差距吗? 比您可能想要使用形态学操作。要缩小差距,您只需要所谓的“closing”。这是通过应用“dilation”而不是“erosion”来完成的。

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

编辑:在你的帖子后我决定更新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)

它会产生一个结果图像:

enter image description here

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