【问题标题】:How to detect 45 degree edges in an image如何检测图像中的 45 度边缘
【发布时间】:2015-04-18 15:49:10
【问题描述】:

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

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

【问题讨论】:

    标签: image-processing computer-vision


    【解决方案1】:

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

    详情

    请阅读here 并且应该清楚如何构建结构元素。如果您熟悉卷积,则可以构建一个简单的结构矩阵,无需理论即可放大对角线

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

    这个想法是:您想要放大图像中的像素,其中 45 度以下与 45 度以上不同。当您处于 45 度边缘时就是这种情况。

    举个例子。如下图

    由上面的矩阵卷积得到一个灰度图像,其中最高像素值的线条正好是 45 度。

    现在的方法是简单地对图像进行二值化。等等

    【讨论】:

    • 有意思,能详细点吗?
    • 你没有解释他们为什么使用这个特定矩阵的原因
    • @pooria 背后的原因是我们使用了一个简单的Sobel operator,这是一个简单的卷积核来检测水平和垂直边缘。现在,只需查看矩阵并尝试将其旋转 45 度。如果您搜索“sobel 45 degree”,您还应该找到一些匹配项。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-11
        • 2010-12-01
        • 2020-12-16
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多