变换域内利用SVD的音频数字盲水印算法
2021-06-16彭飞,刘亮,高勇
彭 飞,刘 亮,高 勇
(四川大学 电子信息学院,四川 成都 610065)
0 引言
随着互联网和计算机技术的飞速发展,通过网络传播多媒体变得越来越流行,也变得越来越容易。在便利了生活的同时,多媒体的数据也能十分轻易地通过各种音频编辑软件实现篡改。因此对创作者的版权保护[1]变得至关重要,解决该问题的一种有效方法即是数字音频水印技术[2-4]。通过使用数字水印,版权信息被嵌入到多媒体数据中,与原始数据相比几乎没有任何差异,更为重要的是,嵌入信息不能够被删除。通常,音频水印系统具有多个性能指标,从信号处理的角度出发,3个重要指标是透明性、鲁棒性和水印容量[5-8]。由于将水印嵌入到音频数据中会导致对音频数据的修改,因此可能导致听觉质量下降。当然,希望人耳听觉系统(Human Audio System,HAS)无法察觉到这种变化,通常情况下,水印数据的信噪比只要高于20 dB,HAS就不会感知到嵌入的水印,可以轻松实现高透明性。但是,水印信号很容易受到各种攻击,使得嵌入的水印遭到破坏。因此,水印系统应该具有高鲁棒性,能够抵御各种攻击。尽管如此,透明性和鲁棒性本质上是相互冲突的,在二者之间必须进行权衡。除此之外,由于水印容量通常取决于应用目标,所以只要采用的水印方案能提供足够的嵌入空间,就可以不用考虑。
在数字音频水印中,提出了大量的方案,主要可以分为两大类:时域技术和变换域技术。在时域技术中,最流行的技术是最低有效位(Least Significant Bit,LSB),它是基于原始样本的LSB位置的修改[9-10]。尽管时域水印技术易于实现并且成本低,但在受到有意或无意的音频信号处理时,鲁棒性难以得到保证。现有的结果表明,相较于时域技术,变换域技术可以更好地抵抗噪声、有损压缩和常见的音频处理。文献[11]提出了一种基于小波熵(Wavelet-based Entropy,WBE)的自适应音频水印方法,该方法将离散小波变换(Discrete Wavelet Transformation,DWT)的低频系数转换为WBE域。文献[12]提出了一种基于能量选择的DCT域音频数字水印算法,在DCT域利用能量算法来嵌入水印。在变换域内,不同的嵌入和提取规则也会对水印算法的性能造成影响。为了在透明性和鲁棒性上都能有较为出色的表现,本文提出了一种基于DWT和Singular Value Decomposition(SVD)的音频数字水印算法。算法一方面通过局部最大值找到音频的最佳嵌入位置,另一方面在3个能量最大的音频段中嵌入同一行水印,能够有效提高算法的鲁棒性。
1 理论基础
1.1 离散小波变换
离散小波变换是一种特殊的线性变换,可以将信号做多尺度细化,最终做到高频部分时间细化,低频部分频率细化[13]。其中小波是表示信号的基本标识,它们是由一个称为母小波的单个公共小波通过扩张和缩放产生的。
小波基函数是由基本小波经平移得到,若ψ(x)表示基本小波,则形成的一组小波基函数{ψa,b(x)}表示为:
(1)
式中,a为缩放因子,反映指定基函数的缩放尺度;b为平移因子,反映了沿x轴平移的尺度。
对于函数f(x)以小波ψ(x)为基的连续小波变换表示为函数f(x)和ψa,b(x)的内积:
(2)
对于其逆变换可以定义为:
(3)
为了减小因a和b带来的计算量过大的问题,通常采用DWT,即对尺度和平移参数离散化。令参数a=2-j,b=k2-j,j,k∈Z,对应的离散小波可以定义为:
(4)
通常使用ψj,k(t)表示ψ2-j,k2-j,即:
(5)
则离散小波ψj,k(t)对应的DWT为:
WTf(j,k)=
(6)
1.2 奇异值分解
设D是一个m×n的复数矩阵,则D做SVD分解后为:
D=U∑VT,
(7)
式中,
∑包含从大到小排列的奇异值,σ1≥σ2≥…≥σs≥0;U=[u1u2…um],V=[v1v2…vn]分别代表左、右奇异矢量的正交矩阵。
对于音频信号而言,它是关于时间的一维信号,可以假定D是一个1×(n1×n2)的行矩阵,把D分块成n1个1×n2处理,即:
D=[D1D2…Dn1]。
(8)
对每个小数据块Dk(1≤k≤n1)做SVD分解,Dk可以表示为:
Dk=Uk∑kVkT=
(9)
1.3 局部最大值追踪算法
根据人耳听觉系统的掩蔽效应可知,在短时能量高的部分藏水印可以更好地隐藏水印,且为了使数字音频水印在受到攻击时仍能有效提取出水印,选择将水印嵌入到短时能量较大的区域[14]。短时能量的计算公式如下:
(10)
式中,Xk(i)表示的是第k帧音频片段的第i个采样点;n为帧长。当Ek大于设定的阈值时表示该段为水印嵌入段。首先找到在该段内的最大值所在位置,记为m,选取长度为L1的音频做水印嵌入,且n≥L1,并对m所在的周围区域[p1,p2]内一共L1个样本点做嵌入操作。记q1=floor(L1/3),q2=floor(2×L1/3),floor表示向下取整数,根据最大值点m在该音频段中所在的位置,可以分3种情况:
(1) 若m≤q1,表示最大值m所在位置与该段音频的起始位置相近,因此,嵌入位置设为p1=1,p2=L1。
(2) 若m≥q2,表示最大值m所在位置与该段音频的终点位置相近,因此,嵌入的位置设为p1=n-L1+1,p2=n。
(3)若q1 水印嵌入的过程示意如图1所示。载体音频信号为A={a(t),0≤t≤L},L为音频长度。嵌入步骤如下: (1) 对音频信号按照水印信息的行数K1进行均匀分段,则每段音频An(1≤n≤K1)含有N=floor(L/K1)个数据。因此,长度为Ar=K1×N用于嵌入水印,长度为Aq=L-K1×N不做水印嵌入。 (2) 在K1个音频段内再分别均匀分成5段,根据式(10)计算每段音频的短时能量,并按照由大到小的顺序,取前3段音频用作音频嵌入帧,分别记为An,1,An,2,An,3。 (3) 根据局部最大追踪值算法,分别确认An,1,An,2,An,3的最佳嵌入位置[pi,1,pi,2](1≤i≤3),嵌入长度为L1。 (4)对[pi,1,pi,2]中的数据做三级小波分解,取第三级高频小波系数cD1,根据水印长度K2进行均匀分段,每段音频audio(i)(1≤i≤K2)长度为L2=floor(L1/K2),按照1.2节原理对audio(i)进行奇异值分解,得到长度为1×L2的矩阵Si和1×1的矩阵U以及L2×L2的矩阵V,根据式(11)和式(12),对Si(1,1)进行量化处理,以此嵌入1 bit二进制水印: (11) (12) 若奇偶性不满足上述规则,则执行bb=bb+1加以修改,并重构Si(1,1)记为S′i(1,1),再根据式(13)重构数据段: audio′(i)=US′iVT。 (13) 图1 水印嵌入过程示意Fig.1 Schematic diagram of watermark embedding process (5) 在audio′(i)上重复执行此操作即可完成一行水印的嵌入,并且由于在An,1,An,2,An,3上嵌入的是相同的一行水印,采用大数原则可以提高算法的鲁棒性。 (6) 对嵌入水印后的小波系数进行IDWT得到携密音频段A′n,重复同样方法在An的K1段上嵌入K1行1×K2的水印数据。 (7)按顺序对A′n进行连接即完成了水印的嵌入。 提取的过程示意如图2所示。 (1) 对携密音频A′按照嵌入时相同方法均匀分段,每段音频记为A′n(1≤n≤K1),则一共分成了K1个段。 (2) 在K1个音频段内再分别均匀分成5段,根据式(10)计算每段音频的短时能量,对这5段音频的短时能量大小按照由大到小的顺序,取前3段音频作为水印的音频载体帧,分别记为A′n,1,A′n,2,A′n,3。 (3) 根据局部最大追踪值算法,分别确认A′n,1,A′n,2,A′n,3的水印嵌入的所在位置[p′i,1,p′i,2](1≤i≤3),长度选择为与嵌入时相同的L1。 (4) 对[pi,1,pi,2]中的数据做三级小波分解,取第三级高频小波系数cD1再做均匀分段,cD1根据水印信息一行的长度K2对cD1进行均匀分段,每段音频audio(i)(1≤i≤K2)长度为L2=floor(L1/K2),按照1.2节原理对audio(i)进行奇异值分解,得到K2个长度为1×L2的矩阵S′i。 (5)计算S′i(1,1)与量化步长a的比值,根据式(14)和式(15)即可提取出K2bit水印: (14) (15) (6)从A′n,1,A′n,2,A′n,3三者分别提出K2bit水印,再根据式(16)即可确定从A′n中提取出的K2bit水印。 (16) (7)重复上述操作,得到K1×K2的二进制水印矩阵。 图2 水印提取过程示意Fig.2 Schematic diagram of watermark extracting process 实验中,音频载体为从新闻联播的人声对话中任意选取的多段人声对话,每段音频的时长大约在72 s左右,采样率为44.1 kHz,量化位数为16 bit。为了更好地观测对比原始水印和提取的水印差异,选择用一张64 pixel×64 pixel大小的二值图片作为水印,如图3所示。An,1,An,2,An,3中的嵌入长度L1=4 096,量化步长a=0.20。 图3 原始水印图片Fig.3 Original watermark image 根据水印嵌入原理,仿真实验中,把音频载体均匀分成了64段,并且每一段嵌入了64 bit的水印,每一段嵌入64 bit的二进制信息,因此此时的隐藏容量为64×64 bit/72 s=56.89 b/s。 透明性主要从客观上进行评价,客观上是通过信噪比(Signal Noise Ratio,SNR)评判,SNR计算如式(17)所示。其中s(t)和s′(t)分别表示时域下的原始音频和携密音频: 。 (17) 表1给出了不同载体下本文提出方案的SNR,并与文献[11-12]提出的音频数字水印方案的SNR做比较。根据国际唱片业联合会(International Federation of the Phonographic Industry,IFPI)规定,携密音频SNR需要大于20 dB。 表1 透明性分析Tab.1 Transparency analysis 单位:dB 通过表1 的比较结果发现,本文所提出的算法有一个较高的SNR值,与文献[11]提出的基于小波熵和文献[12]提出的基于能量选择的DCT域2个算法相比也有很好的SNR,这代表在客观上而言,水印的隐蔽性较好。 图4显示了原始音频和携密音频在时域上的一个对比,其中载体音频选择的是女声3,从携密音频和原始音频之间的差值也可发现,嵌入前后幅度并未发生较大的改变,与表1的数据结合可证明该算法具有较高的透明性。 (a) 原始音频 为了测试实验算法的鲁棒性,对常见的各种攻击方式做实验。在主观上可以对攻击后提取出的水印图片与原始水印图片做比较,提取出的水印图片相较于原始水印图片越清晰,则代表算法在抵御该攻击时具有较强的鲁棒性。从客观上可以计算提取水印图片的误码率(Bit Error Ratio,BER)和自相关系数(Normalized Correlation,NC),BER越小,表示提取得到的水印越清晰,NC越靠近1,也表示提取得到的水印越清晰。表2给出了在各类攻击下女声1提取水印的BER和NC值。提取出的水印图片如图5所示。 表2 鲁棒性分析Tab.2 Robustness analysis (a) 无攻击 具体的攻击操作有如下几种: (1) 分别加入20,30 dB的高斯白噪声。 (2) 做16 bit→8 bit→16 bit的重量化。 (3) 做44 100 Hz→22 050 Hz→44 100 Hz的重采样。 (4) 采样MPEG-1 layer3压缩,携密音频分别以64 kb/s和128 kb/s被压缩。 (5) 携密音频经过截止频率为8,12 kHz的低通滤波器处理。 (6) 做50 ms衰减5%和100 ms衰减10%的回声干扰。 (7) 对携密音频的1 000个采样点做随机修改。 由表2和图5中的实验结果可以看出,该算法在抵御各类攻击有较强的鲁棒性,总结如下: (1) 在无攻击、加30 dB高斯白噪声、重采样、MP3压缩、回声干扰这几种攻击方式下,提取出的水印图片都十分清晰,与原始图片相比没有差别,NC值都为1,BER也都等于0,表明算法对于这几种攻击方式有很好的鲁棒性。 (2) 算法在20 dB白噪声、重量化和8 kHz低通滤波下,提取到的图片也较为清晰,NC值在0.98以上,BER低于1%,表明对于这几种攻击,算法具有较好的鲁棒性。 (3) 在做4 kHz低通滤波和随机修改,图片在一定程度上受损,其中随机修改NC值低于0.9,BER高于1%,造成提取效果变差的可能原因是攻击后改变了音频能量较大的区域,在误判的音频能量较大区域提取水印会导致提取效果变差。 为了更好说明本方案的鲁棒性,表3将文献[14-15]与本文算法做了对比。可以看出,算法对于重采样、MP3压缩和低通滤波攻击时相较于文献[14]有一个更好的效果,对于加噪、重量化和回声干扰相较于文献[15]有一个更好的效果,且对于这些攻击,误码率都低于2%,说明算法对于各种攻击都呈现出一个较好的鲁棒性。 表3 算法鲁棒性对比(误码率%)Tab.3 Algorithm robustness comparison (BER%) 本文提出了一种基于DWT和SVD的数字音频水印算法,算法主要利用了在局部能量较大的部分嵌入水印的思想,可以有效减少各类攻击造成的影响。通过奇异值分解得到的奇异值的奇偶性来嵌入和提取二进制水印。实验结果表明,算法有良好的透明性,对于大多数攻击也呈现很好的鲁棒性。但是,对携密音频随机位置做修改可能会导致局部最大值位置发生偏移,算法的鲁棒性仍有待提高。今后,将进一步研究更为合适的水印算法,使得算法对于各类攻击都能有出色的表现。2 水印的嵌入和提取
2.1 水印嵌入算法
2.2 水印提取算法
3 仿真实验与结果分析
3.1 隐藏容量和透明性
3.2 鲁棒性
4 结束语