在嘈杂的照片上进行低对比度线检测

时间:2013-06-06 11:31:26

标签: opencv line feature-detection noise hough-transform

我试图检测屏幕照片上的低对比度线条或一般的嘈杂图像。我似乎遇到了两个问题:

  1. 由于屏幕的噪声/暗网格,我无法使用自适应阈值或边缘检测算法可靠地检测到线路。模糊似乎有点帮助,但还不足以让我开始工作。

  2. 当同一条线只能看到几个线段时(由于噪音,光线条件或其他因素),我想将检测到的线段连接成一条直线。

     img = cv2.imread("test.jpg")
     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
     gray=cv2.GaussianBlur(gray,(9,9),0)
     bin = cv2.adaptiveThreshold(gray2, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 33, 3)
     cv2.namedWindow('Test')
     cv2.imshow("Test", bin)
    
  3. 我还尝试了cv2.Cannycv2.HoughLinesP,但没有取得好成绩,因为黑暗网格混淆了两者。提前谢谢!

    编辑:我认为使用THRESH_TRUNCATEDTHRESH_TOZERO的阈值函数的本地版本可以帮助... 过滤掉网格。和高对比度

    由于我没有发布图片的声誉,我添加了链接。 具有低对比度线的图像:

    enter image description here

    检测到行:

    enter image description here

1 个答案:

答案 0 :(得分:1)

在足够大的窗口(例如11x11)上运行中值滤波器,然后减去平均值(或略低于平均值)图像强度将使线更容易检测。