问题标签 [houghlines]

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 投票
0 回答
56 浏览

matlab - 在 matlab 中使用自行实现的霍夫线检测器可视化线条时需要帮助

我能够使用以下代码在 Matlab 中重新创建 hough() 和 houghpeaks() 函数,但我目前正在努力将它们从参数空间解构到图像空间。

带峰的霍夫空间 这是我尝试将它们分解为图像空间。我首先将 Rho 和 Theta 对放入列表中。然后我创建了一组大小为 imageRow x imageColumn x rhotheta 对数的二进制矩阵。然后我将所有的 x 和 y 像素坐标代入函数 x cos(theta) + y sin(theta) = rho,如果 left - right == 0,我将标记二进制矩阵的位置 (x,y)作为 1,我针对所有 x 和 y 值对所有 theta 对运行它,并将它们分别存储在上面提到的二进制矩阵集中。

在第二个 for 循环中,我刚刚遍历了我获得的所有二进制矩阵集,并将它们聚合成一个二进制矩阵。我的问题来了,当它们彼此靠近时,我如何将我dehoughed的线条组合成一条线?如果我能够做到这一点,我可以通过降低我用 [X,Y] = find(Hough>0.47*max(Hough(:))) 设置的阈值来可视化更多的峰峰。因为现在如果我将阈值降低 0.01,我会有更多彼此如此接近的线条。你也许有更优雅和更好的脱壳方法?

将山峰脱皮成线

P/S:我认为如果我要立即在一个二进制文件中标记所有满足 x cos(theta) + y cos(theta) = r的像素坐标,我可以将两个循环变成一个 for 循环矩阵(如下代码所示)。但是,我不确定为什么当我这样做时,aggregatedImage 只是全为 0。因此我决定采用上述方法。

0 投票
0 回答
192 浏览

python - 霍夫变换:如何从投票矩阵中获取线?

所以我尝试使用 python 和 c++ 实现霍夫变换(使用 Pybind11 进行两种语言之间的接口)。当我绘制霍夫空间时,它似乎没问题,但我无法从投票矩阵的最大值中得到一条线。这是 C++ 代码(在我使用 PyBind11 之前看起来有点不同):

如您所见,函数的参数是图像矩阵,我将其转换为边缘为 1 其余为 0 的矩阵,所以我得到了我感兴趣的像素。 int angleAmount是我想尝试的角度范围int angleStep以及我真正想要使用的θ角的多少(例如,每隔一秒跳过一次θ)。但是对于这个例子,我将使用 angleAmount = 360 和 angleStep = 1。所以我将使用从 1 到 360 的所有角度。

这是python代码:

该函数houghTransform与我使用 PyBind11 导出到 Python 的 c++ 代码中的函数相同。以下是图片: 在此处输入图像描述

我还尝试使用此函数创建行:

但它也没有奏效。你能发现我的错误吗?我在这上面坐了很长一段时间,所以非常感谢您的帮助!

0 投票
0 回答
50 浏览

python - 使用 OpenCV 检测网格纸上线条较粗的最大矩形

我们正在制作一款游戏,您可以在其中使用网格纸制作自己的关卡。

第一步是检测关卡的边界,所以我在关卡周围制作了一个较厚的黑色边框作为边缘。这是图片:https ://imgur.com/a/Wx3p7Ci

我首先将图像编辑为灰色,应用 GaussianBlur 和adaptiveThreshold。这是结果:https ://imgur.com/a/dp0G4my

我认为普通 Houghlines 并不是一个真正的选择,因为它检测到这么多线条并丢失了较粗的线条。findContour 我没有得到可用的结果,因为网格纸中有很多形状。

所以我最终选择了 HoughLinesP,结果如下:https ://imgur.com/a/yvIpYNy

所以它正确地检测到了矩形的一部分,就是这样。我会有另一个想法,它依赖于不理想的颜色(人们需要特定的颜色),但我不知道有什么好的方法。

这是我目前用于 HoughLinesP 的代码

0 投票
1 回答
72 浏览

python - openCV 的 Houghline 方法只给出 1 行作为输出

我正在使用 houghLine 方法进行线检测。但它只给出 1 行作为输出,我认为这是获得最多票数的行。我尝试了In opencv using houghlines 的解决方案,只打印一行,但这需要很多时间并且无法正常工作。

我的代码是:

有关信息,我的图像输入是 32 x 32 像素的印地语字符。对此有任何建议或解决方案的人。

我在我的数据集中附加了一张图像。有几个这样的图像。图片

0 投票
2 回答
282 浏览

python - 如何用 HoughLines 找到这个白色斑点的 4 行?

我正在尝试使用Houghlines方法在白色矩形的每一侧绘制 4 条线。
这是我正在处理的图像源图像 (2592 x 1246 图像)。

结果我得到了Result

从最后一张图片中,您可以看到在白色斑点的边缘绘制了多条线。

任务

  1. 在矩形的每一侧仅绘制 4 条线的最佳方法是什么?
  2. 如何仅使用HoughLines而不是HoughLinesP来获得 4 条有限线?

--------------------------------------------------已编辑(2021 年 3 月 17 日) ------------------------------------------ --------

让我发布我正在处理的原始图像。

Fase 1:Eroded_Dilated_Image - 应用腐蚀膨胀并填充斑点后的结果。代码:

Fase 2: houghlines_Image - 应用hough trasform后的最终结果。我用于这个霍夫变换的代码已经在问题中了。

但最终的结果并不是我想要的结果。
我想实现这个sample_image中显示的以下结果

0 投票
0 回答
26 浏览

hough-transform - Houghlines 无法找到清晰可见的单线

下面是我用来获取图像中人眼清晰可见的垂直线的代码。角度已设置为 3 弧度到 3.3 弧度,因此它只检测垂直线。我的另一个问题是如何正确检测线的端点。我尝试了 EqualizeHist 和 AdaptiveThreshold,但一切似乎都把我的形象搞砸了。

这是图像: 在灰度图像中可以看到一条白色垂直线

不幸的是,这些是它在真实图像上检测到的线条: 正方形的边缘应该被检测为在 x 方向上使用了 sobel

0 投票
0 回答
123 浏览

python - 有什么方法可以平均在 houghlines 中检测到的接近线?

我必须从图像中检测适当的矩形(满足门的面积和纵横比条件)才能在其中找到门。所以我使用精明的边缘检测来找到边缘,然后我使用霍夫变换来提取边缘的线条。我得到的结果如下图所示: 在此处输入图像描述

现在我以某种方式提取了构成满足“门条件”的矩形的线条。但正如您在图像中看到的那样,线条非常接近,以至于它形成了许多满足我门条件的矩形。所以我想我会通过用平均线替换接近线来减少线条,但我无法做到,因为它变得更加复杂。我尝试过这样的事情。

但我收到“内存错误”。有没有人知道在 python 中平均关闭线。或者关于从线条中提取正确矩形以找到我的门的任何其他想法?

PS:我有每条线与原点的距离,即rho。我的线条被隔离为几乎水平和几乎垂直的线条。

0 投票
0 回答
27 浏览

python - 视频中的恒定霍夫线和轮廓

我想知道如何在视频期间使我的车道检测保持不变,我有一个跑步机视频尝试计算白色物体被跟踪的次数(中间的矩形),我想应用单应性从霍夫中选择四个点线条或轮廓,以更好地跟踪对象,但问题是有时在特定帧中未检测到轮廓或线条,因此不会裁剪帧并且未检测到轮廓列表或霍夫线,所以我的目标是通过应用恒定车道检测来选择 ROI,但不是手动选择。这是一些图片: 从轮廓列表中检测到一个矩形 这是未检测到的矩形

0 投票
1 回答
122 浏览

python - 为什么opencv houghline检测到的线条与图像中的真实线条不平行?

higuys,首先请看下图: 在此处输入图像描述

为什么用 houghline 检测和绘制的线条与足球场的白线并不真正平行?

我需要那个交点准确地出现在图像上

那么它需要在图像中用白线绘制直线平行线谁能帮我解决这个问题

提前致谢

如果您想使用代码,这是原始图像 d.jpg: 在此处输入图像描述

这是我的python代码:

0 投票
0 回答
36 浏览

c++ - 使用 OpenCV 检测基于行的结构中的所有行

我一直在尝试检测基于行的结构中的所有行,但我一直未能做到。我已经了解了 HoughLinesP 函数,但是对于更复杂的图像,它似乎不够好。我一直在玩参数,它要么没有检测到所有线,要么检测到所有线但将它们分成许多很难连接的非常小的线。我一直在尝试实现一个函数,它将所有连续的行合并为一个,但是有很多边缘情况和小问题,它也不能很好地工作。我一直在想,有没有更好的方法来解决这个问题?或者也许因为这似乎是一个非常简单的问题,所以存在某种我还没有找到的解决方案?
基础图片:
在此处输入图像描述
在此处输入图像描述
低阈值检测(较短的行,但检测到所有行): 在此处输入图像描述