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

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

引言

为图片添加水印在生活中是一个十分常见的问题,有时候为了达到自己想要的效果,人们往往采用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 调整后的可见水印图片


四 总结

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

目录
相关文章
|
存储 供应链 算法
《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型
《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型
551 1
|
搜索推荐 算法 数据挖掘
十个最全网站营销方法案例分析
本文探讨了10种网站营销策略:SEO优化提升搜索引擎排名;内容营销建立品牌信任;社交媒体营销扩大影响力;搜索引擎广告吸引目标用户;电子邮件营销促进销售;网站设计优化提升用户体验;移动端优化适应移动设备;数据分析驱动策略优化;视频营销吸引关注;合作伙伴营销扩展品牌覆盖。AokSend提供高效验证码发信服务,助力企业营销。选择合适策略,持续优化,以实现最佳营销效果。
|
安全 网络安全 量子技术
探索未来网络安全的关键:量子加密技术
本文深入探讨了量子加密技术,一项被视为未来网络安全领域的重要突破。通过详细分析量子加密的工作原理、优势以及当前面临的挑战和潜在解决方案,文章为读者提供了对这一前沿技术的全面理解。我们将探讨如何将量子加密技术与现有网络安全架构融合,以及它在未来数字世界中的潜在应用。
1068 2
|
传感器 测试技术 定位技术
HarmonyOS Next 模拟器安装与探索
HarmonyOS 5 的发布带来了许多新特性,尤其是 HarmonyOS Next 模拟器。本文将带你一步步了解如何安装和使用这个强大的工具,帮助你更好地进行开发,加速项目进展。通过 DevEco Studio 的 Device Manager,你可以轻松创建、配置并启动模拟器,模拟真实设备的效果,支持多窗口、跨设备测试等新特性。此外,模拟器还提供了虚拟传感器、GPS 模拟、音频输入等功能,极大地方便了开发和调试过程。掌握这些功能,能让你的开发更加高效便捷。
1516 9
|
机器学习/深度学习 人工智能 安全
隐语小课丨「论文研究」隐私保护纵向联邦图神经网络
隐语小课丨「论文研究」隐私保护纵向联邦图神经网络
506 0
|
存储 机器学习/深度学习 运维
Elasticsearch 集群节点的角色与职责
【8月更文挑战第25天】
637 6
|
数据采集 人工智能 算法
数据准备:AI训练的第一步
【7月更文第16天】在人工智能(AI)的旅程中,数据是燃料,而数据准备则是启动引擎的关键步骤。本文将深入探讨数据收集、清洗、标注与预处理的重要性及实施方法,为你的AI项目奠定坚实的基础。
1232 1
|
存储 自然语言处理 架构师
聚力同行,阿里云与合作伙伴这一年
2023年,通过落实“坚持伙伴优先”的生态战略,阿里云与遍布中国133个地级市的12000家伙伴一起,服务了超50万家客户。
|
存储 Shell 网络安全
【vscode】在本地加载远端环境并开发
【vscode】在本地加载远端环境并开发
1642 0
|
JavaScript 物联网 开发者
WebGL的3D框架比较 ThingJS 和 Three.js
随着flash的没落,浏览器的原生能力的兴起。在3D方面WebGL不管从功能还是性能方面都在逐渐加强。2D应用变为3D应用的需求也越来越强烈。 win10的画图板支持3D图片,2d工具photoshop也开始逐步集成了3D工具。
5629 0