基于DCT变换的频域视频水印在空域中实现的性能分析

2014-03-13 06:10张能欢于水源
关键词:数字水印余弦空域

张能欢,于水源

(中国传媒大学计算机学院,北京 100024)

1 引言

随着网络的日益普及,多媒体信息的传播变得越来越便利,由此而带来的数字音视频产品的版权保护问题也变得越来越重要。自1993年,Tirkel等人[1-3]第一次提出数字水印的概念开始,数字水印技术就成为数字产品版权保护的重要手段。

数字水印技术主要分为空域水印算法和变换域水印算法。空域水印算法是指将水印信息直接嵌入到图像最不重要的像素位上。该算法由于是直接在空域信号上施加运算,因此具有实现简单,速度快的优点,但是,由于该类算法一般都是将水印信息嵌入到图像最不重要的像素位上,因此抵御编码、滤波和图像量化等攻击的能力较弱,水印的鲁棒性较差。变换域算法是指通过DCT或DWT等运算,将图像数据从空域转到变换域上,再在变换域的图像数据上嵌入水印,最后再将含水印的频域数据转回到空域。其中最常用的是基于DCT变换的频域算法。变换域算法可以将水印信息的能量分散到整个载体信息信号上,因此具有较好的鲁棒性,并且,由于算法是直接施加在变换域的数据上,因此对于分析水印抵御变换攻击的能力更简单直观。但由于需要进行空域和变换域的相互转换,所以实现较复杂,时间复杂度也较高。

对于数字音视频产品来说,抵御重编码、变换攻击,以及水印嵌入速度是其水印技术的重要指标。因为,数字水印就是用来保护版权信息的,当数字产品经历有意或无意的攻击之后,数字水印应该仍能被检测并提取出来,且提取的水印信息是可识别的,从而达到版权保护的目的;同时,水印容量是与水印嵌入速度息息相关的,当水印嵌入速度快,则有利于提高水印容量,且可循环嵌入水印。另外,重要的是,提高水印的嵌入速度,可以实现对音视频的实时处理。因此,理想的视频水印嵌入方法应同时具有频域算法的强鲁棒性和空域算法的较低时间复杂度。这样,自然的想法就是,在频域中设计并讨论算法性能,然后在空域中实现。那么,这样的水印算法的性能是怎样的?

本文通过分析频域水印算法的基本原理,以及频域与空域的变换关系,建立了频域水印算法与空域的变换关系,根据该变换关系,介绍了在空域上实现变换域水印的基本原理。最后通过matlab仿真在两个该类水印算法的基础上,测试了该类方法的部分性能,实验结果表明视频频域水印的空域实现方法具有很好的有效性。

2 基于DCT变换的水印算法在频域和空域的关系

在变换域水印算法中,最常用的是基于离散余弦变换(DCT)的水印算法,DCT变换是数字音视频处理中最常用的算法。

2.1 基于DCT变换的频域水印算法的原理

离散余弦变换[4],简称 DCT,是与傅里叶变换相关的一种变换,该变换只在实数域中进行。二维离散余弦变换,经常被应用于信号处理和视频图像处理中,这是由于离散余弦变换具有很强的“能量集中”特性:大多数的自然信号的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近马尔可夫过程的统计特性时,离散余弦变换的去相关性接近于K-L变换(Karhunen-Loeve Transform)的性能[5]。

离散余弦变换(DCT)为

逆离散余弦变换(IDCT)为

X表示空域上的信号数据,Y表示经过DCT变换后的变换域上的信号数据。

基于DCT变换的频域水印算法的基本流程是将图像分块,一般分为8×8或16×16的子块,然后对每个块进行DCT变换,接着采用某种水印算法嵌入水印,最后再将含水印的块数据进行IDCT变换,这样最终完成水印嵌入。

基于DCT变换的水印嵌入算法的流程如下:

图1 基于DCT变换的水印嵌入算法流程图

DCT变换将信号从空域转到频域,我们在频域上进行水印嵌入,接着IDCT变换将信号从频域转到空域,水印信息的能量在空域上被分散开来。根据上述公式,我们可以看出这个过程经过两次变换(DCT和IDCT)的,这是其主要的时间开销[6],甚至可能占用了整个水印嵌入过程的80%的时间。本文提出一种方法,通过直接将水印的分散结果放到空域的载体信息上,从而大大减小了时间上的损耗,同时又不影响水印算法的性能。

2.2 基于DCT的水印算法在空域中实现的原理

从水印数据与信号数据的运算关系上,水印嵌入算法可分为两种:加性嵌入和乘性嵌入,公式分别如下

对于一个具体的加性频域水印算法,∂值是确定的。我们用yi表示原始空域的载体图像数据;Yi表示频域的载体图像数据,即经过DCT变换后的yi;Wi表示频域的水印数据;wi表示空域的水印数据,即wi是经过IDCT变换后的表示频域嵌入水印的载体图像数据,即等于表示含水印的空域载体图像数据,即经过IDCT变换后的

水印算法的步骤可用公式表示如下:

1)yi→Yi(DCT,空域变换为频域)

由于DCT和IDCT都是线性变换,所以上述的步骤3)等价于下面的三步:

4)Yi→yi(IDCT)

5)Wi→wi(IDCT)

从上述公式可以得出:经过DCT和 IDCT变换在频域嵌入加性水印,等价于原始空域的载体图像数据加上经过IDCT变换得到的空域的水印数据。因此,对于变换域水印Wi,我们只要事先计算出wi,即IDCT(Wi),就可以直接在原始图像上施加wi,其水印性能是等价的。但是省略了两次DCT变换运算。

同理对于乘性水印,∂值确定后,公式表示如下:

则水印嵌入等价于:

以上就是基于DCT的变换域水印算法在空域中实现的基本原理。

在计算水印即wi时,如果涉及到的Yi中的数据较少,可以采用快速算法,只计算涉及到的部分值;如果需要Yi所有的值,则频域水印的空域实现方法不能降低时间复杂度,这是该方法的局限性。

3 频域水印在空域中实现的系统

水印系统一般分为三个部分,即水印生成、水印嵌入和水印提取[7],根据上节提出的上述思想,我们设计了水印嵌入算法。

3.1 水印生成

水印信息通常会被变换成一串0和1的伪随机序列,然后根据水印算法得出0和1对应的W。W的生成有两种方式,一种是与载体图像数据无关,另一种是与载体图像数据相关。

与载体信息无关的W,仅与01的伪随机序列相关,根据01,即可确定对应的W。

与载体信息相关的W的具体值是,先将载体信息进行DCT变换,然后根据DCT变换后的数据,计算出W的值。在具体实现时,可以使用简化的DCT,不必做全部数据的DCT变换,只将需要的值计算出来,根据计算出来的值,获得W。

将上面计算出的W,进行IDCT变换得到w,留待水印嵌入时使用。

3.2 水印嵌入算法

将载体图像y分为互不覆盖的d×d子块,然后按嵌入算法,分析出每块需要嵌入的Wi,直接将IDCT后的wi数据和子块数据相加,得出新的子块数据,即完成水印嵌入。

3.3 水印提取算法

水印提取可分为盲提取和非盲提取两种方式。

盲提取过程,就是将载体图像y分为互不覆盖的d×d子块,然后按水印嵌入算法的逆过程进行水印提取。

非盲提取,需要原始的图像y和提取水印的图像y',将它们都分为互不覆盖的d×d子块,将对应的子块数据进行差值计算,将得到的差值进行DCT变换,DCT变换后的数据即为W,根据W,可得出最终的水印01序列。

盲提取和非盲提取都需要经过一次DCT变换,以及提取出的水印信息的处理,时间开销基本相同。但盲提取由于不需要原视频的参与,从而适用性更广。

4 实验及分析

实验采用512×480的pens图像作为载体图像,64×60的CUC二值图像作为水印图像,采用matlab编程实现。实验实现了下面两种水印算法,并分别通过频域实现和空域实现,对比它们提取的水印效果和所用时间。

算法一[8]:将水印图像的像素点取值0和1分别对应伪随机序列k1和k2,k1和k2是1×8的矩阵,且相关性小。根据嵌入的水印信息0或1,选择k1或k2,嵌入到载体图像中。提取水印时,将提取出的序列与k1和k2进行相关性大小的计算,从而判断嵌入的是k1或k2,进一步确定水印信息0和1。

算法一的频域实现方法:将载体图像分为8×8互不覆盖的块,对每块进行DCT变换,然后选取处于中频位置的8个系数,按嵌入的水印图像的像素点取值,选择k1或k2与选取的中频系数相加,从而实现水印的嵌入。

图2 实验采用的载体图像和水印图像

算法一的空域实现方法(频域水印的空域实现方法):首先将1×8大小的k1和k2按与块相加的位置扩大到8×8的大小,没值的区域用0填充,然后对其进行IDCT变换,重新记为k1和k2。接着将载体图像分为8×8互不覆盖的块,按嵌入的水印图像的像素点取值,选择k1或k2与该块进行相加,完成水印嵌入。

图3 实验选取的8个中频系数

下图4分别表示通过频域和空域嵌入水印后的图像效果,以及提取出的水印图像的效果。

算法二[9]:将载体图像分为8×8互不覆盖的块,对每块进行DCT变换,选取两个系数,通过改变这两个系数的大小关系,从而嵌入水印。

算法二的频域实现方法:将载体图像分为8×8互不覆盖的块,对每块进行DCT变换,然后选取中频的两个系数记为b1和b2,按下面的规则进行水印嵌入:

图4 算法一含水印图像和提取的水印

If嵌入1则b1>b2;

If嵌入0则 b1<b2。

如果不满足上面的关系,则交换b1和b2的值或将b1加上一值,使其满足上述关系。接着对每块进行IDCT变换,完成水印的嵌入。

算法二的空域实现方法(频域水印的空域实现方法):将载体图像分为8×8互不覆盖的块,采用快速DCT算法,只算出b1和b2的值,根据上述的嵌入准则,得出t1和t2,使b1+t1和b2+t2满足上述关系,然后将由t1和t2组成的8×8的块进行IDCT变换,将变换后的值与载体图像对应的块数据进行相加,完成水印嵌入。

下图5分别为通过频域和空域嵌入水印后的图像效果图,以及提取出的水印图像,其中b图中提取的水印图像噪声点增多,是由于当b1和b2差值很小,根据嵌入准则得出的t1和t2也很小,这样将由t1和t2组成的8×8的块进行IDCT变换再取整,会损失了数据,从而导致提取不到水印信息,取整操作是因为图像数据都是整数表示。

表1为算法一和算法二分别对pens图像,采用频域实现和空域实现的耗时,以及嵌入水印后的载体图像的PSNR,以作对比。

图5 算法二含水印图像和提取的水印

表1 采用频域嵌入和空域嵌入的耗时以及PSNR

最后,为了测试频域水印在空域中实现方法的性能,采用800幅图像,不同场景,不同大小,对以上两种算法进行了实验,结果统计见图6。

图6中,横坐标表示图像数量,每个单位为80幅,纵坐标表示算法一和算法二通过频域和空域实现所花费时间的差值占频域时间的比率。由下图可以看出,差值还是很明显的,但具体能减少多少时间消耗,根据不同的频域水印算法有所不同。图6的结果显示,在800幅测试图像中,时间复杂度的降低比例是稳定的,这表明,该类方法具有较好的视频内容适应性,即,受视频内容影响小。

通过在空域实现频域的水印算法,对于PSNR的影响,根据算法的不同,产生的影响也不同。在本次实验中,算法一通过空域实现,对PSNR完全没有影响。算法二通过空域实现,对PSNR有一定的影响,原因在上面已经进行了说明,下图是算法二的频域实现与空域实现的PSNR的差值。由图7可见,频域算法的空域实现的PSNR变化最大不超过±1.5dB。因此,空域实现具有与原频域实现几乎同样的性能。

图6 800幅图像的统计结果图

图7 算法二频域实现与空域实现的PSNR值差

5 结论

通过对频域水印算法的分析,首先得出水印W,然后将经过逆离散余弦变换的W与载体信息相加,从而嵌入水印。最后通过对较多图片仿真实验的时间复杂度和峰值信噪比的计算,我们看到,频域水印的空域实现方法可以较大幅度减小算法的时间消耗,同时水印的性能几乎不变,因此具有较好的可行性。

算法二中PSNR有所下降,是由于在具体实现时,对IDCT后的水印数据进行了取整,导致水印数据有所偏差,影响到图像数据,并非是算法本身的问题。

[1]Schyndel R G,Tirkel A Z,and Osborne C F.A digital watermark[C]//Proc Intl Conf Image Processing Austin,TX,1994,2:86 -90.

[2]Cox I,Kilian J.Secure spread spectrum watermarking for multimedia[J].IEEE Trans on Image Processing,1997,6(12):1673 -1687.

[3]Bami M,Bartolini F,Capellini V,et al.A DCT -domain system for robust image watermarking[J].Signal Processing,1998,66(3):357 -372.

[4]N Ahmed,T Natarajan,and K R Rao.Discrete cosine transform.IEEE Trans Comput,1974,C(23):90-93.

[5]K R Rao and P.Yip,Discrete Cosine Transform:Algorithms,Advantages,Applications [J].Academinc Press,1990.

[6]沈兰荪,卓力,田栋等.视频编码与低速率传输[M].北京:电子工业出版社,2001.

[7]曾牛,程胜利.数字水印技术研究[J].交通与计算机,2004,22(6):41 -44.

[8]何美娟.DCT域图像数字水印嵌入技术的研究[D].北京:北京邮电大学光通信与光电子学研究院,2009.

[9]席敏超,袁开国,伍淳华.基于DCT系数相对大小的数字图像水印算法[J].北京:北京邮电大学信息安全中心,2012.

猜你喜欢
数字水印余弦空域
旋转变压器接线故障分析法的研究
基于遗传优化的自然语言文本数字水印方法
我国全空域防空体系精彩亮相珠海航展
空中交通管理中的空域规划探讨
基于网屏编码的数字水印技术
两个含余弦函数的三角母不等式及其推论
数字水印技术及其在电力系统中的应用
一种基于三维小波变换的鲁棒视频水印方案
实施正、余弦函数代换破解一类代数问题
浅谈我国低空空域运行管理现状及发展