1.一种基于哈达玛变换和投票系统的频域彩色数字图像盲水印方法,其特征在于,通过具体的水印嵌入预处理、水印嵌入、水印嵌入后处理、水印提取预处理、水印提取和水印提取后处理过程来实现,其水印嵌入预处理过程描述如下:第一步:将一幅像素大小为N×N的24位彩色图像数字水印W依照红、绿、蓝三基色的顺序分成3个分层水印图像Wi,其中,i=1,2,3分别表示红、绿、蓝三层;
第二步:将每个分层水印图像Wi进行基于密钥Kai的仿射变换,其中,i=1,2,3分别表示红、绿、蓝三层;
第三步:将加密后的分层水印图像Wi’中的每个十进制数表示的像素用8位二进制数表2
示,并依次连接形成长度为8N的分层水印位序列SWi’,其中,i=1,2,3分别表示红、绿、蓝三层;
其水印嵌入过程描述如下:
第一步:将一幅像素大小为M×M的原始彩色宿主图像C依照红、绿、蓝三基色的顺序分成3个分层宿主图像Ci;同时,把每一个分层宿主图像Ci分成像素大小为m×m的图像块;根据2
分层水印位序列长度8N,利用基于密钥Kbi的MD5哈希伪随机置乱算法生成不重复的选块序2
列,根据选块序列提供的位置在分层宿主图像Ci中选择图像块,其中,8N <=(M×M)/(m×m),i=1,2,3分别表示红、绿、蓝三层;
第二步:选取一个图像块A,并按照公式(1)对其进行哈达玛变换,得到频域系数矩阵HA;
HA=Hm×A (1)
其中,Hm表示m×m的哈达玛矩阵,m是图像块A的边长像素个数,HA表示图像块A经哈达玛变换后得到的频域系数矩阵,其中,m阶哈达玛方阵Hm可由公式(2)迭代生成,且初始矩阵k其中,k为正整数,m=2表示哈达玛矩阵只能作用于2的整数次方的矩阵, 表示克罗内克积;
第三步:从分层水印位序列SWi’中按先后顺序取出一位待嵌入的水印信息w,利用频域矩阵HA第一行系数的大小关系,依据待嵌入水印信息w及公式(3)、(4)以及RGB图像的层间相关性,在各层间选用不同的量化步长Ti,将水印信息嵌入到频域矩阵;
其中,HA1,1、HA1,2、HA1,3分别为频域系数矩阵HA第一行第一、二、三列的系数,sign(.)为取符号函数,abs(.)为取绝对值函数,d为误差参数,Ti表示第i层的量化步长,i=1,2,3分别表示红、绿、蓝三层,T1=0.87×T3,T2=0.94×T3;
*
第四步:依据公式(5)的逆变换,得到含水印的图像块A;
* *
A=(Hm×HA)/m (5)其中,m是频域系数矩阵HA的边长像素个数,Hm表示m×m的哈达玛矩阵,HA表示图像块A经哈达玛变换后得到的频域矩阵;
*
第五步:将含水印图像块A更新到其在分层宿主图像Ci中的相应位置,其中i=1,2,3分别表示红、绿、蓝三层;
第六步:重复执行本过程的第二步到第五步,直到所有的水印信息都被嵌入完成为止,*由此得到含水印的分层宿主图像Ci,其中i=1,2,3分别表示红、绿、蓝三层;
*
第七步:将含水印的红、绿、蓝分层宿主图像Ci重新组合并获得像素大小为M×M的含水*印图像C,其中i=1,2,3分别表示红、绿、蓝三层;
其水印嵌入后处理过程描述如下:
第一步:利用整数配对函数对上述步骤中的重要参数进行配对加密,生成一个大整数密钥;其中,重要参数包括蓝色通道的量化步长T3、图像块尺寸m、仿射变换密钥Kai,其中i=
1,2,3分别表示红、绿、蓝三层;
第二步:利用椭圆曲线加密算法对大整数进行加密;
其水印提取预处理过程描述如下:
第一步:利用椭圆曲线解密算法得到大整数密钥;
第二步:利用逆整数配对函数对解密后的大整数进行进一步解密,得到重要参数T3’、m’、Kai’,其中i=1,2,3分别表示红、绿、蓝三层;
其水印提取过程描述如下:
* *
第一步:将像素大小为M×M的含水印图像C 分成3个分层含水印图像Ci ,并将每个分层*含水印图像Ci进一步分成像素大小为m’×m’的非重叠图像块,其中i=1,2,3分别表示红、绿、蓝三层;
*
第二步:在分层含水印图像Ci 中,利用上述水印嵌入过程中所提到的基于密钥Kbi的MD5哈希伪随机置乱算法选择含水印的图像块,其中i=1,2,3分别表示红、绿、蓝三层;
*
第三步:选取一个含水印的图像块A ,并按照公式(6)对其进行哈达玛变换,得到频域系*数矩阵HA;
* *
HA=Hm×A (6)
* *
其中,HA表示含水印图像块A经哈达玛变换后得到的频域矩阵,Hm表示像素大小为m×m*的哈达玛矩阵,m是含水印图像块A的边长像素个数;
*
第四步:按照公式(7)、(8)、(9),利用频域系数矩阵HA第一行第一、二、三列系数的大小关系提取条件;
* * *
其中,flag1、flag2、flag3表示可能存在的标志状态,HA1,1 、HA1,2、HA1,3分别为频域系数*矩阵HA第一行第一、二、三列的系数;
*
第五步:按照公式(10)所示的少数服从多数的原则,提取频域系数矩阵HA 中所含有的*水印w;
其中,&&是逻辑与操作,||是逻辑或操作;
*
第六步:重复执行本过程的第三步到第五步,提取每层二进制水印位序列SWi,其中i=
1,2,3分别表示红、绿、蓝三层;
*
第七步:将水印位序列SWi中每8位二进制信息为一组转换成十进制的像素值,其中i=
1,2,3分别表示红、绿、蓝三层;
其水印提取后处理过程描述如下:
第一步:对转化后的每层十进制像素执行基于密钥Kai’的逆仿射变换并获得提取的分*层水印图像Wi,其中,i=1,2,3分别表示红、绿、蓝三层;
* *
第二步:组合提取的分层水印图像Wi形成最终的提取水印图像W,其中,i=1,2,3分别表示红、绿、蓝三层。