基于DCT离散余弦变换的数字水印嵌入与提取系统
项目介绍
本项目是一个基于离散余弦变换(DCT)的数字图像水印处理系统。系统利用频率域变换技术,将二值化的水印信息隐蔽地嵌入到宿主图像的中频分量中。该方案能够平衡水印的不可见性(隐蔽性)与健壮性(鲁棒性),并实现在无需原始图像参与下的水印盲提取。系统内置了完整的安全性处理、嵌入逻辑、攻击模拟及性能评估模块,适用于版权保护和防伪验证。
功能特性
- 安全性预处理:对水印图像进行Arnold置乱变换,通过改变像素的空间分布来增强系统的安全性,防止非法提取。
- 频率域嵌入:利用8x8分块DCT变换,将图像能量集中在低频部分,选择对视觉影响较小的中频系数进行水印信息编码。
- 盲提取能力:提取逻辑基于DCT系数之间的相对大小关系,无需原始宿主图像即可恢复水印。
- 多维度攻击模拟:内置高斯噪声、JPEG压缩、均值滤波及局部剪切等常见的图像处理攻击。
- 量化性能评估:自动计算含水印图像的PSNR(峰值信噪比)以及提取水印的NC(归一化相关系数),直观反映算法的有效性。
系统要求
- MATLAB R2016b 或更高版本
- Image Processing Toolbox(图像处理工具箱)
实现逻辑与功能细节
#### 1. 初始化与数据生成
系统首先设置嵌入强度(Alpha=20)和Arnold置乱迭代次数(3次)。程序自动生成一张256x256的灰度宿主图像(通过卷积平滑处理生成)以及一张32x32的二值随机水印图像,并校验宿主图像的分块数量是否足以容纳水印容量。
#### 2. Arnold置乱变换
为提高安全性,水印图像在嵌入前经过Arnold变换(也称猫映射)。通过对像素坐标执行模运算线性变换,将原始水印的视觉特征打碎。恢复阶段则使用对应的逆变换逻辑。
#### 3. DCT分块嵌入
- 分块处理:宿主图像被划分为若干互不重叠的8x8像素子块。
- 频域转换:对每个子块进行二维DCT变换,提取频域矩阵。
- 系数修改:选择中频位置的两个系数 (5,2) 和 (2,5) 进行操作。当水印位为1时,强制调整 (5,2) 的值使其大于 (2,5) 加嵌入强度;当水印位为0时,调整 (2,5) 的值使其大于 (5,2) 加嵌入强度。
- 重构图像:完成修改后,通过逆DCT变换(IDCT)将图像块返回空间域,最终合并生成含水印图像。
#### 4. 攻击模拟模块
系统对生成的含水印图像应用以下四种攻击以测试稳健性:
- 高斯噪声:添加均值为0,方差为0.005的噪声。
- JPEG压缩:通过写入并在50%质量因子下读取图像,模拟压缩损失。
- 均值滤波:使用3x3算子进行邻域平均,模拟平滑处理。
- 局部剪切:将图像坐标 (10:60, 10:60) 区域内的像素置为0,模拟局部遮挡。
#### 5. 水印提取与评估
- 提取逻辑:在受攻击图像中重复分块DCT过程。比较每个块中DCT系数 (5,2) 与 (2,5) 的大小。若前者大于后者则判定提取位为1,否则为0。
- 逆置乱恢复:对提取出的二值序列应用逆Arnold变换,恢复为原始的水印排列。
- 量化指标:
*
PSNR:通过均方误差计算宿主图与含水印图的差异,衡量视觉保真度。
*
NC:计算原始水印与提取水印的互相关性,衡量在不同攻击场景下的抗干扰能力。
关键算法说明
离散余弦变换 (DCT)
系统利用DCT的能量聚集特性。在8x8矩阵中,左上角代表直流分量和低频信息,右下角代表高频噪声。选择中频位置(如本案中的 (5,2) 和 (2,5))嵌入水印,既能避开对视觉敏感的低频区,又能防止在高频攻击(如压缩、滤波)中丢失信息。
Arnold变换
一种基于像素坐标替换的图像置乱技术。其正向变换公式利用矩阵乘法 [1 1; 1 2] 对坐标进行线性映射,使图像呈现杂乱无章的状态。只有掌握迭代次数和变换矩阵,才能通过相应的逆变换恢复原始信号。
盲提取机制
本系统的提取过程不依赖于原始宿主图像的像素值,仅依赖于频域系数的相对大小关系。这种设计大大增加了系统的实用性,使其可以应用于宿主图像不可知的真实版权溯源环境。