📄 xiaoboyuyinxinxinyingcang.m
字号:
%读取原始语音及绘制原始语音图
FILE='open-cc.wav';
[y,Fs,bits]=wavread(FILE);
%画图:
figure(1);
subplot(3,1,1);plot(y);
title('原始声音信号');
%对其进行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);
figure(2);
subplot(3,1,2);plot(x);
title('低频系数图形');
%找出低频系数中大于0.2倍最大值的序列
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i))
%初次进行分段后的程序
SIZ=wavread(FILE,'size')
SIZe=32768,SIZr=111875;
k=32768/(64*64)
for n=1:k
[c,l]=wavedec(y,3,'db4');
end
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);
figure(2);
subplot(3,1,2);plot(x);
s=max(abs(x))*0.2;
i=find(abs(x)>s); %插入位置
lx=length(x(i));
%产生随机高斯信号作为水印信号
mark= [ ];
mm=[ ];
mark=sin(mm);
randn('seed',10);
mark=randn(1,lx);
figure(2);
subplot(3,1,1);plot(mark);
title('水印信号');
%调整水印强度
ss=mark;
rr=ss*0.02;
R=30;
j=1:18086;
for i=1:18086;
xi=[];
xi=sum(x(j).^2) ;
end
a=sqrt(xi*10.^(-R)*10)./rr;
%水印嵌入
x(i)=x(i)+sqrt(xi*10.^(-R)*10);
%小波重构,生成加入了水印信号的声音信号
c1=[x',cd3',cd2',cd1'];
s1=waverec(c1,l,'db4');
figure(1);
subplot(3,1,2);
plot(s1);
title('含水印的声音信号');
whos('s1');
disp('');
%%水印恢复程序
FILE='open-cc.wav';
[y,Fs,bits]=wavread(FILE);
%用db4小波对读入的声音文件进行3级小波分解
for n=1:k
[c,l]=wavedec(y,3,'db4');
end
%提取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');
%用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);
a=sqrt(xi*(10.^(-R))*10)./rr;
mark1=z(i)./a;
mark1=mark1/0.02;
figure(2);
subplot(3,1,3);
plot(mark1);
title('提取出的水印信号');
diff=mark1-mark;
%攻击部分:
%压缩攻击:
FILE='sample2.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);
title('压缩攻击后的信号');
%产生随机信号作为噪声信号
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);
title('噪声信号图形');
%重采样
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]);
title('下采样图形');
fs1=Fs*2;
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]);
title('上采样图形');
%低通滤波
[b,a]=butter(10, Fs /10000);
y2=y1;
y5=filtfilt(b,a,y2);
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);
title('低通滤波信号');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -