我想在下图中找到蓝色和灰色之间的线:



更确切地说,该线的端点。

霍夫变换是一种选择吗?如果是,在使用Hough之前应该如何设置图片?

解决该问题的任何方法都将有所帮助。

评论

在霍夫变换之前进行边缘检测。它将转变为两条黑色的亮线

#1 楼

通常,您需要像Canny边缘检测器这样的边缘检测器来解决此类问题。 Hough变换对于提取线条而不是边缘很有用。

但是,在这种特定情况下,您最好执行以下操作:

imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);


,因为它是如此简单。

#2 楼

对于一个简单的图像,如下所示的卷积核将很好地找到边缘:

[-1 2-1]

这将在每个边缘点生成一个边缘像素。没有大惊小怪,没有糊涂。 Canny对此问题太在意。如果要查找任意角度的直线的边缘点,则可以使用简单的拉普拉斯算子,高斯拉普拉斯算子(LoG)或高斯差分算子(DoG)。 Sobel和Prewitt也很简单,但不恰当,因为它们会产生“双重厚度”的线条。

这里描述了Hough的一种邪恶的快速实现,描述如下:
http://www.ic.uff。 br /〜laffernandes / projects / kht / index.html

还有“无参数霍夫”算法非常快,但是实现和调试却有些棘手。