如果不是获得所有边缘,我只想要制作45度角的边缘。什么是检测这些的方法?
是否有可能检测到所有边缘,然后以某种方式运行受约束的霍夫变换以检测哪些边缘形成45度?
答案 0 :(得分:4)
使用对角线结构元素并简单地卷积图像有什么问题?
请阅读here,并且应该清楚如何构建结构元素。如果您熟悉卷积,那么您可以构建一个简单的结构矩阵,在没有理论的情况下放大对角线
{ 0, 1, 2},
{-1, 0, 1},
{-2, -1, 0}
这个想法是:你想要放大图像中的像素,其中45度低于它的45度不同于它。这就是你处于45度边缘时的情况。
举个例子。以下图片
通过上述矩阵卷积得到灰度图像,其中最高像素值具有恰好45度的那些线。
现在的方法是简单地将图像二值化。 Et voila
答案 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个角度边缘。