我在OpenCV中尝试了一些过滤器/操作,它似乎工作得很好。
第1步: 放大图片-
kernel = np.ones((5, 5), np.uint8)
cv2.dilate(img, kernel, iterations = 1)
如您所见,噪点消失了,但字符很轻,所以我腐蚀了图像。
第2步: 侵蚀图像-
kernel = np.ones((5, 5), np.uint8)
cv2.erode(img, kernel, iterations = 1)
如您所见,噪音消失了,但是其他列上的某些字符损坏了。 我建议仅在嘈杂的列上运行这些操作。 您可能要使用HoughLines查找最后一列。 然后,您只能提取该列,进行扩散+腐蚀,然后将其替换为原始图像中的相应列。 另外,膨胀+侵蚀实际上是一个称为close的操作。 您可以直接使用-
cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
正如@Ermlg所建议的&