差值扩展(DE)可逆水印总结

 

差值扩展可逆水印

         差值扩展可逆水印,顾名思义,是对一对像素的差值进行扩展来可逆的嵌入水印。并不是所有的像素对都可用于水印的可逆嵌入。根据作者定义,像素对可以分为可扩展的、可变的、不可变的,其中可扩展就一定是可变的。只有可扩展的、可变的像素对可用于水印的嵌入。下面详细说明算法流程:

 

嵌入过程:

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,差值扩展,可逆水印,扩展,算法,transactions,video,bi,c)