数字水印
**定义:**通过将特定的数字信号嵌入到数字作品中,来实现多种功能。
数字水印的主要功能包括:
- 信息隐藏
- 版权认证
- 完整性认证
- 数字签名
图像添加水印的流程: - 感兴趣区域(ROI):确定目标图像中需要处理的区域。
- 制作掩膜:
灰度化:将 logo 图像转换为灰度图,以简化图像处理。
二值化:对灰度图像进行二值化处理,生成一个黑白掩膜。 - 按位**"与"**运算:使用生成的掩膜与 ROI 区域进行按位"与"运算,将原始图像的 ROI 区域中需要覆盖的部分置为黑色。
- 图像融合:将处理过的 ROI 区域与 logo 图像进行像素级的加法运算,将 logo 图像无缝地叠加到原始图像的 ROI 区域内。
- 更新原始图像:将融合后的 ROI 区域覆盖到原始图像的对应位置,从而完成 logo 的叠加。

加法运算
在现实生活中,显示数据时有两种常见的处理方式:
- 取模处理:这种处理方式也被称为"循环取余"。
- 饱和处理:这种处理方式将超出范围的数值处理为最大值,因此也称为"截断处理"。
void add (InputArray src1,//第一幅输入图像
InputArray src2,//第二幅输入图像
OutputArray dst,//输出结果
InputArray mask = noArray(),//可选的掩码
int dtype = -1 //输出图像深度
);
add函数的运算逻辑:

saturate()函数用于确保运算结果在合法的像素范围内,通常是 [0, 255]。如果结果超出此范围,将被截断到 0 或 255。
图像加权和
void addWeighted(
InputArray src1, // 第一幅输入图像
double alpha, // 第一幅图像的权重
InputArray src2, // 第二幅输入图像
double beta, // 第二幅图像的权重
double gamma, // 亮度调节值
OutputArray dst, // 输出图像
int dtype = -1 // 可选参数,指定输出图像的数据类型
);
addWeighted() 函数的运算逻辑可以用以下公式表示:

图像尺寸与类型:输入的 src1 和 src2 图像必须大小一致,类型相同。
权重与亮度: α 和 β 的和不一定为1,但应根据实际效果合理设定。γ 值则用于细调图像的亮度。
