利用 logistic 映射产生混沌序列 x(n)
a=3.571
x{1}=0.2
while 0s);%插入位置
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);
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([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);
mark1=z(i)./x(i)';
mark1=mark1/0.02;
figure(3);
subplot(3,1,2);
plot(mark1);
axis([0 8000 -1 1]);
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([0 8000 -1 1]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%低通滤波
[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([0 8000 -1 1]);
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([0 8000 -1 1]);
%%%%%%%%%%%%%%%%%%%%%%%%信号裁剪
llx=length(y1);
llx=fix(llx*0.75);
i=[1:llx];
y4(i)=y1(i);
file1='sample4.wav';
wavwrite(y4,Fs,bits,file1);
i=[llx+1:length(y1)];
y4(i)=y(i);
%用 db4 小波对读入的含有水印的声音文件进行 3 级小波分解
[c4,l4]=wavedec(y4',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(6);
subplot(2,1,1);
plot(mark4);