我正在对脏图像文档进行去噪处理。我想创建一个数据集,其中将添加合成噪声来模拟真实世界的杂乱伪影。模拟的污垢可能包括咖啡渍、褪色的太阳斑、折角的书页、大量的皱纹等等。我该怎么做?
样本清洁图像:
添加合成噪声后:
我怎样才能随机获得上面显示的图像?
我正在对脏图像文档进行去噪处理。我想创建一个数据集,其中将添加合成噪声来模拟真实世界的杂乱伪影。模拟的污垢可能包括咖啡渍、褪色的太阳斑、折角的书页、大量的皱纹等等。我该怎么做?
样本清洁图像:
添加合成噪声后:
我怎样才能随机获得上面显示的图像?
建议将干净的图像与噪声背景合并。尽管此方法不支持纸张变形。
以下代码可能会有所帮助:
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)
您可以使用Augraphy 库来完成此操作。披露:我是该项目的维护者。
干净的图像可以叠加到不同的纸张纹理、染色、用铅笔或荧光笔标记、折叠等等。我们支持大量不同的增强,每种增强都提供了对效果程度的大量控制。我最近写了一篇关于该库的简短介绍,其中包含几个示例图像,这里有一篇关于如何设置 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)
这是结果。
如果您需要任何帮助或想提出建议,请随时发布GitHub 问题。