《基于DCT的数字水印研究》阅读报告课程名称计算机视觉姓名廖杰学号M201372880专业计算机技术任课教师王天江所在学院计算机科学与技术学院报告提交日期2014-01-13一.概要提出了一种基于DCT变换的图像数字水印算法,重点解决了水印嵌入过程中不可见性和鲁棒性折衷问题。
首先对原始图像进行分块并对各子块做DCT变换,接着将经过Torus置乱的水印图像嵌入到各子块的中频DCT系数中,通过选择适当的嵌入强度,可以得到较好的不可见性和鲁棒性。
二.概念综述2.1 数字水印技术数字水印技术(Digital Watermarking)是一种信息隐藏技术,它的基本思想是在数字图像、音频和视频等数字产品中嵌入秘密信息,以便保护数字产品的版权、证明产品的真实可靠性、跟踪盗版行为或者提供产品的附加信息。
其中的秘密信息可以是版权标志、用户序列号或者是产品相关信息。
一般,它需要经过适当变换再嵌入到数字产品中,通常称变换后的秘密信息为数字水印(Digital Watermarking)。
数字水印的嵌入不应影响原有数据内容的价值和使用,通常是不可见的或不能被人的感知系统察觉,且不会被常规处理操作去除。
2.2 数字水印系统的基本框架一个典型的水印系统由嵌入器和检测器组成。
嵌入器至少具有两个输入量:一个是原始信息,它通过适当变换后作为待嵌入的水印信号;另一个就是要在其中嵌入水印的载体作品。
水印嵌入器的输出结果为含水印的载体作品,通常用于传输和转录。
之后这件作品或另一件未经过这个嵌入器的作品可作为水印检测器的输出量。
大多数检测器试图尽可能地判断出水印存在与否,若存在,则输出为所嵌入的水印信号。
下图给出了数字水印处理系统基本框架的详细示意图。
它可以定义为九元体(M,X,W,K,G,Em,At,D.Ex),分别定义如下:1、M代表所有可能原始信息的集合。
2、X代表所要保护的数字产品x(或称为作品)的集合,即内容。
3、W代表所有可能水印信号w的集合。
4、K代表水印密钥k的集合。
5、G代表利用原始信息m、密钥K和原始数字产品x共同生成水印的算法,即G:M*X*K->W,w=G(m,x,K)6、Em表示将水印,嵌入数字产品x中的嵌入算法,即Em:X*W->X, Xw=E(X,W)这里,X代表原始产品,Xw代表含水印产品。
为了提高安全性,有时在嵌入算法中包含嵌入密钥7、At表示对含水印产品了的攻击算法,即At:X*K'->Xk这里,K'表示攻击者伪造的密钥,Xk表示被攻击后的含水印产品8、D表示水印检测算法,即9、Ex表示水印提取算法,即Ex:X*K->W总思路如下图2.2Torus图像置乱变换所谓“置乱”,就是将图像的信息次序打乱,将a像素移动到b像素的位置上,b像素移动到c像素的位置上,使其变换成杂乱无章难以辨认的图像。
数字图像置乱加密技术是指发送方借助数学或其他领域的技术,对一幅有意义的数字图像作变换使之变成一幅杂乱无章的图像再用于传输;在图像传输过程中,非法截获者无法从杂乱无章的图像中获得原图像信息,从而达到图像加密的目的;接收方经去乱解密,可恢复原图像。
为了确保图像的机密性,置乱过程中一般引入密钥。
Torus 自同构映射给定一幅图像,Torus 自同构映射可以将其彻底的打乱,从而产生一幅完全混乱的图像。
实际上,Torus 自同构映射对这些像素进行了如下公式所示的变换:如此反复重复下去,此过程可归纳为AN(k ):在上式中,(xn,yn)是二维空间上的一点,是对(x0,y0) 作用自同构映射n 次后的结果。
Torus 自同构映射的参数是k、n、N、K。
其中K 为自同构映射的最小整周期。
文献给出了广义Gray 变换理论周期的计算。
计算表明,当k=1,N=64 时,K=64;当k=12,N=32 时K=64,k 的值由使用者任意指定,n 和N 则分别代表了Torus 自同构映射的重复次数和给定图像的像素数(0<n<K)。
Torus 自同构映射对给定图像可重复进行,以改变图像中像素的相对位置。
需要注意的是尽管像素的相对位置改变了,Torus 自同构映射并未改变每一个像素的颜色值。
Torus 自同构映射可以看作二维变换,可由一个2×2的矩阵来描述。
有时人们也直接称该矩阵为Torus 自同构映射。
下面是对HUST的Torus置乱实例:2.3 DCT变换离散余弦变换(Distributed Cosine Transform)简称DCT变换。
离散余弦变换是傅立叶变换的一种特殊情况,在傅里叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出离散余弦变换,因此余弦变换与傅里叶变换一样有明确的物理意义,DCT变换避免了傅里叶变换中的复数运算,它是基于实数的正交变换。
DCT变换矩阵的基向量很近似于ToePIitz矩阵(系数矩阵对称且沿着与主对角线平行的任一对角线上的元素都相等)的特征向量,而ToePIitz矩阵又体现了人类语言及图像信号的相关特性,故DCT 常常被认为是对语音和图像信号的准最佳变换,同时DCT算法较易于在数字信号处理器中快速实现,因此它目前在图像编码中占有重要的地位,目前使用的JPEG和MPEG压缩标准都是基于图像的DCT变换。
在数字图像处理中使用的是二维DCT,对一幅M*N图像S(x,y),它的DCT变换为反离散余弦变换(IDCT)为:其中,v=0,1,2,3……N-1,u=0,1,2,3……M-1若N=8则DCT可表示为:DCT变换采用“块”的形式进行变换,块的大小通常可以根据需要而确定,可以将整幅图像看作一个块进行DCT变换,也可以将图像分割成不同的子块独立进行DCT变换。
DCT的正变换将图像分解到不同的空间频率上,不同的频域系数代表该频率成分在原图像中的比重。
下面以Lenna图像为例,利用DCT变化函数得到的DCT系数的性质。
只取R层的DCT 稀疏矩阵进行分析。
下图显示了变化的结果,其中DCT系数用光谱的形给出,直观的表明了低频和高频系数的分辨规律。
2.4归一化相关系数NC为定量的评价提取的水印与原始水印之间的相似度,系数NC来评价。
即式中,V表示原来的水印信息向量,Wr表示恢复出来的水引信息向量,Z二表示归一化相关系数,其越接近于1,说明恢复的水印也就越好2.5人类视觉频域特性人眼对图像信息的处理并不是逐点来进行的,而是抽取空间、频率或色彩的特征进行神经编码. 人的视觉感知特点与统计意义上的信息分布并不一致,即统计上需要更多信息量才能表述的特征对视觉感知可能并不重要,从感知的角度来讲无须详细表述这部分特征.视觉系统的频率响应函数:其中ω为视角正对的径向频率,单位为周/ 度(cycle/ degree),a 、b、c 为决定HVS 曲线形状的常数。
HVS 曲线的形状表示式见公式下图为人类视觉频率响应函数曲线,其中横轴表示径向频率ω的值,纵轴表示视觉系统的相应函数H(ω)的值。
由此曲线可以看出,人眼对8<ω<12之间的区域最敏感,对此区域对应的图像的像素即使作很小的改动,也会引起人眼的注意;然而对0<ω<8和12<ω区域响应较低,其中12<ω<22之间为中频部分,22<ω区域为高频部分。
另一方面,根据JPEG有损压缩原理:一般将DCT变换的高频系数变为零,然后再将剩下的DCT系数进行编码,来完成图像的压缩。
所以如果在原始图像的高频DCT系数中嵌入水印信息,很可能在进行JPEG有损压缩时擦除水印信息。
早期的DCT变换域的水印算法是把水印嵌入到原始图像的低频中,这里采用一种改进方法:把水印嵌入到中频(12<ω<22)分量上以调节水印的稳健性与不可见性之间的矛盾。
三.算法流程3.1 基本思想先将原始图像分成8×8 的子块。
并分别对每一子块进行离散余弦变换,然后根据人类视觉模型频率响应函数来选取每一水印待嵌入的DCT 变换系数的位置,再利用最小可察觉误差(JND) 来确定在图像的每一子块所能嵌入的数字水印信号的最大强度,把已经过预处理的水印信息自适应地嵌入到原始图像,然后将嵌入水印信息的DCT 系数的子块进行逆DCT 变换,最后合成为嵌入水印图像。
提取算法与嵌入算法相似。
设原始图像和待嵌入水印图像分别为I( N1 ×N2 ), W(M1 ×M2 )。
为了方便计算,取M1 = N1/ 4, M2 = N2/ 4。
3.2 嵌入算法流程第一步:用Torus 图像置乱技术将二值水印图像置乱(可逆),然后转换成一维二值序列,记为w(i),i =1,2……M1 ×M2 。
第二步:将原始图像I 分为互不覆盖的8×8的子块fm (i, j ) ,m = N1/8,n = N2/8,i, j = 1,2….8。
对每个子块分别进行DCT 变换。
在实际计算中,先将原始图像分成8×8子块,然后将每个8×8的子图像块分别进行DCT变换,并将DCT系数进行Zig-Zag排列,然后根据公式(3-11)、(3-12)将DCT系数变换成相应的ω值来选取每个子块的嵌入区域。
在图3-4中,图a)是一个8×8的DCT块经过Zig-Zag 扫描后的排列图,图b)是根据公式将DCT系数变换为相应的径向频率ω的值的排列图。
由图3-4 中的图b)矫正后的视觉响应函数,本章算法嵌入水印的区域选取如图3-5。
为了增强算法的稳健性,本算法利用了多重嵌入技术。
即pij ,i = 0,L,5用来嵌入一比特的水印信息,同理p2,p3,p4,i = 0,L,5分iii别用来嵌入一比特的水印信息,具体见3.4 节。
所以每个8×8 的子块可以用来隐藏4 比特的水印信息。
第三步:根据人类视觉频域特性结论,适当选取第二步完成后得到的子块系数矩阵中的(64×M1 ×M2 ) N1 ×N2 各中频系数作为嵌入水印的位置(为了增强算法的稳健性,利用了多重嵌入技术,即选择嵌入的区域多于嵌入的水印比特数,在本算法中,每8×8 子块嵌入的水印4 比特,选取的嵌入区域24 个)。
第四步:根据人类视觉掩蔽特征公式求得每块图像里被选定区域的水印嵌入强度Qm (i, j )。
第五步:相应的从二值序列中按顺序取出4 比特水印,运用如下公式嵌入到选定的区域上。
其中Qm (i, j ) 为系数Fm (i, j ) 对应的步长或嵌入强度。
第六步:对加入水印后DCT 系数矩阵进行DCT 逆变换,得到嵌入水印后的图像I′。
% watermark W应该为64*64的图像% 对W进行Torus变换% 将水印存入w中%将原图分成8*8的小块,共32*32块分别做dct变换% 求出每块图像里被选定区域的水印嵌入强度% 将水印嵌入到选定的区域上每小块嵌入4bit的水印信息% 得到嵌入水印后的图像3.3提取算法流程第一步将加入水印的图像I′分为互不覆盖的8×8 子块Fm’’(i, j ),m = N1 / 8,n = N2 / 8,i, j = 1,2….8,对每个子块分别进行DCT 变换第二步:同样按照前面的结论选择出子块DCT 系数矩阵中嵌入水印信号的中频系数位置,根据其所对应的嵌入强度利用公式从嵌入位置上得到嵌入的水印分量:其中w′(i)为水印分量第三步:当对所有嵌入水印的子块处理完后,所提取出的水印分量可构成一个二值序列,(如果在水印嵌入之前将水印信号置乱过,此时要用置乱逆运算对该序列处理一下) ,将该二值序列转换成二维矩阵,从而得到水印图像W ‘。