Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 从图像中删除线条_Image_Matlab_Image Processing_Line - Fatal编程技术网

Image 从图像中删除线条

Image 从图像中删除线条,image,matlab,image-processing,line,Image,Matlab,Image Processing,Line,我使用了Hough变换来检测图像中的直线houghlines函数返回可以绘制的线端点。但是,我希望通过在像素宽度为2的图像上创建一条黑线来删除图像中检测到的线 这是图像上Hough线的示例图。 这是一个示例输出。我想将所有绿色像素设置为零。我已经尝试过使用这个代码来获取线的两个端点之间的所有点,并将它们设置为零。然而,结果并不像预期的那样。有不同的方法可以做到这一点。一个非常简单的方法是使用设置阈值 I = imread('fH7ha.jpg'); figure; subplot 121;

我使用了Hough变换来检测图像中的直线
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')