1.一种基于二维离散余弦变换的数字图像盲水印方法,其特征在于水印的实现分为水印嵌入和水印提取两个过程,其水印嵌入过程描述如下:第一步:宿主图像及水印图像的预处理:将一幅大小为M×M的灰度宿主图像H分为大小为m×m的非重叠像素块;对一幅大小为N×N的灰度水印图像W进行基于私钥Kai的Arnold变换以提高水印的安全性,并将水印图像W中的每个十进制像素值转换为8位二进制序列,依2
次连接成长度为8N的水印位序列SW;
第二步:选择宿主图像的嵌入块:利用randperm函数生成的伪随机序列从宿主图像H中选择像素块A;
第三步:根据公式(1),对选取的像素块A进行二维离散余弦变换DCT得到变换矩阵dctA,并按照Z字形选取变换矩阵dctA的4对DCT中频系数(ci1,ci2),其中i=1,2,3,4,分别表示第i对DCT中频系数;
dctA=dct2(A) (1)其中,dct2(.)为二维离散余弦变换函数;
第四步:按照先后顺序从水印序列SW中依次选取4个水印位wi;利用公式(2)、(3),修改DCT中频系数对(ci1,ci2)之间的大小关系以嵌入水印位wi,i=1,2,3,4;
自定义函数signc(.)的确定规则如下:其中,sign(.)是取符号函数,avg=(abs(ci1)+abs(ci2))/2,T为量化步长;
* *
第五步:用修改后的DCT中频系数对(ci1 ,ci2)替换原有的DCT中频系数对(ci1,ci2)得到*含水印的变换矩阵dctA,其中i=1,2,3,4,分别表示第i对DCT中频系数;
*
第六步:根据公式(5),对变换矩阵dctA进行逆二维离散余弦变换得到含水印的像素块* *A,并将含水印像素块A更新到宿主图像H中;
* *
A=idct2(dctA) (5)其中,idct2(.)为逆二维离散余弦变换函数;
第七步:重复执行上述第二步到第六步,直到所有的水印信息都被嵌入完成为止,由此*得到含水印的宿主图像H;
其水印提取过程描述如下:
*
第一步:含水印宿主图像的预处理:将含水印宿主图像H分成大小为m×m的非重叠像素块;
第二步:选择含水印宿主图像的提取块:利用randperm函数生成的伪随机序列,从含水* *印宿主图像H中选择含水印的像素块A;
* *
第三步:对选取的含水印像素块A进行二维离散余弦变换得到变换矩阵dctA ,并按照Z* * *字形选取变换矩阵dctA中与嵌入过程相对应位置的4对DCT中频系数(ci1 ,ci2),其中i=
1,2,3,4,分别表示第i对DCT中频系数;
* *
第四步:根据DCT中频系数对(ci1 ,ci2)之间的大小关系,利用公式(6)从含水印像素块*A中提取水印位
其中,abs(.)是求绝对值函数,i=1,2,3,4;
*
第五步:重复执行第二步到第四步,得到提取的含水印图像的二进制水印序列SW ,将水*印序列SW中每8位二进制信息划为一组并转换成十进制的像素值,得到一个十进制数列;
*
第六步:对该十进制数列进行基于私钥Kai的逆Arnold变换,获得最终提取的水印W。