1.一种基于可变步长及二维离散余弦变换(2D-DCT)的彩色数字图像盲水印方法,包含具体的量化步长选取、水印嵌入和水印提取三个过程;其量化步长选取过程描述如下:
第一步:将选取的每一个标准宿主图像(Lena,F16,Peppers,House,Baboon,Bear,Barbara,Couple,Kid,Sailboat)分为m×m的非重叠像素块,并对各像素块进行DCT变换;
第二步:选取像素块的前4个DCT系数,即直流系数以及前3个交流系数,进行回归分析,获得各系数之间的大小关系;根据4个DCT系数之间的关系,得到4个不同的量化步长Tj,其中j=1,2,3,4;
其水印嵌入过程描述如下:
第一步:通过降维处理将一幅大小为M×M的彩色宿主图像H分成红、绿、蓝三个分层宿主图像Hi,并把每一个分层宿主图像Hi分为m×m的非重叠像素块;其中i=1,2,3分别表示红、绿、蓝三层;
第二步:将一幅大小为N×N的彩色水印图像W分成红、绿、蓝三个分层水印图像Wi,并进行基于密钥Kai的Arnold变换以提高水印的安全性;将分层水印图像Wi中的每个十进制像素值转换为8位二进制数,依次连接成长度为8N2的水印位序列SWi,其中i=1,2,3分别表示红、绿、蓝三层;
第三步:利用基于密钥为Kbi的MD5哈希伪随机选择算法从分层宿主图像Hi中选择像素块A,其中i=1,2,3分别表示红、绿、蓝三层;
第四步:根据公式(1),对选取的像素块A进行二维离散余弦变换得到变换矩阵dctA,并按照Z字形选取变换矩阵dctA的前4个DCT系数cj,其中j=1,2,3,4;
(1)
其中,dct2(.)为二维离散余弦变换函数;
第五步:按照先后顺序从水印序列SWi中依次选取4个水印位wj;利用公式(2)、(3),对4个DCT系数cj分别使用对应的量化步长Tj进行量化,以得到各DCT系数的上边界值Chighj和下边界值Clowj;
(2)
(3)
其中,wj为第j个待嵌入水印位,abs(.)是求绝对值函数,mod(.)是取余函数,Tj为量化步长,j=1,2,3,4;
第六步:依据公式(4),计算最佳边界值CCj,并用CCj替换变换矩阵dctA相应位置的原有DCT系数,得到含水印的变换矩阵dctA*;
(4)
其中,sign(.)是取符号函数,abs(.)是求绝对值函数,j=1,2,3,4;
第七步:根据公式(5),对变换矩阵dctA* 进行逆二维离散余弦变换得到含水印的像素块 ,并将含水印像素块 更新到其在分层宿主图像Hi中相对应的位置,其中i=1,2,3,分别表示红、绿、蓝三层;
(5)其中,idct2(.)为二维离散余弦反变换函数;
第八步:重复执行本过程的第三步到第七步,直到所有的水印信息都被嵌入完成为止,由此得到含水印的分层宿主图像 ;最后,组合含水印的分层宿主图像 得到含水印宿主图像 ,其中i=1,2,3分别表示红、绿、蓝三层;
其水印提取过程描述如下:
第一步:将含水印宿主图像 分成红、绿、蓝三个分层图像 ;同时,将每一个含水印分层图像 分成大小为m×m的非重叠像素块,其中i=1,2,3分别表示红、绿、蓝三层;
第二步:利用基于密钥为Kbi的MD5哈希伪随机选择算法,从含水印分层图像 中选择含水印的像素块 ,其中i=1,2,3分别表示红、绿、蓝三层;
第三步:对选取的含水印像素块 进行二维离散余弦变换得到变换矩阵dctA*,并按照Z字形选取变换矩阵dctA*中与嵌入过程相对应位置的4个DCT系数cj*,其中j=1,2,3,4分别表示第j个DCT系数;
第四步:使用对应的量化步长Tj,利用公式(6)从含水印像素块 中提取水印位 ;
(6)
其中,mod(.)是取余函数,abs(.)是求绝对值函数,j=1,2,3,4;
第五步:重复执行本过程的第二步到第四步,提取并获得每一层的二进制水印序列,将水印序列 中每8位二进制信息划为一组并转换成十进制的像素值,形成分层水印图像,其中i=1,2,3分别表示红、绿、蓝三层;
第六步:对每个分层水印图像进行基于密钥Kai的逆Arnold变换,获得各层的提取水印图像 ;同时,组合各层的提取水印图像 形成最终的提取水印图像 ,其中i=1,2,3分别表示红、绿、蓝三层。