基于遗传算法和频谱分布的鲁棒音频数字水印优化方法

文档序号:32347622发布日期:2022-11-26 11:53阅读:78来源:国知局
基于遗传算法和频谱分布的鲁棒音频数字水印优化方法

1.本发明涉及基于遗传算法和频谱分布的鲁棒音频数字水印优化方法。


背景技术:

2.互联网和计算机技术的飞速发展为人们在网络上传播各种多媒体资源提供了极大便利,但这些多媒体资源的安全问题不断涌现。数字水印技术在解决多媒体资源的安全问题方面发挥重大作用,它使用特定的嵌入算法将标记(该标记称为水印)隐藏在多媒体资源中,当发生安全问题时,作者可以通过与嵌入算法相对应的提取算法将该水印提取出来以证明自己与该多媒体资源的关联。音频数字水印技术是指在保证对原始音频原有音质无太大影响的情况下,将水印隐秘的嵌入到原始音频中以此来达到版权追踪、完整性保护、信息恢复、广告计时等目的一类安全防护技术。鲁棒音频水印技术具有很强的鲁棒性,在含有水印的音频遭受攻击时,仍然能够以极小的误码率将水印提取出来,主要用于音频的版权保护等应用中。
3.随着对音频水印技术的研究不断深入,学者们提出了越来越多的性能各异的水印算法。然而,大部分音频水印算法都只能抵抗常规信号处理操作,而对同步攻击的抵御能力很弱,这主要是因为大部分算法都缺乏有效的同步机制。同步攻击会对音频数据的结构产生严重破坏,这会使接收者在提取水印时因难以获得准确的水印位置而致使提取失败,因此同步攻击已成为音频水印技术领域最具挑战性的一类攻击方式。在研究同步机制方面,已有的同步机制主要有穷举搜索、显式同步、隐含同步、自相关、恒定水印等几大类。
4.数字水印算法的性能主要包括透明性、鲁棒性和隐藏容量三大方面。此外,为了便于应用,数字水印算法通常会具有盲提取功能,可以在不需要原始音频的情况下直接从携密原始音频中就可以将水印提取出来。嵌入算法和提取算法的设计方案决定了数字水印算法的性能优劣。
5.算法参数的设置是数字水印算法能否充分发挥其最优性能的重要因素。绝大多数的数字水印算法在设置算法参数时都是根据设计者经验来设置的,或者根据实验结果对参数进行多次尝试和不断调整,这些方法由于缺乏有效的参数调整机制,通常并不能将算法的性能充分发挥出来。此外,在应用目的发生变化时,这些方法也无法及时有效的调整参数来匹配新的性能需求。


技术实现要素:

6.发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供基于遗传算法和频谱分布的鲁棒音频数字水印优化方法,包括以下步骤:
7.步骤1,建立能够自动定位水印在音频中所处位置的同步机制;
8.步骤2,基于子频带的频谱分布,设计水印嵌入方法和水印提取方法;
9.步骤3,基于遗传算法进行参数优化。
10.步骤1包括:
11.步骤a1:将二进制水印转换为l1行l2列的二维矩阵,其中l1和l2均为不等于零的整数,且lw=l1×
l2,lw是水印的总比特数;
12.步骤a2:将原始音频x(n)={an}均匀的分为l1段,an是原始音频的第n个采样点的幅度,在每个原始音频段中选择能量en最大的浊音帧用于承载水印,每个浊音帧长度为n1;能量en的计算公式为
13.步骤a3:将每个浊音帧分为长度为n2的小帧,并计算每个小帧的能量,2≤n2≤16;
14.步骤a4:以能量最大的小帧这一全局特征作为同步标记,在其周围选择a1+a2+1个小帧作为承载水印的区域。
15.步骤a4中,根据同步标记在浊音帧的具体位置,水印所在区域分为三种情况:
16.第一种情况,如果同步标记之前的小帧数量小于a1,说明同步标记较为靠近浊音帧的首端,则水印区域为从第一个小帧开始的连续a1+a2+1个小帧;
17.第二种情况,如果同步标记之后的小帧数量小于a2,说明同步标记较为靠近浊音帧的末端,则水印区域为位于末端的连续a1+a2+1个小帧;
18.第三种情况,除第一种情况和第二种情况之外,则以同步标记为基准,向前取a1个小帧,再向后选取a2个小帧;
19.经过步骤a1~步骤a4,将原始音频分为l1个音频分段后,从中选择1个能量最大的浊音帧,使用步骤a1~步骤a4所述的同步机制在浊音帧中搜索用于承载水印的位置,将用于承载水印的位置上的音频数据xc(n1)表示为)表示为表示音频数据xc(n1)中第n1个采样点的幅度。
20.步骤2中,所述水印嵌入方法包括如下步骤:
21.步骤b1:将水印转化为l1×
l2的二进制矩阵;
22.步骤b2:将原始音频分为l1段,在每一段中选择能量最大的浊音帧作为承载水印的载体,浊音帧的长度为n1;
23.步骤b3:将每个浊音帧分为长度为n2的小帧,选择能量最大的小帧作为同步标记;
24.步骤b4:在同步标记周围选择a1+a2+1个连续的小帧作为水印的嵌入区域;
25.步骤b5:将xc(n1)进行离散余弦变换(discrete cosine transform,dct)处理,得到dct系数xc(k);
26.步骤b6:从第b0根谱线开始将xc(k)分为l个频带,每个频带有n3根谱线;
27.步骤b7:计算相邻两个频带x
l
(k)和x
l+1
(k)的频谱结构sd
l
、sd
l+1
,以及sd
l
、sd
l+1
的平均值sdm;
28.步骤b8:如果|sd
l-sd
l+1
|》λ2sdm,则将相邻两个频带x
l
(k)和x
l+1
(k)置为无效,l=l+2,转入步骤b7,否则转入步骤b9;
29.步骤b9:根据公式(9)(10)(11)在相邻两个频带x
l
(k)和x
l+1
(k)上嵌入1比特信息;
30.步骤b10:重复步骤b7到步骤b9,直至将一行长度为l2比特的二进制水印信息全部嵌入至一个浊音帧中;
31.步骤b11:将x
′c(k)进行离散余弦逆变换(inversediseretecosinetransform,idct)处理得到x'c(n1);
32.步骤b12:重复步骤b3到步骤b11,直至将l1行的二进制水印信息全部嵌入至原始音频中;
33.步骤b13:将各个携带有二进制水印的音频片段重新连接为携带有水印的音频,称为携密音频x'(n)。
34.步骤b5包括:将xc(n1)进行离散余弦正变换后得到频域表达式为xc(k),如公式(1)、(2)所示:
[0035][0036][0037]
其中xc(0)是直流分量,xc(k)是k次谐波分量;k次谐波频率fk为:
[0038][0039]
其中fs是采样率。
[0040]
步骤b6包括:将xc(k)分为l个频带,其中第l个频带为x
l
(i),1≤l≤l,1≤i≤n3,每个频带内含有n3根谱线,且l=n2×
(a1+a2+1)/n3,l》2l2。
[0041]
步骤b7包括:采用如下公式计算第l个频带的频谱结构sd
l

[0042][0043]
其中,fi是x
l
(i)中第i根谱线所对应的频率,f
l
是第l个频带的的起始频率,且i=k-ln3;
[0044]
原始音频中携带水印后,设定频谱系数的变化量为δk,则第l个频带的频谱结构sd

l
如公式(5)所示:
[0045][0046]
计算sd
l
、sd
l+1
的平均值sdm:
[0047][0048]
步骤b9包括:将水印转换为二进制形式w={w(q),1≤q≤lw},其中w(q)是水印的二进制取值,取0或1,lw是水印的总比特数,通过修改两个相邻的频带x
l
(k)和x
l+1
(k)的系数来嵌入1比特的水印信息:
[0049]
按公式(7)和(8)修改x
l
(k)的dct系数x

l
(k)和x
l+1
(k)的dct系数x

l+1
(k):
[0050][0051][0052]
其中λ1是嵌入深度,且λ1∈(-1,1);
[0053]
根据公式(4)计算x

l
(k)的频谱分布sd
l


[0054][0055]
根据公式(4)计算x

l+1
(k)的频谱分布sd

l+1
:sd

l+1
=(1-λ1)sdm;
[0056]
则相邻的两个频带的频谱分布的差值为:
[0057][0058]
根据秘密信息的二进制取值来设置λ1,如公式(11)所示:
[0059][0060]
步骤2中,所述水印提取方法包括如下步骤:
[0061]
步骤c1:将携密音频分为l1段,在每一段中选择能量最大的一个浊音帧作为承载水印的载体,浊音帧的长度为n1;
[0062]
步骤c2:将每个浊音帧分为长度为n2的小帧,选择能量最大的小帧作为同步标记;
[0063]
步骤c3:在同步标记周围选择选择a1+a2+1个连续的小帧形成水印的嵌入区域xc(n1);
[0064]
步骤c4:将xc(n1)进行dct处理,得到dct系数xc(k);
[0065]
步骤c5:从第b0根谱线开始将xc(k)分为l个频带,每个频带有n3根谱线;
[0066]
步骤c6:计算相邻两个频带x
l
(k)和x
l+1
(k)的频谱结构sd
l
、sd
l+1
,以及sd
l
、sd
l+1
的平均值sdm;
[0067]
步骤c7:如果|sd
l-sd
l+1
|》λ2sdm,则l=l+2,转入步骤c6,否则转入步骤c8;
[0068]
步骤c8:根据公式(12)在相邻两个频带x
l
(k)和x
l+1
(k)上提取1比特水印信息w'(q):
[0069][0070]
其中1≤q≤lw;
[0071]
步骤c9:重复步骤c6~步骤c8,直至提取出l2比特的二进制水印;
[0072]
步骤c10:重复步骤c2~步骤c9,直至提取出全部二进制水印。
[0073]
步骤3包括:设定初始种群中包含c1个染色体,每个染色体的长度为c2比特,如公式(13)所示:
[0074][0075]
其中,chrom1表示第一个染色体,由4个部分组成:第一部分bin1(n3)表示参数n3的二进制编码,长度为第二部分bin1(b0)表示参数b0的二进制编码,长度为第三部分bin1(λ1)表示参数λ1的二进制编码,长度为第四部分bin1(λ2)表示参数λ2的二进制编码,长度为且
[0076]
公式(14)用于将染色体编码转化为水印算法的实际参数:
[0077][0078]
其中b2d[]表示将括号内的二进制转化为十进制;
[0079]
遗传算法的适应度函数fitness如公式(15)所示:
[0080][0081]
其中snr0和cap0分别表示应提供的透明性的最低门限和隐藏容量的最低门限,snr0≥20db,cap0≥20bps,p表示攻击类型的种类,beri表示对携密原始音频进行第i种攻击后所提取水印的误码率(bit error rate,ber),pi表示第i种攻击在所有攻击类型中的重要程度,且
[0082]
遗传算法的适应度函数是由透明性、隐藏容量和鲁棒性共同决定的。在满足透明性和隐藏容量的性能需求的条件下,以获得最强鲁棒性为目标构建适应度函数。公式(15)给出了一个适应度函数的构建示例。其中snr是透明性的评价指标,cap是隐藏容量的指标,ber是鲁棒性的指标。用这三大性能来构建类似适应度函数的方法都在本发明保护范围内。
[0083]
参数优化过程具体包括如下步骤:
[0084]
步骤d1,初始化种群:设置交叉概率pc,变异概率pm,隐藏容量阈值cap0和透明性阈值snr0,并产生一个初始种群pop0;
[0085]
步骤d2,根据每个染色体的编码获得四个算法参数n3,b0,λ1,λ2,对于满足λ2》3|λ1|的染色体执行嵌入过程,将水印嵌入到原始音频中并获得携密音频,否则将染色体舍弃;
[0086]
步骤d3,对于满足透明性的最低门限和隐藏容量的最低门限的染色体所产生的携密音频进行两种以上的攻击;
[0087]
步骤d4,计算每一种攻击下,从携密音频中所提取水印的误码率,采用步骤2的方法进行提取,误码率计算公式是公式(16):
[0088][0089]
步骤d5,将所有误码率代入公式(15),计算适应度函数的值,适应度函数值最大的染色体为当前种群中最优染色体;
[0090]
步骤d6,采用轮盘赌方法执行选择操作,产生一个过渡种群pop
′0;
[0091]
步骤d7,对过渡种群pop
′0执行交叉操作产生过渡种群pop
″0;
[0092]
步骤d8,对过渡种群pop
″0执行变异操作产生新种群pop1;
[0093]
步骤d9,完成第一次进化过程,重复步骤d2~步骤d8,直至出现全局最优染色体。
[0094]
本发明特点在于:
[0095]
1.设计了一种能够准确定位水印位置的同步机制。本发明所设计的同步机制以浊音帧的全局特征作为同步标记来标识水印所在的位置。首先将原始音频均匀分段,然后将音频片段中的浊音帧均匀的分成很多个小帧,接下来计算每个小帧的能量,最后以能量最大的小帧作为浊音帧的全局特征,按一定的规律在其周围选取一段区域用来隐藏水印。提取水印时,使用所设计的同步机制可准确定位水印在携密音频中的位置。
[0096]
2.基于子频带的频谱分布设计了一种新的水印嵌入和提取算法。首先构造了一个能反映原始音频信号在一个子频带内的频谱分布的特征量,然后通过调节相邻两个子频带的dct系数来改变这两个频带的特征值的差值,使用二进制水印的值控制这个差值来设计嵌入算法。需要提取水印时,通过判断相邻子频带的特征量的差值的取值范围就可以将水印提取出来,而不需要原始音频的参与,因此该算法具有盲提取功能,这非常便于该算法的实际应用。此外,嵌入算法中嵌入深度的极性是通过比较两个频带的特征量的值来决定的,这样做的目的是尽量减少对dct系数的修改,从而使得本算法具有良好的透明性。
[0097]
3.设计了一种基于遗传算法的水印算法关键参数的优化方法。将水印算法的关键参数进行二进制编码后形成初始种群,在满足透明性和隐藏容量两项性能需求的情况下,以所提取水印的误码率来构建遗传算法的适应度函数。该适应度函数综合考虑了多种攻击类型对算法鲁棒性的影响,在实际应用中可通过调节相应的权重系数来调整该项攻击在鲁棒性评价中的比重。通过选择、交叉和变异三项操作不断优化种群,并最终获得全局最优解,从而得到特定性能需求下能够使得数字水印算法具有最强鲁棒性的最佳算法参数。
[0098]
有益效果:本发明所设计的音频鲁棒水印算法在满足隐藏容量和透明性两项指标要求下具有很强的鲁棒性,能够抵御多种攻击;具有稳定的同步机制,能准确定位水印在音
频载体中的位置;具有盲提取功能,提取水印时不需要原始音频;具有自适应匹配性能需求的能力,遗传算法可自主寻找最优的算法关键参数。
附图说明
[0099]
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0100]
图1是嵌入算法流程图。
[0101]
图2是提取算法流程图。
[0102]
图3a是一幅43
×
64的待测试水印图片。
[0103]
图3b是一幅93
×
64的待测试水印图片。
[0104]
图4a是原始波形示意图。
[0105]
图4b是第一组携密波形示意图。
[0106]
图4c是第二组携密波形示意图。
[0107]
图4d是第三组携密波形示意图。
[0108]
图5a是原始波形对应的语谱图。
[0109]
图5b是第一组携密波形对应的语谱图。
[0110]
图5c是第二组携密波形对应的语谱图。
[0111]
图5d是第三组携密波形对应的语谱图。
[0112]
图6是第一组实验所提取的水印示意图。
[0113]
图7是第二组实验所提取的水印示意图。
[0114]
图8是第三组实验所提取的水印示意图。
具体实施方式
[0115]
1.同步机制
[0116]
同步攻击会导致音频数据的位置发生偏移从而无法准确找到水印在音频中所处的位置,对于算法的鲁棒性是一类极具挑战性的攻击方式,因此设计一种能够准确搜索水印位置的同步机制变得尤为重要。由于浊音中包含了音频的绝大部分信息,如果对浊音数据修改太多,则会导致音频听觉质量严重下降,从而影响音频的使用价值。针对音频的这一特点,以浊音帧的全局特征点作为同步标记,以该标记周围固定范围内的音频数据作为承载水印的载体,设计了一种能够自动定位水印在音频中所处位置的同步机制,具体步骤包括:
[0117]
步骤a1:将二进制水印转换为l1行l2列的二维矩阵,且lw=l1×
l2,lw是水印的总比特数。
[0118]
步骤a2:将原始音频均匀的分为l1段,在每个音频片段中选择能量最大的浊音帧用于承载水印,每个浊音帧长度为n1。
[0119]
步骤a3:将每个浊音帧分为长度为n2的小帧,并计算每个小帧的能量。
[0120]
步骤a4:以能量最大的小帧这一全局特征作为同步标记,在其周围选择a1+a2+1个小帧作为承载水印的区域。根据同步标记在浊音帧的具体位置,水印所在区域分为三种情况:
[0121]
1)若同步标记之前的小帧数量小于a1,说明同步标记较为靠近该浊音帧的首端,则水印区域为从第一个小帧开始的连续a1+a2+1个小帧。
[0122]
2)若同步标记之后的小帧数量小于a2,说明同步标记较为靠近该浊音帧的末端,则水印区域为位于末端的连续a1+a2+1个小帧。
[0123]
3)除上述两种情况之外,则以同步标记为基准,向前取a1个小帧,再向后选取a2个小帧。
[0124]
经过上述步骤,将原始音频分为l1个原始音频分段后,从中选择1个能量最大的浊音帧,使用以上步骤所述的同步机制在浊音帧中搜索用于承载水印的位置,将该位置上的音频数据表达为
[0125]
2.嵌入算法和提取算法
[0126]
如图1所示,基于以上同步机制,提出一种根据子频带的频谱分布来嵌入和提取水印的算法。该算法具有盲提取功能,且鲁棒性强,不仅能抵抗传统的信号处理攻击,且能抵抗多种同步攻击。
[0127]
2.1嵌入算法的原理
[0128]
离散余弦变换能够将信号在时域和频域间进行相互转换,且变换后的频域系数具有很强的"能量集中"特性和良好的去相关性,因此在图像和原始音频信号处理领域获得了广泛的应用。
[0129]
设定原始音频是一个长度为n的序列x(n),将其均匀的分为l1段后,在每个原始音频片段中找到能量最大的浊音帧,然后使用上述同步机制在浊音帧中确定用于承载水印的区域,使用嵌入算法在该区域内的音频数据上嵌入l2比特的秘密信息。
[0130]
设定所选区域上的音频数据为xc(n1),将xc(n1)进行离散余弦正变换后得到频域表达式为xc(k),如公式(1)、(2)所示:
[0131][0132][0133]
其中xc(0)是直流分量,xc(k)是k次谐波分量;k次谐波频率fk为:
[0134][0135]
此处fs是采样率。音频的频谱就是用来描述每种谐波成分在原始音频中所占的比重,与谐波的频率和幅度有关。当音频受到攻击时,由于其频谱结构具有良好的稳定性,因此可以根据这一特点来设计水印算法。
[0136]
将xc(k)分为l个频带x
l
(i),1≤l≤l,1≤i≤n3,每个频带内含有n3根谱线,且l=n2×
(a1+a2+1)/n3,l》2l2;
[0137]
设计公式(4)所示的频谱分布函数来表示一个频带的频谱结构:
[0138]
[0139]
此处,f
l
是第l个频带的的起始频率,且i=k-ln3。音频中嵌入水印后,其频谱系数发生了较小的变化,设定变化量为δk。则变化后的频谱分布如公式(5)所示:
[0140][0141][0142]
由于δk非常小,而n2×
(a1+a2+1)远远大于所以sdf'(l)≈sdf(l),即当频谱分布仅发生非常小的变化。
[0143]
将水印转换为二进制形式w={w(q),1≤q≤lw},且w(q)∈{0,1}。可通过修改两个相邻的频带x
l
(k)和x
l+1
(k)的系数来嵌入1比特的水印信息。
[0144]
根据公式(4)得到x
l
(k)和x
l+1
(k)的频谱分布为sd
l
和sd
l+1
,则其平均值为:
[0145][0146]
按公式(7)和(8)修改dct系数x
l
'(k)和x
l
'
+1
(k)。
[0147][0148][0149]
此处,λ1是嵌入深度,且λ1∈(-1,1)。根据公式(4),计算x

l
(k)的频谱分布sd
l

为:
[0150][0151]
同理得到x

l+1
(k)的频谱分布为:sd

l+1
=(1-λ1)sdm。
[0152]
则相邻的两个频带的频谱分布的差值为:
[0153][0154]
根据秘密信息的二进制取值来设置λ1,如公式(11)所示:
[0155][0156]
可见,本方法的嵌入原理是通过秘密信息的二进制取值来控制相邻两个频带的频谱分布的差值。当秘密信息的二进制值为0时,二者差值|sd

l-sd

l+1
|等于0,否则二者差值|sd

l-sd

l+1
|等于2λ1sdm。
[0157]
为了防止对dct系数修改太多而造成原始音频质量下降严重,如果sd
l
andsd
l+1
相差非常大,可将这两个频带设为无效频带,不在其中嵌入水印,具体做法可描述如下。
[0158]
设置一个阈值来判断是否可以在这两个相邻频带上嵌入水印,即如果|sd
l-sd
l+1
|》λ2sdm(λ2∈(0,2)andλ2》3|λ1|),则说明相邻的两个子频带的sd相差太大,不适合在其上嵌入水印。否则按如下嵌入规则嵌入水印:1)当水印的值为1时,λ1≠0,此时sd

l
=(1+λ1)sdm,且sd

l+1
=(1-λ1)sdm。为了提高算法的透明性,根据两个频带的sd的相对大小来调节λ1的极性,从而尽量减少对系数的修改。2)当水印的值为0时,λ1=0,此时sd

l
=sd

l+1

[0159]
嵌入算法流程图如图1所示,其执行步骤包括:
[0160]
步骤b1:将水印转化为l1×
l2的二进制矩阵。
[0161]
步骤b2:将原始音频分为l1段,在每一段中选择能量最大的浊音帧作为承载水印的载体,浊音帧的长度为n1。
[0162]
步骤b3:将每个浊音帧分为长度为n2的小帧,选择能量最大的小帧作为同步标记。
[0163]
步骤b4:在同步标记周围选择a1+a2+1个连续的小帧xc(n1)作为水印的嵌入区域。
[0164]
具体方法见步骤a4;
[0165]
步骤b5:将xc(n1)进行dct处理,得到dct系数xc(k);
[0166]
步骤b6:从第b0根谱线开始将xc(k)分为l个频带,每个频带有n3根谱线。
[0167]
步骤b7:计算相邻两个频带的sd
l
、sd
l+1
和sdm。
[0168]
步骤b8:如果|sd
l-sd
l+1
|》λ2sdm,则将这两个频带置为无效,l=l+2,转入步骤b7。反之则转入步骤b9;
[0169]
步骤b9:根据公式(9)(10)(11)在这两个频带上嵌入1比特信息。
[0170]
步骤b10:重复步骤b7到步骤b9,直至将一行长度为l2比特的二进制水印信息全部嵌入至一个浊音帧中。
[0171]
步骤b11:将x
′c(k)进行idct处理得到x'c(n1);
[0172]
步骤b12:重复步骤b3到步骤b11,直至将l1行的二进制水印信息全部嵌入至原始音频中。
[0173]
步骤b13:将各个携带有二进制水印的音频片段重新连接,得到携密音频x'(n)。
[0174]
特别的,可以在每个音频片段中按能量值由大到小排序,然后选择能量大的奇数个浊音帧来重复嵌入l2比特的二进制水印,以此来降低误码率,提高算法的鲁棒性。如将l2比特的二进制水印重复的嵌入在前3个能量最大的浊音帧中。
[0175]
2.2提取算法的原理
[0176]
提取过程是嵌入过程的逆过程。在嵌入过程中,根据二进制水印的取值来调节相邻两个频带的频谱分布差值,实现了将二进制水印嵌入到相邻的两个频带中。如果嵌入二进制水印的值为0,则让两个频带的sd相等,如果嵌入的值为1,则让两个频带的sd相差2λ1sdm。因此相应的提取规则表述为公式(12):
[0177][0178]
其中1≤q≤lw;
[0179]
提取算法流程图如图2所示,执行步骤包括:
[0180]
步骤c1:将携密原始音频分为l1段,在每一段中选择能量最大的一个浊音帧作为承载水印的载体,浊音帧的长度为n1。
[0181]
步骤c2:将每个浊音帧分为长度为n2的小帧,选择能量最大的小帧作为同步标记。
[0182]
步骤c3:在同步标记周围选择选择a1+a2+1个连续的小帧形成水印的嵌入区域xc(n1)。具体方法见步骤a4;
[0183]
步骤c4:将xc(n1)进行dct处理,得到dct系数xc(k);
[0184]
步骤c5:从第b0根谱线开始将xc(k)分为l个频带,每个频带有n3根谱线。
[0185]
步骤c6:计算相邻两个频带的sd
l
、sd
l+1
和sdm。
[0186]
步骤c7:如果|sd
l-sd
l+1
|》λ2sdm,则l=l+2,转入步骤c6,否则转入步骤c8;
[0187]
步骤c8:根据公式(12)在这两个频带上提取1比特信息。
[0188]
步骤c9:重复步骤c6~步骤c8,直至提取出l2比特的二进制水印。
[0189]
步骤c10:重复步骤c2~步骤c9,直至提取出全部二进制水印。
[0190]
3.基于遗传算法的参数优化方法
[0191]
本发明所述算法的参数有l,l1,l2,n1,n2,n3,a1,a2,b0,λ1,λ2。其中l1和l2是待嵌入水印的尺寸,l》2l2,n1是浊音的长度,n2与a1和a2共同决定了嵌入位置的长度,与算法性能密切相关的参数有n3,b0,λ1,λ2。这四个参数决定了算法的隐藏容量、透明性和鲁棒性,可用遗传算法对其进行优化。
[0192]
设定初始种群中包含c1个染色体,每个染色体的长度为c2比特,如公式(13)所示。
[0193][0194]
其中,chrom1表示第一个染色体,由4个部分组成。第一部分bin1(n3)表示参数n3的二进制编码,长度为第二部分bin1(b0)表示参数b0的二进制编码,长度为第三部分bin1(λ1)表示参数λ1的二进制编码,长度为第四部分bin1(λ2)表示参数λ2的二进制编码,长度为且公式(14)用于将染色体编码转化为水印算法的实际参数:
[0195]
[0196]
遗传算法的适应度函数fitness如公式(15)所示。
[0197][0198]
其中snr0和cap0表示应提供的透明性和隐藏容量的最低门限,p表示攻击类型的种类,beri表示对携密原始音频进行第i种攻击后所提取水印的误码率,pi表示第i种攻击在所有攻击类型中的重要程度,值越大表示算法对该种攻击类型越重视,且
[0199]
参数优化过程具体描述如下:
[0200]
步骤d1,初始化种群。设置交叉概率pc,变异概率pm,隐藏容量阈值cap0和透明性阈值snr0,并阐述一个初始种群pop0。
[0201]
步骤d2,根据每个染色体的编码获得四个算法参数。对于满足λ2》3|λ1|的染色体执行嵌入过程,将水印嵌入到原始音频中并获得携密音频,否则将该染色体舍弃。
[0202]
步骤d3,对于满足透明性和隐藏容量阈值的染色体所产生的携密音频进行多种攻击。
[0203]
步骤d4,计算每一种攻击下,从携密音频中所提取水印的误码率。
[0204]
步骤d5,将所有误码率代入公式(15),计算适应度函数的值。适应度函数值最大的染色体为当前种群中最优染色体。
[0205]
步骤d6,采用轮盘赌方法执行选择操作,产生一个过渡种群pop
′0。
[0206]
步骤d7,对过渡种群pop
′0执行交叉操作产生过渡种群pop
″0。
[0207]
步骤d8,对过渡种群pop
″0执行变异操作产生新种群pop1。
[0208]
步骤d9,完成第一次进化过程,重复步骤d2~步骤d8,直至出现全局最优染色体。
[0209]
实施例
[0210]
本实施例中所述实验环境为:64位microsoft windows 10操作系统、编程语言为matlab 2016r。算法参数为:pc=0.8,pm=0.1,c1=50,和n2=8,a1=168,a2=343。待测试原始音频为wav格式的无损音频,长度64秒,采样率44.1khz,16比特量化。待测试水印为一幅43
×
64的图片和一幅93
×
64的图片,分别如图3a、图3b所示。分别进行三组实验:1)snr0=25db,cap0=43bps;2)snr0=20db,cap0=43bps;3)snr0=20db,cap0=93bps。
[0211]
1)透明性和隐藏容量测试
[0212]
透明性的评价就是计算音频在携带水印前后其听觉质量的变化情况,可以用信噪比(signal-to-noise ratio,snr)来衡量。snr可由公式(16)来计算。鲁棒性是指携密音频在遭受各种攻击后,算法仍能够较为准确的将水印提取出来的特性。通常用误码率来评估鲁棒性,它是指所提取的水印与原始水印相比发生错误比特的比例,ber可由公式(17)来计算:
[0213][0214][0215]
分别经过68,65和71代进化后,三组实验均获得各自的全局最优解。表1显示了实验结果,包括对比音频载体的snr(db),通过提取水印的ber(%)评估的鲁棒性,以及隐藏容量(bps)。
[0216]
表1
[0217][0218]
根据表1中的实验数据(无攻击),该算法可以在设定的隐藏容量和透明性下获得很强的鲁棒性。在43bps的隐藏容量下,第一组和第二组实验的透明性分别达到了设定的25db和20db。第二组和第三组设定的透明性都是20db,但隐藏容量不同。在无攻击情况下,三组实验的误码率都是0,说明在无攻击情况下算法使用遗传算法所搜索到的参数均可以获得非常强的鲁棒性。本发明方法透明性好的主要原因是在嵌入水印时,根据两个频段sd的相对大小对dct系数进行了修正,如公式(11)所示,这样可以最大程度地减少对原始音频质量的损害。
[0219]
原始音频和各组携带水印的携密音频的波形图分别如图4a、图4b、图4c、图4d所示(仅显示一段约为3秒的原始音频片段,以便清晰显示细节),其相对应的语谱图如图5a、图5b、图5c、图5d所示。可以看出,嵌入水印前后音频的波形和频谱图没有明显变化,说明该算法透明度较好。
[0220]
2)鲁棒性测试
[0221]
将携密音频进行各种攻击,然后使用提取算法来提取水印,最后将所提取的水印和原始水印进行比较,通过ber来定量的评价算法的鲁棒性。攻击类型包括多种常规信号处理操作和同步攻击,如表2所示。
[0222]
表2
[0223]
[0224][0225]
表3
[0226][0227]
对携密音频进行上述攻击后,将相同类型的攻击下计算所得的ber(%)取平均值列于表3中。将所提取的水印图片列于图6、图7和图8中。
[0228]
图6是第一组实验所提取的水印,说明如下:a:噪声污染;b:添加回声;c:mp3压缩;d:低通滤波;e:重量化;f:重采样;g:幅度放大;h:幅度缩小;i:时间拉伸;j:时间缩短;k:抖动;l:随意剪辑。
[0229]
图7是第二组实验所提取的水印,说明如下:a:噪声污染;b:添加回声;c:mp3压缩;d:低通滤波;e:重量化;f:重采样;g:幅度放大;h:幅度缩小;i:时间拉伸;j:时间缩短;k:抖动;l:随意剪辑。
[0230]
图8是第二组实验所提取的水印,说明如下:a:噪声污染;b:添加回声;c:mp3压缩;d:低通滤波;e:重量化;f:重采样;g:幅度放大;h:幅度缩小;i:时间拉伸;j:时间缩短;k:抖动;l:随意剪辑。
[0231]
根据表3、图6、图7和图8所示的实验结果,本发明对各种攻击具有很强的鲁棒性,包括30db的噪声污染、128kbps的mp3压缩、重量化、重采样、50ms延迟的回声叠加、幅度缩放和随机裁剪,所提取的水印图片非常清晰。在抵抗tsm攻击时,虽然误码率较高,但人仍然能
够较为清晰的分辨所提取水印的图片内容。
[0232]
具体实现中,本技术提供计算机存储介质以及对应的数据处理单元,其中,该计算机存储介质能够存储计算机程序,所述计算机程序通过数据处理单元执行时可运行本发明提供的基于遗传算法和频谱分布的鲁棒音频数字水印优化方法的发明内容以及各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
[0233]
本领域的技术人员可以清楚地了解到本发明实施例中的技术方案可借助计算机程序以及其对应的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序即软件产品的形式体现出来,该计算机程序软件产品可以存储在存储介质中,包括若干指令用以使得一台包含数据处理单元的设备(可以是个人计算机,服务器,单片机。muu或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0234]
本发明提供了基于遗传算法和频谱分布的鲁棒音频数字水印优化方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1