发明内容
本申请实施例的目的是提供一种水印嵌入方法、水印检测方法及装置,以解决现有通过小波变换进行水印和嵌入鲁棒性不高的问题。
为解决上述技术问题,本申请实施例提供了如下技术方案:
一种水印嵌入方法,包括:
对原始图像进行三级非冗余Contourlet变换,获得所述原始图像的低频子带信息和三级高频子带信息;
将所述三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构;
根据预先设置的密钥从所述树结构中选择用于嵌入水印的树结构;
计算所述选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值;
根据所述水印的值调整所述父系数的绝对值与所述所有子系数绝对值的平均值,完成水印嵌入。
所述三级高频子带中第一级高频子带包含四个子带,第二级高频子带包含八个子带,第三级高频子带包含十六个子带。
所述预先设置的密钥的长度与所述树结构的个数一致。
所述选择用于嵌入水印的树结构的个数为512个。
所述水印为伪随机二值序列。
当所述伪随机二值序列分别为1和-1时,所述根据所述水印的值调整所述父系数的绝对值与所述所有子系数绝对值的平均值包括:
当所述水印的值为1时,增加所述父系数的绝对值直至所述父系数的绝对值大于所述所有子系数的绝对值的平均值;
当所述水印的值为-1时,减少所述父系数的绝对值直至所述父系数的绝对值小于所述所有子系数的绝对值的平均值。
一种水印提取检测方法,包括:
对图像进行三级非冗余Contourlet变换,获得所述图像的低频子带信息和三级高频子带信息;
将所述三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构;
根据预先设置的密钥从所述树结构中选择相应的树结构;
计算所述选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值;
通过比较所述父系数的绝对值和所有子系数的绝对值的平均值提取所述选择的树结构中水印的值;
根据所述提取的水印与预先保存的原始水印之间的相关性判断所述图像中是否包含水印。
当所述水印为伪随机二值序列1和-1时,所述通过比较所述父系数的绝对值和所有子系数的绝对值的平均值提取所述选择的树结构中水印的值包括:
当所述父系数的绝对值大于所述所有子系数的绝对值的平均值时,提取树结构的水印的值为1;
当所述父系数的绝对值小于所述所有子系数的绝对值的平均值时,提取树结构的水印的值为-1。
所述根据所述提取的水印与预先保存的原始水印之间的相关性判断所述图像中是否包含水印包括:
预先设置阈值;
计算所述提取的水印与预先保存的原始水印之间的相关性,获得相关性值;
当所述相关性值不小于所述阈值时,确定所述图像中包含水印,当所述相关性值小于所述阈值时,确定所述图像中不包含水印。
一种水印嵌入装置,包括:
Contourlet变换单元,用于对原始图像进行三级非冗余Contourlet变换,获得所述原始图像的低频子带信息和三级高频子带信息;
树结构构成单元,用于将所述三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构;
树结构选择单元,用于根据预先设置的密钥从所述树结构中选择用于嵌入水印的树结构;
绝对值计算单元,用于计算所述选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值;
水印嵌入单元,用于根据所述水印的值调整所述父系数的绝对值与所述所有子系数绝对值的平均值,完成水印嵌入。
一种水印提取检测装置,包括:
Contourlet变换单元,用于对图像进行三级非冗余Contourlet变换,获得所述图像的低频子带信息和三级高频子带信息;
树结构构成单元,用于将所述三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构;
树结构选择单元,用于根据预先设置的密钥从所述树结构中选择相应的树结构;
绝对值计算单元,用于计算所述选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值;
水印值提取单元,用于通过比较所述父系数的绝对值和所有子系数的绝对值的平均值提取所述选择的树结构中水印的值;
水印检测单元,用于根据所述提取的水印与预先保存的原始水印之间的相关性判断所述图像中是否包含水印。
所述水印检测单元包括:
预设阈值单元,用于预先设置阈值;
相关性计算单元,用于计算所述提取的水印与预先保存的原始水印之间的相关性,获得相关性值;
相关性比较单元,用于当所述相关性值不小于所述阈值时,确定所述图像中包含水印,当所述相关性值小于所述阈值时,确定所述图像中不包含水印。
可见,本申请实施例中对图像进行三级非冗余Contourlet变换,获得图像的低频子带信息和三级高频子带信息,将三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构,根据预先设置的密钥从树结构中选择用于相应的树结构,计算选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值,根据水印的值调整父系数的绝对值与所有子系数绝对值的平均值,完成水印嵌入,或者通过比较父系数的绝对值和所有子系数的绝对值的平均值提取选择的树结构中水印的值,并根据提取的水印与预先保存的原始水印之间的相关性判断图像中是否包含水印。本发明通过采用非冗余Contourlet变换对图像进行变换,弥补了小波变换难以捕捉到二维图像的边缘信息的缺陷,因此提高了水印系统的鲁棒性。
具体实施方式
本申请实施例提供一种水印嵌入方法、水印检测方法及装置。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
本申请实施例中的水印嵌入和水印检测均基于Contourlet变换。Contourlet变换是直接产生于离散域的变换,是一种“真””的二维图像表示方法,这种方法可以很好地抓住图像的几何结构,并且因为利用轮廓线段(Contour Segment)的构造方式产生了一种灵活可变的多分辨分析的,局部的和方向性的表示方法。Contourlet可以满足曲线的各向异性尺度关系,并且提供一种快速的,结构化的象曲线波一样的分解采样信号方法。与其他分析方式最不同的是,Contourlet允许在不同的尺度下,有不同数目的方向,因此可以成功逼近含C2曲线的光滑分段函数。
本申请采用的非冗余的Contourlet变换可以通过一个拉普拉斯塔形结构与一个方向滤波组(DFB)而构造而成,非冗余Contourlet变换的主要优点是为图像获得了一个非冗余的多尺度和多方向的分解方式。由于该变换是基于小波变换的,所以也称作为基于小波变换的Contourlet变换(WBCT)。
参见图1,为本申请水印嵌入方法的第一实施例流程图:
步骤101:对原始图像进行三级非冗余Contourlet变换,获得原始图像的低频子带信息和三级高频子带信息。
步骤102:将三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构。
步骤103:根据预先设置的密钥从树结构中选择用于嵌入水印的树结构。
步骤104:计算选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值。
步骤105:根据水印的值调整父系数的绝对值与所有子系数绝对值的平均值,完成水印嵌入,结束当前流程。
参见图2,为本申请水印嵌入方法的第二实施例流程图:
步骤201:预先设置长度与树结构个数一致的密钥。
步骤202:获取像素为512乘以512的原始图像。
步骤203:对原始图像进行三级非冗余Contourlet变换,获得原始图像的低频子带信息和三级高频子带信息。
三级高频子带中第一级高频子带包含四个子带,第二级高频子带包含八个子带,第三级高频子带包含十六个子带。
非冗余Contourlet变换的主要优点是为图像获得了一个非冗余的多尺度和多方向的分解方式。
具体地,在每级Contourlet变换时都会获得三个高频子带,分别为LH、HL和HH子带。假设
是小波空间的一个正交基,则尺度空间
和
可以表示成:
其中,j为尺度,k=HL,LH,HH。将l
j-th级DFB应用到每个
上,则可得
个方向子带:
因此
图像首先分解为小波层,接着每个高频子带再通过DFB获得方向信息,经过变换后一个父系数对应四个子系数,一个父子关系结构对应一个树结构。
步骤204:将三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构。
步骤205:根据预先设置的密钥从树结构中选择用于嵌入水印的512个树结构。
步骤206:计算选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值。
假设原图和经Contourlet变换后被压缩图像的父系数分别记为P1和P2,其对应的四个子系数分别记为C1i和C2i(i=1,2,3,4)。
如果操作前|P1|≥mean(|C1i|)和操作后|P2|≥mean(|C2i|)成立,
或者,操作前|P1|<mean(|C1i|)和操作后|P2|<mean(|C2i|)成立,
则我们认为这个能量关系在JPEG压缩操作前后是不变的。
步骤207:判断水印的值,若水印的值为伪随机二值序列中的1,则执行步骤208;若水印的值为伪随机二值序列中的-1,则执行步骤209。
步骤208:增加父系数的绝对值直至所述父系数的绝对值大于所述所有子系数的绝对值的平均值,结束当前流程。
步骤209:减少父系数的绝对值直至所述父系数的绝对值小于所述所有子系数的绝对值的平均值,结束当前流程。
上述步骤207至步骤209可以按照如下方式进行:
当水印比特=1
如果|parent|≥|average|,
不执行其它操作;
否则
增加parent的值,使得|parent|≥|average|;
具体调节过程如下:
如果parent>=0
则parent=parent+(K1)*(|average|-parent);
如果parent<0
则parent=parent-(K1)*(|average|-|parent|);
当水印比特=-1
如果 |parent|<|average|
不执行其它操作;
否则
减少parent的值,使得|parent|<|average|;
具体调节过程如下:
如果parent>=0
则parent=parent+(K2)*(parent-|average|);
如果parent<0
则parent=parent-(K2)*(|parent|-|average|);
其中,K1和K2为预先设置的调节不可见性和鲁棒性之间的阈值。嵌入过程结束后,通过重构算法可以得到含水印的图。
参见图3,为本申请水印检测方法的第一实施例流程图:
步骤301:对图像进行三级非冗余Contourlet变换,获得图像的低频子带信息和三级高频子带信息。
步骤302:将三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构。
步骤303:根据预先设置的密钥从树结构中选择相应的树结构。
步骤304:计算选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值。
步骤305:通过比较父系数的绝对值和所有子系数的绝对值的平均值提取选择的树结构中水印的值。
步骤306:根据提取的水印与预先保存的原始水印之间的相关性判断图像中是否包含水印,结束当前流程。
参见图4,为本申请水印检测方法的第二实施例流程图:
步骤401:预先设置用于水印检测的阈值。
步骤402:获取像素为512乘以512的图像。
步骤403:对图像进行三级非冗余Contourlet变换,获得图像的低频子带信息和三级高频子带信息。
步骤404:将三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构。
步骤405:根据预先设置的密钥从树结构中选择相应的树结构。
步骤406:计算选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值。
步骤407:判断父系数的绝对值与所有子系数的绝对值的平均值,若不小于,则执行步骤408;若小于,则执行步骤409。
步骤408:提取树结构的水印的值为1,执行步骤410。
步骤409:提取树结构的水印的值为-1。
步骤410:计算提取的水印与预先保存的原始水印之间的相关性,获得相关性值。
步骤411:判断相关性值是否小于阈值,若是,则执行步骤412;否则,执行步骤413。
步骤412:确定所述图像中不包含水印,结束当前流程。
步骤413:确定所述图像中包含水印,结束当前流程。
上述水印提取的过程是水印嵌入过程的逆过程,将含水印的图做相同级数的WBCT变换,并利用密钥选出嵌入水印的树结构,通过比较树结构中父系数绝对值和四个子系数绝对值的平均值的大小关系可提取水印比特,即如果前者大于后者,则提取的水印比特为1,如果前者小于后则,则提取的水印比特为-1,对每个树结构重复上述过程,即可恢复所有的水印信息。
在进行水印检测时,可以采用Normalized相关性来确定作品中是否含有水印。如果相关性值NC值大于一个事先确定的阈值,则认为该作品中含有水印,否则不含有水印。NC值按如下公式计算:
其中,w为原始水印,
为提取水印。如果NC>=T,则作品中含有水印,否则不含有水印。阈值T的设置基于如下所示的误警概率:
根据经验值,Nw=512,T设为0.23,由此得到Pfp=1.03×10-7。
与本申请水印嵌入方法和水印检测方法的实施例相对应,本申请还提供了水印嵌入装置和水印检测装置的实施例。
参见图5,为本申请水印嵌入装置的实施例框图。
该水印检测装置包括:Contourlet变换单元510、树结构构成单元520、树结构选择单元530、绝对值计算单元540和水印嵌入单元550。
其中,Contourlet变换单元510,用于对原始图像进行三级非冗余Contourlet变换,获得所述原始图像的低频子带信息和三级高频子带信息;
树结构构成单元520,用于将所述三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构;
树结构选择单元530,用于根据预先设置的密钥从所述树结构中选择用于嵌入水印的树结构;
绝对值计算单元540,用于计算所述选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值;
水印嵌入单元550,用于根据所述水印的值调整所述父系数的绝对值与所述所有子系数绝对值的平均值,完成水印嵌入。
参见图6,为本申请水印检测装置的实施例框图。
该水印检测装置包括:Contourlet变换单元610、树结构构成单元620、树结构选择单元630、绝对值计算单元640、水印值提取单元650和水印检测单元660。
其中,Contourlet变换单元610,用于对图像进行三级非冗余Contourlet变换,获得所述图像的低频子带信息和三级高频子带信息;
树结构构成单元620,用于将所述三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构;
树结构选择单元630,用于根据预先设置的密钥从所述树结构中选择相应的树结构;
绝对值计算单元640,用于计算所述选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值;
水印值提取单元650,用于通过比较所述父系数的绝对值和所有子系数的绝对值的平均值提取所述选择的树结构中水印的值;
水印检测单元660,用于根据所述提取的水印与预先保存的原始水印之间的相关性判断所述图像中是否包含水印。
具体的,水印检测单元660可以包括(图6中未示出):预设阈值单元,用于预先设置阈值;相关性计算单元,用于计算所述提取的水印与预先保存的原始水印之间的相关性,获得相关性值;相关性比较单元,用于当所述相关性值不小于所述阈值时,确定所述图像中包含水印,当所述相关性值小于所述阈值时,确定所述图像中不包含水印。
通过以上的实施方式的描述可知,本申请实施例中对图像进行三级非冗余Contourlet变换,获得图像的低频子带信息和三级高频子带信息,将三级高频子带中第三级高频子带中的系数作为父系数,第二级高频子带中的系数作为子系数构成树结构,根据预先设置的密钥从树结构中选择用于相应的树结构,计算选择的树结构中父系数的绝对值和所有子系数的绝对值的平均值,根据水印的值调整父系数的绝对值与所有子系数绝对值的平均值,完成水印嵌入,或者通过比较父系数的绝对值和所有子系数的绝对值的平均值提取选择的树结构中水印的值,并根据提取的水印与预先保存的原始水印之间的相关性判断图像中是否包含水印。本发明通过采用非冗余Contourlet变换对图像进行变换,弥补了小波变换难以捕捉到二维图像的边缘信息的缺陷,因此提高了水印系统的鲁棒性。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。