基于MATLAB的数字音频水印技术程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的数字音频水印技术****************************水印生成程序**************************** %读取声音文件
FILE='D:\audio\in\1.wav';
[y,Fs,bits]=wavread(FILE);
%绘制出原始声音信号图
figure(1);
subplot(3,1,1);plot(y);
%用db4小波对读入的声音文件进行3级小波分解
[c,l]=wavedec(y,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca3=appcoef(c,l,'db4',3);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
x=ca3;
lx=length(x);
subplot(3,1,2);plot(x);
s=max(abs(x))*0.2;
i=find(abs(x)>s); %插入位置
lx=length(x(i));
%产生水印信号,sin
mark=[0.001:0.001:7.901];
mm=[0.01:0.01:79.01];
mark=sin(mm);
randn('seed',10);
mark=randn(1,lx);
figure(2);
subplot(3,1,1);plot(mark);
ss=mark;
rr=ss*0.02;
%水印信号嵌入
x(i)=x(i).*(1+rr');
%小波重构,生成加入了水印信号的声音信号
c1=[x',cd3',cd2',cd1'];
s1=waverec(c1,l,'db4');
figure(1);
whos('s1');
disp('');
%把加入了水印信号的声音作为sample2.wav保存
file1='sample2.wav';
wavwrite(s1,Fs,bits,file1);
figure(1);
subplot(3,1,3);
diff1=s1-y';
plot(diff1);
****************************水印恢复程序**************************** %读取原始声音信号
FILE='s00.wav';
[y,Fs,bits]=wavread(FILE);
%用db4小波对读入的声音文件进行3级小波分解
[c,l]=wavedec(y,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca3=appcoef(c,l,'db4',3);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
%读取含有水印的信号
FILE1='sample2.wav';
[y1,Fs1,bits1]=wavread(FILE1);
%用db4小波对读入的含有水印的声音文件进行3级小波分解
[c1,l1]=wavedec(y1,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca31=appcoef(c1,l1,'db4',3);
cd31=detcoef(c1,l1,3);
cd21=detcoef(c1,l1,2);
cd11=detcoef(c1,l1,1);
x=ca3;x1=ca31;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i);
mark1=z(i)./x(i)';
subplot(3,1,2);
plot(mark1);
diff=mark1-mark;
figure(2);
subplot(3,1,3);
plot(diff);
****************************压缩攻击**************************** FILE='sam96.wav';
[y7,Fs,bits]=wavread(FILE);
[c1,l1]=wavedec(y7,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca31=appcoef(c1,l1,'db4',3);
cd31=detcoef(c1,l1,3);
cd21=detcoef(c1,l1,2);
cd11=detcoef(c1,l1,1);
x=ca3;x1=ca31;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i);
mark1=z(i)./x(i)';
mark1=mark1/0.02;
figure(3);
subplot(3,1,1);
plot(mark1);
% axis([0 8000 -1 1]);
FILE='sam128.wav';
[y7,Fs,bits]=wavread(FILE);
[c1,l1]=wavedec(y7,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca31=appcoef(c1,l1,'db4',3);
cd31=detcoef(c1,l1,3);
cd21=detcoef(c1,l1,2);
cd11=detcoef(c1,l1,1);
x=ca3;x1=ca31;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i);