我想在下图中找到蓝色和灰色之间的线:
更准确地说,是那条线的终点。
霍夫变换是一种选择吗?如果是,我应该如何在使用 Hough 之前设置图片?
任何解决此问题的方法都会有所帮助。
我想在下图中找到蓝色和灰色之间的线:
更准确地说,是那条线的终点。
霍夫变换是一种选择吗?如果是,我应该如何在使用 Hough 之前设置图片?
任何解决此问题的方法都会有所帮助。
一般来说,你需要一个边缘检测器,比如 Canny 边缘检测器,来解决这类问题。霍夫变换对于提取线条而不是边缘很有用。
但是,在这种特定情况下,您最好执行以下操作:
imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);
因为它是如此简单的图像。
对于这样一个简单的图像,如下所示的卷积核可以很好地找到边缘:
[-1 2 - 1]
这会在每个边缘点产生一个边缘像素。没有大惊小怪,没有混乱。Canny 在这个问题上太投入了。如果要查找任意角度的线的边缘点,则可以使用简单的拉普拉斯算子、高斯拉普拉斯算子 (LoG) 或高斯差分 (DoG)。Sobel 和 Prewitt 也很简单但不合适,因为它们产生了“双倍厚度”线。
这里描述了一个邪恶的 Hough 快速实现:http: //www.ic.uff.br/~laffernandes/projects/kht/index.html
还有一些“无参数霍夫”算法非常快,但实现和调试有点棘手。