如何检测图像中的45度边缘

时间:2011-12-17 18:52:03

标签: image-processing computer-vision

如果不是获得所有边缘,我只想要制作45度角的边缘。什么是检测这些的方法?

是否有可能检测到所有边缘,然后以某种方式运行受约束的霍夫变换以检测哪些边缘形成45度?

3 个答案:

答案 0 :(得分:4)

使用对角线结构元素并简单地卷积图像有什么问题?

详细

请阅读here,并且应该清楚如何构建结构元素。如果您熟悉卷积,那么您可以构建一个简单的结构矩阵,在没有理论的情况下放大对角线

{ 0,  1,  2}, 
{-1,  0,  1}, 
{-2, -1,  0}

这个想法是:你想要放大图像中的像素,其中45度低于它的45度不同于它。这就是你处于45度边缘时的情况。

举个例子。以下图片

enter image description here

通过上述矩阵卷积得到灰度图像,其中最高像素值具有恰好45度的那些线。

enter image description here

现在的方法是简单地将图像二值化。 Et voila

enter image description here

答案 1 :(得分:1)

如果你使用内核但想要线方程,那么在找到边缘像素后你仍然需要进行线拟合。如果您确定线条恰好是45度,那么知道任何发现的线或线段上的(x,y)点就足以找到线方程。

霍夫(rho,theta)参数空间可以使用你想要的任何范围的rho和theta。您可以预处理图像以适当的角度支持相邻像素。例如,如果边缘像素具有适当角度的8个邻居,则给予“奖励点”。您当然可以将基于内核的方法(例如建议的halirutan)与参数或无参数Hough算法混合使用。

最近Hough的实施以极快的速度运行,因此如果您正在寻找快速解决方案,您可以下载开源代码,然后只需过滤输出。

“通过改进的Hough变换投票方案进行实时线路检测” 费尔南德斯和奥利维拉 http://www.ic.uff.br/~laffernandes/projects/kht/index.html

答案 2 :(得分:0)

首先,可以将其作为后期处理。 Hough的结果在(角度,半径)的参数空间中。 所以你可以简单地在一个角度=(45-5,45 + 5)和所有半径中切片。

另一种方法是边缘检测的输出仅包含45/135个角度边缘。