基于离散小波变换(DWT)的数字图像盲水印系统
项目介绍
本项目是一个基于MATLAB平台开发的数字图像水印系统。系统采用离散小波变换(DWT)将图像转换至频域,结合量化索引调制(QIM)技术,实现了一种具有较高鲁棒性和不可见性的盲水印算法。该系统的核心特点是无需原始载体图像即可提取水印(盲提取),并引入了Arnold置乱算法对水印信息进行加密处理,增强了安全性。
功能特性
- 图像预处理与自适应加载:系统能够自动读取指定的Cameraman测试图像,若缺失则自动生成Shepp-Logan Phantom合成图像,并将其缩放至512x512像素的统一尺寸。同时支持生成包含特定几何图案的二值水印。
- Arnold置乱加密:在嵌入前对二值水印进行Arnold变换,通过指定迭代次数打乱像素空间分布,既提高了安全性,也增强了抵抗剪切攻击的能力。
- DWT频域分解:利用Haar小波基对载体图像进行二级离散小波分解,精准分离出低频近似信息和高频细节信息。
- QIM盲嵌入算法:采用量化索引调制技术,将加密后的水印信息嵌入到二级小波分解的水平细节子带(HL2)中。该算法利用量化步长控制嵌入强度,无需原始图像即可通过系数的奇偶性恢复水印。
- 多样化鲁棒性测试:内置六种常见的图像攻击模拟,全方位评估水印的稳定性。
- 性能可视化评估:自动计算峰值信噪比(PSNR)和归一化相关系数(NC),并通过多子图和双轴图表直观展示攻击后的图像质量与水印提取精度。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
- Wavelet Toolbox(小波工具箱)
使用方法
本系统被封装在一个单一的MATLAB脚本文件中。直接通过MATLAB运行主函数即可启动全流程处理。由于代码内部包含了所有必要的子函数逻辑,无需配置额外的路径或依赖文件。运行后,系统将依次弹出多个窗口展示预处理结果、嵌入效果、攻击测试详情及最终的性能分析图表。
核心算法与实现逻辑分析
本项目的实现逻辑严格遵循代码流程,具体步骤如下:
1. 初始化与数据准备
系统首先定义关键参数,包括嵌入强度(量化步长Q=20)、Arnold迭代次数(10次)、小波分解层数(2层)及水印尺寸(64x64)。载体图像被统一转换为灰度双精度格式。水印图像被设计为包含特定几何形状(L形与点缀)的二值矩阵,而非简单的随机噪声,以便于人眼直观识别提取效果。
2. 安全性预处理
在嵌入之前,系统对二值水印执行Arnold置乱变换。该过程通过周期性的几何变换将水印图像的像素位置重新排列,使其变成一幅杂乱无章的图像。这不仅起到了加密作用,当遭受局部剪切攻击时,逆置乱后的水印也能分散错误,保留整体轮廓。
3. DWT变换与QIM嵌入(核心机制)
代码使用二维离散小波变换(wavedec2)对图像进行二级分解。嵌入区域被严格限定在二级水平细节子带(HL2)。
嵌入逻辑(量化索引调制 QIM):
系统遍历HL2系数和置乱后的水印位。对于每个位置,根据设定的量化步长Q,计算当前系数处于哪个量化区间。
- 如果当前量化区间的奇偶性与水印位(0或1)不匹配,系统会将该系数调整到相邻的正确奇偶性区间的中心值。
- 如果匹配,则将其调整到当前区间的中心值。
这种方法确保了修改后的系数携带了水印位的奇偶特征,实现了信息的嵌入,同时通过IDWT(离散小波逆变换)重构图像。
4. 盲提取机制
提取过程完全独立于原始载体图像。系统对含水印(或受攻击)图像进行同样的二级小波分解,提取HL2系数。
提取逻辑:
通过计算系数除以量化步长Q并取整,检查所得整数的奇偶性(模2运算)。如果是奇数对应水印位1,偶数对应水印位0(或反之,逻辑与嵌入严格对应)。提取出的比特流重组为图像后,经过逆Arnold变换恢复原始水印。
5. 鲁棒性攻击模拟
系统内置了单一函数用于可以标准化地处理攻击测试。主程序中依次执行以下攻击:
- 高斯噪声:添加均值为0,方差为0.005的高斯白噪声。
- 椒盐噪声:添加密度为0.02的椒盐噪声。
- 中值滤波:使用3x3窗口进行滤波平滑处理。
- 旋转攻击:旋转10度,并剪裁回原始尺寸,模拟几何失真。
- 剪切攻击:将图像左上角128x128区域像素置零,模拟数据丢失。
- JPEG压缩:模拟质量因子Q=50的有损压缩。
6. 评价指标与结果分析
对于每种情况,系统计算两个核心指标:
- PSNR (峰值信噪比):衡量含水印图像相对于原始载体的质量损失,数值越大代表图像失真越小。
- NC (归一化相关系数):衡量提取出的水印与原始水印的相似度,最大值为1,代表完全一致。
代码最后会生成一个综合图表,双Y轴分别显示NC值(柱状图)和PSNR值(折线图),直观对比在不同攻击强度下算法的不可见性与鲁棒性之间的平衡关系。