如何标记图像中的线条

时间:2016-12-12 17:07:27

标签: matlab image-processing

我想在图像中标记每行具有唯一编号。我使用了这种标记算法(如下所示),但没有正确标记线条。请帮忙。并且保存的图像也显示在行上的数字/标签。

imBin = imread('lines.png');
L = bwlabel(imLines);
s = regionprops(L, 'Centroid');
imwrite(imLines, 'labeled-lines.png');
figure, subplot(1,2,1), imshow(img), title('original image');
subplot(1,2,2), imshow(imLines), title('image with lines');
hold on
for k = 1:numel(s)
    c = s(k).Centroid;
    text(c(1), c(2), sprintf('%d', k), ...
        'HorizontalAlignment', 'center', ...
        'VerticalAlignment', 'middle');
end
hold off

输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

应用函数bwlabel将“标记”二进制图像。

如果任意两个白色像素之间存在白色连接,则它们将属于同一区域,因此获得相同的标签。

该算法不关心任何形状。什么是连接属于一起。

所以你不可能指望它们如果相互接触,就会给每个“线”一个单独的数字。

如果你想让线条适用Hough变换或类似的东西。

对于显示问题,如评论和链接答案中已经提到的,您只需更改数字颜色和/或将文本位置移动到白色上。您无法在黑色背景上看到黑色数字。