基于小波变换的数字盲水印及抗攻击性能评估系统
项目介绍
本项目是一套基于离散小波变换(DWT)的数字图像盲水印处理系统。该系统实现了在彩色图像的亮度分量中嵌入二值水印信息,并在无需原始图像的情况下进行盲提取。项目不仅实现了水印的加密与嵌入,还集成了一个完整的鲁棒性评估模块,能够模拟多种常见的数字图像攻击手段,并通过定量指标(PSNR, SSIM, NC, BER)全面评估算法的隐蔽性和抗攻击能力。
主要功能特性
- 多级DWT盲嵌入:利用Haar小波进行二级离散小波分解,基于量化索引调制(QIM)原理在特定的频带系数中嵌入信息。
- Arnold置乱加密:在嵌入前对水印图像进行Arnold变换置乱,消除像素空间相关性,提高水印安全性。
- 彩色图像支持:仅在YCbCr颜色空间的Y(亮度)分量进行操作,最小化对色彩信息的影响。
- 全自动攻击模拟:集成了包括噪声、滤波、压缩、几何变换等在内的9种攻击模式。
- 多维度性能评估:
* 不可见性:峰值信噪比(PSNR)、结构相似性(SSIM)。
* 鲁棒性:归一化相关系数(NC)、误码率(BER)。
- 完全自包含:程序内部自动生成测试用水印,无需外部水印文件,且内置了图片读取失败的降级处理方案。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
使用方法
- 确保MATLAB当前工作目录包含项目文件。
- 在MATLAB命令窗口输入主函数名称并回车运行。
- 系统将自动顺序执行以下流程:
* 初始化参数并加载/预处理载体图像。
* 生成二值印并可视化。
* 执行水印加密与嵌入。
* 计算并输出含水印图像的质量指标(PSNR, SSIM)。
* 展示攻击测试窗口,逐一进行攻击模拟、水印提取和数据分析。
* 在控制台输出每种攻击下的NC系数和误码率。
详细功能实现逻辑
本项目的主逻辑流程严谨地对应了数字水印系统的生命周期,具体实现细节如下:
1. 参数设置与数据准备
系统首先初始化关键参数,包括DWT分解层数(默认为2层)、量化步长Alpha(控制嵌入强度,默认为40)以及Arnold置乱迭代次数。
系统尝试读取彩色载体图像(默认为peppers.png),如果读取失败则使用备用图像并转为伪彩色。图像被强制归一化为512x512像素。
水印生成:程序根据DWT分解层数动态计算水印尺寸(512/4 = 128像素),并自动生成包含矩形框和对角线的二值几何图案,无需加载外部图片。
2. 水印预处理(加密)
为了提高安全性及鲁棒性,系统对二值水印应用Arnold置乱算法。通过多次迭代变换坐标,将水印图像打散成无意义的噪声图像,防止水印信息被直接观察。
3. DWT盲水印嵌入算法
嵌入过程是系统的核心,具体步骤如下:
- 颜色空间转换:将RGB图像转换为YCbCr空间,仅提取Y(亮度)分量进行嵌入,保留Cb和Cr分量不变。
- 小波分解:对Y分量进行2级Haar小波分解,得到各级近似系数和细节系数。
- 系数选择:选取第2层的水平细节系数(H2)作为嵌入域。选择中频/低频部分通常能在鲁棒性和不可见性之间取得平衡。
- 量化嵌入(QIM):采用量化调制策略。对于每一个水印比特:
* 若水印位为1,将对应的系数量化为Alpha的奇数倍。
* 若水印位为0,将对应的系数量化为Alpha的偶数倍。
- 逆变换重构:修改H2系数后,结合原有的其他系数,利用逆离散小波变换(IDWT)分级重构Y分量,最后与Cb、Cr分量合并并通过YCbCr转RGB得到最终含水印图像。
4. 图像质量评估
在攻击模拟前,系统立即计算含水印图像与原始图像的差异:
- PSNR:衡量图像的像素误差,值越大代表失真越小。
- SSIM:衡量图像的结构相似度,越接近1代表视觉效果越好。
5. 攻击模拟与鲁棒性检测
系统自动化循环执行多种攻击,每种攻击后立即进行盲提取和评估:
支持的攻击类型:
- 无攻击:作为基准对照。
- 噪声攻击:高斯噪声(方差0.005)、椒盐噪声(密度0.02)。
- 滤波攻击:中值滤波(3x3窗口,针对RGB三通道)、高斯滤波(Sigma 0.5)。
- 压缩攻击:JPEG压缩(质量因子60)。
- 几何攻击:旋转(2度)、图像剪切(左上角15%区域遮挡)、缩放攻击(缩小至0.8倍后再放大回原尺寸,模拟插值失真)。
盲提取逻辑:
- 无需原始载体图像。
- 对受攻击图像进行YCbCr转换及2级DWT分解。
- 提取H2系数,计算每个系数除以Alpha后的商。
- 通过四舍五入取整并判断奇偶性来恢复水印比特(奇数对应1,偶数对应0)。
- 对提取的比特矩阵进行Arnold逆变换,恢复原始水印图案。
评估指标:
- 计算提取水印与原始水印的归一化相关系数(NC),值越接近1说明提取效果越好。
- 计算误码率(BER),衡量错误比特的比例。
关键算法说明
量化索引调制 (QIM)
代码中没有使用加法扩频,而是使用了基于步长Alpha的量化方法。这种方法属于盲水印技术,提取时不需要原图,只需知道量化步长即可。Alpha值的选择至关重要:Alpha越大,抗干扰能力越强(鲁棒性高),但对图像像素值的改变幅度也越大,导致图像质量下降(不可见性差)。本系统折中选取了40作为步长。
Arnold 变换
这是一种周期性的图像置乱算法。代码实现了正向变换(加密)和逆向变换(解密)。只有当提取端知道正确的迭代次数(密钥)时,才能还原出有意义的水印图像,否则提取出的只是一类噪声。