【问题标题】:Houghlines2 with pixelated line带像素化线的 Houghlines2
【发布时间】:2012-03-09 12:14:24
【问题描述】:

我试图用 houghlines2 检测一条线,但我的线是像素化的,因此 houghlines2 无法将其识别为一条线。发生的情况是我检测到部分线条,但没有检测到整条线条 - 如图所示,红线越来越多地填充线条

我试图模糊这条线,但到目前为止没有运气。

代码:http://pastebin.com/zmsCFucM

有人知道如何解决这个问题吗?我和 canny 合作过也没有运气。

编辑

当我在油漆中测量线条时,假设它是 30。(我通过 sqrt(lengthx^2 + longy^2) 做到这一点)。然后 houghlines2 概率中的 minLength 必须更短。我认为这是我的问题,我不知道为什么它必须更短。有什么想法吗?

【问题讨论】:

  • 需要修改rho和theta分辨率。将 rho 设置为 2,而不是 1,将 theta 设置为 PI/90。
  • 不幸的是没有帮助
  • 这有帮助,我可以检测到线路。但虚线有问题
  • 虚线像素较少,因此您必须降低阈值。了解霍夫的工作原理是个好主意。试试wiki hough 并仔细阅读。
  • 嗨瓦西尔。我几乎让它工作了。我有一个问题。当我对图像进行 ROI 时,它不再匹配,即使它包含该行。知道这是为什么吗?

标签: opencv line detection hough-transform


【解决方案1】:

您可以尝试缩小图像...多亏了这一点,您的线条将是一个像素宽度! 理论上我们可以找到一组霍夫变换参数来检测你的线条。

您可以尝试在您的代码中将 CV_HOUGH_PROBABILISTIC 替换为 CV_HOUGH_MULTI_SCALE,这将尝试查找不同比例的行。

【讨论】:

    【解决方案2】:

    以下答案基于我从您的问题中收集到的信息。

    所以它检测的是两行而不是单行,对吧? 在检测到的两个(使用概率标志)中,比较四组线端点(每条线将有两个)。将有两个点之间的距离最小。合并这两个得到三分。现在的方法是考虑其他两点并画一条线。

    或在从霍夫线检测中获得的四个端点上使用线拟合函数(OpenCV 有一个)。 cvFitLine() 返回线的矢量表示 - 没有端点。因此,在彼此相距最远的霍夫线端点的坐标处剪裁该拟合线。

    【讨论】:

    • 它太像素化了,以至于找不到任何线条。我必须先模糊它才能找到任何线条
    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多