差值扩展(DE)可逆水印总结
来源:互联网 发布:最新手机拍照软件 编辑:程序博客网 时间:2024/05/29 18:54
差值扩展可逆水印
差值扩展可逆水印,顾名思义,是对一对像素的差值进行扩展来可逆的嵌入水印。并不是所有的像素对都可用于水印的可逆嵌入。根据作者定义,像素对可以分为可扩展的、可变的、不可变的,其中可扩展就一定是可变的。只有可扩展的、可变的像素对可用于水印的嵌入。下面详细说明算法流程:
嵌入过程:
1、 首先根据一定的方式让图像像素进行配对;并根据定义将像素对分为可扩展且差值h=0或者h=-1的(EZ)、可扩展的且h!=0&&h!=-1(EN)、可变的且不属于EZ EN(CN)、不可变的(NC)四种;根据要嵌入的数据量和可嵌入量调整EN,将EN分为EN1和EN2两部分。
2、形成地址映射loaction_map矩阵。对于像素对属于EZ、EN1的像素对,对于的location_map值为1,否则值为0。
3、像素对属于EN2、CN且差值h!=1&&h!=-2的差值最低位组成矩阵C。
4、对地址映射矩阵进行压缩编码,联合矩阵C、嵌入信息P组成嵌入矩阵B。
5、按照下列方法完成水印的嵌入
1) Set i=1 and j=0
2)while i<=m
j=j+1;
if hjϵ(EZUEN1)
hj=i*hj+bi;
i=i+1;
elseif hj ϵ(EN2UCN)
hj=2*floor(hj/2)+bi;
i=i+1;
2)end
提取过程:
1)、根据嵌入过程相同的配对方式进行像素配对;并对于可变的像素对提取其差值的最低位,组成矩阵B_new;提取矩阵B_new的前lm*ln位(即地址映射矩阵)组成矩阵location_new,并对其进行反编码形成地址映射矩阵location_map;
2)、对于可变的像素对,分下面几种情况就行复原:
1)location_map=1:hj=floor(hj/2);
2)location_map=0&&(hj=0||hj=1):hj=1;
3)location_map=0&&(hj=-2||hj=-1):hj=-2
4)location_map=0&&(h!=-2&&h!=-1&&h!=0&&h!=1):hj=2*floor(hj/2)+B_new(lm*ln+i)
3)根据像素对的均值l和差值h进行复原
要点:
1)、根据算法,像素对可唯一的进行复原。一开始看论文时在进行可逆复原会有不解:像素对的前一个值加上floor((h+1)/2),而像素对的后一个值却是均值l加上floor(h/2),为什么不是反过来呢?怎么不是前一个值加上floor(h/2)后一个值加上floor((h+1)/2)呢?后来研究发现,这就是算法的本来特性,按照这种方式就能唯一的复原原像素对;
2)、算法嵌入过程中只嵌入可变得像素对,而对不可变的像素对保持不变。而在嵌入完成后,可变的像素对还是可变的,不可变的像素对依旧是不可变的,而这正是算法可行和提取的关键之处。为了算法的同步性,在嵌入时,要么记住一共嵌入的位数,要么实行满嵌。
3)、对EN进行分组时,会影响到水印的可嵌入容量。实际上算法的嵌入容量为|EZ|+|EN1|+像素对属于EN2或CN且其差值h为1或-2的个数;对于EN2和CN(h不为1、-2的)虽然也用于嵌入,但在嵌入信息中也会嵌入其差值的最低有效位,即矩阵C。故,若嵌入信息量大于算法的可嵌入容量时,可调整EN的分组,使其嵌入容量增大。通常要适量选择,因为若EN都划为EN1,会使图像质量降低。
4)、该算法可以实现对图像的多层次嵌入,即嵌入完成后,可以用不同的方式进行像素配对,再次进行信息的嵌入。
原文为:Jun, Tian Reversible data embedding using a difference expansion Circuits and Systems for Video Technology, IEEE Transactions on 2003
- 差值扩展(DE)可逆水印总结
- 基于整数变换的可逆水印总结
- 加密域的可逆水印
- 对称与非对称和可逆不可逆加密算法总结
- 对称与非对称和可逆不可逆加密算法总结
- 随心de面试总结
- unity 差值使用总结
- PHP-可逆加密解密算法总结
- test3-8(可逆素数)
- 可逆素数(难度:半颗星)
- 水印破解总结
- 视频数字水印总结
- de
- de
- 最大差值(贪心)
- 差值
- 差值
- (百例编程)32.可逆素数
- ACM——博弈论 (以SG的求法为主)
- 几道Java笔试题
- Android学习笔记(四)
- linux常用命令
- JAVA Class Loader
- 差值扩展(DE)可逆水印总结
- 编写客户文档的职责
- Set Definition
- oracle sql loader全攻略
- C语言宏定义##连接符和#符的使用
- 动态控制水晶报表中数字栏位的值显示的小数位数
- TCP/IP Illustrated 笔记 BGP
- 00001.Oracle版本查看
- 终端和控制台之间的区别