当前位置: 首页 > 知识库问答 >
问题:

从精明的边缘检测中提取线条

何骞尧
2023-03-14

在openCV中,在应用canny边缘检测后,我想进一步处理结果(仅显示水平线,删除短线等)。但是canny的结果只是另一张图像。我想得到一个描述检测到的边缘的线条数组

我知道著名的霍夫线变换,但结果并不总是好的,这就是为什么我想手动处理精明的结果。输入:

仅输出精明:

输出canny-then-Hough线变换

这是用于检测楼梯边缘的Hough线变换结果(红线)。虽然canny edge检测到一条边缘,但未正确检测到下面的第四条线。

知道如何从精明的图像中提取边缘吗?

共有2个答案

乐修远
2023-03-14

我建议使用LSWMS(使用加权均值偏移的线段检测)方法。其结果优于HT和PPHT。

看http://marcosnietoblog.wordpress.com/2012/04/28/line-segment-detection-opencv-c-source-code和http://www.youtube.com/watch?v=YYeX8IGOAxw

段干博涉
2023-03-14

您可以尝试以下几件事来提高您的结果:

您的图像看起来有一些边界窗口效果。我用一个感兴趣的区域删除了它们,生成了一幅如下所示的图像(我对其进行了调整,直到看起来正确为止,但如果使用某种内核操作符,则其窗口大小可能更好地定义了该ROI):

似乎你也在使用概率霍夫变换。所以,你只得到线段而不是插值线。考虑使用标准变换来获得完整的理论线(rho,θ)。这样做我得到了如下所示的图像:

这是我用来生成行的代码片段(来自Python接口):

(mu, sigma) = cv2.meanStdDev(stairs8u)
edges = cv2.Canny(stairs8u, mu - sigma, mu + sigma)
lines = cv2.HoughLines(edges, 1, pi / 180, 70)

您可能可以通过获取最常出现的线角度并丢弃异常值来过滤出较差的线。这应该将其缩小到最明显的步骤。

希望有帮助!

 类似资料:
  • 我想提取图像的轮廓,用点坐标序列表示。 使用,我能够生成一个只包含图像边缘的二进制图像。然后,我尝试使用来提取轮廓。不过,结果并不好。 对于每一条边,我通常得到两条线,就像它被认为是一个非常薄的区域一样。我想简化我的轮廓,这样我可以把它们画成单线。或者用不同的函数提取它们,直接产生正确的结果会更好。 我查看了OpenCV的文档,但没有找到任何有用的东西,但我想我不是第一个遇到类似问题的人。有什么功

  • Canny边缘检测用于检测图像中的边缘。 它接受灰度图像作为输入,并使用多级算法。可以使用类的方法在图像上执行此操作,以下是此方法的语法。 该方法接受以下参数 - image - 表示此操作的源(输入图像)的对象。 edges - 表示此操作的目标(边缘)的对象。 threshold1 - 类型为的变量表示滞后过程的第一个阈值。 threshold2 - 类型为的变量表示滞后过程的第二个阈值。 示

  • 我几乎没有图像处理和识别的背景知识。我试图检测灰度图像(如肖像)上的主边缘/灰度变换。问题是在某些部分,边缘模糊(因为焦点)。我使用的是具有多个阈值的Canny边缘检测器,但我永远无法检测到这些边缘(下巴、衣服、耳朵、脸部侧面等) 边缘检测是正确的工具吗?谢谢

  • 目标 在这一章中,我们将学习 Canny 边缘检测的概念 OpenCV 的 Canny 边缘检测函数:cv2.Canny() 理论基础 Canny边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 于 1986 年开发的。它是一个多阶段算法,我们将学习每个阶段做了什么。 降噪 由于边缘检测容易受到图像中的噪声影响,因此首先要用5x5高斯滤波器去除图像中的噪声。我们在前面的章节已经

  • 目标 在本章中,我们将学习 Canny边缘检测的概念 OpenCV函数: cv.Canny() 理论 Canny Edge Detection是一种流行的边缘检测算法。它由John F. Canny发明 这是一个多阶段算法,我们将经历每个阶段。 降噪 由于边缘检测容易受到图像中噪声的影响,因此第一步是使用5x5高斯滤波器消除图像中的噪声。我们已经在前面的章节中看到了这一点。 查找图像的强度梯度 然

  • 我想检测具有一定角度/方向的边缘。 根据SO中的帖子改编,我想出了使用OpenCV幅值、相位和Sobel函数来过滤不需要的边缘点。然后使用幅值图像(以相位图像为条件)输出边缘点。 然而,结果与Canny边缘函数不相似。最好是过滤掉带有不需要的角度的边缘,但检测到的边缘是点的斑点,而不是细线边缘 在使用findContour后,左边缘图像也会绘制出来,但这几乎没有帮助 1) 为了模仿精明的处理,还应