【问题标题】:How can I remove noise with Hough Line Transform with opencv-python如何使用 opencv-python 使用霍夫线变换去除噪声
【发布时间】:2021-04-08 17:08:41
【问题描述】:

这个程序的目的是绘制房间的角落和边缘,这就是我现在所处的位置: 右上角的图像是我的结果,左上角的图像是我的输入。目前,我正在使用带有高斯滤波器的精明边缘检测。但正如你所看到的,图像中有很多来自其他细节的随机线条。

我的目标是:

到目前为止,我已经尝试过, 仅显示平坦的线(0 或无限斜率):

if lines is not None:
    for line in lines:
        x1, y1, x2, y2 = line[0]
        if math.isclose(x1, x2, tol_abs=25) or math.isclose(y1, y2, tol_abs=10):
            cv2.line(bgrimg, (x1, y1), (x2, y2), (0, 255, 0), 1)

但这导致我丢失了一些重要的台词。 接下来,我尝试只在图像边缘显示线条:

if lines is not None:
    for line in lines:
        x1, y1, x2, y2 = line[0]
        if y1 > 100 and y2 > 100:
            cv2.line(bgrimg, (x1, y1), (x2, y2), (0, 255, 0), 1)

这有点适用于顶部,但由于侧面可能在图片中的任何位置,我无法确定它们的确切位置。

有没有办法解决这个问题?如果没有,机器学习可以吗?

【问题讨论】:

  • 我认为主要问题是墙壁上的阴影。您可以尝试调整图像的对比度。但最后更好的方法是手动设置角落,教软件如何识别何时重要,何时不重要。可能房间都差不多。是箱子。找到上角然后垂直线是它的结果。

标签: python opencv hough-transform canny-operator gaussianblur


【解决方案1】:

从 Canny 获得的信息开始。可以:

1 - 确定水平线的良好参考,

2 - 确定右对角线的良好参考

3 - 确定左对角线的良好参考

4 - 从这些参考线的延伸中,您可以找到交叉点。

有些路口会好,有些路口不好。

如果水平参考线和倾斜参考线形成的角度左右相同或相似,则为良好的交点。

正如我在此处添加的图片: https://i.stack.imgur.com/OYS2c.png

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多