在图像文本文档中随机生成合成噪声
Posted
技术标签:
【中文标题】在图像文本文档中随机生成合成噪声【英文标题】:Randomly Generate Synthetic Noise in an Image Text Document 【发布时间】:2020-03-15 16:15:31 【问题描述】:我正在对脏图像文档进行去噪处理。我想创建一个数据集,其中将添加合成噪声来模拟真实世界的杂乱伪影。模拟污垢可能包括咖啡渍、褪色的太阳斑、折角的书页、大量的皱纹等等。我该怎么做?
样本清洁图像:
添加合成噪声后:
如何随机实现上图?
【问题讨论】:
你的原图是哪张?并且文字似乎不会随着纸张变形而变形,这不太可能对吗? @venkatakrishnan -> 请查看我的更新帖子 :) 也许您正在寻找this? 与@nathancy 回答一起,您可以使用opencv 创建一个简单的过滤器,以屏蔽黑色像素(文本),添加一些nathan 提到的增强并将文本放回原处。您可以将其编写为 keras 中的自定义增强功能,以随机自动生成图像。或者您可以自己随机生成并使用整个集合。 【参考方案1】:建议将干净的图像与噪声背景合并。虽然这种方法不支持纸张变形。
以下代码可能会有所帮助:
import numpy as np
import cv2
# Load both clean and noisey background images in grayscale
img_clean = cv2.imread('img_clean1.jpg',0)
img_bg = cv2.imread('img_noisy_bg1.jpg',0)
# Make clean image binary
img_clean , thr = cv.threshold(img_clean , 10, 255, cv.THRESH_BINARY)
# Blend clean with the noisy BG
res = cv2.bitwise_and(img_bg, img_bg, mask=img_clean)
# Make it more natural!
res = cv.blur(res, (3,3))
cv2.imshow('image', res)
cv2.waitKey(0)
【讨论】:
您知道如何根据纸张变形(例如波浪形)使文本变形吗?【参考方案2】:S C R A P E - B A C K G R O U N D - I M A G E S
在我看来,引入真实世界噪音的明显方法是引入真实世界噪音。因此,您可以在网上搜索纸张背景 (exemplary link): 正在搜索:
-
纸张背景
脏纸背景
彩色纸背景
应该做的伎俩。
根据您需要多少不同的模式,您可能希望自动抓取网络(selenium python 包支持您)。
O V E R L A Y - B A C K G R O U N D - W I T H - Y O U R - T E X T
接下来,根据您选择的编程语言,您应该能够将背景图像与您想要为 python 和 opencv 增强的文本图像覆盖在一起,这在 SO 上的 here 进行了深入介绍。
最后,您还可以使用Augmentor 包来进一步增强和扩充您的数据。
【讨论】:
【参考方案3】:您可以使用Augraphy library 完成此操作。披露:我是该项目的维护者。
干净的图像可以叠加到不同的纸张纹理、染色、用铅笔或荧光笔标记、折叠等等。我们支持大量不同的增强,每种增强都提供了对效果程度的大量控制。我最近写了a brief intro 到有几个示例图像的库中,还有a post here 关于如何设置Augraphy 管道以生成各种这些效果。
这是一个示例管道,使用来自NoisyOffice 数据集的干净图像的高质量版本。此管道将生成以下图像:
-
已用印刷机印刷到不同类型的纸张上,
在一些单词上画几条铅笔线,然后
打孔。
from augraphy import *
import cv2
img = cv2.imread("Fontfre_Clean_TR.png")
ink = [Letterpress(layer="ink", p=1),
Strikethrough(layer="ink",
num_lines_range=(2, 7),
strikethrough_length_range=(0.2, 0.4),
strikethrough_thickness_range=(1, 2),
p=1)]
paper = [PaperFactory(p=1)]
post = [BindingsAndFasteners(layer="post",
ntimes=5,
effect_type="punch_holes",
edge="left",
p=1)]
pipeline = AugraphyPipeline(ink,paper,post)
complete = pipeline.augment(img)
cv2.imshow("augmented", complete['output'])
cv2.waitKey(1000)
还有here's the result。
如果您需要任何帮助或想提出建议,请随时发布GitHub Issue。
【讨论】:
以上是关于在图像文本文档中随机生成合成噪声的主要内容,如果未能解决你的问题,请参考以下文章