问题标签 [hough-transform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7421 浏览

image-processing - 基于霍夫变换的道路检测

是否可以使用霍夫变换在自动驾驶汽车中检测和跟踪道路?如果是这样,是否有任何算法已经实现了这一点?很想有一个链接,因为我真的找不到任何不在我脑海中的东西。

特别是,我正在寻找使用两条直线的消失点来确定车辆航向的算法。但是,如果还有其他更简单的算法可以完成这项工作,我也愿意看看它们。

0 投票
1 回答
1283 浏览

c++ - 我们如何修改 OpenCV 并生成新的 DLL

OpenCV 库很棒。大多数函数都具有所需的功能,但是,我想修改一些函数并重新编译,以使其适合我的特定需求。我们将如何重新编译 dll 和其他文件?是否有内置脚本或者我们需要自己编写所有脚本?

0 投票
1 回答
247 浏览

algorithm - 将坐标拆分为 3 个子空间以解决无界性

我正在尝试实现级联霍夫变换(我已经实现了“正常”版本。)但我无法理解以下内容:

在图像上应用 HT 后,我在霍夫空间中留下了直线。HT的Cascaded版本需要我将霍夫空间分成3个子空间,这样就解决了无界值的问题。

我该怎么做呢?

这是霍夫空间如何分割的图片:替代文字

为了在保留对称空间对偶性的同时恢复参数空间的有界性,我们将(a,b)-空间拆分为三个有界子空间,如下图所示。第一个子空间也有坐标 a 和 b,但仅限于 | 一个 | <= 1 和 | 乙 | <= 1. 如果 | 一个 | > 1 和 | 乙 | <= | 一个 | ,点 (a, b) 出现在第二个子空间中,坐标为 1/a 和 b/a。如果,最后,| 乙 | > 1 和 | 一个 | < | b |,我们使用坐标为 1/b 和 a/b 的第三个子空间。

这是我感到非常困惑的地方,假设我在霍夫空间中有一条线。违反了怎么拆分 | 天天要闻 一个 | <= 1 和 | 乙 | <= 1?

我是否只是简单地遍历该行中的所有像素,如果有问题的像素的坐标大于 | 一个 | <= 1 和 | 乙 | <= 1,我将它绘制在第二个子空间中?

如果 Stack Overlow 不欢迎这类问题,我深表歉意——还有其他网站可以问有关算法的问题吗?

图片来源和以上报价

0 投票
3 回答
2231 浏览

c++ - 霍夫变换的累加器填充

我写了一段需要优化的代码。只是想与社区核对一下,看看该代码是否确实是最佳的。它填满了霍夫变换的累加器。实际上,我只是复制粘贴了 OpenCV 库中的大部分代码。谢谢!


0 投票
2 回答
3281 浏览

computer-vision - 人工环境中的车道检测

我正在编写一个可以在驾驶模拟器中检测车道的应用程序。环境比较简单,多为笔直的多车道道路,几乎没有曲率。目前,我可以使用(经典)霍夫变换成功检测线,但问题是 HT 自然也检测到不是车道的线。

我怎样才能更有选择性?我还没有画水平线,但仍然有一些线慢慢进入。理想情况下,我想检测车辆正在行驶的车道边界。以下是环境的典型图像

环境

这是我到目前为止正在做的事情:

    1. 因为无论我在哪里开车,环境或多或少都是一样的,所以我将感兴趣区域 (RoI) 设置为排除地平线及其上方的任何东西。
    2. 对图像设置阈值(稍后我会解释设置阈值的原因)
    3. Canny 边缘检测
    4. 应用霍夫变换
    5. 绘制除梯度为 0.0 或接近 0.0 的检测线

成像阈值的原因如下。如果您查看上面链接的环境照片,您会看到一条与道路平行的灰线。因为它是一条连续的线 - 与车道标记不同 - HT 最终会检测到它。我不能根据梯度排除它,因为它与车道标记具有相同的梯度。通过阈值处理,我可以删除它,因此只检测作为实际车道标记的线。

这是上述操作的结果

霍夫变换

我知道这个问题有很多解决方案,我已经阅读了无数关于这方面的论文,但它们似乎都在处理比这复杂得多的环境和/或简直超出了我的想象。就其价值而言,就在一个多月前,我还没有计算机视觉方面的背景,所以所有这些对我来说都是非常新鲜的。

更新 1:

我想用更好的术语来说,我正在寻找一种对车道建模的方法,以便不包括不适合模型的线。不幸的是,我不知道从哪里开始使用模型。有什么建议么?

对于它的价值,我已经设法识别出车辆正在行驶的车道,并且可以排除不属于“活动”车道的额外线路,可以这么说。希望这张照片会有所帮助

截屏

它并不完美,但它是我猜的。在建模之后,我的最终目标是生成车辆的航向/位置。但我只想首先获得相对稳健的车道检测。我希望有一种相对简单的技术可以帮助实现这一目标(不依赖于系统参数,例如视野焦距)。

0 投票
5 回答
6146 浏览

opencv - OpenCV中概率霍夫变换的具体实现是什么?

有谁知道 OpenCV 实现中概率霍夫变换的特定算法?我的意思是,是否有关于该算法的参考论文或文档?

为了得到这个想法,我当然可以查看源代码,但我想知道是否有任何关于它的文档。-- 它不在源代码的注释中(OpenCV 1.0)。

谢谢!

-斤

0 投票
1 回答
1452 浏览

matlab - matlab和openCV中的霍夫变换错误?

我一直在使用 Matlab 和 OpenCV/labview 的应用程序中使用霍夫变换,发现对于某些图像,霍夫变换给出了明显错误的线拟合(一致)

这是测试和叠加的图像。角度似乎正确,但 rho 已关闭。 替代文字

在下图中,您将看到顶部图像尝试将一条线拟合到原始图像的左侧,而底部图像尝试将一条线拟合到图像的右侧。

替代文字

在 Matlab 中,我通过调用 Hough 函数

在 C++ 中,我修剪了 OpenCV HoughLines 函数,所以我最终只得到了我们正在填充累加器的部分。请注意,因为我的 theta 分辨率是 0.2,所以我有 900 个角度要分析。tabSin 和 tabCos 在函数之前定义,因此它们只是角度的 sin 和 cos。

请注意,这些例程通常运行良好,但仅针对特定情况,它会按照我展示的方式执行。

TabCos 和 tabSin 在 Labview 中定义,代码为 int32 i;float64 theta_prec; float64 tabSin[180]; float64 tabCos[180];

theta_prec = 1/180*3.14159; 对于 (i = 0;i<180;i++) { tabSin[i] = sin(i theta_prec); tabCos[i] = cos(i theta_prec); }

任何建议将不胜感激

0 投票
4 回答
21592 浏览

image-processing - 解释霍夫变换

我只是在冒险,并迈出了迈向计算机视觉的第一步。我试图自己实现霍夫变换,但我只是不明白整个画面。我阅读了维基百科条目,甚至阅读了理查德杜达和彼得哈特的原始“使用霍夫变换检测图片中的线条和曲线”,但没有帮助。

有人可以用更友好的语言向我解释吗?

0 投票
1 回答
5890 浏览

opencv - 如何将坐标从霍夫变换(rho,theta)转换回图像(x,y)?

我有一个通过在 Opencv 中调用霍夫变换函数产生的线向量,需要将它们转换回图像坐标。我从 Opencv 的官方文档中找到了这段示例代码,但我不明白。有人能解释一下吗?

1000这条线是干什么的?

此外,为什么 pt2 有负 y 弦?例如,如果我的第一行是 (rho, theta) 格式的 (0,0),则 pt2 将是 (0, -1000)。

谢谢,

0 投票
3 回答
5537 浏览

math - 用于查找曲线段的霍夫变换

霍夫变换可用于从图像中提取线条。它也可以用来提取曲线——虽然这有点困难,因为更高维的霍夫变换会消耗资源。我想知道是否如何将霍夫变换限制为 3 阶曲线的 2D 投票空间,即 x^{3}+ax^{2}+bx+c ?

任何人都知道任何解释这一点的好网站(似乎找不到任何)。或者如果没有,请在此处进行解释:)。