发明内容
本发明所要解决的技术问题是提供一种基于联合恰可觉察失真的立体图像脆弱水印方法,其在保证立体图像质量保持不变或变化不大的前提下,能够有效地保护图像内容真实性及完整性,能够有效地提高图像的透明性,并且能够很好地实现对篡改位置的定位精度及提高对篡改内容的能力。
本发明解决上述技术问题所采用的技术方案为:一种基于联合恰可觉察失真的立体图像脆弱水印方法,其特征在于包括以下步骤:
①在水印嵌入端,将待嵌入水印的立体图像记为{Sorg(m,n)},将{Sorg(m,n)}的左图像记为{Lorg(m,n)},将{Sorg(m,n)}的右图像记为{Rorg(m,n)},其中,{Sorg(m,n)}、{Lorg(m,n)}和{Rorg(m,n)}的分辨率为M×N,1≤m≤M,1≤n≤N,Sorg(m,n)表示{Sorg(m,n)}中坐标位置为(m,n)的像素点的像素值,Lorg(m,n)表示{Lorg(m,n)}中坐标位置为(m,n)的像素点的像素值,Rorg(m,n)表示{Rorg(m,n)}中坐标位置为(m,n)的像素点的像素值;
②将{L
org(m,n)}和{R
org(m,n)}分别划分成
个互不重叠的尺寸大小为8×8的图像块,将{L
org(m,n)}中坐标位置为(x,y)的图像块记为
将{R
org(m,n)}中坐标位置为(x,y)的图像块记为
其中,
③将块匹配视差图像记为{D
org(x,y)},D
org(x,y)表示{D
org(x,y)}中坐标位置为(x,y)的像素点的像素值,若能很好匹配,则D
org(x,y)的像素值范围是1-31,若不能很好匹配,则D
org(x,y)为0,令{L
org(m,n)}为参考图像,对{R
org(m,n)}中坐标位置为(x,y)的图像块
在{L
org(m,n)}中的水平图像块中搜索最佳匹配块,最佳匹配块的坐标位置为(x,y+d),则块匹配视差图像中的D
org(x,y)值为d,将{R
org(m,n)}中的
记为可匹配块,将{L
org(m,n)}中的
记为{R
org(m,n)}中的
的匹配块;
④对{L
org(m,n)}和{R
org(m,n)}中的每个图像块分别进行离散余弦变换,并利用JPEG量化表对变换后的系数进行量化,生成{L
org(m,n)}中的每个图像块的特征信息和{R
org(m,n)}中的每个图像块的特征信息,将{L
org(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
将{R
org(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
然后根据{L
org(m,n)}和{R
org(m,n)}中的每个图像块的特征信息和块匹配视差图像{D
org(x,y)}产生{L
org(m,n)}和{R
org(m,n)}的水印,记为
和
其中,
和
的分辨率为M×N,
和
表示
和
中坐标位置为(m,n)的像素点的像素值;
⑤根据D
org(x,y)获取{L
org(m,n)}和{R
org(m,n)}中的每个图像块的联合恰可觉察失真值,生成{L
org(m,n)}和{R
org(m,n)}的联合恰可觉察失真图像,记为
和
和
表示
和
中坐标位置为(x,y)的像素点的联合恰可觉察失真值;
⑥根据
和
中的每个图像块的联合恰可觉察失真值和{R
org(m,n)}中可匹配块的个数,将{S
org(m,n)}中的所有图像块分为两类,并分别确定两类图像块待嵌入水印比特位的位置,然后将水印
和
嵌入{S
org(m,n)}中;
1)在水印提取端,将待提取水印的立体图像记为{Swat(m,n)},将{Swat(m,n)}的左图像记为{Lwat(m,n)},将{Swat(m,n)}的右图像记为{Rwat(m,n)},其中,{Swat(m,n)}、{Lwat(m,n)}和{Rwat(m,n)}的分辨率为M×N,1≤m≤M,1≤n≤N,Swat(m,n)表示{Swat(m,n)}中坐标位置为(m,n)的像素点的像素值,Lwat(m,n)表示{Lwat(m,n)}中坐标位置为(m,n)的像素点的像素值,Rwat(m,n)表示{Rwat(m,n)}中坐标位置为(m,n)的像素点的像素值;
2)将{L
wat(m,n)}和{R
wat(m,n)}分别划分成
个互不重叠的尺寸大小为8×8的图像块,将{L
wat(m,n)}中坐标位置为(x,y)的图像块记为
将{R
wat(m,n)}中坐标位置为(x,y)的图像块记为
其中,
3)对{L
wat(m,n)}和{R
wat(m,n)}中的每个图像块分别进行离散余弦变换,并利用JPEG量化表对变换后的系数进行量化,生成{L
wat(m,n)}中的每个图像块的特征信息和{R
wat(m,n)}中的每个图像块的特征信息,将{L
wat(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
将{R
wat(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
则{L
wat(m,n)}和{R
wat(m,n)}生成的特征信息记为
和
4)根据{L
wat(m,n)}和{R
wat(m,n)}中的每个图像块提取{L
wat(m,n)}和{R
wat(m,n)}中的水印,记为
和
提取{L
wat(m,n)}和{R
wat(m,n)}中的每个图像块的特征信息,记为
和
5)计算
与
和
的差图像,记为
和
计算
与
和
的差图像,记为
和
然后根据
和
生成{L
wat(m,n)}的定位图像和{R
wat(m,n)}的定位图像,分别记为{E
Lwat(x,y)}和{E
Rwat(x,y)},其中{E
Lwat(x,y)}和{E
Rwat(x,y)}的分辨率为
E
Lwat(x,y)表示{E
Lwat(x,y)}中坐标位置为(x,y)的像素点的像素值,E
Rwat(x,y)表示{E
Rwat(x,y)}中坐标位置为(x,y)的像素点的像素值;
6)判断{Lwat(m,n)}的定位图像{ELwat(i,j)}中每个像素点的像素值,确定{Lwat(m,n)}中遭到篡改的图像块,然后根据遭到篡改的图像块找出此篡改块的水印,用水印恢复篡改块中每个像素点的值;
判断{Rwat(m,n)}的定位图像{ERwat(i,j)}中的每个像素点的像素值,确定{Rwat(m,n)}中遭到篡改的图像块,若此图像块是不可匹配块,则根据遭到篡改的图像块找出此篡改块的水印,用水印恢复篡改块中每个像素点的值,若此图像块是可匹配块,则根据遭到篡改的图像块找出此篡改块的水印或这个可匹配块相对应的匹配块的像素值,恢复篡改块中每个像素点的值。
所述的步骤④的具体过程为:
④-1、对{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块每个像素点的高六位比特位的值进行离散余弦变换;得到{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的64个离散余弦变换系数,然后利用JPEG量化表对{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的64个离散余弦变换系数进行量化;
④-2、对{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的64个量化后的离散余弦变换系数进行Zigzag扫描形成一行,然后选取{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中,每个量化后的离散余弦变换系数为十进制形式;
④-3、以二进制表示{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中将第一个到第十三个变换系数表示成二进制形式所用的比特个数分别是7、6、6、5、6、5、4、4、4、3、3、3、3,得到{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块对应的59个特征比特位;
④-4、令
和
表示{L
org(m,n)}和{R
org(m,n)}的特征信息,
和
中包含59个特征比特位;对块匹配视差图像{D
org(x,y)}中的十进制视差值用5个比特表示成二进制,将{L
org(m,n)}和{R
org(m,n)}中的每个匹配块和可匹配块的
和
中的每个像素值赋值给
和
的逐行扫描的前59个像素,将D
org(x,y)中的每个视差值的5个比特值赋值给
和
的逐行扫描的后5个像素,将{L
org(m,n)}和{R
org(m,n)}中的不可匹配块的
和
中的每个像素值赋值给
和
的逐行扫描的前59个像素,将
和
的逐行扫描的后5个像素赋值为0,每个
和
尺寸大小为8×8,最后产生{L
org(m,n)}和{R
org(m,n)}的水印,记为
和
所述的步骤⑤的具体过程为:
⑤-1、获取{L
org(m,n)}和{R
org(m,n)}中每个图像块的恰可觉察失真,分别记为
和
其中,
和
的分辨率均为
和
表示
和
中坐标位置为(x,y)的像素点的像素值;
⑤-2、对{L
org(m,n)}和{R
org(m,n)}的每个图像块求取联合恰可觉察失真的加权系数,记为
和
其中,
中的每个像素值赋值为1,对与{R
org(m,n)}中的图像块,根据{D
org(x,y)}中的值,确定
中的值;
⑤-3将{L
org(m,n)}和{R
org(m,n)}中的每个图像块求取恰可觉察失真
和
乘于对应的联合可觉察失真的加权系数
和
得到联合恰可觉察失真
和
所述的步骤⑥的具体过程为:
⑥-1、根据{D
org(x,y)}统计{S
org(m,n)}中的匹配图像块个数,记为μ,对
和
中的联合恰可觉察失真值从小到大排序,形成一个一维数组序列,记为Th,则阈值定义为Th(μ);
⑥-2、根据Th(μ)将{L
org(m,n)}和{R
org(m,n)}中的所有图像块分为两类,若{L
org(m,n)}和{R
org(m,n)}中图像块的
和
的值不大于Th(μ),此图像块归为第一类图像块,图像块中的每个像素提供b
0比特位作为水印的嵌入位置,若{L
org(m,n)}和{R
org(m,n)}中图像块的
和
的值大于Th(μ),此图像块归为第二类图像块,图像块中的每个像素提供b
0和b
1比特位作为水印的嵌入位置,其中每个像素点的像素值用二进制表示时,其比特位从低位到高位依次为b
0、b
1、b
2、b
3、b
4、b
5、b
6、b
7,即b
0表示最低位;
⑥-3、将第二类图像块的坐标位置范围复制形成第一映射坐标范围和第二映射坐标范围;对于{L
org(m,n)}中的每个图像块
的坐标位置(x,y)在密钥K
1和密钥K
2下分别在第一映射坐标范围和第二映射坐标范围内进行Torus二维坐标置换映射得到映射后的第一坐标位置和第二坐标位置记为(x',y')和(x'',y''),定义坐标位置为(x',y')的图像块为第一映射块,定义坐标位置为(x'',y'')的图像块为第二映射块,x'=(x×K
1)mod(M
1)+1,y'=(y×K
1)mod(N
1)+1,x''=(x×K
2)mod(M
2)+1,y''=(y×K
2)mod(N
2)+1,其中,M
1和N
1分别表示第一映射坐标范围内未被映射的图像块横坐标数和纵坐标数,M
2和N
2分别表示第二映射坐标范围内未被映射的图像块横坐标数和纵坐标数,mod为取模运算符号,K
1≠K
2,K
1∈[0,100],K
2∈[0,100];
⑥-4、定义{Lorg(m,n)}和{Rorg(m,n)}的坐标位置的映射位置查询表,记为{Ltab(x,y)}和{Rtab(x,y)},Ltab(x,y)和Rtab(x,y)表示{Ltab(x,y)}和{Rtab(x,y)}中坐标位置记录为(x,y)的像素点的二维矩阵,第一行记录第一映射块的横纵坐标值(x',y'),第二行记录第二映射块的横纵坐标(x'',y''),若没有第二映射块,则第二行的值赋值为0;
⑥-4、将{Lorg(m,n)}中的每个图像块对应的64个水印比特位的值赋值给坐标位置为(x',y')图像块中的每个像素点的像素值的b0比特位,赋值给坐标位置为(x'',y'')图像块中的每个像素点的像素值的b1比特位,完成将水印嵌入{Sorg(m,n)}中,并将对应的映射块的坐标填入Ltab(x,y)中;
⑥-5、对于{R
org(m,n)}中的每个不可匹配图像块
的坐标位置(x,y)在密钥K
1和密钥K
2下分别在第一映射坐标范围和第二映射坐标范围内进行Torus二维坐标置换映射得到映射后的第一坐标位置和第二坐标位置记为(x',y')和(x'',y''),定义坐标位置为(x',y')的图像块为第一映射块,定义坐标位置为(x'',y'')的图像块为第二映射块,x'=(x×K
1)mod(M
1)+1,y'=(y×K
1)mod(N
1)+1,x''=(x×K
2)mod(M
2)+1,y''=(y×K
2)mod(N
2)+1,其中,M
1和N
1分别表示第一映射坐标范围内未被映射的图像块横坐标数和纵坐标数,M
2和N
2分别表示第二映射坐标范围内未被映射的图像块横坐标数和纵坐标数,mod为取模运算符号,K
1≠K
2,K
1∈[0,100],K
2∈[0,100];将{R
org(m,n)}中的每个图像块对应的64个水印比特位的值赋值给坐标位置为(x',y')图像块中的每个像素点的像素值的b
0比特位,赋值给坐标位置为(x'',y'')图像块中的每个像素点的像素值的b
1比特位,完成将水印嵌入{S
org(m,n)}中,并将对应的映射块的坐标填入R
tab(x,y)中;
对于{R
org(m,n)}中的每个可匹配图像块
的坐标位置(x,y)在密钥K
3下在第一类图像块的坐标位置范围内进行Torus二维坐标置换映射得到映射后的第三坐标位置记为(x
*,y
*),定义坐标位置为(x
*,y
*)的图像块为第三映射块,x
*=(x×K
3)mod(M
3)]+1,y
*=(y×K
3)mod(N
3)]+1,其中,M
3表示第三映射坐标范围内未被映射的图像横坐标数,N
3表示第三映射坐标范围内未被映射的图像纵坐标数,mod为取模运算符号,K
3∈[0,100];将{R
org(m,n)}中的每个图像块对应的64个水印比特位的值赋值给坐标位置为(x
*,y
*)图像块中的每个像素点的像素值的b
0比特位,完成将水印嵌入{S
org(m,n)}中,并将对应的映射块的坐标填入R
tab(x,y)中;
所述的步骤3)的具体过程为:
3)-1、对{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块进行每个像素点的高六位比特位的值进行离散余弦变换;得到{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的64个离散余弦变换系数,然后利用JPEG量化表对{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的64个离散余弦变换系数进行量化;
3)-2、对{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的64个量化后的离散余弦变换系数进行Zigzag扫描形成一行,然后选取{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中,每个量化后的离散余弦变换系数为十进制形式;
3)-3、以二进制表示{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中将第一个到第十三个变换系数表示成二进制形式所用的比特个数分别是7、6、6、5、6、5、4、4、4、3、3、3、3,得到{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块对应的59个特征比特位;
3)-4、令
和
表示{L
wat(m,n)}和{R
wat(m,n)}的特征信息,
和
分别表示
和
的特征信息,包含59个特征比特位;
所述的步骤4)的具体过程为:
4)-1、对{L
wat(m,n)}中的图像块
的坐标位置(x,y),根据查询表L
tab(x,y)的第一行获取第一映射块的坐标位置(x',y'),从第一映射块中获取嵌入的水印,记为
第一特征信息是
逐行扫描的前59个比特位,记为
根据查询表L
tab(x,y)的第二行获取第二映射块的坐标位置(x'',y''),从第二映射块中获取嵌入的水印,记为
第二特征信息是
逐行扫描的前59个比特位,记为
4)-2、对{R
wat(m,n)}中的不可匹配图像块
的坐标位置(x,y),根据查询表R
tab(x,y)的第一行获取第一映射块的坐标位置(x',y'),从第一映射块中获取嵌入的水印,记为记为
第一特征信息是
逐行扫描的前59个比特位,记为
根据查询表R
tab(x,y)的第二行获取第二映射块的坐标位置(x'',y''),从第二映射块中获取嵌入的水印,记为
第二特征信息是
逐行扫描的前59个比特位,记为
对{R
wat(m,n)}中的可匹配图像块
的坐标位置(x,y),根据查询表R
tab(x,y)的第一行获取第一映射块的坐标位置(x',y'),从第一映射块中获取嵌入的水印,记为记为
第一特征信息是
逐行扫描的前59个比特位,记为
第二特征信息
与
相同;
所述的步骤5)的具体过程为:
5)-1、分别比较
与
和
比较的图像记为
和
若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1,若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1;
5)-2、分别比较
与
和
比较图像记为
和
若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1,若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1;
5)-3、依次计算
和
中的每个像素点的八邻域值,记为
和
根据查询表L
tab(x,y)获取第一、二映射块的坐标位置(x',y')、(x'',y''),若
的值大于第一映射块的坐标位置(x',y')的八邻域值,并且
的值为1,则
值为1,否则
值更新为0;若
的值大于第二映射块的坐标位置(x'',y'')的八邻域值,并且
的值为1,则
值为1,否则
值为0;根据查询表R
tab(x,y)的获取第一、二映射块的坐标位置(x',y')、(x'',y''),若
的值大于第一映射块的坐标位置(x',y')的八邻域值,并且
的值为1,则
值为1,否则
值更新为0;若
的值大于第二映射块的坐标位置(x'',y'')的八邻域值,并且
的值为1,则
值为1,否则
值为0;
5)-4、依次计算
和
中的每个像素点的九邻域值,记为
和
若
和
中的值大于4,则
和
中对应的值更新为1,否则更新为0;
5)-5、对
和
中的每个对应像素值做或处理,得到{L
wat(m,n)}的定位图像{E
Lwat(x,y)},对
和
中的每个对应像素值做或处理,得到{R
wat(m,n)}的定位图像{E
Rwat(x,y)};
所述的步骤6)的具体过程为:
6)-1、根据{L
wat(m,n)}的定位图像{E
Lwat(x,y)}中每个像素点的像素值,确定{L
wat(m,n)}中遭到篡改的图像块,若E
Lwat(x,y)的值为1,则
遭到篡改,根据查询表L
tab(x,y)的获取第一坐标位置(x',y'),判断第一映射块是否被篡改,若第一映射块没有遭到篡改,则提取第一映射块的水印
获取第一特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这反量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵再进行反JPEG量化并进行反离散余弦变换,获得{L
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,并且根据
的后五位恢复D
wat(x,y),否则若第一映射块遭到篡改,执行步骤6)-2;
6)-2、根据查询表L
tab(x,y)的获取第二坐标位置(x'',y''),判断第二映射块,若第二映射块没有遭到篡改,则提取第二映射块的水印
获取第二特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这反量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵再进行反JPEG量化并进行反离散余弦变换,获得{L
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,根据
的后五位恢复D
wat(x,y);若第二映射块遭到篡改,则用
周围像素值恢复;
6)-3、根据{R
wat(m,n)}的定位图像{E
Rwat(x,y)}中每个像素点的像素值,确定{R
wat(m,n)}中遭到篡改的图像块,若E
Rwat(x,y)的值为1,则
遭到篡改,根据查询表R
tab(x,y)判断若
是匹配块,获取第一坐标位置(x',y'),判断第一映射块,若第一映射块没有遭到篡改,则提取第一映射块的水印
获取第一特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这反量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵再进行反JPEG量化并进行反离散余弦变换,获得{R
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,否则若第一映射块遭到篡改,执行步骤6)-4;
6)-4、根据恢复的左图像{L
wat(m,n)}和
的值,找到
的64个最佳匹配点的像素值一一对应地赋值给
中的每个遭到篡改的像素点,其中,{R
wat(m,n)}中的最佳匹配点的寻找过程为:首先判断D
wat(x,y)的值是否为1~31,若是,又如果
中遭到篡改的像素点在{L
wat(m,n)}中的坐标位置为(m,n),则根据{D
wat(x,y)}中坐标位置为(x,y)的像素点的像素值D
wat(x,y),确定{R
wat(m,n)}中坐标位置为(m,n)的像素点在{L
wat(m,n)}中对应的最佳匹配点的坐标位置为(m,n+D
wat(m,n));若D
wat(x,y)的值不在1~31之间,则用周围像素值恢复;
6)-5、根据{R
wat(m,n)}的定位图像{E
Rwat(x,y)}中每个像素点的像素值,确定{R
wat(m,n)}中遭到篡改的图像块,若E
Rwat(x,y)的值为1,则
遭到篡改,根据查询表R
tab(x,y)判断若
是不可匹配块,获取第一坐标位置(x',y'),判断第一映射块,若第一映射块没有遭到篡改,则提取第一映射块的水印
获取第一特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,再将这13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵进行反JPEG量化并进行反离散余弦变换,获得{L
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,否则若第一映射块遭到篡改,执行步骤6)-6;
6)-6、根据查询表R
tab(x,y)的获取第二坐标位置(x'',y''),判断第二映射块,若第二映射块没有遭到篡改,则提取第二映射块的水印
获取第二特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵进行反JPEG量化并进行反离散余弦变换,获得{R
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8;若映射块遭到篡改,则用
周围像素值恢复。
与现有技术相比,本发明的优点在于:
1)本发明方法利用人眼双目视觉感知的掩蔽特性,根据立体图像左右图像内容和块视差图,计算立体图像中每个图像块的联合恰可觉察失真值,然后对左右图像中的每个图像块进行归类进而嵌入水印,从而大大提高了嵌入水印图像的主观感知质量。
2)本发明方法通过分析立体图像之间的冗余与匹配特性,在恢复水印的嵌入过程中,对于右图像,将可匹配图像的水印一次嵌入在敏感块中,若右图像块和其恢复水印都遭到篡改时,利用其匹配信息恢复,从而减少了恢复水印的容量,大大提高了嵌入水印的立体图像的透明性。
3)本发明方法在篡改图像恢复过程中,对于右图像中的匹配块,其恢复信息是其一个恢复水印和其匹配信息,对于立体图像中的其他块,其恢复信息是其两个恢复水印使篡改立体图像的恢复质量得到了大大的提高。
4)本发明方法对篡改区域的定位精度较高,并能较好地恢复出篡改区域的质量,即使篡改面积较大,本发明方法的定位精度与恢复的图像质量都较高,使本发明方法具有更广泛的实用性。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述,但是本发明不仅限于以下具体实施例。
由于嵌入水印后的立体图像最终是通过人眼进行感知的,因此为了在保持立体图像在感知质量不变或变化不大的前提下,本发明提出了一种基于联合恰可觉察失真的立体图像脆弱水印方法,其利用立体图像的关系,在已有的联合恰可觉察失真(JointJust-Noticeable-Difference,JJND)模型的基础上在立体图像中嵌入水印,嵌入的水印实现了定位出篡改区域并对篡改区域内容进行恢复的两种功能,从而使水印的透明性、对篡改区域检测的精确性和对篡改区域内容的恢复能力达到了很好的提高。
本发明提出的一种基于联合恰可觉察失真的立体图像脆弱水印方法,其包括以下步骤:
①在水印嵌入端,将待嵌入水印的立体图像记为{Sorg(m,n)},将{Sorg(m,n)}的左图像记为{Lorg(m,n)},将{Sorg(m,n)}的右图像记为{Rorg(m,n)},其中,{Sorg(m,n)}、{Lorg(m,n)}和{Rorg(m,n)}的分辨率为M×N,1≤m≤M,1≤n≤N,Sorg(m,n)表示{Sorg(m,n)}中坐标位置为(m,n)的像素点的像素值,Lorg(m,n)表示{Lorg(m,n)}中坐标位置为(m,n)的像素点的像素值,Rorg(m,n)表示{Rorg(m,n)}中坐标位置为(m,n)的像素点的像素值;
在本实施例中,采用标准的立体测试图像“Akko_kay”作为原始立体图像,立体图像包括左图像和右图像,“Akko_kay”的左图像和右图像的分辨率为640×480。图1a和图1b分别给出了“Akko_kay”的左图像和右图像。
②将{L
org(m,n)}和{R
org(m,n)}分别划分成
个互不重叠的尺寸大小为8×8的图像块,将{L
org(m,n)}中坐标位置为(x,y)的图像块记为
将{R
org(m,n)}中坐标位置为(x,y)的图像块记为
其中,
③将块匹配视差图像记为{D
org(x,y)},D
org(x,y)表示{D
org(x,y)}中坐标位置为(x,y)的像素点的像素值,若能很好匹配,则D
org(x,y)的像素值范围是1-31,(此处1-31的取值是经过试验得到的,这个属于现有技术,)若不能很好匹配,则D
org(x,y)为0,令{L
org(m,n)}为参考图像,利用现有技术对{R
org(m,n)}中坐标位置为(x,y)的图像块
在{L
org(m,n)}中的水平图像块中搜索最佳匹配块,最佳匹配块的坐标位置为(x,y+d),则块匹配视差图像中的D
org(x,y)值为d,将{R
org(m,n)}中的
记为可匹配块,将{L
org(m,n)}中的
记为{R
org(m,n)}中的
的匹配块;
④对{L
org(m,n)}和{R
org(m,n)}中的每个图像块分别进行离散余弦变换,并利用JPEG量化表对变换后的系数进行量化,生成{L
org(m,n)}中的每个图像块的特征信息和{R
org(m,n)}中的每个图像块的特征信息,将{L
org(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
将{R
org(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
然后根据{L
org(m,n)}和{R
org(m,n)}中的每个图像块的特征信息和块匹配视差图像{D
org(x,y)}产生{L
org(m,n)}和{R
org(m,n)}的水印,记为
和
其中,
和
的分辨率为M×N,
和
表示
和
中坐标位置为(m,n)的像素点的像素值;
在此具体实施例中,步骤④的具体过程为:
④-1、依次对{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块每个像素点的高六位比特位的值进行离散余弦变换;得到{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的64个离散余弦变换系数,然后利用JPEG量化表对{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的64个离散余弦变换系数进行量化;所述的JPEG量化表为现有技术的一张表格,本领域技术人员都是知道的。
④-2、依次对{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的64个量化后的离散余弦变换系数进行Zigzag扫描形成一行,然后选取{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中,每个量化后的离散余弦变换系数为十进制形式;
④-3、以二进制表示{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中将第一个到第十三个变换系数表示成二进制形式所用的比特个数分别是7、6、6、5、6、5、4、4、4、3、3、3、3,得到{Lorg(m,n)}和{Rorg(m,n)}中的每个图像块对应的59个特征比特位;这些得到的所需要占用的比特个数是经过多次试验得到的,
④-4、令
和
表示{L
org(m,n)}和{R
org(m,n)}的特征信息,
和
中包含59个特征比特位;对块匹配视差图像{D
org(x,y)}中的十进制视差值用5个比特表示成二进制,将{L
org(m,n)}和{R
org(m,n)}中的每个匹配块和可匹配块的
和
中的每个像素值赋值给
和
的逐行扫描的前59个像素,将D
org(x,y)中的每个视差值的5个比特值赋值给
和
的逐行扫描的后5个像素,将{L
org(m,n)}和{R
org(m,n)}中的不可匹配块的
和
中的每个像素值赋值给
和
的逐行扫描的前59个像素,将
和
的逐行扫描的后5个像素赋值为0,每个
和
尺寸大小为8×8,最后产生{L
org(m,n)}和{R
org(m,n)}的水印,记为
和
⑤根据D
org(x,y)获取{L
org(m,n)}和{R
org(m,n)}中的每个图像块的联合恰可觉察失真值,生成{L
org(m,n)}和{R
org(m,n)}的联合恰可觉察失真图像,记为
和
和
表示
和
中坐标位置为(x,y)的像素点的联合恰可觉察失真值;
在此具体实施例中,步骤⑤的具体过程为:
⑤-1、采用现有技术依次计算{L
org(m,n)}和{R
org(m,n)}中每个图像块的恰可觉察失真,分别记为
和
其中,
和
的分辨率均为
和
表示
和
中坐标位置为(x,y)的像素点的像素值;
⑤-2、对{L
org(m,n)}和{R
org(m,n)}的每个图像块求取联合恰可觉察失真的加权系数,记为
和
其中,
中的每个像素值赋值为1,对于{R
org(m,n)}中的图像块,根据{D
org(x,y)}中的值,将其值量化为5个等级的范围,确定
中的值,在本实施例中,对应{D
org(x,y)}的从小到大五个等级的
中对应的值依次为1.5,1.4,1.3,1.2,1.1;
⑤-3依次将{L
org(m,n)}和{R
org(m,n)}中的每个图像块恰可觉察失真
和
乘于对应的联合可觉察失真的加权系数
和
得到联合恰可觉察失真
和
图2a给出了“Akko_kayo”原始立体图像的左图像的联合恰可觉察失真图像,为了显示的需要,将联合恰可觉察失真的图像中的每个像素值扩大10倍;图2b给出了“Akko_kayo”原始立体图像的右图像的联合恰可觉察失真图像,为了显示的需要,将联合恰可觉察失真的图像中的每个像素值扩大10倍;像素值越大表示人眼越不敏感,像素值越小表示人眼越敏感。
⑥根据
和
中的每个图像块的联合恰可觉察失真值和{R
org(m,n)}中可匹配块的个数,将{S
org(m,n)}中的所有图像块分为两类,并分别确定两类图像块待嵌入水印比特位的位置,然后将水印
和
嵌入{S
org(m,n)}中;
在此具体实施例中,步骤⑥的具体过程为:
⑥-1、根据{D
org(x,y)}统计{S
org(m,n)}中的匹配图像块个数,记为μ,对
和
中的联合恰可觉察失真值从小到大排序,形成一个一维数组序列,记为Th,则阈值定义为Th(μ);
⑥-2、根据Th(μ)将{L
org(m,n)}和{R
org(m,n)}中的所有图像块分为两类,若{L
org(m,n)}和{R
org(m,n)}中图像块的
和
的值不大于Th(μ),此图像块归为第一类图像块,图像块中的每个像素提供b
0比特位作为水印的嵌入位置,若{L
org(m,n)}和{R
org(m,n)}中图像块的
和
的值大于Th(μ),此图像块归为第二类图像块,图像块中的每个像素提供b
0和b
1比特位作为水印的嵌入位置,其中每个像素点的像素值用二进制表示时,其比特位从低位到高位依次为b
0、b
1、b
2、b
3、b
4、b
5、b
6、b
7,即b
0表示最低位;
⑥-3、将第二类图像块的坐标位置范围复制形成第一映射坐标范围和第二映射坐标范围;对于{Lorg(m,n)}中的每个图像块的坐标位置(x,y)在密钥K1和密钥K2下分别在第一映射坐标范围和第二映射坐标范围内进行Torus二维坐标置换映射得到映射后的第一坐标位置和第二坐标位置记为(x',y')和(x'',y''),定义坐标位置为(x',y')的图像块为第一映射块,定义坐标位置为(x'',y'')的图像块为第二映射块,x'=(x×K1)mod(M1)+1,y'=(y×K1)mod(N1)+1,x''=(x×K2)mod(M2)+1,y''=(y×K2)mod(N2)+1,其中,M1和N1分别表示第一映射坐标范围内未被映射的图像块横坐标数和纵坐标数,M2和N2分别表示第二映射坐标范围内未被映射的图像块横坐标数和纵坐标数,mod为取模运算符号,K1≠K2,K1∈[0,100],K2∈[0,100],在本实施例中,取K1=11,K2=17;
⑥-4、定义{Lorg(m,n)}和{Rorg(m,n)}的坐标位置的映射位置查询表,记为{Ltab(x,y)}和{Rtab(x,y)},Ltab(x,y)和Rtab(x,y)表示{Ltab(x,y)}和{Rtab(x,y)}中坐标位置记录为(x,y)的像素点的二维矩阵,第一行记录第一映射块的横纵坐标值(x',y'),第二行记录第二映射块的横纵坐标(x'',y''),若没有第二映射块,则第二行的值赋值为0;
⑥-4、将{Lorg(m,n)}中的每个图像块对应的64个水印比特位的值赋值给坐标位置为(x',y')图像块中的每个像素点的像素值的b0比特位,赋值给坐标位置为(x'',y'')图像块中的每个像素点的像素值的b1比特位,完成将水印嵌入{Sorg(m,n)}中,并将对应的映射块的坐标填入Ltab(x,y)中;
⑥-5、对于{R
org(m,n)}中的每个不可匹配图像块
的坐标位置(x,y)在密钥K
1和密钥K
2下分别在第一映射坐标范围和第二映射坐标范围内进行Torus二维坐标置换映射得到映射后的第一坐标位置和第二坐标位置记为(x',y')和(x'',y''),定义坐标位置为(x',y')的图像块为第一映射块,定义坐标位置为(x'',y'')的图像块为第二映射块,x'=(x×K
1)mod(M
1)+1,y'=(y×K
1)mod(N
1)+1,x''=(x×K
2)mod(M
2)+1,y''=(y×K
2)mod(N
2)+1,其中,M
1和N
1分别表示第一映射坐标范围内未被映射的图像块横坐标数和纵坐标数,M
2和N
2分别表示第二映射坐标范围内未被映射的图像块横坐标数和纵坐标数,mod为取模运算符号,K
1≠K
2,K
1∈[0,100],K
2∈[0,100],在本实施例中,取K
1=11,K
2=17;将{R
org(m,n)}中的每个图像块对应的64个水印比特位的值赋值给坐标位置为(x',y')图像块中的每个像素点的像素值的b
0比特位,赋值给坐标位置为(x'',y'')图像块中的每个像素点的像素值的b
1比特位,完成将水印嵌入{S
org(m,n)}中,并将对应的映射块的坐标填入R
tab(x,y)中;
对于{Rorg(m,n)}中的每个可匹配图像块的坐标位置(x,y)在密钥K3下在第一类图像块的坐标位置范围内进行Torus二维坐标置换映射得到映射后的第三坐标位置记为(x*,y*),定义坐标位置为(x*,y*)的图像块为第三映射块,x*=(x×K3)mod(M3)]+1,y*=(y×K3)mod(N3)]+1,其中,M3表示第三映射坐标范围内未被映射的图像横坐标数,N3表示第三映射坐标范围内未被映射的图像纵坐标数,mod为取模运算符号,K3∈[0,100],在本实施例中,取K3=19;将{Rorg(m,n)}中的每个图像块对应的64个水印比特位的值赋值给坐标位置为(x*,y*)图像块中的每个像素点的像素值的b0比特位,完成将水印嵌入{Sorg(m,n)}中,并将对应的映射块的坐标填入Rtab(x,y)中;
图3a给出了嵌入水印后的“Akko_kayo”立体图像的左图像,嵌入水印后,“Akko_kayo”立体图像的左图像的峰值信噪比PSNR为40.21dB,图3b给出了嵌入水印后的“Akko_kayo”立体图像的右图像,嵌入水印后,“Akko_kayo”立体图像的右图像的峰值信噪比PSNR为42.28dB,表明嵌入水印后的立体图像与原始立体图像十分相似,嵌入水印的立体图像透明性很好。
1)在水印提取端,将待提取水印的立体图像记为{Swat(m,n)},将{Swat(m,n)}的左图像记为{Lwat(m,n)},将{Swat(m,n)}的右图像记为{Rwat(m,n)},其中,{Swat(m,n)}、{Lwat(m,n)}和{Rwat(m,n)}的分辨率为M×N,1≤m≤M,1≤n≤N,Swat(m,n)表示{Swat(m,n)}中坐标位置为(m,n)的像素点的像素值,Lwat(m,n)表示{Lwat(m,n)}中坐标位置为(m,n)的像素点的像素值,Rwat(m,n)表示{Rwat(m,n)}中坐标位置为(m,n)的像素点的像素值;
在本实施例中,为了说明本发明方法对剪切攻击和拼接攻击后的认证效果以及对篡改图像进行篡改内容得到的恢复图像的质量,分别对嵌入水印后的立体图像进行面积比例分别为2.1%,8.4%,18.8%,33.4%的剪切攻击和拼接攻击,图4a给出了嵌入水印后的“Akko_kayo”立体图像的左图像面积比列为18.8%的剪切攻击图像,图4b给出了嵌入水印后的“Akko_kayo”立体图像的右图像面积比例为18.8%的剪切攻击的图像;图8a给出了嵌入水印后的“Akko_kayo”立体图像的左图像进行拼接攻击的图像,图8b给出了嵌入水印后的“Akko_kayo”立体图像的右图像进行拼接攻击的图像。
2)将{L
wat(m,n)}和{R
wat(m,n)}分别划分成
个互不重叠的尺寸大小为8×8的图像块,将{L
wat(m,n)}中坐标位置为(x,y)的图像块记为
将{R
wat(m,n)}中坐标位置为(x,y)的图像块记为
其中,
3)对{L
wat(m,n)}和{R
wat(m,n)}中的每个图像块分别进行离散余弦变换,并利用JPEG量化表对变换后的系数进行量化,生成{L
wat(m,n)}中的每个图像块的特征信息和{R
wat(m,n)}中的每个图像块的特征信息,将{L
wat(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
将{R
wat(m,n)}中坐标位置为(x,y)的图像块
生成的特征信息记为
则{L
wat(m,n)}和{R
wat(m,n)}生成的特征信息记为
和
在此具体实施例中,步骤3)的具体过程为:
3)-1、对{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块进行每个像素点的高六位比特位的值进行离散余弦变换;得到{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的64个离散余弦变换系数,然后利用JPEG量化表对{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的64个离散余弦变换系数进行量化;
3)-2、对{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的64个量化后的离散余弦变换系数进行Zigzag扫描形成一行,然后选取{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中,每个量化后的离散余弦变换系数为十进制形式;
3)-3、以二进制表示{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块的前13个量化后的离散余弦变换系数,其中将第一个到第十三个变换系数表示成二进制形式所用的比特个数分别是7、6、6、5、6、5、4、4、4、3、3、3、3,得到{Lwat(m,n)}和{Rwat(m,n)}中的每个图像块对应的59个特征比特位;
3)-4、令
和
表示{L
wat(m,n)}和{R
wat(m,n)}的特征信息,
和
分别表示
和
的特征信息,包含59个特征比特位;
4)根据{L
wat(m,n)}和{R
wat(m,n)}中的每个图像块提取{L
wat(m,n)}和{R
wat(m,n)}中的水印,记为
和
提取{L
wat(m,n)}和{R
wat(m,n)}中的每个图像块的特征信息,记为
和
在此具体实施例中,步骤4)的具体过程为:
4)-1、对{L
wat(m,n)}中的图像块
的坐标位置(x,y),根据查询表L
tab(x,y)的第一行获取第一映射块的坐标位置(x',y'),从第一映射块中获取嵌入的水印,记为
第一特征信息是
逐行扫描的前59个比特位,记为
根据查询表L
tab(x,y)的第二行获取第二映射块的坐标位置(x'',y''),从第二映射块中获取嵌入的水印,记为
第二特征信息是
逐行扫描的前59个比特位,记为
4)-2、对{R
wat(m,n)}中的不可匹配图像块
的坐标位置(x,y),根据查询表R
tab(x,y)的第一行获取第一映射块的坐标位置(x',y'),从第一映射块中获取嵌入的水印,记为记为
第一特征信息是
逐行扫描的前59个比特位,记为
根据查询表R
tab(x,y)的第二行获取第二映射块的坐标位置(x'',y''),从第二映射块中获取嵌入的水印,记为
第二特征信息是
逐行扫描的前59个比特位,记为
对{R
wat(m,n)}中的可匹配图像块
的坐标位置(x,y),根据查询表R
tab(x,y)的第一行获取第一映射块的坐标位置(x',y'),从第一映射块中获取嵌入的水印,记为记为
第一特征信息是
逐行扫描的前59个比特位,记为
第二特征信息
与
相同;
5)计算
与
和
的差图像,记为
和
计算
与
和
的差图像,记为
和
然后根据
和
生成{L
wat(m,n)}的定位图像和{R
wat(m,n)}的定位图像,分别记为{E
Lwat(x,y)}和{E
Rwat(x,y)},其中{E
Lwat(x,y)}和{E
Rwat(x,y)}的分辨率为
E
Lwat(x,y)表示{E
Lwat(x,y)}中坐标位置为(x,y)的像素点的像素值,E
Rwat(x,y)表示{E
Rwat(x,y)}中坐标位置为(x,y)的像素点的像素值;
在此具体实施例中,步骤5)的具体过程为:
5)-1、分别比较
与
和
比较的图像记为
和
若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1,若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1;
5)-2、分别比较
与
和
比较图像记为
和
若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1,若
与
完全一致,将
中坐标位置为(x,y)的像素点的像素值记为0,否则记为1;
5)-3、依次计算
和
中的每个像素点的八邻域值,记为
和
根据查询表L
tab(x,y)获取第一、二映射块的坐标位置(x',y')、(x'',y''),若
的值大于第一映射块的坐标位置(x',y')的八邻域值,并且
的值为1,则
值为1,否则
值更新为0;若
的值大于第二映射块的坐标位置(x'',y'')的八邻域值,并且
的值为1,则
值为1,否则
值为0;根据查询表R
tab(x,y)的获取第一、二映射块的坐标位置(x',y')、(x'',y''),若
的值大于第一映射块的坐标位置(x',y')的八邻域值,并且
的值为1,则
值为1,否则
值更新为0;若
的值大于第二映射块的坐标位置(x'',y'')的八邻域值,并且
的值为1,则
值为1,否则
值为0;
5)-4、依次计算
和
中的每个像素点的九邻域值,记为
和
若
和
中的值大于4,则
和
中对应的值更新为1,否则更新为0;
5)-5、对
和
中的每个对应像素值做或处理,得到{L
wat(m,n)}的定位图像{E
Lwat(x,y)},对
和
中的每个对应像素值做或处理,得到{R
wat(m,n)}的定位图像{E
Rwat(x,y)};
图5a给出了对图4a进行剪切攻击的定位图像,篡改的像素点的检测率是100%,定位精度较高,图5b给出了对图4b进行剪切攻击的定位图像,篡改的像素点的检测率是100%,定位精度较高,图9a给出了对图8a进行拼接攻击的定位图像,篡改的像素点的检测率是100%,图9b给出了对图8b进行拼接攻击的定位图像,篡改的像素点的检测率是100%,定位精度较高。
6)依次判断{Lwat(m,n)}的定位图像{ELwat(i,j)}中每个像素点的像素值,确定{Lwat(m,n)}中遭到篡改的图像块,然后根据遭到篡改的图像块找出此篡改块的水印,用水印恢复篡改块中每个像素点的值;
依次判断{Rwat(m,n)}的定位图像{ERwat(i,j)}中的每个像素点的像素值,确定{Rwat(m,n)}中遭到篡改的图像块,若此图像块是不可匹配块,则根据遭到篡改的图像块找出此篡改块的水印,用水印恢复篡改块中每个像素点的值,若此图像块是可匹配块,则根据遭到篡改的图像块找出此篡改块的水印或这个可匹配块相对应的匹配块的像素值,恢复篡改块中每个像素点的值。
在此具体实施例中,步骤6)的具体过程为:
6)-1、根据{L
wat(m,n)}的定位图像{E
Lwat(x,y)}中每个像素点的像素值,确定{L
wat(m,n)}中遭到篡改的图像块,若E
Lwat(x,y)的值为1,则
遭到篡改,根据查询表L
tab(x,y)的获取第一坐标位置(x',y'),判断第一映射块是否被篡改,若第一映射块没有遭到篡改,则提取第一映射块的水印
获取第一特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这反量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵再进行反JPEG量化并进行反离散余弦变换,获得{L
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,并且根据
的后五位恢复D
wat(x,y),否则若第一映射块遭到篡改,执行步骤6)-2;
6)-2、根据查询表L
tab(x,y)的获取第二坐标位置(x'',y''),判断第二映射块,若第二映射块没有遭到篡改,则提取第二映射块的水印
获取第二特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这反量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵再进行反JPEG量化并进行反离散余弦变换,获得{L
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,根据
的后五位恢复D
wat(x,y);若第二映射块遭到篡改,则用
周围像素值恢复;
6)-3、根据{R
wat(m,n)}的定位图像{E
Rwat(x,y)}中每个像素点的像素值,确定{R
wat(m,n)}中遭到篡改的图像块,若E
Rwat(x,y)的值为1,则
遭到篡改,根据查询表R
tab(x,y)判断若
是匹配块,获取第一坐标位置(x',y'),判断第一映射块,若第一映射块没有遭到篡改,则提取第一映射块的水印
获取第一特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这反量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵再进行反JPEG量化并进行反离散余弦变换,获得{R
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,否则若第一映射块遭到篡改,执行步骤6)-4;
6)-4、根据恢复的左图像{L
wat(m,n)}和
的值,找到
的64个最佳匹配点的像素值一一对应地赋值给
中的每个遭到篡改的像素点,其中,{R
wat(m,n)}中的最佳匹配点的寻找过程为:首先判断D
wat(x,y)的值是否为1~31,若是,又如果
中遭到篡改的像素点在{L
wat(m,n)}中的坐标位置为(m,n),则根据{D
wat(x,y)}中坐标位置为(x,y)的像素点的像素值D
wat(x,y),确定{R
wat(m,n)}中坐标位置为(m,n)的像素点在{L
wat(m,n)}中对应的最佳匹配点的坐标位置为(m,n+D
wat(m,n));若D
wat(x,y)的值不在1~31之间,则用周围像素值恢复;
6)-5、根据{R
wat(m,n)}的定位图像{E
Rwat(x,y)}中每个像素点的像素值,确定{R
wat(m,n)}中遭到篡改的图像块,若E
Rwat(x,y)的值为1,则
遭到篡改,根据查询表R
tab(x,y)判断若
是不可匹配块,获取第一坐标位置(x',y'),判断第一映射块,若第一映射块没有遭到篡改,则提取第一映射块的水印
获取第一特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,再将这13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵进行反JPEG量化并进行反离散余弦变换,获得{L
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8,否则若第一映射块遭到篡改,执行步骤6)-6;
6)-6、根据查询表R
tab(x,y)的获取第二坐标位置(x'',y''),判断第二映射块,若第二映射块没有遭到篡改,则提取第二映射块的水印
获取第二特征信息
分别按7、6、6、5、6、5、4、4、4、3、3、3、3个比特组成13组,以十进制表示每组的数,得到13个数,对这13个数用JPEG表依次反量化,再将这量化后的13个数作为前13个数并且依次在末尾添加51个零形成一个1行64列的数组,然后进行逆Zigzag扫描,最后对逆Zigzag扫描得到的8×8矩阵进行反JPEG量化并进行反离散余弦变换,获得{R
wat(m,n)}中坐标位置为(x,y)的图像块
的恢复信息,记为
将
中对应的像素点的像素值依次对应地赋值给
中64像素点,其中,恢复信息用水印比特位的值为1或0,
的尺寸大小为8×8;若映射块遭到篡改,则用
周围像素值恢复。
所述在水印提取端中的步骤1)、2)、3)、4)、5)、6)是在水印嵌入之后再进行的,可以是在刚嵌入水印之后就进行,也可以是在进过篡改攻击之后再进行。
图6a给出了对图5a进行剪切篡改处恢复内容后的全局图像,图像的峰值信噪比PSNR为41.94dB;图6b给出了对图5b进行剪切篡改处恢复内容后的全局图像,图像的峰值信噪比PSNR为40.40dB;为了更加有效地评价篡改后图像的恢复质量,分别将原始立体图像的左图像篡改位置的局部图和嵌入水印后的左图像篡改处内容的局部图放大显示,图7a给出了“Akko_kayo”原始立体图像左图像同图4a进行剪切篡改攻击剪切位置相同的部分图像内容的放大图,图7b为图4a剪切篡改处恢复内容后剪切位置的部分图像内容的放大图,图7c给出了“Akko_kayo”原始立体图像的右图像同图4b进行剪切篡改攻击剪切位置相同的部分图像内容的放大图,图7d为图4b剪切篡改处恢复内容后剪切位置的部分图像内容的放大图,比较图7a与图7b及图7c与图7d可知,篡改攻击后的图像内容的恢复质量较好。
图10a给出了对图8a进行拼接攻击篡改位置恢复内容后的全局图像,图像的峰值信噪比PSNR为38.68dB;图10b给出了对图8b进行拼接攻击篡改位置恢复内容后的全局图像,图像的峰值信噪比PSNR为38.39dB;篡改攻击后的图像内容与原始图像十分相似,篡改后图像内容恢复的质量较好。
在不同面积比例的剪切篡改并恢复篡改区域方面,本发明方法均取得了较好的恢复图像质量,表1列出了“Akko_kayo”、“Art”和“Laundry”测试图像采用本发明方法在四种剪切篡改面积下恢复的客观质量值。在此四种比例的剪切面积篡改下,其恢复的篡改图像的质量均大于30dB。
表1不同剪切面积的恢复图像质量(dB)