基于离散小波变换的数字水印嵌入与提取系统
项目介绍
本项目是一个基于离散小波变换(DWT)的数字图像水印处理系统。系统通过将宿主图像从空域转换到频域,利用小波系数的可修改性,在图像的特定子带中嵌入二值化的水印信息。该方案不仅保证了水印的不可见性(即嵌入水印后的图像与原图在视觉上基本无异),同时具备较强的鲁棒性,能够有效应对图像处理过程中的潜在干扰。
功能特性
- 多级DWT分解:支持对宿主图像进行多层级的小波分解,灵活选择嵌入能级。
- 参数化嵌入强度控制:通过 Alpha 因子调节嵌入强度,开发者可以根据需求平衡图像质量与水印稳健性。
- 非盲提取技术:利用原始图像系数进行辅助提取,确保在复杂环境下仍能获得极高的水印还原精度。
- 二值化鲁棒性增强:对水印图像进行二值化预处理,降低了噪声对信息提取的干扰。
- 全方位性能评估:自动计算并输出 PSNR(峰值信噪比)、NC(归一化相关系数)和 SSIM(结构相似性)三大指标,量化评价算法性能。
- 交互式可视化:系统生成对比图矩阵,直观展示原始图、含水印图、提取出的水印以及频率子带特征。
系统要求
- MATLAB R2016b 或更新版本。
- Image Processing Toolbox(图像处理工具箱)。
- Wavelet Toolbox(小波工具箱)。
使用方法
- 确保载体图像(如 peppers.png)与水印图像(如 coins.png)位于 MATLAB 路径中。
- 在脚本头部根据需要调整
alpha(嵌入强度)、wavelet_name(小波基)及 decomposition_level(分解层数)参数。 - 直接运行主函数。
- 观察弹出的可视化界面以及命令行输出的性能评估报告。
实现逻辑与算法细节
1. 图像预处理模块
系统首先将输入的宿主图像转换为灰度格式,并统一缩放至 512x512 像素,以保证后续小波分解的对齐。水印图像被缩放至 128x128(对应 512 像素经两层分解后的尺寸),并通过逻辑阈值转换为二值矩阵,以便于在频域进行稳定的系数叠加。
2. 水印嵌入逻辑
- 分解:通过
wavedec2 函数将图像分解为多个频率子带(低频近似、水平高频、垂直高频、对角高频)。 - 子带定位:系统锁定在第二层分解的水平子带(HL2)进行操作。中频子带的选择是出于视觉透明度(人类视觉对高频较不敏感)与稳健性(低频修改易察觉,极高频易被压缩抹除)的折中考虑。
- 系数修改:采用加性规则,将二值水印信息乘以强度因子 Alpha 后,累加到选定子带的系数中。
- 重构:应用逆离散小波变换(IDWT)将修改后的频率系数映射回空间域,生成最终的含水印图像。
3. 水印提取逻辑
- 重分解:对受测图像执行相同的小波分解过程。
- 差值计算:系统采用非盲提取模式,通过“(含水印系数 - 原始系数)/ 强度因子”的公式逆向推导出原始水印的连续值分布。
- 阈值判别:对推导出的连续值进行 0.5 阈值切割,将其还原为纯净的二值图像,实现水印的精准找回。
4. 关键算法与指标分析
- PSNR (Peak Signal-to-Noise Ratio):衡量嵌入操作对载体图像造成的失真度,通常 PSNR 值高于 30dB 表示水印具有良好的可见性隐匿。
- NC (Normalized Correlation):通过计算原始水印向量与提取水印向量之间的相关性,衡量提取结果的准确度。NC 值越接近 1,说明水印重构越完美。
- SSIM (Structural Similarity):内部实现了一个简版 SSIM 计算函数,通过对比均值、方差及协方差来评估图像结构信息的完整性,比 PSNR 更符合人类视觉的主观感受。
- DWT 多尺度分析:利用
haar 或 db1 等小波基,系统能够分层提取图像特征,这使得水印信息可以分布在图像的结构特征中而非简单的像素替换。