基于DCT域的数字水印
基于离散余弦变换(DCT)的数字水印技术是一种在图像处理中广泛应用的方法。该技术通过将水印信息嵌入到图像的低频部分,确保其在视觉上不易察觉。DCT变换将图像分解为频率分量,水印信息被嵌入到低频分量中,从而提高了鲁棒性。然而,该方法对旋转和剪切攻击较为敏感,提取水印效果较差。实验结果表明,未受攻击的图像提取的水印清晰,相似度高达99.55%。尽管如此,DCT方法在多种攻击下仍具有一定的鲁棒性,但其性能在面对旋转和剪切攻击时有所下降。总体而言,DCT算法在数字水印领域具有重要应用价值,但其鲁棒性仍需进一步优化以应对多种图像处理攻击。
基于DCT域的数字水印
算法研究与应用
目录
摘要
一、数字水印技术的概述
1.1数字水印的概述
二、可实现数字水印技术的实用工具——Matlab
2.1概述
2.2算法中常用的Matlab函数介绍
三、离散余弦变换(DCT)算法及水印实现
3.1DCT变换公式
3.2二维DCT的性质
3.3DCT变换水印的实现
3.4离散余弦变换水印提取算法
3.5DCT算法的matlab程序运行
3.6 仿真结果
四、数字水印的性能评估和攻击
4.1影响水印健壮性的因素
4.2视觉质量的定量描述
五、总结
摘要
随着信息技术的快速发展和网络环境的日益复杂,数字产品的保密性和版权保护问题逐渐成为关注焦点,这使得数字水印技术作为一种有效的信息保护手段而备受重视。一个理想的数字水印系统应至少具备以下三个核心特性:首先,安全性要求数据信息被隐含于数据图像之中,而非仅存于文件头部分,且在经历文件格式变换时,水印信息不应受到影响而发生丢失。其次,隐蔽性要求图像与原始图像在人眼的刺激感受上应保持一致,即在数字图像作品中嵌入水印信息不会导致图像明显降质,水印带来的感官变化应极为微小。再次,鲁棒性要求经过有意或无意的信号处理过程后,水印信息应保持完整性,或至少能被准确鉴别出来。本研究主要聚焦于离散余弦变换(Discrete Cosine Transformation,DCT)域内的数字水印嵌入与提取技术。
关键词: 数字水印 离散余弦变换 嵌入 提取 鲁棒性
一、数字水印技术的概述
1.1数字水印的概述
伴随着计算机网络技术的进步,信息媒体的数字化转型极大地便利了信息的存取,显著提升了信息表达的效率和准确性。然而,这一变革也带来了诸多负面影响,一些不法分子和团体在未获得原作者许可的情况下,擅自复制和传播未经授权的版权数据文件或作品。这些问题愈发凸显,已迫切需要建立完善的应对体系。密码技术作为信息安全的重要传统手段,确实存在一些局限性:首先,加密后的文件由于其不可读性,会阻碍信息的有效传播;其次,一旦文件被解密,其内容将不再受到保护。因此,发展一种替代方案或是对现有密码学进行优化补充的技术成为当务之急,数字水印技术应运而生。
数字水印技术基本特征主要有:鲁棒性、不可见性、不可检测性、自恢复性。
主要应用领域包括版权管理、盗版追踪、图像识别技术、票据鉴别系统、文件标题与注释管理以及版权保护系统。
数字水印根据特性可分为鲁棒型和脆弱型数字水印;按照所承载的媒体类型分为图像水印、音频水印、视频水印以及文本水印;依据隐藏位置可分为时域(或空域)数字水印、频域数字水印、时频域数字水印,以及基于时间和尺度的数字水印。
尽管人们正致力于发展和优化数字水印技术,但该技术尚未完全成熟且尚未被广泛理解,此外,仍存在诸多未解决的问题。尽管水印技术在短期内难以取得突破,然而,鉴于其广泛的应用价值,深入研究该技术是必要的。
1.2数字水印的典型算法
目前实现数字水印的典型算法有:
空域算法。最基本且具有典型性的方案是以水印信息为基础,以LSB或多个位平面为基础,以比特为基础进行数据替换的算法。这是一种空间域中的数据隐藏技术。
变换域方法。涵盖离散余弦变换(DCT)、小波变换(WT)、傅里叶变换(FT或FFT)以及哈达马变换(Hadamard transform)等技术。其中,基于分块的DCT是最常用的一种变换。DCT数字水印算法的具体实现过程如下:首先,将图像划分为8×8的不重叠像素块;接着,通过DCT变换得到的频率块由DCT系数构成;随后,随机选择若干频率块,并将水印信号嵌入到由密钥控制选择的DCT系数中。该方法通过对选定的DCT系数进行微小调整,以满足特定关系,从而表示单比特信息。与之类似的,基于DFT和DWT的算法在原理上有相似之处。以变换域方法为代表的通用算法,通过在频率域中实现水印信号叠加,并借鉴扩频技术对水印信号进行有效编码,从而显著提升了水印的可透明度和鲁棒性。同时,该方法还合理利用滤波技术,对DCT引入的高频噪声进行了有效抑制,从而增强了对低频滤波器的抗干扰能力。
基于JPEG、MPEG标准的压缩域数字水印系统不仅减少了大量完全解码和重新编码的操作,而且在数字电视广播及VOD(Video on Demand)领域具有显著的应用价值。
4、NEC算法。
5、生理模型算法。
二、可实现数字水印技术的实用工具——Matlab
2.1概述
用Matlab研究数字水印的优点:(1)整合了DFT、DCT、DWT等函数,形成了功能完善的函数库,为研究人员提供了便捷的开发环境,使源程序简洁明了、易于实现。(2)具备强大的数学运算能力,为音频和视频中的矩阵运算提供了高效解决方案。(3)提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱,这些工具箱为编制跨学科的数字水印技术(如数字图像处理、数字信息处理等)提供了理想的选择。(4)Matlab语言的用户均可参与工具箱的开发,遵循Matlab工具箱的规则,结合专业函数,开发专用的数字水印工具箱。
2.2算法中常用的Matlab函数介绍
Matlab的工具箱包含大量功能模块,其中包含用于数字水印算法实现的关键函数,如FFT、DCT、DWT等,以及辅助处理函数。这些库函数极大地简化了算法的实现过程。为了帮助理解这些技术,以下将介绍与数字水印算法实现相关的常见函数及其作用。
1、图像文件输入输出函数
imread:从文件读取图像,图像文件可以是bm、pdf、jpeg、pcx、tiff、xwd等格式。
imwrite:把图像写成文件
load:将以mat为扩展名的图像文件调入到内存
save:将工作空间中的变量保存到以mat为扩展名的图像文件中
2、图像显示函数
image:建立并显示图像,它可返回一个图像的句柄给一个image对象
imshow:显示一幅图像
truesize:调整图像显示大小
3、LSB空间域算法常用函数
rand:产生随机序列
unit8:把其它类型对象转换为8位无符号整数类型
double:把其它类型对象转换为双精度数值
size:计算图像(矩阵)的大小
sum:对元素求和
reshape:重新排列矩阵
4、DCT域图像变换函数
dct,dct2:分别实现一维信号和二维信号的DCT(离散余弦变换)
idct,idct2:分别实现一维信号和二维信号的IDCT(逆向离散余弦变换)
5、DWT域图像变换函数
dwt,dwt2:分别实现一维信号和二维信号的DWT(离散小波变换)
idwt,idwt2:分别实现一维信号和二维信号的IDWT(离散小波变换)
wavedec2:多级二维小波分解函数
waveinfo:提供小波包中所有的小波信息
6、攻击函数
imcrop:将图像剪裁成指定的矩形
imresize:使用指定的插值方法,调整图像大小
imrotate:使用指定的插值方法逆时针将图像旋转任意指定的角度
imadjust:用于调整图像的对比度
imnoise:给图像增加噪声
filter,filter2:实现对一维和二维信号的滤波
三、离散余弦变换(DCT)算法及水印实现
3.1DCT变换公式
DCT 转换公式是这一算法的关键,建议先熟悉DCT 正反转换公式。其核心是余弦转换,计算效率较为高效,水印技术中采用二维转换,具体阐述二维DCT的正反变换公式,其二维DCT正变换公式为:


=0,1, ⋅ ⋅ ⋅, M-1;

=0,1, ⋅ ⋅ ⋅, N-1
其中:





二维DCT反变换公式为:


其中x,y 为空间采样值,u,v 为频域采样值。
数字图像通常采用M×N像素矩阵来表示,其中,M和N分别代表图像的行数和列数,并且满足M=N的条件。在此情况下,二维DCT的正向与逆向变换可以被简化为:




3.2二维DCT的性质
离散余弦变换(DCT)是图像处理领域中几种最基本的正交变换之一。正交变换是线性变换的一种特殊形式,其基本线性运算表达式是严格可逆的,并且满足严格的正交条件。图像数据的正交变换可以被理解为将其分解为广义二维频谱,变换域中的每一个分量都对应于原图频谱函数的能量分布。
设IM´N 为M´N 的图像矩阵则该图像的二维DCT 变换可由下式表示:
FDCT=

其中

其中


经过二维DCT变换得到的DCT系数矩阵GDCT反映了各个频率对应的强度变化。图像的低频分量表现在图像缓慢变化的部分,即整体区域;而高频分量则表明了图像变化剧烈的区域,即细节部位,例如轮廓线和边缘。基于人眼的视觉特性,图像整体部分的重要性高于细节部分。若经过处理后视觉感受未显著变化,则低频分量的变化程度相对较小。该算法采用的方法是将数字水印的灰度信息嵌入到DCT域的低频分量。
二维离散余弦变换是一种高度可逆的正交变换。这两个矩阵AM´M和BN´N满足正交条件。


由此,易得到离散余弦逆变换(IDCT):

由于DCT 是一种精确可逆的正交变换,从而使得基于DCT 的植入算法能够实现精确的数字水印滤波。
3.3DCT变换水印的实现
本算法选择二值化灰度图像作为水印信息载体,并根据水印图像的二值特性,选择相应的嵌入系数。随后,将载体图像按照8×8的大小进行分割,将数字水印的灰度值直接注入到载体灰度图像的DCT变换域中,完成水印信息的嵌入过程。具体而言,首先对载体图像进行分块处理,然后将水印的灰度值注入到相应的DCT频域系数中,最后完成水印信息的嵌入过程。
设原始图像I的尺寸为M×N,水印图像J的尺寸为P×Q,其中,M和N均为P和Q的偶数倍。随后,将水印J嵌入到原始图像I中,算法的具体步骤如下:
1. 将I分解为(M/8)×(N/8)个8×8大小的方块B;同时,J也分解为 (M/8)×(N/8)个(8P/M)×(8Q/N)大小的方块V;
2. 对每一个B进行DCT变换:DB=DCT(B);
对于每一个DB和V,s(i)表示从DB中选择的加载位置,其中i的取值范围为1到(8P/M)×(8Q/N);t(i)则表示水印V在图像中的坐标位置,同样i的取值范围为1到(8P/M)×(8Q/N)。通过计算DB’(s)=A×V,其中A为加权因子,将DB’(s)替代原DB,从而得到加载水印后的图像DBC’。
对上述获得的每一个DBC执行逆DCT变换:IDBC=IDCT(DBC),并将这些IDBC块合并成一个整体图像I,即加载了水印的原始图像。

3.4离散余弦变换水印提取算法
定义图像D为已经加载水印的载体图像,需要从D中提取加载的水印,其逆运算过程即为水印提取算法。
1. 将D分解为(M/8)×(N/8)个8×8大小的方块BD;
2. 对每一个BD进行二维DFT变换:DBD=DCT(BD);
3. 提取数据对每一个DBD,按照式V’=1/A×DBD得到V’;
4. 将上面得到的所有V’合并成一个水印整图J’。
3.5DCT算法的matlab程序运行
size=512; N=32;K=8; D=zeros(size);E=0.01;
Y1=imread('22.jpg');
I=rgb2gray(Y1);
subplot(2,3,1);%将彩色图像变成灰度图像
imshow(Y1);
title('原始图像');
I=double(I)/512;%读入水印
J=imread('444.bmp');
subplot(2,3,2);
imshow(J);
title('水印图像');
%对水印缩放
J=double(imresize(J,[64,64]));
subplot(2,3,3);
imshow(J);
title('缩放水印图像');
%嵌入水印
for p=1:size/K %为待嵌入水印的变换域的行坐标
for q=1:size/K
x=(p-1)*K+1; y=(q-1)*K+1;
I_dct=I(x:x+K-1,y:y+K-1);%将原图分成8*8的子块
I_dct1=dct2(I_dct);%对子块进行DCT变换
if J(p,q)==0
alfa=0;
else
alfa=0.05;
end
I_dct2=I_dct1+alfa*E;
I_dct=idct2(I_dct2);
D(x:x+K-1,y:y+K-1)=I_dct;
end
end
subplot(2,3,4);
imshow(D,[]);
title('含水印的图象');
%%%%%%对加入水印的图像进行各种攻击
%%%低通滤波攻击
hh=fspecial('gaussian',3,0.1);
%hh=fspecial('gaussian',3,0.35);
% hh=fspecial('gaussian',3,0.4);
QQ=filter2(hh,D);
% 提取水印
for p=1:size/K
for q=1:size/K
x=(p-1)*K+1;
y=(q-1)*K+1;
I1=I(x:x+K-1,y:y+K-1);
I2=QQ(x:x+K-1,y:y+K-1);
I_dct1=dct2(I1);
I_dct2=dct2(I2);
if I_dct2>I_dct1
W(p,q)=1;
else
W(p,q)=0;
end
end
end
subplot(2,3,5);imshow(hh,[]);title('低通滤波攻击');
subplot(2,3,6);imshow(W,[]);title('图像中提取的水印');
3.6 仿真结果
1、低通滤波攻击
hh=fspecial('gaussian',3,0.1);

2、低通滤波攻击
hh=fspecial('gaussian',3,0.3);

3、低通滤波攻击

四、数字水印的性能评估和攻击
对水印性能的评估方法和基准的制定是数字水印研究的重要内容。评估水印性能主要包括两个方面:一是水印的鲁棒性评估;二是水印嵌入对图像产生的失真(包括主观和客观)的定量评估。在确保水印鲁棒性的同时,需兼顾其不可见性。因此,在保证可比性测试的前提下,应尽量使各水印系统在同一图像可见性要求下进行测试。
4.1影响水印健壮性的因素
对于同一水印方案而言,嵌入的信息量越大,则水印的鲁棒性越强。然而,对于同一水印方法而言,嵌入的信息容量越大,则水印的健壮性越差。嵌入的信息来源则因不同的应用场景而异。
2、水印嵌入强度的设置。在实际应用中,水印嵌入强度与水印可见性之间存在权衡关系。为了提升水印的鲁棒性,通常需要提高水印嵌入强度,这会相应地增强水印的可见性。
图像的尺寸和特性。图像的尺寸对嵌入水印的健壮性具有显著影响。一个实用的水印软件程序应该能够实现从此图片中恢复水印。对于用于打印的图像,通常需要其具有高分辨率。然而,同时希望这些图像在被扫描并上传至网络后仍能受到保护。图像的特性同样具有重要影响。在自然图像中,具有较高健壮性的水印方法,在应用于由计算机生成的合成图像时,其健壮性会显著降低。一个公平的基准测试应能够适应从几百像素到上万个像素的图像尺寸范围,并且测试所用的图像应涵盖不同类型的图像。
密钥生成机制在保障系统安全方面具有关键作用。水印算法设计中,密钥空间的规模必须具有相当规模,以防止穷举攻击成功。
4.2视觉质量的定量描述
两种定量度量的方法:
1、基于像素的度量方法
该方法属于量化失真度量,其结果不受主观评估的影响,从而在不同方法间进行公平比较。在视觉信息处理中,大多数失真量度量和质量评估方法都属于差分失真度量。这些度量都是基于原始未失真图像与修改后的失真图像之间的差异计算得出的。然而,差分失真量度量不能很好地与人类视觉系统能对应,因此复杂的水印方法可能会利用一种或多种视觉系统的效果,从而导致在水印技术应用中出现一些问题。例如,使用上述方法量化水印处理带来的失真程度可能会导致评估结果的不准确性。
2、可见性质量度量
人类视觉系统对基于像素的失真量度量表现出明显局限性,这促使研究者们逐渐转向开发能够适应人类视觉系统特性的失真量度量方法。可见性质量模型通过充分考虑人类视觉系统的对比敏感性和掩蔽效应,构建了一个更为符合人类感知规律的评估体系,它建立在多通道空间视觉理论基础之上。
五、总结
在本研究中,离散余弦变换(DCT)在图像处理中发挥着关键作用。本设计采用离散余弦变换将水印嵌入到原图像的低频区域中。所提出的水印算法虽然在抗原图依赖性方面略逊于某些需要原图的水印算法,但与之相比,本算法无需依赖原图未加水印的状态,且能够有效抵御诸如旋转、裁剪、低通滤波等常见的攻击手段。通过实施直方图均衡预处理,本算法的性能进一步提升了,实验结果表明该算法具有良好的鲁棒性。本实验所采用的仿真软件为MATLAB7.0版本,该版本相较于更高版本虽然缺少一些功能模块,但对本设计的实现影响较小。
其次,可以说嵌入水印的图像还是比较清晰的,这表明离散余弦变换法具有一定的实用性。在未受到任何攻击的情况下,提取的水印非常清晰,与原图像的相似度高达99.55%。对于低通滤波攻击和剪切攻击而言,水印的提取效果还是比较理想的;然而,针对旋转攻击和剪切攻击,效果却并不令人满意。当面对旋转和剪切攻击时,水印无法提取。这说明离散余弦变换在这一领域仍有一定局限性。数字水印的方法多种多样,但每一种单独的方法都无法抵御多种图像处理方法的攻击,只有通过综合运用多种方法才能达到更好的效果。
最后,程序采用了基本的循环语句,而未对代码进行优化。在本论文的研究中,程序的运行时间相对较低,但当处理较大图像时,必须重视代码优化问题。特别地,对于for循环,采用向量化循环方法可使运行时间大幅减少。此外,程序也未考虑预先分配内存空间,当引入预先分配内存空间后,运行时间将显著缩短,同时确保内存使用更加连续,避免内存碎片问题。
