从图像中删除线条

时间:2016-03-03 04:35:00

标签: image matlab image-processing line

我使用Hough Transforms来检测图像中的直线。 houghlines函数返回可以绘制的行端点。但是我希望通过在像素宽度为2的图像上创建一条黑线来从图像中删除检测到的线。

这是Hough线到图像上的示例图。 enter image description here

这是一个示例输出。我想将所有绿色像素设置为零。我已经尝试使用这个Bresenham代码来获取该行的两个端点之间的所有点并将它们设置为零。然而,结果并不像预期的那样。

1 个答案:

答案 0 :(得分:1)

有不同的方法可以做到这一点。一种非常简单的方法是使用im2bw来设置阈值。

I = imread('fH7ha.jpg');

figure;
subplot 121; imshow(I); title('before')

I = rgb2gray(I);
I = im2bw(I, 0.9);

subplot 122; imshow(I); title('after')

结果是: enter image description here

然而,这有点不准确,因为线的某些部分位于图像之外,您可以使用imdilate隔离绿色区域并扩大它:

I = imread('fH7ha.jpg');

figure;
subplot 131; imshow(I); title('before')

green_pixels = I(:,:,2)-I(:,:,1)-I(:,:,3);
green_pixels = im2bw(green_pixels, 0.1);
se = strel('disk', 2);
green_pixels = imdilate(green_pixels, se);

subplot 132; imshow(green_pixels); title('green pixels')

I = rgb2gray(I);
I(green_pixels) = 0;

subplot 133; imshow(I); title('after')

enter image description here