音频数字水印的算法实现(3)

[4] 柏玉保, 柏森, 刘程浩. 基于小波和倒谱域的数字音频水印算法[J]. 计算机应用与软件, 2012(3):163-167.

 

基于小波和倒谱域的数字音频水印算法 [4]

人耳频率分辨率是非线性的,傅里叶变换模拟的话比较困难,小波变换可以将音频划分为若干频带。

倒谱变换后,倒谱系数在中间部分差异小,在两边差异大,且中间能量大,所以通常选择中间部分嵌入水印。

复倒谱变换的实体部分定义为实倒谱:

音频数字水印的算法实现(3)

 

原理:

对原数据进行分帧,然后求每一帧的倒谱系数,之后定义一个伪随机序列来初始化嵌入位置,对于倒谱变换,将{0,1}的水印信息转化为{-1,1},所以嵌入水印后的模型为:

音频数字水印的算法实现(3)

β和λ是强度控制系数

假设经过噪声攻击后的数据是y = S + n

通过相关性的极性判断来提取水印,相关性:

音频数字水印的算法实现(3)

计算表明

音频数字水印的算法实现(3)

同时数学分析结论可得到,要降低错误比特概率,则要适当增大β 和λ 控制参数因子,进而在满足信噪比的条件下提高算法的鲁棒性。

 

嵌入:

音频数字水印的算法实现(3)

音频数字水印的算法实现(3)

下面梳理下上述代码,

首先,对于取出要处理的原数据audio,

然后进行离散小波变换,

wavedec( audio,5,'db4'),用db4小波做5级分解

appcoef( C,L,'db4',5),提取低频系数

detcoef(C,L,[5]),提取高频系数

然后进行分帧操作,对于每一帧做倒谱变换,

fft --  log --  ifft -- real 得到实倒谱

然后初始化伪随机序列,用种子数做秘钥

取每一帧中间部分,然后做水印嵌入操作,这时得到嵌入后的倒谱系数,fft --  exp --  ifft  --  real,最后将处理过的部分与其他部分进行重构,进行离散小波逆变换。

 

提取:

对数据进行嵌入时的一系列变换得到低频系数,然后根据秘钥找到水印嵌入位置,根据原理中的r和w的关系,求相关性:

音频数字水印的算法实现(3)

若r>=0,则w=1,若r<0,则w=-1

 

实验表明:

增大β 和λ控制参数因子,信噪比依次减小,鲁棒性提高。

β=0.05,λ=0.5时,信噪比和鲁棒性达到比较好的平衡。

上一篇:Apache+Tomcat共享session proxy模块


下一篇:docker 常用指令