谈一谈|可见水印数据集生成技术

简介: 谈一谈|可见水印数据集生成技术

引言

为图片添加水印在生活中是一个十分常见的问题,有时候为了达到自己想要的效果,人们往往采用PS的方式。这种方式需要对图片进行P图处理,对于一些PS小白来说,P图的步骤太过于繁琐且容易造成视觉疲劳,因此这里提出一种利用计算机自己生成可见水印图片的方法。


一 可见水印图片构成

通常,以人眼视觉的角度看,图片中水印部分就像是“粘贴”在原图上的,很多添加水印的方法也正是如此,只不过“粘贴”的不单单是水印部分,还有其他的透明部分,从而在“粘贴”水印的同时不影响图片的正常显示效果。而“粘贴”的这层水印图片,一般被叫做蒙版。

假设一张含有水印的图片为I(p),原图为W(p),蒙版为J(p),设水印蒙版的不透明度为α,由于最终图片I(p)的不透明度为1,所以原图W(p)的不透明度就为(1-α)。则对于一张含水印的图片来说有:

I(p)=α*J(p)+(1-α)*W(p)    1)式

根据(1)式,可以知道生成可见水印图片的关键在于如何获取水印蒙版。


二 如何生成水印蒙版

在生活中,水印的样式比较多,这里介绍可见水印覆盖全图的图像生成技术。

2.1 思路方法

在创建蒙版之前,需要先获取原图的尺寸,这样生成的蒙版才可以和原图进行(1)式运算。首先创建一个和原图尺寸一样的矩阵(包括图片的通道数),然后将每个位置的像素值进行初始化,将他们设置为纯白色(对应三个通道的像素值均为255)。

创建完矩阵之后,将指定位置的像素值更改为对应水印位置的像素值,这里以如下水印和原图为例

图2.1.1某品牌水印图


图2.1.2不含水印的图片

2.2 python代码

def GenerateWatermarks(file1,file2):

#file1是原图地址,file2是水印地址

     watermark = cv.imread(file2)

    wide  = watermark.shape[0]

    high  = watermark.shape[1]

    img  = cv.imread(file1)

    mask  = cv.imread(file1)

    # 将水印覆盖到蒙版上

    for  i in range(len(mask)):

         for j in range(len(mask[i])):

             mask[i][j] = watermark[i % wide][j % high]

    # 保存蒙版

    cv.imwrite(file2+'_mask.png',  mask)

 

 图2.2.1 全图水印蒙版


三 生成可见水印数据集

得到了水印蒙版之后,利用(1)式的原理,生成新图片,这里介绍opencv中内置的函数addWeighted来实现,具体用法参考如下:Res=cv2.addWeighted(img1,α,img2,1-α,0),其中img1是水印蒙版,α是它的不透明度,img2是原图片,1-α是它的不透明度,0是函数必带参数(水印蒙版和原图片可以交换位置,但是需要注意的是不透明度也需要同时交换位置)。

将得到的水印蒙版和原图片带入到函数中,就可以得到新图片,同时不要忘记使用cv2.write()函数保存得到的图片。将图2.1.2和图2.2.1带入函数,不透明度分别设置为0.5和0.5,得到的可见水印图片如下:

图3.1 可见水印图片

由于两张图片叠加之后原图和水印的显示效果都有所减弱,所以在合并两张图片之前,可以先对水印部分进行增强,然后再将原图的不透明度增大,得到新的显示效果:

图3.2 调整后的可见水印图片


四 总结

可见水印数据集的生成可以总结成以下步骤:读取水印和原图、根据原图生成水印蒙版、将水印覆盖到蒙版上、对蒙版上的水印部分进行增强、叠加原图和蒙版。需要注意的是,水印部分增强和叠加两张图片时没有明确的参数规定,可根据自身要求来确定;同时,添加水印的方式也是多种多样的,不需要拘泥于本文这一种,只要掌握了方法,就可以给图片添加上自己想要的水印效果。

目录
相关文章
|
3月前
|
人工智能 vr&ar 图形学
开源单图生成3D模型TripoSR的局限性分析
【2月更文挑战第25天】开源单图生成3D模型TripoSR的局限性分析
272 6
开源单图生成3D模型TripoSR的局限性分析
|
机器学习/深度学习 PyTorch 算法框架/工具
如何将模糊照片人脸恢复清晰,GFPGAN机器学习开源项目使用 | 机器学习
如何将模糊照片人脸恢复清晰,GFPGAN机器学习开源项目使用 | 机器学习
如何将模糊照片人脸恢复清晰,GFPGAN机器学习开源项目使用 | 机器学习
|
1月前
|
机器学习/深度学习 人工智能 编解码
Midjourney应用场景、特点、生成图片带来影响
Midjourney应用场景、特点、生成图片带来影响
32 1
|
28天前
|
图形学
Sora信息问题之使用数据驱动的物理引擎进行训练如何解决
Sora信息问题之使用数据驱动的物理引擎进行训练如何解决
13 0
|
1月前
|
机器学习/深度学习 文字识别 算法
深度学习助力版面分析技术,图像“还原”有方
深度学习助力版面分析技术,图像“还原”有方
43 0
|
2月前
|
机器学习/深度学习 监控
【机器学习】基于扩散模型的文本到音频生成:突破数据局限,优化音频概念与实践顺序
【机器学习】基于扩散模型的文本到音频生成:突破数据局限,优化音频概念与实践顺序
119 0
|
3月前
|
人工智能 vr&ar 图形学
开源单图生成3D模型TripoSR的应用场景
【2月更文挑战第24天】开源单图生成3D模型TripoSR的应用场景
115 1
开源单图生成3D模型TripoSR的应用场景
|
9月前
|
编解码 人工智能 算法
社区供稿 | AIGC图像分辨率太低?快来试试像素感知扩散超分模型,你想要的细节都在这里!
本文介绍了一种全新的基于SD生成先验的图像超分辨率和修复算法,在多个任务上都有着SOTA的表现。
|
机器学习/深度学习 算法 PyTorch
Python实现替换照片人物背景,精细到头发丝(附上代码) | 机器学习(1)
Python实现替换照片人物背景,精细到头发丝(附上代码) | 机器学习
Python实现替换照片人物背景,精细到头发丝(附上代码) | 机器学习(1)
|
数据可视化 PyTorch 算法框架/工具
AIGC背后的技术分析 | 图像风格迁移
本文为实战篇,介绍图像风格迁移
361 0
AIGC背后的技术分析 | 图像风格迁移