Skip to content

Repository files navigation

SVD数字水印算法复现

复现论文:Liu R, Tan T. "An SVD-based watermarking scheme for protecting rightful ownership." IEEE Transactions on Multimedia, 2002.

项目结构

watermark/
├── src/
│   ├── __init__.py          # 包初始化
│   ├── utils.py             # 工具函数(PSNR、相关系数等)
│   ├── svd_watermark.py     # SVD水印核心(嵌入、提取、检测)
│   ├── cox_watermark.py     # Cox扩频水印(对比baseline)
│   └── attacks.py           # 6种攻击模拟
├── data/                    # 测试图像(Lena)和水印logo
├── results/                 # 实验输出(图表、数据)
├── main.py                  # 主实验脚本
├── requirements.txt         # Python依赖
└── README.md

环境要求

  • Python 3.8+
  • 依赖安装:pip install -r requirements.txt

运行实验

python main.py

所有实验结果将保存在 results/ 目录下。

实验内容

实验编号 实验内容 对应论文图表
1 不可感知性测试(PSNR+误差图) Fig.1
2 高斯噪声鲁棒性 (μ=0, σ²=0.05) Fig.2, Fig.3
3 低通滤波鲁棒性 (5×5, σ=4) Fig.4, Fig.5
4 JPEG压缩鲁棒性 (Q=5) Fig.6, Fig.7
5 旋转鲁棒性 (30°) Fig.8, Fig.9
6 裁剪鲁棒性 (左半/右半) Fig.10, Fig.11
7 缩放重采样鲁棒性 (×2) Fig.12
8 可视化水印测试 Fig.13, Fig.14

算法核心

SVD水印嵌入

  1. 对原始图像A做SVD:A = U·S·V^T
  2. 在奇异值矩阵S上叠加水印:S + αW → SVD → U_w·S_w·V_w^T
  3. 生成水印图像:A_w = U·S_w·V^T

SVD水印提取

  1. 从失真图像恢复:S_w* ≈ U^T·A_w*·V
  2. 提取水印:W* = (U_w·S_w*·V_w^T - S) / α
  3. 计算相关系数判断水印是否存在

About

信息安全技术期末大作业-论文复现

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages