您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 会议纪要 > 基于MATLAB的数字音频水印技术程序
基于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));%产生水印信号,sinmark=[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);subplot(3,1,2);plot(s1);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)';mark1=mark1/0.02;figure(2);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([08000-11]);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);mark1=z(i)./x(i)';mark1=mark1/0.02;figure(3);subplot(3,1,2);plot(mark1);axis([08000-11]);FILE='sam160.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,3);plot(mark1);axis([08000-11]); ****************************低通滤波****************************[b,a]=butter(10,10000/Fs);y2=y1;y5=filtfilt(b,a,y2);figure(4);freqz(b,a,128,10000)figure(5);subplot(3,1,1)plot(y5);subplot(3,1,2)plot(y);subplot(3,1,3)plot(y-y5);file1='sample3.wav';wavwrite(y5,Fs,bits,file1);FILE1='sample3.wav';[y5,Fs1,bits1]=wavread(FILE1);%用db4小波对读入的含有水印的声音文件进行3级小波分解[c1,l1]=wavedec(y5,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(4);subplot(2,1,1);plot(mark1);**********************产生随机信号作为噪声信号***************************noise0=randn(size(y));y3=y1;y3=y3+noise0*200;%用db4小波对读入的含有水印的声音文件进行3级小波分解[c3,l3]=wavedec(y1,3,'db4');%提取3级小波分解的低频系数和高频系数ca32=appcoef(c3,l3,'db4',3);cd32=detcoef(c3,l3,3);cd22=detcoef(c3,l3,2);cd12=detcoef(c3,l3,1);x=ca3;x1=ca32;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);mark3=z(i)./x(i)';mark3=mark3/0.02;figure(4);subplot(2,1,2);plot(mark3);nbsp;****************************重采样****************************fs1=Fs*0.5;wavwrite(y1,fs1,bits,'ss.wav');[y6,fs2,bits]=wavread('ss.wav');%用db4小波对读入的含有水印的声音文件进行3级小波分解[c4,l4]=wavedec(y6',3,'db4');%提取3级小波分解的低频系数和高频系数ca33=appcoef(c4,l4,'db4',3);cd33=detcoef(c4,l4,3);cd23=detcoef(c4,l4,2);cd13=detcoef(c4,l4,1);x=ca3;x1=ca33;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)';mark4=z(i)./x(i)';mark4=mark4/0.02;figure(5);subplot(2,1,1);plot(mark4);axis([08000-11]);fs1=Fs*0.25;wavwrite(y1,fs1,bits,'ss.wav');[y6,fs2,bits]=wavread('ss.wav');%用db4小波对读入的含有水印的声音文件进行3级小波分解[c4,l4]=wavedec(y6',3,'db4');%提取3级小波分解的低频系数和高频系数ca33=appcoef(c4,l4,'db4',3);cd33=detcoef(c4,l4,3);cd23=detcoef(c4,l4,2);cd13=detcoef(c4,l4,1);x=ca3;x1=ca33;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)';mark4=z(i)./x(i)';mark4=mark4/0.02;figure(5);subplot(2,1,2);plot(mark4);axis([08000-11]);****************************信号裁剪****************************llx=length(y1);llx=fix(llx*0.75);i=[1:llx];y4(i)=y1(i);file1='sampl
本文标题:基于MATLAB的数字音频水印技术程序
链接地址:https://www.777doc.com/doc-4737035 .html