问题标签 [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.
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。因此我决定采用上述方法。
python - 霍夫变换:如何从投票矩阵中获取线?
所以我尝试使用 python 和 c++ 实现霍夫变换(使用 Pybind11 进行两种语言之间的接口)。当我绘制霍夫空间时,它似乎没问题,但我无法从投票矩阵的最大值中得到一条线。这是 C++ 代码(在我使用 PyBind11 之前看起来有点不同):
如您所见,函数的参数是图像矩阵,我将其转换为边缘为 1 其余为 0 的矩阵,所以我得到了我感兴趣的像素。
int angleAmount
是我想尝试的角度范围int angleStep
以及我真正想要使用的θ角的多少(例如,每隔一秒跳过一次θ)。但是对于这个例子,我将使用 angleAmount = 360 和 angleStep = 1。所以我将使用从 1 到 360 的所有角度。
这是python代码:
该函数houghTransform
与我使用 PyBind11 导出到 Python 的 c++ 代码中的函数相同。以下是图片:
我还尝试使用此函数创建行:
但它也没有奏效。你能发现我的错误吗?我在这上面坐了很长一段时间,所以非常感谢您的帮助!
python - 使用 OpenCV 检测网格纸上线条较粗的最大矩形
我们正在制作一款游戏,您可以在其中使用网格纸制作自己的关卡。
第一步是检测关卡的边界,所以我在关卡周围制作了一个较厚的黑色边框作为边缘。这是图片:https ://imgur.com/a/Wx3p7Ci
我首先将图像编辑为灰色,应用 GaussianBlur 和adaptiveThreshold。这是结果:https ://imgur.com/a/dp0G4my
我认为普通 Houghlines 并不是一个真正的选择,因为它检测到这么多线条并丢失了较粗的线条。findContour 我没有得到可用的结果,因为网格纸中有很多形状。
所以我最终选择了 HoughLinesP,结果如下:https ://imgur.com/a/yvIpYNy
所以它正确地检测到了矩形的一部分,就是这样。我会有另一个想法,它依赖于不理想的颜色(人们需要特定的颜色),但我不知道有什么好的方法。
这是我目前用于 HoughLinesP 的代码
python - openCV 的 Houghline 方法只给出 1 行作为输出
我正在使用 houghLine 方法进行线检测。但它只给出 1 行作为输出,我认为这是获得最多票数的行。我尝试了In opencv using houghlines 的解决方案,只打印一行,但这需要很多时间并且无法正常工作。
我的代码是:
有关信息,我的图像输入是 32 x 32 像素的印地语字符。对此有任何建议或解决方案的人。
我在我的数据集中附加了一张图像。有几个这样的图像。图片
python - 如何用 HoughLines 找到这个白色斑点的 4 行?
我正在尝试使用Houghlines方法在白色矩形的每一侧绘制 4 条线。
这是我正在处理的图像源图像 (2592 x 1246 图像)。
结果我得到了Result。
从最后一张图片中,您可以看到在白色斑点的边缘绘制了多条线。
任务:
- 在矩形的每一侧仅绘制 4 条线的最佳方法是什么?
- 如何仅使用HoughLines而不是HoughLinesP来获得 4 条有限线?
--------------------------------------------------已编辑(2021 年 3 月 17 日) ------------------------------------------ --------
让我发布我正在处理的原始图像。
Fase 1:Eroded_Dilated_Image - 应用腐蚀和膨胀并填充斑点后的结果。代码:
Fase 2: houghlines_Image - 应用hough trasform后的最终结果。我用于这个霍夫变换的代码已经在问题中了。
但最终的结果并不是我想要的结果。
我想实现这个sample_image中显示的以下结果
hough-transform - Houghlines 无法找到清晰可见的单线
下面是我用来获取图像中人眼清晰可见的垂直线的代码。角度已设置为 3 弧度到 3.3 弧度,因此它只检测垂直线。我的另一个问题是如何正确检测线的端点。我尝试了 EqualizeHist 和 AdaptiveThreshold,但一切似乎都把我的形象搞砸了。
这是图像: 在灰度图像中可以看到一条白色垂直线
不幸的是,这些是它在真实图像上检测到的线条: 正方形的边缘应该被检测为在 x 方向上使用了 sobel
python - 有什么方法可以平均在 houghlines 中检测到的接近线?
我必须从图像中检测适当的矩形(满足门的面积和纵横比条件)才能在其中找到门。所以我使用精明的边缘检测来找到边缘,然后我使用霍夫变换来提取边缘的线条。我得到的结果如下图所示: 在此处输入图像描述
现在我以某种方式提取了构成满足“门条件”的矩形的线条。但正如您在图像中看到的那样,线条非常接近,以至于它形成了许多满足我门条件的矩形。所以我想我会通过用平均线替换接近线来减少线条,但我无法做到,因为它变得更加复杂。我尝试过这样的事情。
但我收到“内存错误”。有没有人知道在 python 中平均关闭线。或者关于从线条中提取正确矩形以找到我的门的任何其他想法?
PS:我有每条线与原点的距离,即rho。我的线条被隔离为几乎水平和几乎垂直的线条。
python - 视频中的恒定霍夫线和轮廓
我想知道如何在视频期间使我的车道检测保持不变,我有一个跑步机视频尝试计算白色物体被跟踪的次数(中间的矩形),我想应用单应性从霍夫中选择四个点线条或轮廓,以更好地跟踪对象,但问题是有时在特定帧中未检测到轮廓或线条,因此不会裁剪帧并且未检测到轮廓列表或霍夫线,所以我的目标是通过应用恒定车道检测来选择 ROI,但不是手动选择。这是一些图片: 从轮廓列表中检测到一个矩形 这是未检测到的矩形