Opencv 噪声照片的低对比度线检测
我试图检测屏幕照片上的低对比度线或一般的嘈杂图像。我似乎遇到了两个问题:Opencv 噪声照片的低对比度线检测,opencv,line,feature-detection,noise,hough-transform,Opencv,Line,Feature Detection,Noise,Hough Transform,我试图检测屏幕照片上的低对比度线或一般的嘈杂图像。我似乎遇到了两个问题: 我无法用自适应阈值或边缘检测算法可靠地检测线条,因为屏幕的噪声/暗网格。模糊似乎有点帮助,但不足以让它工作 当同一条直线只有几段可见时(由于噪声、光线条件或其他原因),我希望将检测到的线段连接到一条直线 img = cv2.imread("test.jpg") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray=cv2.GaussianBlur(gray,(9,9),0
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)
cv2.Canny
和cv2.HoughLinesP
,但没有很好的效果,因为黑暗的网格将两者都弄糟了。提前谢谢
编辑:我认为带有THRESH\u TRUNCATED
或THRESH\u to zero
的阈值函数的本地版本可能会有帮助。。。
过滤掉网格。高对比度
因为我没有发布图片的名声,所以我添加了链接。
具有低对比度线的图像:
检测到的行:
在足够大的窗口(比如11x11)上运行中值滤波器,然后减去平均(或略小于平均值)图像强度,将使线条更易于检测。您可以编辑您的问题并包括一张样本图像吗?没有代表,但是我把它们上传到其他地方并添加了链接。你是指全球平均值还是11X11窗口的平均值?有没有一种简单的方法可以将所有负值减去并设置为零?我的for循环非常慢:在一个较弱的MediaFilter之后进行双边过滤,可以过滤掉LCD屏幕的网格。不,我可以慢慢来:)