数字水印 | 论文:Image Watermarking Using Discrete Wavelet Transform and Singular Value Decomposition(二)

🥭原文: Image Watermarking Using Discrete Wavelet Transform and Singular Value Decomposition for Enhanced Imperceptibility and Robustness

🥭写在前面: 2024 年的 CCF-B,结合离散小波变换和奇异值分解。



Proposed Methodology

1 水印的嵌入

下图展示了将水印嵌入到宿主图像中的方法:


在这里插入图片描述

在嵌入之前,分别对宿主图像和水印进行多层次的离散小波变换和奇异值分解。

首先,通过 A r n o l d \mathsf{Arnold} Arnold 映射对水印进行加密,确保系统的安全性。为了增强鲁棒性和安全性,我们分别对宿主图像的 L L 4 LL4 LL4 子带和加密后的水印 e w ew ew 进行了两次 S V D \mathsf{SVD} SVD 处理。不同级别的 S V D \mathsf{SVD} SVD 水印嵌入,能够更有效地抵抗几何攻击。因此,我们针对宿主图像的 L L 4 LL4 LL4 子带采用了 2 L   S V D \mathsf{2L\ SVD} 2L SVD,以提取其 S S S 分量。

这一段貌似在翻来覆去地说一些废话,可以看上面的流程图以进行理解😇

具体来说,我们对宿主图像应用了 4 L   D W T \mathsf{4L\ DWT} 4L DWT,并提取了 L L 4 LL4 LL4 子带。接着,对该子带进行了 2 L   S V D \mathsf{2L\ SVD} 2L SVD 处理,以提取其 S S S 分量。然后,将水印的 S S S 分量与宿主图像的 S S S 分量结合,通过手动选取的比例因子 α \alpha α 来平衡系统的不可见性和鲁棒性。在本研究中, α \alpha α 的值为 0.07 0.07 0.07。最后,对 L L 4 LL4 LL4 子带进行重建,并通过逆小波变换 ( I D W T ) \mathsf{(IDWT)} (IDWT) 得到水印图像。

注意:水印是指 w a t e r m a r k   i m a g e \mathsf{watermark\ image} watermark image,水印图像是指 w a t e r m a r k e d   i m a g e \mathsf{watermarked\ image} watermarked image,请注意区分。



2 水印的提取

水印的提取过程与嵌入过程相反,如下图所示:


在这里插入图片描述

首先,对水印图像应用 4 L   D W T \mathsf{4L\ DWT} 4L DWT 以提取 L L 4 w m v LL4wmv LL4wmv。然后,使用 2 L   S V D \mathsf{2L\ SVD} 2L SVD 提取 S w Sw Sw 分量。之后,通过逆 SVD ( I S V D ) \mathsf{(ISVD)} (ISVD) S w Sw Sw 进行处理,以提取加密的水印 e w ew ew。最后,系统对 e w ew ew 应用 A r n o l d \mathsf{Arnold} Arnold 映射的逆变换,得到原始水印。我们采用 A r n o l d \mathsf{Arnold} Arnold 映射对水印进行加密,现在的工作重点是从水印图像中准确提取出水印。



3 伪代码

在这里插入图片描述


  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个 GitHub 仓库包含了一个基于深度学习的数字水印技术的实现代码,主要分为两部分:水印嵌入和水印提取。 1. 水印嵌入 在水印嵌入方面,作者使用了 ResNet18 作为基础模型,从 ImageNet 数据集上进行预训练,然后使用一个全连接层将其输出转化为水印的编码,再将编码嵌入到目标图像的 DCT 系数中。具体实现流程如下: 1.1. 加载模型 调用 `models.py` 中的 `ResNet18()` 函数构建 ResNet18 模型,然后使用 PyTorch 自带的 `torch.load()` 函数加载预训练的权重文件。 1.2. 加载水印 使用 `watermark.py` 中的 `load_watermark()` 函数加载水印,这个函数会将水印转化为进制格式,并且在最后加上一个结束标志。 1.3. 将水印编码嵌入到图像中 使用 `embed.py` 中的 `embed()` 函数,将预训练的 ResNet18 模型的输出作为水印的编码,然后将编码嵌入到目标图像的 DCT 系数中。 2. 水印提取 在水印提取方面,作者同样使用了 ResNet18 作为基础模型,但是这次不需要对其进行训练,只需要使用预训练的权重文件进行推理,得到目标图像中嵌入的水印编码,然后解码得到原始的水印。具体实现流程如下: 2.1. 加载模型 同样是调用 `models.py` 中的 `ResNet18()` 函数构建 ResNet18 模型,然后使用 PyTorch 自带的 `torch.load()` 函数加载预训练的权重文件。 2.2. 从图像中提取水印编码 使用 `extract.py` 中的 `extract()` 函数,将目标图像的 DCT 系数作为输入,经过模型推理得到水印编码。 2.3. 解码水印 使用 `watermark.py` 中的 `decode_watermark()` 函数,将水印编码解码得到原始的水印。 总体来说,这个仓库的实现使用了深度学习的方法,将水印编码嵌入到图像中,然后通过模型进行水印提取,可以有效地保护数字内容的版权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值