本发明属于信息安全技术领域,涉及强鲁棒和大容量彩色数字图像的版权保护。
背景技术:
随着计算机网络和通信技术的飞速发展,越来越多的彩色数字图像在网络上涌现、传播,随之而来的盗版、侵权等非法行为屡见不鲜,其版权保护问题变得日益突出,急需解决。为此,一方面要求版权保护的标识趋向于美观实用、大容量的彩色图像数字水印,而不再局限于容量较小的伪随机序列、二值图像或灰度图像;另一方面,在网络传输过程中,彩色数字图像会受到各种各样未知的客观因素影响以及人为因素的改变,需要进一步提高其算法的鲁棒性。
因此,如何充分利用频域数字水印算法鲁棒性强的优点设计一种水印容量大、隐蔽性好和鲁棒性强的彩色图像数字水印算法成为目前亟待解决的问题之一。
技术实现要素:
本发明的目的是提供一种基于矩阵奇异值分解的四元数彩色数字图像盲水印方法,其特征在于通过具体的水印嵌入过程和提取过程来实现的,其水印嵌入过程描述如下:
第一步:彩色图像数字水印的预处理:首先,将一幅大小为n×n的彩色图像数字水印w依照红、绿、蓝三基色的顺序分成3个分层水印图像wi;然后,将每个分层水印图像进行基于密钥kai的arnold置乱变换以提高水印的安全性;最后,将置乱后的分层水印图像中的每个十进制数表示的像素用8位二进制数表示,并依次连接形成长度为8n2的分层水印位序列swi,其中i=1,2,3,分别表示红、绿、蓝三层;
第二步:获取宿主图像的嵌入块:将一幅大小为m×m的原始彩色宿主图像h分成大小为m×m的图像块,每一个图像块纵向包含红、绿、蓝三层;根据分层水印信息长度8n2,利用matlab系统内置函数randperm生成的伪随机序列在宿主图像h中选择合适位置的图像块,以提高水印抗剪切攻击的鲁棒性,其中3×8n2<=(m×m)/(m×m);
第三步:选取一个图像块a,进行是否调整极端像素值的判断,如果图像块a蓝色通道的(1,1)位置上的像素值为0,那么将其像素值改为1;然后,将彩色宿主图像h依照红、绿、蓝三基色的顺序分成3个分层宿主图像hi,图像块a的每个像素值都通过hi用四元数表示出来,得到四元数像素块qa,其中i=1,2,3,分别表示红、绿、蓝三层;
第四步:根据公式(1),对四元数像素块qa进行奇异值分解(singularvaluedecomposition,svd),得到左奇异矩阵u、右奇异矩阵v和对角矩阵s,其中s仅在主对角线上有奇异值;
[u,s,v]=svd(qa)(1)
第五步:从分层水印序列swi中按先后顺序取出一个嵌入水印信息w,依据该嵌入水印信息及公式(2)求得量化值sq;
其中,mval=mod(sm,t),sm是对角矩阵s中的最大值,t为量化步长,mod(.)为求余函数,t1=0.25×t,t2=0.75×t,judge1(mval)是当mval<=t/2 t/8或mval>=t-t/8时返回true,否则返回false;judge0(mval)是当mval<=t/8或mval>=t/2-t/8时返回true,否则返回false;
第六步:用量化值sq替换sm,得到s*;再利用公式(3)进行逆奇异值分解,得到含水印的四元数像素块qa*;
qa*=u×s*×vt(3)
第七步:将含水印的四元数像素块qa*转换为含水印的像素块a*,然后进行溢出判断:如果sq≠sm,就按照公式(4)进行溢出判断得到sq*,并用其替换sm*;之后再利用公式(3)进行逆奇异值分解,得到最终的含水印的四元数像素块qa*,再进一步转换为最终的含水印的像素块a*;
其中,sm*是对角矩阵s*中的最大值,t为量化步长,
第八步:重复执行上述第三步到第七步,直到所有的水印信息都被嵌入完成为止;最后,获得含水印图像h*;
其水印提取过程描述如下:
第一步:将含水印图像h*分成m×m的非重叠图像块,每一个图像块纵向包含红、绿、蓝三层;
第二步:利用上述水印嵌入过程中所提到的matlab系统内置函数randperm生成的伪随机序列选择图像块;
第三步:选取一个图像块a*,将含水印图像h*依照红、绿、蓝三基色的顺序分成3个分层含水印图像hi*,图像块a*的每个像素值都通过hi*用四元数表示出来,得到含水印的四元数像素块为qa*,其中i=1,2,3,分别表示红、绿、蓝三层;
第四步:根据公式(5),对含水印的四元数像素块qa*进行奇异值分解,得到对角矩阵s*;
s*=svd(qa*)(5)
第五步:利用公式(6),提取含水印的四元数像素块qa*中所含有的水印w*;
其中,sm是对角矩阵s*中的最大值,mod(.)是求余函数,t为量化步长;
第六步:重复执行第三步到第五步,提取每层二进制水印序列swi*,然后每8位二进制信息为一组转换成十进制的像素值,其中i=1,2,3,分别表示红、绿、蓝三层;
第七步:对转化后的每层十进制像素执行基于密钥kai的逆arnold变换并获得分层水印wi*,其中i=1,2,3,分别表示红、绿、蓝三层;
第八步:组合获得的分层水印wi*形成最终的提取水印w*,其中i=1,2,3,分别表示红、绿、蓝三层。
该方法利用矩阵奇异值分解后对角矩阵s中的系数分布规律,通过对其量化完成了数字水印嵌入与盲提取;该方法既具有较强的鲁棒性,又具有较好的水印不可见性和较大的嵌入容量。
附图说明
图1(a)、图1(b)是两幅原始彩色宿主图像。
图2(a)、图2(b)是两幅原始彩色水印图像。
图3(a)、图3(b)是将图2(a)所示的水印依次嵌入到宿主图像图1(a)、图1(b)后所得到的含水印图像,其结构相似度ssim值依次是0.9488、0.9365,其峰值信噪比psnr值依次是39.2818db、38.8812db。
图4(a)、图4(b)是依次从图3(a)、图3(b)中提取的水印,其归一化互相关系数nc值分别是1.0000、1.0000。
图5(a)、图5(b)、图5(c)、图5(d)、图5(e)、图5(f)、图5(g)是将图3(a)所示的含水印图像依次进行jpeg70、jpeg2000压缩(5:1)、高斯噪声(0,0.001)、椒盐噪声(2%)、旋转(45°)、缩放(400%)、高斯低通滤波(3×3)等攻击后所提取的水印,其归一化互相关系数nc值分别是0.9849、0.9992、0.9040、0.9899、0.9541、0.9994、0.9666。
图6(a)、图6(b)是将图2(b)所示的水印依次嵌入到宿主图像图1(a)、图1(b)后所得到的含水印图像,其结构相似度ssim值依次是0.9447、0.9309,其峰值信噪比psnr值依次是38.8930db、38.5167db。
图7(a)、图7(b)是依次从图6(a)、图6(b)中提取的水印,其归一化互相关系数nc值分别是1.0000、1.0000。
图8(a)、图8(b)、图8(c)、图8(d)、图8(e)、图8(f)、图8(g)是将图6(a)所示的含水印图像依次进行jpeg70、jpeg2000压缩(5:1)、高斯噪声(0,0.001)、椒盐噪声(2%)、旋转(45°)、缩放(400%)、高斯低通滤波(3×3)等攻击后所提取的水印,其归一化互相关系数nc值分别是0.9896、0.9997、0.9364、0.9936、0.9674、0.9993、0.9746。
具体实施方式
本发明的目的是提供一种基于矩阵奇异值分解的四元数彩色数字图像盲水印方法,其特征在于通过具体的水印嵌入过程和提取过程来实现的,其水印嵌入过程描述如下:
第一步:彩色图像数字水印的预处理:首先,将一幅大小为32×32的彩色图像数字水印w依照红、绿、蓝三基色的顺序分成3个分层水印图像wi;然后,将每个分层水印图像进行基于密钥kai的arnold置乱变换以提高水印的安全性;最后,将置乱后的分层水印图像中的每个十进制数表示的像素用8位二进制数表示(例如:可将205转换成二进制数11001101),并依次连接形成长度为8×322=8192的分层水印位序列swi,其中i=1,2,3,分别表示红、绿、蓝三层;
第二步:获取宿主图像的嵌入块:将一幅大小为512×512的原始彩色宿主图像h分成大小为2×2的图像块,每一个图像块纵向包含红、绿、蓝三层;根据分层水印信息长度,利用基于matlab系统内置函数randperm生成的伪随机序列在宿主图像h中选择合适位置的图像块,以提高水印抗剪切攻击的鲁棒性,其中3×8192<=(512×512)/(2×2);
第三步:选取一个图像块a,进行是否调整极端像素值的判断,如果图像块a蓝色通道的(1,1)位置上的像素值为0,那么将其像素值改为1;然后,将彩色宿主图像h依照红、绿、蓝三基色的顺序分成3个分层宿主图像hi,图像块a的每个像素值都通过hi用四元数表示出来,得到四元数像素块qa,其中i=1,2,3,分别表示红、绿、蓝三层;此处,设选取的图像块a的红色通道的像素值为
第四步:根据公式(1),对四元数像素块qa进行奇异值分解(singularvaluedecomposition,svd),得到左奇异矩阵u、右奇异矩阵v和对角矩阵s,其中s仅在主对角线上有奇异值;
[u,s,v]=svd(qa)(1)
此处,根据公式(1),得到的左奇异矩阵u(1,1)为w=-2.5290e-05,x=0.6055,y=0.2555,z=0.2741;u(1,2)为w=-0.0022,x=0.4034,y=0.4028,z=0.4099;u(2,1)为w=2.5290e-05,x=0.5992,y=0.2493,z=0.2678;u(2,2)为w=0.0022,x=-0.4126,y=-0.4067,z=-0.4141;右奇异矩阵v(1,1)为w=0.6964,x=0,y=0,z=0;v(1,2)为w=-0.7177,x=0,y=0,z=0;v(2,1)为w=0.7176,x=-0.0036,y=0.0044,z=0.0039;v(2,2)为w=0.6964,x=-0.0035,y=0.0043,z=0.0037;对角矩阵s=
第五步:从分层水印序列swi中按先后顺序取出一个嵌入水印信息w,依据该嵌入水印信息及公式(2)求得量化值sq;
其中,mval=mod(sm,t),sm是对角矩阵s中的最大值,t为量化步长,mod(.)为求余函数,t1=0.25×t,t2=0.75×t,judge1(mval)是当mval<=t/2 t/8或mval>=t-t/8时返回true,否则返回false;judge0(mval)是当mval<=t/8或mval>=t/2-t/8时返回true,否则返回false;此时,sm=463.6330,设w=‘1’,t=54,则根据公式(2),得sq=472.5000;
第六步:用量化值sq替换sm,得到s*;再利用公式(3)进行逆奇异值分解,得到含水印的四元数像素块qa*;
qa*=u×s*×vt(3)
此处得到s*=
第七步:将含水印的四元数像素块qa*转换为含水印的像素块a*,然后进行溢出判断:如果sq≠sm,就按照公式(4)进行溢出判断得到sq*,并用其替换sm*;之后再利用公式(3)进行逆奇异值分解,得到最终的含水印的四元数像素块qa*,再进一步转换为最终的含水印的像素块a*;
其中,sm*是对角矩阵s*中的最大值,t为量化步长,
第八步:重复执行上述第三步到第七步,直到所有的水印信息都被嵌入完成为止;最后,获得含水印图像h*;
其水印提取过程描述如下:
第一步:将含水印图像h*分成2×2的非重叠图像块,每一个图像块纵向包含红、绿、蓝三层;
第二步:利用上述水印嵌入过程中所提到的matlab系统内置函数randperm生成的伪随机序列选择图像块;
第三步:选取一个图像块a*,将含水印图像h*依照红、绿、蓝三基色的顺序分成3个分层含水印图像hi*,图像块a*的每个像素值都通过hi*用四元数表示出来,得到含水印的四元数像素块为qa*,其中i=1,2,3,分别表示红、绿、蓝三层;此处,设选取的图像块a*的红色通道的像素值为
第四步:根据公式(5),对含水印的四元数像素块qa*进行奇异值分解,得到对角矩阵s*;
s*=svd(qa*)(5)
第五步:利用公式(6),提取含水印的四元数像素块qa*中所含有的水印w*;
其中,sm是对角矩阵s*中的最大值,mod(.)是求余函数,t为量化步长;此时,sm=473.4084,t=54,利用公式(6)提取所含有的水印w*=‘1’;
第六步:重复执行第三步到第五步,提取每层二进制水印序列swi*,然后每8位二进制信息为一组转换成十进制的像素值,其中i=1,2,3,分别表示红、绿、蓝三层;
第七步:对转化后的每层十进制像素执行基于密钥kai的逆arnold变换并获得分层水印wi*,其中i=1,2,3,分别表示红、绿、蓝三层;
第八步:组合获得的分层水印wi*形成最终的提取水印w*,其中i=1,2,3,分别表示红、绿、蓝三层。
该方法具有频域数字水印算法的优点,鲁棒性强,水印不可见性好;算法简单,适用于彩色图像作为数字水印的高效版权保护。
本发明有效性验证
为了证明本发明的有效性,选择如图1(a)、图1(b)所示的两幅大小为512×512的24位标准图像作为宿主图像,并分别用如图2(a)、图2(b)所示的两幅大小为32×32的24位彩色图像作为数字水印进行验证。
图3(a)、图3(b)是将图2(a)所示的水印依次嵌入到宿主图像图1(a)、图1(b)后所得到的含水印图像,其结构相似度ssim值依次是0.9488、0.9365
,其峰值信噪比psnr值依次是39.2818db、38.8812db;图4(a)、图4(b)是依次从图3(a)、图3(b)中提取的水印,其归一化互相关系数nc值分别是1.0000、1.0000;图5(a)、图5(b)、图5(c)、图5(d)、图5(e)、图5(f)、图5(g)是将图3(a)所示的含水印图像依次进行jpeg70、jpeg2000压缩(5:1)、高斯噪声(0,0.001)、椒盐噪声(2%)、旋转(45°)、缩放(400%)、高斯低通滤波(3×3)等攻击后所提取的水印,其归一化互相关系数nc值分别是0.9849、0.9992、0.9040、0.9899、0.9541、0.9994、0.9666。
图6(a)、图6(b)是将图2(b)所示的水印依次嵌入到宿主图像图1(a)、图1(b)后所得到的含水印图像,其结构相似度ssim值依次是0.9447、0.9309,其峰值信噪比psnr值依次是38.8930db、38.5167db;图7(a)、图7(b)是依次从图6(a)、图6(b)中提取的水印,其归一化互相关系数nc值分别是1.0000、1.0000;图8(a)、图8(b)、图8(c)、图8(d)、图8(e)、图8(f)、图8(g)是将图6(a)所示的含水印图像依次进行jpeg70、jpeg2000压缩(5:1)、高斯噪声(0,0.001)、椒盐噪声(2%)、旋转(45°)、缩放(400%)、高斯低通滤波(3×3)等攻击后所提取的水印,其归一化互相关系数nc值分别是0.9896、0.9997、0.9364、0.9936、0.9674、0.9993、0.9746。
综上所述,所嵌入的彩色图像数字水印具有较好的不可见性,满足了水印算法的不可见性要求;同时,从各种受攻击图像中所提取的彩色图像数字水印具有较好的可鉴别性和较高的nc值,说明该方法具有较强的鲁棒性;另外,实际嵌入彩色数字图像中的二进制信息为3×213位,具有较大的水印容量,满足了大容量的彩色图像数字水印版权保护的需要。
1.一种基于矩阵奇异值分解的四元数彩色数字图像盲水印方法,其特征在于通过具体的水印嵌入过程和提取过程来实现的,其水印嵌入过程描述如下:
第一步:彩色图像数字水印的预处理:首先,将一幅大小为n×n的彩色图像数字水印w依照红、绿、蓝三基色的顺序分成3个分层水印图像wi;然后,将每个分层水印图像进行基于密钥kai的arnold置乱变换以提高水印的安全性;最后,将置乱后的分层水印图像中的每个十进制数表示的像素用8位二进制数表示,并依次连接形成长度为8n2的分层水印位序列swi,其中i=1,2,3,分别表示红、绿、蓝三层;
第二步:获取宿主图像的嵌入块:将一幅大小为m×m的原始彩色宿主图像h分成大小为m×m的图像块,每一个图像块纵向包含红、绿、蓝三层;根据分层水印信息长度8n2,利用matlab系统内置函数randperm生成的伪随机序列在宿主图像h中选择合适位置的图像块,以提高水印抗剪切攻击的鲁棒性,其中3×8n2<=(m×m)/(m×m);
第三步:选取一个图像块a,进行是否调整极端像素值的判断,如果图像块a蓝色通道的(1,1)位置上的像素值为0,那么将其像素值改为1;然后,将彩色宿主图像h依照红、绿、蓝三基色的顺序分成3个分层宿主图像hi,图像块a的每个像素值都通过hi用四元数表示出来,得到四元数像素块qa,其中i=1,2,3,分别表示红、绿、蓝三层;
第四步:根据公式(1),对四元数像素块qa进行奇异值分解(singularvaluedecomposition,svd),得到左奇异矩阵u、右奇异矩阵v和对角矩阵s,其中s仅在主对角线上有奇异值;
[u,s,v]=svd(qa)(1)
第五步:从分层水印序列swi中按先后顺序取出一个嵌入水印信息w,依据该嵌入水印信息及公式(2)求得量化值sq;
其中,mval=mod(sm,t),sm是对角矩阵s中的最大值,t为量化步长,mod(.)为求余函数,t1=0.25×t,t2=0.75×t,judge1(mval)是当mval<=t/2 t/8或mval>=t-t/8时返回true,否则返回false;judge0(mval)是当mval<=t/8或mval>=t/2-t/8时返回true,否则返回false;
第六步:用量化值sq替换sm,得到s*;再利用公式(3)进行逆奇异值分解,得到含水印的四元数像素块qa*;
qa*=u×s*×vt(3)
第七步:将含水印的四元数像素块qa*转换为含水印的像素块a*,然后进行溢出判断:如果sq≠sm,就按照公式(4)进行溢出判断得到sq*,并用其替换sm*;之后再利用公式(3)进行逆奇异值分解,得到最终的含水印的四元数像素块qa*,再进一步转换为最终的含水印的像素块a*;
其中,sm*是对角矩阵s*中的最大值,t为量化步长,
第八步:重复执行上述第三步到第七步,直到所有的水印信息都被嵌入完成为止;最后,获得含水印图像h*;
其水印提取过程描述如下:
第一步:将含水印图像h*分成m×m的非重叠图像块,每一个图像块纵向包含红、绿、蓝三层;
第二步:利用上述水印嵌入过程中所提到的matlab系统内置函数randperm生成的伪随机序列选择图像块;
第三步:选取一个图像块a*,将含水印图像h*依照红、绿、蓝三基色的顺序分成3个分层含水印图像hi*,图像块a*的每个像素值都通过hi*用四元数表示出来,得到含水印的四元数像素块为qa*,其中i=1,2,3,分别表示红、绿、蓝三层;
第四步:根据公式(5),对含水印的四元数像素块qa*进行奇异值分解,得到对角矩阵s*;
s*=svd(qa*)(5)
第五步:利用公式(6),提取含水印的四元数像素块qa*中所含有的水印w*;
其中,sm是对角矩阵s*中的最大值,mod(.)是求余函数,t为量化步长;
第六步:重复执行第三步到第五步,提取每层二进制水印序列swi*,然后每8位二进制信息为一组转换成十进制的像素值,其中i=1,2,3,分别表示红、绿、蓝三层;
第七步:对转化后的每层十进制像素执行基于密钥kai的逆arnold变换并获得分层水印wi*,其中i=1,2,3,分别表示红、绿、蓝三层;
第八步:组合获得的分层水印wi*形成最终的提取水印w*,其中i=1,2,3,分别表示红、绿、蓝三层。
技术总结