python - 如何从保留点的图像中删除点状噪声?
问题描述
我有一张背景中有很多虚线噪点的图像。我尝试了很多过滤器(中值,高斯),但没有任何结果。由于这些噪音,Tesseract 缺少很多文本然后我试图找到所有连接组件,然后以小于 50 的区域传递。但它也删除了有效的小数位数。
_, blackAndWhite = cv2.threshold(img, 200, 255, cv2.THRESH_BINARY_INV)
nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(blackAndWhite, None, None, None, 8, cv2.CV_32S)
sizes = stats[1:, -1] #get CC_STAT_AREA component
img2 = np.zeros((labels.shape), np.uint8)
for i in range(0, nlabels - 1):
if sizes[i] >= 50: #filter small dotted regions
img2[labels == i + 1] = 255
res = cv2.bitwise_not(img2)
解决方案
检查scikit-image
有关去噪的文档:
- https://scikit-image.org/docs/dev/auto_examples/filters/plot_denoise.html
- https://scikit-image.org/docs/0.12.x/auto_examples/filters/plot_denoise.html
- https://scikit-image.org/docs/dev/auto_examples/filters/plot_nonlocal_means.html
- https://scikit-image.org/docs/0.12.x/auto_examples/xx_applications/plot_rank_filters.html
我也会尝试使用形态运算符。
局部阈值也可能是预处理的更好选择。
推荐阅读
- java - Java 升级后 Windows taskkill 无法正常工作
- prolog - 我可以使用整数作为参数吗?
- ios - 如何在 iOS 的 Metal API 中使用计算函数进行乘法运算
- python - 根据Python中的条件从两个数组中随机选择
- python - 如何在数据框列中获取值
- android - 即使现在已弃用,如何使用 Place Picker?
- java - 如何在同一个项目中以不同方式配置两个 rabbitlistener?
- python - 有没有办法在电视节目中发送“用户正在输入...”状态?
- php - 减去返回错误的日期
- php - 从 ACF 中继器字段添加基于 PHP 变量的 div 类?