APP下载

一种基于DCT变换的频域数字水印改进算法

2018-02-15胡高平魏佳汤艺

关键词:透明性数字水印人眼

胡高平,魏佳,汤艺

(1.91918部队,北京102300;2.91917部队,北京102300;3.中国传媒大学 信息工程学院,北京 100024)

1 研究背景

随着计算机通信网络和计算机技术的发展,媒体资源的信息化越来越普及。数字化技术使得媒体信息的存储,传输过程得到极大的简化。一方面数字媒体信息具有强大的可移植性、高效性、快捷性和准确性,但从另一方面来说,数字媒体资源极易被截取、篡改、制作盗版或侵权盗用内容,互联网上盗版电影、书籍、软件泛滥成灾,数字媒体的版权保护和身份鉴别成为一个亟待解决的问题。

因为多媒体数字资源,在提供给用户使用时,必须是非加密的,也就无法通过加密得到有效的保护。因此研究者寄希望于从另一个方向保护数字媒体版权,即信息隐藏研究,如何在公开信息中隐藏秘密信息。数字水印技术是信息隐藏研究领域的重要分支和研究方向,它的基本应用领域是防伪溯源、版权保护、隐藏标识、认证和安全隐蔽通信。[2]

数字水印技术,就是指通过特定的算法将一些标志性信息(水印)嵌入到宿主数据当中[2]。当多媒体数字信息被非法复制,非法篡改时,再通过特定的水印的提取算法提取出水印信息,从而验证版权的归属或载体信息的完整性,保障版权者的合法权益和媒体内容的完整正确性。我们也可以通过水印信息,发现数字多媒体资源是从何处泄露,从而防止泄露再次发生。数字水印应当能根据应用场景的不同携带不同的版权信息嵌入任何多媒体数据中。数字水印技术对原始文件的保护是不可见的[15],在加密传输并加密后,水印数据不会消失,能够进一步保护数字媒体版权,且具有一定的鲁棒性,不会轻易地被消除。因此,数字水印技术的研究对保护数字媒体版权十分重要。

2 传统的数字水印算法介绍

传统的数字水印算法主要有空间域数字水印算法与频率域数字水印算法,除此之外,还有压缩域数字水印算法与生理模型算法等。空间域数字水印算法将水印信息直接嵌入到图像中,流程简单、数字水印的提取简单。频域法在图像的变换域中嵌入水印数据,鲁棒性强,且水印信息不易被捕捉。

2.1 LSB算法

LSB(Least Singificant Bits)算法是最经典的空域水印算法之一。算法的原理是将灰度图像切分为位平面图像,在较低的位平面上嵌入水印信息。例如在最低位平面上嵌入一个比特的水印数据,该像素的整体灰度值变化仅为1,在最理想情况下仅占原像素灰度值的1/255,人眼几乎无法察觉任何变化。

下面给出256灰度Lena图像的位平面图。

图1 灰度图像的位平面图示例

可以看出,低位平面几乎为全黑,表明低位平面的灰度值很低。

在嵌入水印时,首先考虑嵌入水印数据的位数,嵌入的位数越多,对图像透明性的影响就越多。一般为了不影响原图像的观看,我们可以将水印嵌入最低的1位。以嵌入原始图像的最低位为例,设X(i,j)为原始图像最低位对应位置的比特值,W(i,j)为待嵌入二值数字水印图像对应位置的比特值,S(i,j)为嵌入后含水印图像对应位置的值。

(1)

LSB 算法原理简单,实现便捷,透明性好。它的缺点是水印数据位于最低位上,数据量较小,很容易在滤波,裁剪,量化中丢失信息。因为同样的原因,在噪声攻击下,也很难提取出原有的正确水印信息。另一方面,因为嵌入方法缺少变化,攻击者很容易窃取和篡改水印信息。

2.2 基于DCT的数字水印

空域的数字水印算法实现简单,但同样有不少缺点,目前人们正在研究的数字水印算法更多是基于变换域的,而这些变换域尤以频域为主,它们很好地弥补了空域算法的不足。频域数字水印算法的原理是将水印数据嵌入原始图像的频率域中,提取水印时先将含水印图像转换至频域,再采用相应操作提取水印数据。

离散余弦变换是变换核为余弦函数的变换。DCT除了具有一般的正交变换性质外,它的变换阵的基向量能很好地描述人类语音信号和图像信号的相关特征。[16]所以,离散余弦变换在图像,语音信号的变换中,被认为是一种准最佳变换。基于DCT变换的数字水印算法是目前数字水印技术研究的重要方向。

8×8的二维DCT变换公式(2):

(2)

二维DCT正变换

二维DCT反变换

u,v=0,1,…,7
x,y=0,1,…,7

图2 基于DCT的数字水印嵌入和提取的模型

Cox等人于1995年提出基于全局 DCT 变换的扩频水印算法[7],这是早期最著名的变换域数字水印算法之一,做法为将整个载体图像进行二维DCT变换,水印信息为一个长度为n满足正态分布的随机序列,将载体图像的DCT系数最大的n个值用来携带水印数据。含水印数据的DCT系数P确定如下:

P=X(1+aW)

(3)

其中W是水印数据;a是尺度因子,代表水印嵌入强度。

之后对增加了水印数据的DCT系数矩阵进行二维DCT逆变换,并把高于255的灰度值进行截断,就获得了含水印的图像。将n 个最大的 DCT 系数在嵌入水印前的值及其所处的位置将作为密钥发送给接受者,以供提取水印使用。

3 改进算法

传统的频域水印法嵌入水印数据的方式缺少变化,不能自动适应图像的特点,不能在性能上取得较大提升,透明性受到了限制。本文提出了一种基于DCT变换的改进算法,利用人眼的视觉特性,结合图像的纹理复杂度,自动计算每个子块中嵌入水印数据的位数,使得人眼较不敏感的子块中能嵌入更多水印数据,且利用中频系数进行嵌入,在透明性与鲁棒性之间取得折中。同时,不直接嵌入原始水印,而是先对数字水印数据进行置乱。因为嵌入方法的自适应性与水印的置乱操作,算法的安全性较好。

3.1 图像分块进行DCT变换

2.2中提到的扩频数字水印算法是将整个原始图像进行频率变换并在频率域嵌入水印,但为了更高效以及更有规律地嵌入水印,改进算法基于分块进行。首先把原始图像划分为标准大小的子块,分别在每个子块中嵌入水印数据。提取水印时再分别从这些子块中提取相应的水印数据,再组合为原始水印数据,使得水印信息能够均匀分布。

图3 基于分块思想嵌入水印的过程

3.2 根据人眼的视觉特性改进水印的嵌入方式

在嵌入水印时,需要考虑原始图像自身的特性。DCT 具有很强的“能量集中”特性,大多数图像信号的能量都集中在 DCT 的低频部分。[6]DCT系数矩阵的左上角是直流系数,决定了图像的亮度,水印图像嵌在这里,算法的鲁棒性最强。

人眼对图像的低频部分更为敏感,对高频部分并不十分敏感,但是嵌入在低频部分的水印在受到噪声攻击时的鲁棒性更强,为了解决这个矛盾,我们需要充分考虑人眼的视觉特性,一方面要保证算法的鲁棒性,一方面尽可能将水印嵌入人眼视觉不敏感的区域,以提高水印的透明性。因此,折中考虑,选择在中频区域嵌入水印,并且在人眼更不敏感的子块嵌入更多水印。

文献[3]使用了一种有效的水印算法利用图像的纹理特性来确定人眼对图像各处的敏感程度,并根据敏感度决定各处嵌入水印的强度。该方案如下所述。

图像的灰度值矩阵进行频域变换之后,其频率最低的系数值为直流系数(DC),可以用来衡量图像的亮度。DC系数对人眼视觉影响很大。我们可以利用图像矩阵的方差来近似估计其纹理复杂度,方差越大,则图像的纹理可能越复杂,嵌入水印的透明性越强[1]。定义Y综合反映图像的亮度与纹理特征:

Y=Lvariance+LD/a

(4)

Lvariance为图像的方差,LD为图像的DC系数,a为一个经验值。

在将图像分块之后,计算每一个分块的Y值,当Y值较大时,可以考虑嵌入更多的水印信息,反之,则嵌入较少的水印信息。

3.3 利用置乱技术进行改进

水印图像置乱的主要目的在于分散像素分布,使原始水印图像转化为更接近噪声的图像,达到抵抗剪切攻击的目的,因此置乱算法应当简单有效。这里选择Arnold置乱算法。我们可以将原始水印进行置乱后嵌入载体图像,提取了水印数据后再进行相应的反置乱操作得到原始的水印图像。

Arnold变换可以改变图像中像素的相互位置关系,降低图像自身的相关性,达到加密的目的,在多媒体信息加密中应用广泛。下面给出Arnold变换的数学公式,其中N为图像矩阵的长宽,a,b为常数。

(5)

(6)

一般来说需要对原始水印图像多次置乱才能达到较为理想的效果。[10]多次置乱操作使得图像原有的有意义的信息得到隐藏,置乱后的图像看起来就像是噪声图像。采用何种置乱方法,置乱了多少次都可以作为水印提取的秘钥,进一步加强了安全性。

图4 原始水印

图5 将原始水印置乱10次获得的图像

3.4 算法具体实现

3.4.1 水印的嵌入

(1)设原始图像为I={i(x,y),1≤x,y≤N},i(x,y)为原始图像在(x,y)处的像素灰度值,0≤i(x,y)≤255,N为原始图像的长宽(设原始图像矩阵为方阵)。设水印图像为S={s(x,y),1≤x,y≤M},M为水印图像的长宽(设水印图像矩阵为方阵),经过我们预先的处理,水印图像矩阵的值只能为0或1。N为M的正整数倍。

(3)对水印数据进行置乱操作,这里采用较为简单但有效的Arnold置乱,将原始水印图像转变为近似为白噪声的图像。设置乱后的水印图像矩阵为S′。

根据LD,Lvariance计算该分块的Y值。计算完所有分块的Y值后,将所得到Y值降序排列,根据排序结果将所有子块分组为k组Z1,Z2,Z3,…,Zk,每组中的子块个数相等。每个子块分别嵌入bi(1≤i≤k)位水印比特数据,同时要满足b1+b2+…+bk=水印数据总位数。bi可以人为确定,也可以通过算法自动获得,下面给出一种自动确定bi的算法[1]:

嵌入水印的流程图6。

图6 改进算法水印嵌入流程图

3.4.2 水印的提取

(3)根据接受到的Arnold置乱的相应参数,将S′进行反置乱,得到真正的水印图像S。

3.5 改进算法的实验设计与结果分析

所用图片:

(a)原始载体图像

(b)嵌入的水印图像图7

这里通过对含水印图像进行各种攻击测试,观察数字水印的提取效果,测试改进算法的性能。

3.5.1 透明性测试

(a)嵌入水印后的图片

(b)提取出来的水印图像图8

嵌入水印的图片与原图的峰值信噪比PSNR=41.7341,水印数据提取错误比特的比例BER = 0。可以看出,在未遭受攻击时,该数字水印算法的透明性非常好,几乎看不出嵌入水印后的图像与原始图像的差别,且水印能够完全正确地提取出来。因为改进算法在嵌入水印时考虑了人眼特性,并未统一将水印嵌入到图像频域矩阵的直流分量中,因此含水印图像的块与块之间不会出现明显的亮度差异,图像不会有强烈的分块感,且画面的整体亮度没有太大改变。因此,透明性得到了很好的提升。

3.5.2 鲁棒性测试

(1)椒盐噪声攻击

表1 在椒盐噪声攻击下提取出的水印图像

(2)高斯噪声攻击

表2 在高斯噪声攻击下提取出的水印图像

(3)JPEG压缩攻击

表3 在JPEG压缩攻击下提取出的水印图像

(4)旋转攻击

表4 在旋转压缩攻击下提取出的水印图像

续表

(5)乘性噪声

表5 在乘性噪声攻击下提取出的水印图像

(5)剪切攻击

(a)含水印图像去掉左上角

(b)提取出来的水印图像图9

错误比特的比例BER = 0.1931

(a)含水印图像去掉左半部分

(b)提取出来的水印图像图10

错误比特的比例BER =0.3088

3.5.3 实验结果分析

综合上述攻击测试,可以看出该数字水印算法的透明性优于传统的频域水印算法,但鲁棒性不是特别理想。在应对椒盐噪声,旋转攻击,乘性噪声时效果较好,但在JPEG压缩攻击和高斯噪声攻击下表现得特别差,几乎无法提取出原有的水印信息。但总的来说,改进算法的鲁棒性还是优于传统的空域水印法。

因为采用了水印置乱技术,该算法应对裁剪攻击的性能较好,甚至在损失了一半图像信息的情况下,仍能提取出水印图像的大致形状,且攻击者在不知道相应秘钥的情况下,很难获取水印信息,改进水印算法的保密性较强。

4. 问题与展望

改进水印算法牺牲了一部分鲁棒性,以获得较好的透明性,可视作一种折中的选择。它的核心思想是基于人眼视觉特性,通过自适应算法自动计算每个子块嵌入的水印数据位数,使得我们能够最大限度地利用图像本身的特点,在使水印算法的透明性获得较大提升的前提下,也尽可能保证算法的鲁棒性。

但算法目前来看还有不少问题,最主要的问题是算法的鲁棒性仍然不能使人满意,在部分种类的噪声攻击下几乎无法使用。同时,期望算法的透明性与传统空域法相比,的确还有一些差距。

未来可能进行的改进,主要有以下两个方向:

(1)更加深入地研究人眼的视觉特性,在图像的频域矩阵中嵌入水印数据时考虑更多的相关参数,以建立更适合的自适应嵌入水印方法,以达到欺骗眼睛的效果。

(2)考虑利用机器学习,深度学习等技术,使用大量的图片来训练嵌入水印算法的模型,使算法的性能更优,能适用的情况更广泛。

猜你喜欢

透明性数字水印人眼
日本建筑师蛇形画廊展馆的透明性特征探析
基于遗传优化的自然语言文本数字水印方法
透明性理论与其在建筑设计中的体现
基于网屏编码的数字水印技术
人眼X光
闪瞎人眼的,还有唇
数字水印技术及其在电力系统中的应用
一种基于三维小波变换的鲁棒视频水印方案
从实践中认识水性坦培拉
看人,星光璀璨缭人眼