基于小波变换的宿主图像灰度水印嵌入与抗压缩提取系统
项目介绍
本系统是一个基于离散小波变换(DWT)的数字图像水印处理平台。它专门针对灰度级水印信息在宿主图像中的隐蔽嵌入及其在面临有损压缩攻击时的生存能力而设计。系统通过将宿主图像转换至频域,利用低频分量的稳定性实现水印的融合,并提供了一套从嵌入、攻击模拟到鲁棒性提取与性能量化评价的完整实验框架。
功能特性
- 多级频域分解:采用二级离散小波变换,实现对图像特征的深度频率划分。
- 灰度级信息嵌入:不同于传统的二值图像水印,本系统支持完整的灰度图像嵌入,保留了水印的细节层次。
- 自适应数据获取:系统具备健壮的图像读取逻辑,在缺少外部图片资源时能自动生成合成测试数据。
- 抗压缩攻击模拟:内置JPEG有损压缩模块,可自定义压缩质量因子,真实模拟网络传输环境对数据的破坏。
- 非盲提取逻辑:利用原始特征信息进行差值提取,确保在强攻击下依然能最大限度恢复水印。
- 客观质量评价:自动计算PSNR(峰值信噪比)与NC(归一化相关系数),定量评估系统的透明性与鲁棒性。
系统要求
- MATLAB R2016b 或更高版本。
- 图像处理工具箱 (Image Processing Toolbox)。
使用方法
- 准备宿主图像及水印图像(或使用系统默认生成的测试图)。
- 在脚本顶部根据需求设置嵌入强度因子
Alpha。 - 设置模拟攻击的 JPEG 质量因子
JPEG_Quality。 - 执行程序,系统将依次完成嵌入、攻击、提取过程。
- 通过弹出的可视化窗口及控制台输出查看实验结果。
详细功能实现逻辑
1. 初始化与参数配置
系统首先定义核心算法参数,包括用于控制水印人眼可见度的嵌入强度系数、模拟JPEG攻击的质量参数,以及统一的图像处理尺寸(宿主图像 512x512,水印图像 128x128)。
2. 图像预处理
程序通过异常处理机制尝试从磁盘读取图像。针对宿主图像进行灰度化与尺寸重置;对于水印图像,同样进行灰度处理。若路径下无对应文件,系统将利用数学函数生成包含梯度和几何图案的合成图作为实验载体。
3. 水印嵌入算法(离散小波变换)
- 多级分解:对宿主图像执行二级二维离散小波变换(使用 Haar 基小波),将图像分解为低频(LL)、水平(HL)、垂直(LH)和对角线(HH)子带。二级分解产生的 LL2 子带尺寸恰好匹配 128x128 的水印图。
- 加法嵌入:算法采用线性融合逻辑,将水印图像的像素值乘以嵌入强度因子后,直接累加到宿主图像的 LL2 子带系数中。
- 图像重构:通过两级逆离散小波变换(IDWT),将修改后的频域系数还原回空域图像,并转换为常用的 8 位无符号整型数据格式。
4. 攻击模拟模拟
为了验证鲁棒性,系统将含水印图像保存为临时磁盘文件,并强制应用 JPEG 有损压缩编码。随后重新读取该压缩图像,此时图像数据已因量化截断而产生损伤,以此模拟真实传输过程中的数据损耗。
5. 鲁棒性提取过程
- 频域再分解:对受损后的图像进行与嵌入阶段相同的二级 DWT 分解。
- 逆向提取:系统利用非盲提取协议,将受损图像的 LL2 分量与原始未修改的 LL2 分量进行差分计算,除以嵌入强度因子后实现水印信号的剥离。
- 限幅处理:对提取出的像素数据进行 [0, 255] 范围的强制截限,校正因运算产生的越界值,确保图像显示正常。
6. 性能评估与量化
- 透明性测试:对比原始宿主图与含水印图,计算均方误差(MSE),进而得出 PSNR 值。PSNR 越高,代表水印的视觉不可感知性越好。
- 鲁棒性测试:将提取出的水印与原始水印进行互相关分析,计算 NC 值。NC 值越接近 1,说明算法抗攻击能力越强。
7. 结果可视化
系统生成复合图形窗口,同步展示原始宿主、原始水印、含水印图像(及PSNR)、受损图像(及压缩质量)以及最终提取的水印(及NC值),通过视觉对比直观呈现系统效能。
关键算法实现细节
- 小波基选择:系统采用 Haar 小波,其简单的正交性保证了变换的可逆性和计算的高效性。
- 嵌入位置:选择 LL2 子带进行嵌入。由于 LL2 包含了图像的主要能量和结构信息,虽然对可见度有一定影响,但也提供了最强的抗攻击稳定性。
- 非盲技术:提取过程中保留了
LL2_Original(原始系数),这种非盲提取方案在学术研究和高安全性要求的对称水印场景中非常有效。 - JPEG 模拟方式:通过
imwrite 实际写入存储设备并设置 Quality 参数,能够最真实地模拟真实设备和互联网协议对图像数据的压缩行为。