1.一种融合多级离散傅里叶变换的空域彩色数字图像盲水印方法,其特征在于包括水印嵌入和水印提取两个具体过程,其水印嵌入过程描述如下:第一步:对一幅大小为M×M的三维彩色宿主图像H作降维处理,得到红、绿、蓝三个分层宿主图像Hi,并将各分层宿主图像Hi分为m×m的非重叠像素块,其中i=1, 2, 3分别表示红、绿、蓝三层;
第二步:对一幅大小为N×N的三维彩色水印图像W作降维处理,得到红、绿、蓝三个分层水印图像,同时,为了提高水印的安全性,对每个分层水印图像进行基于密钥Kai的仿射变换得到置乱后的三个分层水印图像Wi;将分层水印图像Wi中的每个十进制像素值转换为8位2
二进制数,依次连接成长度为8N的水印位序列SWi,其中i=1, 2, 3分别表示红、绿、蓝三层;
第三步:按照先后顺序依次从分层宿主图像Hi中选取像素块A,并依据公式(1),在空域中直接计算出像素块A经过离散傅里叶变换(Discrete Fourier Transform, DFT)后的最大能量系数CFmax,此处i=1, 2, 3分别表示红、绿、蓝三层;
(1)
其中,m为像素块A的尺寸大小,f(x, y)为像素块A第x行第y列的像素值;
第四步:重复执行本过程的第三步,直到获得分层宿主图像Hi中所有像素块的最大能量系数为止,然后组合所有的最大能量系数得到p×p大小的最大能量系数矩阵CF‑mapi,并将其划分为m×m的非重叠最大能量系数块,其中p=M/m,i=1, 2, 3分别表示红、绿、蓝三层;
第五步:利用MATLAB内置函数randperm(.)生成的伪随机序列从最大能量系数矩阵CF‑mapi中随机选择最大能量系数块B,并依据公式(2),在空域中直接计算出最大能量系数块B经过DFT后的最大能量系数CFFmax,此处i=1, 2, 3分别表示红、绿、蓝三层;
(2)
其中,m为最大能量系数块B的尺寸大小,ff(x, y)为最大能量系数块B第x行第y列的像素值;
第六步:按照先后顺序依次从分层水印序列SWi中选取待嵌入水印位w;依据公式(3)、(4)对最大能量系数CFFmax进行量化以嵌入水印信息w,得到两个边界值CFFlow与CFFhigh;
(3)
(4)
其中,w为待嵌入水印位,mod(.)是取余函数, 为量化系数,Ti为第i层的量化步长,i=
1, 2, 3分别表示红、绿、蓝三层;
第七步:依据公式(5),计算最佳边界值 ;
(5)
其中,abs(.)是绝对值函数, , ;
*
第八步:依据公式(6),计算嵌入水印后的像素值ff (x, y),并用其替换原矩阵块中相*
应位置的像素值ff(x, y),得到含水印的最大能量系数块B 并将其更新到最大能量系数矩阵CF‑mapi中的相应位置;
(6)
第九步:重复执行本过程的第五步到第八步,直到所有的水印信息都被嵌入完成为止,*
由此得到含水印的最大能量系数矩阵CF‑mapi ,其中i=1, 2, 3分别表示红、绿、蓝三层;
第十步:按先后顺序依次从分层宿主图像Hi中选择像素块A,并选取含水印的最大能量* *
系数矩阵CF‑mapi 中对应的最大能量系数 ,依据公式(7),用修改后的像素值f (x, *
y)替换原像素块A中对应位置的像素值f(x, y),得到含水印像素块A ,并将其更新到分层宿主图像Hi中的对应位置;
(7)
第十一步:重复执行本过程的第十步,直到所有含水印像素块更新完毕为止,得到含水* * *
印的分层宿主图像Hi ,组合三层含水印的分层宿主图像Hi 得到含水印的彩色宿主图像H ,其中i=1, 2, 3分别表示红、绿、蓝三层;
其水印提取过程描述如下:
*
第一步:通过降维处理将含水印宿主图像H 分成红、绿、蓝三个含水印的分层宿主图像* *
Hi ;同时,将每个含水印的分层宿主图像Hi 分成大小为m×m的非重叠像素块,其中i=1, 2,
3分别表示红、绿、蓝三层;
* *
第二步:按照先后顺序依次从含水印分层宿主图像Hi 中选取含水印像素块A ,并依据*
公式(8),在空域中直接计算出像素块A 经过DFT后的最大能量系数 ,其中i=1, 2, 3分别表示红、绿、蓝三层;
(8)
* * *
其中,m为像素块A的尺寸大小,f (x, y)为像素块A 第x行第y列的像素值;
*
第三步:重复执行本过程的第二步,直到获得分层宿主图像Hi 中所有含水印像素块的最大能量系数为止,然后组合所有的最大能量系数得到p×p大小的最大能量系数矩阵CF‑*
mapi ,并将其划分为m×m的非重叠最大能量系数块,其中p=M/m,i=1, 2, 3分别表示红、绿、蓝三层;
第四步:利用MATLAB内置函数randperm(.)生成的伪随机序列从最大能量系数矩阵CF‑* *
mapi 中随机选择最大能量系数块B ,并依据公式(9)在空域中直接计算出最大能量系数块*
B 经过DFT后的最大能量系数 ,此处i=1, 2, 3分别表示红、绿、蓝三层;
(9)
* * *
其中,m为最大能量系数块B 的尺寸大小,ff (x, y)为最大能量系数块B 第x行第y列的像素值;
*
第五步:依据公式(10),在各层间选用不同的量化步长,提取最大能量系数块B 中所含*
有的水印位w ;
(10)
其中,mod(.)为取余函数,round(.)为四舍五入函数,Ti为第i层的量化步长,i=1, 2, 3分别表示红、绿、蓝三层;
*
第六步:重复执行本过程的第四步到第五步,得到提取的二进制水印序列SWi ,然后,依*
次将二进制水印序列SWi 中每8位二进制信息划分为一组并转换成十进制的像素值,最终形成提取的分层水印图像,其中i=1, 2, 3分别表示红、绿、蓝三层;
第七步:对提取的分层水印图像进行基于密钥Kai的逆仿射变换,获得提取的分层水印*
图像Wi ,其中i=1, 2, 3分别表示红、绿、蓝三层;
* *
第八步:组合提取的分层水印图像Wi 形成最终的提取水印图像W ,其中i=1, 2, 3分别表示红、绿、蓝三层。