Image 从图像中删除线条
我使用了Hough变换来检测图像中的直线Image 从图像中删除线条,image,matlab,image-processing,line,Image,Matlab,Image Processing,Line,我使用了Hough变换来检测图像中的直线houghlines函数返回可以绘制的线端点。但是,我希望通过在像素宽度为2的图像上创建一条黑线来删除图像中检测到的线 这是图像上Hough线的示例图。 这是一个示例输出。我想将所有绿色像素设置为零。我已经尝试过使用这个代码来获取线的两个端点之间的所有点,并将它们设置为零。然而,结果并不像预期的那样。有不同的方法可以做到这一点。一个非常简单的方法是使用设置阈值 I = imread('fH7ha.jpg'); figure; subplot 121;
houghlines
函数返回可以绘制的线端点。但是,我希望通过在像素宽度为2的图像上创建一条黑线来删除图像中检测到的线
这是图像上Hough线的示例图。
这是一个示例输出。我想将所有绿色像素设置为零。我已经尝试过使用这个代码来获取线的两个端点之间的所有点,并将它们设置为零。然而,结果并不像预期的那样。有不同的方法可以做到这一点。一个非常简单的方法是使用设置阈值
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')
结果是:
但是,这有点不准确,因为线条的某些部分位于图像之外,因此可以隔离绿色区域并使用以下方法将其放大:
谢谢你的回答。我很感激。然而,这不是我想做的。因为绿线不是原始图像的一部分,而是图像上方的线图。因此,我想删除您删除的那条线,但不使用绿色。我只想要绿线的端点。你的意思是
lines=houghlines(…);xy=[行(1).点1;行(1).点2]代码>?是的。我就是这么想的have@harjatin,那么你想要什么呢。我不确定我有线路的终点。我可以画出它(比如这里的绿线)。我只是想找到一种方法来移除(设置值=0)落在那条线上的像素(绿色的)。我尝试使用bresenham获取线上的所有点,然后删除它们。但是,这不会删除绿线覆盖的所有像素。
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')