1.一种基于Schur分解的四进制彩色数字图像盲水印方法,包含彩色图像数字水印的嵌入过程和提取过程,其水印嵌入的具体过程描述如下:Step 1:彩色宿主图像的预处理:将大小为M×M的24位彩色宿主图像H作降维处理,得到红、绿、蓝三层颜色通道Hp,并将各颜色通道中的像素划分为m×m的非重叠像素块,p=1,
2,3分别表示红、绿、蓝三层颜色通道;
Step 2:彩色水印图像的预处理:对大小为N×N的24位彩色水印图像W作降维处理,得到红、绿、蓝三层颜色通道,随之对每层颜色通道进行基于私钥Kp的仿射变换得到置乱后的颜色通道Wp,p=1,2,3分别表示红、绿、蓝三层颜色通道;然后,将各层颜色通道Wp中的每个十进制像素值转换为一个4位的四进制序列,并依次拼接为各层颜色通道的水印字符串strp, p=1,2,3分别表示红、绿、蓝三层颜色通道;
Step 3:选择像素块:利用选块矩阵location从颜色通道Hp中选择像素块scblock,其中选块矩阵location由MATLAB内置函数randperm伪随机生成,p=1,2,3分别表示红、绿、蓝三层颜色通道;
Step 4:求得像素块的最大特征值:根据公式(1),对像素块scblock进行Schur分解,得到酉矩阵S和上三角矩阵C,上三角矩阵C中最大的主对角元素 即为像素块scblock的最大特征值;
(1)
Step 5:计算最大特征值的上下边界值:按照先后顺序从水印字符串中选取水印位w,利用公式(2)、(3),求得最大特征值的上边界Bupper和下边界Blower;
(2)
(3)
其中, 是像素块scblock的最大特征值,mod(.)是求余函数,T是量化步长;
Step 6:计算最优边界值:利用公式(4)求得最优边界值 ,并用其替换原最大特征值*,得到新的上三角矩阵C ;
(4)
其中,Bupper和Blower分别为最大特征值的上边界和下边界,abs(.)是取绝对值函数;
Step 7:求得含水印像素块:利用公式(5)进行逆Schur分解,得到含水印像素块*scblock ;
(5)Step 8:获得含水印宿主图像:重复执行本过程的Step 3‑Step 7,直到所有的水印位* *都被嵌入为止;最后重组三层含水印颜色通道Hp 得到含水印彩色宿主图像H ;
其水印提取的具体过程描述如下:
*
Step1:彩色含水印宿主图像的预处理:将含水印彩色宿主图像H 作降维处理,得到红、*绿、蓝三层含水印的颜色通道Hp ,并将各颜色通道中的像素划分为m×m的非重叠像素块,p=
1,2,3分别表示红、绿、蓝三层颜色通道;
*
Step2:选取含水印像素块:利用选块矩阵location从颜色通道Hp 中选择含水印像素块*scblock ,其中选块矩阵location由MATLAB内置函数randperm伪随机生成,p=1,2,3分别表示红、绿、蓝三层颜色通道;
*
Step3:求得含水印块的最大特征值:根据公式(6),对含水印像素块scblock 进行Schur* * *分解,得到酉矩阵S 和上三角矩阵C ,上三角矩阵C 中最大的主对角元素 即为像素块*scblock的最大特征值;
(6)
* *
Step 4:提取水印位:利用公式(7)提取含水印像素块scblock 中含有的水印位w ;
(7)
*
其中,mod(.)是求余函数,T是量化步长, 是像素块scblock 的最大特征值;
Step 5:提取所有的水印位:重复执行本过程的Step 2‑Step 4,直到提取所有的水印*位,得到含水印字符串strp ,p=1,2,3分别表示红、绿、蓝三层颜色通道;
*
Step6:获得分层颜色通道:依次取strp 的4位组成四进制序列并转换成十进制的像素值,重复该操作,直到所有的序列都被转换为十进制的像素值;然后重新排列这些像素值,*得到三个N×N的颜色通道Wp ,p=1,2,3分别表示红、绿、蓝三层颜色通道;
Step7:解密得到提取的水印图像:将每层颜色通道进行基于私钥Kp的逆仿射变换,并重*组得到最终提取的彩色水印图像W 。